currency-rate 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/README.md +13 -0
 - data/VERSION +1 -1
 - data/currency-rate.gemspec +22 -3
 - data/lib/adapter.rb +17 -9
 - data/lib/btc_adapter.rb +4 -6
 - data/lib/btc_adapters/average_rate_adapter.rb +4 -3
 - data/lib/btc_adapters/bitfinex_adapter.rb +30 -0
 - data/lib/btc_adapters/bitpay_adapter.rb +10 -3
 - data/lib/btc_adapters/bitstamp_adapter.rb +24 -5
 - data/lib/btc_adapters/btcchina_adapter.rb +13 -0
 - data/lib/btc_adapters/btce_adapter.rb +26 -5
 - data/lib/btc_adapters/coinbase_adapter.rb +2 -2
 - data/lib/btc_adapters/huobi_adapter.rb +30 -0
 - data/lib/btc_adapters/kraken_adapter.rb +14 -5
 - data/lib/btc_adapters/localbitcoins_adapter.rb +10 -3
 - data/lib/btc_adapters/okcoin_adapter.rb +24 -5
 - data/lib/currency_rate.rb +11 -10
 - data/lib/fiat_adapter.rb +4 -18
 - data/lib/fiat_adapters/fixer_adapter.rb +20 -5
 - data/lib/fiat_adapters/yahoo_adapter.rb +28 -6
 - data/spec/currency_rate_spec.rb +10 -6
 - data/spec/fixtures/vcr/exchange_rate_adapters/btc_adapters/average_rate_adapter.yml +423 -0
 - data/spec/fixtures/vcr/exchange_rate_adapters/btc_adapters/bitfinex_adapter.yml +125 -0
 - data/spec/fixtures/vcr/exchange_rate_adapters/btc_adapters/bitpay_adapter_yml.yml +272 -0
 - data/spec/fixtures/vcr/exchange_rate_adapters/btc_adapters/bitstamp_adapter.yml +153 -0
 - data/spec/fixtures/vcr/exchange_rate_adapters/btc_adapters/btcchina_adapter.yml +83 -0
 - data/spec/fixtures/vcr/exchange_rate_adapters/btc_adapters/btce_adapter.yml +223 -0
 - data/spec/fixtures/vcr/exchange_rate_adapters/btc_adapters/coinbase_adapter.yml +76 -0
 - data/spec/fixtures/vcr/exchange_rate_adapters/btc_adapters/huobi_adapter.yml +83 -0
 - data/spec/fixtures/vcr/exchange_rate_adapters/btc_adapters/kraken_adapter.yml +83 -0
 - data/spec/fixtures/vcr/exchange_rate_adapters/btc_adapters/localbitcoins_adapter.yml +128 -0
 - data/spec/fixtures/vcr/exchange_rate_adapters/btc_adapters/okcoin_adapter.yml +207 -0
 - data/spec/fixtures/vcr/exchange_rate_adapters/fiat_adapters/fixer_adapter.yml +81 -0
 - data/spec/fixtures/vcr/exchange_rate_adapters/fiat_adapters/yahoo_adapter.yml +50 -0
 - data/spec/lib/btc_adapter_spec.rb +16 -28
 - data/spec/lib/btc_adapters/average_rate_adapter_spec.rb +4 -4
 - data/spec/lib/btc_adapters/bitfinex_adapter_spec.rb +38 -0
 - data/spec/lib/btc_adapters/bitpay_adapter_spec.rb +8 -3
 - data/spec/lib/btc_adapters/bitstamp_adapter_spec.rb +8 -3
 - data/spec/lib/btc_adapters/btcchina_adapter_spec.rb +36 -0
 - data/spec/lib/btc_adapters/btce_adapter_spec.rb +10 -3
 - data/spec/lib/btc_adapters/coinbase_adapter_spec.rb +5 -3
 - data/spec/lib/btc_adapters/huobi_adapter_spec.rb +38 -0
 - data/spec/lib/btc_adapters/kraken_adapter_spec.rb +6 -3
 - data/spec/lib/btc_adapters/localbitcoins_adapter_spec.rb +4 -3
 - data/spec/lib/btc_adapters/okcoin_adapter_spec.rb +11 -3
 - data/spec/lib/fiat_adapters/fixer_adapter_spec.rb +5 -2
 - data/spec/lib/fiat_adapters/yahoo_adapter_spec.rb +5 -2
 - metadata +21 -2
 
| 
         @@ -1,13 +1,32 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module CurrencyRate
         
     | 
| 
       2 
2 
     | 
    
         
             
              class OkcoinAdapter < BtcAdapter
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
                FETCH_URL =  
     | 
| 
      
 4 
     | 
    
         
            +
                FETCH_URL = {
         
     | 
| 
      
 5 
     | 
    
         
            +
                  'ltc_usd' => 'https://www.okcoin.com/api/v1/ticker.do?symbol=ltc_usd',
         
     | 
| 
      
 6 
     | 
    
         
            +
                  'btc_usd' => 'https://www.okcoin.com/api/v1/ticker.do?symbol=btc_usd',
         
     | 
| 
      
 7 
     | 
    
         
            +
                  'ltc_cny' => 'https://www.okcoin.cn/api/ticker.do?symbol=ltc_cny',
         
     | 
| 
      
 8 
     | 
    
         
            +
                  'btc_cny' => 'https://www.okcoin.cn/api/ticker.do?symbol=btc_cny'
         
     | 
| 
      
 9 
     | 
    
         
            +
                }
         
     | 
| 
       5 
10 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
                def rate_for( 
     | 
| 
      
 11 
     | 
    
         
            +
                def rate_for(from,to)
         
     | 
| 
       7 
12 
     | 
    
         
             
                  super
         
     | 
| 
       8 
     | 
    
         
            -
                   
     | 
| 
       9 
     | 
    
         
            -
                   
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
                  rate = rate_to_f(currency_pair_rate(to,from))
         
     | 
| 
      
 14 
     | 
    
         
            +
                  invert_rate(from,to,rate)
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                def currency_pair_rate(currency1, currency2)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  rate = @rates["#{currency1.downcase}_#{currency2.downcase}"] || @rates["#{currency2.downcase}_#{currency1.downcase}"]
         
     | 
| 
      
 19 
     | 
    
         
            +
                  raise CurrencyNotSupported unless rate
         
     | 
| 
      
 20 
     | 
    
         
            +
                  rate['ticker']['last']
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                # Because OKCoin has LTC
         
     | 
| 
      
 24 
     | 
    
         
            +
                def invert_rate(from,to,rate)
         
     | 
| 
      
 25 
     | 
    
         
            +
                  if ['BTC', 'LTC'].include?(to)
         
     | 
| 
      
 26 
     | 
    
         
            +
                    1/rate.to_f
         
     | 
| 
      
 27 
     | 
    
         
            +
                  else
         
     | 
| 
      
 28 
     | 
    
         
            +
                    rate
         
     | 
| 
      
 29 
     | 
    
         
            +
                  end
         
     | 
| 
       11 
30 
     | 
    
         
             
                end
         
     | 
| 
       12 
31 
     | 
    
         | 
| 
       13 
32 
     | 
    
         
             
              end
         
     | 
    
        data/lib/currency_rate.rb
    CHANGED
    
    | 
         @@ -12,11 +12,8 @@ Dir["#{File.expand_path File.dirname(__FILE__)}/**/*.rb"].each { |f| require f } 
     | 
|
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
            module CurrencyRate
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
              def self.get(adapter_name,  
     | 
| 
       16 
     | 
    
         
            -
                adapter_class(adapter_name).rate_for(currency)
         
     | 
| 
       17 
     | 
    
         
            -
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
              def self.get(adapter_name, from, to, anchor_currency: nil)
         
     | 
| 
       18 
16 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
              def self.convert(adapter_name, amount:, from:, to:, anchor_currency: nil)
         
     | 
| 
       20 
17 
     | 
    
         
             
                a = adapter_class(adapter_name)
         
     | 
| 
       21 
18 
     | 
    
         | 
| 
       22 
19 
     | 
    
         
             
                # Setting default values for anchor currency depending on
         
     | 
| 
         @@ -26,16 +23,20 @@ module CurrencyRate 
     | 
|
| 
       26 
23 
     | 
    
         
             
                else
         
     | 
| 
       27 
24 
     | 
    
         
             
                  'USD' if anchor_currency.nil?
         
     | 
| 
       28 
25 
     | 
    
         
             
                end
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
       30 
27 
     | 
    
         
             
                # None of the currencies is anchor currency?
         
     | 
| 
       31 
28 
     | 
    
         
             
                # No problem, convert the amount given into the anchor currency first.
         
     | 
| 
       32 
     | 
    
         
            -
                 
     | 
| 
       33 
     | 
    
         
            -
                   
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
      
 29 
     | 
    
         
            +
                if [to, from].include?(anchor_currency)
         
     | 
| 
      
 30 
     | 
    
         
            +
                  a.rate_for(from, to)
         
     | 
| 
      
 31 
     | 
    
         
            +
                else
         
     | 
| 
      
 32 
     | 
    
         
            +
                  rate_from = get(adapter_name, anchor_currency, from)
         
     | 
| 
      
 33 
     | 
    
         
            +
                  rate_to   = get(adapter_name, anchor_currency, to  )
         
     | 
| 
      
 34 
     | 
    
         
            +
                  rate_to.to_f/rate_from.to_f
         
     | 
| 
       35 
35 
     | 
    
         
             
                end
         
     | 
| 
      
 36 
     | 
    
         
            +
              end
         
     | 
| 
       36 
37 
     | 
    
         | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
                result 
     | 
| 
      
 38 
     | 
    
         
            +
              def self.convert(adapter_name, amount:, from:, to:, anchor_currency: nil)
         
     | 
| 
      
 39 
     | 
    
         
            +
                result = amount*get(adapter_name, from, to, anchor_currency: nil)
         
     | 
| 
       39 
40 
     | 
    
         
             
                to == 'BTC' ? result : result.round(2)
         
     | 
| 
       40 
41 
     | 
    
         
             
              end
         
     | 
| 
       41 
42 
     | 
    
         | 
    
        data/lib/fiat_adapter.rb
    CHANGED
    
    | 
         @@ -2,27 +2,13 @@ module CurrencyRate 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
              class FiatAdapter < Adapter
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
                CROSS_RATE_CURRENCY = 'USD'
         
     | 
| 
       6 
     | 
    
         
            -
                SUPPORTED_CURRENCIES = %w(
         
     | 
| 
       7 
     | 
    
         
            -
                  AUD BGN BRL CAD CHF CNY CZK DKK GBP HKD HRK HUF IDR ILS INR JPY
         
     | 
| 
       8 
     | 
    
         
            -
                  KRW MXN MYR NOK NZD PHP PLN RON RUB SEK SGD THB TRY USD ZAR EUR
         
     | 
| 
       9 
     | 
    
         
            -
                )
         
     | 
| 
       10 
     | 
    
         
            -
                DECIMAL_PRECISION = 2
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                # Set half-even rounding mode
         
     | 
| 
       13 
     | 
    
         
            -
                # http://apidock.com/ruby/BigDecimal/mode/class
         
     | 
| 
       14 
5 
     | 
    
         
             
                BigDecimal.mode BigDecimal::ROUND_MODE, :banker
         
     | 
| 
      
 6 
     | 
    
         
            +
                DECIMAL_PRECISION = 2
         
     | 
| 
       15 
7 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
                def rate_for( 
     | 
| 
       17 
     | 
    
         
            -
                  return 1 if currency_code == CROSS_RATE_CURRENCY
         
     | 
| 
       18 
     | 
    
         
            -
                  raise CurrencyNotSupported unless SUPPORTED_CURRENCIES.include?(currency_code)
         
     | 
| 
      
 8 
     | 
    
         
            +
                def rate_for(from,to)
         
     | 
| 
       19 
9 
     | 
    
         
             
                  super
         
     | 
| 
       20 
     | 
    
         
            -
                   
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
                def convert_from_currency(amount_in_currency, currency: CROSS_RATE_CURRENCY)
         
     | 
| 
       24 
     | 
    
         
            -
                  return amount_in_currency if currency == CROSS_RATE_CURRENCY
         
     | 
| 
       25 
     | 
    
         
            -
                  amount_in_currency.to_f / rate_for(currency)
         
     | 
| 
      
 10 
     | 
    
         
            +
                  rate = currency_pair_rate(to,from)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  invert_rate(from,to,rate)
         
     | 
| 
       26 
12 
     | 
    
         
             
                end
         
     | 
| 
       27 
13 
     | 
    
         | 
| 
       28 
14 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1,11 +1,26 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module CurrencyRate
         
     | 
| 
       2 
2 
     | 
    
         
             
              class FixerAdapter < FiatAdapter
         
     | 
| 
       3 
     | 
    
         
            -
                FETCH_URL = "http://api.fixer.io/latest?base=#{CROSS_RATE_CURRENCY}"
         
     | 
| 
       4 
3 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
                 
     | 
| 
       6 
     | 
    
         
            -
                   
     | 
| 
       7 
     | 
    
         
            -
                   
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
      
 4 
     | 
    
         
            +
                FETCH_URL = {
         
     | 
| 
      
 5 
     | 
    
         
            +
                  "eur" => "http://api.fixer.io/latest?base=eur",
         
     | 
| 
      
 6 
     | 
    
         
            +
                  "usd" => "http://api.fixer.io/latest?base=usd"
         
     | 
| 
      
 7 
     | 
    
         
            +
                }
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                def currency_pair_rate(currency1, currency2)
         
     | 
| 
      
 10 
     | 
    
         
            +
                  rates = @rates[currency1.downcase] || @rates[currency2.downcase]
         
     | 
| 
      
 11 
     | 
    
         
            +
                  raise CurrencyNotSupported unless rates
         
     | 
| 
      
 12 
     | 
    
         
            +
                  rate = rates["rates"][currency1] || rates["rates"][currency2]
         
     | 
| 
      
 13 
     | 
    
         
            +
                  raise CurrencyNotSupported unless rate
         
     | 
| 
      
 14 
     | 
    
         
            +
                  rate.round(DECIMAL_PRECISION)
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                def invert_rate(from,to,rate)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  if (to == 'USD' || to == 'EUR')
         
     | 
| 
      
 19 
     | 
    
         
            +
                    (1/rate.to_f).round(DECIMAL_PRECISION)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  else
         
     | 
| 
      
 21 
     | 
    
         
            +
                    rate
         
     | 
| 
      
 22 
     | 
    
         
            +
                  end
         
     | 
| 
       9 
23 
     | 
    
         
             
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
       10 
25 
     | 
    
         
             
              end
         
     | 
| 
       11 
26 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,22 +1,44 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'uri'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            module CurrencyRate
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
       4 
5 
     | 
    
         
             
              class YahooAdapter < FiatAdapter
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                SUPPORTED_CURRENCIES = %w(
         
     | 
| 
      
 8 
     | 
    
         
            +
                  AUD BGN BRL CAD CHF CNY CZK DKK GBP HKD HRK HUF IDR ILS INR JPY
         
     | 
| 
      
 9 
     | 
    
         
            +
                  KRW MXN MYR NOK NZD PHP PLN RON RUB SEK SGD THB TRY USD ZAR EUR
         
     | 
| 
      
 10 
     | 
    
         
            +
                )
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                CROSS_RATE_CURRENCY = 'USD'
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
       5 
14 
     | 
    
         
             
                # Example URL (follow to un-shorten): http://goo.gl/62Aedt
         
     | 
| 
       6 
15 
     | 
    
         
             
                FETCH_URL = "http://query.yahooapis.com/v1/public/yql?" + URI.encode_www_form(
         
     | 
| 
       7 
16 
     | 
    
         
             
                  format: 'json',
         
     | 
| 
       8 
17 
     | 
    
         
             
                  env: "store://datatables.org/alltableswithkeys",
         
     | 
| 
       9 
18 
     | 
    
         
             
                  q: "SELECT * FROM yahoo.finance.xchange WHERE pair IN" +
         
     | 
| 
       10 
19 
     | 
    
         
             
                    # The following line is building array string in SQL: '("USDJPY", "USDRUB", ...)'
         
     | 
| 
       11 
     | 
    
         
            -
                    "(#{SUPPORTED_CURRENCIES.map{|x| '"' + CROSS_RATE_CURRENCY 
     | 
| 
      
 20 
     | 
    
         
            +
                    "(#{SUPPORTED_CURRENCIES.map{|x| '"' + CROSS_RATE_CURRENCY + x.upcase + '"'}.join(',')})"
         
     | 
| 
       12 
21 
     | 
    
         
             
                )
         
     | 
| 
       13 
22 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
                def  
     | 
| 
       15 
     | 
    
         
            -
                   
     | 
| 
      
 23 
     | 
    
         
            +
                def invert_rate(from,to,rate)
         
     | 
| 
      
 24 
     | 
    
         
            +
                  if to == 'USD'
         
     | 
| 
      
 25 
     | 
    
         
            +
                    (1/rate.to_f).round(DECIMAL_PRECISION)
         
     | 
| 
      
 26 
     | 
    
         
            +
                  else
         
     | 
| 
      
 27 
     | 
    
         
            +
                    rate
         
     | 
| 
      
 28 
     | 
    
         
            +
                  end
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                def currency_pair_rate(currency1, currency2)
         
     | 
| 
       16 
32 
     | 
    
         
             
                  rates = @rates.deep_get('query', 'results', 'rate')
         
     | 
| 
       17 
     | 
    
         
            -
                  rate =  
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                   
     | 
| 
      
 33 
     | 
    
         
            +
                  rate = if CROSS_RATE_CURRENCY == currency1.upcase
         
     | 
| 
      
 34 
     | 
    
         
            +
                    rates.find { |x| x['id'] == "#{CROSS_RATE_CURRENCY}#{currency2.upcase}" }
         
     | 
| 
      
 35 
     | 
    
         
            +
                  else
         
     | 
| 
      
 36 
     | 
    
         
            +
                    rates.find { |x| x['id'] == "#{CROSS_RATE_CURRENCY}#{currency1.upcase}" }
         
     | 
| 
      
 37 
     | 
    
         
            +
                  end
         
     | 
| 
      
 38 
     | 
    
         
            +
                  raise CurrencyNotSupported unless rate
         
     | 
| 
      
 39 
     | 
    
         
            +
                  rate = rate['Rate'].to_f
         
     | 
| 
      
 40 
     | 
    
         
            +
                  rate.round(DECIMAL_PRECISION)
         
     | 
| 
       20 
41 
     | 
    
         
             
                end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
       21 
43 
     | 
    
         
             
              end
         
     | 
| 
       22 
44 
     | 
    
         
             
            end
         
     | 
    
        data/spec/currency_rate_spec.rb
    CHANGED
    
    | 
         @@ -3,20 +3,24 @@ require 'spec_helper' 
     | 
|
| 
       3 
3 
     | 
    
         
             
            describe CurrencyRate do
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
              before :each do
         
     | 
| 
       6 
     | 
    
         
            -
                allow(CurrencyRate::BitstampAdapter.instance).to receive('rate_for').with('USD').and_return(550)
         
     | 
| 
       7 
     | 
    
         
            -
                allow(CurrencyRate::BitstampAdapter.instance).to receive('rate_for').with(' 
     | 
| 
       8 
     | 
    
         
            -
                allow(CurrencyRate:: 
     | 
| 
      
 6 
     | 
    
         
            +
                allow(CurrencyRate::BitstampAdapter.instance).to receive('rate_for').with('BTC', 'USD').and_return(550)
         
     | 
| 
      
 7 
     | 
    
         
            +
                allow(CurrencyRate::BitstampAdapter.instance).to receive('rate_for').with('USD', 'BTC').and_return(1.to_f/550.to_f)
         
     | 
| 
      
 8 
     | 
    
         
            +
                allow(CurrencyRate::BitstampAdapter.instance).to receive('rate_for').with('BTC', 'RUB').and_return(33100)
         
     | 
| 
      
 9 
     | 
    
         
            +
                allow(CurrencyRate::YahooAdapter.instance).to receive('rate_for').with('USD', 'RUB').and_return(60)
         
     | 
| 
      
 10 
     | 
    
         
            +
                allow(CurrencyRate::YahooAdapter.instance).to receive('rate_for').with('RUB', 'USD').and_return(1.to_f/60.to_f)
         
     | 
| 
       9 
11 
     | 
    
         
             
              end
         
     | 
| 
       10 
12 
     | 
    
         | 
| 
       11 
13 
     | 
    
         
             
              it "fetches currency rate from a specified exchange" do
         
     | 
| 
       12 
     | 
    
         
            -
                expect(CurrencyRate.get('Bitstamp', 'USD')).to eq(550)
         
     | 
| 
      
 14 
     | 
    
         
            +
                expect(CurrencyRate.get('Bitstamp', 'BTC', 'USD')).to eq(550)
         
     | 
| 
      
 15 
     | 
    
         
            +
                expect(CurrencyRate.get('Bitstamp', 'USD', 'BTC')).to eq(1.to_f/550.to_f)
         
     | 
| 
      
 16 
     | 
    
         
            +
                expect(CurrencyRate.get('Bitstamp', 'USD', 'RUB').round(2)).to eq(60.18)
         
     | 
| 
       13 
17 
     | 
    
         
             
              end
         
     | 
| 
       14 
18 
     | 
    
         | 
| 
       15 
19 
     | 
    
         
             
              it "converts one currency into another" do
         
     | 
| 
       16 
20 
     | 
    
         
             
                expect(CurrencyRate.convert('Bitstamp', amount: 5, from: 'BTC', to: 'USD')).to eq(2750)
         
     | 
| 
       17 
21 
     | 
    
         
             
                expect(CurrencyRate.convert('Bitstamp', amount: 2750, from: 'USD', to: 'BTC')).to eq(5)
         
     | 
| 
       18 
     | 
    
         
            -
                expect(CurrencyRate.convert('Yahoo', amount: 300, from: 'USD', to: 'RUB')).to eq( 
     | 
| 
       19 
     | 
    
         
            -
                expect(CurrencyRate.convert('Yahoo', amount: 19500, from: 'RUB', to: 'USD')).to eq( 
     | 
| 
      
 22 
     | 
    
         
            +
                expect(CurrencyRate.convert('Yahoo', amount: 300, from: 'USD', to: 'RUB')).to eq(18000)
         
     | 
| 
      
 23 
     | 
    
         
            +
                expect(CurrencyRate.convert('Yahoo', amount: 19500, from: 'RUB', to: 'USD')).to eq(325)
         
     | 
| 
       20 
24 
     | 
    
         
             
              end
         
     | 
| 
       21 
25 
     | 
    
         | 
| 
       22 
26 
     | 
    
         
             
              it "converts non-anchor currencies" do
         
     | 
| 
         @@ -0,0 +1,423 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            http_interactions:
         
     | 
| 
      
 3 
     | 
    
         
            +
            - request:
         
     | 
| 
      
 4 
     | 
    
         
            +
                method: get
         
     | 
| 
      
 5 
     | 
    
         
            +
                uri: https://www.bitstamp.net/api/v2/ticker/btcusd/
         
     | 
| 
      
 6 
     | 
    
         
            +
                body:
         
     | 
| 
      
 7 
     | 
    
         
            +
                  encoding: US-ASCII
         
     | 
| 
      
 8 
     | 
    
         
            +
                  string: ''
         
     | 
| 
      
 9 
     | 
    
         
            +
                headers:
         
     | 
| 
      
 10 
     | 
    
         
            +
                  Accept-Encoding:
         
     | 
| 
      
 11 
     | 
    
         
            +
                  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
         
     | 
| 
      
 12 
     | 
    
         
            +
                  Accept:
         
     | 
| 
      
 13 
     | 
    
         
            +
                  - "*/*"
         
     | 
| 
      
 14 
     | 
    
         
            +
                  User-Agent:
         
     | 
| 
      
 15 
     | 
    
         
            +
                  - Ruby
         
     | 
| 
      
 16 
     | 
    
         
            +
              response:
         
     | 
| 
      
 17 
     | 
    
         
            +
                status:
         
     | 
| 
      
 18 
     | 
    
         
            +
                  code: 200
         
     | 
| 
      
 19 
     | 
    
         
            +
                  message: OK
         
     | 
| 
      
 20 
     | 
    
         
            +
                headers:
         
     | 
| 
      
 21 
     | 
    
         
            +
                  Etag:
         
     | 
| 
      
 22 
     | 
    
         
            +
                  - '"6294c-c6-5358c763fe1e1"'
         
     | 
| 
      
 23 
     | 
    
         
            +
                  Last-Modified:
         
     | 
| 
      
 24 
     | 
    
         
            +
                  - Sat, 18 Jun 2016 12:17:59 GMT
         
     | 
| 
      
 25 
     | 
    
         
            +
                  Content-Type:
         
     | 
| 
      
 26 
     | 
    
         
            +
                  - application/json
         
     | 
| 
      
 27 
     | 
    
         
            +
                  Content-Length:
         
     | 
| 
      
 28 
     | 
    
         
            +
                  - '142'
         
     | 
| 
      
 29 
     | 
    
         
            +
                  Connection:
         
     | 
| 
      
 30 
     | 
    
         
            +
                  - keep-alive
         
     | 
| 
      
 31 
     | 
    
         
            +
                  Cache-Control:
         
     | 
| 
      
 32 
     | 
    
         
            +
                  - max-age=10, public
         
     | 
| 
      
 33 
     | 
    
         
            +
                  Expires:
         
     | 
| 
      
 34 
     | 
    
         
            +
                  - Sat, 18 Jun 2016 12:18:22 GMT
         
     | 
| 
      
 35 
     | 
    
         
            +
                  Date:
         
     | 
| 
      
 36 
     | 
    
         
            +
                  - Sat, 18 Jun 2016 12:18:12 GMT
         
     | 
| 
      
 37 
     | 
    
         
            +
                  Set-Cookie:
         
     | 
| 
      
 38 
     | 
    
         
            +
                  - incap_ses_220_99025=wQfzfpFG+Eq6yG7FOqINAwQ8ZVcAAAAA2IIq95EXi1XBrD3laKUZ+A==;
         
     | 
| 
      
 39 
     | 
    
         
            +
                    path=/; Domain=.bitstamp.net
         
     | 
| 
      
 40 
     | 
    
         
            +
                  - visid_incap_99025=wweiKoT2RWWFdobKK3cf4wQ8ZVcAAAAAQUIPAAAAAADnH3BD8BCXGU0F8hWrQTXg;
         
     | 
| 
      
 41 
     | 
    
         
            +
                    expires=Sun, 18 Jun 2017 07:26:36 GMT; path=/; Domain=.bitstamp.net
         
     | 
| 
      
 42 
     | 
    
         
            +
                  X-Iinfo:
         
     | 
| 
      
 43 
     | 
    
         
            +
                  - 9-56714738-0 0CNN RT(1466252292066 592) q(0 -1 -1 -1) r(0 -1)
         
     | 
| 
      
 44 
     | 
    
         
            +
                  X-Cdn:
         
     | 
| 
      
 45 
     | 
    
         
            +
                  - Incapsula
         
     | 
| 
      
 46 
     | 
    
         
            +
                body:
         
     | 
| 
      
 47 
     | 
    
         
            +
                  encoding: ASCII-8BIT
         
     | 
| 
      
 48 
     | 
    
         
            +
                  string: '{"high": "757.96000", "last": "751.97000", "timestamp": "1466252278",
         
     | 
| 
      
 49 
     | 
    
         
            +
                    "bid": "751.47000", "vwap": "745.36091", "volume": "6901.58275229", "low":
         
     | 
| 
      
 50 
     | 
    
         
            +
                    "723.02000", "ask": "751.97000", "open": "745.00000"}'
         
     | 
| 
      
 51 
     | 
    
         
            +
                http_version: 
         
     | 
| 
      
 52 
     | 
    
         
            +
              recorded_at: Sat, 18 Jun 2016 12:18:13 GMT
         
     | 
| 
      
 53 
     | 
    
         
            +
            - request:
         
     | 
| 
      
 54 
     | 
    
         
            +
                method: get
         
     | 
| 
      
 55 
     | 
    
         
            +
                uri: https://www.bitstamp.net/api/v2/ticker/btceur/
         
     | 
| 
      
 56 
     | 
    
         
            +
                body:
         
     | 
| 
      
 57 
     | 
    
         
            +
                  encoding: US-ASCII
         
     | 
| 
      
 58 
     | 
    
         
            +
                  string: ''
         
     | 
| 
      
 59 
     | 
    
         
            +
                headers:
         
     | 
| 
      
 60 
     | 
    
         
            +
                  Accept-Encoding:
         
     | 
| 
      
 61 
     | 
    
         
            +
                  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
         
     | 
| 
      
 62 
     | 
    
         
            +
                  Accept:
         
     | 
| 
      
 63 
     | 
    
         
            +
                  - "*/*"
         
     | 
| 
      
 64 
     | 
    
         
            +
                  User-Agent:
         
     | 
| 
      
 65 
     | 
    
         
            +
                  - Ruby
         
     | 
| 
      
 66 
     | 
    
         
            +
              response:
         
     | 
| 
      
 67 
     | 
    
         
            +
                status:
         
     | 
| 
      
 68 
     | 
    
         
            +
                  code: 200
         
     | 
| 
      
 69 
     | 
    
         
            +
                  message: OK
         
     | 
| 
      
 70 
     | 
    
         
            +
                headers:
         
     | 
| 
      
 71 
     | 
    
         
            +
                  Etag:
         
     | 
| 
      
 72 
     | 
    
         
            +
                  - '"62428-c6-5358c76731722"'
         
     | 
| 
      
 73 
     | 
    
         
            +
                  Last-Modified:
         
     | 
| 
      
 74 
     | 
    
         
            +
                  - Sat, 18 Jun 2016 12:18:02 GMT
         
     | 
| 
      
 75 
     | 
    
         
            +
                  Content-Type:
         
     | 
| 
      
 76 
     | 
    
         
            +
                  - application/json
         
     | 
| 
      
 77 
     | 
    
         
            +
                  Content-Length:
         
     | 
| 
      
 78 
     | 
    
         
            +
                  - '144'
         
     | 
| 
      
 79 
     | 
    
         
            +
                  Connection:
         
     | 
| 
      
 80 
     | 
    
         
            +
                  - keep-alive
         
     | 
| 
      
 81 
     | 
    
         
            +
                  Cache-Control:
         
     | 
| 
      
 82 
     | 
    
         
            +
                  - max-age=10, public
         
     | 
| 
      
 83 
     | 
    
         
            +
                  Expires:
         
     | 
| 
      
 84 
     | 
    
         
            +
                  - Sat, 18 Jun 2016 12:18:24 GMT
         
     | 
| 
      
 85 
     | 
    
         
            +
                  Date:
         
     | 
| 
      
 86 
     | 
    
         
            +
                  - Sat, 18 Jun 2016 12:18:14 GMT
         
     | 
| 
      
 87 
     | 
    
         
            +
                  Set-Cookie:
         
     | 
| 
      
 88 
     | 
    
         
            +
                  - incap_ses_220_99025=X4gkKY1GaAzZzG7FOqINAwY8ZVcAAAAA7sir6DswX0eW+RHQAZ3P2w==;
         
     | 
| 
      
 89 
     | 
    
         
            +
                    path=/; Domain=.bitstamp.net
         
     | 
| 
      
 90 
     | 
    
         
            +
                  - visid_incap_99025=1xi3KqDBRaC9elEeju7YyQY8ZVcAAAAAQUIPAAAAAAD5Hd7wQZNNpNjBCz4yMhvE;
         
     | 
| 
      
 91 
     | 
    
         
            +
                    expires=Sun, 18 Jun 2017 07:26:36 GMT; path=/; Domain=.bitstamp.net
         
     | 
| 
      
 92 
     | 
    
         
            +
                  X-Iinfo:
         
     | 
| 
      
 93 
     | 
    
         
            +
                  - 9-56715209-0 0CNN RT(1466252293557 573) q(0 -1 -1 -1) r(0 -1)
         
     | 
| 
      
 94 
     | 
    
         
            +
                  X-Cdn:
         
     | 
| 
      
 95 
     | 
    
         
            +
                  - Incapsula
         
     | 
| 
      
 96 
     | 
    
         
            +
                body:
         
     | 
| 
      
 97 
     | 
    
         
            +
                  encoding: ASCII-8BIT
         
     | 
| 
      
 98 
     | 
    
         
            +
                  string: '{"high": "679.08000", "last": "674.50000", "timestamp": "1466252282",
         
     | 
| 
      
 99 
     | 
    
         
            +
                    "bid": "670.67000", "vwap": "668.63961", "volume": "1356.06136004", "low":
         
     | 
| 
      
 100 
     | 
    
         
            +
                    "659.34000", "ask": "674.50000", "open": "672.15000"}'
         
     | 
| 
      
 101 
     | 
    
         
            +
                http_version: 
         
     | 
| 
      
 102 
     | 
    
         
            +
              recorded_at: Sat, 18 Jun 2016 12:18:15 GMT
         
     | 
| 
      
 103 
     | 
    
         
            +
            - request:
         
     | 
| 
      
 104 
     | 
    
         
            +
                method: get
         
     | 
| 
      
 105 
     | 
    
         
            +
                uri: https://www.bitstamp.net/api/v2/ticker/eurusd/
         
     | 
| 
      
 106 
     | 
    
         
            +
                body:
         
     | 
| 
      
 107 
     | 
    
         
            +
                  encoding: US-ASCII
         
     | 
| 
      
 108 
     | 
    
         
            +
                  string: ''
         
     | 
| 
      
 109 
     | 
    
         
            +
                headers:
         
     | 
| 
      
 110 
     | 
    
         
            +
                  Accept-Encoding:
         
     | 
| 
      
 111 
     | 
    
         
            +
                  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
         
     | 
| 
      
 112 
     | 
    
         
            +
                  Accept:
         
     | 
| 
      
 113 
     | 
    
         
            +
                  - "*/*"
         
     | 
| 
      
 114 
     | 
    
         
            +
                  User-Agent:
         
     | 
| 
      
 115 
     | 
    
         
            +
                  - Ruby
         
     | 
| 
      
 116 
     | 
    
         
            +
              response:
         
     | 
| 
      
 117 
     | 
    
         
            +
                status:
         
     | 
| 
      
 118 
     | 
    
         
            +
                  code: 200
         
     | 
| 
      
 119 
     | 
    
         
            +
                  message: OK
         
     | 
| 
      
 120 
     | 
    
         
            +
                headers:
         
     | 
| 
      
 121 
     | 
    
         
            +
                  Etag:
         
     | 
| 
      
 122 
     | 
    
         
            +
                  - '"62a85-b6-5358c76799efe"'
         
     | 
| 
      
 123 
     | 
    
         
            +
                  Last-Modified:
         
     | 
| 
      
 124 
     | 
    
         
            +
                  - Sat, 18 Jun 2016 12:18:02 GMT
         
     | 
| 
      
 125 
     | 
    
         
            +
                  Content-Type:
         
     | 
| 
      
 126 
     | 
    
         
            +
                  - application/json
         
     | 
| 
      
 127 
     | 
    
         
            +
                  Content-Length:
         
     | 
| 
      
 128 
     | 
    
         
            +
                  - '135'
         
     | 
| 
      
 129 
     | 
    
         
            +
                  Connection:
         
     | 
| 
      
 130 
     | 
    
         
            +
                  - keep-alive
         
     | 
| 
      
 131 
     | 
    
         
            +
                  Cache-Control:
         
     | 
| 
      
 132 
     | 
    
         
            +
                  - max-age=10, public
         
     | 
| 
      
 133 
     | 
    
         
            +
                  Expires:
         
     | 
| 
      
 134 
     | 
    
         
            +
                  - Sat, 18 Jun 2016 12:18:25 GMT
         
     | 
| 
      
 135 
     | 
    
         
            +
                  Date:
         
     | 
| 
      
 136 
     | 
    
         
            +
                  - Sat, 18 Jun 2016 12:18:15 GMT
         
     | 
| 
      
 137 
     | 
    
         
            +
                  Set-Cookie:
         
     | 
| 
      
 138 
     | 
    
         
            +
                  - incap_ses_220_99025=wERdE34q4y7x0G7FOqINAwc8ZVcAAAAAPxSkhEAtIJ28pp8s9oRuiQ==;
         
     | 
| 
      
 139 
     | 
    
         
            +
                    path=/; Domain=.bitstamp.net
         
     | 
| 
      
 140 
     | 
    
         
            +
                  - visid_incap_99025=3suN8VjZRqKmkj5hkjOFVwc8ZVcAAAAAQUIPAAAAAAD6yyMULIf23R9y57+RIwUr;
         
     | 
| 
      
 141 
     | 
    
         
            +
                    expires=Sun, 18 Jun 2017 07:26:36 GMT; path=/; Domain=.bitstamp.net
         
     | 
| 
      
 142 
     | 
    
         
            +
                  X-Iinfo:
         
     | 
| 
      
 143 
     | 
    
         
            +
                  - 9-56715632-0 0CNN RT(1466252295021 664) q(0 -1 -1 -1) r(0 -1)
         
     | 
| 
      
 144 
     | 
    
         
            +
                  X-Cdn:
         
     | 
| 
      
 145 
     | 
    
         
            +
                  - Incapsula
         
     | 
| 
      
 146 
     | 
    
         
            +
                body:
         
     | 
| 
      
 147 
     | 
    
         
            +
                  encoding: ASCII-8BIT
         
     | 
| 
      
 148 
     | 
    
         
            +
                  string: '{"high": "1.12350", "last": "1.11002", "timestamp": "1466252282", "bid":
         
     | 
| 
      
 149 
     | 
    
         
            +
                    "1.11003", "vwap": "1.11349", "volume": "55451.55469", "low": "1.09500", "ask":
         
     | 
| 
      
 150 
     | 
    
         
            +
                    "1.12496", "open": "1.11002"}'
         
     | 
| 
      
 151 
     | 
    
         
            +
                http_version: 
         
     | 
| 
      
 152 
     | 
    
         
            +
              recorded_at: Sat, 18 Jun 2016 12:18:16 GMT
         
     | 
| 
      
 153 
     | 
    
         
            +
            - request:
         
     | 
| 
      
 154 
     | 
    
         
            +
                method: get
         
     | 
| 
      
 155 
     | 
    
         
            +
                uri: https://bitpay.com/api/rates
         
     | 
| 
      
 156 
     | 
    
         
            +
                body:
         
     | 
| 
      
 157 
     | 
    
         
            +
                  encoding: US-ASCII
         
     | 
| 
      
 158 
     | 
    
         
            +
                  string: ''
         
     | 
| 
      
 159 
     | 
    
         
            +
                headers:
         
     | 
| 
      
 160 
     | 
    
         
            +
                  Accept-Encoding:
         
     | 
| 
      
 161 
     | 
    
         
            +
                  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
         
     | 
| 
      
 162 
     | 
    
         
            +
                  Accept:
         
     | 
| 
      
 163 
     | 
    
         
            +
                  - "*/*"
         
     | 
| 
      
 164 
     | 
    
         
            +
                  User-Agent:
         
     | 
| 
      
 165 
     | 
    
         
            +
                  - Ruby
         
     | 
| 
      
 166 
     | 
    
         
            +
              response:
         
     | 
| 
      
 167 
     | 
    
         
            +
                status:
         
     | 
| 
      
 168 
     | 
    
         
            +
                  code: 200
         
     | 
| 
      
 169 
     | 
    
         
            +
                  message: OK
         
     | 
| 
      
 170 
     | 
    
         
            +
                headers:
         
     | 
| 
      
 171 
     | 
    
         
            +
                  Date:
         
     | 
| 
      
 172 
     | 
    
         
            +
                  - Sat, 18 Jun 2016 13:51:33 GMT
         
     | 
| 
      
 173 
     | 
    
         
            +
                  Content-Type:
         
     | 
| 
      
 174 
     | 
    
         
            +
                  - application/json
         
     | 
| 
      
 175 
     | 
    
         
            +
                  Transfer-Encoding:
         
     | 
| 
      
 176 
     | 
    
         
            +
                  - chunked
         
     | 
| 
      
 177 
     | 
    
         
            +
                  Connection:
         
     | 
| 
      
 178 
     | 
    
         
            +
                  - keep-alive
         
     | 
| 
      
 179 
     | 
    
         
            +
                  Set-Cookie:
         
     | 
| 
      
 180 
     | 
    
         
            +
                  - __cfduid=dfebcb13e4bfa0f072ba22bf6c1c908ec1466257893; expires=Sun, 18-Jun-17
         
     | 
| 
      
 181 
     | 
    
         
            +
                    13:51:33 GMT; path=/; domain=.bitpay.com; HttpOnly
         
     | 
| 
      
 182 
     | 
    
         
            +
                  Strict-Transport-Security:
         
     | 
| 
      
 183 
     | 
    
         
            +
                  - max-age=31536000
         
     | 
| 
      
 184 
     | 
    
         
            +
                  X-Download-Options:
         
     | 
| 
      
 185 
     | 
    
         
            +
                  - noopen
         
     | 
| 
      
 186 
     | 
    
         
            +
                  X-Content-Type-Options:
         
     | 
| 
      
 187 
     | 
    
         
            +
                  - nosniff
         
     | 
| 
      
 188 
     | 
    
         
            +
                  Access-Control-Allow-Origin:
         
     | 
| 
      
 189 
     | 
    
         
            +
                  - "*"
         
     | 
| 
      
 190 
     | 
    
         
            +
                  Cache-Control:
         
     | 
| 
      
 191 
     | 
    
         
            +
                  - public, max-age=1800
         
     | 
| 
      
 192 
     | 
    
         
            +
                  Expires:
         
     | 
| 
      
 193 
     | 
    
         
            +
                  - Sat, 18 Jun 2016 14:21:33 GMT
         
     | 
| 
      
 194 
     | 
    
         
            +
                  Cf-Cache-Status:
         
     | 
| 
      
 195 
     | 
    
         
            +
                  - HIT
         
     | 
| 
      
 196 
     | 
    
         
            +
                  Vary:
         
     | 
| 
      
 197 
     | 
    
         
            +
                  - Accept-Encoding
         
     | 
| 
      
 198 
     | 
    
         
            +
                  Server:
         
     | 
| 
      
 199 
     | 
    
         
            +
                  - cloudflare-nginx
         
     | 
| 
      
 200 
     | 
    
         
            +
                  Cf-Ray:
         
     | 
| 
      
 201 
     | 
    
         
            +
                  - 2b4f37794bd91141-SIN
         
     | 
| 
      
 202 
     | 
    
         
            +
                body:
         
     | 
| 
      
 203 
     | 
    
         
            +
                  encoding: ASCII-8BIT
         
     | 
| 
      
 204 
     | 
    
         
            +
                  string: !binary |-
         
     | 
| 
      
 205 
     | 
    
         
            +
                    W3siY29kZSI6IkJUQyIsIm5hbWUiOiJCaXRjb2luIiwicmF0ZSI6MX0seyJj
         
     | 
| 
      
 206 
     | 
    
         
            +
                    b2RlIjoiVVNEIiwibmFtZSI6IlVTIERvbGxhciIsInJhdGUiOjc0OC4wMn0s
         
     | 
| 
      
 207 
     | 
    
         
            +
                    eyJjb2RlIjoiRVVSIiwibmFtZSI6IkV1cm96b25lIEV1cm8iLCJyYXRlIjo2
         
     | 
| 
      
 208 
     | 
    
         
            +
                    NjMuMzU5MDk2fSx7ImNvZGUiOiJHQlAiLCJuYW1lIjoiUG91bmQgU3Rlcmxp
         
     | 
| 
      
 209 
     | 
    
         
            +
                    bmciLCJyYXRlIjo1MjAuOTQ1MDY1fSx7ImNvZGUiOiJKUFkiLCJuYW1lIjoi
         
     | 
| 
      
 210 
     | 
    
         
            +
                    SmFwYW5lc2UgWWVuIiwicmF0ZSI6Nzc5NDguMDIyNTE2fSx7ImNvZGUiOiJD
         
     | 
| 
      
 211 
     | 
    
         
            +
                    QUQiLCJuYW1lIjoiQ2FuYWRpYW4gRG9sbGFyIiwicmF0ZSI6OTY0Ljc5ODQ0
         
     | 
| 
      
 212 
     | 
    
         
            +
                    fSx7ImNvZGUiOiJBVUQiLCJuYW1lIjoiQXVzdHJhbGlhbiBEb2xsYXIiLCJy
         
     | 
| 
      
 213 
     | 
    
         
            +
                    YXRlIjoxMDExLjU4NjM0M30seyJjb2RlIjoiQ05ZIiwibmFtZSI6IkNoaW5l
         
     | 
| 
      
 214 
     | 
    
         
            +
                    c2UgWXVhbiIsInJhdGUiOjQ5MjUuNTExMjMxfSx7ImNvZGUiOiJDSEYiLCJu
         
     | 
| 
      
 215 
     | 
    
         
            +
                    YW1lIjoiU3dpc3MgRnJhbmMiLCJyYXRlIjo3MTguODM2NzQ4fSx7ImNvZGUi
         
     | 
| 
      
 216 
     | 
    
         
            +
                    OiJTRUsiLCJuYW1lIjoiU3dlZGlzaCBLcm9uYSIsInJhdGUiOjYyMzEuNTYy
         
     | 
| 
      
 217 
     | 
    
         
            +
                    Mzc5fSx7ImNvZGUiOiJOWkQiLCJuYW1lIjoiTmV3IFplYWxhbmQgRG9sbGFy
         
     | 
| 
      
 218 
     | 
    
         
            +
                    IiwicmF0ZSI6MTA2MC40OTU2MzF9LHsiY29kZSI6IktSVyIsIm5hbWUiOiJT
         
     | 
| 
      
 219 
     | 
    
         
            +
                    b3V0aCBLb3JlYW4gV29uIiwicmF0ZSI6ODc2NTI0Ljg2MDE3MX0seyJjb2Rl
         
     | 
| 
      
 220 
     | 
    
         
            +
                    IjoiQUVEIiwibmFtZSI6IlVBRSBEaXJoYW0iLCJyYXRlIjoyNzQ3LjUzNzMw
         
     | 
| 
      
 221 
     | 
    
         
            +
                    Mn0seyJjb2RlIjoiQUZOIiwibmFtZSI6IkFmZ2hhbiBBZmdoYW5pIiwicmF0
         
     | 
| 
      
 222 
     | 
    
         
            +
                    ZSI6NTE5NjQuOTUwMTQ4fSx7ImNvZGUiOiJBTEwiLCJuYW1lIjoiQWxiYW5p
         
     | 
| 
      
 223 
     | 
    
         
            +
                    YW4gTGVrIiwicmF0ZSI6OTE2OTMuNjM4MDM2fSx7ImNvZGUiOiJBTUQiLCJu
         
     | 
| 
      
 224 
     | 
    
         
            +
                    YW1lIjoiQXJtZW5pYW4gRHJhbSIsInJhdGUiOjM1NzMxNC4xOTA2MDh9LHsi
         
     | 
| 
      
 225 
     | 
    
         
            +
                    Y29kZSI6IkFORyIsIm5hbWUiOiJOZXRoZXJsYW5kcyBBbnRpbGxlYW4gR3Vp
         
     | 
| 
      
 226 
     | 
    
         
            +
                    bGRlciIsInJhdGUiOjEzMzguMDc2ODc3fSx7ImNvZGUiOiJBT0EiLCJuYW1l
         
     | 
| 
      
 227 
     | 
    
         
            +
                    IjoiQW5nb2xhbiBLd2FuemEiLCJyYXRlIjoxMjQwMTYuMzUzNDQ1fSx7ImNv
         
     | 
| 
      
 228 
     | 
    
         
            +
                    ZGUiOiJBUlMiLCJuYW1lIjoiQXJnZW50aW5lIFBlc28iLCJyYXRlIjoxMDcx
         
     | 
| 
      
 229 
     | 
    
         
            +
                    NC4xMTQ4NjZ9LHsiY29kZSI6IkFXRyIsIm5hbWUiOiJBcnViYW4gRmxvcmlu
         
     | 
| 
      
 230 
     | 
    
         
            +
                    IiwicmF0ZSI6MTM0MS40NDg5NTF9LHsiY29kZSI6IkFaTiIsIm5hbWUiOiJB
         
     | 
| 
      
 231 
     | 
    
         
            +
                    emVyYmFpamFuaSBNYW5hdCIsInJhdGUiOjExMzkuMTQwOTU4fSx7ImNvZGUi
         
     | 
| 
      
 232 
     | 
    
         
            +
                    OiJCQU0iLCJuYW1lIjoiQm9zbmlhLUhlcnplZ292aW5hIENvbnZlcnRpYmxl
         
     | 
| 
      
 233 
     | 
    
         
            +
                    IE1hcmsiLCJyYXRlIjoxMjk3LjgzNzg4OX0seyJjb2RlIjoiQkJEIiwibmFt
         
     | 
| 
      
 234 
     | 
    
         
            +
                    ZSI6IkJhcmJhZGlhbiBEb2xsYXIiLCJyYXRlIjoxNDk2LjA0fSx7ImNvZGUi
         
     | 
| 
      
 235 
     | 
    
         
            +
                    OiJCRFQiLCJuYW1lIjoiQmFuZ2xhZGVzaGkgVGFrYSIsInJhdGUiOjU4Njk5
         
     | 
| 
      
 236 
     | 
    
         
            +
                    LjE3ODIyN30seyJjb2RlIjoiQkdOIiwibmFtZSI6IkJ1bGdhcmlhbiBMZXYi
         
     | 
| 
      
 237 
     | 
    
         
            +
                    LCJyYXRlIjoxMjk3Ljc3MjgxMX0seyJjb2RlIjoiQkhEIiwibmFtZSI6IkJh
         
     | 
| 
      
 238 
     | 
    
         
            +
                    aHJhaW5pIERpbmFyIiwicmF0ZSI6MjgxLjk4MDM1MX0seyJjb2RlIjoiQklG
         
     | 
| 
      
 239 
     | 
    
         
            +
                    IiwibmFtZSI6IkJ1cnVuZGlhbiBGcmFuYyIsInJhdGUiOjExNzU4MDMuMDQz
         
     | 
| 
      
 240 
     | 
    
         
            +
                    MTQ3fSx7ImNvZGUiOiJCTUQiLCJuYW1lIjoiQmVybXVkYW4gRG9sbGFyIiwi
         
     | 
| 
      
 241 
     | 
    
         
            +
                    cmF0ZSI6NzQ4LjAyfSx7ImNvZGUiOiJCTkQiLCJuYW1lIjoiQnJ1bmVpIERv
         
     | 
| 
      
 242 
     | 
    
         
            +
                    bGxhciIsInJhdGUiOjEwMDguOTI3ODh9LHsiY29kZSI6IkJPQiIsIm5hbWUi
         
     | 
| 
      
 243 
     | 
    
         
            +
                    OiJCb2xpdmlhbiBCb2xpdmlhbm8iLCJyYXRlIjo1MTUyLjUxMDYxNn0seyJj
         
     | 
| 
      
 244 
     | 
    
         
            +
                    b2RlIjoiQlJMIiwibmFtZSI6IkJyYXppbGlhbiBSZWFsIiwicmF0ZSI6MjU2
         
     | 
| 
      
 245 
     | 
    
         
            +
                    MS4xNjgxMTl9LHsiY29kZSI6IkJTRCIsIm5hbWUiOiJCYWhhbWlhbiBEb2xs
         
     | 
| 
      
 246 
     | 
    
         
            +
                    YXIiLCJyYXRlIjo3NDguMDJ9LHsiY29kZSI6IkJUTiIsIm5hbWUiOiJCaHV0
         
     | 
| 
      
 247 
     | 
    
         
            +
                    YW5lc2UgTmd1bHRydW0iLCJyYXRlIjo1MDIwMS4xOTIyOTR9LHsiY29kZSI6
         
     | 
| 
      
 248 
     | 
    
         
            +
                    IkJXUCIsIm5hbWUiOiJCb3Rzd2FuYW4gUHVsYSIsInJhdGUiOjgyMjEuNjI4
         
     | 
| 
      
 249 
     | 
    
         
            +
                    NDQ4fSx7ImNvZGUiOiJCWVIiLCJuYW1lIjoiQmVsYXJ1c2lhbiBSdWJsZSIs
         
     | 
| 
      
 250 
     | 
    
         
            +
                    InJhdGUiOjE0OTI2NDk1Ljk5MzV9LHsiY29kZSI6IkJaRCIsIm5hbWUiOiJC
         
     | 
| 
      
 251 
     | 
    
         
            +
                    ZWxpemUgRG9sbGFyIiwicmF0ZSI6MTQ5Ny4wNDA4NTF9LHsiY29kZSI6IkNE
         
     | 
| 
      
 252 
     | 
    
         
            +
                    RiIsIm5hbWUiOiJDb25nb2xlc2UgRnJhbmMiLCJyYXRlIjo3MDUzOTUuMjAy
         
     | 
| 
      
 253 
     | 
    
         
            +
                    MzN9LHsiY29kZSI6IkNMRiIsIm5hbWUiOiJDaGlsZWFuIFVuaXQgb2YgQWNj
         
     | 
| 
      
 254 
     | 
    
         
            +
                    b3VudCAoVUYpIiwicmF0ZSI6MTguNDAyNzg4fSx7ImNvZGUiOiJDTFAiLCJu
         
     | 
| 
      
 255 
     | 
    
         
            +
                    YW1lIjoiQ2hpbGVhbiBQZXNvIiwicmF0ZSI6NTEyNTg1LjE5NjExMn0seyJj
         
     | 
| 
      
 256 
     | 
    
         
            +
                    b2RlIjoiQ09QIiwibmFtZSI6IkNvbG9tYmlhbiBQZXNvIiwicmF0ZSI6MjI0
         
     | 
| 
      
 257 
     | 
    
         
            +
                    NzE4MS43Mjk4MTh9LHsiY29kZSI6IkNSQyIsIm5hbWUiOiJDb3N0YSBSaWNh
         
     | 
| 
      
 258 
     | 
    
         
            +
                    biBDb2zDs24iLCJyYXRlIjo0MDYxMTUuODQzNDY2fSx7ImNvZGUiOiJDVVAi
         
     | 
| 
      
 259 
     | 
    
         
            +
                    LCJuYW1lIjoiQ3ViYW4gUGVzbyIsInJhdGUiOjE4NDk3LjMyNTA1Mn0seyJj
         
     | 
| 
      
 260 
     | 
    
         
            +
                    b2RlIjoiQ1ZFIiwibmFtZSI6IkNhcGUgVmVyZGVhbiBFc2N1ZG8iLCJyYXRl
         
     | 
| 
      
 261 
     | 
    
         
            +
                    Ijo3Mzc2NS41NTYyMDR9LHsiY29kZSI6IkNaSyIsIm5hbWUiOiJDemVjaCBL
         
     | 
| 
      
 262 
     | 
    
         
            +
                    b3J1bmEiLCJyYXRlIjoxNzk2MC4wNjQ5MjN9LHsiY29kZSI6IkRKRiIsIm5h
         
     | 
| 
      
 263 
     | 
    
         
            +
                    bWUiOiJEamlib3V0aWFuIEZyYW5jIiwicmF0ZSI6MTMzMDA2LjY1MDk4NH0s
         
     | 
| 
      
 264 
     | 
    
         
            +
                    eyJjb2RlIjoiREtLIiwibmFtZSI6IkRhbmlzaCBLcm9uZSIsInJhdGUiOjQ5
         
     | 
| 
      
 265 
     | 
    
         
            +
                    MzQuMTkyMDAzfSx7ImNvZGUiOiJET1AiLCJuYW1lIjoiRG9taW5pY2FuIFBl
         
     | 
| 
      
 266 
     | 
    
         
            +
                    c28iLCJyYXRlIjozNDM1Ny43MTgwMzF9LHsiY29kZSI6IkRaRCIsIm5hbWUi
         
     | 
| 
      
 267 
     | 
    
         
            +
                    OiJBbGdlcmlhbiBEaW5hciIsInJhdGUiOjgyMjk4LjI4MzE3OH0seyJjb2Rl
         
     | 
| 
      
 268 
     | 
    
         
            +
                    IjoiRUVLIiwibmFtZSI6IkVzdG9uaWFuIEtyb29uIiwicmF0ZSI6MTAzODcu
         
     | 
| 
      
 269 
     | 
    
         
            +
                    MDA1NzJ9LHsiY29kZSI6IkVHUCIsIm5hbWUiOiJFZ3lwdGlhbiBQb3VuZCIs
         
     | 
| 
      
 270 
     | 
    
         
            +
                    InJhdGUiOjY2NDEuMzU5OX0seyJjb2RlIjoiRVRCIiwibmFtZSI6IkV0aGlv
         
     | 
| 
      
 271 
     | 
    
         
            +
                    cGlhbiBCaXJyIiwicmF0ZSI6MTYzMTcuODAxOTczfSx7ImNvZGUiOiJGSkQi
         
     | 
| 
      
 272 
     | 
    
         
            +
                    LCJuYW1lIjoiRmlqaWFuIERvbGxhciIsInJhdGUiOjE1NTYuMDE4NDg4fSx7
         
     | 
| 
      
 273 
     | 
    
         
            +
                    ImNvZGUiOiJGS1AiLCJuYW1lIjoiRmFsa2xhbmQgSXNsYW5kcyBQb3VuZCIs
         
     | 
| 
      
 274 
     | 
    
         
            +
                    InJhdGUiOjUyMC45NDUwNjV9LHsiY29kZSI6IkdFTCIsIm5hbWUiOiJHZW9y
         
     | 
| 
      
 275 
     | 
    
         
            +
                    Z2lhbiBMYXJpIiwicmF0ZSI6MTYzMC4xNDUwMjZ9LHsiY29kZSI6IkdIUyIs
         
     | 
| 
      
 276 
     | 
    
         
            +
                    Im5hbWUiOiJHaGFuYWlhbiBDZWRpIiwicmF0ZSI6MjkzMy44ODcwMzZ9LHsi
         
     | 
| 
      
 277 
     | 
    
         
            +
                    Y29kZSI6IkdJUCIsIm5hbWUiOiJHaWJyYWx0YXIgUG91bmQiLCJyYXRlIjo1
         
     | 
| 
      
 278 
     | 
    
         
            +
                    MjAuOTQ1MDY1fSx7ImNvZGUiOiJHTUQiLCJuYW1lIjoiR2FtYmlhbiBEYWxh
         
     | 
| 
      
 279 
     | 
    
         
            +
                    c2kiLCJyYXRlIjozMTgyOS44OTY2NDR9LHsiY29kZSI6IkdORiIsIm5hbWUi
         
     | 
| 
      
 280 
     | 
    
         
            +
                    OiJHdWluZWFuIEZyYW5jIiwicmF0ZSI6NTQ4Njg2MS40MTY5MDZ9LHsiY29k
         
     | 
| 
      
 281 
     | 
    
         
            +
                    ZSI6IkdUUSIsIm5hbWUiOiJHdWF0ZW1hbGFuIFF1ZXR6YWwiLCJyYXRlIjo1
         
     | 
| 
      
 282 
     | 
    
         
            +
                    NzE0LjU3NTA4OH0seyJjb2RlIjoiR1lEIiwibmFtZSI6Ikd1eWFuYWVzZSBE
         
     | 
| 
      
 283 
     | 
    
         
            +
                    b2xsYXIiLCJyYXRlIjoxNTM2NDIuMDQ3NTg2fSx7ImNvZGUiOiJIS0QiLCJu
         
     | 
| 
      
 284 
     | 
    
         
            +
                    YW1lIjoiSG9uZyBLb25nIERvbGxhciIsInJhdGUiOjU4MDUuMjEyNjcxfSx7
         
     | 
| 
      
 285 
     | 
    
         
            +
                    ImNvZGUiOiJITkwiLCJuYW1lIjoiSG9uZHVyYW4gTGVtcGlyYSIsInJhdGUi
         
     | 
| 
      
 286 
     | 
    
         
            +
                    OjE2OTg4LjAwNTQ1M30seyJjb2RlIjoiSFJLIiwibmFtZSI6IkNyb2F0aWFu
         
     | 
| 
      
 287 
     | 
    
         
            +
                    IEt1bmEiLCJyYXRlIjo0OTkwLjg5NDkxMX0seyJjb2RlIjoiSFRHIiwibmFt
         
     | 
| 
      
 288 
     | 
    
         
            +
                    ZSI6IkhhaXRpYW4gR291cmRlIiwicmF0ZSI6NDcwNzUuMjczNTY0fSx7ImNv
         
     | 
| 
      
 289 
     | 
    
         
            +
                    ZGUiOiJIVUYiLCJuYW1lIjoiSHVuZ2FyaWFuIEZvcmludCIsInJhdGUiOjIw
         
     | 
| 
      
 290 
     | 
    
         
            +
                    ODQ4MS41NTMzMn0seyJjb2RlIjoiSURSIiwibmFtZSI6IkluZG9uZXNpYW4g
         
     | 
| 
      
 291 
     | 
    
         
            +
                    UnVwaWFoIiwicmF0ZSI6OTk4MDM2OS41ODA3NTF9LHsiY29kZSI6IklMUyIs
         
     | 
| 
      
 292 
     | 
    
         
            +
                    Im5hbWUiOiJJc3JhZWxpIFNoZWtlbCIsInJhdGUiOjI4OTMuMjM1MTQxfSx7
         
     | 
| 
      
 293 
     | 
    
         
            +
                    ImNvZGUiOiJJTlIiLCJuYW1lIjoiSW5kaWFuIFJ1cGVlIiwicmF0ZSI6NTAx
         
     | 
| 
      
 294 
     | 
    
         
            +
                    OTIuNzU1Mzc2fSx7ImNvZGUiOiJJUUQiLCJuYW1lIjoiSXJhcWkgRGluYXIi
         
     | 
| 
      
 295 
     | 
    
         
            +
                    LCJyYXRlIjo4NzE2NDIuNTg1MjQ0fSx7ImNvZGUiOiJJUlIiLCJuYW1lIjoi
         
     | 
| 
      
 296 
     | 
    
         
            +
                    SXJhbmlhbiBSaWFsIiwicmF0ZSI6MjI2ODg5NDIuNjR9LHsiY29kZSI6IklT
         
     | 
| 
      
 297 
     | 
    
         
            +
                    SyIsIm5hbWUiOiJJY2VsYW5kaWMgS3LDs25hIiwicmF0ZSI6OTIxODguMjI4
         
     | 
| 
      
 298 
     | 
    
         
            +
                    ODZ9LHsiY29kZSI6IkpFUCIsIm5hbWUiOiJKZXJzZXkgUG91bmQiLCJyYXRl
         
     | 
| 
      
 299 
     | 
    
         
            +
                    Ijo1MjAuOTQ1MDY1fSx7ImNvZGUiOiJKTUQiLCJuYW1lIjoiSmFtYWljYW4g
         
     | 
| 
      
 300 
     | 
    
         
            +
                    RG9sbGFyIiwicmF0ZSI6OTM4NTAuNDcxNDI0fSx7ImNvZGUiOiJKT0QiLCJu
         
     | 
| 
      
 301 
     | 
    
         
            +
                    YW1lIjoiSm9yZGFuaWFuIERpbmFyIiwicmF0ZSI6NTI5LjY5OTg5MX0seyJj
         
     | 
| 
      
 302 
     | 
    
         
            +
                    b2RlIjoiS0VTIiwibmFtZSI6IktlbnlhbiBTaGlsbGluZyIsInJhdGUiOjc1
         
     | 
| 
      
 303 
     | 
    
         
            +
                    NjcxLjE5OTI0fSx7ImNvZGUiOiJLR1MiLCJuYW1lIjoiS3lyZ3lzdGFuaSBT
         
     | 
| 
      
 304 
     | 
    
         
            +
                    b20iLCJyYXRlIjo1MDcxNi4xNjY2NjN9LHsiY29kZSI6IktIUiIsIm5hbWUi
         
     | 
| 
      
 305 
     | 
    
         
            +
                    OiJDYW1ib2RpYW4gUmllbCIsInJhdGUiOjMwNTgwNDQuMTYyNDAxfSx7ImNv
         
     | 
| 
      
 306 
     | 
    
         
            +
                    ZGUiOiJLTUYiLCJuYW1lIjoiQ29tb3JpYW4gRnJhbmMiLCJyYXRlIjozMjQ2
         
     | 
| 
      
 307 
     | 
    
         
            +
                    NDAuNjY2NTM2fSx7ImNvZGUiOiJLUFciLCJuYW1lIjoiTm9ydGggS29yZWFu
         
     | 
| 
      
 308 
     | 
    
         
            +
                    IFdvbiIsInJhdGUiOjY3MzE1MC42NzgyfSx7ImNvZGUiOiJLV0QiLCJuYW1l
         
     | 
| 
      
 309 
     | 
    
         
            +
                    IjoiS3V3YWl0aSBEaW5hciIsInJhdGUiOjIyNS40OTEzNzd9LHsiY29kZSI6
         
     | 
| 
      
 310 
     | 
    
         
            +
                    IktZRCIsIm5hbWUiOiJDYXltYW4gSXNsYW5kcyBEb2xsYXIiLCJyYXRlIjo2
         
     | 
| 
      
 311 
     | 
    
         
            +
                    MTYuMjYyMjYxfSx7ImNvZGUiOiJLWlQiLCJuYW1lIjoiS2F6YWtoc3Rhbmkg
         
     | 
| 
      
 312 
     | 
    
         
            +
                    VGVuZ2UiLCJyYXRlIjoyNTMzMzAuOTU1NzM4fSx7ImNvZGUiOiJMQUsiLCJu
         
     | 
| 
      
 313 
     | 
    
         
            +
                    YW1lIjoiTGFvdGlhbiBLaXAiLCJyYXRlIjo2MDU2NDAzLjg0NDkwNn0seyJj
         
     | 
| 
      
 314 
     | 
    
         
            +
                    b2RlIjoiTEJQIiwibmFtZSI6IkxlYmFuZXNlIFBvdW5kIiwicmF0ZSI6MTEy
         
     | 
| 
      
 315 
     | 
    
         
            +
                    OTM4NS41MTc3ODJ9LHsiY29kZSI6IkxLUiIsIm5hbWUiOiJTcmkgTGFua2Fu
         
     | 
| 
      
 316 
     | 
    
         
            +
                    IFJ1cGVlIiwicmF0ZSI6MTA4NDQ1LjM5NjMzMn0seyJjb2RlIjoiTFJEIiwi
         
     | 
| 
      
 317 
     | 
    
         
            +
                    bmFtZSI6IkxpYmVyaWFuIERvbGxhciIsInJhdGUiOjY3Njg5LjA0MDQxOX0s
         
     | 
| 
      
 318 
     | 
    
         
            +
                    eyJjb2RlIjoiTFNMIiwibmFtZSI6Ikxlc290aG8gTG90aSIsInJhdGUiOjEx
         
     | 
| 
      
 319 
     | 
    
         
            +
                    MzU0LjUxNzIyOX0seyJjb2RlIjoiTFRMIiwibmFtZSI6IkxpdGh1YW5pYW4g
         
     | 
| 
      
 320 
     | 
    
         
            +
                    TGl0YXMiLCJyYXRlIjoyMjY3Ljc5OTkxMX0seyJjb2RlIjoiTFZMIiwibmFt
         
     | 
| 
      
 321 
     | 
    
         
            +
                    ZSI6IkxhdHZpYW4gTGF0cyIsInJhdGUiOjQ2NS43NjUxMjV9LHsiY29kZSI6
         
     | 
| 
      
 322 
     | 
    
         
            +
                    IkxZRCIsIm5hbWUiOiJMaWJ5YW4gRGluYXIiLCJyYXRlIjoxMDE5LjQzMDgy
         
     | 
| 
      
 323 
     | 
    
         
            +
                    OX0seyJjb2RlIjoiTUFEIiwibmFtZSI6Ik1vcm9jY2FuIERpcmhhbSIsInJh
         
     | 
| 
      
 324 
     | 
    
         
            +
                    dGUiOjcyNTQuMTk4NDczfSx7ImNvZGUiOiJNREwiLCJuYW1lIjoiTW9sZG92
         
     | 
| 
      
 325 
     | 
    
         
            +
                    YW4gTGV1IiwicmF0ZSI6MTQ3NzcuOTI4MDAxfSx7ImNvZGUiOiJNR0EiLCJu
         
     | 
| 
      
 326 
     | 
    
         
            +
                    YW1lIjoiTWFsYWdhc3kgQXJpYXJ5IiwicmF0ZSI6MjQ0NDU5Ny45MTYwMzN9
         
     | 
| 
      
 327 
     | 
    
         
            +
                    LHsiY29kZSI6Ik1LRCIsIm5hbWUiOiJNYWNlZG9uaWFuIERlbmFyIiwicmF0
         
     | 
| 
      
 328 
     | 
    
         
            +
                    ZSI6NDA4NDQuMzMwNTQ1fSx7ImNvZGUiOiJNTUsiLCJuYW1lIjoiTXlhbm1h
         
     | 
| 
      
 329 
     | 
    
         
            +
                    IEt5YXQiLCJyYXRlIjo4ODU5NDMuNjQwNzcxfSx7ImNvZGUiOiJNTlQiLCJu
         
     | 
| 
      
 330 
     | 
    
         
            +
                    YW1lIjoiTW9uZ29saWFuIFR1Z3JpayIsInJhdGUiOjE0NjI1NjYuMTA1fSx7
         
     | 
| 
      
 331 
     | 
    
         
            +
                    ImNvZGUiOiJNT1AiLCJuYW1lIjoiTWFjYW5lc2UgUGF0YWNhIiwicmF0ZSI6
         
     | 
| 
      
 332 
     | 
    
         
            +
                    NTk3Ni43NTE2MX0seyJjb2RlIjoiTVJPIiwibmFtZSI6Ik1hdXJpdGFuaWFu
         
     | 
| 
      
 333 
     | 
    
         
            +
                    IE91Z3VpeWEiLCJyYXRlIjoyNjU5MzEuNTc5Mjg4fSx7ImNvZGUiOiJNVVIi
         
     | 
| 
      
 334 
     | 
    
         
            +
                    LCJuYW1lIjoiTWF1cml0aWFuIFJ1cGVlIiwicmF0ZSI6MjY1MzkuNTcyMzE5
         
     | 
| 
      
 335 
     | 
    
         
            +
                    fSx7ImNvZGUiOiJNVlIiLCJuYW1lIjoiTWFsZGl2aWFuIFJ1Zml5YWEiLCJy
         
     | 
| 
      
 336 
     | 
    
         
            +
                    YXRlIjoxMTQ2Ny4xNDY2fSx7ImNvZGUiOiJNV0siLCJuYW1lIjoiTWFsYXdp
         
     | 
| 
      
 337 
     | 
    
         
            +
                    YW4gS3dhY2hhIiwicmF0ZSI6NTI3NzMzLjUzMDE1M30seyJjb2RlIjoiTVhO
         
     | 
| 
      
 338 
     | 
    
         
            +
                    IiwibmFtZSI6Ik1leGljYW4gUGVzbyIsInJhdGUiOjE0MDk3LjEzMjU1OX0s
         
     | 
| 
      
 339 
     | 
    
         
            +
                    eyJjb2RlIjoiTVlSIiwibmFtZSI6Ik1hbGF5c2lhbiBSaW5nZ2l0IiwicmF0
         
     | 
| 
      
 340 
     | 
    
         
            +
                    ZSI6MzA2MC40NTU3Nn0seyJjb2RlIjoiTVpOIiwibmFtZSI6Ik1vemFtYmlj
         
     | 
| 
      
 341 
     | 
    
         
            +
                    YW4gTWV0aWNhbCIsInJhdGUiOjQ1NjQ5Ljc5MTI5OH0seyJjb2RlIjoiTkFE
         
     | 
| 
      
 342 
     | 
    
         
            +
                    IiwibmFtZSI6Ik5hbWliaWFuIERvbGxhciIsInJhdGUiOjExMzUxLjY3NDc1
         
     | 
| 
      
 343 
     | 
    
         
            +
                    M30seyJjb2RlIjoiTkdOIiwibmFtZSI6Ik5pZ2VyaWFuIE5haXJhIiwicmF0
         
     | 
| 
      
 344 
     | 
    
         
            +
                    ZSI6MTQ4ODUyLjMxNDcwMn0seyJjb2RlIjoiTklPIiwibmFtZSI6Ik5pY2Fy
         
     | 
| 
      
 345 
     | 
    
         
            +
                    YWd1YW4gQ8OzcmRvYmEiLCJyYXRlIjoyMTM2Ni4yNzEyMzV9LHsiY29kZSI6
         
     | 
| 
      
 346 
     | 
    
         
            +
                    Ik5PSyIsIm5hbWUiOiJOb3J3ZWdpYW4gS3JvbmUiLCJyYXRlIjo2MjU0LjY0
         
     | 
| 
      
 347 
     | 
    
         
            +
                    NzAyNH0seyJjb2RlIjoiTlBSIiwibmFtZSI6Ik5lcGFsZXNlIFJ1cGVlIiwi
         
     | 
| 
      
 348 
     | 
    
         
            +
                    cmF0ZSI6ODAyODAuNzk3Njg4fSx7ImNvZGUiOiJPTVIiLCJuYW1lIjoiT21h
         
     | 
| 
      
 349 
     | 
    
         
            +
                    bmkgUmlhbCIsInJhdGUiOjI4OC4wNTUwMjJ9LHsiY29kZSI6IlBBQiIsIm5h
         
     | 
| 
      
 350 
     | 
    
         
            +
                    bWUiOiJQYW5hbWFuaWFuIEJhbGJvYSIsInJhdGUiOjc0OC4wMn0seyJjb2Rl
         
     | 
| 
      
 351 
     | 
    
         
            +
                    IjoiUEVOIiwibmFtZSI6IlBlcnV2aWFuIE51ZXZvIFNvbCIsInJhdGUiOjI0
         
     | 
| 
      
 352 
     | 
    
         
            +
                    NzkuMTgzNjMxfSx7ImNvZGUiOiJQR0siLCJuYW1lIjoiUGFwdWEgTmV3IEd1
         
     | 
| 
      
 353 
     | 
    
         
            +
                    aW5lYW4gS2luYSIsInJhdGUiOjIzNjMuMTI2MDg0fSx7ImNvZGUiOiJQSFAi
         
     | 
| 
      
 354 
     | 
    
         
            +
                    LCJuYW1lIjoiUGhpbGlwcGluZSBQZXNvIiwicmF0ZSI6MzQ3MzUuNjYyNjE2
         
     | 
| 
      
 355 
     | 
    
         
            +
                    fSx7ImNvZGUiOiJQS1IiLCJuYW1lIjoiUGFraXN0YW5pIFJ1cGVlIiwicmF0
         
     | 
| 
      
 356 
     | 
    
         
            +
                    ZSI6NzgzMDAuODY0Mjk4fSx7ImNvZGUiOiJQTE4iLCJuYW1lIjoiUG9saXNo
         
     | 
| 
      
 357 
     | 
    
         
            +
                    IFpsb3R5IiwicmF0ZSI6MjkzMC42NDM2MjF9LHsiY29kZSI6IlBZRyIsIm5h
         
     | 
| 
      
 358 
     | 
    
         
            +
                    bWUiOiJQYXJhZ3VheWFuIEd1YXJhbmkiLCJyYXRlIjo0MjMyODQwLjcyMTQ0
         
     | 
| 
      
 359 
     | 
    
         
            +
                    OX0seyJjb2RlIjoiUUFSIiwibmFtZSI6IlFhdGFyaSBSaWFsIiwicmF0ZSI6
         
     | 
| 
      
 360 
     | 
    
         
            +
                    MjcyMi45OTg1MDZ9LHsiY29kZSI6IlJPTiIsIm5hbWUiOiJSb21hbmlhbiBM
         
     | 
| 
      
 361 
     | 
    
         
            +
                    ZXUiLCJyYXRlIjozMDEyLjQzOTYwOH0seyJjb2RlIjoiUlNEIiwibmFtZSI6
         
     | 
| 
      
 362 
     | 
    
         
            +
                    IlNlcmJpYW4gRGluYXIiLCJyYXRlIjo4MTgwMC4xNDU5OTF9LHsiY29kZSI6
         
     | 
| 
      
 363 
     | 
    
         
            +
                    IlJVQiIsIm5hbWUiOiJSdXNzaWFuIFJ1YmxlIiwicmF0ZSI6NDg0OTcuODk5
         
     | 
| 
      
 364 
     | 
    
         
            +
                    ODg5fSx7ImNvZGUiOiJSV0YiLCJuYW1lIjoiUndhbmRhbiBGcmFuYyIsInJh
         
     | 
| 
      
 365 
     | 
    
         
            +
                    dGUiOjU2NDc4OC43NjAxNTJ9LHsiY29kZSI6IlNBUiIsIm5hbWUiOiJTYXVk
         
     | 
| 
      
 366 
     | 
    
         
            +
                    aSBSaXlhbCIsInJhdGUiOjI4MDUuMzY4MjI0fSx7ImNvZGUiOiJTQkQiLCJu
         
     | 
| 
      
 367 
     | 
    
         
            +
                    YW1lIjoiU29sb21vbiBJc2xhbmRzIERvbGxhciIsInJhdGUiOjU4MzQuNjUz
         
     | 
| 
      
 368 
     | 
    
         
            +
                    MjQzfSx7ImNvZGUiOiJTQ1IiLCJuYW1lIjoiU2V5Y2hlbGxvaXMgUnVwZWUi
         
     | 
| 
      
 369 
     | 
    
         
            +
                    LCJyYXRlIjo5ODI0Ljg4MzY1fSx7ImNvZGUiOiJTREciLCJuYW1lIjoiU3Vk
         
     | 
| 
      
 370 
     | 
    
         
            +
                    YW5lc2UgUG91bmQiLCJyYXRlIjo0NTQ5LjUwMTc3M30seyJjb2RlIjoiU0dE
         
     | 
| 
      
 371 
     | 
    
         
            +
                    IiwibmFtZSI6IlNpbmdhcG9yZSBEb2xsYXIiLCJyYXRlIjoxMDA5LjMyNTgy
         
     | 
| 
      
 372 
     | 
    
         
            +
                    N30seyJjb2RlIjoiU0hQIiwibmFtZSI6IlNhaW50IEhlbGVuYSBQb3VuZCIs
         
     | 
| 
      
 373 
     | 
    
         
            +
                    InJhdGUiOjUyMC45NDUwNjV9LHsiY29kZSI6IlNMTCIsIm5hbWUiOiJTaWVy
         
     | 
| 
      
 374 
     | 
    
         
            +
                    cmEgTGVvbmVhbiBMZW9uZSIsInJhdGUiOjI5NTA5MzguOX0seyJjb2RlIjoi
         
     | 
| 
      
 375 
     | 
    
         
            +
                    U09TIiwibmFtZSI6IlNvbWFsaSBTaGlsbGluZyIsInJhdGUiOjQzODE0MS4y
         
     | 
| 
      
 376 
     | 
    
         
            +
                    MTY0Mzd9LHsiY29kZSI6IlNSRCIsIm5hbWUiOiJTdXJpbmFtZXNlIERvbGxh
         
     | 
| 
      
 377 
     | 
    
         
            +
                    ciIsInJhdGUiOjUyMzIuNzczOTF9LHsiY29kZSI6IlNURCIsIm5hbWUiOiJT
         
     | 
| 
      
 378 
     | 
    
         
            +
                    w6NvIFRvbcOpIGFuZCBQcsOtbmNpcGUgRG9icmEiLCJyYXRlIjoxNjI4MjYx
         
     | 
| 
      
 379 
     | 
    
         
            +
                    OC44NTI1fSx7ImNvZGUiOiJTVkMiLCJuYW1lIjoiU2FsdmFkb3JhbiBDb2zD
         
     | 
| 
      
 380 
     | 
    
         
            +
                    s24iLCJyYXRlIjo2NTM4Ljk3NjE1OH0seyJjb2RlIjoiU1lQIiwibmFtZSI6
         
     | 
| 
      
 381 
     | 
    
         
            +
                    IlN5cmlhbiBQb3VuZCIsInJhdGUiOjE2Mzc5My4xODk4ODR9LHsiY29kZSI6
         
     | 
| 
      
 382 
     | 
    
         
            +
                    IlNaTCIsIm5hbWUiOiJTd2F6aSBMaWxhbmdlbmkiLCJyYXRlIjoxMTM1OS44
         
     | 
| 
      
 383 
     | 
    
         
            +
                    MzU2NTF9LHsiY29kZSI6IlRIQiIsIm5hbWUiOiJUaGFpIEJhaHQiLCJyYXRl
         
     | 
| 
      
 384 
     | 
    
         
            +
                    IjoyNjM2OC42MjUwNjV9LHsiY29kZSI6IlRKUyIsIm5hbWUiOiJUYWppa2lz
         
     | 
| 
      
 385 
     | 
    
         
            +
                    dGFuaSBTb21vbmkiLCJyYXRlIjo1ODg1Ljc5NTM3fSx7ImNvZGUiOiJUTVQi
         
     | 
| 
      
 386 
     | 
    
         
            +
                    LCJuYW1lIjoiVHVya21lbmlzdGFuaSBNYW5hdCIsInJhdGUiOjI2MjEuNzk3
         
     | 
| 
      
 387 
     | 
    
         
            +
                    Mzg0fSx7ImNvZGUiOiJUTkQiLCJuYW1lIjoiVHVuaXNpYW4gRGluYXIiLCJy
         
     | 
| 
      
 388 
     | 
    
         
            +
                    YXRlIjoxNjE1LjE2OTY2NX0seyJjb2RlIjoiVE9QIiwibmFtZSI6IlRvbmdh
         
     | 
| 
      
 389 
     | 
    
         
            +
                    biBQYcq7YW5nYSIsInJhdGUiOjE2NzYuNTM0OTgyfSx7ImNvZGUiOiJUUlki
         
     | 
| 
      
 390 
     | 
    
         
            +
                    LCJuYW1lIjoiVHVya2lzaCBMaXJhIiwicmF0ZSI6MjE4OS45Mjk1MzN9LHsi
         
     | 
| 
      
 391 
     | 
    
         
            +
                    Y29kZSI6IlRURCIsIm5hbWUiOiJUcmluaWRhZCBhbmQgVG9iYWdvIERvbGxh
         
     | 
| 
      
 392 
     | 
    
         
            +
                    ciIsInJhdGUiOjQ5NjIuMDQ2NzcyfSx7ImNvZGUiOiJUV0QiLCJuYW1lIjoi
         
     | 
| 
      
 393 
     | 
    
         
            +
                    TmV3IFRhaXdhbiBEb2xsYXIiLCJyYXRlIjoyNDIxMy4zMDI2Nzd9LHsiY29k
         
     | 
| 
      
 394 
     | 
    
         
            +
                    ZSI6IlRaUyIsIm5hbWUiOiJUYW56YW5pYW4gU2hpbGxpbmciLCJyYXRlIjox
         
     | 
| 
      
 395 
     | 
    
         
            +
                    NjM4MzY1Ljc0MDcxNX0seyJjb2RlIjoiVUFIIiwibmFtZSI6IlVrcmFpbmlh
         
     | 
| 
      
 396 
     | 
    
         
            +
                    biBIcnl2bmlhIiwicmF0ZSI6MTg2MDguOTc5NzUzfSx7ImNvZGUiOiJVR1gi
         
     | 
| 
      
 397 
     | 
    
         
            +
                    LCJuYW1lIjoiVWdhbmRhbiBTaGlsbGluZyIsInJhdGUiOjI1MDQ2OTMuODMw
         
     | 
| 
      
 398 
     | 
    
         
            +
                    ODY1fSx7ImNvZGUiOiJVWVUiLCJuYW1lIjoiVXJ1Z3VheWFuIFBlc28iLCJy
         
     | 
| 
      
 399 
     | 
    
         
            +
                    YXRlIjoyMjg4Ny43MzY0MzV9LHsiY29kZSI6IlVaUyIsIm5hbWUiOiJVemJl
         
     | 
| 
      
 400 
     | 
    
         
            +
                    a2lzdGFuIFNvbSIsInJhdGUiOjIyMDMyODkuMTY2MTZ9LHsiY29kZSI6IlZF
         
     | 
| 
      
 401 
     | 
    
         
            +
                    RiIsIm5hbWUiOiJWZW5lenVlbGFuIEJvbMOtdmFyIEZ1ZXJ0ZSIsInJhdGUi
         
     | 
| 
      
 402 
     | 
    
         
            +
                    Ojc0NTkuOTk0NDg0fSx7ImNvZGUiOiJWTkQiLCJuYW1lIjoiVmlldG5hbWVz
         
     | 
| 
      
 403 
     | 
    
         
            +
                    ZSBEb25nIiwicmF0ZSI6MTY2ODI2NTMuNzE1MjQ5fSx7ImNvZGUiOiJWVVYi
         
     | 
| 
      
 404 
     | 
    
         
            +
                    LCJuYW1lIjoiVmFudWF0dSBWYXR1IiwicmF0ZSI6ODM3NjMuMjgwMzQ4fSx7
         
     | 
| 
      
 405 
     | 
    
         
            +
                    ImNvZGUiOiJXU1QiLCJuYW1lIjoiU2Ftb2FuIFRhbGEiLCJyYXRlIjoxODk1
         
     | 
| 
      
 406 
     | 
    
         
            +
                    Ljc1NDk1OX0seyJjb2RlIjoiWEFGIiwibmFtZSI6IkNGQSBGcmFuYyBCRUFD
         
     | 
| 
      
 407 
     | 
    
         
            +
                    IiwicmF0ZSI6NDM2NDkzLjg0MTUxOH0seyJjb2RlIjoiWEFHIiwibmFtZSI6
         
     | 
| 
      
 408 
     | 
    
         
            +
                    IlNpbHZlciAodHJveSBvdW5jZSkiLCJyYXRlIjo0Mi44MTcwMzl9LHsiY29k
         
     | 
| 
      
 409 
     | 
    
         
            +
                    ZSI6IlhBVSIsIm5hbWUiOiJHb2xkICh0cm95IG91bmNlKSIsInJhdGUiOjAu
         
     | 
| 
      
 410 
     | 
    
         
            +
                    NTc1OTc1fSx7ImNvZGUiOiJYQ0QiLCJuYW1lIjoiRWFzdCBDYXJpYmJlYW4g
         
     | 
| 
      
 411 
     | 
    
         
            +
                    RG9sbGFyIiwicmF0ZSI6MjAyMS45MTMwMn0seyJjb2RlIjoiWE9GIiwibmFt
         
     | 
| 
      
 412 
     | 
    
         
            +
                    ZSI6IkNGQSBGcmFuYyBCQ0VBTyIsInJhdGUiOjQzODYwNC4xNTU1NDJ9LHsi
         
     | 
| 
      
 413 
     | 
    
         
            +
                    Y29kZSI6IlhQRiIsIm5hbWUiOiJDRlAgRnJhbmMiLCJyYXRlIjo3OTMyNC41
         
     | 
| 
      
 414 
     | 
    
         
            +
                    NzUyOTd9LHsiY29kZSI6IllFUiIsIm5hbWUiOiJZZW1lbmkgUmlhbCIsInJh
         
     | 
| 
      
 415 
     | 
    
         
            +
                    dGUiOjE4NjkyOC43MDI3MDh9LHsiY29kZSI6IlpBUiIsIm5hbWUiOiJTb3V0
         
     | 
| 
      
 416 
     | 
    
         
            +
                    aCBBZnJpY2FuIFJhbmQiLCJyYXRlIjoxMTM0Mi41MTE1MDh9LHsiY29kZSI6
         
     | 
| 
      
 417 
     | 
    
         
            +
                    IlpNVyIsIm5hbWUiOiJaYW1iaWFuIEt3YWNoYSIsInJhdGUiOjgxNzIuNjE0
         
     | 
| 
      
 418 
     | 
    
         
            +
                    NDM3fSx7ImNvZGUiOiJaV0wiLCJuYW1lIjoiWmltYmFid2VhbiBEb2xsYXIi
         
     | 
| 
      
 419 
     | 
    
         
            +
                    LCJyYXRlIjoyNDExNTIuMTA4NTAxfV0=
         
     | 
| 
      
 420 
     | 
    
         
            +
                http_version: 
         
     | 
| 
      
 421 
     | 
    
         
            +
              recorded_at: Sat, 18 Jun 2016 13:51:33 GMT
         
     | 
| 
      
 422 
     | 
    
         
            +
            recorded_with: VCR 3.0.3
         
     | 
| 
      
 423 
     | 
    
         
            +
             
     |