diff --git a/readme_compliance.md b/readme_compliance.md index aead1f5..41f83ad 100644 --- a/readme_compliance.md +++ b/readme_compliance.md @@ -177,11 +177,14 @@ The customer information that is exchanged between FIs is flexible but the typic Respond with one of the following status codes: * `200 OK` when sender/receiver is allowed and the payment should be processed, * `202 Accepted` when your callback needs some time for processing, +* `400 Bad Request` when sender info is invalid. * `403 Forbidden` when sender/receiver is denied. Any other status code will be considered an error. -When `202 Accepted` is returned the response body should contain JSON object with a `pending` field which represents the estimated number of seconds needed for processing. For example, the following response means to try the payment again in an hour. +When `202 Accepted` is returned the response body should contain JSON object with `pending` field which represents the estimated number of seconds needed for processing. For example, the following response means to try the payment again in an hour. + +When `400 Bad Request` is returned the response body should contain JSON object with `error` field with error string. ```json {"pending": 3600} @@ -212,11 +215,14 @@ The customer information (`sender`) that is exchanged between FIs is flexible bu Respond with one of the following status codes: * `200 OK` when your customer has allowed sharing his/her compliance information with the requesting FI. * `202 Accepted` when your callback needs some time for processing, ie to ask the customer. +* `400 Bad Request` when request data is invalid. * `403 Forbidden` when your customer has denied sharing his/her compliance information with the requesting FI. Any other status code will be considered an error. -When `202 Accepted` is returned the response body should contain JSON object with `pending` field which represents estimated number of seconds needed for processing. For example, the following response means to try the payment again in an hour: +When `202 Accepted` is returned the response body should contain JSON object with `pending` field which represents estimated number of seconds needed for processing. For example, the following response means to try the payment again in an hour. + +When `400 Bad Request` is returned the response body should contain JSON object with `error` field with error string. ```json {"pending": 3600} @@ -244,7 +250,7 @@ This callback should return `200 OK` status code and JSON object with the custom } ``` ### `callbacks.tx_status` -This callback should return the status of a transaction as explained in [`SEP-0001`](https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0001.md). +This callback should return the status of a transaction as explained in [`SEP-0004`](https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0004.md). #### Request diff --git a/src/github.com/stellar/gateway/bridge/app.go b/src/github.com/stellar/gateway/bridge/app.go index b1b051d..cd26609 100644 --- a/src/github.com/stellar/gateway/bridge/app.go +++ b/src/github.com/stellar/gateway/bridge/app.go @@ -4,7 +4,7 @@ import ( "errors" "flag" "fmt" - log "github.com/Sirupsen/logrus" + log "github.com/sirupsen/logrus" "net/http" "net/http/httputil" "net/url" diff --git a/src/github.com/stellar/gateway/bridge/gui/bindata.go b/src/github.com/stellar/gateway/bridge/gui/bindata.go index 75a3a52..87cfef4 100644 --- a/src/github.com/stellar/gateway/bridge/gui/bindata.go +++ b/src/github.com/stellar/gateway/bridge/gui/bindata.go @@ -224,10 +224,10 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ - "app.js": appJs, - "app.js.map": appJsMap, - "index.html": indexHtml, - "vendor.js": vendorJs, + "app.js": appJs, + "app.js.map": appJsMap, + "index.html": indexHtml, + "vendor.js": vendorJs, "vendor.js.map": vendorJsMap, } @@ -270,11 +270,12 @@ type bintree struct { Func func() (*asset, error) Children map[string]*bintree } + var _bintree = &bintree{nil, map[string]*bintree{ - "app.js": &bintree{appJs, map[string]*bintree{}}, - "app.js.map": &bintree{appJsMap, map[string]*bintree{}}, - "index.html": &bintree{indexHtml, map[string]*bintree{}}, - "vendor.js": &bintree{vendorJs, map[string]*bintree{}}, + "app.js": &bintree{appJs, map[string]*bintree{}}, + "app.js.map": &bintree{appJsMap, map[string]*bintree{}}, + "index.html": &bintree{indexHtml, map[string]*bintree{}}, + "vendor.js": &bintree{vendorJs, map[string]*bintree{}}, "vendor.js.map": &bintree{vendorJsMap, map[string]*bintree{}}, }} @@ -324,4 +325,3 @@ func _filePath(dir, name string) string { cannonicalName := strings.Replace(name, "\\", "/", -1) return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) } - diff --git a/src/github.com/stellar/gateway/bridge/handlers/request_handler_admin.go b/src/github.com/stellar/gateway/bridge/handlers/request_handler_admin.go index ebd2358..6ac678e 100644 --- a/src/github.com/stellar/gateway/bridge/handlers/request_handler_admin.go +++ b/src/github.com/stellar/gateway/bridge/handlers/request_handler_admin.go @@ -7,7 +7,7 @@ import ( "net/url" "strconv" - log "github.com/Sirupsen/logrus" + log "github.com/sirupsen/logrus" "github.com/stellar/gateway/db/entities" "github.com/stellar/gateway/horizon" "github.com/stellar/gateway/protocols" diff --git a/src/github.com/stellar/gateway/bridge/handlers/request_handler_authorize.go b/src/github.com/stellar/gateway/bridge/handlers/request_handler_authorize.go index 4068300..a2bff95 100644 --- a/src/github.com/stellar/gateway/bridge/handlers/request_handler_authorize.go +++ b/src/github.com/stellar/gateway/bridge/handlers/request_handler_authorize.go @@ -1,7 +1,7 @@ package handlers import ( - log "github.com/Sirupsen/logrus" + log "github.com/sirupsen/logrus" "net/http" "github.com/stellar/gateway/protocols" diff --git a/src/github.com/stellar/gateway/bridge/handlers/request_handler_builder.go b/src/github.com/stellar/gateway/bridge/handlers/request_handler_builder.go index bc5a20a..f563e91 100644 --- a/src/github.com/stellar/gateway/bridge/handlers/request_handler_builder.go +++ b/src/github.com/stellar/gateway/bridge/handlers/request_handler_builder.go @@ -2,7 +2,7 @@ package handlers import ( "encoding/json" - log "github.com/Sirupsen/logrus" + log "github.com/sirupsen/logrus" "net/http" "strconv" @@ -49,7 +49,7 @@ func (rh *RequestHandler) Builder(w http.ResponseWriter, r *http.Request) { return } sequenceNumber, err = strconv.ParseUint(accountResponse.SequenceNumber, 10, 64) - }else{ + } else { sequenceNumber, err = strconv.ParseUint(request.SequenceNumber, 10, 64) } diff --git a/src/github.com/stellar/gateway/bridge/handlers/request_handler_create_keypair.go b/src/github.com/stellar/gateway/bridge/handlers/request_handler_create_keypair.go index faf7c7a..e70dfca 100644 --- a/src/github.com/stellar/gateway/bridge/handlers/request_handler_create_keypair.go +++ b/src/github.com/stellar/gateway/bridge/handlers/request_handler_create_keypair.go @@ -2,7 +2,7 @@ package handlers import ( "encoding/json" - log "github.com/Sirupsen/logrus" + log "github.com/sirupsen/logrus" "net/http" "github.com/stellar/gateway/protocols" diff --git a/src/github.com/stellar/gateway/bridge/handlers/request_handler_payment.go b/src/github.com/stellar/gateway/bridge/handlers/request_handler_payment.go index 447962f..ee58a69 100644 --- a/src/github.com/stellar/gateway/bridge/handlers/request_handler_payment.go +++ b/src/github.com/stellar/gateway/bridge/handlers/request_handler_payment.go @@ -5,7 +5,7 @@ import ( "encoding/hex" "encoding/json" "fmt" - log "github.com/Sirupsen/logrus" + log "github.com/sirupsen/logrus" "io/ioutil" "net/http" "strconv" diff --git a/src/github.com/stellar/gateway/bridge/handlers/request_handler_reprocess.go b/src/github.com/stellar/gateway/bridge/handlers/request_handler_reprocess.go index abe7910..11b1779 100644 --- a/src/github.com/stellar/gateway/bridge/handlers/request_handler_reprocess.go +++ b/src/github.com/stellar/gateway/bridge/handlers/request_handler_reprocess.go @@ -3,7 +3,7 @@ package handlers import ( "net/http" - log "github.com/Sirupsen/logrus" + log "github.com/sirupsen/logrus" "github.com/stellar/gateway/protocols" "github.com/stellar/gateway/protocols/bridge" "github.com/stellar/gateway/server" diff --git a/src/github.com/stellar/gateway/cmd/bridge/main.go b/src/github.com/stellar/gateway/cmd/bridge/main.go index 0d08616..3eb7e79 100644 --- a/src/github.com/stellar/gateway/cmd/bridge/main.go +++ b/src/github.com/stellar/gateway/cmd/bridge/main.go @@ -1,7 +1,7 @@ package main import ( - log "github.com/Sirupsen/logrus" + log "github.com/sirupsen/logrus" "runtime" "github.com/spf13/cobra" diff --git a/src/github.com/stellar/gateway/cmd/compliance/main.go b/src/github.com/stellar/gateway/cmd/compliance/main.go index fbca873..8e5294b 100644 --- a/src/github.com/stellar/gateway/cmd/compliance/main.go +++ b/src/github.com/stellar/gateway/cmd/compliance/main.go @@ -3,7 +3,7 @@ package main import ( "runtime" - log "github.com/Sirupsen/logrus" + log "github.com/sirupsen/logrus" "github.com/spf13/cobra" "github.com/spf13/viper" diff --git a/src/github.com/stellar/gateway/compliance/app.go b/src/github.com/stellar/gateway/compliance/app.go index 7fc1302..bdb8296 100644 --- a/src/github.com/stellar/gateway/compliance/app.go +++ b/src/github.com/stellar/gateway/compliance/app.go @@ -6,8 +6,8 @@ import ( "os" "time" - log "github.com/Sirupsen/logrus" "github.com/goji/httpauth" + log "github.com/sirupsen/logrus" "github.com/facebookgo/inject" "github.com/stellar/gateway/compliance/config" diff --git a/src/github.com/stellar/gateway/compliance/handlers/request_handler_allow_access.go b/src/github.com/stellar/gateway/compliance/handlers/request_handler_allow_access.go index 95f7db2..2b8b97b 100644 --- a/src/github.com/stellar/gateway/compliance/handlers/request_handler_allow_access.go +++ b/src/github.com/stellar/gateway/compliance/handlers/request_handler_allow_access.go @@ -1,7 +1,7 @@ package handlers import ( - log "github.com/Sirupsen/logrus" + log "github.com/sirupsen/logrus" "net/http" "time" diff --git a/src/github.com/stellar/gateway/compliance/handlers/request_handler_auth.go b/src/github.com/stellar/gateway/compliance/handlers/request_handler_auth.go index 2bd6cdd..ee19069 100644 --- a/src/github.com/stellar/gateway/compliance/handlers/request_handler_auth.go +++ b/src/github.com/stellar/gateway/compliance/handlers/request_handler_auth.go @@ -12,7 +12,7 @@ import ( "strings" "time" - log "github.com/Sirupsen/logrus" + log "github.com/sirupsen/logrus" "github.com/stellar/gateway/db/entities" "github.com/stellar/gateway/protocols" @@ -182,15 +182,26 @@ func (rh *RequestHandler) HandlerAuth(c web.C, w http.ResponseWriter, r *http.Re case http.StatusAccepted: // AuthStatusPending response.TxStatus = compliance.AuthStatusPending - pendingResponse := struct { - Pending int `json:"pending"` - }{} - err := json.Unmarshal(body, &pendingResponse) + callbackResponse := callback.CallbackResponse{} + err := json.Unmarshal(body, &callbackResponse) if err != nil { // Set default value response.Pending = 600 } else { - response.Pending = pendingResponse.Pending + response.Pending = callbackResponse.Pending + } + case http.StatusBadRequest: // AuthStatusError + response.TxStatus = compliance.AuthStatusError + + callbackResponse := callback.CallbackResponse{} + err := json.Unmarshal(body, &callbackResponse) + if err != nil { + log.WithFields(log.Fields{ + "status": resp.StatusCode, + "body": string(body), + }).Error("Error response from sanctions server") + } else { + response.Error = callbackResponse.Error } case http.StatusForbidden: // AuthStatusDenied response.TxStatus = compliance.AuthStatusDenied @@ -296,15 +307,26 @@ func (rh *RequestHandler) HandlerAuth(c web.C, w http.ResponseWriter, r *http.Re case http.StatusAccepted: // AuthStatusPending response.InfoStatus = compliance.AuthStatusPending - pendingResponse := struct { - Pending int `json:"pending"` - }{} - err := json.Unmarshal(body, &pendingResponse) + callbackResponse := callback.CallbackResponse{} + err := json.Unmarshal(body, &callbackResponse) if err != nil { // Set default value response.Pending = 600 } else { - response.Pending = pendingResponse.Pending + response.Pending = callbackResponse.Pending + } + case http.StatusBadRequest: // AuthStatusError + response.InfoStatus = compliance.AuthStatusError + + callbackResponse := callback.CallbackResponse{} + err := json.Unmarshal(body, &callbackResponse) + if err != nil { + log.WithFields(log.Fields{ + "status": resp.StatusCode, + "body": string(body), + }).Error("Error response from sanctions server") + } else { + response.Error = callbackResponse.Error } case http.StatusForbidden: // AuthStatusDenied response.InfoStatus = compliance.AuthStatusDenied @@ -362,6 +384,7 @@ func (rh *RequestHandler) HandlerAuth(c web.C, w http.ResponseWriter, r *http.Re } if response.TxStatus == compliance.AuthStatusOk && response.InfoStatus == compliance.AuthStatusOk { + w.WriteHeader(http.StatusOK) authorizedTransaction := &entities.AuthorizedTransaction{ TransactionID: hex.EncodeToString(transactionHash[:]), Memo: base64.StdEncoding.EncodeToString(memoBytes[:]), @@ -375,6 +398,12 @@ func (rh *RequestHandler) HandlerAuth(c web.C, w http.ResponseWriter, r *http.Re server.Write(w, protocols.InternalServerError) return } + } else if response.TxStatus == compliance.AuthStatusDenied || response.InfoStatus == compliance.AuthStatusDenied { + w.WriteHeader(http.StatusForbidden) + } else if response.TxStatus == compliance.AuthStatusError || response.InfoStatus == compliance.AuthStatusError { + w.WriteHeader(http.StatusBadRequest) + } else if response.TxStatus == compliance.AuthStatusPending || response.InfoStatus == compliance.AuthStatusPending { + w.WriteHeader(http.StatusAccepted) } responseBody, err := response.Marshal() diff --git a/src/github.com/stellar/gateway/compliance/handlers/request_handler_auth_test.go b/src/github.com/stellar/gateway/compliance/handlers/request_handler_auth_test.go index 4eb2a91..cb8bb35 100644 --- a/src/github.com/stellar/gateway/compliance/handlers/request_handler_auth_test.go +++ b/src/github.com/stellar/gateway/compliance/handlers/request_handler_auth_test.go @@ -387,7 +387,7 @@ func TestRequestHandlerAuth(t *testing.T) { statusCode, response := net.GetResponse(testServer, params) responseString := strings.TrimSpace(string(response)) - assert.Equal(t, 200, statusCode) + assert.Equal(t, 403, statusCode) expected := test.StringToJSONMap(`{ "info_status": "ok", "tx_status": "denied" @@ -395,6 +395,27 @@ func TestRequestHandlerAuth(t *testing.T) { assert.Equal(t, expected, test.StringToJSONMap(responseString)) }) + Convey("when sanctions server returns bad request it returns tx_status `error`", func() { + mockHTTPClient.On( + "PostForm", + "http://sanctions", + url.Values{"sender": {string(senderInfoJSON)}}, + ).Return( + net.BuildHTTPResponse(400, "{\"error\": \"Invalid name\"}"), + nil, + ).Once() + + statusCode, response := net.GetResponse(testServer, params) + responseString := strings.TrimSpace(string(response)) + assert.Equal(t, 400, statusCode) + expected := test.StringToJSONMap(`{ + "info_status": "ok", + "tx_status": "error", + "error": "Invalid name" +}`) + assert.Equal(t, expected, test.StringToJSONMap(responseString)) + }) + Convey("when sanctions server returns accepted it returns tx_status `pending`", func() { mockHTTPClient.On( "PostForm", @@ -407,7 +428,7 @@ func TestRequestHandlerAuth(t *testing.T) { statusCode, response := net.GetResponse(testServer, params) responseString := strings.TrimSpace(string(response)) - assert.Equal(t, 200, statusCode) + assert.Equal(t, 202, statusCode) expected := test.StringToJSONMap(`{ "info_status": "ok", "tx_status": "pending", @@ -516,7 +537,7 @@ func TestRequestHandlerAuth(t *testing.T) { statusCode, response := net.GetResponse(testServer, params) responseString := strings.TrimSpace(string(response)) - assert.Equal(t, 200, statusCode) + assert.Equal(t, 403, statusCode) expected := test.StringToJSONMap(`{ "info_status": "denied", "tx_status": "ok" @@ -524,6 +545,33 @@ func TestRequestHandlerAuth(t *testing.T) { assert.Equal(t, expected, test.StringToJSONMap(responseString)) }) + Convey("when ask_user server returns bad request it returns info_status `error`", func() { + mockHTTPClient.On( + "PostForm", + "http://ask_user", + url.Values{ + "sender": {string(senderInfoJSON)}, + "note": {attachment.Transaction.Note}, + "amount": {"20.0000000"}, + "asset_code": {"USD"}, + "asset_issuer": {"GAMVF7G4GJC4A7JMFJWLUAEIBFQD5RT3DCB5DC5TJDEKQBBACQ4JZVEE"}, + }, + ).Return( + net.BuildHTTPResponse(400, "{\"error\": \"Invalid name\"}"), + nil, + ).Once() + + statusCode, response := net.GetResponse(testServer, params) + responseString := strings.TrimSpace(string(response)) + assert.Equal(t, 400, statusCode) + expected := test.StringToJSONMap(`{ + "info_status": "error", + "tx_status": "ok", + "error": "Invalid name" +}`) + assert.Equal(t, expected, test.StringToJSONMap(responseString)) + }) + Convey("when ask_user server returns pending it returns info_status `pending`", func() { mockHTTPClient.On( "PostForm", @@ -542,7 +590,7 @@ func TestRequestHandlerAuth(t *testing.T) { statusCode, response := net.GetResponse(testServer, params) responseString := strings.TrimSpace(string(response)) - assert.Equal(t, 200, statusCode) + assert.Equal(t, 202, statusCode) expected := test.StringToJSONMap(`{ "info_status": "pending", "tx_status": "ok", @@ -569,7 +617,7 @@ func TestRequestHandlerAuth(t *testing.T) { statusCode, response := net.GetResponse(testServer, params) responseString := strings.TrimSpace(string(response)) - assert.Equal(t, 200, statusCode) + assert.Equal(t, 202, statusCode) expected := test.StringToJSONMap(`{ "info_status": "pending", "tx_status": "ok", @@ -761,7 +809,7 @@ func TestRequestHandlerAuth(t *testing.T) { statusCode, response := net.GetResponse(testServer, params) responseString := strings.TrimSpace(string(response)) - assert.Equal(t, 200, statusCode) + assert.Equal(t, 403, statusCode) expected := test.StringToJSONMap(`{ "info_status": "denied", "tx_status": "ok" diff --git a/src/github.com/stellar/gateway/compliance/handlers/request_handler_receive.go b/src/github.com/stellar/gateway/compliance/handlers/request_handler_receive.go index c2fcc6b..ae29477 100644 --- a/src/github.com/stellar/gateway/compliance/handlers/request_handler_receive.go +++ b/src/github.com/stellar/gateway/compliance/handlers/request_handler_receive.go @@ -1,7 +1,7 @@ package handlers import ( - log "github.com/Sirupsen/logrus" + log "github.com/sirupsen/logrus" "net/http" "github.com/stellar/gateway/protocols" diff --git a/src/github.com/stellar/gateway/compliance/handlers/request_handler_remove_access.go b/src/github.com/stellar/gateway/compliance/handlers/request_handler_remove_access.go index 4e4014c..1756648 100644 --- a/src/github.com/stellar/gateway/compliance/handlers/request_handler_remove_access.go +++ b/src/github.com/stellar/gateway/compliance/handlers/request_handler_remove_access.go @@ -1,7 +1,7 @@ package handlers import ( - log "github.com/Sirupsen/logrus" + log "github.com/sirupsen/logrus" "net/http" "github.com/stellar/gateway/protocols" diff --git a/src/github.com/stellar/gateway/compliance/handlers/request_handler_send.go b/src/github.com/stellar/gateway/compliance/handlers/request_handler_send.go index 81f6eb3..aaccb11 100644 --- a/src/github.com/stellar/gateway/compliance/handlers/request_handler_send.go +++ b/src/github.com/stellar/gateway/compliance/handlers/request_handler_send.go @@ -5,7 +5,7 @@ import ( "io/ioutil" "net/http" - log "github.com/Sirupsen/logrus" + log "github.com/sirupsen/logrus" "github.com/stellar/gateway/protocols" callback "github.com/stellar/gateway/protocols/compliance" "github.com/stellar/gateway/server" diff --git a/src/github.com/stellar/gateway/compliance/handlers/request_handler_tx_status.go b/src/github.com/stellar/gateway/compliance/handlers/request_handler_tx_status.go index fe48958..54ea162 100644 --- a/src/github.com/stellar/gateway/compliance/handlers/request_handler_tx_status.go +++ b/src/github.com/stellar/gateway/compliance/handlers/request_handler_tx_status.go @@ -6,7 +6,7 @@ import ( "net/http" "net/url" - log "github.com/Sirupsen/logrus" + log "github.com/sirupsen/logrus" "github.com/stellar/gateway/protocols" "github.com/stellar/gateway/server" "github.com/stellar/go/protocols/compliance" diff --git a/src/github.com/stellar/gateway/db/drivers/mysql/bindata.go b/src/github.com/stellar/gateway/db/drivers/mysql/bindata.go index 2b6981c..cf9c401 100644 --- a/src/github.com/stellar/gateway/db/drivers/mysql/bindata.go +++ b/src/github.com/stellar/gateway/db/drivers/mysql/bindata.go @@ -161,7 +161,7 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ - "migrations_gateway/01_init.sql": migrations_gateway01_initSql, + "migrations_gateway/01_init.sql": migrations_gateway01_initSql, "migrations_compliance/01_init.sql": migrations_compliance01_initSql, } @@ -204,6 +204,7 @@ type bintree struct { Func func() (*asset, error) Children map[string]*bintree } + var _bintree = &bintree{nil, map[string]*bintree{ "migrations_compliance": &bintree{nil, map[string]*bintree{ "01_init.sql": &bintree{migrations_compliance01_initSql, map[string]*bintree{}}, @@ -259,4 +260,3 @@ func _filePath(dir, name string) string { cannonicalName := strings.Replace(name, "\\", "/", -1) return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) } - diff --git a/src/github.com/stellar/gateway/db/drivers/postgres/bindata.go b/src/github.com/stellar/gateway/db/drivers/postgres/bindata.go index 42aa7d0..b6a8967 100644 --- a/src/github.com/stellar/gateway/db/drivers/postgres/bindata.go +++ b/src/github.com/stellar/gateway/db/drivers/postgres/bindata.go @@ -161,7 +161,7 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ - "migrations_gateway/01_init.sql": migrations_gateway01_initSql, + "migrations_gateway/01_init.sql": migrations_gateway01_initSql, "migrations_compliance/01_init.sql": migrations_compliance01_initSql, } @@ -204,6 +204,7 @@ type bintree struct { Func func() (*asset, error) Children map[string]*bintree } + var _bintree = &bintree{nil, map[string]*bintree{ "migrations_compliance": &bintree{nil, map[string]*bintree{ "01_init.sql": &bintree{migrations_compliance01_initSql, map[string]*bintree{}}, @@ -259,4 +260,3 @@ func _filePath(dir, name string) string { cannonicalName := strings.Replace(name, "\\", "/", -1) return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) } - diff --git a/src/github.com/stellar/gateway/db/entity_manager.go b/src/github.com/stellar/gateway/db/entity_manager.go index fba9d00..1610bb0 100644 --- a/src/github.com/stellar/gateway/db/entity_manager.go +++ b/src/github.com/stellar/gateway/db/entity_manager.go @@ -1,7 +1,7 @@ package db import ( - "github.com/Sirupsen/logrus" + "github.com/sirupsen/logrus" "github.com/stellar/gateway/db/entities" ) diff --git a/src/github.com/stellar/gateway/db/repository.go b/src/github.com/stellar/gateway/db/repository.go index 87b7184..13a1667 100644 --- a/src/github.com/stellar/gateway/db/repository.go +++ b/src/github.com/stellar/gateway/db/repository.go @@ -3,7 +3,7 @@ package db import ( "fmt" - "github.com/Sirupsen/logrus" + "github.com/sirupsen/logrus" "github.com/stellar/gateway/db/entities" "github.com/stellar/go/support/db" ) diff --git a/src/github.com/stellar/gateway/horizon/main.go b/src/github.com/stellar/gateway/horizon/main.go index a121694..d159eee 100644 --- a/src/github.com/stellar/gateway/horizon/main.go +++ b/src/github.com/stellar/gateway/horizon/main.go @@ -5,7 +5,7 @@ import ( "encoding/base64" "encoding/json" "fmt" - "github.com/Sirupsen/logrus" + "github.com/sirupsen/logrus" "io" "io/ioutil" "net/http" diff --git a/src/github.com/stellar/gateway/listener/payment_listener.go b/src/github.com/stellar/gateway/listener/payment_listener.go index 761c075..e26d129 100644 --- a/src/github.com/stellar/gateway/listener/payment_listener.go +++ b/src/github.com/stellar/gateway/listener/payment_listener.go @@ -13,7 +13,7 @@ import ( "encoding/base64" - "github.com/Sirupsen/logrus" + "github.com/sirupsen/logrus" "github.com/stellar/gateway/bridge/config" "github.com/stellar/gateway/db" "github.com/stellar/gateway/db/entities" diff --git a/src/github.com/stellar/gateway/protocols/compliance/callback.go b/src/github.com/stellar/gateway/protocols/compliance/callback.go index b9fc76b..619f7c9 100644 --- a/src/github.com/stellar/gateway/protocols/compliance/callback.go +++ b/src/github.com/stellar/gateway/protocols/compliance/callback.go @@ -1,7 +1,8 @@ package compliance -// PendingResponse is a response from Sanctions and AskUser callbacks when they return 202 Accepted status -type PendingResponse struct { +// CallbackResponse is a response from Sanctions and AskUser callbacks when they return 202 Accepted or 400 Bad Requests statuses +type CallbackResponse struct { // Estimated number of seconds till the sender can check back for a change in status. - Pending int `json:"pending"` + Pending int `json:"pending"` + Error string `json:"error"` } diff --git a/src/github.com/stellar/gateway/submitter/transaction_submitter.go b/src/github.com/stellar/gateway/submitter/transaction_submitter.go index 746659b..59ca48a 100644 --- a/src/github.com/stellar/gateway/submitter/transaction_submitter.go +++ b/src/github.com/stellar/gateway/submitter/transaction_submitter.go @@ -9,7 +9,7 @@ import ( "sync" "time" - "github.com/Sirupsen/logrus" + "github.com/sirupsen/logrus" "github.com/stellar/gateway/db" "github.com/stellar/gateway/db/entities" "github.com/stellar/gateway/horizon" diff --git a/vendor/manifest b/vendor/manifest index a17f299..a2d5c01 100644 --- a/vendor/manifest +++ b/vendor/manifest @@ -14,15 +14,15 @@ "branch": "v1" }, { - "importpath": "github.com/Sirupsen/logrus", - "repository": "https://github.com/Sirupsen/logrus", - "revision": "61e43dc76f7ee59a82bdf3d71033dc12bea4c77d", + "importpath": "github.com/sirupsen/logrus", + "repository": "https://github.com/sirupsen/logrus", + "revision": "68cec9f21fbf3ea8d8f98c044bc6ce05f17b267a", "branch": "master" }, { - "importpath": "github.com/Sirupsen/logrus/hooks/test", - "repository": "https://github.com/Sirupsen/logrus", - "revision": "61e43dc76f7ee59a82bdf3d71033dc12bea4c77d", + "importpath": "github.com/sirupsen/logrus/hooks/test", + "repository": "https://github.com/sirupsen/logrus", + "revision": "68cec9f21fbf3ea8d8f98c044bc6ce05f17b267a", "branch": "master", "path": "/hooks/test" }, @@ -476,13 +476,13 @@ { "importpath": "github.com/stellar/go", "repository": "https://github.com/stellar/go", - "revision": "d73c794a1a2352e7020ad728697aaa5664bc62fa", + "revision": "78d294bf7c2afe35e0cfef5c1e6e61aa38b1c04c", "branch": "master" }, { "importpath": "github.com/stellar/go/protocols/compliance", "repository": "https://github.com/stellar/go", - "revision": "a2a363c0c6943b1f477f33db3a32e7a28bfc403e", + "revision": "78d294bf7c2afe35e0cfef5c1e6e61aa38b1c04c", "branch": "master", "path": "/protocols/compliance" }, diff --git a/vendor/src/github.com/Sirupsen/logrus/hooks/test/test.go b/vendor/src/github.com/Sirupsen/logrus/hooks/test/test.go deleted file mode 100644 index 0688125..0000000 --- a/vendor/src/github.com/Sirupsen/logrus/hooks/test/test.go +++ /dev/null @@ -1,67 +0,0 @@ -package test - -import ( - "io/ioutil" - - "github.com/Sirupsen/logrus" -) - -// test.Hook is a hook designed for dealing with logs in test scenarios. -type Hook struct { - Entries []*logrus.Entry -} - -// Installs a test hook for the global logger. -func NewGlobal() *Hook { - - hook := new(Hook) - logrus.AddHook(hook) - - return hook - -} - -// Installs a test hook for a given local logger. -func NewLocal(logger *logrus.Logger) *Hook { - - hook := new(Hook) - logger.Hooks.Add(hook) - - return hook - -} - -// Creates a discarding logger and installs the test hook. -func NewNullLogger() (*logrus.Logger, *Hook) { - - logger := logrus.New() - logger.Out = ioutil.Discard - - return logger, NewLocal(logger) - -} - -func (t *Hook) Fire(e *logrus.Entry) error { - t.Entries = append(t.Entries, e) - return nil -} - -func (t *Hook) Levels() []logrus.Level { - return logrus.AllLevels -} - -// LastEntry returns the last entry that was logged or nil. -func (t *Hook) LastEntry() (l *logrus.Entry) { - - if i := len(t.Entries) - 1; i < 0 { - return nil - } else { - return t.Entries[i] - } - -} - -// Reset removes all Entries from this test hook. -func (t *Hook) Reset() { - t.Entries = make([]*logrus.Entry, 0) -} diff --git a/vendor/src/github.com/Sirupsen/logrus/terminal_solaris.go b/vendor/src/github.com/Sirupsen/logrus/terminal_solaris.go deleted file mode 100644 index a3c6f6e..0000000 --- a/vendor/src/github.com/Sirupsen/logrus/terminal_solaris.go +++ /dev/null @@ -1,15 +0,0 @@ -// +build solaris,!appengine - -package logrus - -import ( - "os" - - "golang.org/x/sys/unix" -) - -// IsTerminal returns true if the given file descriptor is a terminal. -func IsTerminal() bool { - _, err := unix.IoctlGetTermios(int(os.Stdout.Fd()), unix.TCGETA) - return err == nil -} diff --git a/vendor/src/github.com/Sirupsen/logrus/terminal_windows.go b/vendor/src/github.com/Sirupsen/logrus/terminal_windows.go deleted file mode 100644 index 3727e8a..0000000 --- a/vendor/src/github.com/Sirupsen/logrus/terminal_windows.go +++ /dev/null @@ -1,27 +0,0 @@ -// Based on ssh/terminal: -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build windows,!appengine - -package logrus - -import ( - "syscall" - "unsafe" -) - -var kernel32 = syscall.NewLazyDLL("kernel32.dll") - -var ( - procGetConsoleMode = kernel32.NewProc("GetConsoleMode") -) - -// IsTerminal returns true if stderr's file descriptor is a terminal. -func IsTerminal() bool { - fd := syscall.Stderr - var st uint32 - r, _, e := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(fd), uintptr(unsafe.Pointer(&st)), 0) - return r != 0 && e == 0 -} diff --git a/vendor/src/github.com/Sirupsen/logrus/CHANGELOG.md b/vendor/src/github.com/sirupsen/logrus/CHANGELOG.md similarity index 72% rename from vendor/src/github.com/Sirupsen/logrus/CHANGELOG.md rename to vendor/src/github.com/sirupsen/logrus/CHANGELOG.md index f2c2bc2..747e4d8 100644 --- a/vendor/src/github.com/Sirupsen/logrus/CHANGELOG.md +++ b/vendor/src/github.com/sirupsen/logrus/CHANGELOG.md @@ -1,3 +1,31 @@ +# 0.11.5 + +* feature: add writer and writerlevel to entry (#372) + +# 0.11.4 + +* bug: fix undefined variable on solaris (#493) + +# 0.11.3 + +* formatter: configure quoting of empty values (#484) +* formatter: configure quoting character (default is `"`) (#484) +* bug: fix not importing io correctly in non-linux environments (#481) + +# 0.11.2 + +* bug: fix windows terminal detection (#476) + +# 0.11.1 + +* bug: fix tty detection with custom out (#471) + +# 0.11.0 + +* performance: Use bufferpool to allocate (#370) +* terminal: terminal detection for app-engine (#343) +* feature: exit handler (#375) + # 0.10.0 * feature: Add a test hook (#180) diff --git a/vendor/src/github.com/Sirupsen/logrus/LICENSE b/vendor/src/github.com/sirupsen/logrus/LICENSE similarity index 100% rename from vendor/src/github.com/Sirupsen/logrus/LICENSE rename to vendor/src/github.com/sirupsen/logrus/LICENSE diff --git a/vendor/src/github.com/Sirupsen/logrus/README.md b/vendor/src/github.com/sirupsen/logrus/README.md similarity index 75% rename from vendor/src/github.com/Sirupsen/logrus/README.md rename to vendor/src/github.com/sirupsen/logrus/README.md index 206c746..cbe8b69 100644 --- a/vendor/src/github.com/Sirupsen/logrus/README.md +++ b/vendor/src/github.com/sirupsen/logrus/README.md @@ -1,10 +1,4 @@ -# Logrus :walrus: [![Build Status](https://travis-ci.org/Sirupsen/logrus.svg?branch=master)](https://travis-ci.org/Sirupsen/logrus) [![GoDoc](https://godoc.org/github.com/Sirupsen/logrus?status.svg)](https://godoc.org/github.com/Sirupsen/logrus) - -**Seeing weird case-sensitive problems?** See [this -issue](https://github.com/sirupsen/logrus/issues/451#issuecomment-264332021). -This change has been reverted. I apologize for causing this. I greatly -underestimated the impact this would have. Logrus strives for stability and -backwards compatibility and failed to provide that. +# Logrus :walrus: [![Build Status](https://travis-ci.org/sirupsen/logrus.svg?branch=master)](https://travis-ci.org/sirupsen/logrus) [![GoDoc](https://godoc.org/github.com/sirupsen/logrus?status.svg)](https://godoc.org/github.com/sirupsen/logrus) Logrus is a structured logger for Go (golang), completely API compatible with the standard library logger. [Godoc][godoc]. **Please note the Logrus API is not @@ -13,6 +7,17 @@ many large deployments. The core API is unlikely to change much but please version control your Logrus to make sure you aren't fetching latest `master` on every build.** +**Seeing weird case-sensitive problems?** Unfortunately, the author failed to +realize the consequences of renaming to lower-case. Due to the Go package +environment, this caused issues. Regretfully, there's no turning back now. +Everything using `logrus` will need to use the lower-case: +`github.com/sirupsen/logrus`. Any package that isn't, should be changed. + +I am terribly sorry for this inconvenience. Logrus strives hard for backwards +compatibility, and the author failed to realize the cascading consequences of +such a name-change. To fix Glide, see [these +comments](https://github.com/sirupsen/logrus/issues/553#issuecomment-306591437). + Nicely color-coded in development (when a TTY is attached, otherwise just plain text): @@ -52,6 +57,12 @@ time="2015-03-26T01:27:38-04:00" level=fatal msg="The ice breaks!" err=&{0x20822 exit status 1 ``` +#### Case-sensitivity + +The organization's name was changed to lower-case--and this will not be changed +back. If you are getting import conflicts due to case sensitivity, please use +the lower-case import: `github.com/sirupsen/logrus`. + #### Example The simplest way to use Logrus is simply the package-level exported logger: @@ -60,7 +71,7 @@ The simplest way to use Logrus is simply the package-level exported logger: package main import ( - log "github.com/Sirupsen/logrus" + log "github.com/sirupsen/logrus" ) func main() { @@ -71,7 +82,7 @@ func main() { ``` Note that it's completely api-compatible with the stdlib logger, so you can -replace your `log` imports everywhere with `log "github.com/Sirupsen/logrus"` +replace your `log` imports everywhere with `log "github.com/sirupsen/logrus"` and you'll now have the flexibility of Logrus. You can customize it all you want: @@ -80,14 +91,15 @@ package main import ( "os" - log "github.com/Sirupsen/logrus" + log "github.com/sirupsen/logrus" ) func init() { // Log as JSON instead of the default ASCII formatter. log.SetFormatter(&log.JSONFormatter{}) - // Output to stdout instead of the default stderr, could also be a file. + // Output to stdout instead of the default stderr + // Can be any io.Writer, see below for File example log.SetOutput(os.Stdout) // Only log the warning severity or above. @@ -129,7 +141,8 @@ application, you can also create an instance of the `logrus` Logger: package main import ( - "github.com/Sirupsen/logrus" + "os" + "github.com/sirupsen/logrus" ) // Create a new instance of the logger. You can have any number of instances. @@ -138,7 +151,15 @@ var log = logrus.New() func main() { // The API for setting attributes is a little different than the package level // exported logger. See Godoc. - log.Out = os.Stderr + log.Out = os.Stdout + + // You could set this to any `io.Writer` such as a file + // file, err := os.OpenFile("logrus.log", os.O_CREATE|os.O_WRONLY, 0666) + // if err == nil { + // log.Out = file + // } else { + // log.Info("Failed to log to file, using default stderr") + // } log.WithFields(logrus.Fields{ "animal": "walrus", @@ -149,7 +170,7 @@ func main() { #### Fields -Logrus encourages careful, structured logging though logging fields instead of +Logrus encourages careful, structured logging through logging fields instead of long, unparseable error messages. For example, instead of: `log.Fatalf("Failed to send event %s to topic %s with key %d")`, you should log the much more discoverable: @@ -171,6 +192,20 @@ In general, with Logrus using any of the `printf`-family functions should be seen as a hint you should add a field, however, you can still use the `printf`-family functions with Logrus. +#### Default Fields + +Often it's helpful to have fields _always_ attached to log statements in an +application or parts of one. For example, you may want to always log the +`request_id` and `user_ip` in the context of a request. Instead of writing +`log.WithFields(log.Fields{"request_id": request_id, "user_ip": user_ip})` on +every line, you can create a `logrus.Entry` to pass around instead: + +```go +requestLogger := log.WithFields(log.Fields{"request_id": request_id, "user_ip": user_ip}) +requestLogger.Info("something happened on that request") # will log request_id and user_ip +requestLogger.Warn("something not great happened") +``` + #### Hooks You can add hooks for logging levels. For example to send errors to an exception @@ -182,9 +217,9 @@ Logrus comes with [built-in hooks](hooks/). Add those, or your custom hook, in ```go import ( - log "github.com/Sirupsen/logrus" + log "github.com/sirupsen/logrus" "gopkg.in/gemnasium/logrus-airbrake-hook.v2" // the package is named "aibrake" - logrus_syslog "github.com/Sirupsen/logrus/hooks/syslog" + logrus_syslog "github.com/sirupsen/logrus/hooks/syslog" "log/syslog" ) @@ -206,42 +241,51 @@ Note: Syslog hook also support connecting to local syslog (Ex. "/dev/log" or "/v | Hook | Description | | ----- | ----------- | -| [Airbrake](https://github.com/gemnasium/logrus-airbrake-hook) | Send errors to the Airbrake API V3. Uses the official [`gobrake`](https://github.com/airbrake/gobrake) behind the scenes. | | [Airbrake "legacy"](https://github.com/gemnasium/logrus-airbrake-legacy-hook) | Send errors to an exception tracking service compatible with the Airbrake API V2. Uses [`airbrake-go`](https://github.com/tobi/airbrake-go) behind the scenes. | -| [Papertrail](https://github.com/polds/logrus-papertrail-hook) | Send errors to the [Papertrail](https://papertrailapp.com) hosted logging service via UDP. | -| [Syslog](https://github.com/Sirupsen/logrus/blob/master/hooks/syslog/syslog.go) | Send errors to remote syslog server. Uses standard library `log/syslog` behind the scenes. | +| [Airbrake](https://github.com/gemnasium/logrus-airbrake-hook) | Send errors to the Airbrake API V3. Uses the official [`gobrake`](https://github.com/airbrake/gobrake) behind the scenes. | +| [Amazon Kinesis](https://github.com/evalphobia/logrus_kinesis) | Hook for logging to [Amazon Kinesis](https://aws.amazon.com/kinesis/) | +| [Amqp-Hook](https://github.com/vladoatanasov/logrus_amqp) | Hook for logging to Amqp broker (Like RabbitMQ) | | [Bugsnag](https://github.com/Shopify/logrus-bugsnag/blob/master/bugsnag.go) | Send errors to the Bugsnag exception tracking service. | -| [Sentry](https://github.com/evalphobia/logrus_sentry) | Send errors to the Sentry error logging and aggregation service. | +| [DeferPanic](https://github.com/deferpanic/dp-logrus) | Hook for logging to DeferPanic | +| [Discordrus](https://github.com/kz/discordrus) | Hook for logging to [Discord](https://discordapp.com/) | +| [ElasticSearch](https://github.com/sohlich/elogrus) | Hook for logging to ElasticSearch| +| [Firehose](https://github.com/beaubrewer/logrus_firehose) | Hook for logging to [Amazon Firehose](https://aws.amazon.com/kinesis/firehose/) +| [Fluentd](https://github.com/evalphobia/logrus_fluent) | Hook for logging to fluentd | +| [Go-Slack](https://github.com/multiplay/go-slack) | Hook for logging to [Slack](https://slack.com) | +| [Graylog](https://github.com/gemnasium/logrus-graylog-hook) | Hook for logging to [Graylog](http://graylog2.org/) | | [Hiprus](https://github.com/nubo/hiprus) | Send errors to a channel in hipchat. | -| [Logrusly](https://github.com/sebest/logrusly) | Send logs to [Loggly](https://www.loggly.com/) | -| [Slackrus](https://github.com/johntdyer/slackrus) | Hook for Slack chat. | +| [Honeybadger](https://github.com/agonzalezro/logrus_honeybadger) | Hook for sending exceptions to Honeybadger | +| [InfluxDB](https://github.com/Abramovic/logrus_influxdb) | Hook for logging to influxdb | +| [Influxus](http://github.com/vlad-doru/influxus) | Hook for concurrently logging to [InfluxDB](http://influxdata.com/) | | [Journalhook](https://github.com/wercker/journalhook) | Hook for logging to `systemd-journald` | -| [Graylog](https://github.com/gemnasium/logrus-graylog-hook) | Hook for logging to [Graylog](http://graylog2.org/) | -| [Raygun](https://github.com/squirkle/logrus-raygun-hook) | Hook for logging to [Raygun.io](http://raygun.io/) | +| [KafkaLogrus](https://github.com/goibibo/KafkaLogrus) | Hook for logging to kafka | | [LFShook](https://github.com/rifflock/lfshook) | Hook for logging to the local filesystem | -| [Honeybadger](https://github.com/agonzalezro/logrus_honeybadger) | Hook for sending exceptions to Honeybadger | +| [Logentries](https://github.com/jcftang/logentriesrus) | Hook for logging to [Logentries](https://logentries.com/) | +| [Logentrus](https://github.com/puddingfactory/logentrus) | Hook for logging to [Logentries](https://logentries.com/) | +| [Logmatic.io](https://github.com/logmatic/logmatic-go) | Hook for logging to [Logmatic.io](http://logmatic.io/) | +| [Logrusly](https://github.com/sebest/logrusly) | Send logs to [Loggly](https://www.loggly.com/) | +| [Logstash](https://github.com/bshuster-repo/logrus-logstash-hook) | Hook for logging to [Logstash](https://www.elastic.co/products/logstash) | | [Mail](https://github.com/zbindenren/logrus_mail) | Hook for sending exceptions via mail | -| [Rollrus](https://github.com/heroku/rollrus) | Hook for sending errors to rollbar | -| [Fluentd](https://github.com/evalphobia/logrus_fluent) | Hook for logging to fluentd | | [Mongodb](https://github.com/weekface/mgorus) | Hook for logging to mongodb | -| [Influxus] (http://github.com/vlad-doru/influxus) | Hook for concurrently logging to [InfluxDB] (http://influxdata.com/) | -| [InfluxDB](https://github.com/Abramovic/logrus_influxdb) | Hook for logging to influxdb | +| [NATS-Hook](https://github.com/rybit/nats_logrus_hook) | Hook for logging to [NATS](https://nats.io) | | [Octokit](https://github.com/dorajistyle/logrus-octokit-hook) | Hook for logging to github via octokit | -| [DeferPanic](https://github.com/deferpanic/dp-logrus) | Hook for logging to DeferPanic | +| [Papertrail](https://github.com/polds/logrus-papertrail-hook) | Send errors to the [Papertrail](https://papertrailapp.com) hosted logging service via UDP. | +| [PostgreSQL](https://github.com/gemnasium/logrus-postgresql-hook) | Send logs to [PostgreSQL](http://postgresql.org) | +| [Pushover](https://github.com/toorop/logrus_pushover) | Send error via [Pushover](https://pushover.net) | +| [Raygun](https://github.com/squirkle/logrus-raygun-hook) | Hook for logging to [Raygun.io](http://raygun.io/) | | [Redis-Hook](https://github.com/rogierlommers/logrus-redis-hook) | Hook for logging to a ELK stack (through Redis) | -| [Amqp-Hook](https://github.com/vladoatanasov/logrus_amqp) | Hook for logging to Amqp broker (Like RabbitMQ) | -| [KafkaLogrus](https://github.com/goibibo/KafkaLogrus) | Hook for logging to kafka | -| [Typetalk](https://github.com/dragon3/logrus-typetalk-hook) | Hook for logging to [Typetalk](https://www.typetalk.in/) | -| [ElasticSearch](https://github.com/sohlich/elogrus) | Hook for logging to ElasticSearch| -| [Sumorus](https://github.com/doublefree/sumorus) | Hook for logging to [SumoLogic](https://www.sumologic.com/)| +| [Rollrus](https://github.com/heroku/rollrus) | Hook for sending errors to rollbar | | [Scribe](https://github.com/sagar8192/logrus-scribe-hook) | Hook for logging to [Scribe](https://github.com/facebookarchive/scribe)| -| [Logstash](https://github.com/bshuster-repo/logrus-logstash-hook) | Hook for logging to [Logstash](https://www.elastic.co/products/logstash) | +| [Sentry](https://github.com/evalphobia/logrus_sentry) | Send errors to the Sentry error logging and aggregation service. | +| [Slackrus](https://github.com/johntdyer/slackrus) | Hook for Slack chat. | +| [Stackdriver](https://github.com/knq/sdhook) | Hook for logging to [Google Stackdriver](https://cloud.google.com/logging/) | +| [Sumorus](https://github.com/doublefree/sumorus) | Hook for logging to [SumoLogic](https://www.sumologic.com/)| +| [Syslog](https://github.com/Sirupsen/logrus/blob/master/hooks/syslog/syslog.go) | Send errors to remote syslog server. Uses standard library `log/syslog` behind the scenes. | +| [Syslog TLS](https://github.com/shinji62/logrus-syslog-ng) | Send errors to remote syslog server with TLS support. | +| [TraceView](https://github.com/evalphobia/logrus_appneta) | Hook for logging to [AppNeta TraceView](https://www.appneta.com/products/traceview/) | +| [Typetalk](https://github.com/dragon3/logrus-typetalk-hook) | Hook for logging to [Typetalk](https://www.typetalk.in/) | | [logz.io](https://github.com/ripcurld00d/logrus-logzio-hook) | Hook for logging to [logz.io](https://logz.io), a Log as a Service using Logstash | -| [Logmatic.io](https://github.com/logmatic/logmatic-go) | Hook for logging to [Logmatic.io](http://logmatic.io/) | -| [Pushover](https://github.com/toorop/logrus_pushover) | Send error via [Pushover](https://pushover.net) | -| [PostgreSQL](https://github.com/gemnasium/logrus-postgresql-hook) | Send logs to [PostgreSQL](http://postgresql.org) | -| [Logentrus](https://github.com/puddingfactory/logentrus) | Hook for logging to [Logentries](https://logentries.com/) | - +| [SQS-Hook](https://github.com/tsarpaul/logrus_sqs) | Hook for logging to [Amazon Simple Queue Service (SQS)](https://aws.amazon.com/sqs/) | #### Level logging @@ -290,7 +334,7 @@ could do: ```go import ( - log "github.com/Sirupsen/logrus" + log "github.com/sirupsen/logrus" ) init() { @@ -317,8 +361,11 @@ The built-in logging formatters are: without colors. * *Note:* to force colored output when there is no TTY, set the `ForceColors` field to `true`. To force no colored output even if there is a TTY set the - `DisableColors` field to `true` + `DisableColors` field to `true`. For Windows, see + [github.com/mattn/go-colorable](https://github.com/mattn/go-colorable). + * All options are listed in the [generated docs](https://godoc.org/github.com/sirupsen/logrus#TextFormatter). * `logrus.JSONFormatter`. Logs fields as JSON. + * All options are listed in the [generated docs](https://godoc.org/github.com/sirupsen/logrus#JSONFormatter). Third party logging formatters: @@ -367,6 +414,18 @@ srv := http.Server{ Each line written to that writer will be printed the usual way, using formatters and hooks. The level for those entries is `info`. +This means that we can override the standard library logger easily: + +```go +logger := logrus.New() +logger.Formatter = &logrus.JSONFormatter{} + +// Use logrus for standard log output +// Note that `log` here references stdlib's log +// Not logrus imported under the name `log`. +log.SetOutput(logger.Writer()) +``` + #### Rotation Log rotation is not provided with Logrus. Log rotation should be done by an @@ -378,7 +437,7 @@ entries. It should not be a feature of the application-level logger. | Tool | Description | | ---- | ----------- | |[Logrus Mate](https://github.com/gogap/logrus_mate)|Logrus mate is a tool for Logrus to manage loggers, you can initial logger's level, hook and formatter by config file, the logger will generated with different config at different environment.| -|[Logrus Viper Helper](https://github.com/heirko/go-contrib/tree/master/logrusHelper)|An Helper arround Logrus to wrap with spf13/Viper to load configuration with fangs! And to simplify Logrus configuration use some behavior of [Logrus Mate](https://github.com/gogap/logrus_mate). [sample](https://github.com/heirko/iris-contrib/blob/master/middleware/logrus-logger/example) | +|[Logrus Viper Helper](https://github.com/heirko/go-contrib/tree/master/logrusHelper)|An Helper around Logrus to wrap with spf13/Viper to load configuration with fangs! And to simplify Logrus configuration use some behavior of [Logrus Mate](https://github.com/gogap/logrus_mate). [sample](https://github.com/heirko/iris-contrib/blob/master/middleware/logrus-logger/example) | #### Testing @@ -388,15 +447,24 @@ Logrus has a built in facility for asserting the presence of log messages. This * a test logger (`test.NewNullLogger`) that just records log messages (and does not output any): ```go -logger, hook := NewNullLogger() -logger.Error("Hello error") +import( + "github.com/sirupsen/logrus" + "github.com/sirupsen/logrus/hooks/null" + "github.com/stretchr/testify/assert" + "testing" +) -assert.Equal(1, len(hook.Entries)) -assert.Equal(logrus.ErrorLevel, hook.LastEntry().Level) -assert.Equal("Hello error", hook.LastEntry().Message) +func TestSomething(t*testing.T){ + logger, hook := null.NewNullLogger() + logger.Error("Helloerror") -hook.Reset() -assert.Nil(hook.LastEntry()) + assert.Equal(t, 1, len(hook.Entries)) + assert.Equal(t, logrus.ErrorLevel, hook.LastEntry().Level) + assert.Equal(t, "Helloerror", hook.LastEntry().Message) + + hook.Reset() + assert.Nil(t, hook.LastEntry()) +} ``` #### Fatal handlers diff --git a/vendor/src/github.com/Sirupsen/logrus/alt_exit.go b/vendor/src/github.com/sirupsen/logrus/alt_exit.go similarity index 96% rename from vendor/src/github.com/Sirupsen/logrus/alt_exit.go rename to vendor/src/github.com/sirupsen/logrus/alt_exit.go index b4c9e84..8af9063 100644 --- a/vendor/src/github.com/Sirupsen/logrus/alt_exit.go +++ b/vendor/src/github.com/sirupsen/logrus/alt_exit.go @@ -1,7 +1,7 @@ package logrus // The following code was sourced and modified from the -// https://bitbucket.org/tebeka/atexit package governed by the following license: +// https://github.com/tebeka/atexit package governed by the following license: // // Copyright (c) 2012 Miki Tebeka . // diff --git a/vendor/src/github.com/Sirupsen/logrus/alt_exit_test.go b/vendor/src/github.com/sirupsen/logrus/alt_exit_test.go similarity index 97% rename from vendor/src/github.com/Sirupsen/logrus/alt_exit_test.go rename to vendor/src/github.com/sirupsen/logrus/alt_exit_test.go index 022b778..d182963 100644 --- a/vendor/src/github.com/Sirupsen/logrus/alt_exit_test.go +++ b/vendor/src/github.com/sirupsen/logrus/alt_exit_test.go @@ -44,7 +44,7 @@ var testprog = []byte(` package main import ( - "github.com/Sirupsen/logrus" + "github.com/sirupsen/logrus" "flag" "fmt" "io/ioutil" diff --git a/vendor/src/github.com/Sirupsen/logrus/doc.go b/vendor/src/github.com/sirupsen/logrus/doc.go similarity index 83% rename from vendor/src/github.com/Sirupsen/logrus/doc.go rename to vendor/src/github.com/sirupsen/logrus/doc.go index dddd5f8..da67aba 100644 --- a/vendor/src/github.com/Sirupsen/logrus/doc.go +++ b/vendor/src/github.com/sirupsen/logrus/doc.go @@ -7,7 +7,7 @@ The simplest way to use Logrus is simply the package-level exported logger: package main import ( - log "github.com/Sirupsen/logrus" + log "github.com/sirupsen/logrus" ) func main() { @@ -21,6 +21,6 @@ The simplest way to use Logrus is simply the package-level exported logger: Output: time="2015-09-07T08:48:33Z" level=info msg="A walrus appears" animal=walrus number=1 size=10 -For a full guide visit https://github.com/Sirupsen/logrus +For a full guide visit https://github.com/sirupsen/logrus */ package logrus diff --git a/vendor/src/github.com/Sirupsen/logrus/entry.go b/vendor/src/github.com/sirupsen/logrus/entry.go similarity index 89% rename from vendor/src/github.com/Sirupsen/logrus/entry.go rename to vendor/src/github.com/sirupsen/logrus/entry.go index 4edbe7a..320e5d5 100644 --- a/vendor/src/github.com/Sirupsen/logrus/entry.go +++ b/vendor/src/github.com/sirupsen/logrus/entry.go @@ -126,7 +126,7 @@ func (entry Entry) log(level Level, msg string) { } func (entry *Entry) Debug(args ...interface{}) { - if entry.Logger.Level >= DebugLevel { + if entry.Logger.level() >= DebugLevel { entry.log(DebugLevel, fmt.Sprint(args...)) } } @@ -136,13 +136,13 @@ func (entry *Entry) Print(args ...interface{}) { } func (entry *Entry) Info(args ...interface{}) { - if entry.Logger.Level >= InfoLevel { + if entry.Logger.level() >= InfoLevel { entry.log(InfoLevel, fmt.Sprint(args...)) } } func (entry *Entry) Warn(args ...interface{}) { - if entry.Logger.Level >= WarnLevel { + if entry.Logger.level() >= WarnLevel { entry.log(WarnLevel, fmt.Sprint(args...)) } } @@ -152,20 +152,20 @@ func (entry *Entry) Warning(args ...interface{}) { } func (entry *Entry) Error(args ...interface{}) { - if entry.Logger.Level >= ErrorLevel { + if entry.Logger.level() >= ErrorLevel { entry.log(ErrorLevel, fmt.Sprint(args...)) } } func (entry *Entry) Fatal(args ...interface{}) { - if entry.Logger.Level >= FatalLevel { + if entry.Logger.level() >= FatalLevel { entry.log(FatalLevel, fmt.Sprint(args...)) } Exit(1) } func (entry *Entry) Panic(args ...interface{}) { - if entry.Logger.Level >= PanicLevel { + if entry.Logger.level() >= PanicLevel { entry.log(PanicLevel, fmt.Sprint(args...)) } panic(fmt.Sprint(args...)) @@ -174,13 +174,13 @@ func (entry *Entry) Panic(args ...interface{}) { // Entry Printf family functions func (entry *Entry) Debugf(format string, args ...interface{}) { - if entry.Logger.Level >= DebugLevel { + if entry.Logger.level() >= DebugLevel { entry.Debug(fmt.Sprintf(format, args...)) } } func (entry *Entry) Infof(format string, args ...interface{}) { - if entry.Logger.Level >= InfoLevel { + if entry.Logger.level() >= InfoLevel { entry.Info(fmt.Sprintf(format, args...)) } } @@ -190,7 +190,7 @@ func (entry *Entry) Printf(format string, args ...interface{}) { } func (entry *Entry) Warnf(format string, args ...interface{}) { - if entry.Logger.Level >= WarnLevel { + if entry.Logger.level() >= WarnLevel { entry.Warn(fmt.Sprintf(format, args...)) } } @@ -200,20 +200,20 @@ func (entry *Entry) Warningf(format string, args ...interface{}) { } func (entry *Entry) Errorf(format string, args ...interface{}) { - if entry.Logger.Level >= ErrorLevel { + if entry.Logger.level() >= ErrorLevel { entry.Error(fmt.Sprintf(format, args...)) } } func (entry *Entry) Fatalf(format string, args ...interface{}) { - if entry.Logger.Level >= FatalLevel { + if entry.Logger.level() >= FatalLevel { entry.Fatal(fmt.Sprintf(format, args...)) } Exit(1) } func (entry *Entry) Panicf(format string, args ...interface{}) { - if entry.Logger.Level >= PanicLevel { + if entry.Logger.level() >= PanicLevel { entry.Panic(fmt.Sprintf(format, args...)) } } @@ -221,13 +221,13 @@ func (entry *Entry) Panicf(format string, args ...interface{}) { // Entry Println family functions func (entry *Entry) Debugln(args ...interface{}) { - if entry.Logger.Level >= DebugLevel { + if entry.Logger.level() >= DebugLevel { entry.Debug(entry.sprintlnn(args...)) } } func (entry *Entry) Infoln(args ...interface{}) { - if entry.Logger.Level >= InfoLevel { + if entry.Logger.level() >= InfoLevel { entry.Info(entry.sprintlnn(args...)) } } @@ -237,7 +237,7 @@ func (entry *Entry) Println(args ...interface{}) { } func (entry *Entry) Warnln(args ...interface{}) { - if entry.Logger.Level >= WarnLevel { + if entry.Logger.level() >= WarnLevel { entry.Warn(entry.sprintlnn(args...)) } } @@ -247,20 +247,20 @@ func (entry *Entry) Warningln(args ...interface{}) { } func (entry *Entry) Errorln(args ...interface{}) { - if entry.Logger.Level >= ErrorLevel { + if entry.Logger.level() >= ErrorLevel { entry.Error(entry.sprintlnn(args...)) } } func (entry *Entry) Fatalln(args ...interface{}) { - if entry.Logger.Level >= FatalLevel { + if entry.Logger.level() >= FatalLevel { entry.Fatal(entry.sprintlnn(args...)) } Exit(1) } func (entry *Entry) Panicln(args ...interface{}) { - if entry.Logger.Level >= PanicLevel { + if entry.Logger.level() >= PanicLevel { entry.Panic(entry.sprintlnn(args...)) } } diff --git a/vendor/src/github.com/Sirupsen/logrus/entry_test.go b/vendor/src/github.com/sirupsen/logrus/entry_test.go similarity index 100% rename from vendor/src/github.com/Sirupsen/logrus/entry_test.go rename to vendor/src/github.com/sirupsen/logrus/entry_test.go diff --git a/vendor/src/github.com/Sirupsen/logrus/examples/basic/basic.go b/vendor/src/github.com/sirupsen/logrus/examples/basic/basic.go similarity index 79% rename from vendor/src/github.com/Sirupsen/logrus/examples/basic/basic.go rename to vendor/src/github.com/sirupsen/logrus/examples/basic/basic.go index a1623ec..3e112b4 100644 --- a/vendor/src/github.com/Sirupsen/logrus/examples/basic/basic.go +++ b/vendor/src/github.com/sirupsen/logrus/examples/basic/basic.go @@ -1,7 +1,8 @@ package main import ( - "github.com/Sirupsen/logrus" + "github.com/sirupsen/logrus" + // "os" ) var log = logrus.New() @@ -9,6 +10,14 @@ var log = logrus.New() func init() { log.Formatter = new(logrus.JSONFormatter) log.Formatter = new(logrus.TextFormatter) // default + + // file, err := os.OpenFile("logrus.log", os.O_CREATE|os.O_WRONLY, 0666) + // if err == nil { + // log.Out = file + // } else { + // log.Info("Failed to log to file, using default stderr") + // } + log.Level = logrus.DebugLevel } diff --git a/vendor/src/github.com/Sirupsen/logrus/examples/hook/hook.go b/vendor/src/github.com/sirupsen/logrus/examples/hook/hook.go similarity index 95% rename from vendor/src/github.com/Sirupsen/logrus/examples/hook/hook.go rename to vendor/src/github.com/sirupsen/logrus/examples/hook/hook.go index 3187f6d..c8470c3 100644 --- a/vendor/src/github.com/Sirupsen/logrus/examples/hook/hook.go +++ b/vendor/src/github.com/sirupsen/logrus/examples/hook/hook.go @@ -1,7 +1,7 @@ package main import ( - "github.com/Sirupsen/logrus" + "github.com/sirupsen/logrus" "gopkg.in/gemnasium/logrus-airbrake-hook.v2" ) diff --git a/vendor/src/github.com/Sirupsen/logrus/exported.go b/vendor/src/github.com/sirupsen/logrus/exported.go similarity index 99% rename from vendor/src/github.com/Sirupsen/logrus/exported.go rename to vendor/src/github.com/sirupsen/logrus/exported.go index 9a0120a..1aeaa90 100644 --- a/vendor/src/github.com/Sirupsen/logrus/exported.go +++ b/vendor/src/github.com/sirupsen/logrus/exported.go @@ -31,14 +31,14 @@ func SetFormatter(formatter Formatter) { func SetLevel(level Level) { std.mu.Lock() defer std.mu.Unlock() - std.Level = level + std.setLevel(level) } // GetLevel returns the standard logger level. func GetLevel() Level { std.mu.Lock() defer std.mu.Unlock() - return std.Level + return std.level() } // AddHook adds a hook to the standard logger hooks. diff --git a/vendor/src/github.com/Sirupsen/logrus/formatter.go b/vendor/src/github.com/sirupsen/logrus/formatter.go similarity index 100% rename from vendor/src/github.com/Sirupsen/logrus/formatter.go rename to vendor/src/github.com/sirupsen/logrus/formatter.go diff --git a/vendor/src/github.com/Sirupsen/logrus/formatter_bench_test.go b/vendor/src/github.com/sirupsen/logrus/formatter_bench_test.go similarity index 98% rename from vendor/src/github.com/Sirupsen/logrus/formatter_bench_test.go rename to vendor/src/github.com/sirupsen/logrus/formatter_bench_test.go index c6d290c..d948158 100644 --- a/vendor/src/github.com/Sirupsen/logrus/formatter_bench_test.go +++ b/vendor/src/github.com/sirupsen/logrus/formatter_bench_test.go @@ -80,11 +80,14 @@ func BenchmarkLargeJSONFormatter(b *testing.B) { } func doBenchmark(b *testing.B, formatter Formatter, fields Fields) { + logger := New() + entry := &Entry{ Time: time.Time{}, Level: InfoLevel, Message: "message", Data: fields, + Logger: logger, } var d []byte var err error diff --git a/vendor/src/github.com/Sirupsen/logrus/hook_test.go b/vendor/src/github.com/sirupsen/logrus/hook_test.go similarity index 100% rename from vendor/src/github.com/Sirupsen/logrus/hook_test.go rename to vendor/src/github.com/sirupsen/logrus/hook_test.go diff --git a/vendor/src/github.com/Sirupsen/logrus/hooks.go b/vendor/src/github.com/sirupsen/logrus/hooks.go similarity index 100% rename from vendor/src/github.com/Sirupsen/logrus/hooks.go rename to vendor/src/github.com/sirupsen/logrus/hooks.go diff --git a/vendor/src/github.com/Sirupsen/logrus/hooks/syslog/README.md b/vendor/src/github.com/sirupsen/logrus/hooks/syslog/README.md similarity index 80% rename from vendor/src/github.com/Sirupsen/logrus/hooks/syslog/README.md rename to vendor/src/github.com/sirupsen/logrus/hooks/syslog/README.md index 066704b..92b391c 100644 --- a/vendor/src/github.com/Sirupsen/logrus/hooks/syslog/README.md +++ b/vendor/src/github.com/sirupsen/logrus/hooks/syslog/README.md @@ -5,8 +5,8 @@ ```go import ( "log/syslog" - "github.com/Sirupsen/logrus" - logrus_syslog "github.com/Sirupsen/logrus/hooks/syslog" + "github.com/sirupsen/logrus" + logrus_syslog "github.com/sirupsen/logrus/hooks/syslog" ) func main() { @@ -24,8 +24,8 @@ If you want to connect to local syslog (Ex. "/dev/log" or "/var/run/syslog" or " ```go import ( "log/syslog" - "github.com/Sirupsen/logrus" - logrus_syslog "github.com/Sirupsen/logrus/hooks/syslog" + "github.com/sirupsen/logrus" + logrus_syslog "github.com/sirupsen/logrus/hooks/syslog" ) func main() { @@ -36,4 +36,4 @@ func main() { log.Hooks.Add(hook) } } -``` \ No newline at end of file +``` diff --git a/vendor/src/github.com/Sirupsen/logrus/hooks/syslog/syslog.go b/vendor/src/github.com/sirupsen/logrus/hooks/syslog/syslog.go similarity index 97% rename from vendor/src/github.com/Sirupsen/logrus/hooks/syslog/syslog.go rename to vendor/src/github.com/sirupsen/logrus/hooks/syslog/syslog.go index a36e200..204f001 100644 --- a/vendor/src/github.com/Sirupsen/logrus/hooks/syslog/syslog.go +++ b/vendor/src/github.com/sirupsen/logrus/hooks/syslog/syslog.go @@ -4,7 +4,7 @@ package logrus_syslog import ( "fmt" - "github.com/Sirupsen/logrus" + "github.com/sirupsen/logrus" "log/syslog" "os" ) diff --git a/vendor/src/github.com/Sirupsen/logrus/hooks/syslog/syslog_test.go b/vendor/src/github.com/sirupsen/logrus/hooks/syslog/syslog_test.go similarity index 94% rename from vendor/src/github.com/Sirupsen/logrus/hooks/syslog/syslog_test.go rename to vendor/src/github.com/sirupsen/logrus/hooks/syslog/syslog_test.go index 42762dc..8d7fbe4 100644 --- a/vendor/src/github.com/Sirupsen/logrus/hooks/syslog/syslog_test.go +++ b/vendor/src/github.com/sirupsen/logrus/hooks/syslog/syslog_test.go @@ -1,7 +1,7 @@ package logrus_syslog import ( - "github.com/Sirupsen/logrus" + "github.com/sirupsen/logrus" "log/syslog" "testing" ) diff --git a/vendor/src/github.com/sirupsen/logrus/hooks/test/test.go b/vendor/src/github.com/sirupsen/logrus/hooks/test/test.go new file mode 100644 index 0000000..62c4845 --- /dev/null +++ b/vendor/src/github.com/sirupsen/logrus/hooks/test/test.go @@ -0,0 +1,95 @@ +// The Test package is used for testing logrus. It is here for backwards +// compatibility from when logrus' organization was upper-case. Please use +// lower-case logrus and the `null` package instead of this one. +package test + +import ( + "io/ioutil" + "sync" + + "github.com/sirupsen/logrus" +) + +// Hook is a hook designed for dealing with logs in test scenarios. +type Hook struct { + // Entries is an array of all entries that have been received by this hook. + // For safe access, use the AllEntries() method, rather than reading this + // value directly. + Entries []*logrus.Entry + mu sync.RWMutex +} + +// NewGlobal installs a test hook for the global logger. +func NewGlobal() *Hook { + + hook := new(Hook) + logrus.AddHook(hook) + + return hook + +} + +// NewLocal installs a test hook for a given local logger. +func NewLocal(logger *logrus.Logger) *Hook { + + hook := new(Hook) + logger.Hooks.Add(hook) + + return hook + +} + +// NewNullLogger creates a discarding logger and installs the test hook. +func NewNullLogger() (*logrus.Logger, *Hook) { + + logger := logrus.New() + logger.Out = ioutil.Discard + + return logger, NewLocal(logger) + +} + +func (t *Hook) Fire(e *logrus.Entry) error { + t.mu.Lock() + defer t.mu.Unlock() + t.Entries = append(t.Entries, e) + return nil +} + +func (t *Hook) Levels() []logrus.Level { + return logrus.AllLevels +} + +// LastEntry returns the last entry that was logged or nil. +func (t *Hook) LastEntry() *logrus.Entry { + t.mu.RLock() + defer t.mu.RUnlock() + i := len(t.Entries) - 1 + if i < 0 { + return nil + } + // Make a copy, for safety + e := *t.Entries[i] + return &e +} + +// AllEntries returns all entries that were logged. +func (t *Hook) AllEntries() []*logrus.Entry { + t.mu.RLock() + defer t.mu.RUnlock() + // Make a copy so the returned value won't race with future log requests + entries := make([]*logrus.Entry, len(t.Entries)) + for i, entry := range t.Entries { + // Make a copy, for safety + e := *entry + entries[i] = &e + } + return entries +} + +// Reset removes all Entries from this test hook. +func (t *Hook) Reset() { + t.mu.Lock() + defer t.mu.Unlock() + t.Entries = make([]*logrus.Entry, 0) +} diff --git a/vendor/src/github.com/Sirupsen/logrus/hooks/test/test_test.go b/vendor/src/github.com/sirupsen/logrus/hooks/test/test_test.go similarity index 96% rename from vendor/src/github.com/Sirupsen/logrus/hooks/test/test_test.go rename to vendor/src/github.com/sirupsen/logrus/hooks/test/test_test.go index d69455b..3f55cfe 100644 --- a/vendor/src/github.com/Sirupsen/logrus/hooks/test/test_test.go +++ b/vendor/src/github.com/sirupsen/logrus/hooks/test/test_test.go @@ -3,7 +3,7 @@ package test import ( "testing" - "github.com/Sirupsen/logrus" + "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" ) diff --git a/vendor/src/github.com/Sirupsen/logrus/json_formatter.go b/vendor/src/github.com/sirupsen/logrus/json_formatter.go similarity index 94% rename from vendor/src/github.com/Sirupsen/logrus/json_formatter.go rename to vendor/src/github.com/sirupsen/logrus/json_formatter.go index 266554e..e787ea1 100644 --- a/vendor/src/github.com/Sirupsen/logrus/json_formatter.go +++ b/vendor/src/github.com/sirupsen/logrus/json_formatter.go @@ -35,7 +35,7 @@ type JSONFormatter struct { // FieldMap: FieldMap{ // FieldKeyTime: "@timestamp", // FieldKeyLevel: "@level", - // FieldKeyLevel: "@message", + // FieldKeyMsg: "@message", // }, // } FieldMap FieldMap @@ -47,7 +47,7 @@ func (f *JSONFormatter) Format(entry *Entry) ([]byte, error) { switch v := v.(type) { case error: // Otherwise errors are ignored by `encoding/json` - // https://github.com/Sirupsen/logrus/issues/137 + // https://github.com/sirupsen/logrus/issues/137 data[k] = v.Error() default: data[k] = v diff --git a/vendor/src/github.com/Sirupsen/logrus/json_formatter_test.go b/vendor/src/github.com/sirupsen/logrus/json_formatter_test.go similarity index 100% rename from vendor/src/github.com/Sirupsen/logrus/json_formatter_test.go rename to vendor/src/github.com/sirupsen/logrus/json_formatter_test.go diff --git a/vendor/src/github.com/Sirupsen/logrus/logger.go b/vendor/src/github.com/sirupsen/logrus/logger.go similarity index 88% rename from vendor/src/github.com/Sirupsen/logrus/logger.go rename to vendor/src/github.com/sirupsen/logrus/logger.go index b769f3d..370fff5 100644 --- a/vendor/src/github.com/Sirupsen/logrus/logger.go +++ b/vendor/src/github.com/sirupsen/logrus/logger.go @@ -4,6 +4,7 @@ import ( "io" "os" "sync" + "sync/atomic" ) type Logger struct { @@ -112,7 +113,7 @@ func (logger *Logger) WithError(err error) *Entry { } func (logger *Logger) Debugf(format string, args ...interface{}) { - if logger.Level >= DebugLevel { + if logger.level() >= DebugLevel { entry := logger.newEntry() entry.Debugf(format, args...) logger.releaseEntry(entry) @@ -120,7 +121,7 @@ func (logger *Logger) Debugf(format string, args ...interface{}) { } func (logger *Logger) Infof(format string, args ...interface{}) { - if logger.Level >= InfoLevel { + if logger.level() >= InfoLevel { entry := logger.newEntry() entry.Infof(format, args...) logger.releaseEntry(entry) @@ -134,7 +135,7 @@ func (logger *Logger) Printf(format string, args ...interface{}) { } func (logger *Logger) Warnf(format string, args ...interface{}) { - if logger.Level >= WarnLevel { + if logger.level() >= WarnLevel { entry := logger.newEntry() entry.Warnf(format, args...) logger.releaseEntry(entry) @@ -142,7 +143,7 @@ func (logger *Logger) Warnf(format string, args ...interface{}) { } func (logger *Logger) Warningf(format string, args ...interface{}) { - if logger.Level >= WarnLevel { + if logger.level() >= WarnLevel { entry := logger.newEntry() entry.Warnf(format, args...) logger.releaseEntry(entry) @@ -150,7 +151,7 @@ func (logger *Logger) Warningf(format string, args ...interface{}) { } func (logger *Logger) Errorf(format string, args ...interface{}) { - if logger.Level >= ErrorLevel { + if logger.level() >= ErrorLevel { entry := logger.newEntry() entry.Errorf(format, args...) logger.releaseEntry(entry) @@ -158,7 +159,7 @@ func (logger *Logger) Errorf(format string, args ...interface{}) { } func (logger *Logger) Fatalf(format string, args ...interface{}) { - if logger.Level >= FatalLevel { + if logger.level() >= FatalLevel { entry := logger.newEntry() entry.Fatalf(format, args...) logger.releaseEntry(entry) @@ -167,7 +168,7 @@ func (logger *Logger) Fatalf(format string, args ...interface{}) { } func (logger *Logger) Panicf(format string, args ...interface{}) { - if logger.Level >= PanicLevel { + if logger.level() >= PanicLevel { entry := logger.newEntry() entry.Panicf(format, args...) logger.releaseEntry(entry) @@ -175,7 +176,7 @@ func (logger *Logger) Panicf(format string, args ...interface{}) { } func (logger *Logger) Debug(args ...interface{}) { - if logger.Level >= DebugLevel { + if logger.level() >= DebugLevel { entry := logger.newEntry() entry.Debug(args...) logger.releaseEntry(entry) @@ -183,7 +184,7 @@ func (logger *Logger) Debug(args ...interface{}) { } func (logger *Logger) Info(args ...interface{}) { - if logger.Level >= InfoLevel { + if logger.level() >= InfoLevel { entry := logger.newEntry() entry.Info(args...) logger.releaseEntry(entry) @@ -197,7 +198,7 @@ func (logger *Logger) Print(args ...interface{}) { } func (logger *Logger) Warn(args ...interface{}) { - if logger.Level >= WarnLevel { + if logger.level() >= WarnLevel { entry := logger.newEntry() entry.Warn(args...) logger.releaseEntry(entry) @@ -205,7 +206,7 @@ func (logger *Logger) Warn(args ...interface{}) { } func (logger *Logger) Warning(args ...interface{}) { - if logger.Level >= WarnLevel { + if logger.level() >= WarnLevel { entry := logger.newEntry() entry.Warn(args...) logger.releaseEntry(entry) @@ -213,7 +214,7 @@ func (logger *Logger) Warning(args ...interface{}) { } func (logger *Logger) Error(args ...interface{}) { - if logger.Level >= ErrorLevel { + if logger.level() >= ErrorLevel { entry := logger.newEntry() entry.Error(args...) logger.releaseEntry(entry) @@ -221,7 +222,7 @@ func (logger *Logger) Error(args ...interface{}) { } func (logger *Logger) Fatal(args ...interface{}) { - if logger.Level >= FatalLevel { + if logger.level() >= FatalLevel { entry := logger.newEntry() entry.Fatal(args...) logger.releaseEntry(entry) @@ -230,7 +231,7 @@ func (logger *Logger) Fatal(args ...interface{}) { } func (logger *Logger) Panic(args ...interface{}) { - if logger.Level >= PanicLevel { + if logger.level() >= PanicLevel { entry := logger.newEntry() entry.Panic(args...) logger.releaseEntry(entry) @@ -238,7 +239,7 @@ func (logger *Logger) Panic(args ...interface{}) { } func (logger *Logger) Debugln(args ...interface{}) { - if logger.Level >= DebugLevel { + if logger.level() >= DebugLevel { entry := logger.newEntry() entry.Debugln(args...) logger.releaseEntry(entry) @@ -246,7 +247,7 @@ func (logger *Logger) Debugln(args ...interface{}) { } func (logger *Logger) Infoln(args ...interface{}) { - if logger.Level >= InfoLevel { + if logger.level() >= InfoLevel { entry := logger.newEntry() entry.Infoln(args...) logger.releaseEntry(entry) @@ -260,7 +261,7 @@ func (logger *Logger) Println(args ...interface{}) { } func (logger *Logger) Warnln(args ...interface{}) { - if logger.Level >= WarnLevel { + if logger.level() >= WarnLevel { entry := logger.newEntry() entry.Warnln(args...) logger.releaseEntry(entry) @@ -268,7 +269,7 @@ func (logger *Logger) Warnln(args ...interface{}) { } func (logger *Logger) Warningln(args ...interface{}) { - if logger.Level >= WarnLevel { + if logger.level() >= WarnLevel { entry := logger.newEntry() entry.Warnln(args...) logger.releaseEntry(entry) @@ -276,7 +277,7 @@ func (logger *Logger) Warningln(args ...interface{}) { } func (logger *Logger) Errorln(args ...interface{}) { - if logger.Level >= ErrorLevel { + if logger.level() >= ErrorLevel { entry := logger.newEntry() entry.Errorln(args...) logger.releaseEntry(entry) @@ -284,7 +285,7 @@ func (logger *Logger) Errorln(args ...interface{}) { } func (logger *Logger) Fatalln(args ...interface{}) { - if logger.Level >= FatalLevel { + if logger.level() >= FatalLevel { entry := logger.newEntry() entry.Fatalln(args...) logger.releaseEntry(entry) @@ -293,7 +294,7 @@ func (logger *Logger) Fatalln(args ...interface{}) { } func (logger *Logger) Panicln(args ...interface{}) { - if logger.Level >= PanicLevel { + if logger.level() >= PanicLevel { entry := logger.newEntry() entry.Panicln(args...) logger.releaseEntry(entry) @@ -306,3 +307,11 @@ func (logger *Logger) Panicln(args ...interface{}) { func (logger *Logger) SetNoLock() { logger.mu.Disable() } + +func (logger *Logger) level() Level { + return Level(atomic.LoadUint32((*uint32)(&logger.Level))) +} + +func (logger *Logger) setLevel(level Level) { + atomic.StoreUint32((*uint32)(&logger.Level), uint32(level)) +} diff --git a/vendor/src/github.com/Sirupsen/logrus/logger_bench_test.go b/vendor/src/github.com/sirupsen/logrus/logger_bench_test.go similarity index 100% rename from vendor/src/github.com/Sirupsen/logrus/logger_bench_test.go rename to vendor/src/github.com/sirupsen/logrus/logger_bench_test.go diff --git a/vendor/src/github.com/Sirupsen/logrus/logrus.go b/vendor/src/github.com/sirupsen/logrus/logrus.go similarity index 99% rename from vendor/src/github.com/Sirupsen/logrus/logrus.go rename to vendor/src/github.com/sirupsen/logrus/logrus.go index e596691..dd38999 100644 --- a/vendor/src/github.com/Sirupsen/logrus/logrus.go +++ b/vendor/src/github.com/sirupsen/logrus/logrus.go @@ -10,7 +10,7 @@ import ( type Fields map[string]interface{} // Level type -type Level uint8 +type Level uint32 // Convert the Level to a string. E.g. PanicLevel becomes "panic". func (level Level) String() string { diff --git a/vendor/src/github.com/Sirupsen/logrus/logrus_test.go b/vendor/src/github.com/sirupsen/logrus/logrus_test.go similarity index 92% rename from vendor/src/github.com/Sirupsen/logrus/logrus_test.go rename to vendor/src/github.com/sirupsen/logrus/logrus_test.go index bfc4780..78cbc28 100644 --- a/vendor/src/github.com/Sirupsen/logrus/logrus_test.go +++ b/vendor/src/github.com/sirupsen/logrus/logrus_test.go @@ -359,3 +359,28 @@ func TestLogrusInterface(t *testing.T) { e := logger.WithField("another", "value") fn(e) } + +// Implements io.Writer using channels for synchronization, so we can wait on +// the Entry.Writer goroutine to write in a non-racey way. This does assume that +// there is a single call to Logger.Out for each message. +type channelWriter chan []byte + +func (cw channelWriter) Write(p []byte) (int, error) { + cw <- p + return len(p), nil +} + +func TestEntryWriter(t *testing.T) { + cw := channelWriter(make(chan []byte, 1)) + log := New() + log.Out = cw + log.Formatter = new(JSONFormatter) + log.WithField("foo", "bar").WriterLevel(WarnLevel).Write([]byte("hello\n")) + + bs := <-cw + var fields Fields + err := json.Unmarshal(bs, &fields) + assert.Nil(t, err) + assert.Equal(t, fields["foo"], "bar") + assert.Equal(t, fields["level"], "warning") +} diff --git a/vendor/src/github.com/Sirupsen/logrus/terminal_appengine.go b/vendor/src/github.com/sirupsen/logrus/terminal_appengine.go similarity index 71% rename from vendor/src/github.com/Sirupsen/logrus/terminal_appengine.go rename to vendor/src/github.com/sirupsen/logrus/terminal_appengine.go index 1960169..e011a86 100644 --- a/vendor/src/github.com/Sirupsen/logrus/terminal_appengine.go +++ b/vendor/src/github.com/sirupsen/logrus/terminal_appengine.go @@ -2,7 +2,9 @@ package logrus +import "io" + // IsTerminal returns true if stderr's file descriptor is a terminal. -func IsTerminal() bool { +func IsTerminal(f io.Writer) bool { return true } diff --git a/vendor/src/github.com/Sirupsen/logrus/terminal_bsd.go b/vendor/src/github.com/sirupsen/logrus/terminal_bsd.go similarity index 100% rename from vendor/src/github.com/Sirupsen/logrus/terminal_bsd.go rename to vendor/src/github.com/sirupsen/logrus/terminal_bsd.go diff --git a/vendor/src/github.com/Sirupsen/logrus/terminal_linux.go b/vendor/src/github.com/sirupsen/logrus/terminal_linux.go similarity index 100% rename from vendor/src/github.com/Sirupsen/logrus/terminal_linux.go rename to vendor/src/github.com/sirupsen/logrus/terminal_linux.go diff --git a/vendor/src/github.com/Sirupsen/logrus/terminal_notwindows.go b/vendor/src/github.com/sirupsen/logrus/terminal_notwindows.go similarity index 60% rename from vendor/src/github.com/Sirupsen/logrus/terminal_notwindows.go rename to vendor/src/github.com/sirupsen/logrus/terminal_notwindows.go index 329038f..190297a 100644 --- a/vendor/src/github.com/Sirupsen/logrus/terminal_notwindows.go +++ b/vendor/src/github.com/sirupsen/logrus/terminal_notwindows.go @@ -9,14 +9,20 @@ package logrus import ( + "io" + "os" "syscall" "unsafe" ) // IsTerminal returns true if stderr's file descriptor is a terminal. -func IsTerminal() bool { - fd := syscall.Stderr +func IsTerminal(f io.Writer) bool { var termios Termios - _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, uintptr(fd), ioctlReadTermios, uintptr(unsafe.Pointer(&termios)), 0, 0, 0) - return err == 0 + switch v := f.(type) { + case *os.File: + _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, uintptr(v.Fd()), ioctlReadTermios, uintptr(unsafe.Pointer(&termios)), 0, 0, 0) + return err == 0 + default: + return false + } } diff --git a/vendor/src/github.com/sirupsen/logrus/terminal_solaris.go b/vendor/src/github.com/sirupsen/logrus/terminal_solaris.go new file mode 100644 index 0000000..3c86b1a --- /dev/null +++ b/vendor/src/github.com/sirupsen/logrus/terminal_solaris.go @@ -0,0 +1,21 @@ +// +build solaris,!appengine + +package logrus + +import ( + "io" + "os" + + "golang.org/x/sys/unix" +) + +// IsTerminal returns true if the given file descriptor is a terminal. +func IsTerminal(f io.Writer) bool { + switch v := f.(type) { + case *os.File: + _, err := unix.IoctlGetTermios(int(v.Fd()), unix.TCGETA) + return err == nil + default: + return false + } +} diff --git a/vendor/src/github.com/sirupsen/logrus/terminal_windows.go b/vendor/src/github.com/sirupsen/logrus/terminal_windows.go new file mode 100644 index 0000000..7a33630 --- /dev/null +++ b/vendor/src/github.com/sirupsen/logrus/terminal_windows.go @@ -0,0 +1,82 @@ +// Based on ssh/terminal: +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build windows,!appengine + +package logrus + +import ( + "bytes" + "errors" + "io" + "os" + "os/exec" + "strconv" + "strings" + "syscall" + "unsafe" +) + +var kernel32 = syscall.NewLazyDLL("kernel32.dll") + +var ( + procGetConsoleMode = kernel32.NewProc("GetConsoleMode") + procSetConsoleMode = kernel32.NewProc("SetConsoleMode") +) + +const ( + enableProcessedOutput = 0x0001 + enableWrapAtEolOutput = 0x0002 + enableVirtualTerminalProcessing = 0x0004 +) + +func getVersion() (float64, error) { + stdout, stderr := &bytes.Buffer{}, &bytes.Buffer{} + cmd := exec.Command("cmd", "ver") + cmd.Stdout = stdout + cmd.Stderr = stderr + err := cmd.Run() + if err != nil { + return -1, err + } + + // The output should be like "Microsoft Windows [Version XX.X.XXXXXX]" + version := strings.Replace(stdout.String(), "\n", "", -1) + version = strings.Replace(version, "\r\n", "", -1) + + x1 := strings.Index(version, "[Version") + + if x1 == -1 || strings.Index(version, "]") == -1 { + return -1, errors.New("Can't determine Windows version") + } + + return strconv.ParseFloat(version[x1+9:x1+13], 64) +} + +func init() { + ver, err := getVersion() + if err != nil { + return + } + + // Activate Virtual Processing for Windows CMD + // Info: https://msdn.microsoft.com/en-us/library/windows/desktop/ms686033(v=vs.85).aspx + if ver >= 10 { + handle := syscall.Handle(os.Stderr.Fd()) + procSetConsoleMode.Call(uintptr(handle), enableProcessedOutput|enableWrapAtEolOutput|enableVirtualTerminalProcessing) + } +} + +// IsTerminal returns true if stderr's file descriptor is a terminal. +func IsTerminal(f io.Writer) bool { + switch v := f.(type) { + case *os.File: + var st uint32 + r, _, e := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(v.Fd()), uintptr(unsafe.Pointer(&st)), 0) + return r != 0 && e == 0 + default: + return false + } +} diff --git a/vendor/src/github.com/Sirupsen/logrus/text_formatter.go b/vendor/src/github.com/sirupsen/logrus/text_formatter.go similarity index 78% rename from vendor/src/github.com/Sirupsen/logrus/text_formatter.go rename to vendor/src/github.com/sirupsen/logrus/text_formatter.go index 076de5d..ba88854 100644 --- a/vendor/src/github.com/Sirupsen/logrus/text_formatter.go +++ b/vendor/src/github.com/sirupsen/logrus/text_formatter.go @@ -3,9 +3,9 @@ package logrus import ( "bytes" "fmt" - "runtime" "sort" "strings" + "sync" "time" ) @@ -20,12 +20,10 @@ const ( var ( baseTimestamp time.Time - isTerminal bool ) func init() { baseTimestamp = time.Now() - isTerminal = IsTerminal() } type TextFormatter struct { @@ -50,6 +48,27 @@ type TextFormatter struct { // that log extremely frequently and don't use the JSON formatter this may not // be desired. DisableSorting bool + + // QuoteEmptyFields will wrap empty fields in quotes if true + QuoteEmptyFields bool + + // QuoteCharacter can be set to the override the default quoting character " + // with something else. For example: ', or `. + QuoteCharacter string + + // Whether the logger's out is to a terminal + isTerminal bool + + sync.Once +} + +func (f *TextFormatter) init(entry *Entry) { + if len(f.QuoteCharacter) == 0 { + f.QuoteCharacter = "\"" + } + if entry.Logger != nil { + f.isTerminal = IsTerminal(entry.Logger.Out) + } } func (f *TextFormatter) Format(entry *Entry) ([]byte, error) { @@ -70,8 +89,9 @@ func (f *TextFormatter) Format(entry *Entry) ([]byte, error) { prefixFieldClashes(entry.Data) - isColorTerminal := isTerminal && (runtime.GOOS != "windows") - isColored := (f.ForceColors || isColorTerminal) && !f.DisableColors + f.Do(func() { f.init(entry) }) + + isColored := (f.ForceColors || f.isTerminal) && !f.DisableColors timestampFormat := f.TimestampFormat if timestampFormat == "" { @@ -125,7 +145,10 @@ func (f *TextFormatter) printColored(b *bytes.Buffer, entry *Entry, keys []strin } } -func needsQuoting(text string) bool { +func (f *TextFormatter) needsQuoting(text string) bool { + if f.QuoteEmptyFields && len(text) == 0 { + return true + } for _, ch := range text { if !((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || @@ -148,17 +171,17 @@ func (f *TextFormatter) appendKeyValue(b *bytes.Buffer, key string, value interf func (f *TextFormatter) appendValue(b *bytes.Buffer, value interface{}) { switch value := value.(type) { case string: - if !needsQuoting(value) { + if !f.needsQuoting(value) { b.WriteString(value) } else { - fmt.Fprintf(b, "%q", value) + fmt.Fprintf(b, "%s%v%s", f.QuoteCharacter, value, f.QuoteCharacter) } case error: errmsg := value.Error() - if !needsQuoting(errmsg) { + if !f.needsQuoting(errmsg) { b.WriteString(errmsg) } else { - fmt.Fprintf(b, "%q", errmsg) + fmt.Fprintf(b, "%s%v%s", f.QuoteCharacter, errmsg, f.QuoteCharacter) } default: fmt.Fprint(b, value) diff --git a/vendor/src/github.com/Sirupsen/logrus/text_formatter_test.go b/vendor/src/github.com/sirupsen/logrus/text_formatter_test.go similarity index 71% rename from vendor/src/github.com/Sirupsen/logrus/text_formatter_test.go rename to vendor/src/github.com/sirupsen/logrus/text_formatter_test.go index 107703f..9793b5f 100644 --- a/vendor/src/github.com/Sirupsen/logrus/text_formatter_test.go +++ b/vendor/src/github.com/sirupsen/logrus/text_formatter_test.go @@ -3,9 +3,9 @@ package logrus import ( "bytes" "errors" + "strings" "testing" "time" - "strings" ) func TestQuoting(t *testing.T) { @@ -14,7 +14,7 @@ func TestQuoting(t *testing.T) { checkQuoting := func(q bool, value interface{}) { b, _ := tf.Format(WithField("test", value)) idx := bytes.Index(b, ([]byte)("test=")) - cont := bytes.Contains(b[idx+5:], []byte{'"'}) + cont := bytes.Contains(b[idx+5:], []byte(tf.QuoteCharacter)) if cont != q { if q { t.Errorf("quoting expected for: %#v", value) @@ -24,6 +24,7 @@ func TestQuoting(t *testing.T) { } } + checkQuoting(false, "") checkQuoting(false, "abcd") checkQuoting(false, "v1.0") checkQuoting(false, "1234567890") @@ -32,6 +33,24 @@ func TestQuoting(t *testing.T) { checkQuoting(true, "x,y") checkQuoting(false, errors.New("invalid")) checkQuoting(true, errors.New("invalid argument")) + + // Test for custom quote character. + tf.QuoteCharacter = "`" + checkQuoting(false, "") + checkQuoting(false, "abcd") + checkQuoting(true, "/foobar") + checkQuoting(true, errors.New("invalid argument")) + + // Test for multi-character quotes. + tf.QuoteCharacter = "§~±" + checkQuoting(false, "abcd") + checkQuoting(true, errors.New("invalid argument")) + + // Test for quoting empty fields. + tf.QuoteEmptyFields = true + checkQuoting(true, "") + checkQuoting(false, "abcd") + checkQuoting(true, errors.New("invalid argument")) } func TestTimestampFormat(t *testing.T) { @@ -40,10 +59,7 @@ func TestTimestampFormat(t *testing.T) { customStr, _ := customFormatter.Format(WithField("test", "test")) timeStart := bytes.Index(customStr, ([]byte)("time=")) timeEnd := bytes.Index(customStr, ([]byte)("level=")) - timeStr := customStr[timeStart+5 : timeEnd-1] - if timeStr[0] == '"' && timeStr[len(timeStr)-1] == '"' { - timeStr = timeStr[1 : len(timeStr)-1] - } + timeStr := customStr[timeStart+5+len(customFormatter.QuoteCharacter) : timeEnd-1-len(customFormatter.QuoteCharacter)] if format == "" { format = time.RFC3339 } diff --git a/vendor/src/github.com/Sirupsen/logrus/writer.go b/vendor/src/github.com/sirupsen/logrus/writer.go similarity index 54% rename from vendor/src/github.com/Sirupsen/logrus/writer.go rename to vendor/src/github.com/sirupsen/logrus/writer.go index f74d2aa..7bdebed 100644 --- a/vendor/src/github.com/Sirupsen/logrus/writer.go +++ b/vendor/src/github.com/sirupsen/logrus/writer.go @@ -11,39 +11,48 @@ func (logger *Logger) Writer() *io.PipeWriter { } func (logger *Logger) WriterLevel(level Level) *io.PipeWriter { + return NewEntry(logger).WriterLevel(level) +} + +func (entry *Entry) Writer() *io.PipeWriter { + return entry.WriterLevel(InfoLevel) +} + +func (entry *Entry) WriterLevel(level Level) *io.PipeWriter { reader, writer := io.Pipe() var printFunc func(args ...interface{}) + switch level { case DebugLevel: - printFunc = logger.Debug + printFunc = entry.Debug case InfoLevel: - printFunc = logger.Info + printFunc = entry.Info case WarnLevel: - printFunc = logger.Warn + printFunc = entry.Warn case ErrorLevel: - printFunc = logger.Error + printFunc = entry.Error case FatalLevel: - printFunc = logger.Fatal + printFunc = entry.Fatal case PanicLevel: - printFunc = logger.Panic + printFunc = entry.Panic default: - printFunc = logger.Print + printFunc = entry.Print } - go logger.writerScanner(reader, printFunc) + go entry.writerScanner(reader, printFunc) runtime.SetFinalizer(writer, writerFinalizer) return writer } -func (logger *Logger) writerScanner(reader *io.PipeReader, printFunc func(args ...interface{})) { +func (entry *Entry) writerScanner(reader *io.PipeReader, printFunc func(args ...interface{})) { scanner := bufio.NewScanner(reader) for scanner.Scan() { printFunc(scanner.Text()) } if err := scanner.Err(); err != nil { - logger.Errorf("Error while reading from Writer: %s", err) + entry.Errorf("Error while reading from Writer: %s", err) } reader.Close() } diff --git a/vendor/src/github.com/stellar/go/Gemfile b/vendor/src/github.com/stellar/go/Gemfile index 1f44cf5..796075a 100644 --- a/vendor/src/github.com/stellar/go/Gemfile +++ b/vendor/src/github.com/stellar/go/Gemfile @@ -1,6 +1,8 @@ source 'https://rubygems.org' + gem 'xdrgen', github:'stellar/xdrgen' gem 'pry' gem 'octokit' gem 'netrc' gem 'rake' +gem 'stellar_core_commander', github: 'stellar/stellar_core_commander', branch: 'master' diff --git a/vendor/src/github.com/stellar/go/Gemfile.lock b/vendor/src/github.com/stellar/go/Gemfile.lock index 49db998..d13b117 100644 --- a/vendor/src/github.com/stellar/go/Gemfile.lock +++ b/vendor/src/github.com/stellar/go/Gemfile.lock @@ -1,6 +1,22 @@ +GIT + remote: git://github.com/stellar/stellar_core_commander.git + revision: f69cd69dbe05aeace8b2d9d3554709cad3c7b4b5 + branch: master + specs: + stellar_core_commander (0.0.12) + activesupport (>= 4.0.0) + contracts (~> 0.9) + faraday (~> 0.9.1) + faraday_middleware (~> 0.9.1) + pg (~> 0.18.1) + sequel (~> 4.21.0) + slop (~> 3.6.0) + stellar-base (>= 0.12.0) + typhoeus (~> 0.8.0) + GIT remote: git://github.com/stellar/xdrgen.git - revision: cc3d4365d59439e1c4e3aa6609da52dda65486a4 + revision: 1c80a3bf3f2a67ca081a7646ab066c39fa715a38 specs: xdrgen (0.0.1) activesupport (~> 5) @@ -11,41 +27,69 @@ GIT GEM remote: https://rubygems.org/ specs: - activesupport (5.0.2) + activemodel (5.1.4) + activesupport (= 5.1.4) + activesupport (5.1.4) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (~> 0.7) minitest (~> 5.1) tzinfo (~> 1.1) - addressable (2.5.1) - public_suffix (~> 2.0, >= 2.0.2) - coderay (1.1.1) + addressable (2.5.2) + public_suffix (>= 2.0.2, < 4.0) + base32 (0.3.2) + coderay (1.1.2) concurrent-ruby (1.0.5) - faraday (0.12.0.1) + contracts (0.16.0) + digest-crc (0.4.1) + ethon (0.10.1) + ffi (>= 1.3.0) + faraday (0.9.2) multipart-post (>= 1.2, < 3) - i18n (0.8.1) + faraday_middleware (0.9.2) + faraday (>= 0.7.4, < 0.10) + ffi (1.9.18) + i18n (0.9.0) + concurrent-ruby (~> 1.0) memoist (0.11.0) - method_source (0.8.2) - minitest (5.10.1) + method_source (0.9.0) + minitest (5.10.3) multipart-post (2.0.0) netrc (0.11.0) - octokit (4.6.2) + octokit (4.7.0) sawyer (~> 0.8.0, >= 0.5.3) + pg (0.18.4) polyglot (0.3.5) - pry (0.10.4) + pry (0.11.2) coderay (~> 1.1.0) - method_source (~> 0.8.1) - slop (~> 3.4) - public_suffix (2.0.5) - rake (12.0.0) + method_source (~> 0.9.0) + public_suffix (3.0.0) + rake (12.1.0) + rbnacl (5.0.0) + ffi + rbnacl-libsodium (1.0.13) + rbnacl (>= 3.0.1) sawyer (0.8.1) addressable (>= 2.3.5, < 2.6) faraday (~> 0.8, < 1.0) + sequel (4.21.0) slop (3.6.0) + stellar-base (0.12.0) + activesupport (>= 4.2.7) + base32 + digest-crc + rbnacl + rbnacl-libsodium (~> 1.0.3) + xdr (~> 2.0.0) thread_safe (0.3.6) treetop (1.5.3) polyglot (~> 0.3) + typhoeus (0.8.0) + ethon (>= 0.8.0) tzinfo (1.2.3) thread_safe (~> 0.1) + xdr (2.0.0) + activemodel (>= 4.2.7) + activesupport (>= 4.2.7) PLATFORMS ruby @@ -55,6 +99,7 @@ DEPENDENCIES octokit pry rake + stellar_core_commander! xdrgen! BUNDLED WITH diff --git a/vendor/src/github.com/stellar/go/build/asset.go b/vendor/src/github.com/stellar/go/build/asset.go new file mode 100644 index 0000000..5a5e084 --- /dev/null +++ b/vendor/src/github.com/stellar/go/build/asset.go @@ -0,0 +1,46 @@ +package build + +import ( + "github.com/stellar/go/support/errors" + "github.com/stellar/go/xdr" +) + +// MustXDR is the panicky version of ToXDR +func (a Asset) MustXDR() xdr.Asset { + ret, err := a.ToXDR() + if err != nil { + panic(err) + } + return ret +} + +// ToXDR creates xdr.Asset object from build.Asset object +func (a Asset) ToXDR() (xdr.Asset, error) { + if a.Native { + return xdr.NewAsset(xdr.AssetTypeAssetTypeNative, nil) + } + + var issuer xdr.AccountId + err := setAccountId(a.Issuer, &issuer) + if err != nil { + return xdr.Asset{}, err + } + + length := len(a.Code) + switch { + case length >= 1 && length <= 4: + var codeArray [4]byte + byteArray := []byte(a.Code) + copy(codeArray[:], byteArray[0:length]) + asset := xdr.AssetAlphaNum4{AssetCode: codeArray, Issuer: issuer} + return xdr.NewAsset(xdr.AssetTypeAssetTypeCreditAlphanum4, asset) + case length >= 5 && length <= 12: + var codeArray [12]byte + byteArray := []byte(a.Code) + copy(codeArray[:], byteArray[0:length]) + asset := xdr.AssetAlphaNum12{AssetCode: codeArray, Issuer: issuer} + return xdr.NewAsset(xdr.AssetTypeAssetTypeCreditAlphanum12, asset) + default: + return xdr.Asset{}, errors.New("Asset code length is invalid") + } +} diff --git a/vendor/src/github.com/stellar/go/build/asset_test.go b/vendor/src/github.com/stellar/go/build/asset_test.go new file mode 100644 index 0000000..7739b9d --- /dev/null +++ b/vendor/src/github.com/stellar/go/build/asset_test.go @@ -0,0 +1,93 @@ +package build + +import ( + "testing" + + "github.com/stellar/go/xdr" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestAsset_ToXDR(t *testing.T) { + var ( + issuer xdr.AccountId + issuerAddress = "GAWSI2JO2CF36Z43UGMUJCDQ2IMR5B3P5TMS7XM7NUTU3JHG3YJUDQXA" + ) + require.NoError(t, issuer.SetAddress(issuerAddress)) + + cases := []struct { + Name string + Asset Asset + Expected xdr.Asset + ExpectedErr string + }{ + { + Name: "Native", + Asset: NativeAsset(), + Expected: xdr.Asset{Type: xdr.AssetTypeAssetTypeNative}, + }, + { + Name: "Alphanum4", + Asset: CreditAsset("USD", issuerAddress), + Expected: xdr.Asset{ + Type: xdr.AssetTypeAssetTypeCreditAlphanum4, + AlphaNum4: &xdr.AssetAlphaNum4{ + AssetCode: [4]byte{0x55, 0x53, 0x44, 0x00}, //USD + Issuer: issuer, + }, + }, + }, + { + Name: "Alphanum12", + Asset: CreditAsset("SCOTTBUCKS", issuerAddress), + Expected: xdr.Asset{ + Type: xdr.AssetTypeAssetTypeCreditAlphanum12, + AlphaNum12: &xdr.AssetAlphaNum12{ + AssetCode: [12]byte{ + 0x53, 0x43, 0x4f, 0x54, + 0x54, 0x42, 0x55, 0x43, + 0x4b, 0x53, 0x00, 0x00, + }, //SCOTTBUCKS + Issuer: issuer, + }, + }, + }, + { + Name: "bad issuer", + Asset: CreditAsset("USD", "FUNK"), + ExpectedErr: "base32 decode failed: illegal base32 data at input byte 0", + }, + { + Name: "bad code", + Asset: CreditAsset("", issuerAddress), + ExpectedErr: "Asset code length is invalid", + }, + } + + for _, kase := range cases { + actual, err := kase.Asset.ToXDR() + + if kase.ExpectedErr != "" { + if assert.Error(t, err, "no expected error in case: %s", kase.Name) { + assert.EqualError(t, err, kase.ExpectedErr) + } + continue + } + + if assert.NoError(t, err, "unexpected error in case: %s", kase.Name) { + assert.Equal(t, kase.Expected, actual, "invalid xdr result") + } + } +} + +func TestAsset_MustXDR(t *testing.T) { + // good + assert.NotPanics(t, func() { + NativeAsset().MustXDR() + }) + + // bad + assert.Panics(t, func() { + CreditAsset("USD", "BONK").MustXDR() + }) +} diff --git a/vendor/src/github.com/stellar/go/build/change_trust.go b/vendor/src/github.com/stellar/go/build/change_trust.go index 25e31e0..cdbe5ea 100644 --- a/vendor/src/github.com/stellar/go/build/change_trust.go +++ b/vendor/src/github.com/stellar/go/build/change_trust.go @@ -52,7 +52,7 @@ func (m Asset) MutateChangeTrust(o *xdr.ChangeTrustOp) (err error) { return errors.New("Native asset not allowed") } - o.Line, err = m.ToXdrObject() + o.Line, err = m.ToXDR() return } diff --git a/vendor/src/github.com/stellar/go/build/main.go b/vendor/src/github.com/stellar/go/build/main.go index 33ed676..47a6e44 100644 --- a/vendor/src/github.com/stellar/go/build/main.go +++ b/vendor/src/github.com/stellar/go/build/main.go @@ -13,7 +13,6 @@ import ( "github.com/stellar/go/amount" "github.com/stellar/go/network" - "github.com/stellar/go/support/errors" "github.com/stellar/go/xdr" ) @@ -52,37 +51,6 @@ type Asset struct { Native bool } -// ToXdrObject creates xdr.Asset object from build.Asset object -func (a Asset) ToXdrObject() (xdr.Asset, error) { - if a.Native { - return xdr.NewAsset(xdr.AssetTypeAssetTypeNative, nil) - } - - var issuer xdr.AccountId - err := setAccountId(a.Issuer, &issuer) - if err != nil { - return xdr.Asset{}, err - } - - length := len(a.Code) - switch { - case length >= 1 && length <= 4: - var codeArray [4]byte - byteArray := []byte(a.Code) - copy(codeArray[:], byteArray[0:length]) - asset := xdr.AssetAlphaNum4{AssetCode: codeArray, Issuer: issuer} - return xdr.NewAsset(xdr.AssetTypeAssetTypeCreditAlphanum4, asset) - case length >= 5 && length <= 12: - var codeArray [12]byte - byteArray := []byte(a.Code) - copy(codeArray[:], byteArray[0:length]) - asset := xdr.AssetAlphaNum12{AssetCode: codeArray, Issuer: issuer} - return xdr.NewAsset(xdr.AssetTypeAssetTypeCreditAlphanum12, asset) - default: - return xdr.Asset{}, errors.New("Asset code length is invalid") - } -} - // AllowTrustAsset is a mutator capable of setting the asset on // an operations that have one. type AllowTrustAsset struct { @@ -167,7 +135,7 @@ type MemoText struct { } // NativeAmount is a mutator that configures a payment to be using native -// currency and have the amount provided. +// currency and have the amount provided (in lumens). type NativeAmount struct { Amount string } diff --git a/vendor/src/github.com/stellar/go/build/main_test.go b/vendor/src/github.com/stellar/go/build/main_test.go index fcb1a05..7a74c73 100644 --- a/vendor/src/github.com/stellar/go/build/main_test.go +++ b/vendor/src/github.com/stellar/go/build/main_test.go @@ -90,9 +90,9 @@ func ExampleSetOptions() { // Output: tx base64: AAAAADZY/nWY0gx6beMpf4S8Ur0qHsjA8fbFtBzBx1cbQzHwAAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAUAAAABAAAAAKf5dCD2RflX5jEYTCZ2cHEwuB+QuJJh/0AIM3zwaiyoAAAAAQAAAAcAAAABAAAABwAAAAEAAAABAAAAAQAAAAIAAAABAAAAAwAAAAEAAAAEAAAAAQAAAAtzdGVsbGFyLm9yZwAAAAABAAAAALwxmfetrj7X13WT+tJjwj9VPrqIE2DUJ48+59etBKjTAAAABQAAAAAAAAABG0Mx8AAAAECZF17pOfZcyc7YJXMyx++PMydIvL6g2yZcPDY8h4+tmlz+3rsE6uuX0R6xfgNnuMntvK4YMmaOvp4DvaZMMNoA } -// ExampleSetOptionsOperations creates and signs a simple transaction with many SetOptions operations, and then +// ExampleSetOptions_manyOperations creates and signs a simple transaction with many SetOptions operations, and then // encodes it into a base64 string capable of being submitted to stellar-core. -func ExampleSetOptionsOperations() { +func ExampleSetOptions_manyOperations() { seed := "SDOTALIMPAM2IV65IOZA7KZL7XWZI5BODFXTRVLIHLQZQCKK57PH5F3H" tx := Transaction( SourceAccount{seed}, @@ -136,9 +136,9 @@ func ExampleChangeTrust() { // Output: tx base64: AAAAADZY/nWY0gx6beMpf4S8Ur0qHsjA8fbFtBzBx1cbQzHwAAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAAtJGku0Iu/Z5uhmUSIcNIZHodv7Nkv3Z9tJ02k5t4TQQAAAAA7wO+gAAAAAAAAAAEbQzHwAAAAQOIy19X38Y3jcFzvhDsmXu6iDzrzb4iwfS2NAq9GGAFiRJUGoFX85vKtlNcXzQppF4X8oIMNPEb74fuZE/N+GAE= } -// ExampleChangeTrustMaxLimit creates and signs a simple transaction with ChangeTrust operation (maximum limit), and then +// ExampleChangeTrust_maxLimit creates and signs a simple transaction with ChangeTrust operation (maximum limit), and then // encodes it into a base64 string capable of being submitted to stellar-core. -func ExampleChangeTrustMaxLimit() { +func ExampleChangeTrust_maxLimit() { seed := "SDOTALIMPAM2IV65IOZA7KZL7XWZI5BODFXTRVLIHLQZQCKK57PH5F3H" tx := Transaction( SourceAccount{seed}, diff --git a/vendor/src/github.com/stellar/go/build/manage_offer.go b/vendor/src/github.com/stellar/go/build/manage_offer.go index 2aedd51..0c28496 100644 --- a/vendor/src/github.com/stellar/go/build/manage_offer.go +++ b/vendor/src/github.com/stellar/go/build/manage_offer.go @@ -104,24 +104,24 @@ func (m Rate) MutateManageOffer(o interface{}) (err error) { default: err = errors.New("Unexpected operation type") case *xdr.ManageOfferOp: - o.Selling, err = m.Selling.ToXdrObject() + o.Selling, err = m.Selling.ToXDR() if err != nil { return } - o.Buying, err = m.Buying.ToXdrObject() + o.Buying, err = m.Buying.ToXDR() if err != nil { return } o.Price, err = price.Parse(string(m.Price)) case *xdr.CreatePassiveOfferOp: - o.Selling, err = m.Selling.ToXdrObject() + o.Selling, err = m.Selling.ToXDR() if err != nil { return } - o.Buying, err = m.Buying.ToXdrObject() + o.Buying, err = m.Buying.ToXDR() if err != nil { return } diff --git a/vendor/src/github.com/stellar/go/build/payment.go b/vendor/src/github.com/stellar/go/build/payment.go index c65be05..d65e1a8 100644 --- a/vendor/src/github.com/stellar/go/build/payment.go +++ b/vendor/src/github.com/stellar/go/build/payment.go @@ -139,7 +139,7 @@ func (m PayWithPath) MutatePayment(o interface{}) (err error) { var xdrAsset xdr.Asset for _, asset := range m.Path { - xdrAsset, err = asset.ToXdrObject() + xdrAsset, err = asset.ToXDR() if err != nil { return err } @@ -150,6 +150,6 @@ func (m PayWithPath) MutatePayment(o interface{}) (err error) { pathPaymentOp.Path = path // Asset - pathPaymentOp.SendAsset, err = m.Asset.ToXdrObject() + pathPaymentOp.SendAsset, err = m.Asset.ToXDR() return } diff --git a/vendor/src/github.com/stellar/go/clients/horizon/client.go b/vendor/src/github.com/stellar/go/clients/horizon/client.go index e6554cf..e8ab2da 100644 --- a/vendor/src/github.com/stellar/go/clients/horizon/client.go +++ b/vendor/src/github.com/stellar/go/clients/horizon/client.go @@ -54,7 +54,7 @@ func (c *Client) LoadAccountOffers(accountID string, params ...interface{}) (off case Cursor: query.Add("cursor", string(param)) default: - err = fmt.Errorf("Undefined parameter: %+v", param) + err = fmt.Errorf("Undefined parameter (%T): %+v", param, param) return } } @@ -114,7 +114,7 @@ func (c *Client) SequenceForAccount( } // LoadOrderBook loads order book for given selling and buying assets. -func (c *Client) LoadOrderBook(selling Asset, buying Asset) (orderBook OrderBookSummary, err error) { +func (c *Client) LoadOrderBook(selling Asset, buying Asset, params ...interface{}) (orderBook OrderBookSummary, err error) { query := url.Values{} query.Add("selling_asset_type", selling.Type) @@ -125,6 +125,16 @@ func (c *Client) LoadOrderBook(selling Asset, buying Asset) (orderBook OrderBook query.Add("buying_asset_code", buying.Code) query.Add("buying_asset_issuer", buying.Issuer) + for _, param := range params { + switch param := param.(type) { + case Limit: + query.Add("limit", strconv.Itoa(int(param))) + default: + err = fmt.Errorf("Undefined parameter (%T): %+v", param, param) + return + } + } + resp, err := c.HTTP.Get(c.URL + "/order_book?" + query.Encode()) if err != nil { return @@ -226,7 +236,8 @@ func (c *Client) stream(ctx context.Context, baseURL string, cursor *Cursor, han return nil } -// StreamLedgers streams incoming ledgers. Use context.WithCancel to stop streaming. +// StreamLedgers streams incoming ledgers. Use context.WithCancel to stop streaming or +// context.Background() if you want to stream indefinitely. func (c *Client) StreamLedgers(ctx context.Context, cursor *Cursor, handler LedgerHandler) (err error) { url := fmt.Sprintf("%s/ledgers", c.URL) return c.stream(ctx, url, cursor, func(data []byte) error { @@ -240,7 +251,8 @@ func (c *Client) StreamLedgers(ctx context.Context, cursor *Cursor, handler Ledg }) } -// StreamPayments streams incoming payments. Use context.WithCancel to stop streaming. +// StreamPayments streams incoming payments. Use context.WithCancel to stop streaming or +// context.Background() if you want to stream indefinitely. func (c *Client) StreamPayments(ctx context.Context, accountID string, cursor *Cursor, handler PaymentHandler) (err error) { url := fmt.Sprintf("%s/accounts/%s/payments", c.URL, accountID) return c.stream(ctx, url, cursor, func(data []byte) error { @@ -254,7 +266,8 @@ func (c *Client) StreamPayments(ctx context.Context, accountID string, cursor *C }) } -// StreamTransactions streams incoming transactions. Use context.WithCancel to stop streaming. +// StreamTransactions streams incoming transactions. Use context.WithCancel to stop streaming or +// context.Background() if you want to stream indefinitely. func (c *Client) StreamTransactions(ctx context.Context, accountID string, cursor *Cursor, handler TransactionHandler) (err error) { url := fmt.Sprintf("%s/accounts/%s/transactions", c.URL, accountID) return c.stream(ctx, url, cursor, func(data []byte) error { @@ -283,7 +296,6 @@ func (c *Client) SubmitTransaction( err = decodeResponse(resp, &response) if err != nil { - err = errors.Wrap(err, "decode response failed") return } diff --git a/vendor/src/github.com/stellar/go/clients/horizon/error.go b/vendor/src/github.com/stellar/go/clients/horizon/error.go index 660e86b..743552e 100644 --- a/vendor/src/github.com/stellar/go/clients/horizon/error.go +++ b/vendor/src/github.com/stellar/go/clients/horizon/error.go @@ -37,9 +37,6 @@ func (herr *Error) Envelope() (*xdr.TransactionEnvelope, error) { // ResultCodes extracts a result code summary from the error, if possible. func (herr *Error) ResultCodes() (*TransactionResultCodes, error) { - if herr.Problem.Type != "transaction_failed" { - return nil, ErrTransactionNotFailed - } raw, ok := herr.Problem.Extras["result_codes"] if !ok { diff --git a/vendor/src/github.com/stellar/go/clients/horizon/error_test.go b/vendor/src/github.com/stellar/go/clients/horizon/error_test.go index 4d9f121..749ac53 100644 --- a/vendor/src/github.com/stellar/go/clients/horizon/error_test.go +++ b/vendor/src/github.com/stellar/go/clients/horizon/error_test.go @@ -27,12 +27,6 @@ func TestError_ResultCodes(t *testing.T) { } } - // sad path: !transaction_failed - herr.Problem.Type = "transaction_success" - herr.Problem.Extras = make(map[string]json.RawMessage) - _, err = herr.ResultCodes() - assert.Equal(t, ErrTransactionNotFailed, err) - // sad path: missing result_codes extra herr.Problem.Type = "transaction_failed" herr.Problem.Extras = make(map[string]json.RawMessage) diff --git a/vendor/src/github.com/stellar/go/clients/horizon/main.go b/vendor/src/github.com/stellar/go/clients/horizon/main.go index e0346fe..996dfb0 100644 --- a/vendor/src/github.com/stellar/go/clients/horizon/main.go +++ b/vendor/src/github.com/stellar/go/clients/horizon/main.go @@ -46,10 +46,6 @@ const ( ) var ( - // ErrTransactionNotFailed is the error returned from a call to ResultCodes() - // against a `Problem` value that is not of type "transaction_failed". - ErrTransactionNotFailed = errors.New("cannot get result codes from transaction that did not fail") - // ErrResultCodesNotPopulated is the error returned from a call to // ResultCodes() against a `Problem` value that doesn't have the // "result_codes" extra field populated when it is expected to be. @@ -74,7 +70,7 @@ type ClientInterface interface { LoadAccount(accountID string) (Account, error) LoadAccountOffers(accountID string, params ...interface{}) (offers OffersPage, err error) LoadMemo(p *Payment) error - LoadOrderBook(selling Asset, buying Asset) (orderBook OrderBookSummary, err error) + LoadOrderBook(selling Asset, buying Asset, params ...interface{}) (orderBook OrderBookSummary, err error) StreamLedgers(ctx context.Context, cursor *Cursor, handler LedgerHandler) error StreamPayments(ctx context.Context, accountID string, cursor *Cursor, handler PaymentHandler) error StreamTransactions(ctx context.Context, accountID string, cursor *Cursor, handler TransactionHandler) error diff --git a/vendor/src/github.com/stellar/go/clients/horizon/main_test.go b/vendor/src/github.com/stellar/go/clients/horizon/main_test.go index d34dbe6..48209c4 100644 --- a/vendor/src/github.com/stellar/go/clients/horizon/main_test.go +++ b/vendor/src/github.com/stellar/go/clients/horizon/main_test.go @@ -12,7 +12,7 @@ import ( "golang.org/x/net/context" ) -func ExampleStream() { +func ExampleClient_StreamLedgers() { client := DefaultPublicNetClient cursor := Cursor("now") @@ -33,6 +33,29 @@ func ExampleStream() { } } +func ExampleClient_SubmitTransaction() { + client := DefaultPublicNetClient + transactionEnvelopeXdr := "AAAAABSxFjMo7qcQlJBlrZQypSqYsHA5hHaYxk5hFXwiehh6AAAAZAAIdakAAABZAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAFLEWMyjupxCUkGWtlDKlKpiwcDmEdpjGTmEVfCJ6GHoAAAAAAAAAAACYloAAAAAAAAAAASJ6GHoAAABAp0FnKOQ9lJPDXPTh/a91xoZ8BaznwLj59sdDGK94eGzCOk7oetw7Yw50yOSZg2mqXAST6Agc9Ao/f5T9gB+GCw==" + + response, err := client.SubmitTransaction(transactionEnvelopeXdr) + if err != nil { + fmt.Println(err) + herr, isHorizonError := err.(*Error) + if isHorizonError { + resultCodes, err := herr.ResultCodes() + if err != nil { + fmt.Println("failed to extract result codes from horizon response") + return + } + fmt.Println(resultCodes) + } + return + } + + fmt.Println("Success") + fmt.Println(response) +} + func TestHorizon(t *testing.T) { RegisterFailHandler(Fail) RunSpecs(t, "Package: github.com/stellar/go/horizon") @@ -189,13 +212,39 @@ var _ = Describe("Horizon", func() { Expect(orderBook.Asks[0].PriceR.D).To(Equal(int32(803984111))) }) + It("success response with limit", func() { + hmock.On( + "GET", + "https://localhost/order_book?buying_asset_code=DEMO&buying_asset_issuer=GBAMBOOZDWZPVV52RCLJQYMQNXOBLOXWNQAY2IF2FREV2WL46DBCH3BE&buying_asset_type=credit_alphanum4&limit=20&selling_asset_code=&selling_asset_issuer=&selling_asset_type=native", + ).ReturnString(200, orderBookResponse) + + orderBook, err := client.LoadOrderBook(Asset{Type: "native"}, Asset{"credit_alphanum4", "DEMO", "GBAMBOOZDWZPVV52RCLJQYMQNXOBLOXWNQAY2IF2FREV2WL46DBCH3BE"}, Limit(20)) + Expect(err).To(BeNil()) + Expect(orderBook.Selling.Type).To(Equal("native")) + Expect(orderBook.Buying.Type).To(Equal("credit_alphanum4")) + Expect(orderBook.Buying.Code).To(Equal("DEMO")) + Expect(orderBook.Buying.Issuer).To(Equal("GBAMBOOZDWZPVV52RCLJQYMQNXOBLOXWNQAY2IF2FREV2WL46DBCH3BE")) + + Expect(len(orderBook.Bids)).To(Equal(20)) + Expect(orderBook.Bids[0].Price).To(Equal("0.0024937")) + Expect(orderBook.Bids[0].Amount).To(Equal("0.4363975")) + Expect(orderBook.Bids[0].PriceR.N).To(Equal(int32(24937))) + Expect(orderBook.Bids[0].PriceR.D).To(Equal(int32(10000000))) + + Expect(len(orderBook.Asks)).To(Equal(20)) + Expect(orderBook.Asks[0].Price).To(Equal("0.0025093")) + Expect(orderBook.Asks[0].Amount).To(Equal("1248.9663104")) + Expect(orderBook.Asks[0].PriceR.N).To(Equal(int32(2017413))) + Expect(orderBook.Asks[0].PriceR.D).To(Equal(int32(803984111))) + }) + It("failure response", func() { hmock.On( "GET", - "https://localhost/order_book?buying_asset_code=DEMO&buying_asset_issuer=GBAMBOOZDWZPVV52RCLJQYMQNXOBLOXWNQAY2IF2FREV2WL46DBCH3BE&buying_asset_type=credit_alphanum4&selling_asset_code=&selling_asset_issuer=&selling_asset_type=native", + "https://localhost/order_book?buying_asset_code=DEMO&buying_asset_issuer=GBAMBOOZDWZPVV52RCLJQYMQNXOBLOXWNQAY2IF2FREV2WL46DBCH3BE&buying_asset_type=credit_alphanum4&limit=20&selling_asset_code=&selling_asset_issuer=&selling_asset_type=native", ).ReturnString(404, notFoundResponse) - _, err := client.LoadOrderBook(Asset{Type: "native"}, Asset{"credit_alphanum4", "DEMO", "GBAMBOOZDWZPVV52RCLJQYMQNXOBLOXWNQAY2IF2FREV2WL46DBCH3BE"}) + _, err := client.LoadOrderBook(Asset{Type: "native"}, Asset{"credit_alphanum4", "DEMO", "GBAMBOOZDWZPVV52RCLJQYMQNXOBLOXWNQAY2IF2FREV2WL46DBCH3BE"}, Limit(20)) Expect(err).NotTo(BeNil()) Expect(err.Error()).To(HavePrefix("Horizon error")) horizonError, ok := err.(*Error) @@ -206,10 +255,10 @@ var _ = Describe("Horizon", func() { It("connection error", func() { hmock.On( "GET", - "https://localhost/order_book?buying_asset_code=DEMO&buying_asset_issuer=GBAMBOOZDWZPVV52RCLJQYMQNXOBLOXWNQAY2IF2FREV2WL46DBCH3BE&buying_asset_type=credit_alphanum4&selling_asset_code=&selling_asset_issuer=&selling_asset_type=native", + "https://localhost/order_book?buying_asset_code=DEMO&buying_asset_issuer=GBAMBOOZDWZPVV52RCLJQYMQNXOBLOXWNQAY2IF2FREV2WL46DBCH3BE&buying_asset_type=credit_alphanum4&limit=20&selling_asset_code=&selling_asset_issuer=&selling_asset_type=native", ).ReturnError("http.Client error") - _, err := client.LoadOrderBook(Asset{Type: "native"}, Asset{"credit_alphanum4", "DEMO", "GBAMBOOZDWZPVV52RCLJQYMQNXOBLOXWNQAY2IF2FREV2WL46DBCH3BE"}) + _, err := client.LoadOrderBook(Asset{Type: "native"}, Asset{"credit_alphanum4", "DEMO", "GBAMBOOZDWZPVV52RCLJQYMQNXOBLOXWNQAY2IF2FREV2WL46DBCH3BE"}, Limit(20)) Expect(err).NotTo(BeNil()) Expect(err.Error()).To(ContainSubstring("http.Client error")) _, ok := err.(*Error) diff --git a/vendor/src/github.com/stellar/go/clients/horizon/mocks.go b/vendor/src/github.com/stellar/go/clients/horizon/mocks.go index 972cde8..93e657d 100644 --- a/vendor/src/github.com/stellar/go/clients/horizon/mocks.go +++ b/vendor/src/github.com/stellar/go/clients/horizon/mocks.go @@ -38,8 +38,8 @@ func (m *MockClient) LoadMemo(p *Payment) error { } // LoadOrderBook is a mocking a method -func (m *MockClient) LoadOrderBook(selling Asset, buying Asset) (orderBook OrderBookSummary, err error) { - a := m.Called(selling, buying) +func (m *MockClient) LoadOrderBook(selling Asset, buying Asset, params ...interface{}) (orderBook OrderBookSummary, err error) { + a := m.Called(selling, buying, params) return a.Get(0).(OrderBookSummary), a.Error(1) } diff --git a/vendor/src/github.com/stellar/go/clients/stellartoml/main_test.go b/vendor/src/github.com/stellar/go/clients/stellartoml/main_test.go index c9fe80d..b5ba21e 100644 --- a/vendor/src/github.com/stellar/go/clients/stellartoml/main_test.go +++ b/vendor/src/github.com/stellar/go/clients/stellartoml/main_test.go @@ -3,7 +3,7 @@ package stellartoml import "log" // ExampleGetTOML gets the stellar.toml file for coins.asia -func ExampleGetTOML() { +func ExampleClient_GetStellarToml() { _, err := DefaultClient.GetStellarToml("coins.asia") if err != nil { log.Fatal(err) diff --git a/vendor/src/github.com/stellar/go/docs/reference/examples.md b/vendor/src/github.com/stellar/go/docs/reference/examples.md index 662b786..9df07c2 100644 --- a/vendor/src/github.com/stellar/go/docs/reference/examples.md +++ b/vendor/src/github.com/stellar/go/docs/reference/examples.md @@ -27,14 +27,15 @@ func main() { to := "GA3A7AD7ZR4PIYW6A52SP6IK7UISESICPMMZVJGNUTVIZ5OUYOPBTK6X" tx := b.Transaction( - b.SourceAccount{from}, - b.AutoSequence{horizon.DefaultTestNetClient}, - b.Payment( - b.Destination{to}, - b.NativeAmount{"0.1"}, - ), - ) - + b.SourceAccount{from}, + b.TestNetwork, + b.AutoSequence{horizon.DefaultTestNetClient}, + b.Payment( + b.Destination{to}, + b.NativeAmount{"0.1"}, + ), + ) + txe := tx.Sign(from) txeB64, err := txe.Base64() diff --git a/vendor/src/github.com/stellar/go/glide.lock b/vendor/src/github.com/stellar/go/glide.lock index 1a02857..08f1dc0 100644 --- a/vendor/src/github.com/stellar/go/glide.lock +++ b/vendor/src/github.com/stellar/go/glide.lock @@ -1,17 +1,22 @@ -hash: 805bc7accf5266e737482b8bff09ee04c554d404e3daecb1d84e7086277dbe70 -updated: 2016-11-10T15:52:55.78656724-08:00 +hash: d706a6b1bff95df93546374ff7ef6ecf0b11cf60d054c67569f46df10e477cf3 +updated: 2017-10-05T09:54:13.340235406-07:00 imports: +- name: bitbucket.org/ww/goautoneg + version: 75cd24fc2f2c2a2088577d12123ddee5f54e0675 - name: github.com/agl/ed25519 version: 278e1ec8e8a6e017cd07577924d6766039146ced + repo: https://github.com/agl/ed25519 subpackages: - edwards25519 - name: github.com/ajg/form version: 523a5da1a92f01b01f840b61689c0340a0243532 + repo: https://github.com/ajg/form - name: github.com/asaskevich/govalidator version: f0666aa80d7dcf75bd564ae8717b952d74a29d6a repo: https://github.com/stellar/govalidator.git - name: github.com/aws/aws-sdk-go - version: d3e3f4281292478e8095bea047e2297e005152da + version: 8649d278323ebf6bd20c9cd56ecb152b1c617375 + repo: https://github.com/aws/aws-sdk-go subpackages: - aws - aws/awserr @@ -25,10 +30,10 @@ imports: - aws/credentials/stscreds - aws/defaults - aws/ec2metadata + - aws/endpoints - aws/request - aws/session - aws/signer/v4 - - private/endpoints - private/protocol - private/protocol/query - private/protocol/query/queryutil @@ -40,74 +45,136 @@ imports: - service/sts - name: github.com/BurntSushi/toml version: 99064174e013895bbd9b025c31100bd1d9b590ca + repo: https://github.com/BurntSushi/toml +- name: github.com/codegangsta/negroni + version: c7477ad8e330bef55bf1ebe300cf8aa67c492d1b + repo: https://github.com/codegangsta/negroni - name: github.com/davecgh/go-spew - version: 6d212800a42e8ab5c146b8ace3490ee17e5225f9 + version: 5215b55f46b2b919f50a1df0eaa5886afe4e3b3d + repo: https://github.com/davecgh/go-spew subpackages: - spew - name: github.com/fatih/structs - version: dc3312cb1a4513a366c4c9e622ad55c32df12ed3 -- name: github.com/gavv/gojsondiff - version: 4e533b0f28d6258fa9153191e70acb312e497243 + version: a720dfa8df582c51dee1b36feabb906bde1588bd + repo: https://github.com/fatih/structs +- name: github.com/garyburd/redigo + version: 8b1d80a45a732e6d95e22dcc2e067312c664936c + repo: https://github.com/garyburd/redigo subpackages: - - formatter + - internal + - redis - name: github.com/gavv/monotime - version: 259cd7b345f5aa080eff16f21d7866ef7dea9528 + version: 47d58efa69556a936a3c15eb2ed42706d968ab01 + repo: https://github.com/gavv/monotime - name: github.com/getsentry/raven-go version: c9d3cc542ad199f62c0264286be537f9bce6063c + repo: https://github.com/getsentry/raven-go +- name: github.com/go-errors/errors + version: a41850380601eeb43f4350f7d17c6bbd8944aaf8 + repo: https://github.com/go-errors/errors - name: github.com/go-ini/ini - version: 6e4869b434bd001f6983749881c7ead3545887d8 + version: 6f66b0e091edb3c7b380f7c4f0f884274d550b67 + repo: https://github.com/go-ini/ini - name: github.com/go-sql-driver/mysql - version: 0b58b37b664c21f3010e836f1b931e1d0b0b0685 + version: 2e00b5cd70399450106cec6431c2e2ce3cae5034 + repo: https://github.com/go-sql-driver/mysql +- name: github.com/goji/context + version: cc5d214cefa9d50beb2cdbf2344eb8c4bd14709b + repo: https://github.com/goji/context +- name: github.com/golang/groupcache + version: 604ed5785183e59ae2789449d89e73f3a2a77987 + repo: https://github.com/golang/groupcache + subpackages: + - lru - name: github.com/google/go-querystring version: 9235644dd9e52eeae6fa48efd539fdc351a0af53 + repo: https://github.com/google/go-querystring subpackages: - query +- name: github.com/guregu/null + version: 79c5bd36b615db4c06132321189f579c8a5fca98 + repo: https://github.com/guregu/null - name: github.com/howeyc/gopass - version: f5387c492211eb133053880d23dfae62aa14123d + version: bf9dde6d0d2c004a008c27aaee91170c786f6db8 + repo: https://github.com/howeyc/gopass - name: github.com/imkira/go-interpol - version: b9781c93ae51c8b4fc3af1b1426909721af0a624 + version: 5accad8134979a6ac504d456a6c7f1c53da237ca + repo: https://github.com/imkira/go-interpol - name: github.com/inconshreveable/mousetrap version: 76626ae9c91c4f2a10f34cad8ce83ea42c93bb75 + repo: https://github.com/inconshreveable/mousetrap - name: github.com/jarcoal/httpmock - version: 145b10d659265440f062c31ea15326166bae56ee + version: 4442edb3db31196622da56482fd8d0fa375fba4d + repo: https://github.com/jarcoal/httpmock - name: github.com/jmespath/go-jmespath version: bd40a432e4c76585ef6b72d3fd96fb9b6dc7b68d + repo: https://github.com/jmespath/go-jmespath - name: github.com/jmoiron/sqlx version: 05b81a7d5d38058e42148dc01f17daf4acba4640 + repo: https://github.com/jmoiron/sqlx subpackages: - reflectx +- name: github.com/jtolds/gls + version: 9a4a02dbe491bef4bab3c24fd9f3087d6c4c6690 + repo: https://github.com/jtolds/gls - name: github.com/klauspost/compress - version: 08fe86a420401e830c24114bdf9f1ba91331407a + version: e3b7981a12dd3cab49afa1d3a50e715846f23732 + repo: https://github.com/klauspost/compress subpackages: - flate - gzip - zlib - name: github.com/klauspost/cpuid version: 09cded8978dc9e80714c4d85b0322337b0a1e5e0 + repo: https://github.com/klauspost/cpuid - name: github.com/klauspost/crc32 - version: 19b0b332c9e4516a6370a0456e6182c3b5036720 + version: cb6bfca970f6908083f26f39a79009d608efd5cd + repo: https://github.com/klauspost/crc32 +- name: github.com/kr/pretty + version: e6ac2fc51e89a3249e82157fa0bb7a18ef9dd5bb + repo: https://github.com/kr/pretty +- name: github.com/kr/text + version: e373e137fafd8abd480af49182dea0513914adb4 + repo: https://github.com/kr/text - name: github.com/lann/builder - version: f22ce00fd9394014049dad11c244859432bd6820 -- name: github.com/lann/ps - version: 62de8c46ede02a7675c4c79c84883eb164cb71e3 + version: c603884a2c1fcf331c71940f3227a8111d29f3ba + repo: https://github.com/lann/builder - name: github.com/lib/pq version: 50761b0867bd1d9d069276790bcd4a3bccf2324a + repo: https://github.com/lib/pq subpackages: - oid +- name: github.com/magiconair/properties + version: 359442d561ca28acd0fe503aa9f075f505bc9ed0 + repo: https://github.com/magiconair/properties - name: github.com/manucorporat/sse version: ee05b128a739a0fb76c7ebd3ae4810c1de808d6d + repo: https://github.com/manucorporat/sse - name: github.com/Masterminds/squirrel - version: cb03830e33a9c086b3f9051548a81d299e190939 + version: 20f192218cf52a73397fa2df45bdda720f3e47c8 + repo: https://github.com/Masterminds/squirrel - name: github.com/mattn/go-sqlite3 - version: 4b0af852c17164dce48e6754e3094c55192e4934 + version: efea85cb9a06f1d4f661649f6beb5fd04597a366 + repo: https://github.com/mattn/go-sqlite3 +- name: github.com/mitchellh/mapstructure + version: 2caf8efc93669b6c43e0441cdc6aed17546c96f3 + repo: https://github.com/mitchellh/mapstructure +- name: github.com/mndrix/ps + version: 33ddf69629c1bcea76b04f4a4e9e00e4cce82eb6 + repo: https://github.com/mndrix/ps - name: github.com/moul/http2curl - version: b1479103caacaa39319f75e7f57fc545287fca0d + version: 4e24498b31dba4683efb9d35c1c8a91e2eda28c8 + repo: https://github.com/moul/http2curl +- name: github.com/nullstyle/go-codegen + version: 97a55a0a5d715d65c940bd07b8b719c082db26d6 + repo: https://github.com/nullstyle/go-codegen - name: github.com/nullstyle/go-xdr - version: 3c3a95da20cd1e19018bf098dce9c3ce358848df + version: a875e7c9fa2388ce03279f6b5ba1c2ccd1f9e917 + repo: https://github.com/nullstyle/go-xdr subpackages: - xdr3 - name: github.com/onsi/ginkgo - version: c07a44f02cf4a895e331f4f473c0943ee116c668 + version: 11459a886d9cd66b319dac7ef1e917ee221372c9 subpackages: - config - extensions/table @@ -117,6 +184,7 @@ imports: - internal/leafnodes - internal/remote - internal/spec + - internal/spec_iterator - internal/specrunner - internal/suite - internal/testingtproxy @@ -127,7 +195,7 @@ imports: - reporters/stenographer/support/go-isatty - types - name: github.com/onsi/gomega - version: ff4bc6b6f9f5affa66635cd04d31d2a7ee21ffd6 + version: dcabb60a477c2b6f456df65037cb6708210fbb02 subpackages: - format - internal/assertion @@ -142,75 +210,153 @@ imports: - types - name: github.com/pkg/errors version: 645ef00459ed84a119197bfb8d8205042c6df63d + repo: https://github.com/pkg/errors - name: github.com/pmezard/go-difflib - version: d8ed2627bdf02c080bf22230dbb337003b7aba2d + version: 792786c7400a136282c1664665ae0a8db921c6c2 + repo: https://github.com/pmezard/go-difflib subpackages: - difflib +- name: github.com/PuerkitoBio/throttled + version: 1c8297c643b774435df8df65f7502b37d014fb6b + repo: https://github.com/PuerkitoBio/throttled + subpackages: + - store +- name: github.com/rcrowley/go-metrics + version: a5cfc242a56ba7fa70b785f678d6214837bf93b9 + repo: https://github.com/rcrowley/go-metrics - name: github.com/rs/cors version: a62a804a8a009876ca59105f7899938a1349f4b3 + repo: https://github.com/rs/cors - name: github.com/rs/xhandler version: ed27b6fd65218132ee50cd95f38474a3d8a2cd12 +- name: github.com/rubenv/sql-migrate + version: 53184e1edfb4f9655b0fa8dd2c23e7763f452bda + repo: https://github.com/rubenv/sql-migrate + subpackages: + - sqlparse +- name: github.com/sebest/xff + version: 7a36e3a787b5228de26fbfec89d5060701010da0 + repo: https://github.com/sebest/xff - name: github.com/segmentio/go-loggly version: e78f6971ebca5835614673e2f5f6a47ca5f13501 + repo: https://github.com/segmentio/go-loggly - name: github.com/sergi/go-diff - version: 97b2266dfe4bd4ea1b81a463322f04f8b724801e + version: 83532ca1c1caa393179c677b6facf48e61f4ca5d + repo: https://github.com/sergi/go-diff subpackages: - diffmatchpatch -- name: github.com/Sirupsen/logrus - version: 3ec0642a7fb6488f65b06f9040adc67e3990296a +- name: github.com/sirupsen/logrus + version: 68cec9f21fbf3ea8d8f98c044bc6ce05f17b267a + repo: https://github.com/sirupsen/logrus subpackages: - hooks/test +- name: github.com/smartystreets/assertions + version: 22fd8e1982688f4ff04e8e9ec6feae2c2459460d + repo: https://github.com/smartystreets/assertions + subpackages: + - internal/oglematchers +- name: github.com/smartystreets/goconvey + version: ab7641a0db76b0e88765294b1377b026ec01f26b + repo: https://github.com/smartystreets/goconvey + subpackages: + - convey + - convey/gotest + - convey/reporting +- name: github.com/spf13/cast + version: 4d07383ffe94b5e5a6fa3af9211374a4507a0184 + repo: https://github.com/spf13/cast - name: github.com/spf13/cobra version: 9c28e4bbd74e5c3ed7aacbc552b2cab7cfdfe744 + repo: https://github.com/spf13/cobra +- name: github.com/spf13/jwalterweatherman + version: 3d60171a64319ef63c78bd45bd60e6eab1e75f8b + repo: https://github.com/spf13/jwalterweatherman - name: github.com/spf13/pflag version: 4bd69631f4750a9df249ee317f4536e02cbc3c65 + repo: https://github.com/spf13/pflag +- name: github.com/spf13/viper + version: db7ff930a189b98d602179d9001d33345f42b8c7 + repo: https://github.com/spf13/viper - name: github.com/stretchr/objx - version: cbeaeb16a013161a98496fad62933b1d21786672 + version: 1a9d0bb9f541897e62256577b352fdbc1fb4fd94 + repo: https://github.com/stretchr/objx - name: github.com/stretchr/testify version: 976c720a22c8eb4eb6a0b4348ad85ad12491a506 + repo: https://github.com/stretchr/testify subpackages: - - mock - assert + - mock - require +- name: github.com/tylerb/graceful + version: 7116c7a8115899e80197cd9e0b97998c0f97ed8e + repo: https://github.com/tylerb/graceful - name: github.com/valyala/bytebufferpool version: e746df99fe4a3986f4d4f79e13c1e0117ce9c2f7 + repo: https://github.com/valyala/bytebufferpool - name: github.com/valyala/fasthttp version: 0a7f0a797cd66b89588d0a7fdd670b706579a621 + repo: https://github.com/valyala/fasthttp subpackages: - fasthttputil + - stackless - name: github.com/visionmedia/go-debug version: ff4a55a20a86994118644bbddc6a216da193cc13 + repo: https://github.com/visionmedia/go-debug - name: github.com/xeipuuv/gojsonpointer version: e0fe6f68307607d540ed8eac07a342c33fa1b54a + repo: https://github.com/xeipuuv/gojsonpointer - name: github.com/xeipuuv/gojsonreference version: e02fc20de94c78484cd5ffb007f8af96be030a45 + repo: https://github.com/xeipuuv/gojsonreference - name: github.com/xeipuuv/gojsonschema - version: 4f624f6197547606054e042e7903db103585e151 + version: f06f290571ce81ab347174c6f7ad2e1865af41a7 + repo: https://github.com/xeipuuv/gojsonschema - name: github.com/y0ssar1an/q - version: 2db904a96a52a061170a3c0d8db384d388315af6 + version: 392ac3089fcf8c70ebbe85f4c29778b7ebe27a9f - name: github.com/yalp/jsonpath version: 31a79c7593bb93eb10b163650d4a3e6ca190e4dc + repo: https://github.com/yalp/jsonpath - name: github.com/yudai/gojsondiff version: 7b1b7adf999dab73a6eb02669c3d82dbb27a3dd6 + repo: https://github.com/yudai/gojsondiff + subpackages: + - formatter - name: github.com/yudai/golcs version: d1c525dea8ce39ea9a783d33cf08932305373f2c + repo: https://github.com/yudai/golcs +- name: github.com/zenazn/goji + version: bf843a174a08e846246b8945f8a9a853d84a256a + repo: https://github.com/zenazn/goji + subpackages: + - bind + - graceful + - web + - web/middleware + - web/mutil - name: goji.io version: e355964ac565b94cf0fc7f218346626529125086 + repo: https://github.com/goji/goji subpackages: - - pat - internal + - pat - pattern - name: golang.org/x/crypto - version: 7682e7e3945130cf3cde089834664f68afdd1523 + version: 1f22c0103821b9390939b6776727195525381532 + repo: https://go.googlesource.com/crypto subpackages: - ssh/terminal - name: golang.org/x/net version: 9bc2a3340c92c17a20edcd0080e93851ed58f5d5 + repo: https://go.googlesource.com/net subpackages: - context + - html + - html/atom + - html/charset - http2 - http2/hpack - lex/httplex + - netutil - publicsuffix - name: golang.org/x/sys version: 1f5e250e1174502017917628cc48b52fdc25b531 @@ -218,13 +364,32 @@ imports: - unix - name: gopkg.in/gavv/httpexpect.v1 version: 40724cf1e4a08b670b14a02deff693a91f3aa9a0 + repo: https://gopkg.in/gavv/httpexpect.v1 +- name: gopkg.in/gorp.v1 + version: c87af80f3cc5036b55b83d77171e156791085e2e + repo: https://gopkg.in/gorp.v1 - name: gopkg.in/tylerb/graceful.v1 version: 50a48b6e73fcc75b45e22c05b79629a67c79e938 -testImports: -- name: github.com/kr/pretty - version: cfb55aafdaf3ec08f0db22699ab822c50091b1c4 - repo: https://github.com/kr/pretty -- name: github.com/kr/text - version: 7cafcd837844e784b526369c9bce262804aebc60 + repo: https://gopkg.in/tylerb/graceful.v1 - name: gopkg.in/yaml.v2 - version: a5b47d31c556af34a302ce5d659e6fea44d90de0 + version: 7ad95dd0798a40da1ccdff6dff35fd177b5edf40 + repo: https://gopkg.in/yaml.v2 +testImports: +- name: golang.org/x/text + version: 1cbadb444a806fd9430d14ad08967ed91da4fa0a + subpackages: + - encoding + - encoding/charmap + - encoding/htmlindex + - encoding/internal + - encoding/internal/identifier + - encoding/japanese + - encoding/korean + - encoding/simplifiedchinese + - encoding/traditionalchinese + - encoding/unicode + - internal/tag + - internal/utf8internal + - language + - runes + - transform diff --git a/vendor/src/github.com/stellar/go/glide.yaml b/vendor/src/github.com/stellar/go/glide.yaml index 6656534..9967c60 100644 --- a/vendor/src/github.com/stellar/go/glide.yaml +++ b/vendor/src/github.com/stellar/go/glide.yaml @@ -1,38 +1,288 @@ package: github.com/stellar/go import: - package: github.com/howeyc/gopass + version: bf9dde6d0d2c004a008c27aaee91170c786f6db8 + repo: https://github.com/howeyc/gopass - package: github.com/agl/ed25519 + version: 278e1ec8e8a6e017cd07577924d6766039146ced + repo: https://github.com/agl/ed25519 - package: github.com/nullstyle/go-xdr + version: a875e7c9fa2388ce03279f6b5ba1c2ccd1f9e917 + repo: https://github.com/nullstyle/go-xdr + subpackages: + - xdr3 - package: github.com/pkg/errors version: ^0.7.0 + repo: https://github.com/pkg/errors - package: github.com/getsentry/raven-go + version: c9d3cc542ad199f62c0264286be537f9bce6063c + repo: https://github.com/getsentry/raven-go - package: github.com/segmentio/go-loggly + version: e78f6971ebca5835614673e2f5f6a47ca5f13501 + repo: https://github.com/segmentio/go-loggly - package: golang.org/x/net + version: 9bc2a3340c92c17a20edcd0080e93851ed58f5d5 + repo: https://go.googlesource.com/net subpackages: - context - http2 + - netutil + - publicsuffix - package: github.com/stretchr/testify + version: 976c720a22c8eb4eb6a0b4348ad85ad12491a506 + repo: https://github.com/stretchr/testify + subpackages: + - assert + - require - package: github.com/jmoiron/sqlx + version: 05b81a7d5d38058e42148dc01f17daf4acba4640 + repo: https://github.com/jmoiron/sqlx - package: github.com/lib/pq + version: 50761b0867bd1d9d069276790bcd4a3bccf2324a + repo: https://github.com/lib/pq - package: github.com/go-sql-driver/mysql + version: 2e00b5cd70399450106cec6431c2e2ce3cae5034 + repo: https://github.com/go-sql-driver/mysql - package: github.com/mattn/go-sqlite3 + version: efea85cb9a06f1d4f661649f6beb5fd04597a366 + repo: https://github.com/mattn/go-sqlite3 - package: gopkg.in/tylerb/graceful.v1 + version: 50a48b6e73fcc75b45e22c05b79629a67c79e938 + repo: https://gopkg.in/tylerb/graceful.v1 - package: github.com/rs/cors + version: a62a804a8a009876ca59105f7899938a1349f4b3 + repo: https://github.com/rs/cors - package: goji.io + version: e355964ac565b94cf0fc7f218346626529125086 + repo: https://github.com/goji/goji - package: github.com/asaskevich/govalidator repo: https://github.com/stellar/govalidator.git - package: github.com/BurntSushi/toml + version: 99064174e013895bbd9b025c31100bd1d9b590ca + repo: https://github.com/BurntSushi/toml - package: github.com/spf13/cobra + version: 9c28e4bbd74e5c3ed7aacbc552b2cab7cfdfe744 + repo: https://github.com/spf13/cobra - package: gopkg.in/gavv/httpexpect.v1 + version: 40724cf1e4a08b670b14a02deff693a91f3aa9a0 + repo: https://gopkg.in/gavv/httpexpect.v1 - package: github.com/onsi/ginkgo version: master - package: github.com/onsi/gomega version: master - package: github.com/aws/aws-sdk-go + version: 8649d278323ebf6bd20c9cd56ecb152b1c617375 + repo: https://github.com/aws/aws-sdk-go subpackages: - aws + - private/protocol + - private/waiter + - service/s3 + - service/sts - package: github.com/jarcoal/httpmock + version: 4442edb3db31196622da56482fd8d0fa375fba4d + repo: https://github.com/jarcoal/httpmock - package: github.com/manucorporat/sse + version: ee05b128a739a0fb76c7ebd3ae4810c1de808d6d + repo: https://github.com/manucorporat/sse - package: github.com/y0ssar1an/q version: ^1.0.0 - package: github.com/Masterminds/squirrel + version: 20f192218cf52a73397fa2df45bdda720f3e47c8 + repo: https://github.com/Masterminds/squirrel +- package: github.com/PuerkitoBio/throttled + version: 1c8297c643b774435df8df65f7502b37d014fb6b + repo: https://github.com/PuerkitoBio/throttled + subpackages: + - store +- package: github.com/sirupsen/logrus + version: 68cec9f21fbf3ea8d8f98c044bc6ce05f17b267a + repo: https://github.com/sirupsen/logrus + subpackages: + - hooks/test +- package: github.com/ajg/form + version: 523a5da1a92f01b01f840b61689c0340a0243532 + repo: https://github.com/ajg/form +- package: github.com/codegangsta/negroni + version: c7477ad8e330bef55bf1ebe300cf8aa67c492d1b + repo: https://github.com/codegangsta/negroni +- package: github.com/davecgh/go-spew + version: 5215b55f46b2b919f50a1df0eaa5886afe4e3b3d + repo: https://github.com/davecgh/go-spew + subpackages: + - spew +- package: github.com/fatih/structs + version: a720dfa8df582c51dee1b36feabb906bde1588bd + repo: https://github.com/fatih/structs +- package: github.com/garyburd/redigo + version: 8b1d80a45a732e6d95e22dcc2e067312c664936c + repo: https://github.com/garyburd/redigo + subpackages: + - internal + - redis +- package: github.com/gavv/monotime + version: 47d58efa69556a936a3c15eb2ed42706d968ab01 + repo: https://github.com/gavv/monotime +- package: github.com/go-errors/errors + version: a41850380601eeb43f4350f7d17c6bbd8944aaf8 + repo: https://github.com/go-errors/errors +- package: github.com/go-ini/ini + version: 6f66b0e091edb3c7b380f7c4f0f884274d550b67 + repo: https://github.com/go-ini/ini +- package: github.com/goji/context + version: cc5d214cefa9d50beb2cdbf2344eb8c4bd14709b + repo: https://github.com/goji/context +- package: github.com/golang/groupcache + version: 604ed5785183e59ae2789449d89e73f3a2a77987 + repo: https://github.com/golang/groupcache + subpackages: + - lru +- package: github.com/google/go-querystring + version: 9235644dd9e52eeae6fa48efd539fdc351a0af53 + repo: https://github.com/google/go-querystring + subpackages: + - query +- package: github.com/guregu/null + version: 79c5bd36b615db4c06132321189f579c8a5fca98 + repo: https://github.com/guregu/null +- package: github.com/imkira/go-interpol + version: 5accad8134979a6ac504d456a6c7f1c53da237ca + repo: https://github.com/imkira/go-interpol +- package: github.com/inconshreveable/mousetrap + version: 76626ae9c91c4f2a10f34cad8ce83ea42c93bb75 + repo: https://github.com/inconshreveable/mousetrap +- package: github.com/jmespath/go-jmespath + version: bd40a432e4c76585ef6b72d3fd96fb9b6dc7b68d + repo: https://github.com/jmespath/go-jmespath +- package: github.com/jtolds/gls + version: 9a4a02dbe491bef4bab3c24fd9f3087d6c4c6690 + repo: https://github.com/jtolds/gls +- package: github.com/klauspost/compress + version: e3b7981a12dd3cab49afa1d3a50e715846f23732 + repo: https://github.com/klauspost/compress + subpackages: + - flate + - gzip + - zlib +- package: github.com/klauspost/cpuid + version: 09cded8978dc9e80714c4d85b0322337b0a1e5e0 + repo: https://github.com/klauspost/cpuid +- package: github.com/klauspost/crc32 + version: cb6bfca970f6908083f26f39a79009d608efd5cd + repo: https://github.com/klauspost/crc32 +- package: github.com/kr/pretty + version: e6ac2fc51e89a3249e82157fa0bb7a18ef9dd5bb + repo: https://github.com/kr/pretty +- package: github.com/kr/text + version: e373e137fafd8abd480af49182dea0513914adb4 + repo: https://github.com/kr/text +- package: github.com/lann/builder + version: c603884a2c1fcf331c71940f3227a8111d29f3ba + repo: https://github.com/lann/builder +- package: github.com/magiconair/properties + version: 359442d561ca28acd0fe503aa9f075f505bc9ed0 + repo: https://github.com/magiconair/properties +- package: github.com/mitchellh/mapstructure + version: 2caf8efc93669b6c43e0441cdc6aed17546c96f3 + repo: https://github.com/mitchellh/mapstructure +- package: github.com/mndrix/ps + version: 33ddf69629c1bcea76b04f4a4e9e00e4cce82eb6 + repo: https://github.com/mndrix/ps +- package: github.com/moul/http2curl + version: 4e24498b31dba4683efb9d35c1c8a91e2eda28c8 + repo: https://github.com/moul/http2curl +- package: github.com/nullstyle/go-codegen + version: 97a55a0a5d715d65c940bd07b8b719c082db26d6 + repo: https://github.com/nullstyle/go-codegen +- package: github.com/pmezard/go-difflib + version: 792786c7400a136282c1664665ae0a8db921c6c2 + repo: https://github.com/pmezard/go-difflib + subpackages: + - difflib +- package: github.com/rcrowley/go-metrics + version: a5cfc242a56ba7fa70b785f678d6214837bf93b9 + repo: https://github.com/rcrowley/go-metrics +- package: github.com/rubenv/sql-migrate + version: 53184e1edfb4f9655b0fa8dd2c23e7763f452bda + repo: https://github.com/rubenv/sql-migrate +- package: github.com/sebest/xff + version: 7a36e3a787b5228de26fbfec89d5060701010da0 + repo: https://github.com/sebest/xff +- package: github.com/sergi/go-diff + version: 83532ca1c1caa393179c677b6facf48e61f4ca5d + repo: https://github.com/sergi/go-diff + subpackages: + - diffmatchpatch +- package: github.com/smartystreets/assertions + version: 22fd8e1982688f4ff04e8e9ec6feae2c2459460d + repo: https://github.com/smartystreets/assertions +- package: github.com/smartystreets/goconvey + version: ab7641a0db76b0e88765294b1377b026ec01f26b + repo: https://github.com/smartystreets/goconvey + subpackages: + - convey +- package: github.com/spf13/cast + version: 4d07383ffe94b5e5a6fa3af9211374a4507a0184 + repo: https://github.com/spf13/cast +- package: github.com/spf13/jwalterweatherman + version: 3d60171a64319ef63c78bd45bd60e6eab1e75f8b + repo: https://github.com/spf13/jwalterweatherman +- package: github.com/spf13/pflag + version: 4bd69631f4750a9df249ee317f4536e02cbc3c65 + repo: https://github.com/spf13/pflag +- package: github.com/spf13/viper + version: db7ff930a189b98d602179d9001d33345f42b8c7 + repo: https://github.com/spf13/viper +- package: github.com/stretchr/objx + version: 1a9d0bb9f541897e62256577b352fdbc1fb4fd94 + repo: https://github.com/stretchr/objx +- package: github.com/tylerb/graceful + version: 7116c7a8115899e80197cd9e0b97998c0f97ed8e + repo: https://github.com/tylerb/graceful +- package: github.com/valyala/bytebufferpool + version: e746df99fe4a3986f4d4f79e13c1e0117ce9c2f7 + repo: https://github.com/valyala/bytebufferpool +- package: github.com/valyala/fasthttp + version: 0a7f0a797cd66b89588d0a7fdd670b706579a621 + repo: https://github.com/valyala/fasthttp +- package: github.com/visionmedia/go-debug + version: ff4a55a20a86994118644bbddc6a216da193cc13 + repo: https://github.com/visionmedia/go-debug +- package: github.com/xeipuuv/gojsonpointer + version: e0fe6f68307607d540ed8eac07a342c33fa1b54a + repo: https://github.com/xeipuuv/gojsonpointer +- package: github.com/xeipuuv/gojsonreference + version: e02fc20de94c78484cd5ffb007f8af96be030a45 + repo: https://github.com/xeipuuv/gojsonreference +- package: github.com/xeipuuv/gojsonschema + version: f06f290571ce81ab347174c6f7ad2e1865af41a7 + repo: https://github.com/xeipuuv/gojsonschema +- package: github.com/yalp/jsonpath + version: 31a79c7593bb93eb10b163650d4a3e6ca190e4dc + repo: https://github.com/yalp/jsonpath +- package: github.com/yudai/gojsondiff + version: 7b1b7adf999dab73a6eb02669c3d82dbb27a3dd6 + repo: https://github.com/yudai/gojsondiff +- package: github.com/yudai/golcs + version: d1c525dea8ce39ea9a783d33cf08932305373f2c + repo: https://github.com/yudai/golcs +- package: github.com/zenazn/goji + version: bf843a174a08e846246b8945f8a9a853d84a256a + repo: https://github.com/zenazn/goji + subpackages: + - bind + - graceful + - web + - web/middleware + - web/mutil +- package: golang.org/x/crypto + version: 1f22c0103821b9390939b6776727195525381532 + repo: https://go.googlesource.com/crypto + subpackages: + - ssh/terminal +- package: gopkg.in/gorp.v1 + version: c87af80f3cc5036b55b83d77171e156791085e2e + repo: https://gopkg.in/gorp.v1 +- package: gopkg.in/yaml.v2 + version: 7ad95dd0798a40da1ccdff6dff35fd177b5edf40 + repo: https://gopkg.in/yaml.v2 diff --git a/vendor/src/github.com/stellar/go/handlers/federation/handler.go b/vendor/src/github.com/stellar/go/handlers/federation/handler.go index c0aafed..97d1822 100644 --- a/vendor/src/github.com/stellar/go/handlers/federation/handler.go +++ b/vendor/src/github.com/stellar/go/handlers/federation/handler.go @@ -155,6 +155,11 @@ func (h *Handler) writeJSON( } func (h *Handler) writeError(w http.ResponseWriter, err error) { - log.Error(err) - http.Error(w, "An internal error occurred", http.StatusInternalServerError) + switch err := errors.Cause(err).(type) { + case ErrorResponse: + h.writeJSON(w, err, err.StatusCode) + default: + log.Error(err) + http.Error(w, "An internal error occurred", http.StatusInternalServerError) + } } diff --git a/vendor/src/github.com/stellar/go/handlers/federation/main.go b/vendor/src/github.com/stellar/go/handlers/federation/main.go index aa8a747..ea120e6 100644 --- a/vendor/src/github.com/stellar/go/handlers/federation/main.go +++ b/vendor/src/github.com/stellar/go/handlers/federation/main.go @@ -29,10 +29,16 @@ type Driver interface { } // ErrorResponse represents the JSON response sent to a client when the request -// triggered an error. +// triggered an error. FederationDriver methods can return this as an error and +// it will be passed to end user. type ErrorResponse struct { - Code string `json:"code"` - Message string `json:"message"` + StatusCode int `json:"-"` + Code string `json:"code"` + Message string `json:"message"` +} + +func (response ErrorResponse) Error() string { + return response.Message } // Handler represents an http handler that can service http requests that diff --git a/vendor/src/github.com/stellar/go/keypair/main.go b/vendor/src/github.com/stellar/go/keypair/main.go index 3529e27..7f95cfa 100644 --- a/vendor/src/github.com/stellar/go/keypair/main.go +++ b/vendor/src/github.com/stellar/go/keypair/main.go @@ -90,7 +90,7 @@ func Parse(addressOrSeed string) (KP, error) { return nil, err } -// FromRawSeed creates a new keypair from the provided raw ED25519 seed:w +// FromRawSeed creates a new keypair from the provided raw ED25519 seed func FromRawSeed(rawSeed [32]byte) (*Full, error) { seed, err := strkey.Encode(strkey.VersionByteSeed, rawSeed[:]) if err != nil { diff --git a/vendor/src/github.com/stellar/go/protocols/compliance/main.go b/vendor/src/github.com/stellar/go/protocols/compliance/main.go index 79b88ea..7f205b2 100644 --- a/vendor/src/github.com/stellar/go/protocols/compliance/main.go +++ b/vendor/src/github.com/stellar/go/protocols/compliance/main.go @@ -10,6 +10,8 @@ const ( AuthStatusPending AuthStatus = "pending" // AuthStatusDenied is returned when authentication was denied AuthStatusDenied AuthStatus = "denied" + // AuthStatusError is returned when there was an error + AuthStatusError AuthStatus = "error" ) // AuthRequest represents auth request sent to compliance server @@ -34,14 +36,16 @@ type AuthData struct { // AuthResponse represents response sent by auth server type AuthResponse struct { - // If this FI is willing to share AML information or not. {ok, denied, pending} + // If this FI is willing to share AML information or not. {ok, denied, pending, error} InfoStatus AuthStatus `json:"info_status"` - // If this FI is willing to accept this transaction. {ok, denied, pending} + // If this FI is willing to accept this transaction. {ok, denied, pending, error} TxStatus AuthStatus `json:"tx_status"` // (only present if info_status is ok) JSON of the recipient's AML information. in the Stellar attachment convention DestInfo string `json:"dest_info,omitempty"` // (only present if info_status or tx_status is pending) Estimated number of seconds till the sender can check back for a change in status. The sender should just resubmit this request after the given number of seconds. Pending int `json:"pending,omitempty"` + // (only present if info_status or tx_status is error) + Error string `json:"error,omitempty"` } // Attachment represents preimage object of compliance protocol in diff --git a/vendor/src/github.com/stellar/go/services/compliance/CHANGELOG.md b/vendor/src/github.com/stellar/go/services/compliance/CHANGELOG.md new file mode 100644 index 0000000..e69de29 diff --git a/vendor/src/github.com/stellar/go/services/compliance/README.md b/vendor/src/github.com/stellar/go/services/compliance/README.md new file mode 100644 index 0000000..e69de29 diff --git a/vendor/src/github.com/stellar/go/services/horizon/CHANGELOG.md b/vendor/src/github.com/stellar/go/services/horizon/CHANGELOG.md new file mode 100644 index 0000000..a457fb8 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/CHANGELOG.md @@ -0,0 +1,210 @@ +# Changelog + +All notable changes to this project will be documented in this +file. This project adheres to [Semantic Versioning](http://semver.org/). + +As this project is pre 1.0, breaking changes may happen for minor version +bumps. A breaking change will get clearly notified in this log. + +## [Unreleased] + +### Added + +- Operation and payment resources were changed to add a `transaction_hash` property. + +## [v0.11.0] - 2017-08-15 + +### Bug fixes + +- The ingestion system can now properly import envelopes that contain signatures that are zero-length strings. +- BREAKING CHANGE: specifying a `limit` of `0` now triggers an error instead of interpreting the value to mean "use the default limit". +- Requests that ask for more records than the maximum page size now trigger a bad request error, instead of an internal server error. +- Upstream bug fixes to xdr decoding from `github.com/stellar/go`. + +### Changed + +- BREAKING CHANGE: The payments endpoint now includes `account_merge` operations in the response. +- "Finished Request" log lines now include additional fields: `streaming`, `path`, `ip`, and `host`. +- Responses now include a `Content-Disposition: inline` header. + + +## [v0.10.1] - 2017-03-29 + +### Fixed +- Ingestion was fixed to protect against text memos that contain null bytes. While memos with null bytes are legal in stellar-core, PostgreSQL does not support such values in string columns. Horizon now strips those null bytes to fix the issue. + +## [v0.10.0] - 2017-03-20 + +This is a fix release for v0.9.0 and v0.9.1 + + +### Added +- Added `horizon db clear` helper command to clear previously ingested history. + +### Fixed + +- Embedded sql files for the database schema have been fixed agsain to be compatible with postgres 9.5. The configuration setting `row_security` has been removed from the dumped files. + +## [v0.9.1] - 2017-03-20 + +### Fixed + +- Embedded sql files for the database schema have been fixed to be compatible with postgres 9.5. The configuration setting `idle_in_transaction_session_timeout` has been removed from the dumped files. + +## [v0.9.0] - 2017-03-20 + +This release was retracted due to a bug discovered after release. + +### Added +- Horizon now exposes the stellar network protocol in several places: It shows the currently reported protocol version (as returned by the stellar-core `info` command) on the root endpoint, and it reports the protocol version of each ledger resource. +- Trade resources now include a `created_at` timestamp. + +### Fixed + +- BREAKING CHANGE: The reingestion process has been updated. Prior versions of horizon would enter a failed state when a gap between the imported history and the stellar-core database formed or when a previously imported ledger was no longer found in the stellar-core database. This usually occurs when running stellar-core with the `CATCHUP_RECENT` config option. With these changed, horizon will automatically trim "abandonded" ledgers: ledgers that are older than the core elder ledger. + + +## [v0.8.0] - 2017-02-07 + +### Added + +- account signer resources now contain a type specifying the type of the signer: `ed25519_public_key`, `sha256_hash`, and `preauth_tx` are the present values used for the respective signer types. + +### Changed + +- The `public_key` field on signer effects and an account's signer summary has been renamed to `key` to reflect that new signer types are not necessarily specifying a public key anymore. + +### Deprecated + +- The `public_key` field on account signers and signer effects are deprecated + +## [v0.7.1] - 2017-01-12 + +### Bug fixes + +- Trade resources now include "bought_amount" and "sold_amount" fields when being viewed through the "Orderbook Trades" endpoint. +- Fixes #322: orderbook summaries with over 20 bids now return the correct price levels, starting with the closest to the spread. + +## [v0.7.0] - 2017-01-10 + +### Added + +- The account resource now includes links to the account's trades and data values. + +### Bug fixes + +- Fixes paging_token attribute of account resource +- Fixes race conditions in friendbot +- Fixes #202: Add price and price_r to "manage_offer" operation resources +- Fixes #318: order books for the native currency now filters correctly. + +## [v0.6.2] - 2016-08-18 + +### Bug fixes + +- Fixes streaming (SSE) requests, which were broken in v0.6.0 + +## [v0.6.1] - 2016-07-26 + +### Bug fixes + +- Fixed an issue where accounts were not being properly returned when the history database had no record of the account. + + +## [v0.6.0] - 2016-07-20 + +This release contains the initial implementation of the "Abridged History System". It allows a horizon system to be operated without complete knowledge of the ledger's history. With this release, horizon will start ingesting data from the earliest point known to the connected stellar-core instance, rather than ledger 1 as it behaved previously. See the admin guide section titled "Ingesting stellar-core data" for more details. + +### Added + +- *Elder* ledgers have been introduced: An elder ledger is the oldest ledger known to a db. For example, the `core_elder_ledger` attribute on the root endpoint refers to the oldest known ledger stored in the connected stellar-core database. +- Added the `history-retention-count` command line flag, used to specify the amount of historical data to keep in the history db. This is expressed as a number of ledgers, for example a value of `362880` would retain roughly 6 weeks of data given an average of 10 seconds per ledger. +- Added the `history-stale-threshold` command line flag to enable stale history protection. See the admin guide for more info. +- Horizon now reports the last ledger ingested to stellar-core using the `setcursor` command. +- Requests for data that precede the recorded window of history stored by horizon will receive a `410 Gone` http response to allow software to differentiate from other "not found" situations. +- The new `db reap` command will manually trigger the deletion of unretained historical data +- A background process on the server now deletes unretained historical once per hour. + +### Changed + +- BREAKING: When making a streaming request, a normal error response will be returned if an error occurs prior to sending the first event. Additionally, the initial http response and streaming preamble will not be sent until the first event is available. +- BREAKING: `horizon_latest_ledger` has renamed to `history_latest_ledger` +- Horizon no longer needs to begin the ingestion of historical data from ledger sequence 1. +- Rows in the `history_accounts` table are no longer identified using the "Total Order ID" that other historical records use, but are rather using a simple auto-incremented id. + +### Removed + +- The `/accounts` endpoint, which lets a consumer page through the entire set of accounts in the ledger, has been removed. The change from complete to an abridged history in horizon makes the endpoint mostly useless, and after consulting with the community we have decided to remove the endpoint. + +## [v0.5.1] - 2016-04-28 + +### Added + + - ManageData operation data is now rendered in the various operation end points. + +### Bug fixes + +- Transaction memos that contain utf-8 are now properly rendered in browsers by properly setting the charset of the http response. + +## [v0.5.0] - 2016-04-22 + +### Added + +- BREAKING: Horizon can now import data from stellar-core without the aid of the horizon-importer project. This process is now known as "ingestion", and is enabled by either setting the `INGEST` environment variable to "true" or specifying "--ingest" on the launch arguments for the horizon process. Only one process should be running in this mode for any given horizon database. +- Add `horizon db init`, used to install the latest bundled schema for the horizon database. +- Add `horizon db reingest` command, used to update outdated or corrupt horizon database information. Admins may now use `horizon db reingest outdated` to migrate any old data when updated horizon. +- Added `network_passphrase` field to root resource. +- Added `fee_meta_xdr` field to transaction resource. + +### Bug fixes +- Corrected casing on the "offers" link of an account resource. + +## [v0.4.0] - 2016-02-19 + +### Added + +- Add `horizon db migrate [up|down|redo]` commands, used for installing schema migrations. This work is in service of porting the horizon-importer project directly to horizon. +- Add support for TLS: specify `--tls-cert` and `--tls-key` to enable. +- Add support for HTTP/2. To enable, use TLS. + +### Removed + +- BREAKING CHANGE: Removed support for building on go versions lower than 1.6 + +## [v0.3.0] - 2016-01-29 + +### Changes + +- Fixed incorrect `source_amount` attribute on pathfinding responses. +- BREAKING CHANGE: Sequence numbers are now encoded as strings in JSON responses. +- Fixed broken link in the successful response to a posted transaction + +## [v0.2.0] - 2015-12-01 +### Changes + +- BREAKING CHANGE: the `address` field of a signer in the account resource has been renamed to `public_key`. +- BREAKING CHANGE: the `address` on the account resource has been renamed to `account_id`. + +## [v0.1.1] - 2015-12-01 + +### Added +- Github releases are created from tagged travis builds automatically + +[Unreleased]: https://github.com/stellar/horizon/compare/v0.11.0...master +[v0.11.0]: https://github.com/stellar/horizon/compare/v0.10.1...v0.11.0 +[v0.10.1]: https://github.com/stellar/horizon/compare/v0.10.0...v0.10.1 +[v0.10.0]: https://github.com/stellar/horizon/compare/v0.9.1...v0.10.0 +[v0.9.1]: https://github.com/stellar/horizon/compare/v0.9.0...v0.9.1 +[v0.9.0]: https://github.com/stellar/horizon/compare/v0.8.0...v0.9.0 +[v0.8.0]: https://github.com/stellar/horizon/compare/v0.7.1...v0.8.0 +[v0.7.1]: https://github.com/stellar/horizon/compare/v0.7.0...v0.7.1 +[v0.7.0]: https://github.com/stellar/horizon/compare/v0.6.2...v0.7.0 +[v0.6.2]: https://github.com/stellar/horizon/compare/v0.6.1...v0.6.2 +[v0.6.1]: https://github.com/stellar/horizon/compare/v0.6.0...v0.6.1 +[v0.6.0]: https://github.com/stellar/horizon/compare/v0.5.1...v0.6.0 +[v0.5.1]: https://github.com/stellar/horizon/compare/v0.5.0...v0.5.1 +[v0.5.0]: https://github.com/stellar/horizon/compare/v0.4.0...v0.5.0 +[v0.4.0]: https://github.com/stellar/horizon/compare/v0.3.0...v0.4.0 +[v0.3.0]: https://github.com/stellar/horizon/compare/v0.2.0...v0.3.0 +[v0.2.0]: https://github.com/stellar/horizon/compare/v0.1.1...v0.2.0 +[v0.1.1]: https://github.com/stellar/horizon/compare/v0.1.0...v0.1.1 diff --git a/vendor/src/github.com/stellar/go/services/horizon/CONTRIBUTING.md b/vendor/src/github.com/stellar/go/services/horizon/CONTRIBUTING.md new file mode 100644 index 0000000..26ba4d1 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/CONTRIBUTING.md @@ -0,0 +1,6 @@ +# How to contribute + +Please read the [Contribution Guide](https://github.com/stellar/docs/blob/master/CONTRIBUTING.md). + +Then please [sign the Contributor License Agreement](https://docs.google.com/forms/d/1g7EF6PERciwn7zfmfke5Sir2n10yddGGSXyZsq98tVY/viewform?usp=send_form). + diff --git a/vendor/src/github.com/stellar/go/services/horizon/README.md b/vendor/src/github.com/stellar/go/services/horizon/README.md new file mode 100644 index 0000000..0799704 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/README.md @@ -0,0 +1,50 @@ +# Horizon +[![Build Status](https://travis-ci.org/stellar/horizon.svg?branch=master)](https://travis-ci.org/stellar/horizon) + +Horizon is the [client facing API](/docs) server for the Stellar ecosystem. It acts as the interface between stellar-core and applications that want to access the Stellar network. It allows you to submit transactions to the network, check the status of accounts, subscribe to event streams, etc. See [an overview of the Stellar ecosystem](https://www.stellar.org/developers/guides/get-started/) for more details. + +## Downloading the server +[Prebuilt binaries](https://github.com/stellar/go/releases) of horizon are available on the +[releases page](https://github.com/stellar/go/releases). + +See [the old releases page](https://github.com/stellar/horizon/releases) for prior releases + +| Platform | Binary file name | +|----------------|------------------------------------------------------------------------------------------| +| Mac OSX 64 bit | [horizon-darwin-amd64](https://github.com/stellar/go/releases/download/v0.11.0/horizon-v0.11.0-darwin-amd64.tar.gz) | +| Linux 64 bit | [horizon-linux-amd64](https://github.com/stellar/go/releases/download/v0.11.0/horizon-v0.11.0-linux-amd64.tar.gz) | +| Windows 64 bit | [horizon-windows-amd64.exe](https://github.com/stellar/go/releases/download/v0.11.0/horizon-v0.11.0-windows-amd64.zip) | + +Alternatively, you can [build](#building) the binary yourself. + +## Dependencies + +Horizon requires go 1.6 or higher to build. See (https://golang.org/doc/install) for installation instructions. + +## Building + +[glide](https://glide.sh/) is used for building horizon. + +Given you have a running golang installation, you can install this with: + +```bash +curl https://glide.sh/get | sh +``` + +Next, you must download the source for packages that horizon depends upon. From within the project directory, run: + +```bash +glide install +``` + +Then, simply run `go install github.com/stellar/go/services/horizon`. After successful +completion, you should find `horizon` is present in your `$GOPATH/bin` directory. + +More detailed intructions and [admin guide](internal/docs/reference/admin.md). + +## Developing Horizon + +See [the development guide](internal/docs/developing.md). + +## Contributing +Please see the [CONTRIBUTING.md](./CONTRIBUTING.md) for details on how to contribute to this project. diff --git a/vendor/src/github.com/stellar/go/services/horizon/db.go b/vendor/src/github.com/stellar/go/services/horizon/db.go new file mode 100644 index 0000000..1fdba77 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/db.go @@ -0,0 +1,212 @@ +package main + +import ( + "database/sql" + "fmt" + "log" + "os" + "strconv" + "time" + + "github.com/spf13/cobra" + "github.com/spf13/viper" + "github.com/stellar/go/support/db" + "github.com/stellar/go/services/horizon/internal/db2/schema" + "github.com/stellar/go/services/horizon/internal/ingest" + hlog "github.com/stellar/go/services/horizon/internal/log" +) + +var dbCmd = &cobra.Command{ + Use: "db [command]", + Short: "commands to manage horizon's postgres db", +} + +var dbClearCmd = &cobra.Command{ + Use: "clear", + Short: "clears all imported historical data", + Run: func(cmd *cobra.Command, args []string) { + initConfig() + hlog.DefaultLogger.Logger.Level = config.LogLevel + + i := ingestSystem() + err := i.ClearAll() + if err != nil { + hlog.Error(err) + os.Exit(1) + } + }, +} + +var dbInitCmd = &cobra.Command{ + Use: "init", + Short: "install schema", + Long: "init initializes the postgres database used by horizon.", + Run: func(cmd *cobra.Command, args []string) { + db, err := db.Open("postgres", viper.GetString("db-url")) + if err != nil { + hlog.Error(err) + os.Exit(1) + } + + err = schema.Init(db) + if err != nil { + hlog.Error(err) + os.Exit(1) + } + }, +} + +var dbMigrateCmd = &cobra.Command{ + Use: "migrate [up|down|redo] [COUNT]", + Short: "migrate schema", + Long: "performs a schema migration command", + Run: func(cmd *cobra.Command, args []string) { + + // Allow invokations with 1 or 2 args. All other args counts are erroneous. + if len(args) < 1 || len(args) > 2 { + cmd.Usage() + os.Exit(1) + } + + dir := schema.MigrateDir(args[0]) + count := 0 + + // If a second arg is present, parse it to an int and use it as the count + // argument to the migration call. + if len(args) == 2 { + var err error + count, err = strconv.Atoi(args[1]) + if err != nil { + log.Println(err) + cmd.Usage() + os.Exit(1) + } + } + + db, err := sql.Open("postgres", viper.GetString("db-url")) + if err != nil { + log.Fatal(err) + } + + _, err = schema.Migrate(db, dir, count) + if err != nil { + log.Fatal(err) + } + }, +} + +var dbReapCmd = &cobra.Command{ + Use: "reap", + Short: "reaps (i.e. removes) any reapable history data", + Long: "reap removes any historical data that is earlier than the configured retention cutoff", + Run: func(cmd *cobra.Command, args []string) { + initApp(cmd, args) + + err := app.DeleteUnretainedHistory() + if err != nil { + log.Fatal(err) + } + }, +} + +var dbReingestCmd = &cobra.Command{ + Use: "reingest", + Short: "imports all data", + Long: "reingest runs the ingestion pipeline over every ledger", + Run: func(cmd *cobra.Command, args []string) { + initConfig() + hlog.DefaultLogger.Logger.Level = config.LogLevel + + i := ingestSystem() + i.SkipCursorUpdate = true + logStatus := func(stage string) { + count := i.Metrics.IngestLedgerTimer.Count() + rate := i.Metrics.IngestLedgerTimer.RateMean() + loadMean := time.Duration(i.Metrics.LoadLedgerTimer.Mean()) + ingestMean := time.Duration(i.Metrics.IngestLedgerTimer.Mean()) + clearMean := time.Duration(i.Metrics.IngestLedgerTimer.Mean()) + hlog. + WithField("count", count). + WithField("rate", rate). + WithField("means", fmt.Sprintf("load: %s clear: %s ingest: %s", loadMean, clearMean, ingestMean)). + Infof("reingest: %s", stage) + } + + done := make(chan error, 1) + + // run ingestion in separate goroutine + go func() { + _, err := reingest(i, args) + done <- err + logStatus("complete") + }() + + // output metrics + metrics := time.Tick(2 * time.Second) + for { + select { + case <-metrics: + logStatus("status") + + case err := <-done: + if err != nil { + log.Fatal(err) + } + os.Exit(0) + } + } + }, +} + +func init() { + dbCmd.AddCommand(dbInitCmd) + dbCmd.AddCommand(dbClearCmd) + dbCmd.AddCommand(dbMigrateCmd) + dbCmd.AddCommand(dbReapCmd) + dbCmd.AddCommand(dbReingestCmd) +} + +func ingestSystem() *ingest.System { + hdb, err := db.Open("postgres", config.DatabaseURL) + if err != nil { + log.Fatal(err) + } + + cdb, err := db.Open("postgres", config.StellarCoreDatabaseURL) + if err != nil { + log.Fatal(err) + } + + passphrase := viper.GetString("network-passphrase") + if passphrase == "" { + log.Fatal("network-passphrase is blank: reingestion requires manually setting passphrase") + } + + i := ingest.New(passphrase, config.StellarCoreURL, cdb, hdb) + return i +} + +func reingest(i *ingest.System, args []string) (int, error) { + if len(args) == 0 { + count, err := i.ReingestAll() + return count, err + } + + if len(args) == 1 && args[0] == "outdated" { + count, err := i.ReingestOutdated() + return count, err + } + + for idx, arg := range args { + seq, err := strconv.Atoi(arg) + if err != nil { + return idx, err + } + + err = i.ReingestSingle(int32(seq)) + if err != nil { + return idx, err + } + } + return len(args), nil +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/Action.tmpl b/vendor/src/github.com/stellar/go/services/horizon/internal/Action.tmpl new file mode 100644 index 0000000..057889c --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/Action.tmpl @@ -0,0 +1,9 @@ +{{ .AddImport "net/http" }} +{{ .AddImport "github.com/zenazn/goji/web" }} + +// ServeHTTPC is a method for web.Handler +func (action {{ .Name }}) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request) { + ap := &action.Action + ap.Prepare(c, w, r) + ap.Execute(&action) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/action.go b/vendor/src/github.com/stellar/go/services/horizon/internal/action.go new file mode 100644 index 0000000..264f9b9 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/action.go @@ -0,0 +1,147 @@ +package horizon + +import ( + "net/http" + "net/url" + "strings" + + "github.com/stellar/go/services/horizon/internal/actions" + "github.com/stellar/go/services/horizon/internal/db2/core" + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stellar/go/services/horizon/internal/httpx" + "github.com/stellar/go/services/horizon/internal/ledger" + "github.com/stellar/go/services/horizon/internal/log" + "github.com/stellar/go/services/horizon/internal/render/problem" + "github.com/stellar/go/services/horizon/internal/toid" + "github.com/zenazn/goji/web" +) + +// Action is the "base type" for all actions in horizon. It provides +// structs that embed it with access to the App struct. +// +// Additionally, this type is a trigger for go-codegen and causes +// the file at Action.tmpl to be instantiated for each struct that +// embeds Action. +type Action struct { + actions.Base + App *App + Log *log.Entry + + hq *history.Q + cq *core.Q +} + +// CoreQ provides access to queries that access the stellar core database. +func (action *Action) CoreQ() *core.Q { + if action.cq == nil { + action.cq = &core.Q{Session: action.App.CoreSession(action.Ctx)} + } + + return action.cq +} + +// HistoryQ provides access to queries that access the history portion of +// horizon's database. +func (action *Action) HistoryQ() *history.Q { + if action.hq == nil { + action.hq = &history.Q{Session: action.App.HorizonSession(action.Ctx)} + } + + return action.hq +} + +// Prepare sets the action's App field based upon the goji context +func (action *Action) Prepare(c web.C, w http.ResponseWriter, r *http.Request) { + base := &action.Base + base.Prepare(c, w, r) + action.App = action.GojiCtx.Env["app"].(*App) + + if action.Ctx != nil { + action.Log = log.Ctx(action.Ctx) + } else { + action.Log = log.DefaultLogger + } +} + +// ValidateCursorAsDefault ensures that the cursor parameter is valid in the way +// it is normally used, i.e. it is either the string "now" or a string of +// numerals that can be parsed as an int64. +func (action *Action) ValidateCursorAsDefault() { + if action.Err != nil { + return + } + + if action.GetString(actions.ParamCursor) == "now" { + return + } + + action.GetInt64(actions.ParamCursor) +} + +// ValidateCursorWithinHistory compares the requested page of data against the +// ledger state of the history database. In the event that the cursor is +// guaranteed to return no results, we return a 410 GONE http response. +func (action *Action) ValidateCursorWithinHistory() { + if action.Err != nil { + return + } + + pq := action.GetPageQuery() + if action.Err != nil { + return + } + + // an ascending query should never return a gone response: An ascending query + // prior to known history should return results at the beginning of history, + // and an ascending query beyond the end of history should not error out but + // rather return an empty page (allowing code that tracks the procession of + // some resource more easily). + if pq.Order != "desc" { + return + } + + var cursor int64 + var err error + + // HACK: checking for the presence of "-" to see whether we should use + // CursorInt64 or CursorInt64Pair is gross. + if strings.Contains(pq.Cursor, "-") { + cursor, _, err = pq.CursorInt64Pair("-") + } else { + cursor, err = pq.CursorInt64() + } + + if err != nil { + action.Err = err + return + } + + elder := toid.New(ledger.CurrentState().HistoryElder, 0, 0) + + if cursor <= elder.ToInt64() { + action.Err = &problem.BeforeHistory + } +} + +// EnsureHistoryFreshness halts processing and raises +func (action *Action) EnsureHistoryFreshness() { + if action.Err != nil { + return + } + + if action.App.IsHistoryStale() { + ls := ledger.CurrentState() + err := problem.StaleHistory + err.Extras = map[string]interface{}{ + "history_latest_ledger": ls.HistoryLatest, + "core_latest_ledger": ls.CoreLatest, + } + action.Err = &err + } +} + +// BaseURL returns the base url for this requestion, defined as a url containing +// the Host and Scheme portions of the request uri. +func (action *Action) BaseURL() *url.URL { + return httpx.BaseURL(action.Ctx) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions/base.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions/base.go new file mode 100644 index 0000000..3ac5905 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions/base.go @@ -0,0 +1,137 @@ +package actions + +import ( + "net/http" + + gctx "github.com/goji/context" + + "github.com/stellar/go/services/horizon/internal/render" + "github.com/stellar/go/services/horizon/internal/render/problem" + "github.com/stellar/go/services/horizon/internal/render/sse" + "github.com/zenazn/goji/web" + "golang.org/x/net/context" +) + +// Base is a helper struct you can use as part of a custom action via +// composition. +// +// TODO: example usage +type Base struct { + Ctx context.Context + GojiCtx web.C + W http.ResponseWriter + R *http.Request + Err error + + isSetup bool +} + +// Prepare established the common attributes that get used in nearly every +// action. "Child" actions may override this method to extend action, but it +// is advised you also call this implementation to maintain behavior. +func (base *Base) Prepare(c web.C, w http.ResponseWriter, r *http.Request) { + base.Ctx = gctx.FromC(c) + base.GojiCtx = c + base.W = w + base.R = r +} + +// Execute trigger content negottion and the actual execution of one of the +// action's handlers. +func (base *Base) Execute(action interface{}) { + contentType := render.Negotiate(base.Ctx, base.R) + + switch contentType { + case render.MimeHal, render.MimeJSON: + action, ok := action.(JSON) + + if !ok { + goto NotAcceptable + } + + action.JSON() + + if base.Err != nil { + problem.Render(base.Ctx, base.W, base.Err) + return + } + + case render.MimeEventStream: + action, ok := action.(SSE) + if !ok { + goto NotAcceptable + } + + stream := sse.NewStream(base.Ctx, base.W, base.R) + + for { + action.SSE(stream) + + if base.Err != nil { + // in the case that we haven't yet sent an event, is also means we + // havent sent the preamble, meaning we should simply return the normal + // error. + if stream.SentCount() == 0 { + problem.Render(base.Ctx, base.W, base.Err) + return + } + + stream.Err(base.Err) + } + + if stream.IsDone() { + return + } + + select { + case <-base.Ctx.Done(): + return + case <-sse.Pumped(): + //no-op, continue onto the next iteration + } + } + case render.MimeRaw: + action, ok := action.(Raw) + + if !ok { + goto NotAcceptable + } + + action.Raw() + + if base.Err != nil { + problem.Render(base.Ctx, base.W, base.Err) + return + } + default: + goto NotAcceptable + } + return + +NotAcceptable: + problem.Render(base.Ctx, base.W, problem.NotAcceptable) + return +} + +// Do executes the provided func iff there is no current error for the action. +// Provides a nicer way to invoke a set of steps that each may set `action.Err` +// during execution +func (base *Base) Do(fns ...func()) { + for _, fn := range fns { + if base.Err != nil { + return + } + + fn() + } +} + +// Setup runs the provided funcs if and only if no call to Setup() has been +// made previously on this action. +func (base *Base) Setup(fns ...func()) { + if base.isSetup { + return + } + base.Do(fns...) + base.isSetup = true +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions/doc.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions/doc.go new file mode 100644 index 0000000..7f33dbe --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions/doc.go @@ -0,0 +1,4 @@ +// Package actions provides the infrastructure for defining and executing +// actions (code that is triggered in response to an client request) on horizon. +// At present it allows for defining actions that can respond using JSON or SSE. +package actions diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions/helpers.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions/helpers.go new file mode 100644 index 0000000..c706708 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions/helpers.go @@ -0,0 +1,360 @@ +package actions + +import ( + "mime" + "net/url" + "strconv" + + "github.com/stellar/go/amount" + "github.com/stellar/go/strkey" + "github.com/stellar/go/support/errors" + "github.com/stellar/go/xdr" + "github.com/stellar/go/services/horizon/internal/assets" + "github.com/stellar/go/services/horizon/internal/db2" + "github.com/stellar/go/services/horizon/internal/ledger" + "github.com/stellar/go/services/horizon/internal/render/problem" + "github.com/stellar/go/services/horizon/internal/toid" +) + +const ( + // ParamCursor is a query string param name + ParamCursor = "cursor" + // ParamOrder is a query string param name + ParamOrder = "order" + // ParamLimit is a query string param name + ParamLimit = "limit" +) + +// GetCursor retrieves a string from either the URLParams, form or query string. +// This method uses the priority (URLParams, Form, Query). +func (base *Base) GetCursor(name string) string { + if base.Err != nil { + return "" + } + + cursor := base.GetString(name) + + if cursor == "now" { + tid := toid.AfterLedger(ledger.CurrentState().HistoryLatest) + cursor = tid.String() + } + + if lei := base.R.Header.Get("Last-Event-ID"); lei != "" { + cursor = lei + } + + return cursor +} + +// GetString retrieves a string from either the URLParams, form or query string. +// This method uses the priority (URLParams, Form, Query). +func (base *Base) GetString(name string) string { + if base.Err != nil { + return "" + } + + fromURL, ok := base.GojiCtx.URLParams[name] + + if ok { + // TODO: switch to `PathUnescape` when using a go version that has it + ret, err := url.QueryUnescape(fromURL) + if err != nil { + base.SetInvalidField(name, err) + return "" + } + + return ret + } + + fromForm := base.R.FormValue(name) + + if fromForm != "" { + return fromForm + } + + return base.R.URL.Query().Get(name) +} + +// GetInt64 retrieves an int64 from the action parameter of the given name. +// Populates err if the value is not a valid int64 +func (base *Base) GetInt64(name string) int64 { + if base.Err != nil { + return 0 + } + + asStr := base.GetString(name) + + if asStr == "" { + return 0 + } + + asI64, err := strconv.ParseInt(asStr, 10, 64) + + if err != nil { + base.SetInvalidField(name, err) + return 0 + } + + return asI64 +} + +// GetInt32 retrieves an int32 from the action parameter of the given name. +// Populates err if the value is not a valid int32 +func (base *Base) GetInt32(name string) int32 { + if base.Err != nil { + return 0 + } + + asStr := base.GetString(name) + + if asStr == "" { + return 0 + } + + asI64, err := strconv.ParseInt(asStr, 10, 32) + + if err != nil { + base.SetInvalidField(name, err) + return 0 + } + + return int32(asI64) +} + +// GetLimit retrieves a uint64 limit from the action parameter of the given +// name. Populates err if the value is not a valid limit. Uses the provided +// default value if the limit parameter is a blank string. +func (base *Base) GetLimit(name string, def uint64, max uint64) uint64 { + if base.Err != nil { + return 0 + } + + limit := base.GetString(name) + + if limit == "" { + return def + } + + asI64, err := strconv.ParseInt(limit, 10, 64) + + if asI64 <= 0 { + err = errors.New("invalid limit: non-positive value provided") + } + + if asI64 > int64(max) { + err = errors.Errorf("invalid limit: value provided that is over limit max of %d", max) + } + + if err != nil { + base.SetInvalidField(name, err) + return 0 + } + + return uint64(asI64) +} + +// GetPageQuery is a helper that returns a new db.PageQuery struct initialized +// using the results from a call to GetPagingParams() +func (base *Base) GetPageQuery() db2.PageQuery { + if base.Err != nil { + return db2.PageQuery{} + } + + cursor := base.GetCursor(ParamCursor) + order := base.GetString(ParamOrder) + limit := base.GetLimit(ParamLimit, db2.DefaultPageSize, db2.MaxPageSize) + + if base.Err != nil { + return db2.PageQuery{} + } + + r, err := db2.NewPageQuery(cursor, order, limit) + + if err != nil { + base.Err = err + } + + return r +} + +// GetAddress retrieves a stellar address. It confirms the value loaded is a +// valid stellar address, setting an invalid field error if it is not. +func (base *Base) GetAddress(name string) (result string) { + if base.Err != nil { + return + } + + result = base.GetString(name) + + _, err := strkey.Decode(strkey.VersionByteAccountID, result) + + if err != nil { + base.SetInvalidField(name, err) + } + + return result +} + +// GetAccountID retireves an xdr.AccountID by attempting to decode a stellar +// address at the provided name. +func (base *Base) GetAccountID(name string) (result xdr.AccountId) { + raw, err := strkey.Decode(strkey.VersionByteAccountID, base.GetString(name)) + + if base.Err != nil { + return + } + + if err != nil { + base.SetInvalidField(name, err) + return + } + + var key xdr.Uint256 + copy(key[:], raw) + + result, err = xdr.NewAccountId(xdr.PublicKeyTypePublicKeyTypeEd25519, key) + if err != nil { + base.SetInvalidField(name, err) + return + } + + return +} + +// GetAmount returns a native amount (i.e. 64-bit integer) by parsing +// the string at the provided name in accordance with the stellar client +// conventions +func (base *Base) GetAmount(name string) (result xdr.Int64) { + var err error + result, err = amount.Parse(base.GetString("destination_amount")) + + if err != nil { + base.SetInvalidField(name, err) + return + } + + return +} + +// GetAssetType is a helper that returns a xdr.AssetType by reading a string +func (base *Base) GetAssetType(name string) xdr.AssetType { + if base.Err != nil { + return xdr.AssetTypeAssetTypeNative + } + + r, err := assets.Parse(base.GetString(name)) + + if base.Err != nil { + return xdr.AssetTypeAssetTypeNative + } + + if err != nil { + base.SetInvalidField(name, err) + } + + return r +} + +// GetAsset decodes an asset from the request fields prefixed by `prefix`. To +// succeed, three prefixed fields must be present: asset_type, asset_code, and +// asset_issuer. +func (base *Base) GetAsset(prefix string) (result xdr.Asset) { + if base.Err != nil { + return + } + var value interface{} + + t := base.GetAssetType(prefix + "asset_type") + + switch t { + case xdr.AssetTypeAssetTypeCreditAlphanum4: + a := xdr.AssetAlphaNum4{} + a.Issuer = base.GetAccountID(prefix + "asset_issuer") + + c := base.GetString(prefix + "asset_code") + if len(c) > len(a.AssetCode) { + base.SetInvalidField(prefix+"asset_code", nil) + return + } + + copy(a.AssetCode[:len(c)], []byte(c)) + value = a + case xdr.AssetTypeAssetTypeCreditAlphanum12: + a := xdr.AssetAlphaNum12{} + a.Issuer = base.GetAccountID(prefix + "asset_issuer") + + c := base.GetString(prefix + "asset_code") + if len(c) > len(a.AssetCode) { + base.SetInvalidField(prefix+"asset_code", nil) + return + } + + copy(a.AssetCode[:len(c)], []byte(c)) + value = a + } + + result, err := xdr.NewAsset(t, value) + if err != nil { + panic(err) + } + return +} + +// MaybeGetAsset decodes an asset from the request fields as GetAsset does, but +// only if type field is populated. returns an additional boolean reflecting whether +// or not the decoding was performed +func (base *Base) MaybeGetAsset(prefix string) (xdr.Asset, bool){ + if base.Err != nil { + return xdr.Asset{}, false + } + + if base.GetString(prefix+"asset_type") == "" { + return xdr.Asset{}, false + } + + return base.GetAsset(prefix), true +} + +// SetInvalidField establishes an error response triggered by an invalid +// input field from the user. +func (base *Base) SetInvalidField(name string, reason error) { + br := problem.BadRequest + + br.Extras = map[string]interface{}{} + br.Extras["invalid_field"] = name + br.Extras["reason"] = reason.Error() + + base.Err = &br +} + +// Path returns the current action's path, as determined by the http.Request of +// this action +func (base *Base) Path() string { + return base.R.URL.Path +} + +// ValidateBodyType sets an error on the action if the requests Content-Type +// is not `application/x-www-form-urlencoded` +func (base *Base) ValidateBodyType() { + c := base.R.Header.Get("Content-Type") + + if c == "" { + return + } + + mt, _, err := mime.ParseMediaType(c) + + if err != nil { + base.Err = err + return + } + + switch { + case mt == "application/x-www-form-urlencoded": + return + case mt == "multipart/form-data": + return + default: + base.Err = &problem.UnsupportedMediaType + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions/helpers_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions/helpers_test.go new file mode 100644 index 0000000..6e12d67 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions/helpers_test.go @@ -0,0 +1,294 @@ +package actions + +import ( + "fmt" + "math" + "net/http" + "net/url" + "testing" + + "github.com/stellar/go/xdr" + "github.com/stellar/go/services/horizon/internal/ledger" + "github.com/stellar/go/services/horizon/internal/render/problem" + "github.com/stellar/go/services/horizon/internal/test" + "github.com/stellar/go/services/horizon/internal/toid" + "github.com/zenazn/goji/web" +) + +func TestGetAccountID(t *testing.T) { + tt := test.Start(t) + defer tt.Finish() + action := makeTestAction() + + aid := action.GetAccountID("4_asset_issuer") + tt.Assert.NoError(action.Err) + tt.Assert.Equal( + "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", + aid.Address(), + ) +} + +func TestGetAsset(t *testing.T) { + tt := test.Start(t) + defer tt.Finish() + action := makeTestAction() + + ts := action.GetAsset("native_") + if tt.Assert.NoError(action.Err) { + tt.Assert.Equal(xdr.AssetTypeAssetTypeNative, ts.Type) + } + + ts = action.GetAsset("4_") + if tt.Assert.NoError(action.Err) { + tt.Assert.Equal(xdr.AssetTypeAssetTypeCreditAlphanum4, ts.Type) + } + + ts = action.GetAsset("12_") + if tt.Assert.NoError(action.Err) { + tt.Assert.Equal(xdr.AssetTypeAssetTypeCreditAlphanum12, ts.Type) + } + + // bad path + action.GetAsset("cursor") + tt.Assert.Error(action.Err) +} + +func TestGetAssetType(t *testing.T) { + tt := test.Start(t) + defer tt.Finish() + action := makeTestAction() + + ts := action.GetAssetType("native_asset_type") + if tt.Assert.NoError(action.Err) { + tt.Assert.Equal(xdr.AssetTypeAssetTypeNative, ts) + } + + ts = action.GetAssetType("4_asset_type") + if tt.Assert.NoError(action.Err) { + tt.Assert.Equal(xdr.AssetTypeAssetTypeCreditAlphanum4, ts) + } + + ts = action.GetAssetType("12_asset_type") + if tt.Assert.NoError(action.Err) { + tt.Assert.Equal(xdr.AssetTypeAssetTypeCreditAlphanum12, ts) + } +} +func TestGetCursor(t *testing.T) { + tt := test.Start(t) + defer tt.Finish() + + // now uses the ledger state + action := makeAction("/?cursor=now", nil) + cursor := action.GetCursor("cursor") + if tt.Assert.NoError(action.Err) { + expected := toid.AfterLedger(ledger.CurrentState().HistoryLatest).String() + tt.Assert.Equal(expected, cursor) + } + + //Last-Event-ID overrides cursor + action = makeTestAction() + action.R.Header.Set("Last-Event-ID", "from_header") + cursor = action.GetCursor("cursor") + if tt.Assert.NoError(action.Err) { + tt.Assert.Equal("from_header", cursor) + } +} + +func TestGetInt32(t *testing.T) { + tt := test.Start(t) + defer tt.Finish() + action := makeTestAction() + + result := action.GetInt32("blank") + tt.Assert.NoError(action.Err) + tt.Assert.Equal(int32(0), result) + + result = action.GetInt32("zero") + tt.Assert.NoError(action.Err) + tt.Assert.Equal(int32(0), result) + + result = action.GetInt32("two") + tt.Assert.NoError(action.Err) + tt.Assert.Equal(int32(2), result) + + result = action.GetInt32("32max") + tt.Assert.NoError(action.Err) + tt.Assert.EqualValues(int32(math.MaxInt32), result) + + result = action.GetInt32("32min") + tt.Assert.NoError(action.Err) + tt.Assert.EqualValues(int32(math.MinInt32), result) + + result = action.GetInt32("limit") + tt.Assert.NoError(action.Err) + tt.Assert.EqualValues(int32(2), result) + + // overflows + action.Err = nil + _ = action.GetInt32("64max") + if tt.Assert.IsType(&problem.P{}, action.Err) { + p := action.Err.(*problem.P) + tt.Assert.Equal("bad_request", p.Type) + tt.Assert.Equal("64max", p.Extras["invalid_field"]) + } + + action.Err = nil + _ = action.GetInt32("64min") + if tt.Assert.IsType(&problem.P{}, action.Err) { + p := action.Err.(*problem.P) + tt.Assert.Equal("bad_request", p.Type) + tt.Assert.Equal("64min", p.Extras["invalid_field"]) + } +} + +func TestGetInt64(t *testing.T) { + tt := test.Start(t) + defer tt.Finish() + action := makeTestAction() + + result := action.GetInt64("blank") + tt.Assert.NoError(action.Err) + tt.Assert.EqualValues(int64(0), result) + + result = action.GetInt64("zero") + tt.Assert.NoError(action.Err) + tt.Assert.EqualValues(int64(0), result) + + result = action.GetInt64("two") + tt.Assert.NoError(action.Err) + tt.Assert.Equal(int64(2), result) + + result = action.GetInt64("64max") + tt.Assert.NoError(action.Err) + tt.Assert.EqualValues(int64(math.MaxInt64), result) + + result = action.GetInt64("64min") + tt.Assert.NoError(action.Err) + tt.Assert.Equal(int64(math.MinInt64), result) +} + +func TestGetLimit(t *testing.T) { + tt := test.Start(t) + defer tt.Finish() + + // happy path + action := makeTestAction() + limit := action.GetLimit("limit", 5, 200) + if tt.Assert.NoError(action.Err) { + tt.Assert.Equal(uint64(2), limit) + } + + action = makeAction("/?limit=200", nil) + limit = action.GetLimit("limit", 5, 200) + if tt.Assert.NoError(action.Err) { + tt.Assert.Equal(uint64(200), limit) + } + + // defaults + action = makeAction("/", nil) + limit = action.GetLimit("limit", 5, 200) + if tt.Assert.NoError(action.Err) { + tt.Assert.Equal(uint64(5), limit) + } + + action = makeAction("/?limit=", nil) + limit = action.GetLimit("limit", 5, 200) + if tt.Assert.NoError(action.Err) { + tt.Assert.Equal(uint64(5), limit) + } + + // invalids + action = makeAction("/?limit=0", nil) + _ = action.GetLimit("limit", 5, 200) + tt.Assert.Error(action.Err) + + action = makeAction("/?limit=-1", nil) + _ = action.GetLimit("limit", 5, 200) + tt.Assert.Error(action.Err) + + action = makeAction("/?limit=201", nil) + _ = action.GetLimit("limit", 5, 200) + tt.Assert.Error(action.Err) +} + +func TestGetPageQuery(t *testing.T) { + tt := test.Start(t) + defer tt.Finish() + action := makeTestAction() + + // happy path + pq := action.GetPageQuery() + tt.Assert.NoError(action.Err) + tt.Assert.Equal("hello", pq.Cursor) + tt.Assert.Equal(uint64(2), pq.Limit) + tt.Assert.Equal("asc", pq.Order) + + // regression: GetPagQuery does not overwrite err + action = makeAction("/?limit=foo", nil) + _ = action.GetLimit("limit", 1, 200) + tt.Assert.Error(action.Err) + _ = action.GetPageQuery() + tt.Assert.Error(action.Err) + + // regression: https://github.com/stellar/go/services/horizon/internal/issues/372 + // (limit of 0 turns into 10) + makeAction("/?limit=0", nil) + _ = action.GetPageQuery() + tt.Assert.Error(action.Err) +} + +func TestGetString(t *testing.T) { + tt := test.Start(t) + defer tt.Finish() + action := makeTestAction() + + tt.Assert.Equal("hello", action.GetString("cursor")) + action.R.Form = url.Values{ + "cursor": {"goodbye"}, + } + tt.Assert.Equal("goodbye", action.GetString("cursor")) +} + +func TestPath(t *testing.T) { + tt := test.Start(t) + defer tt.Finish() + action := makeTestAction() + + tt.Assert.Equal("/foo-bar/blah", action.Path()) +} + +func makeTestAction() *Base { + return makeAction("/foo-bar/blah?limit=2&cursor=hello", testURLParams()) +} + +func makeAction(path string, body map[string]string) *Base { + r, _ := http.NewRequest("GET", path, nil) + action := &Base{ + Ctx: test.Context(), + GojiCtx: web.C{ + URLParams: body, + Env: map[interface{}]interface{}{}, + }, + R: r, + } + return action +} + +func testURLParams() map[string]string { + return map[string]string{ + "blank": "", + "zero": "0", + "two": "2", + "32min": fmt.Sprint(math.MinInt32), + "32max": fmt.Sprint(math.MaxInt32), + "64min": fmt.Sprint(math.MinInt64), + "64max": fmt.Sprint(math.MaxInt64), + "native_asset_type": "native", + "4_asset_type": "credit_alphanum4", + "4_asset_code": "USD", + "4_asset_issuer": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", + "12_asset_type": "credit_alphanum12", + "12_asset_code": "USD", + "12_asset_issuer": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions/responders.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions/responders.go new file mode 100644 index 0000000..f74525d --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions/responders.go @@ -0,0 +1,21 @@ +package actions + +import "github.com/stellar/go/services/horizon/internal/render/sse" + +// JSON implementors can respond to a request whose response type was negotiated +// to be MimeHal or MimeJSON. +type JSON interface { + JSON() +} + +// Raw implementors can respond to a request whose response type was negotiated +// to be MimeRaw. +type Raw interface { + Raw() +} + +// SSE implementors can respond to a request whose response type was negotiated +// to be MimeEventStream. +type SSE interface { + SSE(sse.Stream) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_account.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_account.go new file mode 100644 index 0000000..3ad4e13 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_account.go @@ -0,0 +1,104 @@ +package horizon + +import ( + "github.com/stellar/go/services/horizon/internal/db2/core" + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stellar/go/services/horizon/internal/render/hal" + "github.com/stellar/go/services/horizon/internal/render/sse" + "github.com/stellar/go/services/horizon/internal/resource" +) + +// This file contains the actions: +// +// AccountShowAction: details for single account (including stellar-core state) + +// AccountShowAction renders a account summary found by its address. +type AccountShowAction struct { + Action + Address string + HistoryRecord history.Account + CoreData []core.AccountData + CoreRecord core.Account + CoreSigners []core.Signer + CoreTrustlines []core.Trustline + Resource resource.Account +} + +// JSON is a method for actions.JSON +func (action *AccountShowAction) JSON() { + action.Do( + action.loadParams, + action.loadRecord, + action.loadResource, + func() { + hal.Render(action.W, action.Resource) + }, + ) +} + +// SSE is a method for actions.SSE +func (action *AccountShowAction) SSE(stream sse.Stream) { + action.Do( + action.loadParams, + action.loadRecord, + action.loadResource, + func() { + stream.SetLimit(10) + stream.Send(sse.Event{Data: action.Resource}) + }, + ) +} + +func (action *AccountShowAction) loadParams() { + action.Address = action.GetString("id") +} + +func (action *AccountShowAction) loadRecord() { + action.Err = action.CoreQ(). + AccountByAddress(&action.CoreRecord, action.Address) + if action.Err != nil { + return + } + + action.Err = action.CoreQ(). + AllDataByAddress(&action.CoreData, action.Address) + if action.Err != nil { + return + } + + action.Err = action.CoreQ(). + SignersByAddress(&action.CoreSigners, action.Address) + if action.Err != nil { + return + } + + action.Err = action.CoreQ(). + TrustlinesByAddress(&action.CoreTrustlines, action.Address) + if action.Err != nil { + return + } + + action.Err = action.HistoryQ(). + AccountByAddress(&action.HistoryRecord, action.Address) + + // Do not fail when we cannot find the history record... it probably just + // means that the account was created outside of our known history range. + if action.HistoryQ().NoRows(action.Err) { + action.Err = nil + } + + if action.Err != nil { + return + } +} + +func (action *AccountShowAction) loadResource() { + action.Err = action.Resource.Populate( + action.Ctx, + action.CoreRecord, + action.CoreData, + action.CoreSigners, + action.CoreTrustlines, + action.HistoryRecord, + ) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_account_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_account_test.go new file mode 100644 index 0000000..3c40153 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_account_test.go @@ -0,0 +1,58 @@ +package horizon + +import ( + "encoding/json" + "testing" + + "github.com/stellar/go/services/horizon/internal/resource" +) + +func TestAccountActions_Show(t *testing.T) { + ht := StartHTTPTest(t, "base") + defer ht.Finish() + + // existing account + w := ht.Get( + "/accounts/GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", + ) + if ht.Assert.Equal(200, w.Code) { + + var result resource.Account + err := json.Unmarshal(w.Body.Bytes(), &result) + ht.Require.NoError(err) + ht.Assert.Equal("3", result.Sequence) + } + + // missing account + w = ht.Get("/accounts/100") + ht.Assert.Equal(404, w.Code) +} + +func TestAccountActions_ShowRegressions(t *testing.T) { + ht := StartHTTPTest(t, "base") + defer ht.Finish() + + w := ht.Get( + "/accounts/GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", + ) + var result resource.Account + err := json.Unmarshal(w.Body.Bytes(), &result) + ht.Require.NoError(err) + + // Regression: no trades link + ht.Assert.Contains(result.Links.Trades.Href, "/trades") + + // Regression: no data link + ht.Assert.Contains(result.Links.Data.Href, "/data/{key}") + ht.Assert.True(result.Links.Data.Templated) + + // Regression: return 200 ok even when the history record cannot be found. + + // overwrite history with blank + ht.T.ScenarioWithoutHorizon("base") + w = ht.Get( + "/accounts/GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", + ) + ht.Assert.Equal(200, w.Code) + +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_data.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_data.go new file mode 100644 index 0000000..4b6051f --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_data.go @@ -0,0 +1,70 @@ +package horizon + +import ( + "github.com/stellar/go/services/horizon/internal/db2/core" + "github.com/stellar/go/services/horizon/internal/render/hal" + "github.com/stellar/go/services/horizon/internal/render/sse" +) + +// DataShowAction renders a account summary found by its address. +type DataShowAction struct { + Action + Address string + Key string + Data core.AccountData +} + +// JSON is a method for actions.JSON +func (action *DataShowAction) JSON() { + action.Do( + action.loadParams, + action.loadRecord, + func() { + + hal.Render(action.W, map[string]string{ + "value": action.Data.Value, + }) + }, + ) +} + +// Raw is a method for actions.Raw +func (action *DataShowAction) Raw() { + action.Do( + action.loadParams, + action.loadRecord, + func() { + var raw []byte + raw, action.Err = action.Data.Raw() + if action.Err != nil { + return + } + + action.W.Write(raw) + }, + ) +} + +// SSE is a method for actions.SSE +func (action *DataShowAction) SSE(stream sse.Stream) { + action.Do( + action.loadParams, + action.loadRecord, + func() { + stream.Send(sse.Event{Data: action.Data.Value}) + }, + ) +} + +func (action *DataShowAction) loadParams() { + action.Address = action.GetString("account_id") + action.Key = action.GetString("key") +} + +func (action *DataShowAction) loadRecord() { + action.Err = action.CoreQ(). + AccountDataByKey(&action.Data, action.Address, action.Key) + if action.Err != nil { + return + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_data_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_data_test.go new file mode 100644 index 0000000..5293774 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_data_test.go @@ -0,0 +1,45 @@ +package horizon + +import ( + "encoding/base64" + "encoding/json" + "testing" + + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestDataActions_Show(t *testing.T) { + ht := StartHTTPTest(t, "kahuna") + defer ht.Finish() + + prefix := "/accounts/GAYSCMKQY6EYLXOPTT6JPPOXDMVNBWITPTSZIVWW4LWARVBOTH5RTLAD" + // json + + w := ht.Get(prefix + "/data/name1") + if ht.Assert.Equal(200, w.Code) { + var result map[string]string + err := json.Unmarshal(w.Body.Bytes(), &result) + ht.Require.NoError(err) + decoded, err := base64.StdEncoding.DecodeString(result["value"]) + ht.Require.NoError(err) + + ht.Assert.Equal("0000", string(decoded)) + } + + // raw + w = ht.Get(prefix+"/data/name1", test.RequestHelperRaw) + if ht.Assert.Equal(200, w.Code) { + ht.Assert.Equal("0000", w.Body.String()) + } + + // missing + w = ht.Get(prefix+"/data/missing", test.RequestHelperRaw) + ht.Assert.Equal(404, w.Code) + + // regression: https://github.com/stellar/go/services/horizon/internal/issues/325 + // names with special characters do not work + w = ht.Get(prefix+"/data/name%20", test.RequestHelperRaw) + if ht.Assert.Equal(200, w.Code) { + ht.Assert.Equal("its got spaces!", w.Body.String()) + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_effects.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_effects.go new file mode 100644 index 0000000..b936051 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_effects.go @@ -0,0 +1,147 @@ +package horizon + +import ( + "errors" + "regexp" + + "github.com/stellar/go/services/horizon/internal/db2" + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stellar/go/services/horizon/internal/render/hal" + "github.com/stellar/go/services/horizon/internal/render/sse" + "github.com/stellar/go/services/horizon/internal/resource" +) + +// This file contains the actions: +// +// EffectIndexAction: pages of effects + +// EffectIndexAction renders a page of effect resources, identified by +// a normal page query and optionally filtered by an account, ledger, +// transaction, or operation. +type EffectIndexAction struct { + Action + AccountFilter string + LedgerFilter int32 + TransactionFilter string + OperationFilter int64 + + PagingParams db2.PageQuery + Records []history.Effect + Page hal.Page +} + +// JSON is a method for actions.JSON +func (action *EffectIndexAction) JSON() { + action.Do( + action.EnsureHistoryFreshness, + action.loadParams, + action.ValidateCursorWithinHistory, + action.loadRecords, + action.loadPage, + ) + + action.Do(func() { + hal.Render(action.W, action.Page) + }) +} + +// SSE is a method for actions.SSE +func (action *EffectIndexAction) SSE(stream sse.Stream) { + action.Setup( + action.EnsureHistoryFreshness, + action.loadParams, + action.ValidateCursorWithinHistory, + ) + + action.Do( + action.loadRecords, + func() { + stream.SetLimit(int(action.PagingParams.Limit)) + records := action.Records[stream.SentCount():] + + for _, record := range records { + res, err := resource.NewEffect(action.Ctx, record) + + if err != nil { + stream.Err(action.Err) + return + } + + stream.Send(sse.Event{ + ID: res.PagingToken(), + Data: res, + }) + } + }, + ) +} + +func (action *EffectIndexAction) loadParams() { + action.ValidateCursor() + action.PagingParams = action.GetPageQuery() + action.AccountFilter = action.GetString("account_id") + action.LedgerFilter = action.GetInt32("ledger_id") + action.TransactionFilter = action.GetString("tx_id") + action.OperationFilter = action.GetInt64("op_id") +} + +// loadRecords populates action.Records +func (action *EffectIndexAction) loadRecords() { + effects := action.HistoryQ().Effects() + + switch { + case action.AccountFilter != "": + effects.ForAccount(action.AccountFilter) + case action.LedgerFilter > 0: + effects.ForLedger(action.LedgerFilter) + case action.OperationFilter > 0: + effects.ForOperation(action.OperationFilter) + case action.TransactionFilter != "": + effects.ForTransaction(action.TransactionFilter) + } + + action.Err = effects.Page(action.PagingParams).Select(&action.Records) +} + +// loadPage populates action.Page +func (action *EffectIndexAction) loadPage() { + for _, record := range action.Records { + var res hal.Pageable + res, action.Err = resource.NewEffect(action.Ctx, record) + if action.Err != nil { + return + } + action.Page.Add(res) + } + + action.Page.BaseURL = action.BaseURL() + action.Page.BasePath = action.Path() + action.Page.Limit = action.PagingParams.Limit + action.Page.Cursor = action.PagingParams.Cursor + action.Page.Order = action.PagingParams.Order + action.Page.PopulateLinks() +} + +// ValidateCursor ensures that the provided cursor parameter is of the form +// OPERATIONID-INDEX (such as 1234-56) or is the special value "now" that +// represents the the cursor directly after the last closed ledger +func (action *EffectIndexAction) ValidateCursor() { + c := action.GetString("cursor") + + if c == "" { + return + } + + ok, err := regexp.MatchString("now|\\d+(-\\d+)?", c) + if err != nil { + action.Err = err + return + } + + if !ok { + action.SetInvalidField("cursor", errors.New("invalid format")) + return + } + + return +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_effects_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_effects_test.go new file mode 100644 index 0000000..45b9d61 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_effects_test.go @@ -0,0 +1,71 @@ +package horizon + +import ( + "testing" + + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestEffectActions_Index(t *testing.T) { + ht := StartHTTPTest(t, "base") + defer ht.Finish() + + w := ht.Get("/effects?limit=20") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(11, w.Body) + } + + // test streaming, regression for https://github.com/stellar/go/services/horizon/internal/issues/147 + w = ht.Get("/effects?limit=2", test.RequestHelperStreaming) + ht.Assert.Equal(200, w.Code) + + // filtered by ledger + w = ht.Get("/ledgers/1/effects") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(0, w.Body) + } + + w = ht.Get("/ledgers/2/effects") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(9, w.Body) + } + + w = ht.Get("/ledgers/3/effects") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(2, w.Body) + } + + // filtered by account + w = ht.Get("/accounts/GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H/effects") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(3, w.Body) + } + + w = ht.Get("/accounts/GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2/effects") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(2, w.Body) + } + + w = ht.Get("/accounts/GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU/effects") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(3, w.Body) + } + + // filtered by transaction + w = ht.Get("/transactions/2374e99349b9ef7dba9a5db3339b78fda8f34777b1af33ba468ad5c0df946d4d/effects") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(3, w.Body) + } + + // filtered by operation + w = ht.Get("/operations/8589938689/effects") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(3, w.Body) + } + + // before history + ht.ReapHistory(1) + w = ht.Get("/effects?order=desc&cursor=8589938689-1") + ht.Assert.Equal(410, w.Code) + ht.Logger.Error(w.Body.String()) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_friendbot.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_friendbot.go new file mode 100644 index 0000000..65b49d6 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_friendbot.go @@ -0,0 +1,60 @@ +package horizon + +import ( + "net/http" + + "github.com/stellar/go/services/horizon/internal/render/hal" + "github.com/stellar/go/services/horizon/internal/render/problem" + "github.com/zenazn/goji/web" +) + +// FriendbotAction causes an account at `Address` to be created. +type FriendbotAction struct { + TransactionCreateAction + Address string +} + +// JSON is a method for actions.JSON +func (action *FriendbotAction) JSON() { + + action.Do( + action.checkEnabled, + action.loadAddress, + action.loadResult, + action.loadResource, + + func() { + hal.Render(action.W, action.Resource) + }) +} + +func (action *FriendbotAction) checkEnabled() { + if action.App.friendbot != nil { + return + } + + action.Err = &problem.P{ + Type: "friendbot_disabled", + Title: "Friendbot is disabled", + Status: http.StatusForbidden, + Detail: "This horizon server is not configured to provide a friendbot. " + + "Contact the server administrator if you believe this to be in error.", + } +} + +func (action *FriendbotAction) loadAddress() { + action.Address = action.GetAddress("addr") +} + +func (action *FriendbotAction) loadResult() { + action.Result = action.App.friendbot.Pay(action.Ctx, action.Address) +} + +// ServeHTTPC implements Action for FriendbotAction. NOTE: We cannot use the +// generated stub because FriendbotAction doesn't directly instantiate the +// template. +func (action FriendbotAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request) { + ap := &action.Action + ap.Prepare(c, w, r) + ap.Execute(&action) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_ledger.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_ledger.go new file mode 100644 index 0000000..afe7849 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_ledger.go @@ -0,0 +1,122 @@ +package horizon + +import ( + "github.com/stellar/go/services/horizon/internal/db2" + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stellar/go/services/horizon/internal/ledger" + "github.com/stellar/go/services/horizon/internal/render/hal" + "github.com/stellar/go/services/horizon/internal/render/problem" + "github.com/stellar/go/services/horizon/internal/render/sse" + "github.com/stellar/go/services/horizon/internal/resource" +) + +// This file contains the actions: +// +// LedgerIndexAction: pages of ledgers +// LedgerShowAction: single ledger by sequence + +// LedgerIndexAction renders a page of ledger resources, identified by +// a normal page query. +type LedgerIndexAction struct { + Action + PagingParams db2.PageQuery + Records []history.Ledger + Page hal.Page +} + +// JSON is a method for actions.JSON +func (action *LedgerIndexAction) JSON() { + action.Do( + action.EnsureHistoryFreshness, + action.loadParams, + action.ValidateCursorWithinHistory, + action.loadRecords, + action.loadPage, + func() { hal.Render(action.W, action.Page) }, + ) +} + +// SSE is a method for actions.SSE +func (action *LedgerIndexAction) SSE(stream sse.Stream) { + action.Setup( + action.EnsureHistoryFreshness, + action.loadParams, + action.ValidateCursorWithinHistory, + ) + action.Do( + action.loadRecords, + func() { + stream.SetLimit(int(action.PagingParams.Limit)) + records := action.Records[stream.SentCount():] + + for _, record := range records { + var res resource.Ledger + res.Populate(action.Ctx, record) + stream.Send(sse.Event{ID: res.PagingToken(), Data: res}) + } + }, + ) +} + +func (action *LedgerIndexAction) loadParams() { + action.ValidateCursorAsDefault() + action.PagingParams = action.GetPageQuery() +} + +func (action *LedgerIndexAction) loadRecords() { + action.Err = action.HistoryQ().Ledgers(). + Page(action.PagingParams). + Select(&action.Records) +} + +func (action *LedgerIndexAction) loadPage() { + for _, record := range action.Records { + var res resource.Ledger + res.Populate(action.Ctx, record) + action.Page.Add(res) + } + + action.Page.BaseURL = action.BaseURL() + action.Page.BasePath = action.Path() + action.Page.Limit = action.PagingParams.Limit + action.Page.Cursor = action.PagingParams.Cursor + action.Page.Order = action.PagingParams.Order + action.Page.PopulateLinks() +} + +// LedgerShowAction renders a ledger found by its sequence number. +type LedgerShowAction struct { + Action + Sequence int32 + Record history.Ledger +} + +// JSON is a method for actions.JSON +func (action *LedgerShowAction) JSON() { + action.Do( + action.EnsureHistoryFreshness, + action.loadParams, + action.verifyWithinHistory, + action.loadRecord, + func() { + var res resource.Ledger + res.Populate(action.Ctx, action.Record) + hal.Render(action.W, res) + }, + ) +} + +func (action *LedgerShowAction) loadParams() { + action.Sequence = action.GetInt32("id") +} + +func (action *LedgerShowAction) loadRecord() { + action.Err = action.HistoryQ(). + LedgerBySequence(&action.Record, action.Sequence) +} + +func (action *LedgerShowAction) verifyWithinHistory() { + if action.Sequence < ledger.CurrentState().HistoryElder { + action.Err = &problem.BeforeHistory + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_ledger_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_ledger_test.go new file mode 100644 index 0000000..e79561c --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_ledger_test.go @@ -0,0 +1,50 @@ +package horizon + +import ( + "encoding/json" + "testing" + + "github.com/stellar/go/services/horizon/internal/resource" +) + +func TestLedgerActions_Index(t *testing.T) { + ht := StartHTTPTest(t, "base") + defer ht.Finish() + + // default params + w := ht.Get("/ledgers") + + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(3, w.Body) + } + + // with limit + w = ht.RH.Get("/ledgers?limit=1") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(1, w.Body) + } +} + +func TestLedgerActions_Show(t *testing.T) { + ht := StartHTTPTest(t, "base") + defer ht.Finish() + + w := ht.Get("/ledgers/1") + ht.Assert.Equal(200, w.Code) + + var result resource.Ledger + err := json.Unmarshal(w.Body.Bytes(), &result) + if ht.Assert.NoError(err) { + ht.Assert.Equal(int32(1), result.Sequence) + } + + // ledger higher than history + w = ht.Get("/ledgers/100") + ht.Assert.Equal(404, w.Code) + + // ledger that was reaped + ht.ReapHistory(1) + + w = ht.Get("/ledgers/1") + ht.Assert.Equal(410, w.Code) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_metrics.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_metrics.go new file mode 100644 index 0000000..928ed56 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_metrics.go @@ -0,0 +1,88 @@ +package horizon + +import ( + "github.com/rcrowley/go-metrics" + "github.com/stellar/go/services/horizon/internal/render/hal" +) + +// MetricsAction collects and renders a snapshot from the metrics system that +// will inlude any previously registered metrics. +type MetricsAction struct { + Action + Snapshot map[string]interface{} +} + +// JSON is a method for actions.JSON +func (action *MetricsAction) JSON() { + action.LoadSnapshot() + action.Snapshot["_links"] = map[string]interface{}{ + "self": hal.NewLink("/metrics"), + } + + hal.Render(action.W, action.Snapshot) +} + +// LoadSnapshot populates action.Snapshot +// +// Original code copied from github.com/rcrowley/go-metrics MarshalJSON +func (action *MetricsAction) LoadSnapshot() { + + action.Snapshot = make(map[string]interface{}) + + action.App.metrics.Each(func(name string, i interface{}) { + values := make(map[string]interface{}) + switch metric := i.(type) { + case metrics.Counter: + values["count"] = metric.Count() + case metrics.Gauge: + values["value"] = metric.Value() + case metrics.GaugeFloat64: + values["value"] = metric.Value() + case metrics.Healthcheck: + values["error"] = nil + metric.Check() + if err := metric.Error(); nil != err { + values["error"] = metric.Error().Error() + } + case metrics.Histogram: + h := metric.Snapshot() + ps := h.Percentiles([]float64{0.5, 0.75, 0.95, 0.99, 0.999}) + values["count"] = h.Count() + values["min"] = h.Min() + values["max"] = h.Max() + values["mean"] = h.Mean() + values["stddev"] = h.StdDev() + values["median"] = ps[0] + values["75%"] = ps[1] + values["95%"] = ps[2] + values["99%"] = ps[3] + values["99.9%"] = ps[4] + case metrics.Meter: + m := metric.Snapshot() + values["count"] = m.Count() + values["1m.rate"] = m.Rate1() + values["5m.rate"] = m.Rate5() + values["15m.rate"] = m.Rate15() + values["mean.rate"] = m.RateMean() + case metrics.Timer: + t := metric.Snapshot() + ps := t.Percentiles([]float64{0.5, 0.75, 0.95, 0.99, 0.999}) + values["count"] = t.Count() + values["min"] = t.Min() + values["max"] = t.Max() + values["mean"] = t.Mean() + values["stddev"] = t.StdDev() + values["median"] = ps[0] + values["75%"] = ps[1] + values["95%"] = ps[2] + values["99%"] = ps[3] + values["99.9%"] = ps[4] + values["1m.rate"] = t.Rate1() + values["5m.rate"] = t.Rate5() + values["15m.rate"] = t.Rate15() + values["mean.rate"] = t.RateMean() + } + action.Snapshot[name] = values + }) + +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_not_found.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_not_found.go new file mode 100644 index 0000000..28b9147 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_not_found.go @@ -0,0 +1,13 @@ +package horizon + +import "github.com/stellar/go/services/horizon/internal/render/problem" + +// NotFoundAction renders a 404 response +type NotFoundAction struct { + Action +} + +// JSON is a method for actions.JSON +func (action *NotFoundAction) JSON() { + problem.Render(action.Ctx, action.W, problem.NotFound) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_not_implemented.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_not_implemented.go new file mode 100644 index 0000000..b8af556 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_not_implemented.go @@ -0,0 +1,13 @@ +package horizon + +import "github.com/stellar/go/services/horizon/internal/render/problem" + +// NotImplementedAction renders a NotImplemented prblem +type NotImplementedAction struct { + Action +} + +// JSON is a method for actions.JSON +func (action *NotImplementedAction) JSON() { + problem.Render(action.Ctx, action.W, problem.NotImplemented) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_offer.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_offer.go new file mode 100644 index 0000000..d50d1d1 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_offer.go @@ -0,0 +1,78 @@ +package horizon + +import ( + "github.com/stellar/go/services/horizon/internal/db2" + "github.com/stellar/go/services/horizon/internal/db2/core" + "github.com/stellar/go/services/horizon/internal/render/hal" + "github.com/stellar/go/services/horizon/internal/render/sse" + "github.com/stellar/go/services/horizon/internal/resource" +) + +// This file contains the actions: + +// OffersByAccountAction renders a page of offer resources, for a given +// account. These offers are present in the ledger as of the latest validated +// ledger. +type OffersByAccountAction struct { + Action + Address string + PageQuery db2.PageQuery + Records []core.Offer + Page hal.Page +} + +// JSON is a method for actions.JSON +func (action *OffersByAccountAction) JSON() { + action.Do( + action.loadParams, + action.loadRecords, + action.loadPage, + func() { + hal.Render(action.W, action.Page) + }, + ) +} + +// SSE is a method for actions.SSE +func (action *OffersByAccountAction) SSE(stream sse.Stream) { + action.Do( + action.loadParams, + action.loadRecords, + func() { + stream.SetLimit(int(action.PageQuery.Limit)) + for _, record := range action.Records[stream.SentCount():] { + var res resource.Offer + res.Populate(action.Ctx, record) + stream.Send(sse.Event{ID: res.PagingToken(), Data: res}) + } + }, + ) +} + +func (action *OffersByAccountAction) loadParams() { + action.PageQuery = action.GetPageQuery() + action.Address = action.GetString("account_id") +} + +func (action *OffersByAccountAction) loadRecords() { + action.Err = action.CoreQ().OffersByAddress( + &action.Records, + action.Address, + action.PageQuery, + ) +} + +func (action *OffersByAccountAction) loadPage() { + for _, record := range action.Records { + var res resource.Offer + res.Populate(action.Ctx, record) + action.Page.Add(res) + } + + action.Page.BaseURL = action.BaseURL() + action.Page.BasePath = action.Path() + action.Page.Limit = action.PageQuery.Limit + action.Page.Cursor = action.PageQuery.Cursor + action.Page.Order = action.PageQuery.Order + action.Page.PopulateLinks() +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_offer_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_offer_test.go new file mode 100644 index 0000000..0105bc1 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_offer_test.go @@ -0,0 +1,18 @@ +package horizon + +import ( + "testing" +) + +func TestOfferActions_Index(t *testing.T) { + ht := StartHTTPTest(t, "trades") + defer ht.Finish() + + w := ht.Get( + "/accounts/GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2/offers", + ) + + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(3, w.Body) + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_operation.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_operation.go new file mode 100644 index 0000000..35c830c --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_operation.go @@ -0,0 +1,192 @@ +package horizon + +import ( + "errors" + "fmt" + + "github.com/stellar/go/services/horizon/internal/db2" + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stellar/go/services/horizon/internal/ledger" + "github.com/stellar/go/services/horizon/internal/render/hal" + "github.com/stellar/go/services/horizon/internal/render/problem" + "github.com/stellar/go/services/horizon/internal/render/sse" + "github.com/stellar/go/services/horizon/internal/resource" + "github.com/stellar/go/services/horizon/internal/toid" +) + +// This file contains the actions: +// +// OperationIndexAction: pages of operations +// OperationShowAction: single operation by id + +// OperationIndexAction renders a page of operations resources, identified by +// a normal page query and optionally filtered by an account, ledger, or +// transaction. +type OperationIndexAction struct { + Action + LedgerFilter int32 + AccountFilter string + TransactionFilter string + PagingParams db2.PageQuery + Records []history.Operation + Ledgers history.LedgerCache + Page hal.Page +} + +// JSON is a method for actions.JSON +func (action *OperationIndexAction) JSON() { + action.Do( + action.EnsureHistoryFreshness, + action.loadParams, + action.ValidateCursorWithinHistory, + action.loadRecords, + action.loadLedgers, + action.loadPage) + action.Do(func() { + hal.Render(action.W, action.Page) + }) +} + +// SSE is a method for actions.SSE +func (action *OperationIndexAction) SSE(stream sse.Stream) { + action.Setup( + action.EnsureHistoryFreshness, + action.loadParams, + action.ValidateCursorWithinHistory, + ) + action.Do( + action.loadRecords, + action.loadLedgers, + func() { + stream.SetLimit(int(action.PagingParams.Limit)) + records := action.Records[stream.SentCount():] + + for _, record := range records { + ledger, found := action.Ledgers.Records[record.LedgerSequence()] + if !found { + msg := fmt.Sprintf("could not find ledger data for sequence %d", record.LedgerSequence()) + stream.Err(errors.New(msg)) + return + } + + res, err := resource.NewOperation(action.Ctx, record, ledger) + + if err != nil { + stream.Err(err) + return + } + + stream.Send(sse.Event{ + ID: res.PagingToken(), + Data: res, + }) + } + }) + +} + +func (action *OperationIndexAction) loadParams() { + action.ValidateCursorAsDefault() + action.AccountFilter = action.GetString("account_id") + action.LedgerFilter = action.GetInt32("ledger_id") + action.TransactionFilter = action.GetString("tx_id") + action.PagingParams = action.GetPageQuery() +} + +func (action *OperationIndexAction) loadRecords() { + q := action.HistoryQ() + ops := q.Operations() + + switch { + case action.AccountFilter != "": + ops.ForAccount(action.AccountFilter) + case action.LedgerFilter > 0: + ops.ForLedger(action.LedgerFilter) + case action.TransactionFilter != "": + ops.ForTransaction(action.TransactionFilter) + } + + action.Err = ops.Page(action.PagingParams).Select(&action.Records) +} + +// loadLedgers populates the ledger cache for this action +func (action *OperationIndexAction) loadLedgers() { + for _, op := range action.Records { + action.Ledgers.Queue(op.LedgerSequence()) + } + + action.Err = action.Ledgers.Load(action.HistoryQ()) +} + +func (action *OperationIndexAction) loadPage() { + for _, record := range action.Records { + + ledger, found := action.Ledgers.Records[record.LedgerSequence()] + if !found { + msg := fmt.Sprintf("could not find ledger data for sequence %d", record.LedgerSequence()) + action.Err = errors.New(msg) + return + } + + var res hal.Pageable + res, action.Err = resource.NewOperation(action.Ctx, record, ledger) + if action.Err != nil { + return + } + action.Page.Add(res) + } + + action.Page.BaseURL = action.BaseURL() + action.Page.BasePath = action.Path() + action.Page.Limit = action.PagingParams.Limit + action.Page.Cursor = action.PagingParams.Cursor + action.Page.Order = action.PagingParams.Order + action.Page.PopulateLinks() +} + +// OperationShowAction renders a ledger found by its sequence number. +type OperationShowAction struct { + Action + ID int64 + Record history.Operation + Ledger history.Ledger + Resource interface{} +} + +func (action *OperationShowAction) loadParams() { + action.ID = action.GetInt64("id") +} + +func (action *OperationShowAction) loadRecord() { + action.Err = action.HistoryQ().OperationByID(&action.Record, action.ID) +} + +func (action *OperationShowAction) loadLedger() { + action.Err = action.HistoryQ().LedgerBySequence(&action.Ledger, action.Record.LedgerSequence()) +} + +func (action *OperationShowAction) loadResource() { + action.Resource, action.Err = resource.NewOperation(action.Ctx, action.Record, action.Ledger) +} + +// JSON is a method for actions.JSON +func (action *OperationShowAction) JSON() { + action.Do( + action.EnsureHistoryFreshness, + action.loadParams, + action.verifyWithinHistory, + action.loadRecord, + action.loadLedger, + action.loadResource, + ) + action.Do(func() { + hal.Render(action.W, action.Resource) + }) +} + +func (action *OperationShowAction) verifyWithinHistory() { + parsed := toid.Parse(action.ID) + if parsed.LedgerSequence < ledger.CurrentState().HistoryElder { + action.Err = &problem.BeforeHistory + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_operation_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_operation_test.go new file mode 100644 index 0000000..8adf8c5 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_operation_test.go @@ -0,0 +1,138 @@ +package horizon + +import ( + "encoding/json" + "testing" + "time" + + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stellar/go/services/horizon/internal/resource/operations" + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestOperationActions_Index(t *testing.T) { + ht := StartHTTPTest(t, "base") + defer ht.Finish() + + // no filter + w := ht.Get("/operations") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(4, w.Body) + } + + // filtered by ledger sequence + w = ht.Get("/ledgers/1/operations") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(0, w.Body) + } + + w = ht.Get("/ledgers/2/operations") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(3, w.Body) + } + + w = ht.Get("/ledgers/3/operations") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(1, w.Body) + } + + // filtered by account + w = ht.Get("/accounts/GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H/operations") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(3, w.Body) + } + + w = ht.Get("/accounts/GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2/operations") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(1, w.Body) + } + + w = ht.Get("/accounts/GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU/operations") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(2, w.Body) + } + + // filtered by transaction + w = ht.Get("/transactions/2374e99349b9ef7dba9a5db3339b78fda8f34777b1af33ba468ad5c0df946d4d/operations") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(1, w.Body) + } + + w = ht.Get("/transactions/164a5064eba64f2cdbadb856bf3448485fc626247ada3ed39cddf0f6902133b6/operations") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(1, w.Body) + } + + // filtered by ledger + w = ht.Get("/ledgers/3/operations") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(1, w.Body) + } + + // missing ledger + w = ht.Get("/ledgers/100/operations") + ht.Assert.Equal(404, w.Code) +} + +func TestOperationActions_Show(t *testing.T) { + ht := StartHTTPTest(t, "base") + defer ht.Finish() + + // exists + w := ht.Get("/operations/8589938689") + if ht.Assert.Equal(200, w.Code) { + var result operations.Base + err := json.Unmarshal(w.Body.Bytes(), &result) + ht.Require.NoError(err, "failed to parse body") + ht.Assert.Equal("8589938689", result.PT) + ht.Assert.Equal("2374e99349b9ef7dba9a5db3339b78fda8f34777b1af33ba468ad5c0df946d4d", result.TransactionHash) + } + + // doesn't exist + w = ht.Get("/operations/9589938689") + ht.Assert.Equal(404, w.Code) + + // before history + ht.ReapHistory(1) + w = ht.Get("/operations/8589938689") + ht.Assert.Equal(410, w.Code) +} + +func TestOperationActions_Regressions(t *testing.T) { + ht := StartHTTPTest(t, "base") + defer ht.Finish() + + // ensure that trying to stream ops from an account that doesn't exist + // fails before streaming the hello message. Regression test for #285 + w := ht.Get("/accounts/foo/operations?limit=1", test.RequestHelperStreaming) + if ht.Assert.Equal(404, w.Code) { + ht.Assert.ProblemType(w.Body, "not_found") + } + + // #202 - price is not shown on manage_offer operations + test.LoadScenario("trades") + w = ht.Get("/operations/21474840577") + if ht.Assert.Equal(200, w.Code) { + var result operations.ManageOffer + err := json.Unmarshal(w.Body.Bytes(), &result) + ht.Require.NoError(err, "failed to parse body") + ht.Assert.Equal("1.0000000", result.Price) + ht.Assert.Equal(int32(1), result.PriceR.N) + ht.Assert.Equal(int32(1), result.PriceR.D) + } +} + +func TestOperation_CreatedAt(t *testing.T) { + ht := StartHTTPTest(t, "base") + defer ht.Finish() + + w := ht.Get("/ledgers/3/operations") + records := []operations.Base{} + ht.UnmarshalPage(w.Body, &records) + + l := history.Ledger{} + hq := history.Q{Session: ht.HorizonSession()} + ht.Require.NoError(hq.LedgerBySequence(&l, 3)) + + ht.Assert.WithinDuration(l.ClosedAt, records[0].LedgerCloseTime, 1*time.Second) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_order_book.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_order_book.go new file mode 100644 index 0000000..8932c58 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_order_book.go @@ -0,0 +1,84 @@ +package horizon + +import ( + "net/http" + + "github.com/stellar/go/xdr" + "github.com/stellar/go/services/horizon/internal/db2/core" + "github.com/stellar/go/services/horizon/internal/render/hal" + "github.com/stellar/go/services/horizon/internal/render/problem" + "github.com/stellar/go/services/horizon/internal/render/sse" + "github.com/stellar/go/services/horizon/internal/resource" +) + +// OrderBookShowAction renders a account summary found by its address. +type OrderBookShowAction struct { + Action + Selling xdr.Asset + Buying xdr.Asset + Record core.OrderBookSummary + Resource resource.OrderBookSummary + Limit uint64 +} + +// LoadQuery sets action.Query from the request params +func (action *OrderBookShowAction) LoadQuery() { + action.Selling = action.GetAsset("selling_") + action.Buying = action.GetAsset("buying_") + action.Limit = action.GetLimit("limit", 20, 200) + + if action.Err != nil { + action.Err = &problem.P{ + Type: "invalid_order_book", + Title: "Invalid Order Book Parameters", + Status: http.StatusBadRequest, + Detail: "The parameters that specify what order book to view are invalid in some way. " + + "Please ensure that your type parameters (selling_asset_type and buying_asset_type) are one the " + + "following valid values: native, credit_alphanum4, credit_alphanum12. Also ensure that you " + + "have specified selling_asset_code and selling_asset_issuer if selling_asset_type is not 'native', as well " + + "as buying_asset_code and buying_asset_issuer if buying_asset_type is not 'native'", + } + } +} + +// LoadRecord populates action.Record +func (action *OrderBookShowAction) LoadRecord() { + action.Err = action.CoreQ().GetOrderBookSummary( + &action.Record, + action.Selling, + action.Buying, + action.Limit, + ) +} + +// LoadResource populates action.Record +func (action *OrderBookShowAction) LoadResource() { + action.Err = action.Resource.Populate( + action.Ctx, + action.Selling, + action.Buying, + action.Record, + ) +} + +// JSON is a method for actions.JSON +func (action *OrderBookShowAction) JSON() { + action.Do(action.LoadQuery, action.LoadRecord, action.LoadResource) + + action.Do(func() { + hal.Render(action.W, action.Resource) + }) +} + +// SSE is a method for actions.SSE +func (action *OrderBookShowAction) SSE(stream sse.Stream) { + action.Do(action.LoadQuery, action.LoadRecord, action.LoadResource) + + action.Do(func() { + stream.SetLimit(10) + stream.Send(sse.Event{ + Data: action.Resource, + }) + }) + +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_order_book_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_order_book_test.go new file mode 100644 index 0000000..1ab42a9 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_order_book_test.go @@ -0,0 +1,120 @@ +package horizon + +import ( + "encoding/json" + "testing" + + "github.com/stellar/go/services/horizon/internal/resource" +) + +func TestOrderBookActions_Show(t *testing.T) { + ht := StartHTTPTest(t, "order_books") + defer ht.Finish() + + var result resource.OrderBookSummary + + // with no query args + w := ht.Get("/order_book") + if ht.Assert.Equal(400, w.Code) { + ht.Assert.ProblemType(w.Body, "invalid_order_book") + } + + // missing currency + w = ht.Get("/order_book?selling_asset_type=native") + if ht.Assert.Equal(400, w.Code) { + ht.Assert.ProblemType(w.Body, "invalid_order_book") + } + + // invalid type + w = ht.Get("/order_book?selling_asset_type=native&buying_asset_type=nothing") + if ht.Assert.Equal(400, w.Code) { + ht.Assert.ProblemType(w.Body, "invalid_order_book") + } + + w = ht.Get("/order_book?selling_asset_type=nothing&buying_asset_type=native") + if ht.Assert.Equal(400, w.Code) { + ht.Assert.ProblemType(w.Body, "invalid_order_book") + } + + // missing code + w = ht.Get("/order_book?selling_asset_type=native&buying_asset_type=credit_alphanum4&buying_asset_issuer=123") + if ht.Assert.Equal(400, w.Code) { + ht.Assert.ProblemType(w.Body, "invalid_order_book") + } + + w = ht.Get("/order_book?buying_asset_type=native&selling_asset_type=credit_alphanum4&selling_asset_issuer=123") + if ht.Assert.Equal(400, w.Code) { + ht.Assert.ProblemType(w.Body, "invalid_order_book") + } + + // missing issuer + w = ht.Get("/order_book?selling_asset_type=native&buying_asset_type=credit_alphanum4&buying_asset_code=USD") + if ht.Assert.Equal(400, w.Code) { + ht.Assert.ProblemType(w.Body, "invalid_order_book") + } + + w = ht.Get("/order_book?buying_asset_type=native&selling_asset_type=credit_alphanum4&selling_asset_code=USD") + if ht.Assert.Equal(400, w.Code) { + ht.Assert.ProblemType(w.Body, "invalid_order_book") + } + + // incomplete currency + w = ht.Get("/order_book?selling_asset_type=native&buying_asset_type=credit_alphanum4&buying_asset_code=USD") + if ht.Assert.Equal(400, w.Code) { + ht.Assert.ProblemType(w.Body, "invalid_order_book") + } + + // same currency + w = ht.Get("/order_book?selling_asset_type=native&buying_asset_type=native") + if ht.Assert.Equal(200, w.Code) { + err := json.Unmarshal(w.Body.Bytes(), &result) + ht.Require.NoError(err) + + ht.Assert.Len(result.Asks, 0) + ht.Assert.Len(result.Bids, 0) + } + + // happy path with default limit + w = ht.Get("/order_book?selling_asset_type=native&buying_asset_type=credit_alphanum4&buying_asset_code=USD&buying_asset_issuer=GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4") + if ht.Assert.Equal(200, w.Code) { + err := json.Unmarshal(w.Body.Bytes(), &result) + ht.Require.NoError(err) + + ht.Assert.Equal("native", result.Selling.Type) + ht.Assert.Equal("", result.Selling.Code) + ht.Assert.Equal("", result.Selling.Issuer) + ht.Assert.Equal("credit_alphanum4", result.Buying.Type) + ht.Assert.Equal("USD", result.Buying.Code) + ht.Assert.Equal("GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", result.Buying.Issuer) + + ht.Require.Len(result.Asks, 3) + ht.Require.Len(result.Bids, 3) + + ht.Assert.Equal("100.0000000", result.Asks[0].Amount) + ht.Assert.Equal("900.0000000", result.Asks[1].Amount) + ht.Assert.Equal("5000.0000000", result.Asks[2].Amount) + ht.Assert.Equal("10.0000000", result.Bids[0].Amount) + ht.Assert.Equal("100.0000000", result.Bids[1].Amount) + ht.Assert.Equal("1000.0000000", result.Bids[2].Amount) + } + + // happy path with smaller limit + w = ht.Get("/order_book?selling_asset_type=native&buying_asset_type=credit_alphanum4&buying_asset_code=USD&buying_asset_issuer=GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4&limit=1") + if ht.Assert.Equal(200, w.Code) { + err := json.Unmarshal(w.Body.Bytes(), &result) + ht.Require.NoError(err) + + ht.Assert.Equal("native", result.Selling.Type) + ht.Assert.Equal("", result.Selling.Code) + ht.Assert.Equal("", result.Selling.Issuer) + ht.Assert.Equal("credit_alphanum4", result.Buying.Type) + ht.Assert.Equal("USD", result.Buying.Code) + ht.Assert.Equal("GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", result.Buying.Issuer) + + ht.Require.Len(result.Asks, 1) + ht.Require.Len(result.Bids, 1) + + ht.Assert.Equal("100.0000000", result.Asks[0].Amount) + ht.Assert.Equal("10.0000000", result.Bids[0].Amount) + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_path.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_path.go new file mode 100644 index 0000000..8dfcc4c --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_path.go @@ -0,0 +1,58 @@ +package horizon + +import ( + "github.com/stellar/go/services/horizon/internal/paths" + "github.com/stellar/go/services/horizon/internal/render/hal" + "github.com/stellar/go/services/horizon/internal/resource" +) + +// PathIndexAction provides path finding +type PathIndexAction struct { + Action + Query paths.Query + Records []paths.Path + Page hal.BasePage +} + +// JSON implements actions.JSON +func (action *PathIndexAction) JSON() { + action.Do( + action.loadQuery, + action.loadSourceAssets, + action.loadRecords, + action.loadPage, + func() { + hal.Render(action.W, action.Page) + }, + ) +} + +func (action *PathIndexAction) loadQuery() { + action.Query.DestinationAmount = action.GetAmount("destination_amount") + action.Query.DestinationAddress = action.GetAddress("destination_account") + action.Query.DestinationAsset = action.GetAsset("destination_") + +} + +func (action *PathIndexAction) loadSourceAssets() { + action.Err = action.CoreQ().AssetsForAddress( + &action.Query.SourceAssets, + action.GetAddress("source_account"), + ) +} + +func (action *PathIndexAction) loadRecords() { + action.Records, action.Err = action.App.paths.Find(action.Query) +} + +func (action *PathIndexAction) loadPage() { + action.Page.Init() + for _, p := range action.Records { + var res resource.Path + action.Err = res.Populate(action.Ctx, action.Query, p) + if action.Err != nil { + return + } + action.Page.Add(res) + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_path_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_path_test.go new file mode 100644 index 0000000..17dde4e --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_path_test.go @@ -0,0 +1,39 @@ +package horizon + +import ( + "net/url" + "testing" +) + +func TestPathActions_Index(t *testing.T) { + ht := StartHTTPTest(t, "paths") + defer ht.Finish() + + // no query args + w := ht.Get("/paths") + ht.Assert.Equal(400, w.Code) + + // happy path + var q = make(url.Values) + + q.Add( + "destination_account", + "GAEDTJ4PPEFVW5XV2S7LUXBEHNQMX5Q2GM562RJGOQG7GVCE5H3HIB4V", + ) + q.Add( + "source_account", + "GARSFJNXJIHO6ULUBK3DBYKVSIZE7SC72S5DYBCHU7DKL22UXKVD7MXP", + ) + q.Add( + "destination_asset_issuer", + "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", + ) + q.Add("destination_asset_type", "credit_alphanum4") + q.Add("destination_asset_code", "EUR") + q.Add("destination_amount", "10") + + w = ht.Get("/paths?" + q.Encode()) + ht.Assert.Equal(200, w.Code) + ht.Assert.PageOf(3, w.Body) + +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_payment.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_payment.go new file mode 100644 index 0000000..12beb2e --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_payment.go @@ -0,0 +1,136 @@ +package horizon + +import ( + "errors" + "fmt" + + "github.com/stellar/go/services/horizon/internal/db2" + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stellar/go/services/horizon/internal/render/hal" + "github.com/stellar/go/services/horizon/internal/render/sse" + "github.com/stellar/go/services/horizon/internal/resource" +) + +// PaymentsIndexAction returns a paged slice of payments based upon the provided +// filters +type PaymentsIndexAction struct { + Action + LedgerFilter int32 + AccountFilter string + TransactionFilter string + PagingParams db2.PageQuery + Records []history.Operation + Ledgers history.LedgerCache + Page hal.Page +} + +// JSON is a method for actions.JSON +func (action *PaymentsIndexAction) JSON() { + action.Do( + action.EnsureHistoryFreshness, + action.loadParams, + action.ValidateCursorWithinHistory, + action.loadRecords, + action.loadLedgers, + action.loadPage, + ) + action.Do(func() { + hal.Render(action.W, action.Page) + }) +} + +// SSE is a method for actions.SSE +func (action *PaymentsIndexAction) SSE(stream sse.Stream) { + action.Setup( + action.EnsureHistoryFreshness, + action.loadParams, + action.ValidateCursorWithinHistory, + ) + action.Do( + action.loadRecords, + action.loadLedgers, + func() { + stream.SetLimit(int(action.PagingParams.Limit)) + records := action.Records[stream.SentCount():] + + for _, record := range records { + ledger, found := action.Ledgers.Records[record.LedgerSequence()] + if !found { + msg := fmt.Sprintf("could not find ledger data for sequence %d", record.LedgerSequence()) + stream.Err(errors.New(msg)) + return + } + + res, err := resource.NewOperation(action.Ctx, record, ledger) + + if err != nil { + stream.Err(err) + return + } + + stream.Send(sse.Event{ + ID: res.PagingToken(), + Data: res, + }) + } + }) +} + +func (action *PaymentsIndexAction) loadParams() { + action.ValidateCursorAsDefault() + action.AccountFilter = action.GetString("account_id") + action.LedgerFilter = action.GetInt32("ledger_id") + action.TransactionFilter = action.GetString("tx_id") + action.PagingParams = action.GetPageQuery() +} + +func (action *PaymentsIndexAction) loadRecords() { + q := action.HistoryQ() + ops := q.Operations().OnlyPayments() + + switch { + case action.AccountFilter != "": + ops.ForAccount(action.AccountFilter) + case action.LedgerFilter > 0: + ops.ForLedger(action.LedgerFilter) + case action.TransactionFilter != "": + ops.ForTransaction(action.TransactionFilter) + } + + action.Err = ops.Page(action.PagingParams).Select(&action.Records) +} + +// loadLedgers populates the ledger cache for this action +func (action *PaymentsIndexAction) loadLedgers() { + for _, op := range action.Records { + action.Ledgers.Queue(op.LedgerSequence()) + } + + action.Err = action.Ledgers.Load(action.HistoryQ()) +} + +func (action *PaymentsIndexAction) loadPage() { + for _, record := range action.Records { + var res hal.Pageable + + ledger, found := action.Ledgers.Records[record.LedgerSequence()] + if !found { + msg := fmt.Sprintf("could not find ledger data for sequence %d", record.LedgerSequence()) + action.Err = errors.New(msg) + return + } + + res, action.Err = resource.NewOperation(action.Ctx, record, ledger) + if action.Err != nil { + return + } + action.Page.Add(res) + } + + action.Page.BaseURL = action.BaseURL() + action.Page.BasePath = action.Path() + action.Page.Limit = action.PagingParams.Limit + action.Page.Cursor = action.PagingParams.Cursor + action.Page.Order = action.PagingParams.Order + action.Page.PopulateLinks() +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_payment_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_payment_test.go new file mode 100644 index 0000000..16c02ed --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_payment_test.go @@ -0,0 +1,65 @@ +package horizon + +import ( + "testing" + "time" + + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stellar/go/services/horizon/internal/resource/operations" +) + +func TestPaymentActions(t *testing.T) { + ht := StartHTTPTest(t, "base") + defer ht.Finish() + + w := ht.Get("/payments") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(4, w.Body) + } + + // filtered by ledger + w = ht.Get("/ledgers/1/payments") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(0, w.Body) + } + + w = ht.Get("/ledgers/3/payments") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(1, w.Body) + } + + // filtered by account + w = ht.Get("/accounts/GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2/payments") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(1, w.Body) + } + + // switch scenarios + ht.T.Scenario("pathed_payment") + + // filtered by transaction + w = ht.Get("/transactions/b52f16ffb98c047e33b9c2ec30880330cde71f85b3443dae2c5cb86c7d4d8452/payments") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(0, w.Body) + } + + w = ht.Get("/transactions/1d2a4be72470658f68db50eef29ea0af3f985ce18b5c218f03461d40c47dc292/payments") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(1, w.Body) + } +} + +func TestPayment_CreatedAt(t *testing.T) { + ht := StartHTTPTest(t, "base") + defer ht.Finish() + + w := ht.Get("/ledgers/3/payments") + records := []operations.Base{} + ht.UnmarshalPage(w.Body, &records) + + l := history.Ledger{} + hq := history.Q{Session: ht.HorizonSession()} + ht.Require.NoError(hq.LedgerBySequence(&l, 3)) + + ht.Assert.WithinDuration(l.ClosedAt, records[0].LedgerCloseTime, 1*time.Second) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_rate_limit_exceeded.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_rate_limit_exceeded.go new file mode 100644 index 0000000..242bc84 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_rate_limit_exceeded.go @@ -0,0 +1,28 @@ +package horizon + +import ( + "net/http" + + "github.com/zenazn/goji/web" + + "github.com/stellar/go/services/horizon/internal/render/problem" +) + +// RateLimitExceededAction renders a 429 response +type RateLimitExceededAction struct { + Action + App *App +} + +// ServeHTTPC is a method for web.Handler +func (action RateLimitExceededAction) ServeHTTP(w http.ResponseWriter, r *http.Request) { + ap := &action.Action + c := web.C{ + Env: map[interface{}]interface{}{ + "app": action.App, + }, + } + ap.Prepare(c, w, r) + ap.App = action.App + problem.Render(action.Ctx, action.W, problem.RateLimitExceeded) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_root.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_root.go new file mode 100644 index 0000000..187a750 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_root.go @@ -0,0 +1,30 @@ +package horizon + +import ( + "github.com/stellar/go/services/horizon/internal/ledger" + "github.com/stellar/go/services/horizon/internal/render/hal" + "github.com/stellar/go/services/horizon/internal/resource" +) + +// RootAction provides a summary of the horizon instance and links to various +// useful endpoints +type RootAction struct { + Action +} + +// JSON renders the json response for RootAction +func (action *RootAction) JSON() { + action.App.UpdateStellarCoreInfo() + + var res resource.Root + res.Populate( + action.Ctx, + ledger.CurrentState(), + action.App.horizonVersion, + action.App.coreVersion, + action.App.networkPassphrase, + action.App.protocolVersion, + ) + + hal.Render(action.W, res) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_root_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_root_test.go new file mode 100644 index 0000000..a15a08a --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_root_test.go @@ -0,0 +1,35 @@ +package horizon + +import ( + "encoding/json" + "testing" + + "github.com/stellar/go/services/horizon/internal/resource" + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestRootAction(t *testing.T) { + ht := StartHTTPTest(t, "base") + defer ht.Finish() + + server := test.NewStaticMockServer(`{ + "info": { + "network": "test", + "build": "test-core", + "protocol_version": 4 + } + }`) + defer server.Close() + + ht.App.horizonVersion = "test-horizon" + ht.App.config.StellarCoreURL = server.URL + + w := ht.Get("/") + if ht.Assert.Equal(200, w.Code) { + var actual resource.Root + err := json.Unmarshal(w.Body.Bytes(), &actual) + ht.Require.NoError(err) + ht.Assert.Equal("test-horizon", actual.HorizonVersion) + ht.Assert.Equal("test-core", actual.StellarCoreVersion) + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_trade.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_trade.go new file mode 100644 index 0000000..bad82e6 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_trade.go @@ -0,0 +1,91 @@ +package horizon + +import ( + "errors" + + "github.com/stellar/go/services/horizon/internal/db2" + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stellar/go/services/horizon/internal/render/hal" + "github.com/stellar/go/services/horizon/internal/resource" + "github.com/stellar/go/xdr" +) + +type TradeIndexAction struct { + Action + BaseAssetFilter xdr.Asset + HasBaseAssetFilter bool + CounterAssetFilter xdr.Asset + HasCounterAssetFilter bool + PagingParams db2.PageQuery + Records []history.Trade + Page hal.Page +} + +// JSON is a method for actions.JSON +func (action *TradeIndexAction) JSON() { + action.Do( + action.EnsureHistoryFreshness, + action.loadParams, + action.loadRecords, + action.loadPage, + func() { + hal.Render(action.W, action.Page) + }, + ) +} + +// loadParams sets action.Query from the request params +func (action *TradeIndexAction) loadParams() { + action.PagingParams = action.GetPageQuery() + action.BaseAssetFilter, action.HasBaseAssetFilter = action.MaybeGetAsset("base_") + action.CounterAssetFilter, action.HasCounterAssetFilter = action.MaybeGetAsset("counter_") +} + +// loadRecords populates action.Records +func (action *TradeIndexAction) loadRecords() { + trades := action.HistoryQ().Trades() + + if action.HasBaseAssetFilter { + + baseAssetId, err := action.HistoryQ().GetAssetID(action.BaseAssetFilter) + if err != nil { + action.Err = err + return + } + + if action.HasCounterAssetFilter { + + counterAssetId, err := action.HistoryQ().GetAssetID(action.CounterAssetFilter) + if err != nil { + action.Err = err + return + } + trades = action.HistoryQ().TradesForAssetPair(baseAssetId, counterAssetId) + } else { + action.Err = errors.New("this endpoint supports asset pairs but only one asset supplied") + return + } + } + action.Err = trades.Page(action.PagingParams).Select(&action.Records) +} + +// loadPage populates action.Page +func (action *TradeIndexAction) loadPage() { + for _, record := range action.Records { + var res resource.Trade + + action.Err = res.Populate(action.Ctx, record) + if action.Err != nil { + return + } + + action.Page.Add(res) + } + + action.Page.BaseURL = action.BaseURL() + action.Page.BasePath = action.Path() + action.Page.Limit = action.PagingParams.Limit + action.Page.Cursor = action.PagingParams.Cursor + action.Page.Order = action.PagingParams.Order + action.Page.PopulateLinks() +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_trade_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_trade_test.go new file mode 100644 index 0000000..980cb0f --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_trade_test.go @@ -0,0 +1,93 @@ +package horizon + +import ( + "net/url" + "testing" + "time" + + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stellar/go/services/horizon/internal/resource" +) + +func TestTradeActions_Index(t *testing.T) { + ht := StartHTTPTest(t, "trades") + defer ht.Finish() + + // All trades + w := ht.Get("/trades") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(1, w.Body) + } + + // ensure created_at is populated correctly + records := []resource.Trade{} + ht.UnmarshalPage(w.Body, &records) + + l := history.Ledger{} + hq := history.Q{Session: ht.HorizonSession()} + ht.Require.NoError(hq.LedgerBySequence(&l, 6)) + + ht.Assert.WithinDuration(l.ClosedAt, records[0].LedgerCloseTime, 1*time.Second) + + // + var q = make(url.Values) + q.Add("base_asset_type", "credit_alphanum4") + q.Add("base_asset_code", "USD") + q.Add("base_asset_issuer", "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4") + q.Add("counter_asset_type", "credit_alphanum4") + q.Add("counter_asset_code", "EUR") + q.Add("counter_asset_issuer", "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG") + + + w = ht.Get("/trades?" + q.Encode()) + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(1, w.Body) + + records := []map[string]interface{}{} + ht.UnmarshalPage(w.Body, &records) + + ht.Assert.Contains(records[0], "base_amount") + ht.Assert.Contains(records[0], "counter_amount") + } + + q = make(url.Values) + q.Add("base_asset_type", "credit_alphanum4") + q.Add("base_asset_code", "EUR") + q.Add("base_asset_issuer", "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG") + q.Add("counter_asset_type", "credit_alphanum4") + q.Add("counter_asset_code", "USD") + q.Add("counter_asset_issuer", "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4") + + w = ht.Get("/trades?" + q.Encode()) + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(1, w.Body) + + records := []map[string]interface{}{} + ht.UnmarshalPage(w.Body, &records) + + ht.Assert.Contains(records[0], "base_amount") + ht.Assert.Contains(records[0], "counter_amount") + } + +} + +func TestTradeActions_IndexRegressions(t *testing.T) { + ht := StartHTTPTest(t, "trades") + defer ht.Finish() + + // Regression: https://github.com/stellar/go/services/horizon/internal/issues/318 + var q = make(url.Values) + q.Add("base_asset_type", "credit_alphanum4") + q.Add("base_asset_code", "EUR") + q.Add("base_asset_issuer", "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG") + q.Add("counter_asset_type", "native") + + w := ht.Get("/trades?" + q.Encode()) + + ht.Assert.Equal(404, w.Code) + + // Old version + //if ht.Assert.Equal(200, w.Code) { + // ht.Assert.PageOf(0, w.Body) + //} +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_transaction.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_transaction.go new file mode 100644 index 0000000..1a79bbf --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_transaction.go @@ -0,0 +1,223 @@ +package horizon + +import ( + "net/http" + + "github.com/stellar/go/services/horizon/internal/db2" + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stellar/go/services/horizon/internal/render/hal" + "github.com/stellar/go/services/horizon/internal/render/problem" + "github.com/stellar/go/services/horizon/internal/render/sse" + "github.com/stellar/go/services/horizon/internal/resource" + "github.com/stellar/go/services/horizon/internal/txsub" +) + +// This file contains the actions: +// +// TransactionIndexAction: pages of transactions +// TransactionShowAction: single transaction by sequence, by hash or id + +// TransactionIndexAction renders a page of ledger resources, identified by +// a normal page query. +type TransactionIndexAction struct { + Action + LedgerFilter int32 + AccountFilter string + PagingParams db2.PageQuery + Records []history.Transaction + Page hal.Page +} + +// JSON is a method for actions.JSON +func (action *TransactionIndexAction) JSON() { + action.Do( + action.EnsureHistoryFreshness, + action.loadParams, + action.ValidateCursorWithinHistory, + action.loadRecords, + action.loadPage, + func() { + hal.Render(action.W, action.Page) + }, + ) +} + +// SSE is a method for actions.SSE +func (action *TransactionIndexAction) SSE(stream sse.Stream) { + action.Setup( + action.EnsureHistoryFreshness, + action.loadParams, + action.ValidateCursorWithinHistory, + ) + action.Do( + action.loadRecords, + func() { + stream.SetLimit(int(action.PagingParams.Limit)) + records := action.Records[stream.SentCount():] + + for _, record := range records { + var res resource.Transaction + res.Populate(action.Ctx, record) + stream.Send(sse.Event{ID: res.PagingToken(), Data: res}) + } + }, + ) +} + +func (action *TransactionIndexAction) loadParams() { + action.ValidateCursorAsDefault() + action.AccountFilter = action.GetString("account_id") + action.LedgerFilter = action.GetInt32("ledger_id") + action.PagingParams = action.GetPageQuery() +} + +func (action *TransactionIndexAction) loadRecords() { + q := action.HistoryQ() + txs := q.Transactions() + + switch { + case action.AccountFilter != "": + txs.ForAccount(action.AccountFilter) + case action.LedgerFilter > 0: + txs.ForLedger(action.LedgerFilter) + } + + action.Err = txs.Page(action.PagingParams).Select(&action.Records) +} + +func (action *TransactionIndexAction) loadPage() { + for _, record := range action.Records { + var res resource.Transaction + res.Populate(action.Ctx, record) + action.Page.Add(res) + } + + action.Page.BaseURL = action.BaseURL() + action.Page.BasePath = action.Path() + action.Page.Limit = action.PagingParams.Limit + action.Page.Cursor = action.PagingParams.Cursor + action.Page.Order = action.PagingParams.Order + action.Page.PopulateLinks() +} + +// TransactionShowAction renders a ledger found by its sequence number. +type TransactionShowAction struct { + Action + Hash string + Record history.Transaction + Resource resource.Transaction +} + +func (action *TransactionShowAction) loadParams() { + action.Hash = action.GetString("id") +} + +func (action *TransactionShowAction) loadRecord() { + action.Err = action.HistoryQ().TransactionByHash(&action.Record, action.Hash) +} + +func (action *TransactionShowAction) loadResource() { + action.Resource.Populate(action.Ctx, action.Record) +} + +// JSON is a method for actions.JSON +func (action *TransactionShowAction) JSON() { + action.Do( + action.EnsureHistoryFreshness, + action.loadParams, + action.loadRecord, + action.loadResource, + func() { hal.Render(action.W, action.Resource) }, + ) +} + +// TransactionCreateAction submits a transaction to the stellar-core network +// on behalf of the requesting client. +type TransactionCreateAction struct { + Action + TX string + Result txsub.Result + Resource resource.TransactionSuccess +} + +// JSON format action handler +func (action *TransactionCreateAction) JSON() { + action.Do( + action.loadTX, + action.loadResult, + action.loadResource, + + func() { + hal.Render(action.W, action.Resource) + }) +} + +func (action *TransactionCreateAction) loadTX() { + action.ValidateBodyType() + action.TX = action.GetString("tx") +} + +func (action *TransactionCreateAction) loadResult() { + submission := action.App.submitter.Submit(action.Ctx, action.TX) + + select { + case result := <-submission: + action.Result = result + case <-action.Ctx.Done(): + action.Err = &problem.Timeout + } +} + +func (action *TransactionCreateAction) loadResource() { + if action.Result.Err == nil { + action.Resource.Populate(action.Ctx, action.Result) + return + } + + if action.Result.Err == txsub.ErrTimeout { + action.Err = &problem.Timeout + return + } + + if action.Result.Err == txsub.ErrCanceled { + action.Err = &problem.Timeout + return + } + + switch err := action.Result.Err.(type) { + case *txsub.FailedTransactionError: + rcr := resource.TransactionResultCodes{} + rcr.Populate(action.Ctx, err) + + action.Err = &problem.P{ + Type: "transaction_failed", + Title: "Transaction Failed", + Status: http.StatusBadRequest, + Detail: "The transaction failed when submitted to the stellar network. " + + "The `extras.result_codes` field on this response contains further " + + "details. Descriptions of each code can be found at: " + + "https://www.stellar.org/developers/learn/concepts/list-of-operations.html", + Extras: map[string]interface{}{ + "envelope_xdr": action.Result.EnvelopeXDR, + "result_xdr": err.ResultXDR, + "result_codes": rcr, + }, + } + case *txsub.MalformedTransactionError: + action.Err = &problem.P{ + Type: "transaction_malformed", + Title: "Transaction Malformed", + Status: http.StatusBadRequest, + Detail: "Horizon could not decode the transaction envelope in this " + + "request. A transaction should be an XDR TransactionEnvelope struct " + + "encoded using base64. The envelope read from this request is " + + "echoed in the `extras.envelope_xdr` field of this response for your " + + "convenience.", + Extras: map[string]interface{}{ + "envelope_xdr": err.EnvelopeXDR, + }, + } + default: + action.Err = err + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/actions_transaction_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_transaction_test.go new file mode 100644 index 0000000..1b86e51 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/actions_transaction_test.go @@ -0,0 +1,108 @@ +package horizon + +import ( + "encoding/json" + "net/url" + "testing" + + "github.com/stellar/go/services/horizon/internal/resource" + "github.com/stellar/go/services/horizon/internal/txsub" + "github.com/stellar/go/services/horizon/internal/txsub/sequence" +) + +func TestTransactionActions_Show(t *testing.T) { + ht := StartHTTPTest(t, "base") + defer ht.Finish() + + w := ht.Get("/transactions/2374e99349b9ef7dba9a5db3339b78fda8f34777b1af33ba468ad5c0df946d4d") + + if ht.Assert.Equal(200, w.Code) { + var actual resource.Transaction + err := json.Unmarshal(w.Body.Bytes(), &actual) + ht.Require.NoError(err) + + ht.Assert.Equal( + "2374e99349b9ef7dba9a5db3339b78fda8f34777b1af33ba468ad5c0df946d4d", + actual.Hash, + ) + } + + // missing tx + w = ht.Get("/transactions/not_real") + ht.Assert.Equal(404, w.Code) +} + +func TestTransactionActions_Index(t *testing.T) { + ht := StartHTTPTest(t, "base") + defer ht.Finish() + + w := ht.Get("/transactions") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(4, w.Body) + } + + // filtered by ledger + w = ht.Get("/ledgers/1/transactions") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(0, w.Body) + } + + w = ht.Get("/ledgers/2/transactions") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(3, w.Body) + } + + w = ht.Get("/ledgers/3/transactions") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(1, w.Body) + } + + // missing ledger + w = ht.Get("/ledgers/100/transactions") + ht.Assert.Equal(404, w.Code) + + // filtering by account + w = ht.Get("/accounts/GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H/transactions") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(3, w.Body) + } + + w = ht.Get("/accounts/GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2/transactions") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(1, w.Body) + } + + w = ht.Get("/accounts/GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU/transactions") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.PageOf(2, w.Body) + } + + // regression: https://github.com/stellar/go/services/horizon/internal/issues/365 + w = ht.Get("/transactions?limit=200") + ht.Require.Equal(200, w.Code) + w = ht.Get("/transactions?limit=201") + ht.Assert.Equal(400, w.Code) + w = ht.Get("/transactions?limit=0") + ht.Assert.Equal(400, w.Code) + +} + +func TestTransactionActions_Post(t *testing.T) { + ht := StartHTTPTest(t, "base") + defer ht.Finish() + + form := url.Values{"tx": []string{"AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAO5rKAAAAAAAAAAABVvwF9wAAAECDzqvkQBQoNAJifPRXDoLhvtycT3lFPCQ51gkdsFHaBNWw05S/VhW0Xgkr0CBPE4NaFV2Kmcs3ZwLmib4TRrML"}} + + // existing transaction + w := ht.Post("/transactions", form) + ht.Assert.Equal(200, w.Code) + + // sequence buffer full + ht.App.submitter.Results = &txsub.MockResultProvider{ + Results: []txsub.Result{ + {Err: sequence.ErrNoMoreRoom}, + }, + } + w = ht.Post("/transactions", form) + ht.Assert.Equal(503, w.Code) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/app.go b/vendor/src/github.com/stellar/go/services/horizon/internal/app.go new file mode 100644 index 0000000..0a6b6cf --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/app.go @@ -0,0 +1,308 @@ +package horizon + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "net/http" + "runtime" + "sync" + "time" + + "github.com/stellar/go/support/app" + + "github.com/garyburd/redigo/redis" + metrics "github.com/rcrowley/go-metrics" + "github.com/stellar/go/build" + "github.com/stellar/go/services/horizon/internal/db2/core" + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stellar/go/services/horizon/internal/friendbot" + "github.com/stellar/go/services/horizon/internal/ingest" + "github.com/stellar/go/services/horizon/internal/ledger" + "github.com/stellar/go/services/horizon/internal/log" + "github.com/stellar/go/services/horizon/internal/paths" + "github.com/stellar/go/services/horizon/internal/reap" + "github.com/stellar/go/services/horizon/internal/render/sse" + "github.com/stellar/go/services/horizon/internal/txsub" + "github.com/stellar/go/support/db" + "golang.org/x/net/context" + "golang.org/x/net/http2" + graceful "gopkg.in/tylerb/graceful.v1" +) + +// App represents the root of the state of a horizon instance. +type App struct { + config Config + web *Web + historyQ *history.Q + coreQ *core.Q + ctx context.Context + cancel func() + redis *redis.Pool + coreVersion string + horizonVersion string + networkPassphrase string + protocolVersion int32 + submitter *txsub.System + paths paths.Finder + friendbot *friendbot.Bot + ingester *ingest.System + reaper *reap.System + ticks *time.Ticker + + // metrics + metrics metrics.Registry + historyLatestLedgerGauge metrics.Gauge + historyElderLedgerGauge metrics.Gauge + horizonConnGauge metrics.Gauge + coreLatestLedgerGauge metrics.Gauge + coreElderLedgerGauge metrics.Gauge + coreConnGauge metrics.Gauge + goroutineGauge metrics.Gauge +} + +// NewApp constructs an new App instance from the provided config. +func NewApp(config Config) (*App, error) { + + result := &App{config: config} + result.horizonVersion = app.Version() + result.networkPassphrase = build.TestNetwork.Passphrase + result.ticks = time.NewTicker(1 * time.Second) + result.init() + return result, nil +} + +// Serve starts the horizon web server, binding it to a socket, setting up +// the shutdown signals. +func (a *App) Serve() { + + a.web.router.Compile() + http.Handle("/", a.web.router) + + addr := fmt.Sprintf(":%d", a.config.Port) + + srv := &graceful.Server{ + Timeout: 10 * time.Second, + + Server: &http.Server{ + Addr: addr, + Handler: http.DefaultServeMux, + }, + + ShutdownInitiated: func() { + log.Info("received signal, gracefully stopping") + a.Close() + }, + } + + http2.ConfigureServer(srv.Server, nil) + + log.Infof("Starting horizon on %s", addr) + + go a.run() + + var err error + if a.config.TLSCert != "" { + err = srv.ListenAndServeTLS(a.config.TLSCert, a.config.TLSKey) + } else { + err = srv.ListenAndServe() + } + + if err != nil { + log.Panic(err) + } + + log.Info("stopped") +} + +// Close cancels the app and forces the closure of db connections +func (a *App) Close() { + a.cancel() + a.ticks.Stop() + + a.historyQ.Session.DB.Close() + a.coreQ.Session.DB.Close() +} + +// HistoryQ returns a helper object for performing sql queries against the +// history portion of horizon's database. +func (a *App) HistoryQ() *history.Q { + return a.historyQ +} + +// HorizonSession returns a new session that loads data from the horizon +// database. The returned session is bound to `ctx`. +func (a *App) HorizonSession(ctx context.Context) *db.Session { + return &db.Session{DB: a.historyQ.Session.DB, Ctx: ctx} +} + +// CoreSession returns a new session that loads data from the stellar core +// database. The returned session is bound to `ctx`. +func (a *App) CoreSession(ctx context.Context) *db.Session { + return &db.Session{DB: a.coreQ.Session.DB, Ctx: ctx} +} + +// CoreQ returns a helper object for performing sql queries aginst the +// stellar core database. +func (a *App) CoreQ() *core.Q { + return a.coreQ +} + +// IsHistoryStale returns true if the latest history ledger is more than +// `StaleThreshold` ledgers behind the latest core ledger +func (a *App) IsHistoryStale() bool { + if a.config.StaleThreshold == 0 { + return false + } + + ls := ledger.CurrentState() + return (ls.CoreLatest - ls.HistoryLatest) > int32(a.config.StaleThreshold) +} + +// UpdateLedgerState triggers a refresh of several metrics gauges, such as open +// db connections and ledger state +func (a *App) UpdateLedgerState() { + var err error + var next ledger.State + + err = a.CoreQ().LatestLedger(&next.CoreLatest) + if err != nil { + goto Failed + } + + err = a.CoreQ().ElderLedger(&next.CoreElder) + if err != nil { + goto Failed + } + + err = a.HistoryQ().LatestLedger(&next.HistoryLatest) + if err != nil { + goto Failed + } + + err = a.HistoryQ().ElderLedger(&next.HistoryElder) + if err != nil { + goto Failed + } + + ledger.SetState(next) + return + +Failed: + log.WithStack(err). + WithField("err", err.Error()). + Error("failed to load ledger state") + +} + +// UpdateStellarCoreInfo updates the value of coreVersion and networkPassphrase +// from the Stellar core API. +func (a *App) UpdateStellarCoreInfo() { + if a.config.StellarCoreURL == "" { + return + } + + fail := func(err error) { + log.Warnf("could not load stellar-core info: %s", err) + } + + resp, err := http.Get(fmt.Sprint(a.config.StellarCoreURL, "/info")) + + if err != nil { + fail(err) + return + } + + defer resp.Body.Close() + contents, err := ioutil.ReadAll(resp.Body) + if err != nil { + fail(err) + return + } + + var responseJSON map[string]*json.RawMessage + err = json.Unmarshal(contents, &responseJSON) + if err != nil { + fail(err) + return + } + + var serverInfo map[string]interface{} + err = json.Unmarshal(*responseJSON["info"], &serverInfo) + if err != nil { + fail(err) + return + } + + // TODO: make resilient to changes in stellar-core's info output + a.coreVersion = serverInfo["build"].(string) + a.networkPassphrase = serverInfo["network"].(string) + a.protocolVersion = int32(serverInfo["protocol_version"].(float64)) +} + +// UpdateMetrics triggers a refresh of several metrics gauges, such as open +// db connections and ledger state +func (a *App) UpdateMetrics() { + a.goroutineGauge.Update(int64(runtime.NumGoroutine())) + ls := ledger.CurrentState() + a.historyLatestLedgerGauge.Update(int64(ls.HistoryLatest)) + a.historyElderLedgerGauge.Update(int64(ls.HistoryElder)) + a.coreLatestLedgerGauge.Update(int64(ls.CoreLatest)) + a.coreElderLedgerGauge.Update(int64(ls.CoreElder)) + + a.horizonConnGauge.Update(int64(a.historyQ.Session.DB.Stats().OpenConnections)) + a.coreConnGauge.Update(int64(a.coreQ.Session.DB.Stats().OpenConnections)) +} + +// DeleteUnretainedHistory forwards to the app's reaper. See +// `reap.DeleteUnretainedHistory` for details +func (a *App) DeleteUnretainedHistory() error { + return a.reaper.DeleteUnretainedHistory() +} + +// Tick triggers horizon to update all of it's background processes such as +// transaction submission, metrics, ingestion and reaping. +func (a *App) Tick() { + var wg sync.WaitGroup + log.Debug("ticking app") + // update ledger state and stellar-core info in parallel + wg.Add(2) + go func() { a.UpdateLedgerState(); wg.Done() }() + go func() { a.UpdateStellarCoreInfo(); wg.Done() }() + wg.Wait() + + if a.ingester != nil { + go a.ingester.Tick() + } + + wg.Add(2) + go func() { a.reaper.Tick(); wg.Done() }() + go func() { a.submitter.Tick(a.ctx); wg.Done() }() + wg.Wait() + + sse.Tick() + + // finally, update metrics + a.UpdateMetrics() + log.Debug("finished ticking app") +} + +// Init initializes app, using the config to populate db connections and +// whatnot. +func (a *App) init() { + appInit.Run(a) +} + +// run is the function that runs in the background that triggers Tick each +// second +func (a *App) run() { + for { + select { + case <-a.ticks.C: + a.Tick() + case <-a.ctx.Done(): + log.Info("finished background ticker") + return + } + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/app_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/app_test.go new file mode 100644 index 0000000..23dbf77 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/app_test.go @@ -0,0 +1,106 @@ +package horizon + +import ( + "net/http" + "testing" + + "github.com/stellar/go/services/horizon/internal/render/sse" + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestNewApp(t *testing.T) { + tt := test.Start(t) + defer tt.Finish() + + config := NewTestConfig() + config.SentryDSN = "Not a url" + + tt.Assert.Panics(func() { + app, _ := NewApp(config) + app.Close() + }) +} + +func TestGenericHTTPFeatures(t *testing.T) { + ht := StartHTTPTest(t, "base") + defer ht.Finish() + + // CORS + w := ht.Get("/") + if ht.Assert.Equal(200, w.Code) { + ht.Assert.Empty(w.HeaderMap.Get("Access-Control-Allow-Origin")) + } + + w = ht.Get("/", func(r *http.Request) { + r.Header.Set("Origin", "somewhere.com") + }) + + if ht.Assert.Equal(200, w.Code) { + ht.Assert.Equal( + "somewhere.com", + w.HeaderMap.Get("Access-Control-Allow-Origin"), + ) + } + + // Trailing slash is stripped + w = ht.Get("/ledgers") + ht.Assert.Equal(200, w.Code) + w = ht.Get("/ledgers/") + ht.Assert.Equal(200, w.Code) +} + +func TestMetrics(t *testing.T) { + ht := StartHTTPTest(t, "base") + defer ht.Finish() + + hl := ht.App.historyLatestLedgerGauge + he := ht.App.historyElderLedgerGauge + cl := ht.App.coreLatestLedgerGauge + ce := ht.App.coreElderLedgerGauge + + ht.Require.EqualValues(0, hl.Value()) + ht.Require.EqualValues(0, he.Value()) + ht.Require.EqualValues(0, cl.Value()) + ht.Require.EqualValues(0, ce.Value()) + + ht.App.UpdateLedgerState() + ht.App.UpdateMetrics() + + ht.Require.EqualValues(3, hl.Value()) + ht.Require.EqualValues(1, he.Value()) + ht.Require.EqualValues(3, cl.Value()) + ht.Require.EqualValues(1, ce.Value()) +} + +func TestTick(t *testing.T) { + ht := StartHTTPTest(t, "base") + defer ht.Finish() + + // stop the ticker so we can manually do it + ht.App.ticks.Stop() + + // Regression. Insure that SSE is pumped on each tick. + + // force a tick to close replace the "Pumped()" chan, protecting the test from + // any ticks caused before a.ticks.Stop() was ran. + sse.Tick() + + ch := sse.Pumped() + select { + case <-ch: + t.Error("sse.Pumped() triggered prior to tick") + t.FailNow() + default: + // no-op, channel is in the correct state when we cannot read from it + } + + sse.Tick() + + select { + case <-ch: + // no-op. Success! + default: + t.Error("sse.Pumped() did not trigger after tick") + t.FailNow() + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/assertions_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/assertions_test.go new file mode 100644 index 0000000..ee25065 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/assertions_test.go @@ -0,0 +1,74 @@ +package horizon + +import ( + "bytes" + "encoding/json" + + "github.com/stellar/go/services/horizon/internal/render/problem" + "github.com/stellar/go/services/horizon/internal/test" + "github.com/stretchr/testify/assert" +) + +// Assertions provides an assertions helper. Custom assertions for this package +// can be defined as methods on this struct. +type Assertions struct { + *assert.Assertions +} + +func (a *Assertions) PageOf(length int, body *bytes.Buffer) bool { + + var result map[string]interface{} + err := json.Unmarshal(body.Bytes(), &result) + + if !a.NoError(err, "failed to parse body") { + return false + } + + embedded, ok := result["_embedded"] + + if !a.True(ok, "_embedded not found in response") { + return false + } + + records, ok := embedded.(map[string]interface{})["records"] + + if !a.True(ok, "no 'records' property on _embedded object") { + return false + } + + return a.Len(records, length) +} + +// Problem asserts that `body` is a serialized problem equal to `expected`, +// using Type and Status to compare for equality. +func (a *Assertions) Problem(body *bytes.Buffer, expected problem.P) bool { + var actual problem.P + err := json.Unmarshal(body.Bytes(), &actual) + if !a.NoError(err, "failed to parse body") { + return false + } + + problem.Inflate(test.Context(), &expected) + + if expected.Type != "" && a.Equal(expected.Type, actual.Type, "problem type didn't match") { + return false + } + + if expected.Status != 0 && a.Equal(expected.Status, actual.Status, "problem status didn't match") { + return false + } + + return true +} + +// ProblemType asserts that the provided `body` is a JSON serialized problem +// whose type is `typ` +func (a *Assertions) ProblemType(body *bytes.Buffer, typ string) bool { + var actual problem.P + err := json.Unmarshal(body.Bytes(), &actual) + if !a.NoError(err, "failed to parse body") { + return false + } + + return a.Problem(body, problem.P{Type: typ}) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/assets/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/assets/main.go new file mode 100644 index 0000000..cce7e73 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/assets/main.go @@ -0,0 +1,74 @@ +//Package assets is a simple helper package to help convert to/from xdr.AssetType values +package assets + +import ( + "github.com/go-errors/errors" + "github.com/stellar/go/xdr" +) + +// ErrInvalidString gets returns when the string form of the asset type is invalid +var ErrInvalidString = errors.New("invalid asset type: was not one of 'native', 'credit_alphanum4', 'credit_alphanum12'") + +//ErrInvalidValue gets returned when the xdr.AssetType int value is not one of the valid enum values +var ErrInvalidValue = errors.New("unknown asset type, cannot convert to string") + +// AssetTypeMap is the read-only (i.e. don't modify it) map from string names to xdr.AssetType +// values +var AssetTypeMap = map[string]xdr.AssetType{ + "native": xdr.AssetTypeAssetTypeNative, + "credit_alphanum4": xdr.AssetTypeAssetTypeCreditAlphanum4, + "credit_alphanum12": xdr.AssetTypeAssetTypeCreditAlphanum12, +} + +//Parse creates an asset from the provided strings. See AssetTypeMap for valid strings for aType. +func Parse(aType string) (result xdr.AssetType, err error) { + + result, ok := AssetTypeMap[aType] + + if !ok { + err = errors.New(ErrInvalidString) + } + + return +} + +//String returns the appropriate string representation of the provided xdr.AssetType. +func String(aType xdr.AssetType) (string, error) { + for s, v := range AssetTypeMap { + if v == aType { + return s, nil + } + } + + return "", errors.New(ErrInvalidValue) +} + +// MustString is the panicky version of String. +func MustString(aType xdr.AssetType) string { + s, err := String(aType) + if err != nil { + panic(err) + } + return s +} + +// Equals returns true if l and r are equivalent. +func Equals(l, r xdr.Asset) bool { + var le, re struct { + T xdr.AssetType + C string + I string + } + + err := l.Extract(&le.T, &le.C, &le.I) + if err != nil { + panic(err) + } + + err = r.Extract(&re.T, &re.C, &re.I) + if err != nil { + panic(err) + } + + return le == re +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/assets/main_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/assets/main_test.go new file mode 100644 index 0000000..f00e647 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/assets/main_test.go @@ -0,0 +1,58 @@ +package assets + +import ( + "testing" + + "github.com/go-errors/errors" + . "github.com/smartystreets/goconvey/convey" + "github.com/stellar/go/xdr" +) + +func TestAssets(t *testing.T) { + Convey("Parse", t, func() { + var ( + result xdr.AssetType + err error + ) + + result, err = Parse("native") + So(result, ShouldEqual, xdr.AssetTypeAssetTypeNative) + So(err, ShouldBeNil) + + result, err = Parse("credit_alphanum4") + So(result, ShouldEqual, xdr.AssetTypeAssetTypeCreditAlphanum4) + So(err, ShouldBeNil) + + result, err = Parse("credit_alphanum12") + So(result, ShouldEqual, xdr.AssetTypeAssetTypeCreditAlphanum12) + So(err, ShouldBeNil) + + _, err = Parse("not_real") + So(errors.Is(err, ErrInvalidString), ShouldBeTrue) + + _, err = Parse("") + So(errors.Is(err, ErrInvalidString), ShouldBeTrue) + }) + + Convey("String", t, func() { + var ( + result string + err error + ) + + result, err = String(xdr.AssetTypeAssetTypeNative) + So(result, ShouldEqual, "native") + So(err, ShouldBeNil) + + result, err = String(xdr.AssetTypeAssetTypeCreditAlphanum4) + So(result, ShouldEqual, "credit_alphanum4") + So(err, ShouldBeNil) + + result, err = String(xdr.AssetTypeAssetTypeCreditAlphanum12) + So(result, ShouldEqual, "credit_alphanum12") + So(err, ShouldBeNil) + + _, err = String(xdr.AssetType(15)) + So(errors.Is(err, ErrInvalidValue), ShouldBeTrue) + }) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/codes/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/codes/main.go new file mode 100644 index 0000000..19a7340 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/codes/main.go @@ -0,0 +1,278 @@ +//Package codes is a helper package to help convert to transaction and operation result codes +//to strings used in horizon. +package codes + +import ( + "github.com/go-errors/errors" + "github.com/stellar/go/xdr" +) + +// ErrUnknownCode is returned when an unexepcted value is provided to `String` +var ErrUnknownCode = errors.New("Unknown result code") + +const ( + // OpSuccess is the string code used to specify the operation was successful + OpSuccess = "op_success" + // OpMalformed is the string code used to specify the operation was malformed + // in some way. + OpMalformed = "op_malformed" + // OpUnderfunded is the string code used to specify the operation failed + // due to a lack of funds. + OpUnderfunded = "op_underfunded" + + // OpLowReserve is the string code used to specify the operation failed + // because the account in question does not have enough balance to satisfy + // what their new minimum balance would be. + OpLowReserve = "op_low_reserve" + + // OpLineFull occurs when a payment would cause a destination account to + // exceed their declared trust limit for the asset being sent. + OpLineFull = "op_line_full" + + // OpNoIssuer occurs when a operation does not correctly specify an issuing + // asset + OpNoIssuer = "op_no_issuer" +) + +//String returns the appropriate string representation of the provided result code +func String(code interface{}) (string, error) { + switch code := code.(type) { + case xdr.TransactionResultCode: + switch code { + case xdr.TransactionResultCodeTxSuccess: + return "tx_success", nil + case xdr.TransactionResultCodeTxFailed: + return "tx_failed", nil + case xdr.TransactionResultCodeTxTooEarly: + return "tx_too_early", nil + case xdr.TransactionResultCodeTxTooLate: + return "tx_too_late", nil + case xdr.TransactionResultCodeTxMissingOperation: + return "tx_missing_operation", nil + case xdr.TransactionResultCodeTxBadSeq: + return "tx_bad_seq", nil + case xdr.TransactionResultCodeTxBadAuth: + return "tx_bad_auth", nil + case xdr.TransactionResultCodeTxInsufficientBalance: + return "tx_insufficient_balance", nil + case xdr.TransactionResultCodeTxNoAccount: + return "tx_no_source_account", nil + case xdr.TransactionResultCodeTxInsufficientFee: + return "tx_insufficient_fee", nil + case xdr.TransactionResultCodeTxBadAuthExtra: + return "tx_bad_auth_extra", nil + case xdr.TransactionResultCodeTxInternalError: + return "tx_internal_error", nil + } + case xdr.OperationResultCode: + switch code { + case xdr.OperationResultCodeOpInner: + return "op_inner", nil + case xdr.OperationResultCodeOpBadAuth: + return "op_bad_auth", nil + case xdr.OperationResultCodeOpNoAccount: + return "op_no_source_account", nil + } + case xdr.CreateAccountResultCode: + switch code { + case xdr.CreateAccountResultCodeCreateAccountSuccess: + return OpSuccess, nil + case xdr.CreateAccountResultCodeCreateAccountMalformed: + return OpMalformed, nil + case xdr.CreateAccountResultCodeCreateAccountUnderfunded: + return OpUnderfunded, nil + case xdr.CreateAccountResultCodeCreateAccountLowReserve: + return OpLowReserve, nil + case xdr.CreateAccountResultCodeCreateAccountAlreadyExist: + return "op_already_exists", nil + } + case xdr.PaymentResultCode: + switch code { + case xdr.PaymentResultCodePaymentSuccess: + return OpSuccess, nil + case xdr.PaymentResultCodePaymentMalformed: + return OpMalformed, nil + case xdr.PaymentResultCodePaymentUnderfunded: + return OpUnderfunded, nil + case xdr.PaymentResultCodePaymentSrcNoTrust: + return "op_src_no_trust", nil + case xdr.PaymentResultCodePaymentSrcNotAuthorized: + return "op_src_not_authorized", nil + case xdr.PaymentResultCodePaymentNoDestination: + return "op_no_destination", nil + case xdr.PaymentResultCodePaymentNoTrust: + return "op_no_trust", nil + case xdr.PaymentResultCodePaymentNotAuthorized: + return "op_not_authorized", nil + case xdr.PaymentResultCodePaymentLineFull: + return OpLineFull, nil + case xdr.PaymentResultCodePaymentNoIssuer: + return OpNoIssuer, nil + } + case xdr.PathPaymentResultCode: + switch code { + case xdr.PathPaymentResultCodePathPaymentSuccess: + return OpSuccess, nil + case xdr.PathPaymentResultCodePathPaymentMalformed: + return OpMalformed, nil + case xdr.PathPaymentResultCodePathPaymentUnderfunded: + return OpUnderfunded, nil + case xdr.PathPaymentResultCodePathPaymentSrcNoTrust: + return "op_src_no_trust", nil + case xdr.PathPaymentResultCodePathPaymentSrcNotAuthorized: + return "op_src_not_authorized", nil + case xdr.PathPaymentResultCodePathPaymentNoDestination: + return "op_no_destination", nil + case xdr.PathPaymentResultCodePathPaymentNoTrust: + return "op_no_trust", nil + case xdr.PathPaymentResultCodePathPaymentNotAuthorized: + return "op_not_authorized", nil + case xdr.PathPaymentResultCodePathPaymentLineFull: + return OpLineFull, nil + case xdr.PathPaymentResultCodePathPaymentNoIssuer: + return OpNoIssuer, nil + case xdr.PathPaymentResultCodePathPaymentTooFewOffers: + return "op_too_few_offers", nil + case xdr.PathPaymentResultCodePathPaymentOfferCrossSelf: + return "op_cross_self", nil + case xdr.PathPaymentResultCodePathPaymentOverSendmax: + return "op_over_source_max", nil + } + case xdr.ManageOfferResultCode: + switch code { + case xdr.ManageOfferResultCodeManageOfferSuccess: + return OpSuccess, nil + case xdr.ManageOfferResultCodeManageOfferMalformed: + return OpMalformed, nil + case xdr.ManageOfferResultCodeManageOfferSellNoTrust: + return "op_sell_no_trust", nil + case xdr.ManageOfferResultCodeManageOfferBuyNoTrust: + return "op_buy_no_trust", nil + case xdr.ManageOfferResultCodeManageOfferSellNotAuthorized: + return "sell_not_authorized", nil + case xdr.ManageOfferResultCodeManageOfferBuyNotAuthorized: + return "buy_not_authorized", nil + case xdr.ManageOfferResultCodeManageOfferLineFull: + return OpLineFull, nil + case xdr.ManageOfferResultCodeManageOfferUnderfunded: + return OpUnderfunded, nil + case xdr.ManageOfferResultCodeManageOfferCrossSelf: + return "op_cross_self", nil + case xdr.ManageOfferResultCodeManageOfferSellNoIssuer: + return "op_sell_no_issuer", nil + case xdr.ManageOfferResultCodeManageOfferBuyNoIssuer: + return "buy_no_issuer", nil + case xdr.ManageOfferResultCodeManageOfferNotFound: + return "op_offer_not_found", nil + case xdr.ManageOfferResultCodeManageOfferLowReserve: + return OpLowReserve, nil + } + case xdr.SetOptionsResultCode: + switch code { + case xdr.SetOptionsResultCodeSetOptionsSuccess: + return OpSuccess, nil + case xdr.SetOptionsResultCodeSetOptionsLowReserve: + return OpLowReserve, nil + case xdr.SetOptionsResultCodeSetOptionsTooManySigners: + return "op_too_many_signers", nil + case xdr.SetOptionsResultCodeSetOptionsBadFlags: + return "op_bad_flags", nil + case xdr.SetOptionsResultCodeSetOptionsInvalidInflation: + return "op_invalid_inflation", nil + case xdr.SetOptionsResultCodeSetOptionsCantChange: + return "op_cant_change", nil + case xdr.SetOptionsResultCodeSetOptionsUnknownFlag: + return "op_unknown_flag", nil + case xdr.SetOptionsResultCodeSetOptionsThresholdOutOfRange: + return "op_threshold_out_of_range", nil + case xdr.SetOptionsResultCodeSetOptionsBadSigner: + return "op_bad_signer", nil + case xdr.SetOptionsResultCodeSetOptionsInvalidHomeDomain: + return "op_invalid_home_domain", nil + } + case xdr.ChangeTrustResultCode: + switch code { + case xdr.ChangeTrustResultCodeChangeTrustSuccess: + return OpSuccess, nil + case xdr.ChangeTrustResultCodeChangeTrustMalformed: + return OpMalformed, nil + case xdr.ChangeTrustResultCodeChangeTrustNoIssuer: + return OpNoIssuer, nil + case xdr.ChangeTrustResultCodeChangeTrustInvalidLimit: + return "op_invalid_limit", nil + case xdr.ChangeTrustResultCodeChangeTrustLowReserve: + return OpLowReserve, nil + } + case xdr.AllowTrustResultCode: + switch code { + case xdr.AllowTrustResultCodeAllowTrustSuccess: + return OpSuccess, nil + case xdr.AllowTrustResultCodeAllowTrustMalformed: + return OpMalformed, nil + case xdr.AllowTrustResultCodeAllowTrustNoTrustLine: + return "op_no_trustline", nil + case xdr.AllowTrustResultCodeAllowTrustTrustNotRequired: + return "op_not_required", nil + case xdr.AllowTrustResultCodeAllowTrustCantRevoke: + return "op_cant_revoke", nil + } + case xdr.AccountMergeResultCode: + switch code { + case xdr.AccountMergeResultCodeAccountMergeSuccess: + return OpSuccess, nil + case xdr.AccountMergeResultCodeAccountMergeMalformed: + return OpMalformed, nil + case xdr.AccountMergeResultCodeAccountMergeNoAccount: + return "op_no_account", nil + case xdr.AccountMergeResultCodeAccountMergeImmutableSet: + return "op_immutable_set", nil + case xdr.AccountMergeResultCodeAccountMergeHasSubEntries: + return "op_has_sub_entries", nil + } + case xdr.InflationResultCode: + switch code { + case xdr.InflationResultCodeInflationSuccess: + return OpSuccess, nil + case xdr.InflationResultCodeInflationNotTime: + return "op_not_time", nil + } + } + + return "", errors.New(ErrUnknownCode) +} + +// ForOperationResult returns the strong represtation used by horizon for the +// error code `opr` +func ForOperationResult(opr xdr.OperationResult) (string, error) { + if opr.Code != xdr.OperationResultCodeOpInner { + return String(opr.Code) + } + + ir := opr.MustTr() + var ic interface{} + + switch ir.Type { + case xdr.OperationTypeCreateAccount: + ic = ir.MustCreateAccountResult().Code + case xdr.OperationTypePayment: + ic = ir.MustPaymentResult().Code + case xdr.OperationTypePathPayment: + ic = ir.MustPathPaymentResult().Code + case xdr.OperationTypeManageOffer: + ic = ir.MustManageOfferResult().Code + case xdr.OperationTypeCreatePassiveOffer: + ic = ir.MustCreatePassiveOfferResult().Code + case xdr.OperationTypeSetOptions: + ic = ir.MustSetOptionsResult().Code + case xdr.OperationTypeChangeTrust: + ic = ir.MustChangeTrustResult().Code + case xdr.OperationTypeAllowTrust: + ic = ir.MustAllowTrustResult().Code + case xdr.OperationTypeAccountMerge: + ic = ir.MustAccountMergeResult().Code + case xdr.OperationTypeInflation: + ic = ir.MustInflationResult().Code + } + + return String(ic) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/codes/main_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/codes/main_test.go new file mode 100644 index 0000000..95b08cd --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/codes/main_test.go @@ -0,0 +1,41 @@ +package codes + +import ( + . "github.com/smartystreets/goconvey/convey" + "github.com/stellar/go/xdr" + "testing" +) + +func TestCodes(t *testing.T) { + Convey("codes.String", t, func() { + tests := []struct { + Input interface{} + Expected string + Err error + }{ + {xdr.TransactionResultCodeTxSuccess, "tx_success", nil}, + {xdr.OperationResultCodeOpBadAuth, "op_bad_auth", nil}, + {xdr.CreateAccountResultCodeCreateAccountLowReserve, "op_low_reserve", nil}, + {xdr.PaymentResultCodePaymentSrcNoTrust, "op_src_no_trust", nil}, + {0, "", ErrUnknownCode}, + } + + for _, test := range tests { + actual, err := String(test.Input) + + if test.Err != nil { + So(err, ShouldNotBeNil) + So(err.Error(), ShouldEqual, test.Err.Error()) + } else { + So(err, ShouldBeNil) + So(actual, ShouldEqual, test.Expected) + } + } + }) + + Convey("codes.ForOperationResult", t, func() { + //TODO: op_inner refers to inner result code + //TODO: non op_inner uses the outer result code + //TODO: one test for each operation type + }) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/config.go b/vendor/src/github.com/stellar/go/services/horizon/internal/config.go new file mode 100644 index 0000000..ef66967 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/config.go @@ -0,0 +1,43 @@ +package horizon + +import ( + "github.com/PuerkitoBio/throttled" + "github.com/sirupsen/logrus" +) + +// Config is the configuration for horizon. It get's populated by the +// app's main function and is provided to NewApp. +type Config struct { + DatabaseURL string + StellarCoreDatabaseURL string + StellarCoreURL string + Port int + RateLimit throttled.Quota + RedisURL string + LogLevel logrus.Level + SentryDSN string + LogglyHost string + LogglyToken string + FriendbotSecret string + // TLSCert is a path to a certificate file to use for horizon's TLS config + TLSCert string + // TLSKey is the path to a private key file to use for horizon's TLS config + TLSKey string + // Ingest is a boolean that indicates whether or not this horizon instance + // should run the data ingestion subsystem. + Ingest bool + // HistoryRetentionCount represents the minimum number of ledgers worth of + // history data to retain in the horizon database. For the purposes of + // determining a "retention duration", each ledger roughly corresponds to 10 + // seconds of real time. + HistoryRetentionCount uint + + // StaleThreshold represents the number of ledgers a history database may be + // out-of-date by before horizon begins to respond with an error to history + // requests. + StaleThreshold uint + + // SkipCursorUpdate causes the ingestor to skip reporting the "last imported + // ledger" state to stellar-core. + SkipCursorUpdate bool +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/context/requestid/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/context/requestid/main.go new file mode 100644 index 0000000..9df168c --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/context/requestid/main.go @@ -0,0 +1,46 @@ +// Package requestid provides functions to support embedded and retrieving +// a request id from a go context tree +package requestid + +import ( + "github.com/zenazn/goji/web" + "github.com/zenazn/goji/web/middleware" + "golang.org/x/net/context" +) + +var key = 0 + +// Context create a context from the provided parent and the provided request id +// string. +func Context(ctx context.Context, reqid string) context.Context { + return context.WithValue(ctx, &key, reqid) +} + +// ContextFromC returns a new context bound with the value of the request id in +// the provide goji context +func ContextFromC(ctx context.Context, c *web.C) context.Context { + reqid := middleware.GetReqID(*c) + return Context(ctx, reqid) +} + +// FromContext returns the set request id, if one has been set, from the +// provided context returns "" if no requestid has been set +// +func FromContext(ctx context.Context) string { + if ctx == nil { + return "" + } + + val := ctx.Value(&key) + if val == nil { + return "" + } + + result, ok := val.(string) + + if ok { + return result + } + + return "" +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/context/requestid/main_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/context/requestid/main_test.go new file mode 100644 index 0000000..10cd25d --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/context/requestid/main_test.go @@ -0,0 +1,40 @@ +package requestid + +import ( + . "github.com/smartystreets/goconvey/convey" + "github.com/zenazn/goji/web" + "golang.org/x/net/context" + "testing" +) + +func TestRequestId(t *testing.T) { + Convey("requestid.Context", t, func() { + ctx := Context(context.Background(), "2") + So(ctx.Value(&key), ShouldEqual, "2") + + ctx2 := Context(ctx, "3") + + So(ctx.Value(&key), ShouldEqual, "2") + So(ctx2.Value(&key), ShouldEqual, "3") + }) + + Convey("requestid.ContextFromC", t, func() { + gojiC := web.C{ + Env: make(map[interface{}]interface{}), + } + + gojiC.Env["reqID"] = "foobar" + + ctx := ContextFromC(context.Background(), &gojiC) + So(FromContext(ctx), ShouldEqual, "foobar") + }) + + Convey("requestid.FromContext", t, func() { + ctx := Context(context.Background(), "2") + ctx2 := Context(ctx, "3") + + So(FromContext(context.Background()), ShouldEqual, "") + So(FromContext(ctx), ShouldEqual, "2") + So(FromContext(ctx2), ShouldEqual, "3") + }) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/account.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/account.go new file mode 100644 index 0000000..40dd479 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/account.go @@ -0,0 +1,71 @@ +package core + +import ( + sq "github.com/Masterminds/squirrel" + "github.com/stellar/go/xdr" +) + +// IsAuthRequired returns true if the account has the "AUTH_REQUIRED" option +// turned on. +func (ac Account) IsAuthRequired() bool { + return (ac.Flags & xdr.AccountFlagsAuthRequiredFlag) != 0 +} + +// IsAuthRevocable returns true if the account has the "AUTH_REVOCABLE" option +// turned on. +func (ac Account) IsAuthRevocable() bool { + return (ac.Flags & xdr.AccountFlagsAuthRevocableFlag) != 0 +} + +// AccountByAddress loads a row from `accounts`, by address +func (q *Q) AccountByAddress(dest interface{}, addy string) error { + sql := selectAccount.Limit(1).Where("accountid = ?", addy) + + return q.Get(dest, sql) +} + +// SequencesForAddresses loads the current sequence number for every accountid +// specified in `addys` +func (q *Q) SequencesForAddresses(dest interface{}, addys []string) error { + sql := sq. + Select("seqnum as sequence", "accountid as address"). + From("accounts"). + Where(sq.Eq{"accountid": addys}) + + return q.Select(dest, sql) +} + +// SequenceProvider returns a new sequence provider. +func (q *Q) SequenceProvider() *SequenceProvider { + return &SequenceProvider{Q: q} +} + +// Get implements `txsub.SequenceProvider` +func (sp *SequenceProvider) Get(addys []string) (map[string]uint64, error) { + rows := []struct { + Address string + Sequence uint64 + }{} + + err := sp.Q.SequencesForAddresses(&rows, addys) + if err != nil { + return nil, err + } + + results := make(map[string]uint64) + for _, r := range rows { + results[r.Address] = r.Sequence + } + return results, nil +} + +var selectAccount = sq.Select( + "a.accountid", + "a.balance", + "a.seqnum", + "a.numsubentries", + "a.inflationdest", + "a.homedomain", + "a.thresholds", + "a.flags", +).From("accounts a") diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/account_data.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/account_data.go new file mode 100644 index 0000000..343633d --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/account_data.go @@ -0,0 +1,33 @@ +package core + +import ( + "encoding/base64" + + sq "github.com/Masterminds/squirrel" +) + +// Raw returns the decoded, raw value of the account data +func (ad AccountData) Raw() ([]byte, error) { + return base64.StdEncoding.DecodeString(ad.Value) +} + +// AccountDataByKey loads a row from `accountdata`, by key +func (q *Q) AccountDataByKey(dest interface{}, addy string, key string) error { + sql := selectAccountData.Limit(1). + Where("accountid = ?", addy). + Where("dataname = ?", key) + + return q.Get(dest, sql) +} + +// AllDataByAddress loads all data for `addy` +func (q *Q) AllDataByAddress(dest interface{}, addy string) error { + sql := selectAccountData.Where("accountid = ?", addy) + return q.Select(dest, sql) +} + +var selectAccountData = sq.Select( + "ad.accountid", + "ad.dataname", + "ad.datavalue", +).From("accountdata ad") diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/ledger_header.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/ledger_header.go new file mode 100644 index 0000000..6075fd0 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/ledger_header.go @@ -0,0 +1,16 @@ +package core + +import ( + sq "github.com/Masterminds/squirrel" +) + +// LedgerHeaderBySequence is a query that loads a single row from the +// `ledgerheaders` table. +func (q *Q) LedgerHeaderBySequence(dest interface{}, seq int32) error { + sql := sq.Select("clh.*"). + From("ledgerheaders clh"). + Limit(1). + Where("clh.ledgerseq = ?", seq) + + return q.Get(dest, sql) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/main.go new file mode 100644 index 0000000..67b666a --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/main.go @@ -0,0 +1,223 @@ +// Package core contains database record definitions useable for +// reading rows from a Stellar Core db +package core + +import ( + "github.com/guregu/null" + "github.com/stellar/go/strkey" + "github.com/stellar/go/support/db" + "github.com/stellar/go/xdr" +) + +// Account is a row of data from the `accounts` table +type Account struct { + Accountid string + Balance xdr.Int64 + Seqnum string + Numsubentries int32 + Inflationdest null.String + HomeDomain null.String + Thresholds xdr.Thresholds + Flags xdr.AccountFlags +} + +// AccountData is a row of data from the `accountdata` table +type AccountData struct { + Accountid string + Key string `db:"dataname"` + Value string `db:"datavalue"` +} + +// LedgerHeader is row of data from the `ledgerheaders` table +type LedgerHeader struct { + LedgerHash string `db:"ledgerhash"` + PrevHash string `db:"prevhash"` + BucketListHash string `db:"bucketlisthash"` + CloseTime int64 `db:"closetime"` + Sequence uint32 `db:"ledgerseq"` + Data xdr.LedgerHeader `db:"data"` +} + +// Offer is row of data from the `offers` table from stellar-core +type Offer struct { + SellerID string `db:"sellerid"` + OfferID int64 `db:"offerid"` + + SellingAssetType xdr.AssetType `db:"sellingassettype"` + SellingAssetCode null.String `db:"sellingassetcode"` + SellingIssuer null.String `db:"sellingissuer"` + + BuyingAssetType xdr.AssetType `db:"buyingassettype"` + BuyingAssetCode null.String `db:"buyingassetcode"` + BuyingIssuer null.String `db:"buyingissuer"` + + Amount xdr.Int64 `db:"amount"` + Pricen int32 `db:"pricen"` + Priced int32 `db:"priced"` + Price float64 `db:"price"` + Flags int32 `db:"flags"` + Lastmodified int32 `db:"lastmodified"` +} + +// OrderBookSummaryPriceLevel is a collapsed view of multiple offers at the same price that +// contains the summed amount from all the member offers. Used by OrderBookSummary +type OrderBookSummaryPriceLevel struct { + Type string `db:"type"` + PriceLevel +} + +// OrderBookSummary is a summary of a set of offers for a given base and +// counter currency +type OrderBookSummary []OrderBookSummaryPriceLevel + +// Q is a helper struct on which to hang common queries against a stellar +// core database. +type Q struct { + *db.Session +} + +// PriceLevel represents an aggregation of offers to trade at a certain +// price. +type PriceLevel struct { + Pricen int32 `db:"pricen"` + Priced int32 `db:"priced"` + Pricef float64 `db:"pricef"` + Amount int64 `db:"amount"` +} + +// SequenceProvider implements `txsub.SequenceProvider` +type SequenceProvider struct { + Q *Q +} + +// Signer is a row of data from the `signers` table from stellar-core +type Signer struct { + Accountid string + Publickey string + Weight int32 +} + +// Transaction is row of data from the `txhistory` table from stellar-core +type Transaction struct { + TransactionHash string `db:"txid"` + LedgerSequence int32 `db:"ledgerseq"` + Index int32 `db:"txindex"` + Envelope xdr.TransactionEnvelope `db:"txbody"` + Result xdr.TransactionResultPair `db:"txresult"` + ResultMeta xdr.TransactionMeta `db:"txmeta"` +} + +// TransactionFee is row of data from the `txfeehistory` table from stellar-core +type TransactionFee struct { + TransactionHash string `db:"txid"` + LedgerSequence int32 `db:"ledgerseq"` + Index int32 `db:"txindex"` + Changes xdr.LedgerEntryChanges `db:"txchanges"` +} + +// Trustline is a row of data from the `trustlines` table from stellar-core +type Trustline struct { + Accountid string + Assettype xdr.AssetType + Issuer string + Assetcode string + Tlimit xdr.Int64 + Balance xdr.Int64 + Flags int32 +} + +// AssetFromDB produces an xdr.Asset by combining the constituent type, code and +// issuer, as often retrieved from the DB in 3 separate columns. +func AssetFromDB(typ xdr.AssetType, code string, issuer string) (result xdr.Asset, err error) { + switch typ { + case xdr.AssetTypeAssetTypeNative: + result, err = xdr.NewAsset(xdr.AssetTypeAssetTypeNative, nil) + case xdr.AssetTypeAssetTypeCreditAlphanum4: + var ( + an xdr.AssetAlphaNum4 + decoded []byte + pkey xdr.Uint256 + ) + + copy(an.AssetCode[:], []byte(code)) + decoded, err = strkey.Decode(strkey.VersionByteAccountID, issuer) + if err != nil { + return + } + + copy(pkey[:], decoded) + an.Issuer, err = xdr.NewAccountId(xdr.PublicKeyTypePublicKeyTypeEd25519, pkey) + if err != nil { + return + } + result, err = xdr.NewAsset(xdr.AssetTypeAssetTypeCreditAlphanum4, an) + case xdr.AssetTypeAssetTypeCreditAlphanum12: + var ( + an xdr.AssetAlphaNum12 + decoded []byte + pkey xdr.Uint256 + ) + + copy(an.AssetCode[:], []byte(code)) + decoded, err = strkey.Decode(strkey.VersionByteAccountID, issuer) + if err != nil { + return + } + + copy(pkey[:], decoded) + an.Issuer, err = xdr.NewAccountId(xdr.PublicKeyTypePublicKeyTypeEd25519, pkey) + if err != nil { + return + } + result, err = xdr.NewAsset(xdr.AssetTypeAssetTypeCreditAlphanum12, an) + } + + return +} + +// ElderLedger represents the oldest "ingestable" ledger known to the +// stellar-core database this ingestion system is communicating with. Horizon, +// which wants to operate on a contiguous range of ledger data (i.e. free from +// gaps) uses the elder ledger to start importing in the case of an empty +// database. +// +// Due to the design of stellar-core, ledger 1 will _always_ be in the database, +// even when configured to catchup minimally, so we cannot simply take +// MIN(ledgerseq). Instead, we can find whether or not 1 is the elder ledger by +// checking for the presence of ledger 2. +func (q *Q) ElderLedger(dest *int32) error { + var found bool + err := q.GetRaw(&found, ` + SELECT CASE WHEN EXISTS ( + SELECT * + FROM ledgerheaders + WHERE ledgerseq = 2 + ) + THEN CAST(1 AS BIT) + ELSE CAST(0 AS BIT) END + `) + + if err != nil { + return err + } + + // if ledger 2 is present, use it 1 as the elder ledger (since 1 is guaranteed + // to be present) + if found { + *dest = 1 + return nil + } + + err = q.GetRaw(dest, ` + SELECT COALESCE(MIN(ledgerseq), 0) + FROM ledgerheaders + WHERE ledgerseq > 2 + `) + + return err +} + +// LatestLedger loads the latest known ledger +func (q *Q) LatestLedger(dest interface{}) error { + return q.GetRaw(dest, `SELECT COALESCE(MAX(ledgerseq), 0) FROM ledgerheaders`) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/main_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/main_test.go new file mode 100644 index 0000000..a70e161 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/main_test.go @@ -0,0 +1,63 @@ +package core + +import ( + "testing" + + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestLatestLedger(t *testing.T) { + tt := test.Start(t).Scenario("base") + defer tt.Finish() + q := &Q{tt.CoreSession()} + + var seq int + err := q.LatestLedger(&seq) + + if tt.Assert.NoError(err) { + tt.Assert.Equal(3, seq) + } +} + +func TestElderLedger(t *testing.T) { + tt := test.Start(t).ScenarioWithoutHorizon("kahuna") + defer tt.Finish() + q := &Q{tt.CoreSession()} + + var elder int32 + err := q.ElderLedger(&elder) + if tt.Assert.NoError(err) { + tt.Assert.Equal(elder, int32(1)) + } + + // ledger 3 gets picked properly + _, err = tt.CoreDB.Exec(`DELETE FROM ledgerheaders WHERE ledgerseq = 2`) + tt.Require.NoError(err, "failed to remove ledgerheader") + + err = q.ElderLedger(&elder) + if tt.Assert.NoError(err) { + tt.Assert.Equal(elder, int32(3)) + } + + // a bigger inital gap is properly dealt with + _, err = tt.CoreDB.Exec(` + DELETE FROM ledgerheaders WHERE ledgerseq > 1 AND ledgerseq < 10 + `) + tt.Require.NoError(err, "failed to remove ledgerheader") + + err = q.ElderLedger(&elder) + if tt.Assert.NoError(err) { + tt.Assert.Equal(elder, int32(10)) + } + + // a second gap is not considered for determining the elder ledger + _, err = tt.CoreDB.Exec(` + DELETE FROM ledgerheaders WHERE ledgerseq > 15 AND ledgerseq < 20 + `) + tt.Require.NoError(err, "failed to remove ledgerheader") + + err = q.ElderLedger(&elder) + if tt.Assert.NoError(err) { + tt.Assert.Equal(elder, int32(10)) + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/offer.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/offer.go new file mode 100644 index 0000000..4067dec --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/offer.go @@ -0,0 +1,102 @@ +package core + +import ( + "fmt" + "math/big" + + sq "github.com/Masterminds/squirrel" + "github.com/go-errors/errors" + "github.com/stellar/go/xdr" + "github.com/stellar/go/services/horizon/internal/db2" +) + +// PagingToken returns a suitable paging token for the Offer +func (r Offer) PagingToken() string { + return fmt.Sprintf("%d", r.OfferID) +} + +// PriceAsString return the price fraction as a floating point approximate. +func (r Offer) PriceAsString() string { + return big.NewRat(int64(r.Pricen), int64(r.Priced)).FloatString(7) +} + +// ConnectedAssets loads xdr.Asset records for the purposes of path +// finding. Given the input asset type, a list of xdr.Assets is returned that +// each have some available trades for the input asset. +func (q *Q) ConnectedAssets(dest interface{}, selling xdr.Asset) error { + + assets, ok := dest.(*[]xdr.Asset) + if !ok { + return errors.New("dest is not *[]xdr.Asset") + } + + var ( + t xdr.AssetType + c string + i string + ) + + err := selling.Extract(&t, &c, &i) + if err != nil { + return err + } + + sql := sq.Select( + "buyingassettype AS type", + "coalesce(buyingassetcode, '') AS code", + "coalesce(buyingissuer, '') AS issuer"). + From("offers"). + Where(sq.Eq{"sellingassettype": t}). + GroupBy("buyingassettype", "buyingassetcode", "buyingissuer") + + if t != xdr.AssetTypeAssetTypeNative { + sql = sql.Where(sq.Eq{"sellingassetcode": c, "sellingissuer": i}) + } + + var rows []struct { + Type xdr.AssetType + Code string + Issuer string + } + + err = q.Select(&rows, sql) + + if err != nil { + return err + } + + results := make([]xdr.Asset, len(rows)) + *assets = results + + for i, r := range rows { + results[i], err = AssetFromDB(r.Type, r.Code, r.Issuer) + if err != nil { + return err + } + } + + return nil +} + +// OffersByAddress loads a page of active offers for the given +// address. +func (q *Q) OffersByAddress(dest interface{}, addy string, pq db2.PageQuery) error { + sql := sq.Select("co.*"). + From("offers co"). + Where("co.sellerid = ?", addy). + Limit(uint64(pq.Limit)) + + cursor, err := pq.CursorInt64() + if err != nil { + return err + } + + switch pq.Order { + case "asc": + sql = sql.Where("co.offerid > ?", cursor).OrderBy("co.offerid asc") + case "desc": + sql = sql.Where("co.offerid < ?", cursor).OrderBy("co.offerid desc") + } + + return q.Select(dest, sql) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/offer_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/offer_test.go new file mode 100644 index 0000000..5976df8 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/offer_test.go @@ -0,0 +1,71 @@ +package core + +import ( + "testing" + + "github.com/stellar/go/services/horizon/internal/db2" + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestOffersByAddress(t *testing.T) { + tt := test.Start(t).Scenario("trades") + defer tt.Finish() + q := &Q{tt.CoreSession()} + + var offers []Offer + + load := func(addy, cursor, order string, limit uint64) bool { + offers = []Offer{} + pq, err := db2.NewPageQuery(cursor, order, limit) + if !tt.Assert.NoError(err) { + return false + } + + err = q.OffersByAddress(&offers, addy, pq) + if !tt.Assert.NoError(err) { + return false + } + return true + } + + // Works for native offers + if load("GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "", "asc", db2.DefaultPageSize) { + tt.Assert.Len(offers, 1) + tt.Assert.Equal(int64(4), offers[0].OfferID) + } + + // Filters properly + if load("GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "", "asc", db2.DefaultPageSize) { + tt.Assert.Len(offers, 0) + } + + if load("GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2", "", "asc", db2.DefaultPageSize) { + tt.Assert.Len(offers, 3) + } + + // limits properly + if load("GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2", "", "asc", 2) { + tt.Assert.Len(offers, 2) + } + + // ordering works + if load("GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2", "", "desc", db2.DefaultPageSize) { + for i := range offers { + // if there is no next element, break + if i+1 == len(offers) { + break + } + tt.Assert.True(offers[i].OfferID > offers[i+1].OfferID, "Results are not in order") + } + } + + // cursor works + if load("GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2", "1", "asc", db2.DefaultPageSize) { + tt.Assert.Len(offers, 2) + tt.Assert.Equal(int64(2), offers[0].OfferID) + } + if load("GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2", "3", "desc", db2.DefaultPageSize) { + tt.Assert.Len(offers, 2) + tt.Assert.Equal(int64(2), offers[0].OfferID) + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/order_book_summary.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/order_book_summary.go new file mode 100644 index 0000000..197d0e4 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/order_book_summary.go @@ -0,0 +1,169 @@ +package core + +import ( + "bytes" + "fmt" + "text/template" + + "github.com/go-errors/errors" + "github.com/stellar/go/xdr" +) + +type orderbookQueryBuilder struct { + SellingType xdr.AssetType + SellingCode string + SellingIssuer string + BuyingType xdr.AssetType + BuyingCode string + BuyingIssuer string + args []interface{} +} + +var orderbookQueryTemplate *template.Template + +// Asks filters the summary into a slice of PriceLevelRecords where the type is 'ask' +func (o *OrderBookSummary) Asks() []OrderBookSummaryPriceLevel { + return o.filter("ask", false) +} + +// Bids filters the summary into a slice of PriceLevelRecords where the type is 'bid' +func (o *OrderBookSummary) Bids() []OrderBookSummaryPriceLevel { + return o.filter("bid", true) +} + +func (o *OrderBookSummary) filter(typ string, prepend bool) []OrderBookSummaryPriceLevel { + result := []OrderBookSummaryPriceLevel{} + + for _, r := range *o { + if r.Type != typ { + continue + } + + if prepend { + head := []OrderBookSummaryPriceLevel{r} + result = append(head, result...) + } else { + result = append(result, r) + } + } + + return result +} + +// GetOrderBookSummary loads a summary of an order book identified by a +// selling/buying pair. It is designed to drive an order book summary client +// interface (bid/ask spread, prices and volume, etc). +func (q *Q) GetOrderBookSummary(dest interface{}, selling xdr.Asset, buying xdr.Asset, limit uint64) error { + var sql bytes.Buffer + var oq orderbookQueryBuilder + err := selling.Extract(&oq.SellingType, &oq.SellingCode, &oq.SellingIssuer) + if err != nil { + return err + } + err = buying.Extract(&oq.BuyingType, &oq.BuyingCode, &oq.BuyingIssuer) + if err != nil { + return err + } + + oq.pushArg(limit) + + err = orderbookQueryTemplate.Execute(&sql, &oq) + if err != nil { + return errors.Wrap(err, 1) + } + + err = q.SelectRaw(dest, sql.String(), oq.args...) + if err != nil { + return errors.Wrap(err, 1) + } + + return nil +} + +// Filter helps manage positional parameters and "IS NULL" checks for an order +// book query. An empty string will be converted into a null comparison. +func (q *orderbookQueryBuilder) Filter(col string, v interface{}) string { + str, ok := v.(string) + + if ok && str == "" { + return fmt.Sprintf("%s IS NULL", col) + } + + n := q.pushArg(v) + return fmt.Sprintf("%s = $%d", col, n) +} + +// pushArg appends the provided value to this queries argument list and returns +// the placeholder position to use in a sql snippet +func (q *orderbookQueryBuilder) pushArg(v interface{}) int { + q.args = append(q.args, v) + return len(q.args) +} + +func init() { + orderbookQueryTemplate = template.Must(template.New("sql").Parse(` +SELECT + *, + (pricen :: double precision / priced :: double precision) as pricef + +FROM +(( + -- This query returns the "asks" portion of the summary, and it is very straightforward + SELECT + 'ask' as type, + co.pricen, + co.priced, + SUM(co.amount) as amount + + FROM offers co + + WHERE 1=1 + AND {{ .Filter "co.sellingassettype" .SellingType }} + AND {{ .Filter "co.sellingassetcode" .SellingCode}} + AND {{ .Filter "co.sellingissuer" .SellingIssuer}} + AND {{ .Filter "co.buyingassettype" .BuyingType }} + AND {{ .Filter "co.buyingassetcode" .BuyingCode}} + AND {{ .Filter "co.buyingissuer" .BuyingIssuer}} + + GROUP BY + co.pricen, + co.priced, + co.price + + ORDER BY co.price ASC + + LIMIT $1 + +) UNION ( + -- This query returns the "bids" portion, inverting the where clauses + -- and the pricen/priced. This inversion is necessary to produce the "bid" + -- view of a given offer (which are stored in the db as an offer to sell) + SELECT + 'bid' as type, + co.priced as pricen, + co.pricen as priced, + SUM(co.amount) as amount + + FROM offers co + + WHERE 1=1 + AND {{ .Filter "co.sellingassettype" .BuyingType }} + AND {{ .Filter "co.sellingassetcode" .BuyingCode}} + AND {{ .Filter "co.sellingissuer" .BuyingIssuer}} + AND {{ .Filter "co.buyingassettype" .SellingType }} + AND {{ .Filter "co.buyingassetcode" .SellingCode}} + AND {{ .Filter "co.buyingissuer" .SellingIssuer}} + + GROUP BY + co.pricen, + co.priced, + co.price + + ORDER BY co.price ASC + + LIMIT $1 +)) summary + +ORDER BY type, pricef +`)) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/order_book_summary_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/order_book_summary_test.go new file mode 100644 index 0000000..83a3bb5 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/order_book_summary_test.go @@ -0,0 +1,100 @@ +package core + +import ( + "testing" + + "github.com/stellar/go/xdr" + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestGetOrderBookSummary(t *testing.T) { + tt := test.Start(t).Scenario("order_books") + defer tt.Finish() + q := &Q{tt.CoreSession()} + + selling, err := AssetFromDB(xdr.AssetTypeAssetTypeCreditAlphanum4, "USD", "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4") + tt.Require.NoError(err) + buying, err := AssetFromDB(xdr.AssetTypeAssetTypeNative, "", "") + tt.Require.NoError(err) + + var summary, inverted OrderBookSummary + err = q.GetOrderBookSummary(&summary, selling, buying, 20) + tt.Require.NoError(err) + tt.Require.Len(summary, 6) + err = q.GetOrderBookSummary(&inverted, buying, selling, 20) + tt.Require.NoError(err) + tt.Require.Len(inverted, 6) + + asks := summary.Asks() + bids := summary.Bids() + iasks := inverted.Asks() + ibids := inverted.Bids() + + // Check that summary was loaded correct + tt.Assert.Equal(int64(100000000), asks[0].Amount) + tt.Assert.Equal(int32(15), asks[0].Pricen) + tt.Assert.Equal(int32(1), asks[0].Priced) + + tt.Assert.Equal(int64(1000000000), asks[1].Amount) + tt.Assert.Equal(int32(20), asks[1].Pricen) + tt.Assert.Equal(int32(1), asks[1].Priced) + + tt.Assert.Equal(int64(10000000000), asks[2].Amount) + tt.Assert.Equal(int32(50), asks[2].Pricen) + tt.Assert.Equal(int32(1), asks[2].Priced) + + tt.Assert.Equal(int64(1000000000), bids[0].Amount) + tt.Assert.Equal(int32(10), bids[0].Pricen) + tt.Assert.Equal(int32(1), bids[0].Priced) + + tt.Assert.Equal(int64(9000000000), bids[1].Amount) + tt.Assert.Equal(int32(9), bids[1].Pricen) + tt.Assert.Equal(int32(1), bids[1].Priced) + + tt.Assert.Equal(int64(50000000000), bids[2].Amount) + tt.Assert.Equal(int32(5), bids[2].Pricen) + tt.Assert.Equal(int32(1), bids[2].Priced) + + // Check that the inversion was correct + tt.Assert.Equal(asks[0].Pricef, ibids[0].InvertPricef()) + tt.Assert.Equal(asks[1].Pricef, ibids[1].InvertPricef()) + tt.Assert.Equal(asks[2].Pricef, ibids[2].InvertPricef()) + tt.Assert.Equal(bids[0].Pricef, iasks[0].InvertPricef()) + tt.Assert.Equal(bids[1].Pricef, iasks[1].InvertPricef()) + tt.Assert.Equal(bids[2].Pricef, iasks[2].InvertPricef()) +} + +// regression test for https://github.com/stellar/go/services/horizon/internal/issues/310 +func TestGetOrderBookSummary_Regress310(t *testing.T) { + tt := test.Start(t).Scenario("order_books_310") + defer tt.Finish() + q := &Q{tt.CoreSession()} + + selling, err := AssetFromDB(xdr.AssetTypeAssetTypeCreditAlphanum4, "USD", "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4") + tt.Require.NoError(err) + buying, err := AssetFromDB(xdr.AssetTypeAssetTypeNative, "", "") + tt.Require.NoError(err) + + var summary OrderBookSummary + err = q.GetOrderBookSummary(&summary, selling, buying, 20) + tt.Require.NoError(err) + tt.Require.Len(summary, 20) + + // In the order_books_310 scenario, the orders were placed in such a way that + // three orders at prices 10.2, 10.1, and 10.0 should appear first, when the + // query is correct. In a failing scenario the 10.2 transaction should not + // appear, because it was inserted after the first 20 rows + bids := summary.Bids() + tt.Assert.Equal(10.2, bids[0].Pricef) + tt.Assert.Equal(10.1, bids[1].Pricef) + tt.Assert.Equal(10.0, bids[2].Pricef) + + // validate the inverse order book is correct as well + err = q.GetOrderBookSummary(&summary, buying, selling, 20) + tt.Require.NoError(err) + tt.Require.Len(summary, 20) + asks := summary.Asks() + tt.Assert.Equal(1.0/10.2, asks[0].Pricef) + tt.Assert.Equal(1.0/10.1, asks[1].Pricef) + tt.Assert.Equal(1.0/10.0, asks[2].Pricef) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/price_level.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/price_level.go new file mode 100644 index 0000000..d40de35 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/price_level.go @@ -0,0 +1,25 @@ +package core + +import ( + "math/big" + + "github.com/stellar/go/amount" + "github.com/stellar/go/xdr" +) + +// InvertPricef returns the inverted price of the price-level, i.e. what the price would be if you were +// viewing the price level from the other side of the bid/ask dichotomy. +func (p *PriceLevel) InvertPricef() float64 { + return float64(p.Priced) / float64(p.Pricen) +} + +// PriceAsString returns the price as a string +func (p *PriceLevel) PriceAsString() string { + return big.NewRat(int64(p.Pricen), int64(p.Priced)).FloatString(7) +} + +// AmountAsString returns the amount as a string, formatted using +// the amount.String() utility from github.com/stellar/go. +func (p *PriceLevel) AmountAsString() string { + return amount.String(xdr.Int64(p.Amount)) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/signer.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/signer.go new file mode 100644 index 0000000..b5a16cf --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/signer.go @@ -0,0 +1,17 @@ +package core + +import ( + sq "github.com/Masterminds/squirrel" +) + +// SignersByAddress loads all signer rows for `addy` +func (q *Q) SignersByAddress(dest interface{}, addy string) error { + sql := selectSigner.Where("accountid = ?", addy) + return q.Select(dest, sql) +} + +var selectSigner = sq.Select( + "si.accountid", + "si.publickey", + "si.weight", +).From("signers si") diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/transaction.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/transaction.go new file mode 100644 index 0000000..d9ef84b --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/transaction.go @@ -0,0 +1,149 @@ +package core + +import ( + "encoding/base64" + "fmt" + + "strings" + + sq "github.com/Masterminds/squirrel" + "github.com/guregu/null" + "github.com/stellar/go/strkey" + "github.com/stellar/go/xdr" + "github.com/stellar/go/services/horizon/internal/utf8" +) + +// Base64Signatures returns a slice of strings where each element is a base64 +// encoded representation of a signature attached to this transaction. +func (tx *Transaction) Base64Signatures() []string { + raw := tx.Envelope.Signatures + results := make([]string, len(raw)) + + for i := range raw { + results[i] = base64.StdEncoding.EncodeToString(raw[i].Signature) + } + return results +} + +// EnvelopeXDR returns the XDR encoded envelope for this transaction +func (tx *Transaction) EnvelopeXDR() string { + out, err := xdr.MarshalBase64(tx.Envelope) + if err != nil { + panic(err) + } + return out +} + +// Fee returns the fee that was paid for `tx` +func (tx *Transaction) Fee() int32 { + return int32(tx.Envelope.Tx.Fee) +} + +// IsSuccessful returns true when the transaction was successful. +func (tx *Transaction) IsSuccessful() bool { + return tx.Result.Result.Result.Code == xdr.TransactionResultCodeTxSuccess +} + +// Memo returns the memo for this transaction, if there is one. +func (tx *Transaction) Memo() null.String { + var ( + value string + valid bool + ) + switch tx.Envelope.Tx.Memo.Type { + case xdr.MemoTypeMemoNone: + value, valid = "", false + case xdr.MemoTypeMemoText: + scrubbed := utf8.Scrub(tx.Envelope.Tx.Memo.MustText()) + notnull := strings.Join(strings.Split(scrubbed, "\x00"), "") + value, valid = notnull, true + case xdr.MemoTypeMemoId: + value, valid = fmt.Sprintf("%d", tx.Envelope.Tx.Memo.MustId()), true + case xdr.MemoTypeMemoHash: + hash := tx.Envelope.Tx.Memo.MustHash() + value, valid = + base64.StdEncoding.EncodeToString(hash[:]), + true + case xdr.MemoTypeMemoReturn: + hash := tx.Envelope.Tx.Memo.MustRetHash() + value, valid = + base64.StdEncoding.EncodeToString(hash[:]), + true + default: + panic(fmt.Errorf("invalid memo type: %v", tx.Envelope.Tx.Memo.Type)) + } + + return null.NewString(value, valid) +} + +// MemoType returns the memo type for this transaction +func (tx *Transaction) MemoType() string { + switch tx.Envelope.Tx.Memo.Type { + case xdr.MemoTypeMemoNone: + return "none" + case xdr.MemoTypeMemoText: + return "text" + case xdr.MemoTypeMemoId: + return "id" + case xdr.MemoTypeMemoHash: + return "hash" + case xdr.MemoTypeMemoReturn: + return "return" + default: + panic(fmt.Errorf("invalid memo type: %v", tx.Envelope.Tx.Memo.Type)) + } +} + +// ResultXDR returns the XDR encoded result for this transaction +func (tx *Transaction) ResultXDR() string { + out, err := xdr.MarshalBase64(tx.Result.Result) + if err != nil { + panic(err) + } + return out +} + +// ResultMetaXDR returns the XDR encoded result meta for this transaction +func (tx *Transaction) ResultMetaXDR() string { + out, err := xdr.MarshalBase64(tx.ResultMeta) + if err != nil { + panic(err) + } + return out +} + +// Sequence returns the sequence number for `tx` +func (tx *Transaction) Sequence() int64 { + return int64(tx.Envelope.Tx.SeqNum) +} + +// SourceAddress returns the strkey-encoded account id that paid the fee for +// `tx`. +func (tx *Transaction) SourceAddress() string { + sa := tx.Envelope.Tx.SourceAccount + pubkey := sa.MustEd25519() + raw := make([]byte, 32) + copy(raw, pubkey[:]) + return strkey.MustEncode(strkey.VersionByteAccountID, raw) +} + +// TransactionByHash is a query that loads a single row from the `txhistory`. +func (q *Q) TransactionByHash(dest interface{}, hash string) error { + sql := sq.Select("ctxh.*"). + From("txhistory ctxh"). + Limit(1). + Where("ctxh.txid = ?", hash) + + return q.Get(dest, sql) +} + +// TransactionsByLedger is a query that loads all rows from `txhistory` where +// ledgerseq matches `Sequence.` +func (q *Q) TransactionsByLedger(dest interface{}, seq int32) error { + sql := sq.Select("ctxh.*"). + From("txhistory ctxh"). + OrderBy("ctxh.txindex ASC"). + Where("ctxh.ledgerseq = ?", seq) + + return q.Select(dest, sql) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/transaction_fee.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/transaction_fee.go new file mode 100644 index 0000000..d7e7467 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/transaction_fee.go @@ -0,0 +1,26 @@ +package core + +import ( + sq "github.com/Masterminds/squirrel" + "github.com/stellar/go/xdr" +) + +// ChangesXDR returns the XDR encoded changes for this transaction fee +func (fee *TransactionFee) ChangesXDR() string { + out, err := xdr.MarshalBase64(fee.Changes) + if err != nil { + panic(err) + } + return out +} + +// TransactionFeesByLedger is a query that loads all rows from `txfeehistory` +// where ledgerseq matches `Sequence.` +func (q *Q) TransactionFeesByLedger(dest interface{}, seq int32) error { + sql := sq.Select("ctxfh.*"). + From("txfeehistory ctxfh"). + OrderBy("ctxfh.txindex ASC"). + Where("ctxfh.ledgerseq = ?", seq) + + return q.Select(dest, sql) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/transaction_fee_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/transaction_fee_test.go new file mode 100644 index 0000000..fd32e08 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/transaction_fee_test.go @@ -0,0 +1,20 @@ +package core + +import ( + "testing" + + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestTransactionFeesByLedger(t *testing.T) { + tt := test.Start(t).Scenario("base") + defer tt.Finish() + q := &Q{tt.CoreSession()} + + var fees []TransactionFee + err := q.TransactionFeesByLedger(&fees, 2) + + if tt.Assert.NoError(err) { + tt.Assert.Len(fees, 3) + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/transaction_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/transaction_test.go new file mode 100644 index 0000000..6751f48 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/transaction_test.go @@ -0,0 +1,57 @@ +package core + +import ( + "testing" + + "github.com/stellar/go/xdr" + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestTransactionsQueries(t *testing.T) { + tt := test.Start(t).Scenario("base") + defer tt.Finish() + q := &Q{tt.CoreSession()} + + // Test TransactionsByLedger + var txs []Transaction + err := q.TransactionsByLedger(&txs, 2) + + if tt.Assert.NoError(err) { + tt.Assert.Len(txs, 3) + } + + // Test TransactionByHash + var tx Transaction + err = q.TransactionByHash(&tx, "cebb875a00ff6e1383aef0fd251a76f22c1f9ab2a2dffcb077855736ade2659a") + + if tt.Assert.NoError(err) { + tt.Assert.Equal(int32(3), tx.LedgerSequence) + } +} + +func TestMemo(t *testing.T) { + tt := test.Start(t).Scenario("base") + defer tt.Finish() + + var tx Transaction + + xdr.SafeUnmarshalBase64("AAAAAMvoFDdcyQrJAcBmRdyEnW6047pvlk4MS/4r0n/1WH8VAAAAZAACnMAAAAACAAAAAAAAAAEAAAARADEuMC4xb3dlcnJpZGUgbWUAAAAAAAABAAAAAQAAAACJzogbLxrrmN7N5JVQceSxl8jkED26RGzbyyRIpwTh6wAAAAoAAAAWaSBzaG91bGQgYmUgb3dlcnJpZGRlbgAAAAAAAQAAABVpIHNob3VsZCBiZSBvd2VycmlkZW4AAAAAAAAAAAAAAacE4esAAABA0GuCIEmKyQ2DRqt5+BOIqjVlHisjY6rK1IcOtzjIKCDgSAoiv5yhYe09PohBH91TXvAQ/LZJj5hVMihfMjtgCw==", &tx.Envelope) + + tt.Assert.Equal("1.0.1owerride me", tx.Memo().String) +} + +func TestSignatures(t *testing.T) { + tt := test.Start(t).Scenario("base") + defer tt.Finish() + + var tx Transaction + + // https://github.com/stellar/stellar-core/issues/1225 + xdr.SafeUnmarshalBase64("AAAAAMIK9djC7k75ziKOLJcvMAIBG7tnBuoeI34x+Pi6zqcZAAAAZAAZphYAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAynnCTTyw53VVRLOWX6XKTva63IM1LslPNW01YB0hz/8AAAAAAAAAAlQL5AAAAAAAAAAAAh0hz/8AAABA8qkkeKaKfsbgInyIkzXJhqJE5/Ufxri2LdxmyKkgkT6I3sPmvrs5cPWQSzEQyhV750IW2ds97xTHqTpOfuZCAnhSuFUAAAAA", &tx.Envelope) + + signatures := tx.Base64Signatures() + + tt.Assert.Equal(2, len(signatures)) + tt.Assert.Equal("8qkkeKaKfsbgInyIkzXJhqJE5/Ufxri2LdxmyKkgkT6I3sPmvrs5cPWQSzEQyhV750IW2ds97xTHqTpOfuZCAg==", signatures[0]) + tt.Assert.Equal("", signatures[1]) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/trustline.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/trustline.go new file mode 100644 index 0000000..7042366 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/core/trustline.go @@ -0,0 +1,54 @@ +package core + +import ( + "errors" + + sq "github.com/Masterminds/squirrel" + "github.com/stellar/go/xdr" +) + +// AssetsForAddress loads `dest` as `[]xdr.Asset` with every asset the account +// at `addy` can hold. +func (q *Q) AssetsForAddress(dest interface{}, addy string) error { + var tls []Trustline + + err := q.TrustlinesByAddress(&tls, addy) + if err != nil { + return err + } + + dtl, ok := dest.(*[]xdr.Asset) + if !ok { + return errors.New("Invalid destination") + } + + result := make([]xdr.Asset, len(tls)+1) + *dtl = result + + for i, tl := range tls { + result[i], err = AssetFromDB(tl.Assettype, tl.Assetcode, tl.Issuer) + if err != nil { + return err + } + } + + result[len(result)-1], err = xdr.NewAsset(xdr.AssetTypeAssetTypeNative, nil) + + return err +} + +// TrustlinesByAddress loads all trustlines for `addy` +func (q *Q) TrustlinesByAddress(dest interface{}, addy string) error { + sql := selectTrustline.Where("accountid = ?", addy) + return q.Select(dest, sql) +} + +var selectTrustline = sq.Select( + "tl.accountid", + "tl.assettype", + "tl.issuer", + "tl.assetcode", + "tl.tlimit", + "tl.balance", + "tl.flags", +).From("trustlines tl") diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/account.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/account.go new file mode 100644 index 0000000..2d699a8 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/account.go @@ -0,0 +1,49 @@ +package history + +import ( + sq "github.com/Masterminds/squirrel" + "github.com/stellar/go/services/horizon/internal/db2" +) + +// Accounts provides a helper to filter rows from the `history_accounts` table +// with pre-defined filters. See `AccountsQ` methods for the available filters. +func (q *Q) Accounts() *AccountsQ { + return &AccountsQ{ + parent: q, + sql: selectAccount, + } +} + +// AccountByAddress loads a row from `history_accounts`, by address +func (q *Q) AccountByAddress(dest interface{}, addy string) error { + sql := selectAccount.Limit(1).Where("ha.address = ?", addy) + return q.Get(dest, sql) +} + +// AccountByID loads a row from `history_accounts`, by id +func (q *Q) AccountByID(dest interface{}, id int64) error { + sql := selectAccount.Limit(1).Where("ha.id = ?", id) + return q.Get(dest, sql) +} + +// Page specifies the paging constraints for the query being built by `q`. +func (q *AccountsQ) Page(page db2.PageQuery) *AccountsQ { + if q.Err != nil { + return q + } + + q.sql, q.Err = page.ApplyTo(q.sql, "ha.id") + return q +} + +// Select loads the results of the query specified by `q` into `dest`. +func (q *AccountsQ) Select(dest interface{}) error { + if q.Err != nil { + return q.Err + } + + q.Err = q.parent.Select(dest, q.sql) + return q.Err +} + +var selectAccount = sq.Select("ha.*").From("history_accounts ha") diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/account_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/account_test.go new file mode 100644 index 0000000..0904fb4 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/account_test.go @@ -0,0 +1,21 @@ +package history + +import ( + "testing" + + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestAccountQueries(t *testing.T) { + tt := test.Start(t).Scenario("base") + defer tt.Finish() + q := &Q{tt.HorizonSession()} + + // Test Accounts() + acs := []Account{} + err := q.Accounts().Select(&acs) + + if tt.Assert.NoError(err) { + tt.Assert.Len(acs, 4) + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/asset.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/asset.go new file mode 100644 index 0000000..849b13c --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/asset.go @@ -0,0 +1,34 @@ +package history + +import ( + sq "github.com/Masterminds/squirrel" + "github.com/stellar/go/xdr" +) + +func (q *Q) GetAssetByID(dest interface{}, id int64) (err error) { + sql := sq.Select("id", "asset_type", "asset_code", "asset_issuer").From("history_assets").Limit(1).Where(sq.Eq{"id": id}) + err = q.Get(dest, sql) + return +} + +func (q *Q) GetAssetID(asset xdr.Asset) (id int64, err error) { + + var ( + assetType string + assetCode string + assetIssuer string + ) + + err = asset.Extract(&assetType, &assetCode, &assetIssuer) + if err != nil { + return + } + + sql := sq.Select("id").From("history_assets").Limit(1).Where(sq.Eq{ + "asset_type": assetType, + "asset_code": assetCode, + "asset_issuer": assetIssuer}) + + err = q.Get(&id, sql) + return +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/effect.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/effect.go new file mode 100644 index 0000000..c474d87 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/effect.go @@ -0,0 +1,223 @@ +package history + +import ( + "encoding/json" + "fmt" + "math" + + sq "github.com/Masterminds/squirrel" + "github.com/stellar/go/support/errors" + "github.com/stellar/go/xdr" + "github.com/stellar/go/services/horizon/internal/db2" + "github.com/stellar/go/services/horizon/internal/toid" +) + +// UnmarshalDetails unmarshals the details of this effect into `dest` +func (r *Effect) UnmarshalDetails(dest interface{}) error { + if !r.DetailsString.Valid { + return nil + } + + err := json.Unmarshal([]byte(r.DetailsString.String), &dest) + if err != nil { + err = errors.Wrap(err, "unmarshal failed") + } + + return err +} + +// ID returns a lexically ordered id for this effect record +func (r *Effect) ID() string { + return fmt.Sprintf("%019d-%010d", r.HistoryOperationID, r.Order) +} + +// LedgerSequence return the ledger in which the effect occurred. +func (r *Effect) LedgerSequence() int32 { + id := toid.Parse(r.HistoryOperationID) + return id.LedgerSequence +} + +// PagingToken returns a cursor for this effect +func (r *Effect) PagingToken() string { + return fmt.Sprintf("%d-%d", r.HistoryOperationID, r.Order) +} + +// Effects provides a helper to filter rows from the `history_effects` +// table with pre-defined filters. See `TransactionsQ` methods for the +// available filters. +func (q *Q) Effects() *EffectsQ { + return &EffectsQ{ + parent: q, + sql: selectEffect, + } +} + +// ForAccount filters the operations collection to a specific account +func (q *EffectsQ) ForAccount(aid string) *EffectsQ { + var account Account + q.Err = q.parent.AccountByAddress(&account, aid) + if q.Err != nil { + return q + } + + q.sql = q.sql.Where("heff.history_account_id = ?", account.ID) + + return q +} + +// ForLedger filters the query to only effects in a specific ledger, +// specified by its sequence. +func (q *EffectsQ) ForLedger(seq int32) *EffectsQ { + var ledger Ledger + q.Err = q.parent.LedgerBySequence(&ledger, seq) + if q.Err != nil { + return q + } + + start := toid.ID{LedgerSequence: seq} + end := toid.ID{LedgerSequence: seq + 1} + q.sql = q.sql.Where( + "heff.history_operation_id >= ? AND heff.history_operation_id < ?", + start.ToInt64(), + end.ToInt64(), + ) + + return q +} + +// ForOperation filters the query to only effects in a specific operation, +// specified by its id. +func (q *EffectsQ) ForOperation(id int64) *EffectsQ { + start := toid.Parse(id) + end := start + end.IncOperationOrder() + q.sql = q.sql.Where( + "heff.history_operation_id >= ? AND heff.history_operation_id < ?", + start.ToInt64(), + end.ToInt64(), + ) + + return q +} + +// ForOrderBook filters the query to only effects whose details indicate that +// the effect is for a specific asset pair. +func (q *EffectsQ) ForOrderBook(selling, buying xdr.Asset) *EffectsQ { + q.orderBookFilter(selling, "sold_") + if q.Err != nil { + return q + } + q.orderBookFilter(buying, "bought_") + if q.Err != nil { + return q + } + + return q +} + +// ForTransaction filters the query to only effects in a specific +// transaction, specified by the transactions's hex-encoded hash. +func (q *EffectsQ) ForTransaction(hash string) *EffectsQ { + var tx Transaction + q.Err = q.parent.TransactionByHash(&tx, hash) + if q.Err != nil { + return q + } + + start := toid.Parse(tx.ID) + end := start + end.TransactionOrder++ + q.sql = q.sql.Where( + "heff.history_operation_id >= ? AND heff.history_operation_id < ?", + start.ToInt64(), + end.ToInt64(), + ) + + return q +} + +// OfType filters the query to only effects of the given type. +func (q *EffectsQ) OfType(typ EffectType) *EffectsQ { + q.sql = q.sql.Where("heff.type = ?", typ) + return q +} + +// Page specifies the paging constraints for the query being built by `q`. +func (q *EffectsQ) Page(page db2.PageQuery) *EffectsQ { + if q.Err != nil { + return q + } + + op, idx, err := page.CursorInt64Pair(db2.DefaultPairSep) + if err != nil { + q.Err = err + return q + } + + if idx > math.MaxInt32 { + idx = math.MaxInt32 + } + + switch page.Order { + case "asc": + q.sql = q.sql. + Where(`( + heff.history_operation_id > ? + OR ( + heff.history_operation_id = ? + AND heff.order > ? + ))`, op, op, idx). + OrderBy("heff.history_operation_id asc, heff.order asc") + case "desc": + q.sql = q.sql. + Where(`( + heff.history_operation_id < ? + OR ( + heff.history_operation_id = ? + AND heff.order < ? + ))`, op, op, idx). + OrderBy("heff.history_operation_id desc, heff.order desc") + } + + q.sql = q.sql.Limit(page.Limit) + return q +} + +// Select loads the results of the query specified by `q` into `dest`. +func (q *EffectsQ) Select(dest interface{}) error { + if q.Err != nil { + return q.Err + } + + q.Err = q.parent.Select(dest, q.sql) + return q.Err +} + +// OfType filters the query to only effects of the given type. +func (q *EffectsQ) orderBookFilter(a xdr.Asset, prefix string) { + var typ, code, iss string + q.Err = a.Extract(&typ, &code, &iss) + if q.Err != nil { + return + } + + if a.Type == xdr.AssetTypeAssetTypeNative { + clause := fmt.Sprintf(` + (heff.details->>'%sasset_type' = ? + AND heff.details ?? '%sasset_code' = false + AND heff.details ?? '%sasset_issuer' = false)`, prefix, prefix, prefix) + q.sql = q.sql.Where(clause, typ) + return + } + + clause := fmt.Sprintf(` + (heff.details->>'%sasset_type' = ? + AND heff.details->>'%sasset_code' = ? + AND heff.details->>'%sasset_issuer' = ?)`, prefix, prefix, prefix) + q.sql = q.sql.Where(clause, typ, code, iss) +} + +var selectEffect = sq. + Select("heff.*, hacc.address"). + From("history_effects heff"). + LeftJoin("history_accounts hacc ON hacc.id = heff.history_account_id") diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/ledger.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/ledger.go new file mode 100644 index 0000000..428ca59 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/ledger.go @@ -0,0 +1,84 @@ +package history + +import ( + "fmt" + + sq "github.com/Masterminds/squirrel" + "github.com/stellar/go/support/errors" + "github.com/stellar/go/services/horizon/internal/db2" +) + +// LedgerBySequence loads the single ledger at `seq` into `dest` +func (q *Q) LedgerBySequence(dest interface{}, seq int32) error { + sql := selectLedger. + Limit(1). + Where("sequence = ?", seq) + + return q.Get(dest, sql) +} + +// Ledgers provides a helper to filter rows from the `history_ledgers` table +// with pre-defined filters. See `LedgersQ` methods for the available filters. +func (q *Q) Ledgers() *LedgersQ { + return &LedgersQ{ + parent: q, + sql: selectLedger, + } +} + +// LedgersBySequence loads the a set of ledgers identified by the sequences +// `seqs` into `dest`. +func (q *Q) LedgersBySequence(dest interface{}, seqs ...int32) error { + if len(seqs) == 0 { + return errors.New("no sequence arguments provided") + } + in := fmt.Sprintf("sequence IN (%s)", sq.Placeholders(len(seqs))) + + whereArgs := make([]interface{}, len(seqs)) + for i, s := range seqs { + whereArgs[i] = s + } + + sql := selectLedger.Where(in, whereArgs...) + + return q.Select(dest, sql) +} + +// Page specifies the paging constraints for the query being built by `q`. +func (q *LedgersQ) Page(page db2.PageQuery) *LedgersQ { + if q.Err != nil { + return q + } + + q.sql, q.Err = page.ApplyTo(q.sql, "hl.id") + return q +} + +// Select loads the results of the query specified by `q` into `dest`. +func (q *LedgersQ) Select(dest interface{}) error { + if q.Err != nil { + return q.Err + } + + q.Err = q.parent.Select(dest, q.sql) + return q.Err +} + +var selectLedger = sq.Select( + "hl.id", + "hl.sequence", + "hl.importer_version", + "hl.ledger_hash", + "hl.previous_ledger_hash", + "hl.transaction_count", + "hl.operation_count", + "hl.closed_at", + "hl.created_at", + "hl.updated_at", + "hl.total_coins", + "hl.fee_pool", + "hl.base_fee", + "hl.base_reserve", + "hl.max_tx_set_size", + "hl.protocol_version", +).From("history_ledgers hl") diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/ledger_cache.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/ledger_cache.go new file mode 100644 index 0000000..f966ab7 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/ledger_cache.go @@ -0,0 +1,47 @@ +package history + +import ( + "github.com/stellar/go/support/errors" +) + +// Queue adds `seq` to the load queue for the cache. +func (lc *LedgerCache) Queue(seq int32) { + lc.lock.Lock() + + if lc.queued == nil { + lc.queued = map[int32]struct{}{} + } + + lc.queued[seq] = struct{}{} + lc.lock.Unlock() +} + +// Load loads a batch of ledgers identified by `sequences`, using `q`, +// and populates the cache with the results +func (lc *LedgerCache) Load(q *Q) error { + lc.lock.Lock() + defer lc.lock.Unlock() + + if len(lc.queued) == 0 { + return nil + } + + sequences := make([]int32, 0, len(lc.queued)) + for seq := range lc.queued { + sequences = append(sequences, seq) + } + + var ledgers []Ledger + err := q.LedgersBySequence(&ledgers, sequences...) + if err != nil { + return errors.Wrap(err, "failed to load ledger batch") + } + + lc.Records = map[int32]Ledger{} + for _, l := range ledgers { + lc.Records[l.Sequence] = l + } + + lc.queued = nil + return nil +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/ledger_cache_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/ledger_cache_test.go new file mode 100644 index 0000000..a7999aa --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/ledger_cache_test.go @@ -0,0 +1,25 @@ +package history + +import ( + "testing" + + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestLedgerCache(t *testing.T) { + tt := test.Start(t).Scenario("base") + defer tt.Finish() + q := &Q{tt.HorizonSession()} + + var lc LedgerCache + lc.Queue(2) + lc.Queue(3) + + err := lc.Load(q) + + if tt.Assert.NoError(err) { + tt.Assert.Contains(lc.Records, int32(2)) + tt.Assert.Contains(lc.Records, int32(3)) + tt.Assert.NotContains(lc.Records, int32(1)) + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/ledger_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/ledger_test.go new file mode 100644 index 0000000..2dada2c --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/ledger_test.go @@ -0,0 +1,46 @@ +package history + +import ( + "database/sql" + "testing" + + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestLedgerQueries(t *testing.T) { + tt := test.Start(t).Scenario("base") + defer tt.Finish() + q := &Q{tt.HorizonSession()} + + // Test LedgerBySequence + var l Ledger + err := q.LedgerBySequence(&l, 3) + tt.Assert.NoError(err) + + err = q.LedgerBySequence(&l, 100000) + tt.Assert.Equal(err, sql.ErrNoRows) + + // Test Ledgers() + ls := []Ledger{} + err = q.Ledgers().Select(&ls) + + if tt.Assert.NoError(err) { + tt.Assert.Len(ls, 3) + } + + // LedgersBySequence + err = q.LedgersBySequence(&ls, 1, 2, 3) + + if tt.Assert.NoError(err) { + tt.Assert.Len(ls, 3) + + foundSeqs := make([]int32, len(ls)) + for i := range ls { + foundSeqs[i] = ls[i].Sequence + } + + tt.Assert.Contains(foundSeqs, int32(1)) + tt.Assert.Contains(foundSeqs, int32(2)) + tt.Assert.Contains(foundSeqs, int32(3)) + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/main.go new file mode 100644 index 0000000..699d3fc --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/main.go @@ -0,0 +1,293 @@ +// Package history contains database record definitions useable for +// reading rows from a the history portion of horizon's database +package history + +import ( + "sync" + "time" + + sq "github.com/Masterminds/squirrel" + "github.com/guregu/null" + "github.com/stellar/go/support/db" + "github.com/stellar/go/xdr" +) + +const ( + // account effects + + // EffectAccountCreated effects occur when a new account is created + EffectAccountCreated EffectType = 0 // from create_account + + // EffectAccountRemoved effects occur when one account is merged into another + EffectAccountRemoved EffectType = 1 // from merge_account + + // EffectAccountCredited effects occur when an account receives some currency + EffectAccountCredited EffectType = 2 // from create_account, payment, path_payment, merge_account + + // EffectAccountDebited effects occur when an account sends some currency + EffectAccountDebited EffectType = 3 // from create_account, payment, path_payment, create_account + + // EffectAccountThresholdsUpdated effects occur when an account changes its + // multisig thresholds. + EffectAccountThresholdsUpdated EffectType = 4 // from set_options + + // EffectAccountHomeDomainUpdated effects occur when an account changes its + // home domain. + EffectAccountHomeDomainUpdated EffectType = 5 // from set_options + + // EffectAccountFlagsUpdated effects occur when an account changes its + // account flags, either clearing or setting. + EffectAccountFlagsUpdated EffectType = 6 // from set_options + + // signer effects + + // EffectSignerCreated occurs when an account gains a signer + EffectSignerCreated EffectType = 10 // from set_options + + // EffectSignerRemoved occurs when an account loses a signer + EffectSignerRemoved EffectType = 11 // from set_options + + // EffectSignerUpdated occurs when an account changes the weight of one of its + // signers. + EffectSignerUpdated EffectType = 12 // from set_options + + // trustline effects + + // EffectTrustlineCreated occurs when an account trusts an anchor + EffectTrustlineCreated EffectType = 20 // from change_trust + + // EffectTrustlineRemoved occurs when an account removes struct by setting the + // limit of a trustline to 0 + EffectTrustlineRemoved EffectType = 21 // from change_trust + + // EffectTrustlineUpdated occurs when an account changes a trustline's limit + EffectTrustlineUpdated EffectType = 22 // from change_trust, allow_trust + + // EffectTrustlineAuthorized occurs when an anchor has AUTH_REQUIRED flag set + // to true and it authorizes another account's trustline + EffectTrustlineAuthorized EffectType = 23 // from allow_trust + + // EffectTrustlineDeauthorized occurs when an anchor revokes access to a asset + // it issues. + EffectTrustlineDeauthorized EffectType = 24 // from allow_trust + + // trading effects + + // EffectOfferCreated occurs when an account offers to trade an asset + EffectOfferCreated EffectType = 30 // from manage_offer, creat_passive_offer + + // EffectOfferRemoved occurs when an account removes an offer + EffectOfferRemoved EffectType = 31 // from manage_offer, creat_passive_offer, path_payment + + // EffectOfferUpdated occurs when an offer is updated by the offering account. + EffectOfferUpdated EffectType = 32 // from manage_offer, creat_passive_offer, path_payment + + // EffectTrade occurs when a trade is initiated because of a path payment or + // offer operation. + EffectTrade EffectType = 33 // from manage_offer, creat_passive_offer, path_payment + + // data effects + + // EffectDataCreated occurs when an account gets a new data field + EffectDataCreated EffectType = 40 // from manage_data + + // EffectDataRemoved occurs when an account removes a data field + EffectDataRemoved EffectType = 41 // from manage_data + + // EffectDataUpdated occurs when an account changes a data field's value + EffectDataUpdated EffectType = 42 // from manage_data + +) + +// Account is a row of data from the `history_accounts` table +type Account struct { + ID int64 + Address string `db:"address"` +} + +// AccountsQ is a helper struct to aid in configuring queries that loads +// slices of account structs. +type AccountsQ struct { + Err error + parent *Q + sql sq.SelectBuilder +} + +// Asset is a row of data from the `history_assets` table +type Asset struct { + ID int64 `db:"id"` + Type string `db:"asset_type"` + Code string `db:"asset_code"` + Issuer string `db:"asset_issuer"` +} + +// Effect is a row of data from the `history_effects` table +type Effect struct { + HistoryAccountID int64 `db:"history_account_id"` + Account string `db:"address"` + HistoryOperationID int64 `db:"history_operation_id"` + Order int32 `db:"order"` + Type EffectType `db:"type"` + DetailsString null.String `db:"details"` +} + +// EffectsQ is a helper struct to aid in configuring queries that loads +// slices of Ledger structs. +type EffectsQ struct { + Err error + parent *Q + sql sq.SelectBuilder +} + +// EffectType is the numeric type for an effect, used as the `type` field in the +// `history_effects` table. +type EffectType int + +// Ledger is a row of data from the `history_ledgers` table +type Ledger struct { + TotalOrderID + Sequence int32 `db:"sequence"` + ImporterVersion int32 `db:"importer_version"` + LedgerHash string `db:"ledger_hash"` + PreviousLedgerHash null.String `db:"previous_ledger_hash"` + TransactionCount int32 `db:"transaction_count"` + OperationCount int32 `db:"operation_count"` + ClosedAt time.Time `db:"closed_at"` + CreatedAt time.Time `db:"created_at"` + UpdatedAt time.Time `db:"updated_at"` + TotalCoins int64 `db:"total_coins"` + FeePool int64 `db:"fee_pool"` + BaseFee int32 `db:"base_fee"` + BaseReserve int32 `db:"base_reserve"` + MaxTxSetSize int32 `db:"max_tx_set_size"` + ProtocolVersion int32 `db:"protocol_version"` +} + +// LedgerCache is a helper struct to load ledger data related to a batch of +// sequences. +type LedgerCache struct { + Records map[int32]Ledger + + lock sync.Mutex + queued map[int32]struct{} +} + +// LedgersQ is a helper struct to aid in configuring queries that loads +// slices of Ledger structs. +type LedgersQ struct { + Err error + parent *Q + sql sq.SelectBuilder +} + +// Operation is a row of data from the `history_operations` table +type Operation struct { + TotalOrderID + TransactionID int64 `db:"transaction_id"` + TransactionHash string `db:"transaction_hash"` + ApplicationOrder int32 `db:"application_order"` + Type xdr.OperationType `db:"type"` + DetailsString null.String `db:"details"` + SourceAccount string `db:"source_account"` +} + +// OperationsQ is a helper struct to aid in configuring queries that loads +// slices of Operation structs. +type OperationsQ struct { + Err error + parent *Q + sql sq.SelectBuilder +} + +// Q is a helper struct on which to hang common queries against a history +// portion of the horizon database. +type Q struct { + *db.Session +} + +// TotalOrderID represents the ID portion of rows that are identified by the +// "TotalOrderID". See total_order_id.go in the `db` package for details. +type TotalOrderID struct { + ID int64 `db:"id"` +} + +// Trade represents a trade from the trades table, joined with asset information from the assets table and account +// addresses from the accounts table +type Trade struct { + HistoryOperationID int64 `db:"history_operation_id"` + Order int32 `db:"order"` + LedgerCloseTime time.Time `db:"ledger_closed_at"` + OfferID int64 `db:"offer_id"` + BaseAccount string `db:"base_account"` + BaseAssetType string `db:"base_asset_type"` + BaseAssetCode string `db:"base_asset_code"` + BaseAssetIssuer string `db:"base_asset_issuer"` + BaseAmount xdr.Int64 `db:"base_amount"` + CounterAccount string `db:"counter_account"` + CounterAssetType string `db:"counter_asset_type"` + CounterAssetCode string `db:"counter_asset_code"` + CounterAssetIssuer string `db:"counter_asset_issuer"` + CounterAmount xdr.Int64 `db:"counter_amount"` + BaseIsSeller bool `db:"base_is_seller"` +} + +// TradesQ is a helper struct to aid in configuring queries that loads +// slices of trade structs. +type TradesQ struct { + Err error + parent *Q + sql sq.SelectBuilder +} + +// Transaction is a row of data from the `history_transactions` table +type Transaction struct { + TotalOrderID + TransactionHash string `db:"transaction_hash"` + LedgerSequence int32 `db:"ledger_sequence"` + LedgerCloseTime time.Time `db:"ledger_close_time"` + ApplicationOrder int32 `db:"application_order"` + Account string `db:"account"` + AccountSequence string `db:"account_sequence"` + FeePaid int32 `db:"fee_paid"` + OperationCount int32 `db:"operation_count"` + TxEnvelope string `db:"tx_envelope"` + TxResult string `db:"tx_result"` + TxMeta string `db:"tx_meta"` + TxFeeMeta string `db:"tx_fee_meta"` + SignatureString string `db:"signatures"` + MemoType string `db:"memo_type"` + Memo null.String `db:"memo"` + ValidAfter null.Int `db:"valid_after"` + ValidBefore null.Int `db:"valid_before"` + CreatedAt time.Time `db:"created_at"` + UpdatedAt time.Time `db:"updated_at"` +} + +// TransactionsQ is a helper struct to aid in configuring queries that loads +// slices of transaction structs. +type TransactionsQ struct { + Err error + parent *Q + sql sq.SelectBuilder +} + +// ElderLedger loads the oldest ledger known to the history database +func (q *Q) ElderLedger(dest interface{}) error { + return q.GetRaw(dest, `SELECT COALESCE(MIN(sequence), 0) FROM history_ledgers`) +} + +// LatestLedger loads the latest known ledger +func (q *Q) LatestLedger(dest interface{}) error { + return q.GetRaw(dest, `SELECT COALESCE(MAX(sequence), 0) FROM history_ledgers`) +} + +// OldestOutdatedLedgers populates a slice of ints with the first million +// outdated ledgers, based upon the provided `currentVersion` number +func (q *Q) OldestOutdatedLedgers(dest interface{}, currentVersion int) error { + return q.SelectRaw(dest, ` + SELECT sequence + FROM history_ledgers + WHERE importer_version < $1 + ORDER BY sequence ASC + LIMIT 1000000`, currentVersion) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/main_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/main_test.go new file mode 100644 index 0000000..fcf90d3 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/main_test.go @@ -0,0 +1,33 @@ +package history + +import ( + "testing" + + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestLatestLedger(t *testing.T) { + tt := test.Start(t).Scenario("base") + defer tt.Finish() + q := &Q{tt.HorizonSession()} + + var seq int + err := q.LatestLedger(&seq) + + if tt.Assert.NoError(err) { + tt.Assert.Equal(3, seq) + } +} + +func TestElderLedger(t *testing.T) { + tt := test.Start(t).Scenario("base") + defer tt.Finish() + q := &Q{tt.HorizonSession()} + + var seq int + err := q.ElderLedger(&seq) + + if tt.Assert.NoError(err) { + tt.Assert.Equal(1, seq) + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/operation.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/operation.go new file mode 100644 index 0000000..e06d2e4 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/operation.go @@ -0,0 +1,150 @@ +package history + +import ( + "encoding/json" + + sq "github.com/Masterminds/squirrel" + "github.com/go-errors/errors" + "github.com/stellar/go/xdr" + "github.com/stellar/go/services/horizon/internal/db2" + "github.com/stellar/go/services/horizon/internal/toid" +) + +// LedgerSequence return the ledger in which the effect occurred. +func (r *Operation) LedgerSequence() int32 { + id := toid.Parse(r.ID) + return id.LedgerSequence +} + +// UnmarshalDetails unmarshals the details of this operation into `dest` +func (r *Operation) UnmarshalDetails(dest interface{}) error { + if !r.DetailsString.Valid { + return nil + } + + err := json.Unmarshal([]byte(r.DetailsString.String), &dest) + if err != nil { + err = errors.Wrap(err, 1) + } + + return err +} + +// Operations provides a helper to filter the operations table with pre-defined +// filters. See `OperationsQ` for the available filters. +func (q *Q) Operations() *OperationsQ { + return &OperationsQ{ + parent: q, + sql: selectOperation, + } +} + +// OperationByID loads a single operation with `id` into `dest` +func (q *Q) OperationByID(dest interface{}, id int64) error { + sql := selectOperation. + Limit(1). + Where("hop.id = ?", id) + + return q.Get(dest, sql) +} + +// ForAccount filters the operations collection to a specific account +func (q *OperationsQ) ForAccount(aid string) *OperationsQ { + var account Account + q.Err = q.parent.AccountByAddress(&account, aid) + if q.Err != nil { + return q + } + + q.sql = q.sql.Join( + "history_operation_participants hopp ON "+ + "hopp.history_operation_id = hop.id", + ).Where("hopp.history_account_id = ?", account.ID) + + return q +} + +// ForLedger filters the query to a only operations in a specific ledger, +// specified by its sequence. +func (q *OperationsQ) ForLedger(seq int32) *OperationsQ { + var ledger Ledger + q.Err = q.parent.LedgerBySequence(&ledger, seq) + if q.Err != nil { + return q + } + + start := toid.ID{LedgerSequence: seq} + end := toid.ID{LedgerSequence: seq + 1} + q.sql = q.sql.Where( + "hop.id >= ? AND hop.id < ?", + start.ToInt64(), + end.ToInt64(), + ) + + return q +} + +// ForTransaction filters the query to a only operations in a specific +// transaction, specified by the transactions's hex-encoded hash. +func (q *OperationsQ) ForTransaction(hash string) *OperationsQ { + var tx Transaction + q.Err = q.parent.TransactionByHash(&tx, hash) + if q.Err != nil { + return q + } + + start := toid.Parse(tx.ID) + end := start + end.TransactionOrder++ + q.sql = q.sql.Where( + "hop.id >= ? AND hop.id < ?", + start.ToInt64(), + end.ToInt64(), + ) + + return q +} + +// OnlyPayments filters the query being built to only include operations that +// are in the "payment" class of operations: CreateAccountOps, Payments, and +// PathPayments. +func (q *OperationsQ) OnlyPayments() *OperationsQ { + q.sql = q.sql.Where(sq.Eq{"hop.type": []xdr.OperationType{ + xdr.OperationTypeCreateAccount, + xdr.OperationTypePayment, + xdr.OperationTypePathPayment, + xdr.OperationTypeAccountMerge, + }}) + return q +} + +// Page specifies the paging constraints for the query being built by `q`. +func (q *OperationsQ) Page(page db2.PageQuery) *OperationsQ { + if q.Err != nil { + return q + } + + q.sql, q.Err = page.ApplyTo(q.sql, "hop.id") + return q +} + +// Select loads the results of the query specified by `q` into `dest`. +func (q *OperationsQ) Select(dest interface{}) error { + if q.Err != nil { + return q.Err + } + + q.Err = q.parent.Select(dest, q.sql) + return q.Err +} + +var selectOperation = sq.Select( + "hop.id, " + + "hop.transaction_id, " + + "hop.application_order, " + + "hop.type, " + + "hop.details, " + + "hop.source_account, " + + "ht.transaction_hash"). + From("history_operations hop"). + LeftJoin("history_transactions ht ON ht.id = hop.transaction_id") diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/operation_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/operation_test.go new file mode 100644 index 0000000..f9eb977 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/operation_test.go @@ -0,0 +1,66 @@ +package history + +import ( + "testing" + + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestOperationQueries(t *testing.T) { + tt := test.Start(t).Scenario("base") + defer tt.Finish() + q := &Q{tt.HorizonSession()} + + // Test OperationByID + var op Operation + err := q.OperationByID(&op, 8589938689) + + if tt.Assert.NoError(err) { + tt.Assert.Equal(int64(8589938689), op.ID) + } + + // Test Operations() + ops := []Operation{} + err = q.Operations(). + ForAccount("GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON"). + Select(&ops) + + if tt.Assert.NoError(err) { + tt.Assert.Len(ops, 2) + } + + // ledger filter works + ops = []Operation{} + err = q.Operations().ForLedger(2).Select(&ops) + + if tt.Assert.NoError(err) { + tt.Assert.Len(ops, 3) + } + + // tx filter works + hash := "2374e99349b9ef7dba9a5db3339b78fda8f34777b1af33ba468ad5c0df946d4d" + ops = []Operation{} + err = q.Operations().ForTransaction(hash).Select(&ops) + + if tt.Assert.NoError(err) { + tt.Assert.Len(ops, 1) + } + + // payment filter works + tt.Scenario("pathed_payment") + ops = []Operation{} + err = q.Operations().OnlyPayments().Select(&ops) + + if tt.Assert.NoError(err) { + tt.Assert.Len(ops, 10) + } + + // payment filter includes account merges + tt.Scenario("account_merge") + ops = []Operation{} + err = q.Operations().OnlyPayments().Select(&ops) + + if tt.Assert.NoError(err) { + tt.Assert.Len(ops, 3) + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/total_order_id.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/total_order_id.go new file mode 100644 index 0000000..50bf6d7 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/total_order_id.go @@ -0,0 +1,10 @@ +package history + +import ( + "fmt" +) + +// PagingToken returns a cursor for this record +func (r *TotalOrderID) PagingToken() string { + return fmt.Sprintf("%d", r.ID) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/trade.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/trade.go new file mode 100644 index 0000000..5380476 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/trade.go @@ -0,0 +1,134 @@ +package history + +import ( + "fmt" + "math" + + sq "github.com/Masterminds/squirrel" + "github.com/stellar/go/services/horizon/internal/db2" +) + +// PagingToken returns a cursor for this trade +func (r *Trade) PagingToken() string { + return fmt.Sprintf("%d-%d", r.HistoryOperationID, r.Order) +} + +// Trades provides a helper to filter rows from the `history_trades` table +// with pre-defined filters. See `TradesQ` methods for the available filters. +func (q *Q) Trades() *TradesQ { + return &TradesQ{ + parent: q, + sql: selectTrade, + } +} + +// TradesForAssetPair provides a helper to filter rows from the `history_trades` table +// with the base filter of a specific asset pair. See `TradesQ` methods for further available filters. +func (q *Q) TradesForAssetPair(baseAssetId int64, counterAssetId int64) *TradesQ { + var sql sq.SelectBuilder + if baseAssetId < counterAssetId { + sql = selectTrade.Where(sq.Eq{"base_asset_id": baseAssetId, "counter_asset_id": counterAssetId}) + } else { + sql = selectReverseTrade.Where(sq.Eq{"base_asset_id": counterAssetId, "counter_asset_id": baseAssetId}) + } + return &TradesQ{ + parent: q, + sql: sql, + } +} + +// Page specifies the paging constraints for the query being built by `q`. +func (q *TradesQ) Page(page db2.PageQuery) *TradesQ { + if q.Err != nil { + return q + } + + op, idx, err := page.CursorInt64Pair(db2.DefaultPairSep) + if err != nil { + q.Err = err + return q + } + + // constrain the second portion of the cursor pair to 32-bits + if idx > math.MaxInt32 { + idx = math.MaxInt32 + } + + switch page.Order { + case "asc": + q.sql = q.sql. + Where(`( + htrd.history_operation_id > ? + OR ( + htrd.history_operation_id = ? + AND htrd.order > ? + ))`, op, op, idx). + OrderBy("htrd.history_operation_id asc, htrd.order asc") + case "desc": + q.sql = q.sql. + Where(`( + htrd.history_operation_id < ? + OR ( + htrd.history_operation_id = ? + AND htrd.order < ? + ))`, op, op, idx). + OrderBy("htrd.history_operation_id desc, htrd.order desc") + } + + q.sql = q.sql.Limit(page.Limit) + return q +} + +// Select loads the results of the query specified by `q` into `dest`. +func (q *TradesQ) Select(dest interface{}) error { + if q.Err != nil { + return q.Err + } + + q.Err = q.parent.Select(dest, q.sql) + return q.Err +} + +var selectTrade = sq.Select( + "history_operation_id", + "htrd.\"order\"", + "htrd.ledger_closed_at", + "htrd.offer_id", + "base_accounts.address as base_account", + "base_assets.asset_type as base_asset_type", + "base_assets.asset_code as base_asset_code", + "base_assets.asset_issuer as base_asset_issuer", + "htrd.base_amount", + "counter_accounts.address as counter_account", + "counter_assets.asset_type as counter_asset_type", + "counter_assets.asset_code as counter_asset_code", + "counter_assets.asset_issuer as counter_asset_issuer", + "htrd.counter_amount", + "htrd.base_is_seller", +).From("history_trades htrd"). + Join("history_accounts base_accounts ON base_account_id = base_accounts.id"). + Join("history_accounts counter_accounts ON counter_account_id = counter_accounts.id"). + Join("history_assets base_assets ON base_asset_id = base_assets.id"). + Join("history_assets counter_assets ON counter_asset_id = counter_assets.id") + +var selectReverseTrade = sq.Select( + "history_operation_id", + "htrd.\"order\"", + "htrd.ledger_closed_at", + "htrd.offer_id", + "counter_accounts.address as base_account", + "counter_assets.asset_type as base_asset_type", + "counter_assets.asset_code as base_asset_code", + "counter_assets.asset_issuer as base_asset_issuer", + "htrd.base_amount", + "base_accounts.address as counter_account", + "base_assets.asset_type as counter_asset_type", + "base_assets.asset_code as counter_asset_code", + "base_assets.asset_issuer as counter_asset_issuer", + "htrd.counter_amount", + "NOT(htrd.base_is_seller) as base_is_seller", +).From("history_trades htrd"). + Join("history_accounts base_accounts ON base_account_id = base_accounts.id"). + Join("history_accounts counter_accounts ON counter_account_id = counter_accounts.id"). + Join("history_assets base_assets ON base_asset_id = base_assets.id"). + Join("history_assets counter_assets ON counter_asset_id = counter_assets.id") \ No newline at end of file diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/trade_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/trade_test.go new file mode 100644 index 0000000..54215b4 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/trade_test.go @@ -0,0 +1,48 @@ +package history + +import ( + "testing" + + "github.com/stellar/go/services/horizon/internal/db2" + "github.com/stellar/go/services/horizon/internal/test" + "github.com/stellar/go/xdr" +) + +func TestTradeQueries(t *testing.T) { + tt := test.Start(t).Scenario("kahuna") + defer tt.Finish() + q := &Q{tt.HorizonSession()} + var trades []Trade + + // All trades + err := q.Trades().Select(&trades) + if tt.Assert.NoError(err) { + tt.Assert.Len(trades, 4) + } + + // Paging + pq := db2.MustPageQuery(trades[0].PagingToken(), "asc", 1) + var pt []Trade + + err = q.Trades().Page(pq).Select(&pt) + if tt.Assert.NoError(err) { + tt.Assert.Len(pt, 1) + tt.Assert.Equal(trades[1], pt[0]) + } + + // Cursor bounds checking + pq = db2.MustPageQuery("", "desc", 1) + err = q.Trades().Page(pq).Select(&pt) + tt.Assert.NoError(err) + + // test for asset pairs + q.TradesForAssetPair(2, 3).Select(&trades) + tt.Assert.Len(trades, 0) + + q.TradesForAssetPair(1, 2).Select(&trades) + tt.Assert.Len(trades, 1) + + tt.Assert.Equal(xdr.Int64(2000000000), trades[0].BaseAmount) + tt.Assert.Equal(xdr.Int64(1000000000), trades[0].CounterAmount) + tt.Assert.Equal(true, trades[0].BaseIsSeller) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/transaction.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/transaction.go new file mode 100644 index 0000000..575e3f2 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/transaction.go @@ -0,0 +1,106 @@ +package history + +import ( + sq "github.com/Masterminds/squirrel" + "github.com/stellar/go/services/horizon/internal/db2" + "github.com/stellar/go/services/horizon/internal/toid" +) + +// TransactionByHash is a query that loads a single row from the +// `history_transactions` table based upon the provided hash. +func (q *Q) TransactionByHash(dest interface{}, hash string) error { + sql := selectTransaction. + Limit(1). + Where("ht.transaction_hash = ?", hash) + + return q.Get(dest, sql) +} + +// Transactions provides a helper to filter rows from the `history_transactions` +// table with pre-defined filters. See `TransactionsQ` methods for the +// available filters. +func (q *Q) Transactions() *TransactionsQ { + return &TransactionsQ{ + parent: q, + sql: selectTransaction, + } +} + +// ForAccount filters the transactions collection to a specific account +func (q *TransactionsQ) ForAccount(aid string) *TransactionsQ { + var account Account + q.Err = q.parent.AccountByAddress(&account, aid) + if q.Err != nil { + return q + } + + q.sql = q.sql. + Join("history_transaction_participants htp ON htp.history_transaction_id = ht.id"). + Where("htp.history_account_id = ?", account.ID) + + return q +} + +// ForLedger filters the query to a only transactions in a specific ledger, +// specified by its sequence. +func (q *TransactionsQ) ForLedger(seq int32) *TransactionsQ { + var ledger Ledger + q.Err = q.parent.LedgerBySequence(&ledger, seq) + if q.Err != nil { + return q + } + + start := toid.ID{LedgerSequence: seq} + end := toid.ID{LedgerSequence: seq + 1} + q.sql = q.sql.Where( + "ht.id >= ? AND ht.id < ?", + start.ToInt64(), + end.ToInt64(), + ) + + return q +} + +// Page specifies the paging constraints for the query being built by `q`. +func (q *TransactionsQ) Page(page db2.PageQuery) *TransactionsQ { + if q.Err != nil { + return q + } + + q.sql, q.Err = page.ApplyTo(q.sql, "ht.id") + return q +} + +// Select loads the results of the query specified by `q` into `dest`. +func (q *TransactionsQ) Select(dest interface{}) error { + if q.Err != nil { + return q.Err + } + + q.Err = q.parent.Select(dest, q.sql) + return q.Err +} + +var selectTransaction = sq.Select( + "ht.id, " + + "ht.transaction_hash, " + + "ht.ledger_sequence, " + + "ht.application_order, " + + "ht.account, " + + "ht.account_sequence, " + + "ht.fee_paid, " + + "ht.operation_count, " + + "ht.tx_envelope, " + + "ht.tx_result, " + + "ht.tx_meta, " + + "ht.tx_fee_meta, " + + "ht.created_at, " + + "ht.updated_at, " + + "array_to_string(ht.signatures, ',') AS signatures, " + + "ht.memo_type, " + + "ht.memo, " + + "lower(ht.time_bounds) AS valid_after, " + + "upper(ht.time_bounds) AS valid_before, " + + "hl.closed_at AS ledger_close_time"). + From("history_transactions ht"). + LeftJoin("history_ledgers hl ON ht.ledger_sequence = hl.sequence") diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/transaction_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/transaction_test.go new file mode 100644 index 0000000..57750fa --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/history/transaction_test.go @@ -0,0 +1,24 @@ +package history + +import ( + "database/sql" + "testing" + + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestTransactionQueries(t *testing.T) { + tt := test.Start(t).Scenario("base") + defer tt.Finish() + q := &Q{tt.HorizonSession()} + + // Test TransactionByHash + var tx Transaction + real := "2374e99349b9ef7dba9a5db3339b78fda8f34777b1af33ba468ad5c0df946d4d" + err := q.TransactionByHash(&tx, real) + tt.Assert.NoError(err) + + fake := "not_real" + err = q.TransactionByHash(&tx, fake) + tt.Assert.Equal(err, sql.ErrNoRows) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/main.go new file mode 100644 index 0000000..e5b54ca --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/main.go @@ -0,0 +1,17 @@ +// Package db2 is the replacement for db. It provides low level db connection +// and query capabilities. +package db2 + +// Pageable records have a defined order, and the place withing that order +// is determined by the paging token +type Pageable interface { + PagingToken() string +} + +// PageQuery represents a portion of a Query struct concerned with paging +// through a large dataset. +type PageQuery struct { + Cursor string + Order string + Limit uint64 +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/page_query.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/page_query.go new file mode 100644 index 0000000..e987953 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/page_query.go @@ -0,0 +1,241 @@ +package db2 + +import ( + "fmt" + "math" + "reflect" + "strconv" + "strings" + + sq "github.com/Masterminds/squirrel" + "github.com/go-errors/errors" +) + +const ( + // DefaultPageSize is the default page size for db queries + DefaultPageSize = 10 + // MaxPageSize is the max page size for db queries + MaxPageSize = 200 + + // OrderAscending is used to indicate an ascending order in request params + OrderAscending = "asc" + + // OrderDescending is used to indicate an descending order in request params + OrderDescending = "desc" + + // DefaultPairSep is the default separator used to separate two numbers for CursorInt64Pair + DefaultPairSep = "-" +) + +var ( + // ErrInvalidOrder is an error that occurs when a user-provided order string + // is invalid + ErrInvalidOrder = errors.New("Invalid order") + // ErrInvalidLimit is an error that occurs when a user-provided limit num + // is invalid + ErrInvalidLimit = errors.New("Invalid limit") + // ErrInvalidCursor is an error that occurs when a user-provided cursor string + // is invalid + ErrInvalidCursor = errors.New("Invalid cursor") + // ErrNotPageable is an error that occurs when the records provided to + // PageQuery.GetContinuations cannot be cast to Pageable + ErrNotPageable = errors.New("Records provided are not Pageable") +) + +// ApplyTo returns a new SelectBuilder after applying the paging effects of +// `p` to `sql`. This method provides the default case for paging: int64 +// cursor-based paging by an id column. +func (p PageQuery) ApplyTo( + sql sq.SelectBuilder, + col string, +) (sq.SelectBuilder, error) { + sql = sql.Limit(p.Limit) + + cursor, err := p.CursorInt64() + if err != nil { + return sql, err + } + + switch p.Order { + case "asc": + sql = sql. + Where(fmt.Sprintf("%s > ?", col), cursor). + OrderBy(fmt.Sprintf("%s asc", col)) + case "desc": + sql = sql. + Where(fmt.Sprintf("%s < ?", col), cursor). + OrderBy(fmt.Sprintf("%s desc", col)) + default: + return sql, errors.Errorf("invalid order: %s", p.Order) + } + + return sql, nil +} + +// Invert returns a new PageQuery whose order is reversed +func (p PageQuery) Invert() PageQuery { + switch p.Order { + case OrderAscending: + p.Order = OrderDescending + case OrderDescending: + p.Order = OrderAscending + } + + return p +} + +// GetContinuations returns two new PageQuery structs, a next and previous +// query. +func (p PageQuery) GetContinuations(records interface{}) (next PageQuery, prev PageQuery, err error) { + next = p + prev = p.Invert() + + rv := reflect.ValueOf(records) + l := rv.Len() + + if l <= 0 { + return + } + + first, ok := rv.Index(0).Interface().(Pageable) + if !ok { + err = errors.New(ErrNotPageable) + } + + last, ok := rv.Index(l - 1).Interface().(Pageable) + if !ok { + err = errors.New(ErrNotPageable) + } + + next.Cursor = last.PagingToken() + prev.Cursor = first.PagingToken() + + return +} + +// CursorInt64 parses this query's Cursor string as an int64 +func (p PageQuery) CursorInt64() (int64, error) { + if p.Cursor == "" { + switch p.Order { + case OrderAscending: + return 0, nil + case OrderDescending: + return math.MaxInt64, nil + default: + return 0, errors.New(ErrInvalidOrder) + } + } + + i, err := strconv.ParseInt(p.Cursor, 10, 64) + + if err != nil { + return 0, errors.New(ErrInvalidCursor) + } + + if i < 0 { + return 0, errors.New(ErrInvalidCursor) + } + + return i, nil + +} + +// CursorInt64Pair parses this query's Cursor string as two int64s, separated by the provided separator +func (p PageQuery) CursorInt64Pair(sep string) (l int64, r int64, err error) { + + if p.Cursor == "" { + switch p.Order { + case OrderAscending: + l = 0 + r = 0 + case OrderDescending: + l = math.MaxInt64 + r = math.MaxInt64 + default: + err = errors.New(ErrInvalidOrder) + } + return + } + + parts := strings.SplitN(p.Cursor, sep, 2) + + // In the event that the cursor is only a single number + // we use maxInt as the second element. This ensures that + // cursors containing a single element skip past all entries + // specified by the first element. + // + // As an example, this behavior ensures that an effect cursor + // specified using only a ledger sequence will properly exclude + // all effects originated in the sequence provided. + if len(parts) != 2 { + // NOTE(scott): we work around a build issue here which cases an overflow + // when building for ARM. We assign the untyped constant explicitly to a + // int64. + var max int64 = math.MaxInt64 + parts = append(parts, fmt.Sprintf("%d", max)) + } + + l, err = strconv.ParseInt(parts[0], 10, 64) + if err != nil { + err = errors.Wrap(err, 1) + return + } + + r, err = strconv.ParseInt(parts[1], 10, 64) + if err != nil { + err = errors.Wrap(err, 1) + return + } + + if l < 0 || r < 0 { + err = errors.New(ErrInvalidCursor) + } + + return +} + +// NewPageQuery creates a new PageQuery struct, ensuring the order, limit, and +// cursor are set to the appropriate defaults and are valid. +func NewPageQuery( + cursor string, + order string, + limit uint64, +) (result PageQuery, err error) { + + // Set order + switch order { + case "": + result.Order = OrderAscending + case OrderAscending, OrderDescending: + result.Order = order + default: + err = errors.New(ErrInvalidOrder) + return + } + + result.Cursor = cursor + + // Set limit + switch { + case limit <= 0: + err = errors.New(ErrInvalidLimit) + return + case limit > MaxPageSize: + err = errors.New(ErrInvalidLimit) + return + default: + result.Limit = limit + } + + return +} + +// MustPageQuery behaves as NewPageQuery, but panics upon error +func MustPageQuery(cursor string, order string, limit uint64) PageQuery { + r, err := NewPageQuery(cursor, order, limit) + if err != nil { + panic(err) + } + + return r +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/page_query_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/page_query_test.go new file mode 100644 index 0000000..5d91598 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/page_query_test.go @@ -0,0 +1,95 @@ +package db2 + +import ( + "math" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestPageQuery(t *testing.T) { + assert := assert.New(t) + require := require.New(t) + + var p PageQuery + var err error + + p, err = NewPageQuery("10", "desc", 15) + require.NoError(err) + assert.Equal("10", p.Cursor) + assert.Equal("desc", p.Order) + assert.Equal(uint64(15), p.Limit) + + // Defaults + p, err = NewPageQuery("", "", 1) + require.NoError(err) + assert.Equal("asc", p.Order) + c, err := p.CursorInt64() + require.NoError(err) + assert.Equal(int64(0), c) + assert.Equal(uint64(1), p.Limit) + p, err = NewPageQuery("", "desc", 1) + require.NoError(err) + c, err = p.CursorInt64() + require.NoError(err) + assert.Equal(int64(9223372036854775807), c) + + // Max + p, err = NewPageQuery("", "", 200) + require.NoError(err) + + // Error states + _, err = NewPageQuery("", "foo", 1) + assert.Error(err) + _, err = NewPageQuery("", "", 0) + assert.Error(err) + _, err = NewPageQuery("", "", 201) + assert.Error(err) + +} + +func TestPageQuery_CursorInt64(t *testing.T) { + assert := assert.New(t) + require := require.New(t) + + var p PageQuery + var err error + + p = MustPageQuery("1231-4456", "asc", 1) + l, r, err := p.CursorInt64Pair("-") + require.NoError(err) + assert.Equal(int64(1231), l) + assert.Equal(int64(4456), r) + + // Defaults + p = MustPageQuery("", "asc", 1) + l, r, err = p.CursorInt64Pair("-") + require.NoError(err) + assert.Equal(int64(0), l) + assert.Equal(int64(0), r) + p = MustPageQuery("", "desc", 1) + l, r, err = p.CursorInt64Pair("-") + require.NoError(err) + assert.Equal(int64(math.MaxInt64), l) + assert.Equal(int64(math.MaxInt64), r) + p = MustPageQuery("0", "", 1) + _, r, err = p.CursorInt64Pair("-") + require.NoError(err) + assert.Equal(int64(math.MaxInt64), r) + + // Errors + p = MustPageQuery("123-foo", "", 1) + _, _, err = p.CursorInt64Pair("-") + assert.Error(err) + p = MustPageQuery("foo-123", "", 1) + _, _, err = p.CursorInt64Pair("-") + assert.Error(err) + p = MustPageQuery("-1:123", "", 1) + _, _, err = p.CursorInt64Pair("-") + assert.Error(err) + p = MustPageQuery("111:-123", "", 1) + _, _, err = p.CursorInt64Pair("-") + assert.Error(err) + +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/bindata.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/bindata.go new file mode 100644 index 0000000..271bfa7 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/bindata.go @@ -0,0 +1,398 @@ +// Code generated by go-bindata. +// sources: +// latest.sql +// migrations/1_initial_schema.sql +// migrations/2_index_participants_by_toid.sql +// migrations/3_use_sequence_in_history_accounts.sql +// migrations/4_add_protocol_version.sql +// migrations/5_create_trades_table.sql +// migrations/6_create_assets_table.sql +// migrations/7_modify_trades_table.sql +// DO NOT EDIT! + +package schema + +import ( + "bytes" + "compress/gzip" + "fmt" + "io" + "io/ioutil" + "os" + "path/filepath" + "strings" + "time" +) + +func bindataRead(data []byte, name string) ([]byte, error) { + gz, err := gzip.NewReader(bytes.NewBuffer(data)) + if err != nil { + return nil, fmt.Errorf("Read %q: %v", name, err) + } + + var buf bytes.Buffer + _, err = io.Copy(&buf, gz) + clErr := gz.Close() + + if err != nil { + return nil, fmt.Errorf("Read %q: %v", name, err) + } + if clErr != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +type asset struct { + bytes []byte + info os.FileInfo +} + +type bindataFileInfo struct { + name string + size int64 + mode os.FileMode + modTime time.Time +} + +func (fi bindataFileInfo) Name() string { + return fi.name +} +func (fi bindataFileInfo) Size() int64 { + return fi.size +} +func (fi bindataFileInfo) Mode() os.FileMode { + return fi.mode +} +func (fi bindataFileInfo) ModTime() time.Time { + return fi.modTime +} +func (fi bindataFileInfo) IsDir() bool { + return false +} +func (fi bindataFileInfo) Sys() interface{} { + return nil +} + +var _latestSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x5c\x5d\x6f\xdb\xb8\xd2\xbe\xcf\xaf\x20\xf6\xc6\x31\x60\x07\x71\xbe\xda\x38\x6f\x0b\xb8\x8e\xba\x35\xea\xca\x5b\xdb\x79\xbb\xc5\x62\x41\xd0\x12\x6d\xf3\x54\x12\x55\x92\x4e\x93\x3d\x38\xff\xfd\x40\x5f\xd6\x17\x29\x4a\xb6\xd2\x9e\xcb\x98\xa3\x99\xe7\x19\x0e\x39\xe4\x0c\x91\x7e\xff\xa4\xdf\x07\x7f\x50\x2e\x36\x0c\x2f\x3e\x4f\x81\x8d\x04\x5a\x21\x8e\x81\xbd\x73\xfd\x93\x7e\xff\x24\x18\xbf\xdf\xb9\x3e\xb6\xc1\x9a\x51\x37\x15\x78\xc4\x8c\x13\xea\x81\xdb\xb3\x9b\xb3\xeb\x8c\xd4\xea\x19\xf8\x1b\x18\x7c\x5e\x10\x39\x59\x18\x4b\xc0\x05\x12\xd8\xc5\x9e\x80\x82\xb8\x98\xee\x04\x78\x03\xce\xef\xc2\x21\x87\x5a\xdf\xca\xbf\x5a\x0e\x09\xa4\xb1\x67\x51\x9b\x78\x1b\xf0\x06\x74\x1e\x96\xef\x5f\x77\xee\x12\x75\x9e\x8d\x98\x0d\x2d\xea\xad\x29\x73\x89\xb7\x81\x5c\x30\xe2\x6d\x38\x78\x03\xa8\x17\xeb\xd8\x62\xeb\x1b\x5c\xef\x3c\x4b\x10\xea\xc1\x15\xb5\x09\x0e\xc6\xd7\xc8\xe1\x38\x67\xc6\x25\x1e\x74\x31\xe7\x68\x13\x0a\xfc\x40\xcc\x23\xde\xe6\x2e\xc6\x8e\x11\xb3\xb6\xd0\x47\x62\x0b\xde\x00\x7f\xb7\x72\x88\xd5\x0b\xc8\x5a\x48\x20\x87\x26\x62\x36\x5e\xa3\x9d\x23\xa0\x40\x2b\x07\x73\x1f\x59\x38\x00\xdd\x29\x8c\xfe\x20\x62\x0b\x29\xb1\x33\x38\x4e\xa2\xd9\x30\x91\x8b\x87\x60\x43\x99\x0f\x5d\xb2\x61\x28\xc0\xcc\xef\xc0\xf2\xd9\xc7\x43\xb0\x1c\xbd\x9b\x1a\x77\x60\x61\x6d\xb1\x8b\x86\x31\x88\x3b\x30\xfb\xe1\x61\x36\x04\xfd\x70\xc6\xc6\x73\x63\xb4\x34\x22\xd1\xa2\x1e\x70\x7a\x02\x00\x00\xc4\x06\x02\x3f\x09\x60\xce\x96\xc0\x7c\x98\x4e\x7b\xe1\xaf\xc8\xf7\x1d\x82\x6d\x88\x04\x08\xe6\x81\x0b\xe4\xfa\x20\x00\x1a\xfe\x09\xfe\xa1\x1e\x3e\xe9\xde\x9d\xe4\x81\x6e\x09\x17\x94\x3d\x43\x64\x59\x74\xe7\x09\x0e\x89\x0d\x39\xfe\x9e\x00\x5e\x18\x9f\x1f\x0c\x73\x5c\x13\x73\x22\xad\xd2\x1a\xc2\x5c\x2c\x47\xf3\x25\xf8\x32\x59\x7e\x00\x83\xf0\x87\x89\x39\x9e\x1b\x9f\x0c\x73\x09\xde\x7d\x8d\x7f\x32\x67\xe0\xd3\xc4\xfc\xff\xd1\xf4\xc1\xd8\xff\x3d\xfa\x33\xfd\x7b\x3c\x1a\x7f\x30\xc0\x40\x47\xe6\x60\xb7\x17\x15\xa5\x7e\x5f\x91\x0d\xf1\x04\xb8\x37\xde\x8f\x1e\xa6\x4b\xe0\xe1\x27\xf1\x88\x9c\xd3\x8e\x82\x71\x67\x38\x64\x78\x63\x39\x88\xf3\x6e\x71\xba\x6c\x9b\x61\xce\x81\xb5\x45\x0c\x59\x02\x33\xf0\x88\xd8\x33\xf1\x36\xa7\x37\x57\xdd\x8a\x89\xe2\x1c\xb7\xc1\x2c\x54\x93\xf2\x22\x9e\xc0\x1b\xcc\x8a\x18\x03\x29\x28\x9e\x7d\x2c\x87\x29\x15\xb7\xa8\x2d\x13\x1f\x5c\xc8\xc5\x09\xe7\x3b\xcc\x24\x1f\x5c\xdf\xa4\x1f\xe8\xfc\xd1\x72\xd8\x66\x75\xfe\xb4\xa0\xad\x22\x02\x66\x5f\x4c\xe3\x1e\xbc\xfb\xaa\x61\x34\x9a\x2e\x8d\xb9\x86\xd0\x5e\x57\x61\xf8\x8c\xd8\x2a\x6c\x78\xbd\xc6\x56\x0b\x51\x17\xeb\x89\xc3\xae\xb0\x66\x60\xba\xbc\xf2\x71\x92\xc8\x51\x1f\x47\xfb\xa0\x52\xf2\x37\xca\x6c\xcc\x7e\x53\x44\x73\x18\xc7\xf2\x21\x1b\x0b\x44\x1c\x0e\xfe\xc5\xa9\xb7\x52\x07\x9b\x83\xed\x0d\x66\xc7\xfb\x21\xd6\x13\xfb\x81\xe3\xef\x3b\xec\x59\x2a\x6c\x91\x30\xdc\x22\xbe\xad\xb5\x0a\x7d\x86\x1f\x09\xdd\x71\xa8\xfd\x30\x76\x0b\x43\x1e\x47\x51\x72\x0d\x27\x62\x8f\x23\xd9\xe5\xce\x0b\x16\xd2\x89\xa8\x27\x6f\x39\x94\xcb\x12\x53\x70\x54\xd8\xe7\xa6\xe2\x37\x0c\x23\xa1\xfd\x28\x92\xdd\xf9\x76\x6d\xd9\x7d\xe8\xc4\x7f\xba\x3e\x65\x02\x33\x98\x9c\x76\x8a\x5c\x06\xc5\x20\xa2\x02\x39\xd0\xa2\xc4\xe3\xf2\x18\x5c\x63\x0c\x7d\x4a\x1d\xf9\x68\x70\xf8\x82\x6b\xac\x9a\xeb\x70\x98\x61\x8e\xd9\xa3\x4a\xc4\x45\x4f\x50\x3c\xc1\x60\xeb\xe4\xe4\x1f\x95\x94\xcf\xa8\xa0\x16\x75\x94\xbc\xce\x6b\xec\xad\xe9\x3c\xfb\x88\x09\x62\x11\x1f\xb5\x91\x55\xe5\x6a\x75\xb9\xa8\xfe\x2e\xa0\xdf\x57\x9a\x52\x6e\x37\xbd\x54\xda\xf8\x59\xe9\xa6\x11\xd1\x23\xd3\x4f\xa5\xad\x72\x3a\x92\x8b\x57\xa4\xa7\xfd\x07\x2d\xc6\x66\xf9\xcc\x57\xd8\x07\x32\xbb\xa6\x4a\x26\x3c\x91\x5b\x11\x95\x30\x33\x1d\x99\x98\xa2\x9f\x38\xdd\x31\x0b\x27\xd1\xad\x48\x09\xc9\x32\xef\x74\x86\xc3\x92\x44\x8d\x75\x20\x18\xb2\xf1\xf1\xee\x8c\xd4\x14\xf2\xfd\xb1\x79\x3c\xce\x6b\x87\x64\x15\xba\x5e\x63\xa6\x34\x1b\xee\xbe\xba\xd3\x48\x24\x14\x1d\x5d\x2b\x45\xdc\x70\x7a\xa4\x02\xa1\x05\xcc\xb4\xb6\xf6\x72\x95\xe6\xf6\x52\x15\x16\x43\x48\x84\x43\x8e\x1d\x07\x33\xb0\xa2\xd4\xc1\xc8\x8b\xc6\xc6\x33\x73\xb1\x9c\x8f\x26\xe6\xb2\x30\x6f\x30\x43\x04\x86\xd7\x70\x30\xfe\x60\x8c\x3f\x82\xd3\xd3\x2c\xc5\xb7\xe0\xbc\xdb\xd5\xa9\x92\x7d\x9e\xb0\xfa\xbf\x12\xd1\x1a\xfa\x72\xa4\x0b\xea\x0b\x1e\x09\x01\x56\xc6\xfa\x7e\x29\xb7\x9a\xe8\x54\x8a\xeb\xa6\xba\x3a\x7b\xcc\x31\xc9\x4e\x85\xaf\xdd\x74\xa7\xb1\xf2\xb3\x12\x5e\x43\xb2\x47\xa6\x3c\x8d\xb5\x72\xd2\x53\x7d\x50\x91\xf6\x32\x9f\xb4\x1a\xab\x49\x7c\x66\x21\xd5\xbe\x7d\xc4\x9b\xb3\xe6\x4e\x53\x37\x33\x56\x27\x39\xa9\x6c\x6a\x5a\x7d\x3c\x47\xca\xa5\xa7\xba\xda\xfc\x92\xcb\x89\x78\x82\xd8\x7b\xc4\x0e\xf5\xb1\xac\xe0\x27\x9e\x82\xab\xc2\xce\x11\x8a\x41\x17\x0b\xa4\x18\x0a\xbc\xa0\x1a\xe6\x64\xe3\x21\xb1\x63\x58\x56\x9b\xba\xbd\xe9\xfe\xf5\x77\x7a\xba\xf8\xf7\x7f\x64\xe7\x8b\xbf\xfe\x2e\xde\x59\xb0\x4b\x15\x65\xa4\x54\x97\x47\x3d\x5c\x79\x5a\x49\x75\x95\xd5\xc4\xcc\x88\x8b\xe1\x8a\xee\x3c\x9b\x07\x33\xf7\x9a\x21\x6f\x53\x55\xf4\x8c\x8a\x60\xc4\x4e\x56\x4f\x8c\xa5\xd6\x92\x8f\x96\xcf\xcc\x9c\x16\xeb\x28\x20\x1a\x1f\xcf\xa6\x0f\x9f\xcc\x60\x4a\x17\xc6\xb2\xa2\x60\x98\x2d\xcd\x64\xcb\x85\xcd\x0e\xee\xed\x91\x50\xe8\x6f\x44\xaa\xf2\xc0\x5f\x87\xa4\x32\x73\xb6\x46\x53\x69\xa1\x11\x51\xcd\x36\x2f\xa7\x7a\x8f\x04\x02\x6b\xca\x6a\xf4\x0a\xc0\xfd\x68\x39\xd2\x50\x9c\x98\x0b\x63\xbe\x04\x13\x73\x39\x2b\xf5\x0b\xc2\xec\xb8\x00\xa7\x9d\x01\x24\x1e\x11\x04\x39\x90\x87\xba\xce\xf8\x77\xa7\xd3\x03\x9d\x8b\xf3\xc1\xab\xfe\xe0\xbc\x7f\x71\x0d\x06\x17\xc3\xf3\x8b\xe1\xd5\xe0\xec\xf2\xfa\xfa\xf5\xe0\xba\x7f\xfe\xaa\xd3\xbd\xab\xa7\xfd\x02\x12\xcf\xc6\x4f\x79\x17\xac\x9e\xa1\xa0\xc4\xae\xb6\x74\x3b\xb8\x6c\x62\xe8\x12\xee\x38\xde\xef\xf0\x90\x78\xb0\x58\x78\xaf\x34\x77\x33\x18\x0c\x6e\x9b\xd8\xbb\x82\xc8\xb6\x61\xb1\x98\x52\x6d\xe3\xfa\xf6\xf6\x75\x13\x1b\xd7\x30\x4a\x27\xc9\xc9\x36\xec\x3c\x55\x9a\x78\x75\x7e\x75\xd5\xc8\x6d\x37\x89\x89\x78\xb7\xa9\x61\xe2\xf2\xd5\xd5\x4d\x13\x13\xaf\xa0\x4b\x6d\xb2\x7e\xae\xcf\xe2\xf5\xe0\xf6\xfc\x22\x36\xa1\x58\x1a\x95\x0d\x9d\x3a\x6b\xe3\xa0\x66\x57\xb0\xe4\x35\x7a\x17\xc6\xd4\x18\x2f\x33\xdd\xc3\x33\x8e\xab\x1b\x41\x3d\x30\xe8\x45\xad\xc2\x1a\x74\xcb\x3d\x9e\x23\xc8\x56\xf6\x15\x5a\xa1\x9a\x4b\x61\x4d\x88\xca\xfa\x0a\x4d\x98\x2a\xd4\xca\xca\xf4\x2d\xa8\xad\x51\x0e\x3d\x7c\x9a\x9a\xd5\xe3\xda\x98\xb6\xea\x24\xdd\x64\x1a\x15\xf5\xb7\x16\x5c\x2e\x29\x43\xb5\xa3\x55\x7f\xe1\x3f\x7c\x2a\x9b\xde\x34\xdb\x98\x4c\xdd\x41\xa4\xc9\x74\x2a\xef\x95\xcd\x5d\x52\x4c\x17\x85\xbf\xa1\xff\x0d\x3f\x27\x26\xd2\x5a\x4f\xd3\x33\x5d\x41\x6b\x78\x15\x18\xdd\xdf\x67\xab\x47\x32\xc3\xe0\x8f\xf9\xe4\xd3\x68\xfe\x15\x7c\x34\xbe\x82\x53\x62\xeb\xee\x09\x85\xfd\x2e\xed\x76\xc3\xb4\x4f\x0e\xb3\x4d\x6d\xd8\x0a\xbb\xbc\x59\x19\xb9\x83\x80\x81\x07\x73\xf2\xf9\xc1\x00\xa7\xa9\x78\x2f\xd3\xf0\xef\xe5\xda\xf3\x0d\x5d\xd3\xce\xb4\x36\x26\xde\x68\x52\x15\xf7\x1c\xcd\xee\xd8\x2e\x33\xb9\x91\x2a\xa6\x15\xb0\x6a\x33\x57\x5e\x7d\xb4\x9b\x49\xbb\xec\x55\x66\xaa\xf8\x57\x42\xd3\x7a\x20\x0a\xe9\xd5\x73\x1c\xd5\x09\x95\x89\x79\x6f\xfc\x59\xaf\x68\x16\x8a\x16\xf5\x80\x99\x59\x5c\x10\x0f\x8b\x89\xf9\x3b\x58\x09\x86\x71\xb2\xc2\x14\x2b\x69\xb5\x3f\x2b\x1e\x0c\x27\x55\x91\x45\x92\xab\xe8\xe5\xf1\x44\xc2\xbd\x52\xc9\x4c\x06\x6e\x8b\xf8\xf6\x18\x64\x61\xe5\xb0\x16\xac\x62\xbd\x51\x86\x26\x3a\xda\x1d\x83\x27\xd2\x50\x0f\x51\xa1\x98\xd9\x2b\xd7\x2d\xa5\x8b\x0c\xe2\x20\x36\xc2\xf1\x03\x90\xc6\xfb\x72\x04\xb8\xa0\x2e\x0b\x3b\x79\x4c\x93\x43\x2c\xeb\xb1\xf5\x92\x7e\x9a\x0a\x6c\x5a\x54\x39\x12\x26\xb1\x6b\x03\x4c\xfb\x15\x3d\x69\x63\x50\x03\x9a\xfa\xd0\x6f\x0b\x77\xac\x2b\x0b\x5d\x91\x1c\x0e\x62\x22\x27\x20\x9e\xda\x23\x10\xeb\x52\xc4\xf4\x81\x14\xf2\xcd\xa7\x32\x09\xea\x07\x51\xb9\xa5\x07\x71\x88\xc1\xa7\x3a\x0e\x75\x7e\xb5\xa3\xf7\x6f\xa0\x82\xad\xfa\x78\x5f\xe7\xd5\x65\x21\x27\x0f\xba\x72\x18\xe5\x88\xb2\x7e\x6d\x0b\x56\x49\x67\xbd\xed\x4d\x06\x50\x44\x53\x22\x8e\x99\xd6\x54\xc7\xe1\x21\xa9\x0b\x3f\xc1\xec\x70\x57\x5c\xaf\x8f\x48\x07\x39\x2d\x05\xac\x36\x2e\x20\x4b\xde\x0e\xc8\xb1\x24\x2d\x67\x87\xd2\x6f\x3b\xff\x38\x44\x79\x5d\x3a\x5c\xa5\xde\xb9\x14\x9f\x8f\x08\x0b\xdf\xe7\xb7\x82\xb0\xa8\x4d\x87\x31\xd7\xef\xef\x95\xda\xfd\xbd\xd2\x9b\x0e\x05\x89\x16\x56\x4b\xac\x47\x87\xb8\x61\x4e\x0a\xb4\xb6\xe6\xdd\x06\x8e\xd5\xfa\x2d\x2a\xcc\x97\xaa\x92\xd4\x83\xf1\x03\xf4\x63\x1d\xaa\x35\x90\x3b\x1d\x27\x0f\xea\xf3\xe7\xd1\x48\xb0\x01\xf6\xe3\xe3\xa0\x4a\xb7\x1e\xb1\x64\x95\xe5\x15\xc6\x67\x9f\x40\x5f\x70\x9b\x3e\x38\x1e\x2a\xb5\x6a\x0f\x5b\x81\x90\x06\x68\x9c\xb9\x02\x95\xfb\x20\x6a\x09\xad\x4c\xb5\x36\x69\xd6\x8d\xe4\x8c\xf2\xb6\x83\x21\xa7\xfa\x90\x2c\xaf\x56\x57\x78\x6d\xdc\xbe\xa3\x4b\xef\x99\xb5\xf0\x0b\x1f\xd4\x27\x93\x79\x5e\xfe\x62\xfe\xcf\x3e\x61\xd7\x31\xc9\xc8\xd6\x27\x21\x7b\x2c\xff\x62\x6c\xa4\x2f\xf3\x75\xb4\x64\x1f\xd5\xe7\x97\x5c\x5d\x5f\x8c\xd3\xfe\xb5\x8d\x8e\x87\xb2\xc6\x90\x57\x9d\xf6\x12\x5e\x62\x69\x17\xb5\x4b\xaf\x1d\x4d\x17\x78\x5e\x69\xfe\xe0\xda\xd2\x0a\xaf\x32\x51\x87\x83\xe6\x34\x5d\x69\xac\xbd\xf4\x55\x56\x5c\x0b\xbb\x3e\x89\x65\xaf\x38\x2f\x11\x36\x65\xfd\x07\x5f\xb0\xc2\x43\xdc\x3e\x91\x27\x75\x1d\xb8\xa2\xf4\xdb\xc1\x5e\xae\xd0\xa9\x3d\x22\x9c\x9e\x26\x4f\xcc\xfb\x6f\xdf\x82\x0e\xa7\x8e\x9d\xe9\x1a\x74\x86\x43\x81\x9f\x44\xb7\xdb\x03\x6a\x41\x8b\xda\xf5\x04\xa3\x0a\xa8\x5a\x74\x45\x77\x9b\xad\xa8\x65\x3e\x27\x5a\x0d\x20\x27\x5a\x80\xd0\x05\x5f\x3e\x18\x73\x23\x0a\x32\xf0\x06\x5c\x5e\x6a\x5e\xc4\xcb\x5f\x48\xef\xcb\x27\x70\x9d\xa9\x90\xbf\xff\xd8\x4e\x91\xdc\xc6\xba\x92\xb8\x0a\x09\x78\x3f\x9b\x1b\x93\xdf\xcd\xa8\x20\x5e\x90\xe8\x82\xb9\xf1\xde\x98\x1b\xe6\xd8\x58\x94\x8e\xbb\x9a\xfe\x81\xd2\x13\xf1\x85\xee\x97\xfb\x21\x8b\x43\xe6\x85\xe4\xae\x2c\xf5\x41\x58\xc2\x6f\xee\x81\xf2\xab\xfe\x5f\xe8\x06\x05\x98\xbc\x2f\xca\x42\x2d\x07\x45\xf1\xa2\xff\xbf\xe0\x10\x75\x68\x94\x2a\x29\x75\xa3\x43\xf5\x2f\x18\x80\x45\x5d\xdf\xc1\x02\x87\x1c\xfe\x1b\x00\x00\xff\xff\x83\x5e\xe2\xb7\xaf\x41\x00\x00") + +func latestSqlBytes() ([]byte, error) { + return bindataRead( + _latestSql, + "latest.sql", + ) +} + +func latestSql() (*asset, error) { + bytes, err := latestSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "latest.sql", size: 16815, mode: os.FileMode(420), modTime: time.Unix(1508958161, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _migrations1_initial_schemaSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x5a\x5f\x6f\xdb\xc8\x11\x7f\xf7\xa7\x18\xdc\x8b\x6c\xd4\x6a\x2f\xb8\xe2\x70\x95\xe1\x03\x14\x99\x69\x84\xca\x54\x22\x51\x4d\x82\xc3\x61\xb1\x22\x47\xd4\xd6\xe4\x2e\xb3\xbb\x74\xa4\x2b\xfa\xdd\x0b\x52\x24\xc5\xff\xa4\x1c\xc9\xf7\x28\xee\xec\xcc\xfc\x66\x66\x7f\x33\x5c\x6a\x38\x84\xbf\xf8\xcc\x95\x54\x23\xac\x82\xab\xe1\xf0\x6a\x38\x84\x0f\x42\x69\x57\xe2\xf2\xe3\x0c\x1c\xaa\xe9\x9a\x2a\x04\x27\xf4\xe3\xe5\xab\xa5\x61\x81\xd2\x54\xa3\x8f\x5c\x13\xcd\x7c\x14\xa1\x86\x7b\xf8\xf1\x2e\x5e\xf2\x84\xfd\x54\x7d\x6a\x7b\x2c\x92\x46\x6e\x0b\x87\x71\x17\xee\x61\xb0\xb2\xde\xfd\x32\xb8\x4b\xd5\x71\x87\x4a\x87\xd8\x82\x6f\x84\xf4\x19\x77\x89\xd2\x92\x71\x57\xc1\x3d\x08\x9e\xe8\xd8\xa2\xfd\x44\x36\x21\xb7\x35\x13\x9c\xac\x85\xc3\x30\x5a\xdf\x50\x4f\x61\xc1\x8c\xcf\x38\xf1\x51\x29\xea\xc6\x02\xdf\xa8\xe4\x8c\xbb\x77\x57\x09\x3c\x93\xfa\x38\x82\xc0\x0b\x5c\xf5\xd5\xbb\x03\x6b\x1f\xe0\x08\x8c\xcf\x96\x61\x2e\xa7\x73\xf3\x0e\x96\xf6\x16\x7d\x3a\x82\xe1\x1d\xcc\xbf\x71\x94\x23\x18\xc6\xc8\x27\x0b\x63\x6c\x19\x47\x49\x98\xbe\x03\x73\x6e\x81\xf1\x79\xba\xb4\x96\xa9\x42\xf8\x34\xb5\xde\xc3\x72\xf2\xde\x78\x1c\x43\xe0\x12\x9b\x6a\xea\x89\xc8\x7a\xc1\xfc\x51\x4b\xc9\x91\xc9\xfc\xf1\xd1\x30\xad\x16\x37\x0e\x02\x30\x37\xab\x4a\x60\xba\x84\xc1\x87\xd9\xdf\x02\x37\x4a\x5e\x20\x85\x8d\x4e\x28\xa9\x07\x1e\xe5\x6e\x48\x5d\x1c\x94\xfd\xd8\x2a\x2d\x24\x9e\x2f\x0a\x07\x7d\xc5\x20\x84\x6b\x8f\xd9\xcd\x01\x28\xba\xf0\x32\xfc\x89\xd9\x08\x7e\x54\xb2\xa0\xf7\x01\xc2\x46\x48\x88\x9e\x47\x15\xa7\x50\x2b\x10\x1b\xb8\x7e\xc2\xfd\x2d\x3c\x53\x2f\xc4\x1b\x08\x28\x93\x2a\x0e\x49\x5c\x86\x48\xa5\xbd\x25\x01\xd5\x5b\xb8\x4f\xbc\xbe\x2d\xa6\x30\x12\x73\x70\x43\x43\x4f\x13\x4d\xd7\x1e\xaa\x80\xda\x18\x95\xf3\xa0\xb4\xfa\x8d\xe9\x2d\x11\xcc\xc9\x55\x68\x31\xee\x2c\xf2\x6c\x4f\xa8\x6d\x8b\x90\x6b\x95\xc2\xb7\xc6\x6f\x67\xc6\x11\x7c\x12\xbb\x2c\x02\x77\x60\x65\x66\x47\xf9\x7c\xc4\xfb\x2a\x5a\xe1\xfa\x0a\x00\x80\x39\xb0\x66\x2e\xe3\x3a\xce\x94\xb9\x9a\xcd\x6e\xe3\xe7\xd4\x71\x24\x2a\x05\xf6\x96\x4a\x6a\x6b\x94\xf0\x4c\xe5\x9e\x71\xf7\xfa\xe7\xbf\xdf\x5c\xdd\x54\x6a\x25\xd1\x8e\x9b\x0d\xda\xe7\x76\x39\x51\x9a\x78\x5c\x02\x42\x9a\x10\xa4\x72\x22\x40\x49\x63\x5e\x68\x92\xfc\x41\x48\x07\xe5\x0f\xc0\xb8\x46\x17\x65\x69\x35\xae\x97\xfa\x25\x07\x35\x65\x9e\x82\xff\x28\xc1\xd7\xcd\x41\xf1\xd0\x71\x51\x9e\x39\x28\x89\xd2\x24\x28\x0a\xbf\x86\xc8\xed\x26\x47\x0f\xc2\x64\x4b\xd5\xb6\x3e\xa3\x25\xf9\x40\xe2\x33\x13\xa1\x22\x9d\x1b\x93\x18\x49\xca\x15\x3d\xb0\x6f\x9c\x95\xcc\x8f\x07\xe3\xdd\x78\x35\xb3\xe0\xc7\x92\x85\x63\x56\xfa\xc9\xdb\x9e\x50\xe8\x10\xaa\x21\xea\x20\x4a\x53\x3f\x80\xe8\x20\x45\xbd\x24\x7a\x02\x7f\x08\x8e\xe5\x3d\x12\xa9\xee\xdc\x74\x90\x0d\x03\xa7\xb7\x6c\x56\x47\xc9\x4f\x3f\x10\x52\xa3\x24\xcf\x28\x15\x13\xbc\x82\xe5\x4d\xb9\xa2\x84\xa6\x1e\xb1\x05\xe3\xaa\xbe\x20\x37\x88\x24\x10\xc2\xab\x5f\x8d\x9a\x2e\xd9\x60\x53\xae\xe3\x65\x89\x0a\xe5\x73\x93\x88\x4f\x77\x44\xef\x88\x42\x4d\x14\xfb\xa3\x2a\xd5\x5c\xca\xc7\xb4\x05\x54\x6a\x66\xb3\x80\x9e\x9d\xa1\xea\x6d\x1c\xf9\xaa\x1e\x53\xff\xe3\xde\x4d\x20\xa7\xe2\x27\xcc\x21\x0a\xbf\xa6\x61\x58\x1a\x1f\x57\x86\x39\x69\x89\x44\x1e\x7c\x2a\xdd\xcf\x46\x8c\x60\x69\x8d\x17\xd6\xa1\x91\xbe\x89\x1f\x4c\xcd\xc9\xc2\x88\x5b\xdf\xdb\x2f\xc9\x23\x73\x0e\x8f\x53\xf3\xdf\xe3\xd9\xca\xc8\x7e\x8f\x3f\x1f\x7f\x4f\xc6\x93\xf7\x06\xbc\x39\x0b\x50\x98\x7f\x32\x8d\x07\x78\xfb\xa5\x03\xf1\x78\x66\x19\x8b\x13\x01\x67\xba\x3b\xc4\xff\xca\x9c\x4e\x2c\x97\x2a\xd4\xae\x66\x9a\xa7\xc7\xc6\x86\x1b\x04\x1e\xb3\x0f\xb8\xe2\x7e\xf4\x9d\xed\xe8\xf0\x48\x89\x50\xda\x98\x96\x7a\x03\xf7\xa7\x3c\x35\x18\x8c\x46\x15\x89\x1e\x87\x22\x0f\xef\x72\xb4\xd0\x64\x25\x8e\x7d\x03\x2d\xd4\xed\xad\x4f\xc0\xf7\x90\x42\x93\x67\xe7\xa5\x85\x0e\x2b\xaf\x45\x0c\x27\x82\xfd\x4e\x6a\xe8\xb0\x56\x25\x87\xa6\x0d\x2d\xf4\x90\xdb\x72\xb9\x92\x4d\x29\x22\xef\x5f\xef\x71\x2c\x99\xc2\x3a\x86\xbc\xbe\x0c\xd2\x4e\x06\xb5\xb2\x47\xd3\xcd\xf3\x0a\x6d\x6c\xcd\x4d\xb3\xde\x9f\x32\xad\xe9\x1d\x41\xfe\x8c\x9e\x08\x10\x34\xee\x2a\x54\xbd\x8b\x66\xa7\xd0\xd3\x0d\x8b\x3e\x46\xaf\x90\xb5\x4b\x51\x14\x9a\x96\x15\x73\x39\xd5\xa1\xc4\xba\x37\xaa\x7f\xfc\x7c\xf3\xdb\xef\x47\x16\xfe\xef\xff\xea\x78\xf8\xb7\xdf\xcb\x43\x1c\xfa\x82\xc4\xdd\xa0\xca\xd9\x99\x2e\x2e\x38\xb6\xb2\xfa\x51\x57\x55\x4d\x82\x8c\xf9\x48\xd6\x22\xe4\x8e\x8a\x32\xf7\x8b\xa4\xdc\xc5\x98\x0c\xf3\x87\x89\x39\xe9\xd1\x49\x6c\xf7\x3a\xef\x87\xe3\x32\x37\x67\x5d\xdd\x1d\x0e\xf2\x93\xf9\x6c\xf5\x68\x46\x29\x8d\x5e\xa8\x53\x94\x1c\x77\xfa\x99\x7a\xd7\x83\x5e\x03\xc5\x60\x34\x92\xe8\xda\x1e\x55\xaa\xc2\xe8\x67\x43\xd1\xd8\xac\x4e\xc2\xd1\xc1\x7e\x6d\x48\x3a\x42\x11\x3c\xe1\xfe\x78\xad\x62\x2e\xad\xc5\x78\x6a\xb6\xa0\xad\x12\xde\x89\x09\x8c\x4b\x69\xfc\xf0\x90\xb3\xd6\xc7\x47\xf8\xb0\x98\x3e\x8e\x17\x5f\xe0\x5f\xc6\x17\xb8\x66\xce\xe9\x3d\xf8\x82\x48\x9b\x6c\xb6\x61\x6d\xf5\xb3\x13\xed\x3a\x1b\x50\x52\x48\x53\xf3\xc1\xf8\xfc\x82\x46\x15\xef\xcb\xe9\x83\xb9\x59\xdf\xb6\x56\xcb\xa9\xf9\x4f\x58\x6b\x89\x08\xd7\x89\xf0\x6d\xa5\x2f\xd4\x79\x1a\xb5\xb7\xb3\xb9\x19\xf7\xca\x5e\x3e\x96\x3b\x6c\x9d\x6b\x87\x86\x7a\x36\xe7\x0e\xea\xfa\xb9\x57\xea\xe5\xb7\xd5\xb6\x5d\x5b\xe3\x04\xc9\x7a\x7f\x58\xff\x5e\xb7\x57\xe6\xf4\xe3\x2a\xf5\xbe\xa4\x3b\x8f\x21\xbd\x76\x2b\xb8\x5f\xf7\x9a\x7d\x9b\xde\xa0\x35\x79\x7e\xa4\xd5\x73\xfa\xcc\x9c\xde\xde\x1e\xa7\xfa\xdb\xda\x8b\x82\x0e\x04\x22\x20\xc1\x45\x40\x24\x8a\xf3\x38\x1a\xfa\xdf\x8b\x60\x55\xd1\x64\x37\x7a\xeb\xfd\xd9\x01\x15\x75\xe7\x31\xa5\x77\x95\x05\x10\xf5\xee\xe5\x4f\xef\x45\x7c\xac\x18\xe8\x77\x6c\x6b\xbc\x65\xdc\xc1\x1d\x29\xdf\xab\x13\xc1\x49\x72\x79\x7e\x56\xd7\x3b\xad\xe5\x71\x64\x97\xfc\x45\xf6\x3e\x08\x9e\x00\xe4\xcc\xe1\x6f\x33\xd4\xed\x7e\x67\x0a\x12\x0a\x88\xf4\x45\x73\xf1\x79\xe8\xbd\xd5\x44\x27\x01\x45\x42\x1d\x5e\x27\x87\x23\x52\x99\x5d\x72\x5f\xc2\xf5\x3a\x3b\x9d\x87\x34\x93\xec\x0f\xe2\xa2\x35\x53\xb0\xf3\x12\x8a\x69\x56\x57\xba\xc5\xbf\x70\x0a\x2a\x1f\x0d\x3a\xb1\x94\x36\xf4\x47\x96\xfb\x86\xf3\x3a\x99\xc9\x7f\x34\xea\x82\x95\x93\xed\x8f\xa8\xee\xf3\xd4\xeb\x40\xab\xfd\x30\xd6\x85\xb1\x6e\x53\x7f\xb0\xe9\xa4\xf8\x3a\x00\xb3\x8b\x9e\x2e\x50\x8d\x93\x7f\x51\xf5\xf1\x8e\xfc\xe2\xdc\x50\x36\x55\x3b\x55\x9d\xca\x10\x45\xa5\xc5\x7b\xe4\x4b\x50\x44\x9b\xbd\x3e\x80\x8a\x3b\x4e\x03\x77\xa1\x9e\x59\xb5\xd2\x0b\x48\x5d\xe7\x8c\x87\x66\xbd\xbb\xd0\x34\x9e\x28\x6e\x18\x08\x5f\x38\x8f\x57\x13\xd2\x9c\x8f\xfc\xf8\x79\xf1\xe3\x52\x35\xf6\xe2\x49\x58\x4b\xea\x60\x36\x1b\xa5\xef\x92\x64\x2d\xc4\xd3\x79\x0a\xaa\xc5\x40\xe7\x08\x76\x7d\x9d\x7e\x17\x1b\xfe\xfa\x2b\x0c\x94\xf0\x1c\x42\x95\x42\x1d\x97\xe2\x60\x34\xd2\xb8\xd3\x37\x37\xb7\xd0\x2c\x68\x0b\xa7\x9f\x20\x53\x2a\x44\xd9\x2c\xba\x16\xa1\xbb\xd5\xbd\xcc\x17\x44\xdb\x1d\x28\x88\x96\x5c\xb8\x81\x4f\xef\x8d\x85\x71\x38\x4f\x70\x0f\x3f\xfd\x94\xcb\x5e\xd3\xbf\xf9\xc0\x16\x7e\xe0\xa1\xc6\x38\x13\xf9\x3f\x02\x3e\x88\x6f\xfc\xca\x91\x22\x80\xf8\x3f\x4e\xf5\xe5\x62\x53\x65\x53\x07\xef\x3a\x04\x8b\x07\xaa\x6d\x53\x8e\x23\x7a\x89\xf5\xd7\x9c\xb6\xb6\x36\x99\xb4\xaa\xda\x64\xb2\x37\x96\x4c\xe8\xff\x01\x00\x00\xff\xff\x5d\xb2\x1f\x7d\x3f\x29\x00\x00") + +func migrations1_initial_schemaSqlBytes() ([]byte, error) { + return bindataRead( + _migrations1_initial_schemaSql, + "migrations/1_initial_schema.sql", + ) +} + +func migrations1_initial_schemaSql() (*asset, error) { + bytes, err := migrations1_initial_schemaSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "migrations/1_initial_schema.sql", size: 10559, mode: os.FileMode(420), modTime: time.Unix(1508537629, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _migrations2_index_participants_by_toidSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8c\x8f\xb1\xca\xc2\x50\x0c\x46\xf7\x3c\x45\xc6\xff\x47\xfa\x04\x9d\xc4\x16\xe9\xd2\x4a\xb5\xe0\x76\x49\xdb\x8b\xcd\xe0\xcd\x25\x37\x20\x7d\x7b\x41\x07\x5b\xbb\xb8\x86\x8f\x73\x72\xb2\x0c\x77\x77\xbe\x29\x99\xc7\x2e\x02\x1c\xda\x72\x7f\x29\xb1\xaa\x8b\xf2\x8a\x93\x44\xd7\xcf\x6e\x12\x1e\xb1\xa9\x71\xe2\x64\xa2\xb3\x93\xe8\x95\x8c\x25\xb8\x48\x6a\x3c\x70\xa4\x60\x09\xbb\x73\x55\x1f\xb1\x37\xf5\x1e\xff\xb6\x5b\x1e\xff\xf3\x2f\xbc\xbd\xf1\xb6\xc6\x9b\x52\x48\x34\xfc\x28\x58\xae\x5f\x0a\x58\x26\x15\xf2\x08\x00\x45\xdb\x9c\xb6\x49\xf9\xea\xfe\xf9\x25\x87\x67\x00\x00\x00\xff\xff\x33\xec\x54\x7a\x15\x01\x00\x00") + +func migrations2_index_participants_by_toidSqlBytes() ([]byte, error) { + return bindataRead( + _migrations2_index_participants_by_toidSql, + "migrations/2_index_participants_by_toid.sql", + ) +} + +func migrations2_index_participants_by_toidSql() (*asset, error) { + bytes, err := migrations2_index_participants_by_toidSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "migrations/2_index_participants_by_toid.sql", size: 277, mode: os.FileMode(420), modTime: time.Unix(1508537629, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _migrations3_use_sequence_in_history_accountsSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x91\x4d\x6b\xb3\x40\x14\x85\xf7\xf3\x2b\xce\x2e\xca\xfb\x66\x91\x6d\x5c\x4d\xc6\x1b\x22\x8c\x63\x3b\x5e\xdb\x64\x25\xa2\x43\x3a\x90\x6a\xeb\xd8\xaf\x7f\x5f\x48\xd3\x0f\x08\x6d\xa1\xcb\x73\x78\xe0\x39\xdc\x3b\x9f\xe3\xdf\xad\xdf\x8f\xcd\xe4\x50\xdd\x09\x65\x49\x32\xa1\xa4\xcb\x8a\x8c\x22\xdc\xf8\x30\x0d\xe3\x4b\xdd\xb4\xed\xf0\xd0\x4f\xa1\xf6\x5d\x1d\xdc\xbd\x00\x80\x92\xa5\x65\x5c\x67\xbc\xc1\xe2\x58\x64\x46\x59\xca\xc9\x30\x56\xbb\x53\x65\x0a\xe4\x99\xb9\x92\xba\xa2\x8f\x2c\xb7\x9f\x59\x49\xb5\x21\x2c\x12\x51\x92\x26\xc5\x08\x6e\x7a\x6c\x0e\xd1\xec\x1b\xef\xec\x3f\xa2\x13\x99\xcb\x6d\xe4\xbb\x18\x6b\x5b\xe4\x67\x33\xe3\x38\x11\x52\x33\x59\xb0\x5c\x69\x42\x61\xf4\xee\x0c\xc2\x1b\xa1\x0a\x5d\xe5\x06\xbe\x43\x49\x8c\x94\xd6\xb2\xd2\x8c\xde\x3d\xff\xbc\x64\xb9\x1c\xdd\xbe\x3d\x34\x21\xc4\x89\x10\x5f\xcf\x98\x0e\x4f\xfd\x1f\xec\xa9\x2d\x2e\xde\xf5\x89\x38\xa6\xdf\xde\x90\x88\xd7\x00\x00\x00\xff\xff\x55\xe2\xdd\x2c\xbf\x01\x00\x00") + +func migrations3_use_sequence_in_history_accountsSqlBytes() ([]byte, error) { + return bindataRead( + _migrations3_use_sequence_in_history_accountsSql, + "migrations/3_use_sequence_in_history_accounts.sql", + ) +} + +func migrations3_use_sequence_in_history_accountsSql() (*asset, error) { + bytes, err := migrations3_use_sequence_in_history_accountsSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "migrations/3_use_sequence_in_history_accounts.sql", size: 447, mode: os.FileMode(420), modTime: time.Unix(1508537629, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _migrations4_add_protocol_versionSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x84\xcd\xb1\x0a\xc2\x30\x10\x06\xe0\x3d\x4f\xf1\xef\x52\x70\xef\x14\x4d\x9d\xce\x44\x4a\x32\x38\x15\xd1\xa3\x06\x6a\xae\x5c\x82\xe2\xdb\xbb\xba\x88\x4f\xf0\x75\x1d\x36\x8f\x3c\xeb\xa5\x31\xd2\x6a\x2c\xc5\x61\x44\xb4\x3b\x1a\x10\x3c\x9d\x71\xcf\xb5\x89\xbe\xa7\x85\x6f\x33\x6b\x85\x01\xac\x73\xd8\x07\x4a\x47\x8f\x55\xa5\xc9\x55\x96\xe9\xc9\x5a\xb3\x14\xe4\xd2\x78\x66\x85\x1b\x0e\x36\x51\xc4\x16\x3e\x44\xf8\x44\xd4\x1b\xf3\x6d\x39\x79\x95\xff\x9a\x1b\xc3\xe9\x97\xd5\x9b\x4f\x00\x00\x00\xff\xff\x83\xbb\x30\x2e\xbc\x00\x00\x00") + +func migrations4_add_protocol_versionSqlBytes() ([]byte, error) { + return bindataRead( + _migrations4_add_protocol_versionSql, + "migrations/4_add_protocol_version.sql", + ) +} + +func migrations4_add_protocol_versionSql() (*asset, error) { + bytes, err := migrations4_add_protocol_versionSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "migrations/4_add_protocol_version.sql", size: 188, mode: os.FileMode(420), modTime: time.Unix(1508537629, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _migrations5_create_trades_tableSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x94\x51\x6f\xaa\x40\x10\x85\xdf\xf9\x15\x13\x9f\x30\x17\x93\x7b\x6f\x5a\x5f\x4c\x9a\x58\x25\xad\xa9\xc1\xd6\x4a\xd2\x37\xb2\xb0\x23\x6c\xa2\x2c\x99\x1d\xda\xf0\xef\x1b\x68\x69\x10\x57\xad\xaf\x9c\x39\x67\x38\xbb\x5f\x76\x34\x82\x3f\x7b\x95\x92\x60\x84\xb0\x70\x66\x6b\x7f\xba\xf1\x61\x33\xbd\x5f\xfa\x90\x29\xc3\x9a\xaa\x88\x49\x48\x34\xe0\x3a\x00\xf0\xf3\x51\x17\x48\x82\x95\xce\x23\x25\x21\x56\xa9\xca\x19\x82\xd5\x06\x82\x70\xb9\xf4\x9a\xc9\x81\x26\x89\x34\x00\x95\x33\xa6\x48\x1d\xb5\x91\xf5\x76\x8b\x64\x35\x37\xb2\xc1\xdd\xee\x84\x5e\xcb\x71\x59\x9d\x75\xeb\x9d\x8c\x84\x31\xc8\x11\x57\x05\x42\x92\x09\x12\x09\x23\xc1\xbb\xa0\x4a\xe5\xa9\x3b\xbe\x19\xf6\x22\x3b\x1e\x65\x4c\x89\x64\x71\xdd\x8e\xcf\xb8\x12\x2d\x6d\x9b\xfe\xfd\xb7\x7b\xf6\xba\xcc\xb9\xff\xff\x30\x7b\xf4\x67\x4f\xe0\x76\x47\xee\xe0\xef\xf0\xbb\x57\xac\xcb\x34\xe3\x6b\x9b\x1d\xb8\xae\xe8\x76\xe0\xfb\x75\xbb\xd6\x75\xb6\xdf\xe1\x50\xdd\xd0\x19\x4e\x9c\x96\xbf\x30\x58\xbc\x84\x3e\x2c\x82\xb9\xff\x06\x19\x93\x8c\x0a\x25\x61\x15\xf4\x91\x0c\x5f\x17\xc1\x03\xc4\x4c\x88\xe0\xda\xc8\xf4\x5a\x0a\x3b\xe1\x9d\xd4\xb8\x8a\x1a\x0c\x2f\x45\xb7\xac\xda\x52\xea\x90\xfa\xb6\x2e\x65\xf4\x90\xf4\xfa\xe4\x78\xc7\x00\x9e\x5a\xf7\x75\x78\x97\x16\x1e\xb1\xe2\x1d\x5f\xa8\x67\x63\xa3\x5e\xdb\x7d\x17\xe6\xfa\x23\x77\xe6\xeb\xd5\xb3\xfd\x5d\x48\x84\x49\x84\xc4\x89\xf3\x19\x00\x00\xff\xff\x79\x87\x24\x6b\x4c\x04\x00\x00") + +func migrations5_create_trades_tableSqlBytes() ([]byte, error) { + return bindataRead( + _migrations5_create_trades_tableSql, + "migrations/5_create_trades_table.sql", + ) +} + +func migrations5_create_trades_tableSql() (*asset, error) { + bytes, err := migrations5_create_trades_tableSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "migrations/5_create_trades_table.sql", size: 1100, mode: os.FileMode(420), modTime: time.Unix(1508537629, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _migrations6_create_assets_tableSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x90\x3d\x4f\xc3\x30\x18\x84\x77\xff\x8a\x1b\x1d\x91\x0e\x20\xe8\x92\xc9\x34\x16\x58\x18\xa7\xb8\x31\xa2\x53\xe5\x26\x16\x78\x80\x54\xb6\x11\xca\xbf\x47\xaa\x28\xf9\x50\xe6\x7b\xf4\xbc\xef\xdd\x6a\x85\xab\x4f\xff\x1e\x6c\x72\x30\x27\xb2\xd1\x9c\xd5\x1c\x35\xbb\x97\x1c\x1f\x3e\xa6\x2e\xf4\x07\x1b\xa3\x4b\x11\x94\x00\x80\x6f\xb1\xe3\x5a\x30\x89\xad\x16\xcf\x4c\xef\xf1\xc4\xf7\xc8\xcf\xd9\x19\x3c\xa4\xfe\xe4\xf0\xca\xf4\xe6\x91\x69\xba\xbe\xcd\xa0\xaa\x1a\xca\x48\x39\x86\x9a\xae\x1d\xa0\xeb\x9b\x65\xc8\xc7\xf8\xed\xc2\x3f\x76\xb7\x9e\x63\x46\x89\x17\xc3\xe9\xa0\xcc\x47\x3f\xe4\x13\x4b\x46\xb2\x82\x5c\xfa\x09\x55\xf2\xb7\xbf\xf8\xd8\x5f\xee\x54\x6a\x5e\xd9\xec\x84\x7a\xc0\x31\x05\xe7\x40\x27\xb6\x82\x90\xf1\x74\x65\xf7\xf3\x45\x4a\x5d\x6d\x97\xa7\x6b\x6c\x6c\x6c\xeb\x8a\xdf\x00\x00\x00\xff\xff\xfb\x53\x3e\x81\x6e\x01\x00\x00") + +func migrations6_create_assets_tableSqlBytes() ([]byte, error) { + return bindataRead( + _migrations6_create_assets_tableSql, + "migrations/6_create_assets_table.sql", + ) +} + +func migrations6_create_assets_tableSql() (*asset, error) { + bytes, err := migrations6_create_assets_tableSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "migrations/6_create_assets_table.sql", size: 366, mode: os.FileMode(420), modTime: time.Unix(1508537629, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _migrations7_modify_trades_tableSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x54\x4d\x8f\xda\x30\x14\xbc\xe7\x57\x3c\xed\x29\x51\xc3\xaa\xad\xda\xbd\x6c\x55\x09\x58\x97\x46\x65\xc3\x36\x04\xa9\xb7\xc8\x89\xdf\x06\xab\xc1\x8e\x6c\xa7\x88\x7f\x5f\x05\x08\xcd\x27\xb0\xbb\x87\x5e\x93\x99\x79\x6f\xec\xf1\x8c\x46\xf0\x6e\xc3\x53\x45\x0d\xc2\x2a\xb7\x46\x23\x60\x4a\xe6\x60\xd6\x08\x32\x63\x60\x14\x65\xa8\xc1\xd0\x38\xc3\x5b\xc8\x0b\x03\x14\x04\x6e\x41\x0a\x04\x2e\x20\xcf\x68\x82\xd6\x43\xb0\x78\x82\x70\x3c\x99\x13\x58\x73\x6d\xa4\xda\x45\x07\xde\xbd\x35\x0d\xc8\x38\x24\xbd\x3f\xc1\xb6\x00\xe0\xf4\x51\xe6\xa8\xa8\xe1\x52\x44\x9c\xc1\xc4\x9b\x79\x7e\x08\xfe\x22\x04\x7f\x35\x9f\xbb\x7b\xe4\x8d\x54\x0c\xd5\x0d\x78\x7e\x48\x66\x24\x68\xfd\xcd\x90\xa5\xa8\xa2\x24\x93\x1a\x59\x44\x0d\x84\xde\x23\x59\x86\xe3\xc7\xa7\x16\x50\x3e\x3f\xa3\x1a\x1c\x12\x53\x8d\x11\x4d\x12\x59\x08\xd3\x03\x82\x80\x7c\x23\x01\xf1\xa7\x64\x79\xda\xfc\x88\xd6\x36\x67\x4e\x5d\x44\x6b\xbc\x5a\xa2\xc4\x76\x04\x36\xa5\x6c\x87\x3e\xfd\x4e\xa6\x3f\xc0\xae\x43\xbe\xc2\xfb\x23\x71\xbf\x09\xaa\x37\x3b\x38\xe9\xbc\xc1\xc4\x49\xe3\xac\x8f\x16\xea\x9f\x95\xbd\x41\xae\x23\x8d\x59\x86\x0a\x26\x8b\xc5\x9c\x8c\xfd\xc3\xbf\x3d\xd7\x6e\x1e\xf3\x97\xce\xd2\x8e\xe5\xdc\x5b\x55\x04\x57\xbe\xf7\x73\x45\xc0\xf3\x1f\xc8\x2f\x58\x1b\xc5\xa2\x9c\x33\x58\xf8\xed\x54\xae\x96\x9e\x3f\x83\xd8\x28\x44\xb0\xfb\xc2\xe9\x56\x41\x74\x4e\xf1\xae\x8b\x52\xae\x22\xc3\x37\x18\x65\x52\xfe\x2e\xf2\xc1\x09\x93\x30\x20\xa4\x69\xc1\xed\x38\x70\x3b\xb1\xee\x1d\x5a\xd1\xae\x1a\xd9\x39\xa5\x3e\xc5\xeb\x1d\x5c\xb5\x60\xbc\x8b\xf6\xcf\xee\xd2\x79\x57\x6f\xb3\xbc\x37\xab\x5e\x4d\x0f\x72\x2b\x1a\xe5\x24\x70\x8b\xaa\xea\x25\x85\x5c\x68\x53\xe2\xaa\xde\x92\x02\x6f\x87\x7b\x09\x12\xaa\x13\xca\xf0\xd5\xfd\x14\xf3\x94\x0b\x33\xd0\x4f\x5c\x18\x4c\x51\x0d\xd5\x4e\x2f\xf7\x10\xf2\xc1\xdf\x71\xb1\x3b\x47\x96\x19\x3b\x5e\xa7\xd9\xe5\x08\xc9\x9a\x2a\x9a\x18\x54\xf0\x87\xaa\x1d\x17\xa9\x7d\xf7\xc9\x19\xe6\x70\xad\x0b\x54\x3d\xac\xcf\x77\x67\x58\x89\x64\x7d\x93\x3e\x7c\xec\xe7\x1c\x5e\x77\x6b\xfd\xaa\x03\xea\x90\x5a\x01\xc8\x22\x5d\x9b\x97\x1a\x6b\xb0\x5e\x60\xad\xc1\xbb\xda\x5c\xc5\x3a\x6b\xaf\x09\x2a\x0d\xfe\x87\x62\x7a\xc5\x13\x6c\x8b\x94\x1a\xe5\x55\x5d\x92\x68\xe5\xd1\x6d\xc7\xc6\xed\xa6\x6f\x60\xda\xe1\xe4\x2e\xcd\xeb\x04\xc5\xed\xde\xa6\xdb\x17\x0c\xe7\xfe\x6f\x00\x00\x00\xff\xff\x2a\xff\xe8\x4a\xff\x08\x00\x00") + +func migrations7_modify_trades_tableSqlBytes() ([]byte, error) { + return bindataRead( + _migrations7_modify_trades_tableSql, + "migrations/7_modify_trades_table.sql", + ) +} + +func migrations7_modify_trades_tableSql() (*asset, error) { + bytes, err := migrations7_modify_trades_tableSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "migrations/7_modify_trades_table.sql", size: 2303, mode: os.FileMode(420), modTime: time.Unix(1508958134, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +// Asset loads and returns the asset for the given name. +// It returns an error if the asset could not be found or +// could not be loaded. +func Asset(name string) ([]byte, error) { + cannonicalName := strings.Replace(name, "\\", "/", -1) + if f, ok := _bindata[cannonicalName]; ok { + a, err := f() + if err != nil { + return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err) + } + return a.bytes, nil + } + return nil, fmt.Errorf("Asset %s not found", name) +} + +// MustAsset is like Asset but panics when Asset would return an error. +// It simplifies safe initialization of global variables. +func MustAsset(name string) []byte { + a, err := Asset(name) + if err != nil { + panic("asset: Asset(" + name + "): " + err.Error()) + } + + return a +} + +// AssetInfo loads and returns the asset info for the given name. +// It returns an error if the asset could not be found or +// could not be loaded. +func AssetInfo(name string) (os.FileInfo, error) { + cannonicalName := strings.Replace(name, "\\", "/", -1) + if f, ok := _bindata[cannonicalName]; ok { + a, err := f() + if err != nil { + return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err) + } + return a.info, nil + } + return nil, fmt.Errorf("AssetInfo %s not found", name) +} + +// AssetNames returns the names of the assets. +func AssetNames() []string { + names := make([]string, 0, len(_bindata)) + for name := range _bindata { + names = append(names, name) + } + return names +} + +// _bindata is a table, holding each asset generator, mapped to its name. +var _bindata = map[string]func() (*asset, error){ + "latest.sql": latestSql, + "migrations/1_initial_schema.sql": migrations1_initial_schemaSql, + "migrations/2_index_participants_by_toid.sql": migrations2_index_participants_by_toidSql, + "migrations/3_use_sequence_in_history_accounts.sql": migrations3_use_sequence_in_history_accountsSql, + "migrations/4_add_protocol_version.sql": migrations4_add_protocol_versionSql, + "migrations/5_create_trades_table.sql": migrations5_create_trades_tableSql, + "migrations/6_create_assets_table.sql": migrations6_create_assets_tableSql, + "migrations/7_modify_trades_table.sql": migrations7_modify_trades_tableSql, +} + +// AssetDir returns the file names below a certain +// directory embedded in the file by go-bindata. +// For example if you run go-bindata on data/... and data contains the +// following hierarchy: +// data/ +// foo.txt +// img/ +// a.png +// b.png +// then AssetDir("data") would return []string{"foo.txt", "img"} +// AssetDir("data/img") would return []string{"a.png", "b.png"} +// AssetDir("foo.txt") and AssetDir("notexist") would return an error +// AssetDir("") will return []string{"data"}. +func AssetDir(name string) ([]string, error) { + node := _bintree + if len(name) != 0 { + cannonicalName := strings.Replace(name, "\\", "/", -1) + pathList := strings.Split(cannonicalName, "/") + for _, p := range pathList { + node = node.Children[p] + if node == nil { + return nil, fmt.Errorf("Asset %s not found", name) + } + } + } + if node.Func != nil { + return nil, fmt.Errorf("Asset %s not found", name) + } + rv := make([]string, 0, len(node.Children)) + for childName := range node.Children { + rv = append(rv, childName) + } + return rv, nil +} + +type bintree struct { + Func func() (*asset, error) + Children map[string]*bintree +} +var _bintree = &bintree{nil, map[string]*bintree{ + "latest.sql": &bintree{latestSql, map[string]*bintree{}}, + "migrations": &bintree{nil, map[string]*bintree{ + "1_initial_schema.sql": &bintree{migrations1_initial_schemaSql, map[string]*bintree{}}, + "2_index_participants_by_toid.sql": &bintree{migrations2_index_participants_by_toidSql, map[string]*bintree{}}, + "3_use_sequence_in_history_accounts.sql": &bintree{migrations3_use_sequence_in_history_accountsSql, map[string]*bintree{}}, + "4_add_protocol_version.sql": &bintree{migrations4_add_protocol_versionSql, map[string]*bintree{}}, + "5_create_trades_table.sql": &bintree{migrations5_create_trades_tableSql, map[string]*bintree{}}, + "6_create_assets_table.sql": &bintree{migrations6_create_assets_tableSql, map[string]*bintree{}}, + "7_modify_trades_table.sql": &bintree{migrations7_modify_trades_tableSql, map[string]*bintree{}}, + }}, +}} + +// RestoreAsset restores an asset under the given directory +func RestoreAsset(dir, name string) error { + data, err := Asset(name) + if err != nil { + return err + } + info, err := AssetInfo(name) + if err != nil { + return err + } + err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755)) + if err != nil { + return err + } + err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) + if err != nil { + return err + } + err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) + if err != nil { + return err + } + return nil +} + +// RestoreAssets restores an asset under the given directory recursively +func RestoreAssets(dir, name string) error { + children, err := AssetDir(name) + // File + if err != nil { + return RestoreAsset(dir, name) + } + // Dir + for _, child := range children { + err = RestoreAssets(dir, filepath.Join(name, child)) + if err != nil { + return err + } + } + return nil +} + +func _filePath(dir, name string) string { + cannonicalName := strings.Replace(name, "\\", "/", -1) + return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) +} + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/latest.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/latest.sql new file mode 100644 index 0000000..77372f9 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/latest.sql @@ -0,0 +1,651 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: gorp_migrations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE gorp_migrations ( + id text NOT NULL, + applied_at timestamp with time zone +); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_accounts_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_accounts ( + id bigint DEFAULT nextval('history_accounts_id_seq'::regclass) NOT NULL, + address character varying(64) +); + + +-- +-- Name: history_assets; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_assets ( + id integer NOT NULL, + asset_type character varying(64) NOT NULL, + asset_code character varying(12) NOT NULL, + asset_issuer character varying(56) NOT NULL +); + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_assets_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_assets_id_seq OWNED BY history_assets.id; + + +-- +-- Name: history_effects; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_effects ( + history_account_id bigint NOT NULL, + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + type integer NOT NULL, + details jsonb +); + + +-- +-- Name: history_ledgers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_ledgers ( + sequence integer NOT NULL, + ledger_hash character varying(64) NOT NULL, + previous_ledger_hash character varying(64), + transaction_count integer DEFAULT 0 NOT NULL, + operation_count integer DEFAULT 0 NOT NULL, + closed_at timestamp without time zone NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + importer_version integer DEFAULT 1 NOT NULL, + total_coins bigint NOT NULL, + fee_pool bigint NOT NULL, + base_fee integer NOT NULL, + base_reserve integer NOT NULL, + max_tx_set_size integer NOT NULL, + protocol_version integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: history_operation_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operation_participants ( + id integer NOT NULL, + history_operation_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_operation_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_operation_participants_id_seq OWNED BY history_operation_participants.id; + + +-- +-- Name: history_operations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operations ( + id bigint NOT NULL, + transaction_id bigint NOT NULL, + application_order integer NOT NULL, + type integer NOT NULL, + details jsonb, + source_account character varying(64) DEFAULT ''::character varying NOT NULL +); + + +-- +-- Name: history_trades; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_trades ( + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + ledger_closed_at timestamp without time zone NOT NULL, + offer_id bigint NOT NULL, + base_account_id bigint NOT NULL, + base_asset_id bigint NOT NULL, + base_amount bigint NOT NULL, + counter_account_id bigint NOT NULL, + counter_asset_id bigint NOT NULL, + counter_amount bigint NOT NULL, + base_is_seller boolean, + CONSTRAINT history_trades_base_amount_check CHECK ((base_amount > 0)), + CONSTRAINT history_trades_check CHECK ((base_asset_id < counter_asset_id)), + CONSTRAINT history_trades_counter_amount_check CHECK ((counter_amount > 0)) +); + + +-- +-- Name: history_transaction_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transaction_participants ( + id integer NOT NULL, + history_transaction_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_transaction_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_transaction_participants_id_seq OWNED BY history_transaction_participants.id; + + +-- +-- Name: history_transactions; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transactions ( + transaction_hash character varying(64) NOT NULL, + ledger_sequence integer NOT NULL, + application_order integer NOT NULL, + account character varying(64) NOT NULL, + account_sequence bigint NOT NULL, + fee_paid integer NOT NULL, + operation_count integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + tx_envelope text NOT NULL, + tx_result text NOT NULL, + tx_meta text NOT NULL, + tx_fee_meta text NOT NULL, + signatures character varying(96)[] DEFAULT '{}'::character varying[] NOT NULL, + memo_type character varying DEFAULT 'none'::character varying NOT NULL, + memo character varying, + time_bounds int8range +); + + +-- +-- Name: history_assets id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets ALTER COLUMN id SET DEFAULT nextval('history_assets_id_seq'::regclass); + + +-- +-- Name: history_operation_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants ALTER COLUMN id SET DEFAULT nextval('history_operation_participants_id_seq'::regclass); + + +-- +-- Name: history_transaction_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants ALTER COLUMN id SET DEFAULT nextval('history_transaction_participants_id_seq'::regclass); + + +-- +-- Data for Name: gorp_migrations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO gorp_migrations VALUES ('1_initial_schema.sql', '2017-10-25 12:02:41.355815-07'); +INSERT INTO gorp_migrations VALUES ('2_index_participants_by_toid.sql', '2017-10-25 12:02:41.35913-07'); +INSERT INTO gorp_migrations VALUES ('3_use_sequence_in_history_accounts.sql', '2017-10-25 12:02:41.361119-07'); +INSERT INTO gorp_migrations VALUES ('4_add_protocol_version.sql', '2017-10-25 12:02:41.365998-07'); +INSERT INTO gorp_migrations VALUES ('5_create_trades_table.sql', '2017-10-25 12:02:41.370443-07'); +INSERT INTO gorp_migrations VALUES ('6_create_assets_table.sql', '2017-10-25 12:02:41.373746-07'); +INSERT INTO gorp_migrations VALUES ('7_modify_trades_table.sql', '2017-10-25 12:02:41.381902-07'); + + +-- +-- Data for Name: history_accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_accounts_id_seq', 1, false); + + +-- +-- Data for Name: history_assets; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_assets_id_seq', 1, false); + + +-- +-- Data for Name: history_effects; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: history_ledgers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: history_operation_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_operation_participants_id_seq', 1, false); + + +-- +-- Data for Name: history_operations; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: history_trades; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: history_transaction_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_transaction_participants_id_seq', 1, false); + + +-- +-- Data for Name: history_transactions; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Name: gorp_migrations gorp_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY gorp_migrations + ADD CONSTRAINT gorp_migrations_pkey PRIMARY KEY (id); + + +-- +-- Name: history_assets history_assets_asset_code_asset_type_asset_issuer_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_asset_code_asset_type_asset_issuer_key UNIQUE (asset_code, asset_type, asset_issuer); + + +-- +-- Name: history_assets history_assets_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_pkey PRIMARY KEY (id); + + +-- +-- Name: history_operation_participants history_operation_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants + ADD CONSTRAINT history_operation_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: history_transaction_participants history_transaction_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants + ADD CONSTRAINT history_transaction_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: asset_by_issuer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX asset_by_issuer ON history_assets USING btree (asset_issuer); + + +-- +-- Name: by_account; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_account ON history_transactions USING btree (account, account_sequence); + + +-- +-- Name: by_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_hash ON history_transactions USING btree (transaction_hash); + + +-- +-- Name: by_ledger; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_ledger ON history_transactions USING btree (ledger_sequence, application_order); + + +-- +-- Name: hist_e_by_order; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_by_order ON history_effects USING btree (history_operation_id, "order"); + + +-- +-- Name: hist_e_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_id ON history_effects USING btree (history_account_id, history_operation_id, "order"); + + +-- +-- Name: hist_op_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_op_p_id ON history_operation_participants USING btree (history_account_id, history_operation_id); + + +-- +-- Name: hist_tx_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_tx_p_id ON history_transaction_participants USING btree (history_account_id, history_transaction_id); + + +-- +-- Name: hop_by_hoid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX hop_by_hoid ON history_operation_participants USING btree (history_operation_id); + + +-- +-- Name: hs_ledger_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_ledger_by_id ON history_ledgers USING btree (id); + + +-- +-- Name: hs_transaction_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_transaction_by_id ON history_transactions USING btree (id); + + +-- +-- Name: htp_by_htid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htp_by_htid ON history_transaction_participants USING btree (history_transaction_id); + + +-- +-- Name: htrd_by_offer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_by_offer ON history_trades USING btree (offer_id); + + +-- +-- Name: htrd_counter_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_counter_lookup ON history_trades USING btree (counter_asset_id); + + +-- +-- Name: htrd_pair_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_pair_time_lookup ON history_trades USING btree (base_asset_id, counter_asset_id, ledger_closed_at); + + +-- +-- Name: htrd_pid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX htrd_pid ON history_trades USING btree (history_operation_id, "order"); + + +-- +-- Name: htrd_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_time_lookup ON history_trades USING btree (ledger_closed_at); + + +-- +-- Name: index_history_accounts_on_address; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_address ON history_accounts USING btree (address); + + +-- +-- Name: index_history_accounts_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_id ON history_accounts USING btree (id); + + +-- +-- Name: index_history_effects_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_effects_on_type ON history_effects USING btree (type); + + +-- +-- Name: index_history_ledgers_on_closed_at; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_closed_at ON history_ledgers USING btree (closed_at); + + +-- +-- Name: index_history_ledgers_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_id ON history_ledgers USING btree (id); + + +-- +-- Name: index_history_ledgers_on_importer_version; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_importer_version ON history_ledgers USING btree (importer_version); + + +-- +-- Name: index_history_ledgers_on_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_ledger_hash ON history_ledgers USING btree (ledger_hash); + + +-- +-- Name: index_history_ledgers_on_previous_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_previous_ledger_hash ON history_ledgers USING btree (previous_ledger_hash); + + +-- +-- Name: index_history_ledgers_on_sequence; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_sequence ON history_ledgers USING btree (sequence); + + +-- +-- Name: index_history_operations_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_operations_on_id ON history_operations USING btree (id); + + +-- +-- Name: index_history_operations_on_transaction_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_transaction_id ON history_operations USING btree (transaction_id); + + +-- +-- Name: index_history_operations_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_type ON history_operations USING btree (type); + + +-- +-- Name: index_history_transactions_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_transactions_on_id ON history_transactions USING btree (id); + + +-- +-- Name: trade_effects_by_order_book; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX trade_effects_by_order_book ON history_effects USING btree (((details ->> 'sold_asset_type'::text)), ((details ->> 'sold_asset_code'::text)), ((details ->> 'sold_asset_issuer'::text)), ((details ->> 'bought_asset_type'::text)), ((details ->> 'bought_asset_code'::text)), ((details ->> 'bought_asset_issuer'::text))) WHERE (type = 33); + + +-- +-- Name: history_trades history_trades_base_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_account_id_fkey FOREIGN KEY (base_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_base_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_asset_id_fkey FOREIGN KEY (base_asset_id) REFERENCES history_assets(id); + + +-- +-- Name: history_trades history_trades_counter_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_account_id_fkey FOREIGN KEY (counter_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_counter_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_asset_id_fkey FOREIGN KEY (counter_asset_id) REFERENCES history_assets(id); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/main.go new file mode 100644 index 0000000..f1e08d6 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/main.go @@ -0,0 +1,70 @@ +package schema + +import ( + "database/sql" + "errors" + + migrate "github.com/rubenv/sql-migrate" + "github.com/stellar/go/support/db" +) + +//go:generate go-bindata -ignore .+\.go$ -pkg schema -o bindata.go ./... + +// MigrateDir represents a direction in which to perform schema migrations. +type MigrateDir string + +const ( + // MigrateUp causes migrations to be run in the "up" direction. + MigrateUp MigrateDir = "up" + // MigrateDown causes migrations to be run in the "down" direction. + MigrateDown MigrateDir = "down" + // MigrateRedo causes migrations to be run down, then up + MigrateRedo MigrateDir = "redo" +) + +// Migrations represents all of the schema migration for horizon +var Migrations migrate.MigrationSource = &migrate.AssetMigrationSource{ + Asset: Asset, + AssetDir: AssetDir, + Dir: "migrations", +} + +// Init installs the latest schema into db after clearing it first +func Init(db *db.Session) error { + return db.ExecAll(string(MustAsset("latest.sql"))) +} + +// Migrate performs schema migration. Migrations can occur in one of three +// ways: +// +// - up: migrations are performed from the currently installed version upwards. +// If count is 0, all unapplied migrations will be run. +// +// - down: migrations are performed from the current version downard. If count +// is 0, all applied migrations will be run in a downard direction. +// +// - redo: migrations are first ran downard `count` times, and then are rand +// upward back to the current version at the start of the process. If count is +// 0, a count of 1 will be assumed. +func Migrate(db *sql.DB, dir MigrateDir, count int) (int, error) { + switch dir { + case MigrateUp: + return migrate.ExecMax(db, "postgres", Migrations, migrate.Up, count) + case MigrateDown: + return migrate.ExecMax(db, "postgres", Migrations, migrate.Down, count) + case MigrateRedo: + + if count == 0 { + count = 1 + } + + down, err := migrate.ExecMax(db, "postgres", Migrations, migrate.Down, count) + if err != nil { + return down, err + } + + return migrate.ExecMax(db, "postgres", Migrations, migrate.Up, down) + default: + return 0, errors.New("Invalid migration direction") + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/main_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/main_test.go new file mode 100644 index 0000000..c647116 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/main_test.go @@ -0,0 +1,21 @@ +package schema + +import ( + "testing" + + "github.com/stellar/go/support/db" + "github.com/stellar/go/support/db/dbtest" + "github.com/stretchr/testify/assert" +) + +func TestInit(t *testing.T) { + tdb := dbtest.Postgres(t) + defer tdb.Close() + sess := &db.Session{DB: tdb.Open()} + + defer sess.DB.Close() + + err := Init(sess) + + assert.NoError(t, err) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/migrations/1_initial_schema.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/migrations/1_initial_schema.sql new file mode 100644 index 0000000..421f4d4 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/migrations/1_initial_schema.sql @@ -0,0 +1,393 @@ +-- +migrate Up +-- +-- PostgreSQL database dump +-- + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +-- +-- Name: hstore; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS hstore WITH SCHEMA public; + + +-- +-- Name: EXTENSION hstore; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION hstore IS 'data type for storing sets of (key, value) pairs'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: history_accounts; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE history_accounts ( + id bigint NOT NULL, + address character varying(64) +); + + +-- +-- Name: history_effects; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE history_effects ( + history_account_id bigint NOT NULL, + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + type integer NOT NULL, + details jsonb +); + + +-- +-- Name: history_ledgers; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE history_ledgers ( + sequence integer NOT NULL, + ledger_hash character varying(64) NOT NULL, + previous_ledger_hash character varying(64), + transaction_count integer DEFAULT 0 NOT NULL, + operation_count integer DEFAULT 0 NOT NULL, + closed_at timestamp without time zone NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + importer_version integer DEFAULT 1 NOT NULL, + total_coins bigint NOT NULL, + fee_pool bigint NOT NULL, + base_fee integer NOT NULL, + base_reserve integer NOT NULL, + max_tx_set_size integer NOT NULL +); + + +-- +-- Name: history_operation_participants; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE history_operation_participants ( + id integer NOT NULL, + history_operation_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_operation_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_operation_participants_id_seq OWNED BY history_operation_participants.id; + + +-- +-- Name: history_operations; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE history_operations ( + id bigint NOT NULL, + transaction_id bigint NOT NULL, + application_order integer NOT NULL, + type integer NOT NULL, + details jsonb, + source_account character varying(64) DEFAULT ''::character varying NOT NULL +); + + +-- +-- Name: history_transaction_participants; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE history_transaction_participants ( + id integer NOT NULL, + history_transaction_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_transaction_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_transaction_participants_id_seq OWNED BY history_transaction_participants.id; + + +-- +-- Name: history_transactions; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE history_transactions ( + transaction_hash character varying(64) NOT NULL, + ledger_sequence integer NOT NULL, + application_order integer NOT NULL, + account character varying(64) NOT NULL, + account_sequence bigint NOT NULL, + fee_paid integer NOT NULL, + operation_count integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + tx_envelope text NOT NULL, + tx_result text NOT NULL, + tx_meta text NOT NULL, + tx_fee_meta text NOT NULL, + signatures character varying(96)[] DEFAULT '{}'::character varying[] NOT NULL, + memo_type character varying DEFAULT 'none'::character varying NOT NULL, + memo character varying, + time_bounds int8range +); + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants ALTER COLUMN id SET DEFAULT nextval('history_operation_participants_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants ALTER COLUMN id SET DEFAULT nextval('history_transaction_participants_id_seq'::regclass); + + +-- +-- Name: history_operation_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- + +ALTER TABLE ONLY history_operation_participants + ADD CONSTRAINT history_operation_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: history_transaction_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- + +ALTER TABLE ONLY history_transaction_participants + ADD CONSTRAINT history_transaction_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: by_account; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX by_account ON history_transactions USING btree (account, account_sequence); + + +-- +-- Name: by_hash; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX by_hash ON history_transactions USING btree (transaction_hash); + + +-- +-- Name: by_ledger; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX by_ledger ON history_transactions USING btree (ledger_sequence, application_order); + + +-- +-- Name: hist_e_by_order; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX hist_e_by_order ON history_effects USING btree (history_operation_id, "order"); + + +-- +-- Name: hist_e_id; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX hist_e_id ON history_effects USING btree (history_account_id, history_operation_id, "order"); + + +-- +-- Name: hist_op_p_id; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX hist_op_p_id ON history_operation_participants USING btree (history_account_id, history_operation_id); + + +-- +-- Name: hs_ledger_by_id; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX hs_ledger_by_id ON history_ledgers USING btree (id); + + +-- +-- Name: hs_transaction_by_id; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX hs_transaction_by_id ON history_transactions USING btree (id); + + +-- +-- Name: index_history_accounts_on_address; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX index_history_accounts_on_address ON history_accounts USING btree (address); + + +-- +-- Name: index_history_accounts_on_id; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX index_history_accounts_on_id ON history_accounts USING btree (id); + + +-- +-- Name: index_history_effects_on_type; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX index_history_effects_on_type ON history_effects USING btree (type); + + +-- +-- Name: index_history_ledgers_on_closed_at; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX index_history_ledgers_on_closed_at ON history_ledgers USING btree (closed_at); + + +-- +-- Name: index_history_ledgers_on_id; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_id ON history_ledgers USING btree (id); + + +-- +-- Name: index_history_ledgers_on_importer_version; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX index_history_ledgers_on_importer_version ON history_ledgers USING btree (importer_version); + + +-- +-- Name: index_history_ledgers_on_ledger_hash; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_ledger_hash ON history_ledgers USING btree (ledger_hash); + + +-- +-- Name: index_history_ledgers_on_previous_ledger_hash; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_previous_ledger_hash ON history_ledgers USING btree (previous_ledger_hash); + + +-- +-- Name: index_history_ledgers_on_sequence; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_sequence ON history_ledgers USING btree (sequence); + + +-- +-- Name: index_history_operations_on_id; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX index_history_operations_on_id ON history_operations USING btree (id); + + +-- +-- Name: index_history_operations_on_transaction_id; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX index_history_operations_on_transaction_id ON history_operations USING btree (transaction_id); + + +-- +-- Name: index_history_operations_on_type; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX index_history_operations_on_type ON history_operations USING btree (type); + + +-- +-- Name: hist_tx_p_id; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX hist_tx_p_id ON history_transaction_participants USING btree (history_account_id, history_transaction_id); + +-- +-- Name: index_history_transactions_on_id; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX index_history_transactions_on_id ON history_transactions USING btree (id); + + +-- +-- Name: trade_effects_by_order_book; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX trade_effects_by_order_book ON history_effects USING btree (((details ->> 'sold_asset_type'::text)), ((details ->> 'sold_asset_code'::text)), ((details ->> 'sold_asset_issuer'::text)), ((details ->> 'bought_asset_type'::text)), ((details ->> 'bought_asset_code'::text)), ((details ->> 'bought_asset_issuer'::text))) WHERE (type = 33); + + +-- +-- PostgreSQL database dump complete +-- + +-- +migrate Down +drop table history_transactions cascade; +drop table history_transaction_participants cascade; +drop table history_operations cascade; +drop table history_operation_participants cascade; +drop table history_ledgers cascade; +drop table history_effects cascade; +drop table history_accounts cascade; diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/migrations/2_index_participants_by_toid.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/migrations/2_index_participants_by_toid.sql new file mode 100644 index 0000000..7b7067b --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/migrations/2_index_participants_by_toid.sql @@ -0,0 +1,9 @@ +-- +migrate Up + +CREATE INDEX hop_by_hoid ON history_operation_participants USING btree (history_operation_id); +CREATE INDEX htp_by_htid ON history_transaction_participants USING btree (history_transaction_id); + +-- +migrate Down + +DROP INDEX hop_by_hoid; +DROP INDEX htp_by_htid; diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/migrations/3_use_sequence_in_history_accounts.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/migrations/3_use_sequence_in_history_accounts.sql new file mode 100644 index 0000000..331bd97 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/migrations/3_use_sequence_in_history_accounts.sql @@ -0,0 +1,13 @@ +-- +migrate Up +CREATE SEQUENCE history_accounts_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; +SELECT setval('history_accounts_id_seq', (SELECT MAX(id) FROM history_accounts)); +ALTER TABLE ONLY history_accounts ALTER COLUMN id SET DEFAULT nextval('history_accounts_id_seq'::regclass); + +-- +migrate Down +ALTER TABLE ONLY history_accounts ALTER COLUMN id DROP DEFAULT; +DROP SEQUENCE history_accounts_id_seq; diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/migrations/4_add_protocol_version.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/migrations/4_add_protocol_version.sql new file mode 100644 index 0000000..bc745ff --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/migrations/4_add_protocol_version.sql @@ -0,0 +1,6 @@ +-- +migrate Up +ALTER TABLE ONLY history_ledgers + ADD COLUMN protocol_version integer DEFAULT 0 NOT NULL; + +-- +migrate Down +ALTER TABLE ONLY history_ledgers DROP COLUMN protocol_version; diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/migrations/5_create_trades_table.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/migrations/5_create_trades_table.sql new file mode 100644 index 0000000..a376c55 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/migrations/5_create_trades_table.sql @@ -0,0 +1,31 @@ +-- +migrate Up +CREATE TABLE history_trades ( + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + + offer_id bigint NOT NULL, + + seller_id bigint NOT NULL, + buyer_id bigint NOT NULL, + + sold_asset_type character varying(64) NOT NULL, + sold_asset_issuer character varying(56) NOT NULL, + sold_asset_code character varying(12) NOT NULL, + sold_amount bigint NOT NULL CHECK (sold_amount > 0), + + bought_asset_type character varying(64) NOT NULL, + bought_asset_issuer character varying(56) NOT NULL, + bought_asset_code character varying(12) NOT NULL, + bought_amount bigint NOT NULL CHECK (bought_amount > 0) +); + +CREATE UNIQUE INDEX htrd_pid ON history_trades USING btree (history_operation_id, "order"); + +CREATE INDEX htrd_by_offer ON history_trades USING btree (offer_id); + +CREATE INDEX htr_by_sold ON history_trades USING btree (sold_asset_type, sold_asset_code, sold_asset_issuer); + +CREATE INDEX htr_by_bought ON history_trades USING btree (bought_asset_type, bought_asset_code, bought_asset_issuer); + +-- +migrate Down +DROP TABLE history_trades cascade; diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/migrations/6_create_assets_table.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/migrations/6_create_assets_table.sql new file mode 100644 index 0000000..d4dcd57 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/migrations/6_create_assets_table.sql @@ -0,0 +1,13 @@ +-- +migrate Up +CREATE TABLE history_assets ( + id SERIAL PRIMARY KEY , + asset_type VARCHAR(64) NOT NULL, + asset_code VARCHAR(12) NOT NULL, + asset_issuer VARCHAR(56) NOT NULL, + UNIQUE(asset_code, asset_type, asset_issuer) +); + +CREATE INDEX asset_by_issuer ON history_assets USING btree (asset_issuer); + +-- +migrate Down +DROP TABLE history_assets cascade; \ No newline at end of file diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/migrations/7_modify_trades_table.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/migrations/7_modify_trades_table.sql new file mode 100644 index 0000000..cc9c3c3 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/schema/migrations/7_modify_trades_table.sql @@ -0,0 +1,48 @@ +-- +migrate Up +-- drop the old trades table. put a new one in place +DROP TABLE history_trades; +CREATE TABLE history_trades ( + history_operation_id BIGINT NOT NULL, + "order" INTEGER NOT NULL, + ledger_closed_at TIMESTAMP NOT NULL, + offer_id BIGINT NOT NULL, + base_account_id BIGINT NOT NULL REFERENCES history_accounts(id), + base_asset_id BIGINT NOT NULL REFERENCES history_assets(id), + base_amount BIGINT NOT NULL CHECK (base_amount > 0), + counter_account_id BIGINT NOT NULL REFERENCES history_accounts(id), + counter_asset_id BIGINT NOT NULL REFERENCES history_assets(id), + counter_amount BIGINT NOT NULL CHECK (counter_amount > 0), + base_is_seller BOOLEAN, + CHECK(base_asset_id < counter_asset_id) +); + +CREATE UNIQUE INDEX htrd_pid ON history_trades USING btree (history_operation_id, "order"); +CREATE INDEX htrd_pair_time_lookup ON history_trades USING BTREE(base_asset_id, counter_asset_id, ledger_closed_at); +CREATE INDEX htrd_counter_lookup ON history_trades USING BTREE(counter_asset_id); +CREATE INDEX htrd_time_lookup ON history_trades USING BTREE(ledger_closed_at); +CREATE INDEX htrd_by_offer ON history_trades USING btree (offer_id); + + +-- +migrate Down +-- drop the newer table. reinstate the old one. +DROP TABLE history_trades cascade; +CREATE TABLE history_trades ( + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + offer_id bigint NOT NULL, + seller_id bigint NOT NULL, + buyer_id bigint NOT NULL, + sold_asset_type character varying(64) NOT NULL, + sold_asset_issuer character varying(56) NOT NULL, + sold_asset_code character varying(12) NOT NULL, + sold_amount bigint NOT NULL CHECK (sold_amount > 0), + bought_asset_type character varying(64) NOT NULL, + bought_asset_issuer character varying(56) NOT NULL, + bought_asset_code character varying(12) NOT NULL, + bought_amount bigint NOT NULL CHECK (bought_amount > 0) +); + +CREATE UNIQUE INDEX htrd_pid ON history_trades USING btree (history_operation_id, "order"); +CREATE INDEX htrd_by_offer ON history_trades USING btree (offer_id); +CREATE INDEX htr_by_sold ON history_trades USING btree (sold_asset_type, sold_asset_code, sold_asset_issuer); +CREATE INDEX htr_by_bought ON history_trades USING btree (bought_asset_type, bought_asset_code, bought_asset_issuer); \ No newline at end of file diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/sqx/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/sqx/main.go new file mode 100644 index 0000000..c09af83 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/sqx/main.go @@ -0,0 +1,28 @@ +// Package sqx contains utilities and extensions for the squirrel package which +// is used by horizon to generate sql statements. +package sqx + +import ( + "fmt" + "strings" + + sq "github.com/Masterminds/squirrel" +) + +// StringArray returns a sq.Expr suitable for inclusion in an insert that +// represents the Postgres-compatible array insert. Strings are quoted. +func StringArray(input []string) interface{} { + quoted := make([]string, len(input)) + + // NOTE (scott): this is naive and janked. We should be using + // https://godoc.org/github.com/lib/pq#Array instead. We should update this + // func code when our version of pq is updated. + for i, str := range input { + quoted[i] = fmt.Sprintf(`"%s"`, str) + } + + return sq.Expr( + "?::character varying[]", + fmt.Sprintf("{%s}", strings.Join(quoted, ",")), + ) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/db2/sqx/main_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/sqx/main_test.go new file mode 100644 index 0000000..452f9e8 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/db2/sqx/main_test.go @@ -0,0 +1,22 @@ +package sqx + +import ( + "testing" + + sq "github.com/Masterminds/squirrel" + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestStringArray(t *testing.T) { + tt := test.Start(t).ScenarioWithoutHorizon("base") + defer tt.Finish() + + expr := StringArray([]string{"1", "2", "3"}).(sq.Sqlizer) + sql, args, err := expr.ToSql() + + tt.Require.NoError(err) + tt.Assert.Equal("?::character varying[]", sql) + + tt.Assert.Len(args, 1) + tt.Assert.Equal(`{"1","2","3"}`, args[0]) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/developing.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/developing.md new file mode 100644 index 0000000..9219616 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/developing.md @@ -0,0 +1,112 @@ +--- +title: Horizon Development Guide +--- + +This document contains topics related to the development of horizon. + +- [Regenerating generated code](#regen) +- [Running tests](#tests) +- [Logging](#logging) + + +--- +## Regenerating generated code + +Horizon uses two go tools you'll need to install: +1. [go-bindata](https://github.com/jteeuwen/go-bindata) is used to bundle test data +1. [go-codegen](https://github.com/nullstyle/go-codegen) is used to generate some boilerplate code + +After the above are installed, simply run `go generate github.com/stellar/go/services/horizon/...`. + +## Running Tests + +start a redis server on port `6379` + +```bash +redis-server +``` + +then, run the all the go tests like so (assuming you are at stellar/go): + +```bash +bash ./support/scripts/run_tests +``` + +or just run horizon tests like so: + +```bash +go test github.com/stellar/go/services/horizon/... +``` + +## Logging + +All logging infrastructure is in the `github.com/stellar/go/tree/master/services/horizon/internal/log` package. This package provides "level-based" logging: Each logging statement has a severity, one of "Debug", "Info", "Warn", "Error" or "Panic". The horizon server has a configured level "filter", specified either using the `--log-level` command line flag or the `LOG_LEVEL` environment variable. When a logging statement is executed, the statements declared severity is checked against the filter and will only be emitted if the severity of the statement is equal or higher severity than the filter. + +In addition, the logging subsystem has support for fields: Arbitrary key-value pairs that will be associated with an entry to allow for filtering and additional contextual information. + +### Making Logging statements + +Assuming that you've imports the log package, making a simple logging call is just: + +```go + +log.Info("my log line") +log.Infof("I take a %s", "format string") + +``` + +Adding fields to a statement happens with a call to `WithField` or `WithFields` + +```go +log.WithField("pid", 1234).Warn("i'm scared") + +log.WithFields(log.F{ + "some_field": 123, + "second_field": "hello", +}).Debug("here") +``` + +The return value from `WithField` or `WithFields` is a `*log.Entry`, which you can save to emit multiple logging +statements that all share the same field. For example, the action system for horizon attaches a log entry to `action.Log` on every request that can be used to emit log entries that have the request's id attached as a field. + +### Logging and Context + +The logging package provides the root logger at `log.DefaultLogger` and the package level funcs such as `log.Info` operate against the default logger. However, often it is important to include request-specific fields in a logging statement that are not available in the local scope. For example, it is useful to include an http request's id in every log statement that is emitted by code running on behalf of the request. This allows for easier debugging, as an operator can filter the log stream to a specific request id and not have to wade through the entirety of the log. + +Unfortunately, it is not prudent to thread an `*http.Request` parameter to every downstream subroutine and so we need another way to make that information available. The idiomatic way to do this is go is with a context parameter, as describe [on the go blog](https://blog.golang.org/context). The logging provides a func to bind a logger to a context using `log.Set` and allows you to retrieve a bound logger using `log.Ctx(ctx)`. Functions that need to log on behalf of an server request should take a context parameter. + +Here's an example of using context: + +```go + +// create a new sublogger +sub := log.WithField("val", 1) + +// bind it to a context +ctx := log.Set(context.Background(), sub) + +log.Info("no fields on this statement") +log.Ctx(ctx).Info("This statement will use the sub logger") + +``` + +### Logging Best Practices + +It's recommended that you try to avoid contextual information in your logging messages. Instead, use fields to establish context and use a static string for your message. This practice allows horizon operators to more easily filter log lines to provide better insight into the health of the server. Lets take an example: + +```go +// BAD +log.Infof("running initializer: %s", i.Name) + +//GOOD +log.WithField("init_name", i.Name).Info("running initializer") +``` + +With the "bad" form of the logging example above, an operator can filter on both the message as well as the initializer name independently. This gets more powerful when multiple fields are combined, allowing for all sorts of slicing and dicing. + + +## Enabling TLS on your local workstation + +Horizon support HTTP/2 when served using TLS. To enable TLS on your local workstation, you must generate a certificate and configure horizon to use it. We've written a helper script at `tls/regen.sh` to make this simple. Run the script from your terminal, and simply choose all the default options. This will create two files: `tls/server.crt` and `tls/server.key`. + +Now you must configure horizon to use them: You can simply add `--tls-cert tls/server.crt --tls-key tls/server.key` to your command line invocations of horizon, or you may specify `TLS_CERT` and `TLS_KEY` environment variables. diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/readme.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/readme.md new file mode 100644 index 0000000..a2473f3 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/readme.md @@ -0,0 +1,20 @@ +--- +title: Horizon +--- + +Horizon is the server for the client facing API for the Stellar ecosystem. It acts as the interface between [stellar-core](https://www.stellar.org/developers/learn/stellar-core) and applications that want to access the Stellar network. It allows you to submit transactions to the network, check the status of accounts, subscribe to event streams, etc. See [an overview of the Stellar ecosystem](https://www.stellar.org/developers/guides/) for more details. + +You can interact directly with horizon via curl or a web browser but SDF provides a [JavaScript SDK](https://www.stellar.org/developers/js-stellar-sdk/learn/) for clients to use to interact with Horizon. + +SDF runs a instance of Horizon that is connected to the test net [https://horizon-testnet.stellar.org/](https://horizon-testnet.stellar.org/). + +## Libraries + +SDF maintained libraries:
+- [JavaScript](https://github.com/stellar/js-stellar-sdk) +- [Java](https://github.com/stellar/java-stellar-sdk) +- [Go](https://github.com/stellar/go) + +Community maintained libraries (in various states of completeness) for interacting with Horizon in other languages:
+- [Ruby](https://github.com/stellar/ruby-stellar-sdk) +- [Python](https://github.com/StellarCN/py-stellar-base) diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/admin.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/admin.md new file mode 100644 index 0000000..3e4318a --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/admin.md @@ -0,0 +1,134 @@ +--- +title: Administration +--- + +Horizon is responsible for providing an HTTP API to data in the Stellar network. It ingests and re-serves the data produced by the stellar network in a form that is easier to consume than the performance-oriented data representations used by stellar-core. + +## Why run horizon? + +The stellar development foundation runs two horizon servers, one for the public network and one for the test network, free for anyone's use at https://horizon.stellar.org and https://horizon-testnet.stellar.org. These servers should be fine for development and small scale projects, but is not recommended that you use them for production services that need strong reliability. By running horizon within your own infrastructure provides a number of benefits: + + - Multiple instances can be run for redundancy and scalability. + - Request rate limiting can be disabled. + - Full operational control without dependency on the Stellar Development Foundations operations. + +## Prerequisites + +Horizon is a dependent upon a stellar-core server. Horizon needs access to both the SQL database and the HTTP API that is published by stellar-core. See [the administration guide](https://www.stellar.org/developers/stellar-core/learn/admin.html +) to learn how to set up and administer a stellar-core server. Secondly, horizon is dependent upon a postgresql server, which it uses to store processed core data for ease of use. Horizon requires postgres version >= 9.3. + +In addition to the two required prerequisites above, you may optionally install a redis server to be used for rate limiting requests. + +## Installing + +To install horizon, you have a choice: either downloading a [prebuilt release for your target architecture](https://github.com/stellar/go/releases) and operation system, or [building horizon yourself](#Building). When either approach is complete, you will find yourself with a directory containing a file named `horizon`. This file is a native binary. + +After building or unpacking horizon, you simply need to copy the native binary into a directory that is part of your PATH. Most unix-like systems have `/usr/local/bin` in PATH by default, so unless you have a preference or know better, we recommend you copy the binary there. + +To test the installation, simply run `horizon --help` from a terminal. If the help for horizon is displayed, your installation was successful. Note: some shells, such as zsh, cache PATH lookups. You may need to clear your cache (by using `rehash` in zsh, for example) before trying to run `horizon --help`. + + +## Building + +Should you decide not to use one of our prebuilt releases, you may instead build horizon from source. To do so, you need to install some developer tools: + +- A unix-like operating system with the common core commands (cp, tar, mkdir, bash, etc.) +- A compatible distribution of go (we officially support go 1.6 and later) +- [glide](https://glide.sh/) +- [git](https://git-scm.com/) + +Provided your workstation satisfies the requirements above, follow the steps below: + +1. Clone horizon's source: `git clone https://github.com/stellar/go.git && cd go` +2. Download external dependencies: `glide install` +3. Build the binary: `go install github.com/stellar/go/services/horizon` + +After running the above commands have succeeded, the built horizon will have be written into the `bin` subdirectory of the current directory. + +Note: Building directly on windows is not supported. + + +## Configuring + +Horizon is configured using command line flags or environment variables. To see the list of command line flags that are available (and their default values) for your version of horizon, run: + +`horizon --help` + +As you will see if you run the command above, horizon defines a large number of flags, however only three are required: + +| flag | envvar | example | +|-------------------------|-----------------------------|--------------------------------------| +| `--db-url` | `DATABASE_URL` | postgres://localhost/horizon_testnet | +| `--stellar-core-db-url` | `STELLAR_CORE_DATABASE_URL` | postgres://localhost/core_testnet | +| `--stellar-core-url` | `STELLAR_CORE_URL` | http://localhost:11626 | + +`--db-url` specifies the horizon database, and its value should be a valid [PostgreSQL Connection URI](http://www.postgresql.org/docs/9.2/static/libpq-connect.html#AEN38419). `--stellar-core-db-url` specifies a stellar-core database which will be used to load data about the stellar ledger. Finally, `--stellar-core-url` specifies the HTTP control port for an instance of stellar-core. This URL should be associated with the stellar-core that is writing to the database at `--stellar-core-db-url`. + +Specifying command line flags every time you invoke horizon can be cumbersome, and so we recommend using environment variables. There are many tools you can use to manage environment variables: we recommend either [direnv](http://direnv.net/) or [dotenv](https://github.com/bkeepers/dotenv). A template configuration that is compatible with dotenv can be found in the [horizon git repo](https://github.com/stellar/go/tree/master/services/horizon/blob/master/.env.template). + + + +## Preparing the database + +Before the horizon server can be run, we must first prepare the horizon database. This database will be used for all of the information produced by horizon, notably historical information about successful transactions that have occurred on the stellar network. + +To prepare a database for horizon's use, first you must ensure the database is blank. It's easiest to simply create a new database on your postgres server specifically for horizon's use. Next you must install the schema by running `horizon db init`. Remember to use the appropriate command line flags or environment variables to configure horizon as explained in [Configuring ](#Configuring). This command will log any errors that occur. + +## Running + +Once your horizon database is configured, you're ready to run horizon. To run horizon you simply run `horizon` or `horizon serve`, both of which start the HTTP server and start logging to standard out. When run, you should see some output that similar to: + +``` +INFO[0000] Starting horizon on :8000 pid=29013 +``` + +The log line above announces that horizon is ready to serve client requests. Note: the numbers shown above may be different for your installation. Next we can confirm that horizon is responding correctly by loading the root resource. In the example above, that URL would be [http://127.0.0.1:8000/] and simply running `curl http://127.0.0.1:8000/` shows you that the root resource can be loaded correctly. + + +## Ingesting stellar-core data + +Horizon provides most of its utility through ingested data. Your horizon server can be configured to listen for and ingest transaction results from the connected stellar-core. We recommend that within your infrastructure you run one (and only one) horizon process that is configured in this way. While running multiple ingestion processes will not corrupt the horizon database, your error logs will quickly fill up as the two instances race to ingest the data from stellar-core. We may develop a system that coordinates multiple horizon processes in the future, but we would also be happy to include an external contribution that accomplishes this. + +To enable ingestion, you must either pass `--ingest=true` on the command line or set the `INGEST` environment variable to "true". + +### Managing storage for historical data + +Given an empty horizon database, any and all available history on the attached stellar-core instance will be ingested. Over time, this recorded history will grow unbounded, increasing storage used by the database. To keep you costs down, you may configure horizon to only retain a certain number of ledgers in the historical database. This is done using the `--history-retention-count` flag or the `HISTORY_RETENTION_COUNT` environment variable. Set the value to the number of recent ledgers you with to keep around, and every hour the horizon subsystem will reap expired data. Alternatively, you may execute the command `horizon db reap` to force a collection. + +### Surviving stellar-core downtime + +Horizon tries to maintain a gap-free window into the history of the stellar-network. This reduces the number of edge cases that horizon-dependent software must deal with, aiming to make the integration process simpler. To maintain a gap-free history, horizon needs access to all of the metadata produced by stellar-core in the process of closing a ledger, and there are instances when this metadata can be lost. Usually, this loss of metadata occurs because the stellar-core node went offline and performed a catchup operation when restarted. + +To ensure that the metadata required by horizon is maintained, you have several options: You may either set the `CATCHUP_COMPLETE` stellar-core configuration option to `true` or configure `CATCHUP_RECENT` to determine the amount of time your stellar-core can be offline without having to rebuild your horizon database. + +We _do not_ recommend using the `CATCHUP_COMPLETE` method, as this will force stellar-core to apply every transaction from the beginning of the ledger, which will take an ever increasing amount of time. Instead, we recommend you set the `CATCHUP_RECENT` config value. To do this, determine how long of a downtime you would like to survive (expressed in seconds) and divide by ten. This roughly equates to the number of ledgers that occur within you desired grace period (ledgers roughly close at a rate of one every ten seconds). With this value set, stellar-core will replay transactions for ledgers that are recent enough, ensuring that the metadata needed by horizon is present. + +### Correcting gaps in historical data + +In the section above, we mentioned that horizon _tries_ to maintain a gap-free window. Unfortunately, it cannot directly control the state of stellar-core and so gaps may form due to extended down time. When a gap is encountered, horizon will stop ingesting historical data and complain loudly in the log with error messages (log lines will include "ledger gap detected"). To resolve this situation, you must re-establish the expected state of the stellar-core database and purge historical data from horizon's database. We leave the details of this process up to the reader as it is dependent upon your operating needs and configuration, but we offer one potential solution: + +We recommend you configure the HISTORY_RETENTION_COUNT in horizon to a value less than or equal to the configured value for CATCHUP_RECENT in stellar-core. Given this situation any downtime that would cause a ledger gap will require a downtime greater than the amount of historical data retained by horizon. To re-establish continuity, simply: + +1. Stop horizon. +2. run `horizon db reap` to clear the historical database. +3. Clear the cursor for horizon by running `stellar-core -c "dropcursor?id=HORIZON"` (ensure capitilization is maintained). +4. Clear ledger metadata from before the gap by running `stellar-core -c "maintenance?queue=true"`. +5. Restart horizon. + +## Managing Stale Historical Data + +Horizon ingests ledger data from a connected instance of stellar-core. In the event that stellar-core stops running (or if horizon stops ingesting data for any other reason), the view provided by horizon will start to lag behind reality. For simpler applications, this may be fine, but in many cases this lag is unacceptable and the application should not continue operating until the lag is resolved. + +To help applications that cannot tolerate lag, horizon provides a configurable "staleness" threshold. Given that enough lag has accumulated to surpass this threshold (expressed in number of ledgers), horizon will only respond with an error: [`stale_history`](./errors/stale-history.md). To configure this option, use either the `--history-stale-threshold` command line flag or the `HISTORY_STALE_THRESHOLD` environment variable. NOTE: non-historical requests (such as submitting transactions or finding payment paths) will not error out when the staleness threshold is surpassed. + +## Monitoring + +To ensure that your instance of horizon is performing correctly we encourage you to monitor it, and provide both logs and metrics to do so. + +Horizon will output logs to standard out. Information about what requests are coming in will be reported, but more importantly and warnings or errors will also be emitted by default. A correctly running horizon instance will not ouput any warning or error log entries. + +Metrics are collected while a horizon process is running and they are exposed at the `/metrics` path. You can see an example at (https://horizon-testnet.stellar.org/metrics). + +## I'm Stuck! Help! + +If any of the above steps don't work or you are otherwise prevented from correctly setting up horizon, please come to our community and tell us. Either [post an issue in the horizon github repo](https://github.com/stellar/go/issues) or [chat with us on slack](http://slack.stellar.org/) to ask for help. diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/accounts-single.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/accounts-single.md new file mode 100644 index 0000000..8883dc4 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/accounts-single.md @@ -0,0 +1,127 @@ +--- +title: Account Details +clientData: + laboratoryUrl: https://www.stellar.org/laboratory/#explorer?resource=accounts&endpoint=single +--- + +Returns information and links relating to a single [account](../resources/account.md). + +The balances section in the returned JSON will also list all the [trust lines](https://www.stellar.org/developers/learn/concepts/assets.html) this account has set up. Note this will only return trustlines that have the necessary authorization to work. Meaning if an accountA trusts another accountB that has the [authorization required](https://www.stellar.org/developers/guides/concepts/accounts.html#flags) flag set the trustline wont show up until accountB [allows](https://www.stellar.org/developers/guides/concepts/list-of-operations.html#allow-trust) accountA to hold its assets. + +## Request + +``` +GET /accounts/{account} +``` + +### Arguments + +| name | notes | description | example | +| ---- | ----- | ----------- | ------- | +| `account` | required, string | Account ID | GA2HGBJIJKI6O4XEM7CZWY5PS6GKSXL6D34ERAJYQSPYA6X6AI7HYW36 | + +### curl Example Request + +```sh +curl "https://horizon-testnet.stellar.org/accounts/GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ" +``` + +### JavaScript Example Request + +```js +var StellarSdk = require('stellar-sdk'); +var server = new StellarSdk.Server('https://horizon-testnet.stellar.org'); + +server.accounts() + .accountId("GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ") + .call() + .then(function (accountResult) { + console.log(accountResult); + }) + .catch(function (err) { + console.error(err); + }) +``` + +## Response + +This endpoint responds with the details of a single account for a given ID. See [account resource](../resources/account.md) for reference. + +### Example Response +```json +{ + "_links": { + "self": { + "href": "https://horizon-testnet.stellar.org/accounts/GD42RQNXTRIW6YR3E2HXV5T2AI27LBRHOERV2JIYNFMXOBA234SWLQQB" + }, + "transactions": { + "href": "https://horizon-testnet.stellar.org/accounts/GD42RQNXTRIW6YR3E2HXV5T2AI27LBRHOERV2JIYNFMXOBA234SWLQQB/transactions{?cursor,limit,order}", + "templated": true + }, + "operations": { + "href": "https://horizon-testnet.stellar.org/accounts/GD42RQNXTRIW6YR3E2HXV5T2AI27LBRHOERV2JIYNFMXOBA234SWLQQB/operations{?cursor,limit,order}", + "templated": true + }, + "payments": { + "href": "https://horizon-testnet.stellar.org/accounts/GD42RQNXTRIW6YR3E2HXV5T2AI27LBRHOERV2JIYNFMXOBA234SWLQQB/payments{?cursor,limit,order}", + "templated": true + }, + "effects": { + "href": "https://horizon-testnet.stellar.org/accounts/GD42RQNXTRIW6YR3E2HXV5T2AI27LBRHOERV2JIYNFMXOBA234SWLQQB/effects{?cursor,limit,order}", + "templated": true + }, + "offers": { + "href": "https://horizon-testnet.stellar.org/accounts/GD42RQNXTRIW6YR3E2HXV5T2AI27LBRHOERV2JIYNFMXOBA234SWLQQB/offers{?cursor,limit,order}", + "templated": true + } + }, + "id": "GD42RQNXTRIW6YR3E2HXV5T2AI27LBRHOERV2JIYNFMXOBA234SWLQQB", + "paging_token": "7275146318450689", + "account_id": "GD42RQNXTRIW6YR3E2HXV5T2AI27LBRHOERV2JIYNFMXOBA234SWLQQB", + "sequence": 7275146318446606, + "subentry_count": 5, + "thresholds": { + "low_threshold": 0, + "med_threshold": 0, + "high_threshold": 0 + }, + "flags": { + "auth_required": false, + "auth_revocable": false + }, + "balances": [ + { + "balance": "126.8107491", + "limit": "5000.0000000", + "asset_type": "credit_alphanum4", + "asset_code": "BAR", + "asset_issuer": "GBAUUA74H4XOQYRSOW2RZUA4QL5PB37U3JS5NE3RTB2ELJVMIF5RLMAG" + }, + { + "balance": "294.0000000", + "limit": "922337203685.4775807", + "asset_type": "credit_alphanum4", + "asset_code": "FOO", + "asset_issuer": "GBAUUA74H4XOQYRSOW2RZUA4QL5PB37U3JS5NE3RTB2ELJVMIF5RLMAG" + }, + { + "balance": "9997.6802725", + "asset_type": "native" + } + ], + "signers": [ + { + "public_key": "GD42RQNXTRIW6YR3E2HXV5T2AI27LBRHOERV2JIYNFMXOBA234SWLQQB", + "weight": 1 + } + ], + "data": { + "club": "MTAw" + } +} +``` + +## Possible Errors + +- The [standard errors](../errors.md#Standard-Errors). +- [not_found](../errors/not-found.md): A `not_found` error will be returned if there is no account whose ID matches the `account` argument. diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/data-for-account.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/data-for-account.md new file mode 100644 index 0000000..b2e87cb --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/data-for-account.md @@ -0,0 +1,62 @@ +--- +title: Data for Account +clientData: + laboratoryUrl: https://www.stellar.org/laboratory/#explorer?resource=data&endpoint=for_account +--- + +This endpoint represents a single [data](../resources/data.md) associated with a given [account](../resources/account.md). + +## Request + +``` +GET /accounts/{account}/data/{key} +``` + +### Arguments + +| name | notes | description | example | +| ------ | ------- | ----------- | ------- | +| `key`| required, string | Key name | `user-id`| + +### curl Example Request + +```sh +curl "https://horizon-testnet.stellar.org/accounts/GA2HGBJIJKI6O4XEM7CZWY5PS6GKSXL6D34ERAJYQSPYA6X6AI7HYW36/data/user-id" +``` + +### JavaScript Example Request + +```js +var StellarSdk = require('stellar-sdk'); +var server = new StellarSdk.Server('https://horizon-testnet.stellar.org'); + +server.accounts() + .accountId("GAKLBGHNHFQ3BMUYG5KU4BEWO6EYQHZHAXEWC33W34PH2RBHZDSQBD75") + .call() + .then(function (account) { + return account.data({key: 'user-id'}) + }) + .then(function(dataValue) { + console.log(dataValue) + }) + .catch(function (err) { + console.log(err) + }) +``` + +## Response + +This endpoint responds with a value of the data field for the given account. See [data resource](../resources/data.md) for reference. + +### Example Response + +```json +{ + "value": "MTAw" +} +``` + +## Possible Errors + +- The [standard errors](../errors.md#Standard-Errors). +- [not_found](../errors/not-found.md): A `not_found` error will be returned if there is no account whose ID matches the `account` argument or there is no data field with a given key. diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/effects-all.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/effects-all.md new file mode 100644 index 0000000..f7d22bf --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/effects-all.md @@ -0,0 +1,116 @@ +--- +title: All Effects +clientData: + laboratoryUrl: https://www.stellar.org/laboratory/#explorer?resource=effects&endpoint=all +--- + +This endpoint represents all [effects](../resources/effect.md). + +This endpoint can also be used in [streaming](../responses.md#streaming) mode so it is possible to use it to listen for new effects as transactions happen in the Stellar network. +If called in streaming mode Horizon will start at the earliest known effect unless a `cursor` is set. In that case it will start from the `cursor`. You can also set `cursor` value to `now` to only stream effects created since your request time. + +## Request + +``` +GET /effects{?cursor,limit,order} +``` + +## Arguments + +| name | notes | description | example | +| ------ | ------- | ----------- | ------- | +| `?cursor` | optional, default _null_ | A paging token, specifying where to start returning records from. When streaming this can be set to `now` to stream object created since your request time. | `12884905984` | +| `?order` | optional, string, default `asc` | The order in which to return rows, "asc" or "desc". | `asc` | +| `?limit` | optional, number, default `10` | Maximum number of records to return. | `200` | + +### curl Example Request + +```sh +curl "https://horizon-testnet.stellar.org/effects" +``` + +### JavaScript Example Request + +```javascript +var StellarSdk = require('stellar-sdk'); +var server = new StellarSdk.Server('https://horizon-testnet.stellar.org'); + +server.effects() + .call() + .then(function (effectResults) { + //page 1 + console.log(effectResults.records) + }) + .catch(function (err) { + console.log(err) + }) + +``` + +## Response + +The list of effects. + +### Example Response + +```json +{ + "_embedded": { + "records": [ + { + "_links": { + "operation": { + "href": "/operations/279172878337" + }, + "precedes": { + "href": "/effects?cursor=279172878337-1\u0026order=asc" + }, + "succeeds": { + "href": "/effects?cursor=279172878337-1\u0026order=desc" + } + }, + "account": "GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K", + "paging_token": "279172878337-1", + "starting_balance": "10000000.0", + "type_i": 0, + "type": "account_created" + }, + { + "_links": { + "operation": { + "href": "/operations/279172878337" + }, + "precedes": { + "href": "/effects?cursor=279172878337-2\u0026order=asc" + }, + "succeeds": { + "href": "/effects?cursor=279172878337-2\u0026order=desc" + } + }, + "account": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", + "amount": "10000000.0", + "asset_type": "native", + "paging_token": "279172878337-2", + "type_i": 3, + "type": "account_debited" + } + ] + }, + "_links": { + "next": { + "href": "/effects?order=asc\u0026limit=2\u0026cursor=279172878337-2" + }, + "prev": { + "href": "/effects?order=desc\u0026limit=2\u0026cursor=279172878337-1" + }, + "self": { + "href": "/effects?order=asc\u0026limit=2\u0026cursor=" + } + } +} +``` + +## Possible Errors + +- The [standard errors](../errors.md#Standard-Errors). +- [not_found](../errors/not-found.md): A `not_found` error will be returned if there are no effects for the given account. diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/effects-for-account.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/effects-for-account.md new file mode 100644 index 0000000..04d945d --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/effects-for-account.md @@ -0,0 +1,118 @@ +--- +title: Effects for Account +clientData: + laboratoryUrl: https://www.stellar.org/laboratory/#explorer?resource=effects&endpoint=for_account +--- + +This endpoint represents all [effects](../resources/effect.md) that changed a given [account](../resources/account.md). It will return relevant effects from the creation of the account to the current ledger. + +This endpoint can also be used in [streaming](../responses.md#streaming) mode so it is possible to use it to listen for new effects as transactions happen in the Stellar network. +If called in streaming mode Horizon will start at the earliest known effect unless a `cursor` is set. In that case it will start from the `cursor`. You can also set `cursor` value to `now` to only stream effects created since your request time. + +## Request + +``` +GET /accounts/{account}/effects{?cursor,limit,order} +``` + +## Arguments + +| name | notes | description | example | +| ------ | ------- | ----------- | ------- | +| `account` | required, string | Account ID | `GA2HGBJIJKI6O4XEM7CZWY5PS6GKSXL6D34ERAJYQSPYA6X6AI7HYW36` | +| `?cursor` | optional, default _null_ | A paging token, specifying where to start returning records from. When streaming this can be set to `now` to stream object created since your request time. | `12884905984` | +| `?order` | optional, string, default `asc` | The order in which to return rows, "asc" or "desc". | `asc` | +| `?limit` | optional, number, default `10` | Maximum number of records to return. | `200` | + +### curl Example Request + +```sh +curl "https://horizon-testnet.stellar.org/accounts/GA2HGBJIJKI6O4XEM7CZWY5PS6GKSXL6D34ERAJYQSPYA6X6AI7HYW36/effects" +``` + +### JavaScript Example Request + +```javascript +var StellarSdk = require('stellar-sdk'); +var server = new StellarSdk.Server('https://horizon-testnet.stellar.org'); + +server.effects() + .forAccount("GD6VWBXI6NY3AOOR55RLVQ4MNIDSXE5JSAVXUTF35FRRI72LYPI3WL6Z") + .call() + .then(function (effectResults) { + //page 1 + console.log(effectResults.records) + }) + .catch(function (err) { + console.log(err) + }) + +``` + +## Response + +The list of effects. + +### Example Response + +```json +{ + "_embedded": { + "records": [ + { + "_links": { + "operation": { + "href": "/operations/214748368897" + }, + "precedes": { + "href": "/effects?cursor=214748368897-1\u0026order=asc" + }, + "succeeds": { + "href": "/effects?cursor=214748368897-1\u0026order=desc" + } + }, + "account": "GC6NFQDTVH2YMVZSXJIVLCRHLFAOVOT32JMDFZJZ34QFSSVT7M5G2XFK", + "paging_token": "214748368897-1", + "starting_balance": "100.0", + "type_i": 0, + "type": "account_created" + }, + { + "_links": { + "operation": { + "href": "/operations/214748368897" + }, + "precedes": { + "href": "/effects?cursor=214748368897-3\u0026order=asc" + }, + "succeeds": { + "href": "/effects?cursor=214748368897-3\u0026order=desc" + } + }, + "account": "GC6NFQDTVH2YMVZSXJIVLCRHLFAOVOT32JMDFZJZ34QFSSVT7M5G2XFK", + "paging_token": "214748368897-3", + "public_key": "GC6NFQDTVH2YMVZSXJIVLCRHLFAOVOT32JMDFZJZ34QFSSVT7M5G2XFK", + "type_i": 10, + "type": "signer_created", + "weight": 2 + } + ] + }, + "_links": { + "next": { + "href": "/accounts/GC6NFQDTVH2YMVZSXJIVLCRHLFAOVOT32JMDFZJZ34QFSSVT7M5G2XFK/effects?order=asc\u0026limit=10\u0026cursor=214748368897-3" + }, + "prev": { + "href": "/accounts/GC6NFQDTVH2YMVZSXJIVLCRHLFAOVOT32JMDFZJZ34QFSSVT7M5G2XFK/effects?order=desc\u0026limit=10\u0026cursor=214748368897-1" + }, + "self": { + "href": "/accounts/GC6NFQDTVH2YMVZSXJIVLCRHLFAOVOT32JMDFZJZ34QFSSVT7M5G2XFK/effects?order=asc\u0026limit=10\u0026cursor=" + } + } +} +``` + +## Possible Errors + +- The [standard errors](../errors.md#Standard-Errors). +- [not_found](../errors/not-found.md): A `not_found` error will be returned if there are no effects for the given account. diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/effects-for-ledger.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/effects-for-ledger.md new file mode 100644 index 0000000..32583ff --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/effects-for-ledger.md @@ -0,0 +1,136 @@ +--- +title: Effects for Ledger +clientData: + laboratoryUrl: https://www.stellar.org/laboratory/#explorer?resource=effects&endpoint=for_ledger +--- + +Effects are the specific ways that the ledger was changed by any operation. + +This endpoint represents all [effects](../resources/effect.md) that occurred in the given [ledger](../resources/ledger.md). + +## Request + +``` +GET /ledgers/{id}/effects{?cursor,limit,order} +``` + +## Arguments + +| name | notes | description | example | +| ------ | ------- | ----------- | ------- | +| `id` | required, number | Ledger ID | `69859` | +| `?cursor`| optional, default _null_ | A paging token, specifying where to start returning records from.| `12884905984`| +| `?order` | optional, string, default `asc`| The order in which to return rows, "asc" or "desc". | `asc` | +| `?limit` | optional, number, default `10` | Maximum number of records to return. | `200` | + +### curl Example Request + +```sh +curl "https://horizon-testnet.stellar.org/ledgers/69859/effects" +``` + +### JavaScript Example Request + +```javascript +var StellarSdk = require('stellar-sdk'); +var server = new StellarSdk.Server('https://horizon-testnet.stellar.org'); + +server.effects() + .forLedger("2") + .call() + .then(function (effectResults) { + //page 1 + console.log(effectResults.records) + }) + .catch(function (err) { + console.log(err) + }) + +``` + +## Response + +This endpoint responds with a list of effects that occurred in the ledger. See [effect resource](../resources/effect.md) for reference. + +### Example Response + +```json +{ + "_embedded": { + "records": [ + { + "_links": { + "operation": { + "href": "/operations/141733924865" + }, + "precedes": { + "href": "/effects?cursor=141733924865-1\u0026order=asc" + }, + "succeeds": { + "href": "/effects?cursor=141733924865-1\u0026order=desc" + } + }, + "account": "GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K", + "paging_token": "141733924865-1", + "starting_balance": "10000000.0", + "type_i": 0, + "type": "account_created" + }, + { + "_links": { + "operation": { + "href": "/operations/141733924865" + }, + "precedes": { + "href": "/effects?cursor=141733924865-2\u0026order=asc" + }, + "succeeds": { + "href": "/effects?cursor=141733924865-2\u0026order=desc" + } + }, + "account": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", + "amount": "10000000.0", + "asset_type": "native", + "paging_token": "141733924865-2", + "type_i": 3, + "type": "account_debited" + }, + { + "_links": { + "operation": { + "href": "/operations/141733924865" + }, + "precedes": { + "href": "/effects?cursor=141733924865-3\u0026order=asc" + }, + "succeeds": { + "href": "/effects?cursor=141733924865-3\u0026order=desc" + } + }, + "account": "GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K", + "paging_token": "141733924865-3", + "public_key": "GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K", + "type_i": 10, + "type": "signer_created", + "weight": 2 + } + ] + }, + "_links": { + "next": { + "href": "/ledgers/33/effects?order=asc\u0026limit=10\u0026cursor=141733924865-3" + }, + "prev": { + "href": "/ledgers/33/effects?order=desc\u0026limit=10\u0026cursor=141733924865-1" + }, + "self": { + "href": "/ledgers/33/effects?order=asc\u0026limit=10\u0026cursor=" + } + } +} +``` + +## Possible Errors + +- The [standard errors](../errors.md#Standard-Errors). +- [not_found](../errors/not-found.md): A `not_found` error will be returned if there are no effects for a given ledger. diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/effects-for-operation.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/effects-for-operation.md new file mode 100644 index 0000000..5692ae7 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/effects-for-operation.md @@ -0,0 +1,134 @@ +--- +title: Effects for Operation +clientData: + laboratoryUrl: https://www.stellar.org/laboratory/#explorer?resource=effects&endpoint=for_operation +--- + +This endpoint represents all [effects](../resources/effect.md) that occurred as a result of a given [operation](../resources/operation.md). + +## Request + +``` +GET /operations/{id}/effects{?cursor,limit,order} +``` + +### Arguments + +| name | notes | description | example | +| ------ | ------- | ----------- | ------- | +| `id` | required, number | An operation ID | `77309415424`| +| `?cursor`| optional, default _null_ | A paging token, specifying where to start returning records from.| `12884905984`| +| `?order` | optional, string, default `asc`| The order in which to return rows, "asc" or "desc". | `asc` | +| `?limit` | optional, number, default `10` | Maximum number of records to return. | `200` | + +### curl Example Request + +```sh +curl "https://horizon-testnet.stellar.org/operations/77309415424/effects" +``` + +### JavaScript Example Request + +```javascript +var StellarSdk = require('stellar-sdk'); +var server = new StellarSdk.Server('https://horizon-testnet.stellar.org'); + +server.effects() + .forOperation("141733924865") + .call() + .then(function (effectResults) { + //page 1 + console.log(effectResults.records) + }) + .catch(function (err) { + console.log(err) + }) + +``` + +## Response + +This endpoint responds with a list of effects on the ledger as a result of a given operation. See [effect resource](../resources/effect.md) for reference. + +### Example Response + +```json +{ + "_embedded": { + "records": [ + { + "_links": { + "operation": { + "href": "/operations/141733924865" + }, + "precedes": { + "href": "/effects?cursor=141733924865-1\u0026order=asc" + }, + "succeeds": { + "href": "/effects?cursor=141733924865-1\u0026order=desc" + } + }, + "account": "GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K", + "paging_token": "141733924865-1", + "starting_balance": "10000000.0", + "type_i": 0, + "type": "account_created" + }, + { + "_links": { + "operation": { + "href": "/operations/141733924865" + }, + "precedes": { + "href": "/effects?cursor=141733924865-2\u0026order=asc" + }, + "succeeds": { + "href": "/effects?cursor=141733924865-2\u0026order=desc" + } + }, + "account": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", + "amount": "10000000.0", + "asset_type": "native", + "paging_token": "141733924865-2", + "type_i": 3, + "type": "account_debited" + }, + { + "_links": { + "operation": { + "href": "/operations/141733924865" + }, + "precedes": { + "href": "/effects?cursor=141733924865-3\u0026order=asc" + }, + "succeeds": { + "href": "/effects?cursor=141733924865-3\u0026order=desc" + } + }, + "account": "GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K", + "paging_token": "141733924865-3", + "public_key": "GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K", + "type_i": 10, + "type": "signer_created", + "weight": 2 + } + ] + }, + "_links": { + "next": { + "href": "/operations/141733924865/effects?order=asc\u0026limit=10\u0026cursor=141733924865-3" + }, + "prev": { + "href": "/operations/141733924865/effects?order=desc\u0026limit=10\u0026cursor=141733924865-1" + }, + "self": { + "href": "/operations/141733924865/effects?order=asc\u0026limit=10\u0026cursor=" + } + } +} +``` + +## Possible Errors + +- The [standard errors](../errors.md#Standard-Errors). +- [not_found](../errors/not-found.md): A `not_found` errors will be returned if there are no effects for operation whose ID matches the `id` argument. diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/effects-for-transaction.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/effects-for-transaction.md new file mode 100644 index 0000000..77e4a1e --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/effects-for-transaction.md @@ -0,0 +1,134 @@ +--- +title: Effects for Transaction +clientData: + laboratoryUrl: https://www.stellar.org/laboratory/#explorer?resource=effects&endpoint=for_transaction +--- + +This endpoint represents all [effects](../resources/effect.md) that occurred as a result of a given [transaction](../resources/transaction.md). + +## Request + +``` +GET /transactions/{hash}/effects{?cursor,limit,order} +``` + +## Arguments + +| name | notes | description | example | +| ------ | ------- | ----------- | ------- | +| `hash` | required, string | A transaction hash, hex-encoded | `6391dd190f15f7d1665ba53c63842e368f485651a53d8d852ed442a446d1c69a`| +| `?cursor`| optional, default _null_ | A paging token, specifying where to start returning records from.| `12884905984` | +| `?order` | optional, string, default `asc`| The order in which to return rows, "asc" or "desc". | `asc` | +| `?limit` | optional, number, default `10` | Maximum number of records to return. | `200` | + +### curl Example Request + +```sh +curl "https://horizon-testnet.stellar.org/transactions/6391dd190f15f7d1665ba53c63842e368f485651a53d8d852ed442a446d1c69a/effects" +``` + +### JavaScript Example Request + +```javascript +var StellarSdk = require('stellar-sdk'); +var server = new StellarSdk.Server('https://horizon-testnet.stellar.org'); + +server.effects() + .forTransaction("2ca4cb42fda85f4f0b4bc0a0dc6517a7f109761d0da784cb7c38fb6ee378b1b5") + .call() + .then(function (effectResults) { + //page 1 + console.log(effectResults.records) + }) + .catch(function (err) { + console.log(err) + }) + +``` + +## Response + +This endpoint responds with a list of effects on the ledger as a result of a given transaction. See [effect resource](../resources/effect.md) for reference. + +### Example Response + +```json +{ + "_embedded": { + "records": [ + { + "_links": { + "operation": { + "href": "/operations/141733924865" + }, + "precedes": { + "href": "/effects?cursor=141733924865-1\u0026order=asc" + }, + "succeeds": { + "href": "/effects?cursor=141733924865-1\u0026order=desc" + } + }, + "account": "GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K", + "paging_token": "141733924865-1", + "starting_balance": "10000000.0", + "type_i": 0, + "type": "account_created" + }, + { + "_links": { + "operation": { + "href": "/operations/141733924865" + }, + "precedes": { + "href": "/effects?cursor=141733924865-2\u0026order=asc" + }, + "succeeds": { + "href": "/effects?cursor=141733924865-2\u0026order=desc" + } + }, + "account": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", + "amount": "10000000.0", + "asset_type": "native", + "paging_token": "141733924865-2", + "type_i": 3, + "type": "account_debited" + }, + { + "_links": { + "operation": { + "href": "/operations/141733924865" + }, + "precedes": { + "href": "/effects?cursor=141733924865-3\u0026order=asc" + }, + "succeeds": { + "href": "/effects?cursor=141733924865-3\u0026order=desc" + } + }, + "account": "GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K", + "paging_token": "141733924865-3", + "public_key": "GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K", + "type_i": 10, + "type": "signer_created", + "weight": 2 + } + ] + }, + "_links": { + "next": { + "href": "/transactions/2a2beb163e2c68bd2377aab243d68225626d70263444a85556ec7271d4e46e03/effects?order=asc\u0026limit=10\u0026cursor=141733924865-3" + }, + "prev": { + "href": "/transactions/2a2beb163e2c68bd2377aab243d68225626d70263444a85556ec7271d4e46e03/effects?order=desc\u0026limit=10\u0026cursor=141733924865-1" + }, + "self": { + "href": "/transactions/2a2beb163e2c68bd2377aab243d68225626d70263444a85556ec7271d4e46e03/effects?order=asc\u0026limit=10\u0026cursor=" + } + } +} +``` + +## Errors + +- The [standard errors](../errors.md#Standard-Errors). +- [not_found](../errors/not-found.md): A `not_found` error will be returned if there are no effects for transaction whose hash matches the `hash` argument. diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/ledgers-all.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/ledgers-all.md new file mode 100644 index 0000000..ca2b864 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/ledgers-all.md @@ -0,0 +1,178 @@ +--- +title: All Ledgers +clientData: + laboratoryUrl: https://www.stellar.org/laboratory/#explorer?resource=ledgers&endpoint=all +--- + +This endpoint represents all [ledgers](../resources/ledger.md). +This endpoint can also be used in [streaming](../responses.md#streaming) mode so it is possible to use it to get notifications as ledgers are closed by the Stellar network. +If called in streaming mode Horizon will start at the earliest known ledger unless a `cursor` is set. In that case it will start from the `cursor`. You can also set `cursor` value to `now` to only stream ledgers created since your request time. + +## Request + +``` +GET /ledgers{?cursor,limit,order} +``` + +### Arguments + +| name | notes | description | example | +| ---- | ----- | ----------- | ------- | +| `?cursor` | optional, any, default _null_ | A paging token, specifying where to start returning records from. When streaming this can be set to `now` to stream object created since your request time. | `12884905984` | +| `?order` | optional, string, default `asc` | The order in which to return rows, "asc" or "desc". | `asc` | +| `?limit` | optional, number, default: `10` | Maximum number of records to return. | `200` | + +### curl Example Request + +```sh +# Retrieve the 200 latest ledgers, ordered chronologically +curl "https://horizon-testnet.stellar.org/ledgers?limit=200&order=desc" +``` + +### JavaScript Example Request + +```js +server.ledgers() + .call() + .then(function (ledgerResult) { + // page 1 + console.log(ledgerResult.records) + return ledgerResult.next() + }) + .then(function (ledgerResult) { + // page 2 + console.log(ledgerResult.records) + }) + .catch(function(err) { + console.log(err) + }) +``` +## Response + +This endpoint responds with a list of ledgers. See [ledger resource](../resources/ledger.md) for reference. + +### Example Response + +```json +{ + "_embedded": { + "records": [ + { + "_links": { + "effects": { + "href": "/ledgers/1/effects/{?cursor,limit,order}", + "templated": true + }, + "operations": { + "href": "/ledgers/1/operations/{?cursor,limit,order}", + "templated": true + }, + "self": { + "href": "/ledgers/1" + }, + "transactions": { + "href": "/ledgers/1/transactions/{?cursor,limit,order}", + "templated": true + } + }, + "id": "e8e10918f9c000c73119abe54cf089f59f9015cc93c49ccf00b5e8b9afb6e6b1", + "paging_token": "4294967296", + "hash": "e8e10918f9c000c73119abe54cf089f59f9015cc93c49ccf00b5e8b9afb6e6b1", + "sequence": 1, + "transaction_count": 0, + "operation_count": 0, + "closed_at": "1970-01-01T00:00:00Z", + "total_coins": "100000000000.0000000", + "fee_pool": "0.0000000", + "base_fee": 100, + "base_reserve": "10.0000000", + "max_tx_set_size": 50 + }, + { + "_links": { + "effects": { + "href": "/ledgers/2/effects/{?cursor,limit,order}", + "templated": true + }, + "operations": { + "href": "/ledgers/2/operations/{?cursor,limit,order}", + "templated": true + }, + "self": { + "href": "/ledgers/2" + }, + "transactions": { + "href": "/ledgers/2/transactions/{?cursor,limit,order}", + "templated": true + } + }, + "id": "e12e5809ab8c59d8256e691cb48a024dd43960bc15902d9661cd627962b2bc71", + "paging_token": "8589934592", + "hash": "e12e5809ab8c59d8256e691cb48a024dd43960bc15902d9661cd627962b2bc71", + "prev_hash": "e8e10918f9c000c73119abe54cf089f59f9015cc93c49ccf00b5e8b9afb6e6b1", + "sequence": 2, + "transaction_count": 0, + "operation_count": 0, + "closed_at": "2015-07-16T23:49:00Z", + "total_coins": "100000000000.0000000", + "fee_pool": "0.0000000", + "base_fee": 100, + "base_reserve": "10.0000000", + "max_tx_set_size": 100 + } + ] + }, + "_links": { + "next": { + "href": "/ledgers?order=asc&limit=2&cursor=8589934592" + }, + "prev": { + "href": "/ledgers?order=desc&limit=2&cursor=4294967296" + }, + "self": { + "href": "/ledgers?order=asc&limit=2&cursor=" + } + } +} +``` + +### Example Streaming Event + +```json +{ + "_links": { + "effects": { + "href": "/ledgers/69859/effects/{?cursor,limit,order}", + "templated": true + }, + "operations": { + "href": "/ledgers/69859/operations/{?cursor,limit,order}", + "templated": true + }, + "self": { + "href": "/ledgers/69859" + }, + "transactions": { + "href": "/ledgers/69859/transactions/{?cursor,limit,order}", + "templated": true + } + }, + "id": "4db1e4f145e9ee75162040d26284795e0697e2e84084624e7c6c723ebbf80118", + "paging_token": "300042120331264", + "hash": "4db1e4f145e9ee75162040d26284795e0697e2e84084624e7c6c723ebbf80118", + "prev_hash": "4b0b8bace3b2438b2404776ce57643966855487ba6384724a3c664c7aa4cd9e4", + "sequence": 69859, + "transaction_count": 0, + "operation_count": 0, + "closed_at": "2015-07-20T15:51:52Z", + "total_coins": "100000000000.0000000", + "fee_pool": "0.0025600", + "base_fee": 100, + "base_reserve": "10.0000000", + "max_tx_set_size": 50 +} +``` + +## Errors + +- The [standard errors](../errors.md#Standard_Errors). diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/ledgers-single.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/ledgers-single.md new file mode 100644 index 0000000..5b145e4 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/ledgers-single.md @@ -0,0 +1,88 @@ +--- +title: Ledger Details +clientData: + laboratoryUrl: https://www.stellar.org/laboratory/#explorer?resource=ledgers&endpoint=single +--- + +The ledger details endpoint provides information on a single [ledger](../resources/ledger.md). + +## Request + +``` +GET /ledgers/{sequence} +``` + +### Arguments + +| name | notes | description | example | +| ------ | ------- | ----------- | ------- | +| `sequence` | required, number | Ledger Sequence | `69859` | + +### curl Example Request + +```sh +curl "https://horizon-testnet.stellar.org/ledgers/69859" +``` + +### JavaScript Example Request + +```js +var StellarSdk = require('stellar-sdk') +var server = new StellarSdk.Server('https://horizon-testnet.stellar.org'); + +server.ledgers() + .ledger('69858') + .call() + .then(function(ledgerResult) { + console.log(ledgerResult) + }) + .catch(function(err) { + console.log(err) + }) + +``` +## Response + +This endpoint responds with a single Ledger. See [ledger resource](../resources/ledger.md) for reference. + +### Example Response + +```json +{ + "_links": { + "effects": { + "href": "/ledgers/69859/effects/{?cursor,limit,order}", + "templated": true + }, + "operations": { + "href": "/ledgers/69859/operations/{?cursor,limit,order}", + "templated": true + }, + "self": { + "href": "/ledgers/69859" + }, + "transactions": { + "href": "/ledgers/69859/transactions/{?cursor,limit,order}", + "templated": true + } + }, + "id": "4db1e4f145e9ee75162040d26284795e0697e2e84084624e7c6c723ebbf80118", + "paging_token": "300042120331264", + "hash": "4db1e4f145e9ee75162040d26284795e0697e2e84084624e7c6c723ebbf80118", + "prev_hash": "4b0b8bace3b2438b2404776ce57643966855487ba6384724a3c664c7aa4cd9e4", + "sequence": 69859, + "transaction_count": 0, + "operation_count": 0, + "closed_at": "2015-07-20T15:51:52Z", + "total_coins": "100000000000.0000000", + "fee_pool": "0.0025600", + "base_fee": 100, + "base_reserve": "10.0000000", + "max_tx_set_size": 50 +} +``` + +## Errors + +- The [standard errors](../errors.md#Standard-Errors). +- [not_found](../errors/not-found.md): A `not_found` error will be returned if there is no ledger whose sequence number matches the `sequence` argument. diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/offers-for-account.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/offers-for-account.md new file mode 100644 index 0000000..f7cbabe --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/offers-for-account.md @@ -0,0 +1,133 @@ +--- +title: Offers for Account +clientData: + laboratoryUrl: https://www.stellar.org/laboratory/#explorer?resource=offers&endpoint=for_account +--- + +People on the Stellar network can make [offers](../resources/offer.md) to buy or sell assets. This endpoint represents all the offers a particular account makes. + + +## Request + +``` +GET /accounts/{account}/offers{?cursor,limit,order} +``` + +### Arguments + +| name | notes | description | example | +| ---- | ----- | ----------- | ------- | +| `account` | required, string | Account ID | `GA2HGBJIJKI6O4XEM7CZWY5PS6GKSXL6D34ERAJYQSPYA6X6AI7HYW36` | +| `?cursor` | optional, any, default _null_ | A paging token, specifying where to start returning records from. | `12884905984` | +| `?order` | optional, string, default `asc` | The order in which to return rows, "asc" or "desc". | `asc` | +| `?limit` | optional, number, default: `10` | Maximum number of records to return. | `200` | + +### curl Example Request + +```sh +curl "https://horizon-testnet.stellar.org/accounts/GCJ34JYMXNI7N55YREWAACMMZECOMTPIYDTFCQBWPUP7BLJQDDTVGUW4/offers" +``` + +### JavaScript Example Request + +```js +var StellarSdk = require('stellar-sdk'); +var server = new StellarSdk.Server('https://horizon-testnet.stellar.org'); + +server.offers('accounts', 'GCJ34JYMXNI7N55YREWAACMMZECOMTPIYDTFCQBWPUP7BLJQDDTVGUW4') + .call() + .then(function (offerResult) { + console.log(offerResult); + }) + .catch(function (err) { + console.error(err); + }) +``` + +## Response + +The list of offers. + +### Example Response + +```js +{ + "_links": { + "self": { + "href": "https://horizon-testnet.stellar.org/accounts/GCJ34JYMXNI7N55YREWAACMMZECOMTPIYDTFCQBWPUP7BLJQDDTVGUW4/offers?order=asc&limit=10&cursor=" + }, + "next": { + "href": "https://horizon-testnet.stellar.org/accounts/GCJ34JYMXNI7N55YREWAACMMZECOMTPIYDTFCQBWPUP7BLJQDDTVGUW4/offers?order=asc&limit=10&cursor=122" + }, + "prev": { + "href": "https://horizon-testnet.stellar.org/accounts/GCJ34JYMXNI7N55YREWAACMMZECOMTPIYDTFCQBWPUP7BLJQDDTVGUW4/offers?order=desc&limit=10&cursor=121" + } + }, + "_embedded": { + "records": [ + { + "_links": { + "self": { + "href": "https://horizon-testnet.stellar.org/offers/121" + }, + "offer_maker": { + "href": "https://horizon-testnet.stellar.org/accounts/GCJ34JYMXNI7N55YREWAACMMZECOMTPIYDTFCQBWPUP7BLJQDDTVGUW4" + } + }, + "id": 121, + "paging_token": "121", + "seller": "GCJ34JYMXNI7N55YREWAACMMZECOMTPIYDTFCQBWPUP7BLJQDDTVGUW4", + "selling": { + "asset_type": "credit_alphanum4", + "asset_code": "BAR", + "asset_issuer": "GBAUUA74H4XOQYRSOW2RZUA4QL5PB37U3JS5NE3RTB2ELJVMIF5RLMAG" + }, + "buying": { + "asset_type": "credit_alphanum4", + "asset_code": "FOO", + "asset_issuer": "GBAUUA74H4XOQYRSOW2RZUA4QL5PB37U3JS5NE3RTB2ELJVMIF5RLMAG" + }, + "amount": "23.6692509", + "price_r": { + "n": 387, + "d": 50 + }, + "price": "7.7400000" + }, + { + "_links": { + "self": { + "href": "https://horizon-testnet.stellar.org/offers/122" + }, + "offer_maker": { + "href": "https://horizon-testnet.stellar.org/accounts/GCJ34JYMXNI7N55YREWAACMMZECOMTPIYDTFCQBWPUP7BLJQDDTVGUW4" + } + }, + "id": 122, + "paging_token": "122", + "seller": "GCJ34JYMXNI7N55YREWAACMMZECOMTPIYDTFCQBWPUP7BLJQDDTVGUW4", + "selling": { + "asset_type": "credit_alphanum4", + "asset_code": "BAR", + "asset_issuer": "GBAUUA74H4XOQYRSOW2RZUA4QL5PB37U3JS5NE3RTB2ELJVMIF5RLMAG" + }, + "buying": { + "asset_type": "credit_alphanum4", + "asset_code": "FOO", + "asset_issuer": "GBAUUA74H4XOQYRSOW2RZUA4QL5PB37U3JS5NE3RTB2ELJVMIF5RLMAG" + }, + "amount": "72.0000000", + "price_r": { + "n": 779, + "d": 100 + }, + "price": "7.7900000" + } + ] + } +} +``` + +## Possible Errors + +- The [standard errors](../errors.md#Standard_Errors). diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/operations-all.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/operations-all.md new file mode 100644 index 0000000..9c41ddb --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/operations-all.md @@ -0,0 +1,167 @@ +--- +title: All Operations +clientData: + laboratoryUrl: https://www.stellar.org/laboratory/#explorer?resource=operations&endpoint=all +--- + +This endpoint represents all [operations](../resources/operation.md) that are part of validated [transactions](../resources/transaction.md). +This endpoint can also be used in [streaming](../responses.md#streaming) mode so it is possible to use it to listen as operations are processed in the Stellar network. +If called in streaming mode Horizon will start at the earliest known operation unless a `cursor` is set. In that case it will start from the `cursor`. You can also set `cursor` value to `now` to only stream operations created since your request time. + +## Request + +``` +GET /operations{?cursor,limit,order} +``` + +### Arguments + +| name | notes | description | example | +| ---- | ----- | ----------- | ------- | +| `?cursor` | optional, any, default _null_ | A paging token, specifying where to start returning records from. When streaming this can be set to `now` to stream object created since your request time. | `12884905984` | +| `?order` | optional, string, default `asc` | The order in which to return rows, "asc" or "desc". | `asc` | +| `?limit` | optional, number, default: `10` | Maximum number of records to return. | `200` | + +### curl Example Request + +```sh +curl "https://horizon-testnet.stellar.org/operations?limit=200&order=desc" +``` + +### JavaScript Example Request + +```js +var StellarSdk = require('stellar-sdk'); +var server = new StellarSdk.Server('https://horizon-testnet.stellar.org'); + +server.operations() + .call() + .then(function (operationsResult) { + //page 1 + console.log(operationsResult.records) + return operationsResult.next() + }) + .then(function (operationsResult) { + //page 2 + console.log(operationsResult.records) + }) + .catch(function (err) { + console.log(err) + }) +``` + +## Response + +This endpoint responds with a list of operations. See [operation resource](../resources/operation.md) for reference. + +### Example Response + +```json +{ + "_embedded": { + "records": [ + { + "_links": { + "effects": { + "href": "/operations/77309415424/effects/{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/operations?cursor=77309415424&order=asc" + }, + "self": { + "href": "/operations/77309415424" + }, + "succeeds": { + "href": "/operations?cursor=77309415424&order=desc" + }, + "transactions": { + "href": "/transactions/77309415424" + } + }, + "account": "GBIA4FH6TV64KSPDAJCNUQSM7PFL4ILGUVJDPCLUOPJ7ONMKBBVUQHRO", + "funder": "GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ", + "id": 77309415424, + "paging_token": "77309415424", + "starting_balance": 1e+14, + "type_i": 0, + "type": "create_account" + }, + { + "_links": { + "effects": { + "href": "/operations/463856472064/effects/{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/operations?cursor=463856472064&order=asc" + }, + "self": { + "href": "/operations/463856472064" + }, + "succeeds": { + "href": "/operations?cursor=463856472064&order=desc" + }, + "transactions": { + "href": "/transactions/463856472064" + } + }, + "account": "GC2ADYAIPKYQRGGUFYBV2ODJ54PY6VZUPKNCWWNX2C7FCJYKU4ZZNKVL", + "funder": "GBIA4FH6TV64KSPDAJCNUQSM7PFL4ILGUVJDPCLUOPJ7ONMKBBVUQHRO", + "id": 463856472064, + "paging_token": "463856472064", + "starting_balance": 1e+09, + "type_i": 0, + "type": "create_account" + } + ] + }, + "_links": { + "next": { + "href": "/operations?order=asc&limit=2&cursor=463856472064" + }, + "prev": { + "href": "/operations?order=desc&limit=2&cursor=77309415424" + }, + "self": { + "href": "/operations?order=asc&limit=2&cursor=" + } + } +} +``` + +### Example Streaming Event + +```json +{ + "_links": { + "effects": { + "href": "/operations/77309415424/effects/{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/operations?cursor=77309415424&order=asc" + }, + "self": { + "href": "/operations/77309415424" + }, + "succeeds": { + "href": "/operations?cursor=77309415424&order=desc" + }, + "transactions": { + "href": "/transactions/77309415424" + } + }, + "account": "GBIA4FH6TV64KSPDAJCNUQSM7PFL4ILGUVJDPCLUOPJ7ONMKBBVUQHRO", + "funder": "GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ", + "id": 77309415424, + "paging_token": "77309415424", + "starting_balance": 1e+14, + "type_i": 0, + "type": "create_account" +} +``` + +## Possible Errors + +- The [standard errors](../errors.md#Standard_Errors). diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/operations-for-account.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/operations-for-account.md new file mode 100644 index 0000000..91a31a7 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/operations-for-account.md @@ -0,0 +1,139 @@ +--- +title: Operations for Account +clientData: + laboratoryUrl: https://www.stellar.org/laboratory/#explorer?resource=operations&endpoint=for_account +--- + +This endpoint represents all [operations](../resources/operation.md) that were included in valid [transactions](../resources/transaction.md) that affected a particular [account](../resources/account.md). + +This endpoint can also be used in [streaming](../responses.md#streaming) mode so it is possible to use it to listen for new operations that affect a given account as they happen. +If called in streaming mode Horizon will start at the earliest known operation unless a `cursor` is set. In that case it will start from the `cursor`. You can also set `cursor` value to `now` to only stream operations created since your request time. + +## Request + +``` +GET /accounts/{account}/operations{?cursor,limit,order} +``` + +### Arguments + +| name | notes | description | example | +| ------ | ------- | ----------- | ------- | +| `account`| required, string | Account ID | `GA2HGBJIJKI6O4XEM7CZWY5PS6GKSXL6D34ERAJYQSPYA6X6AI7HYW36`| +| `?cursor`| optional, default _null_ | A paging token, specifying where to start returning records from. When streaming this can be set to `now` to stream object created since your request time. | `12884905984` | +| `?order` | optional, string, default `asc`| The order in which to return rows, "asc" or "desc". | `asc` | +| `?limit` | optional, number, default `10` | Maximum number of records to return. | `200` | + +### curl Example Request + +```sh +curl "https://horizon-testnet.stellar.org/accounts/GA2HGBJIJKI6O4XEM7CZWY5PS6GKSXL6D34ERAJYQSPYA6X6AI7HYW36/operations" +``` + +### JavaScript Example Request + +```js +var StellarSdk = require('stellar-sdk'); +var server = new StellarSdk.Server('https://horizon-testnet.stellar.org'); + +server.operations() + .forAccount("GAKLBGHNHFQ3BMUYG5KU4BEWO6EYQHZHAXEWC33W34PH2RBHZDSQBD75") + .call() + .then(function (operationsResult) { + console.log(operationsResult.records) + }) + .catch(function (err) { + console.log(err) + }) +``` + +## Response + +This endpoint responds with a list of operations that affected the given account. See [operation resource](../resources/operation.md) for reference. + +### Example Response + +```json +{ + "_embedded": { + "records": [ + { + "_links": { + "effects": { + "href": "/operations/46316927324160/effects/{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/operations?cursor=46316927324160&order=asc" + }, + "self": { + "href": "/operations/46316927324160" + }, + "succeeds": { + "href": "/operations?cursor=46316927324160&order=desc" + }, + "transactions": { + "href": "/transactions/46316927324160" + } + }, + "account": "GBBM6BKZPEHWYO3E3YKREDPQXMS4VK35YLNU7NFBRI26RAN7GI5POFBB", + "funder": "GBIA4FH6TV64KSPDAJCNUQSM7PFL4ILGUVJDPCLUOPJ7ONMKBBVUQHRO", + "id": 46316927324160, + "paging_token": "46316927324160", + "starting_balance": 1e+09, + "type_i": 0, + "type": "create_account" + } + ] + }, + "_links": { + "next": { + "href": "/accounts/GBBM6BKZPEHWYO3E3YKREDPQXMS4VK35YLNU7NFBRI26RAN7GI5POFBB/operations?order=asc&limit=10&cursor=46316927324160" + }, + "prev": { + "href": "/accounts/GBBM6BKZPEHWYO3E3YKREDPQXMS4VK35YLNU7NFBRI26RAN7GI5POFBB/operations?order=desc&limit=10&cursor=46316927324160" + }, + "self": { + "href": "/accounts/GBBM6BKZPEHWYO3E3YKREDPQXMS4VK35YLNU7NFBRI26RAN7GI5POFBB/operations?order=asc&limit=10&cursor=" + } + } +} +``` + +### Example Streaming Event + +```json +{ + "_links": { + "effects": { + "href": "/operations/77309415424/effects/{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/operations?cursor=77309415424&order=asc" + }, + "self": { + "href": "/operations/77309415424" + }, + "succeeds": { + "href": "/operations?cursor=77309415424&order=desc" + }, + "transactions": { + "href": "/transactions/77309415424" + } + }, + "account": "GBIA4FH6TV64KSPDAJCNUQSM7PFL4ILGUVJDPCLUOPJ7ONMKBBVUQHRO", + "funder": "GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ", + "id": 77309415424, + "paging_token": "77309415424", + "starting_balance": 1e+14, + "type_i": 0, + "type": "create_account" +} +``` + + +## Possible Errors + +- The [standard errors](../errors.md#Standard-Errors). +- [not_found](../errors/not-found.md): A `not_found` error will be returned if there is no account whose ID matches the `account` argument. diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/operations-for-ledger.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/operations-for-ledger.md new file mode 100644 index 0000000..7afa014 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/operations-for-ledger.md @@ -0,0 +1,103 @@ +--- +title: Operations for Ledger +clientData: + laboratoryUrl: https://www.stellar.org/laboratory/#explorer?resource=operations&endpoint=for_ledger +--- + +This endpoint returns all [operations](../resources/operation.md) that occurred in a given [ledger](../resources/ledger.md). + +## Request + +``` +GET /ledgers/{id}/operations{?cursor,limit,order} +``` + +### Arguments + +| name | notes | description | example | +| ------ | ------- | ----------- | ------- | +| `id` | required, number | Ledger ID | `69859` | +| `?cursor`| optional, default _null_ | A paging token, specifying where to start returning records from.| `12884905984`| +| `?order` | optional, string, default `asc`| The order in which to return rows, "asc" or "desc". | `asc` | +| `?limit` | optional, number, default `10` | Maximum number of records to return. | `200` | + +### curl Example Request + +```sh +curl "https://horizon-testnet.stellar.org/ledgers/69859/operations" +``` + +### JavaScript Example Request + +```js +var StellarSdk = require('stellar-sdk'); +var server = new StellarSdk.Server('https://horizon-testnet.stellar.org'); + +server.operations() + .forLedger("10866") + .call() + .then(function (operationsResult) { + console.log(operationsResult.records); + }) + .catch(function (err) { + console.log(err) + }) +``` + +## Response + +This endpoint responds with a list of operations in a given ledger. See [operation resource](../resources/operation.md) for reference. + +### Example Response + +```json +{ + "_embedded": { + "records": [ + { + "_links": { + "effects": { + "href": "/operations/77309415424/effects/{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/operations?cursor=77309415424&order=asc" + }, + "self": { + "href": "/operations/77309415424" + }, + "succeeds": { + "href": "/operations?cursor=77309415424&order=desc" + }, + "transactions": { + "href": "/transactions/77309415424" + } + }, + "account": "GBIA4FH6TV64KSPDAJCNUQSM7PFL4ILGUVJDPCLUOPJ7ONMKBBVUQHRO", + "funder": "GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ", + "id": 77309415424, + "paging_token": "77309415424", + "starting_balance": 1e+14, + "type_i": 0, + "type": "create_account" + } + ] + }, + "_links": { + "next": { + "href": "/ledgers/18/operations?order=asc&limit=10&cursor=77309415424" + }, + "prev": { + "href": "/ledgers/18/operations?order=desc&limit=10&cursor=77309415424" + }, + "self": { + "href": "/ledgers/18/operations?order=asc&limit=10&cursor=" + } + } +} +``` + +## Possible Errors + +- The [standard errors](../errors.md#Standard-Errors). +- [not_found](../errors/not-found.md): A `not_found` error will be returned if there is no ledger whose ID matches the `id` argument. diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/operations-for-transaction.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/operations-for-transaction.md new file mode 100644 index 0000000..4f4bc4e --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/operations-for-transaction.md @@ -0,0 +1,103 @@ +--- +title: Operations for Transaction +clientData: + laboratoryUrl: https://www.stellar.org/laboratory/#explorer?resource=operations&endpoint=for_transaction +--- + +This endpoint represents all [operations](../resources/operation.md) that are part of a given [transaction](../resources/transaction.md). + +## Request + +``` +GET /transactions/{hash}/operations{?cursor,limit,order} +``` + +## Arguments + +| name | notes | description | example | +| ------ | ------- | ----------- | ------- | +| `hash` | required, string | A transaction hash, hex-encoded | `6391dd190f15f7d1665ba53c63842e368f485651a53d8d852ed442a446d1c69a`| +| `?cursor`| optional, default _null_ | A paging token, specifying where to start returning records from.| `12884905984` | +| `?order` | optional, string, default `asc`| The order in which to return rows, "asc" or "desc". | `asc` | +| `?limit` | optional, number, default `10` | Maximum number of records to return. | `200` | + +### curl Example Request + +```sh +curl "https://horizon-testnet.stellar.org/transactions/6391dd190f15f7d1665ba53c63842e368f485651a53d8d852ed442a446d1c69a/operations" +``` + +### JavaScript Example Request + +```js +var StellarSdk = require('stellar-sdk'); +var server = new StellarSdk.Server('https://horizon-testnet.stellar.org'); + +server.operations() + .forTransaction("3c8ef808df9d5d240ba0d495629df9da5653b1be2daf05d43b49c5bcbfe099bd") + .call() + .then(function (operationsResult) { + console.log(operationsResult.records); + }) + .catch(function (err) { + console.log(err) + }) +``` + +## Response + +This endpoint responds with a list of operations that are part of a given transaction. See [operation resource](../resources/operation.md) for reference. + +### Example Response + +```json +{ + "_embedded": { + "records": [ + { + "_links": { + "effects": { + "href": "/operations/352573865332736/effects/{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/operations?cursor=352573865332736&order=asc" + }, + "self": { + "href": "/operations/352573865332736" + }, + "succeeds": { + "href": "/operations?cursor=352573865332736&order=desc" + }, + "transactions": { + "href": "/transactions/352573865332736" + } + }, + "account": "GBU3FDYZK5VTU7A3SIGC443E5OV6MXUI5DXOI22SPT3OPK7AGIIWOZLF", + "funder": "GBIA4FH6TV64KSPDAJCNUQSM7PFL4ILGUVJDPCLUOPJ7ONMKBBVUQHRO", + "id": 352573865332736, + "paging_token": "352573865332736", + "starting_balance": 1e+09, + "type_i": 0, + "type": "create_account" + } + ] + }, + "_links": { + "next": { + "href": "/transactions/e648b8f9b00c6a04267b3d204c97d08181a13a9b8f3dce8ba28e96b03114b149/operations?order=asc&limit=10&cursor=352573865332736" + }, + "prev": { + "href": "/transactions/e648b8f9b00c6a04267b3d204c97d08181a13a9b8f3dce8ba28e96b03114b149/operations?order=desc&limit=10&cursor=352573865332736" + }, + "self": { + "href": "/transactions/e648b8f9b00c6a04267b3d204c97d08181a13a9b8f3dce8ba28e96b03114b149/operations?order=asc&limit=10&cursor=" + } + } +} +``` + +## Possible Errors + +- The [standard errors](../errors.md#Standard-Errors). +- [not_found](../errors/not-found.md): A `not_found` error will be returned if there is no account whose ID matches the `hash` argument. diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/operations-single.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/operations-single.md new file mode 100644 index 0000000..05ec455 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/operations-single.md @@ -0,0 +1,85 @@ +--- +title: Operation Details +clientData: + laboratoryUrl: https://www.stellar.org/laboratory/#explorer?resource=operations&endpoint=single +--- + +The operation details endpoint provides information on a single [operation](../resources/operation.md). The operation ID provided in the `id` argument specifies which operation to load. + +## Request + +``` +GET /operations/{id} +``` + +### Arguments + +| name | notes | description | example | +| ------ | ------- | ----------- | ------- | +| `id` | required, number | An operation ID. | 77309415424 | + +### curl Example Request + +```sh +curl https://horizon-testnet.stellar.org/operations/77309415424 +``` + +### JavaScript Example Request + +```js +var StellarSdk = require('stellar-sdk'); +var server = new StellarSdk.Server('https://horizon-testnet.stellar.org'); + +server.operations() + .operation('77309415424') + .call() + .then(function (operationsResult) { + console.log(operationsResult) + }) + .catch(function (err) { + console.log(err) + }) + + +``` + +## Response + +This endpoint responds with a single Operation. See [operation resource](../resources/operation.md) for reference. + +### Example Response + +```json +{ + "_links": { + "effects": { + "href": "/operations/77309415424/effects/{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/operations?cursor=77309415424&order=asc" + }, + "self": { + "href": "/operations/77309415424" + }, + "succeeds": { + "href": "/operations?cursor=77309415424&order=desc" + }, + "transactions": { + "href": "/transactions/77309415424" + } + }, + "account": "GBIA4FH6TV64KSPDAJCNUQSM7PFL4ILGUVJDPCLUOPJ7ONMKBBVUQHRO", + "funder": "GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ", + "id": 77309415424, + "paging_token": "77309415424", + "starting_balance": 1e+14, + "type_i": 0, + "type": "create_account" +} +``` + +## Possible Errors + +- The [standard errors](../errors.md#Standard-Errors). +- [not_found](../errors/not-found.md): A `not_found` error will be returned if there is no whose ID matches the `account` argument. diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/orderbook-details.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/orderbook-details.md new file mode 100644 index 0000000..1917bfd --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/orderbook-details.md @@ -0,0 +1,87 @@ +--- +title: Orderbook Details +clientData: + laboratoryUrl: https://www.stellar.org/laboratory/#explorer?resource=order_book&endpoint=details +--- + +People on the Stellar network can make [offers](../resources/offer.md) to buy or sell assets. These offers are summarized by the assets being bought and sold in [orderbooks](../resources/orderbook.md). + +Horizon will return, for each orderbook, a summary of the orderbook and the bids and asks associated with that orderbook. + +## Request + +``` +GET /order_book?selling_asset_type={selling_asset_type}&selling_asset_code={selling_asset_code}&selling_asset_issuer={selling_asset_issuer}&buying_asset_type={buying_asset_type}&buying_asset_code={buying_asset_code}&buying_asset_issuer={buying_asset_issuer}&limit={limit} +``` + +### Arguments + +| name | notes | description | example | +| ---- | ----- | ----------- | ------- | +| `selling_asset_type` | required, string | Type of the Asset being sold | `native` | +| `selling_asset_code` | optional, string | Code of the Asset being sold | `USD` | +| `selling_asset_issuer` | optional, string | Account ID of the issuer of the Asset being sold | `GA2HGBJIJKI6O4XEM7CZWY5PS6GKSXL6D34ERAJYQSPYA6X6AI7HYW36` | +| `buying_asset_type` | required, string | Type of the Asset being bought | `credit_alphanum4` | +| `buying_asset_code` | optional, string | Code of the Asset being bought | `BTC` | +| `buying_asset_issuer` | optional, string | Account ID of the issuer of the Asset being bought | `GD6VWBXI6NY3AOOR55RLVQ4MNIDSXE5JSAVXUTF35FRRI72LYPI3WL6Z` | +| `limit` | optional, string | Limit the number of items returned | `20` | + +### curl Example Request + +```sh +curl "https://horizon-testnet.stellar.org/order_book?selling_asset_type=native&buying_asset_type=credit_alphanum4&buying_asset_code=FOO&buying_asset_issuer=GBAUUA74H4XOQYRSOW2RZUA4QL5PB37U3JS5NE3RTB2ELJVMIF5RLMAG&limit=20" +``` + +### JavaScript Example Request + +```js +var StellarSdk = require('stellar-sdk'); +var server = new StellarSdk.Server('https://horizon-testnet.stellar.org'); + +server.orderbook(new StellarSdk.Asset.native(), new StellarSdk.Asset('FOO', 'GBAUUA74H4XOQYRSOW2RZUA4QL5PB37U3JS5NE3RTB2ELJVMIF5RLMAG')) + .call() + .then(function(resp) { console.log(resp); }) + .catch(function(err) { console.log(err); }) +``` + +## Response + +The summary of the orderbook and its bids and asks. + +## Example Response +```json +{ + "bids": [ + { + "price_r": { + "n": 100000000, + "d": 12953367 + }, + "price": "7.7200005", + "amount": "12.0000000" + } + ], + "asks": [ + { + "price_r": { + "n": 194, + "d": 25 + }, + "price": "7.7600000", + "amount": "238.4804125" + } + ], + "base": { + "asset_type": "native" + }, + "counter": { + "asset_type": "credit_alphanum4", + "asset_code": "FOO", + "asset_issuer": "GBAUUA74H4XOQYRSOW2RZUA4QL5PB37U3JS5NE3RTB2ELJVMIF5RLMAG" + } +} +``` + +## Possible Errors + +- The [standard errors](../errors.md#Standard_Errors). diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/path-finding.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/path-finding.md new file mode 100644 index 0000000..9069191 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/path-finding.md @@ -0,0 +1,115 @@ +--- +title: Find Payment Paths +clientData: + laboratoryUrl: https://www.stellar.org/laboratory/#explorer?resource=paths&endpoint=all +--- + +The Stellar Network allows payments to be made across assets through _path payments_. A path payment specifies a series of assets to route a payment through, from source asset (the asset debited from the payer) to destination asset (the asset credited to the payee). + +A path search is specified using: + +- The destination account id +- The source account id +- The asset and amount that the destination account should receive + +As part of the search, horizon will load a list of assets available to the source account id and will find any payment paths from those source assets to the desired destination asset. The search's amount parameter will be used to determine if there a given path can satisfy a payment of the desired amount. + +## Request + +``` +GET /paths?destination_account={da}&source_account={sa}&destination_asset_type={at}&destination_asset_code={ac}&destination_asset_issuer={di}&destination_amount={amount} +``` + +## Arguments + +| name | notes | description | example | +|-----------------------------|--------|----------------------------------------------------------------------------------------------------|------------------------------------------------------------| +| `?destination_account` | string | The destination account that any returned path should use | `GAEDTJ4PPEFVW5XV2S7LUXBEHNQMX5Q2GM562RJGOQG7GVCE5H3HIB4V` | +| `?destination_asset_type` | string | The type of the destination asset | `credit_alphanum4` | +| `?destination_asset_code` | string | The code for the destination, if destination_asset_type is not "native" | `GAEDTJ4PPEFVW5XV2S7LUXBEHNQMX5Q2GM562RJGOQG7GVCE5H3HIB4V` | +| `?destination_asset_issuer` | string | The issuer for the destination, if destination_asset_type is not "native" | `GAEDTJ4PPEFVW5XV2S7LUXBEHNQMX5Q2GM562RJGOQG7GVCE5H3HIB4V` | +| `?destination_amount` | string | The amount, denominated in the destination asset, that any returned path should be able to satisfy | `10.1` | +| `?source_account` | string | The sender's account id. Any returned path must use a source that the sender can hold | `GARSFJNXJIHO6ULUBK3DBYKVSIZE7SC72S5DYBCHU7DKL22UXKVD7MXP` | + + + +### curl Example Request + +```sh +curl "https://horizon-testnet.stellar.org/paths?destination_account=GAEDTJ4PPEFVW5XV2S7LUXBEHNQMX5Q2GM562RJGOQG7GVCE5H3HIB4V&source_account=GARSFJNXJIHO6ULUBK3DBYKVSIZE7SC72S5DYBCHU7DKL22UXKVD7MXP&destination_asset_type=credit_alphanum4&destination_asset_code=EUR&destination_asset_issuer=GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN&destination_amount=20" +``` + +## Response + +This endpoint responds with a page of path resources. See [path resource](../resources/path.md) for reference. + +### Example Response + +```json +{ + "_embedded": { + "records": [ + { + "destination_amount": "20.0000000", + "destination_asset_code": "EUR", + "destination_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", + "destination_asset_type": "credit_alphanum4", + "path": [], + "source_amount": "30.0000000", + "source_asset_code": "USD", + "source_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", + "source_asset_type": "credit_alphanum4" + }, + { + "destination_amount": "20.0000000", + "destination_asset_code": "EUR", + "destination_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", + "destination_asset_type": "credit_alphanum4", + "path": [ + { + "asset_code": "1", + "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", + "asset_type": "credit_alphanum4" + } + ], + "source_amount": "20.0000000", + "source_asset_code": "USD", + "source_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", + "source_asset_type": "credit_alphanum4" + }, + { + "destination_amount": "20.0000000", + "destination_asset_code": "EUR", + "destination_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", + "destination_asset_type": "credit_alphanum4", + "path": [ + { + "asset_code": "21", + "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", + "asset_type": "credit_alphanum4" + }, + { + "asset_code": "22", + "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", + "asset_type": "credit_alphanum4" + } + ], + "source_amount": "20.0000000", + "source_asset_code": "USD", + "source_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", + "source_asset_type": "credit_alphanum4" + } + ] + }, + "_links": { + "self": { + "href": "/paths" + } + } +} +``` + +## Possible Errors + +- The [standard errors](../errors.md#Standard-Errors). +- [not_found](../errors/not-found.md): A `not_found` error will be returned if no paths could be found to fulfill this payment request diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/payments-all.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/payments-all.md new file mode 100644 index 0000000..a3c5c50 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/payments-all.md @@ -0,0 +1,166 @@ +--- +title: All Payments +clientData: + laboratoryUrl: https://www.stellar.org/laboratory/#explorer?resource=payments&endpoint=all +--- + +This endpoint represents all payment [operations](../resources/operation.md) that are part of validated [transactions](../resources/transaction.md). This endpoint can also be used in [streaming](../responses.md#streaming) mode so it is possible to use it to listen for new payments as they get made in the Stellar network. +If called in streaming mode Horizon will start at the earliest known payment unless a `cursor` is set. In that case it will start from the `cursor`. You can also set `cursor` value to `now` to only stream payments created since your request time. + +## Request + +``` +GET /payments{?cursor,limit,order} +``` + +### Arguments + +| name | notes | description | example | +| ---- | ----- | ----------- | ------- | +| `?cursor` | optional, any, default _null_ | A paging token, specifying where to start returning records from. When streaming this can be set to `now` to stream object created since your request time. | `12884905984` | +| `?order` | optional, string, default `asc` | The order in which to return rows, "asc" or "desc". | `asc` | +| `?limit` | optional, number, default: `10` | Maximum number of records to return. | `200` | + +### curl Example Request + +```bash +# Retrieve the first 200 payments, ordered chronologically. +curl "https://horizon-testnet.stellar.org/payments?limit=200" +``` + +```bash +# Retrieve a page of payments to occur immediately before the transaction +# specified by the paging token "1234". +curl "https://horizon-testnet.stellar.org/payments?cursor=1234&order=desc" +``` + +### JavaScript Example Request + +```js +var StellarSdk = require('stellar-sdk'); +var server = new StellarSdk.Server('https://horizon-testnet.stellar.org'); + +server.payments() + .call() + .then(function (paymentResults) { + console.log(paymentResults.records) + }) + .catch(function (err) { + console.log(err) + }) +``` +## Response + +This endpoint responds with a list of payments. See [operation resource](../resources/operation.md) for more information about operations (and payment operations). + +### Example Response + +```json +{ + "_embedded": { + "records": [ + { + "_links": { + "effects": { + "href": "/operations/77309415424/effects/{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/operations?cursor=77309415424&order=asc" + }, + "self": { + "href": "/operations/77309415424" + }, + "succeeds": { + "href": "/operations?cursor=77309415424&order=desc" + }, + "transactions": { + "href": "/transactions/77309415424" + } + }, + "account": "GBIA4FH6TV64KSPDAJCNUQSM7PFL4ILGUVJDPCLUOPJ7ONMKBBVUQHRO", + "funder": "GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ", + "id": 77309415424, + "paging_token": "77309415424", + "starting_balance": 1e+14, + "type_i": 0, + "type": "create_account" + }, + { + "_links": { + "effects": { + "href": "/operations/463856472064/effects/{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/operations?cursor=463856472064&order=asc" + }, + "self": { + "href": "/operations/463856472064" + }, + "succeeds": { + "href": "/operations?cursor=463856472064&order=desc" + }, + "transactions": { + "href": "/transactions/463856472064" + } + }, + "account": "GC2ADYAIPKYQRGGUFYBV2ODJ54PY6VZUPKNCWWNX2C7FCJYKU4ZZNKVL", + "funder": "GBIA4FH6TV64KSPDAJCNUQSM7PFL4ILGUVJDPCLUOPJ7ONMKBBVUQHRO", + "id": 463856472064, + "paging_token": "463856472064", + "starting_balance": 1e+09, + "type_i": 0, + "type": "create_account" + } + ] + }, + "_links": { + "next": { + "href": "?order=asc&limit=2&cursor=463856472064" + }, + "prev": { + "href": "?order=desc&limit=2&cursor=77309415424" + }, + "self": { + "href": "?order=asc&limit=2&cursor=" + } + } +} +``` + +### Example Streaming Event + +```json +{ + "_links": { + "effects": { + "href": "/operations/77309415424/effects/{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/operations?cursor=77309415424&order=asc" + }, + "self": { + "href": "/operations/77309415424" + }, + "succeeds": { + "href": "/operations?cursor=77309415424&order=desc" + }, + "transactions": { + "href": "/transactions/77309415424" + } + }, + "account": "GBIA4FH6TV64KSPDAJCNUQSM7PFL4ILGUVJDPCLUOPJ7ONMKBBVUQHRO", + "funder": "GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ", + "id": 77309415424, + "paging_token": "77309415424", + "starting_balance": 1e+14, + "type_i": 0, + "type": "create_account" +} +``` + +## Possible Errors + +- The [standard errors](../errors.md#Standard_Errors). diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/payments-for-account.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/payments-for-account.md new file mode 100644 index 0000000..9a761e4 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/payments-for-account.md @@ -0,0 +1,137 @@ +--- +title: Payments for Account +clientData: + laboratoryUrl: https://www.stellar.org/laboratory/#explorer?resource=payments&endpoint=for_account +--- + +This endpoint responds with a collection of [Payment operations](../resources/operation.md) where the given [account](../resources/account.md) was either the sender or receiver. + +This endpoint can also be used in [streaming](../responses.md#streaming) mode so it is possible to use it to listen for new payments to or from an account as they get made in the Stellar network. +If called in streaming mode Horizon will start at the earliest known payment unless a `cursor` is set. In that case it will start from the `cursor`. You can also set `cursor` value to `now` to only stream payments created since your request time. + +## Request + +``` +GET /accounts/{id}/payments{?cursor,limit,order} +``` + +### Arguments + +| name | notes | description | example | +| ------ | ------- | ----------- | ------- | +| `id` | required, string | The account id of the account used to constrain results. | `GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ` | +| `?cursor` | optional, default _null_ | A payment paging token specifying from where to begin results. When streaming this can be set to `now` to stream object created since your request time. | `8589934592` | +| `?limit` | optional, number, default `10` | Specifies the count of records at most to return. | `200` | +| `?order` | optional, string, default `asc` | Specifies order of returned results. `asc` means older payments first, `desc` mean newer payments first. | `desc` | + +### curl Example Request + +```bash +# Retrieve the 25 latest payments for a specific account. +curl "https://horizon-testnet.stellar.org/account/GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ/payments?limit=25&order=desc" +``` + +### JavaScript Example Request + +```js +var StellarSdk = require('stellar-sdk'); +var server = new StellarSdk.Server('https://horizon-testnet.stellar.org'); + +server.payments() + .forAccount("GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ") + .call() + .then(function (accountResult) { + console.log(accountResult); + }) + .catch(function (err) { + console.error(err); + }) +``` +## Response + +This endpoint responds with a [page](../resources/page.md) of [payment operations](../resources/operation.md). + +### Example Response + +```json +{"_embedded": { + "records": [ + { + "_links": { + "self": { + "href": "/operations/12884905984" + }, + "transaction": { + "href": "/transaction/6391dd190f15f7d1665ba53c63842e368f485651a53d8d852ed442a446d1c69a" + }, + "precedes": { + "href": "/account/GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ/payments?cursor=12884905984&order=asc{?limit}", + "templated": true + }, + "succeeds": { + "href": "/account/GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ/payments?cursor=12884905984&order=desc{?limit}", + "templated": true + } + }, + "id": 12884905984, + "paging_token": "12884905984", + "type_i": 0, + "type": "payment", + "sender": "GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ", + "receiver": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", + "asset": { + "code": "XLM" + }, + "amount": 1000000000, + "amount_f": 100.00 + } + ] +}, +"_links": { + "next": { + "href": "/account/GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ/payments?cursor=12884905984&order=asc{?limit}", + "templated": true + }, + "self": { + "href": "/account/GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ/payments" + } +} +} +``` + +### Example Streaming Event + +```json +{ + "_links": { + "effects": { + "href": "/operations/77309415424/effects/{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/operations?cursor=77309415424&order=asc" + }, + "self": { + "href": "/operations/77309415424" + }, + "succeeds": { + "href": "/operations?cursor=77309415424&order=desc" + }, + "transactions": { + "href": "/transactions/77309415424" + } + }, + "account": "GBIA4FH6TV64KSPDAJCNUQSM7PFL4ILGUVJDPCLUOPJ7ONMKBBVUQHRO", + "funder": "GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ", + "id": 77309415424, + "paging_token": "77309415424", + "starting_balance": 1e+14, + "type_i": 0, + "type": "create_account" +} +``` + + +## Possible Errors + +- The [standard errors](../errors.md#Standard_Errors). diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/payments-for-ledger.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/payments-for-ledger.md new file mode 100644 index 0000000..da89122 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/payments-for-ledger.md @@ -0,0 +1,103 @@ +--- +title: Payments for Ledger +clientData: + laboratoryUrl: https://www.stellar.org/laboratory/#explorer?resource=payments&endpoint=for_ledger +--- + +This endpoint represents all payment [operations](../resources/operation.md) that are part of a valid [transactions](../resources/transaction.md) in a given [ledger](../resources/ledger.md). + +## Request + +``` +GET /ledgers/{id}/payments{?cursor,limit,order} +``` + +### Arguments + +| name | notes | description | example | +| ------ | ------- | ----------- | ------- | +| `id` | required, number | Ledger ID | `69859` | +| `?cursor` | optional, default _null_ | A paging token, specifying where to start returning records from. | `12884905984` | +| `?order` | optional, string, default `asc` | The order in which to return rows, "asc" or "desc". | `asc` | +| `?limit` | optional, number, default `10` | Maximum number of records to return. | `200` | + +### curl Example Request + +```sh +curl "https://horizon-testnet.stellar.org/ledgers/69859/payments" +``` + +### JavaScript Example Request + +```js +var StellarSdk = require('stellar-sdk') +var server = new StellarSdk.Server('https://horizon-testnet.stellar.org'); + +server.payments() + .forLedger("10866") + .call() + .then(function (paymentResult) { + console.log(paymentResult) + }) + .catch(function (err) { + console.log(err) + }) +``` + +## Response + +This endpoint responds with a list of payment operations in a given ledger. See [operation resource](../resources/operation.md) for more information about operations (and payment operations). + +### Example Response + +```json +{ + "_embedded": { + "records": [ + { + "_links": { + "effects": { + "href": "/operations/77309415424/effects/{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/operations?cursor=77309415424&order=asc" + }, + "self": { + "href": "/operations/77309415424" + }, + "succeeds": { + "href": "/operations?cursor=77309415424&order=desc" + }, + "transactions": { + "href": "/transactions/77309415424" + } + }, + "account": "GBIA4FH6TV64KSPDAJCNUQSM7PFL4ILGUVJDPCLUOPJ7ONMKBBVUQHRO", + "funder": "GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ", + "id": 77309415424, + "paging_token": "77309415424", + "starting_balance": 1e+14, + "type_i": 0, + "type": "create_account" + } + ] + }, + "_links": { + "next": { + "href": "?order=asc&limit=10&cursor=77309415424" + }, + "prev": { + "href": "?order=desc&limit=10&cursor=77309415424" + }, + "self": { + "href": "?order=asc&limit=10&cursor=" + } + } +} +``` + +## Possible Errors + +- The [standard errors](../errors.md#Standard-Errors). +- [not_found](../errors/not-found.md): A `not_found` error will be returned if there is no ledger whose ID matches the `id` argument. diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/payments-for-transaction.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/payments-for-transaction.md new file mode 100644 index 0000000..96e5db8 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/payments-for-transaction.md @@ -0,0 +1,104 @@ +--- +title: Payments for Transaction +clientData: + laboratoryUrl: https://www.stellar.org/laboratory/#explorer?resource=payments&endpoint=for_transaction +--- + +This endpoint represents all payment [operations](../resources/operation.md) that are part of a given [transaction](../resources/transaction.md). + +## Request + +``` +GET /transactions/{hash}/payments{?cursor,limit,order} +``` + +### Arguments + +| name | notes | description | example | +| ------ | ------- | ----------- | ------- | +| `hash` | required, string | A transaction hash, hex-encoded | `6391dd190f15f7d1665ba53c63842e368f485651a53d8d852ed442a446d1c69a` | +| `?cursor` | optional, default _null_ | A paging token, specifying where to start returning records from. | `12884905984` | +| `?order` | optional, string, default `asc` | The order in which to return rows, "asc" or "desc". | `asc` | +| `?limit` | optional, number, default `10` | Maximum number of records to return. | `200` | + +### curl Example Request + +```sh +curl "https://horizon-testnet.stellar.org/transactions/3c8ef808df9d5d240ba0d495629df9da5653b1be2daf05d43b49c5bcbfe099bd/payments" +``` + +### JavaScript Example Request + +```js +var StellarSdk = require('stellar-sdk'); +var server = new StellarSdk.Server('https://horizon-testnet.stellar.org'); + +server.payments() + .forTransaction("3c8ef808df9d5d240ba0d495629df9da5653b1be2daf05d43b49c5bcbfe099bd") + .call() + .then(function (paymentResult) { + console.log(paymentResult.records); + }) + .catch(function (err) { + console.log(err); + }) +``` +## Response + +This endpoint responds with a list of payments operations that are part of a given transaction. See [operation resource](../resources/operation.md) for more information about operations (and payment operations). + +### Example Response + +```json +{ + "_embedded": { + "records": [ + { + "_links": { + "effects": { + "href": "/operations/46428596473856/effects/{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/operations?cursor=46428596473856&order=asc" + }, + "self": { + "href": "/operations/46428596473856" + }, + "succeeds": { + "href": "/operations?cursor=46428596473856&order=desc" + }, + "transactions": { + "href": "/transactions/46428596473856" + } + }, + "account": "GAKLBGHNHFQ3BMUYG5KU4BEWO6EYQHZHAXEWC33W34PH2RBHZDSQBD75", + "funder": "GBIA4FH6TV64KSPDAJCNUQSM7PFL4ILGUVJDPCLUOPJ7ONMKBBVUQHRO", + "id": 46428596473856, + "paging_token": "46428596473856", + "starting_balance": 1e+09, + "type_i": 0, + "type": "create_account" + } + ] + }, + "_links": { + "next": { + "href": "?order=asc&limit=10&cursor=46428596473856" + }, + "prev": { + "href": "?order=desc&limit=10&cursor=46428596473856" + }, + "self": { + "href": "?order=asc&limit=10&cursor=" + } + } +} +``` + + + +## Possible Errors + +- The [standard errors](../errors.md#Standard-Errors). +- [not_found](../errors/not-found.md): A `not_found` error will be returned if there is no transaction whose ID matches the `hash` argument. diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/trades-for-orderbook.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/trades-for-orderbook.md new file mode 100644 index 0000000..39335a2 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/trades-for-orderbook.md @@ -0,0 +1,119 @@ +--- +title: Trades for Orderbook +clientData: + laboratoryUrl: https://www.stellar.org/laboratory/#explorer?resource=order_book&endpoint=trades +--- + +People on the Stellar network can make [offers](../resources/offer.md) to buy or sell assets. These offers are summarized by the assets being bought and sold in [orderbooks](../resources/orderbook.md). When an offer is fully or partially fulfilled, a [trade](../resources/trade.md) happens. + +Horizon will return a list of trades by the orderbook the trade's assets are associated with. + +## Request + +``` +GET /order_book/trades?selling_asset_type={selling_asset_type}&selling_asset_code={selling_asset_code}&selling_asset_issuer={selling_asset_issuer}&buying_asset_type={buying_asset_type}&buying_asset_code={buying_asset_code}&buying_asset_issuer={buying_asset_issuer} +``` + +### Arguments + +| name | notes | description | example | +| ---- | ----- | ----------- | ------- | +| `selling_asset_type` | required, string | Type of the Asset being sold | `native` | +| `selling_asset_code` | optional, string | Code of the Asset being sold | `USD` | +| `selling_asset_issuer` | optional, string | Account ID of the issuer of the Asset being sold | 'GA2HGBJIJKI6O4XEM7CZWY5PS6GKSXL6D34ERAJYQSPYA6X6AI7HYW36' | +| `buying_asset_type` | required, string | Type of the Asset being bought | `credit_alphanum4` | +| `buying_asset_code` | optional, string | Code of the Asset being bought | `BTC` | +| `buying_asset_issuer` | optional, string | Account ID of the issuer of the Asset being bought | 'GD6VWBXI6NY3AOOR55RLVQ4MNIDSXE5JSAVXUTF35FRRI72LYPI3WL6Z' | +| `?cursor` | optional, any, default _null_ | A paging token, specifying where to start returning records from. | `12884905984` | +| `?order` | optional, string, default `asc` | The order in which to return rows, "asc" or "desc". | `asc` | +| `?limit` | optional, number, default: `10` | Maximum number of records to return. | `200` | + +### curl Example Request + +```sh +curl "https://horizon-testnet.stellar.org/order_book/trades?selling_asset_type=native&buying_asset_type=credit_alphanum4&buying_asset_code=FOO&buying_asset_issuer=GBAUUA74H4XOQYRSOW2RZUA4QL5PB37U3JS5NE3RTB2ELJVMIF5RLMAG" +``` + +### JavaScript Example Request + +```js +var StellarSdk = require('stellar-sdk'); +var server = new StellarSdk.Server('https://horizon-testnet.stellar.org'); + +server.orderbook(new StellarSdk.Asset.native(), new StellarSdk.Asset('FOO', 'GBAUUA74H4XOQYRSOW2RZUA4QL5PB37U3JS5NE3RTB2ELJVMIF5RLMAG')) + .trades() + .call() + .then(function(resp) { console.log(resp); }) + .catch(function(err) { console.log(err); }) +``` + +## Response + +The list of trades. + +### Example Response +```js +{ + "_links": { + "self": { + "href": "https://horizon-testnet.stellar.org/order_book/trades?order=asc\u0026limit=10\u0026cursor=" + }, + "next": { + "href": "https://horizon-testnet.stellar.org/order_book/trades?order=asc\u0026limit=10\u0026cursor=7281919481876481-2" + }, + "prev": { + "href": "https://horizon-testnet.stellar.org/order_book/trades?order=desc\u0026limit=10\u0026cursor=7281893712072705-2" + } + }, + "_embedded": { + "records": [ + { + "_links": { + "self": { + "href": "https://horizon-testnet.stellar.org/accounts/GCJ34JYMXNI7N55YREWAACMMZECOMTPIYDTFCQBWPUP7BLJQDDTVGUW4" + }, + "seller": { + "href": "https://horizon-testnet.stellar.org/accounts/GCJ34JYMXNI7N55YREWAACMMZECOMTPIYDTFCQBWPUP7BLJQDDTVGUW4" + }, + "buyer": { + "href": "https://horizon-testnet.stellar.org/accounts/GD42RQNXTRIW6YR3E2HXV5T2AI27LBRHOERV2JIYNFMXOBA234SWLQQB" + } + }, + "id": "7281893712072705-2", + "paging_token": "7281893712072705-2", + "seller": "GCJ34JYMXNI7N55YREWAACMMZECOMTPIYDTFCQBWPUP7BLJQDDTVGUW4", + "sold_asset_type": "native", + "buyer": "GD42RQNXTRIW6YR3E2HXV5T2AI27LBRHOERV2JIYNFMXOBA234SWLQQB", + "bought_asset_type": "credit_alphanum4", + "bought_asset_code": "FOO", + "bought_asset_issuer": "GBAUUA74H4XOQYRSOW2RZUA4QL5PB37U3JS5NE3RTB2ELJVMIF5RLMAG" + }, + { + "_links": { + "self": { + "href": "https://horizon-testnet.stellar.org/accounts/GCJ34JYMXNI7N55YREWAACMMZECOMTPIYDTFCQBWPUP7BLJQDDTVGUW4" + }, + "seller": { + "href": "https://horizon-testnet.stellar.org/accounts/GCJ34JYMXNI7N55YREWAACMMZECOMTPIYDTFCQBWPUP7BLJQDDTVGUW4" + }, + "buyer": { + "href": "https://horizon-testnet.stellar.org/accounts/GD42RQNXTRIW6YR3E2HXV5T2AI27LBRHOERV2JIYNFMXOBA234SWLQQB" + } + }, + "id": "7281919481876481-2", + "paging_token": "7281919481876481-2", + "seller": "GCJ34JYMXNI7N55YREWAACMMZECOMTPIYDTFCQBWPUP7BLJQDDTVGUW4", + "sold_asset_type": "native", + "buyer": "GD42RQNXTRIW6YR3E2HXV5T2AI27LBRHOERV2JIYNFMXOBA234SWLQQB", + "bought_asset_type": "credit_alphanum4", + "bought_asset_code": "FOO", + "bought_asset_issuer": "GBAUUA74H4XOQYRSOW2RZUA4QL5PB37U3JS5NE3RTB2ELJVMIF5RLMAG" + } + ] + } +} +``` + +## Possible Errors + +- The [standard errors](../errors.md#Standard_Errors). diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/transactions-all.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/transactions-all.md new file mode 100644 index 0000000..4d0e679 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/transactions-all.md @@ -0,0 +1,215 @@ +--- +title: All Transactions +clientData: + laboratoryUrl: https://www.stellar.org/laboratory/#explorer?resource=transactions&endpoint=all +--- + +This endpoint represents all validated [transactions](../resources/transaction.md). +This endpoint can also be used in [streaming](../responses.md#streaming) mode. This makes it possible to use it to listen for new transactions as they get made in the Stellar network. +If called in streaming mode Horizon will start at the earliest known transaction unless a cursor is set. In that case it will start from the cursor. +If called in streaming mode Horizon will start at the earliest known transaction unless a `cursor` is set. In that case it will start from the `cursor`. You can also set `cursor` value to `now` to only stream transaction created since your request time. + +## Request + +``` +GET /transactions{?cursor,limit,order} +``` + +### Arguments + +| name | notes | description | example | +| ---- | ----- | ----------- | ------- | +| `?cursor` | optional, any, default _null_ | A paging token, specifying where to start returning records from. When streaming this can be set to `now` to stream object created since your request time. | `12884905984` | +| `?order` | optional, string, default `asc` | The order in which to return rows, "asc" or "desc". | `asc` | +| `?limit` | optional, number, default: `10` | Maximum number of records to return. | `200` | + +### curl Example Request + +```sh +# Retrieve the 200 latest transactions, ordered chronologically: +curl "https://horizon-testnet.stellar.org/transactions?limit=200&order=desc" +``` + +### JavaScript Example Request + +```js +var StellarSdk = require('stellar-sdk'); +var server = new StellarSdk.Server('https://horizon-testnet.stellar.org'); + +server.transactions() + .call() + .then(function (transactionResult) { + //page 1 + console.log(transactionResult.records); + return transactionResult.next(); + }) + .then(function (transactionResult) { + console.log(transactionResult.records); + }) + .catch(function (err) { + console.log(err) + }) +``` + +## Response + +If called normally this endpoint responds with a [page](../resources/page.md) of transactions. +If called in streaming mode the transaction resources are returned individually. +See [transaction resource](../resources/transaction.md) for reference. + +### Example Response + +```json +{ + "_embedded": { + "records": [ + { + "_links": { + "account": { + "href": "/accounts/GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K" + }, + "effects": { + "href": "/transactions/fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a/effects{?cursor,limit,order}", + "templated": true + }, + "ledger": { + "href": "/ledgers/146970" + }, + "operations": { + "href": "/transactions/fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a/operations{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/transactions?cursor=631231343497216\u0026order=asc" + }, + "self": { + "href": "/transactions/fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a" + }, + "succeeds": { + "href": "/transactions?cursor=631231343497216\u0026order=desc" + } + }, + "id": "fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a", + "paging_token": "631231343497216", + "hash": "fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a", + "ledger": 146970, + "created_at": "2015-09-24T10:07:09Z", + "account": "GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K", + "account_sequence": 279172874343, + "max_fee": 0, + "fee_paid": 0, + "operation_count": 1, + "result_code": 0, + "result_code_s": "tx_success", + "envelope_xdr": "AAAAAGXNhLrhGtltTwCpmqlarh7s1DB2hIkbP//jgzn4Fos/AAAACgAAAEEAAABnAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA2ddmTOFAgr21Crs2RXRGLhiAKxicZb/IERyEZL/Y2kUAAAAXSHboAAAAAAAAAAAB+BaLPwAAAECDEEZmzbgBr5fc3mfJsCjWPDtL6H8/vf16me121CC09ONyWJZnw0PUvp4qusmRwC6ZKfLDdk8F3Rq41s+yOgQD", + "result_xdr": "AAAAAAAAAAoAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=", + "result_meta_xdr": "AAAAAAAAAAEAAAACAAAAAAACPhoAAAAAAAAAANnXZkzhQIK9tQq7NkV0Ri4YgCsYnGW/yBEchGS/2NpFAAAAF0h26AAAAj4aAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQACPhoAAAAAAAAAAGXNhLrhGtltTwCpmqlarh7s1DB2hIkbP//jgzn4Fos/AABT8kS2c/oAAABBAAAAZwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA" + }, + { + "_links": { + "account": { + "href": "/accounts/GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K" + }, + "effects": { + "href": "/transactions/90ad6cfc9b0911bdbf202cace78ae7ecf50989c424288670dadb69bf8237c1b3/effects{?cursor,limit,order}", + "templated": true + }, + "ledger": { + "href": "/ledgers/144798" + }, + "operations": { + "href": "/transactions/90ad6cfc9b0911bdbf202cace78ae7ecf50989c424288670dadb69bf8237c1b3/operations{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/transactions?cursor=621902674530304\u0026order=asc" + }, + "self": { + "href": "/transactions/90ad6cfc9b0911bdbf202cace78ae7ecf50989c424288670dadb69bf8237c1b3" + }, + "succeeds": { + "href": "/transactions?cursor=621902674530304\u0026order=desc" + } + }, + "id": "90ad6cfc9b0911bdbf202cace78ae7ecf50989c424288670dadb69bf8237c1b3", + "paging_token": "621902674530304", + "hash": "90ad6cfc9b0911bdbf202cace78ae7ecf50989c424288670dadb69bf8237c1b3", + "ledger": 144798, + "created_at": "2015-09-24T07:49:38Z", + "account": "GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K", + "account_sequence": 279172874342, + "max_fee": 0, + "fee_paid": 0, + "operation_count": 1, + "result_code": 0, + "result_code_s": "tx_success", + "envelope_xdr": "AAAAAGXNhLrhGtltTwCpmqlarh7s1DB2hIkbP//jgzn4Fos/AAAACgAAAEEAAABmAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAMPT7P7buwqnMueFS4NV10vE2q3C/mcAy4jx03/RdSGsAAAAXSHboAAAAAAAAAAAB+BaLPwAAAEBPWWMNSWyPBbQlhRheXyvAFDVx1rnf68fdDOUHPdDIkHdUczBpzvCjpdgwhQ2NYOX5ga1ZgOIWLy789YNnuIcL", + "result_xdr": "AAAAAAAAAAoAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=", + "result_meta_xdr": "AAAAAAAAAAEAAAACAAAAAAACNZ4AAAAAAAAAADD0+z+27sKpzLnhUuDVddLxNqtwv5nAMuI8dN/0XUhrAAAAF0h26AAAAjWeAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQACNZ4AAAAAAAAAAGXNhLrhGtltTwCpmqlarh7s1DB2hIkbP//jgzn4Fos/AABUCY0tXAQAAABBAAAAZgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA" + } + ] + }, + "_links": { + "next": { + "href": "/transactions?order=desc\u0026limit=2\u0026cursor=621902674530304" + }, + "prev": { + "href": "/transactions?order=asc\u0026limit=2\u0026cursor=631231343497216" + }, + "self": { + "href": "/transactions?order=desc\u0026limit=2\u0026cursor=" + } + } +} +``` + +### Example Streaming Event + +```json +{ + "_links": { + "account": { + "href": "/accounts/GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K" + }, + "effects": { + "href": "/transactions/fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a/effects{?cursor,limit,order}", + "templated": true + }, + "ledger": { + "href": "/ledgers/146970" + }, + "operations": { + "href": "/transactions/fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a/operations{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/transactions?cursor=631231343497216\u0026order=asc" + }, + "self": { + "href": "/transactions/fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a" + }, + "succeeds": { + "href": "/transactions?cursor=631231343497216\u0026order=desc" + } + }, + "id": "fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a", + "paging_token": "631231343497216", + "hash": "fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a", + "ledger": 146970, + "created_at": "2015-09-24T10:07:09Z", + "account": "GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K", + "account_sequence": 279172874343, + "max_fee": 0, + "fee_paid": 0, + "operation_count": 1, + "result_code": 0, + "result_code_s": "tx_success", + "envelope_xdr": "AAAAAGXNhLrhGtltTwCpmqlarh7s1DB2hIkbP//jgzn4Fos/AAAACgAAAEEAAABnAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA2ddmTOFAgr21Crs2RXRGLhiAKxicZb/IERyEZL/Y2kUAAAAXSHboAAAAAAAAAAAB+BaLPwAAAECDEEZmzbgBr5fc3mfJsCjWPDtL6H8/vf16me121CC09ONyWJZnw0PUvp4qusmRwC6ZKfLDdk8F3Rq41s+yOgQD", + "result_xdr": "AAAAAAAAAAoAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=", + "result_meta_xdr": "AAAAAAAAAAEAAAACAAAAAAACPhoAAAAAAAAAANnXZkzhQIK9tQq7NkV0Ri4YgCsYnGW/yBEchGS/2NpFAAAAF0h26AAAAj4aAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQACPhoAAAAAAAAAAGXNhLrhGtltTwCpmqlarh7s1DB2hIkbP//jgzn4Fos/AABT8kS2c/oAAABBAAAAZwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA" +} +``` + +## Possible Errors + +- The [standard errors](../errors.md#Standard_Errors). diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/transactions-create.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/transactions-create.md new file mode 100644 index 0000000..009bf56 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/transactions-create.md @@ -0,0 +1,84 @@ +--- +title: Post Transaction +clientData: + laboratoryUrl: https://www.stellar.org/laboratory/#explorer?resource=transactions&endpoint=create +--- + +Posts a new [transaction](../resources/transaction.md) to the Stellar Network. +Note that creating a valid transaction and signing it properly is the +responsibility of your client library. + +Transaction submission and the subsequent validation and inclusion into the +Stellar Network's ledger is a [complicated and asynchronous +process](https://www.stellar.org/developers/learn/concepts/transactions.html#life-cycle). +To reduce the complexity, horizon manages these asynchronous processes for the +client and will wait to hear results from the Stellar Network before returning +an HTTP response to a client. + +Transaction submission to horizon aims to be +[idempotent](https://en.wikipedia.org/wiki/Idempotence#Computer_science_meaning): +a client can submit a given transaction to horizon more than once and horizon +will behave the same each time. If the transaction has already been +successfully applied to the ledger, horizon will simply return the saved result +and not attempt to submit the transaction again. Only in cases where a +transaction's status is unknown (and thus will have a chance of being included +into a ledger) will a resubmission to the network occur. + +Information about [building transactions](https://www.stellar.org/developers/js-stellar-base/learn/building-transactions.html) in JavaScript. + +## Request + +``` +POST /transactions +``` + +### Arguments + +| name | loc | notes | example | description | +| ---- | ---- | -------- | ---------------------- | ----------- | +| `tx` | body | required | `AAAAAO`....`f4yDBA==` | Base64 representation of transaction envelope [XDR](../xdr.md) | + + +### curl Example Request + +```sh +curl -X POST \ + -F "tx=AAAAAOo1QK/3upA74NLkdq4Io3DQAQZPi4TVhuDnvCYQTKIVAAAACgAAH8AAAAABAAAAAAAAAAAAAAABAAAAAQAAAADqNUCv97qQO+DS5HauCKNw0AEGT4uE1Ybg57wmEEyiFQAAAAEAAAAAZc2EuuEa2W1PAKmaqVquHuzUMHaEiRs//+ODOfgWiz8AAAAAAAAAAAAAA+gAAAAAAAAAARBMohUAAABAPnnZL8uPlS+c/AM02r4EbxnZuXmP6pQHvSGmxdOb0SzyfDB2jUKjDtL+NC7zcMIyw4NjTa9Ebp4lvONEf4yDBA==" \ + "https://horizon-testnet.stellar.org/transactions" +``` + +## Response + +A successful response (i.e. any response with a successful HTTP response code) +indicates that the transaction was successful and has been included into the +ledger. + +If the transaction failed or errored, then an error response will be returned. Please see the errors section below. + +### Attributes + +| Name | Type | | +|-------------------|--------|-----------------------------------------------------------------------| +| `hash` | string | A hex-encoded hash of the submitted transaction. | +| `ledger` | number | The ledger number that the submitted transaction was included in. | +| `envelope_xdr` | string | A base64 encoded `TransactionEnvelope` [XDR](../xdr.md) object. | +| `result_xdr` | string | A base64 encoded `TransactionResult` [XDR](../xdr.md) object. | +| `result_meta_xdr` | string | A base64 encoded `TransactionMeta` [XDR](../xdr.md) object. | + +### Example Response + +```json +{ + "hash": "c492d87c4642815dfb3c7dcce01af4effd162b031064098a0d786b6e0a00fd74", + "ledger": 2, + "envelope_xdr": "AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAACgAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAO5rKAAAAAAAAAAABVvwF9wAAAEAKZ7IPj/46PuWU6ZOtyMosctNAkXRNX9WCAI5RnfRk+AyxDLoDZP/9l3NvsxQtWj9juQOuoBlFLnWu8intgxQA", + "result_xdr": "xJLYfEZCgV37PH3M4Br07/0WKwMQZAmKDXhrbgoA/XQAAAAAAAAACgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==", + "result_meta_xdr": "AAAAAAAAAAEAAAABAAAAAgAAAAAAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcBY0V4XYn/9gAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAAAAAACAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wFjRXgh7zX2AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==" +} +``` + +## Possible Errors + +- The [standard errors](../errors.md#Standard_Errors). +- [transaction_failed](../errors/transaction-failed.md): The transaction failed and could not be applied to the ledger. +- [transaction_malformed](../errors/transaction-malformed.md): The transaction could not be decoded and was not submitted to the network. diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/transactions-for-account.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/transactions-for-account.md new file mode 100644 index 0000000..1fac22b --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/transactions-for-account.md @@ -0,0 +1,183 @@ +--- +title: Transactions for Account +clientData: + laboratoryUrl: https://www.stellar.org/laboratory/#explorer?resource=transactions&endpoint=for_account +--- + +This endpoint represents all [transactions](../resources/transaction.md) that affected a given [account](../resources/account.md). +This endpoint can also be used in [streaming](../responses.md#streaming) mode so it is possible to use it to listen for new transactions as that affect a given account as they get made in the Stellar network. +If called in streaming mode Horizon will start at the earliest known transaction unless a `cursor` is set. In that case it will start from the `cursor`. You can also set `cursor` value to `now` to only stream transaction created since your request time. + +## Request + +``` +GET /accounts/{account_id}/transactions{?cursor,limit,order} +``` + +### Arguments + +| name | notes | description | example | +| ---- | ----- | ----------- | ------- | +| `account_id` | required, string | ID of an account | GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ | +| `?cursor` | optional, any, default _null_ | A paging token, specifying where to start returning records from. When streaming this can be set to `now` to stream object created since your request time. | 12884905984 | +| `?order` | optional, string, default `asc` | The order in which to return rows, "asc" or "desc". | `asc` | +| `?limit` | optional, number, default: `10` | Maximum number of records to return. | `200` | + +### curl Example Request + +```sh +curl "https://horizon-testnet.stellar.org/accounts/GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ/transactions?limit=1" +``` + +### JavaScript Example Request + +```js +var StellarSdk = require('stellar-sdk'); +var server = new StellarSdk.Server('https://horizon-testnet.stellar.org'); + +server.transactions() + .forAccount("GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ") + .call() + .then(function (accountResult) { + console.log(accountResult); + }) + .catch(function (err) { + console.error(err); + }) +``` + +### JavaScript Example Request + +```js +var StellarSdk = require('stellar-sdk'); +var server = new StellarSdk.Server('https://horizon-testnet.stellar.org'); + +server.transactions() + .forAccount("GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ") + .call() + .then(function (accountResult) { + console.log(accountResult); + }) + .catch(function (err) { + console.error(err); + }) +``` + +## Response + +This endpoint responds with a list of transactions that changed a given account's state. See [transaction resource](../resources/transaction.md) for reference. + +### Example Response +```json +{ + "_embedded": { + "records": [ + { + "_links": { + "account": { + "href": "/accounts/GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H" + }, + "effects": { + "href": "/transactions/2a2beb163e2c68bd2377aab243d68225626d70263444a85556ec7271d4e46e03/effects{?cursor,limit,order}", + "templated": true + }, + "ledger": { + "href": "/ledgers/33" + }, + "operations": { + "href": "/transactions/2a2beb163e2c68bd2377aab243d68225626d70263444a85556ec7271d4e46e03/operations{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/transactions?cursor=141733924864&order=asc" + }, + "self": { + "href": "/transactions/2a2beb163e2c68bd2377aab243d68225626d70263444a85556ec7271d4e46e03" + }, + "succeeds": { + "href": "/transactions?cursor=141733924864&order=desc" + } + }, + "id": "2a2beb163e2c68bd2377aab243d68225626d70263444a85556ec7271d4e46e03", + "paging_token": "141733924864", + "hash": "2a2beb163e2c68bd2377aab243d68225626d70263444a85556ec7271d4e46e03", + "ledger": 33, + "created_at": "2015-09-09T02:46:44Z", + "account": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", + "account_sequence": 1, + "max_fee": 0, + "fee_paid": 0, + "operation_count": 1, + "result_code": 0, + "result_code_s": "tx_success", + "envelope_xdr": "AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAACgAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAZc2EuuEa2W1PAKmaqVquHuzUMHaEiRs//+ODOfgWiz8AAFrzEHpAAAAAAAAAAAABVvwF9wAAAEAhwIlmkDnlvOaUnj5NMyGlu7XlGLUqUoigWbbMwLS0Em99ZrEh/Gd85pz7hGtAxNMj335utvGDUOAm9WAewEYE", + "result_xdr": "KivrFj4saL0jd6qyQ9aCJWJtcCY0RKhVVuxycdTkbgMAAAAAAAAACgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==", + "result_meta_xdr": "AAAAAAAAAAEAAAABAAAAIQAAAAAAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcBY0V4XYn/9gAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAAAAAAhAAAAAAAAAABlzYS64RrZbU8AqZqpWq4e7NQwdoSJGz//44M5+BaLPwAAWvMQekAAAAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAhAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wFi6oVND7/2AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==" + } + ] + }, + "_links": { + "next": { + "href": "/accounts/GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K/transactions?order=asc&limit=1&cursor=141733924864" + }, + "prev": { + "href": "/accounts/GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K/transactions?order=desc&limit=1&cursor=141733924864" + }, + "self": { + "href": "/accounts/GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K/transactions?order=asc&limit=1&cursor=" + } + } +} +``` + +### Example Streaming Event + +```json +{ + "_links": { + "account": { + "href": "/accounts/GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K" + }, + "effects": { + "href": "/transactions/fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a/effects{?cursor,limit,order}", + "templated": true + }, + "ledger": { + "href": "/ledgers/146970" + }, + "operations": { + "href": "/transactions/fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a/operations{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/transactions?cursor=631231343497216\u0026order=asc" + }, + "self": { + "href": "/transactions/fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a" + }, + "succeeds": { + "href": "/transactions?cursor=631231343497216\u0026order=desc" + } + }, + "id": "fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a", + "paging_token": "631231343497216", + "hash": "fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a", + "ledger": 146970, + "created_at": "2015-09-24T10:07:09Z", + "account": "GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K", + "account_sequence": 279172874343, + "max_fee": 0, + "fee_paid": 0, + "operation_count": 1, + "result_code": 0, + "result_code_s": "tx_success", + "envelope_xdr": "AAAAAGXNhLrhGtltTwCpmqlarh7s1DB2hIkbP//jgzn4Fos/AAAACgAAAEEAAABnAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA2ddmTOFAgr21Crs2RXRGLhiAKxicZb/IERyEZL/Y2kUAAAAXSHboAAAAAAAAAAAB+BaLPwAAAECDEEZmzbgBr5fc3mfJsCjWPDtL6H8/vf16me121CC09ONyWJZnw0PUvp4qusmRwC6ZKfLDdk8F3Rq41s+yOgQD", + "result_xdr": "AAAAAAAAAAoAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=", + "result_meta_xdr": "AAAAAAAAAAEAAAACAAAAAAACPhoAAAAAAAAAANnXZkzhQIK9tQq7NkV0Ri4YgCsYnGW/yBEchGS/2NpFAAAAF0h26AAAAj4aAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQACPhoAAAAAAAAAAGXNhLrhGtltTwCpmqlarh7s1DB2hIkbP//jgzn4Fos/AABT8kS2c/oAAABBAAAAZwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA" +} +``` + +## Possible Errors + +- The [standard errors](../errors.md#Standard-Errors). +- [not_found](../errors/not-found.md): A `not_found` error will be returned if there is no account whose ID matches the `account_id` argument. diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/transactions-for-ledger.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/transactions-for-ledger.md new file mode 100644 index 0000000..1e45911 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/transactions-for-ledger.md @@ -0,0 +1,118 @@ +--- +title: Transactions for Ledger +clientData: + laboratoryUrl: https://www.stellar.org/laboratory/#explorer?resource=transactions&endpoint=for_ledger +--- + +This endpoint represents all [transactions](../resources/transaction.md) in a given [ledger](../resources/ledger.md). + +## Request + +``` +GET /ledgers/{id}/transactions{?cursor,limit,order} +``` + +### Arguments + +| name | notes | description | example | +| ------ | ------- | ----------- | ------- | +| `id` | required, number | Ledger ID | `69859` | +| `?cursor` | optional, default _null_ | A paging token, specifying where to start returning records from. | `12884905984` | +| `?order` | optional, string, default `asc` | The order in which to return rows, "asc" or "desc". | `asc` | +| `?limit` | optional, number, default `10` | Maximum number of records to return. | `200` | + +### curl Example Request + +```sh +curl "https://horizon-testnet.stellar.org/ledgers/69859/transactions" +``` + +### JavaScript Example Request + +```js +var StellarSdk = require('stellar-sdk'); +var server = new StellarSdk.Server('https://horizon-testnet.stellar.org'); + +server.transactions() + .forLedger("8365") + .call() + .then(function (accountResults) { + console.log(accountResults.records) + }) + .catch(function (err) { + console.log(err) + }) +``` + +## Response + +This endpoint responds with a list of transactions in a given ledger. See [transaction resource](../resources/transaction.md) for reference. + +### Example Response + +```json +{ + "_embedded": { + "records": [ + { + "_links": { + "account": { + "href": "/accounts/GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K" + }, + "effects": { + "href": "/transactions/fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a/effects{?cursor,limit,order}", + "templated": true + }, + "ledger": { + "href": "/ledgers/146970" + }, + "operations": { + "href": "/transactions/fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a/operations{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/transactions?cursor=631231343497216\u0026order=asc" + }, + "self": { + "href": "/transactions/fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a" + }, + "succeeds": { + "href": "/transactions?cursor=631231343497216\u0026order=desc" + } + }, + "id": "fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a", + "paging_token": "631231343497216", + "hash": "fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a", + "ledger": 146970, + "created_at": "2015-09-24T10:07:09Z", + "account": "GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K", + "account_sequence": 279172874343, + "max_fee": 0, + "fee_paid": 0, + "operation_count": 1, + "result_code": 0, + "result_code_s": "tx_success", + "envelope_xdr": "AAAAAGXNhLrhGtltTwCpmqlarh7s1DB2hIkbP//jgzn4Fos/AAAACgAAAEEAAABnAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA2ddmTOFAgr21Crs2RXRGLhiAKxicZb/IERyEZL/Y2kUAAAAXSHboAAAAAAAAAAAB+BaLPwAAAECDEEZmzbgBr5fc3mfJsCjWPDtL6H8/vf16me121CC09ONyWJZnw0PUvp4qusmRwC6ZKfLDdk8F3Rq41s+yOgQD", + "result_xdr": "AAAAAAAAAAoAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=", + "result_meta_xdr": "AAAAAAAAAAEAAAACAAAAAAACPhoAAAAAAAAAANnXZkzhQIK9tQq7NkV0Ri4YgCsYnGW/yBEchGS/2NpFAAAAF0h26AAAAj4aAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQACPhoAAAAAAAAAAGXNhLrhGtltTwCpmqlarh7s1DB2hIkbP//jgzn4Fos/AABT8kS2c/oAAABBAAAAZwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA" + } + ] + }, + "_links": { + "next": { + "href": "/ledgers/146970/transactions?order=asc\u0026limit=10\u0026cursor=631231343497216" + }, + "prev": { + "href": "/ledgers/146970/transactions?order=desc\u0026limit=10\u0026cursor=631231343497216" + }, + "self": { + "href": "/ledgers/146970/transactions?order=asc\u0026limit=10\u0026cursor=" + } + } +} +``` + +## Possible Errors + +- The [standard errors](../errors.md#Standard-Errors). +- [not_found](../errors/not-found.md): A `not_found` error will be returned if there is no ledgers whose sequence matches the `id` argument. diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/transactions-single.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/transactions-single.md new file mode 100644 index 0000000..594e7bd --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/endpoints/transactions-single.md @@ -0,0 +1,98 @@ +--- +title: Transaction Details +clientData: + laboratoryUrl: https://www.stellar.org/laboratory/#explorer?resource=transactions&endpoint=single +--- + +The transaction details endpoint provides information on a single [transaction](../resources/transaction.md). The transaction hash provided in the `hash` argument specifies which transaction to load. + +## Request + +``` +GET /transactions/{hash} +``` + +### Arguments + +| name | notes | description | example | +| ------ | ------- | ----------- | ------- | +| `hash` | required, string | A transaction hash, hex-encoded. | 6391dd190f15f7d1665ba53c63842e368f485651a53d8d852ed442a446d1c69a | + +### curl Example Request + +```sh +curl "https://horizon-testnet.stellar.org/transactions/6391dd190f15f7d1665ba53c63842e368f485651a53d8d852ed442a446d1c69a" +``` + +### JavaScript Example Request + +```js +var StellarSdk = require('stellar-sdk'); +var server = new StellarSdk.Server('https://horizon-testnet.stellar.org'); + +server.transactions() + .transaction("3c8ef808df9d5d240ba0d495629df9da5653b1be2daf05d43b49c5bcbfe099bd") + .call() + .then(function (transactionResult) { + console.log(transactionResult) + }) + .catch(function (err) { + console.log(err) + }) +``` + +## Response + +This endpoint responds with a single Transaction. See [transaction resource](../resources/transaction.md) for reference. + +### Example Response + +```json +{ + "_links": { + "account": { + "href": "/accounts/GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K" + }, + "effects": { + "href": "/transactions/fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a/effects{?cursor,limit,order}", + "templated": true + }, + "ledger": { + "href": "/ledgers/146970" + }, + "operations": { + "href": "/transactions/fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a/operations{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/transactions?cursor=631231343497216\u0026order=asc" + }, + "self": { + "href": "/transactions/fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a" + }, + "succeeds": { + "href": "/transactions?cursor=631231343497216\u0026order=desc" + } + }, + "id": "fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a", + "paging_token": "631231343497216", + "hash": "fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a", + "ledger": 146970, + "created_at": "2015-09-24T10:07:09Z", + "account": "GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K", + "account_sequence": 279172874343, + "max_fee": 0, + "fee_paid": 0, + "operation_count": 1, + "result_code": 0, + "result_code_s": "tx_success", + "envelope_xdr": "AAAAAGXNhLrhGtltTwCpmqlarh7s1DB2hIkbP//jgzn4Fos/AAAACgAAAEEAAABnAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA2ddmTOFAgr21Crs2RXRGLhiAKxicZb/IERyEZL/Y2kUAAAAXSHboAAAAAAAAAAAB+BaLPwAAAECDEEZmzbgBr5fc3mfJsCjWPDtL6H8/vf16me121CC09ONyWJZnw0PUvp4qusmRwC6ZKfLDdk8F3Rq41s+yOgQD", + "result_xdr": "AAAAAAAAAAoAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=", + "result_meta_xdr": "AAAAAAAAAAEAAAACAAAAAAACPhoAAAAAAAAAANnXZkzhQIK9tQq7NkV0Ri4YgCsYnGW/yBEchGS/2NpFAAAAF0h26AAAAj4aAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQACPhoAAAAAAAAAAGXNhLrhGtltTwCpmqlarh7s1DB2hIkbP//jgzn4Fos/AABT8kS2c/oAAABBAAAAZwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA" +} +``` + +## Possible Errors + +- The [standard errors](../errors.md#Standard-Errors). +- [not_found](../errors/not-found.md): A `not_found` error will be returned if there is no transaction whose ID matches the `hash` argument. diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors.md new file mode 100644 index 0000000..9b21882 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors.md @@ -0,0 +1,31 @@ +--- +title: Errors +--- + +In the event that an error occurs while processing a request to horizon, an +**error** response will be returned to the client. This error response will +contain information detailing why the request couldn't complete successfully. + +Like HAL for successful responses, horizon uses a standard to specify how we +communicate errors to the client. Specifically, horizon uses the [Problem +Details for HTTP APIs](https://tools.ietf.org/html/draft-ietf-appsawg-http-problem-00) draft specification. The specification is short, so we recommend +you read it. In summary, when an error occurs on the server we respond with a +json document with the following attributes: + +| name | type | description | +| -------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- | +| type | url | The identifier for the error, expressed as a url. Visiting the url in a web browser will redirect you to the additional documentation for the problem. | +| title | string | A short title describing the error. | +| status | number | An HTTP status code that maps to the error. An error that is triggered due to client input will be in the 400-499 range of status code, for example. | +| detail | string | A longer description of the error meant the further explain the error to developers. | +| instance | string | A token that uniquely identifies this request. Allows server administrators to correlate a client report with server log files | + + +## Standard Errors + +There are a set of errors that can occur in any request to horizon which we +call **standard errors**. These errors are: + +- [Server Error](../reference/errors/server-error.md) +- [Rate Limit Exceeded](../reference/errors/rate-limit-exceeded.md) +- [Forbidden](../reference/errors/forbidden.md) diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/bad-request.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/bad-request.md new file mode 100644 index 0000000..cd93a38 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/bad-request.md @@ -0,0 +1,23 @@ +--- +title: Bad Request +--- + +If Horizon cannot understand a request due to invalid parameters, it will return a `bad_request` error. This is analogous to the [HTTP 400 Error](https://developer.mozilla.org/en-US/docs/Web/HTTP/Response_codes). + +If you are encountering this error, check the `invalid_field` attribute on the `extras` object to see what field is triggering the error. + +## Attributes + +As with all errors Horizon returns, `bad_request` follows the [Problem Details for HTTP APIs](https://tools.ietf.org/html/draft-ietf-appsawg-http-problem-00) draft specification guide and thus has the following attributes: + +| Attribute | Type | Description | +| --------- | ---- | ------------------------------------------------------------------------------------------------------------------------------- | +| Type | URL | The identifier for the error. This is a URL that can be visited in the browser. | +| Title | String | A short title describing the error. | +| Status | Number | An HTTP status code that maps to the error. | +| Detail | String | A more detailed description of the error. | +| Instance | String | A token that uniquely identifies this request. Allows server administrators to correlate a client report with server log files | + +## Related + +- [Malformed Transaction](./transaction-malformed.md) diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/before-history.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/before-history.md new file mode 100644 index 0000000..6ed0c6c --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/before-history.md @@ -0,0 +1,34 @@ +--- +title: Before History +--- + +A horizon server may be configured to only keep a portion of the stellar network's history stored within its database. This error will be returned when a client requests a piece of information (such as a page of transactions or a single operation) that the server can positively identify as falling outside the range of recorded history. + +## Attributes + +As with all errors Horizon returns, `before_history` follows the [Problem Details for HTTP APIs](https://tools.ietf.org/html/draft-ietf-appsawg-http-problem-00) draft specification guide and thus has the following attributes: + +| Attribute | Type | Description | +| --------- | ---- | ------------------------------------------------------------------------------------------------------------------------------- | +| Type | URL | The identifier for the error. This is a URL that can be visited in the browser. | +| Title | String | A short title describing the error. | +| Status | Number | An HTTP status code that maps to the error. | +| Detail | String | A more detailed description of the error. | +| Instance | String | A token that uniquely identifies this request. Allows server administrators to correlate a client report with server log files | + +## Example + +```shell +$ curl -X GET "https://horizon-testnet.stellar.org/transactions?cursor=1&order=desc" +{ + "type": "before_history", + "title": "Data Requested Is Before Recorded History", + "status": 410, + "detail": "This horizon instance is configured to only track a portion of the stellar network's latest history. This request is asking for results prior to the recorded history known to this horizon instance.", + "instance": "horizon-testnet-001.prd.stellar001.internal.stellar-ops.com/ngUFNhn76T-078058" +} +``` + +## Related + +[Not Found](./not-found.md) diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/forbidden.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/forbidden.md new file mode 100644 index 0000000..e3e23fc --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/forbidden.md @@ -0,0 +1,26 @@ +--- +title: Forbidden +--- + +If you request data from Horizon you are not authorized to see, Horizon will return a `forbidden` error response. This is analogous to a [HTTP 403 +Error][codes]. + +If you are encountering this error, please check your request and make sure you have permission to receive that data. + +## Attributes + +As with all errors Horizon returns, `forbidden` follows the [Problem Details for HTTP APIs](https://tools.ietf.org/html/draft-ietf-appsawg-http-problem-00) draft specification guide and thus has the following attributes: + +| Attribute | Type | Description | +| --------- | ---- | ------------------------------------------------------------------------------------------------------------------------------- | +| Type | URL | The identifier for the error. This is a URL that can be visited in the browser. | +| Title | String | A short title describing the error. | +| Status | Number | An HTTP status code that maps to the error. | +| Detail | String | A more detailed description of the error. | +| Instance | String | A token that uniquely identifies this request. Allows server administrators to correlate a client report with server log files | + + +## Related + +[Not Found](./not-found.md) +[Not Acceptable](./not-acceptable.md) diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/not-acceptable.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/not-acceptable.md new file mode 100644 index 0000000..a07d408 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/not-acceptable.md @@ -0,0 +1,40 @@ +--- +title: Not Acceptable +--- + +When your client only accepts certain formats of data from Horizon and Horizon cannot fulfill that request, Horizon will return a not_acceptable error. This is analogous to the [HTTP 406 Error](https://developer.mozilla.org/en-US/docs/Web/HTTP/Response_codes). + +If you are encountering this error, please check to make sure the criteria for content you’ll accept is correct. + + +## Attributes + + +As with all errors Horizon returns, `not_acceptable` follows the [Problem Details for HTTP APIs](https://tools.ietf.org/html/draft-ietf-appsawg-http-problem-00) draft specification guide and thus has the following attributes: + +| Attribute | Type | Description | +| --------- | ---- | ------------------------------------------------------------------------------------------------------------------------------- | +| Type | URL | The identifier for the error. This is a URL that can be visited in the browser. | +| Title | String | A short title describing the error. | +| Status | Number | An HTTP status code that maps to the error. | +| Detail | String | A more detailed description of the error. | +| Instance | String | A token that uniquely identifies this request. Allows server administrators to correlate a client report with server log files | + + +## Example + +```bash +$ curl -X GET -H "Accept: application/xml" "https://horizon-testnet.stellar.org/accounts/GALWEV6GY73RJ255JC7XUOZ2L7WZ5JJDTKATB2MUK7F3S67DVT2A6R5G" +{ + "type": "not_acceptable", + "title": "An acceptable response content-type could not be provided for this request", + "status": 406, + "instance": "horizon-testnet-001.prd.stellar001.internal.stellar-ops.com/hCYL7oezXs-062662" +} +``` + +## Related + +[Not Found](./not-found.md) + +[Forbidden](./forbidden.md) diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/not-found.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/not-found.md new file mode 100644 index 0000000..1e2b482 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/not-found.md @@ -0,0 +1,38 @@ +--- +title: Not Found +--- + +When Horizon can't find whatever you are requesting, it will return a `not_found` error. This is similar to a ["404 Not Found"](https://developer.mozilla.org/en-US/docs/Web/HTTP/Response_codes) error response in HTTP. + +Incorrect URL path parameters or missing data are the common reasons for this error. If you navigate using a link from a valid response, you should never receive this error message. + +## Attributes + +As with all errors Horizon returns, `not_found` follows the [Problem Details for HTTP APIs](https://tools.ietf.org/html/draft-ietf-appsawg-http-problem-00) draft specification guide and thus has the following attributes: + +| Attribute | Type | Description | +| --------- | ---- | ------------------------------------------------------------------------------------------------------------------------------- | +| Type | URL | The identifier for the error. This is a URL that can be visited in the browser. | +| Title | String | A short title describing the error. | +| Status | Number | An HTTP status code that maps to the error. | +| Detail | String | A more detailed description of the error. | +| Instance | String | A token that uniquely identifies this request. Allows server administrators to correlate a client report with server log files | + +## Example + +```shell +$ curl -X GET "https://horizon-testnet.stellar.org/accounts/accountthatdoesntexist" +{ + "type": "not_found", + "title": "Resource Missing", + "status": 404, + "detail": "The resource at the url requested was not found. This is usually occurs for one of two reasons: The url requested is not valid, or no data in our database could be found with the parameters provided.", + "instance": "horizon-testnet-001.prd.stellar001.internal.stellar-ops.com/ngUFNhn76T-078058" +} +``` + +## Related + +[Not Acceptable](./not-acceptable.md) + +[Forbidden](./forbidden.md) diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/not-implemented.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/not-implemented.md new file mode 100644 index 0000000..8a792b6 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/not-implemented.md @@ -0,0 +1,37 @@ +--- +title: Not Implemented +--- + +If your [request method](http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html) is not supported by Horizon, Horizon will return a `not_implemented` error. This is analogous to a [HTTP 501 Error](https://developer.mozilla.org/en-US/docs/Web/HTTP/Response_codes). + +If you are encountering this error, Horizon does not have the functionality you are requesting yet. + +## Attributes + +As with all errors Horizon returns, `not_implemented` follows the [Problem Details for HTTP APIs](https://tools.ietf.org/html/draft-ietf-appsawg-http-problem-00) draft specification guide and thus has the following attributes: + +| Attribute | Type | Description | +| --------- | ---- | ------------------------------------------------------------------------------------------------------------------------------- | +| Type | URL | The identifier for the error. This is a URL that can be visited in the browser. | +| Title | String | A short title describing the error. | +| Status | Number | An HTTP status code that maps to the error. | +| Detail | String | A more detailed description of the error. | +| Instance | String | A token that uniquely identifies this request. Allows server administrators to correlate a client report with server log files. | + + +## Examples + +```shell +$ curl -X GET "https://horizon-testnet.stellar.org/ledgers/200/effects" +{ + "type": "not_implemented", + "title": "Resource Not Yet Implemented", + "status": 404, + "detail": "While the requested URL is expected to eventually point to a valid resource, the work to implement the resource has not yet been completed.", + "instance": "horizon-testnet-001.prd.stellar001.internal.stellar-ops.com/hCYL7oezXs-141917" +} +``` + +## Related + +[Server Error](./server-error.md) diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/rate-limit-exceeded.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/rate-limit-exceeded.md new file mode 100644 index 0000000..7bbe79a --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/rate-limit-exceeded.md @@ -0,0 +1,37 @@ +--- +title: Rate Limit Exceeded +--- + +When a single user makes too many requests to Horizon in a one hour time frame, Horizon returns a `rate_limit_exceeded` error. By default, Horizon allows 3600 requests per hour -- an average of one request per second. + +If you are encountering this error, please reduce your request speed. Here are some strategies for doing so: +* For collection endpoints, try specifying larger page sizes. +* Try streaming responses to watch for new data instead of pulling data every time. +* Cache immutable data, such as transaction details, locally + +See the [Rate Limiting Guide](../../reference/rate-limiting.md) for more info. + +## Attributes + +As with all errors Horizon returns, `rate_limit_exceeded` follows the [Problem Details for HTTP APIs](https://tools.ietf.org/html/draft-ietf-appsawg-http-problem-00) draft specification guide and thus has the following attributes: + +| Attribute | Type | Description | +| --------- | ---- | ------------------------------------------------------------------------------------------------------------------------------- | +| Type | URL | The identifier for the error. This is a URL that can be visited in the browser. | +| Title | String | A short title describing the error. | +| Status | Number | An HTTP status code that maps to the error. | +| Detail | String | A more detailed description of the error. | +| Instance | String | A token that uniquely identifies this request. Allows server administrators to correlate a client report with server log files. | + +Examples +```json +{ + "type": "https://stellar.org/developers/horizon/reference/errors/rate-limit-exceeded", + "title": "Rate Limit Exceeded", + "status": 429, + "details": "...", + "instance": "d3465740-ec3a-4a0b-9d4a-c9ea734ce58a" +} +``` + + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/server-error.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/server-error.md new file mode 100644 index 0000000..2eb0c91 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/server-error.md @@ -0,0 +1,40 @@ +--- +title: Internal Server Error +--- + +If there's an internal error within Horizon, Horizon will return a `server_error` response. This response is a catch-all, and can refer to many possible errors in the Horizon server: a configuration mistake, a database connection error, etc. + +Horizon does not expose information such as stack traces or raw error messages to a client. Doing so may reveal sensitive configuration data such as secret keys. + +If you are encountering this error on a server you control, please check the Horizon log files for more details. The logs should contain detailed information to help you discover the root issue. + +If you are encountering this error on the public Stellar infrastructure, please report an error on [Horizon's issue tracker](https://github.com/stellar/go/issues) and include the instance attribute. +Any other information, such as the request that triggered the response, would be most welcome. + +## Attributes + +As with all errors Horizon returns, `server_error` follows the [Problem Details for HTTP APIs](https://tools.ietf.org/html/draft-ietf-appsawg-http-problem-00) draft specification guide and thus has the following attributes: + +| Attribute | Type | Description | +| --------- | ---- | ------------------------------------------------------------------------------------------------------------------------------- | +| Type | URL | The identifier for the error. This is a URL that can be visited in the browser. | +| Title | String | A short title describing the error. | +| Status | Number | An HTTP status code that maps to the error. | +| Detail | String | A more detailed description of the error. | +| Instance | String | A token that uniquely identifies this request. Allows server administrators to correlate a client report with server log files. | + + +## Examples +```json +{ + "type": "https://www.stellar.org/docs/horizon/problems/server_error", + "title": "Internal Server Error", + "status": 500, + "details": "...", + "instance": "d3465740-ec3a-4a0b-9d4a-c9ea734ce58a" +} +``` + +## Related + +[Not Implemented](./not-implemented.md) diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/stale-history.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/stale-history.md new file mode 100644 index 0000000..0d925ab --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/stale-history.md @@ -0,0 +1,30 @@ +--- +title: Stale History +--- + +A horizon server may be configured to reject historical requests when the history is known to be further out of date than the configured threshold. In such cases, this error is returned. To resolve this error (provided you are the horizon instance's operator) please ensure that the ingestion system is running correctly and importing new ledgers. + +## Attributes + +As with all errors Horizon returns, `stale_history` follows the [Problem Details for HTTP APIs](https://tools.ietf.org/html/draft-ietf-appsawg-http-problem-00) draft specification guide and thus has the following attributes: + +| Attribute | Type | Description | +| --------- | ---- | ------------------------------------------------------------------------------------------------------------------------------- | +| Type | URL | The identifier for the error. This is a URL that can be visited in the browser. | +| Title | String | A short title describing the error. | +| Status | Number | An HTTP status code that maps to the error. | +| Detail | String | A more detailed description of the error. | +| Instance | String | A token that uniquely identifies this request. Allows server administrators to correlate a client report with server log files | + +## Example + +```shell +$ curl -X GET "https://horizon-testnet.stellar.org/transactions?cursor=1&order=desc" +{ + "type": "stale_history", + "title": "Historical DB Is Too Stale", + "status": 503, + "detail": "This horizon instance is configured to reject client requests when it can determine that the history database is lagging too far behind the connected instance of stellar-core. If you operate this server, please ensure that the ingestion system is properly running.", + "instance": "horizon-testnet-001.prd.stellar001.internal.stellar-ops.com/ngUFNhn76T-078058" +} +``` diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/transaction-failed.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/transaction-failed.md new file mode 100644 index 0000000..45f84b8 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/transaction-failed.md @@ -0,0 +1,56 @@ +--- +title: Transaction Failed +--- + +This error occurs when a client submits a transaction that was well-formed but was not included into the ledger due to some other failure. For example, a transaction may fail if: + +- The source account for transaction cannot pay the minimum fee. +- The sequence number is incorrect. +- One of the contained operations has failed such as a payment operation that overdraws the paying account. + +In almost every case, this error indicates that the transaction submitted in the initial request will never succeed. There is one exception: a transaction that fails with the `tx_bad_seq` result code (as expressed in the `result_code` field of the error) may become valid in the future if the sequence number it used was too high. + +## Attributes + +As with all errors Horizon returns, `transaction_failed` follows the [Problem Details for HTTP APIs](https://tools.ietf.org/html/draft-ietf-appsawg-http-problem-00) draft specification guide and thus has the following attributes: + +| Attribute | Type | Description | +| --------- | ---- | ------------------------------------------------------------------------------------------------------------------------------- | +| Type | URL | The identifier for the error. This is a URL that can be visited in the browser. | +| Title | String | A short title describing the error. | +| Status | Number | An HTTP status code that maps to the error. | +| Detail | String | A more detailed description of the error. | +| Instance | String | A token that uniquely identifies this request. Allows server administrators to correlate a client report with server log files. | + +In addition, the following additional data is provided in the `extras` field of the error: + +| Attribute | Type | Description | +|----------------------------|--------|-----------------------------------------------------------------------------------------------------------------------------| +| `envelope_xdr` | String | A base64-encoded representation of the TransactionEnvelope XDR whose failure triggered this response. | +| `result_xdr` | String | A base64-encoded representation of the TransactionResult XDR returned by stellar-core when submitting this transactions. | +| `result_codes.transaction` | String | The transaction result code returned by stellar-core. | +| `result_codes.operations` | Array | An array of strings, representing the operation result codes for each operation in the submitted transaction, if available. | + + +## Example +```json +{ + "type": "https://stellar.org/horizon-errors/transaction_failed", + "title": "Transaction Failed", + "status": 400, + "details": "...", + "instance": "d3465740-ec3a-4a0b-9d4a-c9ea734ce58a", + "extras": { + "envelope_xdr": "...", + "result_xdr": "...", + "result_codes": { + "transaction": "tx_failed", + "operations": [ "op_bad_auth" ] + } + } +} +``` + +## Related + +- [Transaction Malformed](./transaction-malformed.md) diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/transaction-malformed.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/transaction-malformed.md new file mode 100644 index 0000000..92ff5d9 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/errors/transaction-malformed.md @@ -0,0 +1,34 @@ +--- +title: Transaction Malformed +--- + +When you submit a malformed transaction to Horizon, Horizon will return a `transaction_malformed` error. There are many ways in which a transaction is malformed, including +* you submitted an empty string +* your base64-encoded string is invalid +* your [XDR](../../learn/xdr.md) structure is invalid +* you have leftover bytes in your [XDR](../../learn/xdr.md) structure + +If you are encountering this error, please check the contents of the transaction you are submitting. This error is similar to the [Bad Request](./bad-request.md) error response and, therefore, the [HTTP 400 Error](https://developer.mozilla.org/en-US/docs/Web/HTTP/Response_codes). + +## Attributes + +As with all errors Horizon returns, `transaction_malformed` follows the [Problem Details for HTTP APIs](https://tools.ietf.org/html/draft-ietf-appsawg-http-problem-00) draft specification guide and thus has the following attributes: + +| Attribute | Type | Description | +| --------- | ---- | ------------------------------------------------------------------------------------------------------------------------------- | +| Type | URL | The identifier for the error. This is a URL that can be visited in the browser. | +| Title | String | A short title describing the error. | +| Status | Number | An HTTP status code that maps to the error. | +| Detail | String | A more detailed description of the error. | +| Instance | String | A token that uniquely identifies this request. Allows server administrators to correlate a client report with server log files. | + +In addition, the following additional data is provided in the `extras` field of the error: + +| Attribute | Type | Description | +|----------------|--------|----------------------------------------------------| +| `envelope_xdr` | String | The submitted data that was malformed in some way. | + + +## Related + +[Bad Request](./bad-request.md) diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/paging.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/paging.md new file mode 100644 index 0000000..7545372 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/paging.md @@ -0,0 +1,11 @@ +--- +title: Paging +--- + +The Stellar network contains a lot of data and it would be infeasible to return it all at once. The paging system allows +a user to request a "page" of data containing only a limited number of results. Then, the user can use the paging system +to request results adjacent to the current page where they left off at. + +Read about the [page resource](../reference/resources/page.md) for information on the paging system's usage and representation. + + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/rate-limiting.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/rate-limiting.md new file mode 100644 index 0000000..c4a7893 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/rate-limiting.md @@ -0,0 +1,21 @@ +--- +title: Rate Limiting +--- + +In order to provide service stability, Horizon limits the number of requests a +client can perform within a one hour window. By default this is set to 3600 +requests per hour—an average of one request per second. + +## Response headers for rate limiting + +Every response from Horizon sets advisory headers to inform clients of their +standing with rate limiting system: + +| Header | Description | +| ----------------------- | ------------------------------------------------------------------------ | +| `X-RateLimit-Limit` | The maximum number of requests that the current client can make in one hour. | +| `X-RateLimit-Remaining` | The number of remaining requests for the current window. | +| `X-RateLimit-Reset` | Seconds until a new window starts. | + +In addition, a `Retry-After` header will be set when the current client is being +throttled. diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/readme.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/readme.md new file mode 100644 index 0000000..84942ad --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/readme.md @@ -0,0 +1,25 @@ +--- +title: Overview +--- + +Horizon is an API server for the Stellar ecosystem. It acts as the interface between [stellar-core](https://github.com/stellar/stellar-core) and applications that want to access the Stellar network. It allows you to submit transactions to the network, check the status of accounts, subscribe to event streams, etc. See [an overview of the Stellar ecosystem](https://www.stellar.org/developers/guides/) for details of where Horizon fits in. You can also watch a [talk on Horizon](https://www.youtube.com/watch?v=AtJ-f6Ih4A4) by Stellar.org developer Scott Fleckenstein: + +[![Horizon: API webserver for the Stellar network](https://img.youtube.com/vi/AtJ-f6Ih4A4/sddefault.jpg "Horizon: API webserver for the Stellar network")](https://www.youtube.com/watch?v=AtJ-f6Ih4A4) + +Horizon provides a RESTful API to allow client applications to interact with the Stellar network. You can communicate with Horizon using cURL or just your web browser. However, if you're building a client application, you'll likely want to use a Stellar SDK in the language of your client. +SDF provides a [JavaScript SDK](https://www.stellar.org/developers/js-stellar-sdk/learn/index.html) for clients to use to interact with Horizon. + +SDF runs a instance of Horizon that is connected to the test net: [https://horizon-testnet.stellar.org/](https://horizon-testnet.stellar.org/) and one that is connected to the public Stellar network: +[https://horizon.stellar.org/](https://horizon.stellar.org/). + +## Libraries + +SDF maintained libraries:
+- [JavaScript](https://github.com/stellar/js-stellar-sdk) +- [Java](https://github.com/stellar/java-stellar-sdk) +- [Go](https://github.com/stellar/go) + +Community maintained libraries (in various states of completeness) for interacting with Horizon in other languages:
+- [Ruby](https://github.com/stellar/ruby-stellar-sdk) +- [Python](https://github.com/StellarCN/py-stellar-base) +- [C#](https://github.com/QuantozTechnology/csharp-stellar-base) diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/account.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/account.md new file mode 100644 index 0000000..3924f86 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/account.md @@ -0,0 +1,114 @@ +--- +title: Account +--- + +In the Stellar network, users interact using **accounts** which can be controlled by a corresponding keypair that can authorize transactions. One can create a new account with the [Create Account](./operation.md#create-account) operation. + +To learn more about the concept of accounts in the Stellar network, take a look at the [Stellar account concept guide](https://www.stellar.org/developers/learn/concepts/accounts.html). + +When horizon returns information about an account it uses the following format: + +## Attributes +| Attribute | Type | | +|--------------|------------------|------------------------------------------------------------------------------------------------------------------------| +| id | string | The canonical id of this account, suitable for use as the :id parameter for url templates that require an account's ID. | +| account_id | string | The account's public key encoded into a base32 string representation. | +| sequence | number | The current sequence number that can be used when submitting a transaction from this account. | +| subentry_count | number | The number of [account subentries](https://www.stellar.org/developers/guides/concepts/ledger.html#ledger-entries). | +| balances | array of objects | An array of the native asset or credits this account holds. | +| thresholds | object | An object of account flags. | +| signers | array of objects | An array of account signers with their weights. | +| data | object | An array of account data fields. | + +## Links +| rel | Example | Description | `templated` | +|--------------|---------------------------------------------------------------------------------------------------|------------------------------------------------------------|-------------| +| data | `/accounts/GAOEWNUEKXKNGB2AAOX6S6FEP6QKCFTU7KJH647XTXQXTMOAUATX2VF5/data/{key}` | [Data fields](./data.md) related to this account | true | +| effects | `/accounts/GAOEWNUEKXKNGB2AAOX6S6FEP6QKCFTU7KJH647XTXQXTMOAUATX2VF5/effects/{?cursor,limit,order}` | The [effects](./effect.md) related to this account | true | +| offers | `/accounts/GAOEWNUEKXKNGB2AAOX6S6FEP6QKCFTU7KJH647XTXQXTMOAUATX2VF5/offers/{?cursor,limit,order}` | The [offers](./offer.md) related to this account | true | +| operations | `/accounts/GAOEWNUEKXKNGB2AAOX6S6FEP6QKCFTU7KJH647XTXQXTMOAUATX2VF5/operations/{?cursor,limit,order}` | The [operations](./operation.md) related to this account | true | +| payments | `/accounts/GAOEWNUEKXKNGB2AAOX6S6FEP6QKCFTU7KJH647XTXQXTMOAUATX2VF5/payments/{?cursor,limit,order}` | The [payments](./payment.md) related to this account | true | +| trades | `/accounts/GAOEWNUEKXKNGB2AAOX6S6FEP6QKCFTU7KJH647XTXQXTMOAUATX2VF5/trades/{?cursor,limit,order}` | The [trades](./trade.md) related to this account | true | +| transactions | `/accounts/GAOEWNUEKXKNGB2AAOX6S6FEP6QKCFTU7KJH647XTXQXTMOAUATX2VF5/transactions/{?cursor,limit,order}` | The [transactions](./transaction.md) related to this account | true | + + +## Example + +```json +{ + "_links": { + "self": { + "href": "https://horizon-testnet.stellar.org/accounts/GBRTWTVW65NO4AER7W6G5CTVWGZCLQJIKJTAX523Q5GPU6TNJONXOR23" + }, + "transactions": { + "href": "https://horizon-testnet.stellar.org/accounts/GBRTWTVW65NO4AER7W6G5CTVWGZCLQJIKJTAX523Q5GPU6TNJONXOR23/transactions{?cursor,limit,order}", + "templated": true + }, + "operations": { + "href": "https://horizon-testnet.stellar.org/accounts/GBRTWTVW65NO4AER7W6G5CTVWGZCLQJIKJTAX523Q5GPU6TNJONXOR23/operations{?cursor,limit,order}", + "templated": true + }, + "payments": { + "href": "https://horizon-testnet.stellar.org/accounts/GBRTWTVW65NO4AER7W6G5CTVWGZCLQJIKJTAX523Q5GPU6TNJONXOR23/payments{?cursor,limit,order}", + "templated": true + }, + "effects": { + "href": "https://horizon-testnet.stellar.org/accounts/GBRTWTVW65NO4AER7W6G5CTVWGZCLQJIKJTAX523Q5GPU6TNJONXOR23/effects{?cursor,limit,order}", + "templated": true + }, + "offers": { + "href": "https://horizon-testnet.stellar.org/accounts/GBRTWTVW65NO4AER7W6G5CTVWGZCLQJIKJTAX523Q5GPU6TNJONXOR23/offers{?cursor,limit,order}", + "templated": true + }, + "trades": { + "href": "https://horizon-testnet.stellar.org/accounts/GBRTWTVW65NO4AER7W6G5CTVWGZCLQJIKJTAX523Q5GPU6TNJONXOR23/trades{?cursor,limit,order}", + "templated": true + }, + "data": { + "href": "https://horizon-testnet.stellar.org/accounts/GBRTWTVW65NO4AER7W6G5CTVWGZCLQJIKJTAX523Q5GPU6TNJONXOR23/data/{key}", + "templated": true + } + }, + "id": "GBRTWTVW65NO4AER7W6G5CTVWGZCLQJIKJTAX523Q5GPU6TNJONXOR23", + "paging_token": "", + "account_id": "GBRTWTVW65NO4AER7W6G5CTVWGZCLQJIKJTAX523Q5GPU6TNJONXOR23", + "sequence": "26509955490119684", + "subentry_count": 1, + "thresholds": { + "low_threshold": 0, + "med_threshold": 0, + "high_threshold": 0 + }, + "flags": { + "auth_required": false, + "auth_revocable": false + }, + "balances": [ + { + "balance": "9999.9999600", + "asset_type": "native" + } + ], + "signers": [ + { + "public_key": "GBRTWTVW65NO4AER7W6G5CTVWGZCLQJIKJTAX523Q5GPU6TNJONXOR23", + "weight": 1 + } + ], + "data": { + "club": "MTAw" + } +} +``` + +## Endpoints + +| Resource | Type | Resource URI Template | +|--------------------------|------------|--------------------------------------| +| [Account Details](../accounts-single.md) | Single | `/accounts/:id` | +| [Account Data](../data-for-account.md) | Single | `/accounts/:id/data/:key` | +| [Account Transactions](../transactions-for-account.md) | Collection | `/accounts/:account_id/transactions` | +| [Account Operations](../operations-for-account.md) | Collection | `/accounts/:account_id/operations` | +| [Account Payments](../payments-for-account.md) | Collection | `/accounts/:account_id/payments` | +| [Account Effects](../effects-for-account.md) | Collection | `/accounts/:account_id/effects` | +| [Account Offers](../offers-for-account.md) | Collection | `/accounts/:account_id/offers` | diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/data.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/data.md new file mode 100644 index 0000000..3642955 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/data.md @@ -0,0 +1,21 @@ +--- +title: Data +--- + +Each account in Stellar network can contain multiple key/value pairs associated with it. Horizon can be used to retrieve value of each data key. + +When horizon returns information about a single account data key it uses the following format: + +## Attributes + +| Attribute | Type | | +| --- | --- | --- | +| value | base64-encoded string | The base64-encoded value for the key | + +## Example + +```json +{ + "value": "MTAw" +} +``` diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/effect.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/effect.md new file mode 100644 index 0000000..b01dc39 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/effect.md @@ -0,0 +1,118 @@ +--- +title: Effect +--- + +A successful operation will yield zero or more **effects**. These effects +represent specific changes that occur in the ledger, but are not necessarily +directly reflected in the [ledger](https://www.stellar.org/developers/learn/concepts/ledger.html) or [history](https://github.com/stellar/stellar-core/blob/master/docs/history.md), as [transactions](https://www.stellar.org/developers/learn/concepts/transactions.html) and [operations](https://www.stellar.org/developers/learn/concepts/operations.html) are. + +## Effect types + +We can distinguish 4 effect groups: +- Account effects +- Signer effects +- Trustline effects +- Trading effects + +### Account effects + +| Type | Operation | +| --- | --- | +| Account Created | create_account | +| Account Removed | merge_account | +| Account Credited | create_account, payment, path_payment, merge_account | +| Account Debited | create_account, payment, path_payment, merge_account | +| Account Thresholds Updated | set_options | +| Account Home Domain Updated | set_options | +| Account Flags Updated | set_options | + +### Signer effects + +| Type | Operation | +| --- | --- | +| Signer Created | set_options | +| Signer Removed | set_options | +| Signer Updated | set_options | + +### Trustline effects + +| Type | Operation | +| --- | --- | +| Trustline Created | change_trust | +| Trustline Removed | change_trust | +| Trustline Updated | change_trust, allow_trust | +| Trustline Authorized | allow_trust | +| Trustline Deauthorized | allow_trust | + +### Trading effects + +| Type | Operation | +| --- | --- | +| Offer Created | manage_offer, create_passive_offer | +| Offer Removed | manage_offer, create_passive_offer, path_payment | +| Offer Updated | manage_offer, create_passive_offer, path_payment | +| Trade | manage_offer, create_passive_offer, path_payment | + + +## Attributes + +Attributes depend on effect type. + +## Links + +| rel | Example | Relation | +| --- | ------- | -------- | +| self | `/effects?order=asc\u0026limit=1` | | +| prev | `/effects?order=desc\u0026limit=1\u0026cursor=141733924865-1` | | +| next | `/effects?order=asc\u0026limit=1\u0026cursor=141733924865-1` | | +| operation | `/operations/141733924865` | Operation that created the effect | + +## Example + +```json +{ + "_embedded": { + "records": [ + { + "_links": { + "operation": { + "href": "/operations/141733924865" + }, + "precedes": { + "href": "/effects?cursor=141733924865-1\u0026order=asc" + }, + "succeeds": { + "href": "/effects?cursor=141733924865-1\u0026order=desc" + } + }, + "account": "GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K", + "paging_token": "141733924865-1", + "starting_balance": "10000000.0", + "type_i": 0, + "type": "account_created" + } + ] + }, + "_links": { + "next": { + "href": "/effects?order=asc\u0026limit=1\u0026cursor=141733924865-1" + }, + "prev": { + "href": "/effects?order=desc\u0026limit=1\u0026cursor=141733924865-1" + }, + "self": { + "href": "/effects?order=asc\u0026limit=1\u0026cursor=" + } + } +} +``` + +## Endpoints + +| Resource | Type | Resource URI Template | +| ------------------------ | ---------- | ------------------------------------ | +| [All Effects](../effects-all.md) | Collection | `/effects` | +| [Operation Effects](../effects-for-operation.md) | Collection | `/operations/:id/effects` | +| [Account Effects](../effects-for-account.md) | Collection | `/accounts/:account_id/effects` | +| [Ledger Effects](../effects-for-ledger.md) | Collection | `/ledgers/:ledger_id/effects` | + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/ledger.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/ledger.md new file mode 100644 index 0000000..2df25b4 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/ledger.md @@ -0,0 +1,85 @@ +--- +title: Ledger +--- + +A **ledger** resource contains information about a given ledger. + +To learn more about the concept of ledgers in the Stellar network, take a look at the [Stellar ledger concept guide](https://www.stellar.org/developers/learn/concepts/ledger.html). + +## Attributes +| Attribute | Type | | +|-------------------|--------|-------------------------------------------------------------------------------------------------------------------------------| +| id | string | The id is a unique identifier for this ledger. | +| paging_token | number | A [paging token](./page.md) suitable for use as a `cursor` parameter. | +| hash | string | A hex-encoded SHA-256 hash of the ledger's [XDR](../../learn/xdr.md)-encoded form. | +| prev_hash | string | The hash of the ledger that chronologically came before this one. | +| sequence | number | Sequence number of this ledger, suitable for use as the as the :id parameter for url templates that require a ledger number. | +| transaction_count | number | The number of transactions in this ledger. | +| operation_count | number | The number of operations in this ledger. | +| closed_at | string | An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) formatted string of when this ledger was closed. | +| total_coins | string | The total number of lumens in circulation. | +| fee_pool | string | The sum of all transaction fees *(in lumens)* since the last inflation operation. They are redistributed during [inflation]. | +| base_fee | number | The [fee] the network charges per operation in a transaction. | +| base_reserve | string | The [reserve][fee] the network uses when calculating an account's minimum balance. | +| max_tx_set_size | number | The maximum number of transactions validators have agreed to process in a given ledger. | + +## Links +| | Example | Relation | templated | +|--------------|---------------------------------------------------|---------------------------------|-----------| +| self | `/ledgers/500` | | | +| effects | `/ledgers/500/effects/{?cursor,limit,order}` | The effects in this transaction | true | +| operations | `/ledgers/500/operations/{?cursor,limit,order}` | The operations in this ledger | true | +| transactions | `/ledgers/500/transactions/{?cursor,limit,order}` | The transactions in this ledger | true | + + +## Example + +```json +{ + "_links": { + "effects": { + "href": "/ledgers/500/effects/{?cursor,limit,order}", + "templated": true + }, + "operations": { + "href": "/ledgers/500/operations/{?cursor,limit,order}", + "templated": true + }, + "self": { + "href": "/ledgers/500" + }, + "transactions": { + "href": "/ledgers/500/transactions/{?cursor,limit,order}", + "templated": true + } + }, + "id": "689f00d4824b8e69330bf4ad7eb10092ff2f8fdb76d4668a41eebb9469ef7f30", + "paging_token": "2147483648000", + "hash": "689f00d4824b8e69330bf4ad7eb10092ff2f8fdb76d4668a41eebb9469ef7f30", + "prev_hash": "b608e110c7cc58200c912140f121af50dc5ef407aabd53b76e1741080aca1cf0", + "sequence": 500, + "transaction_count": 0, + "operation_count": 0, + "closed_at": "2015-07-09T21:39:28Z", + "total_coins": "100000000000.0000000", + "fee_pool": "0.0025600", + "base_fee": 100, + "base_reserve": "10.0000000", + "max_tx_set_size": 50 +} +``` + +## Endpoints +| Resource | Type | Resource URI Template | +|-------------------------|------------|------------------------------------| +| [All ledgers](../ledgers-all.md) | Collection | `/ledgers` | +| [Single Ledger](../ledgers-single.md) | Single | `/ledgers/:id` | +| [Ledger Transactions](../transactions-for-ledger.md) | Collection | `/ledgers/:ledger_id/transactions` | +| [Ledger Operations](../operations-for-ledger.md) | Collection | `/ledgers/:ledger_id/operations` | +| [Ledger Payments](../payments-for-ledger.md) | Collection | `/ledgers/:ledger_id/payments` | +| [Ledger Effects](../effects-for-ledger.md) | Collection | `/ledgers/:ledger_id/effects` | + + + +[inflation]: https://www.stellar.org/developers/learn/concepts/inflation.html +[fee]: https://www.stellar.org/developers/learn/concepts/fees.html diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/offer.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/offer.md new file mode 100644 index 0000000..f08fa05 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/offer.md @@ -0,0 +1,31 @@ +--- +title: Offer +--- + +Accounts on the Stellar network can make [offers](http://stellar.org/developers/learn/concepts/exchange.html) to buy or sell assets. Users can create offers with the [Manage Offer](http://stellar.org/developers/learn/concepts/list-of-operations.html) operation. + +Horizon only returns offers that belong to a particular account. When it does, it uses the following format: + +## Attributes +| Attribute | Type | | +|--------------|------------------|------------------------------------------------------------------------------------------------------------------------| +| id | integer | The ID of this offer. | +| paging_token | string | A [paging token](./page.md) suitable for use as a `cursor` parameter. | +| seller | string | Account id of the account making this offer. | +| selling | [Asset](http://stellar.org/developers/learn/concepts/assets.html) | The Asset this offer wants to sell. | +| buying | [Asset](http://stellar.org/developers/learn/concepts/assets.html) | The Asset this offer wants to buy. | +| amount | string | The amount of `selling` the account making this offer is willing to sell.| +| price_r | object | An object of a number numerator and number denominator that represent the buy and sell price of the currencies on offer.| +| price| string | How many units of `buying` it takes to get 1 unit of `selling`. A number representing the decimal form of `price_r`.| + +## Links +| rel | Example | Description | `templated` | +|--------------|---------------------------------------------------------------------------------------------------|------------------------------------------------------------|-------------| +| seller | `/accounts/{seller}?cursor,limit,order}` | Link to details about the account that made this offer. | true | + + +## Endpoints + +| Resource | Type | Resource URI Template | +|--------------------------|------------|--------------------------------------| +| [Account Offers](../offers-for-account.md) | Collection | `/accounts/:account_id/offers` | diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/operation.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/operation.md new file mode 100644 index 0000000..b2da81a --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/operation.md @@ -0,0 +1,633 @@ +--- +title: Operation +--- + +[Operations](https://www.stellar.org/developers/learn/concepts/operations.html) are objects that represent a desired change to the ledger: payments, +offers to exchange currency, changes made to account options, etc. Operations +are submitted to the Stellar network grouped in a [Transaction](./transaction.md). + +To learn more about the concept of operations in the Stellar network, take a look at the [Stellar operations concept guide](https://www.stellar.org/developers/learn/concepts/operations.html). + +## Operation Types + +| type | type_i | description | +|-----------------------------------------------|--------|------------------------------------------------------------------------------------------------------------| +| [CREATE_ACCOUNT](#create-account) | 0 | Creates a new account in Stellar network. +| [PAYMENT](#payment) | 1 | Sends a simple payment between two accounts in Stellar network. +| [PATH_PAYMENT](#path-payment) | 2 | Sends a path payment between two accounts in the Stellar network. +| [MANAGE_OFFER](#manage-offer) | 3 | Creates, updates or deletes an offer in the Stellar network. +| [CREATE_PASSIVE_OFFER](#create-passive-offer) | 4 | Creates an offer that won't consume a counter offer that exactly matches this offer. +| [SET_OPTIONS](#set-options) | 5 | Sets account options (inflation destination, adding signers, etc.) +| [CHANGE_TRUST](#change-trust) | 6 | Creates, updates or deletes a trust line. +| [ALLOW_TRUST](#allow-trust) | 7 | Updates the "authorized" flag of an existing trust line this is called by the issuer of the related asset. +| [ACCOUNT_MERGE](#account-merge) | 8 | Deletes account and transfers remaining balance to destination account. +| [INFLATION](#inflation) | 9 | Runs inflation. +| [MANAGE_DATA](#manage-data) | 10 | Set, modify or delete a Data Entry (name/value pair) for an account. + + +Every operation type shares a set of common attributes and links, some operations also contain +additional attributes and links specific to that operation type. + + + +## Common Attributes + +| | Type | | +|--------------|--------|-----------------------------------------------------------------------------------------------------------------------------| +| id | number | The canonical id of this operation, suitable for use as the :id parameter for url templates that require an operation's ID. | +| paging_token | any | A [paging token](./page.md) suitable for use as a `cursor` parameter. | +| type | string | A string representation of the type of operation. | +| type_i | number | Specifies the type of operation, See "Types" section below for reference. | + +## Common Links + +| | Relation | +| ----------- | ----------------------------------------- | +| self | Relative link to the current operation | +| succeeds | Relative link to the list of operations succeeding the current operation. | +| precedes | Relative link to the list of operations preceding the current operation. | +| effects | The effects this operation triggered | +| transaction | The transaction this operation is part of | + + +Each operation type will have a different set of attributes, in addition to the +common attributes listed above. + + +### Create Account + +Create Account operation represents a new account creation. + +#### Attributes + +| Field | Type | Description | +| --------------- | ------ | ----------------- | +| account | string | A new account that was funded. | +| funder | string | Account that funded a new account. | +| starting_balance | string | Amount the account was funded. | + + +#### Example +```json +{ + "_links": { + "effects": { + "href": "/operations/402494270214144/effects/{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/operations?cursor=402494270214144&order=asc" + }, + "self": { + "href": "/operations/402494270214144" + }, + "succeeds": { + "href": "/operations?cursor=402494270214144&order=desc" + }, + "transactions": { + "href": "/transactions/402494270214144" + } + }, + "account": "GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ", + "funder": "GBIA4FH6TV64KSPDAJCNUQSM7PFL4ILGUVJDPCLUOPJ7ONMKBBVUQHRO", + "id": 402494270214144, + "paging_token": "402494270214144", + "starting_balance": "10000.0", + "type_i": 0, + "type": "create_account" +} +``` + + +### Payment + +A payment operation represents a payment from one account to another. This payment +can be either a simple native asset payment or a fiat asset payment. + +#### Attributes + +| Field | Type | Description | +| --------------- | ------ | ----------------- | +| from | string | Sender of a payment. | +| to | string | Destination of a payment. | +| asset_type | string | Asset type (native / alphanum4 / alphanum12) | +| asset_code | string | Code of the destination asset. | +| asset_issuer | string | Asset issuer. | +| amount | string | Amount sent. | + +#### Links + +| | Example | Relation | +| -------- | ------------------------------------------------------------- | ----------------- | +| sender | /accounts/GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2 | Sending account | +| receiver | /accounts/GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ | Receiving account | + +#### Example + +```json +{ + "_links": { + "effects": { + "href": "/operations/58402965295104/effects/{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/operations?cursor=58402965295104&order=asc" + }, + "self": { + "href": "/operations/58402965295104" + }, + "succeeds": { + "href": "/operations?cursor=58402965295104&order=desc" + }, + "transactions": { + "href": "/transactions/58402965295104" + } + }, + "amount": "200.0", + "asset_type": "native", + "from": "GAKLBGHNHFQ3BMUYG5KU4BEWO6EYQHZHAXEWC33W34PH2RBHZDSQBD75", + "id": 58402965295104, + "paging_token": "58402965295104", + "to": "GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ", + "type_i": 1, + "type": "payment" +} +``` + + +### Path Payment + +A path payment operation represents a payment from one account to another through a path. This type of payment starts as one type of asset and ends as another type of asset. There can be other assets that are traded into and out of along the path. + + +#### Attributes + +| Field | Type | Description | +| --------------- | ------ | ----------------- | +| from | string | Sender of a payment. | +| to | string | Destination of a payment. | +| asset_code | string | Code of the destination asset. | +| asset_issuer | string | Destination asset issuer. | +| asset_type | string | Destination asset type (native / alphanum4 / alphanum12) | +| amount | string | Amount received. | +| source_asset_code | string | Code of the source asset. | +| source_asset_issuer | string | Source asset issuer. | +| source_asset_type | string | Source asset type (native / alphanum4 / alphanum12) | +| source_max | string | Max send amount. | +| source_amount | string | Amount sent. | + +#### Example + +```json +{ + "_links": { + "effects": { + "href": "/operations/25769807873/effects/{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/operations?cursor=25769807873\u0026order=asc" + }, + "self": { + "href": "/operations/25769807873" + }, + "succeeds": { + "href": "/operations?cursor=25769807873\u0026order=desc" + }, + "transaction": { + "href": "/transactions/25769807872" + } + }, + "amount": "10.0", + "asset_code": "EUR", + "asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG", + "asset_type": "credit_alphanum4", + "from": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", + "id": 25769807873, + "paging_token": "25769807873", + "source_asset_code": "USD", + "source_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", + "source_asset_type": "credit_alphanum4", + "source_amount": "10.0", + "source_max": "10.0", + "to": "GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2", + "type_i": 2, + "type": "path_payment" +} +``` + + +### Manage Offer + +A "Manage Offer" operation can create, update or delete an +offer to trade assets in the Stellar network. +It specifies an issuer, a price and amount of a given asset to +buy or sell. + +When this operation is applied to the ledger, trades can potentially be executed if +this offer crosses others that already exist in the ledger. + +In the event that there are not enough crossing orders to fill the order completely +a new "Offer" object will be created in the ledger. As other accounts make +offers or payments, this offer can potentially be filled. + +#### Attributes + +| Field | Type | Description | +| --------------- | ------ | ----------------- | +| offer_id | number | Offer ID. | +| amount | string | Amount of asset to be sold. | +| buying_asset_code | string | The code of asset to buy. | +| buying_asset_issuer | string | The issuer of asset to buy. | +| buying_asset_type | string | Type of asset to buy (native / alphanum4 / alphanum12) | +| price | string | Price to buy a buying_asset | +| price_r | Object | n: price numerator, d: price denominator | +| selling_asset_code | string | The code of asset to sell. | +| selling_asset_issuer | string | The issuer of asset to sell. | +| selling_asset_type | string | Type of asset to sell (native / alphanum4 / alphanum12) | + +#### Example + +```json +{ + "_links": { + "effects": { + "href": "/operations/592323234762753/effects{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/operations?cursor=592323234762753\u0026order=asc" + }, + "self": { + "href": "/operations/592323234762753" + }, + "succeeds": { + "href": "/operations?cursor=592323234762753\u0026order=desc" + }, + "transaction": { + "href": "/transactions/592323234762752" + } + }, + "amount": "100.0", + "buying_asset_code": "CHP", + "buying_asset_issuer": "GAC2ZUXVI5266NMMGDPBMXHH4BTZKJ7MMTGXRZGX2R5YLMFRYLJ7U5EA", + "buying_asset_type": "credit_alphanum4", + "id": 592323234762753, + "offer_id": 8, + "paging_token": "592323234762753", + "price": "2.0", + "price_r": { + "d": 1, + "n": 2 + }, + "selling_asset_code": "YEN", + "selling_asset_issuer": "GDVXG2FMFFSUMMMBIUEMWPZAIU2FNCH7QNGJMWRXRD6K5FZK5KJS4DDR", + "selling_asset_type": "credit_alphanum4", + "type_i": 3, + "type": "manage_offer" +} +``` + + +### Create Passive Offer + +“Create Passive Offer” operation creates an offer that won't consume a counter offer that exactly matches this offer. This is useful for offers just used as 1:1 exchanges for path payments. Use Manage Offer to manage this offer after using this operation to create it. + +#### Attributes + +As in [Manage Offer](#manage-offer) operation. + +#### Example + +```json +{ + "_links": { + "effects": { + "href": "/operations/1127729562914817/effects{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/operations?cursor=1127729562914817\u0026order=asc" + }, + "self": { + "href": "/operations/1127729562914817" + }, + "succeeds": { + "href": "/operations?cursor=1127729562914817\u0026order=desc" + }, + "transaction": { + "href": "/transactions/1127729562914816" + } + }, + "amount": "11.27827", + "buying_asset_code": "USD", + "buying_asset_issuer": "GDS5JW5E6DRSSN5XK4LW7E6VUMFKKE2HU5WCOVFTO7P2RP7OXVCBLJ3Y", + "buying_asset_type": "credit_alphanum4", + "id": 1127729562914817, + "offer_id": 9, + "paging_token": "1127729562914817", + "price": "1.0", + "price_r": { + "d": 1, + "n": 1 + }, + "selling_asset_type": "native", + "type_i": 4, + "type": "create_passive_offer" +} +``` + + + +### Set Options + +Use “Set Options” operation to set following options to your account: +* Set/clear account flags: + * AUTH_REQUIRED_FLAG (0x1) - if set, TrustLines are created with authorized set to `false` requiring the issuer to set it for each TrustLine. + * AUTH_REVOCABLE_FLAG (0x2) - if set, the authorized flag in TrustLines can be cleared. Otherwise, authorization cannot be revoked. +* Set the account’s inflation destination. +* Add new signers to the account. +* Set home domain. + + +#### Attributes + +| Field | Type | Description | +| --------------- | ------ | ----------------- | +| signer_key | string | The public key of the new signer. | +| signer_weight | int | The weight of the new signer (1-255). | +| master_key_weight | int | The weight of the master key (1-255). | +| low_threshold | int | The sum weight for the low threshold. | +| med_threshold | int | The sum weight for the medium threshold. | +| high_threshold | int | The sum weight for the high threshold. | +| home_domain | string | The home domain used for reverse federation lookup | +| set_flags | array | The array of numeric values of flags that has been set in this operation | +| set_flags_s | array | The array of string values of flags that has been set in this operation | +| clear_flags | array | The array of numeric values of flags that has been cleared in this operation | +| clear_flags_s | array | The array of string values of flags that has been cleared in this operation | + + +#### Example + +```json +{ + "_links": { + "effects": { + "href": "/operations/696867033714691/effects{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/operations?cursor=696867033714691\u0026order=asc" + }, + "self": { + "href": "/operations/696867033714691" + }, + "succeeds": { + "href": "/operations?cursor=696867033714691\u0026order=desc" + }, + "transaction": { + "href": "/transactions/696867033714688" + } + }, + "high_threshold": 3, + "home_domain": "stellar.org", + "id": 696867033714691, + "low_threshold": 0, + "med_threshold": 3, + "paging_token": "696867033714691", + "set_flags": [ + 1 + ], + "set_flags_s": [ + "auth_required_flag" + ], + "type_i": 5, + "type": "set_options" +} +``` + + +### Change Trust + +Use “Change Trust” operation to create/update/delete a trust line from the source account to another. The issuer being trusted and the asset code are in the given Asset object. + +#### Attributes + +| Field | Type | Description | +| --------------- | ------ | ----------------- | +| asset_code | string | Asset code. | +| asset_issuer | string | Asset issuer. | +| asset_type | string | Asset type (native / alphanum4 / alphanum12) | +| trustee | string | Trustee account. | +| trustor | string | Trustor account. | +| limit | string | The limit for the asset. | + +#### Example + +```json +{ + "_links": { + "effects": { + "href": "/operations/574731048718337/effects{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/operations?cursor=574731048718337\u0026order=asc" + }, + "self": { + "href": "/operations/574731048718337" + }, + "succeeds": { + "href": "/operations?cursor=574731048718337\u0026order=desc" + }, + "transaction": { + "href": "/transactions/574731048718336" + } + }, + "asset_code": "CHP", + "asset_issuer": "GAC2ZUXVI5266NMMGDPBMXHH4BTZKJ7MMTGXRZGX2R5YLMFRYLJ7U5EA", + "asset_type": "credit_alphanum4", + "id": 574731048718337, + "limit": "5.0", + "paging_token": "574731048718337", + "trustee": "GAC2ZUXVI5266NMMGDPBMXHH4BTZKJ7MMTGXRZGX2R5YLMFRYLJ7U5EA", + "trustor": "GDVXG2FMFFSUMMMBIUEMWPZAIU2FNCH7QNGJMWRXRD6K5FZK5KJS4DDR", + "type_i": 6, + "type": "change_trust" +} +``` + + +### Allow Trust + +Updates the "authorized" flag of an existing trust line this is called by the issuer of the asset. + +Heads up! Unless the issuing account has `AUTH_REVOCABLE_FLAG` set than the "authorized" flag can only be set and never cleared. + +#### Attributes + +| Field | Type | Description | +| ---------- | ------ | ----------------- | +| asset_code | string | Asset code. | +| asset_issuer | string | Asset issuer. | +| asset_type | string | Asset type (native / alphanum4 / alphanum12) | +| authorize | bool | `true` when allowing trust, `false` when revoking trust | +| trustee | string | Trustee account. | +| trustor | string | Trustor account. | + +#### Example + +```json +{ + "_links": { + "effects": { + "href": "/operations/34359742465/effects/{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/operations?cursor=34359742465\u0026order=asc" + }, + "self": { + "href": "/operations/34359742465" + }, + "succeeds": { + "href": "/operations?cursor=34359742465\u0026order=desc" + }, + "transaction": { + "href": "/transactions/34359742464" + } + }, + "asset_code": "USD", + "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", + "asset_type": "credit_alphanum4", + "authorize": true, + "id": 34359742465, + "paging_token": "34359742465", + "trustee": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", + "trustor": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", + "type_i": 7, + "type": "allow_trust" +} +``` + + +### Account Merge + +Removes the account and transfers all remaining XLM to the destination account. + +#### Attributes + +| Field | Type | Description | +| --------------- | ------ | ----------------- | +| into | string | Account ID where funds of deleted account were transferred. | + +#### Example +```json +{ + "_links": { + "effects": { + "href": "/operations/799357838299137/effects{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/operations?cursor=799357838299137\u0026order=asc" + }, + "self": { + "href": "/operations/799357838299137" + }, + "succeeds": { + "href": "/operations?cursor=799357838299137\u0026order=desc" + }, + "transaction": { + "href": "/transactions/799357838299136" + } + }, + "account": "GBCR5OVQ54S2EKHLBZMK6VYMTXZHXN3T45Y6PRX4PX4FXDMJJGY4FD42", + "id": 799357838299137, + "into": "GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K", + "paging_token": "799357838299137", + "type_i": 8, + "type": "account_merge" +} +``` + + +### Inflation + +Runs inflation. + +#### Example + +```json +{ + "_links": { + "effects": { + "href": "/operations/12884914177/effects/{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/operations?cursor=12884914177\u0026order=asc" + }, + "self": { + "href": "/operations/12884914177" + }, + "succeeds": { + "href": "/operations?cursor=12884914177\u0026order=desc" + }, + "transaction": { + "href": "/transactions/12884914176" + } + }, + "id": 12884914177, + "paging_token": "12884914177", + "type_i": 9, + "type": "inflation" +} +``` + + +### Manage Data + +Set, modify or delete a Data Entry (name/value pair) for an account. + +#### Example + +```json +{ + "_links": { + "self": { + "href": "/operations/5250180907536385" + }, + "transaction": { + "href": "/transactions/e0710d3e410fe6b1ba77fcfec9e3789e94ff29b2424f1f4bf51e530dbbdf221c" + }, + "effects": { + "href": "/operations/5250180907536385/effects" + }, + "succeeds": { + "href": "/effects?order=desc&cursor=5250180907536385" + }, + "precedes": { + "href": "/effects?order=asc&cursor=5250180907536385" + } + }, + "id": "5250180907536385", + "paging_token": "5250180907536385", + "source_account": "GCGG3CIRBG2TTBR4HYZJ7JLDRFKZIYOAHFXRWLU62CA2QN52P2SUQNPJ", + "type": "manage_data", + "type_i": 10, + "name": "lang", + "value": "aW5kb25lc2lhbg==" +} +``` + +## Endpoints + +| Resource | Type | Resource URI Template | +| -------------------------------------------- | ---------- | ---------------------------------- | +| [All Operations](../operations-all.md) | Collection | `/operations` | +| [Operations Details](../operations-single.md) | Single | `/operations/:id` | +| [Ledger Operations](../operations-for-ledger.md) | Collection | `/ledgers/{id}/operations{?cursor,limit,order}` | +| [Account Operations](../operations-for-account.md) | Collection | `/accounts/:account_id/operations` | +| [Account Payments](../payments-for-account.md) | Collection | `/accounts/:account_id/payments` | diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/orderbook.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/orderbook.md new file mode 100644 index 0000000..8d51aa5 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/orderbook.md @@ -0,0 +1,25 @@ +--- +title: Orderbook +--- + +[Orderbooks](https://www.stellar.org/developers/learn/concepts/exchange.html) are collections of offers for each issuer and currency pairs. Let's say you wanted to exchange EUR issued by a particular bank for BTC issued by a particular exchange. You would look at the orderbook and see who is buying `foo_bank/EUR` and selling `baz_exchange/BTC` and at what prices. + +## Attributes +| Attribute | Type | | +|--------------|------------------|------------------------------------------------------------------------------------------------------------------------| +| bids | object | Array of {`price_r`, `price`, `amount`} objects (see [offers](./offer.md)). These represent prices and amounts accounts are willing to buy for the given `selling` and `buying` pair. | +| asks | object | Array of {`price_r`, `price`, `amount`} objects (see [offers](./offer.md)). These represent prices and amounts accounts are willing to sell for the given `selling` and `buying` pair.| +| selling | [Asset](http://stellar.org/developers/learn/concepts/assets.html) | The Asset this offer wants to sell.| +| buying | [Asset](http://stellar.org/developers/learn/concepts/assets.html) | The Asset this offer wants to buy.| + +## Links + +This resource has no links. + + +## Endpoints + +| Resource | Type | Resource URI Template | +|--------------------------|------------|--------------------------------------| +| [Orderbook Details](../orderbook-details.md) | Single | `/orderbook?{orderbook_params}` | +| [Trades for Orderbook](../trades-for-orderbook.md) | Collection | `/orderbook/trades?{orderbook_params}` | diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/page.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/page.md new file mode 100644 index 0000000..f0ecb7f --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/page.md @@ -0,0 +1,91 @@ +--- +title: Page +--- + +Pages represent a subset of a larger collection of objects. +As an example, it would be unfeasible to provide the +[All Transactions](../transactions-all.md) endpoint without paging. Over time there +will be millions of transactions in the Stellar network's ledger and returning +them all over a single request would be unfeasible. + +## Attributes + +A page itself exposes no attributes. It is merely a container for embedded +records and some links to aid in iterating the entire collection the page is +part of. + +## Cursor +A `cursor` is a number that points to a specific location in a collection of resources. + +The `cursor` attribute itself is an opaque value meaning that users should not try to parse it. + +## Embedded Resources + +A page contains an embedded set of `records`, regardless of the contained resource. + +## Links + +A page provides a couple of links to ease in iteration. + +| | Example | Relation | +| ---- | ------------------------------------------------------ | ---------------------------- | +| self | `/transactions` | | +| prev | `/transactions?cursor=12884905984&order=desc&limit=10` | The previous page of results | +| next | `/transactions?cursor=12884905984&order=asc&limit=10` | The next page of results | + +## Example + +```json +{ + "_embedded": { + "records": [ + { + "_links": { + "self": { + "href": "/operations/12884905984" + }, + "transaction": { + "href": "/transaction/6391dd190f15f7d1665ba53c63842e368f485651a53d8d852ed442a446d1c69a" + }, + "precedes": { + "href": "/account/GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ/payments?cursor=12884905984&order=asc{?limit}", + "templated": true + }, + "succeeds": { + "href": "/account/GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ/payments?cursor=12884905984&order=desc{?limit}", + "templated": true + } + }, + "id": 12884905984, + "paging_token": "12884905984", + "type_i": 0, + "type": "payment", + "sender": "GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ", + "receiver": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", + "asset": { + "code": "XLM" + }, + "amount": 1000000000, + "amount_f": 100.00 + } + ] + }, + "_links": { + "next": { + "href": "/account/GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ/payments?cursor=12884905984&order=asc&limit=100" + }, + "prev": { + "href": "/account/GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ/payments?cursor=12884905984&order=desc&limit=100" + }, + "self": { + "href": "/account/GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ/payments?limit=100" + } + } +} + +``` + +## Endpoints + +Any endpoint that provides a collection of resources will represent them as pages. + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/path.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/path.md new file mode 100644 index 0000000..d263ee6 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/path.md @@ -0,0 +1,46 @@ +--- +title: Payment Path +--- + +A **path** resource contains information about a payment path. A path can be used by code to populate necessary fields on path payment operation, such as `path` and `sendMax`. + + +## Attributes +| Attribute | Type | | +|--------------------------|------------------|--------------------------------------------------------------------------------------------------------------------------------| +| path | array | An array of assets the represents the intermediary assets this path hops through | +| source_amount | string | An estimated cost for making a payment of destination_amount on this path. Suitable for use in a path payments `sendMax` field | +| destination_amount | string | The destination amount specified in the search that found this path | +| destination_asset_type | string | The type for the destination asset specified in the search that found this path | +| destination_asset_code | optional, string | The code for the destination asset specified in the search that found this path | +| destination_asset_issuer | optional, string | The issuer for the destination asset specified in the search that found this path | +| source_asset_type | string | The type for the source asset specified in the search that found this path | +| source_asset_code | optional, string | The code for the source asset specified in the search that found this path | +| source_asset_issuer | optional, string | The issuer for the source asset specified in the search that found this path | + +## Example + +```json +{ + "destination_amount": "20.0000000", + "destination_asset_code": "EUR", + "destination_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", + "destination_asset_type": "credit_alphanum4", + "path": [ + { + "asset_code": "1", + "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", + "asset_type": "credit_alphanum4" + } + ], + "source_amount": "20.0000000", + "source_asset_code": "USD", + "source_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", + "source_asset_type": "credit_alphanum4" +} +``` + +## Endpoints +| Resource | Type | Resource URI Template | +|------------------------------------------|------------|-----------------------| +| [Find Payment Paths](../path-finding.md) | Collection | `/paths` | diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/trade.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/trade.md new file mode 100644 index 0000000..72b8f1c --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/trade.md @@ -0,0 +1,42 @@ +--- +title: Trade +--- + +A trade occurs when offers are completely or partially fulfilled. For example, let's say that there exists an offer to sell 9 `foo_bank/EUR` for 3 `baz_exchange/BTC` and you make an offer to buy 3 `foo_bank/EUR` for 1 `baz_exchange/BTC`. Since your offer and the existing one cross, a trade happens. After the trade completes, + +- you are 3 `foo_bank/EUR` richer and 1 `baz_exchange/BTC` poorer +- the maker of the other offer is 1 `baz_exchange/BTC` richer and 3 `foo_bank/EUR` poorer +- your offer is completely fulfilled and no longer exists +- the other offer is partially fulfilled and becomes an offer to sell 6 `foo_bank/EUR` for 2 `baz_exchange/BTC`. The price of that offer doesn't change, but the amount does. + +Trades can also be caused by successful [path payments](https://www.stellar.org/developers/learn/concepts/exchange.html), because path payments involve fulfilling offers. + +Payments are one-way in that afterwards, the source account has a smaller balance and the destination account of the payment has a bigger one. Trades are two-way; both accounts increase and decrease their balances. + +## Attributes +| Attribute | Type | | +|--------------|------------------|------------------------------------------------------------------------------------------------------------------------| +| ID | string | The ID of this trade. | +| paging_token | string | A [paging token](./page.md) suitable for use as a `cursor` parameter.| +| seller | string | | +| sold_asset_type | string | | +| sold_asset_code | string | | +| sold_asset_issuer | string | | +| buyer | string | | +| bought_asset_type | string | | +| bought_asset_code | string | | +| bought_asset_issuer | string | | + +## Links + +| rel | Example | Description | `templated` | +|--------------|---------------------------------------------------------------------------------------------------|------------------------------------------------------------|-------------| +| seller | `/accounts/{seller}?cursor,limit,order}` | Link to details about the account that made this offer. | true | +| buyer | `/accounts/{buyer}?cursor,limit,order}` | Link to details about the account that took this offer. | true | +| order_book | `/order_book/{order_book_params} | Link to orderbook of the assets bought and sold. | true | + +## Endpoints + +| Resource | Type | Resource URI Template | +|--------------------------|------------|--------------------------------------| +| [Trades for Orderbook](../trades-for-orderbook.md) | Collection | `/orderbook/trades?{orderbook_params}` | diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/transaction.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/transaction.md new file mode 100644 index 0000000..4daeba6 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/resources/transaction.md @@ -0,0 +1,100 @@ +--- +title: Transaction +--- + +**Transactions** are the basic unit of change in the Stellar Network. + +A transaction is a grouping of [operations](./operation.md). + +To learn more about the concept of transactions in the Stellar network, take a look at the [Stellar transactions concept guide](https://www.stellar.org/developers/learn/concepts/transactions.html). + +## Attributes + +| Attribute | Type | | +| ---------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------ | +| id | string | The canonical id of this transaction, suitable for use as the :id parameter for url templates that require a transaction's ID. | +| paging_token | string | A [paging token](./page.md) suitable for use as the `cursor` parameter to transaction collection resources. | +| hash | string | A hex-encoded SHA-256 hash of the transaction's [XDR](../../learn/xdr.md)-encoded form. | +| ledger | number | Sequence number of the ledger in which this transaction was applied. | +| account | string | | +| account_sequence | number | | +| fee_paid | number | The fee paid by the source account of this transaction when the transaction was applied to the ledger. | +| operation_count | number | The number of operations that are contained within this transaction. | +| result_code | number | The numeric result code for this transaction | +| result_code_s | string | The string result code for this transaction | +| envelope_xdr | string | A base64 encoded string of the raw `TransactionEnvelope` xdr struct for this transaction | +| result_xdr | string | A base64 encoded string of the raw `TransactionResultPair` xdr struct for this transaction | +| result_meta_xdr | string | A base64 encoded string of the raw `TransactionMeta` xdr struct for this transaction | +| fee_meta_xdr | string | A base64 encoded string of the raw `LedgerEntryChanges` xdr struct produced by taking fees for this transaction. | + +## Links + +| rel | Example | Description | +| ---------------------------------------- | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | +| self | `/transactions/6391dd190f15f7d1665ba53c63842e368f485651a53d8d852ed442a446d1c69a`| | +| account | `/accounts/GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ` | The source [account](../accounts-single.md) for this transaction. | +| ledger | `/ledgers/3` | The [ledger](../ledgers-single.md) in which this transaction was applied. | +| operations | `/transactions/6391dd190f15f7d1665ba53c63842e368f485651a53d8d852ed442a446d1c69a/operations` | [Operations](../operations-for-transaction.md) included in this transaction. | +| effects | `/transactions/6391dd190f15f7d1665ba53c63842e368f485651a53d8d852ed442a446d1c69a/effects` | [Effects](../effects-for-transaction.md) which resulted by operations in this transaction. | +| precedes | `/transactions?cursor=12884905984&order=asc` | A collection of transactions that occur after this transaction. | +| succeeds | `/transactions?cursor=12884905984&order=desc` | A collection of transactions that occur before this transaction. | + +## Example + +```json +{ + "_links": { + "account": { + "href": "/accounts/GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K" + }, + "effects": { + "href": "/transactions/fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a/effects{?cursor,limit,order}", + "templated": true + }, + "ledger": { + "href": "/ledgers/146970" + }, + "operations": { + "href": "/transactions/fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a/operations{?cursor,limit,order}", + "templated": true + }, + "precedes": { + "href": "/transactions?cursor=631231343497216\u0026order=asc" + }, + "self": { + "href": "/transactions/fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a" + }, + "succeeds": { + "href": "/transactions?cursor=631231343497216\u0026order=desc" + } + }, + "id": "fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a", + "paging_token": "631231343497216", + "hash": "fa78cb43d72171fdb2c6376be12d57daa787b1fa1a9fdd0e9453e1f41ee5f15a", + "ledger": 146970, + "created_at": "2015-09-24T10:07:09Z", + "account": "GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K", + "account_sequence": 279172874343, + "fee_paid": 0, + "operation_count": 1, + "result_code": 0, + "result_code_s": "tx_success", + "envelope_xdr": "AAAAAGXNhLrhGtltTwCpmqlarh7s1DB2hIkbP//jgzn4Fos/AAAACgAAAEEAAABnAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA2ddmTOFAgr21Crs2RXRGLhiAKxicZb/IERyEZL/Y2kUAAAAXSHboAAAAAAAAAAAB+BaLPwAAAECDEEZmzbgBr5fc3mfJsCjWPDtL6H8/vf16me121CC09ONyWJZnw0PUvp4qusmRwC6ZKfLDdk8F3Rq41s+yOgQD", + "result_xdr": "AAAAAAAAAAoAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=", + "result_meta_xdr": "AAAAAAAAAAEAAAACAAAAAAACPhoAAAAAAAAAANnXZkzhQIK9tQq7NkV0Ri4YgCsYnGW/yBEchGS/2NpFAAAAF0h26AAAAj4aAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQACPhoAAAAAAAAAAGXNhLrhGtltTwCpmqlarh7s1DB2hIkbP//jgzn4Fos/AABT8kS2c/oAAABBAAAAZwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA" +} +``` + +## Endpoints + +| Resource | Type | Resource URI Template | +| ------------------------ | ---------- | ------------------------------------ | +| [All Transactions](../transactions-all.md) | Collection | `/transactions` (`GET`) | +| [Post Transaction](../transactions-create.md) | Action | `/transactions` (`POST`) | +| [Transaction Details](../transactions-single.md) | Single | `/transactions/:id` | +| [Account Transactions](../transactions-for-account.md) | Collection | `/accounts/:account_id/transactions` | +| [Ledger Transactions](../transactions-for-ledger.md) | Collection | `/ledgers/:ledger_id/transactions` | + + +## Submitting transactions +To submit a new transaction to Stellar network, it must first be built and signed locally. Then you can submit a hex representation of your transaction’s [XDR](../../learn/xdr.md) to the `/transactions` endpoint. Read more about submitting transactions in [Post Transaction](../transactions-create.md) doc. diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/responses.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/responses.md new file mode 100644 index 0000000..1d9861c --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/responses.md @@ -0,0 +1,79 @@ +--- +title: Response Format +--- + +Rather than using a fully custom way of representing the resources we expose in +Horizon, we use [HAL](http://stateless.co/hal_specification.html). HAL is a +hypermedia format in JSON that remains simple while giving us a couple of +benefits such as simpler client integration for several languages. See [this +wiki page](https://github.com/mikekelly/hal_specification/wiki/Libraries) for a +list of libraries. + +## Attributes, Links, Embedded Resources + +At its simplest, a HAL response is just a JSON object with a couple of reserved +property names: `_links` is used for expressing links and `_embedded` is used +for bundling other HAL objects with the response. Other than links and embedded +objects, **HAL is just JSON**. + +### Links + +HAL is a hypermedia format, like HTML, in that it has a mechanism to express +links between documents. Let's look at a simple example: + +```json +{ + "_links": { + "self": { + "href": "/ledgers/1" + }, + "transactions": { + "href": "/ledgers/1/transactions{?cursor,limit,order}", + "templated": true + } + }, + "id": "43cf4db3741a7d6c2322e7b646320ce9d7b099a0b3501734dcf70e74a8a4e637", + "hash": "43cf4db3741a7d6c2322e7b646320ce9d7b099a0b3501734dcf70e74a8a4e637", + "prev_hash": "", + "sequence": 1, + "transaction_count": 0, + "operation_count": 0, + "closed_at": "0001-01-01T00:00:00Z", + "total_coins": "100000000000.0000000", + "fee_pool": "0.0000000", + "base_fee": 100, + "base_reserve": "10.0000000", + "max_tx_set_size": 50 +} +``` + +The above response is for the genesis ledger of the Stellar test network, and +the links in the `_links` attribute provide links to other relavant resources in +Horizon. Notice the object beneath the `transactions` key. The key of each +link specifies that links relation to the current resource, and in this case +`transactions` means "Transactions that occurred in this ledger". Logically, +you should expect that resource to respond with a collection of transactions +with all of the results having a `ledger_sequence` attribute equal to 1. + +The `transactions` link is also _templated_, which means that the `href` +attribute of the link is actually a URI template, as specified by [RFC +6570](https://tools.ietf.org/html/rfc6570). We use URI templates to show you +what parameters a give resource can take. You must evaluate the template to a +valid URI before navigating to it. + +## Pages + +Pages represent a subset of a larger collection of objects. +As an example, it would be unfeasible to provide the +[All Transactions](../reference/transactions-all.md) endpoint without paging. Over time there +will be millions of transactions in the Stellar network's ledger and returning +them all over a single request would be unfeasible. + +Read more about paging in following docs: +- [Page](../reference/resources/page.md) +- [Paging](./paging.md) + +## Streaming + +Certain endpoints in Horizon can be called in streaming mode using Server-Sent Events. This mode will keep the connection to horizon open and horizon will continue to return responses as ledgers close. All parameters for the endpoints that allow this mode are the same. The way a caller initiates this mode is by setting `Accept: text/event-stream` in the HTTP header when you make the request. +You can read an example of using the streaming mode in the [Follow Received Payments](./tutorials/follow-received-payments.md) tutorial. diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/tutorials/follow-received-payments.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/tutorials/follow-received-payments.md new file mode 100644 index 0000000..4ea86e4 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/tutorials/follow-received-payments.md @@ -0,0 +1,211 @@ +--- +title: Follow Received Payments +--- + +This tutorial shows how easy it is to use Horizon to watch for incoming payments on an [account](../../reference/resources/account.md) +using JavaScript and `EventSource`. We will eschew using [`js-stellar-sdk`](https://github.com/stellar/js-stellar-sdk), the +high-level helper library, to show that it is possible for you to perform this +task on your own, with whatever programming language you would like to use. + +This tutorial assumes that you: + +- Have node.js installed locally on your machine. +- Have curl installed locally on your machine. +- Are running on Linux, OS X, or any other system that has access to a bash-like + shell. +- Are familiar with launching and running commands in a terminal. + +In this tutorial we will learn: + +- How to create a new account. +- How to fund your account using friendbot. +- How to follow payments to your account using curl and EventSource. + +## Project Skeleton + +Let's get started by building our project skeleton: + +```bash +$ mkdir follow_tutorial +$ cd follow_tutorial +$ npm install --save stellar-base +$ npm install --save eventsource +``` + +This should have created a `package.json` in the `follow_tutorial` directory. +You can check that everything went well by running the following command: + +```bash +$ node -e "require('stellar-base')" +``` + +Everything was successful if no output it generated from the above command. Now +let's write a script to create a new account. + +## Creating an account + +Create a new file named `make_account.js` and paste the following text into it: + +```javascript +var Keypair = require("stellar-base").Keypair; + +var newAccount = Keypair.random(); + +console.log("New key pair created!"); +console.log(" Account ID: " + newAccount.publicKey()); +console.log(" Seed: " + newAccount.secret()); +``` + +Save the file and run it: + +```bash +$ node make_account.js +New key pair created! + Account ID: GB7JFK56QXQ4DVJRNPDBXABNG3IVKIXWWJJRJICHRU22Z5R5PI65GAK3 + Seed: SCU36VV2OYTUMDSSU4EIVX4UUHY3XC7N44VL4IJ26IOG6HVNC7DY5UJO +$ +``` + +Before our account can do anything it must be funded. Indeed, before an account +is funded it does not truly exist! + +## Funding your account + +The Stellar test network provides the Friendbot, a tool that developers +can use to get testnet lumens for testing purposes. To fund your account, simply +execute the following curl command: + +```bash +$ curl "https://horizon-testnet.stellar.org/friendbot?addr=GB7JFK56QXQ4DVJRNPDBXABNG3IVKIXWWJJRJICHRU22Z5R5PI65GAK3" +``` + +Don't forget to replace the account id above with your own. If the request +succeeds, you should see a response like: + +```json +{ + "hash": "ed9e96e136915103f5d8978cbb2036628e811f2c59c4c3d88534444cf504e360", + "result": "received", + "submission_result": "000000000000000a0000000000000001000000000000000000000000" +} +``` + +After a few seconds, the Stellar network will perform consensus, close the +ledger, and your account will have been created. Next up we will write a command +that watches for new payments to your account and outputs a message to the +terminal. + +## Following payments using `curl` + +To follow new payments connected to your account you simply need to send `Accept: text/event-stream` header to the [/payments](../../reference/payments-all.md) endpoint. + +```bash +$ curl -H "Accept: text/event-stream" "https://horizon-testnet.stellar.org/accounts/GB7JFK56QXQ4DVJRNPDBXABNG3IVKIXWWJJRJICHRU22Z5R5PI65GAK3/payments" +``` + +As a result you will see something like: + +```bash +retry: 1000 +event: open +data: "hello" + +id: 713226564145153 +data: {"_links":{"effects":{"href":"/operations/713226564145153/effects/{?cursor,limit,order}","templated":true}, + "precedes":{"href":"/operations?cursor=713226564145153\u0026order=asc"}, + "self":{"href":"/operations/713226564145153"}, + "succeeds":{"href":"/operations?cursor=713226564145153\u0026order=desc"}, + "transactions":{"href":"/transactions/713226564145152"}}, + "account":"GB7JFK56QXQ4DVJRNPDBXABNG3IVKIXWWJJRJICHRU22Z5R5PI65GAK3", + "funder":"GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K", + "id":713226564145153, + "paging_token":"713226564145153", + "starting_balance":"10000", + "type_i":0, + "type":"create_account"} +``` + +Every time you receive a new payment you will get a new row of data. Payments is not the only endpoint that supports streaming. You can also stream transactions [/transactions](../../reference/transactions-all.md) and operations [/operations](../../reference/operations-all.md). + +## Following payments using `EventStream` + +> **Warning!** `EventSource` object does not reconnect for certain error types so it can stop working. +> If you need a reliable streaming connection please use our [SDK](https://github.com/stellar/js-stellar-sdk). + +Another way to follow payments is writing a simple JS script that will stream payments and print them to console. Create `stream_payments.js` file and paste the following code into it: + +```js +var EventSource = require('eventsource'); +var es = new EventSource('https://horizon-testnet.stellar.org/accounts/GB7JFK56QXQ4DVJRNPDBXABNG3IVKIXWWJJRJICHRU22Z5R5PI65GAK3/payments'); +es.onmessage = function(message) { + var result = message.data ? JSON.parse(message.data) : message; + console.log('New payment:'); + console.log(result); +}; +es.onerror = function(error) { + console.log('An error occured!'); +} +``` +Now, run our script: `node stream_payments.js`. You should see following output: +```bash +New payment: +{ _links: + { effects: + { href: '/operations/713226564145153/effects/{?cursor,limit,order}', + templated: true }, + precedes: { href: '/operations?cursor=713226564145153&order=asc' }, + self: { href: '/operations/713226564145153' }, + succeeds: { href: '/operations?cursor=713226564145153&order=desc' }, + transactions: { href: '/transactions/713226564145152' } }, + account: 'GB7JFK56QXQ4DVJRNPDBXABNG3IVKIXWWJJRJICHRU22Z5R5PI65GAK3', + funder: 'GBS43BF24ENNS3KPACUZVKK2VYPOZVBQO2CISGZ777RYGOPYC2FT6S3K', + id: 713226564145153, + paging_token: '713226564145153', + starting_balance: '10000', + type_i: 0, + type: 'create_account' } +``` + +## Testing it out + +We now know how to get a stream of transactions to an account. Let's check if our solution actually works and if new payments appear. Let's watch as we send a payment from our account to another account. + +First, let's check our account sequence number so we can create a payment operation. To do this we send a request to horizon: + +```bash +$ curl "https://horizon-testnet.stellar.org/accounts/GB7JFK56QXQ4DVJRNPDBXABNG3IVKIXWWJJRJICHRU22Z5R5PI65GAK3" +``` + +Sequence number can be found under the `sequence` field. The current sequence number is `713226564141056`. Save this value somewhere. + +Now, create `make_payment.js` file and paste the following code into it: + +```js +var StellarBase = require("stellar-base"); + +var keypair = StellarBase.Keypair.fromSecret('SCU36VV2OYTUMDSSU4EIVX4UUHY3XC7N44VL4IJ26IOG6HVNC7DY5UJO'); +var account = new StellarBase.Account(keypair.publicKey(), "713226564141056"); + +var asset = StellarBase.Asset.native(); +var amount = "100"; +var transaction = new StellarBase.TransactionBuilder(account) + .addOperation(StellarBase.Operation.payment({ + destination: StellarBase.Keypair.random().publicKey(), + asset: asset, + amount: amount + })) + .addSigner(keypair) + .build(); + +console.log(transaction.toEnvelope().toXDR().toString("base64")); +``` + +After running this script you should see a signed transaction blob. To submit this transaction we send it to horizon or stellar-core. But before we do, let's open a new console and start our previous script by `node stream_payments.js`. + +Now to send a transaction just use horizon: + +```bash +curl -H "Content-Type: application/json" -X POST -d '{"tx":"AAAAAH6Sq76F4cHVMWvGG4AtNtFVIvayUxSgR401rPY9ej3TAAAD6AACiK0AAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAKc1j3y10+nI+sxuXlmFz71JS35mp/RcPCP45Gw0obdAAAAAAAAAAAAExLQAAAAAAAAAAAT16PdMAAABAsJTBC5N5B9Q/9+ZKS7qkMd/wZHWlP6uCCFLzeD+JWT60/VgGFCpzQhZmMg2k4Vg+AwKJTwko3d7Jt3Y6WhjLCg=="}' "https://horizon-testnet.stellar.org/transactions" +``` + +You should see a new payment in a window running `stream_payments.js` script. diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/xdr.md b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/xdr.md new file mode 100644 index 0000000..72ebdc8 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/docs/reference/xdr.md @@ -0,0 +1,25 @@ +--- +title: XDR +--- + +**XDR**, also known as _External Data Representation_, is used extensively in +the Stellar Network, especially in the core protocol. The ledger, transactions, results, +history, and even the messages passed between computers running stellar-core +are encoded using XDR. + +XDR is specified in [RFC 4506](http://tools.ietf.org/html/rfc4506.html). + +Since XDR is a binary format and not known as widely as JSON for example, we try +to hide most of it from Horizon. Instead, we opt to interpret the XDR for you +and present the values as JSON attributes. That said, we also expose the XDR +to you so you can get access to the raw, canonical data. + +In general, Horizon will encode the XDR structures in base64 so that they can be +transmitted within a json body. You should decode the base64 string +into a byte stream, then decode the XDR into an in-memory data structure. + +## .X files + +Data structures in XDR are specified in an _interface definition file_ (IDL). +The IDL files used for the Stellar Network are available +[on GitHub](https://github.com/stellar/stellar-core/tree/master/src/xdr). diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/errors/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/errors/main.go new file mode 100644 index 0000000..a0ffc97 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/errors/main.go @@ -0,0 +1,47 @@ +package errors + +import ( + "fmt" + "net/http" + + "github.com/getsentry/raven-go" + "github.com/go-errors/errors" +) + +// FromPanic extracts the err from the result of a recover() call. +func FromPanic(rec interface{}) error { + err, ok := rec.(error) + if !ok { + err = fmt.Errorf("%s", rec) + } + + return errors.Wrap(err, 4) +} + +// ReportToSentry reports err to the configured sentry server. Optionally, +// specifying a non-nil `r` will include information in the report about the +// current http request. +func ReportToSentry(err error, r *http.Request) { + st := raven.NewStacktrace(4, 3, []string{"github.org/stellar"}) + exc := raven.NewException(err, st) + + var packet *raven.Packet + if r != nil { + h := raven.NewHttp(r) + packet = raven.NewPacket(err.Error(), exc, h) + } else { + packet = raven.NewPacket(err.Error(), exc) + } + + raven.Capture(packet, nil) +} + +// Stack returns the stack, as a string, if one can be extracted from `err`. +func Stack(err error) string { + + if stackProvider, ok := err.(*errors.Error); ok { + return string(stackProvider.Stack()) + } + + return "unknown" +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/friendbot/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/friendbot/main.go new file mode 100644 index 0000000..02508a4 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/friendbot/main.go @@ -0,0 +1,102 @@ +package friendbot + +import ( + "errors" + "sync" + + . "github.com/stellar/go/build" + "github.com/stellar/go/keypair" + "github.com/stellar/go/services/horizon/internal/txsub" + "golang.org/x/net/context" +) + +// Bot represents the friendbot subsystem. +type Bot struct { + Submitter *txsub.System + Secret string + Network string + + sequence uint64 + lock sync.Mutex +} + +// Pay funds the account at `address` +func (bot *Bot) Pay(ctx context.Context, address string) (result txsub.Result) { + + // establish initial sequence if needed + if bot.sequence == 0 { + result.Err = bot.refreshSequence(ctx) + if result.Err != nil { + return + } + } + + var envelope string + envelope, result.Err = bot.makeTx(address) + if result.Err != nil { + return + } + + resultChan := bot.Submitter.Submit(ctx, envelope) + + select { + case result := <-resultChan: + if result.Err != nil { + bot.refreshSequence(ctx) + } + return result + case <-ctx.Done(): + return txsub.Result{Err: txsub.ErrCanceled} + } +} + +func (bot *Bot) makeTx(address string) (string, error) { + bot.lock.Lock() + defer bot.lock.Unlock() + + tx := Transaction( + SourceAccount{bot.Secret}, + Sequence{bot.sequence + 1}, + Network{bot.Network}, + CreateAccount( + Destination{address}, + NativeAmount{"10000.00"}, + ), + ) + + if tx.Err != nil { + return "", tx.Err + } + + bot.sequence++ + + txe := tx.Sign(bot.Secret) + + return txe.Base64() +} + +func (bot *Bot) refreshSequence(ctx context.Context) error { + bot.lock.Lock() + defer bot.lock.Unlock() + + addy := bot.address() + sp := bot.Submitter.Sequences + + seqs, err := sp.Get([]string{addy}) + if err != nil { + return err + } + + seq, ok := seqs[addy] + if !ok { + return errors.New("friendbot account not found") + } + + bot.sequence = seq + return nil +} + +func (bot *Bot) address() string { + kp := keypair.MustParse(bot.Secret) + return kp.Address() +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/friendbot/main_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/friendbot/main_test.go new file mode 100644 index 0000000..dfff5f9 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/friendbot/main_test.go @@ -0,0 +1,42 @@ +package friendbot + +import ( + "testing" + + "sync" + + "github.com/stellar/go/services/horizon/internal/test" +) + +// REGRESSION: ensure that we can craft a transaction +func TestFriendbot_makeTx(t *testing.T) { + tt := test.Start(t).Scenario("base") + defer tt.Finish() + + fb := &Bot{ + Secret: "SAQWC7EPIYF3XGILYVJM4LVAVSLZKT27CTEI3AFBHU2VRCMQ3P3INPG5", + Network: "Test SDF Network ; September 2015", + sequence: 2, + } + + _, err := fb.makeTx("GDJIN6W6PLTPKLLM57UW65ZH4BITUXUMYQHIMAZFYXF45PZVAWDBI77Z") + + tt.Require.NoError(err) + + // ensure we're race free. NOTE: presently, gb can't + // run with -race on... we'll confirm this works when + // horizon is in the monorepo + var wg sync.WaitGroup + wg.Add(2) + go func() { + _, err := fb.makeTx("GDJIN6W6PLTPKLLM57UW65ZH4BITUXUMYQHIMAZFYXF45PZVAWDBI77Z") + tt.Assert.NoError(err) + wg.Done() + }() + go func() { + _, err := fb.makeTx("GDJIN6W6PLTPKLLM57UW65ZH4BITUXUMYQHIMAZFYXF45PZVAWDBI77Z") + tt.Assert.NoError(err) + wg.Done() + }() + wg.Wait() +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/helpers_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/helpers_test.go new file mode 100644 index 0000000..b0dfd3b --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/helpers_test.go @@ -0,0 +1,67 @@ +package horizon + +import ( + "bytes" + "encoding/json" + "fmt" + "log" + + "github.com/PuerkitoBio/throttled" + hlog "github.com/stellar/go/services/horizon/internal/log" + "github.com/stellar/go/services/horizon/internal/test" +) + +func NewTestApp() *App { + app, err := NewApp(NewTestConfig()) + + if err != nil { + log.Panic(err) + } + + return app +} + +func NewTestConfig() Config { + return Config{ + DatabaseURL: test.DatabaseURL(), + StellarCoreDatabaseURL: test.StellarCoreDatabaseURL(), + RateLimit: throttled.PerHour(1000), + LogLevel: hlog.InfoLevel, + } +} + +func NewRequestHelper(app *App) test.RequestHelper { + return test.NewRequestHelper(app.web.router) +} + +func ShouldBePageOf(actual interface{}, options ...interface{}) string { + body := actual.(*bytes.Buffer) + expected := options[0].(int) + + var result map[string]interface{} + err := json.Unmarshal(body.Bytes(), &result) + + if err != nil { + return fmt.Sprintf("Could not unmarshal json:\n%s\n", body.String()) + } + + embedded, ok := result["_embedded"] + + if !ok { + return "No _embedded key in response" + } + + records, ok := embedded.(map[string]interface{})["records"] + + if !ok { + return "No records key in _embedded" + } + + length := len(records.([]interface{})) + + if length != expected { + return fmt.Sprintf("Expected %d records in page, got %d", expected, length) + } + + return "" +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/httpt_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/httpt_test.go new file mode 100644 index 0000000..3109a16 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/httpt_test.go @@ -0,0 +1,61 @@ +package horizon + +import ( + "net/http" + "net/http/httptest" + "net/url" + "testing" + + "github.com/stellar/go/services/horizon/internal/test" +) + +type HTTPT struct { + Assert *Assertions + App *App + RH test.RequestHelper + *test.T +} + +// StartHTTPTest is a helper function to setup a new test that will make http +// requests. Pair it with a deferred call to FinishHTTPTest. +func StartHTTPTest(t *testing.T, scenario string) *HTTPT { + ret := &HTTPT{T: test.Start(t).Scenario(scenario)} + ret.App = NewTestApp() + ret.RH = test.NewRequestHelper(ret.App.web.router) + ret.Assert = &Assertions{ret.T.Assert} + ret.App.UpdateLedgerState() + + return ret +} + +// Post delegates to the test's request helper +func (ht *HTTPT) Get( + path string, + fn ...func(*http.Request), +) *httptest.ResponseRecorder { + return ht.RH.Get(path, fn...) +} + +// Finish closes the test app and finishes the test +func (ht *HTTPT) Finish() { + ht.T.Finish() + ht.App.Close() +} + +// Post delegates to the test's request helper +func (ht *HTTPT) Post( + path string, + form url.Values, + mods ...func(*http.Request), +) *httptest.ResponseRecorder { + return ht.RH.Post(path, form, mods...) +} + +// ReapHistory causes the test server to run `DeleteUnretainedHistory`, after +// setting the retention count to the provided number. +func (ht *HTTPT) ReapHistory(retention uint) { + ht.App.reaper.RetentionCount = retention + err := ht.App.DeleteUnretainedHistory() + ht.Require.NoError(err) + ht.App.UpdateLedgerState() +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/httpx/base_url.go b/vendor/src/github.com/stellar/go/services/horizon/internal/httpx/base_url.go new file mode 100644 index 0000000..043b099 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/httpx/base_url.go @@ -0,0 +1,31 @@ +package httpx + +import ( + "golang.org/x/net/context" + "net/url" +) + +// BaseURL returns the "base" url for this request, defined as a url containing +// the Host and Scheme portions of the request uri. +func BaseURL(ctx context.Context) *url.URL { + r := RequestFromContext(ctx) + + if r == nil { + return nil + } + + var scheme string + switch { + case r.Header.Get("X-Forwarded-Proto") != "": + scheme = r.Header.Get("X-Forwarded-Proto") + case r.TLS != nil: + scheme = "https" + default: + scheme = "http" + } + + return &url.URL{ + Scheme: scheme, + Host: r.Host, + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/httpx/client.go b/vendor/src/github.com/stellar/go/services/horizon/internal/httpx/client.go new file mode 100644 index 0000000..ad07a21 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/httpx/client.go @@ -0,0 +1,34 @@ +package httpx + +import ( + "net/http" + + "golang.org/x/net/context" +) + +var clientContextKey = 0 +var defaultClient = &http.Client{} + +// ClientFromContext retrieves a http.Client that has been bound to this context +// previously by a call to httpx.ClientContext, defaulting to a default Client +// if none has been bound +func ClientFromContext(ctx context.Context) *http.Client { + found := ctx.Value(&clientContextKey) + + if found == nil { + return defaultClient + } + + return found.(*http.Client) +} + +// ClientContext binds the provided client to a new context derived from the +// provided parent. Use httpx.ClientFromContext to retrieve the client at some +// later point. +func ClientContext(parent context.Context, client *http.Client) context.Context { + if client == nil { + panic("Cannot bind nil *http.Client to context tree") + } + + return context.WithValue(parent, &clientContextKey, client) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/httpx/client_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/httpx/client_test.go new file mode 100644 index 0000000..25b77f8 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/httpx/client_test.go @@ -0,0 +1,29 @@ +package httpx + +import ( + "net/http" + "testing" + + "golang.org/x/net/context" + + . "github.com/smartystreets/goconvey/convey" +) + +func TestClientContext(t *testing.T) { + + Convey("ClientFromContext works", t, func() { + // returns the default client + So(ClientFromContext(context.Background()), ShouldEqual, defaultClient) + + // returns a set client + c := &http.Client{} + ctx := ClientContext(context.Background(), c) + So(ClientFromContext(ctx), ShouldEqual, c) + }) + + Convey("ClientContext panics if nil is used", t, func() { + So(func() { + ClientContext(context.Background(), nil) + }, ShouldPanic) + }) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/httpx/host.go b/vendor/src/github.com/stellar/go/services/horizon/internal/httpx/host.go new file mode 100644 index 0000000..b9f7f93 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/httpx/host.go @@ -0,0 +1,21 @@ +package httpx + +import ( + "golang.org/x/net/context" +) + +var DefaultHost = "" + +func Host(ctx context.Context) string { + r := RequestFromContext(ctx) + + if r == nil { + return DefaultHost + } + + if r.Host == "" { + return DefaultHost + } + + return r.Host +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/httpx/request.go b/vendor/src/github.com/stellar/go/services/horizon/internal/httpx/request.go new file mode 100644 index 0000000..873d135 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/httpx/request.go @@ -0,0 +1,51 @@ +package httpx + +import ( + "net/http" + + "golang.org/x/net/context" +) + +var requestContextKey = 0 + +func RequestFromContext(ctx context.Context) *http.Request { + found := ctx.Value(&requestContextKey) + + if found == nil { + return nil + } + + return found.(*http.Request) +} + +// RequestContext returns a context representing the provided http action. +// It also integrates `http.CloseNotifier` with `context.Context`, returning a context +// that will be canceled when the http connection underlying `w` is closed. +func RequestContext(parent context.Context, w http.ResponseWriter, r *http.Request) (context.Context, func()) { + if r == nil { + panic("Cannot bind nil *http.Request to context tree") + } + + ctx, cancel := context.WithCancel(parent) + notifier, ok := w.(http.CloseNotifier) + + var closedByClient <-chan bool + + if ok { + closedByClient = notifier.CloseNotify() + } else { + closedByClient = make(chan bool) + } + + // listen for the connection to close, trigger cancelation + go func() { + select { + case <-closedByClient: + cancel() + case <-ctx.Done(): + return + } + }() + + return context.WithValue(ctx, &requestContextKey, r), cancel +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/cursor.go b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/cursor.go new file mode 100644 index 0000000..ed6d0f0 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/cursor.go @@ -0,0 +1,243 @@ +package ingest + +import ( + "time" + + "github.com/stellar/go/meta" + "github.com/stellar/go/xdr" + "github.com/stellar/go/services/horizon/internal/db2/core" + "github.com/stellar/go/services/horizon/internal/toid" +) + +// BeforeAndAfter loads the ledger entry for `target` before the current +// operation was applied and after the operation was applied. +func (c *Cursor) BeforeAndAfter(target xdr.LedgerKey) ( + before *xdr.LedgerEntry, + after *xdr.LedgerEntry, + err error, +) { + m := c.TransactionMetaBundle() + before, err = m.StateBefore(target, c.op) + if err != nil { + return + } + + after, err = m.StateAfter(target, c.op) + if err != nil { + return + } + + return +} + +// InLedger returns true if the cursor is on a ledger. +func (c *Cursor) InLedger() bool { + return c.lg != 0 +} + +// InOperation returns true if the cursor is on a operation. Will return false +// after advancing to a new transaction but before advancing on to the +// transaciton's first operation. +func (c *Cursor) InOperation() bool { + return c.InLedger() && c.op != -1 +} + +// InTransaction returns true if the cursor is pointing to a transaction. This +// will return false after advancing to a new ledger but prior to advancing into +// the ledger's first transaction. +func (c *Cursor) InTransaction() bool { + return c.InLedger() && c.tx != -1 +} + +// Ledger returns the current ledger +func (c *Cursor) Ledger() *core.LedgerHeader { + return &c.data.Header +} + +// LedgerID returns the current ledger's id, as used by the history system. +func (c *Cursor) LedgerID() int64 { + return toid.New(c.lg, 0, 0).ToInt64() +} + +// LedgerRange returns the beginning and end of id values that map to the +// current ledger. Useful for clearing a ledgers worth of data. +func (c *Cursor) LedgerRange() (start int64, end int64) { + if c.lg == 1 { + start = 0 + } else { + start = toid.New(c.lg, 0, 0).ToInt64() + } + + return start, toid.New(c.lg+1, 0, 0).ToInt64() +} + +// LedgerSequence returns the current ledger's sequence +func (c *Cursor) LedgerSequence() int32 { + return c.data.Sequence +} + +// NextLedger advances `c` to the next ledger in the iteration, loading a new +// LedgerBundle from the core database. Returns false if an error occurs or +// the iteration is complete. +func (c *Cursor) NextLedger() bool { + if c.Err != nil { + return false + } + + if c.lg == 0 { + c.lg = c.FirstLedger + } else { + c.lg++ + } + + if c.lg > c.LastLedger { + c.data = nil + c.lg = 0 + return false + } + + c.data = &LedgerBundle{Sequence: c.lg} + start := time.Now() + c.Err = c.data.Load(c.DB) + if c.Err != nil { + return false + } + + if c.Metrics != nil { + c.Metrics.LoadLedgerTimer.Update(time.Since(start)) + } + + c.tx = -1 + c.op = -1 + + return true +} + +// NextOp advances `c` to the next operation in the current transaction. Returns +// false if the current transaction has nothing left to visit. +func (c *Cursor) NextOp() bool { + if c.Err != nil { + return false + } + c.op++ + return c.op < len(c.Operations()) +} + +// NextTx advances `c` to the next transaction in the current ledger. Returns +// false if the current ledger has no transactions left to visit. +func (c *Cursor) NextTx() bool { + if c.Err != nil { + return false + } + c.tx++ + c.op = -1 + return c.tx < len(c.data.Transactions) +} + +// Operation returns the current operation +func (c *Cursor) Operation() *xdr.Operation { + return &c.data.Transactions[c.tx].Envelope.Tx.Operations[c.op] +} + +// OperationChanges returns all of LedgerEntryChanges that occurred in the +// course of applying the current operation. +func (c *Cursor) OperationChanges() xdr.LedgerEntryChanges { + return c.data.Transactions[c.tx].ResultMeta.MustOperations()[c.op].Changes +} + +// OperationCount returns the count of operations in the current transaction +func (c *Cursor) OperationCount() int { + return len(c.data.Transactions[c.tx].Envelope.Tx.Operations) +} + +// OperationID returns the current operations id, as used by the history system. +func (c *Cursor) OperationID() int64 { + return toid.New(c.lg, int32(c.tx+1), int32(c.op+1)).ToInt64() +} + +// OperationOrder returns the order of the current operation amongst the +// current transaction's operations. +func (c *Cursor) OperationOrder() int32 { + return int32(c.op + 1) +} + +// OperationResult returns the current operation's result record +func (c *Cursor) OperationResult() *xdr.OperationResultTr { + txr := &c.data.Transactions[c.tx].Result.Result + tr := txr.Result.MustResults()[c.op].MustTr() + return &tr +} + +// OperationSourceAccount returns the current operation's effective source +// account (i.e. default's to the transaction's source account). +func (c *Cursor) OperationSourceAccount() xdr.AccountId { + aid := c.Operation().SourceAccount + if aid != nil { + return *aid + } + + return c.TransactionSourceAccount() +} + +// OperationType returns the current operation type +func (c *Cursor) OperationType() xdr.OperationType { + return c.Operation().Body.Type +} + +// Operations returns the current transactions operations. +func (c *Cursor) Operations() []xdr.Operation { + return c.data.Transactions[c.tx].Envelope.Tx.Operations +} + +// Transaction returns the current transaction +func (c *Cursor) Transaction() *core.Transaction { + return &c.data.Transactions[c.tx] +} + +// TransactionFee returns the txfeehistory row for the current +// transaction. +func (c *Cursor) TransactionFee() *core.TransactionFee { + return &c.data.TransactionFees[c.tx] +} + +// TransactionMetaBundle provides easier access to the meta data regarding +// the application of the current transaction. +func (c *Cursor) TransactionMetaBundle() *meta.Bundle { + return &meta.Bundle{ + FeeMeta: c.TransactionFee().Changes, + TransactionMeta: c.Transaction().ResultMeta, + } +} + +// SuccessfulLedgerOperationCount returns the count of operations in the current ledger +func (c *Cursor) SuccessfulLedgerOperationCount() (ret int) { + for i := range c.data.Transactions { + if !c.data.Transactions[i].IsSuccessful() { + continue + } + ret += len(c.data.Transactions[i].Envelope.Tx.Operations) + } + return +} + +// SuccessfulTransactionCount returns the count of transactions in the current +// ledger that succeeded. +func (c *Cursor) SuccessfulTransactionCount() (ret int) { + for i := range c.data.Transactions { + if c.data.Transactions[i].IsSuccessful() { + ret++ + } + } + return +} + +// TransactionID returns the current tranaction's id, as used by the history +// system. +func (c *Cursor) TransactionID() int64 { + return toid.New(c.lg, int32(c.tx+1), 0).ToInt64() +} + +// TransactionSourceAccount returns the current transaction's source account id +func (c *Cursor) TransactionSourceAccount() xdr.AccountId { + return c.Transaction().Envelope.Tx.SourceAccount +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/cursor_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/cursor_test.go new file mode 100644 index 0000000..43954d9 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/cursor_test.go @@ -0,0 +1,59 @@ +package ingest + +import ( + "testing" + + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestCursor(t *testing.T) { + tt := test.Start(t).ScenarioWithoutHorizon("kahuna") + defer tt.Finish() + + // + c := Cursor{ + FirstLedger: 7, + LastLedger: 10, + DB: tt.CoreSession(), + } + + // Ledger 7 + tt.Require.True(c.NextLedger()) + tt.Require.True(c.NextTx()) + tt.Require.True(c.NextOp()) + tt.Require.False(c.NextOp()) + tt.Require.False(c.NextTx()) + + // Ledger 8 + tt.Require.True(c.NextLedger()) + tt.Require.True(c.NextTx()) + tt.Require.True(c.NextOp()) + tt.Require.False(c.NextOp()) + tt.Require.True(c.NextTx()) + tt.Require.True(c.NextOp()) + tt.Require.False(c.NextOp()) + tt.Require.True(c.NextTx()) + tt.Require.True(c.NextOp()) + tt.Require.False(c.NextOp()) + tt.Require.True(c.NextTx()) + tt.Require.True(c.NextOp()) + tt.Require.False(c.NextOp()) + tt.Require.False(c.NextTx()) + + // Ledger 9 + tt.Require.True(c.NextLedger()) + tt.Require.True(c.NextTx()) + tt.Require.True(c.NextOp()) + tt.Require.False(c.NextOp()) + tt.Require.False(c.NextTx()) + + // Ledger 10 + tt.Require.True(c.NextLedger()) + tt.Require.True(c.NextTx()) + tt.Require.True(c.NextOp()) + tt.Require.True(c.NextOp()) + tt.Require.False(c.NextOp()) + tt.Require.False(c.NextTx()) + + tt.Require.False(c.NextLedger()) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/effect_ingestion.go b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/effect_ingestion.go new file mode 100644 index 0000000..0316d16 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/effect_ingestion.go @@ -0,0 +1,36 @@ +package ingest + +import ( + "github.com/stellar/go/xdr" + "github.com/stellar/go/services/horizon/internal/db2/history" +) + +// Add writes an effect to the database while automatically tracking the index +// to use. +func (ei *EffectIngestion) Add(aid xdr.AccountId, typ history.EffectType, details interface{}) bool { + if ei.err != nil { + return false + } + + ei.added++ + var haid int64 + + haid, ei.err = ei.parent.getParticipantID(aid) + if ei.err != nil { + return false + } + + ei.err = ei.Dest.Effect(haid, ei.OperationID, ei.added, typ, details) + if ei.err != nil { + return false + } + + return true +} + +// Finish marks this ingestion as complete, returning any error that was recorded. +func (ei *EffectIngestion) Finish() error { + err := ei.err + ei.err = nil + return err +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/ingestion.go b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/ingestion.go new file mode 100644 index 0000000..39771d5 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/ingestion.go @@ -0,0 +1,491 @@ +package ingest + +import ( + "encoding/json" + "fmt" + "time" + + "math" + + sq "github.com/Masterminds/squirrel" + "github.com/guregu/null" + "github.com/stellar/go/support/errors" + "github.com/stellar/go/xdr" + "github.com/stellar/go/services/horizon/internal/db2/core" + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stellar/go/services/horizon/internal/db2/sqx" +) + +// ClearAll clears the entire history database +func (ingest *Ingestion) ClearAll() error { + return ingest.Clear(0, math.MaxInt64) +} + +// Clear removes a range of data from the history database, exclusive of the end +// id provided. +func (ingest *Ingestion) Clear(start int64, end int64) error { + clear := ingest.DB.DeleteRange + + err := clear(start, end, "history_effects", "history_operation_id") + if err != nil { + return err + } + err = clear(start, end, "history_operation_participants", "history_operation_id") + if err != nil { + return err + } + err = clear(start, end, "history_operations", "id") + if err != nil { + return err + } + err = clear(start, end, "history_transaction_participants", "history_transaction_id") + if err != nil { + return err + } + err = clear(start, end, "history_transactions", "id") + if err != nil { + return err + } + err = clear(start, end, "history_ledgers", "id") + if err != nil { + return err + } + err = clear(start, end, "history_trades", "history_operation_id") + if err != nil { + return err + } + + return nil +} + +// Close finishes the current transaction and finishes this ingestion. +func (ingest *Ingestion) Close() error { + return ingest.commit() +} + +// Effect adds a new row into the `history_effects` table. +func (ingest *Ingestion) Effect(aid int64, opid int64, order int, typ history.EffectType, details interface{}) error { + djson, err := json.Marshal(details) + if err != nil { + return err + } + + sql := ingest.effects.Values(aid, opid, order, typ, djson) + + _, err = ingest.DB.Exec(sql) + if err != nil { + return err + } + + return nil +} + +// Flush writes the currently buffered rows to the db, and if successful +// starts a new transaction. +func (ingest *Ingestion) Flush() error { + err := ingest.commit() + if err != nil { + return err + } + + return ingest.Start() +} + +// Ledger adds a ledger to the current ingestion +func (ingest *Ingestion) Ledger( + id int64, + header *core.LedgerHeader, + txs int, + ops int, +) error { + + sql := ingest.ledgers.Values( + CurrentVersion, + id, + header.Sequence, + header.LedgerHash, + null.NewString(header.PrevHash, header.Sequence > 1), + header.Data.TotalCoins, + header.Data.FeePool, + header.Data.BaseFee, + header.Data.BaseReserve, + header.Data.MaxTxSetSize, + time.Unix(header.CloseTime, 0).UTC(), + time.Now().UTC(), + time.Now().UTC(), + txs, + ops, + header.Data.LedgerVersion, + ) + + _, err := ingest.DB.Exec(sql) + if err != nil { + return err + } + + return nil +} + +// Operation ingests the provided operation data into a new row in the +// `history_operations` table +func (ingest *Ingestion) Operation( + id int64, + txid int64, + order int32, + source xdr.AccountId, + typ xdr.OperationType, + details map[string]interface{}, + +) error { + djson, err := json.Marshal(details) + if err != nil { + return err + } + + sql := ingest.operations.Values(id, txid, order, source.Address(), typ, djson) + _, err = ingest.DB.Exec(sql) + if err != nil { + return err + } + + return nil +} + +// OperationParticipants ingests the provided accounts `aids` as participants of +// operation with id `op`, creating a new row in the +// `history_operation_participants` table. +func (ingest *Ingestion) OperationParticipants(op int64, aids []xdr.AccountId) error { + sql := ingest.operation_participants + for _, aid := range aids { + haid, err := ingest.getParticipantID(aid) + if err != nil { + return err + } + sql = sql.Values(op, haid) + } + + _, err := ingest.DB.Exec(sql) + if err != nil { + return err + } + + return nil +} + +// Rollback aborts this ingestions transaction +func (ingest *Ingestion) Rollback() (err error) { + err = ingest.DB.Rollback() + return +} + +// Start makes the ingestion reeady, initializing the insert builders and tx +func (ingest *Ingestion) Start() (err error) { + err = ingest.DB.Begin() + if err != nil { + return + } + + ingest.createInsertBuilders() + + return +} + +// transactionInsertBuilder returns sql.InsertBuilder for a single transaction +func (ingest *Ingestion) transactionInsertBuilder(id int64, tx *core.Transaction, fee *core.TransactionFee) sq.InsertBuilder { + // Enquote empty signatures + signatures := tx.Base64Signatures() + + return ingest.transactions.Values( + id, + tx.TransactionHash, + tx.LedgerSequence, + tx.Index, + tx.SourceAddress(), + tx.Sequence(), + tx.Fee(), + len(tx.Envelope.Tx.Operations), + tx.EnvelopeXDR(), + tx.ResultXDR(), + tx.ResultMetaXDR(), + fee.ChangesXDR(), + sqx.StringArray(signatures), + ingest.formatTimeBounds(tx.Envelope.Tx.TimeBounds), + tx.MemoType(), + tx.Memo(), + time.Now().UTC(), + time.Now().UTC(), + ) +} + +// Trade records a trade into the history_trades table +func (ingest *Ingestion) Trade( + opid int64, + order int32, + buyer xdr.AccountId, + trade xdr.ClaimOfferAtom, + ledgerClosedAt int64, +) error { + + sellerAccountId, err := ingest.getParticipantID(trade.SellerId) + if err != nil { + return errors.Wrap(err, "failed to load seller account id") + } + + buyerAccountId, err := ingest.getParticipantID(buyer) + if err != nil { + return errors.Wrap(err, "failed to load buyer account id") + } + soldAssetId, err := ingest.getAssetId(trade.AssetSold) + if err != nil { + return errors.Wrap(err, "failed to get sold asset id") + } + + boughtAssetId, err := ingest.getAssetId(trade.AssetBought) + if err != nil { + return errors.Wrap(err, "failed to get bought asset id") + } + var baseAssetId, counterAssetId int64 + var baseAccountId, counterAccountId int64 + var baseAmount, counterAmount xdr.Int64 + + //map seller and buyer to base and counter based on ordering of ids + if soldAssetId < boughtAssetId { + baseAccountId, baseAssetId, baseAmount, counterAccountId, counterAssetId, counterAmount = + sellerAccountId, soldAssetId, trade.AmountSold, buyerAccountId, boughtAssetId, trade.AmountBought + } else { + baseAccountId, baseAssetId, baseAmount, counterAccountId, counterAssetId, counterAmount = + buyerAccountId, boughtAssetId, trade.AmountBought, sellerAccountId, soldAssetId, trade.AmountSold + } + + sql := ingest.trades.Values( + opid, + order, + time.Unix(ledgerClosedAt, 0).UTC(), + trade.OfferId, + baseAccountId, + baseAssetId, + baseAmount, + counterAccountId, + counterAssetId, + counterAmount, + soldAssetId < boughtAssetId, + ) + _, err = ingest.DB.Exec(sql) + if err != nil { + return errors.Wrap(err, "failed to exec sql") + } + + return nil +} + +// Transaction ingests the provided transaction data into a new row in the +// `history_transactions` table +func (ingest *Ingestion) Transaction( + id int64, + tx *core.Transaction, + fee *core.TransactionFee, +) error { + + sql := ingest.transactionInsertBuilder(id, tx, fee) + _, err := ingest.DB.Exec(sql) + if err != nil { + return err + } + + return nil +} + +// TransactionParticipants ingests the provided account ids as participants of +// transaction with id `tx`, creating a new row in the +// `history_transaction_participants` table. +func (ingest *Ingestion) TransactionParticipants(tx int64, aids []xdr.AccountId) error { + sql := ingest.transaction_participants + + for _, aid := range aids { + haid, err := ingest.getParticipantID(aid) + if err != nil { + return err + } + sql = sql.Values(tx, haid) + } + + _, err := ingest.DB.Exec(sql) + if err != nil { + return err + } + + return nil +} + +func (ingest *Ingestion) createInsertBuilders() { + ingest.ledgers = sq.Insert("history_ledgers").Columns( + "importer_version", + "id", + "sequence", + "ledger_hash", + "previous_ledger_hash", + "total_coins", + "fee_pool", + "base_fee", + "base_reserve", + "max_tx_set_size", + "closed_at", + "created_at", + "updated_at", + "transaction_count", + "operation_count", + "protocol_version", + ) + + ingest.accounts = sq.Insert("history_accounts").Columns( + "address", + ) + + ingest.transactions = sq.Insert("history_transactions").Columns( + "id", + "transaction_hash", + "ledger_sequence", + "application_order", + "account", + "account_sequence", + "fee_paid", + "operation_count", + "tx_envelope", + "tx_result", + "tx_meta", + "tx_fee_meta", + "signatures", + "time_bounds", + "memo_type", + "memo", + "created_at", + "updated_at", + ) + + ingest.transaction_participants = sq.Insert("history_transaction_participants").Columns( + "history_transaction_id", + "history_account_id", + ) + + ingest.operations = sq.Insert("history_operations").Columns( + "id", + "transaction_id", + "application_order", + "source_account", + "type", + "details", + ) + + ingest.operation_participants = sq.Insert("history_operation_participants").Columns( + "history_operation_id", + "history_account_id", + ) + + ingest.effects = sq.Insert("history_effects").Columns( + "history_account_id", + "history_operation_id", + "\"order\"", + "type", + "details", + ) + + ingest.trades = sq.Insert("history_trades").Columns( + "history_operation_id", + "\"order\"", + "ledger_closed_at", + "offer_id", + "base_account_id", + "base_asset_id", + "base_amount", + "counter_account_id", + "counter_asset_id", + "counter_amount", + "base_is_seller", + ) +} + +func (ingest *Ingestion) commit() error { + err := ingest.DB.Commit() + if err != nil { + return err + } + + return nil +} + +// Get account row id. If account is first seen, it will be inserted. +func (ingest *Ingestion) getParticipantID( + aid xdr.AccountId, +) (result int64, err error) { + + q := history.Q{Session: ingest.DB} + var existing history.Account + err = q.AccountByAddress(&existing, aid.Address()) + + if err != nil && !q.NoRows(err) { + return + } + + // already imported, return the found value + if !q.NoRows(err) { + result = existing.ID + return + } + err = ingest.DB.GetRaw( + &result, + `INSERT INTO history_accounts (address) VALUES (?) RETURNING id`, + aid.Address(), + ) + if err != nil { + return + } + + return +} + +// Get asset row id. If asset is first seen, it will be inserted. +func (ingest *Ingestion) getAssetId( + asset xdr.Asset, +) (result int64, err error) { + + q := history.Q{Session: ingest.DB} + result, err = q.GetAssetID(asset) + + if err != nil && !q.NoRows(err) { + return + } + + // already imported, return the found value + if !q.NoRows(err) { + return result, nil + } + + var ( + assetType string + assetCode string + assetIssuer string + ) + + err = asset.Extract(&assetType, &assetCode, &assetIssuer) + if err != nil { + return + } + + err = ingest.DB.GetRaw(&result, + `INSERT INTO history_assets (asset_type, asset_code, asset_issuer) VALUES (?,?,?) RETURNING id`, + assetType, assetCode, assetIssuer) + + return +} + +func (ingest *Ingestion) formatTimeBounds(bounds *xdr.TimeBounds) interface{} { + if bounds == nil { + return nil + } + + if bounds.MaxTime == 0 { + return sq.Expr("?::int8range", fmt.Sprintf("[%d,]", bounds.MinTime)) + } + + return sq.Expr("?::int8range", fmt.Sprintf("[%d,%d]", bounds.MinTime, bounds.MaxTime)) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/ingestion_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/ingestion_test.go new file mode 100644 index 0000000..08bc059 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/ingestion_test.go @@ -0,0 +1,74 @@ +package ingest + +import ( + "testing" + + "github.com/stellar/go/support/db" + "github.com/stellar/go/xdr" + "github.com/stellar/go/services/horizon/internal/db2/core" + testDB "github.com/stellar/go/services/horizon/internal/test/db" + "github.com/stellar/go/services/horizon/internal/test" + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stretchr/testify/assert" +) + +func TestEmptySignature(t *testing.T) { + ingestion := Ingestion{ + DB: &db.Session{ + DB: testDB.Horizon(t), + }, + } + ingestion.Start() + + envelope := xdr.TransactionEnvelope{} + resultPair := xdr.TransactionResultPair{} + meta := xdr.TransactionMeta{} + + xdr.SafeUnmarshalBase64("AAAAAMIK9djC7k75ziKOLJcvMAIBG7tnBuoeI34x+Pi6zqcZAAAAZAAZphYAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAynnCTTyw53VVRLOWX6XKTva63IM1LslPNW01YB0hz/8AAAAAAAAAAlQL5AAAAAAAAAAAAh0hz/8AAABA8qkkeKaKfsbgInyIkzXJhqJE5/Ufxri2LdxmyKkgkT6I3sPmvrs5cPWQSzEQyhV750IW2ds97xTHqTpOfuZCAnhSuFUAAAAA", &envelope) + xdr.SafeUnmarshalBase64("AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=", &resultPair.Result) + xdr.SafeUnmarshalBase64("AAAAAAAAAAEAAAADAAAAAQAZphoAAAAAAAAAAMIK9djC7k75ziKOLJcvMAIBG7tnBuoeI34x+Pi6zqcZAAAAF0h255wAGaYWAAAAAQAAAAMAAAAAAAAAAAAAAAADBQUFAAAAAwAAAAAtkqVYLPLYhqNMmQLPc+T9eTWp8LIE8eFlR5K4wNJKTQAAAAMAAAAAynnCTTyw53VVRLOWX6XKTva63IM1LslPNW01YB0hz/8AAAADAAAAAuOwxEKY/BwUmvv0yJlvuSQnrkHkZJuTTKSVmRt4UrhVAAAAAwAAAAAAAAAAAAAAAwAZphYAAAAAAAAAAMp5wk08sOd1VUSzll+lyk72utyDNS7JTzVtNWAdIc//AAAAF0h26AAAGaYWAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAZphoAAAAAAAAAAMp5wk08sOd1VUSzll+lyk72utyDNS7JTzVtNWAdIc//AAAAGZyCzAAAGaYWAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA", &meta) + + transaction := &core.Transaction{ + TransactionHash: "1939a8de30981e4171e1aaeca54a058a7fb06684864facba0620ab8cc5076d4f", + LedgerSequence: 1680922, + Index: 1, + Envelope: envelope, + Result: resultPair, + ResultMeta: meta, + } + + transactionFee := &core.TransactionFee{} + + builder := ingestion.transactionInsertBuilder(1, transaction, transactionFee) + sql, args, err := builder.ToSql() + assert.Equal(t, "INSERT INTO history_transactions (id,transaction_hash,ledger_sequence,application_order,account,account_sequence,fee_paid,operation_count,tx_envelope,tx_result,tx_meta,tx_fee_meta,signatures,time_bounds,memo_type,memo,created_at,updated_at) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?::character varying[],?,?,?,?,?)", sql) + assert.Equal(t, `{"8qkkeKaKfsbgInyIkzXJhqJE5/Ufxri2LdxmyKkgkT6I3sPmvrs5cPWQSzEQyhV750IW2ds97xTHqTpOfuZCAg==",""}`, args[12]) + assert.NoError(t, err) + + err = ingestion.Transaction(1, transaction, transactionFee) + assert.NoError(t, err) + + err = ingestion.Close() + assert.NoError(t, err) +} + +func TestAssetIngest(t *testing.T) { + //ingest kahuna and sample a single expected asset output + + tt := test.Start(t).ScenarioWithoutHorizon("kahuna") + defer tt.Finish() + s := ingest(tt) + q := history.Q{Session: s.Ingestion.DB} + + expectedAsset := history.Asset{ + ID : 4, + Type : "credit_alphanum4", + Code : "USD", + Issuer : "GB2QIYT2IAUFMRXKLSLLPRECC6OCOGJMADSPTRK7TGNT2SFR2YGWDARD", + } + + actualAsset := history.Asset{} + err := q.GetAssetByID(&actualAsset, 4) + tt.Require.NoError(err) + tt.Assert.Equal(expectedAsset, actualAsset) +} \ No newline at end of file diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/ledger_bundle.go b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/ledger_bundle.go new file mode 100644 index 0000000..01d4e51 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/ledger_bundle.go @@ -0,0 +1,30 @@ +package ingest + +import ( + "github.com/stellar/go/support/db" + "github.com/stellar/go/support/errors" + "github.com/stellar/go/services/horizon/internal/db2/core" +) + +// Load runs queries against `core` to fill in the records of the bundle. +func (lb *LedgerBundle) Load(db *db.Session) error { + q := &core.Q{Session: db} + // Load Header + err := q.LedgerHeaderBySequence(&lb.Header, lb.Sequence) + if err != nil { + return errors.Wrap(err, "failed to load header") + } + + // Load transactions + err = q.TransactionsByLedger(&lb.Transactions, lb.Sequence) + if err != nil { + return errors.Wrap(err, "failed to load transactions") + } + + err = q.TransactionFeesByLedger(&lb.TransactionFees, lb.Sequence) + if err != nil { + return errors.Wrap(err, "failed to load transaction fees") + } + + return nil +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/ledger_bundle_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/ledger_bundle_test.go new file mode 100644 index 0000000..62eced2 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/ledger_bundle_test.go @@ -0,0 +1,21 @@ +package ingest + +import ( + "testing" + + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestLedgerBundleLoad(t *testing.T) { + tt := test.Start(t).ScenarioWithoutHorizon("base") + defer tt.Finish() + + bundle := &LedgerBundle{Sequence: 2} + err := bundle.Load(tt.CoreSession()) + + if tt.Assert.NoError(err) { + tt.Assert.Equal(uint32(2), bundle.Header.Sequence) + tt.Assert.Len(bundle.Transactions, 3) + tt.Assert.Len(bundle.TransactionFees, 3) + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/main.go new file mode 100644 index 0000000..0f933f8 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/main.go @@ -0,0 +1,191 @@ +// Package ingest contains the ingestion system for horizon. This system takes +// data produced by the connected stellar-core database, transforms it and +// inserts it into the horizon database. +package ingest + +import ( + "sync" + + sq "github.com/Masterminds/squirrel" + metrics "github.com/rcrowley/go-metrics" + "github.com/stellar/go/support/db" + "github.com/stellar/go/services/horizon/internal/db2/core" +) + +const ( + // CurrentVersion reflects the latest version of the ingestion + // algorithm. As rows are ingested into the horizon database, this version is + // used to tag them. In the future, any breaking changes introduced by a + // developer should be accompanied by an increase in this value. + // + // Scripts, that have yet to be ported to this codebase can then be leveraged + // to re-ingest old data with the new algorithm, providing a seamless + // transition when the ingested data's structure changes. + CurrentVersion = 10 +) + +// Cursor iterates through a stellar core database's ledgers +type Cursor struct { + // FirstLedger is the beginning of the range of ledgers (inclusive) that will + // attempt to be ingested in this session. + FirstLedger int32 + // LastLedger is the end of the range of ledgers (inclusive) that will + // attempt to be ingested in this session. + LastLedger int32 + // DB is the stellar-core db that data is ingested from. + DB *db.Session + + Metrics *IngesterMetrics + + // Err is the error that caused this iteration to fail, if any. + Err error + + lg int32 + tx int + op int + data *LedgerBundle +} + +// EffectIngestion is a helper struct to smooth the ingestion of effects. this +// struct will track what the correct operation to use and order to use when +// adding effects into an ingestion. +type EffectIngestion struct { + Dest *Ingestion + OperationID int64 + err error + added int + parent *Ingestion +} + +// LedgerBundle represents a single ledger's worth of novelty created by one +// ledger close +type LedgerBundle struct { + Sequence int32 + Header core.LedgerHeader + TransactionFees []core.TransactionFee + Transactions []core.Transaction +} + +// System represents the data ingestion subsystem of horizon. +type System struct { + // HorizonDB is the connection to the horizon database that ingested data will + // be written to. + HorizonDB *db.Session + + // CoreDB is the stellar-core db that data is ingested from. + CoreDB *db.Session + + Metrics IngesterMetrics + + // Network is the passphrase for the network being imported + Network string + + // StellarCoreURL is the http endpoint of the stellar-core that data is being + // ingested from. + StellarCoreURL string + + // SkipCursorUpdate causes the ingestor to skip + // reporting the "last imported ledger" cursor to + // stellar-core + SkipCursorUpdate bool + + lock sync.Mutex + current *Session +} + +// IngesterMetrics tracks all the metrics for the ingestion subsystem +type IngesterMetrics struct { + ClearLedgerTimer metrics.Timer + IngestLedgerTimer metrics.Timer + LoadLedgerTimer metrics.Timer +} + +// Ingestion receives write requests from a Session +type Ingestion struct { + // DB is the sql connection to be used for writing any rows into the horizon + // database. + DB *db.Session + + ledgers sq.InsertBuilder + transactions sq.InsertBuilder + transaction_participants sq.InsertBuilder + operations sq.InsertBuilder + operation_participants sq.InsertBuilder + effects sq.InsertBuilder + accounts sq.InsertBuilder + trades sq.InsertBuilder +} + +// Session represents a single attempt at ingesting data into the history +// database. +type Session struct { + Cursor *Cursor + Ingestion *Ingestion + // Network is the passphrase for the network being imported + Network string + + // StellarCoreURL is the http endpoint of the stellar-core that data is being + // ingested from. + StellarCoreURL string + + // ClearExisting causes the session to clear existing data from the horizon db + // when the session is run. + ClearExisting bool + + // SkipCursorUpdate causes the session to skip + // reporting the "last imported ledger" cursor to + // stellar-core + SkipCursorUpdate bool + + // Metrics is a reference to where the session should record its metric information + Metrics *IngesterMetrics + + // + // Results fields + // + + // Err is the error that caused this session to fail, if any. + Err error + + // Ingested is the number of ledgers that were successfully ingested during + // this session. + Ingested int +} + +// New initializes the ingester, causing it to begin polling the stellar-core +// database for now ledgers and ingesting data into the horizon database. +func New(network string, coreURL string, core, horizon *db.Session) *System { + i := &System{ + Network: network, + StellarCoreURL: coreURL, + HorizonDB: horizon, + CoreDB: core, + } + + i.Metrics.ClearLedgerTimer = metrics.NewTimer() + i.Metrics.IngestLedgerTimer = metrics.NewTimer() + i.Metrics.LoadLedgerTimer = metrics.NewTimer() + return i +} + +// NewSession initialize a new ingestion session, from `first` to `last` using +// `i`. +func NewSession(first, last int32, i *System) *Session { + hdb := i.HorizonDB.Clone() + + return &Session{ + Ingestion: &Ingestion{ + DB: hdb, + }, + Cursor: &Cursor{ + FirstLedger: first, + LastLedger: last, + DB: i.CoreDB, + Metrics: &i.Metrics, + }, + Network: i.Network, + StellarCoreURL: i.StellarCoreURL, + SkipCursorUpdate: i.SkipCursorUpdate, + Metrics: &i.Metrics, + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/main_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/main_test.go new file mode 100644 index 0000000..1ca7451 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/main_test.go @@ -0,0 +1,58 @@ +package ingest + +import ( + "testing" + + "github.com/stellar/go/network" + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestIngest(t *testing.T) { + tt := test.Start(t).ScenarioWithoutHorizon("kahuna") + defer tt.Finish() + + s := ingest(tt) + tt.Require.NoError(s.Err) + tt.Assert.Equal(57, s.Ingested) + + // Test that re-importing fails + s.Err = nil + s.Run() + tt.Require.Error(s.Err, "Reimport didn't fail as expected") + + // Test that re-importing fails with allowing clear succeeds + s.Err = nil + s.ClearExisting = true + s.Run() + tt.Require.NoError(s.Err, "Couldn't re-import, even with clear allowed") +} + +func TestTick(t *testing.T) { + tt := test.Start(t).ScenarioWithoutHorizon("base") + defer tt.Finish() + sys := sys(tt) + + // ingest by tick + s := sys.Tick() + tt.Require.NoError(s.Err) + tt.Require.Nil(sys.current) + + tt.UpdateLedgerState() + s = sys.Tick() + tt.Require.NotNil(s) + tt.Require.NoError(s.Err) +} + +func ingest(tt *test.T) *Session { + sys := sys(tt) + return sys.Tick() +} + +func sys(tt *test.T) *System { + return New( + network.TestNetworkPassphrase, + "", + tt.CoreSession(), + tt.HorizonSession(), + ) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/participants/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/participants/main.go new file mode 100644 index 0000000..179286a --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/participants/main.go @@ -0,0 +1,166 @@ +// Package participants contains functions to derive a set of "participant" +// addresses for various data structures in the Stellar network's ledger. +package participants + +import ( + "fmt" + + "github.com/stellar/go/xdr" +) + +// ForOperation returns all the participating accounts from the +// provided operation. +func ForOperation( + tx *xdr.Transaction, + op *xdr.Operation, +) (result []xdr.AccountId, err error) { + + if op.SourceAccount != nil { + result = append(result, *op.SourceAccount) + } else { + result = append(result, tx.SourceAccount) + } + + switch op.Body.Type { + case xdr.OperationTypeCreateAccount: + result = append(result, op.Body.MustCreateAccountOp().Destination) + case xdr.OperationTypePayment: + result = append(result, op.Body.MustPaymentOp().Destination) + case xdr.OperationTypePathPayment: + result = append(result, op.Body.MustPathPaymentOp().Destination) + case xdr.OperationTypeManageOffer: + // the only direct participant is the source_account + case xdr.OperationTypeCreatePassiveOffer: + // the only direct participant is the source_account + case xdr.OperationTypeSetOptions: + // the only direct participant is the source_account + case xdr.OperationTypeChangeTrust: + // the only direct participant is the source_account + case xdr.OperationTypeAllowTrust: + result = append(result, op.Body.MustAllowTrustOp().Trustor) + case xdr.OperationTypeAccountMerge: + result = append(result, op.Body.MustDestination()) + case xdr.OperationTypeInflation: + // the only direct participant is the source_account + case xdr.OperationTypeManageData: + // the only direct participant is the source_account + default: + err = fmt.Errorf("Unknown operation type: %s", op.Body.Type) + } + + result = dedupe(result) + return +} + +// ForTransaction returns all the participating accounts from the provided +// transaction. +func ForTransaction( + tx *xdr.Transaction, + meta *xdr.TransactionMeta, + feeMeta *xdr.LedgerEntryChanges, +) (result []xdr.AccountId, err error) { + + result = append(result, tx.SourceAccount) + + p, err := forMeta(meta) + if err != nil { + return + } + result = append(result, p...) + + p, err = forChanges(feeMeta) + if err != nil { + return + } + result = append(result, p...) + + for i := range tx.Operations { + p, err = ForOperation(tx, &tx.Operations[i]) + if err != nil { + return + } + result = append(result, p...) + } + + result = dedupe(result) + return +} + +// dedupe remove any duplicate ids from `in` +func dedupe(in []xdr.AccountId) (out []xdr.AccountId) { + set := map[string]xdr.AccountId{} + for _, id := range in { + set[id.Address()] = id + } + + for _, id := range set { + out = append(out, id) + } + return +} + +func forChanges( + changes *xdr.LedgerEntryChanges, +) (result []xdr.AccountId, err error) { + + for _, c := range *changes { + var account *xdr.AccountId + + switch c.Type { + case xdr.LedgerEntryChangeTypeLedgerEntryCreated: + account = forLedgerEntry(c.MustCreated()) + case xdr.LedgerEntryChangeTypeLedgerEntryRemoved: + account = forLedgerKey(c.MustRemoved()) + case xdr.LedgerEntryChangeTypeLedgerEntryUpdated: + account = forLedgerEntry(c.MustUpdated()) + case xdr.LedgerEntryChangeTypeLedgerEntryState: + account = forLedgerEntry(c.MustState()) + default: + err = fmt.Errorf("Unknown change type: %s", c.Type) + return + } + + if account != nil { + result = append(result, *account) + } + } + + return +} + +func forLedgerEntry(le xdr.LedgerEntry) *xdr.AccountId { + if le.Data.Type != xdr.LedgerEntryTypeAccount { + return nil + } + aid := le.Data.MustAccount().AccountId + return &aid +} + +func forLedgerKey(lk xdr.LedgerKey) *xdr.AccountId { + if lk.Type != xdr.LedgerEntryTypeAccount { + return nil + } + aid := lk.MustAccount().AccountId + return &aid +} + +func forMeta( + meta *xdr.TransactionMeta, +) (result []xdr.AccountId, err error) { + + if meta.Operations == nil { + return + } + + for _, op := range *meta.Operations { + var acc []xdr.AccountId + acc, err = forChanges(&op.Changes) + if err != nil { + return + } + + result = append(result, acc...) + } + + return +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/participants/main_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/participants/main_test.go new file mode 100644 index 0000000..e0eec8b --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/participants/main_test.go @@ -0,0 +1,124 @@ +package participants + +import ( + "testing" + + "github.com/stellar/go/xdr" + "github.com/stellar/go/services/horizon/internal/db2/core" + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestForOperation(t *testing.T) { + tt := test.Start(t).ScenarioWithoutHorizon("kahuna") + defer tt.Finish() + q := &core.Q{Session: tt.CoreSession()} + + load := func(lg int32, tx int, op int) []xdr.AccountId { + var txs []core.Transaction + + err := q.TransactionsByLedger(&txs, lg) + tt.Require.NoError(err, "failed to load transaction data") + xtx := txs[tx].Envelope.Tx + xop := xtx.Operations[op] + ret, err := ForOperation(&xtx, &xop) + tt.Require.NoError(err, "ForOperation() errored") + return ret + } + + // test create account + p := load(3, 0, 0) + tt.Require.Len(p, 2) + tt.Assert.Contains(p, aid("GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H")) + tt.Assert.Contains(p, aid("GAXI33UCLQTCKM2NMRBS7XYBR535LLEVAHL5YBN4FTCB4HZHT7ZA5CVK")) + + // test payment + p = load(8, 0, 0) + tt.Require.Len(p, 2) + tt.Assert.Contains(p, aid("GA46VRKBCLI2X6DXLX7AIEVRFLH3UA7XBE3NGNP6O74HQ5LXHMGTV2JB")) + tt.Assert.Contains(p, aid("GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H")) + + // test path payment + p = load(19, 0, 0) + tt.Require.Len(p, 2) + tt.Assert.Contains(p, aid("GDRW375MAYR46ODGF2WGANQC2RRZL7O246DYHHCGWTV2RE7IHE2QUQLD")) + tt.Assert.Contains(p, aid("GACAR2AEYEKITE2LKI5RMXF5MIVZ6Q7XILROGDT22O7JX4DSWFS7FDDP")) + + // test manage offer + p = load(18, 1, 0) + tt.Assert.Len(p, 1) + tt.Assert.Contains(p, aid("GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU")) + + // test passive offer + p = load(26, 0, 0) + tt.Assert.Len(p, 1) + tt.Assert.Contains(p, aid("GB6GN3LJUW6JYR7EDOJ47VBH7D45M4JWHXGK6LHJRAEI5JBSN2DBQY7Q")) + + // test set options + p = load(28, 0, 0) + tt.Assert.Len(p, 1) + tt.Assert.Contains(p, aid("GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES")) + + // test change trust + p = load(22, 0, 0) + tt.Assert.Len(p, 1) + tt.Assert.Contains(p, aid("GBOK7BOUSOWPHBANBYM6MIRYZJIDIPUYJPXHTHADF75UEVIVYWHHONQC")) + + // test allow trust + p = load(42, 0, 0) + tt.Require.Len(p, 2) + tt.Assert.Contains(p, aid("GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF")) + tt.Assert.Contains(p, aid("GCVW5LCRZFP7PENXTAGOVIQXADDNUXXZJCNKF4VQB2IK7W2LPJWF73UG")) + + // test account merge + p = load(44, 0, 0) + tt.Require.Len(p, 2) + tt.Assert.Contains(p, aid("GCHPXGVDKPF5KT4CNAT7X77OXYZ7YVE4JHKFDUHCGCVWCL4K4PQ67KKZ")) + tt.Assert.Contains(p, aid("GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H")) + + // test inflation + p = load(47, 0, 0) + tt.Assert.Len(p, 1) + tt.Assert.Contains(p, aid("GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H")) + + // test manage data + p = load(49, 0, 0) + tt.Assert.Len(p, 1) + tt.Assert.Contains(p, aid("GAYSCMKQY6EYLXOPTT6JPPOXDMVNBWITPTSZIVWW4LWARVBOTH5RTLAD")) +} + +func TestForTransaction(t *testing.T) { + tt := test.Start(t).ScenarioWithoutHorizon("kahuna") + defer tt.Finish() + q := &core.Q{Session: tt.CoreSession()} + + load := func(lg int32, tx int, op int) []xdr.AccountId { + var txs []core.Transaction + var fees []core.TransactionFee + err := q.TransactionsByLedger(&txs, lg) + tt.Require.NoError(err, "failed to load transaction data") + err = q.TransactionFeesByLedger(&fees, lg) + tt.Require.NoError(err, "failed to load transaction fee data") + + xtx := txs[tx].Envelope.Tx + meta := txs[tx].ResultMeta + fee := fees[tx].Changes + + ret, err := ForTransaction(&xtx, &meta, &fee) + tt.Require.NoError(err, "ForOperation() errored") + return ret + } + + p := load(3, 0, 0) + tt.Require.Len(p, 2) + tt.Assert.Contains(p, aid("GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H")) + tt.Assert.Contains(p, aid("GAXI33UCLQTCKM2NMRBS7XYBR535LLEVAHL5YBN4FTCB4HZHT7ZA5CVK")) +} + +// helper function to convert an address into an accountid +func aid(addy string) (ret xdr.AccountId) { + err := ret.SetAddress(addy) + if err != nil { + panic(err) + } + return +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/session.go b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/session.go new file mode 100644 index 0000000..e3c1aab --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/session.go @@ -0,0 +1,785 @@ +package ingest + +import ( + "encoding/base64" + "fmt" + "io/ioutil" + "net/http" + "net/url" + "path" + "strings" + "time" + + "github.com/stellar/go/amount" + "github.com/stellar/go/keypair" + "github.com/stellar/go/meta" + "github.com/stellar/go/xdr" + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stellar/go/services/horizon/internal/ingest/participants" +) + +// Run starts an attempt to ingest the range of ledgers specified in this +// session. +func (is *Session) Run() { + is.Err = is.Ingestion.Start() + if is.Err != nil { + return + } + + defer is.Ingestion.Rollback() + + for is.Cursor.NextLedger() { + is.clearLedger() + is.ingestLedger() + is.flush() + + if is.Err != nil { + break + } + } + + if is.Err != nil { + is.Ingestion.Rollback() + return + } + + if is.Cursor.Err != nil { + is.Err = is.Cursor.Err + return + } + + is.Err = is.Ingestion.Close() + if is.Err != nil { + return + } + + is.Err = is.reportCursorState() +} + +func (is *Session) clearLedger() { + if is.Err != nil { + return + } + + if !is.ClearExisting { + return + } + start := time.Now() + is.Err = is.Ingestion.Clear(is.Cursor.LedgerRange()) + if is.Metrics != nil { + is.Metrics.ClearLedgerTimer.Update(time.Since(start)) + } +} + +func (is *Session) effectFlagDetails(flagDetails map[string]bool, flagPtr *xdr.Uint32, setValue bool) { + if flagPtr != nil { + flags := xdr.AccountFlags(*flagPtr) + + if flags&xdr.AccountFlagsAuthRequiredFlag != 0 { + flagDetails["auth_required_flag"] = setValue + } + if flags&xdr.AccountFlagsAuthRevocableFlag != 0 { + flagDetails["auth_revocable_flag"] = setValue + } + if flags&xdr.AccountFlagsAuthImmutableFlag != 0 { + flagDetails["auth_immutable_flag"] = setValue + } + } +} + +func (is *Session) flush() { + if is.Err != nil { + return + } + is.Err = is.Ingestion.Flush() +} + +func (is *Session) ingestEffects() { + if is.Err != nil { + return + } + + effects := &EffectIngestion{ + Dest: is.Ingestion, + OperationID: is.Cursor.OperationID(), + parent: is.Ingestion, + } + source := is.Cursor.OperationSourceAccount() + opbody := is.Cursor.Operation().Body + + switch is.Cursor.OperationType() { + case xdr.OperationTypeCreateAccount: + op := opbody.MustCreateAccountOp() + + effects.Add(op.Destination, history.EffectAccountCreated, + map[string]interface{}{ + "starting_balance": amount.String(op.StartingBalance), + }, + ) + + effects.Add(source, history.EffectAccountDebited, + map[string]interface{}{ + "asset_type": "native", + "amount": amount.String(op.StartingBalance), + }, + ) + + effects.Add(op.Destination, history.EffectSignerCreated, + map[string]interface{}{ + "public_key": op.Destination.Address(), + "weight": keypair.DefaultSignerWeight, + }, + ) + + case xdr.OperationTypePayment: + op := opbody.MustPaymentOp() + dets := map[string]interface{}{"amount": amount.String(op.Amount)} + is.assetDetails(dets, op.Asset, "") + effects.Add(op.Destination, history.EffectAccountCredited, dets) + effects.Add(source, history.EffectAccountDebited, dets) + case xdr.OperationTypePathPayment: + result := is.Cursor.OperationResult().MustPathPaymentResult().MustSuccess() + is.ingestTradeEffects(effects, source, result.Offers) + case xdr.OperationTypeManageOffer: + result := is.Cursor.OperationResult().MustManageOfferResult().MustSuccess() + is.ingestTradeEffects(effects, source, result.OffersClaimed) + case xdr.OperationTypeCreatePassiveOffer: + claims := []xdr.ClaimOfferAtom{} + result := is.Cursor.OperationResult() + + // KNOWN ISSUE: stellar-core creates results for CreatePassiveOffer operations + // with the wrong result arm set. + if result.Type == xdr.OperationTypeManageOffer { + claims = result.MustManageOfferResult().MustSuccess().OffersClaimed + } else { + claims = result.MustCreatePassiveOfferResult().MustSuccess().OffersClaimed + } + + is.ingestTradeEffects(effects, source, claims) + case xdr.OperationTypeSetOptions: + op := opbody.MustSetOptionsOp() + + if op.HomeDomain != nil { + effects.Add(source, history.EffectAccountHomeDomainUpdated, + map[string]interface{}{ + "home_domain": string(*op.HomeDomain), + }, + ) + } + + thresholdDetails := map[string]interface{}{} + + if op.LowThreshold != nil { + thresholdDetails["low_threshold"] = *op.LowThreshold + } + + if op.MedThreshold != nil { + thresholdDetails["med_threshold"] = *op.MedThreshold + } + + if op.HighThreshold != nil { + thresholdDetails["high_threshold"] = *op.HighThreshold + } + + if len(thresholdDetails) > 0 { + effects.Add(source, history.EffectAccountThresholdsUpdated, thresholdDetails) + } + + flagDetails := map[string]bool{} + is.effectFlagDetails(flagDetails, op.SetFlags, true) + is.effectFlagDetails(flagDetails, op.ClearFlags, false) + + if len(flagDetails) > 0 { + effects.Add(source, history.EffectAccountFlagsUpdated, flagDetails) + } + + is.ingestSignerEffects(effects, op) + + case xdr.OperationTypeChangeTrust: + op := opbody.MustChangeTrustOp() + dets := map[string]interface{}{"limit": amount.String(op.Limit)} + key := xdr.LedgerKey{} + effect := history.EffectType(0) + + is.assetDetails(dets, op.Line, "") + + key.SetTrustline(source, op.Line) + + before, after, err := is.Cursor.BeforeAndAfter(key) + + // NOTE: when an account trusts itself, the transaction is successful but + // no ledger entries are actually modified, leading to an "empty meta" + // situation. We simply continue on to the next operation in that scenario. + if err == meta.ErrMetaNotFound { + return + } + + if err != nil { + is.Err = err + return + } + + switch { + case before == nil && after != nil: + effect = history.EffectTrustlineCreated + case before != nil && after == nil: + effect = history.EffectTrustlineRemoved + case before != nil && after != nil: + effect = history.EffectTrustlineUpdated + default: + panic("Invalid before-and-after state") + } + + effects.Add(source, effect, dets) + case xdr.OperationTypeAllowTrust: + op := opbody.MustAllowTrustOp() + asset := op.Asset.ToAsset(source) + dets := map[string]interface{}{ + "trustor": op.Trustor.Address(), + } + is.assetDetails(dets, asset, "") + + if op.Authorize { + effects.Add(source, history.EffectTrustlineAuthorized, dets) + } else { + effects.Add(source, history.EffectTrustlineDeauthorized, dets) + } + + case xdr.OperationTypeAccountMerge: + dest := opbody.MustDestination() + result := is.Cursor.OperationResult().MustAccountMergeResult() + dets := map[string]interface{}{ + "amount": amount.String(result.MustSourceAccountBalance()), + "asset_type": "native", + } + effects.Add(source, history.EffectAccountDebited, dets) + effects.Add(dest, history.EffectAccountCredited, dets) + effects.Add(source, history.EffectAccountRemoved, map[string]interface{}{}) + case xdr.OperationTypeInflation: + payouts := is.Cursor.OperationResult().MustInflationResult().MustPayouts() + for _, payout := range payouts { + effects.Add(payout.Destination, history.EffectAccountCredited, + map[string]interface{}{ + "amount": amount.String(payout.Amount), + "asset_type": "native", + }, + ) + } + case xdr.OperationTypeManageData: + op := opbody.MustManageDataOp() + dets := map[string]interface{}{"name": op.DataName} + key := xdr.LedgerKey{} + effect := history.EffectType(0) + + key.SetData(source, string(op.DataName)) + + before, after, err := is.Cursor.BeforeAndAfter(key) + if err != nil { + is.Err = err + return + } + + if after != nil { + raw := after.Data.MustData().DataValue + dets["value"] = base64.StdEncoding.EncodeToString(raw) + } + + switch { + case before == nil && after != nil: + effect = history.EffectDataCreated + case before != nil && after == nil: + effect = history.EffectDataRemoved + case before != nil && after != nil: + effect = history.EffectDataUpdated + default: + panic("Invalid before-and-after state") + } + + effects.Add(source, effect, dets) + + default: + is.Err = fmt.Errorf("Unknown operation type: %s", is.Cursor.OperationType()) + return + } + + is.Err = effects.Finish() +} + +// ingestLedger ingests the current ledger +func (is *Session) ingestLedger() { + if is.Err != nil { + return + } + + start := time.Now() + is.Err = is.Ingestion.Ledger( + is.Cursor.LedgerID(), + is.Cursor.Ledger(), + is.Cursor.SuccessfulTransactionCount(), + is.Cursor.SuccessfulLedgerOperationCount(), + ) + + if is.Err != nil { + return + } + + for is.Cursor.NextTx() { + is.ingestTransaction() + } + + is.Ingested++ + if is.Metrics != nil { + is.Metrics.IngestLedgerTimer.Update(time.Since(start)) + } + + return +} + +func (is *Session) ingestOperation() { + if is.Err != nil { + return + } + + is.Err = is.Ingestion.Operation( + is.Cursor.OperationID(), + is.Cursor.TransactionID(), + is.Cursor.OperationOrder(), + is.Cursor.OperationSourceAccount(), + is.Cursor.OperationType(), + is.operationDetails(), + ) + if is.Err != nil { + return + } + + is.ingestOperationParticipants() + is.ingestEffects() + is.ingestTrades() +} + +func (is *Session) ingestOperationParticipants() { + if is.Err != nil { + return + } + + // Find the participants + var p []xdr.AccountId + p, is.Err = participants.ForOperation( + &is.Cursor.Transaction().Envelope.Tx, + is.Cursor.Operation(), + ) + if is.Err != nil { + return + } + + is.Err = is.Ingestion.OperationParticipants(is.Cursor.OperationID(), p) + if is.Err != nil { + return + } +} + +func (is *Session) ingestSignerEffects(effects *EffectIngestion, op xdr.SetOptionsOp) { + source := is.Cursor.OperationSourceAccount() + + be, ae, err := is.Cursor.BeforeAndAfter(source.LedgerKey()) + if err != nil { + is.Err = err + return + } + + beforeAccount := be.Data.MustAccount() + afterAccount := ae.Data.MustAccount() + + before := beforeAccount.SignerSummary() + after := afterAccount.SignerSummary() + + for addy := range before { + weight, ok := after[addy] + if !ok { + effects.Add(source, history.EffectSignerRemoved, map[string]interface{}{ + "public_key": addy, + }) + continue + } + effects.Add(source, history.EffectSignerUpdated, map[string]interface{}{ + "public_key": addy, + "weight": weight, + }) + } + // Add the "created" effects + for addy, weight := range after { + // if `addy` is in before, the previous for loop should have recorded + // the update, so skip this key + if _, ok := before[addy]; ok { + continue + } + + effects.Add(source, history.EffectSignerCreated, map[string]interface{}{ + "public_key": addy, + "weight": weight, + }) + } + +} + +func (is *Session) ingestTrades() { + if is.Err != nil { + return + } + + buyer := is.Cursor.OperationSourceAccount() + trades := []xdr.ClaimOfferAtom{} + + switch is.Cursor.OperationType() { + case xdr.OperationTypePathPayment: + trades = is.Cursor.OperationResult(). + MustPathPaymentResult(). + MustSuccess(). + Offers + + case xdr.OperationTypeManageOffer: + trades = is.Cursor.OperationResult().MustManageOfferResult().MustSuccess().OffersClaimed + case xdr.OperationTypeCreatePassiveOffer: + result := is.Cursor.OperationResult() + + // KNOWN ISSUE: stellar-core creates results for CreatePassiveOffer operations + // with the wrong result arm set. + if result.Type == xdr.OperationTypeManageOffer { + trades = result.MustManageOfferResult().MustSuccess().OffersClaimed + } else { + trades = result.MustCreatePassiveOfferResult().MustSuccess().OffersClaimed + } + } + + for i, trade := range trades { + // stellar-core will opportunisticly garbage collect invalid offers (in the + // event that a trader spends down their balance). These garbage collected + // offers get emitted in the result with the amount values set to zero. + // + // These zeroed ClaimOfferAtom values do not represent trades, and so we + // skip them. + if trade.AmountBought == 0 && trade.AmountSold == 0 { + continue + } + + is.Err = is.Ingestion.Trade( + is.Cursor.OperationID(), + int32(i), + buyer, + trade, + is.Cursor.Ledger().CloseTime, + ) + if is.Err != nil { + return + } + } +} + +func (is *Session) ingestTradeEffects(effects *EffectIngestion, buyer xdr.AccountId, claims []xdr.ClaimOfferAtom) { + if is.Err != nil { + return + } + + for _, claim := range claims { + seller := claim.SellerId + bd, sd := is.tradeDetails(buyer, seller, claim) + effects.Add(buyer, history.EffectTrade, bd) + effects.Add(seller, history.EffectTrade, sd) + } +} + +func (is *Session) tradeDetails(buyer, seller xdr.AccountId, claim xdr.ClaimOfferAtom) (bd map[string]interface{}, sd map[string]interface{}) { + bd = map[string]interface{}{ + "offer_id": claim.OfferId, + "seller": seller.Address(), + "bought_amount": amount.String(claim.AmountSold), + "sold_amount": amount.String(claim.AmountBought), + } + is.assetDetails(bd, claim.AssetSold, "bought_") + is.assetDetails(bd, claim.AssetBought, "sold_") + + sd = map[string]interface{}{ + "offer_id": claim.OfferId, + "seller": buyer.Address(), + "bought_amount": amount.String(claim.AmountBought), + "sold_amount": amount.String(claim.AmountSold), + } + is.assetDetails(sd, claim.AssetBought, "bought_") + is.assetDetails(sd, claim.AssetSold, "sold_") + + return +} + +func (is *Session) ingestTransaction() { + if is.Err != nil { + return + } + + // skip ingesting failed transactions + if !is.Cursor.Transaction().IsSuccessful() { + return + } + is.Err = is.Ingestion.Transaction( + is.Cursor.TransactionID(), + is.Cursor.Transaction(), + is.Cursor.TransactionFee(), + ) + if is.Err != nil { + return + } + + for is.Cursor.NextOp() { + is.ingestOperation() + } + + is.ingestTransactionParticipants() +} + +func (is *Session) ingestTransactionParticipants() { + if is.Err != nil { + return + } + + // Find the participants + var p []xdr.AccountId + p, is.Err = participants.ForTransaction( + &is.Cursor.Transaction().Envelope.Tx, + &is.Cursor.Transaction().ResultMeta, + &is.Cursor.TransactionFee().Changes, + ) + if is.Err != nil { + return + } + + is.Err = is.Ingestion.TransactionParticipants(is.Cursor.TransactionID(), p) + if is.Err != nil { + return + } + +} + +// assetDetails sets the details for `a` on `result` using keys with `prefix` +func (is *Session) assetDetails(result map[string]interface{}, a xdr.Asset, prefix string) error { + var ( + t string + code string + i string + ) + err := a.Extract(&t, &code, &i) + if err != nil { + return err + } + result[prefix+"asset_type"] = t + + if a.Type == xdr.AssetTypeAssetTypeNative { + return nil + } + + result[prefix+"asset_code"] = code + result[prefix+"asset_issuer"] = i + return nil +} + +// operationDetails returns the details regarding the current operation, suitable +// for ingestion into a history_operation row +func (is *Session) operationDetails() map[string]interface{} { + details := map[string]interface{}{} + c := is.Cursor + source := c.OperationSourceAccount() + + switch c.OperationType() { + case xdr.OperationTypeCreateAccount: + op := c.Operation().Body.MustCreateAccountOp() + details["funder"] = source.Address() + details["account"] = op.Destination.Address() + details["starting_balance"] = amount.String(op.StartingBalance) + case xdr.OperationTypePayment: + op := c.Operation().Body.MustPaymentOp() + details["from"] = source.Address() + details["to"] = op.Destination.Address() + details["amount"] = amount.String(op.Amount) + is.assetDetails(details, op.Asset, "") + case xdr.OperationTypePathPayment: + op := c.Operation().Body.MustPathPaymentOp() + details["from"] = source.Address() + details["to"] = op.Destination.Address() + + result := c.OperationResult().MustPathPaymentResult() + + details["amount"] = amount.String(op.DestAmount) + details["source_amount"] = amount.String(result.SendAmount()) + details["source_max"] = amount.String(op.SendMax) + is.assetDetails(details, op.DestAsset, "") + is.assetDetails(details, op.SendAsset, "source_") + + var path = make([]map[string]interface{}, len(op.Path)) + for i := range op.Path { + path[i] = make(map[string]interface{}) + is.assetDetails(path[i], op.Path[i], "") + } + details["path"] = path + case xdr.OperationTypeManageOffer: + op := c.Operation().Body.MustManageOfferOp() + details["offer_id"] = op.OfferId + details["amount"] = amount.String(op.Amount) + details["price"] = op.Price.String() + details["price_r"] = map[string]interface{}{ + "n": op.Price.N, + "d": op.Price.D, + } + is.assetDetails(details, op.Buying, "buying_") + is.assetDetails(details, op.Selling, "selling_") + + case xdr.OperationTypeCreatePassiveOffer: + op := c.Operation().Body.MustCreatePassiveOfferOp() + details["amount"] = amount.String(op.Amount) + details["price"] = op.Price.String() + details["price_r"] = map[string]interface{}{ + "n": op.Price.N, + "d": op.Price.D, + } + is.assetDetails(details, op.Buying, "buying_") + is.assetDetails(details, op.Selling, "selling_") + case xdr.OperationTypeSetOptions: + op := c.Operation().Body.MustSetOptionsOp() + + if op.InflationDest != nil { + details["inflation_dest"] = op.InflationDest.Address() + } + + if op.SetFlags != nil && *op.SetFlags > 0 { + is.operationFlagDetails(details, int32(*op.SetFlags), "set") + } + + if op.ClearFlags != nil && *op.ClearFlags > 0 { + is.operationFlagDetails(details, int32(*op.ClearFlags), "clear") + } + + if op.MasterWeight != nil { + details["master_key_weight"] = *op.MasterWeight + } + + if op.LowThreshold != nil { + details["low_threshold"] = *op.LowThreshold + } + + if op.MedThreshold != nil { + details["med_threshold"] = *op.MedThreshold + } + + if op.HighThreshold != nil { + details["high_threshold"] = *op.HighThreshold + } + + if op.HomeDomain != nil { + details["home_domain"] = *op.HomeDomain + } + + if op.Signer != nil { + details["signer_key"] = op.Signer.Key.Address() + details["signer_weight"] = op.Signer.Weight + } + case xdr.OperationTypeChangeTrust: + op := c.Operation().Body.MustChangeTrustOp() + is.assetDetails(details, op.Line, "") + details["trustor"] = source.Address() + details["trustee"] = details["asset_issuer"] + details["limit"] = amount.String(op.Limit) + case xdr.OperationTypeAllowTrust: + op := c.Operation().Body.MustAllowTrustOp() + is.assetDetails(details, op.Asset.ToAsset(source), "") + details["trustee"] = source.Address() + details["trustor"] = op.Trustor.Address() + details["authorize"] = op.Authorize + case xdr.OperationTypeAccountMerge: + aid := c.Operation().Body.MustDestination() + details["account"] = source.Address() + details["into"] = aid.Address() + case xdr.OperationTypeInflation: + // no inflation details, presently + case xdr.OperationTypeManageData: + op := c.Operation().Body.MustManageDataOp() + details["name"] = string(op.DataName) + if op.DataValue != nil { + details["value"] = base64.StdEncoding.EncodeToString(*op.DataValue) + } else { + details["value"] = nil + } + default: + panic(fmt.Errorf("Unknown operation type: %s", c.OperationType())) + } + + return details +} + +// operationFlagDetails sets the account flag details for `f` on `result`. +func (is *Session) operationFlagDetails(result map[string]interface{}, f int32, prefix string) { + var ( + n []int32 + s []string + ) + + if (f & int32(xdr.AccountFlagsAuthRequiredFlag)) > 0 { + n = append(n, int32(xdr.AccountFlagsAuthRequiredFlag)) + s = append(s, "auth_required") + } + + if (f & int32(xdr.AccountFlagsAuthRevocableFlag)) > 0 { + n = append(n, int32(xdr.AccountFlagsAuthRevocableFlag)) + s = append(s, "auth_revocable") + } + + if (f & int32(xdr.AccountFlagsAuthImmutableFlag)) > 0 { + n = append(n, int32(xdr.AccountFlagsAuthImmutableFlag)) + s = append(s, "auth_immutable") + } + + result[prefix+"_flags"] = n + result[prefix+"_flags_s"] = s +} + +// reportCursorState makes an http request to the configured stellar-core server +// to report that it has finished processing the data being ingested. This +// allows stellar-core to free that storage when next it runs its own +// maintenance. +func (is *Session) reportCursorState() error { + // TODO(scott): with the introduction of + // SkipCursorUpdate, this should probably be removed. + if is.StellarCoreURL == "" { + return nil + } + + if is.SkipCursorUpdate { + return nil + } + + u, err := url.Parse(is.StellarCoreURL) + if err != nil { + return err + } + + u.Path = path.Join(u.Path, "setcursor") + q := u.Query() + q.Set("id", "HORIZON") + q.Set("cursor", fmt.Sprintf("%d", is.Cursor.LastLedger)) + u.RawQuery = q.Encode() + url := u.String() + + resp, err := http.Get(url) + if err != nil { + return err + } + defer resp.Body.Close() + + raw, err := ioutil.ReadAll(resp.Body) + if err != nil { + return err + } + + body := strings.TrimSpace(string(raw)) + if body != "Done" { + return fmt.Errorf("failed to set cursor on stellar-core: %s", body) + } + + return nil +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/system.go b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/system.go new file mode 100644 index 0000000..6ced616 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/system.go @@ -0,0 +1,325 @@ +package ingest + +import ( + "github.com/stellar/go/support/errors" + err2 "github.com/stellar/go/support/errors" + "github.com/stellar/go/services/horizon/internal/db2/core" + "github.com/stellar/go/services/horizon/internal/db2/history" + herr "github.com/stellar/go/services/horizon/internal/errors" + "github.com/stellar/go/services/horizon/internal/ledger" + "github.com/stellar/go/services/horizon/internal/log" + "github.com/stellar/go/services/horizon/internal/toid" +) + +// ClearAll removes all previously ingested historical data from the horizon +// database. +func (i *System) ClearAll() error { + + hdb := i.HorizonDB.Clone() + ingestion := &Ingestion{DB: hdb} + + err := ingestion.Start() + if err != nil { + return errors.Wrap(err, "failed to begin ingestion") + } + + err = ingestion.ClearAll() + if err != nil { + return errors.Wrap(err, "failed to clear history tables") + } + + err = ingestion.Close() + if err != nil { + return errors.Wrap(err, "failed to close ingestion") + } + + log.Infof("cleared all history") + + return nil +} + +// ReingestAll re-ingests all ledgers +func (i *System) ReingestAll() (int, error) { + + err := i.trimAbandondedLedgers() + if err != nil { + return 0, err + } + + var coreElder int32 + var coreLatest int32 + cq := core.Q{Session: i.CoreDB} + + err = cq.ElderLedger(&coreElder) + if err != nil { + return 0, errors.Wrap(err, "load core elder ledger failed") + } + + err = cq.LatestLedger(&coreLatest) + if err != nil { + return 0, errors.Wrap(err, "load core elder ledger failed") + } + + log. + WithField("start", coreElder). + WithField("end", coreLatest). + Info("reingest: all") + + return i.ReingestRange(coreElder, coreLatest) +} + +// ReingestOutdated finds old ledgers and reimports them. +func (i *System) ReingestOutdated() (n int, err error) { + + q := history.Q{Session: i.HorizonDB} + + err = i.trimAbandondedLedgers() + if err != nil { + return + } + + // NOTE: this loop will never terminate if some bug were cause a ledger + // reingestion to silently fail. + for { + outdated := []int32{} + err = q.OldestOutdatedLedgers(&outdated, CurrentVersion) + if err != nil { + return + } + + if len(outdated) == 0 { + return + } + + log. + WithField("lowest_sequence", outdated[0]). + WithField("batch_size", len(outdated)). + Info("reingest: outdated") + + var start, end int32 + flush := func() error { + ingested, ferr := i.ReingestRange(start, end) + + if ferr != nil { + return ferr + } + n += ingested + return nil + } + + for idx := range outdated { + seq := outdated[idx] + + if start == 0 { + start = seq + end = seq + continue + } + + if seq == end+1 { + end = seq + continue + } + + err = flush() + if err != nil { + return + } + + start = seq + end = seq + } + + err = flush() + if err != nil { + return + } + } +} + +// ReingestRange reingests a range of ledgers, from `start` to `end`, inclusive. +func (i *System) ReingestRange(start, end int32) (int, error) { + is := NewSession(start, end, i) + is.ClearExisting = true + + is.Run() + log.WithField("start", start). + WithField("end", end). + WithField("err", is.Err). + WithField("ingested", is.Ingested). + Info("ingest: range complete") + return is.Ingested, is.Err +} + +// ReingestSingle re-ingests a single ledger +func (i *System) ReingestSingle(sequence int32) error { + _, err := i.ReingestRange(sequence, sequence) + return err +} + +// Tick triggers the ingestion system to ingest any new ledger data, provided +// that there currently is not an import session in progress. +func (i *System) Tick() *Session { + i.lock.Lock() + if i.current != nil { + log.Info("ingest: already in progress") + i.lock.Unlock() + return nil + } + + is := i.newTickSession() + i.current = is + i.lock.Unlock() + + i.runOnce() + return is +} + +// newTickSession creates an unverified new ingestion session that reflects the +// current cached ledger state. +func (i *System) newTickSession() *Session { + var ( + start int32 + ls = ledger.CurrentState() + ) + + if ls.HistoryLatest == 0 { + start = ls.CoreElder + } else { + start = ls.HistoryLatest + 1 + } + + end := ls.CoreLatest + + return NewSession(start, end, i) +} + +// run causes the importer to check stellar-core to see if we can import new +// data. +func (i *System) runOnce() { + defer func() { + if rec := recover(); rec != nil { + err := herr.FromPanic(rec) + log.Errorf("import session panicked: %s", err) + errors.ReportToSentry(err, nil) + } + }() + + ls := ledger.CurrentState() + + // 1. stash a copy of the current ingestion session (assigned from the tick) + // 2. output "initial ingestion" message if the + // 3. import until none available + + // 1. + i.lock.Lock() + is := i.current + i.lock.Unlock() + + defer func() { + i.lock.Lock() + i.current = nil + i.lock.Unlock() + }() + + if is == nil { + log.Warn("ingest: runOnce ran with a nil current session") + return + } + + if is.Cursor.FirstLedger > is.Cursor.LastLedger { + return + } + + // 2. + if ls.HistoryLatest == 0 { + log.Infof( + "history db is empty, starting ingestion from ledger %d", + is.Cursor.FirstLedger, + ) + } + + if is.Cursor.FirstLedger != ls.CoreElder { + err := i.validateLedgerChain(is.Cursor.FirstLedger) + if err != nil { + log. + WithField("start", is.Cursor.FirstLedger). + Errorf("ledger gap detected (possible db corruption): %s", err) + return + } + } + + // 3. + is.Run() + + if is.Err != nil { + log.Errorf("import session failed: %s", is.Err) + } + + return +} + +// trimAbandondedLedgers deletes all "abandonded" ledgers from the history +// database. An abandonded ledger, in this context, means a ledger known to +// horizon but is no longer present in the stellar-core database source. The +// usual cause for this situation is a stellar-core that uses the CATCHUP_RECENT +// mode. +func (i *System) trimAbandondedLedgers() error { + var coreElder int32 + cq := core.Q{Session: i.CoreDB} + + err := cq.ElderLedger(&coreElder) + if err != nil { + return errors.Wrap(err, "load core elder ledger failed") + } + + hdb := i.HorizonDB.Clone() + ingestion := &Ingestion{DB: hdb} + + err = ingestion.Start() + if err != nil { + return errors.Wrap(err, "failed to begin ingestion") + } + + end := toid.New(coreElder, 0, 0) + + ingestion.Clear(0, end.ToInt64()) + + err = ingestion.Close() + if err != nil { + return errors.Wrap(err, "failed to close ingestion") + } + + log. + WithField("new_elder_ledger", coreElder). + Infof("reingest: abandonded ledgers trimmed") + + return nil +} + +// validateLedgerChain helps to ensure the chain of ledger entries is contiguous +// within horizon. It ensures the ledger at `seq` is a child of `seq - 1`. +func (i *System) validateLedgerChain(seq int32) error { + var ( + cur core.LedgerHeader + prev core.LedgerHeader + ) + + q := &core.Q{i.CoreDB} + + err := q.LedgerHeaderBySequence(&cur, seq) + if err != nil { + return err2.Wrap(err, "validateLedgerChain: failed to load cur ledger") + } + + err = q.LedgerHeaderBySequence(&prev, seq-1) + if err != nil { + return err2.Wrap(err, "validateLedgerChain: failed to load prev ledger") + } + + if cur.PrevHash != prev.LedgerHash { + return err2.New("cur and prev ledger hashes don't match") + } + + return nil +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/system_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/system_test.go new file mode 100644 index 0000000..55aebe1 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/ingest/system_test.go @@ -0,0 +1,61 @@ +package ingest + +import ( + "testing" + + "github.com/stellar/go/network" + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestClearAll(t *testing.T) { + tt := test.Start(t).Scenario("kahuna") + defer tt.Finish() + is := sys(tt) + + err := is.ClearAll() + + tt.Require.NoError(err) + + // ensure no ledgers + var found int + err = tt.HorizonSession().GetRaw(&found, "SELECT COUNT(*) FROM history_ledgers") + tt.Require.NoError(err) + tt.Assert.Equal(0, found) +} + +func TestValidation(t *testing.T) { + tt := test.Start(t).ScenarioWithoutHorizon("kahuna") + defer tt.Finish() + + sys := New(network.TestNetworkPassphrase, "", tt.CoreSession(), tt.HorizonSession()) + + // intact chain + for i := int32(2); i <= 57; i++ { + tt.Assert.NoError(sys.validateLedgerChain(i)) + } + _, err := tt.CoreSession().ExecRaw( + `DELETE FROM ledgerheaders WHERE ledgerseq = ?`, 5, + ) + tt.Require.NoError(err) + + // missing cur + err = sys.validateLedgerChain(5) + tt.Assert.Error(err) + tt.Assert.Contains(err.Error(), "failed to load cur ledger") + + // missing prev + err = sys.validateLedgerChain(6) + tt.Assert.Error(err) + tt.Assert.Contains(err.Error(), "failed to load prev ledger") + + // mismatched header + _, err = tt.CoreSession().ExecRaw(` + UPDATE ledgerheaders + SET ledgerhash = ? + WHERE ledgerseq = ?`, "00000", 8) + tt.Require.NoError(err) + + err = sys.validateLedgerChain(9) + tt.Assert.Error(err) + tt.Assert.Contains(err.Error(), "cur and prev ledger hashes don't match") +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/init.go b/vendor/src/github.com/stellar/go/services/horizon/internal/init.go new file mode 100644 index 0000000..8d50edb --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/init.go @@ -0,0 +1,72 @@ +package horizon + +import ( + "github.com/stellar/go/services/horizon/internal/log" +) + +// InitFn is a function that contributes to the initialization of an App struct +type InitFn func(*App) + +type initializer struct { + Name string + Fn InitFn + Deps []string +} + +type initializerSet []initializer + +var appInit initializerSet + +// Add adds a new initializer into the chain +func (is *initializerSet) Add(name string, fn InitFn, deps ...string) { + *is = append(*is, initializer{ + Name: name, + Fn: fn, + Deps: deps, + }) +} + +// Run initializes the provided application, but running every Initializer +func (is *initializerSet) Run(app *App) { + init := *is + alreadyRun := make(map[string]bool) + + for { + ranInitializer := false + for _, i := range init { + runnable := true + + // if we've already been run, skip + if _, ok := alreadyRun[i.Name]; ok { + runnable = false + } + + // if any of our dependencies haven't been run, skip + for _, d := range i.Deps { + if _, ok := alreadyRun[d]; !ok { + runnable = false + break + } + } + + if !runnable { + continue + } + + log.WithField("init_name", i.Name).Debug("running initializer") + i.Fn(app) + alreadyRun[i.Name] = true + ranInitializer = true + } + // If, after a full loop through the initializers we ran nothing + // we are done + if !ranInitializer { + break + } + } + + // if we didn't get to run all initializers, we have a cycle + if len(alreadyRun) != len(init) { + log.Panic("initializer cycle detected") + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/init_app_context.go b/vendor/src/github.com/stellar/go/services/horizon/internal/init_app_context.go new file mode 100644 index 0000000..f36ed97 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/init_app_context.go @@ -0,0 +1,13 @@ +package horizon + +import ( + "golang.org/x/net/context" +) + +func initAppContext(app *App) { + app.ctx, app.cancel = context.WithCancel(context.Background()) +} + +func init() { + appInit.Add("app-context", initAppContext) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/init_core_info.go b/vendor/src/github.com/stellar/go/services/horizon/internal/init_core_info.go new file mode 100644 index 0000000..dba1903 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/init_core_info.go @@ -0,0 +1,10 @@ +package horizon + +func initStellarCoreInfo(app *App) { + app.UpdateStellarCoreInfo() + return +} + +func init() { + appInit.Add("stellarCoreInfo", initStellarCoreInfo, "app-context", "log") +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/init_db.go b/vendor/src/github.com/stellar/go/services/horizon/internal/init_db.go new file mode 100644 index 0000000..427cbf8 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/init_db.go @@ -0,0 +1,37 @@ +package horizon + +import ( + "github.com/stellar/go/support/db" + "github.com/stellar/go/services/horizon/internal/db2/core" + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stellar/go/services/horizon/internal/log" +) + +func initHorizonDb(app *App) { + session, err := db.Open("postgres", app.config.DatabaseURL) + + if err != nil { + log.Panic(err) + } + session.DB.SetMaxIdleConns(4) + session.DB.SetMaxOpenConns(12) + + app.historyQ = &history.Q{session} +} + +func initCoreDb(app *App) { + session, err := db.Open("postgres", app.config.StellarCoreDatabaseURL) + + if err != nil { + log.Panic(err) + } + + session.DB.SetMaxIdleConns(4) + session.DB.SetMaxOpenConns(12) + app.coreQ = &core.Q{session} +} + +func init() { + appInit.Add("horizon-db", initHorizonDb, "app-context", "log") + appInit.Add("core-db", initCoreDb, "app-context", "log") +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/init_friendbot.go b/vendor/src/github.com/stellar/go/services/horizon/internal/init_friendbot.go new file mode 100644 index 0000000..4135672 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/init_friendbot.go @@ -0,0 +1,26 @@ +package horizon + +import ( + "github.com/stellar/go/strkey" + "github.com/stellar/go/services/horizon/internal/friendbot" +) + +func initFriendbot(app *App) { + if app.config.FriendbotSecret == "" { + return + } + + // ensure its a seed if its not blank + strkey.MustDecode(strkey.VersionByteSeed, app.config.FriendbotSecret) + + app.friendbot = &friendbot.Bot{ + Secret: app.config.FriendbotSecret, + Submitter: app.submitter, + Network: app.networkPassphrase, + } + +} + +func init() { + appInit.Add("friendbot", initFriendbot, "txsub", "stellarCoreInfo") +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/init_ingester.go b/vendor/src/github.com/stellar/go/services/horizon/internal/init_ingester.go new file mode 100644 index 0000000..8fe24b7 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/init_ingester.go @@ -0,0 +1,30 @@ +package horizon + +import ( + "log" + + "github.com/stellar/go/services/horizon/internal/ingest" +) + +func initIngester(app *App) { + if !app.config.Ingest { + return + } + + if app.networkPassphrase == "" { + log.Fatal("Cannot start ingestion without network passphrase. Please confirm connectivity with stellar-core.") + } + + app.ingester = ingest.New( + app.networkPassphrase, + app.config.StellarCoreURL, + app.CoreSession(nil), + app.HorizonSession(nil), + ) + + app.ingester.SkipCursorUpdate = app.config.SkipCursorUpdate +} + +func init() { + appInit.Add("ingester", initIngester, "app-context", "log", "horizon-db", "core-db", "stellarCoreInfo") +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/init_log.go b/vendor/src/github.com/stellar/go/services/horizon/internal/init_log.go new file mode 100644 index 0000000..dc56142 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/init_log.go @@ -0,0 +1,53 @@ +package horizon + +import ( + "github.com/getsentry/raven-go" + "github.com/stellar/go/services/horizon/internal/log" +) + +// initLog initialized the logging subsystem, attaching app.log and +// app.logMetrics. It also configured the logger's level using Config.LogLevel. +func initLog(app *App) { + log.DefaultLogger.Logger.Level = app.config.LogLevel +} + +// initSentry initialized the default sentry client with the configured DSN +func initSentry(app *App) { + if app.config.SentryDSN == "" { + return + } + + log.WithField("dsn", app.config.SentryDSN).Info("Initializing sentry") + err := raven.SetDSN(app.config.SentryDSN) + + if err != nil { + panic(err) + } +} + +// initLogglyLog attaches a loggly hook to our logging system. +func initLogglyLog(app *App) { + + if app.config.LogglyToken == "" { + return + } + + log.WithFields(log.F{ + "token": app.config.LogglyToken, + "loggly_host": app.config.LogglyHost, + }).Info("Initializing loggly hook") + + hook := log.NewLogglyHook(app.config.LogglyToken) + log.DefaultLogger.Logger.Hooks.Add(hook) + + go func() { + <-app.ctx.Done() + hook.Flush() + }() +} + +func init() { + appInit.Add("log", initLog) + appInit.Add("sentry", initSentry, "log", "app-context") + appInit.Add("loggly", initLogglyLog, "log", "app-context") +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/init_metrics.go b/vendor/src/github.com/stellar/go/services/horizon/internal/init_metrics.go new file mode 100644 index 0000000..7ae6951 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/init_metrics.go @@ -0,0 +1,73 @@ +package horizon + +import ( + "fmt" + + "github.com/rcrowley/go-metrics" + "github.com/stellar/go/services/horizon/internal/log" +) + +func initMetrics(app *App) { + app.metrics = metrics.NewRegistry() +} + +func initDbMetrics(app *App) { + app.historyLatestLedgerGauge = metrics.NewGauge() + app.historyElderLedgerGauge = metrics.NewGauge() + app.coreLatestLedgerGauge = metrics.NewGauge() + app.coreElderLedgerGauge = metrics.NewGauge() + + app.horizonConnGauge = metrics.NewGauge() + app.coreConnGauge = metrics.NewGauge() + app.goroutineGauge = metrics.NewGauge() + app.metrics.Register("history.latest_ledger", app.historyLatestLedgerGauge) + app.metrics.Register("history.elder_ledger", app.historyElderLedgerGauge) + app.metrics.Register("stellar_core.latest_ledger", app.coreLatestLedgerGauge) + app.metrics.Register("stellar_core.elder_ledger", app.coreElderLedgerGauge) + app.metrics.Register("history.open_connections", app.horizonConnGauge) + app.metrics.Register("stellar_core.open_connections", app.coreConnGauge) + app.metrics.Register("goroutines", app.goroutineGauge) +} + +func initIngesterMetrics(app *App) { + if app.ingester == nil { + return + } + app.metrics.Register("ingester.ingest_ledger", + app.ingester.Metrics.IngestLedgerTimer) + app.metrics.Register("ingester.clear_ledger", + app.ingester.Metrics.ClearLedgerTimer) +} + +func initLogMetrics(app *App) { + for level, meter := range *log.DefaultMetrics { + key := fmt.Sprintf("logging.%s", level) + app.metrics.Register(key, meter) + } +} + +func initTxSubMetrics(app *App) { + app.submitter.Init() + app.metrics.Register("txsub.buffered", app.submitter.Metrics.BufferedSubmissionsGauge) + app.metrics.Register("txsub.open", app.submitter.Metrics.OpenSubmissionsGauge) + app.metrics.Register("txsub.succeeded", app.submitter.Metrics.SuccessfulSubmissionsMeter) + app.metrics.Register("txsub.failed", app.submitter.Metrics.FailedSubmissionsMeter) + app.metrics.Register("txsub.total", app.submitter.Metrics.SubmissionTimer) +} + +// initWebMetrics registers the metrics for the web server into the provided +// app's metrics registry. +func initWebMetrics(app *App) { + app.metrics.Register("requests.total", app.web.requestTimer) + app.metrics.Register("requests.succeeded", app.web.successMeter) + app.metrics.Register("requests.failed", app.web.failureMeter) +} + +func init() { + appInit.Add("metrics", initMetrics) + appInit.Add("log.metrics", initLogMetrics, "metrics") + appInit.Add("db-metrics", initDbMetrics, "metrics", "horizon-db", "core-db") + appInit.Add("web.metrics", initWebMetrics, "web.init", "metrics") + appInit.Add("txsub.metrics", initTxSubMetrics, "txsub", "metrics") + appInit.Add("ingester.metrics", initIngesterMetrics, "ingester", "metrics") +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/init_path_finder.go b/vendor/src/github.com/stellar/go/services/horizon/internal/init_path_finder.go new file mode 100644 index 0000000..2919b65 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/init_path_finder.go @@ -0,0 +1,13 @@ +package horizon + +import ( + "github.com/stellar/go/services/horizon/internal/simplepath" +) + +func initPathFinding(app *App) { + app.paths = &simplepath.Finder{app.CoreQ()} +} + +func init() { + appInit.Add("path-finder", initPathFinding, "app-context", "log", "core-db") +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/init_reaper.go b/vendor/src/github.com/stellar/go/services/horizon/internal/init_reaper.go new file mode 100644 index 0000000..cb2d730 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/init_reaper.go @@ -0,0 +1,13 @@ +package horizon + +import ( + "github.com/stellar/go/services/horizon/internal/reap" +) + +func initReaper(app *App) { + app.reaper = reap.New(app.config.HistoryRetentionCount, app.HorizonSession(nil)) +} + +func init() { + appInit.Add("reaper", initReaper, "app-context", "log", "horizon-db") +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/init_redis.go b/vendor/src/github.com/stellar/go/services/horizon/internal/init_redis.go new file mode 100644 index 0000000..80b218b --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/init_redis.go @@ -0,0 +1,69 @@ +package horizon + +import ( + "net/url" + "time" + + "github.com/garyburd/redigo/redis" + "github.com/stellar/go/services/horizon/internal/log" +) + +func initRedis(app *App) { + if app.config.RedisURL == "" { + return + } + + redisURL, err := url.Parse(app.config.RedisURL) + + if err != nil { + log.Panic(err) + } + + app.redis = &redis.Pool{ + MaxIdle: 3, + IdleTimeout: 240 * time.Second, + Dial: dialRedis(redisURL), + TestOnBorrow: pingRedis, + } + + // test the connection + c := app.redis.Get() + defer c.Close() + + _, err = c.Do("PING") + + if err != nil { + log.Panic(err) + } +} + +func dialRedis(redisURL *url.URL) func() (redis.Conn, error) { + return func() (redis.Conn, error) { + c, err := redis.Dial("tcp", redisURL.Host) + if err != nil { + return nil, err + } + + if redisURL.User == nil { + return c, err + } + + if pass, ok := redisURL.User.Password(); ok { + if _, err := c.Do("AUTH", pass); err != nil { + c.Close() + return nil, err + } + } + + return c, err + } +} + +func pingRedis(c redis.Conn, t time.Time) error { + _, err := c.Do("PING") + return err +} + +func init() { + appInit.Add("redis", initRedis, "app-context", "log") +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/init_redis_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/init_redis_test.go new file mode 100644 index 0000000..ef56465 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/init_redis_test.go @@ -0,0 +1,34 @@ +package horizon + +import ( + "testing" + + "github.com/garyburd/redigo/redis" + "github.com/stretchr/testify/assert" +) + +func TestRedis_Config(t *testing.T) { + + c := NewTestConfig() + + // app.redis is nil when no RedisURL is set + c.RedisURL = "" + app, _ := NewApp(c) + assert.Nil(t, app.redis) + app.Close() + + // app.redis gets set when RedisURL is set + c.RedisURL = "redis://127.0.0.1:6379/" + app, _ = NewApp(c) + assert.NotNil(t, app.redis) + + // redis connection works + conn := app.redis.Get() + conn.Do("SET", "hello", "World") + world, _ := redis.String(conn.Do("GET", "hello")) + + assert.Equal(t, "World", world) + + conn.Close() + app.Close() +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/init_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/init_test.go new file mode 100644 index 0000000..538f8fd --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/init_test.go @@ -0,0 +1,40 @@ +package horizon + +import ( + "testing" + + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestAppInit(t *testing.T) { + tt := test.Start(t) + defer tt.Finish() + + // panics when a cycle is present + init := &initializerSet{} + init.Add("a", func(app *App) { t.Log("a") }, "b") + init.Add("b", func(app *App) { t.Log("b") }, "c") + init.Add("c", func(app *App) { t.Log("c") }, "a") + tt.Assert.Panics(func() { init.Run(&App{}) }) + + // runs in the right order + init = &initializerSet{} + order := []string{} + init.Add("a", func(app *App) { order = append(order, "a") }) + init.Add("b", func(app *App) { order = append(order, "b") }, "a") + init.Add("c", func(app *App) { order = append(order, "c") }, "b") + + init.Run(&App{}) + tt.Assert.Equal([]string{"a", "b", "c"}, order) + + // only runs an initializer once + init = &initializerSet{} + count := 0 + init.Add("a", func(app *App) { count++ }) + init.Add("b", func(app *App) {}, "a") + init.Add("c", func(app *App) {}, "a") + + init.Run(&App{}) + tt.Assert.Equal(1, count) + +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/init_txsub.go b/vendor/src/github.com/stellar/go/services/horizon/internal/init_txsub.go new file mode 100644 index 0000000..68963b0 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/init_txsub.go @@ -0,0 +1,31 @@ +package horizon + +import ( + "net/http" + + "github.com/stellar/go/services/horizon/internal/db2/core" + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stellar/go/services/horizon/internal/txsub" + results "github.com/stellar/go/services/horizon/internal/txsub/results/db" + "github.com/stellar/go/services/horizon/internal/txsub/sequence" +) + +func initSubmissionSystem(app *App) { + cq := &core.Q{Session: app.CoreSession(nil)} + + app.submitter = &txsub.System{ + Pending: txsub.NewDefaultSubmissionList(), + Submitter: txsub.NewDefaultSubmitter(http.DefaultClient, app.config.StellarCoreURL), + SubmissionQueue: sequence.NewManager(), + Results: &results.DB{ + Core: cq, + History: &history.Q{Session: app.HorizonSession(nil)}, + }, + Sequences: cq.SequenceProvider(), + NetworkPassphrase: app.networkPassphrase, + } +} + +func init() { + appInit.Add("txsub", initSubmissionSystem, "app-context", "log", "horizon-db", "core-db") +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/init_web.go b/vendor/src/github.com/stellar/go/services/horizon/internal/init_web.go new file mode 100644 index 0000000..9c88778 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/init_web.go @@ -0,0 +1,177 @@ +package horizon + +import ( + "database/sql" + "net/http" + "strings" + + "github.com/PuerkitoBio/throttled" + "github.com/PuerkitoBio/throttled/store" + metrics "github.com/rcrowley/go-metrics" + "github.com/rs/cors" + "github.com/sebest/xff" + "github.com/stellar/go/services/horizon/internal/render/problem" + "github.com/stellar/go/services/horizon/internal/txsub/sequence" + "github.com/zenazn/goji/web" + "github.com/zenazn/goji/web/middleware" +) + +// Web contains the http server related fields for horizon: the router, +// rate limiter, etc. +type Web struct { + router *web.Mux + rateLimiter *throttled.Throttler + + requestTimer metrics.Timer + failureMeter metrics.Meter + successMeter metrics.Meter +} + +// initWeb installed a new Web instance onto the provided app object. +func initWeb(app *App) { + app.web = &Web{ + router: web.New(), + requestTimer: metrics.NewTimer(), + failureMeter: metrics.NewMeter(), + successMeter: metrics.NewMeter(), + } + + // register problems + problem.RegisterError(sql.ErrNoRows, problem.NotFound) + problem.RegisterError(sequence.ErrNoMoreRoom, problem.ServerOverCapacity) +} + +// initWebMiddleware installs the middleware stack used for horizon onto the +// provided app. +func initWebMiddleware(app *App) { + + r := app.web.router + r.Use(stripTrailingSlashMiddleware()) + r.Use(middleware.EnvInit) + r.Use(app.Middleware) + r.Use(middleware.RequestID) + r.Use(contextMiddleware(app.ctx)) + r.Use(xff.Handler) + r.Use(LoggerMiddleware) + r.Use(requestMetricsMiddleware) + r.Use(RecoverMiddleware) + r.Use(middleware.AutomaticOptions) + + c := cors.New(cors.Options{ + AllowedOrigins: []string{"*"}, + AllowedHeaders: []string{"*"}, + }) + r.Use(c.Handler) + + r.Use(app.web.RateLimitMiddleware) +} + +// initWebActions installs the routing configuration of horizon onto the +// provided app. All route registration should be implemented here. +func initWebActions(app *App) { + r := app.web.router + r.Get("/", &RootAction{}) + r.Get("/metrics", &MetricsAction{}) + + // ledger actions + r.Get("/ledgers", &LedgerIndexAction{}) + r.Get("/ledgers/:id", &LedgerShowAction{}) + r.Get("/ledgers/:ledger_id/transactions", &TransactionIndexAction{}) + r.Get("/ledgers/:ledger_id/operations", &OperationIndexAction{}) + r.Get("/ledgers/:ledger_id/payments", &PaymentsIndexAction{}) + r.Get("/ledgers/:ledger_id/effects", &EffectIndexAction{}) + + // account actions + r.Get("/accounts/:id", &AccountShowAction{}) + r.Get("/accounts/:account_id/transactions", &TransactionIndexAction{}) + r.Get("/accounts/:account_id/operations", &OperationIndexAction{}) + r.Get("/accounts/:account_id/payments", &PaymentsIndexAction{}) + r.Get("/accounts/:account_id/effects", &EffectIndexAction{}) + r.Get("/accounts/:account_id/offers", &OffersByAccountAction{}) + r.Get("/accounts/:account_id/trades", &NotImplementedAction{}) + r.Get("/accounts/:account_id/data/:key", &DataShowAction{}) + + // transaction history actions + r.Get("/transactions", &TransactionIndexAction{}) + r.Get("/transactions/:id", &TransactionShowAction{}) + r.Get("/transactions/:tx_id/operations", &OperationIndexAction{}) + r.Get("/transactions/:tx_id/payments", &PaymentsIndexAction{}) + r.Get("/transactions/:tx_id/effects", &EffectIndexAction{}) + + // operation actions + r.Get("/operations", &OperationIndexAction{}) + r.Get("/operations/:id", &OperationShowAction{}) + r.Get("/operations/:op_id/effects", &EffectIndexAction{}) + + r.Get("/payments", &PaymentsIndexAction{}) + r.Get("/effects", &EffectIndexAction{}) + + // trading related endpoints + r.Get("/trades", &TradeIndexAction{}) + r.Get("/offers/:id", &NotImplementedAction{}) + r.Get("/offers/:offer_id/trades", &NotImplementedAction{}) + r.Get("/order_book", &OrderBookShowAction{}) + r.Get("/order_book/trades", &TradeIndexAction{}) + + // Transaction submission API + r.Post("/transactions", &TransactionCreateAction{}) + r.Get("/paths", &PathIndexAction{}) + + // friendbot + r.Post("/friendbot", &FriendbotAction{}) + r.Get("/friendbot", &FriendbotAction{}) + + r.NotFound(&NotFoundAction{}) +} + +func initWebRateLimiter(app *App) { + rateLimitStore := store.NewMemStore(1000) + + if app.redis != nil { + rateLimitStore = store.NewRedisStore(app.redis, "throttle:", 0) + } + + rateLimiter := throttled.RateLimit( + app.config.RateLimit, + &throttled.VaryBy{Custom: remoteAddrIP}, + rateLimitStore, + ) + + rateLimiter.DeniedHandler = &RateLimitExceededAction{App: app, Action: Action{}} + app.web.rateLimiter = rateLimiter +} + +func remoteAddrIP(r *http.Request) string { + ip := strings.SplitN(r.RemoteAddr, ":", 2)[0] + return ip +} + +func init() { + appInit.Add( + "web.init", + initWeb, + + "app-context", + ) + + appInit.Add( + "web.rate-limiter", + initWebRateLimiter, + + "web.init", + ) + appInit.Add( + "web.middleware", + initWebMiddleware, + + "web.init", + "web.rate-limiter", + "web.metrics", + ) + appInit.Add( + "web.actions", + initWebActions, + + "web.init", + ) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/ledger/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/ledger/main.go new file mode 100644 index 0000000..2effcb3 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/ledger/main.go @@ -0,0 +1,37 @@ +// Package ledger provides useful utilities concerning ledgers within stellar, +// specifically a central location to store a cached snapshot of the state of +// both horizon's and stellar-core's view of the ledger. This package is +// intended to be at the lowest levels of horizon's dependency tree, please keep +// it free of dependencies to other horizon packages. +package ledger + +import ( + "sync" +) + +// State represents a snapshot of both horizon's and stellar-core's view of the +// ledger. +type State struct { + CoreLatest int32 `db:"core_latest"` + CoreElder int32 `db:"core_elder"` + HistoryLatest int32 `db:"history_latest"` + HistoryElder int32 `db:"history_elder"` +} + +// CurrentState returns the cached snapshot of ledger state +func CurrentState() State { + lock.RLock() + ret := current + lock.RUnlock() + return ret +} + +// SetState updates the cached snapshot of the ledger state +func SetState(next State) { + lock.Lock() + current = next + lock.Unlock() +} + +var current State +var lock sync.RWMutex diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/log/doc.go b/vendor/src/github.com/stellar/go/services/horizon/internal/log/doc.go new file mode 100644 index 0000000..e77fa35 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/log/doc.go @@ -0,0 +1,9 @@ +// Package log provides the logging facilities used for horizon. +// +// You may notice that this package does not expose the "Fatal" family of +// logging functions: this is intentional. This package is specifically geared +// to logging within the context of an http server, and our chosen path for +// responding to "Oh my god something is horribly wrong" within the context +// of an HTTP request is to panic on that request. +// +package log diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/log/entry.go b/vendor/src/github.com/stellar/go/services/horizon/internal/log/entry.go new file mode 100644 index 0000000..2197708 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/log/entry.go @@ -0,0 +1,72 @@ +package log + +import ( + "github.com/sirupsen/logrus" + "github.com/stellar/go/services/horizon/internal/errors" +) + +type Entry struct { + logrus.Entry +} + +func (e *Entry) WithField(key string, value interface{}) *Entry { + return &Entry{*e.Entry.WithField(key, value)} +} + +func (e *Entry) WithFields(fields F) *Entry { + return &Entry{*e.Entry.WithFields(logrus.Fields(fields))} +} + +func (e *Entry) WithStack(err error) *Entry { + return e.WithField("stack", errors.Stack(err)) +} + +// Debugf logs a message at the debug severity. +func (e *Entry) Debugf(format string, args ...interface{}) { + e.Entry.Debugf(format, args...) +} + +// Debug logs a message at the debug severity. +func (e *Entry) Debug(args ...interface{}) { + e.Entry.Debug(args...) +} + +// Infof logs a message at the Info severity. +func (e *Entry) Infof(format string, args ...interface{}) { + e.Entry.Infof(format, args...) +} + +// Info logs a message at the Info severity. +func (e *Entry) Info(args ...interface{}) { + e.Entry.Info(args...) +} + +// Warnf logs a message at the Warn severity. +func (e *Entry) Warnf(format string, args ...interface{}) { + e.Entry.Warnf(format, args...) +} + +// Warn logs a message at the Warn severity. +func (e *Entry) Warn(args ...interface{}) { + e.Entry.Warn(args...) +} + +// Errorf logs a message at the Error severity. +func (e *Entry) Errorf(format string, args ...interface{}) { + e.Entry.Errorf(format, args...) +} + +// Error logs a message at the Error severity. +func (e *Entry) Error(args ...interface{}) { + e.Entry.Error(args...) +} + +// Panicf logs a message at the Panic severity. +func (e *Entry) Panicf(format string, args ...interface{}) { + e.Entry.Panicf(format, args...) +} + +// Panic logs a message at the Panic severity. +func (e *Entry) Panic(args ...interface{}) { + e.Entry.Panic(args...) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/log/loggly_hook.go b/vendor/src/github.com/stellar/go/services/horizon/internal/log/loggly_hook.go new file mode 100644 index 0000000..f0b5ab9 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/log/loggly_hook.go @@ -0,0 +1,66 @@ +package log + +import ( + "os" + "time" + + loggly "github.com/segmentio/go-loggly" + "github.com/sirupsen/logrus" +) + +// LogglyHook sends logs to loggly +type LogglyHook struct { + client *loggly.Client + host string + FilteredKeys map[string]bool +} + +// NewLogglyHook creates a new hook +func NewLogglyHook(token string) *LogglyHook { + client := loggly.New(token, "horizon") + host, err := os.Hostname() + + if err != nil { + panic("couldn't get hostname") + } + + return &LogglyHook{ + client: client, + host: host, + } +} + +func (hook *LogglyHook) Fire(entry *logrus.Entry) error { + logglyMessage := loggly.Message{ + "timestamp": entry.Time.UTC().Format(time.RFC3339Nano), + "level": entry.Level.String(), + "message": entry.Message, + "hostname": hook.host, + } + + for k, v := range entry.Data { + //Filter out keys + if _, ok := hook.FilteredKeys[k]; ok { + continue + } + + logglyMessage[k] = v + } + + return hook.client.Send(logglyMessage) +} + +func (hook *LogglyHook) Flush() { + hook.client.Flush() +} + +func (hook *LogglyHook) Levels() []logrus.Level { + return []logrus.Level{ + logrus.PanicLevel, + logrus.FatalLevel, + logrus.ErrorLevel, + logrus.WarnLevel, + logrus.InfoLevel, + logrus.DebugLevel, + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/log/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/log/main.go new file mode 100644 index 0000000..ec56363 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/log/main.go @@ -0,0 +1,141 @@ +package log + +import ( + "os" + + "github.com/go-errors/errors" + "github.com/sirupsen/logrus" + "golang.org/x/net/context" + // glog "log" +) + +var contextKey = 0 +var DefaultLogger *Entry +var DefaultMetrics *Metrics + +const ( + PanicLevel = logrus.PanicLevel + ErrorLevel = logrus.ErrorLevel + WarnLevel = logrus.WarnLevel + InfoLevel = logrus.InfoLevel + DebugLevel = logrus.DebugLevel +) + +type F logrus.Fields + +func init() { + DefaultLogger, DefaultMetrics = New() +} + +// New creates a new logger according to horizon specifications. +func New() (result *Entry, m *Metrics) { + m = NewMetrics() + l := logrus.New() + l.Level = logrus.WarnLevel + l.Hooks.Add(m) + + result = &Entry{*logrus.NewEntry(l).WithField("pid", os.Getpid())} + return +} + +// Set establishes a new context to which the provided sub-logger is bound +func Set(parent context.Context, logger *Entry) context.Context { + return context.WithValue(parent, &contextKey, logger) +} + +// DEPRECATED: Use Ctx instead. +func FromContext(ctx context.Context) *Entry { + return Ctx(ctx) +} + +// C returns the logger bound to the provided context, otherwise +// providing the default logger. +func Ctx(ctx context.Context) *Entry { + found := ctx.Value(&contextKey) + + if found == nil { + return DefaultLogger + } + + return found.(*Entry) +} + +// PushContext is a helper method to derive a new context with a modified logger +// bound to it, where the logger is derived from the current value on the +// context. +func PushContext(parent context.Context, modFn func(*Entry) *Entry) context.Context { + current := Ctx(parent) + next := modFn(current) + return Set(parent, next) +} + +func WithField(key string, value interface{}) *Entry { + result := DefaultLogger.WithField(key, value) + return result +} + +func WithFields(fields F) *Entry { + return DefaultLogger.WithFields(fields) +} + +func WithStack(stackProvider interface{}) *Entry { + stack := "unknown" + + if stackProvider, ok := stackProvider.(*errors.Error); ok { + stack = string(stackProvider.Stack()) + } + + return WithField("stack", stack) +} + +// ===== Delegations ===== + +// Debugf logs a message at the debug severity. +func Debugf(format string, args ...interface{}) { + DefaultLogger.Debugf(format, args...) +} + +// Debug logs a message at the debug severity. +func Debug(args ...interface{}) { + DefaultLogger.Debug(args...) +} + +// Infof logs a message at the Info severity. +func Infof(format string, args ...interface{}) { + DefaultLogger.Infof(format, args...) +} + +// Info logs a message at the Info severity. +func Info(args ...interface{}) { + DefaultLogger.Info(args...) +} + +// Warnf logs a message at the Warn severity. +func Warnf(format string, args ...interface{}) { + DefaultLogger.Warnf(format, args...) +} + +// Warn logs a message at the Warn severity. +func Warn(args ...interface{}) { + DefaultLogger.Warn(args...) +} + +// Errorf logs a message at the Error severity. +func Errorf(format string, args ...interface{}) { + DefaultLogger.Errorf(format, args...) +} + +// Error logs a message at the Error severity. +func Error(args ...interface{}) { + DefaultLogger.Error(args...) +} + +// Panicf logs a message at the Panic severity. +func Panicf(format string, args ...interface{}) { + DefaultLogger.Panicf(format, args...) +} + +// Panic logs a message at the Panic severity. +func Panic(args ...interface{}) { + DefaultLogger.Panic(args...) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/log/main_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/log/main_test.go new file mode 100644 index 0000000..feecfe7 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/log/main_test.go @@ -0,0 +1,184 @@ +package log + +import ( + "bytes" + "errors" + "testing" + + "golang.org/x/net/context" + + ge "github.com/go-errors/errors" + "github.com/sirupsen/logrus" + . "github.com/smartystreets/goconvey/convey" +) + +func TestLogPackage(t *testing.T) { + + Convey("Set", t, func() { + So(context.Background().Value(&contextKey), ShouldBeNil) + l, _ := New() + ctx := Set(context.Background(), l) + So(ctx.Value(&contextKey), ShouldEqual, l) + }) + + Convey("Ctx", t, func() { + // defaults to the default logger + So(Ctx(context.Background()), ShouldEqual, DefaultLogger) + + // a set value overrides the default + l, _ := New() + + ctx := Set(context.Background(), l) + So(Ctx(ctx), ShouldEqual, l) + + // the deepest set value is returns + nested, _ := New() + nctx := Set(ctx, nested) + So(Ctx(nctx), ShouldEqual, nested) + }) + + Convey("PushContext", t, func() { + output := new(bytes.Buffer) + l, _ := New() + l.Logger.Formatter.(*logrus.TextFormatter).DisableColors = true + l.Logger.Out = output + ctx := Set(context.Background(), l.WithField("foo", "bar")) + + Ctx(ctx).Warn("hello") + So(output.String(), ShouldContainSubstring, "foo=bar") + So(output.String(), ShouldNotContainSubstring, "foo=baz") + + ctx = PushContext(ctx, func(logger *Entry) *Entry { + return logger.WithField("foo", "baz") + }) + + Ctx(ctx).Warn("hello") + So(output.String(), ShouldContainSubstring, "foo=baz") + }) + + Convey("Logging Statements", t, func() { + output := new(bytes.Buffer) + l, _ := New() + l.Logger.Formatter.(*logrus.TextFormatter).DisableColors = true + l.Logger.Out = output + + Convey("defaults to warn", func() { + + l.Debug("debug") + l.Info("info") + l.Warn("warn") + + So(output.String(), ShouldNotContainSubstring, "level=info") + So(output.String(), ShouldNotContainSubstring, "level=debug") + So(output.String(), ShouldContainSubstring, "level=warn") + }) + + Convey("Debug severity", func() { + l.Logger.Level = logrus.InfoLevel + l.Debug("Debug") + So(output.String(), ShouldEqual, "") + + l.Logger.Level = logrus.DebugLevel + l.Debug("Debug") + So(output.String(), ShouldContainSubstring, "level=debug") + So(output.String(), ShouldContainSubstring, "msg=Debug") + }) + + Convey("Info severity", func() { + l.Logger.Level = logrus.WarnLevel + l.Debug("foo") + l.Info("foo") + So(output.String(), ShouldEqual, "") + + l.Logger.Level = logrus.InfoLevel + l.Info("foo") + So(output.String(), ShouldContainSubstring, "level=info") + So(output.String(), ShouldContainSubstring, "msg=foo") + }) + + Convey("Warn severity", func() { + l.Logger.Level = logrus.ErrorLevel + l.Debug("foo") + l.Info("foo") + l.Warn("foo") + So(output.String(), ShouldEqual, "") + + l.Logger.Level = logrus.WarnLevel + l.Warn("foo") + So(output.String(), ShouldContainSubstring, "level=warn") + So(output.String(), ShouldContainSubstring, "msg=foo") + }) + + Convey("Error severity", func() { + l.Logger.Level = logrus.FatalLevel + l.Debug("foo") + l.Info("foo") + l.Warn("foo") + l.Error("foo") + So(output.String(), ShouldEqual, "") + + l.Logger.Level = logrus.ErrorLevel + l.Error("foo") + So(output.String(), ShouldContainSubstring, "level=error") + So(output.String(), ShouldContainSubstring, "msg=foo") + }) + + Convey("Panic severity", func() { + l.Logger.Level = logrus.PanicLevel + l.Debug("foo") + l.Info("foo") + l.Warn("foo") + l.Error("foo") + So(output.String(), ShouldEqual, "") + + So(func() { + l.Panic("foo") + }, ShouldPanic) + + So(output.String(), ShouldContainSubstring, "level=panic") + So(output.String(), ShouldContainSubstring, "msg=foo") + }) + }) + + Convey("WithStack", t, func() { + output := new(bytes.Buffer) + l, _ := New() + l.Logger.Formatter.(*logrus.TextFormatter).DisableColors = true + l.Logger.Out = output + + Convey("Adds stack=unknown when the provided err has not stack info", func() { + l.WithStack(errors.New("broken")).Error("test") + So(output.String(), ShouldContainSubstring, "stack=unknown") + }) + Convey("Adds the stack properly if a go-errors.Error is provided", func() { + err := ge.New("broken") + l.WithStack(err).Error("test") + // simply ensure that the line creating the above error is in the log + So(output.String(), ShouldContainSubstring, "main_test.go:") + }) + }) + + Convey("Metrics", t, func() { + output := new(bytes.Buffer) + l, m := New() + l.Logger.Formatter.(*logrus.TextFormatter).DisableColors = true + l.Logger.Level = logrus.DebugLevel + l.Logger.Out = output + + for _, meter := range *m { + So(meter.Count(), ShouldEqual, 0) + } + + l.Debug("foo") + l.Info("foo") + l.Warn("foo") + l.Error("foo") + So(func() { + l.Panic("foo") + }, ShouldPanic) + + for _, meter := range *m { + So(meter.Count(), ShouldEqual, 1) + } + }) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/log/metrics_hook.go b/vendor/src/github.com/stellar/go/services/horizon/internal/log/metrics_hook.go new file mode 100644 index 0000000..00a0329 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/log/metrics_hook.go @@ -0,0 +1,39 @@ +package log + +import ( + metrics "github.com/rcrowley/go-metrics" + "github.com/sirupsen/logrus" +) + +// Metrics is a logrus hook-compliant struct that records metrics about logging +// when added to a logrus.Logger +type Metrics map[logrus.Level]metrics.Meter + +// NewMetrics creates a new hook for recording metrics. +func NewMetrics() *Metrics { + return &Metrics{ + logrus.DebugLevel: metrics.NewMeter(), + logrus.InfoLevel: metrics.NewMeter(), + logrus.WarnLevel: metrics.NewMeter(), + logrus.ErrorLevel: metrics.NewMeter(), + logrus.PanicLevel: metrics.NewMeter(), + } +} + +// Fire is triggered by logrus, in response to a logging event +func (m *Metrics) Fire(e *logrus.Entry) error { + (*m)[e.Level].Mark(1) + return nil +} + +// Levels returns the logging levels that will trigger this hook to run. In +// this case, all of them. +func (m *Metrics) Levels() []logrus.Level { + return []logrus.Level{ + logrus.DebugLevel, + logrus.InfoLevel, + logrus.WarnLevel, + logrus.ErrorLevel, + logrus.PanicLevel, + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/main.go new file mode 100644 index 0000000..96ce901 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/main.go @@ -0,0 +1,4 @@ +package horizon + +//go:generate go-codegen +//go:generate gofmt -w main_generated.go diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/main_generated.go b/vendor/src/github.com/stellar/go/services/horizon/internal/main_generated.go new file mode 100644 index 0000000..897bee1 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/main_generated.go @@ -0,0 +1,146 @@ +package horizon + +import ( + "github.com/zenazn/goji/web" + "net/http" +) + +// ServeHTTPC is a method for web.Handler +func (action AccountShowAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request) { + ap := &action.Action + ap.Prepare(c, w, r) + ap.Execute(&action) +} + +// ServeHTTPC is a method for web.Handler +func (action DataShowAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request) { + ap := &action.Action + ap.Prepare(c, w, r) + ap.Execute(&action) +} + +// ServeHTTPC is a method for web.Handler +func (action EffectIndexAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request) { + ap := &action.Action + ap.Prepare(c, w, r) + ap.Execute(&action) +} + +// ServeHTTPC is a method for web.Handler +func (action LedgerIndexAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request) { + ap := &action.Action + ap.Prepare(c, w, r) + ap.Execute(&action) +} + +// ServeHTTPC is a method for web.Handler +func (action LedgerShowAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request) { + ap := &action.Action + ap.Prepare(c, w, r) + ap.Execute(&action) +} + +// ServeHTTPC is a method for web.Handler +func (action MetricsAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request) { + ap := &action.Action + ap.Prepare(c, w, r) + ap.Execute(&action) +} + +// ServeHTTPC is a method for web.Handler +func (action NotFoundAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request) { + ap := &action.Action + ap.Prepare(c, w, r) + ap.Execute(&action) +} + +// ServeHTTPC is a method for web.Handler +func (action NotImplementedAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request) { + ap := &action.Action + ap.Prepare(c, w, r) + ap.Execute(&action) +} + +// ServeHTTPC is a method for web.Handler +func (action OffersByAccountAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request) { + ap := &action.Action + ap.Prepare(c, w, r) + ap.Execute(&action) +} + +// ServeHTTPC is a method for web.Handler +func (action OperationIndexAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request) { + ap := &action.Action + ap.Prepare(c, w, r) + ap.Execute(&action) +} + +// ServeHTTPC is a method for web.Handler +func (action OperationShowAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request) { + ap := &action.Action + ap.Prepare(c, w, r) + ap.Execute(&action) +} + +// ServeHTTPC is a method for web.Handler +func (action OrderBookShowAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request) { + ap := &action.Action + ap.Prepare(c, w, r) + ap.Execute(&action) +} + +// ServeHTTPC is a method for web.Handler +func (action PathIndexAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request) { + ap := &action.Action + ap.Prepare(c, w, r) + ap.Execute(&action) +} + +// ServeHTTPC is a method for web.Handler +func (action PaymentsIndexAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request) { + ap := &action.Action + ap.Prepare(c, w, r) + ap.Execute(&action) +} + +// ServeHTTPC is a method for web.Handler +func (action RateLimitExceededAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request) { + ap := &action.Action + ap.Prepare(c, w, r) + ap.Execute(&action) +} + +// ServeHTTPC is a method for web.Handler +func (action RootAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request) { + ap := &action.Action + ap.Prepare(c, w, r) + ap.Execute(&action) +} + +// ServeHTTPC is a method for web.Handler +func (action TradeIndexAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request) { + ap := &action.Action + ap.Prepare(c, w, r) + ap.Execute(&action) +} + +// ServeHTTPC is a method for web.Handler +func (action TransactionCreateAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request) { + ap := &action.Action + ap.Prepare(c, w, r) + ap.Execute(&action) +} + +// ServeHTTPC is a method for web.Handler +func (action TransactionIndexAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request) { + ap := &action.Action + ap.Prepare(c, w, r) + ap.Execute(&action) +} + +// ServeHTTPC is a method for web.Handler +func (action TransactionShowAction) ServeHTTPC(c web.C, w http.ResponseWriter, r *http.Request) { + ap := &action.Action + ap.Prepare(c, w, r) + ap.Execute(&action) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/middleware_app.go b/vendor/src/github.com/stellar/go/services/horizon/internal/middleware_app.go new file mode 100644 index 0000000..870adf7 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/middleware_app.go @@ -0,0 +1,15 @@ +package horizon + +import ( + "github.com/zenazn/goji/web" + "net/http" +) + +// Adds the "app" env key into every request, so that subsequence middleware +// or handlers can retrieve a horizon.App instance +func (app *App) Middleware(c *web.C, h http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + c.Env["app"] = app + h.ServeHTTP(w, r) + }) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/middleware_context.go b/vendor/src/github.com/stellar/go/services/horizon/internal/middleware_context.go new file mode 100644 index 0000000..b12d26f --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/middleware_context.go @@ -0,0 +1,25 @@ +package horizon + +import ( + gctx "github.com/goji/context" + "github.com/stellar/go/services/horizon/internal/context/requestid" + "github.com/stellar/go/services/horizon/internal/httpx" + "github.com/zenazn/goji/web" + "golang.org/x/net/context" + "net/http" +) + +func contextMiddleware(parent context.Context) func(c *web.C, next http.Handler) http.Handler { + return func(c *web.C, next http.Handler) http.Handler { + fn := func(w http.ResponseWriter, r *http.Request) { + ctx := parent + ctx = requestid.ContextFromC(ctx, c) + ctx, cancel := httpx.RequestContext(ctx, w, r) + + gctx.Set(c, ctx) + defer cancel() + next.ServeHTTP(w, r) + } + return http.HandlerFunc(fn) + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/middleware_logger.go b/vendor/src/github.com/stellar/go/services/horizon/internal/middleware_logger.go new file mode 100644 index 0000000..e88bda0 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/middleware_logger.go @@ -0,0 +1,65 @@ +package horizon + +import ( + "net/http" + "strings" + "time" + + "golang.org/x/net/context" + + gctx "github.com/goji/context" + "github.com/stellar/go/services/horizon/internal/log" + "github.com/stellar/go/services/horizon/internal/render" + "github.com/zenazn/goji/web" + "github.com/zenazn/goji/web/middleware" + "github.com/zenazn/goji/web/mutil" +) + +// LoggerMiddleware is the middleware that logs http requests and resposnes +// to the logging subsytem of horizon. +func LoggerMiddleware(c *web.C, h http.Handler) http.Handler { + fn := func(w http.ResponseWriter, r *http.Request) { + ctx := gctx.FromC(*c) + mw := mutil.WrapWriter(w) + + logger := log.WithField("req", middleware.GetReqID(*c)) + + ctx = log.Set(ctx, logger) + gctx.Set(c, ctx) + + logStartOfRequest(ctx, r) + + then := time.Now() + h.ServeHTTP(mw, r) + duration := time.Now().Sub(then) + // Checking `Accept` header from user request because if the streaming connection + // is reset before sending the first event no Content-Type header is sent in a response. + acceptHeader := r.Header.Get("Accept") + streaming := strings.Contains(acceptHeader, render.MimeEventStream) + logEndOfRequest(ctx, r, duration, mw, streaming) + } + + return http.HandlerFunc(fn) +} + +func logStartOfRequest(ctx context.Context, r *http.Request) { + log.Ctx(ctx).WithFields(log.F{ + "path": r.URL.String(), + "method": r.Method, + "ip": r.RemoteAddr, + "host": r.Host, + }).Info("Starting request") +} + +func logEndOfRequest(ctx context.Context, r *http.Request, duration time.Duration, mw mutil.WriterProxy, streaming bool) { + log.Ctx(ctx).WithFields(log.F{ + "path": r.URL.String(), + "method": r.Method, + "ip": r.RemoteAddr, + "host": r.Host, + "status": mw.Status(), + "bytes": mw.BytesWritten(), + "duration": duration, + "streaming": streaming, + }).Info("Finished request") +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/middleware_rate_limit.go b/vendor/src/github.com/stellar/go/services/horizon/internal/middleware_rate_limit.go new file mode 100644 index 0000000..7fb2b1d --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/middleware_rate_limit.go @@ -0,0 +1,10 @@ +package horizon + +import ( + "github.com/zenazn/goji/web" + "net/http" +) + +func (web *Web) RateLimitMiddleware(c *web.C, next http.Handler) http.Handler { + return web.rateLimiter.Throttle(next) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/middleware_rate_limit_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/middleware_rate_limit_test.go new file mode 100644 index 0000000..042b617 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/middleware_rate_limit_test.go @@ -0,0 +1,110 @@ +package horizon + +import ( + "strconv" + "testing" + + "github.com/PuerkitoBio/throttled" + . "github.com/smartystreets/goconvey/convey" + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestRateLimitMiddleware(t *testing.T) { + + Convey("Rate Limiting", t, func() { + c := NewTestConfig() + c.RateLimit = throttled.PerHour(10) + app, _ := NewApp(c) + defer app.Close() + rh := NewRequestHelper(app) + + Convey("sets X-RateLimit-Limit headers correctly", func() { + w := rh.Get("/") + So(w.Code, ShouldEqual, 200) + So(w.Header().Get("X-RateLimit-Limit"), ShouldEqual, "10") + }) + + Convey("sets X-RateLimit-Remaining headers correctly", func() { + for i := 0; i < 10; i++ { + w := rh.Get("/") + expected := 10 - (i + 1) + So(w.Header().Get("X-RateLimit-Remaining"), ShouldEqual, strconv.Itoa(expected)) + } + + // confirm remaining stays at 0 + for i := 0; i < 10; i++ { + w := rh.Get("/") + So(w.Header().Get("X-RateLimit-Remaining"), ShouldEqual, "0") + } + }) + + Convey("sets X-RateLimit-Reset header correctly", func() { + w := rh.Get("/") + So(w.Header().Get("X-RateLimit-Reset"), ShouldEqual, "3599") + }) + + Convey("Restricts based on RemoteAddr IP after too many requests", func() { + for i := 0; i < 10; i++ { + w := rh.Get("/") + So(w.Code, ShouldEqual, 200) + } + + w := rh.Get("/") + So(w.Code, ShouldEqual, 429) + + w = rh.Get("/", test.RequestHelperRemoteAddr("127.0.0.2")) + So(w.Code, ShouldEqual, 200) + + // Ignores ports + w = rh.Get("/", test.RequestHelperRemoteAddr("127.0.0.1:4312")) + So(w.Code, ShouldEqual, 429) + }) + + Convey("Restrict based upon X-Forwarded-For correctly", func() { + for i := 0; i < 10; i++ { + w := rh.Get("/", test.RequestHelperXFF("4.4.4.4")) + So(w.Code, ShouldEqual, 200) + } + + w := rh.Get("/", test.RequestHelperXFF("4.4.4.4")) + So(w.Code, ShouldEqual, 429) + + // allow other ips + w = rh.Get("/", test.RequestHelperRemoteAddr("4.4.4.3")) + So(w.Code, ShouldEqual, 200) + + // Ignores leading private ips + w = rh.Get("/", test.RequestHelperXFF("10.0.0.1, 4.4.4.4")) + So(w.Code, ShouldEqual, 429) + + // Ignores trailing ips + w = rh.Get("/", test.RequestHelperXFF("4.4.4.4, 4.4.4.5, 127.0.0.1")) + So(w.Code, ShouldEqual, 429) + + }) + }) + + Convey("Rate Limiting works with redis", t, func() { + c := NewTestConfig() + c.RateLimit = throttled.PerHour(10) + c.RedisURL = "redis://127.0.0.1:6379/" + app, _ := NewApp(c) + defer app.Close() + rh := NewRequestHelper(app) + + redis := app.redis.Get() + _, err := redis.Do("FLUSHDB") + So(err, ShouldBeNil) + + for i := 0; i < 10; i++ { + w := rh.Get("/") + So(w.Code, ShouldEqual, 200) + } + + w := rh.Get("/") + So(w.Code, ShouldEqual, 429) + + w = rh.Get("/", test.RequestHelperRemoteAddr("127.0.0.2")) + So(w.Code, ShouldEqual, 200) + }) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/middleware_recover.go b/vendor/src/github.com/stellar/go/services/horizon/internal/middleware_recover.go new file mode 100644 index 0000000..bf6ef69 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/middleware_recover.go @@ -0,0 +1,31 @@ +package horizon + +import ( + "net/http" + + gctx "github.com/goji/context" + "github.com/stellar/go/services/horizon/internal/errors" + "github.com/stellar/go/services/horizon/internal/render/problem" + "github.com/zenazn/goji/web" +) + +// RecoverMiddleware helps the server recover from panics. It ensures that +// no request can fully bring down the horizon server, and it also logs the +// panics to the logging subsystem. +func RecoverMiddleware(c *web.C, h http.Handler) http.Handler { + fn := func(w http.ResponseWriter, r *http.Request) { + ctx := gctx.FromC(*c) + + defer func() { + if rec := recover(); rec != nil { + err := errors.FromPanic(rec) + errors.ReportToSentry(err, r) + problem.Render(ctx, w, err) + } + }() + + h.ServeHTTP(w, r) + } + + return http.HandlerFunc(fn) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/middleware_request_metrics.go b/vendor/src/github.com/stellar/go/services/horizon/internal/middleware_request_metrics.go new file mode 100644 index 0000000..8fff1d3 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/middleware_request_metrics.go @@ -0,0 +1,31 @@ +package horizon + +import ( + "net/http" + + "github.com/zenazn/goji/web" + "github.com/zenazn/goji/web/mutil" +) + +// Middleware that records metrics. +// +// It records success and failures using a meter, and times every request +func requestMetricsMiddleware(c *web.C, h http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + app := c.Env["app"].(*App) + mw := mutil.WrapWriter(w) + + app.web.requestTimer.Time(func() { + h.ServeHTTP(mw.(http.ResponseWriter), r) + }) + + if 200 <= mw.Status() && mw.Status() < 400 { + // a success is in [200, 400) + app.web.successMeter.Mark(1) + } else if 400 <= mw.Status() && mw.Status() < 600 { + // a success is in [400, 600) + app.web.failureMeter.Mark(1) + } + + }) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/middleware_trailing_slash.go b/vendor/src/github.com/stellar/go/services/horizon/internal/middleware_trailing_slash.go new file mode 100644 index 0000000..2cdf47b --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/middleware_trailing_slash.go @@ -0,0 +1,24 @@ +package horizon + +import ( + "github.com/zenazn/goji/web" + "net/http" +) + +func stripTrailingSlashMiddleware() func(c *web.C, next http.Handler) http.Handler { + return func(c *web.C, next http.Handler) http.Handler { + fn := func(w http.ResponseWriter, r *http.Request) { + path := r.URL.Path + l := len(path) + + // if the path is longer than 1 char (i.e., not '/') + // and has a trailing slash, remove it. + if l > 1 && path[l-1] == '/' { + r.URL.Path = path[0 : l-1] + } + + next.ServeHTTP(w, r) + } + return http.HandlerFunc(fn) + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/paths/doc.go b/vendor/src/github.com/stellar/go/services/horizon/internal/paths/doc.go new file mode 100644 index 0000000..c1ae1a2 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/paths/doc.go @@ -0,0 +1,3 @@ +// Package paths provides utilities and facilities for payment paths as needed by horizon. Most +// importantly, it provides the Finder interface, allowing for pluggable path finding back ends. +package paths diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/paths/dummy_finder.go b/vendor/src/github.com/stellar/go/services/horizon/internal/paths/dummy_finder.go new file mode 100644 index 0000000..8e3f00b --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/paths/dummy_finder.go @@ -0,0 +1,42 @@ +package paths + +import ( + "github.com/stellar/go/xdr" +) + +type DummyFinder struct { +} + +func (f *DummyFinder) Find(q Query) ([]Path, error) { + paths := make([]Path, 2) + n, err := xdr.NewAsset(xdr.AssetTypeAssetTypeNative, nil) + + if err != nil { + return nil, err + } + + paths[0] = DummyPath{ + source: n, + destination: n, + path: []xdr.Asset{n, n, n}, + } + + paths[1] = DummyPath{ + source: n, + destination: n, + path: []xdr.Asset{n, n, n}, + } + + return paths, nil +} + +type DummyPath struct { + source xdr.Asset + destination xdr.Asset + path []xdr.Asset +} + +func (d DummyPath) Source() xdr.Asset { return d.source } +func (d DummyPath) Destination() xdr.Asset { return d.destination } +func (d DummyPath) Path() []xdr.Asset { return d.path } +func (d DummyPath) Cost(amount xdr.Int64) (xdr.Int64, error) { return amount, nil } diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/paths/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/paths/main.go new file mode 100644 index 0000000..29569a7 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/paths/main.go @@ -0,0 +1,29 @@ +package paths + +import ( + "github.com/stellar/go/xdr" +) + +// Query is a query for paths +type Query struct { + DestinationAddress string + DestinationAsset xdr.Asset + DestinationAmount xdr.Int64 + SourceAssets []xdr.Asset +} + +// Path is the interface that represents a single result returned +// by a path finder. +type Path interface { + Path() []xdr.Asset + Source() xdr.Asset + Destination() xdr.Asset + // Cost returns an amount (which may be estimated), delimited in the Source assets + // that is suitable for use as the `sendMax` field for a `PathPaymentOp` struct. + Cost(amount xdr.Int64) (xdr.Int64, error) +} + +// Finder finds paths. +type Finder interface { + Find(Query) ([]Path, error) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/reap/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/reap/main.go new file mode 100644 index 0000000..91701c0 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/reap/main.go @@ -0,0 +1,31 @@ +// Package reap contains the history reaping subsystem for horizon. This system +// is designed to remove data from the history database such that it does not +// grow indefinitely. The system can be configured with a number of ledgers to +// maintain at a minimum. +package reap + +import ( + "time" + + "github.com/stellar/go/support/db" +) + +// System represents the history reaping subsystem of horizon. +type System struct { + HorizonDB *db.Session + RetentionCount uint + + nextRun time.Time +} + +// New initializes the reaper, causing it to begin polling the stellar-core +// database for now ledgers and ingesting data into the horizon database. +func New(retention uint, horizon *db.Session) *System { + r := &System{ + HorizonDB: horizon, + RetentionCount: retention, + } + + r.nextRun = time.Now().Add(1 * time.Hour) + return r +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/reap/system.go b/vendor/src/github.com/stellar/go/services/horizon/internal/reap/system.go new file mode 100644 index 0000000..b4b0297 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/reap/system.go @@ -0,0 +1,98 @@ +package reap + +import ( + "time" + + "github.com/stellar/go/services/horizon/internal/errors" + "github.com/stellar/go/services/horizon/internal/ledger" + "github.com/stellar/go/services/horizon/internal/log" + "github.com/stellar/go/services/horizon/internal/toid" +) + +// DeleteUnretainedHistory removes all data associated with unretained ledgers. +func (r *System) DeleteUnretainedHistory() error { + // RetentionCount of 0 indicates "keep all history" + if r.RetentionCount == 0 { + return nil + } + + var ( + latest = ledger.CurrentState() + targetElder = (latest.HistoryLatest - int32(r.RetentionCount)) + 1 + ) + + if targetElder < latest.HistoryElder { + return nil + } + + err := r.clearBefore(targetElder) + if err != nil { + return err + } + + log. + WithField("new_elder", targetElder). + Info("reaper succeeded") + + return nil +} + +// Tick triggers the reaper system to update itself, deleted unretained history +// if it is the appropriate time. +func (r *System) Tick() { + if time.Now().After(r.nextRun) { + return + } + + r.runOnce() + r.nextRun = time.Now().Add(1 * time.Hour) +} + +func (r *System) runOnce() { + defer func() { + if rec := recover(); rec != nil { + err := errors.FromPanic(rec) + log.Errorf("reaper panicked: %s", err) + errors.ReportToSentry(err, nil) + } + }() + + err := r.DeleteUnretainedHistory() + if err != nil { + log.Errorf("reaper failed: %s", err) + } +} + +func (r *System) clearBefore(seq int32) error { + log.WithField("new_elder", seq).Info("reaper: clearing") + + clear := r.HorizonDB.DeleteRange + end := toid.New(seq, 0, 0).ToInt64() + + err := clear(0, end, "history_effects", "history_operation_id") + if err != nil { + return err + } + err = clear(0, end, "history_operation_participants", "history_operation_id") + if err != nil { + return err + } + err = clear(0, end, "history_operations", "id") + if err != nil { + return err + } + err = clear(0, end, "history_transaction_participants", "history_transaction_id") + if err != nil { + return err + } + err = clear(0, end, "history_transactions", "id") + if err != nil { + return err + } + err = clear(0, end, "history_ledgers", "id") + if err != nil { + return err + } + + return nil +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/reap/system_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/reap/system_test.go new file mode 100644 index 0000000..54fe567 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/reap/system_test.go @@ -0,0 +1,48 @@ +package reap + +import ( + "testing" + + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestDeleteUnretainedHistory(t *testing.T) { + tt := test.Start(t).Scenario("kahuna") + defer tt.Finish() + + db := tt.HorizonSession() + + sys := New(0, db) + + var ( + prev int + cur int + ) + err := db.GetRaw(&prev, `SELECT COUNT(*) FROM history_ledgers`) + tt.Require.NoError(err) + + err = sys.DeleteUnretainedHistory() + if tt.Assert.NoError(err) { + err = db.GetRaw(&cur, `SELECT COUNT(*) FROM history_ledgers`) + tt.Require.NoError(err) + tt.Assert.Equal(prev, cur, "Ledgers deleted when RetentionCount == 0") + } + + tt.UpdateLedgerState() + sys.RetentionCount = 10 + err = sys.DeleteUnretainedHistory() + if tt.Assert.NoError(err) { + err = db.GetRaw(&cur, `SELECT COUNT(*) FROM history_ledgers`) + tt.Require.NoError(err) + tt.Assert.Equal(10, cur) + } + + tt.UpdateLedgerState() + sys.RetentionCount = 1 + err = sys.DeleteUnretainedHistory() + if tt.Assert.NoError(err) { + err = db.GetRaw(&cur, `SELECT COUNT(*) FROM history_ledgers`) + tt.Require.NoError(err) + tt.Assert.Equal(1, cur) + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/render/hal/link.go b/vendor/src/github.com/stellar/go/services/horizon/internal/render/hal/link.go new file mode 100644 index 0000000..42c6fb7 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/render/hal/link.go @@ -0,0 +1,24 @@ +package hal + +import ( + "regexp" +) + +type Link struct { + Href string `json:"href"` + Templated bool `json:"templated,omitempty"` +} + +func (l *Link) PopulateTemplated() { + var err error + l.Templated, err = regexp.Match("{.*}", []byte(l.Href)) + if err != nil { + panic(err) + } +} + +func NewLink(href string) Link { + l := Link{Href: href} + l.PopulateTemplated() + return l +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/render/hal/link_builder.go b/vendor/src/github.com/stellar/go/services/horizon/internal/render/hal/link_builder.go new file mode 100644 index 0000000..dd0b7d0 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/render/hal/link_builder.go @@ -0,0 +1,69 @@ +package hal + +import ( + "fmt" + "net/url" + "strings" +) + +// StandardPagingOptions is a helper string to make creating paged collection +// URIs simpler. +const StandardPagingOptions = "{?cursor,limit,order}" + +// LinkBuilder is a helper for constructing URLs in horizon. +type LinkBuilder struct { + Base *url.URL +} + +// Link returns a hal.Link whose href is each of the +// provided parts joined by '/' +func (lb *LinkBuilder) Link(parts ...string) Link { + path := strings.Join(parts, "/") + + href := lb.expandLink(path) + + return NewLink(href) +} + +// PagedLink creates a link using the `Link` method and +// appends the common paging options +func (lb *LinkBuilder) PagedLink(parts ...string) Link { + nl := lb.Link(parts...) + nl.Href += StandardPagingOptions + nl.PopulateTemplated() + return nl +} + +// Linkf provides a helper function that returns a link with an +// href created by passing the arguments into fmt.Sprintf +func (lb *LinkBuilder) Linkf(format string, args ...interface{}) Link { + return lb.Link(fmt.Sprintf(format, args...)) +} + +// expandLink takes an href and resolves it against the LinkBuilders base url, +// if set. NOTE: this method panics if the input href cannot be parsed. It is +// meant to be used by developer author ed links, not with external data. +func (lb *LinkBuilder) expandLink(href string) string { + if lb.Base == nil { + return href + } + + u, err := url.Parse(href) + if err != nil { + panic(err) + } + + if u.Host == "" { + u.Host = lb.Base.Host + + if u.Scheme == "" { + u.Scheme = lb.Base.Scheme + } + } + + //HACK: replace the encoded path with the un-encoded path, which preserves + //the uritemplate parameters. + result := strings.Replace(u.String(), u.EscapedPath(), u.Path, -1) + + return result +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/render/hal/link_builder_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/render/hal/link_builder_test.go new file mode 100644 index 0000000..c43f588 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/render/hal/link_builder_test.go @@ -0,0 +1,45 @@ +package hal + +import ( + . "github.com/smartystreets/goconvey/convey" + "net/url" + "testing" +) + +func TestLinkBuilder(t *testing.T) { + + Convey("Link Expansion", t, func() { + + check := func(href string, base string, expectedResult string) { + lb := LinkBuilder{mustParseURL(base)} + result := lb.expandLink(href) + So(result, ShouldEqual, expectedResult) + } + + check("/root", "", "/root") + check("/root", "//stellar.org", "//stellar.org/root") + check("/root", "https://stellar.org", "https://stellar.org/root") + check("//else.org/root", "", "//else.org/root") + check("//else.org/root", "//stellar.org", "//else.org/root") + check("//else.org/root", "https://stellar.org", "//else.org/root") + check("https://else.org/root", "", "https://else.org/root") + check("https://else.org/root", "//stellar.org", "https://else.org/root") + check("https://else.org/root", "https://stellar.org", "https://else.org/root") + + // Regression: ensure that parameters are not escaped + check("/accounts/{id}", "https://stellar.org", "https://stellar.org/accounts/{id}") + }) + +} + +func mustParseURL(base string) *url.URL { + if base == "" { + return nil + } + + u, err := url.Parse(base) + if err != nil { + panic(err) + } + return u +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/render/hal/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/render/hal/main.go new file mode 100644 index 0000000..9b86427 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/render/hal/main.go @@ -0,0 +1,29 @@ +package hal + +import ( + "encoding/json" + "net/http" +) + +// RenderToString renders the provided data as a json string +func RenderToString(data interface{}, pretty bool) ([]byte, error) { + if pretty { + return json.MarshalIndent(data, "", " ") + } + + return json.Marshal(data) +} + +// Render write data to w, after marshalling to json +func Render(w http.ResponseWriter, data interface{}) { + js, err := RenderToString(data, true) + + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Disposition", "inline") + w.Header().Set("Content-Type", "application/hal+json; charset=utf-8") + w.Write(js) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/render/hal/page.go b/vendor/src/github.com/stellar/go/services/horizon/internal/render/hal/page.go new file mode 100644 index 0000000..5ea1842 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/render/hal/page.go @@ -0,0 +1,75 @@ +package hal + +import ( + "net/url" +) + +// BasePage represents the simplest page: one with no links and only embedded records. +// Can be used to build custom page-like resources +type BasePage struct { + BaseURL *url.URL `json:"-"` + Embedded struct { + Records []Pageable `json:"records"` + } `json:"_embedded"` +} + +// Add appends the provided record onto the page +func (p *BasePage) Add(rec Pageable) { + p.Embedded.Records = append(p.Embedded.Records, rec) +} + +// Init initialized the Records slice. This ensures that an empty page +// renders its records as an empty array, rather than `null` +func (p *BasePage) Init() { + if p.Embedded.Records == nil { + p.Embedded.Records = make([]Pageable, 0, 1) + } +} + +// Page represents the common page configuration (i.e. has self, next, and prev +// links) and has a helper method `PopulateLinks` to automate their +// initialization. +type Page struct { + Links struct { + Self Link `json:"self"` + Next Link `json:"next"` + Prev Link `json:"prev"` + } `json:"_links"` + + BasePage + BasePath string `json:"-"` + Order string `json:"-"` + Limit uint64 `json:"-"` + Cursor string `json:"-"` +} + +// PopulateLinks sets the common links for a page. +func (p *Page) PopulateLinks() { + p.Init() + fmts := p.BasePath + "?order=%s&limit=%d&cursor=%s" + lb := LinkBuilder{p.BaseURL} + + p.Links.Self = lb.Linkf(fmts, p.Order, p.Limit, p.Cursor) + rec := p.Embedded.Records + + if len(rec) > 0 { + p.Links.Next = lb.Linkf(fmts, p.Order, p.Limit, rec[len(rec)-1].PagingToken()) + p.Links.Prev = lb.Linkf(fmts, p.InvertedOrder(), p.Limit, rec[0].PagingToken()) + } else { + p.Links.Next = lb.Linkf(fmts, p.Order, p.Limit, p.Cursor) + p.Links.Prev = lb.Linkf(fmts, p.InvertedOrder(), p.Limit, p.Cursor) + } +} + +// InvertedOrder returns the inversion of the page's current order. Used to +// populate the prev link +func (p *Page) InvertedOrder() string { + switch p.Order { + case "asc": + return "desc" + case "desc": + return "asc" + default: + return "asc" + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/render/hal/paging_token.go b/vendor/src/github.com/stellar/go/services/horizon/internal/render/hal/paging_token.go new file mode 100644 index 0000000..a3e3a67 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/render/hal/paging_token.go @@ -0,0 +1,6 @@ +package hal + +// Pageable impementors can be added to hal.Page collections +type Pageable interface { + PagingToken() string +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/render/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/render/main.go new file mode 100644 index 0000000..a02d050 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/render/main.go @@ -0,0 +1,29 @@ +package render + +import ( + "net/http" + + "bitbucket.org/ww/goautoneg" + "github.com/stellar/go/services/horizon/internal/log" + "golang.org/x/net/context" +) + +// Negotiate inspects the Accept header of the provided request and determines +// what the most appropriate response type should be. Defaults to HAL. +func Negotiate(ctx context.Context, r *http.Request) string { + alternatives := []string{MimeHal, MimeJSON, MimeEventStream, MimeRaw} + accept := r.Header.Get("Accept") + + if accept == "" { + return MimeHal + } + + result := goautoneg.Negotiate(r.Header.Get("Accept"), alternatives) + + log.Ctx(ctx).WithFields(log.F{ + "content_type": result, + "accept": accept, + }).Debug("Negotiated content type") + + return result +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/render/main_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/render/main_test.go new file mode 100644 index 0000000..188f837 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/render/main_test.go @@ -0,0 +1,45 @@ +package render + +import ( + "net/http" + "testing" + + "golang.org/x/net/context" + + . "github.com/smartystreets/goconvey/convey" +) + +func TestRenderPackage(t *testing.T) { + + Convey("render.Negotiate", t, func() { + ctx := context.Background() + + r, err := http.NewRequest("GET", "/ledgers", nil) + So(err, ShouldBeNil) + r.Header.Add("Accept", "application/hal+json") + So(Negotiate(ctx, r), ShouldEqual, MimeHal) + + Convey("Obeys the Accept header's prioritization", func() { + + r.Header.Set("Accept", "text/event-stream,application/hal+json") + So(Negotiate(ctx, r), ShouldEqual, MimeEventStream) + + r.Header.Set("Accept", "text/event-stream;q=0.5,application/hal+json") + So(Negotiate(ctx, r), ShouldEqual, MimeHal) + }) + + Convey("Defaults to HAL", func() { + r.Header.Set("Accept", "") + So(Negotiate(ctx, r), ShouldEqual, MimeHal) + + r.Header.Del("Accept") + So(Negotiate(ctx, r), ShouldEqual, MimeHal) + }) + + Convey("Returns empty string for invalid type", func() { + r.Header.Set("Accept", "text/plain") + So(Negotiate(ctx, r), ShouldEqual, "") + }) + + }) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/render/mime.go b/vendor/src/github.com/stellar/go/services/horizon/internal/render/mime.go new file mode 100644 index 0000000..55f5635 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/render/mime.go @@ -0,0 +1,15 @@ +package render + +const ( + + //MimeEventStream is the mime type for "text/event-stream" + MimeEventStream = "text/event-stream" + //MimeHal is the mime type for "application/hal+json" + MimeHal = "application/hal+json" + //MimeJSON is the mime type for "application/json" + MimeJSON = "application/json" + //MimeProblem is the mime type for application/problem+json" + MimeProblem = "application/problem+json" + //MimeRaw is the mime type for "application/octet-stream" + MimeRaw = "application/octet-stream" +) diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/render/problem/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/render/problem/main.go new file mode 100644 index 0000000..4281391 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/render/problem/main.go @@ -0,0 +1,242 @@ +package problem + +import ( + "encoding/json" + "fmt" + "net/http" + + "github.com/go-errors/errors" + "github.com/stellar/go/services/horizon/internal/context/requestid" + "github.com/stellar/go/services/horizon/internal/log" + "golang.org/x/net/context" +) + +var ( + errToProblemMap = map[error]P{} +) + +// RegisterError records an error -> P mapping, allowing the app to register +// specific errors that may occur in other packages to be rendered as a specific +// P instance. +// +// For example, you might want to render any sql.ErrNoRows errors as a +// problem.NotFound, and you would do so by calling: +// +// problem.RegisterError(sql.ErrNoRows, problem.NotFound) in you application +// initialization sequence +func RegisterError(err error, p P) { + errToProblemMap[err] = p +} + +// HasProblem types can be transformed into a problem. +// Implement it for custom errors. +type HasProblem interface { + Problem() P +} + +// P is a struct that represents an error response to be rendered to a connected +// client. +type P struct { + Type string `json:"type"` + Title string `json:"title"` + Status int `json:"status"` + Detail string `json:"detail,omitempty"` + Instance string `json:"instance,omitempty"` + Extras map[string]interface{} `json:"extras,omitempty"` +} + +func (p *P) Error() string { + return fmt.Sprintf("problem: %s", p.Type) +} + +// Inflate expands a problem with contextal information. +// At present it adds the request's id as the problem's Instance, if available. +func Inflate(ctx context.Context, p *P) { + //TODO: add requesting url to extra info + + //TODO: make this prefix configurable + p.Type = "https://stellar.org/horizon-errors/" + p.Type + + p.Instance = requestid.FromContext(ctx) +} + +// Render writes a http response to `w`, compliant with the "Problem +// Details for HTTP APIs" RFC: +// https://tools.ietf.org/html/draft-ietf-appsawg-http-problem-00 +// +// `p` is the problem, which may be either a concrete P struct, an implementor +// of the `HasProblem` interface, or an error. Any other value for `p` will +// panic. +func Render(ctx context.Context, w http.ResponseWriter, p interface{}) { + switch p := p.(type) { + case P: + render(ctx, w, p) + case *P: + render(ctx, w, *p) + case HasProblem: + render(ctx, w, p.Problem()) + case error: + renderErr(ctx, w, p) + default: + panic(fmt.Sprintf("Invalid problem: %v+", p)) + } +} + +func render(ctx context.Context, w http.ResponseWriter, p P) { + + Inflate(ctx, &p) + + w.Header().Set("Content-Type", "application/problem+json; charset=utf-8") + js, err := json.MarshalIndent(p, "", " ") + + if err != nil { + err := errors.Wrap(err, 1) + log.Ctx(ctx).WithStack(err).Error(err) + http.Error(w, "error rendering problem", http.StatusInternalServerError) + return + } + + w.WriteHeader(p.Status) + w.Write(js) +} + +func renderErr(ctx context.Context, w http.ResponseWriter, err error) { + origErr := err + + if err, ok := err.(*errors.Error); ok { + origErr = err.Err + } + + p, ok := errToProblemMap[origErr] + + // If this error is not a registered error + // log it and replace it with a 500 error + if !ok { + log.Ctx(ctx).WithStack(err).Error(err) + p = ServerError + } + + render(ctx, w, p) +} + +// Well-known and reused problems below: +var ( + // NotFound is a well-known problem type. Use it as a shortcut + // in your actions. + NotFound = P{ + Type: "not_found", + Title: "Resource Missing", + Status: http.StatusNotFound, + Detail: "The resource at the url requested was not found. This is usually " + + "occurs for one of two reasons: The url requested is not valid, or no " + + "data in our database could be found with the parameters provided.", + } + + // ServerError is a well-known problem type. Use it as a shortcut + // in your actions. + ServerError = P{ + Type: "server_error", + Title: "Internal Server Error", + Status: http.StatusInternalServerError, + Detail: "An error occurred while processing this request. This is usually due " + + "to a bug within the server software. Trying this request again may " + + "succeed if the bug is transient, otherwise please report this issue " + + "to the issue tracker at: https://github.com/stellar/go/services/horizon/internal/issues." + + " Please include this response in your issue.", + } + + // RateLimitExceeded is a well-known problem type. Use it as a shortcut + // in your actions. + RateLimitExceeded = P{ + Type: "rate_limit_exceeded", + Title: "Rate limit exceeded", + Status: 429, + Detail: "The rate limit for the requesting IP address is over its alloted " + + "limit. The allowed limit and requests left per time period are " + + "communicated to clients via the http response headers 'X-RateLimit-*' " + + "headers.", + } + + // NotImplemented is a well-known problem type. Use it as a shortcut + // in your actions. + NotImplemented = P{ + Type: "not_implemented", + Title: "Resource Not Yet Implemented", + Status: http.StatusNotFound, + Detail: "While the requested URL is expected to eventually point to a " + + "valid resource, the work to implement the resource has not yet " + + "been completed.", + } + + // NotAcceptable is a well-known problem type. Use it as a shortcut + // in your actions. + NotAcceptable = P{ + Type: "not_acceptable", + Title: "An acceptable response content-type could not be provided for " + + "this request", + Status: http.StatusNotAcceptable, + } + + // BadRequest is a well-known problem type. Use it as a shortcut + // in your actions. + BadRequest = P{ + Type: "bad_request", + Title: "Bad Request", + Status: http.StatusBadRequest, + Detail: "The request you sent was invalid in some way", + } + + // ServerOverCapacity is a well-known problem type. Use it as a shortcut + // in your actions. + ServerOverCapacity = P{ + Type: "server_over_capacity", + Title: "Server Over Capacity", + Status: http.StatusServiceUnavailable, + Detail: "This horizon server is currently overloaded. Please wait for " + + "several minutes before trying your request again.", + } + + // Timeout is a well-known problem type. Use it as a shortcut + // in your actions. + Timeout = P{ + Type: "timeout", + Title: "Timeout", + Status: http.StatusGatewayTimeout, + Detail: "Your request timed out before completing. Please try your " + + "request again.", + } + + // UnsupportedMediaType is a well-known problem type. Use it as a shortcut + // in your actions. + UnsupportedMediaType = P{ + Type: "unsupported_media_type", + Title: "Unsupported Media Type", + Status: http.StatusUnsupportedMediaType, + Detail: "The request has an unsupported content type. Presently, the " + + "only supported content type is application/x-www-form-urlencoded.", + } + + // BeforeHistory is a well-known problem type. Use it as a shortcut + // in your actions. + BeforeHistory = P{ + Type: "before_history", + Title: "Data Requested Is Before Recorded History", + Status: http.StatusGone, + Detail: "This horizon instance is configured to only track a " + + "portion of the stellar network's latest history. This request " + + "is asking for results prior to the recorded history known to " + + "this horizon instance.", + } + + // StaleHistory is a well-known problem type. Use it as a shortcut + // in your actions. + StaleHistory = P{ + Type: "stale_history", + Title: "Historical DB Is Too Stale", + Status: http.StatusServiceUnavailable, + Detail: "This horizon instance is configured to reject client requests " + + "when it can determine that the history database is lagging too far " + + "behind the connected instance of stellar-core. If you operate this " + + "server, please ensure that the ingestion system is properly running.", + } +) diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/render/problem/main_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/render/problem/main_test.go new file mode 100644 index 0000000..e2327e9 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/render/problem/main_test.go @@ -0,0 +1,113 @@ +package problem + +import ( + "errors" + "net/http/httptest" + "testing" + + ge "github.com/go-errors/errors" + . "github.com/smartystreets/goconvey/convey" + "github.com/stellar/go/services/horizon/internal/context/requestid" + "github.com/stellar/go/services/horizon/internal/test" + "golang.org/x/net/context" +) + +func TestProblemPackage(t *testing.T) { + ctx := context.Background() + + testRender := func(ctx context.Context, p interface{}) *httptest.ResponseRecorder { + w := httptest.NewRecorder() + Render(ctx, w, p) + return w + } + + Convey("Common Problems", t, func() { + Convey("NotFound", func() { + w := testRender(ctx, NotFound) + So(w.Code, ShouldEqual, 404) + t.Log(w.Body.String()) + }) + + Convey("ServerError", func() { + w := testRender(ctx, ServerError) + So(w.Code, ShouldEqual, 500) + t.Log(w.Body.String()) + }) + + Convey("RateLimitExceeded", func() { + w := testRender(ctx, RateLimitExceeded) + So(w.Code, ShouldEqual, 429) + t.Log(w.Body.String()) + }) + }) + + Convey("problem.Inflate", t, func() { + Convey("sets Instance to the request id based upon the context", func() { + ctx2 := requestid.Context(ctx, "2") + p := P{} + Inflate(ctx2, &p) + + So(p.Instance, ShouldEqual, "2") + + // when no request id is set, instance should be "" + Inflate(ctx, &p) + So(p.Instance, ShouldEqual, "") + }) + }) + + Convey("problem.Render", t, func() { + Convey("renders the type correctly", func() { + w := testRender(ctx, P{Type: "foo"}) + So(w.Body.String(), ShouldContainSubstring, "foo") + }) + + Convey("renders the status correctly", func() { + w := testRender(ctx, P{Status: 201}) + So(w.Body.String(), ShouldContainSubstring, "201") + So(w.Code, ShouldEqual, 201) + }) + + Convey("renders the extras correctly", func() { + w := testRender(ctx, P{ + Extras: map[string]interface{}{"hello": "stellar"}, + }) + So(w.Body.String(), ShouldContainSubstring, "hello") + So(w.Body.String(), ShouldContainSubstring, "stellar") + }) + + Convey("panics if non-compliant `p` is used", func() { + So(func() { testRender(ctx, nil) }, ShouldPanic) + So(func() { testRender(ctx, "hello") }, ShouldPanic) + So(func() { testRender(ctx, 123) }, ShouldPanic) + So(func() { testRender(ctx, []byte{}) }, ShouldPanic) + }) + + Convey("Converts errors to ServerError problems", func() { + ctx, _ := test.ContextWithLogBuffer() + w := testRender(ctx, errors.New("broke")) + So(w.Body.String(), ShouldContainSubstring, "server_error") + So(w.Code, ShouldEqual, 500) + // don't expose private error info + So(w.Body.String(), ShouldNotContainSubstring, "broke") + }) + + Convey("Logs the stacktrace as unknown for non-rich errors", func() { + ctx, log := test.ContextWithLogBuffer() + w := testRender(ctx, errors.New("broke")) + So(w.Body.String(), ShouldContainSubstring, "server_error") + So(w.Code, ShouldEqual, 500) + So(log.String(), ShouldContainSubstring, "stack=unknown") + }) + + Convey("Logs the stacktrace properly for rich errors", func() { + ctx, log := test.ContextWithLogBuffer() + w := testRender(ctx, ge.New("broke")) + So(w.Body.String(), ShouldContainSubstring, "server_error") + So(w.Code, ShouldEqual, 500) + // simple assert that this file shows up in the error report + // TODO: make less brittle + So(log.String(), ShouldContainSubstring, "main_test.go:") + }) + }) + +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/render/sse/doc.go b/vendor/src/github.com/stellar/go/services/horizon/internal/render/sse/doc.go new file mode 100644 index 0000000..0e88cd3 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/render/sse/doc.go @@ -0,0 +1,3 @@ +// This package contains the Server Sent Events implementation used by +// horizon. +package sse diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/render/sse/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/render/sse/main.go new file mode 100644 index 0000000..0a23bb8 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/render/sse/main.go @@ -0,0 +1,139 @@ +package sse + +import ( + "encoding/json" + "fmt" + "net/http" + "sync" + + "github.com/stellar/go/services/horizon/internal/log" + "golang.org/x/net/context" +) + +// Event is the packet of data that gets sent over the wire to a connected +// client. +type Event struct { + Data interface{} + Error error + ID string + Event string + Retry int +} + +// SseEvent returns the SSE compatible form of the Event... itself. +func (e Event) SseEvent() Event { + return e +} + +// Eventable represents an object that can be converted to an SSE compatible +// event. +type Eventable interface { + // SseEvent returns the SSE compatible form of the implementer + SseEvent() Event +} + +// Pumped returns a channel that will be closed the next time the input pump +// sends. It can be used similar to `ctx.Done()`, like so: `<-sse.Pumped()` +func Pumped() <-chan struct{} { + return nextTick +} + +// Tick triggers any open SSE streams to tick by replacing and closing the +// `nextTick` trigger channel. +func Tick() { + lock.Lock() + prev := nextTick + nextTick = make(chan struct{}) + lock.Unlock() + close(prev) +} + +// WritePreamble prepares this http connection for streaming using Server Sent +// Events. It sends the initial http response with the appropriate headers to +// do so. +func WritePreamble(ctx context.Context, w http.ResponseWriter) bool { + + _, flushable := w.(http.Flusher) + + if !flushable { + //TODO: render a problem struct instead of simple string + http.Error(w, "Streaming Not Supported", http.StatusBadRequest) + return false + } + + w.Header().Set("Content-Type", "text/event-stream; charset=utf-8") + w.Header().Set("Cache-Control", "no-cache") + w.Header().Set("Connection", "keep-alive") + w.Header().Set("Access-Control-Allow-Origin", "*") + w.WriteHeader(200) + + WriteEvent(ctx, w, helloEvent) + + return true +} + +// WriteEvent does the actual work of formatting an SSE compliant message +// sending it over the provided ResponseWriter and flushing. +func WriteEvent(ctx context.Context, w http.ResponseWriter, e Event) { + if e.Error != nil { + fmt.Fprint(w, "event: err\n") + fmt.Fprintf(w, "data: %s\n\n", e.Error.Error()) + w.(http.Flusher).Flush() + log.Ctx(ctx).Error(e.Error) + return + } + + // TODO: add tests to ensure retry get's properly rendered + if e.Retry != 0 { + fmt.Fprintf(w, "retry: %d\n", e.Retry) + } + + if e.ID != "" { + fmt.Fprintf(w, "id: %s\n", e.ID) + } + + if e.Event != "" { + fmt.Fprintf(w, "event: %s\n", e.Event) + } + + fmt.Fprintf(w, "data: %s\n\n", getJSON(e.Data)) + w.(http.Flusher).Flush() +} + +// Upon successful completion of a query (i.e. the client didn't disconnect +// and we didn't error) we send a "Goodbye" event. This is a dummy event +// so that we can set a low retry value so that the client will immediately +// recoonnect and request more data. This helpes to give the feel of a infinite +// stream of data, even though we're actually responding in PAGE_SIZE chunks. +var goodbyeEvent = Event{ + Data: "byebye", + Event: "close", + Retry: 10, +} + +// Upon initial stream creation, we send this event to inform the client +// that they may retry an errored connection after 1 second. +var helloEvent = Event{ + Data: "hello", + Event: "open", + Retry: 1000, +} + +var lock sync.Mutex +var nextTick chan struct{} + +func getJSON(val interface{}) string { + js, err := json.Marshal(val) + + if err != nil { + panic(err) + } + + return string(js) +} + +func init() { + lock.Lock() + nextTick = make(chan struct{}) + lock.Unlock() +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/render/sse/main_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/render/sse/main_test.go new file mode 100644 index 0000000..4a0ded6 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/render/sse/main_test.go @@ -0,0 +1,40 @@ +package sse + +import ( + "errors" + "net/http/httptest" + "testing" + + . "github.com/smartystreets/goconvey/convey" + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestSsePackage(t *testing.T) { + ctx, log := test.ContextWithLogBuffer() + + Convey("sse.WriteEvent outputs data properly", t, func() { + expectations := []struct { + Event Event + Substring string + }{ + {Event{Data: "test"}, "data: \"test\"\n\n"}, + {Event{ID: "1", Data: "test"}, "id: 1\n"}, + {Event{Retry: 1000, Data: "test"}, "retry: 1000\n"}, + {Event{Error: errors.New("busted")}, "event: err\ndata: busted\n\n"}, + {Event{Event: "test", Data: "test"}, "event: test\ndata: \"test\"\n\n"}, + } + + for _, e := range expectations { + w := httptest.NewRecorder() + WriteEvent(ctx, w, e.Event) + So(w.Body.String(), ShouldContainSubstring, e.Substring) + } + }) + + Convey("sse.WriteEvent logs errors", t, func() { + w := httptest.NewRecorder() + WriteEvent(ctx, w, Event{Error: errors.New("busted")}) + So(log.String(), ShouldContainSubstring, "level=error") + So(log.String(), ShouldContainSubstring, "busted") + }) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/render/sse/stream.go b/vendor/src/github.com/stellar/go/services/horizon/internal/render/sse/stream.go new file mode 100644 index 0000000..a6a1fb5 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/render/sse/stream.go @@ -0,0 +1,71 @@ +package sse + +import ( + "net/http" + + "golang.org/x/net/context" +) + +// Stream represents an output stream that data can be written to +type Stream interface { + Send(Event) + SentCount() int + Done() + SetLimit(limit int) + IsDone() bool + Err(error) +} + +// NewStream creates a new stream against the provided response writer +func NewStream(ctx context.Context, w http.ResponseWriter, r *http.Request) Stream { + result := &stream{ctx, w, r, false, 0, 0} + return result +} + +type stream struct { + ctx context.Context + w http.ResponseWriter + r *http.Request + done bool + sent int + limit int +} + +func (s *stream) Send(e Event) { + if s.sent == 0 { + ok := WritePreamble(s.ctx, s.w) + if !ok { + s.done = true + return + } + } + + WriteEvent(s.ctx, s.w, e) + s.sent++ +} + +func (s *stream) SentCount() int { + return s.sent +} + +func (s *stream) SetLimit(limit int) { + s.limit = limit +} + +func (s *stream) Done() { + WriteEvent(s.ctx, s.w, goodbyeEvent) + s.done = true +} + +func (s *stream) IsDone() bool { + if s.limit == 0 { + return s.done + } + + return s.done || s.sent >= s.limit +} + +func (s *stream) Err(err error) { + WriteEvent(s.ctx, s.w, Event{Error: err}) + s.done = true +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/resource/account.go b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/account.go new file mode 100644 index 0000000..9fe82bb --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/account.go @@ -0,0 +1,91 @@ +package resource + +import ( + "encoding/base64" + "fmt" + + "github.com/stellar/go/services/horizon/internal/db2/core" + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stellar/go/services/horizon/internal/httpx" + "github.com/stellar/go/services/horizon/internal/render/hal" + "golang.org/x/net/context" +) + +// Populate fills out the resource's fields +func (this *Account) Populate( + ctx context.Context, + ca core.Account, + cd []core.AccountData, + cs []core.Signer, + ct []core.Trustline, + ha history.Account, +) (err error) { + this.ID = ca.Accountid + this.AccountID = ca.Accountid + this.Sequence = ca.Seqnum + this.SubentryCount = ca.Numsubentries + this.InflationDestination = ca.Inflationdest.String + this.HomeDomain = ca.HomeDomain.String + + this.Flags.Populate(ca) + this.Thresholds.Populate(ca) + + // populate balances + this.Balances = make([]Balance, len(ct)+1) + for i, tl := range ct { + err = this.Balances[i].Populate(ctx, tl) + if err != nil { + return + } + } + + // add native balance + err = this.Balances[len(this.Balances)-1].PopulateNative(ca.Balance) + if err != nil { + return + } + + // populate data + this.Data = make(map[string]string) + for _, d := range cd { + this.Data[d.Key] = d.Value + } + + // populate signers + this.Signers = make([]Signer, len(cs)+1) + for i, s := range cs { + this.Signers[i].Populate(ctx, s) + } + + this.Signers[len(this.Signers)-1].PopulateMaster(ca) + + lb := hal.LinkBuilder{httpx.BaseURL(ctx)} + self := fmt.Sprintf("/accounts/%s", ca.Accountid) + this.Links.Self = lb.Link(self) + this.Links.Transactions = lb.PagedLink(self, "transactions") + this.Links.Operations = lb.PagedLink(self, "operations") + this.Links.Payments = lb.PagedLink(self, "payments") + this.Links.Effects = lb.PagedLink(self, "effects") + this.Links.Offers = lb.PagedLink(self, "offers") + this.Links.Trades = lb.PagedLink(self, "trades") + this.Links.Data = lb.Link(self, "data/{key}") + this.Links.Data.PopulateTemplated() + return +} + +// MustGetData returns decoded value for a given key. If the key does +// not exist, empty slice will be returned. If there is an error +// decoding a value, it will panic. +func (this *Account) MustGetData(key string) []byte { + bytes, err := this.GetData(key) + if err != nil { + panic(err) + } + return bytes +} + +// GetData returns decoded value for a given key. If the key does +// not exist, empty slice will be returned. +func (this *Account) GetData(key string) ([]byte, error) { + return base64.StdEncoding.DecodeString(this.Data[key]) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/resource/account_flags.go b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/account_flags.go new file mode 100644 index 0000000..32059c1 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/account_flags.go @@ -0,0 +1,10 @@ +package resource + +import ( + "github.com/stellar/go/services/horizon/internal/db2/core" +) + +func (this *AccountFlags) Populate(row core.Account) { + this.AuthRequired = row.IsAuthRequired() + this.AuthRevocable = row.IsAuthRevocable() +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/resource/account_thresholds.go b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/account_thresholds.go new file mode 100644 index 0000000..7d0ba8b --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/account_thresholds.go @@ -0,0 +1,11 @@ +package resource + +import ( + "github.com/stellar/go/services/horizon/internal/db2/core" +) + +func (this *AccountThresholds) Populate(row core.Account) { + this.LowThreshold = row.Thresholds[1] + this.MedThreshold = row.Thresholds[2] + this.HighThreshold = row.Thresholds[3] +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/resource/asset.go b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/asset.go new file mode 100644 index 0000000..0c30a98 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/asset.go @@ -0,0 +1,10 @@ +package resource + +import ( + "github.com/stellar/go/xdr" + "golang.org/x/net/context" +) + +func (this *Asset) Populate(ctx context.Context, asset xdr.Asset) error { + return asset.Extract(&this.Type, &this.Code, &this.Issuer) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/resource/balance.go b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/balance.go new file mode 100644 index 0000000..bf2e6f7 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/balance.go @@ -0,0 +1,35 @@ +package resource + +import ( + "github.com/stellar/go/amount" + "github.com/stellar/go/xdr" + "github.com/stellar/go/services/horizon/internal/assets" + "github.com/stellar/go/services/horizon/internal/db2/core" + "golang.org/x/net/context" +) + +func (this *Balance) Populate(ctx context.Context, row core.Trustline) (err error) { + this.Type, err = assets.String(row.Assettype) + if err != nil { + return + } + + this.Balance = amount.String(row.Balance) + this.Limit = amount.String(row.Tlimit) + this.Issuer = row.Issuer + this.Code = row.Assetcode + return +} + +func (this *Balance) PopulateNative(stroops xdr.Int64) (err error) { + this.Type, err = assets.String(xdr.AssetTypeAssetTypeNative) + if err != nil { + return + } + + this.Balance = amount.String(stroops) + this.Limit = "" + this.Issuer = "" + this.Code = "" + return +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/resource/base/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/base/main.go new file mode 100644 index 0000000..e52deb7 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/base/main.go @@ -0,0 +1,23 @@ +package base + +type Price struct { + N int32 `json:"n"` + D int32 `json:"d"` +} + +type Asset struct { + Type string `json:"asset_type"` + Code string `json:"asset_code,omitempty"` + Issuer string `json:"asset_issuer,omitempty"` +} + +// Rehydratable values can be expanded in place by calling their Rehydrate +// method. This mechanism is intended to be used for populating resource +// structs from database structs when custom logic is needed, for example if a +// resource name has been changed but the underlying database record has not. +// This interface is especially useful to facilitate field deprecation: Add a +// new field to the response struct and implement this interface to copy the +// value from the old field to the new field. +type Rehydratable interface { + Rehydrate() error +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/resource/effects/base.go b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/effects/base.go new file mode 100644 index 0000000..174a6d6 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/effects/base.go @@ -0,0 +1,36 @@ +package effects + +import ( + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stellar/go/services/horizon/internal/httpx" + "github.com/stellar/go/services/horizon/internal/render/hal" + "golang.org/x/net/context" +) + +// PagingToken implements `hal.Pageable` +func (this Base) PagingToken() string { + return this.PT +} + +// Populate loads this resource from `row` +func (this *Base) Populate(ctx context.Context, row history.Effect) { + this.ID = row.ID() + this.PT = row.PagingToken() + this.Account = row.Account + this.populateType(row) + + lb := hal.LinkBuilder{httpx.BaseURL(ctx)} + this.Links.Operation = lb.Linkf("/operations/%d", row.HistoryOperationID) + this.Links.Succeeds = lb.Linkf("/effects?order=desc&cursor=%s", this.PT) + this.Links.Precedes = lb.Linkf("/effects?order=asc&cursor=%s", this.PT) +} + +func (this *Base) populateType(row history.Effect) { + var ok bool + this.TypeI = int32(row.Type) + this.Type, ok = TypeNames[row.Type] + + if !ok { + this.Type = "unknown" + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/resource/effects/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/effects/main.go new file mode 100644 index 0000000..64d499d --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/effects/main.go @@ -0,0 +1,243 @@ +package effects + +import ( + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stellar/go/services/horizon/internal/render/hal" + "github.com/stellar/go/services/horizon/internal/resource/base" + "golang.org/x/net/context" +) + +var TypeNames = map[history.EffectType]string{ + history.EffectAccountCreated: "account_created", + history.EffectAccountRemoved: "account_removed", + history.EffectAccountCredited: "account_credited", + history.EffectAccountDebited: "account_debited", + history.EffectAccountThresholdsUpdated: "account_thresholds_updated", + history.EffectAccountHomeDomainUpdated: "account_home_domain_updated", + history.EffectAccountFlagsUpdated: "account_flags_updated", + history.EffectSignerCreated: "signer_created", + history.EffectSignerRemoved: "signer_removed", + history.EffectSignerUpdated: "signer_updated", + history.EffectTrustlineCreated: "trustline_created", + history.EffectTrustlineRemoved: "trustline_removed", + history.EffectTrustlineUpdated: "trustline_updated", + history.EffectTrustlineAuthorized: "trustline_authorized", + history.EffectTrustlineDeauthorized: "trustline_deauthorized", + history.EffectOfferCreated: "offer_created", + history.EffectOfferRemoved: "offer_removed", + history.EffectOfferUpdated: "offer_updated", + history.EffectTrade: "trade", + history.EffectDataCreated: "data_created", + history.EffectDataRemoved: "data_removed", + history.EffectDataUpdated: "data_updated", +} + +// New creates a new effect resource from the provided database representation +// of the effect. +func New( + ctx context.Context, + row history.Effect, +) (result hal.Pageable, err error) { + + basev := Base{} + basev.Populate(ctx, row) + + switch row.Type { + case history.EffectAccountCreated: + e := AccountCreated{Base: basev} + err = row.UnmarshalDetails(&e) + result = e + case history.EffectAccountCredited: + e := AccountCredited{Base: basev} + err = row.UnmarshalDetails(&e) + result = e + case history.EffectAccountDebited: + e := AccountDebited{Base: basev} + err = row.UnmarshalDetails(&e) + result = e + case history.EffectAccountThresholdsUpdated: + e := AccountThresholdsUpdated{Base: basev} + err = row.UnmarshalDetails(&e) + result = e + case history.EffectAccountHomeDomainUpdated: + e := AccountHomeDomainUpdated{Base: basev} + err = row.UnmarshalDetails(&e) + result = e + case history.EffectAccountFlagsUpdated: + e := AccountFlagsUpdated{Base: basev} + err = row.UnmarshalDetails(&e) + result = e + case history.EffectSignerCreated: + e := SignerCreated{Base: basev} + err = row.UnmarshalDetails(&e) + result = e + case history.EffectSignerUpdated: + e := SignerUpdated{Base: basev} + err = row.UnmarshalDetails(&e) + result = e + case history.EffectSignerRemoved: + e := SignerRemoved{Base: basev} + err = row.UnmarshalDetails(&e) + result = e + case history.EffectTrustlineCreated: + e := TrustlineCreated{Base: basev} + err = row.UnmarshalDetails(&e) + result = e + case history.EffectTrustlineUpdated: + e := TrustlineUpdated{Base: basev} + err = row.UnmarshalDetails(&e) + result = e + case history.EffectTrustlineRemoved: + e := TrustlineRemoved{Base: basev} + err = row.UnmarshalDetails(&e) + result = e + case history.EffectTrustlineAuthorized: + e := TrustlineAuthorized{Base: basev} + err = row.UnmarshalDetails(&e) + result = e + case history.EffectTrustlineDeauthorized: + e := TrustlineDeauthorized{Base: basev} + err = row.UnmarshalDetails(&e) + result = e + case history.EffectTrade: + e := Trade{Base: basev} + err = row.UnmarshalDetails(&e) + result = e + default: + result = basev + } + + if err != nil { + return + } + + rh, ok := result.(base.Rehydratable) + + if ok { + err = rh.Rehydrate() + } + + return +} + +// Base provides the common structure for any effect resource effect. +type Base struct { + Links struct { + Operation hal.Link `json:"operation"` + Succeeds hal.Link `json:"succeeds"` + Precedes hal.Link `json:"precedes"` + } `json:"_links"` + + ID string `json:"id"` + PT string `json:"paging_token"` + Account string `json:"account"` + Type string `json:"type"` + TypeI int32 `json:"type_i"` +} + +type AccountCreated struct { + Base + StartingBalance string `json:"starting_balance"` +} + +type AccountCredited struct { + Base + base.Asset + Amount string `json:"amount"` +} + +type AccountDebited struct { + Base + base.Asset + Amount string `json:"amount"` +} + +type AccountThresholdsUpdated struct { + Base + LowThreshold int32 `json:"low_threshold"` + MedThreshold int32 `json:"med_threshold"` + HighThreshold int32 `json:"high_threshold"` +} + +type AccountHomeDomainUpdated struct { + Base + HomeDomain string `json:"home_domain"` +} + +type AccountFlagsUpdated struct { + Base + AuthRequired *bool `json:"auth_required_flag,omitempty"` + AuthRevokable *bool `json:"auth_revokable_flag,omitempty"` +} + +type SignerCreated struct { + Base + Weight int32 `json:"weight"` + PublicKey string `json:"public_key"` + Key string `json:"key"` +} + +type SignerRemoved struct { + Base + Weight int32 `json:"weight"` + PublicKey string `json:"public_key"` + Key string `json:"key"` +} + +type SignerUpdated struct { + Base + Weight int32 `json:"weight"` + PublicKey string `json:"public_key"` + Key string `json:"key"` +} + +type TrustlineCreated struct { + Base + base.Asset + Limit string `json:"limit"` +} + +type TrustlineRemoved struct { + Base + base.Asset + Limit string `json:"limit"` +} + +type TrustlineUpdated struct { + Base + base.Asset + Limit string `json:"limit"` +} + +type TrustlineAuthorized struct { + Base + Trustor string `json:"trustor"` + AssetType string `json:"asset_type"` + AssetCode string `json:"asset_code,omitempty"` +} + +type TrustlineDeauthorized struct { + Base + Trustor string `json:"trustor"` + AssetType string `json:"asset_type"` + AssetCode string `json:"asset_code,omitempty"` +} + +type Trade struct { + Base + Seller string `json:"seller"` + OfferID int64 `json:"offer_id"` + SoldAmount string `json:"sold_amount"` + SoldAssetType string `json:"sold_asset_type"` + SoldAssetCode string `json:"sold_asset_code,omitempty"` + SoldAssetIssuer string `json:"sold_asset_issuer,omitempty"` + BoughtAmount string `json:"bought_amount"` + BoughtAssetType string `json:"bought_asset_type"` + BoughtAssetCode string `json:"bought_asset_code,omitempty"` + BoughtAssetIssuer string `json:"bought_asset_issuer,omitempty"` +} + +// interface implementations +var _ base.Rehydratable = &SignerCreated{} +var _ base.Rehydratable = &SignerRemoved{} +var _ base.Rehydratable = &SignerUpdated{} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/resource/effects/signer_effects.go b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/effects/signer_effects.go new file mode 100644 index 0000000..5cdf52e --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/effects/signer_effects.go @@ -0,0 +1,19 @@ +package effects + +// Rehydrate implements base.Rehydratable interface +func (sc *SignerCreated) Rehydrate() error { + sc.Key = sc.PublicKey + return nil +} + +// Rehydrate implements base.Rehydratable interface +func (sr *SignerRemoved) Rehydrate() error { + sr.Key = sr.PublicKey + return nil +} + +// Rehydrate implements base.Rehydratable interface +func (su *SignerUpdated) Rehydrate() error { + su.Key = su.PublicKey + return nil +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/resource/history_account.go b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/history_account.go new file mode 100644 index 0000000..9886e2b --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/history_account.go @@ -0,0 +1,11 @@ +package resource + +import ( + "github.com/stellar/go/services/horizon/internal/db2/history" + "golang.org/x/net/context" +) + +func (this *HistoryAccount) Populate(ctx context.Context, row history.Account) { + this.ID = row.Address + this.AccountID = row.Address +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/resource/ledger.go b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/ledger.go new file mode 100644 index 0000000..d3cffb7 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/ledger.go @@ -0,0 +1,43 @@ +package resource + +import ( + "fmt" + + "github.com/stellar/go/amount" + "github.com/stellar/go/xdr" + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stellar/go/services/horizon/internal/httpx" + "github.com/stellar/go/services/horizon/internal/render/hal" + "golang.org/x/net/context" +) + +func (this *Ledger) Populate(ctx context.Context, row history.Ledger) { + this.ID = row.LedgerHash + this.PT = row.PagingToken() + this.Hash = row.LedgerHash + this.PrevHash = row.PreviousLedgerHash.String + this.Sequence = row.Sequence + this.TransactionCount = row.TransactionCount + this.OperationCount = row.OperationCount + this.ClosedAt = row.ClosedAt + this.TotalCoins = amount.String(xdr.Int64(row.TotalCoins)) + this.FeePool = amount.String(xdr.Int64(row.FeePool)) + this.BaseFee = row.BaseFee + this.BaseReserve = amount.String(xdr.Int64(row.BaseReserve)) + this.MaxTxSetSize = row.MaxTxSetSize + this.ProtocolVersion = row.ProtocolVersion + + self := fmt.Sprintf("/ledgers/%d", row.Sequence) + lb := hal.LinkBuilder{httpx.BaseURL(ctx)} + this.Links.Self = lb.Link(self) + this.Links.Transactions = lb.PagedLink(self, "transactions") + this.Links.Operations = lb.PagedLink(self, "operations") + this.Links.Payments = lb.PagedLink(self, "payments") + this.Links.Effects = lb.PagedLink(self, "effects") + + return +} + +func (this Ledger) PagingToken() string { + return this.PT +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/resource/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/main.go new file mode 100644 index 0000000..d1d5db2 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/main.go @@ -0,0 +1,309 @@ +// Package resource contains the type definitions for all of horizons +// response resources. +package resource + +import ( + "time" + + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stellar/go/services/horizon/internal/render/hal" + "github.com/stellar/go/services/horizon/internal/resource/base" + "github.com/stellar/go/services/horizon/internal/resource/effects" + "github.com/stellar/go/services/horizon/internal/resource/operations" + "github.com/stellar/go/strkey" + "github.com/stellar/go/support/errors" + "golang.org/x/net/context" +) + +// KeyTypeNames maps from strkey version bytes into json string values to use in +// horizon responses. +var KeyTypeNames = map[strkey.VersionByte]string{ + strkey.VersionByteAccountID: "ed25519_public_key", + strkey.VersionByteSeed: "ed25519_secret_seed", + strkey.VersionByteHashX: "sha256_hash", + strkey.VersionByteHashTx: "preauth_tx", +} + +// Account is the summary of an account +type Account struct { + Links struct { + Self hal.Link `json:"self"` + Transactions hal.Link `json:"transactions"` + Operations hal.Link `json:"operations"` + Payments hal.Link `json:"payments"` + Effects hal.Link `json:"effects"` + Offers hal.Link `json:"offers"` + Trades hal.Link `json:"trades"` + Data hal.Link `json:"data"` + } `json:"_links"` + + HistoryAccount + Sequence string `json:"sequence"` + SubentryCount int32 `json:"subentry_count"` + InflationDestination string `json:"inflation_destination,omitempty"` + HomeDomain string `json:"home_domain,omitempty"` + Thresholds AccountThresholds `json:"thresholds"` + Flags AccountFlags `json:"flags"` + Balances []Balance `json:"balances"` + Signers []Signer `json:"signers"` + Data map[string]string `json:"data"` +} + +// AccountFlags represents the state of an account's flags +type AccountFlags struct { + AuthRequired bool `json:"auth_required"` + AuthRevocable bool `json:"auth_revocable"` +} + +// AccountThresholds represents an accounts "thresholds", the numerical values +// needed to satisfy the authorization of a given operation. +type AccountThresholds struct { + LowThreshold byte `json:"low_threshold"` + MedThreshold byte `json:"med_threshold"` + HighThreshold byte `json:"high_threshold"` +} + +// Asset represents a single asset +type Asset base.Asset + +// Balance represents an account's holdings for a single currency type +type Balance struct { + Balance string `json:"balance"` + Limit string `json:"limit,omitempty"` + base.Asset +} + +// HistoryAccount is a simple resource, used for the account collection actions. +// It provides only the "TotalOrderID" of the account and its account id. +type HistoryAccount struct { + ID string `json:"id"` + PT string `json:"paging_token"` + AccountID string `json:"account_id"` +} + +// Ledger represents a single closed ledger +type Ledger struct { + Links struct { + Self hal.Link `json:"self"` + Transactions hal.Link `json:"transactions"` + Operations hal.Link `json:"operations"` + Payments hal.Link `json:"payments"` + Effects hal.Link `json:"effects"` + } `json:"_links"` + ID string `json:"id"` + PT string `json:"paging_token"` + Hash string `json:"hash"` + PrevHash string `json:"prev_hash,omitempty"` + Sequence int32 `json:"sequence"` + TransactionCount int32 `json:"transaction_count"` + OperationCount int32 `json:"operation_count"` + ClosedAt time.Time `json:"closed_at"` + TotalCoins string `json:"total_coins"` + FeePool string `json:"fee_pool"` + BaseFee int32 `json:"base_fee"` + BaseReserve string `json:"base_reserve"` + MaxTxSetSize int32 `json:"max_tx_set_size"` + ProtocolVersion int32 `json:"protocol_version"` +} + +// Offer is the display form of an offer to trade currency. +type Offer struct { + Links struct { + Self hal.Link `json:"self"` + OfferMaker hal.Link `json:"offer_maker"` + } `json:"_links"` + + ID int64 `json:"id"` + PT string `json:"paging_token"` + Seller string `json:"seller"` + Selling Asset `json:"selling"` + Buying Asset `json:"buying"` + Amount string `json:"amount"` + PriceR Price `json:"price_r"` + Price string `json:"price"` +} + +// OrderBookSummary represents a snapshot summary of a given order book +type OrderBookSummary struct { + Bids []PriceLevel `json:"bids"` + Asks []PriceLevel `json:"asks"` + Selling Asset `json:"base"` + Buying Asset `json:"counter"` +} + +// Path represents a single payment path. +type Path struct { + SourceAssetType string `json:"source_asset_type"` + SourceAssetCode string `json:"source_asset_code,omitempty"` + SourceAssetIssuer string `json:"source_asset_issuer,omitempty"` + SourceAmount string `json:"source_amount"` + DestinationAssetType string `json:"destination_asset_type"` + DestinationAssetCode string `json:"destination_asset_code,omitempty"` + DestinationAssetIssuer string `json:"destination_asset_issuer,omitempty"` + DestinationAmount string `json:"destination_amount"` + Path []Asset `json:"path"` +} + +// Price represents a price +type Price base.Price + +// PriceLevel represents an aggregation of offers that share a given price +type PriceLevel struct { + PriceR Price `json:"price_r"` + Price string `json:"price"` + Amount string `json:"amount"` +} + +// Root is the initial map of links into the api. +type Root struct { + Links struct { + Account hal.Link `json:"account"` + AccountTransactions hal.Link `json:"account_transactions"` + Friendbot hal.Link `json:"friendbot"` + Metrics hal.Link `json:"metrics"` + OrderBook hal.Link `json:"order_book"` + Self hal.Link `json:"self"` + Transaction hal.Link `json:"transaction"` + Transactions hal.Link `json:"transactions"` + } `json:"_links"` + + HorizonVersion string `json:"horizon_version"` + StellarCoreVersion string `json:"core_version"` + HorizonSequence int32 `json:"history_latest_ledger"` + HistoryElderSequence int32 `json:"history_elder_ledger"` + CoreSequence int32 `json:"core_latest_ledger"` + CoreElderSequence int32 `json:"core_elder_ledger"` + NetworkPassphrase string `json:"network_passphrase"` + ProtocolVersion int32 `json:"protocol_version"` +} + +// Signer represents one of an account's signers. +type Signer struct { + PublicKey string `json:"public_key"` + Weight int32 `json:"weight"` + Key string `json:"key"` + Type string `json:"type"` +} + +// Trade represents a horizon digested trade +type Trade struct { + Links struct { + Self hal.Link `json:"self"` + Base hal.Link `json:"base"` + Counter hal.Link `json:"counter"` + Operation hal.Link `json:"operation"` + } `json:"_links"` + + ID string `json:"id"` + PT string `json:"paging_token"` + LedgerCloseTime time.Time `json:"ledger_close_time"` + OfferID string `json:"offer_id"` + BaseAccount string `json:"base_account"` + BaseAmount string `json:"base_amount"` + BaseAssetType string `json:"base_asset_type"` + BaseAssetCode string `json:"base_asset_code,omitempty"` + BaseAssetIssuer string `json:"base_asset_issuer,omitempty"` + CounterAccount string `json:"counter_account"` + CounterAmount string `json:"counter_amount"` + CounterAssetType string `json:"counter_asset_type"` + CounterAssetCode string `json:"counter_asset_code,omitempty"` + CounterAssetIssuer string `json:"counter_asset_issuer,omitempty"` + BaseIsSeller bool `json:"base_is_seller"` +} + +// Transaction represents a single, successful transaction +type Transaction struct { + Links struct { + Self hal.Link `json:"self"` + Account hal.Link `json:"account"` + Ledger hal.Link `json:"ledger"` + Operations hal.Link `json:"operations"` + Effects hal.Link `json:"effects"` + Precedes hal.Link `json:"precedes"` + Succeeds hal.Link `json:"succeeds"` + } `json:"_links"` + ID string `json:"id"` + PT string `json:"paging_token"` + Hash string `json:"hash"` + Ledger int32 `json:"ledger"` + LedgerCloseTime time.Time `json:"created_at"` + Account string `json:"source_account"` + AccountSequence string `json:"source_account_sequence"` + FeePaid int32 `json:"fee_paid"` + OperationCount int32 `json:"operation_count"` + EnvelopeXdr string `json:"envelope_xdr"` + ResultXdr string `json:"result_xdr"` + ResultMetaXdr string `json:"result_meta_xdr"` + FeeMetaXdr string `json:"fee_meta_xdr"` + MemoType string `json:"memo_type"` + Memo string `json:"memo,omitempty"` + Signatures []string `json:"signatures"` + ValidAfter string `json:"valid_after,omitempty"` + ValidBefore string `json:"valid_before,omitempty"` +} + +// TransactionResultCodes represent a summary of result codes returned from +// a single xdr TransactionResult +type TransactionResultCodes struct { + TransactionCode string `json:"transaction"` + OperationCodes []string `json:"operations,omitempty"` +} + +// TransactionSuccess represents the result of a successful transaction +// submission. +type TransactionSuccess struct { + Links struct { + Transaction hal.Link `json:"transaction"` + } `json:"_links"` + Hash string `json:"hash"` + Ledger int32 `json:"ledger"` + Env string `json:"envelope_xdr"` + Result string `json:"result_xdr"` + Meta string `json:"result_meta_xdr"` +} + +// NewEffect returns a resource of the appropriate sub-type for the provided +// effect record. +func NewEffect( + ctx context.Context, + row history.Effect, +) (result hal.Pageable, err error) { + return effects.New(ctx, row) +} + +// NewOperation returns a resource of the appropriate sub-type for the provided +// operation record. +func NewOperation( + ctx context.Context, + row history.Operation, + ledger history.Ledger, +) (result hal.Pageable, err error) { + return operations.New(ctx, row, ledger) +} + +// KeyTypeFromAddress converts the version byte of the provided strkey encoded +// value (for example an account id or a signer key) and returns the appropriate +// horizon-specific type name. +func KeyTypeFromAddress(address string) (string, error) { + vb, err := strkey.Version(address) + if err != nil { + return "", errors.Wrap(err, "invalid address") + } + + result, ok := KeyTypeNames[vb] + if !ok { + result = "unknown" + } + + return result, nil +} + +// MustKeyTypeFromAddress is the panicking variant of KeyTypeFromAddress. +func MustKeyTypeFromAddress(address string) string { + ret, err := KeyTypeFromAddress(address) + if err != nil { + panic(err) + } + + return ret +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/resource/main_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/main_test.go new file mode 100644 index 0000000..9fec3ab --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/main_test.go @@ -0,0 +1,51 @@ +package resource + +import ( + "testing" + + . "github.com/smartystreets/goconvey/convey" +) + +func TestAccount(t *testing.T) { + account := Account{ + Data: map[string]string{ + "test": "aGVsbG8=", + "invalid": "a_*&^*", + }, + } + + Convey("Account.GetData", t, func() { + Convey("Returns decoded value if the key exists", func() { + decoded, err := account.GetData("test") + So(err, ShouldBeNil) + So(string(decoded), ShouldEqual, "hello") + }) + + Convey("Returns empty slice if key doesn't exist", func() { + decoded, err := account.GetData("test2") + So(err, ShouldBeNil) + So(len(decoded), ShouldEqual, 0) + }) + + Convey("Returns error slice if value is invalid", func() { + _, err := account.GetData("invalid") + So(err, ShouldNotBeNil) + }) + }) + + Convey("Account.MustGetData", t, func() { + Convey("Returns decoded value if the key exists", func() { + decoded := account.MustGetData("test") + So(string(decoded), ShouldEqual, "hello") + }) + + Convey("Returns empty slice if key doesn't exist", func() { + decoded := account.MustGetData("test2") + So(len(decoded), ShouldEqual, 0) + }) + + Convey("Returns error slice if value is invalid", func() { + So(func() { account.MustGetData("invalid") }, ShouldPanic) + }) + }) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/resource/offer.go b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/offer.go new file mode 100644 index 0000000..29245a8 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/offer.go @@ -0,0 +1,39 @@ +package resource + +import ( + "github.com/stellar/go/amount" + "github.com/stellar/go/services/horizon/internal/assets" + "github.com/stellar/go/services/horizon/internal/db2/core" + "github.com/stellar/go/services/horizon/internal/httpx" + "github.com/stellar/go/services/horizon/internal/render/hal" + "golang.org/x/net/context" +) + +func (this *Offer) Populate(ctx context.Context, row core.Offer) { + this.ID = row.OfferID + this.PT = row.PagingToken() + this.Seller = row.SellerID + this.Amount = amount.String(row.Amount) + this.PriceR.N = row.Pricen + this.PriceR.D = row.Priced + this.Price = row.PriceAsString() + this.Buying = Asset{ + Type: assets.MustString(row.BuyingAssetType), + Code: row.BuyingAssetCode.String, + Issuer: row.BuyingIssuer.String, + } + this.Selling = Asset{ + Type: assets.MustString(row.SellingAssetType), + Code: row.SellingAssetCode.String, + Issuer: row.SellingIssuer.String, + } + + lb := hal.LinkBuilder{httpx.BaseURL(ctx)} + this.Links.Self = lb.Linkf("/offers/%d", row.OfferID) + this.Links.OfferMaker = lb.Linkf("/accounts/%s", row.SellerID) + return +} + +func (this Offer) PagingToken() string { + return this.PT +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/resource/operations/base.go b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/operations/base.go new file mode 100644 index 0000000..162a7f6 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/operations/base.go @@ -0,0 +1,47 @@ +package operations + +import ( + "fmt" + + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stellar/go/services/horizon/internal/httpx" + "github.com/stellar/go/services/horizon/internal/render/hal" + "golang.org/x/net/context" +) + +// PagingToken implements hal.Pageable +func (this Base) PagingToken() string { + return this.PT +} + +// Populate fills out this resource using `row` as the source. +func (this *Base) Populate( + ctx context.Context, + row history.Operation, + ledger history.Ledger, +) { + this.ID = fmt.Sprintf("%d", row.ID) + this.PT = row.PagingToken() + this.SourceAccount = row.SourceAccount + this.populateType(row) + this.LedgerCloseTime = ledger.ClosedAt + this.TransactionHash = row.TransactionHash + + lb := hal.LinkBuilder{Base: httpx.BaseURL(ctx)} + self := fmt.Sprintf("/operations/%d", row.ID) + this.Links.Self = lb.Link(self) + this.Links.Succeeds = lb.Linkf("/effects?order=desc&cursor=%s", this.PT) + this.Links.Precedes = lb.Linkf("/effects?order=asc&cursor=%s", this.PT) + this.Links.Transaction = lb.Linkf("/transactions/%s", row.TransactionHash) + this.Links.Effects = lb.Link(self, "effects") +} + +func (this *Base) populateType(row history.Operation) { + var ok bool + this.TypeI = int32(row.Type) + this.Type, ok = TypeNames[row.Type] + + if !ok { + this.Type = "unknown" + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/resource/operations/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/operations/main.go new file mode 100644 index 0000000..afc1bf1 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/operations/main.go @@ -0,0 +1,226 @@ +package operations + +import ( + "time" + + "github.com/stellar/go/xdr" + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stellar/go/services/horizon/internal/render/hal" + "github.com/stellar/go/services/horizon/internal/resource/base" + "golang.org/x/net/context" +) + +// TypeNames maps from operation type to the string used to represent that type +// in horizon's JSON responses +var TypeNames = map[xdr.OperationType]string{ + xdr.OperationTypeCreateAccount: "create_account", + xdr.OperationTypePayment: "payment", + xdr.OperationTypePathPayment: "path_payment", + xdr.OperationTypeManageOffer: "manage_offer", + xdr.OperationTypeCreatePassiveOffer: "create_passive_offer", + xdr.OperationTypeSetOptions: "set_options", + xdr.OperationTypeChangeTrust: "change_trust", + xdr.OperationTypeAllowTrust: "allow_trust", + xdr.OperationTypeAccountMerge: "account_merge", + xdr.OperationTypeInflation: "inflation", + xdr.OperationTypeManageData: "manage_data", +} + +// New creates a new operation resource, finding the appropriate type to use +// based upon the row's type. +func New( + ctx context.Context, + row history.Operation, + ledger history.Ledger, +) (result hal.Pageable, err error) { + + base := Base{} + base.Populate(ctx, row, ledger) + + switch row.Type { + case xdr.OperationTypeCreateAccount: + e := CreateAccount{Base: base} + err = row.UnmarshalDetails(&e) + result = e + case xdr.OperationTypePayment: + e := Payment{Base: base} + err = row.UnmarshalDetails(&e) + result = e + case xdr.OperationTypePathPayment: + e := PathPayment{} + e.Payment.Base = base + err = row.UnmarshalDetails(&e) + result = e + case xdr.OperationTypeManageOffer: + e := ManageOffer{} + e.CreatePassiveOffer.Base = base + err = row.UnmarshalDetails(&e) + result = e + case xdr.OperationTypeCreatePassiveOffer: + e := CreatePassiveOffer{Base: base} + err = row.UnmarshalDetails(&e) + result = e + case xdr.OperationTypeSetOptions: + e := SetOptions{Base: base} + err = row.UnmarshalDetails(&e) + result = e + case xdr.OperationTypeChangeTrust: + e := ChangeTrust{Base: base} + err = row.UnmarshalDetails(&e) + result = e + case xdr.OperationTypeAllowTrust: + e := AllowTrust{Base: base} + err = row.UnmarshalDetails(&e) + result = e + case xdr.OperationTypeAccountMerge: + e := AccountMerge{Base: base} + err = row.UnmarshalDetails(&e) + result = e + case xdr.OperationTypeInflation: + e := Inflation{Base: base} + err = row.UnmarshalDetails(&e) + result = e + case xdr.OperationTypeManageData: + e := ManageData{Base: base} + err = row.UnmarshalDetails(&e) + result = e + default: + result = base + } + + return +} + +// Base represents the common attributes of an operation resource +type Base struct { + Links struct { + Self hal.Link `json:"self"` + Transaction hal.Link `json:"transaction"` + Effects hal.Link `json:"effects"` + Succeeds hal.Link `json:"succeeds"` + Precedes hal.Link `json:"precedes"` + } `json:"_links"` + + ID string `json:"id"` + PT string `json:"paging_token"` + SourceAccount string `json:"source_account"` + Type string `json:"type"` + TypeI int32 `json:"type_i"` + LedgerCloseTime time.Time `json:"created_at"` + TransactionHash string `json:"transaction_hash"` +} + +// CreateAccount is the json resource representing a single operation whose type +// is CreateAccount. +type CreateAccount struct { + Base + StartingBalance string `json:"starting_balance"` + Funder string `json:"funder"` + Account string `json:"account"` +} + +// Payment is the json resource representing a single operation whose type is +// Payment. +type Payment struct { + Base + base.Asset + From string `json:"from"` + To string `json:"to"` + Amount string `json:"amount"` +} + +// PathPayment is the json resource representing a single operation whose type +// is PathPayment. +type PathPayment struct { + Payment + Path []base.Asset `json:"path"` + SourceMax string `json:"source_max"` + SourceAssetType string `json:"source_asset_type"` + SourceAssetCode string `json:"source_asset_code,omitempty"` + SourceAssetIssuer string `json:"source_asset_issuer,omitempty"` +} + +// ManageData represents a ManageData operation as it is serialized into json +// for the horizon API. +type ManageData struct { + Base + Name string `json:"name"` + Value string `json:"value"` +} + +// CreatePassiveOffer is the json resource representing a single operation whose +// type is CreatePassiveOffer. +type CreatePassiveOffer struct { + Base + Amount string `json:"amount"` + Price string `json:"price"` + PriceR base.Price `json:"price_r"` + BuyingAssetType string `json:"buying_asset_type"` + BuyingAssetCode string `json:"buying_asset_code,omitempty"` + BuyingAssetIssuer string `json:"buying_asset_issuer,omitempty"` + SellingAssetType string `json:"selling_asset_type"` + SellingAssetCode string `json:"selling_asset_code,omitempty"` + SellingAssetIssuer string `json:"selling_asset_issuer,omitempty"` +} + +// ManageOffer is the json resource representing a single operation whose type +// is ManageOffer. +type ManageOffer struct { + CreatePassiveOffer + OfferID int64 `json:"offer_id"` +} + +// SetOptions is the json resource representing a single operation whose type is +// SetOptions. +type SetOptions struct { + Base + HomeDomain string `json:"home_domain,omitempty"` + InflationDest string `json:"inflation_dest,omitempty"` + + MasterKeyWeight *int `json:"master_key_weight,omitempty"` + SignerKey string `json:"signer_key,omitempty"` + SignerWeight *int `json:"signer_weight,omitempty"` + + SetFlags []int `json:"set_flags,omitempty"` + SetFlagsS []string `json:"set_flags_s,omitempty"` + ClearFlags []int `json:"clear_flags,omitempty"` + ClearFlagsS []string `json:"clear_flags_s,omitempty"` + + LowThreshold *int `json:"low_threshold,omitempty"` + MedThreshold *int `json:"med_threshold,omitempty"` + HighThreshold *int `json:"high_threshold,omitempty"` +} + +// ChangeTrust is the json resource representing a single operation whose type +// is ChangeTrust. +type ChangeTrust struct { + Base + base.Asset + Limit string `json:"limit"` + Trustee string `json:"trustee"` + Trustor string `json:"trustor"` +} + +// AllowTrust is the json resource representing a single operation whose type is +// AllowTrust. +type AllowTrust struct { + Base + base.Asset + Trustee string `json:"trustee"` + Trustor string `json:"trustor"` + Authorize bool `json:"authorize"` +} + +// AccountMerge is the json resource representing a single operation whose type +// is AccountMerge. +type AccountMerge struct { + Base + Account string `json:"account"` + Into string `json:"into"` +} + +// Inflation is the json resource representing a single operation whose type is +// Inflation. +type Inflation struct { + Base +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/resource/order_book_summary.go b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/order_book_summary.go new file mode 100644 index 0000000..9c33e69 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/order_book_summary.go @@ -0,0 +1,45 @@ +package resource + +import ( + "github.com/stellar/go/xdr" + "github.com/stellar/go/services/horizon/internal/db2/core" + "golang.org/x/net/context" +) + +func (this *OrderBookSummary) Populate( + ctx context.Context, + selling xdr.Asset, + buying xdr.Asset, + row core.OrderBookSummary, +) error { + + err := this.Selling.Populate(ctx, selling) + if err != nil { + return err + } + err = this.Buying.Populate(ctx, buying) + if err != nil { + return err + } + + this.populateLevels(&this.Bids, row.Bids()) + this.populateLevels(&this.Asks, row.Asks()) + + return nil +} + +func (this *OrderBookSummary) populateLevels(destp *[]PriceLevel, rows []core.OrderBookSummaryPriceLevel) { + *destp = make([]PriceLevel, len(rows)) + dest := *destp + + for i, row := range rows { + dest[i] = PriceLevel{ + Price: row.PriceAsString(), + Amount: row.AmountAsString(), + PriceR: Price{ + N: row.Pricen, + D: row.Priced, + }, + } + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/resource/path.go b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/path.go new file mode 100644 index 0000000..8f98551 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/path.go @@ -0,0 +1,57 @@ +package resource + +import ( + "github.com/stellar/go/amount" + "github.com/stellar/go/services/horizon/internal/paths" + "golang.org/x/net/context" +) + +func (this *Path) Populate(ctx context.Context, q paths.Query, p paths.Path) (err error) { + + this.DestinationAmount = amount.String(q.DestinationAmount) + cost, err := p.Cost(q.DestinationAmount) + if err != nil { + return + } + + this.SourceAmount = amount.String(cost) + + err = p.Source().Extract( + &this.SourceAssetType, + &this.SourceAssetCode, + &this.SourceAssetIssuer) + + if err != nil { + return + } + + err = p.Destination().Extract( + &this.DestinationAssetType, + &this.DestinationAssetCode, + &this.DestinationAssetIssuer) + + if err != nil { + return + } + + path := p.Path() + + this.Path = make([]Asset, len(path)) + + for i, a := range path { + err = a.Extract( + &this.Path[i].Type, + &this.Path[i].Code, + &this.Path[i].Issuer) + if err != nil { + return + } + } + + return +} + +// stub implementation to satisfy pageable interface +func (this Path) PagingToken() string { + return "" +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/resource/root.go b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/root.go new file mode 100644 index 0000000..b7f6d52 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/root.go @@ -0,0 +1,36 @@ +package resource + +import ( + "github.com/stellar/go/services/horizon/internal/httpx" + "github.com/stellar/go/services/horizon/internal/ledger" + "github.com/stellar/go/services/horizon/internal/render/hal" + "golang.org/x/net/context" +) + +// Populate fills in the details +func (res *Root) Populate( + ctx context.Context, + ledgerState ledger.State, + hVersion, cVersion string, + passphrase string, + pVersion int32, +) { + res.HorizonSequence = ledgerState.HistoryLatest + res.HistoryElderSequence = ledgerState.HistoryElder + res.CoreSequence = ledgerState.CoreLatest + res.CoreElderSequence = ledgerState.CoreElder + res.HorizonVersion = hVersion + res.StellarCoreVersion = cVersion + res.NetworkPassphrase = passphrase + res.ProtocolVersion = pVersion + + lb := hal.LinkBuilder{httpx.BaseURL(ctx)} + res.Links.Account = lb.Link("/accounts/{account_id}") + res.Links.AccountTransactions = lb.PagedLink("/accounts/{account_id}/transactions") + res.Links.Friendbot = lb.Link("/friendbot{?addr}") + res.Links.Metrics = lb.Link("/metrics") + res.Links.OrderBook = lb.Link("/order_book{?selling_asset_type,selling_asset_code,selling_issuer,buying_asset_type,buying_asset_code,buying_issuer,limit}") + res.Links.Self = lb.Link("/") + res.Links.Transaction = lb.Link("/transactions/{hash}") + res.Links.Transactions = lb.PagedLink("/transactions") +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/resource/signer.go b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/signer.go new file mode 100644 index 0000000..6f1f7ef --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/signer.go @@ -0,0 +1,24 @@ +package resource + +import ( + "github.com/stellar/go/services/horizon/internal/db2/core" + "golang.org/x/net/context" +) + +// Populate fills out the fields of the signer, using one of an account's +// secondary signers. +func (this *Signer) Populate(ctx context.Context, row core.Signer) { + this.PublicKey = row.Publickey + this.Weight = row.Weight + this.Key = row.Publickey + this.Type = MustKeyTypeFromAddress(this.PublicKey) +} + +// PopulateMaster fills out the fields of the signer, using a stellar account to +// provide the data. +func (this *Signer) PopulateMaster(row core.Account) { + this.PublicKey = row.Accountid + this.Weight = int32(row.Thresholds[0]) + this.Key = row.Accountid + this.Type = MustKeyTypeFromAddress(this.PublicKey) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/resource/trade.go b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/trade.go new file mode 100644 index 0000000..a5416e6 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/trade.go @@ -0,0 +1,54 @@ +package resource + +import ( + "fmt" + + "github.com/stellar/go/amount" + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stellar/go/services/horizon/internal/httpx" + "github.com/stellar/go/services/horizon/internal/render/hal" + "golang.org/x/net/context" +) + +// Populate fills out the details of a trade using a row from the history_trades +// table. +func (res *Trade) Populate( + ctx context.Context, + row history.Trade, +) (err error) { + res.ID = row.PagingToken() + res.PT = row.PagingToken() + res.OfferID = fmt.Sprintf("%d", row.OfferID) + res.BaseAccount = row.BaseAccount + res.BaseAssetType = row.BaseAssetType + res.BaseAssetCode = row.BaseAssetCode + res.BaseAssetIssuer = row.BaseAssetIssuer + res.BaseAmount = amount.String(row.BaseAmount) + res.CounterAccount = row.CounterAccount + res.CounterAssetType = row.CounterAssetType + res.CounterAssetCode = row.CounterAssetCode + res.CounterAssetIssuer = row.CounterAssetIssuer + res.CounterAmount = amount.String(row.CounterAmount) + res.LedgerCloseTime = row.LedgerCloseTime + res.BaseIsSeller = row.BaseIsSeller + res.populateLinks(ctx, row.HistoryOperationID) + return +} + +// PagingToken implementation for hal.Pageable +func (res Trade) PagingToken() string { + return res.PT +} + +func (res *Trade) populateLinks( + ctx context.Context, + opid int64, +) { + lb := hal.LinkBuilder{httpx.BaseURL(ctx)} + res.Links.Base = lb.Link("/accounts", res.BaseAccount) + res.Links.Counter = lb.Link("/accounts", res.CounterAccount) + res.Links.Operation = lb.Link( + "/operations", + fmt.Sprintf("%d", opid), + ) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/resource/transaction.go b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/transaction.go new file mode 100644 index 0000000..c53b305 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/transaction.go @@ -0,0 +1,61 @@ +package resource + +import ( + "fmt" + "strings" + "time" + + "github.com/guregu/null" + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stellar/go/services/horizon/internal/httpx" + "github.com/stellar/go/services/horizon/internal/render/hal" + "golang.org/x/net/context" +) + +// Populate fills out the details +func (res *Transaction) Populate( + ctx context.Context, + row history.Transaction, +) (err error) { + + res.ID = row.TransactionHash + res.PT = row.PagingToken() + res.Hash = row.TransactionHash + res.Ledger = row.LedgerSequence + res.LedgerCloseTime = row.LedgerCloseTime + res.Account = row.Account + res.AccountSequence = row.AccountSequence + res.FeePaid = row.FeePaid + res.OperationCount = row.OperationCount + res.EnvelopeXdr = row.TxEnvelope + res.ResultXdr = row.TxResult + res.ResultMetaXdr = row.TxMeta + res.FeeMetaXdr = row.TxFeeMeta + res.MemoType = row.MemoType + res.Memo = row.Memo.String + res.Signatures = strings.Split(row.SignatureString, ",") + res.ValidBefore = res.timeString(row.ValidBefore) + res.ValidAfter = res.timeString(row.ValidAfter) + + lb := hal.LinkBuilder{Base: httpx.BaseURL(ctx)} + res.Links.Account = lb.Link("/accounts", res.Account) + res.Links.Ledger = lb.Link("/ledgers", fmt.Sprintf("%d", res.Ledger)) + res.Links.Operations = lb.PagedLink("/transactions", res.ID, "operations") + res.Links.Effects = lb.PagedLink("/transactions", res.ID, "effects") + res.Links.Self = lb.Link("/transactions", res.ID) + res.Links.Succeeds = lb.Linkf("/transactions?order=desc&cursor=%s", res.PT) + res.Links.Precedes = lb.Linkf("/transactions?order=asc&cursor=%s", res.PT) + return +} + +// PagingToken implementation for hal.Pageable +func (res Transaction) PagingToken() string { + return res.PT +} +func (res *Transaction) timeString(in null.Int) string { + if !in.Valid { + return "" + } + + return time.Unix(in.Int64, 0).UTC().Format(time.RFC3339) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/resource/transaction_result_codes.go b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/transaction_result_codes.go new file mode 100644 index 0000000..3370c8b --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/transaction_result_codes.go @@ -0,0 +1,24 @@ +package resource + +import ( + "github.com/stellar/go/services/horizon/internal/txsub" + "golang.org/x/net/context" +) + +// Populate fills out the details +func (res *TransactionResultCodes) Populate(ctx context.Context, + fail *txsub.FailedTransactionError, +) (err error) { + + res.TransactionCode, err = fail.TransactionResultCode() + if err != nil { + return + } + + res.OperationCodes, err = fail.OperationResultCodes() + if err != nil { + return + } + + return +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/resource/transaction_success.go b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/transaction_success.go new file mode 100644 index 0000000..6f17413 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/resource/transaction_success.go @@ -0,0 +1,21 @@ +package resource + +import ( + "github.com/stellar/go/services/horizon/internal/httpx" + "github.com/stellar/go/services/horizon/internal/render/hal" + "github.com/stellar/go/services/horizon/internal/txsub" + "golang.org/x/net/context" +) + +// Populate fills out the details +func (res *TransactionSuccess) Populate(ctx context.Context, result txsub.Result) { + res.Hash = result.Hash + res.Ledger = result.LedgerSequence + res.Env = result.EnvelopeXDR + res.Result = result.ResultXDR + res.Meta = result.ResultMetaXDR + + lb := hal.LinkBuilder{httpx.BaseURL(ctx)} + res.Links.Transaction = lb.Link("/transactions", result.Hash) + return +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/scripts/build_test_scenarios.bash b/vendor/src/github.com/stellar/go/services/horizon/internal/scripts/build_test_scenarios.bash new file mode 100644 index 0000000..d3d4b19 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/scripts/build_test_scenarios.bash @@ -0,0 +1,48 @@ +#! /usr/bin/env bash +set -e + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +GOTOP="$( cd "$DIR/../../../../../../../.." && pwd )" +PACKAGES=$(find $GOTOP/src/github.com/stellar/go/services/horizon/internal/test/scenarios -iname '*.rb' -not -name '_common_accounts.rb') +# PACKAGES=$(find $GOTOP/src/github.com/stellar/go/services/horizon/internal/test/scenarios -iname 'kahuna.rb') + +go install github.com/stellar/go/services/horizon + +dropdb hayashi_scenarios --if-exists +createdb hayashi_scenarios + +export STELLAR_CORE_DATABASE_URL="postgres://localhost/hayashi_scenarios?sslmode=disable" +export DATABASE_URL="postgres://localhost/horizon_scenarios?sslmode=disable" +export NETWORK_PASSPHRASE="Test SDF Network ; September 2015" +export STELLAR_CORE_URL="http://localhost:8080" +export SKIP_CURSOR_UPDATE="true" + +# run all scenarios +for i in $PACKAGES; do + CORE_SQL="${i%.rb}-core.sql" + HORIZON_SQL="${i%.rb}-horizon.sql" + bundle exec scc -r $i --dump-root-db > $CORE_SQL + + # load the core scenario + psql $STELLAR_CORE_DATABASE_URL < $CORE_SQL + + # recreate horizon dbs + dropdb horizon_scenarios --if-exists + createdb horizon_scenarios + + # import the core data into horizon + $GOTOP/bin/horizon db init + $GOTOP/bin/horizon db reingest + + # write horizon data to sql file + pg_dump $DATABASE_URL \ + --clean --if-exists --no-owner --no-acl --inserts \ + | sed '/SET idle_in_transaction_session_timeout/d' \ + | sed '/SET row_security/d' \ + > $HORIZON_SQL +done + + +# commit new sql files to bindata +go generate github.com/stellar/go/services/horizon/internal/test/scenarios +# go test github.com/stellar/go/services/horizon/internal/ingest diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/scripts/current_os.go b/vendor/src/github.com/stellar/go/services/horizon/internal/scripts/current_os.go new file mode 100644 index 0000000..eeb13b1 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/scripts/current_os.go @@ -0,0 +1,10 @@ +package main + +import ( + "fmt" + "runtime" +) + +func main() { + fmt.Println(runtime.GOOS) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/scripts/dev.bash b/vendor/src/github.com/stellar/go/services/horizon/internal/scripts/dev.bash new file mode 100644 index 0000000..b9c2d7f --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/scripts/dev.bash @@ -0,0 +1,5 @@ +#! /usr/bin/env bash + +set -e + +mcdev-each-change go test {{.Pkg}} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/scripts/load_scenario.bash b/vendor/src/github.com/stellar/go/services/horizon/internal/scripts/load_scenario.bash new file mode 100644 index 0000000..4138a95 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/scripts/load_scenario.bash @@ -0,0 +1,13 @@ +#! /usr/bin/env bash + +set -e + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +SCENARIO=$1 +CORE_SQL=$DIR/../test/scenarios/$SCENARIO-core.sql +HORIZON_SQL=$DIR/../test/scenarios/$SCENARIO-horizon.sql + +echo "psql $STELLAR_CORE_DATABASE_URL < $CORE_SQL" +psql $STELLAR_CORE_DATABASE_URL < $CORE_SQL +echo "psql $DATABASE_URL < $HORIZON_SQL" +psql $DATABASE_URL < $HORIZON_SQL diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/scripts/rebuild_schema.bash b/vendor/src/github.com/stellar/go/services/horizon/internal/scripts/rebuild_schema.bash new file mode 100644 index 0000000..1a8ecbd --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/scripts/rebuild_schema.bash @@ -0,0 +1,29 @@ +#! /usr/bin/env bash +set -e + +# This scripts rebuilds the latest.sql file included in the schema package. +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +GOTOP="$( cd "$DIR/../../../../../../../.." && pwd )" +go generate github.com/stellar/go/services/horizon/internal/db2/schema +go install github.com/stellar/go/services/horizon +dropdb horizon_schema --if-exists +createdb horizon_schema +DATABASE_URL=postgres://localhost/horizon_schema?sslmode=disable $GOTOP/bin/horizon db migrate up + +DUMP_OPTS="--schema=public --no-owner --no-acl --inserts" +LATEST_PATH="$DIR/../db2/schema/latest.sql" +BLANK_PATH="$DIR/../test/scenarios/blank-horizon.sql" + +pg_dump postgres://localhost/horizon_schema?sslmode=disable $DUMP_OPTS \ + | sed '/SET idle_in_transaction_session_timeout/d' \ + | sed '/SET row_security/d' \ + > $LATEST_PATH +pg_dump postgres://localhost/horizon_schema?sslmode=disable \ + --clean --if-exists $DUMP_OPTS \ + | sed '/SET idle_in_transaction_session_timeout/d' \ + | sed '/SET row_security/d' \ + > $BLANK_PATH + +go generate github.com/stellar/go/services/horizon/internal/db2/schema +go generate github.com/stellar/go/services/horizon/internal/test +go install github.com/stellar/go/services/horizon diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/simplepath/doc.go b/vendor/src/github.com/stellar/go/services/horizon/internal/simplepath/doc.go new file mode 100644 index 0000000..4197d7c --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/simplepath/doc.go @@ -0,0 +1,3 @@ +// Package simplepath provides an implementation of paths.Finder that performs +// a breadth first search for paths against a stellar-core's database +package simplepath diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/simplepath/finder.go b/vendor/src/github.com/stellar/go/services/horizon/internal/simplepath/finder.go new file mode 100644 index 0000000..97280b8 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/simplepath/finder.go @@ -0,0 +1,48 @@ +package simplepath + +import ( + "github.com/go-errors/errors" + "github.com/stellar/go/services/horizon/internal/db2/core" + "github.com/stellar/go/services/horizon/internal/log" + "github.com/stellar/go/services/horizon/internal/paths" +) + +// Finder implements the paths.Finder interface and searchs for +// payment paths using a simple breadth first search of the offers table of a stellar-core. +// +// This implementation is not meant to be fast or to provide the lowest costs paths, but +// rather is meant to be a simple implementation that gives usable paths. +type Finder struct { + Q *core.Q +} + +// ensure the struct is paths.Finder compliant +var _ paths.Finder = &Finder{} + +// Find performs a path find with the provided query. +func (f *Finder) Find(q paths.Query) (result []paths.Path, err error) { + log.WithField("source_assets", q.SourceAssets). + WithField("destination_asset", q.DestinationAsset). + WithField("destination_amount", q.DestinationAmount). + Info("Starting pathfind") + + if len(q.SourceAssets) == 0 { + err = errors.New("No source assets") + return + } + + s := &search{ + Query: q, + Finder: f, + } + + s.Init() + s.Run() + + result, err = s.Results, s.Err + + log.WithField("found", len(s.Results)). + WithField("err", s.Err). + Info("Finished pathfind") + return +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/simplepath/finder_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/simplepath/finder_test.go new file mode 100644 index 0000000..5c8f184 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/simplepath/finder_test.go @@ -0,0 +1,66 @@ +package simplepath + +import ( + "testing" + + "github.com/stellar/go/xdr" + "github.com/stellar/go/services/horizon/internal/db2/core" + "github.com/stellar/go/services/horizon/internal/paths" + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestFinder(t *testing.T) { + tt := test.Start(t).Scenario("paths") + defer tt.Finish() + + finder := &Finder{ + Q: &core.Q{Session: tt.CoreSession()}, + } + + native := makeAsset(xdr.AssetTypeAssetTypeNative, "", "") + usd := makeAsset( + xdr.AssetTypeAssetTypeCreditAlphanum4, + "USD", + "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN") + eur := makeAsset( + xdr.AssetTypeAssetTypeCreditAlphanum4, + "EUR", + "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN") + + query := paths.Query{ + DestinationAddress: "GAEDTJ4PPEFVW5XV2S7LUXBEHNQMX5Q2GM562RJGOQG7GVCE5H3HIB4V", + DestinationAsset: eur, + DestinationAmount: xdr.Int64(200000000), + SourceAssets: []xdr.Asset{usd}, + } + + p, err := finder.Find(query) + if tt.Assert.NoError(err) { + tt.Assert.Len(p, 3) + } + + query.DestinationAmount = xdr.Int64(200000001) + p, err = finder.Find(query) + if tt.Assert.NoError(err) { + tt.Assert.Len(p, 2) + } + + query.DestinationAmount = xdr.Int64(500000001) + p, err = finder.Find(query) + if tt.Assert.NoError(err) { + tt.Assert.Len(p, 0) + } + + // regression: paths that involve native currencies can be found + + query = paths.Query{ + DestinationAddress: "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", + DestinationAsset: native, + DestinationAmount: xdr.Int64(1), + SourceAssets: []xdr.Asset{usd, native}, + } + p, err = finder.Find(query) + if tt.Assert.NoError(err) { + tt.Assert.Len(p, 2) + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/simplepath/helpers_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/simplepath/helpers_test.go new file mode 100644 index 0000000..d44f697 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/simplepath/helpers_test.go @@ -0,0 +1,26 @@ +package simplepath + +import ( + "github.com/stellar/go/strkey" + "github.com/stellar/go/xdr" +) + +func makeAsset(typ xdr.AssetType, code string, issuer string) xdr.Asset { + + if typ == xdr.AssetTypeAssetTypeNative { + result, _ := xdr.NewAsset(typ, nil) + return result + } + + an := xdr.AssetAlphaNum4{} + copy(an.AssetCode[:], code[:]) + + raw := strkey.MustDecode(strkey.VersionByteAccountID, issuer) + var key xdr.Uint256 + copy(key[:], raw) + + an.Issuer, _ = xdr.NewAccountId(xdr.PublicKeyTypePublicKeyTypeEd25519, key) + + result, _ := xdr.NewAsset(typ, an) + return result +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/simplepath/order_book.go b/vendor/src/github.com/stellar/go/services/horizon/internal/simplepath/order_book.go new file mode 100644 index 0000000..35ab058 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/simplepath/order_book.go @@ -0,0 +1,115 @@ +package simplepath + +import ( + "errors" + "math/big" + + sq "github.com/Masterminds/squirrel" + "github.com/stellar/go/xdr" + "github.com/stellar/go/services/horizon/internal/assets" + "github.com/stellar/go/services/horizon/internal/db2/core" +) + +// ErrNotEnough represents an error that occurs when pricing a trade on an +// orderbook. This error occurs when the orderbook cannot fulfill the +// requested amount. +var ErrNotEnough = errors.New("not enough depth") + +type orderBook struct { + Selling xdr.Asset + Buying xdr.Asset + Q *core.Q +} + +func (ob *orderBook) Cost(source xdr.Asset, sourceAmount xdr.Int64) (result xdr.Int64, err error) { + // load offers from the two assets + + var ( + // selling/buying types + st, bt xdr.AssetType + // selling/buying codes + sc, bc string + // selling/buying issuers + si, bi string + ) + + err = ob.Selling.Extract(&st, &sc, &si) + if err != nil { + return + } + + err = ob.Buying.Extract(&bt, &bc, &bi) + if err != nil { + return + } + + sql := sq. + Select("amount", "pricen", "priced", "offerid"). + From("offers"). + Where(sq.Eq{ + "sellingassettype": st, + "COALESCE(sellingassetcode, '')": sc, + "COALESCE(sellingissuer, '')": si}). + Where(sq.Eq{ + "buyingassettype": bt, + "COALESCE(buyingassetcode, '')": bc, + "COALESCE(buyingissuer, '')": bi}) + + inverted := assets.Equals(source, ob.Buying) + + if !inverted { + sql = sql.OrderBy("price ASC") + } else { + sql = sql.OrderBy("price DESC") + } + + rows, err := ob.Q.Query(sql) + if err != nil { + return + } + defer rows.Close() + + var ( + needed = int64(sourceAmount) + cost int64 + ) + + for rows.Next() { + // load data from the row + var available, pricen, priced, offerid int64 + if inverted { + err = rows.Scan(&available, &priced, &pricen, &offerid) + available = mul(available, pricen, priced) + } else { + err = rows.Scan(&available, &pricen, &priced, &offerid) + } + if err != nil { + return + } + + if available >= needed { + cost += mul(needed, pricen, priced) + result = xdr.Int64(cost) + return + } + + cost += mul(available, pricen, priced) + needed -= available + } + + err = ErrNotEnough + return +} + +// mul multiplies the input amount by the input price +func mul(amount int64, pricen int64, priced int64) int64 { + var r, n, d big.Int + + r.SetInt64(amount) + n.SetInt64(pricen) + d.SetInt64(priced) + + r.Mul(&r, &n) + r.Quo(&r, &d) + return r.Int64() +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/simplepath/order_book_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/simplepath/order_book_test.go new file mode 100644 index 0000000..c09699b --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/simplepath/order_book_test.go @@ -0,0 +1,75 @@ +package simplepath + +import ( + "testing" + + "github.com/stellar/go/xdr" + "github.com/stellar/go/services/horizon/internal/db2/core" + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestOrderBook(t *testing.T) { + tt := test.Start(t).Scenario("paths") + defer tt.Finish() + + ob := orderBook{ + Selling: makeAsset( + xdr.AssetTypeAssetTypeCreditAlphanum4, + "EUR", + "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"), + Buying: makeAsset( + xdr.AssetTypeAssetTypeCreditAlphanum4, + "USD", + "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"), + Q: &core.Q{Session: tt.CoreSession()}, + } + + r, err := ob.Cost(ob.Buying, 10000000) + if tt.Assert.NoError(err) { + tt.Assert.Equal(xdr.Int64(10000000), r) + } + + // this cost should consume the entire lowest priced order, whose price + // is 1.0, thus the output should be the same + r, err = ob.Cost(ob.Buying, 100000000) + if tt.Assert.NoError(err) { + tt.Assert.Equal(xdr.Int64(100000000), r) + } + + // now we are taking from the next offer, where the price is 2.0 + r, err = ob.Cost(ob.Buying, 100000001) + if tt.Assert.NoError(err) { + tt.Assert.Equal(xdr.Int64(100000002), r) + } + + r, err = ob.Cost(ob.Buying, 500000000) + if tt.Assert.NoError(err) { + tt.Assert.Equal(xdr.Int64(900000000), r) + } + + _, err = ob.Cost(ob.Buying, 500000001) + tt.Assert.Error(err) + +} + +func TestOrderBook_BadCost(t *testing.T) { + tt := test.Start(t).Scenario("bad_cost") + defer tt.Finish() + + ob := orderBook{ + Selling: makeAsset( + xdr.AssetTypeAssetTypeCreditAlphanum4, + "EUR", + "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"), + Buying: makeAsset( + xdr.AssetTypeAssetTypeCreditAlphanum4, + "USD", + "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"), + Q: &core.Q{Session: tt.CoreSession()}, + } + + r, err := ob.Cost(ob.Buying, 10000000) + if tt.Assert.NoError(err) { + tt.Assert.Equal(xdr.Int64(2000000000), r) + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/simplepath/path.go b/vendor/src/github.com/stellar/go/services/horizon/internal/simplepath/path.go new file mode 100644 index 0000000..9d52b49 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/simplepath/path.go @@ -0,0 +1,127 @@ +package simplepath + +import ( + "bytes" + "fmt" + + "github.com/stellar/go/xdr" + "github.com/stellar/go/services/horizon/internal/db2/core" + "github.com/stellar/go/services/horizon/internal/paths" +) + +// pathNode implements the paths.Path interface and represents a path +// as a linked list pointing from source to destination. +type pathNode struct { + Asset xdr.Asset + Tail *pathNode + Q *core.Q +} + +// check interface compatibility +var _ paths.Path = &pathNode{} + +func (p *pathNode) String() string { + if p == nil { + return "" + } + + var out bytes.Buffer + fmt.Fprintf(&out, "%v", p.Asset) + + cur := p.Tail + + for cur != nil { + fmt.Fprintf(&out, " -> %v", cur.Asset) + cur = cur.Tail + } + + return out.String() +} + +// Destination implements paths.Path.Destination interface method +func (p *pathNode) Destination() xdr.Asset { + cur := p + for cur.Tail != nil { + cur = cur.Tail + } + return cur.Asset +} + +// Source implements paths.Path.Source interface method +func (p *pathNode) Source() xdr.Asset { + // the destination for path is the head of the linked list + return p.Asset +} + +// Path implements paths.Path.Path interface method +func (p *pathNode) Path() []xdr.Asset { + path := p.Flatten() + + if len(path) < 2 { + return nil + } + + // return the flattened slice without the first and last elements + // which are the source and the destination assets + return path[1 : len(path)-1] +} + +// Cost implements the paths.Path.Cost interface method +func (p *pathNode) Cost(amount xdr.Int64) (result xdr.Int64, err error) { + result = amount + + if p.Tail == nil { + return + } + + cur := p + + for cur.Tail != nil { + ob := cur.OrderBook() + result, err = ob.Cost(cur.Tail.Asset, result) + if err != nil { + return + } + cur = cur.Tail + } + + return +} + +// Depth returns the length of the list +func (p *pathNode) Depth() int { + depth := 0 + cur := p + for { + if cur == nil { + return depth + } + cur = cur.Tail + depth++ + } +} + +// Flatten walks the list and returns a slice of assets +func (p *pathNode) Flatten() (result []xdr.Asset) { + cur := p + + for { + if cur == nil { + return + } + result = append(result, cur.Asset) + cur = cur.Tail + } +} + +func (p *pathNode) OrderBook() *orderBook { + if p.Tail == nil { + return nil + } + + return &orderBook{ + Selling: p.Tail.Asset, + Buying: p.Asset, + Q: p.Q, + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/simplepath/search.go b/vendor/src/github.com/stellar/go/services/horizon/internal/simplepath/search.go new file mode 100644 index 0000000..23547a9 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/simplepath/search.go @@ -0,0 +1,169 @@ +package simplepath + +import ( + "github.com/stellar/go/xdr" + "github.com/stellar/go/services/horizon/internal/paths" +) + +// search represents a single query against the simple finder. It provides +// a place to store the results of the query, mostly for the purposes of code +// clarity. +// +// The search struct is used as follows: +// +// 1. Create an instance, ensuring the Query and Finder fields are set +// 2. Call Init() to populate dependent fields in the struct with their initial values +// 3. Call Run() to perform the search. +// +type search struct { + Query paths.Query + Finder *Finder + + // Fields below are initialized by a call to Init() after + // setting the fields above + queue []*pathNode + targets map[string]bool + visited map[string]bool + + //This fields below are initialized after the search is run + Err error + Results []paths.Path +} + +const maxResults = 20 + +// Init initialized the search, setting fields on the struct used to +// hold state needed during the actual search. +func (s *search) Init() { + s.queue = []*pathNode{ + &pathNode{ + Asset: s.Query.DestinationAsset, + Tail: nil, + Q: s.Finder.Q, + }, + } + + // build a map of asset's string representation to check if a given node + // is one of the targets for our search. Unfortunately, xdr.Asset is not suitable + // for use as a map key, and so we use its string representation. + s.targets = map[string]bool{} + for _, a := range s.Query.SourceAssets { + s.targets[a.String()] = true + } + + s.visited = map[string]bool{} + s.Err = nil + s.Results = nil +} + +// Run triggers the search, which will populate the Results and Err +// field for the search after completion. +func (s *search) Run() { + if s.Err != nil { + return + } + + for s.hasMore() { + s.runOnce() + } +} + +// pop removes the head from the search queue, returning it to the caller +func (s *search) pop() *pathNode { + next := s.queue[0] + s.queue = s.queue[1:] + return next +} + +// returns false if the search should stop. +func (s *search) hasMore() bool { + if s.Err != nil { + return false + } + + if len(s.Results) >= maxResults { + return false + } + + return len(s.queue) > 0 +} + +// isTarget returns true if the asset id provided is one of the targets +// for this search (i.e. one of the requesting account's trusted assets) +func (s *search) isTarget(id string) bool { + _, found := s.targets[id] + return found +} + +// visit returns true if the asset id provided has not been +// visited on this search, after marking the id as visited +func (s *search) visit(id string) bool { + if _, found := s.visited[id]; found { + return false + } + + s.visited[id] = true + return true +} + +// runOnce processes the head of the search queue, findings results +// and extending the search as necessary. +func (s *search) runOnce() { + cur := s.pop() + id := cur.Asset.String() + + if s.isTarget(id) { + s.Results = append(s.Results, cur) + } + + if !s.visit(id) { + return + } + + // A PathPaymentOp's path cannot be over 5 elements in length, and so + // we abort our search if the current linked list is over 7 (since the list + // includes both source and destination in addition to the path) + if cur.Depth() > 7 { + return + } + + s.extendSearch(cur) + +} + +func (s *search) extendSearch(cur *pathNode) { + // find connected assets + var connected []xdr.Asset + s.Err = s.Finder.Q.ConnectedAssets(&connected, cur.Asset) + if s.Err != nil { + return + } + + for _, a := range connected { + newPath := &pathNode{ + Asset: a, + Tail: cur, + Q: s.Finder.Q, + } + + var hasEnough bool + hasEnough, s.Err = s.hasEnoughDepth(newPath) + if s.Err != nil { + return + } + + if !hasEnough { + continue + } + + s.queue = append(s.queue, newPath) + } +} + +func (s *search) hasEnoughDepth(path *pathNode) (bool, error) { + _, err := path.Cost(s.Query.DestinationAmount) + if err == ErrNotEnough { + return false, nil + } + return true, err +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/asserts.go b/vendor/src/github.com/stellar/go/services/horizon/internal/test/asserts.go new file mode 100644 index 0000000..ce167b8 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/asserts.go @@ -0,0 +1,18 @@ +package test + +import ( + "fmt" + "github.com/go-errors/errors" +) + +func ShouldBeErr(a interface{}, options ...interface{}) string { + actual := a.(error) + expected := options[0].(error) + ok := errors.Is(actual, expected) + + if !ok { + return fmt.Sprintf("Errors don't match:\n%v+\n%v+", actual, expected) + } + + return "" +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/db/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/test/db/main.go new file mode 100644 index 0000000..ca7cb18 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/db/main.go @@ -0,0 +1,62 @@ +// Package db provides helpers to connect to test databases. It has no +// internal dependencies on horizon and so should be able to be imported by +// any horizon package. +package db + +import ( + "testing" + "fmt" + "log" + + "github.com/jmoiron/sqlx" + // pq enables postgres support + _ "github.com/lib/pq" + db "github.com/stellar/go/support/db/dbtest" +) + +var ( + coreDB *sqlx.DB + coreUrl *string + horizonDB *sqlx.DB + horizonUrl *string +) + +// Horizon returns a connection to the horizon test database +func Horizon(t *testing.T) *sqlx.DB { + if horizonDB != nil { + return horizonDB + } + postgres := db.Postgres(t) + horizonUrl = &postgres.DSN + horizonDB = postgres.Open() + return horizonDB +} + +// HorizonURL returns the database connection the url any test +// use when connecting to the history/horizon database +func HorizonURL() string { + if horizonUrl == nil { + log.Panic(fmt.Errorf("Horizon not initialized")) + } + return *horizonUrl +} + +// StellarCore returns a connection to the stellar core test database +func StellarCore(t *testing.T) *sqlx.DB { + if coreDB != nil { + return coreDB + } + postgres := db.Postgres(t) + coreUrl = &postgres.DSN + coreDB = postgres.Open() + return coreDB +} + +// StellarCoreURL returns the database connection the url any test +// use when connecting to the stellar-core database +func StellarCoreURL() string { + if coreUrl == nil { + log.Panic(fmt.Errorf("StellarCore not initialized")) + } + return *coreUrl +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/http.go b/vendor/src/github.com/stellar/go/services/horizon/internal/test/http.go new file mode 100644 index 0000000..e9e6842 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/http.go @@ -0,0 +1,83 @@ +package test + +import ( + "github.com/zenazn/goji/web" + "net/http" + "net/http/httptest" + "net/url" + "strings" +) + +type RequestHelper interface { + Get(string, ...func(*http.Request)) *httptest.ResponseRecorder + Post(string, url.Values, ...func(*http.Request)) *httptest.ResponseRecorder +} + +type requestHelper struct { + router *web.Mux +} + +func RequestHelperRemoteAddr(ip string) func(r *http.Request) { + return func(r *http.Request) { + r.RemoteAddr = ip + } +} + +func RequestHelperXFF(xff string) func(r *http.Request) { + return func(r *http.Request) { + r.Header.Set("X-Forwarded-For", xff) + } +} + +func RequestHelperRaw(r *http.Request) { + r.Header.Set("Accept", "application/octet-stream") +} + +func RequestHelperStreaming(r *http.Request) { + r.Header.Set("Accept", "text/event-stream") +} + +func NewRequestHelper(router *web.Mux) RequestHelper { + return &requestHelper{router} +} + +func (rh *requestHelper) Get( + path string, + mods ...func(*http.Request), +) *httptest.ResponseRecorder { + + req, _ := http.NewRequest("GET", path, nil) + return rh.Execute(req, mods) +} + +func (rh *requestHelper) Post( + path string, + form url.Values, + mods ...func(*http.Request), +) *httptest.ResponseRecorder { + + body := strings.NewReader(form.Encode()) + req, _ := http.NewRequest("POST", path, body) + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + return rh.Execute(req, mods) +} + +func (rh *requestHelper) Execute( + req *http.Request, + requestModFns []func(*http.Request), +) *httptest.ResponseRecorder { + + req.RemoteAddr = "127.0.0.1" + for _, fn := range requestModFns { + fn(req) + } + + w := httptest.NewRecorder() + c := web.C{ + Env: map[interface{}]interface{}{}, + } + + rh.router.ServeHTTPC(c, w, req) + return w + +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/load_scenario.go b/vendor/src/github.com/stellar/go/services/horizon/internal/test/load_scenario.go new file mode 100644 index 0000000..8f5620f --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/load_scenario.go @@ -0,0 +1,17 @@ +package test + +import ( + "github.com/stellar/go/services/horizon/internal/test/scenarios" +) + +func loadScenario(scenarioName string, includeHorizon bool) { + stellarCorePath := scenarioName + "-core.sql" + horizonPath := scenarioName + "-horizon.sql" + + if !includeHorizon { + horizonPath = "blank-horizon.sql" + } + + scenarios.Load(StellarCoreDatabaseURL(), stellarCorePath) + scenarios.Load(DatabaseURL(), horizonPath) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/log.go b/vendor/src/github.com/stellar/go/services/horizon/internal/test/log.go new file mode 100644 index 0000000..743df6c --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/log.go @@ -0,0 +1,14 @@ +package test + +import ( + "github.com/sirupsen/logrus" + "github.com/stellar/go/services/horizon/internal/log" +) + +var testLogger *log.Entry + +func init() { + testLogger, _ = log.New() + testLogger.Entry.Logger.Formatter.(*logrus.TextFormatter).DisableColors = true + testLogger.Entry.Logger.Level = logrus.DebugLevel +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/test/main.go new file mode 100644 index 0000000..08771cf --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/main.go @@ -0,0 +1,152 @@ +// Package test contains simple test helpers that should not +// have any dependencies on horizon's packages. think constants, +// custom matchers, generic helpers etc. +package test + +import ( + "bytes" + "net/http" + "net/http/httptest" + "testing" + + "github.com/jmoiron/sqlx" + "github.com/sirupsen/logrus" + hlog "github.com/stellar/go/services/horizon/internal/log" + tdb "github.com/stellar/go/services/horizon/internal/test/db" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "golang.org/x/net/context" +) + +// StaticMockServer is a test helper that records it's last request +type StaticMockServer struct { + *httptest.Server + LastRequest *http.Request +} + +// T provides a common set of functionality for each test in horizon +type T struct { + T *testing.T + Assert *assert.Assertions + Require *require.Assertions + Ctx context.Context + HorizonDB *sqlx.DB + CoreDB *sqlx.DB + Logger *hlog.Entry + LogMetrics *hlog.Metrics + LogBuffer *bytes.Buffer +} + +// Context provides a context suitable for testing in tests that do not create +// a full App instance (in which case your tests should be using the app's +// context). This context has a logger bound to it suitable for testing. +func Context() context.Context { + return hlog.Set(context.Background(), testLogger) +} + +// ContextWithLogBuffer returns a context and a buffer into which the new, bound +// logger will write into. This method allows you to inspect what data was +// logged more easily in your tests. +func ContextWithLogBuffer() (context.Context, *bytes.Buffer) { + output := new(bytes.Buffer) + l, _ := hlog.New() + l.Logger.Out = output + l.Logger.Formatter.(*logrus.TextFormatter).DisableColors = true + l.Logger.Level = logrus.DebugLevel + + ctx := hlog.Set(context.Background(), l) + return ctx, output + +} + +// Database returns a connection to the horizon test database +// +// DEPRECATED: use `Horizon()` from test/db package +func Database(t *testing.T) *sqlx.DB { + return tdb.Horizon(t) +} + +// DatabaseURL returns the database connection the url any test +// use when connecting to the history/horizon database +// +// DEPRECATED: use `HorizonURL()` from test/db package +func DatabaseURL() string { + return tdb.HorizonURL() +} + +// LoadScenario populates the test databases with pre-created scenarios. Each +// scenario is in the scenarios subfolder of this package and are a pair of +// sql files, one per database. +func LoadScenario(scenarioName string) { + loadScenario(scenarioName, true) +} + +// LoadScenarioWithoutHorizon populates the test Stellar core database a with +// pre-created scenario. Unlike `LoadScenario`, this +func LoadScenarioWithoutHorizon(scenarioName string) { + loadScenario(scenarioName, false) +} + +// OverrideLogger sets the default logger used by horizon to `l`. This is used +// by the testing system so that we can collect output from logs during test +// runs. Panics if the logger is already overridden. +func OverrideLogger(l *hlog.Entry) { + if oldDefault != nil { + panic("logger already overridden") + } + + oldDefault = hlog.DefaultLogger + hlog.DefaultLogger = l +} + +// RestoreLogger restores the default horizon logger after it is overridden +// using a call to `OverrideLogger`. Panics if the default logger is not +// presently overridden. +func RestoreLogger() { + if oldDefault == nil { + panic("logger not overridden, cannot restore") + } + + hlog.DefaultLogger = oldDefault + oldDefault = nil +} + +// Start initializes a new test helper object and conceptually "starts" a new +// test +func Start(t *testing.T) *T { + result := &T{} + + result.T = t + result.LogBuffer = new(bytes.Buffer) + result.Logger, result.LogMetrics = hlog.New() + result.Logger.Logger.Out = result.LogBuffer + result.Logger.Logger.Formatter.(*logrus.TextFormatter).DisableColors = true + result.Logger.Logger.Level = logrus.DebugLevel + + OverrideLogger(result.Logger) + + result.Ctx = hlog.Set(context.Background(), result.Logger) + result.HorizonDB = Database(t) + result.CoreDB = StellarCoreDatabase(t) + result.Assert = assert.New(t) + result.Require = require.New(t) + + return result +} + +// StellarCoreDatabase returns a connection to the stellar core test database +// +// DEPRECATED: use `StellarCore()` from test/db package +func StellarCoreDatabase(t *testing.T) *sqlx.DB { + return tdb.StellarCore(t) +} + +// StellarCoreDatabaseURL returns the database connection the url any test +// use when connecting to the stellar-core database +// +// DEPRECATED: use `StellarCoreURL()` from test/db package +func StellarCoreDatabaseURL() string { + return tdb.StellarCoreURL() +} + +var oldDefault *hlog.Entry = nil diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/_common_accounts.rb b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/_common_accounts.rb new file mode 100644 index 0000000..4235a57 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/_common_accounts.rb @@ -0,0 +1,15 @@ +# Secret seed: SBZWG33UOQQCAIBAEAQCAIBAEAQCAIBAEAQCAIBAEAQCAIBAEAQCAPSA +# Address: GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU +account :scott, Stellar::KeyPair.from_seed("SBZWG33UOQQCAIBAEAQCAIBAEAQCAIBAEAQCAIBAEAQCAIBAEAQCAPSA") +# Secret seed: SBQW4ZDSMV3SAIBAEAQCAIBAEAQCAIBAEAQCAIBAEAQCAIBAEAQCA65I +# Address: GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON +account :andrew, Stellar::KeyPair.from_seed("SBQW4ZDSMV3SAIBAEAQCAIBAEAQCAIBAEAQCAIBAEAQCAIBAEAQCA65I") +# Secret seed: SBRGC4TUMVVSAIBAEAQCAIBAEAQCAIBAEAQCAIBAEAQCAIBAEAQCBDHV +# Address: GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2 +account :bartek, Stellar::KeyPair.from_seed("SBRGC4TUMVVSAIBAEAQCAIBAEAQCAIBAEAQCAIBAEAQCAIBAEAQCBDHV") +# Secret seed: SB2XGZC7M5QXIZLXMF4SAIBAEAQCAIBAEAQCAIBAEAQCAIBAEAQCBV6K +# Address: GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4 +account :usd_gateway, Stellar::KeyPair.from_seed("SB2XGZC7M5QXIZLXMF4SAIBAEAQCAIBAEAQCAIBAEAQCAIBAEAQCBV6K") +# Secret seed: SBSXK4S7M5QXIZLXMF4SAIBAEAQCAIBAEAQCAIBAEAQCAIBAEAQCANN5 +# Address: GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG +account :eur_gateway, Stellar::KeyPair.from_seed("SBSXK4S7M5QXIZLXMF4SAIBAEAQCAIBAEAQCAIBAEAQCAIBAEAQCANN5") diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/account_merge-core.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/account_merge-core.sql new file mode 100644 index 0000000..a68d919 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/account_merge-core.sql @@ -0,0 +1,689 @@ +running recipe +recipe finished, closing ledger +ledger closed +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; +SET row_security = off; + +SET search_path = public, pg_catalog; + +DROP INDEX IF EXISTS public.signersaccount; +DROP INDEX IF EXISTS public.sellingissuerindex; +DROP INDEX IF EXISTS public.scpquorumsbyseq; +DROP INDEX IF EXISTS public.scpenvsbyseq; +DROP INDEX IF EXISTS public.priceindex; +DROP INDEX IF EXISTS public.ledgersbyseq; +DROP INDEX IF EXISTS public.histfeebyseq; +DROP INDEX IF EXISTS public.histbyseq; +DROP INDEX IF EXISTS public.buyingissuerindex; +DROP INDEX IF EXISTS public.accountbalances; +ALTER TABLE IF EXISTS ONLY public.txhistory DROP CONSTRAINT IF EXISTS txhistory_pkey; +ALTER TABLE IF EXISTS ONLY public.txfeehistory DROP CONSTRAINT IF EXISTS txfeehistory_pkey; +ALTER TABLE IF EXISTS ONLY public.trustlines DROP CONSTRAINT IF EXISTS trustlines_pkey; +ALTER TABLE IF EXISTS ONLY public.storestate DROP CONSTRAINT IF EXISTS storestate_pkey; +ALTER TABLE IF EXISTS ONLY public.signers DROP CONSTRAINT IF EXISTS signers_pkey; +ALTER TABLE IF EXISTS ONLY public.scpquorums DROP CONSTRAINT IF EXISTS scpquorums_pkey; +ALTER TABLE IF EXISTS ONLY public.pubsub DROP CONSTRAINT IF EXISTS pubsub_pkey; +ALTER TABLE IF EXISTS ONLY public.publishqueue DROP CONSTRAINT IF EXISTS publishqueue_pkey; +ALTER TABLE IF EXISTS ONLY public.peers DROP CONSTRAINT IF EXISTS peers_pkey; +ALTER TABLE IF EXISTS ONLY public.offers DROP CONSTRAINT IF EXISTS offers_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_ledgerseq_key; +ALTER TABLE IF EXISTS ONLY public.ban DROP CONSTRAINT IF EXISTS ban_pkey; +ALTER TABLE IF EXISTS ONLY public.accounts DROP CONSTRAINT IF EXISTS accounts_pkey; +ALTER TABLE IF EXISTS ONLY public.accountdata DROP CONSTRAINT IF EXISTS accountdata_pkey; +DROP TABLE IF EXISTS public.txhistory; +DROP TABLE IF EXISTS public.txfeehistory; +DROP TABLE IF EXISTS public.trustlines; +DROP TABLE IF EXISTS public.storestate; +DROP TABLE IF EXISTS public.signers; +DROP TABLE IF EXISTS public.scpquorums; +DROP TABLE IF EXISTS public.scphistory; +DROP TABLE IF EXISTS public.pubsub; +DROP TABLE IF EXISTS public.publishqueue; +DROP TABLE IF EXISTS public.peers; +DROP TABLE IF EXISTS public.offers; +DROP TABLE IF EXISTS public.ledgerheaders; +DROP TABLE IF EXISTS public.ban; +DROP TABLE IF EXISTS public.accounts; +DROP TABLE IF EXISTS public.accountdata; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: accountdata; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accountdata ( + accountid character varying(56) NOT NULL, + dataname character varying(64) NOT NULL, + datavalue character varying(112) NOT NULL, + lastmodified integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accounts ( + accountid character varying(56) NOT NULL, + balance bigint NOT NULL, + seqnum bigint NOT NULL, + numsubentries integer NOT NULL, + inflationdest character varying(56), + homedomain character varying(32) NOT NULL, + thresholds text NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT accounts_balance_check CHECK ((balance >= 0)), + CONSTRAINT accounts_numsubentries_check CHECK ((numsubentries >= 0)) +); + + +-- +-- Name: ban; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ban ( + nodeid character(56) NOT NULL +); + + +-- +-- Name: ledgerheaders; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ledgerheaders ( + ledgerhash character(64) NOT NULL, + prevhash character(64) NOT NULL, + bucketlisthash character(64) NOT NULL, + ledgerseq integer, + closetime bigint NOT NULL, + data text NOT NULL, + CONSTRAINT ledgerheaders_closetime_check CHECK ((closetime >= 0)), + CONSTRAINT ledgerheaders_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: offers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE offers ( + sellerid character varying(56) NOT NULL, + offerid bigint NOT NULL, + sellingassettype integer NOT NULL, + sellingassetcode character varying(12), + sellingissuer character varying(56), + buyingassettype integer NOT NULL, + buyingassetcode character varying(12), + buyingissuer character varying(56), + amount bigint NOT NULL, + pricen integer NOT NULL, + priced integer NOT NULL, + price double precision NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT offers_amount_check CHECK ((amount >= 0)), + CONSTRAINT offers_offerid_check CHECK ((offerid >= 0)) +); + + +-- +-- Name: peers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE peers ( + ip character varying(15) NOT NULL, + port integer DEFAULT 0 NOT NULL, + nextattempt timestamp without time zone NOT NULL, + numfailures integer DEFAULT 0 NOT NULL, + CONSTRAINT peers_numfailures_check CHECK ((numfailures >= 0)), + CONSTRAINT peers_port_check CHECK (((port > 0) AND (port <= 65535))) +); + + +-- +-- Name: publishqueue; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE publishqueue ( + ledger integer NOT NULL, + state text +); + + +-- +-- Name: pubsub; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE pubsub ( + resid character(32) NOT NULL, + lastread integer +); + + +-- +-- Name: scphistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scphistory ( + nodeid character(56) NOT NULL, + ledgerseq integer NOT NULL, + envelope text NOT NULL, + CONSTRAINT scphistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: scpquorums; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scpquorums ( + qsethash character(64) NOT NULL, + lastledgerseq integer NOT NULL, + qset text NOT NULL, + CONSTRAINT scpquorums_lastledgerseq_check CHECK ((lastledgerseq >= 0)) +); + + +-- +-- Name: signers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE signers ( + accountid character varying(56) NOT NULL, + publickey character varying(56) NOT NULL, + weight integer NOT NULL +); + + +-- +-- Name: storestate; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE storestate ( + statename character(32) NOT NULL, + state text +); + + +-- +-- Name: trustlines; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE trustlines ( + accountid character varying(56) NOT NULL, + assettype integer NOT NULL, + issuer character varying(56) NOT NULL, + assetcode character varying(12) NOT NULL, + tlimit bigint NOT NULL, + balance bigint NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT trustlines_balance_check CHECK ((balance >= 0)), + CONSTRAINT trustlines_tlimit_check CHECK ((tlimit > 0)) +); + + +-- +-- Name: txfeehistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txfeehistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txchanges text NOT NULL, + CONSTRAINT txfeehistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: txhistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txhistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txbody text NOT NULL, + txresult text NOT NULL, + txmeta text NOT NULL, + CONSTRAINT txhistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Data for Name: accountdata; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO accounts VALUES ('GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 999999979999999800, 2, 0, NULL, '', 'AQAAAA==', 0, 2); +INSERT INTO accounts VALUES ('GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2', 19999999900, 8589934592, 0, NULL, '', 'AQAAAA==', 0, 3); + + +-- +-- Data for Name: ban; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: ledgerheaders; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO ledgerheaders VALUES ('63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', '0000000000000000000000000000000000000000000000000000000000000000', '572a2e32ff248a07b0e70fd1f6d318c1facd20b6cc08c33d5775259868125a16', 1, 0, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXKi4y/ySKB7DnD9H20xjB+s0gtswIwz1XdSWYaBJaFgAAAAEN4Lazp2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAX14QAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('a66225aa2c3f922a86f4115c1b36b70782584734a46195c7c40b3d7e1d5ad419', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', 'f5b7b3993e6721891a7e1d083e3679c232512d63231476ce6826bc1caf56aecb', 2, 1508958204, 'AAAACGPZj1Nu5o0bJ7W4nyOvUxG3Vpok+vFAOtC1K2M7B76ZUeFWh3+LY3YTHkhb6t+XikT48AKVUrh+INl3MY9NNtUAAAAAWfDf/AAAAAIAAAAIAAAAAQAAAAgAAAAIAAAAAwAAJxAAAAAAwWNZfI5WyFWx2m7ToNQChYZ5zqFrwog2j0kXqQNLArv1t7OZPmchiRp+HQg+NnnCMlEtYyMUds5oJrwcr1auywAAAAIN4Lazp2QAAAAAAAAAAADIAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('761eaef6d18ea118e509e9608a80030c84a7f06f6ea43a638650e1212fb41c97', 'a66225aa2c3f922a86f4115c1b36b70782584734a46195c7c40b3d7e1d5ad419', 'e6416678d086830ebdfb266fe3c757df011b4082ba5677ecb5542d2ed5369c42', 3, 1508958205, 'AAAACKZiJaosP5IqhvQRXBs2tweCWEc0pGGVx8QLPX4dWtQZL+Jvx90UtcwCCMoYkgizziVr+0c2C14VfpRYGSuKW2QAAAAAWfDf/QAAAAAAAAAAl3fNvfZdYBxPGC86jq3dI5KKUxZcop2bXz/KHY7Ox/TmQWZ40IaDDr37Jm/jx1ffARtAgrpWd+y1VC0u1TacQgAAAAMN4Lazp2QAAAAAAAAAAAEsAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); + + +-- +-- Data for Name: offers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: peers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: publishqueue; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: pubsub; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: scphistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scphistory VALUES ('GCEH7OSSSXN7HYFHPFLSOICHUXY4TOV2WCIT5ZXTSWBWMIGGWVBCY74I', 2, 'AAAAAIh/ulKV2/Pgp3lXJyBHpfHJurqwkT7m85WDZiDGtUIsAAAAAAAAAAIAAAACAAAAAQAAAEhR4VaHf4tjdhMeSFvq35eKRPjwApVSuH4g2Xcxj0021QAAAABZ8N/8AAAAAgAAAAgAAAABAAAACAAAAAgAAAADAAAnEAAAAAAAAAABoCsLpASM9s8MQMVIodQIMYsPXUdD0rD/smuIJNVHtJIAAABAIUo+qjAIWerMWvg7Dq4Fwd3B7SvmwyL7R8O+bk8kb0qibavyttCGYvMF20M6Y03Z6vgdOOwuF03LsjutNsWOCQ=='); +INSERT INTO scphistory VALUES ('GCEH7OSSSXN7HYFHPFLSOICHUXY4TOV2WCIT5ZXTSWBWMIGGWVBCY74I', 3, 'AAAAAIh/ulKV2/Pgp3lXJyBHpfHJurqwkT7m85WDZiDGtUIsAAAAAAAAAAMAAAACAAAAAQAAADAv4m/H3RS1zAIIyhiSCLPOJWv7RzYLXhV+lFgZK4pbZAAAAABZ8N/9AAAAAAAAAAAAAAABoCsLpASM9s8MQMVIodQIMYsPXUdD0rD/smuIJNVHtJIAAABAzVaB8jXwcd1vgajrJ0PGSC2GxB1R232g7TErtqyoFKE6ZFBW8pVmsFZpRXOCkIPmFMnM5RxEP6MnBx0ZYy0EDg=='); + + +-- +-- Data for Name: scpquorums; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scpquorums VALUES ('a02b0ba4048cf6cf0c40c548a1d408318b0f5d4743d2b0ffb26b8824d547b492', 3, 'AAAAAQAAAAEAAAAAiH+6UpXb8+CneVcnIEel8cm6urCRPubzlYNmIMa1QiwAAAAA'); + + +-- +-- Data for Name: signers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: storestate; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO storestate VALUES ('databaseschema ', '5'); +INSERT INTO storestate VALUES ('forcescponnextlaunch ', 'false'); +INSERT INTO storestate VALUES ('lastclosedledger ', '761eaef6d18ea118e509e9608a80030c84a7f06f6ea43a638650e1212fb41c97'); +INSERT INTO storestate VALUES ('historyarchivestate ', '{ + "version": 1, + "server": "v0.6.3-66-gd66575cf", + "currentLedger": 3, + "currentBuckets": [ + { + "curr": "02264183de252bcb4f21b3172373876f05f8ea24fdb3a246d748997f90e1a1b7", + "next": { + "state": 0 + }, + "snap": "ef31a20a398ee73ce22275ea8177786bac54656f33dcc4f3fec60d55ddf163d9" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 1, + "output": "ef31a20a398ee73ce22275ea8177786bac54656f33dcc4f3fec60d55ddf163d9" + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + } + ] +}'); +INSERT INTO storestate VALUES ('lastscpdata ', 'AAAAAgAAAACIf7pSldvz4Kd5VycgR6Xxybq6sJE+5vOVg2YgxrVCLAAAAAAAAAADAAAAA6ArC6QEjPbPDEDFSKHUCDGLD11HQ9Kw/7JriCTVR7SSAAAAAQAAADAv4m/H3RS1zAIIyhiSCLPOJWv7RzYLXhV+lFgZK4pbZAAAAABZ8N/9AAAAAAAAAAAAAAABAAAAMC/ib8fdFLXMAgjKGJIIs84la/tHNgteFX6UWBkriltkAAAAAFnw3/0AAAAAAAAAAAAAAED9cF893akH/B+qH5pvGf9DMe8QjZb3F0CIxKbuT1K+mOCTJMUdsPryYTi/3p6b4g6EEjr6+q5dzdU8Nsdx6qIOAAAAAIh/ulKV2/Pgp3lXJyBHpfHJurqwkT7m85WDZiDGtUIsAAAAAAAAAAMAAAACAAAAAQAAADAv4m/H3RS1zAIIyhiSCLPOJWv7RzYLXhV+lFgZK4pbZAAAAABZ8N/9AAAAAAAAAAAAAAABoCsLpASM9s8MQMVIodQIMYsPXUdD0rD/smuIJNVHtJIAAABAzVaB8jXwcd1vgajrJ0PGSC2GxB1R232g7TErtqyoFKE6ZFBW8pVmsFZpRXOCkIPmFMnM5RxEP6MnBx0ZYy0EDgAAAAGmYiWqLD+SKob0EVwbNrcHglhHNKRhlcfECz1+HVrUGQAAAAEAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAABkAAAAAgAAAAEAAAAAAAAAAAAAAAEAAAAAAAAACAAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAAAAAABruS+TAAAAEAz8O4X3ay1CjSNB+2sS69FGvYVi1ryD8P1ZuZZQnOJTyPtn9IrYaH/+uB7SPRdDzKRvcPwuf3N+ms8rtP5TLMBAAAAAQAAAAEAAAABAAAAAIh/ulKV2/Pgp3lXJyBHpfHJurqwkT7m85WDZiDGtUIsAAAAAA=='); + + +-- +-- Data for Name: trustlines; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: txfeehistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txfeehistory VALUES ('b2a227c39c64a44fc7abd4c96819456f0399906d12c476d70b402bfdb296d6a3', 2, 1, 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('36be70fb7782f9801cdcedc1206e21f99293c99860a15e441f4749747a0a37ab', 2, 2, 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/84AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('734be94762dd4b7f98f644de207273f1a139f53aefc2a1eeb61886118ca7827f', 3, 1, 'AAAAAgAAAAMAAAACAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); + + +-- +-- Data for Name: txhistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txhistory VALUES ('b2a227c39c64a44fc7abd4c96819456f0399906d12c476d70b402bfdb296d6a3', 2, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAACVAvkAAAAAAAAAAABVvwF9wAAAEDt3KwmaPuPdFSUxdAFeb6OQetyQKIWazlbSMMhmHKNLD4sqhEqUZcQP0l+X/Op+osWmN6+FUYbsz75Q2jG4vMM', 'sqInw5xkpE/Hq9TJaBlFbwOZkG0SxHbXC0Ar/bKW1qMAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2sVNYGzgAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('36be70fb7782f9801cdcedc1206e21f99293c99860a15e441f4749747a0a37ab', 2, 2, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAO2C/AO45YBD3tHVFO1R3A0MekP8JR6nN1A9eWidyItUAAAACVAvkAAAAAAAAAAABVvwF9wAAAEA3xWbxPObnZMiBGFKLJQufJLguTsHJxyAsPP5F9Zj561aXnvN/HVRJbFsEcitGbgi9dWVdKRYvmVWCizIdmLID', 'Nr5w+3eC+YAc3O3BIG4h+ZKTyZhgoV5EH0dJdHoKN6sAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rv9MNzgAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('734be94762dd4b7f98f644de207273f1a139f53aefc2a1eeb61886118ca7827f', 3, 1, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAgAAAAAO2C/AO45YBD3tHVFO1R3A0MekP8JR6nN1A9eWidyItUAAAAAAAAAAa7kvkwAAABAM/DuF92stQo0jQftrEuvRRr2FYta8g/D9WbmWUJziU8j7Z/SK2Gh//rge0j0XQ8ykb3D8Ln9zfprPK7T+UyzAQ==', 'c0vpR2LdS3+Y9kTeIHJz8aE59TrvwqHuthiGEYyngn8AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAgAAAAAAAAAAlQL45wAAAAA', 'AAAAAAAAAAEAAAADAAAAAwAAAAIAAAAAAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAABKgXx5wAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkw='); + + +-- +-- Name: accountdata accountdata_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accountdata + ADD CONSTRAINT accountdata_pkey PRIMARY KEY (accountid, dataname); + + +-- +-- Name: accounts accounts_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accounts + ADD CONSTRAINT accounts_pkey PRIMARY KEY (accountid); + + +-- +-- Name: ban ban_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ban + ADD CONSTRAINT ban_pkey PRIMARY KEY (nodeid); + + +-- +-- Name: ledgerheaders ledgerheaders_ledgerseq_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_ledgerseq_key UNIQUE (ledgerseq); + + +-- +-- Name: ledgerheaders ledgerheaders_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_pkey PRIMARY KEY (ledgerhash); + + +-- +-- Name: offers offers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY offers + ADD CONSTRAINT offers_pkey PRIMARY KEY (offerid); + + +-- +-- Name: peers peers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY peers + ADD CONSTRAINT peers_pkey PRIMARY KEY (ip, port); + + +-- +-- Name: publishqueue publishqueue_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY publishqueue + ADD CONSTRAINT publishqueue_pkey PRIMARY KEY (ledger); + + +-- +-- Name: pubsub pubsub_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY pubsub + ADD CONSTRAINT pubsub_pkey PRIMARY KEY (resid); + + +-- +-- Name: scpquorums scpquorums_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY scpquorums + ADD CONSTRAINT scpquorums_pkey PRIMARY KEY (qsethash); + + +-- +-- Name: signers signers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY signers + ADD CONSTRAINT signers_pkey PRIMARY KEY (accountid, publickey); + + +-- +-- Name: storestate storestate_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY storestate + ADD CONSTRAINT storestate_pkey PRIMARY KEY (statename); + + +-- +-- Name: trustlines trustlines_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY trustlines + ADD CONSTRAINT trustlines_pkey PRIMARY KEY (accountid, issuer, assetcode); + + +-- +-- Name: txfeehistory txfeehistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txfeehistory + ADD CONSTRAINT txfeehistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: txhistory txhistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txhistory + ADD CONSTRAINT txhistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: accountbalances; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX accountbalances ON accounts USING btree (balance) WHERE (balance >= 1000000000); + + +-- +-- Name: buyingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX buyingissuerindex ON offers USING btree (buyingissuer); + + +-- +-- Name: histbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histbyseq ON txhistory USING btree (ledgerseq); + + +-- +-- Name: histfeebyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histfeebyseq ON txfeehistory USING btree (ledgerseq); + + +-- +-- Name: ledgersbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX ledgersbyseq ON ledgerheaders USING btree (ledgerseq); + + +-- +-- Name: priceindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX priceindex ON offers USING btree (price); + + +-- +-- Name: scpenvsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpenvsbyseq ON scphistory USING btree (ledgerseq); + + +-- +-- Name: scpquorumsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpquorumsbyseq ON scpquorums USING btree (lastledgerseq); + + +-- +-- Name: sellingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX sellingissuerindex ON offers USING btree (sellingissuer); + + +-- +-- Name: signersaccount; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX signersaccount ON signers USING btree (accountid); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/account_merge-horizon.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/account_merge-horizon.sql new file mode 100644 index 0000000..3b32691 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/account_merge-horizon.sql @@ -0,0 +1,773 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; + +SET search_path = public, pg_catalog; + +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_account_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_account_id_fkey; +DROP INDEX IF EXISTS public.trade_effects_by_order_book; +DROP INDEX IF EXISTS public.index_history_transactions_on_id; +DROP INDEX IF EXISTS public.index_history_operations_on_type; +DROP INDEX IF EXISTS public.index_history_operations_on_transaction_id; +DROP INDEX IF EXISTS public.index_history_operations_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_sequence; +DROP INDEX IF EXISTS public.index_history_ledgers_on_previous_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_importer_version; +DROP INDEX IF EXISTS public.index_history_ledgers_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_closed_at; +DROP INDEX IF EXISTS public.index_history_effects_on_type; +DROP INDEX IF EXISTS public.index_history_accounts_on_id; +DROP INDEX IF EXISTS public.index_history_accounts_on_address; +DROP INDEX IF EXISTS public.htrd_time_lookup; +DROP INDEX IF EXISTS public.htrd_pid; +DROP INDEX IF EXISTS public.htrd_pair_time_lookup; +DROP INDEX IF EXISTS public.htrd_counter_lookup; +DROP INDEX IF EXISTS public.htrd_by_offer; +DROP INDEX IF EXISTS public.htp_by_htid; +DROP INDEX IF EXISTS public.hs_transaction_by_id; +DROP INDEX IF EXISTS public.hs_ledger_by_id; +DROP INDEX IF EXISTS public.hop_by_hoid; +DROP INDEX IF EXISTS public.hist_tx_p_id; +DROP INDEX IF EXISTS public.hist_op_p_id; +DROP INDEX IF EXISTS public.hist_e_id; +DROP INDEX IF EXISTS public.hist_e_by_order; +DROP INDEX IF EXISTS public.by_ledger; +DROP INDEX IF EXISTS public.by_hash; +DROP INDEX IF EXISTS public.by_account; +DROP INDEX IF EXISTS public.asset_by_issuer; +ALTER TABLE IF EXISTS ONLY public.history_transaction_participants DROP CONSTRAINT IF EXISTS history_transaction_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_operation_participants DROP CONSTRAINT IF EXISTS history_operation_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_asset_code_asset_type_asset_issuer_key; +ALTER TABLE IF EXISTS ONLY public.gorp_migrations DROP CONSTRAINT IF EXISTS gorp_migrations_pkey; +ALTER TABLE IF EXISTS public.history_transaction_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_operation_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_assets ALTER COLUMN id DROP DEFAULT; +DROP TABLE IF EXISTS public.history_transactions; +DROP SEQUENCE IF EXISTS public.history_transaction_participants_id_seq; +DROP TABLE IF EXISTS public.history_transaction_participants; +DROP TABLE IF EXISTS public.history_trades; +DROP TABLE IF EXISTS public.history_operations; +DROP SEQUENCE IF EXISTS public.history_operation_participants_id_seq; +DROP TABLE IF EXISTS public.history_operation_participants; +DROP TABLE IF EXISTS public.history_ledgers; +DROP TABLE IF EXISTS public.history_effects; +DROP SEQUENCE IF EXISTS public.history_assets_id_seq; +DROP TABLE IF EXISTS public.history_assets; +DROP TABLE IF EXISTS public.history_accounts; +DROP SEQUENCE IF EXISTS public.history_accounts_id_seq; +DROP TABLE IF EXISTS public.gorp_migrations; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: gorp_migrations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE gorp_migrations ( + id text NOT NULL, + applied_at timestamp with time zone +); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_accounts_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_accounts ( + id bigint DEFAULT nextval('history_accounts_id_seq'::regclass) NOT NULL, + address character varying(64) +); + + +-- +-- Name: history_assets; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_assets ( + id integer NOT NULL, + asset_type character varying(64) NOT NULL, + asset_code character varying(12) NOT NULL, + asset_issuer character varying(56) NOT NULL +); + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_assets_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_assets_id_seq OWNED BY history_assets.id; + + +-- +-- Name: history_effects; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_effects ( + history_account_id bigint NOT NULL, + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + type integer NOT NULL, + details jsonb +); + + +-- +-- Name: history_ledgers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_ledgers ( + sequence integer NOT NULL, + ledger_hash character varying(64) NOT NULL, + previous_ledger_hash character varying(64), + transaction_count integer DEFAULT 0 NOT NULL, + operation_count integer DEFAULT 0 NOT NULL, + closed_at timestamp without time zone NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + importer_version integer DEFAULT 1 NOT NULL, + total_coins bigint NOT NULL, + fee_pool bigint NOT NULL, + base_fee integer NOT NULL, + base_reserve integer NOT NULL, + max_tx_set_size integer NOT NULL, + protocol_version integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: history_operation_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operation_participants ( + id integer NOT NULL, + history_operation_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_operation_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_operation_participants_id_seq OWNED BY history_operation_participants.id; + + +-- +-- Name: history_operations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operations ( + id bigint NOT NULL, + transaction_id bigint NOT NULL, + application_order integer NOT NULL, + type integer NOT NULL, + details jsonb, + source_account character varying(64) DEFAULT ''::character varying NOT NULL +); + + +-- +-- Name: history_trades; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_trades ( + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + ledger_closed_at timestamp without time zone NOT NULL, + offer_id bigint NOT NULL, + base_account_id bigint NOT NULL, + base_asset_id bigint NOT NULL, + base_amount bigint NOT NULL, + counter_account_id bigint NOT NULL, + counter_asset_id bigint NOT NULL, + counter_amount bigint NOT NULL, + base_is_seller boolean, + CONSTRAINT history_trades_base_amount_check CHECK ((base_amount > 0)), + CONSTRAINT history_trades_check CHECK ((base_asset_id < counter_asset_id)), + CONSTRAINT history_trades_counter_amount_check CHECK ((counter_amount > 0)) +); + + +-- +-- Name: history_transaction_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transaction_participants ( + id integer NOT NULL, + history_transaction_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_transaction_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_transaction_participants_id_seq OWNED BY history_transaction_participants.id; + + +-- +-- Name: history_transactions; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transactions ( + transaction_hash character varying(64) NOT NULL, + ledger_sequence integer NOT NULL, + application_order integer NOT NULL, + account character varying(64) NOT NULL, + account_sequence bigint NOT NULL, + fee_paid integer NOT NULL, + operation_count integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + tx_envelope text NOT NULL, + tx_result text NOT NULL, + tx_meta text NOT NULL, + tx_fee_meta text NOT NULL, + signatures character varying(96)[] DEFAULT '{}'::character varying[] NOT NULL, + memo_type character varying DEFAULT 'none'::character varying NOT NULL, + memo character varying, + time_bounds int8range +); + + +-- +-- Name: history_assets id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets ALTER COLUMN id SET DEFAULT nextval('history_assets_id_seq'::regclass); + + +-- +-- Name: history_operation_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants ALTER COLUMN id SET DEFAULT nextval('history_operation_participants_id_seq'::regclass); + + +-- +-- Name: history_transaction_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants ALTER COLUMN id SET DEFAULT nextval('history_transaction_participants_id_seq'::regclass); + + +-- +-- Data for Name: gorp_migrations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO gorp_migrations VALUES ('1_initial_schema.sql', '2017-10-25 12:02:41.355815-07'); +INSERT INTO gorp_migrations VALUES ('2_index_participants_by_toid.sql', '2017-10-25 12:02:41.35913-07'); +INSERT INTO gorp_migrations VALUES ('3_use_sequence_in_history_accounts.sql', '2017-10-25 12:02:41.361119-07'); +INSERT INTO gorp_migrations VALUES ('4_add_protocol_version.sql', '2017-10-25 12:02:41.365998-07'); +INSERT INTO gorp_migrations VALUES ('5_create_trades_table.sql', '2017-10-25 12:02:41.370443-07'); +INSERT INTO gorp_migrations VALUES ('6_create_assets_table.sql', '2017-10-25 12:02:41.373746-07'); +INSERT INTO gorp_migrations VALUES ('7_modify_trades_table.sql', '2017-10-25 12:02:41.381902-07'); + + +-- +-- Data for Name: history_accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_accounts VALUES (1, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_accounts VALUES (2, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_accounts VALUES (3, 'GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2'); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_accounts_id_seq', 3, true); + + +-- +-- Data for Name: history_assets; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_assets_id_seq', 1, false); + + +-- +-- Data for Name: history_effects; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_effects VALUES (1, 8589938689, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (2, 8589938689, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (1, 8589938689, 3, 10, '{"weight": 1, "public_key": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU"}'); +INSERT INTO history_effects VALUES (3, 8589942785, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (2, 8589942785, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (3, 8589942785, 3, 10, '{"weight": 1, "public_key": "GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2"}'); +INSERT INTO history_effects VALUES (1, 12884905985, 1, 3, '{"amount": "999.9999900", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (3, 12884905985, 2, 2, '{"amount": "999.9999900", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (1, 12884905985, 3, 1, '{}'); + + +-- +-- Data for Name: history_ledgers; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_ledgers VALUES (1, '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', NULL, 0, 0, '1970-01-01 00:00:00', '2017-10-25 19:03:26.982862', '2017-10-25 19:03:26.982862', 4294967296, 10, 1000000000000000000, 0, 100, 100000000, 100, 0); +INSERT INTO history_ledgers VALUES (2, 'a66225aa2c3f922a86f4115c1b36b70782584734a46195c7c40b3d7e1d5ad419', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', 2, 2, '2017-10-25 19:03:24', '2017-10-25 19:03:26.997877', '2017-10-25 19:03:26.997877', 8589934592, 10, 1000000000000000000, 200, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (3, '761eaef6d18ea118e509e9608a80030c84a7f06f6ea43a638650e1212fb41c97', 'a66225aa2c3f922a86f4115c1b36b70782584734a46195c7c40b3d7e1d5ad419', 1, 1, '2017-10-25 19:03:25', '2017-10-25 19:03:27.04629', '2017-10-25 19:03:27.04629', 12884901888, 10, 1000000000000000000, 300, 100, 100000000, 10000, 8); + + +-- +-- Data for Name: history_operation_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operation_participants VALUES (1, 8589938689, 1); +INSERT INTO history_operation_participants VALUES (2, 8589938689, 2); +INSERT INTO history_operation_participants VALUES (3, 8589942785, 2); +INSERT INTO history_operation_participants VALUES (4, 8589942785, 3); +INSERT INTO history_operation_participants VALUES (5, 12884905985, 1); +INSERT INTO history_operation_participants VALUES (6, 12884905985, 3); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_operation_participants_id_seq', 6, true); + + +-- +-- Data for Name: history_operations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operations VALUES (8589938689, 8589938688, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (8589942785, 8589942784, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (12884905985, 12884905984, 1, 8, '{"into": "GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2", "account": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); + + +-- +-- Data for Name: history_trades; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: history_transaction_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transaction_participants VALUES (1, 8589938688, 1); +INSERT INTO history_transaction_participants VALUES (2, 8589938688, 2); +INSERT INTO history_transaction_participants VALUES (3, 8589942784, 2); +INSERT INTO history_transaction_participants VALUES (4, 8589942784, 3); +INSERT INTO history_transaction_participants VALUES (5, 12884905984, 1); +INSERT INTO history_transaction_participants VALUES (6, 12884905984, 3); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_transaction_participants_id_seq', 6, true); + + +-- +-- Data for Name: history_transactions; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transactions VALUES ('b2a227c39c64a44fc7abd4c96819456f0399906d12c476d70b402bfdb296d6a3', 2, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 1, 100, 1, '2017-10-25 19:03:26.998525', '2017-10-25 19:03:26.998525', 8589938688, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAACVAvkAAAAAAAAAAABVvwF9wAAAEDt3KwmaPuPdFSUxdAFeb6OQetyQKIWazlbSMMhmHKNLD4sqhEqUZcQP0l+X/Op+osWmN6+FUYbsz75Q2jG4vMM', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2sVNYGzgAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{7dysJmj7j3RUlMXQBXm+jkHrckCiFms5W0jDIZhyjSw+LKoRKlGXED9Jfl/zqfqLFpjevhVGG7M++UNoxuLzDA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('36be70fb7782f9801cdcedc1206e21f99293c99860a15e441f4749747a0a37ab', 2, 2, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 2, 100, 1, '2017-10-25 19:03:27.029664', '2017-10-25 19:03:27.029664', 8589942784, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAO2C/AO45YBD3tHVFO1R3A0MekP8JR6nN1A9eWidyItUAAAACVAvkAAAAAAAAAAABVvwF9wAAAEA3xWbxPObnZMiBGFKLJQufJLguTsHJxyAsPP5F9Zj561aXnvN/HVRJbFsEcitGbgi9dWVdKRYvmVWCizIdmLID', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rv9MNzgAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/84AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{N8Vm8Tzm52TIgRhSiyULnyS4Lk7ByccgLDz+RfWY+etWl57zfx1USWxbBHIrRm4IvXVlXSkWL5lVgosyHZiyAw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('734be94762dd4b7f98f644de207273f1a139f53aefc2a1eeb61886118ca7827f', 3, 1, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934593, 100, 1, '2017-10-25 19:03:27.046824', '2017-10-25 19:03:27.046824', 12884905984, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAgAAAAAO2C/AO45YBD3tHVFO1R3A0MekP8JR6nN1A9eWidyItUAAAAAAAAAAa7kvkwAAABAM/DuF92stQo0jQftrEuvRRr2FYta8g/D9WbmWUJziU8j7Z/SK2Gh//rge0j0XQ8ykb3D8Ln9zfprPK7T+UyzAQ==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAIAAAAAAAAAAJUC+OcAAAAAA==', 'AAAAAAAAAAEAAAADAAAAAwAAAAIAAAAAAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAABKgXx5wAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkw=', 'AAAAAgAAAAMAAAACAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{M/DuF92stQo0jQftrEuvRRr2FYta8g/D9WbmWUJziU8j7Z/SK2Gh//rge0j0XQ8ykb3D8Ln9zfprPK7T+UyzAQ==}', 'none', NULL, NULL); + + +-- +-- Name: gorp_migrations gorp_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY gorp_migrations + ADD CONSTRAINT gorp_migrations_pkey PRIMARY KEY (id); + + +-- +-- Name: history_assets history_assets_asset_code_asset_type_asset_issuer_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_asset_code_asset_type_asset_issuer_key UNIQUE (asset_code, asset_type, asset_issuer); + + +-- +-- Name: history_assets history_assets_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_pkey PRIMARY KEY (id); + + +-- +-- Name: history_operation_participants history_operation_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants + ADD CONSTRAINT history_operation_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: history_transaction_participants history_transaction_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants + ADD CONSTRAINT history_transaction_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: asset_by_issuer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX asset_by_issuer ON history_assets USING btree (asset_issuer); + + +-- +-- Name: by_account; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_account ON history_transactions USING btree (account, account_sequence); + + +-- +-- Name: by_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_hash ON history_transactions USING btree (transaction_hash); + + +-- +-- Name: by_ledger; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_ledger ON history_transactions USING btree (ledger_sequence, application_order); + + +-- +-- Name: hist_e_by_order; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_by_order ON history_effects USING btree (history_operation_id, "order"); + + +-- +-- Name: hist_e_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_id ON history_effects USING btree (history_account_id, history_operation_id, "order"); + + +-- +-- Name: hist_op_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_op_p_id ON history_operation_participants USING btree (history_account_id, history_operation_id); + + +-- +-- Name: hist_tx_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_tx_p_id ON history_transaction_participants USING btree (history_account_id, history_transaction_id); + + +-- +-- Name: hop_by_hoid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX hop_by_hoid ON history_operation_participants USING btree (history_operation_id); + + +-- +-- Name: hs_ledger_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_ledger_by_id ON history_ledgers USING btree (id); + + +-- +-- Name: hs_transaction_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_transaction_by_id ON history_transactions USING btree (id); + + +-- +-- Name: htp_by_htid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htp_by_htid ON history_transaction_participants USING btree (history_transaction_id); + + +-- +-- Name: htrd_by_offer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_by_offer ON history_trades USING btree (offer_id); + + +-- +-- Name: htrd_counter_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_counter_lookup ON history_trades USING btree (counter_asset_id); + + +-- +-- Name: htrd_pair_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_pair_time_lookup ON history_trades USING btree (base_asset_id, counter_asset_id, ledger_closed_at); + + +-- +-- Name: htrd_pid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX htrd_pid ON history_trades USING btree (history_operation_id, "order"); + + +-- +-- Name: htrd_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_time_lookup ON history_trades USING btree (ledger_closed_at); + + +-- +-- Name: index_history_accounts_on_address; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_address ON history_accounts USING btree (address); + + +-- +-- Name: index_history_accounts_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_id ON history_accounts USING btree (id); + + +-- +-- Name: index_history_effects_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_effects_on_type ON history_effects USING btree (type); + + +-- +-- Name: index_history_ledgers_on_closed_at; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_closed_at ON history_ledgers USING btree (closed_at); + + +-- +-- Name: index_history_ledgers_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_id ON history_ledgers USING btree (id); + + +-- +-- Name: index_history_ledgers_on_importer_version; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_importer_version ON history_ledgers USING btree (importer_version); + + +-- +-- Name: index_history_ledgers_on_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_ledger_hash ON history_ledgers USING btree (ledger_hash); + + +-- +-- Name: index_history_ledgers_on_previous_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_previous_ledger_hash ON history_ledgers USING btree (previous_ledger_hash); + + +-- +-- Name: index_history_ledgers_on_sequence; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_sequence ON history_ledgers USING btree (sequence); + + +-- +-- Name: index_history_operations_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_operations_on_id ON history_operations USING btree (id); + + +-- +-- Name: index_history_operations_on_transaction_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_transaction_id ON history_operations USING btree (transaction_id); + + +-- +-- Name: index_history_operations_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_type ON history_operations USING btree (type); + + +-- +-- Name: index_history_transactions_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_transactions_on_id ON history_transactions USING btree (id); + + +-- +-- Name: trade_effects_by_order_book; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX trade_effects_by_order_book ON history_effects USING btree (((details ->> 'sold_asset_type'::text)), ((details ->> 'sold_asset_code'::text)), ((details ->> 'sold_asset_issuer'::text)), ((details ->> 'bought_asset_type'::text)), ((details ->> 'bought_asset_code'::text)), ((details ->> 'bought_asset_issuer'::text))) WHERE (type = 33); + + +-- +-- Name: history_trades history_trades_base_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_account_id_fkey FOREIGN KEY (base_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_base_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_asset_id_fkey FOREIGN KEY (base_asset_id) REFERENCES history_assets(id); + + +-- +-- Name: history_trades history_trades_counter_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_account_id_fkey FOREIGN KEY (counter_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_counter_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_asset_id_fkey FOREIGN KEY (counter_asset_id) REFERENCES history_assets(id); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/account_merge.rb b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/account_merge.rb new file mode 100644 index 0000000..a92e504 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/account_merge.rb @@ -0,0 +1,11 @@ +use_manual_close + +run_recipe File.dirname(__FILE__) + "/_common_accounts.rb" + + +create_account :scott, :master +create_account :bartek, :master + +close_ledger + +merge_account :scott, :bartek diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/allow_trust-core.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/allow_trust-core.sql new file mode 100644 index 0000000..983a86f --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/allow_trust-core.sql @@ -0,0 +1,720 @@ +running recipe +recipe finished, closing ledger +ledger closed +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; +SET row_security = off; + +SET search_path = public, pg_catalog; + +DROP INDEX IF EXISTS public.signersaccount; +DROP INDEX IF EXISTS public.sellingissuerindex; +DROP INDEX IF EXISTS public.scpquorumsbyseq; +DROP INDEX IF EXISTS public.scpenvsbyseq; +DROP INDEX IF EXISTS public.priceindex; +DROP INDEX IF EXISTS public.ledgersbyseq; +DROP INDEX IF EXISTS public.histfeebyseq; +DROP INDEX IF EXISTS public.histbyseq; +DROP INDEX IF EXISTS public.buyingissuerindex; +DROP INDEX IF EXISTS public.accountbalances; +ALTER TABLE IF EXISTS ONLY public.txhistory DROP CONSTRAINT IF EXISTS txhistory_pkey; +ALTER TABLE IF EXISTS ONLY public.txfeehistory DROP CONSTRAINT IF EXISTS txfeehistory_pkey; +ALTER TABLE IF EXISTS ONLY public.trustlines DROP CONSTRAINT IF EXISTS trustlines_pkey; +ALTER TABLE IF EXISTS ONLY public.storestate DROP CONSTRAINT IF EXISTS storestate_pkey; +ALTER TABLE IF EXISTS ONLY public.signers DROP CONSTRAINT IF EXISTS signers_pkey; +ALTER TABLE IF EXISTS ONLY public.scpquorums DROP CONSTRAINT IF EXISTS scpquorums_pkey; +ALTER TABLE IF EXISTS ONLY public.pubsub DROP CONSTRAINT IF EXISTS pubsub_pkey; +ALTER TABLE IF EXISTS ONLY public.publishqueue DROP CONSTRAINT IF EXISTS publishqueue_pkey; +ALTER TABLE IF EXISTS ONLY public.peers DROP CONSTRAINT IF EXISTS peers_pkey; +ALTER TABLE IF EXISTS ONLY public.offers DROP CONSTRAINT IF EXISTS offers_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_ledgerseq_key; +ALTER TABLE IF EXISTS ONLY public.ban DROP CONSTRAINT IF EXISTS ban_pkey; +ALTER TABLE IF EXISTS ONLY public.accounts DROP CONSTRAINT IF EXISTS accounts_pkey; +ALTER TABLE IF EXISTS ONLY public.accountdata DROP CONSTRAINT IF EXISTS accountdata_pkey; +DROP TABLE IF EXISTS public.txhistory; +DROP TABLE IF EXISTS public.txfeehistory; +DROP TABLE IF EXISTS public.trustlines; +DROP TABLE IF EXISTS public.storestate; +DROP TABLE IF EXISTS public.signers; +DROP TABLE IF EXISTS public.scpquorums; +DROP TABLE IF EXISTS public.scphistory; +DROP TABLE IF EXISTS public.pubsub; +DROP TABLE IF EXISTS public.publishqueue; +DROP TABLE IF EXISTS public.peers; +DROP TABLE IF EXISTS public.offers; +DROP TABLE IF EXISTS public.ledgerheaders; +DROP TABLE IF EXISTS public.ban; +DROP TABLE IF EXISTS public.accounts; +DROP TABLE IF EXISTS public.accountdata; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: accountdata; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accountdata ( + accountid character varying(56) NOT NULL, + dataname character varying(64) NOT NULL, + datavalue character varying(112) NOT NULL, + lastmodified integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accounts ( + accountid character varying(56) NOT NULL, + balance bigint NOT NULL, + seqnum bigint NOT NULL, + numsubentries integer NOT NULL, + inflationdest character varying(56), + homedomain character varying(32) NOT NULL, + thresholds text NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT accounts_balance_check CHECK ((balance >= 0)), + CONSTRAINT accounts_numsubentries_check CHECK ((numsubentries >= 0)) +); + + +-- +-- Name: ban; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ban ( + nodeid character(56) NOT NULL +); + + +-- +-- Name: ledgerheaders; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ledgerheaders ( + ledgerhash character(64) NOT NULL, + prevhash character(64) NOT NULL, + bucketlisthash character(64) NOT NULL, + ledgerseq integer, + closetime bigint NOT NULL, + data text NOT NULL, + CONSTRAINT ledgerheaders_closetime_check CHECK ((closetime >= 0)), + CONSTRAINT ledgerheaders_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: offers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE offers ( + sellerid character varying(56) NOT NULL, + offerid bigint NOT NULL, + sellingassettype integer NOT NULL, + sellingassetcode character varying(12), + sellingissuer character varying(56), + buyingassettype integer NOT NULL, + buyingassetcode character varying(12), + buyingissuer character varying(56), + amount bigint NOT NULL, + pricen integer NOT NULL, + priced integer NOT NULL, + price double precision NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT offers_amount_check CHECK ((amount >= 0)), + CONSTRAINT offers_offerid_check CHECK ((offerid >= 0)) +); + + +-- +-- Name: peers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE peers ( + ip character varying(15) NOT NULL, + port integer DEFAULT 0 NOT NULL, + nextattempt timestamp without time zone NOT NULL, + numfailures integer DEFAULT 0 NOT NULL, + CONSTRAINT peers_numfailures_check CHECK ((numfailures >= 0)), + CONSTRAINT peers_port_check CHECK (((port > 0) AND (port <= 65535))) +); + + +-- +-- Name: publishqueue; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE publishqueue ( + ledger integer NOT NULL, + state text +); + + +-- +-- Name: pubsub; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE pubsub ( + resid character(32) NOT NULL, + lastread integer +); + + +-- +-- Name: scphistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scphistory ( + nodeid character(56) NOT NULL, + ledgerseq integer NOT NULL, + envelope text NOT NULL, + CONSTRAINT scphistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: scpquorums; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scpquorums ( + qsethash character(64) NOT NULL, + lastledgerseq integer NOT NULL, + qset text NOT NULL, + CONSTRAINT scpquorums_lastledgerseq_check CHECK ((lastledgerseq >= 0)) +); + + +-- +-- Name: signers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE signers ( + accountid character varying(56) NOT NULL, + publickey character varying(56) NOT NULL, + weight integer NOT NULL +); + + +-- +-- Name: storestate; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE storestate ( + statename character(32) NOT NULL, + state text +); + + +-- +-- Name: trustlines; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE trustlines ( + accountid character varying(56) NOT NULL, + assettype integer NOT NULL, + issuer character varying(56) NOT NULL, + assetcode character varying(12) NOT NULL, + tlimit bigint NOT NULL, + balance bigint NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT trustlines_balance_check CHECK ((balance >= 0)), + CONSTRAINT trustlines_tlimit_check CHECK ((tlimit > 0)) +); + + +-- +-- Name: txfeehistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txfeehistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txchanges text NOT NULL, + CONSTRAINT txfeehistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: txhistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txhistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txbody text NOT NULL, + txresult text NOT NULL, + txmeta text NOT NULL, + CONSTRAINT txhistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Data for Name: accountdata; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO accounts VALUES ('GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 999999969999999700, 3, 0, NULL, '', 'AQAAAA==', 0, 2); +INSERT INTO accounts VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 9999999900, 8589934593, 1, NULL, '', 'AQAAAA==', 0, 4); +INSERT INTO accounts VALUES ('GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 9999999900, 8589934593, 1, NULL, '', 'AQAAAA==', 0, 5); +INSERT INTO accounts VALUES ('GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 9999999500, 8589934597, 0, NULL, '', 'AQAAAA==', 3, 8); + + +-- +-- Data for Name: ban; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: ledgerheaders; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO ledgerheaders VALUES ('63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', '0000000000000000000000000000000000000000000000000000000000000000', '572a2e32ff248a07b0e70fd1f6d318c1facd20b6cc08c33d5775259868125a16', 1, 0, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXKi4y/ySKB7DnD9H20xjB+s0gtswIwz1XdSWYaBJaFgAAAAEN4Lazp2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAX14QAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('b26373f832f17e61bc0f5db699ec9737677bbecc7de9355c6cde003124a11179', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', '01b733cfde9f97fb8d590e1baf6ea77d8013e13006b4e13f8519346d93dc87b4', 2, 1508958210, 'AAAACGPZj1Nu5o0bJ7W4nyOvUxG3Vpok+vFAOtC1K2M7B76ZU7nPOoI7SirHEO1Sa67WumwKQ62PpQGlvJvyyQ8QGEYAAAAAWfDgAgAAAAIAAAAIAAAAAQAAAAgAAAAIAAAAAwAAJxAAAAAAj6+p+aI7JvbSfHisaUUAXhzcG+/2YWJE2bnf4zuV8i4BtzPP3p+X+41ZDhuvbqd9gBPhMAa04T+FGTRtk9yHtAAAAAIN4Lazp2QAAAAAAAAAAAEsAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('87ac89fe6bb18986dd236ce7969e10b50bc45275e585a6482754f58faad04c76', 'b26373f832f17e61bc0f5db699ec9737677bbecc7de9355c6cde003124a11179', '39884abf2a5c1b93f305bbde369e6648cedf9c7e941046f5af2ba84b8152779f', 3, 1508958211, 'AAAACLJjc/gy8X5hvA9dtpnslzdne77Mfek1XGzeADEkoRF5bPXh0h+7GUfHAFjhsrsRzkI04gAcResKw2D68+Wv28YAAAAAWfDgAwAAAAAAAAAATlvjBWe7MinR9n7UosajCKxUpgQMBBbhmF6bHAvPHGU5iEq/Klwbk/MFu942nmZIzt+cfpQQRvWvK6hLgVJ3nwAAAAMN4Lazp2QAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('51a94b30c1d260da38491841c550d41a77f264a3358b668eb0a9cbb758919ce4', '87ac89fe6bb18986dd236ce7969e10b50bc45275e585a6482754f58faad04c76', '00ce11e04988fb9a1fadb6c999179272245d00148f1f7bfbee5af6e1f55b5155', 4, 1508958212, 'AAAACIesif5rsYmG3SNs55aeELULxFJ15YWmSCdU9Y+q0Ex2o3/3uB/kPg1ae/txXLaNhYiraqZvlKWE7aB6xyf8wksAAAAAWfDgBAAAAAAAAAAALLKPbMojH+RR+TSBDKGB/tufH2mL12ccCHr1Jn27yPAAzhHgSYj7mh+ttsmZF5JyJF0AFI8fe/vuWvbh9VtRVQAAAAQN4Lazp2QAAAAAAAAAAAJYAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('241852235837748d10d9ccb3bda0e18cc701234d93ac090c39ea5e3c16d06771', '51a94b30c1d260da38491841c550d41a77f264a3358b668eb0a9cbb758919ce4', '9c00f2d58fdd33ebdd9a14c33fb09066476ac4ca6591d0520777f798ac32dd75', 5, 1508958213, 'AAAACFGpSzDB0mDaOEkYQcVQ1Bp38mSjNYtmjrCpy7dYkZzkPm+Qw0P9/ndYMBKNjyZDyQGMg8uvFMUlcNyzoTIiFLoAAAAAWfDgBQAAAAAAAAAAxlJuyWie0d1LzUCR1K4LD2g+0KuAHvbJ+SgmGHyguLWcAPLVj90z692aFMM/sJBmR2rEymWR0FIHd/eYrDLddQAAAAUN4Lazp2QAAAAAAAAAAAK8AAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('f33f727579dc777f6555eb41d4d72d23301fd3b2cfcb97ee8e0a1480e6df75df', '241852235837748d10d9ccb3bda0e18cc701234d93ac090c39ea5e3c16d06771', 'e8c8563156d6d2d1ca35a3b3eb520fc34fd1eca0dd822e72b3bdf7880e02181f', 6, 1508958214, 'AAAACCQYUiNYN3SNENnMs72g4YzHASNNk6wJDDnqXjwW0Gdxe7eQODUpcz6EVN+qlv8IxW6AI5CwWR5SofBzFcK4PYMAAAAAWfDgBgAAAAAAAAAAFp2fvkMO7OW+Jq1zFYvyIp0pN6KM6DetMmxOjZVOCKfoyFYxVtbS0co1o7PrUg/DT9HsoN2CLnKzvfeIDgIYHwAAAAYN4Lazp2QAAAAAAAAAAAMgAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('53ecd565b7d1ca4a9b2a2b44273239bad97205f807bda988ac93458b2dc0235c', 'f33f727579dc777f6555eb41d4d72d23301fd3b2cfcb97ee8e0a1480e6df75df', '98f53fc9f25f194602769ef1cf82c3812d7894b7ff34a1b088b8d610fb993e1d', 7, 1508958215, 'AAAACPM/cnV53Hd/ZVXrQdTXLSMwH9Oyz8uX7o4KFIDm33XfF4QJ1upY2lNjYz05I1nMghW7gGEzUMATx0KYinUl+DwAAAAAWfDgBwAAAAAAAAAA2F0xW7K6lNYrXRzu7d5HyBUnPlumNFQipNBwSQNAx1KY9T/J8l8ZRgJ2nvHPgsOBLXiUt/80obCIuNYQ+5k+HQAAAAcN4Lazp2QAAAAAAAAAAAOEAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('f4a0f437dde77d0758c728a345feea6a1caf3d254f433a02efa5a9a61c64917e', '53ecd565b7d1ca4a9b2a2b44273239bad97205f807bda988ac93458b2dc0235c', 'c9d1407eb6f6d1bcbfe6af0babe9300b8169ab0cbfbe15fa6fa1121e63369049', 8, 1508958216, 'AAAACFPs1WW30cpKmyorRCcyObrZcgX4B72piKyTRYstwCNcmD+3vjHm4Ynk3qvNwB0eyMwfRa+ERUvii1nAeKj1pcIAAAAAWfDgCAAAAAAAAAAA17tytOKBxgu8yeo5X/akyYnyYlyrUb7gJWE+zfCgC2DJ0UB+tvbRvL/mrwur6TALgWmrDL++FfpvoRIeYzaQSQAAAAgN4Lazp2QAAAAAAAAAAAPoAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('6968bacfd99766544a7f8e4a3b2cb340acbe580a9a55f5c8899e274d63b2b028', 'f4a0f437dde77d0758c728a345feea6a1caf3d254f433a02efa5a9a61c64917e', 'c9d1407eb6f6d1bcbfe6af0babe9300b8169ab0cbfbe15fa6fa1121e63369049', 9, 1508958217, 'AAAACPSg9Dfd530HWMcoo0X+6mocrz0lT0M6Au+lqaYcZJF+SCRfofp6UdEjmOnD6I9V4sFpfkmJqObmUZBn+l/EZpMAAAAAWfDgCQAAAAAAAAAA3z9hmASpL9tAVxktxD3XSOp3itxSvEmM6AUkwBS4ERnJ0UB+tvbRvL/mrwur6TALgWmrDL++FfpvoRIeYzaQSQAAAAkN4Lazp2QAAAAAAAAAAAPoAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); + + +-- +-- Data for Name: offers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: peers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: publishqueue; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: pubsub; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: scphistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scphistory VALUES ('GA6JRXBZOF2TKRJIPC4DIXZP7ALUFCIVVF67IBJH5O5TC67ZKGGNFCSH', 2, 'AAAAADyY3DlxdTVFKHi4NF8v+BdCiRWpffQFJ+u7MXv5UYzSAAAAAAAAAAIAAAACAAAAAQAAAEhTuc86gjtKKscQ7VJrrta6bApDrY+lAaW8m/LJDxAYRgAAAABZ8OACAAAAAgAAAAgAAAABAAAACAAAAAgAAAADAAAnEAAAAAAAAAAB9GksiPwNMoN8wUoZBL/sNgkTcu6wY532eMZaq3XDqIUAAABAzG2vAJQ3jaNzRedvFcA1iu/XtxzX0orgdf0DMGRIYpqKNn/Acst4hxYbmvv9QzZZEB8Fpz7EhKMhm1kZ7G+rCA=='); +INSERT INTO scphistory VALUES ('GA6JRXBZOF2TKRJIPC4DIXZP7ALUFCIVVF67IBJH5O5TC67ZKGGNFCSH', 3, 'AAAAADyY3DlxdTVFKHi4NF8v+BdCiRWpffQFJ+u7MXv5UYzSAAAAAAAAAAMAAAACAAAAAQAAADBs9eHSH7sZR8cAWOGyuxHOQjTiABxF6wrDYPrz5a/bxgAAAABZ8OADAAAAAAAAAAAAAAAB9GksiPwNMoN8wUoZBL/sNgkTcu6wY532eMZaq3XDqIUAAABA17R2Ec0mFClrRZqh4Gy3MqeZDwVHasO0ZeBbs9yQW+qwhw0MyAcEJjXgKvD7/DcQUetH4ZmUhIbSfVB6UcGxAw=='); +INSERT INTO scphistory VALUES ('GA6JRXBZOF2TKRJIPC4DIXZP7ALUFCIVVF67IBJH5O5TC67ZKGGNFCSH', 4, 'AAAAADyY3DlxdTVFKHi4NF8v+BdCiRWpffQFJ+u7MXv5UYzSAAAAAAAAAAQAAAACAAAAAQAAADCjf/e4H+Q+DVp7+3Fcto2FiKtqpm+UpYTtoHrHJ/zCSwAAAABZ8OAEAAAAAAAAAAAAAAAB9GksiPwNMoN8wUoZBL/sNgkTcu6wY532eMZaq3XDqIUAAABA3f8jSPvZHQJJWmccw2qkNq9U26RQ2RZlOum+8m+UjtvXuf0wvHO++IgrPNCMhvFESrMiBTC8Y9jStEtEJx/WCA=='); +INSERT INTO scphistory VALUES ('GA6JRXBZOF2TKRJIPC4DIXZP7ALUFCIVVF67IBJH5O5TC67ZKGGNFCSH', 5, 'AAAAADyY3DlxdTVFKHi4NF8v+BdCiRWpffQFJ+u7MXv5UYzSAAAAAAAAAAUAAAACAAAAAQAAADA+b5DDQ/3+d1gwEo2PJkPJAYyDy68UxSVw3LOhMiIUugAAAABZ8OAFAAAAAAAAAAAAAAAB9GksiPwNMoN8wUoZBL/sNgkTcu6wY532eMZaq3XDqIUAAABAFIveiAjcqjJnRVT5odiWA3OqcwErhBhvbEbqLjxfvsYDZjFm5w/+dtBWRpiHMSdfdBRBe8D0xo/hpw3iJuZ6AQ=='); +INSERT INTO scphistory VALUES ('GA6JRXBZOF2TKRJIPC4DIXZP7ALUFCIVVF67IBJH5O5TC67ZKGGNFCSH', 6, 'AAAAADyY3DlxdTVFKHi4NF8v+BdCiRWpffQFJ+u7MXv5UYzSAAAAAAAAAAYAAAACAAAAAQAAADB7t5A4NSlzPoRU36qW/wjFboAjkLBZHlKh8HMVwrg9gwAAAABZ8OAGAAAAAAAAAAAAAAAB9GksiPwNMoN8wUoZBL/sNgkTcu6wY532eMZaq3XDqIUAAABAuGedZzKPCIJ4qQtzMu67ug8NuPgHNTKm4a1pj19WJ1jg1+hgqp32SOD7IqR9ebEDV2cMpBLRTdKLpqEZTFyPBQ=='); +INSERT INTO scphistory VALUES ('GA6JRXBZOF2TKRJIPC4DIXZP7ALUFCIVVF67IBJH5O5TC67ZKGGNFCSH', 7, 'AAAAADyY3DlxdTVFKHi4NF8v+BdCiRWpffQFJ+u7MXv5UYzSAAAAAAAAAAcAAAACAAAAAQAAADAXhAnW6ljaU2NjPTkjWcyCFbuAYTNQwBPHQpiKdSX4PAAAAABZ8OAHAAAAAAAAAAAAAAAB9GksiPwNMoN8wUoZBL/sNgkTcu6wY532eMZaq3XDqIUAAABAH1aw7SF/aRU/Ijd/yw7tCnfJhITHSCa78zU4aGanbMx456ibT+BvlAhbwMxVtCNTSqCszCY3Jb+8FsW8JnqxAw=='); +INSERT INTO scphistory VALUES ('GA6JRXBZOF2TKRJIPC4DIXZP7ALUFCIVVF67IBJH5O5TC67ZKGGNFCSH', 8, 'AAAAADyY3DlxdTVFKHi4NF8v+BdCiRWpffQFJ+u7MXv5UYzSAAAAAAAAAAgAAAACAAAAAQAAADCYP7e+MebhieTeq83AHR7IzB9Fr4RFS+KLWcB4qPWlwgAAAABZ8OAIAAAAAAAAAAAAAAAB9GksiPwNMoN8wUoZBL/sNgkTcu6wY532eMZaq3XDqIUAAABAr0hn3QGBLQ+sT5BhTeNws9olWPzNp5q6HWIURdk0Q40UxeS41RF1T+jSrvPBZ52/7pstctcPvhsH8mAT45pcDA=='); +INSERT INTO scphistory VALUES ('GA6JRXBZOF2TKRJIPC4DIXZP7ALUFCIVVF67IBJH5O5TC67ZKGGNFCSH', 9, 'AAAAADyY3DlxdTVFKHi4NF8v+BdCiRWpffQFJ+u7MXv5UYzSAAAAAAAAAAkAAAACAAAAAQAAADBIJF+h+npR0SOY6cPoj1XiwWl+SYmo5uZRkGf6X8RmkwAAAABZ8OAJAAAAAAAAAAAAAAAB9GksiPwNMoN8wUoZBL/sNgkTcu6wY532eMZaq3XDqIUAAABAM8LneZdCjXviJUyx9N9Fy7xd6QsE6rKJKRlP8Fpxrl4R9jN4EtO3G1KcB4cGwGFi7AT4vM/H16Rh/is2Iu/sCQ=='); + + +-- +-- Data for Name: scpquorums; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scpquorums VALUES ('f4692c88fc0d32837cc14a1904bfec36091372eeb0639df678c65aab75c3a885', 9, 'AAAAAQAAAAEAAAAAPJjcOXF1NUUoeLg0Xy/4F0KJFal99AUn67sxe/lRjNIAAAAA'); + + +-- +-- Data for Name: signers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: storestate; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO storestate VALUES ('lastclosedledger ', '6968bacfd99766544a7f8e4a3b2cb340acbe580a9a55f5c8899e274d63b2b028'); +INSERT INTO storestate VALUES ('historyarchivestate ', '{ + "version": 1, + "server": "v0.6.3-66-gd66575cf", + "currentLedger": 9, + "currentBuckets": [ + { + "curr": "7143480fc84788c095e494cd2844321a62ce81d2e1d3ba6c15b9ac5d6bfe5848", + "next": { + "state": 0 + }, + "snap": "5fbe1e53bf079fb1745944c3b0eb066c16f2934238ae0c1595fdf6bdabf709c8" + }, + { + "curr": "119e94eda9f771a7917b37dc2a53fcdd55de1fd33f3ffebff65ee207b4947213", + "next": { + "state": 1, + "output": "3a47c2d0cba5d3c8e84a8c739cab7a661dd1d13898ad9c4ae6281dc996c574c0" + }, + "snap": "5d0267c5830128805375bd61c17d3b41edc594f0c0d0c520b0f57776624eaa50" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 1, + "output": "85d70ff8507c4a08f80fed6c67c989ce8b4515db24cd1c1e5bd36dccbc8c43e2" + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + } + ] +}'); +INSERT INTO storestate VALUES ('databaseschema ', '5'); +INSERT INTO storestate VALUES ('forcescponnextlaunch ', 'false'); +INSERT INTO storestate VALUES ('lastscpdata ', 'AAAAAgAAAAA8mNw5cXU1RSh4uDRfL/gXQokVqX30BSfruzF7+VGM0gAAAAAAAAAJAAAAA/RpLIj8DTKDfMFKGQS/7DYJE3LusGOd9njGWqt1w6iFAAAAAQAAADBIJF+h+npR0SOY6cPoj1XiwWl+SYmo5uZRkGf6X8RmkwAAAABZ8OAJAAAAAAAAAAAAAAABAAAAMEgkX6H6elHRI5jpw+iPVeLBaX5Jiajm5lGQZ/pfxGaTAAAAAFnw4AkAAAAAAAAAAAAAAEAV30PryXKLLzk9HQFQ+Ii9B6toEjGdjZ9ddF3VGs3ZCPYftraswziZ6mEUFUiQy5efEM60klK0nlO28SBY2+4OAAAAADyY3DlxdTVFKHi4NF8v+BdCiRWpffQFJ+u7MXv5UYzSAAAAAAAAAAkAAAACAAAAAQAAADBIJF+h+npR0SOY6cPoj1XiwWl+SYmo5uZRkGf6X8RmkwAAAABZ8OAJAAAAAAAAAAAAAAAB9GksiPwNMoN8wUoZBL/sNgkTcu6wY532eMZaq3XDqIUAAABAM8LneZdCjXviJUyx9N9Fy7xd6QsE6rKJKRlP8Fpxrl4R9jN4EtO3G1KcB4cGwGFi7AT4vM/H16Rh/is2Iu/sCQAAAAH0oPQ33ed9B1jHKKNF/upqHK89JU9DOgLvpammHGSRfgAAAAAAAAABAAAAAQAAAAEAAAAAPJjcOXF1NUUoeLg0Xy/4F0KJFal99AUn67sxe/lRjNIAAAAA'); + + +-- +-- Data for Name: trustlines; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO trustlines VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 1, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 'USD', 9223372036854775807, 0, 1, 6); +INSERT INTO trustlines VALUES ('GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 1, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 'USD', 40000000000, 0, 0, 8); + + +-- +-- Data for Name: txfeehistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txfeehistory VALUES ('db398eb4ae89756325643cad21c94e13bfc074b323ee83e141bf701a5d904f1b', 2, 1, 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('f97caffab8c16023a37884165cb0b3ff1aa2daf4000fef49d21efc847ddbfbea', 2, 2, 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/84AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('90880ac53815dac8441add0220a7631ef5eac3d57c2e89634ea9b5203f61a8e4', 2, 3, 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/7UAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('7a707186a5cc36a0e520548ae511b53896c0391ce166d40da80588cbaae6aa2c', 3, 1, 'AAAAAgAAAAMAAAACAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('c6bfdd93f1470df9dfa3ef95d57ba28cecace068d9f2bb040a79ffc7c5d96cb9', 3, 2, 'AAAAAQAAAAEAAAADAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+M4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('bd486dbdd02d460817671c4a5a7e9d6e865ca29cb41e62d7aaf70a2fee5b36de', 4, 1, 'AAAAAgAAAAMAAAACAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('b55d768a4e8e712da20efdee0e7d85f02948f9b6fd3ef2daefd3a5a147ecd63d', 5, 1, 'AAAAAgAAAAMAAAACAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('3b666a253313fc7a0d241ee28064eec78aaa5ebd0a7c0ae7f85259e80fad029f', 6, 1, 'AAAAAgAAAAMAAAADAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+M4AAAAAgAAAAIAAAAAAAAAAAAAAAMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+LUAAAAAgAAAAMAAAAAAAAAAAAAAAMAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('3f2aa00ba539e24ba9c0ba62f50318d8c7180f2d6757cc76e9984055c5e19ff4', 7, 1, 'AAAAAgAAAAMAAAAGAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+LUAAAAAgAAAAMAAAAAAAAAAAAAAAMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAHAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+JwAAAAAgAAAAQAAAAAAAAAAAAAAAMAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('3ce9fc1159c25adc62c9686792cd41f06908280b899744057856db33bafe75de', 8, 1, 'AAAAAgAAAAMAAAAHAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+JwAAAAAgAAAAQAAAAAAAAAAAAAAAMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAIAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+IMAAAAAgAAAAUAAAAAAAAAAAAAAAMAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); + + +-- +-- Data for Name: txhistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txhistory VALUES ('db398eb4ae89756325643cad21c94e13bfc074b323ee83e141bf701a5d904f1b', 2, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACVAvkAAAAAAAAAAABVvwF9wAAAEAYjQcPT2G5hqnBmgGGeg9J8l4c1EnUlxklElH9sqZr0971F6OLWfe/m4kpFtI+sI0i1qLit5A0JyWnbhYLW5oD', '2zmOtK6JdWMlZDytIclOE7/AdLMj7oPhQb9wGl2QTxsAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2sVNYGtQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('f97caffab8c16023a37884165cb0b3ff1aa2daf4000fef49d21efc847ddbfbea', 2, 2, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAACVAvkAAAAAAAAAAABVvwF9wAAAEBmKpSgvrwKO20XCOfYfXsGEEUtwYaaEfqSu6ymJmlDma+IX6I7IggbUZMocQdZ94IMAfKdQANqXbIO7ysweeMC', '+Xyv+rjBYCOjeIQWXLCz/xqi2vQAD+9J0h78hH3b++oAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rv9MNtQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('90880ac53815dac8441add0220a7631ef5eac3d57c2e89634ea9b5203f61a8e4', 2, 3, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAACVAvkAAAAAAAAAAABVvwF9wAAAEBdX4R/Ghzq8/r+u8PL+sNriHsS5lW1Vt+9eCe0nnWMNTzMgcUbarePbrpD2gr8DjVumcmpVH9wG2GXtWvwzXoL', 'kIgKxTgV2shEGt0CIKdjHvXqw9V8LoljTqm1ID9hqOQAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rKtAUtQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('7a707186a5cc36a0e520548ae511b53896c0391ce166d40da80588cbaae6aa2c', 3, 1, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+ZAt7wAAAEDBhDOsFWP2KCoZuJDRXuiNm0CjgVKLLtdZi/A3OfrCsgvX8izhAllXkRqrXyitSvGo3kQh6V/S/tnQbrYgHQQG', 'enBxhqXMNqDlIFSK5RG1OJbAORzhZtQNqAWIy6rmqiwAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAAAMAAAAAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAlQL4zgAAAACAAAAAgAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('c6bfdd93f1470df9dfa3ef95d57ba28cecace068d9f2bb040a79ffc7c5d96cb9', 3, 2, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+ZAt7wAAAEBVJkTQTFlpFKoMhcibMpdJ5khR91LY3zPQwv/e5Ov7XIcWKGIv5sDfgyhaK/x5WYWfawNWcc5fMlW7c/PxGOQJ', 'xr/dk/FHDfnfo++V1XuijOys4GjZ8rsECnn/x8XZbLkAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAAAMAAAAAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAlQL4zgAAAACAAAAAgAAAAAAAAAAAAAAAwAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('bd486dbdd02d460817671c4a5a7e9d6e865ca29cb41e62d7aaf70a2fee5b36de', 4, 1, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAGu5L5MAAAAQB9kmKW2q3v7Qfy8PMekEb1TTI5ixqkI0BogXrOt7gO162Qbkh2dSTUfeDovc0PAafhDXxthVAlsLujlBmyjBAY=', 'vUhtvdAtRggXZxxKWn6dboZcopy0HmLXqvcKL+5bNt4AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL45wAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('b55d768a4e8e712da20efdee0e7d85f02948f9b6fd3ef2daefd3a5a147ecd63d', 5, 1, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAlQL5AAAAAAAAAAAAFvFIhaAAAAQBlpm/6rv5JvbN2AKUSlH+4idIlX0cM678QXxK+il0u7z3KLORdzKSkLnS5WdLZlAB6iDmoKI5WbydQLktNtDQA=', 'tV12ik6OcS2iDv3uDn2F8ClI+bb9PvLa79OloUfs1j0AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAAAAAAlQL5AAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAlQL45wAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('3b666a253313fc7a0d241ee28064eec78aaa5ebd0a7c0ae7f85259e80fad029f', 6, 1, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAcAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAABVVNEAAAAAAEAAAAAAAAAAfmQLe8AAABAL6czYFvSBhdVeD4fbXOHuXFa2CDqLpFfc+QJnoiPLt/23YViURGLyfg388FKMKsbNJEgmFsCJjtgl3fj7wr/Aw==', 'O2ZqJTMT/HoNJB7igGTux4qqXr0KfArn+FJZ6A+tAp8AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAcAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAAAAAAAAAAAAAAAAAQAAAAYAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('3f2aa00ba539e24ba9c0ba62f50318d8c7180f2d6757cc76e9984055c5e19ff4', 7, 1, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAcAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAABVVNEAAAAAAEAAAAAAAAAAfmQLe8AAABA1TAQBu/2f7XHs/ctAJ5W7Ytk4jvQBopdO05zkSQoS8piu1mZm/tTvDTXEq/QUufpt/E8NBgKtNpcJXuMv5aPCw==', 'PyqgC6U54kupwLpi9QMY2McYDy1nV8x26ZhAVcXhn/QAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAcAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAUAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAAAAAAlQL5AAAAAAAAAAAAAAAAAAAAAAAQAAAAcAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAAAAAAlQL5AAAAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('3ce9fc1159c25adc62c9686792cd41f06908280b899744057856db33bafe75de', 8, 1, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAcAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAABVVNEAAAAAAAAAAAAAAAAAfmQLe8AAABASafHp/zp11tF81MRvbAnx9gQNTXdLW4DmoIofkgoG+jJw/Xj/k+N5WvSjqGrGF33uB6KnD+wAfQIhf0/DlxpBQ==', 'POn8EVnCWtxiyWhnks1B8GkIKAuJl0QFeFbbM7r+dd4AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAcAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAcAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAAAAAAlQL5AAAAAAAQAAAAAAAAAAAAAAAQAAAAgAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAAAAAAlQL5AAAAAAAAAAAAAAAAAA'); + + +-- +-- Name: accountdata accountdata_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accountdata + ADD CONSTRAINT accountdata_pkey PRIMARY KEY (accountid, dataname); + + +-- +-- Name: accounts accounts_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accounts + ADD CONSTRAINT accounts_pkey PRIMARY KEY (accountid); + + +-- +-- Name: ban ban_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ban + ADD CONSTRAINT ban_pkey PRIMARY KEY (nodeid); + + +-- +-- Name: ledgerheaders ledgerheaders_ledgerseq_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_ledgerseq_key UNIQUE (ledgerseq); + + +-- +-- Name: ledgerheaders ledgerheaders_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_pkey PRIMARY KEY (ledgerhash); + + +-- +-- Name: offers offers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY offers + ADD CONSTRAINT offers_pkey PRIMARY KEY (offerid); + + +-- +-- Name: peers peers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY peers + ADD CONSTRAINT peers_pkey PRIMARY KEY (ip, port); + + +-- +-- Name: publishqueue publishqueue_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY publishqueue + ADD CONSTRAINT publishqueue_pkey PRIMARY KEY (ledger); + + +-- +-- Name: pubsub pubsub_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY pubsub + ADD CONSTRAINT pubsub_pkey PRIMARY KEY (resid); + + +-- +-- Name: scpquorums scpquorums_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY scpquorums + ADD CONSTRAINT scpquorums_pkey PRIMARY KEY (qsethash); + + +-- +-- Name: signers signers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY signers + ADD CONSTRAINT signers_pkey PRIMARY KEY (accountid, publickey); + + +-- +-- Name: storestate storestate_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY storestate + ADD CONSTRAINT storestate_pkey PRIMARY KEY (statename); + + +-- +-- Name: trustlines trustlines_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY trustlines + ADD CONSTRAINT trustlines_pkey PRIMARY KEY (accountid, issuer, assetcode); + + +-- +-- Name: txfeehistory txfeehistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txfeehistory + ADD CONSTRAINT txfeehistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: txhistory txhistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txhistory + ADD CONSTRAINT txhistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: accountbalances; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX accountbalances ON accounts USING btree (balance) WHERE (balance >= 1000000000); + + +-- +-- Name: buyingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX buyingissuerindex ON offers USING btree (buyingissuer); + + +-- +-- Name: histbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histbyseq ON txhistory USING btree (ledgerseq); + + +-- +-- Name: histfeebyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histfeebyseq ON txfeehistory USING btree (ledgerseq); + + +-- +-- Name: ledgersbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX ledgersbyseq ON ledgerheaders USING btree (ledgerseq); + + +-- +-- Name: priceindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX priceindex ON offers USING btree (price); + + +-- +-- Name: scpenvsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpenvsbyseq ON scphistory USING btree (ledgerseq); + + +-- +-- Name: scpquorumsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpquorumsbyseq ON scpquorums USING btree (lastledgerseq); + + +-- +-- Name: sellingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX sellingissuerindex ON offers USING btree (sellingissuer); + + +-- +-- Name: signersaccount; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX signersaccount ON signers USING btree (accountid); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/allow_trust-horizon.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/allow_trust-horizon.sql new file mode 100644 index 0000000..906ff3c --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/allow_trust-horizon.sql @@ -0,0 +1,823 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; + +SET search_path = public, pg_catalog; + +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_account_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_account_id_fkey; +DROP INDEX IF EXISTS public.trade_effects_by_order_book; +DROP INDEX IF EXISTS public.index_history_transactions_on_id; +DROP INDEX IF EXISTS public.index_history_operations_on_type; +DROP INDEX IF EXISTS public.index_history_operations_on_transaction_id; +DROP INDEX IF EXISTS public.index_history_operations_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_sequence; +DROP INDEX IF EXISTS public.index_history_ledgers_on_previous_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_importer_version; +DROP INDEX IF EXISTS public.index_history_ledgers_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_closed_at; +DROP INDEX IF EXISTS public.index_history_effects_on_type; +DROP INDEX IF EXISTS public.index_history_accounts_on_id; +DROP INDEX IF EXISTS public.index_history_accounts_on_address; +DROP INDEX IF EXISTS public.htrd_time_lookup; +DROP INDEX IF EXISTS public.htrd_pid; +DROP INDEX IF EXISTS public.htrd_pair_time_lookup; +DROP INDEX IF EXISTS public.htrd_counter_lookup; +DROP INDEX IF EXISTS public.htrd_by_offer; +DROP INDEX IF EXISTS public.htp_by_htid; +DROP INDEX IF EXISTS public.hs_transaction_by_id; +DROP INDEX IF EXISTS public.hs_ledger_by_id; +DROP INDEX IF EXISTS public.hop_by_hoid; +DROP INDEX IF EXISTS public.hist_tx_p_id; +DROP INDEX IF EXISTS public.hist_op_p_id; +DROP INDEX IF EXISTS public.hist_e_id; +DROP INDEX IF EXISTS public.hist_e_by_order; +DROP INDEX IF EXISTS public.by_ledger; +DROP INDEX IF EXISTS public.by_hash; +DROP INDEX IF EXISTS public.by_account; +DROP INDEX IF EXISTS public.asset_by_issuer; +ALTER TABLE IF EXISTS ONLY public.history_transaction_participants DROP CONSTRAINT IF EXISTS history_transaction_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_operation_participants DROP CONSTRAINT IF EXISTS history_operation_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_asset_code_asset_type_asset_issuer_key; +ALTER TABLE IF EXISTS ONLY public.gorp_migrations DROP CONSTRAINT IF EXISTS gorp_migrations_pkey; +ALTER TABLE IF EXISTS public.history_transaction_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_operation_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_assets ALTER COLUMN id DROP DEFAULT; +DROP TABLE IF EXISTS public.history_transactions; +DROP SEQUENCE IF EXISTS public.history_transaction_participants_id_seq; +DROP TABLE IF EXISTS public.history_transaction_participants; +DROP TABLE IF EXISTS public.history_trades; +DROP TABLE IF EXISTS public.history_operations; +DROP SEQUENCE IF EXISTS public.history_operation_participants_id_seq; +DROP TABLE IF EXISTS public.history_operation_participants; +DROP TABLE IF EXISTS public.history_ledgers; +DROP TABLE IF EXISTS public.history_effects; +DROP SEQUENCE IF EXISTS public.history_assets_id_seq; +DROP TABLE IF EXISTS public.history_assets; +DROP TABLE IF EXISTS public.history_accounts; +DROP SEQUENCE IF EXISTS public.history_accounts_id_seq; +DROP TABLE IF EXISTS public.gorp_migrations; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: gorp_migrations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE gorp_migrations ( + id text NOT NULL, + applied_at timestamp with time zone +); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_accounts_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_accounts ( + id bigint DEFAULT nextval('history_accounts_id_seq'::regclass) NOT NULL, + address character varying(64) +); + + +-- +-- Name: history_assets; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_assets ( + id integer NOT NULL, + asset_type character varying(64) NOT NULL, + asset_code character varying(12) NOT NULL, + asset_issuer character varying(56) NOT NULL +); + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_assets_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_assets_id_seq OWNED BY history_assets.id; + + +-- +-- Name: history_effects; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_effects ( + history_account_id bigint NOT NULL, + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + type integer NOT NULL, + details jsonb +); + + +-- +-- Name: history_ledgers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_ledgers ( + sequence integer NOT NULL, + ledger_hash character varying(64) NOT NULL, + previous_ledger_hash character varying(64), + transaction_count integer DEFAULT 0 NOT NULL, + operation_count integer DEFAULT 0 NOT NULL, + closed_at timestamp without time zone NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + importer_version integer DEFAULT 1 NOT NULL, + total_coins bigint NOT NULL, + fee_pool bigint NOT NULL, + base_fee integer NOT NULL, + base_reserve integer NOT NULL, + max_tx_set_size integer NOT NULL, + protocol_version integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: history_operation_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operation_participants ( + id integer NOT NULL, + history_operation_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_operation_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_operation_participants_id_seq OWNED BY history_operation_participants.id; + + +-- +-- Name: history_operations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operations ( + id bigint NOT NULL, + transaction_id bigint NOT NULL, + application_order integer NOT NULL, + type integer NOT NULL, + details jsonb, + source_account character varying(64) DEFAULT ''::character varying NOT NULL +); + + +-- +-- Name: history_trades; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_trades ( + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + ledger_closed_at timestamp without time zone NOT NULL, + offer_id bigint NOT NULL, + base_account_id bigint NOT NULL, + base_asset_id bigint NOT NULL, + base_amount bigint NOT NULL, + counter_account_id bigint NOT NULL, + counter_asset_id bigint NOT NULL, + counter_amount bigint NOT NULL, + base_is_seller boolean, + CONSTRAINT history_trades_base_amount_check CHECK ((base_amount > 0)), + CONSTRAINT history_trades_check CHECK ((base_asset_id < counter_asset_id)), + CONSTRAINT history_trades_counter_amount_check CHECK ((counter_amount > 0)) +); + + +-- +-- Name: history_transaction_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transaction_participants ( + id integer NOT NULL, + history_transaction_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_transaction_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_transaction_participants_id_seq OWNED BY history_transaction_participants.id; + + +-- +-- Name: history_transactions; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transactions ( + transaction_hash character varying(64) NOT NULL, + ledger_sequence integer NOT NULL, + application_order integer NOT NULL, + account character varying(64) NOT NULL, + account_sequence bigint NOT NULL, + fee_paid integer NOT NULL, + operation_count integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + tx_envelope text NOT NULL, + tx_result text NOT NULL, + tx_meta text NOT NULL, + tx_fee_meta text NOT NULL, + signatures character varying(96)[] DEFAULT '{}'::character varying[] NOT NULL, + memo_type character varying DEFAULT 'none'::character varying NOT NULL, + memo character varying, + time_bounds int8range +); + + +-- +-- Name: history_assets id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets ALTER COLUMN id SET DEFAULT nextval('history_assets_id_seq'::regclass); + + +-- +-- Name: history_operation_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants ALTER COLUMN id SET DEFAULT nextval('history_operation_participants_id_seq'::regclass); + + +-- +-- Name: history_transaction_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants ALTER COLUMN id SET DEFAULT nextval('history_transaction_participants_id_seq'::regclass); + + +-- +-- Data for Name: gorp_migrations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO gorp_migrations VALUES ('1_initial_schema.sql', '2017-10-25 12:02:41.355815-07'); +INSERT INTO gorp_migrations VALUES ('2_index_participants_by_toid.sql', '2017-10-25 12:02:41.35913-07'); +INSERT INTO gorp_migrations VALUES ('3_use_sequence_in_history_accounts.sql', '2017-10-25 12:02:41.361119-07'); +INSERT INTO gorp_migrations VALUES ('4_add_protocol_version.sql', '2017-10-25 12:02:41.365998-07'); +INSERT INTO gorp_migrations VALUES ('5_create_trades_table.sql', '2017-10-25 12:02:41.370443-07'); +INSERT INTO gorp_migrations VALUES ('6_create_assets_table.sql', '2017-10-25 12:02:41.373746-07'); +INSERT INTO gorp_migrations VALUES ('7_modify_trades_table.sql', '2017-10-25 12:02:41.381902-07'); + + +-- +-- Data for Name: history_accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_accounts VALUES (1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_accounts VALUES (2, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); +INSERT INTO history_accounts VALUES (3, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_accounts VALUES (4, 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON'); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_accounts_id_seq', 4, true); + + +-- +-- Data for Name: history_assets; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_assets_id_seq', 1, false); + + +-- +-- Data for Name: history_effects; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_effects VALUES (2, 8589938689, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589938689, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (2, 8589938689, 3, 10, '{"weight": 1, "public_key": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (3, 8589942785, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589942785, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (3, 8589942785, 3, 10, '{"weight": 1, "public_key": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU"}'); +INSERT INTO history_effects VALUES (4, 8589946881, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589946881, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (4, 8589946881, 3, 10, '{"weight": 1, "public_key": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON"}'); +INSERT INTO history_effects VALUES (2, 12884905985, 1, 6, '{"auth_required_flag": true}'); +INSERT INTO history_effects VALUES (2, 12884905985, 2, 12, '{"weight": 1, "public_key": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (2, 12884910081, 1, 6, '{"auth_revocable_flag": true}'); +INSERT INTO history_effects VALUES (2, 12884910081, 2, 12, '{"weight": 1, "public_key": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (3, 17179873281, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (4, 21474840577, 1, 20, '{"limit": "4000.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (2, 25769807873, 1, 23, '{"trustor": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (2, 30064775169, 1, 23, '{"trustor": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (2, 34359742465, 1, 24, '{"trustor": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); + + +-- +-- Data for Name: history_ledgers; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_ledgers VALUES (1, '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', NULL, 0, 0, '1970-01-01 00:00:00', '2017-10-25 19:03:33.167654', '2017-10-25 19:03:33.167654', 4294967296, 10, 1000000000000000000, 0, 100, 100000000, 100, 0); +INSERT INTO history_ledgers VALUES (2, 'b26373f832f17e61bc0f5db699ec9737677bbecc7de9355c6cde003124a11179', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', 3, 3, '2017-10-25 19:03:30', '2017-10-25 19:03:33.173058', '2017-10-25 19:03:33.173058', 8589934592, 10, 1000000000000000000, 300, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (3, '87ac89fe6bb18986dd236ce7969e10b50bc45275e585a6482754f58faad04c76', 'b26373f832f17e61bc0f5db699ec9737677bbecc7de9355c6cde003124a11179', 2, 2, '2017-10-25 19:03:31', '2017-10-25 19:03:33.211549', '2017-10-25 19:03:33.211549', 12884901888, 10, 1000000000000000000, 500, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (4, '51a94b30c1d260da38491841c550d41a77f264a3358b668eb0a9cbb758919ce4', '87ac89fe6bb18986dd236ce7969e10b50bc45275e585a6482754f58faad04c76', 1, 1, '2017-10-25 19:03:32', '2017-10-25 19:03:33.223239', '2017-10-25 19:03:33.223239', 17179869184, 10, 1000000000000000000, 600, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (5, '241852235837748d10d9ccb3bda0e18cc701234d93ac090c39ea5e3c16d06771', '51a94b30c1d260da38491841c550d41a77f264a3358b668eb0a9cbb758919ce4', 1, 1, '2017-10-25 19:03:33', '2017-10-25 19:03:33.230216', '2017-10-25 19:03:33.230216', 21474836480, 10, 1000000000000000000, 700, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (6, 'f33f727579dc777f6555eb41d4d72d23301fd3b2cfcb97ee8e0a1480e6df75df', '241852235837748d10d9ccb3bda0e18cc701234d93ac090c39ea5e3c16d06771', 1, 1, '2017-10-25 19:03:34', '2017-10-25 19:03:33.238925', '2017-10-25 19:03:33.238925', 25769803776, 10, 1000000000000000000, 800, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (7, '53ecd565b7d1ca4a9b2a2b44273239bad97205f807bda988ac93458b2dc0235c', 'f33f727579dc777f6555eb41d4d72d23301fd3b2cfcb97ee8e0a1480e6df75df', 1, 1, '2017-10-25 19:03:35', '2017-10-25 19:03:33.248836', '2017-10-25 19:03:33.248836', 30064771072, 10, 1000000000000000000, 900, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (8, 'f4a0f437dde77d0758c728a345feea6a1caf3d254f433a02efa5a9a61c64917e', '53ecd565b7d1ca4a9b2a2b44273239bad97205f807bda988ac93458b2dc0235c', 1, 1, '2017-10-25 19:03:36', '2017-10-25 19:03:33.258302', '2017-10-25 19:03:33.258302', 34359738368, 10, 1000000000000000000, 1000, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (9, '6968bacfd99766544a7f8e4a3b2cb340acbe580a9a55f5c8899e274d63b2b028', 'f4a0f437dde77d0758c728a345feea6a1caf3d254f433a02efa5a9a61c64917e', 0, 0, '2017-10-25 19:03:37', '2017-10-25 19:03:33.267259', '2017-10-25 19:03:33.267259', 38654705664, 10, 1000000000000000000, 1000, 100, 100000000, 10000, 8); + + +-- +-- Data for Name: history_operation_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operation_participants VALUES (1, 8589938689, 1); +INSERT INTO history_operation_participants VALUES (2, 8589938689, 2); +INSERT INTO history_operation_participants VALUES (3, 8589942785, 1); +INSERT INTO history_operation_participants VALUES (4, 8589942785, 3); +INSERT INTO history_operation_participants VALUES (5, 8589946881, 4); +INSERT INTO history_operation_participants VALUES (6, 8589946881, 1); +INSERT INTO history_operation_participants VALUES (7, 12884905985, 2); +INSERT INTO history_operation_participants VALUES (8, 12884910081, 2); +INSERT INTO history_operation_participants VALUES (9, 17179873281, 3); +INSERT INTO history_operation_participants VALUES (10, 21474840577, 4); +INSERT INTO history_operation_participants VALUES (11, 25769807873, 2); +INSERT INTO history_operation_participants VALUES (12, 25769807873, 3); +INSERT INTO history_operation_participants VALUES (13, 30064775169, 2); +INSERT INTO history_operation_participants VALUES (14, 30064775169, 4); +INSERT INTO history_operation_participants VALUES (15, 34359742465, 2); +INSERT INTO history_operation_participants VALUES (16, 34359742465, 4); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_operation_participants_id_seq', 16, true); + + +-- +-- Data for Name: history_operations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operations VALUES (8589938689, 8589938688, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (8589942785, 8589942784, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (8589946881, 8589946880, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (12884905985, 12884905984, 1, 5, '{"set_flags": [1], "set_flags_s": ["auth_required"]}', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); +INSERT INTO history_operations VALUES (12884910081, 12884910080, 1, 5, '{"set_flags": [2], "set_flags_s": ["auth_revocable"]}', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); +INSERT INTO history_operations VALUES (17179873281, 17179873280, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "trustor": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474840577, 21474840576, 1, 6, '{"limit": "4000.0000000", "trustee": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "trustor": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON'); +INSERT INTO history_operations VALUES (25769807873, 25769807872, 1, 7, '{"trustee": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "trustor": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "authorize": true, "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); +INSERT INTO history_operations VALUES (30064775169, 30064775168, 1, 7, '{"trustee": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "trustor": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", "authorize": true, "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); +INSERT INTO history_operations VALUES (34359742465, 34359742464, 1, 7, '{"trustee": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "trustor": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", "authorize": false, "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); + + +-- +-- Data for Name: history_trades; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: history_transaction_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transaction_participants VALUES (1, 8589938688, 2); +INSERT INTO history_transaction_participants VALUES (2, 8589938688, 1); +INSERT INTO history_transaction_participants VALUES (3, 8589942784, 1); +INSERT INTO history_transaction_participants VALUES (4, 8589942784, 3); +INSERT INTO history_transaction_participants VALUES (5, 8589946880, 1); +INSERT INTO history_transaction_participants VALUES (6, 8589946880, 4); +INSERT INTO history_transaction_participants VALUES (7, 12884905984, 2); +INSERT INTO history_transaction_participants VALUES (8, 12884910080, 2); +INSERT INTO history_transaction_participants VALUES (9, 17179873280, 3); +INSERT INTO history_transaction_participants VALUES (10, 21474840576, 4); +INSERT INTO history_transaction_participants VALUES (11, 25769807872, 2); +INSERT INTO history_transaction_participants VALUES (12, 25769807872, 3); +INSERT INTO history_transaction_participants VALUES (13, 30064775168, 2); +INSERT INTO history_transaction_participants VALUES (14, 30064775168, 4); +INSERT INTO history_transaction_participants VALUES (15, 34359742464, 2); +INSERT INTO history_transaction_participants VALUES (16, 34359742464, 4); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_transaction_participants_id_seq', 16, true); + + +-- +-- Data for Name: history_transactions; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transactions VALUES ('db398eb4ae89756325643cad21c94e13bfc074b323ee83e141bf701a5d904f1b', 2, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 1, 100, 1, '2017-10-25 19:03:33.176312', '2017-10-25 19:03:33.176312', 8589938688, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACVAvkAAAAAAAAAAABVvwF9wAAAEAYjQcPT2G5hqnBmgGGeg9J8l4c1EnUlxklElH9sqZr0971F6OLWfe/m4kpFtI+sI0i1qLit5A0JyWnbhYLW5oD', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2sVNYGtQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{GI0HD09huYapwZoBhnoPSfJeHNRJ1JcZJRJR/bKma9Pe9Reji1n3v5uJKRbSPrCNItai4reQNCclp24WC1uaAw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('f97caffab8c16023a37884165cb0b3ff1aa2daf4000fef49d21efc847ddbfbea', 2, 2, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 2, 100, 1, '2017-10-25 19:03:33.194823', '2017-10-25 19:03:33.194823', 8589942784, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAACVAvkAAAAAAAAAAABVvwF9wAAAEBmKpSgvrwKO20XCOfYfXsGEEUtwYaaEfqSu6ymJmlDma+IX6I7IggbUZMocQdZ94IMAfKdQANqXbIO7ysweeMC', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rv9MNtQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/84AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{ZiqUoL68CjttFwjn2H17BhBFLcGGmhH6kruspiZpQ5mviF+iOyIIG1GTKHEHWfeCDAHynUADal2yDu8rMHnjAg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('90880ac53815dac8441add0220a7631ef5eac3d57c2e89634ea9b5203f61a8e4', 2, 3, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 3, 100, 1, '2017-10-25 19:03:33.20138', '2017-10-25 19:03:33.20138', 8589946880, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAACVAvkAAAAAAAAAAABVvwF9wAAAEBdX4R/Ghzq8/r+u8PL+sNriHsS5lW1Vt+9eCe0nnWMNTzMgcUbarePbrpD2gr8DjVumcmpVH9wG2GXtWvwzXoL', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rKtAUtQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/7UAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{XV+Efxoc6vP6/rvDy/rDa4h7EuZVtVbfvXgntJ51jDU8zIHFG2q3j266Q9oK/A41bpnJqVR/cBthl7Vr8M16Cw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('7a707186a5cc36a0e520548ae511b53896c0391ce166d40da80588cbaae6aa2c', 3, 1, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 8589934593, 100, 1, '2017-10-25 19:03:33.212097', '2017-10-25 19:03:33.212097', 12884905984, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+ZAt7wAAAEDBhDOsFWP2KCoZuJDRXuiNm0CjgVKLLtdZi/A3OfrCsgvX8izhAllXkRqrXyitSvGo3kQh6V/S/tnQbrYgHQQG', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAAAMAAAAAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAlQL4zgAAAACAAAAAgAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{wYQzrBVj9igqGbiQ0V7ojZtAo4FSiy7XWYvwNzn6wrIL1/Is4QJZV5Eaq18orUrxqN5EIelf0v7Z0G62IB0EBg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('c6bfdd93f1470df9dfa3ef95d57ba28cecace068d9f2bb040a79ffc7c5d96cb9', 3, 2, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 8589934594, 100, 1, '2017-10-25 19:03:33.216264', '2017-10-25 19:03:33.216264', 12884910080, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+ZAt7wAAAEBVJkTQTFlpFKoMhcibMpdJ5khR91LY3zPQwv/e5Ov7XIcWKGIv5sDfgyhaK/x5WYWfawNWcc5fMlW7c/PxGOQJ', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAAAMAAAAAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAlQL4zgAAAACAAAAAgAAAAAAAAAAAAAAAwAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAADAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+M4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{VSZE0ExZaRSqDIXImzKXSeZIUfdS2N8z0ML/3uTr+1yHFihiL+bA34MoWiv8eVmFn2sDVnHOXzJVu3Pz8RjkCQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('bd486dbdd02d460817671c4a5a7e9d6e865ca29cb41e62d7aaf70a2fee5b36de', 4, 1, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934593, 100, 1, '2017-10-25 19:03:33.223647', '2017-10-25 19:03:33.223647', 17179873280, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAGu5L5MAAAAQB9kmKW2q3v7Qfy8PMekEb1TTI5ixqkI0BogXrOt7gO162Qbkh2dSTUfeDovc0PAafhDXxthVAlsLujlBmyjBAY=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL45wAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{H2SYpbare/tB/Lw8x6QRvVNMjmLGqQjQGiBes63uA7XrZBuSHZ1JNR94Oi9zQ8Bp+ENfG2FUCWwu6OUGbKMEBg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('b55d768a4e8e712da20efdee0e7d85f02948f9b6fd3ef2daefd3a5a147ecd63d', 5, 1, 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 8589934593, 100, 1, '2017-10-25 19:03:33.23077', '2017-10-25 19:03:33.23077', 21474840576, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAlQL5AAAAAAAAAAAAFvFIhaAAAAQBlpm/6rv5JvbN2AKUSlH+4idIlX0cM678QXxK+il0u7z3KLORdzKSkLnS5WdLZlAB6iDmoKI5WbydQLktNtDQA=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAAAAAAlQL5AAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAlQL45wAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{GWmb/qu/km9s3YApRKUf7iJ0iVfRwzrvxBfEr6KXS7vPcos5F3MpKQudLlZ0tmUAHqIOagojlZvJ1AuS020NAA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('3b666a253313fc7a0d241ee28064eec78aaa5ebd0a7c0ae7f85259e80fad029f', 6, 1, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 8589934595, 100, 1, '2017-10-25 19:03:33.239496', '2017-10-25 19:03:33.239496', 25769807872, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAcAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAABVVNEAAAAAAEAAAAAAAAAAfmQLe8AAABAL6czYFvSBhdVeD4fbXOHuXFa2CDqLpFfc+QJnoiPLt/23YViURGLyfg388FKMKsbNJEgmFsCJjtgl3fj7wr/Aw==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAHAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAAAAAAAAAAAAAAAAAQAAAAYAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAA', 'AAAAAgAAAAMAAAADAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+M4AAAAAgAAAAIAAAAAAAAAAAAAAAMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+LUAAAAAgAAAAMAAAAAAAAAAAAAAAMAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{L6czYFvSBhdVeD4fbXOHuXFa2CDqLpFfc+QJnoiPLt/23YViURGLyfg388FKMKsbNJEgmFsCJjtgl3fj7wr/Aw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('3f2aa00ba539e24ba9c0ba62f50318d8c7180f2d6757cc76e9984055c5e19ff4', 7, 1, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 8589934596, 100, 1, '2017-10-25 19:03:33.24943', '2017-10-25 19:03:33.249431', 30064775168, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAcAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAABVVNEAAAAAAEAAAAAAAAAAfmQLe8AAABA1TAQBu/2f7XHs/ctAJ5W7Ytk4jvQBopdO05zkSQoS8piu1mZm/tTvDTXEq/QUufpt/E8NBgKtNpcJXuMv5aPCw==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAHAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAUAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAAAAAAlQL5AAAAAAAAAAAAAAAAAAAAAAAQAAAAcAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAAAAAAlQL5AAAAAAAQAAAAAAAAAA', 'AAAAAgAAAAMAAAAGAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+LUAAAAAgAAAAMAAAAAAAAAAAAAAAMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAHAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+JwAAAAAgAAAAQAAAAAAAAAAAAAAAMAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{1TAQBu/2f7XHs/ctAJ5W7Ytk4jvQBopdO05zkSQoS8piu1mZm/tTvDTXEq/QUufpt/E8NBgKtNpcJXuMv5aPCw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('3ce9fc1159c25adc62c9686792cd41f06908280b899744057856db33bafe75de', 8, 1, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 8589934597, 100, 1, '2017-10-25 19:03:33.258821', '2017-10-25 19:03:33.258821', 34359742464, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAcAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAABVVNEAAAAAAAAAAAAAAAAAfmQLe8AAABASafHp/zp11tF81MRvbAnx9gQNTXdLW4DmoIofkgoG+jJw/Xj/k+N5WvSjqGrGF33uB6KnD+wAfQIhf0/DlxpBQ==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAHAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAcAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAAAAAAlQL5AAAAAAAQAAAAAAAAAAAAAAAQAAAAgAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAAAAAAlQL5AAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAHAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+JwAAAAAgAAAAQAAAAAAAAAAAAAAAMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAIAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+IMAAAAAgAAAAUAAAAAAAAAAAAAAAMAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{SafHp/zp11tF81MRvbAnx9gQNTXdLW4DmoIofkgoG+jJw/Xj/k+N5WvSjqGrGF33uB6KnD+wAfQIhf0/DlxpBQ==}', 'none', NULL, NULL); + + +-- +-- Name: gorp_migrations gorp_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY gorp_migrations + ADD CONSTRAINT gorp_migrations_pkey PRIMARY KEY (id); + + +-- +-- Name: history_assets history_assets_asset_code_asset_type_asset_issuer_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_asset_code_asset_type_asset_issuer_key UNIQUE (asset_code, asset_type, asset_issuer); + + +-- +-- Name: history_assets history_assets_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_pkey PRIMARY KEY (id); + + +-- +-- Name: history_operation_participants history_operation_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants + ADD CONSTRAINT history_operation_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: history_transaction_participants history_transaction_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants + ADD CONSTRAINT history_transaction_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: asset_by_issuer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX asset_by_issuer ON history_assets USING btree (asset_issuer); + + +-- +-- Name: by_account; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_account ON history_transactions USING btree (account, account_sequence); + + +-- +-- Name: by_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_hash ON history_transactions USING btree (transaction_hash); + + +-- +-- Name: by_ledger; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_ledger ON history_transactions USING btree (ledger_sequence, application_order); + + +-- +-- Name: hist_e_by_order; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_by_order ON history_effects USING btree (history_operation_id, "order"); + + +-- +-- Name: hist_e_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_id ON history_effects USING btree (history_account_id, history_operation_id, "order"); + + +-- +-- Name: hist_op_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_op_p_id ON history_operation_participants USING btree (history_account_id, history_operation_id); + + +-- +-- Name: hist_tx_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_tx_p_id ON history_transaction_participants USING btree (history_account_id, history_transaction_id); + + +-- +-- Name: hop_by_hoid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX hop_by_hoid ON history_operation_participants USING btree (history_operation_id); + + +-- +-- Name: hs_ledger_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_ledger_by_id ON history_ledgers USING btree (id); + + +-- +-- Name: hs_transaction_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_transaction_by_id ON history_transactions USING btree (id); + + +-- +-- Name: htp_by_htid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htp_by_htid ON history_transaction_participants USING btree (history_transaction_id); + + +-- +-- Name: htrd_by_offer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_by_offer ON history_trades USING btree (offer_id); + + +-- +-- Name: htrd_counter_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_counter_lookup ON history_trades USING btree (counter_asset_id); + + +-- +-- Name: htrd_pair_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_pair_time_lookup ON history_trades USING btree (base_asset_id, counter_asset_id, ledger_closed_at); + + +-- +-- Name: htrd_pid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX htrd_pid ON history_trades USING btree (history_operation_id, "order"); + + +-- +-- Name: htrd_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_time_lookup ON history_trades USING btree (ledger_closed_at); + + +-- +-- Name: index_history_accounts_on_address; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_address ON history_accounts USING btree (address); + + +-- +-- Name: index_history_accounts_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_id ON history_accounts USING btree (id); + + +-- +-- Name: index_history_effects_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_effects_on_type ON history_effects USING btree (type); + + +-- +-- Name: index_history_ledgers_on_closed_at; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_closed_at ON history_ledgers USING btree (closed_at); + + +-- +-- Name: index_history_ledgers_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_id ON history_ledgers USING btree (id); + + +-- +-- Name: index_history_ledgers_on_importer_version; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_importer_version ON history_ledgers USING btree (importer_version); + + +-- +-- Name: index_history_ledgers_on_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_ledger_hash ON history_ledgers USING btree (ledger_hash); + + +-- +-- Name: index_history_ledgers_on_previous_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_previous_ledger_hash ON history_ledgers USING btree (previous_ledger_hash); + + +-- +-- Name: index_history_ledgers_on_sequence; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_sequence ON history_ledgers USING btree (sequence); + + +-- +-- Name: index_history_operations_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_operations_on_id ON history_operations USING btree (id); + + +-- +-- Name: index_history_operations_on_transaction_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_transaction_id ON history_operations USING btree (transaction_id); + + +-- +-- Name: index_history_operations_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_type ON history_operations USING btree (type); + + +-- +-- Name: index_history_transactions_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_transactions_on_id ON history_transactions USING btree (id); + + +-- +-- Name: trade_effects_by_order_book; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX trade_effects_by_order_book ON history_effects USING btree (((details ->> 'sold_asset_type'::text)), ((details ->> 'sold_asset_code'::text)), ((details ->> 'sold_asset_issuer'::text)), ((details ->> 'bought_asset_type'::text)), ((details ->> 'bought_asset_code'::text)), ((details ->> 'bought_asset_issuer'::text))) WHERE (type = 33); + + +-- +-- Name: history_trades history_trades_base_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_account_id_fkey FOREIGN KEY (base_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_base_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_asset_id_fkey FOREIGN KEY (base_asset_id) REFERENCES history_assets(id); + + +-- +-- Name: history_trades history_trades_counter_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_account_id_fkey FOREIGN KEY (counter_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_counter_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_asset_id_fkey FOREIGN KEY (counter_asset_id) REFERENCES history_assets(id); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/allow_trust.rb b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/allow_trust.rb new file mode 100644 index 0000000..40d6f57 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/allow_trust.rb @@ -0,0 +1,20 @@ +run_recipe File.dirname(__FILE__) + "/_common_accounts.rb" + +use_manual_close + +create_account :usd_gateway +create_account :scott +create_account :andrew + +close_ledger + +require_trust_auth :usd_gateway +set_flags :usd_gateway, [:auth_revocable_flag] + +close_ledger + +trust :scott, :usd_gateway, "USD" ; close_ledger +change_trust :andrew, :usd_gateway, "USD", 4000 ; close_ledger +allow_trust :usd_gateway, :scott, "USD" ; close_ledger +allow_trust :usd_gateway, :andrew, "USD" ; close_ledger +revoke_trust :usd_gateway, :andrew, "USD" ; close_ledger diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/bad_cost-core.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/bad_cost-core.sql new file mode 100644 index 0000000..43bcee3 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/bad_cost-core.sql @@ -0,0 +1,577 @@ +-- +-- PostgreSQL database dump +-- + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; + +SET search_path = public, pg_catalog; + +DROP INDEX public.signersaccount; +DROP INDEX public.sellingissuerindex; +DROP INDEX public.scpenvsbyseq; +DROP INDEX public.priceindex; +DROP INDEX public.ledgersbyseq; +DROP INDEX public.histfeebyseq; +DROP INDEX public.histbyseq; +DROP INDEX public.buyingissuerindex; +DROP INDEX public.accountbalances; +ALTER TABLE ONLY public.txhistory DROP CONSTRAINT txhistory_pkey; +ALTER TABLE ONLY public.txfeehistory DROP CONSTRAINT txfeehistory_pkey; +ALTER TABLE ONLY public.trustlines DROP CONSTRAINT trustlines_pkey; +ALTER TABLE ONLY public.storestate DROP CONSTRAINT storestate_pkey; +ALTER TABLE ONLY public.signers DROP CONSTRAINT signers_pkey; +ALTER TABLE ONLY public.scpquorums DROP CONSTRAINT scpquorums_pkey; +ALTER TABLE ONLY public.pubsub DROP CONSTRAINT pubsub_pkey; +ALTER TABLE ONLY public.publishqueue DROP CONSTRAINT publishqueue_pkey; +ALTER TABLE ONLY public.peers DROP CONSTRAINT peers_pkey; +ALTER TABLE ONLY public.offers DROP CONSTRAINT offers_pkey; +ALTER TABLE ONLY public.ledgerheaders DROP CONSTRAINT ledgerheaders_pkey; +ALTER TABLE ONLY public.ledgerheaders DROP CONSTRAINT ledgerheaders_ledgerseq_key; +ALTER TABLE ONLY public.accounts DROP CONSTRAINT accounts_pkey; +DROP TABLE public.txhistory; +DROP TABLE public.txfeehistory; +DROP TABLE public.trustlines; +DROP TABLE public.storestate; +DROP TABLE public.signers; +DROP TABLE public.scpquorums; +DROP TABLE public.scphistory; +DROP TABLE public.pubsub; +DROP TABLE public.publishqueue; +DROP TABLE public.peers; +DROP TABLE public.offers; +DROP TABLE public.ledgerheaders; +DROP TABLE public.accounts; +DROP EXTENSION plpgsql; +DROP SCHEMA public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: accounts; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE accounts ( + accountid character varying(56) NOT NULL, + balance bigint NOT NULL, + seqnum bigint NOT NULL, + numsubentries integer NOT NULL, + inflationdest character varying(56), + homedomain character varying(32) NOT NULL, + thresholds text NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT accounts_balance_check CHECK ((balance >= 0)), + CONSTRAINT accounts_numsubentries_check CHECK ((numsubentries >= 0)) +); + + +-- +-- Name: ledgerheaders; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE ledgerheaders ( + ledgerhash character(64) NOT NULL, + prevhash character(64) NOT NULL, + bucketlisthash character(64) NOT NULL, + ledgerseq integer, + closetime bigint NOT NULL, + data text NOT NULL, + CONSTRAINT ledgerheaders_closetime_check CHECK ((closetime >= 0)), + CONSTRAINT ledgerheaders_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: offers; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE offers ( + sellerid character varying(56) NOT NULL, + offerid bigint NOT NULL, + sellingassettype integer NOT NULL, + sellingassetcode character varying(12), + sellingissuer character varying(56), + buyingassettype integer NOT NULL, + buyingassetcode character varying(12), + buyingissuer character varying(56), + amount bigint NOT NULL, + pricen integer NOT NULL, + priced integer NOT NULL, + price double precision NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT offers_amount_check CHECK ((amount >= 0)), + CONSTRAINT offers_offerid_check CHECK ((offerid >= 0)) +); + + +-- +-- Name: peers; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE peers ( + ip character varying(15) NOT NULL, + port integer DEFAULT 0 NOT NULL, + nextattempt timestamp without time zone NOT NULL, + numfailures integer DEFAULT 0 NOT NULL, + CONSTRAINT peers_numfailures_check CHECK ((numfailures >= 0)), + CONSTRAINT peers_port_check CHECK (((port > 0) AND (port <= 65535))) +); + + +-- +-- Name: publishqueue; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE publishqueue ( + ledger integer NOT NULL, + state text +); + + +-- +-- Name: pubsub; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE pubsub ( + resid character(32) NOT NULL, + lastread integer +); + + +-- +-- Name: scphistory; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE scphistory ( + nodeid character(56) NOT NULL, + ledgerseq integer NOT NULL, + envelope text NOT NULL, + CONSTRAINT scphistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: scpquorums; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE scpquorums ( + qsethash character(64) NOT NULL, + lastledgerseq integer NOT NULL, + qset text NOT NULL, + CONSTRAINT scpquorums_lastledgerseq_check CHECK ((lastledgerseq >= 0)) +); + + +-- +-- Name: signers; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE signers ( + accountid character varying(56) NOT NULL, + publickey character varying(56) NOT NULL, + weight integer NOT NULL +); + + +-- +-- Name: storestate; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE storestate ( + statename character(32) NOT NULL, + state text +); + + +-- +-- Name: trustlines; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE trustlines ( + accountid character varying(56) NOT NULL, + assettype integer NOT NULL, + issuer character varying(56) NOT NULL, + assetcode character varying(12) NOT NULL, + tlimit bigint NOT NULL, + balance bigint NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT trustlines_balance_check CHECK ((balance >= 0)), + CONSTRAINT trustlines_tlimit_check CHECK ((tlimit > 0)) +); + + +-- +-- Name: txfeehistory; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE txfeehistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txchanges text NOT NULL, + CONSTRAINT txfeehistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: txhistory; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE txhistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txbody text NOT NULL, + txresult text NOT NULL, + txmeta text NOT NULL, + CONSTRAINT txhistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Data for Name: accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +COPY accounts (accountid, balance, seqnum, numsubentries, inflationdest, homedomain, thresholds, flags, lastmodified) FROM stdin; +GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H 999999969999999700 3 0 \N AQAAAA== 0 2 +GAEDTJ4PPEFVW5XV2S7LUXBEHNQMX5Q2GM562RJGOQG7GVCE5H3HIB4V 9999999900 8589934593 1 \N AQAAAA== 0 3 +GARSFJNXJIHO6ULUBK3DBYKVSIZE7SC72S5DYBCHU7DKL22UXKVD7MXP 9999999900 8589934593 1 \N AQAAAA== 0 3 +GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN 9999999800 8589934594 1 \N AQAAAA== 0 4 +\. + + +-- +-- Data for Name: ledgerheaders; Type: TABLE DATA; Schema: public; Owner: - +-- + +COPY ledgerheaders (ledgerhash, prevhash, bucketlisthash, ledgerseq, closetime, data) FROM stdin; +63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99 0000000000000000000000000000000000000000000000000000000000000000 572a2e32ff248a07b0e70fd1f6d318c1facd20b6cc08c33d5775259868125a16 1 0 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXKi4y/ySKB7DnD9H20xjB+s0gtswIwz1XdSWYaBJaFgAAAAEN4Lazp2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAX14QAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +eb6c4b32da2ede2c9596ebfd6c7c66ec9d62e67cd61567964a6614b131185129 63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99 9c66dee9eee8a04fdf1e48def94192998ae143c4bc57d49e348f54222606098a 2 1453986751 AAAAAWPZj1Nu5o0bJ7W4nyOvUxG3Vpok+vFAOtC1K2M7B76ZL6euDJxI5oXP7YrOhEKxY+jfD+d9oPDDwAMA/kIl6TgAAAAAVqoTvwAAAAIAAAAIAAAAAQAAAAEAAAAIAAAAAwAAADIAAAAA9g6B9DENzDtqHD436koiLxRKDYIzhsjyqT0b5tTQIlucZt7p7uigT98eSN75QZKZiuFDxLxX1J40j1QiJgYJigAAAAIN4Lazp2QAAAAAAAAAAAEsAAAAAAAAAAAAAAAAAAAAZAX14QAAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +e5437432f99ef3bab13b626676c6e71d7de08ab3950fc3f9ae56dc9a94aedc82 eb6c4b32da2ede2c9596ebfd6c7c66ec9d62e67cd61567964a6614b131185129 a9a0c8769f35057cd15f06b1cd9ec500bdddb1b08e1b285b4223b45bb18e70fd 3 1453986752 AAAAAetsSzLaLt4slZbr/Wx8ZuydYuZ81hVnlkpmFLExGFEpxYeML1mE0FFOO6x4OXLziurfFRTRzQfnxDkO3hlp5ScAAAAAVqoTwAAAAAAAAAAAKwBWfKKqAAVrA8ptV4sxg1LDFvO378bXmV7+NQIXA42poMh2nzUFfNFfBrHNnsUAvd2xsI4bKFtCI7RbsY5w/QAAAAMN4Lazp2QAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAZAX14QAAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +47983630e6df8e9ca7f30ecdef498bac0c6bf2e8aaf2e5f77782e941efc50030 e5437432f99ef3bab13b626676c6e71d7de08ab3950fc3f9ae56dc9a94aedc82 26d21904b6a9d6ca0f7aaba8176e083e2eb0e44bf4cad5884a6822c6680c7f96 4 1453986753 AAAAAeVDdDL5nvO6sTtiZnbG5x194IqzlQ/D+a5W3JqUrtyCgweDN3suE/1iz7oOHgm55NMWPVBPThvZZOC0kgViCF4AAAAAVqoTwQAAAAAAAAAAPXm8IcCHW9YauF7/m6T+TQSgvRq7Cq53p0J9GD4vnXAm0hkEtqnWyg96q6gXbgg+LrDkS/TK1YhKaCLGaAx/lgAAAAQN4Lazp2QAAAAAAAAAAAK8AAAAAAAAAAAAAAABAAAAZAX14QAAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +\. + + +-- +-- Data for Name: offers; Type: TABLE DATA; Schema: public; Owner: - +-- + +COPY offers (sellerid, offerid, sellingassettype, sellingassetcode, sellingissuer, buyingassettype, buyingassetcode, buyingissuer, amount, pricen, priced, price, flags, lastmodified) FROM stdin; +GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN 1 1 EUR GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN 1 USD GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN 5000000000000000 1 200 0.0050000000000000001 0 4 +\. + + +-- +-- Data for Name: peers; Type: TABLE DATA; Schema: public; Owner: - +-- + +COPY peers (ip, port, nextattempt, numfailures) FROM stdin; +\. + + +-- +-- Data for Name: publishqueue; Type: TABLE DATA; Schema: public; Owner: - +-- + +COPY publishqueue (ledger, state) FROM stdin; +\. + + +-- +-- Data for Name: pubsub; Type: TABLE DATA; Schema: public; Owner: - +-- + +COPY pubsub (resid, lastread) FROM stdin; +\. + + +-- +-- Data for Name: scphistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +COPY scphistory (nodeid, ledgerseq, envelope) FROM stdin; +GDKQNDBAOXL5APAWQQYZZW4VAU6LONLCHULCHAG7KX24GGYQRQWK6MCW 2 AAAAANUGjCB119A8FoQxnNuVBTy3NWI9FiOA31X1wxsQjCyvAAAAAAAAAAIAAAACAAAAAQAAAEgvp64MnEjmhc/tis6EQrFj6N8P532g8MPAAwD+QiXpOAAAAABWqhO/AAAAAgAAAAgAAAABAAAAAQAAAAgAAAADAAAAMgAAAAAAAAABu0eV85Ba8OQ0CxFZASBY9MubD6wAgEk/CDE5W/ZQMV4AAABAvcnJ/rSleuTQmKKi48xHl3mcXBL8zRHVx2juQ09cX+5zGeZjeeix5X6EIpJhkNRjrxlNaBJGHAaa8RdIix0/BA== +GDKQNDBAOXL5APAWQQYZZW4VAU6LONLCHULCHAG7KX24GGYQRQWK6MCW 3 AAAAANUGjCB119A8FoQxnNuVBTy3NWI9FiOA31X1wxsQjCyvAAAAAAAAAAMAAAACAAAAAQAAADDFh4wvWYTQUU47rHg5cvOK6t8VFNHNB+fEOQ7eGWnlJwAAAABWqhPAAAAAAAAAAAAAAAABu0eV85Ba8OQ0CxFZASBY9MubD6wAgEk/CDE5W/ZQMV4AAABA+jycpb0qGCtUJwErlVT207WglNJ8i+O0zYoSLbnTu+0IyXz8YcMb6XDtmpNdsowVpeZDqgiOb3oPkAtta7TDBg== +GDKQNDBAOXL5APAWQQYZZW4VAU6LONLCHULCHAG7KX24GGYQRQWK6MCW 4 AAAAANUGjCB119A8FoQxnNuVBTy3NWI9FiOA31X1wxsQjCyvAAAAAAAAAAQAAAACAAAAAQAAADCDB4M3ey4T/WLPug4eCbnk0xY9UE9OG9lk4LSSBWIIXgAAAABWqhPBAAAAAAAAAAAAAAABu0eV85Ba8OQ0CxFZASBY9MubD6wAgEk/CDE5W/ZQMV4AAABAz4rN48bzisCYkedS1tCegHKavrd/SumJ1TUwtIT6CFG0Yy4YvLK68VZLwqVotF71ltCF9r55bEa9dmrivwLnBg== +\. + + +-- +-- Data for Name: scpquorums; Type: TABLE DATA; Schema: public; Owner: - +-- + +COPY scpquorums (qsethash, lastledgerseq, qset) FROM stdin; +bb4795f3905af0e4340b1159012058f4cb9b0fac0080493f0831395bf650315e 4 AAAAAQAAAAEAAAAA1QaMIHXX0DwWhDGc25UFPLc1Yj0WI4DfVfXDGxCMLK8AAAAA +\. + + +-- +-- Data for Name: signers; Type: TABLE DATA; Schema: public; Owner: - +-- + +COPY signers (accountid, publickey, weight) FROM stdin; +\. + + +-- +-- Data for Name: storestate; Type: TABLE DATA; Schema: public; Owner: - +-- + +COPY storestate (statename, state) FROM stdin; +databaseschema 2 +forcescponnextlaunch false +historyarchivestate {\n "version": 1,\n "server": "v0.3.3-7-geed8964",\n "currentLedger": 4,\n "currentBuckets": [\n {\n "curr": "859b29707263bb214f2b6918a599a5bd8fe4cd8bfc64f04b2fd00e9485954edc",\n "next": {\n "state": 0\n },\n "snap": "25e05f9a3a34d835b3632a1fc37510c2930afb832874a2891fb1097ff7761b00"\n },\n {\n "curr": "ef31a20a398ee73ce22275ea8177786bac54656f33dcc4f3fec60d55ddf163d9",\n "next": {\n "state": 1,\n "output": "25e05f9a3a34d835b3632a1fc37510c2930afb832874a2891fb1097ff7761b00"\n },\n "snap": "0000000000000000000000000000000000000000000000000000000000000000"\n },\n {\n "curr": "0000000000000000000000000000000000000000000000000000000000000000",\n "next": {\n "state": 0\n },\n "snap": "0000000000000000000000000000000000000000000000000000000000000000"\n },\n {\n "curr": "0000000000000000000000000000000000000000000000000000000000000000",\n "next": {\n "state": 0\n },\n "snap": "0000000000000000000000000000000000000000000000000000000000000000"\n },\n {\n "curr": "0000000000000000000000000000000000000000000000000000000000000000",\n "next": {\n "state": 0\n },\n "snap": "0000000000000000000000000000000000000000000000000000000000000000"\n },\n {\n "curr": "0000000000000000000000000000000000000000000000000000000000000000",\n "next": {\n "state": 0\n },\n "snap": "0000000000000000000000000000000000000000000000000000000000000000"\n },\n {\n "curr": "0000000000000000000000000000000000000000000000000000000000000000",\n "next": {\n "state": 0\n },\n "snap": "0000000000000000000000000000000000000000000000000000000000000000"\n },\n {\n "curr": "0000000000000000000000000000000000000000000000000000000000000000",\n "next": {\n "state": 0\n },\n "snap": "0000000000000000000000000000000000000000000000000000000000000000"\n },\n {\n "curr": "0000000000000000000000000000000000000000000000000000000000000000",\n "next": {\n "state": 0\n },\n "snap": "0000000000000000000000000000000000000000000000000000000000000000"\n },\n {\n "curr": "0000000000000000000000000000000000000000000000000000000000000000",\n "next": {\n "state": 0\n },\n "snap": "0000000000000000000000000000000000000000000000000000000000000000"\n },\n {\n "curr": "0000000000000000000000000000000000000000000000000000000000000000",\n "next": {\n "state": 0\n },\n "snap": "0000000000000000000000000000000000000000000000000000000000000000"\n }\n ]\n} +lastscpdata AAAAAgAAAADVBowgddfQPBaEMZzblQU8tzViPRYjgN9V9cMbEIwsrwAAAAAAAAAEAAAAA7tHlfOQWvDkNAsRWQEgWPTLmw+sAIBJPwgxOVv2UDFeAAAAAQAAADCDB4M3ey4T/WLPug4eCbnk0xY9UE9OG9lk4LSSBWIIXgAAAABWqhPBAAAAAAAAAAAAAAABAAAAMIMHgzd7LhP9Ys+6Dh4JueTTFj1QT04b2WTgtJIFYgheAAAAAFaqE8EAAAAAAAAAAAAAAEB3N0Vmd9yXrEKucXM2/fcSHhJiome8Gz2vaU6LC1XAsN88LYCdUigaXaaIupOiLmb70OHY7wuAlkiTt1i2NGkCAAAAANUGjCB119A8FoQxnNuVBTy3NWI9FiOA31X1wxsQjCyvAAAAAAAAAAQAAAACAAAAAQAAADCDB4M3ey4T/WLPug4eCbnk0xY9UE9OG9lk4LSSBWIIXgAAAABWqhPBAAAAAAAAAAAAAAABu0eV85Ba8OQ0CxFZASBY9MubD6wAgEk/CDE5W/ZQMV4AAABAz4rN48bzisCYkedS1tCegHKavrd/SumJ1TUwtIT6CFG0Yy4YvLK68VZLwqVotF71ltCF9r55bEa9dmrivwLnBgAAAAHlQ3Qy+Z7zurE7YmZ2xucdfeCKs5UPw/muVtyalK7cggAAAAIAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAABkAAAAAgAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAFFVVIAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAEcN5N+CAAAAAAAEAAADIAAAAAAAAAAAAAAAAAAAAAfsBWnsAAABAYasXryVdVS5JURHjPaXWlWxLZhGnaE4LO5W8ODJ3iK8g17i0DH/6VLo9jCin6YnTKW7K6UTaCxQ1p4pVPuFMDAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAGQAAAACAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAABAAAAACMipbdKDu9RdAq2MOFVkjJPyF/UujwER6fGpetUuqo/AAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAO5rKAAAAAAAAAAAB+wFaewAAAEArvbcTeceld8fpsIeGwDo6ToD1HADd9Xci56O3TvuceyCvxIjTR6nmcl+S1MxYk684gKnOb217poABFAE/8koPAAAAAQAAAAEAAAABAAAAANUGjCB119A8FoQxnNuVBTy3NWI9FiOA31X1wxsQjCyvAAAAAA== +lastclosedledger 47983630e6df8e9ca7f30ecdef498bac0c6bf2e8aaf2e5f77782e941efc50030 +\. + + +-- +-- Data for Name: trustlines; Type: TABLE DATA; Schema: public; Owner: - +-- + +COPY trustlines (accountid, assettype, issuer, assetcode, tlimit, balance, flags, lastmodified) FROM stdin; +GAEDTJ4PPEFVW5XV2S7LUXBEHNQMX5Q2GM562RJGOQG7GVCE5H3HIB4V 1 GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN EUR 9223372036854775807 0 1 3 +GARSFJNXJIHO6ULUBK3DBYKVSIZE7SC72S5DYBCHU7DKL22UXKVD7MXP 1 GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN USD 9223372036854775807 1000000000 1 4 +\. + + +-- +-- Data for Name: txfeehistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +COPY txfeehistory (txid, ledgerseq, txindex, txchanges) FROM stdin; +9ff6b71bba6b24c8afc6ca53b12702566d40e9c8abf9b8439e9a3b08300e4188 2 1 AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA== +afc983f7f88809442fc616c1ce425b6c8cf6d8f7493b33ff6a809003a845ec16 2 2 AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/84AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA== +5c71f1b198a9be6b1c7e36737bb3e32c7f258530573bc11f20827d0913ba1433 2 3 AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/7UAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA== +cdb0ce2cef61c5cab6566c1c65c5bc632f943b2bd43cfdd80984a66994cb7484 3 1 AAAAAgAAAAMAAAACAAAAAAAAAAAIOaePeQtbdvXUvrpcJDtgy/YaMzvtRSZ0DfNUROn2dAAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAIOaePeQtbdvXUvrpcJDtgy/YaMzvtRSZ0DfNUROn2dAAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA== +563ab1cf87e65377e015813499a6027081e63177a9ef35a0c5e0c0c2a5a918f7 3 2 AAAAAgAAAAMAAAACAAAAAAAAAAAjIqW3Sg7vUXQKtjDhVZIyT8hf1Lo8BEenxqXrVLqqPwAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAjIqW3Sg7vUXQKtjDhVZIyT8hf1Lo8BEenxqXrVLqqPwAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA== +378d6013b2a9593a06a39af1a7b08a0c3e0343aa4d40a25a4be7783c54772db0 4 1 AAAAAgAAAAMAAAACAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA== +2cbac484f2328faeb48b6737c450772d59d7e1e629cd4fa184c33c9a382e8088 4 2 AAAAAQAAAAEAAAAEAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+M4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA== +\. + + +-- +-- Data for Name: txhistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +COPY txhistory (txid, ledgerseq, txindex, txbody, txresult, txmeta) FROM stdin; +9ff6b71bba6b24c8afc6ca53b12702566d40e9c8abf9b8439e9a3b08300e4188 2 1 AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAACVAvkAAAAAAAAAAABVvwF9wAAAEC96/+BcbMflvMQfFAQTbAKGu+6BR1M6SG/KVzTJSlIY8ovSVywuthk9dOW9jm23siTiIZE0IAl84wK83gnAcEK n/a3G7prJMivxspTsScCVm1A6cir+bhDnpo7CDAOQYgAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA== AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2sVNYGtQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA +afc983f7f88809442fc616c1ce425b6c8cf6d8f7493b33ff6a809003a845ec16 2 2 AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAIyKlt0oO71F0CrYw4VWSMk/IX9S6PARHp8al61S6qj8AAAACVAvkAAAAAAAAAAABVvwF9wAAAECXh9/+55FmQjeMx9IMQfBn42fYY1fKAT/gb+e7P3jdSMCKiKhwoxj1bub733a2XuxPETpe79uzatzm8/KI0asI r8mD9/iICUQvxhbBzkJbbIz22PdJOzP/aoCQA6hF7BYAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA== AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAACMipbdKDu9RdAq2MOFVkjJPyF/UujwER6fGpetUuqo/AAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rv9MNtQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA +5c71f1b198a9be6b1c7e36737bb3e32c7f258530573bc11f20827d0913ba1433 2 3 AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAACDmnj3kLW3b11L66XCQ7YMv2GjM77UUmdA3zVETp9nQAAAACVAvkAAAAAAAAAAABVvwF9wAAAEBdnUBKCV3HlHOqp5iNLsP8auaNCvxDeBp+0C+lwPYUNrzRALQRDJDWuKfExmsRrEnW8LKJbMdeW9ilLaEc2lAO XHHxsZipvmscfjZze7PjLH8lhTBXO8EfIIJ9CRO6FDMAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA== AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAAg5p495C1t29dS+ulwkO2DL9hozO+1FJnQN81RE6fZ0AAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rKtAUtQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA +cdb0ce2cef61c5cab6566c1c65c5bc632f943b2bd43cfdd80984a66994cb7484 3 1 AAAAAAg5p495C1t29dS+ulwkO2DL9hozO+1FJnQN81RE6fZ0AAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFae3//////////AAAAAAAAAAFE6fZ0AAAAQNSm/BIxP9LwabXoBKigrTG85o/PUp6VOWh/ne6mMaT5hvehDUvbRHQghJ/SZTDfjD+FPPjbe3nzcJEun1EX4g0= zbDOLO9hxcq2VmwcZcW8Yy+UOyvUPP3YCYSmaZTLdIQAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA== AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAAg5p495C1t29dS+ulwkO2DL9hozO+1FJnQN81RE6fZ0AAAAAUVVUgAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAg5p495C1t29dS+ulwkO2DL9hozO+1FJnQN81RE6fZ0AAAAAlQL45wAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA +563ab1cf87e65377e015813499a6027081e63177a9ef35a0c5e0c0c2a5a918f7 3 2 AAAAACMipbdKDu9RdAq2MOFVkjJPyF/UujwER6fGpetUuqo/AAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFae3//////////AAAAAAAAAAFUuqo/AAAAQKblh64EFK4tp2+xohOkNaSdfMFDId/y4nop7dVmZRsbe4f/eVCpUrKQCRWLJ4bXzMpPTOTsjHRIxOa8WekP+ww= Vjqxz4fmU3fgFYE0maYCcIHmMXep7zWgxeDAwqWpGPcAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA== AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAACMipbdKDu9RdAq2MOFVkjJPyF/UujwER6fGpetUuqo/AAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAACMipbdKDu9RdAq2MOFVkjJPyF/UujwER6fGpetUuqo/AAAAAlQL45wAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA +378d6013b2a9593a06a39af1a7b08a0c3e0343aa4d40a25a4be7783c54772db0 4 1 AAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAIyKlt0oO71F0CrYw4VWSMk/IX9S6PARHp8al61S6qj8AAAABVVNEAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAA7msoAAAAAAAAAAAH7AVp7AAAAQCu9txN5x6V3x+mwh4bAOjpOgPUcAN31dyLno7dO+5x7IK/EiNNHqeZyX5LUzFiTrziAqc5vbXumgAEUAT/ySg8= N41gE7KpWToGo5rxp7CKDD4DQ6pNQKJaS+d4PFR3LbAAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA== AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAACMipbdKDu9RdAq2MOFVkjJPyF/UujwER6fGpetUuqo/AAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAACMipbdKDu9RdAq2MOFVkjJPyF/UujwER6fGpetUuqo/AAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAO5rKAH//////////AAAAAQAAAAAAAAAA +2cbac484f2328faeb48b6737c450772d59d7e1e629cd4fa184c33c9a382e8088 4 2 AAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7ABHDeTfggAAAAAABAAAAyAAAAAAAAAAAAAAAAAAAAAH7AVp7AAAAQGGrF68lXVUuSVER4z2l1pVsS2YRp2hOCzuVvDgyd4ivINe4tAx/+lS6PYwop+mJ0yluyulE2gsUNaeKVT7hTAw= LLrEhPIyj660i2c3xFB3LVnX4eYpzU+hhMM8mjgugIgAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAQAAAAFFVVIAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAEcN5N+CAAAAAAAEAAADIAAAAAAAAAAAAAAAA AAAAAAAAAAEAAAACAAAAAAAAAAQAAAACAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAAAAAEAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7ABHDeTfggAAAAAABAAAAyAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+M4AAAAAgAAAAIAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA== +\. + + +-- +-- Name: accounts_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- + +ALTER TABLE ONLY accounts + ADD CONSTRAINT accounts_pkey PRIMARY KEY (accountid); + + +-- +-- Name: ledgerheaders_ledgerseq_key; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_ledgerseq_key UNIQUE (ledgerseq); + + +-- +-- Name: ledgerheaders_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_pkey PRIMARY KEY (ledgerhash); + + +-- +-- Name: offers_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- + +ALTER TABLE ONLY offers + ADD CONSTRAINT offers_pkey PRIMARY KEY (offerid); + + +-- +-- Name: peers_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- + +ALTER TABLE ONLY peers + ADD CONSTRAINT peers_pkey PRIMARY KEY (ip, port); + + +-- +-- Name: publishqueue_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- + +ALTER TABLE ONLY publishqueue + ADD CONSTRAINT publishqueue_pkey PRIMARY KEY (ledger); + + +-- +-- Name: pubsub_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- + +ALTER TABLE ONLY pubsub + ADD CONSTRAINT pubsub_pkey PRIMARY KEY (resid); + + +-- +-- Name: scpquorums_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- + +ALTER TABLE ONLY scpquorums + ADD CONSTRAINT scpquorums_pkey PRIMARY KEY (qsethash); + + +-- +-- Name: signers_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- + +ALTER TABLE ONLY signers + ADD CONSTRAINT signers_pkey PRIMARY KEY (accountid, publickey); + + +-- +-- Name: storestate_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- + +ALTER TABLE ONLY storestate + ADD CONSTRAINT storestate_pkey PRIMARY KEY (statename); + + +-- +-- Name: trustlines_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- + +ALTER TABLE ONLY trustlines + ADD CONSTRAINT trustlines_pkey PRIMARY KEY (accountid, issuer, assetcode); + + +-- +-- Name: txfeehistory_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- + +ALTER TABLE ONLY txfeehistory + ADD CONSTRAINT txfeehistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: txhistory_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- + +ALTER TABLE ONLY txhistory + ADD CONSTRAINT txhistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: accountbalances; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX accountbalances ON accounts USING btree (balance) WHERE (balance >= 1000000000); + + +-- +-- Name: buyingissuerindex; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX buyingissuerindex ON offers USING btree (buyingissuer); + + +-- +-- Name: histbyseq; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX histbyseq ON txhistory USING btree (ledgerseq); + + +-- +-- Name: histfeebyseq; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX histfeebyseq ON txfeehistory USING btree (ledgerseq); + + +-- +-- Name: ledgersbyseq; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX ledgersbyseq ON ledgerheaders USING btree (ledgerseq); + + +-- +-- Name: priceindex; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX priceindex ON offers USING btree (price); + + +-- +-- Name: scpenvsbyseq; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX scpenvsbyseq ON scphistory USING btree (ledgerseq); + + +-- +-- Name: sellingissuerindex; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX sellingissuerindex ON offers USING btree (sellingissuer); + + +-- +-- Name: signersaccount; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX signersaccount ON signers USING btree (accountid); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/bad_cost-horizon.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/bad_cost-horizon.sql new file mode 100644 index 0000000..6071de1 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/bad_cost-horizon.sql @@ -0,0 +1,734 @@ +-- +-- PostgreSQL database dump +-- + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; + +SET search_path = public, pg_catalog; + +DROP INDEX public.unique_schema_migrations; +DROP INDEX public.trade_effects_by_order_book; +DROP INDEX public.index_history_transactions_on_id; +DROP INDEX public.index_history_transaction_statuses_lc_on_all; +DROP INDEX public.index_history_transaction_participants_on_transaction_hash; +DROP INDEX public.index_history_transaction_participants_on_account; +DROP INDEX public.index_history_operations_on_type; +DROP INDEX public.index_history_operations_on_transaction_id; +DROP INDEX public.index_history_operations_on_id; +DROP INDEX public.index_history_ledgers_on_sequence; +DROP INDEX public.index_history_ledgers_on_previous_ledger_hash; +DROP INDEX public.index_history_ledgers_on_ledger_hash; +DROP INDEX public.index_history_ledgers_on_importer_version; +DROP INDEX public.index_history_ledgers_on_id; +DROP INDEX public.index_history_ledgers_on_closed_at; +DROP INDEX public.index_history_effects_on_type; +DROP INDEX public.index_history_accounts_on_id; +DROP INDEX public.index_history_accounts_on_address; +DROP INDEX public.hs_transaction_by_id; +DROP INDEX public.hs_ledger_by_id; +DROP INDEX public.hist_op_p_id; +DROP INDEX public.hist_e_id; +DROP INDEX public.hist_e_by_order; +DROP INDEX public.by_ledger; +DROP INDEX public.by_hash; +DROP INDEX public.by_account; +ALTER TABLE ONLY public.history_transaction_statuses DROP CONSTRAINT history_transaction_statuses_pkey; +ALTER TABLE ONLY public.history_transaction_participants DROP CONSTRAINT history_transaction_participants_pkey; +ALTER TABLE ONLY public.history_operation_participants DROP CONSTRAINT history_operation_participants_pkey; +ALTER TABLE ONLY public.gorp_migrations DROP CONSTRAINT gorp_migrations_pkey; +ALTER TABLE public.history_transaction_statuses ALTER COLUMN id DROP DEFAULT; +ALTER TABLE public.history_transaction_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE public.history_operation_participants ALTER COLUMN id DROP DEFAULT; +DROP TABLE public.schema_migrations; +DROP TABLE public.history_transactions; +DROP SEQUENCE public.history_transaction_statuses_id_seq; +DROP TABLE public.history_transaction_statuses; +DROP SEQUENCE public.history_transaction_participants_id_seq; +DROP TABLE public.history_transaction_participants; +DROP TABLE public.history_operations; +DROP SEQUENCE public.history_operation_participants_id_seq; +DROP TABLE public.history_operation_participants; +DROP TABLE public.history_ledgers; +DROP TABLE public.history_effects; +DROP TABLE public.history_accounts; +DROP TABLE public.gorp_migrations; +DROP EXTENSION hstore; +DROP EXTENSION plpgsql; +DROP SCHEMA public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +-- +-- Name: hstore; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS hstore WITH SCHEMA public; + + +-- +-- Name: EXTENSION hstore; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION hstore IS 'data type for storing sets of (key, value) pairs'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: gorp_migrations; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE gorp_migrations ( + id text NOT NULL, + applied_at timestamp with time zone +); + + +-- +-- Name: history_accounts; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE history_accounts ( + id bigint NOT NULL, + address character varying(64) +); + + +-- +-- Name: history_effects; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE history_effects ( + history_account_id bigint NOT NULL, + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + type integer NOT NULL, + details jsonb +); + + +-- +-- Name: history_ledgers; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE history_ledgers ( + sequence integer NOT NULL, + ledger_hash character varying(64) NOT NULL, + previous_ledger_hash character varying(64), + transaction_count integer DEFAULT 0 NOT NULL, + operation_count integer DEFAULT 0 NOT NULL, + closed_at timestamp without time zone NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + importer_version integer DEFAULT 1 NOT NULL, + total_coins bigint NOT NULL, + fee_pool bigint NOT NULL, + base_fee integer NOT NULL, + base_reserve integer NOT NULL, + max_tx_set_size integer NOT NULL +); + + +-- +-- Name: history_operation_participants; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE history_operation_participants ( + id integer NOT NULL, + history_operation_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_operation_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_operation_participants_id_seq OWNED BY history_operation_participants.id; + + +-- +-- Name: history_operations; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE history_operations ( + id bigint NOT NULL, + transaction_id bigint NOT NULL, + application_order integer NOT NULL, + type integer NOT NULL, + details jsonb, + source_account character varying(64) DEFAULT ''::character varying NOT NULL +); + + +-- +-- Name: history_transaction_participants; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE history_transaction_participants ( + id integer NOT NULL, + transaction_hash character varying(64) NOT NULL, + account character varying(64) NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone +); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_transaction_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_transaction_participants_id_seq OWNED BY history_transaction_participants.id; + + +-- +-- Name: history_transaction_statuses; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE history_transaction_statuses ( + id integer NOT NULL, + result_code_s character varying NOT NULL, + result_code integer NOT NULL +); + + +-- +-- Name: history_transaction_statuses_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_transaction_statuses_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_transaction_statuses_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_transaction_statuses_id_seq OWNED BY history_transaction_statuses.id; + + +-- +-- Name: history_transactions; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE history_transactions ( + transaction_hash character varying(64) NOT NULL, + ledger_sequence integer NOT NULL, + application_order integer NOT NULL, + account character varying(64) NOT NULL, + account_sequence bigint NOT NULL, + fee_paid integer NOT NULL, + operation_count integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + tx_envelope text NOT NULL, + tx_result text NOT NULL, + tx_meta text NOT NULL, + tx_fee_meta text NOT NULL, + signatures character varying(96)[] DEFAULT '{}'::character varying[] NOT NULL, + memo_type character varying DEFAULT 'none'::character varying NOT NULL, + memo character varying, + time_bounds int8range +); + + +-- +-- Name: schema_migrations; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE schema_migrations ( + version character varying(255) NOT NULL +); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants ALTER COLUMN id SET DEFAULT nextval('history_operation_participants_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants ALTER COLUMN id SET DEFAULT nextval('history_transaction_participants_id_seq'::regclass); + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_statuses ALTER COLUMN id SET DEFAULT nextval('history_transaction_statuses_id_seq'::regclass); + + +-- +-- Data for Name: gorp_migrations; Type: TABLE DATA; Schema: public; Owner: - +-- + +COPY gorp_migrations (id, applied_at) FROM stdin; +1_initial_schema.sql 2016-01-20 14:27:42.612573-08 +\. + + +-- +-- Data for Name: history_accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +COPY history_accounts (id, address) FROM stdin; +1 GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H +8589938689 GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN +8589942785 GARSFJNXJIHO6ULUBK3DBYKVSIZE7SC72S5DYBCHU7DKL22UXKVD7MXP +8589946881 GAEDTJ4PPEFVW5XV2S7LUXBEHNQMX5Q2GM562RJGOQG7GVCE5H3HIB4V +\. + + +-- +-- Data for Name: history_effects; Type: TABLE DATA; Schema: public; Owner: - +-- + +COPY history_effects (history_account_id, history_operation_id, "order", type, details) FROM stdin; +8589938689 8589938689 1 0 {"starting_balance": "1000.0"} +1 8589938689 2 3 {"amount": "1000.0", "asset_type": "native"} +8589938689 8589938689 3 10 {"weight": 1, "public_key": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"} +8589942785 8589942785 1 0 {"starting_balance": "1000.0"} +1 8589942785 2 3 {"amount": "1000.0", "asset_type": "native"} +8589942785 8589942785 3 10 {"weight": 1, "public_key": "GARSFJNXJIHO6ULUBK3DBYKVSIZE7SC72S5DYBCHU7DKL22UXKVD7MXP"} +8589946881 8589946881 1 0 {"starting_balance": "1000.0"} +1 8589946881 2 3 {"amount": "1000.0", "asset_type": "native"} +8589946881 8589946881 3 10 {"weight": 1, "public_key": "GAEDTJ4PPEFVW5XV2S7LUXBEHNQMX5Q2GM562RJGOQG7GVCE5H3HIB4V"} +8589946881 12884905985 1 20 {"limit": "922337203685.4775807", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"} +8589942785 12884910081 1 20 {"limit": "922337203685.4775807", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"} +8589942785 17179873281 1 2 {"amount": "100.0", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"} +8589938689 17179873281 2 3 {"amount": "100.0", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"} +\. + + +-- +-- Data for Name: history_ledgers; Type: TABLE DATA; Schema: public; Owner: - +-- + +COPY history_ledgers (sequence, ledger_hash, previous_ledger_hash, transaction_count, operation_count, closed_at, created_at, updated_at, id, importer_version, total_coins, fee_pool, base_fee, base_reserve, max_tx_set_size) FROM stdin; +1 63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99 \N 0 0 1970-01-01 00:00:00 2016-01-28 13:12:32.778103 2016-01-28 13:12:32.778103 4294967296 5 1000000000000000000 0 100 100000000 100 +2 eb6c4b32da2ede2c9596ebfd6c7c66ec9d62e67cd61567964a6614b131185129 63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99 3 3 2016-01-28 13:12:31 2016-01-28 13:12:32.791078 2016-01-28 13:12:32.791078 8589934592 5 1000000000000000000 300 100 100000000 50 +3 e5437432f99ef3bab13b626676c6e71d7de08ab3950fc3f9ae56dc9a94aedc82 eb6c4b32da2ede2c9596ebfd6c7c66ec9d62e67cd61567964a6614b131185129 2 2 2016-01-28 13:12:32 2016-01-28 13:12:32.925118 2016-01-28 13:12:32.925118 12884901888 5 1000000000000000000 500 100 100000000 50 +4 47983630e6df8e9ca7f30ecdef498bac0c6bf2e8aaf2e5f77782e941efc50030 e5437432f99ef3bab13b626676c6e71d7de08ab3950fc3f9ae56dc9a94aedc82 2 2 2016-01-28 13:12:33 2016-01-28 13:12:32.959748 2016-01-28 13:12:32.959748 17179869184 5 1000000000000000000 700 100 100000000 50 +\. + + +-- +-- Data for Name: history_operation_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +COPY history_operation_participants (id, history_operation_id, history_account_id) FROM stdin; +12 8589938689 1 +13 8589938689 8589938689 +14 8589942785 1 +15 8589942785 8589942785 +16 8589946881 1 +17 8589946881 8589946881 +18 12884905985 8589946881 +19 12884910081 8589942785 +20 17179873281 8589938689 +21 17179873281 8589942785 +22 17179877377 8589938689 +\. + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_operation_participants_id_seq', 22, true); + + +-- +-- Data for Name: history_operations; Type: TABLE DATA; Schema: public; Owner: - +-- + +COPY history_operations (id, transaction_id, application_order, type, details, source_account) FROM stdin; +8589938689 8589938688 1 0 {"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "starting_balance": "1000.0"} GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H +8589942785 8589942784 1 0 {"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GARSFJNXJIHO6ULUBK3DBYKVSIZE7SC72S5DYBCHU7DKL22UXKVD7MXP", "starting_balance": "1000.0"} GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H +8589946881 8589946880 1 0 {"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GAEDTJ4PPEFVW5XV2S7LUXBEHNQMX5Q2GM562RJGOQG7GVCE5H3HIB4V", "starting_balance": "1000.0"} GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H +12884905985 12884905984 1 6 {"limit": "922337203685.4775807", "trustee": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "trustor": "GAEDTJ4PPEFVW5XV2S7LUXBEHNQMX5Q2GM562RJGOQG7GVCE5H3HIB4V", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"} GAEDTJ4PPEFVW5XV2S7LUXBEHNQMX5Q2GM562RJGOQG7GVCE5H3HIB4V +12884910081 12884910080 1 6 {"limit": "922337203685.4775807", "trustee": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "trustor": "GARSFJNXJIHO6ULUBK3DBYKVSIZE7SC72S5DYBCHU7DKL22UXKVD7MXP", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"} GARSFJNXJIHO6ULUBK3DBYKVSIZE7SC72S5DYBCHU7DKL22UXKVD7MXP +17179873281 17179873280 1 1 {"to": "GARSFJNXJIHO6ULUBK3DBYKVSIZE7SC72S5DYBCHU7DKL22UXKVD7MXP", "from": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "amount": "100.0", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"} GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN +17179877377 17179877376 1 3 {"price": "0.005", "amount": "500000000.0", "price_r": {"d": 200, "n": 1}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_code": "EUR", "selling_asset_type": "credit_alphanum4", "buying_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "selling_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"} GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN +\. + + +-- +-- Data for Name: history_transaction_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +COPY history_transaction_participants (id, transaction_hash, account, created_at, updated_at) FROM stdin; +12 9ff6b71bba6b24c8afc6ca53b12702566d40e9c8abf9b8439e9a3b08300e4188 GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H 2016-01-28 13:12:32.814896 2016-01-28 13:12:32.814896 +13 9ff6b71bba6b24c8afc6ca53b12702566d40e9c8abf9b8439e9a3b08300e4188 GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN 2016-01-28 13:12:32.816325 2016-01-28 13:12:32.816325 +14 afc983f7f88809442fc616c1ce425b6c8cf6d8f7493b33ff6a809003a845ec16 GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H 2016-01-28 13:12:32.864625 2016-01-28 13:12:32.864625 +15 afc983f7f88809442fc616c1ce425b6c8cf6d8f7493b33ff6a809003a845ec16 GARSFJNXJIHO6ULUBK3DBYKVSIZE7SC72S5DYBCHU7DKL22UXKVD7MXP 2016-01-28 13:12:32.865623 2016-01-28 13:12:32.865623 +16 5c71f1b198a9be6b1c7e36737bb3e32c7f258530573bc11f20827d0913ba1433 GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H 2016-01-28 13:12:32.885749 2016-01-28 13:12:32.885749 +17 5c71f1b198a9be6b1c7e36737bb3e32c7f258530573bc11f20827d0913ba1433 GAEDTJ4PPEFVW5XV2S7LUXBEHNQMX5Q2GM562RJGOQG7GVCE5H3HIB4V 2016-01-28 13:12:32.886712 2016-01-28 13:12:32.886712 +18 cdb0ce2cef61c5cab6566c1c65c5bc632f943b2bd43cfdd80984a66994cb7484 GAEDTJ4PPEFVW5XV2S7LUXBEHNQMX5Q2GM562RJGOQG7GVCE5H3HIB4V 2016-01-28 13:12:32.931558 2016-01-28 13:12:32.931558 +19 563ab1cf87e65377e015813499a6027081e63177a9ef35a0c5e0c0c2a5a918f7 GARSFJNXJIHO6ULUBK3DBYKVSIZE7SC72S5DYBCHU7DKL22UXKVD7MXP 2016-01-28 13:12:32.943808 2016-01-28 13:12:32.943808 +20 378d6013b2a9593a06a39af1a7b08a0c3e0343aa4d40a25a4be7783c54772db0 GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN 2016-01-28 13:12:32.965018 2016-01-28 13:12:32.965018 +21 378d6013b2a9593a06a39af1a7b08a0c3e0343aa4d40a25a4be7783c54772db0 GARSFJNXJIHO6ULUBK3DBYKVSIZE7SC72S5DYBCHU7DKL22UXKVD7MXP 2016-01-28 13:12:32.965972 2016-01-28 13:12:32.965972 +22 2cbac484f2328faeb48b6737c450772d59d7e1e629cd4fa184c33c9a382e8088 GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN 2016-01-28 13:12:32.983471 2016-01-28 13:12:32.983471 +\. + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_transaction_participants_id_seq', 22, true); + + +-- +-- Data for Name: history_transaction_statuses; Type: TABLE DATA; Schema: public; Owner: - +-- + +COPY history_transaction_statuses (id, result_code_s, result_code) FROM stdin; +\. + + +-- +-- Name: history_transaction_statuses_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_transaction_statuses_id_seq', 1, false); + + +-- +-- Data for Name: history_transactions; Type: TABLE DATA; Schema: public; Owner: - +-- + +COPY history_transactions (transaction_hash, ledger_sequence, application_order, account, account_sequence, fee_paid, operation_count, created_at, updated_at, id, tx_envelope, tx_result, tx_meta, tx_fee_meta, signatures, memo_type, memo, time_bounds) FROM stdin; +9ff6b71bba6b24c8afc6ca53b12702566d40e9c8abf9b8439e9a3b08300e4188 2 1 GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H 1 100 1 2016-01-28 13:12:32.809074 2016-01-28 13:12:32.809074 8589938688 AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAACVAvkAAAAAAAAAAABVvwF9wAAAEC96/+BcbMflvMQfFAQTbAKGu+6BR1M6SG/KVzTJSlIY8ovSVywuthk9dOW9jm23siTiIZE0IAl84wK83gnAcEK AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA= AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2sVNYGtQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA== {vev/gXGzH5bzEHxQEE2wChrvugUdTOkhvylc0yUpSGPKL0lcsLrYZPXTlvY5tt7Ik4iGRNCAJfOMCvN4JwHBCg==} none \N \N +afc983f7f88809442fc616c1ce425b6c8cf6d8f7493b33ff6a809003a845ec16 2 2 GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H 2 100 1 2016-01-28 13:12:32.862604 2016-01-28 13:12:32.862604 8589942784 AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAIyKlt0oO71F0CrYw4VWSMk/IX9S6PARHp8al61S6qj8AAAACVAvkAAAAAAAAAAABVvwF9wAAAECXh9/+55FmQjeMx9IMQfBn42fYY1fKAT/gb+e7P3jdSMCKiKhwoxj1bub733a2XuxPETpe79uzatzm8/KI0asI AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA= AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAACMipbdKDu9RdAq2MOFVkjJPyF/UujwER6fGpetUuqo/AAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rv9MNtQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/84AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA== {l4ff/ueRZkI3jMfSDEHwZ+Nn2GNXygE/4G/nuz943UjAioiocKMY9W7m+992tl7sTxE6Xu/bs2rc5vPyiNGrCA==} none \N \N +5c71f1b198a9be6b1c7e36737bb3e32c7f258530573bc11f20827d0913ba1433 2 3 GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H 3 100 1 2016-01-28 13:12:32.883848 2016-01-28 13:12:32.883848 8589946880 AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAACDmnj3kLW3b11L66XCQ7YMv2GjM77UUmdA3zVETp9nQAAAACVAvkAAAAAAAAAAABVvwF9wAAAEBdnUBKCV3HlHOqp5iNLsP8auaNCvxDeBp+0C+lwPYUNrzRALQRDJDWuKfExmsRrEnW8LKJbMdeW9ilLaEc2lAO AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA= AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAAg5p495C1t29dS+ulwkO2DL9hozO+1FJnQN81RE6fZ0AAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rKtAUtQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/7UAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA== {XZ1ASgldx5RzqqeYjS7D/GrmjQr8Q3gaftAvpcD2FDa80QC0EQyQ1rinxMZrEaxJ1vCyiWzHXlvYpS2hHNpQDg==} none \N \N +cdb0ce2cef61c5cab6566c1c65c5bc632f943b2bd43cfdd80984a66994cb7484 3 1 GAEDTJ4PPEFVW5XV2S7LUXBEHNQMX5Q2GM562RJGOQG7GVCE5H3HIB4V 8589934593 100 1 2016-01-28 13:12:32.929608 2016-01-28 13:12:32.929608 12884905984 AAAAAAg5p495C1t29dS+ulwkO2DL9hozO+1FJnQN81RE6fZ0AAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFae3//////////AAAAAAAAAAFE6fZ0AAAAQNSm/BIxP9LwabXoBKigrTG85o/PUp6VOWh/ne6mMaT5hvehDUvbRHQghJ/SZTDfjD+FPPjbe3nzcJEun1EX4g0= AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA= AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAAg5p495C1t29dS+ulwkO2DL9hozO+1FJnQN81RE6fZ0AAAAAUVVUgAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAg5p495C1t29dS+ulwkO2DL9hozO+1FJnQN81RE6fZ0AAAAAlQL45wAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA AAAAAgAAAAMAAAACAAAAAAAAAAAIOaePeQtbdvXUvrpcJDtgy/YaMzvtRSZ0DfNUROn2dAAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAIOaePeQtbdvXUvrpcJDtgy/YaMzvtRSZ0DfNUROn2dAAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA== {1Kb8EjE/0vBptegEqKCtMbzmj89SnpU5aH+d7qYxpPmG96ENS9tEdCCEn9JlMN+MP4U8+Nt7efNwkS6fURfiDQ==} none \N \N +563ab1cf87e65377e015813499a6027081e63177a9ef35a0c5e0c0c2a5a918f7 3 2 GARSFJNXJIHO6ULUBK3DBYKVSIZE7SC72S5DYBCHU7DKL22UXKVD7MXP 8589934593 100 1 2016-01-28 13:12:32.941872 2016-01-28 13:12:32.941872 12884910080 AAAAACMipbdKDu9RdAq2MOFVkjJPyF/UujwER6fGpetUuqo/AAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFae3//////////AAAAAAAAAAFUuqo/AAAAQKblh64EFK4tp2+xohOkNaSdfMFDId/y4nop7dVmZRsbe4f/eVCpUrKQCRWLJ4bXzMpPTOTsjHRIxOa8WekP+ww= AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA= AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAACMipbdKDu9RdAq2MOFVkjJPyF/UujwER6fGpetUuqo/AAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAACMipbdKDu9RdAq2MOFVkjJPyF/UujwER6fGpetUuqo/AAAAAlQL45wAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA AAAAAgAAAAMAAAACAAAAAAAAAAAjIqW3Sg7vUXQKtjDhVZIyT8hf1Lo8BEenxqXrVLqqPwAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAjIqW3Sg7vUXQKtjDhVZIyT8hf1Lo8BEenxqXrVLqqPwAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA== {puWHrgQUri2nb7GiE6Q1pJ18wUMh3/Lieint1WZlGxt7h/95UKlSspAJFYsnhtfMyk9M5OyMdEjE5rxZ6Q/7DA==} none \N \N +378d6013b2a9593a06a39af1a7b08a0c3e0343aa4d40a25a4be7783c54772db0 4 1 GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN 8589934593 100 1 2016-01-28 13:12:32.963001 2016-01-28 13:12:32.963001 17179873280 AAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAIyKlt0oO71F0CrYw4VWSMk/IX9S6PARHp8al61S6qj8AAAABVVNEAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAA7msoAAAAAAAAAAAH7AVp7AAAAQCu9txN5x6V3x+mwh4bAOjpOgPUcAN31dyLno7dO+5x7IK/EiNNHqeZyX5LUzFiTrziAqc5vbXumgAEUAT/ySg8= AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA= AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAACMipbdKDu9RdAq2MOFVkjJPyF/UujwER6fGpetUuqo/AAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAACMipbdKDu9RdAq2MOFVkjJPyF/UujwER6fGpetUuqo/AAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAO5rKAH//////////AAAAAQAAAAAAAAAA AAAAAgAAAAMAAAACAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA== {K723E3nHpXfH6bCHhsA6Ok6A9RwA3fV3Iuejt077nHsgr8SI00ep5nJfktTMWJOvOICpzm9te6aAARQBP/JKDw==} none \N \N +2cbac484f2328faeb48b6737c450772d59d7e1e629cd4fa184c33c9a382e8088 4 2 GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN 8589934594 100 1 2016-01-28 13:12:32.981612 2016-01-28 13:12:32.981612 17179877376 AAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7ABHDeTfggAAAAAABAAAAyAAAAAAAAAAAAAAAAAAAAAH7AVp7AAAAQGGrF68lXVUuSVER4z2l1pVsS2YRp2hOCzuVvDgyd4ivINe4tAx/+lS6PYwop+mJ0yluyulE2gsUNaeKVT7hTAw= AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAAAAAEAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7ABHDeTfggAAAAAABAAAAyAAAAAAAAAAAAAAAAA== AAAAAAAAAAEAAAACAAAAAAAAAAQAAAACAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAAAAAEAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7ABHDeTfggAAAAAABAAAAyAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+M4AAAAAgAAAAIAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA== AAAAAQAAAAEAAAAEAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+M4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA== {YasXryVdVS5JURHjPaXWlWxLZhGnaE4LO5W8ODJ3iK8g17i0DH/6VLo9jCin6YnTKW7K6UTaCxQ1p4pVPuFMDA==} none \N \N +\. + + +-- +-- Data for Name: schema_migrations; Type: TABLE DATA; Schema: public; Owner: - +-- + +COPY schema_migrations (version) FROM stdin; +20150310224849 +20150313225945 +20150313225955 +20150501160031 +20150508003829 +20150508175821 +20150508183542 +20150508215546 +20150609230237 +20150629181921 +20150825180131 +20150825223417 +20150902224148 +20150929205440 +20151006205250 +20151011210811 +20151020211921 +20151020225251 +20151020235257 +\. + + +-- +-- Name: gorp_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- + +ALTER TABLE ONLY gorp_migrations + ADD CONSTRAINT gorp_migrations_pkey PRIMARY KEY (id); + + +-- +-- Name: history_operation_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- + +ALTER TABLE ONLY history_operation_participants + ADD CONSTRAINT history_operation_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: history_transaction_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- + +ALTER TABLE ONLY history_transaction_participants + ADD CONSTRAINT history_transaction_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: history_transaction_statuses_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- + +ALTER TABLE ONLY history_transaction_statuses + ADD CONSTRAINT history_transaction_statuses_pkey PRIMARY KEY (id); + + +-- +-- Name: by_account; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX by_account ON history_transactions USING btree (account, account_sequence); + + +-- +-- Name: by_hash; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX by_hash ON history_transactions USING btree (transaction_hash); + + +-- +-- Name: by_ledger; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX by_ledger ON history_transactions USING btree (ledger_sequence, application_order); + + +-- +-- Name: hist_e_by_order; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX hist_e_by_order ON history_effects USING btree (history_operation_id, "order"); + + +-- +-- Name: hist_e_id; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX hist_e_id ON history_effects USING btree (history_account_id, history_operation_id, "order"); + + +-- +-- Name: hist_op_p_id; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX hist_op_p_id ON history_operation_participants USING btree (history_account_id, history_operation_id); + + +-- +-- Name: hs_ledger_by_id; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX hs_ledger_by_id ON history_ledgers USING btree (id); + + +-- +-- Name: hs_transaction_by_id; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX hs_transaction_by_id ON history_transactions USING btree (id); + + +-- +-- Name: index_history_accounts_on_address; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX index_history_accounts_on_address ON history_accounts USING btree (address); + + +-- +-- Name: index_history_accounts_on_id; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX index_history_accounts_on_id ON history_accounts USING btree (id); + + +-- +-- Name: index_history_effects_on_type; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX index_history_effects_on_type ON history_effects USING btree (type); + + +-- +-- Name: index_history_ledgers_on_closed_at; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX index_history_ledgers_on_closed_at ON history_ledgers USING btree (closed_at); + + +-- +-- Name: index_history_ledgers_on_id; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_id ON history_ledgers USING btree (id); + + +-- +-- Name: index_history_ledgers_on_importer_version; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX index_history_ledgers_on_importer_version ON history_ledgers USING btree (importer_version); + + +-- +-- Name: index_history_ledgers_on_ledger_hash; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_ledger_hash ON history_ledgers USING btree (ledger_hash); + + +-- +-- Name: index_history_ledgers_on_previous_ledger_hash; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_previous_ledger_hash ON history_ledgers USING btree (previous_ledger_hash); + + +-- +-- Name: index_history_ledgers_on_sequence; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_sequence ON history_ledgers USING btree (sequence); + + +-- +-- Name: index_history_operations_on_id; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX index_history_operations_on_id ON history_operations USING btree (id); + + +-- +-- Name: index_history_operations_on_transaction_id; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX index_history_operations_on_transaction_id ON history_operations USING btree (transaction_id); + + +-- +-- Name: index_history_operations_on_type; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX index_history_operations_on_type ON history_operations USING btree (type); + + +-- +-- Name: index_history_transaction_participants_on_account; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX index_history_transaction_participants_on_account ON history_transaction_participants USING btree (account); + + +-- +-- Name: index_history_transaction_participants_on_transaction_hash; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX index_history_transaction_participants_on_transaction_hash ON history_transaction_participants USING btree (transaction_hash); + + +-- +-- Name: index_history_transaction_statuses_lc_on_all; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX index_history_transaction_statuses_lc_on_all ON history_transaction_statuses USING btree (id, result_code, result_code_s); + + +-- +-- Name: index_history_transactions_on_id; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX index_history_transactions_on_id ON history_transactions USING btree (id); + + +-- +-- Name: trade_effects_by_order_book; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX trade_effects_by_order_book ON history_effects USING btree (((details ->> 'sold_asset_type'::text)), ((details ->> 'sold_asset_code'::text)), ((details ->> 'sold_asset_issuer'::text)), ((details ->> 'bought_asset_type'::text)), ((details ->> 'bought_asset_code'::text)), ((details ->> 'bought_asset_issuer'::text))) WHERE (type = 33); + + +-- +-- Name: unique_schema_migrations; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE UNIQUE INDEX unique_schema_migrations ON schema_migrations USING btree (version); + + +-- +-- Name: public; Type: ACL; Schema: -; Owner: - +-- + +REVOKE ALL ON SCHEMA public FROM PUBLIC; +REVOKE ALL ON SCHEMA public FROM nullstyle; +GRANT ALL ON SCHEMA public TO nullstyle; +GRANT ALL ON SCHEMA public TO PUBLIC; + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/base-core.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/base-core.sql new file mode 100644 index 0000000..e02589b --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/base-core.sql @@ -0,0 +1,693 @@ +running recipe +recipe finished, closing ledger +ledger closed +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; +SET row_security = off; + +SET search_path = public, pg_catalog; + +DROP INDEX IF EXISTS public.signersaccount; +DROP INDEX IF EXISTS public.sellingissuerindex; +DROP INDEX IF EXISTS public.scpquorumsbyseq; +DROP INDEX IF EXISTS public.scpenvsbyseq; +DROP INDEX IF EXISTS public.priceindex; +DROP INDEX IF EXISTS public.ledgersbyseq; +DROP INDEX IF EXISTS public.histfeebyseq; +DROP INDEX IF EXISTS public.histbyseq; +DROP INDEX IF EXISTS public.buyingissuerindex; +DROP INDEX IF EXISTS public.accountbalances; +ALTER TABLE IF EXISTS ONLY public.txhistory DROP CONSTRAINT IF EXISTS txhistory_pkey; +ALTER TABLE IF EXISTS ONLY public.txfeehistory DROP CONSTRAINT IF EXISTS txfeehistory_pkey; +ALTER TABLE IF EXISTS ONLY public.trustlines DROP CONSTRAINT IF EXISTS trustlines_pkey; +ALTER TABLE IF EXISTS ONLY public.storestate DROP CONSTRAINT IF EXISTS storestate_pkey; +ALTER TABLE IF EXISTS ONLY public.signers DROP CONSTRAINT IF EXISTS signers_pkey; +ALTER TABLE IF EXISTS ONLY public.scpquorums DROP CONSTRAINT IF EXISTS scpquorums_pkey; +ALTER TABLE IF EXISTS ONLY public.pubsub DROP CONSTRAINT IF EXISTS pubsub_pkey; +ALTER TABLE IF EXISTS ONLY public.publishqueue DROP CONSTRAINT IF EXISTS publishqueue_pkey; +ALTER TABLE IF EXISTS ONLY public.peers DROP CONSTRAINT IF EXISTS peers_pkey; +ALTER TABLE IF EXISTS ONLY public.offers DROP CONSTRAINT IF EXISTS offers_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_ledgerseq_key; +ALTER TABLE IF EXISTS ONLY public.ban DROP CONSTRAINT IF EXISTS ban_pkey; +ALTER TABLE IF EXISTS ONLY public.accounts DROP CONSTRAINT IF EXISTS accounts_pkey; +ALTER TABLE IF EXISTS ONLY public.accountdata DROP CONSTRAINT IF EXISTS accountdata_pkey; +DROP TABLE IF EXISTS public.txhistory; +DROP TABLE IF EXISTS public.txfeehistory; +DROP TABLE IF EXISTS public.trustlines; +DROP TABLE IF EXISTS public.storestate; +DROP TABLE IF EXISTS public.signers; +DROP TABLE IF EXISTS public.scpquorums; +DROP TABLE IF EXISTS public.scphistory; +DROP TABLE IF EXISTS public.pubsub; +DROP TABLE IF EXISTS public.publishqueue; +DROP TABLE IF EXISTS public.peers; +DROP TABLE IF EXISTS public.offers; +DROP TABLE IF EXISTS public.ledgerheaders; +DROP TABLE IF EXISTS public.ban; +DROP TABLE IF EXISTS public.accounts; +DROP TABLE IF EXISTS public.accountdata; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: accountdata; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accountdata ( + accountid character varying(56) NOT NULL, + dataname character varying(64) NOT NULL, + datavalue character varying(112) NOT NULL, + lastmodified integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accounts ( + accountid character varying(56) NOT NULL, + balance bigint NOT NULL, + seqnum bigint NOT NULL, + numsubentries integer NOT NULL, + inflationdest character varying(56), + homedomain character varying(32) NOT NULL, + thresholds text NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT accounts_balance_check CHECK ((balance >= 0)), + CONSTRAINT accounts_numsubentries_check CHECK ((numsubentries >= 0)) +); + + +-- +-- Name: ban; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ban ( + nodeid character(56) NOT NULL +); + + +-- +-- Name: ledgerheaders; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ledgerheaders ( + ledgerhash character(64) NOT NULL, + prevhash character(64) NOT NULL, + bucketlisthash character(64) NOT NULL, + ledgerseq integer, + closetime bigint NOT NULL, + data text NOT NULL, + CONSTRAINT ledgerheaders_closetime_check CHECK ((closetime >= 0)), + CONSTRAINT ledgerheaders_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: offers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE offers ( + sellerid character varying(56) NOT NULL, + offerid bigint NOT NULL, + sellingassettype integer NOT NULL, + sellingassetcode character varying(12), + sellingissuer character varying(56), + buyingassettype integer NOT NULL, + buyingassetcode character varying(12), + buyingissuer character varying(56), + amount bigint NOT NULL, + pricen integer NOT NULL, + priced integer NOT NULL, + price double precision NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT offers_amount_check CHECK ((amount >= 0)), + CONSTRAINT offers_offerid_check CHECK ((offerid >= 0)) +); + + +-- +-- Name: peers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE peers ( + ip character varying(15) NOT NULL, + port integer DEFAULT 0 NOT NULL, + nextattempt timestamp without time zone NOT NULL, + numfailures integer DEFAULT 0 NOT NULL, + CONSTRAINT peers_numfailures_check CHECK ((numfailures >= 0)), + CONSTRAINT peers_port_check CHECK (((port > 0) AND (port <= 65535))) +); + + +-- +-- Name: publishqueue; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE publishqueue ( + ledger integer NOT NULL, + state text +); + + +-- +-- Name: pubsub; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE pubsub ( + resid character(32) NOT NULL, + lastread integer +); + + +-- +-- Name: scphistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scphistory ( + nodeid character(56) NOT NULL, + ledgerseq integer NOT NULL, + envelope text NOT NULL, + CONSTRAINT scphistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: scpquorums; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scpquorums ( + qsethash character(64) NOT NULL, + lastledgerseq integer NOT NULL, + qset text NOT NULL, + CONSTRAINT scpquorums_lastledgerseq_check CHECK ((lastledgerseq >= 0)) +); + + +-- +-- Name: signers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE signers ( + accountid character varying(56) NOT NULL, + publickey character varying(56) NOT NULL, + weight integer NOT NULL +); + + +-- +-- Name: storestate; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE storestate ( + statename character(32) NOT NULL, + state text +); + + +-- +-- Name: trustlines; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE trustlines ( + accountid character varying(56) NOT NULL, + assettype integer NOT NULL, + issuer character varying(56) NOT NULL, + assetcode character varying(12) NOT NULL, + tlimit bigint NOT NULL, + balance bigint NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT trustlines_balance_check CHECK ((balance >= 0)), + CONSTRAINT trustlines_tlimit_check CHECK ((tlimit > 0)) +); + + +-- +-- Name: txfeehistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txfeehistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txchanges text NOT NULL, + CONSTRAINT txfeehistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: txhistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txhistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txbody text NOT NULL, + txresult text NOT NULL, + txmeta text NOT NULL, + CONSTRAINT txhistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Data for Name: accountdata; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO accounts VALUES ('GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2', 1000000000, 8589934592, 0, NULL, '', 'AQAAAA==', 0, 2); +INSERT INTO accounts VALUES ('GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 999999996999999700, 3, 0, NULL, '', 'AQAAAA==', 0, 2); +INSERT INTO accounts VALUES ('GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 1050000000, 8589934592, 0, NULL, '', 'AQAAAA==', 0, 3); +INSERT INTO accounts VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 949999900, 8589934593, 0, NULL, '', 'AQAAAA==', 0, 3); + + +-- +-- Data for Name: ban; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: ledgerheaders; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO ledgerheaders VALUES ('63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', '0000000000000000000000000000000000000000000000000000000000000000', '572a2e32ff248a07b0e70fd1f6d318c1facd20b6cc08c33d5775259868125a16', 1, 0, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXKi4y/ySKB7DnD9H20xjB+s0gtswIwz1XdSWYaBJaFgAAAAEN4Lazp2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAX14QAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('228c4d0513b0fea9e91ad14c9aa7e5af480c108b576810fa93f545cf4758aa21', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', '8eb63d15a9e8c24469fc0382b02678bb9ea79abbfd04861fc693cc840e6ee71e', 2, 1508958216, 'AAAACGPZj1Nu5o0bJ7W4nyOvUxG3Vpok+vFAOtC1K2M7B76ZlmEdOpVCM5HLr9FNj55qa6w2HKMtqTPFLvG8yPU/aAoAAAAAWfDgCAAAAAIAAAAIAAAAAQAAAAgAAAAIAAAAAwAAJxAAAAAARUAVxJm1lDMwwqujKcyQzs97F/AETiCgQPrw63wqaPGOtj0VqejCRGn8A4KwJni7nqeau/0Ehh/Gk8yEDm7nHgAAAAIN4Lazp2QAAAAAAAAAAAEsAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('24bd4d1242dab0de60cafcb49a4d18390cbe135af48244241b2132bb15f1a0ec', '228c4d0513b0fea9e91ad14c9aa7e5af480c108b576810fa93f545cf4758aa21', '205d6ca1f76a7635564b509b3df0b5db6571ebb66c04366b1930473c99992ae8', 3, 1508958217, 'AAAACCKMTQUTsP6p6RrRTJqn5a9IDBCLV2gQ+pP1Rc9HWKohYPiCowG1z0iIboQ5WtUn8+5eGDNgqfbmmzSC0uTHffQAAAAAWfDgCQAAAAAAAAAAFMKJva6QmOlDLtejYbhpYI7SUKOfeJbIdkqj9wO1AtogXWyh92p2NVZLUJs98LXbZXHrtmwENmsZMEc8mZkq6AAAAAMN4Lazp2QAAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); + + +-- +-- Data for Name: offers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: peers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: publishqueue; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: pubsub; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: scphistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scphistory VALUES ('GBV4IXIQBICRZKQZ35RBOSLOIM5OW35BF67C5ZRPCVEQHYOS547OXMHV', 2, 'AAAAAGvEXRAKBRyqGd9iF0luQzrrb6Evvi7mLxVJA+HS7z7rAAAAAAAAAAIAAAACAAAAAQAAAEiWYR06lUIzkcuv0U2PnmprrDYcoy2pM8Uu8bzI9T9oCgAAAABZ8OAIAAAAAgAAAAgAAAABAAAACAAAAAgAAAADAAAnEAAAAAAAAAABGDts7b/j8S08gSGtre3x8jfvhnD+XcbRn0p6KJREZmoAAABA827CEFVo2KpJcCxcNEJ2ivxYDeHPx1qltVbA7xDZ8Dg8/hC/yIqlVnRFkCQ39SM86r8svcqy6t/HBlKq5eT0CQ=='); +INSERT INTO scphistory VALUES ('GBV4IXIQBICRZKQZ35RBOSLOIM5OW35BF67C5ZRPCVEQHYOS547OXMHV', 3, 'AAAAAGvEXRAKBRyqGd9iF0luQzrrb6Evvi7mLxVJA+HS7z7rAAAAAAAAAAMAAAACAAAAAQAAADBg+IKjAbXPSIhuhDla1Sfz7l4YM2Cp9uabNILS5Md99AAAAABZ8OAJAAAAAAAAAAAAAAABGDts7b/j8S08gSGtre3x8jfvhnD+XcbRn0p6KJREZmoAAABAyyJapbH8Jty3d0fIqzpncKju67WC0yiR7P9CYWrnB7oRwwasP+RnPDjORxOWpttyURCuTJcBVGJTh4nHdEmzAw=='); + + +-- +-- Data for Name: scpquorums; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scpquorums VALUES ('183b6cedbfe3f12d3c8121adadedf1f237ef8670fe5dc6d19f4a7a289444666a', 3, 'AAAAAQAAAAEAAAAAa8RdEAoFHKoZ32IXSW5DOutvoS++LuYvFUkD4dLvPusAAAAA'); + + +-- +-- Data for Name: signers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: storestate; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO storestate VALUES ('databaseschema ', '5'); +INSERT INTO storestate VALUES ('forcescponnextlaunch ', 'false'); +INSERT INTO storestate VALUES ('lastclosedledger ', '24bd4d1242dab0de60cafcb49a4d18390cbe135af48244241b2132bb15f1a0ec'); +INSERT INTO storestate VALUES ('historyarchivestate ', '{ + "version": 1, + "server": "v0.6.3-66-gd66575cf", + "currentLedger": 3, + "currentBuckets": [ + { + "curr": "554613ed35728190bdae94709f59b195fbe9f90bb0841f5de57c15172f90f06a", + "next": { + "state": 0 + }, + "snap": "ef31a20a398ee73ce22275ea8177786bac54656f33dcc4f3fec60d55ddf163d9" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 1, + "output": "ef31a20a398ee73ce22275ea8177786bac54656f33dcc4f3fec60d55ddf163d9" + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + } + ] +}'); +INSERT INTO storestate VALUES ('lastscpdata ', 'AAAAAgAAAABrxF0QCgUcqhnfYhdJbkM662+hL74u5i8VSQPh0u8+6wAAAAAAAAADAAAAAxg7bO2/4/EtPIEhra3t8fI374Zw/l3G0Z9KeiiURGZqAAAAAQAAADBg+IKjAbXPSIhuhDla1Sfz7l4YM2Cp9uabNILS5Md99AAAAABZ8OAJAAAAAAAAAAAAAAABAAAAMGD4gqMBtc9IiG6EOVrVJ/PuXhgzYKn25ps0gtLkx330AAAAAFnw4AkAAAAAAAAAAAAAAEBf/I9ADPsnwMhRjEU5XgUlME7B7GgUVLz++7R9QzY6rzpOi23lPVTg1bwuEQrNmKeaWp85T6/hTpGu2I5/YAwFAAAAAGvEXRAKBRyqGd9iF0luQzrrb6Evvi7mLxVJA+HS7z7rAAAAAAAAAAMAAAACAAAAAQAAADBg+IKjAbXPSIhuhDla1Sfz7l4YM2Cp9uabNILS5Md99AAAAABZ8OAJAAAAAAAAAAAAAAABGDts7b/j8S08gSGtre3x8jfvhnD+XcbRn0p6KJREZmoAAABAyyJapbH8Jty3d0fIqzpncKju67WC0yiR7P9CYWrnB7oRwwasP+RnPDjORxOWpttyURCuTJcBVGJTh4nHdEmzAwAAAAEijE0FE7D+qeka0Uyap+WvSAwQi1doEPqT9UXPR1iqIQAAAAEAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAABkAAAAAgAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAAAAAAAAAvrwgAAAAAAAAAABruS+TAAAAED0+72mPKRxFLrSWo4uo3wUfPbjhA/xtpg15NMlkiWvdJtELXeoSv24/g5EODIIH+By6DYYqsMy4rRJPdA5opQHAAAAAQAAAAEAAAABAAAAAGvEXRAKBRyqGd9iF0luQzrrb6Evvi7mLxVJA+HS7z7rAAAAAA=='); + + +-- +-- Data for Name: trustlines; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: txfeehistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txfeehistory VALUES ('2374e99349b9ef7dba9a5db3339b78fda8f34777b1af33ba468ad5c0df946d4d', 2, 1, 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('164a5064eba64f2cdbadb856bf3448485fc626247ada3ed39cddf0f6902133b6', 2, 2, 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/84AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('2b2e82dbabb024b27a0c3140ca71d8ac9bc71831f9f5a3bd69eca3d88fb0ec5c', 2, 3, 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/7UAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('cebb875a00ff6e1383aef0fd251a76f22c1f9ab2a2dffcb077855736ade2659a', 3, 1, 'AAAAAgAAAAMAAAACAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); + + +-- +-- Data for Name: txhistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txhistory VALUES ('2374e99349b9ef7dba9a5db3339b78fda8f34777b1af33ba468ad5c0df946d4d', 2, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAO5rKAAAAAAAAAAABVvwF9wAAAECDzqvkQBQoNAJifPRXDoLhvtycT3lFPCQ51gkdsFHaBNWw05S/VhW0Xgkr0CBPE4NaFV2Kmcs3ZwLmib4TRrML', 'I3Tpk0m57326ml2zM5t4/ajzR3exrzO6RorVwN+UbU0AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2s2vJNNQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('164a5064eba64f2cdbadb856bf3448485fc626247ada3ed39cddf0f6902133b6', 2, 2, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAO2C/AO45YBD3tHVFO1R3A0MekP8JR6nN1A9eWidyItUAAAAAO5rKAAAAAAAAAAABVvwF9wAAAEASEZiZbeFwCsrKBnKIus/05VtJDBrgosuhLQ/U6XUj4twWyhs7UtS4CMexOM6JqcfqJK10WlBkkwn4g8PIfjIG', 'FkpQZOumTyzbrbhWvzRISF/GJiR62j7TnN3w9pAhM7YAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2szAuatQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('2b2e82dbabb024b27a0c3140ca71d8ac9bc71831f9f5a3bd69eca3d88fb0ec5c', 2, 3, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAAAO5rKAAAAAAAAAAABVvwF9wAAAEDJul1tLGLF4Vxwt0dDCVEf6tb5l4byMrGgCp+lVZMmxct54iNf2mxtjx6Md5ZJ4E4Dlcsf46EAhBGSUPsn8fYD', 'Ky6C26uwJLJ6DDFAynHYrJvHGDH59aO9aeyj2I+w7FwAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2svSToNQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('cebb875a00ff6e1383aef0fd251a76f22c1f9ab2a2dffcb077855736ade2659a', 3, 1, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAAAAAAAAAL68IAAAAAAAAAAAa7kvkwAAABA9Pu9pjykcRS60lqOLqN8FHz244QP8baYNeTTJZIlr3SbRC13qEr9uP4ORDgyCB/gcug2GKrDMuK0ST3QOaKUBw==', 'zruHWgD/bhODrvD9JRp28iwfmrKi3/ywd4VXNq3iZZoAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAADAAAAAwAAAAIAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAD6VuoAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAADif2RwAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); + + +-- +-- Name: accountdata accountdata_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accountdata + ADD CONSTRAINT accountdata_pkey PRIMARY KEY (accountid, dataname); + + +-- +-- Name: accounts accounts_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accounts + ADD CONSTRAINT accounts_pkey PRIMARY KEY (accountid); + + +-- +-- Name: ban ban_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ban + ADD CONSTRAINT ban_pkey PRIMARY KEY (nodeid); + + +-- +-- Name: ledgerheaders ledgerheaders_ledgerseq_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_ledgerseq_key UNIQUE (ledgerseq); + + +-- +-- Name: ledgerheaders ledgerheaders_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_pkey PRIMARY KEY (ledgerhash); + + +-- +-- Name: offers offers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY offers + ADD CONSTRAINT offers_pkey PRIMARY KEY (offerid); + + +-- +-- Name: peers peers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY peers + ADD CONSTRAINT peers_pkey PRIMARY KEY (ip, port); + + +-- +-- Name: publishqueue publishqueue_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY publishqueue + ADD CONSTRAINT publishqueue_pkey PRIMARY KEY (ledger); + + +-- +-- Name: pubsub pubsub_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY pubsub + ADD CONSTRAINT pubsub_pkey PRIMARY KEY (resid); + + +-- +-- Name: scpquorums scpquorums_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY scpquorums + ADD CONSTRAINT scpquorums_pkey PRIMARY KEY (qsethash); + + +-- +-- Name: signers signers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY signers + ADD CONSTRAINT signers_pkey PRIMARY KEY (accountid, publickey); + + +-- +-- Name: storestate storestate_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY storestate + ADD CONSTRAINT storestate_pkey PRIMARY KEY (statename); + + +-- +-- Name: trustlines trustlines_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY trustlines + ADD CONSTRAINT trustlines_pkey PRIMARY KEY (accountid, issuer, assetcode); + + +-- +-- Name: txfeehistory txfeehistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txfeehistory + ADD CONSTRAINT txfeehistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: txhistory txhistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txhistory + ADD CONSTRAINT txhistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: accountbalances; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX accountbalances ON accounts USING btree (balance) WHERE (balance >= 1000000000); + + +-- +-- Name: buyingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX buyingissuerindex ON offers USING btree (buyingissuer); + + +-- +-- Name: histbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histbyseq ON txhistory USING btree (ledgerseq); + + +-- +-- Name: histfeebyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histfeebyseq ON txfeehistory USING btree (ledgerseq); + + +-- +-- Name: ledgersbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX ledgersbyseq ON ledgerheaders USING btree (ledgerseq); + + +-- +-- Name: priceindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX priceindex ON offers USING btree (price); + + +-- +-- Name: scpenvsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpenvsbyseq ON scphistory USING btree (ledgerseq); + + +-- +-- Name: scpquorumsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpquorumsbyseq ON scpquorums USING btree (lastledgerseq); + + +-- +-- Name: sellingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX sellingissuerindex ON offers USING btree (sellingissuer); + + +-- +-- Name: signersaccount; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX signersaccount ON signers USING btree (accountid); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/base-horizon.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/base-horizon.sql new file mode 100644 index 0000000..783477e --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/base-horizon.sql @@ -0,0 +1,782 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; + +SET search_path = public, pg_catalog; + +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_account_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_account_id_fkey; +DROP INDEX IF EXISTS public.trade_effects_by_order_book; +DROP INDEX IF EXISTS public.index_history_transactions_on_id; +DROP INDEX IF EXISTS public.index_history_operations_on_type; +DROP INDEX IF EXISTS public.index_history_operations_on_transaction_id; +DROP INDEX IF EXISTS public.index_history_operations_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_sequence; +DROP INDEX IF EXISTS public.index_history_ledgers_on_previous_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_importer_version; +DROP INDEX IF EXISTS public.index_history_ledgers_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_closed_at; +DROP INDEX IF EXISTS public.index_history_effects_on_type; +DROP INDEX IF EXISTS public.index_history_accounts_on_id; +DROP INDEX IF EXISTS public.index_history_accounts_on_address; +DROP INDEX IF EXISTS public.htrd_time_lookup; +DROP INDEX IF EXISTS public.htrd_pid; +DROP INDEX IF EXISTS public.htrd_pair_time_lookup; +DROP INDEX IF EXISTS public.htrd_counter_lookup; +DROP INDEX IF EXISTS public.htrd_by_offer; +DROP INDEX IF EXISTS public.htp_by_htid; +DROP INDEX IF EXISTS public.hs_transaction_by_id; +DROP INDEX IF EXISTS public.hs_ledger_by_id; +DROP INDEX IF EXISTS public.hop_by_hoid; +DROP INDEX IF EXISTS public.hist_tx_p_id; +DROP INDEX IF EXISTS public.hist_op_p_id; +DROP INDEX IF EXISTS public.hist_e_id; +DROP INDEX IF EXISTS public.hist_e_by_order; +DROP INDEX IF EXISTS public.by_ledger; +DROP INDEX IF EXISTS public.by_hash; +DROP INDEX IF EXISTS public.by_account; +DROP INDEX IF EXISTS public.asset_by_issuer; +ALTER TABLE IF EXISTS ONLY public.history_transaction_participants DROP CONSTRAINT IF EXISTS history_transaction_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_operation_participants DROP CONSTRAINT IF EXISTS history_operation_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_asset_code_asset_type_asset_issuer_key; +ALTER TABLE IF EXISTS ONLY public.gorp_migrations DROP CONSTRAINT IF EXISTS gorp_migrations_pkey; +ALTER TABLE IF EXISTS public.history_transaction_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_operation_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_assets ALTER COLUMN id DROP DEFAULT; +DROP TABLE IF EXISTS public.history_transactions; +DROP SEQUENCE IF EXISTS public.history_transaction_participants_id_seq; +DROP TABLE IF EXISTS public.history_transaction_participants; +DROP TABLE IF EXISTS public.history_trades; +DROP TABLE IF EXISTS public.history_operations; +DROP SEQUENCE IF EXISTS public.history_operation_participants_id_seq; +DROP TABLE IF EXISTS public.history_operation_participants; +DROP TABLE IF EXISTS public.history_ledgers; +DROP TABLE IF EXISTS public.history_effects; +DROP SEQUENCE IF EXISTS public.history_assets_id_seq; +DROP TABLE IF EXISTS public.history_assets; +DROP TABLE IF EXISTS public.history_accounts; +DROP SEQUENCE IF EXISTS public.history_accounts_id_seq; +DROP TABLE IF EXISTS public.gorp_migrations; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: gorp_migrations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE gorp_migrations ( + id text NOT NULL, + applied_at timestamp with time zone +); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_accounts_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_accounts ( + id bigint DEFAULT nextval('history_accounts_id_seq'::regclass) NOT NULL, + address character varying(64) +); + + +-- +-- Name: history_assets; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_assets ( + id integer NOT NULL, + asset_type character varying(64) NOT NULL, + asset_code character varying(12) NOT NULL, + asset_issuer character varying(56) NOT NULL +); + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_assets_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_assets_id_seq OWNED BY history_assets.id; + + +-- +-- Name: history_effects; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_effects ( + history_account_id bigint NOT NULL, + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + type integer NOT NULL, + details jsonb +); + + +-- +-- Name: history_ledgers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_ledgers ( + sequence integer NOT NULL, + ledger_hash character varying(64) NOT NULL, + previous_ledger_hash character varying(64), + transaction_count integer DEFAULT 0 NOT NULL, + operation_count integer DEFAULT 0 NOT NULL, + closed_at timestamp without time zone NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + importer_version integer DEFAULT 1 NOT NULL, + total_coins bigint NOT NULL, + fee_pool bigint NOT NULL, + base_fee integer NOT NULL, + base_reserve integer NOT NULL, + max_tx_set_size integer NOT NULL, + protocol_version integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: history_operation_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operation_participants ( + id integer NOT NULL, + history_operation_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_operation_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_operation_participants_id_seq OWNED BY history_operation_participants.id; + + +-- +-- Name: history_operations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operations ( + id bigint NOT NULL, + transaction_id bigint NOT NULL, + application_order integer NOT NULL, + type integer NOT NULL, + details jsonb, + source_account character varying(64) DEFAULT ''::character varying NOT NULL +); + + +-- +-- Name: history_trades; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_trades ( + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + ledger_closed_at timestamp without time zone NOT NULL, + offer_id bigint NOT NULL, + base_account_id bigint NOT NULL, + base_asset_id bigint NOT NULL, + base_amount bigint NOT NULL, + counter_account_id bigint NOT NULL, + counter_asset_id bigint NOT NULL, + counter_amount bigint NOT NULL, + base_is_seller boolean, + CONSTRAINT history_trades_base_amount_check CHECK ((base_amount > 0)), + CONSTRAINT history_trades_check CHECK ((base_asset_id < counter_asset_id)), + CONSTRAINT history_trades_counter_amount_check CHECK ((counter_amount > 0)) +); + + +-- +-- Name: history_transaction_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transaction_participants ( + id integer NOT NULL, + history_transaction_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_transaction_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_transaction_participants_id_seq OWNED BY history_transaction_participants.id; + + +-- +-- Name: history_transactions; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transactions ( + transaction_hash character varying(64) NOT NULL, + ledger_sequence integer NOT NULL, + application_order integer NOT NULL, + account character varying(64) NOT NULL, + account_sequence bigint NOT NULL, + fee_paid integer NOT NULL, + operation_count integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + tx_envelope text NOT NULL, + tx_result text NOT NULL, + tx_meta text NOT NULL, + tx_fee_meta text NOT NULL, + signatures character varying(96)[] DEFAULT '{}'::character varying[] NOT NULL, + memo_type character varying DEFAULT 'none'::character varying NOT NULL, + memo character varying, + time_bounds int8range +); + + +-- +-- Name: history_assets id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets ALTER COLUMN id SET DEFAULT nextval('history_assets_id_seq'::regclass); + + +-- +-- Name: history_operation_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants ALTER COLUMN id SET DEFAULT nextval('history_operation_participants_id_seq'::regclass); + + +-- +-- Name: history_transaction_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants ALTER COLUMN id SET DEFAULT nextval('history_transaction_participants_id_seq'::regclass); + + +-- +-- Data for Name: gorp_migrations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO gorp_migrations VALUES ('1_initial_schema.sql', '2017-10-25 12:02:41.355815-07'); +INSERT INTO gorp_migrations VALUES ('2_index_participants_by_toid.sql', '2017-10-25 12:02:41.35913-07'); +INSERT INTO gorp_migrations VALUES ('3_use_sequence_in_history_accounts.sql', '2017-10-25 12:02:41.361119-07'); +INSERT INTO gorp_migrations VALUES ('4_add_protocol_version.sql', '2017-10-25 12:02:41.365998-07'); +INSERT INTO gorp_migrations VALUES ('5_create_trades_table.sql', '2017-10-25 12:02:41.370443-07'); +INSERT INTO gorp_migrations VALUES ('6_create_assets_table.sql', '2017-10-25 12:02:41.373746-07'); +INSERT INTO gorp_migrations VALUES ('7_modify_trades_table.sql', '2017-10-25 12:02:41.381902-07'); + + +-- +-- Data for Name: history_accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_accounts VALUES (1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_accounts VALUES (2, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_accounts VALUES (3, 'GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2'); +INSERT INTO history_accounts VALUES (4, 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON'); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_accounts_id_seq', 4, true); + + +-- +-- Data for Name: history_assets; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_assets_id_seq', 1, false); + + +-- +-- Data for Name: history_effects; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_effects VALUES (2, 8589938689, 1, 0, '{"starting_balance": "100.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589938689, 2, 3, '{"amount": "100.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (2, 8589938689, 3, 10, '{"weight": 1, "public_key": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU"}'); +INSERT INTO history_effects VALUES (3, 8589942785, 1, 0, '{"starting_balance": "100.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589942785, 2, 3, '{"amount": "100.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (3, 8589942785, 3, 10, '{"weight": 1, "public_key": "GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2"}'); +INSERT INTO history_effects VALUES (4, 8589946881, 1, 0, '{"starting_balance": "100.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589946881, 2, 3, '{"amount": "100.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (4, 8589946881, 3, 10, '{"weight": 1, "public_key": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON"}'); +INSERT INTO history_effects VALUES (4, 12884905985, 1, 2, '{"amount": "5.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (2, 12884905985, 2, 3, '{"amount": "5.0000000", "asset_type": "native"}'); + + +-- +-- Data for Name: history_ledgers; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_ledgers VALUES (1, '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', NULL, 0, 0, '1970-01-01 00:00:00', '2017-10-25 19:03:39.164416', '2017-10-25 19:03:39.164416', 4294967296, 10, 1000000000000000000, 0, 100, 100000000, 100, 0); +INSERT INTO history_ledgers VALUES (2, '228c4d0513b0fea9e91ad14c9aa7e5af480c108b576810fa93f545cf4758aa21', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', 3, 3, '2017-10-25 19:03:36', '2017-10-25 19:03:39.172185', '2017-10-25 19:03:39.172185', 8589934592, 10, 1000000000000000000, 300, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (3, '24bd4d1242dab0de60cafcb49a4d18390cbe135af48244241b2132bb15f1a0ec', '228c4d0513b0fea9e91ad14c9aa7e5af480c108b576810fa93f545cf4758aa21', 1, 1, '2017-10-25 19:03:37', '2017-10-25 19:03:39.206216', '2017-10-25 19:03:39.206216', 12884901888, 10, 1000000000000000000, 400, 100, 100000000, 10000, 8); + + +-- +-- Data for Name: history_operation_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operation_participants VALUES (1, 8589938689, 1); +INSERT INTO history_operation_participants VALUES (2, 8589938689, 2); +INSERT INTO history_operation_participants VALUES (3, 8589942785, 1); +INSERT INTO history_operation_participants VALUES (4, 8589942785, 3); +INSERT INTO history_operation_participants VALUES (5, 8589946881, 1); +INSERT INTO history_operation_participants VALUES (6, 8589946881, 4); +INSERT INTO history_operation_participants VALUES (7, 12884905985, 2); +INSERT INTO history_operation_participants VALUES (8, 12884905985, 4); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_operation_participants_id_seq', 8, true); + + +-- +-- Data for Name: history_operations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operations VALUES (8589938689, 8589938688, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "starting_balance": "100.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (8589942785, 8589942784, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2", "starting_balance": "100.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (8589946881, 8589946880, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", "starting_balance": "100.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (12884905985, 12884905984, 1, 1, '{"to": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", "from": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "amount": "5.0000000", "asset_type": "native"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); + + +-- +-- Data for Name: history_trades; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: history_transaction_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transaction_participants VALUES (1, 8589938688, 2); +INSERT INTO history_transaction_participants VALUES (2, 8589938688, 1); +INSERT INTO history_transaction_participants VALUES (3, 8589942784, 1); +INSERT INTO history_transaction_participants VALUES (4, 8589942784, 3); +INSERT INTO history_transaction_participants VALUES (5, 8589946880, 1); +INSERT INTO history_transaction_participants VALUES (6, 8589946880, 4); +INSERT INTO history_transaction_participants VALUES (7, 12884905984, 2); +INSERT INTO history_transaction_participants VALUES (8, 12884905984, 4); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_transaction_participants_id_seq', 8, true); + + +-- +-- Data for Name: history_transactions; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transactions VALUES ('2374e99349b9ef7dba9a5db3339b78fda8f34777b1af33ba468ad5c0df946d4d', 2, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 1, 100, 1, '2017-10-25 19:03:39.173457', '2017-10-25 19:03:39.173457', 8589938688, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAO5rKAAAAAAAAAAABVvwF9wAAAECDzqvkQBQoNAJifPRXDoLhvtycT3lFPCQ51gkdsFHaBNWw05S/VhW0Xgkr0CBPE4NaFV2Kmcs3ZwLmib4TRrML', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2s2vJNNQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{g86r5EAUKDQCYnz0Vw6C4b7cnE95RTwkOdYJHbBR2gTVsNOUv1YVtF4JK9AgTxODWhVdipnLN2cC5om+E0azCw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('164a5064eba64f2cdbadb856bf3448485fc626247ada3ed39cddf0f6902133b6', 2, 2, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 2, 100, 1, '2017-10-25 19:03:39.183361', '2017-10-25 19:03:39.183361', 8589942784, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAO2C/AO45YBD3tHVFO1R3A0MekP8JR6nN1A9eWidyItUAAAAAO5rKAAAAAAAAAAABVvwF9wAAAEASEZiZbeFwCsrKBnKIus/05VtJDBrgosuhLQ/U6XUj4twWyhs7UtS4CMexOM6JqcfqJK10WlBkkwn4g8PIfjIG', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2szAuatQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/84AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{EhGYmW3hcArKygZyiLrP9OVbSQwa4KLLoS0P1Ol1I+LcFsobO1LUuAjHsTjOianH6iStdFpQZJMJ+IPDyH4yBg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('2b2e82dbabb024b27a0c3140ca71d8ac9bc71831f9f5a3bd69eca3d88fb0ec5c', 2, 3, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 3, 100, 1, '2017-10-25 19:03:39.195041', '2017-10-25 19:03:39.195042', 8589946880, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAAAO5rKAAAAAAAAAAABVvwF9wAAAEDJul1tLGLF4Vxwt0dDCVEf6tb5l4byMrGgCp+lVZMmxct54iNf2mxtjx6Md5ZJ4E4Dlcsf46EAhBGSUPsn8fYD', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2svSToNQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/7UAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{ybpdbSxixeFccLdHQwlRH+rW+ZeG8jKxoAqfpVWTJsXLeeIjX9psbY8ejHeWSeBOA5XLH+OhAIQRklD7J/H2Aw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('cebb875a00ff6e1383aef0fd251a76f22c1f9ab2a2dffcb077855736ade2659a', 3, 1, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934593, 100, 1, '2017-10-25 19:03:39.206916', '2017-10-25 19:03:39.206916', 12884905984, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAAAAAAAAAL68IAAAAAAAAAAAa7kvkwAAABA9Pu9pjykcRS60lqOLqN8FHz244QP8baYNeTTJZIlr3SbRC13qEr9uP4ORDgyCB/gcug2GKrDMuK0ST3QOaKUBw==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAADAAAAAwAAAAIAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAD6VuoAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAADif2RwAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{9Pu9pjykcRS60lqOLqN8FHz244QP8baYNeTTJZIlr3SbRC13qEr9uP4ORDgyCB/gcug2GKrDMuK0ST3QOaKUBw==}', 'none', NULL, NULL); + + +-- +-- Name: gorp_migrations gorp_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY gorp_migrations + ADD CONSTRAINT gorp_migrations_pkey PRIMARY KEY (id); + + +-- +-- Name: history_assets history_assets_asset_code_asset_type_asset_issuer_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_asset_code_asset_type_asset_issuer_key UNIQUE (asset_code, asset_type, asset_issuer); + + +-- +-- Name: history_assets history_assets_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_pkey PRIMARY KEY (id); + + +-- +-- Name: history_operation_participants history_operation_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants + ADD CONSTRAINT history_operation_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: history_transaction_participants history_transaction_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants + ADD CONSTRAINT history_transaction_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: asset_by_issuer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX asset_by_issuer ON history_assets USING btree (asset_issuer); + + +-- +-- Name: by_account; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_account ON history_transactions USING btree (account, account_sequence); + + +-- +-- Name: by_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_hash ON history_transactions USING btree (transaction_hash); + + +-- +-- Name: by_ledger; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_ledger ON history_transactions USING btree (ledger_sequence, application_order); + + +-- +-- Name: hist_e_by_order; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_by_order ON history_effects USING btree (history_operation_id, "order"); + + +-- +-- Name: hist_e_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_id ON history_effects USING btree (history_account_id, history_operation_id, "order"); + + +-- +-- Name: hist_op_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_op_p_id ON history_operation_participants USING btree (history_account_id, history_operation_id); + + +-- +-- Name: hist_tx_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_tx_p_id ON history_transaction_participants USING btree (history_account_id, history_transaction_id); + + +-- +-- Name: hop_by_hoid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX hop_by_hoid ON history_operation_participants USING btree (history_operation_id); + + +-- +-- Name: hs_ledger_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_ledger_by_id ON history_ledgers USING btree (id); + + +-- +-- Name: hs_transaction_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_transaction_by_id ON history_transactions USING btree (id); + + +-- +-- Name: htp_by_htid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htp_by_htid ON history_transaction_participants USING btree (history_transaction_id); + + +-- +-- Name: htrd_by_offer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_by_offer ON history_trades USING btree (offer_id); + + +-- +-- Name: htrd_counter_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_counter_lookup ON history_trades USING btree (counter_asset_id); + + +-- +-- Name: htrd_pair_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_pair_time_lookup ON history_trades USING btree (base_asset_id, counter_asset_id, ledger_closed_at); + + +-- +-- Name: htrd_pid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX htrd_pid ON history_trades USING btree (history_operation_id, "order"); + + +-- +-- Name: htrd_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_time_lookup ON history_trades USING btree (ledger_closed_at); + + +-- +-- Name: index_history_accounts_on_address; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_address ON history_accounts USING btree (address); + + +-- +-- Name: index_history_accounts_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_id ON history_accounts USING btree (id); + + +-- +-- Name: index_history_effects_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_effects_on_type ON history_effects USING btree (type); + + +-- +-- Name: index_history_ledgers_on_closed_at; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_closed_at ON history_ledgers USING btree (closed_at); + + +-- +-- Name: index_history_ledgers_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_id ON history_ledgers USING btree (id); + + +-- +-- Name: index_history_ledgers_on_importer_version; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_importer_version ON history_ledgers USING btree (importer_version); + + +-- +-- Name: index_history_ledgers_on_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_ledger_hash ON history_ledgers USING btree (ledger_hash); + + +-- +-- Name: index_history_ledgers_on_previous_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_previous_ledger_hash ON history_ledgers USING btree (previous_ledger_hash); + + +-- +-- Name: index_history_ledgers_on_sequence; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_sequence ON history_ledgers USING btree (sequence); + + +-- +-- Name: index_history_operations_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_operations_on_id ON history_operations USING btree (id); + + +-- +-- Name: index_history_operations_on_transaction_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_transaction_id ON history_operations USING btree (transaction_id); + + +-- +-- Name: index_history_operations_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_type ON history_operations USING btree (type); + + +-- +-- Name: index_history_transactions_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_transactions_on_id ON history_transactions USING btree (id); + + +-- +-- Name: trade_effects_by_order_book; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX trade_effects_by_order_book ON history_effects USING btree (((details ->> 'sold_asset_type'::text)), ((details ->> 'sold_asset_code'::text)), ((details ->> 'sold_asset_issuer'::text)), ((details ->> 'bought_asset_type'::text)), ((details ->> 'bought_asset_code'::text)), ((details ->> 'bought_asset_issuer'::text))) WHERE (type = 33); + + +-- +-- Name: history_trades history_trades_base_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_account_id_fkey FOREIGN KEY (base_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_base_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_asset_id_fkey FOREIGN KEY (base_asset_id) REFERENCES history_assets(id); + + +-- +-- Name: history_trades history_trades_counter_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_account_id_fkey FOREIGN KEY (counter_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_counter_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_asset_id_fkey FOREIGN KEY (counter_asset_id) REFERENCES history_assets(id); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/base.rb b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/base.rb new file mode 100644 index 0000000..8bbe2da --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/base.rb @@ -0,0 +1,12 @@ +run_recipe File.dirname(__FILE__) + "/_common_accounts.rb" + +use_manual_close + + +create_account :scott, :master, 100 +create_account :bartek, :master, 100 +create_account :andrew, :master, 100 + +close_ledger + +payment :scott, :andrew, [:native, 5] diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/bindata.go b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/bindata.go new file mode 100644 index 0000000..773f118 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/bindata.go @@ -0,0 +1,925 @@ +// Code generated by go-bindata. +// sources: +// account_merge-core.sql +// account_merge-horizon.sql +// allow_trust-core.sql +// allow_trust-horizon.sql +// bad_cost-core.sql +// bad_cost-horizon.sql +// base-core.sql +// base-horizon.sql +// blank-horizon.sql +// change_trust-core.sql +// change_trust-horizon.sql +// kahuna-core.sql +// kahuna-horizon.sql +// non_native_payment-core.sql +// non_native_payment-horizon.sql +// order_books-core.sql +// order_books-horizon.sql +// order_books_310-core.sql +// order_books_310-horizon.sql +// pathed_payment-core.sql +// pathed_payment-horizon.sql +// paths-core.sql +// paths-horizon.sql +// self_send-core.sql +// self_send-horizon.sql +// send_to_issuer-core.sql +// send_to_issuer-horizon.sql +// set_options-core.sql +// set_options-horizon.sql +// trades-core.sql +// trades-horizon.sql +// DO NOT EDIT! + +package scenarios + +import ( + "bytes" + "compress/gzip" + "fmt" + "io" + "io/ioutil" + "os" + "path/filepath" + "strings" + "time" +) + +func bindataRead(data []byte, name string) ([]byte, error) { + gz, err := gzip.NewReader(bytes.NewBuffer(data)) + if err != nil { + return nil, fmt.Errorf("Read %q: %v", name, err) + } + + var buf bytes.Buffer + _, err = io.Copy(&buf, gz) + clErr := gz.Close() + + if err != nil { + return nil, fmt.Errorf("Read %q: %v", name, err) + } + if clErr != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +type asset struct { + bytes []byte + info os.FileInfo +} + +type bindataFileInfo struct { + name string + size int64 + mode os.FileMode + modTime time.Time +} + +func (fi bindataFileInfo) Name() string { + return fi.name +} +func (fi bindataFileInfo) Size() int64 { + return fi.size +} +func (fi bindataFileInfo) Mode() os.FileMode { + return fi.mode +} +func (fi bindataFileInfo) ModTime() time.Time { + return fi.modTime +} +func (fi bindataFileInfo) IsDir() bool { + return false +} +func (fi bindataFileInfo) Sys() interface{} { + return nil +} + +var _account_mergeCoreSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7c\xd7\x92\xa3\xca\xd2\xee\x7d\x3f\x05\x31\x37\x3d\x13\x9a\x59\xc2\x9b\x99\x33\x3b\x02\x21\x03\x32\xc8\xdb\x13\x27\x3a\x0a\x28\x10\x6a\x04\x12\x46\x6e\xc7\x7e\xf7\x13\x80\x0c\x92\x90\x69\xa9\xd7\xfe\xd7\x1f\x31\x5c\xb4\x11\xc9\x97\x5f\x65\x65\x65\x65\x25\xaa\x72\x03\xdb\x36\x6d\x03\x71\xa1\x6a\xce\xe0\x4b\xfc\x0b\xd1\x4d\xdb\xf4\xc6\x50\xfb\x8e\xa8\x96\xe3\x85\xf7\x2d\xa8\x19\xd0\x7d\x89\x7f\x45\x9f\x42\xed\xe5\xc7\x8f\x97\x1f\x3f\x90\x86\xe3\xf9\x86\x0b\xdb\xcd\x2a\xa2\x01\x1f\x28\xc0\x83\x88\x16\x4c\x67\xe1\xed\xf0\x7e\x3e\x98\xce\xa0\x86\xe8\xae\x33\x3d\x08\x2c\xa0\xeb\x99\x8e\x8d\x70\x7f\xd1\x7f\x51\x09\x29\x65\x8d\xcc\x8c\xb7\xf0\xf1\x13\x91\x97\x76\xa1\x83\x78\x3e\xf0\xe1\x14\xda\xfe\x9b\x6f\x4e\xa1\x13\xf8\xc8\x6f\x04\xfd\x15\xdd\xb2\x1c\xf5\xfd\xfc\x53\x53\xb3\xe0\x9b\x69\xbf\xf9\x2e\xb0\x3d\xa0\xfa\xa6\x63\xbf\x79\xd0\x0b\x71\xcf\x85\x55\xcb\x0c\xa1\xa1\xad\x3a\x5a\xd8\xe6\xdf\xc8\x6b\xb7\x53\x64\x5f\x7f\xed\x74\xdb\x1a\x70\xb5\x37\xd5\xb1\x75\xc7\x9d\x9a\xb6\xf1\xe6\xf9\xae\x69\x1b\x1e\xf2\x1b\x71\xec\x2d\xc6\x18\xaa\xef\x6f\x7a\x60\xc7\xba\x14\x47\x33\x61\x78\x5f\x07\x96\x07\x8f\xd4\x4c\x4d\xfb\x6d\x0a\x3d\x0f\x18\x91\xc0\x12\xb8\x61\x47\xc4\x22\xae\xb3\x7c\xf3\xa0\x1a\xb8\xa6\xbf\x0e\xc1\x75\xfd\xd7\xd6\x00\x10\xb8\xea\xf8\x6d\x06\xfc\x31\xf2\x1b\x99\x05\x8a\x65\xaa\xdf\x43\x8b\xa9\xc0\x07\x96\x63\xfc\x7a\x79\xc9\xb7\xea\x0d\x44\x92\xf3\x85\x01\x22\x15\x91\xc2\x40\x6a\x77\xda\x5b\xc9\xbf\x3c\xd3\xb0\xa1\xeb\x01\x55\x75\x02\xdb\xff\x75\x5d\x16\x5a\x96\x69\x1b\xa6\xe7\x05\xd0\x35\x6d\x0d\xae\x6e\xc8\xab\xb3\x79\xe0\xb8\xc1\xd4\x53\xd6\x1e\x9c\xdf\x14\x86\xf6\xe2\x1e\xc9\x99\x6b\xaa\xf0\x0e\xf5\xb1\x67\xde\x83\x38\x36\x3d\x5f\x87\xf0\x4e\xc9\x3b\xc4\x94\x60\xfd\x11\x43\x6d\xad\xaf\x00\x0b\xd8\x2a\xf4\x7e\xbd\xf0\xd5\x4e\xa1\x85\x74\xf8\x5c\xb5\x90\x90\xae\xcb\xd5\xe1\xee\x11\x7f\x15\x52\x71\xdc\x35\x12\x01\x0b\x75\xb9\xdd\x69\xf1\x92\xdc\x49\xc8\xef\x65\xde\x66\xef\x70\x7d\x1f\xaa\x0e\xe1\x3d\xc0\x07\xb1\xfb\xb1\xdd\xc0\xf3\x2d\xd3\x86\xde\x35\xe4\xbd\xd0\xdd\xb8\x21\x0b\x18\x85\x81\x2b\xb8\x07\xa1\xfb\x71\xe3\x91\x71\x0d\x34\x96\xb8\x1f\x71\x3f\x1e\xae\x81\xee\x85\xee\xc6\x9d\x05\x8a\x17\x28\x57\x30\x63\x81\x8f\xe0\x59\xa6\x37\x9e\x07\x30\xb8\x66\xd3\xa4\xd8\xfd\xd8\xf0\xba\x4d\xa3\xfb\x77\xa3\x39\xba\x7e\x1d\x2e\x16\xb8\x1b\x2f\x0e\x19\x63\x08\xb4\xeb\xb0\x47\x72\x7f\x33\xfa\x36\x8c\xc1\xf9\xdb\x9d\x6a\x14\x60\x5f\x01\x57\x80\x7d\x37\xe1\x6d\x5c\xba\xc6\x75\x27\xf2\x51\xcc\x70\xda\xbf\x0d\x1b\x4a\x6d\x91\x23\xd9\x53\xe0\xd3\x60\x78\x4b\xec\x10\xb6\x6e\x48\xee\xc3\xd0\x75\xb9\x43\x58\xb9\x21\x17\x47\x8a\x1b\x42\xfb\x91\x7f\x53\xee\xae\x46\xc4\xa3\xfe\xa6\xcc\x7e\x0c\xdf\x90\x84\x37\x1b\x10\x0f\xb6\xeb\x32\x47\xbe\x7d\x5d\x54\x01\xf6\x75\x81\x9d\xef\xdd\x25\x15\xba\xd2\x56\xb0\x30\xe8\x14\xe4\xb6\x54\x97\x93\xc2\xd6\xcc\xf0\xe6\xd6\x56\xa2\x2d\x88\x85\x1a\x7f\x86\xf5\x6b\x9b\xdf\xca\x60\x0a\x7f\xee\x3e\x43\x3a\xeb\x19\xfc\xb9\x7d\xe4\x17\xd2\x56\xc7\x70\x0a\x7e\x22\x3f\x7e\x21\xf5\xa5\x0d\xdd\x9f\xc8\x8f\x28\xed\x15\x5a\x05\xbe\x53\xd8\x21\xef\xf0\x5e\x8e\x10\x8f\x6f\x6e\x81\x85\x7a\xad\x56\x90\x3b\x57\x90\x63\x01\xa4\x2e\x1f\x03\x20\x52\x1b\x79\xdd\xe5\xa8\xbb\xcf\xbc\x08\xe4\xf5\x54\xf3\xae\xf9\x5b\x9d\x7b\x0b\xdd\x6c\xcf\x91\x2d\xe5\x7a\xe7\xc4\x9e\x48\x5f\xea\x88\x7b\x5a\xc9\xa4\xf4\x48\xfd\x01\xe5\x84\xc8\x47\x1a\x7f\x06\x12\x19\xa0\x51\xcd\xce\x8c\x70\x25\x32\x73\x1d\x15\x6a\x81\x0b\x2c\xc4\x02\xb6\x11\x00\x03\x46\x66\xb8\x33\x89\x0e\xc5\x34\xa8\x83\xc0\xf2\xdf\x7c\xa0\x58\xd0\x9b\x01\x15\x86\x2b\x82\xd7\x93\xbb\x4b\xd3\x1f\xbf\x39\xa6\x96\x48\xf2\x8f\x1a\x9b\x74\xc8\x6d\x33\x23\xd7\x3d\x34\x72\xe7\x00\x69\x06\x8f\xbd\x3c\x19\x45\xbf\xbe\x20\x08\xb2\xfb\xc4\xd4\x10\x75\x0c\x5c\xa0\xfa\xd0\x45\x16\xc0\x0d\xf3\xd0\xaf\x14\xfd\x2d\xea\x1b\xb9\x5b\xad\x7e\x8f\xa4\xc3\x07\x6d\x30\x85\x29\xc2\x34\x99\x26\xbc\x00\x56\x90\x26\x8d\x61\xf8\xa9\xb8\x05\x3c\x7f\xea\x68\xa6\x6e\x42\x0d\x31\x6d\x1f\x86\xeb\xc3\x7c\xa1\xc8\x77\xab\x1d\x04\xdd\x0b\xbf\x7c\x3b\xf5\x82\xfd\x78\x7e\xd2\x2a\xde\x43\x26\xd9\x66\xdf\x88\x62\x1a\xa6\xed\x9f\xdc\xf4\xe0\xdc\x0e\xa6\xe9\xf7\xec\x60\xea\x05\x0a\xb4\x7d\x37\x5c\xd8\xed\x1a\x7c\x2c\x63\xda\xba\x05\xc2\xf5\x9f\x06\x3d\x3f\x9d\x4e\x2c\x38\x76\xa6\x50\x73\xa6\xc0\xb4\x53\xa4\x88\x33\x5b\xfb\x63\x17\x7a\x63\xc7\xd2\x3c\xc4\x87\xab\x53\x66\xba\x05\x8c\x4b\x8c\x52\x7b\xe9\x58\x24\x31\x33\xef\xa7\xf9\xad\x95\xde\xa2\x55\x2d\x22\x88\x05\xa1\x82\x7c\xfd\xba\xb3\xdd\xbf\x7e\x23\xe8\xb7\x6f\x97\x9f\x3e\x32\xd5\x09\xc6\xb1\x19\x63\xa4\x73\x1f\x09\x27\x85\x47\xdd\x23\x4c\x8c\x62\xcf\xb0\x1d\x0d\x26\xdd\xe2\xc8\x1d\xce\x95\x1e\x4f\x5a\x8f\xaa\x3f\x4e\xff\x62\x22\xdb\xcf\x80\x37\x4e\x90\x39\x1f\x81\x33\x17\x2e\x6e\x0a\x29\x81\xfa\x0e\x7d\xcb\xf4\xfc\x9b\xa2\xfb\x9c\x72\xd7\xf3\xf1\xc7\x51\x11\xc7\x37\xa7\x17\x06\x41\x14\x6d\x52\xdc\x2c\xd1\xd3\xc7\xa9\xeb\x1e\xef\xa4\xab\x0f\x7a\x2e\x38\xcc\xa5\x0c\xf8\x18\xe6\xd0\x8a\x4b\xde\xb2\xcd\x48\x1e\xed\xb1\xed\xf2\xe2\xeb\x36\x04\x58\x16\x74\xef\x0c\x26\xd1\x93\xa6\x76\x29\x98\x44\x75\x14\xe0\x79\xd0\xf7\xd7\x33\x78\x61\xf8\x25\xc5\x54\x47\x4b\x8d\xbe\xf8\xb7\x23\xd9\xb8\xe2\x70\x2d\xbe\xc4\x95\x89\x5b\xaa\x13\x52\xb7\x34\x27\x4b\x1d\xd7\x14\x83\x69\x18\x02\xd2\x0d\x12\x55\x74\xec\x0b\x5c\xa2\x9b\x97\x42\x54\x74\x13\xd1\x9c\x40\xb1\x60\x38\x4a\x54\x33\x2a\x10\xfe\x5d\x61\x70\xbb\x9c\x8c\xdb\x72\xe2\x8d\xdb\x06\x5e\xf0\xe8\xed\x93\x5b\xbf\x38\x79\x74\xe7\x2d\x97\xdc\x38\xce\xbd\x1f\xf5\xe2\x78\xc9\x1d\x3b\xb1\x39\x4b\xeb\x4b\xea\x2c\xde\x38\xae\x7f\x65\xea\xde\xce\x7b\x70\xe5\x03\xdf\x87\xd3\x99\x8f\x84\x83\xd9\xf3\xc1\x74\x86\x84\xd9\x8f\x13\xc4\x9f\x20\x1b\xc7\x86\xe7\xb3\xa5\x0e\x4c\x2b\x70\x13\x73\xe5\x25\x0d\x09\xfb\xc5\x75\x81\xc4\xc3\xe7\xb3\xc7\x1e\xf6\x42\x17\x6c\x4b\x0b\x8e\x7b\xda\x73\x5f\xa3\xe6\xfe\x0b\x41\xbf\x21\xbc\x9c\x47\xe2\x7f\xff\xcf\x6f\x84\xa6\x28\x82\xfa\x96\xda\x21\xc9\x65\xd3\xc3\xfd\x92\x2c\xb3\x24\xa7\x83\x4b\xf1\x20\xaa\x71\x85\xf1\x37\x95\x50\xb8\xd6\x7b\x82\x8a\x17\x28\x5b\x12\x2e\xf4\x8e\xe6\xc6\xf3\xac\x23\x1c\x34\x2e\x04\xfb\x01\x73\xce\x27\xb1\x46\x7d\x94\xd3\x01\xe2\x9e\x49\xfb\xc2\xbc\x76\x72\x1f\xda\x0b\x68\x39\x33\x78\x63\x16\x3b\xa8\x7e\x62\xee\x49\x2c\xe7\x9f\x30\xc1\xae\x60\x18\x9b\x60\xee\xc1\x3b\x26\x77\xe0\xf9\xb7\x0c\x11\x02\xdd\x36\xc2\xae\x10\x79\x84\x78\x6a\x88\x23\x6d\x17\x8d\xb1\x2d\x80\x3c\x6c\x89\x6d\x31\xf6\x91\xc4\x3e\x46\x7f\x87\xeb\xbb\xa4\x97\xd0\x34\xc6\xfe\x99\xd9\x52\x9a\x74\xa8\xfd\x3c\xdc\xaa\x43\xe9\xfa\xeb\x61\x88\x1f\xaf\xcb\x52\x86\xdf\xb5\x40\x90\xa8\x5c\x3d\xca\x2a\x51\xa8\x7f\xc4\xdc\xb7\x72\x8b\x6b\xa9\x42\x1a\xd4\xe5\x04\xe4\x74\x2d\x64\x99\x53\xf3\x42\x86\x71\x75\x71\xf7\x79\xf9\x41\xe2\xf5\xc5\x43\x0b\xa5\xc4\xf3\x71\x6b\x4e\x1e\xdf\x36\xf1\x5f\xe9\x83\xec\xa8\xbe\xf9\x70\xef\x27\x5f\x01\xc5\xfd\xef\xaf\x8e\xc2\xee\x1d\xcb\x89\xd3\x9e\x59\x45\x2f\xc1\x2e\xde\x55\xc7\xc0\x36\x60\xea\x12\x36\x69\x9c\xe4\x5b\xa7\xc7\xe3\xf2\xa1\x58\xfc\xb8\x89\xfe\xcb\xf6\x51\x1c\x6d\x9d\x66\x1c\x7f\xe5\x42\x2f\xb0\x52\x23\xb9\xbf\x9a\xc2\x9b\xcb\xb5\xc3\x1b\xc2\x47\xec\x99\x0f\xd7\x83\xba\xe3\xde\xa8\x6b\x21\x79\xbe\xc3\xdf\xb0\xef\x75\x48\xef\xc3\x78\x92\xdc\x2e\xb4\x3a\x88\x24\x77\xea\x87\xaa\x50\x8f\xaf\x76\x0b\x6d\xe4\xeb\x6b\x29\xd7\x6a\x0c\x45\xa9\x8a\x0b\x12\x51\x94\x9b\x64\x6e\x50\x2d\xd6\xe4\x7c\xb5\x58\xee\xca\x8d\x2e\x2e\x0e\x89\x51\xad\xd8\x16\xeb\x72\x57\x28\xd4\xf9\x76\x9f\x69\x0a\x4c\x7d\x80\x8b\xaf\xdf\x11\x2e\xbe\x98\xed\x6f\x16\x45\xbf\x23\xf8\x77\x04\xfd\x1e\x1b\x18\x79\x7d\xfd\x8e\xbc\xf2\x4d\x9e\xe7\xf9\xdf\xbf\x5f\xa3\x1b\xf8\xb7\x5f\xb7\xf8\xf0\x54\x3f\xd7\x18\xf2\xd4\x90\xec\xf3\x05\x71\xd0\x6f\xe1\xdd\x4a\x1d\xef\xd6\xc9\x5c\xb7\x24\x76\x9b\x0c\x59\xe8\x36\x2a\x75\x19\x6f\x8a\x3d\xb2\xdf\x12\xeb\x52\x4b\xae\x54\x44\xfc\xf5\x3b\x82\x6d\x89\x70\x21\x11\x96\x62\x39\x8e\x20\x29\xee\x06\x23\xe2\x72\x27\x9e\xd6\x57\x9e\xe8\xbc\xcb\x55\x93\x8f\xf6\xe0\x71\xe5\x64\x6f\x36\x9a\xd0\x38\x56\xa7\x08\x1a\x42\x9a\xd5\x30\x05\x67\x14\x4a\x61\x39\x1d\x27\x80\x4e\x11\x18\xa6\x30\x14\xcd\x01\x9c\xd4\x81\x8e\x91\x28\x01\x34\x54\xa1\x70\x85\x26\x08\x05\x65\x14\xc8\x71\xa1\x61\xd0\x27\xaf\x10\x83\x62\x70\x80\x43\x02\xd7\x75\x9c\x64\x01\xca\x28\x28\x64\x50\x5d\xc3\x74\x5a\x23\x30\x56\xc5\x74\xa0\x6a\x38\xaa\xd0\xaa\x8a\xb2\x2a\x41\x68\x14\xc3\x50\x38\xc5\xb1\x34\x8b\xe1\x14\xc0\xe8\xb0\x1b\xa3\x7e\x79\xe5\xff\xb1\x57\x6e\x50\x31\xc9\x75\x76\xdd\xae\xe4\x98\xbc\x9d\xe7\x44\x1c\x5d\x4d\x72\x19\x0f\x35\x7c\x6f\x29\x2d\x37\xd8\x40\x6b\xf7\x87\x20\x57\x06\x45\x23\x94\x2f\xc8\x64\x15\x6c\x66\x78\xf3\x26\xf2\x88\x1f\x60\x64\x24\x96\x7b\xff\x2f\x34\xe4\x53\xaf\xd7\x93\xa1\x7d\xc1\x51\x01\x4d\xe3\x38\x05\x00\xae\x12\x3a\x87\xe3\x80\xa5\x75\x12\xc3\x28\x15\x53\x08\x5a\x61\x50\x86\xc5\x29\x96\x64\x08\x12\x90\x34\xc6\x51\x2a\xa3\x92\xa8\x42\x68\x0c\xc4\x34\x0a\x68\x24\x16\x39\xea\x67\x38\xbb\x4e\x29\x8c\x42\x70\x1c\x01\x69\x06\xc7\x58\x0e\x03\xa1\x0e\x94\x25\x20\x41\x33\x9c\x8a\x13\x38\x85\xe1\x1a\x4d\xe0\x04\x46\x32\xb4\x0a\x69\x16\xa7\x15\x15\x53\x81\x4e\xd1\x00\xaa\xca\x6b\x14\xeb\x30\x0a\x65\x39\x8a\xc5\x51\x72\xeb\xb1\x42\xa9\x31\x9a\x60\x72\x40\x39\xa8\x52\x66\xfa\xa4\xbd\xae\x2f\xba\xab\x12\xd1\x9b\x39\xef\x99\x45\x91\xaf\xfb\x02\x56\xc1\x6b\x4c\x8e\xa1\x47\x5d\x58\xec\x8f\x89\x4c\x75\x48\x0c\x3b\xe2\xfb\x58\xa1\xfd\xcc\xc0\x7c\xef\x90\x2c\x5f\xe9\x75\xdd\x71\x46\x92\x2d\xa2\x36\xe4\x64\xd9\xef\x46\x16\xee\xeb\x79\x3d\x1b\xfd\x25\xed\x7f\xc4\xc1\xcc\x38\xfc\xbf\xe4\xf9\xf2\x2a\xee\x91\x65\x5f\x1e\xe9\x12\xd5\x5f\x17\xfb\x2b\x7c\xca\x74\x1c\xb9\x29\x8c\x87\x23\x6a\x33\x2f\xba\x4b\xc7\xc0\x27\xe8\xfb\x60\xde\x94\xab\xbc\xbb\xc0\x7c\xa6\x3e\x6a\x4c\xd5\xb1\xd9\x9a\x65\xc4\xa6\x91\x91\x6d\x5b\xa8\x59\x05\x7f\xb8\xae\x75\x35\x8f\x72\xca\xee\x52\x75\x31\x10\xac\x97\x91\xaa\x14\x8f\xce\x4b\x69\x5e\xb1\xf7\x68\x41\xbd\xed\xfe\xff\xb0\xeb\x4e\x8f\x66\x68\x0c\x02\xa8\xd3\x1a\xc6\x42\x80\x61\x2c\xa4\x50\x0e\x72\x34\xca\x02\x16\x45\x09\x54\x65\x49\xc0\xe8\x28\xad\xd3\x10\x90\x04\xa0\x09\x96\xa6\x50\x88\xe1\x18\xae\x2b\x24\xa6\x72\x4c\xe8\x8d\x9f\x31\x2a\x20\x4d\x62\x34\xcd\xb0\x1a\xca\xd2\x2c\x81\x42\x45\xd3\x15\x9c\xa6\x75\x48\xa8\x0c\xc5\x68\x3a\x8a\x61\x0a\x89\xb2\xb8\x02\x28\x9a\x61\xa0\xaa\x50\x14\x89\x6b\x38\xd4\x28\x82\xe6\x54\x32\x9c\x41\x89\x84\x47\x53\x3b\x8f\xae\x8c\xcc\x32\x70\xbc\x06\x25\xcd\xc7\x8b\x66\x6b\x90\xf3\x70\x7f\x09\x85\x7e\x41\x45\x67\xa5\x52\x6f\xc5\x36\xab\x8d\x01\xa9\xf5\xfd\xe6\xa8\x9a\x29\x2f\x56\x1c\xda\xf5\xd5\xa5\x20\xd4\x9c\xe1\xbb\x61\x6e\x36\x66\xcf\xcd\xa0\x2a\x2e\x60\x64\x4f\x9f\xb5\x86\xa5\x76\x50\xe9\x6f\x3d\x27\xf2\xe8\x84\x5f\x58\x84\x2e\x2f\xf4\x91\x36\xcc\xad\x1a\x25\x81\xa5\x27\x73\x42\x93\xa8\x4a\xa5\xbb\x1a\xa9\xce\x0c\x57\x06\x9b\x6c\x45\x1c\x32\xf5\x55\xb6\x33\x6d\xf6\x47\x24\x2a\x81\x7c\xde\x25\x98\xf2\x34\x3b\x59\x61\xba\xce\xb7\x7c\xde\x70\x67\x7d\x2d\xb3\xc6\x7a\x02\x1a\x60\x1d\xa0\x36\xa3\xc1\x51\x4b\xf1\xd8\x82\x97\xd6\xeb\xff\xdb\x3d\xf6\x42\x06\x92\x52\xfe\x7f\x22\x9f\x39\xaf\xc2\x3e\x03\x76\xa9\x82\xf8\x1c\xe6\x69\x11\xf0\x09\xb4\x0b\x25\xbc\x8f\xe6\x6e\x89\x32\xde\x21\xdf\x15\x0a\x22\x53\x6f\xb7\xdb\x03\x99\x11\x87\x45\xb1\x51\xac\xb6\xeb\x92\x20\x76\x07\x43\xb2\x53\xef\xe1\x7d\x41\xea\x50\xa3\x41\xa7\xdd\xcf\xf5\x6b\x52\xa9\xd4\xef\xe5\x84\x21\x43\x4a\xf1\xfc\x13\x67\x49\xd2\x38\x1b\x58\x95\x1e\x9e\x6d\x18\x33\xc2\x1a\x94\xd7\x39\x71\xa6\x8b\xe5\xc0\x9d\x2f\xdf\x3b\xcc\x94\xa5\xfa\xf9\x91\x99\x2f\xf9\x5d\x29\xe1\xf1\x51\xb8\x16\xa2\x3f\x43\x3f\x2f\x8c\x5b\x64\x0f\x88\x3a\xe9\x4f\xb4\x71\x0d\xb6\x8b\x8b\x39\x41\xc1\x4a\xab\x31\x59\xf2\xb3\x5e\x3b\x10\x49\x03\x1f\xa8\xab\x09\x8a\xe2\x58\x9c\xa1\x8c\x58\x39\xcb\x46\xcf\x1b\xfb\x1f\xb9\x03\x68\xf4\x7f\x9e\xe7\x79\xbb\x70\x50\x9a\x73\x04\xaf\x3a\xe3\xdb\x35\xce\x63\x6b\xcd\x5a\x4f\x72\xb4\xa6\x54\x1b\x7a\x8d\x41\x57\xcb\xa3\x6e\x3e\xeb\x4d\x03\xa9\x2c\xf7\x44\xbf\x2c\x45\x70\x52\xd7\xc9\xcc\x27\xbc\xd4\x87\x6e\xad\xbf\x30\x98\xfc\x9c\x2c\x2e\x35\x22\xc7\xb4\x17\xd3\xe5\xba\xca\xb4\xd8\x7a\x46\x79\x67\xdf\x15\x74\x6e\x2a\x60\xb1\xf6\x7d\xa1\x34\x5c\xd4\x8a\x38\x5a\xa3\x87\x28\x31\xa2\x17\x86\x56\xaf\x2f\x83\x22\x4a\x54\xbd\x49\xe0\xcb\x5e\xbf\x2e\x34\x7f\xff\x3e\x8d\xed\x9f\xdc\x35\xc4\x53\x5d\x53\x3b\xee\x9a\x3c\xbf\x20\xa7\x59\x91\x68\xb5\xb1\x0d\x2f\x49\xeb\xb1\xd9\x16\xaa\x8d\x7a\xb9\xbf\x60\x5a\x9b\x61\x75\x30\xee\x65\xac\xa2\x31\xaa\x90\x33\x65\xc4\xef\xbb\x86\x3b\x89\x0d\x1f\x36\xfd\xa6\x07\x72\xec\x64\xb0\x54\x35\x6c\x61\x80\x89\x5b\x46\x1b\xa5\xb6\x80\x97\x56\x39\xac\x85\x13\xb8\xc1\x74\x0a\xae\x3f\x5f\x3b\xc5\x4a\x81\x1e\x15\x73\x7d\x76\xd6\x9b\x7a\xc5\xd1\xac\x35\xa8\x0b\xef\x52\x63\x5a\xac\xd9\x35\xaa\xb5\x2a\x34\xe8\x9a\x9d\x5b\xa1\xa3\xe1\x1a\x2d\xe4\x8d\xd8\xf4\x97\xc7\x59\x5a\x9d\xf8\x81\x71\xb6\xab\x15\x1f\xf2\x4e\x14\x57\x50\x05\x90\x28\xc9\xaa\x3a\xad\xea\xa8\x4a\xa2\x2a\x45\xb2\x00\xd3\x48\x94\x25\x30\x56\x41\x75\x4a\x23\x19\x92\xd0\x70\x05\xd5\xc3\xa9\x53\x61\x59\x9c\xd4\x28\x92\x51\x48\x0e\x4f\x76\x6a\xe4\xff\xb1\x57\x9b\x62\x86\xee\xce\x06\x0a\x9b\x11\x6c\xd8\x53\x6d\xa9\x00\x2d\x56\x9d\xd2\x81\x2b\xb4\x1a\x81\xb2\xb1\x86\xf2\x54\xaa\x01\xac\x69\x2e\x6f\x45\xe8\xb4\xba\xf0\x33\x31\x2b\xbd\x26\xfb\x61\x5b\x1e\xea\xb2\x7b\x5b\xee\xf6\x29\xc4\x5f\xa0\x42\xce\xae\x68\x21\x78\x36\xc2\x52\x80\x74\xc7\x55\xa1\xa7\xce\x1c\xdb\x86\x2b\xdf\x02\x81\xad\x8e\x4f\x81\xa2\xaf\x0d\xdd\x03\x66\x01\xcf\x8f\xb7\x5e\x6c\x5f\x1d\xa5\xb0\x7a\x3a\x57\xbb\x83\xc7\x36\x8e\x00\x57\x1d\x9b\x8b\xed\xcd\x53\x1e\xff\x8e\xaa\x4f\x5f\xb6\x9b\x38\xbe\xfc\x44\xb0\xb8\x1e\xf5\xc5\x83\xee\x02\xba\x5f\x7e\x22\x5f\x16\xe8\x5f\xf4\x5f\xc4\x0f\x9a\xfe\x61\x68\x34\x4d\x31\x94\xaa\x7f\xd9\x0a\xa9\x81\xeb\x42\xdb\xaf\x46\xcd\xfc\xf2\x13\x21\x8e\x3f\xcf\x45\x5f\x7e\xf0\xbe\xfc\x44\xfe\xef\xcb\x4e\xe9\xbf\x5f\x92\x14\x22\xc9\x50\x09\x8a\xe3\x34\x89\xb1\x84\x06\x71\x0a\x57\x54\x85\xd4\x71\x4c\x21\x30\x06\x27\x18\x82\x65\x68\x1d\xa5\x74\x16\x86\x2b\x29\x4d\x21\x00\x4e\xd2\x1a\x43\xb2\x1c\xc7\xe8\x1c\x0a\x31\x80\x29\xcc\x96\xd1\x1e\x37\xec\xc6\x2f\x3f\x4f\xb4\xc5\x0d\x0b\xed\xf0\xe5\x27\x82\x1e\xdd\xfa\xcf\xc9\xf3\x9e\x0d\x66\x21\x2f\xa8\x13\x18\xc0\x51\x40\x70\x2c\x84\x0c\xa1\x42\x1c\xc7\x19\x0a\x02\x16\x63\x18\x86\xa5\x15\xa0\x52\x24\x4d\xd1\x3a\x41\x68\xaa\x4a\xea\x84\x0e\x55\x1a\xd5\x28\x4a\xd3\x74\x2c\x5c\x1d\x7e\x79\x49\xd1\x70\xc9\x06\x4f\x5e\x1f\xb7\x01\xf6\xfd\xfc\x9e\x13\xf8\xb3\xc0\xff\xdc\xb6\x5f\xb3\xf0\xd3\xad\xfe\x47\x5b\xf8\x3e\x2f\xfb\x63\x83\x3f\x36\xf8\x63\x83\x3f\x36\xf8\x63\x83\x3f\x36\xf8\x63\x83\x3f\x36\xf8\x1b\x6d\x10\xfd\xf5\xff\x5e\xfe\x73\xef\x42\xc6\x53\x67\xd1\x57\x8c\xd3\xae\xd7\xdd\x3a\x34\x2a\xb1\x08\x92\xce\xcc\xda\x96\xb6\xd8\x90\x15\x8d\xea\xad\x55\xa3\x45\x0f\x56\x6b\x65\x4e\x7b\xe5\x42\x86\x5a\xd4\x7b\x06\x3e\x34\x56\x6e\x4f\xa8\x1e\x8a\x01\xf9\xe8\x27\xcd\xbb\x02\xdd\x2c\x4c\x1a\x4a\x23\x5f\xc8\x17\xdb\x15\xb1\x2b\xe4\x4b\xd5\x3c\x86\x89\x4d\xae\xb2\xcc\x32\x65\xd7\x14\x3a\xbd\x16\xd3\x6e\x7f\x76\x31\x22\x2a\x73\x08\x59\x53\x61\x75\xad\x58\x1d\xd4\x78\x63\x52\x29\x95\x25\xc9\x63\x49\x0b\x64\x7d\x51\x36\x7c\x58\x1c\xd0\xdd\x7e\xee\xdd\x35\x2d\x3f\x7e\x1b\x56\xb4\x97\x44\x16\x3d\x46\x2a\xe4\x39\xb5\xc8\x72\x04\x78\x17\xb3\xb9\xcc\x5c\xa4\x66\x8b\x92\xce\xe5\x6b\x90\x6d\x4e\x46\x0a\x51\x44\x05\x69\x55\x51\x82\x0e\x56\xc9\x4c\xeb\x42\xa7\x5c\xeb\x6a\x5e\xc3\x5d\x0f\x3b\x66\x96\x98\xd1\x0a\x69\xd0\x85\xc2\xc4\xa5\x33\x73\x4a\xdb\x68\x5d\x56\xf6\xb4\x15\x3d\x97\xea\x7f\x8a\x37\x69\xc5\x9b\x90\x4a\x69\x3a\x34\xfb\xf3\x6a\x3e\xd3\xae\x38\x0a\x5a\xe8\x2d\x15\xd9\x55\x45\xc3\x1a\x8b\x72\xa5\x35\xb6\x54\xbd\x20\x6c\xb0\x8c\xd8\x73\xbb\xa5\x44\x9d\xc4\x9d\xcb\x74\x15\xd6\x81\x31\x59\xd5\x40\xb7\xc1\xd1\xb9\x8d\xee\x71\x10\x55\x1d\x57\x1e\x0d\x36\xb9\x7e\xf9\xbd\xe8\x54\x98\xf7\xc5\xfb\xf2\xf0\xf6\xd3\x38\x3c\x9f\xe8\xf0\xfd\x5f\xb1\x91\x79\x66\x58\x65\x79\x66\x62\x19\x85\x06\x44\xb5\x6e\x97\xe9\x89\x6a\xbe\xb9\xa2\x9b\xd9\xa5\x25\xce\x55\xa2\x9b\xc7\x28\x50\x26\x24\x13\x3b\xd4\xf3\x73\x6e\xd0\xce\x74\x62\xb8\x0d\x5b\x27\x07\x04\x58\x63\xc2\xa4\x2d\xe7\x32\xb8\xd7\xa6\xb9\x62\x69\x31\xec\x99\x98\xbb\xce\xb3\x0d\x6c\x14\x8c\x46\x4d\xbb\x5e\xee\xac\x1b\xbe\xcd\x49\xee\x10\x88\xd9\x4c\x90\x63\xda\x8d\x96\x96\xdf\x54\x5a\x0b\xb5\xb1\x0c\x74\x42\xce\x4c\x3d\xd6\xf5\x1b\x54\xa7\x5a\xcb\x9d\xd4\x89\x72\x8f\xf9\xd3\xd5\x62\xd9\x85\xaf\xb7\x3d\x51\x32\xba\xf8\xa5\xa9\x8f\x16\x8d\x8e\xbe\x38\xb5\x8f\x6b\x0a\x0e\x70\x9c\x51\x09\x4e\xa5\x49\x40\x92\xba\xca\x00\x45\x23\x55\x8e\x66\x31\x8e\xa4\x68\x1d\x25\x38\x8e\x43\x69\x0d\xc3\x55\x92\xa1\x35\x06\x55\x48\x14\x57\x74\x4d\xc1\x39\x5a\xa3\x01\xb1\x7d\xe5\x7a\x14\xfd\x6a\x07\xeb\xc6\x1d\x6b\x66\x73\x68\x15\x2d\x97\xd6\xfe\x78\x29\x63\xd6\x10\x05\xeb\x99\x83\x71\xb2\xb8\x5a\x54\x85\x75\x9d\xf2\x73\x05\x55\xe8\x2d\x96\x45\x6e\x49\x18\xbe\x5b\xb7\x47\xfc\x1d\xd7\xc5\x37\x41\x85\x84\x23\x3e\xa6\x7f\x98\xcd\xa8\x69\xde\x7d\x5b\xff\x79\x15\x3b\xdd\xee\x04\xad\x40\x06\xd5\x15\x86\x61\x71\x9d\x63\x51\x4c\xd5\x54\xa8\xa9\x18\x8e\xd2\x10\xc7\x74\x8e\xc3\x39\x42\xe5\x38\x96\x46\x01\x46\x41\x92\xc4\x74\x92\x21\x39\x86\x64\x00\x0a\x08\x06\x6c\x5f\x75\xe3\xe7\xd5\xcf\x27\xdb\xcd\x92\x87\xe7\x53\x5f\x1e\x3f\xd9\x6e\x86\x20\x15\xc8\x91\x0c\x8d\x6b\x1a\xa9\x30\x3a\xc7\xea\x34\x49\x6a\x10\x47\x19\x9c\x21\x74\x0c\x60\x04\xa7\x53\x04\x80\xba\x8a\x03\x0c\x42\x85\xc6\x58\x96\xc6\x30\x56\x05\x0c\x8b\x33\xfa\xf6\x85\xe8\xb9\xbf\x25\xda\x2d\x04\x0e\xe1\xf8\x24\x35\x17\x1a\x85\xd5\xac\x99\x25\x1c\x51\xce\x6c\x30\xa6\xb5\x36\x3d\xcc\xd2\x6b\xc5\xe1\xb4\xd9\x37\xf6\xd1\x86\x2f\x77\x85\xcc\xb6\x51\x46\x7a\x93\x2f\xb7\x7b\x6f\xf7\xfc\x73\xfa\xeb\xea\x41\xff\xc7\xfd\xed\x62\xec\xf8\x9c\xc0\xf1\x77\x47\x8d\x52\x95\x15\x9b\x8b\xe6\xbb\x52\xc1\x45\x9e\xe8\xf7\x26\x2d\xb7\x32\x9d\x0c\x50\x54\x2f\xb1\x5e\x55\x62\xa6\x68\xa1\xb5\x2c\xf7\xb3\xfc\x80\xe0\xa3\xb7\xc1\xfb\x2b\x77\x62\x8e\xd3\xff\x3f\x38\xc7\xf1\x42\x8f\x5f\x24\xbf\xe5\x93\x8b\x47\x47\x94\xd3\xf8\x44\x65\x39\x05\x8d\xa0\xa1\x15\xdb\xdd\x95\xc6\x17\xa1\x42\xd7\x9b\xd0\x5f\x37\x2b\x52\x1f\x6c\x2c\xa5\x5d\xab\x8d\xa7\x62\x45\xae\xe6\x49\x6f\x3e\x2e\xcc\xbb\x23\xb5\xd9\x40\xad\xcc\x20\x5b\x9f\x65\x1c\xaf\x3f\x95\xe9\x4c\xb1\x3b\x54\xbc\x0d\x43\x35\xf1\x49\x89\x5c\xd4\x6a\x61\xde\xe8\xcd\x25\x7b\x49\xad\xde\x67\x85\xac\x38\xe7\x3a\x65\x90\xb3\x8a\xca\xb2\x3e\x7a\x2f\xa1\xed\x95\xa8\x0c\x04\x94\x77\xb3\x4a\xa5\x8f\xcd\x6b\x7b\x62\x57\x6c\x70\xf0\x8c\xa3\x6f\x6c\x9d\x46\x87\xc4\xe8\xae\xd0\x13\x68\x12\x93\xa9\x23\xb1\x9d\x92\x95\xcf\x42\x43\x25\x98\xc6\xc0\x17\x2b\x95\x4d\xbf\xc7\x2e\x7b\xe6\x28\x07\x84\x80\xaa\x52\x31\x01\xab\x59\xa5\xe2\x27\x85\x74\xdd\xd7\x78\xed\x3c\x39\xa1\xff\x03\xfd\x9f\x87\x02\xee\xf5\xe4\x61\x69\x93\x18\xaa\xe9\xa3\x36\x55\xff\x79\x94\xfa\xbb\x43\xf3\xe3\xce\x7d\x6a\xdc\xb3\x06\xd5\x71\x21\xcb\xd7\x49\x6a\x98\xcb\x13\xbe\xd8\x2b\xd6\xb1\x16\xc1\xa3\x35\xf8\xde\x60\xcb\x2d\xda\x96\x31\x9e\x83\x7d\x53\x5b\x4b\xf1\x97\x95\xae\x38\x37\x4f\xac\xfa\xca\xaa\x51\x57\xec\x51\xcd\xcc\x95\x8a\x95\x6a\xb9\x19\xe8\xe5\xaa\x11\x74\x3c\xb1\xbc\x5a\xf3\x5e\xa3\x41\x15\xb9\xd1\x84\xa2\x31\x30\xb0\x17\x72\x56\xec\xb5\xca\x4a\xd1\x2b\xa8\xa6\x5f\x52\x0c\x93\xd3\xfa\x3d\xad\xd2\x1a\x2e\xa6\xbd\xbe\x60\x6e\x24\x6d\x5a\x95\xf2\xa1\x03\xca\x2e\xb5\xcc\x10\x50\xc8\x0c\x79\x95\xa8\x13\x39\xa9\x44\x8e\x33\xa3\x4a\x67\x3d\x1a\x1b\x4e\x8f\x2a\x88\xa8\x56\xd6\x44\xa7\x22\xd3\x87\x7c\xfd\x53\x9d\x3b\xef\x1b\x8b\x65\x3e\xa8\xf7\xf9\x26\xc7\xb4\xb0\x56\xc7\xef\x6a\x4b\x39\x2f\xce\xf2\x59\xa1\x0b\x67\x1b\xad\xd9\x18\x58\x8e\xad\x9a\xd5\x5e\x24\xff\x3f\xec\xdc\xee\x82\xab\xc9\x7f\x9f\x73\x7f\xf2\xfc\xfb\xc1\xc8\x31\x3a\x74\xce\x95\xc8\x1d\xb7\xf8\x83\xce\x1d\x5f\x60\xbf\x5a\xe1\x6b\xd9\x7c\x50\xe4\x70\xcf\x6f\x3a\xe8\xa4\xa9\xfb\x6e\x21\x58\xb4\x5a\x2e\x5e\x1c\xfa\x80\x35\xb2\x79\xae\xaf\x4c\xfb\xdd\xf2\xc6\xec\xb2\x13\x66\x94\x6d\x57\xf0\xd2\x38\x9b\x75\x0d\x88\x4e\xd0\x41\x93\x5d\xbf\x2b\x44\x9e\xad\xda\xdc\x46\x9f\xb9\x8d\x0a\xd3\xc9\x74\xd7\x1b\xbe\x19\x3b\x9e\x8a\x2e\x66\x2d\xbc\xaa\xb5\x89\xcc\x90\x7b\xef\x40\x49\x2c\x6f\x58\x50\xa0\xb8\x8e\xbb\x58\xce\xc5\xc0\x1f\x9b\xa5\xc2\x70\x6d\x1b\x36\xbb\xa7\x96\xee\xd4\x89\xde\xb5\x9a\x55\x92\xda\xbe\x91\x3e\x77\xee\x38\xbf\x58\xf2\xff\x00\xe7\xae\x3d\xac\x3f\x57\x31\x06\xab\xb8\x8d\x8f\xe9\x4f\x98\xeb\x03\x33\xfb\x51\x8e\x74\xb6\x19\xe0\xfc\x30\x9f\xfd\xe1\x1e\xbb\x8d\x08\x37\xb2\xa5\xe4\xa9\x42\xd1\x59\x42\x09\xc4\xa8\xc8\xc4\xe7\xf3\x29\xe7\x0d\xec\x15\x22\x8d\x96\x54\xe3\x5b\x43\xa4\x52\x18\x22\x5f\xf7\xdb\x99\xbe\xef\x8f\xc1\xb8\x78\x14\xc5\xc9\xf9\x46\x9f\x45\xdc\xbb\xc2\xda\xbb\x46\x39\xed\x3c\x84\xc3\x91\x4e\x4f\xd3\x53\x80\x9d\xc6\x6c\xa7\xe0\x98\x54\xbc\x1f\xf3\xfa\x61\x09\x57\xcf\xb2\x7a\x9a\xee\x11\x78\x1a\xf1\x2b\xda\x91\xae\x2c\x35\xbb\x05\xe4\xb0\xc3\xe5\x43\x2d\xf9\x1c\x7b\x7f\xb0\x01\xe7\x7d\x70\x38\x3f\xe2\xc2\xd9\x07\x47\x27\xa0\x3d\xcd\x37\x06\x4b\x23\x9a\x50\x73\xcc\x70\xbb\xb7\x3d\x7d\x4f\x7b\xf2\xb8\xb7\xa7\xc9\x45\x58\x69\xdc\x0e\x4a\x8e\xa9\x99\xb3\xef\xd1\x4e\xf7\xab\xdb\xbb\x53\x8e\xb9\x7b\x9e\x69\x02\x32\x95\xf0\xa9\xca\xb4\x4e\xbf\xb0\x07\xfc\xe8\xb0\xbf\xcf\x60\xea\x05\xca\x05\x8e\x3b\x35\xc7\xec\xa2\xed\xe3\x57\x76\x43\x9f\x9d\x70\xf8\x34\xc9\x03\x60\x1a\xd1\x13\x75\xc7\x64\x77\x1b\xaa\x2f\x6d\x58\x3e\x3e\xe3\xf1\x79\xa6\x31\x5a\x2a\xcd\x84\xa2\x8b\xf3\xd5\x7e\x2b\xf3\x95\xdd\xc8\x67\x67\x5d\x3e\xcf\x7a\x0f\x98\x4a\xfc\x58\xdd\x31\xf7\xfd\x86\xe6\x2b\x1b\x95\xcf\x0e\xfd\x7c\x9a\xf0\x01\x30\x8d\xf0\x89\xba\x8b\xc6\x8e\x37\x2a\x7f\x3f\xec\x42\xbe\xba\xe1\x36\xe5\x50\xd4\xe7\xdb\x91\x80\x4c\x6d\xc9\xa9\xca\xb4\x38\xe1\xc1\xf9\xf7\xdd\x0e\xd3\xcb\x9b\x61\x4f\x0f\x8b\xfd\x04\xee\x57\x89\x3f\xc5\xfa\xf4\xbc\xdc\x2d\xd9\xe8\x74\xdd\xfb\x36\xf2\xc6\x07\xf1\x9e\xe0\x20\x75\xf9\x90\xf8\x75\xdb\x92\x5c\x42\x14\xdf\x85\x10\xd9\x6d\xdb\xfe\x86\xf4\xc5\x42\xab\x80\x24\xb7\x71\x63\xfb\x37\x9f\xe7\xb9\xd9\xd9\x29\xc0\x8f\x12\x3d\x43\x0a\xa9\x6e\x27\xf8\x63\xa2\x09\xc1\x33\x3e\x87\xc3\x8b\x1f\xe5\xb1\x47\x08\xf5\x1f\x7c\xe7\x88\xc2\xe5\x7c\xea\xe8\x98\xe5\x67\x28\xec\x40\x62\x16\x89\x31\x78\x27\x91\xa3\x93\xa1\x1f\x25\x92\x04\x09\x89\x1c\x67\x8b\x77\x32\x49\x9c\x65\xfd\x28\x8f\x03\xc4\x25\xa7\x88\x24\xd2\x66\xe4\xc3\x81\xdb\x8f\x2a\x4f\x82\x84\xea\x13\x5b\x0a\xee\xb4\xc0\xe9\x21\xe1\x4f\x30\x49\xe2\x6c\xc9\xec\x72\x8e\x63\x32\xc9\x23\x4b\xce\x09\x9d\x9f\x72\xfe\x30\xa7\x33\xa8\x4b\x5d\x74\x24\x79\x29\x19\xd9\x1d\xd2\xfe\x30\x9d\x23\x98\xc8\x42\xdb\x2c\xe7\x88\x4b\xda\x62\xf3\xd2\x89\xfe\x88\xea\x4c\x67\x16\xf4\x61\xa4\xed\xff\x07\x00\x00\xff\xff\xd9\x10\x2d\xcb\x3b\x60\x00\x00") + +func account_mergeCoreSqlBytes() ([]byte, error) { + return bindataRead( + _account_mergeCoreSql, + "account_merge-core.sql", + ) +} + +func account_mergeCoreSql() (*asset, error) { + bytes, err := account_mergeCoreSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "account_merge-core.sql", size: 24635, mode: os.FileMode(420), modTime: time.Unix(1508958205, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _account_mergeHorizonSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x3d\x69\x53\xe2\xca\xda\xdf\xe7\x57\xa4\xe6\x0b\x63\x89\x9a\x7d\x71\x5e\x6f\x15\x4b\x10\x04\x82\x6c\xa2\xde\xba\x95\xea\x24\x1d\x8c\x42\xc2\x24\x41\xc5\x53\xf7\xbf\xbf\x95\x0d\x92\x90\x8d\x80\xe7\x5c\x6a\xea\x1c\xa1\x9f\x7e\xb6\x7e\xb6\xee\x4e\x77\x2e\x2e\x7e\x5c\x5c\x20\xf7\x86\x65\xcf\x4d\x38\x1e\xf6\x10\x05\xd8\x40\x02\x16\x44\x94\xf5\x72\xf5\xe3\xe2\xe2\x87\xd3\xde\x5c\x2f\x57\x50\x41\x54\xd3\x58\xee\x00\xde\xa1\x69\x69\x86\x8e\x70\x97\xf4\x25\x15\x82\x92\x36\xc8\x6a\x2e\x3a\xdd\x63\x20\x3f\xc6\xfc\x04\xb1\x6c\x60\xc3\x25\xd4\x6d\xd1\xd6\x96\xd0\x58\xdb\xc8\x0d\x82\xfe\x76\x9b\x16\x86\xfc\xb6\xff\xab\xbc\xd0\x1c\x68\xa8\xcb\x86\xa2\xe9\x73\xe4\x06\xa9\x4c\x27\x2d\xb6\xf2\x3b\x40\xa7\x2b\xc0\x54\x44\xd9\xd0\x55\xc3\x5c\x6a\xfa\x5c\xb4\x6c\x53\xd3\xe7\x16\x72\x83\x18\xba\x8f\xe3\x05\xca\x6f\xa2\xba\xd6\x65\x5b\x33\x74\x51\x32\x14\x0d\x3a\xed\x2a\x58\x58\x30\x42\x66\xa9\xe9\xe2\x12\x5a\x16\x98\xbb\x00\x1f\xc0\xd4\x35\x7d\xfe\xdb\xe7\x1d\x02\x53\x7e\x11\x57\xc0\x7e\x41\x6e\x90\xd5\x5a\x5a\x68\x72\xd5\x11\x56\x06\x36\x58\x18\x0e\x58\xad\x37\xe1\x47\xc8\xa4\x56\xef\xf1\x48\xa7\x85\xf0\x8f\x9d\xf1\x64\x8c\x0c\x84\xde\x93\x0f\x7f\xf9\xa2\x59\xb6\x61\x6e\x44\xdb\x04\x0a\xb4\x90\xe6\x68\x70\x8f\x34\x06\xc2\x78\x32\xaa\x75\x84\x49\xa8\x53\x14\x50\x94\x8d\xb5\x6e\x43\x53\x04\x96\x05\x6d\x51\x53\x44\xf5\x0d\x6e\x7e\xff\x1d\x04\x65\xf7\xaf\xbf\x83\xa4\x63\x57\x7f\x9f\x80\x1e\xb5\xb8\x74\x6e\xf7\x8e\xd0\xe4\x1f\x43\x3d\x7d\x4a\x6e\x47\x11\xaa\x2a\x94\x6d\x4b\x94\x36\xa2\x61\x2a\xd0\x14\x25\xc3\x78\xcb\xee\xa8\xe9\x0a\xfc\x14\x43\xf4\x75\x0b\xb8\xb6\x68\x89\x86\x2e\x6a\xca\x21\xbd\x8d\x15\x34\xc1\xb6\xaf\xbd\x59\xc1\x23\x7a\xef\x38\x39\x8a\x8b\xc3\xfa\x2e\xa0\x32\x87\xa6\xdb\xd1\x82\x7f\xd6\x50\x97\x0f\x12\x21\xd4\x7d\x65\xc2\x77\xcd\x58\x5b\xfe\x6f\xe2\x0b\xb0\x5e\x4a\xa2\x3a\x1e\x83\xb6\x5c\x19\xa6\xe3\x31\x7e\xd8\x2b\x8b\xa6\xac\x2e\xe5\x85\x61\x41\x45\x04\xf6\x21\xfd\x03\x63\x2e\x61\x4a\xbe\xeb\x94\x60\x3a\xdc\x13\x28\x8a\x09\x2d\x2b\xbb\xfb\x8b\x6d\x2a\x6e\x6a\x10\x17\x86\xf1\xb6\x5e\x15\x80\x5e\xe5\xb1\xe4\x41\x01\xcd\x3c\x10\x71\x10\x17\x0b\x77\x70\xe2\x84\xaa\x42\x33\x0f\x74\xe5\x40\xbe\xd8\xb9\x7c\x5b\x11\xb7\x95\x36\xb9\xca\x7f\xd9\xfa\x47\x11\x60\xc3\xe3\xc3\xc8\x05\xd4\x2c\x5b\xb4\x3f\xc5\x55\x3e\x4a\x07\xd2\x58\x15\x85\x84\x45\xc1\x82\x00\x9c\x0d\x2c\x05\x4e\x92\x0b\x96\xef\xfb\xd2\xd6\x76\xb3\xe1\xbc\x1c\xe6\x68\xdb\xb2\xd6\x0e\xe5\x83\xb2\xd8\x76\x6c\x57\xc0\xb4\x35\x59\x5b\x01\xdd\x2e\x98\xd7\x12\xbb\x8a\xab\x03\x33\xe9\x36\xb8\x1f\xca\x41\x72\xc7\x83\xe9\xbb\xea\x2b\x42\xcf\x03\xfc\x76\xfc\xde\x70\xca\x86\x12\x54\x27\x4e\xa8\x0c\x0a\x15\x77\x84\xc5\x82\x1c\xcc\x0d\x73\x25\x2e\xb5\xb9\x9f\x3b\x33\x58\x88\x41\x66\xca\x58\xd4\x84\xbc\xde\x8d\x41\x6f\xda\x17\x10\x4d\xf1\xa8\x37\xf9\x56\x6d\xda\x9b\x14\xc4\x9d\x62\x1a\x27\xc0\xec\x0f\x4a\x36\x26\xf7\x5b\x71\xf1\x83\xb4\x32\xe6\x87\x53\x5e\x68\x94\xd0\x99\x53\x18\x5a\xf0\xcf\xc1\x94\x23\x48\x0a\xf7\x56\x60\x41\xd8\x5d\xf9\x55\x58\xc2\x14\xdf\x3c\x44\xbe\x64\x14\xc5\xfa\xfa\x85\x4a\x31\x60\xbf\x2a\x29\x2c\x9b\xef\xa7\x87\xc8\xe2\x75\x29\x08\xeb\xd7\x2b\xc5\xf9\x09\x0a\x9c\x22\x1c\xc5\x3c\xdd\x07\xe6\x1f\x27\xbc\x30\xee\x0c\x84\x70\x87\xc5\x6a\x6e\xfd\x59\x04\x6c\x34\xda\x7c\xbf\xb6\x87\xef\xf7\x0f\x6f\x52\x2f\x80\x25\xbc\x0e\x7e\x43\x26\x9b\x15\xbc\xf6\xbb\xfc\x46\xc6\xf2\x0b\x5c\x82\x6b\xe4\xe2\x37\x32\xf8\xd0\xa1\x79\x8d\x5c\xb8\x73\xfd\xc6\x88\xaf\x4d\xf8\x00\x73\x80\xef\x47\x04\x63\xb4\xd1\x47\xdc\x18\xf4\xfb\xbc\x30\xc9\xc0\xec\x01\x20\x03\x21\x8a\x00\xe9\x8c\x91\x4a\x30\x8b\x0f\x7e\xb3\x5c\x24\x95\x38\xe5\x40\x7c\x9f\xe6\x56\x43\xb9\xf2\x44\x74\x29\x0c\x26\x31\x7d\x22\xb3\xce\xa4\xbd\x65\x2b\x3c\x9d\x8f\x90\xdf\x61\x89\x31\x72\x88\xf0\x7b\x48\x5c\x05\xdc\xf7\xae\x56\xf3\xf1\xb0\x87\xac\x4c\x43\x86\xca\xda\x04\x0b\x64\x01\xf4\xf9\x1a\xcc\xa1\xab\x86\x82\xcb\x0f\x0e\x98\x02\x55\xb0\x5e\xd8\xa2\x0d\xa4\x05\xb4\x56\x40\x86\xc8\x0d\x52\xa9\xc4\x5a\x3f\x34\xfb\x45\x34\x34\x25\xb4\x0c\x12\x11\x36\x6e\x94\xbe\xa8\xae\x09\xef\x04\x0d\x8c\x20\x49\xe9\x9e\xb5\xc7\x13\xde\xaf\x1f\x08\x82\x38\x71\xdd\x86\x9f\xb6\x3b\x16\xc2\xb4\xd7\xab\xba\xbf\x82\xd5\x6a\xa1\xb9\x33\x18\xc4\x29\xc9\x2d\x1b\x2c\x57\x88\xc3\xa8\xfb\x15\xf9\x32\x74\xf8\xe3\x2c\x3e\x2a\x69\x2e\x17\x58\xbc\xef\xab\xc5\x78\xde\x7a\x76\x0a\x56\x97\xcd\xf1\xa4\x36\x9a\x78\x36\x83\xb9\x3f\x74\x84\xc6\x88\x77\x07\xb8\xfe\xe4\xff\x24\x0c\x90\x7e\x47\x78\xa8\xf5\xa6\xfc\xf6\x7b\xed\x71\xf7\xbd\x51\x6b\xb4\x79\x04\xcb\x13\xa6\xb4\xda\xe3\x88\x76\x7a\x97\xb4\xb9\xa6\xdb\x41\x46\x45\x74\xf8\x69\xbf\x83\xc5\xaf\x4a\x8a\xc4\x95\xeb\x6b\x13\xce\xe5\x05\xb0\xac\xb3\xf8\x70\x79\x33\x37\x44\x7e\x01\x26\x90\x6d\x68\x22\xef\xc0\xdc\x68\xfa\xfc\x17\x4d\x9e\x65\x0c\x94\x17\x78\x8f\x96\xcc\x2b\x17\xb6\x72\x69\xba\x0d\xe7\xd0\x8c\xf3\xb8\x2d\xd7\x92\xd9\x4c\x04\x77\x0a\xbd\x04\x70\x0c\x4f\x06\xf7\x2a\xc0\x84\x0e\x14\xbd\xeb\x90\xa7\x8f\x13\x9b\x6d\x18\xe7\xdf\x66\xb4\x59\x82\x20\x83\x99\xc0\x37\x91\xfa\x53\x8e\x44\x5e\xf9\x97\x2d\xd0\x16\x57\xac\xf9\xd2\x99\x37\x26\xf3\x16\x14\x14\xc7\x5a\x9d\x8f\xc7\x37\xbb\x98\xcf\x88\x3b\xf7\x8a\xda\xc9\x7e\xfd\x94\x06\xf9\xd3\x9d\xd0\xfe\x4c\xb1\x66\xd7\x8e\x93\x9b\x14\x68\x03\x6d\x61\x21\xaf\x96\xa1\x4b\xe9\xc6\x16\x54\x61\xc7\xea\xc1\xc7\xe3\xeb\x21\x58\xc5\x4b\xe1\x2d\xb4\xb4\x56\xc8\x0b\x93\x56\xf5\x92\x3b\xfa\x6a\x09\x95\xdd\xee\x40\x6c\xf9\x08\xa2\x1c\x1a\xa3\xb0\x1b\x88\x62\xf0\xdb\xa5\xb5\x58\x62\x32\xd6\xf6\x2e\x37\xc5\xfb\x98\x10\xd8\xb9\x9d\x3c\xd8\xf5\x4a\x29\x0c\xbb\x35\x1d\xff\x6b\x6c\xd5\x71\x4f\x16\x2c\x6e\x44\x86\x0d\x16\xa2\x6c\x68\xba\x95\x6c\x83\x2a\x84\xe2\xca\x30\x16\xc9\xad\xee\xaa\xb9\x0a\xd3\xc6\xda\x6d\x36\xa1\x05\xcd\xf7\x34\x90\x25\xf8\x14\xed\x4f\xd1\x09\x9d\x96\xf6\x95\x06\xb5\x32\x0d\xdb\x90\x8d\x45\xaa\x5c\x68\x81\xd8\x9a\x32\x61\x39\xd6\xfa\x53\x26\xc1\x39\xb9\xa8\x78\x14\xc8\x8f\x2b\x87\x8a\x7c\xda\xf4\x92\x49\xe3\xef\x4a\x37\x07\x09\x7a\x64\xfa\xc9\xa4\xb5\x9f\x8e\x92\xc1\x33\xd2\x53\x68\x3a\x7f\x32\xdb\xdc\xaf\xf9\x62\x71\x20\xb2\xf7\x93\x0c\xe3\x56\xe4\xb2\x27\x8a\x9b\x99\x8e\x4c\x4c\xde\x4f\x96\xb1\x36\xe5\xed\xd6\x5b\x4a\x4a\x08\xdc\xbc\x52\xb9\xbe\xde\x83\x28\xe0\x07\xfe\x6a\xca\xb1\xea\xf4\x37\x15\x7f\x9d\x34\x8f\xfb\x79\xad\x4c\x56\x71\x77\x12\x52\xc9\xc6\xb6\x34\xb3\x80\xfc\x5d\xd6\x2c\x90\xa5\x3b\x3c\x89\x00\xfb\x9b\xc3\x39\x70\x99\xe4\xb6\x50\x19\x14\x5d\x96\x34\x4b\xb4\xe0\x62\x01\x4d\x44\x32\x8c\x05\x04\xba\xd7\x16\x5a\x40\x4d\xdc\xe3\x75\xd1\x8a\xee\x53\x00\x48\xa3\xcd\x37\xba\xc8\xaf\x5f\x61\x11\xff\x85\xa0\x67\x67\x79\xa8\x92\xba\x07\x52\xfd\xdf\x9e\xa0\x05\xf0\x45\x84\x8e\xa1\x8f\x69\xc4\x65\x30\xd3\xd6\x93\xd7\x1d\x4f\x60\xfd\xc9\x2b\xc9\x05\x53\x5d\x91\x18\x73\x4c\xb2\xcb\x5b\xb5\x3d\x4d\xba\xcb\xa1\xf2\x77\x25\xbc\x03\x85\x3d\x32\xe5\xe5\x50\xdb\x4f\x7a\x69\x1d\x32\xd2\x5e\x64\xa5\xfe\x84\xb6\x1a\xd8\x67\x98\xa5\xc2\xb3\x0f\x3f\x38\xe7\xcc\x69\x8a\x66\xc6\xec\x24\x97\x08\xbb\x23\x9d\x5e\x9e\x83\x54\xd7\x4b\x9b\xda\xfc\x23\x93\x13\xfb\x53\x84\xfa\x3b\x5c\x18\x2b\x98\xb4\xe0\x67\x7f\x3a\x53\x85\xf5\xc2\x4e\x69\x5c\x42\x1b\xa4\x34\x39\x5a\x48\x6b\xb6\xb4\xb9\x0e\xec\xb5\x09\x93\xd6\xa6\x38\xfa\xec\xdf\xff\xd9\x55\x17\x7f\xfd\x37\xa9\xbe\xf8\xf7\x7f\xe2\x73\x16\xb8\x34\x52\x96\x91\x76\xb8\x74\x43\x87\x99\xd5\xca\x0e\xd7\x3e\x1a\x5f\x32\x6d\x09\x45\xc9\x58\xeb\x8a\xe5\x8c\x1c\x6b\x02\x7d\x9e\xb5\xe8\xe9\x2d\x82\x69\x4a\xe0\x3d\xc1\x46\x59\x11\x97\xf7\xdc\xc7\xdd\x9d\xcc\xd9\x83\x1b\xf3\x93\x8c\x05\xc3\xf0\xd2\x4c\x78\xb9\xf0\xb0\xc2\xfd\x74\x42\x14\xdc\xa2\xcc\x14\x2a\xb3\xe0\x2f\x22\x64\x6a\xe6\x3c\x99\x98\x85\x77\x79\x33\x05\xcd\x09\xf3\xc9\xa2\x36\x81\x0d\x10\xd5\x30\x0b\xec\x15\x20\xcd\xda\xa4\x96\x23\x62\x47\x18\xf3\xa3\x09\xd2\x11\x26\x83\xbd\xfd\x02\x37\x3b\x8e\x91\x5f\x15\x4c\xd4\x74\xcd\xd6\xc0\x42\xf4\x76\x87\x2e\xad\x3f\x8b\x4a\x15\xa9\xe0\x28\xc6\x5c\x60\xe8\x05\x4e\x21\x18\x7e\x8d\xe2\xd7\x24\x76\x49\x50\x14\x8b\x51\x17\x28\x53\x39\xfb\x5d\x0c\x3b\x2e\x7a\x4f\x28\x45\x54\x20\x6d\x44\xdb\xd0\x94\x6c\x4a\x1c\x46\x1c\x42\x88\x10\xd7\x16\xdc\x46\x78\x51\xd3\xf7\x1e\x8a\xca\x24\x47\x63\x18\xc6\x1d\x42\x8f\x14\x81\xa2\x88\xf1\xc5\x94\x6c\x1a\x14\xc7\xb1\x87\xd0\xa0\x44\x2f\x9d\x04\x95\xad\xbb\xf3\x94\x49\x82\x41\x49\xf2\x20\xb5\xd1\x01\x09\x3f\xda\x14\x20\x41\x30\x24\x7d\x08\x09\x46\x5c\x1a\x8a\xa6\x6e\x8a\x4b\xc1\x62\x1c\x8a\xfb\x24\x52\x5c\x23\x73\x43\xe7\x50\xdf\xd8\xdb\xd4\x09\x78\xc7\xaa\x48\xe5\xb6\xf1\xd8\xbd\xa5\x47\x02\x39\x10\x3a\xfc\x7d\xa3\x2f\xb4\xea\x0c\x81\xd7\x48\x82\x7e\xa6\xee\x85\xe6\x78\xd4\xbb\x9d\x75\x99\xdb\x7a\xaf\xd1\x1f\xf6\x3a\xad\x01\x39\x66\xf8\xa7\xd9\xc3\x34\xae\x9f\x54\x22\xb8\x43\xa4\x3e\xba\x7f\x6a\x77\x7a\x78\xa3\x43\xb4\x84\x21\x59\x7f\xec\xb5\xfa\x42\xb3\xd7\xba\x9b\x0a\xf7\x53\xbc\xfd\x44\x3c\xf7\x5b\xe3\xf6\x40\x98\x36\xf8\x41\x6d\x3c\x63\x86\x0d\x66\xf0\x88\xb7\x0b\x13\x21\x1c\x22\x35\x6a\x56\xbf\x7f\xaa\x51\x4f\xe4\xac\xc6\xb7\x1f\x67\x23\x7c\xda\x1d\xe0\xd3\x01\x59\x9f\xde\xb6\xa7\x43\x86\xe4\xa7\xf7\xdd\x81\x80\x0f\xdb\x0f\xe4\x6c\xd4\x1e\x74\x46\x42\xb7\xdb\xc6\x2b\x65\xf7\x06\x9d\x08\x99\x33\x0c\x63\xbe\xc7\x37\x26\xa1\xcd\xd6\x4b\x0b\x66\xef\x9b\x55\x11\xa2\x8a\xd8\xe6\x1a\x16\x30\x8e\xfd\x1d\xb1\x22\xa6\x51\x66\x17\xe6\x24\x92\x46\x12\x7e\x15\xc1\xaa\xde\x0e\x72\xbe\xa0\x49\xbb\x30\x65\x9d\x20\xd8\x89\x09\xf9\x00\x4b\xb1\x1c\x47\xb0\x34\xcb\xb9\x4c\xa1\x55\xa4\xf2\xd7\x4f\xcb\x76\x42\xba\x3e\x17\x25\xb0\x00\xba\x0c\x7f\x5e\x23\x3f\x31\x14\x45\x2f\x51\xef\xf3\xf3\xbf\x69\xc6\x19\xa7\x80\x47\x29\xe0\xee\x08\x57\xfe\xfa\xe9\xcd\xd1\xf7\xf0\x56\x91\x9f\xbb\xdd\x47\xa7\x55\x07\xb6\xf6\x0e\x8b\xd3\x8b\x49\x44\x54\x11\xcc\x13\xe9\x03\x6a\xf3\x17\x87\x20\x56\x45\x7e\x7a\x0a\x13\xdf\xe0\xc6\xa1\x51\x36\x0a\x14\xe7\x8a\xf0\xb9\x22\x71\x86\xa5\xbe\x55\xcf\x3e\x85\x6f\xd7\x73\x4c\xa2\x62\x7a\x2e\x19\xa3\x0e\x1a\x7d\x0c\x67\x59\x92\x43\x29\xce\x57\x74\x5c\x0d\x1c\xc7\x5d\x72\xce\xe7\x44\x5a\x88\xd0\xc3\xdd\x7f\xdf\x47\x2f\x2e\x1f\xe1\x8a\xe8\xcc\xc7\xf2\xe3\x48\xd2\x2e\x66\xd9\x38\x12\xec\x64\x86\x73\x29\x4d\x28\x1c\xab\x52\x04\x0d\x21\xcd\x2a\x98\x84\x33\x12\x25\xb1\x9c\x8a\x13\x40\xa5\x08\x0c\x93\x18\x8a\xe6\x00\x4e\xaa\x40\xc5\x48\x94\x00\x0a\x2a\x51\xb8\x44\x13\x84\x84\x32\x12\xe4\xb8\x4a\xd5\x9b\xee\x39\xae\xe1\x98\x12\xc6\x31\xe8\x05\x8a\x5d\xa0\x18\x82\xa2\xd7\xee\xbf\x78\x51\xc1\x5d\xa3\xc4\x35\x4e\x5f\x72\x2c\xce\xd2\x78\x6e\x2b\x89\x73\x24\x47\x33\x38\x47\x7b\xd6\x8a\xa1\x7b\x1f\x97\x34\x86\x86\x1b\xfd\xef\x68\xca\x10\xc5\x55\xe1\x8c\x3f\xa0\x69\x1c\xa7\x00\xc0\x65\x42\xe5\x70\x1c\xb0\xb4\x4a\x62\x18\x25\x63\x12\x41\x4b\x0c\xca\xb0\x38\xc5\x92\x0c\x41\x02\x92\xc6\x38\x4a\x66\x64\x12\x95\x08\x85\x81\x98\x42\x01\x85\xc4\x1c\x55\x9c\x42\x9d\xbe\x35\xee\xeb\x84\x4c\x55\x15\xc7\xb0\x0c\x93\xdb\xea\x45\x58\x92\xe2\xf0\x0c\x45\xe2\x68\xb2\x2a\x9d\xff\xb1\x05\x95\xe9\x38\x2f\x43\x63\x10\x40\x95\x56\x30\x16\x02\x0c\x63\x21\x85\x72\x90\xa3\x51\x16\xb0\x28\x4a\xa0\x32\x4b\x02\x46\x45\x69\x95\x86\x80\x24\x00\x4d\xb0\x34\x85\x42\x0c\xc7\x70\x55\x22\x31\x99\x73\xa5\x39\xc1\x80\x60\x9e\xab\xed\xeb\x85\x4a\x56\x17\x73\x89\x92\x34\xce\xe5\x35\xfa\xee\x8c\xb1\x2c\x9b\xa1\x4b\x22\x47\x97\x39\xae\x5f\x60\x47\xb7\x6c\x24\x48\x59\x37\x48\x2b\x30\x52\xc6\x3d\x07\x4b\xbc\x88\x28\x87\x25\x96\xb2\x4a\x62\x21\x63\x89\xaf\x1c\x16\x2a\x9e\xa8\xca\xa1\xa1\xe3\xf9\xe0\x34\x3b\xdc\x27\xa9\x78\xb3\x57\x83\xaa\x08\x5d\xb4\xd2\x4f\xd9\xe7\x3d\xda\x62\x77\x6a\x0c\x1b\xd7\xf6\x6f\x36\x54\xa7\xa9\x6b\x5d\x81\xa6\x5b\xc3\x94\x9c\xcc\xb9\xb9\xdf\x9b\xed\x1c\x55\x72\x56\x91\x22\x45\xe3\x37\xcc\x3a\xd3\xd4\xe6\xfb\xc1\xf6\x6f\xf2\x5b\xd5\x56\xb6\x82\xfc\x5f\x52\x5b\xd4\xf1\xb7\x5f\x3c\xc5\xb1\xae\xe2\x34\xdd\x36\x8e\x95\xf7\x14\xd6\xe6\xa9\xe4\x88\x45\x92\x1c\xd7\x4e\x78\xde\xe0\x90\x49\x7c\x3a\xd6\xfc\x9d\xdd\xb2\xe1\x23\x75\x05\x39\x29\xe5\xb1\xe9\x91\x3d\x17\x0f\x1e\xc5\x93\x96\xae\x72\xf1\x10\x51\xe7\x2c\x8d\x87\x8c\xe2\x49\x4b\x7c\xb9\x78\xf6\x8c\xbe\x2c\x22\x3a\x86\x28\x3d\xf9\x1d\xba\x09\x7c\x8a\xf4\x97\xb7\x47\x70\x40\x02\x4c\xdd\xf1\x3d\x81\x0d\x87\xd6\x72\x25\x1c\xe0\x38\x23\x13\x9c\x4c\x93\x80\x24\x55\x99\x01\x92\x42\xca\x1c\xcd\x62\x1c\x49\xd1\x2a\x4a\x38\xb3\x58\x5a\xc1\x70\x99\x64\x68\x85\x41\x25\x12\xc5\x25\x55\x91\x70\x8e\x56\x68\x40\x78\x33\x0e\xec\x98\x20\xea\x95\xd9\x6e\x71\x9b\x3a\x07\x61\xa9\xb4\x92\x3b\xd4\x1a\xf6\x9c\x4a\xcd\xf9\xdc\xf6\xd8\xf6\xf0\x7d\xf8\x26\x75\xf1\x76\x8d\x98\x3d\xbc\x8e\xcc\xee\xf2\xf5\x11\x45\xd5\x5b\xd6\xea\x75\x98\x25\xca\x8f\x3e\xee\x66\x57\xb5\x47\xc2\x01\x7f\xae\x6d\x3f\xf5\x5a\xf4\x13\xff\x5e\x33\xff\x08\x74\x0f\x0e\xc0\xfc\xf5\xb3\x0f\xa6\xf7\x1c\x5d\xff\x52\x2d\x0e\xa2\xb2\x61\x0a\xcf\x8f\x5f\xf5\xd9\xdd\x5b\xcb\xe8\x32\x6f\xef\x6f\x1f\x0e\x78\xe3\xa1\xf6\xfe\x16\xc6\xf7\xf0\xfe\xd1\xe2\x9c\x26\xbe\x69\x13\xdd\x8f\x25\xb8\x5f\xdf\x2b\xad\xf1\xf4\x53\xa9\xb5\xa0\x44\x0f\x86\xd0\xde\x0c\xbb\x9d\x19\xf8\x5a\x48\xe3\x7e\xff\x65\xd9\xee\x0a\xbd\x26\x69\xfd\x79\xe1\xff\x4c\x9f\xe5\xe1\x3d\xba\x38\x7f\xbc\x1a\xac\xce\x0d\x6b\xb6\x14\xe8\xf3\xd6\xf4\x49\xb2\xbe\x18\x6a\x88\xbf\xde\x92\xef\xfd\x7e\x25\xd0\x81\xab\x87\xe1\x8e\xf2\x30\x2e\x89\xfb\xb9\x89\xc0\xd7\x78\x97\xe7\xdd\xf7\xce\xee\xcf\x2e\xfd\x0a\x35\xe2\x75\x69\x74\xd8\xc9\xed\xa2\x79\x05\xe7\x32\xc1\xdc\x3f\xda\xed\x6e\xf7\x6b\xf6\xc0\x7e\x3c\x68\xcf\x75\xd0\x58\x53\x3d\xaa\xef\xc2\x2f\x86\x3d\xca\xeb\xd9\x48\xa4\x9c\xa2\xdf\x28\xbf\x21\xfa\x07\x8c\x69\x13\x36\x70\xeb\x41\x78\xba\xfd\x9a\xef\xfa\xcf\x8b\xd3\xdf\xea\xc4\xed\xd3\x8f\xc1\xd5\xb5\xab\x3a\xda\x43\xef\x6e\x37\xf6\xcb\x87\x80\x2d\x9e\x50\xb0\x59\x19\x18\x27\xb4\x3f\xdf\x7b\x8d\xcd\x80\xb2\xeb\xbc\xdc\xf0\xc6\x99\x98\xdb\xe6\x40\x7f\xce\x50\x40\x54\xde\xa4\x4f\x7c\x4c\x0e\xa7\xff\x74\x75\x2e\xc7\xf0\x15\xa4\x7f\xe3\xda\xc7\x5f\x8c\xb2\xb1\xee\x96\xaf\xcc\x2b\x31\x9a\x2e\xfa\x8f\xc3\xfa\xe3\xf2\xfc\xf5\xad\x6d\xca\x6f\x0d\xad\xb5\xb4\xa8\x19\xfa\xda\xec\x3c\xbf\x6c\x5e\xc7\x1f\xe7\xbd\xae\x31\xea\x2e\x6e\x1f\xf9\x26\x77\xa7\x2e\xae\xbe\xfe\xa8\x7f\x7a\xad\xd5\x2b\x7c\x7f\x79\xb8\xbd\x65\xfa\xe7\xe7\x53\xc1\xf8\x5c\xf7\xbe\x9a\xb5\x9b\x1b\xb7\xe4\x70\x1f\x0a\x08\xd6\x83\x9c\xff\xe6\xe7\x88\xf0\x76\x21\x2d\x41\x06\x55\x25\x86\x61\x71\x95\x63\x51\x4c\x56\x64\xa8\xc8\x18\x8e\xd2\x10\xc7\x54\x8e\xc3\x39\x42\xe6\x38\x96\x46\x01\x46\x41\x92\xc4\x54\x92\x21\x39\x86\x64\x00\x0a\x08\x06\x48\xbb\xa5\x93\x23\x02\x19\x9e\x19\xc8\x98\x4b\x14\xe7\x68\x3a\x65\x21\x26\xd4\x1a\x4e\xb9\xc7\x06\xb2\xb8\xd3\xed\x19\xfa\x00\x6f\x5c\xd5\x06\x24\xf5\x54\x6f\x12\x76\xfb\xa1\x35\xc0\x46\x44\x0d\xed\xc3\xb7\x7b\xf6\x6e\x44\xeb\x02\x56\xe3\xe0\x4c\x53\x36\x1d\x7b\x5a\xcb\x0e\x64\x35\xe2\x73\x26\x7d\xde\x0f\x24\xfd\xb9\xaf\xd5\x6f\x5b\xdd\xde\xdd\x70\xad\xde\xf5\xe6\xeb\x89\xd5\xbe\xfb\xdc\xd4\xac\xfb\x7b\xaa\xc5\x3d\xbf\x52\x34\x06\x1e\xf5\x77\xe1\xaa\xfd\x30\xba\x93\x5a\x16\x2f\x6b\xf6\xad\x34\xd7\x38\x65\xf6\xa0\x74\x47\x4f\xef\xcb\x87\x59\x43\xfb\xea\x28\xcb\x5e\xa7\xf9\x6d\x81\xac\x69\xcf\xdf\x3f\x9a\xeb\xc1\xac\x36\xe4\x98\x11\x36\x9a\xd8\x53\xe5\x43\x68\xb6\x57\xcd\xab\xc6\x14\xae\xbe\x94\xe1\xfd\xe3\xc2\xd0\x65\xad\xf7\xe0\xc2\xff\xc3\x81\xcc\x7c\xe7\xfa\xc2\xb1\x81\x6c\x98\xa4\x93\x32\x81\x84\x25\x13\x75\xba\x27\x6f\xfc\xe3\x07\x12\x81\x7d\x58\xb2\x93\xaf\x25\x85\x4f\x3a\xf3\xd1\xcb\x58\xdb\x4c\x7b\xfa\x66\x4c\xf6\xde\x98\xfa\x46\x96\xe7\xbd\xe6\xd7\xf9\x48\x9d\x3d\x9d\x43\x7b\xb6\xa0\x98\x2f\xf5\x13\x9b\x8e\x67\x9f\x52\xbd\xdd\x31\x47\x4b\xb2\xf3\xfe\xf8\xb0\x78\x1c\xbf\xcd\x7a\xd4\xe2\x61\x6e\x58\x9b\xf6\xb3\xb6\xa9\x7d\x9c\x24\x90\x30\x04\x29\x41\x8e\x64\x68\x5c\x51\x48\x89\x51\x39\x56\xa5\x49\x52\x81\x38\xca\xe0\x0c\xa1\x62\x00\x23\x38\x95\x22\x00\x54\x65\x1c\x60\x10\x4a\x34\xc6\xb2\x34\x86\xb1\x32\x60\x58\x9c\x51\x2b\xdb\x15\xfa\xd2\x73\xa8\xd0\x62\x2b\x91\x17\x51\x48\x9a\x4d\x5b\xda\x0d\xb5\x46\x6a\x66\xcf\x14\x0e\xcc\xe3\xcf\xbb\xa1\xce\xa8\x8d\x3c\x9b\x3c\x30\xa4\x78\x1f\x10\xd4\x4a\xf5\x5a\xff\xaa\xb9\x6e\x71\xb8\x65\x0f\x0d\xf4\x75\xa8\xda\x26\xbf\x7e\x1f\x8d\x4c\xbc\xf5\x64\x03\x76\x7e\xd5\xe4\x66\xd2\x72\x36\xbd\xfb\xd2\xa6\xec\x2b\xf3\x7c\x35\xee\xe2\xb7\x2f\x57\x57\xe6\x1c\xa2\xaf\xe8\xe3\x90\xdd\xbc\x49\x44\x93\xed\xe9\xdc\x97\xba\x32\xef\xbb\xcc\xe4\x7c\xba\xf9\xaa\x0d\x6f\x6e\x0a\x84\x92\x90\x2d\xdf\x4d\x1b\xe7\x03\x39\x6c\xb6\xbb\x36\xd7\x85\x9a\xee\x9f\x1f\xb5\xff\x81\xb0\xd2\x2f\x4d\xbf\xde\x9d\x3f\x7e\x52\x1f\xe5\xe9\x87\xc2\xd0\x01\x35\xf1\x4d\x42\x6d\x15\xa2\xdf\x58\x1b\x84\x61\x93\xd4\x9f\xc6\x3d\xff\xb9\x1a\x5e\x11\x46\x5b\x38\xff\xc2\x98\xd1\x46\xb3\xb0\x85\xda\x6f\x3d\x2d\x87\xb3\xb9\xb9\x1e\x9f\x4f\x5c\x78\x67\xac\x86\x7b\xfc\x24\xeb\x2a\xe9\x13\x1a\xcf\xd2\xf4\x7d\x5b\x99\xd7\xca\xd5\x56\xdf\x65\xf4\xa9\x21\x31\xf3\x18\x7b\xf2\xad\x2a\xdb\x63\xfc\xc1\xa3\xfa\x87\x3e\x92\x17\xc3\xea\x3e\xc9\x59\x6b\x36\xc3\x0f\xff\x27\x11\x46\xee\x47\x9d\x7e\x6d\xf4\x84\x74\xf9\x27\xe4\x97\xa6\xe4\x3d\xe6\x59\xee\x56\x9a\xa3\xa5\x8b\x92\x4d\x12\xae\x14\x63\xc8\x54\xe8\x0c\xa7\x3c\xf2\x6b\x07\x5e\x0d\x9d\xd7\xae\x46\x4e\x57\x1f\xa8\x9a\xd3\x0c\xeb\xc1\x82\x1f\x34\xa8\x29\xfb\x21\x39\x7b\x0e\xa7\x95\x2c\x99\x48\x96\xa4\x19\x6c\x15\x96\x3c\x75\x39\x2c\x77\xc1\xe9\xb4\xd2\xa7\x91\xc9\x92\x3f\x93\xb5\x5c\x0d\xc4\xef\x05\xf3\x45\x71\x6f\x11\x2b\x76\xe6\xc1\xbb\x70\x2c\x86\x07\x19\x08\x71\x87\x98\x8e\x3b\xc2\x2d\x22\xd9\x26\x84\x81\x87\xa5\x78\x52\xe8\x4e\xb3\xb2\xec\xec\x50\x84\x39\x89\x14\xa2\x51\x7e\x3c\xe0\xea\xde\x89\x87\x24\xe6\xdc\x5b\xd9\x8e\xe0\xcc\x3d\xf8\x51\x88\xad\xf8\x71\x91\x24\x6e\xfc\xab\xe4\x8e\xe0\xc7\xc3\x50\x8c\xa3\xd8\x59\x94\xea\xfe\xb1\x93\x44\x27\x0b\xdf\x8d\x77\x38\xa7\x7e\x5c\xf6\x18\x8e\xa1\x0b\xb3\x1d\x3c\xd1\x13\xe1\x38\xe9\x88\x64\x35\x38\x0e\x99\xc6\xec\xee\x99\xf8\x23\xd9\xd4\x94\xc2\x0c\xee\x8e\x9b\x55\x13\xcf\x75\xe6\x30\x1d\x5c\x67\x78\x0a\xbe\x7d\x5c\x61\xd6\x53\x92\x43\x29\x49\x92\x05\x08\x6e\x6e\x3c\x85\x00\x3e\xae\x14\x9b\x2e\x29\x42\xf4\xec\xe0\xbe\x10\xa1\x7b\x2a\xcb\x7a\x63\x08\x47\x59\xe5\x67\x2b\x3a\x76\xf1\xe6\xb1\xba\x8e\xa2\x0b\xb3\x1c\x3c\x6d\x14\xe1\x31\x99\xa3\xfd\xcb\x43\x8f\x67\x6b\x0f\x67\xb1\xf0\x96\xc4\x60\xe8\x1a\xd4\xd2\xc3\xba\xc3\x51\xde\x24\xf3\xcc\x2f\x72\xb3\x6b\x79\x4e\x43\x58\x62\xbc\x2a\x30\xc6\x59\x70\xf4\x3b\x99\x97\xd8\xb5\xb4\x47\x71\x14\xc5\x95\xc7\xd7\xde\xd1\xe7\x44\xfe\xf6\x6e\xda\x3d\x8a\xc3\x38\xb6\x3c\x1e\x23\xc7\xb5\xab\x7b\xa7\xb5\xab\x7b\x47\xf2\x53\x84\x38\x81\xb7\xf8\x78\xf2\x38\x3e\x30\x27\xc5\x2f\x48\x3e\x4a\xbb\x07\x28\x36\x57\x6f\xf9\x37\x3f\x1f\xa9\xd0\x5c\x02\x91\xea\x38\x38\x70\x12\xad\x47\x3d\xc0\x03\x78\x3f\xde\x0e\xb2\x70\xe7\x73\x9c\xe0\x65\xd9\xf7\x7a\x97\xb5\x87\x4c\xac\xb9\xc5\x96\x03\x94\xc3\x68\xe2\x05\xe6\xa7\xe1\x36\x09\x75\x6e\xd2\x2c\x6a\xc9\xd1\x1b\xdb\x4f\x6a\x0c\x11\xd4\x65\xb2\x7c\xf1\x2b\xea\x4f\xae\xe8\xbd\xeb\xa8\x72\xd9\x8f\x75\x28\x2e\x4c\xf8\xc6\xfe\xef\xd2\x7f\xf8\x06\xb2\x3c\x49\x42\xb0\xc5\x85\x48\x7c\x83\xc1\x77\x49\x93\x78\xb1\x5a\x9e\x58\x49\x9d\x8a\xcb\xb7\x7d\xc1\xc3\x77\xc9\xb4\xbd\x2c\x21\x4f\x8e\xd4\x35\x86\x9c\x17\x5b\x9c\x94\xf1\x38\xf6\xc4\x69\xc7\xa1\x0e\x9e\xf9\x4e\x8f\xd3\x78\x78\x16\x89\x22\x32\xe4\x54\xd3\xb9\x6f\x38\xf9\x16\x29\x62\x19\x2c\x95\xf7\xfc\x24\x96\xf0\x46\x97\x93\x9a\xcd\x3e\xfe\xd2\x13\xac\xac\x77\xd8\x94\xd5\x72\x06\xce\xdc\x12\xe1\xd7\xaf\xe0\x86\xb0\x8b\x7f\xfd\x0b\xa9\x58\xc6\x42\x09\xed\x1a\x54\xae\xaf\x6d\xf8\x69\x9f\x9d\x55\x91\x74\x40\xd9\x50\x8a\x01\x7a\x2b\xa0\xe9\xa0\x92\xb1\x9e\xbf\xd8\x85\xc8\x47\x40\xb3\x19\x88\x80\xc6\x58\x38\x43\x66\x6d\x7e\xc4\x7b\x46\x86\xdc\x20\x44\xe6\x93\x9f\x4e\xf5\x1d\xfd\x9a\xfc\x12\x23\x7f\x1c\x5b\xdd\xd3\x2c\x92\x2b\x30\x6f\x49\x3c\x8d\x13\xa4\x35\x18\xf1\x9d\x5b\xc1\x5b\x10\x8f\x41\x9c\x21\x23\xbe\xc5\x8f\x78\xa1\xc1\x8f\xf7\xca\xdd\x9c\xfd\x83\x54\x4d\x44\x5e\x1e\xf5\x0f\xea\x21\xcc\x47\x92\x16\x82\xb9\x72\xa2\x0e\xdc\x25\xfc\xc3\x35\x90\xf6\xc6\xae\x7f\x44\x0d\x29\xcc\x44\x75\xb1\x0f\x74\x62\xa3\x48\x7e\x6b\xda\x3f\xab\x90\x74\xd3\xd8\x5b\x49\x29\x6a\x1d\x69\x2f\xf0\x43\x64\x63\xb9\x5a\x40\x1b\xba\x32\xfc\x7f\x00\x00\x00\xff\xff\x36\x22\x88\x18\xed\x6f\x00\x00") + +func account_mergeHorizonSqlBytes() ([]byte, error) { + return bindataRead( + _account_mergeHorizonSql, + "account_merge-horizon.sql", + ) +} + +func account_mergeHorizonSql() (*asset, error) { + bytes, err := account_mergeHorizonSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "account_merge-horizon.sql", size: 28653, mode: os.FileMode(420), modTime: time.Unix(1508958207, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _allow_trustCoreSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x67\x8f\xe3\xb8\xd2\x36\xfc\x7d\x7e\x85\x31\x5f\x66\x17\x9e\x3d\x26\x45\x51\xa4\x76\xdf\x3d\x80\x1c\xe4\x9c\xb3\x5f\x3c\x18\x50\x0c\xb6\x1c\x24\x5b\x92\xe3\x8d\xfb\xbf\x3f\x70\xe8\xb6\xdb\xed\xce\x3d\xe7\xec\x83\x5d\x01\x33\xdd\x2d\x95\x8a\xc5\x8b\x17\x8b\xc5\x92\x28\x06\x4b\xcf\x73\xbd\x61\x2c\x90\xdc\x9d\xcb\x2f\xc7\x1f\x31\xe5\x7a\x6e\x38\x92\xe2\x7b\x8c\x4f\xfd\x70\x7f\x7d\x2a\xc5\x50\x06\x5f\x8e\x3f\x0e\x67\xa5\xf8\xf2\xdb\x6f\x5f\x7e\xfb\x2d\x56\xf3\xc3\x68\x18\xc8\x66\xbd\x14\x13\x2c\x62\x0e\x0b\x65\x4c\x2c\x67\xf3\xfd\xe5\xfd\xf5\xf4\x72\x36\x97\x22\xa6\x02\x7f\x76\x16\x58\xc9\x20\x74\x7d\x2f\x66\xfe\xcb\xf8\x17\xbe\x90\x72\xb6\xb1\xf9\xf0\xc7\xfe\xf6\x2b\x91\x2f\xcd\x4c\x2b\x16\x46\x2c\x92\x33\xe9\x45\x3f\x22\x77\x26\xfd\x65\x14\xfb\x33\x06\xfe\x38\x5c\x9a\xfa\x7c\xf2\xf8\xac\x2b\xa6\xf2\x87\xeb\xfd\x88\x02\xe6\x85\x8c\x47\xae\xef\xfd\x08\x65\xb8\xd7\xfb\x58\x98\x4f\xdd\xbd\x6a\xe9\x71\x5f\xec\xeb\xfc\x67\xec\x5b\xbb\x65\xd3\x6f\x7f\xdc\x95\xed\x09\x16\x88\x1f\xdc\xf7\x94\x1f\xcc\x5c\x6f\xf8\x23\x8c\x02\xd7\x1b\x86\xb1\x3f\x63\xbe\x77\xd2\x31\x92\x7c\xf2\x43\x2d\xbd\x63\x59\x8e\x2f\x5c\xb9\xbf\xae\xd8\x34\x94\x0f\x8a\x99\xb9\xde\x8f\x99\x0c\x43\x36\x3c\x08\xac\x59\xb0\x6f\x88\xa3\x48\xe0\xaf\x7f\x84\x92\x2f\x03\x37\xda\xee\x95\x2b\xf5\xc7\x09\x00\xc9\x02\x3e\xfa\x31\x67\xd1\x28\xf6\x67\x6c\xbe\x74\xa6\x2e\xff\xbe\x47\x8c\xb3\x88\x4d\xfd\xe1\x1f\x5f\xbe\xa4\x1b\xd5\x5a\x2c\x5f\x49\x67\x7a\xb1\xbc\x1d\xcb\xf4\xf2\xcd\x56\xf3\x24\xf9\xaf\xd0\x1d\x7a\x32\x08\x19\xe7\xfe\xd2\x8b\xfe\x78\x5e\x56\x4e\xa7\xae\x37\x74\xc3\x70\x29\x03\xd7\x13\x72\xf3\x82\x3c\x9f\x2f\x96\x7e\xb0\x9c\x85\xce\x36\x94\x8b\x17\x85\xa5\xb7\x7a\x8d\xe4\x3c\x70\xb9\x7c\x45\xf1\x47\x66\xbe\x46\xe3\xc8\x0d\x23\x25\xe5\x2b\x25\x5f\x21\xe6\x2c\xb7\x6f\x01\xea\x84\xbe\xc3\xa6\xcc\xe3\x32\xfc\xe3\x8b\x55\x6a\x65\x1a\xb1\x96\x95\x2c\x65\x2e\xa4\xab\x95\x52\xff\xee\x96\x68\xb3\x37\xc5\x0f\xb6\xb1\x83\xe2\x54\xb5\xd2\x6c\x35\xac\x7c\xa5\x75\x21\x7f\x2f\xf3\x63\x3e\x91\xdb\xd7\x69\x55\x52\xbe\x46\xf1\x59\xec\xf5\xba\x83\x65\x18\x4d\x5d\x4f\x86\xcf\x69\xbe\x17\x7a\xb5\xde\xbd\x15\xf2\xe0\x06\x9e\xd1\x7b\x16\x7a\xbd\xde\x63\xcf\x78\x4e\xe9\x51\xe2\xf5\x1a\xef\xfb\xc3\x73\x4a\xef\x85\x5e\xad\x77\xbe\x74\xc2\xa5\xf3\x8c\xce\xa3\xc0\x5b\xf4\x4d\xdd\x70\xb4\x58\xca\xe5\x73\x98\x5e\x8a\xbd\x5e\xb7\x7c\x1e\xd3\xc3\xf5\x57\x6b\xf3\x95\x7a\x5e\xdd\x51\xe0\xd5\xfa\x8e\x2e\x63\x24\x99\x78\x5e\xed\x03\xb9\x9f\xac\xfd\xe4\xc6\xe4\xe2\xc7\x2b\x8b\x71\x98\xf7\x8c\x72\x87\x79\xaf\x36\xf8\xe4\x97\x9e\xb3\xf5\x4e\xe4\xad\x3a\xf7\xc3\xfe\xcb\x6a\xf7\x52\x27\xcd\x07\xd9\x6b\xc5\xd7\xce\xf0\x25\xb1\xb3\xdb\x7a\x41\xf2\xde\x0d\x3d\x2f\x77\x76\x2b\x2f\xc8\x1d\x3d\xc5\x0b\x42\xf7\x3d\xff\x45\xb9\x57\x55\xe2\xd8\xeb\x5f\x94\xb9\xef\xc3\x2f\x48\xca\x17\x2b\x70\xec\x6c\xcf\xcb\x3c\xe0\xf6\xf3\xa2\x0e\xf3\x9e\x17\xb8\xe3\xde\xab\xa4\xf6\x54\x3a\x09\x66\x7a\xad\x4c\xa5\x99\xaf\x56\x2e\x85\xa7\xf3\x61\xb8\x98\x9e\x24\x9a\xa9\x5c\xa6\x6c\x3d\xd2\xf5\xc7\x29\xbe\xad\xb0\x99\xfc\xfd\xee\x5c\xac\xb5\x9d\xcb\xdf\x4f\xb7\xfc\x11\x6b\xf2\x91\x9c\xb1\xdf\x63\xbf\xfd\x11\xab\xae\x3d\x19\xfc\x1e\xfb\xed\x10\xf6\xa6\x1a\x19\xab\x95\xb9\xd3\x7c\xa7\xef\xcb\x03\x8d\x0f\x2f\x9e\x14\xa7\xaa\xe5\x72\xa6\xd2\x7a\x46\xf3\x51\x20\x56\xad\x3c\x54\x10\xcb\x37\x63\xdf\xee\x62\xd4\xbb\x73\xe1\x41\xc9\xb7\xeb\x92\xef\xaa\x7f\x2a\xf3\x1e\xa1\x17\xeb\xf3\x00\xcb\x4a\xb5\x75\x85\x67\xac\x9b\x6f\xe5\xee\xcd\xba\x0c\x4a\x1f\x14\x7f\xd6\x72\x65\xc8\x5b\x2a\xff\x48\xc9\x01\x80\x5a\x29\x31\x1f\xee\x67\x22\xf3\xc0\xe7\x52\x2c\x03\x36\x8d\x4d\x99\x37\x5c\xb2\xa1\x3c\xc0\xf0\xca\x20\x7a\x2f\x26\xa4\x62\xcb\x69\xf4\x23\x62\xce\x54\x86\x73\xc6\xe5\x7e\x46\xf0\xed\xea\xea\xda\x8d\x46\x3f\x7c\x57\x5c\x04\xf9\x0f\x2a\x7b\x49\xc8\x53\x35\x0f\xd4\x3d\x57\xf2\x8e\x00\xb7\x00\x3f\xb2\xfc\xd2\x8b\xfe\xf2\x25\x16\x8b\xdd\x9d\x71\x45\x8c\x8f\x58\xc0\x78\x24\x83\xd8\x8a\x05\xfb\x38\xf4\x17\x6c\xfc\x7a\x68\x9b\x4a\xbb\x54\xfa\x7e\x90\xde\xdf\xe8\xb1\x99\xbc\x21\x6c\xe8\xb7\x84\x57\x6c\xba\xbc\x25\x0d\xa1\x76\x2d\x3e\x65\x61\x34\xf3\x85\xab\x5c\x29\x62\xae\x17\xc9\xfd\xfc\x30\x9d\xb1\xad\x76\xa9\x15\x03\xf7\xc2\x5f\x7e\xbd\x66\xc1\x7d\x7f\xfe\x20\x2a\xe1\xbb\x20\x39\x45\xdf\x31\xc7\x1d\xba\x5e\x74\x75\x31\x94\x0b\x6f\x39\xbb\x7d\xcd\x5b\xce\xc2\xa5\x23\xbd\x28\xd8\x4f\xec\xee\x2a\xfc\x50\xc6\xf5\xd4\x94\xed\xe7\x7f\x42\x86\xd1\x6d\x73\x8e\x82\x23\x7f\x26\x85\x3f\x63\xae\x77\x43\x0a\x3d\xc2\x3a\x1a\x05\x32\x1c\xf9\x53\x11\xc6\x22\xb9\xb9\xb6\x4c\x4d\xd9\xf0\x29\x8b\x6e\xb6\xd2\x43\x91\x8b\x91\xf9\x7e\x98\x3f\xa1\xf4\xe3\x30\xab\x8d\xa5\x72\x99\x54\x31\xf6\xcb\x2f\x77\xd8\xfd\xfb\xcf\x18\xf8\xf5\xd7\xa7\xef\x7e\x00\xd5\x95\x8e\x87\x30\x1e\x35\x3d\xe6\xc8\x7e\x50\x78\x2f\x3d\xf6\x81\xd1\x91\x19\x9e\x2f\xe4\x25\x2d\x1e\xd0\xe1\x71\xa1\x0f\x07\xad\xf7\x16\xff\x30\xfc\x3b\x1a\x72\x3a\xc7\xc2\xd1\x85\x31\x8f\x7b\xe0\x3c\x90\xab\x17\x85\x9c\x25\x9f\xc8\x68\xea\x86\xd1\x8b\xa2\xf7\x31\xe5\x5d\xcb\x1f\x4f\x1f\x92\x38\x91\x3b\x7b\xa2\x13\x1c\xbc\xcd\x0d\x9a\x5d\xb4\xf4\xc3\xd0\xf5\x5e\xdf\x55\x53\x9f\xcb\x79\x82\x30\x4f\x45\xc0\x0f\xd5\x9c\x6b\xf1\x14\x5b\x4e\x11\xc9\x7b\x5b\xec\x34\xbd\xf8\xe5\xe4\x02\xa6\x53\x19\xbc\xd2\x99\x1c\xee\x74\xc5\x53\xce\xe4\x90\x47\x61\x61\x28\xa3\x68\x3b\x97\x4f\x74\xbf\x4b\x31\xee\x8b\x9b\xde\x57\xfb\xf5\x81\xec\x31\xe3\xf0\x9c\x7f\x39\x66\x26\x5e\x2a\xfa\x42\xea\xa5\x92\x2f\x53\x1d\xcf\x15\xcc\x66\x7b\x17\x70\x1b\x90\x43\x46\xc7\x7b\xc2\x96\xc3\xc5\xa7\x5c\xd4\xe1\x62\x4c\xf8\x4b\x67\x2a\xf7\xbd\x84\xbb\x87\x04\xe1\xcf\x72\x83\xa7\xe9\xe4\xb1\x2e\x57\x6c\x3c\x55\xf0\x09\x46\x9f\xee\x3c\xf1\xe2\xea\xd6\x3b\xb6\x3c\x45\xe3\x63\xec\xfd\x5e\x16\x1f\xa7\xdc\x47\x12\xbb\xf3\x5b\x6d\x89\x1f\xf9\x1b\x3f\x88\x9e\x19\xba\x4f\xe3\x9e\xdc\x44\x2c\x8a\xe4\x6c\x1e\xc5\xf6\x9d\x39\x8c\xd8\x6c\x1e\xdb\x47\x3f\xfe\xf2\x78\x26\xb6\xf3\x3d\xf9\x78\xb4\x54\xcc\x9d\x2e\x83\x8b\xb1\xf2\xa9\x12\x2e\xf0\x3b\xe6\x05\x2e\x6e\x7e\x3c\x7a\xdc\xab\x7d\xa2\x09\x4e\xa9\x05\x3f\xb8\x6e\xb9\x5f\x0e\xd5\xfd\x77\x0c\xfc\x1a\xb3\x2a\xe9\xd8\xf1\xcf\xff\xef\xcf\x98\x81\x31\xc2\xbf\xde\x6c\x90\xcb\x69\xd3\xbb\xdb\xe5\x32\xcd\x72\x39\x1c\x3c\xe5\x0f\x0e\x39\xae\xbd\xff\xbd\x69\xd0\x7e\xae\xf7\x01\x53\xc2\xa5\x73\x32\x22\x90\xe1\x83\xb1\xf1\x71\xd4\xb1\xef\x34\x81\x64\xf7\x1d\xe6\xb1\x3d\x17\x73\xd4\xf7\xda\x74\x56\xf1\x9a\x41\xfb\x89\x71\xed\xea\xba\xf4\x56\x72\xea\xcf\xe5\x0b\xa3\xd8\xb9\xe8\x0f\x8c\x3d\x17\xd3\xf9\x0f\x40\x70\x97\x30\x3c\x42\xb0\x08\xe5\x2b\x06\x77\x16\x46\x2f\x01\xb1\x57\xf4\x32\x08\x77\x89\xc8\x07\x1a\xaf\x81\x78\x50\xda\x93\x60\x9c\x12\x20\xef\x46\xe2\x94\x8c\x7d\x4f\x60\x7f\xd4\x3e\x91\xdb\x57\x49\xaf\xa5\x3b\x1c\x45\x8f\x60\xbb\x51\xa5\x73\xee\xe7\xdd\xb5\x3a\xa7\xae\x7f\x39\x77\xf1\x87\xf3\xb2\x1b\xdd\xef\x39\x47\x70\x91\xb9\x7a\xaf\x55\x17\x89\xfa\xf7\xc0\xfd\x52\x6c\xf1\x5c\xa8\x70\x4b\xd5\xd3\x01\xc8\xf5\x5c\x68\xea\xce\xdc\x27\x22\x8c\x67\x27\x77\x9f\x17\x1f\x5c\x3c\xbe\x78\xd7\x44\xe9\xe2\xfe\x63\x6d\xae\x6e\x3f\x55\xf1\xdf\xb7\x3b\xd9\x83\xfc\xe6\xbb\x5b\xff\xf2\x11\xd0\xb1\xfd\xa3\xcd\x03\xb7\xfb\x8a\xe9\xc4\x75\xcb\x6c\x0e\x0f\xc1\x9e\xbc\xca\x47\xcc\x1b\xca\x9b\x53\xd8\x4b\x70\x2e\x9f\x3a\xbd\xdf\x2f\x9f\x93\xc5\xef\x87\xe8\x3f\x8c\x8f\xe3\x8b\xed\x2d\x70\xa2\x4d\x20\xc3\xe5\xf4\xa6\x27\x8f\x36\x33\xf9\xe2\x74\xed\xfc\x84\xf0\x3d\x78\xa6\xf7\xf3\x41\xe5\x07\x2f\xe4\xb5\x62\x69\xab\x65\xbd\x80\xef\xf3\x2a\xc3\x37\xeb\xcb\x57\x9a\x99\x46\x2b\x96\xaf\xb4\xaa\xe7\xac\x50\xc7\x2a\xb5\x33\xcd\xd8\x2f\xdf\xb2\xc9\x46\xad\x9f\xcb\x97\xb4\x54\x1e\xd9\x95\xba\x9e\xec\x95\xec\x72\x25\x5d\xb2\x0b\xed\x4a\xad\xad\xe5\xfa\x68\x50\xb6\x9b\xb9\x6a\xa5\x9d\xca\x54\xad\x66\x97\xd4\x53\xa4\xda\xd3\x72\xdf\xbe\xc7\xcc\xe3\x61\x9c\x7e\x12\x00\xbe\xc7\xd0\xf7\x18\xf8\x7e\x04\x38\xf6\xed\xdb\xf7\xd8\x37\xab\x6e\x59\x96\xf5\xe7\x9f\xdf\x0e\x17\xb4\x5f\xff\x78\xc9\x9e\x54\xaf\x98\x35\x1a\x15\xbd\x5a\xc9\x67\x6a\xa9\x72\xc5\x4e\x12\xa4\x59\x3a\x32\x06\xb8\x56\x49\x37\x1b\xa5\x6c\xb7\x48\xb2\xc9\x52\xaa\x5c\x2f\xe5\xed\xaa\xde\x24\x99\x7e\xb7\xd3\x3e\xdb\x63\xee\xed\xa0\x98\x9a\x26\xd2\xb1\x89\xbe\xc7\xe0\x33\x06\xe9\x2f\x1b\x94\xec\x65\xeb\x85\x6e\xa7\xd4\xad\xf6\x73\x76\xa9\xd3\x2a\x76\x3b\xd8\xce\xe6\x2c\x54\xaa\xf4\xfb\x5a\xa1\x5e\x2c\x93\xaa\x55\xb0\xda\x99\xba\xdd\x36\x4a\xb5\x54\x33\x63\x77\x7a\xd5\xca\x3b\x0d\xc2\xaf\x40\x48\x43\x75\x5b\xcb\xb5\x33\x58\xb3\xca\xbd\xb6\xdd\xce\x21\xab\x5f\xb0\x7a\xbd\x6c\xaf\xd7\xd1\x3a\xb9\x5e\xbf\xdf\x30\x32\xfd\x5e\xa6\x55\x2b\xa6\x7b\x83\xa6\xd5\x35\x48\xaf\xaa\x9f\x0d\xc2\x0f\x0c\x22\xcf\x34\x19\xfa\x1e\xa3\x4f\xb3\xfc\x3a\x01\xf5\x01\x76\x3f\x9d\x56\x7a\x2b\xc5\x1f\xa6\x96\xee\x51\x33\x90\x30\xa9\xc2\xc8\x90\xd2\xa0\x02\x3a\x1a\x71\xb0\x43\x4d\xa5\x21\xa6\x30\x82\xd0\x21\xd8\x30\x99\xa6\x2b\xa6\xa0\x0e\x10\x13\xc0\xc1\x9a\x63\x20\xe4\x00\xe2\x48\xd3\xdc\x03\x03\x3e\x78\xec\x75\x60\xa2\x31\x4d\x22\x4d\x29\x4d\xa7\x0c\x10\x07\x48\x02\x94\x80\xca\x10\x08\x52\x0e\x15\xe3\x42\x03\x8e\xc1\x39\xa0\x1c\x21\x81\x09\xc1\x1a\x36\xa9\x41\xa1\x86\x19\x34\xbe\x1d\xe8\x03\xf6\xcd\xf4\x97\x3d\x92\xbd\xa2\xab\x6f\x13\xdb\x66\x31\x49\xd2\x5e\xda\xcc\x69\x60\x33\x4e\xc6\x43\x30\x8c\xc2\x75\x7e\xbd\x83\x3d\xd1\xec\xf6\x59\xb2\xc0\xec\xe1\x5e\x3e\x53\xd1\x4b\x6c\x37\xd7\xea\x2f\x6a\x1e\x58\x3d\xa8\x1f\xc4\x92\x93\xff\x40\x45\x3e\xf5\xf8\x76\xd5\xb3\x9f\x20\xaa\xa3\x19\x88\x20\x45\x91\xa6\x20\x91\x06\x74\x38\x50\x58\x38\x86\x69\x4a\x6e\x12\x44\x0c\x42\x1c\x47\x72\x4e\x84\x34\x11\xc6\xdc\xe0\x42\x02\x80\xa0\xa6\x33\x08\x21\x39\x10\xf5\x53\xc8\x0e\x1d\x82\x10\x57\x42\x9a\xca\x24\xca\xa1\x02\x9b\x40\x42\x87\x29\x43\x32\x42\x04\x05\x10\x49\x88\x00\x30\x1c\x5d\x42\xa4\x28\x86\x26\xd2\x0d\x61\x22\xc1\x29\x71\xf6\xee\x46\xfb\x1e\x83\x18\x50\x13\x53\x0d\xde\x31\x36\x95\xad\x0d\xc6\xb0\xb2\xc4\x3e\x70\x0a\xa4\xab\x7b\xdb\xea\xaa\xbd\xc9\xa2\xce\xdc\x9f\xc4\x57\xb6\x55\x8d\x52\xb0\xa8\x95\x49\x92\x18\x83\x36\xf1\x6a\x55\x3f\x4f\x9a\x6e\x90\xcb\x54\x61\x93\x19\xa4\xbb\x9c\xad\x8b\x75\x43\xab\xcd\xeb\xd9\xe9\xaa\xb0\xda\x6e\xeb\xb4\x9e\xcd\xf4\x0f\x08\x77\x55\x7a\x68\x1d\x18\x95\xbf\xff\xef\xe8\xcc\xce\x27\xad\xb5\x65\x15\x36\xc7\x16\x19\x1b\xf1\x79\x9c\xe5\x49\x61\xe5\x34\x55\xce\x0d\x59\xbb\x6d\xf5\x46\x3b\x9e\x8d\x27\xb4\x7e\xb7\x90\xd1\x1c\x4f\xe9\xbb\x65\x87\xba\x7a\x32\xda\xd5\x6a\x68\x1e\xef\xc5\x75\x38\x48\x8f\x96\x2b\x67\x21\xcc\x61\xb2\x36\x2a\x5b\x0c\xe8\xad\xb8\x9d\x6d\x35\xa2\x89\xb9\xcd\x45\x07\xcd\xf9\x1b\x8c\xce\x84\xb7\x58\x71\xcf\xe8\x14\x7f\x99\xfe\x7f\xb1\xe3\x95\x8c\xa6\x84\x71\x6a\x2a\x69\x38\x0e\xa4\x26\x35\x84\xd0\x90\xc1\x25\x31\x0d\x53\x42\xe0\x60\xe0\x70\x1d\x6b\x04\x4b\x4c\x31\x33\x74\xaa\x11\xac\x2b\x4c\x15\x63\x02\xe8\x9c\xec\x5d\xde\xa7\xf4\x0a\x64\x52\xaa\x33\x47\x69\x0c\x73\xe8\x98\x48\x21\x80\x1d\x47\x48\x64\x98\xd2\x30\x74\xca\xa5\x50\x26\x27\xd2\xd4\x21\xd0\x0d\x85\x99\xd2\x1c\x46\x75\x87\x42\xac\x11\x62\xaa\xe3\x78\x78\xcf\x68\x78\xc7\xe8\x52\x61\xcc\x13\xc3\x2d\xed\xe1\xd1\xca\x32\x45\x34\xf7\xc2\xe9\x4e\x78\x92\x90\xb2\x92\x13\xd8\xcb\xee\xa4\x95\xce\x4c\xfc\x86\x8d\x9d\x5a\x6f\x04\x46\x71\x92\x6d\xab\x9c\x65\x8f\x47\x61\x10\x36\x76\x93\x3c\xd0\x87\x16\x6f\xc8\xb0\xb8\xd6\xd2\x06\x8d\x77\x57\x1a\xbd\x60\xf4\xfa\x8c\x78\x6b\xba\x1a\x27\xbb\x92\x94\x5d\xaf\x61\x7a\xa4\xed\x87\x6c\x9c\x2a\x6e\xda\xf3\x61\xbd\x9c\x4c\x3a\xa3\x99\x6d\x38\x39\x6b\x55\xcb\x65\xdb\xd8\xcd\x2c\x12\xc5\xe9\xda\x99\x24\xca\xf6\xd2\xd4\x35\x6f\x36\xc8\xef\xa2\x38\x57\xf3\x7a\xbd\xb1\xea\xae\x8a\xc6\xa8\x34\xec\x14\x90\x77\xd0\x5f\xbe\xc1\xd8\x1c\xb8\xd5\xea\x7f\x03\xc6\x62\xc8\x4c\xdd\x41\x80\x43\xa1\x19\x40\x30\x44\x75\x13\x52\x1d\x72\x8c\x81\xd0\x21\x23\x44\x69\x86\xce\x10\xc2\xd4\x31\x0c\x2a\x1d\xc0\x4c\xee\x38\x04\x53\x13\x9a\x5c\xee\x7d\xdf\xa7\xb0\x1e\x00\x2e\x21\x94\x40\x37\x29\x55\x8e\xc9\xa0\x62\xc2\x31\xb8\x69\x9a\x90\x98\x1a\xd1\x34\x1d\x0b\x00\xa0\x4e\x15\x54\xc4\x51\x8e\x94\x78\xef\x9e\xa1\xc2\xd8\xc1\x10\xe3\x6f\xdf\x63\xfa\x05\x63\xb5\x3b\xc6\xe6\x65\xe8\x2a\x1c\x84\xfd\x59\x16\x35\x2b\x21\xc6\x4c\x66\x4a\xed\xd2\xc6\x2e\x40\xdc\xef\xce\x9a\x29\xd1\x36\xfb\xf1\x05\xc8\x6c\x34\x1f\x25\xd0\x32\x99\x98\xd4\x86\x90\xc9\x44\xb4\xe9\x95\x58\x65\xd4\x77\x03\xb6\x18\xac\xa6\xc5\x6e\x86\xb0\xa4\xb1\xd9\x2a\xba\x9e\x1c\xdd\xdb\x9e\xb1\xc9\x0b\xc4\x4b\xa5\x62\xcd\x29\xfb\xe3\x5c\xbc\xd1\x88\xb7\x9a\xc9\x74\x31\x9b\x4c\x44\x4b\x95\xd3\x66\x25\xa8\x71\x9e\xca\x05\xb0\xe0\x69\x64\x5b\xb3\xac\xdd\x28\x37\x6c\xf6\xc7\x64\x36\x8a\x47\x51\x38\x1b\xd8\xb8\xb0\x2d\xd8\xc0\xb2\xf3\x54\xc9\xc4\x6a\xd9\x5d\x39\x23\xb3\x13\x35\x3a\x07\xde\xd5\x6f\x30\xb6\xd0\xbf\xd5\xea\x7f\x03\xc6\x6a\x3a\xa4\x58\xd3\x10\xa6\x88\x10\x9d\x0a\x08\x84\xc9\xb9\x83\x1c\xc1\x80\x84\x94\x73\x02\xa0\x86\x74\x61\x22\xc6\x81\x09\x38\x32\x25\xc3\x12\x71\x68\x08\x60\x10\x02\x0f\xa1\xe9\x27\xb0\xde\xe4\x00\x28\x4d\x60\xaa\x84\x40\x48\x3a\x42\x98\x0c\xea\x1c\x21\xe5\x00\x13\x18\x86\x4e\x0c\xc6\x75\xce\x0c\x6c\x42\x01\xb0\x06\x08\x21\x8a\x98\x94\x71\xa4\x09\x41\xf6\x8c\xc5\x17\x8c\x45\x77\x8c\xb5\xb3\xf3\xe6\x2e\x9d\x04\xb3\x34\xab\x66\x26\xfd\x3a\xef\xd4\x61\x72\x8e\xe8\xac\x39\xae\xf4\xa3\xd9\x38\x48\xcd\xb7\x44\xf4\x27\x83\xdd\xa4\x36\x8b\xd7\xd7\xa0\x66\x26\x3c\xd1\x2f\x27\x8b\x95\xf1\x76\x90\xde\xd6\xb3\xe5\x21\x5d\xae\xec\x72\x7b\xca\x2b\xdb\x9d\xdf\xca\xbb\x76\xc9\x3f\x20\x7c\x60\xec\x05\x2f\x36\xd3\xc2\x72\xdb\x75\x25\x10\xb0\xb4\x6b\xa7\x1a\xb0\xa8\x97\xd2\xda\x30\x0e\x8a\x4b\x2b\xb7\x72\x0a\xf1\xe6\x70\x96\xcd\x6d\x87\xcb\x52\x97\x5b\xb5\x52\x67\x6c\x82\x9d\x61\x6a\xcc\x2e\x97\x13\x61\x21\x39\x6b\x68\x41\x66\x3b\xeb\x36\x80\x9d\xcf\x89\x84\xec\x07\xe9\x92\x10\x07\xfd\xed\x1b\x8c\x2d\xd2\x5b\xad\xfe\x37\x60\xac\x42\x48\x11\x8d\x60\x62\x0a\xbe\x27\x81\x81\x31\x96\x8e\x0e\x85\x2e\x88\x26\x34\x84\x00\x54\x02\x39\x1a\x57\xdc\x31\x89\x94\x54\x02\x06\x75\x0a\xa4\x21\x14\xc1\x62\x3f\x1a\x7f\x0a\xeb\x25\xe5\x14\x1b\x08\x62\x43\x18\x42\x13\x90\x33\x84\x19\x72\x90\x74\xb0\x06\x14\x47\xba\x12\x50\x72\x06\x84\xa0\x9a\x26\x89\xb6\xd7\xae\x08\xa5\x40\x02\x0d\x52\xb8\xb7\xc3\xb8\x60\xac\x7e\xc7\xd8\x54\xbd\xdf\x76\x2b\xfd\x0a\x6a\x56\x32\x15\xaf\x1c\x12\x6d\xa8\xf7\x77\x39\xab\x59\xa9\x4c\x8c\x75\x21\x9d\xf6\x16\xbd\xf1\xba\x0b\xb2\x62\x23\x89\xac\x57\xd3\xed\x39\xdf\x19\x99\x4e\x25\xbe\x98\xae\x68\x7e\xd3\x35\xac\x3c\x4e\xad\xbb\x0d\xdc\xf4\x55\x72\x67\xf3\xa2\x5e\xeb\x97\x0f\x08\x1f\x18\x3b\x3c\x23\x6e\xcf\x35\xb5\x9a\x94\xab\xa4\xda\x8d\x17\x16\x70\x67\xf7\x57\xdb\xfc\x1c\xcc\x2b\x46\xb1\x6c\xa4\x65\x54\x9e\x6d\xaa\xe3\x41\xa7\x9a\x2a\x2a\x7f\x6b\xf7\x37\x9d\xc8\x69\x02\xee\x43\x9f\xd4\x82\xf6\x30\x91\x6e\x99\xb9\xd0\xaf\x68\xa9\x92\x57\xdc\xad\x94\xcc\xa7\x87\xf9\x7e\xee\x10\x15\xf4\x6f\x30\xb6\x3c\xbc\xd5\xea\x7f\x03\xc6\x62\x24\xb9\xc0\x06\x76\xc8\x9e\x25\x3a\x33\x1d\x8d\x69\x8e\xae\x6b\x04\x69\xc8\x74\x98\x30\x89\x06\xb0\xa2\x80\x38\x82\x99\x94\x32\x6e\x22\x1d\x53\x47\x13\x1c\x68\x08\xf3\x3d\xdb\x3e\x83\xf5\x87\xa9\x9d\xe2\xa6\xd2\xb0\x82\xa6\x6e\x00\x8d\x18\xa6\x54\x90\x2b\xaa\x71\x44\xa1\x26\x08\x35\x75\x87\x28\x85\x74\x06\x1d\x40\xa9\x43\x85\x01\x81\x72\x4c\x13\x49\x28\xbe\x7d\x8f\x91\x0b\xc6\xe2\x3b\xc6\xd6\xca\x09\xee\x75\x30\xca\x89\xc4\xa0\xd3\x0b\xea\xa2\xd5\x2b\x35\xcb\xeb\x9c\x59\xdd\xee\xe8\xb2\x47\x7c\xbd\x68\xe7\xd3\x33\x84\x7a\xca\xd6\xeb\x05\xb8\x9c\xf7\xb5\x69\x65\xdc\xdf\x01\x9c\x87\x5e\x79\x38\xea\x92\x61\x36\xb3\x6b\x97\xad\xd6\x06\x14\xfb\xae\xd7\x9e\xc6\xd3\xc7\xe0\xf5\xc0\xd8\x8b\x38\x56\xb3\xc1\xa6\x4b\x8a\xc6\xb4\xd2\x0f\x7a\x8d\xdd\x92\x08\x9c\xdb\x26\xdb\x5e\x6d\xba\x9c\x55\xec\xba\x3b\xaf\x24\xd7\xcd\x7a\xc5\xda\xc0\x62\xdf\x6c\x25\x0a\x74\x4a\x07\x8d\x61\x41\xf3\x56\xb9\xda\x30\xac\x26\x4b\x3d\xb7\x1d\x25\x28\xf0\x9d\x54\x7e\x59\xe9\xd7\xe3\x78\x12\xcf\x1d\x78\xc7\x6f\x30\xb6\x9a\xb9\xd5\xea\x7f\x03\xc6\x2a\x9d\x01\xa5\x23\x22\x84\x24\x44\x00\x82\x29\x27\x1a\x65\x48\xc7\x4a\x4a\x66\x30\xc8\x99\x42\x42\xc3\xba\xd2\x11\x62\x40\x93\x8a\x61\x66\x32\x03\x72\x43\x37\x21\x91\x87\xa8\xe0\x13\x58\xcf\x4d\x01\x75\x40\xa4\x63\x28\x43\x40\x87\x3b\x4a\x1a\x4c\x01\x87\x39\xd2\x44\x00\x38\x14\x1a\x26\x73\x00\xdf\x87\xb0\x10\x2b\x66\x28\x06\xa1\x06\xa5\x81\x90\x61\x02\x7d\x3f\x7b\xa3\x17\x8c\x35\xee\xa3\x82\x5a\x08\xbb\x5d\x04\xf8\xbc\x38\xdb\xfa\x41\x23\xc5\xb7\x55\x27\x18\xf0\x61\x4f\x4f\x12\x6d\xee\x16\xb7\xad\x46\x3f\x8c\xd6\xa9\x0a\x9f\xa5\xe3\x68\x35\xce\xcd\xf4\xbe\x37\x41\x8b\x55\x65\x9d\x04\x72\x5b\x5e\xab\x06\x8b\x67\x1a\xed\x95\xeb\x42\xcf\x92\xc5\x31\x9c\xf3\x63\x9a\x60\xcf\xd8\xd4\x05\xe2\x90\x44\xdb\xa8\x5a\x4c\x6e\x86\x4b\xba\x95\x3e\xee\x25\xd8\x64\xdb\xf7\xb6\xfd\xe9\x36\x68\x3b\x64\x58\xe8\x66\xe2\x3b\x95\x1a\xa6\xb4\x74\x01\xb4\x93\xf1\x68\xe5\x34\x56\xa5\xc4\x2c\x58\x2f\x03\xa3\x65\x95\x86\xdd\x59\x90\x2e\xc5\xe3\xb6\x9a\xaf\xfc\x46\x5e\xf6\x77\xac\xde\x3c\xe6\x26\x6e\x30\xb6\xe6\xdf\x6a\xf5\xbf\x01\x63\x0d\xd3\xa0\x0e\xe3\x4a\x98\x26\x31\x0c\xac\xeb\x8c\x28\x2a\x75\xb6\x77\x89\x0e\xd2\x01\xe3\x8e\xc4\x14\x30\x93\x61\xac\x30\xa7\xd4\x34\xa5\x46\x74\x61\x20\x47\x73\x80\x46\x0f\x3e\xf6\x13\x58\xff\x09\x8c\x35\x2f\x18\x4b\xee\x7d\x6c\x73\x68\xa6\x95\xc0\x08\xe4\xba\x65\xee\xfb\xa0\x17\x37\x66\x3e\x0f\x76\x60\xda\x02\x65\xc3\x5a\xc6\xa7\x0b\xd6\xe7\x83\x82\x1d\x6f\xa6\x1a\xca\x57\x73\xa3\x2d\x32\xe3\x59\xd5\x4b\x1b\x79\xb3\xa3\x87\xf6\x5c\x4d\x66\x85\x45\xd5\x99\xb5\x07\x49\x2f\x3e\x4d\x64\x06\xf3\x73\x54\x90\xba\xe0\x05\xda\x99\xa3\x99\xd5\x9c\x97\xcc\xc8\xea\x6c\x26\xd1\x26\x8d\x7a\xcd\xea\x1c\xb9\xd1\xa6\xb9\xca\xcc\xca\x86\xd5\x9e\xac\x93\x4d\x3d\xd3\xf0\xde\xc8\xd8\xc9\xdf\x86\xb1\x4f\x3c\xad\xb8\xf1\x2e\xe5\x07\x9e\x7d\x3c\x7e\xa5\xed\x23\xca\x9e\x7a\x1d\xeb\x63\x3a\xaf\xdf\xa8\xfa\x80\xb6\x27\xde\x87\x7a\xeb\x73\x9e\x8b\x77\xa2\xce\x8f\xc6\x2c\xa3\xd0\xe8\x25\x07\x55\x5b\x6b\x15\x1b\x85\x7c\x2d\xa5\xa7\xf3\xbd\x41\x8d\x58\xa5\xb6\x9d\xca\x77\x3a\xb6\x41\xf2\xc9\x42\x0e\x57\x71\x2b\x65\x90\x41\x31\x9b\xad\xd8\xa9\x66\xee\x98\xab\x3e\x3e\x51\x49\x6f\xfb\x28\x3d\xdd\x88\x56\xc7\x2e\xe6\x5c\xbd\x62\xd3\x55\x3c\x29\x52\x6e\xa3\x3b\x57\xaa\x6e\x17\xe2\x4b\x52\xee\xad\x70\xbb\xbf\x6b\x9e\xb9\x72\x18\x33\x8e\xc3\xc5\x9e\xe7\x99\x51\x6b\xc9\xa9\x31\x1c\x47\xc5\x62\xc8\xeb\xa4\x53\x08\x82\x88\x19\x8e\x35\x4f\x07\xfd\xf8\xd4\x62\x5d\x3a\x4b\x94\x0a\xe9\x8d\xd5\x6f\x1c\xa2\xe9\xe4\x80\x56\x4f\xf7\x0f\xef\xff\x4b\x9e\x95\x1e\xfe\x4e\x5b\x96\xe5\x5d\x84\x32\x49\x33\x3b\x09\xdd\xda\xba\x52\xf6\x2b\x74\xdd\xf6\x07\xc9\x52\x22\xac\x0c\x27\x2d\xbe\x34\xd6\x7d\x8c\x34\x59\x1e\xb0\x05\xea\xa5\x17\xf9\xf6\x41\xdd\x2e\xab\xad\xac\x42\x1d\x8d\x59\x65\xd7\x90\x62\x65\x73\x0b\xba\xcb\x44\x2f\xda\xec\x7a\xc0\x0f\x86\x42\x81\x74\x39\xdb\xc8\xf7\xe7\x8b\x62\xc5\x4b\x58\x3c\x8c\xf4\xd1\xa6\xef\xcc\x56\x2b\xb3\xbe\x1b\x0c\x32\x49\x6a\xcf\x77\x24\x33\x2a\x96\x47\x33\x38\x19\x90\x6c\x3c\x48\x59\x7f\xfe\x79\xed\xdb\x3f\xb9\x69\xd0\x87\x9a\xa6\xfc\xb0\x69\xd2\xc9\xd0\x94\xb9\x66\x8e\x84\x83\x06\xe5\x56\xb7\x9a\xdd\x2e\x37\xb9\x6a\x7d\xdc\x72\xad\xe4\xc6\x36\xd6\x41\xba\x5f\x0b\x76\x98\x25\x9c\xcd\xb9\x69\xd2\x57\xbe\xe1\xcd\xd0\x43\xd2\xd0\x32\x1c\xcc\xec\xd4\x34\x68\x0c\x16\x23\x3d\xbb\x45\xe5\x85\x1c\xa4\xd7\x9d\x1c\x0b\xab\x60\x20\x93\x4e\x68\x6e\xeb\xdd\xf8\x62\x3d\x5a\x83\xf2\xd6\xe2\x99\xc2\xb8\x37\x2c\xae\xd2\x24\x91\xe6\xf5\xb6\x8c\x72\xfa\x60\xd6\x1e\xe5\x9d\xa6\xea\x24\x8d\x36\xcf\x6e\xac\xf5\x4f\x87\x5e\xff\x10\xf4\xf5\x2b\xe8\x53\x63\x95\x90\x7a\x2e\x5e\x8f\xa7\x3b\x73\x12\x47\x36\x8f\x7c\xcd\x76\x8b\xd1\x62\x3e\x8b\xb7\xe7\xfd\x56\xe4\xe7\x82\x5c\x21\xb1\x4b\x35\xd7\xf7\xd0\x5f\xc7\xee\x6f\x86\x1e\x29\x3a\x6e\xd6\x56\x83\x5c\xbd\x50\xe8\xce\x38\x5f\x6b\x8b\x49\x65\x61\xb6\x35\xa3\x51\xd7\x1a\x83\x69\x75\x39\x8b\xd3\x59\xbc\x3d\x8e\x56\xbd\xa5\x02\xeb\x55\xae\x1a\x8f\xe7\x87\x41\xad\x92\x2a\x8f\x56\x76\xa6\x19\x94\xdd\x64\x2b\x45\xfb\xe6\xb8\x19\x65\xa2\x4c\x61\x93\xe8\xfe\x07\x58\x8f\x3f\x04\x7d\xfb\x0a\x7a\x2b\xee\xe0\x74\xba\x9e\x40\x71\x01\x87\xeb\x8c\xaf\xd5\x0a\x93\x5a\xc1\xea\x6f\xd3\x5b\x83\xb6\x37\xcd\xce\x1a\x95\xaa\xa3\xb2\x9b\x6f\x2f\xcf\xac\xb7\x3f\x0a\xbd\x9d\x5f\x49\xd7\x1a\xf3\xc5\xb8\xe0\x35\x3a\x2d\xec\x0b\xb7\x6b\xa1\xea\x82\xaf\x33\xc1\x28\x39\x5a\x39\x19\x67\x51\x1a\x6f\xd4\x2a\xec\xa7\x07\x63\x7b\x86\xd7\x89\xb8\x88\x92\xdd\xc6\xdc\xcd\x95\x9b\x42\x89\x64\x23\x29\x69\x1a\x6c\xfc\xc4\x68\xbe\x46\x6e\x61\x39\x30\xac\xfa\x4f\x87\xde\xf8\x10\xf4\xfd\x6b\x87\x43\x22\x6c\xe9\x95\xe6\x74\x57\xf3\x1b\x6d\x64\x2c\xba\x89\xf5\xd8\x76\x7c\x6b\x3c\x29\x25\x07\xb9\x69\x71\x44\x73\xe5\xce\x3a\x18\x9a\xc3\x33\xeb\xb3\x1f\x85\x7e\x99\x95\x62\xb0\x2b\xd6\x52\xf9\x82\xbe\xa8\x47\xbb\xf2\xd2\x20\xcb\x21\xad\x2c\x6b\xc3\x5c\xa5\x55\x9c\xe9\x0c\xce\xc7\xd0\xec\x16\xe0\x78\x08\xe3\xa3\xe1\x62\x8e\xb4\x66\x35\x4d\xf2\x8b\x86\x29\x9d\x4c\xba\xa3\xf1\xf2\x3c\x59\x6a\xb4\x44\xb1\x34\x5f\x64\x06\x2d\x7b\x5b\x4b\xfe\x7c\xe8\xc9\x87\xa0\xe7\xd7\xac\xef\x8d\x2c\xaf\x6b\x4c\xc7\xac\xad\x55\xc6\xb5\xd6\x64\xdc\xe5\xdb\x94\xed\x2c\xad\x7e\xab\x52\x5f\x27\x6b\xb9\xfa\xdc\x2d\x8a\x66\x4f\xaf\x59\xf7\xd0\xe7\x3e\x0a\x7d\x0e\xb2\x35\x69\xda\x09\xd6\x68\x27\xf2\x63\x91\xd8\xae\x49\x94\xf2\x54\x61\x94\x6f\xe5\x9a\x29\x46\xe8\xae\xad\xb3\x2c\xf3\x9c\xf2\x46\xc7\x86\xeb\xb4\xe2\xc9\xd5\xd4\x1a\x39\xeb\xf2\xa6\x13\xa5\x2a\xad\xe6\x22\x15\xee\x52\x7d\x54\x70\xe2\xd4\x0e\xbb\xb4\xe0\x2d\xfe\x13\xbe\x9e\x7e\x08\xfa\xe1\xb5\xaf\xef\xd7\x88\x8c\x97\xa5\x33\x72\x65\x4b\x2e\x28\xb2\x72\x0d\x92\xdf\x25\x4d\x3b\xd0\x1b\x76\x33\x5e\x2c\x75\x79\x52\x5f\xd4\xba\xd3\xf5\xd9\xe1\xe4\x3f\x0a\x7d\x00\x46\x1e\xaa\x67\x93\xa5\x7a\x3c\x6c\xe1\xe4\xa8\x25\x2b\xeb\xd0\xf4\xa7\xdd\xda\xae\x32\xc7\x0b\x23\xd7\xcd\xb7\x1b\x62\x02\xea\x3a\x68\x6f\x64\x53\x87\x0d\x1b\xb6\xe2\xe3\x66\xb0\xaa\x25\x07\x58\x4b\x90\x79\x18\xf1\x88\xd7\x56\xa3\x30\x47\x67\x56\x4b\xc7\x73\x9e\xfe\xf9\xbe\xde\xfc\x10\xf4\x93\x6b\x87\x93\x2f\xd8\xf1\x51\xdc\x9b\x37\x40\xb3\xda\x37\x78\xcd\x1f\xc3\x9e\xbb\xee\x4e\xe3\xcd\xfe\xcc\xc7\xcb\x41\x63\x92\x55\x46\x8f\x36\x66\x93\xb3\xc3\x29\x7c\x14\xfa\x32\x2d\x79\x72\x20\x52\xe3\xde\xca\x2d\xb4\xb7\x1b\xb3\x62\xda\x5b\xb2\x11\x46\x3d\xcc\x18\x41\xb1\x50\x6c\x4c\x6b\xd4\x9e\x6f\x82\xa9\xde\x30\xc7\x15\x3d\x13\x55\x51\x16\x16\x79\x52\xe7\xd9\x75\xd6\x76\x89\xd5\xd2\x57\xe5\x44\x0e\x1a\x8d\x51\xc2\x0d\xb5\xfc\x32\x11\xa6\x4e\x0e\xe7\xe9\x99\xc4\xad\x65\x05\xef\x98\x49\xdc\x2d\x2d\xb8\xc8\x9c\x19\xa6\xc6\x29\x55\x1c\x08\xa4\x51\x44\x38\x87\x3a\x83\x26\xd0\x1d\x25\x39\x32\x80\x09\x11\xd1\xa4\x74\x80\x81\x4c\xa1\x0c\x42\xb9\x81\x19\x73\x08\xe6\x88\x51\x8a\x2f\x1b\xf5\x10\x06\x1d\xc3\x98\x5a\x61\xcc\xab\x3d\x1b\x56\xda\x6d\x5f\x96\x86\xa0\xb7\x4d\xe8\x36\x28\x16\x6c\x36\x35\x4d\xab\xed\x19\x24\xdc\xc8\xc4\xb4\x31\xae\x1c\xbb\xc2\x73\x95\xbf\xb1\x8c\xe0\x23\xb3\xb2\xdb\xaf\xf0\xbf\x19\xcb\xf3\x6b\xfc\xf7\x58\x4e\x59\x18\x1d\xbf\x89\x75\x5a\xd3\x73\x75\x1c\xde\x58\xfa\x68\xde\xe7\xba\x83\xde\xb0\xe3\xd4\x63\x59\xc0\x47\xee\xea\x74\xf1\xda\x8e\xff\x39\xbc\x16\xfc\xf5\xf4\x75\xad\xaf\xbf\xc7\xe0\xf1\x45\xe1\xaf\xa1\x0c\x56\x32\xf8\xfa\x7b\xec\xeb\x0a\xfc\xcb\xf8\x17\xfa\xcd\x30\x7e\x1b\x0a\xc3\xc0\x04\x73\xf5\xf5\x24\xc4\x97\x41\x20\xbd\xa8\x74\xa8\xe6\xd7\xdf\x63\xe6\xc3\xf3\xc9\xc3\xaa\xd4\xf0\xeb\xef\xb1\xff\xff\xcb\x5d\xa1\xff\xf3\xe5\xd2\x84\x83\xe4\xbe\x10\x02\x75\xa4\x53\xa0\x38\xd5\x09\xa5\x1c\x98\x58\xea\xa6\xce\x85\x46\x75\x1d\x69\x90\x19\x1a\x97\x14\x0a\x4d\x42\x81\x1c\x66\x70\x88\x1d\x93\x71\x2c\x0c\x47\x49\x4c\x75\x7a\xb2\xe8\x5e\xaf\x27\x37\xd1\xd7\xdf\xaf\x4a\x3b\x56\x6c\x8f\xc3\xd7\xdf\x63\xe0\xc1\xa5\xff\xbd\xba\x3f\xf4\xd8\x7c\x6f\x17\x56\x8e\x84\x12\x23\x47\x01\x62\x2a\x07\x12\x1d\x9b\xba\xce\x91\x03\xf6\x5d\xc1\xe0\xd0\x50\x9a\x89\x74\x0d\x51\x26\x01\x87\xd8\xc4\x4a\x28\xc3\x11\xcc\x51\x04\x98\x9c\x7e\xfd\x72\xa3\x84\x27\x30\x80\xd0\x94\xa6\x2e\x05\x33\x15\x21\x90\x11\x13\x12\x07\x11\xc1\x35\x86\x91\xe2\x42\x60\x2c\x24\x54\x02\x21\x85\x94\x92\x8e\x52\x06\x96\x52\x03\xc4\xd1\x4d\x9d\x68\x10\xbd\x1d\x03\xf8\xfd\xf1\x35\x7f\x19\xcd\x97\xfb\xfb\xbe\x22\xa6\x13\xae\x09\xc0\x1d\x86\x05\xe2\x54\x52\x9d\x51\x4e\x90\xc9\x99\x43\x98\x61\x40\x21\xa0\x80\x88\x9a\x94\x09\x93\xeb\x4c\x1a\x1a\x85\x82\x9b\xa6\xc1\x31\xd1\x39\xf8\xfa\x3a\x84\x05\xd0\x0c\xc2\x31\x45\x00\x6a\x94\x02\x8c\x08\x76\x84\x01\x39\x24\x02\x39\x3a\x94\x82\x63\x53\x57\x80\x03\x01\x38\xd6\x80\x03\x14\x26\x84\x18\x86\xa6\x4b\xc6\x30\x78\x0b\xc2\x1f\x7d\xa1\xf5\xb3\x11\xa6\x58\x10\xa0\x14\xc5\x80\x70\x9d\x01\xaa\x28\x50\x52\x18\xdc\x20\xdc\xa4\x26\x97\xd4\xd1\x31\xc4\xc2\xd1\x74\x2e\x20\x87\x12\x3b\x02\x19\x82\x73\x87\x53\xae\x23\xa9\xbd\x0e\xe1\x0f\xd7\xfa\x2f\x8d\xf0\xeb\xfa\xf1\x3f\x18\xfc\x83\xc1\x3f\x18\xfc\x83\xc1\x3f\x18\xfc\x83\xc1\x3f\x18\xfc\x34\x0c\x0e\xbf\xfd\x9f\x2f\xff\xfb\x9a\xe9\xc9\xdd\xd7\x7f\x8f\x9f\x25\xbb\xae\xc3\x71\x7a\x82\x5f\xa3\x48\xf9\x01\x97\x21\x9f\xfb\xde\x1e\x91\x29\x5b\x7a\x7c\x74\xad\xe8\xf0\x31\xae\xd7\x28\xdb\x4f\xde\x42\x3e\x3f\x7c\xef\xe6\xd6\xf1\xed\x6e\x96\x7b\x7c\x2b\x8c\xce\x2a\x6b\xcc\x7b\x6d\xd8\x68\x8e\xf4\x65\xba\xa1\x4a\x89\x61\xaf\xee\x4f\x3a\x8b\x1e\x02\xc9\xa6\x0a\x96\x3b\x9b\xc4\x3b\xd9\x32\x38\xbf\x45\x76\x4c\x3d\x24\x1a\xf3\x52\x7e\x4c\xd3\xad\x62\x5a\x95\xed\x62\xb6\xde\x4c\x90\x74\xbf\x90\x41\xa5\x65\x98\xad\x0a\xd3\x1b\x67\xbb\x8b\x08\xae\x0d\xd7\xfe\xec\x54\xc7\xfe\xbf\x72\x66\x38\xe9\x19\x39\x43\x4e\x73\x8d\x3c\x1e\xcf\xd7\x71\xb7\xd6\x91\xa5\x24\xeb\xe1\x82\xcb\xc6\x33\x3c\xcd\xd6\x07\x89\xb9\xda\x64\x59\xeb\x70\x97\xed\xad\x75\xeb\x6a\x11\x52\xc6\xea\x20\x50\x0b\xb6\xbd\x62\xa9\xb4\x9b\x98\xb9\xba\x5d\x8f\xe7\x5d\x33\x69\x44\x7e\x66\x9c\x15\xe3\x81\x29\x84\x8d\x3a\xd9\x10\x0d\x52\xb5\xbe\x8a\x02\x16\xae\x77\xee\xc0\x98\x65\xda\x76\xdb\xad\x6f\xb1\x54\x99\xb2\x01\x26\xd3\x22\xf0\xa6\x55\x8d\x36\x93\x7d\x2d\xae\x57\xff\x49\x0d\xdd\x4a\x0d\x59\x87\x15\x0a\x7e\xad\x8e\x90\x14\x66\x12\x8e\x73\xc5\x62\xc5\x4e\x2c\xe7\x8b\x5c\x91\x9a\x85\xb6\x99\xae\x0e\x4b\xab\x39\x9b\xcd\x72\xd9\x66\x43\x0d\x1f\xb6\xf7\x4f\xca\xca\x3c\xf1\xcd\x81\xb7\xa6\x51\x2e\xbe\x3b\xf0\x19\x2b\x63\xe1\xf7\xd8\x47\x96\x8d\x7e\x6b\x37\xd3\xdf\xbe\xc7\x4c\x4d\x43\x88\x68\x00\x19\x14\xeb\x84\x60\x0a\x8e\x4b\x47\xe1\xf7\x98\x71\xe5\x49\x6e\xda\xff\xfe\x85\xb4\x9f\x63\xbf\x7e\x76\xd1\x07\xbb\xc1\xb3\x8b\x5b\x9f\xfc\x82\xc0\x9b\xdb\xf2\xf2\x2b\x02\x67\x6f\xef\x20\x93\x4a\x47\x67\x92\x9a\x04\x1b\x48\xc3\x86\x8e\x38\x13\x1a\xe4\xa6\x2e\x21\x72\x14\x07\x44\x77\x90\x86\xa4\xa4\x48\x42\x1d\x3a\x8a\x00\xc8\xb0\x30\x81\xae\xa0\x73\x5a\x5e\xf7\xc0\xfb\x96\xcf\xec\x3e\x12\xdd\x4d\x24\x41\x09\x14\xb2\xdb\x68\xb4\xae\xc0\x69\x1f\xb0\xed\xdc\x87\x66\x25\xb7\x59\x95\x52\xdb\x2a\x8e\x92\x19\x9e\xea\xac\xd6\xb6\xb9\x46\xc3\x28\xa8\x7a\x03\xeb\x15\xc7\x93\x6f\xf2\x64\xce\xde\xe6\x9d\xe5\xf7\x13\x71\x7e\xa5\xef\x95\xe5\x3f\xce\xd1\xdf\xc6\x5d\x99\x84\x33\xa5\x98\x43\x39\x34\x80\x86\x18\x22\x94\xea\xd0\xc0\xdc\x01\x0e\x52\x0a\x32\xa6\x09\xa6\xf6\x5c\x51\x52\xe9\xa6\xd0\xa0\x3c\x64\xe1\x84\x70\x94\x23\xd9\x11\x77\xed\x71\x6e\xf7\x83\xf5\xa6\xfa\xf9\xfe\xeb\xc7\x20\x9f\x51\x6f\x13\x50\x0a\x18\xc7\x88\x42\x2c\x18\xa7\xba\x0e\x99\x10\x40\xd3\x00\x23\x06\x82\x52\x61\xc9\x38\x12\x98\x70\x4d\x52\xd3\x40\xba\x64\xa6\x83\x35\x80\x94\x01\x19\x95\xa7\xe5\x9c\xe8\xd3\xeb\x4d\xda\xe7\xfb\xcb\x3f\xa1\xde\x84\x11\x40\x20\x35\x18\xe6\x1c\x19\x0c\x48\xac\x01\xac\x53\x26\x31\x84\x0e\x46\xd4\x34\x38\x40\x26\xe4\x12\x1a\x86\xd0\x81\x60\x14\x60\x4a\xb9\xc3\x98\x34\x18\xd3\xf8\x69\xd1\xdf\xe3\x7e\x76\x51\xef\x14\x5c\x26\x45\xce\x6f\x2d\x87\xe5\x55\x3d\x4a\x93\xe4\x28\x5f\x42\x15\x69\x8a\x4e\x4d\x65\xf3\xf1\x82\x8b\x0b\xab\x76\x35\x3e\xb0\x22\x72\x18\x55\x0b\xed\x54\xfc\x54\xa9\x9b\xef\xd2\x3f\x57\xef\x7b\xdc\xd3\x1f\x2b\xbf\xca\xcf\xe5\xff\x8c\x7e\xc6\x0d\x47\x09\x61\x22\x05\x75\x02\x84\x32\x85\x62\x48\x2a\x13\x0b\x4c\x1c\xa6\x51\x2e\x39\xe3\x12\x18\x54\x98\x4a\x73\x1c\xa0\x03\x46\x4c\xa5\x38\xe1\x58\x98\x06\x77\xcc\x23\xee\x37\xfa\xd9\x07\xeb\x5d\xd6\xcf\xf5\xfe\x19\xfd\xcc\x11\x3a\x35\x84\xb3\xef\x5a\x42\x37\x00\x85\xc4\x20\x90\xeb\x0c\x33\x22\x4d\x61\x48\x6a\x60\xce\x34\x93\x3b\x3a\x94\x86\x26\x08\x63\x8a\x00\xa6\x29\x29\xb1\x83\x0c\x21\x4f\x4b\xf6\x9e\xe7\xdb\xd2\x47\x7e\xa4\xe3\x45\xaa\x96\xd9\xcc\xeb\x09\xe4\xe7\x2a\xf1\x1d\x24\x8d\xad\x1b\xc2\xa9\x2a\xdb\xfd\x59\xbd\x3b\x0c\x96\xcd\xf8\x31\x54\xfd\x14\xbe\x65\x3e\x56\xfe\xcf\xe6\x9b\x83\xb1\x20\x06\x65\xba\xa4\x92\x40\x4d\x30\x0d\x48\x25\xa4\x04\x92\x08\x8a\x15\xd0\x4c\x9d\x2a\xd3\x31\x94\x40\x52\x69\x82\x49\x25\x10\xc3\x0c\xea\x44\x72\x61\x20\x71\x5a\x78\xf6\x2c\xee\xc9\x25\x4b\x39\x9d\xde\x40\x4b\x4f\x7b\x5d\x16\x74\x8c\xf6\x66\xed\x74\x51\xb6\x52\x18\xce\x3d\x64\x35\x53\xa3\xbc\x3d\xc7\xce\xa6\x99\xef\x0e\x3f\x0d\x77\xfb\x63\xe5\xff\x6c\xdc\x91\x63\x18\x06\xd3\x30\x42\x10\x29\x4e\x18\x10\x9a\x0e\xa5\xd4\x28\x30\x74\x29\x39\xa1\x8c\x31\x2c\x1d\x01\x18\xe1\x80\x49\xa2\x28\xd6\xb0\x29\x29\x50\x4c\x00\xcd\xbc\x5b\x3e\xf5\x18\xf7\x9f\xd8\xcf\xcb\xaf\xc1\x3d\xfb\xb1\xf2\x4b\xed\xab\xfa\xbc\xb2\xfc\x57\xe3\xae\x34\xc6\x00\x70\x18\x46\xa6\xd4\x74\x87\x99\x1c\x38\xcc\xd0\x14\x06\x08\x52\x41\x39\x81\x14\x28\x4d\x18\x04\x13\xce\x89\x21\x4d\x93\xea\x00\x63\x8e\x25\x34\x95\xd2\x4f\x8b\x80\x1e\xe3\xfe\x5f\xaa\xf7\x3d\xee\xb9\x8f\x95\x5f\x58\x9f\xcb\xbf\x2e\xe8\x53\x70\xe7\xd2\x54\x1c\x42\x6c\x72\x0d\x33\xc1\x0d\x8d\x9b\x06\x35\x88\xa9\x71\xa1\x43\x05\x0c\x13\x50\x8d\x02\x87\x9a\x26\xd1\x75\x80\x09\xc5\x86\x70\x10\x72\x98\x92\x04\x1f\xfc\x3b\xbd\x89\xfb\x7f\xa9\xde\xf7\xb8\xe7\x3f\x56\x7e\xbe\x7c\x2e\xbf\xfd\x66\xdc\x9f\x9c\x83\x7d\xce\x04\xec\x67\xcf\xbe\xb2\x25\x9a\xab\xaf\xea\x13\xa7\xa8\xe5\x2c\xd4\xed\x8c\x1b\x41\x71\x36\xee\x01\xa0\xb2\x34\x2c\xe5\xc9\x0c\x64\x1a\xeb\x42\x37\x61\xf5\x90\x75\x58\x15\x71\x7f\x24\xaf\xe0\xb8\xfe\xdb\x8a\x9c\x61\xaf\x61\x64\x88\x9f\x2e\x81\x52\x3d\xbe\xee\x37\x53\xe6\xae\xb7\xea\x75\x5a\x68\xe3\xd6\xdc\xfe\xb2\xe9\xc0\xf4\x6a\x56\x2f\xc9\xc3\x42\xe2\x54\xc7\x5a\x5d\x26\xa5\x92\xc7\x68\xfb\xd0\xc8\xfd\x71\x9d\xd7\x5a\x5a\x16\x8f\x16\x5e\x72\x36\xcc\x66\xe5\xd0\x2c\xd0\xa9\xce\x61\xc6\x6b\x4f\x37\x93\x69\x66\x9a\x33\xc3\xc5\x20\x00\x26\x81\xb6\x51\x2d\x75\x95\x4c\xcc\xf4\xc9\xdc\x8e\xf2\xf1\x30\x0f\x5c\xb8\x28\xb9\x11\xb6\x40\x61\xdb\xf5\x9c\x51\xbf\xd4\xc5\x7e\xfa\xb0\x0c\x77\x37\xab\x46\x45\xa3\x20\xba\xe5\xe9\x20\xbd\x8d\xf2\x7c\x5a\xcd\x90\x84\x25\x4a\xe5\x31\xf1\x6b\xa3\xba\x63\xae\xb3\x53\xad\xde\xda\x9c\x3f\x81\xf2\x0c\x06\x67\x66\x3c\xf8\xca\xd1\xf5\x6c\xe3\x82\xb0\xa5\xae\x6e\x03\x39\xaa\x1a\xd6\xd6\x4c\x81\x5a\x98\xcd\x0c\x57\x1c\x12\x08\xdb\x26\xed\x8f\xf5\x59\x69\x32\x33\xeb\x04\x4f\x52\x68\x75\x90\x9f\xd6\x4b\xf8\x78\x67\xea\x76\xd9\xcf\xd9\x75\xc7\xe4\x8b\xf2\xdf\xd0\xfe\x69\x99\xd2\xc2\x4e\xa5\x9f\x8d\x2e\xba\xc3\xfa\xf5\xe5\x3f\xf6\x52\x3f\x7b\x8a\xfb\x7e\x72\x5f\x83\xfb\xa8\x42\xc1\xa2\x62\x94\x64\x95\x0d\xc7\x9b\x32\x6b\xd7\x4c\x23\xb9\x53\xa1\x29\x01\xf7\x83\xca\xa0\xb7\x4b\x76\x0b\x13\xdb\x2f\x92\xc9\xea\x98\x8d\x7c\x86\xdc\xc9\x59\x71\xde\x1c\xae\x82\x75\xb1\xaa\x81\x5e\xaa\xaa\xfa\xaa\x17\x66\x33\x99\x76\xb4\xee\x33\x96\x51\x8b\xe6\xd2\xd8\xce\x0a\xb3\x69\x7a\xc6\xe2\xf9\x9e\x91\x27\xf9\xe1\xd0\x69\x0f\xca\x3e\xaf\x8b\x81\xa9\xe7\xcb\x96\x2a\x8a\xba\x55\x59\xf4\x9c\x7c\x95\x6c\xc3\xb5\x94\xe5\xd4\x9e\x80\xf1\xde\x76\x15\x0f\xc6\xc9\x7e\xaa\x3a\x96\xf9\x7a\xb7\x57\x4a\xed\x12\x9b\x85\xab\xad\xea\x56\x3a\x6e\x16\xc0\x88\xd0\x51\x0e\x39\xf1\xf8\x79\x05\xd4\xa7\x92\xbb\x68\x8c\xa5\x8b\xc6\x33\x3f\x4f\x5b\xd9\x69\x3a\x21\x87\x1c\x91\x5a\x2f\xca\x15\x8b\xbb\x6e\x87\xae\x3b\xee\x20\xc9\x52\x4b\x5c\xc2\x47\x3f\xfb\x5f\x26\x77\xb0\x32\xcb\x95\x9f\x47\xee\x4f\xce\x63\xbc\x9f\xdc\x8f\x96\x84\x5c\x57\xc6\x99\x0d\x67\xb0\xa3\x89\x21\xee\xc0\xd9\x02\xca\x69\x99\x67\x61\xb4\x19\x37\xfb\xc5\x81\xb9\xce\x0c\xfd\x66\x92\xc9\x2e\x6d\xbb\xf6\x81\x38\xcf\x91\x5b\xf4\xf4\x46\x22\x3b\xda\x2d\x68\x22\x88\x2f\x69\xad\x14\x0f\x2b\x81\x9b\x0b\x9b\x78\xda\x85\x9d\x28\x6e\xca\x94\x04\x9e\xd7\x2d\x57\x5a\xbb\xf2\x90\xb7\x1d\x16\xc8\x9a\x13\xcc\xd3\xda\x30\xa0\xe9\x71\x67\x39\xe3\xb3\x79\x27\x67\xae\xb3\x5a\xb6\x17\x75\x57\xeb\x5d\xcf\x2f\xed\x09\x38\xc9\x0f\x8b\x9b\xd6\xb0\xa3\x85\xa3\x4c\x36\x02\xa9\x7c\x51\x8c\x73\xab\xde\x62\x6d\x76\x68\xc9\x9f\x8e\x5b\x8b\x19\xcc\xa7\xcd\xd1\xa2\x7a\x6e\xd0\x4f\x25\x77\x16\xfb\x85\xa8\x23\xbc\x7e\xb5\x23\x06\x8b\xa8\x37\x6f\xe5\x92\x91\xc3\xfb\x60\x96\x9a\x29\x9e\xcc\x17\x33\xc3\xae\x37\x5d\xd9\xf9\x11\x3b\xc8\xff\xb7\xc9\x5d\x8c\xac\xf6\xcf\x23\xf7\x27\x27\xab\xde\x38\x2c\x0e\xce\x8d\xf3\x4c\x58\xd2\xbe\x02\xf3\xe2\xfa\xeb\x97\x78\x26\xef\x83\xc7\x4c\x3a\x39\x4a\x57\x43\xbb\x5b\xd3\x8a\x29\x7f\xb0\x2c\xa4\x1b\xbd\xa5\x5b\x99\x81\xd4\x78\xd8\x29\x96\x4a\x91\x18\xb8\x09\x0b\x55\x55\x90\x0a\x87\xab\x1e\x75\x77\x23\x6b\x3a\xed\x4d\x1a\x8b\xa0\xb7\x75\xa3\xe6\x2a\xeb\xa3\x49\x7d\x64\x74\x12\xcd\x44\xe4\xd5\x9d\xa0\x3f\xcc\xd5\xeb\xd9\xc3\x97\x3d\xbc\xe4\x66\xb4\xe8\x95\x2b\x8b\xf4\x34\x6f\x37\x8b\xb8\x91\x85\xd5\x82\x63\x55\x1b\xbb\xd1\x20\xaa\x57\x16\x56\x37\xbf\x35\x82\xd9\xc2\x3d\xb7\xe2\x6d\x72\x5f\x06\xb4\x37\xc9\x7d\x51\xff\x8b\x49\xcf\x3b\xc2\x12\x7d\x77\xf1\x22\xfd\x75\xd2\xa0\x7e\x6d\xd7\xf9\x78\x05\xb9\x3e\x39\x23\xf7\x7e\x72\x3d\x13\x16\x3c\x43\xae\xe7\x32\x28\x57\xfa\xce\xe4\x4a\x76\x0a\x93\x56\xbd\x65\x4f\xe7\x76\xd1\x2f\x8f\xb8\xeb\x94\xe7\xa2\x80\x27\xa3\x86\x09\x4b\x7d\xb4\xab\xd5\xd7\xab\x84\xc4\xd5\x15\xe9\xe5\x79\xb7\x98\xcd\xaf\x70\x98\x56\xc3\xed\x88\x15\x13\x1b\xdc\xed\x77\x15\x5b\x57\xba\x9c\x63\x55\x9e\x76\x09\x4f\xd4\x36\xd9\x6a\xbd\xb0\x27\xc0\x26\x48\x88\x49\xc2\xce\xa5\x95\xa7\xfc\x78\xbc\x03\x7b\x4b\x77\x5c\xdd\x86\x7a\x76\x3c\xa0\x41\x98\x49\x79\x5e\x62\x43\x7b\x03\xa7\x74\x76\xea\x7f\x69\x72\xad\xaf\xed\x3a\x1f\xaf\x20\xd7\x27\xa7\x3d\xdf\x18\xf3\xbc\xce\x73\x1d\x16\x66\x25\x3b\x9d\xca\x29\x0f\xf6\x86\x69\x2e\x4a\xdc\x1f\x67\x7d\xd9\xfb\xf2\xeb\x49\x73\x32\x2b\x76\xb5\x05\x5a\x91\xba\xda\xd2\x5a\x59\x4e\x32\x0e\x6c\xb5\xf2\xd8\xdd\x2c\x26\x79\x90\xf4\x87\xbd\xa0\x1a\x91\x61\x15\x1a\x5a\xdd\x99\x8c\x34\xd1\x6c\xb5\x95\x4c\xfb\x2b\x0e\x6a\x16\x53\xa3\x74\x6f\x13\x8d\x3a\xd6\x34\x2c\x2d\xc7\xd3\xe4\x6c\x3b\x4e\x5a\xfd\x03\x19\x56\xed\x51\xb4\x12\x56\xd4\x18\x0e\x7b\x83\xcd\xa6\xd8\xf5\x0c\xe1\xf8\x03\xee\xcf\xb7\x20\x37\x2b\xf5\x16\x2b\x5e\x2c\xc5\xb1\x53\x89\xf4\x17\x88\xd6\x7f\x89\x68\x17\x1d\xb3\x7e\xbe\xf7\xad\xf1\x67\xa7\xd3\x6a\x9c\xb4\xbc\x71\xf2\x7a\x3c\x72\xb7\xb0\xb6\xae\x4c\xbb\x18\x6a\xde\x11\x1f\xeb\x78\x6d\x3d\x78\x31\xe2\x71\x6a\xf4\xdd\x1d\xe1\x73\xf3\xd0\x6f\x8c\x8f\x7e\x7a\x47\x58\x5b\x0f\x82\xb0\xe3\x61\xdf\x97\x5f\x4f\x4e\xe7\xb3\x84\x11\xac\x70\x61\xe5\x54\x34\xab\xd8\x6e\x4e\x73\x71\xdd\x15\xf9\x69\x0f\xf0\xb2\x41\x68\xbd\xb7\x29\xc6\xdd\x29\x58\x92\x1d\x2a\x96\xaa\x0d\xb1\x2b\x36\x27\x25\xaf\x89\xbb\xa2\x34\x98\x5a\x49\xc3\x4d\xcf\xfc\x62\x1e\x77\x9d\xad\xa8\x97\x26\x51\x25\x4a\xd7\xad\x03\x59\xa3\x0e\xd4\xdc\x89\x51\xe5\x4d\xcd\x4d\xaf\xd0\x32\xed\x69\x36\x4d\x4d\xf3\x71\xc7\x31\x6b\xab\x12\x23\x66\x75\xea\xb7\x55\x08\xc7\xe7\xcf\x56\x7e\xbc\x23\xb4\xcf\xf7\xbe\x35\x56\xfd\x68\x47\xb0\x6e\x61\x7d\x71\xd4\xad\x87\xa3\xc7\x3b\x62\xe9\x9f\xd8\x11\x3e\xf9\xc1\xc0\xfb\xc3\x8d\x67\x26\x6a\xc7\x67\x23\x6f\xcc\x42\x5c\x74\x9c\x0b\xb0\xd4\x5d\xe3\x25\xad\x92\xc1\x77\x7d\x7b\xd5\x4c\x8e\x44\x47\xa6\x75\xe5\xf4\xaa\xb9\x65\xcf\x66\x5a\x2a\xbd\x28\xcd\x6d\xc5\xe3\xf5\x82\xe7\xbb\xb5\x52\x94\xd0\x50\xbf\xe3\xb6\x1b\xd9\xd2\x56\x0d\x11\xa5\x76\xb1\x5c\x0c\x9d\x4a\x21\x33\x9c\xd9\x61\xaa\x30\x8e\x86\x53\xa4\xc6\x64\x1d\x24\x0e\xeb\x3f\xbf\xc7\xbe\x55\xb5\xc1\xa2\xd0\x2a\xb7\x12\x39\xbf\x52\x48\x12\x77\x98\x6d\x2d\x37\xfa\x62\xd1\x0b\x40\x51\x59\x81\x17\xb7\x0b\x03\xc3\x8a\x47\xd6\xfc\x4c\xa4\xdb\x9d\xe0\xe2\x3d\x8b\xe7\x3a\xc1\xda\xfa\x7f\x60\x34\xe8\xff\x75\xec\xbb\x18\x98\x5e\xd3\x49\x3e\xf7\x29\xce\xfb\x3b\xc9\xa3\xaf\x2c\x5c\x13\xe5\x8d\xd9\x8c\x17\x3b\x09\x6c\x59\xf5\xe4\x32\xa1\x29\xd2\xcb\x85\x09\x1e\x59\x05\xdc\x25\xfd\x68\xa2\x8f\x57\xf5\xa4\x3f\x17\x55\x80\x77\x93\x66\xdd\x6f\xd2\xb9\xbb\x84\xb3\xc1\x2c\x11\xb5\x56\xe9\x56\x2f\xb3\x48\xd4\xdb\x4b\x35\x8f\x12\x19\x5a\x49\x0e\x8b\x51\x65\xce\x0b\xbd\x65\x79\x85\x59\x2d\x75\xea\x24\xb5\xed\x62\x98\x32\xda\x58\x9f\x2c\xe7\xeb\xd2\xdc\x35\xeb\xe5\xbe\x56\xe6\xfd\xf4\x16\x7a\x1d\xba\xd1\x8c\xc1\xc8\xea\xf0\xde\xc8\x4b\xbc\x94\xd5\x78\x4b\x27\xf9\xab\x8f\x14\xfc\xaf\x63\xdf\x1b\x3b\xc9\xe7\x3e\x72\x7b\x7f\x27\x79\xf4\x3d\x8c\x6b\xa2\xbc\xbf\x93\x5c\x1c\x17\x9d\xa4\xc9\x54\x6e\x9e\xd8\xcd\x21\x8c\x6c\x0a\xcb\x8d\x95\x63\x79\x1b\x73\x58\xaf\xb4\x7a\xa2\xd4\xd5\xd3\x33\x3f\xef\xab\xc9\xd0\xcf\xc6\xc7\x85\x75\xa2\x37\x4e\x4c\xe2\x15\xdc\x5d\x35\xc7\x8b\x6c\x90\xb5\x11\x5a\x26\x8d\xa2\x97\x8e\xaf\x2d\x55\xcf\x8f\x14\x48\xa4\xa7\x9b\xf9\xe1\x23\x0e\xfb\x4e\x52\xf5\x68\xa6\xe3\xa5\xba\xd1\xc6\xdd\x76\x47\xde\x24\x84\x49\x9a\x9d\xe4\x8b\xd6\xb2\x30\x05\x75\x5b\xda\x8e\x53\x26\x41\x5c\x88\x97\xe6\x15\x6f\xe9\x24\x7f\x4d\x12\x9e\xff\x1e\xfe\x75\xec\xbb\x38\xbe\x3d\xb5\x3f\xf4\xe1\xb5\xfc\x8b\xdf\x7f\xcc\x27\x72\x7b\xde\x30\xfc\x6e\x73\xa3\x17\x1e\x96\x5a\xa5\x56\xa6\x71\x7a\xb6\x5a\xad\x94\xfa\x97\x1a\x0f\x2b\x18\xac\x74\xfa\xc6\x1e\xc6\xf7\x05\xc6\x6a\x8d\x7c\xd9\x6a\xf4\x63\xc5\x4c\x3f\xf6\xcb\xfd\x16\x69\xdf\xef\xb7\xd6\x7e\x72\x7b\xeb\xf3\x76\xc8\x9f\x6a\x78\xf8\x8c\xd5\xe1\x73\x26\xdf\xda\x63\x79\xff\xef\x93\xcc\x73\x98\x77\xcb\xb2\xbb\x02\x1e\x1a\x75\xdc\xe3\xf1\xf9\x0d\x98\x9f\xdc\x1d\xf8\x53\xcc\x7d\xa0\xfc\x96\xe1\xcf\x94\x1e\x6b\x57\xf2\xf5\x76\x26\x76\xde\x35\xeb\x4d\x35\xf9\x1c\xbc\xdf\x58\x81\xc7\x6d\x70\xde\x93\xfa\x89\xfd\x94\xef\x36\xb3\xfd\x1c\x7b\x8f\xca\x6e\x19\x7a\x51\xcc\x43\x0b\x4f\xfb\xe5\xde\xde\x27\xf7\x6e\x9f\xd7\x4f\x31\xee\xa0\xeb\x96\x6d\xe7\x42\x1e\x9a\xe6\xce\xbf\x1f\x76\xcf\x7d\x76\xcb\xd8\x07\x7f\x7c\x96\xa5\x17\x2a\x6f\x1a\x7c\x5d\xe4\xad\x46\x7f\x62\x5f\xd9\xd3\x8f\xcf\xb3\x34\x5c\x3a\x4f\xd8\x78\x57\xcc\x43\xeb\x0e\x5b\xd2\x3e\xb3\xc3\xea\xe5\x66\xa5\x9f\x63\xe4\x59\xe1\x2d\x43\xaf\x8a\x7b\x68\xec\xdd\x26\xad\x4f\x6d\x82\x7a\xf7\xf3\xb3\x2c\x3d\x6a\xbb\x69\xe6\x45\x41\x4f\x8e\x57\xf7\xdb\xa3\x3e\xb3\xc3\xe9\xc5\xaf\x9f\x65\xf5\xbd\xc2\x9b\x86\x3f\x2c\xee\xa1\xed\xf7\x9b\xa4\x3e\xb3\xf9\xe9\xe5\x4e\x9a\x9f\x63\xf0\x59\xe1\x2d\x83\xaf\x8a\x7b\x12\xec\xe3\xe6\xa7\xdf\xcf\x3b\x9b\x3e\xbb\x89\xe7\xc3\x2d\x2f\x3f\xa9\x1e\x17\x2a\x6f\xd6\xe4\xba\xc8\x5b\x7e\x22\x94\x8b\xef\x77\xbb\x56\x3e\xbd\xc1\xe6\xc5\xf6\x92\x9f\x65\xfb\xb3\x86\x7f\xc8\xea\x53\x23\x9d\x36\x68\xbd\x5f\xc9\x96\xaf\xa4\x33\xbd\xd7\x6d\x0e\x7a\x10\xbd\xd6\x13\xab\x56\xce\x81\x5f\xbb\x99\xaf\x64\x63\x4e\x14\x48\x19\xbb\xdb\x0a\xf6\xd7\x58\x37\x97\x69\x64\x62\x97\x5b\xc3\xc2\xfb\x35\x5b\x8f\x63\xb3\x8b\xed\xf6\x0f\x15\x79\xb7\xa1\x8f\x34\xed\x4d\x3d\x0d\xf0\x0f\x0d\xbd\x10\x7c\x64\xcf\x1e\x73\x67\x1b\xca\xc5\xbb\xed\xb8\xd7\xb0\x2f\xff\xcc\x9d\x07\x26\x3c\x1d\x4f\xed\xc5\x95\x94\x1f\x37\xe1\x4e\xc9\xd1\x8a\x8b\x3e\xf8\x4a\x43\x4e\x57\x3e\x66\xc8\xa5\x92\xbd\x21\x0f\xa3\xc5\x57\x5a\x32\x0f\x5c\x2e\x3f\xc6\x8d\xb3\x8a\xa7\x48\x71\x90\xb8\x35\x22\x4b\x6f\xf5\x41\x10\x2e\x95\xec\x8b\xbf\xf8\xee\xdc\x2b\x11\x38\x0f\xcf\x1f\xb6\xe4\x52\xcf\xc9\x98\xbb\x98\xe3\xa1\x31\x97\xdb\xa0\x3f\x36\x48\x4e\xa7\x9f\xd4\x6d\x1f\xab\x7a\xaa\x89\x1e\x48\x3e\x15\x8c\x9c\x7c\xd3\xfb\xcd\x79\xa0\xe6\x80\xd0\x29\xca\x79\x60\xcb\xad\xc9\x66\xcd\x0f\xa3\x61\x20\x9b\xf5\x52\xec\xee\x33\x00\x31\xb1\x9c\xcd\x63\xdc\x9f\xcd\xa7\x32\x92\x87\xd2\xfe\x6f\x00\x00\x00\xff\xff\x10\xbc\x20\x8b\x8f\x98\x00\x00") + +func allow_trustCoreSqlBytes() ([]byte, error) { + return bindataRead( + _allow_trustCoreSql, + "allow_trust-core.sql", + ) +} + +func allow_trustCoreSql() (*asset, error) { + bytes, err := allow_trustCoreSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "allow_trust-core.sql", size: 39055, mode: os.FileMode(420), modTime: time.Unix(1508958211, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _allow_trustHorizonSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\xbd\x6b\x73\xa3\x3a\xf2\x38\xfc\xfe\x7c\x0a\x6a\xde\x64\xa6\x92\x19\x4b\x08\x10\xcc\x79\x66\xab\xf0\xfd\xee\xf8\x6e\x67\x6b\xcb\x25\x40\xd8\x24\xb6\x71\x00\xdb\x49\xb6\x7e\xdf\xfd\x29\xc0\x57\x6c\x0c\xbe\xe4\x9c\x39\xfb\xa7\xb6\xce\x0e\x51\xab\x6f\x6a\x75\xb7\x5a\xc2\xfa\xfe\xfd\x8f\xef\xdf\x99\x47\xd3\x76\x86\x16\x6d\xd6\xcb\x8c\x46\x1c\xa2\x10\x9b\x32\xda\x7c\x32\xfb\xe3\xfb\xf7\x3f\xdc\xf6\xf4\x7c\x32\xa3\x1a\xa3\x5b\xe6\x64\x0b\xb0\xa0\x96\x6d\x98\x53\x46\xfa\x21\xfc\xe0\x77\xa0\x94\x77\x66\x36\x1c\xb8\xdd\x03\x20\x7f\x34\x33\x2d\xc6\x76\x88\x43\x27\x74\xea\x0c\x1c\x63\x42\xcd\xb9\xc3\xfc\x62\xc0\x9f\x5e\xd3\xd8\x54\x5f\x0e\xff\xaa\x8e\x0d\x17\x9a\x4e\x55\x53\x33\xa6\x43\xe6\x17\x73\xd7\x6e\x65\xc5\xbb\x3f\xd7\xe8\xa6\x1a\xb1\xb4\x81\x6a\x4e\x75\xd3\x9a\x18\xd3\xe1\xc0\x76\x2c\x63\x3a\xb4\x99\x5f\x8c\x39\x5d\xe1\x18\x51\xf5\x65\xa0\xcf\xa7\xaa\x63\x98\xd3\x81\x62\x6a\x06\x75\xdb\x75\x32\xb6\xe9\x1e\x99\x89\x31\x1d\x4c\xa8\x6d\x93\xa1\x07\xb0\x24\xd6\xd4\x98\x0e\xff\x5c\xf1\x4e\x89\xa5\x8e\x06\x33\xe2\x8c\x98\x5f\xcc\x6c\xae\x8c\x0d\xf5\xc1\x15\x56\x25\x0e\x19\x9b\x2e\x98\x5c\x6e\x65\x1a\x4c\x4b\x4e\x96\x33\x4c\x21\xcb\x64\x7a\x85\x66\xab\xc9\xd4\xaa\xe5\xfe\x0a\xfe\xc7\xc8\xb0\x1d\xd3\x7a\x1f\x38\x16\xd1\xa8\xcd\xa4\x1b\xb5\x47\x26\x55\xab\x36\x5b\x0d\xb9\x50\x6d\xed\x74\xda\x07\x1c\xa8\xe6\x7c\xea\x50\x6b\x40\x6c\x9b\x3a\x03\x43\x1b\xe8\x2f\xf4\xfd\xcf\xbf\x82\xa0\xea\xfd\xeb\xaf\x20\xe9\xda\xd5\x5f\x27\xa0\x4f\x2d\x28\x9d\xd7\xbd\x50\x4d\x67\x7a\x3b\x3d\x57\x94\xbc\x8e\x03\xaa\xeb\x54\x75\xec\x81\xf2\x3e\x30\x2d\x8d\x5a\x03\xc5\x34\x5f\x4e\x77\x34\xa6\x1a\x7d\x1b\xec\xd0\x9f\xda\xc4\xb3\x45\x7b\x60\x4e\x07\x86\x76\x4e\x6f\x73\x46\x2d\xb2\xe9\xeb\xbc\xcf\xe8\x15\xbd\xb7\x9c\x5c\xc5\xc5\x79\x7d\xc7\x54\x1b\x52\xcb\xeb\x68\xd3\xd7\x39\x9d\xaa\x67\x89\xb0\xd3\x7d\x66\xd1\x85\x61\xce\xed\xd5\xdf\x06\x23\x62\x8f\x2e\x44\x75\x3d\x06\x63\x32\x33\x2d\x77\xc6\xac\xdc\xde\xa5\x68\x2e\xd5\xa5\x3a\x36\x6d\xaa\x0d\x88\x73\x4e\xff\xb5\x31\x5f\x60\x4a\xab\xa9\x73\x01\xd3\xbb\x3d\x89\xa6\x59\xd4\xb6\x4f\x77\x1f\x39\x96\xe6\x85\x86\xc1\xd8\x34\x5f\xe6\xb3\x18\xd0\xb3\x28\x96\x7c\x28\x62\x58\x67\x22\x5e\xfb\xc5\xd8\x1d\x5c\x3f\xa1\xeb\xd4\x8a\x02\x9d\xb9\x90\x23\x27\x92\x6f\x7b\x6f\xda\x2a\xef\x91\xca\x1f\x6d\xe6\x47\x1c\x60\xd3\xe7\xc3\x8c\x04\x34\x6c\x67\xe0\xbc\x0d\x66\xd1\x28\x5d\x48\x73\x16\x17\x92\xc6\x05\x5b\x3b\xe0\xd3\xc0\xca\x7a\x92\x44\x82\x45\xcf\x7d\x65\x63\xbb\xa7\xe1\xfc\x18\xe6\x6a\xdb\xb6\xe7\x2e\xe5\xb3\xa2\xd8\x66\x6c\x67\xc4\x72\x0c\xd5\x98\x91\xa9\x13\x33\xae\x1d\xed\x3a\x98\x9d\x19\x49\x37\xce\xfd\x5c\x0e\x8e\x77\x3c\x9b\xbe\xa7\xbe\x38\xf4\x7c\xc0\x4f\xc7\xef\x0f\xa7\x6a\x6a\xeb\xec\xc4\x75\x95\xeb\x44\xc5\x1b\xe1\x41\x4c\x0e\x86\xa6\x35\x1b\x4c\x8c\xe1\x2a\x76\x9e\x60\x21\x00\x79\x52\xc6\xb8\x26\xe4\xf7\x4e\xd5\xca\xed\x4a\x95\x31\x34\x9f\x7a\x3a\x93\x95\xdb\xe5\x56\x4c\xdc\x21\xa6\x71\x03\xcc\xab\x41\x39\x8d\xc9\x7b\x8b\x2f\xfe\x3a\xac\x34\x33\xf5\x76\xa6\x9a\xba\x40\x67\x6e\x62\x68\xd3\xd7\xb3\x29\xef\x21\x89\xdd\x5b\xa3\x31\x61\xb7\xe9\x57\x6c\x09\x43\xe6\xe6\x39\xf2\x1d\x47\x11\xaf\xef\x2a\x51\x89\x07\xbc\xca\x4a\x62\xcb\xb6\x9a\xa7\xe7\xc8\xe2\x77\x89\x09\xbb\xca\x57\xe2\xf3\xb3\x4e\x70\xe2\x70\x14\x98\xe9\x2b\xe0\x4c\xaf\x95\xa9\x36\x0b\xb5\xea\x6e\x87\xf1\x6c\x68\xbf\x8e\xd7\x6c\xa4\xf2\x99\x8a\x7c\x80\xef\xcf\x3f\xfc\x45\x7d\x95\x4c\xe8\xcf\xf5\xdf\x98\xd6\xfb\x8c\xfe\x5c\x75\xf9\x93\x69\xaa\x23\x3a\x21\x3f\x99\xef\x7f\x32\xb5\xe5\x94\x5a\x3f\x99\xef\xde\x5a\x3f\xd5\xc8\xc8\xad\xcc\x1a\xf3\x1a\xdf\x1f\x7b\x18\xf7\x1b\x57\x88\x53\xb5\x4a\x25\x53\x6d\x9d\xc0\xec\x03\x30\xb5\xea\x3e\x02\xa6\xd0\x64\xee\xd6\xab\xf8\xf5\xdf\x6c\x0f\xc9\x5d\x90\xf2\x5a\xfc\x15\xcd\x8d\x86\x22\xe5\xd9\xd3\x65\xb5\xd6\x0a\xe8\x93\xe9\x16\x5a\xf9\x0d\x5b\xbb\xcb\xf9\x3d\xf2\x5b\x2c\x01\x46\xce\x11\xfe\x00\x89\xa7\x80\xc7\x72\x62\x36\x6c\xd6\xcb\xcc\xcc\x32\x55\xaa\xcd\x2d\x32\x66\xc6\x64\x3a\x9c\x93\x21\xf5\xd4\x10\xb3\xfc\xe0\x82\x69\x54\x27\xf3\xb1\x33\x70\x88\x32\xa6\xf6\x8c\xa8\x94\xf9\xc5\xdc\xdd\x05\x5a\x97\x86\x33\x1a\x98\x86\xb6\x53\x06\xd9\x13\x36\x68\x94\x2b\x51\x3d\x13\xde\x0a\xba\x36\x82\x63\x4a\xf7\xad\x3d\x18\xf0\xbe\xfe\xc1\x30\x8c\xeb\xd7\x1d\xfa\xe6\x78\x63\x51\x6d\x97\xcb\x0f\xde\x5f\xc9\x6c\x36\x36\xbc\x15\x0c\xe3\xa6\xe4\xb6\x43\x26\x33\xc6\x65\xd4\x7b\x65\x3e\xcc\x29\xfd\xe3\x5b\x70\x54\xc2\xa6\xdc\xda\xe2\x57\x73\x35\x1e\xcf\x9b\x99\x1d\x82\xd5\x63\xb3\xd9\x92\x1b\x2d\xdf\x66\xa0\xf7\x87\x42\x35\xd5\xc8\x78\x03\x9c\xec\xaf\xfe\x54\xad\x31\x95\x42\xb5\x23\x97\xdb\x99\xcd\xbb\xdc\xdb\xbe\xa7\xe4\x54\x3e\xc3\xc0\x28\x61\x2e\x56\x7b\x10\xd1\x56\xef\x8a\x31\x34\xa6\xce\x3a\xa2\x32\x53\xfa\xe6\x2c\xc8\xf8\xeb\x5d\x88\xc4\x77\x3f\x7f\x5a\x74\xa8\x8e\x89\x6d\x7f\x0b\x0e\x97\xbf\x72\x63\xd4\x11\xb1\x88\xea\x50\x8b\x59\x10\xeb\xdd\x98\x0e\xbf\x0a\xdc\xb7\x13\x03\xe5\x3b\xde\xab\x25\xf3\xd3\x85\x8d\x5c\xc6\xd4\xa1\x43\x6a\x05\x79\xdc\xa4\x6b\xc7\xd9\x3c\x0a\xee\x26\x7a\x47\xc0\x21\x7b\x1c\xdc\xcf\x00\x8f\x74\xe0\x85\x6d\x87\x28\x7d\xdc\xd8\x6c\x77\x71\xfe\x65\x46\x7b\x4a\x10\xa6\xd6\xad\x66\xd2\x4c\xb2\x1f\x21\x91\x9f\xfe\x9d\x16\x68\x83\x2b\xd0\xfc\xc3\x5d\x37\x1e\xe7\x6d\x9d\x50\x5c\x6b\x75\x2b\x3c\x2b\xb3\x0b\xcc\x99\xc1\x76\x7a\xed\xdb\xc9\x61\xfe\x14\x06\xf9\xc5\x5b\xd0\x7e\x09\xb1\x66\xcf\x8e\x8f\x37\x69\xd4\x21\xc6\xd8\x66\x9e\x6d\x73\xaa\x84\x1b\xdb\x3a\x0b\xbb\x56\x0f\x2b\x3c\x2b\x3d\xac\xab\x78\x21\xbc\xed\x94\xd6\x62\xcd\xc2\x63\x55\xbd\xe3\x1d\x57\x6a\xd9\x49\xbb\xbd\x81\xd8\xf0\xb1\xf6\x72\x20\x40\x61\x3b\x10\xf1\xe0\x37\xa5\xb5\x40\x60\x32\xe7\xce\x36\x36\x05\xfb\x58\x94\x38\x91\x9d\x7c\xd8\xf9\x4c\x8b\x0d\xbb\x31\x9d\xd5\x6b\xa0\xea\x78\x20\x0b\x0c\x1a\x91\xe9\x90\xf1\x40\x35\x8d\xa9\x7d\xdc\x06\x75\x4a\x07\x33\xd3\x1c\x1f\x6f\xf5\xaa\xe6\x3a\x0d\x1b\x6b\xaf\xd9\xa2\x36\xb5\x16\x61\x20\x13\xf2\x36\x70\xde\x06\xae\xeb\xb4\x8d\x8f\x30\xa8\x99\x65\x3a\xa6\x6a\x8e\x43\xe5\x02\x31\x7c\x6b\xc8\x82\xe5\x5a\xeb\x0f\x59\x04\x47\xc4\xa2\xf8\x5e\x20\xda\xaf\x9c\x2b\xf2\x6d\xc3\xcb\x49\x1a\x7f\x55\xb8\x39\x4b\xd0\x2b\xc3\xcf\x49\x5a\x87\xe1\xe8\x38\xf8\x89\xf0\xb4\xb3\x9c\xbf\x99\x6d\x1e\xe6\x7c\x01\x3f\xb0\xb7\xf7\x73\x1c\xc6\xcb\xc8\x55\x5f\x14\x2f\x32\x5d\x19\x98\xfc\x3f\xd9\xe6\xdc\x52\x37\x5b\x6f\x21\x21\x61\x3d\xcd\xef\xee\x7e\xfe\x3c\x80\x88\x31\x0f\x56\xd5\x94\x6b\xd5\xb9\xda\x54\xfc\x7a\xd3\x38\xbe\x8a\x6b\x97\x44\x15\x6f\x27\x21\x94\x6c\x60\x4b\xf3\x14\xd0\x6a\x97\xf5\x14\xc8\xc4\x1b\x9e\xa3\x00\x87\x9b\xc3\x11\x70\x27\xc9\x6d\xa0\x4e\x50\xf4\x58\x32\xec\x81\x4d\xc7\x63\x6a\x31\x8a\x69\x8e\x29\x99\xfa\x6d\x3b\x05\xd4\xa3\x7b\xbc\x1e\xda\x81\x77\x0a\x80\x49\xe5\x33\xa9\x12\xf3\xf5\xeb\xae\x88\xff\x62\xc0\xb7\x6f\x51\xa8\x8e\x75\x5f\x4b\xf5\xff\x1d\x08\x1a\x03\xdf\x9e\xd0\x01\xf4\x01\x8d\x78\x0c\x9e\xb4\xf5\xe3\x75\xc7\x1b\x58\xff\xf1\x4a\x72\xcc\x50\x17\xc7\xc7\x5c\x13\xec\xa2\xaa\xb6\xb7\x09\x77\x11\x54\xfe\xaa\x80\x77\xa6\xb0\x57\x86\xbc\x08\x6a\x87\x41\x2f\xac\xc3\x89\xb0\xb7\x57\xa9\xbf\xa1\xad\xae\xed\x73\x97\xa5\xd8\xab\x8f\x95\x73\x8e\x58\xd3\xc4\x8d\x8c\xa7\x83\xdc\x51\xd8\x2d\xe9\xf0\xf4\x9c\x84\x4e\xbd\xb0\xa5\xcd\xdf\xb2\x38\x71\xde\x06\x74\xba\xa0\x63\x73\x46\x8f\x15\xfc\x9c\x37\x77\xa9\x30\x1f\x3b\x21\x8d\x13\xea\x90\x90\x26\x57\x0b\x61\xcd\xb6\x31\x9c\x12\x67\x6e\xd1\x63\xb5\x29\x49\xf8\xf6\xef\xff\x6c\xb3\x8b\xff\xfe\xdf\xb1\xfc\xe2\xdf\xff\x09\xae\x59\xe8\xc4\x0c\x29\x23\x6d\x71\x4d\xcd\x29\x3d\x99\xad\x6c\x71\x1d\xa2\x59\x49\x66\x4c\xe8\x40\x31\xe7\x53\xcd\x76\x47\x4e\xb4\xc8\x74\x78\xaa\xe8\xe9\x17\xc1\x0c\x6d\x3d\x7b\xd6\x1b\x65\x71\xa6\xbc\x3f\x7d\xbc\xdd\xc9\x88\x3d\xb8\x66\xa6\x75\xa2\x60\xb8\x5b\x9a\xd9\x2d\x17\x9e\x97\xb8\xdf\x4e\x88\x98\x5b\x94\x27\x85\x3a\x99\xf0\xc7\x11\x32\x34\x72\xde\x4c\xcc\xd8\xbb\xbc\x27\x05\x8d\x70\xf3\xc7\x45\x4d\x13\x87\x30\xba\x69\xc5\xd8\x2b\x60\xd2\x72\x4b\x8e\x10\xb1\x50\x6d\x66\x1a\x2d\xa6\x50\x6d\xd5\x0e\xf6\x0b\xbc\xe8\xd8\x64\xbe\xde\xc1\x81\x31\x35\x1c\x83\x8c\x07\xfe\xee\xd0\x0f\xfb\x75\x7c\xf7\xc0\xdc\xb1\x00\xe2\xef\x10\x7c\x67\x79\x06\xb2\x3f\x01\xfb\x93\x83\x3f\x10\xcf\x8b\x90\xff\x0e\xf0\xdd\xb7\x3f\xe3\x61\x67\x07\xfe\x09\xa5\x3d\x15\x28\xef\x03\xc7\x34\xb4\xd3\x94\x24\x88\xce\x21\x84\x06\x73\x9b\x6e\x3c\xfc\xc0\x98\x1e\x1c\x8a\x3a\x49\x4e\x80\x10\x4a\xe7\xd0\xe3\x06\x44\xd3\x06\xc1\x62\xca\x69\x1a\xbc\x24\x89\xe7\xd0\xe0\x07\x7e\x38\x59\x67\xb6\xde\xce\xd3\x49\x12\x18\x70\xdc\x59\x6a\x13\xd6\x24\x56\xde\x26\x06\x09\x84\x39\xe1\x1c\x12\x78\x30\x31\x35\x43\x7f\x8f\x2f\x85\x08\x25\xc0\xae\x48\x84\x4c\x8d\x93\x1b\x3a\xe7\xce\x8d\x83\x4d\x9d\x35\xef\xf0\x81\xb9\xcb\x25\x1b\x8f\xfd\x7c\xa1\xcc\xa6\x0a\x28\x5b\xad\x73\xc9\x5e\x39\x5b\xa9\xa6\xcb\xd9\x62\xbb\xfa\xd8\x66\xf3\x7d\xf4\x54\xc9\x36\xf3\xb5\x6a\x3b\x95\xa9\xc9\xcd\x2e\xae\xa7\x70\xad\xc7\xe6\x83\xfa\x09\x25\xc2\xba\x44\x52\x2c\xaa\x67\xd9\x7c\x3b\xc3\xb3\x72\xa5\xd7\xce\xb6\xf3\x48\xee\x17\xe5\x5e\x2f\xd7\xeb\x75\xd8\x4e\xbe\xd7\xef\x37\x84\x4c\xbf\x97\x69\x3d\x96\xd2\xbd\xa7\xa6\xdc\x15\x70\xaf\xc6\xc5\x26\x82\x3c\x22\xbd\x52\x4e\x68\x54\xb9\x5a\xb5\x90\x79\x4c\x55\xaa\xd9\x24\x46\xac\xcc\x21\xe1\x89\x7f\xac\xa6\x9b\x8d\x72\xae\x5b\xc2\xb9\x64\x39\x55\xa9\x97\x0b\xd9\x1a\xd7\xc4\x99\x7e\xb7\xd3\x8e\x4d\x84\xf3\xd4\xd5\xcb\xd5\x8b\xdd\x4e\xb9\x5b\xeb\xe7\xb3\xe5\x4e\xab\xd4\xed\xf0\xd9\x5c\x5e\x46\xe5\x6a\xbf\xcf\x16\xeb\xa5\x0a\xae\xc9\x45\xb9\x9d\xa9\x67\xdb\x42\xf9\x31\xd5\xcc\x64\x3b\xbd\x5a\xf5\xee\xd2\x0d\x48\xd7\x0d\x47\x8c\x75\x33\x53\xce\xa4\x5a\x3b\x3b\xba\x3f\x6c\x7a\x7a\x73\xee\x81\xe1\x1e\x18\xc7\x9a\xd3\x18\x16\x78\xb8\xed\x16\xc7\xfe\x2e\xd9\xea\xb9\x89\xa4\x7b\x59\xc5\x03\x03\x1f\xfc\x6d\xea\x68\x41\x8f\x6d\xf5\x5c\x3a\xd3\xd6\xdb\x3d\x3b\x73\x40\xe4\x45\x49\x42\xa2\x20\x4a\x1e\x53\xe0\x81\xb9\xfb\xef\x17\xdb\x71\xe3\xc6\x74\x38\x50\xc8\x98\x4c\x55\xfa\xe5\x27\xf3\x05\x02\x00\x7e\x00\xff\xf9\xf2\x7f\x61\xc6\x19\xa4\x00\xf7\x29\xb0\x0f\x0c\xf2\x28\xf8\x85\x80\x03\xbc\x0f\xcc\x97\xed\x16\xa7\xdb\x3a\x25\x8e\xb1\xa0\xf1\xe9\x05\x24\x42\x0f\x0c\xf4\x45\x5a\x52\x63\x38\x72\x09\xc2\x07\xe6\x8b\xaf\xb0\xc1\x0b\x7d\x77\x69\x5c\xea\x05\xe2\x73\x85\x56\x5c\x71\x2c\x16\xf9\x4f\xd5\xf3\x8a\xc2\xa7\xeb\x39\x20\x51\x4c\x3d\x5f\xe6\x08\xe3\x73\xc5\xad\xb9\x12\x44\x11\x7e\xae\x9e\x7d\x0a\x9f\xae\xe7\x80\x44\xf1\xf4\x7c\x61\x2c\x38\x6b\x96\x41\x56\x14\x39\x09\xf0\xd2\xca\xa0\x05\x5f\x0d\x73\x67\x34\xb0\xe8\xeb\xdc\xb0\xa8\x36\xd0\xc7\x64\xf8\xe5\xa7\xe7\xd0\x2f\x46\xed\xbd\xff\xfd\x33\x78\xc3\x16\x04\x60\x65\x5a\x7b\x12\x2f\x4c\xd5\xcd\xaf\xae\x13\x79\x85\xfb\x37\x11\xd9\xb5\x35\x0c\xb1\x24\x62\xc4\xae\x44\x66\x7d\xdb\x1b\x1b\x13\xc3\xb3\x75\x89\x65\x11\xc2\x2c\x40\x82\xc8\xff\xe0\x30\xe6\x45\x80\xb7\x36\xaf\x9a\x9a\x67\xf3\xed\x66\xfa\x70\x22\xa8\x16\xd5\x0c\x67\x40\xc6\xb3\x11\x99\xce\x27\xdc\x16\xc2\x3f\x7f\xf2\xd7\xc8\xc8\x3d\x30\x2c\xe4\x30\x27\x72\x80\xc7\xf8\xa8\x8c\xdc\xd1\xf9\xfc\x0f\x90\x8d\x7d\x60\x58\x1e\x0b\x92\x08\xb0\x88\x91\x2f\x9b\xef\xac\x1c\x6b\xee\x76\xb9\xca\x27\xff\xc3\x34\x81\x00\x10\x5c\x03\x85\x82\x14\xa6\x89\x4b\xbd\xe6\x3f\x4d\x13\x1c\xe2\x25\xcc\xb1\x9c\xe0\x3b\x6e\x96\xfb\x9f\xd3\x44\x44\x46\x7d\xec\xd0\xd0\xa5\x19\xf5\xfa\xe0\xd0\xee\xd2\x55\x40\x9a\x24\xea\x3c\x12\x28\x15\x44\x0d\x2a\x2c\x56\x78\x45\x94\x74\x16\x11\x9d\x47\x10\x2a\x98\x17\x24\xc2\x72\x3a\xd1\x21\x07\x10\xd1\x80\xc2\xb3\x8a\x80\x90\x02\xb0\x42\x25\xe9\xee\xc1\xaf\xae\xba\xc9\x8b\xeb\x8c\xa0\x84\xc1\x77\x00\xbf\x03\xc8\x00\xf0\xd3\xfb\x5f\x70\x0d\x2f\xfd\x04\xe8\x27\x42\x3f\xa0\x80\x05\x9e\x8b\x6c\xe5\x58\x89\x93\x04\xcc\x4a\x82\x9f\x4f\x40\x70\xf0\x78\xa4\x21\xd8\x6d\x5c\xbd\x83\x10\x5b\x0b\xaa\xc2\x0d\x61\x0a\x2b\x20\x8c\x74\x11\xb1\x3a\xc4\x54\x80\x8a\x0a\x74\x5e\x53\x04\x49\xa2\xaa\x84\x11\x16\x30\x56\x14\xaa\xaa\x58\xa3\x12\xe2\x79\x55\x50\x35\x0a\x00\x82\x2c\x47\x20\x84\xd8\x55\xc5\x2d\xd4\x89\xfc\x34\xed\x50\x27\xe1\x8a\xc4\x08\xf0\x62\x64\xab\xbf\xd6\xe0\x78\x89\x3d\xa1\x48\x04\x8e\xab\xd2\xfd\x3f\x31\xa6\x32\x5d\xf6\x45\x4c\x54\x51\xd2\xa9\xa0\x28\x50\x94\x44\x41\xd3\x58\x24\xa8\x14\x4b\x82\x44\x21\x50\x78\xa0\xa8\x1c\xcf\x62\x9e\xf2\x22\x4f\x04\x4e\x64\x31\xcf\xe9\xbc\xa8\x13\xa2\x01\x4e\xc5\xc2\xdd\x6d\x06\x84\xf5\xfe\x77\x44\x2f\x30\x4c\x5d\x2c\x84\x3c\x27\x45\xb6\xae\xf2\x3e\x28\x8a\xe2\x09\x6d\xf2\x37\xd0\xa6\xeb\xf2\x78\x48\x24\x4e\x41\x40\x85\x1a\x2b\x00\x8d\x20\x37\x01\x13\x39\xa8\xf2\x3c\xd0\x38\x48\x30\xd6\x59\x81\x23\x08\xf1\xa2\x22\x08\x22\x55\x00\x91\x54\x45\xc1\xbc\x28\x41\x49\xa5\xde\x24\xbb\xc1\x88\xf8\x89\xd5\x11\xc5\xb0\xa1\xfa\x62\x11\x8b\xc2\xb5\xb9\x6e\xf5\x73\x37\xc1\x95\xe9\x84\x36\x85\x1b\x68\x93\x77\x59\xe1\xa0\xc8\xb3\x2c\xe2\x45\x84\x31\x27\x6a\x10\x68\x92\xaa\x2a\x48\xd1\x08\xa0\x50\x54\x55\x0c\x20\x8b\x38\x4d\x42\x44\x05\x12\x50\x91\x44\x09\x4f\x91\x0a\x05\x0d\x08\x18\x7b\xa6\x73\x83\x11\x09\xd5\x26\x0a\xd5\x17\x02\x2c\x14\x22\x5b\xfd\x2c\x11\x09\x9c\x08\x4e\x68\x13\xdf\x40\x9b\xee\xb2\x42\x47\x48\xc7\x2c\xe6\xb1\xa4\xa9\x18\x63\x5d\xe0\x79\x9e\x2a\x1c\xd4\x38\x0d\xb3\x1a\x8b\x10\x80\xba\x86\x14\x56\xd5\x55\x45\xc2\x94\x8a\x14\x10\xc8\x89\x80\x0a\x9a\x8e\x79\x4d\xbf\xbb\xcd\x88\x84\x6a\x33\x34\xc2\xb0\x48\x94\x58\x3e\xb2\x75\x95\x97\x22\x8c\x4f\x05\x20\xf1\x06\xda\xc4\xae\x5d\x21\xaa\x6a\xbc\xc0\x2b\x58\x83\x2a\xe1\x88\xa4\xb0\x84\x55\x38\x8e\xc5\xee\x54\x51\x88\x26\x61\x16\xf0\xba\x08\xb0\xa2\x11\x49\x14\x89\xea\xba\x74\x51\x61\x35\x15\xb0\x88\x57\xef\x6e\x33\x22\xa1\xda\x0c\xd7\x17\x27\x8a\x28\xdc\x36\xd7\xad\xab\xdc\x16\x02\x7c\x2a\x0a\x49\x37\xd0\xa6\xe8\x6a\x82\x23\x40\xe7\x10\xd6\x34\x8a\xb1\x06\x30\x2f\xaa\x98\x15\x09\xe2\x78\x9d\x52\x22\x10\xa8\x12\x1d\x69\x2c\xcf\xe9\x1c\x42\x04\xb0\x54\x27\x3c\x91\x88\x00\x55\x81\x93\x20\xa6\x77\xb7\x19\x91\x50\x6d\x86\xeb\x8b\x17\x11\x08\xf7\xaa\xeb\x56\x3f\x3f\x46\x22\x12\x4e\x45\x21\x08\x6e\xa0\x4e\xc9\xcd\x6e\x24\x41\x54\x88\xaa\x6b\x92\x84\x05\x81\xe7\x38\x82\x75\x91\x72\xc4\xb5\x25\x05\x71\x80\xa8\x0a\xe5\x45\x40\x24\xc2\xf3\x3a\xaf\x8a\xa2\x24\x51\x16\x73\x9a\x80\x14\x56\x01\xac\x97\xa2\xdc\x60\x48\x56\xa9\xe6\xa1\x66\x70\xa8\xc2\x04\xcc\xf2\xe1\x61\x68\xdd\x8a\x44\x81\xe7\x30\xe0\x05\xe1\x54\x18\x8a\x54\x67\x44\x4a\x1f\xe3\x60\xf4\xa5\x19\x7e\xc8\xf6\x7b\x48\x81\x1b\x86\x0c\x7d\x04\x96\x40\xd9\x9a\xbd\x0c\x4b\xb0\xcc\x7c\x19\x16\x2e\x50\xda\xbd\x0c\x0b\xbf\x5f\xb8\xe4\x2e\xc3\x22\x04\x0a\xba\x97\x61\xc1\xc1\x9a\xe2\x65\x68\xc4\x60\x9d\xee\x32\x34\x52\xa0\xae\x76\xa1\x82\xdd\xb9\xb4\x57\xbb\xba\x50\xc5\x10\x06\xea\x44\x17\x8a\x05\x83\xf5\xa6\x4b\xe5\x42\x81\x6a\xcd\xa5\xfc\x70\x01\x3c\x97\xea\x87\x0f\xd4\x4c\x2e\xe5\x47\x08\xe0\xe1\x6e\xf3\xcd\xc3\x4d\xb6\x27\x4f\x9f\x0f\x7a\x60\x5c\xe6\xe3\xed\xcb\x86\x1c\xfd\xbf\xda\xfb\xee\x4c\xc3\x1d\x47\xb9\xf9\xb7\xb8\xb3\xdb\xa3\xcf\xa7\xda\xaa\x8c\x74\xe1\x21\x02\xaf\x24\xe5\xef\x4d\x5f\x55\x8d\x7a\x60\xe2\x6c\x3d\x7d\xc2\x69\x87\x30\xb5\xad\x7c\xfa\xe6\xdf\xdc\xe7\xaa\xed\xf2\xda\xf2\x6f\xa6\x36\x3f\xfc\x6c\xfe\x0d\x3e\x55\x6d\x57\x94\x5f\x7f\x1b\xb5\xed\x6f\x0f\x6e\x5e\x7c\x7b\xe3\xfd\x4d\x59\xea\x78\xdb\x65\xf6\x97\x9f\xcc\xbf\xe1\x7f\x5c\xee\xd7\x7f\x19\x78\x7f\xdb\xdf\x4d\xfc\xf2\x1f\x9f\xf7\x1b\x1f\xd9\x09\xe5\x7d\xbd\xd1\xb7\x79\x01\x61\xbc\xb3\x27\x78\x5f\xed\x0b\xfe\x85\xcc\xef\x6d\xd9\x6d\x5e\xc0\xce\x96\x65\xe4\xf6\x9d\xb7\x17\x40\xe9\xb5\xae\xef\x7f\x66\x9b\xe9\x13\x0e\x71\x1d\x19\xb9\xbd\x64\x6e\xfb\x22\x1c\x1b\xb9\xe0\xa6\xe4\x27\x8c\xd8\x3f\x7a\x13\xe8\xca\x13\x71\x71\x47\x6c\x2f\x6d\xde\xbc\xb0\xde\x88\xe1\xed\xb6\xda\xef\x33\x95\xe6\xce\xc8\xb4\x8c\x0f\xba\x3a\xa2\xf0\xdb\x8c\xd5\xe7\xfb\xc5\xbd\xa5\xc0\xf6\x45\xfc\xdc\xb1\xba\x66\x12\xfd\x3f\x3c\x56\xbb\xcb\xa4\xed\x0b\xf7\x8f\x18\x2b\xef\x58\xe7\xff\xc2\x60\x45\x2c\xf4\x8e\x7c\x90\x7c\xce\x01\xdc\x70\xac\xd1\x9f\x7e\x5e\xba\x98\x0c\xfd\xc4\xe4\x58\x31\x4f\x0c\x5f\xe9\x47\xe2\x61\x03\x2b\xd3\x4b\xf1\xa0\xc0\x52\xed\x52\x3c\xdc\x3e\x9e\xb0\xca\x4c\x24\x1e\x3e\xb0\x06\xba\x14\x8f\xb0\x8f\x27\xac\x32\x13\x89\x07\x07\xd6\x16\x17\x0f\x98\x18\x48\xf4\x2f\x46\x24\x05\x92\xee\x8b\x55\xbd\x5f\xde\x13\xae\x50\xd2\x7e\x81\x8f\xbd\x42\xb8\xfd\x12\x1f\x7b\x8d\x74\x28\x10\x84\x2f\xe7\x89\x0b\x60\xba\x5c\x4f\xc1\x60\x73\x39\x4f\x42\x00\x53\x78\xa9\xef\xdc\x8f\xa0\x6f\x51\xec\x8b\xfa\x46\xee\x9c\x72\x5f\xe8\x27\xcf\x37\xf0\xd1\x3b\x1f\x33\x69\x0a\x92\x44\xaa\x70\x84\x8a\x12\xe6\x05\xc4\xf2\x02\x87\x54\xa2\xb1\x50\x95\x38\x0a\x91\xa2\xab\x00\x73\x0a\x62\x11\xa5\x22\xa2\x90\x83\x8a\x8e\x01\x24\xbc\x26\x01\x4e\x87\x8a\x7f\x6c\xe5\xaa\xef\x8a\xfc\x2d\x47\x00\x42\x4f\x18\xfc\x80\x58\x40\x30\x74\x83\x71\xd3\xba\x1b\x19\xee\x64\xf7\xc9\x95\xc5\x7c\x7d\x51\x7f\x51\x4a\x6c\x5e\x46\xdd\xce\x73\xc3\x2a\x4d\x9e\x7b\x00\xe8\x39\xd1\x2e\x17\xf0\x04\x64\x1a\xcb\x62\x37\x21\xf7\x90\x0b\xfe\x24\x6f\x9e\xa4\xbc\xff\x04\xdf\x65\x47\x19\xf6\x1a\x42\x06\x9b\xe9\x32\x28\xd7\xef\x97\xfd\x66\x4a\xfa\xe8\x2d\x7a\x9d\x16\x7a\x33\x1e\x8d\xfe\xbc\xa9\xc0\xf4\x62\x52\x2f\x53\xd1\x05\x4f\x75\xe4\xc5\xcb\x2e\xbe\xce\x62\x99\x95\x96\xb2\x2c\x67\xe4\xfe\x73\x5d\x7d\x6c\xb1\x39\x7e\xf4\x3a\x4d\x4e\x86\xb9\x1c\x1d\x4a\x45\x71\xcc\xa9\x30\x33\x6d\x8f\xdf\x5e\xc6\x99\x71\x5e\xb2\x5f\x9f\x2c\x20\x61\x98\x15\x6a\xe5\xae\x4e\x13\x13\xee\x65\x96\x75\x0a\xf7\x76\x01\x18\xf0\xb5\x6c\x38\xbc\x0c\x8a\xef\xdd\xa9\x32\xea\x97\xbb\xbc\x99\xbe\x5b\xeb\xc0\xd3\x43\x7d\x4b\xb9\x1e\x94\xc4\x7b\x7e\xed\xc1\xcb\x19\x8f\xe7\xed\x7b\x61\xfb\xcf\x72\x97\xcb\x02\x3a\xaa\x09\xf2\xbb\x94\x02\x8f\x76\x2e\x33\x5c\xa8\x10\x43\xd8\x96\xc4\xfe\x33\x37\x29\xbf\x4c\xa4\x3a\xe6\x5f\x52\x68\xe1\xc1\x8f\xeb\x65\xde\xef\x99\x3a\x4a\x39\x44\xbf\xfb\xfc\xee\xd0\x3f\x63\x4c\xd3\x34\xc5\xda\x9d\x6a\x3f\xe7\xec\x08\xbd\x8c\x4f\x7f\xa3\x93\xa1\xfb\x9f\x4a\x00\x2e\x69\x24\x92\xa0\x0c\x8a\xb9\x77\x67\xb4\xac\xc2\x71\x1f\x90\xf7\x99\x09\xa5\x6a\xfe\x6d\x51\x4e\xbd\xd7\x78\x27\x99\x51\x53\xfe\x38\xa3\xa1\x63\xd5\xa6\x4f\x27\x14\xb0\x2f\xef\xb1\x27\x38\x26\xe7\xd3\xef\x27\xee\xd5\x00\xbe\x98\xf4\x7f\x79\xf6\xf1\xdf\x5c\x01\xe4\xd3\x40\x1a\xcd\xfb\x64\xb6\x7c\x32\x93\xa3\xa9\xf9\xd8\xd4\x8b\x34\x5f\x6d\x14\x61\x51\x7d\x2a\x36\x8a\x8d\x84\x52\x9a\x10\xe9\x91\x4a\x0d\xfa\x6c\xc0\x29\x5a\xf0\xf3\x62\xa9\xa1\x34\x1f\xad\x54\xb5\xe0\x10\x83\xb3\x68\xbd\x9a\x52\xc7\x33\x96\xeb\xa6\xe0\x9c\xc8\xcb\x5f\xbf\xbc\x94\xda\xfb\x2a\x7e\x7d\x42\xd3\xfd\x6f\x74\x94\xd8\x71\x64\xba\x84\x55\xa2\xeb\x44\x11\x55\x28\x00\x16\x11\x84\x45\x91\x83\x02\xaf\x2a\x40\x41\xba\x0e\x09\x61\x35\xa2\x73\x00\x00\x9d\xea\x9c\xa4\xb1\x90\xea\xaa\xc8\x61\x4d\x53\x74\x85\x92\xed\xf9\xbb\x2b\x1c\x19\x1b\xe5\xc8\x24\x4e\x64\x43\x4f\x4c\x6d\x5a\x77\x53\xca\x6b\x1d\x59\x70\xd2\x1d\x18\xba\xf5\x5a\x15\xca\xb4\x46\x86\xcf\x6f\x15\xd2\x7e\x94\x84\xe4\x87\x6e\x4b\x14\xa8\xa6\x55\x7d\xea\x7d\x24\xbb\xc5\x97\xac\x59\xc2\x2f\x8b\x17\x6f\xe6\x9c\x70\x64\xc9\x49\x69\xd6\x1c\x2e\xac\x65\xa9\xc6\x82\x5e\xaa\xa6\xf7\xf5\x9e\x9d\xcb\x64\xda\xce\xb2\x4f\x48\x46\x7f\x6d\xce\x85\xf7\x49\x71\x32\x4e\x4f\xc8\x7d\xa1\x27\x14\x70\x61\x38\x54\xda\x4f\x15\x53\xad\x6b\x4f\x12\x57\xa8\xc8\x7a\x49\xab\xcb\xd5\xd7\x9e\x52\xa8\xe1\x77\x7b\x49\x69\x25\xf5\x69\x8e\xac\x24\x3c\x53\x03\x3d\x4f\xcc\x82\xd8\xca\x8d\xd3\x09\x3a\x54\x11\x7e\xec\x39\xf9\x52\xe9\xa3\xdb\x11\x97\x1d\xe3\x29\x49\x52\x73\xbe\xcc\x7b\x33\xff\xef\x76\x64\xd6\x42\xaa\x54\xaf\x75\x64\xf5\x63\x3a\xb9\xc4\x91\x88\xdc\x51\x9d\x1e\xc8\x1b\x7c\x56\x8e\xe4\xc9\x78\x6d\x9b\x65\x41\x4c\x3d\x3b\x4e\x76\xf9\x3c\x65\xf3\x10\x27\x47\xc9\x6c\x59\xcd\xe5\x26\xa3\xbc\xf0\x62\xcd\xed\x99\xf1\x34\xab\xf3\x93\x85\x91\xbd\x37\x6a\xef\x85\x42\x0e\xe6\x5a\xa5\x7c\x26\xdf\xd5\x69\x2a\x2d\xe7\xdf\xa7\x6d\x39\x4d\xc6\xec\x7b\x7a\x2e\x5a\x95\xfc\xf4\x59\x1e\xde\xc4\x91\x48\x40\x14\x01\x51\x79\x24\x42\x5e\x23\xaa\xc8\x71\x90\x68\x1a\x60\x59\x40\xdc\x44\x83\xea\x3c\x25\x2a\xd2\x78\xac\xb2\x54\x94\x04\xc4\x51\x22\x29\x3c\x0b\x90\x2e\x40\x22\x7a\x87\x25\x57\x1f\xaf\x5d\xe1\x48\x50\x84\x23\x61\x01\x44\xa1\x87\xa8\xd7\x8d\xbb\x2b\xc1\x6b\xdd\x48\x3a\xca\xcc\x94\xc9\x70\x02\x3b\xac\x36\xe4\x3b\x70\xf2\x0a\xe9\xb8\xa2\xe6\xa0\xf3\xf6\xdc\xec\x97\x9e\xa4\x65\x66\x68\x36\x93\x84\x76\xc5\xb6\x91\x35\xe5\x08\x37\xa2\xf5\xb8\x46\x22\x37\xfa\x78\x15\x13\xd6\xfd\x5c\x7c\x2c\xdf\xdb\x55\xcb\xc8\xdb\x4d\x7e\xdc\x85\x1d\xe7\x5e\xa2\x29\x0a\xa6\xd3\x6e\xa5\xda\xfa\xa8\x0c\xd5\xb6\x42\x2c\xfa\xa8\x58\xb3\x34\x3b\xb4\xc4\xf4\x73\x67\x3e\x51\x27\xb3\x4e\x5e\x5a\xe6\xd8\x5c\xcf\xe9\x2e\x96\x1f\x3d\xb3\xfc\x69\x6e\x24\xc7\x9b\x45\xa7\xa3\x4d\xfb\xb5\x8e\xf6\xf4\xea\xf4\x66\xad\x7c\xd2\x51\xd4\x3e\x98\xa4\x26\xba\x9a\x2c\x94\x32\xc3\xee\x74\xbc\xc8\x16\x46\xc4\x83\xff\xbb\xdd\x48\xc9\x91\xdb\xbf\x8d\x1b\xc1\xed\x6d\xff\xca\x09\x79\x83\xcf\xca\x8d\xf4\x3a\xf7\x19\xfd\xcd\x54\x85\xc5\xa3\x90\xb0\x16\xe9\xf7\x84\x95\x26\xdc\x08\x67\xe6\x4f\x1d\xa7\xa3\xe8\x8b\xde\x70\xea\x14\x79\xf8\x9c\x6e\x8b\x1f\x85\x7c\x36\xc7\xbe\xa2\x67\x56\x10\xea\x92\x59\x4a\xc8\x1c\x54\x66\xd3\xe2\x6b\xa7\x91\x50\x93\xce\x68\x8c\x3b\x96\x58\x81\x42\xea\x36\xf9\x08\x26\x18\x60\x28\x0a\x84\x57\x55\x24\x10\x40\x79\x16\xf0\x9c\x48\x28\x0f\xa1\xc2\x23\x51\x12\x54\x80\x24\xa8\x52\x28\x08\x1a\x07\x34\x22\x02\x5e\x14\x55\x85\x10\x2a\x10\xc2\xaa\x2b\x27\x70\x4d\xa9\x71\xe7\x2b\x8a\x48\x7f\x02\x59\x20\x85\x9f\x48\x5c\xb7\xee\xd5\x84\x7c\x53\x38\x73\x39\xe0\xbb\x94\xc2\x31\x13\xdb\x79\x6f\x1f\x1b\xfe\x64\xb8\x39\x1c\x7d\x92\xf7\x4f\xb2\x83\x3d\x97\x92\x4e\x8e\xd2\x35\x3b\xdb\x7d\x64\x4b\x29\xf3\x69\x5e\x4c\x37\x7a\x73\xa3\x3a\x01\xa9\xe7\x61\xa7\x54\x2e\x3b\xda\x93\x91\x90\x51\x4d\xb7\x52\xf6\x70\xd1\x13\x8d\x8f\x91\x3c\x1e\xf7\x5e\x1a\xaf\x56\xef\xdd\x70\x9a\x8b\x9c\x89\x5e\xea\x23\xa1\x93\x68\x26\x9c\x69\x5d\xb1\xfa\xc3\x7c\xbd\x9e\x8b\xe1\x52\xb2\xbb\x36\x7b\xc4\xa5\xec\xc8\xb4\x63\xfe\x17\x2c\xb1\xb8\x0f\x6f\x8d\xe2\x4f\xc7\x61\x40\x13\xf5\xa0\x7e\xb7\xcf\x91\x25\xce\xce\x94\x4e\xc1\x79\x52\xcb\x9b\xad\xf9\xb0\xb2\xa8\x3b\x69\x9c\x1c\x15\xca\xa8\x4a\x25\xad\xf3\xa8\xe7\x0a\xf7\x45\x83\x2f\x2e\xda\xb5\x8d\x9e\xe5\x62\x3b\x75\xbf\x12\x3e\xc8\xc3\x21\x3f\x47\x1e\x4f\x27\xe9\xeb\xe8\xd7\xd4\x2d\xfd\x0b\x96\x38\xcb\x7e\xfd\xc3\x4a\x76\x9e\x25\x63\xf8\x9a\x53\x8c\x3a\xe8\x60\xf3\xf9\xc9\x91\x4d\x2e\xdb\x34\xde\x71\xaf\xdb\x5f\x2c\xab\x1f\x53\x61\x69\x15\xca\x30\x51\xb0\xb9\x7a\xf1\xa9\xc3\x67\xc8\x2b\x14\x4d\xab\x6d\xbd\xbd\x56\xf9\x4c\x81\x8e\x75\xb0\xc0\x4f\x20\x27\xb0\x85\x24\xc8\x24\x6f\x93\x99\xa8\x82\xa2\x6b\x9a\x84\x74\xc8\x61\xa0\xe9\x92\xa6\x13\x44\x75\x89\xd7\x78\xac\x10\x56\x54\xa9\x4a\x54\x0a\x04\x51\x93\x74\x56\x51\x00\x07\x08\x96\x74\x5d\xc5\x2a\xaf\x49\x82\xaa\xac\xbe\xd7\xba\xea\xe7\x59\x76\x5c\x0a\x17\xe9\x52\x04\x56\x08\xff\x9e\x61\xdd\xba\x57\x1d\xbe\xd6\xa5\x9c\x58\xec\x9c\x70\x29\xa7\x4c\x35\x80\x6f\xeb\x52\x92\x9d\xe2\x4b\xab\xde\xca\x8e\x67\xd9\x92\x59\x19\xa9\x86\x52\x99\x69\x45\xfe\x65\xd4\x90\x60\xb9\x8f\x3e\x1e\xeb\xcb\x45\x82\xf2\xb5\x05\xee\x15\xd4\x6e\x29\x57\x58\xf0\x76\x5a\x1f\xbe\x8f\x48\x29\xf1\xc6\x77\xfb\x5d\x9d\x2c\xab\x5d\x55\xe5\xf5\xca\xb8\x8b\xd5\xc4\xe3\x5b\xae\x56\x2f\xfe\x63\x5c\xca\x32\xa8\xdf\xed\x73\x24\x4b\xb8\x72\x4a\x57\xb8\x2d\x0f\x17\x2c\x36\x3a\xcd\xa7\x0c\xc8\xbc\x3d\x91\x46\xf3\x35\x5d\xe8\x15\x26\x1f\xa5\x5e\x93\x3e\x15\xda\xba\xd6\x64\xab\xe2\x07\xa8\x94\x13\x68\xde\xb2\xee\xe1\x7b\x3e\x6b\x8c\x8c\xf2\xbd\x22\x23\xae\x62\x76\x8d\x85\x48\x3b\x93\xec\x94\xb5\xd3\x9d\x69\xbe\xd6\xfb\x28\x76\xe6\xe8\xf1\x43\x6c\x3c\xbf\xa4\xea\x37\x99\xd2\x8a\xc6\x89\x82\xa6\xb8\xeb\x0b\x8d\x13\x80\x08\xb1\x80\xa1\xca\x11\x9e\x60\x2a\x69\x02\x15\x05\x5e\x25\xac\xa4\x2a\x1c\xa4\x02\xab\x61\x42\x74\x0c\x08\xab\x53\xca\x2b\x48\xd0\xa8\xff\xc3\x3e\xf0\x9a\x73\x34\xe7\x64\x09\x2c\x12\xb8\xf0\x2c\x61\xdd\xba\xb7\x4f\xe3\x9b\xc2\x99\x6b\xed\x78\x59\x42\xdf\x7b\xef\x74\xaa\x99\xb3\x4d\x0b\x25\x36\xcf\x16\x5f\x6e\x43\xbf\x9e\x94\x5e\x26\xa5\x2e\xfb\x8a\x16\xb8\xae\xbf\x8b\x8f\x15\xfa\x92\x51\x60\xab\x55\xe0\x8d\xb7\xd7\x97\x02\x48\x9a\xc3\x9e\x55\x73\xf0\xb0\x06\x05\xb6\xae\xbc\x8c\x58\xad\xd9\x6a\xeb\x34\x6d\x2e\x54\xf0\x28\x13\x7d\x94\xee\xbd\x39\xa3\x8e\x3c\xb6\xcb\xf3\xe7\x71\x72\xf2\xfe\x9c\x94\xfb\xbf\x62\x4c\xef\xdc\xae\xfd\x9e\x5e\x84\xd4\xb7\xfa\x38\xb7\x96\xd1\xe9\xb4\x1a\x2b\x2c\x67\x16\xb2\xfd\x27\x7f\x4c\x7f\x72\x80\xb5\x1d\xf9\x2e\xa8\xb5\x70\xfc\x72\x2b\xef\xd6\x95\x84\xd8\xc2\xf6\x89\xc8\x68\xe6\x26\x32\x1d\x8e\x7f\x4d\x3d\x66\xde\x66\xf5\x04\x32\xf3\xd5\xfb\x0f\x88\x1b\xef\x86\x0d\xc7\x7a\x25\xdb\x9f\xd4\xbb\x43\x6b\xde\xbc\x6f\x79\xf0\x37\xc9\x68\x32\xd7\xd1\xbf\x32\xa3\xc9\xb3\xcd\xfe\xcc\x5d\x23\x27\x9c\x64\xa2\xbc\x14\xdf\x84\x7a\x63\xd1\xa9\x56\x9e\x27\xe5\xdc\x6b\xfd\xb9\x9e\x33\x92\xd4\x16\xd0\x5c\xc6\x3d\xeb\x29\x39\x6f\xe6\x9f\x60\xb1\xda\x90\xb8\x9a\x21\x7d\xd4\xc5\xe4\xec\x3e\x53\xd5\x73\x6c\xb6\x9d\xea\x2e\xe7\x42\xad\x9d\x53\x4a\x95\x5b\x65\x34\x0a\xcf\x6b\x58\x10\x09\x47\x45\x8a\x21\xab\x11\x16\x50\x5d\xa3\x14\x50\xac\x89\xbc\x0e\x58\x89\x13\x75\x49\x11\x74\x0d\x51\x9d\xd5\x08\xd5\x35\x44\x78\x02\x39\x4c\x55\x4d\x40\xda\x9d\x77\x6c\x14\x5e\x73\x28\xed\x1c\xf7\x87\x00\x0e\xf7\x7e\xab\xc6\xbd\xad\xe5\x55\xd5\xe5\xbc\x0a\xc1\xa7\x3b\x3f\x6f\x5e\x6d\xcb\x10\xfe\x93\xdd\xd0\xaf\x27\xc7\xb3\x49\x42\xb0\x16\x7c\x71\xa1\x54\x59\xb9\xd4\x6e\x8e\xf3\xf7\x9c\xa1\x15\xc6\x3d\xa0\x56\x04\x2c\xd6\x7b\x6f\xa5\x7b\x63\x0c\xe6\xf8\x03\x95\xca\xb5\x86\xf6\x51\x6a\xbe\x94\xa7\x4d\xbe\xab\x95\x9f\xc6\x72\x52\x30\xd2\x13\xb3\x54\xe0\xbb\xca\xbb\x56\x2f\xbf\x38\x55\x27\x5d\x97\x6f\xec\xfc\xda\x5b\x7d\x9c\x5b\x81\xb9\xd6\xf9\xc9\xc7\xf4\x27\x07\xe4\xd9\xc9\x37\x2f\xa8\x10\x7d\x8e\xf3\x4b\xce\x49\x4a\xe9\xf4\x9e\xd8\xf4\xb8\xd7\x25\x56\x47\x68\xbf\x2d\x95\x2e\xca\x55\x8b\xc3\xd9\x14\xc9\xcd\xd4\xa8\x90\x9d\xf1\xca\x5b\xb3\xd0\xf5\xfa\xdf\xc4\xf9\x65\xaf\xa3\x7f\xa5\xf3\xcb\x75\x27\x4a\xe2\x75\x9e\x78\x99\x48\x36\xea\xcb\xb3\x46\xa9\xad\x63\xa3\x08\x8c\x8e\xde\x58\x7e\x58\x8b\xb7\xa4\x9e\xb1\x84\x52\xaf\x89\x17\x8f\xaa\x69\xf3\x59\x54\x99\x95\xea\x73\xad\x3c\x7e\x02\xce\xa4\x2d\xe7\x5f\x0b\x35\x32\x34\x9f\xc7\x4f\x8b\x22\x94\xe7\x4d\xc0\x82\xaa\x8b\xfc\x06\xce\x0f\x29\x82\x20\x10\x96\x47\x08\x22\x5d\xc5\x04\x68\x2c\x07\x29\x65\x45\x20\x70\x94\xaa\x58\x24\x84\xf0\x54\xd1\x00\xc1\x2a\x20\x14\xeb\x22\xcf\xf2\x12\x15\x81\x4e\x34\xc0\x4a\xfa\x9d\x77\x78\xf9\x56\x15\x22\x3e\xd2\xf9\x49\x9c\x74\xe2\x73\xfe\x55\xeb\xde\x29\x96\x6b\x97\x73\x27\x8a\xce\xbe\x55\x9c\xb9\x77\xb5\xe3\x2e\x77\x4c\x49\x5f\x4f\xef\xa4\x5c\x16\xd4\x8f\x7e\x76\xd1\x4c\x8e\xb4\x0e\x4d\x73\xba\xd2\xab\xe5\xe7\xbd\x2c\x61\x53\xe9\xd7\xf2\x2c\xab\xab\xf7\xf5\xe2\xd4\x34\x1e\xcb\x4e\x82\x45\xfd\x8e\xd1\x6e\xe4\xca\xef\xfa\x10\x89\x62\xb6\x54\x29\xd9\x4a\xb5\x98\x19\x4e\xb2\x76\xaa\xf8\xec\x0c\xc7\x48\x7f\xc6\x4b\x2b\x21\x2f\x7f\xc5\x71\x7d\xf9\x5d\xdb\x0d\x75\x7d\x4b\xf9\x1f\x90\xf7\xf5\x7f\x1f\xfe\x76\x54\x7d\xc4\x35\x7e\xe2\xb2\xb4\x12\x1c\xdf\xc0\xe3\x8d\x69\xee\x3a\xfa\xe5\x76\x40\x9e\x98\xf4\x57\xae\xf1\xb3\x8c\xfd\x16\xae\x51\x67\x09\x01\x40\x21\x3c\x92\x28\xcb\x29\x44\x52\x81\x42\x04\x56\xe7\x01\x82\xa2\x26\xaa\x18\x8a\x40\x67\x35\x01\xf3\x58\x55\xb1\x40\x25\xc9\x4d\xb9\x78\x95\xa7\x50\xd2\x75\xd7\xb1\xe1\xdb\xb9\x46\x21\xca\x35\x72\x12\x17\xfe\x33\x28\x6e\x23\xbc\x0b\x9c\xa5\xbb\xd6\x33\x06\x23\xe1\x81\x67\x3c\x73\x3b\x2e\xd2\x33\xc2\x96\x5c\x4f\xce\x13\xac\x8e\x7b\x79\x3b\xa1\x3a\x72\x91\xef\xe2\xbe\xf3\xc2\x3d\x2f\xea\x49\x73\xa6\xd5\x00\xff\xf1\xd2\xac\x9b\x4d\x71\x66\xcc\xe1\xe4\x69\x92\x70\x5a\x8b\x74\xab\x97\x79\x4d\xd4\xdb\x73\x7d\xe6\x24\x32\x62\x35\x39\x2c\x39\xd5\x99\x5a\xec\xcd\x2b\x0b\x9e\x3c\xa6\x6e\xee\x19\x7f\xf7\xa4\x50\xfd\x7d\xf8\x3b\xed\x19\xff\x26\xcf\x24\xaf\xc7\x34\x7f\x1d\xfd\xe2\x72\x4b\x3f\x48\x28\x86\x67\xfc\x2c\x63\xbf\x85\x67\x54\xa9\xa4\xab\x10\xf2\x92\xca\xf2\x44\x53\x05\x56\x95\x04\x51\xc0\x12\xab\x6a\x1c\xd4\x81\x20\x01\x91\x15\x81\x22\x4a\x12\xe6\xdc\x55\xa8\xc8\x0b\x9a\x82\x90\x42\x74\x8a\x79\xaf\x60\x28\xde\xce\x33\xe2\x28\xcf\xc8\x8b\x22\x1b\xfe\xeb\x65\xeb\xd6\xbd\x23\xbd\xd7\xba\xc6\x6c\x60\x4c\x6f\xe8\x1a\x77\x9e\x1d\xd7\xd8\x24\x7a\x7e\x96\xf8\x98\x41\xe8\x64\x45\x58\x69\x2c\x14\x79\xfa\x26\x0d\xeb\xd5\x56\x4f\x2b\x77\xb9\xf4\xc4\x2c\x98\xfa\xcb\xd0\xcc\xdd\x3f\x17\x97\x89\xde\x73\xe2\xe5\xbe\xca\x77\x17\xcd\xe7\xd7\x9c\x95\xcb\x22\x34\x4f\x0a\xa5\x69\xfa\x7e\x29\xeb\xf5\xc2\x48\x07\x89\xf4\xf8\x6d\x96\xac\xdf\xda\x35\xfe\x9e\xae\x67\xfb\x3e\xfc\x7d\xf8\xdb\x79\x8e\xb8\xc6\xbf\xc9\x35\xc9\xeb\x31\x2d\x5c\x47\xbf\x50\xd9\xd2\x6f\x9f\x41\x7f\xe5\x1a\x3f\xcb\xd8\x43\x5d\xe3\xc9\xdb\xe6\x83\xef\x83\xd9\x0b\x7d\xdf\xde\xb6\xbf\xbe\x51\xef\xdc\x9b\x73\x02\x58\xbd\x0b\x97\xe4\x74\x7a\xf7\x8e\xbe\x63\x84\x99\xc7\x46\xa1\x22\x37\xfa\x4c\x29\xd3\x67\xbe\x1a\x5a\xd4\x6d\x4c\x81\x2b\x0c\xb6\xdf\xb5\x0d\xb6\x5f\xb3\x0d\x76\x3f\x5b\x1b\xdc\x44\xba\x7d\xb2\xc7\x84\xbb\x88\x31\xa6\x5d\x2d\xd4\xdb\x19\xe6\xeb\x16\xfc\x61\xe7\x5a\xf5\x87\xbd\x4b\xd0\xcf\x54\xcd\x6d\x86\xf5\x6c\xc1\xcf\x1a\xd4\x90\x5f\xa9\x89\xf8\x21\x98\xdb\x4a\x76\x9c\xc8\x29\x49\x4f\xb0\x15\x5b\xf2\xd0\xcf\x76\x22\xbf\x8b\xb9\xad\xf4\x61\x64\x4e\xc9\x7f\x92\xb5\x48\x0d\xf8\x26\xad\xbc\xaf\xac\x7a\x2d\x4a\xa1\x9a\xce\xf4\xe2\x5d\x4d\xe8\x81\x06\xf1\x30\xb5\x6a\x70\x42\xb4\x9b\x85\x6a\x8e\x51\x1c\x8b\xd2\xf5\x0c\x0b\x99\x49\xca\xe6\xf6\x97\x8b\xd9\xd9\xa2\xd8\xe5\x64\x2f\x21\xdd\xe7\xc7\x07\x7e\x38\xb8\x98\xf0\x18\x73\x23\x62\x8f\xae\xe1\xcc\xbb\x9f\x31\x16\x5b\xc1\x5b\x1d\x8f\x71\xe3\xff\x72\xe0\x35\xfc\xf8\x18\xe2\x71\x14\xb8\x32\xf2\xe1\xf0\x76\xc8\xa3\x93\x6c\x40\x5d\xdb\xf0\xda\x2f\xe0\x74\xe5\x97\x7d\x86\x03\xe8\x76\xd9\x5e\xff\xa4\xf9\x1e\xc7\x87\x7e\xc2\xd0\x1e\xd6\xb7\x16\x87\x31\xbb\xbd\xba\xee\x4a\x36\x0d\x2d\x36\x83\xdb\x5b\x61\x1f\x8e\x38\xb7\x48\xa6\xcd\xd9\x60\x76\x2b\xbe\x57\xb8\x76\x59\x0f\x09\x0e\x17\x49\x72\x5c\x00\xe7\xed\x76\x02\xac\x70\x85\xd8\xf4\x85\x22\xec\x5f\xf1\x7b\x28\x84\x39\x73\xad\x72\x64\x5e\x24\xc3\x8a\xf9\x2d\x8e\x4b\x95\x7f\x5a\xd1\xf6\x6a\xb6\x7b\xae\xfa\x7a\x5d\xef\xa3\xdb\x65\x79\xfd\x83\xa6\x7b\x3c\x1e\xe7\x68\x57\xaf\xb7\x62\xeb\x00\x67\x3c\xf7\x76\x8c\x41\xc7\x1f\x12\xe7\x9a\x61\xdd\xe2\xb8\xdc\x24\xa3\xcc\xcf\xb1\x34\xcf\x2b\xea\xfa\x15\xe1\x60\x0f\x4b\x80\x57\x8d\x06\x38\x5b\xdf\xd0\x7e\x9c\x97\xf5\xc5\xde\x63\xd3\x7c\x99\xcf\xae\xe3\x68\x1f\x57\x14\x5f\x07\x37\x94\x1f\xe5\x6f\x46\x0c\x6b\xe0\xdd\x42\x7b\x0b\x0e\x83\xd8\xa2\x78\xdc\xbb\x55\xfd\xe1\xe0\x52\xf5\x87\x83\x9b\xf3\x43\x84\xb8\xc1\x6c\x59\xe1\x89\xe2\xf8\xcc\x98\xe4\x62\xbd\x99\x76\xcf\x50\x6c\xa4\xde\xfc\xeb\x4f\x03\x8e\xde\x1e\x98\xd3\x01\xd1\x34\x8b\xda\xf6\xb5\x0a\x8d\x24\xb0\x97\x1d\xaf\xaf\x6c\xdc\xcf\x47\x7d\xc0\x33\x78\xbf\xde\x0e\x4e\xe1\x8e\xe6\xf8\xc8\x2c\xdb\x47\xb8\xca\x7d\x5c\x7c\xee\x6a\xfa\x62\x7b\x38\x89\x35\x32\xd9\x72\x81\x22\x18\x5d\x45\x2e\x17\xe5\xc6\x88\x6e\xc4\xed\x31\xd4\x91\x41\x33\xae\x25\xef\x20\xbf\xb5\x31\xec\xa1\xbe\x24\xca\x87\xa3\x9b\xcc\x4c\xcb\x75\x7c\xab\xeb\x7a\x6f\xaf\xe8\x20\x85\x68\xf6\x03\x1d\xe2\x0b\xb3\x72\x3d\x17\xae\x0f\xe3\xe9\x7f\x87\x46\xa4\x24\x3b\xb0\xf1\x85\x98\x59\x74\x61\x98\x73\xfb\x2f\x91\xe6\x18\xb1\x48\xb1\x8e\x75\x8a\x2f\xdf\x7a\xe9\xfa\x69\x32\xad\x09\x44\xca\x11\x5a\x63\xd8\x47\xbd\xfd\x15\xb4\xcf\x98\xda\x41\xec\x47\x97\x1d\xe7\x4e\xf0\x7d\xa4\xfb\x89\xeb\x8d\x66\xf8\x29\x12\x71\x64\x88\xc8\xa6\x4f\x12\xbb\x5d\xf8\x3a\x44\x1c\x8b\xf7\xe8\x20\xb6\xbb\xc4\xf9\x0c\xb3\x39\xc4\x7f\xf1\x02\xcb\x4b\xe2\x36\x81\x7c\x5d\xd7\x19\x28\xa6\xf9\x72\xb1\x96\x4f\xe0\x8c\x4c\x11\xbe\x7e\xd5\xa8\x43\x8c\xb1\xcd\x7c\xff\xd7\xbf\x98\x3b\xdb\x1c\x6b\x3b\xbb\x06\x77\x3f\x7f\x3a\xf4\xcd\xf9\xf6\xed\x81\x09\x07\x54\x4d\x2d\x1e\xa0\x5f\x01\x0d\x07\x55\xcc\xf9\x70\xe4\xc4\x22\xbf\x07\x7a\x9a\x81\x3d\xd0\x00\x0b\xdf\x98\x6e\x3e\xd3\xc8\xf8\x46\xc6\xfc\x62\x10\x3a\x55\x35\x77\xb3\xef\xfd\xd7\x81\xbf\xb0\xd9\x94\x4f\x06\xfa\x4e\x85\x3c\x5b\xba\x4d\x91\x5c\xa3\x51\x25\xf1\x30\x4e\x98\x6c\xad\x91\x29\xe4\xaa\x7e\x41\x3c\x00\xf1\x8d\x69\x64\xb2\x99\x46\xa6\x9a\xca\x34\x0f\xd2\xdd\x88\xfd\x83\x50\x4d\xac\x16\x74\x7f\xbb\x1e\x76\xf9\x38\xa6\x85\xf5\x5a\xf9\xa8\x0e\xbc\x12\xfe\xf9\x1a\xd8\xac\x6a\x7f\x07\x73\x08\x61\x66\x5f\x17\x87\x40\x37\x36\x8a\xe0\x42\xff\x77\x50\x48\xb8\x69\x1c\x54\x52\xe2\x5a\xc7\xa3\x69\x3b\x43\x8b\x36\xeb\x65\x46\x23\x0e\x71\x4d\x8c\xd1\xe6\x93\x19\xa3\x9a\x93\xd9\x98\x3a\xd4\x93\xe1\xff\x0f\x00\x00\xff\xff\x9a\x11\x8f\x21\x94\xaf\x00\x00") + +func allow_trustHorizonSqlBytes() ([]byte, error) { + return bindataRead( + _allow_trustHorizonSql, + "allow_trust-horizon.sql", + ) +} + +func allow_trustHorizonSql() (*asset, error) { + bytes, err := allow_trustHorizonSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "allow_trust-horizon.sql", size: 44948, mode: os.FileMode(420), modTime: time.Unix(1508958213, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _bad_costCoreSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x57\x93\xa3\xba\xf6\xef\xb3\xe7\x53\xb8\xe6\xe5\xec\x5d\xee\x39\x06\x44\x9c\xb9\x73\xaa\x30\xe0\x6c\x30\x36\xc6\xe1\x9e\x5b\x53\x42\x08\x8c\x1b\x03\x4d\x70\xfa\xd7\xff\xbb\xdf\x72\x0e\x6d\x77\xf4\x9c\x50\xb5\x79\xe8\x80\xc4\x5a\x3f\x2d\x2d\x49\x2b\x08\xf1\xed\xdb\x97\x6f\xdf\xf2\xed\x30\x49\xdd\x18\x77\xf5\x66\xde\x86\x29\xb4\x60\x82\xf3\x76\x36\x8d\xbe\x7c\xfb\xf6\xe5\x4b\x57\x31\xf2\x49\x0a\x53\x3c\xc5\x41\xfa\x2b\xf5\xa6\x38\xcc\xd2\xfc\xcf\x3c\xf1\x63\x53\xe4\x87\xe8\xf1\xf9\x5d\xe4\x7b\xeb\xda\x38\x40\xa1\xed\x05\x6e\xfe\x67\xfe\x6f\x3d\xa3\xcc\xff\xed\xc7\x9e\x5c\x60\xc3\xd8\xfe\x85\xc2\xc0\x09\xe3\xa9\x17\xb8\xbf\x92\x34\xf6\x02\x37\xc9\xff\xcc\x87\xc1\x8e\xc6\x18\xa3\xc7\x5f\x4e\x16\xa0\xd4\x0b\x83\x5f\x56\x68\x7b\x78\x5d\xee\x40\x3f\xc1\x67\x6c\xa6\x5e\xf0\x6b\x8a\x93\x04\xba\x9b\x0a\x73\x18\x07\x5e\xe0\xfe\xd8\x61\xc7\x30\x46\xe3\x5f\x11\x4c\xc7\xf9\x9f\xf9\x28\xb3\x7c\x0f\x3d\xe4\x23\xf7\x17\x82\x29\xf4\xc3\x75\x35\xb9\xa3\xb5\xf3\x35\x55\x56\x06\xbb\xf2\xbf\x27\x9e\x1b\xe0\x38\x81\x08\x85\x59\x90\xfe\xb8\x56\x03\xfb\xbe\x17\xb8\x5e\x92\x64\x38\xf6\x02\x1b\x2f\xae\xd6\x42\x11\x0e\x66\x89\xb5\x4c\xf0\xd3\xb5\xf2\x28\xf6\x10\xbe\xf9\xb4\x8f\x6d\x17\xc7\xb7\x9f\x1e\x7b\x49\xea\x60\xfc\x62\xf9\xcd\x42\x2b\x5b\xbe\x8e\x7f\x27\x00\x0b\xfa\x30\x40\x38\xf9\xf1\x45\x6c\x1a\x4a\x27\x6f\x88\xa5\xa6\x92\xd7\xd4\xe6\x70\x5f\x31\x5d\xac\x99\x85\xf1\x32\xbf\x21\x22\x69\x6a\xd7\xe8\x88\x35\xd5\xc8\x1f\x4a\x7e\x45\x8f\x78\xf9\x12\x05\x07\xe3\xdb\x44\x8e\x85\xaf\xd1\x89\xb3\x24\xf5\xbd\x00\x27\xcf\xa9\x1c\x8a\x5e\xa1\xb1\xe6\x83\x37\x4a\xff\x8c\xc6\xb1\xe8\x35\x1a\x5b\x15\x7a\x4e\x60\x7b\xff\xb5\xa7\x51\xf4\x94\x85\x71\x36\xbd\x42\xe0\x50\xf4\x0a\x8d\x28\xb3\x92\xcc\x7a\xf6\xfc\xf6\xf6\xeb\xcf\xfa\x5e\x32\x7e\xca\x70\xf6\x5c\x06\xa7\x85\xaf\xd1\xc1\xd7\x64\xb0\xb9\xfb\xca\x93\xa1\xe3\x5c\x7b\x74\x7b\xfb\x95\x67\xb7\x03\x67\x8c\xa1\x7d\x8d\xc4\x59\xe9\x1d\x29\xed\x86\x2b\x7e\xfa\xf5\x22\xc9\xdd\x98\x7a\x4e\x6d\x5f\xb0\x83\xb4\x29\xde\x3e\x7e\x39\xc8\xae\x17\x1e\x87\xc8\xd5\xf2\x83\xf2\x5f\x2b\x3d\xaa\xf5\xd5\xd2\xad\xce\x5e\x2d\x3a\x68\xe3\x8d\xd2\x17\x20\x6d\x35\xf1\x46\xc9\x41\xc3\xae\x96\xe3\x1b\x70\xb6\xea\x71\xad\xe4\xac\xaf\xae\x55\xd8\x8b\x7f\x57\xa6\x0c\x0c\x45\xed\xd6\x34\x35\x1f\xf9\x91\x9b\x3c\xf9\xbb\xfb\x5d\xa9\xaa\xb4\xc4\xdd\x43\x3f\xbe\x6c\x57\x50\x15\x4e\xf1\xf7\xfd\xbd\xbc\xb1\x8c\xf0\xf7\x5d\xc5\x1f\xf9\x2e\x1a\xe3\x29\xfc\x9e\xff\xf6\x23\xaf\xcd\x03\x1c\x7f\xcf\x7f\xdb\x2c\xac\x52\x47\x11\x0d\xe5\x92\xde\x97\x33\x8a\xe7\x85\x3b\xc2\x92\xd6\x6a\x29\xaa\xf1\x02\xe5\x6d\x85\xbc\xa6\x9e\x13\xc8\xd7\xba\xf9\xbf\xed\x17\xdf\xfd\xbd\x64\x43\xe4\x6f\x97\x9c\xf7\x8d\xde\xf1\x3c\x48\xe3\xd5\xf6\x1c\xe5\x56\x2b\xe7\x55\xcd\xc8\x2b\x83\x5a\xd7\xe8\xee\x09\xe6\xfb\x35\xa3\x7a\x80\x75\xba\x0a\x9f\xb1\x7f\x2e\xfd\x0f\x34\xfe\x19\x91\x8d\x00\xda\xcd\x62\xe4\xae\x6d\x9d\x28\x0e\x11\xb6\xb3\x18\xfa\x79\x1f\x06\x6e\x06\x5d\xbc\x11\xc3\x1b\xad\x86\x75\x35\x1b\x3b\x30\xf3\xd3\x5f\x29\xb4\x7c\x9c\x44\x10\xe1\xb5\xa9\xf3\xb7\x8b\xd2\xb9\x97\x8e\x7f\x85\x9e\x7d\x62\xbd\x9c\x35\xf6\xa0\x79\xbb\x36\x6e\xd4\xf2\xd8\xc2\x7d\xef\xef\x9b\xf9\x23\x6f\x1c\xd8\x7d\xcf\x9f\xca\x7e\xab\xcf\x87\x09\xe6\x8f\x2f\xf9\x7c\x7e\xff\xaf\x67\xe7\xd1\x18\xc6\x10\xa5\x38\xce\xcf\x60\xbc\x5e\xfd\xff\x60\xd8\x3f\x37\x7d\xa4\xf6\x9a\xcd\x87\x4d\xed\xdd\x52\x9f\xb7\x3c\xd7\x0b\xd2\x8b\xc2\x04\x3f\x05\xd9\xf4\x7a\x59\x90\x4d\x93\xcc\xc2\x41\x1a\xaf\xcd\x34\x2f\x48\xb1\x8b\xe3\x8b\x3a\x5e\xe0\xf8\x70\x6d\xcd\xd9\x38\x49\xaf\xc3\xd9\x56\x1c\x87\x53\x6c\x87\x53\xe8\x05\x57\x6a\x01\xea\x12\x74\x3a\x8e\x71\x32\x0e\x7d\x3b\xc9\xa7\x78\x71\x89\xcc\xf1\xa1\x7b\x0b\x91\x0f\x93\x74\x1a\xda\x9e\xe3\x61\xfb\x46\x95\x6b\x33\xf4\x4e\x4a\xbf\x36\x36\x6a\x5e\xaa\x2a\x52\x23\xff\xc7\x1f\x7b\xd9\xfd\xe3\x67\x9e\xf8\xf3\xcf\xdb\x4f\x9f\x89\xea\x82\xc6\xb9\x18\xb7\x94\xbe\xfc\x79\x39\x3c\xce\x27\xb3\xfb\xa8\xcd\xf9\x52\xb7\xd5\x9d\xdd\x3d\x98\x8c\x8f\xfd\xf0\x07\x4b\x5f\xca\x3f\x8a\xf1\xec\xd5\x4a\x56\x86\x1e\x71\xea\x7b\x49\xfa\x6a\xd5\xc3\x4a\xba\xef\x92\xed\x6d\xe4\x87\x09\x5e\xfb\x1a\xd7\x35\x70\xed\xbb\x5c\xeb\xff\x9b\x0b\xf6\x81\xde\x45\x1f\x1c\xf9\xdc\xe8\xc9\x5b\xeb\xfe\x39\x99\x63\x2b\x6e\x75\xe3\x6e\xb5\xba\x4f\xff\xed\x0c\xa6\x3f\x76\x23\xd5\xf7\x71\xfc\xc6\x31\xbf\x79\xd2\xb3\x6f\x8d\xf9\x8d\xa3\x03\x93\x04\xa7\xe9\x32\xc2\x37\x46\xc9\x69\x35\x14\xda\xf8\x0a\x63\x92\xfa\xf3\xac\xee\xd6\xf7\x78\x69\x1a\xd8\xfa\x28\xaf\xb1\x3e\xa9\xf5\x1a\xe7\x53\xa7\xe7\x25\xc6\x70\xba\x1e\xa9\xd7\x05\xb2\xf1\xd9\x82\x1b\x58\x36\x85\xb7\x66\x92\x4d\x61\xde\x0e\x33\xcb\xc7\xeb\x31\x83\xbc\xc4\x0b\x83\xdf\x36\x5b\xed\x4c\xe5\x6d\x5b\x2e\x74\x73\xd7\xc0\x1b\xfa\xbd\x7b\x72\xa7\x17\x17\x8f\xee\xb5\xe5\x96\x52\x6f\x6d\xb3\xfb\xe8\xf4\xd6\x7d\xd8\xaa\xb4\x17\x5d\xeb\x59\xe6\xd9\x5c\x14\xc6\xe9\x41\x36\xb2\x52\x16\x7b\x4d\x23\x4f\x5c\x2e\x56\x78\x91\xc2\x34\xc5\xd3\x28\xcd\xaf\x07\x7a\x92\xc2\x69\x94\x5f\xaf\xd3\x61\xb6\xbd\x93\x5f\x85\x01\x7e\xbe\xc4\x39\xd0\xf3\xb3\xf8\x64\x81\xbb\xc5\xe1\x99\xb7\x73\xf2\xf0\xf3\x29\xff\x40\xf6\x46\x87\xec\x1c\xa6\x30\xbe\xec\xc7\x3f\x36\xcd\xfd\x47\x9e\xf8\x33\x2f\xaa\x72\x7e\xfb\xef\xff\xf9\x99\x67\x19\x06\x30\x7f\x5e\xed\x9e\x53\xd3\xfa\x4e\xbd\x74\xea\x2c\x9e\x2e\x1c\xb7\xe6\x8a\x8d\x67\xbd\x9e\xa9\xaf\xc2\x5b\xfb\x04\x77\x03\xb6\xf6\x80\xb7\x90\x62\x9c\x9c\xce\x87\x57\xcc\x88\xf5\xf0\x8a\x31\x3c\x0c\xad\xe7\xe8\x4e\xfc\x99\xfb\x20\x3c\x12\xdc\xa1\x0c\x42\x1b\x9f\xc1\x7c\x3e\x5d\x3f\x5b\x1d\x2f\xca\x71\x30\xc3\x7e\x18\xe1\x57\xd6\xc2\x23\xeb\x4f\xac\x60\x27\xee\xdf\xdd\x04\xb2\x0f\x7c\x6c\x05\xf2\x94\xe0\x37\x18\x0c\x30\x49\x5f\x13\xcb\x9a\xd0\xeb\x22\xd9\x87\x56\xce\x28\x5e\x8a\xe5\x8c\xdb\x4d\xd1\xec\x9c\xe6\x3b\xc9\x65\x17\x4e\xfa\x88\x4d\xbf\xe5\xf5\x88\x97\x6f\xaa\x3d\xc7\x9e\x3b\x4e\x9f\x09\xf1\x4a\x03\x8f\x31\x83\x3b\xb5\xf1\x18\x76\xfb\xe3\x38\x51\x04\x70\x8a\x5f\x1c\xb6\x2f\x4d\x27\x27\x51\x8f\xfb\x60\x3c\x09\x2f\x7e\xa4\x2b\x5e\xb3\x65\x5e\x32\x4d\xae\x91\xba\x6d\xf0\x5c\xba\x48\xbe\x37\xf5\x6e\x58\x34\x2f\xfa\x7c\xf7\xb3\x47\x4e\xc2\xaf\x1f\xf2\x9f\x4e\x9e\xdf\xb6\xe6\xe2\xf1\x5d\x13\xff\x71\x7d\x38\x9e\xc5\xc7\xee\xa4\x0b\xa7\x21\xeb\xad\x36\xa4\x8b\xb3\xc9\xfb\x0d\xae\xcd\x65\x3f\x2d\x36\xc1\xf8\x9b\xa5\x68\x0c\x03\x17\x5f\xf5\x73\x6f\xc5\xcb\x3f\x3e\xbb\x1f\x03\x8e\xf7\x12\xd8\xbf\x58\x5a\x56\x68\x2f\xaf\x89\x2a\x5d\xc4\x38\xc9\xfc\xab\xeb\x41\xba\x98\xe2\x57\x1d\xc9\x63\x56\xe3\x23\xd2\x95\xd7\x9e\xaa\x13\xc6\x2f\xc5\x7f\xf2\xb2\x68\x88\xb7\x45\xbd\x8b\x75\xb5\x87\x27\xe1\x9e\xc3\x54\xf4\xb0\x1f\xd2\x0f\xbb\x90\xcd\xc3\x79\x78\xe6\xe1\x3c\x12\xf3\x70\x12\x6f\x79\x38\x09\xa6\x3c\x6c\x07\xff\xc3\xd9\x38\xff\x33\x5f\xee\x68\xad\x7c\x92\xda\x5e\xf0\xe3\x4b\xa5\xd4\x69\x0f\xab\xb5\x26\x25\xd5\x40\x59\xd5\xe9\xd2\xa0\x59\x6e\xa9\x72\xb3\x5c\xef\xa9\xed\x1e\x55\x1d\x82\x51\xab\xdc\xad\x6a\x6a\x4f\x52\x34\xb1\xdb\xe7\x74\x89\xd3\x06\x54\x35\x27\x6c\x2f\x76\xf7\x9b\x23\x88\x1c\xc8\x11\xb9\x7f\xaa\xb9\x9c\xa8\x8b\xa2\x28\xfe\xfc\x99\x23\x72\xd4\x97\x8a\xa8\xc8\x46\x9d\x6e\xb7\x95\xb2\xd9\x67\x06\x26\xd5\xe5\x9a\xbd\x41\x49\xa9\xaa\x7a\x6b\xc0\xe8\x54\xa5\xc5\xb0\x54\xa7\x5e\xd1\xf4\x0a\x57\x31\x25\x85\xa9\x82\x6a\xad\x44\x9b\x7b\x06\x02\x41\xe4\x78\x86\x17\x04\x40\x33\x02\xc8\x91\x97\x1c\xc0\x97\x8a\xd8\xe9\x96\xeb\xea\xa0\x5e\xab\x6a\x6c\xaf\xd9\x2b\x35\x80\x5c\x1a\x36\xcc\x6e\x6d\xa4\x70\x5d\x89\xa3\xba\x8c\x3c\x2c\x49\xd5\x1e\x27\x37\x9a\x14\xd5\x1b\x34\x4c\x99\x6b\x0d\xda\xef\xe0\x20\x77\x4b\x92\xae\x01\xba\xda\x6f\x57\x7a\x15\xbd\xdb\x06\x7a\xa9\xac\x0c\x4c\xa3\xdb\xa1\xda\x7d\x9a\xed\xd5\x2a\x46\xd5\xec\x57\xfa\xf5\x8a\xde\xa8\x02\xb1\xac\x56\x07\xd5\x81\xba\xe7\xc0\x9f\x72\xa0\x9f\x73\xa0\xbf\xfc\xf3\xef\xb7\x74\xeb\x76\xa4\xe8\xcd\x0a\x76\x11\x18\x3a\xc6\x84\x1e\x0e\x81\x9f\x87\x8b\xe8\xce\xc3\x71\xe4\x3e\x1c\xc3\x36\x0f\x9b\x10\xcd\xb9\x02\xb1\xc0\x16\x78\x87\x01\x2c\xc6\x2c\x6f\x93\x16\xc5\x59\x8c\xc5\x0b\x0e\x05\xa0\xc3\x00\x92\xb4\x38\x86\x15\x20\x45\x3b\xd0\x21\x69\x02\x40\x9b\xb0\x18\xca\x62\x01\xb0\x08\xce\xc2\x82\x90\x23\x3e\x79\xe5\x18\x8e\x82\x14\x06\x94\xe3\x50\x34\x0f\x09\xce\x22\x30\x47\x38\x36\xe9\xb0\x36\x20\x79\x44\x3a\x10\xd9\x14\x61\xb1\x08\x11\x3c\x02\xc0\x66\x38\x8e\xa1\x18\x81\x67\x79\x92\x62\x20\xc9\xe6\xc8\x1c\x91\x13\xff\x63\xaf\xd2\xa0\xe1\xd1\xcb\xe2\xb2\xdb\x28\x71\x72\x20\x0b\x55\x8a\x58\x4c\x4a\x85\x84\x70\xd3\x64\x5e\x9b\xaf\xc8\x81\xdd\xed\x0f\x61\xa9\x0e\xcb\xee\xba\xbe\xa2\xd2\x4d\xb8\x8a\x28\xfd\x55\xca\x23\x71\x40\xd2\x9b\x6a\xa5\xc7\x7f\x41\x43\xee\x7a\x7d\xc1\x16\x8b\x68\x0b\x50\x36\xa4\xb0\x8d\x29\x24\x30\x02\x8b\x2d\xc7\x66\x11\x87\x58\x16\x23\xc1\x66\x29\xcc\x72\xc8\x66\x49\x86\xe5\x04\x96\x86\x2c\x4b\xd2\x16\x09\x48\x92\x67\x48\x4a\xc8\x7d\x5a\x71\x05\xc4\xb2\x36\xc6\x02\xc6\x98\x87\x04\xed\xd8\x0e\x89\x69\xde\xc6\x8e\x40\x93\x02\x25\x08\x3c\xc4\x24\x0d\x10\x6d\x21\x86\xb3\x69\x01\x03\x9a\x77\x18\x9a\xa2\x28\x96\x60\x09\x81\x87\x39\x2a\x47\xd2\x0c\x10\x78\x96\x63\xc8\xad\x02\xf6\xdb\xa3\x09\xa9\x66\x4c\x48\x58\x75\xae\x4f\x07\x4b\x6d\xd6\x5b\x54\x80\x19\x85\x8f\x85\x59\x59\xd4\x52\x89\x6c\x50\x2d\xae\xc4\xb1\xa3\x26\x8b\x33\xb9\xbe\xa8\x31\xe1\xa0\xcd\x0d\x63\x6d\xac\x34\x16\xc3\xc2\xc4\x91\x0b\xb6\x10\xb6\x65\x79\x2e\xb6\xc4\xe2\x63\xcd\x67\x8d\x8d\x56\x88\xe6\x53\x68\xcc\xe6\xeb\xbf\x6a\x87\x1f\xdb\x29\x48\x39\xfe\xbf\x2e\x97\xb7\x7f\x0a\x2e\x5b\x12\x64\x45\x5d\xc9\xe9\x53\x55\xa6\x01\xfb\x18\x7a\xcd\x45\xa7\x21\x0f\x6b\xab\x71\x32\x59\x3e\x19\x84\xc5\xa4\x86\x5e\xf3\x33\x34\x4a\xb9\x88\xcb\x3c\xd7\x10\x78\xdc\x55\x39\x46\x1f\x35\x46\x5e\x56\x96\x17\xcd\xc5\x80\xac\xd3\xc4\x84\xd4\xbd\xba\x3b\xac\x7b\x1b\x28\xb5\x2b\x0a\xaa\x24\xd7\x3a\xf9\xa8\xa0\xe2\xf2\xb7\x69\xd2\x6f\xba\xbe\x60\x86\x06\x1c\x0d\x28\x47\x10\xb0\x03\x2c\x68\x91\xc0\x62\x29\x96\xe5\x58\xc4\x62\x8e\xb4\x39\x1b\x13\x3c\xb4\x80\xc0\x10\x0e\x02\x8e\x00\x31\xc3\xda\x48\x80\x02\x0d\xb1\x8d\x78\x2a\xf7\x69\x0d\x87\x02\x24\x10\xcf\xb1\x82\x03\x18\x82\xe1\x90\x4d\x32\x0e\xc1\x5a\x24\xb2\x05\x8c\x18\x82\xb0\x6c\xdb\xb6\x48\x8b\xe0\x31\x69\x51\x3c\x63\xd1\x14\x05\x2c\x9a\xb1\x2c\x92\xdf\xcc\xa0\x39\x70\x54\x50\x6a\xab\xa0\x38\x4d\xba\xab\x26\x6c\xa6\x74\xe2\x8f\xac\xb8\xd8\x5f\xf0\xa3\x6c\x69\x0f\xb3\x11\x4f\x8e\xcd\xc0\x7f\x8c\xa6\xe5\xa6\xb2\xa8\x94\x95\x68\x31\xc4\xad\x26\x39\x55\x88\x72\x59\xd3\xd8\x05\xad\x0d\x9a\x2b\x2f\x8b\x9d\x72\xc7\xe8\xac\x74\x27\x58\xc8\x8f\x1a\x18\xfb\x11\xd3\x45\x1b\xd2\x6b\x05\x9d\x9f\x08\xb0\x31\x2f\xf5\x9d\x46\xe3\x49\x14\xcd\x58\xe4\xa3\xd4\xa4\x93\x85\x4b\x36\xe5\xf2\x4c\x03\x1c\x6f\x0d\xa6\x26\x57\x50\xf5\xda\x40\xa4\xa9\x28\x6c\x8d\xa9\x60\xd5\x2b\x3b\x6a\xd9\x29\xc5\x55\x35\x48\x7a\xe2\xcc\xa6\x16\x49\x8d\xb6\x1a\xe5\x54\xaa\x71\x1d\x2b\x19\x32\xf3\xe2\x46\x99\x5a\x57\x14\xb0\x4a\x5c\xeb\xc4\xff\x6a\x05\xa4\x39\x81\x07\x2c\x20\x30\x6b\x3b\x3c\x16\x10\xe4\x1c\x40\x60\x64\x63\x87\x16\x78\x0b\x22\x02\xb1\x96\x43\x61\x1e\x42\x87\xc2\x8c\xc3\x71\x1c\x4f\x61\x81\x26\xb1\xb3\x56\x0e\x40\xe4\x3e\xad\xc1\x14\x6b\x53\xa4\x40\xd0\x16\x0b\x05\x9b\x45\x90\x70\x38\x08\x2d\xc8\x93\x1c\x8b\x09\x1e\x60\x0a\x5b\x04\xa6\x69\xcb\xa1\x11\xb4\x19\x9e\xa7\x21\xcb\x53\x14\x62\x59\x9e\x40\x9c\x23\xb0\x39\xfa\xa8\x80\x60\xa7\x80\xa6\x6c\xcb\x4d\x26\x98\x69\x6c\x62\xa4\xde\x28\xb0\x2a\xcc\x82\x14\xe8\xda\xd3\xca\xd7\x8b\x72\x01\x32\x7d\x50\x7f\xea\xc5\xe9\x52\x72\xe7\x58\x56\x41\x92\x29\x45\xd2\x5b\x71\xa1\x56\x75\xa7\x0c\xa3\xb6\xfa\x6d\xb3\xd4\x36\xc6\xb3\xd1\x48\x93\x88\x47\xd7\xf4\xa4\x32\xbd\x21\xbd\x51\xc0\x13\x9d\x68\x0f\xa6\x7c\x0d\x49\xd5\xbe\x30\x84\x59\x99\x2b\x4e\x59\xa3\x60\xe8\x5d\x77\xd6\x79\xe2\xa4\x27\x06\x44\x44\x5d\xa8\xc8\xf4\x2c\x18\x88\x53\x62\xfc\xa8\xa4\x4f\x41\x7f\xe9\x0a\xec\x13\xeb\x0e\x2c\xd7\x2d\x34\x63\xf9\xb1\x5b\x34\x1a\xe4\x70\xdc\x80\x52\xb3\x02\xc5\x45\xd1\xdf\xcc\x80\xfa\x15\x05\x6c\xf0\x17\xfd\x57\x12\xff\xdb\x15\xf0\xb6\x51\x7b\x25\x6f\xf6\x66\x6b\x76\x9f\x26\xdb\x67\xc8\x1e\xf6\xe9\xaf\x87\x67\xa9\xae\x87\x67\x59\xad\x87\xf3\xdc\xd5\xc3\x65\x86\xea\xe1\x32\x19\xf5\x70\x96\x72\x7a\xd8\x25\x96\x1e\x76\x49\xa4\xdd\x6f\x7b\xf7\xfb\x2d\xfe\xd6\x47\x5d\x09\x32\x47\xe6\x94\x5e\x27\xf7\x09\x02\xbd\xae\xfc\xf1\xc7\x99\x4b\xb3\x9b\xcc\x51\x04\x91\x23\xfe\x4e\x10\x97\x45\xe4\x2b\x2e\xcd\xf3\x04\xd3\x9b\x3b\x7f\x97\x4f\xf2\xa2\x87\x4d\x9e\xe8\xe1\x34\x11\xf4\x70\x9a\xdf\x39\x97\xfa\x0b\x58\x6e\x65\x53\xde\x0e\xe9\x2c\x79\xb2\x75\x9b\x1e\xb6\x31\xcd\x77\x80\xb8\xcc\x99\xbc\x87\xfd\x26\x45\xb2\xc9\x8e\x3c\x1c\x52\x20\x6f\x65\x7d\x23\x21\xf2\x66\xf6\xa7\xf9\x8f\x6d\xea\xe3\xcc\x75\xdc\xa7\x32\x2e\x07\x41\x43\x57\xe5\x92\xa8\x0d\x9a\x8c\xd8\x16\xfb\xba\x3e\x1c\x8d\xfa\xb4\x29\xf6\xd8\xa6\xa6\x36\xa5\x6a\xaf\x29\x55\xc5\x0a\xd7\x18\x50\x74\xa5\x32\xd4\x3b\x7a\xbf\xc1\xb6\xa4\x7e\x6e\x67\x85\xa8\xbd\xca\x44\x2a\x91\xa4\x20\xf2\xe5\x50\x5f\x04\x6a\x66\x96\x8c\x25\x50\xfb\x35\xa1\xec\x69\x22\x20\x07\xe4\x7c\x91\xe8\x13\x69\x39\x3b\x4e\x47\x1b\xb3\x56\xda\xfc\xb9\x9e\x50\x15\x77\x16\xb1\x74\x2b\x50\x26\xd3\x31\x2a\xa6\x5e\xc2\x2a\x7a\x5c\x9e\xb0\x2a\xdf\x66\x00\xe5\xf2\xad\xb6\x28\xce\xe5\x82\xee\x0d\x22\x6d\xf3\x50\xa9\xff\x34\xd6\x8a\x9b\x3f\xdd\xc3\x8f\xd2\x81\xde\xf6\x7f\x79\xfd\xa3\xe5\x1e\x98\x96\x32\x02\x9b\x3c\x53\x82\xbc\xa6\x13\xd2\xa2\x3c\x12\xbb\xa5\xa1\xd0\xca\x2c\x99\x9d\x8b\xae\xf2\x58\x94\x64\x85\xe9\x17\x47\x7a\xcb\xa4\x37\xe4\x66\x28\xa8\x17\xe3\xae\x8f\x33\x43\x9f\x36\x1a\x1e\xcd\x2f\xaa\x3e\x98\xa2\x41\xa9\xc9\xaf\x3a\x55\x73\x41\x4d\x32\x9d\x10\xd0\xa0\xc0\xac\x2a\x78\x34\xc1\xd8\x5b\x30\x03\x56\xa9\x45\xf5\xf1\xa3\xda\x99\xc4\x0b\x5f\x85\xa5\x7a\xa5\x2a\x42\xc8\x77\xec\x9a\xb7\x20\x8a\x25\xf1\xe7\xcf\x8f\xcb\x1c\x7c\x42\xe6\xad\x73\x99\xcb\x72\x79\x4c\xcf\x67\xfd\xa1\xa1\xf7\x7a\x34\x17\x57\x5d\x06\xcd\xb4\x06\x9b\xf2\x66\x59\xad\xaa\xa5\x82\xa3\x68\x3a\x87\x2b\xfd\xc0\xaf\xcf\xf7\x32\x6f\x5f\xae\x2b\xef\x96\x69\x61\xb2\x44\x91\x45\x3c\x55\xa4\xb4\x57\x9f\x2b\xb1\x6f\x1a\x14\xc1\xf5\x5d\x5f\xad\xf3\x5e\x41\x23\x56\xc3\xb0\xdb\xb4\x02\x23\x2b\x10\xb5\xe5\x60\xc5\x0f\x51\xcb\x62\x07\x72\x3a\x8d\x54\x3b\x09\xe7\x66\x84\x47\xf2\x93\xeb\x69\x16\x08\xdb\x8f\x62\x9a\x42\xce\x90\x4b\xee\x67\x64\x4a\x7f\x42\xa6\xfa\x85\x4c\x25\xb9\x44\xb7\x00\x5e\xd2\x46\xb1\xdf\x6c\x67\x2e\x8d\x25\x2b\x78\x24\x16\x43\xa1\xa7\x08\x5a\x45\xf0\x1f\xe9\x66\xb7\x5b\xea\xd7\x6a\x03\xf7\x20\xd3\xd2\x67\x65\xba\xa2\x63\x95\xe6\xad\x95\x97\x48\xc3\x47\x6c\x77\xc9\x54\xc2\x6e\xb5\x01\x67\xb1\x5d\xec\x66\xd3\x3a\x69\xf4\xe6\x69\xcd\x60\xa5\x72\x85\x18\x2e\xe9\xe1\xac\xd9\x60\x79\x73\xd4\x9c\x3f\x99\x61\x5a\xe6\x48\x3f\x95\xca\x42\xcc\x30\x96\x02\x05\x7b\x1a\x7b\xb3\x79\x33\xd8\xc8\xf4\xc5\xa9\xea\x5a\xaa\xf2\x3d\x53\xd5\x21\x33\xb9\x4f\x4a\x3e\x9c\x67\x1e\x1f\x36\x49\xc6\xf3\xc9\xca\xb2\x68\x4e\x60\x1c\x20\x10\x0c\x74\x08\x4c\x03\x9a\xb0\x48\x92\x11\x08\x92\x22\x18\xde\xa1\x91\x25\x58\x84\x03\x11\x41\xf0\x04\x2d\x00\x87\xe0\x01\x09\x04\xc6\x72\x58\x86\x00\x24\x83\xf7\x9d\x7d\xf4\xb5\x45\x52\x87\xad\x5a\x75\x30\x20\xe4\x79\x7f\x2c\x57\x10\xc5\xf4\xca\xed\x26\x22\x87\x13\xa2\x5f\xa3\x65\xc7\x74\x06\x72\x65\x21\xb5\x9a\x3b\xa3\xf0\x25\xa1\x5c\x49\x52\xbe\x5d\x22\xfb\x9c\xe4\x49\xe0\xf9\x90\x6b\x7c\xd8\x25\x12\xdf\xbc\x92\x5c\xcf\x26\xbe\x1d\xcc\x49\xf2\xf0\x90\x37\xbc\xba\x90\xee\xdf\x71\xd9\xee\x7c\xcd\x3f\xbb\x72\xd4\x17\x27\x8c\x11\x4e\x50\x14\x06\x6b\x03\xc1\x87\x59\x80\xc6\x67\x55\x36\xdb\x38\xbf\xec\x96\x2e\x18\xa3\xb1\x37\xdb\x31\x3f\xab\xf6\x3f\xff\x0c\xd6\xbf\xbf\xce\x70\x9c\x78\x61\xf0\xf5\x7b\x9e\x7c\xd8\xdd\x4a\x70\x3c\xc3\xf1\xd7\xef\xf9\xaf\x33\xe2\xef\xe0\xef\xe0\x1b\xf7\xcd\xc5\xd8\xe6\x05\x96\xfe\xba\xaf\x83\xb2\x38\xc6\x41\xda\xdc\xe8\xd7\xd7\xef\x79\xfa\xa2\xa0\xb4\x09\xba\x26\x5f\xbf\xe7\xff\xef\xb6\x60\x7d\xfd\xcf\xf1\xcf\x43\xdd\x35\x1b\x9e\x11\x2c\x4a\xe0\x08\x8e\x62\x81\x65\x51\x24\xed\x50\x16\x2b\x90\x3c\x64\x04\x01\x32\x96\xcd\x3b\x98\x46\x36\x6f\x39\x88\xa5\x1d\x82\xb6\x28\xc7\x26\x08\x2c\xd0\x3c\x23\x30\x34\xb6\xd1\x1e\xd5\x81\xf0\x5a\x34\x5f\xbf\x5f\xf2\xdb\x36\x6e\x2d\x8a\xaf\xdf\xf3\xc4\x79\xd9\xff\x5e\x92\x48\x02\x18\xad\xb1\x51\x0c\x26\x18\x47\x80\x00\x02\xda\xe6\x01\x63\x01\x16\x50\x90\x74\x10\xe0\x18\x92\x40\x94\x00\x08\xe8\x58\x3c\xa0\x78\x8e\x86\x14\x2f\x90\x8e\x45\x12\x02\xe7\x38\x1c\xc7\x92\x16\x41\x7c\x3d\xd2\x3d\xe5\x71\x4b\x14\xd8\x01\x24\xa4\x08\x08\x04\x1e\x63\x0e\x20\x4c\x51\x14\xc7\xe0\xb5\x67\xc9\x71\x3c\x6b\x41\xc4\xd0\x2c\xc3\x3a\x00\xd8\x08\xd1\x0e\x70\x30\x62\x09\x9b\x61\x6c\xdb\x21\x59\x60\x0b\x1f\x11\x05\xf9\x70\xa5\x30\xcc\xd2\x28\x4b\xef\x2c\x81\x17\x25\xfd\xd9\x70\xf9\x3b\x25\xfd\x69\x76\xbf\x51\xe9\xfe\x12\xc5\x5f\xa2\xf8\x4b\x14\x7f\x89\xe2\x2f\x51\xfc\x25\x8a\xbf\x44\xf1\x97\x28\xfe\x13\x45\xb1\xfd\xf3\xff\xfd\x33\xf8\xdf\x2f\x6b\x4f\x33\x41\xd1\xe6\x2d\x97\x6b\x57\xee\x18\x5b\x92\xcd\x52\x38\x77\x6d\xdb\xd1\xdb\x25\xa8\xb4\x46\x2b\xcb\xd7\x7b\x7c\xba\x32\xbd\x76\x67\x38\x71\x55\xc1\x14\x50\xcb\x52\x6a\xf3\x24\x3e\xa6\xcc\xb6\xbe\x25\x97\x56\x7d\x47\xd3\xfb\x33\xf9\x51\x15\x93\x4e\x5f\x57\xdc\x7e\xdb\x68\x4e\xe7\x85\x44\xac\x95\xea\xed\xb9\xbb\xd0\xcc\x19\xd5\x93\xcb\xf8\xde\x31\x84\x4d\xc4\xa7\xd6\xaa\xba\x2b\x9b\x6b\x8e\xdb\xc2\x30\x29\xb0\xf2\x98\xae\x67\xd8\x30\xca\x13\x52\x37\xd6\x4e\x49\xdf\x70\xd3\x7a\xad\x3c\x74\xc7\x5b\xfe\x65\xf8\xa4\xf0\xca\x39\x25\xa5\x04\x54\xc2\x9c\xda\xc2\x72\x10\x2b\x8d\x0c\x0d\x5a\x54\xd1\x41\xdd\xea\xb8\xee\x85\x53\xcc\x57\x56\xd4\x0c\xf6\xd8\xa6\x44\x0e\xc4\x44\xe5\xf9\xe6\x50\xb2\x7b\x9e\x0b\x07\x10\xd6\xb2\x48\xf3\x9a\x53\x8b\x23\xb4\xea\x90\x9b\x67\xa2\xff\xe8\x19\x29\xe9\x51\x6a\xe5\x51\xfa\x2b\xe6\x72\x2d\xe6\xb2\x86\x52\xf5\x75\xa0\x2f\x0b\x23\x6e\x95\xc5\x0a\x37\x9c\x8e\xa8\x45\x86\x6c\x07\x4b\x8d\x84\xe9\xb5\xe7\xc5\x69\x66\xa6\x4b\xe8\x37\x38\xe4\x6e\x53\xf8\x9b\x06\x30\xa5\x72\x89\x2a\x54\x13\x9e\x94\xf5\xc7\x22\x12\xfd\x3a\x4e\x98\x0e\x51\x00\xed\x9e\x0e\x47\x2c\xa5\x8e\xea\x61\xa3\x9d\x94\xfa\x41\x72\xdc\x63\x72\xf2\xbc\x78\xa1\xba\x9b\x6b\xa3\xcf\xe5\xb2\x69\xee\xea\x68\x7a\x47\xb7\x67\x63\xae\xad\xea\x44\xbd\x0d\xc4\x7a\x77\x10\x6b\x3d\xbb\x9d\xae\x48\xa5\x32\xc5\xe9\xa4\xdf\x85\xd2\x84\x13\xcd\x88\xdb\xd4\x37\x4d\xa3\xb3\x23\xf5\x1e\x7c\x0a\x52\x19\xb5\x20\x9d\xe0\x91\x2f\x41\x6e\x2f\xe7\xd0\x1e\x71\x08\x93\x41\xbc\x34\x6d\xb3\xcb\xd4\x7b\x9d\xea\xa4\x0d\x07\x7d\xbf\xbf\x68\x8e\xc6\x95\x00\x2a\x74\x53\x63\xfa\xbc\x26\xd7\x81\xd7\xe0\x5d\x92\xf3\x08\xb9\x5a\x64\xcd\x66\x28\x4c\x24\x2f\x60\x87\x81\xd1\xe8\x73\x0d\xb6\x67\x40\x69\xa1\x93\x11\x1d\x99\xed\xac\xdc\xda\x04\x90\x45\xf9\x51\xe9\x55\x2d\x1a\xaf\x56\x3d\x55\x32\x84\xb9\xd4\xf3\xd9\x95\x5f\x35\x38\x24\x74\x4a\x51\x10\x0f\xc9\xc7\xa9\x1b\x16\xe6\x65\x88\xd7\xf2\xaa\x5c\xe8\xe7\xe9\xa5\x9f\x8f\x4f\x51\x6a\x79\x91\x65\x37\xe4\x4c\xe8\xd8\xe2\x13\xd5\xd2\xca\xe6\xe3\xa4\xde\x5e\x96\x8b\xbd\x6c\x32\x57\x3a\xac\x53\x89\x70\xda\xcb\x9e\xc2\xe2\x67\xe4\xb9\xe9\x3a\x26\x6e\x9c\xea\xfb\x01\xaf\x22\xc6\x33\x0b\x19\x18\x61\xdf\xe6\x9d\x28\xa9\xe1\xca\x5c\x0e\x59\x23\x94\xc9\xaa\x28\xdb\xc2\x00\x79\x0c\xab\x01\x63\x96\x21\xbc\x94\x66\x8b\xda\xc4\xe8\xb0\xc1\x14\xf9\x85\x2e\xd9\x5a\x0c\x1f\x59\x9e\x76\x1b\x81\x66\x51\x24\x17\x85\x62\xa9\x2c\x2a\x45\xfe\x31\x6c\x1f\xdb\xab\x1c\xdb\xfb\xee\xf1\xfe\xf3\xe7\x66\xa6\xde\x6c\x7a\xb3\x77\xaf\xc1\x5c\xce\xd4\x9f\x4d\xad\xbf\x10\x46\xbb\xb1\xe1\xfd\xcd\x61\xb4\xd3\xfd\xed\x27\x61\xbd\x93\x0c\xe7\x21\x95\x79\xcc\x71\x6e\x77\x5e\x9f\xec\x3a\x7d\x3d\x8f\xf9\xd1\x6d\x9d\xe4\xc7\x53\x90\x4a\xaf\x93\x13\x28\x0a\x00\x8e\x22\x00\xcb\x33\x34\xc7\x31\x3c\xc1\xe5\x88\x1c\xf9\x99\x6d\xa0\x9f\x40\xd4\xeb\xca\x57\x11\x91\x07\x5b\x20\x47\xbe\x98\x0a\xbd\xb9\xa9\xfd\xed\xfd\x7d\xb6\x87\x3d\x5d\x5c\x24\xe0\x76\x1b\xac\x1f\x8e\x3b\xcf\xcf\xfb\x51\x70\x1c\xd6\xe2\x48\xcb\x82\xac\x45\xd1\x88\x87\x0e\x62\x11\x64\x80\x45\x52\x1c\x41\x31\x2c\x6b\xd3\x04\x16\x10\x0f\x2d\x47\xb0\x78\x1a\x08\x58\x80\xc0\x22\x78\x40\x10\x98\x26\x79\x3e\x47\xe5\xc8\x13\xc3\xa5\x75\x1c\x78\xdb\x31\xef\x15\x4b\x44\x93\xa8\x57\x96\xe9\x78\xae\x92\xfe\x90\x80\xcb\x28\x24\x05\xb5\xba\x98\x35\xa5\xa5\xc6\xa4\x25\x05\x49\xe6\x6c\x5e\x16\xe6\xc0\x4d\x63\x2d\x18\x5d\x9d\x75\x6f\x4e\x6a\x17\x97\x72\x9c\x08\x3f\xc8\x7f\x58\x2c\xa0\x0b\x7a\x6f\xe4\xff\xf3\xe7\x17\xe8\x20\x81\x07\x0e\xe7\xf0\x3c\x4f\x08\x34\x4d\x39\x88\x25\x59\x44\x22\x4c\x53\x8c\xc5\x22\x1e\x39\xac\xcd\x3b\x1c\x2d\x00\x0b\x00\xc7\x61\x21\x4f\x08\x04\x01\x20\x4f\x33\x18\x91\x6c\x8e\xda\xa7\x38\xf5\x7b\xb5\x86\xa7\x8f\xcf\x5f\x5f\xd1\x6e\xb6\x86\x41\x1c\xe9\x90\x16\x29\xf0\x50\xb0\x30\x6b\x91\x88\xc3\x80\xe5\x00\x67\x59\x00\x03\x0a\x71\x0e\xc5\xf0\x0c\x20\x18\x0e\x58\x88\x24\x1d\x8a\xe0\x29\xce\x26\x04\x12\x58\x90\xa4\x01\xc8\x51\xfb\xe4\xe1\xdd\x5a\xc3\xf5\x8e\xcf\xb7\xde\xd7\x1a\x64\x5b\x04\xc2\x14\xc2\x0e\x4b\x22\x06\x41\x8b\x65\xd8\x75\xd7\xb0\x0c\x62\x2c\xc4\x02\xca\x11\x68\x60\x51\x96\x4d\x03\xe4\xd8\x36\x4f\x08\x3c\x0d\x59\x56\x10\x68\x64\x71\x34\x4f\xe7\xc0\x73\x4d\x3f\x69\x8d\x58\xd3\x20\x6e\x63\x3d\xb5\xec\xd9\xa0\x37\x8b\x23\x54\x97\x53\x77\x59\x1c\xc2\xd6\x6a\x96\x76\xba\x23\x42\x76\xd4\x5e\x47\x0b\x28\x7b\x53\xbd\xde\x93\x0a\x3b\xa8\xee\xf5\x86\xdc\x6e\xcd\x41\x9a\xf2\xe7\xf8\x6b\xe8\xc8\xff\x9d\x9a\xce\xb0\x00\x5a\x24\x72\x78\x0e\xb3\x0c\xe0\x38\x4c\x90\x0c\x4f\x02\x5a\x10\x20\x4b\x50\x1c\xc1\x93\x98\x05\x24\xc7\x41\x01\x3b\x80\x81\x04\x62\x30\x81\x08\x44\x41\x06\x0a\x24\xef\x70\x39\xb0\xd7\xf4\xeb\xd2\x9c\xd4\x9e\xfa\xa0\xeb\x72\xb3\xde\x40\x6f\xa4\x13\x79\x6c\x8e\x6a\x4b\x83\x1f\x3b\x64\x33\xe4\x4b\x0a\x0e\x16\x4f\x83\xd8\x6c\x3e\x3d\xb5\xe7\xbf\x45\x9a\x1f\xe0\xff\x09\x69\x02\x8e\xb7\x59\x82\x04\x16\x05\x05\x46\x00\x90\x60\x21\x10\xa0\x43\x42\xce\x22\x78\x48\x20\x80\x09\x40\x03\x08\x69\x9b\x26\x20\xc5\x40\xda\xc2\x1c\xc7\x03\xb4\x5e\x70\x28\xdb\x22\x72\xf4\x8b\xba\xf9\x4e\x73\xf2\x3e\xd2\x54\x3e\xc7\xff\x13\xd2\xa4\x90\x05\x11\xcd\xd3\x0e\x05\x28\xde\x81\xd8\xa2\x79\x6b\x3d\x6d\x21\x9a\x21\xd6\xf2\x62\x04\x9b\xc3\x24\x66\x29\x01\xd9\xb4\x03\x49\x9e\x46\x00\x20\x01\x02\x9e\xc2\x3c\xc1\xf3\x39\xfa\xf9\x2c\xfc\xc9\xd6\xb4\xe8\x63\x6b\xde\x39\x0b\xbf\x64\x3c\x7c\xd2\x72\x78\x93\xd9\x60\x85\xf6\xf2\xe1\xf0\xc2\xd5\xc3\xee\xf5\xaa\xdf\x65\x45\x54\x9a\x7c\x55\x9f\xe9\x8f\x56\x83\xaa\x8a\xa0\x6f\x4e\x3a\x71\x63\x3a\x19\x10\x84\x53\xe1\x93\x66\x8d\x9b\x12\x4a\x67\x5e\xef\x17\xc5\x01\x10\x37\xfb\x23\x0f\xd7\xd5\x70\xc4\xe9\xf5\x4e\xf7\x45\x32\xc5\xd9\xe9\x6b\x11\xa5\xed\x4a\xb4\xd6\x05\x49\x60\x8b\x85\x12\xb2\x5a\x8e\x3f\x6b\xe9\x4e\x59\xd4\x0d\x4b\x6c\x54\xb2\x02\x5b\xea\x90\x2d\xb6\x5b\x29\x36\xcc\x95\x51\xef\xfa\xb5\x21\x1f\xce\xba\xe6\x72\x9e\xa5\xe3\x47\xc1\xd6\xfa\xc2\x64\x4a\x81\xc4\x33\xbc\xda\x48\x21\x6a\xa2\xcf\xd3\xf3\x06\x0f\xdc\x40\x44\x4a\x23\x17\x14\x21\xa8\x70\x51\x5c\x6f\x79\xb3\x45\x12\x19\x49\x17\x49\xe6\x94\x14\x59\xe4\xc5\x05\x6b\x2c\x07\x51\xc8\x49\xb2\xa8\xe9\xc3\xe3\xa8\x7c\x41\x00\x07\x15\x3a\x79\xb9\xe5\x72\x0d\x3e\xd1\xc5\xf7\x3a\xda\xbe\xde\x64\xb6\x4f\x4a\xd7\x19\xbf\x04\x6a\xaf\xef\x27\xfc\xdf\xd1\xf3\x32\x96\xa8\xc4\x54\x87\x95\xf4\x64\xd0\xcc\xdf\xce\xff\x8e\x76\xda\xc7\xf5\xf5\x52\x6a\xcf\x90\xd6\x96\x0d\x3f\x25\x42\x8d\x23\xcb\x84\x14\x0f\xe7\xb4\xd9\xef\xb6\x1e\x8b\xb5\x81\xd0\x65\xdb\x62\xa7\x1a\xf1\xd0\x67\xc9\x2e\xfb\x34\xd9\xec\x12\x79\x49\x5f\x07\x63\xa1\x58\x60\x98\xf2\x54\x9f\xe0\xd6\x42\xa8\xb5\x74\xa7\x14\xd0\x94\x33\x1c\x92\x4e\x43\x34\x8a\xae\x55\xc0\x5c\x1b\x4c\xec\x6e\x4b\x6a\x78\x8d\xf1\x3c\x5c\x4c\x48\x2b\xb3\x38\x00\x20\x35\xc8\x16\x6d\xc5\x88\x30\x27\x64\x2b\x98\xae\xa6\x7c\xb1\x51\x23\x60\x52\xcb\xc5\xfc\x54\x16\x8a\x5e\x4d\xea\xe9\xb3\xc5\xd8\x2a\xad\x1e\xeb\x96\x55\x5b\x51\x54\xdb\xae\x6b\xab\x76\x11\x86\x92\x2e\xb2\xe3\x32\x57\x1a\x1e\x50\xdd\x4f\x5f\xdf\x1b\xc8\xf8\x37\xeb\x6b\x3c\x13\x5a\xea\x47\xf5\xf5\x7e\x96\xf8\xc7\xf5\x55\x7e\x0d\xa9\x24\x4f\x83\x09\x78\x6c\xf6\x81\x45\x92\x4d\x96\x1d\x48\x3a\x37\x6c\xcd\xa8\xca\xa4\xc5\x71\xbd\xde\xd4\x16\xc1\xca\x54\x8c\x48\x08\xb6\xe1\xaa\xdb\xfa\x5a\xb2\x83\x5e\xa9\x21\x99\xa0\xea\x57\xb5\xa7\x88\xf1\xd4\x66\xd2\xe6\x61\x06\x55\x69\xb6\x90\x71\x29\x2a\x10\x52\xc1\x9f\xb7\x87\x3d\x35\x5e\x75\xc4\xa6\xde\x91\xeb\x72\x3f\x6b\x38\xca\x62\x9a\x74\x62\x25\xe8\xf3\xcd\x46\xdd\x6a\xd9\xb8\x2f\x78\x7e\x13\x2a\x88\xf2\x45\x2d\x37\xa8\x56\x17\xc9\xc8\x8b\x66\xd3\x04\x39\x93\xd1\x0a\x73\xed\x49\xb3\xca\xfb\x63\xa3\x34\xd0\x78\xc5\xa9\xd5\xea\x82\xd4\xd1\xd8\xb2\x7c\x74\x2d\xee\xa7\xaf\xa2\xcb\x44\xb4\xc0\x48\x64\x4a\x09\x76\xb7\x90\xf9\xf3\x47\x8d\x92\x9b\xc2\x38\x5c\x69\x05\xb2\x5c\x0f\x74\x95\x27\x3b\x0a\xeb\x8c\xb6\xaf\xa2\xfc\xbb\xf5\xb5\x91\x8a\xbd\x8f\xea\xeb\xfd\x7c\xad\x77\x4a\x6d\x74\x94\xfa\x0b\xf6\xc0\x66\x3a\x2a\x75\x4c\xb3\xbb\xfd\xff\x1d\x16\x1d\x28\x1e\xae\x23\xbd\xf2\x81\xbf\xae\x76\xa7\xc5\x52\x6d\xd1\x16\x9a\x73\x68\x0d\xc2\x52\xc3\x73\x63\xa3\xc2\x33\x61\xb1\xdd\x8b\x58\x53\xeb\x8f\x8b\x01\x66\xa7\x2d\x68\x30\xe3\x19\x1e\xcb\xbd\x99\xd5\xa9\xea\xee\xb8\x5e\xec\x8e\x0c\xd9\x99\xc8\x85\x72\xbb\x3d\xb1\x30\x08\x56\xa8\xae\x64\x01\xa9\x0c\x68\x97\xf8\x99\x5b\x59\xb2\xd6\xd4\x84\xf1\x02\x3d\x51\xe6\x74\x8e\x46\xa8\xcf\x0f\x97\x85\x9e\xb6\x9c\xf5\xda\x6d\x30\x94\x86\xdd\x29\x1c\x19\x4d\xbb\x76\xec\xb2\xeb\xba\x3b\x3c\x91\xc9\x8b\xba\x7b\x1a\xcb\x79\xa7\xee\xf6\x4c\xb3\xb7\xb3\x51\xde\x1b\x34\xde\x5c\xd5\x0b\x29\x5f\x0d\x6a\x9f\xfa\xff\xef\x1f\x5b\x34\x33\x17\xcf\x83\xe6\xcf\xbc\x8c\x1b\x73\xf1\xdd\x3c\xdf\x77\xae\x60\xef\xd1\x6d\xd3\x54\x77\xcd\xf9\xb4\x6e\x1f\xf8\xeb\x0d\xcb\x1f\xb3\xb4\x52\x6e\xd0\x69\x44\x15\x16\xe1\x58\x7b\x54\x61\xd7\x76\x5a\x65\xb9\x66\x17\x97\x74\x10\x46\x9c\x6d\x4e\x47\x9d\xc4\xc2\xb4\x53\xc4\xa6\x14\xf5\xe2\x86\x2e\x75\xfa\xcd\x3a\x6d\x0d\x56\xad\xa8\x6d\x68\x46\x32\xa9\x76\x6a\x0b\x0d\xf2\x7d\xfc\xd8\x2e\xcc\xe7\x3f\x73\xe6\xe4\x69\xb1\xa2\x9d\x69\x0f\x38\x6e\x79\xa8\x10\x53\x38\x94\x50\xad\x3a\x6d\x0d\x70\xc4\xad\xfa\xee\x02\xcb\xe2\xfc\xa9\x1f\x55\xda\xc7\xc8\xdc\xfd\x74\xfb\x5f\x98\x10\xd9\x5c\xef\xd5\xed\x0f\xd8\x39\x1f\xd6\xed\xfb\xc5\x21\xde\xe9\x4d\xbc\x4d\xb7\xb7\xad\x78\xa7\x5d\xfc\xb1\xb1\xb0\x5d\xed\xb8\x69\x12\x9e\x40\xa9\x1e\xf0\xea\x52\x26\xa4\x0b\x95\x59\xb0\x26\x58\x14\xa6\xf3\x31\x6d\x89\xda\x24\xd2\xdc\x76\x0f\x89\x2a\x20\xed\x65\x33\x08\x39\x5b\x2b\x30\x0b\xae\xd6\x28\x2a\x9e\xaa\x56\x9f\xf0\x68\x39\x60\x9a\xbd\x55\xd9\x33\xe2\x95\x27\x3e\x21\x66\x66\x0d\xb2\xa9\x2b\x2a\x3d\xd1\x28\x2e\xbb\x2e\xff\x33\xa7\xd2\xa4\xab\x70\x8d\xa8\x6f\x84\x95\x90\x89\x17\x11\x27\x35\x64\x99\x96\x75\x36\x52\xf5\x46\x1d\x76\x0b\x36\xdd\x2e\x77\x40\xd3\x3a\xc2\xba\x3e\x16\x4e\xbb\xfc\xd6\x58\x98\x8b\xff\x05\x63\x41\xff\xb7\xe0\xdb\x24\x2f\x5f\xc0\x77\xc7\x28\xd3\xc7\xc7\xca\x0b\x3e\xe4\xb6\x57\x3f\x64\xe3\x6c\x53\xf0\x66\x8f\xd8\x35\xf7\x3d\xf8\x4a\x55\x19\x1b\x8e\xeb\x9e\xe0\xb9\xfe\xe2\xea\xc9\x58\xaa\x54\xe2\x32\xcb\xfb\x03\xb3\x97\x75\x4d\xa5\x43\xaf\x28\x9f\x8c\xcc\xa4\x4b\x0d\x3b\x11\x35\xd6\xa4\x55\x66\xce\x64\x77\x69\xd3\xde\xac\xa6\x62\x3a\x15\x17\xc5\x82\xdf\x65\xdb\xc3\x79\x18\x15\xa6\x75\x62\xe9\x67\xcb\xcc\x57\x28\x37\xe9\xa9\x10\x37\x4c\x83\x1b\x1b\xe2\xfc\x67\xae\xd9\x8c\x95\x71\xbb\xb6\x9c\xb0\x2c\xe1\x51\x08\x2c\xca\x25\xd0\x34\x83\x01\x8d\x87\xd1\xaa\x57\x18\x8f\x5b\x2d\x7e\x3a\x71\x33\xb7\xf6\x5a\x3c\xe5\x7a\xaa\xe1\x43\x2a\xbf\x91\xe9\x7f\xe6\xfe\x86\x17\xd6\xcb\x93\x0d\x06\xef\x05\x7c\xa4\xf7\x1f\xac\x8d\xbf\x25\xc6\xfb\x7c\x8d\x7d\x43\x8c\xf7\xfc\x44\xa9\xed\xa7\x04\x0e\x47\xa7\xef\x8f\xaf\x7a\xd7\x09\x5e\xcf\xbe\x63\xb0\x27\xbe\x39\x13\x4b\x94\xe5\x9b\xdf\x30\xc8\xb7\x3b\xb5\x96\xd8\x19\xe6\x1b\xca\xf0\x64\x37\xc1\xcb\xa7\x59\x5f\x7c\x46\xe1\xce\xd8\xcf\x58\x5d\x6b\xc0\x0b\x58\xf2\x3d\xb5\xa6\xf7\x94\xfc\xf1\x68\xaf\x57\x5a\xf2\x3b\x84\xff\xce\x06\x3c\xef\x86\xe3\xf1\x4d\x37\x8e\xa3\xfe\x2d\xb0\xb7\xa4\xaf\xe1\x3d\x61\x7a\x0e\x74\xf7\x5a\xfe\xf5\xf3\x85\x7f\x0b\xc8\x0d\xe5\x6b\x18\x8f\x2c\xcf\x21\xee\xdf\x23\x7f\xf1\x90\xdd\xdf\x03\xf5\x84\xc1\x55\xc4\x97\x00\xae\x29\xc1\x8d\xc3\x77\x7f\x17\xe0\x24\xb3\x6e\x40\xdd\x33\x3d\x07\xb9\x79\x25\xfd\x85\x13\x67\x7f\x0b\xce\x23\xf9\x6b\x58\x2f\x98\x9f\xe3\xdd\xbf\x14\x7a\xeb\x24\xd8\xdf\x83\x77\x4b\xfb\x2a\xd8\x13\xb6\x37\xa6\xe2\x93\xf7\x35\x5f\x38\xde\xf5\xf7\x00\x3f\x90\xbf\x8a\xfd\x9c\xf9\x39\xfc\xc3\xeb\x9d\x2f\x1c\xf7\xfa\x5b\x30\x1f\xc9\x5f\xc3\x7c\xc1\xfc\xa6\xc8\x9f\x6d\xa0\x7b\xf1\xac\xd2\xdf\xd3\x90\x13\x06\x57\x9b\x72\x09\xe0\xda\xf4\x71\x9a\xe9\xbd\x7d\x74\xe8\x6f\xc2\xff\x22\xf8\x4f\x21\xbf\xfc\xe6\xd9\x0e\xfa\xe6\xbb\x68\x1f\x39\xfa\x74\xfb\x41\xb5\x0b\xaa\x79\x4d\x3d\x1e\xdc\xd9\xeb\xd6\xd4\x4a\xde\x4a\x63\x8c\xf3\xfb\x43\x70\xff\xcc\xf7\xab\x4a\x47\xc9\x9f\x1e\x8a\x7b\xdc\x16\xf8\x0c\xf4\xf3\xaf\xb9\xdd\x07\xf6\x33\xba\x6b\xe0\xbb\x23\x74\xce\x61\x9f\x54\x7c\x86\xee\xf8\x21\xba\xfb\xa0\x3a\xd0\x5b\xa3\x39\xee\x43\x38\x03\x74\xdb\x48\x3b\xfb\x6c\xde\xfd\x00\xed\x49\x6e\x31\x9d\xec\xaa\x7c\x23\xac\xb3\xaf\xfd\xdd\x07\xd6\x29\xc9\x35\xac\xf3\x93\x3c\xdf\x88\xeb\xe4\x1b\x85\xf7\x41\x75\x24\x78\x4b\x99\x36\x35\xae\xad\xfc\xc7\x8f\x29\xde\x07\xca\x29\xc9\x35\x98\x93\xe3\x68\xde\x28\x9d\x2b\xdf\x81\xbc\x13\xb4\x67\x84\x6f\x49\xeb\xac\xe6\x2d\xe3\x63\xff\x29\xcb\x3b\x81\x3b\x23\xba\x91\xdc\xee\x2c\x88\x33\x64\xd7\x5c\xbe\x5b\x1f\x1b\xcd\xa3\x70\x1a\xf9\x38\xc5\x1b\x6e\xff\x3f\x00\x00\xff\xff\xa9\xe6\x60\x45\x99\x74\x00\x00") + +func bad_costCoreSqlBytes() ([]byte, error) { + return bindataRead( + _bad_costCoreSql, + "bad_cost-core.sql", + ) +} + +func bad_costCoreSql() (*asset, error) { + bytes, err := bad_costCoreSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "bad_cost-core.sql", size: 29849, mode: os.FileMode(420), modTime: time.Unix(1508537629, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _bad_costHorizonSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xdc\x7d\x69\x73\xa3\x3a\xb3\xf0\x67\xe7\x57\x50\xf3\x65\x66\x2a\x9e\x31\x12\x7b\xa6\xe6\x56\x61\x9b\x78\xdf\x97\x38\xb9\xcf\x2d\x97\x00\x61\x93\x60\x20\x80\x9d\x38\xa7\x9e\xff\xfe\x16\x78\xc3\x18\xbc\x67\xe6\xd4\xcb\x39\x35\x65\xa1\x96\x7a\x51\xab\xd5\xdd\x52\xd0\x8f\x1f\x37\x3f\x7e\x10\x4d\xcb\xf5\x46\x0e\xee\xb4\xaa\x84\x8a\x3c\x24\x23\x17\x13\xea\x74\x62\xdf\xfc\xf8\x71\x73\xd3\x91\xba\x84\xeb\x21\x0f\x4f\xb0\xe9\x0d\x3d\x7d\x82\xad\xa9\x47\xfc\x26\xc8\x5f\x41\x95\x61\x29\x2f\xbb\x6f\x15\x43\xf7\xa1\xb1\xa9\x58\xaa\x6e\x8e\x88\xdf\xc4\xd7\x5e\xf7\x9e\xff\xfa\x6b\xd5\x9d\xa9\x22\x47\x1d\x2a\x96\xa9\x59\xce\x44\x37\x47\x43\xd7\x73\x74\x73\xe4\x12\xbf\x09\xcb\x5c\xf6\x31\xc6\xca\xcb\x50\x9b\x9a\x8a\xa7\x5b\xe6\x50\xb6\x54\x1d\xfb\xf5\x1a\x32\x5c\xbc\x85\x66\xa2\x9b\xc3\x09\x76\x5d\x34\x0a\x00\xde\x90\x63\xea\xe6\xe8\xd7\x92\x76\x8c\x1c\x65\x3c\xb4\x91\x37\x26\x7e\x13\xf6\x54\x36\x74\x25\x4d\xd8\xa3\xa1\x82\x3c\x64\x58\x3e\x58\xbe\xdd\x68\x12\xa5\x7a\x5e\x1a\x2c\xeb\x7f\x4e\x4d\xfd\x75\x8a\x87\xae\x32\xc6\x13\x34\x9c\xe8\x23\x07\xf9\x44\xb8\xbf\x62\x60\x3d\x07\xa9\x78\x88\x35\x0d\x2b\x9e\x3b\x94\xe7\x43\xcb\x51\xb1\x33\x94\x2d\xeb\x25\x0e\x5c\x37\x55\xfc\x3e\x1c\xeb\xae\x67\x39\xf3\xa1\xe7\x20\xd3\x45\x01\x87\xee\xd0\x32\x87\xba\x7a\x52\x9b\xa1\x3f\x32\x53\x17\xbb\x43\x43\xf1\x9b\x23\xc3\x38\xad\xbd\x8d\x1c\x4f\x57\x74\x1b\x99\x5e\x80\x3f\x5c\x37\x46\xee\xf8\xb2\xde\x90\xa2\x58\x53\xd3\x3b\xdc\x89\x65\xe3\xa5\x84\x03\x22\xe6\x36\x3e\xb9\x4d\x88\x8c\x63\x84\xb8\xdd\xfa\x98\x16\x06\x56\x47\xd8\x09\xc0\x5d\xfc\x3a\xc5\xa6\x72\x04\x91\xa1\x46\xb6\x83\x67\xba\x35\x75\x97\xef\x8e\x14\x6f\xa8\x83\x73\xdb\xe9\x13\xdb\x72\x3c\xec\x0c\x67\xd8\x71\x75\x7f\x7a\x9d\xd2\xf8\x34\xc9\x28\x86\xe5\x62\x75\x88\x8e\x18\xf3\xd5\x8c\x39\x7a\xc0\x97\xda\x74\x34\x59\x61\x78\xa4\xaa\x0e\x76\x63\xe7\xef\xd8\xdd\x52\x1e\x79\x9e\xd0\xf9\x78\x3d\x72\xc9\x20\xba\xeb\x0d\x2d\x7b\x68\xef\xab\xc7\xfb\x2b\x57\x06\x24\x0e\x44\x5e\xc9\x3a\xa1\x32\x49\x35\xe4\xf9\x66\x2a\x8a\xd5\xae\xd4\x26\xba\x62\xb6\x2a\x11\x8d\x7a\xf5\x31\x8c\x3e\xc9\xba\x10\x41\x97\xb9\x46\xbd\xd3\x6d\x8b\xa5\x7a\x97\xd8\x6b\x8a\xec\x17\x3c\x3f\x0d\x4f\xd8\x6e\x1c\x85\x6b\xcb\xd0\x1c\x87\x6f\x3d\xe1\x8f\xc3\x16\x0f\x7e\x00\xd7\xc8\x72\xec\xd0\x6a\xb1\xd3\x79\xa4\x3e\xa6\xb7\x63\x06\x63\x01\x9f\x6b\x54\x7b\xb5\x3a\xa1\xab\x0b\x2c\x79\xe9\x5e\xec\x55\xbb\x47\xf7\xb6\x25\x84\xb3\x7b\x4c\x10\xea\xfe\xfe\x82\xd2\x56\x77\x49\xeb\xec\x21\x2e\x56\x70\x1d\xa9\xd5\x93\xea\xb9\xa3\xc4\x37\xd4\x55\xdf\x7e\x1f\x89\x61\xdd\xec\x04\x4c\x5b\x0a\x73\x1a\xb6\x70\xd3\x7d\x6d\x36\xab\xd7\x01\xba\x12\xd4\xf8\x30\x55\xf1\x0d\xf7\xb5\x58\xae\x02\xfb\x40\x96\x26\x7f\x1f\xc8\xca\x68\xc7\xc1\x44\xa6\xcf\x12\x44\x1a\x74\xa5\x7a\xa7\xd4\xa8\x13\x63\xbf\x0b\xbc\xf3\xda\x36\xec\x91\xfb\xba\x72\x8c\x3a\xb9\xa2\x54\x13\x97\x5d\xfe\xba\x59\x78\xc0\x75\x34\xc1\x77\xab\x77\x44\x77\x6e\xe3\xbb\x25\xe0\x2f\xa2\x13\x28\xe7\x1d\xf1\xe3\x17\xd1\x78\x33\xb1\x73\x47\xfc\x08\x1c\xe3\x5c\x5b\x12\xbb\x52\xb4\xbf\x9b\xad\x1e\xb7\x2b\x97\x1d\xe7\x1a\xb5\x9a\x54\xef\xee\xe9\x79\x01\x40\x34\xea\xdb\x1d\x10\xa5\x0e\xf1\x75\xe5\x3c\xaf\xde\x2d\xe6\xce\xd7\x28\xe6\x15\xd3\x4b\x9c\x6b\x69\x1c\xe4\x67\x23\xb7\xd2\x3d\x51\x6f\x74\x09\x69\x50\xea\x74\x3b\xab\x0e\x89\x87\x52\xb7\xb8\x26\x2b\xec\x45\x6f\xa1\xdf\x95\xfe\x19\xcc\xef\x74\x12\x08\xa0\x59\xcd\xd8\x23\x3f\x56\xb1\x1d\x4b\xc1\xea\xd4\x41\x06\x61\x20\x73\x34\x45\x23\xbc\x23\x86\xa5\x4a\x5c\x4d\x0a\x8b\xfe\xb6\x85\x10\x3b\xf2\x3b\x5a\x79\x11\xff\x4b\xb4\x3e\xfb\x7e\x84\x46\xf8\x0e\x13\xa1\x59\x0e\xe1\xbf\xf7\x03\x2c\x17\x7b\x2e\x61\x69\xc4\xb7\x17\x3c\x4f\x13\x33\x64\x4c\xf1\x77\xc2\x46\xba\xe3\x06\x22\x39\x32\x10\xf2\xc1\x54\xac\xa1\xa9\xe1\x0d\x3d\x24\x1b\xd8\xb5\x91\x82\xfd\xe8\xed\x6b\xa4\xf6\x4d\xf7\xc6\x43\x4b\x57\x43\x01\xd9\x16\xfb\xd1\xa9\xba\xe4\x3e\x98\xce\x1b\xde\x57\xf3\x62\x25\x80\x5f\x44\x77\x8d\xf5\x8e\x08\x8f\xc7\xc2\x0e\x44\xd7\xd7\x6f\x37\x04\x41\xf8\x0b\x8c\x87\xdf\xbd\x60\x98\xea\xbd\x6a\x35\x1d\xbc\x45\xb6\x6d\xe8\x81\x2b\x4a\xf8\xe1\xa9\xeb\xa1\x89\x4d\xf8\x64\x07\x45\xe2\xc3\x32\xf1\xcd\xf7\x1d\x75\x89\x5a\xa1\xeb\xd0\x1d\xed\x76\x43\xb8\xac\x8f\x74\x73\x87\xf4\x85\xb3\x4a\x28\x63\xe4\x20\xc5\xc3\x0e\x31\x43\xce\x5c\x37\x47\xdf\x58\xfa\x7b\x32\xd1\x2b\xeb\x7a\x5d\x9a\x97\xbd\x2e\x49\x8e\x70\x32\x4c\x62\x61\x77\x19\x49\x82\xfc\x12\x78\xbb\x5f\x08\xdd\xf4\xf0\x08\x3b\x91\xda\x40\xd1\xe3\xab\x54\xec\x21\xdd\x70\x89\x67\xd7\x32\xe5\x64\xa9\xac\x96\xa5\xeb\x4a\x65\xd9\xeb\x52\x2a\xab\x78\x30\x81\xd2\x50\xe0\x16\x3f\xa6\x11\xf8\xb8\x48\x31\xbe\xe1\x52\x48\x21\x0f\x22\x18\x96\x35\x1d\x4b\x9f\x8b\x20\x23\x18\x36\xc3\x72\x1c\xfc\x3a\xac\x8b\xcc\x25\x6b\xea\x6d\xa6\x53\xb4\x8d\x83\x91\x77\xb0\xd1\x02\x76\x6a\xab\x47\xc3\xae\x15\x69\x59\x8c\x44\xb7\x3b\xbc\x80\xa8\x4a\x59\x1e\x32\x86\x8a\xa5\x9b\x6e\xbc\x46\x6a\x18\x0f\x6d\xcb\x32\xe2\x6b\x65\xe4\xe2\xa1\x86\x93\xc6\x3a\xa8\x76\xb0\x8b\x9d\x59\x12\xc8\x04\xbd\x0f\xbd\xf7\xa1\x8b\xbd\xa1\xab\x7f\xec\x42\x25\xeb\x72\x82\x53\x76\x5d\xd5\x4e\xf0\xe9\xd7\x26\x2b\x9e\xa9\xe3\x27\xfc\x61\x13\x72\xaa\x00\x56\xee\xec\xca\x71\x5b\xfa\xc2\xc9\xa2\xd8\xf2\xdf\x56\x9e\xf3\x51\x38\x02\x0e\x3a\x5d\xb1\xdd\x5d\xf8\x00\x20\x78\x51\xaa\xe7\xda\x52\xb0\x6a\x67\x1f\x97\xaf\xea\x0d\xa2\x56\xaa\xf7\xc5\x6a\x4f\x5a\x97\xc5\xc1\xa6\x9c\x13\x73\x45\x89\x00\x57\x61\x94\x68\x3c\xd4\xa5\x3c\x91\x7d\x3c\xc0\xf1\x22\x2c\x3b\x8d\xe1\x75\xdf\x07\xc0\x7f\xea\xea\x41\x5e\x3e\x4d\x53\x0f\x2d\xa8\xdb\xc9\xc1\x84\x45\xd7\xf7\x17\x94\x05\x63\xc1\x92\x74\xe1\x8a\xb4\x78\xe5\x5a\x53\x47\xc1\x2b\x5d\x4f\xb0\xfe\x2b\x4b\xf5\xf5\xeb\xdd\xdd\x0e\xc4\x11\xb3\x22\x31\x82\xbc\xae\xb8\x13\xd3\x07\x07\x4c\x43\x34\xa7\x7c\xd4\x1a\xb8\x5f\x62\x9f\xbd\xd2\x9c\x2e\xeb\xeb\xda\xa0\x03\x58\xfe\x94\x15\x3a\x91\xd9\x0b\xed\xd0\x01\x6c\xbb\x96\x28\xa9\xc1\x1e\x5b\x14\x9b\xda\xf9\xbc\x69\xb2\xce\xd9\x1d\x98\x22\x0e\x76\xfd\xa8\x4a\xb1\x54\x3c\x8c\xf1\xfb\x93\xa1\x4f\x70\x1e\xf6\x25\xc3\xae\xaf\xb5\x11\x0c\x7f\x43\x63\x0f\x30\x79\x45\x6d\x8d\x60\xda\xaf\xa9\x2b\xe0\xe3\xb4\xf4\x13\xb5\x73\xa5\x95\x67\xd9\xe7\x65\x68\x72\x20\xf2\x39\x76\x51\x3d\xc5\xda\xaf\xfc\xc6\x35\xea\x64\x27\x1e\x25\x4e\xb8\xa4\x00\xe8\xaf\x84\x30\xde\xfb\x10\x9b\x33\x6c\x58\x36\x8e\xcb\x64\x78\xef\xc3\xc5\x8c\x4f\xa8\x9c\x60\x0f\x25\x54\xf9\x52\x48\xaa\x76\xf5\x91\x89\xbc\xa9\x83\xe3\x12\x0d\x02\xfb\xfd\x7f\xff\x6f\xe3\x98\xfc\xf3\xdf\x38\xd7\xe4\x7f\xff\x2f\x1a\xd9\xe0\x89\x15\x6c\xe6\xc5\x98\xb0\x75\x5f\xa6\x65\xe2\xbd\x8e\xce\xa6\xaf\xdd\x6e\x96\x9c\xe9\x13\x3c\x94\xad\xa9\xa9\xba\xfe\xc8\xf1\x0e\x32\x47\x31\x6b\xf6\xee\xb6\xc2\x75\xe6\xd2\x4e\xbf\xcb\x89\xb4\x8a\x40\x77\xc5\x09\x19\xe6\xfb\x1e\x13\xad\xab\x2b\xca\x56\x9b\x24\xc7\x98\xa4\xd0\xfe\xd3\x89\xfb\x31\x1d\xa9\xbb\x1e\x0f\x13\xbf\x7b\x33\x64\x7c\xfb\x7a\x54\x38\xf0\xf5\xee\xce\xc1\x23\xc5\x40\xae\xfb\x79\x5c\x1c\xbd\x4f\xb5\x97\x8f\x03\xee\xc4\x1f\xe7\x24\x71\xff\xee\x68\x2e\x22\xcb\x4c\x3c\x07\x79\xe4\xa1\x20\x35\x7c\x38\x11\x4b\xe4\xc5\xae\x78\x68\xad\x6f\x34\x1f\x77\xf3\xae\xba\x9a\x0e\x25\x58\xbf\x13\xf7\xed\x46\x8d\x70\x3d\x55\x37\x7f\xdd\x80\xa1\x6e\xea\x9e\x8e\x8c\xe5\xf1\x99\x9f\xee\xab\x91\x82\x24\x60\x7f\x90\xe0\x07\x24\x09\x40\xdf\x41\xee\x8e\x86\x3f\x59\x00\x19\x8e\xfa\x41\xf2\x37\xff\xf9\x99\x44\xfe\xde\x84\xec\xd1\xf4\xef\xe6\x5f\x03\x06\x16\x69\xd6\x08\xf5\xa9\x42\xb6\xdd\x7c\x2c\x96\xaa\x30\x57\xa2\xee\xeb\x2d\x3a\x3b\xa8\xde\xd7\xea\xf9\xea\x7d\xb9\x57\x6f\xf6\x60\xf1\x91\x7a\xaa\xdd\x77\x8a\x8d\x7a\x2f\x27\x35\xc4\xce\x03\xd7\xca\x71\x8d\x01\x2c\xde\xf0\x0c\x2f\x08\x14\xcf\xf2\x42\xaa\x90\xef\x64\x73\xad\x06\x45\x17\x1f\x9a\x85\x5e\xa1\xd5\x69\x52\xad\xec\xbd\x34\xe8\x77\x3b\x6d\xd8\x7c\xa0\xd9\x5e\xa9\xd0\x2d\xf6\x1f\x0a\x0f\xe5\x42\xab\x52\xa4\xc4\xfb\x7a\x71\x50\x1c\xd4\x17\x7d\xd0\x90\xe3\x99\x54\x41\x6c\x77\xee\xcb\xf5\x41\xb9\x54\x6c\xb0\xbd\x6a\x2f\x5b\xa1\xf2\xd9\xc7\x4a\xbf\x53\x7a\x92\xb8\x4e\x8e\x83\x1d\x26\xff\x98\xcd\x15\x7b\x5c\xbe\x52\x85\xb0\x37\xa8\xf4\xf3\x5c\x6d\xd0\x5c\xf6\xc1\xf2\x3c\x48\x15\x44\x29\xdf\x2d\xd3\xcd\xa6\x74\xdf\x7f\x60\x06\x7d\xd8\xe1\xaa\xbd\x41\x56\x2a\xd6\x5b\xb5\x01\xd3\x82\x85\x1a\xc3\xc2\x76\xb9\xd0\x68\x15\xb8\x42\x3f\x27\x31\x45\xaa\x58\xca\xd2\xfd\x23\x46\x24\x2e\xdb\x7c\xf2\x80\xac\x93\xcb\xbb\x49\xa1\x74\x6c\x4a\x29\xbd\xca\x17\xa7\x83\x40\x3c\xbd\x8a\xb9\xb7\x07\x31\x34\x12\xa1\x9f\x20\x45\xa6\xfe\xf9\xe2\x7a\xbe\x2d\x30\x47\x43\x19\x19\xc8\x54\xf0\x97\x3b\xe2\x0b\x20\x49\xf2\x27\xf9\xe5\xbf\x37\x20\x0c\x0f\x53\x54\xea\x9f\x2f\x68\xe2\x13\x14\x82\x4a\x13\x5f\x90\xeb\x62\x2f\x58\xe8\xfc\xf7\x26\xf2\xf4\x19\xfe\xf2\xdf\x04\xb4\x54\x0a\xf8\x78\xdf\xb0\x3e\x1a\xfb\xfd\x80\x34\xf1\x65\x21\x99\xe1\x0b\x9e\xfb\x1d\x9c\xab\x2d\x2b\x94\x0b\x7d\x09\xfd\x3c\x9e\xd3\x05\xfc\x79\x9c\xee\xa0\x3d\x82\xd3\x33\x75\x7a\x8d\x32\xd0\xea\xd0\xcf\x13\x38\x0d\xe0\xcf\xe4\x34\x8a\xf6\x18\x4e\xcf\x9b\x79\xdb\x28\x01\xe4\x79\x5a\x20\x19\x21\x18\x54\xe8\xe3\x34\xf4\x89\x1e\x90\x2e\x40\x48\x51\x1c\x24\x29\x96\x67\x7e\xd2\x1c\xc7\xf0\x24\xb7\x61\xc4\x0f\x0e\x7d\x28\xa9\xd7\xde\xe5\x4e\x71\xb0\xaa\x7b\x43\x64\xd8\x63\x64\x4e\x27\xf4\x06\x42\x77\xdd\x29\x76\xae\xa7\x94\x0b\x06\x00\x49\x06\x63\x75\x0e\x03\xbd\x4e\xfe\xaf\x32\xc0\x01\x4e\xe0\x39\x0a\x2e\x18\x88\x2a\x4f\x58\x77\xfe\x3a\xc5\x4b\x33\x17\xa2\x38\x46\xdd\xff\x2d\x14\x1f\x5e\x61\xe2\x76\xee\x4e\x5e\x61\xd6\x1b\x75\xab\x70\x31\x1d\xde\x8e\x4b\xc7\xee\xb5\xa5\x77\x77\xd4\xd2\xd1\x88\x31\xbd\xd9\x13\x4b\x87\xe2\xc4\x74\x28\x0e\x4c\x13\xfe\x7a\x15\xdd\x9f\x4a\x87\x37\xa0\xd2\xeb\xcd\xa6\xf4\x7a\x63\x29\xbd\xb5\x87\x94\x8e\x6e\x17\x45\xdd\x15\x96\x52\x05\x5e\x63\x28\x16\x63\x96\x57\x81\x0c\x39\x99\x91\x79\x41\x83\x14\xd2\x18\x0a\x00\x99\x63\x58\x01\x41\x5a\x43\x1a\xa0\x49\x0a\xa9\xa4\xcc\x40\x99\xa5\x28\x99\xe4\x64\x2c\x08\xa9\xff\xd4\x53\x64\x8a\x4c\x01\x81\x23\x7d\x0f\x8d\x04\x04\x49\xde\x05\xff\x6f\xbc\x36\x9e\x00\xd4\x1d\x80\x77\x14\xfc\xc9\x71\x3c\x20\xa9\x7d\x55\x34\x14\x68\x81\xe5\xa0\xc0\xa6\x98\x94\x6f\x60\x23\x8f\x8f\x8c\x24\x37\x35\xfe\xaf\x1b\x98\xc2\x32\xab\xd0\x32\x05\x55\x04\xb1\x8a\xa1\x22\x30\x02\x8b\x65\x4d\x65\x15\x4e\x61\x59\xac\x08\x2a\x0b\x31\xcb\x29\x2a\x0b\x18\x96\x13\x58\x1a\xb1\x2c\xa0\x65\x40\x01\xc0\x33\x00\x0a\x97\x4b\x82\x4a\xc5\xf1\x05\xe2\x79\x15\x00\xc9\xf1\xfb\xaa\x16\x53\x92\x66\x04\x98\x20\x06\x8a\x8c\x0a\x82\x21\x6f\xa8\x14\x66\x68\x8a\xa3\x29\xa8\x09\x02\xd6\x28\x19\xc9\x80\x92\x59\xc8\xb2\x1c\xab\xb0\x98\x03\x2a\xa7\x62\x92\x47\x32\x25\x30\xa4\xa6\x50\x9a\x80\x30\xc3\xaa\x8a\x80\x04\x1a\x61\x55\xe1\xaf\x20\x48\xe8\xff\xb7\xcb\x58\x2c\xb3\x02\x64\x00\x88\x97\xc3\xb2\x6a\xb9\x86\x01\x9e\xe7\x13\x04\xc1\xc4\x09\x82\x4e\xd1\x9c\xc0\x53\x2c\x45\x62\x56\xd5\x78\x2c\x28\x88\xd3\x28\x12\x2b\x2a\xd6\x68\x81\x97\x91\x42\x2a\xac\xac\x41\xcc\x23\xa4\x41\xcc\x68\x1c\xc7\xf1\x10\x0b\x34\xc0\x9a\xc2\x90\x24\x45\x5e\x2e\xc9\x78\x41\xc4\x2b\xbf\xc0\x08\x1c\x9d\x20\x88\x45\xd5\xc2\x30\xb3\x02\xe0\xe9\x04\x41\x70\x71\x82\x38\x6c\x28\x8f\xd8\x16\x3e\xd9\x6e\x26\xed\x02\x27\x3b\xe6\xbb\x2e\x7c\xc4\x54\xc1\x2d\x67\xfc\x06\x50\xa9\x58\x87\xf9\x06\xd0\x5b\xbe\xec\x0d\xd8\x72\x32\x37\x3f\x6f\x00\xbb\xe5\x0a\xde\x00\x2e\x15\xeb\xae\xdd\x6c\xb4\x30\xf0\xa4\xc2\x35\xc2\x96\x8b\x12\xea\x1c\x92\x5b\x2b\x69\x88\x3e\x08\x76\x6b\x96\x6d\xe0\xaa\x86\xa3\x38\x2e\xdc\x26\x34\x88\x97\x6c\xf4\x76\xa4\x43\xa9\x88\x8e\x54\x95\x72\xdd\xd0\xb1\xae\x9f\x2e\x3e\x25\xbf\x93\x26\x20\xf4\xd7\xbf\x29\x4e\xce\x29\x1c\xd8\xd8\x3d\x5f\xd7\x96\xfa\xb5\xbd\x5d\x9b\xde\xcd\x22\x47\x82\xbf\x74\x64\x9b\xf5\x70\x30\xc8\x2f\x03\x07\x6d\x6a\xaa\x4b\x4f\xe6\xcc\xa8\x3f\xf0\x8a\x16\x68\x2f\x72\x88\xd2\xc4\xde\x28\xe6\xc2\xac\x44\x64\xea\xd0\x9f\xc6\xfe\xb9\xf1\xdd\x27\xb3\xbf\x6d\x10\xc8\xcf\x63\xff\xcc\xa0\xef\xd3\xd8\xdf\x0a\x20\xd7\xbf\xfd\xf1\x67\x8f\x09\xc5\x3c\x67\xea\x7a\x18\x5f\xaa\xd9\x41\x37\x96\x73\xa9\x88\xfe\x7a\x64\x7b\x7e\x3e\x6d\x2b\x0e\x5e\xff\x26\xff\xe6\x38\x9c\x3f\x53\xff\x7a\xf0\x78\x7e\x6e\x74\x2b\x9c\x5f\xff\xf6\xc7\x01\xa4\xfe\xf9\xe2\x59\x97\x8a\x46\x73\xac\xc9\xa5\xa3\xf4\x6f\x0c\xd7\xcf\xcf\x68\x87\x1d\xa2\xcd\x6f\x36\x05\x82\xd4\x84\xed\xe8\x0b\x53\x47\xfe\x24\x49\x66\x9b\x7b\x66\xe5\x05\x2f\x64\x10\x80\x0e\x7d\x3e\xfe\xf9\xa2\x7e\xb9\x23\x20\x49\xa6\x89\x2f\xe6\x97\x3b\x02\xfc\x37\x4d\x7c\xb1\x34\x0d\x3b\x43\xdd\xaf\xf1\xdf\xcb\xd3\xb9\x6f\x4c\x63\x05\xb7\x55\xb7\x4f\x7e\x2e\x36\x8c\xdd\x5e\x96\x86\x67\xbb\x72\x5f\x37\x5b\xf8\xae\x30\x1a\x3b\xc8\xff\xee\x08\x1f\x0e\x50\x8e\x3a\xa0\x76\xb2\xdb\x98\x7c\x1e\x2d\xea\x44\x2e\x92\x3a\xcb\x85\x3a\x29\x5d\xb3\x13\xad\x08\x9a\xc6\xca\x1c\x90\x65\xc4\xca\x90\x56\x78\xa4\x29\xac\x82\x18\x4a\x06\x90\x23\x21\xc3\xb2\x2a\x4d\x62\x41\xe1\x91\xac\x09\x32\x4f\x53\x02\x16\x10\x25\x93\x3c\x45\x92\x98\x06\x3c\x7f\xf6\xaa\x1d\x1b\x44\xf2\x80\xe6\x05\x76\x4f\x95\x1f\x50\x5d\x4e\xf2\x99\x4a\x90\x40\x17\x4b\x41\x66\x4f\x95\x1f\xea\x21\x4d\x11\x78\x4a\xe3\x34\x9e\xe7\x49\x81\xa6\xa1\xa6\xb0\x80\x55\x80\x82\x69\xc8\xc8\xac\xc2\x2b\x1a\xab\xf2\x1a\x47\x0b\x94\x4c\x51\x9a\xc6\x22\x9e\x14\x48\x92\x42\x3c\xcd\x60\x05\xb0\x57\x96\x32\x4b\xb3\x49\x24\x07\x55\x7e\x34\x7a\x39\xc9\x67\xae\x30\x09\x74\x31\x2c\x8c\xcf\x49\x2c\xaa\xfc\x38\x99\x51\x38\xa0\x01\x19\x08\x3c\x12\x64\xcc\xca\x40\xe1\x30\xc5\x72\x14\x27\xcb\x14\xa6\xa0\xc2\x69\x90\xe1\x19\x8a\x64\x38\x4a\x56\x00\xd0\x20\xc9\x43\x4e\x25\x05\x40\xc9\x08\xd0\x14\x75\x65\x29\xf3\x0c\x47\x0b\x7b\xaa\xfc\x50\xfe\x72\x92\xcf\x74\xd6\x12\xe8\x62\x39\x10\x9f\x02\x5b\x54\xdd\x00\x3e\xa5\xa8\x32\xa9\x60\xa8\x60\x8d\x05\x0a\xa3\x20\x99\x65\x58\x5f\x2f\x58\x46\x61\x64\x85\xa5\xa0\x26\xd0\x94\x0c\x65\x95\xa6\x14\x4d\x55\x79\x52\xe0\x69\xc4\xb2\x82\x40\x2b\x32\x47\xf3\xf4\x75\x49\x16\x28\xc0\x30\x09\x19\xa9\xa0\xea\x06\x08\x29\x86\xa5\x90\x0c\x14\x8d\xe7\x30\xcb\x50\x1c\x87\x49\xc0\xf0\x80\xa2\x05\x01\xb1\x24\xe4\x48\x1e\x60\x96\x02\x1c\x87\x04\xac\x51\x0c\x22\x15\x06\x93\x0a\xa9\x40\xc4\x20\x01\xf0\x1a\x77\x5d\x5d\x16\x68\x8a\x27\x13\x48\x0e\xaa\x6e\x20\x99\xa2\x38\x5e\x65\x49\x40\xc9\x10\x09\x8c\x40\x21\x92\x45\x94\x80\x34\x80\x38\x99\xe4\x11\xa9\x50\x98\xa4\x68\x0a\x21\x5a\xa5\x49\x04\x19\x44\xcb\x98\xe3\x78\x4a\x61\x68\x8e\x83\xaa\x4c\x5e\xd7\xc8\x09\x2c\x43\x26\x25\x40\x83\xaa\x1b\x08\xae\x40\xf2\x55\xa5\xcc\x32\x02\x97\x90\xce\x0d\xaa\x6e\x20\x4c\x41\x45\x46\x0a\xcd\xd3\x1a\xa4\x20\xaf\x21\x2c\xd3\xbc\xec\xcf\x3e\x85\x66\x48\x9f\x28\x46\x50\x39\x0c\x30\x0b\x05\x45\xa5\x35\x04\x78\x5a\xa1\x28\x45\x40\x14\x0f\x31\x4f\x5e\x7b\x29\x11\x78\x8a\xe6\xe2\x33\xf1\x8b\xaa\xe4\x0c\xdb\xa9\x87\x98\xaf\x91\x63\x3b\x74\xf6\xe8\x94\x2c\xdb\xc1\x23\xcb\x17\x39\x4e\x9b\x13\xca\xbe\xd3\xb4\x75\x0e\x79\xab\xb8\xed\x1d\x1d\x25\xec\x43\xe7\x6f\xaf\x2d\xe8\xe8\xf1\xa8\x34\x01\xd2\x8b\x3f\x4e\x3d\x49\xc8\xd7\x13\xae\x4b\x7c\xdb\xf5\x42\x23\x07\x67\x63\xb3\x9b\x6b\x4f\x35\x7a\xd6\x35\xbd\x3e\xd7\x1a\xb7\x21\xb9\x67\x17\x32\x74\xc4\x34\xbd\x39\x50\x9a\x5e\x1d\x1f\x4d\x87\x0f\x8b\xa6\x43\x47\x43\xd3\x9b\x33\x9d\x8b\x9f\xe9\xf0\xe1\xcb\x6d\xa5\xb8\xd8\xf9\x84\xa9\xf3\x4f\x5f\xf9\x11\x3c\x49\xa6\xe2\x4d\x84\xef\x7e\x71\xf4\xbe\xaa\x50\x66\x58\xf4\x9f\x42\x95\x2f\xb6\x66\xad\x17\xb9\x02\x8b\x22\xf5\xd0\x7f\x6e\x3b\x95\xc9\xf3\x80\x24\xb5\x02\xef\x56\x4b\xdc\x84\x94\xda\x6f\xe5\x87\x8c\x38\xa0\x7c\xf0\x27\x71\xfd\x64\xc5\xed\x27\x5a\x16\x99\xec\x7d\x16\xde\x16\x5d\x1e\xe4\x5b\x2f\x19\x45\x34\xca\xd8\x65\xda\xe4\x2d\xd5\xec\xb5\xd0\x13\x0b\xeb\x4f\x65\xab\xd2\x74\xb3\x0f\xa6\xeb\x83\xe7\xfa\xe2\xec\x25\xdc\x5f\x7f\xf6\x76\x2f\xbc\x89\xa2\x28\xe5\x04\x36\x73\x9b\x55\xe4\x9a\x66\xcc\x6a\x2d\xed\x5e\x6c\x75\x65\xb1\x52\x98\xde\xb2\xd9\x36\xa8\xb1\x9d\x42\xa6\xd2\xff\xe8\x96\x3b\x46\xe9\x91\xb7\x66\x9d\xfe\xfc\x6d\xea\x8d\x5f\x04\xb5\xf1\x20\x3c\x4f\x20\xe5\xea\x5d\xbd\xf4\x24\x91\x25\xd1\xe0\xe9\xb7\x0a\x4f\x8d\x4c\x51\x91\x2a\xa9\x35\xaa\x42\x6b\x83\xb6\x15\x65\x23\x78\x7e\x6f\x80\x45\x29\xa0\x76\x53\x2e\x6d\x7e\x36\x5a\xed\x96\x3a\x1b\x73\xcd\x7a\x8b\x2c\x37\x29\xb1\xdc\x19\x38\x8d\x9e\xda\xf4\x3e\x80\x54\x98\x60\xef\xf9\xa1\x83\x72\xcf\x9c\xd8\xb7\xb9\x00\xde\x68\x55\x99\x45\xcb\x5c\x2c\xda\x04\xc9\x6e\x13\x1b\xc2\x7f\xc2\x68\xe6\x71\x0e\xba\xfd\xfa\x63\xc1\x0b\x71\xfc\x76\x3c\xfe\x85\x40\x46\xfe\x3f\xb5\x08\x50\x56\xcf\x64\xc9\x2a\x59\x2e\xcc\xbd\xf1\x5b\x1d\x18\x8f\x24\x9a\xdb\x16\x10\xea\xc5\xf7\x59\x35\x37\x6f\x30\x5e\x56\x52\x72\x8b\xe1\xa5\x46\x9e\xd3\x30\x9f\xf6\x70\xbf\xcd\x6c\xdc\x13\x1d\x90\xd3\xf1\x3f\x66\x6e\x95\x48\x7f\x47\xe2\xff\xfd\x3b\xf5\xcf\x0c\xcf\x32\xa3\x41\xe1\xa3\xc8\xc8\x1f\x52\xf1\xbd\x25\x49\xf0\x2d\x37\x76\x66\xd3\x51\x4f\xed\x36\x5e\xc6\xb3\xb9\xa1\x90\xf3\x9e\xdd\x29\x34\x2b\x55\xd2\x50\xdc\xaa\xf3\xf8\xd4\x1c\x74\x8d\xd9\x23\xe3\x79\x5c\xe9\x85\xd6\x0b\xed\x7a\x4e\x2c\x6b\x8d\x5a\x6e\x56\xa7\xcb\x6f\xc5\x6c\x6e\xf4\xfb\xf7\x7f\x53\xa6\x65\xe2\xd4\x7f\xea\xa9\xff\xd4\x6f\x2e\x8e\xc5\x60\x0a\x5e\x10\xdc\xec\x33\x3a\x2c\x64\xc9\x04\xa3\xb3\xa8\x0a\xed\xc7\x04\x42\x3b\xdf\xe8\x44\xa7\xc9\x8e\x6a\x96\xe6\x15\xc3\x23\xad\x06\x07\xee\xc9\x9c\xf3\xf8\x46\xf7\x1f\x3a\xb5\x97\x4c\x69\x20\x74\xd8\xa6\xd8\x2e\xda\x3c\x32\x58\xd0\x61\x5f\x9f\x79\xf1\x80\xd1\x19\x8c\x85\xcc\x2d\xc3\xdc\x4f\x5a\xcf\xb8\xf6\x2e\x94\x6a\x2d\x2d\x6b\xd2\x50\x7b\x7c\x04\x5a\x45\xec\x66\x46\xf2\x2d\xe6\x9a\xd4\xb3\xda\xa9\xe5\x2a\x7a\x65\xfc\x66\xbd\x3f\x03\x79\x2a\x73\x14\x85\xe0\x60\xfa\xde\x94\xba\x36\xe6\x84\xe9\x07\xf2\x3e\x26\x7c\xa6\x52\x22\x91\x5b\xfa\x04\xa3\x93\xab\xe9\xb6\xac\x56\xf2\x53\xa1\xad\x8a\xaf\xb0\xd6\xb8\xef\xbf\x3c\x97\x9b\xf3\xfb\x4c\x6f\xfa\xfc\x26\xb5\x59\xad\x60\x63\xaf\x37\x7d\xb5\x32\x01\xfc\x5f\x36\x3a\xce\x4c\xa8\xd5\x2f\x32\x3a\xad\x38\x81\x9c\x33\xe9\x79\x3a\x56\xa0\x3b\xcc\x46\x1f\x7f\xd2\x1b\xb4\xa6\x65\xa6\xb8\xfd\xf4\x52\xa2\x9e\x6b\x5a\x27\x2f\x15\xdf\x9e\x6e\xeb\x26\x2c\xd4\x07\xf3\x91\x94\xa1\x0b\x19\x73\xfa\x21\xd0\x54\xef\x59\xd4\x2d\xdd\x52\x2a\xb5\x47\xe1\x81\x9b\xdc\x0a\x02\xf4\x0c\xce\xed\xbe\x4b\xec\x60\x9a\x91\x5d\xe8\x28\xcc\xac\x39\xd7\xeb\x05\x27\x27\x46\x26\xfd\xc5\xa9\x01\x98\xba\x20\xa3\x41\xed\x9b\xf4\x3c\xc5\x27\x9c\x02\x59\x56\x85\x76\x21\x4f\x55\x13\x71\x7b\xd2\xe7\x0f\xa9\x46\x2e\x3f\x31\x9f\xa9\x97\xea\x03\x25\x03\x50\x65\xd9\x41\xae\xc5\x3d\xd6\x66\xb0\xf0\x5c\xe3\xb8\x5e\x6f\xa2\x8a\xd4\x47\x5f\xea\xda\x82\x19\x0c\xe7\x9e\x49\x9f\x55\xcd\x5e\xb6\x92\xeb\x53\x45\xa3\xd8\x78\xb5\x19\xbd\x5e\x75\x9b\x3c\x9a\xa2\x7a\x6e\xf6\x9e\xc7\x59\xfb\x96\xcc\xdd\x1a\x6f\xcd\xc7\x5e\xdd\xf9\x68\x8b\xd5\x56\x3b\x5f\xce\x3f\x4c\x2b\x9a\xf4\x3e\x71\xdb\x8e\x64\x3e\xf0\xd5\x4a\x59\xae\xa9\xf8\x41\xd0\x8d\x2a\x92\x14\x68\x88\x8d\x4f\x98\xf4\xe2\x88\xb1\x69\x81\xc9\x01\x0f\x0a\x6a\xe7\x76\x6a\xbc\xbd\x34\x60\xbe\x2a\x8c\xad\x8f\xc6\x2d\xb8\x2f\x9b\xad\x3a\x0f\xda\x12\xab\x3d\x91\x01\xf8\xdf\x9e\xf4\x15\x4f\xec\xfd\x3b\x26\x3d\xd7\xdb\xb4\xaf\xed\x61\x36\xfa\xf8\x93\x7e\xf0\x04\xc4\xce\xc8\x50\xdf\x99\xf6\xc7\xeb\x2b\x7e\x7c\xee\x70\xf9\x4c\xc1\x99\x3c\xb7\x1c\xbe\x45\x8d\x90\xe6\x89\x33\x5b\xc9\xc3\xfb\x3c\xe2\xc9\x56\x8e\x94\x5a\xf3\x16\x70\x74\xf3\xbd\xf6\xe4\x48\xe8\xbd\x0c\x66\xb9\xb9\xfe\xf0\x51\x1c\x18\xb3\x47\xbb\x03\xc7\xc5\xba\xdd\xca\x47\x57\xfa\x8b\x93\x6b\x54\xea\xfc\x3f\x88\xd8\x9c\xe6\xdb\x37\xfb\x05\x28\xb0\x49\xe9\xab\x45\x55\x78\x0f\x7e\x21\xbf\xd3\x14\x76\x31\xfd\x4b\x71\x4a\x11\x2a\x3f\x06\xe5\x76\xbf\xdf\x59\x94\xf3\x2f\x52\xaf\x28\xd3\xf8\xe3\xa3\x57\xcf\x75\x85\xb7\x5c\xcf\x60\x3f\x8c\x62\x97\x53\x84\x76\xd6\x36\x9d\x47\xf0\x32\x19\x59\xb7\x6f\xf7\x08\x53\x99\xf5\xb3\xe9\xef\x7e\x8d\xbf\x55\xef\x4c\x32\xd9\xd2\x7b\x53\xa8\xbe\x21\x79\x60\x65\x2b\xfa\xc8\xe9\x16\x78\xc6\xca\x34\x7b\x36\xdb\x6f\x3c\x8c\x33\x26\x66\x27\x35\xd4\x65\xc6\x33\x3c\xce\xf7\x66\x72\xbb\xd8\x1a\x8d\xcb\x99\xce\x53\x37\xaf\x3d\xe7\x6f\xef\x9b\xcd\x67\x19\x53\xe6\x87\x52\x96\xa6\x26\x90\x06\xf4\x88\xfc\x7d\xc8\x14\x14\xc2\x1a\xb7\xc7\x14\x84\x7d\xee\x13\x4d\x41\xaf\xdf\xef\x8d\x16\x2d\x4f\x0c\xd1\x16\x4f\x31\x22\xb9\xe8\x6c\x69\x89\x91\x99\x75\xba\xa9\xa2\x99\xb7\x0d\xbf\x9b\x99\x9f\xa0\x05\x9b\x27\x1a\x94\x84\x6d\x5d\xa9\x81\x70\x13\xb7\x3c\x59\x9d\x0d\x7a\x33\xc7\x56\xca\x79\x6f\x34\xcf\x3c\xa2\xda\xc7\xcc\x6b\x77\x9e\xc8\xbc\x56\xef\xb5\x1b\x26\x54\x03\xf0\x72\x2f\x77\xbb\xe4\x6c\x14\x87\x2a\xcc\x6c\xdc\x13\x10\x9c\xbf\x0c\x7f\x43\xd9\xe0\x3f\x35\x28\x01\x15\x99\x97\x9e\xa5\x0c\x39\xcb\xda\x1e\x1e\x49\xaf\x95\x9c\x57\x93\x3f\x26\xcf\xbc\xd0\x31\xed\x1e\x83\x8a\xb7\x2a\xf7\xfa\xf8\x6e\x37\x27\x05\x81\x95\xea\x1d\xc1\x93\xd4\x5c\x4e\x32\x85\xb2\x51\xab\xdf\xd6\x9a\x74\x8f\xbf\xad\x7b\x1c\xd6\xea\x6f\x2f\x1d\x56\xeb\xb5\x35\x3d\xdf\x8a\xfa\x27\x97\x26\xd5\x7d\x0f\xe5\xec\x94\xef\x71\xa6\x8a\x06\x7c\x52\x0e\x78\x51\x15\x3e\xa6\x12\x88\xef\x44\x87\xfa\x14\x53\xd5\xef\xd7\x97\x03\x79\xb1\xa9\x5a\xe3\x6f\x55\x64\x63\xcc\xd2\xd2\x7d\x85\xf6\x6c\x78\xfb\x6e\x8d\x1b\x2f\x75\xd4\x51\xb5\xda\x7d\xbe\xa4\x66\xe6\xb4\x69\xd9\x9c\xda\x9f\x3c\xb5\x5d\x19\xd3\x5a\x06\xf7\x73\x76\xcf\xa9\xb4\x72\xed\x87\x6a\x99\x96\x07\x1f\x35\xbb\xd9\x6d\x74\xdd\xe7\x62\xbb\xf4\xde\x40\xfc\x03\x7e\x69\xde\xbe\xbd\x7d\x86\xa9\x3a\x35\x54\xe9\xf7\xbb\xed\x65\x2f\x7f\xc4\x54\x9d\x11\x4a\x7d\x86\xa9\x7a\x2e\xbd\x3e\x50\x9d\x11\x37\xeb\x0d\x5a\x15\xef\x39\x3f\xee\x3f\x95\xe6\x5d\x7e\xac\x81\xaa\xc5\x67\x25\x6c\xbe\xbf\x0e\x9c\x7e\xf5\xf5\xb5\x19\xe0\xbe\xba\xa9\x3a\x03\xff\x25\xa6\xca\x9e\x3e\x14\x9d\x51\xab\xe7\xe8\xd0\x94\xb9\x82\x2e\xb1\x2d\x60\x97\x01\xff\xd6\xab\x8d\xa9\x4c\x55\xc7\xba\xe9\x81\x87\x27\xa3\xf0\xee\x71\xe3\x8c\xc0\xf4\x2a\x46\xc7\xb5\xc5\xf2\xfd\xa3\x6b\x8e\x3d\xad\x36\x7f\x11\x6a\x4c\x63\x5e\x53\xa5\x67\x89\x71\xde\x9f\xd8\x56\x86\xcb\x47\x43\xa9\x8b\x77\xa6\x68\xdf\xab\x3a\x77\xab\xe7\x38\x53\xc5\x52\x24\xb9\xb7\x2a\x7c\x92\x2b\x10\xdf\x89\x09\xc7\xe3\x4c\xd5\x62\xfc\x4e\xcc\xa4\x9c\x67\xda\x16\x61\x00\x37\x71\xad\x10\x29\xc5\x35\xbd\xad\xdc\x54\xf0\xde\xeb\xcc\x3b\xdb\xa7\xde\x6f\x27\x6f\x63\x5a\x16\x1b\xcf\x76\x63\xd4\xec\x29\x62\x9d\x02\xea\xbc\x6a\x5a\x9c\xda\xb8\x65\xde\xb9\x52\x25\x23\xe9\xf5\x7a\xf1\x15\x3f\xcd\x07\x4c\xb5\xf7\x71\xaf\x77\x9d\x0f\x5d\x7c\x55\x98\x99\x3c\x98\x4e\x46\xa2\xd4\x13\xbb\x99\x79\x67\xc4\x1f\x34\x6d\x61\xe1\x24\x98\xb6\x80\xf2\x7f\xbb\x69\x6b\xfd\x15\xfa\x1a\x8c\x53\xd9\x47\xdf\x1e\xd3\x77\xaa\xea\x5c\xc5\xf4\x49\x97\xe1\xbf\xc4\xf4\x55\x38\x48\x49\x94\x59\xb4\x07\x5a\x91\x95\x73\xc5\xb1\x2b\xb2\x8d\x17\x56\x14\xda\x6f\x22\xa5\xf5\xa9\xd2\x14\x3f\x7b\x24\xc7\x99\x45\x77\xe4\xf0\x9d\x12\x49\x62\x9b\x31\xcb\xda\x8b\xd7\xad\x3d\x94\x1b\xb3\x46\x29\x67\x7f\x4c\x04\x0f\xb3\x48\x14\xdb\xad\x6c\x33\x53\xae\xe4\xdf\x22\xa6\xef\xe2\x1d\x6e\xda\xf7\xd2\x2e\x36\x7d\xf4\x3e\xd3\xc7\x03\x36\xe1\xd4\xc9\xb2\x2a\x7c\xa4\x72\xa1\x65\x67\x9b\xbe\x3d\x49\xe4\xc5\x84\x3e\x2b\xa0\x0c\xf4\xe1\xbe\xdf\x23\x97\x83\x7d\x0a\x7d\xd9\x62\x1e\x77\xb5\xd1\x28\x44\xcf\x3c\x56\x91\x42\xa6\xb1\x50\x70\xee\x59\xde\x18\xf4\x7b\xd3\x4e\x5f\x6a\xd3\x1f\xd0\x00\x76\xdf\xed\xc0\xc7\xb6\x0d\xc7\x8d\xdc\xc7\xb4\x3f\xcb\x8f\xe6\x2a\xad\xcf\x4a\x75\x4c\x7b\xe2\x7b\xe6\xd6\xe8\xb0\xcd\xc7\x37\xcb\xbe\x9d\x94\xc9\xb9\x31\x9d\x4f\x0d\x09\x8e\xdc\x5e\x1d\xe1\x4a\xbf\xcb\x8d\xbb\xe2\x61\xaf\x2f\x9a\x8c\x3b\x9d\xd9\xf5\x23\xfd\x8b\x85\xfd\x7b\x9f\x47\xdb\xda\x94\xff\xbf\x63\x5c\xbc\x92\x55\xac\x2d\x72\xeb\x01\xb2\x58\x87\x23\xd9\x2a\x6e\x2a\x3f\x85\x90\xdd\x27\xd1\x3c\x3f\x22\x77\xe0\xcc\xfb\x6a\xbf\xc3\x94\x7b\xed\xe2\x73\x13\x0d\x1e\x8c\x87\xf7\xea\xd3\xb8\x60\x22\x89\xae\x36\x98\x07\xbe\x91\x2f\x53\x7a\x85\x1f\x01\x4e\x27\xf3\xc5\x0c\xdb\xaf\x5a\xc2\x73\x4e\x37\xd9\x47\xb3\x5b\x79\xe0\x2a\x6c\xaf\x8b\x72\xef\x2d\x60\xd3\x76\xbf\x39\xbd\xaf\xed\x78\xa6\xc9\xc7\x8a\xf7\x7f\xd7\xe9\xe8\x13\x1b\x31\x9f\x71\x5a\xfe\x8d\xf6\xf6\xb9\x06\x48\x02\x86\xa4\x00\x09\x21\xcd\xd3\xc2\xaa\x48\x41\xc8\x08\x34\xb3\x55\x64\x96\x45\x86\x04\x80\x25\x49\x0a\xac\x8a\x3c\x49\x52\x3c\x14\xd6\x45\xc0\x31\x3c\xdc\xd4\x02\x9e\x62\x68\xb8\x2e\x42\xc0\x30\x34\xbb\x28\xb2\xa4\x00\x29\x12\x52\xdc\xb2\x08\x05\xc0\x03\x61\xd5\x96\x87\x0c\xe0\x49\x40\x6d\x8a\x10\x52\x34\x58\x02\x0b\x24\x84\x90\x06\x34\xbf\x2c\x42\x01\x92\x0c\x4d\x93\x41\x11\x90\x24\x0b\x49\x06\x32\xab\x22\x00\x10\x90\x3c\x00\xcb\x22\x24\x21\x58\x23\x0a\x8a\x90\x81\x4c\xa8\x48\x31\x90\xe1\x76\x4f\x02\xc5\xde\x71\xb2\xfe\xf8\xfd\xea\x2a\x94\x93\x3e\xbe\xb5\xf3\x79\xa5\x08\x8e\xe0\xe3\x5b\x62\x3e\x7f\xe8\xaa\x15\xa2\xd9\x2e\xd5\xc4\xf6\x23\x51\x91\x1e\x89\x6f\xba\x7a\xea\x67\x86\x3f\x83\x95\xfd\x28\xe3\x38\x3b\x82\xc8\xa3\x19\xdd\x7f\xa7\xce\x27\xb1\x9a\x84\x74\x1f\xb3\x7b\x09\x3d\x8b\xdd\xed\xeb\x8a\xfe\x00\xab\x2b\x84\xc7\xb2\xb9\x45\xe0\x41\x16\x43\x57\x3c\x2d\x79\x09\x6e\x80\x3a\xe7\x23\x77\x8b\xab\xa3\x36\x1d\x12\x8d\x7a\xfc\xe9\xb6\x5e\xa7\x54\x2f\x10\xb2\xe7\x60\x4c\x7c\x4b\x3c\xb3\x16\x47\x6a\x70\x51\xd5\xd5\xe8\x0c\x3e\x5a\x79\x14\x91\xd1\xe3\x78\x71\xb4\x2d\x6f\xd8\xba\x1a\x75\x8b\xfe\x8e\xa3\xef\xf0\xe1\xc0\x58\xdd\x0e\x5f\x1b\x76\x29\xdd\xbd\x7a\xa9\xd5\x5b\x91\x1f\xe9\x3c\xcc\xc4\xea\xd3\x5d\x5b\xf4\xef\xfd\x64\x57\x12\xe9\x9b\xaf\xed\x5d\x95\x68\x5d\x3d\x9a\xdc\xa3\xbf\x3a\x16\xcf\xc2\xea\xc6\xb7\xeb\x73\xb1\xec\x39\xcc\x48\xc2\x87\x19\xce\xe2\x6b\x97\x9d\xc8\x1d\x77\xd7\xe5\x68\xbb\xf3\x30\x53\xab\xaf\xf4\x6c\x71\x11\x4f\xdf\xee\x5d\x7d\xd7\x26\x72\x07\xc3\x71\x73\x37\x86\xdc\xc3\xf7\x11\x5e\x95\xf6\x83\xe8\xc2\x8c\xac\xbf\x85\xb8\x6d\xc5\x97\xdf\x44\x3c\x9e\x93\x6b\x0f\xc0\x3e\x4c\x87\xe9\x3f\x38\x08\xd1\x5b\x27\xaf\x63\xe6\xf7\xe2\x38\x68\x86\x7c\xa0\x03\x64\xc7\x5e\xb1\xf9\x19\xb4\xc7\x21\x3a\x38\x53\xd7\x90\xc7\x73\xf1\xb9\x6a\xb3\x85\xe8\x1c\x43\x73\xfc\x65\xaa\x9f\x3c\x08\x3b\xd7\xdb\x1c\x64\x26\xd2\xe0\x78\xd6\xc2\xf7\xcb\xfe\x99\xb1\x09\xdf\x6f\x74\x88\xaf\x10\xec\xf1\x2c\xc5\xde\xb9\xfb\x67\x78\x8b\xbd\xc4\xe9\x10\x93\x71\x8d\x8e\xe7\x76\x7d\x2d\xf1\x9f\xe1\x70\xfd\x01\xf6\x43\x5c\x25\x46\x02\x07\xae\x64\xfe\x44\x36\xa2\xb8\x62\x3d\xac\x53\xcd\xc4\xde\x1b\xa9\x3f\xc3\x4e\xec\x43\x78\x0c\x47\xdb\x2d\x4e\xe3\xee\xb3\x16\xcf\x5d\x34\x47\x71\x72\x78\x09\x3d\xe6\xa2\xf2\xcf\x60\xe8\x08\xbc\x09\x0e\xe6\x1e\x0f\x7f\xf5\xa5\xab\xf3\x59\xde\xb9\xe9\xfd\x4f\xf3\xbe\x73\xed\xc4\xc9\x42\x38\x18\xcd\x9f\x74\x6f\xfe\x27\x5a\x9b\xfd\x98\x93\x18\x5f\xff\x69\x66\xc4\x0a\x6d\xfd\x5d\x66\xe4\x6f\x36\x8f\x17\xc1\x1f\x30\xb2\xbb\xd8\xce\x8e\xa4\x3c\x07\xa9\x78\xed\x58\xaf\xf2\x11\x43\xd9\xb2\x5e\xae\xa4\xb8\x7b\x30\x1c\x74\xe0\xbf\x7d\x5b\x5d\xfd\xf5\xe3\x7f\xfe\x87\xf8\xea\x5a\x86\x1a\xfa\x2c\xcc\xd7\xbb\x3b\x0f\xbf\x7b\xdf\xbf\xa7\x89\x64\x40\x7f\xf8\x8e\x02\x5c\x7c\xeb\x25\x19\x54\xb6\xa6\xa3\xb1\x77\x14\xfa\x2d\xd0\xfd\x04\x6c\x81\x46\x48\xf8\x4e\x3c\x14\xa5\xb6\xb4\x30\xc2\xc4\x6f\x82\xa2\x76\x86\x6f\x6a\xea\xaf\x53\x3c\x4c\xdc\xb8\xb9\x8e\xf6\x25\x61\xf1\xc7\x6f\xf7\xe5\xd6\x08\x26\x39\xcb\xdb\x37\x37\x8b\xb9\x6a\xf2\xc5\xbd\x6d\xa9\xdf\xa8\x48\x84\x58\xad\xee\x5e\xdc\x1c\x6c\x27\x35\x7b\xd9\x6a\x29\xf7\xeb\x30\xa0\x39\x35\x0c\xd7\x9b\x1b\xf8\xd7\x4d\xa1\x2d\xd6\xbb\xf1\xa0\xdd\xc6\xf1\x80\x2b\xd4\x2b\xe6\x9a\x96\xeb\x8d\x1c\xdc\x69\x55\x09\x15\x79\x48\x46\x2e\x26\xd4\xe9\xc4\x26\x14\x6b\x62\x1b\xd8\xc3\x01\x47\xff\x2f\x00\x00\xff\xff\x94\x25\x8b\x21\x1e\x86\x00\x00") + +func bad_costHorizonSqlBytes() ([]byte, error) { + return bindataRead( + _bad_costHorizonSql, + "bad_cost-horizon.sql", + ) +} + +func bad_costHorizonSql() (*asset, error) { + bytes, err := bad_costHorizonSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "bad_cost-horizon.sql", size: 34334, mode: os.FileMode(420), modTime: time.Unix(1508537629, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _baseCoreSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x69\x73\x9b\x4e\xb3\xef\xfb\x7c\x0a\x2a\x6f\x9c\x94\x9d\xbf\xd8\x97\xe4\xe6\xa9\x42\x80\xf6\x7d\x97\x6e\xdd\x72\xcd\xc0\x80\xb0\x10\x20\x16\x6d\xa7\xce\x77\xbf\x25\xd0\x82\x24\xb4\xd8\x72\xce\xf3\x9c\xaa\xe8\x45\x62\x8b\xe6\xd7\xbf\xe9\xe9\xe9\xe9\x69\xa4\xb6\x17\xda\xb6\x69\x1b\x98\x87\x54\xd3\x45\x5f\xe2\xff\x30\xdd\xb4\x4d\x7f\x8c\xb4\x17\x4c\xb5\x1c\x7f\x73\xdd\x42\x9a\x81\xbc\x2f\xf1\x7f\xd1\xbb\x48\xfb\xf2\xe3\xc7\x97\x1f\x3f\xb0\x86\xe3\x07\x86\x87\xda\xcd\x0a\xa6\x81\x00\x40\xe0\x23\x4c\x0b\xa7\xee\xe6\xf2\xe6\xba\x1c\x4e\x5d\xa4\x61\xba\xe7\x4c\x0f\x02\x73\xe4\xf9\xa6\x63\x63\xc2\x3f\xec\x3f\x4c\x42\x0a\xae\x30\xd7\x78\xdd\xdc\x7e\x22\xf2\xa5\xad\x74\x30\x3f\x00\x01\x9a\x22\x3b\x78\x0d\xcc\x29\x72\xc2\x00\xfb\x8d\xe1\xbf\xa2\x4b\x96\xa3\x4e\xce\xdf\x35\x35\x0b\xbd\x9a\xf6\x6b\xe0\x01\xdb\x07\x6a\x60\x3a\xf6\xab\x8f\xfc\x0d\xee\xb9\xb0\x6a\x99\x1b\x68\x64\xab\x8e\xb6\x19\xf3\x6f\xec\xa9\xdb\xc9\xf1\x4f\xbf\x76\xba\x6d\x0d\x78\xda\xab\xea\xd8\xba\xe3\x4d\x4d\xdb\x78\xf5\x03\xcf\xb4\x0d\x1f\xfb\x8d\x39\xf6\x16\x63\x8c\xd4\xc9\xab\x1e\xda\xb1\x2e\xe8\x68\x26\xda\x5c\xd7\x81\xe5\xa3\x23\x35\x53\xd3\x7e\x9d\x22\xdf\x07\x46\x24\xb0\x00\xde\x66\x22\x62\x11\xcf\x59\xbc\xfa\x48\x0d\x3d\x33\x58\x6d\xc0\x75\xfd\xd7\xd6\x00\x08\x78\xea\xf8\xd5\x05\xc1\x18\xfb\x8d\xb9\x21\xb4\x4c\xf5\x65\x63\x31\x15\x04\xc0\x72\x8c\x5f\x5f\xbe\xc8\xad\x7a\x03\x2b\xd6\x64\x65\x80\x15\x73\x98\x32\x28\xb6\x3b\xed\xad\xe4\x3f\xbe\x69\xd8\xc8\xf3\x81\xaa\x3a\xa1\x1d\xfc\xba\x2e\x8b\x2c\xcb\xb4\x0d\xd3\xf7\x43\xe4\x99\xb6\x86\x96\x37\xe4\x55\x77\x16\x3a\x5e\x38\xf5\xe1\xca\x47\xb3\x9b\xc2\xc8\x9e\xdf\x23\xe9\x7a\xa6\x8a\xee\x50\x1f\x7b\xe6\x3d\x88\x63\xd3\x0f\x74\x84\xee\x94\xbc\x43\x0c\x86\xab\xf7\x18\x6a\x6b\x7d\x08\x2c\x60\xab\xc8\xff\xf5\x45\xac\x74\x94\x16\xd6\x11\xb3\x15\x25\x21\x5d\xaf\x55\x86\xbb\x5b\x82\xe5\x86\x8a\xe3\xad\xb0\x08\x58\xaa\xd7\xda\x9d\x96\x58\xac\x75\x12\xf2\x7b\x99\x57\x77\x82\x56\xf7\xa1\xea\x08\xdd\x03\x7c\x10\xbb\x1f\xdb\x0b\xfd\xc0\x32\x6d\xe4\x5f\x43\xde\x0b\xdd\x8d\xbb\x61\x81\xa2\x30\x70\x05\xf7\x20\x74\x3f\x6e\xbc\x32\xae\x81\xc6\x12\xf7\x23\xee\xd7\xc3\x35\xd0\xbd\xd0\xdd\xb8\x6e\x08\xfd\x10\x5e\xc1\x8c\x05\xde\x83\x67\x99\xfe\x78\x16\xa2\xf0\x9a\x4d\x93\x62\xf7\x63\xa3\xeb\x36\x8d\xae\xdf\x8d\xe6\xe8\xfa\x75\xb8\x58\xe0\x6e\xbc\x38\x64\x8c\x11\xd0\xae\xc3\x1e\xc9\xfd\x61\xf4\x6d\x18\x43\xb3\xd7\x3b\xd5\x40\x60\x5f\x01\x87\xc0\xbe\x9b\xf0\x36\x2e\x5d\xe3\xba\x13\x79\x2f\xe6\x66\xdb\xbf\x0d\xbb\x91\xda\x22\x47\xb2\xa7\xc0\xa7\xc1\xf0\x96\xd8\x21\x6c\xdd\x90\xdc\x87\xa1\xeb\x72\x87\xb0\x72\x43\x2e\x8e\x14\x37\x84\xf6\x2b\xff\xa6\xdc\x5d\x83\x88\x57\xfd\x4d\x99\xfd\x1a\xbe\x21\x89\x6e\x0e\x20\x5e\x6c\xd7\x65\x8e\x7c\xfb\xba\x28\x04\xf6\x75\x81\x9d\xef\xdd\x25\xb5\x71\xa5\xad\xa0\x32\xe8\x28\xb5\x76\xb1\x5e\x4b\x0a\x5b\xae\xe1\xcf\xac\xad\x44\x5b\x2a\x28\x55\xf1\x0c\xeb\xd7\x36\xbf\xad\x81\x29\xfa\xb9\x7b\x0f\xeb\xac\x5c\xf4\x73\x7b\xcb\x2f\xac\xad\x8e\xd1\x14\xfc\xc4\x7e\xfc\xc2\xea\x0b\x1b\x79\x3f\xb1\x1f\x51\xda\x2b\xb5\x14\xb1\xa3\xec\x90\x77\x78\x5f\x8e\x10\x8f\x2f\x6e\x81\xa5\x7a\xb5\xaa\xd4\x3a\x57\x90\x63\x01\xac\x5e\x3b\x06\xc0\x8a\x6d\xec\x69\x97\xa3\xee\xde\xf3\x23\x90\xa7\x53\xcd\xbb\xe1\x6f\x75\xee\x2d\x74\x73\x3c\x47\xb6\xac\xd5\x3b\x27\xf6\xc4\xfa\xc5\x4e\x61\x4f\x2b\x99\x94\x1e\xa9\x3f\xa0\x9c\x10\x79\xcf\xe0\xcf\x40\x22\x03\x34\x2a\x19\xd7\xd8\x9c\x44\x5c\xcf\x51\x91\x16\x7a\xc0\xc2\x2c\x60\x1b\x21\x30\x50\x64\x86\x3b\x93\xe8\x8d\x98\x86\x74\x10\x5a\xc1\x6b\x00\xa0\x85\x7c\x17\xa8\x68\x73\x22\x78\x3a\xb9\xba\x30\x83\xf1\xab\x63\x6a\x89\x24\xff\x68\xb0\x49\x87\xdc\x0e\x33\x72\xdd\xc3\x20\x77\x0e\x90\x66\xf0\xd8\xcb\x93\x51\xf4\xdb\x17\x0c\xc3\x76\xef\x98\x1a\xa6\x8e\x81\x07\xd4\x00\x79\xd8\x1c\x78\x9b\x3c\xf4\x1b\xc3\x7e\x8f\xe6\xa6\xd6\xad\x54\x5e\x22\xe9\xcd\x8d\x36\x98\xa2\x14\x61\x96\x4e\x13\x9e\x03\x2b\x4c\x93\x26\x08\xf2\x54\xdc\x02\x7e\x30\x75\x34\x53\x37\x91\x86\x99\x76\x80\x36\xe7\x43\x59\xc9\x89\xdd\x4a\x07\xc3\xf7\xc2\x5f\xbe\x9f\x7a\xc1\x7e\x3d\x3f\x68\x15\xff\x43\x26\xd9\x66\xdf\x18\x34\x0d\xd3\x0e\x4e\x2e\xfa\x68\x66\x87\xd3\xf4\x6b\x76\x38\xf5\x43\x88\xec\xc0\xdb\x1c\xec\x76\x03\x3e\x96\x31\x6d\xdd\x02\x9b\xf3\x9f\x86\xfc\x20\x9d\x4e\x2c\x38\x76\xa6\x48\x73\xa6\xc0\xb4\x53\xa4\xa8\x33\x5b\x07\x63\x0f\xf9\x63\xc7\xd2\x7c\x2c\x40\xcb\x53\x66\xba\x05\x8c\x4b\x8c\x52\x67\xe9\x58\x24\xb1\x33\xef\xb7\xf9\xad\x95\x5e\xa3\x53\x2d\x26\x15\x14\xa9\x8c\x7d\xfb\xb6\xb3\xdd\xbf\x7e\x63\xf8\xf7\xef\x97\xef\x3e\x32\xd5\x09\xc6\xb1\x19\x63\xa4\x73\x1f\xd9\x6c\x0a\x1f\x75\x8f\x4d\x62\x14\x7b\x86\xed\x68\x28\xe9\x16\x47\xee\x70\xae\xf4\x78\xd3\xfa\xa8\xfa\xe3\xf4\x2f\x26\xb2\x7d\x0f\xf8\xe3\x04\x99\xf3\x15\xe8\x7a\x68\x7e\x53\x08\x86\xea\x04\x05\x96\xe9\x07\x37\x45\xf7\x39\xe5\x6e\xe6\xe3\xb7\xa3\x22\x4e\x60\x4e\x2f\x2c\x82\x28\xda\xa4\xb8\x59\x62\xa6\x8f\x53\xd7\x3d\xde\xc9\x54\x1f\xf4\x5c\x70\x98\x4b\x19\xf0\x31\xcc\x61\x14\x97\xbc\x65\x9b\x91\x7c\x74\xc6\xb6\xc7\x8b\x6f\xdb\x10\x60\x59\xc8\xbb\x33\x98\x44\x77\x9a\xda\xa5\x60\x12\xd5\x51\x80\xef\xa3\x20\x58\xb9\xe8\xc2\xf2\x4b\x8a\xa9\x8e\x96\x1a\x7d\xc9\xef\x47\xb2\x71\xc5\xe1\x5a\x7c\x89\x2b\x13\xb7\x54\x27\xa4\x6e\x69\x4e\x96\x3a\xae\x29\x06\xd3\x4d\x08\x48\x37\x48\x54\xd1\xb1\x2f\x70\x89\x2e\x5e\x0a\x51\xd1\x45\x4c\x73\x42\x68\xa1\xcd\x2a\x51\xcd\xa8\x40\xf8\xa7\xc2\xe0\xf6\x38\x19\x8f\xe5\xc4\x1b\xb7\x03\xbc\xe0\xd1\xdb\x3b\xb7\x7e\x71\x72\xeb\xce\x5b\x2e\xb9\x71\x9c\x7b\x7f\xd4\x8b\xe3\x23\x77\xec\xc4\xa6\x9b\x36\x97\xcc\x59\xbc\x71\xbc\xe0\xca\xd6\xbd\xdd\xf7\xd0\x32\x00\x41\x80\xa6\x6e\x80\x6d\x16\xb3\x1f\x80\xa9\x8b\x6d\xb2\x1f\x27\x8c\xdf\xc1\xd6\x8e\x8d\xce\x77\x4b\x1d\x98\x56\xe8\x25\xf6\xca\x4b\x1a\x12\xf6\x8b\xeb\x02\x89\x9b\xcf\x77\x8f\x3d\xec\x85\x29\xd8\x96\x16\x1c\xef\x74\xe6\xbe\x45\xc3\xfd\x17\x86\x7f\xc7\xc4\x9a\x8c\xc5\xbf\xfe\x9f\xdf\x18\xcb\x30\x14\xf3\x3d\x75\x42\x92\xc7\xa6\x0f\xcf\x4b\xb2\xcc\x92\xdc\x0e\x2e\xc5\x83\xa8\xc6\xb5\x89\xbf\xa9\x84\x36\x67\xbd\x07\xa8\xf8\x21\xdc\x92\xf0\x90\x7f\xb4\x37\x9e\x67\x1d\x9b\x45\xe3\x21\xb0\x5f\x30\xe7\x7c\x12\x67\xd4\x8f\x72\x3a\x40\xdc\xb3\x69\x5f\xd8\xd7\x4e\xae\x23\x7b\x8e\x2c\xc7\x45\x37\x76\xb1\x83\xea\x07\xf6\x9e\xc4\x71\xfe\x01\x13\xec\x0a\x86\xb1\x09\x66\x3e\xba\x63\x73\x07\x7e\x70\xcb\x10\x1b\xa0\xdb\x46\xd8\x15\x22\x8f\x10\x4f\x0d\x71\xa4\xed\xa2\x31\xb6\x05\x90\x0f\x5b\x62\x5b\x8c\xfd\x48\x62\x1f\xa3\x4f\xd0\xea\x2e\xe9\x05\x32\x8d\x71\x70\x66\xb6\x94\x21\x1d\x6a\x3f\x1f\x1e\xd5\xa1\x74\xfd\xed\xb0\xc4\x8f\xcf\x65\x29\xcb\xef\x5a\x20\x48\x54\xae\x3e\xca\x2a\x51\xa8\xff\x88\xb9\x6f\xe5\x16\xd7\x52\x85\x34\xa8\xcb\x09\xc8\xe9\x59\xc8\x32\xa7\xe6\x85\x0c\xe3\xea\xe1\xee\xf3\xf2\x83\xc4\xe3\x8b\x0f\x1d\x94\x12\xf7\xc7\xa3\x39\xb9\x7d\x3b\xc4\x7f\xa5\x2f\xb2\xa3\xfa\xe6\x87\x67\x3f\xf9\x08\x28\x9e\xff\x60\x79\x14\x76\xef\x38\x4e\x9c\xce\xcc\x32\x7a\x08\x76\xf1\xaa\x3a\x06\xb6\x81\x52\x8f\xb0\x49\xe3\x24\x9f\x3a\x7d\x3c\x2e\x1f\x8a\xc5\x1f\x37\xd1\xff\xb0\x7d\xa0\xa3\xad\xd2\x8c\x13\x2c\x3d\xe4\x87\x56\x6a\x24\x0f\x96\x53\x74\xf3\xb8\x76\x78\x42\xf8\x11\x7b\xca\x9b\xf3\xa0\xee\x78\x37\xea\x5a\x98\x2c\x76\xc4\x1b\xf6\xbd\x0e\xe9\xbf\x1b\xaf\x58\x6b\x2b\xad\x0e\x56\xac\x75\xea\x87\xaa\x50\x4f\xac\x74\x95\x36\xf6\xed\x29\x2f\x32\xfd\x6c\x63\x28\x32\x43\xba\x2f\x2a\x85\x41\xbf\x45\x76\xcb\x75\xb2\x5b\xa7\xb3\xdd\x7c\xa1\xdb\xe4\x68\xa5\xdb\x28\xd7\x6b\x64\xb3\xd0\xa3\xfb\xad\x42\xbd\xd8\xaa\x95\xcb\x05\xf2\xe9\x05\x23\xf0\xdd\xeb\x05\xe3\x19\x5e\x10\x28\x9a\x11\xc8\x17\x0c\x7f\x89\x2d\x8c\x3d\x3d\xbd\x60\x4f\x62\x53\x14\x45\xf1\xf7\xef\xa7\xe8\x02\xf9\xfd\xd7\x2d\x42\xd9\x56\x63\x58\x28\x56\x48\xa9\x48\xe5\x6a\x4d\x3a\x3b\xa8\xe4\xaa\x35\xb9\x92\x2b\x75\x6b\x8d\x2e\x59\x18\x52\xa3\x6a\xae\x5d\xa8\xd7\xba\x92\x52\x17\xdb\x7d\xae\x29\x71\xf5\x01\x59\x78\x7a\xc1\x84\xed\x8b\x8d\xff\xe3\x36\xc4\xa8\xc7\xf9\x0c\xf2\xcd\x52\xbf\x57\xe9\xd7\x87\x85\x5c\xa5\xd7\x29\xf7\x7b\x4c\x2e\x5f\x10\xa9\x4a\x6d\x38\x24\x4b\xcd\x72\x95\xab\x8b\x25\xb1\xab\x34\x73\x5d\xb6\xd2\x90\xda\x4a\xae\x37\xa8\xd7\x22\x03\x31\xef\x36\x10\x75\x9b\x90\x34\x28\xe7\xd9\x56\x8d\xae\xd7\x8a\x4a\x43\xaa\xd6\x72\x59\x8e\x22\x45\x9a\x62\x47\x4c\xa3\x26\xb7\x5b\x95\x7c\xbf\xcc\xe5\xb3\x15\xa9\xda\xac\x14\x73\x75\xba\xcd\x29\xc3\x7e\xaf\xbb\x31\x10\x1d\x19\xe6\x88\xcf\x0d\x03\x51\x97\x9d\xfc\xb4\xfe\xf4\x80\x73\x5f\xae\x2a\xbd\xd7\xc3\x8f\x2b\x4b\x7b\xa3\xb1\x94\x26\xf0\x3a\x43\xb1\x08\xb1\xbc\x46\x40\x92\x83\x0c\xe4\x05\x9d\xa4\x80\xce\x50\x04\x01\x39\x86\x15\x00\x49\xeb\x40\x27\x68\x9c\x02\x1a\x0e\x19\x12\xb2\x14\x05\x71\x0e\x22\x41\xd8\x18\x06\x7f\xf0\xb5\xc1\x60\x38\x12\x90\x88\x22\x75\x9d\xa4\x79\x80\x73\x10\x47\x1c\xae\x6b\x84\xce\x6a\x14\xc1\xab\x84\x0e\x54\x8d\xc4\x21\xab\xaa\x38\xaf\x52\x94\xc6\x70\x1c\x43\x32\x02\xcf\xf2\x04\xc9\x00\x82\xdd\x78\x55\x34\x2f\x4f\xe2\x7f\xec\x2b\x3b\x28\x9b\xf4\x2a\xb3\x6a\x97\xb3\x9c\x6c\xcb\x42\x81\xc4\x97\x6f\xd9\x67\x1f\x37\x02\x7f\x51\x5c\xac\x89\x81\xd6\xee\x0f\x41\xb6\x04\x72\xc6\x46\x5e\xa9\xd1\x15\xb0\x76\xc9\xe6\x4d\xe4\x91\x38\x20\xe8\x48\x2c\x3b\xf9\x1f\x18\xc8\xa7\xbe\x9e\x4e\x16\xf6\x05\x47\x25\x49\x5e\xa5\x35\x9c\x21\x28\x88\xeb\x08\x08\x48\x20\x80\x46\xd0\xaa\x00\x00\x87\x18\xa0\xd3\x3c\xae\x12\x38\x0f\x19\x8e\xe5\x09\x5c\x07\x02\xa5\x33\x34\xa3\xea\x34\xc7\xf0\x00\x90\xc4\xc6\xc9\x3e\xc3\xd9\x79\x04\x59\x4a\x23\x18\x20\x20\x5e\x25\x69\x9a\x15\x74\x15\xa7\x78\x12\xe2\x24\xcb\xf1\x10\x0a\x08\x70\x02\x80\x50\xd7\x70\x9a\x67\x09\x5d\x65\x05\x4a\x55\x79\x1a\x47\x2c\x42\x1c\x81\x9e\x5e\x30\xf2\x05\x23\x18\x9c\x17\x18\x9e\x24\xd8\xad\xc7\x4a\xf9\xc6\xe8\x8d\xa8\x85\x8c\x83\xc3\x12\xd7\xa7\xed\x55\x7d\xde\x5d\xe6\xa9\x9e\xeb\x4c\x9e\xe7\x39\xb1\x1e\x48\x44\x99\xac\x72\x59\x8e\x1d\x59\x53\x45\xab\xbb\x3d\xa9\xca\x14\x2a\x9e\x90\xab\xbd\x31\xcc\x0c\xb0\x0b\xb2\x50\xae\x06\xb3\x4e\x23\x57\x99\xe7\xf9\x55\xa3\x9b\x01\xa2\x13\x59\xb8\xaf\xcb\x86\x14\xfd\x54\xdc\xff\x13\x07\x33\xe3\xf0\xfb\x42\x14\x4b\xcb\x78\x46\x5a\x5d\xb1\xb7\x2c\x4d\x09\x4b\xae\x2e\x16\xb3\xf0\xad\xac\xae\x9a\x6b\x5f\xe0\x72\x19\x51\xe9\x98\x92\xd1\x6c\x78\x0b\x96\x5a\xcc\x40\x23\x5f\x0f\xde\xf0\xde\x0c\xbd\x49\xad\xbc\xcd\x8b\x74\x79\x51\xb2\x4d\xce\x9e\x21\x10\x66\x70\x65\x3c\xce\xe4\x27\xfc\x4a\x91\xa7\x9c\x5d\x88\x55\xa5\x78\xb4\xe2\xa7\x79\xc5\xde\xa3\x25\xf5\xb6\xfb\xff\x87\xbd\xee\xf5\x68\x1a\x6a\xb4\x46\x90\x34\xa9\x01\x88\x6b\x88\xc5\x55\xa0\xab\x90\x16\x00\xad\x11\x3c\x25\xe0\x2a\x44\x04\x15\xb9\x36\x49\xd3\x24\x4d\x40\x92\xa0\x48\x08\x09\x46\x27\x00\x8e\xd4\x8d\x37\x7e\xc6\xaa\x20\x71\x46\x63\x55\x40\xe8\x1c\x0b\x38\x96\x62\x18\x96\x86\x0c\x2e\x40\x4a\xd3\x71\xc8\x68\x90\x65\x38\x02\x41\xc8\xb2\x2a\x4e\x53\x2c\x0b\x09\x81\xc2\x69\x8e\x52\x37\x3b\x26\x09\x10\xff\x14\x25\x13\x7b\x8f\xe6\x76\x1e\x2d\x95\xab\x9d\x66\xb7\xe3\x37\x58\x97\x6d\x79\xad\x4e\x69\x66\x33\x40\x28\xca\x59\xa9\xd2\x23\x8d\xe6\xb3\xdb\x20\x5a\xaa\x50\xe8\x97\x9d\xf1\xb0\x61\x4a\xce\x22\x4f\xac\x71\xb3\x08\x9d\x26\xd3\x0f\xba\x36\xff\xcc\xa0\xbc\x5c\x33\x66\x3a\x9c\x4e\xd7\x6d\x09\x0f\x3b\x05\x5d\x8f\x9d\x21\xf2\xe8\x84\x5f\xe4\xaa\xe5\xd2\x1c\xb0\xcd\x69\xdd\x92\x2b\x01\x7a\x1b\xc2\xb1\x3b\x2c\x72\xed\x6e\xb9\xae\xa3\x12\x2c\x6a\x93\xd9\x9b\xb0\xa8\x13\x62\xe0\x18\x83\xfe\x6a\x2c\x90\x2e\x59\xeb\x8d\x2a\xdd\x92\x2f\xf0\x95\x01\x1c\x0d\x0a\x5e\x30\x5d\x28\xb5\xa9\x3f\xaa\x2a\x2a\x3f\x1d\x4d\x66\x6c\x84\x5c\x4d\xf1\xd8\x7c\xaa\x47\xfe\x6f\xf7\xd8\x0b\x19\x48\xca\xe3\x91\x07\xf2\x99\xf3\x2a\xf5\x23\x60\x97\x2a\xac\x8f\x61\x9e\x16\x49\x1f\x40\xbb\x50\xe2\x7c\x6f\xee\x96\x28\x73\x26\xd2\xef\x1e\x5d\x1c\x14\x9b\xd9\xa2\xd4\x1a\x95\x9b\x23\x8a\x69\x65\xeb\xed\x4a\xbd\x58\x65\xea\x7d\x8a\xc9\xe6\x58\x4e\x62\x46\xad\x86\xd4\x53\x9a\x85\x61\xbd\xcd\xd0\x5c\x7d\x50\x2d\xf4\xe2\xfd\x27\xce\x92\xf2\x73\x65\xd0\x12\xcb\xd9\xd6\x6a\x96\xd7\x04\x33\x87\x5b\x61\x73\xed\x79\x90\x55\xe6\x73\x93\x9b\x56\x96\xbd\x92\xf8\x5c\x68\x73\x6b\xce\x3b\xf8\x4a\xb4\x5d\xc4\xdb\xc9\xc6\xcf\x15\xb3\x3f\x6c\xe1\xac\xd5\x2d\xae\x27\x6a\x38\xc7\xbb\x64\xc3\x9e\xba\x9e\x27\x0f\x55\x67\x45\xba\x55\xbe\x1b\xf2\x70\x5d\x14\x3a\x82\x23\x45\x7b\x40\x76\xc4\xd7\xb7\x7b\x8e\xb1\xff\x27\x7b\x00\x8d\x7e\x97\x45\x51\xb4\x95\x83\xd2\x6c\x5e\x0e\x7c\x0e\x66\xde\xf8\x36\xce\x1b\xed\x7c\xe0\x21\x6a\xc9\xbf\xe9\xf3\xb1\x2d\x3f\x0f\x54\xd8\xb2\x71\x97\x2d\x97\x5a\xca\x68\xea\x44\x70\x3c\xc9\x49\x4a\xae\xe7\x90\x65\xb7\xa4\x4a\x4b\xb5\xa6\x94\x48\x73\xbe\x1c\xca\xa8\xd0\x58\x12\x33\x2b\xe8\x41\x91\x5b\xca\x23\x5e\x36\xf8\xcc\x58\xca\xac\x8a\x33\xab\x67\xb7\x72\x13\xa9\x49\x09\xed\x2a\xcf\x7a\xbc\x3f\x57\x67\x2b\x36\xc8\x14\xb2\x56\x79\xc6\xa0\x0e\x2e\x35\x7f\xff\x3e\x8d\xed\x9f\x3c\x35\xd4\x43\x53\x53\x3d\x9e\x1a\x39\x6b\x3c\x17\xcb\x6f\x22\x1c\x34\xda\xc5\x71\x38\x96\x2d\x40\xb4\xf5\x35\x67\xd1\xc3\x2a\x29\xb9\x42\x08\x60\xad\x58\x69\x33\x55\x4d\x10\xc4\xfd\xd4\x94\x4e\x62\xc3\xbb\x4d\xbf\x5a\x95\x80\x0b\x0b\x7c\x29\x58\x51\x1a\xae\x17\x67\x6b\xd7\x56\xcb\x6f\x21\xcb\xf5\x25\x7c\x65\xb6\xb8\x86\x20\x0d\xfb\x9e\x9d\xe5\x9c\xd6\x62\x01\xfc\xc6\x73\xcb\x6e\xc8\x6f\xf5\xd6\xb2\xde\x77\x83\x60\xd5\x6d\x49\x61\xa7\xa4\x66\x7b\xf9\x52\x67\x4c\xdb\x05\x4d\x99\xae\xc5\x45\x6c\xfa\xcb\xeb\x2c\xad\x8e\xfe\x81\x75\xb6\xab\xa5\xef\x27\x93\xe0\x29\xc8\xaa\x48\x83\x3a\xa2\x74\x82\xd4\x28\x95\x27\x48\x02\x68\x40\x43\x9a\x4e\xe8\x24\xc5\x21\x9d\x67\x39\x5c\x47\x8c\xa6\xb2\x1a\x21\xe8\x34\xe0\x00\xc9\x0b\x34\x4d\xb3\x2c\x0b\x92\x93\x1a\xed\x0b\xb1\x57\x03\xbe\xa5\x29\xa2\x93\x2b\x94\x9d\x11\x45\x16\x07\xed\x3e\x23\xd7\xc3\x60\xee\xb4\x9f\x9f\x2b\xe1\x70\x9e\xeb\x4e\x64\x5a\xab\xcc\x1b\xa1\x7f\x2b\x42\xa7\xd5\xcd\x1f\x89\x59\xe9\x35\xeb\x77\xdb\xf2\x50\xb7\xde\xdb\x72\xf7\x3d\x8e\xf8\x03\x66\xd8\xd9\x2b\x3a\x08\x9e\xad\xb0\x14\x20\xdd\xf1\x54\xe4\xab\xae\x63\xdb\x68\x19\x58\x20\xb4\xd5\xf1\x29\x50\xf4\xb1\xaa\x7b\xc0\x2c\xe0\x07\xf1\x57\x53\xb6\x8f\xd6\x52\x58\x3d\x9c\xab\xdd\xc1\x63\x1b\x47\x80\xa7\x8e\xcd\xf9\xf6\xe2\x29\x8f\xff\x8a\xaa\x73\x5f\xb7\x5f\x72\xf9\xfa\x13\x23\xe2\x7a\xdd\x57\x1f\x79\x73\xe4\x7d\xfd\x89\x7d\x9d\xe3\xff\xb0\xff\x50\x3f\x58\xf6\x87\xa1\xb1\x2c\xc3\x31\xaa\xfe\x75\x2b\xa4\x86\x9e\x87\xec\xa0\x12\x0d\xf3\xeb\x4f\x8c\x3a\x7e\x3f\x1b\x7d\x38\xc4\xff\xfa\x13\xfb\xbf\x5f\x76\x4a\xff\xeb\x4b\x92\x42\x24\xb9\x51\xc2\x30\x34\x4b\x50\x48\xa3\x18\x8e\xe4\x09\x01\x87\x1a\x40\x02\xcd\xe1\x82\xce\x08\x90\x10\x18\x1d\x22\x41\x17\x70\x08\x71\x9e\x26\x74\x46\x43\x0c\xa7\x12\x0c\xc1\x91\xba\x80\xeb\x38\x0b\xb6\x8c\xf6\xb8\x9b\x69\xfc\xfa\xf3\x44\x5b\x3c\xb0\x8d\x1d\xbe\xfe\xc4\xf0\xa3\x4b\xff\x7d\x72\xbf\x6f\x03\x77\xc3\x0b\xe9\x14\x01\x48\x1c\x50\x02\x8f\x10\x47\xa9\x88\x24\x49\x8e\x41\x80\x27\x38\x8e\xe3\x59\x08\x54\x86\x66\x19\x56\xa7\x28\x4d\x55\x69\x9d\xd2\x91\xca\xe2\x1a\xc3\x68\x9a\x4e\x6c\x4e\x87\x5f\xbf\xa4\x68\xb8\x60\x83\x47\xcb\x1e\xef\xb7\x01\xf1\x72\x7e\xcd\x09\x03\x37\x0c\x3e\x77\xec\xd7\x2c\xfc\xf0\xa8\xff\xa3\x2d\x7c\x9f\x97\xfd\xb5\xc1\x5f\x1b\xfc\xb5\xc1\x5f\x1b\xfc\xb5\xc1\x5f\x1b\xfc\xb5\xc1\x5f\x1b\xfc\x41\x1b\x44\x3f\xfd\xbf\x2f\xff\x7d\xef\x41\xc6\x57\xdd\xe8\x23\xd8\x69\xaf\xa7\xdd\x39\x34\x2e\xb9\x78\xcb\x1c\xde\x94\x8c\xae\x3a\x1b\xdb\xfa\x70\xac\x95\xe0\xa4\xca\xb2\xe4\xf3\xb8\xc2\xd1\x21\x63\xf2\xbd\x76\xb3\x31\xc6\x43\xfe\x99\x5d\xec\x8b\x01\x72\xf4\xef\xd2\xe0\x60\x9d\xcc\xd0\x19\x25\x68\x14\x95\xb1\x07\xa8\x80\xd7\x8b\x14\x47\x8f\x16\x19\x8b\xca\xe3\x23\xa1\x8c\x4c\xb3\xdb\xca\x8f\x66\x9f\x5d\x8c\x88\xca\x1c\x79\x99\x36\x66\xd5\x6c\xa0\x0a\x45\x33\xcf\x2a\xf5\x9e\xd7\x2b\x65\x1a\xe1\x60\x6c\xac\x87\x65\x9b\x64\x5c\x1f\x37\x82\xca\x64\x49\x51\x78\x74\x57\xce\x5e\xd0\xe2\xc9\x83\x31\x25\xab\x67\x8a\x82\x28\x37\x7c\x7b\x51\x1d\xb7\xde\x94\x2e\x33\x30\xba\x56\x55\xe1\xb2\x5c\xde\xe8\xf6\x2a\xeb\xe7\x67\xae\x25\x34\xd7\x43\xd6\x5b\xbb\x75\x93\xa4\xac\x46\xaf\x63\x10\x70\x11\x2a\x4d\xaf\x36\x2d\x23\xd0\x77\x79\xa6\xc3\x66\xc6\x1d\x37\x1f\x92\x45\x26\x33\x14\x17\xb9\xbf\xc5\x9b\xb4\xe2\x4d\x64\x70\xf3\x4d\xc1\x73\x0a\x27\x3f\xcf\xd0\x04\xe0\xdd\x15\x70\x9f\xfb\xf3\xb6\xb8\x68\x9a\x84\xe6\x28\x8d\x59\x47\xe8\x0e\x1a\x2d\xc2\x9c\x15\x13\x75\x12\x6f\x56\x63\x2b\xa8\x0e\x8c\xb7\x65\x15\x74\x1b\x02\x9b\x5d\xeb\xbe\x80\x70\xd5\xf1\x6a\xa3\xc1\x3a\xdb\x2f\x4d\x72\x4e\x99\x9b\xcc\x27\x8b\xc3\xd3\x4f\xe3\x70\x7f\x62\xc2\x0f\x3f\xc6\x4f\x4a\x43\x20\xc1\xde\x60\x44\xca\xd6\xa0\x0f\xbc\x1e\xdb\x5d\x2e\x60\x9f\xca\xd7\x4a\x86\x6b\x53\x62\x5b\x1a\x17\x73\x2e\x03\x97\xed\x62\xdf\x48\xc0\xcc\xbd\x45\xe2\xd7\xac\x17\xb6\x9f\x3b\x11\xbc\x8c\x3f\x73\xe4\xb4\x51\x6e\x2d\x73\x15\xaf\xdd\x77\xe8\xd0\xa1\x16\x5d\xbd\x01\xdf\xc6\x62\x66\x19\xb8\x06\xc1\xd4\xaa\xd6\xc4\xec\xcf\xb5\x52\xa0\x54\x06\xc8\x69\xcf\x49\x3a\x63\x30\x4a\x5d\x2e\x16\x0b\xcf\xd9\x15\x2b\x0f\x87\x33\xbf\xba\xa2\xbd\x56\xa9\xa1\x89\x8c\xe3\x36\x0b\x27\x75\xa3\xec\xc7\xfc\xeb\x6a\xf1\xec\xc2\xc7\x01\x1f\x28\x21\x5d\xfc\x90\xd9\x7b\x8b\x48\x47\x1f\x34\x3b\x3c\x38\xa3\x38\x1a\x09\x02\x45\x0b\x50\x40\x3a\xa7\x41\x20\x00\x46\x83\x14\x45\x09\x90\xe3\x75\x0d\xf0\x3a\x45\x73\x1c\x07\x09\xa0\x53\x14\x04\x34\xcb\x03\x8d\x51\x71\x4d\x17\x68\x56\xa3\xb5\xed\x23\xd8\xa3\x68\x58\x3d\x58\x37\x9e\x58\x33\x93\xc5\x2b\x78\x29\xbf\x0a\xc6\x8b\x1a\x61\x0d\x71\xb0\x72\x1d\x42\xa8\x15\x96\xf3\x8a\xb4\xaa\x33\x41\x56\x51\xa5\xde\x7c\x91\x13\x16\x94\x11\x78\x75\x7b\x24\xde\xf1\xba\xf8\x64\x28\x9a\x5d\xe9\x11\xfd\xc3\xcc\xb3\x9a\xea\xed\x37\xf5\x9f\x57\xb5\xd3\xed\x4e\xb0\x34\x60\x70\x96\x46\x10\xb0\xb4\x4e\xaa\x1a\x04\x1a\xe4\x19\x16\xea\x14\x4d\xf3\x34\xcf\xe8\x2a\x4b\xb2\x24\xcd\x01\x0d\x50\x48\xa3\x04\x55\xd3\x74\x5c\x67\x05\x9c\x24\x28\x0a\xb2\xb1\xdd\xc9\xf3\x6a\xe8\x83\xe3\xe6\xe9\xc3\xfd\xc5\x3f\x30\x6e\x12\x92\x88\x27\x35\x08\x20\xc4\x49\x1a\x92\x1c\xc0\x55\x8a\xa0\x71\x15\x70\x84\xc6\x03\x55\x80\x2a\x47\xf0\x14\xa1\x0b\x3a\x03\x28\xa8\xb1\x02\x52\x01\xa5\xf1\xbc\x0e\x71\xa4\x32\x6a\x3c\xee\x94\x2a\xf0\x83\xe3\xe6\xba\x87\xfb\xab\x7f\x60\xdc\x2a\x82\x90\xe7\x18\x80\xe3\xba\xce\x22\x82\xe2\x29\x80\x74\x5c\xd7\x48\x86\x00\x1c\xab\x93\xa4\x4a\xe8\x02\x80\x24\x20\x35\x5d\x57\x21\xce\x71\x3c\xc3\x70\x14\x0b\x34\x44\xb2\x8c\xb0\x2d\x7d\xa7\xac\xb3\xc4\xb8\xa5\xd0\xa1\x9c\x80\x66\x66\x52\x43\x59\xba\xcd\x0c\xe5\x14\x6a\xcf\x6b\x82\x6b\xad\x4c\x9f\xb0\xf4\x6a\x6e\x38\x6d\xf6\x8d\x7d\x94\x15\x45\x6e\xea\xc7\x9f\x6a\x10\x8d\xf4\x21\x5f\x1e\xf7\xde\xee\xf2\x63\xfa\xa7\xea\x41\xff\xfb\xd7\xd9\xc5\x98\xf9\x39\x01\xf3\x4f\x47\xcb\x7c\x85\x2f\x34\xe7\xcd\x09\x2c\x93\x05\x91\xea\xf7\xde\x5a\x5e\x79\xfa\x36\xc0\x71\x3d\xcf\xfb\x95\x22\x37\xc5\x95\xd6\xa2\xd4\xcf\x88\x03\x4a\x8c\x9e\x8a\xef\x5f\xd9\x13\x73\x9c\xfe\xfe\xce\xbd\x5e\x14\xeb\x8c\x57\x4e\xe2\xc5\xab\x63\x33\x29\x92\xbc\x9e\xcd\x27\xcd\x6c\xd3\xa9\x89\x25\x53\x6f\xb4\x06\xb2\x53\x19\xcf\x83\x95\xda\xa1\xac\x5c\x43\x6a\x32\x84\x31\xd1\xfc\x5c\x01\x64\x6b\xfd\x05\xce\xb4\x33\xbd\x71\x1f\x1f\x18\x13\x0f\x97\xb2\x0d\x85\xae\x81\x5c\x8f\x2c\x4f\x55\x9f\x1a\x2d\x2a\x53\x13\xd2\x9d\x96\x57\xad\x6c\xf2\xe7\x22\xd5\x71\x27\xf8\x94\xe1\x28\x92\x9d\x5a\xe4\xba\xca\x04\x74\x06\xbc\xad\x5b\x14\x5a\x7a\xeb\x3a\xdb\x72\xbc\xde\xa2\xf6\xdc\x85\x5d\x7c\x4f\xec\x8a\x0d\x0e\x9e\x71\xf4\xc9\xb5\xd3\xe8\x90\x88\x6a\x65\xf6\x0d\x99\xd4\xdb\xd4\x29\xf2\x9d\xbc\x25\x67\x90\xa1\x52\x5c\x63\x10\x14\xca\xe5\x75\xbf\xc7\x2f\x7a\xe6\x28\x0b\xa4\x90\xa9\x30\x71\x48\x90\x43\xb0\x8a\x57\x8a\x94\xae\xfb\x1a\xaf\x9d\x27\x27\xf4\xbf\x63\xfe\x65\x24\x91\x3e\x39\x2f\xd5\x6a\x89\xe5\xb0\xb8\x5f\xff\x79\x94\xfa\xd3\x5b\xd2\xc7\x9d\xfb\xd4\xb8\x67\x03\xaa\x93\x52\x46\xac\xd3\xcc\x30\x2b\x53\x41\xa1\x97\xab\x13\x2d\x4a\xc4\xab\x68\xd2\xe0\x4b\x2d\xd6\xae\x11\xa2\x80\xfa\xa6\xb6\x2a\x06\x71\x54\xbf\xec\xdc\x62\x5b\x19\x99\x23\x88\x72\x0b\xc9\xf7\xca\x59\xbb\x5c\x0c\xfd\x0c\xce\xf4\x82\x92\x9c\xf5\x0c\xc7\x0f\xc7\x95\x66\xa6\xcb\x0e\xba\x6f\x74\xb0\xe8\xaf\xc6\x3e\xd7\x0d\xda\xb4\x54\x45\xcb\x7a\x95\x2d\xcd\x54\x7d\x56\x2a\x13\x78\xdf\xca\x4e\x26\x0b\x9b\x36\xf8\x46\x51\x7f\x2b\xe6\x37\x0e\x98\x9b\xb8\xcd\x51\x3d\x9c\x76\x56\x6b\xe8\xc1\x71\x7f\xbe\x6e\x15\xdb\xb9\x4c\xbe\x64\xb6\x58\xf2\x8d\xeb\xd8\x35\x6a\x21\xb8\xe2\xb8\xca\x0d\xf7\xc4\x3e\xd5\xb9\xe5\xc0\x98\x2f\xe4\xb0\xde\x17\x9b\x02\xd7\x22\x5a\x9d\xa0\xab\x2d\x6a\x72\xc1\x95\x33\x52\x17\xb9\x6b\xad\xd9\x18\x58\x8e\xad\x9a\x95\x5e\x2c\xff\x6f\x76\xee\xb5\x18\x82\xe0\x8f\x39\xf7\x27\xe7\x1d\x1f\x77\x6e\xf9\xd6\x80\xe0\xd4\x98\x12\x3d\x52\x33\x98\x1e\x31\x9d\x11\xc8\xaa\xaa\x79\x22\x58\xbe\xb5\x87\xe5\x91\xb0\x50\x0c\xa7\x9d\x05\xa8\xcf\x77\xcd\x5c\xbc\x77\x5f\x76\x6e\xb9\x14\x5a\x44\x50\xc9\x57\x72\x74\x6f\xb9\x08\x70\x4d\x96\x7a\x8a\xce\x06\x90\xb1\x68\xb8\xaa\x7a\x79\x43\x72\x9f\xad\xde\xa8\x3a\x5d\xaa\x01\x43\x9b\x35\x9d\x9c\x2e\x83\xb7\x25\x5b\xd5\x98\x51\x89\x56\x68\xd9\x52\x7d\x9d\x66\x15\x71\x9c\xcd\xb7\xbb\x0d\xdf\xe6\xf5\xa1\xbc\x71\xc0\xf2\x8a\x95\x48\x36\x5c\x94\x2a\x25\x56\x96\x73\xe2\xca\x2e\x0c\xbd\xd2\xbc\x90\x97\x0b\x8c\x00\xea\x02\x40\xab\x37\xb2\xf8\xbc\xe0\x72\x87\x59\xfc\x54\xe7\xce\x33\x4e\x29\xe8\x69\xf6\xb0\xde\xd3\x46\xb3\x60\xe0\x76\x0a\xd9\x00\xaa\x43\x7c\x2a\x4d\x75\x35\x5b\x2c\x2b\x46\xdf\xb6\xe6\xb9\xe2\x18\xc4\x56\xff\x37\x3b\xf7\xbc\xdd\x71\xfe\x5c\xe4\xfe\xe4\xe4\xf2\x9d\xdb\xe2\xe8\x30\x39\x57\xd2\x92\x38\xb9\x7b\xaf\x73\xc7\xaf\x0a\xcb\x27\xcf\x22\x60\x5f\xa2\x10\x85\x46\x28\xb8\x6f\xab\x89\xda\x6a\xb3\xb8\x35\xab\x57\x66\x35\x3e\x57\x58\x93\x34\xdd\x6c\xf0\x10\x0c\x6b\xa8\xd3\x29\x8d\x8a\x96\x47\xb5\x61\x4b\x22\xa8\x99\xe2\x09\x61\x83\xae\xb7\x64\x63\x25\x65\x33\x86\x1a\x1a\x64\xbe\xec\xc9\xd5\xb0\x8c\xb7\x3b\x54\xb3\x0e\xca\xdd\xec\x22\x76\xc4\xb5\x17\x16\xfa\x86\x9c\x81\xe3\xba\xec\xcd\x65\xa1\xd4\x72\x49\xde\x5c\xe8\x53\xaf\x6c\x52\x99\xd5\x42\xa3\x7b\x83\xda\x8c\x32\x47\xa3\x03\xd7\x74\x27\x4f\x26\xb6\xa9\x4e\x2e\x1f\x9c\xe2\xdf\xed\xe4\xd5\x07\xf4\xb3\xbd\xd0\xf9\x44\xfd\xef\x4e\xcf\x4c\x9d\x6c\x2d\xc4\xa3\xd2\xdf\x9d\xfa\x9f\x2e\x35\xc7\x89\x0a\xc0\x67\xdd\xd1\xf6\xdd\x92\x76\xdf\xec\xba\x71\xac\x48\xb6\x69\x8b\x9a\xb3\x25\x10\xa3\xaa\xb4\x28\xcb\x29\x0d\x5c\xf6\x0a\xb1\x46\xab\x58\x15\x5b\x43\xac\xac\x0c\xb1\x6f\xfb\xef\x87\xbe\xec\xfb\x0a\x5d\xec\xed\x73\xd2\x30\xee\xb3\x88\xfb\x57\x58\xfb\xd7\x28\xa7\x35\x98\x39\xf4\xc8\x7b\x98\x1e\x04\x76\x1a\xb3\x9d\x82\x63\x52\xf1\x17\xdc\xaf\x77\x9f\xb9\xda\x1c\xf0\x61\xba\x47\xe0\x69\xc4\xaf\x68\xc7\xba\xb5\x62\xb3\xab\x60\x87\xaf\x0c\xbe\x6b\x24\x9f\x63\xef\x77\x0e\xe0\x7c\x0e\x0e\x0d\x79\x2e\x34\x93\x39\x6a\x29\xf9\x30\xdf\x18\x2c\x8d\x68\x42\xcd\x31\xc3\x6d\xb3\x90\xf4\x26\x21\xc9\xfe\x99\x0f\x93\x8b\xb0\xd2\xb8\x1d\x94\x1c\x53\x33\xdd\x97\xa8\x75\xc8\xd5\x7e\x19\x29\x7d\x43\x1f\x67\x9a\x80\x4c\x25\x7c\xaa\x32\x6d\xd2\x2f\x34\xd5\x38\xea\x9e\xfa\x19\x4c\xfd\x10\x5e\xe0\xb8\x53\x73\xcc\x2e\xea\xc7\x71\xa5\xbd\xc4\x59\xcb\xd8\x87\x49\x1e\x00\xd3\x88\x9e\xa8\x3b\x26\xbb\xeb\x50\x71\xa9\x03\xc4\x71\xd3\xdc\xc7\x99\xc6\x68\xa9\x34\x13\x8a\x2e\xee\x57\xfb\xde\x10\x57\xda\x3b\x9c\x35\x0f\x7e\x9c\xf5\x1e\x30\x95\xf8\xb1\xba\x63\xee\xfb\x0e\x11\x57\x3a\x3f\x9c\x75\x51\x7e\x98\xf0\x01\x30\x8d\xf0\x89\xba\x8b\xc6\x8e\x3b\x3f\xbc\x1c\xda\x3a\x5c\xed\x60\x90\xd2\x65\xfa\xf1\x71\x24\x20\x53\x47\x72\xaa\x32\x2d\x4e\xf8\x68\xf6\xb2\xfb\xca\xfe\xe5\xee\x02\xa7\xdd\xb7\x3f\x81\xfb\x55\xe2\x0f\xb1\x3e\x6d\x40\xbe\x25\x1b\xb5\x2b\xbf\xaf\x33\x42\xdc\xd9\xfc\x04\x07\xab\xd7\x0e\x89\x5f\xb7\x5d\xac\xe5\x31\x18\x78\x08\x61\xbb\x3e\x18\xdf\xb1\x7e\x41\x69\x29\x58\xb2\x2f\xc6\xe1\x1b\xf6\xe7\xb9\xd9\x59\x5b\xf5\x8f\x12\x3d\x43\xda\x50\xdd\x6e\xf0\xc7\x44\x13\x82\x67\x7c\x0e\xdd\xe0\x3f\xca\x63\x8f\xb0\xd1\x7f\xf0\x9d\x23\x0a\x97\xf3\xa9\xa3\xbe\xf5\x8f\x50\xd8\x81\xc4\x2c\x12\x6b\xf0\x4e\x22\x47\xad\xf6\x3f\x4a\x24\x09\xb2\x21\x72\x9c\x2d\xde\xc9\x24\xf1\xc7\x01\x3e\xca\xe3\x00\x71\xc9\x29\x22\x89\xb4\x1d\xf9\xf0\x17\x0c\x3e\xaa\x3c\x09\xb2\x51\x9f\xf8\x0e\xd2\x9d\x16\x38\xfd\xab\x0b\x0f\x30\x49\xe2\x6c\xc9\xec\x72\x8e\x63\x32\xc9\x1e\x50\xe7\x84\xce\xff\x6c\xc4\x87\x39\x9d\x41\x5d\x9a\xa2\x23\xc9\x4b\xc9\xc8\xee\xaf\x5e\x7c\x98\xce\x11\x4c\x64\xa1\x6d\x96\x73\xc4\x25\xed\xb0\x79\xe9\x4f\xa4\x60\xaa\x33\x75\x2d\x14\xa0\x48\xdb\xff\x0f\x00\x00\xff\xff\x91\x7d\xa7\x7a\x8c\x65\x00\x00") + +func baseCoreSqlBytes() ([]byte, error) { + return bindataRead( + _baseCoreSql, + "base-core.sql", + ) +} + +func baseCoreSql() (*asset, error) { + bytes, err := baseCoreSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "base-core.sql", size: 25996, mode: os.FileMode(420), modTime: time.Unix(1508958218, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _baseHorizonSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x3d\x79\x73\xa2\xca\xf6\xff\xcf\xa7\xa0\xe6\x1f\x67\x6a\xcc\x84\x7d\xc9\xfc\xf2\xaa\x5c\x30\x1a\x15\x77\x8d\x79\xf5\x8a\x6a\xa0\x51\x12\x04\x03\x18\x63\x6e\xbd\xef\xfe\x2b\x59\x14\x91\xcd\x25\xf7\x3e\xeb\xd6\xdc\x28\xa7\xcf\xd6\x67\xeb\x3e\xd0\xdc\xdc\x7c\xbb\xb9\x41\xba\xa6\xed\xcc\x2c\x38\xe8\xb5\x10\x05\x38\x40\x02\x36\x44\x94\xd5\x62\xf9\xed\xe6\xe6\xdb\xf6\x7a\x75\xb5\x58\x42\x05\x51\x2d\x73\xb1\x07\x78\x87\x96\xad\x99\x06\xc2\xfd\xa6\x7f\x53\x21\x28\x69\x83\x2c\x67\xe2\x76\x78\x04\xe4\xdb\x80\x1f\x22\xb6\x03\x1c\xb8\x80\x86\x23\x3a\xda\x02\x9a\x2b\x07\xb9\x47\xd0\x3f\xee\x25\xdd\x94\x5f\x8f\x7f\x95\x75\x6d\x0b\x0d\x0d\xd9\x54\x34\x63\x86\xdc\x23\x85\xd1\xb0\xc6\x16\xfe\x04\xe8\x0c\x05\x58\x8a\x28\x9b\x86\x6a\x5a\x0b\xcd\x98\x89\xb6\x63\x69\xc6\xcc\x46\xee\x11\xd3\xf0\x71\xcc\xa1\xfc\x2a\xaa\x2b\x43\x76\x34\xd3\x10\x25\x53\xd1\xe0\xf6\xba\x0a\x74\x1b\x1e\x90\x59\x68\x86\xb8\x80\xb6\x0d\x66\x2e\xc0\x1a\x58\x86\x66\xcc\xfe\xf8\xbc\x43\x60\xc9\x73\x71\x09\x9c\x39\x72\x8f\x2c\x57\x92\xae\xc9\xc5\xad\xb0\x32\x70\x80\x6e\x6e\xc1\x4a\xad\x21\xdf\x47\x86\xa5\x72\x8b\x47\x1a\x35\x84\x7f\x6a\x0c\x86\x03\xa4\x23\xb4\xa6\x3e\xfc\xef\xb9\x66\x3b\xa6\xb5\x11\x1d\x0b\x28\xd0\x46\xaa\xfd\x4e\x17\xa9\x74\x84\xc1\xb0\x5f\x6a\x08\xc3\xd0\xa0\x43\x40\x51\x36\x57\x86\x03\x2d\x11\xd8\x36\x74\x44\x4d\x11\xd5\x57\xb8\xf9\xf3\x77\x10\x94\xdd\xbf\xfe\x0e\x92\x5b\xbb\xfa\xfb\x04\xf4\xa8\x45\xa5\x73\x87\x37\x84\x2a\xff\x14\x1a\xe9\x53\x72\x07\x8a\x50\x55\xa1\xec\xd8\xa2\xb4\x11\x4d\x4b\x81\x96\x28\x99\xe6\x6b\xfa\x40\xcd\x50\xe0\x87\x18\xa2\x6f\xd8\xc0\xb5\x45\x5b\x34\x0d\x51\x53\x4e\x19\x6d\x2e\xa1\x05\x76\x63\x9d\xcd\x12\x5e\x30\x7a\xcf\xc9\x45\x5c\x9c\x36\x56\x87\xca\x0c\x5a\xee\x40\x1b\xbe\xad\xa0\x21\x9f\x24\x42\x68\xf8\xd2\x82\xef\x9a\xb9\xb2\xfd\xdf\xc4\x39\xb0\xe7\x67\xa2\xba\x1c\x83\xb6\x58\x9a\xd6\xd6\x63\xfc\xb0\x77\x2e\x9a\x73\x75\x29\xeb\xa6\x0d\x15\x11\x38\xa7\x8c\x0f\x8c\xf9\x0c\x53\xf2\x5d\xe7\x0c\xa6\xc3\x23\x81\xa2\x58\xd0\xb6\xd3\x87\xcf\x1d\x4b\x71\x53\x83\xa8\x9b\xe6\xeb\x6a\x99\x03\x7a\x99\xc5\x92\x07\x05\x34\xeb\x44\xc4\x41\x5c\xcc\x3d\x60\x1b\x27\x54\x15\x5a\x59\xa0\xcb\x2d\xe4\xdc\xc9\xe4\xdb\x3e\x70\x5b\x69\x93\xa9\xfc\xf9\xce\x3f\xf2\x00\x9b\x1e\x1f\x66\x26\xa0\x66\x3b\xa2\xf3\x21\x2e\xb3\x51\x6e\x21\xcd\x65\x5e\x48\x98\x17\x2c\x08\xc0\xe9\xc0\x52\xe0\x24\x99\x60\xd9\xbe\x2f\xed\x6c\x37\x1d\xce\xcb\x61\x5b\x6d\xdb\xf6\x6a\x4b\xf9\xa4\x2c\xb6\x9b\xdb\x25\xb0\x1c\x4d\xd6\x96\xc0\x70\x72\xe6\xb5\xd8\xa1\xe2\xf2\xc4\x4c\xba\x0b\xee\xa7\x72\x10\x3f\xf0\x64\xfa\xae\xfa\xf2\xd0\xf3\x00\xbf\x1c\xbf\x37\x9d\xb2\xa9\x04\xd5\xc9\x36\x54\x06\x85\x8a\x3b\xc3\x62\x4e\x0e\x66\xa6\xb5\x14\x17\xda\xcc\xcf\x9d\x29\x2c\x44\x20\x53\x65\xcc\x6b\x42\xde\xe8\x4a\xa7\x35\x6a\x0b\x88\xa6\x78\xd4\xab\x7c\xad\x34\x6a\x0d\x73\xe2\x4e\x30\x8d\x2b\x60\xf6\x27\x25\x1d\x93\xfb\x2d\xbf\xf8\x41\x5a\x19\xf0\xbd\x11\x2f\x54\xce\xd0\xd9\xb6\x30\xb4\xe1\xdb\xc9\x94\x0f\x90\xe4\x1e\xad\xc0\x9c\xb0\xfb\xf2\x2b\xb7\x84\x09\xbe\x79\x8a\x7c\xf1\x28\xf2\x8d\xf5\x0b\x95\x7c\xc0\x7e\x55\x92\x5b\x36\xdf\x4f\x4f\x91\xc5\x1b\x92\x13\xd6\xaf\x57\xf2\xf3\x13\x14\x38\x79\x38\x8a\x78\xba\x0f\xcc\x3f\x0d\x79\x61\xd0\xe8\x08\xe1\x01\xfa\x72\x66\xbf\xe9\x01\x1b\x95\x3a\xdf\x2e\x1d\xe1\xfb\xf3\xcd\x5b\xd4\x0b\x60\x01\xef\x82\xdf\x90\xe1\x66\x09\xef\xfc\x21\x7f\x90\x81\x3c\x87\x0b\x70\x87\xdc\xfc\x41\x3a\x6b\x03\x5a\x77\xc8\x8d\xbb\xd6\xaf\xf4\xf9\xd2\x90\x0f\x30\x07\xf8\xbe\x1d\x60\x3c\xbc\xe8\x23\xae\x74\xda\x6d\x5e\x18\xa6\x60\xf6\x00\x90\x8e\x70\x88\x00\x69\x0c\x90\x42\xb0\x8a\x0f\x7e\xb3\x5d\x24\x85\x28\xe5\x40\x7c\x9f\xe6\x4e\x43\x99\xf2\x1c\xe8\x52\xe8\x0c\x23\xfa\x44\x26\x8d\x61\x7d\xc7\x56\x78\x39\x7f\x40\x7e\x8f\x25\xc2\xc8\x29\xc2\x1f\x21\x71\x15\xd0\x6d\xdd\x2e\x67\x83\x5e\x0b\x59\x5a\xa6\x0c\x95\x95\x05\x74\x44\x07\xc6\x6c\x05\x66\xd0\x55\x43\xce\xed\x87\x2d\x98\x02\x55\xb0\xd2\x1d\xd1\x01\x92\x0e\xed\x25\x90\x21\x72\x8f\x14\x0a\x91\xab\x6b\xcd\x99\x8b\xa6\xa6\x84\xb6\x41\x0e\x84\x8d\x1a\xa5\x2f\xaa\x6b\xc2\x7b\x41\x03\x23\x88\x53\xba\x67\xed\xd1\x84\xf7\xe3\x1b\x82\x20\xdb\xb8\xee\xc0\x0f\xc7\x9d\x0b\x61\xd4\x6a\x15\xdd\x5f\xc1\x72\xa9\x6b\xee\x0a\x06\xd9\x96\xe4\xb6\x03\x16\x4b\x64\xcb\xa8\xfb\x15\xf9\x34\x0d\xf8\xed\x67\x74\x56\x92\x5c\x2e\xb0\x78\xdf\x57\xf3\xf1\xbc\xf3\xec\x04\xac\x2e\x9b\x83\x61\xa9\x3f\xf4\x6c\x06\x73\x7f\x68\x08\x95\x3e\xef\x4e\x70\x79\xea\xff\x24\x74\x90\x76\x43\x18\x97\x5a\x23\x7e\xf7\xbd\xf4\xb4\xff\x5e\x29\x55\xea\x3c\x82\x65\x09\x73\xb6\xda\xa3\x88\xf6\x7a\x97\xb4\x99\x66\x38\x41\x46\x45\x0c\xf8\xe1\xbc\x03\xfd\x47\x21\x41\xe2\xc2\xdd\x9d\x05\x67\xb2\x0e\x6c\xfb\x67\x74\xba\xbc\x95\x1b\x22\xcf\x81\x05\x64\x07\x5a\xc8\x3b\xb0\x36\x9a\x31\xfb\x41\x93\x3f\x53\x26\xca\x0b\xbc\x17\x4b\xe6\x95\x0b\x3b\xb9\x34\xc3\x81\x33\x68\x45\x79\xdc\x95\x6b\xf1\x6c\xc6\x82\x6f\x0b\xbd\x18\x70\x0c\x8f\x07\xf7\x2a\xc0\x98\x01\x14\xbd\x1f\x90\xa5\x8f\x2b\x9b\x6d\x18\xe7\xdf\x66\xb4\x69\x82\x20\x9d\x89\xc0\x57\x91\xf2\x34\x43\x22\xaf\xfc\x4b\x17\x68\x87\x2b\x72\xf9\xf7\x76\xdd\x18\xcf\x5b\x50\x50\x5c\x6a\x75\x3e\x1e\xdf\xec\x22\x3e\x23\xee\xdd\xeb\xd0\x4e\x8e\xeb\xa7\x24\xc8\xef\xee\x82\xf6\x7b\x82\x35\xbb\x76\x1c\x7f\x49\x81\x0e\xd0\x74\x1b\x79\xb1\x4d\x43\x4a\x36\xb6\xa0\x0a\xbb\x54\x0f\x3e\x1e\x5f\x0f\xc1\x2e\x5e\x02\x6f\xa1\xad\xb5\x5c\x5e\x18\xb7\xab\x17\x3f\xd0\x57\x4b\xa8\xec\x76\x27\x62\xc7\x47\x10\xe5\xd0\x08\x85\xfd\x44\xe4\x83\xdf\x6d\xad\x45\x12\x93\xb9\x72\xf6\xb9\x29\x3a\xc6\x82\xc0\xc9\x1c\xe4\xc1\xae\x96\x4a\x6e\xd8\x9d\xe9\xf8\x5f\x23\xbb\x8e\x47\xb2\x60\x51\x23\x32\x1d\xa0\x8b\xb2\xa9\x19\x76\xbc\x0d\xaa\x10\x8a\x4b\xd3\xd4\xe3\xaf\xba\xbb\xe6\x2a\x4c\x9a\x6b\xf7\xb2\x05\x6d\x68\xbd\x27\x81\x2c\xc0\x87\xe8\x7c\x88\xdb\xd0\x69\x6b\x9f\x49\x50\x4b\xcb\x74\x4c\xd9\xd4\x13\xe5\x42\x73\xc4\xd6\x84\x05\xcb\xa5\xd6\x9f\xb0\x08\xce\xc8\x45\xf9\xa3\x40\x76\x5c\x39\x55\xe4\xeb\xa6\x97\x54\x1a\x7f\x57\xba\x39\x49\xd0\x0b\xd3\x4f\x2a\xad\xe3\x74\x14\x0f\x9e\x92\x9e\x42\xcb\xf9\xab\xd9\xe6\x71\xcd\x17\x89\x03\x07\xbd\x9f\x78\x18\xb7\x22\x97\x3d\x51\xdc\xcc\x74\x61\x62\xf2\x7e\xb2\xcd\x95\x25\xef\x5a\x6f\x09\x29\x21\x70\xf3\x42\xe1\xee\xee\x08\x22\x87\x1f\xf8\xbb\x29\x97\xaa\xd3\x6f\x2a\xfe\xb8\x6a\x1e\xf7\xf3\xda\x39\x59\xc5\xed\x24\x24\x92\x8d\xb4\x34\xd3\x80\xfc\x2e\x6b\x1a\xc8\xc2\x9d\x9e\x58\x80\xe3\xe6\x70\x06\x5c\x2a\xb9\x1d\x54\x0a\x45\x97\x25\xcd\x16\x6d\xa8\xeb\xd0\x42\x24\xd3\xd4\x21\x30\xbc\x6b\xa1\x0d\xd4\xd8\x1e\xaf\x8b\x56\x74\xef\x02\x40\x2a\x75\xbe\xd2\x44\x7e\xfc\x08\x8b\xf8\x2f\x04\xfd\xf9\x33\x0b\x55\xdc\xf0\x40\xaa\xff\x3b\x12\x34\x07\xbe\x03\xa1\x23\xe8\x23\x1a\x71\x19\x4c\xb5\xf5\xf8\x7d\xc7\x2b\x58\x7f\xfc\x4e\x72\xce\x54\x97\x27\xc6\x5c\x92\xec\xb2\x76\x6d\xaf\x93\xee\x32\xa8\xfc\x5d\x09\xef\x44\x61\x2f\x4c\x79\x19\xd4\x8e\x93\x5e\xd2\x80\x94\xb4\x77\xb0\x53\x7f\x45\x5b\x0d\xec\x33\xcc\x52\xee\xd5\x87\x1f\x9c\x33\xd6\x34\x79\x33\x63\x7a\x92\x8b\x85\xdd\x93\x4e\x2e\xcf\x41\xa2\xeb\x25\x2d\x6d\xfe\x91\xc5\x89\xf3\x21\x42\xe3\x1d\xea\xe6\x12\xc6\x6d\xf8\x39\x1f\xdb\xa5\xc2\x4a\x77\x12\x2e\x2e\xa0\x03\x12\x2e\x6d\xb5\x90\x74\xd9\xd6\x66\x06\x70\x56\x16\x8c\xdb\x9b\xe2\xe8\x9f\xff\xfe\xcf\xbe\xba\xf8\xeb\xbf\x71\xf5\xc5\xbf\xff\x13\x5d\xb3\xc0\x85\x99\xb0\x8d\xb4\xc7\x65\x98\x06\x4c\xad\x56\xf6\xb8\x8e\xd1\xf8\x92\x69\x0b\x28\x4a\xe6\xca\x50\xec\xed\xcc\xb1\x16\x30\x66\x69\x9b\x9e\xde\x26\x98\xa6\x04\xde\x13\x34\xca\xf2\xb8\xbc\xe7\x3e\x6e\x77\x32\xa3\x07\x37\xe0\x87\x29\x1b\x86\xe1\xad\x99\xf0\x76\xe1\x69\x85\xfb\xf5\x84\xc8\xd9\xa2\x4c\x15\x2a\xb5\xe0\xcf\x23\x64\x62\xe6\xbc\x9a\x98\xb9\xbb\xbc\xa9\x82\x66\x84\xf9\x78\x51\xab\xc0\x01\x88\x6a\x5a\x39\x7a\x05\x48\xb5\x34\x2c\x65\x88\xd8\x10\x06\x7c\x7f\x88\x34\x84\x61\xe7\xa8\x5f\xe0\x66\xc7\x01\xf2\xa3\x80\x89\x9a\xa1\x39\x1a\xd0\x45\xaf\x3b\xf4\xdb\x7e\xd3\x0b\x45\xa4\x80\xa3\x18\x73\x83\xa1\x37\x38\x85\x60\xf8\x1d\x8a\xdf\x91\xd8\x6f\x82\xa2\x58\x8c\xba\x41\x99\xc2\xcf\x3f\xf9\xb0\xe3\xa2\x77\x87\xd2\x81\x0a\xa4\x8d\xe8\x98\x9a\x92\x4e\x89\xc3\x88\x53\x08\x11\xe2\xca\x86\xbb\x08\x2f\x6a\xc6\xd1\x4d\x51\xa9\xe4\x68\x0c\xc3\xb8\x53\xe8\x91\x22\x50\x14\x31\xba\x99\x92\x4e\x83\xe2\x38\xf6\x14\x1a\x94\xe8\xa5\x93\xa0\xb2\x75\x3b\x4f\xa9\x24\x18\x94\x24\x4f\x52\x1b\x1d\x90\xf0\xa3\x4d\x0e\x12\x04\x43\xd2\xa7\x90\x60\xc4\x85\xa9\x68\xea\x26\xbf\x14\x2c\xc6\xa1\xb8\x4f\x22\xc1\x35\x52\x1b\x3a\xa7\xfa\xc6\x51\x53\x27\xe0\x1d\x2b\x22\x85\x87\x72\xbf\x3b\xad\x37\x5a\x78\xa5\x41\xd4\x84\x1e\x59\x7e\x6a\xd5\xda\x42\xb5\x55\x7b\x1c\x09\xdd\x11\x5e\x9f\x12\xcf\xed\xda\xa0\xde\x11\x46\x15\xbe\x53\x1a\x4c\x98\x5e\x85\xe9\x3c\xe1\xf5\xa8\x7e\x12\x89\xe0\x5b\x22\x95\xa7\xe6\x03\xdd\x17\xc8\x8e\xd0\xe0\xbb\x95\xb6\x50\x2b\x33\x04\x5e\x22\x09\xfa\x99\xea\x0a\xd5\x41\xbf\xf5\x30\x69\x32\x0f\xe5\x56\xa5\xdd\x6b\x35\x6a\x1d\x72\xc0\xf0\xd3\xc9\x78\x94\x9b\x08\xb1\x25\x52\xa2\x26\xe5\xee\xb4\x44\x4d\xc9\x49\x89\xaf\x3f\x4d\xfa\xf8\xa8\xd9\xc1\x47\x1d\xb2\x3c\x7a\xa8\x8f\x7a\x0c\xc9\x8f\xba\xcd\x8e\x80\xf7\xea\x63\x72\xd2\xaf\x77\x1a\x7d\xa1\xd9\xac\xe3\xb9\x89\x90\xae\xba\x9e\x1e\x7a\x8f\x93\x71\x6b\xd2\x99\xd6\x6b\xad\xf1\xb0\x39\x19\x53\xb5\x87\x7a\x89\x68\x09\xd3\x29\xfe\xd8\x6b\xb6\x99\x4e\xe9\xb1\x34\xe2\x7b\xb5\x11\xdd\xea\x56\x06\x7c\x6d\xfc\xd4\x11\x0a\xe7\x36\x20\xb7\x61\x38\x63\xae\x07\x7c\x8b\xaf\x0c\x43\x1d\xdd\xdf\x36\x4c\x6f\xce\x15\x11\xb2\x88\x38\xd6\x0a\xe6\xb0\xc0\xe3\xb6\x5b\x1e\xfb\x3b\xa7\xd5\x73\x15\x49\x0f\xaa\x8a\x22\x82\x15\xbd\x36\x75\xb6\xa0\x71\xad\x9e\x73\x3d\x2d\x68\xf7\x84\x7c\x80\xa5\x58\x8e\x23\x58\x9a\xe5\x5c\xa6\xd0\x22\x52\xf8\xeb\xbb\xed\x6c\xf3\x86\x31\x13\x25\xa0\x03\x43\x86\xdf\xef\x90\xef\x18\x8a\xfe\x46\xbd\xcf\xf7\xff\x26\xd9\x66\x94\x00\x76\x48\x00\x2f\x22\x84\x4b\xc0\xdb\x07\x88\xa2\x2d\x22\xdf\xf7\x0d\xce\xed\x45\x03\x38\xda\x3b\xcc\x4f\x2e\x22\x0f\x51\x44\x30\x4f\xa0\x35\xd4\x66\xf3\x2d\x3d\xac\x88\x7c\xf7\xd4\x25\xbe\xc2\xcd\x96\xc6\xb9\x31\x20\x3f\x57\x84\xcf\x15\x89\x33\x2c\xf5\x95\x5a\xf6\x09\x7c\xb5\x96\x23\xf2\xe4\xd3\xf2\x99\x41\x30\x3f\x57\x64\xc0\x15\xcd\xb2\xd8\x97\x6a\xd9\x23\xf0\xd5\x5a\x8e\xc8\x93\x4f\xcb\x67\x66\x81\x93\xb8\xc2\x70\x96\x25\x39\x94\xe2\x7c\x63\xc6\x23\x5a\xa0\xae\xea\xcf\x07\xd4\x62\x74\x9e\x93\x5a\x46\x90\x8d\xeb\x23\x9f\x1b\x64\x83\x5e\x72\xb8\x9a\xa1\x09\x85\x63\x55\x8a\xa0\x21\xa4\x59\x05\x93\x70\x46\xa2\x24\x96\x53\x71\x02\xa8\x14\x81\x61\x12\x43\xd1\x1c\xc0\x49\x15\xa8\x18\x89\x12\x40\x41\x25\x0a\x97\x68\x82\x90\x50\x46\x82\x1c\x57\x28\x7a\x0b\xee\xad\x4d\x6f\xad\x00\xe3\x18\xf4\x06\xc5\x6e\x50\x0c\x41\xd1\x3b\xf7\xbf\x68\x59\xc7\xdd\xa1\xc4\x1d\xc1\xfd\xc6\x68\x92\xc4\xe8\xcc\xab\x24\xce\x91\x1c\xcd\xe0\x1c\xed\x19\x1a\x86\x1e\x7d\x5c\xd2\x18\x1a\xbe\xe8\x7f\x47\x13\xe6\x33\xaa\x8a\xad\xa9\xe0\x38\x2b\x93\x0a\x4a\x61\x84\x84\xaa\x10\x70\x90\xc3\x80\x82\x91\x32\x07\x00\x03\x29\xa0\x92\x2c\x2a\x63\x28\x2b\x51\x0c\xcd\x62\xa8\x0a\x38\x42\xa5\x48\x4a\x56\x49\x86\x62\x01\xc0\xb1\xc2\x75\xd4\x49\x78\xa6\x74\xac\x93\x64\x55\x31\x38\xc6\x52\x99\x57\xbd\x04\x44\x52\x1c\x9e\xa2\x48\x02\x8d\x57\xe5\xf6\x7f\x6c\x4e\x65\xba\xec\x93\x92\x42\x2a\x18\x4e\xe2\x0a\x90\x50\x05\xd2\xa8\x0c\x54\x59\x22\x39\x40\x2a\x18\x4b\x70\xa8\x2c\x41\x8c\x70\xb5\x8a\x93\x24\x4e\x62\x12\x8e\x11\xb8\x24\x61\x94\x8a\x01\x14\xca\x85\xeb\x4c\x88\x17\x6f\x63\xf4\xc2\x24\xa9\x0b\x47\x69\x3c\xd9\x2a\x77\x57\x7d\xef\xc7\x58\x96\x4d\xd1\x26\x99\xa1\xcd\x0c\xe7\xcf\xd1\x55\x3f\x37\x16\x24\xec\xdd\x24\x94\x47\x58\xc2\xcc\x67\x60\x89\x54\x3d\xf8\x79\x58\xa2\x55\xca\x79\x58\xc8\x48\x6d\x70\x1e\x16\x2a\x92\xcb\xcf\xc3\x42\x1f\x62\x21\xcf\xc3\xc2\x44\x73\xd0\x79\x68\xd8\x08\x1a\xf2\x3a\x77\x3c\x5c\x65\x71\x92\xbe\x3b\x58\x44\xd8\xbc\x8b\xb2\x84\xbe\xff\xc5\xde\x13\x52\x63\xc8\xd0\x77\x7f\xb3\xa1\x72\x4f\x5d\x19\x0a\xb4\xbc\x62\xe8\xbc\x1d\x04\xb7\x90\xf0\x16\xa6\x17\xad\x0f\x8a\x48\x8e\xda\xf3\x0b\x76\x3a\x92\xb4\xe6\xbb\xe4\xee\x6f\xf2\x4b\xb5\x76\x6e\xbd\xff\x3f\xa7\x35\x2f\x78\xec\xfe\x46\xbf\x54\x6b\xe7\xd6\xef\xff\x43\x5a\x3b\x5c\x1e\xec\xbe\x90\xbb\x2a\xe1\xaf\xef\x8e\x79\xa9\xb0\xaa\x65\x2e\x2e\x75\xce\xd3\xd6\x10\x17\xee\x16\x66\x04\xce\x98\xbb\x7b\x4e\xd9\xcd\x4a\xc6\x9a\x7d\x1f\xc5\xb9\xc1\x39\xb1\x5f\x13\x57\xdc\xb0\xc9\x79\x33\x13\x0f\x1e\x89\xf4\xe7\xe2\x21\x22\xb1\xef\x5c\x3c\xe4\x21\x9e\xa4\x12\x27\x13\x0f\x15\x89\x2a\xe7\xe2\xa1\x0f\xf1\x24\x95\x39\x99\x78\x98\x88\xbb\x9e\x3d\x61\x6c\x04\x51\x72\xa9\x73\xea\x2d\x20\xd7\x28\x76\xb2\x3a\x84\x27\x94\x3b\x89\xf7\x7b\x5c\xc1\xa7\xc2\xcd\x3c\x82\x21\xe1\x76\x4d\xc9\x49\x1c\x54\x19\x45\x02\x1c\xa0\x14\x89\x20\x08\x4e\x62\x58\x55\x01\xac\x4a\x90\x0c\xc3\x48\x18\x50\x09\x42\x02\x24\xcd\x02\x85\x92\x51\x45\xe5\x48\x5a\x21\x95\x82\xbb\x71\x72\x51\x53\xc5\x0b\xde\x28\x9a\xb4\xce\xdb\xae\x7f\x09\x92\x4a\x5c\xee\xed\xae\x86\x3d\xb9\x50\xda\x7e\x1e\x5a\x6c\xbd\xf7\xde\x7b\x95\x9a\x78\xbd\x44\x4c\xc6\x2f\x7d\xab\xb9\x78\x79\x42\x51\xf5\x81\xb5\x5b\x0d\x66\x81\xf2\xfd\xf5\xe3\xe4\xb6\xf4\x44\x6c\xc1\x9f\x4b\xbb\x4f\xb9\x74\xf8\x89\x7e\x2f\x59\x6f\x02\xdd\x82\x1d\x30\x7b\xf9\x68\x83\x51\x97\xa3\xcb\x9f\xaa\xcd\x41\x54\x36\x2d\xe1\xf9\xe9\xb3\x3c\x79\x7c\xad\x99\x4d\xe6\xf5\xfd\x75\xed\xc2\x77\x28\xab\x19\xc6\x37\x7e\x5f\xd7\xb8\xed\x25\xbe\x52\xfd\x7c\x7b\x7f\xed\x95\x7b\xa6\x50\x7a\xd4\xd4\x6e\xff\xa9\x6a\xb6\xe6\xef\xce\x46\x1e\x12\x7a\xad\x5b\xe9\x51\xd8\xec\x55\xb1\x6b\x75\x50\x16\x26\x6b\x94\x1a\xdc\x8e\xe7\x13\xf4\x69\xf6\x6a\xa1\x95\x72\x97\x27\x05\x50\x1b\xe3\xcd\x85\x6c\x13\xcf\xeb\xd6\x42\x93\xc8\x61\xdf\x6a\xb7\x0a\x81\x0e\x5c\x3d\xf4\xf6\x94\x7b\x51\x49\xdc\xcf\xfd\x01\x7c\x89\xdf\xfe\x53\xd9\x7f\x6f\xec\xff\x6c\xd2\x2f\x50\x23\x5e\x16\x66\x83\x1d\x3e\xe8\xd5\x5b\x38\x93\x09\xa6\xfb\xe4\xd4\x9b\xcd\xcf\xc9\x98\x5d\x8f\xb5\xe7\x32\xa8\xac\xa8\x16\xd5\x76\xe1\xab\x2b\xb0\x99\x95\x22\xf8\x8e\x3e\x47\xfa\x3d\xe4\x37\x44\xff\x84\x39\xad\xc2\x0a\x6e\xe3\xef\x8f\x82\x10\x12\x7a\x9d\x9f\xfe\x4e\x27\x2e\xff\xed\x08\x5c\x59\xbb\x2d\xa3\x2d\xf4\xf1\x61\xe3\xcc\xd7\x02\xa6\x4f\x51\xb0\x59\x9a\x18\x27\xd4\x3f\xde\x5b\x95\x4d\x87\x72\xca\xbc\x5c\xf1\xe6\x99\x98\x39\x56\xc7\x78\x4e\x51\xc0\xa1\xbc\x71\x9f\xe8\x9c\x9c\x4e\x7f\x7a\xfb\x4b\x8e\xe0\xcb\x49\xff\xde\xb5\x8f\xbf\x66\x2c\x6d\x51\x7c\x69\xd4\xac\xf6\x2a\x53\xe3\x13\x1d\xaf\xe9\x0a\x29\x31\xb2\xc1\x73\x54\x7f\xb8\x7e\xed\x28\xd3\xc7\xba\x54\xee\xe3\xb3\xe1\xd8\x16\x3a\xa3\x77\x6c\x3a\x76\x6a\xe4\x63\x93\x2b\xcd\x86\x1f\x9d\xea\x64\x3e\x56\xb4\xa5\xd1\x12\x70\xb9\x42\x99\x8b\x5f\x3c\x0a\x3e\x2b\xeb\xfb\x7b\xb7\x04\x72\x6f\x09\x0a\xf6\x22\xb7\xff\x66\xe7\x88\xf0\x3d\x0f\x34\x09\x28\x94\x26\xa1\x04\x68\x52\xc5\x65\x45\x02\x8a\xc4\x52\xb4\xa4\x12\x24\xc9\x92\x2c\xa5\xca\x34\x4e\xe3\x24\x03\x14\x40\x40\x85\xe0\x64\x45\x51\x51\x95\xe6\x50\x1c\x23\x08\x89\xf6\x02\x19\x7e\x59\x20\xc3\xb3\x02\x19\x4b\x10\x34\x96\x18\xc8\x82\xab\xe1\x12\xe0\xd2\x40\x16\x75\xba\x23\x43\xef\xe0\x95\xdb\x52\x87\xa4\xa6\xe5\x2a\xe1\xd4\xc7\xb5\x0e\xd6\x27\x4a\x68\x1b\xbe\x76\xd9\xc7\x3e\x6d\x08\x58\x89\x83\x13\x4d\xd9\x34\x9c\x91\x07\x9f\x18\xc8\x4a\x03\xfe\x59\x7b\x96\x60\x6d\x5d\xb1\xad\x66\xd9\x68\x36\x56\xf6\x2d\x4a\x8d\x9d\xc7\x6a\xd9\x9a\x99\xf6\x6a\xde\xea\xdd\x8e\xe8\xa7\xd1\x0b\xe9\xac\x27\x9b\xb9\xcd\x8c\x9c\x01\x59\x69\xc3\x8f\x4e\x9b\x7e\x7c\x93\xd5\xb7\xc7\x26\x86\x4e\xf4\xf2\xeb\xeb\xda\x20\x67\x6c\xb7\xa1\xbe\x34\x1e\xbe\x2c\x90\x55\x9d\xd9\xfb\xba\xba\xea\x4c\x4a\x3d\x8e\xe9\x63\xfd\xa1\x33\x52\xd6\x42\xb5\xbe\xac\xde\x56\x46\x70\xf9\xa9\xf4\xba\x4f\xba\x69\xc8\x5a\x6b\xec\xc1\xff\xc3\x81\xec\xb3\xb4\x02\xce\x85\x81\xac\x17\xa7\x93\x73\x02\x09\x4b\xc6\xea\xf4\x48\xde\xe8\xc7\x0f\x24\xfc\xfc\x61\xba\x98\x10\x73\xb9\x64\x35\x37\xb3\xe7\x8d\xd6\xb2\xba\x5c\x67\x2c\x0d\x7a\x6b\x40\x36\x5b\x2d\x73\x80\x76\xb1\x8e\x8e\x35\x7e\xb5\xe4\x9a\x6d\x4a\x1d\xac\x35\x5a\x95\x5e\xea\xf6\xf0\xa5\xa3\x01\xa3\x4e\x6b\x03\x47\xa9\x2d\x7b\xcf\x8f\xed\xc7\x5f\x8d\x6e\x75\x53\x27\x37\xe5\xd9\x55\x02\x09\x2e\xe1\x90\xc5\x15\x09\x48\x12\x8a\x93\x12\xce\x00\x54\x26\x30\x12\x95\x01\x83\x29\x2c\x90\x39\x49\x66\x30\x96\xc0\x54\x4e\xa5\x00\x21\x29\x34\x07\x65\x40\x28\x2c\xab\x4a\x28\x94\x29\xb9\xb0\x6b\x25\x5d\x10\x48\x88\xac\x40\xc2\x51\x28\x99\x1c\x48\xb6\x57\xf1\xc2\x61\xed\x7e\x69\x20\xa9\x66\x19\x9a\xb4\x98\x2d\xb0\x31\xae\xcc\xa8\x31\xb6\x78\xc3\xa0\xde\x96\x1f\x30\xe7\xe3\x65\x30\x6d\x3e\x73\x6b\x7e\x66\x0e\xca\x00\x4e\xd8\x91\x56\x33\x5d\xf8\xe4\x40\x52\x7d\x5c\xe9\x98\xd3\x7a\x68\xd5\xc8\xf1\xc7\xda\x41\x95\x6a\x65\xcc\xab\xb4\x23\x51\x3a\x29\x6d\xda\xd6\xc3\xac\xb2\xfc\xa5\x8f\x9f\xdb\x8b\x0f\xd9\xa1\x48\x4d\x50\xf1\xc5\x87\xf3\xf2\x41\xb7\x15\xea\xf9\x91\xe4\xc9\xaa\x2e\xdb\x2a\x49\xf3\xa5\x79\xf9\x61\x30\xea\xda\x06\xab\x4e\xab\x5f\x16\x48\x1e\x28\xf3\xd1\x19\x2b\xc6\xb4\x33\x56\x9e\xdf\x9c\xa7\xe5\xb0\x5e\x76\x24\x79\x8a\x2e\x2a\x0b\x55\x2e\x37\x9a\xfc\x6c\x62\xe8\xef\xb5\xc6\x1c\x78\x9a\xfc\x87\x03\xc9\xfb\x60\x68\x5e\x5a\x11\x5d\x2d\x90\x30\xa3\xfd\xf8\x76\x8a\xbc\xd1\x8f\x1f\x48\x36\xd2\x52\x91\x06\x1f\xda\x07\xac\xc9\x72\x4b\xa9\xf7\xd6\x7a\xbf\xfe\xcb\x9a\xfc\x7a\x86\x0f\xec\x4b\xf3\xc3\x2c\xbd\xa9\xcb\xf1\x64\xf8\x68\x3f\xb5\x20\x6c\xbc\x3c\x71\x4b\x5b\x9a\xb2\xf0\xa5\x0e\x27\x03\x58\xee\x94\xa8\xa7\x56\xfd\x57\x67\x5e\x6a\xf4\xfa\xaf\x7a\x95\x79\xbc\xad\xe3\xa5\xeb\x54\x24\x32\x94\x24\x96\xa1\x00\x8a\xaa\x2a\x0d\x31\x82\x25\x00\x54\x51\x55\xc1\x29\x0c\x30\xb4\x8a\xe3\x32\xa6\x72\x40\xc2\x01\xae\xa8\xaa\x2c\xa1\x0c\xc3\x52\x14\x43\xd0\x40\x81\x38\x4d\x71\xc0\x0f\x03\x97\x6c\x0e\x85\x3a\x86\x59\x11\x05\x47\x69\x2e\xb5\x69\xc6\x85\x9b\x66\xde\xe2\xdb\x33\x85\x13\x17\x04\x5e\x48\x69\xc4\x99\x58\xe8\xbb\x57\x9c\x9e\x1a\x52\xbc\x4f\x8b\x66\xc3\x29\x09\x04\x8b\xb0\x72\x89\xeb\xae\xb8\xe5\xcb\xe6\x55\xee\x0f\x68\x54\x7f\xeb\xb4\xde\x04\xb6\x56\xff\xc4\x49\xb2\xd7\x65\x25\x30\x15\xe0\x70\xf8\xf8\xdc\xd0\x2d\x62\x20\xf5\x2b\x18\xf1\xc6\x5b\xdc\xaa\x4b\x76\xfa\xd5\xd9\xa6\x52\xbe\x9d\xc9\xab\x19\xfe\xd0\xb4\xaa\xed\x55\x13\x1d\x0c\x89\x5e\x07\x34\x47\xe5\xf5\xfd\x7d\x8e\xd0\x12\x96\x35\x2e\xb4\x78\xe1\x75\x5d\xfa\x1f\x08\x2d\xed\x0b\xe8\xd3\xe3\x95\x79\x45\xfa\x27\x2f\x36\x35\x15\xef\xaf\xf7\xf4\xe3\x43\x7b\xde\xc5\x5e\x48\x86\xca\xca\x24\x4c\x87\xa4\xde\x2a\x5d\xfe\x63\xd9\xbb\x25\xcc\xba\xf0\xeb\x13\x63\xfa\x1b\xcd\xc6\x74\xb5\x5d\x9b\x2e\x7a\x93\x99\xb5\x1a\xfc\x1a\x7a\x03\x98\x85\xed\xdb\xe4\x2c\x45\x13\xe9\x8b\xbd\xea\x65\xf4\x17\xf2\x9e\xfe\x19\x8b\xbd\xaf\x72\x96\xc4\xd0\x9a\x7a\xaa\x4e\xfc\x21\x6f\xbb\x53\x85\x82\x27\x07\x4f\x7d\x42\x20\x82\xd5\x7d\xb0\xa4\x54\xad\x86\x9f\x45\x8c\x23\x8c\x74\xfb\x8d\x76\xa9\x3f\x45\x9a\xfc\x14\xf9\xa1\x29\x59\x4f\x9d\x44\x6e\xd5\xcc\x79\x48\xde\xc5\xd2\x1d\x92\x8d\x13\xee\x2c\xc6\x90\x91\xd0\xe8\x8d\x78\xe4\xc7\x1e\xbc\x18\x3a\x3e\xa6\x78\x70\xd8\xcb\x89\xaa\xb9\xce\xb4\x9e\x2c\xf8\x49\x93\x9a\xd0\x8e\xcf\x68\x79\x5f\x57\xb2\x78\x22\x69\x92\xa6\xb0\x95\x5b\xf2\xc4\xfd\xf9\xcc\x1d\xf0\xeb\x4a\x9f\x44\x26\x4d\xfe\x54\xd6\x32\x35\x10\x3d\xa6\xd4\x17\xc5\x3d\xd4\x34\xdf\x23\x98\xde\xf9\xa7\x11\x3c\x48\x47\x88\x3a\xc4\x68\xd0\x10\x1e\x10\xc9\xb1\x20\x0c\x3c\x2c\xc1\x93\x42\x47\xac\x9e\xcb\xce\x1e\x45\x98\x93\x83\x82\xf6\x90\x1f\x0f\xb8\x78\xf4\x00\x66\x1c\x73\xee\x21\xb1\x17\x70\xe6\x3e\x87\x9a\x8b\xad\xe8\xd3\xab\x71\xdc\xf8\x27\xdb\x5e\xc0\x8f\x87\x21\x1f\x47\x91\x47\x63\x8b\xc7\x4f\xc1\xc6\x3a\x59\xf8\xa8\xde\xd3\x39\xf5\xe3\xb2\xc7\x70\x04\x5d\x98\xed\xe0\x5e\xd8\x03\x8e\xe3\x4e\x6c\x28\x06\xa7\x33\x24\x31\xbb\x7f\x44\xef\x42\x36\x35\x25\x37\x83\xfb\xa7\xdf\x8b\xb1\xc7\x4c\x64\x30\x1d\x9c\xae\x7c\x0d\xbe\x7d\x5c\x61\xd6\x13\x92\xc3\x59\x92\xc4\x0b\x10\x1c\x24\x7d\x0d\x01\x7c\x5c\x09\x36\x7d\xa6\x08\x87\x47\x19\x1c\x0b\x11\x3a\x36\xfb\x5c\x6f\x0c\xe1\x38\x57\xf9\xe9\x8a\x8e\x9c\x03\x7e\xa9\xae\x0f\xd1\x85\x59\x0e\x6e\xbd\x3d\xe0\x31\x9e\xa3\xe3\xb3\xcc\x2f\x67\xeb\x08\x67\xbe\xf0\x16\xc7\x60\xe8\x54\xf6\xb3\xa7\x75\x8f\xe3\x7c\x93\xcc\x32\xbf\x83\x83\xe6\xcf\xe7\x34\x84\x25\xc2\xab\x02\x23\x9c\x05\x27\xd1\xc4\xf3\x12\x39\x25\xff\x22\x8e\x0e\x71\x65\xf1\x75\x74\x12\x4b\x2c\x7f\x47\x07\xff\x5f\xc4\x61\x14\x5b\x16\x8f\x07\xa7\xc7\x14\x8f\x0e\x8f\x29\x1e\x9d\x10\x94\x20\xc4\x15\xbc\xc5\xc7\x93\xc5\xf1\x89\x39\x29\xfa\xbe\x86\x8b\xb4\x7b\x82\x62\x33\xf5\x96\xfd\x22\x8a\x0b\x15\x9a\x49\xe0\xa0\x3a\x0e\x1e\x4d\x3d\xac\x47\x3d\xc0\x13\x78\xbf\xdc\x0e\xd2\x70\x67\x73\x1c\xe3\x65\xe9\xaf\x19\x39\xd7\x1e\x52\xb1\x66\x16\x5b\x5b\xa0\x0c\x46\x63\xdf\xa7\x72\x1d\x6e\xe3\x50\x67\x26\xcd\xbc\x96\x7c\xf8\x02\x99\xab\x1a\xc3\x01\xea\x73\xb2\x7c\xfe\x37\xe6\x5c\x5d\xd1\x47\xa7\x63\x66\xb2\x1f\x19\x90\x5f\x98\xf0\x0b\x84\xbe\x4a\xff\xe1\x03\x51\xb3\x24\x09\xc1\xe6\x17\x22\xf6\x85\x4a\x5f\x25\x4d\xec\x39\xaf\x59\x62\xc5\x0d\xca\x2f\xdf\xee\x7d\x53\x5f\x25\xd3\xee\xec\xa6\x2c\x39\x12\xf7\x18\x32\xde\xb3\x75\x55\xc6\xa3\xd8\x63\x97\x1d\xa7\x3a\x78\xea\x2b\xc6\xae\xe3\xe1\x69\x24\xf2\xc8\x90\x51\x4d\x67\xbe\x70\xed\x4b\xa4\x88\x64\xb0\x44\xde\xb3\x93\x58\xcc\x0b\xe6\xae\x6a\x36\xc7\xf8\xcf\x5e\x60\xa5\xbd\x52\xef\x5c\x2d\xa7\xe0\xcc\x2c\x11\x7e\xfc\x08\x0e\x2c\xbd\xf9\xd7\xbf\x90\x82\x6d\xea\x4a\xa8\x6b\x50\xb8\xbb\x73\xe0\x87\xf3\xf3\x67\x11\x49\x06\x94\x4d\x25\x1f\xa0\xb7\x03\x9a\x0c\x2a\x99\xab\xd9\xdc\xc9\x45\xfe\x00\x34\x9d\x81\x03\xd0\x08\x0b\x3f\x91\x49\x9d\xef\xf3\x9e\x91\x21\xf7\x08\x41\x64\x9c\xaf\x1a\xf9\x1a\xff\x4e\x45\x7f\x1e\x6b\xcd\xeb\x6c\x92\x2b\x30\x6b\x4b\x3c\x89\x13\xa4\xd6\xe9\xf3\x8d\x07\xc1\xdb\x10\x8f\x40\xfc\x44\xfa\x7c\x8d\xef\xf3\x42\x85\x1f\x1c\x95\xbb\x19\xfd\x83\x44\x4d\x1c\xbc\xcb\xf2\x1f\xd4\x43\x98\x8f\x38\x2d\x04\x6b\xe5\x58\x1d\xb8\x5b\xf8\xa7\x6b\x20\xe9\x05\xa2\xff\x88\x1a\x12\x98\x39\xd4\xc5\x31\xd0\x95\x8d\x22\xfe\x25\xae\xff\xac\x42\x92\x4d\xe3\x68\x27\x25\xaf\x75\x24\xbd\x4f\x18\x91\xcd\xc5\x52\x87\x0e\x74\x65\xf8\xff\x00\x00\x00\xff\xff\xc1\x65\x39\xa5\x7c\x78\x00\x00") + +func baseHorizonSqlBytes() ([]byte, error) { + return bindataRead( + _baseHorizonSql, + "base-horizon.sql", + ) +} + +func baseHorizonSql() (*asset, error) { + bytes, err := baseHorizonSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "base-horizon.sql", size: 30844, mode: os.FileMode(420), modTime: time.Unix(1508958219, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _blankHorizonSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x5c\x5b\x6f\xdb\x3a\x12\x7e\xcf\xaf\x20\xce\x8b\x13\xc0\x0e\xe2\xdc\xda\x38\x9b\x02\xae\xa3\x9c\x1a\x4d\xe4\xd6\x76\xb6\x2d\x0e\x0e\x08\x5a\xa2\x6d\x6d\x65\x51\x15\xe9\x34\x39\x8b\xfd\xef\x0b\xdd\x6c\x5d\x78\xd3\xa5\xe9\x5b\x62\x0d\x67\xbe\x19\x0e\x39\xc3\x19\x4a\xbd\xde\x41\xaf\x07\x3e\x11\xca\x56\x01\x9e\x7d\xbe\x07\x36\x62\x68\x81\x28\x06\xf6\x76\xe3\x1f\xf4\x7a\x07\xe1\xf3\xdb\xed\xc6\xc7\x36\x58\x06\x64\xb3\x27\x78\xc2\x01\x75\x88\x07\xae\x8e\x2f\x8f\x2f\x32\x54\x8b\x17\xe0\xaf\x60\x38\xbc\x40\x72\x30\x33\xe6\x80\x32\xc4\xf0\x06\x7b\x0c\x32\x67\x83\xc9\x96\x81\x1b\x70\x72\x1d\x3d\x72\x89\xf5\xbd\xfc\xab\xe5\x3a\x21\x35\xf6\x2c\x62\x3b\xde\x0a\xdc\x80\xce\xe3\xfc\xee\x6d\xe7\x3a\x65\xe7\xd9\x28\xb0\xa1\x45\xbc\x25\x09\x36\x8e\xb7\x82\x94\x05\x8e\xb7\xa2\xe0\x06\x10\x2f\xe1\xb1\xc6\xd6\x77\xb8\xdc\x7a\x16\x73\x88\x07\x17\xc4\x76\x70\xf8\x7c\x89\x5c\x8a\x73\x62\x36\x8e\x07\x37\x98\x52\xb4\x8a\x08\x7e\xa2\xc0\x73\xbc\xd5\x75\x82\x1d\xa3\xc0\x5a\x43\x1f\xb1\x35\xb8\x01\xfe\x76\xe1\x3a\x56\x37\x54\xd6\x42\x0c\xb9\x24\x24\x1b\xde\xcf\x8d\x29\x98\x0f\xdf\xdf\x1b\x60\x7c\x07\x8c\xaf\xe3\xd9\x7c\x06\x26\xe6\xfd\xb7\x84\xfe\x78\xed\x50\x46\x82\x17\xc8\x02\x64\x63\x0a\x6e\xa7\x93\x4f\x60\x34\x31\x67\xf3\xe9\x70\x6c\xce\x33\x83\xf2\x84\xd0\x22\x5b\x8f\xe1\x00\x22\x4a\x31\x83\x8e\x0d\x97\xdf\xf1\xcb\xf5\x6b\x08\xb4\xa2\xbf\x5e\x43\x64\xe8\x57\xaf\xa7\x60\x2c\xad\xa8\x5d\x34\x7c\x6c\xde\x1a\x5f\x33\x23\x13\x49\xd1\x40\x88\x97\x4b\x6c\x31\x0a\x17\x2f\x90\x04\x36\x0e\xe0\x82\x90\xef\xf2\x81\x8e\x67\xe3\x67\x98\x91\xef\x51\x14\xf9\x22\x85\xc4\x83\x8e\x5d\x65\x34\xf1\x71\x80\x76\x63\xd9\x8b\x8f\x1b\x8c\xde\x23\x69\x84\xa2\xda\x58\x17\xdb\x2b\x1c\x44\x03\x29\xfe\xb1\xc5\x9e\x55\x49\x85\xcc\x70\x3f\xc0\x4f\x0e\xd9\xd2\xe4\x37\xb8\x46\x74\x5d\x93\x55\x73\x0e\xce\xc6\x27\x41\xb8\x62\x92\x6d\xaf\x2e\x9b\xba\xb6\xb4\x5c\x42\xb1\x0d\x11\xab\x32\x3e\x75\xe6\x1a\xae\x94\x2c\x9d\x1a\xa0\xb3\x23\x91\x6d\x07\x98\x52\xf9\xf0\x35\x0b\xec\x28\x34\x40\x97\x90\xef\x5b\x5f\x83\xda\x57\x41\x8a\xa9\x90\x13\x54\x64\x9c\xee\x8b\xda\x03\xc2\x7d\x62\xb9\xc4\x81\x8a\xd4\x0f\x29\xd7\x4c\x89\x9b\xe6\x96\xed\xe2\x45\x69\xfc\xf5\x6e\x7d\xe8\x10\x93\x18\x07\x51\x12\x3a\x94\x41\xf6\x0c\x7d\x35\xcb\x90\x92\xf8\xba\x94\x58\x97\x2c\xdd\x80\xe5\xc4\x8b\x74\x91\x28\xc9\xd4\x6b\x7f\xb1\xf3\x5d\x39\x5d\x1c\xc3\x42\x6b\x53\xba\x0d\x25\x57\x8a\x62\xbb\xb9\xf5\x51\xc0\x1c\xcb\xf1\x91\xc7\x34\xe3\x1a\x77\x28\xf4\x2b\x46\xd2\xdd\xe6\x5e\x15\x01\x7f\x60\x65\xf9\x91\xf9\x74\xe4\xc5\x84\xbf\x9c\x7f\x3c\x9d\x16\xb1\xd3\xec\x24\xdc\x2a\xd3\x44\x25\x9a\x61\xa8\x89\x60\x45\x02\x1f\x6e\x9c\x55\x12\x3b\x25\x10\x0a\x94\x52\x1d\x75\x5d\x28\x1e\x3d\x9a\xdc\x3f\x3e\x98\xc0\xb1\x63\xe9\xb7\xc6\xdd\xf0\xf1\x7e\xae\xc9\x5b\xe0\x1a\x2d\x70\x4e\x26\x45\xce\x29\xfa\x4f\x5f\xfd\x34\xac\xcc\x8c\xcf\x8f\x86\x39\xaa\x61\xb3\x30\x31\xa4\xf8\x47\x65\xc9\x39\x26\xda\xa3\x6d\xac\x49\xbb\x4f\xbf\xb4\x35\x14\xac\xcd\x2a\xfa\xf1\x59\xe8\x8d\x4d\x12\x15\x3d\xe2\x24\x2b\xd1\xd6\x2d\x59\xa7\x55\x74\x89\x87\x68\xd2\x26\xf9\x8a\x3e\x9e\x34\xc1\xd1\x41\x54\x58\xe9\xa9\x90\xd1\x07\xe3\x61\x58\xa2\xbe\x3e\x88\x8f\xec\x26\xda\xe0\x41\xfa\x1b\x98\xbf\xf8\x78\x90\x0c\xb9\x06\x33\x6b\x8d\x37\x68\x00\x7a\xd7\x60\xf2\xd3\xc3\xc1\x00\xf4\xa2\x93\xfc\x68\x6a\x0c\xe7\x46\xca\x39\xe5\x77\x90\xe3\x98\x7f\x98\x30\x1e\x4d\x1e\x1e\x0c\x73\x2e\xe1\x1c\x13\x80\x89\x99\x67\x00\xc6\x33\xd0\x49\xcf\xe8\xe9\x6f\x34\x62\xd2\x09\x25\x6b\x9e\xaa\x43\x32\x1b\x2f\xd1\xd6\x65\x90\xa1\x85\x8b\xa9\x8f\x2c\x0c\x6e\x40\xa7\x53\x78\xfa\xd3\x61\x6b\x48\x1c\x3b\x73\xba\xcf\xa9\x57\xb4\x75\xa2\x60\x34\x33\x7b\xf5\x52\xed\x79\xd6\x8b\x27\xb1\xb8\x8f\x1f\x1e\x00\x00\xc2\xed\x8a\xe1\x67\x06\xcc\xc9\x1c\x98\x8f\xf7\xf7\xdd\xe8\x57\xe4\xfb\xae\x13\x25\xe6\x20\xcc\x34\x29\x43\x1b\x1f\x84\x40\xa3\x7f\xc1\x3f\xc4\xc3\x07\x47\xc5\x79\x10\x79\x52\x3a\xd5\x89\x0b\xea\x61\xde\x39\xac\x80\x6b\x04\x73\x36\x1f\x4e\xe7\xe0\xcb\x78\xfe\x01\xf4\xa3\x1f\xc6\xe6\x68\x6a\x44\xd3\xfa\xfe\x5b\xf2\x93\x39\x01\x0f\x63\xf3\xdf\xc3\xfb\x47\x63\xf7\xff\xf0\xeb\xfe\xff\xd1\x70\xf4\xc1\x00\x7d\x95\x32\xb5\xcd\x5e\x64\xb4\xb7\xfb\xc2\x59\x39\x1e\x4b\x03\x05\xf0\xf0\x33\x7b\x42\xee\x61\x47\xa0\x71\x67\x30\x08\xf0\xca\x72\x11\xa5\x47\xc5\xe9\x8a\x0f\x24\xc0\x5a\xa3\x00\x59\x0c\x07\xe0\x09\x05\x2f\x8e\xb7\x3a\xbc\x3c\x3f\x92\x4c\x54\xbc\x9f\x34\xd6\x2c\x8e\x82\x3b\xbd\x1c\x8f\xe1\x15\x0e\x8a\x18\x77\x59\x08\x1f\x26\x97\x3c\xcc\x5f\x38\xe4\xfd\x53\x3e\x79\x9c\xd8\x70\x06\x5c\x5c\xee\x07\xa8\xec\xd1\xb2\xdb\x66\x79\xbe\x9a\xd3\xca\x14\x01\x93\x2f\xa6\x71\x0b\xde\x7f\x53\x68\x14\x67\x35\x72\x85\x76\xbc\x0a\x8f\x8f\xc3\xe3\x10\x1f\x5b\x1a\x27\x9b\x7a\x5d\xc2\x27\x71\xbb\xc2\x9a\x81\xfb\xe5\x95\xf7\x93\x72\x5a\x20\xa2\xfc\x23\x3a\xa7\xfd\x21\xf0\xe6\xc8\x8f\xf9\x8f\x6c\xcc\x90\xe3\x52\xf0\x1f\x4a\xbc\x85\xd8\xd9\xd2\xe4\xa2\xa9\x1d\x12\x3e\x89\x1d\xd2\xe2\x94\x00\x5b\xa6\x62\xa4\xb5\x0a\x79\xc5\x2a\xfe\xc0\xc4\x2c\x99\x6c\x32\x9a\x88\x1d\x8e\x74\x97\x3b\x29\x48\xd8\x4f\x84\x1e\xfd\xae\x62\x54\x08\x4c\x64\xcb\xf6\xb1\xa9\x38\x26\xc0\x88\x29\x07\xc5\xb4\x5b\xdf\xd6\xa6\xdd\xb9\x4e\xf2\x6f\xa1\x98\x56\xd2\xa5\x5f\x74\x22\xc2\x90\x0b\x2d\xe2\x78\x94\xef\x83\x4b\x8c\xa1\x4f\x88\xcb\x7f\x1a\x15\x83\x97\x58\x34\xd7\xd1\xe3\x00\x53\x1c\x3c\x89\x48\x36\xe8\x19\xb2\x67\x18\x6e\x9d\xd4\xf9\x47\x44\xe5\x07\x84\x11\x8b\xb8\x42\xbd\x4e\x34\xf6\x56\x41\x1e\xde\xd4\xfb\x05\x67\x3b\x45\x2c\xd2\xdf\x05\xd4\xfb\x4a\x55\x95\xdb\x0d\x2f\x52\x19\xaf\x15\x6e\x2a\x29\xda\x30\xfc\x48\x65\x95\xc3\x11\x9f\x5c\x12\x9e\x32\xa7\xd4\xd6\x7c\xb3\x9c\xf3\x15\xf6\x81\x5c\x4b\x83\x4f\x13\x65\xe4\x56\xac\x4a\x14\x99\x1a\x06\xa6\xf8\x27\x4a\xb6\x81\xb5\xeb\x28\x09\x42\x42\xba\xcc\x3b\x9d\xc1\xa0\x44\xa1\xb1\x0e\x92\x22\x41\x53\x73\x26\xbd\xb2\xc3\x56\xe3\x78\x12\xd7\xea\x44\x95\xa8\x40\x2e\x14\x5b\xe8\xd4\xc9\x88\x92\xe6\xa1\x8c\x64\x13\x4d\x0f\x97\xa0\xdc\xf3\x54\xd0\x49\xc5\xed\xa8\x24\x12\x23\x48\x0e\x85\x14\xbb\x2e\x0e\xc0\x82\x10\x17\x23\x2f\x7e\x96\xa9\x0b\x72\x5b\x97\x11\x5b\x18\x35\xb7\xc1\xe8\x83\x31\xfa\x08\x0e\x0f\xb3\x2a\xbe\x03\x27\x47\x47\x2a\x56\xbc\xe1\xa9\x56\xff\x2a\x29\xaa\xc1\x2f\xa7\x74\x81\x7d\xc1\x22\x11\x40\xa9\xaf\xf3\xcb\x69\x2d\x78\x3f\xbf\x40\xaa\x19\xea\x74\xf6\x98\x26\xc1\x4e\x55\x8c\x6c\x27\xdc\x29\xa4\xbc\x56\xc0\xab\xa8\x6c\xc3\x90\xa7\x90\x56\x0e\x7a\xa2\x01\x92\xb0\x97\x2b\x40\xb7\xe8\xab\xa9\x7f\x66\x21\x69\x9f\x3e\x92\xcd\x59\x71\xa6\xd1\x8d\x8c\xf2\x20\xc7\xa5\xdd\x8b\x16\xa7\xe7\x48\xb8\xf4\x44\x47\x9b\xdf\x72\x38\x61\xcf\x10\x7b\x4f\xd8\x25\x3e\xe6\x15\xfc\xd8\x73\x78\x54\xd8\xba\x4c\xf0\x70\x83\x19\x12\x3c\x0a\xad\x20\x7a\x4c\x9d\x95\x87\xd8\x36\xc0\xbc\xda\xd4\xd5\xe5\xd1\x5f\x7f\xef\xb3\x8b\xff\xfe\x8f\x97\x5f\xfc\xf5\x77\xf1\xcc\x82\x37\x44\x50\x46\xda\xf3\xf2\x88\x87\xa5\xd9\xca\x9e\x57\x99\x4d\xa2\x99\xb3\xc1\x70\x41\xb6\x9e\x4d\xc3\x99\x7b\x1b\x20\x6f\x25\x2b\x7a\xc6\x45\x30\xc7\x4e\x57\x4f\xda\xff\xd1\x59\xf2\xf1\xf2\x89\x9a\x6e\x8a\xd6\xd2\xcc\x98\x4b\x0a\x86\xd9\xd2\x4c\xb6\x5c\x58\x2d\x71\x6f\x4f\x09\xcd\xce\x9b\x54\x29\x69\xc2\xaf\xa3\xa4\x30\x72\xb6\xa6\xa6\x76\xf3\x52\xaa\xa8\x62\x9b\xe7\xab\x7a\x8b\x18\x02\x4b\x12\x68\xf4\x0a\xc0\xed\x70\x3e\x54\xa8\x38\x36\x67\xc6\x74\x0e\xc6\xe6\x7c\x52\xea\x17\x44\xd1\x71\x06\x0e\x3b\x7d\xe8\x78\x0e\x73\x90\x0b\xe3\xb6\xc8\x31\xfd\xe1\x76\xba\xa0\x73\x7a\xd2\x7f\xd3\xeb\x9f\xf4\x4e\x2f\x40\xff\x74\x70\x72\x3a\x38\xef\x1f\x9f\x5d\x5c\xbc\xed\x5f\xf4\x4e\xde\x74\x8e\xae\xf5\xb8\x9f\xc2\xf8\xe2\x4d\xce\x04\x8b\x17\xc8\x88\x63\xcb\x25\x5d\xf5\xcf\xaa\x08\x3a\x83\x5b\x8a\x77\x3b\x3c\x74\xbc\xd2\x5d\x1f\xa9\xb8\xcb\x7e\xbf\x7f\x55\x45\xde\x39\x44\xb6\x0d\x8b\xc5\x14\xb9\x8c\x8b\xab\xab\xb7\x55\x64\x5c\xc0\x38\x9c\xa4\x99\x6d\xd4\x79\x92\x8a\x78\x73\x72\x7e\x5e\xc9\x6c\x97\xa9\x88\x64\xb7\xd1\x10\x71\xf6\xe6\xfc\xb2\x8a\x88\x37\x70\x43\x6c\x67\xf9\xa2\xaf\xc5\xdb\xfe\xd5\xc9\x69\x22\x42\xb0\x34\xa4\x0d\x1d\x9d\xb5\x51\xab\xd9\x15\x2e\x79\x05\xdf\x99\x71\x6f\x8c\xe6\x99\xee\xe1\x31\xc5\xf2\x46\x50\x17\xf4\xbb\x71\xab\x50\x43\xdd\x72\x8f\xa7\x81\xb2\xd2\xbe\x42\x2b\xaa\xe6\x42\x58\x15\x45\x79\x7d\x85\x2a\x9a\x0a\xd8\xf2\xca\xf4\x2d\xb0\xd5\x28\x87\xd6\x9f\xa6\x6a\xf5\xb8\x36\xa6\x4d\x1e\xa4\xab\x4c\xa3\xa0\xfe\xd6\x82\xc9\x39\x65\xa8\x76\xb8\xaa\x0f\xfc\xf5\xa7\xb2\xea\x49\xb3\x8d\xc9\x54\x25\x22\x55\xa6\x53\x78\xae\xac\x6e\x92\x62\xb8\xe0\xde\x36\xdb\xdd\xfe\x48\x6b\x3d\x55\x73\xba\x02\xd7\xe8\x28\x30\xbc\xbd\xcd\x56\x8f\x78\x82\xc1\xa7\xe9\xf8\x61\x38\xfd\x06\x3e\x1a\xdf\xc0\xa1\x63\xab\xce\x09\xf5\x6e\xeb\x35\xd6\x2e\x2f\x96\xa7\x5c\x2d\x60\xe0\xd1\x1c\x7f\x7e\x34\xc0\xe1\x9e\xbc\x9b\x69\xf8\x77\x73\xed\xf9\x8a\xa6\x69\x67\x5a\x2b\x2b\x5e\x69\x52\x05\xe7\x1c\x9d\x2b\xa6\xad\x69\xc6\x17\x22\xd3\x54\x02\x4b\x5b\x73\xe1\xd1\x47\xef\x82\x6f\x6b\xda\x8b\xc4\xc8\xf4\x97\x42\x53\x5a\xa0\x78\x5f\x3a\x51\x25\xba\x5d\xad\x57\x34\x8b\x2f\x62\x17\xf8\x80\x89\x59\x5c\x10\x8f\xb3\xb1\xf9\x27\x58\xb0\x00\xe3\x74\x85\x09\x56\x52\xe6\xae\x77\x5d\x38\x7b\x16\x59\x24\xb9\x8a\x5e\x1e\x4f\x4c\xdc\x2d\x95\xcc\x78\xe0\xa2\xdb\xea\x0d\x90\x45\x95\x43\x2d\x58\xc5\x7a\x23\x0f\x4d\x72\xc5\xbe\x01\x9e\x98\x83\x1e\xa2\x42\x31\xb3\x5b\xae\x5b\x72\x17\x59\xf6\x9d\x81\xea\x48\x93\x7d\x39\x06\x5c\x60\x97\x85\x9d\x5e\xa6\xc9\x21\xe6\xf5\xd8\xba\x69\x3f\x4d\x04\x76\x5f\x54\x69\x08\xd3\xb1\xb5\x01\xee\xfb\x15\x5d\x6e\x63\x50\x01\x3a\x7d\xcd\xa3\x0d\xdc\x09\xaf\x2c\x74\x41\x70\xa8\xa5\x09\x5f\x81\xf4\x8d\x96\x36\x14\x48\x78\x09\x7c\xba\xa6\x0a\xf9\xe6\x53\x59\x89\xcc\xfb\x3b\x75\x57\x63\x86\x47\x5d\xe3\xcb\x0d\x5d\x78\x21\xa9\xa9\xad\xf3\xec\xb2\x90\xd3\x0b\x5d\x39\x8c\x7c\x44\xe5\x97\xaa\x9a\xc3\x2a\xf1\xd4\xdb\xde\x78\x00\x33\xaf\x87\xd5\x9e\xd6\x3d\x8f\xfa\x2e\xa9\x72\xbf\xdc\x1b\x6f\xf5\x91\x66\xb8\x14\xb0\xda\xb8\x80\x2c\xbd\x3b\xc0\xc7\x52\x78\x5d\xaf\x11\xa2\x3c\x2f\x15\xae\x52\xef\x9c\x8b\xaf\xf4\x06\x62\x23\x84\x45\x6e\x2a\x8c\xb9\x7e\x7f\xb7\xd4\xee\xef\x96\xee\x74\x08\x94\x68\x61\xb5\x24\x7c\x54\x88\x2b\xc6\xa4\xe2\x8b\xa3\x8d\xac\x5b\xc1\xb0\x4a\xbb\xa9\xdf\x88\x6d\x68\x50\xa5\x80\x5c\x76\x9c\x5e\xa8\xcf\xe7\xa3\x31\x61\x05\xec\xcd\xfd\x40\xc6\x5b\x8d\x98\xb3\xca\xe4\xef\x3b\xd7\xf5\x07\x29\x57\x65\xb2\x15\x12\x29\x80\x72\x5f\xec\x6e\x07\x2d\x8f\xb5\x32\x68\xea\x7a\x72\xfe\x4d\xf6\x56\x9d\x21\xc7\xba\x4e\x94\xd7\x7f\x75\xbf\x75\x43\x97\xee\x33\x2b\xe1\x17\x06\xe8\x2b\x93\xfd\x92\xc1\xaf\xb2\x7f\xf6\x0a\xbb\x4a\x93\x0c\xad\xbe\x12\xdc\x2f\x3b\xfc\x2a\x6d\xb8\x37\xf3\x55\x6a\xf1\x06\xe9\xeb\xb7\xfb\xf0\xc5\xaf\xd2\x69\x77\xdb\x46\xa5\x87\xb0\xc6\xa0\xf8\xe0\x47\xab\xc0\x8b\xdc\xb9\xc7\x8e\xaa\x0b\x5c\xfa\xad\x93\x76\x56\xb8\x4c\x84\x8e\x0e\x8a\x6c\x5a\xf9\xe5\x97\x5f\xa2\x45\x21\x82\x09\xb1\xab\x83\x18\xe7\x4b\x37\xad\xba\x4d\x99\x7f\xed\x03\x96\xec\xdb\x3e\x75\xad\x2c\xe1\xa9\x4c\x11\x0e\x0f\xd3\x2b\xe6\xbd\x77\xef\x40\x87\x12\xd7\xce\x74\x0d\x3a\x83\x01\xc3\xcf\xec\xe8\xa8\x0b\xc4\x84\x16\xb1\xf5\x08\xe3\x0a\xa8\x98\x74\x41\xb6\xab\x35\xd3\x12\x9f\x23\x95\x03\xc8\x91\x16\x20\x1c\x81\x2f\x1f\x8c\xa9\x11\x3b\x19\xb8\x01\x67\x67\x8a\x1b\xf1\x5a\x1f\x77\x4a\xe6\xf1\xee\x63\x3b\x45\x72\x1b\xab\x4a\xe2\x22\x24\xe0\x6e\x32\x35\xc6\x7f\x9a\x71\x41\xbc\x40\x71\x04\xa6\xc6\x9d\x31\x35\xcc\x91\x31\x2b\xa5\xbb\x8a\xfe\x81\xd0\x12\xb9\x8f\x6a\xfd\x46\x3b\x64\x71\xf0\xac\x90\x9e\x95\xb9\x36\x88\x4a\xf8\xd5\x2d\x20\xfa\x92\xd9\x6f\x31\x83\x00\x4c\xde\x16\x65\xa2\x96\x9d\x82\xff\x35\xb9\xdf\x6b\x10\xb1\x6b\x94\x2a\x29\xba\xde\x21\xfa\xb0\x21\xb0\xc8\xc6\x77\x31\xc3\x91\x0e\xff\x0f\x00\x00\xff\xff\x5b\xb8\x7d\xda\x05\x51\x00\x00") + +func blankHorizonSqlBytes() ([]byte, error) { + return bindataRead( + _blankHorizonSql, + "blank-horizon.sql", + ) +} + +func blankHorizonSql() (*asset, error) { + bytes, err := blankHorizonSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "blank-horizon.sql", size: 20741, mode: os.FileMode(420), modTime: time.Unix(1508958161, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _change_trustCoreSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x67\xb3\xda\x4a\xd6\xee\x77\xff\x0a\x95\xbf\xf8\x9c\xc2\xe7\xa0\xd4\x6a\xc9\xbe\x9e\x2a\x91\x83\xc8\x49\x70\xeb\x96\xab\xa5\xee\x06\x81\x02\x28\x90\xde\x9a\xff\x7e\x0b\xc1\x26\xc3\x66\x6f\xb6\x67\xe6\xad\xb1\x3e\x38\xa0\xa5\xb5\x9e\x7e\xfa\xe9\xb4\x24\xb5\xfc\xc8\x75\x2d\x77\xc8\xf8\xc4\xb4\xa6\xe4\xd3\xf6\x2f\x86\x5a\xae\x15\x8c\x08\xfe\xca\x98\xb6\x17\x6c\xce\xdb\x04\x0f\x89\xff\x69\xfb\x57\xfc\x2b\xc1\x9f\xfe\xfa\xeb\xd3\x5f\x7f\x31\x75\x2f\x08\x87\x3e\x69\x35\x34\x06\xa3\x10\x19\x28\x20\x0c\x8e\x9c\xe9\xe6\xf4\xe6\x7c\x26\x72\xa6\x04\x33\xd4\xf7\x9c\x83\xc1\x9c\xf8\x81\xe5\xb9\x8c\xf2\xb7\xf4\x37\x38\xb2\x32\x56\xcc\x74\xf8\x73\x73\xf9\x99\xc9\xa7\x56\xb6\xcd\x04\x21\x0a\x89\x43\xdc\xf0\x67\x68\x39\xc4\x8b\x42\xe6\x07\xc3\x7e\x8f\x4f\xd9\x9e\x39\xb9\xfc\xd5\xc2\x36\xf9\x69\xb9\x3f\x43\x1f\xb9\x01\x32\x43\xcb\x73\x7f\x06\x24\xd8\xf8\xbd\x34\x36\x6d\x6b\xe3\x9a\xb8\xa6\x87\x37\x65\xfe\xc1\x7c\xe9\xb4\x73\xf2\x97\xef\x2f\xb1\x5d\x8c\x7c\xfc\xd3\xf4\x5c\xea\xf9\x8e\xe5\x0e\x7f\x06\xa1\x6f\xb9\xc3\x80\xf9\xc1\x78\xee\xce\xc7\x88\x98\x93\x9f\x34\x72\xb7\xb1\x0c\x0f\x5b\x64\x73\x9e\x22\x3b\x20\x27\x61\x1c\xcb\xfd\xe9\x90\x20\x40\xc3\xd8\x60\x81\xfc\x4d\x45\x6c\x4d\x7c\x6f\xf1\x33\x20\x66\xe4\x5b\xe1\x6a\xe3\x9c\xd2\xef\x3b\x02\x08\xf2\xcd\xd1\xcf\x29\x0a\x47\xcc\x0f\x66\x1a\x19\xb6\x65\x7e\xdd\x30\x66\xa2\x10\xd9\xde\xf0\xfb\xa7\x4f\x99\x66\xad\xce\x14\xab\x99\xac\xce\x14\x73\x4c\x56\x2f\xb6\xda\xad\x9d\xe5\xdf\x81\x35\x74\x89\x1f\x20\xd3\xf4\x22\x37\xfc\x7e\xdf\x96\xd8\xb6\xe5\x0e\xad\x20\x88\x88\x6f\xb9\x98\x2c\x5f\xb1\x37\xa7\xb3\xc8\xf3\x23\x27\x30\x56\x01\x99\xbd\x6a\x4c\xdc\xf9\x23\x96\x53\xdf\x32\xc9\x03\xe1\xb7\xca\x7c\xc4\xe3\xc8\x0a\x42\x4a\xc8\x83\x96\x0f\x98\x19\xd1\xea\x2d\x44\xed\xd8\x37\x90\x8d\x5c\x93\x04\xdf\x3f\xa9\x5a\x3b\xdb\x64\xda\x6a\x4a\xcb\x1e\x59\xd7\xaa\x5a\xff\xe5\x92\x70\xb9\x81\xe2\xf9\x2b\x26\x76\x9c\xae\x55\x5b\xed\xa6\x5a\xac\xb6\x8f\xec\xf7\x36\x3f\xa7\x13\xb2\x7a\xcc\x2b\x25\xe4\x11\xc7\x07\xb3\xc7\x7d\xfb\x51\x10\xda\x96\x4b\x82\x7b\x9e\xf7\x46\x0f\xfb\xdd\xa0\x20\x71\x37\x70\xc7\xef\xc1\xe8\x71\xbf\xdb\x96\x71\xcf\xe9\xd6\xe2\x71\x8f\xfb\xf6\x70\xcf\xe9\xde\xe8\x61\xbf\xd3\xc8\x08\x22\xe3\x8e\xcf\xad\xc1\x5b\xfc\xd9\x56\x30\x9a\x45\x24\xba\xc7\xe9\xb1\xd9\xe3\xbe\xc9\x7d\x4e\xe3\xf3\x0f\x7b\xf3\x28\xbd\xef\x6e\x6b\xf0\xb0\xbf\x6d\x97\x31\x22\x08\xdf\x77\x7b\x62\xf7\x8b\xbd\xef\xba\x31\x32\xfb\xf9\x60\x18\x03\xb9\x77\x9c\x1b\xc8\x7d\x18\xf0\xae\x5f\xba\x87\xf5\xc5\xe4\xad\x3e\x37\xc3\xfe\xeb\x6e\x37\x56\x3b\xcf\xb1\xed\xb9\xe3\xf3\xce\xf0\x35\xb3\x43\xb7\xf5\x8a\xe5\xbe\x1b\xba\x6f\x77\xe8\x56\x5e\xb1\xdb\xf6\x14\xaf\x18\xed\x5b\xfe\xab\x76\x0f\x15\x62\xdb\xea\x5f\xb5\xd9\xb7\xe1\x57\x2c\xc9\xab\x05\xd8\x36\xb6\xfb\x36\x27\xda\xbe\x6f\x6a\x20\xf7\xbe\xc1\x8b\xf6\x1e\xb2\xda\x48\x69\x67\x98\xd5\xdb\xd9\x6a\xab\x58\xab\x1e\x1b\xdb\xd3\x61\x30\xb3\x77\x16\xad\x74\x21\x5b\x51\x2f\x7c\x7d\xdf\xcd\x6f\xab\xc8\x21\xdf\x5e\x7e\x63\xda\xab\x29\xf9\xb6\xbb\xe4\x3b\xd3\x32\x47\xc4\x41\xdf\x98\xbf\xbe\x33\xb5\x85\x4b\xfc\x6f\xcc\x5f\xf1\xb4\x37\xdd\xcc\xaa\xed\xec\x8b\xe7\x17\x7f\x9f\x4e\x3c\x9e\x9e\xdc\x39\x4e\xd7\x2a\x95\x6c\xb5\x7d\xc7\xf3\xd6\x80\xa9\x55\x4f\x1d\x30\xc5\x16\xf3\xe5\x65\x8e\xfa\xf2\x5b\x10\x3b\xf9\x72\x1e\xf9\xa5\xf8\xbb\x98\x7b\x86\x5e\x2d\xcf\x09\x97\xd5\x5a\xfb\x8c\x4f\xa6\x57\x6c\x17\xf6\xb0\x8e\x27\xa5\x27\xe1\x0f\x5e\xce\x80\xbc\xa5\xf0\x17\x4e\x62\x02\xea\x5a\x72\x3a\xdc\xac\x44\xa6\xbe\x67\x12\x1c\xf9\xc8\x66\x6c\xe4\x0e\x23\x34\x24\x31\x0d\x0f\x4e\xa2\x37\x66\x98\x50\x14\xd9\xe1\xcf\x10\x19\x36\x09\xa6\xc8\x24\x9b\x15\xc1\x97\xb3\xb3\x0b\x2b\x1c\xfd\xf4\x2c\x7c\x34\xc9\x3f\x29\xec\xb1\x20\x77\xc5\x8c\xa5\x7b\x28\xe4\x8b\x00\xae\x11\xbe\x55\xf9\x71\x2f\xfa\xc7\x27\x86\x61\x5e\x7e\xb1\x30\x63\x8e\x90\x8f\xcc\x90\xf8\xcc\x1c\xf9\x9b\x79\xe8\x1f\x40\xfa\x33\xae\x9b\x6a\x47\xd3\xbe\xc6\xd6\x9b\x0b\x5d\xe4\x90\x2b\xc6\x92\x78\xcd\x78\x8e\xec\xe8\x9a\x35\xc7\xf1\xe7\xe6\x36\x0a\x42\xc7\xc3\x16\xb5\x08\x66\x2c\x37\x24\x9b\xf5\x61\x26\x9b\x53\x3b\x5a\x9b\x61\xf7\xc6\x9f\xfe\x3c\x57\xc1\xbe\x3d\x3f\xc9\x4a\xf0\x2e\x4a\x76\xb3\x6f\xc6\xb0\x86\x96\x1b\x9e\x9d\x0c\xc8\xcc\x8d\x9c\xeb\xe7\xdc\xc8\x09\x22\x83\xb8\xa1\xbf\x59\xd8\xbd\x14\xf8\xd4\xc6\x72\xa9\x8d\x36\xeb\x3f\x4c\x82\xf0\x3a\x9c\xad\xe1\xc8\x73\x08\xf6\x1c\x64\xb9\x57\xac\x84\x0b\xae\xc3\x91\x4f\x82\x91\x67\xe3\x80\x09\xc9\xf2\x1c\x19\xb5\xd1\xf0\x16\xa2\xab\xb5\x74\x6a\x72\x34\x32\xef\x87\xf9\x1d\x4b\x3f\xe3\x55\x2d\x93\x2e\x64\xd3\x65\xe6\x8f\x3f\x5e\xb8\xfb\xc7\x0f\x86\xfd\xf3\xcf\xdb\x57\x9f\x50\x75\xe6\xe3\x94\xc6\xad\xa7\x4b\x8d\x6c\x06\x85\xf7\xca\x63\x33\x31\xda\x2a\xc3\xf5\x30\x39\x96\xc5\x89\x1c\x2e\x83\x9e\x0e\x5a\xef\x0d\x7f\x3a\xfd\xdb\x02\xd9\xfd\x86\x82\xd1\x11\x98\xcb\x16\x38\xf5\xc9\xfc\x55\x23\x23\x32\x27\x24\xb4\xad\x20\x7c\xd5\x74\x3f\xa7\x7c\xa9\xf9\xed\xcf\x71\x12\x27\xb4\x9c\x1b\x8d\x20\xee\x6d\xae\xc8\xec\xa8\xa6\x4f\xa7\xae\x7b\x7f\x67\x55\x7d\x88\x73\x43\x30\xb7\x66\xc0\xa7\x6e\x0e\xa5\xb8\xa5\x96\xdd\x8c\xe4\xbd\x35\xb6\x5b\x5e\xfc\xb1\xeb\x02\x6c\x9b\xf8\x0f\x76\x26\xf1\x95\x16\xbe\xd5\x99\xc4\x79\x14\x14\x04\x24\x0c\x57\x53\x72\xa3\xf9\x1d\x9b\x99\x1e\xbe\xda\xfb\xf2\x7f\x9e\xd8\x6e\x33\x0e\xf7\xfa\x97\x6d\x66\xe2\xb5\xd0\x47\x56\xaf\x45\x3e\x4e\x75\xdc\x0b\x8c\x9c\x4d\x17\x70\x9d\x90\x38\xa3\xe3\xde\xc0\x12\x9f\xbc\xd5\x45\xc5\x27\x19\xec\x45\x86\x4d\x36\xad\xc4\xb4\xe2\x04\xe1\xaf\xea\x06\x77\xcb\xc9\x6d\x59\xce\xd4\xb8\x2b\xe0\x0d\x45\xef\xae\xdc\xe9\xe2\xec\xd2\x17\xb5\xdc\x92\xf1\x76\xee\xfd\x5e\x15\x6f\x97\xdc\x5b\x11\x5b\xd3\x6b\x75\x09\x2e\xfa\x1b\xcf\x0f\xef\x0c\xdd\xbb\x71\x8f\x2c\x43\x14\x86\xc4\x99\x86\xcc\xa6\x31\x07\x21\x72\xa6\xcc\x66\xf6\xe3\x45\xdb\x5f\x98\xb5\xe7\x92\xcb\xd1\x92\x22\xcb\x8e\xfc\xa3\xb1\xf2\x56\x84\x23\xfe\xb6\x79\x81\xa3\x8b\x2f\x47\x8f\xbd\xdb\x1b\x55\xb0\x4b\x2d\x78\xfe\x79\xcd\xfd\x11\x17\xf7\x1f\x0c\xfb\x27\xa3\x56\x33\xcc\xf6\xbf\xff\xe7\x07\x23\x01\x20\x80\x3f\xaf\x56\xc8\xf1\xb2\xe9\xdd\xf5\x72\x9c\x66\x39\x1e\x0e\x6e\xf5\x07\x71\x8e\x6b\xd3\xff\x5e\x05\xb4\x59\xeb\x3d\x01\x25\x88\x8c\x1d\x08\x9f\x04\x27\x63\xe3\xe5\xac\x63\xd3\x68\x7c\x82\xf6\x0d\xe6\x12\xcf\xd1\x1a\xf5\xbd\x98\x0e\x2e\x1e\x19\xb4\x6f\x8c\x6b\x67\xe7\x89\x3b\x27\xb6\x37\x25\xaf\x8c\x62\x87\xd0\x4f\x8c\x3d\x47\xcb\xf9\x27\x28\x78\x49\x18\x6e\x29\x98\x05\xe4\x81\xc1\x1d\x05\xe1\x6b\x44\x6c\x1c\xbd\x4e\xc2\x4b\x22\xf2\xc4\xe3\x39\x11\x27\xd1\x6e\x92\xb1\x4b\x80\xbc\x9b\x89\x5d\x32\xf6\x3d\x13\xfb\xad\xf7\x09\x59\x3d\x64\xbd\x20\xd6\x70\x14\x5e\xd0\x76\xa5\x48\x87\xdc\xcf\xbb\x4b\x75\x48\x5d\xff\x71\x68\xe2\xa7\xeb\xb2\x2b\xcd\xef\x5e\x47\x70\x94\xb9\x7a\x2f\xaa\xa3\x44\xfd\x7b\xe8\x7e\x6d\x6e\x71\x6f\xaa\x70\xcd\xd5\xed\x09\xc8\xf9\x5a\xc8\xb6\x1c\xeb\xc6\x0c\xe3\xee\xe2\xee\xe3\xe6\x07\x47\xb7\x2f\xde\xb5\x50\x3a\xba\x7e\x5b\x9a\xb3\xcb\x77\x45\xfc\xc7\xf5\x46\x76\x92\xdf\x7c\x77\xed\x1f\xdf\x02\xda\xd6\x7f\xb8\x3c\xe9\x76\x1f\x58\x4e\x9c\xd7\xcc\x32\xbe\x09\x76\xf3\xac\x39\x42\xee\x90\x5c\x5d\xc2\x1e\x93\x73\x7c\xd7\xe9\xfd\xfd\xf2\x21\x59\xfc\x7e\x8a\xfe\xc5\xfc\x18\x1e\x5e\x5d\x23\x27\x5c\xfa\x24\x88\xec\xab\x3d\x79\xb8\x74\xc8\xab\xcb\xb5\xc3\x1d\xc2\xf7\xf0\x99\xd9\xac\x07\xa9\xe7\xbf\x92\xd7\x62\x32\x6a\x5b\x7d\x85\xdf\xfb\x2e\x83\x37\xfb\x2b\x56\x5b\xd9\x66\x9b\x29\x56\xdb\xb5\x43\x56\xa8\xab\x6a\x9d\x6c\x8b\xf9\xe3\x4b\x3e\xcd\x0b\x8d\x1c\x5f\xe8\x64\x01\xaf\x56\xf4\x4e\xae\x53\x10\xd4\x7e\x49\xd5\xf5\xbc\xae\x77\xf9\x6e\x41\xef\xf7\x9b\x52\xb6\xaf\x67\xdb\xf5\x72\x46\x1f\xb4\xd4\x9e\x04\xf5\x9a\xf8\xe5\x2b\xc3\xb1\xfb\xe3\x2b\x23\x03\x59\x51\x04\x11\x28\xfc\x57\x86\xfd\xba\xa5\x98\xf9\xf2\xe5\x2b\xf3\x45\x6d\xa8\xaa\xaa\xfe\xf8\xf1\x25\x3e\xc1\xff\xf9\xfd\x35\x44\xa9\x66\xbd\x5f\x28\x6a\x7c\xba\x28\xe4\xaa\x0d\x31\xa5\x6b\xb9\x4a\x35\xa3\xe5\x4a\x9d\x6a\xbd\xc3\x17\xfa\xc2\xa0\x92\x6b\x15\x6a\xd5\x4e\x3a\x5b\x53\x5b\x3d\xd8\x48\xc3\x9a\xce\x17\xbe\x7c\x65\x94\xed\x01\x77\x7f\xcb\x1b\x60\xcf\xe3\x49\xeb\xe5\xbc\xd4\xac\x8a\xb5\x6a\x31\x5b\x4f\x57\xaa\xb9\x14\x14\x78\x55\x14\xa4\x01\xa8\x57\x33\xad\xa6\x96\xef\x95\x61\x3e\xa5\xa5\x2b\x0d\xad\x98\xab\x89\x2d\x98\xed\xf7\xba\x9d\x23\x3c\x27\x04\x81\xfb\x80\xc0\x6d\x55\x9d\x27\x7c\x9e\x50\xd3\xed\x34\xce\x5b\x25\x75\x9a\xca\xd9\xb3\x26\x09\x58\x91\x29\x10\x24\x42\x24\x19\x73\x06\x0f\x0d\x60\xc8\x0a\xe5\x05\x44\x81\xc0\x71\x06\x04\x92\x82\x78\x91\x22\xca\x89\xac\x80\x30\x6b\x00\xde\x90\x04\xc1\x60\xa1\x41\x14\x65\x43\x0c\xfb\xe4\xb1\xf1\x01\x20\x8f\x78\x22\xf0\x94\xf2\xa2\x8c\x58\x68\xb0\x04\xb2\x14\x73\x54\xc2\x02\x27\x9b\x1c\x45\x26\xe6\x59\x43\x32\x4d\x56\x36\x05\x01\x03\x08\x01\x0f\x14\x59\x92\x39\x1e\x20\x4e\xda\xe8\x3c\xae\x97\x2f\xea\x7f\xec\x91\xd2\xcb\x96\xb8\x4a\xae\x5a\xe5\x14\xcc\xb8\x19\xa5\xc0\xb3\xcb\x71\x2a\x11\xb0\xc3\x30\x58\x14\x17\x6b\x4e\xc7\xad\x5e\x1f\xa5\x4a\x28\x37\xdc\xd8\x67\xab\xa2\x86\xd6\x53\xbe\xf1\xaa\xe7\x81\xaa\x73\x62\x6c\x96\x9a\xfc\x0b\x0a\xf2\xa1\xc7\x97\xb3\x96\x7d\x43\xa8\x26\x34\x81\x80\x05\x00\x78\xc8\x03\xc1\x80\x3c\x80\x88\xe3\x38\x89\xc7\xa2\x69\x98\xa6\x28\x60\x53\x91\x15\x96\xf2\x06\x55\x80\xa8\x08\x1c\x2f\x50\x02\x79\x04\x01\x45\x84\xe7\xc9\x46\x64\x1f\x21\x76\x49\x31\x38\x4c\xb0\xc0\x9a\xac\x09\x11\x47\x31\x05\x02\x2b\x11\x4e\x92\x44\x01\x23\x56\x51\xb0\x0c\x79\x85\x15\x31\x27\x61\x85\x88\x22\x34\x38\x4e\x01\x06\xe1\x08\xc7\x41\x9e\x6e\xc4\xce\x7f\x65\x38\xc0\xca\x0a\x90\x79\x9e\xdf\x29\x36\x9d\xaf\x0f\xc6\x5c\x35\x02\x1e\x6b\x94\x60\x4f\x74\x57\xb5\x79\x67\x99\x17\xba\x53\x6f\x92\x98\xe7\xd4\x5a\x98\xe6\xca\x7c\x05\xa6\xa0\x34\x88\x40\x41\x31\x0b\x98\x9d\xa9\xc1\x60\xac\x34\xa4\xbe\xbc\x2a\x16\x4d\x29\x0a\x27\x34\x99\xae\x25\x34\x27\xc9\x96\x8d\x80\xfa\xeb\x7a\x27\x66\xb8\x47\x33\xc3\x4c\xac\xa8\xe2\xfe\x8f\x6d\x67\x76\xf8\x51\x5d\xa8\x6a\x69\xb9\xad\x91\x3a\x5b\x1f\xb7\x84\x26\x85\xa3\x40\x5e\x76\x8b\xa9\x21\x3f\x94\x97\xe5\xf9\xac\x56\x4b\xba\xc9\x61\x52\x5f\x0c\xeb\xcd\x64\x21\x05\x67\x44\x99\x06\x18\xb6\x33\xea\x52\x2a\x28\x4a\x3b\x15\xe5\x9c\x86\xe2\x95\xdc\xbe\x39\x4d\x55\x73\xa1\x3b\x69\xc2\xec\xa0\x97\x28\x8c\x72\x2b\x39\xf6\x5c\xbc\xa2\xe8\x4c\xf1\x9a\x2a\xf6\x8a\x4e\x9b\xaf\xcb\xff\x3f\xec\x78\x50\xd1\x88\x93\x44\x45\x81\x26\x34\x58\xc8\x02\xce\x30\x4c\xc2\x2b\x32\x07\xb1\xc0\x4b\x92\x42\x15\x28\x51\x56\x51\x0c\x44\x64\x01\x1b\xa2\x29\x23\x49\xc0\xd0\x94\x38\x4e\xa2\xc0\x24\x62\xac\xe8\x8f\x68\x15\x90\x63\x39\xd3\x64\x89\x40\x89\x22\xb3\x50\x16\x25\x08\x78\xd1\x64\x59\x11\xcb\x50\x60\x65\x91\x02\x96\xe7\x04\x0c\x31\xc7\x53\xc2\x61\x51\x00\x58\x04\xd4\x90\x09\xc2\x3c\xcb\x19\x5f\xbe\x32\xc2\x91\xa2\x85\x17\x45\x57\x68\xae\xde\xee\xb6\x4c\xbb\x26\x94\x74\xaf\x99\xb3\xb8\xca\xbc\xd2\x50\x56\xfd\x49\xbd\x9c\xb4\x3b\x93\x65\x31\x09\x56\x53\x2e\x11\x15\x23\x0a\xe6\x56\x69\xc1\x65\xd8\x79\x5f\x66\x6b\x46\x3e\x58\xe4\x51\x05\x35\x67\xb3\x00\xb7\x4a\x29\x83\x8b\xac\x22\x6a\x4d\xca\xd9\xe1\x62\xdb\xbd\xc5\x8a\x5e\x1c\x18\xd7\xb4\x72\xdd\xa8\x78\xe3\x42\xa2\xd9\x4c\xb4\x5b\xa9\x4c\x39\x9f\x4a\x86\x11\x2d\xf0\x8e\xc6\xf1\xa6\x99\x2e\xf8\x5c\xc9\xe5\xe1\xaa\x9e\x5a\xaa\xe6\xa2\x56\x4f\x38\x2a\xc9\x0e\xb8\x52\x45\xcd\xf2\x85\x4a\xb1\xcd\xa9\xa3\xba\xce\xb6\x92\x23\x2e\xa3\x77\x74\x38\x9e\xb1\xc3\x7c\xec\xbf\x72\x45\xb1\xd9\xe0\x5a\xad\xff\x17\x28\x56\x06\x54\xe0\x25\x0e\x8b\x06\x07\x25\x91\xe3\x38\x0e\xf0\x3c\x86\x3c\xe6\x00\x54\x58\x51\x02\x04\x0a\x06\xa6\x58\x84\x0a\x31\x89\x00\x31\x87\x64\xc5\xa0\xa2\x42\x14\x62\x9a\xe2\x46\x29\x1f\xa2\x7a\x02\x24\x42\x31\xcb\x53\x22\x60\x16\x88\xa2\x04\xa9\x68\xb0\x10\x2a\x40\x11\x88\x4c\xa1\x42\x15\x82\x15\x93\x08\x22\xa4\x12\x91\xa1\x02\x00\x92\x45\x16\x00\x44\x20\xe6\x04\xf8\xe5\x2b\x23\x1e\x29\x56\x7c\x51\x6c\x39\x37\x71\xf4\x25\x4c\x2d\x3a\xc6\xbc\x56\xee\xe7\x94\x8a\x83\xa8\xcd\xcb\x25\x47\x92\x32\x3c\xbb\x2a\xf7\x15\x9a\xcf\xf6\x14\x13\xd4\xfa\x2b\x7f\x3e\x9b\x8c\x50\xdd\x1d\x4e\x39\x0b\xb1\xab\x9a\xbe\x5e\xa2\x8c\x25\x76\xca\xc9\x5e\x0e\xe6\x07\x25\x32\xc9\xf5\xa4\x79\x6b\xba\x65\x78\xa3\xd8\xec\x11\xe3\x5a\x9e\xeb\x0c\xdc\xf4\x3a\x8d\x9c\xbe\xc6\xe2\xda\x9c\x5d\x75\x9d\xa5\x12\x94\x8a\x7a\xa3\xc6\xdb\x89\xbc\xaf\xa4\xda\x6e\x3d\x18\xd5\x5d\xdb\x98\xb3\xe9\xe4\x98\xcd\x35\xf3\x94\x0d\x0a\xa4\x3b\x49\x8c\x05\x17\xc0\xc1\x7a\xdc\x4c\x1a\x1e\xe9\xf6\xbc\x46\xae\x17\xd1\x66\x35\x56\x6c\xe3\x8a\x62\xf3\x57\x15\xf9\x5f\xa0\x58\x0e\x11\x80\x80\xc8\x8a\xbc\x0c\x20\xc7\x61\x88\x88\xa1\x10\xcc\xb2\x2c\x32\x29\x96\xa1\xb2\x99\x3e\xb2\x06\x27\x00\x8a\x79\x99\x43\x80\x42\x16\x8b\xb2\x48\x14\x93\xc8\x06\x12\x36\x6a\xfb\x08\xd5\x43\xc5\xa0\x32\x91\x58\x2c\xc8\x26\x34\x10\xcb\xc7\xfd\xb0\x2c\x2b\x00\x03\xc8\x52\x1e\x98\xa2\xc2\x72\x06\x45\x02\x47\x64\x51\x12\xf9\x8d\x33\xa0\x00\x9e\x05\x98\x85\xec\x66\x7a\x0b\x8e\x14\x0b\x5e\x14\x5b\xd4\xd7\xa5\x11\xa7\xe5\xf8\x46\x33\xdb\x2d\x86\x66\x98\xd3\x27\xd9\x01\x31\xa1\xa0\x34\x01\xac\x55\x95\xbc\xe7\x24\x5b\xc4\x0d\x96\x1a\x07\x3b\x02\x00\x35\x2a\x08\x03\xc5\x18\x71\xf5\x81\x5b\x5b\xd0\x40\x6a\xeb\x81\x54\xcd\x8f\xa2\xc9\x60\xe5\xf6\x65\x17\xc9\x73\xde\x8b\x19\x8e\x15\x7b\xa4\x8b\x70\x96\x81\x83\x79\x7e\x3d\x01\xce\x3c\xa9\x86\x03\xa8\xd2\x20\x35\xb1\xad\x7c\xa5\xdb\x09\x43\xd2\x99\x47\x5a\xc2\xef\xce\xfb\xe9\x24\x00\x73\x11\x0c\x59\x71\x09\xbd\x74\x31\x09\x44\xab\xcb\xe9\x99\x95\x9e\x9d\xa4\xe6\x52\x85\x8c\xf2\x8d\x09\x21\xbd\x6e\x31\xc7\x16\x52\xf1\x04\xa4\x73\x45\xb1\x05\xf6\x5a\xad\xff\x17\x28\x96\x97\x89\x80\x58\x24\x13\x11\x01\x56\x94\x04\x6a\x52\x56\xc6\x0a\x27\x1a\xd0\xa0\x2c\xa4\x48\x50\x38\x83\x27\xc4\xe4\x45\x01\x29\x94\x4a\x32\xa5\x3c\x07\x88\x02\x01\xe2\x80\x84\x37\x6a\xfb\x08\xd5\xf3\xa2\x02\x10\xe6\x81\xa8\x18\xbc\xac\x10\x16\xcb\x08\x18\x08\x53\x81\x33\x58\x59\x51\x90\x82\x58\x8e\x15\x24\x05\x03\x24\x52\x28\x08\x98\xdb\xac\xd9\x28\x45\x8a\xcc\x63\x2c\x6c\x14\x2b\x1d\x29\x56\x7a\x51\x6c\xca\xb7\xa7\x9d\x54\x7a\xa4\x67\x31\x89\x22\xc2\xaa\xe9\x20\xd9\x27\xfd\xac\x9d\x5e\x56\x29\xeb\xe5\x6d\x65\xc1\x15\xdb\xd3\xb5\x17\x8d\x29\x18\x0b\x6b\x98\x6e\x27\x67\xab\x45\xa1\x8a\x9a\x7a\x9e\x6f\xd9\x99\x74\x3b\x51\xc9\xc1\x7e\xcf\xf4\x06\x82\x2b\xb1\x15\xa7\x52\x6b\x1c\x29\x76\x78\x60\x5c\x58\x2b\x23\x47\x6d\x4d\x35\x25\x54\xbb\xcb\x49\xb8\xcc\x08\x7a\xab\x36\x15\xac\x70\xd9\x9a\x67\x9d\x8a\xa4\x76\x26\x8b\x54\x4b\xcc\x36\x27\x13\x1b\xb1\x76\xcb\x28\x97\xc4\xaa\x65\x47\xa1\xbc\x0c\x8a\x0e\x72\x86\xd9\x0c\xc2\xbd\x89\xb2\xae\x37\xc9\x02\x26\x67\x7d\x0d\x57\x63\xff\xfd\xff\x1a\xc5\xde\xc8\x4b\x5c\x79\x4a\xe1\x89\x2c\xc7\xe5\xcd\xe2\x67\x9c\xdd\xba\xd1\xf9\x9c\xcf\xf3\x7b\x95\x4f\x78\xbb\x71\xa7\xf1\xad\x19\x9d\xa3\xbb\x8d\x87\x24\x98\x9a\x17\xf2\xdd\x4c\x47\xab\x0a\x6a\x3b\x2d\x54\x32\xd5\x4a\x5b\x6a\x75\x33\xd5\x7a\xae\x2b\x68\x9d\x6a\x47\x85\x62\x07\xb4\x9b\x7c\x5a\x6b\xe4\xea\xa9\x54\xa7\x90\x2b\x0e\x5a\x40\xdd\xae\x4a\x77\xb9\x13\x7e\xdd\x2d\x34\x0d\x3c\x74\x34\x23\x15\x0e\xea\xec\x6c\x8c\xe4\x10\xfb\x1e\x3f\xac\xcb\x53\xde\xc4\x69\x5d\xf5\x17\x23\xcf\x9c\x55\x0e\x5a\x89\x17\x71\xe9\xf8\x9f\x1b\x9d\x67\x2d\x38\xa1\xdc\x02\x0b\x2d\x2f\xbd\x74\xea\x5c\x66\x3a\x5e\x17\x87\xa3\xf5\x4c\xe2\x9b\x49\xb9\x08\xc5\xc8\x48\x36\xa6\xd1\x32\x31\xaf\x28\xdb\xbc\xc5\x40\xae\xa9\xb5\xf8\xfa\xe1\xfe\x8f\xd4\xc1\x69\xfc\xff\x8c\xaa\xaa\xee\xd1\x2c\x2a\x35\x10\xec\x72\x71\x3a\x2c\xd4\x72\xd8\x58\xd0\x65\x58\xad\xbb\x41\x22\xef\x23\x79\x95\xed\x76\x5c\xb0\x6a\x34\x5a\xd5\x39\xc8\x2f\x78\xb1\x18\xbb\x6b\x6b\x91\xa2\xaf\x12\x99\x86\x31\x6b\x21\x37\xc7\xb7\xc0\x44\x98\x75\x3b\x56\x23\xa7\x78\x0e\x60\xbd\x7a\x63\xd4\xce\x06\x85\xf5\x44\x5e\xe5\xe6\x69\x7f\x5a\x31\x9a\xf9\xbc\x2e\x57\x0a\x34\xd5\x6d\xca\x7a\xaf\xbf\x6c\xa7\x57\x36\x3f\x14\x7a\x39\x97\x90\xfe\x48\x2e\xf9\x4a\x46\xfd\xf1\xe3\xbc\x6f\xff\xe0\xaa\x11\x9e\xaa\x9a\xca\x69\xd5\x64\x52\x49\x27\x51\x74\x33\x9d\x7a\x4b\x19\xaf\x1b\x20\x40\x6b\x75\xe0\x2d\xa7\xf9\xd9\x6c\xc9\x15\x27\xb9\x79\x4f\x2a\x8e\xa6\xe5\x86\xd7\xca\xa4\x0f\x55\x53\x3f\xeb\x1b\xde\x4c\x3d\x2e\xac\x9a\x9d\x30\xa7\xa5\x13\xb8\x3d\xe8\xe4\x60\x52\x58\xab\x13\xb9\x58\xf0\x87\x73\x47\x47\x4b\x0d\xfa\x66\xc4\x8f\x92\x3d\x4f\x1e\x69\x60\xe2\x9a\x4b\x60\x35\x46\xbd\xd2\xb4\x8d\xf2\xc6\x50\xf4\x9c\x2e\xca\x64\x6a\x85\x42\x63\x60\xb5\x94\xa8\xdd\xe9\x22\x7e\x3c\x48\x37\x7e\x39\xf5\xe2\x53\xd4\x37\xce\xa9\x1f\x97\xa3\xc4\xac\x95\xf3\x12\x24\xed\xf6\x4a\x7e\xbb\x08\x68\x3d\xe7\xd5\xb4\x51\xc3\x57\xfa\x7a\x30\x98\xd8\x52\xa3\x6b\xcc\x94\xf2\x44\xdd\x53\x7f\x3e\x6e\xbc\x99\xfa\x62\x76\x68\x65\x35\x77\x6c\x84\x85\x69\xc6\x9d\x25\x55\x1a\x88\x8a\x27\x0c\xe6\x9a\x5a\xf2\x12\xd3\x48\x93\xac\xb2\xd5\x9c\xe0\xc4\x74\x65\x0c\x23\xe8\x8e\x59\x64\x97\xeb\xc2\xba\x5f\x0b\xcc\x22\xcd\x58\xbc\xd6\x8f\xd2\xb9\xd2\xba\x5e\xa9\x61\xda\x48\xa6\xb5\xe2\x24\xaf\xfe\x7a\xea\xc1\x53\xd4\x77\xce\xa8\xcf\xe8\x61\x9b\xba\x13\x90\xa4\xd8\xe5\xa2\x42\x47\x71\x4c\x98\x4a\xac\xa7\x55\xb2\xf6\x58\x94\x97\x9a\x6e\x19\x8f\x57\xd8\x5f\x25\xd1\x70\x4f\x7d\xf3\x59\xea\x61\xb5\x9b\xf4\x52\x7d\x4b\xeb\xb9\x83\xe6\x20\x68\xe9\x42\x47\x10\xd7\xdd\x49\x47\xf5\xd5\x46\xb7\x58\x43\x58\x91\x7a\xc8\x11\x39\x1f\x1a\xab\xb1\xc1\xba\x51\x53\x6f\x67\x2c\xa5\x5a\x5f\x27\x67\x5c\x33\x57\x5e\xe8\x69\x0e\x45\x3e\xe8\xb4\x86\xf6\xaa\x37\x12\x4b\x7e\xfb\x5f\xa0\x7a\xe9\x29\xea\xfb\x97\x1d\x4e\x9d\xd6\x83\x52\x3d\xe1\x6b\xaa\xc9\x4d\x73\xa6\x31\x28\x77\x2a\xa5\xba\xb8\xd0\xc3\xd1\x60\x35\x72\x09\xf5\x1b\xab\xfe\x02\xa4\x0f\xd4\xb7\x9e\xa5\x7e\xd6\xec\x72\x09\x7f\x8d\x3a\x72\x7b\x14\x2c\xbb\xa3\xe9\x4c\x87\x3a\x4d\xc8\x3a\x8f\x6a\x85\x5c\x77\x61\xb4\x93\xf6\x7c\xd4\xcf\x25\xd4\xbe\x50\xf1\xf8\x26\xf0\xca\xe3\xd2\xdc\xe6\xb2\xfa\xca\x19\x5a\xed\x0a\x9f\x0c\xd7\x61\xa6\x15\x8d\x4b\x0d\xdf\x76\x39\x19\x66\x53\x45\x75\xd7\xd7\xdf\x1e\xd8\xaf\x3d\x3f\xf3\x8e\x81\xfd\xe5\x19\x9a\xc3\x7d\x1a\x08\x15\x11\xf1\xbc\x22\xb3\x50\x90\x01\x04\x86\xc9\x51\x53\xc2\x82\x48\x15\x62\x52\x59\x42\x18\x51\x81\xe7\x38\x00\x78\x48\x20\x2f\x72\xac\x28\x63\x83\x2a\x9c\xc1\x62\x43\xe6\x8f\x2b\x35\xee\x50\xb6\xc3\x68\xc6\xa8\x76\x70\x2e\xe4\xd3\xfd\x30\xc8\x73\x93\x64\x6b\x56\xf5\x57\x1c\x1f\x8d\x91\x9a\x5c\xb9\x83\x25\x5b\x32\xd3\xf3\x74\x7e\xb4\xf2\xb6\xd9\xb6\x7b\x85\xbf\xf2\xbc\xcc\x33\x93\xa4\xeb\xcf\xaa\xbc\x99\xcb\xc3\xf3\x2a\x7b\x2e\x5f\xde\xdf\xde\xbe\x58\xc2\x5c\x1c\xf1\xfd\xa8\x8b\x16\x76\xc5\x11\xf5\x7c\x93\x04\xe6\xd4\x73\x5d\xb2\x0c\x6d\x14\xb9\xe6\xe8\xdc\x51\xfc\x3a\xc5\x23\xce\x6c\x14\x84\xdb\x57\xd2\x77\x8f\xd4\x5d\x41\xf5\xf4\xe2\xf0\x01\x1c\xbb\x7e\x04\xf9\xe6\xc8\x9a\xef\x4e\x9e\xe3\xf8\x9f\xf8\xae\xfc\xe7\xdd\xcb\xed\x9f\xbf\x31\xdc\xf6\x3e\xfd\xe7\x80\xf8\x73\xe2\x7f\xfe\xc6\x7c\x9e\xb3\x7f\x4b\x7f\x0b\x7f\x49\xd2\x5f\x43\x2c\x49\x00\x02\x93\x7e\xde\x19\x99\x91\xef\x13\x37\xd4\xe2\x62\x7e\xfe\xc6\x48\xa7\xbf\xa7\xe2\x87\xc2\x83\xcf\xdf\x98\xff\xfb\xe9\x25\xe8\xff\x7c\x3a\x86\x10\x5b\x6e\x82\x3c\x7b\xe7\x71\x87\x68\xef\x77\x53\x8d\x9f\xbf\x9d\x45\xdb\x16\x6c\xc3\xc3\xe7\x6f\x0c\x7b\x72\xea\x9f\x67\xd7\x07\x2e\x9a\x6e\x70\x11\x59\x14\x80\x40\x89\x02\x11\x35\x0c\x85\x70\x58\x12\x78\xc4\x62\xac\x88\x12\xa5\x02\x32\x45\x6a\x12\x41\xa2\x3c\x11\x20\x81\x48\x80\x50\x46\xb2\x04\x44\xd6\x24\x86\x02\x31\xfd\xfc\xe9\x4a\x84\x1b\x1c\x00\x8e\x70\x9c\x80\x21\x51\xa8\x88\x15\x9e\x42\xc5\x64\x05\x91\x65\x29\x2f\x22\xc2\x99\x2c\x52\x38\x96\x13\x64\x41\x40\x94\x8a\x12\x4b\x0c\x6a\x2a\x90\x45\x14\xf1\x32\x6b\x20\x5e\x7c\x3b\x07\xdc\xd7\xcb\x73\x5e\x14\x4e\xa3\xf0\x63\xcb\x7e\x8f\xe1\xa7\x6b\xfe\x0d\x0c\xff\xa7\xaa\xec\x37\x07\xbf\x39\xf8\xcd\xc1\x6f\x0e\x7e\x73\xf0\x9b\x83\xdf\x1c\xfc\xe6\xe0\x17\x72\x10\xff\xeb\xff\x7d\xfa\xe7\xa3\x0b\x99\xc0\x9c\xc6\xaf\x5e\x5e\x3b\xbe\xbc\xac\x43\xb7\xb7\x6a\xaa\x01\xd7\x64\x7b\x42\xbf\x64\xf1\x0b\xa3\xd7\x56\xca\x1e\x3f\xd7\x74\x24\x55\xbd\x4c\xb2\x8c\xdd\x42\xc3\x5e\x94\xe5\x22\x2a\x94\xc7\x87\x64\x40\x7e\x9b\x9b\xc0\xa0\x65\x95\xfb\xa9\xf5\x48\xef\xc9\x05\xd9\x68\xb7\x01\xac\x8f\x66\xfc\xbc\x32\xca\x75\x4b\x09\x73\x92\xcd\x8e\x8d\x44\x33\xa8\x46\x1f\x9e\x8c\xd8\xfc\x51\x29\x24\xfa\x8a\x9c\x58\x4c\x92\x52\x10\xa4\xd6\xbd\x49\x77\x19\x4e\xa6\x8d\xc5\x24\x39\x4e\x11\x3e\xe7\x96\xf3\x18\x24\xc2\x4c\x69\x9c\x99\x94\xe3\xab\x72\xee\x42\x4c\x9d\x3d\xed\x94\x55\x87\xab\xd6\x6c\x8c\xb9\x8e\x5b\xd1\x38\xd9\x11\x87\x80\x15\xc4\x7e\x29\x25\x2e\x52\x6a\xaa\x28\x16\x94\xa0\x2b\x57\xc2\x39\xaf\x99\x13\xae\x10\x08\x4e\x7f\x52\x2b\xe1\xba\x90\x4a\xae\x13\xcd\xd9\x2c\xb7\x26\x6b\x6d\x44\xdb\xbc\x18\x2c\xc0\xb8\xe7\x8d\x32\xab\xec\xa2\xd5\x2f\xff\x4e\xde\x5c\x4b\xde\xc4\x84\x23\x80\xba\x6a\xc3\xeb\x2e\x0b\xba\xef\xbb\xa1\xaa\xfa\x75\xbe\xe0\xa4\x4a\x8d\xa0\xad\x2b\xe5\xd4\x94\x9a\xd5\x56\x56\x32\x25\xcd\x5b\x9c\xd6\xf7\x2f\xca\x9b\xdc\x78\xfd\xe5\x89\xd4\xc9\xcd\x97\x2a\xde\x9a\x3c\x39\x79\xb1\xe2\x90\x3e\x31\x04\x45\x26\x86\x88\x88\xac\x40\x20\x09\x3c\x90\x44\xc1\x44\x98\xe7\x4c\x45\x24\x9c\x60\x50\x93\x85\xa2\x21\xf0\x02\x21\xb2\x40\x38\x91\x33\x28\x64\x39\x04\xb0\xc2\x8a\x34\x7e\x5e\x8c\x8f\x9f\xd6\x3d\xea\x05\x2a\x07\x96\xb7\x84\x5b\xc9\x14\xab\xb1\xa5\xfc\x2a\x1c\x2d\xaa\x9c\xdd\x67\xd1\x6a\xea\x71\x4a\xb5\xb0\x9c\x6b\xe9\x55\x0d\x84\xa9\xac\x99\xee\xce\x17\x39\x65\x21\x0c\x43\xbf\xe6\x0e\xd4\x07\x8e\x9b\xb7\x60\xb3\x07\xd5\xbf\x33\x7e\x3f\x99\x30\xcf\xfc\x3d\x18\xff\x32\x9b\x7b\x9d\x77\xaa\x40\x13\x51\x8a\x0c\xd9\xe4\x24\x96\x17\x90\x00\x65\x59\xe4\x24\x60\x1a\xac\x21\x50\xca\x21\xc4\x63\x44\x45\x96\x65\x29\xa1\xa2\x82\x79\x8e\x50\x53\x16\x21\xc6\x06\x35\x08\xda\xf2\xce\x5f\x66\x01\x9f\x2c\xb7\x2c\x1e\xae\xbf\xfa\x2c\xe7\x93\xe5\x36\xb0\x28\x4b\xd8\xc0\x98\xe5\xb1\x28\xb1\x32\x07\x25\xc8\x99\x22\x02\x08\x12\x05\x4b\x44\x96\x80\x89\x78\xc5\x34\x44\x8e\x48\x3c\x86\x08\x51\xc8\x22\x9e\x12\x02\x0c\x41\xc2\x64\xf7\x7c\xe2\xa5\xde\x8e\xca\x9d\x8e\x3c\xc1\x0b\x45\x30\x4b\xd7\xb3\xcb\x69\x23\x29\x78\x85\x6a\x62\xcd\xc1\xe6\xca\x0a\x38\x9b\x56\x72\x7d\xa7\xd1\x1b\xfa\x51\x2b\xd1\x8e\xed\x4b\x9d\x74\x62\x57\xa8\xe1\xf5\x22\xdf\x2e\xf7\x9e\xf7\xcc\x73\xf1\x6b\xe6\x21\xfe\xaf\xd0\x9b\x0c\x20\xc5\x32\xa5\x3c\xc5\x54\xc0\xbc\x88\x24\x28\x73\xa6\x02\x36\xed\x98\x47\x84\x63\x59\x6c\xf2\x90\x03\x32\x27\x52\x1e\x10\xc8\xcb\xbc\xc1\x13\x20\x41\x11\x2a\xa6\x04\xd0\xee\x29\xbb\x4b\xde\x3f\xba\xdc\xa9\x37\xf2\x9e\x7d\x2e\x7e\x45\x3c\xc4\x2f\xbe\x21\xfe\xa3\xbc\x0b\x1c\xe5\x39\x16\x4b\x22\x35\x09\x16\x01\x12\x44\x82\x24\x81\xa5\x8a\x28\x8a\x82\x80\x09\xa0\x82\xa0\x18\x82\x28\xb3\x26\xc4\x02\xa5\x54\xe1\x29\x6f\x08\x22\x2f\x51\xc3\x04\x8a\xb8\x7b\x56\xec\x92\xf7\x7f\x53\xb9\xf7\xa1\x73\xcf\xc5\xd7\x3a\x67\xe5\x79\x13\xef\x37\xc7\xca\x8f\x19\x28\x7f\xf5\x28\x99\xd7\xe4\x42\x63\xde\x98\x18\x65\xbe\xa0\x0a\xbd\xee\xb8\xe9\x97\x9d\xb1\xce\xb2\x34\x2f\x07\x5a\x11\x3a\x6c\xb6\xb9\x28\xf5\x92\xaa\x2e\xa8\xf1\x63\x47\xfb\xe3\x9c\xa5\x0b\xd6\x42\x63\xa8\x37\xa5\x2c\xf4\x32\x1a\xab\x35\x12\x8b\x7e\x2b\xad\xac\xf5\xb9\xde\x6d\x0b\x4b\xab\x6e\xf5\xa3\x96\xc1\x65\xe6\x4e\x43\x23\xf1\x43\xfc\xe9\xae\x3a\x3f\x7e\xc9\x24\xb5\x1d\x0d\xe2\x4a\xee\x8f\x1b\x66\xbd\xcd\xe7\xc1\x68\xe6\xa6\x9c\x61\x3e\x4f\x86\x4a\x49\xb6\x45\x93\xcb\xba\x1d\x7b\x39\xb1\xb3\x76\x41\x09\x66\x03\x9f\x55\x20\x97\x93\x6a\x5a\x8f\x92\xa4\x23\x4e\xa6\xb9\xb0\x98\x08\x8a\xac\xc5\xcd\x34\x2b\x04\x2a\x5b\x5a\xf5\x5c\x63\xd4\xd7\x7a\xc0\xcb\xc4\x37\x3e\xd6\x4e\x2d\x2c\x4b\x25\xdc\xab\xd8\x83\xcc\x2a\x2c\x9a\x76\x2d\x0b\x93\x2a\xd6\x2a\x63\xe8\xd5\x47\x0d\x43\x59\xe4\x6d\xbe\xd1\x5e\x1e\x9e\xcd\xbe\xc3\xc1\x41\x19\x27\x2f\x0c\x9d\x8f\x86\x47\xa3\x99\xd6\x13\x73\x2c\x19\xd5\x24\x75\xa5\xa4\xd9\x7a\x90\xcf\x0e\xe7\x26\x07\x39\xae\xa3\xc8\xfd\xb1\xe8\x68\x13\x47\x69\x40\x30\x49\x0b\xf3\xd8\xde\x6e\x68\x60\x7b\x65\xfa\x7a\xec\x7b\xb8\x5e\x94\x7c\x14\xff\x0d\xf5\x9f\x21\x69\x3e\xe8\x56\xfb\xf9\xf5\xd1\xd0\x74\x7d\x94\xba\x1a\xff\xb2\x97\xfa\xd5\x53\x91\xf7\x8b\xfb\x9c\xdc\x8b\x02\xf9\xb3\xaa\xa4\x91\x1a\x1a\x8e\x97\x15\xd4\xa9\x2b\x52\x6a\x4d\x03\x85\xb0\xa6\xe7\x57\x07\xfa\x3a\xd5\x2b\x4d\x72\x5e\x19\x4e\xe6\x93\x78\xa2\x7e\x47\xdc\x29\xa7\x3c\x6d\x0d\xe7\xfe\xa2\x5c\xe3\x59\x3d\x5d\xa3\x7d\xaa\x07\xf9\x6c\xb6\x13\x2e\xfa\x08\x65\xe9\xac\x15\x49\x2b\xa7\xe4\xd8\x19\x07\x25\x8a\xba\x54\x84\xc5\xe1\xd0\xe8\x0c\x2a\x9e\xd9\xc0\x03\x45\x2c\x56\x54\x5a\xc6\x0d\xb5\x3a\xd3\x8d\x62\x0d\xae\x82\x05\x21\x95\xf4\x46\x80\x09\x7d\x35\x4f\xf8\xe3\x54\x3f\x5d\x1b\x93\x62\xa3\xa7\x6b\xe9\x75\x72\x39\xb3\xf8\x79\x43\xcd\x24\x94\x12\x3b\x82\xf2\xa8\x20\x18\x89\x84\xb7\x07\xf6\xa1\xe2\x2e\x4b\x63\x62\x09\x63\xc7\x2b\xca\xed\xbc\x9d\x49\x92\xa1\x29\xc0\xba\x1e\x16\xca\xe5\x75\xaf\x2b\x2f\xba\xd6\x20\x85\xd2\x11\xd0\xc0\x76\xa1\xf8\x6f\x16\xb7\x3f\x57\x2a\xd5\x5f\x27\xee\x0f\x9e\x6f\xbe\x91\xdc\xc1\xa1\x72\xee\xf4\xdc\xf1\x2a\x3d\xd5\xed\x56\x77\x63\x7a\x9a\x8b\x52\xb8\xe0\xb5\xa3\x61\x65\xde\x08\x33\x30\x35\x2a\x6a\x42\x95\x28\xb8\x5b\xa7\xf9\x62\xa2\x64\x81\xd2\xbc\x53\x4b\x0c\xd4\x10\x0a\xc9\xfd\x71\x54\x03\xfb\xf8\x8d\x94\x32\x71\xca\x3d\x7e\x26\xcc\x61\x83\xae\xe4\x7a\x85\x4c\xb2\x06\xd7\x6e\x17\x81\xb5\x9c\x4d\x8a\x6c\xca\x1b\xea\x7e\x2d\x84\xc3\x1a\x27\xf1\x0d\x63\x32\xe2\x71\xab\xdd\xa1\x24\xe3\xcd\x4d\xb6\xae\x22\x3a\xca\xe8\xcb\x70\xd4\x55\xed\x40\x8b\xc6\x76\xca\x59\x8d\x53\x6a\x3f\x16\xe3\xbc\x33\x0a\xe7\x58\x0d\x9b\xc3\xa1\x3e\x58\x2e\xcb\x3d\x57\xc2\x86\x37\x30\xbd\xe9\x8a\x2d\x38\x9a\x3e\x9b\x9b\x65\x2d\x01\x8c\x6a\x78\x58\x52\x5c\x17\x7a\xff\x88\x96\xd7\x84\x7e\x34\x57\x78\xab\xd0\xbb\xdd\xf6\xcb\x23\x40\x6f\x1c\x25\xb7\x47\xe1\x8c\xeb\xf3\xf9\x49\x63\x8f\x4f\x7d\x17\x3e\xbb\xa1\x89\x60\xa1\x9e\x64\x6c\x2e\xd7\x02\xef\x6d\x08\x1f\xbc\x00\x78\x7f\x43\xb8\xd3\xcb\x3f\xd1\x10\x16\xea\x49\x57\xb6\x3d\x8e\x1a\x42\x4e\xaf\xf6\x1b\x9c\x5b\x95\xb3\x4e\x73\x32\xaf\x98\x98\xa7\xa4\x37\x34\x55\xbf\xb8\x6c\x52\xdb\x1c\xc1\x75\x34\x35\xdb\xb9\xf4\x64\x2d\xfb\xa9\x52\x6e\xe1\x19\x43\x71\x9d\x18\x05\x62\xc7\x71\x85\xb6\xd6\xd3\x40\xd5\xf6\xb9\x16\x55\xd2\x75\xb9\x64\x0e\xf3\x7a\x90\x69\x0d\x1b\xb1\x58\x47\x7a\xb2\x9f\x5c\x25\x69\xbd\xd5\x72\x48\x6a\xd5\xd5\x07\xea\x4c\x6c\x64\xcc\xd2\xb2\x97\x6a\xaf\x74\xb7\x9c\x0e\xa2\xae\xdb\x04\x4b\xfb\xb5\x1e\xff\xc1\x86\xb0\x50\xff\x17\x34\x84\xc6\xbf\x0f\x9f\x7a\xa6\x85\x23\x7c\x0f\x34\x94\x0f\x5e\xb1\xbd\xbf\xa1\x64\xce\x4a\xf4\x81\x0d\xe5\xfc\x38\x6a\x28\xf9\x45\x30\xab\x14\xd7\x0b\xbf\x59\x2c\xe2\x7e\x5e\x6f\xad\x87\x2b\x47\xca\x74\x8c\x4a\xc1\xef\xf8\x24\x51\xea\x72\xc5\x5e\x50\xf5\xad\xa2\xe7\xe0\xbe\xb0\xce\x47\x74\x10\xa6\xd3\x5d\xa0\xa8\x99\x92\xb2\xe2\x24\x50\xef\x66\x73\xdd\x40\x17\x01\x24\xe2\x98\xad\x24\x9b\xbd\x05\x1b\x8b\xb9\x42\x8b\x0d\x6e\x92\xac\x71\x39\x8f\x95\x9c\x4a\xdd\xce\x36\xd6\x82\x2d\xaf\x9d\x75\x4b\x5d\x2a\xf5\x64\xa2\x25\xfb\xd5\xb4\x01\x97\x83\x43\x8d\xbd\xb3\xa1\x64\x0e\x15\xdf\x39\x9c\x7a\x4f\x8f\x1c\x1e\x3d\xf6\x7b\x95\xbb\x3b\x53\xa3\x85\xfa\x1f\xdb\x10\xe2\xe3\x28\xdb\xf4\xc6\xa9\xf5\x3b\xb5\x77\xba\x7a\xbf\xd8\xb6\xe5\x72\xdb\xf5\xfd\x36\xcc\x2f\x5b\xc6\xbc\xb2\x8e\x3f\xde\xff\x3d\xde\xf5\xfd\xc8\x63\x7c\xdb\x4b\xcd\x64\xae\xec\x0c\xbb\x0f\xc8\xd4\x9b\xc5\x8a\xda\xec\x33\xe5\x6c\x9f\xf9\x63\xbf\xf1\xd4\xd7\xfd\x86\xc5\x37\x37\x0d\x3e\xdb\x89\xfe\xa3\x80\x07\x77\x50\x07\xf7\x20\x5f\xdb\xb9\xf6\xb0\xf9\xfe\xd3\xf0\x0c\xe4\x5e\x43\xf6\x12\xe0\x14\xd4\x76\xe7\xbc\xfb\xdb\xda\xde\xfd\xea\xc0\xd3\x70\x4f\x9c\x5f\x03\x7e\x27\x3a\xd3\xa9\x16\x1b\x9d\x2c\x73\xd8\x8b\xe8\x4d\x25\xf9\x18\xbe\xdf\x58\x80\xcb\x3a\x38\xec\xf4\x7b\x63\x97\xda\x93\x6f\x55\x3c\x8d\x77\xeb\xec\x1a\xd0\xa3\x30\xa7\x08\x77\xbb\x90\x5e\xdf\x7d\xf4\xf8\xc3\x1c\x4f\x83\x8b\x7d\x5d\xc3\x76\x08\x72\x0a\xcd\x9a\x7e\x8d\xf7\x24\xbd\xbb\x11\xe7\x95\x0f\x92\x3c\x8f\xf4\xc8\xe5\x55\xc0\xe7\x21\xaf\x55\xfa\x8d\xdd\x3a\x4f\x3e\xcb\xf2\x11\x48\x83\xc8\xb8\x81\xf1\x25\xcc\x29\xba\x78\xa3\xcf\x3b\xfb\x56\x5e\x7c\x8b\xe6\x69\x90\x07\x87\xd7\x80\x9e\x85\x3b\x05\xfb\xb2\xf5\xe5\xad\xad\x25\x4f\xbf\xc6\xf3\x3c\xd2\xad\xb7\xab\x30\x8f\x02\xdd\x1c\xaf\xf6\x9b\x4e\xde\xd9\x37\xf2\xe2\xab\x44\xcf\xa3\xde\x3b\xbc\x0a\xfc\x34\xdc\x29\xf6\xfd\xd6\x93\x77\xb6\x94\xbc\xf8\x3c\xd3\xd3\x80\x0f\x0e\xaf\x01\x3e\x0b\x77\x93\xec\xed\x96\x92\x5f\x0f\xfb\x45\xde\xdd\x1a\xf1\xca\xe7\xab\x9e\x2f\xc7\x91\xcb\xab\x25\x39\x0f\x79\xad\x9f\x08\xc8\xec\xeb\xcb\x5e\x80\xb7\xb7\x2d\x3c\xff\xac\xd7\x07\x60\xbf\x0b\xfc\x29\xd4\xe7\x5f\x36\xdb\x81\x8d\xbf\x83\xf6\xd8\x96\x8b\xdb\x4f\xa6\x9d\xf9\x61\x6a\xd5\xc3\xc4\xaf\xd3\x2a\x56\xf3\x8c\x11\xfa\x84\x30\x2f\x1b\x6c\xfe\xc9\xf4\x0a\xd9\x66\x96\x39\xde\x70\xf3\xb0\x75\xdf\xe5\xdc\xec\xe2\x7b\x6d\xef\x05\x7a\xe1\x69\x03\x75\x37\xc0\x9f\x02\x3d\x32\xbc\xc0\x73\xf8\xcc\xdc\x7b\x71\xec\x3d\x6c\xe2\x1f\xb4\x73\x02\xe1\xf6\x7c\xea\xe4\x83\x78\xcf\x40\x78\x71\xb2\x45\x71\xd4\x06\x1f\x04\x72\xf2\x0d\xbf\xf7\x02\x39\x76\xb2\x01\x72\x3a\x5b\x7c\x10\xc9\xd1\x57\x07\xdf\x8b\xe3\xe0\xe2\x96\x28\x62\x8b\x6b\x23\xf2\xe1\xd3\x88\xef\x0d\x7e\xec\x64\x13\xfe\xe8\x25\xc7\x07\x19\x38\xff\x9c\xe3\x13\x48\x8e\xfd\xec\xc0\xbc\xcc\x39\x4e\xc1\x1c\x6f\x2e\x7d\x09\xe8\xf2\x7b\x94\xef\xc6\x74\xe1\xea\x56\x15\x9d\x58\xde\x9a\x8c\xbc\x7c\x4e\xf3\xdd\x70\x4e\xdc\xc4\x0c\xed\x66\x39\x27\x58\xae\x2d\x36\x6f\x7d\x7b\x95\x31\x3d\x67\x6a\x93\x90\xc4\xd1\xfe\x7f\x00\x00\x00\xff\xff\xde\x54\x93\xa1\xe5\x75\x00\x00") + +func change_trustCoreSqlBytes() ([]byte, error) { + return bindataRead( + _change_trustCoreSql, + "change_trust-core.sql", + ) +} + +func change_trustCoreSql() (*asset, error) { + bytes, err := change_trustCoreSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "change_trust-core.sql", size: 30181, mode: os.FileMode(420), modTime: time.Unix(1508958224, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _change_trustHorizonSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x69\x6f\xe2\xca\xd2\xf0\xf7\xf9\x15\xd6\x7c\x61\x46\x49\x26\x6e\xef\xce\xbc\x73\x25\x03\x66\x49\xc0\xec\x01\x72\x75\x85\xda\x76\x1b\x9c\x80\x4d\x6c\x03\x21\x47\xf7\xbf\xbf\xc2\x36\x60\x8c\x37\x96\x39\x73\x1e\xe9\x5a\xa3\x73\x02\x5d\x5d\x5b\x57\x57\x55\x57\x9b\xee\xbb\xbb\x2f\x77\x77\x58\xd3\xb4\x9d\xb1\x85\x3a\xad\x1a\xa6\x42\x07\xca\xd0\x46\x98\xba\x98\xcd\xbf\xdc\xdd\x7d\xd9\xb4\x17\x17\xb3\x39\x52\x31\xcd\x32\x67\x7b\x80\x25\xb2\x6c\xdd\x34\x30\xfe\x07\xf3\x83\x0e\x40\xc9\x6b\x6c\x3e\x1e\x6d\xba\x87\x40\xbe\x74\xc4\x2e\x66\x3b\xd0\x41\x33\x64\x38\x23\x47\x9f\x21\x73\xe1\x60\xbf\x30\xfc\xa7\xdb\x34\x35\x95\xb7\xe3\x6f\x95\xa9\xbe\x81\x46\x86\x62\xaa\xba\x31\xc6\x7e\x61\xb9\x5e\xb7\xc4\xe5\x7e\x6e\xd1\x19\x2a\xb4\xd4\x91\x62\x1a\x9a\x69\xcd\x74\x63\x3c\xb2\x1d\x4b\x37\xc6\x36\xf6\x0b\x33\x0d\x1f\xc7\x04\x29\x6f\x23\x6d\x61\x28\x8e\x6e\x1a\x23\xd9\x54\x75\xb4\x69\xd7\xe0\xd4\x46\x07\x64\x66\xba\x31\x9a\x21\xdb\x86\x63\x17\x60\x05\x2d\x43\x37\xc6\x3f\x7d\xde\x11\xb4\x94\xc9\x68\x0e\x9d\x09\xf6\x0b\x9b\x2f\xe4\xa9\xae\xdc\x6e\x84\x55\xa0\x03\xa7\xe6\x06\x4c\xa8\x75\xc5\x36\xd6\x15\xf2\x35\x11\xab\x96\x30\x71\x50\xed\x74\x3b\x58\x43\xaa\x0d\x7d\xf8\x1f\x13\xdd\x76\x4c\x6b\x3d\x72\x2c\xa8\x22\x1b\x2b\xb6\x1b\x4d\xac\xd0\x90\x3a\xdd\xb6\x50\x95\xba\x81\x4e\x87\x80\x23\xc5\x5c\x18\x0e\xb2\x46\xd0\xb6\x91\x33\xd2\xd5\x91\xf6\x86\xd6\x3f\xff\x0e\x82\x8a\xfb\xd7\xdf\x41\x72\x63\x57\x7f\x9f\x80\x1e\xb5\xb0\x74\x6e\xf7\xaa\x54\x14\x07\x81\x9e\x3e\x25\xb7\xe3\x08\x69\x1a\x52\x1c\x7b\x24\xaf\x47\xa6\xa5\x22\x6b\x24\x9b\xe6\x5b\x72\x47\xdd\x50\xd1\xc7\x28\x40\xdf\xb0\xa1\x6b\x8b\xf6\xc8\x34\x46\xba\x7a\x4a\x6f\x73\x8e\x2c\xb8\xeb\xeb\xac\xe7\xe8\x82\xde\x7b\x4e\x2e\xe2\xe2\xb4\xbe\x53\xa4\x8e\x91\xe5\x76\xb4\xd1\xfb\x02\x19\xca\x49\x22\x04\xba\xcf\x2d\xb4\xd4\xcd\x85\xed\x7f\x37\x9a\x40\x7b\x72\x26\xaa\xcb\x31\xe8\xb3\xb9\x69\x6d\x66\x8c\xef\xf6\xce\x45\x73\xae\x2e\x95\xa9\x69\x23\x75\x04\x9d\x53\xfa\x6f\x8d\xf9\x0c\x53\xf2\xa7\xce\x19\x4c\x07\x7b\x42\x55\xb5\x90\x6d\x27\x77\x9f\x38\x96\xea\x86\x86\xd1\xd4\x34\xdf\x16\xf3\x0c\xd0\xf3\x34\x96\x3c\x28\xa8\x5b\x27\x22\xde\xfa\xc5\xcc\x1d\x36\x7e\x42\xd3\x90\x95\x06\x3a\xdf\x40\x4e\x9c\x54\xbe\xed\x83\x69\x2b\xaf\x53\x95\x3f\xd9\xcd\x8f\x2c\xc0\xa6\xc7\x87\x99\x0a\xa8\xdb\xce\xc8\xf9\x18\xcd\xd3\x51\x6e\x20\xcd\x79\x56\x48\x94\x15\x6c\xeb\x80\x93\x81\xe5\xed\x24\x49\x05\x4b\x9f\xfb\xf2\xce\x76\x93\xe1\xbc\x18\xb6\xd1\xb6\x6d\x2f\x36\x94\x4f\x8a\x62\xbb\xb1\x9d\x43\xcb\xd1\x15\x7d\x0e\x0d\x27\x63\x5c\x8b\xec\x3a\x9a\x9f\x18\x49\x77\xce\xfd\x54\x0e\xa2\x3b\x9e\x4c\xdf\x55\x5f\x16\x7a\x1e\xe0\x6f\xc7\xef\x0d\xa7\x62\xaa\xdb\xec\x64\xe3\x2a\xb7\x89\x8a\x3b\xc2\xa3\x8c\x1c\x8c\x4d\x6b\x3e\x9a\xe9\x63\x3f\x76\x26\xb0\x10\x82\x4c\x94\x31\xab\x09\x79\xbd\x0b\x8d\x5a\xaf\x2e\x61\xba\xea\x51\x2f\x8a\x25\xa1\x57\xeb\x66\xc4\x1d\x63\x1a\x57\xc0\xec\x0f\x4a\x32\x26\xf7\x53\x76\xf1\xb7\x61\xa5\x23\xb6\x7a\xa2\x54\x38\x43\x67\x9b\xc4\xd0\x46\xef\x27\x53\x3e\x40\x92\xb9\xb7\x8a\x32\xc2\xee\xd3\xaf\xcc\x12\xc6\xcc\xcd\x53\xe4\x8b\x46\x91\xad\xaf\x9f\xa8\x64\x03\xf6\xb3\x92\xcc\xb2\xf9\xf3\xf4\x14\x59\xbc\x2e\x19\x61\xfd\x7c\x25\x3b\x3f\xdb\x04\x27\x0b\x47\xa1\x99\xee\x03\x8b\x83\xae\x28\x75\xaa\x0d\x29\xd8\x61\x3a\x1f\xdb\xef\xd3\x2d\x1b\x85\x8a\x58\x17\x8e\xf0\xfd\xfc\xe2\x2d\xea\x25\x38\x43\x0f\xdb\xef\xb0\xee\x7a\x8e\x1e\xfc\x2e\x3f\xb1\x8e\x32\x41\x33\xf8\x80\xdd\xfd\xc4\x1a\x2b\x03\x59\x0f\xd8\x9d\xbb\xd6\x2f\xb4\x45\xa1\x2b\x6e\x31\x6f\xf1\x7d\x39\xc0\x78\xd8\xe8\x23\x2e\x34\xea\x75\x51\xea\x26\x60\xf6\x00\xb0\x86\x74\x88\x00\xab\x76\xb0\xdc\x76\x15\xbf\xfd\xce\x76\x91\xe4\xc2\x94\xb7\xe2\xfb\x34\x77\x1a\x4a\x95\xe7\x40\x97\x52\xa3\x1b\xd2\x27\xd6\xaf\x76\x2b\x3b\xb6\x82\xcb\xf9\x03\xf2\x7b\x2c\x21\x46\x4e\x11\xfe\x08\x89\xab\x80\x66\xed\x7e\x3e\xee\xb4\x6a\xd8\xdc\x32\x15\xa4\x2e\x2c\x38\xc5\xa6\xd0\x18\x2f\xe0\x18\xb9\x6a\xc8\x58\x7e\xd8\x80\xa9\x48\x83\x8b\xa9\x33\x72\xa0\x3c\x45\xf6\x1c\x2a\x08\xfb\x85\xe5\x72\xa1\xd6\x95\xee\x4c\x46\xa6\xae\x06\xca\x20\x07\xc2\x86\x8d\xd2\x17\xd5\x35\xe1\xbd\xa0\x5b\x23\x88\x52\xba\x67\xed\xe1\x80\xf7\xed\x0b\x86\x61\x1b\xbf\xee\xa0\x0f\xc7\x1d\x0b\xa9\x57\xab\xdd\xba\xdf\xc2\xf9\x7c\xaa\xbb\x2b\x18\x6c\x93\x92\xdb\x0e\x9c\xcd\xb1\x0d\xa3\xee\x47\xec\xd3\x34\xd0\x97\xef\xe1\x51\x89\x9b\x72\x5b\x8b\xf7\xe7\x6a\x36\x9e\x77\x33\x3b\x06\xab\xcb\x66\xa7\x2b\xb4\xbb\x9e\xcd\x00\xf7\x8b\xaa\x54\x68\x8b\xee\x00\xe7\x87\xfe\x57\x52\x03\xab\x57\xa5\x67\xa1\xd6\x13\x77\x9f\x85\xc1\xfe\x73\x41\x28\x54\x44\x0c\xa4\x09\x73\xb6\xda\xc3\x88\xf6\x7a\x97\xf5\xb1\x6e\x38\xdb\x88\x8a\x19\xe8\xc3\x59\xc2\xe9\xb7\x5c\x8c\xc4\xb9\x87\x07\x0b\x8d\x95\x29\xb4\xed\xef\xe1\xe1\xf2\x56\x6e\x98\x32\x81\x16\x54\x1c\x64\x61\x4b\x68\xad\x75\x63\xfc\x8d\xa1\xbe\x27\x0c\x94\xe7\x78\x2f\x96\xcc\x4b\x17\x76\x72\xe9\x86\x83\xc6\xc8\x0a\xf3\xb8\x4b\xd7\xa2\xd9\x8c\x04\xdf\x24\x7a\x11\xe0\x80\x88\x06\xf7\x32\xc0\x88\x0e\x34\xb3\xef\x90\xa6\x8f\x2b\x9b\x6d\x10\xe7\xdf\x66\xb4\x49\x82\x60\x8d\xbe\x24\x16\xb1\xfc\x30\x45\x22\x2f\xfd\x4b\x16\x68\x87\x2b\xd4\xfc\x63\xb3\x6e\x8c\xe6\x6d\x9b\x50\x5c\x6a\x75\x3e\x1e\xdf\xec\x42\x73\x66\xb4\x9f\x5e\x87\x76\x72\x9c\x3f\xc5\x41\x7e\x75\x17\xb4\x5f\x63\xac\xd9\xb5\xe3\xe8\x26\x15\x39\x50\x9f\xda\xd8\xab\x6d\x1a\x72\xbc\xb1\x6d\xb3\xb0\x4b\xf5\xe0\xe3\xf1\xf5\xb0\xad\xe2\xc5\xf0\x16\x28\xad\x65\x9a\x85\x51\x55\xbd\xe8\x8e\xbe\x5a\x02\x69\xb7\x3b\x10\x3b\x3e\xb6\x5e\x0e\x0f\x51\xd8\x0f\x44\x36\xf8\x5d\x69\x2d\x14\x98\xcc\x85\xb3\x8f\x4d\xe1\x3e\x16\x82\x4e\x6a\x27\x0f\x76\x31\x57\x33\xc3\xee\x4c\xc7\xff\x18\xaa\x3a\x1e\xc9\x02\xc2\x46\x64\x3a\x70\x3a\x52\x4c\xdd\xb0\xa3\x6d\x50\x43\x68\x34\x37\xcd\x69\x74\xab\x5b\x35\xd7\x50\xdc\x58\xbb\xcd\x16\xb2\x91\xb5\x8c\x03\x99\xc1\x8f\x91\xf3\x31\xda\xb8\x4e\x5b\xff\x8c\x83\x9a\x5b\xa6\x63\x2a\xe6\x34\x56\x2e\x3c\x83\x6f\x8d\x59\xb0\x5c\x6a\xfd\x31\x8b\xe0\x94\x58\x94\xdd\x0b\xa4\xfb\x95\x53\x45\xbe\x6e\x78\x49\xa4\xf1\x77\x85\x9b\x93\x04\xbd\x30\xfc\x24\xd2\x3a\x0e\x47\xd1\xe0\x09\xe1\x29\xb0\x9c\xbf\x9a\x6d\x1e\xe7\x7c\x21\x3f\x70\xb0\xf7\x13\x0d\xe3\x66\xe4\x8a\x27\x8a\x1b\x99\x2e\x0c\x4c\xde\x57\xb6\xb9\xb0\x94\xdd\xd6\x5b\x4c\x48\xd8\x4e\xf3\x5c\xee\xe1\xe1\x08\x22\xc3\x3c\xf0\xab\x29\x97\xaa\xd3\xdf\x54\xfc\x76\xd5\x38\xee\xc7\xb5\x73\xa2\x8a\xbb\x93\x10\x4b\x36\xb4\xa5\x99\x04\xe4\xef\xb2\x26\x81\xcc\xdc\xe1\x89\x04\x38\xde\x1c\x4e\x81\x4b\x24\xb7\x83\x4a\xa0\xe8\xb2\xa4\xdb\x23\x1b\x4d\xa7\xc8\xc2\x64\xd3\x9c\x22\x68\x78\x6d\x81\x02\x6a\xe4\x1e\xaf\x8b\x76\xe4\xbe\x05\x80\x15\x2a\x62\xe1\x09\xfb\xf6\x2d\x28\xe2\xbf\x30\xfc\xfb\xf7\x34\x54\x51\xdd\xb7\x52\xfd\xbf\x23\x41\x33\xe0\x3b\x10\x3a\x84\x3e\xa4\x11\x97\xc1\x44\x5b\x8f\xae\x3b\x5e\xc1\xfa\xa3\x2b\xc9\x19\x43\x5d\x16\x1f\x73\x49\xb0\x4b\xab\xda\x5e\x27\xdc\xa5\x50\xf9\xbb\x02\xde\x89\xc2\x5e\x18\xf2\x52\xa8\x1d\x07\xbd\xb8\x0e\x09\x61\xef\xa0\x52\x7f\x45\x5b\xdd\xda\x67\x90\xa5\xcc\xab\x0f\xdf\x39\xa7\xac\x69\xb2\x46\xc6\xe4\x20\x17\x09\xbb\x27\x1d\x9f\x9e\xc3\xd8\xa9\x17\xb7\xb4\xf9\x23\x8b\x13\xe7\x63\x84\x8c\x25\x9a\x9a\x73\x14\x55\xf0\x73\x3e\x36\x4b\x85\xc5\xd4\x89\x69\x9c\x21\x07\xc6\x34\x6d\xb4\x10\xd7\x6c\xeb\x63\x03\x3a\x0b\x0b\x45\xd5\xa6\x78\xe6\xfb\xbf\xff\xb3\xcf\x2e\xfe\xfa\x6f\x54\x7e\xf1\xef\xff\x84\xd7\x2c\x68\x66\xc6\x94\x91\xf6\xb8\x0c\xd3\x40\x89\xd9\xca\x1e\xd7\x31\x1a\x5f\x32\x7d\x86\x46\xb2\xb9\x30\x54\x7b\x33\x72\x9c\x05\x8d\x71\x52\xd1\xd3\x2b\x82\xe9\xea\x76\xf6\x6c\x37\xca\xb2\x4c\x79\x6f\xfa\xb8\xbb\x93\x29\x7b\x70\x1d\xb1\x9b\x50\x30\x0c\x96\x66\x82\xe5\xc2\xd3\x12\xf7\xeb\x09\x91\x71\x8b\x32\x51\xa8\xc4\x84\x3f\x8b\x90\xb1\x91\xf3\x6a\x62\x66\xde\xe5\x4d\x14\x34\xc5\xcd\x47\x8b\x5a\x84\x0e\xc4\x34\xd3\xca\xb0\x57\x80\x15\x85\xae\x90\x22\x62\x55\xea\x88\xed\x2e\x56\x95\xba\x8d\xa3\xfd\x02\x37\x3a\x76\xb0\x6f\x39\x30\xd2\x0d\xdd\xd1\xe1\x74\xe4\xed\x0e\xfd\xb0\xdf\xa7\xb9\x5b\x2c\x47\xe0\x80\xbd\x03\xf8\x1d\x41\x63\x80\x78\xc0\x89\x07\x0a\xfc\x20\x69\x9a\x03\xf4\x1d\xce\xe6\xbe\xff\xcc\x86\x9d\x18\x79\x6f\x28\x1d\xa8\x40\x5e\x8f\x1c\x53\x57\x93\x29\xf1\x80\x3c\x85\x10\x39\x5a\xd8\x68\xe7\xe1\x47\xba\x71\xf4\x52\x54\x22\x39\x06\x00\xc0\x9f\x42\x8f\x1a\x41\x55\x1d\x85\x8b\x29\xc9\x34\x68\x9e\xe7\x4e\xa1\x41\x8f\xbc\x70\xb2\xcd\x6c\xdd\x9d\xa7\x44\x12\x2c\x4e\x51\x27\xa9\x8d\xd9\x92\xf0\xbd\x4d\x06\x12\x24\x4b\x31\xa7\x90\x60\x47\x33\x53\xd5\xb5\x75\x76\x29\x38\xc0\xe3\x84\x4f\x22\x66\x6a\x24\x6e\xe8\x9c\x3a\x37\x8e\x36\x75\xb6\xbc\x83\x5b\x2c\x57\xce\xb7\x9b\xc3\x4a\xb5\x46\x14\xaa\x64\x49\x6a\x51\xf9\x41\xad\x54\x97\x8a\xb5\xd2\x63\x4f\x6a\xf6\x88\xca\x90\x7c\xa9\x97\x3a\x95\x86\xd4\x2b\x88\x0d\xa1\xd3\x67\x5b\x05\xb6\x31\x20\x2a\x61\xfd\xc4\x12\x21\x36\x44\x0a\x04\xd9\x2a\x11\x95\x9e\x48\x13\x42\x7d\xd0\x2b\xf5\x2a\xa4\x30\x7c\x14\x06\x83\xf2\x60\xf0\x4c\x3c\x57\x06\xc3\x61\x9b\x11\x87\x03\xb1\xdb\x7c\x2a\x0e\x5e\x3a\x42\x9f\x61\x07\x0d\x2a\x33\x11\xd2\x25\x32\x78\x2a\x33\x6d\x89\x6a\x48\x55\xb1\x59\xa8\x4b\xa5\x3c\x4b\x12\x02\x45\x32\x2f\x74\x53\x2a\x76\xda\xb5\x72\xff\x89\x2d\xe7\x6b\x85\x7a\xab\x56\x2d\x35\xa8\x0e\x2b\x0e\xfb\xcf\xbd\xdc\xb9\x7b\x83\x1b\x0f\x99\x32\x0c\x1d\xb1\x26\x16\xba\x81\xcd\xd6\x1f\x36\x4a\xde\x37\xbb\xc5\xc8\x5b\xcc\xb1\x16\x28\x83\x71\x1c\xef\x88\x65\x31\x8d\x73\x76\x61\xae\x22\xe9\x41\xc0\xbf\xc5\xc0\xad\xb7\x83\x9c\x2e\x68\xd4\x2e\xcc\xb9\x93\x60\xbb\x13\x13\x30\x4f\x8e\xe6\x78\x9e\xe4\x18\x8e\x77\x99\xc2\x6f\xb1\xdc\x5f\x5f\x6d\x67\xe3\xd2\x8d\xf1\x48\x86\x53\x68\x28\xe8\xeb\x03\xf6\x15\xe0\x38\xfe\x03\xf7\x9e\xaf\xff\x8d\x33\xce\x30\x05\x70\x48\x81\x70\x47\x38\xf7\xd7\x57\x6f\x8d\x7e\x84\xf7\x16\xfb\xba\xdf\x7d\xdc\xb4\x1a\xd0\xd1\x97\x28\x3b\xbd\x90\x44\xe4\x2d\x06\x3c\x91\x56\x48\x1f\x4f\x36\x04\xc1\x2d\xf6\xd5\x53\xd8\xe8\x0d\xad\x37\x34\xce\x9d\xa0\xd9\xb9\x22\x7d\xae\x28\x82\xe5\xe8\xdf\xaa\x67\x9f\xc2\x6f\xd7\x73\x48\xa2\x8c\x7a\x3e\xcf\x47\x9d\xc4\x15\x20\x38\x8e\xe2\x71\x9a\xf7\x15\x4d\x78\x6c\x4d\xf5\x99\xee\xaa\x81\x27\x08\x92\x64\x09\x9c\x64\x38\xfa\x07\xc5\xb2\x34\x87\xb3\x7b\x75\x28\xa6\xea\xaa\xa3\xd7\x29\x1e\xeb\x48\xb1\x90\xaa\x3b\x23\x38\x9d\x4f\xa0\xb1\x98\x51\x7b\x08\x6f\x37\xfb\x6f\xb3\x25\xc0\x02\x96\xe7\x58\x92\xe0\x80\x27\x23\x71\x28\x23\x15\x39\xd4\xff\x37\x64\x23\x00\xc5\x52\x1c\x85\xd3\x2c\xeb\xc9\x06\x0e\x65\xfb\xe7\x09\x96\xe2\xbf\xa3\x76\x8f\xcf\xf5\xdf\xdb\x1d\xe4\x60\x0e\xc3\x90\x2a\xcf\x69\x34\xc9\x20\xc4\x70\x2a\x90\x09\x56\xa6\x65\x8e\xd7\x08\x12\x6a\x34\x09\x80\xcc\xd2\x0c\x0f\x09\x4a\x83\x1a\xa0\x70\x12\xaa\xb8\x4c\x13\x32\x43\x92\x32\xce\xca\x88\xe7\x73\xb7\xde\x32\x7b\xe3\x92\x36\x73\x05\xf0\x2c\x7e\x87\x83\x3b\x1c\x60\x38\xfe\xe0\xfe\x0b\x27\x73\xfc\x03\x4e\x3e\x50\xf4\x0f\x9c\xe5\x00\x4f\xa5\xb6\x52\x04\x4f\xf1\x0c\x4b\xf0\x8c\xe7\x25\x00\x7e\xf4\xb8\xa4\x01\x1e\x6c\xf4\x3f\xe3\x31\xa6\x13\x56\xc5\x66\x0a\x28\xac\x42\x93\x2a\x49\xd3\x04\x4b\xd0\xa4\xcc\x12\x34\x0b\x01\x00\x0c\xa1\x52\x8a\xac\x28\x14\xa9\x2a\x3c\xc7\xe3\x1a\x21\x6b\x3c\x4d\xf1\x24\x20\x48\x0d\xb1\x04\x64\x69\x0d\x22\x82\x40\xb9\xeb\xa8\x93\x70\xff\x45\xe8\x84\x88\x55\x15\x8f\x93\x34\x9d\xda\xea\x45\x36\x8a\xe6\x89\x04\x45\x12\x78\xb4\x2a\x37\xff\xe3\x32\x2a\x73\x13\x3b\x20\x60\x28\x9e\x67\x15\x56\xc6\x59\x9c\x06\xb2\xac\x20\x82\xe7\x00\xab\x92\x04\xc3\xf0\x1a\xcf\x32\x1a\xce\xf3\x32\x44\x1c\xa9\xca\x94\xc2\x41\x86\x54\x59\x85\x01\x80\xd1\x68\x05\x51\xae\x32\xaf\x30\x20\x9e\x87\x8b\xd0\x0b\x19\xa7\x2e\x00\x78\x9e\x62\x53\x5b\xfd\x40\x01\x38\x8e\x4b\xd0\x26\x79\x05\x6d\x52\xb7\x58\x8e\xa3\x35\x92\x60\x80\x4a\xc9\x80\x65\x28\x00\x00\xa0\x09\x42\x65\x09\x15\xd0\x2c\x8f\x53\x0c\x8d\x58\x52\x56\x35\x95\x62\x79\xa4\x20\x92\x55\x01\xe4\x78\x59\xa3\x78\xc4\x23\x45\xa1\xe4\xdc\x75\x46\x24\x56\x9b\xb1\xb3\x18\x90\x38\x47\xc4\x1a\xee\xae\xd5\x0b\x49\x0c\x0f\x38\x2a\x41\x9b\xd4\x15\xb4\x49\x6f\x7c\x14\x44\x34\xa4\x29\x9c\x22\x38\x9a\x05\x40\x65\x21\x92\x79\xa4\xe2\x38\x0e\x15\x4d\xe5\x58\x9e\x03\x04\x8d\xcb\x80\xa4\x35\x95\xe0\x00\xa4\x35\x16\x57\x29\x8e\x42\xbc\x82\x38\x19\xba\xa6\x73\x85\x11\x89\xd5\x66\xec\x54\x06\x14\x81\xb3\xf1\x96\xbb\x6d\xf5\x82\x20\xc9\x50\x1c\x9e\xa0\x4d\xfa\x0a\xda\x64\x36\xac\x70\x88\x84\x38\xe4\x10\x05\x69\x9c\x62\x48\x4d\xd1\x70\x4e\xe5\x01\x25\xb3\xb2\x86\xb3\x1a\x24\x79\x20\x13\x08\x29\x04\x45\x42\x5e\xd3\x18\x4e\xd3\x08\x40\x23\x9e\xa5\x21\xa0\x19\x35\x77\x9d\x11\xf1\xe3\xcf\xb1\x62\x98\x58\x7d\xd1\x38\x9f\x60\x9b\xdb\x56\x82\x66\x19\x9e\xc3\x49\x96\x4d\x0a\x40\x69\xda\x4c\x09\xf3\x19\xde\x9a\x39\x37\xea\xc7\xd4\x66\x63\x96\x58\x20\x66\xe4\x53\xb0\x84\x16\x4e\xc4\x79\x58\xc2\x0b\x9d\xf3\xb0\x50\xa1\xc5\xc5\x79\x58\xe8\xd0\x62\xe0\x4c\x34\x4c\x28\xdf\x3e\x13\x0d\x1b\x4a\x6d\xc9\xeb\xbc\x8c\x74\x95\xe2\x44\x72\xe1\xfe\x16\x63\xb3\x16\x65\x62\x5e\xc9\xb9\xd8\xf0\xf7\x6a\x0c\xda\xe8\xee\x6f\x2e\xb0\xa4\xd6\x16\x86\xea\x67\xf5\x67\x16\xf7\xdc\x15\x82\x57\x98\xba\x68\x71\x70\x8b\x65\x59\xdf\xff\x86\x2a\x64\x9c\xda\xfc\xe9\xb4\xfb\x9b\xfa\xbd\x6a\x3b\x73\xb1\xff\x4f\x52\xdb\x61\x31\x61\xf7\xc1\x53\x1c\x93\xad\xb0\xe0\x58\x0b\xdb\x41\xe8\x52\x53\x72\xd1\x98\xd6\xa5\xaa\xfd\xf3\x2b\xe6\x0b\x8b\xd5\x59\x47\xee\xa0\x44\xb2\xfb\x80\x47\x8d\x5c\xb8\x5c\xf2\xbf\x11\xfb\x13\x23\x76\x10\x1d\xf7\x1f\x98\xa8\x11\xfb\xdf\x70\xfd\xbe\xe1\x4a\x09\xf1\x11\xaf\x88\x9e\xb2\xef\x12\x8f\x35\xfd\x65\xbc\x73\xd3\x88\xd8\x4d\xff\xa8\x0c\x9a\x8b\xcf\x5a\x53\xf1\x10\x87\x78\xe2\x72\xe8\x54\x3c\x64\x28\x48\x9f\x8b\x87\x3a\xc4\x13\x97\xb9\xa6\xe2\x09\x07\xbf\xb3\x11\x31\x21\x5f\x7c\x36\xa2\xb0\x8b\x88\xcf\xa6\x4f\x7d\x01\xf0\x1a\xf9\x74\xda\xfb\x21\x27\x64\xd4\xb1\x6f\xfb\x5d\x61\x32\x04\xf6\xf1\x55\x99\xe4\x39\x24\x53\x10\x71\x3c\x4b\x33\x24\x41\x33\x14\xa9\x40\x95\x00\x0a\x4f\x21\x40\xca\x9a\x82\xb3\x94\x4c\x12\x24\x42\x1c\x89\x00\x05\x64\x8d\xc5\x01\xa4\x55\x1e\xa7\x34\x20\x7b\x55\xcf\x8b\xb6\xd4\xbd\x72\x0a\x8e\xc7\xd6\x54\x7e\xe0\x3c\xce\x33\xf1\xe5\xe6\x6d\x6b\x70\x0a\xe6\x84\xcd\x53\xae\x71\x95\xd6\xb2\xf5\x26\x3f\x11\x15\x81\xec\x3f\xbf\xb6\xad\xa7\xd9\xeb\x00\xc7\xb5\x32\x67\xd7\xaa\xec\x0c\x17\xdb\xab\xc7\xfe\xbd\x30\x20\x37\xe0\x2f\xc2\xee\xc9\x0b\x87\x4f\xf8\xb3\xe0\xc8\xe3\x41\x9b\x11\x59\xb3\x58\xc3\x6b\xad\x9b\xd5\xb0\x53\xe0\x3f\x07\xcb\xc1\x73\x97\xfc\xd0\x9b\xfa\x70\xd1\x91\x41\x71\x39\x6b\xd5\x10\xb7\x01\x2f\x3c\x0b\xcb\xb7\x20\xbe\xe7\xe5\xaa\xc4\xaf\x04\x41\x10\x85\xe1\x6b\x4b\x69\x76\x89\x32\x3d\x79\x37\xf2\xb3\x71\xb9\x8c\xc6\xfc\x23\x37\xa5\x14\x20\x1a\xbd\xe9\xc7\xdb\x54\x9c\x56\x78\xfb\xfd\xc5\xc2\x79\x16\x94\x98\x46\xad\xaf\xa1\xfb\x19\xf5\x36\x2f\x39\xd5\x1b\xbb\x8a\xeb\xe0\xbd\xa6\x3b\xb4\x80\x3f\xae\xfb\x86\x3c\x19\xd6\xfa\xb4\x59\xcc\x6d\x75\xe0\xea\xa1\xb5\xa7\xdc\x0a\x4b\xe2\x3e\xbf\x0e\xe0\x05\xd1\xe5\x79\xff\xb9\xba\xff\xb3\xd6\xa7\x4a\x38\x9a\x34\x18\x61\xcd\x17\xf0\xa6\x5d\x16\xc7\x4b\x05\xb0\x00\xf4\x78\x6e\xf8\x4a\xcd\x6a\x6f\x33\xbe\xc5\xd2\x6f\x05\x72\xe9\xc2\x4f\x5b\x35\xda\xeb\x59\x88\xa4\x1c\xa3\xdf\x43\x7e\x03\xf4\x4f\x18\xd3\x22\x2a\x10\xf6\xb3\x34\x2c\x7f\x8e\xf7\xfd\xc7\xd9\xe9\xef\x74\xe2\xf6\xa9\x87\xe0\xf2\xfa\x7d\x1e\xaf\xe1\x8f\xe5\xb5\x33\x59\x49\x60\x3a\xc4\xe1\x7a\x6e\x02\x5e\xaa\x7c\x2c\x6b\x85\x75\x83\x76\xf2\xa2\x52\xf0\xc6\x99\x1c\x3b\x56\xc3\x78\x49\x50\xc0\xa1\xbc\x51\x4f\x78\x4c\x4e\xa7\x3f\xbc\xbf\x51\x42\xf8\x32\xd2\xff\xe5\xda\xc7\x5f\xe5\x2a\x5e\x29\xe2\xfc\x64\x31\x84\xf3\xd5\x8b\x99\x9f\x18\x66\xb3\xa3\x3d\xa2\x8a\xd4\x7e\x04\x8f\xca\xcb\x63\xfb\xb1\x7d\x2f\x3f\xcd\x20\xdf\x44\x7c\x1b\xbd\xea\xc0\x20\x97\xf4\xe2\xf1\xa9\x2d\x77\x9a\x56\x41\xaa\x3a\x50\xa7\x2c\xd4\x92\x0a\xca\x74\x4e\x50\xfd\x02\x58\x40\x61\xf5\xeb\x97\x9b\xbb\xb8\x2f\x84\x6e\xf7\xa4\x36\xff\x4d\x8f\x11\x01\x47\xa6\xf1\xac\x02\x35\x0d\xca\x9c\x02\x18\x9c\x20\x21\xc9\x72\x1c\x05\x18\x5a\x91\x71\x99\xd4\x34\x00\x21\xa1\x42\x6d\x93\xf2\x6b\x48\xa3\x78\x95\x00\x48\x53\x38\x8a\x55\x55\x59\x93\x11\xdc\x6f\xdf\x5c\xe0\xc8\x88\x14\x47\x06\x70\x8a\x66\x41\x6c\xdd\x72\xdb\x1a\x8c\xdd\x97\x3a\xb2\xf0\xa4\x3b\x32\x74\xeb\x5d\x62\x6a\xa8\x01\xc7\xaf\x1f\x75\xd8\x6b\xf2\x4c\xfe\x53\xb3\x79\x84\x2b\xa6\x25\xbd\x0c\x3e\xf3\xfd\xc7\xb7\x92\xf9\xc4\xbe\x2d\xdf\x56\x42\xb2\x23\xcb\xcf\x9e\xe6\x9d\xf1\xd2\x5a\x3d\x35\x08\x7c\x50\x68\x68\x43\x6d\x60\x97\x45\xb1\xe7\xac\x86\x10\x8a\xda\x7b\x67\xc1\xac\x67\x8f\xb3\x69\x71\x06\x6f\xaa\x03\xa6\xca\x56\xc7\x63\xb9\xf7\x52\x37\x95\x96\xfa\xc2\x53\xd5\xba\xa0\x3d\xa9\x2d\x41\x7a\x1f\xc8\xd5\x06\xbb\xb6\x57\x08\xd5\x0b\xbf\xcd\x91\x3d\x31\xaf\x48\x27\x5f\x67\x66\x95\xeb\x96\xa7\xc5\x7b\x34\x56\x48\xb6\x39\x70\x2a\x4f\x4f\x9f\xfd\x67\x6e\xf5\xac\xbf\xe4\x61\x61\x41\xd7\x68\x77\xe6\xff\x69\x47\x66\x2d\xf9\xba\x74\xa9\x23\x6b\x45\xe9\xe4\x1c\x47\xc2\x51\x91\x3a\x3d\x92\x37\xfc\xf8\x8e\xe4\x45\x7f\xef\x99\x35\x86\x2b\xbc\x3a\x4e\x69\xf5\x6a\x10\x15\xc0\xe6\x27\xf9\x52\x4d\x29\x97\x67\x93\x0a\xf3\x66\x2d\xec\xb9\xfe\x32\x6f\xd1\xb3\xa5\x5e\xba\xd1\x1b\xeb\x6a\xb5\x0c\xca\xdd\xa7\x8a\x58\xe9\x6b\xa8\x50\x14\x2a\x6b\xa3\x27\x14\xe1\x94\x58\x17\x17\x9c\x55\xaf\x18\xaf\xc2\xf8\x2a\x8e\x44\x56\x29\x8e\x51\x65\x55\xc5\x09\x95\x62\x70\x0e\xb0\x0c\x0b\x14\x0a\xd2\x90\x45\xbc\xca\x20\x8e\xa1\x15\x48\xf0\x8a\x4c\x01\xc4\x10\x2a\x0b\xa1\xc6\xe2\x90\xd0\x10\xa2\x65\x92\x51\x91\xf7\x2e\x1b\xb8\x64\x31\x16\xd8\xf0\x25\xd3\x3c\x0a\x81\xd3\x80\x8b\xf5\x28\x9b\x56\x3e\x17\xca\xe2\x3d\x53\x38\xd1\xfc\x5f\xf6\x43\x9d\x90\x1b\x0d\xdd\xcf\xcf\xcf\x92\x1f\x5c\x0a\x60\x91\x57\x2b\x66\x77\x31\xae\x2f\x5b\x4e\x91\xcd\x4f\xaa\x35\x52\x42\xbc\xfa\xdc\xd4\xca\xd5\x9b\x47\x9d\x7e\x5c\xf6\x1a\x37\x2f\x82\xc3\x92\xf7\xbb\x67\x8f\xaf\xbc\xa3\xdf\xca\xf3\x6f\xb3\xa7\x3e\xf1\x4e\x2e\xd9\x96\xb6\xe6\x9a\x75\xf4\x26\xca\xa0\xdb\xad\xd2\xfa\xc7\xfb\x5b\x15\xcf\x9b\xe3\x81\xd5\x70\xd8\x71\x03\x30\x44\x4b\x7e\x9b\x10\x6a\xa7\xdb\xd3\x50\xd1\x5c\x2a\x78\x53\x80\xda\xa4\x38\xf8\x70\x26\xcf\xc2\xd4\xae\x2d\x5e\xa7\xf9\xd9\xfa\x35\x2f\x0c\x7f\x65\x70\x2f\xe5\xa0\xfd\x26\xbb\x97\x40\x8e\x70\xaa\x7b\x79\x7e\xee\xb6\x7d\x2c\x27\xe6\x96\xde\x53\x09\xe9\x2f\x3c\xfd\x5a\x3b\xfe\x84\xb3\xf8\x9b\xb6\x6a\x14\xbd\xda\xcb\xbb\x77\x25\x31\xb6\xb0\x7f\x22\xf2\xa8\x80\xce\x0a\x0b\x93\x34\x1d\x8a\x7e\x2f\x34\xc5\x8f\x79\xeb\x9e\x34\x2b\xd2\xcd\x27\x60\xdb\x6b\xdd\x06\x53\xad\x5e\x1a\xce\x5a\xfd\xb1\xb5\xe8\xdc\x74\x5d\xf8\xc7\x5e\xe1\xc6\x17\x2e\xda\x05\x0a\x91\xf2\xef\x1e\x97\xe7\xe2\x65\xf4\x1b\xca\x9e\xfe\x19\x79\x54\x85\xe8\x0c\xe7\x32\xb4\xd0\xbd\x93\xbf\xaf\xad\xb8\x0f\xa6\xd5\x5e\x3e\x4b\xf5\xd7\x59\xad\xfc\xde\x7a\x6d\x95\xf5\x3c\xb2\x19\x72\x21\xb0\x03\xeb\x25\xbf\xe8\x54\x5e\xc0\xa3\xd4\xe6\xa9\x86\xce\x7f\xb6\xb8\xfc\xfc\x46\x94\xb4\x32\x51\xea\x15\xfa\xab\x05\xd3\xe8\x95\xe5\xa7\xba\x98\xbf\x8e\xfb\xe3\x68\x56\x53\x39\x4d\x23\x34\x55\x23\x55\x82\x82\x0c\xcb\x01\x85\xa7\x37\x0b\x3e\x02\x22\x80\xe3\xaa\x42\xb0\x80\xe6\x00\xa5\x11\x34\x62\x09\x8e\x90\x09\x44\x33\x2c\xc5\xf2\x0a\x43\x6f\xf2\x28\xea\x7a\xee\x8f\x4a\x73\x7f\x24\x20\xb9\x84\x57\x18\xfc\xd6\x83\xda\xc3\xa5\xee\x2f\x21\xa3\xba\xc0\xfd\xb9\x33\x6b\x9f\x62\x78\x4f\xc0\xfd\x95\x06\xd2\xb0\x05\x0c\x89\x13\x67\xed\xb7\x65\x5d\x51\x09\x0d\xf5\xc7\x8a\x60\x55\x3f\xda\xda\x54\x99\xb0\x9f\x8b\xb9\xd2\x2d\x15\xde\x3e\x39\x2b\xff\x58\x5a\x99\xf2\x98\xfa\xbc\x99\xd8\x54\x6f\x66\x90\xdd\x5a\xbf\x46\x4b\x53\x0b\x74\x34\xbe\xd0\xe4\x1e\x95\x71\x79\x60\x17\x3b\xe3\xd6\xf5\xdc\x9f\xcb\xff\x3f\xdd\xfd\xb5\xfe\x1c\x7f\x42\x68\x7c\x03\xfc\x45\xb8\xc7\x6b\xbb\xa7\x63\xb7\x9c\xec\x1e\xc5\xcb\xe8\xd7\xa9\x3d\xfd\xc8\x94\x21\xd9\x3d\x3e\x2b\x60\x52\xec\x2b\xe4\xaa\xf3\x52\xee\x70\x1f\x1f\xe4\x0b\x4f\xc3\xfc\xaa\x60\xbf\x96\x4a\x37\xcf\xeb\xca\xb2\xc1\x4c\x3f\xea\xbd\xa7\x6e\x73\x6d\x8b\x6f\x83\xc2\x64\x51\x7c\x6d\x32\xe5\xcf\x49\x07\x6a\x6a\xdd\x19\x2e\xdf\x88\xfe\xf2\xf9\xf1\x1e\xaf\xde\xaf\xa6\x6b\xe1\x05\xad\xa4\xa7\xbc\x70\x15\xf7\x48\x02\x8d\x00\xb8\xca\x50\x9a\x82\x54\x8a\x86\x24\x85\x20\x43\xe2\x1a\x4f\x51\x14\x49\xaa\x88\xd6\x48\x92\x97\x49\x8a\xc3\x15\x56\x25\x35\x4d\xe3\x09\x8d\x90\x49\x8a\x60\x34\x59\xa1\xdd\xb7\x22\xe9\xeb\xb9\x47\x3a\xcd\x3d\x52\x04\xc3\xc7\xaf\x37\x37\xad\x44\x2e\x54\x51\xbd\xd4\x3d\x16\x43\x63\x7a\x45\xf7\x18\x7e\x02\xee\xb1\xbc\xb2\xdf\xeb\xd5\xcf\x95\xd5\xae\x56\xd5\x61\x79\xd0\xf9\x1c\xaf\x67\x4c\xb1\x27\xd7\x2b\x56\xcf\x42\x37\x8f\xcf\xa0\xda\xb7\x25\x4b\xaf\x9a\x33\x75\x48\x7e\x96\x17\xda\x8b\x53\x28\x3c\xd3\xbc\x50\x7c\xe4\xd7\x80\xa1\x9b\xcf\x62\xe9\xd9\x1e\x50\x34\x8b\xa8\x57\xbc\x7e\xdf\xee\xaf\xf0\x6b\xb8\xc7\xe2\x1e\xbe\xb7\x6f\x3a\x27\xfb\x72\x5c\x24\x01\x77\x7b\xf4\xc4\x2f\x3e\x57\xc2\x3f\xd6\xfd\xb9\x4f\x20\x93\x3a\xb1\x20\x71\xa6\x3d\xfd\xfa\x15\xe1\x76\xff\x90\xdb\xdb\x91\x2e\x5d\x46\xbf\xd6\x0b\xc9\x73\x9a\xdb\x95\x0b\x6b\x73\xf5\xda\x2c\x38\xe2\x78\x02\xc6\x2f\x6a\xad\x51\x7c\x92\x4d\xa9\x6d\xaf\x90\xd3\x71\x58\x6a\x3a\xe8\x4d\xe0\x8a\x58\x54\x75\xfd\x05\xbc\x6a\x75\x48\xf3\x33\xbc\xfa\x38\x30\x70\xa1\x6e\x90\xb5\x81\xf5\xc6\xf7\x5a\xcf\xfd\x0f\xed\xd5\x70\x58\xbd\xd9\xfa\xe4\x4b\x72\xb1\x95\xe0\x76\x13\x0f\xd1\x8c\x3e\xd3\x79\x77\x88\xe8\xf6\xa0\x90\x53\x7f\x10\x1c\xc2\xea\xfe\x8e\x5c\x28\x16\x83\x47\x8f\x44\x11\xc6\x9a\xed\x6a\x5d\x68\x0f\xb1\x27\x71\x88\x7d\xd3\xd5\xb4\x1f\x99\x87\x7e\xfe\x95\xf1\x4c\xec\x8b\xa5\x3b\x24\x1b\x25\xdc\x59\x8c\x61\x3d\xa9\xda\xea\x89\xd8\xb7\x3d\xf8\x6d\xe0\xb4\xc8\xdb\x83\xb3\x1d\x4f\x54\xcd\x75\x86\xf5\x64\xc1\x4f\x1a\xd4\x98\x57\xfc\x52\x5e\xa3\xbb\xae\x64\xd1\x44\x92\x24\x4d\x60\x2b\xb3\xe4\xb1\x1b\xb2\xa9\x5b\x9e\xd7\x95\x3e\x8e\x4c\x92\xfc\x89\xac\xa5\x6a\x20\x7c\x2b\x81\x2f\x8a\x7b\x87\x41\xb6\x13\x57\xbc\xeb\x0e\x42\x78\xb0\x86\x14\x9e\x10\xbd\x4e\x55\x2a\x63\xb2\x63\x21\xb4\x9d\x61\x31\x33\x29\x70\xa3\xc2\xb9\xec\xec\x51\x04\x39\x39\x48\x76\x0f\xf9\xf1\x80\x6f\x8f\xce\x5b\x89\x62\xce\xbd\x13\xe2\x02\xce\xdc\x63\x67\x32\xb1\x15\x3e\xac\x26\x8a\x1b\xff\x22\x8b\x0b\xf8\xf1\x30\x64\xe3\x28\x74\x12\xce\xed\xf1\xa1\x37\x91\x93\x2c\x78\x33\xc7\xe9\x9c\xfa\x7e\xd9\x63\x38\x84\x2e\xc8\xf6\xf6\xf7\x76\x07\x1c\x47\x1d\xd0\x76\xbb\x3d\x8c\x2d\x8e\xd9\xfd\x89\x1c\x17\xb2\xa9\xab\x99\x19\xdc\x1f\x76\x75\x1b\x79\xaa\x5c\x0a\xd3\xdb\xcb\x54\xae\xc1\xb7\x8f\x2b\xc8\x7a\x4c\x70\x38\x4b\x92\x68\x01\xb6\xf7\xc6\x5c\x43\x00\x1f\x57\x8c\x4d\x9f\x29\xc2\xe1\xc9\x65\xc7\x42\x04\x6e\xc9\x39\x77\x36\x06\x70\x9c\xab\xfc\x64\x45\x87\xae\xfd\xb9\x54\xd7\x87\xe8\x82\x2c\x6f\x7f\x89\x73\xc0\x63\x34\x47\xc7\x57\x17\x5d\xce\xd6\x11\xce\x6c\xee\x2d\x8a\xc1\xc0\x25\x4c\x67\x0f\xeb\x1e\xc7\xf9\x26\x99\x66\x7e\x07\xf7\x4a\x9d\xcf\x69\x00\x4b\x88\x57\x15\x85\x38\xdb\x1e\x3c\x19\xcd\x4b\xe8\x52\xac\x8b\x38\x3a\xc4\x95\xc6\xd7\xd1\xc1\x8b\x91\xfc\x1d\xdd\xf3\x75\x11\x87\x61\x6c\x69\x3c\x1e\x1c\x16\x79\x7b\x74\x56\xe4\xed\xd1\x81\xa0\x31\x42\x5c\x61\xb6\xf8\x78\xd2\x38\x3e\x31\x26\x85\xaf\x67\xbb\x48\xbb\x27\x28\x36\x55\x6f\xe9\xf7\xce\x5d\xa8\xd0\x54\x02\x07\xd9\xf1\xf6\xb8\x9b\xc3\x7c\xd4\x03\x3c\x81\xf7\xcb\xed\x20\x09\x77\x3a\xc7\x11\xb3\x2c\xf9\x56\xc1\x73\xed\x21\x11\x6b\x6a\xb2\xb5\x01\x4a\x61\x34\xf2\xfa\xc4\xeb\x70\x1b\x85\x3a\x35\x68\x66\xb5\xe4\xc3\xfb\x22\xaf\x6a\x0c\x07\xa8\xcf\x89\xf2\xd9\x2f\xc8\xbc\xba\xa2\x8f\x0e\xc3\x4f\x65\x3f\xd4\x21\xbb\x30\xc1\xfb\x42\x7f\x97\xfe\x83\xf7\x1f\xa4\x49\x12\x80\xcd\x2e\x44\xe4\xfd\xa9\xbf\x4b\x9a\xc8\x6b\x1d\xd2\xc4\x8a\xea\x94\x5d\xbe\xdd\xf5\xb2\xbf\x4b\xa6\xdd\x51\xad\x69\x72\xc4\xd6\x18\x52\xae\xd5\xbd\x2a\xe3\x61\xec\x91\xcb\x8e\x53\x27\x78\xe2\x8d\xc2\xd7\x99\xe1\x49\x24\xb2\xc8\x90\x92\x4d\xa7\xde\xaf\xfc\x5b\xa4\x08\x45\xb0\x58\xde\xd3\x83\x58\xc4\x7d\xd2\x57\x35\x9b\x63\xfc\x67\x2f\xb0\x92\x6e\xd0\x3e\x57\xcb\x09\x38\x53\x53\x84\x6f\xdf\xb6\xf7\x13\xdc\xfd\xeb\x5f\x58\xce\x36\xa7\x6a\x60\xd7\x20\xf7\xf0\xe0\xa0\x0f\xe7\xfb\xf7\x5b\x2c\x1e\x50\x31\xd5\x6c\x80\x5e\x05\x34\x1e\x54\x36\x17\xe3\x89\x93\x89\xfc\x01\x68\x32\x03\x07\xa0\x21\x16\xbe\x63\xfd\x8a\xd8\x16\x3d\x23\xc3\x7e\x61\x64\xe2\x6f\x8f\x36\xd9\xf7\xe1\xc7\xe8\x2b\xd4\xfd\x71\x2c\x3d\x5d\xa7\x48\xae\xa2\xb4\x92\x78\x1c\x27\x58\xa9\xd1\x16\xab\x65\xc9\x2b\x88\x87\x20\xbe\x63\x6d\xb1\x24\xb6\x45\xa9\x20\x76\x8e\xd2\xdd\x94\xfd\x83\x58\x4d\x1c\x5c\x5d\xff\x07\xf5\x10\xe4\x23\x4a\x0b\xdb\xb5\x72\xa4\x0e\xdc\x12\xfe\xe9\x1a\x38\xbe\x12\xe2\x0f\xaa\x21\x86\x99\x43\x5d\x1c\x03\x5d\xd9\x28\xc2\x0b\xfd\x7f\x82\x42\xe2\x4d\xe3\xa8\x92\x92\xd5\x3a\x9a\xa6\xed\x8c\x2d\xd4\x69\xd5\x30\x15\x3a\x70\x63\x62\x98\xba\x98\xcd\x31\xc5\x9c\xcd\xa7\xc8\x41\xae\x0c\xff\x3f\x00\x00\xff\xff\xbc\x4f\xd7\x64\x6b\x84\x00\x00") + +func change_trustHorizonSqlBytes() ([]byte, error) { + return bindataRead( + _change_trustHorizonSql, + "change_trust-horizon.sql", + ) +} + +func change_trustHorizonSql() (*asset, error) { + bytes, err := change_trustHorizonSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "change_trust-horizon.sql", size: 33899, mode: os.FileMode(420), modTime: time.Unix(1508958225, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _kahunaCoreSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\xbd\xd9\x92\x22\xc7\x92\xf8\x7d\xaf\xa7\xa8\x3b\x9d\x63\xe8\x0c\xb1\x2f\xa3\xef\x8c\x59\x26\x3b\x09\xc9\x0e\x09\x37\xb2\x58\xd9\xd7\x64\x7f\xfa\xcf\xa0\xba\xab\xe8\x52\x75\x77\x1d\xa9\xe7\x6f\x63\xd6\x5c\x48\x25\xd2\xf1\x8c\xf0\xf8\x85\x87\x47\xb8\x67\x6a\x77\x58\xad\xa6\xab\xf1\xd3\xce\x99\xe9\xc6\xfd\xf2\xfc\xaf\x27\x3f\x5d\x4d\xd3\x89\xb3\xbf\x3d\x99\xc5\x3a\xbd\x5d\x5f\x38\x3b\x76\xbb\x5f\x9e\xff\x75\xff\xd6\xd9\x5f\xfe\xf5\xaf\x5f\xfe\xf5\xaf\xa7\xe6\x3a\xdd\x8f\x77\xae\xd3\xaa\x3d\x59\xb5\x57\x5a\xa5\xee\xc9\x1e\x96\x9b\xdb\xe5\xdb\xf5\xfc\x61\xb9\x71\xf6\xc9\xef\xd6\xcb\x57\x81\xa3\xdb\xa5\xd3\xf5\xea\x49\xfe\x17\xfb\x2f\xfa\x20\xa5\x2f\x4f\x9b\xf1\x1f\xb7\x9f\xbf\x11\xf9\xa5\x53\xe8\x3e\xa5\x7b\xb5\x77\x4b\xb7\xda\xff\xb1\x9f\x2e\xdd\xfa\xb0\x7f\xfa\xf7\x13\xf8\xfd\x7e\x69\xb1\x36\xf3\x3f\x7f\x3b\xb5\x0b\xf7\xc7\x74\xf5\xc7\x7e\xa7\x56\xa9\x32\xfb\xe9\x7a\xf5\x47\xea\xd2\x9b\xde\x3f\x0b\x9b\xc5\xf4\xa6\xda\xad\xcc\xda\xde\xfa\xfc\xef\xa7\x5f\x7b\xdd\xa2\xf8\xf5\xf7\xcf\xf7\x5e\x59\xb5\xb3\x7f\x98\xf5\xca\xaf\x77\xcb\xe9\x6a\xfc\x47\xba\xdf\x4d\x57\xe3\xf4\xe9\xdf\x4f\xeb\xd5\x27\x1d\x13\x67\xe6\x7f\xf8\xc3\xea\xf9\x5e\x7a\x6d\xa7\xee\x76\xdd\xab\x45\xea\xbe\xb8\xcd\x72\xba\xfa\x63\xe9\xd2\x54\x8d\xef\x02\x27\xb5\xbb\x0d\xc4\xb3\xc8\x6e\x7d\xfa\x23\x75\xe6\xb0\x9b\xee\x2f\x37\xe5\xde\xff\xfe\xc9\x00\x4e\xed\xcc\xe4\x8f\x8d\xda\x4f\x9e\xfe\xfd\xb4\x39\xe8\xc5\xd4\xfc\x76\xb3\x98\x51\x7b\xb5\x58\x8f\x7f\xff\xe5\x97\x7c\xbb\xd1\x7c\xaa\xc4\xf9\x42\xf2\x54\x29\x3e\x15\x92\x4a\xa7\xdb\xf9\x24\xf9\x5f\xe9\x74\xbc\x72\xbb\x54\x19\xb3\x3e\xac\xf6\xbf\x7f\x5b\xd6\x2d\x16\xd3\xd5\x78\x9a\xa6\x07\xb7\x9b\xae\xac\x3b\x7f\x47\xde\x6c\xb6\x87\xf5\xee\xb0\x4c\xf5\x25\x75\xdb\xef\x0a\xbb\xd5\xf1\x23\x92\x9b\xdd\xd4\xb8\x0f\xdc\xfe\x99\xcc\x8f\x68\x9c\x4c\xd3\xbd\x77\xee\x83\x92\x1f\x10\xd3\x87\xcb\x7f\x62\xa8\x4f\xd6\xd7\x6a\xa1\x56\xc6\xa5\xbf\xff\x12\xd4\xba\x85\xf6\x53\x37\x08\x6b\x85\x07\xe9\x46\x5c\x1b\x7e\xfe\xc9\xfe\x7c\x6b\xca\x7a\x77\x79\xba\x2b\xce\x35\xe2\x4e\xb7\x1d\x54\xe2\xee\x83\xfc\x8b\xcc\x1f\x9b\xb9\xbb\x7c\x4c\xab\x77\xee\x23\x8a\x5f\xc5\x3e\xae\x7b\x77\x48\xf7\x8b\xe9\xca\xa5\xdf\xd2\xfc\x22\xf4\x61\xbd\xb7\x56\xb8\xbb\x1b\xf8\x86\xde\x57\xa1\x8f\xeb\x7d\x9e\x19\xdf\x52\xfa\x2c\xf1\x71\x8d\x2f\xf3\xe1\x5b\x4a\x5f\x84\x3e\xac\x77\x73\xd0\xe9\x41\x7f\x43\xe7\xb3\xc0\x7f\xa2\x6f\x31\x4d\x27\xdb\x83\x3b\x7c\xcb\xa6\x8f\x62\x1f\xd7\xed\xbe\x6d\xd3\xfb\xf5\x0f\x6b\x5b\x7b\xff\x6d\x75\xcf\x02\x1f\xd6\xf7\xec\x32\x26\x4e\xd9\x6f\xab\xfd\x42\xee\x7f\x59\xfb\x27\x37\xe6\xb6\x7f\x7c\xf0\x36\x5a\xad\xbe\xa1\x5c\xab\xd5\x87\x1b\xfc\xc9\x2f\x7d\xab\xad\x9f\x45\xfe\x53\x9d\xb7\x65\xff\xfb\x6a\x6f\x52\x9f\x34\xdf\x65\xdf\x2a\x7e\xeb\x0c\xbf\x27\xf6\xea\xb6\xbe\x23\xf9\xe2\x86\xbe\x2d\xf7\xea\x56\xbe\x23\xf7\xec\x29\xbe\x23\xf4\x32\xf3\xbf\x2b\xf7\xa1\x4e\x3c\xcf\xfa\xef\xca\xbc\xcc\xe1\xef\x48\xba\xef\x76\xe0\x79\xb2\x7d\x5b\xe6\x0b\xb6\xbf\x2d\xaa\xd5\xea\xdb\x02\x9f\xd9\xfb\x90\xd4\x0d\xa5\x4f\x82\x85\xa4\x5b\x88\x3b\x95\x46\xfc\x28\xbc\xd8\x8c\xd3\xed\xe2\x93\x44\x27\x57\x2e\xd4\x83\x3f\xe9\xfa\xfd\x53\x7c\x1b\xab\xa5\xfb\xef\xcf\xdf\x3d\x75\x2f\x1b\xf7\xdf\x9f\x7e\xf2\xfb\x53\xc7\x4c\xdc\x52\xfd\xf7\xd3\xbf\x7e\x7f\x6a\x9c\x56\x6e\xf7\xdf\x4f\xff\xba\x87\xbd\xb9\x76\x21\xe8\x16\x3e\x6b\xfe\xac\xef\x97\x2f\x34\x7e\x79\xf1\x93\xe2\x5c\xa3\x5e\x2f\xc4\xdd\x6f\x68\x7e\x16\x78\x6a\xc4\x5f\x2a\x78\xaa\x74\x9e\x7e\xfd\x1c\xa3\x7e\xfe\x2e\xbd\x2b\xf9\xf5\xed\x9d\x3f\x77\xff\xd3\x3d\x5f\x2c\xf4\xdd\xfe\x7c\x61\xcb\xb8\xd1\x7d\x63\xcf\xa7\x41\xa5\x5b\x7e\x69\xd6\x63\x50\xfa\xc5\xed\x5f\xb5\xbc\x69\xc8\x7f\xd2\xf9\x3f\x29\xb9\x1b\xa0\x59\xcb\x6e\xc6\xb7\x9d\xc8\x66\xb7\x36\xce\x1e\x76\x6a\xf1\xb4\x50\xab\xf1\x41\x8d\xdd\xdd\x0c\x1f\x0c\xa2\x6f\x62\xd6\x79\x75\x58\xec\xff\xd8\x2b\xbd\x70\xe9\x46\x19\x77\xdb\x11\xfc\xfa\xe6\xea\x69\xba\x9f\xfc\xb1\x9e\xda\x87\x20\xff\x8b\xce\x3e\x02\xf9\xa9\x9b\x77\x74\x5f\x3b\xf9\x19\x80\xf7\x0c\xfe\x4c\xf9\xa3\x17\xfd\xc7\x2f\x4f\x4f\x4f\x9f\xbf\x99\xda\x27\x33\x51\x3b\x65\xf6\x6e\xf7\x74\x54\xbb\x5b\x1c\xfa\x0f\xca\xfe\x79\x1f\x9b\xb8\x57\xab\xfd\x76\x97\xbe\xfd\x70\xa5\x96\xee\x1d\x61\x46\xde\x13\x3e\xaa\xc5\xe1\x3d\x69\x08\xd1\x5b\xf1\x85\x4a\xf7\xcb\xb5\x9d\xfa\xa9\xb3\x4f\xd3\xd5\xde\xdd\xf6\x87\xf9\x42\x31\xe8\xd5\xba\x4f\xe0\x45\xf8\x97\x7f\xbe\xa5\xe0\x65\x3e\xff\x4d\xab\xa4\x7f\xc9\x24\x9f\xa2\xef\x27\x3d\x1d\x4f\x57\xfb\x37\x17\x53\xb7\x5d\x1d\x96\xef\x5f\x5b\x1d\x96\xe9\x41\xbb\xd5\x7e\x77\xdb\xd8\x7d\xee\xf0\x97\x32\xd3\x95\x5f\xa8\xdb\xfe\xcf\xba\x74\xff\x7e\x73\x9e\x05\x27\xeb\xa5\xb3\xeb\xa5\x9a\xae\xde\x91\xc2\x7f\xb2\xf5\x7e\xb2\x73\xe9\x64\xbd\xb0\xe9\xd3\xde\x9d\xdf\xb6\xcc\x2f\xd4\xf8\x6b\x2d\x7a\x77\x94\xbe\x14\x79\x58\x99\x5f\x96\xf9\x4f\x56\xfa\xe3\xbe\xab\x7d\xca\x95\x0b\xb9\xe8\xe9\x1f\xff\xf8\x6c\xbb\xff\xf9\xf7\x13\xf8\xe7\x3f\xbf\xfe\xeb\x2f\x4c\xf5\x46\xc7\x97\x66\x7c\xd6\xf4\x67\x46\x6e\x8b\xc2\x5f\xc5\xe3\x16\x18\x3d\x93\xb1\x5a\x5b\xf7\x88\xc5\x17\x38\xfc\xf9\xa6\x5f\x2e\x5a\x7f\xf5\xf6\x5f\x86\x7f\xcf\x0d\xf9\xf4\x9d\x4a\x27\x0f\x8d\xf9\xf3\x0c\xdc\xec\xdc\xf1\xbb\x42\xfa\x60\xe6\x6e\xbf\x98\xa6\xfb\xef\x8a\xbe\xc4\x94\x9f\x47\xfe\xf9\xeb\xfb\x21\xce\x7e\xba\xfc\xca\x24\xb8\x7b\x9b\x77\x30\x7b\x18\xe9\x2f\x43\xd7\x17\x7d\x6f\x86\xfa\xf5\x3e\x5f\x01\xe6\x6b\x11\xf0\x97\x6a\x5e\x7b\xf1\x35\x5a\x3e\x45\x24\x7f\x75\xc4\x3e\x6d\x2f\xfe\xf1\xc9\x05\x2c\x16\x6e\xf7\x41\x67\x72\xff\xe5\xd4\x7e\xcd\x99\xdc\xcf\x51\x54\x9a\xba\xfd\xfe\xb2\x71\x5f\x99\x7e\x8f\x62\x66\x6d\xdf\xf5\xbe\xe8\x9f\x5f\xc8\x3e\x9f\x38\x7c\xcb\xbf\x3c\x9f\x4c\x7c\xef\xd6\x0f\x52\xdf\xbb\xf3\xe3\x51\xc7\xb7\x6e\xac\x96\x37\x17\xf0\xbe\x41\xee\x27\x3a\xab\xaf\xb4\xe5\x7e\xf1\x6b\x2e\xea\x7e\xf1\xc9\xae\x0f\x7a\xe1\x6e\xb3\xc4\x4c\xef\x07\x84\xff\x5b\x6e\xf0\xd3\x76\xf2\xb9\x2f\x6f\x68\xfc\xd4\xc1\xaf\x10\xfd\xe9\x97\x9f\xb8\x78\xf3\xd3\xcf\xb4\x7c\x0d\xe3\xe7\xd8\xfb\xaf\x52\xfc\xbc\xe5\x7e\x86\x78\xba\x79\x6f\x2c\xe9\x9f\xfc\xcd\x7a\xb7\xff\xc6\xd2\xfd\x69\xdd\x73\xe7\xbd\xda\xef\xdd\x72\xb3\x7f\xba\x4d\xe6\x74\xaf\x96\x9b\xa7\x5b\xf4\xb3\x3e\x3c\x7f\xf3\x74\x5d\xaf\xdc\x9f\x57\x4b\xaf\xa6\x8b\xc3\xee\x61\xad\xfc\xda\x1d\x1e\xec\xf7\x7c\x2e\xf0\xf0\xe3\x3f\xaf\x1e\x2f\x6a\xbf\x32\x04\x9f\x8e\x16\xd6\xbb\xb7\x23\xf7\x8f\x7b\x77\xff\xe7\x09\xfc\xf3\x29\x88\xf3\x4f\xcf\xff\xf9\xff\xfd\xfb\x89\x51\x8a\xe9\x3f\xdf\x1d\x90\xc7\x6d\xd3\x5f\x1e\x97\xc7\x63\x96\xc7\xe5\xe0\x6b\xfe\xe0\x7e\xc6\x75\xf3\xbf\xef\x36\xe8\xb6\xd7\xfb\x1b\x4d\x49\x0f\xfa\x53\x23\x76\x2e\xfd\x62\x6d\xfc\x73\xd4\x71\x9b\x34\x3b\xa7\x5e\x26\xcc\x9f\xdb\xf3\xb0\x47\xfd\xab\x6d\x7a\x55\xf1\x91\x45\xfb\x2b\xeb\xda\x9b\xeb\x6e\x75\x74\x8b\xf5\xc6\x7d\x67\x15\x7b\xbd\xf5\xdf\x58\x7b\x1e\xb6\xf3\x7f\xc3\x04\x9f\x0f\x0c\x9f\x4d\xb0\x4d\xdd\x07\x16\x77\x95\xee\xbf\x67\x88\x9b\xa2\xef\x1b\xe1\xf3\x41\xe4\x17\x1a\xdf\x1a\xe2\x8b\xbb\x7d\xd5\x18\x9f\x0e\x40\xfe\xb2\x25\x3e\x1d\xc6\xfe\x95\xc0\xfe\x59\xfb\xdc\x5d\x3e\x24\x7d\x72\xd3\xf1\x64\xff\x27\xb3\xbd\xd3\xa5\xd7\xb3\x9f\xbf\xdc\xab\xd7\xa3\xeb\x7f\xbc\x4e\xf1\x2f\xf7\x65\xef\x4c\xbf\x6f\x39\x82\x87\x93\xab\xbf\xda\xaa\x87\x83\xfa\xbf\x62\xee\xef\xc5\x16\xdf\x0a\x15\xde\x53\xf5\xf5\x00\xe4\xed\x5e\x68\x31\x5d\x4e\xbf\x12\x61\x7c\x73\x73\xf7\xe3\xe2\x83\x87\xf4\xc5\x5f\xda\x28\x3d\xfc\xfe\xb9\x37\x6f\x7e\xfe\xa9\x8b\xff\xf3\xfe\x24\xfb\xe2\x7c\xf3\x2f\x8f\xfe\x63\x0a\xe8\x79\xfc\xf7\xe7\x2f\xdc\xee\x07\xb6\x13\x6f\x47\xe6\x7c\x4f\x82\x7d\xf5\xaa\x99\xa8\xd5\xd8\xbd\xbb\x85\x7d\x34\xce\x63\xd6\xe9\xaf\xfb\xe5\xd7\xc3\xe2\xbf\x6e\xa2\xff\xc7\xf6\xd1\x6b\x7b\x79\xcf\x38\xfb\xf3\xce\xa5\x87\xc5\xbb\x9e\x7c\x7f\x5e\xba\xef\x6e\xd7\x5e\x33\x84\x7f\xc5\x9e\xf9\xdb\x7e\xd0\xaf\x77\xdf\x39\xd7\x7a\xca\x07\xdd\xe0\x3b\xf6\xad\xc4\x9d\x42\xbb\xfb\x54\x89\xbb\x8d\x2f\xce\xb6\xfa\x41\xad\x57\xe8\x3c\xfd\xe3\xd7\x52\x30\xec\xe4\xea\x51\x6b\xc8\x0a\xc3\x5a\xd2\x68\x76\xbb\xac\xda\x6c\x36\x92\x7c\xbd\x1f\x87\x83\x4a\xb7\xd9\xed\x8c\x2a\xfd\xc1\x80\xd4\x06\x41\xbb\x1f\x36\xba\x65\xda\xee\xd6\x82\xfc\xaf\xbf\x3d\xfd\x7a\x77\xa8\xb7\x3f\x54\xd2\xbe\x56\x4a\xf6\x68\x73\xe1\xd5\x94\x8a\xb3\x51\x52\x9f\xfc\xfa\xdb\x13\x91\xff\xfc\xfd\x7f\xbf\x05\xf0\xf6\x47\x3d\x1f\x9c\xea\xc1\xbf\xff\xfd\xeb\x6f\x4f\x14\x7d\xd7\x94\xe9\x8f\xb0\x63\xfa\xd8\x85\xa4\x82\x71\x2f\x57\x6b\x75\x73\x51\x1d\xc5\xf5\x76\xd8\xe1\xc9\x30\x6c\x53\x4c\x6b\xb5\x42\x3f\x28\xd7\xe8\x30\x8c\x49\xb1\x9b\x0b\x49\x79\x54\xee\xf2\x51\x40\x73\xfd\xe8\xd7\xdf\x9e\x20\x78\xf9\xfc\xf6\x04\x91\x10\x44\x02\x28\x84\xf8\xed\x09\xfc\xf6\xcc\xd6\xd3\xaf\xb7\x0e\x06\xad\x20\x08\x9e\x3b\x08\x7e\x7b\xc2\xef\x1b\xf6\x8b\x26\xc5\xa3\x52\x33\x1a\xd2\x41\xa7\x3c\x28\xd1\x61\x63\x54\x8f\x4b\x14\x95\x72\x11\xed\xe4\xaa\x64\x58\xea\x0d\xea\xd5\x6a\xbf\x34\xea\x44\xa8\xd8\x24\x61\x05\x55\x2b\xd5\x18\xe5\x9e\x9b\x24\xef\x9f\x5b\x93\x28\x15\x98\x50\x4e\x04\x91\xbf\x3d\xc1\x6f\x34\x09\x92\xef\xb7\x29\x57\xce\x91\x3c\xca\x75\x08\xcd\x55\xdb\x71\x4c\x5a\x41\xb9\x8b\x6a\xc5\x51\x50\xad\xf4\x68\x33\xe0\x65\x8a\x23\xdc\x6f\x34\xd9\xa0\x50\x65\xc9\xa0\x1c\x77\xe2\x51\xd4\x2a\xfd\xfa\xdb\x93\x14\xf7\x16\x89\x2f\x9a\x44\xc1\xb7\xad\x04\xe9\xf7\x9b\x94\x4f\x8a\x41\xa9\x9a\xeb\xe4\x2a\x24\x17\xa1\x61\x39\x62\xc3\x76\x2d\x60\xdd\xa8\x90\x14\xdb\x09\x0f\xeb\xa5\x7e\xbd\xd5\x08\xeb\xb5\x4a\xa1\x57\x6d\x57\xe9\xb0\x15\xd7\xea\x95\xf0\xd6\xa4\xe7\x0f\xbb\x0f\x1c\x87\x5c\x0a\x26\xe1\x6d\xe0\xde\x58\x69\x5c\xc9\x05\xe3\xcf\x4d\x62\x1f\x18\x38\xc2\xfa\xed\x28\xcc\xd5\x2a\x28\x61\xf9\xa4\x96\xf0\xa0\x52\xe8\xb7\x8b\xb5\x32\xee\x05\x3c\x09\x0b\x38\x2e\xc5\x4d\xd6\xe0\xa4\xdc\xa2\xb5\xa4\x5c\x2f\x75\xfb\xa8\xfa\xdc\x22\xfa\xd2\x22\x0c\x00\x23\x9c\x43\xc0\xd9\xb7\x8d\x24\x3e\xd0\xa2\x12\x45\xdd\x01\x6b\x05\x21\xeb\x96\xe2\x7a\xa3\x5b\xc3\x68\x48\xea\xb8\xd7\x6a\xd5\xe2\x38\x2e\x37\x0b\xe5\x61\x50\x19\xb6\x9b\xac\x53\x2c\xb2\x51\xd0\x6f\x17\xe9\xa8\x35\xbc\xb5\x88\xbf\x0e\x1b\x16\x8c\x12\x0e\x28\x63\xf4\x3b\xc3\x06\x3e\x30\x6c\xb9\x7e\x37\x2c\x75\x0a\x85\x1e\x8f\x6a\x49\xaf\x5e\xae\x77\x92\x30\xa8\x25\x55\xd4\x25\x15\x14\x35\x9a\xc9\x00\x75\x68\xb7\x5d\x8b\xf2\xed\x4a\x90\xe4\x69\x2f\x5f\x0e\x86\x8d\x5b\x93\xc8\x2b\xdc\x84\x23\x42\x18\x01\x88\xf2\xef\x34\x09\x7d\x00\xee\x90\x17\x9b\xc3\x52\xad\xc6\xda\x55\xcc\xcb\x51\x3b\x18\x0e\x68\x37\x18\xd4\x8b\x61\xa9\x54\x2c\xd5\x49\xa5\xce\x0a\xed\x30\x37\x4a\x2a\x28\x1c\x91\x46\xa3\x91\xa0\x5e\x70\xb3\x12\x7d\xf5\x00\x14\x52\x2c\x19\xe0\x94\xa2\xbf\xdf\xa2\xb0\x11\xf1\xb0\xd1\xeb\x34\x06\xcd\x72\x18\xc4\xe1\xb0\xce\xea\x95\xf6\x70\x54\xad\xe4\x2b\xcd\xde\xb0\xda\x4c\xca\xdd\x72\x90\x2f\x72\xda\x2b\xf4\x2b\xfd\xe1\xa0\x5c\x6e\xc4\xad\xdc\x9b\x71\x93\x00\x4a\x82\x21\x46\xf0\xcf\x6c\x7f\xd1\x24\xf4\x01\x0f\x10\xe4\x82\x36\x0a\x0a\xc3\x42\x54\xe9\x16\x50\x2d\xaa\xd0\x76\x3d\x29\xd2\x7a\xa5\x3f\x62\x2d\x9e\x54\x6a\xed\x46\x29\xdf\x45\xa8\xc1\xab\x09\xc9\x77\x06\xc5\x0e\x2f\xe6\xf3\xcd\xd7\xe9\x76\x1f\x37\x26\x38\x94\x84\x33\x8e\xf9\x77\x9c\x12\xff\x80\x95\x50\xab\x32\xec\xa2\x4a\xd0\x2b\xd6\xdb\x49\x54\xeb\xd4\x6a\xcd\x76\x21\x97\x63\x8d\x5c\xa3\x54\xad\x07\xf9\x4e\xb3\xdb\x8e\x78\xb7\x14\x77\x51\xa7\xd8\x46\xc3\xd2\x20\x1f\xb4\xf3\x77\x47\x09\x5f\xdb\xf4\x6a\xa6\xef\xb4\xe9\x43\x66\x4a\xea\x45\x82\xbb\xa5\x51\x79\x80\x5b\x31\x6e\x17\x1a\xbd\x00\xf5\x68\x73\x40\xc3\x6e\xd0\x4e\x4a\xa5\x61\x15\x57\x2b\xc5\xf2\x00\x0f\xbb\xac\xd5\x8e\xda\x35\x9c\x6b\x36\x7b\xf7\x36\x3d\x37\x89\x7f\x69\xa7\xef\x38\x6f\xf4\x91\x29\xd7\x1e\x60\x4e\xeb\xc1\xb0\x4d\x58\x23\x5f\x2a\xa2\x41\x29\x88\x5b\x39\xd4\x6e\x8f\x6a\xbc\x81\x08\xcb\x0f\xcb\xe5\x5c\x69\xd0\xed\xa3\x76\x81\x57\xca\x05\xd4\xea\xb5\x6a\x37\x3b\x89\xff\xad\x26\x85\xac\x14\xe3\x5a\xb5\x37\x60\xd5\x61\x9b\x17\xf2\x8d\x2a\xe1\xfd\xb0\xcc\xf3\x84\xd6\x49\x75\x50\x4e\x4a\x11\xab\x95\xab\xed\xa0\x50\xa1\xd5\xb0\x13\xa3\x7c\xd8\x1a\xf2\xd6\x2b\x4d\x77\xc0\x21\xe0\x98\x13\x28\x10\x01\xe8\xb7\x27\xf4\xad\x36\x7d\xc0\x7d\xe7\x2a\xc5\x62\xbb\x15\x95\xeb\x65\x56\xcd\xf3\x5c\x44\x1b\x15\x92\xf4\x73\xc3\x5c\x3d\x6e\xc7\x45\xd6\x1c\x06\xbc\xda\xcd\xb5\x71\xb1\x59\x6e\x56\x47\xad\xee\x70\x58\x0c\x69\xa1\xf3\xd2\x26\xf1\xdc\x26\x48\x25\x23\x10\x72\x00\xc8\xfd\xd6\xbf\x96\xc2\x76\x73\x58\xae\xd4\x50\xae\x82\x8b\x71\x8b\x84\x49\xad\x58\x8f\xf3\xb5\x62\xb5\x17\x37\x7b\xa8\x3c\xc4\xa3\x7a\xb1\x53\x6e\xc4\xbd\x5c\xa1\x11\x74\x06\xbc\x95\xe3\x8d\x04\x95\x6f\xbd\x70\x67\xb5\xdc\x2c\xdc\x7f\x99\xf5\xf2\x79\x49\x0a\x1e\x96\x24\xfc\x11\xdf\x56\x8d\xaa\x49\x33\x0a\x8b\x95\x72\xa3\x81\x09\xa5\x83\x64\x50\xa2\xb9\x7c\x38\x4a\x5a\xf1\xb0\xd8\x6e\x97\x2a\xb9\x61\xbd\xd9\x6b\x61\x9a\x6b\xb6\xc8\xa0\xdf\xc1\xd1\xa8\x56\x7a\xbb\x4a\x12\xc8\x31\x96\x08\x70\xfe\x1d\xef\x86\x3f\x30\x6f\x73\xfd\x01\xad\xe5\xda\xa3\x62\x93\x37\x0b\x71\xd2\x0d\x4a\x8d\x7e\xa5\x95\x04\xf9\x7c\xdc\x4b\x92\x51\x35\x17\x47\x45\xd2\x6f\x85\xa8\x12\xf1\x01\xaa\x35\xab\x83\x22\xc7\xbd\xd2\xdb\xc1\x67\x18\x01\xc1\x29\x47\xb7\x68\xe2\x5b\x83\x4f\x3e\x32\x47\x48\xa7\xde\x28\xe0\x7e\xb3\x53\xe4\xa3\x36\xce\x75\x0b\x2d\xdc\xa4\xbd\xb8\x1b\xd6\x0b\xd5\x7c\x80\x4a\xb5\xa4\x5b\x6e\xf3\x7a\x3d\x68\x07\x71\x14\x55\xf3\x23\xde\x6e\x96\x8a\x6f\xed\xf4\xda\xa6\x6f\xd9\x09\xff\xf6\x44\x3e\x30\x76\xf9\x36\xc5\x83\xa0\x50\x89\x1a\x3d\x3c\x8a\x62\x4c\x72\x9d\x72\x30\x28\xf3\x72\x9f\x45\x0c\xe7\xc2\x6a\xbb\xd7\x1d\xf4\xf2\x61\xb1\x53\x1f\xf2\x76\xbb\x15\xe1\x4e\x33\x6a\xdc\x80\x44\x00\x00\x2c\x20\x21\xb7\x3f\x00\xc4\xf0\x36\x65\x25\x46\x1c\x53\x24\x30\x82\x9f\xc0\xfc\xeb\x37\x78\xcf\xca\x1f\x18\xf9\xbf\xbe\x61\xf8\x64\x65\x02\xee\x0e\x86\x41\x2a\x08\x06\x08\x92\x6f\x8f\x3c\xfd\x80\x95\x83\x5c\xb5\x59\x20\xc3\x5e\x1b\xa1\x7e\x93\xe4\xea\x28\xcc\x17\xf3\x41\x79\x88\xf3\xb5\x42\x11\x97\x79\x5c\x88\xa3\x5e\x8b\xe2\x7c\x97\x76\x0b\x15\x54\x0a\xca\x5d\x1a\x93\xe4\xed\x0e\x00\x21\xce\x30\x46\x8c\xb1\xef\x6d\x01\xe8\x07\x96\x91\xbf\xee\x32\x04\x00\x90\x22\xcc\x39\x00\x92\xe2\xdb\xa4\xfd\xed\x09\xd1\xbf\xef\x89\xde\xe9\xc7\x07\x82\xf4\x20\x2e\x8e\xf2\xed\x30\x17\x77\x7b\x49\xa5\x91\xcf\x55\x0b\xc3\x7a\x90\x6b\xd6\x73\x9d\x51\xa1\x5f\x20\x83\x51\x69\x84\x73\xa3\xfc\x08\x37\x51\x27\x89\x48\x54\xe6\xb4\x12\xb1\xe1\x9b\xa8\x01\x61\x86\x10\x46\x00\x22\x01\xbf\x63\x5b\xf6\xf5\x2d\xe4\xdb\x44\xf9\x47\x76\x8f\x5f\x51\xf5\xf5\xf4\xf7\x7f\xba\x25\xfd\x32\x05\xfe\x62\x38\x86\xad\x14\x9e\x62\xe6\x1c\x13\x16\x6a\xc4\x35\xd5\x42\x7a\x84\x95\xa7\x18\x42\xcd\x29\x93\x0a\x11\xaf\x3c\x24\x00\x2b\x0b\x34\x45\x9a\x61\xac\x01\xd7\x4e\xca\x9b\x65\xc0\xdf\xfc\xdc\x74\x50\x8e\x14\x72\x18\x79\x8f\x88\x50\x80\x6b\xe0\x38\xf0\x16\x7a\x66\x31\x14\x06\x7a\x65\x2c\x02\x9a\x19\x03\x84\xc1\xd8\x52\xce\x29\xa2\x52\x30\x01\x11\x55\x90\xfd\x7a\x0f\x15\x6e\xec\x05\xff\x67\x3f\x61\x12\x4d\xc9\x25\x7b\xe9\x44\x21\xcf\xaf\xf2\xb2\x8c\xc0\x79\x16\x66\x52\x30\xde\xa7\xa7\xca\xe9\x0a\x13\xdb\x19\x0c\x55\x58\x55\xc5\xf1\x4d\xbe\x10\x93\x9a\xba\x6e\x50\xeb\xbb\x9a\x47\x41\x02\xc9\x5d\x2c\x9c\xff\x3f\xe8\xc8\x0f\xfd\xfc\xfa\x66\x72\x7f\x05\x54\x45\x04\xb3\x46\x19\xc9\x20\xe4\xd4\x19\x62\x15\x61\x18\x48\x89\x9c\xf1\xdc\xbb\x9b\x03\x32\x1e\x08\x4c\x24\x23\x8a\x3a\x23\x3d\xa4\x96\x21\x49\xbd\x42\x1e\xd3\x1b\x64\x3f\x02\xf6\xdb\xca\x86\xb8\xb3\x58\x0a\xc2\x20\x92\x10\x61\xce\x04\xd7\x40\x10\xc2\x94\x42\x46\x6a\x20\x99\x03\x46\x0a\x45\x18\xb2\xca\x5a\x45\x99\xf4\x80\x5a\x8b\x88\x20\xbf\xde\x17\x12\x48\x81\x90\x54\x20\x24\x3e\x11\x9b\x2b\x35\x47\x33\x18\x1f\xe8\x1a\xe8\x2a\x1f\x90\xd5\xa5\x71\xec\x9d\x4b\xb8\xbf\x59\xcf\x33\xc7\x62\xd0\xd8\xe7\x60\x84\xea\x3c\xe4\x6c\x74\x18\xb5\xcb\x3b\xd9\xb3\x49\xa4\xbb\xd1\xd4\x2c\x7c\x63\x76\xe1\x68\x38\x2a\x56\x7b\xf3\x6a\xb3\x6f\xa2\x2e\x9d\xec\x8f\xeb\xdd\x12\x3e\x93\x33\xf0\xf9\x71\xf1\xfe\x57\xe5\xe5\x1f\xcf\xde\x6c\xfc\xfa\xdf\xa7\x20\xa8\x9e\x9f\x47\x04\x5f\xe5\x64\x19\x74\x36\x35\xb9\x0f\xfa\xe7\xf9\xfe\x9c\xc7\x49\xa7\xb1\xc1\xd3\xfd\xb9\x73\x2c\x2c\xeb\x2c\xe8\xcd\x4f\x61\x87\x14\xda\x8b\x6b\x6f\xea\xf7\x8d\x61\x7b\x12\xb5\x2b\x58\x95\xd3\x4a\xbb\xb4\x9d\x5e\x74\x6e\x40\xea\xcb\xa8\x3d\x45\x7b\xb4\x50\x3e\xb4\x60\x3e\x79\xbe\xff\x7f\x4e\x74\xce\x7c\x5f\xf8\xff\xd8\xe7\x83\x44\x43\xc0\xb4\x86\xd8\x58\xa6\x08\x16\x8e\x73\x6b\x11\x87\x02\x3a\x0d\x88\x30\x08\x43\xa6\xad\xf0\x0a\x73\xee\x99\xf4\x4e\x3b\xcd\x29\xb6\x54\x0b\x66\x95\x40\xd8\xdf\x8f\x55\x7f\xc0\xac\x40\xb7\x75\xdc\x00\xe3\x29\x53\xc4\x32\x40\x11\x25\xd8\x69\x6e\x98\x25\x00\x5b\xaa\x24\xd1\x88\x52\xe5\xb1\x62\x5c\x31\x69\xbd\xa3\x06\x73\xcb\xa5\x82\x9a\x61\xf4\x1c\x67\xbe\x10\x2d\x3f\x13\x1d\x75\x4a\x38\xba\x0c\x0a\x49\x92\x76\x55\x7b\x96\x1b\xd5\x52\x99\x25\xd7\x79\x2a\x2a\x71\x75\x14\x25\xe9\xea\x9c\x0c\xa2\x7e\x66\x2a\x60\xbb\x97\xd6\x37\x69\xc9\x43\xa6\x4e\x31\xf2\xa7\xb3\x88\xb6\xe5\x55\xbf\xdf\x86\xe5\x5d\xdb\x0d\x72\x05\x66\xf3\xdd\x82\x2b\xee\xd5\x03\xd1\x0f\x5c\x8c\xba\xd5\xe4\xb2\xd8\x06\x51\x6a\x36\x9d\x1c\x35\x39\xd8\xeb\x84\x8d\xd6\x00\x8e\xb0\x1b\xe5\x6b\xd9\x99\xce\xe1\x6d\x3d\x73\xea\xaf\xc8\xb8\xd8\x39\xd5\xe5\x60\x13\x0f\x8b\xd5\x5e\x73\xe7\x4b\x30\x68\xf6\xb7\xbd\x74\x31\x38\x36\x96\x6e\xb9\xf2\xd4\xc4\xd2\xa9\x12\xaa\xdf\x27\x47\xfd\x1d\x62\xdf\xf7\xb1\x3f\x01\xb1\x16\x5a\xab\xa4\x24\xd0\x13\xa4\x8c\x47\x8a\x33\x25\x95\xc4\x80\x1b\x2a\x18\x15\x06\x43\xc1\x28\xc2\xda\x43\xc6\x2c\x97\x58\x50\x04\xa9\xc3\x82\x61\xe3\xbc\xb8\x13\xfb\x23\xa8\x17\xda\x51\x0b\x09\x36\x18\x71\x04\x9c\x05\x18\x51\xc5\x3c\xa6\xc0\x3b\x2c\xa1\xb7\xc4\x3a\x42\x20\xd1\x50\x20\xc4\xa4\x74\x9e\x72\x09\x9c\xa3\x0a\x7b\x2d\xf0\x2d\xe0\x20\xaf\xc4\xe2\xcf\x51\x43\x2e\x0c\x77\x69\xf7\x3a\xd8\xe4\x67\x2b\x6f\xab\xe7\xb1\x4b\x0b\xb3\x5c\x7d\x70\x1c\x66\x66\x36\xab\x3c\xcb\xec\x61\xb3\x7f\x28\xa1\x75\x25\x3b\xc4\xc7\x60\xae\x33\x38\xa3\x8b\xcb\xf0\x52\x1d\x9e\xe9\x3a\x5c\xcc\xb7\xc5\x65\xee\xd8\x19\x2d\xd3\xc1\x41\x57\x2f\x10\xf5\xf6\x5e\x3f\xbb\xd7\x3b\xb1\xe3\x57\x8b\x57\x44\xd1\x95\x0b\xd7\x2a\xc8\x92\x62\x43\x64\xe3\x52\x96\xe0\x53\xb7\xb0\xba\xc0\xdc\x20\x7b\x34\x65\x34\x33\xbb\xd6\xfc\xaa\xb5\x99\xd6\xa8\x2d\xe6\x4f\x17\x33\xe6\xad\xfa\x62\x73\x8c\x5b\xd9\xd9\xdc\xc3\x98\x16\x8a\xb5\x52\xae\xba\x59\x1d\xfb\x34\x7f\x18\xcc\x32\xa4\x7e\xd7\xdc\x7a\x87\xd8\x7c\xe5\xbd\x51\xff\x09\x88\x35\xe8\xe6\x1a\x11\x60\x98\x6a\x21\x6e\xdb\x3a\x01\xa5\x92\x8c\x43\xed\xa5\x85\x0a\x71\x08\x9d\x62\x18\x7a\xa9\x8c\x63\x88\x03\x2c\x9d\x36\xc0\x1a\x85\xb8\x66\x77\xff\xf8\x23\xa8\xa7\xc2\x70\xeb\xa0\x24\x58\x12\xeb\xa8\xd0\x96\x02\x8a\x3d\x40\x14\x10\x4d\xb0\x11\xc2\x68\x4f\x20\x45\xce\x33\x2c\x99\x23\xd0\x62\x2f\x2d\xf1\xda\x3a\x49\xc0\xcd\xc7\xd2\x07\x62\xe1\x67\x62\xe3\xb2\xdd\x8e\x5a\xbe\xb5\xbd\x5e\x36\x68\xab\xe6\x27\x5f\x9c\x2c\x66\xf9\x52\xa9\x37\x3b\x9e\x47\x7b\xd7\x9d\x74\x8a\xae\x51\x6a\x36\x32\xcd\x3c\xd8\x00\x71\x9c\x6f\x0d\xbf\xce\x83\x06\xbe\xd4\x72\x6d\xec\x23\x75\xee\xe2\x4e\x3f\xdb\x9f\xf4\xab\x95\x4e\x0e\x96\xda\x19\x16\xf7\xee\x16\xbe\x13\x7b\x7a\xb5\xf8\x9c\x1d\x1b\xd9\xa8\x7d\x3e\x8d\xc0\x65\x55\xad\xd7\x77\x51\x6f\xd3\xe8\x78\x3a\x98\x68\x3b\x8f\xe7\xa0\x56\x69\x64\xaf\xa3\x73\x98\xd9\xda\xe1\x59\x92\x51\x8b\x76\xdd\xa0\x06\x5b\xbd\x6c\xb0\x08\x6b\x2d\x31\xad\x1f\x41\xb1\xc3\x51\x63\x40\x43\x90\x5d\xf5\x32\x92\xf5\x9e\x03\x90\xde\x3b\xc4\x96\xc1\x7b\xa3\xfe\x13\x10\xab\x11\x90\x88\x19\x8e\xb0\x54\x92\x42\x80\xb5\x74\x58\x38\x80\x84\x36\x54\x22\xa7\x34\x32\x88\x38\xe3\x01\xd0\x1c\x42\x6f\x21\xa2\xd8\x38\x03\xac\x27\x56\x88\xfb\x66\xea\x47\x50\xaf\x84\x67\x08\x62\x6b\x90\x56\x58\x1b\xaa\x34\x96\xdc\x52\x8f\xbc\xc6\xd6\x19\xa8\x8d\x70\xca\x12\x4a\x08\x71\x90\x11\x43\x05\xe1\x92\xde\x54\x4b\x26\xb1\xbb\xc5\xb9\xec\x81\x58\xf4\x99\xd8\x7a\xad\x3a\xec\x84\xb3\x01\x99\x8e\x5a\x95\x92\x5a\xac\x4a\xd9\x55\x7b\xbd\x2a\xb8\xcd\xac\x4c\x77\x8d\xe1\x2a\xa0\x4c\xe4\xcd\x7a\xb5\x5f\x2c\x06\x8b\xe2\xaa\xad\x86\x1d\x92\xd2\xe9\x95\x1e\x64\x19\x64\x82\x66\x3c\x55\x93\xc5\x36\xd7\xbb\xac\x02\xd8\xbc\x9c\xa3\x6e\x94\x1c\x86\x77\x0b\xdf\x88\x2d\x3d\x58\x3c\x16\x2d\x14\xec\x73\xb9\xd4\x2d\x48\xb9\x92\x46\xe4\x60\xb7\xc9\xa5\xd6\xda\x9a\x9d\x2a\xcd\x4c\x50\xee\x77\x7a\xb1\x80\x74\xbc\x2b\xad\xe5\xb4\x20\x4f\xbb\x35\x3f\xab\x94\xfa\xbe\x38\xa6\x92\x87\xc7\x0a\xdb\xb7\x7b\xed\x46\x71\x7e\x1e\xb6\xe9\x60\x6a\x46\xaa\x4b\xef\x9a\x87\xef\x10\x5b\x1d\xbe\x37\xea\x3f\x01\xb1\x9c\x22\xcc\xbd\xa2\x54\x08\x64\x35\x52\x8a\x71\xa6\xad\x01\x50\x62\x2c\x30\xf2\x94\x28\x22\xbd\x80\x8e\x1b\x81\x98\x96\xd0\x4a\xa3\x1c\x77\x02\x6a\x4a\x2c\xc3\x37\xda\x7e\x04\xf5\x16\x31\x84\x08\xe2\x5a\x39\x2c\x0c\x75\x84\x01\xa7\xb5\x43\xce\x58\x64\xb1\x81\x14\x30\xa4\x00\xa5\x1a\x31\x7f\xdb\x89\x21\xa2\x1d\xe0\xc0\x3a\x27\x94\xb7\xc2\xfc\xfa\xdb\x13\x7f\x20\x16\x7f\x26\xb6\x56\xa9\x56\x53\x33\x5b\x6e\x7a\xad\xc6\x0d\xf7\xdc\x54\x0c\x3a\x6c\x57\xcb\x75\x53\x11\xec\xcf\x65\x59\x58\x34\x1b\xa7\x58\xc6\xd3\xa0\x29\xc1\x30\x01\x26\xbb\xa3\x4b\x0f\x17\x0d\xba\x91\xe9\x52\x0c\x8f\xbb\x6b\x05\xda\x90\x6e\x4e\xbd\xde\xde\x5d\x8a\xbd\x8c\xbc\x3e\x87\x02\x77\x62\x1f\xb8\x98\xd3\x72\xa3\xb5\xc1\xdd\x5c\xe5\xd2\xe8\xcd\x44\x7f\x19\x97\x76\x93\x14\xe5\x32\x95\x64\x26\x09\xda\xac\xf0\xb6\xd9\xaf\x04\x49\x72\xe6\x9d\xe1\xb4\xb5\x3a\x1c\x1a\xf5\x64\x3e\x6c\x1c\x32\xb5\x14\xec\x9b\x61\xaf\x14\x8d\xfb\xba\x7a\xac\x56\x5a\xf3\xe3\xd8\xc4\x7c\xbd\x93\xb3\xbb\x66\xf3\x0e\xb1\x91\x78\x6f\xd4\x7f\x02\x62\x2d\x42\xda\x2b\x6b\x3d\xf1\x5a\x61\xaa\x94\x05\xdc\x4a\xc7\x28\xe6\x4e\x69\xec\x05\xb5\x40\x0a\x27\x28\xd5\x12\x48\x4a\x38\x55\x88\x58\x69\xb4\x82\x54\x1b\x7f\x27\xf6\x47\x50\x2f\x05\xd3\x94\x1b\x6d\x99\x16\xc0\x00\x21\x8c\xa3\x1a\x10\x06\xa8\x75\x8c\x79\xaf\x19\xa6\x14\x5b\x01\xa0\x33\xc0\x60\xa0\x11\x85\x4c\x3b\x8b\x99\xe4\x5e\xb3\x1b\xb1\xe2\x81\x58\xf2\x99\xd8\x72\x6f\xe6\x59\x7f\x38\xde\xa7\xdb\xcd\x4a\xc9\x53\x38\xbf\x8e\x2f\xb2\xb7\xa9\x66\x42\x2a\xc6\xcb\x43\x1b\x99\xdd\x8a\x85\xfb\x1e\x9c\x2d\x49\xc9\xf7\x90\xaa\xd0\xd9\x4a\x67\x79\x87\x98\x6b\x69\x02\x27\xe7\xdd\x71\xd3\xb1\x65\x82\x4a\x24\x70\xb6\xb8\x0b\x68\x22\x9e\x37\x3d\x77\x62\x1f\xe2\x58\xea\x27\x20\xdf\x1e\x65\x1a\xde\x05\x64\x5a\xc6\xa5\x6e\x5d\x97\x98\xd9\x56\x4b\x85\x33\xd8\xe6\x28\x47\x90\x95\x75\xf7\xd4\x6a\x0e\x86\x0a\xfa\x1a\xdc\x8d\xeb\xb9\xca\x75\x91\x16\x86\x45\xbc\xd4\xd9\xfd\xac\xdf\x45\x41\x39\xcd\xe7\x73\x97\xde\xe0\xb8\x8f\x37\x9e\xeb\xbb\xe6\xf1\x3b\xc4\xb6\xeb\xef\x8d\xfa\x4f\x40\x2c\x96\x88\x68\xe2\x30\xe7\x42\x22\x03\x3d\xf0\x4c\x12\x4d\x8d\x62\x98\x42\x09\xb9\x57\xc6\x38\x02\x9d\xa3\x18\x2b\x40\x2d\x13\x10\x01\x4c\x94\x23\xd4\x71\x2c\xd1\xb3\x7f\xfc\xfb\xd4\x5b\x88\x15\xa5\x4c\x70\xa8\x3c\xf1\x0c\x01\x8a\x9c\xa6\x4a\x08\xae\x24\xf0\x48\x31\xaf\x29\x12\x92\x39\x40\x3c\x63\xc2\x68\x4d\x9c\x17\x8a\x73\xc2\xb4\x82\x48\xfc\xfa\xdb\x93\x7c\x20\x96\xbe\xc4\xb1\x95\x5d\x66\x8f\x41\x86\xc5\x6a\xd7\xf2\x23\xba\x88\x33\xdb\x6b\xa6\x08\xaa\xb3\x75\x5f\xcf\xab\xfd\xf2\x60\xda\x1d\x5d\x58\x51\x5f\xaf\x59\xbc\x9a\x76\xd8\xbc\xbb\x33\xfe\xe8\x1b\xb5\xf0\x50\x5f\x35\xdb\x15\xd2\xae\xd1\x4d\x70\xa0\xdd\x03\x38\x75\x17\xbd\x6b\x61\x5f\xc0\xe6\x6e\xe1\x3b\xb1\x0f\x71\xac\x4e\x5a\xb5\xc1\x61\x8c\x2a\x23\x54\x22\xed\xd5\xa9\xb7\xcb\x75\x8f\x95\x53\x83\x75\xeb\x9b\x03\x82\x99\x0e\xea\x25\x93\x6d\x2d\x1a\x74\xcb\xed\xc6\xa2\xbf\x36\x4a\x36\x87\xe3\xde\x61\xaf\xa6\xe5\x6d\x4b\x6c\x35\xef\xad\x17\x87\xb0\x39\x5a\x5f\x78\xf7\x38\x5d\xd9\xd2\x61\x12\xdd\x35\xcf\xdf\x21\xb6\x73\x7a\x6f\xd4\x7f\x06\x62\x85\xc6\xce\x7b\x8e\x98\xa5\x86\x08\xc1\xb5\x94\x94\x71\xaf\xb9\x35\x06\x3a\x4d\xbc\x10\xd2\x00\xc2\x09\x21\x92\x5b\xa1\x29\x77\x5a\x03\xcd\x95\xb2\x0c\xa9\xfb\xae\xe9\x47\x50\xcf\x30\x34\xce\x69\xa8\xad\xa5\x02\x22\xad\x95\x63\x16\x7a\x42\x38\x36\x84\x63\xa4\xa5\xc4\x90\x5a\x66\xdc\x6d\x33\x26\xb9\x43\xda\x7b\x2c\x9d\xc7\x82\x79\xe9\xf9\x3d\xfd\xf6\x80\x2c\xfb\x8c\x6c\x7e\x3e\xdf\x37\x62\x3c\xed\x9c\x7c\x1e\x2d\x6a\x49\x34\x84\xa5\xb6\x67\xd7\x46\xcb\xd1\x6e\x63\x9c\x0c\xc6\x9d\x00\xec\xe6\xc9\xaa\xd1\xe9\x94\x5b\xe9\xa6\x99\x27\x89\x5f\x2d\x92\xc9\xee\x3c\xcb\x97\x64\xd4\xef\x80\xfc\xbe\xdc\xaf\x65\x53\x3d\xdb\xb6\xab\xdd\xdc\x46\xc4\xe7\xd7\xb0\xa0\xfc\x60\x72\x99\x99\xcd\xd2\x41\xc4\x8e\x6c\x0c\x1a\xc3\x7a\xf1\xdc\x5d\xc3\xcc\x70\x3d\x9e\xa2\x4b\xbe\x33\x4b\x26\x55\xc1\x62\x18\x9c\xab\x8d\x63\x71\x56\x6e\xb0\xf3\xd1\x0e\xc2\x88\xef\x96\xc0\xb7\xcb\xcd\x82\xb9\x1c\x46\xf5\x3e\x4c\x49\xae\x57\xf5\xd3\x63\xb6\xe1\x04\xd1\x54\xde\xc1\x5c\xbf\x83\x6c\x9f\xbc\x37\xec\x3f\x01\xb2\x12\x13\xe7\x18\xb2\xf7\x5d\x39\x91\x00\x01\x04\x99\xa0\x37\x6f\x79\x5b\xd4\xbd\xe7\x1e\x31\x4a\x20\xf0\x54\x33\xe4\x21\xf2\x98\x03\x46\xbc\x52\x96\x4b\xa9\xee\xb8\xfd\x08\xec\xa9\x87\x96\x6a\xac\x9c\xb0\x52\x48\x21\x14\x23\x48\x19\x03\x29\x12\x90\x32\x43\x34\xb6\x82\xaa\x5b\xc8\xa0\x2d\xc0\x44\x5b\x25\x2c\xd5\x96\x22\x68\x28\xf5\xe2\xe6\x64\x21\x7c\x40\x96\xbf\x20\x3b\xbd\xf2\xac\x59\x42\xd3\xa9\x38\xba\x18\x78\xee\xcd\xc9\xed\x9b\xd3\xea\xa9\x60\x0b\x9d\x04\xd5\xfa\x99\xc3\x69\xcf\x76\x83\xe8\x98\xb9\xac\x9b\xd4\xce\x33\x82\x0f\xe8\x22\x9c\x84\x1c\xd5\x77\x09\x0c\xe4\x98\x17\xd3\x7d\x2f\x33\xd8\xa9\xc3\x7e\x0f\xca\x41\x54\x7b\x36\xf1\x1d\xd9\x07\x30\x36\x95\xf3\x46\x75\x9b\x41\x5c\xed\xe0\xc4\xef\x4b\x49\xb1\x33\xdc\x15\xaa\xa0\x3e\xf1\x31\x2b\xc5\xb0\xe1\x68\x66\x58\x68\x32\x20\xa5\x2f\xf7\x53\xc6\xe2\x65\x75\x1a\x8d\x72\xbb\x7a\xb1\x33\xee\xeb\x42\x2a\x27\xea\x10\x5c\x64\x00\x8e\x6a\xd6\x3f\xf6\x2b\xa6\xef\xa7\x77\xcd\xe9\x3b\xc8\x26\xe6\xbd\x61\xff\x09\x90\x45\x06\x41\x46\xb1\x21\xd0\x72\xc5\x1c\x04\xce\x5b\x81\x85\x93\x8e\x33\xc1\x34\xc6\x5c\x5a\xec\x10\x62\x80\x40\x8b\xb0\xe0\x9a\x7b\xae\x15\x36\x9c\x48\x44\xef\xa8\xfc\x10\xec\x19\xd5\x48\x52\x6e\x2c\x06\xd8\x7a\x86\xad\xd2\xc6\x18\x80\x91\x75\x9e\x0b\x0b\x89\xc5\xc2\x68\x8a\x99\xd3\x18\x40\x61\xac\x84\x0e\x4a\xc6\x85\x30\x10\x90\xbb\xa7\x86\x0f\x69\x31\xfc\x92\x16\xab\xc6\x0d\x3a\x05\xb9\x5e\xa1\xd3\xaa\xe4\x8a\xeb\x84\xaf\x69\x9d\x64\xb1\x58\xf6\xc3\x3c\xdc\x4f\x45\x47\xe0\x70\x9e\xd9\x42\xba\x9c\xfa\x7e\xc5\x65\x0f\x69\x70\xcc\xb8\xca\x74\x52\x6e\x0f\xaf\x85\xb1\x4f\x8b\x8b\x4c\xc7\x0c\xa2\x94\xcd\x58\xbe\xe8\xa2\xf9\xee\x90\xdb\x3f\x78\xd9\x87\x50\xd6\x90\x26\x5e\x67\xc2\xea\xb4\x7a\x4c\x92\x8a\x9f\x65\x5d\xbf\xd5\x2c\xc2\x76\xbb\xb2\x5b\x15\xd0\xca\x27\x40\x91\x2a\x1f\x14\x2f\x9d\xcd\x22\xdd\xf4\x05\x38\x35\xfd\x50\x6e\xc5\x35\xa8\xef\x39\x9e\xb5\xbb\xdd\x59\xad\x87\xd8\x35\x18\x5e\x47\xe5\xc9\x62\x35\xad\x17\x0a\xf3\xbb\xfe\xd3\x3b\xc8\x8e\xde\x1d\xf6\x9f\x00\x59\xc3\x25\x47\x82\x21\x24\x35\xe6\x80\x0a\x41\x39\x75\xc6\x43\x4b\xa8\xf7\xce\x52\x89\x9d\xa4\x10\x73\x4b\xa8\xf1\x1a\x20\x89\x38\x44\x46\x62\x00\xbd\x34\x44\xb3\x7b\xca\xea\x47\x60\xcf\xbd\xe1\x96\x08\x8b\x08\x10\x02\x41\xea\x2d\x21\xd2\x70\x62\xa5\x06\x00\x1a\xe8\x21\x11\x1a\x00\x84\x8d\x34\xde\x19\x88\x35\xd5\x84\x6b\x42\xbd\xf1\x58\xdd\xbd\xec\x43\xde\x0b\xbf\xe4\xbd\x72\xa7\xc9\xa8\x7b\x0e\x21\xd3\x93\xfc\x11\xe5\x67\x1b\x8a\x26\xbb\x3a\x5e\x75\xc9\x74\x58\x28\x77\x1a\xe5\x7d\xd6\xb1\x66\xb9\xd3\x19\x54\x24\x6e\x49\x22\x97\x61\x39\xea\xa2\xc8\x15\xa7\x26\xdd\xe4\x46\x62\x11\x64\x56\xbd\x59\x59\xee\x8f\xfd\x7e\x43\x6d\x4d\xbb\xd2\x6c\x15\xee\x26\xbe\x23\xfb\x10\x51\x16\xe7\x83\x5e\x7c\x29\x66\x4e\x8c\xb7\xe9\x2a\x53\x1e\xe7\x63\xa7\x17\x34\x5d\xf5\xd1\x70\x11\xa6\x57\x7c\xae\x75\xb7\x61\xbd\x95\xb6\x4a\x49\xb6\x0c\x2b\x60\x9e\xab\x54\xfa\xd9\x5e\xc7\xd8\x78\x79\x0a\x4c\xf9\xdc\xa9\x05\xb9\x66\xf5\x9a\x39\x75\xf7\xba\xcd\xdb\xfe\x7a\xdd\xde\x35\x83\x77\x90\x35\x3f\x6b\x16\x41\xde\xf6\x2f\x5c\x02\xce\xa5\x42\xce\x22\xa7\x01\xd5\x92\x2a\xe1\x11\x71\x90\x6a\x8b\x08\xb1\x86\x73\x00\xbd\x05\x46\x19\xe0\xb1\xe2\xd2\x11\x26\x15\x40\x42\xf3\xfb\x99\xec\x0f\xc0\x1e\x28\xc1\x88\x81\xde\x4a\x26\x95\x24\x92\x42\x20\xb5\x95\xc0\x78\xea\x05\x13\x9c\x29\x2b\xa5\x70\xd8\x38\x0e\x14\x31\xca\x2b\x8b\xa1\x73\x58\x63\xa3\x6f\x0e\xf8\x86\xec\x43\xe2\x8b\xbc\x24\xbe\xea\x2e\x89\x4a\x95\x4d\x8a\xc3\xe1\x24\x49\x52\x61\xdb\x3e\xbb\x1f\x74\x59\xbf\x80\x61\xf1\xca\x83\x4d\xf5\x5c\xab\xd6\xc3\x8c\xe9\xa0\x61\xa9\x34\x94\xe6\xc2\xf7\x40\x45\xc7\x2c\x88\xf0\x3e\xcd\x76\x4a\x7d\x59\x58\x9f\xaf\x07\xd0\x30\xdd\xec\x6c\xbe\x5c\xe3\x71\x25\x7e\xf5\xb2\x8f\xdc\xcc\xc3\xb4\x4d\xae\xa3\xa8\x34\x3f\x5c\x97\x8d\xfa\xbc\x38\xaa\x57\x4e\x4d\x1b\x9c\x07\x87\xd2\x25\x93\xa6\xcd\x7d\x21\xe6\x53\x16\x73\x37\x8f\x26\xf3\x93\x47\x83\xe5\xa6\xd3\x2f\x54\x8f\xa3\x7c\x33\x21\xaa\xac\xf6\xcb\x21\x11\xf4\xb4\xa9\xef\x18\x38\xf3\x59\x2a\x8e\xdd\xe7\x23\x2e\xf2\x0e\xb2\xfe\x5d\x24\x7f\x02\x64\x05\xd4\x4a\x40\x6c\x20\x57\x90\x2a\x21\xa1\x66\xcc\x08\x8c\xa8\x77\x44\x78\x74\x5b\x98\x91\x72\x5a\x5b\x8c\x9d\x91\xb7\xed\xb9\x04\xdc\x20\x07\xb1\x54\xce\x7b\xf8\xec\x21\xff\x3e\xf6\xda\x7b\xaf\x39\x13\x86\x13\xa4\xa9\xc7\x8e\x58\x71\x43\x8f\x38\x44\x8d\xb8\xf1\x2b\xac\x24\x52\x6b\x04\xbc\x15\x56\x3a\xcd\x20\xa1\x42\x32\xc3\x38\x84\x88\xde\x90\x7d\xc8\x7c\x91\x97\xcc\x57\xd5\x82\x11\x0d\xf1\x72\xca\x3b\xec\x34\xa0\x83\xb5\x98\x93\xfe\xb1\xd3\x8e\xcf\x38\xf0\xa0\xbe\x0b\x04\x73\xae\xbd\x59\xe7\xa6\xb8\xb9\x59\x89\x55\xba\x16\xd7\xc3\xa1\x38\xba\x06\xc3\xfd\x76\x5c\x74\xac\xc0\x6d\xbc\xd8\x1e\xeb\x3e\x32\x3b\x16\xc8\xd3\x71\x22\xfa\xaf\x67\x5c\x95\x07\x30\x7a\xe9\xac\xb7\x18\x54\xaf\xc9\x35\xc9\x97\x0a\x07\x3e\x4a\x44\x5c\x27\x25\x3c\x49\xea\xd5\x71\x77\xbb\x84\x6b\xb2\x3d\x16\xea\x5e\xb3\x52\x36\xcb\xed\xfa\x0c\x22\x28\x32\xdd\xe1\x20\xd7\x6e\x54\xcd\xb8\xb5\x24\xa8\xb7\xe4\x95\x26\x8a\x57\xbb\x61\x6f\x50\xd5\x25\xd3\xae\xde\xf5\x8b\x77\x90\x1d\xff\xac\x99\x2f\x07\x34\x64\x88\x19\x62\x1c\x31\x14\x63\xe6\x0d\xc4\x1c\x7b\xa3\x95\x70\x4c\x3b\xe9\x30\x42\x80\x1a\x44\x20\xd0\xde\x39\x4e\xb4\x06\x82\x02\xa6\xad\x26\x18\xbb\x7b\x65\xc0\x0f\xc0\x9e\x50\xed\x94\x92\x1e\x59\x81\xb4\x55\x8a\x02\x28\x25\xd0\x50\x50\x84\x20\x61\x54\x58\xc1\x14\x63\x46\x62\x29\x98\xd5\x8e\x61\xa7\x3d\x42\xd2\x70\x8b\xac\x94\x77\x64\x1f\x52\x5f\xe4\x25\xf5\x55\x29\xb1\x71\xf7\x94\xac\xfb\xdb\x6a\x09\xe9\x4a\x7d\x91\x9d\xcf\x2e\xf5\x3d\xd9\x32\x0e\xae\xbc\x6a\x4b\x87\x96\xcf\x91\xee\xf2\x90\x3d\xe3\xfd\x72\xb9\xed\x4d\x87\xfb\x4d\xb9\x2b\x37\x69\x85\xd6\x5b\x9b\x23\xed\x76\xa6\xe5\x16\xae\xe5\x3b\xb4\x7a\x9c\x26\x61\x78\xac\xc6\xea\x35\x59\x5b\x79\x88\x65\x87\xd1\xfa\xc0\xc3\x79\x73\xdf\xda\x2f\xf3\xa4\x41\x49\xb6\xdb\x5d\xf7\xc6\x61\xd0\xef\xe5\x96\xb9\x45\xb6\x91\x91\xdd\xf1\x16\x4d\xe2\xf2\xb9\x78\xdc\x6e\x7d\x6d\x18\xc9\xed\x22\x18\xcd\x6b\xa5\x62\x65\xd2\x5e\xcc\x86\x6a\xa9\xab\x8d\xa1\xd6\x74\xc6\xb2\x95\xcd\x59\xd6\x46\x8b\x1b\x78\x61\xf0\x0e\xb2\x8b\xf1\x7b\xc3\xfe\x13\x20\xcb\x2c\xd2\xd8\x63\xa1\x84\xb1\x0c\xa8\x1b\x5a\x44\x40\x0f\x80\x56\x48\x21\x43\x08\x72\x8c\x02\xcb\x10\xb4\x02\x71\x86\x24\x96\x58\x48\x2c\x25\xc2\xd8\x00\x70\xdf\xed\xff\x08\xec\x99\x17\x90\x38\x67\x30\xe5\x50\x09\x24\x84\x07\x08\x62\xae\x34\x63\x8e\x3b\xe7\x04\xb4\xd6\x22\xe4\x04\xc7\x14\x5a\xc9\x18\x06\x86\x08\xc6\x99\x92\x5a\x7b\x73\xdf\x7e\x3d\xe4\xbe\xc8\x4b\xee\xab\x91\x3b\x0f\x97\xe7\x3a\xad\xf7\xae\x5a\x14\x70\x53\x1c\xd6\x74\xc7\x5c\x7d\x1a\x9a\x6a\x98\xcb\xf2\x55\x87\xe7\x8a\xe1\x0e\x81\x7a\x26\x33\xeb\x2b\x55\xc2\xf3\x6d\xb7\x76\x18\x94\x03\xd4\x77\x62\x38\x20\xbd\x30\xae\x1e\x2a\xad\x7a\x57\x1d\xfd\x2e\x51\xa7\x66\x23\xcd\x3c\x9b\xf8\x8e\xec\x43\x2c\xbb\x2d\x0f\x1a\xc5\xb6\x1d\xe4\x4f\x2e\x22\xa3\x4a\x21\x1c\x76\x87\x8d\xf9\xf5\x34\x45\x5b\x31\xad\xac\x43\x79\x2e\x5e\x83\xc6\xb6\xd9\xc9\xda\xe3\xb8\xc7\xd3\x38\x29\xad\xa3\x8a\xc8\x15\xf0\x16\xe9\x15\x3f\x8c\x2d\xee\xd4\xd6\x06\x96\x47\xa3\x59\xbe\x30\x59\xa9\xcd\x21\x7b\xba\x81\x19\xbe\x57\x47\xbb\x5e\xbf\x37\xec\x3f\x01\xb2\x4a\x62\x06\x88\x23\xd0\x0a\x62\xa4\x97\xce\x49\x8a\xa4\x52\x18\x53\x67\x9c\xba\xed\xcb\x95\x27\x8c\x79\x04\x01\xc1\xc2\x5b\x6e\x24\xbf\x97\x08\x68\x88\xa5\x7e\xae\xa3\xfd\x01\xd8\x43\x23\x8c\x52\x8a\x2a\x8a\x30\xd1\x42\x19\x28\x29\x64\xd6\xb3\xdb\x6f\x84\x03\x8c\x3b\x60\x91\x05\xd4\x62\x8d\xad\x04\x16\x43\x08\xb9\x80\x82\x28\xc5\x19\xbe\x9f\xcb\x3e\x24\xbf\xc8\x4b\xf2\xab\x04\x76\xcd\xeb\x74\x7d\x1d\xe4\xa6\xbb\x5d\x27\x14\xc1\x61\xba\x4e\xdb\x39\xba\xc8\x0f\x2a\x76\xbc\x1a\x6e\x1a\xdd\x69\x77\xd9\xa9\x8b\xa0\x39\xb2\xb4\x1b\x9a\xed\x74\xd4\xcc\x80\xed\xa5\xd2\xa1\xe3\xea\x68\xb5\x22\xed\xdd\x51\x8b\xe9\xa2\xbc\x6e\x05\xc7\x59\x29\x09\xe3\xc7\xc0\xa0\xfa\x60\xf2\x38\x3a\x5f\x82\xfa\xfa\x52\xcf\x8e\x57\x54\x4e\xc2\xe1\xb5\x76\xd6\x3d\x24\x06\x7a\x7a\xc6\xad\xf2\x85\xa7\x40\xb0\xe3\xa6\x33\x24\xc6\xcc\xa2\xed\x62\xd3\x89\x6b\xd3\xb4\xd4\x2f\xee\xe5\x04\xe5\x66\xe3\x51\x26\xdf\x01\x45\xc0\x9b\xa3\x7c\xb7\xd0\x76\xe1\x24\xda\xa0\xf8\x36\x25\xc2\xf7\x0a\x65\xf7\xbd\x37\x23\x9e\x0b\x7e\x0e\x64\x11\xd7\x12\x7b\x2e\x25\x23\xc8\x1b\x0d\x31\xb6\x8c\x7a\xc4\x09\x91\x44\x58\xa7\x29\xe2\x4c\x78\xe7\x18\x32\x88\x5b\xcc\xa9\xa5\x96\x4a\x47\x29\x83\x14\x32\x71\x8f\x43\x7f\x04\xf6\x5a\x0a\x69\x35\x81\x96\x1b\x01\x08\xa4\x40\x49\x81\x04\x25\x86\x50\x87\x95\xc5\x8e\x30\xc8\x1d\x33\xc6\x7b\xc7\xb9\xbc\x05\x15\x90\x13\xc1\x2d\x94\xd6\x18\x44\x6e\xc8\x3e\x64\xbf\xc8\x4b\xf6\x2b\x9a\xa3\xb0\xd1\xb2\x93\xfa\x8a\xf2\x4d\x6f\xb3\x9d\xc5\xee\xba\x9d\xbb\xd2\xb1\xbd\x14\x93\x30\x3f\x93\xbe\x6a\xa7\x26\x9f\x76\x97\x90\x44\x85\x34\x99\xaf\xb4\x6b\x51\xd1\x89\x06\x57\xbb\x0b\xf0\x36\x6e\x14\x3b\x85\x5a\xc5\x2c\xe7\x93\x08\xf4\xaf\x03\x5e\x2b\xca\x41\x7a\x37\xf1\x1d\xd9\x07\x30\x86\xd7\x1c\x23\x7e\x39\x98\x8d\x1a\xfb\x6d\x81\x54\x67\x69\xb4\x3d\xb9\x9d\x5d\x5d\x63\x76\x39\xad\xaa\x9d\xa3\x4d\xf3\x83\x62\xd3\x1c\x10\x9d\xda\x7d\x08\xc5\xb8\x50\x6c\x6d\x87\x51\xb1\x5b\x48\x66\xbb\x2e\x2d\x15\x33\xba\x9e\xcd\x58\x4a\xba\xf3\xa4\x53\x06\x23\x5c\xbf\x4f\x89\xf0\xbd\x4a\xd9\xc3\xdb\x54\xc2\xcf\x82\x2c\x66\x00\x21\xec\x81\x22\x52\x58\x03\xbd\xf6\x96\x22\x21\xa9\x11\x9c\x20\x87\xb5\x71\xc2\x52\xc2\x09\x52\x10\x3b\xad\xb5\xf5\x5e\x71\x6b\x88\x40\x14\x60\x01\x9f\xeb\xb2\x7f\x00\xf6\x48\x4a\x66\x35\x80\x00\x13\x28\x09\x42\xc8\x40\x47\x9c\x65\x04\x32\xa4\x08\xd1\xd2\x2b\x22\xac\xc6\x0a\x29\xa9\x19\x77\xca\x30\x01\xac\x11\x94\x48\xeb\x10\x07\xf7\x47\xfc\x1e\x90\x7d\xc9\x7e\xe5\x1c\x6d\xe2\xe5\xa0\x75\xbc\x9c\xeb\x72\xe4\xab\xa0\xd3\x9b\xb9\x7d\xc7\xae\xb3\x87\x61\x5a\x95\x31\x84\x76\xe0\xfa\x83\x62\x5b\x95\xb3\x31\x5b\x47\xb4\xde\xda\xad\xdb\xa4\xb4\xad\xa0\xcd\x2e\x9a\xf7\x8e\x05\x7c\xb9\xae\x72\x17\x44\x25\x2e\xa5\x97\xe2\xbc\x34\x3f\x7e\xca\x95\xde\x91\x7d\x88\x28\xcf\xd9\xc9\x59\x15\x06\x28\x89\xab\x21\x9e\xe6\x3d\xc2\x6e\xe8\x4b\xe6\x64\x5a\x82\xa1\x4d\x67\xcf\x1b\x55\x56\x2c\x42\x20\x2a\xc3\xcd\x62\x9f\x86\x01\x28\xf5\x2a\xd3\x93\xeb\xee\x47\xe1\x70\xdb\xae\xad\x58\x27\x4e\x59\xb4\xd9\xaf\x58\xaa\x02\x5c\xe9\x57\xf1\xf4\x9e\x2f\x08\xdf\x2b\x95\x3d\xbd\x4d\x25\xfc\x2c\xc8\x72\xcc\x85\x92\x82\x3b\x8f\x18\xa7\x90\x61\xe7\x84\x15\x8e\x50\x60\xb5\x00\x44\x01\x6b\x1c\xa2\xda\x72\xcc\x8d\x05\x37\x24\x2d\xc5\x02\x5b\xeb\x35\x25\xc4\xdf\xcf\x54\x7f\x04\xf6\x50\x22\xc6\xa8\x94\x98\x71\x4d\x2d\xd1\x8c\x1b\x0f\xa9\x14\x5a\x6b\x62\xb5\x20\xd4\x72\x2a\x89\xd7\x9a\x32\x61\x24\x04\x96\x02\x01\x3c\x93\xd0\x00\xc9\xa5\x36\x37\x64\x1f\xb2\x5f\xe4\x35\xfb\x35\xcc\x55\xb2\xb9\xf9\x32\x3e\xf9\xa3\xec\xad\x17\x66\x02\x6a\xb3\x63\x63\xd6\x6f\x83\x68\xd2\xdc\x1d\x64\x96\x79\xd3\xc9\xf5\xf2\xe3\x7e\xb1\x47\x7b\xa0\x62\xcc\xd8\x04\x74\x5f\xa8\x8f\x96\xb5\x4c\xed\xd2\x1d\x0c\x9b\x08\x95\xdb\xbd\xc1\x42\xb6\x66\x9b\xfc\xbe\x48\x0f\x9d\x87\xc0\xe0\x21\x96\xc5\xb5\x60\x15\xcf\x3a\xa7\x65\x6d\x4d\x38\x59\xcf\xd6\xe5\xf1\x25\xf5\xf3\x64\xe9\x5c\x58\x49\xec\x78\xa0\x2f\x8d\xea\x49\xaf\xd2\xb3\x18\x55\x97\x83\x51\xbc\xda\xdb\x0e\xf2\xcd\xe2\x68\xca\xf7\xf1\xa1\x90\x24\x83\x5e\x86\xf7\xd7\x97\x76\xbe\x9f\x0b\xe4\xa6\x1c\x2c\xe8\xf1\xa6\x38\x7c\xaf\x56\xf6\xfa\xf6\x79\x84\x9f\x05\x59\x09\x88\x31\x8c\x19\xef\x24\x65\xd2\x78\x24\xbc\xe4\x16\x52\x00\xbc\x64\x96\x3a\xc8\xad\x14\x48\x02\x0f\xb9\xb1\xd4\x60\x65\xb5\xd7\x9e\x58\xc4\x3c\x46\x12\x9a\xe7\xe7\xb9\xfe\x3e\xf6\x4a\x7a\x0a\xa5\x95\xdc\x72\x8d\x3d\xb1\x96\x3a\x2c\x21\xb3\xcc\x2a\xef\x2d\x86\x84\x60\xe1\x9c\x41\xd6\x2a\xe8\x89\x51\x80\x73\xa7\x19\x54\x92\x41\x4c\xa9\xb9\x61\x8f\x1e\xb2\x5f\xe4\x25\xfb\x55\x8e\xc9\x76\xe8\x8f\xd5\x55\x6f\xd0\x3c\xcc\x86\xb4\x98\xd7\xe3\xc2\x3a\xbe\x4e\x07\xd2\xe0\x6b\xab\x75\xbc\xf6\x1b\x79\xec\xf7\xbd\x2e\xb9\xee\xb9\x69\xeb\xb4\x72\x2a\x44\xed\xa6\x3a\x0c\xc1\xfa\x50\x6b\x0e\xf9\x7c\xbf\xab\xb7\xea\x74\xab\x02\x34\xdd\x0f\x7b\x5d\x1e\x2f\x9e\xd7\xe4\x1b\xb2\xd1\x83\xc9\x41\x50\x9f\x5e\xba\x24\x77\xc9\xd7\x6a\x47\x75\xe9\x80\x60\xd9\x94\x7c\xe2\x56\x72\x06\x77\xf3\x4a\xba\x1e\xba\x18\x4c\x5b\xbb\xd9\x61\xbb\x91\xed\xd5\xc8\x27\x69\xb6\x6b\x93\xd9\x7c\x00\xf7\xbb\x2c\x38\xb7\xf3\xb3\xc3\x69\x8f\x26\xb2\xbe\x2e\xfb\xdd\x50\x2d\x26\x71\xff\x7c\x3f\x31\x78\xaf\x58\x16\xbe\x4d\x25\xfc\x2c\xc8\x12\x25\x10\xb7\x5e\x41\x07\x24\x21\x56\x2b\x41\x25\x14\x8a\x0a\xcf\xa1\x34\x0a\x6a\xed\x24\xa4\xd4\x29\xac\x30\x77\xc2\x53\x8f\x01\xf7\x16\x30\x63\x0c\xd6\xe8\x8e\xec\x8f\xc0\x5e\x60\x8b\x19\x80\x90\x11\xab\x14\xb5\x44\x12\x0c\x34\xc3\x9c\x12\xc8\x21\x25\xcc\x00\x0f\x9c\x23\xdc\x79\x0f\x01\xf5\x50\x12\x27\x2d\x23\x96\x7b\xaf\x91\x21\x77\x64\x1f\xb2\x5f\xe4\x25\xfb\x55\x0d\xeb\xe7\xe5\x35\xb3\x18\xac\x9a\x51\x73\x21\x8b\xad\x3c\xd5\x7d\x92\xa0\x61\xd4\x12\xc9\xb5\x7f\x62\x28\x7b\x04\x60\x29\x2e\x73\x53\x5e\x26\x99\xe8\x82\x52\x7d\x2d\xd2\xea\xd1\xd5\x70\xd8\x99\x2d\x97\xfb\x43\xa1\xca\xf5\x41\xe2\x28\x1b\xf8\x42\xbc\xc1\xa3\xb1\x7a\xde\xac\xdf\x91\x7d\x00\xc3\x1d\xd8\xa8\x76\xcd\x64\x5c\xe3\x32\xc0\xd9\x72\x73\xc8\x20\x3b\x66\xd6\x45\x94\x70\xca\x06\xb9\xae\x28\x49\x1c\x6c\x6c\x79\xea\xb7\x79\x80\x82\xf6\x28\xde\x2e\x60\xb5\x75\xda\xcf\x6c\xaf\x78\xee\x97\x4e\xcd\xfc\xa1\x9d\xc9\x9e\x43\x5f\xea\x31\x3b\x8a\x7d\x36\x4d\xdb\x77\x64\xdf\xab\x96\x45\xe9\x9b\x11\xcf\x07\x3f\x07\xb2\x08\x18\x66\xac\x01\x5a\x29\xef\x9c\xb3\xc8\x72\xa0\x90\x11\x56\x31\x04\x31\x14\x10\x3b\xe9\x39\x20\x8c\x70\xc8\x3d\x16\x90\x33\xab\x1c\x40\x94\x48\x21\x38\xb9\xd7\x66\xff\x08\xec\x8d\xc4\xce\x2b\x26\xb4\x75\xc0\x70\x2d\xe9\x2d\x32\x70\x10\x2a\x64\xa1\xd1\x40\x43\x75\x9b\x12\x44\x10\x0c\x0c\xe4\x92\x22\xe1\x31\x40\xc6\x2a\x88\x94\x00\xf0\x1e\xcb\x3e\x64\xbf\xe8\x4b\xf6\xab\xb0\xcd\x79\xbf\x76\xb9\x5e\x57\x6f\x8b\xf3\xe1\x66\x28\xcf\xab\xa8\xc4\x59\xbb\xef\xd6\x2c\xce\xcc\xa0\x38\x79\x19\xa6\xd7\x7c\x9a\x76\x2b\x85\x41\xf5\x10\x07\x47\x4e\xdd\xa2\x9d\x2d\x4d\x3b\x83\xea\x88\x8f\x6a\xa8\x7d\x3d\x17\x04\xca\xac\x4a\xfd\x60\x96\xdf\x5d\x87\x93\xd7\x73\xd9\xe8\x21\x96\x85\xd7\x69\x59\xcd\x0e\x3a\xbf\x9b\xc1\xca\x81\x16\x5a\x62\x38\x0a\x11\xc9\x5d\x97\x48\x06\xd5\xa6\x55\xd5\x55\x9a\xe0\x4c\x90\xf1\x49\xb5\x79\xdc\xac\x8f\x2e\x5f\x3e\xf4\x47\x22\x3b\x29\x4d\x81\x49\x6b\xa5\xe5\x35\xd3\x29\xd4\xeb\x45\xda\x5b\x8b\x53\x2d\x5e\x77\xb6\xc1\x3d\x35\x1c\xbe\x57\x2e\x4b\xde\x22\x79\x17\xfd\x09\x90\xa5\x08\x50\x09\x6f\x94\x38\x62\x2d\x74\xd8\x59\x7d\xdb\x31\x09\xc0\x8d\xc3\xc2\x28\xe4\x9d\xe2\x9e\x51\x4e\x94\x21\xc0\x31\x46\x85\x93\x12\x5a\xab\x35\xa5\xcf\x6f\x24\xf8\x11\xd8\x63\x81\x85\x50\xf8\x5e\x5e\x00\x0d\xc4\x02\x2a\x88\xb4\x12\x0c\x53\xe1\x8d\xe3\xd2\x61\x01\x19\xf0\x4a\x41\x6d\x01\x02\xca\x70\x60\x2c\x51\xd4\x78\xe1\xf1\xbd\x1a\x0c\x3d\x64\xbf\xe8\x4b\xf6\x2b\x97\x2f\x5d\x4d\x8e\xed\x32\x7c\x5f\x4b\x72\xd3\x4b\xbc\x99\x16\xce\xe3\x2e\xf3\xa6\x30\x2a\x17\xb3\x8d\xd0\xee\x77\xe3\x6a\x6f\x59\xb1\x41\xa3\xea\xfa\xe5\xdc\xe0\xb4\x70\xdb\xed\x50\x14\x69\x97\xad\x47\xb6\x70\x9c\x9e\x4e\xb5\xda\x7a\x48\x78\x5b\x1e\xaf\x36\xc0\xbb\x25\x7c\x8d\x65\xa3\x87\x58\xb6\x2e\xc7\xb5\x7e\xfe\x38\x3b\xd5\x0f\xfd\x51\x66\x35\x6b\xcf\x8e\xc7\xfa\x79\x31\x59\xdb\xf6\x38\xdb\xaf\x6e\x0e\x6a\x33\xcd\x69\x70\x91\x9d\x80\x34\x2a\x6b\x32\x9e\xf4\x4c\x81\x94\x26\x11\x9b\xcc\x06\xcd\xeb\x6a\x35\x1b\x0f\xf2\x6c\xad\x41\x2e\x97\x9a\x3a\x8c\x92\xe6\xec\xba\xbb\x1f\x72\xbd\x57\x2f\x4b\xdf\x66\xbf\x7e\x16\x64\xa1\x62\xd2\x3a\xe8\xb9\xb1\xc8\x58\xc9\xb1\x03\x48\x42\xad\xef\x89\x50\xa5\x8c\x56\x18\x58\x43\x18\x93\x4a\xdd\x61\x02\xd2\x29\x2f\x04\x56\xd2\x78\x09\xd4\xbd\x70\xf0\x07\x60\x2f\x20\xbd\x85\xa9\x42\x68\xab\x18\xf6\x1a\x73\x8e\x09\xd2\xd4\x7a\x62\x98\x36\xcc\x3a\xaf\x91\xf5\x1e\x7a\xa3\x1c\x61\x14\x18\x87\x04\x06\x96\x51\x2f\x84\x72\xec\x86\xec\x43\xf6\x8b\xbe\x64\xbf\x8a\x95\xe2\xbc\x75\xe6\x34\x06\xae\xb9\x3f\xba\xfd\x30\x14\x84\x5c\xa6\xd9\xad\x47\x7d\xb0\x2b\xe4\x97\xa3\x21\x1b\x95\xed\x01\xf6\x82\xca\x6a\x3d\x99\x98\xfd\x26\x31\x2d\x10\xee\x41\x56\x88\x62\x31\xac\x14\x57\xd5\xf9\xa2\xbf\xc9\x44\x07\xda\x8b\x7a\x7a\x70\x9e\xec\x9a\xaf\x87\x5c\xb5\x07\x93\x97\xba\x91\x99\x59\xba\x4f\xcd\xa2\x88\x9b\x99\xcd\x3e\x3f\xad\xdb\xde\x60\x23\xf0\xfe\x30\x2c\x66\xae\x8b\x20\xbf\xc9\x24\x99\xf1\x3e\xe3\xc2\xc4\xae\x87\x53\xb9\x99\x65\xae\xf6\xda\xda\x25\xbe\x5b\x3a\x96\xf0\x31\xdd\x67\xcf\xd9\x88\x96\x7a\x75\xb2\xae\xc7\x23\x3f\x8d\xe8\x3d\x95\xf0\x5e\xbd\xac\x78\xfb\x18\xcd\xfd\x19\xb4\x9f\x00\x59\x67\x20\x64\x10\x78\x0e\x19\xe6\x5c\x4b\xce\x6f\x21\x27\x74\x1e\x53\x4a\xb1\x94\x58\x2b\xc0\x01\xa3\xdc\x5a\x8c\x24\xe0\x42\x32\x83\x21\x80\xd8\x31\x00\xf1\xfd\x08\xff\x87\x60\xef\xa1\xc1\x9c\x72\x48\x1c\xf1\x9a\x30\xa7\xa9\x35\x0a\x63\x4d\x18\x84\x9a\x12\xe6\xf5\x2d\x72\x30\x10\x50\x23\x3d\x76\x1a\x72\x89\xa5\x50\x88\x01\xcf\x81\x60\xf7\x57\x72\x3c\x64\xbf\xe8\x4b\xf6\x2b\xdc\x6c\xf0\x44\x0a\x90\xa2\xa4\x39\x8e\xda\x07\x74\x5e\x95\xb6\x17\x56\x8f\xcf\x25\xa5\xd6\xfd\x72\x98\x73\x3b\x32\x66\xab\xe6\x3c\x42\x22\xd6\x99\x1c\xd5\x45\xdc\x9e\x0c\x6c\x29\x3d\xa5\x2b\xb6\x5b\x94\xd3\xc5\x68\x95\x67\xa7\xfe\xde\x97\x8c\x1a\x9b\x3a\xcb\x5e\x5f\x2b\xb9\x6a\x8f\x4f\x7e\x6d\x5c\x62\xe3\xc4\x2f\x27\xb0\xb0\xea\xcd\x72\xc3\x4a\xdd\x69\x7b\xed\x8b\xe6\x62\x9c\x73\xac\xca\x5c\x75\x2b\xea\x9a\x74\x12\x7d\x3e\xe1\xfe\xb9\x3b\xcf\x00\xbd\x4b\xcc\xfa\xba\x2f\x15\x74\xbf\x94\xa1\xcd\xe3\xa9\x95\x54\x45\x26\x4d\xe6\x74\x3a\x1d\x36\x4d\xe5\x5e\x62\x18\xbe\x57\x2f\x9b\x79\x9b\xb0\xfd\x59\x90\x85\x5a\x59\xee\x08\x55\x58\x52\xc2\x00\x13\x4c\x72\xa2\x85\xe4\x90\x68\xeb\x90\x56\x9a\x71\x82\x98\xa5\x84\x03\xa2\x1d\xc4\x0e\x19\x80\x05\xb4\x12\x62\x8b\xf9\x3d\xd9\xfa\x23\xb0\x07\x90\x2b\xea\x35\x02\xde\x28\x20\xb4\x43\x0c\x61\x4a\x34\x56\x96\x29\xef\x85\xc3\x1a\x59\xc4\xb4\x54\xc2\x40\x2f\x11\x90\xd2\x61\x48\x85\x87\x5e\x49\x64\xe1\x0d\x7b\xf4\x90\xfd\xa2\x2f\xd9\xaf\xc6\xa9\x3d\x6c\xc9\xf3\x10\x3b\x6a\x4f\x22\x29\x1f\xe3\x7e\x8f\xce\xf9\xba\x1c\x2e\xbc\xad\x6f\x42\xb2\x48\xeb\xad\x42\x66\x18\xd6\x31\x6b\xa6\xc3\x63\xb2\x48\x67\xbb\xc3\x54\x54\x86\x2c\x2e\x2f\x02\x30\x60\x25\xbd\x82\xed\xfa\x6c\xd2\x9a\x78\xc4\xd3\x4c\xa5\xda\x78\xae\xbb\x7e\x46\xf6\x01\x1c\xdb\xca\x76\xc9\xa5\x1a\x47\x2b\x39\x99\x56\xd7\xdd\xc3\x39\x9f\xc6\xda\xca\xa9\x6e\x0f\x3c\x9a\xc4\xe5\xea\x24\x9d\x6e\xc3\x68\x90\x07\xa1\x5b\x64\x2e\x79\xb1\xae\x1c\xa7\xc3\x59\xbf\xd6\xd8\xab\x63\xa6\xd1\xb8\x80\xe5\x41\xcd\xc2\x4c\x27\x37\x22\xe7\x41\xb3\xcc\xe6\xfb\xfb\xa3\x65\xe1\x3b\xf5\xb2\x61\xf5\xed\xb9\xec\xcf\x82\xac\xf4\x5c\x68\x6c\x25\x56\x0e\x50\x65\x39\x21\x9a\x6a\x64\xb0\xa2\x16\x42\x48\x08\xb1\x98\x4b\xc9\x81\x14\xd8\x1b\x85\x89\x12\x5a\x60\x47\x9d\x94\x16\x3b\x4a\x9f\xbd\xec\x0f\xc0\x9e\x73\x69\x24\x50\xd6\x0a\xa8\x29\x35\x08\x1b\xc8\x20\x54\xd2\x39\xa1\x19\x52\xcc\x73\x22\x88\x15\x5e\x21\x81\x3c\x64\x42\x10\xcc\x3d\x14\xcc\x63\x8d\x04\x22\xf6\x86\xec\x43\xf6\x8b\xbe\x64\xbf\xc2\xc3\xde\xcf\x07\xb3\x45\x6f\x58\x9a\x6c\x6c\x6d\x9a\x14\x6b\x78\x7a\xd8\x8d\x40\x75\xdf\x2f\x87\x35\xd2\x25\x69\x40\xca\xa3\x82\x8c\x33\x9b\xe3\x0c\x9f\x2b\x38\xac\x9e\x2f\xbb\xf9\x75\x53\xd2\x63\x35\x31\x1c\x9a\x13\xab\xed\xed\x32\x70\xad\x49\x54\x80\x3d\x7f\x28\xac\x9f\xd7\xe4\x3b\xb2\x8f\xcf\x7e\xa9\x5c\x9e\xb4\xb5\x2f\x6c\x3b\xbb\x4a\x66\xbb\xa9\x5c\xae\xd7\x5e\x2f\xa3\x87\xc3\x7a\x35\x6d\x9f\xf0\xa6\x6c\x96\xe5\x53\x6b\x77\x54\x21\x5e\x55\x73\x7b\x14\xee\xfb\xa7\xd9\x69\x50\x50\xab\xc3\x14\x45\x4b\x09\x26\xf1\x8c\x45\x39\x31\x98\x16\xe2\x6c\xa9\x24\x78\x94\xeb\xde\x4f\x0c\xde\xa9\x97\x0d\x6b\x6f\x47\xfc\x67\x41\xd6\x02\x8d\x39\xe1\x0c\x63\x09\x25\xa5\x98\x09\x4d\x95\x15\x0e\x19\x6e\x38\x55\x54\x2b\xe1\x01\xd3\x1e\x03\x61\x00\x14\x48\x82\xfb\xf3\x88\x10\x03\x86\x99\xd4\xf7\x38\xf4\x47\x60\x2f\x9d\xe5\x58\x18\x8f\xb0\x83\x52\x3a\x07\x80\x37\x5c\x29\xe1\x18\x24\xde\x38\xef\x8d\x53\x02\x03\xe8\x84\xb4\x16\x2b\xcf\x10\xd5\xd4\x3b\x8f\x3d\x25\x1e\xca\x1b\xb2\xf8\x21\xfb\x45\x5f\xb2\x5f\x55\x49\x52\x39\x67\xa4\xb8\x4b\xda\xb5\xc1\xe5\xc4\x92\x76\xa1\xd7\x8e\x63\xba\x38\x2d\xf3\xd9\x28\x8e\xa6\xa4\xb9\x60\x23\x90\xe9\x27\xeb\x65\x23\xbf\x2a\x9a\x11\xcb\xf4\x62\x6f\x8f\xd7\x65\x36\x5f\xea\x8a\xda\x78\x1f\xcf\xf0\x88\xd1\x52\x48\x92\xfa\xa5\x39\x42\xd7\xe5\x6b\xbd\xec\xe3\x53\xae\x70\x96\xd4\xd4\x3a\xca\x56\x1a\xdb\x28\xee\xcf\xa7\x1a\x99\xb8\xb6\x9b\x2d\x0a\xdd\x72\xb2\x19\x2d\x4c\x95\x84\xc5\x61\x43\xe8\x3a\x5e\x3a\x78\x9d\x35\x2b\x99\xd2\x88\x8f\xf3\xc2\x6d\x67\xcb\x62\xf3\x7a\xcc\x36\xb6\xf9\xc0\x4d\x2d\x60\x72\x3a\x80\xd9\x63\x13\x76\xcf\xab\x3b\xb2\xef\xd4\xcb\x86\xf5\xb7\xa9\x84\x9f\x05\x59\x6d\xbc\x24\x52\x21\xc6\xa0\xe0\x48\x1b\x0e\xb5\xb3\x4c\x30\x4a\x25\x77\x5c\x30\x47\x21\x27\x00\x69\x6b\xa4\x42\x52\x71\xcd\x98\xf4\x18\x22\x43\x3c\x55\x02\xd9\xfb\xc3\xb1\x3f\x00\x7b\xaa\xad\xb4\x18\x5a\x08\x25\xc0\x06\x41\x83\xa4\xd6\x5a\x3b\x09\x24\xe0\x48\x73\x8e\xa1\xd0\x48\x60\x62\x3c\x42\x0a\x5a\x72\xa3\xda\x61\xcb\xbc\x35\x1c\x18\x7c\x43\xf6\x21\xfb\x45\x5f\xb2\x5f\x71\xee\x6a\xcb\xc3\xeb\x7c\xd4\xef\xaa\xda\x60\x3f\x9b\x9e\x85\x55\x03\x36\x3b\xa9\x6c\xbd\x72\x0a\xc7\x9b\xdc\x6c\xb0\x2d\x9c\x86\x68\x79\x22\xcd\x46\x61\x93\xa8\xd1\x16\xa8\x72\x61\x79\x5c\xec\xd7\x2c\xce\x95\xea\x20\x2e\x24\xdd\x28\xcd\xb0\x6b\x29\x1e\xa0\x75\x66\x98\xae\x5e\x13\xb6\xf5\x07\x30\x44\x69\x39\x42\xcb\x49\x69\xd0\xcc\x99\x41\x60\xe1\xa6\x27\x3b\x61\x35\xf1\x6e\xb6\xcf\xf3\x62\xa3\xb0\xae\xe5\xd9\xba\x98\x76\x1b\x47\xaa\x91\xad\xdb\xc2\x28\x10\x15\x13\xe9\x03\x67\xad\x79\x39\xc2\xe6\x3c\xbd\x8c\xc1\xf5\x12\x4d\x60\x83\x04\x44\x6a\x79\x3e\x9d\xee\x27\x06\xef\xd4\xcb\x86\x8d\xb7\xa9\x84\x9f\x06\x59\xee\xad\x07\x4a\x11\xa1\x34\xb5\xd0\x11\x6b\xbc\xb3\xc4\x40\x64\xa9\x50\x1a\x31\x05\xbd\xc7\x82\x33\x00\x98\xf7\x00\x21\xcf\x01\x52\xd6\x22\x6b\xbd\x77\xe4\x9e\xb9\xfa\x11\xd8\x2b\xe3\x18\x34\xda\x78\x86\x2c\xe3\xdc\x42\x45\xb8\x57\x88\x50\x2d\xa8\x77\x08\x7b\x8e\x08\x51\xd2\x13\xa0\x15\x27\x4a\x13\x0f\xa0\x82\xd0\x6b\x8a\x81\xa3\xf7\xb7\x71\xe1\x87\xec\x17\x7d\xc9\x7e\xd5\xae\xb4\xa3\xaa\xcb\x52\x39\x12\x46\xf3\xc1\x64\x31\x48\x28\xd1\x8b\x22\x08\x76\xb8\xba\xde\x6c\xf8\x68\x23\xce\xb5\x82\x54\xe3\x7d\x7f\x0a\x47\x9d\xa8\xb8\x5a\xba\x85\x25\xb2\x6b\x92\xe9\xd0\x92\x59\x74\x9c\x34\x87\x7c\x3f\x92\x50\x25\x25\x79\x90\xd5\xd0\xb7\x5e\xcf\x65\xeb\x0f\xb1\x2c\xba\xe6\x29\xb7\x68\xdd\x3b\xa1\x1a\x5b\x1e\x76\xfb\x65\x76\xed\x50\x7e\xc6\x8a\x87\x6b\x98\xac\xfa\x4b\xbe\xe0\xe5\x75\x3e\xad\xf7\x2e\x29\x9d\x5c\x84\x9c\xc2\x95\x6f\x6f\xca\x99\x69\x5b\x4f\x3c\x99\xc9\x4b\x3b\x5a\x81\x1c\xb3\xd1\xbe\x19\xa8\x82\xdf\x77\xf3\x8b\xbb\x17\xcf\xbd\x53\x2f\x1b\xb6\xdf\x22\xf9\xb3\x20\x6b\x94\x32\xc8\x2b\x29\x90\x31\x8e\x2b\x81\x91\x94\x5c\x39\x6c\xa4\xc6\x98\x08\x0c\x2d\xf0\x5c\x72\x69\x90\xb3\x10\x73\x05\xb8\x02\x4e\x29\x49\xa0\x93\xd6\x3c\x3f\xb7\xf5\x23\xb0\x77\x40\x00\x6a\x89\x47\xc4\x68\x42\xa5\x81\x86\x79\xe6\x30\xc5\xc8\x7b\x2f\x3c\x31\x06\x68\x4d\x19\xb6\x10\x28\xe0\x18\x82\x98\x39\xa9\xa9\xa1\x0e\x3b\x4f\xe8\x2d\x1e\xc6\x0f\xd9\x2f\xfa\x92\xfd\xaa\x79\x29\xa2\x4d\x65\x0b\x81\xeb\x9a\xec\xbe\x1b\xd6\xfa\xd3\x5d\x75\x5b\xce\x36\xca\xc3\x40\x67\x83\xa9\x3c\x45\x7b\xb0\xc7\x59\x5a\xd9\x0e\x0a\x35\x55\x37\xad\x0e\xa5\x8d\xf3\xa6\xb0\x6f\x36\xb9\x1f\xe4\x6a\x68\xb1\x5b\xb7\x26\xd3\xdd\xa8\x4c\xf5\x62\x28\xa2\x36\x51\xaf\xb1\x6c\xfd\x21\x96\x2d\xdb\xa6\xd8\x87\xe1\x7e\xe3\x2e\x35\x21\xe5\xbe\xd6\x5c\xc5\x56\x6d\x7b\xeb\x72\x7b\xb0\x2c\x47\xb3\x48\x2c\xd7\x7a\x47\x20\x3a\x95\xc7\xe3\x22\x6c\x56\xeb\xfb\xe2\x2a\x3c\x1f\xf5\xac\x77\xc9\x66\x67\xe0\x1a\x1c\xe0\x50\x16\xa2\xfc\xb2\xd2\xd5\x9b\xbd\x49\x66\x1c\x24\xe3\x7b\x3e\xe4\x1d\x64\x3b\x6f\xcf\x65\x7f\x16\x64\x1d\xa4\x52\x30\x08\x89\xe7\x50\x41\x00\x91\xe6\x06\x39\x60\x0d\xe5\x82\x1b\x6b\xa1\xf5\x48\x51\xcb\xbc\x14\x92\x7a\xa4\x39\xb4\xd4\x18\x0f\x19\x36\x18\x08\xf9\x9c\xb9\xfa\x11\xd8\xbb\x5b\x1c\x6b\x8c\x86\x86\x09\xab\xa0\x63\x9e\x4b\x4d\x11\x81\x16\x70\x6f\x89\x61\x1e\x48\x61\x8d\x36\xda\x50\xab\x85\xb7\x92\x4b\x80\x19\x67\xd6\x68\xad\x6e\xf1\x30\x7e\xc8\x7e\xb1\xd7\x67\xbf\xb6\x69\x8d\x2d\x73\xd7\x86\x5b\xd7\x37\x0b\x46\xc4\xf2\x1a\x57\xea\x36\x8f\x17\xf4\x74\x00\x5d\x37\x76\x63\xb6\x5d\x84\xcc\x5e\x2a\xad\x49\x25\x8e\x7c\x27\xd7\x11\x66\x91\x39\x4e\x46\x7e\xbb\x68\x2c\x4a\x1d\xb9\x5c\xef\x0f\x44\x17\x4f\x99\x46\x2f\xd7\xce\xe1\x60\x66\x9f\x23\xd8\x1b\xb2\xf1\x83\xc9\xb3\xba\x90\x69\xba\x56\x5b\x9b\xfa\xb1\x53\xf1\xad\x8b\x4a\x3a\x83\xa4\x30\xbe\x86\x5c\xe9\xd3\xce\xc5\xfd\x96\x1b\x0e\x2b\x93\xd3\x54\x65\xae\x97\x66\x3d\x35\x2a\x5e\x3b\x8d\x97\xb0\x1a\x82\x72\xb6\x77\x3e\xe6\x86\xb8\x76\x11\x89\x9e\xc9\x05\x0d\x90\xdd\x5f\xf8\xe6\x74\x7f\xb4\xe2\x1d\x64\x7b\x6f\x5f\xc8\xf5\xb3\x20\xcb\x6e\x20\x12\x48\x28\xe6\xf4\xfe\x9a\x37\x48\x29\x87\x48\x6a\x40\x05\x12\xde\x09\x0d\x91\xb5\x9c\x21\xa1\x39\x00\x5a\x08\x0d\xa5\x80\x58\x22\x0d\x09\xa2\xea\x7e\xa6\xfa\x23\xb0\x57\x1a\x61\xa0\x2d\xc6\x92\x48\xc1\x05\x60\x14\x01\x04\x30\x47\xde\x18\xaa\xb5\x83\xc0\x49\x2f\x80\x67\xc2\x3b\x0a\x94\xa2\x98\x69\xa5\x08\x32\x86\x43\x8e\xd0\xfd\xc5\xb2\x0f\xd9\x2f\xf6\x92\xfd\x6a\x14\x47\x93\x49\xb1\x69\x54\x21\x8c\xf0\xe9\x90\x37\x7d\xe2\x63\x60\xc5\x36\x19\x64\x86\x0b\x1f\xe1\x72\xff\xda\x2c\xce\x4e\xa7\xa9\x01\xfd\x94\x8e\x0b\xe7\x96\x3e\x2f\x1b\x8b\xb5\xe8\x0c\x26\xd9\x1d\xba\x80\x42\x8f\x27\xd7\x5e\xb9\xe8\x77\x74\xba\x8d\x6a\x3c\xe2\xcf\x2f\x76\x7b\x46\xf6\xf1\xd9\x2f\xbc\x18\x34\xa5\xef\x76\xaa\xcb\xf6\x2a\xe6\xcd\x4d\x1c\xaa\x91\x1a\x5e\xa7\xa5\x89\x4c\xe6\xa8\x82\x16\x97\x60\x3c\xec\xd9\x38\xbd\xec\x2a\xa7\x63\xb7\xd1\x5b\x96\xc7\xa5\xde\xb8\x92\x37\xc7\x6b\xf1\x90\x29\x34\x56\x24\x8f\x66\x99\x5e\xb4\xe9\x2a\xb6\xc9\x5d\xcb\xc5\xcb\xfd\x41\x9d\xdc\x3b\xf5\xb2\x61\xff\x67\x4d\x25\x20\x2e\x98\x74\x88\x5a\xe1\xac\x54\xd2\x28\xef\xa1\x93\x4c\x69\x05\x20\x20\x18\x53\xe6\x25\xc5\xc4\x1b\xc6\x10\xb7\x12\xa0\x5b\x34\x6a\xa9\xc5\xce\x39\x66\xc4\xfd\xb9\xad\x1f\x81\xfd\x6d\xfb\x2f\x90\x64\x80\x40\xc0\x95\x30\xfa\xfe\xba\x44\x63\x11\xe4\xce\x01\xea\x11\xa3\x10\x22\x22\x18\x56\x1e\x49\x44\xbd\x91\x8a\x3a\x67\x9c\xd3\x4e\x79\x7b\x3f\x31\x78\xc8\x7e\xb1\x97\xec\x57\x69\xe1\xab\x61\xbb\x6b\xdd\x66\x56\xe8\xf7\xcf\x91\x0e\x87\x51\x93\xd5\x0a\x7b\x88\xa2\x9a\x09\x0e\x95\x74\x34\xee\xce\x77\xc5\xdc\x60\xab\x0e\x3b\xa1\x38\xeb\xf8\x4a\xf1\x5c\xef\x8e\x5a\xa3\xfa\x6c\x5c\x3d\x1f\xe7\xfd\x7c\x4c\x76\x85\xed\xa5\x92\x94\xd0\x21\x82\xdb\x65\xf2\xba\xfd\x8a\x1f\x62\xd9\xfc\x99\x1f\x70\x77\x2f\x24\xc8\xe7\x73\xc1\x10\x35\x7b\x6b\xbc\x88\xa6\x3d\x5c\xc7\xab\xcb\xc2\xec\xb6\xcb\x63\x7d\x51\xac\x75\x32\xbe\x04\xb3\xeb\x68\x10\x86\x21\x9b\xd5\x56\xed\x75\x0a\x26\xfe\x10\xfa\xea\xa2\xd0\xe9\x94\x1a\xc7\xa8\x93\x88\xe5\x82\xa7\x7c\xc7\x8e\xf8\x8e\xdf\x3b\xf5\xb2\x61\xf2\xb3\xa6\x12\xb0\xb6\x1c\x7a\xe2\x91\xd4\x84\x0b\x04\x30\x62\xcc\x2b\xad\xb8\x44\xc0\x6a\x87\x31\xc4\x50\x09\x28\x84\x55\x92\x58\x22\x09\xe4\xda\x73\x4f\x15\xe7\x5e\x20\xf5\x5c\x63\xf0\x03\xb0\x37\x50\x29\x4c\x14\xf3\x16\x79\xcb\x88\x81\x96\x43\x26\x90\x24\xdc\x6a\xad\x29\xf4\x90\x60\xcf\x10\x27\x46\x79\x0e\x08\x72\x92\x32\x8d\x1d\x32\x12\x49\x81\xe0\x2d\xb8\xc0\x0f\xd9\x2f\x86\x5f\x4b\xbc\x4b\xab\x69\x32\xe4\xa3\xad\xd9\x65\xcb\x1b\xb5\x5b\x87\x61\x3e\x1e\x64\xfa\x71\xf3\xbc\xac\xca\x79\x6e\xbd\xd9\xf5\x41\x86\x2f\x2f\x61\x93\x92\xba\x9b\x57\x06\xc7\xca\xe1\xbc\x40\x57\xdb\x19\xd1\xe1\xb5\xbf\x6d\xae\x70\x50\x99\x15\xf5\x61\x4c\x07\xdb\x73\xdf\x5d\x83\xe3\x6b\x25\x57\xfc\x10\xcb\x36\x1b\x6d\x7d\x38\x96\xe3\xb8\xe8\xd3\x4e\x67\x69\xed\x76\xd9\x6b\x8a\xe2\x5c\x4c\x07\xb2\xaa\xe1\xa5\x55\xcb\x1e\x0a\x97\x61\xc9\xa0\x63\xb8\x9d\x75\x96\xd9\x4e\x76\xd0\x0d\xe1\x59\xe5\x16\x65\xc4\xf7\x6d\xd1\x6b\xa2\x2a\xb8\x1c\x4d\xa1\xb6\xe9\xef\x9a\xd3\x4b\x67\x99\xbb\x73\x98\x7b\xa7\x5e\x36\x1c\x15\xde\x8c\xf8\xcf\x82\x2c\x02\xc4\x2a\x24\x98\xb6\x1e\x49\x80\x24\x63\x40\x61\x45\x3c\xf3\x54\x6b\x09\xb9\x23\xd0\x40\xe2\x84\x02\xd4\x51\x28\xb1\x74\x5a\x21\xed\xb9\x36\x1a\x59\xf3\xec\x21\x7f\x04\xf6\xd6\x50\x61\x31\x50\x16\x29\x29\x91\x06\x4c\x0b\xcf\x6f\x11\xb2\xe3\x8a\x3a\x2e\x29\x36\x0e\x59\x0d\xe0\xcd\x85\x6b\xe8\x28\x54\x46\x71\xc0\x34\x82\x42\x40\x76\x0f\x0c\x1e\xb2\x5f\xec\x25\xfb\x95\x3f\x26\x65\x20\x36\xfb\xf2\x78\x5c\x5f\x6a\x76\x58\xcd\xc7\x28\x53\x3f\xd7\xd5\x78\x38\x53\x8b\xb8\xd3\x2b\x72\x99\x1d\xac\x3c\x89\xc6\x97\xae\xde\xa9\xf9\xe5\x38\xd2\x73\x9f\x6f\x5a\x83\xe3\xc3\x16\xad\x47\xb6\x72\xe4\xc5\x4a\xde\x5f\x56\x4e\xa6\x93\x65\x75\xd6\x58\x3d\xef\x7c\x6e\xc8\x36\x1e\x4c\x1e\x67\x33\x36\x97\x26\x9d\xbe\x99\x6e\xaa\xb5\x84\xfa\x4e\x7f\x91\xb5\xfb\xbc\xd8\x14\x5d\x66\x3a\x5a\xf9\x55\x3c\x42\x63\x7e\x4c\x66\x59\x33\x88\xeb\x11\xd8\x2e\x3b\x69\xe9\xd0\xf4\xb9\xcc\xc1\x2d\x28\xed\x09\xb2\x4f\xc3\x42\x7f\x70\xa6\xed\x5d\x64\x4a\xe9\x64\x1a\x0e\xef\x81\xc1\x3b\xf5\xb2\xa1\x79\xfb\xe2\xc3\x9f\x05\x59\x88\x24\x51\x06\x10\xc9\x9d\x17\x98\x79\xe1\x25\xf7\xd2\x19\x00\x88\xb4\x86\x6a\xe3\x85\xb4\x10\x5a\x0a\x98\x80\xd2\x01\xcf\x2c\x63\x4c\x69\x6f\xac\xb2\x80\xe9\xe7\x4a\xae\xbf\x8f\xbd\x15\xe8\xb6\x63\x83\x96\x63\xe8\x8c\x56\x8e\x61\x44\x09\x11\x92\x30\x8b\xb1\xa6\x48\x00\x27\x38\x73\x92\x49\x66\xa5\x82\xda\x00\x6d\x08\x81\x88\x31\xc8\x84\x65\x37\x64\x1f\xb2\x5f\xec\x25\xfb\x95\x0b\xe3\xf5\x5a\x49\xb1\x09\x36\xa3\xf1\x9a\x75\x91\xd4\x87\xb6\x9f\x97\xc3\xee\x7a\x5d\xa4\xed\x39\x65\x2c\xca\x3a\x91\xee\x2f\xdb\x75\x38\x6d\x67\x46\x83\x55\xbf\x95\xf8\xea\xc9\x17\x7b\xf1\x38\x5d\x97\x63\x20\x66\xda\xcd\xcc\xf1\x88\x17\x89\xda\xb7\x0f\x49\x0b\xbe\xbe\x73\xbe\xf1\x00\x46\xc7\x95\xc3\xdd\x21\x3f\x8e\x9b\x55\x2d\xe7\xde\x54\xfb\xf5\x4b\x6e\xcc\x96\x4e\x83\xf9\xfa\x48\xed\x40\x36\xe6\xa2\x50\x70\x1b\xa4\x87\x55\x46\xce\xf0\x5a\x4e\x0f\x87\xe1\xa5\x5f\x98\xf6\x74\xb7\x01\xa3\x80\x95\xf5\x46\x0d\x90\x2a\x89\x9c\x68\x87\xd5\x65\x71\x0d\xef\xc8\xbe\x53\x2f\x1b\xda\xb7\x6f\x3e\xfc\x69\x90\x35\xfa\xb6\xd2\x0a\x28\xac\x30\x8e\x0b\xe6\x05\x27\x0a\x2a\x82\x09\x53\x1e\x42\x6a\x28\xf5\x12\x68\x08\x29\x96\x10\x7a\x8c\x19\xa1\x54\x10\x89\x3d\xe1\xfe\x5e\xa7\xfa\x43\xb0\xb7\x56\x18\x28\x95\xb4\x8e\x52\x0f\x09\xf4\xc8\x49\x48\xf8\xcd\x73\x7b\xe1\xb9\xd3\x9a\x33\xc2\x18\xb0\x80\x19\x06\x20\xf1\x16\x7a\xaf\x39\x35\x5c\x5b\x22\xd5\x2d\x96\x25\x0f\xd9\x2f\xf6\x92\xfd\x0a\xa3\xde\x2e\xe8\x24\x9c\xc4\xc7\x19\xf5\x94\x07\x61\x15\x17\x8f\xcd\xa9\x2d\xd8\x5e\x69\x3c\x22\x4d\x3d\x18\x6d\x8f\x02\xed\xc3\xdd\x19\x64\x3a\x60\x3a\x5f\x5f\x7c\x46\xbb\x5d\xa1\x1d\x3b\x7f\x48\xfb\x9b\x5a\xcc\x8b\xd4\xfa\xe3\x68\x35\xb9\x16\x1b\x93\xc2\x9c\x3e\x94\x78\x37\x1e\x22\xca\x41\x75\xb1\x96\x7c\xe7\x5b\xb3\x59\x25\x3e\x04\x85\xb9\xcb\x35\x34\x6e\x9f\x16\x2c\x1e\xf6\xe6\x92\x26\x8a\xe1\xd8\x80\x5e\xee\x88\xed\x2c\x5c\x6e\xf0\x22\x39\xb7\x7c\x6d\x53\x2c\x8b\xcd\x91\xc8\xcc\x01\x8f\x4a\xc3\x38\x4c\x87\x61\x57\x96\xb3\x7b\x78\xe6\xb0\xba\xbb\xe3\xf7\x4e\xbd\x6c\x38\x7e\xfb\xb8\xe2\xcf\x82\xac\xf4\xde\x09\xa7\x04\x57\x9a\x00\x88\x30\x73\xd4\x79\xea\x28\x40\x08\x03\x45\xa0\xe0\x00\x7b\x24\xb1\x30\x48\x12\x83\x8d\x61\xd0\x3a\x0f\xa4\x51\x9c\x02\x83\xe4\xf3\x03\xdd\x7f\x1f\x7b\x0d\x9c\xf1\x92\x11\x60\x0d\x10\x84\x39\x80\xb8\xd7\x56\x0b\x0a\x15\x97\x8e\x12\x0c\xb1\xf7\x4a\x48\x2b\x19\xd1\x80\x70\x84\x9c\x51\xd4\x58\xa1\xa8\x25\xda\xdd\xb0\x27\x0f\xd9\x2f\xf6\x92\xfd\x0a\x2f\x4c\x9e\xc6\x43\x54\xa7\x44\x13\x1b\x95\xe6\x71\x69\x77\x2e\x9a\xbe\x9f\xd7\x0a\xfd\x46\xbb\x7c\x8d\xe7\xfd\x61\xa7\x2b\xcb\xa2\x75\x29\xea\xf0\xda\xae\x5c\x96\xba\x6b\xcb\x97\x4a\xb8\x92\xe9\x6e\x36\x5b\xb6\x7b\xa5\x2e\xc6\xf3\x46\x54\x58\xf6\x0e\xc7\x79\xa3\x9b\xcd\x3f\xd3\x70\x47\xf6\xf1\xd9\xaf\xbd\x3b\x97\x07\x73\x97\x2c\xd2\x89\xb8\x2c\x28\xaa\x5e\x0b\xb0\xce\x37\x59\x71\xb8\xce\x31\xcb\xdb\x85\x3e\x9e\xec\x76\x70\x82\xea\xc4\x9b\x8b\x79\xde\xe4\x0a\x7a\x5c\xcd\x1e\xf5\xa4\xbd\xa1\xb4\x57\xef\x66\xd9\xd4\x2e\xe6\x69\xc1\x4c\x79\x94\xc4\xd3\x05\xac\xb1\xfb\x21\xd7\x3b\xf5\xb2\x7f\xfe\x5f\xd1\xfc\x2c\xc8\x3a\xa9\xb5\x03\x42\x3b\xc6\x9d\xf1\x0e\x63\x6b\xb0\x26\x98\xf2\xdb\x6e\x07\x30\xab\x38\xc0\x40\x40\x6b\x81\x04\x02\x61\x60\xa0\x14\x14\x28\x66\x01\xa6\x8c\x3f\xff\x2f\xe1\x7f\x04\xf6\xe6\xe6\x6e\x1d\x36\x1c\x58\x87\x98\xc1\x0a\x78\x27\x94\x36\xc8\x53\x06\x20\x33\xca\x6b\x84\xa0\x97\x5c\x4b\xae\x14\x31\xda\x6b\xa8\xad\x80\xdc\x4b\x68\x19\xf2\x37\x64\x1f\xb2\x5f\xec\xf5\xcd\x87\xd9\xcc\x6c\x3b\x61\xfb\xa0\x30\xd3\x0b\x0e\x69\xab\x32\xcb\xcd\x4b\xe5\x20\x1b\x75\x67\xb9\x45\xbd\x59\x1f\x5a\x7e\x5a\x45\xb6\x75\xda\x4c\xd3\xd3\x80\x8c\x57\xf9\xbc\x64\x34\x3a\xe3\xfa\x2e\x88\x66\xfb\xb5\xef\xe5\x6b\x4d\x75\x31\x55\x61\xf3\xd7\xc1\x75\xb1\x68\xd5\xdd\x6b\x2a\xa1\xf9\x60\x72\xb2\x6c\x9d\x0f\x95\x4b\x69\x5e\x5f\xf5\xe2\xcd\xee\xbc\x86\x07\xa6\x71\xdc\x88\xc6\x9d\x6c\x6e\xdb\x6e\x83\xb9\x5c\xd7\x5b\xcd\xda\x20\xcd\xc6\xe1\x8e\x08\x13\x93\xe5\x89\xe5\x33\xd3\xdd\xe9\xd8\x1f\x17\xd3\x1d\xaf\x4c\x32\xc9\x21\xd9\xce\x2f\xd9\x54\xa3\xd0\xd3\xf2\xe0\x5e\x76\x93\x7b\xa7\x5e\x36\x5c\xfc\xac\x35\x06\xce\x4b\xa2\xb4\xe5\x4a\x60\x4e\xbc\x46\x1e\x0a\x4a\x35\x13\x86\x43\x8d\x8d\x75\xd4\x7a\xc5\x05\xd2\x1a\x69\x6f\x31\xb4\x88\x21\x82\x99\xd0\x06\x1b\xaa\x3f\xd5\xba\xfe\x08\xec\x89\x34\x42\x62\xc2\xb9\x57\x8e\x30\x2f\x28\xf4\xc0\x01\xa1\x8c\x80\xda\x53\x8c\x14\x64\x1c\x5a\x61\x91\xb4\x54\x78\x66\x95\xa3\x46\x09\xcd\xa8\x53\x88\x70\x7f\x0f\x0c\x1e\xb2\x5f\xec\x25\xfb\xd5\x58\x72\x52\x39\x2e\x7d\x9a\x9d\x35\x4d\x03\xc4\x49\x2b\x3b\x2c\xa1\x55\x70\x1a\x5b\x50\xcd\xe5\xea\xf5\xd2\xb0\x17\xe9\x56\x3c\xf0\x13\x1f\xd9\x52\x65\x94\xdf\xc6\x2b\xd0\x6b\xb5\x3c\x91\x49\x6f\x10\x0c\x5b\x41\xbe\xd5\x1a\xe6\x0f\x33\x5d\xe8\xb8\x4b\x73\xd5\xea\x0e\x3f\x1d\xe2\xdf\x91\x7d\x00\x43\xd6\xd0\x69\x1b\xaa\xa5\x38\x9f\x59\xa1\xbe\x68\x41\x97\x6d\xf3\x6a\x73\x32\x4f\xab\xdb\xe2\x7a\x94\x5f\x46\x45\x53\x0c\x4f\x1e\x9f\xc3\xea\xa5\x1a\x97\x3d\xa3\xa5\x4c\xb1\x7c\x22\x95\x5d\xa5\x94\xed\x5d\xd6\x03\x63\x67\x9d\x55\x7f\x86\xd0\x21\x89\xa6\x28\xd9\x56\xcb\xd9\x3b\x7e\xef\xd4\xcb\x86\xab\x9f\xb5\xc6\x00\x48\x2e\x85\xd0\x48\x38\x0c\x0c\x01\x0c\x2b\x22\x94\x41\x8e\x1b\x63\xa0\x90\xda\x23\x0a\x34\x01\x96\x2b\x64\x10\xe3\xda\x1a\xab\x05\x53\x42\x43\x49\xbc\x7b\xf6\x90\x3f\x02\x7b\xa8\x04\x93\x4e\x19\xe3\x34\xc2\xc2\x7b\xe2\xa5\xa3\xd4\x02\x05\x08\xb1\xd4\x7b\xca\x01\x10\x1e\x43\xca\xac\xf7\x42\x7a\x6f\x34\x11\x14\x41\x61\x38\x01\x94\xe0\x1b\xb2\x0f\xd9\x2f\xfe\x92\xfd\x6a\x64\x7a\x5b\xe9\xd6\x31\xc8\x5c\xc4\xb0\xaf\x55\xdd\xe8\x66\x4c\x6d\x66\x35\xde\xfd\xff\xec\xbd\x49\x93\xe3\x38\xd6\x25\xba\xaf\x5f\x91\x56\x9b\x6f\xa1\xaa\x16\x66\x80\xd5\xd6\x0b\x0e\x12\xa9\x81\x94\x48\x51\xe3\xb3\xb7\xc0\xa8\x79\x9e\xd5\xd6\xff\xfd\x99\x7b\x44\x85\x7b\x79\x44\xe5\x97\x99\x8a\x88\xd7\x66\x59\x32\x37\x37\x45\x48\x0e\xf0\x1e\x1e\x5c\xe0\x9e\x0b\xe2\x1e\x0f\xd5\x32\xe9\x8d\x97\xd9\xf6\x12\xdd\xd4\xb2\x55\x85\xf1\xad\x95\x8c\x3a\xf3\x4d\xff\xd2\xb7\x4d\x59\x69\x57\x5a\x08\x99\xd9\xf6\x9a\x54\x7b\x85\x8b\x46\xf9\xd8\x2c\x39\xd7\x25\x7c\xdb\xc9\xd5\x7d\xbf\x96\x1d\x6a\xb8\x1b\xcf\x06\xc3\x62\x5b\x6b\x4a\x16\xeb\xa4\x71\x94\x0b\x78\x3f\xde\x1a\x24\xcc\x2b\x81\x6e\xee\xe7\xf1\x10\x5f\x17\xeb\x86\x9c\xed\xd8\xf1\x71\x68\x90\x2a\xa8\xd8\x81\x09\xa7\x45\x36\xaa\x0e\xae\x61\x37\x1d\x28\x57\x69\x56\xc5\xa9\xd1\x9f\x2d\x92\xbc\x9e\xbf\x7a\xd9\x6f\xed\x97\xdd\x7e\x7c\x5c\xf1\xcf\x42\x59\x0d\x09\x12\x00\x7a\x42\x41\x64\xa1\x47\x08\x7d\x3d\xd9\x15\x09\x0d\x09\x78\x89\xf8\x81\xe1\x0c\x3a\x27\xb8\xb6\x16\x29\x81\x08\x85\x52\x21\x4c\x2d\x26\xc0\x92\xd7\xc3\x89\xbe\x07\xed\x0d\xe5\x96\x70\xa9\xa9\x42\x0a\x20\x6e\x85\x24\x8a\x59\xc4\x85\xd3\x88\x23\xc2\x8d\xb5\xd8\x93\x58\x20\x6a\x15\x37\xd8\x18\xc2\x08\x53\x4e\x03\x25\x05\x04\x94\xbe\x50\xf6\x5d\xf6\x8b\x7f\xc9\x7e\xf9\x2b\x3a\x6f\xb7\x3a\x69\x9a\xc7\x9d\xe5\xfc\xd8\xde\x3c\xd2\xb8\x79\xb9\xf7\xdb\x79\x66\xe7\xd7\xb5\xf5\x1e\x6a\xb6\x9f\xdf\x56\x5d\xb2\x1b\xed\x96\x76\x42\xf2\xfb\xf0\x30\x9b\x67\x6e\x75\xf2\x27\xe1\x06\xf9\xf9\x61\xb8\xc7\x37\x14\xe8\x9c\xf1\xcb\x76\x28\xdd\x49\xeb\xb7\x87\xc2\xbb\xef\xd6\xb2\xe8\x58\x19\x1b\xcc\xe2\x7e\xb0\xae\x1f\xc2\x8d\xd8\xdc\x1e\x05\x8e\x79\xcc\x82\xd5\xf0\x1a\x2d\x86\x8d\x4b\xef\x9c\xdf\xe2\xb4\x11\xaa\x81\x5b\xda\xe3\xf0\x7e\x0c\xdd\x76\xd7\x56\x73\xdb\xbd\x6e\x9a\x09\x3e\x77\x64\x27\x1c\x1d\x5c\x89\xfb\x93\xf8\x22\x42\x36\xcd\x07\xaf\xf4\xfb\xd6\x7e\xd9\xfd\x9f\x75\x5b\x0c\xc0\x42\x79\x4e\xbc\x1e\x30\x6c\x81\x24\x9c\x12\x84\x20\x37\x88\x3b\x08\x31\x01\x9e\x27\x94\xe0\x9e\x62\x0a\x18\x45\xac\x86\xd2\x41\x63\xbd\x17\x36\x19\x2a\x98\xf8\x94\x06\x78\x9e\xf6\x4c\x58\x6d\x31\xb4\x1e\x13\x18\x79\x98\x1a\x66\x38\xd5\x52\x71\x4c\x34\x65\xc8\x22\x8c\x28\x31\xd4\x4a\x00\x90\x14\xc0\x22\xcf\x63\xda\x59\xa8\xb9\xe7\x79\x0a\xeb\x17\xca\xbe\xcb\x7e\xf1\xb7\xa2\x5f\xf5\x70\x1a\xac\xdb\xb5\x73\xdc\x2f\x06\xd5\x7e\xbe\xbd\xf6\x23\x78\xbe\x42\x94\x54\x67\x82\xcf\xcf\x61\x51\xec\xef\x99\xcd\x7c\xda\xe5\x83\x63\x9d\x24\x04\x46\x65\x70\x0b\xc8\x60\x46\xd6\x59\x52\x5d\xb4\xda\xdb\xd6\x69\xcb\x6e\x92\x99\x59\x4a\x93\x31\x5c\xd6\xd3\xb7\x67\xbf\xde\xf3\x62\xb9\x49\xa8\x98\xdd\xca\xf5\x1e\x65\x0d\xb6\x92\xb7\xfa\x9e\xdf\x32\x52\xe0\x83\xe7\x2d\x6a\x82\xdd\xcd\x3a\x81\xfe\xac\x7e\x49\xbd\x2d\xef\xa4\x76\xb5\x4d\x77\x99\x51\xa3\x51\xeb\xf4\x28\xeb\xe3\x73\xe3\x3e\xc8\x46\x7b\x3f\xdc\xfb\x64\xb7\x3a\x56\x67\x37\xba\x56\xaf\x6b\xe5\xf0\x5b\xfb\x65\x4f\x7f\xd6\x3d\x06\xc2\x72\xec\x49\xc6\xb8\xc1\x94\x6a\x41\x90\x44\xd0\x21\x26\x09\xa6\x10\x4b\x83\xac\x16\x42\x09\x2c\x29\x70\xc2\x7a\x94\xbd\xb8\x51\x8f\x2a\xc7\x15\x33\xec\xd3\x3e\xd5\xef\x42\x7b\x43\x15\x97\x1e\x32\x4c\x52\xc9\xa1\xb5\x0a\x73\x4c\x10\xd3\x48\x48\xe3\x61\x4a\x90\xa5\xda\x49\x29\xb9\x05\x82\x0a\xc1\x24\x14\x4c\x02\x82\x95\xa4\xc4\x68\xf5\xe2\xa9\xc9\xbb\xec\x17\xff\x92\xfd\xf2\x3b\xed\x0d\xe9\xc0\x53\x27\x5c\x9a\x7e\x63\xe6\x7a\xee\x56\x03\xe1\x64\x4e\xac\x92\x57\x04\x78\x70\xb8\xe1\x9d\x9a\xbb\xc1\x6c\xab\xe2\x63\x7b\xb2\x90\x37\x40\x07\xf7\xae\x5f\xd6\xc2\x96\x03\xbd\xd6\xa3\x5a\xd0\x59\x18\x8a\xd8\xcd\xda\x1d\x8c\x46\xc1\x7d\x7c\x79\xd3\x65\xf3\xf7\xfb\x65\x3b\x29\x0f\xb3\xc5\x6a\x7b\x1b\xee\xaf\x2b\x29\x37\xeb\x40\x1e\x8a\xc7\x5a\xd6\xfc\x45\x0f\x16\x65\xc9\xa3\x34\xe8\xcf\xaa\x9d\x64\x31\x38\xb1\xe5\x49\xae\x76\x37\x7e\xc8\x1e\xf9\xfa\xba\x3d\x4c\xb2\x7e\x7b\xf5\x60\xfb\x0d\x69\x0c\x1b\x72\x36\xdb\x07\xd1\x79\x55\xea\xf3\x2b\xfd\x44\x46\x86\xf9\x6e\x98\x2d\xfe\x79\xd2\x47\x00\x3a\x78\xf0\xfa\xee\xad\xff\x3f\x0b\x65\x1d\x30\x44\x63\x4c\x08\x46\xc0\x60\x47\x94\x96\x2f\x13\x3b\x75\x1c\x53\x44\x05\x11\x06\x60\xcf\x29\x4b\x94\x66\x90\x71\x26\xe1\xeb\x23\x5a\x1e\x72\xd8\x7a\xc2\xbc\xae\x43\xbf\x07\xed\x91\x54\x8e\x00\x46\x09\xf2\xa8\x80\x92\x2b\xa6\x35\x37\x8c\x38\x07\x14\xd4\x84\x01\x04\xad\x52\x04\x19\x49\x3d\x4b\x88\x00\xca\x32\xed\x69\x87\xac\x27\x24\x91\xe4\x85\xb2\xef\xb2\x5f\xfc\x4b\xf6\xab\x41\x1f\xeb\xf5\xc4\xcb\x06\xf7\x5a\x6b\x9e\xdc\xe5\x32\x2b\x3a\xa7\xf6\x71\xde\x9e\xb2\x7e\x77\xb1\x1b\x4c\x6f\xfe\x4a\x79\x5c\x0d\xa3\x68\x72\x38\x6e\xc0\xcd\x1f\x5f\xf7\x69\x5a\x66\x8f\x31\x39\x54\xbb\x54\xde\x78\xa5\xf1\xd8\xd2\xcd\xcc\xe9\xad\xdd\x0c\xee\x65\xe3\xd1\x79\xd3\x65\xf3\x77\x6b\xd9\x3c\x9b\x12\x7d\x20\xd1\x96\xef\xcf\x23\x8c\xb7\xe4\xa0\xe4\x48\xf2\x4a\x10\x99\x44\x8b\xae\x2a\x6b\xa3\x40\x9f\xf3\x5a\xd9\x15\xfb\x0b\x08\x56\xf9\x6e\x18\xec\xb8\x4a\xdd\xb0\xac\x86\xb7\x5b\xec\xcf\x18\xcf\x4f\xbb\x09\xad\x4d\xdb\xf4\xb8\xe9\xb6\x77\xf3\xe5\xce\x7f\x3d\x54\xe3\x1b\x94\x25\x9f\x36\xe7\xfc\x09\x29\x4b\x38\x95\x0a\x3a\xeb\x79\xd0\xf3\x10\xc2\x82\x71\x22\x14\xd6\x12\x5a\x87\xa8\xf1\x00\x31\x58\x02\x84\x94\xb0\x04\x3b\x47\x81\x50\x8a\x78\x9e\xf3\xa8\x92\xfa\x13\xdd\xbe\x07\xed\xa1\xc1\xd4\x0a\x06\xa8\xa4\x12\x4b\x4f\x21\x8c\x38\xa0\x1c\x0b\xcf\x11\x06\xb1\x31\x9c\x4a\x6c\x34\x85\x1e\x00\xcc\x3a\x08\x85\xf6\x28\xd3\x40\x71\x46\x20\x60\xf0\x85\xb2\xef\xb2\x5f\xfc\x4b\xf6\xab\x1b\xf5\xaf\x8f\x22\x6a\x64\x5d\x70\x69\x8d\x59\xe1\x34\x6c\x8e\x7b\x99\x4f\x2b\x95\x9e\x18\x0f\xcd\x3e\x5e\x55\xee\xcb\x4b\x77\xb7\x90\x83\x79\x51\xcb\x74\x3d\x68\xf9\xf5\x87\xf3\xb6\x6c\x57\x3b\x3c\x96\x81\xde\x2e\x9b\xd3\x3e\x97\x6e\xd7\x46\x93\xd2\xeb\x2d\xa2\x78\xf3\xce\xcb\xbe\x5b\xcb\x1e\x7b\x9d\x76\x50\xa9\xcf\x78\xb7\x01\x03\xb3\xf6\x2b\x9b\xd5\x8d\x46\xc6\x8e\x7a\xfe\x64\xcc\x3b\x9b\x7b\xa2\xcf\x77\x9b\xd6\xd6\x4d\xdf\x64\x76\x36\x1d\xae\xb6\x6c\x7d\x4f\x37\xc1\xa8\xd3\xf4\xe2\x9a\x07\xe1\xd6\xbb\x15\x4b\x5f\x5d\x6a\xe3\xfb\x40\xf9\x27\x94\xe7\xe3\x17\xe2\x45\xb5\x6f\x50\xd6\x5b\xbd\xbe\xfb\xf3\x51\xf6\xf5\xd9\x2a\xa1\x8c\x51\xca\x18\x6c\xb5\x73\xd2\x10\x44\x98\x93\x54\x7b\x9a\x1a\x8d\x85\xa0\x4c\x01\x49\x25\xd4\x04\x3b\xfb\x12\xf6\x2b\x88\x3c\xe5\xa0\x72\xf6\x35\x74\xfa\x1e\xb4\x07\x5c\x4a\x49\x90\x21\xd0\xd3\x9e\xb4\x1c\x68\x6a\x89\x82\x1a\x03\xc9\x09\xa5\x98\x2b\x4c\x25\xc4\x58\x2a\x07\x05\xe2\xcc\x30\xe4\x71\xe1\xb0\x47\x9d\x92\xe6\xf5\x80\x23\xfa\x2e\xfb\xc5\xbf\x64\xbf\xba\x05\xdc\xdf\xaa\xbb\xe5\x64\x39\xef\xc4\xa6\x71\x14\x5b\x2b\x56\x28\x2f\xcb\x6d\xd8\x22\x34\xaa\xc2\xb0\x7d\x6a\x6e\xe8\x90\x3d\xa2\xe1\x38\xa9\x4f\x8a\x6d\x45\xce\x86\xeb\xee\xc2\x75\x6b\xc7\x38\x6a\x5d\xcd\x65\x2d\x4e\xa7\xed\x34\x40\x02\x98\xc3\xad\x9d\x81\x51\xfd\x4d\x97\x2d\xde\x41\x6e\xd1\x23\xed\x0f\x07\x68\xeb\x6e\xb7\x5e\xb3\x6f\xc0\x6c\x5a\xdb\x0d\x2b\x66\x59\x49\x29\xc0\xfd\x6c\x76\xdc\x8f\xda\xad\x36\x28\xd3\x69\xb2\xdf\xe7\xa7\x7c\x72\x97\xf4\x7a\xb3\xbd\xdb\xf5\xba\x03\x83\xd2\x3e\x86\xb3\x94\x5d\x6e\xd3\x8d\x1a\xb6\x46\x8b\xc7\xca\x9d\x4f\xaf\xcf\x1e\x44\x8d\x6f\x50\xb6\xfa\xe9\x68\xdb\x5f\xa1\x6c\xc0\xf6\xcb\x76\x3f\xd6\xeb\xb3\x4e\x47\xcb\xa3\x4e\x5b\xa6\xde\xc7\x47\xb8\x2d\x3b\x07\x31\x6e\x22\x38\x5f\x11\x41\x47\xfc\xd0\xff\x78\x54\xed\xff\x3f\xaf\xdf\xea\x65\x31\x87\xd8\x78\x4c\x11\xac\x9c\xc6\x84\x18\x27\x35\x73\x4a\x31\xec\xac\xa3\x52\x43\x42\x10\xa5\x84\x4b\xc9\x1d\x80\x86\x49\xcd\x2c\x24\x18\x73\x49\x84\x64\x9f\x4e\xf1\xfe\x0e\xb4\x97\xda\xb3\x02\x60\x04\xa9\x87\x20\x78\xdd\x3b\x6b\x24\xb6\x06\x20\xec\x30\x65\x14\x58\x01\x34\xb6\xd0\x48\x89\x5e\x98\x8b\xa8\x22\x86\x03\x8e\x1d\x07\x00\xbe\x1e\xbd\x41\xdf\x65\xbf\xf8\x97\xec\x57\x67\xdc\xaf\xb4\xb1\xba\x98\xee\xb1\xca\x60\x58\x5c\x76\x7a\x53\xc7\xd1\xbc\x2e\xaf\x3b\x99\xd4\xba\x95\xe3\xa1\x72\x6b\x29\xa1\xaa\x3b\xff\xd1\xb8\x4d\x0f\xa7\xdd\xa8\x73\xad\x26\xa8\x7e\xf1\xf1\x61\xd2\xa3\x6e\x31\x99\xd4\x2a\xd5\xeb\xa2\x73\xcd\xd1\xf5\xf8\x38\xf4\x21\x7e\xdb\x16\xf3\xfe\x71\x96\xd8\x6b\x5f\xec\x56\xb4\x3a\x69\x70\x3c\x97\xa3\xdb\x4d\x1e\xa4\x1b\xe7\x8f\xa4\xb5\xda\x5f\x67\xa3\xe1\x49\x17\x8b\xdd\xba\xec\xe8\x4a\xe7\xb8\xd9\xfa\xf7\xfa\xa4\x91\x37\xae\x17\xb3\xad\x80\xb0\xfb\x18\xac\xa2\x6d\x14\x11\xb3\x9f\xd7\x1e\xdb\xd5\x29\xd3\x49\x17\xfb\xc1\xeb\xd1\x1b\x51\xfa\x35\x65\xbb\xfe\xe9\xf5\xdd\x9f\x8f\xb2\x86\x40\x02\xb8\xa1\x56\x78\x02\x09\xa3\xb9\x64\xcc\x01\x25\xa1\x13\x1e\x74\xca\x18\x28\x81\x84\x46\x30\x67\xb8\x87\x8d\x34\x1e\x37\xc2\xe3\x06\x5b\x0c\x81\x21\xaf\xd5\x64\xbe\x07\xed\x35\x91\x84\x43\x0b\x98\x30\x80\x49\xae\xb9\xa7\x2d\x92\x00\x0b\xc9\xb0\x78\xad\x28\xa6\x20\xf7\xac\x60\xcc\x00\x86\x31\xa1\x48\x28\xc7\x98\xf2\x1c\x57\x46\x82\x57\xca\xbe\xcb\x7e\xf1\x2f\xd9\xaf\x6e\x76\xeb\x4e\x24\xe8\x54\xaf\xa0\x74\x87\xb8\xc2\xc7\x55\x0e\x0f\x41\x11\x0e\xfa\x76\xef\xae\xc9\xf0\x10\x93\x7e\x8a\x77\x8d\xdd\xe5\xd8\x3a\xf5\xc0\x61\x67\x2b\x73\x7f\x53\x69\xad\xef\xed\xd3\xec\xb6\x25\xe1\xe8\xbc\x5f\xec\xdb\xb3\xeb\x3d\x19\x8d\xc8\x4a\x1d\x48\x73\xf1\xb6\x96\x2d\xde\x9f\x63\x50\x3f\x82\xf3\xc5\x2c\xcf\xc8\x42\x32\x69\x4f\xb2\x71\x75\xbe\x59\x46\xa0\x31\x8d\xbd\x75\xc5\x9b\x01\x11\xab\xe5\x66\x72\xf4\x6a\x8f\xda\x2e\x49\xa6\x32\x0b\xf6\x2e\xd9\x74\x5a\xd3\x4e\x6b\x4c\x40\xd8\x6f\xd7\x29\x8b\x55\x3e\x7e\x14\xbd\x79\x75\x72\xd8\xe0\x8b\x0c\x5e\x29\x9b\x7f\x83\xb2\xe1\x27\x07\xff\xe7\xa3\x2c\xd2\x16\x7a\xd4\x79\xd4\x41\xe0\x38\xe2\x96\x08\xf8\x12\x18\x49\x49\xe9\x6b\xc8\x4e\x98\x43\x82\x7b\x86\x58\x40\x2d\xe5\x8e\x71\xc4\x38\x79\xf1\xa5\x56\x72\xf0\x49\x53\xfd\x0e\xb4\xe7\xd0\x38\x66\x09\xe5\xc6\x28\xa4\x14\x84\x9e\x93\x0c\x12\x06\x28\xd1\x1a\x38\xa3\x2c\xb7\x5a\x61\x47\x01\xa0\x9a\x48\xe5\x71\x63\x19\xc6\xd4\x60\x88\xad\x31\xf6\x85\xb2\xef\xb2\x5f\xfc\x4b\xf6\x2b\xcb\xfb\x81\x37\xda\xae\xc3\x85\xb6\x6b\x75\x3d\xcf\x2a\xcd\x84\xe3\x62\xdb\x4a\xc6\xca\xb3\x25\x3a\xad\xbc\xf9\x08\x54\xd2\x1c\xc6\xe9\x6a\x2c\x77\xa2\xb6\xa8\xc4\xd3\xf5\xd1\xb7\x20\x3a\x77\x27\x3d\xd5\xeb\xad\x76\xcb\x68\xe2\x3a\xbb\xde\x4d\x97\x99\x3e\xdd\x2f\xf6\xed\x4c\xae\xe2\xdd\x5a\x76\x2c\x80\x3c\xde\xb6\xc9\xa0\x61\x38\xb8\x2d\x3d\xda\x9e\x1d\x8b\x6c\x39\xc7\xe7\xde\x78\x36\x6d\x1e\x2e\xe9\xee\xc1\x72\x8b\xe9\xb5\xb8\x61\x44\xeb\xce\x1c\x0f\xc7\x62\xc3\xc6\xfd\x71\xbd\x4c\x23\xef\xb2\xe1\xed\x2e\xf4\xeb\xb7\xd6\x79\x84\xd7\x29\x04\xb7\xee\x09\xbf\x52\xb6\xff\x0d\xca\x46\xf0\xf5\xdd\x9f\x8f\xb2\x58\x19\xa6\x30\x73\x00\x30\xa2\x3c\x84\x25\xb2\x04\x6a\x07\x1c\x21\x42\xa1\x57\x0f\x89\x39\x31\xd2\xd3\x5a\x63\xe6\x19\xac\xb4\xf2\x0c\x50\x52\x2a\xa1\x3e\x27\x5b\xbf\x07\xed\x2d\x34\x0e\x7b\x0a\x2b\xa8\x80\x90\x9c\x4b\x44\xa9\xe2\x0e\x69\x81\xb9\xd2\xd0\x72\xa9\x25\xb3\x1c\x70\x2d\x0d\xa5\x0e\x41\x85\x18\xd0\xc4\x21\x2d\xad\x94\x52\xbf\x50\xf6\x5d\xf6\x4b\x7c\xc9\x7e\x85\x8f\xd9\xca\xad\x5c\xad\xab\x37\xb4\x11\x57\x2d\xdb\x0d\xb2\x50\xd5\xd4\x7d\x46\x61\x27\xb0\x83\xea\xe4\x3e\x01\xdd\x63\x75\xaf\x9b\x67\x7e\x66\xeb\xee\xb6\x12\x55\x89\x19\x3e\xc0\x78\x1e\xed\xef\xa5\xbe\xcf\x48\xa0\x07\xa6\x76\x32\x1d\xe8\xdd\x96\xe7\x23\xec\xcd\xdf\x52\x09\xbd\x77\x90\xbb\xd1\xc0\x75\x7b\xde\x22\xd8\xcf\x4a\xf7\x20\xed\xf9\x65\x3c\xee\x7a\xea\xb4\x39\x57\xf6\x57\x57\xdd\xef\x06\xe3\x36\x4f\xa6\xca\x4f\xf1\x0c\x3f\xd6\x8f\xa3\x0a\x5b\x86\x35\x07\xa7\x6a\xbb\x91\xf1\xab\xb5\xc7\xdd\x59\x27\xf7\xd3\xc0\x35\x54\x73\x7a\xeb\xb6\x5b\x6c\x7f\x78\x69\x38\x1a\x7f\x83\xb2\xb1\xf7\xfa\xee\xcf\x47\x59\xc1\x08\xe2\x08\x08\x43\x81\x94\xf6\x25\x6a\x77\x14\x21\x03\xa5\x27\xa5\xb6\x0c\x69\x47\xa5\x67\x2d\xd1\x9c\x79\x8a\x58\x85\x5e\x5d\x1f\xa7\xc8\x2a\x23\xd8\x6b\x8d\x82\xef\x42\x7b\xea\x21\xf5\xd2\x9f\x07\x21\xe3\xda\x11\x8d\x89\x95\x04\x2a\xe4\x30\xd7\x82\x6a\x20\x3d\xc2\x14\x06\x04\x00\x0f\x1a\x6d\x21\xf7\x84\x70\x8a\x48\x61\xa8\x01\xf2\xa5\x0d\xfa\x2e\xfb\x25\xe0\xdb\x16\xef\xe1\x11\x09\x7f\xd2\x5e\x2e\xb6\xe7\x5c\x8b\x6e\xd1\x38\xae\x0e\x41\x8e\x4b\xb9\x49\xaf\x68\x53\x5e\xda\x9b\xfc\xbc\x3f\xb7\xdd\x0c\xca\x1d\x5c\x94\x13\x72\x5a\xdd\x48\x59\xee\x47\x95\xbb\x8d\xbb\x87\x92\xf5\x1f\xed\x68\x10\x9c\x4e\x5b\x9f\x36\x33\xc9\xc2\xc5\xe4\x2d\x95\xd0\x7b\xb7\x96\x4d\x3a\x67\x10\x14\x15\x44\xcb\xe8\xae\xc7\xdc\xe8\xac\x77\x1f\xe8\x25\xdc\xdc\x27\x41\xb8\xf4\x83\xfa\x64\x74\x5d\x2c\xe7\x9a\xa2\x62\xd2\x12\x74\xbe\x2c\x26\xc2\x4b\xb3\xce\x2e\x38\x5e\x32\x31\xd3\xe1\xae\x38\xa4\x35\xbf\x99\x68\x32\x5a\x37\x2a\x60\x9f\x8d\xf2\xed\x6b\xf8\xa5\xbf\x41\xd9\xc6\xec\xf5\xdd\x9f\x8f\xb2\xca\x72\x69\x18\x60\x5c\xbc\x92\x4e\x29\x46\x0c\xa5\x4a\x00\xab\xb9\xb3\x1e\x23\x46\x02\x0f\x79\xd6\x18\x08\x1c\x62\x1c\x48\x8e\x38\x50\xd0\x39\x6c\x0c\x93\xaf\x1e\xf2\x7b\xd0\x5e\x60\x66\x10\x51\x42\x08\x03\x15\x17\x5c\x49\x23\xb0\x06\xf2\xe5\x8b\x4e\x71\x4d\x0d\x47\x4a\x0a\x4b\x99\x21\x5a\x33\x22\x99\x51\x0c\x5a\x80\xb5\x42\xc4\xb3\xaf\x5e\xf6\x5d\xf6\x4b\xbc\xd5\xfd\x9a\x84\x7a\xba\x18\x84\x7b\x02\x59\xb7\x3f\x07\x72\xbd\x7f\xac\xdb\xdd\xe1\x8e\x2f\x6f\x68\x0d\xd8\x7d\xdc\x1f\x27\xfd\xf3\x65\x3c\x5e\x6e\x95\x7f\x4e\xbc\x6c\x7f\x4b\x96\xdd\xb2\xd6\x48\xfa\xfb\xbe\xac\x11\x0f\xe1\xeb\x23\xca\xe2\x7e\xdf\x9d\x2a\x87\x46\x50\x8b\xab\xab\xb7\x3d\x06\xbd\x77\x6b\xd9\xb3\xb9\x34\x5a\xca\xd4\xf3\x0e\xd3\x9b\x7d\xb0\x72\x7e\x0e\xf6\xd7\xf9\x45\x94\x55\xb5\xbd\x56\x87\xdd\xb2\xe1\x67\xdb\x6a\xad\x28\xe2\x48\xf5\x7a\x64\x9e\xc5\x78\xc6\x0f\xe3\xae\xbf\x8b\x83\xea\x49\x8c\x46\x2d\xb6\x58\xa9\xfe\x23\xee\xad\x11\x4a\xa6\xdd\x76\xb3\xc9\x5f\x1a\x8e\xa6\xdf\xa0\x6c\xab\xfe\xfa\xee\xcf\x47\x59\xa6\x1d\xc2\x8a\x2a\x4f\x68\x02\x3c\xe2\x79\x02\x70\x40\x00\xb6\x10\x63\x84\x84\xd2\x9c\x72\xcf\x11\xcd\x3d\xc0\x90\xe4\x40\x63\x60\x81\x07\x20\x55\x54\x28\xc6\x3e\x55\x46\xfc\x1e\xb4\xff\x0e\x94\x7d\x97\xfd\x12\x5f\xb2\x5f\x6d\xca\xe0\x74\x42\x8e\x48\xb4\x4f\x4b\x38\x38\xfb\x3c\xa9\xee\x26\xd9\xb6\xd9\xb2\xb8\x88\xee\x93\xeb\xee\xae\xdb\x49\xb5\x6b\xe4\xae\x1c\xa4\xab\xc1\x11\x72\xdc\x3f\xe7\xb3\xf9\x1e\x35\x47\x93\xaa\xd7\xeb\xd7\x92\xa1\x9f\x87\x0b\xd4\x39\x2a\x48\x92\xee\xf1\x5a\xf3\x3f\x9d\xe0\xf6\x4a\xd9\xf7\xfb\x65\x1f\xde\x6c\xed\xf7\x76\x6d\xef\xe4\x0f\x6e\xcb\xd3\x2d\xc2\xa3\x5e\x67\x87\xe7\xa7\x5b\xef\x52\x5b\xa7\xcc\xef\x2f\xaf\x41\x8f\xd4\x8a\xf5\xef\xa4\xec\xf2\x4f\x43\xd9\xbf\xfc\xe5\xef\x7f\xff\xcb\xdf\xff\xfe\x4b\x24\x4f\xf2\x17\xb7\x3d\xfc\x92\xc9\xb5\xfd\xc7\x2f\x5b\xe7\xec\xe1\xf8\x3f\x7f\x29\xef\x3b\xfb\x8f\x5f\x4a\x3f\x68\xd7\x7e\x89\xfc\xd2\xff\x9f\xbf\xf4\xf4\xcc\xae\xe5\x3f\x7e\xd9\x9d\xd5\x6a\xae\xff\xe7\x2f\x9d\xeb\xc6\x1e\xfe\xf1\xcb\x4b\x23\x7f\xf9\x97\x01\xf0\xa9\x89\x37\xe6\xc7\xfe\x28\xad\x13\x5c\xc6\x93\x64\x88\xf3\x0c\x17\xb5\x4e\xdf\x47\x7d\xda\x1d\xd2\xa0\xf4\x8b\x51\x1c\x8f\x9b\xb8\xd9\xa8\x27\x43\x3c\x2e\x59\x5e\xb4\x8a\x36\x0e\xbb\xdd\xfe\x7f\xfd\xed\x17\xf8\xb7\x5f\xc0\xdf\x7e\xc9\xfa\xed\xf6\x3f\x7f\xbf\x4c\xea\xfd\x5e\xf4\xc2\xe4\x27\xda\x45\xe0\x9f\xaf\xd7\x16\xd1\xdf\x7e\x01\xff\x83\xbe\xf6\x05\xbd\x0f\xc3\xf9\x2b\x6b\x02\x94\x37\xc6\x25\x6a\xf8\xfd\x7a\x5a\x8c\x5a\xed\x5e\xbb\xdd\x2d\x6a\x61\xc8\x3a\x61\x27\x6e\xa6\x7e\xd4\xeb\x96\x45\x8b\x97\x71\x56\xa2\x5e\xbd\x40\xe3\x78\x18\xf9\xc5\xcb\x15\x93\x7f\xbd\xfc\x3f\xde\xd0\x47\x4c\xfe\xc5\x18\xf8\x4f\xd8\x10\xf9\x6f\x4d\x61\x71\x86\xdb\xcd\xfe\x90\x35\xc7\x05\xaf\x45\x9d\x26\xe1\x83\x20\xe1\x11\xa1\x29\x69\x0e\x93\x51\xdc\x62\xed\xa4\x59\xf8\xb5\x06\x6d\x06\xbd\x0c\x45\x41\x3e\xe6\xf9\x8b\x0b\xf8\x60\xca\x1f\x6e\xe8\x83\x29\x1f\x6e\xcc\x97\x1f\xc4\x7e\x9c\x2d\xec\x57\x49\xf6\xc7\xdb\xfd\x55\x5b\xfe\xcd\xf0\xdb\xd9\x3f\x32\xfa\xfe\x5d\x63\x2f\xdf\x3d\xce\xf6\x67\x7b\xb6\xdf\xb1\xcd\xe3\x59\x7d\xaf\xd6\x8e\x7a\x37\x9b\x1f\x4f\xdb\xc3\xfd\x29\x8f\xf3\xd6\xcc\x7b\x42\xb4\xc3\x91\x8f\x6b\x28\x0c\x69\xca\x63\x9f\x0c\x27\x64\xe4\xfb\x79\x9c\xc7\x49\xd4\x6e\xe2\x3a\x69\xb1\x11\xc2\xc3\x30\x4c\x50\xaf\x1e\x30\x94\xc5\xdd\x38\xab\x8d\xff\xeb\xd5\x1d\xbc\x4e\x69\x7e\x7d\x7c\x98\xa2\x32\x9f\x99\x89\xb8\x76\x86\x8f\x3b\xf1\xf3\xcc\xbf\xdd\x0e\xe5\xf1\x52\xb7\x97\x83\x99\x85\xdd\x7d\x91\x57\x00\x78\x3c\xde\x9c\xeb\x6b\x2a\xf1\xb5\x36\xc9\xeb\x94\x51\x9b\xd3\x55\xcd\x5e\x60\x01\xf5\xee\x94\xee\x9b\xf7\x81\x60\xdd\xf6\x65\x32\x5b\xf6\x57\xbd\x7c\xe9\x0d\xae\xbb\xee\x3a\x46\x95\xf9\x59\x7d\xda\x65\x11\x4c\x44\xc7\xff\x34\x4f\x4c\xbf\xfc\x0a\xde\x1a\x7d\xfd\x77\xe4\xfb\xfe\xe6\xdd\x33\xc9\x41\x44\x8a\x5e\xad\x71\xab\xc6\xba\x3b\xa8\x2e\x47\x87\x9e\x7a\x0c\x19\xc9\xf7\xb4\xb5\x3e\xee\x71\x69\xf3\x0b\xe4\x14\x35\x2a\x05\xec\xbf\x36\x07\xc9\x6a\x3b\x14\xfb\xe6\x31\x3e\x5c\x22\xa7\x33\xd1\x39\xed\x7d\xcd\x64\x6b\x51\x2d\x3d\xed\x15\x76\xb2\xb3\xf9\x31\xe9\xaf\xe3\x63\xc7\x5f\xac\xee\xf1\x40\x15\xc7\x25\xe8\x95\x83\xa0\x6c\x27\xf5\xa6\xaf\xd9\xe5\x5a\xe9\xdc\xd5\xf5\x02\x1a\x8d\xc9\x8e\x8b\xd5\x3a\xb8\xfe\xaf\xff\xf5\x71\x35\xf4\x9d\x6f\x0d\x7e\xea\xd6\xa4\xff\x7a\x6b\xa2\xa0\xde\xbb\xde\xd7\xd7\x49\x75\xb4\x3b\xf8\x78\x52\x8d\x92\xeb\x7e\x6b\xcd\x60\x90\xf4\xed\xa9\x4e\xc7\x8d\x72\x07\xb2\xb4\x20\x43\xb8\x7b\xbb\x35\x83\x0f\x93\xe9\xef\x86\x9e\x2e\x8e\x87\x4e\x94\x3e\x92\x92\x87\xeb\xe2\x71\x0d\xcf\x95\x49\xd4\xde\xb6\x9a\xe9\x7e\xb6\x49\x5b\xed\x5a\xe5\xd8\xeb\xb4\x1d\xee\x21\xc4\x4f\x5d\xb8\x70\x63\x74\xb6\x0b\x6f\xb0\x6a\xf3\xed\xea\x76\x6e\x37\xc2\xcb\x3e\x54\xd7\x00\x0d\xfd\xa9\x1a\xe2\x7c\x2b\x62\x1d\xf9\x3f\x1c\x7a\xf2\x14\xf4\xf9\x47\xe8\x17\x56\x84\xc5\x85\x3b\x7a\x1c\x8e\x93\xc6\x6a\x91\xac\xa7\xf1\xb0\xb7\x1d\x8e\x5b\x5e\x73\x2d\x6f\x92\x1e\x37\xed\xd1\xa4\x07\xbd\xe3\xf4\x0b\xf4\xc3\x67\xa1\xd7\xd7\x72\xb9\x22\x9b\x64\xdd\xda\x83\xc2\xe9\xdd\xe8\x36\x59\x9f\x0a\xb2\x1d\x7b\x81\x1f\x25\xdb\xe6\x61\x6e\x57\x71\x1d\x85\xc9\xf9\x01\x1e\x71\x6b\x7a\xf7\x87\x6c\x7e\x80\x7c\x12\x6c\xe6\x9d\xba\xe6\xdb\xfd\xad\x57\x4b\xa0\x0d\x6a\xf5\x9a\xaa\xc4\xa8\xba\x74\xd8\xff\xf1\xac\xa7\x4f\x41\xdf\xff\x00\xbd\xdf\xed\x6d\xca\x7b\xa5\xb7\x7b\x5c\x3a\xb9\xcf\x5d\xe3\xd8\x4c\x8c\xd8\x1d\xea\x5d\xd3\x1c\x79\xc3\x7a\x7f\x39\x6b\xb4\xfb\x93\x84\x6f\x61\xfe\x05\xfa\xd1\xb3\xd0\xfb\xf5\xb4\xea\x40\x2c\x70\x0c\x36\xa0\x47\x4d\x45\xd9\xc5\xb0\x71\x8f\xd2\x24\x3d\xb7\xfa\xcd\x6d\x75\x7b\xce\xfd\x46\x4a\xf5\xdd\xdf\x17\x9e\xac\x53\x51\x17\x90\x95\xeb\x6c\xcd\x97\xc3\x7d\x7c\xf3\xba\xbb\xc7\xa8\x92\xef\xd7\x8e\x25\x28\x5c\xaf\xf9\xa4\x95\x45\xf9\x0f\x87\x9e\x3d\x05\xfd\xf8\x03\xf4\xe1\x40\xf6\x87\xa6\xbe\x9b\xb5\xe7\x2f\xe1\xfc\x9a\x03\x57\x12\x5f\xa0\xe6\x3e\x1e\x6e\x9b\x65\x4b\x47\xfd\x6a\xbb\xb6\x4b\x77\x96\xbe\xb1\xfe\xe3\x7e\xd1\xdf\x0d\x7d\xb2\xe2\x2e\x8f\x3a\x48\x0c\xb5\x21\xab\xfa\xd6\xa7\xda\xb5\x5a\x83\x2c\xd8\x6e\x46\x45\x63\x26\xba\xa4\xde\xe9\x1c\xd2\x71\x87\x77\x8c\x9e\xe2\x69\x30\x98\x67\x29\x1d\x85\x59\x75\xb7\x7e\x98\x9e\x0a\x59\x0d\xd7\xd0\xd4\x3b\xa7\x63\x32\x5b\x6f\x1f\x61\xdd\x1b\xff\x04\x87\xc3\x9f\x82\x5e\x7f\x64\x7d\x15\x17\x33\x57\x3c\x2a\x97\xf5\xa4\x3a\xec\xf3\xf5\x06\xdd\xd5\x6d\x5e\xb9\xa4\x8b\x01\x48\xd6\x9b\xa0\xe8\x41\xde\x18\x94\x1c\x77\xde\x7c\xfd\xe4\x59\xe8\x47\xe7\x6c\xbf\x1d\x57\xa7\x41\xc3\x84\xdb\x41\xda\xab\xb7\xad\x8c\xdb\xb7\x4a\xb5\x3d\x98\xc6\x13\xc7\xf7\xed\xee\x62\xae\x2e\xd7\x5b\x45\xa9\xab\x1b\x2d\xc8\x66\x76\xaf\xf7\x24\x6c\x39\x7b\x2b\xe2\xd5\x92\xe6\xcd\x47\xdc\x1f\x64\x3d\xb2\x63\xc5\xee\x02\xbb\xfb\x10\xfe\x04\x87\x23\x9e\x82\x7e\xfa\x91\xf5\x6a\x3a\xf1\xca\xc9\x76\xb1\xee\x98\x4b\xf5\xd4\x9e\x3d\x52\x99\x0c\x93\xf8\x5c\x59\x35\x81\x5b\x8c\xd5\x34\xa0\x60\x78\x8c\x56\xee\xfe\xe6\x70\xe4\xb3\xd0\xa3\xdd\xe9\x38\x5b\x74\x87\xf1\xfe\x0e\xbb\x2d\xa8\xf7\x32\x15\xd9\xfd\x7a\x29\xea\x05\x5b\xcf\xf2\x5e\xc0\x72\x83\x1d\x04\x72\xb7\x03\xa7\xc1\x64\x68\x45\xef\x34\xf7\xb2\x71\xc7\x54\xce\xa5\xea\xbb\x5d\x73\x1e\xee\x17\x83\x4a\xcc\x41\x92\x17\x06\x77\x6a\xcd\x34\xfc\xf1\xac\xf7\x9e\x82\x7e\xf9\x01\xfa\xa8\x6a\x6d\xb3\xbd\x2f\x3a\xa7\x5b\xc5\x13\xe4\x18\x93\xbb\xf6\x6a\x8b\x59\xed\xb2\x5e\x86\x7c\xd5\xe1\x65\xd0\x19\x94\x69\x0f\x94\x9f\xce\x5e\x78\x85\x5e\x3d\x0b\xfd\x2c\x9f\xee\x27\x2e\x9e\xa7\x2a\x79\xf8\xbd\x62\xb2\x99\x8c\xec\xb5\xd5\x06\xbd\x13\x63\x31\x0d\xef\xe1\xf9\x62\x6b\x79\xaa\xc8\x80\xdf\xea\x33\x3b\x3e\x55\x32\x9b\xd4\xab\xcb\x63\x77\x57\x2b\xf0\x40\xd6\x2a\x53\xe6\xed\xcf\xfb\x28\x4a\xef\x3c\xda\xc8\x6e\xfb\xbe\xfd\x09\xbe\x1e\x82\xa7\xb0\xdf\x7e\xc0\xfe\x65\xcc\xdf\x97\xa2\x3b\x33\x15\x3b\xb0\xf1\x25\x4e\x53\x05\x76\x83\x76\xde\x01\xa6\x7f\xa9\xdc\xce\x9d\x5d\x6d\x95\xb6\x36\x57\x1c\xbf\x79\x9c\x8f\x25\x0b\x7e\x37\xf6\xa7\x1e\x8a\xce\x6b\x9b\x57\x41\x12\x9a\xd5\x60\x5a\xcb\x77\xd1\x0a\xdf\xb7\x7c\x50\xd0\xe6\xd2\x4c\x36\x41\x39\x9b\x8d\xfc\x34\x85\x46\x8d\x2e\xd9\x62\x99\x79\xa7\xd5\xe8\xec\x88\x24\xcd\xc5\x65\xdf\x8a\xa2\xcd\xfd\xb4\x59\xf5\x2a\xab\xc5\xb4\xd3\xf3\xc6\x15\x20\x6c\xf8\xe3\x3d\x0e\x84\x4f\x61\x7f\xfc\xc8\x7b\xde\x9a\x56\x57\xa8\xe4\x8f\x93\x5a\xf7\xe3\x5a\x72\x19\xdf\x4f\xae\x1f\xa1\xe8\x38\xbc\xc3\x92\xca\xd3\x9e\x21\x9c\x6b\xff\xf3\x33\x6f\xaf\xd8\x9b\xa7\xbd\x3d\x50\xcb\xfe\x89\x2c\x0a\x6e\x6d\x6b\x5b\x51\xe5\x30\x6f\xb6\x13\xbb\x6d\x1d\x36\xd0\x36\x82\x01\x3a\x2d\x96\xf2\x2a\x6a\xe7\xb2\xa1\x6d\x73\x71\xef\x6c\x67\xae\x08\x5b\xcb\xd5\xa1\x82\x71\xb2\xb8\x46\xaa\x8e\x2e\x5b\xa3\xaa\xf7\x63\x61\xb6\xbd\xb0\x7f\x1a\x09\x7f\xfa\xe3\xb1\x7f\x2e\xe0\xbd\x7e\xe4\xbd\xd7\x9f\xf1\x0a\xbb\x86\x55\x4a\xe6\xad\x9a\xa9\x2f\xd2\x5e\x50\xb9\x0e\x47\xb4\x79\x1b\xef\x1f\xfb\xee\x36\x1d\x90\x7d\xef\x4c\x5a\xe8\x0d\x7b\xfb\x2c\xf6\xcb\x8e\x6b\x6c\xea\xa9\x98\xcc\xa2\xce\x6a\xd1\x9b\xdf\x9d\xdd\xac\xe1\x51\xdc\xab\xab\x6d\x75\x12\x9c\xb6\x6b\x00\x0f\xdb\xd6\x75\x07\x2b\x5e\xa5\x7e\x3d\x9d\xd3\x2a\xb6\xae\x59\xe8\xd9\x72\xb7\x69\x34\x1e\x31\x3b\x9d\x17\x9d\xea\x31\x1b\xb6\x2e\x03\xb3\x9c\xb4\x8e\x26\xf6\x7f\xbc\xbb\x87\xcf\x45\xb4\xe0\x23\xef\xb1\x89\xf0\x02\x8d\x6b\x7a\xd7\x1d\xef\xc8\xb0\x79\xbf\x2f\x9b\x9b\x7b\x3f\x62\xa6\x97\x3a\x84\xbc\x41\x9f\xee\x77\xb7\xda\xd4\xf3\xdf\xa6\x5a\xf7\x2c\xf6\xfe\xb0\x97\x8e\xc7\xc7\x4e\xd7\xdb\x9a\x4b\x85\xb3\x71\x7f\x9b\xd4\xf2\x6a\xbd\x55\x1e\x27\x30\x3f\xdb\x1a\x71\xdd\xa5\x5f\x6b\x26\xeb\x35\x3a\xd0\xc9\xa0\x9a\xed\x2a\xa5\xd8\xaa\x31\xd9\xe3\xc1\xf8\x54\xef\x11\x80\x14\x20\x8f\xe6\xe2\xea\x17\xb7\x2e\x37\x5b\xbc\xf9\x09\x53\x2d\x7c\x2e\xa4\x25\x1f\x79\x3f\x1d\x4f\x16\xf0\xd1\x3e\xe3\x62\xbb\xaf\x56\xf3\x83\x45\x0f\xaf\x31\x19\x81\xde\x22\xe9\xf0\x9c\xde\xba\x95\x4e\x4f\x2e\xac\x3f\x7d\xc7\xfb\x8f\x47\x21\xfe\x7e\x21\x87\xdd\x9b\xd3\xae\x7f\x3d\xdd\x56\xc3\x5c\xc3\x7a\x78\x12\xea\x14\xea\x74\x8a\xa7\xe3\xf6\x3d\xe0\xad\xe4\x26\x66\xbd\x8d\xe9\x34\x0c\xa9\x86\x09\x98\xc7\x8a\x85\x13\xbc\xe4\xf5\x7a\x33\xdc\xdc\x2e\xdb\x47\xd7\xce\xca\x41\x67\xd9\xaa\x36\x07\xf7\x72\xbf\x18\x9e\x70\xf0\x13\xb0\x7f\x2e\xa6\x15\x1f\xb0\xf7\x2b\x6b\x77\xb7\xf7\xc5\xa3\xc3\xc8\x60\x93\x06\x73\xb4\xf7\x07\x7c\x5b\x9e\x00\x1a\xee\xc5\x4d\xec\xee\x97\x6d\x84\xc3\x4a\x72\x1b\xbe\xf1\x7e\xf6\x2c\xf6\xc1\xaa\xad\xb6\x53\xe7\x8f\x6a\x61\xea\x1d\xc5\x6c\x7a\xa8\x37\xc2\x59\x95\x0f\x8f\xa7\x7b\x37\xbc\x9b\x5e\xb6\xea\x07\x39\xd4\x53\xb6\xee\x14\x79\x7f\x23\x4e\x1b\x32\xaf\xe3\xb2\xdf\xda\x9d\x2f\x97\xf4\xbc\x60\xe7\x7c\xdd\x7d\x68\x12\xd9\xc5\x39\x7b\x54\x8d\x7f\x55\xd1\x4f\xf0\xf7\x4f\x05\xb5\xaf\x52\xe4\xbf\xf8\x1c\x8b\xa4\xdc\xf5\x9a\x73\xb4\x34\x5d\xb4\xbe\x2e\x96\xb7\x70\x5d\x5d\x65\xad\x86\x89\xf4\x31\x6b\x2f\xd7\x95\xa6\xae\xc5\x62\x09\x77\x6f\xd8\xcf\x9f\xc5\x7e\x47\x4d\xbb\x24\x13\x2f\xa1\x87\xcb\xe9\x6e\x0e\xbd\xee\xe9\x5c\x1b\xf9\x21\x63\x8a\x4d\xed\x8a\x7a\xb3\xc3\xd4\xac\x0e\xe7\x0c\xc2\x73\x51\x32\xc7\xd1\xee\xb8\x8f\x66\x4b\x72\x58\xdb\xc6\x0d\x94\xb5\xfa\x9c\x25\x73\x4f\xce\xfc\xf3\x31\xae\x76\xe6\xcd\xf3\xe1\xf8\x33\x7c\xce\x53\x51\x6d\x50\xfb\x88\x3d\xcb\x06\xbb\xad\xb2\xbd\x5d\x7a\xa6\x63\x1d\x4d\x06\xfc\x36\x53\xb3\xbc\x06\xd6\x64\xe6\xdf\xb2\xbd\x57\x39\x99\x83\x2f\xd8\x83\xbc\xf9\x9c\xc5\xb3\xd8\x57\x13\x6c\x46\xed\x29\x38\xae\xe2\xb6\x69\xbb\xf5\x7d\x51\xbf\xd7\x26\x93\xcb\xd1\x8f\x86\xdb\x0d\x1d\x87\x93\xa8\x75\xf3\xce\xbb\xd5\xfd\xbe\x1a\x35\xb1\x00\x71\x6d\x7c\x58\x1c\xc3\xf3\x9c\xa8\xaa\x03\xb3\xcb\x76\x39\xac\x54\xea\x5e\xa3\x8e\x83\x7e\xbd\xe5\x0b\x33\x78\x04\x3f\x81\xf7\x4f\x85\xb5\x41\xe3\xa3\xbf\x5f\xe1\x55\x5a\xbf\xef\x9b\xcb\x2a\xef\x1d\x1a\xb3\xf6\xda\x5f\xad\xad\x9b\xc5\x67\xef\x72\x6f\xf5\xed\xcc\x0f\x2b\xe9\x44\xd7\xf0\x7b\x9f\xf3\xf1\x20\x9b\xdf\x1f\xd6\x36\x2f\xa7\xfe\x42\x8e\xf6\xaa\x35\x6f\xf8\x4d\xb7\x24\x39\x3d\x60\x3a\x11\x49\xbb\xd8\x4c\x77\xad\xe6\x69\xdc\xe2\xb4\x8b\xae\x97\x70\xdc\xe9\xf4\xdb\xbd\x55\x2f\x9c\x8f\x60\x75\x11\x26\xae\xa8\xce\xfb\xdd\x68\xac\x16\x95\x01\xdd\x8e\xdd\x68\xa3\x91\xd7\x59\xf9\xd7\xe0\x27\xc4\x56\x4f\xc5\xb5\xc1\x47\xe5\x3e\x9a\x6e\x7b\x37\xdb\x33\x27\x1a\x6d\x6e\x8d\x9d\xca\xd0\x31\xb2\x5b\x40\x06\x8d\xfc\x38\xbb\xcb\x5e\xed\x50\x8c\x32\x75\x3c\x8e\xa0\x7c\x8b\x6b\x57\xcf\x62\x1f\xf5\x57\xcb\x26\xce\x36\xa3\xd5\x54\xec\xaa\x9d\xc3\x10\x85\x3b\x71\x34\xcb\xfe\x71\x3a\xef\x77\x73\x72\x3b\x66\x7a\x30\xba\x7a\x95\x01\xba\xb5\x2a\xc5\x62\x86\xab\x3a\xa8\xc7\xec\xbe\x9f\x2f\x9b\xeb\xe5\xa5\x89\xf8\xee\x7c\x35\xd5\xb9\x1d\x9e\x5b\x50\x90\x2c\xf1\xf5\x4f\x50\x73\xd0\x53\x71\x6d\xf0\x51\xba\x8f\x04\xde\x4f\x0f\xcb\x5b\x78\x9e\x25\x53\xb9\x5d\xc8\xf5\x71\x5f\xf4\x44\xe9\xda\x1d\xdd\x6e\xab\x0d\xd6\xf2\xd1\x18\xe6\xb2\xe7\xb5\xdf\x7c\xce\xfa\x59\xec\x37\xd5\xe9\x24\x48\xb8\x58\x14\x45\x85\xec\x8a\xca\x63\x3c\xbe\x0e\xce\x93\xd3\x20\xdf\x86\x6c\xb8\xdf\x32\x97\x54\xf2\x28\x17\xa0\x81\x9a\xf9\x79\x48\x26\x8f\x9d\x39\x56\x4e\x4b\xbc\xb0\xe7\x51\xda\xad\xa6\x6d\x6f\x76\x18\xf4\x92\xac\x13\xef\x87\xb5\x7e\x9a\x4e\x93\xe1\x4f\x10\x31\xd1\x53\x71\x6d\xf0\x95\x76\x3f\x28\x57\x65\x3e\xbb\xdd\x83\x6b\xb4\x06\xf9\x6d\x3d\xbe\x90\x4b\x33\x9b\x4c\xab\x6a\x6c\xea\x85\x1c\xc1\xb0\xb3\xec\x80\xd1\x9a\xb6\xde\x7c\xce\xe6\x59\xec\x8f\xdb\xf6\xb1\x75\x0b\x3a\x71\x9a\xb5\xaa\xb2\xfa\x40\xa0\x3b\x5d\xa2\xc3\xfe\x7c\x4e\xc2\xee\xa8\x56\xc4\xec\xbc\x0b\x47\x97\xf6\x3d\x1d\xb3\x6e\x14\x75\x9b\x2b\x34\x39\x07\x77\xd4\x03\xb3\xac\x82\x6b\x49\x7c\x9c\x5d\x13\x4f\x1a\xaf\x7b\x4f\x3d\x73\xeb\xcc\xe7\xa0\xf1\x33\xb0\x7f\x2a\xae\x0d\x3e\x8a\xf7\x51\x07\x9f\x6e\xf5\xf3\x75\xe1\xe7\xbb\x9a\xb7\xa7\x8b\xde\x9c\x1c\xbd\xc5\xb9\x87\x8e\x37\xff\xb1\xde\x6d\x23\xd9\x82\xb3\xa2\x7b\x44\xa3\x37\xf1\x7e\xfb\x2c\xf6\xea\x4c\x6f\xfa\x86\x68\x74\x5a\x8c\x93\x98\xe5\x8d\x06\xcb\x56\x5d\x5a\xad\xac\x6a\x87\xfa\x48\x3a\x9b\x98\xe9\xde\xf5\xc9\xe4\x01\xca\xa4\x3c\x28\x50\x5b\xb6\x46\x7b\x75\x4f\x6e\x45\x0e\x9d\xdd\x57\xcf\xcb\x59\x0d\x5c\x93\xb5\x19\x41\x4b\xae\xb5\xc7\x15\xd0\x9f\xb0\xbe\x47\x4f\xc5\xb5\xc1\x57\xea\xbd\x9d\x38\x72\x68\xcb\xdb\x25\x1d\x2d\xd7\x1e\xb9\xe8\x7a\xab\x23\x25\x22\xf9\xe6\x74\xe6\x58\x1f\x44\x20\x72\xb4\x31\xeb\x60\xff\x86\xfd\xee\x59\xec\x61\x3d\x19\x1f\xd6\x8a\x0c\x63\x52\xad\x72\x34\x5c\x76\xb3\xe9\xf4\x30\x1d\xac\xea\x47\x9f\x7a\x7c\x15\xed\x36\xb5\xf1\x7c\x74\xd3\x74\xd3\x89\x0e\x8b\x20\xf2\x2a\x4b\x51\x9d\x5e\xe3\x5e\x7c\x6c\x5c\x35\xc5\xee\xb1\xce\xcc\x54\xdd\x86\xe9\xb6\x6d\x16\x73\x70\x17\x8f\x9f\xa0\x63\xa2\xa7\xe2\xda\xe0\xa3\x7c\x1f\xa4\xd3\x62\xbc\x26\x20\xac\x5e\x56\x6c\x90\x08\xd9\x6c\x8e\x57\x9b\xd3\xf2\x32\x49\xba\xb5\xf2\xa1\x98\x9e\xf4\xc3\xb4\x73\xc9\xe6\xf5\x37\x9f\xb3\x7f\x16\x7b\xeb\xa9\x71\x79\x9f\x24\xf5\x08\x1c\xcb\xf6\x65\x5d\x5d\xbb\x6a\xad\x18\x5c\xda\xa3\x78\x14\xf6\xdb\xb3\x66\x2b\x89\x39\x3d\xd4\x9c\x48\xfa\x17\xec\xed\xa6\x7a\x7c\xec\x76\x23\x89\xda\x47\x8f\x00\xd4\xee\xd4\x77\x70\x7a\x6f\xd3\x6b\xa1\x56\xab\x81\xa0\xa7\x29\xe0\x3f\x03\xfb\xa7\xe2\xda\xe0\xa3\x7e\xef\x93\x15\xed\xeb\xa6\x0a\x07\x6c\xbf\x5b\x5c\x47\xab\xee\x7e\xb6\x02\xbd\x4a\x3b\xf2\x8f\xe7\xd9\x62\x71\x4a\x50\x35\x03\x91\x3d\xab\x77\x6b\xcc\xc3\xb3\xd8\x7b\xeb\xb8\xc7\x6a\x63\x98\x16\x79\xbe\xec\xde\x2b\x7c\x3f\x4e\x96\x73\x7c\xeb\xf5\x92\x29\x9a\x00\x46\xa2\x04\xc5\xab\xcb\x70\x32\x5c\x5d\xae\x3d\x30\x05\x79\x38\xed\x0c\x27\x62\xbd\x8e\xca\xc5\x78\x58\x99\x2e\x3d\x83\xe4\x06\x4c\x88\x2f\x16\x6e\xb5\x29\xfb\xb2\x1b\xfe\xf8\xf5\x3d\x7a\x2e\xae\xfd\xa8\xdf\xfb\x73\x3b\x8f\xeb\x77\xb4\x32\xb7\x28\x8f\x71\x59\x7d\x5c\xfb\xfd\xda\x74\xa8\xd7\xbd\xc1\x70\x43\xf6\x7c\x95\xef\x8a\x93\x8a\xe3\x63\xe5\x6d\x8d\xf9\xf1\x08\xb5\xdf\x8d\xbd\x3b\x57\x75\x25\xda\x80\x81\x95\x8b\xdc\x54\x77\x72\xa9\x51\xf0\x98\xaa\xca\x12\xd4\x02\x3e\xcd\x70\x85\x97\x31\x07\x31\xb4\xcd\xf5\xa4\xef\x9d\xcb\x26\x80\x8f\x51\x95\x9f\x96\xb0\x76\x3e\xe7\xb3\xba\x6a\xd5\xef\x17\xbc\x39\x9c\x1a\x8f\xa1\x5e\x79\xe3\x51\x82\x7e\x42\x5c\x8b\x9e\x8b\x6b\xbf\xd2\xef\xd5\x15\x5e\x48\x7b\x75\x1c\x99\xb8\x3e\x01\xf2\x11\xde\xdd\xfe\xdc\xb7\xf7\xc1\x5a\x77\x0f\xc1\x10\x8a\xc9\x6d\x1f\x5c\x1f\x87\x6a\xfa\xc6\xfb\xd3\xb3\xd8\x33\x96\x5f\x2b\x71\xed\x04\x7a\x57\x1f\x0c\x97\xd9\xd6\xec\x46\x89\x6a\x6c\xc7\xed\x03\x39\xac\x04\x5f\x37\xca\x6d\x30\x55\xf9\x39\xdf\xe3\x3d\x5d\xf5\xb6\xd7\x70\x19\x4f\xc6\x37\x13\x0c\x65\xb3\x96\x4d\x8f\xb3\x73\x39\x3d\xcd\x36\x1d\x79\x07\x75\xde\x9a\x9d\xee\x79\xfd\x27\xe8\x39\xe8\xb9\xb8\xf6\xa3\x7e\x1f\x6d\x2b\xb7\xb9\x67\x87\xf7\xce\x99\xb5\xaf\xb3\xc5\x16\xd8\x7e\x54\xa8\xed\xe4\xec\x06\xb5\x7b\xa7\x1e\xd6\xab\xea\xfc\x20\xd3\x25\xfb\x74\x6a\xc6\x2b\xf6\xe7\x67\xb1\xdf\x67\x8b\x25\x1f\xf3\x69\x35\x66\xfb\xdd\x38\x3c\x86\x8f\xa2\x63\x6c\xab\xd9\x1b\x5c\x2b\xd3\x55\x13\x1f\x3b\x8f\x6d\x5b\x64\xe1\xba\x57\x30\x5c\x6c\x26\x23\xd6\xa7\x7c\xb6\x99\xd4\x7a\x65\x7f\x23\x98\x98\xe6\xf7\xec\xb6\x8e\x9a\xad\xe9\xe4\xc1\x2f\xdd\x3d\xf0\xae\x97\x9f\x10\xd7\xa2\xe7\xe2\xda\x8f\xfa\x7d\xb8\xae\x74\x5d\x6d\xa1\x6b\x9b\xa4\x75\x2e\x3b\xcb\xc9\x39\xd8\xd7\x1f\x97\xc1\x23\xda\x9e\x21\x1a\x07\x34\xac\x6d\xcb\x41\x51\x21\xbd\xc5\x9b\xcf\xb9\x3c\x8b\x7d\x12\x56\xeb\xc2\x2d\xa6\x61\x65\x38\x37\x87\x5e\xb2\xe8\xc3\x14\x9c\x92\x4d\xc3\x5c\xd7\x0a\x79\x64\x23\xf3\x7e\x79\x2d\x48\x2b\x2d\x8f\xc1\x89\xba\xbd\x68\x2d\x66\xbb\x95\xac\xda\x7a\x8b\x6f\xa7\xae\xd7\xf7\x55\x7b\x29\xf8\x65\xaa\xf8\xbd\xb8\xcc\xbb\xf5\x46\xc3\xff\xf1\xd8\xe3\xe7\xe2\xda\x8f\xfa\x7d\x38\x1f\x93\x8e\x1e\xdc\x36\x07\x9a\x43\x0f\x55\x3b\x4a\xa4\x93\xee\xf5\x1c\x02\xd4\x35\x9b\xc3\x72\x9c\xcc\xf4\xa3\xe1\x6d\x54\x47\xbe\xf1\xfe\x63\xc5\x82\xdf\x3f\xd7\xb2\xc1\x75\x1d\x04\x08\x4e\x6f\xd1\x79\xd7\x91\xb5\xce\x68\x44\x96\xed\x85\xba\xd7\x70\x54\xb5\x77\x26\xe7\xac\xbe\x2e\xaf\xfd\x5c\xaf\xcf\xe3\x32\x3f\xad\x4a\xd4\x88\x92\xc7\x7e\x99\xc2\xbc\x7d\xaf\x54\x96\xa3\x18\xed\x3b\x83\xe1\x65\x52\xa5\x8f\xf6\x22\x26\xae\xf7\x13\xe6\x5a\xfc\x5c\x5c\xfb\x51\xbf\x8f\xa6\x82\xf4\x56\x66\xb7\x3e\x14\x5b\xdd\x93\x95\x21\x5a\x6c\x41\x63\xfc\xc8\x41\x61\xd2\xfd\x83\x1f\xd2\x31\x54\x72\x41\xe7\x77\xf7\x86\xfd\xed\x59\xec\xe3\xfe\xc0\xb5\xb3\xe5\xa9\x45\x1a\x77\x1e\x92\xed\x3c\xac\x4f\xab\xba\x70\x0a\xac\x6f\x8b\xc3\xd4\x0b\x67\x70\xe7\x1d\xfd\x1d\xab\xed\xcd\x14\x90\xb0\x72\x17\x6c\x3c\x78\xc4\xc3\x2d\x25\x8d\x74\x77\xbe\xf6\xfc\x74\x25\x71\x51\x2e\xb7\x71\x24\x3a\xcd\x39\xb9\xaa\x9f\x10\xd7\xe2\xa7\xe2\xda\xd0\xff\x80\x7d\x30\x6c\x0f\x56\x8d\xed\xd0\x4e\xd8\x00\x2f\x60\x76\xb3\xcd\x19\x9e\xa7\xfb\x4a\xcd\x5b\x9c\xe1\x06\x0f\x76\x5a\x21\x0e\x96\x75\x2f\x78\x9b\x6b\xef\xcf\x62\x3f\xf5\xea\x69\xde\x1c\xe6\x95\xce\xcc\xd8\xfe\xb2\x7f\xda\x3e\x82\x2e\x2c\x9a\xab\x54\xc1\xa9\x08\x67\x9b\xae\xaa\x3d\x92\xbe\x0e\x2f\xd3\x8a\xa8\x57\xf5\x6e\x69\x2b\xb8\xed\xe7\x78\x1f\xcc\x87\xd7\x43\x9b\xda\xfa\xf2\xba\x40\x75\x71\xee\xa6\x6a\x77\x81\x31\xbe\xdf\x7f\x06\xf6\x4f\xc5\xb5\xe1\x47\xfd\x3e\xdc\x8d\xf3\xd3\xf6\x76\x0b\xda\x9b\x25\x8f\x97\x3d\x20\xaa\x27\x6f\xdc\xb8\xc8\xe1\x79\x16\xc6\xad\xd3\xd2\xad\xce\x83\xc5\x75\x97\xcc\x0e\x6f\xfe\xfe\xf1\x2c\xf6\xab\xa0\xbe\x65\xc7\x70\x20\x23\xb0\x82\x75\xcc\xd5\x39\xcb\x40\xa5\x4b\xa7\x51\xda\x3f\x5d\xe3\xdd\x3d\x9b\x6e\xb2\xd2\xc7\xe4\x56\x39\xa1\xea\xf4\x36\xd4\x7c\x73\x24\xf3\x38\x0e\xb0\xba\x9e\x1a\x71\xa9\x1b\x9a\x0f\xef\xd7\x75\xd5\x1a\xff\x1a\xed\x46\xbe\xd9\xff\x04\x4d\x01\x3f\x15\xd7\x86\x5f\xe9\xf7\x61\x6d\x0a\x76\x5e\xa3\xd9\xbe\xdd\x47\xac\x52\x5f\x55\xf6\x7d\xd6\x9f\xb4\x91\x9c\x23\x3e\x3b\x8e\x22\x42\xf3\x66\xad\xad\xc3\x0c\xbc\x61\xff\xb1\xa6\xed\xef\x9f\x6b\x4f\x15\x55\xf3\xae\xbd\x1b\xdc\xad\xb7\xa7\x32\x9b\x44\x83\x65\xa5\x11\x8f\x17\xa7\x06\x12\x97\xb3\xb1\x8e\x1c\x8f\x68\xba\xc3\x7e\x3d\xa2\x41\xc6\x69\x39\x1d\x0f\xf8\x60\x79\x28\x34\x1b\x45\xed\x72\x14\x14\x2b\x1b\x35\x2a\x51\xa5\x59\x5b\xdf\x57\x26\x9e\x56\xf6\x3f\x41\x43\xc6\x4f\xc5\xb5\xe1\x57\xfa\x7d\x31\x7c\xac\xfd\xb2\x1e\x5c\xe2\x31\x1b\x2e\x6e\x4d\x99\x54\x2e\xaa\x9d\x17\xe5\xc9\x65\xb9\x1e\x54\x2e\xeb\xd6\x76\x7b\x39\x1e\x2e\xcb\x37\x7f\x0f\x9f\xc5\xbe\xed\x55\x74\x36\x9f\x54\xc5\x69\x72\x54\x90\xaf\xd8\xa9\xd6\xa9\x55\x22\x3f\x46\xe3\x86\x51\x9d\xa8\x7e\xa1\xed\x7b\xa4\x8a\xde\x7e\xb3\x39\x43\xd4\xdb\x34\xeb\x9e\xe6\x8f\x47\x7f\xe6\x77\x8b\x87\x77\xab\xcf\x5a\xf9\x69\xe0\x91\xf3\x5a\x0c\xc4\xd5\xef\x56\x78\xe7\xfe\x13\xd6\x98\xf8\xa9\xb8\x36\xfc\x6a\xeb\xfd\x9e\x5d\x6e\x87\xcb\xae\x29\xa6\xa3\xda\x2d\x5b\x05\xcb\x7b\xc7\xdf\xc4\x95\xa2\x9f\xe2\xf9\xb1\x77\x68\xcc\xb4\x92\xe4\x30\xdc\x4f\xde\xcd\xb5\xe8\x69\xde\xfb\xcb\xa2\x68\x1c\x6d\x6f\xc3\xf7\x69\x5a\x76\x7b\xfa\x1e\x05\xb7\xe1\x66\x3e\x5e\xc4\x19\x5a\x85\x67\x39\x29\xe7\x65\x80\x13\x23\xc7\x28\x3f\x8c\xd5\x96\xd7\xab\xd3\x19\x8a\x96\xe3\x60\x55\xdb\x4d\x0f\xfd\x79\x92\x6b\x58\x2f\x8f\x9b\xd1\x02\xd1\xf3\xaa\x58\x4d\x7e\x82\x9e\x83\x9f\x8a\x6b\xc3\xaf\xf4\xfb\xea\x66\x7a\x63\xf9\x4c\x8a\x39\x8f\x47\x2a\x83\xcd\xcd\x6a\x91\x0d\xb7\x15\xa7\xfd\x79\x3a\x38\xb3\x68\x25\x0f\xf5\x01\x4f\xc3\xca\x9b\x8e\x89\x9f\xc5\x3e\x5a\x2d\x92\x53\x7d\xdf\x8b\x42\xb1\xe9\x7b\x53\x31\xd3\xe9\xdc\xaf\x9f\x47\x2d\x77\x9b\xe6\xe7\x89\x4b\x37\x59\x0a\x1b\xed\x62\x92\xd6\xfd\xc3\x42\xf9\xc6\x43\x36\xc9\x2a\xa3\x7d\x62\xb6\x75\xdf\x9a\xe2\xb1\xc8\x36\x48\xbb\x60\x9d\xce\xaf\x77\x2a\xda\xab\xe9\xfc\x67\xf8\x9c\xa7\xe2\xda\xf0\x2b\xfd\xbe\x99\x9d\x4f\xfb\xb2\xe5\xad\xce\x85\x48\x3d\xf8\xd0\x88\x1d\xe4\x6c\x05\xe6\xd5\x63\x7f\x9a\x55\x5b\x86\xa3\x7b\x3c\x5e\xa7\xcc\xbd\xad\x73\x3e\x96\x77\xfa\xfd\xf9\xda\xda\x42\x77\x80\x23\x29\x3d\x25\xa9\xef\x81\xf6\x65\xd7\x5b\xa8\xdb\x51\x78\xc1\xfc\x18\x2d\xaf\x8d\x8a\xbf\x89\x17\xbd\xdb\x65\x62\xa2\xe9\xa8\x8a\xb0\xaa\x48\x2f\xae\x91\xf1\xb1\xcc\x1b\xc8\x14\xd7\x68\xc8\xaa\x9b\x4d\xbb\x58\xad\x11\x97\xcd\xa1\x94\x57\xf8\x13\xf6\xa5\xe1\xa7\xe2\xda\xf0\xa3\x7e\x1f\x4e\xe3\x66\x42\x57\xd2\x0c\x02\x23\x36\x81\x18\xe4\x28\xbc\x4f\x35\x2e\xef\xd9\x89\x65\xf7\x4a\xd5\x0e\xcc\x1e\xc6\xd4\x44\xfd\x37\xde\xd3\x67\xb1\x07\x21\x5e\xcf\x98\x5f\x1d\x7b\xeb\xf5\xa1\x73\x90\xe2\x11\xbb\xe3\x0e\xd3\xfa\xa3\x8b\x9a\xfd\xe5\x34\xe3\xb3\xe5\x25\xd4\x82\x5f\xdb\xd1\x86\x5c\xb7\xf7\x66\x65\xd0\xf3\xba\xc5\x0d\x8f\x53\xb0\x68\x11\xca\x5a\xd1\xd0\x58\xda\xc4\x83\x0a\x52\xe1\xac\xb6\x5f\x47\x3f\xe1\x21\x37\xf2\x54\x5c\x1b\x7e\xd4\xef\xa3\xa4\xa4\xed\x5e\xab\xb7\x68\x56\xe9\x89\x1d\x8b\x1a\xa4\x15\x76\x1b\x2e\x8f\xf8\x38\x5a\xc1\x8a\xb7\xb6\x49\xda\x67\xb5\x5e\xb9\x7a\x97\x3b\x61\xcf\x62\x1f\xf0\xd6\x7e\x58\xcb\x77\x1b\x7e\xf6\xb5\x99\xdc\x1d\x2a\xb7\x2b\x83\x74\x70\x8f\xfa\xc1\x22\xda\xc9\xb2\x9d\xce\xd9\x72\xb6\xe5\x4b\x20\x58\xc5\xe4\x66\xaf\xfc\xb9\xb4\xc3\x7e\xc5\x5f\x46\xeb\x14\x16\xeb\x96\x17\xa3\x64\x2d\x53\x4f\xd5\x46\xc3\x4e\x18\xd3\x9f\xa0\x63\x92\xa7\xe2\xda\xf0\xab\xfd\xf7\x8d\xc1\x31\xc9\x6a\x8b\xd6\xe4\x94\x01\xd7\x98\xc6\x0e\xdd\xcf\x9d\xce\xa4\x9e\x4f\xba\xce\xe6\x64\xdb\x9b\xf4\x58\x25\xa7\x5d\x91\xbd\xcd\xb5\xfc\x69\xec\xef\x8f\x7c\x6a\xd1\xd8\xaa\x4a\xed\xe0\xc8\x26\x69\x8e\xbb\x5b\xef\x6e\x46\xc3\xea\xbc\x93\x57\x27\xa2\x3b\x7b\xb4\xd4\x96\xdd\xef\x0a\x8e\x57\x3e\xbc\x85\x83\x1b\x74\x75\x6e\x4b\x89\x97\x41\x72\x28\xa6\xc0\x9e\x6e\xe8\x5a\x0e\x6e\xcb\xbd\x43\xbd\x92\x2a\xf9\x13\x34\x05\xf2\x5c\x5c\xfb\x51\xbf\x0f\x5b\x8f\x40\xcd\x43\x9d\x76\xf1\x61\x79\x48\xf4\xfd\xe8\xef\x3b\x68\xe6\xe5\xe9\xd1\x3b\x34\xaf\x9b\x1b\xe8\x66\xaa\x33\x1c\xf8\x37\xfe\xb6\xbe\xff\x58\x4d\xfd\x77\x63\x7f\x1e\xa5\x24\xde\x4f\x87\x8f\xd6\x78\xb3\x59\x74\x97\x79\xf9\x58\x38\x17\x5e\x8a\x46\xbf\x5a\x6b\xb3\x94\xcb\xea\x65\x23\xab\x2b\x1d\xd0\xa6\x7e\xd4\xc3\x2e\xdb\x6d\x6e\x6a\x36\x43\xcb\x51\xd9\x68\xa5\x15\x78\x48\xbb\xfd\xdd\x72\x5f\xee\xfd\x6b\x3d\x3f\x8c\x5a\x60\x2f\x7f\xc2\xfe\x7b\xf2\x5c\x5c\xfb\x51\xbf\x0f\xc4\x0e\x8c\x67\xcb\xce\x16\xb9\xa2\x08\x82\xea\x02\x9a\x62\x1c\xcc\x7c\x3f\x0b\x82\x69\x87\x65\xc7\xa2\xc9\x1b\x15\x13\x64\xb3\xe9\x1b\xef\xbd\x67\xb1\xf7\x6b\x13\xb5\x2e\xf5\x85\xaf\x74\xd2\x3b\xd6\x2b\x56\xf4\x17\xb6\xd3\x22\x8f\x47\xdd\x3f\xe5\x98\x1c\x27\xba\xe6\xcd\xb6\xb5\x4d\x7d\x72\x4d\x53\xd9\xc8\x6a\xe3\xbc\x39\xbb\xa2\x43\x3c\x5d\x1d\x54\xab\x32\x2d\xe3\x1b\x38\x75\x88\x1c\x5e\xb6\xdb\xf9\x19\xac\xfc\xe8\xf2\x13\xd6\x98\xe4\xb9\xb8\xf6\x2b\xfd\xbe\xda\x57\xb5\xad\xd1\xac\x65\x7a\x5e\x41\x56\x07\x72\x21\x07\x35\x41\xf1\xc2\x77\x5e\xb3\x2e\x32\x13\xcc\x50\x79\x39\xdd\xba\xc3\x37\xec\x2b\xcf\x62\x5f\xf7\x14\x6a\x57\x2e\xf1\x65\x98\xac\x6e\x45\xfb\x74\x0e\xb6\xc5\xfe\x92\x85\x9b\x9d\x3d\xce\x2f\xa1\xb8\xcd\xd3\x0b\x2f\xb1\x75\xe5\x95\x89\xf0\xb0\x5d\x75\x6e\xc5\x69\x5e\x4b\x07\xec\x70\x8c\x0e\x7e\x3c\x61\x45\xbf\x9b\xcd\x2e\xb7\x65\x59\xf4\x2f\xb6\x8f\x5c\x14\xfc\x84\x3d\x81\xe4\xb9\xb8\xf6\xa3\x7e\x1f\xd8\x75\x41\x37\xb3\xa8\x29\xcf\x71\x03\x56\x86\x20\x58\xb6\xdc\x38\x08\x4f\xf2\xe0\x92\x71\xfd\x16\x1d\xce\x95\xd9\x64\x57\x81\xb7\xc7\xdb\x5c\x5b\x7d\x16\xfb\xf9\xbc\x9c\xb7\x0e\xf1\xac\x6e\xdb\x37\x70\xf1\x4d\x72\x8d\x17\x68\x58\x3b\x81\x65\xbd\x59\x4e\xe8\xf5\x21\x9b\xa7\xdd\x66\x93\xdf\xb2\xd5\x79\x62\x2e\xeb\x76\xb5\x1e\x34\xcb\xd0\x9f\x8c\xab\x07\xb3\x3c\x8c\x7c\xbf\x06\x7a\x34\x68\x75\x8f\x55\xa7\xed\x44\x6e\x77\xb5\xd6\x4f\x78\xee\x84\x3c\x17\xd7\x7e\xd4\xef\xa3\xd3\xf0\x3a\x9a\xba\x45\x3f\x4b\x93\x5a\x32\x1b\x26\xf3\x31\x70\x95\x74\x7b\x9e\xee\xd1\xe2\x50\x3f\xec\x50\xed\xb1\x34\x8b\x61\xde\xbf\x7f\xf1\xf7\x81\xff\x2c\xf6\x6b\x75\x6e\x87\xa3\xc3\xa5\xde\x9e\xb5\xe8\x7d\x98\x79\x87\x3b\x29\xab\xa2\x1a\xe1\xb9\x63\xd5\xeb\x60\xf5\x18\x56\x49\xf3\x3c\x38\x97\x8f\x1d\x99\xc1\xd3\xb0\xd2\xf2\xc6\xc5\xf5\xba\x5c\x9d\xcb\xde\x1c\xf2\xe9\x14\x6d\x4f\xf3\x53\x76\x3d\x56\xa4\x6c\x9b\xd5\xa2\x9f\x76\x7f\xc6\xd3\xfc\xcf\xc5\xb5\x1f\xf5\xfb\xe0\x28\xaf\xa7\x75\x76\x48\xca\xd5\xa8\x21\x82\x34\x6f\xec\xaa\x45\xe3\xd0\xf5\x92\x75\xad\xd1\xbe\x4e\x2a\xb5\x23\x77\x13\x9d\x34\xe7\xe2\x0b\xef\x83\x8f\xe0\xff\x7e\xec\xbb\x93\x08\x9c\xe7\x31\x18\x6c\xbb\xdd\x30\x11\x35\x7d\x5a\x3d\xc8\xa8\x7a\x9f\x89\x45\x33\x1c\x4d\x71\x57\xe2\x42\x92\x70\xe3\x02\x4c\xf4\xf0\x1c\x0d\x77\xe3\xe5\xa1\x09\x9b\xd7\xce\xe1\x76\x99\x9e\x76\x66\xbf\x59\x95\xf3\x2e\x5b\xdf\x9b\xe3\xeb\xfa\xb4\x98\x4e\xe1\x4f\xc8\xd7\x92\xa7\xe2\xda\xc8\xff\x88\xfd\xfa\x7c\x77\x65\x2d\x58\x84\xdb\xeb\x2d\xc5\xd9\x62\x7e\x11\xd5\xd5\x21\xb9\x90\x45\x67\xb1\xb6\x75\xef\x3e\x63\x66\xd4\x4c\x17\x29\x7b\xc3\x3e\x7c\x16\xfb\x68\x3a\xbe\x5c\x86\x6e\xb6\x2d\xdc\x36\xaa\xa3\x65\xb3\xb0\xe3\x71\xcf\x26\xcb\x73\xc1\xa2\x58\xda\xfe\x24\xab\x26\x76\xe6\xe7\x87\x4d\x19\xe1\x9c\xb6\xae\xd5\x32\x26\xf7\xea\xbd\x82\x0e\xd3\x7b\xab\xd8\xac\x03\x3f\x86\xbd\xe6\x6d\xdc\xee\x04\xe7\x47\xd5\xb5\xb9\xff\x33\xe6\xda\xa7\xe2\xda\xe8\xa3\x7e\x1f\x0c\x9b\xb5\x1c\x5e\xfb\xb5\xad\x3f\xca\xaa\x68\xb1\x5f\xf6\x2e\x9d\xbc\x7e\x9f\xe7\xeb\xa0\x3c\xed\x2a\xcb\xcb\x64\xd5\x85\xad\x34\x95\xfa\x0d\xfb\xe8\x69\xec\x53\x26\xb2\x6a\x25\xf5\xf7\x55\xff\xda\xa2\xab\xad\xe4\xf5\x8e\x3c\x1f\x78\x5c\x01\x8b\xf9\xdd\xa9\xee\x5e\xaa\x46\xf9\x28\x00\x0c\xd2\x43\xe8\x99\x79\xbd\xd9\xf4\xc2\xca\xe0\xbc\x2c\xfb\x68\x20\xbc\x62\x14\x83\x83\xd7\x2f\x2a\xa6\xa2\x66\x97\xa0\x52\x9e\x7f\xc6\xbe\x34\xfa\x54\x5c\x1b\x7d\xa5\xdf\x4f\xa6\x7a\xb0\x8a\x17\x74\x5f\x97\xe3\x4a\x26\x44\xef\x3a\x4e\x0f\x01\xaa\xa8\x3b\x42\x73\x3f\x51\x8f\x02\x5d\x6a\x47\x5c\xe8\xd1\x9b\xbf\xaf\x3d\x8b\x3d\x8b\x5c\xba\x9f\x34\x49\xdb\xbc\x44\x55\xe3\xb4\xbb\x99\xc6\xcd\x38\x18\xf4\x92\xea\xfe\x30\xcb\xcd\x7d\x39\x26\xc1\x79\xbe\x1f\xe2\xc0\xe1\xcb\xb2\x4d\xaa\xb8\xa1\x2e\xcd\x78\xb6\x9e\xc9\xd3\x76\x6a\x7b\xd1\xec\xb1\xc8\x2e\xa7\xd1\x90\x0f\x4f\xc3\xd8\x1b\x76\x2a\xe6\x27\xf8\x7b\xfa\x54\x5c\x1b\x7d\xd4\xef\xfd\x28\x5d\xc4\xe1\x19\xad\x34\x8f\x84\x1b\x0f\x45\x64\x4f\xab\xf6\xaa\x92\xad\x96\x25\xaf\x86\x29\x0f\x22\x15\x3e\x3a\xa7\x72\xf4\xa6\xa5\x05\xf5\x67\xb1\x6f\xfb\x87\xb4\x99\x57\xfb\x78\xb1\x39\x4d\xc6\xc5\x2d\xb1\xb0\x87\x3b\x51\xe5\x8c\xf6\x6b\xa5\x16\x73\xe4\x31\x99\xeb\x20\xa9\x2e\x4c\x86\xf4\x4c\x1e\x9b\x36\xdb\xd4\xc1\x32\x6b\x15\xa3\xe1\xaa\xe0\xf5\x7a\x00\x83\x25\xf2\x1f\xe9\x22\x24\xfc\x10\x1d\x9a\x3d\x10\xfd\x84\xe3\x5b\x9e\x8a\x6b\xa3\x8f\xfa\x7d\x78\xdd\xc3\x76\xef\xbc\xe2\xac\x11\x3a\xb2\x57\x8d\x33\x4a\xe2\xc5\xb4\x69\xd9\xbe\xb3\x3d\x27\x51\xc3\x18\x37\x1f\x9c\x2f\xd3\x75\xe7\xcd\xe7\xc4\xcf\x62\xdf\x85\xf9\x78\xd8\x59\x57\x1b\x37\x5b\xa4\x76\x31\xde\x8b\xdd\x3d\x5d\x9d\xe0\x28\x13\xed\xdd\xae\xb7\x56\x6e\x35\x22\xd9\x60\xae\xa2\xdd\xa9\x69\xc1\x60\x6e\x1e\x44\x0d\xb2\x51\xe7\x61\x1a\x97\x7c\xe0\x9d\x6a\xa8\xdf\x38\xcf\xfa\xe3\xb8\x3a\x5b\x6e\x97\x3b\x33\xac\x36\x7f\x82\x8e\x49\x9f\x8a\x6b\xa3\xaf\xf4\xfb\xfb\x60\xb6\xdf\x5c\x7b\x5d\x22\x43\x79\x0d\x78\xde\x21\xde\xaa\x79\x6a\xb6\x86\xeb\x3c\x5b\x09\xb6\x6a\xd7\x6f\x29\xbc\xe3\x96\xc7\xde\x78\x9f\x3c\x8b\xbd\x9f\xf5\x9d\x1b\x66\xe7\x70\x5e\xa9\x56\x1f\xdd\x61\x16\xf5\xce\x0d\x86\xe6\x65\xee\x3d\xb6\x31\xab\x51\xe6\xf0\x24\x63\x72\x7e\xe8\x5d\x22\xb3\xdc\xf7\x5a\x4b\xeb\x74\xda\x09\xd7\xfc\x7a\x38\x27\xe1\xc6\x0f\x27\x4d\x15\xef\x2e\xd5\xce\x03\x9e\xa2\xe1\xa4\x22\xb2\x9f\xb0\xbe\xa7\x4f\xc5\xb5\xd1\x57\x87\xe7\xf0\x33\xdf\x8f\x2b\x0b\xd2\xad\xce\xa0\xea\x16\xf3\x46\xe7\xd0\xcc\x1e\xad\x64\x5a\xbf\x0d\x40\x0f\x02\x3e\xc2\x71\x8f\x3d\x06\xad\xf6\x1b\xef\x3f\x56\x61\xfe\xdd\xd8\xf7\xa5\xd7\xf2\xfa\xa0\x57\x59\x36\x76\xe5\xa1\x3d\x6b\x17\xb9\xdf\x5a\xb4\xa3\xe6\xb8\xb1\xaa\xa8\xd1\xe5\x71\xde\xb8\xc2\x61\xd6\xae\x66\x98\x80\x65\x30\x69\x37\xbd\x6d\x7d\xc7\x11\x81\xb3\xf6\x7d\x9e\x96\xf5\xeb\xa3\x79\x02\x6d\x5a\x9f\x2e\xaa\x8d\x78\xb0\xad\xb6\x86\x3f\x41\x4b\xa3\x4f\xc5\xb5\xd1\x47\xfd\x3e\x1a\xec\x37\xc3\x2c\xdb\xcc\xd1\x28\x99\x65\x9d\x9d\xe3\x4d\x32\xae\x9c\xba\xbb\x32\x3d\x66\xfd\x18\xa1\x69\xb4\x5c\xc2\xc3\xb6\x95\xad\xdf\xe6\xda\xe6\xb3\xd8\x1f\x64\x6e\xd2\xe0\x62\x2a\x6e\xba\xe9\xba\x7d\x2f\xb1\x49\xdc\xa9\xd0\xcd\x30\xee\x45\xb5\xcb\xa9\xd5\x28\x2f\xa3\xe1\xfe\x31\xdb\x55\xb7\xfd\x4d\xdc\x6a\x4e\x89\x90\x09\x6e\x6c\xfc\xf9\x45\xaf\x13\x24\x56\xad\xab\x37\xad\x42\xa6\x8e\x08\xce\xc2\x6d\xd5\x74\xce\x51\xf8\x13\xd6\x39\x4f\xc5\xb5\xd1\x57\xc7\xe7\xcc\x8e\x21\x71\x00\x1d\x6a\x36\xf7\xd2\x7c\x6a\x7a\xbb\x62\x5b\x2e\xb0\x72\x51\x9a\x82\x49\x51\x54\x30\x3b\x4e\x6b\xb9\xaa\xbc\xe9\x39\x41\xeb\x59\xec\x79\xa5\xae\x67\xdb\x7e\xda\xf4\x56\x27\x75\xcb\xdd\x61\xd8\xb8\x7a\xf5\xd6\x75\x34\x3f\xf8\xe7\x7a\x6f\xd0\x5c\x6d\xb6\xfb\x21\x22\x3c\x3e\x27\x41\xd4\x2c\xf0\x36\x5d\xd0\x4d\x8b\x5d\xaa\xc9\x74\xb2\x82\xc3\x4a\x63\xbe\xde\x37\xc3\xa2\xa4\x74\x41\x76\x68\xda\xf0\x2f\xf4\x27\xe8\x39\xf4\xa9\xb8\x36\xfa\xa8\xdf\x07\x59\xff\x3e\x18\x3e\x46\x17\xd3\xa3\x61\xdc\x3a\x8c\x57\x66\x53\x85\xcd\x3c\x37\xe3\xc0\x6f\x75\xc7\xec\x76\x19\x4d\x75\xe5\xe1\xe7\xc1\x1b\xef\xdb\xcf\x62\x1f\x8d\x47\x57\x83\xe3\xce\xb4\x2a\x07\xcb\x75\x6b\x7a\x48\xd2\x22\x5a\x1f\x67\x8b\x91\x3d\x25\x06\x48\x90\x89\xc4\xdf\x76\x31\x87\xad\xca\x7e\x30\x2f\x2e\x43\x4a\x2f\xc3\x19\x1e\x9e\x9a\x9b\xe8\x08\xca\xc3\x52\xb4\xac\xf2\x5a\x83\x83\x6d\x46\x69\x31\x5c\xae\x8f\xf2\x9f\x79\xab\x7f\x7f\x12\xe7\xfe\xbc\x3d\x9c\xd7\xcf\x9d\xfd\xfb\xd6\xcc\xbb\x52\xc5\x4e\x10\x8a\x20\x10\x9a\x3b\xe8\x69\x6c\xa8\xb3\x84\x5a\x45\x3c\xa5\x0d\xb3\x4a\x10\x24\x2d\x91\x9e\xd4\x52\x71\x62\x2c\x41\xce\x70\x65\x39\x43\xd8\x12\xfe\x5a\xd5\xfa\xed\xae\xbe\xce\xaa\x9f\x16\xf1\x83\xf9\x39\x9a\x64\x61\x1d\x6e\x1e\x3e\x55\xdd\xf6\x34\xf0\x41\x94\xc4\xa7\xce\x5d\x0c\x58\xe5\x84\x6a\x8d\xca\xae\x1e\xf1\xb2\xec\xbe\xae\x5e\x7f\xed\xd4\xe3\xe3\x7c\xba\x79\xf6\xd8\xe3\xcf\x6d\xbc\x63\x71\x34\xaa\xfb\x71\x33\xec\x85\x0d\x12\xb6\xd0\x38\x69\xb1\x71\xd1\xf6\x59\xd9\xaa\x8d\xea\xc5\x88\x07\x69\x3c\x48\xf3\x4e\x90\xb6\x1b\xb5\x7e\xb3\x68\xd2\x71\x9e\xb5\xd3\x46\xf0\x7a\xec\x6c\x84\x6b\x3c\x69\xa5\x45\x56\xb2\x24\x0e\xe2\x24\x28\x59\x83\x35\x6b\x24\x43\x3d\x32\xa4\xad\x09\x22\xac\x8c\x9b\xa4\x95\xf7\x46\x4d\xd4\x25\xc1\x28\xec\x77\xf3\xb4\xfb\x5f\x7f\xfb\x05\xfe\x8a\x99\xa7\xed\xc1\x1e\x4f\xf2\xf4\xfb\x8f\x83\xfd\x17\x4b\xbf\x34\xf3\xae\xba\x94\x3c\x49\x25\x8f\xf6\xf8\xda\xc8\x2f\x5f\xbd\x5e\x0b\x3c\x7c\x35\xf6\xbf\xd1\x90\xdb\x1e\xb4\x3d\xea\xdd\x76\xb3\xb1\xb7\xd3\x4a\x9e\x37\x7a\xf6\xb1\x21\x27\x57\x47\xfb\x5b\x1a\x5b\xc9\xe3\x49\xaf\xb6\x47\x6b\x3e\x9d\xca\xfe\xad\xab\x7a\xfa\x60\xf6\xdf\x70\x1d\x9f\x3d\x9c\x3c\xe8\xd9\xfc\xf2\xf9\xc3\x8f\xd7\xf1\xbf\xff\xf2\xf2\xee\xaf\x17\x7b\x38\xce\xb7\x9b\xbf\xfe\xe3\x17\xf8\xb7\x4f\xff\x73\xb4\x87\x8b\x3d\xfc\xf5\x1f\xbf\xfc\xf5\x02\xfe\x07\xfb\x1f\xf8\xef\x8c\xfd\x7d\x6a\x18\xa3\x9c\x6a\xf7\xd7\xcf\x5f\xd2\xe7\xc3\xc1\x6e\x4e\xed\x57\x33\xff\xfa\x8f\x97\x11\xf3\x2f\x1f\x04\x67\xbd\xb4\xa7\xe3\x5f\xff\xf1\xcb\xff\xf3\x97\x7f\xf6\xfa\xbf\xff\xf2\xfe\x1a\x5e\xbf\xf9\xd2\x8b\x92\x5a\x52\x41\x9d\x91\xcc\x0a\x2a\xb5\x41\x9a\x62\xe5\xa0\xc6\x16\x38\x47\x25\x40\x8c\x38\x61\x3c\x27\xb0\xd4\x06\x70\x8d\x2d\x77\xc8\x30\x0d\xb9\x90\x02\xf3\xcf\x97\xf4\xa5\xdd\x97\xfb\xf8\xd7\x7f\x7c\xe8\xed\x93\x65\x2f\x40\xfc\xf5\x1f\xbf\x80\x7f\xf9\xe8\xff\x7c\xf8\xfb\xe3\x46\xee\x5e\xae\x4b\x23\x43\x14\xa1\x92\x49\xe5\x30\x36\x84\x79\x0e\x2a\x23\x00\x10\xc4\x49\x80\x31\x82\x84\x11\xab\x98\x72\xaf\x3f\xca\x51\x64\xa0\x54\x1e\xb7\x9e\x43\x16\xb9\xbf\xfe\xe5\x1b\x3d\xfc\x1b\x0c\x28\xa6\xc4\x42\x41\xb4\x16\xcc\x08\xed\x59\x22\x35\x55\x82\x30\x21\x0c\x80\x90\x72\x46\x8c\x03\x4a\x68\x85\x25\x60\x56\x68\xc2\x89\x81\xd4\x00\x68\x19\xe7\x4e\xfe\x7e\x0c\xe0\xdf\xbe\xfe\x6c\x7b\x3e\xed\xce\x2f\x7f\xf7\x57\xc7\xb5\xa4\x80\x49\x47\x29\xd0\x12\x68\x8e\x8c\x07\x21\xd2\x00\x3b\xec\x09\xe7\x29\x64\x19\xf7\x80\x12\x4a\x7a\xd2\xc3\x88\x60\x67\x00\x95\xd6\x68\x87\x91\x47\xe5\x5f\x7f\x13\xc2\x42\x42\x2e\x05\xc5\x08\x3b\x24\x5e\xab\xaf\x58\xe5\x94\xe4\x58\x41\x65\x90\xc6\xd4\x72\x04\x88\x87\x0c\x97\x52\x59\x89\x39\xe4\xd8\x09\xa3\x08\x76\xc0\xa3\x44\xfd\x1e\x84\x89\x42\x06\x73\xec\x01\x4d\xa4\x40\xda\x02\x81\xb1\x90\x00\x72\x68\x3d\x6a\x39\xb3\x48\x01\xc6\x80\xb1\x00\x1a\x8a\x9c\xa4\x9e\x14\x92\x1a\xe8\x79\x4e\x50\x4d\xd1\xf7\x46\x18\x7b\xcc\x01\x66\x8c\xc5\xc2\x83\x8a\x28\xc6\x3c\x43\xa5\xc6\x5a\x08\xe8\x39\x04\xb4\xe7\xac\xa4\xca\x52\x46\x05\xe5\x88\x58\x2a\xa4\xc5\x8a\x39\x4e\x38\xd4\x8a\xfe\x46\x84\x15\xa4\x1c\x28\x89\x9d\x32\xd8\x11\x0c\xa1\x14\x5a\x28\x05\xa5\x85\xce\x51\x8b\x34\x26\x56\x00\x07\x11\x17\x94\x18\x27\xad\xc7\x85\x03\xca\x50\x61\x90\x25\xfc\xf7\x20\x0c\x9e\x7c\x7d\x6f\x84\xbf\x9f\xed\xbf\x86\xf0\xd3\x56\xff\x5f\x8d\xf0\x6f\xf3\x94\xff\xc1\xe0\x3f\x18\xfc\x07\x83\xff\x60\xf0\x1f\x0c\xfe\x83\xc1\x0f\xc2\xe0\xf5\xdd\xff\xfb\x97\xff\xf3\x5b\xa3\xb0\xa3\xde\xbd\x84\x88\x1f\x0d\x78\x7d\xfd\xd7\x3f\x83\xfb\x4f\xb2\xed\xb0\x45\xb2\x25\x68\x8c\x86\x2e\x8d\x56\x47\x71\xf6\x6b\x51\x9e\x6a\x09\x78\xfb\x36\x3a\x30\x3c\xce\x17\x6c\xd9\xef\x9e\xb2\x54\xbc\x3d\x7c\xf9\x69\xab\xf0\xb5\x52\xeb\xcf\xc2\xd4\xdd\x36\x11\x74\xb4\xce\xc0\x5a\xc0\xf3\xb9\xd6\x3a\xf7\x76\x87\xd6\x09\xe0\x65\xdb\xb3\x15\x33\xef\x2e\xcd\xe0\x7b\x4b\x3c\x2f\xbf\xd2\x1a\x2c\x9b\x03\x95\x59\x0f\xb6\x97\x8d\xf1\xfe\x34\x1f\x20\x57\xed\xaf\x82\x00\x4e\x6b\xfe\xd6\x5b\x1c\x62\xcf\x06\x0f\x9e\x06\xfe\xa7\x94\x40\x7d\x73\x25\xb5\x0f\x27\x06\xd4\x7c\x32\x6b\xc0\x5c\x0d\xb6\x9d\xe1\x65\x77\xae\x9c\x5c\x14\xf4\x77\xb8\x04\xbb\xc6\xa5\xec\x46\x65\x67\x21\x9b\xfb\x9c\x0c\x27\x55\xd1\xd8\xc0\x8b\x87\xd8\x25\xea\x4c\x6e\xb6\xc7\x42\xc1\x4e\xc8\xb6\xc7\xf7\x32\xeb\xb1\x1d\x0d\x86\xa7\xb9\xbf\x9d\xb0\x2c\xb5\xd1\x36\xfd\x8f\x24\xf6\x2d\x49\xec\xe5\x52\xe2\x8a\x3d\x8d\x63\xdb\xce\x2e\x21\x9f\x64\x03\x35\xed\xdc\xaa\x6c\x58\xca\xb0\xb7\x39\x81\x5c\xac\x75\x4b\x6f\xc2\x5b\xf5\x81\x87\xfb\xfc\x5f\xef\xf7\x0f\x12\xa3\x4e\x87\xf3\xf1\xb4\x9a\x6f\xec\x73\x7a\xd4\x5b\x33\xef\x4b\x71\x65\x93\xb8\xdb\x1a\xd3\x61\x2f\x19\xc6\x74\xdc\x99\xa4\x59\x4c\x51\x1c\xb6\x68\x2f\x6c\x92\x71\xdc\x1f\xa6\xcd\xe6\x20\x9e\xf4\x5a\xa8\xde\x25\x41\x03\x35\x1b\xcd\x0c\x85\x9f\x4a\x71\xfd\x57\x1c\x26\x21\x89\x50\xd8\x23\x34\x6c\x16\x59\x46\x72\x3f\x29\x51\xbb\x3e\xf1\x9b\x8d\x3e\xed\xfa\x3c\xa1\xb8\x85\x07\x9d\x2e\x1b\xd6\x9a\x6c\x34\x4c\xb2\x5e\x36\x69\xe5\xf1\x7f\x7d\xa9\xa7\xe4\x21\x84\x31\x47\x00\x33\x41\x09\xe7\x54\x00\xfe\x55\xfd\x2a\xfa\xc1\xa5\x7c\xd3\x90\xa8\x18\x62\x4e\x53\x7f\x5c\x10\xd6\x89\xe2\x3a\x1a\xc6\x7e\x96\x87\xa8\x28\x26\x6d\xde\x41\x84\x45\xe3\x24\x09\xe3\x61\x39\x40\x45\x8d\x37\x92\x1a\xca\xfb\x79\x3b\xfa\xa7\x21\x7f\xbc\x74\xd8\xaf\x19\xf2\xd9\x80\x8f\x25\xc4\xbe\x7d\x27\x42\xbf\x40\x7e\x6d\x5c\x6b\x35\xca\x1a\x6a\xb7\x1a\xb4\x48\x47\x75\x9a\x36\x06\x13\x96\xf3\x51\xa3\x5d\x74\xe2\xa8\x44\xa8\xc3\x9b\x23\x12\xf5\x86\xf5\x1e\xaf\x47\x51\xf7\x3b\x18\x50\xeb\x17\xff\xce\x00\x0c\xfe\xe5\x56\x20\xf0\x5b\x2c\x09\x3a\x2d\x1e\x74\xfa\xbd\xce\xb0\x9b\x04\x7e\x16\x8c\x53\x96\x36\x8a\xf1\xa4\xd9\x88\x1a\xdd\xfe\xb8\xd9\x1d\x25\x65\xe2\x47\x75\x4e\xfb\xb5\x41\x63\x30\x1e\x26\x49\x27\xcb\xbf\x70\xea\x8f\x97\x41\xfb\xb5\x5b\x81\xfe\xd5\x90\x8f\xa5\xd0\xbe\x69\x48\x38\x18\xd2\x76\x58\x4c\xea\x5d\xde\xad\x65\xa3\xd2\x8f\x3b\x83\x46\x3e\xf2\xa3\x28\xeb\x8f\x46\x93\x66\x98\xb5\xea\x64\x90\x07\xa8\xd1\xe2\x43\xd4\xee\x36\x87\x75\x8e\xfb\xf1\x3f\x0d\x89\x48\x2f\xed\xd4\xf0\xa0\xdb\xab\xf3\x49\x81\xc3\xb2\x96\xe3\x2e\xed\x67\x65\x90\xd6\x9a\x91\x8f\xe2\xf6\xa8\x4c\x0a\x9e\xa6\x7e\xe1\x67\xad\x56\x33\x9a\xf0\xa2\x1b\xd7\x7f\x13\xa7\x08\xfc\xbf\xdb\x80\x5f\xe1\x14\x78\xfd\x21\xe8\x57\x1c\xde\xcd\x59\xfb\x3d\xea\x80\xbd\x6f\xe8\x9d\xa2\x4c\x2d\x30\xd0\x51\x00\x14\x32\x40\x13\x45\x90\x53\x42\x12\x2c\x0c\xb5\x86\x33\xa2\x34\x15\x06\x62\x0f\x39\x82\x91\x70\x84\x43\x2c\x1d\x01\x5c\x41\x8f\x09\x2d\x3f\x95\x9d\x82\xff\xb2\x48\x49\xdf\x26\x81\x4f\xf3\xc1\xbc\x1a\x80\x36\x68\xc6\xf7\xd3\xec\x9a\xc1\xd5\x18\xc8\xfb\x6e\x0b\xbd\x2c\xb9\x5d\xda\xe1\xbd\x43\x4f\x41\x4d\x87\x83\xcb\xb5\xee\x5d\xf1\xf4\x74\xe8\x6c\x3e\x96\x16\xf9\xe6\x2b\xff\x77\x1f\xbc\x4e\x3a\xd1\x33\xfd\x8f\xab\x15\xfd\xa1\xbd\xdf\xd8\xff\xd7\x39\xbc\x6f\xe3\xce\x98\x45\xdc\x29\x24\x04\x07\x5a\x51\x44\x99\x95\x1e\x7a\xc5\x5b\x21\x84\xa4\x51\x4a\x4a\xea\xac\x46\x46\x78\x92\x21\xe9\x49\x29\xb4\xa7\x85\x45\xd6\x7a\xd6\x7b\xab\x98\xf8\x01\xf7\x27\xec\xae\x97\xc3\xe0\xfc\x07\xed\xfe\xf2\xfd\xda\x73\xfd\x1f\xdf\x3d\x53\xf8\x71\x7b\xc2\xf7\xc0\xdd\x7a\x06\xca\x17\x4f\x2e\xad\xc4\x8c\x13\x0c\x09\x72\xc8\x1a\x0b\x01\x33\x58\x2b\xcc\x35\x36\xdc\x0a\x41\x81\xb0\xd8\x21\xa8\x88\xc7\x30\x07\x8a\x0a\x86\x05\x15\x6f\xe5\x1d\x3f\xe0\xfe\xce\xee\xe8\xdc\x0f\x96\xf3\x65\x33\x09\x5a\x70\xca\x2e\xe3\xf9\x31\xd9\xed\x9b\xfa\xa8\xaa\xe1\x15\x0e\x73\x5d\x9f\x83\xda\x76\xdd\xb2\x64\xfa\xa9\x86\x54\xb3\x1f\x56\x3e\x19\xf5\xd5\x8e\xeb\xdf\x8e\x7b\xfd\xb9\xfe\x3b\xfa\xad\xff\x1f\xc1\x77\xcf\xa3\xca\x43\xcc\x73\x9e\xf3\x34\xd1\xd0\x4a\x6d\x39\xa5\x00\x42\x21\x38\x63\x86\x59\x21\x2d\x01\x9a\x12\x88\x21\x02\x02\x42\x49\x01\xc1\x9c\x09\xac\x15\x27\xfa\x13\xee\xe8\xeb\x4c\xe7\x93\x76\xa7\xe4\xcd\xee\x1f\xc1\x37\xc7\x85\xd1\xd2\x43\x8c\x50\x4a\xb9\xa7\x88\x24\x18\x00\xcf\x39\x8b\xa9\x04\x08\x79\x92\x19\x49\x94\x35\x18\x19\xac\x3d\xcf\x33\x5c\x02\x26\x0d\x62\x0c\x50\x89\xe8\x27\xbb\xf1\x77\xb7\xbb\xdd\x7f\xb3\x3b\xfd\x01\x76\x4b\x0f\x08\x6a\x21\x76\xca\x7a\x4e\x10\x0b\xb8\xc5\x08\x48\x60\x08\xa1\x14\x33\x63\xa1\x74\x1a\x69\x67\x84\xe6\x96\x40\xc1\x98\xe0\x02\x70\x6b\x0c\x52\x44\x78\xfc\x53\x75\xb1\x6f\x8c\xb3\xef\x6d\xf7\xd7\x43\x2e\x6f\x84\x9f\xfa\xfb\x34\x0e\xbc\x65\xc5\x94\x8d\xd3\x86\xd0\xe9\xba\x13\xbb\xa5\xed\x95\x0b\xd3\xa3\x6a\x7f\x64\x94\x4d\x96\x62\x10\x0e\x00\x73\xd7\xec\xd6\xd7\xdf\x6a\xef\xf5\xdf\xc1\xbb\x4a\x06\x7c\xe5\x4f\x1a\xbb\xb0\xb8\xf6\x4e\xe3\xce\x01\x35\x0e\x01\x93\xf3\x51\x3b\xae\x5e\x8f\xd9\x60\x99\x04\xe3\x53\xd0\x6a\xce\x37\xe7\x46\xf6\x69\x7f\xdd\xc0\xbf\xcc\xf5\x87\x9b\xff\xf5\xbd\xa9\x85\xfe\xb4\xf1\xd6\x7f\x77\xd2\xdd\xf4\xef\xed\x49\xa5\x33\x6e\x2e\x66\x1b\x9a\x2c\x97\x04\xf7\xcf\x43\x76\xe8\x9c\xed\x7a\xd2\xad\xe7\x2b\xd3\xd9\x88\x48\x0f\x92\x8f\xed\xfd\xb6\xfb\x0b\x9c\xf2\x34\xb2\x08\x78\x84\x21\x84\x14\xc2\x16\x1a\x68\x5e\x93\x52\x9e\xe1\x84\x72\xa6\x09\xd4\xce\x78\x0a\x7a\x9e\xf3\x0c\x65\x54\x02\x88\x35\xb4\x4e\x78\xaf\xeb\x06\xfe\xdf\xf9\xd1\xdf\x39\x7f\xec\x79\xb5\x8c\xf4\x1f\x9c\x3f\xbe\x74\x9d\x3c\xd7\xbf\x7a\x57\xc4\xfa\x47\x8c\x2b\x63\x38\xb1\xd6\x22\x2e\xa9\x27\x08\x56\x48\x48\x40\xa5\x01\x42\x2a\xc7\xa8\x95\x12\x61\xa8\xb8\xb1\xca\x12\x03\x28\xa5\x40\x03\xc9\x25\x41\x44\x6b\x49\x3d\xe4\x7d\xaa\x5f\xf6\x0d\xdc\xdf\xef\xc3\xa4\xec\x38\x08\x6a\xa7\xf8\x50\x49\x8c\xa9\x4e\xf3\xde\xb1\x77\xe8\x9e\xa7\x5d\x1c\x96\xaa\xcc\x1c\xc5\x95\x64\x06\xcd\xe3\x98\x7d\xda\x43\xfb\x6e\xfe\xfa\x78\xe2\xd7\x6f\xc7\xbd\xf1\x5c\xff\x9f\xe7\xaf\xab\xff\x83\xe6\x2f\x44\x29\xb4\x9c\x49\xac\x2d\x11\x02\x2a\xae\x34\xc7\xce\x38\x23\x3c\xc3\x38\x30\x14\x42\x2b\xb9\x21\x96\x32\x48\x19\xa2\x48\x51\xc8\x39\x07\x08\x23\x80\x8c\xe5\x9f\x70\xff\xc6\xfc\xf5\xa4\xdd\x9f\xe7\xaf\xeb\xc7\xa6\xbe\x97\xdd\x58\x61\x66\xb5\x53\x5a\xbf\xac\x49\x81\x76\xce\x01\x21\xad\x60\x2f\xa3\x9a\x11\x0b\x91\x27\x88\x03\x82\x28\x05\xb0\xb2\x9e\x52\x88\x78\x0c\x42\xe3\x04\xc2\x08\xa9\x4f\x76\x7f\x63\xfe\x7a\xd2\xee\xcf\x7e\xfc\xd5\xee\x1f\x31\xce\x2c\x24\x42\x50\xad\x18\x93\x8e\x3a\xee\xa8\xf5\x3c\xa8\x00\x24\xd6\x6a\xc2\xa9\x66\x50\x6b\x81\x21\xf2\x90\x76\x94\x22\xa6\x8d\x01\xda\x48\x48\x28\x06\x40\xe0\xcf\xf7\x9b\x7c\x77\xbb\x9b\xd7\x37\xbb\xff\xcd\x80\x7a\x32\x2e\xd1\x48\x68\xa0\xb5\xa1\x12\x59\xc2\x01\x62\x52\x6a\xe9\x24\xb2\xda\x60\x4d\x01\x74\x96\x1a\x8b\x89\x67\x1d\xe6\x4c\x03\x27\xa4\x53\xc2\xc3\x9a\x2b\x45\xa9\xf9\x54\xa4\xef\x1b\xfe\xe5\x9d\xdd\xbf\xd7\xaf\xde\x4f\xdb\xfd\xe3\x0f\xfa\xd5\x2f\xb8\x37\x9f\xeb\xff\x76\xfd\x6f\x3b\x7a\x6e\x9d\x68\x14\xf3\x98\xe4\x1e\x57\x9c\x79\x90\x33\xad\xa4\x35\x58\x52\x60\x89\x64\x52\x30\x0e\x21\xf4\x18\x82\x8e\x51\x89\x9d\x47\x89\xc4\x4a\x3b\x08\x80\xe6\xd6\x01\xfd\xb9\x42\xdf\x37\x80\x7f\xbf\xd1\x38\xc3\x7d\x6e\xa7\x7e\x77\xb7\x96\x37\x00\x39\x5c\x2c\x32\x30\x0b\xd4\xf0\xd4\x11\x33\xe1\x17\xf3\x76\xb5\xd7\x1a\xa1\x7c\x30\x1f\x7d\x70\xec\xe1\xbf\x05\xf7\xbf\x05\xbe\xf5\x5c\xff\x9f\x1c\x5c\xf8\x6e\xed\xf3\x7d\x81\x67\x9c\x01\x28\x91\x96\x08\x22\x25\x08\xf0\x90\xe4\x2f\x44\x47\x10\x72\xa4\x18\x77\x44\x79\xd8\x70\xa4\x38\x62\x12\x30\x4d\x09\xf0\x20\x37\x48\x2a\x81\x35\x94\xf0\x73\x79\xbe\x6f\x00\xff\xce\xf0\xdf\xcb\xb8\xdd\x6a\xba\xdd\xfd\x41\xc6\x7d\x01\xaa\xfd\x5c\xff\xdb\x77\xc3\xac\xff\x03\x80\x07\x16\x22\xc1\x08\x57\x48\x79\x98\x0b\xa6\x98\xe2\xcc\x42\x81\x8c\x36\x12\x40\x8e\x39\xe5\x80\x31\x27\xb4\x74\x80\x22\x6c\xa0\x92\x58\x11\xee\x0c\x73\x1c\x01\xf3\xb9\x36\xdf\x37\x80\x7f\x67\x78\x54\x1f\x8e\xcb\x5e\xa3\xb7\x81\xed\x4b\x31\x43\xbd\x73\x2d\xe4\x3b\xd8\x9d\x67\x2d\x5d\xf1\x4e\x3d\xde\x69\xc1\x68\x3e\xad\xdf\xbc\x6d\xfa\x0a\xf7\x3b\xc6\xff\xf1\xa5\x4c\xfa\x5c\xff\x9f\x96\x32\xe1\x0f\x5b\xca\x68\x23\xa4\xb0\x9e\x55\x14\x3b\x83\x98\x30\x10\x79\xc4\x22\x24\x3c\x8f\x6a\xc4\x1d\x41\xc8\x78\x80\x0b\xac\x09\xa0\xc4\x12\x22\x15\x00\x48\x38\x0d\x8d\x44\x10\xc8\xcf\x85\xf9\x7e\x1d\xf8\xdf\xcb\xb8\x69\x61\xf6\xe3\x3f\xc8\xb8\x2f\x40\x65\xcf\xf5\x3f\x7c\x57\x8f\xe2\x63\x5d\xe9\xef\x01\xbc\x72\xca\x50\xeb\x11\xca\x0d\x87\x5c\x69\x27\x08\x47\x1e\x94\x4c\x23\xa2\xb8\x36\xc2\x28\xe2\x1c\x17\xc4\x6a\x43\xa8\x87\x94\xc5\xc0\x00\x01\x09\xd3\x40\x23\x46\x3e\x03\xff\x8d\x45\xe4\x93\x86\x0f\xde\xd1\xec\x63\x8d\xd5\xef\x61\xb8\x51\xc6\x63\xc4\x69\x67\x14\xc6\x4c\x62\xe0\x10\xd4\x88\x00\xe7\x9c\x91\x8e\x63\xc3\x35\xa7\x42\x00\x6b\xa0\xf2\x3c\xfc\xb2\xbc\x42\x4e\x10\x8b\x2d\xf5\x10\xe5\xe0\x73\x39\xc2\x6f\x30\xee\x9d\xe1\xbe\x5a\x3e\xe0\x98\xcb\x82\xc7\x7c\x86\x86\x59\x86\x8b\x59\x8b\x37\x7a\x76\x9c\xf5\x1e\xb5\xdd\x5e\xa5\x2b\xd9\xaa\x4e\xfb\xb2\xf7\xa9\xb4\xdd\xdb\x50\x8f\xfe\xf8\xe4\xd6\x79\xae\xff\x4f\x43\x3d\xfa\x61\x93\x1b\x06\x42\x00\x63\x08\x32\xc2\x12\x80\x24\x06\x46\x48\x4c\x11\x57\x94\x69\x68\x31\xb6\x50\x58\xc1\x35\x61\xaf\x1b\xba\xad\xa4\xda\x69\xc8\x11\x74\x46\x70\xed\xd4\x67\xe0\xd1\xaf\x02\x1f\x76\xda\x53\x2f\x5c\x3d\xb6\xcb\x9b\xc4\x4b\x3f\xd9\xec\x26\x7a\xda\x9b\x6f\x46\xd3\x8a\x3b\x43\xb5\xa7\xd5\x43\xad\x64\xde\xe2\xb4\xc4\x3f\x04\xf8\x3f\xd2\xff\x8f\x06\x1e\x12\xa4\x3d\x21\x14\x74\x8c\xbf\x04\x48\x9c\x48\x48\x05\x34\xd6\xd3\xd2\x6a\x47\x3c\xcf\x32\xe0\xa0\x05\xd6\x1a\xe2\x31\xc6\xa0\x94\x48\x53\xea\x21\x2c\x38\x7b\x95\x3b\xe1\xb7\x75\xe6\x67\x0c\xef\xd4\xa7\xad\x3f\x68\xf8\x97\xef\x77\x9f\xeb\xbf\x41\xde\xfa\xff\x11\xf1\xaa\xa4\xd2\xb3\x58\x4b\x86\xad\xa7\x35\xa4\x14\x53\x4f\x7b\x1c\x63\xae\xb4\x82\x84\xb0\x57\x21\x84\x29\x84\x81\x24\x06\x68\xee\x10\xa7\x02\x31\x42\x0c\x64\x02\x78\x9f\x2b\x40\xfe\xba\xab\xf9\xbd\x3e\x36\xdb\x8d\x4e\xf0\x0f\xfa\xd8\x2f\xc0\xe7\xcf\xf5\xff\x78\x27\x41\x7e\xac\xab\xfa\x3d\x80\x67\x12\x50\x06\x85\xa7\x08\xe5\x0c\x68\x06\xb8\xc5\x18\x6a\x0f\x68\x2a\x85\x22\xda\x70\x04\x3c\x06\x8d\x13\x4a\x0b\x6d\xb5\x33\x44\x4a\x2c\x84\xa2\x9c\x4b\xa6\xd5\x67\xe0\xbf\x31\xb9\x3d\x69\xf8\xed\xdd\xa9\x65\x1f\x0b\x0c\x7e\x0f\xc3\xa1\x50\x8e\x69\x6d\x11\xd0\x4e\x29\xe0\x3c\xc0\x3d\x4d\x94\xe0\x02\x73\x28\x3c\xe2\x19\x88\x95\x81\xc8\x40\x8e\x25\x03\x98\x61\x83\x94\xb0\x58\x02\x6e\x9d\x95\xe6\xb3\xe1\xdf\x90\x48\x9e\x34\xfc\xfa\x6e\x0d\xf3\xb1\xd2\xd6\xf7\x30\x5c\x1b\xeb\x08\x35\xe6\xe5\xae\xd2\x97\x59\x1b\xd3\x57\x0d\xcc\x70\xeb\x18\x81\xc4\x39\xe2\x61\x0e\x25\xc6\x94\x23\x6c\x05\x31\xd2\x49\x6d\x25\xb4\x10\x33\x46\xe5\xe7\x82\x9f\xdf\x18\x6a\xef\x2e\x2b\x5a\x28\x57\x39\x06\xf3\x6e\xb7\x13\x8f\xcf\x87\xd8\x47\xfe\xa9\x58\xac\x1c\x96\x94\xd8\x68\x53\x93\x80\xb1\x79\xc9\xa2\x25\x0c\x3f\x84\xac\xff\xc6\xbb\xfd\x8a\xe1\x5f\xfe\xaa\x78\xae\xff\x4f\x93\x4b\xed\xd7\xae\xe2\xb9\xe5\x14\x74\xd4\xc3\x56\x51\x0b\x89\xf3\x38\x40\x5c\x69\xee\x09\x04\x9d\x24\x8c\x21\xa1\x21\xe0\x00\x13\xa7\xa4\x27\xa9\xd4\xd6\x31\xe9\x19\xc9\x3d\x0b\x28\xb4\x96\xe3\xcf\xc0\x7f\x63\x56\x7f\x7f\x59\xb5\xb0\x33\xad\x5d\x8b\x5e\x73\x09\x4e\xbd\xce\x6d\xa2\x2f\xc3\xc6\x61\x03\xba\x38\x3f\xb7\x17\xd1\xe6\x50\x5e\x76\x97\xab\x3e\xd4\x57\xe2\x87\x00\xff\x47\xfa\xff\xd1\xc0\x7b\x00\x29\x0f\xe8\x57\x61\xd3\xb3\x4c\x61\x4c\x2d\xa7\x04\x63\xe1\x49\x4e\x08\x53\x82\x59\x0c\xb0\x67\x95\xa3\x9e\xd5\x8c\x19\xe7\x14\x05\x56\x5a\x0d\x8c\x16\xf4\x73\x99\xd5\x5f\x67\xbc\x7f\xbe\x5e\xb2\x47\xb6\xf4\x4e\x57\x75\x6e\x26\xfd\x60\xbf\x19\x21\x16\x8f\x1b\x38\x55\xa1\xd9\xe5\x7d\xef\x44\x36\xac\x36\x28\x46\xc7\xfc\xbb\x01\xdf\x7b\xae\xff\x1f\x0d\xbc\x96\x9c\x32\x03\x29\xf4\xb4\x7d\x61\xb2\x13\x1c\x21\x40\x90\x82\x48\x5b\xc9\x95\x04\x80\x68\xfc\x12\x65\x40\x69\x14\x43\x8a\x7a\x4e\x08\x29\x18\x77\x82\x59\x85\x3f\x03\xff\x8d\xc9\xe5\x49\xc3\x3f\xa9\x53\x9f\x4c\xfe\x21\xf2\x3b\x57\x8a\x7b\x8e\x79\xd4\xd3\xc0\x0a\xeb\x29\x6c\x30\x74\x4c\x7b\x18\x08\x23\x0c\x10\xc4\x78\x9a\x71\x82\xb4\x93\x94\x69\x09\xfe\x3f\xee\xde\xa3\x49\x95\xa4\xd7\x1f\xfe\x2a\x77\xf7\x2c\xb8\x11\xa4\x37\x8b\x77\x51\xb8\xc2\x7b\x57\xec\xd2\xe2\xbd\x2b\xf8\xf4\x6f\x34\xf4\x39\xcd\xed\xc3\xd3\x8e\xee\x31\xff\x8a\x99\x88\x61\x1a\x4a\x29\xe5\x4f\x99\x92\x52\x29\x49\x62\xbc\x62\x4e\x39\x29\x09\xfa\xc5\xf8\x9d\xcd\xe5\x41\xc6\xaf\xf1\xf7\x2b\xe3\x3f\x11\x7f\x87\x52\x08\x42\x8c\xd0\x84\x23\xab\x94\x31\x54\x73\xc8\x99\xa4\x8a\x18\x05\x99\x32\x5c\x4a\x05\xb1\xd7\xc8\x78\x02\x29\xb2\x50\x3a\x04\x21\x57\x0e\x1a\xca\x0c\x7e\xee\xaa\x7b\x47\xd5\xbe\x7b\x71\xbf\x73\x80\x7c\x5f\x1e\xcf\xdf\x6f\x3f\x46\xff\x0f\xc4\x7d\x90\xfe\x87\x03\xd1\x40\x58\x03\xbd\x33\x90\x02\x8f\x38\xa3\x0c\x09\xc6\x8c\x23\x9e\x22\x8e\x3c\xa3\xc2\x78\xa0\xad\xf4\x56\x18\x68\x25\x53\x08\x19\x28\x99\x76\xc8\x41\x8d\x2e\xbb\x3a\xba\x1f\x88\xfe\x9b\x18\xff\xfd\xab\xce\x63\xf4\xff\x40\xfc\x37\x0b\x1e\x29\x26\x05\x57\x4c\x62\xe0\x94\xe6\x0e\x6b\x67\x94\xf1\x52\x73\xe6\x2e\x49\x21\x02\x20\xc6\x84\x81\x1e\x3a\x0d\xbc\x40\x9e\x32\x0e\x01\x24\x9a\x68\x86\x99\x7a\xee\xa7\xfb\xf6\xe6\xf2\x49\x3b\x72\x15\xef\x6a\xe7\xe0\x8b\x76\xe4\x6f\x71\x75\x1f\xa2\x7f\x4a\xdc\xb4\x15\x79\xdd\x41\xf0\x3b\x04\x2f\x19\x81\x54\x19\x68\x91\xe7\x92\x21\xa8\x11\xd3\x90\x32\xe1\x25\xc3\xde\x0a\x6b\x99\xa1\xc0\x20\xf0\x84\x74\x4e\x90\x30\xce\x6b\xef\xa4\x75\x4e\x30\x4e\x85\x78\x16\xfc\x9d\xcd\xe5\x41\xc6\xe5\x0d\x5b\xff\x25\x1a\xfd\x58\x3c\xd2\x01\xea\xc8\xd3\xae\xc9\x2c\x15\x4c\x48\x07\x35\xf3\xca\x01\x88\x1d\x55\x8a\x73\x6d\x1d\x65\x8e\x29\x63\x91\xd5\x52\x4b\x26\x38\x70\xd4\x71\xc2\x14\x51\x9a\x3f\x77\x11\xbe\x83\xb8\x5b\xc6\xcd\x86\xf4\x3b\x53\x76\x3e\x8f\x02\x50\x0b\x5d\x34\xae\x55\x56\x8d\x6a\x86\x45\xad\x04\xa5\x8b\xa0\x72\x48\x80\x62\x37\x67\x7a\x35\xfb\x2a\x02\x9f\xfb\x7a\x74\xa8\xf7\x18\xfd\xeb\x1a\x9f\xfb\xb1\xe8\x90\x15\x1a\x51\x20\x20\xc2\x8c\x32\x0d\xad\x87\xce\x41\x6e\x10\x67\x5c\x20\xa9\x0d\x42\x4a\x13\x28\xa9\x54\x16\x51\xc7\x8c\x31\x14\x01\x27\x88\xa4\x90\x79\x7d\x39\x73\x42\xf7\x23\xf0\xdf\xcd\xf8\x67\xd7\xd8\xfe\x63\xf4\xaf\x6b\x7c\xee\x25\x3a\xf4\xcd\x6b\x2c\x80\x98\x30\xeb\xa0\x51\x18\x18\x07\x30\x24\xd2\x4a\x4f\x89\x24\x54\xd2\xa7\xad\xcc\x4b\xa3\x9d\xc5\x56\x40\x2f\xa0\x61\x48\x6b\x2a\x8d\x17\xc6\x5a\xa1\x85\xc4\xcf\xfd\x83\xdf\x41\x3c\x4c\x85\x45\xd6\x48\x8f\x7a\xcd\xfd\xca\xcc\x36\x3e\x3b\x1c\x39\x53\x8c\xa7\xdb\xa0\xd6\xa6\x71\x37\x31\x98\x9f\x61\x61\x6b\xa3\x6a\xf4\xca\x80\x7f\x00\xf1\xd1\x63\xf4\x7f\x1a\xf1\x14\x30\x6a\x2c\x37\x92\x1b\xaf\x99\xd7\x9e\x5b\x25\x88\xc4\xda\x39\x4b\xb8\xb3\xc8\x70\xe7\x35\xd6\x00\x68\xce\x15\x31\x12\x31\x89\x9c\x25\x82\x7b\x2d\x98\x22\xcf\xcd\x83\xdf\x11\xfc\x27\xd7\x58\x9f\x2b\x20\xfb\xc5\x35\xf6\xb7\xa0\x06\x8f\xd1\xd7\x37\x3b\xda\xeb\xf6\x59\xdf\x21\x78\xc5\x99\x03\x88\x01\xcf\xb4\xc0\x86\x39\x25\xb1\xa7\x84\x5a\xc8\xad\xe3\x08\x1a\xc0\xa5\x35\x18\x3a\x01\x9d\xa3\xce\x1a\x02\x3d\x7c\xf2\x5d\xa9\xd7\x44\x10\x82\x9f\x3b\x07\xdf\x11\xfc\x2d\xe3\x62\xb0\x87\xab\x95\x3e\x99\x66\xa2\xa1\xa7\x22\xd9\x29\x26\x27\x14\x2e\xb2\xa8\x6e\x4e\x87\x72\x6d\x5e\x48\x17\xd8\xb4\x32\x67\xe1\xb5\xd2\xe2\x0b\xe2\xc3\xaf\x23\x5e\x3d\x46\xff\x8a\xf8\xf0\xc7\x10\x2f\x91\x62\x94\x18\xce\x24\x63\xca\x30\xa8\x8c\x91\xd6\x03\xcd\xa9\x97\xd0\x68\xeb\xb0\xa6\x14\x1a\xe9\x24\x67\x8c\x63\x20\x10\x57\x9e\x20\x0b\x1d\x22\xdc\x98\x5f\x82\xbf\x63\x55\x3c\xc8\xf8\x75\x8d\x0d\x7f\x2c\x02\xcf\x01\xf0\x8a\x10\xad\x09\x70\x4c\x59\x64\xa8\x10\x82\x51\x66\x2c\x72\x5c\x0b\x2b\x98\x75\xd8\x62\x4a\xb9\x66\x14\x2b\xc7\x04\x27\x84\x31\xc8\xa9\x65\x44\x22\xfe\xdc\x2f\xf9\x1d\xc4\x7d\x52\xd5\xba\x71\x8e\x94\xbf\xa8\x6a\xbf\x05\xaf\x1f\xa3\x5f\xba\x91\xf6\xeb\xce\x49\xdf\x21\x78\xef\x30\x07\xdc\x6b\x4b\xcd\x93\xe6\x4a\x6a\xa8\x14\x1e\x43\x6b\x38\x94\x86\x41\x04\x85\x25\xc6\x29\xe2\x84\xb5\x56\x59\xcd\x38\xc6\x9e\x08\xc6\x80\x90\x10\x80\xe7\x66\xc9\x77\x04\x7f\xc3\x78\xba\xd1\xd9\x46\xa5\xda\x31\x39\x9d\x24\x8a\xfd\x7e\x81\xba\xe5\x36\x1d\xa1\x72\x2b\xe1\x87\x79\x70\xce\xe5\x07\xfd\x85\x5b\x54\x8a\xe4\x78\x75\xb7\x6e\x54\xfd\xeb\x09\x15\xe6\x31\xfa\xcf\xaa\xfe\x63\x09\x15\x98\x50\xe7\xb9\x17\xf4\x69\x7d\x45\x92\x3b\xec\xa5\x24\xde\x39\x8f\xb8\xd4\x0c\x0b\x88\x9e\x9c\x68\x01\xf5\xe5\x0c\x00\x7a\x06\x29\x14\x54\x11\xcc\x84\x23\x02\x3d\x0b\xfe\x8e\xaa\x3f\xc8\xf8\xb3\xaa\xff\x58\x72\x28\x52\x90\x70\x4c\x2d\xd7\x80\x42\x20\x31\x95\x84\x10\xf5\x64\x2c\x71\xc7\xbd\x93\xc8\x48\xe1\x24\x92\xd4\x22\xad\x18\xd4\x80\x3a\x44\x2d\xf4\xdc\x39\x08\xbc\xc5\xcf\x8c\xdf\x89\x4e\x3d\xc8\xf8\xd5\x57\x0f\x7f\x2c\x3b\x94\x78\x49\xa5\x40\x80\x29\x0d\xb9\xf1\x88\x6b\x6a\xb0\xd3\xd2\x49\xc0\x2c\xc3\x4e\x3b\x87\x18\x62\x8c\x12\x08\x91\x53\xda\x5a\xa4\x8d\xe3\xda\x43\x64\x8c\xf1\xbf\x66\xfc\x4e\x7a\xe8\x83\x8c\x5f\xd3\x43\xc3\x1f\x4b\x0f\x15\x14\x69\x85\xa8\x03\x8e\x28\x05\x89\x54\x08\x59\x03\x25\xd6\x46\x33\x42\x95\x93\x4e\x2b\x84\x1d\xf7\x9c\x60\xf4\xb4\x1a\x61\x2d\x21\x20\x9c\x38\xa9\x99\xa2\xfa\x99\x71\xfa\xed\x8c\x17\x2a\x2f\x8c\xff\x44\xb6\x9a\x30\xc6\x00\x83\x84\xc1\x4e\x4a\xc5\xb0\x31\x54\x6a\x65\xb9\x75\x06\x7b\x6a\x28\x73\x1a\x4b\x82\x0c\x25\xc2\x19\x4b\x80\x36\x58\x1a\x0a\xa4\x65\x1a\x08\x68\xc9\x33\xe3\xec\xdb\x19\x0f\x97\x2f\x8c\xff\x44\xd2\x92\xc0\x08\x40\x00\x89\x10\x00\x70\xec\x85\xf3\x9e\x79\x04\x95\xe3\xcc\x51\x68\x90\x21\x5e\x79\x8a\xb1\xa3\x14\x5c\x52\x84\x11\x02\x54\x13\xa1\x80\x44\x92\x5d\xb2\xc5\x9e\x18\xbf\x53\xa3\xf2\x41\xc6\x73\xd9\x17\xc6\x7f\x22\x69\x89\x49\xcf\x88\x72\xc0\x0b\x20\x35\x10\x52\x32\x03\x3d\x96\xc4\x39\x2e\x29\x00\x50\x11\xe0\x9c\x63\xf2\xb2\x91\x52\xa5\x19\xd6\xde\x42\x89\x91\xc5\x4a\x79\x8d\x9e\xfb\xdf\xdf\xd9\x4e\xbf\x9b\xf1\x9b\x7a\x0b\x9f\xb1\x4b\x7e\x8f\xa7\x3c\xe8\x8f\x46\xba\x9f\xda\x0e\x5a\x74\xa2\x11\x78\x1a\xeb\xff\xb9\x02\xe5\x8b\x78\x70\x82\xd1\xb0\x7d\x5a\x4f\x4e\x8d\x7c\x76\x12\xf5\x0c\xae\xae\x46\x09\x0c\x6a\x40\x9b\x78\x3b\x6a\xd4\x8b\xa3\x41\x26\x7b\xad\x34\x72\xf7\x0a\x54\xfe\x66\x32\xa6\xb9\x72\x98\x9e\x6c\xeb\xb4\x90\x1c\x77\xe1\xa9\xd6\x5f\x97\x83\x79\x75\x0c\x0e\x0b\x92\x92\x95\xb8\x89\xba\x14\xaf\xce\x69\x57\xb9\x5e\xf6\x4a\x77\x83\xc3\xf0\x7a\xcf\xe1\x62\xc2\x15\x5e\x01\x29\x88\x0e\x47\x9b\x96\xe9\xe6\x76\x13\x99\x8c\x1d\xf4\xaa\xe1\x76\xad\xaa\xbe\xdd\x14\xfa\x74\xdc\x4e\xf6\xba\xd1\xcc\x07\x33\x2d\x52\xfe\x9a\xfd\x72\x79\x29\xea\x92\xa8\x07\x8f\x3a\xec\xec\x23\x24\x77\x97\xd7\xde\x5e\xa1\xca\x9f\x2c\x32\xbb\x5e\x21\x2b\xd6\x4b\x31\x4d\xc5\x05\x94\x5b\x54\xcf\x2a\xf2\x3b\x99\xd9\x85\xb8\xa2\x0b\x9d\xcc\x29\xea\x35\xe2\x5a\xe3\x35\xd8\x3e\x78\xa8\x85\x8d\x25\x5c\x61\x08\x1d\x40\x94\x10\xe6\x39\x32\x14\x10\xc4\x34\xd5\x94\x10\xe2\x28\x62\x90\x60\xe8\x0d\xe5\x0c\x38\xe1\x28\x27\x8c\x1b\xc1\x8d\x25\xd2\x9b\xe7\x26\xff\x77\x00\x66\x1f\x03\xd8\xb5\xc8\xf2\x15\x60\xc3\x7f\x0f\xc0\x86\x8f\x01\xcc\xbf\x00\xac\xf8\xff\x06\xc0\x90\x94\xd6\x30\x86\xa1\xa5\x82\x2a\x4a\x95\xc3\x0c\x20\xcf\x18\x70\x86\x6a\xaa\x00\x10\xc2\x22\xa2\x20\xd1\x98\x10\xc3\x91\x33\xc6\x20\xc5\x90\x95\x4a\x48\x2c\x9e\x00\x76\xff\x44\xc1\x3d\x06\xb0\x94\x78\x01\xd8\xf4\xdf\x03\xb0\xe3\x63\x00\x0b\x5f\x00\x56\xfa\x7f\x03\x60\x5a\x4b\x7b\x35\x72\xa1\x57\x8e\x02\xf8\xe4\x00\x00\x60\x8d\x04\xd0\x70\x60\x09\x27\x42\x2a\xc6\x21\xc3\x16\x29\x4c\xbc\xd4\xd8\x61\xa4\x24\x82\x8a\x02\x7b\x59\xc1\xee\x1f\x20\xf8\xc7\x00\x76\xb5\x84\xae\x00\x5b\xfe\x13\x01\xf6\x47\xb7\x97\xe0\x95\x8b\xf6\x05\x80\xf9\xdd\x0b\xc0\xca\xff\x44\x80\xa5\x3e\x0d\x30\xa6\xb1\x30\xd6\x52\x03\xb9\xf5\x08\x40\x6c\xa9\xa2\x0e\x41\x68\x88\xc6\x08\x41\xa1\x99\x76\x12\x02\x44\x31\x64\x1a\x2a\xa5\x91\xd0\x06\x22\x0c\x19\x83\xd4\xd2\x67\x80\xdd\xf1\xac\x87\x0f\x01\x4c\x5e\x8f\xe6\xae\x00\x3b\xfe\xd3\x01\xf6\x51\x83\xd7\x72\xe1\x21\xf7\xca\x2b\x84\x21\xb7\x4c\x79\xc6\xa5\x83\x8e\x12\x04\x3c\xa6\x10\x01\xee\x3d\x83\xc6\x7a\x8f\xa0\x61\x00\x38\x25\xbc\xa0\x90\x52\x8d\xdd\xe5\x54\x0a\xdf\x3f\x95\x7a\x20\x70\x56\xb1\x69\xca\xbe\x18\x38\xfb\x2d\xbc\xd1\x63\xf4\xc9\x4d\xda\xe8\xeb\x16\xb8\x6f\xd1\xff\x70\x8c\x1e\x50\xab\x94\x43\x18\x68\xf8\xe4\x38\x3f\xb9\xcb\x02\x2b\xcd\x2c\x11\x4f\xc0\x87\x1e\x7b\xce\x19\x83\x8a\x5b\x01\xa9\xe7\x0c\x01\xe3\x1c\x52\x52\x00\x49\x04\x78\x12\xfc\xfd\x53\xa9\x1b\xc6\xd3\xad\x55\x15\xaf\xd3\xdd\x14\xae\xe1\xf3\x41\xf7\xb7\x7a\x39\x1a\x9d\x5d\xc6\xe4\x26\xd9\x53\x2a\x8a\x12\xd3\xaa\xcc\x26\xf2\xe5\xee\x6c\xf7\xea\x54\xaa\xf0\xf5\x18\xfd\xf8\x31\xfa\xd7\xc0\x5d\xe1\xc7\x62\xf4\xc4\x21\x42\x90\x77\xc8\x09\x6b\x85\x61\x82\x51\x0e\x8c\xf4\x14\x73\x65\x34\xf2\x4f\x3b\x1a\x56\x52\x08\xec\x85\x85\x52\x6a\xe6\x09\x07\xd0\x69\x24\xa4\xc6\xea\x22\xf8\xfb\xa7\x52\xdf\xcd\xf8\x67\xcf\x61\x27\x8f\xd1\xbf\x06\x0e\x0b\x3f\x76\x0e\x4b\x88\xd1\xcc\x08\x67\x89\xd5\xce\x50\x82\x94\x87\x4a\x59\x84\x01\x80\xd6\x4a\xcb\xb8\x30\x1e\x4a\x23\x0c\x61\x50\x31\x8a\x1d\x67\x48\x71\x44\xb1\xb3\xce\x5e\x22\xa6\xf8\xfe\xa9\xd4\xdf\xc4\xf8\x6f\xc1\x4f\x1f\xa3\x7f\x0d\x5c\x5e\xe9\xff\x44\x92\x11\x45\x58\x08\x25\x85\x23\x0e\x33\x03\x39\x27\x52\x49\x82\x39\x41\x1c\x18\xc3\xa8\xb6\x9a\xa3\x4b\xc9\x76\x88\x38\xf7\x40\x52\xa5\x94\xf0\xd0\x28\x69\x31\x42\x17\x8b\xed\xfe\xe1\xcc\xdf\xc4\xf8\x6f\xc1\xcf\x1e\xa3\x7f\x0d\x9c\x5e\xe9\x37\x7e\x40\xf0\xca\x3b\x2d\x80\x00\x14\x21\xa7\x15\x87\x46\x61\x24\x10\xa2\x5a\x1b\xcf\x31\x04\x48\x3a\x6b\xbc\x42\x94\x18\x81\xb8\x21\x54\x3b\x2a\x80\x56\x4e\x52\xc3\x11\xbe\x6c\xae\xf7\x0f\x67\x1e\xd8\xdc\x32\x85\x24\x5f\x7e\x71\x73\xfb\x2d\xf8\xf9\x63\xf4\x17\x37\x3f\xff\x2f\x64\x1e\x3b\xa3\xc0\x94\x58\x2f\x00\x82\x10\x12\x28\x94\x94\xd2\x61\x68\x90\x64\xc4\x42\xa6\x85\xf3\x4e\x38\x22\x91\xe6\x96\x13\xeb\x28\x91\x58\x0a\x44\xa1\x04\x0e\x02\x02\xfd\xb3\xe0\xef\x98\x90\x0f\x32\x3e\x7b\x09\x03\xfe\xd1\x78\xf3\x3b\x18\x87\x90\x03\xea\x25\x31\x96\x51\xcb\x35\xe3\x58\x41\x44\x94\xa0\xc6\x61\x26\x8c\xb8\x74\x1e\x12\xde\x2b\x67\xbd\xe7\x50\x62\x40\xac\xf0\x82\x48\x8a\xa9\x26\xee\xb2\xb9\xdd\x8f\x5f\xde\x30\x9e\xa1\xc5\xc9\x58\xaf\x13\x4d\x4f\x27\xdb\xce\xa9\x81\x92\xbb\xf0\x9c\x3e\x8e\x9b\x43\x30\xb0\x74\x31\x91\x93\xa0\x19\xc0\xd6\x74\x72\xbe\xf6\x50\x7f\xb1\x2a\x8a\xff\xe5\x12\xd2\x7f\x67\xfc\xb7\xe0\x17\x8f\xd1\xbf\x6e\xae\xc5\x1b\xdb\xfa\x7b\x05\xcf\xbc\x22\x8c\x6b\x8a\x3d\xc5\x82\x59\xce\x95\xc5\xd4\x20\x0a\x90\xb3\xc8\x58\x6c\xad\xd0\x84\x01\x45\xb5\x43\x48\x33\x8d\x04\x14\x5a\x40\x6d\x2c\x76\x16\x59\xf5\x9f\xff\xfd\x1f\x72\x3f\xae\x77\x23\xf8\xf4\x46\xaf\xe3\xe6\xa9\x9b\xc4\x53\xed\xa2\x4c\x6d\x3d\xce\x1d\x33\x21\x9a\x71\xda\x2a\xae\xc7\x62\x13\xd4\xa6\xa5\xa4\x6e\xe1\xd5\xb6\x7f\xfc\x36\xc1\x2f\x1f\xa3\xff\xd3\x82\x07\xda\x68\xc6\x95\xc2\xec\x12\x4d\xb5\x88\x10\xef\x8c\xf7\x58\x01\x83\x25\xf7\x02\x7a\xac\xa4\x86\x98\x20\xc1\x84\x90\x8c\x3a\xce\x99\x25\x84\x1b\xa0\xa1\xfb\x25\xf8\x3b\xaa\xfe\x20\xe3\x57\xab\xe2\xca\xf8\x4f\x9c\xc3\x32\x8b\x1c\x06\xde\x52\xfe\xb4\x90\x79\xe4\x90\x86\x18\x39\xa8\x8d\x84\x8a\x12\xa1\x30\x93\x50\x48\xed\xb4\xe7\xdc\x69\xa4\xb1\x15\x48\x42\x04\x95\xb4\xc8\xd0\x27\x55\x27\xf7\x03\x7d\x3f\xa8\x6a\x95\x37\x18\xff\xfd\xfd\xd5\x63\xf4\xdf\x12\xfc\x5b\xf4\x3f\xbc\xab\x0b\x8c\xbc\x67\x1c\x08\x6a\xb4\x74\x9a\x79\x68\x88\xe6\x04\x78\xe6\x00\xc6\x5a\x49\x4d\x81\x50\x9e\x23\xea\xb5\x47\x00\x13\x26\x39\x92\x8a\x11\x05\xa5\xf4\xfe\x59\xf0\x77\x10\xf7\x20\xe3\x57\x73\xaa\x38\x0c\xee\x1c\x80\x7f\x07\xe3\x96\x71\xe3\x35\xe2\x50\x09\x21\x1d\x17\x94\x78\x6f\x19\xd4\x40\x38\x65\xac\xe3\xcc\x52\xe6\x38\x15\x84\x31\x6f\x30\x57\xc2\x39\x83\x2c\x56\x04\x38\x2f\x34\x24\x4f\x8c\xdf\x8f\xfc\xfd\x4d\x8c\xff\x16\xfc\xfa\x31\xfa\x57\x3b\xf2\x4a\xff\x35\xa1\xef\x10\xbc\x24\x54\x33\xc8\xa1\x75\x9c\x70\xa5\x31\xc2\x1a\x1b\xab\x28\x42\x12\x48\x8c\xad\xc7\xd2\x59\xcb\x01\x83\x9e\x39\xc4\x00\x67\x88\x31\xec\xbc\xa1\x50\x1b\xa3\x2f\xaa\x7e\x3f\x48\xf3\x75\x73\x66\x79\x1c\xd2\x64\xee\x8b\xe6\xcc\x6f\xc1\x6f\x1e\xa3\x9f\x79\x89\x0c\xfd\xd1\xd7\xf6\x2d\xfa\x1f\x2e\x08\x06\x38\xc7\x16\x70\xa5\x15\xc2\x16\x42\xc7\x14\x60\x1a\x20\xc8\x04\x42\x92\x68\x07\xbd\xf4\x08\x20\x85\x24\x62\x02\x71\x80\x10\xc5\x92\x31\x64\x1c\x32\xfc\x72\x5a\x47\xee\x07\x69\x6e\x18\x4f\xd7\x12\x74\x3d\xe9\x88\x43\xb7\x4d\x8a\xcb\x62\xf2\x90\xe4\x1b\x72\x4e\xe6\x5a\xa6\x65\x9b\x4d\x50\x2b\x1c\xd7\x28\x7b\x18\xef\xeb\x23\xfe\x6a\x57\x2f\x7d\x3d\xbb\x6a\xfb\x18\xfd\xeb\x1a\x5f\xfa\xb1\xec\x2a\xaa\x09\x32\x9c\x03\x82\x3c\x20\xda\x73\xc8\x18\x95\x0a\x50\xc7\x8d\xc2\x9e\x70\x80\x95\x07\x58\x28\x6e\x15\xa7\x1a\x02\x2d\x28\x16\x1c\x70\x23\xbd\x87\x1c\x5d\xd6\xd8\xfb\x41\x9a\x1b\xc6\xbf\x82\xb8\xf4\x4b\x9e\xc9\xa7\x10\xf7\x5b\x50\xbb\xc7\xe8\xdf\xe4\x2b\xa7\x7e\xa4\xd4\x24\x22\x9e\x08\xa6\x2d\x47\xc8\x5b\x28\x38\xd5\x82\x60\x81\xa5\x13\x02\x68\xeb\x9c\xc2\x88\x38\x44\xad\xe6\x80\x29\xc4\x94\xa7\x8e\x58\xa5\x84\xa1\x80\x43\xa7\x9f\x04\x7f\x3f\x48\xf3\x45\xc6\xb7\xaa\x44\x77\x33\xf0\x65\xc6\x7f\x0b\x7e\xff\x10\xfd\x44\xf2\x85\x68\xea\x27\x92\xac\x38\x02\xdc\x3a\xaa\x39\x45\x04\x3b\xa0\x01\x43\x06\x0b\x8c\x3d\x15\x1c\x60\xa6\xb9\x93\x9e\x11\x42\xb1\x76\x44\x7a\x4f\x81\xc7\x1e\x7b\x6b\x38\x85\xcc\x19\xf6\x4b\xf0\x77\xee\x77\xdf\x08\x3e\x33\xc1\x76\x98\x6d\xac\x60\x95\x76\xb0\x4f\xb5\x6a\xe9\x38\xb9\xd8\xd0\xfe\x6e\x9c\x9e\x57\x8b\x68\x59\x29\x0e\x2a\x71\xa2\x12\x95\x70\xf1\x58\x0e\xc7\x87\x34\xff\x75\xa4\x50\xfe\x7a\x3c\x78\xff\x08\xfd\xec\x73\x51\xf6\xf2\x8f\xc5\x83\x9d\x92\xd8\x79\x2b\x0c\xf2\xc4\x11\x6a\x00\x86\xc2\x30\xe9\x8c\xa4\x82\x21\xac\x80\x23\x98\x13\x4f\x80\xa5\x4c\x3a\x67\x20\x22\x96\x60\x23\x14\x25\x96\x21\xca\x9e\x04\x7f\x3f\x3a\xf6\x33\x88\xfb\xd2\x71\xd3\x87\x26\xea\xf0\xd8\x78\xe5\x8b\xc3\x94\xea\xfc\xe0\x78\x3f\x3c\xb1\x5a\x50\xc1\xcc\xa5\xae\x22\x31\x1e\x39\xc1\x88\x46\x14\x41\x49\x84\x92\x1c\x59\x4d\x11\x27\xd6\x21\xc2\x38\x66\x4c\x12\x86\x1d\x30\x5c\x20\x62\x9c\x03\xd7\x89\xbd\x1f\x7d\xfb\xb2\xa0\x76\xb3\x64\x9c\x18\x25\xb3\x7f\x8d\xa0\x7e\x4f\xec\xf1\xb1\xf1\xca\x97\xe0\x41\x2a\xfa\x07\x4c\xac\xf4\xde\x33\x28\x21\xe3\x90\x79\x8d\x28\x05\x80\x60\xaf\x8c\x64\x42\x19\x66\x20\x16\x00\x29\x4f\x21\x67\x0a\x02\x6f\x90\x84\x40\x78\xe3\x0d\x21\xd4\x79\x0a\xf1\xd3\xc4\xde\x0f\x72\xdd\x0e\x31\x2e\xb4\x73\x8d\x98\xcc\x73\xd8\x24\x4c\xb2\xe8\x24\x8c\xb7\x6b\x50\x9d\xb6\x7d\xad\xd7\xe9\xee\xf4\x98\x07\x93\x4e\x79\xb5\xe0\xe1\xab\xa3\xb3\xff\xb2\x3b\x7d\x64\xa2\xe2\xc7\xe8\x5f\xad\xb2\xca\xcb\xfb\x3e\x48\xff\xc3\x1a\x45\x18\x90\x50\x00\x4e\xa1\xe3\x1c\x20\xc2\x98\x12\x82\x50\x41\xb9\xf5\x04\x3b\x62\x21\x25\xce\x08\xa2\x99\x56\xf6\xc9\x0a\xa6\x80\x7b\x07\x91\x87\x56\x79\x29\x9f\x05\x7f\xc7\xf3\x7d\x90\xf1\xab\xcb\x7f\x65\xfc\x27\xfc\x00\x22\x08\xa4\xc6\x02\x6f\x95\xd4\x46\x2a\xa7\xa1\x07\x9a\x40\xa9\xbd\x46\x52\x72\xcf\x15\x52\x0a\x6a\xe8\x3c\x72\x14\x2a\xc0\x00\x32\x0c\x42\x40\xbc\x41\xd8\x98\x67\xc6\xef\xe4\xbc\x3f\xc8\xf8\xd5\xf3\xbd\x32\xfe\x13\xe6\x20\x83\xcc\x30\x20\x01\xe1\xce\x0b\x2f\x8d\x92\x40\x28\xc2\x9f\xfe\x51\x44\x6b\x00\x05\x21\xd2\x50\x26\x29\x91\xca\x22\xa3\x18\xa0\x12\x28\xa5\x39\x41\x8c\xbb\x4b\xe7\x8c\xfb\x61\xcd\xef\x66\x3c\xf3\x31\xc6\x7f\x0b\xfe\xf4\x18\xfd\xe2\xcd\x35\x83\xc6\x27\xe8\x7f\x38\x90\x6f\xb9\xc0\xd8\x10\xaf\x94\x06\xc2\x31\xc4\x80\x54\xc6\x63\x0e\x89\x85\x5a\x69\x87\x38\x43\x50\x21\x8d\x91\x70\xd6\x63\x4e\x18\x75\x52\x2a\xe5\xb1\x90\x46\x3d\x99\x83\xf4\x7e\x74\xef\xbb\x19\x4f\x7f\x52\xf0\xe7\xc7\xe8\x5f\x73\xfe\xaf\xf4\x3b\x9f\xa0\xff\xe1\xaa\x33\x42\x21\xf1\xb4\xab\x58\xc2\x05\xf1\x98\x2b\xae\x00\x17\x0e\x7a\xe7\x3c\x70\x1a\x03\xa3\x18\x71\x52\x12\x8e\x09\x43\x54\x19\xe2\x14\x60\xdc\x18\x76\x69\xb7\xfe\x24\xf8\xfb\x41\xae\xbf\x89\xf1\xdf\x82\x07\x8f\xd1\xbf\xde\x39\xb8\xd2\x8f\x7e\x40\xf0\xd6\x53\x0f\x9c\xd0\x58\x53\x8c\xad\x95\xc6\x2a\xe0\x3d\xa7\x04\x68\xe7\xb1\x93\x0e\x4a\xcc\x24\x60\xc0\x0b\x45\x34\x20\x90\x68\xe0\xb0\x81\x9a\x60\x48\x35\xbc\x34\x8b\xb9\x1f\xe4\x7a\xc0\xfc\x41\x96\x4f\x76\x7f\x91\xf9\xf3\x7b\xa2\xe0\x63\xe3\xdd\xbc\x9c\xe8\xa6\xcc\x0f\x8e\xf7\xe3\xd7\x87\xb4\xb6\x48\x53\x2a\x28\xc3\x14\x0a\x85\x85\x93\x9a\x13\xa9\x2d\xd1\xc2\x38\xcb\x80\x96\x5e\x6b\xcd\x15\xd3\x48\x60\x07\xa9\x72\x52\x50\x22\x30\x40\xca\x5c\x34\xea\x7e\x10\xed\x01\x41\xed\x8a\x64\xa6\xff\x22\x41\xfd\x9e\x58\xf4\xd8\x78\xa3\x17\x0d\xbe\xed\x2d\xf3\xb7\x4d\x2c\xd5\x5a\x3b\xeb\x35\x45\xce\x5b\x68\xa9\x95\x1c\x3b\x84\x28\x01\x80\x10\x85\xb8\x16\x10\x52\xce\x11\x86\x04\x49\xec\xb0\x56\x42\x43\xaf\x21\x72\x0c\x1b\x85\xdc\xd3\xc4\xde\x0f\xd2\xfd\x4b\x04\xf5\x7b\x62\xf1\x63\xe3\xed\xbf\xbc\x3d\x35\xfd\x07\x4c\x2c\x52\x02\x50\x0e\x91\x61\x16\x02\x2f\x1d\x7f\x32\xf5\x8c\xf1\x94\x28\x27\x91\x42\x9a\x68\xe8\xa8\x60\x84\x42\xef\x04\xc4\x58\x21\x82\xb1\x80\xcc\x33\x4d\x19\xbf\x2c\xc5\xf7\x83\x80\x37\x82\x0a\x54\xbf\x40\x46\x59\x64\xcb\x4b\x53\x69\xb5\xa2\x28\x68\xa3\xf4\x6c\x3a\x6b\x99\xdd\x14\xd9\xf1\xa9\x5e\xc3\x6c\x66\xfb\xb9\x7c\xf2\xaa\xe6\x2f\x0e\x56\xf5\xeb\x61\x6f\xf2\x18\xfd\xab\x83\x55\xfd\x62\xd8\xfb\xbf\x36\x7b\xfc\x9e\x4e\x8f\x3f\xdd\xe6\x31\x2c\x8b\x7c\xe3\xd0\x98\xea\x12\xca\x07\xb8\xd7\x9d\x34\x37\xa5\xf9\xa4\x0f\x80\x0f\xc5\xb6\x5c\xe0\x73\x90\x6d\x1e\x8b\xbd\x64\xd0\xbf\xcc\xf2\xed\xc5\xfd\xff\x2b\x99\x67\x8c\xe7\x48\xa5\x13\xbd\x21\xb9\x34\xab\xf2\x65\xd1\x14\xc7\x9d\x73\xbb\xd7\xcc\x94\xa5\x48\x4d\xb0\xef\x6e\x8a\x9d\x14\x94\xc7\xdc\x21\x7d\xce\xe6\x47\x62\xb1\x48\x16\xae\xe5\x91\x67\x8d\x32\xbd\xfd\x7d\xf7\x57\x62\x7b\x2a\xe8\x97\x58\xbd\x0f\x76\x38\x2c\x27\x48\xdb\x54\xdb\xa5\x54\x21\x25\x0f\xd3\xb5\x1a\x75\x2a\xe3\x38\xd1\xf4\x49\xde\x8b\xa8\x65\x51\x71\x3b\x77\xa9\x46\x62\x49\x3b\xe5\x62\xef\x70\x1e\x7a\x83\x55\x3b\x26\x3e\x99\x49\x77\xfa\x86\x92\x92\xa9\xf9\xb4\x3f\xaf\xf3\x60\x9f\x69\xfc\x7f\xff\xdf\x7f\xfe\xf7\x7f\xfe\x23\x5d\xa6\x29\x1b\xe9\x13\xa8\xb4\x40\x99\x8f\xa7\xb5\x6a\x7f\x67\xa7\x87\xdc\xa4\x59\x6b\xc9\x4c\xa9\xde\x8c\x6b\x87\x46\x7e\x3b\x50\x95\x97\xf8\xd8\x1f\xb2\xb9\x87\x98\x5f\x72\x0f\x7e\xa3\xed\xc6\xe2\xaa\x7c\x87\x9c\xfe\xf4\x59\xde\x1d\xd7\xaf\x79\xba\xa1\xff\x09\x5c\x64\x5c\x1a\x6d\xbb\xd5\x28\xa4\xef\xf6\xb9\xb8\x4b\xff\xcf\xe5\xeb\xa7\x7b\x6c\x7e\x1d\xf4\xaf\xcd\xe3\x3f\x18\xfa\x42\x4f\xb8\xdb\x52\xc6\xa9\xdf\x6b\x7e\x36\x1d\x74\x56\xb5\xc4\x28\x1e\x0f\x55\x32\x1a\x36\xb7\x5d\xbc\xc9\xad\x52\xc5\x93\x1d\xd6\x4e\x0b\xd0\xae\x17\xe6\xc5\xb4\x6a\xa4\x2b\xe3\xe9\x74\x1c\x26\xb6\xd5\xfe\xa6\x91\xda\x46\xfd\x49\x71\x33\xab\x8d\xc3\x49\xb8\xed\xe0\xcd\x94\xec\x0f\xe1\x4c\xd0\x60\x33\x8e\x32\xb2\x5e\x8d\xf2\x4f\x00\x1c\xec\x8b\xc9\xed\x72\x74\x3c\xc1\x62\x8f\xad\x8a\xa8\x25\xb6\xe3\xd2\x6e\xcf\x56\x9e\xa7\x51\x71\x35\x5e\xab\x75\x65\x51\x20\x7b\xe6\x5e\x86\xf6\x38\xb8\x6f\x10\x51\xa3\x8d\xb0\x55\x6a\x4c\x4d\x76\xd3\xcb\xac\xe5\xb8\x74\x74\xf3\xe5\xec\x14\x1f\x44\x39\xd3\x1d\xa4\x8e\xbd\x72\xa3\x35\x8e\x56\x7c\x9c\xb9\xd6\x04\x7a\x01\xf7\x5b\x85\x51\xdf\x01\xf7\x0d\xfd\x4f\x82\x7b\x73\x90\x95\xea\xfb\x55\xb7\xbf\x0a\xee\x6f\x6e\x64\xfa\x49\xe1\x0e\x5e\x24\x74\xf7\xae\xdc\xf5\x79\x1d\xd1\x7e\xfd\xf7\xff\x92\xda\x7e\xef\x69\xfd\x02\x7f\x2a\x68\x9d\x41\xb0\x1b\xb8\xea\xb9\xdf\xea\x4f\x27\xf5\x69\xa9\xe8\x6b\x59\xa1\x3a\xed\x60\x5f\x6f\xb2\x55\x5c\xa9\xe8\x1c\xc6\xfc\x18\x67\xf1\xf1\x5c\x6b\x67\x54\xd7\x64\x1a\xa8\x4a\xeb\x38\x2b\x2b\x25\x93\xf0\x5a\xe7\x46\x03\x59\x4a\x00\x9e\x28\x82\x63\x25\x9c\xed\x9a\xa9\x67\x20\x32\x1b\x4e\x82\x60\xb3\xae\x2e\x1a\x71\xe3\x50\xde\x91\x86\x6e\x9f\xce\x3e\x03\x13\xe3\x5c\xba\x56\x3f\x85\x60\x36\x31\xe5\x5e\x58\xcb\xbd\xcc\xe6\x7d\x90\xdf\x16\x21\xb8\x0b\xf2\x9b\x9d\xf0\xe6\xbb\x5f\x00\x39\xd9\xdd\x1c\x88\xdd\xb7\x87\xbe\x0a\xb2\x6f\xee\xda\xfa\x75\x90\xbd\xb1\x82\xbe\x07\xb2\x37\x9e\x6b\xb4\x0e\xb5\x29\xac\x8c\x91\x9f\xcc\xd3\x11\x19\x24\x9a\xb4\x58\xab\xc2\xf2\x6c\xbf\x3e\x6f\x16\xab\x79\x3b\xee\x14\xfb\xed\x55\x32\xc0\xb9\xe6\x6b\x63\xef\x06\x94\x99\xd5\xb4\x52\x31\x7c\x3a\x9d\x46\x93\xcc\xb2\x7e\xf4\x9d\x59\x2d\x2b\x77\xe5\xe8\xd0\xcb\x17\x92\xf3\x44\x2a\xe5\x92\xc3\x74\xa9\x0a\x4d\xf7\x90\xcd\xc1\x4e\xaa\xeb\xd2\xe9\x7d\x98\x6a\x4f\xf6\x9b\x13\x69\xaf\x97\xf1\x6a\x56\x9a\x91\xea\x20\x5f\x6c\xb5\x69\xb2\xb6\xd9\x90\x7e\xfa\x19\x38\xf3\xee\xbe\xa5\xfc\x82\xc6\x95\xfc\xfa\xbc\xe8\x36\xb2\xd1\x08\xe9\x1e\x2b\xd1\x20\xee\x64\xe3\x42\x21\xab\x3a\xd9\x2a\x1a\x8a\x1d\x78\x99\xfd\x7f\x1e\x28\xff\x58\x84\x53\xdf\x36\x0f\x77\xbd\x99\x9f\x6e\xc5\xfb\x75\x30\xbf\xb6\xb5\x3e\x0b\xe6\xeb\xe7\x97\xa4\xca\xf4\xcb\xf7\xef\x9e\x78\xa4\x7e\xb7\xc0\xcd\x66\x86\xb3\x66\xf3\x34\xdf\x95\x27\xc7\x44\x61\x3e\x0f\x8f\xed\x71\xaa\x5d\xca\xf2\x3e\x4f\xa0\xf4\xe9\x38\xcb\x1f\xc5\xda\xd9\xc4\x8e\x22\xd0\xd2\xc1\x70\x68\xd6\x7a\x79\xa2\xa5\x7e\x51\x65\xeb\x14\x26\x8f\xcd\x56\x25\xde\x0d\x3a\xc3\x4c\x2d\xe7\x55\x66\x21\x33\x1e\x90\x6c\x70\xb1\x7d\x09\x2e\x4d\xe7\xcd\x6e\x97\xee\x4a\x8d\x63\xda\x27\x27\xbd\x61\x61\xb5\xda\xad\xca\xbc\x5d\x6e\x9f\x06\x8b\xfe\x32\xdc\xb4\x06\xc3\xde\xf8\x85\xc7\x7f\x05\x48\x87\x85\x1b\xf9\xfe\x38\x48\xbf\xb9\x6f\xf2\xd7\x41\xfa\x5a\x12\x9f\xdd\xd6\xff\x0c\x09\xdf\x7b\xc6\x2f\x2b\x28\xa9\x37\x03\x07\xdc\x22\x09\xe8\x20\x8f\x66\x2e\xed\xda\xb5\x6d\xac\xdb\xc0\x74\xf6\xf8\x38\xec\x8c\x7b\x1d\xb3\xcf\x4c\xc9\x49\x89\x30\x39\x2c\x48\x30\x9a\x75\xd9\xea\x5c\x8b\x4e\x41\x8a\x0d\x76\xd4\x57\xf9\xaa\xb9\xa9\x37\xcb\xc9\x5d\x7b\xb6\x98\x0c\x3b\xc1\x44\xa5\x0e\xbf\xfa\x32\xa7\x82\xdc\xdc\x86\x4d\x56\x1c\xec\xa7\xa5\x62\x27\x8d\xbb\x1b\x14\x65\x8b\x49\x44\x42\xbc\x73\xdb\x75\xfb\x40\x4c\x97\x76\x4c\xb0\x3c\x37\x47\x2d\x94\x38\x82\x7a\xd4\xed\xae\x1d\x6f\xb4\xe7\xb5\x4a\xb5\x15\xf6\x93\x69\x5c\x8e\xeb\x70\xd7\x3a\xac\xfa\xb6\x93\xac\x8d\xa2\x6d\x2d\x73\xbc\x02\x74\xdd\x18\xb9\x6c\xf2\xb0\x4a\x64\x49\x9e\x9c\xd2\x43\x98\xed\xb6\xb5\x0b\x0f\xc7\x6d\x32\x8a\x13\x8d\x68\xb0\x74\x81\xdf\x81\x4d\xab\xf8\x12\x5c\x7c\x1c\xfc\x37\x1e\xf3\x57\xc0\xbf\x78\xfd\xd2\x3f\xc0\x9f\xfe\x8b\xc1\xff\xcd\x4d\xa5\xbf\xee\xb0\xbd\xb1\x42\x3f\xcb\xdb\x6d\x72\x8d\x66\xb9\xb9\x4e\x8e\x70\xdf\x93\x6c\x76\x93\x5d\x9f\xf9\x32\x23\x8f\x53\x04\xce\xfd\x84\x4d\x8e\x88\xed\x1b\x9e\x69\x5f\x3c\xfd\x37\x1c\xb6\x8c\xd8\x15\x72\xa7\xe5\x50\xd6\x5c\x7a\x3d\x56\xa9\xaa\x8f\x73\x36\x98\x2d\x5c\x35\x6a\xfb\xc9\xb2\xda\xa9\x94\xc6\x2c\x57\x4c\x47\x34\xb5\x76\xf3\x45\x26\x15\x87\xcb\x18\x4f\x4a\xad\x64\x1c\x93\xf3\x2a\x0e\xda\xcb\x6c\x6e\x85\x23\x54\x49\x54\x9b\xc5\x42\x87\x0c\x93\x79\x50\x7c\x02\x4e\x86\x2f\xd2\x64\x38\x0b\x0b\xe3\xed\x84\xd8\x7c\x2f\xaa\x32\x6b\x73\x76\xdb\x30\xc9\xc1\x76\xb0\xa0\xb0\xd7\x1b\x66\x45\xfe\x30\x36\xdf\x19\x8d\xb8\x89\x9e\x67\x16\xeb\xb8\x93\x6d\x01\x75\x20\x16\xe2\x44\x2a\x55\x8a\x4b\xdb\x04\x0b\x92\xa6\x58\xdd\x55\x60\x72\xe1\x89\xcb\x77\x71\xed\x08\xd8\xe5\xfb\x2f\x0e\x5b\xfe\x3e\xed\xb7\xc6\xf5\x0b\xa4\x37\xf4\x3f\xeb\xb0\x95\x76\x41\x67\x77\xe3\xf0\x7d\xaf\x2d\xfd\xcd\x9d\xbb\x3f\x29\xdc\xc1\xcb\xe4\xdc\x30\xf0\x62\x2e\xb8\xd7\x1a\xfb\x48\xc4\xb9\x38\xee\xdd\x38\xbb\xa9\xdf\x1d\x8c\xb3\xa9\xc9\x94\x66\x73\xeb\xae\x08\xc7\x65\x19\x77\x18\xaa\x75\xd2\x25\xd7\x32\xfd\x38\xac\xb4\x2b\xeb\xe2\x32\xc3\x37\xa7\x71\xe8\xe9\xa4\x5c\x1f\x14\x9b\xad\xd5\x48\xf7\xd2\x78\x70\x32\xf9\x6c\x62\x95\xd9\xef\x93\x2c\x5b\x6a\xad\x4d\xb5\xb3\x19\xd3\xa0\x7f\x6e\xcc\x2b\x89\x30\x4a\x3d\x01\x12\xf7\xdb\x7b\xb2\x58\x0d\x46\x99\xed\x72\x99\xdb\x34\xc6\x1b\x39\x63\xeb\x42\xbc\x93\x2c\xd1\x6e\x74\xbb\x99\x60\xc5\x1a\xd3\x73\xa9\xd7\x7a\x2f\x3a\xf1\x6a\xd5\xfa\x13\xec\x99\x17\xf9\xdc\x70\xf9\x69\xb0\x57\xcf\xad\xe4\xe5\xbf\xf2\xff\x15\x55\x6f\x81\xfd\x75\xdd\xb3\xbf\x10\xec\x77\xf9\xff\x34\xfd\x43\xc4\xba\x3f\xa6\x6c\xdf\xdc\xae\xfd\xeb\xca\x76\xb3\x32\x5e\xc0\x93\x53\x61\x77\xab\x43\x71\x87\xc1\x2f\x15\x6a\x79\x7e\xd2\xd1\xec\xb6\x35\xc3\xef\x9d\x27\x15\xb4\x50\xa2\xa2\xea\x01\x97\xc1\x24\x03\x52\x7c\x3d\x99\x81\x75\xf6\x0c\xaa\x2c\x3d\xcd\xcc\x97\x2d\x32\x1d\x2e\xfa\x93\x81\xd7\x07\x6b\x64\x61\xba\xae\xce\x41\x2b\x71\x28\xa5\xaa\xc3\xae\x00\xab\x96\x1f\xc7\x11\x24\xbc\x9c\x98\x1c\x5a\xc9\xa1\x5a\x2c\x0f\x6b\x5d\x1e\x07\xcf\xf1\xee\x62\x37\xbf\x50\x93\xf3\x74\x9c\xda\xf1\xf8\x9c\xf4\xa8\x08\x17\x99\x6e\xd6\xad\x64\x7b\x16\x75\xa3\x59\x09\xe6\xb0\x49\x57\x86\x65\xf7\x9e\xd9\xf3\xae\xd2\xdd\x98\x21\x8f\x28\x5d\x59\xed\xae\x25\xea\xbf\xa6\x74\x0f\x83\x3e\x8e\xfd\xfb\x5d\x1d\xbe\x0a\xfa\x6f\xee\xd5\xff\x75\xd0\xdf\x98\x4f\x95\x54\xd0\xc8\x7e\xf0\xdf\xe0\x2f\xd8\x81\x32\x69\x39\xaa\xec\x2a\xd1\x80\x8d\x74\x0c\xc7\x81\xed\x2f\x86\x4d\x93\x8e\x1a\x73\x2f\xdc\x9e\x9c\x4d\x4a\xb6\xca\x79\x24\xa5\xd8\x75\x23\xa3\x58\x23\x1a\x0f\x69\x66\x3b\x3c\xa1\x65\xba\x92\x81\x45\x3e\x1d\x15\xca\x72\x72\x4e\x76\x7b\x13\x53\x1f\x1d\xda\xdd\x43\x5a\x94\x9f\x00\x5b\x3b\xeb\x6d\x42\x1c\xd7\xe8\x78\x4e\x8a\xc2\x66\x19\x0d\x16\xa8\x3d\x2a\x45\xed\xe3\xa8\xbc\xcd\x1c\x56\xfb\x53\xab\x97\xb5\x89\x74\x65\xfc\x72\xef\xe4\xef\x55\x86\x62\x3a\x7f\x4d\x5f\xfe\x9b\x94\x01\x94\x72\xb3\x1f\x53\x86\xef\x6e\x04\xfa\x75\x67\xe2\x75\x4c\xe6\x0f\x8e\x08\xc2\xc9\x4d\x10\x4d\xce\xe7\xd1\xbc\xbc\x8e\x87\xd5\x61\xb9\x13\xd1\xbe\x44\x7b\x97\x1f\xd2\x38\xdc\xd5\xf6\xcb\x69\x62\x48\xab\x8d\xf7\x9c\x89\xd4\x28\x97\x49\xea\x48\xb5\x07\x83\x22\xee\x16\x65\x5c\x5c\xf7\x97\x3d\xea\x5c\xb9\x04\x02\x97\x53\x41\x3b\x95\x97\xc8\x34\x7d\x0c\x7a\x9d\x76\x6e\xbd\x62\x9b\x7e\x4c\xb8\xaf\xa4\x3a\xf1\xb4\x17\xad\x85\x0e\xf2\x15\x1f\xa5\x5b\xb4\xdf\xaf\x37\x87\x82\x6d\x83\xb0\x53\x7a\x42\xe0\x4a\x2d\x26\xa7\x79\x7d\x75\x4e\x75\xdb\x3d\x33\x3b\x57\xf9\x29\x6e\x86\xed\xca\xaa\xb7\x9d\xa4\xa7\xa0\xe2\x4f\x36\x2a\x4e\xdb\x4d\x15\x7c\xe3\xe9\xcf\xed\xaf\x6a\xd5\x5d\x92\x1d\xc3\x82\x10\x64\x30\x66\xdb\x28\x13\xa5\x61\x58\xeb\x26\xed\x66\x31\x22\x35\xd3\xdc\xb4\x37\xeb\x62\x7d\x59\x6b\x77\xae\xc5\xf5\x5e\x9c\x89\xb7\xae\xab\xbc\x8d\xee\xdb\xbf\x7e\x12\xdd\xcb\x66\xb7\x95\xb8\xc9\x38\x49\x7f\xf3\xe9\x0f\x24\x42\x50\xa3\x19\x53\x9e\x7a\xee\xa9\x93\x12\x6a\x00\x89\x73\x86\x70\x6a\x18\x34\x46\x60\x88\x24\x32\x9e\x52\xc4\x8c\xb5\xc0\x58\x05\x09\xc5\x00\x08\xfc\x6c\xdf\x90\xc7\x97\xfa\xdb\xf5\xfa\x1a\x2e\xf8\xd0\xbf\xaf\x7f\x1a\xfc\x84\xb3\x51\xf3\x6b\x59\x6f\x88\x6c\x68\x56\x93\x66\x2f\xab\xd6\x61\x7c\x18\xa5\x26\xad\xee\x7e\xca\x4a\x34\x40\x9b\xdd\xa8\x1c\xe5\x17\xf3\xa0\x3f\x6f\xc0\xe2\xa4\x98\xc1\x59\x6b\x27\xe3\x6c\x0b\xeb\xfa\xa0\x93\xa3\xce\x87\x8d\x43\x73\xb2\xcc\x96\x86\xe3\x14\xb2\x1d\xec\xd1\x31\xf7\x04\x58\xd2\x19\xe7\x4e\x48\x1d\xfa\x58\xba\x79\x73\x9b\x6a\xef\xe3\x7c\x3f\xcc\x57\x86\x71\xa9\x75\x86\x9d\xf9\xd9\x66\xaa\xcb\x4e\xe7\x98\xce\xfc\x53\xec\x9e\x70\x35\xbe\xfa\xd4\x7f\xd3\x52\x8f\xc6\x9b\xea\x8f\x2d\xf5\x8c\x19\x24\x0c\x30\xc6\x52\x85\x1c\xe1\x00\x31\xa5\x8c\xf2\x0a\x5d\x0a\x52\x53\x00\xbd\xa3\xd6\x61\x22\x9d\xc7\x9c\x19\xe0\x85\xf2\x5a\x48\x6c\xb8\xd6\x94\xda\xff\xfc\xef\xff\xc8\x6f\x59\xe9\xdf\x88\x99\x5e\x9f\x8c\x85\x35\xbc\x0c\x32\x6c\x30\xdf\xda\xaa\x93\x11\x39\xdb\x42\xa3\x07\x37\xed\x43\xc1\x07\xd9\x68\x9c\x04\xe3\x99\x9c\xe6\xa2\xd9\x25\x3b\xe9\x8d\x95\x3e\x68\x66\x58\xa5\xdb\x1b\x66\x83\xd6\x7e\xeb\x47\x1b\x56\xb4\x39\x59\xc2\xcd\xb1\x43\xfd\x74\xb3\x58\x9a\x25\xab\xcb\xd2\xa9\x68\x36\x16\x4e\xc3\x2d\x3e\x0d\x57\x2b\x4a\xe3\xbd\x00\xd1\x2c\x77\x1c\x56\xbb\xd9\xcd\x20\x69\xb2\x41\x3e\xaa\xad\x01\x4b\x1f\xab\x7e\x91\x45\xdb\xf4\xe5\x9c\x7f\x5b\xaa\x64\x2a\x50\x95\xa7\x26\xad\xd6\xa7\xc3\x72\x7f\x6e\xc7\x8d\x7c\xa2\xef\xaa\x45\x7e\xb6\xdb\x0c\xd9\xf0\x71\x3b\xe6\xbb\xee\x4b\x6a\xdd\xe3\x61\xa3\x5b\x36\xb1\x6d\xef\x58\x10\x24\xe6\x83\x4d\xbe\xdd\x3f\xf4\x6a\x15\xdc\xca\xe6\x76\x0a\xf0\x53\xfe\x98\x0a\x0b\x07\x59\x58\xf9\x41\xaa\x57\xbc\x96\xa1\x7d\x59\xe9\x8b\xf7\x69\xbf\x35\xae\x5f\xe0\xbe\xa1\xff\x49\x70\xaf\x67\xf3\xde\x29\xff\x2e\xa1\xaf\x82\xdb\x5b\xcd\x24\x53\x5c\x72\xcd\xd9\xe5\x02\x9b\x56\xce\x62\x45\x81\x23\x8a\x29\xc1\x38\x84\x50\x32\x04\x3d\xa3\x0a\x7b\x49\x89\xc2\xda\x78\x08\x80\xe1\xce\x83\x4b\x27\xf9\xdb\x6b\x17\x9f\x94\xee\xe9\x65\x76\x5e\x73\xf0\xda\xb5\xfd\xa2\xeb\xda\x87\xa4\xf1\x7a\x36\xbe\xb6\x15\xa4\x7c\x7f\x74\x2b\x71\xd4\xe8\x8e\xfb\x97\xad\x20\x88\x4f\x33\x3a\x3c\xa4\xd3\x99\x34\x9f\x81\xd5\x5a\xea\x64\x6a\x67\xb1\xa9\x75\x3a\x26\x92\xcd\x03\x08\xca\x71\x77\xb2\x9f\x91\x6c\xb7\x55\x86\xdd\xd3\x70\x03\x01\x0f\x27\x99\x25\x84\x89\x68\x7b\xb4\xf3\x59\x7a\xdf\xf3\xbc\x54\xd8\x75\x80\x19\xcd\x96\xc3\xd5\x62\x4b\x2e\x56\x7f\x52\xab\xde\x8a\x3a\xac\x9a\x76\xbb\xdf\x03\xd6\xa9\xb5\xe6\xeb\xd0\x34\xc3\x5e\xc1\x0f\x54\x9d\x76\x4b\x35\x21\x1a\x99\x3c\x3f\xbe\x0c\xf4\xf4\x86\x0c\xef\x7f\x7e\xad\x3d\x17\x93\xf2\x26\x0e\x75\xeb\xfb\x7f\x52\x7b\xa6\xa4\x17\x4c\xae\x4d\x2e\x5f\xde\xf7\xc7\xf3\x4e\x1c\xea\xef\xd1\x9e\xbb\xfc\x7f\x9a\x7e\xa2\xb2\xee\x3f\x40\xff\xc5\x94\x29\xdd\xfc\xdf\x2a\xee\x70\x37\x0c\xea\xab\xb9\x8a\x01\xe4\x70\x32\xa9\x82\x51\x4a\xf7\x76\x35\x31\x12\x41\x73\x5c\x4e\xb6\x4a\xfd\xdf\xf8\x0c\x8a\x85\x42\x3a\x7b\x5d\xf2\x3f\x7d\xb9\xf9\x1e\xfd\xcf\xb6\x8b\x5f\xcd\x86\xcb\xd5\xbb\x79\x78\x1f\xcf\x24\xfe\x73\x8b\xe6\x0c\x40\x85\x8c\x42\x10\x69\x41\x80\x44\x8a\x3f\x6d\xcd\x08\x42\x8e\x34\xe3\x9e\x68\x89\x2d\x47\x9a\x23\xa6\x00\x33\x94\x00\x09\xb9\x45\x4a\x0b\x6c\xe0\xa5\xb6\x2c\x84\xdf\xb2\x47\xdf\xad\xbc\x7c\xfb\xc4\xdd\x79\x16\x8c\xb3\x2b\xd9\xe2\x20\xb2\xd3\xcd\x28\xd8\x33\xdb\x26\x93\xd6\xa2\x7e\xd0\x9d\xfd\x79\xbc\x6b\x90\x65\xca\x78\x95\xb9\x24\x3e\xbe\xe5\x8d\xe5\xcb\xd3\x25\x4b\xb6\xf5\x01\x1c\x92\x34\xdd\xcb\x4f\xc7\x71\x7f\xa1\x4f\xcb\x0e\x5b\x37\xd8\xc9\x1d\x07\xe1\xba\x9e\xcf\xb5\xce\xd5\xb8\xe2\xf7\x56\x30\x17\x85\xd3\x2a\x98\x90\xf9\xb6\x92\xee\xfb\x72\xb0\xdc\xf3\x71\xa9\xd6\x5d\x80\x4a\xef\x74\x9e\xad\x0e\x51\x33\x00\x97\x68\xf7\x00\x05\xaa\x5c\x2a\xb4\xf6\xd9\x74\x6b\x25\xeb\xb9\x42\xd3\x6c\x06\xc9\x16\xad\xf7\x4b\xb8\xb8\x4e\x6d\xbb\xc1\xb4\x0f\xd6\xfb\xcc\x51\xbd\x20\xe9\xf1\x3d\xfa\xa6\x5e\x46\xa5\x3b\x18\x55\x0b\xa3\x92\xef\xec\x65\x98\x1f\x94\x48\xa3\xbc\x5f\x74\x12\x05\xb0\x3a\x73\x04\xcb\x5b\xb2\xe9\xd4\x4a\x41\x3f\x8f\x86\xd7\xab\x4e\x2f\x7b\x74\xf9\x3e\xed\xb7\xc6\xf5\x0b\x79\x37\xf4\x3f\xab\xe5\xa9\x1c\x5a\x0d\x6f\xca\x46\x7c\x6f\xa2\x29\x70\x10\x09\x46\xb8\x46\x5a\x62\x2e\x98\x66\x9a\x33\x07\x05\xb2\xc6\x2a\x00\x39\xe6\x94\x03\xc6\xbc\x30\xca\x03\x8a\xb0\x85\x5a\x61\x4d\xb8\xb7\xcc\x73\x04\x9e\x0c\x50\x78\x7b\x51\xec\x93\xd2\x1d\xbc\xcc\xce\x1b\xc9\x78\xd7\x67\x98\x2c\x25\x53\xb3\x8d\xcc\xd5\x92\x8b\x6e\x36\x2c\xdb\x79\xfa\x9c\x1e\x55\xa2\xd5\xdc\x34\xce\x71\x61\x94\x9b\xb3\x6a\xea\x1c\x9f\x17\xfd\xab\x75\x97\x37\x70\x76\xfb\xbe\x5c\x2c\x97\x95\x2b\xba\x8f\x91\xcc\x37\x82\x26\x6a\x55\xea\x0e\x17\xeb\x87\x79\x2a\xb5\x4b\x4d\xd1\xc4\x2f\x87\x20\xcc\x65\x73\xd1\xb4\x5c\xcd\x9d\x1b\xd5\xf5\x21\x9a\xf1\xf1\x60\xbc\x9b\xd7\x68\xae\x31\x9f\x96\x66\x87\x64\xb5\x46\x07\x46\xf5\x52\xeb\xbe\xc9\x8f\x6a\x8d\xd5\x14\x6c\x51\xbf\x95\x6a\x5c\xdc\xab\xcc\xa8\x14\x36\x79\x89\x56\x89\x42\x3b\x44\xa2\xb2\x41\xc3\xdc\xd9\xf6\x53\xf3\x44\x65\x73\xec\x4c\x80\x5e\xf2\x66\x12\x1e\xcc\xf0\x3b\x2d\xd0\x9b\xe5\xaf\x50\x3f\x1d\x8e\x03\x95\x6c\xb6\x0f\x14\x36\x53\x63\x3c\x18\x6e\x8f\xcb\x76\x58\x1a\x2c\xb2\x15\xd1\x2a\x34\x07\xfb\x49\xc3\x08\x43\xa1\xbc\x52\xc4\xd5\xc1\xfb\x17\xbe\xdf\x41\xf7\x0d\xfd\xcf\x6a\xd7\x24\x4a\xf8\xeb\xf2\x7d\x53\xf7\xfd\x63\xf4\x3f\x80\x6e\x63\x85\x12\x4e\x3a\x4d\xb1\xb7\x88\x09\x0b\x91\x24\x0e\x21\x21\x25\x35\x88\x7b\x82\x90\x95\x80\x0b\x6c\x08\xa0\xc4\x11\xa2\x34\x00\x48\x78\x03\xad\x42\xf0\xd2\x01\x08\x7e\xcf\xe5\x81\xf0\x3d\x8e\x26\x63\x52\x6f\xac\x0c\x2b\x56\x7a\x3b\x1a\xa4\x28\xeb\xf5\x0b\xd9\xe5\x0a\x92\xfa\x82\xef\x7a\x6c\xef\x59\x9c\x4d\x1c\x22\x3e\xb8\xde\xdb\x78\xcb\xbf\xea\xec\x6c\xd4\x3b\x6d\x18\x39\x1d\x92\x9b\x52\x7d\x03\x92\x87\x2e\x39\x44\xa7\xe5\xc2\x6f\x7b\xf1\x2a\xce\x6f\xc7\x51\x39\x5f\x2a\x62\x3d\x67\xd3\xc4\x69\x35\x0e\x52\x27\x23\x76\xa0\x94\xe0\xfa\x1c\xb7\xca\xf5\xc9\x7c\x52\x2a\x55\x69\x7d\x73\xe4\x81\x75\x8b\x59\x9a\x57\x2e\x6b\xf7\x39\x5a\xd7\x16\x9b\x4e\x12\xcc\x27\xcd\x52\x87\x8c\xc7\x83\x7e\xda\x83\xc2\x6e\x9a\x1f\x8a\x46\xae\x3d\x6d\x6d\x82\xf4\x44\xe4\x55\xa1\xf1\x9d\xc7\xf2\x37\x37\x3e\x0b\x64\x9f\x01\xa5\x7e\x6d\xdc\xce\x6d\x5c\x23\x70\x6e\x36\x3b\xa5\x4a\x25\xeb\x32\x34\xc1\xbb\xfb\xcd\x22\xb1\x6d\xd6\x37\xa8\x86\xda\x57\x33\xfd\x65\xed\xae\xde\xa7\xfd\xd6\xb8\x7e\xa1\xf1\x86\xfe\x27\xd7\xee\x95\x86\xeb\x63\xe7\x26\xd1\xe8\x7b\x83\x07\xda\x6b\x4b\x9d\x24\x94\x5b\x0e\xb9\x36\x5e\x10\x8e\x24\x54\xcc\x20\xa2\xb9\xb1\xc2\x6a\xe2\x3d\x17\xc4\x19\x4b\xa8\x44\xda\x61\x60\x81\x80\x84\x19\x60\xd0\xe5\x92\xef\x13\xba\xd1\xe3\xe8\x7e\x9d\xf4\xf0\x07\x47\x21\xad\xc8\x5e\x0d\x4d\x5d\xbc\x27\x76\x36\x69\x5b\x10\xb5\xf6\xa7\xec\x62\x9e\xe9\x6c\xe3\x92\x9a\x9f\x8b\xbd\xf1\x81\xe4\xc2\xe9\xf2\x9a\x33\xfb\x46\xd2\x49\x04\xdb\xe3\xca\x24\xb1\x9e\x88\xc4\x39\xd2\xa8\xab\x19\x18\x25\xd6\xbd\x78\xb0\xcb\xf9\x56\x78\xd4\x60\x7a\x28\xed\x76\xad\x5c\x90\x6f\x8c\xc2\xda\xa4\x60\xed\xb8\xdb\x58\xae\x62\x59\xce\x34\x6b\xac\x33\xac\xcf\xcb\xe5\x38\x77\x68\xac\x0a\x67\x17\x2e\xd4\x70\x84\x0f\x8d\xcc\x13\x02\x0f\x1c\xba\x59\xce\xf7\x73\xfc\x4c\x9a\xa7\xa9\xd2\xe9\x16\x3e\x47\x08\x24\xf1\xa8\x76\xee\xf4\x5a\x87\x49\xa6\x31\xec\xe8\xe0\x38\x7f\x99\xd1\x6f\x45\x77\x6a\xdf\xae\x77\x27\xbb\x55\x7e\xab\xf7\xf9\x41\x04\xb0\x0d\xb3\x9b\xed\xa8\x48\x87\xb0\x5c\x69\xcd\x57\xdb\x53\x77\xb9\x49\xa4\x9a\xab\xd2\xd5\x34\xfa\x9b\xd1\xbd\x44\x33\x87\x7f\x0e\xdd\x56\x5b\xc9\x88\x37\xde\x6a\x8c\x99\xc2\xc0\x23\x68\x10\x01\xde\x7b\xab\x3c\xc7\x96\x1b\x4e\x85\x00\xce\x42\x2d\x25\xe6\xd4\x30\xe4\x05\x71\xd8\x51\x89\x28\x07\x4f\xe8\xbe\xbd\x03\xf3\x49\xe9\x0e\x5e\x66\xe7\x0d\xcb\xe4\x92\xc7\x96\xea\x76\xab\xcf\xc6\x6a\xba\x56\x1e\xca\xf4\xec\xbc\x9c\xc6\x0a\x4f\x83\xfc\x62\x35\x30\xc3\xd6\x78\xd1\x1f\x26\xfc\x1e\xea\x35\x4d\x6e\xb2\x6d\x26\x27\xbb\x29\xce\x27\x7f\x3f\x37\x53\xf0\x9b\x7e\x23\xcc\x04\xdd\x24\xad\xad\x50\x66\x9e\xeb\xd4\x05\xb1\xf3\x53\x9b\x86\xc9\x61\xbc\x80\xbd\xf3\xd0\x56\x36\xd3\x56\xab\xc3\x8f\x7e\xb5\xc7\xf2\x64\xd6\x98\xb5\x86\x89\xe1\x16\x9d\x56\xcd\xc9\x91\x8e\xe2\xd8\x55\x3a\x93\x64\xd8\xcd\x96\xc6\x2b\x93\x09\x17\xd6\x8d\xb1\x08\x8e\x17\x34\x22\x39\x9b\x26\xeb\xe8\x5c\x5d\x57\xea\x05\x53\x0c\x92\x49\x74\x30\xd2\xe7\x7b\x85\xcc\x2e\xa4\x53\xdc\x0f\xcb\xa4\x3d\xa1\x83\xe2\x8d\x77\x79\x1f\xe9\xb7\x37\xdf\xde\x43\x3a\x79\xf9\xed\x67\x91\xde\xed\xb6\x9b\xcf\x6f\xf9\xe4\x3e\x79\x7d\x5e\xcb\xfa\xb5\x95\xd1\x08\xfe\xef\xad\xca\x2f\x68\x22\xb9\x5e\x06\xab\xbe\xbc\xef\x8d\xac\xf1\x9b\xe7\x23\x87\xe3\x40\x08\x60\x2d\x41\x56\x38\x02\x90\xc2\xc0\x0a\x85\x29\xe2\x9a\x32\x03\x1d\xc6\x0e\x0a\x27\xb8\x21\xcc\x41\x8c\x91\x53\xd4\x78\x03\x39\x82\xde\x0a\x6e\xbc\x7e\xd6\x84\xdf\xeb\xfc\x27\x77\xd1\x8f\x69\xc2\x95\xdb\x4f\xae\xf3\xcf\xcf\xab\x38\x9a\xff\x35\x7b\xa9\x60\xec\x06\xad\xd6\xbe\x36\x58\xcf\x8e\xbb\xd3\x64\x31\xa1\x36\xd9\x02\x61\xa7\x15\x8e\x1b\x87\x13\x18\xaf\xea\xe5\xd3\x62\x35\x23\x9d\x43\x4d\xac\x0d\x4f\x67\xce\xf8\xb0\x2d\x37\x6b\xb3\x2a\x1a\x52\xb0\xee\x8f\x37\x27\xdb\xaa\x59\xb5\xa4\x6c\x74\x68\x8e\x36\x59\xdf\xdc\x86\xbf\xee\x26\x54\x0a\xc3\x2a\x4c\xa3\x5a\x23\xbd\x3c\xa2\x52\xb5\xe5\xa0\x4e\x91\x33\x89\x58\x3e\x0e\x49\xbb\xb2\x5f\x99\x64\xca\x8c\x92\x91\xaf\x7f\xe7\xa9\xf7\x23\x28\x5b\xa6\xe2\xe2\xd7\x50\x76\x97\xfe\x67\xad\xa9\x29\xe9\x05\xab\xd7\xf4\xff\x78\xbe\x8a\x72\x48\x90\x91\x42\x68\xe8\x19\x97\x82\x78\x4e\x14\xa4\x02\x5a\x27\x8d\x72\xc6\x13\x29\x1d\x03\x1e\x3a\xe0\x9c\x25\x92\x31\x06\x95\x42\x86\x52\x89\xb0\xe0\xec\x72\x61\x07\xde\x5e\x0b\xfb\x3a\xca\xdf\xb8\xb1\xf3\x25\x94\x7f\x6d\x7f\xb8\xfe\x20\x27\xdd\xed\x0c\xe7\x7f\x8f\xb7\x51\x4c\x75\x62\xba\xeb\xf9\x49\x70\xec\xc7\x4a\xcb\x0e\xcd\xd7\x26\x83\x43\xaa\x79\xc0\x7b\x49\x27\x7d\x7d\x3a\xef\xd7\x6e\x90\x9c\x4e\xb6\xa7\xca\xb6\x03\x26\xb5\xe4\x10\xe0\xa6\x87\xe7\xa1\x33\x3b\x38\x9a\x90\x51\x26\x0a\xab\x62\xde\x23\xcb\xec\x72\x07\xb6\xad\xf6\x60\x78\xdd\x1f\x72\xe9\x53\x34\x8e\xe5\x62\x9e\x95\x60\xd9\x1d\x5a\x66\x36\x5b\x59\x5c\xcc\x33\x31\xa9\xf1\xce\x6c\x1e\xa9\xe5\xb6\x3b\x28\x10\x3b\x7d\xef\xd6\xce\x07\x35\xe3\xf2\x9a\x7f\xfa\xfe\x20\xfe\x96\xf1\x5d\x4e\x06\xde\x18\xdf\x47\x22\x98\x0a\x50\x06\x85\xd4\x84\x72\x06\x0c\x03\xdc\x61\x0c\x8d\x04\x86\x2a\xa1\x89\xb1\x1c\x01\xc9\xa0\xf5\x42\x1b\x61\x9c\xf1\x96\x28\x85\x85\xd0\x94\x73\xc5\x8c\x7e\xce\x27\xf9\x06\x3f\xe1\xf5\x29\xd7\x1f\x6b\x45\x2a\x98\x2c\x53\x95\x6c\x67\x3c\xa8\x96\x3b\x93\x6d\xaf\x5f\x86\xe3\x12\x95\x19\x09\xca\x63\x72\xa4\x0c\x70\xa6\x45\xbe\x14\x0f\xfc\xe5\x1c\xe1\x2d\x2f\x38\x4e\x53\x33\xe3\xbb\xe9\xa4\x51\x00\xc6\xe7\x06\xed\x71\x21\x97\xd9\x2f\x41\xeb\x78\x8a\x16\xd5\x75\xbb\x93\x47\xa3\x38\x93\xda\xcd\xf9\x28\x79\xe8\x4c\x53\x21\x36\xc3\x63\xd8\x6f\x09\xbe\x18\x2f\xba\xd3\xd1\xfc\x60\x0b\xab\x76\xcf\xbb\x82\x0b\xc7\x47\x3e\x1d\x3a\xdf\xb9\x5c\x17\x52\xc3\xee\x68\xac\x9b\xfd\xa8\x12\xe5\xc9\x39\x5f\xcc\xe4\xd6\xe5\x76\xd5\x0c\x67\x23\x4c\x0e\x85\xf3\x36\xd9\x59\x4f\xc6\xe5\x2e\x5e\x6d\xdf\xdb\x37\x6e\x9f\x4f\xe4\x93\x04\x8d\x02\x0b\xda\xa9\x5c\x61\xde\x6e\xc1\x02\xcf\xcd\x4e\x32\x1a\xef\x7d\x23\x69\xd3\x64\x5f\xa9\xb9\x5d\x2d\x31\x4f\xa6\x4e\xdb\x5e\xff\x7a\x5c\xf3\x37\xe7\x93\x2c\xb6\xb9\x7c\xee\xe7\xf2\x49\xa0\xd0\x9e\x19\xe3\x10\x30\x5e\x6b\xe0\x25\xe0\xd2\x10\x2d\xb8\xc0\x1c\x0a\x49\xa4\x85\x58\x5b\x88\x2e\x0d\xec\x19\xc0\x0c\x5b\xa4\x85\xc3\x0a\x70\xe7\x9d\xb2\xcf\xe8\xc6\x8f\xa3\xbb\xf4\x1e\x47\xe5\x6d\xf9\x6c\xce\x83\xba\x36\x21\x1f\x37\x61\xa0\x56\x50\xee\x47\xf3\x74\xf5\x1c\x1e\x17\xaa\x93\xab\x6b\x57\x4c\x8c\x72\x9d\x2e\xbf\xce\xfe\x1b\x77\xe5\x93\xcd\xee\x6e\xc9\x4e\xbb\x60\x9d\x5f\x59\x36\xc8\xf5\x26\xc7\x7e\xe3\xd4\x5f\xae\x4a\xb5\xe6\x59\x34\x5a\x87\x33\xb0\xa2\xb9\xac\x6f\x6a\xd9\xd4\xb0\x9a\xdd\x07\x13\x91\x98\xea\xd3\xa8\xc5\x1b\x63\x57\x5b\x1f\xf5\xb8\xb8\x69\x81\xa0\x23\xa2\x9e\x4a\x35\x1a\xe4\x6c\x12\xc7\xcb\xa9\x60\x58\x96\xdb\xf3\x38\x53\xdf\x1f\x13\x0d\x67\x5a\xc4\x65\x4c\x34\x2b\x82\xf6\xa1\x59\x6e\x1a\x16\x65\x22\x59\x22\x84\xa5\x12\xc9\xf5\x37\x46\x30\x6f\x7f\x95\xe6\x69\x81\x2b\xa8\x8d\x70\x6a\x4f\xa6\xb6\x11\xae\xad\xd7\xcb\xc1\x70\x62\xe2\x6d\x11\xcd\x52\x6d\x84\xc7\x7e\xd9\xec\xe6\xdc\xb5\xf8\xde\xdf\x8d\xee\x10\xf0\xca\xcf\xa1\xdb\x58\xe7\x09\xb5\xf6\x69\x7d\xa6\x4f\x5e\x2e\xa6\x97\xf4\x6f\xcb\x9d\x67\x04\x12\xef\x89\xc4\x1c\x2a\x8c\x29\x47\xd8\x09\x62\x95\x57\xc6\x29\xe8\x20\x66\x8c\x5e\x22\x98\xb7\x17\x8b\x3e\x99\x8b\x36\x78\x19\xfb\x27\xbc\xe0\x60\x7f\x3c\x54\xcf\xd5\xa9\xdc\x1d\xf5\xbe\x98\xef\xa4\xd6\x8b\x3e\x62\x61\x54\xc0\x15\x9d\xb6\xab\x46\x47\xee\xc8\x82\x65\xbb\xcd\xfe\xb6\x7f\xcf\x0b\xce\xff\xa6\xdf\x28\x4c\xca\x6b\x13\xf5\xb3\x22\x1b\x6c\xf3\x2c\x13\xa3\xd1\xb1\x3e\x19\x67\x7d\x3e\x1c\x90\xc9\xb6\x52\x1d\x0c\x0c\xaf\x9f\x16\xd5\x71\x71\x2c\xa7\xb9\xfe\xc4\x1f\x0e\xe5\xcc\xac\x37\x3e\x87\xc1\x06\xa5\x64\x25\x97\xd9\xf8\x4c\x33\x73\x98\x2c\x52\x71\xa9\x34\x2a\x8e\x7d\xd6\x34\x2a\x17\x34\x9e\x9d\xcc\xe1\x41\x64\x7b\x6d\xdb\xee\xb8\x95\x84\x09\x39\xcd\xd5\x65\xb1\x1a\x2f\xcf\xdd\x53\x7d\xd9\x56\x89\x2d\x1b\x91\xf6\x60\xf6\x5e\x34\xf3\x13\x5e\x70\xea\xe6\xd2\xda\x67\xf3\x02\x6f\xac\x88\x4f\xae\x24\xcf\x62\xfd\x80\x95\x73\xdb\x00\xe1\x0b\x79\x8b\xcf\x5e\x70\xe3\xe5\xfd\xdf\xe6\x05\x5b\xe8\xa9\xc4\x4e\x53\x07\x89\x97\x1c\x20\xae\x0d\x97\x02\x41\xaf\x08\x63\x48\x18\x08\x38\xc0\xc4\x6b\x25\x15\x55\xc6\x79\xa6\xa4\x55\x5c\x3a\x40\xa1\x73\x1c\x3f\x6b\xc2\x6f\x2b\xe6\x93\xbb\xe8\x67\x34\xa1\xd9\xed\xb6\x9e\xff\xc7\x83\x9a\x90\xfb\x4d\xbf\x51\xe0\x23\x7d\x1c\x18\x98\x28\xf5\xfc\xc8\x75\x17\x51\xb0\xa6\xed\x7e\xae\x2f\xd5\xc2\xe4\x8b\xf3\xe2\x1a\x1c\xbb\xc0\xc8\x5a\xb5\xe0\x43\xd6\x11\xbb\xcd\xa8\xd0\x75\xdd\xe5\x38\x9b\x41\xae\x93\xcb\xcd\x47\x71\x42\xa7\x76\x39\xd9\xae\xb7\x0e\x63\x9f\x4b\xce\x7d\x66\xd6\x98\x5e\xd0\x0a\x7c\xaf\xcd\x20\xe9\x24\xfa\xc1\xe2\x90\x9f\xa7\xf3\xac\x39\x2f\x55\xb2\xf9\x00\x24\xd8\x7c\xb6\xa9\xc9\xf5\x42\x39\x97\x6a\xf2\xc5\xcb\x21\xd1\xb7\x6a\xc2\x67\x2d\x9a\x4e\xb7\xdb\x79\x5e\x67\xff\x12\x4d\xf8\x82\xc5\xf5\x83\x9a\x20\x01\xd2\x12\x98\xcb\xc5\x07\xe9\x98\xc6\x98\x3a\x4e\x09\xc6\x42\x2a\x4e\x08\xd3\x82\x39\x0c\xb0\x74\xda\x53\xe9\x0c\x63\xd6\x7b\x4d\x81\x53\xce\x00\x6b\x04\x7d\xd2\x84\xdb\xfb\x78\x9f\xdc\x71\x3f\xa6\x09\x57\x6e\x3f\x99\x1f\xfe\xb5\x3d\xe4\x2a\x63\x3e\xdf\xde\xe6\x12\x65\x7f\x8f\xb7\x91\x96\x7d\x54\xc0\x83\x33\x8c\x71\xd0\xa8\xac\xcb\xa4\x9f\x3e\xbb\x7a\x7b\x76\x5c\x2c\xa7\x07\x94\x6a\x2c\x7a\xe1\xbc\x0d\x00\x5f\xe6\xa9\x1c\xaa\x31\x76\xd5\x3d\x4f\xf6\xba\xcb\xfc\xae\x27\x46\xdb\x61\x7e\xb2\x85\xf3\x41\x89\x03\x99\x3b\x9f\x9b\x39\x64\x74\x06\xed\x1a\xd9\x0b\xba\xa7\xe9\x7d\xe3\x38\x29\x6c\x16\xf3\xed\xb9\xbf\xe8\x66\x6a\xc5\x15\x68\x6e\x46\xfb\x4a\x66\xb1\x91\x03\x1e\x6a\x9f\x80\x99\x35\x0f\x70\xe1\xbd\xd2\x01\x9f\xf0\x94\xff\xf1\x7b\x48\xe1\x6f\x19\x5f\x8d\x6e\x4a\x0f\x7a\xca\x46\x71\xca\x2c\xa4\x50\x1a\xf7\xb4\x77\x78\xc1\x11\x02\x04\x69\x88\x8c\x53\x5c\x2b\x00\x88\xc1\xfa\xc9\x1a\x53\x56\x33\xa4\xa9\xf4\x42\x28\xc1\xb8\x17\xcc\x69\xfc\xac\x59\xe8\x71\xcd\x7a\x23\x06\x75\x73\x50\xff\x80\xb4\x5e\xd4\xe5\x8d\x9a\x07\xcd\x5f\xdf\x4f\x05\xe5\xbd\x1a\xd3\x46\x6c\x5c\x4e\xef\x82\x71\x9a\x2e\xa6\x8b\x5d\xb5\xbb\x38\xb4\xea\xae\xd7\x4c\xa4\x13\xb9\xe1\x6a\x56\x0f\x6c\x73\xd8\x6c\x25\xea\xf5\x6c\x6b\xd5\x19\xb7\xd2\xa7\xfd\xf8\xb8\x1f\xcd\x0f\xfb\xcc\x91\x4f\x8f\xf1\x22\x11\xb0\x2c\xa8\x10\xa3\xe0\x16\xad\xcf\x95\x60\x78\x45\xfa\x69\xd1\xdd\xe5\x9a\x8b\x1a\x5a\x2c\x88\x19\xa7\xd2\xdb\xd6\x79\xed\x58\x90\x3d\x72\xd4\x0b\x77\xbb\xf1\x6e\x90\x28\xac\x43\x4f\xf4\xe6\xbd\xfd\xe7\x7e\x12\xc3\x97\x90\x7e\x73\xb0\xf5\xf5\x55\x29\xb3\x57\xa7\xe1\xcd\xfb\xfe\x28\x72\xf2\xce\x1e\x59\x78\xf9\xfc\x59\xbf\xe8\xe5\x7d\xd7\xe7\xa7\xb1\xf2\xa2\xf9\xc1\x97\xc6\xfb\x52\xd4\xe4\x2a\xf9\xf7\x2a\xef\xdc\x3c\x1f\x39\x43\xe1\x5a\x73\xe9\x99\xa4\xd2\x00\x27\x9c\xd4\xd8\x62\xe8\x99\x91\x18\x08\x2b\x2c\x10\xc4\x4a\xc3\x38\x41\xc6\x2b\xca\x8c\x02\x92\x18\xaf\x98\x53\x4e\x4a\x82\x7e\x69\x36\x7e\x5c\xb3\xdf\x28\xd0\x70\xed\x1e\xfc\x25\xeb\xf1\x66\x9d\xdb\xee\x52\xee\x66\xb6\xee\x7b\xbe\x37\x9a\xbd\x39\xaf\x64\x2e\x8e\xd7\xb3\xc4\x69\x79\xda\x0e\x67\x99\x49\x7f\x2e\x13\x9b\x6d\xd1\x55\xfb\x28\xdc\xb6\x14\x6f\xd7\x4e\x38\x38\xe7\x6b\x7b\x12\xd1\x81\x28\xa4\x63\x8a\x1a\x42\xd0\x61\x23\x6c\xf4\x2a\xbb\x6c\x1d\x1c\xd9\x69\x24\xb0\x65\x89\x25\x9b\x4e\xd2\xc9\xde\xfe\x97\x66\x57\xf9\x8e\xca\x55\xcf\x64\x96\x4c\xd7\xdb\x79\x74\x6a\xa7\xab\x93\xc6\xa8\xba\x08\x6d\xfa\xcc\xba\xdb\x65\xb1\x5d\x5f\xed\x37\xab\x59\xfa\x2f\xd4\xec\x8b\x42\xe6\x72\xdd\xee\x33\x5a\xbf\xa4\x59\xe9\x13\xc8\x3d\x9f\xa5\xdc\xb7\xee\x7e\x58\xb3\xaf\x7b\xec\x5f\x82\x95\x1f\xd1\xec\x3f\x56\xc2\x2f\xc7\xff\xa4\x10\x84\x18\xa1\x09\x47\x56\x29\x63\xa8\xe6\x90\x33\x49\xd5\xd3\x3e\xc3\x94\xe1\x52\x2a\x88\xbd\x46\xc6\x13\x48\x91\x85\xd2\x21\x08\xb9\x72\xd0\x50\x66\x2e\x9a\x2d\xbf\x25\x42\xf2\xc6\x9e\x7d\x9d\xad\xef\xb1\x6e\xff\x3a\x5f\xc9\x9e\x7b\x9d\x1b\x74\xdc\x3c\x37\x11\x9a\xca\x56\x1e\xaa\x03\x0a\xc5\x32\xea\x54\x56\x58\xb4\xd5\x74\x79\xe8\x25\x93\x99\x4c\x5b\x6f\x93\x72\x59\x9f\xc0\x66\x30\x8e\x69\x76\x96\x4e\x5a\x3e\xd4\x3d\xa5\xaa\xd5\x62\x5c\x6a\x34\xb9\xab\x54\x6b\x6c\x93\x4a\x2c\x76\xe1\xda\x39\xd2\xdb\x6f\xda\xc5\x61\x40\xa6\xe8\xb8\xbd\x68\x4f\x18\x8d\xb2\xa7\x72\xf3\x84\xd6\xe7\xdc\x2e\xb6\xab\xde\xf4\x34\x52\x5b\x37\x58\xb6\x13\xa7\x33\xc8\xb5\xc0\x80\x8c\x72\x8c\x98\xee\xf6\xbd\xd5\xe3\x06\x6d\xc3\x2f\xc9\xff\xd5\xfb\x5e\xd2\x26\x1f\xb6\x58\xbf\x86\x87\x17\xbc\x7d\xcb\xfc\x06\xaf\x3f\x67\xd3\xb5\x61\xf6\xd8\x6c\x15\xa7\x60\xd7\xaa\xc5\x03\x73\xe8\x15\x36\x0b\x50\xc7\x8d\x7d\x79\x92\x59\x6c\xda\x87\xd5\xe1\x68\x36\xb9\x99\x78\x74\x35\xbd\x49\xd3\xbd\xb3\x62\x5e\xe5\x73\xfc\xfb\x56\xa0\xe0\xd7\xaf\x6e\xfb\xf5\xfd\xd5\xf4\x5f\x7b\x7d\xff\xc8\x78\x49\xe5\x6f\x19\xdf\x05\xb3\xef\x8d\xef\xf8\xcf\xf5\x4a\xef\xca\xef\x9f\xe6\xd5\x1f\xff\x8d\xbe\x48\xe5\x1f\x31\xde\x57\x7b\xe8\xfd\xf1\x7e\x8b\x7c\xff\x6a\x8b\xf0\x51\xf9\x7e\xcf\x78\x5f\xf6\xd0\xfb\xe3\xfd\x48\x7e\x84\xf4\x8c\x28\x07\xbc\x00\x52\x03\x21\x25\x33\xd0\x63\x49\x9c\xe3\x92\x02\x00\x15\x01\xce\x39\x26\x95\xd5\x8c\x53\xa5\x19\xd6\xde\x42\x89\x91\xc5\x4a\x79\x8d\xfe\xf3\xbf\xff\x83\x6e\x2d\xc8\x62\xaa\x15\x0f\x97\x3c\x93\x68\xd5\xc9\xcc\x9a\xc9\x8c\x8d\x8f\xc5\x49\xb4\x2b\xd3\x44\xe0\xdb\x95\x8e\x9d\x39\xcb\xcc\x71\x31\xb9\xde\xe5\xb9\x5a\x90\xdb\xe0\xed\x7a\x1b\xdf\x58\xb9\xb2\x9d\x76\x95\xdc\xf5\xe7\x63\x26\xd7\x99\xbc\x99\x75\x5b\x32\x10\x61\xa0\xd6\xa7\x29\x5b\x16\xe2\x71\x25\x8d\x4a\xfd\x7e\x76\xe1\x72\xe3\x89\x8f\xf3\xb4\x7b\x2a\x87\x85\xc6\xa0\x1a\xc4\xb5\x9a\x49\xd7\x57\x05\x35\xeb\xb0\x3a\x5c\x45\xcd\x3e\x2e\x91\xda\xac\x94\x1f\x90\x51\xc1\xc6\xc5\x73\x86\xa5\x9e\x4b\x2c\x29\x3f\x28\x91\xfa\xb0\xb8\x2d\xcc\x7b\x47\x5f\xeb\xf0\xc5\xac\x11\xa8\x46\x8d\xcf\xe7\xbb\xdd\xa2\xb7\x89\x78\xb2\x39\x3d\x01\xb6\xe1\x2f\x6c\x3f\x5c\x59\x32\x75\x93\xcf\xfc\xc9\x79\xb8\xec\xd2\xd7\xe6\x02\xfa\x45\x98\x37\xef\xff\x64\x66\xc0\x75\x97\xdf\xcd\x5c\x98\xdb\x99\x30\x9e\x95\xe7\xd5\x83\x6e\x3c\xbd\xf6\xb6\x32\x65\x4a\x2c\xec\xa2\xdc\x1d\xa7\xea\xa5\x75\xbd\x18\x98\x56\x75\x34\x38\x1b\x34\xcf\x73\xdf\xe0\xcd\xdd\x39\x3c\xe5\x02\x31\xcf\x4d\x2b\xed\xe9\xcb\x78\x5e\x64\xf1\x81\x5b\xd8\x40\x58\x03\xbd\x33\x90\x02\x8f\x38\xa3\x0c\x09\xc6\x8c\x23\x9e\x22\x8e\x3c\xa3\xc2\x78\xa0\xad\xf4\x56\x18\x68\x25\x53\x08\x19\x28\x99\x76\xc8\x41\x8d\x2e\x27\xc8\x08\x7c\x8b\x7f\xf4\x46\xe4\xe3\x06\xf8\x37\x21\xb3\x4f\x66\x03\x3d\xb2\x96\xbc\x3a\x3d\xb8\x92\x67\x99\x29\x4c\x5f\x0b\x72\x24\xf8\x24\x76\xdb\x54\xa9\xb4\xc9\x61\x82\x97\x8b\xd3\xc9\x4c\x56\x68\x37\x6e\x94\x07\xe3\x30\x8f\xb2\xed\x59\x42\xfa\x7d\x6d\xbd\xdc\x1d\x5c\x84\x36\x85\xe1\x61\x27\x17\xc3\x44\xa3\x88\x54\xa6\x8e\x13\xf5\x45\x66\x1b\x65\x95\x1c\x74\x54\x90\x18\x2c\x1c\x5a\x14\xc2\x61\xf6\x09\xc9\xa2\x80\x53\xc9\x6d\xae\x21\x16\x83\x5e\x29\xd4\xb5\x36\x2c\x9e\xe4\x6c\x52\x4f\xcb\x85\x9c\xa4\x50\x6f\x39\x3e\x0e\x54\xa2\x3c\xda\xbe\x7b\x0a\x7d\x23\xc3\xc6\x97\x64\x10\x7c\x87\x4f\x71\xe3\xd3\xbc\xfe\xfc\xd7\xf9\x14\x37\x18\xba\xb3\x5a\x5c\x6f\xab\x1c\xff\x66\x9b\xfe\xb2\x5a\x35\xbe\x4e\x7f\x99\x98\x3f\x17\x26\xf9\x74\xbc\xf4\x2e\xfd\xcf\xda\x9c\xa3\x51\x1c\x3e\x42\xff\xf8\x0f\xf7\x19\x5e\xe4\xf3\x97\x8f\xef\x62\x83\x7d\xc8\x26\xff\x77\xd8\x60\x97\x67\xf8\x9b\xde\x17\xa3\xb6\x1f\xda\xed\x90\x62\x52\x70\xc5\x24\x06\x4e\x69\xee\xb0\x76\x46\x19\x2f\x35\x67\xee\x52\x14\x5f\x00\xc4\x98\x30\xd0\x43\xa7\x81\x17\xc8\x53\xc6\x21\x80\x44\x13\xcd\x30\xbb\xec\x76\xdf\x73\x5b\xff\xf5\x6d\xf1\x3f\xa4\xd2\x2f\x25\x72\xb0\x58\xdb\x0a\xd2\xa8\x66\x46\x8b\x79\x61\x32\x29\x75\x32\x8d\xc4\x3c\x7b\xd8\xbb\xc1\x31\x53\x4e\xee\xd2\xdd\x66\x3f\x37\x59\x5c\xcb\x71\xbe\x71\x27\xce\xaf\x3a\x6e\xab\xc9\xb4\x91\x6c\xfa\x54\x0c\x3b\xf1\xba\x5a\xdb\x0d\x50\x82\x34\x49\x0b\xf4\xe3\xf3\x70\x58\x6f\xc2\x34\x8e\x4e\xa3\x41\xb0\x49\x96\x44\xe9\x34\x48\x0f\x89\x9b\x64\xda\xb9\xc5\x68\x2f\xd7\xc1\x88\x84\xe5\x41\x79\xaa\x53\x1b\x15\x2e\x4c\x5b\x66\x4c\x74\xb9\xcf\x5c\x9a\xcf\xf3\xab\x55\xa5\xb6\xc6\x84\xf3\xd2\x99\xee\x10\xef\x2f\xc3\x61\x7a\xb0\x3c\xfa\xfc\x26\x43\xca\x70\x10\x07\x9d\x5d\x39\x42\xdf\x78\xe3\xf3\xb6\x9d\x78\xee\x74\x18\xd9\x56\x7b\x53\xaf\x65\x33\x0d\x32\xa0\xe3\x02\x39\xcd\x02\x50\x5f\x8d\xca\x7c\x31\x37\xc1\x29\xc9\x1b\xb3\x4e\x37\x8e\xe8\xd5\xe6\x7a\xc9\x06\xec\xde\xa7\xfd\xd6\xb8\x7e\x69\xfd\x0d\xfd\x4f\x66\x03\xce\x47\xd3\x43\xeb\xa6\xa1\xe3\x7f\xe9\x4d\xf5\xe5\xcc\x0f\x46\x20\x55\x06\x5a\xe4\xb9\x64\x08\x6a\xc4\x34\xa4\x4c\x78\xc9\xb0\xb7\xc2\x5a\x66\x28\x30\x08\x3c\xd9\x70\x9c\x20\x61\x9c\xd7\xde\x49\xeb\x9c\x60\x9c\x0a\xf1\x8c\xee\x6f\xc8\xe4\x7e\x7d\x1c\xf3\x07\x47\xb6\xd1\x1c\xbb\x69\xb0\xec\x4e\xf5\xba\x5f\x54\x38\x2e\x14\xfa\x8b\xb4\x19\x94\x83\xcc\x34\x61\xba\x7e\x3e\xd8\xca\x56\x39\xdf\xcb\xf4\xde\xcb\x75\xcd\xd8\x62\x68\x0f\x76\x80\x5a\xa4\xb1\xec\xdb\x5a\xa2\x66\x77\x62\xd0\xb4\xae\xbb\xe7\xf3\xd4\x61\xcd\x73\xbb\xba\x5c\x4e\xd7\x1b\x29\x56\x61\x26\x39\x69\x05\x1b\x35\x9d\x35\x0e\xaa\x39\x4f\x9f\x2a\x41\xb9\x50\xc9\xa0\x69\x28\x9a\xa8\x34\x19\x95\x0e\x27\xbe\x2c\x94\x59\xe1\x72\x9f\x79\x36\xcd\xa9\xa3\x2d\xe3\xd9\x38\x3c\xa9\xb8\xbb\x4c\xf4\xea\x72\x62\x75\x2e\x93\x4e\x8f\xcb\xf9\xc6\xf2\x7c\x38\x24\x16\x8e\x85\x36\x7a\xaf\x65\xce\xed\xf3\x09\x74\xe7\x3b\xd9\x68\xb1\x0a\x4a\xb9\x41\xc8\x66\xa7\xde\x4e\xb4\xd2\x39\x7a\x5c\x84\xad\x63\x40\xeb\x8b\x5c\x9f\xce\x75\xbd\x33\x8e\xe1\x10\x5e\xab\x03\xfd\xcd\xe8\x9e\x89\xce\x64\xf0\x73\xe8\xd6\x0e\x50\x47\xb4\x95\x8c\x59\x2a\x98\x90\x0e\x6a\xe6\x95\x03\x10\x3b\xaa\x14\xe7\xda\x3a\xca\x1c\x53\xc6\x22\xab\xa5\x96\x4c\x70\xe0\xa8\xe3\x84\x29\xa2\x34\x7f\x42\xf7\x6d\x2d\x8a\x4f\xae\x1d\x83\x97\xd9\xf9\x44\xae\x6b\x0a\xa6\xc2\x22\x6b\xa4\x47\xbd\xe6\x7e\x65\x66\x1b\x9f\x1d\x8e\x9c\x29\xc6\xd3\x6d\x50\x6b\xd3\xb8\x9b\x18\xcc\xcf\xb0\xb0\xb5\x51\x35\xba\x9b\xe1\x97\xfd\x4d\xbf\x91\xa9\xa4\x7b\x3e\x0d\x5c\x58\x2d\xee\xa3\x42\x1f\x6f\x69\xd0\xa9\x96\xdd\x66\xb1\x32\xf9\xf6\x42\xd4\xd8\x69\xb8\x4e\x56\x8f\xb8\x45\x0f\x8b\x53\xb2\x47\x50\x8d\x86\x24\x64\x9d\xed\x78\xd4\xed\xc0\xd8\x52\xdd\x24\xe3\x39\x4a\x74\xcf\x8d\x59\x23\x6a\x8c\x1c\x98\x8c\x8e\xc3\x0b\x1a\x0f\xc3\xfe\xf4\x30\x18\xec\x7a\xe1\xd8\x85\x28\xb1\x0f\xda\x54\xad\xf0\xc1\x75\xf7\x6a\x0b\x76\x7b\x3d\x5b\x9a\x5a\x7f\xd1\x5c\xb7\x36\xef\x95\xfd\xfb\x4c\x86\x5f\xf4\xf2\xdb\xcf\xae\xe3\x37\x11\xb7\x4f\xae\x24\xd7\xe7\x43\xd6\xdd\x0d\x2f\x5f\xd8\x67\x9e\x33\xfc\xba\x2f\xef\xff\xbe\x5c\x57\xa1\x11\x05\x02\x22\xcc\x28\xd3\xd0\x7a\xe8\x1c\xe4\x06\x71\xc6\x05\x92\xda\x20\xa4\x34\x81\x92\x4a\x65\x11\x75\xcc\x18\x43\x11\x70\x82\x48\x0a\x99\xd7\x97\x9a\x43\x08\x7f\x8b\x26\x7c\x3a\x0f\xe9\xb3\xb3\x95\x4e\x1c\xd2\x37\xe8\xf9\x2f\xd9\x0a\xbf\xac\xa0\x54\xd0\x6e\x12\x11\x47\xe3\x92\xde\x8b\xa0\xb6\xec\xe7\x8e\x07\x73\x28\x94\x07\x20\xb9\x6a\x4c\x7d\xb8\x3f\x1e\x83\x65\x61\x50\x75\x7e\xc3\x4f\xb6\x70\x9c\x99\x7d\x99\x90\x7e\xbd\xc2\x57\xc5\x24\x9b\x64\x5a\x7a\x9d\xda\xdb\x76\xb5\x67\xb3\xa8\xd8\x9c\xec\xd7\x3c\x5f\xe0\x85\x5f\x48\x46\xe5\x62\x63\xd8\xaa\xce\x54\x8c\x63\x3e\xf2\x69\xbb\x18\xae\x0e\xe9\xd2\xa6\x31\xe8\x29\x30\xa3\xdb\x73\xae\x50\x1b\x15\x3b\xbd\x04\x7b\xaf\x36\xd1\xfd\x6c\x85\x4f\x5a\x7c\xd7\xe7\xa6\xf4\xcf\x97\x56\x9d\x2b\xf2\xcb\x4c\x3c\xfb\xa6\x5f\xca\x56\xb8\x29\x08\xff\x59\x4d\x79\x2d\x8f\x9f\xc6\x4a\x23\xf8\xbf\x8d\xb0\xbf\xa2\xd9\xd7\xde\x87\x57\xcd\xbe\xf1\x5b\x6e\x9e\x2f\xd7\x5b\x82\x98\x30\xeb\xa0\x51\x18\x18\x07\x30\x24\xd2\x4a\x4f\x89\x24\x54\x52\xa6\x10\xf2\xd2\x68\x67\xb1\x15\xd0\x0b\x68\x18\xd2\x9a\x4a\xe3\x85\xb1\x56\x68\x21\xf1\x93\x66\xdf\x56\x35\xf8\xa4\x05\xf1\xb1\x3d\xee\xea\x95\x3f\x80\xb6\xeb\x1c\xb9\x70\xf2\xee\x6c\xe9\x5f\xb3\x9b\x0a\x40\x39\xc1\x64\x06\x8e\xe2\xd5\x69\x17\x4c\xfb\xcc\x1c\xea\xe3\xd4\xbe\x26\xc0\x7a\x26\x5a\x8d\xd2\x00\xd2\x7a\xad\x1b\xc7\xf2\x18\xcd\xd8\x7c\xb0\x29\x27\x58\xa7\x17\x2a\x9d\x4c\xb0\xc5\x10\x55\x12\x0a\xc9\x2c\xaf\x55\x13\xfd\x2d\x61\x91\xac\x54\xd7\xed\x91\x84\xbf\xca\xfd\x07\xed\xe6\x8e\x98\xe5\xf1\x3c\xac\x74\x16\x03\xd9\x99\xe5\x66\xbd\xe5\x38\x61\x0e\xbb\x7a\x94\x27\xf9\xb0\xc4\x7b\x26\x51\xc1\xd1\xbe\xf8\x89\x3c\xa4\x6b\x70\xc0\x6c\x48\xbf\x33\x65\xe7\xf3\x28\x00\xb5\xd0\x45\xe3\x5a\x65\xd5\xa8\x66\x58\xd4\x4a\x50\xba\x08\x2a\x87\x04\x28\x76\x73\xa6\x57\xb3\x2f\x9a\x7c\x6b\x38\xbd\x68\xe6\xb7\x68\xc6\xd7\x7e\xff\xc2\x64\xae\xdb\x01\xcf\x93\xf8\x59\xeb\xf4\xfa\xbc\xdc\x58\xfe\xf8\x4a\xf3\xa2\x5e\xd7\x9b\x54\xe9\xaf\xd3\x7f\x7d\xe3\xfa\x6b\xd8\x7d\xa9\xc7\xf9\x06\x76\x8f\x7f\xdf\x4a\xf3\x9b\xd5\xdb\xce\xf0\x9f\xa5\x3f\x1d\x0e\x0b\xed\xd7\xf4\x3f\x1b\x41\xbc\xa1\xff\x69\x6f\x26\x89\x57\x83\xaf\xd9\x50\x97\xe7\xf8\x6f\xb0\x31\x87\x7f\xcb\xf8\x2e\xeb\xc1\x87\x22\x88\xff\xa2\x9d\xfd\x46\x3f\xbe\x66\x49\x7d\x28\x82\x48\x01\xa3\xc6\x72\x23\xb9\xf1\x9a\x79\xed\xb9\x55\x82\x48\xac\x9d\xb3\x84\x3b\x8b\x0c\x77\x5e\x63\x0d\x80\xe6\x5c\x11\x23\x11\x93\xc8\x59\x22\xb8\xd7\x82\x29\xf2\xb4\x43\xd3\x6f\x89\x20\xbe\xae\xea\xf4\x87\x54\x7c\xa8\x77\x4a\xf5\xc4\x22\xeb\xa7\x21\xad\xd7\x61\xda\x93\x84\x1d\xc4\xd5\x09\xae\x6c\x4e\xe7\xd5\x38\x18\xd7\x56\x99\xe2\x7e\x34\xba\xae\xaa\x6f\xd4\xfb\xdc\x8d\x8e\x6d\x5c\x4c\x0f\x69\x61\x30\x2d\x35\xab\x25\xbc\xca\xa7\x54\xd2\x85\xe2\xbc\x16\x81\x97\xc3\x5c\xbd\x37\x8b\x0e\x59\xdb\x5c\xb2\xc9\x39\xa0\x19\xe9\xa3\x9a\xc9\xac\x4a\x19\x6c\xb3\xc1\xbe\x5e\xae\x56\x83\xfc\x44\xee\xaa\x7a\xd0\x29\x06\x78\x73\x8c\xab\x92\x5c\x62\x2c\x9d\xb0\x5f\xf5\x45\x5f\xdf\x1d\x0e\x18\x2d\x5b\xed\xc3\x1e\xe6\x79\x2b\x4e\x24\xce\xdb\x60\x87\x57\x95\xe9\x7c\xba\x87\x05\xcf\x47\xeb\x6f\xac\xaa\x95\xba\x61\x33\x1f\xcf\x79\x6f\x3e\x3b\x14\xe3\x3c\x4d\xed\xdb\x67\xd9\x58\x24\xea\x8b\x9e\x69\x47\xf2\x5c\x12\x5b\x16\x0d\x0b\x93\x75\xe3\xa4\x97\xd1\xd5\x1d\x7c\x89\xb1\x0c\xee\xd3\x7e\x6b\x5c\xbf\xb4\xfe\xeb\x55\x85\x67\xfd\x6c\x7f\xb8\xbf\x31\x15\xbe\xb7\xca\x8a\xe2\xcc\x01\xc4\x80\x67\x5a\x60\xc3\x9c\x92\xd8\x53\x42\x2d\xe4\xd6\x71\x04\x0d\xe0\xd2\x1a\x0c\x9d\x80\xce\x51\x67\x0d\x81\x1e\x52\xe9\x0c\xf5\x9a\x08\x42\x2e\xf6\xe7\x6d\x6f\x91\x4f\x4a\x77\xf0\x32\x3b\x6f\xd8\x9f\x7f\xec\xe1\x62\xb0\x87\xab\x95\x3e\x99\x66\xa2\xa1\xa7\x22\xd9\x29\x26\x27\x14\x2e\xb2\xa8\x6e\x4e\x87\x72\x6d\x5e\x48\x17\xd8\xb4\x32\x67\xe1\x6d\x99\xc5\x57\x99\x37\xb7\xb9\x12\xbf\xc7\xd3\x48\xad\xcf\xe9\x28\xb3\x2f\x47\x8b\xe4\xa4\x3f\xf2\xd9\x6e\x9c\x0d\xc7\xc3\x4a\xba\x18\x2e\x6b\xa9\x74\x49\xa2\x59\x47\xe3\xce\x1c\xd2\xfa\xf0\xd8\x2a\x32\xbc\xab\xce\x12\xb9\x55\x5e\x24\x4e\xd4\x24\xe6\xe9\x6d\x72\x73\x36\x07\x7b\x5a\xca\x7d\xdf\x2e\xad\x25\xe5\x7e\x6f\xdc\xb8\xc6\x5c\x56\x88\xa4\xa3\xba\x22\xf5\x90\xad\xea\xb0\x69\x73\x92\x9e\xf2\x81\xb3\xc7\x98\xa5\xf8\x8c\x9b\x86\xcf\x0d\x78\x2e\x01\x46\xd9\xaf\xe5\xbe\x7f\x52\xfb\xaf\x2f\xbd\x88\xf6\xd6\xc6\xfb\xa4\x76\x5c\xdf\xf2\x92\xfd\xda\xb8\x27\xdf\xf7\xbc\xc9\xe5\xcb\xe7\x2f\xd1\xef\xfc\x1c\x3e\xee\xee\xe1\x37\x99\x01\x5f\x58\x4d\x9e\x6d\xbc\xeb\xd4\x7e\xc2\xc6\xfa\xc8\x79\x00\x52\x8c\x12\xc3\x99\x64\x4c\x19\x06\x95\x31\xd2\x7a\xa0\x39\xf5\x12\x1a\x6d\x1d\xd6\x94\x42\x23\x9d\xe4\x8c\x71\x0c\x04\xe2\xca\x13\x64\xa1\x43\x84\x1b\xf3\x4b\x9b\xd1\xe3\xda\xfc\x46\x9c\xe8\x46\xa4\x37\x16\xc2\x67\xd1\xfb\x31\x6d\xd6\x59\xd9\xe6\xcb\x54\x69\x59\x05\xc9\x16\x0e\xba\x3c\x5c\xb6\x9a\x2e\x11\xb7\xb9\x6c\xcd\x7a\xd5\x74\x94\xdd\x95\x61\xb3\x9e\x8d\xcb\x22\x57\x1e\x1d\x69\x36\xb3\xed\x97\x97\xc1\xa1\x90\xd2\xa9\x43\xbe\xb0\x91\xd5\x92\xa9\xef\x7a\x99\xd3\xc8\xe4\x67\x85\xbd\x1a\x94\x0a\x43\x71\xbd\xe9\xb9\x1e\x74\x62\x34\x9b\x6f\xc2\x70\x7b\xb2\xa2\x6c\xfd\xd4\x1c\x5c\x0d\x76\xcc\x62\x65\xe7\xe6\x38\x5c\x6c\x40\xb9\x49\xa6\xbe\xf2\x17\x6a\xf3\xcd\x7f\x7e\x5d\x1b\xfe\x6e\x6d\x8e\x7e\x0e\x1f\x7f\x89\x36\x7f\x5b\x6c\x88\x03\xe0\x15\x21\x5a\x13\xe0\x98\xb2\xc8\x50\x21\x04\xa3\xcc\x58\xe4\xb8\x16\x56\x30\xeb\xb0\xc5\x94\x72\xcd\x28\x56\x8e\x09\x4e\x08\x63\x90\x53\xcb\x88\x44\x97\xf3\x8f\xef\x69\x22\x5c\x7b\x8f\xa3\x69\xae\x1c\xa6\x27\xdb\x3a\x2d\x24\xc7\x5d\x78\xaa\xf5\xd7\xe5\x60\x5e\x1d\x83\xc3\x82\xa4\x64\x25\x6e\xa2\x2e\xc5\xab\xf3\xaf\x3c\xc3\x37\x2d\xcf\x35\x0e\xeb\x99\xae\x6b\xd6\xfd\x71\xbd\xeb\x11\x1a\x0e\xaa\xe3\x8e\x6d\xc8\x09\xcb\xca\xea\xf6\x9c\x9c\x55\xa2\x9e\xe9\x65\x7a\x61\x7a\x10\x64\x5a\xdb\xec\x38\xbb\xec\xab\x0d\xcc\xf7\x72\x25\x66\x37\xab\xdd\x36\xcc\xce\x64\x9d\x15\xa4\xe7\x69\x14\xa6\x4a\x9a\x44\x8d\xca\x13\x62\x4d\x90\x98\xb6\x78\xa3\xa6\x76\xe5\xdc\xb8\x30\xe8\x9d\x5b\x94\x4f\x22\xed\xea\xed\x6e\x7f\x37\xab\xed\x55\xbe\x19\x46\xfd\x7e\xaf\xd5\x7a\xef\xcc\xe3\xf6\x79\xcf\xf2\xbc\xa9\xf4\xfe\x85\xfc\xc3\x67\xcb\x53\xdf\xa7\xfd\xd6\xb8\x7e\xa1\xfb\xeb\x95\xe6\xa7\x31\x28\x2f\x96\x2f\x4b\x4a\xe6\x7b\x2b\xd9\x78\x87\x39\xe0\x5e\x5b\x6a\x9e\x0c\x49\x49\x0d\x95\xc2\x63\x68\x0d\x87\xd2\x30\x88\xa0\xb0\xc4\x38\x45\x9c\xb0\xd6\x5e\x72\x6d\x31\xf6\x44\x30\x06\x84\x84\x00\x3c\xa1\x5b\x7c\x4b\x96\xed\x1b\x96\xe7\x4d\x64\xf4\xb3\xd9\x9e\x77\xb3\x72\x3f\xf4\xa4\x2a\x45\x72\xbc\x50\xce\x06\xc9\xb0\x30\xcc\xca\x6d\x54\x0f\x8f\x3a\x3d\x2e\xd8\xb2\x1d\x2d\xb3\x7b\x44\xd3\xa7\x14\x18\x04\x66\x3e\x69\x2c\x17\x8d\xc2\x6e\xcf\x5a\x59\x30\x54\xad\x54\xb7\x9d\x9c\x39\x4c\x69\x90\xb4\x47\x58\xad\xab\x65\x3f\x92\xf5\xe4\x1e\x2c\xf7\x32\xc3\x47\xb4\xab\xa1\x37\x97\x2e\x78\xc9\x89\xc9\x27\x64\xbf\xd0\xcc\xcc\x4c\x2f\x12\x31\xce\x87\x26\x6a\x85\xd5\x76\x6d\x55\x9b\x58\xb4\xdb\x2d\x2a\xc9\x56\x18\x15\xa6\x37\x6b\xe6\xe3\xd9\xb8\x37\x35\xf6\xbe\x92\x8d\x7b\xad\x2e\x7c\xd1\x86\x9b\x57\x7d\x6d\x7e\xde\x98\x9b\x8f\xdc\x1f\x26\xd4\x79\xee\x05\x7d\xf2\x99\x90\xe4\x0e\x7b\x29\x89\x77\xce\x23\x2e\x35\xc3\x02\x22\x86\x04\x13\x50\x5f\xea\x8c\x41\xcf\x20\x85\x82\x2a\x82\x99\x70\x44\xa0\x67\xf4\xa2\xc7\xd1\xfb\x86\xa5\xf5\x46\x8e\xf8\x5b\xb5\xb1\x5e\xbd\xef\x05\x8d\x99\x28\x5e\xe3\xf3\x4a\xe5\x0a\x69\x54\x34\xfb\x62\x47\x6f\x1a\xb8\x92\xeb\x9f\xd7\x87\x7d\x82\x86\xbc\xdf\x19\x93\xea\x22\x3f\xf3\xba\xbc\xdf\x2d\x38\x3b\xcd\x1a\x66\xb2\x3f\x96\x87\xba\x13\xa2\xd9\xda\x34\xfc\x8c\x53\xbb\xac\x77\x06\xa7\xfd\xa6\xb4\xcb\xd5\xe1\x66\x5a\xa9\x5d\xee\x05\xe7\x38\x4e\xe4\xe2\xfd\x72\xe5\x27\x89\x41\x3b\xc1\x4f\x4e\x47\x24\x3b\x2f\x85\x43\x0d\xfa\xb5\x91\x1c\x75\xa2\xde\xb4\xba\xa4\x85\xef\xcc\x0d\xff\x07\xa1\xb1\xf1\x9a\x8f\x97\xe7\x43\x59\x6e\x90\x70\x4c\x2d\xd7\x80\x42\x20\x31\x95\x84\x10\x65\xac\x15\xdc\x71\xef\x24\x32\x52\x38\x89\x24\xb5\x48\x2b\x06\x35\xa0\x0e\x51\x0b\x3d\x77\x0e\x02\x6f\xf1\x33\x1a\xf1\xe3\x68\x7c\x23\xa7\xfb\x0d\x34\xde\xdf\x59\xee\x3d\xb7\x6b\x63\x69\xdf\x80\x2e\xae\xec\xc5\xc8\x7a\x61\x6b\x75\xd7\x29\xf7\x51\x26\xe4\x99\x41\x4c\x7b\xbd\x42\x27\x97\xef\x17\x2b\xbd\x30\x94\xa5\x79\x77\xd3\x58\x0e\x32\x3b\xd4\x62\x2a\x09\xf7\x51\xb6\x5b\x5c\x1c\x0e\x51\x32\xbb\x2c\x56\x68\x73\xd5\x9d\x8c\xd0\x20\xbd\xc5\xa0\x1b\x5d\xf2\x83\x4b\xa3\xe6\xb9\xdf\xdf\xe6\xb2\xc5\xea\xa0\x99\xdd\x54\x51\x9e\x26\x59\xeb\x14\xb1\xd6\xcc\x96\x58\xa4\x53\xae\x68\xf3\x98\x8f\x32\xf2\x3d\xdb\xfe\x5f\x8a\xc6\xe3\x6b\x3e\x5e\x9e\x0f\xa0\x91\x78\x49\xa5\x40\x80\x29\x0d\xb9\xf1\x88\x6b\x6a\xb0\xd3\xd2\x49\xc0\x2c\xc3\x4e\x3b\x87\x18\x62\x8c\x12\x08\x91\x53\xda\x5a\xa4\x8d\xe3\xda\x43\x64\x8c\xf1\xbf\xd6\x46\xf2\x38\x1a\x5f\x3b\xd6\x3f\x7e\x7f\x26\xb0\xac\x72\xce\x67\x26\x1d\xdb\xdc\xe5\x97\xe7\x73\x66\x91\xc1\x93\x62\x90\xd8\x37\x33\x69\xb5\xc1\xf5\xc6\x6e\x9f\x4f\x12\xbc\x5a\x34\x6b\xe7\x29\xcc\x4f\x97\x87\x62\xbd\x01\xa3\xd3\xd9\xac\x6a\x3a\x59\x75\xfb\x4e\xb2\x5c\xaa\x9e\xb7\xae\x0c\xea\xc5\xaa\xda\x76\xfb\x70\xf6\xeb\xcc\xb2\x4d\x7b\x51\x21\x5c\xc7\xbe\x5e\xe4\xfd\x0c\xa3\xac\xa1\x7b\xf5\x0d\x1f\x47\xf3\x41\x27\xdb\x62\x1b\xdc\x3a\xd4\x5c\x32\xbb\x3d\xd7\xff\x1f\x5d\x23\xaf\xbf\xbf\x3b\x27\x1f\x40\xa5\xa0\x48\x2b\x44\x1d\x70\x44\x29\x48\xa4\x42\xc8\x1a\x28\xb1\x36\x9a\x11\xaa\x9c\x74\x5a\x21\xec\xb8\xe7\x04\xa3\x27\xcb\x14\x6b\x09\x01\xe1\xc4\x49\xcd\x14\xd5\xcf\xa8\xa4\x8f\xa3\xf2\x8d\xbe\x5d\xef\xa1\xf2\xf5\xe7\x1b\x94\xde\xaf\x27\x13\xbc\x5a\x33\x17\xb9\xb3\x61\xd3\xf5\xd1\x9d\x0a\x65\xd2\x3e\x17\x32\x7a\x93\x10\x61\xa7\x16\x86\x5b\xd8\xa3\x13\xd3\xa7\xe3\x56\xf5\x48\x32\x6e\xb9\x38\x37\x82\xe6\xcc\x4d\xa2\xa2\xac\xd6\x16\xc9\xfe\x74\x63\x96\x69\x99\x3f\x58\x31\x32\x74\x56\x8d\x13\x70\x24\x25\x0c\xe3\x62\xa7\xf8\x84\xa0\x51\x6b\x3f\xee\x0f\x69\x69\xd9\x99\x8f\xcb\x26\x6c\x1f\xca\x83\xdc\x66\xc5\x58\x21\xe1\x71\xe3\x64\xf2\x82\x4f\x1b\x4d\xc0\xb4\x9a\xbd\x57\x05\xf7\xdf\x8e\xce\xc2\x1f\x08\xfd\x08\x3a\x8d\x31\xc0\x20\x61\xb0\x93\x52\x31\x6c\x0c\x95\x5a\x59\x6e\x9d\xc1\x9e\x1a\xca\x9c\xc6\x92\x20\x43\x89\x70\xc6\x12\xa0\x0d\x96\x86\x02\x69\x99\x06\x02\x5a\xf2\x8c\x4e\xf6\x38\x3a\xdf\xe8\x4c\xf4\x21\x74\xbe\x7e\x2e\x7f\x4f\xa3\x2e\x89\x7a\xf0\xa8\xc3\xce\x3e\x42\x72\xf7\xc7\xb7\x6e\xd6\xd0\x69\x21\xc3\xd2\xd3\x54\xbe\x2e\xdd\xf2\x50\x6e\xf4\xa7\x95\x46\x91\x37\xa6\x59\x56\xed\xcd\xe6\xb6\x14\xce\xcb\xb1\x1a\x17\x60\xa4\xba\xa5\x81\x2a\x15\xe3\x33\xad\x0b\x1a\x27\xd8\xf1\xbc\x8a\xe2\x58\x6f\x59\xca\xa2\x19\x59\xc7\xdd\x49\x8b\x37\x30\xcb\x1c\x9b\xe3\x75\xea\x19\x49\x93\xca\xb1\x52\xaa\xd4\x57\xf3\x79\xbd\xd2\xd3\x9b\x3e\xde\xd6\x61\xdc\x63\xe7\x59\x3a\xee\x4c\xb6\x30\x38\x64\x16\xb9\xb4\x55\xc7\xa1\x7d\xef\xf4\xe9\xdf\x8c\xd2\x37\xee\x20\xde\x3c\x1f\x41\x2d\x46\x00\x02\x48\x84\x00\x80\x63\x2f\x9c\xf7\xcc\x23\xa8\x1c\x67\x8e\x42\x83\x0c\xf1\xca\x53\x8c\x1d\xa5\xe0\xd2\xc0\x18\x21\x40\x35\x11\x0a\x48\x24\xd9\xa5\x9f\xd6\x13\x6a\xf9\xe3\xa8\x7d\xa3\xe3\xd0\x97\x50\x7b\xf3\xfd\x07\x6e\x64\xde\xa0\x7a\x17\xed\x66\xdb\x75\xa5\xe9\x1a\x4b\xd8\x59\x76\x50\x18\x4d\x34\x1e\x51\x74\xcc\x96\x0e\x8b\xe5\x3e\xdd\xaa\xb1\x72\xa3\x06\xe3\x79\x32\xd8\x8c\x76\x8d\x5a\x72\xdb\xa7\x6b\x4c\x5b\x3b\x91\x9a\xa8\xa8\x97\x1d\xe7\x16\xab\x44\xab\x31\x41\xb9\x41\x5a\xc8\xda\xf6\x98\x9e\xd9\xcb\x09\xf6\xff\xfe\xcf\x7f\x86\xa7\xa0\x91\x2b\x0c\x03\x93\x9c\x1c\xe4\xa1\xa0\x28\xa2\xcd\xe3\xb6\xcd\x64\xbb\x3e\xeb\xd4\xce\xed\xe3\x38\xa5\x5b\xa5\x74\x6b\x36\x7c\xef\x56\xc6\xdf\x89\xea\x7f\xfd\xcd\x5a\x83\x8d\x25\x5c\x61\x08\x1d\x40\x94\x10\xe6\x39\x32\x14\x10\xc4\x34\xd5\x94\x10\xe2\x28\x62\x90\x60\xe8\x0d\xe5\x0c\x38\xe1\x28\x27\x8c\x1b\xc1\x8d\x25\xd2\x9b\xff\xfc\xef\xff\x60\xf0\x2d\x11\xad\x37\xea\xea\xff\x33\xb4\x81\x0f\x2a\xa5\xb5\x00\x7b\xd3\x68\xed\x12\x94\xae\x13\xac\xdb\xd8\x84\x38\xbf\x39\xb0\x73\x7e\x57\x2b\x1f\xa7\x3e\x88\xe3\xed\xc0\x46\xf5\xc2\x7e\xca\xe3\xc1\x76\xa8\x4f\xa3\x5a\xba\xdb\x9f\x8c\x5c\xad\x21\x4f\xc3\xa0\x07\x0f\xbb\x93\xb6\xfd\x90\xc0\x20\x6e\xe5\x9a\xbb\x5f\x35\xc6\x8e\x02\xe6\x97\x71\x7e\x58\xec\x34\x0f\x66\xdb\xc9\x16\x37\x3d\xd8\xcc\xd2\x56\xd4\xa9\xf8\xb8\x1f\xd5\x26\x33\x1b\xfa\x82\xaf\xb6\xfc\x7b\xdd\x2a\x3e\xa3\x0d\x37\x7d\x54\xbe\xa2\x0d\xf9\xcb\x58\xae\xf7\xcc\x5f\x9f\xba\xfc\x3b\xb5\x01\x49\x69\x0d\x63\x18\x5a\x2a\xa8\xa2\x54\x39\xcc\x00\xf2\x8c\x01\x67\xa8\xa6\x0a\x00\x21\x2c\x22\x0a\x12\x8d\x09\x31\x1c\x39\x63\x0c\x52\x0c\x59\xa9\x84\xc4\xe2\x49\x1b\xe0\xb7\x68\xc3\x1b\x75\xf8\xff\x6a\x6d\xb8\xa1\x77\xa3\x0d\xe0\xb8\x19\xbb\xcd\xa2\xb5\x49\xd0\x3a\x6a\xa4\xdd\x72\x01\xf7\x13\x3a\xdf\xd4\xca\xd5\x76\x6d\x53\x8f\xea\xf5\x31\xdd\x8c\x4d\x79\x3f\x4c\x2e\x36\x2e\xdb\x19\x6d\x87\xad\xe4\x14\xcf\x02\x59\x0c\x57\x5d\x6d\x13\x3b\x65\x2a\xd9\xd2\xbc\x5f\x9a\xe7\xe2\x7c\x3a\x5b\x99\xf4\xea\xa9\x67\x6d\x28\x0d\x70\x18\xc5\x30\xea\xcd\x7a\xfb\xea\xb0\x8c\xa2\x5a\xac\x7b\xc3\x74\x01\x4c\x97\x9d\x2d\x68\xe7\xcb\xdb\x73\x7a\x35\x46\x6a\xdc\x7e\xef\x4e\xd3\x67\xb4\x41\xbc\xfc\xe9\x2b\xda\x70\x3d\xc8\xbc\x6a\xc3\x30\xf8\x07\x6a\xc3\x2b\x59\x7c\xe0\x2e\x93\x96\xf6\x1a\xf1\x80\x5e\x39\x0a\x20\x95\x84\x00\x60\x8d\x04\xd0\x70\x60\x09\x27\x42\x2a\xc6\x21\xc3\x16\x29\x4c\xbc\xd4\xd8\x61\xa4\x24\x82\x8a\x02\x7b\xd9\x1b\xd0\xb7\x68\xc3\x1b\xf7\x50\x5f\x6b\x43\x25\x78\xf0\xf4\x22\x77\xda\x75\xe2\x49\x5c\x25\x7a\x51\xac\x6c\xb2\xc5\x69\x6b\xb5\x59\x64\x5b\x72\x1c\xae\x6a\x71\xb0\xad\xd6\x72\xd1\xa6\x5d\x4f\xc6\xbb\xb0\x3b\x4d\xd6\x07\x68\xd9\x1e\x75\x7a\x89\xe4\xa8\xdc\x2c\x4c\x13\xa3\x28\xca\x0e\x73\x08\x86\x9e\x8a\x6a\x52\xe9\xff\x9f\xba\x2f\x6b\x6e\x1c\x47\xd6\x7d\x9f\x5f\xe1\xb7\x73\x6e\xa8\x27\x44\xec\xe0\x9c\xb8\x37\x42\x0b\xb5\x6f\xa4\xa8\x85\x7a\x39\x01\x80\x00\x25\x8a\xa2\x16\x6a\xff\xf5\x37\x2c\xbb\xca\x2c\x97\xcb\x2e\x57\x69\xba\x7b\x18\xdd\x65\xc9\xa4\x91\x1f\x81\x2f\x81\x04\x90\x99\x68\xb5\x6b\x9b\x6d\x92\x35\x1f\x99\x77\x20\x60\x35\x2e\x3b\x66\x97\x94\xc6\x89\x53\xea\x5d\xdc\x46\xa3\x3a\x0a\x9b\xab\x95\x9a\x0c\x86\x6b\xab\x20\x07\x71\x7b\xd3\x14\xa3\xde\x1d\xfb\xf8\xbc\x85\xfc\x0b\xac\x46\x4f\x91\x72\x37\x56\x57\x5f\x97\xff\x4b\xbb\x17\x7f\x39\xab\xa9\x44\x5c\x85\x21\x51\x80\x85\x06\x5a\x00\x85\x44\x10\x0d\x01\x50\x58\x22\x08\x01\x97\x54\x6a\x1b\x58\x90\x20\x40\x25\x10\x42\x42\x2e\x15\x80\x08\x50\x0a\x48\x48\x9e\x59\x7d\x87\x5d\x90\x77\xe2\x4f\xff\xec\x3e\x3e\x77\xe5\xfa\xf8\xbe\xb4\xb6\xf5\x49\xba\x04\x93\xdd\x70\x34\x1d\xd2\x85\x5b\x5b\x2b\xd1\xec\x07\xc5\x72\x75\x15\xd5\xc1\xd5\x5f\x25\x83\x4b\x64\xc9\xf5\x70\x11\xa2\xd8\x2f\xb7\xd1\xd5\x1e\xf1\x42\x73\x50\x2f\xf5\x9d\x4e\xaf\x13\x2d\xdd\xc6\x3e\xaa\x07\xb5\xa8\x56\xef\x2e\xd6\xe0\x1c\x14\xbe\x66\xd6\xb9\xc6\x3d\xa0\x6a\x36\x8f\x1c\x7b\x92\xe0\x79\xc3\xc9\x2e\xcd\x60\xbf\xa3\x5e\x29\xe9\x4e\x32\xb1\xbd\x2c\xb8\x13\xd7\x56\xb5\xf0\xa3\xac\xe3\x7f\xa5\x36\xe4\xb0\xdc\x5b\x1b\x72\xd7\xcf\xb0\x3a\x64\xdc\x00\x66\x84\x11\x10\x01\x16\x52\x61\x28\xb3\x35\xd0\x04\x43\xcb\x20\x02\xa0\xc5\x8c\xa1\x40\x85\xc6\x40\xa0\xa8\x65\x69\xc1\x0d\x27\x80\x10\x89\xf4\x2d\xda\x0e\xdd\xe7\x94\xe8\xc1\x2b\xf0\xdf\xfb\x5d\x6c\xfd\x90\x46\x89\x1b\x5e\xf7\x9c\x41\xc0\xea\xb4\x19\x28\x14\xa1\x72\x70\xee\x46\x93\xfa\x60\x53\x35\xde\x60\x7e\x01\x33\xf9\x14\xbd\xf7\xce\x09\x42\x85\x55\xd4\x6e\x5e\x67\x5b\x93\xb8\xcd\x76\x73\x3b\x49\xed\xce\x4e\x2d\x0e\x17\xe7\xcc\xa6\x03\x33\xad\x8f\xe6\xc7\x8b\x8b\xb2\xa6\x5b\x4e\xeb\x61\x7f\x32\x5f\xf6\xf7\x84\x8d\x46\x45\x46\x3a\xfb\xd1\x05\xef\xb4\xf2\x0b\xf1\x2e\x80\xaa\xd1\x9e\xc5\x08\x6d\x0e\x07\xcd\x6f\x39\x03\xe4\x34\x3e\x1b\x5a\x58\x74\xa7\x60\x6b\xa7\xe9\x9c\x8c\x9a\x83\x9e\xd7\x6c\x14\x61\xa3\x57\xbc\x34\xea\xa5\xfe\x76\x30\xf7\xc6\x72\xb0\xfd\x28\x8a\xae\xf4\x11\x3b\x5f\x5a\xbb\x92\xb3\x57\x5b\xed\x25\xd2\xeb\xd6\xa8\xa1\x98\xe9\xdb\x7b\x7d\x3e\x2c\xea\x8d\x1e\xee\x9d\x26\x5d\xbf\x59\x9b\xc7\xd4\x45\x96\x8f\xd5\x7e\x32\x79\xe2\xe4\x8b\xdf\xc5\xfc\x6d\xd9\xef\xe1\xfa\xa2\x1d\x39\xf9\x9f\xf5\xbb\xe8\xc6\xc5\xc3\xe2\xa5\xab\xaa\xde\xf7\x1c\x5d\x61\x91\x50\x08\x0d\x91\x25\x81\x61\x18\x61\x86\x35\x47\x42\xd2\x10\xf3\xc7\x6e\x1c\x18\x64\x18\xa3\x14\x08\x16\x72\x40\x0c\xa3\xd0\x52\x5a\x43\x61\x73\xcb\xc6\xdc\x7a\x64\x77\x3e\xe2\xec\x93\xb5\x3b\x7b\x69\x9d\xcf\x44\x55\x2f\x8a\x65\xab\x63\xb5\xea\x97\xfd\xfc\xd4\x03\x49\x60\x89\xcb\x66\x0d\xec\x5e\xe3\x7c\xec\x54\x2e\x7d\xb2\x2f\x3b\xaa\x72\x63\x33\x7a\x33\xaa\xfa\xab\x7c\xb7\x1c\x8c\xd2\x31\x6a\x82\x3e\x22\x4e\xe9\x22\x2e\xd6\x2a\x8b\x23\xd4\xbd\xce\x8c\x48\x2b\xfb\xa3\x48\xda\xf5\x7a\xc1\xc6\x1b\x4d\xbd\x73\xe4\x14\x97\x95\x25\x5c\xfa\xbe\xdd\x98\x46\xd3\x58\xee\xc4\xb6\x58\x74\x8b\xd6\xb1\x65\x95\xd6\x95\xd2\x74\xa8\x7d\xc0\x47\x71\xf4\x74\x6e\xca\xba\x06\xb7\x38\xae\x9c\x6d\xab\xd7\xf0\xd7\xfd\x9d\x1c\x45\x53\x74\xe6\xc5\x10\x06\xc2\x04\x35\x13\x2e\xaa\x7d\xbc\x5d\x95\x92\xdc\x32\xfd\x6f\x47\x55\x57\x72\x79\x2c\x3f\xcb\xf4\x9c\x7f\x5d\x70\x3c\x85\x15\xbb\xe2\x65\xbb\x40\x55\xc3\xd9\xa4\x57\xcf\xb6\xa2\x67\x7c\x8f\xcb\xcb\x29\x8b\x0f\xd2\xf5\x1a\xa5\x44\xf2\xb2\xc9\x45\x50\xfc\x4c\xc4\x4b\x25\xf7\xb2\xbf\xa0\x89\xcf\x51\xd5\xf3\x97\xf2\xef\xe6\x2d\x8b\x35\xc4\x18\x1a\x0d\x35\x0f\x43\xae\x28\xa7\x84\x59\xca\x36\x04\x31\xa1\x24\x34\x8f\x56\x3a\x12\x36\xe7\xc8\xf0\x10\xd8\xb6\xa4\x06\x33\x0b\x68\x09\xb9\x2d\x91\xb8\x69\x02\xb9\x8b\x26\xbc\xe3\xc3\xf1\x1b\x9a\xf0\xd4\x6f\xbc\x3e\x07\xe5\x45\x13\x7a\x87\x68\x5b\x28\x23\x6b\x13\xca\xeb\x71\x3c\xae\x5f\x6d\xaf\x8f\x0a\xd5\xae\xf6\xc2\xc9\x56\x15\xa7\x59\x08\x7b\x41\x18\xd1\x5e\xf9\xc0\x74\x76\xec\x87\xfe\xc4\x45\xe9\x71\x5d\x76\x5a\x17\x5d\xbf\x72\xc7\xb1\xaf\x9e\xbb\x18\x2e\xb6\xeb\xdd\xa9\x91\xac\x0a\xa5\xba\x39\x35\x9f\xf6\x2a\x17\x5e\xa5\xb8\xa0\x3d\xd8\x15\xf5\xf1\xe9\x62\x46\x68\xd7\xe9\x80\xd2\xb8\xbf\x59\x54\x0b\xbd\xfa\x6c\x7f\xf4\x4e\x8d\x5d\xbb\x95\xd1\x17\x64\xbf\xa5\x09\xa7\xff\x04\x4d\xe8\xfe\x75\xf8\x4a\xaf\xb8\x90\xc3\xf7\x33\x9a\x82\x95\xa4\x8a\xeb\x10\x87\x52\x2b\x82\xa1\x30\x40\x88\x10\x22\xcb\x02\x61\x68\x87\x94\x71\x65\x80\xad\xb8\xc2\x14\x08\x4a\x90\x66\x14\x0a\x06\x09\xd2\xa1\x0e\x6f\xde\x4e\x88\xde\x45\x53\xde\xf1\x2f\xf9\x37\x6a\x4a\xbf\xa0\xfd\xe6\x60\x3a\x9a\x2d\x0b\xf5\xd2\x96\xf5\x69\x83\x87\xa0\x38\xf1\x89\x3c\xac\x2d\xb1\x89\x3b\xf3\x7a\xb4\x2f\xeb\xe1\x25\x41\x6c\x34\x66\x9d\xca\x66\x66\x2a\x29\xad\x06\x63\xc5\x12\xb7\x3f\xee\x4d\xe6\x65\xc5\xda\xd5\x12\xeb\x69\x8e\x4a\x1e\x06\xcb\xa0\xf4\x34\x66\x78\xdd\x7d\x16\xef\x7d\xc9\x6a\xee\x96\x8b\xdd\xb0\x5b\x6a\x84\xe9\x44\x77\xf9\xec\xd2\xf5\xe6\x9b\x64\x90\x06\x5b\x95\x0c\xf6\x2c\xf8\x68\x57\xff\x33\x9a\xf2\xf7\x64\xe2\xd7\xef\x15\xf7\x6f\x89\xef\x67\xa2\x05\x21\xe2\x5c\xd8\x5c\x63\x8d\xa8\x02\x8c\x61\x5b\xd8\x18\x31\x0c\x99\xa5\x14\x25\x32\x94\x0c\x32\xa0\x24\x01\x90\x31\x63\xd9\x44\x08\xc1\x0d\x50\xc2\x0e\x11\x84\xb7\x75\x1e\x76\x17\x4d\x79\xc7\xf7\xe5\xb7\x35\xe5\xd5\x95\xd3\x94\x2e\x19\x56\xd6\x13\x60\x39\xad\x75\xbb\x5c\x3e\x9d\xba\x07\x6b\x7c\x2a\x98\x82\x74\xad\x7a\xec\xda\xb5\x3e\x3d\xa1\xc4\x76\x8b\xb5\xa6\xda\xaf\x38\x83\x98\xef\xed\x78\xea\xcb\xc4\xf2\x42\xdc\x8b\xea\x6a\xbd\xb2\x2e\xeb\xfa\x39\x52\xad\x85\xe3\x9d\x66\xf5\x72\x77\xea\xaa\x1b\x9b\x47\xf1\xa2\xbd\xea\xfb\xb1\x2c\x87\xd6\x6a\xe3\x22\x37\xad\x76\x67\x12\xa2\xd6\xf9\x02\x9c\xd4\x9c\x12\xb1\x5d\x73\xb5\x0d\xbb\x8b\x8f\xd6\x7c\x3e\xd4\x94\xea\x0b\x13\x73\x33\xe2\x5f\xb1\x5e\xd2\xdb\xa7\x79\xe9\xc7\x13\x86\xf7\xe3\x99\xff\xa6\x9a\x70\xbb\x72\xb1\x4b\x9f\x9c\x87\xfe\x22\xf7\x7e\x6a\x4d\x4a\x18\x2d\xb9\xc5\x2d\x02\xa1\x96\x82\x01\x25\x10\xe4\x10\x12\x29\x95\x61\x08\x58\xd0\xd6\xa1\x32\x02\x12\xac\x38\x64\x0a\x13\xa9\x09\xb7\xa4\xd0\x36\x51\x0c\xa2\xdb\xec\x9d\xdf\x65\xf6\xfe\xba\xbe\xbe\x6b\xe9\x2d\xa4\xd9\x48\x25\xc6\x26\x75\xb4\x2a\x5d\xb7\xeb\xb9\x2a\x9d\xf7\x1b\x5d\x18\x2d\xc4\xfa\xd8\x3e\x55\x37\x95\x23\xb4\xf6\x54\xd6\x6e\xeb\xe9\xef\xe5\x44\x4b\xaf\xc7\x5e\xe4\x04\x65\x70\x40\xe5\xba\xdf\xa8\x55\x93\xe6\x24\x5d\x5a\xf5\xfe\x96\x95\xbb\x1b\xa3\x2e\xfa\xd4\xf2\xb2\x56\xdb\x4e\x7c\xdc\xf0\xbb\xce\xa9\xeb\xc2\x78\xd8\xba\xec\x26\xab\x32\x3b\x87\xe5\x73\xa3\x2d\x7a\xdd\xa9\x2b\x4a\xcd\x33\xad\x0c\xe7\x9d\xe9\xc6\x6d\x3c\x6a\xc6\xae\x70\x28\x45\xb5\xe6\xe1\x90\x36\xda\xdd\x75\x33\x39\x70\xfb\xea\x54\xd2\xfd\x95\xb6\x46\x97\x8a\x71\x26\x85\x49\xe9\x70\x48\x94\x8a\xef\x39\x7b\xcf\x69\x68\x7b\x7f\xd8\xd5\x1a\xad\x69\x51\x7b\x7b\x12\x75\xe9\xb6\x39\x2d\x75\xa5\x98\x1e\x93\xe6\x6a\xdb\xb9\x64\x25\xea\xee\xec\x7d\x47\xaf\xce\xe6\xf6\xfc\xcb\xec\x7d\xf5\xb6\xec\xf7\x70\x7d\xd1\xfa\x9c\xfc\x4f\xce\xde\xe3\xd4\xbf\x82\xf1\x4b\x0f\xe4\xdc\x37\x5e\x17\x22\x82\x43\xc3\x2d\x08\x00\xc0\x80\x0b\xdb\xb6\x35\x02\x0a\xda\x14\x87\x80\x4a\xae\x8d\xe6\x1a\xdb\x50\xb2\x90\xe1\x50\x13\x6c\x23\x9b\x43\x02\x6c\x4b\x03\x0b\x03\xf3\xcc\xee\x3b\x64\xfc\xf3\x3e\x7a\xa3\xc2\x30\xc0\x2b\x7a\x5c\x4e\x0b\x01\xab\x75\x97\xbd\x23\xf3\xb2\x53\xd6\x5c\x06\xbd\xfa\x54\xcf\x70\x31\x38\x39\x6e\x6f\xb4\x69\xf2\xe2\x47\xd1\xe8\xd5\x2a\x9d\x1c\x4b\x41\x07\x9c\x16\x49\x16\xb2\x6b\x50\x6d\xed\xad\x45\xad\x5f\x4c\x36\x1b\x97\xd6\x5b\xad\xb4\x58\xe2\xa3\x56\x62\xc7\x7e\xdc\xed\xf5\xe3\x83\x3b\x28\xef\x4b\xcc\x0c\xcf\x1e\x69\xfb\x56\x79\xd6\x91\x7b\xf7\xc2\xb7\xb5\xe4\x92\x59\x4d\x6a\x7c\x5d\x54\xa7\x9b\xdf\x79\x13\xf8\x26\xaa\x38\x9e\x1b\x6c\x67\x69\xdc\xa8\x24\x4b\x6b\x72\xe8\x17\xd7\xa4\xd5\x46\xc0\x42\xc9\xd0\x5f\x55\x46\xb3\xea\xbc\x9c\xdb\xd1\xba\x2b\xbb\x07\xcb\x55\xbf\x75\xd8\x91\x5a\x71\xd5\x3f\xfb\xad\xaa\x2c\x58\xb2\xdb\xa9\xb4\xea\x55\x2f\x41\x2b\x3d\x80\xdd\xb2\x53\x1d\xb7\x87\x83\xc1\xd3\x06\xf3\x5f\xcd\xee\x4a\x35\xe5\xff\x3e\x76\x03\xc0\x2c\x62\x6c\xac\x42\x4a\x42\x26\x29\x43\x02\x40\x2c\x38\x51\x1a\x51\xae\xb8\x65\x38\x26\xdc\x18\xa1\x43\x63\x18\xb0\x91\x85\x43\x6e\x38\xb6\x09\x22\x12\xeb\xdb\x8c\x3c\x9f\x79\xff\x93\xb5\x3b\x7b\x69\x9d\x8f\x62\x82\x5e\x6a\x33\x7f\xff\xed\x95\xba\x37\x6b\x68\xb8\x8c\xaf\x85\x5b\x15\x56\x2e\x71\x55\x00\x5d\x88\xf7\xd3\xc3\xd2\xdf\x35\x92\x43\x9f\x9d\xad\xee\x99\x4d\x62\xbc\xf2\xd6\x5d\x3c\x24\xa3\x52\x6d\xe5\x8d\x0b\x70\x37\x5e\x9f\xe3\xee\x69\x5b\x6b\xcd\xf7\x41\xea\x94\x46\x63\x60\x17\x2a\xe4\xa2\x36\x24\xee\x77\x3a\x9b\xc9\x79\x57\xd1\x5e\xbb\xe5\x8e\xea\x8f\x0c\x74\xa6\x65\x93\x74\x41\x02\xd8\xec\xba\x1e\x0e\xd7\xd3\x7e\x6f\x7d\x29\x15\x9c\xc9\xa0\x70\x40\x45\x35\xeb\x3a\x70\x30\x6f\x8d\xc0\x3e\x17\xdf\xf7\xfb\xfb\x02\x39\x0b\xe2\x17\xd8\xfd\xbc\xde\xb3\x7a\x55\xbf\xa5\x5c\xfd\xfe\x2a\xbb\xa8\x11\x98\x32\x49\x90\x21\x88\xd3\x90\x31\x11\x22\xa2\x20\xb1\xa0\x0e\xa1\x0a\x51\x18\x72\x89\xa9\x25\x88\xd4\x10\x4a\x2a\x21\x07\x5c\x72\x20\x55\x88\x74\x08\x43\xf1\x5f\x7f\x3c\xe0\xbc\x7f\xce\x27\x47\xa6\x9f\x63\xd7\x6b\xdb\xbc\x4a\x5a\xf1\x42\x6e\x0b\x9e\x21\x71\x36\xba\xb8\xb0\xb8\xaf\x5f\x2b\xa7\x85\x17\x59\xb3\x90\xa4\xb1\x1d\x97\xbc\x12\xb8\xb1\xe9\xf5\x1a\xc4\xed\xaa\x7d\x95\xef\xb6\x7b\xbc\x63\xf6\x25\x61\xf4\xba\x54\x5f\x1d\x37\x99\xb3\x5e\x6e\x57\x98\xc5\xa5\xc3\xf6\x84\x23\x30\x9a\xc4\xab\x8e\x15\x53\x77\xb0\x02\xf1\x79\x2d\x92\x6b\xf5\x54\x1d\xa2\x49\xa1\x07\x1b\xfd\x46\x18\x0f\x5b\x89\xe3\x0a\xff\x5c\x2f\x1b\xb7\xdd\x98\xef\x68\xda\xcb\x9e\xa3\x81\x25\xf5\xd2\xbd\x6f\xfb\xf3\x7d\x48\x2d\x70\x4a\x4a\x07\x2b\xb3\x6c\xd8\xf1\xa2\x8d\xc4\x8b\xfd\xae\x5d\x5e\xe0\x3a\xb7\x0a\xd6\xfe\x8e\x67\xa7\x57\x72\xb9\x74\x3e\x6b\x25\xe4\x6c\xe3\x4f\x8e\x53\x4f\xd7\x9b\x75\x9d\xbb\xdc\x57\x47\xff\xff\x82\x15\xf3\x1c\x59\xfc\xa4\x09\xf7\xcd\x13\x60\x49\x25\x29\x13\x02\xd1\x9b\x9b\x5a\x08\x31\x36\x5a\x19\x83\x84\xa5\x90\xcd\x0c\x07\x06\x09\x5b\x02\x84\x21\xa7\x9c\xdb\x94\x68\xc6\x68\x88\x31\x53\x96\x04\xfa\x8b\x26\xc0\xdf\xd7\x84\x0f\x57\x3e\x5f\x72\x91\xdf\x51\x13\xba\x83\x71\x14\x98\xc2\xc9\xb2\x43\xbd\xa9\x0e\xcf\x5d\xd5\x4a\xe3\xf1\xac\x51\x82\xb5\x64\x59\x5e\xcd\x07\xab\x85\xd5\xa3\xb4\x76\x98\x97\xae\xbe\x5e\x4e\x54\xa5\xdf\x0d\x2b\x4d\x4b\x8d\x54\xe1\xdc\x9a\x5f\x4e\x9d\xe9\xb0\xbb\x68\x97\xe8\x69\x40\xdb\x36\xee\x79\x49\x2d\x79\x3e\x01\xba\xc2\xf7\xe9\x36\x9e\x8d\xbc\xa3\xb5\xf4\x0b\xd7\x62\x3f\x3a\x11\x83\x1b\xd7\xad\x74\xac\x76\x7d\xd1\x9a\xe9\x10\x02\xc7\x94\x32\xfd\x37\xd1\x84\x5c\x5e\xfa\xff\x1c\x4d\xb8\x5b\x8c\x3d\x0d\xa1\x46\x96\x09\x09\x7b\x34\x9a\x0d\xd4\x50\x02\x04\x35\x90\xca\x06\x82\x60\x2e\x10\xb5\x01\xb7\xa5\x96\x86\x31\x2d\xa1\x44\x21\x87\x36\x80\x40\xd8\x21\x54\xe4\xd1\xe2\xc0\xe0\x2e\x16\xc7\x3b\x9a\xf0\x34\xa2\x7e\x72\xb6\x98\x1b\x43\x72\xfd\xc6\xd7\xd6\x2b\x97\x68\x1f\x1a\x0d\x22\xb7\x7c\x5a\xf7\x2d\xd3\xed\xf5\x9c\x51\xbb\x61\xb9\xe1\x78\x3a\x8e\x9d\x89\xec\x91\x71\x87\x80\xea\xca\x1b\xe9\x30\xe8\x76\xa7\x7b\x39\x25\xad\xf6\x78\x78\x4d\x04\x5c\x36\xeb\xc7\x49\x94\x64\x20\x9c\x1e\xa6\x8d\x59\x50\x6c\xf6\x13\xd1\xb6\xc0\xee\x8b\x47\x82\x1c\xe2\x53\x71\x1c\xb6\xda\xc5\xce\x22\xf3\x3b\xf3\x63\xab\x9e\x0c\xdb\xbd\x4d\xbd\x75\xdc\xd9\x88\x5e\x32\x3b\xda\x38\xf3\x6d\xd8\xc9\xc5\xc2\xbc\xad\x05\xf9\xf5\x88\x8f\x56\x35\xff\xee\xe3\xc1\xf2\xef\x83\xef\x73\xab\x9a\x82\x23\x68\x0c\x65\x16\x27\x4a\xda\x5a\x52\x03\x14\x96\x0c\x5b\x86\x6a\x0b\x21\x29\x6c\x49\x2c\x2e\x0c\x83\xc4\x48\x03\x2d\x84\xa9\xcd\xa0\x2d\x28\x16\xc0\xb6\x8d\x79\xd6\x12\xf8\xfb\x5a\xf2\xce\xfa\xff\xaf\x69\xc9\xcb\xf8\xf2\xb6\x96\x00\x57\xf3\x34\x3a\x95\x7a\x57\x6c\x3a\xdb\xa0\x32\x3f\x79\xb1\x47\xce\x69\x44\x55\x73\x3b\x22\x93\xf2\x3e\x5e\xce\xa2\x1a\x3e\x44\xe3\xf9\x82\xb7\xe8\xd2\xdf\x94\x2a\xc7\xf4\x38\xcd\xd6\xa8\x39\xbe\xac\xa8\x67\x42\xda\x0a\xdd\x09\x77\x55\x67\x59\xf3\xa7\xa0\x5b\xaf\x3c\xfb\x66\x6e\xab\x9d\xe2\xec\x34\x57\x07\xbd\x3f\x36\x9c\xbd\x55\x85\xb8\xda\xa7\x2b\x50\x69\xdb\x97\x29\xe3\x51\xaf\x9e\x5c\x56\xab\xe1\x7c\x65\x3e\x9a\x7d\xfe\x49\x5a\xf2\xa7\x8c\x15\xbf\xa1\x25\xf7\xc6\xf7\x39\x2d\x09\x29\x53\x46\x42\x06\x04\xe7\xb6\x66\x9c\x60\x63\x42\x0a\xa4\xc5\xb5\x50\xa1\x66\x34\x24\x54\x33\xc2\x31\xa5\x46\x21\x26\xb8\xd6\x0a\x86\x48\x60\x4b\x1b\x2e\x01\x7e\xd4\x12\x78\x97\xb1\xe4\x9d\xb5\xff\xdf\xd5\x92\xdc\x95\xd3\x12\x67\xd0\x56\xee\xaa\xe4\xd7\x37\xfa\xb8\xdb\x27\x25\x35\x4b\x7b\xcd\x62\x3d\x36\x9d\x8e\xeb\x6c\x6c\xd1\xaf\xd6\xeb\x5e\x6d\x5c\x80\x15\x3c\xea\xf3\x70\x54\x18\x95\xba\xfe\xb2\x32\x9c\xba\x9d\x6a\xe1\x3c\x10\x9e\x7b\xbe\x9e\x6c\x34\x54\xce\x7a\x49\xeb\xd7\xa0\xb2\xdf\xb3\x2f\x1e\xcc\x20\xbd\xb2\xd6\x79\xdb\x4c\xd3\xf9\xa8\x68\x07\xb2\xd2\xdf\xf5\x08\x04\x13\x02\xe6\x75\xc9\x7b\x34\x3e\x9c\xf6\xfd\x65\xf5\xb8\x38\x7f\x14\xb3\xf5\x19\x2d\xf9\x7b\xb2\xf0\xeb\xf7\xca\xfa\xef\x83\x2f\x77\xfd\x4c\x8e\x32\x4c\x24\x05\x0c\x84\x9a\x61\x26\x24\x82\x48\x22\x15\x0a\x02\xa1\x6d\xd9\x08\x85\x06\xd9\x3a\x0c\x99\x45\x81\xa1\x1a\x52\x8b\x51\x48\x29\xd2\x46\x11\x20\x95\x92\x37\x8b\xeb\x3e\xde\x75\xaf\x19\xfd\x9d\x0d\x19\x1f\x0f\x62\x0d\x06\x1d\x30\x2a\x54\x44\xc5\xb0\x62\x81\x16\xba\xc5\xf3\x28\x75\xd2\xd1\x28\xac\x2e\xba\xed\xfd\xbc\x83\x77\x31\xd6\x1f\xad\xcf\x97\x6b\x72\x08\x15\xd9\xed\x82\x5e\x3d\x4b\x7a\xe3\x2c\xf1\x1b\x0d\x1e\xf3\xb3\x15\x45\xfa\x04\x74\xa3\xd1\x1f\xf9\x3d\x11\x77\x07\x17\x5e\x0f\x52\x02\xbd\xe1\xc9\x4b\xd5\xe9\x74\x3c\x02\x1d\x3b\xa6\x54\x88\x8a\x2b\x7f\xda\xdd\x4c\x77\xe5\x3e\xc7\xac\x82\x69\x7b\x7d\xcb\x55\x90\xd4\xf6\x73\x15\x12\x4b\xef\xba\x71\xc6\x61\xd2\xdc\x54\xfc\x81\xe9\x6b\x34\x2d\xcf\xed\x43\x2b\x0a\x17\xb3\x98\xf1\x91\xbc\xe6\xfc\xbe\x7f\x7f\x05\x33\x97\x55\xa8\xc9\xd8\x6a\xdb\xf3\x2f\xf6\x78\x10\xad\xa2\xb4\x50\x2c\x1e\x8e\xf1\x80\x8f\x5b\xe7\x16\xa8\x35\x5c\x1c\x57\x76\xc1\xb0\xd0\xc6\x85\xc6\xf1\xf6\xfc\xcb\x0a\xe6\xee\x6d\xd9\xef\xe1\xfa\xc2\xfe\x5f\xcf\x6a\xb4\x50\x57\x55\x1d\xbc\xb0\xd9\xb9\x6f\x56\x23\x6d\x31\x86\x42\x8b\x09\x29\x20\x0a\x01\xd0\x54\x58\x54\x5a\x10\x50\x0e\xa1\x8d\xa5\x06\xc6\x36\xd0\x82\x02\xda\x90\x72\xc8\x2c\x08\x09\xb2\x29\x85\x4a\x43\xc5\x6e\x31\x60\x38\xef\x5d\xf7\xc9\xda\x9d\xbd\xb4\xce\x3b\x6b\x4c\x4f\xaf\xfc\x4b\x7b\x82\xc1\x17\xb6\x97\x4b\x28\x6e\xb1\x53\x79\xe7\x6d\xb2\x9d\x4a\xb7\x65\x77\x12\x5f\xae\xa7\xe3\xf8\x0a\x8f\x64\xd4\x22\xb4\x4e\xad\xe6\x3c\xca\xc4\xc4\xad\x0d\x4d\x81\xad\x57\x98\xc2\xb6\xbf\x56\x85\x46\x0b\x32\xd1\x19\xf7\x5d\x8e\xc2\xfa\x1c\x2c\x8e\x9b\xc2\xb8\x79\xf0\x9c\xd6\xb6\x38\x2c\x3f\x47\x34\xe2\x86\xb2\xcb\xf4\xb0\x18\x78\x8d\xd5\xba\x9e\x55\x6a\xeb\xe6\x66\x58\x68\x10\x1e\xb5\x17\xcb\x55\x94\x96\x16\x23\x32\x5b\x5c\x17\xe7\xe2\x47\x7b\xbd\xb9\xe6\x7d\x59\x5d\x7c\xeb\x14\xc0\x27\xcb\xf2\xf4\xd7\xb1\xeb\x76\xdd\xd8\x7d\xfa\x65\xf9\xb7\xf5\xf9\x96\xfb\xeb\xf2\x73\xcf\x7f\xa2\xf7\xfb\xa9\x3c\xca\x12\x43\xc5\x98\x85\xa1\xb1\xb0\x34\x0c\x50\x4a\x6c\x61\x11\xcd\x94\x40\x06\x33\x0b\x09\x63\x21\x2e\x58\x28\x18\x91\xc0\x92\x9c\x20\xce\x2c\xa6\x6c\x63\x00\x83\xb7\x39\xc4\x7d\xf2\x28\xfb\x1f\xd5\x06\xb6\x51\x50\x76\xda\xa1\xaf\xc7\x3d\x74\x1a\xc5\x51\x66\x08\x2d\x8c\x59\x10\x6d\xe2\x61\xb8\xad\x56\x26\x7e\xd7\xc4\xf5\xca\xfe\xa2\x2a\xe7\xf5\xee\x74\x38\x7f\x33\x44\xe7\xbd\xaa\xeb\x95\xc4\xd3\x03\x55\x72\xce\x6e\x71\xd2\xde\xad\xd7\xa8\x88\x42\xa3\xe6\x83\xe2\xa5\xc9\x7d\xaf\xba\xdb\xc5\xfb\xa2\x9a\xcf\x38\x1a\x75\x16\xbe\x22\x38\x21\x27\x75\x05\xa5\xa5\xec\x08\x5a\x29\x89\x4d\x38\xac\x6f\x46\x93\xe9\x92\x2c\x33\x7f\x5b\x9d\x76\x52\xfc\xc4\xde\x89\xd5\x69\x28\xa7\x73\x1a\x16\xd5\x64\x36\x5b\xd7\x08\x5f\x17\xbd\x53\xff\x58\xc2\x1b\x7b\x03\x32\xf7\x50\xeb\x37\xca\x3c\x2d\xd6\x2e\xf7\xdc\xb9\xca\x9d\xa6\xdb\x1f\x84\xb0\xe4\x55\xd2\x11\x4a\xfc\x90\xd7\x9a\xb8\xd3\x28\xe8\x63\xa2\x61\xb3\x1d\x58\xa9\x88\x4e\xc9\xf2\xda\xc0\xe7\x68\xa7\xd2\x52\x26\xda\xbc\x93\x7d\xd9\x44\xf8\x3e\xfa\xff\x43\x5c\x5f\x34\x23\x27\xff\x13\xed\xff\xd8\x48\x2b\x38\xf5\x79\x6e\xf6\xe8\xdc\xd7\xab\x3a\x84\xd8\x60\x4e\x65\xc8\x20\x34\x21\xe0\x8c\x48\x8e\x11\x47\xb6\xe6\xdc\x92\xa1\xd6\x02\x41\xac\x21\x09\x25\xb3\xa8\x80\x54\x18\xa2\x71\x28\x04\x57\xc4\x62\x40\xcb\x47\x76\xd3\xbb\xb0\x7b\xf4\xe3\x37\xfa\x6b\xb2\xd9\xe5\xac\xa0\xa0\x69\xf9\x5d\x77\x3c\x19\x1c\xd3\x0a\x6c\x0f\x64\x75\x33\xb7\xbb\x97\x2b\x19\x75\x0f\x65\xaf\x19\xec\x61\xe0\x86\xfb\x64\x10\x54\xf0\xa8\x21\x56\x41\xda\xc8\xba\xd1\x7c\xd3\xec\x1a\x31\x64\xdd\x49\xd8\x38\xd4\x03\x0e\x0a\xb5\xf2\xfa\xda\xcf\x86\x85\x62\xa3\xbe\x9e\xbb\xd5\x47\xc6\x5a\x4b\xbb\x29\x6c\xb5\x28\x7a\x73\x70\x70\xfa\xd5\x74\x1d\x75\xd0\x61\x7d\xf1\x17\x53\xa9\xea\xeb\xd5\x0e\x90\xde\x76\x7d\x76\x95\xbe\x63\xf6\x91\x4a\x2e\xe6\xf7\x17\xd8\xc8\xf8\x0b\x05\x6b\xaf\xb1\xfc\xb9\xd9\xec\x18\xb4\x58\xa8\x89\x64\x04\x62\xa4\x2d\x69\x51\xa8\x10\x47\xc8\x10\xce\x2c\x44\x25\xd3\xb6\xa1\x18\x13\x24\x35\xb6\x8d\x21\x96\x41\x06\x99\x50\x31\x02\xa8\x56\xf4\x0b\x7b\xbf\xae\xef\x7c\xa6\x6f\xf8\x6a\xb5\x58\x6f\xbd\xc1\xdb\xec\xfd\x64\xf9\xbf\x95\x8b\x31\x68\xa3\xd6\x8d\xbd\xa5\xfe\xb2\xde\x1f\xf8\xfd\x72\x75\xe8\xb2\x74\x02\x67\x69\x41\x26\x19\x1c\x54\x47\x5a\x2e\x61\x71\x89\x8a\xd1\xb6\xd1\x76\xb9\x0e\xfa\xb5\xac\x4a\xd3\xb2\x76\x8e\x97\x6e\x95\x13\x7e\x5c\x93\xb2\x90\xb1\x7b\x2a\xdb\x8b\x34\x2e\x95\x9b\x5d\xae\xb3\xea\x9c\x49\x67\x59\xb9\x65\x26\x8d\x8c\x9e\xa0\xd1\x72\x10\x65\xf5\x4e\x35\xba\xda\x81\xaa\x0a\x44\xcd\xcc\x19\x31\xd2\x2a\x82\xea\x95\x17\x51\x63\x34\x61\xf5\x7f\x13\x7b\x3f\xdf\x97\xfb\xc5\x27\x4b\x6a\xff\x66\xfd\x7e\xb6\x7d\xde\x69\x9b\x9f\xb1\xb9\x85\x8d\xb4\x09\xb9\x82\x06\x6b\x4c\x94\x85\x00\x57\xd4\xd6\xca\x26\x9c\x42\x24\x2c\x8d\x11\xc3\x06\x5b\x21\xa1\xb6\xd6\x0a\x40\x1c\x62\xa4\xb8\x20\x38\xa4\x90\xd0\x47\xf6\xde\x27\x4f\xee\xeb\x53\x18\x73\x6f\x94\x9b\x18\x8e\xbf\xd8\xd4\xe5\x52\x79\xd4\x38\x4c\x83\x42\xd7\x8f\x26\xc5\x53\xf5\x48\x0a\xbd\xea\x78\x6e\x9b\x13\x5e\xe9\xec\x7a\xd6\xd3\xbe\xcd\x1b\x8e\x6b\xa2\xe9\x58\x57\x66\x4c\xf7\x65\xa5\x09\xd7\xbb\x61\x7d\xd4\x2b\x15\x87\x6d\xda\x18\xdb\xc5\x83\x3f\x1e\x9e\x9b\xae\x3b\x69\x66\x6b\xe0\xae\xcf\x8d\x2f\x6b\xf0\x74\x33\x38\xc2\x6e\xc7\x22\xb5\x53\xb5\xde\x15\xfa\x32\x9e\x2f\xfa\x11\xa9\x86\x03\xb7\x37\xde\xb0\xcc\x59\x82\xea\xa5\x3d\xee\x05\x49\xf0\x01\xab\x72\xd8\x9f\x16\x0f\x3f\xe5\x2f\xba\xc8\x86\xdd\x56\xfc\x7c\x30\xce\xe7\x98\xb1\xc8\x86\x3d\xfb\x8c\x9f\x58\xff\xbe\x9f\x66\x2e\xe2\xfc\x53\x7d\xf1\x16\x4e\x8b\x0d\xda\xe0\x2f\x14\xae\xbd\x66\xf3\x1d\xfb\xe2\xdb\x75\xfa\xcf\xd1\xbe\x37\xeb\xf7\x73\x78\xf7\xeb\x90\x7a\xe7\x8b\xfa\x53\xf0\xfe\x4c\x6f\x21\x39\xe1\x54\xd9\x80\x51\x85\x95\x81\x9a\x53\x2c\x21\x81\xc0\xc6\x5c\xd8\x0c\x86\x92\x40\x86\x43\x0d\x31\x65\x88\x52\x1b\x53\xa4\x2d\xc5\x38\xc4\x4a\x6b\xeb\xa9\xb7\xb8\x8f\x7f\xe8\xe4\x15\xf8\xef\xde\xa8\x3b\x74\xce\xa3\xae\x6e\xcd\x43\x34\x48\x07\x97\xe9\x31\x54\xb2\xbd\xaf\xce\x1c\x74\x4d\x92\x9a\x9c\xe0\xc3\xa9\x09\x2a\x74\x56\x38\x3f\xe5\xdc\x7f\x27\xba\xb3\xd4\xed\xa7\xb4\x8e\xe3\x43\x16\x6d\xcc\x70\xdd\x38\xa5\xfb\x86\xbb\x0c\x9a\xd5\x73\xb3\x38\x4e\x2f\x8d\xe2\xb6\xb9\x28\xc8\xb0\x3b\xb9\x2e\x80\x4f\x27\xc9\x29\xed\x17\x2e\x4d\x3f\x5a\xc1\xc2\xaa\x2f\x26\x8a\x5e\xc7\x87\xf3\xa2\x13\x37\x92\xe4\x5a\xd6\x6e\xf1\xdc\x3e\xba\xbd\x5b\x2f\x83\x27\xf5\x8b\x17\x66\xfe\xa0\xb3\x9e\x75\x5a\xc3\xfa\x68\xb1\x51\xfb\xfd\x30\xec\xe1\xe5\xec\x3a\xdb\x78\x31\xee\xea\x8a\xdf\xc7\xb5\x8f\x7a\x99\xfc\xf5\xc1\x3c\x24\xbf\x0b\x54\x75\xe6\xdd\x71\xb5\xb1\x08\xa6\xe1\x95\x5c\x79\xc2\xd0\xb4\x7e\xd9\xb9\xd0\xeb\x71\x32\xf3\x26\xe0\xd0\xc9\x2a\x3d\xf7\xb0\x32\xd9\x93\xd8\x97\xf5\xa7\xf7\xbc\xb5\xde\xd7\x86\xbc\xfc\xcf\xf6\x36\x33\x74\xe8\xc3\x97\x3f\xaf\x45\xaf\x64\xfe\xb9\x96\x9f\x6d\x8c\xa1\xc0\x06\x94\x01\x6a\x24\x24\xc4\xb2\x30\x32\x42\xd9\x94\x0b\x45\x15\x40\xdc\x82\xc2\x10\xc0\xa8\x00\x96\x51\xd0\x06\x16\x37\xca\x28\x8c\x89\x36\x04\xa0\x47\x6d\xc8\x7b\xdc\x7d\xb2\x35\x66\x2f\xad\xf9\x8e\xe5\x77\x5b\xeb\xae\xc9\x55\x6d\x3f\xf3\x9d\x6f\xee\x97\xab\xce\xa5\x7b\xcd\xcd\xbe\x87\x5f\xb4\xa1\x5c\x3a\xb7\x17\x8d\x20\xe8\x75\x5a\x8b\x09\xda\x91\xc2\xb2\xd2\x5a\xf1\x83\x12\xeb\x31\x2b\xab\x9d\x93\xba\xd3\x9a\x44\x19\xf0\x2e\xde\x65\x24\x4b\xcb\x6a\x22\x2a\x47\xa7\xe0\xb5\x4f\xdd\xd9\xba\x37\x32\x72\xe9\x8e\xea\xbb\xf5\xe1\x32\x6e\x5f\xc0\x6c\x33\xd2\x4a\x95\x2f\xdb\xea\xf3\x9e\x44\x5a\xb4\xe7\xcb\x89\x9a\x14\x2e\x63\xb7\x5c\x2d\x64\xc9\x7a\x57\x3f\xf9\x51\x65\x07\x6a\x70\xed\x16\x2b\x4b\x37\xe6\x45\xc7\xd3\xb6\xf7\x51\x86\xd8\x7c\xc4\xd1\x47\xac\xcf\x8d\x79\x9f\xac\xe7\xf2\x84\xcc\xe5\x64\xf4\xf5\xa4\xff\xef\xea\xed\x45\xde\x39\xf7\x8b\x73\xd3\xaf\xb9\x67\xbc\xaa\x21\x55\x50\xc5\x96\xb6\xc1\x39\xdb\x5a\xbd\xa5\x6f\xfa\x93\xd1\x78\x2f\x17\xac\x14\x8f\x3a\x9b\x94\xd5\x6f\x45\xb5\x46\x95\x42\xe7\x66\x82\x3e\xbd\xf5\x0f\xf2\x87\xbc\xe9\x33\xfa\x53\xbe\xfd\x1a\x53\xcb\x06\xdc\x62\x04\x68\xc6\x2c\x88\x29\x15\x9c\x63\xc2\x09\x0b\x0d\x46\x1a\x87\x80\x60\xad\x38\x96\x54\x8a\x90\x42\xa5\x89\xc5\x8c\x06\xd0\x80\x50\x18\xdb\x7e\x66\x2b\xfc\x7d\xb6\xbe\xe3\xad\x91\x67\x6b\xf3\x9b\xfb\xe5\xea\x08\xf6\xae\xb9\x25\xb6\x1c\x5b\xe3\x73\x94\xfa\x5e\xb9\x22\xac\x14\x68\x33\x5b\xab\xf3\xc6\x89\xa7\xba\xe9\xbb\x24\x73\x02\x7f\x1c\xda\x66\x7d\x3a\xec\xd7\x70\x39\x38\x11\x5d\x3b\x45\xe3\xf4\x4a\xfb\xbb\x76\xeb\x54\xf1\xf6\xa4\xc3\x2f\xc9\x6a\xb2\x28\xf9\xd3\x71\x13\xcd\x2e\x66\x81\x2e\x7e\xfb\x6b\xd6\x43\x52\xaf\x78\x51\x63\xa4\xc3\x53\xab\x2e\xd6\xf3\xda\x7c\x8a\xac\xc1\xd2\x1a\xfb\xd9\xbc\x23\x28\x58\x5c\x93\x72\x11\x0f\x79\xb8\x23\x2f\xc3\xc7\xdf\x80\xad\x97\xaf\x00\x5e\xd7\xdb\x8b\xbc\x7b\xb3\xf5\xfb\xec\xb2\xbf\xce\x56\xcc\x31\x20\x2a\xb4\x4c\x28\x6c\xa9\x6c\xa1\x25\x30\x96\xc4\xc0\x96\x46\x42\xdb\x66\x86\x09\x28\x04\x90\x40\x1b\xa8\x09\x10\x16\xb5\xa0\xa2\x00\x58\xd8\x28\x88\x94\x7a\x66\x2b\xfa\x7d\xb6\xbe\xe3\x35\x91\x63\xeb\xf0\xdb\xfb\x55\x98\x58\xea\x52\x4e\x25\x72\x23\x85\xca\xf3\x00\x8e\xaf\xcd\x7c\x6d\xe4\xd8\xdb\x5b\x05\xd1\x22\x0d\xe6\xd3\x02\x1d\x97\xb2\x04\xb4\x0e\x2b\x73\x5e\x96\x09\xbb\xc0\x4e\x63\x27\x26\xd5\xd1\xd2\x2b\xb4\xab\xe7\xc9\x84\x27\x64\x63\xfc\xf1\xa2\x73\x3e\xb3\x16\x27\xed\x5d\x7f\x6c\x6d\x7b\x95\x00\x7b\x46\x64\xd1\xf6\x5c\xb3\x6a\x15\xe4\xec\x02\xa5\x2b\xcf\xf3\x98\xa1\x53\x53\xd6\x00\x6e\x8e\xad\xdd\xae\x71\xda\x97\x57\xc5\x6c\x93\x14\xf5\x62\x3b\xcf\x34\x3f\x8c\x44\x39\xea\xd4\x1d\xd7\xe7\x4d\xfe\xd1\x5e\xc0\x9f\xca\xde\xaf\x74\xfd\xb0\x1e\x5f\xe4\xdf\x9b\xcd\xdf\x1f\xc8\xff\xeb\x6c\xa6\x80\x2a\x6a\xd9\x16\x66\xda\x70\x63\x2b\x61\x5b\x5c\x60\xf6\xf8\x9f\xc0\x52\x5a\x80\x63\x6c\x2b\x42\x6d\x82\x6d\x11\x42\x25\xa8\x45\x6c\x4b\x08\xc9\x30\xa4\x4c\xf3\xff\xfa\xe3\x81\x58\x77\xb1\x14\xde\xf1\x6e\x78\xb3\xef\xcd\xd7\xf2\xd7\xf2\xdc\x52\xe0\xcd\x7a\x83\x79\xab\xe2\x9f\xe2\x56\x54\x6a\xd9\x52\x3b\x68\xd6\x2f\x36\xd0\x32\x68\xcd\x83\xd5\x18\x6c\x2a\xab\x0b\x53\x7c\xb6\x83\x59\x3b\x6c\xf7\x57\xa2\x93\x62\xb3\x2a\x91\xad\xe8\x14\x12\xb7\xdb\x3e\xf5\x87\xf3\x7d\x7c\x5a\xce\x78\xab\x71\x1e\x8c\x42\x5e\x7f\x8e\xe9\x0d\x26\xe7\x68\xe9\x98\x63\x4c\x2e\x9b\x4a\xdb\xa3\x1e\xdd\x74\xb2\xf2\xdc\x49\x6b\x62\x3c\x14\x56\xb6\x89\x26\xee\x76\x17\x56\x66\x85\x8f\x72\xae\x7d\xc8\xd8\x97\x19\x70\x35\xf7\xbe\xbf\x60\x13\x3f\x47\x2a\x9e\x5e\x00\x7c\xe2\xe4\xd9\xd3\x9f\xd1\xdf\x37\xef\x52\xfe\xcf\x44\xa1\x84\x8c\x23\xa4\xb0\x11\x42\x5a\x5c\x53\x48\x2d\x5b\x28\x83\x18\xc0\x21\x90\x42\x6a\xc8\x28\x04\x02\x4a\x04\xb9\x0e\x0d\x62\x98\x12\x6d\xdb\x42\x18\xc4\x6d\x25\xe4\x23\xd3\xc1\x5d\x98\xfe\x4e\xa6\xf0\x5f\xb3\x89\x9b\x13\x7c\xd9\xd5\xc2\x25\xa5\x26\xaa\x56\x17\x3b\x16\xd4\x4a\xbe\x13\xc2\x24\xe9\x1f\xe4\xf5\x5c\x5c\x88\x96\xea\xc2\xd3\xb2\x86\xd6\x87\x6d\xcb\xed\x15\x4a\xd7\xc5\x05\xee\xc6\xfb\x36\x29\xad\x2f\x9b\xf9\x7a\xb9\x38\x65\xc1\xf4\xd8\x18\xd2\x51\xcd\xee\xce\xc3\x74\x54\xaa\x3e\xf7\xd3\x8d\x69\x74\x3d\x0f\xb6\xbb\x4a\x3f\x58\x55\xc4\xf5\xaa\x46\x96\xdc\x16\x5a\xb0\x29\xda\xd7\x76\x1f\x5d\xc3\xfa\x74\xb3\xda\x72\x9c\xb6\x3f\x5a\xc5\xfc\xc9\x7e\xfa\x3e\xac\xfb\x19\x9b\xf8\xfa\x55\xde\xa7\xfb\xe5\xf1\x21\x98\x80\xa4\xfb\xb5\x58\xf7\xdc\x8d\xbb\x56\xfe\x05\x7f\x26\xb3\x2c\x17\x90\x3f\x4e\xcf\x42\xcc\x38\x36\x88\x09\x26\x2c\xc6\x35\x30\x5a\x1b\x4b\x4b\x64\x29\x41\xb1\xb6\x6d\xcc\x10\xa6\x90\x08\x85\xb5\xb0\x28\x53\x8a\x42\x80\x29\x7e\x64\x24\xbc\x0b\x23\xdf\xc9\x0e\xfe\x1e\x23\x4b\xa7\x6e\x7e\x2c\xca\x31\x12\x39\xe7\x56\xaf\xc1\xec\x53\x7d\xe8\x05\x33\xbd\x1b\x0c\xc0\xb5\x1b\x24\x7a\xd3\xcd\x0e\xf3\x75\xab\x46\x8e\x8d\x14\x46\x95\xac\xb1\xaa\x6e\x26\x26\xea\xf3\x71\xbb\x82\xca\x5e\x73\xd5\x2f\xa4\xda\xce\x36\xa3\x69\x32\x6e\x74\x63\xe7\x30\xef\x37\xd6\x83\x79\x02\xe6\xbb\xee\x17\xff\xca\x4b\xbb\x3d\xc8\x12\xd0\x98\x0f\x7a\x54\x47\xba\xdf\x28\xb0\x13\xbd\x56\xdb\xb3\xfe\x6a\xa4\xac\x20\xd9\x39\x34\x9a\xf1\xf3\xa2\x56\xff\xc8\x73\xec\x33\x8c\xec\xfe\x19\x8c\xb4\xee\xc8\xc8\xc7\xb6\x39\x7d\x92\x91\xa1\x21\xc6\xd2\x5c\x22\x49\x10\x0a\x43\x5b\x85\xc2\x32\x86\x11\x6c\x49\x6d\x90\xb6\x35\xb0\x11\xb5\x2d\x6a\x19\x2e\xb0\xb4\x30\xc0\xd2\xd2\x48\x01\x89\x11\x20\x12\x3c\xda\xb6\xe4\x3e\x5e\x5c\xd3\x1f\x33\xf2\xf9\x17\x2d\xed\xaf\xda\x1e\xd8\xee\x0a\x95\xd9\xba\x79\x89\x4b\xa6\x7e\xde\x35\xa7\xb3\xe2\xbe\x09\xc6\xcd\x10\xf6\xcd\x6c\xe9\xad\x4f\xd5\xeb\x6d\x4d\xf6\xbd\x38\xd4\x4b\xe3\x34\x9f\xd8\xf5\xa9\x3b\x9e\xd6\xc1\x76\x21\xa5\xde\x0e\xe3\x73\x70\x9d\x1f\x49\xb3\x62\xf1\x36\x3c\x0e\x97\xe7\x6b\xe0\x9f\x5a\x97\xe5\xd1\xe5\x89\x55\xd0\xb8\x8b\xe7\x30\x3a\xac\xdb\xdc\xce\x78\x63\x64\x9a\xdb\x66\xff\x5a\x5d\xad\xeb\x59\xcf\x17\x1d\x15\x3c\x45\xea\x21\xc0\xfb\x8b\xeb\xde\x1f\x84\x69\x6f\x3d\xb0\x81\xdb\x61\x57\xaa\xeb\xbe\x70\x83\xc1\x62\x99\x39\xb5\x4e\x35\x3e\x49\xf7\x3c\x39\x7f\x64\xe3\x96\x7e\x8e\xa9\x37\x76\xe6\x77\x8b\x86\xd3\x25\x59\x2c\x43\xb1\x2d\x46\x2b\x51\xe9\xae\x4f\x8d\x73\x26\x2e\x35\x68\xd8\xb0\x37\x1e\x36\xc2\x38\x85\x33\x47\x74\x4b\xfc\x16\xb4\x98\x5b\x45\x03\x6f\xcb\x7e\x0f\xd7\x17\x8b\x25\x27\xff\x93\xab\x68\x13\x2b\x5d\x8c\x8f\xb9\xfd\xd3\xbf\xf6\x34\x30\x4e\xa4\x0c\xa1\x24\x84\x13\x8a\x08\xe0\x02\x71\x6d\x4b\x86\x6d\x19\x62\xc9\x95\x0e\xa9\x25\x6d\x23\xa5\x64\x82\x4a\xc8\x91\x06\x44\x68\x9b\x13\xcc\x91\x05\x85\xba\xf5\xcf\xf8\xd7\xb5\xe1\xf2\x02\x36\x78\x05\x3e\x37\x9f\x7d\xea\x93\x3f\xa9\x0d\xcf\xd7\x14\xe0\x6f\x4e\xa8\xfa\x24\x5b\x9e\x92\x58\xfc\x52\x96\x91\xb2\x99\xe6\xb3\xf0\x55\x72\xda\xe8\x79\x93\x53\x77\x17\x76\x76\xf3\x34\x29\xd4\x9a\x83\x02\x03\x7b\xbf\x51\x26\xbb\xe4\x5a\xc9\x06\xe3\x4b\x3d\xf5\x50\xa6\x8e\xcd\xaa\xdd\x5b\x35\x3b\xa8\x33\x73\xd6\xb6\x0d\x0f\xfe\xb1\xda\xb4\xdd\xce\x25\x23\xb2\x02\x2f\x9e\x42\x93\xc0\xb3\x8e\xb5\xc5\xcc\xcb\xb0\xd5\xac\xc7\xa5\xc1\xcd\x81\xcb\xa9\x4e\xe5\x74\x32\x0e\xaf\xab\x1e\xed\x4d\xca\x71\x30\x22\xfd\x63\x19\xa1\x89\x3f\x12\x02\x9e\xaa\xb3\x29\xf2\x56\x35\x7f\xe6\xba\xc5\x02\x6b\x1d\x07\xa1\x4c\xba\xfb\x5e\xe5\xbc\xe6\xcd\x7e\xa0\x07\x6e\x64\x5b\x9e\x88\xc7\xf6\xae\x5c\x58\xf2\x41\x61\xe8\x6c\x06\x8d\xca\xe8\x96\x53\x61\x2e\x8f\xc3\xfd\x78\x3e\xe9\x79\x8b\x38\xde\xec\xad\x95\x3d\xc4\xd7\x7d\xd0\x49\xd9\x01\x6d\x76\xed\x2a\x1e\xef\x36\xf3\x51\x74\x6a\x67\x2f\x7d\xff\xe5\x9d\x36\x7d\xfb\xfb\x6b\xed\xcf\xd9\xcf\xa7\xbf\x83\xf6\x07\xbf\x21\x7f\x5d\x7e\x76\xb9\xba\x8f\xfc\x4f\xf7\x3e\x83\x2c\xf4\x5f\xda\xa6\xfe\x5a\xe6\xbd\x77\x0c\x5f\xa2\x3f\x73\x3b\x07\x25\x27\x21\xfd\x60\xd3\x98\x6c\x8f\xb8\xb5\x8a\xe2\x76\xb7\xcc\x65\x3d\x9b\x87\x69\xc1\x8a\xc7\xa3\x39\x0a\x88\xbd\xf2\xbe\xf2\xf9\xb6\x42\xf0\x84\xb9\xf7\x76\xd4\xfe\x4b\xdd\xbc\x79\xbd\x96\xff\x19\x7d\xce\xc4\x3e\xd9\xb7\x70\x12\xbc\x58\xbe\xb9\xc3\x8a\x7f\xa7\x7f\xf8\x8d\x15\x0d\x22\xa5\xd4\xa1\x91\x04\x6a\x13\x82\x90\x84\x36\x43\x1a\x42\x82\x2d\x0b\x63\x01\x99\xe4\x00\x10\xc6\x20\x02\x18\xda\x48\x23\x29\xb8\x04\x46\x02\xa8\x29\x52\x02\xea\xc7\x5e\xfb\x3e\x1e\x89\xb3\x57\xf0\xbf\x63\x42\x3d\xb9\xf4\x9b\x5e\x2f\x1d\xd2\x46\xd5\x59\xae\xea\x25\xc7\x8e\x36\xb3\xd6\x28\xed\xcc\x7a\x69\x90\xc5\xd7\x7d\x61\x33\x1d\x9f\xbd\xa2\x7d\xab\x8e\xf7\x3c\xd1\x2b\xdd\x6e\x3c\xb5\xcf\x7d\x34\x6d\x6f\x5c\x7a\x18\x16\x47\xa0\xbc\x0d\xaf\xde\x7c\x58\x0e\x5c\x44\x16\xc7\xd5\xec\x3c\x28\x47\x66\xeb\x66\x7e\x75\x25\x40\xf9\xda\xcf\xb6\x45\xb9\x6a\xb4\xf0\xa0\x60\x96\x41\xcb\x6b\x8d\xc2\xd9\x4c\x5c\xa7\xad\x2e\x5c\xe0\x55\x8d\xa5\x4f\xbd\xda\x84\x1d\xf7\x05\xd0\x39\x5a\xe1\x74\xa6\x0a\xcd\xc4\x2d\x79\xed\x16\x8b\xbc\x31\x6a\x9e\xdd\xcd\x20\x3e\xac\x33\x93\x0d\x49\x7c\x59\xe0\xb7\x5e\xfc\x17\x6d\x98\x9c\x6f\x72\x79\xa3\xe2\x85\xe3\xcf\xac\xc3\xfc\x74\x6e\xb5\xe6\x51\x79\x10\xb4\x27\xc3\x71\xeb\x02\xfd\x19\xec\x34\x39\x33\xdb\x31\x50\x23\x53\x7c\xea\xfa\x5e\x7a\x31\xf4\xb6\xec\xf7\x70\x7d\xe9\x45\x72\xf2\x3f\xdb\x8b\x0c\xa6\x13\x15\xe6\xfe\xfc\xdf\xe8\x77\xf0\x53\x67\x48\x72\x8b\x30\x00\x15\x0d\x81\x65\x6c\xcd\xb0\x94\x96\x52\x86\x60\xa1\x6d\x28\xa0\xc4\x12\x68\xc2\x29\x26\xc0\x68\x0e\x10\x12\x10\x23\xc4\x01\x35\x54\x12\xca\x6e\x16\x7d\xde\x83\xf1\x93\xad\x31\x7b\x69\xcd\x77\x76\x02\x9f\xc6\xb7\x4f\x6a\xc3\xf3\xf5\xd5\x86\x79\xba\xbe\xde\x2f\x97\xda\x74\xa3\xa6\x41\xf7\x5a\x72\x56\x0d\x8b\x57\x66\xa0\x33\x59\x1d\xf7\xbd\x6a\x5b\x1c\xe6\xe7\x42\xbf\xb9\xda\x0f\x8a\x9d\x25\x9e\x8f\xfd\x6e\xcb\x1b\x97\xfb\x5a\x8e\x33\x32\x71\x06\xb1\xbd\x18\xee\xa2\xba\x6f\x39\xd9\xe9\x50\xad\xcc\xe0\x82\x94\x9c\xeb\x29\xaa\xaf\x8d\xfd\xe5\x34\x92\xf6\xba\x3c\x75\x32\xe9\x55\x09\xb1\x0e\xa7\xeb\x60\xdc\xa6\xc3\xf5\x6e\x78\x26\xc1\xac\xd6\x28\x44\x7e\x7f\xe1\x5e\xa3\x89\xbd\x1b\xa7\x1f\x59\xf6\xef\x8d\xed\xce\xd7\x56\xfe\xc7\x3f\xfe\xf9\xcf\x7f\xfc\xf3\x9f\x0f\x3d\xb1\xd2\xff\x7a\x10\x4a\xad\x0f\xe9\x3e\x14\x7b\x91\xff\xfc\xbf\x9b\xa5\xbe\xfc\xcf\x83\x7f\xd9\xe8\x7f\x3d\x54\xfa\xbd\xa1\xef\x95\x9a\x3d\xff\x7f\x1e\x86\x6a\xae\x57\xe2\x5f\x0f\x9b\x83\x4c\x16\xea\x7f\x1e\xfa\xa7\x54\xef\xfe\xf5\xf0\x58\xe2\x3f\xfe\x51\xea\xf8\x8e\xf7\xe0\x97\xca\x1d\xe7\xa1\xdf\xeb\x04\xf9\x12\xff\xf1\xf0\xf0\xf0\x50\xaa\x56\x73\xa5\x7d\x27\xf0\x61\xe0\x35\xbb\x25\x2f\x78\x68\x3b\xc1\xc3\x7f\x3f\xdf\x5d\x84\x7f\x3c\x3c\x3e\x91\x8a\x95\xfe\x11\xfc\xec\xeb\x87\xfb\x02\xcf\xde\x41\x9d\xbd\x07\xf9\x3b\xa0\x52\xa4\x8f\xff\xdf\x09\x9e\x14\xe9\x5b\xc8\xbe\x08\xf8\x16\x54\xba\x0e\xf5\x1b\x88\x12\x1d\x46\x7a\x37\xd7\x22\xd4\xbb\xec\xdb\x6f\xff\xfb\xf4\x2d\xd3\xdb\xff\xbd\x0b\xdc\x6f\x0a\x7f\x0b\xf8\x3b\xd2\x1f\x46\xbd\xa6\x3b\x72\x1e\xfe\xfb\xeb\x6f\x3f\xf5\x26\xf7\xa9\xef\x4f\xbe\xc0\xf7\x6d\xf0\x7c\x5f\x64\xf3\xef\xd0\xaf\x8d\x79\x84\xfd\xf4\xe3\x4e\x78\x9f\x0a\x7b\x0b\x68\x4e\xcc\xb7\x08\x6f\x37\xde\xa0\xc9\x46\x3f\xa2\xbb\xfd\x7b\x27\x70\xb7\xb2\xde\xc2\xf6\x22\xe4\x5b\x68\x8b\xcd\x1f\x0f\x9b\xf5\x6e\xff\x3d\xb6\x47\x79\xd9\x7c\x7b\xd0\x07\xfd\xcd\x97\x7b\x21\xcd\x15\xf9\x26\xe0\xd7\x22\xdf\x6a\xf4\xb7\x50\x67\x07\xf9\xfc\xe3\x7e\x48\xb3\x83\xfc\x01\xc6\x2f\x62\xbe\x45\xb7\xd3\xd9\x1b\xcd\x9d\xa9\xcd\xf6\xb0\xde\x1d\x56\x59\xee\xe3\x9d\x40\xbe\x14\xf8\x16\xd0\x57\xe2\xbe\x05\xbb\xcd\xf4\xfe\x4d\xed\xc9\x16\x51\xfa\x48\xd0\xe7\x9f\xf7\x42\xfa\x54\xda\x9b\x30\x73\x82\x7e\x38\x5e\x3d\x49\x59\xea\xcb\xf7\x78\xf7\xeb\x9d\xce\xf6\x62\xaf\x73\x1f\xef\x85\xfa\x6b\x81\x6f\x02\xff\x56\xdc\xb7\xd8\x6f\xbf\x7f\x73\x84\xdd\xef\x0e\xd9\x3e\x59\xa4\x3a\xcb\x7d\xbc\x13\xe0\x97\x02\xdf\x02\xfc\x4a\xdc\x0f\x2b\x7b\x91\x65\x07\xbd\xfb\xe3\x41\x64\x99\xde\xab\x75\xf8\xc6\x3b\x9c\x8d\xd6\x5f\xec\xd9\xfc\x97\x7b\xbd\x47\xae\xc8\x37\xdf\xe4\xb5\xc8\xb7\xfa\x89\x4c\x6f\xff\x78\xd8\x9f\x17\x69\xa8\xcf\x6f\xbc\xc1\x0b\xfc\x7b\x63\x7f\x17\xf8\x6f\xa1\x7e\x6e\x24\x29\x12\x91\x2a\x9d\x7d\x01\xdb\xec\x55\x9d\xe9\x07\x38\x2b\x9e\x53\xf2\x9d\xa7\x47\x5f\x97\xf3\xd0\xef\xbd\x18\x7e\xa3\x61\xb3\x57\x7f\x90\xfb\x9d\xd6\x0f\xff\xfd\xfc\xc4\xff\x79\x98\x34\x1c\xcf\xf9\xfa\xfd\xe1\xff\xfd\xdf\x07\x60\x7d\xb9\xbe\xb7\xcd\x0e\x97\x45\x1a\x3d\xd1\xe8\xf6\x22\xbf\x0c\xf4\xbb\x92\x1e\xa1\x3e\x0f\xf0\xdf\x02\xcd\x3d\xf8\x1d\x9e\xc7\x3a\x97\x97\x4c\x6f\x7f\x19\xc7\xd7\x12\x1e\xe5\xbf\x70\xe7\x1b\x08\x3f\xb6\xa7\x1e\x1f\x37\x5a\xff\x3e\x84\x2f\x85\x3c\xa1\xc8\xe9\xe0\x4f\x02\x79\xbe\xf3\x7b\x40\xf2\x85\x3c\x02\xf9\xd6\x5a\xfc\x49\x24\x9b\xdd\x42\xe9\xdf\xe3\xc6\x4b\x11\x3f\x22\xc5\xed\x89\xb7\x46\x64\x9d\x1e\x7f\xb3\x12\xf2\x85\x3c\x8a\xcf\xd4\xe6\x93\x6d\xf1\x32\x3c\xff\x36\x92\x7c\x39\xcf\x60\xbe\xd8\x1c\xdf\x82\x11\xd9\xfe\x1d\x40\x3a\x49\xee\xa4\xb6\xdf\x17\xf5\xa3\x26\xfa\xe6\xc9\x1f\x19\x23\xcf\x7d\xd3\xaf\xc3\xf9\xa6\x98\x5b\x0d\x3d\x5b\x39\xdf\x60\x79\x6b\xb2\x39\x58\x67\xfb\x68\xa7\x87\x6e\xe7\x36\x67\x96\x22\xd3\x0f\xe1\x61\xb5\x79\x50\xeb\xd5\x26\xd1\x7b\x7d\x93\xf6\xff\x03\x00\x00\xff\xff\xfa\xe8\x94\xff\x2c\xc2\x02\x00") + +func kahunaCoreSqlBytes() ([]byte, error) { + return bindataRead( + _kahunaCoreSql, + "kahuna-core.sql", + ) +} + +func kahunaCoreSql() (*asset, error) { + bytes, err := kahunaCoreSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "kahuna-core.sql", size: 180780, mode: os.FileMode(420), modTime: time.Unix(1508958232, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _kahunaHorizonSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x69\x73\xe2\x48\xf6\x28\x0e\xbf\x9f\x4f\x41\xf4\x1b\xcf\x44\x55\x97\x73\x5f\x6a\x9e\x7e\x22\x04\x88\x7d\xdf\xe1\x17\xbf\x70\xa4\xa4\x94\x4d\x19\x83\x0d\x78\xa9\x9a\xb8\xdf\xfd\x1f\x12\x60\x40\x20\x16\x01\x2e\xf7\xbd\xe3\x98\xe9\xee\x24\xa5\xb3\xe7\xc9\x93\xa9\x93\x27\xff\xfc\xf3\x1f\x7f\xfe\x19\xab\x8c\x26\xd3\xdb\xb1\xae\x57\x0b\x31\x47\x4d\x95\xa5\x26\x3a\xe6\x3c\x3f\x3c\xfe\xe3\xcf\x3f\xff\xe1\xf5\x27\x9f\x1f\x1e\xb5\x13\x73\xc7\xa3\x87\xe5\x03\x2f\x7a\x3c\xe9\x8f\x86\x31\xf9\x8d\x7d\xa3\x2b\x4f\x59\x3f\x63\x8f\xb7\x37\xde\xeb\x81\x47\xfe\x51\x37\x1b\xb1\xc9\x54\x4d\xf5\x83\x1e\x4e\x6f\xa6\xfd\x07\x3d\x7a\x9e\xc6\xfe\x8a\x81\x7f\xfb\x5d\x83\x91\x7d\xbf\xf9\xab\x3d\xe8\x7b\x4f\xeb\xa1\x3d\x72\xfa\xc3\xdb\xd8\x5f\xb1\xab\x66\x23\x25\xae\xfe\xbd\x00\x37\x74\xd4\xd8\xb9\xb1\x47\x43\x77\x34\x7e\xe8\x0f\x6f\x6f\x26\xd3\x71\x7f\x78\x3b\x89\xfd\x15\x1b\x0d\xe7\x30\xee\xb4\x7d\x7f\xe3\x3e\x0f\xed\x69\x7f\x34\xbc\xb1\x46\x4e\x5f\x7b\xfd\xae\x1a\x4c\xf4\x1a\x9a\x87\xfe\xf0\xe6\x41\x4f\x26\xea\xd6\x7f\xe0\x55\x8d\x87\xfd\xe1\xed\xbf\xe7\xb4\x6b\x35\xb6\xef\x6e\x1e\xd5\xf4\x2e\xf6\x57\xec\xf1\xd9\x1a\xf4\xed\xaf\x1e\xb3\xb6\x9a\xaa\xc1\xc8\x7b\xcc\x28\x34\xcc\x5a\xac\x61\xc4\x0b\x66\x2c\x9b\x8a\x99\x9d\x6c\xbd\x51\x8f\x95\x4b\x85\xee\xfc\xf9\x6f\x77\xfd\xc9\x74\x34\xfe\x79\x33\x1d\x2b\x47\x4f\x62\xc9\x5a\xb9\x12\x4b\x94\x4b\xf5\x46\xcd\xc8\x96\x1a\x2b\x2f\xad\x3f\x78\x63\x8f\x9e\x87\x53\x3d\xbe\x51\x93\x89\x9e\xde\xf4\x9d\x1b\xf7\x5e\xff\xfc\xf7\x47\x20\xb4\xfd\xff\xfa\x08\x94\x9e\x5d\x7d\x1c\x83\x33\x6c\x41\xee\xfc\xd7\xb3\xa5\xa4\xd9\x59\x79\x73\x8e\xc9\x7f\xf1\x46\xbb\xae\xb6\xa7\x93\x1b\xeb\xe7\xcd\x68\xec\xe8\xf1\x8d\x35\x1a\xdd\xef\x7e\xb1\x3f\x74\xf4\xdb\xcd\x0a\xfe\xe1\x44\xf9\xb6\x38\xb9\x19\x0d\x6f\xfa\xce\x31\x6f\x8f\x1e\xf5\x58\xbd\xbf\x3b\xfd\xf9\xa8\x4f\x78\x7b\x49\xc9\x49\x54\x1c\xf7\xee\x40\x3b\xb7\x7a\xec\xbf\x38\xd1\x4f\xcf\x7a\x68\x1f\xc5\xc2\xca\xeb\x8f\x63\xfd\xd2\x1f\x3d\x4f\xe6\xbf\xdd\xdc\xa9\xc9\x5d\x44\x50\xa7\x43\xe8\x3f\x3c\x8e\xc6\xde\x88\x99\xbb\xbd\xa8\x60\xa2\xca\xd2\x1e\x8c\x26\xda\xb9\x51\xd3\x63\xde\x5f\x18\x73\x04\x53\x9a\x0f\x9d\x08\x44\xaf\xbe\xa9\x1c\x67\xac\x27\x93\xdd\xaf\xdf\x4d\xc7\x8e\x3f\x35\xdc\x0c\x46\xa3\xfb\xe7\xc7\x03\x9e\x7e\xdc\x47\xd2\xec\x29\xd5\x1f\x1f\x09\x78\xe1\x17\x0f\x7e\xc1\xf3\x13\xae\xab\xc7\xfb\x1e\x7d\xf4\x9e\xbc\x9b\xee\xa5\x7b\xb2\x36\x6c\xad\x9f\x7b\x85\x7f\xf7\x3e\x3e\x0e\x79\x78\x34\xa3\x63\xb4\xf7\xc1\xfe\x64\x7a\x33\x7d\xbb\x79\xdc\x0f\xd2\x7b\x72\xf4\x78\xe8\x93\xfa\xd0\xc7\x16\x0e\x78\xf7\xc3\xd6\x62\x90\xec\x7d\x6c\xff\xd8\xb7\xde\x6d\x77\xf7\x73\xb3\x39\xcc\x93\xf6\x64\xf2\xec\x61\x3e\x6a\x16\x7b\xd7\xed\xa3\x1a\x4f\xfb\x76\xff\x51\x0d\xa7\x07\xce\x6b\x5b\x5f\xbd\x79\x3c\x72\x26\x7d\x77\xee\xc7\x52\xb0\xfd\xc5\xa3\xf1\xfb\xe2\x3b\x04\xdf\xec\xc1\x8b\xc3\x9f\xa9\xd3\x1e\x39\x8b\xe8\xc4\x73\x95\x8b\x40\xc5\xd7\xf0\xcd\x81\x14\xdc\x8e\xc6\x8f\x37\x0f\xfd\xdb\xf9\xdc\xb9\x83\x84\xc0\x93\x3b\x79\x3c\xd4\x84\x66\x6f\x27\xca\x85\x66\xb1\x14\xeb\x3b\x33\xec\x49\x33\x65\x34\x0b\x8d\x03\x61\x87\x98\xc6\x19\x20\xcf\x95\xb2\x1b\x92\xdf\x3a\x9c\xfd\xc5\xb4\x52\x37\xab\x4d\xb3\x94\x88\x20\x33\x2f\x30\x9c\xe8\xa7\xa3\x31\xaf\x01\x39\xf8\x6d\x47\x1f\xf8\xec\x32\xfc\x3a\x98\xc3\x90\xb1\x79\x0c\x7f\xdb\x41\x1c\xf6\xee\x3c\x50\x39\xec\xe1\x79\x54\x72\x30\x6f\xf3\x71\x7a\x0c\x2f\xb3\x57\x0e\x7c\x76\x1e\xaf\x1c\x4e\xcf\x22\xc0\x39\x84\xa2\xc0\x48\x9f\x3f\x6c\x76\x1a\x66\xa9\x9e\x2d\x97\x56\x5f\x18\x3c\xde\x4e\x9e\x06\x0b\x32\x12\x19\xb3\x68\x6c\xc0\xfb\xf7\x3f\x66\x8b\xfa\x92\x7a\xd0\xdf\x17\xbf\xc5\x1a\x3f\x1f\xf5\xf7\xf9\x2b\xff\x8e\xd5\xed\x3b\xfd\xa0\xbe\xc7\xfe\xfc\x77\xac\xfc\x3a\xd4\xe3\xef\xb1\x3f\xfd\xb5\x7e\xa2\x66\x1a\x0d\x73\x01\x79\x01\xef\x1f\x6b\x10\xd7\x3b\xe7\x80\x13\xe5\x62\xd1\x2c\x35\x76\x40\x9e\x3d\x10\x2b\x97\xd6\x01\xc4\xb2\xf5\xd8\xd5\x62\x15\xbf\xf8\x6d\xe2\x03\xb9\x0a\x62\x5e\xb0\x3f\xc7\xf9\x2e\xa1\xbd\xfc\xac\xc9\xb2\x54\x6e\x04\xe4\x19\x6b\x67\x1b\x99\x77\xb2\x56\x97\xf3\x6b\xe8\x97\x50\x02\x84\x1c\xc3\xfc\x06\x10\x5f\x00\x95\xc2\xf5\xe3\x6d\xbd\x5a\x88\x3d\x8e\x47\xb6\x76\x9e\xc7\x6a\x10\x1b\xa8\xe1\xed\xb3\xba\xd5\xbe\x18\x0e\xdc\x7e\xf0\x1e\x73\xb4\xab\x9e\x07\xd3\x9b\xa9\xb2\x06\x7a\xf2\xa8\x6c\x1d\xfb\x2b\x76\x75\x15\xe8\x7d\xed\x4f\xef\x6e\x46\x7d\x67\x65\x1b\x64\x8d\xd9\xa0\x51\xce\x59\xf5\x4d\x78\xc9\xe8\xc2\x08\xb6\x09\x7d\x66\xed\xc1\x09\xef\x9f\xff\x88\xc5\x62\x9e\x5f\x9f\xea\xb7\xa9\xaf\x8b\x52\xb3\x50\xf8\xea\xff\xaa\x1e\x1f\x07\x7d\x7f\x05\x13\xf3\x42\xf2\xc9\x54\x3d\x3c\xc6\x3c\x42\xfd\x66\xec\xd7\x68\xa8\xff\xf1\xaf\xa0\x56\xc2\x86\xdc\xc2\xe2\xe7\x63\xf5\x30\x9a\xdf\x47\x76\x08\x54\x9f\xcc\x7a\xc3\xa8\x35\x66\x36\x03\xfd\x1f\xb2\xa5\x44\xcd\xf4\x15\x1c\xef\xce\x7f\x2a\x95\x63\xc5\x6c\xa9\x65\x14\x9a\xe6\x7b\xdb\xe8\x2c\xdb\x09\x23\x91\x31\x63\x70\x1f\x33\x91\xc5\x1e\x04\xb4\x94\xbb\xd5\xbf\xed\x0f\xa7\x8b\x19\x35\x36\xd4\x6f\xd3\x17\x35\xf8\xe7\x55\x08\xc7\x57\xdf\xbf\x8f\xf5\xad\x3d\x50\x93\xc9\xbf\x82\xea\x9a\xad\xdc\x62\xf6\x9d\x1a\x2b\x7b\xaa\xc7\xb1\x17\x35\xfe\xd9\x1f\xde\xfe\x93\x91\x7f\xed\x50\xd4\xcc\xf1\x9e\xcc\xd9\x2c\x5c\x78\xe7\xab\x3f\x9c\xea\x5b\x3d\x0e\xd2\xf8\x1e\xae\x6d\x27\x73\xeb\xe3\x5e\xa0\xb7\xe5\x71\x88\xb6\x3f\x3e\x8b\x00\xb7\xbc\x40\xd9\xf2\x85\x7d\xf2\x38\xb3\xd9\xae\xc2\xfc\x30\xa3\xdd\xc5\x48\xac\xdc\x2e\x99\xc9\x58\xbc\xbb\x87\xa3\x59\xf8\xb7\x9b\xa1\x77\x58\x81\xee\x6f\xde\xba\x71\x3b\x6d\x8b\x80\xe2\x54\xab\x9b\xc3\x99\x9b\x5d\x60\xcc\xdc\x2c\x87\xd7\xba\x9d\x6c\xc6\x4f\x61\x4f\xfe\xe1\x2f\x68\xff\x08\xb1\x66\xdf\x8e\xb7\x77\x39\x7a\xaa\xfa\x83\x49\xec\xc7\x64\x34\xb4\xc2\x8d\x6d\x11\x85\x9d\x2a\x87\x39\x9c\xb9\x1c\x16\xbb\x78\x21\xb4\xad\x6c\xad\x1d\x34\x0a\xb7\xed\xea\x6d\x7f\x71\x2e\x96\x95\xb0\xdb\x57\xc4\x3b\x1d\x0b\x2f\x07\x02\x18\x96\x8a\x38\xec\xf9\xf7\xad\xb5\xc0\xc4\x34\x7a\x9e\x2e\xe7\xa6\xe0\x3b\x63\xad\xa6\x7b\x5f\x9a\x3d\xfb\xfc\xe8\x1c\xfc\xec\xbb\xe9\xcc\x9b\x81\x5d\xc7\x0d\x5e\x60\xd0\x88\x46\x53\x35\xb8\xb1\x47\xfd\xe1\x64\xbb\x0d\xba\x5a\xdf\x3c\x8e\x46\x83\xed\xbd\xfe\xae\xb9\xab\xc3\x74\xed\x77\x8f\xf5\x44\x8f\x5f\xc2\x1e\x79\x50\x6f\x37\xd3\xb7\x1b\xcf\x75\x4e\xfa\xbf\xc2\x9e\x7a\x1c\x8f\xa6\x23\x7b\x34\x08\xe5\x0b\x1c\xe0\x5b\x43\x16\x2c\xa7\x5a\x7f\xc8\x22\x78\xcf\x5c\x74\xb8\x17\xd8\xef\x57\x8e\x65\xf9\xbc\xd3\xcb\x4e\x1c\x1f\x35\xdd\x1c\xc5\xe8\x89\xd3\xcf\x4e\x5c\x9b\xd3\xd1\xf6\xc7\x77\x4c\x4f\x2b\xcb\xf9\xb3\xd9\xe6\x66\xcc\x17\xf0\x03\x6b\xdf\x7e\xb6\x3f\xe3\x47\xe4\xf6\x8c\x15\x7f\x66\x3a\x71\x62\x9a\xfd\x34\x19\x3d\x8f\xed\xf7\x4f\x6f\x21\x53\xc2\x62\x98\x5f\x5d\x7d\xff\xbe\xf1\xc4\x01\xe3\x60\xbe\x9b\x72\xaa\x38\xe7\x1f\x15\xff\x79\xd6\x79\x7c\x3e\xaf\x45\x99\x55\xfc\x2f\x09\xa1\x68\x03\x9f\x34\x77\x3d\x34\xff\xca\xba\xeb\x91\x07\x5f\x3d\x5b\x1f\xd8\xfc\x38\xbc\xe7\xb9\x9d\xe8\xde\x9f\xda\x81\xd1\x27\xa9\x3f\xb9\x99\xe8\xc1\x40\x8f\x63\xd6\x68\x34\xd0\x6a\x38\xeb\x5b\xd9\x40\xdd\xfa\x8d\xd7\x07\x7b\xe3\x67\x01\xc4\x12\x19\x33\x91\x8f\xfd\xf3\x9f\xab\x2c\xfe\xff\x63\xe0\x5f\xff\xda\x07\x6a\xdb\xeb\x0b\xae\xfe\x7f\x1b\x8c\x1e\x00\x6f\x8d\xe9\x00\xf8\x80\x44\x7c\x02\x77\xda\xfa\xf6\x7d\xc7\x33\x58\xff\xf6\x9d\xe4\x03\xa7\xba\x43\x7c\xcc\x29\x93\xdd\xbe\x5d\xdb\xf3\x4c\x77\x7b\xb0\x7c\xd4\x84\x77\x24\xb3\x27\x4e\x79\x7b\xb0\x6d\x4e\x7a\x61\x2f\xec\x98\xf6\xd6\x76\xea\xcf\x68\xab\x0b\xfb\x5c\x25\xe9\xe0\xd5\xc7\xdc\x39\xef\x59\xd3\x1c\x3a\x33\xee\x9e\xe4\xb6\x3e\xbb\x44\x1d\x1e\x9e\xab\xd0\xa1\x17\xb6\xb4\xf9\x2d\x8b\x93\xe9\xdb\x8d\x1e\xbe\xe8\xc1\xe8\x51\x6f\xdb\xf0\x9b\xbe\x79\x4b\x85\xe7\xc1\x34\xa4\xf3\x41\x4f\x55\x48\x97\x27\x85\xb0\xee\x49\xff\x76\xa8\xa6\xcf\x63\xbd\x6d\x6f\x4a\xb2\x7f\xfd\xcf\xff\x2e\xa3\x8b\xff\xfc\x9f\x6d\xf1\xc5\xff\xfc\x6f\x70\xcd\xa2\x1f\x46\x21\xdb\x48\x4b\x58\xc3\xd1\x50\xef\x8c\x56\x96\xb0\x36\xc1\xcc\x39\xeb\x3f\xe8\x1b\x6b\xf4\x3c\x74\x26\x9e\xe6\xc4\x58\x0d\x6f\x77\x6d\x7a\xce\x36\xc1\xfa\xce\x62\xf4\x2c\x3e\x94\x1d\x32\xe4\x67\xc3\xc7\xff\x3a\xb9\xe7\x1b\x5c\xdd\x6c\xec\xd8\x30\x5c\xdd\x9a\x59\xdd\x2e\x3c\x2e\x70\x3f\x1f\x13\x07\x7e\xa2\xdc\xc9\xd4\xce\x80\xff\x10\x26\x43\x67\xce\xb3\xb1\x79\xf0\x57\xde\x9d\x8c\xee\x71\xf3\xdb\x59\x4d\xaa\xa9\x8a\xb9\xa3\xf1\x01\xdf\x0a\x62\x49\xa3\x61\xec\x61\x31\x5b\xaa\x9b\xb5\x46\x2c\x5b\x6a\x94\x37\xbe\x17\xf8\xb3\x63\x3d\xf6\xcf\x2b\x78\xd3\x1f\xf6\xa7\x7d\x35\xb8\x99\x7d\x1d\xfa\x36\x79\x1a\x5c\x7d\x8d\x5d\x21\x00\xf9\x9f\x10\xfc\x89\x68\x0c\xa2\xef\x00\x7d\x27\xf0\x1b\xa6\x54\x40\xfa\x27\xe0\x57\xff\xfa\xf7\x61\xd0\xd1\xcd\x2c\x43\x69\x4d\x04\xd6\xcf\x9b\xe9\xa8\xef\xec\xc6\x24\x21\x3e\x06\x11\xbe\x79\x9e\xe8\x77\x0f\x7f\xd3\x1f\x6e\x24\x45\xed\x44\xc7\x20\x84\xf2\x18\x7c\xe4\x46\x39\xce\x4d\x70\x33\x65\x37\x0e\x2a\xa5\x38\x06\x07\xbd\x99\x4d\x27\x8b\xc8\xd6\xff\xf2\xb4\x13\x05\x07\x84\x1c\x25\x36\xb6\x40\x31\xf7\x36\x07\xa0\xc0\x9c\xb0\x63\x50\xf0\x9b\x87\x91\xd3\x77\x7f\x1e\xce\x85\x80\x12\xa0\x39\x8a\x90\xa1\xb1\xf3\x83\xce\xb1\x63\x63\xe3\xa3\xce\x82\x76\xf8\x35\x76\x95\x8e\xd7\x2a\xdd\x4c\xb6\x80\x12\x59\x9c\x2a\x55\x49\xbc\x53\x48\x15\x4b\xc9\x42\x2a\xd7\x2c\x55\x9a\x28\xd3\xc5\xbd\x62\xaa\x9e\x29\x97\x9a\x09\xb3\x6c\xd4\xdb\xbc\x9a\xe0\xe5\x0e\xca\x04\xe5\x13\x8a\x04\x79\x48\x8c\x4e\x16\xe3\x66\xa2\x50\x6d\x24\xf2\x45\x54\x2a\xd6\xe2\x75\xde\xe9\xc6\x6b\x14\xd3\x42\xc1\x6c\x19\x99\x02\xed\xc6\x4b\x24\xd5\x48\xc4\x49\xa6\x97\x69\xf0\x9e\x41\x13\xad\xfc\xc1\x48\xb0\x87\x24\xd9\x49\x19\xe9\x5c\xa2\x9e\xc8\x92\x44\x1e\x75\x33\x79\xd6\xad\x15\x0c\xd6\xc8\x9b\x9d\x54\xad\xc3\xe3\xc5\x74\xab\x58\x2d\xc7\x8b\x85\xac\xd9\xcc\xd5\x72\xb4\x5b\x2d\x15\x8a\xd9\xf8\xc1\x48\x88\xcf\x09\x61\xad\x5a\x3e\x9e\x28\x64\x51\x87\x25\x3b\x85\x0e\x37\xb2\x66\xab\x96\x2a\x64\x70\xd3\xe0\x9d\xb8\x89\x4b\xe9\x52\x85\x95\x39\xc9\x54\x69\xa1\x93\x29\xa6\x1b\x2d\x94\x3b\x1c\x09\xf5\x91\xa4\x29\x6a\xb4\x59\xd5\x88\xb3\x46\xba\x54\x2c\x37\x0a\x18\x75\x49\x11\x37\xab\xd5\x42\xa9\x54\xca\x54\xcc\x4c\xd7\xc8\x76\x6b\x15\x56\x4f\xa5\x58\xcf\x68\xd5\x52\xb4\x57\xed\x1e\x8c\x84\xf9\xe2\x4a\xb4\x1a\xf1\x74\xdd\x34\x9b\x3c\x5f\xe8\x34\x8b\x99\x62\xbd\x13\x37\x0a\x9d\x1c\x6a\x90\x2c\xca\x97\x2b\x9d\x36\xaa\xd3\x46\xad\x90\x4f\xd6\xb2\x46\x27\x49\x9b\xc9\x8c\xd1\x2d\x1f\x8c\x84\x7b\x48\x12\x71\x9e\xaa\x74\xd3\x85\x02\xab\xe5\x30\xcf\xe4\x6b\x46\xb7\x4d\x1b\x46\xbb\x98\x8a\xa7\xd3\xa9\x74\x91\x64\x8b\xcc\xac\xc5\x13\xbd\x4e\x16\xc5\x7b\xa4\x5c\x2e\x77\x50\xd3\x38\x9c\x13\xe1\x23\xc9\x24\x48\x12\x25\xea\x84\x26\x72\xb5\x52\x89\x54\x8d\x4c\x03\x15\x52\x3d\x23\x97\x6d\xd2\x8a\xc1\x33\x14\xe7\x71\xab\x5c\x61\x6d\x33\xc7\x3a\xed\x4c\xa9\x5e\xea\xe5\xab\xe9\x83\x91\x48\x5f\x27\xa5\x5e\xba\x92\xef\xd2\x76\x3d\xd3\x4e\xd3\x6e\xb9\x57\x2c\xa5\x29\x4a\x27\xf2\xb4\x9e\xc8\x91\x6e\xba\xd9\x2e\xe6\x72\xad\x74\xaf\x9e\x47\xa9\x0a\x89\x67\x51\x2e\x9b\x2b\xa1\xc4\xc1\x48\x20\xf0\x95\x52\x6b\x63\x4e\x8b\x46\xb7\x46\x58\x39\x99\x4e\xa1\x76\xda\x28\x55\x13\xa8\x56\xeb\x15\x78\x19\x11\x96\xec\x66\x32\x89\x74\xbb\xd1\x42\x35\x93\x67\x33\x26\xaa\x36\xab\x85\xe4\xe1\x58\xfc\x31\x6f\x24\x8c\x1a\x32\xcc\xae\x99\xcf\x36\x4c\x54\xc8\x67\x69\xad\xd8\x49\xd1\x62\xb6\xd5\x63\x55\xde\xc9\x16\x6a\xe5\x74\xb2\x81\x50\x99\xe7\x3a\x24\x59\x6f\xa7\xea\x3c\x95\x4c\x56\x0e\xc7\x32\x1f\xf4\xc5\x14\xc1\x8d\x74\x2f\xd3\xc6\xd5\x12\xae\x99\xe5\xa6\x81\x9a\xb4\xd2\xa6\xf1\x86\x51\xeb\xa4\xd3\xdd\x1c\xce\x65\x53\x99\x36\xee\x36\x58\xb5\x96\xaf\x15\x70\xa2\x52\x69\x1e\x8e\xc5\x1f\xf5\xf1\x72\x9e\xc7\xcb\xcd\x7a\xb9\x5d\xc9\xc4\x8d\x52\xbc\x5b\x64\xc5\x6c\xad\xdb\xcb\x65\x93\xd9\x4a\xb3\x9b\xab\x74\x32\x8d\x8c\x91\x4c\x71\xda\x34\x5b\xd9\x56\xb7\x9d\xc9\x94\x4b\xd5\x23\xf4\xe2\x0f\xfb\x38\xaa\x66\xbb\x0d\x94\x35\x9a\xa9\x62\xad\x93\x2f\xd4\x0b\x85\x4a\xcd\x4c\x24\x58\x39\x51\x4e\xe7\x8a\x46\xb2\x5e\x69\xd4\xf2\xbc\x91\x2e\x35\x50\x3d\x55\x43\xdd\x74\x3b\x69\xd4\x8e\xd0\x8b\x3f\xee\xe3\x2c\x5d\xc2\x85\x5c\xb3\xcd\x72\xdd\x1a\x37\x93\xe5\x1c\xe1\xad\x78\x86\x27\x09\x2d\x92\x5c\x3b\xd3\x49\xe7\x59\x21\x93\xab\x19\x66\x96\xe6\xe2\xf5\x12\x4a\xc6\xab\x5d\x5e\x3d\x1c\x8b\x3f\xf0\x13\xd9\x54\xaa\x56\xcd\x67\x8a\x19\x96\x4b\xf2\x44\x9e\x96\xb3\xa4\xd3\x4a\x74\x13\xc5\x52\xad\x94\x62\x95\xae\xc1\x73\x8d\x44\x0d\xa7\x2a\x99\x4a\xae\x57\x6d\x74\xbb\xa9\x38\x35\xeb\x87\x63\x99\x8d\xfc\x5c\x3e\xd7\xa9\xe4\xe3\xa9\x6c\xa6\x5c\xc6\x84\xd2\x76\xa7\x9d\xa6\x89\x64\xbc\xd7\xa9\x96\xba\xa9\x5a\x2d\x9d\x4d\x74\x8b\x95\x66\x15\xd3\x44\xa5\x4a\xda\xad\x3a\xce\xf7\x0a\x87\x0f\x4a\x38\x1b\xfa\xad\x36\x2d\x24\x6a\xbd\x54\x85\x57\xcc\x52\xa7\x61\xa4\xcb\xad\x6c\xb5\x63\x24\x93\xa5\x66\xa7\xd3\xcb\x25\x4a\xf9\x14\x69\x55\xe3\x28\x9b\xe7\x6d\x54\xa8\xe4\xda\x29\x8e\x9b\x47\x60\xf1\xc7\x7e\x92\xd4\x8b\x65\x13\xb7\x2a\xf5\x14\xef\xd5\x70\xa2\x61\x56\x71\x85\x36\x4b\x8d\x78\xd1\xcc\x25\x0d\x94\x2e\x74\x1a\x99\x1a\x2f\x16\x8d\x9a\x51\xca\xe7\x73\xc9\x1e\xaf\x55\xd2\xa9\xc3\xe7\x48\x30\x73\x63\x95\x4e\xba\x95\xcc\x57\x52\x34\xdf\x20\x89\x92\xd1\xe0\x1d\xce\xcb\x9d\x6e\x8f\x77\x5b\x26\xc9\x65\xf2\xa9\x64\x33\x93\xf0\x78\x4e\x14\x48\x9e\x54\xaa\x8c\xe7\xf3\xbd\xc3\xb1\xc0\x99\x87\xa1\xb8\x6d\x98\xd9\x7c\xb9\x89\x7b\xf9\x12\x26\x89\x7a\xc6\x68\x67\x78\xa6\xc5\xf2\x0c\x27\xe2\xb9\x5a\xb3\xd1\x6e\x26\xe3\xa9\x7a\xb1\xcb\x6b\xb5\x6a\x1e\xd7\x2b\xf9\xf2\xe1\xda\x47\xb3\xb1\xdf\xad\x27\x8a\xf9\x6a\x97\x99\xdd\x42\xa7\x5c\x69\x34\x58\xae\x52\x29\x77\x92\xc5\x56\x29\xde\xce\x36\x2a\x8d\x7a\x2f\xdb\x6a\xb7\x49\xa1\x6d\xd4\x5a\xf1\x72\x23\x43\x6b\x8d\x82\x71\xf8\x78\x41\x78\xe6\xc7\x72\x15\x93\x74\x9b\x35\x84\x5a\x15\x92\x28\xa2\x78\x32\x95\x34\x32\x5d\x9c\x2c\x98\x29\x9c\xe1\x25\xb3\x94\x6f\x56\x29\x4e\x36\x68\xc3\xcc\xa2\xb4\x91\x69\xd0\x12\xe9\x1c\x8e\x65\x36\xe5\x97\x52\xbd\x64\x2d\x9e\x28\x35\x9a\x9d\x6c\x39\x99\xc8\x99\xdd\xa2\x91\xa8\x14\x13\xf5\x9e\xd9\x32\x49\xbb\x97\xee\xe1\x44\x2f\xd9\xc3\x15\x54\xef\xe4\x49\x3e\xc3\x69\x36\xcf\xba\x57\x51\x73\x8e\xbc\x95\xd7\x9e\xf0\xae\x6e\x16\xcc\x44\x63\x25\x89\xeb\xdb\x44\xef\xce\xc7\xf9\x1a\xf3\x98\x99\x8e\x9f\xf5\x01\x51\xe7\x66\xaa\x4d\xe4\x98\x73\xb6\x33\xb0\x1a\x71\x0e\xd5\xb4\xff\xa2\xbd\xe8\xd8\xff\x7f\x98\x2e\xd6\x5f\xf4\x8c\xca\x1e\x6b\xa7\x3f\xbd\x51\x83\xc7\x3b\x35\x7c\x7e\x20\xde\xeb\xcd\x7a\xf2\xea\x12\x73\xcd\x3a\x76\x1c\x82\xdd\x6c\xd6\x3e\x00\x3b\xd9\xc3\xfb\x09\x73\x53\x94\x8c\x9c\xb3\x58\xe7\xda\xe6\xcf\xd7\xd8\xc1\xa6\xb9\x2d\x21\x27\xaa\x6d\x2e\x92\x72\x56\x6c\x0c\x22\x21\x88\x04\x54\x0a\xfa\x35\x06\xbf\xc6\x3c\xbf\xfc\x9f\x3f\x26\x53\x6f\x79\x3f\xbc\xbd\xb1\xd4\x40\x0d\x6d\xfd\xc7\xf7\xd8\x1f\x10\x00\xf0\x0d\xcc\xfe\xfe\xf8\x3f\x61\x9a\x0c\xa2\x80\x01\x14\xe8\x6b\x0c\xfb\x28\x66\x1f\x6c\x36\x00\x7f\x8d\xfd\xb1\x4c\x45\xf3\x7a\x67\x83\xe7\x70\x84\x41\x9e\xf0\xd7\x18\x9c\x31\xf5\xaa\xfb\xb7\x77\x1e\x46\xf8\x35\xf6\xc7\x4c\x66\x37\xf7\xfa\xa7\x87\x24\xea\x72\xed\x70\xb2\x3c\x32\x38\xe4\x52\x70\x8c\x04\xbc\x98\xa8\x57\x51\x5c\x5c\xd4\x41\x9e\x0e\x13\x75\xc4\x45\xeb\x51\x64\x21\x48\x38\x11\x04\x50\xce\x7d\x51\xfb\xe1\xf9\xa7\x21\x8b\x30\x8e\x3f\x2d\x59\xe8\x30\x25\x62\x93\x67\xf2\xc5\x5a\xa9\xc1\x32\xe9\x78\x3a\x13\x6f\xb0\x2c\xcb\x99\xa4\x84\xea\xa4\x4d\xf3\x3d\x44\x58\x23\x9d\x23\xf9\x6a\xbd\x93\x43\x15\x12\xef\x24\x9a\x95\x6a\xb1\x12\x85\x2c\xc1\x99\xf4\xa5\x45\x7c\xaa\x06\xa3\xd7\x9b\xe9\xdd\x58\x4f\xee\x46\x03\xe7\x8f\xef\x1e\xbd\x7f\x3c\x68\x67\xe3\xb7\xbb\xfe\xed\xdd\xfa\x8f\x91\x71\xa3\xcf\xa6\xa9\x19\x59\x07\x0e\xb7\x8f\xd0\x14\xe5\x4c\x0a\xc0\x45\x88\x5d\xa3\xdf\x24\xad\x55\xb2\x0e\x54\xe2\xa5\xa5\x45\xbe\xc6\x30\x00\x8c\x70\x4e\xe1\xdc\xae\x2f\x30\x0f\xac\xa1\xb8\xf8\x3c\x10\xe4\xe9\xc0\x29\x37\xda\xbe\xe2\x71\x72\x20\x98\x4a\x4e\x10\x61\xb3\xe8\x06\x05\xe5\x70\x5e\x21\xac\x62\xdb\x26\xf5\xf3\x61\x5b\xf2\xc6\x28\x83\x1f\xc7\xdb\x0c\xdb\x07\xf1\x46\x01\xa3\xfc\xc3\x78\x9b\x63\xfb\x28\xde\x08\xa7\xf8\xe3\x78\x9b\x61\xbb\x2c\x6f\x5e\xb0\x2d\x18\x25\x1c\x48\xce\x2e\x16\xe2\xae\xa1\xb8\xb8\x6b\x0b\xf2\x74\xa0\x6b\x8b\xf6\x35\xe3\x28\x39\x10\x24\x89\x64\x9c\x83\xb0\x21\x72\x5e\x29\xac\xa1\xdb\x2a\xf6\xb3\x0e\x92\x25\x3a\xf1\xb1\xdc\x89\x8b\x73\xc7\xbe\xc6\x08\x47\x84\x30\x42\xf0\xdc\x05\x5c\x60\x98\xac\xa1\xb8\xf8\x30\x09\xf2\x74\x60\x68\x1a\xed\x7b\xdc\xe1\x64\xf1\xaf\x31\x0a\x29\x96\x0c\x42\x46\xf6\x05\x5b\x34\x82\xa0\x59\x00\xc1\x16\x41\xd3\x33\x8a\x39\xc8\xcf\x61\x62\x8e\xf8\x45\xf2\x70\xb2\xc4\xd7\x18\xa5\x02\x13\xca\x85\x24\x17\xdb\x46\x5a\x43\x71\x71\x8b\x0e\xf2\x74\xa0\xa8\xa3\x7d\x97\x3d\x9c\x2c\xb9\x20\x4b\x60\x40\x2e\x36\xc7\xae\xa1\xb8\xb8\xa8\x83\x3c\x1d\x38\xc7\x46\xfb\x3a\x7d\x14\x59\x0c\x40\x24\x29\x61\x68\x2e\x6a\x34\x23\x6b\xd0\x7f\xe8\xfb\x72\x90\x08\x61\xcc\x11\xc0\x4c\xd0\x6f\xde\xf2\x47\x00\xbe\x94\x87\x3d\x72\x7c\x79\x34\xeb\xc9\x4d\x21\x05\xb7\xb7\x97\x4f\xcc\x4e\xc9\x7e\x98\x39\xcd\x78\xa4\x00\xe3\xcb\xc7\x11\x22\x80\xee\xc2\x33\xad\xc7\x1d\x21\x88\x50\x88\xe9\x11\xdc\xfd\x0d\xf4\x26\x02\x9c\x1d\x28\xc8\xbf\x01\x67\xde\xc8\x67\x82\x43\x49\x04\x10\xf8\x62\xe1\xd1\x1a\x8a\x8b\x7b\xb8\x0d\xa6\x0e\x8c\x8f\xa2\xa5\xc6\x1c\x41\xd7\x52\x12\x44\xa2\x8b\xed\x46\xad\xa1\xb8\xbc\xb0\x83\x18\x0f\x9c\x4f\xa2\x65\x08\x1d\x41\x17\x7a\xa7\x4b\x02\x74\xb1\x30\x69\x0d\xc5\xe5\x85\x1d\x64\xea\xd0\xcf\x6d\x91\x3e\x1f\x1f\x37\xe2\x38\x06\x90\x10\x22\xe0\xdc\xb2\x3f\x7a\xf6\xbe\x3c\x93\x70\xc1\x24\x45\x68\x6e\x51\xd1\x98\x34\x9b\xb5\x4f\xcb\xa4\xa7\x49\x8e\x81\x24\x90\x12\x14\xb2\x8d\xbb\xcd\xa4\xff\x0e\x0a\x44\x01\xde\xb6\x8f\xd7\xbf\x27\x6f\xe0\x6b\x4c\x40\x06\x08\x16\x88\xa3\x59\xfc\x8c\x67\xcc\xcd\x4e\xa6\x9e\x44\xc6\xd7\xd8\x1f\x8b\x03\xbe\x73\x0f\x33\x19\x0d\x9c\x9b\x50\xb1\x59\xa3\xe7\xdb\xbb\xe9\x4a\x3f\x5a\xef\x9f\xbd\xbd\x4d\xb6\x2b\x3d\xbb\x04\xbc\x40\xb0\xcd\x9b\xae\x43\xf9\x68\x03\x5b\x53\x02\xda\xa6\x84\xa8\x71\xc6\x5e\x25\xa0\x3d\x4a\x80\xa1\x4a\xd8\x94\xe0\x9a\x80\x03\x3a\xda\x2a\xfc\xbd\x5a\xfa\xad\xa3\x01\x5f\x6e\x34\xa0\xe3\x15\x11\x3e\x1a\x0e\x54\xc4\x7c\x02\xf9\x1b\x28\x22\x38\x22\xc8\xe5\x46\xc4\x59\x15\x11\x90\xf4\xdf\xdb\x2d\x79\xa3\x81\x0a\x29\x31\x05\x00\xf2\x8b\xce\x0d\x5b\x94\xb0\x6f\x6e\x38\xd9\x2d\xfd\xbd\x46\xc3\xaa\x22\x2e\x38\x3f\x9c\x55\x11\xff\x57\x8d\x06\xfc\x35\x26\x01\x94\x04\x43\x8e\xe1\xc5\xb6\x3c\xd6\x50\x5c\x7e\x61\x18\x64\xea\xb0\x85\x61\xc4\xb3\x2d\x47\xd0\x45\x16\x74\x21\x48\xc0\xc5\xb6\x3c\xd6\x50\x5c\x5e\xd8\x41\xa6\x0e\x14\x76\xb4\x34\xea\x23\x8d\x80\x10\x21\x91\x20\x0c\xfc\x9e\x55\xf8\xe5\x99\x24\x9e\xb0\x31\xe0\x12\x41\x89\x40\xd8\x4a\x27\xaa\x65\xaf\x3b\x51\xbc\x2d\xa4\xd8\x13\x51\xfc\xfe\x75\xce\x87\x18\xda\xba\x0e\xb6\x4e\x64\x51\xe9\xb8\x98\x0e\x3e\x78\x99\x73\x79\x3d\x50\x4f\x0f\x1c\x73\x02\x05\x23\x92\x5f\x2c\xcf\x7d\x0d\xc7\xe5\xfd\xeb\x06\x5b\x07\x3a\xd8\x68\xa7\x1b\x8f\x20\x8c\x7d\x8d\x41\x48\x25\x23\x10\x41\x20\x2e\x36\x9d\xad\xe3\xb8\xbc\xbc\x37\xd8\x3a\xf0\xf3\x7b\xb4\x73\x9e\x47\x12\x86\x00\xa2\x12\x08\x81\xe7\x47\x66\x0e\x48\x2b\xfe\x48\xc2\x24\x22\xf3\x03\x26\x6c\xa6\xa4\xe7\xe9\xdd\xcd\x58\x3f\x3d\xf7\xc7\xda\xb9\x71\x07\xea\xf6\x8f\xef\xfe\xd9\xa3\x13\x80\x1f\x96\x4c\xfd\xa1\x5c\xb3\xc5\x59\x8f\x35\xae\x5f\x46\xb6\xb2\x06\xfa\x64\xb6\x67\xd0\x3f\x1d\xdb\x10\x80\xb0\xb3\x24\x5b\x72\xee\x3f\x94\x30\xb2\xfb\xd8\x06\x38\xff\xb1\x8d\x4d\xec\x5b\xf4\xf5\xbb\xc5\x22\xc4\x3c\x15\x9d\xfa\x74\xdd\x8d\x1e\xf4\x8d\x33\x7a\x50\xfd\xa1\x47\x8b\x7e\x53\x0f\x8f\x03\xfd\xcd\x1e\x3d\x9c\x02\xfe\xf3\xf1\x0d\x91\x9c\xa7\x04\x7f\x4e\xc2\x0e\x3b\xf5\x14\x67\x39\xdc\x2e\x17\xf2\xdd\xaa\xc9\xf2\xad\x64\xcf\x34\x48\x2e\x59\x4c\x35\x1a\xe5\x52\xb3\x5b\xc1\x95\x66\xa6\x94\x2c\xf5\x6a\xed\x6c\xde\x60\xb9\x6a\x3b\x5b\xcc\xf5\x8c\x46\xca\x3c\x96\x30\x42\x29\x01\x94\x32\xb1\x5d\x62\x9f\x83\xb0\x4f\x65\x63\xfe\x79\x4f\x84\x64\xc8\x71\xbf\xcf\x41\xd8\x61\xb3\xc7\xc7\xa8\x12\x63\x48\xb0\x94\x00\x7d\xb6\xd9\x63\x8d\xb0\x2d\x12\xa3\xbf\x4d\x62\x9c\x60\x21\x29\xa7\xf3\x69\x6d\x47\x70\xe5\x5f\x13\xe3\x05\xc1\x5b\x63\x10\xbf\xf7\x04\xdc\x9f\x69\xe0\xad\x11\x86\x3f\x9d\xb6\x18\x64\x6c\x7b\x8c\xfe\x9b\x25\x36\x27\xcc\x53\x25\xf4\x09\xfb\x70\x21\x79\x8e\x92\x40\x8e\xb1\x17\xd1\xb3\xcb\x9d\xfd\x5f\xc3\x71\xf9\x85\xe3\x06\x5b\x07\x2e\x1c\xa3\x95\xee\x39\x96\x30\x06\x90\x10\x12\x41\xf6\x7b\xd2\x89\x23\x16\xbe\x3b\x92\x4b\x0a\x30\xc2\x82\x4a\xb2\x38\x98\x84\xd6\xb9\xbc\x50\x42\xcb\x07\x31\x47\x18\x14\x02\xb1\xf7\xc3\x7b\xff\x57\x31\x27\x24\xc4\x5c\x12\x30\x3f\x2b\x83\xe0\x3a\x73\x7f\x53\xd6\xc4\xd7\x18\x64\x18\x01\xc1\x19\xc4\x97\x3b\x9f\xb2\x8e\xe3\xf2\xae\x6e\x83\xad\x03\x5d\x5d\xb4\xfa\x61\x47\x10\x26\x97\x84\x51\x72\xb9\x43\x2a\xeb\x38\x2e\x2f\xef\x0d\xb6\x0e\x4c\xe2\x8e\x56\x49\xed\x58\xc2\x38\x05\x98\x23\xc1\xc8\x41\x5b\x7f\xa1\xc1\xe9\x71\x1b\x64\x1b\x98\x0f\x2c\xb2\x70\x71\x91\x88\x45\x65\x1a\x26\xa9\x5c\x1c\xfd\xf8\xe0\xd9\xf6\x03\xb9\xe4\x00\x80\xf9\x59\x89\x8f\xce\xff\xfd\x18\xf3\xe6\x0c\x48\xcc\x18\x46\x0b\x2e\x67\x63\x7d\x3a\x7e\xf6\x5e\x3a\xc9\xaf\xfd\xad\x34\xbe\x22\x0b\x8e\x17\x69\xed\x17\x94\xc5\x67\xb7\x0b\x01\xb0\x10\x0c\x03\xba\x90\x05\xf9\x7f\x52\x16\xde\xa0\x87\x82\x30\x81\xa9\xe4\xe2\x72\x67\x4b\xd6\x71\x5c\xbe\x94\xdb\x06\x5b\x87\x9e\xc2\x8d\x54\x56\xf4\x58\xc2\x84\xe4\x82\x32\x0a\x17\xc9\xed\x01\x59\x48\x29\xbf\x49\xef\xef\x4c\x25\x11\xd6\x11\xa2\xcd\x53\x10\x67\x45\xb8\xc9\xe2\xcc\xf3\x5e\xfd\xe7\x70\x10\x1e\xd1\x12\x23\x8e\x29\x46\x04\xee\x4b\x06\x40\xe0\xfd\x2f\x9a\x71\xae\xa1\xda\x62\x9c\xdb\x10\x9c\x2e\xa7\x0d\xcc\x87\x9e\xed\x8b\x54\x94\xf6\x48\x89\x70\xca\x04\x91\x92\xc3\x83\xeb\xcd\x5d\x7c\x39\x86\xde\x09\xa3\x00\x8b\x79\x52\xd8\x21\x41\xe3\x07\x08\x0c\x01\x28\x18\x26\x8c\x83\x45\xb2\x5a\xd0\xbf\x51\x44\x39\xe3\xec\x9b\xa4\x98\x01\x89\xce\x63\x3f\xeb\x68\xb7\x8c\x6c\x2c\x20\x21\xb3\x24\x22\x48\xa0\x3c\x03\x56\x0f\x09\x60\x90\x0a\x82\x09\x06\x17\x9b\x30\xd6\x71\x5c\x7e\xc2\xd8\x60\xeb\xc0\xe3\x88\xd1\x6a\x37\x1f\x49\x18\x04\x84\x62\x02\x20\x9b\xe7\x08\x92\x19\x61\x43\xf5\x30\x67\xf6\x41\x43\x4f\x06\x2f\x6a\xf0\xec\xff\x52\x6c\x64\x7f\x95\x8c\xbf\xfe\x8a\x86\x87\xb2\x79\xfe\xd5\x16\x3c\x68\x0d\x4f\xa9\xd1\xc5\xe5\xc8\x78\x24\x97\x38\x0c\x4f\x6c\x0d\x8f\xea\xd4\x7e\x65\xd3\xce\x8b\x93\x88\xff\xb2\xd3\xa9\x1f\xbd\x4e\xf1\xee\x58\x9c\x84\x13\x81\x99\x37\x31\xcd\x70\xc2\x2d\xbc\x1d\x09\x52\x02\x82\x31\x66\x70\xc1\x06\xba\x8c\x5a\x10\xc6\x58\x60\x80\xc9\x3c\x4d\x6b\x3f\x9e\xa4\xf1\x5a\x3c\x0e\x0f\xf6\xf0\x70\x86\x31\xe2\x80\x5f\xae\xa2\xef\x3a\x8e\xcb\x0f\xeb\x0d\xb6\x0e\x3d\xd2\x1d\xa9\x58\xfa\x91\x84\x61\x28\x91\x40\x58\x00\x11\x52\x87\xef\xbc\x95\xb1\xd6\xf1\x5d\xbe\x12\xd7\x0a\x3e\x74\x71\xfe\x02\x02\x45\x17\x67\xd0\x5b\x30\x22\xcc\x10\xc2\x08\x50\xcc\x2f\x96\xb0\xba\x8e\xe3\xf2\x23\x66\x83\xad\x43\x8b\xea\x44\x2a\xfc\x7f\x24\x61\x04\x50\x28\x20\x47\x8b\xd4\xb5\x8b\x5a\xd4\x06\xc2\x13\x2c\x6a\x4f\xa9\xf6\xf9\x5d\xff\x67\x29\xd5\x3e\x87\xb5\x6a\x43\x57\x0c\x3b\x52\xb8\x14\x33\xad\x99\x70\xa0\x85\xb8\x45\x2d\x21\x5d\x84\x95\x4b\x31\x84\x16\xa7\x4c\x2a\x44\x5c\xe5\x42\x02\xb0\x72\x80\x45\x91\xc5\x30\xb6\x00\xb7\xb4\x94\x57\x5f\x67\x97\x2b\x7a\x06\xee\xd9\x02\x94\x1c\xfc\x09\xe0\x9f\x00\xc6\x00\xf8\xee\xff\x2f\x78\x85\x97\xfc\x0e\xf0\x77\x8a\xbf\x71\x88\x08\x14\x7b\x7b\xe7\x75\xf4\x90\x64\x33\x73\x83\x60\xe3\xcf\x47\x0d\xc1\x6a\xe7\xbc\x0d\x42\x54\x1a\x14\x85\x67\x2e\x8a\x08\xe6\xd8\xca\x96\x0c\x42\x4e\xb5\x4d\x1c\x45\x18\x06\x52\x22\x6d\xbb\xdc\xd5\x18\x4b\x64\xbb\x40\x60\x22\x19\x51\x54\xdb\xd2\x85\xd4\x61\x48\x52\x57\x21\x17\xd3\xab\xf3\x88\x73\x2e\xc8\x0d\x99\x90\x70\x51\x21\xc0\x38\xdf\xdb\x3b\x3b\x94\x47\xa8\x44\x47\x0b\xd2\xfb\x97\x38\x50\x94\xde\x40\x80\x80\x59\x16\xc4\xb6\xc3\x14\xc1\x42\x73\xee\x38\x88\x43\x01\xb5\x05\x88\xb0\x11\x86\xcc\x72\x84\xab\x30\xe7\x2e\x93\xae\xb6\xb4\xc5\x29\x76\xa8\x25\x98\xa3\x04\xc2\xee\xd5\x79\xd4\x31\x9b\x3c\xb7\x88\x52\x86\x0b\x8b\x52\xb9\x43\xd0\xf3\xde\x79\x12\x16\x14\x42\xec\x90\x25\x04\xa7\x4b\x93\x7c\x8d\x5d\x39\xd0\x71\x94\x94\x04\xba\x04\x29\xdb\x45\x8a\x33\x25\x95\xc4\x80\xdb\x54\x30\x2a\x6c\x0c\x05\xa3\x08\x5b\x2e\x64\xcc\xe1\x12\x0b\x8a\x20\xd5\x58\x30\x6c\x6b\x57\xf8\xd2\x3c\x83\x46\xc2\xa4\x49\xc3\x47\x38\x96\x90\xec\xeb\x5c\x7c\x54\x81\x82\xec\x90\x25\x3a\x83\x2c\xe9\xd7\xd8\x95\x8d\x3c\x83\x42\x80\x61\x6a\x09\x21\x25\x01\x02\x4a\x25\x19\x87\x96\x2b\x1d\xa8\x10\x87\x50\x2b\x86\xa1\x2b\x95\xad\x19\xe2\x00\x4b\x6d\xd9\xc0\xb1\x15\xe2\x16\xf3\x07\xf9\x19\xf4\x31\x3b\xbc\xb8\x45\x2e\x30\x54\x5c\x44\x60\x14\x3e\xc8\x17\xbd\x8b\xd5\x0c\x11\x60\x87\x34\xe9\x19\xa4\xc9\xbe\xc6\xae\x2c\x04\x24\x62\x36\x47\x58\x2a\x49\x21\xc0\x96\xd4\x58\x68\x80\x84\x65\x53\x89\xb4\xb2\x90\x8d\x88\xb6\x5d\x00\x2c\x0e\xa1\xeb\x40\x44\xb1\xad\x6d\xe0\xb8\xc4\x11\xc2\x37\x9c\x33\x68\x24\xd4\x32\x51\xa8\xbc\x18\x21\x28\xdc\x0b\x2c\x7a\xe7\xd5\xde\x31\xe7\xbb\x26\x1f\x76\x06\x69\xf2\xaf\xb1\x2b\x4e\x11\xe6\xae\xa2\x54\x08\xe4\x58\x48\x29\xc6\x99\xe5\xd8\x00\x4a\x6f\x95\x87\x5c\x4a\x14\x91\xae\x80\x9a\xdb\x02\x31\x4b\x42\x47\xda\x4a\x73\x2d\xa0\x45\x89\xc3\xf0\xd5\x79\x34\x12\x2a\x4d\x1c\x2a\x2f\x0e\x19\x09\xb7\xcd\x45\xef\xbc\xa0\x3b\x04\x7c\xd7\x0c\xc4\xcf\x20\x4d\xe1\x8d\x52\x84\x2c\x57\x39\x8e\x4b\x5c\x4b\x61\xaa\x94\x03\xb8\x23\x35\xa3\x98\x6b\x65\x61\x57\x50\x07\x48\xa1\x05\xa5\x96\x04\x92\x12\x4e\x15\x22\x8e\xb4\x2d\x05\xa9\x65\xbb\x3e\xb3\x67\xd0\x08\x99\x9d\x56\xd8\x14\x4c\xb8\x63\x14\x90\x93\x70\xcb\x5d\xf4\xce\xaa\x70\x63\x81\xd9\xce\x39\xe8\x1c\x93\x90\xfc\x1a\xbb\xc2\x12\x11\x8b\x68\xcc\xb9\x90\xc8\x86\x2e\x70\x99\x24\x16\xb5\x15\xc3\x14\x4a\xc8\x5d\x65\xdb\x9a\x40\xad\x29\xc6\x0a\x50\x87\x09\x88\x00\x26\x4a\x13\xaa\x39\x96\x3e\x3f\x67\x50\x49\xa8\x71\xd2\x30\x81\x09\xc0\x25\x60\x7b\x7b\xe7\x25\xb9\x29\x63\xbb\xa6\x21\x78\x8e\x79\xc8\x5f\x34\x61\x61\x61\xed\xba\x1c\x31\x87\xda\x44\x08\x6e\x49\x49\x19\x77\x2d\xee\xd8\x36\xd4\x16\x71\x85\x90\x36\x20\x9c\x10\x22\xb9\x23\x2c\xca\xb5\x65\x01\x8b\x2b\xe5\x30\xa4\xfc\x49\xfd\x0c\x3a\x99\x2f\x95\x36\x45\x13\x2e\x31\xc8\x25\x0f\x0d\x91\xde\x7b\x97\x61\xfb\xae\x89\x08\x92\x73\xc8\xd3\xb3\x08\x89\x89\xd6\x0c\x39\x00\x51\x40\x88\x04\x08\x20\xc8\x04\xf5\x0c\xcd\x1b\xac\xae\xcb\x5d\xc4\x28\x81\xc0\xa5\x16\x43\x2e\x44\x2e\xe6\x80\x11\x57\x29\x87\x4b\xa9\x7c\xfb\x3c\x83\x4e\x42\xed\x33\xd4\x3d\x0a\x4c\xb9\xd8\xdd\xeb\xcb\x73\x56\x0b\x1b\x20\xba\x6b\x2a\x82\xe7\x98\xd9\xfd\x2f\x27\xc8\x46\x90\x51\x6c\x13\xe8\x70\xc5\x34\x04\xda\x75\x04\x16\x5a\x6a\xce\x04\xb3\x30\xe6\xd2\xc1\x1a\x21\x06\x08\x74\x10\x16\xdc\xe2\x2e\xb7\x14\xb6\x39\x91\x88\xfa\x24\x9f\x43\x27\xa1\xf2\x0c\xb7\x40\x42\x21\x0e\x0d\xa3\xde\x7b\x67\x45\xaf\x01\xa7\x74\xd7\x64\x04\xcf\x31\xb7\xfb\x57\xac\xda\x5c\x72\x24\x18\x42\xd2\xc2\x1c\x50\x21\xa8\xb7\xa8\x71\xa1\x43\xa8\xeb\x6a\x87\x4a\xac\x25\x85\x98\x3b\x84\xda\xae\x05\x90\x44\x1c\x22\x5b\x62\x00\x5d\x69\x13\x6b\x36\x1c\x4f\xd7\x09\x0a\x1b\xef\xa1\xc1\x90\xa0\x1e\xd1\x7b\x7b\xe7\x95\xad\x89\x20\x3b\xa7\x23\x71\x0e\x79\x7a\x13\xaa\xe4\x9c\x30\x2e\x01\xe7\x52\x21\xed\x20\x6d\x01\x6a\x49\xaa\x84\x8b\x88\x86\xd4\x72\x10\x21\x8e\xcd\x39\x80\xae\x03\x6c\x65\x03\x17\x2b\x2e\x35\x61\x52\x79\xc1\x90\x3f\xe0\xce\xa0\x93\xed\xf2\x24\x3b\xb6\x3d\x04\x07\x3b\xc4\x39\xef\x9c\x57\x89\x46\x90\xec\x59\x14\x9d\x41\x9a\xde\xb2\x48\x40\x4b\x09\x88\x6d\xc8\x15\xa4\x4a\x48\x68\x31\x66\x0b\x8c\xa8\xab\x89\x70\x11\x46\x8e\x46\x4a\x5b\x96\x83\xb1\xb6\x25\x27\xcc\x92\x80\xdb\x48\x43\x2c\x95\x76\x5d\x7f\xb8\x9d\x41\x23\xdb\x47\x3b\xf9\x0e\xc2\xc7\x33\x97\x4c\xee\xef\x9d\x55\x36\x06\x92\x90\x5d\xb3\x11\x3a\x47\xb0\xe4\x5f\x0f\xac\x81\x05\x19\x62\x36\xb1\x35\xb1\x29\xc6\xcc\xb5\x21\xe6\xd8\xb5\x2d\x25\x34\xb3\xb4\xd4\x18\x21\x40\x6d\x44\x20\xb0\x5c\xad\x39\xb1\x2c\x20\x28\x60\x96\x63\x11\x8c\xfd\x8b\x3d\xcf\xa0\x93\xed\xcb\x4c\xf2\x1d\x84\x86\x97\x42\x30\x89\x43\x43\xd3\xf7\xde\x59\x7d\x56\xce\x38\xde\x35\x1b\xa1\xb3\xcc\xee\xde\xd2\x88\x39\xc8\xc2\x2e\x16\x4a\xd8\x0e\x03\xca\xe3\x9b\x08\xe8\x2d\x62\x14\x52\xc8\x26\x04\x69\x46\x81\xc3\x10\x74\x04\xe2\x0c\x49\x2c\xb1\x90\x58\x4a\x84\xb1\x0d\x80\x1f\x2d\x9d\x41\x27\xa1\xa3\x3d\x74\x69\x24\x01\xa5\x2c\x54\x9e\xef\xbd\xf3\xba\xb2\x04\xe0\x5d\xb3\x11\x3a\xcb\x6c\xe4\x2d\x8e\x94\xc4\x0c\x10\x4d\xa0\x23\x88\x2d\x5d\xa9\xb5\xa4\x48\x2a\x85\x31\xd5\xb6\x56\x12\x6a\xa8\x5c\xc2\x98\x8b\x20\x20\x58\xb8\x0e\xb7\x25\xf7\xd7\xde\x16\xc4\xd2\x9a\xed\x75\x9e\xae\x93\x50\xfb\x0c\x97\x18\x64\x40\x86\x46\x4b\xef\xbd\xf3\x0a\xa8\x10\xa3\x5d\xb3\x11\x92\xe7\x90\xa7\xb7\x3a\x42\xdc\x92\xd8\xe5\x52\x32\x82\x5c\xdb\x82\x18\x3b\x8c\xba\x88\x13\x22\x89\x70\xb4\x45\x11\x67\xc2\xf5\x82\x21\x1b\x71\x07\x73\xea\x50\x87\x4a\x4d\x29\x83\x14\xb2\x59\xf8\x77\x06\x9d\x84\xfa\xcf\xd0\xd5\x91\x44\x3c\xdc\x76\x67\x7d\xb3\xd2\x86\x5c\x30\xb4\x6b\x2e\xc2\xe7\x98\x8b\xfc\x4c\x63\xcc\x00\x42\xd8\x05\x8a\x48\xe1\xd8\xd0\xb5\x5c\x87\x22\x21\xa9\x2d\x38\x41\x1a\x5b\xb6\x16\x0e\x25\x9c\x20\x05\xb1\xb6\x2c\xcb\x71\x5d\xc5\x1d\x9b\x08\x44\x01\x16\x70\xc6\xea\xe9\xfa\x08\x95\x65\xe8\xca\x48\x12\x88\x44\x68\x5c\xea\xf7\xca\xb5\x7d\xf8\x5d\x73\x11\x3e\xc7\x5c\xe4\x9f\xb6\xe1\x98\x0b\x25\x05\xd7\x2e\x62\x9c\x42\x86\xb5\x16\x8e\xd0\x84\x02\xc7\x12\x80\x28\xe0\xd8\x1a\x51\xcb\xe1\x98\xdb\x0e\xf0\xe4\xe5\x50\x2c\xb0\xe3\xb8\x16\x25\xc4\xf5\x19\x3a\x83\x4e\x42\x7d\x67\xf8\x68\xa6\x50\x82\x70\x79\x2e\x7a\xe7\x25\xe1\x30\x82\xbb\xe6\x22\x8c\xcf\x21\x4f\x8f\x03\x09\x88\x6d\x33\x66\xbb\x5a\x52\x26\x6d\x17\x09\x57\x72\xc7\x5b\x79\xb9\x92\x39\x54\x43\xee\x48\x81\x24\x70\x21\xb7\x1d\x6a\x63\xe5\x58\xae\xe5\x12\x07\x31\x17\x23\x09\xed\xab\xf3\xe8\x24\xd4\x3e\xc3\x25\xc6\x38\x09\xff\x8a\xf4\xde\x3b\xaf\xae\x06\x28\xdc\x35\x17\xe1\x73\xcc\xed\x7e\x9e\x39\x51\x02\x71\xc7\x55\x50\x7b\xf1\x99\x63\x29\x41\x25\x14\x8a\x0a\x97\x43\x69\x2b\x68\x59\x5a\x42\x4a\xb5\xc2\x0a\x73\x2d\x5c\xea\x62\xc0\x5d\x07\x30\xdb\xb6\xb1\x85\x7c\x79\x9e\x41\x27\xa1\xf2\x0c\x0d\xd6\xbd\x98\x8b\x84\xc6\x9e\xef\xbd\x52\x70\x41\x10\xe1\x02\xec\x9a\x8b\xf0\x39\x56\xee\x68\xb6\xd5\x68\x33\xdb\xb1\x81\xa5\x94\xab\xb5\x76\x90\xc3\x81\x42\xb6\x70\x14\x43\x10\x43\x01\xb1\x96\x2e\x07\x84\x11\x0e\xb9\x8b\x05\xe4\xcc\x51\x1a\x20\x4a\xa4\x10\x9c\xf8\x0b\x97\x33\xe8\x24\x4c\x9e\x30\x74\x65\x24\x05\xe0\xe1\x1f\x84\xdf\x7b\x17\x45\xd9\x28\x04\x3b\x27\xa4\x73\x04\x4b\xc8\x5b\x1c\x51\x04\xa8\x84\xc0\xe6\x96\x26\x8e\x03\x35\xd6\x8e\xe5\xcd\x21\x02\x70\x5b\x63\x61\x2b\xe4\x6a\xc5\x5d\x46\x39\x51\x36\x01\x9a\x31\x2a\xb4\x94\xd0\x71\x2c\x8b\xd2\xc5\x4a\xf0\x64\xa5\x84\x0a\x34\xdc\x04\x25\x80\x28\x7c\x7a\x5f\xf4\x2e\xca\x90\x2d\xc2\xf5\x30\x81\x9e\x63\x67\x1e\x79\xab\x23\xa8\x98\x74\x34\x74\xb9\xed\x20\xdb\x91\x1c\x6b\x80\x24\xb4\x2c\x66\x33\x0e\x95\xb2\x2d\x85\x81\x63\x13\xc6\xa4\x52\x90\x42\x1b\x02\xa9\x95\x2b\x04\x56\xd2\x76\x25\x50\x57\xe7\x51\x4a\xd8\x8c\x04\x43\x57\x47\x52\x4a\x01\xc3\xfd\xc1\xa2\x17\x42\xc8\x98\x84\x44\xb2\x9d\x49\x0b\xf8\x1c\xe1\x27\xf2\x96\x47\xda\x86\x90\x41\xe0\x72\xc8\x30\xe7\x96\xe4\xdc\xf3\x74\x50\xbb\x98\x52\x8a\xa5\xc4\x96\x02\x1c\x30\xca\x1d\x07\x23\x09\xb8\x90\xcc\xc6\x10\x40\xac\x19\x80\x18\xfb\x33\xf0\x19\x94\x12\x6a\xa1\x21\x36\x48\xbe\x01\x48\x24\x0f\xb1\xdf\x95\xde\x79\xe1\x36\xc8\xe4\xce\xe4\x05\x72\x96\x18\xd4\x5b\x1f\x41\x4b\x39\x5c\x13\xaa\xb0\xa4\x84\x01\x26\x98\xe4\xc4\x12\x92\x43\x62\x39\x1a\x59\xca\x62\x9c\x20\xe6\xc5\x3c\x80\x58\x1a\x62\x8d\x6c\x2f\xd0\x71\x24\xc4\x0e\xe6\xfe\xfa\xfd\x0c\x4a\xe1\xfe\xff\xb6\x08\x34\x64\x7d\x44\xbe\x01\x84\x65\xd8\x6e\xf2\x4a\xef\xa2\xe0\x1c\x41\x3b\x33\x18\xc8\x59\x86\xbc\xb7\x40\x92\x2e\x17\x16\x76\x24\x56\x1a\x50\xe5\x70\x42\x2c\x6a\x21\x1b\x2b\xea\x40\xe8\x2d\x7d\x1d\xcc\xa5\xe4\x40\x0a\xec\xda\x0a\x13\x25\x2c\x81\x35\xd5\x52\x3a\x58\xd3\xd9\xee\xf9\x19\x94\x12\x6a\xa1\x21\x0b\x24\xf2\x0d\x10\x86\xc3\xb6\x4b\x56\x7a\x17\x85\x8c\x20\xdd\x99\xc6\x40\xce\xb1\xff\x89\xbd\x55\x92\x03\x2c\xcc\x09\x67\x18\x4b\x28\x29\xc5\x4c\x58\x54\x39\x42\x23\x9b\xdb\x9c\x2a\x6a\x29\xe1\x02\x66\xb9\x18\x08\x1b\x40\x2f\xf6\xf1\xbf\xb8\x41\x0c\x18\x66\xd2\xf2\x27\xa5\x33\x28\x25\x54\xa0\x21\xab\x24\xf2\x0d\x50\x89\x78\x88\x0f\x5d\xe9\x5d\x49\xb1\xd9\x35\x29\x91\x73\xf8\x50\xec\xb1\x60\xd9\xae\x24\x52\x21\xc6\xa0\xe0\xc8\xb2\x39\xb4\xb4\xc3\x04\xa3\x54\x72\xcd\x05\xd3\x14\x72\x02\x90\xe5\xd8\x52\x21\xa9\xb8\xc5\x98\x74\x31\x44\x36\x71\xa9\x12\xc8\xb9\x3a\x8f\x52\x42\x05\x1a\x3e\xa8\x19\x27\x61\x31\xc0\x4a\xef\xbc\x0c\x92\x60\x70\x67\x32\x03\x3d\x87\x0f\xc5\xde\xbc\x6a\x71\xd7\x71\x81\x52\x44\x28\x8b\x3a\x50\x13\xc7\x76\xb5\x43\x6c\x88\x1c\x2a\x94\x85\x98\x82\xae\x8b\x05\x67\x00\x30\xd7\x05\x08\xb9\x1c\x20\xe5\x38\xc8\x71\x5c\x57\xcf\x16\x2a\x67\x50\x4a\xe8\x2c\x1f\x12\x69\x92\x6f\x80\x0b\x10\xb6\x67\xb7\xd2\xbb\xa8\x54\x84\xc9\xce\x7c\x06\x7a\x8e\x4f\xc6\x7e\xdd\x61\x5b\x29\x1b\xb9\x4a\x0a\x64\xdb\x9a\x2b\x81\x91\x94\x5c\x69\x6c\x4b\x0b\x63\x22\x30\x74\x80\xcb\x25\x97\x36\xd2\x0e\xc4\x5c\x01\xae\x80\x56\x4a\x12\xa8\xa5\x63\xcf\x76\x26\xce\xa0\x94\x50\x0b\x0d\x1f\xd4\x42\xee\x30\xdf\x79\xe7\xa2\xc6\x0e\xe0\x3b\x13\x1a\xe8\x39\xd6\xf1\xd8\x5b\x27\x69\x48\xbd\xd1\x00\x89\xcb\xa1\x82\x00\x22\x8b\xdb\x48\x03\xc7\xa6\x5c\x70\xdb\x71\xa0\xe3\x22\x45\x1d\xe6\x4a\x21\xa9\x8b\x2c\x0e\x1d\x6a\xdb\x2e\x64\xd8\xc6\x40\x48\x7f\xdd\x79\x06\x95\x84\x89\x13\x85\xac\x93\xc8\x37\x20\x05\x93\xe1\xf6\xb9\xe8\x9d\xd7\x06\x12\x9e\xb9\xee\x12\xe8\x39\x16\xf2\xd8\x5b\x27\x31\x4f\x4c\x04\x12\x8a\x39\xf5\x33\xb6\x20\xa5\x1c\x22\x69\x01\x2a\x90\x70\xb5\xb0\x20\x72\x1c\xce\x90\xb0\x38\x00\x96\x10\x16\x94\x02\x62\x89\x2c\x48\x10\x55\x7e\x58\x7f\x06\xa5\x84\x0a\x34\xd4\x47\x42\xc0\x41\x78\x48\xf5\xde\xbb\x28\x43\x44\xf1\xce\x9c\x06\x7a\x8e\x95\x3c\x66\xfe\x2e\xa6\x60\x52\x23\xea\x08\xed\x48\x25\x6d\xe5\xba\x50\x4b\xa6\x2c\x05\x20\x20\x18\x53\xe6\x7a\xee\xc7\xb5\x19\x43\xdc\x91\x00\x79\x3e\xd0\xa1\x0e\xd6\x5a\x33\x5b\xf8\xfc\x9e\x41\x29\xa1\x02\x0d\x0d\x8b\x20\xa4\x40\x84\x46\x00\xef\xbd\x8b\xd2\x47\x88\xed\x4c\x6a\xa0\xe7\x58\xc9\x63\x2f\x90\xc6\x96\xc3\xa1\x4b\x5c\x24\x2d\xc2\x05\x02\x18\x31\xe6\x2a\x4b\x71\x89\x80\x63\x69\x8c\x21\x86\x4a\x40\x21\x1c\x25\x89\x43\x24\x81\xdc\x72\xb9\x4b\x15\xe7\xae\x40\x6a\x36\x22\x4f\x57\x4a\xa8\x40\x43\xd7\x49\x10\x41\x1c\x3e\x25\xbd\xf7\xce\xcb\x2d\x09\x29\x77\x66\x35\xd0\x73\x84\xf5\x58\xf8\xd4\x10\x47\x21\xc1\x2c\xc7\x45\x12\x20\xc9\x18\x50\x58\x11\x97\xb9\xd4\xb2\x24\xe4\x9a\x40\x1b\x12\x2d\x14\xa0\x9a\x42\x89\xa5\xb6\x14\xb2\x5c\x6e\xd9\x16\x72\xec\xd9\x90\x3f\x83\x52\xc2\xe6\x78\xb4\x43\x64\x02\xed\x18\xf2\x8b\xde\x79\x75\x1e\xca\xd1\xce\xb4\x06\x7a\x96\x28\xd4\x5b\x27\x41\x24\x89\xb2\x01\x91\x5c\xbb\x02\x33\x57\xb8\x92\xbb\x52\xdb\x00\x10\xe9\xd8\xd4\xb2\x5d\x21\x1d\x08\x1d\x0a\x98\x80\x52\x03\x97\x39\x8c\x31\x65\xb9\xb6\xa3\x1c\xc0\xac\xab\xf3\x28\x25\xd4\x42\x43\xd7\x49\x90\x20\x4c\xc2\xed\x77\xd1\xbb\xa8\xed\x43\xe8\xce\xcc\x06\x76\x8e\x28\xd4\x3f\x3c\x0a\x6d\x4b\xb9\x1c\x08\x28\x1c\x61\x7b\x21\xa3\x2b\x38\x51\x50\x11\x4c\x98\x72\x21\xa4\x36\xa5\xae\x04\x16\x84\x14\x4b\x08\x5d\x8c\x19\xa1\x54\x10\x89\x5d\xc2\xdd\xd9\x66\xe5\x19\x94\x12\x6a\xa1\xe1\x5e\x92\x02\x4c\xf6\xf7\xae\xa4\xcf\xef\x9a\x94\xd8\x39\xa2\x50\xff\x64\xac\x74\x5d\x2d\xb4\x12\x5c\x59\x04\x40\x84\x99\xa6\xda\xa5\x9a\x02\x84\x30\x50\x04\x0a\x0e\xb0\x8b\x24\x16\x36\x92\xc4\xc6\xb6\xcd\xa0\xa3\x5d\x20\x6d\xc5\x29\xb0\x67\xa9\x2f\x67\x50\x4a\xa8\x40\x43\x03\x4d\xc8\x10\x61\xe1\x53\xd6\xa2\x77\x5e\x0c\x87\x4a\xb8\x33\xb7\x81\x9d\x23\x6c\xf2\xcf\xeb\x6a\x69\x59\x1a\x08\x4b\x33\xae\x6d\x57\x63\xec\xd8\xd8\x22\x98\x72\x82\x5d\x06\x98\xa3\x38\xc0\x40\x40\xc7\x01\x12\x08\x84\x81\x0d\xa5\xa0\x40\x31\x07\x60\xca\xb8\x9e\xe5\xde\x9c\xae\x94\xd0\x21\x1f\xba\x4e\x82\x1c\x49\x12\xee\x10\x16\xbd\xf3\x8a\x3a\x88\x91\x9d\xc9\x0d\xec\x1c\x61\x13\xf1\xd6\x49\xda\x95\x44\x59\x8e\x17\x8e\x73\xe2\x5a\xc8\x85\x82\x52\x8b\x09\x6f\xf5\x88\x6d\x47\x53\xc7\x55\x5c\x20\xcb\x42\x96\xeb\x60\xe8\x20\x86\x88\xb7\x54\xb7\xb1\x4d\xad\xf9\xf6\xf2\x19\x94\x12\x2a\xd0\xd0\x75\x12\x14\x00\xec\x10\xe8\xa2\x77\x51\xbf\x06\xf3\x9d\xd9\x0d\xec\x1c\x61\x93\xe7\xa5\xaf\x80\xe4\x52\x08\x0b\x09\x8d\x81\x4d\x00\xc3\xde\xf2\xd1\x46\x9a\xdb\xb6\x0d\x85\xb4\x5c\x44\x81\x45\x80\xc3\x15\xb2\x11\xe3\x96\x63\x3b\x96\x60\xca\x0b\x25\x89\xab\x67\xfc\x9e\x41\x29\x61\x02\xc5\xa1\x2b\x25\x28\x04\x63\x3b\xc4\x3d\xef\x5d\x14\xa5\x81\x60\x67\x8a\x03\x3b\x47\xd8\x44\xfc\x53\x48\x90\x20\x01\xa0\xf4\x82\x6f\x0d\x25\x21\x94\xba\x0e\x21\x48\xd8\x90\x00\x6f\x96\x06\x0e\x67\xd0\x75\x05\xb7\xb5\x46\x96\x40\x84\x42\x65\x21\x4c\x35\x26\x40\x13\x3f\x9d\xe9\x0c\x4a\x09\x15\x68\xf8\x4a\x49\x72\x10\x96\x2a\xba\xd2\x3b\xaf\x5e\x83\x04\xde\x99\xe3\xc0\xce\xb1\x1b\x4a\xbc\x95\x12\xc0\xc2\x92\xae\xc0\x16\xb5\x88\x06\x8a\x70\x4a\x10\x82\xdc\x41\xdc\x85\x10\x13\x20\xa5\xb0\x04\x97\x16\xb3\x80\x63\x11\x6d\x43\xe5\x42\x47\x4b\xa6\x11\x77\xa8\x60\xbe\x8b\x3b\x83\x52\xc2\x26\x25\x1c\x3a\xed\x20\xe0\xa1\xdc\xdb\xbb\x28\xbb\x43\xd9\xce\x24\x07\x7e\x96\xb0\xc9\x5b\x29\x09\xcd\xb1\x54\x8c\x71\x07\x53\x6a\x0b\x82\x14\x82\x2e\x62\x8a\x60\x0a\xb1\x72\x90\xb6\x85\xb0\x04\x56\x14\xb8\x42\x4b\xca\x3c\x13\x94\xd4\x0b\x22\x99\xc3\x80\xed\x07\x82\x67\x50\x4a\xa8\x85\x86\x46\x9a\x08\x7a\xcb\x9f\xbd\xbd\x8b\xfa\x38\x48\xae\x66\x39\x40\x09\x38\x82\x2b\x02\xc5\x80\x30\x49\xfd\xea\x1a\x27\x0a\xd5\x5b\x2d\xb9\xc0\x21\x36\xc6\x84\x60\x04\x1c\xec\x12\xcb\x56\xde\xb0\xa5\xae\x37\x56\xa8\x20\xc2\x01\x58\xba\x96\x26\x96\xcd\x20\xe3\x4c\x41\x45\x5d\x0b\x49\xe4\x62\x2d\x85\xe3\x4f\x4c\x67\x50\x4c\xa8\x50\x43\xd7\x43\x08\x31\x1e\xfe\x11\xe4\xbd\x77\x51\x27\x07\xa0\xd5\x54\x87\xed\x42\x65\xe7\x10\xaa\xb7\x62\x72\x09\xa7\xca\x82\xae\x96\x12\x4a\x89\x10\x16\x8c\x13\x61\x61\x5b\x41\xed\x22\xea\x48\x40\x1c\xac\x00\x42\x96\xd0\x04\xbb\x2e\x05\xc2\xb2\x88\x94\xae\xa4\x96\xb2\x67\x96\x7a\x06\xc5\x84\xa5\x32\xe2\xd0\xf9\x1c\x61\xc9\xc3\x92\x9f\x56\x7a\x67\x35\x71\xb0\xe4\x74\x35\xdd\x61\xbb\x50\xe5\x19\x84\x4a\xbd\x55\x93\x66\x90\xb8\xc2\x72\x1c\xcb\x72\x1c\xac\x6d\xd7\x55\x0e\x41\x84\xb9\x8a\xda\xd2\xa6\x8e\x8d\x85\xa0\xcc\x02\x8a\x2a\x68\x13\xec\x6a\x6f\xda\xb6\x20\x92\x96\x0b\x2d\x57\xfb\xe3\xef\x0c\x8a\x09\xb5\xd4\xd0\x75\x11\xa2\x08\xf2\x70\x3b\x5e\xf4\xae\x1c\x93\x05\xbb\x85\xca\x01\x38\x87\x50\x3d\x36\x5c\xcc\x21\x76\x24\xb3\x08\xb6\x5c\x1b\x13\xe2\xb8\xca\x66\xae\x65\x31\xec\x6a\x97\x2a\x1b\x12\x82\x28\x25\x5c\x29\xee\x02\xe8\x30\x65\x33\x0d\x09\xc6\xdc\x9b\xda\xd9\x2c\x89\xf9\x74\xc5\x84\x0a\x35\xdc\x16\x19\x08\xcb\x7a\x5c\x76\x2e\x8a\x1e\x21\xb0\x9a\xf4\xb0\x5d\xa4\xf0\x1c\x22\xf5\x66\x5a\x87\x40\x02\xb8\x43\xb5\x90\x02\x09\xc7\xe6\x8a\x31\x17\x58\x0a\xba\x42\x42\xd7\x72\x1c\xa8\x80\x82\x8e\x60\xae\xc3\x25\x76\x94\x23\xb9\x23\x24\x77\xb0\xc6\x10\x38\xb3\xe5\xf5\x19\xd4\x12\x2a\xd2\xd0\xb5\x13\x62\x4c\x86\x6f\x97\xbc\xf7\xce\x2a\x3c\x21\x29\xb1\xdc\x33\x4d\x71\x80\xce\x21\x54\xdf\x87\xd9\x1a\x4a\xea\x4a\xea\x42\xe0\x72\xc4\x35\x11\xd0\x9b\x40\x94\xa2\x14\x13\xc4\x6c\xc2\x5c\x24\xb8\x74\x88\x06\x54\x53\xee\x32\x8e\x18\x27\x9e\x35\x6a\xc5\x67\xf9\x72\x67\x50\x4c\xa8\x50\xc3\x67\x77\xcf\x5d\x87\x0f\xfe\x45\xef\xbc\xee\x13\x63\x4c\xec\x99\xa6\x38\xc0\xe7\x10\x2a\x99\xed\x72\x32\x0b\x33\x17\x00\x46\x2c\x89\xb0\x42\x9a\x40\xdb\x05\x2e\x21\xc2\x42\xbe\x95\x61\x4e\x1c\x25\x6d\xdb\xc6\x4c\x3a\xd8\xb2\x2d\xe9\x00\x4b\x29\x4b\x58\xf3\x55\xfe\x19\x14\xb3\xfd\xbc\x27\xf9\x4e\x42\xd7\x50\x48\x20\x20\xc2\xe7\xfe\x45\xef\xa2\xc4\x12\x96\x62\xcf\x34\xc5\xc1\x39\x02\x2a\xea\x1f\x5b\x62\x04\x71\x04\x84\x43\x81\x52\x1a\x53\x2d\x5c\x8a\x90\x03\x95\x54\x7e\xad\x00\xdb\xa5\x4a\x6a\x4d\x6c\xce\xa4\x45\xb4\x85\x18\x24\x0c\x70\x8a\xb4\xe5\x08\x36\x33\x95\x33\x28\x26\xcc\x52\xc3\x92\x43\xc9\x37\x24\x31\x0b\x4b\xbc\x5f\xe9\x5d\xd4\x5b\x82\x48\xec\x9d\xa6\xce\x11\x50\x51\xbf\xa8\x83\xe6\xca\x61\x80\x71\xe1\x8b\xc5\xb2\x18\x71\x28\xb5\x04\xd0\x36\x77\xb5\x64\xc4\x51\x40\x22\xa9\x1d\x07\x02\xd7\x0b\xfd\x14\x47\x1c\x58\xd0\x75\xb1\xe3\x30\xe5\x8f\xce\x33\x28\x26\x54\xa8\xa1\xb6\x88\x01\x96\xe1\xdb\x7f\xef\xbd\xf3\xd2\x4d\x4c\x50\xbe\x77\xa2\xe2\xe7\x10\xaa\x7f\x80\xc9\x76\x91\xb7\x10\x92\xc2\x8b\xc7\x89\x94\x02\x70\x40\x00\xd6\x10\x63\x84\x84\x65\x73\xca\xa5\x4b\x6c\x2e\x01\x43\x8a\x03\x1b\x03\x0d\x24\x80\xd4\xa2\xc2\x62\xcc\xe7\xea\x0c\x8a\xd9\x5e\x5c\x88\x7c\x0f\x9f\x8a\x30\xf4\xec\x6f\x6f\x2f\x22\x44\x40\x0c\x31\x15\x7c\xef\x44\xb5\x4f\xa8\x7b\x4a\x62\x8d\x1e\xf5\x58\x4d\xfb\xa3\xe1\xcd\xa3\x1a\x4f\xfb\x76\xff\x51\x0d\xa7\xe7\xa9\x90\xb5\x1d\xf4\x5a\xfd\xdb\x59\x5a\x12\x95\x7e\x25\xc4\x10\x0b\xd8\x03\x06\x05\xc0\xa0\x68\x60\xf0\x7b\xa9\x7e\x8c\xfc\x3a\x81\xd1\xc0\x90\x00\x18\x1c\x0d\x0c\x5d\x04\xd5\x04\xf8\xf7\x9a\x46\x04\xc3\xde\xc1\x10\xbf\xb2\x5a\x44\x30\xfc\x1d\x8c\xf0\x6f\xed\x8c\x08\x46\xbc\x97\x80\xe1\xe2\x04\x6a\xe4\x7b\xed\x13\x0a\xfd\xab\xde\xa2\x81\x81\x20\x00\x87\x44\x84\x03\x17\xd5\x43\xbc\x95\x43\x74\x3b\x86\x28\x00\x27\x2a\x3d\xf8\x1d\x0e\xa3\x0c\x46\x87\x43\x02\x70\xa2\xf2\x45\x17\x70\x28\x60\x9e\xf7\x8e\x4a\x0f\x0b\xc0\x89\x4a\x0f\x7f\x87\x43\xfc\x4b\xa2\xa2\xd2\x23\x02\x70\xa2\xd2\x23\xdf\xcb\xa5\x48\xee\xc9\x99\x46\xf4\x83\x20\x00\x27\xaa\x3f\x85\xef\xe5\x46\x38\xf0\xe4\x1c\x95\x1e\x14\x80\x13\x95\x1e\xbc\x0a\x47\x44\xa7\x87\x04\xe0\x44\xa5\x87\xbe\x97\x0f\x21\xf8\x04\xbd\x23\x16\x80\xc3\x22\xc2\xe1\x8b\xf2\x1b\x10\x32\x22\xa3\xc3\x11\x01\x38\x3c\x22\x1c\xf9\x5e\xbe\x42\x48\x12\xdd\x1f\x62\x10\x80\x13\x16\x21\xee\x83\x03\x17\x70\x04\x06\x24\xfa\xb8\xc0\x28\x00\x47\x46\x84\x83\xdf\x0b\x52\x30\x74\x0a\x1c\xb2\x80\x43\x01\xc6\x3c\xba\x7c\x68\x00\x4e\x54\x7a\xd8\xa2\x30\x04\xc4\xf4\x14\x7a\x78\x00\x4e\x54\x7a\xc4\xa2\xb0\x82\x00\x02\x47\x1f\xa7\x58\x06\xe1\x84\x95\x41\xdd\x17\x1a\x82\x77\x40\x44\xa2\xe8\x81\x8b\x67\x33\xeb\x70\xa2\x02\x42\xef\x80\x24\x40\xd1\x47\x2a\xc1\x41\x38\x11\x63\x70\x42\xde\x6b\x37\x08\xe8\x73\x16\x55\xd4\x74\x01\x88\x22\xe4\x53\x14\x95\x35\xf6\x5e\xfd\x80\x92\x93\x58\xe3\x41\x40\x51\x59\x13\xef\x80\x24\xf5\xaf\xea\x88\x4a\x91\x5c\x00\x42\x98\xf9\x77\xbf\x44\x04\x44\xc1\xa2\xaa\x81\x40\xdc\xa7\x28\xa2\xb0\x29\x0c\x02\x8a\x28\x23\x8a\x16\x75\x01\x28\x00\x3e\x6b\x51\x01\xe1\x20\xa0\xa8\xac\x91\xf7\x93\xf5\x1c\xc3\xe8\xce\x88\xd2\x20\x9c\xa8\x0b\x4c\xb6\x00\x84\x20\x01\xd1\x9d\x91\x17\xd8\xad\xc3\x89\x18\x4e\x7b\x11\xd9\xfc\xac\x3c\x61\x3e\xa0\xa8\x9c\xc9\xc5\x21\x71\x0a\xa5\x7f\x71\x4a\xd4\xc5\xb3\xbf\x8f\x32\x3b\x1d\x2d\x91\x7f\x25\x48\x44\xde\xfc\x68\x7c\x7e\x2c\x98\x11\x19\x3d\x16\x66\x68\x03\x50\xc4\x68\x98\xe1\xf7\x83\xb5\x14\xcf\xee\x07\x89\x0a\x89\x2c\x21\x71\xe1\x6f\x46\x45\x85\x44\xdf\xcf\xa6\x22\x38\xfb\x4e\x18\x11\x10\xdb\x00\x14\x31\x28\x66\x7c\x79\xba\x53\x60\x7f\x97\x2a\x2a\x24\xf1\x0e\x49\x22\xe2\xef\x30\x45\x85\x24\x97\x90\x98\xbf\x3b\x14\x15\x12\x07\x0b\x48\x10\x80\x59\xad\xff\xa8\x90\xe0\x12\x12\xf1\xf7\x88\x22\x43\x42\x4b\x48\x62\x76\xef\x79\x54\x48\xf8\x1d\x12\x44\x92\x9d\x20\x71\x4e\x96\x47\x52\x29\x3b\x45\x77\x9c\xbe\xef\x56\x22\x24\x4f\xd2\x1d\x7b\x3f\x84\x28\x01\x3a\x49\x77\x7c\x79\xfa\x8e\xd3\x93\x74\x27\x36\x2e\xf6\x8f\x0a\x49\x6e\xdc\x7e\x1f\x71\xcf\x11\x6c\x00\x8a\xb8\xae\xf5\xd5\xbe\x7e\x41\x7c\x54\x48\x68\xe3\x12\xf6\xa8\x90\xf0\xc6\x8d\xe7\x51\x21\x91\x8d\xeb\xc5\xa3\x42\xa2\x1b\xb7\x79\x47\x04\xc4\x36\x00\x45\x5c\x52\x0a\xbe\x71\xe1\x75\x44\x40\x62\x03\x50\xc4\xd5\xa9\xd8\xbc\x13\x3a\x22\x24\x09\x36\xae\x52\x8e\x28\x26\x09\x37\xae\x2b\x8e\x0a\x09\x6d\x5c\x09\x1c\x95\x3b\xbc\x01\x29\x2a\x4d\x64\xe3\x6a\xde\xa8\x34\xd1\x0d\x48\x51\x69\x62\x1b\x57\xe4\x46\xa5\x89\x6f\x40\x8a\x4a\x93\xd8\xb8\xaa\x36\x22\x20\xb9\x71\x1f\x6d\xc4\x65\xd8\xec\xeb\xe6\xfa\xed\xaa\x91\x41\x6d\x5c\xd4\x1a\xf9\xfb\x11\xda\xb8\x3d\x35\x2a\x24\xbc\x71\x39\x6a\x64\x50\x64\xe3\x56\xd1\xa8\x90\x68\xf0\x1a\xd0\xe8\x44\xb1\x8d\x9b\x3b\xa3\x42\xe2\x1b\xd7\x62\x46\x85\x24\x36\x2e\xbf\x8c\xb8\xff\x01\x67\xb2\x59\xbd\x3b\x32\x32\x28\x08\x82\xd7\x43\x46\x07\x05\x83\x37\x40\x46\x07\xb5\x71\xb1\x63\x74\x50\x38\x78\xa1\x63\x74\x50\x24\x78\x67\x63\x74\x50\x74\xe3\x5a\xc6\xa8\x90\xd8\xc6\xe5\x8b\x11\xb7\x1f\xa0\xef\x07\xd6\xef\x2e\x8c\x0a\x49\x6c\xdc\x4a\x18\x99\x28\xb9\x71\xff\x5f\x54\x50\x08\x6c\xdc\x5d\x18\x15\xd2\xe6\xfd\x7d\x51\x3f\xea\xfa\x17\x81\xae\x5f\x37\x18\x15\x12\xde\xb8\xd7\x8e\xac\xa4\xe3\x1c\x92\x85\x73\xd3\x77\x6e\x26\xfa\x69\x91\x8c\x53\x37\xab\x4d\xb3\x94\x30\x63\x75\xb3\xb1\x27\x1d\xa7\x6e\x16\xcc\x44\x23\xf6\x78\x7b\x63\xab\xa9\x1a\x8c\x6e\xbf\x4d\xf4\xf4\x45\x0d\xfe\x79\x75\x10\x46\xbf\x62\x10\xfe\x1a\x9b\x8e\x9f\xf5\x11\x29\x44\x67\x4e\x1b\x5a\x15\xe6\x6a\x9e\xd0\x7b\x83\xac\x5c\x06\xe9\x3e\x0f\x9d\xf9\x6d\xfe\x51\x6f\xc8\xfe\x1a\xfb\x43\xd9\xf6\xe2\xca\xc1\xb4\xd1\xc9\x62\xdc\x4c\x14\xaa\x8d\x44\xbe\x88\x4a\xc5\x5a\xbc\xce\x3b\xdd\x78\x8d\x62\x5a\x28\x98\x2d\x23\x53\xa0\xdd\x78\x89\xa4\x1a\x89\x38\xc9\xf4\x32\x0d\xde\x33\x68\xa2\x95\xf7\xc0\x1c\x70\x33\xe5\xd7\xd8\x55\x54\x42\xc3\x6e\x56\xdc\x26\xb8\xb5\x94\xa6\xf7\x06\xb8\xa8\xe0\x92\x9d\x94\x91\xce\x25\xea\x89\x2c\x49\xe4\x51\x37\x93\x67\xdd\x5a\xc1\x60\x8d\xbc\xd9\x49\xd5\x3a\x3c\x5e\x4c\xb7\x8a\xd5\x72\xbc\x58\xc8\x9a\xcd\x5c\x2d\x47\xbb\xd5\x52\xa1\x98\x8d\x7f\x2a\xc1\xad\x65\x5f\x2d\x1b\xcc\x17\x1c\xf5\x05\xf7\xa0\x26\x53\x3d\xbe\xb9\xd7\x3f\x6f\x96\x37\x76\xce\xe8\x8b\x28\x81\xe3\xe9\x9b\xa5\x75\x2d\x1b\x68\x85\xbe\x49\xff\x76\x38\xa3\x6f\xa6\x15\x6c\xf2\x4c\xbe\x58\x2b\x35\x58\x26\x1d\x4f\x67\xe2\x0d\x96\x65\x39\x93\x94\x50\x9d\xb4\x69\xbe\x87\x08\x6b\xa4\x73\x24\x5f\xad\x77\x72\xa8\x42\xe2\x9d\x44\xb3\x52\x2d\x56\x7c\xad\xcc\x20\xfd\x36\x2e\x67\x59\x67\xcb\x86\x58\xe1\x72\x30\x7a\xbd\x99\xde\x8d\xf5\xe4\x6e\x34\x70\xfe\xf8\x1e\x43\x5f\x63\x7f\x3c\x68\x67\xe3\xb7\xbb\xfe\xed\xdd\xfa\x8f\x1f\xc6\xc4\x6a\xce\xdb\xb2\x81\xf6\x98\xd2\x87\xd1\xb7\x96\x04\xb7\x6c\x88\xcb\x3a\x57\xc2\x5a\xb5\x7c\x3c\x51\xc8\xa2\x0e\x4b\x76\x0a\x1d\x6e\x64\xcd\x56\x2d\x55\xc8\xe0\xa6\xc1\x3b\x71\x13\x97\xd2\xa5\x0a\x2b\x73\x92\xa9\xd2\x42\x27\x53\x4c\x37\x5a\x28\xf7\xb9\x7c\xc4\x5a\xb6\xde\xb2\x41\xde\xb3\xad\xff\xf3\xc7\x74\x74\xaa\xd0\xdc\xf1\xe8\xe1\x54\x89\xad\xdc\xa3\x7b\xc0\x35\xba\x9e\xf0\x22\x22\x3b\x5e\x78\xb3\xd4\xc2\x65\x03\xfc\x57\x78\x07\x0b\x6f\x9e\x07\xb9\x6c\xb0\xff\x0a\xef\x70\xe1\xcd\x92\x36\x97\x0d\xf4\x5f\xe1\x1d\x22\xbc\xd5\x0c\xd3\x65\xe3\xb2\x01\xa5\x91\xa6\xa8\xd1\x66\x55\x23\xce\x1a\xe9\x52\xb1\xdc\x28\x60\xd4\x25\x45\xdc\xac\x56\x0b\xa5\x52\x29\x53\x31\x33\x5d\x23\xdb\xad\x55\x58\x3d\x95\x62\x3d\xa3\x55\x4b\xd1\x5e\xb5\xfb\xa9\x26\x8b\xb5\x54\xd8\x65\xe3\x52\x43\x36\xba\xc4\x8e\xbc\x74\xdd\x37\xbb\x68\xd8\x22\x49\x4f\x04\xa4\x87\xfe\x2b\xbd\xfd\xd2\x5b\x4d\x33\x5e\x36\xd0\x65\x57\x81\x89\x56\x23\x9e\xae\x9b\x66\x93\xe7\x0b\x9d\x66\x31\x53\xac\x77\xe2\x46\xa1\x93\x43\x0d\x92\x45\xf9\x72\xa5\xd3\x46\x75\xda\xa8\x15\xf2\xc9\x5a\xd6\xe8\x24\x69\x33\x99\x31\xba\xe5\x4f\x35\x68\xd7\xf2\xa1\x97\x8d\x90\xd0\xf8\x04\x8e\x57\x05\x97\x88\xf3\x54\xa5\x9b\x2e\x14\x58\x2d\x87\x79\x26\x5f\x33\xba\x6d\xda\x30\xda\xc5\x54\x3c\x9d\x4e\xa5\x8b\x24\x5b\x64\x66\x2d\x9e\xe8\x75\xb2\x28\xde\x23\xe5\x72\xb9\x83\x9a\x46\xa8\xb7\xa3\x41\xb1\x45\x24\xf3\x18\xb1\xad\xa6\x6d\x2f\x1b\x97\xdd\xae\x49\x64\x12\x24\x89\x12\x75\x42\x13\xb9\x5a\xa9\x44\xaa\x46\xa6\x81\x0a\xa9\x9e\x91\xcb\x36\x69\xc5\xe0\x19\x8a\xf3\xb8\x55\xae\xb0\xb6\x99\x63\x9d\x76\xa6\x54\x2f\xf5\xf2\xd5\xf4\xe7\xb2\xb7\xd5\xfc\xf2\x65\xe3\xc2\xb3\x6b\xa9\x97\xae\xe4\xbb\xb4\x5d\xcf\xb4\xd3\xb4\x5b\xee\x15\x4b\x69\x8a\xd2\x89\x3c\xad\x27\x72\xa4\x9b\x6e\xb6\x8b\xb9\x5c\x2b\xdd\xab\xe7\x51\xaa\x42\xe2\x59\x94\xcb\xe6\x4a\x28\xf1\xa9\x04\xb7\x96\x50\xbf\x6c\xcc\x04\xc7\x66\x1b\x05\xfd\x87\xbe\xcf\xb0\x44\x08\x63\x8e\x00\x66\x82\x7e\xf3\xd6\xba\x02\x70\x8f\x99\xe9\xf8\x79\x32\xd5\xfa\x54\x63\xf2\xc1\x8c\xc6\xa7\x8a\x76\x36\x61\xd8\x23\xc7\x27\xa8\x59\x4f\x6e\xce\x22\xf6\x58\x3b\xfd\xe9\x8d\x1a\x3c\xde\xa9\xe1\xf3\x03\x59\x3e\xd1\x9f\x4c\x9e\xe7\x46\x12\x95\x93\xf9\xdc\x14\x8d\x81\xa3\x35\x37\x3f\x7a\xb0\x6c\x6c\x89\x8b\x4e\x10\xe6\xfb\xcc\x7e\x82\x5e\x23\xcc\xec\x11\xb1\x1d\x23\xbd\xd5\x83\x12\xcb\xc6\xdf\x4d\x7a\xbf\xdb\xcc\x3f\x40\x51\xab\x27\x48\x96\x8d\x0b\x87\x60\xb5\x36\xe6\xb4\x68\x74\x6b\x84\x95\x93\xe9\x14\x6a\xa7\x8d\x52\x35\x81\x6a\xb5\x5e\x81\x97\x11\x61\xc9\x6e\x26\x93\x48\xb7\x1b\x2d\x54\x33\x79\x36\x63\xa2\x6a\xb3\x5a\x48\x7e\x2e\xcf\xbe\x7a\xd2\x65\xd9\xb8\xf0\xee\x64\xc2\xa8\x21\xc3\xec\x9a\xf9\x6c\xc3\x44\x85\x7c\x96\xd6\x8a\x9d\x14\x2d\x66\x5b\x3d\x56\xe5\x9d\x6c\xa1\x56\x4e\x27\x1b\x08\x95\x79\xae\x43\x92\xf5\x76\xaa\xce\x53\xc9\x64\xe5\x33\x0a\x6e\x76\x22\x67\xd9\xb8\xf4\x37\xb3\x62\x8a\xe0\x46\xba\x97\x69\xe3\x6a\x09\xd7\xcc\x72\xd3\x40\x4d\x5a\x69\xd3\x78\xc3\xa8\x75\xd2\xe9\x6e\x0e\xe7\xb2\xa9\x4c\x1b\x77\x1b\xac\x5a\xcb\xd7\x0a\x38\x51\xa9\x34\x3f\x95\xe0\xd6\x4e\x20\x2d\x1b\x22\x6a\x2c\x71\x82\x4c\x56\x63\x89\x13\x06\xf3\xb9\x9c\x6c\x54\x4e\xe6\xeb\x8e\x68\x0c\x1c\xad\xb9\xf9\x91\xaf\x65\x83\xfc\x66\xcd\x9d\xe0\x4d\xd6\x35\x67\x36\x6b\xbf\x45\x73\x11\x19\x38\xe6\x3b\xf5\x7a\x8a\xf6\xb2\x75\xe1\x35\x63\x2e\x9f\xeb\x54\xf2\xf1\x54\x36\x53\x2e\x63\x42\x69\xbb\xd3\x4e\xd3\x44\x32\xde\xeb\x54\x4b\xdd\x54\xad\x96\xce\x26\xba\xc5\x4a\xb3\x8a\x69\xa2\x52\x25\xed\x56\x1d\xe7\x7b\x85\xcf\xb5\x66\x5c\x3b\x55\xb8\x6c\x6c\xf9\x0a\x75\x82\x07\x59\x6e\x8d\x45\x1f\x12\xab\x21\xe0\x45\x62\xc0\x13\x8d\x3c\xda\xdb\xc7\x6b\x6a\x76\x6c\x73\xd9\x98\x2d\x52\xb1\xaf\xa9\xc7\x71\x7f\x66\x4a\xe0\x1b\x5d\x11\xd0\xbb\xe4\xc8\xba\xe4\xfc\xc7\x6f\x3c\xee\xff\xf3\xc7\xe2\x43\xf7\xd0\xff\x40\xff\x35\xf6\xc7\xc8\x75\xf5\xf8\xa6\xef\xfd\x0e\xbe\xc6\xfe\xb0\x9e\x7f\x7a\xe6\xba\x55\xd8\x6b\x7d\xbb\x64\x3e\xd1\x83\xc1\xe6\x93\xf3\x45\x4f\x10\xd0\xdf\x4e\x35\xf3\x83\xb0\xcb\x06\xdb\xa6\x9a\xf5\x8f\x31\xef\xaa\xc1\xbb\x55\x03\x0f\x55\xcd\xa6\x50\xd7\x85\x1e\x98\x0c\xb6\x6b\x64\xbf\xee\xfe\x46\xca\x59\x3b\x13\xbc\x6c\x80\xf7\xfa\x7b\xcb\x45\x6e\xf4\x99\xf6\xdd\xc3\x9d\xe0\x25\x1f\xd5\xf4\xee\x8f\xef\xb1\xff\xf9\x4f\xc8\xa6\xc0\xff\xae\x19\x0c\xda\xe5\x05\x0f\x9e\xea\x27\xa3\xe7\xb1\xad\x6f\x1e\xd4\x5b\xa8\x67\x3d\x83\xaa\x97\x88\x42\xbd\xf8\xa2\x7f\x9b\x7f\x59\xeb\x3b\x80\x9b\xbf\x5d\xe4\xb9\x76\x48\x7c\xd9\x60\x9f\xd6\x44\xff\xf7\xf0\x09\xf9\x6f\x6e\x8a\x5b\x77\xe6\x2e\x6f\x11\x6b\xa7\xf4\x97\x8d\xcb\x6e\xf8\xc4\xcb\x79\x1e\x2f\x37\xeb\xe5\x76\x25\x13\x37\x4a\xf1\x6e\x91\x15\xb3\xb5\x6e\x2f\x97\x4d\x66\x2b\xcd\x6e\xae\xd2\xc9\x34\x32\x46\x32\xc5\x69\xd3\x6c\x65\x5b\xdd\x76\x26\x53\x2e\x55\x3f\xd7\x56\xfe\x5a\x35\x81\x65\xe3\xb2\x1b\x3e\x71\x54\xcd\x76\x1b\x28\x6b\x34\x53\xc5\x5a\x27\x5f\xa8\x17\x0a\x95\x9a\x99\x48\xb0\x72\xa2\x9c\xce\x15\x8d\x64\xbd\xd2\xa8\xe5\x79\x23\x5d\x6a\xa0\x7a\xaa\x86\xba\xe9\x76\xd2\xa8\x7d\xae\x9d\xb2\xb5\xea\x09\xcb\x46\xe4\x7d\x8b\x13\x64\xb2\xba\xfa\x3d\xc1\x26\xcf\xb5\x30\x88\xca\xc9\x5c\x73\xd1\x18\x38\x46\x73\xab\xe5\x2a\x96\x0d\x72\x44\xf4\x89\xce\x13\x7c\x7e\xf4\xba\xe0\xb3\x6b\x26\x50\xff\x63\xd9\xda\xba\x68\x0b\x5d\x19\x7c\xe8\xc2\x60\x11\x73\x9d\xbe\x30\x38\x51\x3b\xd1\xde\x3e\x4a\x3b\x6b\xa5\x50\x96\x2d\x76\xd9\xc9\x82\xa5\x4b\xb8\x90\x6b\xb6\x59\xae\x5b\xe3\x66\xb2\x9c\x23\xbc\x15\xcf\xf0\x24\xa1\x45\x92\x6b\x67\x3a\xe9\x3c\x2b\x64\x72\x35\xc3\xcc\xd2\x5c\xbc\x5e\x42\xc9\x78\xb5\xcb\xab\x9f\x6a\xb2\x08\xd4\x7e\x59\xb6\x66\x01\x0a\x39\xd0\xe9\x1c\x6e\xd9\xbf\xdb\x94\x23\xea\x6c\xae\x8f\x68\x6f\x47\xd0\xc7\xbc\x82\xce\xb2\x25\x3e\x42\x1f\x1f\xee\xf6\x3f\xbd\x36\xd6\x8a\x07\x2d\x5b\x97\x8d\x42\x13\xd9\x54\xaa\x56\xcd\x67\x8a\x19\x96\x4b\xf2\x44\x9e\x96\xb3\xa4\xd3\x4a\x74\x13\xc5\x52\xad\x94\x62\x95\xae\xc1\x73\x8d\x44\x0d\xa7\x2a\x99\x4a\xae\x57\x6d\x74\xbb\xa9\x38\x35\xeb\x9f\xcb\xb1\xac\x57\x4b\x5a\xb6\xc8\xca\x79\x97\xfe\xd0\x1d\xcc\x0e\x1f\x3a\x7a\x32\x3d\x49\x84\xf3\x0f\xf8\xd1\x24\x77\x3c\x5f\x8b\xda\x4d\xcb\x16\x58\x3d\x72\xa5\xa7\x37\xee\x40\xdd\x4e\xbc\x25\x36\xfc\x5f\x7f\x84\xcc\x7f\xb9\xf1\x7f\xfb\x43\x3d\x4f\xef\x6e\xc6\xfa\xe9\xb9\x3f\xd6\xce\x1f\xff\xfb\xd1\xd4\xcf\xeb\x45\x2d\x5b\x2c\x8c\x7a\xb4\x83\xfa\x97\x91\xad\xac\x81\xfe\x68\xf2\xdf\x8b\x54\x2d\x5b\x07\x1e\xa2\xfa\x38\x0a\xe7\xc5\xaf\x96\xad\x5d\x67\xd5\xc0\x91\x67\xd5\x3e\x8e\x8d\x79\xe5\xad\x65\x6b\x75\xf4\xde\x8d\x1e\xf4\x8d\x33\x7a\x50\x7d\x6f\x36\xf9\x43\xbf\xa9\x87\xc7\x81\xfe\x66\x8f\x1e\x3e\x78\x34\xbe\xd7\xf5\x5a\xb6\x40\xf8\x01\xc8\x38\xcb\xe1\x76\xb9\x90\xef\x56\x4d\x96\x6f\x25\x7b\xa6\x41\x72\xc9\x62\xaa\xd1\x28\x97\x9a\xdd\x0a\xae\x34\x33\xa5\x64\xa9\x57\x6b\x67\xf3\x06\xcb\x55\xdb\xd9\x62\xae\x67\x34\x52\xe6\x8e\x03\x90\x1f\xc1\xe7\x5a\xd5\xb1\x65\x0b\x7c\x1e\xc3\x5f\xab\x66\xb6\x6c\xb1\xff\xcb\x34\xb1\x5e\x6b\x6d\xd9\xda\x71\xe4\xf6\x8c\x7c\xd2\x8f\xe3\x73\xad\x12\xdc\xb2\xb5\xea\xc8\xec\x81\x56\xe3\x95\x99\xee\x6b\xcc\x9f\x2e\x56\x7e\xde\x3a\xdd\x79\xe1\xce\xef\x9a\x41\xd6\xcb\xd2\x2d\x5b\xe4\x43\xd4\x07\x3e\x8c\xcf\xf5\x0a\x75\xcb\x56\xe4\x54\xe8\x13\x62\xdb\xd5\x6d\xc0\x13\x52\x2d\xce\xb6\x0d\x78\x5a\x88\x19\x8d\x81\x63\x74\xb7\x5e\x13\x70\xd9\x62\xdb\x74\x17\xf8\xe6\xf1\x5f\x95\xfd\x1e\x95\xad\x15\x5f\x5c\xb6\xd0\x7f\x55\xf6\x69\x55\xb6\x56\xe5\x72\xd9\xda\xfa\xa1\xe4\xbf\x0a\xfb\xfd\x0a\x5b\xaf\x01\xba\x6c\x5d\x38\x37\xb0\xd5\xa6\x85\x44\xad\x97\xaa\xf0\x8a\x59\xea\x34\x8c\x74\xb9\x95\xad\x76\x8c\x64\xb2\xd4\xec\x74\x7a\xb9\x44\x29\x9f\x22\xad\x6a\x1c\x65\xf3\xbc\x8d\x0a\x95\x5c\x3b\xc5\x71\xf3\x73\xe5\x06\x06\x6a\x95\x2e\x5b\x17\x2e\x00\x44\xea\xc5\xb2\x89\x5b\x95\x7a\x8a\xf7\x6a\x38\xd1\x30\xab\xb8\x42\x9b\xa5\x46\xbc\x68\xe6\x92\x06\x4a\x17\x3a\x8d\x4c\x8d\x17\x8b\x46\xcd\x28\xe5\xf3\xb9\x64\x8f\xd7\x2a\xe9\xd4\x27\x13\xdd\x5a\x71\xd6\x65\x2b\x7c\xbf\x67\x1e\x05\xef\xde\xf2\x09\x8d\x81\x23\x0a\xed\xe8\x62\x50\xef\x55\x62\x97\xad\xad\xf1\xc5\x21\xb1\xe1\x09\x8a\x5e\x73\x82\xd1\x87\xda\xb9\x9c\x60\x54\x4e\xe6\x4e\x30\x1a\x03\xc7\x17\xf2\x5a\xd4\xe5\x5d\xb6\xb6\x06\x1a\x7f\x47\xdd\x45\x4f\x6e\xff\xfc\xba\x5b\xab\x5f\xbc\x6c\xcd\x74\xc7\x67\xe9\x61\x9f\x4b\x35\xcf\xd3\xbb\xd1\xb8\xff\xcb\xa3\x67\x3a\x7e\xd6\x9f\x66\xa4\x7d\x84\x97\x5c\xab\xec\xbc\x6c\x89\xbf\xaf\xb6\x7e\xd7\xd8\xfa\x00\x6d\x05\x6a\x5e\xbf\xb7\xfe\x1e\xda\x72\xd5\x60\xf2\xff\x96\xba\xd6\x0a\x8b\x2f\x5b\x97\xae\x0d\x51\xe9\xa4\x5b\xc9\x7c\x25\x45\xf3\x0d\x92\x28\x19\x0d\xde\xe1\xbc\xdc\xe9\xf6\x78\xb7\x65\x92\x5c\x26\x9f\x4a\x36\x33\x09\x4f\xab\x89\x02\xc9\x93\x4a\x95\xf1\x7c\xbe\xf7\xb9\x02\xd2\xf5\xa2\xe5\xcb\xd6\x2c\x20\x15\xf3\x0f\xab\xa7\x97\xc1\x39\x87\xe0\x16\xc7\xaa\x23\xbd\x7d\x8c\x50\xd6\xeb\xaf\x2f\x5b\x97\xcd\x00\x4a\xd6\x28\x6e\x1b\x66\x36\x5f\x6e\xe2\x5e\xbe\x84\x49\xa2\x9e\x31\xda\x19\x9e\x69\xb1\x3c\xc3\x89\x78\xae\xd6\x6c\xb4\x9b\xc9\x78\xaa\x5e\xec\xf2\x5a\xad\x9a\xc7\xf5\x4a\xbe\x1c\xfa\xa1\x1e\x81\xf7\xbf\x8f\x37\xab\xf5\x62\xf1\xcb\x16\xba\xe4\xf7\xfa\x8f\xe2\x6b\x51\xba\x7e\xa5\x25\x76\xf3\x15\x55\xb5\x8b\xbc\xf2\x48\x6f\x1f\x53\x4d\x74\xad\x8e\xfe\x4a\x6b\xc6\x97\xf4\xf8\xfa\xb0\x22\xb9\xeb\xf5\xf3\x97\xad\x0b\x1f\x32\xef\xd6\x13\xc5\x7c\xb5\xcb\xcc\x6e\xa1\x53\xae\x34\x1a\x2c\x57\xa9\x94\x3b\xc9\x62\xab\x14\x6f\x67\x1b\x95\x46\xbd\x97\x6d\xb5\xdb\xa4\xd0\x36\x6a\xad\x78\xb9\x91\xa1\xb5\x46\xc1\xf8\x5c\xc9\xda\x81\xfb\x02\x96\xad\x79\x01\xcc\x99\xec\x86\xea\x61\x9e\x51\xf5\xa0\xa1\x47\xff\x8b\x1a\x3c\xfb\xbf\x14\x1b\xd9\x5f\x25\xe3\xaf\xbf\x16\x87\xb0\xa2\x89\x24\x02\xc1\xf3\x5b\x09\x96\x2d\x16\x46\x30\x5a\x23\xb8\xd4\xe8\xe2\xf2\xef\x20\x78\x7e\xf7\xc1\xb2\x85\xc2\x08\x8e\xad\x11\xac\x3a\xb5\x5f\xd9\xb4\xf3\xe2\x24\xe2\xbf\xec\x74\xea\x47\xaf\x53\xbc\xfb\x40\xe2\xd7\x6e\x5b\x58\xb6\x0e\x93\xf6\xf0\x79\x30\xf8\x38\x52\xd7\x6e\x73\x58\xb6\x42\xe5\xfc\xbb\x2d\x39\x70\x67\xc4\x7b\x4b\x1c\x48\x70\xd2\x78\x2d\x7e\x2c\xc1\x6b\xf7\x49\x2c\x5b\x17\x76\xb3\x89\x5c\xc5\x24\xdd\x66\x0d\xa1\x56\x85\x24\x8a\x28\x9e\x4c\x25\x8d\x4c\x17\x27\x0b\x66\x0a\x67\x78\xc9\x2c\xe5\x9b\x55\x8a\x93\x0d\xda\x30\xb3\x28\x6d\x64\x1a\xb4\x44\x3a\x9f\xcb\xcd\x06\x6e\xbd\x78\x6f\x6d\xa9\x33\x7c\x02\xbf\xef\x27\xf3\x4e\x11\xfd\xf1\xf5\xa5\x3e\x54\x7e\x28\x28\xbf\x8b\x54\xde\x8c\xae\x83\x28\x95\x37\xa3\x61\x3b\x4a\x7e\x6b\xb7\x92\x2c\x5b\x97\x5d\x9f\x18\xa5\x54\x2f\x59\x8b\x27\x4a\x8d\x66\x27\x5b\x4e\x26\x72\x66\xb7\x68\x24\x2a\xc5\x44\xbd\x67\xb6\x4c\xd2\xee\xa5\x7b\x38\xd1\x4b\xf6\x70\x05\xd5\x3b\x79\x92\xcf\x70\x9a\xcd\xb3\xcf\x55\x30\x37\x78\x77\xca\x7b\x6b\x4b\xa1\xe6\x13\xf8\x5d\x9a\x5e\x74\x18\x51\x4c\x2f\x1a\xb6\xab\xfd\xb7\xb1\x4c\xc7\xca\xd1\xe7\xb9\x89\x65\x06\x6a\xfb\x39\x7c\xcf\x74\x11\x80\xfc\x4f\x08\xfe\x44\x34\x06\xe5\x77\x40\xbe\x03\x7a\x35\x53\xce\x4c\x47\xcb\x75\xed\x6c\x5a\xf5\x6f\x2f\x5e\xfe\x34\xbf\x5d\xe6\x58\xcc\x30\x14\x33\x9a\xa1\x09\x62\x46\xfe\x41\xad\xd5\x9f\xfc\x6d\xb7\x03\x51\xaf\x9e\xec\xde\xce\x34\x5b\x43\x0d\x37\x51\xc3\x68\xa8\xd7\x0f\x9f\x6d\xc5\x0d\xc1\xd5\x0c\x03\x5e\x67\xfb\x6b\x0c\x12\xff\xd4\x08\xda\x10\xf7\x7e\xf3\x19\x4e\x94\xbd\x71\x33\xd0\xb9\x0c\x6a\x2b\xf0\x25\xcb\xc1\xeb\x7d\xc2\x25\xb5\x1b\x10\x0a\x00\x0a\xbb\x19\x6c\x2f\x20\x1c\xbc\x37\x27\x2a\x20\x12\x00\x14\x76\x6d\xd6\x5e\x40\x34\x70\x21\x4d\x64\x40\x2c\x70\x73\x4c\x64\x40\x3c\x70\x39\x4b\x64\x40\x22\x70\x41\x4a\x64\x40\xc1\x9b\x4c\xc2\xae\x03\xdb\x6f\x90\x20\x78\x27\x4a\x64\x48\x30\x70\x49\x48\x74\x9a\x50\xf0\xba\x91\xc8\x90\x70\xe0\xee\x8d\xe8\x34\x91\xe0\x2d\x1e\x91\x21\xd1\xc0\x95\x16\xd1\x69\x62\xc1\xcb\x31\x22\x43\xe2\x81\x9b\x22\xa2\xd3\x24\x82\x77\x4e\x44\x86\x24\x83\x17\x30\x44\xf6\x95\x20\x00\x29\xec\xfe\xfe\xfd\x90\x60\xa0\x3a\x7f\x74\x48\x28\x78\x4b\x42\x64\x48\x1b\x35\xef\x23\x43\x22\x01\x48\x61\x97\x9b\xef\x87\x44\x03\xe5\xe4\xa3\x43\x62\x01\x48\x61\xb7\x76\xef\x87\xc4\x03\xb5\xda\xc3\xee\x0f\xde\x0f\x49\x04\xab\xbe\x47\x86\x24\x83\x65\xd0\x23\x4f\xe3\x20\x00\x29\xec\x9e\xe5\xfd\x90\x82\x15\xc6\xa3\x43\x42\x81\x8a\xd7\x91\x25\xee\x17\x15\x5e\x85\x14\x9d\x26\x12\xa8\x23\x1d\x9d\x26\x1a\x80\x14\x9d\x26\x16\x2c\x99\x1c\x19\x12\x0f\x42\x0a\xbb\x46\x7a\x3f\x28\x11\x2c\x47\x1c\x9d\xaa\x8d\xca\xc6\x91\x63\x4c\x10\x2c\xf5\x1b\x19\x12\x0c\x42\x8a\x1c\x41\x13\x14\x2c\xa3\x1b\x59\xe8\x04\x07\xeb\xba\x46\x67\x90\x04\xab\x65\x46\x67\x70\xa3\xf0\x66\x74\x06\x59\xb0\x32\x64\x74\xaa\x36\x2a\x19\x46\x07\x25\x82\x75\xf7\xa2\x33\x28\x83\xa0\x22\x53\x45\x41\x10\x54\x64\x63\xa0\x30\x58\xb5\x2d\x3a\x55\x28\x08\x2a\x3a\x55\x38\x08\x2a\xb2\xd8\x29\x09\x16\x21\x8b\xbe\xfc\xa4\x41\x50\x91\x21\xb1\x60\x81\xaf\xc8\x61\x35\xe5\x41\x50\x91\x21\x89\x60\xf1\xac\xe8\x92\x92\xc1\x6a\x4e\xd1\x97\xea\x60\xa3\xfa\x50\x64\x59\xb1\xcd\x4a\x46\xd1\xe9\x42\x1b\x75\x77\x22\x83\xc2\x1b\xa0\x22\xaf\x1e\xfc\x45\xf1\x7a\x4d\x9b\xe8\xb0\xe8\x46\x3d\x96\xe8\xb0\xd8\x46\x35\x91\xc8\xa0\xf8\x06\xa8\xc8\x8b\x08\x7f\x5f\x63\xbd\x52\x47\x74\x58\x72\xa3\x3a\x46\x64\x58\x1c\x6c\xd4\xaa\x88\x0e\x0b\x6e\x14\x8e\x88\x0e\x0b\x6d\x94\x78\x88\x0e\x0b\x6f\xd4\x59\x88\x0e\x8b\x6c\xd4\x42\x88\x0e\x8b\x6e\xd4\x1b\x88\x0e\x8b\x6d\x54\x06\x88\x0e\x8b\x6f\x9c\xbe\x8f\x0e\x4b\x6c\x9c\x70\x8f\x0e\x4b\x6e\x1c\x2b\x8f\x0c\xcb\x97\xf6\x7a\x0d\xfc\xc8\xa0\xe0\x06\xa8\xc8\x3b\x04\x02\x6d\x9c\x28\x8f\x0e\x0b\x6f\x9c\x70\x8e\x0e\x8b\x6c\x1c\xbd\x8d\x0e\x8b\x6e\x9c\x09\x8d\x0e\x8b\x6d\x1c\x57\x8c\x0c\x8a\x6f\x80\x8a\xbc\x30\x9f\xcd\x15\x6b\x47\x01\x23\x83\x92\x1b\xa0\x22\xaf\xf2\x25\xd8\x38\x66\x17\x1d\x16\xdc\x38\xdf\x16\x59\x5c\x7e\xf4\xb0\x7e\xde\x2a\x3a\xac\xcd\xf3\x3f\xd1\x79\x24\x1b\xb0\xa2\xd3\x45\x37\x4e\xba\x44\xa7\x8b\x6d\xc0\x8a\x4e\x17\xdf\x38\xd3\x11\x9d\x2e\xb1\x01\x2b\x3a\x5d\x72\xe3\xf0\x42\xf4\x0f\x4c\x20\x08\x0b\x45\x5e\xe6\x41\xb0\x71\x34\xe0\x14\x60\x68\xe3\x9c\x41\x74\x58\x38\x98\x9e\x8f\x4e\x00\x46\x36\x72\xfd\xa3\xc3\xa2\x1b\x59\xef\xd1\x61\xb1\x60\xa6\xf9\x29\x4c\xf2\x8d\xf4\xee\xe8\xb0\x44\x10\xd6\x29\x84\xc9\x8d\x5c\xef\xe8\xdf\x44\x41\x10\x16\x8a\xbc\xf3\x02\xe1\x46\x26\xf5\x29\xc0\x50\x30\xcb\xf9\x14\x60\x1b\x19\xc8\xa7\x00\x23\xc1\x8c\xe0\x53\x80\xd1\x60\xce\xee\x29\xc0\x58\x30\x9f\xf6\x14\x60\x7c\x23\xd7\x35\x3a\x2c\x11\x84\x85\x22\x6f\x79\x40\x28\x37\x32\x49\xa3\x7f\xc9\x07\x1b\x59\x95\xd1\x09\x43\x70\x23\xc5\x30\x3a\x2c\x14\x84\x85\x4e\xc8\x57\xd8\x48\xe0\xf3\x81\x2d\x32\x91\x0e\x4b\x40\xba\xe9\x3b\x37\x13\xfd\xb4\xc8\x43\xaa\x9b\xd5\xa6\x59\x4a\x98\xb1\xba\xd9\xd8\x93\x89\x54\x37\x0b\x66\xa2\x11\x7b\xbc\xbd\xb1\xd5\x54\x0d\x46\xb7\xdf\x26\x7a\xfa\xa2\x06\xff\xbc\x3a\x10\xe7\x95\xb7\x7c\xc5\x11\x32\xa8\xce\x9e\x35\xb5\x14\xea\x95\x4b\x35\x70\xa0\x4b\x01\xb0\x90\x03\x6c\x62\x11\xe4\x5a\x42\x11\x2c\x1c\xaa\x1d\xce\x88\x65\x53\xe1\x40\x2c\x91\x4b\x30\x12\x2e\xe1\x10\x2b\x97\x00\x6e\x41\xc9\x84\xad\xe6\x89\x63\xa7\x24\x73\x2e\xf2\xdd\xb6\xe6\xe4\xe1\xef\x14\x7f\xe3\x88\x01\x86\xae\xf6\xf5\xae\xa5\x6a\x5d\x19\xde\x5f\xba\x20\x32\xd5\x97\xea\xbd\x95\x47\x19\x03\xb7\x5b\x3f\x6a\xe3\xfc\xc3\x8f\x0e\x00\x6e\x5a\x4c\x0a\x59\xfe\x00\xcc\xda\x6b\xae\x7d\x6d\x74\xb0\xf7\x78\xcf\x78\xff\x8b\xfb\xff\xac\xbe\x37\xef\xfd\x7f\xa5\x48\xb1\xd9\x5d\x3e\xb4\xec\x9f\xff\x25\x58\x89\x8f\x72\x76\xae\xdf\xfc\xd5\x68\xd7\x92\x05\x29\xe2\x3f\xb0\xdb\x1a\xe7\x9a\x71\x28\x5f\x53\x2f\x89\x5f\x66\xe6\x4e\x0c\x87\xd7\xd9\xb2\xff\xfc\xa0\x5a\xa0\xab\xef\xb7\x2c\x11\x77\x6d\x1f\x7d\x27\xcf\x2a\x1d\x30\xc5\xe9\xc2\x17\xd2\xb0\x4b\x8d\x7c\x3c\x1b\x97\x2f\xf7\x4f\xea\xae\x59\xec\xbf\x7d\xa9\xb9\xd7\xbc\xdd\xa5\x0e\xeb\xe6\x26\x0f\x3a\x5e\xfd\x32\xa2\xcd\x42\xae\xfd\xf2\xeb\xd6\xb5\xb1\x6a\xbc\x11\xf7\x3a\x99\x68\x76\x6c\x4a\xf2\x76\xd9\x4d\xb8\xbf\x9e\x32\xe0\x39\x59\xfd\xeb\xaf\xab\x85\x6c\x7c\xf9\x54\xc3\x79\x99\xfd\xad\x3f\x6f\x98\x3e\x97\xcb\x76\xf1\x1c\xbc\x27\xb7\x62\x5e\xd5\xc3\xb6\xbf\x6a\x00\xff\x11\xba\x4e\xea\x04\x9a\xb4\x4a\xdd\x34\x7d\xdd\xc7\xff\x56\xfc\xef\x32\xb9\x7d\xa7\x61\xe5\xb9\x78\xff\x3a\x0e\x0a\x20\x97\xfe\x39\xbd\x7b\x2d\xc1\x41\x17\xa8\x9f\x8f\x23\x28\x4b\x99\xb7\x97\x42\xe2\x67\x99\x4e\xe3\xa6\x9d\x68\xbd\xbc\xa6\xe4\x2b\xbe\x9d\x8e\xcb\xc3\xde\x0e\x01\xec\xa1\x6f\xa1\x93\xe4\x29\xf8\xbb\xd7\x5f\xec\x00\xbc\x03\xf1\xcf\xec\xe9\x3f\x97\x32\x56\x3f\xcd\x79\x38\x1a\xea\xab\xaf\xb1\x52\xb3\x50\xf8\x1a\xbb\xfa\x1f\xcf\x55\x40\xca\xb9\x60\x94\x01\xf8\xaf\xb0\x64\xf0\xed\xfe\x8e\x31\x8d\xb8\x6b\x21\x21\x38\xb0\x2d\x8a\x28\xd3\x4a\x22\xdf\xcf\x59\x08\x21\xe5\x58\x96\x52\xd4\xd5\x36\x72\x84\x54\x0c\x29\xa9\x94\xb0\xa5\x2d\x34\xd2\x5a\x6a\x79\xe5\xe7\xc3\x9e\xe8\xef\xd0\x3e\x7f\x87\x25\x95\x38\xd4\xdf\x2d\x7a\xd7\x12\x41\x4f\xf5\x77\x89\x80\x62\x37\xec\x9e\x0f\x8c\x5e\xf6\x31\x51\x7b\xad\x4f\xbb\xe5\x31\xca\x8e\xe3\x4c\xf5\x3b\x85\xf4\xf5\xeb\xa4\xd4\xba\xcf\xc4\xbb\xd3\x78\x3e\xd7\x1f\x3e\x67\x4b\x4d\x1f\x5e\xcb\x78\xb9\x5f\x85\x37\xb3\x37\xcf\xbc\x12\x46\xf3\xb1\xfc\xe5\xee\xad\x7f\xab\xae\xbb\xb7\xb5\x49\x0b\x8f\x53\x8f\xf1\xdc\x4f\xe7\xb6\xfc\x73\x08\x1a\x95\xec\x43\x2e\xa1\xaa\x89\x62\xff\xfe\xbe\x9f\xfe\x32\x29\x75\xc6\xd5\xf8\xa4\xdb\xf9\x91\x1b\x0f\xca\xfd\xf4\x8f\xf4\xa4\x89\xc7\xf7\xe4\xf9\x25\x3d\x10\xd4\x18\xf7\xbb\x49\x59\x29\x75\x33\xe7\xf5\x6b\x2b\x2f\x95\x69\x35\x5d\xcf\x57\xef\x6d\x73\xdc\x4e\x3e\xc9\x7e\xfe\x55\x3f\x8c\x06\x3f\xdf\x5e\x44\x21\xd9\xea\xc5\x5f\xdb\x85\x6a\xbd\xdf\x7d\xe4\xfd\x64\xcb\x7f\x7e\xe9\xd7\x42\x06\xd2\x76\xf9\xae\xa3\x5e\xc1\x7f\xa4\x5f\x1b\xbf\xc8\x62\xe9\xd7\xed\xf2\xfd\xdb\xc3\xf1\x6f\xf1\x6b\x27\xf8\x95\x54\xa3\x1d\x7f\x8e\xe8\x57\xde\x9f\x37\x4f\xc3\x3f\x21\xcb\xf7\xb3\x47\xe0\x9f\xfb\xb5\xdb\x54\xbe\xf1\x32\xb2\xbb\xa3\xf4\x0b\xca\x9a\x56\xca\x61\x6f\xaa\x5a\xb7\x87\xdd\xe4\xe4\x51\x9a\xbf\x7e\xe6\xfa\xd5\x87\x7b\xe3\x47\xf6\x31\x97\xbd\x7b\x19\x27\x5b\x0c\x18\x56\x3a\x45\x7e\x2a\xda\x18\xdd\x8d\xde\xc6\xa9\x12\xa3\xe5\xc2\xf8\xed\xd1\x2d\x57\xf3\xe4\xc1\xb8\x6e\xfc\x6a\xc7\x5f\xb7\xf9\x35\xef\x9f\x47\x79\x32\x2d\x1d\xa8\x30\x00\x40\x69\x85\x19\x27\x18\x12\xe4\x22\xed\x68\x08\x98\x83\x6d\x0b\x73\x1b\x3b\x5c\x0b\x41\x81\xd0\xd8\x45\xd0\x22\x92\x61\x0e\x2c\x2a\x18\x16\x54\x5c\xf9\xc7\xd7\x7d\x4f\x96\xec\xa4\x8c\x74\x2e\x51\x4f\x64\x49\x22\x8f\xba\x99\x3c\xeb\xd6\x0a\x06\x6b\xe4\xcd\x4e\xaa\xd6\xe1\xf1\x62\xba\x55\xac\x96\xe3\xc5\x42\xd6\x6c\xe6\x6a\x39\xda\xad\x96\x0a\xc5\x6c\xfc\x6a\xb9\x3d\x0a\xfd\x1d\xef\x9d\x3e\x8d\x08\x21\x61\xa8\x4f\x5b\xf4\xae\xe5\xa4\xcf\x6c\xf1\xc8\xf1\xd7\x5b\x2a\x35\x68\xe3\x2b\xed\xe6\x36\xfd\xc7\x03\xb6\x17\x3e\x46\x57\xff\xea\x0b\x9f\x17\x37\xea\xbf\x80\x31\xed\xe9\xd2\xaf\x4e\xbd\x73\xff\xa3\x72\x9f\xcf\xb9\x65\x53\xa8\x66\xc3\x78\xae\xd4\xd8\xe3\x5b\xb1\x68\xa5\x30\xe6\xaf\x6f\x26\x7e\xfd\x55\x6e\x24\x55\xcb\x4e\x56\x51\x89\x56\xb0\x29\x8b\x79\xfb\x8b\x6b\x59\xa9\xbb\x9e\xcc\x7f\x01\xfc\x4b\x0e\xbc\x16\xd3\x83\x69\x2d\x6e\x1c\x14\xb3\xa5\x56\x8d\x77\x8b\x6f\x5b\x89\x67\x57\x78\x8f\xe0\xdb\xc8\xb4\xfa\x0e\xd4\x78\xdd\x2a\x91\x43\x7d\xcb\xca\xd8\x4e\x3e\x37\xe3\xf7\xfd\xfb\x5c\x26\x9e\x87\xb7\xec\xa5\xdb\x9f\x64\x1e\x9f\x72\xf6\xc4\xba\x4e\xbc\xc2\x76\xd5\x4e\xf5\x81\x39\x7a\xc8\x6b\x72\x0b\x7d\xf4\xb9\x66\xe2\x4b\x35\x1c\xd9\xa6\x7c\x02\x7f\x66\x40\x66\x51\xf0\x97\xed\x25\xfe\x08\x31\xd3\xa5\x8c\xe5\x0c\xbe\x45\x4a\x6a\x49\xc4\xa4\x2b\x5d\x69\x13\x1b\x6a\x65\x6b\x4e\x29\x80\x50\x08\xce\x98\xc3\xb4\x50\x9a\x00\x9b\x12\x88\x21\x02\x02\x42\x45\x01\xc1\x9c\x09\x6c\x5b\x9c\xd8\x33\xdf\x82\xce\xe5\x5b\xd8\x3e\xdf\x42\x11\xe0\xe1\xbe\x65\xd1\xbb\x76\x4c\xe5\x54\xdf\xb2\x23\x5e\xda\xe7\x5b\x76\xfc\xf9\xcf\x27\x51\x83\xc2\x62\x1f\xb9\x3f\x1e\x12\x5d\xd2\xfb\x52\xa3\xb9\x72\x09\x16\x06\xcf\x4f\xbf\xc6\xc3\xc7\x87\xc6\x5b\x33\xd7\x69\x3c\x5e\x1b\x38\x55\x7b\x0d\xd8\xde\x8a\x2f\x4a\x3e\xde\x17\x8b\x36\xbf\xbf\xbf\xef\xfe\x48\x8e\x2a\xaf\x6e\x73\x50\x36\xe5\xb4\xd0\x7d\x69\x67\xb2\xd7\x0f\x5f\xe2\x71\x7d\x7d\x9b\xc8\x97\xa0\xdd\x7a\x31\x53\xb0\x19\x6f\xe9\x44\xe2\x39\x1d\x6f\xfc\x78\x1e\xff\x24\x8d\xa7\xd1\xdb\xe3\x20\x3f\x20\xa5\x5e\x26\x57\x6f\xd0\xeb\xf2\x78\x4c\x3a\x89\x4f\xef\x8b\x36\xc6\x61\xfc\x6c\xb2\x5d\xe5\x7d\x89\xf6\x44\x1f\x52\x24\x4b\x22\x23\xc4\x27\x97\x52\xf2\x19\x7c\x88\xcb\x85\x63\x2b\x89\x18\xa1\x94\x72\x69\x11\x45\x30\x00\xd2\x75\x35\xa6\x0a\x20\x24\x15\x73\x14\xb1\xb4\x83\x91\x83\x6d\x29\xa5\xc3\x15\x60\xca\x41\x8c\x01\xaa\x10\x9d\xf9\x10\x7c\x2e\x1f\xc2\xf7\xfa\x10\x2a\x68\xf8\x1e\xd3\xa2\x77\xed\x84\xda\xa9\x3e\x24\xb8\xef\x71\xac\x0f\x99\xb5\x6f\x8d\xf5\xf5\x4b\x35\xd4\x96\xe2\xef\xb6\x67\x26\x6f\x07\xb5\xda\xcf\x87\x69\xe1\xc7\xeb\x97\xec\xc3\x43\xfa\xb5\xd1\x8f\x37\xf2\x26\xef\xf0\x2f\x28\xf1\xf3\x75\x90\x79\x15\x4f\xda\xf9\x32\xa5\x08\xd4\x2d\xe3\xf6\xd6\x7e\xb2\x46\x3f\x69\xbe\x93\x53\x66\x85\xc2\xeb\xd7\x5a\xbd\xf8\x36\xed\x35\x6f\x93\xe5\x94\xab\x92\x43\x99\x74\x01\x31\x8d\xbf\x9d\x6f\xb8\xcd\xae\xc8\xec\xb3\xf9\x86\x42\x73\x29\x90\xe2\x36\x7d\xee\xf6\x0d\x24\xd7\x6c\xda\x8f\xe3\x3a\x11\x95\x7e\xee\xf1\x6e\x62\x92\xdb\xe6\xcf\xbb\x32\xfc\x72\x3d\xbd\x9d\x4c\x72\x35\x51\xc9\x0f\x87\xee\x58\x3b\x53\xf3\xe1\x35\x9b\xcd\xe4\x1f\x58\xf1\xb9\x3e\xf8\xd9\xbe\x4b\x7e\x71\x5c\x61\x36\x7f\x14\xad\x76\x2b\x6b\xfc\xba\xeb\xa0\x5b\x7a\x5d\xc5\xb2\x1c\x37\xce\xe3\x1b\x94\x04\x82\x6a\x88\x5d\x4b\x4b\x57\x10\x0d\xb8\xc6\x08\x28\xe0\x10\x42\x29\x66\x8e\x86\xca\xb5\x91\xed\x3a\xc2\xe6\x9a\x40\xc1\x98\xe0\x02\x70\xed\x38\xc8\x22\x42\xf2\x2b\xbf\x56\xed\xd9\xd6\x2e\x62\x9f\x6f\x60\xde\x80\x0f\xf5\x0d\x8b\xde\xb5\x43\xa7\xa7\xfa\x86\xa0\xb1\x1e\xbb\x76\x09\xc6\x27\xdb\xff\xfa\xcb\x78\x81\x54\x6a\x86\x06\x7a\x78\x0d\x68\x2f\x83\x06\x3a\xa1\x1b\xe5\xc9\x9b\xd5\x00\x76\xf3\x19\xbf\xde\x36\xfb\xed\xa6\xfd\x9c\xbc\x27\x3f\x95\x48\x5f\xdf\x66\x25\xb8\x1b\xb4\xd8\xe3\xaf\x72\xf7\xa7\x11\x67\xbd\x29\x75\x4b\xfc\xb1\x36\xae\xd4\x0a\xd7\xd3\xc6\x60\xf8\xe3\xb6\x69\xfc\x50\xf1\x97\xd7\xd2\x5b\x73\xb6\x9f\x9d\x7a\x70\xd2\x35\x96\xeb\x3d\xdf\xe7\x73\xcd\x04\x6e\x8d\x51\xd7\xcc\x5d\x23\x92\xc6\x53\x3d\x79\x6a\xbc\x10\xbb\x45\x9b\xb6\x31\xfa\x55\xbb\xab\xa3\x2f\xaf\xa0\xd2\x6d\xb5\x9e\x34\xaf\x36\x1e\xca\xc5\x52\x3d\xdd\xb9\x4e\xe0\xc2\x5b\x05\x4e\xeb\x2f\x8f\x1d\xa7\x79\x5d\xbe\xeb\x4e\xca\xc9\xd7\x73\xc7\x23\x2b\x9b\xfb\x51\x7c\xce\x30\x08\x74\xc3\xe7\x24\x2e\xe2\x73\x96\x6b\xaa\x73\xfb\x9c\xcd\xb8\xb5\x9a\x4d\xac\xcc\x39\x86\xbc\xff\xe2\x34\xb2\xd3\x21\xa1\xb7\x0f\xe5\xb4\x7b\xaf\xeb\x8d\x1f\x4e\x9d\x5a\x4f\x13\x46\x59\xef\x5e\xb4\x12\x2d\xc0\xdc\x85\x1d\x6c\x9f\xc3\xe2\x2b\x7b\x54\x11\xf6\x19\xfb\xf6\x52\xa0\x66\x40\xf7\x0b\x3d\x7b\x72\x5f\xe2\xaf\xf4\x2a\xc3\xe6\xcf\x42\xef\x4b\xb9\x9b\xfb\x71\x37\xa4\x99\xfb\x7b\x82\x9b\xcf\x6d\x36\x2e\x3f\xeb\x87\x5e\x25\x55\x1d\x38\xe5\xa1\x48\xda\xad\x4c\x10\xde\xcc\xb7\x5e\x62\xb0\xdc\xfe\xf5\xd7\xd7\x4b\x8d\x92\x33\x38\x6d\xe0\x5a\xd2\x46\x1a\x01\x49\x18\x42\xc8\x42\x58\x43\x07\x3a\x8c\x01\x47\x4b\x87\x13\xca\x99\x4d\xa0\xed\x3a\xd2\x82\x52\xba\xd2\xa1\x8c\x2a\x00\xb1\x0d\xb5\x2b\xa4\xff\xa9\x90\x9f\xbc\x75\x8e\xf7\xb9\x6a\x8e\x00\xe3\xa1\xae\x7a\xd1\xbb\x76\x18\xff\xd4\xad\xf3\x1d\x61\xdc\xec\xaf\xac\xc7\xa9\x6a\xad\x50\x7b\xba\xbe\xc3\x1d\x97\x98\xe6\xd8\x7c\xfa\xc5\x47\x49\xf9\x7a\x8f\xc0\xaf\xce\x17\xe7\xfa\x8e\x38\x1d\x9b\x27\x1b\x23\x63\xf7\xd6\x79\x52\x4c\xb3\xa9\x9f\xa3\x5b\x59\xd6\x89\xa7\xbe\x8a\x97\xdc\xb7\x94\x63\x0c\x86\xba\xd4\x6d\xb8\x3f\x46\xa5\x66\x31\xdf\x67\xa9\x5c\xa2\x4b\xe3\x4f\xfa\x61\x98\x8c\xbf\xa5\x47\x6f\xf8\x47\xbe\x7e\xfd\xf6\x46\x7e\x3d\xbe\x19\x8d\x91\x99\x7a\xc4\x5d\x54\xfc\x52\xaa\xe5\xb2\x4d\x72\x7b\x9d\x01\xb9\xf3\x6e\x9d\xaf\xec\xf8\x26\x87\x4f\x6f\x4d\xb3\x0e\xd4\x0b\x71\x20\xfe\x12\x8f\xe7\xdf\xf2\x93\x2f\xcc\xb8\xb6\x73\xa5\x69\x11\x5e\x0f\x5d\xa2\x33\x2d\x5c\x7e\x05\xcc\x7f\x7e\xb9\x75\x9e\xd9\x8a\x39\x44\xbe\xeb\xf4\xae\xe0\x3f\x76\xeb\x3c\x3f\x35\x9a\xd3\x15\xa6\xcf\xb6\xbd\x75\xe4\xd6\xf5\x13\xbf\x6e\x24\xed\x88\x5b\xd7\xef\xa8\x33\xa7\xe1\xb7\x56\xe2\x8c\x08\xe1\xe7\x75\xa1\x1e\xb7\x9f\xb2\x95\xc6\xf0\xf6\x69\xf4\x70\xdb\xe8\x88\x5a\xa7\x9a\xeb\xe1\x1f\x6d\x13\x13\x96\x6c\x25\x13\xa3\xe7\xbb\x7a\xf5\xa1\x5c\x55\xc3\xc7\xc7\xd7\x57\xbb\xf6\x54\x74\xc8\xcf\xfb\x17\x61\xeb\x22\xb3\xab\x26\x8b\xc7\x95\x83\x4a\x3f\x2a\x3f\x9a\xf5\x7a\xaa\x9c\xad\xbc\xc9\xc4\xd6\x4f\x82\x47\x7b\x32\xc7\xe1\x44\x6b\x8d\xb8\xa2\x52\x10\x6c\x21\xa1\x00\x55\x0e\x10\xca\x72\x19\xd5\x4a\x21\x0c\x2d\xee\x68\x4b\x13\x07\x50\x4a\x81\x0d\x14\x57\x04\x11\xdb\x56\x54\x22\x79\xe5\x17\x4a\xf6\x3d\x99\x41\x58\xab\x96\x8f\x27\x0a\x59\xd4\x61\xc9\x4e\xa1\xc3\x8d\xac\xd9\xaa\xa5\x0a\x19\xdc\x34\x78\x27\x6e\xe2\x52\xba\x54\x61\x65\x4e\x32\x55\x5a\xe8\x64\x8a\xe9\x46\x0b\xe5\xe2\x4b\x17\x04\x01\xdf\xeb\xd3\x04\xc2\x3b\xd2\x1f\xbc\x5e\x7c\x15\x28\xe6\x31\xb3\xc5\x23\xc7\xdf\xcc\xa7\x05\xa7\xe9\xa5\xed\xe9\x60\x08\x52\x3d\xd6\xb6\x56\xcc\x24\xd7\x6f\xaf\xcc\xfa\x71\xe7\xd7\xa4\x54\xf6\x7e\x30\xe3\x3f\xee\xa9\x99\x7a\x6a\x89\x74\xbf\x20\xdf\x9a\x0c\x95\x9b\x89\xbc\xae\xdb\x9d\xb7\x74\xb1\x51\x7c\xca\x8d\x92\x7c\xfc\xb3\x9f\x76\xe9\x8f\x42\xa5\x97\xab\xd5\x1f\xef\xac\x76\x02\xf7\x7e\xda\x19\xf3\xcb\x63\xf2\xf9\xf9\x9a\x99\xf9\xfa\x93\x5d\x6a\x8e\xfb\xd4\xe8\xfc\xaa\x3e\x14\xbf\xa4\xbb\xf1\x03\x7c\xdc\xea\xb8\xde\xe6\xe3\x92\xcb\xe7\x57\x28\x3f\xda\xc7\x95\x7e\xd5\xaf\xfd\xff\xca\x04\x91\xae\xfc\x85\xfb\x38\x5f\x86\xbf\xc7\xc7\x6d\xe5\xff\x68\xfc\x2f\x5d\xd6\x3a\x9b\x8f\x5d\x9d\x27\x28\x9b\xb4\xe2\xe6\x34\x3d\xfe\x92\x71\x9c\xeb\xdb\x6a\x7d\x52\x1f\x57\x9e\x6f\x2b\x38\xd1\xb0\x1a\x25\x97\xe2\x2f\x99\x3b\xf8\x6e\x67\xab\x9f\x10\xb6\xd3\xb0\xc2\xef\xb6\x3f\xdf\x26\xb2\xa7\xe1\x9f\x7f\x42\xd8\xbe\x3d\xb1\x03\xff\xdc\xc7\x76\x69\xb9\x16\x57\x03\x37\x3e\xea\x5f\xdb\xad\xf2\xf4\xc7\xc0\xe8\x0f\xef\x87\x29\x51\xfb\x61\xfe\xca\xf7\x95\xf1\x85\x89\xd1\xdd\xf0\x4b\xf7\xe7\x2f\x54\x6f\x36\x9f\xba\x6d\x78\x3b\x45\xf6\x30\xfe\x56\x79\xaa\xf2\xf1\xcb\x97\xbb\xc4\xfd\xd3\x30\xd9\xca\x93\xe7\x6a\x4a\x80\xdc\x8f\xca\xdd\x83\xb1\xf0\xb1\x7d\xc7\xfb\x27\x44\xf8\x2a\x82\x8b\x45\x94\x42\xcd\x99\xc2\xb6\x26\x42\x40\x8b\x5b\x36\xc7\xae\xe3\x3a\x42\x3a\x8c\x03\x87\x42\xa8\x15\x77\x88\xa6\x0c\x52\x86\x28\xb2\x28\xe4\x9c\x03\x84\x11\x40\x8e\xe6\x33\x17\x8b\xce\xe5\x62\xc9\x5e\x17\xcb\xa9\x90\xe1\x2e\x76\xde\xbb\x56\x9b\xe8\x54\x17\x9b\x08\x98\x52\x4a\xa5\x5b\x13\x2b\x2d\x16\x3f\x06\x57\xf4\x46\xf7\xe5\xd5\x49\xc8\x44\x6d\x32\xee\xda\x49\xa7\xd7\x2e\xa5\x27\x4f\xaa\xe4\x36\x6a\xc2\xfa\xf9\x3a\xf9\xf1\x6c\x55\x6b\x19\x63\xb0\xc8\x20\x5b\xfc\x25\xba\x83\xd1\x4a\xf3\x3d\xcc\x8c\x1b\x75\xf4\xa5\xa8\x2a\x06\x97\xc6\x8f\x24\x88\xf3\xa7\x1f\x03\xf0\x64\xfe\x02\x25\x96\xb8\x4f\x3e\x8c\xea\xe4\xfe\x76\xd8\xf9\xd1\x73\xad\x17\xc7\x96\xd9\xfb\xa7\xd2\x03\xa8\x7f\x79\xc9\xc7\x4b\xb7\x2d\x01\x1e\xeb\x6e\xff\xad\x0b\x09\x2f\x7c\xf9\xf1\x52\xbf\xbe\x55\xc3\xd1\xcb\x93\x55\xe8\x1b\x87\x65\x98\xed\x73\xb5\x2b\x2b\xe4\x53\x5c\x6d\x41\x4d\x3b\xfe\x7f\x45\x73\xb5\x27\xbb\xba\xb7\x37\x57\x9e\xe8\xea\x96\x8b\xda\x13\x5d\xcd\xfc\x4b\xc3\x6b\x10\x54\x90\xdf\xe0\xdf\xe2\x6b\xe5\x85\x8c\xc5\x77\x35\x53\xfd\x36\xf5\xfe\x7d\xa7\x07\x83\x51\x14\x77\x83\x2d\xcc\xb4\xed\x5a\xb6\x8d\x94\x63\x01\xdb\x75\x5d\x20\x94\x16\xcc\x5b\x89\x32\xa2\x21\x92\x82\xb8\x40\x10\xcb\x02\xd8\xd2\xd2\xb2\x10\x91\x0c\x42\xc7\x15\x08\x23\x64\xcd\xdc\x0d\x3e\x97\xbb\xd9\x9b\x0c\x21\x11\x42\xe1\x1b\x8a\x8b\xde\xb5\xb2\x63\xa7\xba\x9b\x95\x55\x6a\x31\x6e\x54\xcd\x03\xff\x6f\x7c\x40\xc4\x97\x4c\xc8\xbb\xe2\xb4\xd8\xed\xb1\x3b\xeb\x0d\xf6\x0d\xa7\x33\xbc\xad\xd9\x89\x6e\xf5\xc1\x15\xfa\x99\xfc\xb2\xe3\xb2\x5e\xc8\x20\x29\xc5\xb4\xd5\xb5\x15\xab\x76\xfb\xb7\x34\x39\xb9\xfd\x89\x46\x89\x62\x12\xe6\xf8\xfd\x5d\xb6\x20\x7f\xfc\xba\x6e\xb5\x7f\xd8\x95\xbb\x97\x46\xeb\x25\x21\x0a\x9f\xc7\x0d\xe5\x12\x99\x17\xff\xbf\x7e\x93\x1b\x02\xf9\xd4\xe0\xb3\xb8\xa1\xf9\x06\xa3\x4f\x43\x84\x55\xe5\xeb\x4b\xb7\x51\x68\xa4\xd3\x7a\xd4\x16\x4e\xf7\x36\xd3\xa2\xc4\xec\x18\x0f\x66\x6e\x78\x9d\x19\x3f\x17\xb1\xe1\x36\xfb\x6f\xf2\xc5\x75\x0b\xad\x76\x26\xfd\x7c\x9f\xce\x8e\xca\x55\x9e\x2d\x4e\x9f\x8c\x1f\x86\xac\x6b\x9a\xad\x27\xae\xbb\xe2\x1a\xb6\x46\x38\x49\x2c\x00\xad\xd7\x97\xc4\x62\x7f\xec\x4e\x4d\xee\x7c\x8e\x0f\x1e\x1d\xe6\x5f\x51\xbc\x95\x86\x44\x08\x6a\x5b\x8c\x29\x97\xba\xdc\xa5\x5a\x4a\x68\x01\x48\xb4\xb6\x09\xa7\x36\x83\xb6\x2d\x30\x44\x12\xd9\x2e\xa5\x88\xd9\x8e\x03\x6c\x47\x41\x42\x31\x00\x02\xcf\x83\x23\x72\x2e\x6f\xb5\x37\xbd\x42\x32\x4e\xc2\xf7\xd4\x16\xbd\x6b\x05\x09\x4f\xf5\x56\xab\x2e\x67\xb6\x65\x7e\xd0\xff\x83\xaf\x1a\x97\x58\x9f\x96\xdd\x27\x59\xa9\x0a\x33\x6d\x3f\xfe\xa8\xb5\x4d\xf5\x94\x7e\x7b\xb9\x8b\xff\xa8\xb7\x9e\xef\x59\x9e\x1a\x68\x3c\xbd\x2b\x74\x33\xc3\x07\xa3\xf3\x50\x85\xb9\x1f\xb9\x24\x36\x1d\xe7\x47\xdf\xac\x63\xab\xd2\x6b\xa6\xa8\x76\xd3\xd5\x97\xda\x8f\x91\x99\xbf\xed\xc7\x91\xd3\xc4\x2e\x7a\x4d\x7d\x1e\x6f\x95\x7e\xec\xcf\x56\x55\xbf\xc9\x5b\xa1\xfe\xb8\xf4\x59\xbc\x55\xce\xc7\x3e\xf3\x56\x21\x0b\xc1\x5d\xde\xaa\x31\x64\x2f\x0d\x50\x89\xc7\x87\xf9\x2e\x68\xdd\xa5\x9f\xee\x26\x16\xa9\x76\xc1\xc0\x7a\x2c\xf7\x9f\xab\xa5\x27\xde\xad\xa3\x38\xa5\xb7\x29\x7a\x5f\xaa\x77\x7f\x56\xe5\x5b\xa6\xd3\x25\x77\xe6\x14\xfd\x42\xad\xb8\xee\x0c\xdf\xee\x0b\xa0\xcb\xe2\x89\x51\xf6\xd6\x19\xb6\x4a\x58\x4e\xe2\x8b\xa0\x69\xac\xa7\xcf\xe3\xa1\xcf\xf3\xc1\xe3\x23\x1b\xc9\x5f\x31\x66\x23\x61\x03\xdb\x76\xa8\x42\x9a\x70\x80\x98\x52\xb6\x72\x15\xd2\xb6\x83\x6d\x0a\xa0\xab\xa9\xa3\x31\x91\xda\xc5\x9c\xd9\xc0\x15\xca\xb5\x84\xc4\x36\xb7\x2c\x4a\xbd\x75\xa4\x3c\x79\xe7\x7f\xdf\x12\x4e\x00\x41\xc2\x13\x38\xde\x7b\xd7\x4a\x94\x9e\xba\xf3\xbf\xe3\x23\xed\xec\x2f\xe9\xc0\x32\x1e\x19\x49\xd6\x7b\x98\x38\x25\x2d\xbb\xe4\x97\x93\xad\xb6\xe1\xb8\xf1\x92\x75\x0d\xb3\xdb\xbf\x06\xfd\x81\xbc\x4f\x75\x07\x7e\x74\xbe\x63\xe7\xdf\xa8\x25\x59\xb1\xd5\xbe\x35\x8d\xfa\xf3\xc4\xbd\x1b\xb3\x9c\x93\x92\x79\x5c\xeb\x6b\xd4\x49\xd4\x72\xf9\xc1\x75\x69\x94\xff\x99\xb3\xc7\x0e\xbc\x4f\x4f\xf0\xcf\xdb\xc7\x47\x4a\xdf\x9e\x05\xe8\x0e\x52\xaf\xb7\xa5\x96\x39\xee\x5d\xdb\xa6\x91\xe9\x96\x9f\x00\x4b\xbc\x96\xdc\xa1\x89\x26\x89\xf3\xee\xfc\xaf\x92\x8e\x9d\xc6\x94\x19\xc6\x97\x87\xde\x38\xd3\xe8\xbc\xb4\xcb\x45\x5c\x37\x53\x53\x05\xf8\xcf\xcc\x6b\x3c\x9d\x7d\x91\xd9\x47\xb7\x17\x6f\xe7\xb4\xff\xf8\x72\xe7\x3f\xb7\x15\x73\x88\x7c\xd7\xe9\x5d\xc1\x7f\xa4\xd7\x79\x1a\x3c\xb4\x7f\x66\xf6\x22\x3a\x74\x57\x6a\xc5\xeb\x1c\xbb\xf3\xfe\x73\x3a\x7a\xfa\x15\x71\xe7\xdd\x58\xe8\x24\x77\x1a\xfe\xb7\xbd\xa7\xa2\x76\x7a\x3d\xb3\xfa\xe5\x47\xaa\x35\x8a\x1b\xe6\x78\x9c\x21\xea\x4b\xbf\x53\x73\xeb\x53\xd0\x1d\x4e\xff\x3f\xee\xde\xa3\x4d\x71\xdc\x0b\xf4\xfe\x2a\x77\x37\x0b\xee\xf3\x47\x39\x2c\x1d\xb0\x89\x06\x9b\x64\xb3\xb3\x65\x99\x9c\x33\xef\x97\x7f\x9f\x86\x0a\x4c\x75\x85\xa6\xa0\x67\x7a\xae\x57\x53\x23\x9a\x63\xcb\xd2\x8f\x93\x74\xce\x64\x3f\x6e\x36\x17\xd9\x29\xb6\xd6\xc3\xb0\x82\xd3\x9e\xb9\xf2\xc4\xbc\x12\x6b\xad\x92\x9d\xe7\x96\x03\x55\xb2\x3b\x41\x05\x65\xd8\x34\x4c\x64\x2f\x37\xf5\xfe\xda\x0e\xe9\xc1\x5b\x19\xfd\xc7\x24\xa5\xa5\x09\x93\x2c\xe6\x92\x27\x9c\x49\xc8\x99\x4a\x62\x9d\xe2\x98\x02\x4d\x62\x16\x0b\xc6\x21\x84\x92\x21\x98\x31\x1a\xe3\x4c\x52\x12\xe3\x44\x65\x10\x00\xc5\x75\x06\xd4\x5f\x2f\x05\xfa\xff\x72\x0d\x97\xa2\x56\x97\xf9\x86\xc9\x5a\xae\x57\xab\xb7\xaa\x18\x45\xa4\x86\xdb\xbe\x5f\xf5\x3c\xaf\xd8\x28\x14\x23\xa3\x14\x05\x0d\xd6\x74\x1c\xd6\x33\x3a\x81\x43\x7b\x7e\xf4\xca\x20\xca\xd8\xb9\xe1\xd9\xa5\xa7\xc1\xfb\xd8\x82\x82\x32\xf1\x21\xd4\x7e\x8c\x9e\x8f\x24\x5d\xd7\x38\x7e\xda\xa0\xb7\x6d\xc0\xe3\xf9\xdf\x9c\x37\xd0\xdb\x45\xfe\xd6\x4f\xf5\x4d\x3f\x54\x08\x89\xff\x76\x01\x7d\x4f\x35\x33\xb3\x70\x70\xf5\x4d\x26\xf2\x3b\xc3\xf0\xac\x9a\x19\x87\xe3\x84\xf6\x77\x96\x65\x5b\x7c\x02\x16\x4b\x99\xe4\xcd\x4d\x8a\x55\xbd\xdd\x56\x91\x0c\x76\xc0\xa8\x1e\x3a\xa3\xed\x84\x14\x3a\xcd\x2a\xec\x1c\xfb\x2b\x08\xb8\x3b\xb2\xe7\x10\xe6\xa2\xf5\x3e\x9d\x4e\xac\x6d\x37\xe3\x95\xd2\xa6\x0d\xd4\x60\x32\xef\x2f\x66\x6b\xf2\x77\x43\xb2\xf6\xee\xc9\x9a\x4f\x4e\x1a\xbc\x85\xe6\x99\x0d\x57\xa1\x84\x6b\xe7\xdc\x8d\xd0\x1c\x93\xae\x31\xba\xe8\x2a\xaf\xdf\xf7\xd3\xf5\x45\x28\xe1\xdf\x81\xe6\xbb\xcf\x7f\xb3\xfc\x5c\x6d\x19\xde\x21\xff\xd5\x5c\xa8\x5c\xfd\x5f\x0f\xb7\xb9\xee\x1b\x8d\xc5\x34\x3e\x00\xc8\xe1\x68\xe4\x81\x81\x99\x74\x37\x75\x31\x10\x46\x30\xac\xe6\x9b\x95\xf0\x65\xcd\x19\xe5\x52\xc9\x2a\x5c\x7e\xbd\xdf\x4d\xdc\xba\x7e\xd6\xf7\xae\xb7\xf2\x6f\x05\xf6\x62\xd2\x9f\x2f\xee\x02\xf6\xeb\x5c\x9c\x7f\x6c\xca\x77\xcc\xc5\x4b\x48\xc5\xfa\xf0\x79\x6f\x99\x8b\xef\xc8\xaf\x7d\xf3\x5d\x3c\xfd\x78\xd5\xd4\x42\x47\xd5\x7d\xbf\xbf\xdf\xd2\xb4\x12\xef\xba\xf9\x7d\x12\xa6\xd8\x9e\x38\x45\xb7\xd1\x4e\xa4\x61\x89\x4e\xc4\x17\xda\x74\xda\x43\xd9\x51\xf3\x8a\x4c\xeb\x87\xf9\x9e\x79\x69\x36\xad\xd6\x8a\xbd\x85\xbf\x9a\xcc\x72\xc7\x61\xb5\xe3\x15\x4b\xbd\xb8\x54\xe9\xf1\xba\xf5\x98\x04\x1c\xc6\x19\x80\x31\x52\x31\x82\x28\x11\x04\x48\x14\xf3\x1f\xea\x37\x82\x90\xa3\x84\xf1\x8c\x24\x12\xa7\x1c\x25\x1c\xb1\x18\x30\x45\x09\x90\x90\xa7\x28\x4e\x04\x56\x30\x86\x3f\x7e\xbc\xe0\xdd\x7a\xf8\x57\xbe\x4d\x81\x19\x46\x1f\x1e\x5e\x7d\x19\xfd\x5b\x09\xfc\x7b\xf5\x70\xe7\xcd\xbb\xfc\x69\xcb\x1f\x3a\xd3\x02\x18\x16\x16\xb2\xc9\x41\x94\x8e\x57\x03\x63\xcb\xd2\x16\x19\x35\x67\x8d\x5d\xd2\xde\x9e\x86\x1b\x9f\xcc\x4d\x95\xc5\xf6\x79\x0b\x7c\xa2\x87\x9b\xc5\xea\x78\xce\xf2\xad\x64\x07\x76\x79\x6a\x75\x8b\xe3\xe1\x21\x9c\x25\xc7\x79\x9b\x2d\x7d\x76\xd4\xfb\x9e\xbb\x6c\x14\x9d\xe6\xc9\x3b\xd4\xb2\x6d\x2a\x98\x8e\xdc\xb1\x07\x46\x64\xba\xae\x59\x61\x56\x35\xe6\x5b\x3e\xac\xd4\x3b\x33\x50\xeb\x1e\x4f\x93\xc5\x2e\x0a\x0c\xf0\x2b\xd1\xe9\xbf\xad\xd5\xcf\xf5\xf0\xf5\xeb\x7f\xd6\x3a\xbd\x81\x57\x1a\x54\xb2\xf6\x56\xba\xc5\x5e\x85\xf8\xd5\xed\xac\x9d\x2b\x81\xc5\x89\x23\x58\x5d\x93\x55\xbb\x5e\x31\xc2\x22\xea\x9f\xce\x9f\x7f\xd5\xc3\xab\xef\x4a\xfe\x60\x7e\xff\x7e\xbf\x57\xf2\x6f\x45\xba\xe9\xa0\x45\xff\x95\x66\xe6\x7d\x87\xf2\xff\x25\xac\x1a\xcf\xef\xa4\x7a\x9f\xfc\xf9\x95\xf2\xdf\xbe\x41\xfe\x13\xca\x82\x23\xad\xd4\x77\x00\x71\x59\xcd\xe7\xfc\xc9\x80\x96\xd6\x1d\x8a\xc4\xd2\xa9\x2f\xc7\xf5\xf5\x6c\xed\x06\xcb\xd1\xe1\xd0\x5e\x9f\x54\xab\xc8\x67\x59\x7d\x36\x35\x17\x76\x5a\xca\x95\x57\xb6\x31\xc1\xc7\x7d\xa5\xba\x25\xc3\xd1\xa4\x27\x6d\x67\xbd\xa6\x71\x82\x0a\xbe\x67\x3c\x26\x03\x07\x68\x88\x04\x23\x3c\x41\x89\xc4\x5c\xb0\x84\x25\x9c\x69\x28\x50\xaa\xd2\x18\x40\x8e\x39\xe5\x80\xb1\x4c\xa8\x38\x03\x14\xe1\x14\x26\x31\x4e\x08\xcf\x52\x96\x71\x04\xd2\xbf\x5e\xba\x83\xfd\xe5\xda\x56\xa7\x65\xba\xcd\x42\xa1\xcd\x2b\xd5\xb0\x5d\x2b\xd6\x9a\xa1\x69\x54\xc3\x32\x6a\x91\x12\xaa\xd4\x1b\x61\x17\x35\x69\x2b\xa8\x56\xec\xa0\x64\x84\x36\x6d\xdb\x45\x23\xaa\xbf\x32\x08\x20\xfa\xd5\xe9\x10\x41\x28\x3b\x1f\x49\xf9\x78\x94\xfd\xf5\xa6\x87\xc6\x65\x31\xde\xb8\x01\x2f\x50\x3b\x6f\xa0\xcf\x74\xca\xf3\xd5\xcf\x57\xf2\xe6\x64\x25\x9d\x7a\x7e\xd6\x29\xb8\xd5\x74\x6a\x9d\xac\x41\x2d\x5a\x4c\x95\x7f\x3a\x94\x06\xce\x94\x79\xe6\xe9\x70\x9a\x85\xe0\xfc\xf9\xa2\x82\x93\xeb\xef\x73\x0e\x72\x5e\xbb\x40\x6d\x1f\xc9\xa2\x6f\x04\xa8\x59\x6b\x68\x5c\x6e\xec\xa6\xa6\xb9\x31\xc7\x68\x94\xcd\xfb\xc0\x75\x0a\x4e\x34\xae\x7a\xce\xc9\xf7\x96\xbb\x68\xc2\x87\xbd\xe1\x66\x5a\xa7\x8e\x3f\x1d\x57\x26\xbb\xbc\x57\xa7\x3d\x15\x77\xcd\x65\xa8\x8a\x83\xba\xbf\x18\x83\x35\x0a\x9b\xa6\xff\x2b\x2e\xcd\xbf\xad\xda\xcf\xa1\x76\xb5\x17\x4b\x8d\xe3\x6e\xdf\x8b\xf3\x41\x6b\x47\x61\x60\x0e\x71\xaf\xbf\xde\xcf\x5b\x6e\xa5\x37\x2b\xd4\x44\xb3\x14\xf4\xb6\x23\x5f\x09\x45\xa1\xbc\x3c\x29\xf6\x7a\x17\x99\x1f\x58\xd3\xef\xcf\xef\xdf\xef\xf7\x4a\xfe\xad\x50\x1d\x45\xb9\xec\xc2\x92\xea\x27\xcf\xff\xab\x50\xbb\x82\x8a\xed\x74\xa3\x56\xb3\xd4\x9c\xc1\xea\x2e\x18\xa0\xe6\xb6\x60\xf1\x05\x6c\x0c\xbd\x8a\xca\xc9\x4d\x93\xd7\x2b\xd0\x1e\xf6\x5f\xde\xf3\xb5\x7e\xf6\xfd\x94\x97\xda\x7d\xf2\x2f\x29\x2f\xd6\x77\x53\x5e\x94\xdb\x08\x80\x51\x48\xc7\x23\x1b\x6f\x8e\x2d\x4e\xfb\x7e\xe2\xf7\xbc\x39\x66\x25\xcf\x1c\x04\x66\xb7\x6c\x9d\x02\x05\xec\x78\x85\xca\x9a\x4c\xa3\x55\x6f\xb4\x0d\xda\xe5\x85\xb5\x48\xf2\xa7\xd6\xb6\x1b\xba\x93\x7e\x3c\xc1\x26\x69\x8d\x2b\x3d\xaf\xea\x4d\x40\xbf\x6d\x3e\x06\x6a\x2a\x15\xb1\xd0\x52\x27\x14\x67\x29\x62\x22\x85\x48\x12\x8d\x90\x90\x92\x2a\xc4\x33\x82\x50\x2a\x01\x17\x58\x11\x40\x89\x26\x24\x4e\x00\x40\x22\x53\x30\x8d\x11\x04\xf1\x5f\x2f\x1d\xf8\xee\xd1\xcf\xbe\x8a\xe6\x08\xca\x04\xfa\x30\x9a\xf3\x32\xfa\xb7\xd6\x3b\xf7\xea\x67\xee\x9b\x77\xf9\xd3\x52\x1f\x0d\x49\xc3\x5f\x28\x56\xae\x75\x37\xd4\x30\x29\xeb\x86\xa5\xc2\x7c\x01\x49\x63\xc6\x37\x5d\xb6\xcd\xd8\xa1\x90\xdb\x45\xbc\xe7\x9d\xd7\xcd\x67\x7e\xd2\xf6\x26\x8d\xba\xc7\x15\x23\xc7\x5d\x7e\x55\x69\xac\x40\x7e\xd7\x21\xbb\xe8\x38\x9f\x65\xeb\xee\x61\x71\x28\xae\x87\x51\xb5\x58\x29\xe3\x64\xca\xc6\xb9\xe3\x62\x68\x98\x47\x25\x36\xa0\x92\xe3\xc9\xe9\xd0\xac\x36\x46\xd3\x51\xa5\xe2\xd1\xc6\x6a\xcf\x8d\x54\xcf\x26\x16\xaf\x3d\x58\x3f\x03\xaf\xff\x59\x22\x5b\x1b\x54\xc2\xfa\xb0\xe5\xac\xb4\x6f\x68\x3d\x99\x1c\xcd\x4a\x25\xd5\x36\xcd\xf1\xce\x76\x35\xcb\xad\x83\xc6\x0a\xd5\x51\xeb\xe2\x4b\x79\xd5\xcf\xbc\x77\x25\x7f\x30\xbf\x7f\xbf\xdf\x2b\xf9\x37\xea\x67\x8b\x04\x2e\xf7\xed\xab\x90\xd4\x7d\xd9\x7b\x77\xe8\x47\xfd\x20\x5d\x46\xdf\xd4\x8f\x8c\xe7\x77\xe2\xdd\x27\xbf\x7b\xe5\xbb\x88\x6e\x90\xff\x84\x32\xa7\x1a\x76\x9d\xf5\x32\xb7\xad\xad\xf2\xec\x38\x62\xb2\xc1\xa1\xae\xa2\xda\xb2\x8c\xb9\xb3\x8e\x55\xc0\x4b\x53\xeb\x70\x1c\xa6\x88\x6e\x17\x8d\xf5\x32\xea\x1b\x6a\xd6\xa8\xa6\xd6\x6e\x8b\x84\x68\x0f\x4f\x84\xce\x8f\xc3\x91\x6e\x31\x51\xdf\x17\xc3\x05\xf5\xb7\xa7\x07\xe9\x67\x49\x96\xa4\x54\x4b\x42\x79\xca\x21\x4f\x54\x26\x08\x47\x12\xc6\x4c\x21\x92\x70\x95\x8a\x34\x21\x59\xc6\x05\xd1\x2a\x25\x54\xa2\x44\x63\x90\x02\x01\x09\x53\x40\x21\x46\x9e\x50\x86\xee\x43\xd9\x97\x5a\x19\x43\xe8\x13\x94\xfd\x18\x15\x7f\xbd\xe9\xd8\x75\x2f\xca\xde\x1e\x4c\xf8\x69\xa9\xbb\xb4\x26\xbb\x75\x34\xd6\x87\x2d\x49\x27\xa3\x56\x0a\xa2\xe6\xf6\x58\x98\x4d\xed\xf6\xfa\x50\x89\xa7\xa7\x72\x77\xb8\x23\x8e\x3b\x9e\x5f\xea\x08\x7c\x72\xd8\x23\x82\xad\x61\x6d\x94\x5b\x8e\x44\xee\x14\x25\xa8\x93\x30\x30\xc8\x2d\xbb\x87\xde\xc6\xc9\x9a\xee\x3e\x01\xe3\x5d\x65\xb3\x69\x3a\x46\xd1\x1f\xb8\xf5\x51\x29\x4d\x87\x1d\x7f\xbe\x38\xc8\xaa\x1d\xd4\x59\xbb\xdf\x98\x56\xab\x07\x67\xe7\x2f\x4a\x27\xed\xce\xe2\xfe\x00\xef\x7c\xfb\xb7\xa1\xcc\xdc\xb6\x1a\x9d\xd1\x66\x51\x5c\x27\xdb\x62\x2f\x02\x38\x75\x0b\xab\xf5\xa0\x4c\xfb\xb0\x5a\x6b\x4e\x17\xeb\x63\x67\xbe\xca\x99\xc1\xa2\x72\xf9\xd9\xff\x97\x51\x36\x47\x13\x8d\xef\x45\xd9\xab\x97\xe9\x4e\x94\x74\xae\x54\x21\xf5\xc9\xf3\xbe\xbd\x9e\x50\x82\xbc\x36\x19\x95\xf2\xcb\x79\xbe\xb1\x46\xae\x9c\x74\x73\x9b\x52\xb6\x9c\xac\xbb\x49\x10\x82\xc1\xda\x95\xe5\xea\x71\x95\xb4\x07\xbe\x09\x4a\xc1\x68\x7e\x2c\x86\xd1\xa4\x5d\xa9\xa8\xac\xb9\x07\xad\xed\xa4\x64\xd3\xe1\x51\x04\x09\xa8\x34\x6b\x78\xb0\x40\xf3\x52\xca\x81\xf1\x18\xaf\x55\x9a\xa4\x92\x91\x4c\x65\x69\x82\x31\x8b\x31\xc8\x10\x54\x88\x80\x2c\xcb\xd2\x38\xe3\x38\xe5\x8a\x53\x21\x80\x4e\x61\x22\x25\xe6\x54\x31\x94\x09\xa2\xb1\xa6\x12\x51\x0e\xfe\xba\x74\x21\xbe\x84\x5c\xbc\x9e\xdb\xa8\x44\xb4\xdb\x2c\x76\x5d\x1a\xd5\x7b\x35\xcf\xa5\xc8\xb5\x2a\xb4\x69\x95\x49\xe4\xb6\xbb\xb5\x72\xb9\xe3\xf6\x9a\x15\xe4\x34\x88\x59\x42\xe5\x52\xd9\x43\xd6\xab\x3a\x43\x04\x91\x5f\x41\x85\x03\x46\x3e\xcc\xcd\x7b\x19\xfd\x5b\xf3\xbe\xcb\x62\xb8\x71\x03\x5c\xa0\x02\xde\x5b\x64\x57\x7f\x9f\x7f\x57\xcc\x4e\xc7\x7b\x5a\x20\x56\xbd\xda\x97\xd6\xe4\x34\x1f\x1f\x62\x3c\x36\x8a\xb3\x45\x4f\xf5\x9b\xc3\x59\xd8\xcf\x65\x5b\x98\x2c\x69\x7e\x55\x68\x31\x39\xda\x8c\x71\x31\xff\x72\xbd\x7e\x9f\xfb\x22\xdf\x77\x6d\xa3\x93\xa7\xf5\x05\xb2\xa7\x4e\xbb\x21\x48\x3a\x3d\xb6\xa8\x9b\xef\x1f\x66\xb0\x7b\xea\xa7\xb5\xd5\xb8\xd9\x6c\xf3\x7d\xb6\xd8\x62\x79\x54\x4b\xcc\x9a\xfd\x5c\x7f\x8d\x8e\x8b\x60\xb4\xa7\x83\xc3\x41\xd7\xda\xa3\xbc\xdb\x29\x54\x86\x0b\x65\xbb\xb3\x54\x0f\xb1\x30\xf6\xbf\x92\xfe\x7b\xad\x0f\x7e\x01\x98\xab\xfa\x18\xb7\x02\xa6\xd3\x69\x05\x4f\xdf\x72\xa3\x7e\x79\xb9\xde\xce\xdf\xdb\x0d\xe8\xbf\xdc\x9f\xf1\xad\xfb\x9b\xf8\x55\x72\x29\x40\xe9\xbd\x7e\xdf\x27\x05\x4c\xae\xae\x77\x74\xa9\x6b\x88\x26\xe3\x13\x8c\x78\x1c\x70\x97\x0f\x50\xd7\xf3\x70\x30\xa8\xf0\x52\x53\x47\x5e\xf3\x54\x58\x2c\x93\xda\x24\xae\xe4\xfb\xed\xb8\x79\x89\xa3\xbd\x9a\x85\xf6\xf7\xdd\xf6\xf5\xfb\xe4\x5f\xcc\x42\xfb\xbb\x6e\xfb\xa8\x66\x86\xf9\x31\x9b\x45\xf5\xa8\xe3\xe7\x4f\x03\x94\x94\x1b\xe3\x24\x67\xbb\x59\x27\xa9\x9b\xe0\xb8\x0d\xca\xe5\xd6\xce\xcc\x4d\x79\x86\xcb\xc7\x55\xb6\xa8\xd8\xcc\x3a\x25\x95\x89\xdb\xb0\xa7\xc5\xa2\x43\x0e\xcd\x86\xe8\xb5\xfd\x65\x65\xb2\xaf\xc5\x29\x64\xd5\x6c\x6f\x3f\xa6\xd8\x01\x06\x42\x80\x34\x25\x28\x15\x9a\x00\x14\x63\x90\x8a\x18\x53\xc4\x13\xca\x14\xd4\x18\x6b\x28\xb4\xe0\x8a\x30\x0d\x31\x46\x3a\xa6\x2a\x53\x90\x23\x98\xa5\x82\xab\x2c\x79\x02\xe0\x59\x97\xb2\x8a\x16\xb1\x91\xd5\x24\xd4\x2a\x07\x9e\x47\x7c\xa3\xd8\x42\x55\xa7\x67\x94\x4b\x6d\xda\x30\x78\x91\xe2\x0a\xee\xd4\x1b\xac\x5b\x28\xb3\xb0\x5b\xf4\x9a\x5e\xaf\xe2\xbb\x37\x02\x10\x43\xfa\xb1\xaf\xeb\x79\xf4\x6f\x9d\x42\x2f\x8b\xf1\x46\x63\xe6\xd7\x00\x78\x59\x0c\x37\x6a\x55\x4f\xd7\x9b\x98\x73\xf6\xbc\xc1\x4d\x63\xa8\x7b\xcd\xe6\xb6\xde\x5b\x4e\xf6\x9b\xe3\x68\x36\xa2\x69\xbe\x09\xdc\x76\xd3\x1d\xfa\xbb\x23\x18\x2e\x1a\xd5\xe3\x6c\x31\x21\xed\x5d\x5d\x2c\x15\xb7\xec\x13\xde\xad\xab\x41\x7d\xe2\xa1\x3e\x05\xcb\x70\xb8\x3a\xa6\xcd\x7a\x1a\xcf\x29\x1b\xec\x82\xc1\xaa\x90\x05\x6b\xf7\x17\xab\x23\xdd\x90\xc6\x77\x0f\x5c\xe6\xe6\xa1\xfc\x3d\xb8\xbc\x2b\xff\x56\x43\x75\x4c\xba\xc6\xe2\xad\xfc\x9f\xae\x6f\xc0\xed\x86\x1f\xc0\xf3\xe7\x1f\x0d\xb7\xef\xc8\xbf\x13\x6e\xbf\x6b\xb1\x3e\x00\x6e\x82\xa2\x24\x46\x54\x03\x4d\xe2\x18\x12\x19\x23\x94\x2a\x28\x71\xa2\x12\x46\x68\xac\xa5\x4e\x62\x84\x35\xcf\x38\x39\x57\xcd\xcf\x70\x72\x6e\x77\x46\xb4\x4c\x58\x4c\x7f\xc0\xed\xdc\xe8\xf9\x0c\xb7\x92\xe3\x04\x7e\xa5\x58\x2b\xb2\xb2\xcd\xad\x0a\xad\x97\x48\xd8\xb1\x22\xab\xe6\x05\x9e\xc3\x1a\x91\xc1\xcb\x2d\x2b\xc0\x4e\xa3\xd8\x28\xf7\xfc\x56\x14\x39\x26\x2d\x34\xff\x7a\x69\x61\x07\x99\x94\x9f\xdb\x8c\xe4\x7f\x00\x13\x0e\x3e\xa8\x15\x77\x35\xfa\xf7\xc6\x6c\x97\xe5\x58\x36\x9b\x87\xfe\x9c\xdb\xb9\x66\x83\x4c\x52\x35\x9a\xb0\xe1\xbe\x3c\x8a\x36\x55\x9a\x33\xb2\x56\xad\x9d\x4e\x74\xca\xd4\x7e\x36\xba\x44\xad\xce\x78\x33\xcf\xae\xfc\x4f\xe2\x93\x37\x14\x7a\x7a\x5d\x8e\x5f\x16\x7a\xaa\x95\xc9\xbe\x7d\xf9\xf8\xcc\x39\x29\x36\x5e\xee\xf5\xb1\x54\x25\xad\x53\xc9\x4e\x56\x39\xe1\xb6\xeb\xae\xbb\x86\x5d\x3a\x52\x21\x1d\x36\xbd\x3d\xb1\xf5\x7c\x76\xf2\x8d\x60\xa2\x47\x51\x59\x7a\xf5\x59\x3e\x1c\xaf\xd4\xdc\x92\xc5\x5d\x2a\x06\x8a\x4e\xbc\x43\x0e\x0e\xa4\x84\xee\xa1\xdc\xfe\x95\x8a\x01\xbf\x5e\x74\xe5\xda\xf2\xba\x71\x8e\xcf\x3a\xd4\xc5\x88\x4b\x8c\xbf\x7f\xd5\xe5\xfb\x6f\x34\xf4\x9f\xbc\xfc\x96\x61\x94\x7e\x2a\xa0\xf3\x8e\xd1\x77\x65\xa9\x59\x7e\x7b\x1d\x55\xea\xfb\xfc\x78\x94\x2b\x87\x61\x89\xea\xf9\xda\x8a\x50\xb5\x99\xcb\xfa\x45\x70\x72\x8a\xbd\x70\xa6\x67\x2f\xef\xe5\x8c\x85\xd2\x99\x6d\xee\x59\xe6\x37\xe2\x7b\xe5\x83\xc2\xf5\x45\x65\x5d\x5c\x0f\xad\x5c\x41\x1c\x0d\xc4\xf2\x3b\x73\x62\x0f\x06\x2b\xaf\xb3\x8d\xb0\x93\x8b\xc6\x23\x55\x37\xf0\xb2\x2c\x80\x51\xe8\x85\x73\x64\x65\xad\xd6\x22\x0f\x69\x05\x57\x8c\x5d\xc0\x71\x56\x0a\xeb\xbd\x96\xca\x36\x51\x96\xa5\xc1\xba\xd9\x79\xd0\x09\x7b\x48\x90\x92\x42\x24\x30\x63\x5c\x0a\x92\x71\x12\x43\x2a\x60\xaa\xa5\x8a\xb5\xca\x88\x94\x9a\x81\x0c\x6a\xa0\x75\x4a\x24\x63\x0c\xc6\x31\x52\x94\x4a\x84\x05\x67\xe7\x02\x92\xf0\xb9\x3a\xed\x03\x74\x1e\x0a\xbe\xd2\x79\x04\x00\xf4\x63\xa3\xef\x79\xf4\x6f\x9d\xc8\xef\xd5\x79\x3e\xa9\x20\xf9\x2d\x9d\xe7\x7b\x46\xe2\xe5\x1f\x38\x52\x5f\xff\x2e\x15\x5f\xee\xd7\x2f\x9b\xed\x03\xdd\x74\xb3\x91\xb1\x0f\x0f\x71\x22\xdb\xb4\x58\x1f\xf5\x76\x66\xb0\xc3\x5b\x49\x47\x61\x72\x3c\x6d\x97\xba\x97\x1f\x8f\xd6\xc7\xda\xba\x0d\x46\xf5\x7c\x1f\xe0\x20\x83\xa7\xbe\x56\x1b\x38\x18\x91\x81\x1d\xb9\x9e\x98\x76\xc9\xbc\x30\xdf\x80\x75\xb3\xd5\xeb\xff\x92\x91\xf8\x6b\x7a\xd2\x79\xf3\xfc\xe9\x46\xa2\xf8\x57\xee\xef\x9c\x27\xf9\xc9\xfd\xbd\xa3\x67\xdd\xa3\xe7\xd4\x9d\x7e\xe5\x9b\x7a\xce\xcb\xe7\x1b\xf7\xc9\x2f\x91\x57\xf9\xdf\x38\xe3\x3a\x76\x5a\xc5\x29\xec\xe5\x6a\xb6\x99\x39\x8b\x1d\x6c\x8d\x15\xf3\xa6\xc2\x71\xf3\x9a\xe3\xa9\x97\xee\xaa\x75\xb6\xa0\xb3\x5c\xb3\x7e\x2a\x1d\x0f\xad\x66\x8d\xe7\xec\x56\xea\xe4\xc3\xba\x49\x8f\xb8\xeb\x36\x86\x05\xaf\x1f\xe1\x63\x2f\x19\xf6\x9b\x43\xdc\x3c\x94\xbd\xe9\x83\x8c\xc8\x98\xc6\x52\x63\x15\x33\xac\xa5\x52\x90\x52\x4c\xa5\x92\x1c\x63\x9e\xa8\x04\x12\xc2\xce\xb5\x49\x58\x82\x30\x88\x49\x0a\x14\xcf\x10\xa7\x02\x31\x42\x52\xc8\x04\x90\x3f\x80\xca\xee\x8e\x2d\x7e\x55\x28\x4f\xfc\xb0\x0e\x3f\x4e\x57\x7e\x1e\x65\x82\x43\x49\x04\x10\xf8\x01\xb9\x5f\x6f\xdf\xf3\x4f\x26\x05\x41\x38\xbf\x32\xa2\xd1\xe9\x34\x98\x56\x97\x87\xbe\xd7\xaf\xb6\x23\x1a\x4a\xb4\xd5\xc5\x3e\x3d\xb8\x9b\xfa\x76\x3e\xce\xf5\xa9\xe7\x7f\x55\x7d\xc9\x1c\x38\x76\x3e\x89\xe2\x56\xaf\x57\xc6\x9d\xb2\x3c\x94\x97\xe1\xbc\x4b\xb5\xae\x56\x80\xa1\x9d\xd8\x68\x99\x45\x89\x54\x90\x1d\x40\xb7\xdd\x72\x96\x0b\xb6\x0a\x0f\x84\x67\x35\xb3\x7d\x18\x77\xa3\xa5\x48\x8c\x62\x2d\x8b\xac\x26\x0d\xc3\x46\xd0\x17\x6c\x6d\xb8\xed\xca\x43\x1d\xf2\xd7\x4f\x5f\xf7\x36\x79\xb6\x77\x4b\x42\x90\xde\x90\xad\x23\x3b\xb2\xa0\x5b\xef\xe4\xd3\xd5\x6c\x40\xea\x2a\x58\xb5\x56\xcb\x72\x63\x5e\x6f\xb5\x2f\x79\x52\xaf\x0e\xf9\xcf\x0c\xa5\xcf\x4d\xc6\xeb\xd1\x5b\x1d\xf2\x41\xa7\x99\xbb\xaa\x04\x67\xdd\xd7\xb8\xe0\x0e\x87\xbc\xb7\x08\x37\xf0\x9b\x0e\x79\xe3\xf9\x9d\xf8\xf7\xc9\xff\xba\x83\xc3\xe7\xfe\xb0\xc0\xcf\x23\xe4\x8e\x51\xb7\x99\xc2\x66\xa6\x9a\xf1\x84\x39\xdb\x70\x36\x3c\x6e\x8c\xe2\xa0\xdb\x2f\xec\x83\x7c\x3a\x2b\x84\x22\x75\x26\x85\x43\xbc\xd4\x4b\x28\x74\x1d\x9f\x8c\x4e\xad\xe7\x4c\x2b\x3b\x77\x6f\x9e\x8a\xc8\x18\x6f\x3b\xf0\x04\xa2\x46\x7d\x65\x98\x13\xeb\x31\x67\x30\x58\x0c\x28\x83\x42\x26\x84\x72\x06\x14\x03\x5c\x63\x0c\x95\x04\x8a\xc6\x22\x21\x2a\xe5\x08\x48\x06\xd3\x4c\x24\x4a\x28\xad\xb2\x94\xc4\x31\x16\x22\xa1\x9c\xc7\x4c\x25\x4f\x28\xbb\x33\xb6\xf8\xa5\x17\x4c\x42\x86\xc9\x87\x28\x7b\x1e\x7d\x42\x19\x91\xe8\x01\x85\xe4\xde\x1e\x7d\xfa\x69\xa9\x9b\xc6\x68\x6e\xd6\x0a\xed\x61\xcf\xab\xb6\x47\xeb\x6e\x58\x85\xc3\x0a\x95\xb6\x04\xd5\x21\xd9\x53\x06\x38\x4b\x44\xb1\x72\xe8\x65\x67\x2a\x7e\x96\x26\x71\xb0\xa8\x9a\xf0\xcd\x78\xe4\x97\x80\xca\x9c\x5e\x6b\x58\x72\xec\xed\x1c\x34\xf7\xc7\x68\xe6\x2d\x5b\xed\x22\x1a\x1c\x6c\x73\x33\xe5\x83\xfc\xae\x3d\x36\x5d\xac\xfa\x7b\x37\x6c\x0a\x3e\x1b\xce\x3a\xe3\xc1\x74\x97\x96\x16\xad\x6e\xa6\x4b\xda\x1d\xee\xf9\xb8\xaf\xb3\xf6\xaf\xd4\xff\xfd\xdb\x5a\xfd\x65\x94\x19\x7e\x89\x19\x2d\xd3\x29\x4d\x5b\x4d\x58\xe2\xce\xe4\x28\xa3\xe1\x36\xf3\xf3\xa9\x45\xb6\xb5\xba\xde\xd4\x73\xd3\xbc\x79\x5c\x77\xc3\xcb\x41\x96\x7f\x19\x65\xb3\xb5\x53\x74\xee\x45\xd9\xab\x16\x75\x27\x4a\x0e\xe2\xf5\xdf\x8f\x3f\x7e\xde\x9f\xae\xe7\x8c\x78\x7f\x1b\x96\x35\xef\x95\x80\xe5\x15\x8b\x87\x6e\x9b\x0c\x4d\x9f\x2f\xbd\xc2\xba\x36\x2d\x9f\xe2\x31\x34\xe5\x5c\xf9\xfb\xa4\xb7\x25\x19\x87\x65\x23\xd8\xe0\x52\xcd\x9c\x80\x5d\x9d\x92\x05\xec\x95\x7a\x2b\xdc\xac\xb4\xe1\x0c\x0f\x8b\x83\xf9\xba\x4e\x4b\xc5\x19\x7c\x50\x1d\x61\x28\x92\x8c\x29\xa5\x11\x50\x59\x92\x80\x4c\x02\x2e\x15\x49\x04\x17\x98\x43\x21\x89\x4c\x21\x4e\x52\x88\x52\xc8\x71\xcc\x00\x66\x38\x45\x89\xd0\x38\x06\x5c\x67\x3a\x4e\x9f\x50\x82\xef\x6c\x5f\xf7\xa5\x75\x29\xa9\x40\x9f\xb0\xe4\x69\xf4\x89\x25\x12\xa0\x07\xa4\x5c\x55\xbe\x5a\x6b\xd5\x75\xf5\xa4\x4e\xbd\x46\xa2\x5c\x3e\x0c\xa0\x11\x2f\xa0\xdc\x0e\xa6\x96\x77\x72\xf7\xb3\xb8\xed\x34\x12\x5d\xce\x0d\x9c\x76\x87\x5f\xf6\xe5\x27\xfd\x9c\xf2\x41\x67\x33\x67\xc7\x8d\xb1\x2c\x2e\x52\xd6\x73\xba\xa3\x7d\xe8\x1f\xc3\xf9\xa2\x52\x0f\x4e\xc2\x6f\xee\x4e\x20\x15\xc1\xbc\xb1\xaa\x17\xcc\xbe\x57\xd8\x1a\x23\x91\x1b\x27\xc7\x41\x93\xfb\x43\x5d\x5f\xee\x93\x61\x79\xd5\x04\x46\x5b\x44\xdd\xd8\xf4\x7d\x72\x52\xb9\xfd\xaf\x94\xef\xf8\xdb\x62\xfd\x65\x96\x58\xdc\x12\xb8\x86\x5a\x08\x9b\x5b\x32\x4e\x7d\x77\x99\x66\xc9\xbc\xd7\x1f\xa9\xc3\xba\x8c\x26\x66\x0b\xe1\x61\x36\x0f\x3a\x8e\x3e\x9c\x3f\xff\x6f\xb3\xc4\x05\xbc\xf6\xc7\xb0\x64\x7f\x95\xe7\x34\xff\xf8\x79\x7f\xba\x9e\x58\xb2\x03\x9d\x24\xae\xaf\x57\x7e\x65\xc0\x42\x3d\x0d\x3a\x73\xe1\x80\xda\x84\x55\x9a\xa3\xb1\xca\x17\x0a\x2b\x21\x8b\x59\x21\xb6\xd9\x69\x60\x44\x76\x50\xed\x97\xf2\x8d\x85\x2b\xe6\xed\x2d\x28\xcd\x46\xcb\xb5\x4b\x86\x31\xd8\x18\x4e\xc3\x75\xa6\xfd\x76\xa1\x5e\xc3\x8d\xf5\x83\x4e\xd7\xa8\x54\x67\x84\xa6\xe9\x0f\xd5\x83\x4a\xcc\x29\xa6\xe7\x12\x65\x29\xd7\x19\x23\x90\x64\x19\x91\x98\xc3\x18\x63\xca\x11\xd6\x82\xa4\x71\x16\x2b\x1d\x43\x0d\x31\x63\xf4\x9c\xbd\xf9\x5c\xdf\xd6\x0e\xba\x98\xd3\x9a\x11\x05\x84\xd5\x6d\xd7\x41\x5d\xd7\xf0\x7c\x0b\x05\x41\xaf\xca\xeb\x88\x30\x3b\x2a\x16\x2d\xb7\xdb\xea\xa0\xa0\xc0\x4b\xc5\x02\xf2\xdb\x7e\xd5\x7e\x61\x00\x67\x1c\x7f\x95\xfc\x24\x01\x83\xf0\xc3\xe4\xa7\x97\x51\x8e\x01\x24\x84\x08\xf8\xaa\xa0\xdc\x68\x17\xf4\x5e\x97\xd7\x0d\x79\x0a\xc6\x76\xbf\xf3\x4e\xde\x58\x6e\xf6\xc9\xb6\x5c\x6c\x9b\xcb\x59\x88\x98\x1b\x95\x70\x2d\xb1\xd2\x85\xdf\x96\x1b\x32\x63\x85\x4e\x10\xae\xc3\xf7\xf2\x14\x8a\x2f\xf2\xfd\xd2\xa8\xba\x54\x51\x58\x10\x05\x63\x5d\x64\xf6\x01\x0d\xf6\x8d\xd1\xb0\x90\x15\xdd\x1e\x19\xad\x6b\x5e\xaf\xa7\x78\xe3\x38\xf3\x86\xe5\xa1\x1c\x3b\xe1\x28\xdb\xed\xaa\xf6\xa4\x3b\x3c\xb9\xc6\x0a\x99\xb2\xe6\xd8\xab\xcc\x0e\xec\xdd\x68\x66\x1e\x2a\x95\x41\x79\x98\x15\x94\x5f\x7b\x6c\x9e\x82\x79\xe5\xd3\xbe\xd5\xee\xba\x72\xf1\xdc\x08\xe5\xa7\xa9\xfa\x05\x17\x94\x79\xf5\xf9\x6f\xd8\x85\x4f\x79\x0a\xfe\xeb\xf7\x7f\x3b\x4f\xe1\xea\xee\xec\x51\x92\xe5\xd6\xe6\xb0\xd1\xa8\xbb\xd1\x76\xe5\x1a\xc8\xd8\x04\xa3\x49\x86\x63\x4a\xb4\x3d\x2b\xc4\x80\xb1\x61\x8b\xd9\x63\x68\xbd\x39\x5e\xf8\x59\x67\xbd\x2f\xec\xb2\xe0\x3e\xf9\xf5\xab\xf2\x34\xdf\x09\xe5\xd5\xb6\x8b\xc3\x40\xb5\xf6\xbe\xb5\xcf\xe6\x8d\x62\x5c\x34\x72\xf5\x52\x20\x54\x6f\x36\xac\xef\xf7\x70\x32\x39\xad\xf3\x15\x85\x4a\xd3\x2a\xf2\x3b\xda\xcb\xe5\xc4\xba\xde\x89\xab\xb5\xc8\xda\x45\x45\xb0\x6f\xd7\x37\xc2\x2b\xd4\x73\x75\x55\x2c\xcc\x97\x85\x69\x59\x04\x87\x47\x25\x6a\xc1\x8c\x4a\xac\x13\xaa\x21\xc9\x24\x07\x88\x27\x8a\x4b\x81\x60\x16\x13\xc6\x90\x50\x10\x70\x80\x49\x96\xc4\x32\xa6\xb1\xd2\x19\x8b\x65\x1a\x73\xa9\x01\x85\x5a\x73\xfc\x04\xc0\x4b\xcd\x46\xcb\x08\x90\x51\x88\x0a\x95\x52\xab\x80\xaa\x95\x12\x0d\x6a\xa1\x43\x6b\xa5\x4e\x8f\xf9\x3c\x2c\x55\x83\xba\x6b\xb7\x10\xaa\xf3\x72\x48\xec\x66\xd7\x69\x72\xc7\xb6\x1b\x37\x02\x50\xd2\x8f\x2d\xb4\x97\xd1\x0b\x00\x29\x42\xaf\x5a\xd5\x8d\xd6\xc4\x2d\x00\x0c\x3a\x9d\xe6\xd3\xff\xb8\x13\x80\xce\x8b\x7c\xbf\xc4\x07\xc9\xbe\xa7\x60\xae\xd2\xcd\x06\xba\x33\x8b\x8c\x25\x6d\x85\x4e\x28\xe3\x99\x2a\x96\xa7\xe5\x25\xd8\x77\x80\x92\x75\xaf\x94\xb9\xac\x2d\x36\xab\x41\xa9\xa3\x3b\xf3\x61\xc1\x46\xba\xed\x38\xd3\xc1\x21\x97\x98\x1b\x47\xb6\x1a\xcd\xdd\x30\x73\xf2\xd3\xcc\x9e\xf8\xe3\xdf\x07\xc0\x5b\xad\xb5\x76\xa7\xd3\x7e\xd2\x6a\xfe\x11\x00\x7e\xc3\x9a\xfc\x3d\x00\x34\x0a\x56\xbd\x5f\xd8\x07\xcd\xf2\x18\x6c\x9a\xf5\x43\x4f\xed\xba\xa5\xd5\x0c\x34\xb0\xbf\xad\x8e\xec\xd9\xaa\xb5\x5b\xec\xf6\x6a\xe5\x4c\xc4\x6f\x01\xe0\x77\xe4\xdf\x09\xc0\xd1\xd6\xd9\x99\x93\x53\x48\x16\xbd\x9c\x43\xbb\x69\xdf\x5a\x4d\x3c\xd5\xc9\xe0\x32\xdd\xab\x69\x34\x5d\xb5\xcc\x30\x38\x01\x02\x06\x22\x59\xb4\x8e\x68\x5b\x18\x74\x68\x77\x58\xf2\x1b\x3d\xea\xb7\xbb\x71\xb1\x48\xd7\x2e\x08\x61\x4d\x56\x72\x65\x11\xe6\x7a\xa2\xfe\xa8\xa0\xa5\x50\x4a\x01\x85\x84\xc2\x5a\xca\x98\x61\xa5\xa8\x4c\xe2\x94\xa7\x5a\xe1\x8c\x2a\xca\x74\x82\x25\x41\x8a\x12\xa1\x55\x4a\x40\xa2\xb0\x54\x14\xc8\x94\x25\x40\xc0\x94\x3c\xe5\x32\xb0\x87\xe5\x32\x7c\xee\x6e\x27\xff\x03\x98\x13\xf8\x41\xd5\xda\xab\xd1\xe7\x5c\x06\x21\x5e\x2b\x83\x7f\x3f\x97\xe1\x93\xb3\x3c\xdf\x6a\x7c\x77\x1e\xb7\x50\x87\x44\x5d\xb8\x4f\xdc\xf6\x36\x42\x72\xf3\xd3\xa7\x5a\x96\xae\x39\x97\x8f\x8f\x4b\x36\xb3\xc6\x66\xb1\x21\xf5\x7c\x57\xf5\xc3\x71\xcd\x2f\x73\x7f\x5c\x60\x5e\x77\x32\x4d\x2b\xee\xb4\x7a\x88\x87\x25\x18\xc5\x9d\x4a\x2f\xae\x94\x0f\x27\xda\x10\xf4\x90\x63\xfb\xd3\x22\x3a\x1c\x92\x35\x33\x53\x34\x21\xcb\x43\x67\xd4\xe4\x3e\x66\xf6\x3e\x18\x2e\x1f\xde\x64\xf3\x8f\xcb\x69\xd8\x4c\xb4\xeb\x6c\x94\x7b\x98\x54\xa7\xde\x2e\xf1\xff\xa9\x1c\x07\xf7\x6c\x25\x5e\x72\x1c\xbe\x71\x46\xe6\x77\xbd\xec\x47\x34\xc9\x04\x28\x91\x40\x9d\xeb\xc7\x4a\xcd\x12\x8c\xa9\xe6\x94\x60\x2c\x64\xcc\x09\x61\x89\x60\x1a\x03\x2c\x75\x92\x51\xa9\x15\x63\x69\x96\x25\x14\xe8\x58\x2b\x90\x2a\x41\x7f\xec\xcc\x97\x36\x02\x61\xcd\x21\xb8\xe5\xf6\x8a\x5d\xec\x7b\x38\x28\xd4\xdb\x06\x6a\xd3\x46\x97\x9a\x2d\x23\x08\x5d\x37\x2a\xe3\x72\xc9\x29\x76\x71\xd4\x62\x7e\x50\x09\xaa\xd8\x6a\x34\xda\xb7\xe9\x4b\x90\x11\xfe\xb1\xbe\xf4\x3c\xca\x39\x06\x92\x40\x4a\x5e\xf5\xa5\x1b\x3d\x26\xbf\xa6\x2f\x5d\x7e\x3b\x6e\x0c\xce\x7d\xcf\xc0\xbc\x2c\x30\x3e\x5d\x5f\x7b\x2c\x0a\x2f\xf7\xeb\x5b\x32\x44\x25\xdc\x3b\xc1\x03\x36\xfc\xda\xb2\x4a\x42\xeb\xa4\x1b\xad\xc9\x7e\x36\x1f\xef\x90\xe9\xcf\xba\xee\xb4\x05\x00\x9f\x17\xa9\xec\xc7\x43\xac\xbd\x2d\xcf\x77\x3b\xf3\xe2\xa6\x2b\x06\xeb\x7e\x71\xb4\x86\xd3\x5e\x85\x03\xe9\x9c\x4e\x81\x83\x54\x62\xa3\xcd\xa5\x34\xe8\xe3\x72\x1c\xfe\x78\x03\xb3\xf4\xaf\xdc\x5f\x9d\xae\x2a\x37\xe6\x38\x5c\xdf\xfd\x8d\x6b\xe8\x21\xfa\x57\xf3\x3e\xf9\x77\xea\x5f\x55\x98\x45\xa3\x74\xd6\x08\x8b\xca\x34\x8e\xf3\xdd\x40\x55\x3d\x22\xeb\xa1\xa5\x87\xcd\x7c\xe4\x58\x69\x14\xf7\x1a\xad\xd6\xb6\x9f\xcd\x90\xb9\xac\xa6\x04\xf1\x9d\xec\x75\xfb\x1a\x26\x47\xf7\x68\xe8\xfa\xa9\xdb\x1b\xaf\x76\x2d\x10\x36\xbc\x42\xd8\x3b\xac\x1b\x31\x7c\xd0\xa1\x43\x15\x73\xca\x52\x48\xa1\x54\xfa\x87\x61\x99\x09\x8e\x10\x20\x28\x81\x48\xe9\x98\x27\x31\x00\x44\xe1\x24\x95\x0c\xc6\x69\xc2\x50\x42\x65\x26\x44\x2c\x18\xcf\xc4\x0f\xdd\xec\x09\xa8\xe8\x51\x40\xfd\x2a\xdb\x41\x22\x00\xc1\x87\x95\x6e\x5e\x46\x9f\x80\x2a\x29\x02\xf7\x03\xf5\x93\xa4\xb1\xab\xc3\xb0\x77\x6c\xa8\x57\x4a\x7e\xd2\x46\x30\x78\xfe\xbc\x69\x54\xb7\xf1\x90\xfa\x07\xa5\x9d\x64\x63\x0c\x2d\x3a\x1b\xcf\x36\x5e\x67\xb6\x6b\x36\x74\x37\xc8\x59\x39\xa7\xbf\x98\x34\x8c\x34\xe8\x07\xcd\x5c\xa3\x51\x68\x2e\xda\xc3\xa6\x75\xdc\x0e\xf7\xdb\xc1\x74\xb7\xb5\xf7\x7c\xbc\x3f\xcc\x72\x06\x2b\x80\x1a\x51\x31\x5c\xa3\xe5\xa9\x66\xf4\x7f\x49\x1b\x7b\xdb\x77\xcb\xf8\xce\xdc\x5e\x3d\xeb\x6f\x9f\xbb\xcf\x0d\xe8\xd2\xeb\xdf\x7f\xf0\x33\xbc\xbc\x03\xb3\xf4\xfd\x39\x7f\x6d\xcf\x7a\x79\x9b\x5f\xb5\x6e\x7e\x6f\x0e\x5f\x35\xd4\x3b\x81\x7a\x29\x18\x76\x91\xfe\x8d\xa4\xb1\xdf\xb5\x01\x1e\x71\xf2\x88\x27\x09\x97\x19\x93\x54\x2a\xa0\x85\x96\x09\x4e\x31\xcc\x98\x92\x18\x88\x54\xa4\x40\x90\x54\x2a\xc6\x09\x52\x59\x4c\x99\x8a\x81\x24\x2a\x8b\x99\x8e\xb5\x94\x04\x3d\x03\x15\x3f\x0a\xa8\x5f\xe5\x5c\x48\x84\x80\xf8\x30\x0b\xf7\x65\xf4\x02\x54\x84\x19\x64\xf7\x03\xf5\x93\xe6\x7d\x97\xfe\x97\xdf\xf2\xe8\x5d\x2d\x98\xf5\xc6\xbc\x54\x6b\xbc\x36\x11\xdf\x5e\x57\x40\x5d\x9d\x16\xd2\x39\x1c\x96\x93\xdc\x71\x7e\x5c\xf7\x27\xf6\x28\x9c\xca\xdc\x6a\x5d\xd6\x5e\x88\xdc\x75\x33\xe6\xad\xfa\x11\x1b\xa7\x62\x7d\x4b\x22\xda\x13\x25\xeb\x40\x91\x2f\x04\xed\xfb\xae\xdf\xad\x6d\x0a\x0d\xb0\x67\xc7\x81\xc0\x29\xcb\xcd\xd9\x78\x64\xe5\xbb\xdb\x7f\x1e\xa8\xa5\x7f\x64\xee\x7e\x2f\x50\xff\x99\x67\x78\x79\x07\x0f\x07\xea\x4f\x30\xfb\x87\x80\x5a\x6d\xbf\x7c\xd3\x77\x5a\x3c\xfc\xae\x0d\xf0\x88\x7c\x13\x29\x04\x21\x4a\x24\x84\xa3\x34\x8e\x95\xa2\x09\x87\x9c\x49\x1a\xff\x40\x37\x8b\x15\x97\x32\x86\x38\x4b\x90\xca\x08\xa4\x28\x85\x52\x23\x08\x79\xac\xa1\xa2\x4c\x9d\x81\x2a\x1f\x18\x23\xfe\x5a\x43\xe5\xe2\xe3\x5a\x8c\x2f\xa3\x02\x32\x40\xb0\x40\xfc\x55\x43\xfd\x7e\x8c\xf8\x13\x0d\xf5\xb2\xa1\x1e\x63\xc2\xff\x73\x21\x86\xf4\xd4\x7d\x72\x6c\xbe\xd5\x50\xae\x62\xd4\xb5\xb5\xdc\x79\x3d\x0a\xc5\x3c\x6a\xd7\x16\x58\xb4\xe2\xf1\x7c\xd7\xcd\xe7\x6d\xbb\x95\xac\xf3\x72\xde\x18\xc1\xc0\x18\x1e\x68\x61\x62\xe5\x53\xde\x4f\xba\x71\xec\x79\xe5\x43\xc5\x0f\xb8\xae\x79\x75\xb6\x32\x73\xb3\x8d\xbb\xd4\x9a\x74\xb7\xab\x56\xb9\x6f\x90\x31\xda\xaf\x7f\x05\xda\xd6\x9b\xf9\xfd\x9e\x89\x7f\xf5\xd5\xaf\xcf\xeb\x74\xda\xe0\x69\xe0\x56\x20\xd9\xdb\xf8\x78\x4f\x48\xe7\xfc\x6f\x1d\xa7\xd3\x29\x7d\x4f\xfe\x9b\x5a\x77\xd7\x7f\xdf\x98\x44\x79\xc7\x0f\xc0\x6b\xdd\x39\xe3\xad\x7f\xf9\xba\xd4\xed\xfe\xdf\x83\xff\xcb\xbb\x37\x6b\xff\x9e\xfc\xb7\xee\xad\x3f\x32\x7c\x58\xfb\x57\xee\xef\xbc\x17\xbf\xba\xbf\xfd\x9f\xeb\x7e\x7b\x77\xfe\xfe\x34\xf7\xe5\xfe\xbf\x68\x7d\xd7\xfe\x88\xfb\x7d\xf3\xdb\xf8\xfe\xfd\x3e\x64\x7e\xff\x69\x65\xfc\xde\xf9\x7d\xcc\xfd\x9e\xf7\xd7\x27\xf7\xfb\x8e\x7b\xfb\xd1\xf9\x4d\x3f\xcf\xd1\xe7\xee\xed\xd6\x7d\xf2\x7f\xf2\xc6\xfc\xa2\xfc\x27\xe3\xe1\x78\x42\x02\xce\x66\xe1\x71\x30\xf0\x8f\xb3\xec\xe0\x2d\x9b\x43\x99\xe4\x45\xcd\xf3\xb6\xa7\x3c\xea\xe7\x1a\x9d\x82\x55\x2d\x8e\x9b\xed\xaa\xc4\x5b\x73\xd3\x5b\xcc\x01\x98\x15\x16\x66\x71\x43\xf6\x80\x2f\xd7\x45\xa6\x41\xbc\xa0\x7c\x10\xb3\x4d\x6d\x6a\xd8\xc3\x56\xf2\xa0\x04\xd3\x0c\x88\x54\xc1\x4c\x2b\x48\x41\x86\x38\xa3\x0c\x09\xc6\x94\x26\x19\x45\x1c\x65\x8c\x0a\x95\x81\x24\x95\x59\x2a\x14\x4c\x25\x8b\x11\x52\x50\xb2\x44\x23\x0d\x13\x74\x4e\x30\x45\xe0\x81\xc6\xc3\x97\xde\x18\x02\x05\xfb\xd8\x1b\xf3\x3c\x2a\xa8\x90\x12\x53\x00\x5e\xbd\x31\xdf\x37\x1e\x3e\xf1\xc6\x5c\x29\x14\x57\xca\xe5\x3f\xa7\xcc\xbd\x8d\x1f\x5e\xc4\xbf\x2c\xde\x82\x99\xe3\xa3\x83\x5e\x9b\x95\xca\xca\xc1\x04\xcf\x67\xc7\xa3\x1a\x2d\xd0\x66\xe8\x57\x7b\x43\xb7\x88\x0a\xad\x49\x4e\x66\xdb\xfa\x72\xbe\xd9\xe9\x08\xad\x4a\xfd\xdd\x46\xce\xfa\x39\xbf\x8c\x62\xbb\x81\x73\x8d\x99\xbd\x8e\x0a\xb1\xec\xb5\x63\x23\xd7\x9b\x69\x34\x2b\xb9\xfd\xc2\x6d\x06\xc0\x65\xdb\xfc\x2b\x0a\xf7\xd5\x3b\xf9\x33\xde\xd1\xbb\x0a\xf7\xa5\x7a\xe3\xfe\x5f\x56\x78\xcf\x3f\x30\xfe\xf7\xe5\xcf\x73\xd3\xa7\x16\x79\x37\xbb\xcf\xdf\x95\x7f\xab\x42\x36\x18\x1c\xdc\x7b\xe4\xef\xff\x70\x85\xfa\x75\x7e\xfe\xf1\xfb\x3b\x2b\x28\xbf\xa4\xb0\xfe\x37\x14\x94\xf3\xd5\x37\xee\x73\x4e\xf4\xdf\xed\x53\xf3\x2f\x29\x1a\x2f\xff\xaa\x7d\x9f\xfc\x9f\xbc\xa4\xb7\x29\x3a\xd9\x96\x88\x70\x65\x34\x87\xcb\x43\x9a\xf3\x58\x59\xac\x67\x25\x96\xae\xa2\xb1\x85\xa2\xc1\x40\x0e\x0a\x34\xdb\x85\x7c\xb4\x5c\x56\x13\x3c\xf5\x96\xc7\x52\x95\x67\x3d\xd2\x18\x5b\xe9\xb4\x7f\x92\xf9\x11\xdd\x73\xd7\x74\x77\xdd\x8e\xdb\x6f\x4c\x7b\x78\xb3\x38\x9a\xf3\x07\x25\x46\xa1\x98\x49\xc1\x63\x26\x31\xd0\x71\xc2\x35\x4e\xb4\x8a\x55\x26\x13\xce\x74\xca\x63\xc0\x04\x40\x8c\x09\x05\x33\xa8\x13\x90\x09\x94\x51\xc6\x21\x80\x24\x21\x09\xc3\xec\xac\xe8\xdc\xdf\xa7\xe6\xdc\xea\xe6\x53\xfd\x86\x22\x22\x3f\xce\x87\x7a\x1e\x95\x00\x4a\x82\x21\xc7\xf0\x01\xc5\x0a\xde\x36\x55\xf9\xe9\x9d\x87\x95\x9c\x03\xcb\xf5\xb5\x20\xbe\x67\x0f\x66\xd3\xd2\x68\x54\x69\xdb\x7e\x6e\x5a\xd8\x6d\x75\x6f\x6f\x57\xf3\x1b\xab\x13\x84\xce\x68\x76\x29\xa3\xff\x49\xf5\xe0\x6c\xd1\xd6\xeb\x84\x8c\xfd\x7c\x90\x99\x07\xd8\x3e\x2c\xbd\xfa\xa6\x87\x72\x24\x20\x4d\x10\x1e\x4e\xfd\x7e\x23\x80\x16\x8e\x8e\x83\x9e\xb1\xca\x57\x44\xe5\xd8\xb3\xfa\x44\x8f\xec\x96\x33\x1b\x6c\xe5\xd2\x18\x10\xb7\xda\xab\x8e\x13\x73\x15\xbb\x33\xd5\x92\xb6\x8a\x1e\xdb\xd3\xc1\xbc\xda\x42\xce\x71\x37\x48\x9b\xad\x55\xa3\x5e\xb0\x7d\xd2\xa3\xc3\x12\x39\x4e\x0c\xd0\x58\x0c\xaa\x7c\x36\x55\xc6\x31\xcf\xfd\x49\xbb\x73\x88\xe8\x25\xa9\xf1\xf5\x54\x5e\xe7\x5d\xc9\x1f\xcc\xef\xdf\xee\xf7\x5a\xfe\x8d\xa7\xf2\xa6\x83\xf1\xae\x09\x5f\xff\xf9\xfb\xa1\xb3\xef\xe4\x84\xdf\x78\x2a\x6f\x71\xd8\xd4\x4f\xc6\x37\x4f\xe5\x19\xcf\xef\xa4\x73\x97\xfc\x63\xee\xaa\x0c\xf3\xfa\x06\xf9\x4f\x2c\xc3\xac\x53\x5c\xb9\xb9\x72\xa1\x01\xc2\xbd\x4a\x3b\xb5\x78\xd4\x5a\x75\xd3\xdd\xb6\xa0\x0b\x1b\x47\x28\x52\xb2\x41\xea\x6f\x50\x6d\xde\xf5\x2b\xf9\xe3\xce\x5a\x4f\xfd\x79\xbd\x38\xdf\x83\x43\x8f\x24\xbb\xb8\x5f\xd2\xe6\x10\x35\xa9\xbb\x8f\xd1\x60\x81\x0b\x79\x1f\xbb\x0f\xea\xe9\x20\x19\x81\x34\x56\x30\x45\x19\x97\x0c\xc1\x04\xb1\x04\x52\x26\x32\xc9\x70\x96\x8a\x34\x65\x8a\x02\x85\xc0\x0f\x63\x8d\x13\x24\x94\xce\x92\x4c\xcb\x54\x6b\xc1\x38\x15\xe2\x89\x65\x77\x16\x2b\x38\xf7\xba\xf9\x9c\x65\x5c\xb2\x0f\x32\xc1\xaf\x46\x2f\x2c\x43\x90\x80\x07\x54\x2b\x78\x1b\xda\xfb\x69\xad\xa7\x7e\x30\xd4\x63\x63\xde\x19\x27\xcb\xb0\x1c\xe3\x43\xa9\x14\xce\x2c\xd5\xab\x1a\xf6\x38\xa7\x3a\xd9\xb4\xb7\x96\xcd\x6a\xb1\x6b\x77\xbf\x3a\x61\x6c\xa7\x65\x37\xdd\xa5\x3d\xd4\x24\xfe\x3c\x4c\xeb\xb9\x7a\xba\x11\xbd\x20\xd5\x9d\x2d\x9f\x9a\xbb\x25\x77\x36\x0d\x39\x1f\x2f\x57\x52\x2c\x5c\x3b\x3f\x6a\x1a\xab\x78\x3c\xf1\x77\x71\x30\xb5\x8e\x35\xa3\x5a\xaa\xd9\x68\xec\x8a\x00\x55\x46\x83\xca\xee\xc8\xe7\xa5\x2a\x2b\x3d\xb6\xa9\xc3\x35\x4b\x8a\xed\x42\x34\x5b\x18\x15\xa7\xe7\xb2\xc9\xb1\xbb\x11\x4d\xcb\xa1\xfb\x99\xdb\xdc\x1b\xb4\x31\x73\x42\x3a\x4d\x1a\xed\xe1\x01\xf6\xe1\xa5\xfe\xed\xbf\xcc\xb2\x89\x68\x8f\x7a\xf7\xb2\xec\x35\x7a\x7c\x27\x4b\xe4\xd5\xec\x7f\xd0\xa4\xe6\x53\x96\x34\x83\x59\x82\xbb\xe9\x78\x5b\xa8\x38\xb8\xb5\x1b\xcd\x92\xcc\x6d\x87\xe1\x24\xd9\xd2\x7e\xc2\xb6\x87\xa4\x95\x8f\xcb\x95\x65\x3e\xab\x04\xfd\x3c\x01\xfd\x0a\x5a\x94\xdb\x55\x34\xee\xf5\xd7\x23\xc3\x3a\xda\x86\x5c\x98\xbb\x42\x3a\x9c\x93\xe6\x4a\x6c\x99\x65\xe5\x86\x8f\x6a\xaa\xa0\x01\xd5\x24\x49\x25\x63\x29\x15\x4c\x48\x0d\x13\x96\xc5\x1a\x40\xac\x69\x1c\x73\x9e\xa4\x9a\x32\xcd\x62\x95\xa2\x34\x91\x89\x64\x82\x03\x4d\x35\x27\x2c\x26\x71\xc2\x7f\xb0\xe4\xb9\xe9\x95\x59\xaf\x70\xb3\xde\x6e\xd6\xbb\x8d\xa2\x69\x78\x66\x54\x63\xb5\x52\x10\xf5\xca\x25\xbb\xd4\x68\x47\xe5\x46\x58\x6c\x15\x0d\xdb\xe1\xb4\x5d\xe8\x94\x3a\x51\xb7\x58\xac\x7b\xbe\xf5\xaa\xcf\x60\x04\xbf\x4c\x18\x67\x5c\xe2\x0f\x3b\x6a\xbf\x8c\x4a\x42\x84\x44\x82\xb0\x57\xa8\xdc\xf8\x63\x7e\x71\x00\xb5\xdf\x5b\x64\x9f\x9c\x30\x36\xa1\xe9\x96\x99\x6f\x0d\xba\xc1\x76\xa1\x26\xab\xac\xd0\x1f\x68\x55\x3e\x8c\xd7\x46\xbd\x45\x0f\x9d\x5c\x6f\x7a\x82\xa5\x75\x1a\x79\xd1\xbb\x07\xec\x0a\x2f\xf2\x7d\xbb\x66\x75\x33\x0b\x68\xd7\x2b\x6f\xa3\x52\x88\xd7\xd4\x68\x7b\x55\xbd\x9a\x2d\x54\xb1\x35\x13\x75\x76\xec\x2f\xf3\xde\x1e\x37\xe9\x6e\x76\xcc\x77\x09\xaa\x53\x97\xb8\xac\xbd\x1e\x0e\x3a\x6d\x78\x48\x69\x12\x90\xe1\x14\xe5\x3a\x27\x7f\xe2\x47\xfe\x40\x83\xd1\x60\xdf\x7f\xf0\x01\xbb\xe8\x75\x3e\x6e\x55\x96\xae\x3c\xfc\x37\x42\xf9\x72\xfd\x92\xc1\x7c\xa5\x83\x7c\x43\x99\x7b\x3a\x60\xd7\x79\xfd\xfe\x6f\x1f\xb0\xbb\x06\x90\x5a\x91\xb0\x3d\x66\xa7\xd3\xc0\x00\x75\x57\x47\xc3\x7a\x6d\xe1\x7b\x36\x8b\x9a\x39\x4a\x67\x46\x6d\x97\x03\xe5\x8e\xa3\xba\xf5\xf4\x4d\x83\x2c\xe7\xb3\x62\x0f\x9f\x2b\x53\xdd\xfb\xe4\x5f\x3c\xf0\xce\xfb\x73\xf0\x89\xfc\xe7\x72\x2d\xfb\x72\x4f\x54\x03\x12\x81\x29\xed\x0f\x32\x7d\x1a\x9b\x3e\xd8\xb0\xad\x9e\xec\xd3\x7a\xb6\xe7\xab\x8a\xb5\x12\xd8\x4e\xab\xd3\x5c\x56\x95\xc9\x28\xe2\xe3\xa4\x9f\x2c\x9a\xc7\x8a\xd3\x69\x85\x0e\x9e\x6c\x8a\xc3\x4a\x92\xd0\xd0\xb3\x3a\xe6\xc0\x72\x78\xb3\x5e\x7c\x50\xb1\xe0\x54\x24\x88\x02\x01\x11\x66\x94\x25\x30\xcd\xa0\xd6\x90\x2b\xc4\x19\x17\x48\x26\x0a\xa1\x38\x21\x50\x52\x19\xa7\x88\x6a\xa6\x94\xa2\x08\x68\x41\x24\x85\x2c\x4b\xce\x0d\x4c\x11\x7e\x20\x00\xbf\x4c\x9f\xe1\x14\xd0\x0f\x6a\x05\x5f\x8d\x4a\xc1\x05\x41\x14\x4a\x40\xee\x07\xe0\xcd\x09\xde\xb7\x6e\x68\x2b\xb7\xb3\xae\x16\xeb\x07\xf9\x88\xcf\x16\xa6\x69\xb4\x02\x22\x0e\xd1\xb0\x92\x6c\x85\x51\x9f\x87\xce\x7e\xa7\x76\xa5\x6a\x0f\xe4\x17\xfe\x38\x73\xb7\xfb\xbd\x31\x2f\xf5\x3c\x9d\xad\xf8\x31\x2d\xed\x27\x6a\x5b\x25\x24\x6c\xd4\xf8\xa2\x9c\x67\x23\xbb\x99\x2c\xcd\x6d\xda\xf2\xba\x69\x01\x95\x83\xd1\x76\xc9\x8b\x25\x5e\xfa\xc9\x3b\x7b\x4b\x3e\xe2\xad\x70\xf9\x07\xe7\xee\x73\x80\xab\xd7\xbf\xff\xe0\x67\x78\x79\x07\xa6\xfa\xfe\x9c\xff\x00\xfa\xa5\x82\xdd\x05\xc6\x57\x1e\xc0\xab\xeb\x57\x81\xfe\x68\xa0\xde\xea\xe9\x0b\xef\x93\x7f\xf1\x34\x5e\xe4\x7f\x23\xa4\xf9\xbb\x36\xe0\x23\xda\xb8\x42\x4c\x58\xaa\xa1\x8a\x31\x50\x1a\x60\x48\x64\x2a\x33\x4a\x24\xa1\x92\xb2\x18\xa1\x4c\xaa\x44\xa7\x38\x15\x30\x13\x50\x31\x94\x24\x54\xaa\x4c\xa8\x34\x15\x89\x90\xf8\x07\xd0\x9f\x7b\xfb\x98\xc8\x2f\x45\x2d\x54\x32\xda\x4e\x2d\x08\x2b\xd5\x66\xb5\xda\x08\x0a\x96\xc5\xea\x56\xdd\x2d\xd7\x0c\xbb\xd9\x68\x05\x15\xde\x72\xbd\x16\x6a\x3a\x01\x8a\xdc\xae\x6d\x04\xf6\x6d\x1a\xad\x80\x1f\xeb\xb3\x97\x31\x08\x30\xe0\x12\x41\x89\xc0\x4b\x32\xe4\x8d\xf6\xdc\xaf\xa9\xb3\x17\x9f\xef\xb7\xd4\xd9\xab\xd5\x52\xd0\xee\xe8\x6a\xa5\xbe\xbf\x9b\x93\xe7\xdd\x6f\x1a\xa0\x9a\x63\xd2\x86\x83\xc3\xe2\xb8\x31\xc6\x21\x53\xbb\xc6\xd0\xdc\xd6\x05\x58\x4e\x44\xd3\xaf\xf4\x20\x6d\xd4\x3b\x87\x83\xdc\x47\x13\x36\xed\xad\xaa\x39\xd6\xee\xba\x71\x92\xcf\xb1\x59\x1f\xd5\x72\x31\x92\x05\x5e\xf7\x72\xe1\x9a\xb0\x48\xd6\xbc\x65\x6b\x20\xcf\xc7\xbf\x6e\xa3\xf9\xe5\x91\x6f\xf4\x75\x5e\xae\x2b\x93\xf0\x95\x64\x57\x89\x8a\xb7\xda\xde\xc6\x6e\xb5\xbf\x8e\x5b\xde\xfc\xef\x5f\x1e\xf2\xee\x77\x79\xae\xd7\xfc\xc9\xbb\x7c\xe7\xd7\xe5\x15\xa9\x97\x0a\x61\xd6\x9f\xfe\x0c\x2f\xef\xf0\x5f\xfa\x75\x79\x79\xd4\xab\x8a\x6a\x37\xcb\x1f\xf7\xfb\xa5\xd6\x5b\xf9\xb7\xc6\x5f\xaf\xe4\xdf\xec\x2f\xca\xe3\x45\xef\x7b\xe6\xd2\xf9\xda\xff\x17\xcc\xc9\xfe\xbf\x72\x7f\x67\xa6\xfc\x52\xfc\xf5\x3f\xa4\xcd\x5d\xed\x8f\xef\x31\xf7\xdd\xf8\xeb\xb5\x99\x7d\x23\x2b\x1e\x62\x66\x47\xf7\xc9\xbf\xd3\xcc\xfe\x5d\x3f\xa4\x0f\xd0\xca\x28\x60\x54\xa5\x5c\x49\xae\xb2\x84\x65\x49\xc6\xd3\x58\x10\x89\x13\xad\x53\xc2\x75\x8a\x14\xd7\x59\x82\x13\x00\x12\xce\x63\xa2\x24\x62\x12\xe9\x94\x08\x9e\x25\x82\xc5\xe7\x3a\x36\xf4\xfe\xf8\x2b\xfe\x4a\x19\x93\x80\xb2\x8f\x0b\x18\x3e\x8f\x42\xc0\x31\x27\x50\x30\x22\xd9\xfd\x41\x8b\xb7\xad\x46\x7f\xda\x30\x99\x9b\x6c\xe2\xb8\x2b\x66\x85\x6c\xec\xd2\x46\x03\x5a\x19\xc9\xa5\xbd\x83\x37\xc2\xb5\xd5\xf1\xb4\x18\x1a\xc3\xfa\xc2\x2e\x6f\x07\x83\xcb\x0f\xee\x27\xd5\xe2\x37\x83\x7d\x0b\x97\xad\x3e\x2d\xf5\xc6\x95\xc0\xab\xe0\x45\xd1\x8c\xf3\xda\x15\xa7\xa5\x30\x32\xd9\x77\x1a\xdd\x49\xb4\x2b\xa4\xc1\x9c\x8d\x4e\x06\xb5\x65\x16\xd5\x95\xbd\xa8\xd8\x38\x2d\x18\xdb\x46\xd5\xf3\x8c\xe2\x48\x6e\xbc\xa4\xd7\x2e\x1b\x78\xb5\x3f\x78\x92\x3c\x38\x68\x71\x75\xeb\xc5\xc3\x94\x77\xa7\x93\x5d\xf9\x50\xa4\xe6\xb6\x75\x92\xfe\x2c\xd7\x98\x75\x55\x2b\x92\xa7\x8a\x58\xb3\xa8\x5f\x1a\x2d\xfd\x63\x32\x8f\x2e\x1b\xef\x35\x68\xd1\x7b\x57\xf2\x07\xf3\xfb\xb7\xfb\xbd\x96\x7f\x6b\xd0\x22\x2c\x84\xfd\xed\xab\x36\xf8\x41\x73\xaf\xef\xf8\x0c\x6f\x0c\x5a\x64\x4e\x09\xa5\xdf\x0c\x5a\x18\xcf\xef\xa4\x77\x9f\xfc\xe4\x2a\xea\x0a\x6e\x90\xff\x04\xb3\x24\x52\x05\x79\xf4\xe7\xf5\xa6\xdb\xb3\xc6\xad\xe6\x86\x05\xfb\xee\x0e\x0f\x76\x35\xb6\x33\x8a\xf9\xc8\x6c\xc1\x45\xb7\x7a\x28\xb6\xe3\xfa\x5c\xec\xeb\x7e\x3e\x44\xf6\xcc\x60\xcd\xbe\xc4\x81\x51\x1d\x1d\x4f\x2d\xdf\x24\xf9\xa4\xd5\x45\x1d\xcb\xf7\x98\xa8\xb5\x32\xfd\x20\x98\xc5\x9c\x69\x80\x18\xc8\x58\x22\xb0\x62\x3a\x96\x38\xa3\x84\xa6\x90\xa7\x9a\x23\xa8\x00\x97\xa9\xc2\x50\x0b\xa8\x35\xd5\xa9\x22\x30\x83\x54\x6a\x45\xb3\x84\x08\x42\xce\x26\xe6\x4b\xe3\x0b\xe6\x7a\xb8\x5a\x6e\x77\x59\x39\x0a\x78\xc1\xae\x97\x09\xef\x98\x45\x6e\x13\x5a\x23\xe5\x6e\x31\x74\x2b\xac\x5a\x2c\x07\x46\xa1\x44\xcb\x66\xd3\x43\xb6\xe9\x47\xdc\xbf\x82\x10\x22\xe0\xf3\xb4\x12\xf2\x3f\x00\x20\x80\x1f\xa4\x95\x5c\x8d\x42\x08\x19\x93\x90\x62\x2e\x5f\xf2\x4a\x6e\xdc\x82\x17\x3b\xf3\xbc\x85\x3e\xb1\x33\x7f\xd2\xeb\x45\x6f\x0b\x17\x8b\xe4\xa8\x82\x9c\x9f\x8c\x45\xbe\x5d\xce\x8f\x28\x9c\x15\x50\x43\x1d\x77\xd5\xfa\xb4\x64\x95\xd8\xb8\x36\x65\xee\x75\x6c\xe2\x4d\xa2\xff\x75\x1d\x9f\x97\xfb\xf1\xcd\xe5\xc9\x8a\xec\x6d\x35\x9a\xe5\x47\xe1\x20\x2b\x74\x0e\x05\x77\xd8\xaf\x59\x65\x77\x5e\x37\xad\x8a\x44\x93\x76\x82\xdb\x53\x48\x1b\xfd\x7d\xb3\xcc\xf0\xc6\x9b\xe4\x9c\x45\x51\xe4\x8e\x54\xe5\xa6\xd6\x3a\xbf\x3a\xa9\x5d\x7a\x9c\xcb\x6d\x98\xce\xd3\x94\x54\xc3\xee\xd0\xff\xa5\x30\xca\xfb\x9e\xc2\x5b\x91\x76\xbe\xda\xbf\x6f\xbe\xae\x6e\xfd\x73\x2c\xcf\x5f\xff\xfe\x83\x9f\xe1\xe5\x6f\x73\xfe\xfd\x39\x7f\xb5\xe5\x2e\x08\xbc\xc1\x96\x7a\x07\xe3\xd7\x18\xbd\xf1\x99\x5f\x75\x52\xf7\xfb\x3a\x69\x7c\x9f\xfc\x8b\x4e\xea\x7e\x57\x27\x75\x57\xb5\x72\xbf\x4e\x36\xc3\x2c\xe7\x69\x47\x04\x61\xc1\x8f\x2b\xc6\xbe\x34\x8e\xfb\xa4\x50\x5a\xe1\xb8\x13\xec\xd2\x66\x12\x8e\x73\xb6\x59\x9a\xad\x34\x40\x21\xe9\x8e\xb3\x13\xaf\x4e\x4e\x2c\xaa\x9c\x72\x3b\xef\x28\x71\x65\x84\x68\x8a\x06\x10\xf7\x37\x69\x5c\x7e\x50\xe8\x47\xa2\x98\x51\xa2\x38\x93\x8c\xc5\x8a\xc1\x58\x29\x99\x66\x20\xe1\x34\x93\x50\x25\xa9\xc6\x09\xa5\x50\x49\x2d\x39\x63\x1c\x03\x81\x78\x9c\x11\x94\x42\x8d\x08\x57\xea\x19\xe3\xe8\x61\x18\xff\x3c\xa3\xe6\x07\xa8\x19\x17\x1f\x38\x0b\xaf\x46\x9f\x31\xce\x85\x10\xf7\x63\xfc\x93\xe0\xcf\xd5\x7b\xbf\x32\x17\x6f\xd4\x56\x7f\x11\xe3\x49\x41\xb6\xf8\xdc\xac\xcc\x3d\x90\x6f\x62\xa3\xc3\xdd\x79\x33\xd0\xb9\x43\x8b\xcb\xe6\xa4\xeb\x59\x51\x61\x53\x85\x41\xa3\x70\xa8\x0a\xa7\x3a\xd8\xd3\x82\xbd\x0e\xab\x73\x63\x57\x32\x13\x73\x57\x2c\xad\xa4\x57\x51\x8d\x4d\xd7\x3e\x0e\x54\x71\x52\xda\xc6\xbd\x4a\xa9\x2f\xfe\x61\x8c\x47\xbf\x6f\xbe\xfe\x31\x8c\xff\x33\xcf\xf0\xf2\xf7\xc3\x31\xfe\xed\x02\x14\x77\x62\xf4\x12\x70\x71\xfd\x77\xef\xc1\x78\xf7\xf9\xcf\xd7\x13\x46\x9d\x75\x0b\x36\xb6\xfd\xc2\xb2\x8f\x5b\xb2\xaa\xcc\x70\x1d\x0f\xca\x0e\xe7\x4e\x63\x07\x2b\x9d\x08\x94\xfb\x4d\xb0\xeb\x14\x44\xab\xb0\xdb\xb7\xb7\x45\x7b\xec\xd7\x0f\x6a\xdb\xb7\x44\xdf\x59\xbb\x42\x0d\x77\x00\x2c\xf6\x39\x18\x35\x2a\xce\x5e\xb7\x87\x74\x31\x9e\x0f\xed\xc7\x9c\x21\xe3\x00\x64\x31\x21\x49\x42\x80\x66\x71\x8a\x14\x15\x42\x30\xca\x54\x8a\x34\x4f\x44\x2a\x58\xaa\x71\x8a\x29\xe5\x09\xa3\x38\xd6\x4c\x70\x42\x18\x83\x9c\xa6\x8c\x48\x74\x4e\x21\xe2\xf7\x9b\xf6\xe4\x2b\x78\x42\x4a\xd0\xc7\x4d\x76\x9f\x47\x9f\x4a\xdd\x22\x08\xc4\x03\xf2\x11\xeb\x5f\x2d\xb6\xb1\x53\x75\xad\xd1\xba\x41\x4b\xf9\x61\x07\x1e\xeb\xe1\xb2\x6a\x4c\xbd\x21\xd8\xcd\x88\x29\x6b\x87\x00\x75\x28\x5e\x9c\x9e\x0b\xcd\x7e\x6a\xda\x2f\xb1\xdb\xb0\x3b\x3a\x68\x64\xfb\xe5\xa6\x4b\xa8\xdb\xf3\x86\xed\xd4\x97\x23\x56\x90\xde\xfa\x94\x9f\xd4\xa2\xae\xea\xda\x5d\xd7\xea\x19\x76\x73\x5d\x18\x16\xe6\x61\xbc\x82\xc5\xae\x53\x61\xe9\x6a\xb1\x59\xbb\x85\x89\x6c\xb0\x92\xcc\xb8\x85\x5c\xb3\x92\x90\xc8\xaf\x3d\xd6\xb4\xbf\xb2\x08\xbf\x51\x80\xf6\xc9\xb4\x4f\xde\x95\xfc\xc1\xfc\xfe\xed\x7e\xaf\xe5\xdf\x68\xda\x8f\x0f\xa0\x3a\x9b\xbf\xfa\xc7\xed\xfb\x1a\xc1\xdd\x61\x5a\x77\x0e\x0e\xa9\x7e\xd3\xb4\x36\x9e\xdf\x49\x72\x9f\xfc\xca\x15\xc1\xc8\x0d\xf2\x9f\x60\x16\x6f\x0e\xa3\x3d\x0c\xc7\x2d\x2c\x2a\xab\xce\xb6\x1e\x4c\x5b\xd1\xa4\xd8\x6e\x44\xb9\x41\xa3\x95\xd4\xf2\xb4\xe5\x3a\x33\xa7\x0f\x07\xfd\xa9\x6f\x80\x95\x59\x1a\x54\x1c\xb4\x94\x01\x1c\x34\xb7\xb3\x98\x25\x89\x39\x28\x67\xad\xdc\xb0\x11\xe6\xf6\x9b\x41\xbf\x39\xcd\xb9\x85\x07\xf5\xb4\xcc\x34\xe6\x80\x67\x49\x4a\xd5\x0f\x4b\x5d\x52\x45\xa5\xc8\x30\x4c\x15\x87\x52\x31\x88\xa0\x48\x89\xd2\x31\xd1\x22\x4d\xd3\x38\x4d\x18\xc7\x38\x23\x82\x31\x20\x24\x04\xe0\xa9\xde\x36\x7c\x58\xbd\xed\xcf\x3d\x96\xe4\x7f\x00\x11\xcc\x3f\x28\xa7\x73\x35\x7a\xa9\xb7\x0d\x84\xc0\xe2\x01\xf5\xb6\x3f\x31\xed\xaf\x42\xcc\xb7\xd6\x84\xf6\xdf\xfb\xbe\x5f\xba\xae\x7b\x8b\xe7\xdd\x52\xbf\x20\xd7\x51\xc3\xdd\x27\xd6\xb0\x94\x56\xd3\xc1\xbc\xb0\x45\xd4\x3a\x9a\xa0\x67\xa8\xe9\xc8\x9f\xcf\xfc\xd2\x66\xcb\x9a\x05\xd0\x8f\x9b\x66\xa7\x95\x9f\x68\x4c\xa9\x91\x4f\xf7\xd0\x6b\xc4\xf3\x30\x92\x8d\xfc\x16\xcc\xb7\xd2\xe6\x03\xda\x49\x60\xa6\x7e\xa5\x1f\xe6\x7f\xb3\x0e\xf7\x27\xf3\xfd\x0e\xb6\xae\xb0\xf1\x9d\xba\xdb\x4f\xa6\xec\x07\xce\xc8\x37\xf3\xf9\xe6\x7a\x44\xdd\xef\x27\x53\xf6\xfd\xa3\xa1\x9f\xc8\x7f\xc2\x56\xe3\x30\x2c\x99\x8d\xc4\xb5\x0f\x6b\x77\x3f\x1f\x16\x9b\x38\x8a\xcd\xea\x66\xeb\xaf\xfb\xa9\xeb\x17\xcb\x73\x50\x29\x03\xab\x9a\x6c\xc7\x03\xaf\xe4\x8e\xfb\x9d\x76\x9e\x86\x9b\x9c\xf6\x1b\x58\x79\xad\x16\x5a\x3a\xa8\xd1\xca\xf3\x4d\xa5\xba\xf3\x73\x44\x77\xba\x32\xc4\x0f\xea\x5f\x89\x09\xd5\x19\xcf\x04\x55\x4c\xc7\x48\x72\x8d\x33\x29\x49\xa6\x75\x86\xb8\x4c\x18\x16\x10\x31\x24\x98\x80\xc9\xb9\xed\x1c\xcc\x18\xa4\x50\xd0\x98\x60\x26\x34\x39\x5b\x8d\xe8\xb9\x4c\xed\x43\xb0\xf5\xa5\x36\x86\x7e\x98\xa8\x1f\x63\xeb\x69\xf4\x09\x5b\x12\x11\x01\xee\xc7\xd6\x27\xa6\xec\x27\x6d\x02\x3e\xf3\xbc\xbc\xf9\xbe\x57\x0c\xd9\xd1\x61\x89\x4f\x8b\xd8\x29\x59\xa8\xac\xb6\xe5\x76\xb2\xf2\x71\xcd\x09\x4f\xcb\xdd\x36\x47\x5d\x1e\xb6\x87\xc4\x9b\x15\x27\x59\x52\xdd\x6e\x66\x9c\x1d\x27\xbe\x1a\x6d\xf7\xd5\x7e\xd2\x76\xd1\x64\xa9\xfc\x6c\xc2\x69\x3a\x6f\xb4\x7b\xc7\xed\xaa\xb2\x71\x1a\x70\x35\xae\xd5\xff\x9f\xc5\x90\xff\xf6\x7d\xbc\x5e\x8f\x2f\xff\xff\x64\x8a\xbd\x7f\x42\xfe\xed\x7c\x5e\x4f\xe7\x05\x03\xa8\x16\x6f\x04\xeb\x0e\x9a\xc6\x66\x18\x56\x87\x1d\x97\x01\xef\x64\x76\x04\x5b\xf1\xdd\x36\xd8\x42\x58\xda\xda\xbd\x03\x0d\xd1\x91\xaf\x7a\xb9\xdc\x7a\xd1\x2e\x96\xf8\xda\x22\x2e\x34\x37\x8b\x78\x56\x28\x52\x9d\x0b\x63\x1b\xba\x6a\xb5\x3c\xae\x82\x96\x8c\xa9\x6d\x3f\x06\x03\x28\x86\x84\x63\x9a\xf2\x04\x50\x08\x24\xa6\x92\x10\x12\xab\x34\x15\x5c\xf3\x4c\x4b\xa4\xa4\xd0\x12\x49\x9a\xa2\x24\x66\x30\x01\x54\x23\x9a\xc2\x8c\x6b\x0d\x41\x96\xe2\x27\x0c\xe0\x87\x61\x80\x7e\x89\x01\x49\xf8\xc7\x1e\xad\xe7\xd1\x67\x0c\x30\xca\xd9\xfd\x18\xf8\xa4\xa0\xc7\x27\x18\xf8\xa0\xe1\xf1\x3b\xd7\xb5\x36\x52\xd9\xfa\x50\x1f\x6a\x5b\x31\x48\x33\x91\xd6\x1b\xba\x5d\x0d\x91\xed\xf2\x1f\x2b\xa4\xdb\x2d\xb5\x9d\x62\x58\xae\x75\x5d\x57\x56\xa6\x9d\x95\x3f\xef\xd9\x1b\xd4\x64\x71\x1e\x6e\xa3\x42\xa7\x3c\xdb\xed\xa2\x7c\x61\x5e\xae\xd1\x60\xd1\x19\x0d\x50\xcf\x5a\x63\xd0\x89\x7e\xa5\xa5\xed\x7f\x13\x03\xfb\xb7\xef\xe3\xf5\x7a\x3c\x06\x2e\x87\xdd\x2f\x18\xf8\x46\x49\x50\x6b\x35\xf6\xc2\x75\xab\xba\x2b\x85\x61\xbe\xd8\x1a\xe1\x89\x05\x65\xff\xb0\xdd\x23\xa5\x3b\x93\xa1\x63\x06\xf0\xd8\x72\x06\x83\x5d\x73\x31\x89\x41\xc5\xf5\x79\x3a\xde\x4e\x77\x32\x99\x9a\x4e\xb3\xc7\x39\x6a\x1c\x2a\x56\xab\xde\x8e\x3b\x11\x49\xa7\xfe\xca\x93\x4e\xf7\x41\x29\xb0\x24\x93\x54\x0a\x04\x58\x9c\x40\xae\x32\xc4\x13\xaa\xb0\x4e\xa4\x96\x80\xa5\x0c\xeb\x44\x6b\xc4\x10\x63\x94\x40\x88\x74\x9c\xa4\x29\x4a\x94\xe6\x49\x06\x91\x52\x2a\x7b\xd6\x06\xc8\xc3\x30\xc0\xbe\x6c\x1a\x84\x08\xfe\xa4\x69\xd0\xd3\xe8\x73\xd3\x20\xc0\x38\xba\x1f\x03\x6f\x35\xc0\x1b\x9a\x06\x7d\x52\x58\xec\xed\x75\xd5\x24\xc8\x48\x59\xed\x54\xb4\x47\xed\x34\xd8\x14\xe7\xa7\x93\x3d\xb3\xf1\xa8\x6c\xe4\xb6\x81\x6d\xc5\x2b\xdc\xf0\x37\xdb\x62\x9e\xe0\xc5\x2c\xa8\x9f\xc6\xb0\x38\x9e\xef\xca\x0d\x1f\x46\xc7\x93\x5a\xd4\x93\xbc\xa7\xb7\xed\x7c\xb5\xe2\x9d\xd6\xba\x0a\x1a\x65\x2f\x5e\x77\x42\x38\xf9\xc5\x3c\xd7\xff\x32\x0e\xde\x9d\xe7\xc7\xe3\xa0\x7c\x96\xe6\xee\x8d\x8f\x55\xbe\xcf\x70\xf0\xbb\x5e\xee\x23\x7a\x88\x61\x74\x8e\xf0\x0b\x01\x00\xc7\x99\xd0\x59\xc6\x32\x04\x63\xcd\x99\xa6\x50\x21\x45\xb2\x38\xa3\x18\x6b\x4a\x81\x56\x29\x56\x08\x01\x9a\x10\x11\x03\x89\x24\x03\xf1\x13\x0e\xf8\xc3\x70\xf0\x79\x95\x2f\xf2\x3f\x40\x00\x20\x1f\xe3\xe0\x79\xf4\x09\x07\xf0\xc7\x4d\xde\x8f\x83\xe2\x9b\xf7\x7a\x6f\x0f\xb1\xab\xcf\x9b\x62\x96\xce\xaa\x9d\xa1\xd9\xa8\x2c\x1b\x65\x43\x35\xbd\x41\xef\xa4\xd0\xb4\xc8\x33\x9f\x07\x9b\x93\x7b\x74\x0c\x31\x75\xc6\xb5\xd6\xc5\xb7\x7b\x45\xa6\x2b\x7c\x6c\xa2\xcd\x64\xbd\xac\x05\xda\x9f\xc3\xf6\xbc\x8d\xdc\x68\x94\xe0\x01\x45\xfb\x42\x65\x37\x9b\x6f\xad\x66\x9d\x55\xfd\x3a\x3c\x4c\xf3\xc6\x6a\xb0\xf1\xeb\xf9\x75\x48\x97\x98\x36\x37\xc2\x1c\xc5\x51\xb7\x30\x74\x66\x8b\x5c\xd3\x1f\x21\xa7\x67\x09\x59\x5f\xef\xad\x49\xfa\xb7\x34\x4a\xe3\x4f\xc4\xc7\xd5\xf7\x3f\xba\xc7\xd8\xbd\xef\xe6\xfa\xc0\xd8\xc3\x30\xe4\x9c\xbf\xe4\x82\x21\xf5\xc9\x9a\x7a\x7b\x3d\x61\xe8\x77\x2d\x92\x07\x60\x88\xc9\x8c\x91\x58\x83\x4c\x00\x99\x00\x21\x25\x53\x30\xc3\x92\x68\xcd\x25\x05\x00\xc6\x04\x68\xad\x99\x3c\x3b\x55\x69\x9c\x30\x9c\x64\x29\x94\x18\xa5\x38\x8e\xb3\xe4\xac\x95\xc8\x87\xb9\x56\x39\x00\x9f\xb7\xc8\xff\x01\x1a\x26\xa0\xf8\x18\x43\x4f\xa3\x10\x11\x4a\x09\xa0\x94\x3d\xc2\x47\xf1\xd6\x20\xfd\xed\x5a\xc9\x90\xc9\xa5\x5d\x54\x93\x4e\x53\x1a\xc2\x35\xe2\xe5\x71\xcc\xe6\xa5\xc3\xb0\x66\xa1\x4a\x18\x16\x66\xda\x19\x8e\xb2\x43\x91\x76\x8e\x55\xb7\xe4\xf7\x3c\xe3\x50\xaf\x2b\xab\xb1\x28\xc5\x93\x36\x6b\xc0\x45\x14\x84\xb8\x42\xea\x93\x4a\xb1\x47\x06\xa5\xf4\x50\x3e\xd9\xcc\x7c\xb8\x56\x72\x15\xe5\xf8\x0e\x56\x2e\x71\xb8\xe4\x75\x82\xfe\x23\x58\x79\x75\xbd\x3e\x1a\x2b\x57\xbe\xad\x5b\x22\x40\x2f\xf7\x53\xed\x85\x83\x41\x12\x9a\xeb\x5e\x93\x8e\x12\x04\x7e\xdc\xab\x75\x9d\x29\x95\x95\x71\xef\x08\xa3\x7e\xeb\xb8\x1c\x1d\xfd\x62\x61\x14\x75\x15\xf6\x16\x83\x1c\x06\x75\x90\xa8\xc3\x7a\xe0\x37\xca\x83\x9e\x5d\xb8\x84\xf5\xde\x0d\x29\x14\xaf\x96\xcd\x37\x22\xa5\xfd\xb3\xa3\xe7\x7a\x5f\x5d\x65\x31\x45\xbb\x7d\x6a\x49\x2b\x58\xaf\x22\x65\xa7\xbd\xae\xe7\xae\x97\xb1\x97\xb5\x02\x91\x1c\xf7\xeb\xd1\x36\xf1\x83\xa2\x31\x49\x84\x99\x9d\xe7\xeb\xec\x34\xf8\xb9\x25\x68\xc9\x30\xfa\x57\xe7\x27\x8b\xc7\x14\xa9\x4d\xb7\x54\x10\xcb\xb9\x18\x9b\x87\x12\x72\x66\xde\x29\x8e\xb2\x8d\xb4\x37\x2e\xae\x25\xa5\xb6\x7d\x8c\xba\xfe\xa1\xee\xbf\xd9\x0b\x67\x8d\xf6\xff\xfb\x5d\x9b\xf1\x11\x9d\xd0\xb0\x4a\x09\x8f\x31\x84\x1a\x20\x4a\x08\xcb\x38\x52\x14\x10\xc4\x12\x9a\x50\x42\x88\xa6\x88\x41\x82\x61\xa6\x28\x67\x40\x0b\x4d\x39\x61\x5c\x09\xae\x52\x22\x33\xf5\xd7\xff\xfd\x3f\x18\x3c\x12\xdf\x5f\x26\xbd\x52\x29\xc8\x07\xb9\xfc\x57\xa3\x10\x09\x41\x24\x40\x48\x3e\xc2\xb7\x54\x7e\x6f\x19\x5f\xae\x3f\x43\x8b\xe4\xbd\x5a\x65\x29\xc0\x56\xf9\xcd\x4d\x8e\xd2\x65\x8e\x75\xfc\x95\x8b\x8b\xab\x1d\x3b\x15\x37\xf5\xea\x7e\x9c\x19\x87\xc3\xba\x97\x46\x8d\xd2\x76\xcc\x0f\xbd\x75\x3f\x39\x0e\xea\x56\x27\x1c\x0d\x74\xdd\x97\xc7\xbe\xd1\x85\xbb\xcd\x31\x49\x43\x97\x40\xe3\xd0\x74\x82\xcd\x2f\xb6\xf2\xb9\x01\xf7\x57\x41\xe5\xef\xe0\xbe\x78\xe6\xd4\x05\xf7\x6f\x8f\x58\xff\x37\x70\x9f\xbe\x8e\x7f\x07\xf7\x97\xf4\x84\x0b\xee\xfb\xc6\x7f\x06\xf7\x57\x3e\xd6\xef\xe0\x3e\x33\xde\xec\xc3\x3f\x1d\xf7\xbf\x6b\x33\x3e\x22\x94\x20\x65\xaa\x18\xc3\x30\xa5\x82\xc6\x94\xc6\x1a\x33\x80\x32\xc6\x80\x56\x34\xa1\x31\x00\x42\xa4\x88\xc4\x90\x24\x98\x10\xc5\x91\x56\x4a\xa1\x98\xa1\x54\xc6\x42\xe2\x1f\x8a\x31\x86\x8f\xc4\xfd\x97\xc9\xb1\x4c\x02\x40\x3f\xc4\xfd\xf3\x28\xc4\x18\x12\x2c\x25\x40\x8f\xf0\x21\x56\xde\x5b\xc6\x97\xeb\x9f\xc6\xfd\x95\xbc\x2b\xdc\x83\xfd\x6a\xa8\x57\xb3\xe6\x2a\x47\x1b\xc8\xb7\xf4\x7c\x06\xb7\x23\x3a\x5d\xd5\xab\x5e\xab\xbe\x6a\x44\x8d\xc6\x90\xae\x86\xaa\xba\xed\xe7\x67\x2b\x5d\x68\x0f\xd6\xfd\x66\x7e\x8c\x27\x86\x2c\xbb\x8b\x4e\x92\xe6\x36\xb1\xaa\x15\x2a\xd3\xb0\x32\x75\x0e\x45\xab\x50\x1b\x75\x1b\xe6\xc3\x71\x2f\x5e\x87\xbe\x83\xfb\xcb\xb9\xdc\x0b\xee\xfb\xc6\x1f\x88\xfb\xf6\xf5\x54\xbc\x87\x7b\xfd\x3a\xfe\x1d\xdc\x5f\x26\xf0\x82\xfb\xb1\xf1\x9f\xc1\xfd\x95\xaf\xe8\x3b\xb8\x3f\x27\xd7\x5e\xef\xc3\x3f\x1d\xf7\xbf\x6b\x33\x3e\xa2\x0e\x60\x22\xd3\x4b\x40\x08\x66\xb1\xa6\x00\x52\x49\x08\x00\xa9\x92\x00\x2a\x0e\x52\xc2\x89\x90\x31\xe3\x90\xe1\x14\xc5\x98\x64\x32\xc1\x1a\xa3\x58\x22\x18\x53\x90\x9e\xb5\x7b\xf4\x48\xdc\x7f\x99\xf7\xc6\x05\x03\x1f\xfb\x88\x9f\x47\x21\xe6\x04\x0b\x49\x39\x65\xe2\x7e\xdc\x7f\x52\x2a\xf9\x2d\xee\x3f\x28\x9f\xfd\xf9\x75\x1d\x39\x76\x8e\x9b\xf6\x61\x74\xf0\x48\x32\x2b\xd7\x56\x85\xf2\xb8\xb9\x58\xcd\x0a\x4d\x39\x74\x17\xf5\x83\xb1\xf6\xea\x4e\xb4\x6a\x35\xf2\x87\x8d\xdb\x19\xe7\x1b\x3d\x34\x6f\x0d\xda\xdd\x5c\x7e\x50\x0d\x4a\xe3\xdc\x20\x8a\x0a\x7d\x07\x41\x37\xa3\xc2\xcb\xc7\x49\xb9\xe2\x2c\x96\x93\x75\xe9\xa1\xd8\xbe\x76\x35\x7d\x03\xdb\xf8\x52\xde\xf3\x8c\x6d\xfb\xed\xf7\x7f\x2b\x8f\xed\x1f\xc7\x76\xf6\x3a\xfe\x1d\x6c\x5f\x0e\x53\x5c\xb0\x3d\x37\xfe\x40\x6c\x3b\x6f\xd7\xa7\xf1\xc6\x43\xf9\x0d\x6c\x67\x1b\xe3\xcd\x7e\xfa\xc3\xb0\x6d\xbe\xc5\xb6\xa9\x56\x9d\x5a\x24\x5a\xda\xa5\xc7\x56\xe5\x60\xf5\x0a\xcb\x98\x1e\x0a\xbb\x68\xb0\x6c\xad\xfd\xaa\xdd\x1a\x74\x2b\xe0\x94\x17\x49\x30\xe9\x35\x4e\x28\x5d\x16\x48\xc7\xd9\xed\x48\x13\x34\xcb\x8d\x79\xd7\x35\x4b\x66\xba\x09\x66\xb9\xcc\xce\xd0\xf4\xd8\x1c\xc4\xf1\x22\x79\xd0\x11\x36\x96\x60\xa1\xd2\x94\x2a\xc8\xd3\x0c\x01\x88\x53\x1a\x53\x8d\x20\x54\x24\xc1\x08\x41\x91\xb0\x44\x4b\x08\x10\xc5\x90\x25\x30\x8e\x13\x24\x12\x05\x11\x86\x8c\x41\x9a\xd2\x27\x6c\x3f\x28\xef\x8f\x03\xf0\x65\xde\x9f\x40\x0c\x7e\xec\x94\x79\x1e\x7d\xc2\x36\x83\x8c\x3d\x20\x5d\xf9\x93\xaa\xd0\xff\xb4\x96\x7e\x75\x5d\x69\xe9\xf5\x04\x2c\xdd\xee\x6c\x0c\xbb\xab\x66\x3b\x6c\xb2\xa1\xef\xcc\x55\x5c\xaa\x47\x79\xd3\x9e\xf6\x5d\x78\x6a\x4d\x27\x8d\x63\x1f\x24\xf3\xe6\x30\xc5\xa3\x96\x59\xc1\x27\xd9\x16\xb9\x52\xc3\x35\xea\x85\xaa\x57\xed\x8f\xfd\xe2\xa6\xef\x46\x4e\xdf\x71\x6b\xc3\x39\x3c\x44\xb9\x87\xfb\xe0\x1f\x8e\xfb\xab\xb9\x7e\x34\xee\xaf\xae\x77\x42\x74\x57\x6e\x86\x6f\x60\x5b\x5e\xaa\x41\x5f\xb0\xbd\x37\xfe\x70\x6c\x5f\xc2\x82\xbf\x6b\x81\x3d\x02\x61\x29\x17\x19\xe4\x59\x9c\xc5\x08\x43\x9e\xb2\x38\x63\x5c\x6a\xa8\x29\x41\x20\xc3\x14\x22\xc0\xb3\x8c\x41\x95\x66\x19\x82\x8a\x01\xa0\x63\x91\x09\x0a\x29\x4d\xb0\x3e\x17\x60\xc5\xf8\xfe\xe3\x63\x5f\x66\x2a\x0a\xc9\xc1\xc7\x09\xcb\xcf\xa3\x90\x40\x8e\xb1\x44\x44\xbc\x82\xeb\xfb\xc7\xc7\x1a\x6f\xd6\xf2\xcf\xc7\xc7\x96\xad\x94\xf5\x27\x7e\x7a\xda\x08\x8e\x20\x77\x59\x29\x52\xb8\x8f\xcd\xe8\x50\xeb\x77\xdd\xc6\xc2\xce\x82\xc6\xe0\x08\x7b\xc9\xa5\x90\xeb\xc7\xc7\xc7\xac\xdc\xb4\x5f\x29\x9d\x7a\xcb\x6c\xe2\x97\x2a\xa5\x65\x77\x26\xab\x2b\x35\xdc\x1e\x0b\x07\x1e\x36\xb2\xd0\x6d\x0f\x76\x47\x1f\xaf\x4b\xbe\x39\x73\xd3\x7a\x77\x30\xae\x6f\x28\x6f\xb7\xf3\x9c\x56\x37\xed\x23\x59\x69\xd5\xca\x8d\x56\x11\x52\xc5\x4a\x6f\x84\xf1\x62\xbb\xd5\xe2\xb1\xad\x39\xac\x2b\xaf\x69\xb9\x32\xc6\x7a\x5e\x6e\x17\x15\xcf\xea\x72\xa3\x0f\xdb\xa1\x5b\xf4\x88\xb7\xef\xd6\x5a\x25\x67\x30\x62\x3e\x06\x2d\xa2\x36\xdd\xee\x05\x3b\xaf\xc7\xc7\x06\xef\x4a\xfe\x60\x7e\xff\x76\xbf\xd7\xf2\x6f\x3d\x3e\x56\x1b\xe5\xb7\xc3\xab\x43\xc5\xef\x9f\x81\xf8\xc6\x39\x8c\x5b\x8f\x6f\xd5\x52\x8b\xb2\x6f\x1e\xdf\x32\x9e\xdf\xc9\xe0\x3e\xf9\xe4\x6a\x0d\x8a\x1b\xe4\x3f\xe5\x38\xec\x16\x73\x6b\x58\x43\xf1\x8c\xb6\x2d\x6b\x58\x99\x2c\xf2\x4d\x86\x4b\xab\xf5\xa0\xa6\xe1\x09\xc3\xc3\xa4\x94\x88\xb1\xc7\xad\x82\xd1\x3b\xcc\x5a\x93\x79\xcf\x5e\x69\x0d\x9d\x46\x2e\xd7\xe4\x9d\xda\xb6\x82\x67\x85\xfc\x9c\x21\x6f\x66\x1e\xa7\x91\x94\x2c\x59\xcd\x76\x0f\x82\x59\x0c\x68\x1a\xc7\x1a\x61\x90\xc0\x8c\x13\x4c\x38\xd1\x02\xc7\x09\x4b\x89\xf8\xa1\xa2\xc1\x0c\x67\x9c\x33\x06\x63\x9e\x0a\x48\x33\xce\x10\x50\x5a\xa3\x58\x0a\x20\x89\x00\x3f\x60\xf6\x5c\x7c\xd4\x2a\x57\xca\x61\xa3\x62\x3a\xa5\x62\xbd\x8e\x09\xa5\xdd\xb0\xeb\x52\xcb\x36\x7b\xa1\xef\x45\x4e\x10\xb8\x25\x2b\xaa\x35\xda\x3e\xa6\x56\xc3\x27\xdd\x4e\x13\x57\x7a\x55\xf7\x0a\x42\x80\xb3\x2f\x53\xad\xa4\x64\xe8\x63\x33\xfa\x79\x14\x12\x06\x90\x10\x12\xc1\xab\x54\xab\xdb\xb6\xe0\x19\x6b\xd6\xbb\x15\xe1\x3e\x2b\xa8\xff\xeb\xcb\x0b\xbf\x5b\x50\xff\x45\xbe\x6f\x46\xed\x59\x07\x97\x60\x1d\xd3\x82\x71\x8c\x8f\x60\xba\x1e\xf5\x71\xed\xd4\xcb\xe2\x99\xb5\xd9\xc5\x93\x8a\xeb\xe6\x24\x59\x68\x16\x1c\xfa\x85\xfc\xd8\x1a\xa3\x71\xab\x25\x8b\x61\x3f\x1c\x25\xab\x78\x99\xcf\xfb\x79\xb0\x2b\x03\x63\x6e\x19\x61\x53\xb7\xa0\x68\x8f\xfa\xe3\xc7\x16\xd4\xb7\xae\xcc\x96\x5b\x11\x77\x75\x1c\xff\x46\x33\xea\x72\xfd\x4a\x05\x44\xeb\x8a\x1c\xdf\x40\xf0\x53\x41\xfd\xc1\xeb\xf7\x7f\xbb\xaa\xca\x15\x82\xac\xe6\xc2\xc3\x4b\xab\x63\xe2\x3a\x3e\xed\x92\x70\x9d\xcc\x07\x83\x93\xb6\x95\x33\x2a\x1c\xcd\x28\xca\x8d\x3d\x59\xc8\x15\xab\x9d\xc9\xa5\x41\xe2\xeb\x51\xb4\xd2\x67\x67\x7b\x3e\x47\xe0\xf0\x3e\xf9\x97\xa3\x68\xa5\xf7\xe7\xe0\x13\xf9\xcf\xe5\x00\x06\xcd\x34\x54\xa3\x36\xcf\xc6\xbe\x5d\x5e\x55\x9b\xf1\xb1\x6e\xab\x93\x37\x91\x4b\x55\x41\x72\xd9\x9e\x47\x09\xc7\xc3\x09\x5f\x14\x5d\xa3\x95\xf3\x2b\xad\x38\xf0\x1a\x20\xd5\xa6\xf6\xb6\x9b\xe5\x2a\x2f\xed\x7c\x53\xcc\x7c\xab\x5f\x32\xd3\x32\x6d\x84\x87\x66\xdd\x7a\x0c\x02\x89\x46\x84\xa0\x4c\x23\x2d\xd2\x54\x28\x26\x18\xe5\x40\xc9\x8c\x62\x1e\xab\x04\x65\x14\x40\x8a\x63\x29\x04\xce\x44\x0a\xa5\x4c\x58\x46\x38\x80\x3a\x41\x42\x26\x38\x3e\x23\x90\x3e\x10\x81\xfc\xab\x34\x2f\x08\xb8\xfc\xa8\xe7\xda\xd3\xe8\x39\x70\x44\x01\x46\x58\x50\x49\x28\xbb\x1f\x81\x9f\x1c\x45\xbb\x03\x81\x17\xad\xe2\x4d\x53\xd8\x2b\x04\x7a\xdb\xfe\x32\x67\x62\xb0\x48\x93\xd3\xae\xd3\x71\x4f\x32\xa8\xe3\x9c\x5d\xd3\x41\xda\x5d\xaa\x7c\xb8\x4e\x91\x17\xa5\x7d\xe6\x99\x5b\xae\xd7\xbb\x7a\xda\xea\xfa\x78\xb6\x9b\x9b\x85\xf2\x51\xbb\x27\x51\x28\xc8\x53\xe0\x0f\x9b\xc3\xe5\x7c\xb5\x2f\x4e\xa6\x39\xc3\xcd\xf6\xa5\xc7\x21\x70\xff\x5f\x40\x60\xed\xdf\xbb\x3f\xe3\xcd\xfb\x7d\xe3\xa9\x3a\xff\xc7\x2b\x22\x1f\x8d\xa8\x5b\x4b\xd4\x8f\xee\x93\x7f\x39\xa6\x77\x91\xff\x8d\x12\xf5\x88\x59\x2b\x52\xcc\x9a\x13\xb8\xab\xcb\x4e\x3b\x69\xc0\x02\xcf\x48\xed\x40\x1d\x18\x2f\x4e\x52\x1f\x70\x04\x07\xc8\x9e\x03\x97\x6f\xd8\x51\x50\xe8\xf5\x6c\xad\x73\xfd\x82\x3f\x2b\x93\xa4\xb1\xf7\x5b\xd8\x73\xac\x72\xa5\xb2\x1c\xee\x0c\xdd\x4d\x88\xd1\xcb\x3f\x28\xb6\x4e\x88\x4a\x98\x12\x3a\x25\x69\xa2\x15\x25\x28\xce\x60\x1c\xa7\x08\x03\x00\xd3\x54\xa6\x8c\x0b\x95\x41\xa9\x84\x22\x0c\xc6\x8c\x62\xcd\x19\x8a\x39\xa2\x58\xa7\x3a\x3d\x9f\xd6\xc5\xec\x91\x88\xfc\x2a\x95\x0a\x42\x4a\xf1\x87\x45\x06\x5e\x46\x21\x25\x0c\x0a\x81\x18\xa7\xe8\x7e\x44\x7e\x72\x4c\xef\x37\x22\xb2\x9e\xd3\xad\x52\x23\x6c\xf7\xc6\x39\xd7\x58\xf2\x3a\x2b\x8a\x14\xe6\xbb\x2d\x9a\x6c\xe7\x20\x5e\x8c\xaa\x03\xb7\xbf\x31\x75\xf3\x38\xc1\xbc\xdd\xe1\x55\x6b\xd1\xcb\xac\x19\xb3\xa3\x8e\xe2\x13\xbf\xde\xf1\xba\x03\x53\xf1\x8a\x6d\x70\x4f\x0b\x6c\x04\x04\x8e\x23\xe3\x81\x5a\xe2\xfe\xcf\x45\xd0\xcb\xdf\x97\x9c\xab\x3f\xee\xfe\xde\x41\xe4\xbf\x84\xa8\x97\x77\x3a\xbe\x4f\xfe\xe5\x08\x63\xe9\xb3\x80\xe3\x67\x88\xe4\x94\xd6\xfa\x32\x0d\xa6\x2d\x12\x59\xab\x35\x9f\x67\x07\x1c\xca\x5e\x63\xb2\x65\xa3\x60\x39\xad\x6d\x0b\xb1\x05\x1c\x5a\xad\x84\xd9\x26\x08\xd7\xeb\xca\x64\x22\x2a\xd9\xdc\x1b\x74\x4e\xdb\x8e\x41\xdb\x30\x2e\x38\xa7\xf5\xbc\x66\xaf\x21\x3f\x29\xb3\x38\xea\x06\xfd\x07\x69\x91\x14\x61\x21\x62\x29\x34\xd1\x98\x29\xc8\x39\x91\xb1\x24\x98\x13\xc4\x81\x52\x8c\x26\x69\xc2\x11\x87\x2a\xa1\x10\x71\x9e\x01\x49\xe3\x38\x16\x19\x54\xb1\x4c\x31\x42\xe7\x78\x34\x7f\x24\x22\xbf\x4a\x3f\x82\x08\x0a\xfe\xa1\x21\xfd\x32\x0a\xa9\x90\x10\x73\x49\x00\x11\xf7\x23\xf2\x93\x23\x8c\x77\x23\xf2\xed\x72\x7d\x45\x64\x8d\x36\xad\x79\x17\x82\x42\x79\x5e\x31\xcd\xfd\xbe\xb6\x05\x9d\x7d\x2e\xcb\x25\x3e\x70\x47\xbe\x74\xea\x6c\x8f\x27\xd2\xcf\x3b\x25\xb5\x99\x0a\x8e\x88\xd8\xc8\x51\xd8\x4a\x26\x20\x48\x89\xd7\x77\xd5\x7c\x0a\x8e\x73\xf7\xd0\x57\xe5\x61\x21\xd8\xf7\x5c\xb3\x16\xfa\xea\x11\x88\xb4\x5f\x3e\x6f\x5d\x05\x76\xbe\x63\xa8\xce\xce\xff\x35\x78\x7f\x4f\xbd\x9d\xeb\x37\xd7\xfe\xcf\x45\xe0\xf9\xba\x0a\x2c\xdc\xe8\x3f\xfe\xe6\x7a\x7a\x37\x76\xfe\x2f\xa1\xef\xe5\xd9\x27\xf7\xc9\xbf\x1c\x17\xbd\xc8\xf7\x6f\x90\xff\x84\xde\xd3\xa4\x54\x19\x24\xa1\xef\x4f\xfb\xf3\x42\xd1\x36\x8e\x3c\x08\x6d\x9a\xa7\x1b\xdb\x8f\x3d\x1b\xb4\xf9\xca\xd6\x21\xb4\x45\x7b\x70\x44\xc9\x69\x97\x8c\x8e\x18\x79\xa9\xb7\x0d\x03\x07\xf7\x91\xd1\x3b\x0e\x93\x56\xa5\x9f\xb8\xe6\x7e\x5a\x0a\x8a\xe6\x38\x2a\x1c\x52\xf3\x31\xe7\xb4\xe2\x4c\x27\x02\x08\x40\x11\xd2\x49\xcc\xa1\x8a\x31\x12\x08\xd1\x24\x51\x19\xc7\x10\x20\xa9\x53\x95\xc5\x88\x12\x25\x10\x57\x84\x26\x9a\x0a\x90\xc4\x5a\x52\xc5\x11\x3e\x07\x64\xc4\xfd\x01\x99\xaf\xce\x8c\x43\x24\x38\xfe\x30\x92\xfc\x32\x0a\x19\x46\x40\x70\x06\x31\x79\x40\x40\xe6\xed\x2b\xfd\xe9\xa5\x2f\x11\x5b\xb7\xd5\x24\x93\xd4\xc5\x53\xe3\xb4\x9c\x0f\x94\x71\xd8\x2c\x74\xae\x3d\x8c\xe7\xbb\xca\xde\x5e\x58\x3b\x04\x36\x2c\x71\xce\x8e\xef\xcf\xfa\x0b\xcf\x4e\x3b\xaf\x5f\x88\x4c\xb8\xc5\xa6\xdb\x2a\x3a\xf6\xa4\xd4\x9d\x8d\x81\x5b\x5f\x72\xb3\xb6\xc8\xd4\x51\xef\xcb\xc1\xba\x5c\x91\x93\x16\x29\xb6\x6a\x85\x7d\xcd\x47\xa3\x66\xf9\xb8\xea\x4e\x4d\x7e\x48\xcd\x43\xb1\x12\x7b\xb5\xd0\x8f\x8d\xd2\x81\x59\xcd\x41\x35\x5c\xf8\xc5\xc7\x06\x64\xae\x8a\x81\x56\x36\xdb\x95\x53\x2c\x87\x79\x1d\x6c\x68\xbf\xc6\x96\xa5\xd0\xa8\x25\x71\xb8\x9b\x94\xa6\xcb\xea\x71\x6d\x30\x7f\x25\x37\x55\x3d\x3d\x5c\x92\x66\x5e\x03\x32\xd3\x77\x25\x7f\x30\xbf\x7f\xbb\xdf\x6b\xf9\x37\x06\x64\x46\xb3\xd6\x09\x76\x5e\x7f\xe9\x0a\xef\x3f\xff\x37\xbc\x91\xb7\x06\x44\xec\x52\x9e\xcf\xbf\x19\x10\x31\x9e\xdf\xc9\xf4\x3e\xf9\xb3\x2f\x9e\xf8\x0b\x98\x51\xc1\x4f\x91\xe9\x1a\x69\xb2\xd9\x07\xe3\xc3\xc1\xa7\x4d\x67\x41\x3d\x73\xb4\xdc\xee\x5b\x95\x10\xd7\x66\x6b\xab\x9d\x58\xcd\x5d\xaf\x9d\x33\xc1\xc9\xac\xd9\x05\x6f\x0e\x86\x6a\x09\x17\x7d\x2d\x42\x5f\x05\xc7\xe9\xa8\xe5\x00\xb7\x6f\xd5\x74\x7f\x3c\x6f\x42\xd6\x7e\x10\xcc\x10\xa6\x24\xcd\x04\x40\x10\x42\x02\x45\x2c\xa5\xd4\x18\x2a\x24\x19\x49\x21\x4b\x84\xce\xb4\xd0\x44\xa2\x84\xa7\x9c\xa4\x9a\x12\x89\xa5\x38\xf7\xcd\xd4\x10\x10\x98\x3d\xc1\xec\xde\x5e\xe9\x9f\x37\x81\x23\xff\x83\x98\xa0\x4f\x0c\xec\xe7\xd1\x67\x98\x51\x42\xc0\xfd\x30\x0b\xde\xbc\xcd\x9f\x5e\x7d\xae\x19\x91\x29\xdb\x8d\xc3\x5c\xc4\x9d\xda\xd8\xdb\xf1\x60\xbd\x5f\x97\xc6\x91\xe7\x86\xba\x47\xf2\xd1\xbe\xe0\x7b\xed\x45\x49\xe4\xbf\xea\x3b\x62\xdb\xac\xbb\x33\xa2\x2a\xdc\x0f\x27\xeb\x94\x9f\x22\xbb\xbc\x01\x43\xa7\x9e\x9f\x2c\x16\x3e\x73\xcb\xe5\x59\xde\x10\xed\xf2\x44\x8e\x5a\xa3\x9a\x57\x1f\x6d\xfd\x86\xb9\x31\x78\xd6\x3c\x04\xb4\xd2\x02\x66\xaf\x9a\x6c\xfc\xa3\x58\x3a\x93\xe3\x1a\x94\x58\xd6\xd2\x79\xb5\xff\x95\x72\x58\x7f\x5b\xad\xbf\x0c\xb3\xc6\x78\x5a\x2f\x6f\x57\xd4\xc9\x4f\xeb\x87\x56\xd9\x4e\x72\x20\xa9\x55\xad\xb2\x6b\x07\x13\x3c\xd5\x0d\x54\x33\x0b\x76\xa7\xd2\x6c\x34\x2e\xe1\xd3\x7f\x1b\x66\x96\x3d\x13\xf7\xc2\xec\xd5\xcf\x77\x27\x4c\x26\xaf\xaa\xa8\xf9\x8d\xd0\xc6\x3e\x37\x59\xed\x5d\x4b\xaa\xd2\x22\x29\x6a\x81\x8c\x63\x92\x96\x06\xad\x1d\x8d\xe3\x76\x7d\x30\x6c\xf6\xf2\xfb\x86\x63\xf5\xb2\x08\x90\x93\xdd\x9a\xf3\xb1\xbd\x4f\xfc\x3a\x06\xeb\xb6\x6e\x8e\xa5\xd1\x6d\x22\xde\xae\xed\x2a\x83\x9e\x5a\x79\x56\x7d\x06\xf0\x0e\xd7\x1e\x54\x5e\x0b\x42\x0e\x68\x26\x89\x4a\x19\x4d\x79\xc2\x38\x8e\x21\x22\xb1\xa0\x4a\x63\x26\x94\x00\x99\x20\x54\x64\x59\xac\xd3\x2c\xe3\x50\x62\x40\x52\x91\x09\x22\x29\xa6\x09\xd1\xe7\xd0\xc6\xf3\x09\x76\x9b\x34\x6b\xf5\x02\xee\x34\x9a\x0e\xef\x05\xd8\x6a\x15\x7c\xdc\xa0\x6d\xaf\x65\xd6\x0a\x65\xdb\x40\x6e\x35\x6c\x15\x03\x5e\xab\x19\x81\xe1\x55\x2a\x65\xbb\xc7\x83\x86\xeb\xbc\x42\x80\x72\x44\xbe\x8a\xee\x42\x82\x04\x64\x1f\x62\xe5\x79\x14\x32\x4e\x01\xe6\x48\xb0\x57\xac\xdc\xb8\x05\x2e\x46\x69\xf4\xde\x32\xfb\xb5\x6c\xbb\xcf\x8a\x42\xbe\xf9\xbe\xe6\x78\x74\xca\x9d\x57\xab\x75\x1c\xd9\x31\xd4\xb9\xd1\x26\xdc\x8e\x5b\xab\xe2\x64\x5b\xe7\x07\x50\x3b\xf0\xee\x88\x4c\x83\x79\x8d\x34\x69\xdb\x70\xa6\x41\x27\x87\x56\x9d\xf9\x61\x54\xdb\x2f\x9d\xf2\x60\x13\xcd\x0a\x46\xbb\x03\x65\xce\xa2\x47\xb5\xa0\xa3\x7a\xb5\xba\xe8\x1e\x56\x96\x0e\x2a\x65\xbf\xed\x3e\x36\x6b\xee\xca\x30\xfb\x06\x56\x9e\x22\xa6\xd3\x37\xf2\x8d\xab\x39\xfb\x55\x1d\xe5\x6a\x5b\xdb\xb4\x3c\x1a\x26\xcb\x5c\x90\xd1\xd1\xba\x7d\xf4\x51\x7e\xe3\x9e\xac\xfd\x30\xe8\x83\x5e\x4a\x67\x23\x39\x32\x02\x03\xbe\xcc\xf3\x55\xc4\xb4\xfc\x59\x19\xb4\xcf\x75\x94\xd9\x7d\xf2\x2f\xe1\x88\xf2\xfb\xbd\x38\x3e\x91\xff\x84\x95\xf5\x7c\x8f\x36\xe1\x6e\xce\x3b\x7c\x51\x60\x07\x9a\x8c\xb6\x22\xb5\x6b\x1a\xce\x73\xe5\x71\x6c\xd7\x0b\xdb\x8e\x61\xf6\xc6\x9d\x6c\xb3\x84\x71\x2d\x3a\xd5\x2a\x83\x66\x94\x74\xcb\x07\xc3\x71\xd2\x2c\xeb\x6f\xd5\xac\xa2\xa3\xd3\xf0\xc8\x3a\xeb\x78\x3f\x1b\x37\x87\x6d\xe7\x41\x67\x2f\x58\x16\x13\xc6\x13\x8a\x33\x8a\x05\x4b\x39\x8f\x53\x4c\x15\xa2\x00\xe9\x14\xa9\x14\xa7\xa9\x48\x08\x03\x31\x4d\x34\x42\x09\x4b\x90\x80\x22\x11\x30\x51\x29\xd6\x29\x4a\xe3\xbf\xfe\xef\xff\x21\x2f\x27\xab\x3b\x5d\x5a\xb5\x82\x9e\xd3\xe0\x8d\x82\x17\xb6\x0c\xb7\xde\x29\xf9\xa1\x61\xdb\x5e\x3b\x0c\x7b\x65\xcb\xab\x38\xa4\xe3\x9b\xa8\x54\xe1\x5d\x54\x6d\x94\xbb\x0e\xc7\xe7\x25\x7f\x0b\x56\x28\x90\xe8\xc3\xa3\x76\x2f\xa3\x90\x43\x2e\x05\x93\x54\xe2\x97\x88\xe9\x8d\x66\xc2\xaf\x61\xe5\xad\xaf\xeb\x86\xe5\xf5\x36\xe2\x77\xbe\x9c\x17\xf9\x7e\xc5\x13\xd5\x6c\x63\xc4\x99\x9e\x1b\xee\x74\xb7\x58\x17\xe6\xe3\xe5\x94\xf0\x91\xb1\x5d\xee\x49\x1f\xb6\xbb\xa3\x69\x15\x8c\x98\xdf\x98\xc2\xd1\x61\x1e\x4f\x4e\xf6\xde\x6e\xe2\x6e\xce\x43\xc5\x7a\x31\x1d\x35\xcb\x93\x82\x1f\xb7\x0e\xae\x99\xf9\x95\xe2\x60\xc5\x66\xde\xfa\x2d\x32\xee\x4e\x1a\xb9\x3a\xe1\x7b\xab\x19\x76\xe5\x6b\xba\x51\xdb\xbb\x5c\xef\xce\xdf\x9b\x2d\x69\x5d\x7d\xfe\x1b\x66\xe2\x53\x0f\x87\x0b\xbe\xee\x6b\xc5\x73\x85\x40\x6b\x95\x2c\x0f\xc1\xb1\x93\xc7\xe3\x44\x47\x76\x7d\x39\x74\xf6\xb6\x8b\x26\x9c\x36\xcb\xcb\xa1\x58\x19\xf5\x71\x25\x9f\x34\xf1\x62\x1d\xbe\x34\xcd\xbe\x1b\x81\xf3\xfb\xe4\xdf\x89\xc0\x39\xde\x6f\x72\xc0\x5c\x48\xd6\x37\xe2\x38\x37\xdd\x37\x87\xcd\x65\x32\xda\xd6\x2c\xb6\xb2\x87\x76\x27\x88\xeb\xd1\xae\xd9\x58\x18\xb9\xa4\xdb\x70\x07\xcb\xb0\xd6\x30\xbc\x6a\x9a\x10\x1c\x29\x92\x22\xaf\x34\x6d\x07\xe6\xa2\x51\x88\x1c\x69\xcc\xb5\xbb\x5b\x2a\xb4\x7f\x54\xd3\xee\x44\x25\x8c\xc7\x31\x66\xe7\xca\x12\x29\x22\x24\xd3\x2a\xcb\x70\x0c\x14\x96\x3c\x13\x30\xc3\xb1\x4c\x7e\x18\x42\x82\x09\x21\x19\xd5\x9c\xb3\x94\x10\xae\x40\x02\xf5\x33\x02\xd1\xa3\x10\x48\xbf\x4c\x1a\xa1\x04\xf2\x4f\x10\xf8\x34\x7a\x41\x20\x07\x00\x60\x74\x3f\x02\xbf\x4c\x1a\x09\x3a\x9d\xe6\xe5\xef\x07\x22\xb0\xd6\xe8\xf4\xa3\x2c\xb7\x07\x32\xd5\x0b\xbb\x79\xa8\xa9\xf2\x6c\xd4\xe9\x15\x0d\xe4\x4c\xc6\xe6\x74\xd0\x98\x0e\x81\xc7\x98\xb3\x1d\x18\xa7\x96\x1e\x77\x95\x55\xaf\xa5\x56\x09\xa8\xb6\xca\x1d\xca\x83\xe3\xbe\x1a\x36\x6b\xc3\x8a\xc1\xf6\x0d\x56\x91\xc4\x0b\x26\xce\xc4\x2f\xfc\x39\x08\x6c\x77\x3a\xed\xa7\x2d\xfd\xdf\x41\xe0\xb7\xdb\xd8\xdc\x89\xa0\x4b\xc4\xb3\xfc\xfe\x3d\xbc\x3e\xef\x4f\xd7\xb3\x71\x27\xbb\xe6\x20\xcf\xed\x16\x84\x6c\xec\x55\x0b\x87\xfd\x54\x7b\x9d\xb1\xb2\xa3\x6e\xd7\x77\xe3\x42\x2e\xae\xfa\x78\x35\xef\xb2\x82\xed\x79\x2c\xe8\xed\x4b\xe4\x00\x4a\xa3\xe0\x10\x9c\x78\x61\x5a\xac\x1a\x9b\xb4\x74\x2c\xcd\xed\x95\x91\x9f\xaf\x70\x1f\xba\xed\x6e\xe7\x41\x55\x12\x59\x8a\x34\x06\x59\x4a\x39\x91\x28\xc9\x90\x46\x09\xc4\x48\xc3\x44\x49\x18\x53\x22\x62\xcc\x24\x14\x32\xd1\x49\xc6\xb9\x4e\x50\x82\x53\x81\x24\x44\x30\x96\x29\x52\xf4\x87\x71\x47\xe0\x03\x8d\xbb\xaf\x11\xc4\x30\x24\x1f\x23\xe8\x79\x14\x72\x06\x24\x66\x0c\xa3\x57\x04\x7d\xdf\xb8\xfb\x04\x41\x17\x43\xe7\x46\x07\xf8\x95\xd6\x76\xf5\x8b\xf6\xb2\xc5\x4c\x83\xd5\x51\xa6\x61\xdf\x37\xf7\xf3\x3a\xc8\x6a\x9e\x57\x68\x57\x8a\xc0\x4f\x3b\x61\x67\x54\xe8\x26\x1e\xed\x54\x29\xb4\xa7\x41\x5b\xa7\x51\xad\x16\x6e\x92\x90\x96\x2b\x9d\xe6\x69\x12\xa3\x71\xc9\xdd\x75\xfb\x93\x35\x4c\xc3\x6d\x58\xec\x45\xf9\x52\x7d\x12\x57\x00\x5c\xfd\xe2\xd1\xa8\xeb\x8a\x90\x5f\x24\x64\xfc\xe9\x1a\xd8\xf8\xcf\xb9\xbf\xcf\x13\x32\x7e\xa3\x91\x58\x7b\xfb\x7e\xdf\x5c\xe7\xcf\x2f\xee\x93\xff\x19\x1e\x3f\x93\xff\x84\xc7\xdf\xb5\xd8\x1f\x11\x15\x14\x18\x65\x19\xe3\x40\x50\x95\x48\x9d\xb0\x0c\x2a\x92\x70\x02\x32\xa6\x01\xc6\x49\x2c\x13\x0a\x44\x9c\x71\x44\xb3\x24\x43\x00\x13\x26\x39\x92\x31\x23\x31\x94\x32\xcb\x9e\xf0\x88\x1e\x86\xc7\x2f\x73\xd6\x18\xc3\xe4\xc3\xd2\xf2\x2f\xa3\xcf\x78\xe4\x18\x89\xfb\xf1\xf8\x49\xce\xda\xf7\xf0\xf8\xaa\xd1\xbd\x8f\x47\xe8\x6b\x31\xeb\xef\x0d\xef\x44\xb2\xea\x32\xb2\x06\xfb\x60\x14\xd0\xc3\xac\xcf\x54\x69\xd9\xa6\x5d\x73\x33\x1a\xf7\xfa\x0e\xd9\xf6\x3b\x83\xa1\x28\xb3\x71\x6b\x61\x58\xbb\xd9\x2e\x5c\xcf\x71\xa9\x73\x9c\xb2\x20\x4b\x59\x39\xf5\xbb\xc2\x57\xd5\xb1\xd3\x0a\x61\xcd\xb5\x7e\xad\xbe\xcb\x3f\x83\xc7\x7f\x44\x3b\xbb\x03\x8f\x8f\xbe\xbf\xf7\xf0\xf8\xaa\xbd\xdd\x89\xa7\x4b\xd2\x44\xf9\x15\xb7\x57\xd7\x2f\xe0\xe9\x77\x2d\xb6\x07\xe0\x29\x65\x5c\x65\x09\xe2\x30\x16\x42\x6a\x2e\x28\xc9\xb2\x94\xc1\x04\x08\x1d\xab\x54\x73\x96\x52\xa6\x39\x15\x84\xb1\x4c\x61\x1e\x0b\xad\x15\x4a\x71\x4c\x80\xce\x44\x72\xee\x7e\x4d\xd0\x23\xb5\xb7\x2f\xf3\xc5\x38\xc6\xec\xe3\x88\xdf\xf3\x28\x14\x00\x0b\xc1\x30\xa0\x8f\xc0\xd3\x27\xf9\x62\xf7\xe2\xe9\xea\xba\xc2\x53\xa1\x51\x51\xfe\xd4\x68\xb9\x0b\xbd\x5b\x6d\x26\x86\xea\xcd\xbc\x52\xde\x1d\x65\xd5\xaa\x5f\x58\xc8\xb8\x6e\xbb\x6e\xe0\x74\x72\xc8\x22\xed\xba\x48\xdb\xb9\xb6\x51\x6b\x8d\xad\x66\xe8\x57\xed\xdc\xa1\x11\x07\xfe\xe1\xb4\x97\xb8\xa9\x0a\xf3\x31\x73\x4f\x91\xb5\xd9\xf0\x5f\x2c\x3f\x75\x03\x9e\xfe\xcc\xed\xff\xf2\xb7\x35\xff\x73\xee\xef\xea\x7a\x47\x7b\xfb\x97\xf0\xf4\xf2\x4e\x97\xf7\xc9\xbf\xe4\x74\x5d\xe4\xbf\x15\xf4\x0b\x78\xfc\x5d\x8b\xfd\x11\xad\xae\x09\x4d\x18\xe4\x30\xd5\x9c\xf0\x38\xc1\x08\x27\x58\xa5\x31\x45\x48\x02\x89\x71\x9a\x61\xa9\xd3\x94\x03\x06\x33\xa6\x11\x03\x9c\x21\xc6\xb0\xce\x14\x85\x89\x52\xc9\xd9\xb8\x7d\xc0\x21\x7b\xf1\x15\x14\x05\x20\x9f\x40\xf1\x79\x14\x0a\xc2\x04\xa6\x92\x0b\xf4\x80\x9c\xae\xb7\x00\xfb\xc9\x93\x32\xda\x6d\xe3\xff\x9f\xba\x2b\x6b\x52\x17\xc9\xf6\xef\xfd\x29\x8c\xfb\x32\x33\x61\x4f\x48\x6e\x2c\x3d\x31\x37\x02\x01\x05\x57\x54\x40\xf1\xa5\x82\x25\x71\x45\x14\x54\xd4\xfb\xe5\x6f\x54\x59\xa5\x94\x7f\x2d\xcb\xa5\xba\x67\x8c\x89\xe9\xf2\x9f\xe9\xd9\xf2\xe4\x2f\x4f\x9e\xdc\x22\xa0\xd7\x80\x99\x97\x1c\x29\xe0\x0a\x79\x36\x5f\x2f\x6c\xcc\x99\x32\x33\x4d\x5f\x1e\xd5\xab\xcb\x61\x0d\xc7\x63\x4c\xaf\xed\xe9\x2a\x96\xdc\x0e\xf4\x48\x1c\xdb\x8d\x72\x32\x6d\x58\xc9\xd4\x50\x55\x7e\xcc\x6f\x98\xc1\x80\xa6\x80\xaa\x6a\xd3\x34\x1a\xce\xb8\xae\x6f\xf9\xb2\x3d\x23\xb0\xdd\x49\xdb\x33\x2f\x4d\xd7\x6b\x40\xc7\x4a\x20\xe6\x07\x85\xd0\xe8\xd5\xe7\xbd\xb8\xd8\xe4\x31\x27\x61\xb6\x1a\x7d\xe7\x39\xa0\x4f\xde\xfa\x75\x26\x2d\xf3\xb4\xa8\xc6\x71\xe1\xa2\x61\x6c\x05\x4b\x1f\x84\x83\x59\xbe\x50\x58\xad\xc7\x3a\x6f\x55\x36\x15\x50\x52\x5b\x78\x2c\xc5\x76\x27\x5f\xc5\x79\x75\xfd\x56\xff\xb8\x0d\x22\x3e\xcb\xf9\x82\x7d\x3f\xc9\x2b\xdd\xff\x46\xeb\xc8\xdb\x79\xb2\x7e\x04\x2f\xe5\xb1\x37\x5a\xef\xdf\x06\x11\xa5\x03\x52\x28\xdd\xb9\x0d\x42\xfc\x68\x93\xf8\x31\xfe\xf2\xf1\x64\x7f\xf1\x8e\x4c\x5d\xbb\xcb\x2c\x67\x4d\x87\x85\x72\x3b\xae\x18\x96\x5b\x31\x37\x9b\x82\x56\xa8\xfb\x9a\xa6\x26\x8d\xde\x70\xb3\x9b\x2a\xbb\x6e\xb4\x93\xf9\x75\x31\xac\xe4\xfd\x89\x99\x28\x7d\x54\xaf\xd7\x38\xa1\x17\x6d\xd4\x54\x8f\x74\x32\x01\xbb\xaa\xc5\xa6\xc6\xba\xd9\x4c\x57\xcd\xd1\xe2\x49\x8b\x05\x94\xe1\x38\xe4\x33\x9c\xe3\x3a\x10\xf9\x00\x50\xd6\x61\x58\x97\x81\x80\xe5\x21\x14\xb0\x4b\x41\x20\x04\x90\x81\x0e\x14\x20\xcb\x43\x8e\x81\x90\x20\x81\x65\xa1\x47\xa1\xc7\xbd\xdd\x44\x8d\x0f\x87\xec\x55\xbd\x57\xb6\xe4\xaa\x5e\x22\x55\x03\x4b\x0d\xd1\xe0\x7a\x1c\xd7\xec\xd9\x7d\xce\xb6\x14\x5c\x51\xab\x25\xd9\x54\xa5\xb2\x64\x75\xa5\x1a\xae\x62\xbd\xc5\x72\xd5\x6a\x3f\x03\x42\x88\x83\x57\xd7\x4b\x79\x01\x30\x97\xb7\x61\x7c\x94\x02\x9e\x17\x38\x9e\xb0\x04\xc0\xc3\x36\x8c\x1b\xbb\xe0\x3e\xd6\xbb\xf6\x46\xeb\xbe\x5f\xdc\xb5\xb7\xdc\xfe\x80\xb9\xa2\x88\xc6\x15\x2e\x2d\xc6\xed\x79\x12\x7b\xb3\x45\xb1\xd5\x1d\x6f\x77\xe9\xda\xda\xc1\x35\x31\x2b\x84\x2d\xb3\x8c\x36\x1c\x24\x4e\xb7\x55\xea\x04\x79\x2e\x0a\x31\x0b\xab\x46\xe4\xe5\xd5\x0a\xe4\x9c\x9a\xd5\x6c\xf1\xc8\x2f\x0f\xc1\x68\x3d\xcf\x5b\xda\xaa\xad\x54\x16\x85\x4e\xf1\x7b\xef\x91\x64\x4f\xa1\x1f\xb2\x3e\x9f\xee\x68\x3b\x76\xa3\xfd\x94\x3c\xfd\xeb\xa0\xe5\x20\xbb\x94\xde\xcd\xff\x6d\x87\x57\xa5\x75\x3f\xff\x4c\xfd\x1b\x86\xb3\x73\xfb\xf6\x33\xb0\x24\x35\xf3\x64\x31\x36\xf9\xb5\x65\xe0\x4a\x54\x29\xac\x0b\x5c\x8c\x77\x85\x52\xc7\xeb\xf8\xed\x36\xd3\xd4\xd2\x05\x54\xd6\xa3\x95\x3e\xe4\x4e\xd6\x50\xab\xf7\xbf\x01\x9b\x3c\xc6\x7f\xef\x2b\xd5\x7b\xdf\x80\xfd\x29\xa7\x7f\xc6\x91\x29\x17\x43\x8f\xe3\x18\x0c\x03\x06\xbb\x01\x07\x58\x96\x08\x0e\x43\x28\xe7\x39\x28\xc0\x1c\x83\x9c\x80\x41\xbc\xc3\xf9\x0e\x47\x5c\xc0\xb8\x3c\x41\x3c\xc7\x70\x9e\x10\x04\x80\x83\x6f\x19\x3a\xf2\x78\x8c\x77\x15\x0c\x05\x8e\xbd\xfc\x0e\xff\xa1\x14\x08\x08\x72\x88\x20\x88\x01\xfb\x78\x8c\x67\x9c\xb4\xe6\x2f\x1d\x05\x0b\xc8\x2e\x2a\x55\xdf\xa0\x56\x03\xa5\xe6\x78\x90\x04\x84\xcd\x5b\x9c\x3d\x98\x8f\x3b\xfe\x42\x96\xba\x46\x3d\x18\x97\xa5\xe5\xd6\x93\x36\x51\x9c\xae\x36\x9f\xbc\x24\x7b\x91\x52\x59\x9a\xb6\xa9\xee\x89\xca\xa6\x55\xe8\x56\xe3\x28\x42\x05\xe4\x07\xde\x50\x2f\x6c\x35\xde\x68\xcb\x71\x3c\x5e\x16\xbc\x61\x9f\x47\x66\x6d\x64\x78\x04\x4f\x49\xea\xed\x80\x38\x71\x6b\x0e\x2b\x89\xce\xdc\xef\x94\xe7\x66\xb7\x37\x21\x93\xc4\x58\xc8\xbd\xda\x0c\x8b\x4f\x8e\xf1\x32\xaf\xa9\x34\x75\x1f\x8a\x6d\x69\x66\xa2\xa9\xe1\xf3\x25\x0d\xd7\xd4\x3c\x5d\x4f\x29\xd4\xaa\x36\x33\x73\x06\xe9\x74\xb2\x53\xf1\x66\x10\x7b\x33\x31\x71\xaa\x7c\x2d\xf9\xd8\xc4\xb7\x3c\xcb\xf9\x82\x7d\x3f\xc9\x9b\xe5\x7f\x43\x9b\xbe\x1a\x3e\x84\x3d\x83\xcf\x64\x59\x95\xc7\x2e\x52\xca\x80\xc9\x3d\x31\x56\xe6\x94\xd9\x4d\x31\x96\xf8\xd1\x26\xcb\xc7\xf8\x67\x76\x4d\x16\xef\x78\xc2\x72\x38\x98\x9b\xbd\x31\x12\x8b\x75\x53\x07\xa3\x05\x5b\x6d\x14\x04\xd4\x43\x9a\x51\xe0\x47\xba\xc2\xb4\x58\x16\x73\x01\xd2\xba\x41\x03\x48\x78\x82\x9a\xb4\x42\x3d\xb5\x2e\xb4\x2a\xe5\x2d\x5c\x0d\x06\xe5\x45\xcf\x1c\x2e\xac\xd2\x94\x34\xfb\x35\x85\x1d\x80\x2d\xc9\x8b\x4f\x8a\xf1\x7c\x88\x03\xcc\xb3\xae\xcf\x41\x18\xf8\x80\xe7\x88\xcb\x63\xc4\x23\x81\xf2\x3c\xe3\xfa\x94\x3a\x08\x62\x0a\x89\xef\x72\x0c\xeb\x40\xd6\x09\x08\xc5\xbe\xe3\xf0\x1e\x61\x38\x40\xdd\x57\x30\x63\x1f\x06\x33\x78\x6d\x0d\x16\x32\x3c\xcb\x5e\x5c\x64\x38\x94\x02\x81\x23\x2c\x8f\x05\x81\x03\xf0\x71\x30\x33\x4f\x5a\xf3\x2f\x7f\x7d\x3f\x33\xc1\xb5\x35\xc6\xa8\xb7\xac\xae\xbe\x9e\x49\xb0\xaa\xbb\xf2\x7c\x28\xd4\xb7\x3b\x62\xd6\x57\xc5\xb6\x66\x2f\xa1\xdd\xf2\x97\x53\xdd\x96\xb0\xa9\x3a\xa1\x3d\x53\x93\xfa\x60\x38\xd7\xea\x81\xd3\xe1\xea\x5d\x5f\x5d\x95\x6d\x1e\xe4\x4b\xc5\x68\xd7\x4c\x3a\xf9\x82\x5a\x8e\x86\x2d\xf9\xb9\x1b\x72\x33\x37\x9e\xdd\x01\x3e\x1c\x9f\x9e\x63\xfa\x67\xbc\xbe\x7f\x27\x58\x24\x4e\x95\x2c\xa7\xcc\xdd\x60\x71\xb0\xe1\xea\x21\xfe\xf9\xc2\x91\x69\xf1\x02\xa3\xaf\xc0\xaa\x2b\x35\x94\x9d\x52\xb2\xc6\x1c\x49\x97\xa3\x31\x4c\x59\x3b\x30\xea\x49\xde\x92\x6b\x03\xb3\x53\xae\xf9\xa1\xa2\xba\x7d\x03\x8a\xab\x52\x11\xce\xc3\xca\x86\x93\x35\xcd\xe9\xc8\x2a\x9c\xac\x76\xa5\x59\x9b\x1b\x86\x7a\x23\x18\xb6\x9c\xfa\x2e\x56\xd6\xeb\xcd\x66\xa1\x99\x4f\x7a\xd9\x8e\x83\x0c\xe7\x53\xe2\x72\x04\x62\x44\x19\x97\x61\xa1\x87\x78\x84\x02\xc2\x73\x0c\x62\x5d\x8e\x0a\x01\x8b\x31\x41\x2e\xc5\x42\x10\x10\x26\x40\x01\x0a\x7c\x8f\x23\x80\xa5\x1e\xfb\x01\x56\xfb\xb5\xd1\x36\x41\x5d\x51\xd1\xaa\x4d\x13\xf5\xab\x0d\x84\xa5\x8e\x2a\x76\x55\x4e\xb5\xd8\x2a\x8b\xa4\x62\xa5\x6d\x1a\x5d\x53\x2e\x96\x3a\x75\x9b\x6b\xb7\x5b\x55\xd4\xd1\xab\xcd\xce\x31\x62\x82\x3c\x82\xd7\xd6\x46\x21\x00\x2c\x7b\xf1\xb0\xfa\xa1\x74\x0f\x5b\x84\x41\x3c\x73\x58\x7c\xb8\x25\x5e\x38\x4c\x48\xdf\xc6\xfb\x6b\xe7\x02\x8a\xf7\xd0\x7f\x04\xb6\xea\x76\x15\xbd\xa5\x7c\x15\xb1\x39\x29\x37\x75\xa3\x59\x94\x3b\x2d\x6e\xd6\x85\xfd\x59\xde\x9d\x26\x50\x97\x4d\xea\x4e\x60\x61\x82\x0a\x83\x85\x5a\x6d\xf1\xd4\x6e\x96\x12\x99\x9d\x15\xa9\xb2\xde\xd6\x65\x9e\xf0\xeb\x88\x14\x1d\x77\xdc\x4a\x8b\xc2\x68\x36\x16\x8b\x5a\x9d\xa7\x89\x3c\xe4\x5c\x65\x22\xfd\x18\x6c\xdd\x1e\xb3\x19\x85\xfd\x39\x82\xe5\x59\x9b\xdd\x6a\xf3\x2f\xec\xfd\x35\x6c\xc9\x63\xe4\x0f\x94\xd6\x1c\x34\x88\x89\x82\x62\xa7\x29\x6d\x0a\xb3\x98\xf4\x96\x23\x29\x6c\x54\x60\x54\xaf\xf4\xeb\x9b\xfc\xbe\x5d\x6a\xe5\xd1\x5a\xe2\x3e\x0c\x54\xbb\xff\xa6\xb6\xd5\x23\xfc\x95\x42\xde\x3b\xf2\xbf\x63\xc2\x28\xcf\x8b\xe3\x31\xb3\x1b\xb4\x98\x49\x93\x80\x65\xd8\x2f\x84\xc4\x6d\x8c\x53\xa0\x86\xa4\xb1\x26\x8d\x02\xae\x0e\xb7\x13\x5d\x0d\xe5\xa1\x2b\xe6\xe7\x69\x6f\x58\xe3\xc7\x62\xa1\x19\xd4\xd8\x66\xab\x1b\x62\xa6\x2e\x06\xf6\x1c\xa7\x62\x47\xd6\xd5\x58\xc4\x14\x6e\x2a\x4f\xba\x86\x88\x3a\x02\xa2\x81\xcf\x7b\x30\xc0\x14\x13\x8f\x41\x80\xf7\x58\x81\x7a\x02\xe1\x59\x88\x1c\x86\x62\xc4\xe1\x00\x33\x3e\x61\x05\x4a\x3d\x00\xb1\x8f\x91\xc7\x3b\x04\xfb\x2c\x24\xec\x2b\x6c\x71\x8f\xc7\x58\xd7\xc1\x8a\x47\xe4\xe2\x3e\xb7\x43\x29\x64\x00\xcf\x22\xcc\x72\xcc\x11\xac\xee\x8f\xb1\xac\x93\xd6\xcc\x38\x7b\x26\xb7\x6f\x7d\x64\xc7\x8a\x62\xd1\x54\x57\x3d\x3b\x5f\x37\x06\xdd\x42\x2a\xaf\x49\xbe\x21\x5b\x43\x21\x48\x71\x48\x93\xdd\x86\xf6\x9a\x02\xaf\x2a\xad\x60\xd0\xb3\xa8\xd4\xe7\x68\xd3\x95\x34\x18\xc5\x9d\xb2\xd9\x10\x0b\x9d\x2a\xab\x5a\x42\x61\x65\x58\x9d\x8d\xd6\x6a\x75\xb5\x24\x02\xad\x68\xa3\x7e\x73\x9f\x5a\xe6\xcd\xb9\xfd\x24\xe4\xa6\xcc\x9e\x16\x2b\x63\xc9\x4e\x7b\x37\x77\x90\xfd\x4f\x03\x8f\xd6\xb2\x0e\x7f\xd2\xf9\x32\x37\x72\x64\x0e\x36\xdf\x14\x77\x2d\x60\xaf\xa0\xb2\x2a\x9f\x41\xcd\x53\x00\x7b\x62\xdc\xf5\xf6\x49\xff\x7b\x00\xf7\xac\x7d\x6f\x93\x77\x19\xf9\x6c\x7b\xb3\xf5\xfe\x14\x79\xcf\x0c\x10\x3f\x13\x57\xb6\x6e\xa5\x77\x62\xcf\xb3\x9f\x37\x9f\x5e\x3f\x26\xaf\x70\xdc\x82\x5d\x3c\x3d\x10\xf9\x4c\x79\xdf\x07\xa0\x9f\x02\xa6\x67\x0c\x40\x2e\x4f\x78\xd6\x13\x00\xc7\x7a\xd8\x0b\x20\xe5\x59\xec\x42\x02\x81\x80\x79\x47\xe0\xa0\xef\x12\xc8\x61\x9f\x42\xcc\x72\x88\x65\x05\xcc\x22\xca\x78\x1c\x0f\xb1\x47\x29\xb3\x1f\x80\x1e\xbf\x69\x04\x5e\xdb\xaa\x03\x21\x07\x84\x8b\xcb\x37\x87\x52\xc8\xb0\x80\xf0\x18\x61\xc4\x3c\x61\x55\xba\x7b\xd2\x9a\xbf\x74\xa6\x7a\x47\xd9\x98\x75\x5a\x19\xfa\x48\x9f\xe9\xdb\xde\xda\xf7\xdc\xea\x52\xee\x2b\x68\x37\x9d\x96\xdc\x2e\x5e\xa5\x1a\x90\xd8\x7e\x7e\xf3\x36\x60\x7d\x75\xf5\xbb\x58\x6f\xce\xd8\x32\x1e\xaf\x92\xc1\x3c\xe8\x44\x6a\x3a\x5b\xaa\xad\x89\xad\xc9\x1b\xad\x60\xcd\xb6\x6a\x61\xa1\x8d\xf2\xae\x5f\xef\xee\x46\xc0\x60\xbb\xd3\x74\xd6\xcc\x6f\x35\x63\x10\xc2\x7c\xd8\x74\xba\x1e\xbb\xb3\x56\x9b\x51\x6d\xac\x4e\xa7\xbb\x22\x6d\x15\x36\xd5\x75\xab\xf1\xd4\x8c\x65\x76\x5f\xa5\xac\x0c\xeb\x96\xac\x8e\xec\x9e\xbf\x23\x3b\x7e\xca\xa1\x5e\x79\x1b\xb7\x60\xbb\xc1\x93\x7e\xbb\x0b\x56\xb5\x44\x6a\xb4\x56\x61\x90\xec\xcd\x79\x5c\x95\xfe\x6a\xd1\xe1\x6b\x70\xcd\xf2\xbf\x75\xf0\xea\xa3\x55\x13\x1e\x7f\x5e\x1a\x9c\xf0\xfc\xd9\xa4\xc1\xdd\x60\xb5\x9c\x16\x36\xf9\x61\xe1\x18\xf2\xfe\x28\x58\x89\x1f\x6d\x9e\x3e\x26\xaf\x90\xb1\xae\xfd\x83\xf2\xbe\x83\xeb\x40\x96\xe7\xf9\xe1\x4a\xe3\x62\xad\xda\x63\x16\x45\xbe\xc2\xb5\x99\x4a\x59\x12\xf9\x8e\x0e\xfa\xfc\xb0\xc0\x8e\xb4\x75\x88\x8c\x52\x82\x97\x66\x7e\x3a\xf7\x2a\xbb\x75\x32\x52\x70\x65\xb9\x9e\x8f\xc3\xe9\xac\x99\x00\x37\xb1\x47\x78\x43\xfa\x5e\xda\x9b\xe8\x7c\x27\x66\xe4\xe7\x80\xab\x10\x04\x01\x0b\x04\xc0\x72\x80\x0d\x5c\x48\x08\xc3\x60\x14\x38\x9e\xc0\xf2\x8e\xc7\x7a\x00\xf1\x0c\x74\x02\x02\x38\xd6\x01\x4c\xe0\x41\x01\x30\x7c\xe0\x05\x1e\xc6\x84\x06\x04\xa0\x57\x70\xfd\xb8\xac\x40\xb4\x3b\x52\xbd\xda\xb2\x59\xc5\xae\xf5\x9a\xba\x61\xb0\x15\x5d\x6f\xf6\xe4\xba\xd5\x28\x76\x35\x43\x37\x3a\x7d\xcd\xea\x76\x71\xad\x2b\xb6\xad\x62\xd3\x50\x49\xdb\xa8\x89\x72\x06\x14\x19\xc8\x5c\x5b\x18\x82\x98\x01\x97\xc3\xfc\xf7\x42\x08\x18\x4c\x10\x66\x00\xcb\x1c\xd6\xc8\x6f\x04\x84\xb7\xff\x93\xcf\x76\xa2\xcc\xf7\xb7\x41\xba\xe4\x86\xa5\x65\xdf\x50\x3e\x95\x17\x65\x65\x5b\xdf\x65\xbc\xa2\xf3\x01\xb2\x45\x71\x53\x1d\xa9\xb6\xdd\xa8\x55\x46\x5d\x14\x93\xfc\x44\xaa\x84\xfc\xca\x73\x22\x8b\x2b\x7a\xb1\x32\x6b\xf5\x4a\x2e\x4a\x40\x7b\xdb\xde\x9a\xae\x38\x91\xa7\x8e\xb4\x56\xf2\xed\x6a\x5a\xef\x47\x0d\x33\x70\x27\x2d\xb3\x1c\x47\xab\xad\x55\xdd\x82\xfe\xdc\xa4\x9e\x57\xdc\x2e\xe4\xef\xed\x77\xcc\x3e\x45\x7a\x05\x4c\x33\x91\xf9\x8d\xb6\x2b\x76\xc9\xd0\xed\x9a\x9b\x83\x41\x4e\x6d\x71\xe4\xb7\xc9\xfc\xc3\x46\x33\x4a\xad\x0d\x0e\x4b\xc8\xcb\x7b\x85\x0a\x15\xc0\x26\x59\x30\x8d\x89\x11\x34\xbb\xa6\xb5\x74\x47\x9c\x38\x36\x6b\xf3\x19\x57\x3e\xb9\xdf\x6d\x1f\xda\xdd\x7e\xb5\xe5\xdb\x9f\x47\x10\x4c\x1f\x93\xa5\x75\x94\xe2\xd2\xe7\x6b\x50\x7b\xd0\x16\xfb\x35\xeb\xfa\x91\xde\x37\xf9\xbf\x83\xd4\x4f\x39\xe5\x33\x22\x40\xcc\x32\x02\xe0\x19\x8e\x00\xca\x71\x0c\xc4\x2c\xeb\xf0\x3c\x26\x3c\xe1\xfc\x00\x23\x8a\x7d\x40\x30\xf5\x78\xec\xb2\xae\xe3\xb3\xd0\xa3\x84\xe1\x02\x0a\x60\x00\x7c\x27\x10\x84\x77\x90\x82\xcf\x02\x29\x70\x75\xc1\x07\x43\x0e\x5f\xdc\xa1\x78\x28\xfd\x80\x29\xc2\x0a\xec\xe3\x30\xf5\xc5\xa1\xbb\x2c\x4c\x69\x9f\xca\x8b\xb2\x09\x1b\xbb\xcc\xbe\x8f\x0c\x4c\x8d\x37\x83\x99\xd1\x2e\x4a\x0e\x33\x03\x34\xe8\x47\xde\x66\xae\x8c\x7b\x54\x33\x5a\x24\x51\x6c\xc3\xf2\x85\x20\x4a\x57\xcb\x08\x4e\xf4\x94\xd0\x52\x3a\xb0\x66\x3b\xb6\x19\x57\x2b\xa9\xd4\x5e\x92\x1a\xbf\x9d\x86\xdd\x91\x68\xf4\x2c\x0d\xf5\xb7\xc1\x08\x6d\x8d\xea\xa2\x78\x9a\x00\xf8\xeb\x61\x6a\x7b\x30\xc8\xa9\x2d\x8e\xfc\x9e\x0d\x53\xbf\xbc\x3f\x76\x15\xa6\x5a\xcf\x92\x65\x7f\xf8\x6c\x2f\xcb\x1d\x3b\xfe\x7e\xca\x29\x9e\x71\x61\x3a\x8f\x01\xf1\x7c\x26\xf0\x1d\xc1\xf5\x04\x87\xba\x20\x60\x5c\x0c\x04\x37\x70\xa1\x20\x70\x01\xe7\x40\xc7\x01\x2e\xa0\x01\xa4\x04\x38\x0c\xcb\x40\x8f\x05\x80\xc1\x81\x07\x91\xe7\xbd\xc3\x04\x7a\x1a\x4c\x5c\xcd\x59\x62\x02\xbe\x58\x17\xfe\x28\xfd\x80\x09\x81\x13\xe0\xe3\x30\xf1\xc5\xe1\xb3\x0c\x4c\x74\x3e\x97\xcb\x70\xca\x78\xdb\xe2\xcc\x45\xad\x81\x87\x8a\x43\x1b\x5a\xbb\x4f\xcf\xa2\x64\x60\xa3\x11\xda\x83\xd1\xcc\x1e\xf6\xf2\xac\x25\x26\x53\x50\x59\x85\xc1\x66\x52\x24\xdc\x16\xd6\xd4\xd8\xe9\xca\xe6\xa4\x9d\xaf\xca\x9b\x6e\x97\x9f\x92\x79\x60\x58\xa3\xda\x66\xc3\x55\x78\x52\x8d\x9b\x16\xb3\x68\x48\x36\x6e\x07\x4e\x32\x58\x6c\x4a\x4c\x49\x42\x4a\x6c\x7b\x54\xfa\x5e\x8e\xf3\xcf\x84\x8d\x03\x4e\x5c\xb5\xcd\x91\xff\xb3\x61\xe4\xb4\x2d\xff\x44\x18\xf9\x45\x96\x5f\x3f\x5f\xc1\xc8\x4f\x39\xc9\x33\x8e\xf8\x03\xd6\x63\x19\x81\xc1\x1c\x0d\xf8\x40\xf0\x1c\x81\xe1\x1d\xcc\xbd\xfe\xcf\xc1\xae\xcb\x00\x1e\x63\xc1\x23\xac\x40\xb0\xe0\xf8\xd0\x73\x58\x86\x08\x8c\xe3\xb8\x1c\x86\x2c\x47\xf9\xbf\xfd\x9e\x23\xcc\x13\xa7\x44\xe0\x6a\xe6\x89\x40\x8e\xbb\x1c\x6d\x7c\x94\x42\x80\x39\xcc\xa3\xb7\x8b\x51\x1e\x87\x91\x2f\x0e\x89\x9d\x8d\x36\x32\x1f\xe5\x40\xaf\x25\xda\xed\x7e\x43\x1f\x56\x24\x23\x1d\x57\x06\x62\x45\x70\xa9\x82\xfa\xcd\x82\x8a\x26\x76\x65\x68\x87\x16\x98\x4b\xe1\x96\xf3\xf8\x7e\x0c\x93\xaa\x5f\x6d\x86\x4e\x6d\x86\x83\x50\x24\x0b\xa7\x96\x9f\xb6\xea\xd5\xb4\xd9\x19\x2e\xc7\xe9\xa4\xcf\x57\xd4\x8d\x6e\xfa\x7c\xf9\x7b\xef\x28\x5c\x83\x8a\xe3\x92\x84\x9c\xd1\xe1\x8e\xac\xd2\xfb\x25\xe1\x99\x27\x40\xbf\x77\x2b\xc7\xe1\x57\x3f\x1e\xe1\x68\x4f\xa1\x7f\x66\x42\xf5\x17\xc1\x9d\xf8\xd1\x86\xdb\xc7\xf8\x57\x8e\x6f\xaf\xee\x19\xdd\x04\xb7\xff\x57\x1c\x96\x26\x4c\x5e\x99\x54\x74\xa9\x1e\x8a\xe2\x0c\x2c\xb1\xe1\x4f\x38\x3e\xa0\xed\x41\x58\x1a\xf5\x7b\xdd\x49\xd5\xad\x2d\x77\x9b\x70\xed\xa4\x73\x26\x62\xfb\xd1\x2a\x18\xe6\x6d\x39\x9c\x47\x6b\xd6\x12\xd3\x58\x24\xd5\x32\xd4\xa5\xf6\x2c\x9d\x04\x8a\xd0\x46\xa9\xfd\x24\x88\x03\x3e\xc7\x23\xe4\xe1\xc0\x71\x5c\x86\xa7\x2c\x64\x19\xc1\xf1\x02\xc4\x01\xec\x03\xd7\x71\x29\xe4\x58\x08\x1c\xe8\x22\xc8\x53\x3f\x40\x1c\x66\x09\x15\x04\xc7\x09\x10\x2f\x78\x8e\xfb\x0a\x71\xe0\x99\x10\x77\xed\x1d\x7f\xc8\x32\x2c\x73\xf1\x1a\xef\x43\x29\x04\x02\x83\x11\x42\x2c\x78\x46\xa4\x74\xf6\x5d\xf3\xfd\xe7\xbe\xbc\x8f\xd6\xc5\xdb\xb8\xe4\x4f\x58\x36\x18\xc8\xf2\x28\xe6\xec\x92\x68\x28\x3e\x9c\x4e\x9b\x2b\x77\xb7\x29\x8c\x9c\x8a\x57\x87\xe9\xa4\x84\xa2\xd5\xa2\xd2\x6a\xe4\xc5\xdd\x68\x0b\x63\x6b\x59\x25\x62\xb4\x9d\x0f\xa3\xc9\x28\x4d\xec\xde\x5a\xed\xb0\x66\x49\xa8\x0f\xfd\x99\x29\xca\xcf\x8c\x8c\x9e\x03\x37\xdf\xc9\xfb\xec\x0e\xfc\x6e\xee\x9a\xd6\xca\xee\x82\x69\xfd\x40\xb6\xb5\xa9\x8f\xeb\xcc\x59\xfd\x8e\x50\xf4\x6c\x28\xf8\xe6\x04\xee\x44\xdf\xbb\xf9\x6b\xf5\x23\x7f\xf3\x06\xfe\xef\x50\xf4\x53\x8e\xf7\x04\x28\xf2\x78\x07\xf2\x81\x0b\x89\x8f\x39\x1e\x07\x88\x73\x38\x87\xe1\x78\x0a\x02\x4a\x03\x86\xba\x88\xf1\x1c\x16\x53\x41\xc0\x1c\xc2\x2c\x24\x8e\x87\xa9\xc3\xb0\x9c\xe7\xb1\x10\x60\x16\xbf\x42\x11\x7c\x26\x14\x5d\x7b\x9b\x1e\xb2\x1c\x02\x97\x77\xc5\x7d\x94\x42\x88\x10\xe2\x11\x83\x30\xcf\x3f\x0e\x45\xe5\x93\x76\xfd\x26\x14\x89\x69\x3d\x3b\x66\x65\xa0\x08\x29\x9b\x4a\x43\xe5\x84\xb4\xdc\x69\xdb\x7d\x1a\xeb\x3a\xd8\xd5\xed\x29\x9d\xd7\x93\xd5\x30\xaa\x94\xc8\x5a\x9d\xc1\x81\x94\xa8\xa1\x3c\xef\x06\x83\x26\x6f\x55\x25\x54\x6c\x6b\x61\x33\x3f\xa3\x42\x32\x37\x7b\x53\x4b\xad\x8f\x95\xd5\xb0\xa9\x46\xfa\x70\x0a\x86\x71\xfd\x9b\x37\x82\xdc\x00\x45\x99\x51\xff\xe7\xa0\x88\x39\xf0\x7b\x1c\x8a\x5e\xed\x9d\x9e\xd5\xef\x08\x45\x7f\x11\x14\x9c\xe8\x7b\x37\xff\x72\x74\xe4\x7f\xf6\xb2\xaf\x2b\x47\xa3\x7e\xc8\xf1\x9e\x71\x9a\x20\x20\x01\x43\x79\x17\xb9\x04\x21\xdf\x17\x3c\xdf\x61\x82\x80\x23\x98\x71\x69\x80\xa8\x40\x81\x80\x58\x81\x61\x99\x80\x77\xb0\xcb\x60\x80\x5d\x86\x22\x0f\xb8\x18\x01\xe2\x02\xef\x15\x8a\x1e\x3f\xfe\x0e\xaf\xc6\x42\x1c\x66\xc0\xc5\x97\x48\x0f\xa5\x10\x72\x2c\x42\x90\x63\x38\xfe\x09\x1b\x0d\x7a\x27\xad\xf9\xcb\x94\xa5\x58\xa1\x46\x58\x6d\x83\x45\x9c\x97\xfa\x91\xb6\x1d\x8b\x41\x79\x13\x6b\xbd\x7e\x61\xa9\x01\x4b\xf3\x61\x33\xe8\x4f\xda\x51\x2a\xef\xde\xf2\x8f\x5f\xbd\x02\xb0\x55\xd3\x61\x57\x28\xf7\x5a\x56\xaf\x0c\x16\x23\xd7\xa5\x8b\xce\x78\x63\xef\x86\x6b\xa2\x49\x0c\x5f\x85\xeb\xce\x64\xb3\xb3\x8d\xb4\xb2\x9d\xac\x5b\xfc\x94\xc9\x53\x5c\xc7\x43\x38\x58\x45\x55\x5e\x48\x78\xd5\x0c\xb4\x85\xd6\xdc\xc9\x61\x54\x4e\x1a\x86\x53\xf3\xec\x6f\x5d\xd7\xfd\xc9\x5b\xbf\xce\x1e\x65\x0f\x57\x74\x7a\x13\x32\x9a\xf8\xce\xa2\x30\x08\x1d\xa9\x1e\xa5\xea\x26\x71\xb6\x25\x18\x70\x9d\x86\xd5\x51\xfd\xf1\x0c\xf6\x15\xa7\x2e\xf2\xfb\x2b\x24\x8e\x1b\x0d\xc0\x59\xce\x17\xec\xfb\x49\xde\x2c\xff\x1b\x37\x1a\x74\x99\xd9\xc8\x5a\x67\x4e\x27\xa4\x27\x3c\x7f\x76\xa3\xc1\x03\x0b\xf7\xd0\xe7\xc6\xcb\x3f\x69\xe1\x5e\xfc\x68\x73\xf0\x98\xbc\xf1\x71\xbb\x5d\xd1\xfb\x41\x79\xdf\xc1\x95\x1f\xf2\x9a\xb5\x6e\x4f\x99\x92\xb5\x59\x3a\x51\x08\xd1\x62\x12\xf1\xdd\x3a\x76\xf3\x1d\x71\xa9\x4b\xcb\x98\x99\xd7\x3d\xa8\xf0\x92\x37\xaf\x31\x7a\xc5\xd7\x67\x2b\xb9\xa9\xf9\x51\x6d\x21\xad\x75\x57\x2f\x02\x75\x5b\x1d\xc9\x49\x4a\x16\xc5\x58\x36\xe1\x08\x95\x9f\x75\x7d\x39\x4f\x5c\xd7\x87\x2e\x21\x3c\x61\x11\x01\xbc\x83\x78\x2a\xb8\x1c\x16\x5c\x1f\xbb\xbc\x47\x7d\x96\x71\x85\xc0\x75\x5d\xce\x61\x5d\xc8\x23\x0a\x88\x43\x05\x9e\x60\x1e\x31\xd0\xf1\xde\xe2\x3c\xfc\x38\xb8\xe2\xd7\x58\xef\xfd\x0e\xe0\xb3\xf0\xc9\x43\xf6\xf2\x26\xae\xd7\x42\xf0\x86\xd1\x40\x80\x3c\x44\x3c\xc3\xdf\xfb\xc2\x4a\x66\x42\x62\x9f\x34\xa6\x74\xe2\x83\xb7\x62\xeb\xfb\xa7\x07\xf0\xde\x57\xde\xfb\xe6\x8d\x38\xf5\x80\x8f\x16\x83\xde\x30\xab\x4f\x06\xdb\xdb\xed\x6e\x5a\x8f\xfd\x5a\x3c\x9c\x4d\xf3\x25\x4d\xcf\x73\x60\x69\xa8\x45\x12\x4f\x77\x52\xa2\x5b\xdb\xf2\xac\x8d\x12\x6f\xad\xc9\x42\x23\xd4\x6a\xa8\xd6\x57\x22\x41\x80\x2b\x63\x2d\x6b\x42\xab\xb6\x4d\x88\x2b\xc1\x6d\xdb\x43\x5d\xbb\xcd\xac\x4b\xa3\x7e\x3b\xc1\x8c\x56\x1e\x8b\xfa\xdb\xb1\x7b\x45\xee\xb9\xbd\xae\xe5\xef\xc2\x06\xdb\xe8\x16\xc7\xb6\x49\x9a\xeb\x22\x42\x5d\xc3\x74\x1c\x98\xca\xfd\x1e\x6a\x87\x25\xa3\xdf\x6a\x15\xf2\x5c\x65\xad\xfb\xee\xb4\xbe\x6c\x48\x9b\x88\xd7\x9a\x36\xd5\x5b\x03\x81\x69\x3b\x63\x4b\x88\x8b\xf9\x09\xaf\xe7\x3b\xca\x5c\x57\x25\xf3\xf3\x73\x58\xf5\x4c\xfa\xec\x74\x93\x96\x78\xf6\xfb\xc9\x58\x92\x49\xb7\xa5\xff\x09\x63\x89\xfd\x00\xff\xa8\xf8\x7e\xc2\xf9\x39\xfc\x6f\x1e\xcb\xf4\xc4\x37\x8e\x80\x58\x3e\xe5\xf9\xec\x1d\xdf\xc7\x1b\x43\x33\x5b\xf5\x44\x65\x4a\x9a\xf6\x5c\xed\x2e\xd6\xb8\x12\x0e\xc6\xd5\x7a\x91\x77\xcb\xc9\xd0\x9f\xe5\x99\xb1\x65\x0e\x91\x4d\x84\xb0\x7d\xf0\xd1\xcc\x5e\x91\xc6\xfd\xc7\x55\x32\xfc\x6f\x1d\x97\x96\x15\x3c\xb5\x8f\x93\x80\xe2\xe0\x84\xe7\xf3\xc7\xa5\xa3\xed\xde\x62\x80\x07\xc6\xd4\x57\xd9\xdd\x3f\x69\x4c\xfd\xef\xb4\xf5\xff\x31\xa6\x95\xc8\x55\xd4\x61\x71\x9f\x04\xc3\x8e\x5c\x58\x09\xae\xb9\x49\xa9\x43\xbc\x34\x96\x81\x37\x9c\x33\x3e\xa7\xd6\xb6\x62\xc1\xe8\x8f\x24\x61\x0b\xdb\x55\x3d\xf0\xe3\x09\x97\x6e\x75\x53\xe2\xe3\x66\x37\x5d\x26\x93\x5e\x03\x84\x8a\x5f\xdb\xd8\xa1\xe9\x36\x1b\x92\xf8\xef\x7f\xff\x0e\x20\x00\xd3\x9e\x47\xc6\x74\x6c\x0d\x6c\x58\x6a\x1a\x71\xea\x0b\x60\x02\xca\xe1\x32\x11\xa1\x25\x30\xfd\xa1\x09\x4d\x45\x2f\xac\xb6\xee\x0e\x75\x89\x51\x33\x5a\x89\xa3\x4b\x72\xa8\x8e\x19\x4d\xf7\x95\x6e\x04\x02\x27\x0d\xe6\xba\x5c\x98\x0c\xab\xc6\x26\x9d\x3e\xed\x52\x0b\xd7\xa5\x7e\xe0\x12\x48\x03\x1f\xf8\xc4\x17\x38\x44\x21\x24\x98\x61\x30\x76\x20\xe7\xf2\x00\x10\x8e\x83\x08\x60\x28\x20\x8a\x5c\x87\x77\x41\xe0\x02\x48\x59\xe4\x39\xf0\x95\x33\x79\xfc\x52\x0b\x48\xae\xcd\xdc\x04\x0c\xe0\xe5\x2c\xf6\x47\x29\x44\x2c\x84\x08\x32\x04\x71\x4f\xb8\xd4\xa2\x7f\xe2\x26\xbf\xa0\x5b\x79\xba\x6d\x6a\xed\xc6\xac\xc3\xaa\xb2\x32\x09\xcb\xa2\x22\x0c\xe6\xfd\x8a\x39\xab\xf5\x1b\x33\x3b\x19\xef\x96\xf9\x79\xcf\xda\xb4\x0b\xc2\x3e\xf3\xf9\xc5\xc5\x65\x52\xbd\x3e\xee\x09\x9b\x26\xea\x55\xe7\x2d\x76\xd5\x29\x98\xa0\xb8\xf0\x77\xed\x61\xa7\x68\xb7\x10\x19\xad\xc3\xfe\x46\x2f\x0e\x82\x45\x2b\x31\xe4\xd0\x01\xc5\x5d\x33\x59\x14\xdc\x50\xad\x60\x3d\x1f\x4c\xec\x4a\xbb\x62\xfa\xfd\xbe\xb3\xeb\x55\xea\x70\x84\xc3\x12\x37\x33\x9f\xfb\x18\xa5\x9c\x41\x8c\xe2\xdc\x1b\x8f\x14\xa3\xcf\xac\x86\xe9\xa6\x52\x19\x0e\x8a\xba\x5d\xed\x76\xac\xca\x16\x1a\x7d\x58\xd3\x78\x2e\x58\x58\xc0\x33\x83\xc2\x7e\x88\x3e\x8e\xb6\xe8\x2c\xe7\x0b\xf6\xfd\x24\x6f\x96\xff\xad\xa3\x9d\xde\xeb\x7a\xbe\x78\xce\x14\x7f\xc6\xcc\xed\xbf\x04\x05\xc5\x8f\x36\x47\x8f\xc9\xdb\xcb\x58\x77\xf2\x83\xf2\xbe\xa3\x76\x6b\x2c\x6b\xa0\xe0\x19\x4b\xb0\x5d\x98\xcd\x78\xb2\x06\x8d\x96\x33\xf3\x18\xdb\x1c\x74\x95\x46\xde\x8e\x49\xe8\x19\xa9\xad\xb2\x93\x9a\x92\x92\x70\xd9\xf2\x76\x71\x75\x0d\xc9\x70\x4b\xe5\xc2\x8c\x94\x25\xb3\x63\xa9\xdd\x6e\x37\x01\x5b\xa3\x11\xad\x2a\x43\x4a\xc0\xb3\x1e\xc7\x74\x78\x86\x70\x00\x7a\xac\x0f\x98\x40\xa0\x1c\x76\x5d\xc6\xf3\x02\x82\x1d\x2a\x40\x07\xba\xd8\x05\x94\xf0\x2c\x26\x20\xa0\x3c\x40\xc8\x81\x18\x21\x1e\xb0\x01\xeb\x12\x96\x7b\x4b\x8b\x7d\x5c\xb2\x21\x36\x4a\x7d\xb9\x5d\x94\x1a\x86\xd9\xd3\x9a\xb2\x54\x51\xec\xba\x28\xe9\x75\xa9\xd3\x57\x2c\x05\x77\xfb\xe5\x3e\x92\xfa\x72\x1f\xe9\xb0\xd3\xab\xe2\xaa\xca\x11\xad\xca\xda\x19\x50\x04\x90\xbf\xb6\xad\x0a\x31\x18\x5f\x3e\xb7\x7e\x28\x85\x98\x21\x80\x07\x1c\x64\xb9\xc3\x62\xe1\x8d\x90\xb0\xcf\xd0\x7b\xe7\xba\x51\xf1\xc4\x1d\x6f\x85\xd9\xf7\xcf\x61\x12\xb7\xff\x1c\xca\x8b\x62\x95\x9d\x7b\x3d\xbb\xbe\x13\x95\x50\x65\x78\xa9\x0f\x6a\xdd\x70\xbd\x6c\xc8\x55\x67\x35\xdc\xe4\x9b\x5a\xb8\xd4\x0b\xb5\x09\x1e\x5a\x46\xbd\xd2\xb6\x8a\x4d\xea\x5a\x09\xe9\x2a\xfa\x58\x18\x75\xe2\x41\xd9\x60\x94\x24\x5d\xc9\x52\x1f\x8e\x88\xa8\xec\xd2\x41\x39\x0a\x04\xf1\x7b\x19\xfc\x2f\x26\x37\x7b\x5d\xcf\xc0\x47\x16\x72\x9c\x9e\x86\x87\x0a\xf4\x6b\x91\x57\xef\x74\x6c\x5b\x34\xa0\x34\x9d\x4c\x3b\xde\x72\x02\xfd\xd1\x56\x6f\x22\x76\xea\xf7\x4a\x6a\x61\x1f\x29\x66\x02\xe6\xfb\x2f\x04\xc3\x8f\xf1\xdf\x6f\xae\x6e\xdc\x7b\x21\xd8\x4f\x35\xd6\xc5\xee\xfd\xdb\x6f\xff\xfc\xe7\x6f\xff\xfc\x67\xae\xe1\x84\xf4\x8f\xdc\x20\x8a\xe7\x2f\xe1\x68\x10\x3b\xfb\xbe\x7d\xf2\xfd\x65\x3e\xa1\xdb\x7f\xe5\x8c\xed\x9c\xfe\x91\x93\x9a\x8d\x8e\xd1\x16\xb5\x86\xf1\xaf\x5c\xc7\x1b\xd2\xd0\xf9\x23\x37\x5f\xb9\xd3\x91\xf7\xaf\x5c\x33\x9d\xd1\xf8\x8f\xdc\x2b\xe5\xdf\x7e\x13\x6b\x86\xd2\xce\x19\x62\xb1\xa6\xe4\x9a\x8d\x9a\x7d\x4a\xf5\xb7\x5c\x2e\x97\x13\x65\x39\x43\xf1\x2c\xe3\x9c\xde\xd6\xea\x62\xdb\xce\x55\x15\x3b\xf7\xf7\x91\xff\x8b\xf4\x1f\xf0\xe4\x24\x09\x5d\x26\x27\x5f\xf7\xff\x79\xf1\x22\x9f\xbe\xff\xb9\xdc\xce\x3f\xfe\x1c\x25\xc9\x8a\xc6\x2f\x4f\xd1\xee\x33\xdb\x73\xca\xdd\x25\x58\xce\x6c\x68\x2d\x53\xc9\xfd\xfd\x58\xfd\xf7\xdc\xb1\xfe\xc7\xdf\xfb\x1f\xdc\x68\x9a\xe7\x34\xeb\xcd\x8a\xdf\xd4\xa8\xd1\x9c\xee\x9d\xe1\x65\xee\xc4\xcb\x91\x37\x9a\x3b\xb3\x8c\x26\xe7\x8b\x9f\xac\xd9\x79\x26\x5f\x69\xfa\x85\x58\xdf\xd6\x3c\x33\xda\x9e\xd7\xfd\x52\x85\x27\x6b\x7f\x89\xcd\x57\xfa\x7f\x29\xda\x55\x0b\xec\x5d\xda\xdd\xbe\x7b\xf5\x87\x2a\x5a\x43\x56\x7a\x57\xb4\x90\xda\x8a\x68\x28\xfb\xaa\xa7\x74\x72\xcd\xc6\x69\x87\x30\x3b\x5a\xa3\x9c\x73\x97\x31\xa5\x1f\x3d\xec\x42\x4f\x72\xb7\x2f\x8e\xe7\x45\xab\xd9\xf2\x6e\x71\x8e\x24\xb2\x92\x7c\x0a\xaa\x3e\xcb\xb3\xaf\xfc\x7b\xee\xfd\x8f\x97\x84\x2e\x56\x74\xe6\xd1\x73\xc2\x0d\x9d\x64\xf8\x88\x64\xaf\xbf\xff\x9e\x58\xd9\xb6\x7d\xfd\xd5\x39\x69\xa6\xd4\x1f\x3c\xd0\x70\x07\x0a\xdf\x93\x68\x5f\xf7\x60\x9e\xdf\x73\xce\x7c\x3e\x1d\x79\xfb\x0e\x18\xc5\xfe\x05\x60\x7c\xa1\xaf\xbe\xf1\x56\x7e\x87\xa4\xef\xb8\xbc\x17\xf8\x84\x5c\x56\x6c\x1a\x04\xd4\x3b\x75\xb5\x5f\x71\x62\xe4\xff\x9e\xfb\x9f\xb7\x1f\xff\xcf\x25\x61\x47\xfe\x93\xc4\x1c\xf9\xdf\x16\xf0\xc3\xf5\x5e\xc5\xbb\x43\xe8\x68\xfe\x32\x7f\x96\xdc\xef\xb4\xb2\xa2\x5f\x18\x1c\xee\xd2\xe4\xbc\x02\xcb\xcd\xf3\x14\x78\xa7\x75\xc1\xa7\xef\x54\x21\x4b\xe1\x9c\x12\xd1\xfc\xd5\x2b\x87\xd1\x5d\x3a\xbc\x0b\x7f\xa4\x71\xaf\xf1\xbf\x36\x74\xf2\xde\xdb\xdf\xa0\xfa\x71\x5b\x7f\x26\x97\x15\x79\xff\xef\x27\x32\x9e\x97\x28\x6b\xd7\x67\x89\xf5\x0b\xcd\xef\xc1\xdb\x39\x01\x97\xfb\x26\x59\x3e\xd2\xac\x47\x1a\xf7\xbb\xe4\x35\xf7\x5b\xc6\xfe\x1b\x2a\x06\xc1\x03\xc3\xc1\x27\x2a\x27\xb2\xfa\xf4\x44\xb2\xb7\x4a\x17\x65\x79\xeb\x40\x34\x7e\x99\x46\xd1\x64\x35\x7f\x4c\xa2\xcf\xb4\xae\xc9\xf5\x51\xfb\x3d\xca\xb8\x20\xdf\xdc\x19\xc5\x2f\xcb\x51\x48\x9f\x22\xe1\x29\xb5\x6b\x32\xba\x4e\x72\x98\x81\xf8\xbf\xe7\x4e\x45\xfe\x3d\xf7\xde\xb1\xbc\x69\x94\x50\xff\xc5\x59\x5e\x50\xe2\x09\xbd\xe5\x9d\xce\x35\x89\x6f\x1c\x93\x5e\xa9\x3e\xcd\xba\x37\x18\xf6\xaa\xdd\x46\x33\x9f\x6e\x5e\x4e\x80\x3e\x79\x89\x66\x2f\x8e\xef\xc7\x34\x49\x1e\x35\xe8\x55\x06\x9f\xa2\xe3\xf7\xe2\x93\x78\x74\x5f\xf1\x06\xd9\x1f\xf7\x83\xaf\x68\x5f\x97\xf8\x4c\x2f\xfb\x4c\xf0\x3d\xf6\x79\xa5\xf7\x3a\x9b\xbe\xdb\x1f\xbe\xa4\x7a\x35\xd8\x7a\xad\x74\x45\xd0\xf7\x91\xeb\x95\xe4\xc1\x89\x9e\x24\xed\x39\xd2\x57\x07\xcd\xef\x7a\x72\x86\xf8\xb3\x9d\xe1\x13\xe9\x7b\x46\xf9\xcb\xe4\xc2\x79\x14\xbf\x02\xdf\x9a\xc6\xc9\x28\x9a\x3d\xdf\xd0\xa7\x1c\xae\x8b\x7f\xf2\x83\xef\x2b\xf3\x0e\x3d\x77\xce\x0f\xbf\x67\xff\x0c\x8f\xab\x9a\x64\xea\x7e\x5f\x89\x79\x4c\xd7\xa3\x68\x95\xfc\x29\xda\x9c\x63\x76\x55\xad\x73\x3f\xfa\xbe\x7e\x1f\x53\xd7\x1f\xd3\xe9\x83\xc1\x55\x3d\x2e\xe6\x18\x3e\x93\x3e\x8c\xb7\x3f\xd2\xb5\x4f\xa9\x9f\x9d\x76\xdc\xda\xc1\x3f\x13\xfd\x1c\xb8\x3e\xa9\x87\x7f\xc5\xe2\x3b\x3a\x5c\x89\xa6\xbf\x64\xf6\xbc\xe1\xeb\x57\xc2\xdf\x92\xfd\xfa\x20\x96\x9d\xe2\xfc\x84\xdb\xfc\x4a\xff\xee\x09\xd6\x5b\x10\x77\x18\xc8\x3f\xf2\x3a\x2f\x6e\x14\x4d\xee\xb6\xf2\x17\x34\xaf\x86\x08\x7f\xff\xbb\x4f\x97\xce\x68\x9a\xe4\xfe\xf9\xbf\xff\x9b\xfb\x5b\x12\x4d\xfd\xcc\xaa\xc1\xdf\xfe\xf8\x63\x49\x37\xcb\x7f\xfc\xe3\xf7\xdc\xe5\x8a\x5e\xe4\x7f\xaf\xe2\x3e\x03\x7a\xb9\xaa\x1b\xad\x06\xc3\xe5\xb7\xd8\x7f\xaa\xfa\xb5\x00\x9f\xaa\x9e\x88\xf0\x8f\x5c\x57\x55\xda\xca\xde\xc9\x72\xff\xce\x21\xf4\x55\xd6\xfc\x35\xfa\xfe\xfc\xf5\x65\x3f\xb1\x39\xa4\x4f\x5e\x82\x4c\x86\xbc\x54\x7d\x4e\x92\xdc\xa7\xd7\x52\xe2\x97\x24\xc9\x95\x9a\x6d\x45\x2b\x37\xf6\x09\xf1\x93\x1a\xff\xc8\xb5\x95\x92\xd2\x56\x1a\x92\xd2\xf9\x25\xdc\xbd\xb2\x7e\x70\xd1\x12\xef\x13\xba\xbf\xdc\x0e\x59\x39\xce\x59\xe1\x63\xae\x7c\xd6\x06\x6f\x29\xfc\xdb\x2d\x70\x98\xd5\xfe\x27\xb8\xc3\x05\x61\x3e\xdb\xe2\xd7\x4a\x4f\x76\x8a\xd3\x89\xfe\x7f\x82\x41\x2e\xbb\xc6\x2f\x99\x94\xef\x7a\x87\x1e\x25\xcb\x41\x4c\x3b\xad\x5a\xce\x77\x96\xce\xab\x8b\xe5\xfc\x55\x38\xcf\x79\x51\x38\x9f\xd2\x25\x7d\xd3\xe1\xff\x03\x00\x00\xff\xff\xa6\xba\x9d\xb8\x29\x53\x03\x00") + +func kahunaHorizonSqlBytes() ([]byte, error) { + return bindataRead( + _kahunaHorizonSql, + "kahuna-horizon.sql", + ) +} + +func kahunaHorizonSql() (*asset, error) { + bytes, err := kahunaHorizonSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "kahuna-horizon.sql", size: 217897, mode: os.FileMode(420), modTime: time.Unix(1508958234, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _non_native_paymentCoreSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x57\x93\xe2\xca\xb2\xee\xfb\xfc\x0a\xc5\xbc\xcc\x5a\xd1\xbd\x36\x92\x4a\x76\xe6\xce\x8e\x90\x40\x78\x84\xb7\x37\x6e\x4c\x94\x13\x08\xe4\x90\x41\xd0\x27\xce\x7f\xbf\x81\x69\x5c\x03\x6d\xe8\xd9\x7b\x9f\x38\x8b\x87\x36\x28\x95\xf9\xd5\x57\x59\x55\x59\x59\x52\x55\x98\x78\x9e\xed\x8d\x99\x90\x62\x3b\xa0\x5f\xb6\xbf\x18\xcb\xf6\xec\x68\x42\xc9\x23\x83\x1d\x3f\x5a\x5f\x77\x28\x19\xd3\xf0\xcb\xf6\xd7\xe6\x5b\x4a\xbe\xfc\xf5\xd7\x97\xbf\xfe\x62\x1a\x7e\x14\x8f\x43\xda\x6e\x56\x19\x02\x63\x88\x60\x44\x19\x92\xb8\xc1\xfa\xf2\xfa\x7a\x2e\x71\x03\x4a\x18\x2b\xf4\xdd\x83\xc0\x82\x86\x91\xed\x7b\x8c\xfa\x0f\xe9\x1f\xe2\x91\x14\x5a\x31\xc1\xf8\xd7\xfa\xf6\x33\x91\x2f\x6d\xa3\xc3\x44\x31\x8c\xa9\x4b\xbd\xf8\x57\x6c\xbb\xd4\x4f\x62\xe6\x27\xc3\xfe\xd8\x5c\x72\x7c\x3c\x7b\xf9\xad\x4d\x1c\xfa\xcb\xf6\x7e\xc5\x21\xf4\x22\x88\x63\xdb\xf7\x7e\x45\x34\x5a\xeb\x7d\x29\x8c\x1d\x7b\xad\x9a\x7a\xd8\x27\xeb\x32\xff\x64\xbe\x75\x3b\x79\xe5\xdb\x8f\x67\xdb\x1e\x81\x21\xf9\x85\x7d\xcf\xf2\x43\xd7\xf6\xc6\xbf\xa2\x38\xb4\xbd\x71\xc4\xfc\x64\x7c\x6f\xa7\x63\x42\xf1\xec\x97\x95\x78\x5b\x5b\xc8\x27\x36\x5d\x5f\xb7\xa0\x13\xd1\x13\x33\xae\xed\xfd\x72\x69\x14\xc1\xf1\x46\x20\x85\xe1\xba\x22\xb6\x22\xa1\x9f\xfe\x8a\x28\x4e\x42\x3b\x5e\xad\x95\x5b\xd6\x8f\x1d\x01\x14\x86\x78\xf2\x2b\x80\xf1\x84\xf9\xc9\x04\x09\x72\x6c\xfc\xb8\x66\x0c\xc3\x18\x3a\xfe\xf8\xc7\x97\x2f\xb9\x56\xbd\xc1\x94\xcc\x9c\x31\x60\x4a\x79\xc6\x18\x94\xda\x9d\xf6\x4e\xf2\x1f\x91\x3d\xf6\x68\x18\x41\x8c\xfd\xc4\x8b\x7f\xdc\x96\xa5\x8e\x63\x7b\x63\x3b\x8a\x12\x1a\xda\x1e\xa1\xcb\x57\xe4\x71\x30\x4f\xfc\x30\x71\x23\xb4\x8a\xe8\xfc\x55\x61\xea\x2d\xde\x22\x19\x84\x36\xa6\x6f\x30\xbf\xf5\xcc\xb7\x68\x9c\xd8\x51\x6c\x51\xfa\x46\xc9\x37\x88\xa1\x64\xf5\x1e\xa2\x76\xec\x23\xe8\x40\x0f\xd3\xe8\xc7\x17\xad\xda\x31\x5a\x4c\x47\xd3\xab\xc6\x91\x74\xdd\xac\x0e\x9f\x6f\x89\x97\x6b\x28\x7e\xb8\x62\x36\x8a\xb3\x75\xb3\xdd\x69\x69\x25\xb3\x73\x24\xbf\x97\xf9\x15\xcc\xe8\xea\x6d\x5a\x2d\x4a\xdf\xa2\xf8\x20\xf6\x76\xdd\x61\x12\xc5\x8e\xed\xd1\xe8\x96\xe6\xbd\xd0\x9b\xf5\xae\x51\xd0\x4d\x37\x70\x43\xef\x41\xe8\xed\x7a\xb7\x2d\xe3\x96\xd2\xad\xc4\xdb\x35\xee\xdb\xc3\x2d\xa5\x7b\xa1\x37\xeb\x0d\x12\x14\x25\xe8\x86\xce\xad\xc0\x7b\xf4\x39\x76\x34\x99\x27\x34\xb9\xc5\xe9\xb1\xd8\xdb\x75\xd3\xdb\x9c\x6e\xae\xbf\x59\x9b\x6f\x59\xb7\xd5\x6d\x05\xde\xac\x6f\xdb\x65\x4c\x28\x24\xb7\xd5\x9e\xc8\xfd\x66\xed\xbb\x6e\x8c\xce\x7f\xbd\xd1\x0c\x82\xde\x0d\xe5\x08\x7a\x6f\x06\xbc\xeb\x97\x6e\x61\x7d\x16\x79\xaf\xce\xf5\xb0\xff\xba\xda\xb5\xd4\x4e\xf3\x46\xf6\x5c\xf1\x79\x67\xf8\x9a\xd8\xa1\xdb\x7a\x45\x72\xdf\x0d\xdd\x96\x3b\x74\x2b\xaf\xc8\x6d\x7b\x8a\x57\x84\xf6\x2d\xff\x55\xb9\x37\x15\x62\xdb\xea\x5f\x95\xd9\xb7\xe1\x57\x24\xe9\xab\x05\xd8\x36\xb6\xdb\x32\x27\xbe\x7d\x5b\x14\x41\xef\xb6\xc0\xb3\xef\xbd\x49\x6a\xed\x4a\x3b\x41\x63\xd0\x31\xcc\x76\xa9\x6e\x1e\x0b\x3b\xc1\x38\x9a\x3b\x3b\x89\x76\xb6\x68\xd4\xb4\x17\xba\x7e\xec\xe2\x5b\x13\xba\xf4\xfb\xf3\x77\x4c\x67\x15\xd0\xef\xbb\x5b\x7e\x30\x6d\x3c\xa1\x2e\xfc\xce\xfc\xf5\x83\xa9\xa7\x1e\x0d\xbf\x33\x7f\x6d\xc2\xde\x6c\xcb\xd0\x3a\xc6\xb3\xe6\x67\x7d\x5f\x4e\x34\x9e\x5e\xdc\x29\xce\xd6\x6b\x35\xc3\xec\xdc\xd0\xbc\x15\x60\xea\xe6\xa9\x02\xa6\xd4\x66\xbe\x3d\xc7\xa8\xcf\xdf\x45\x1b\x25\xdf\xce\x2d\x3f\x17\x7f\x67\x73\xcf\xd0\xab\xe5\x39\xe1\xd2\xac\x77\xce\xf8\x64\xfa\xa5\x4e\x71\x0f\xeb\x38\x28\x3d\x31\x7f\xd0\x72\x06\xe4\x3d\x85\x7f\xa1\x64\x43\x40\xa3\x9a\x09\xc6\xeb\x99\x48\x10\xfa\x98\x92\x24\x84\x0e\xe3\x40\x6f\x9c\xc0\x31\xdd\xd0\xf0\xc6\x20\x7a\x2d\x46\xa8\x05\x13\x27\xfe\x15\x43\xe4\xd0\x28\x80\x98\xae\x67\x04\xdf\xce\xae\xa6\x76\x3c\xf9\xe5\xdb\xe4\x28\xc8\x3f\x29\xec\xb1\x43\xee\x8a\xb9\x71\xdd\x43\x21\x9f\x1d\xe0\x12\xe1\x5b\x2f\x3f\xee\x45\xff\xf8\xc2\x30\xcc\xf3\x37\x36\x61\xf0\x04\x86\x10\xc7\x34\x64\x16\x30\x5c\xc7\xa1\x7f\x88\xd2\x9f\x9b\xba\x31\xbb\xd5\xea\xe3\x46\x7a\x7d\xa3\x07\x5d\x7a\x41\x58\x12\x2e\x09\x2f\xa0\x93\x5c\x92\xe6\x38\xfe\x5c\xdc\x81\x51\xec\xfa\xc4\xb6\x6c\x4a\x18\xdb\x8b\xe9\x7a\x7e\x98\x33\xf2\x5a\xb7\xda\x61\xd8\xbd\xf0\x97\x3f\xcf\xbd\x60\xdf\x9e\xef\x64\x25\xfa\x10\x25\xbb\xe8\x9b\x41\xf6\xd8\xf6\xe2\xb3\x8b\x11\x9d\x7b\x89\x7b\xf9\x9a\x97\xb8\x51\x82\xa8\x17\x87\xeb\x89\xdd\x73\x81\x4f\x65\x6c\xcf\x72\xe0\x7a\xfe\x47\x68\x14\x5f\x86\xb3\x15\x9c\xf8\x2e\x25\xbe\x0b\x6d\xef\x82\x14\x78\xc1\x75\x3c\x09\x69\x34\xf1\x1d\x12\x31\x31\x5d\x9e\x23\xb3\x1c\x38\xbe\x86\xe8\x62\x2d\x9d\x8a\x1c\x8d\xcc\xfb\x61\x7e\xc7\xd2\xaf\xcd\xac\x96\xc9\x16\x8d\x6c\x85\xf9\xe3\x8f\x67\xee\xfe\xf9\x93\x61\xff\xfc\xf3\xfa\xdd\x27\x54\x9d\xe9\x38\xa5\x71\xab\xe9\xa5\x8f\xac\x07\x85\x8f\xba\xc7\x3a\x30\xda\x7a\x86\xe7\x13\x7a\xec\x16\x27\xee\xf0\xd2\xe8\xe9\xa0\xf5\x51\xf3\xa7\xe1\xdf\x16\xc8\xee\x3b\x18\x4d\x8e\xc0\xbc\x6c\x81\x41\x48\x17\xaf\x0a\xa1\x04\xcf\x68\xec\xd8\x51\xfc\xaa\xe8\x3e\xa6\x7c\xae\xf9\xed\xd7\x9b\x24\x4e\x6c\xbb\x57\x1a\xc1\xa6\xb7\xb9\xe0\x66\x47\x35\x7d\x1a\xba\xee\xf5\x9d\x55\xf5\xc1\xce\x15\x87\xb9\x16\x01\x9f\xaa\x39\x94\xe2\x9a\xb7\xec\x22\x92\x8f\xd6\xd8\x6e\x7a\xf1\xc7\xae\x0b\x70\x1c\x1a\xbe\xb1\x33\xd9\xdc\x69\x93\x6b\x9d\xc9\x26\x8f\x02\xa3\x88\xc6\xf1\x2a\xa0\x57\x9a\xdf\xb1\x18\xf6\xc9\xc5\xde\x97\xff\xf3\x44\x76\x9b\x71\xb8\xd5\xbf\x6c\x33\x13\xaf\x99\x3e\x92\x7a\xcd\xf2\x71\xaa\xe3\x96\x61\xe8\xae\xbb\x80\xcb\x84\x6c\x32\x3a\xde\x15\x2c\x9b\x8b\xd7\xba\xa8\xcd\x45\x86\xf8\x09\x72\xe8\xba\x95\x60\x7b\x93\x20\xfc\x5d\xdd\xe0\x6e\x3a\xb9\x2d\xcb\x99\x37\xee\x0a\x78\xc5\xa3\x77\x77\xee\xfc\xe2\xec\xd6\x67\x6f\xb9\xe6\xc6\xdb\xd8\xfb\xa3\x5e\xbc\x9d\x72\x6f\x9d\xd8\x0e\x2e\xd5\xa5\xf8\xa2\xbf\xf1\xc3\xf8\xc6\xd0\xbd\x1b\xf7\xe8\x32\x86\x71\x4c\xdd\x20\x66\xd6\x8d\x39\x8a\xa1\x1b\x30\xeb\xe8\xc7\x4f\xb6\xdf\x30\x4f\xbe\x47\x5f\x8e\x96\x16\xb4\x9d\x24\x3c\x1a\x2b\xaf\x59\x38\xe2\x6f\x9b\x17\x38\xba\xf9\xe5\xe8\xb1\x57\x7b\xa5\x0a\x76\xa9\x05\x3f\x3c\xaf\xb9\x3f\x36\xc5\xfd\x27\xc3\xfe\xc9\x68\x66\x8e\xd9\xfe\xfb\x7f\x7e\x32\x92\x28\x02\xf1\xcf\x8b\x15\x72\x3c\x6d\xfa\x70\xbd\x1c\xa7\x59\x8e\x87\x83\x6b\xfd\xc1\x26\xc7\xb5\xee\x7f\x2f\x02\x5a\xcf\xf5\xee\x80\x12\x25\x68\x07\x22\xa4\xd1\xc9\xd8\xf8\x32\xea\x58\x37\x9a\x90\xc2\x7d\x83\x79\x89\xe7\x68\x8e\xfa\x51\x4c\x07\x15\x6f\x19\xb4\xaf\x8c\x6b\x67\xd7\xa9\xb7\xa0\x8e\x1f\xd0\x57\x46\xb1\x83\xe9\x3b\xc6\x9e\xa3\xe9\xfc\x1d\x14\x3c\x27\x0c\xb7\x14\xcc\x23\xfa\x86\xc1\x1d\x46\xf1\x6b\x44\xac\x15\xbd\x4e\xc2\x73\x22\xf2\x44\xe3\x39\x11\x27\xd6\xae\x92\xb1\x4b\x80\x7c\x98\x89\x5d\x32\xf6\x23\x81\xfd\x56\xfb\x8c\xae\xde\x24\x9d\x52\x7b\x3c\x89\x5f\xd0\x76\xa1\x48\x87\xdc\xcf\x87\x4b\x75\x48\x5d\xff\x71\x68\xe2\xa7\xf3\xb2\x0b\xcd\xef\x56\x47\x70\x94\xb9\xfa\x28\xaa\xa3\x44\xfd\x47\xe8\x7e\x2d\xb6\xb8\x15\x2a\x5c\x52\x75\x3d\x00\x39\x9f\x0b\x39\xb6\x6b\x5f\x89\x30\x6e\x4e\xee\x3e\x2f\x3e\x38\x5a\xbe\xf8\xd0\x44\xe9\xe8\xfe\x6d\x69\xce\x6e\xdf\x15\xf1\x9f\x97\x1b\xd9\x49\x7e\xf3\xc3\xb5\x7f\xbc\x04\xb4\xad\xff\x78\x79\xd2\xed\xbe\x61\x3a\x71\x5e\x33\xcb\xcd\x22\xd8\xd5\xab\x78\x02\xbd\x31\xbd\x38\x85\x3d\x26\xe7\x78\xd5\xe9\xe3\xfd\xf2\x21\x59\xfc\x71\x8a\xfe\xc5\xfc\x20\x9f\xac\x2e\x91\x13\x2f\x43\x1a\x25\xce\xc5\x9e\x3c\x5e\xba\xf4\xd5\xe9\xda\x61\x85\xf0\x23\x7c\xe6\xd6\xf3\x41\xcb\x0f\x5f\xc9\x6b\x31\x39\xad\xa3\xbd\xc2\xef\x6d\x95\xd1\xbb\xf5\x95\xcc\xb6\xd1\xea\x30\x25\xb3\x53\x3f\x64\x85\x7a\x5a\xb5\x6b\xb4\x99\x3f\xbe\x15\xf4\x56\x63\x58\x2c\x55\xf9\x6c\x09\xe4\xcd\xa6\xa0\x0f\xaa\xf9\x9a\x99\xab\xe6\xcb\x5d\xb3\xd1\xe5\x8b\x43\x30\xaa\xe5\xdb\xc5\xba\xd9\xcd\x1a\x75\xad\xdd\x97\x9b\x59\xb9\x3e\xe0\x8b\xdf\x1e\x19\x75\xf7\x91\xb6\xbf\x64\x96\x7d\x64\xc0\x23\xc3\x3e\x6e\x09\x66\xbe\x7d\x7b\x64\xbe\x69\x4d\x4d\xd3\xb4\x9f\x3f\xbf\x6d\x2e\xf0\x7f\xfe\x78\x15\xcf\xa0\xd0\x2c\xf7\x7b\xd5\x7e\x7d\x58\xcc\x57\x7b\x9d\x4a\xbf\x27\xe6\x0b\x45\x0d\x54\xcd\xe1\x90\x2f\x37\x2b\x35\xb9\xae\x95\xb5\xae\xd1\xcc\x77\xa5\x6a\x23\xdb\x36\xf2\xbd\x41\xdd\x3c\xe0\x59\xc3\x50\x44\x45\x55\x81\x20\xaa\xe0\x91\xe1\x6e\xe0\x01\xaf\xe3\xc9\xf2\xa0\x99\xe7\x8b\x5d\x43\xe4\xb5\xda\xa0\x9b\xef\x16\x81\x36\x2c\x6b\x83\x41\x61\x30\xe8\xf1\xbd\xe2\x60\x38\x6c\x49\xc6\x70\x60\x74\x1a\x95\xdc\x60\xd4\xd6\xfa\x92\x3c\xa8\x0b\xd7\xf1\xdc\xe2\x47\x78\x03\x9e\x41\xa5\x20\xb5\x4c\xa1\x6e\x96\x8c\x46\xb6\x66\xe6\x75\x19\xf0\x9a\x00\xa4\x91\xd8\x30\x73\xed\x56\xb5\xd0\xaf\xc8\x05\xbd\x9a\xad\x35\xab\xa5\x7c\x5d\x68\xcb\xc6\xb0\xdf\xeb\xee\xf1\x28\x27\x78\x84\xdb\xfc\x88\xd7\x5d\xfc\x3c\xfb\x74\x87\x6b\x5f\xcf\x29\xbd\xd7\xbf\x4f\xf3\x4a\x7b\xd2\x24\x40\x54\xc5\x12\x81\x44\xa9\xa4\x10\x0e\xf1\x32\x12\x91\xa2\x5a\x3c\x80\x96\x08\x38\x0e\xc9\xa2\xa4\x42\x5e\xb0\xa0\xc5\x09\x2c\x80\x84\x45\x22\x8f\x24\x00\x10\x2b\x23\xaa\xaa\x6b\x62\xd8\x3b\x3f\x6b\x1d\xa2\xcc\x43\x9e\x02\xde\xb2\x78\x41\x81\xac\x8c\x58\x2a\xb3\x16\xe1\x2c\x89\x00\x4e\xc1\x9c\x05\x31\xe1\x59\x24\x61\xcc\x2a\x18\x00\x22\xca\xb2\xc8\x8b\xaa\x22\x29\x1c\x2f\x42\x4e\xfa\xb6\xa9\x2d\x76\x5d\x4d\xff\xb1\x1f\x7d\x50\xb1\x85\x55\x66\xd5\xae\xe8\x72\xce\xcb\xa9\x45\x9e\x5d\x4e\xf5\x87\x88\x1d\xc7\x51\x5a\x4a\x9f\xb8\x01\x69\xf7\x87\x50\x2f\xc3\xfc\x78\x2d\x6f\x98\x42\x15\x3e\x05\x7c\xf3\x55\xcd\x23\x6d\xc0\x09\x1b\x31\x7d\xf6\x2f\x28\xc8\xa7\x7e\xbe\x9d\x35\xec\x2b\x8e\x4a\x88\xc0\x62\x0a\x55\x51\x90\x79\x05\xf3\x12\xe6\x25\x4b\xe1\x25\x4b\x80\x96\x8a\x14\xc2\x22\x8e\x47\x12\x11\x38\x22\x13\x9e\x57\xa0\xc0\xcb\x94\x97\x59\x82\x38\x2c\x60\x2a\xe3\x8d\x93\x7d\x86\xb3\xab\x18\x0a\x96\x82\x65\x05\xb1\x9c\x20\x5b\x32\xc7\xae\xef\xc1\x48\xe5\x38\x2c\x51\x4e\xe0\x04\xc9\xe2\x11\x56\x65\xc4\xb3\xac\x28\x73\x40\xb5\xb0\xaa\xb0\x50\x12\x44\x20\x01\xb4\xd6\xc1\x3f\x32\x9c\xc8\x2a\xaa\xa8\xf0\x40\xde\x79\x6c\xb6\xd0\x18\x4d\x39\x33\x11\x7d\x16\x95\xe5\xbe\xe0\xad\xea\x8b\xee\xb2\x00\x7a\x81\x3f\x7b\x58\xe4\xb5\x7a\x9c\xe5\x2a\x7c\x4d\xd6\x65\x69\xd4\x00\xc8\xe8\x70\x7a\xb3\x5f\x97\x17\xbc\xe8\x54\xc6\xad\x4c\x22\xc5\xe6\x6c\xd4\xc9\x2c\xbb\xe2\xbc\x69\x02\xd6\x9f\x34\x72\x52\xd6\xdf\x32\xdc\xb7\x72\xe3\xe2\xc6\x3b\x4a\xfb\x1f\xdb\xce\x6c\x7c\xf8\x3f\xd5\xb4\xf2\x72\x2b\xdf\x71\xdb\x5c\xd5\xa5\x1d\x0c\xc7\x52\x60\x2b\x5c\x69\x02\xeb\x85\x87\xda\x70\x09\x81\x30\x86\xe9\xd4\x8b\x5a\x3a\x08\x17\xed\xb1\xb1\xc2\x41\x63\x5a\xb4\xd3\x7c\x51\x5d\xea\x7d\x37\x4a\x5a\xc5\x82\xd0\xcd\x17\x94\x70\x35\x88\xc6\xfa\xc0\x10\x33\xe5\x71\x65\x94\x37\xa7\xc9\xd6\xfe\x05\x8f\x36\xa2\x4b\x5e\xb1\xf7\xe8\x2c\x7e\xdd\xfd\xff\xc3\x3e\x6f\xf4\x68\x4e\x82\x48\x00\xac\xaa\x02\x56\x80\x48\x45\x12\xc2\x02\xe1\x54\x2a\x60\x59\xe5\x78\x99\xe5\x91\x2c\x41\xa4\x20\x55\xe2\x09\x0b\x30\xe2\x15\x55\x46\x2a\xa6\x2a\x25\x58\x64\xb1\xb5\xf6\xc6\x4f\x69\x15\x02\x92\x08\x85\x40\xe4\x78\x84\x90\x0a\x38\x45\x51\x11\x94\x38\x56\x60\x45\x05\x71\x2c\x26\xaa\xcc\x51\x01\x50\x8c\x24\x16\x13\x0e\x49\x16\x54\xb0\x04\x24\x60\x59\x22\x40\xe8\xdb\x26\xb6\xd9\x7b\xb4\xf2\xec\xd1\x26\xa7\x3d\xcd\x9d\x2e\xf6\x53\x37\x75\x1f\xb2\x88\x0d\xc5\xc4\xcc\x2e\x2b\x3c\xa7\x73\x6a\xc9\x0f\xb2\x96\x8d\xcd\x08\x77\xea\x96\xa6\x07\x48\xb1\xcd\xa9\x07\xcd\x9e\x51\x19\xa2\x5e\xad\xd1\xd4\x52\x92\x62\x37\x66\x31\x58\x26\x91\x06\x46\x0f\xa1\x0e\x02\x6d\xba\x75\xd6\x8d\x47\x8f\x0f\x8c\x9b\x1c\x80\x0f\xa0\x10\xe1\x85\x9b\xc9\x72\xd3\x51\xb1\xd3\x28\x9a\x42\xb1\x91\x8a\x45\xbe\x4f\x8c\x27\x7e\x56\x98\x75\xed\xa5\xfc\x90\x5f\xce\xe2\x58\x9a\x76\xdb\x89\x3c\x5b\xda\xe5\xc4\x35\x0c\x7d\x18\x35\x9f\x46\x98\x36\x1f\x56\x7c\xce\x2c\xf0\x0f\xfe\x72\x3a\xcc\xa8\x9d\x24\x5d\x6b\xae\x5d\xf0\xd8\x22\x7b\xa9\xd6\xff\x17\x78\x2c\x62\xa1\x44\x89\x22\x70\x40\x15\x14\x59\x12\x04\x0e\x5a\x00\x71\x88\x48\x1c\x95\x59\xa2\x2a\x04\x41\x16\x0b\x40\xc0\x96\xc4\x49\x0a\x56\x24\x4e\x16\x10\xb0\x88\xa4\xaa\x96\xa0\xae\x07\xe9\x4f\xf1\x7a\x51\xa1\x92\x68\xc9\x50\xa6\x2a\x02\xa2\xa8\x8a\x48\x50\x81\xca\x22\xa8\xb2\x32\xcb\xb2\x3c\x96\x80\xa8\xa8\xbc\x48\x05\x0b\xaa\x82\x2a\x42\x22\x02\xcc\x42\xa2\x72\xc4\x62\x31\x51\xbe\x3d\x32\xc2\x91\xc7\xaa\xcf\x1e\xab\xc3\xb0\x99\xba\x1d\xbd\x92\x20\xa8\x74\x5a\xde\x6c\x29\x1a\x9e\x16\x92\x79\x52\x75\x6c\x36\xb7\x5a\xd9\x83\x04\x4b\x14\xe4\x73\x8d\x32\xcc\xce\xfb\x4a\x79\xde\x27\xad\xd5\x5c\xe1\x32\x73\xc9\x55\xf8\x79\x37\xcb\x95\x46\xb9\x96\xd6\x93\x44\xdb\xc8\xc5\x0b\x11\xa9\xe9\x91\xc7\xa6\x07\xc6\x15\x15\x36\x46\xf6\x58\x1b\x3f\x94\x6a\x4b\x11\xd7\x48\xa1\xb2\x4c\x07\x3e\x32\x26\xf9\xde\x48\xb3\x8b\x75\xd4\xb2\x86\x82\xb5\xb2\x9f\xf2\x43\xd1\x51\x25\x2b\x88\xb8\x7e\x2f\x2e\xd7\x9b\x49\xa0\xa7\x5a\x76\x39\xed\x97\xcb\xb4\x23\x39\xe5\x7e\xdc\x55\xb2\xf1\x8c\x28\x35\x7e\xa3\xb9\x79\xc1\x63\xcb\xc3\x4b\xb5\xfe\xbf\xc0\x63\x09\x20\x32\x41\x16\x81\x00\x42\xc0\x73\x32\x4b\x39\x5e\xc6\x44\x10\xb1\x80\xa1\x04\x38\x0c\x10\x95\x28\x86\x48\xc2\x80\xc7\x48\xe2\x54\x19\x50\x1e\x4b\x10\x28\x22\x16\xd8\xf5\x5c\xe5\x73\xbc\x1e\x8b\x18\xca\x2c\x12\x30\x11\x38\x1e\xa9\xb2\x0a\x25\x56\x04\x12\xc7\x72\x08\xaa\x96\xa8\x50\x84\x38\x45\x92\xb1\xb2\xe9\xb8\x15\x08\x59\x96\xa5\x0a\x24\x1c\x01\x44\x51\xd7\x1e\x2b\x1e\x3c\x56\x78\x8e\x73\xb3\xd5\xac\x2b\x0f\x9b\x1d\xa7\x44\x66\x4d\xa8\xc8\x05\x75\x48\xb1\xe9\x9a\xc9\x78\x99\xeb\x34\x86\xfd\x69\x69\x38\x68\x3f\x65\xfa\xae\xd5\xee\x5b\x59\x6b\x52\x1e\x73\x6e\x9f\x0b\x60\xa1\xfd\xc4\x4f\x1a\x30\x80\xe5\x62\xa1\xef\x23\x9c\x1b\xb4\xeb\xd9\x89\x3f\x9c\xe3\x98\x13\x9c\x6d\x08\xb9\xf6\xd8\xd2\x11\xe3\x5e\x50\x34\xa5\x90\xed\xeb\x4a\x65\x80\x60\x21\x87\xda\x00\x36\x48\x3e\x5f\x2b\x8f\x1e\x56\xe1\x0a\x19\xf9\x60\x34\xc5\xb9\xa6\x96\x61\xf1\xa0\x82\xab\x1d\xb3\xd9\x4e\x06\xae\xab\x77\x86\xcd\x82\xe4\x71\xd3\x30\x1a\x8e\x14\x7b\xe1\x0a\xf6\x5c\xd3\xa4\x0a\x4b\x1a\x43\x77\xa3\xb9\x7b\xc1\x63\x2b\xca\xa5\x5a\xff\x9f\xee\xb1\x57\x66\x79\x17\x16\xa0\xef\x98\x33\xbe\x5c\x07\xbc\x47\xd9\xb5\x35\xac\xfb\x74\x9e\x2f\x43\xdd\xa1\xed\xca\x22\xd2\x7b\xe7\xc7\x47\x0b\x49\x87\x8c\x82\x26\x49\xa3\x92\xd0\x03\xcd\xb6\x29\xe6\x86\x7a\xb7\x3d\x94\x73\xba\x54\x02\xc3\x5e\x59\xcb\x75\x0b\x85\x61\x51\x6e\x77\x7b\x62\x6b\x60\x36\xbb\x23\x5e\x2b\xb7\x8b\xd5\x2e\x5f\x30\xb6\x31\xfe\x76\x26\x9a\x03\x91\x2f\x0e\x70\xd9\x94\x1a\x1a\x6c\x2f\x95\xa1\x55\x02\xf6\xbc\x99\xf3\x87\x7c\x2e\xe3\xb4\x17\x43\x80\xb2\x2e\xd1\x3a\x25\x49\x3a\xf8\xca\xa6\xdd\x65\x37\x7f\xae\xfd\xdc\x18\x67\x48\xd4\x6a\x74\xf3\xfa\x50\x4e\x32\xc8\xed\xce\xf5\xe2\x83\x3c\x67\xf9\x96\xd3\xc8\xe4\x3b\x6e\xa0\x01\xab\x6d\x1b\x4a\xc3\xaf\x6c\x83\x22\x7d\xa4\xd4\x35\xb2\xf9\x73\xbc\xff\xa1\x1f\x94\x6e\xfe\xcf\xad\x1b\xb5\x71\x30\xaa\x4f\x39\x53\x5b\x60\xb9\xb4\x72\x32\x1d\x52\xeb\xbb\xa2\xfb\xd0\xf6\x22\x45\x2b\x81\x45\x27\x51\x54\x60\x67\x3b\x68\xba\x6a\x06\xdc\x54\xd9\xa8\xeb\x0c\xfa\xe3\x95\x2a\xea\x2b\x53\x2b\x89\x73\xc7\xea\x1a\x73\x35\x5b\x57\xd2\x6c\x26\x91\x2b\xa3\x90\x2f\x28\xc1\xc2\x72\x7c\x52\x32\x22\xd1\x70\x63\x3f\xc9\x28\xf3\x70\x56\xe0\xb8\x66\xb4\x34\xe5\x62\xbf\x59\x2c\xea\x39\x28\xf7\x27\xa1\x6e\xe0\x2e\xc1\xe1\xca\x72\x73\xe9\xcf\x9f\xe7\x7d\xfb\x27\x57\x0d\xb8\xab\x6a\x6a\xa7\x55\x93\xd3\x0a\xce\x62\x55\xe2\xeb\xc4\xe7\xba\xcd\x60\x12\x77\x53\x55\xcb\xe9\x40\x5f\x41\xd0\x7a\xb2\x0a\x52\x9a\x23\x9e\x14\x15\xe9\x2c\x5b\x1b\xef\xab\x86\x9e\xf5\x0d\xef\xa6\xde\x2a\x57\xa4\x6c\x7f\xe6\x0c\xc2\x8c\x3d\xc0\x6a\x8a\x6d\xb7\x6d\xd7\xaa\x89\x3d\x68\x3b\x5e\x9d\x6f\x3b\x96\x36\x23\xb3\x96\x50\x2f\x47\xe5\x52\x98\x21\x9d\xa7\x76\x18\xcb\xce\x43\xa7\x51\x31\xe6\x32\x6d\x8f\xa6\x15\xa1\xb8\x54\x84\x3a\xac\xf5\x55\x8f\x6a\x8a\xda\xe6\xb5\xdf\x4f\xbd\x70\x17\xf5\xcd\x73\xea\x1d\xbf\x12\xa0\xd4\x0d\x46\x5c\xb1\x12\x3e\x0d\x1e\xc2\x39\x7a\x82\x41\xb3\xda\x9d\xcc\x4c\x43\x1f\x84\x6e\xa9\x59\xe7\x33\xce\x02\x68\x07\xea\xad\x7b\xa9\xef\xe9\xdc\xd4\x9c\x3b\x5a\x7b\x31\x51\x61\x50\x01\x76\x21\xc2\x55\xa1\x8e\xc4\xd2\x83\x62\xd3\x66\x4b\x4d\x35\xa2\x6b\xb0\x2c\x3c\x71\xe9\xcc\xca\x8e\x07\x91\xd1\x46\xb3\x4a\xb7\x1a\xf7\xe5\xb9\xe3\x76\xd3\x96\xa3\xb1\xd9\x95\x30\x4f\x86\xac\x1e\x28\x83\x64\x38\xd2\xb3\xda\x6f\xa7\x5e\xbc\x8b\xfa\xee\x19\xf5\xba\x52\x7e\x30\xdc\x5c\x7f\x84\xfa\x8e\x3f\xaa\x36\xa0\xa1\xce\x1d\x7f\x86\x47\x70\x12\xa7\x26\x29\x09\x95\xc2\xc4\x0e\x56\x60\x60\xf7\x9b\x7b\xea\xc7\xf7\x52\x8f\x60\x06\x6b\x9d\x38\x3b\xcd\x89\x33\xd1\x68\x0c\xcd\x7e\xa3\xd0\x6e\x0e\xe3\x30\xe7\x17\x17\x2e\xa8\xb5\x5a\x55\x59\xd7\x51\x99\x15\x40\x14\x90\x4a\xbd\xca\xd6\x4a\x9d\x52\x99\x0d\x8c\x49\xbf\x6b\x4e\x1e\x14\x7b\xba\x18\x64\xdb\x51\xa8\x3d\xa4\xb3\x0c\x5e\xf2\x4e\x4b\xc9\x36\xb7\xd4\x5f\x1f\x5d\x2e\xad\xcf\x7f\x60\x74\x79\x5e\xa3\xdf\x57\xa6\x62\x89\x40\x60\x11\xc1\x14\x2b\x18\x8a\x16\x01\xb2\x80\x45\x28\x51\x49\xb2\x54\x5e\xa5\xd8\x62\x59\x1e\xc8\x88\x00\x84\xb0\x25\xcb\x8a\xc2\x0b\x04\x29\x16\x2f\xf0\x2a\x91\x80\x75\x5c\xa9\x1b\x92\xb7\x7d\x79\x83\xae\xa6\x0e\x49\x67\xc0\x57\xf4\xa0\x5a\x5c\x4e\x94\x29\xad\x04\x5a\x7d\x32\x1d\x36\x1e\x7a\x15\x75\x4a\xa2\xca\x88\xd5\x6b\xd3\xd0\x7f\x2d\x2e\xb9\xb4\x1e\x7f\xcf\x48\x7d\x79\x2d\xfc\xdd\x5c\x1e\xd6\xc3\x0f\x71\xfe\xee\xfd\xd0\xed\x83\xeb\xcc\x8b\xcf\x66\xd6\xf8\xa2\x85\x5d\x50\x64\xf9\x21\xa6\x11\x0e\x7c\xcf\xa3\xcb\xd8\x81\x89\x87\x27\xe7\x8a\x36\x8f\x6b\xbf\x45\x99\x03\xa3\x78\xfb\xca\xeb\xee\x91\x9d\x0b\xa8\xee\x9e\xa1\xbc\x01\xc7\xae\x1f\x81\x21\x9e\xd8\x8b\xdd\xc5\x73\x1c\xff\xb5\x59\xf5\xfb\xba\x7b\x79\xf6\xeb\x77\x86\xdb\xae\x03\x7e\x8d\x68\xb8\xa0\xe1\xd7\xef\xcc\xd7\x05\xfb\x0f\xe9\x1f\xe0\x2f\x49\xfa\x6b\x4c\x24\x49\x94\x45\x6c\x7d\xdd\x09\xe1\x24\x0c\xa9\x17\x57\x37\xc5\xfc\xfa\x9d\x11\x4f\xbf\xd7\x37\x0f\x9d\x46\x5f\xbf\x33\xff\xf7\xcb\xb3\xd1\xff\xfa\x72\x0c\x61\x23\xb9\x36\x42\x44\x41\x46\x90\x8a\xa2\xc0\x72\x02\x01\x88\xe5\x29\x14\x79\x01\x11\x59\x00\x58\xa5\x50\x54\x2d\x96\x67\x79\x28\x28\xaa\x24\x52\x04\x05\x28\x12\xc0\x02\xa8\x60\x8e\x13\xa8\x00\x76\x88\xf6\x7a\xd7\xd5\xf8\xf5\xfb\x99\xb5\x6d\xc1\xd6\x3c\x7c\xfd\xce\xb0\x27\x97\xfe\xfb\xec\xfe\xc8\x83\xc1\x06\x17\x52\x2d\x28\x10\x15\x8b\x08\x63\x5e\xc2\x10\xf2\x14\x0b\x9c\x84\x25\x84\x15\x49\xb1\x30\x52\x2d\x62\x01\x11\xb2\x80\x52\x88\x88\x04\x15\x41\xc0\x98\x50\x95\x23\x94\xe7\xf9\xaf\x5f\x2e\x58\xb8\xc2\x01\xb5\x00\x07\x79\x16\x02\x55\xa1\x54\x06\x78\x7d\xbf\x2c\x52\xa8\x70\xb2\x2c\x2b\x12\x82\x58\x14\x24\x51\xb2\x00\x20\x18\x0b\x16\xb0\x28\x96\x58\x22\x8a\x84\x58\x9c\x04\x88\xfa\x7e\x0e\xb8\xc7\x97\xd7\xfc\x24\x0e\x92\xf8\x73\xcb\x7e\x8b\xe1\x7b\x97\x91\xde\xc3\xf0\xdd\xb6\x7e\x93\x97\xfd\xcd\xc1\xdf\x1c\xfc\xcd\xc1\xdf\x1c\xfc\xcd\xc1\xdf\x1c\xfc\xcd\xc1\xdf\x1c\xfc\x46\x0e\x36\x7f\xfd\xbf\x2f\xff\xfd\xd6\x89\x4c\x84\x83\xcd\xab\x5d\x97\x3e\xdf\x9e\xe7\xa1\xdb\x29\xbe\x2a\x57\xea\x3d\x90\xed\xd0\x69\x5a\x98\x45\x56\xa1\xb8\x32\x85\xf9\x4c\x93\x0a\xe6\x38\x23\x76\x43\xde\xe4\xd3\xc0\x6b\x1a\xab\x7a\x72\x48\x09\xe4\x37\x3f\x05\xb5\xd3\xac\x82\xfa\xaa\x16\x58\x2c\xe8\xe4\x83\x64\xb4\x98\x05\x72\x43\xcb\x9a\x32\x2b\x2f\x1a\x44\x18\xcf\x78\x41\x99\x55\xc8\x30\xf3\xd9\xc9\x88\x4d\x72\xaf\x98\x7a\x42\x7b\x68\x8e\x9c\x18\xf6\x27\xb3\x48\xf5\x3b\xfc\xbc\x6f\xb7\x96\xce\xbc\x00\x34\x8e\x9d\x8e\x7d\x58\xa8\x78\x55\x42\xcb\xa3\x2d\x6a\x2f\x15\xb2\x67\x9a\x8c\x6c\x8e\xb2\xdd\x45\x32\x71\x88\xd9\x94\x22\x24\xa5\xc6\xd3\x7c\x24\xe6\x1a\xaa\xe1\x44\xe3\xf6\xbc\xd7\xcd\x4e\x38\xa9\xe7\x73\xae\xee\x3c\x3c\x09\x1c\xad\xf4\x6a\x75\x9d\x15\x07\x3a\xa8\xaa\xd8\xd2\x86\xcd\xa2\x2a\x8f\xe6\x95\x38\x6f\x05\xb3\xbe\x5e\x69\xe4\x67\x5a\x25\x35\xff\x4e\xde\x5c\x4a\xde\xac\xa1\x14\xd2\x20\xe1\x0d\x43\x6c\x17\x47\x46\x61\x51\x5f\x2e\xfa\x45\x2f\x37\x9a\x22\xbf\xd6\x64\x9f\xf8\xbc\xbf\x2a\xe4\xd9\x28\xc3\x05\x1e\xeb\x8c\x0f\x79\x92\x70\x6e\x4a\x55\x5a\x87\xe3\xe9\xb2\x06\xbb\x0d\x55\xd2\x9f\xac\x48\xa5\x2c\xf6\x43\x73\x34\x78\xd2\xfb\xe5\x59\xde\xaf\xc8\xb3\xc5\x2c\x3d\x3c\x57\x75\xf4\xc0\xcc\x51\x85\x1f\xfe\xdc\xf2\x95\xc0\x2c\xea\x0d\x46\x7c\xce\x19\xf4\x61\xd8\x93\xba\xcb\x14\xf5\x41\xc1\x2c\x8f\x03\x0f\x68\xed\xec\xa4\x94\x0f\x44\xb4\x6c\x97\xfa\x1b\x7d\xf9\x5e\x97\xdd\x2d\x67\x55\xfb\x42\x9e\xa5\x93\xba\xa4\xad\xd4\x2c\xdb\x88\x0a\xc6\x78\x81\x39\x99\xe3\xba\xaa\x32\x9c\x0a\x6e\x75\xe6\xaa\x4d\x59\x9c\x65\xc1\x62\x5b\x0b\xc0\x1c\x1d\xaf\x84\xc1\x3d\x5e\xad\x17\xc9\x6d\x9e\x03\x0f\xca\x10\xae\x16\xde\xaa\x49\x67\xf3\xb4\xd0\x94\x7b\x79\x3f\x99\xe5\x8c\xa6\xd4\x50\xad\x59\x03\xe0\x66\xa0\x5a\x5e\xd1\xa0\xae\x00\xcb\x1d\xf6\xa1\x3b\x93\xab\x03\x75\xde\xc5\x80\x6f\xa5\x72\x81\xf5\x39\xfe\x21\xb3\xa8\x55\x8c\x91\xa1\x16\xd5\x5c\xba\x2f\xaf\x7e\x28\xef\xbb\xdb\xfb\xad\x84\xdb\x95\x57\x13\xde\x9b\x24\x3a\x7a\x3d\xe1\x33\x1e\xa0\xe5\x1e\x99\x7b\x9e\x77\xfd\xd6\x6d\xe7\xbe\x3d\x32\x2a\xcf\x03\x20\xf3\x2c\x90\x14\x51\x90\x65\x51\x61\xe5\x47\x46\x7c\xee\x9b\x37\x56\xc4\xb3\xde\xf8\x62\x39\x3e\xfe\xa0\xeb\xbf\xb4\x1c\xd7\x6a\xf8\xda\x0b\x08\xef\xae\xe3\xe3\x97\x10\xf6\xec\xf0\x40\x16\xa8\xaa\x02\x41\x45\x2a\xb5\x64\x82\xa0\x0a\x45\x82\x00\x00\x2a\x92\x15\x8b\x40\xc5\x02\x82\x2c\xcb\x88\x83\x16\x00\x08\x0a\x92\x02\x89\x88\x59\x62\xa9\x82\x44\x04\xb2\x7b\x40\xef\x64\x44\xab\x1d\x3c\x7e\xdb\xec\xec\x8c\xce\x56\xd9\x72\x61\x15\x4f\x52\x93\x73\x86\x2c\x5c\x05\x3e\xa7\x9a\xc5\xe5\xa2\x9a\x5d\xd5\xc5\x58\x37\x70\xb6\xb7\x48\xf3\x6a\x0a\xc6\x71\x58\xf7\x46\xda\x1b\x3e\x57\xd7\xb4\x37\x2d\x2e\x7b\x8f\xfd\x61\xe6\x01\x5f\xec\xb1\x5e\xb5\xff\x72\x65\xe2\x32\xef\x96\xc8\x2a\x16\x2f\x48\x3c\x8f\x11\x2f\x89\x0a\x52\x90\x20\x61\x45\xb0\x08\x87\x09\x6b\x71\x00\x49\x0a\xab\xb2\x08\x42\xaa\x88\x48\xe0\xa8\x82\x24\x19\x5b\x9c\x44\x89\x25\xca\x0a\xde\xf2\xce\xbf\xcc\x68\xdf\x59\x6e\x45\x38\xdc\x7f\xde\x73\x7f\x46\xb9\x79\xc4\x53\x85\x27\x08\x22\xc4\xf2\x02\xe2\x65\xc8\x62\xc0\x09\x2c\x86\x32\x47\x14\x88\x55\x84\x65\x4e\x01\x9c\xa5\x5a\x22\x04\x88\x48\x2a\xc5\x10\x10\x45\xb1\x10\x4b\xb1\xb8\x2b\x37\xf8\xf4\x72\xcb\xdd\xc3\xfd\xb5\xdf\x50\x6e\x85\xe3\x38\x95\xc7\x40\x91\x04\x40\x2c\x19\x60\x96\x13\xa1\x08\x39\x22\xcb\x48\x61\x79\x62\x59\xac\x48\x04\x4b\x64\x2d\x2c\x11\x8e\x55\x38\x09\x42\x59\xc4\x2c\x94\x38\x56\xb5\x54\xb8\x7b\x6c\xf0\x65\x3b\x3b\x2e\xf7\x3b\x47\x52\x4d\x76\xa3\xdd\x43\xaf\xe7\xf1\xca\xab\xe5\xde\xf3\x9e\xbb\xcf\xbe\x8b\x0f\xf6\x7f\x47\x3b\x43\x44\x50\x24\x82\x08\x61\x79\x22\x48\xac\xc2\xc9\x92\xcc\x61\x01\x8a\x50\xa6\x2a\x91\xa8\x22\x89\x18\xf2\x2a\x5e\x37\x31\x89\x27\x32\x84\x96\xcc\x42\xde\xa2\x54\x44\x40\x22\x74\xcb\x3b\x7f\x93\xf7\x6c\xe2\x03\x3f\x16\xc4\x79\xb6\x61\x2c\x83\x66\x06\xf8\x45\xf3\xe1\x89\x93\x5b\x2b\x3b\xe2\x1c\xab\x96\x1f\xba\xcd\xfe\x38\x4c\xda\x0f\x1d\xed\x77\xf0\xfe\x11\xfb\xbf\x9b\x77\x59\x06\x92\xc5\x22\x45\x52\x09\x65\x2d\x59\x80\x22\x25\xb2\xa5\x10\x49\xe4\x55\x55\x50\x79\xa0\x50\xc4\x5a\xac\xc0\x73\x16\xb0\x30\x8f\x10\x16\x80\xc2\x2a\x82\xc5\x73\x58\x61\x45\x71\xf7\xd0\xe1\x6d\xde\xb9\x44\x27\x45\xbf\x93\x8c\x6b\x8b\x66\x9c\x93\xf5\x49\xa9\x0a\x4c\xaa\x92\x5e\xc3\x2a\x94\x1e\xca\xb6\x58\x5e\x74\xeb\x0f\x23\x2d\x96\xd3\x4f\xe3\xdd\xb8\xcf\xfe\xef\xe6\x1d\x20\x89\x60\xd1\x12\x24\x4a\x14\x4e\x60\x45\x55\xc4\x96\x25\x20\x80\x14\x8c\xa0\x84\x64\x0b\xb3\x08\xb3\x0a\xcb\x59\x84\xe7\x79\x2a\x60\x99\x93\x91\x2a\xa8\x32\xa5\x22\xa6\x84\xdd\x3d\x3a\xf7\x92\xf7\xcf\xf6\x37\xfd\x9d\xbc\xe7\xef\xb3\x3f\x13\x0e\xf6\x4b\xef\xb0\x7f\x73\xb9\xfb\xf2\x6b\x8f\xef\x0f\xcc\x7e\x77\x54\x56\xa8\x2a\xc5\xe6\xa2\x39\x43\x15\xbe\xa8\x81\x7e\x6f\xda\x0a\x2b\xee\x74\xc0\xb2\x56\x41\x89\xaa\x25\xd9\x65\x8d\x56\x5a\xee\x67\xb4\x01\xd0\x36\xcf\x0d\xee\x3f\xe7\x2c\xbd\x60\xed\x7d\xf3\x42\x4d\xab\x8b\x61\xe5\x58\xdf\x76\x14\xde\xe6\x01\x9e\xe6\x8b\x59\x53\x6f\xfa\xa6\x56\xb6\xad\x46\x6b\x90\xf3\xab\x93\x45\xbc\xc2\x1d\xe0\xe4\x1b\xd9\xa6\xc8\x8d\x67\x24\xca\x17\xa1\x6e\xf6\x53\x56\x6c\x67\x7a\x93\x3e\x3b\x18\xcf\x42\x36\xab\x37\x0c\xc1\x84\xf9\x1e\x5f\x71\x71\x04\x46\x69\xd5\xb5\x91\xd0\x69\x85\xb5\xea\x3a\x0c\x2f\x81\x4e\x30\x63\x5d\x51\x06\xbc\xe4\x3a\xfc\x53\x4d\x8c\x85\x0c\x9c\x3e\xb5\x00\x5d\x86\x4f\x75\xa9\xe5\x87\xbd\xd4\x7c\xe8\xa2\xee\xe1\x51\xf5\x1b\x1c\x1c\x3c\xe3\xe4\xfd\xa9\xf3\x28\xe4\x28\x7a\xaa\x48\x53\x6a\x83\xa9\xeb\x97\x94\x4e\xc1\xc9\x65\xe8\x18\x03\xb9\x31\x88\x8b\x95\xca\x53\xbf\xa7\xa4\x3d\x7b\xa4\xc3\x6c\x22\x56\xc5\x6d\xe8\x91\x4b\xe0\x6a\xdb\x43\x9d\x67\x4b\x6e\xd6\xc5\xfe\xd3\x3c\xb3\xff\x8e\xfa\xcf\xd1\x2c\x1f\xf1\x8b\xb2\x69\x1e\x35\x87\xf4\xed\xf6\x5f\xf6\x52\xbf\x3b\xf4\xfd\xb8\x73\x9f\x93\xfb\xa2\x40\x31\x1a\x0f\x5a\x92\x21\xfb\xb9\x2a\x5b\x6d\x3e\xa4\xc3\x76\x56\x7d\x1a\x2c\x06\xbd\x0e\x58\xda\x0d\x7b\x98\xb4\x11\x97\x5b\xb8\xcd\x2a\xdd\x3e\x7f\x7b\xdd\xb9\xb5\x70\x2e\xf3\x30\x9d\x2a\x25\x16\x55\xf9\x49\xb6\xac\xe6\xea\x3e\x67\x75\xd3\x65\x90\x76\xbd\x8a\xda\x12\xcd\x45\x2b\x43\xd3\x01\xf6\xad\x45\xfd\x81\x0b\x5a\x66\xb9\x4c\x3b\x66\xb1\x56\x70\x10\x71\xf2\x15\x3a\x9f\xa5\x2e\xb0\x66\x8d\x86\xca\x2d\xc6\xd5\xfe\x40\x90\xfd\xdc\xe6\x0d\xab\xe6\x74\xd5\xb2\xab\xd5\xb2\x63\x0b\x71\x61\x65\x64\x5a\x4f\x4d\xa5\x13\xfb\xd9\x66\x32\x97\xf2\xb1\x2e\x55\x47\x8a\xd2\x97\xad\x9e\x70\xa8\xc5\x4f\x75\xee\xf7\x26\x61\xfe\xdd\xce\xfd\xa4\x25\x30\xfe\x6d\xce\xfd\xc9\xf3\x9b\x8f\x3b\x77\xee\xb5\x02\x21\x77\xec\x72\x3d\x9e\x8c\xc5\x1e\xe7\xce\x39\xea\xd4\x70\x81\x8b\x97\xd3\xf6\xb0\x32\x52\x53\x63\xec\xb7\x75\x48\xfb\x4a\xd7\xce\x6f\x63\xa6\xeb\xce\x9d\x2b\x27\x0e\x17\x57\x0b\xd5\xbc\xd0\x5b\xa6\x31\x4b\x72\xd9\x9e\x61\x49\x31\x12\x1d\x01\xad\x6a\x61\x61\x9c\x0d\x1e\x9c\xde\xa8\xe6\x2e\x71\x2c\x0a\xb6\x69\xf1\xee\x32\x9e\x2e\xa5\x1a\x11\x47\x65\xc1\x10\x72\x0e\x8e\x2c\x41\x32\xb4\x89\x5e\x68\x77\x1b\x91\xa7\x58\xc3\x8d\x73\x57\x56\x52\x96\x97\x92\xb4\x5c\x2d\x4b\xb9\x5c\x5e\x5b\x79\xc5\x61\x58\x5e\x14\x0b\xb9\xa2\xa8\xc2\xba\x0a\xe9\x6a\xca\x97\x1e\x52\x39\xff\x9b\x9c\xbb\x20\xfa\xe5\xb8\x47\xbc\x61\xbd\x47\x46\xf3\x78\x10\x74\x8a\x7a\x8c\xf0\x90\x75\xb3\xae\x85\xf5\x52\xc5\x18\xf7\x3d\x67\x91\x2f\x4d\xe0\x96\xf5\x7f\xb3\x73\x2f\xda\x1d\xff\xf7\xf5\xdc\x9f\x3c\x89\x7d\x27\xb9\xa3\x43\xe5\xdc\x08\x4b\x36\xef\xee\xe8\xbd\x9e\xb9\x8b\xae\xdf\x11\xa4\x83\xcc\xfe\x73\xd0\x97\xdf\xdb\x6f\x36\x9c\xb1\x5c\xa8\x4e\xca\x63\x76\x29\x4f\x03\x2d\xe5\x8c\x54\x2a\xf2\x83\xbc\xb4\x6a\x95\x5c\xab\x5c\x4a\xf3\xd6\x92\x55\xcd\xc4\x16\x51\x5c\x2f\x6b\x79\x9a\xe6\x35\xd3\xaa\x43\x4d\x57\xf2\xcd\x91\x23\x06\x40\x13\xc7\x60\x26\xe5\x8a\x39\x7b\x6c\x75\xcd\x6e\x8e\x93\xc6\x78\xe3\x8c\xe3\x56\xa1\x9d\x0a\xa3\x1c\x00\x0d\x2d\x0f\xfb\x13\x0e\x24\x5a\xd5\x52\xf2\x5c\xa3\xdb\x58\xc6\x46\x29\x3f\x0f\xb8\xb4\x32\x6c\x7a\xa2\xbf\x47\x76\xd9\xd1\x8f\xdf\x5d\x7a\xcd\xd1\x8f\x12\x75\xef\x75\xf4\x5e\xaf\xd3\xda\x69\x79\xef\x28\xb9\xf9\x14\xcf\xb8\x3e\x0f\xbe\x9b\xda\x69\x22\xe6\x23\x0d\x71\x94\x6a\x27\x4b\x39\x2f\x27\x5c\x1f\x6d\x08\x9f\x9c\x55\x78\x67\x7c\xf8\xef\x69\x08\x85\xbd\xfd\xa6\xae\xce\xdc\x4a\x9f\x9f\x83\x85\xdc\xb4\x56\x4a\xa3\x46\x67\x06\xe2\x3a\x9d\x92\x68\x2f\xe7\xb3\x12\xab\xfb\xe3\x41\x58\x8f\xe5\x71\x9d\x93\xf8\x26\x9a\x4d\x78\xd2\xee\x74\x2d\x9a\xf3\x17\x98\x6d\x68\xd0\x9a\xe4\x06\xcb\x78\xd2\xd3\x9c\xa8\x9a\x4c\x1d\xdd\x5d\x4d\x75\x6d\xb8\x71\xd6\x45\x77\x12\x2f\x88\x16\xb7\xc6\xe3\xc1\x68\xb9\xac\xf4\x3d\x89\x20\x7f\x84\xfd\x60\xc5\x16\xdd\xea\x60\xbe\xc0\x95\xea\x83\x88\xcc\xf8\x90\xa8\xfc\xd4\x86\xf0\xde\x58\xfd\x5f\xdd\x10\x3e\x32\x97\xf8\x7d\x0d\xe1\x93\xd3\x3c\xef\x8c\x25\xdf\xd6\x10\x3e\xb2\x80\xf9\xc1\x86\x73\x9e\x66\xda\xd6\xf0\x1e\x6f\x33\x37\xd5\xdb\x5a\xe2\x54\xb0\x1a\xb7\xe6\x85\xf1\x43\x7d\xd6\x43\x95\xc6\x93\xe0\x3b\xad\xe6\xb0\x4b\x17\xab\xac\xb5\x60\xab\x9a\x33\x47\x83\x82\xb4\x6a\xa0\xa0\xc5\xea\x2d\xc9\x97\xdd\xd0\x76\x5b\xae\x52\x17\x7a\x7e\x4b\x2f\x94\xb4\x4e\x53\x17\x78\xb3\xde\xc7\xf9\x27\xd2\x4c\x37\xce\x4d\x9e\x50\x9a\x14\x3c\x9a\x03\x6d\x47\x1e\x3c\x98\xa3\xb6\xdb\x9d\x4d\xa7\x61\x2e\x6d\x4e\x94\x4c\x1a\x2e\x8c\xba\x36\x69\x94\xf0\x38\x7f\xc8\x74\x5f\x6e\x38\xc7\xce\x71\xa3\xe1\xa4\xda\xff\x80\x86\xd3\xfc\xb7\xe0\xdb\x84\xca\x37\xf0\xbd\xa1\x61\x7d\x72\x1e\xef\xe3\x23\xcc\x8d\x49\xf2\xd6\x51\xde\x39\x8f\xb8\xa7\x61\x91\xa7\xfe\xd1\x32\xcd\xf1\x88\x94\x47\x75\x36\x8e\x49\x66\x51\x28\x44\xa1\xa8\xcc\x8a\x41\x25\xd2\x67\x75\xae\x05\xab\x81\xb6\x34\xea\xd3\xcc\x40\xcc\xa9\xc0\xa8\x58\x03\x71\xb9\x2c\x06\x49\xc1\xee\xaa\x0d\xa7\x5c\x5f\x71\x19\xe8\x14\x4d\x75\x86\xeb\xcb\xb8\x62\x92\xc5\x42\x7e\xca\x4e\x0a\xad\x46\x2b\xd3\x54\x36\xce\x5f\xe7\x41\x5e\x2d\xc8\xc3\xbc\xd6\xef\x3d\x65\xda\x4f\x49\x2d\x71\xe3\x4c\x5a\x4d\x4b\x9a\xc5\xda\xd5\xd9\x72\x49\xc5\xf6\x40\x76\x9e\xe2\x03\xb2\x0f\x36\xac\xad\xc0\x79\xc3\xfa\x8f\x0c\xcd\xba\xff\x16\x7c\x45\xcc\x39\xaf\xe2\x4b\xb5\xff\xd8\x86\x7f\x91\xbf\x7f\x21\xbe\xd7\xf8\xfb\x76\xed\xfc\x80\xcd\xb3\x6c\x2f\x0e\x90\xd9\x1f\x28\xf1\xbc\xf9\xdd\x2b\x59\xef\xe3\x93\x6c\x36\xe7\xd7\x1c\x69\xdc\x3c\x60\xa7\xe5\x72\x17\xf6\xb8\xdf\x1b\x64\x1a\xad\x52\x4d\x6b\x0d\x99\x8a\x31\x64\xfe\xd8\x6f\xa1\xf9\xb8\x3f\x7a\xe1\xea\xf1\x07\x67\x67\xea\x7c\x16\xf0\xe8\x06\xea\xe8\x16\xe4\x4b\x7b\xf0\x1f\x8e\x11\xba\x1b\x1e\x82\xde\x25\x64\xcf\x06\x4e\x41\x6d\xf7\x00\xbe\xbd\x41\xff\xcd\xf3\x93\xee\x86\x7b\xa2\xfc\x12\xf0\x1b\xd6\x99\xae\x59\x6a\x76\x0d\xe6\xb0\xab\xe2\xbb\x4a\xf2\x39\x7c\xbf\xb3\x00\x2f\xeb\xe0\x70\x66\xc1\x95\xfd\xf6\x4f\x4e\xdd\xba\x1b\xef\x56\xd9\x25\xa0\x47\x66\x4e\x11\xee\xf6\x53\xbf\xbc\x8f\xfa\xf1\x11\x63\x77\x83\xdb\xe8\xba\x84\xed\x60\xe4\x14\x9a\x1d\x3c\x6e\x76\x57\xbf\xb9\xa5\xf8\x85\xa3\xd5\xee\x47\x7a\xa4\xf2\x22\xe0\x73\x93\x97\x2a\xfd\xca\xbe\xe3\x27\x07\xcc\x7d\x06\xd2\x28\x41\x57\x30\x3e\x9b\x39\x45\xb7\xd9\xb2\xfc\xc6\x0e\xdc\x2f\x4e\xd5\xbb\x1b\xe4\x41\xe1\x25\xa0\x67\xe6\x4e\xc1\x3e\x6f\xe2\x7d\x6d\x93\xec\xd3\x73\x05\xef\x47\xba\xd5\x76\x11\xe6\x91\xa1\xab\xe3\xd5\x7e\xfb\xec\x1b\x3b\x60\xbf\x38\x5f\xf1\x7e\xd4\x7b\x85\x17\x81\x9f\x9a\x3b\xc5\xbe\xdf\x44\xfb\xc6\xe6\xd8\x2f\x0e\x9a\xbc\x1b\xf0\x41\xe1\x25\xc0\x67\xe6\xae\x92\xbd\xdd\x1c\xfb\xf1\xb0\xf3\xf5\xcd\x4d\x9e\x2f\x1c\xc4\x79\x7f\x39\x8e\x54\x5e\x2c\xc9\xb9\xc9\x4b\xfd\x44\x44\xe7\x8f\xcf\xbb\x1a\x5f\xdf\x80\xf9\xfc\x80\xd2\x4f\xc0\x7e\x13\xf8\x5d\xa8\xcf\xcf\x68\xdd\x81\xdd\x9c\xe8\xfa\xb6\xcd\xa3\xb7\x87\xbf\x9e\xe9\x61\xea\xe6\x21\xf0\xeb\xb6\x4b\x66\x81\x41\x71\x48\x29\xf3\xbc\x55\xf8\x9f\x4c\xbf\x68\xb4\x0c\xe6\x78\xeb\x70\x6e\xff\xd6\xc7\xcb\xd8\xec\xc5\xc9\xb3\x1f\x05\xfa\x42\xd3\x1a\xea\x6e\x80\x3f\x05\x7a\x24\xf8\x02\xcf\xe1\xc0\xdc\x8f\xe2\xd8\x6b\x58\xdb\x3f\xf8\xce\x09\x84\xeb\xf1\xd4\xc9\xd1\xbe\xf7\x40\x78\x56\xb2\x45\x71\xd4\x06\xdf\x08\xe4\xe4\x34\xe2\x8f\x02\x39\x56\xb2\x06\x72\x1a\x2d\xbe\x11\xc9\xd1\xf9\xc9\x1f\xc5\x71\x50\x71\xcd\x29\x36\x12\x97\x46\xe4\xc3\x21\xcf\x1f\x35\x7e\xac\x64\x6d\xfe\x68\x3b\x95\x37\x32\x70\x7e\x30\xf5\x1d\x48\x8e\xf5\xec\xc0\x3c\xc7\x1c\xa7\x60\x8e\x8f\xc9\x78\x09\xe8\xe5\xc9\xda\x1f\xc6\xf4\x42\xd5\xb5\x2a\x3a\x91\xbc\x16\x8c\x3c\x1f\x0c\xfe\x61\x38\x27\x6a\x36\x0c\xed\xa2\x9c\x13\x2c\x97\x26\x9b\xd7\x4e\x91\x67\xb0\xef\x06\x0e\x8d\xe9\xc6\xda\xff\x0f\x00\x00\xff\xff\x2c\x9f\xe6\x1a\xaf\x7e\x00\x00") + +func non_native_paymentCoreSqlBytes() ([]byte, error) { + return bindataRead( + _non_native_paymentCoreSql, + "non_native_payment-core.sql", + ) +} + +func non_native_paymentCoreSql() (*asset, error) { + bytes, err := non_native_paymentCoreSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "non_native_payment-core.sql", size: 32431, mode: os.FileMode(420), modTime: time.Unix(1508958239, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _non_native_paymentHorizonSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xdc\x7d\xe7\x92\x9b\xca\xb6\xf0\xff\xfd\x14\x94\xff\x8c\x5d\x33\xf6\x90\xc3\xf8\xf3\xa9\x42\x12\xca\x42\x39\xcd\xad\x5b\xaa\x06\x1a\x89\x11\x12\x1a\x40\x69\x4e\x9d\x77\xff\x4a\xa0\x00\x88\xa4\x30\xb6\xcf\x55\xed\xf2\x1e\xc4\xea\x95\x7a\xf5\x4a\x8d\xe8\xef\xdf\xff\xf9\xfe\x1d\x69\x18\x96\x3d\x36\x61\xbb\x59\x45\x14\x60\x03\x09\x58\x10\x51\x96\xb3\xc5\x3f\xdf\xbf\xff\xb3\xbb\x9f\x5b\xce\x16\x50\x41\x54\xd3\x98\x9d\x00\x56\xd0\xb4\x34\x63\x8e\x70\x3f\xe8\x1f\x94\x07\x4a\xda\x22\x8b\xf1\x68\x37\x3c\x00\xf2\x4f\x5b\xe8\x20\x96\x0d\x6c\x38\x83\x73\x7b\x64\x6b\x33\x68\x2c\x6d\xe4\x17\x82\xfe\x74\x6e\xe9\x86\x3c\x3d\xff\x56\xd6\xb5\x1d\x34\x9c\xcb\x86\xa2\xcd\xc7\xc8\x2f\xe4\xa1\xdb\xc9\xb3\x0f\x3f\x0f\xe8\xe6\x0a\x30\x95\x91\x6c\xcc\x55\xc3\x9c\x69\xf3\xf1\xc8\xb2\x4d\x6d\x3e\xb6\x90\x5f\x88\x31\xdf\xe3\x98\x40\x79\x3a\x52\x97\x73\xd9\xd6\x8c\xf9\x48\x32\x14\x0d\xee\xee\xab\x40\xb7\xa0\x8f\xcc\x4c\x9b\x8f\x66\xd0\xb2\xc0\xd8\x01\x58\x03\x73\xae\xcd\xc7\x3f\xf7\xbc\x43\x60\xca\x93\xd1\x02\xd8\x13\xe4\x17\xb2\x58\x4a\xba\x26\x3f\xed\x84\x95\x81\x0d\x74\x63\x07\xc6\x57\x3b\x42\x0b\xe9\xf0\x99\xaa\x80\x94\xf2\x88\x30\x28\xb5\x3b\x6d\xa4\x2e\x56\x87\x7b\xf8\x1f\x13\xcd\xb2\x0d\x73\x3b\xb2\x4d\xa0\x40\x0b\xc9\xb5\xea\x0d\x24\x5b\x17\xdb\x9d\x16\x5f\x12\x3b\x9e\x41\x7e\xc0\x91\x6c\x2c\xe7\x36\x34\x47\xc0\xb2\xa0\x3d\xd2\x94\x91\x3a\x85\xdb\x9f\xbf\x83\xa0\xec\xfc\xf5\x3b\x48\xee\xec\xea\xf7\x09\xe8\x52\x0b\x4a\xe7\x0c\x2f\x89\x39\x61\xe0\x19\xb9\xa7\xe4\x0c\x1c\x41\x55\x85\xb2\x6d\x8d\xa4\xed\xc8\x30\x15\x68\x8e\x24\xc3\x98\xc6\x0f\xd4\xe6\x0a\xdc\x8c\x3c\xf4\xe7\x16\x70\x6c\xd1\x1a\x19\xf3\x91\xa6\x5c\x32\xda\x58\x40\x13\x1c\xc7\xda\xdb\x05\xbc\x61\xf4\x89\x93\x9b\xb8\xb8\x6c\xac\x0e\x95\x31\x34\x9d\x81\x16\x7c\x5f\xc2\xb9\x7c\x91\x08\x9e\xe1\x0b\x13\xae\x34\x63\x69\xed\xbf\x1b\x4d\x80\x35\xb9\x12\xd5\xed\x18\xb4\xd9\xc2\x30\x77\x2b\x66\xef\xf6\xae\x45\x73\xad\x2e\x65\xdd\xb0\xa0\x32\x02\xf6\x25\xe3\x0f\xc6\x7c\x85\x29\xed\x97\xce\x15\x4c\x7b\x47\x02\x45\x31\xa1\x65\xc5\x0f\x9f\xd8\xa6\xe2\x84\x86\x91\x6e\x18\xd3\xe5\x22\x05\xf4\x22\x89\x25\x17\x0a\x68\xe6\x85\x88\x0f\x7e\x31\xf5\x80\x9d\x9f\x50\x55\x68\x26\x81\x2e\x76\x90\x13\x3b\x91\x6f\xcb\xb7\x6c\xa5\x6d\xa2\xf2\x27\xc7\xf5\x91\x06\xd8\x70\xf9\x30\x12\x01\x35\xcb\x1e\xd9\x9b\xd1\x22\x19\xe5\x0e\xd2\x58\xa4\x85\x84\x69\xc1\x0e\x0e\x38\x1e\x58\x3a\x2c\x92\x44\xb0\xe4\xb5\x2f\x1d\x6d\x37\x1e\xce\x8d\x61\x3b\x6d\x5b\xd6\x72\x47\xf9\xa2\x28\x76\x9c\xdb\x05\x30\x6d\x4d\xd6\x16\x60\x6e\xa7\x8c\x6b\xa1\x43\x47\x8b\x0b\x23\xe9\xd1\xb9\x5f\xca\x41\xf8\xc0\x8b\xe9\x3b\xea\x4b\x43\xcf\x05\xfc\x74\xfc\xee\x74\xca\x86\x72\xc8\x4e\x76\xae\xf2\x90\xa8\x38\x33\x3c\x4a\xc9\xc1\xd8\x30\x17\xa3\x99\x36\xde\xc7\xce\x18\x16\x02\x90\xb1\x32\xa6\x35\x21\x77\x74\xb6\x5e\xed\xd6\x44\x44\x53\x5c\xea\x39\x21\xcf\x77\xab\x9d\x94\xb8\x23\x4c\xe3\x0e\x98\xf7\x93\x12\x8f\xc9\xb9\x4a\x2f\xfe\x21\xac\xb4\x85\x66\x57\x10\xb3\x57\xe8\x6c\x97\x18\x5a\xf0\xfd\x62\xca\x3e\x24\xa9\x47\x2b\x30\x25\xec\x29\xfd\x4a\x2d\x61\xc4\xda\xbc\x44\xbe\x70\x14\xe9\xc6\xee\x13\x95\x74\xc0\xfb\xac\x24\xb5\x6c\xfb\x75\x7a\x89\x2c\xee\x90\x94\xb0\xfb\x7c\x25\x3d\x3f\x87\x04\x27\x0d\x47\x81\x95\xbe\x07\x16\x06\x1d\x41\x6c\x97\xea\xa2\x77\x80\xbe\x18\x5b\xef\xfa\x81\x8d\x6c\x51\xa8\xf1\x67\xf8\x7e\xfe\xe3\x16\xf5\x22\x98\xc1\x97\xc3\x77\x48\x67\xbb\x80\x2f\xfb\x21\x3f\x91\xb6\x3c\x81\x33\xf0\x82\x7c\xff\x89\xd4\xd7\x73\x68\xbe\x20\xdf\x9d\x5a\x3f\xdb\x12\xf8\x8e\x70\xc0\x7c\xc0\xf7\x8f\x0f\xa3\xff\xe6\x1e\x71\xb6\x5e\xab\x09\x62\x27\x06\xb3\x0b\x80\xd4\x45\x3f\x02\xa4\xd4\x46\x1e\x0e\x55\xfc\xe1\x3b\xcb\x41\xf2\x10\xa4\x7c\x10\x7f\x4f\xf3\xa8\xa1\x44\x79\x7c\xba\x14\xeb\x9d\x80\x3e\x91\x7e\xa9\x53\x3c\xb2\xe5\x2d\xe7\x7d\xe4\x4f\x58\x02\x8c\x5c\x22\xfc\x19\x12\x47\x01\x8d\xea\xf3\x62\xdc\x6e\x56\x91\x85\x69\xc8\x50\x59\x9a\x40\x47\x74\x30\x1f\x2f\xc1\x18\x3a\x6a\x48\xd9\x7e\xd8\x81\x29\x50\x05\x4b\xdd\x1e\xd9\x40\xd2\xa1\xb5\x00\x32\x44\x7e\x21\x0f\x0f\x81\xbb\x6b\xcd\x9e\x8c\x0c\x4d\xf1\xb4\x41\x7c\xc2\x06\x8d\x72\x2f\xaa\x63\xc2\x27\x41\x0f\x46\x10\xa6\x74\xd7\xda\x83\x01\xef\xeb\x3f\x08\x82\xec\xfc\xba\x0d\x37\xb6\x33\x17\x62\xb7\x5a\x7d\x72\xbe\x05\x8b\x85\xae\x39\x15\x0c\xb2\x4b\xc9\x2d\x1b\xcc\x16\xc8\x8e\x51\xe7\x12\xf9\x30\xe6\xf0\x9f\x6f\xc1\x59\x89\x5a\x72\x07\x8b\xdf\xaf\xd5\x74\x3c\x1f\x57\x76\x04\x56\x87\xcd\x76\x87\x6f\x75\x5c\x9b\xc1\x9c\x2f\x4a\x62\xb6\x25\x38\x13\x9c\x19\xee\xbf\x12\xeb\x48\xad\x24\xf6\xf8\x6a\x57\x38\x5e\xf3\x83\xd3\x75\x96\xcf\x16\x05\x04\x4b\x12\xe6\x6a\xb5\x07\x11\x9d\xf4\x2e\x69\x63\x6d\x6e\x1f\x22\x2a\x32\x87\x1b\x7b\x05\xf4\xaf\x0f\x11\x12\x3f\xbc\xbc\x98\x70\x2c\xeb\xc0\xb2\xbe\x05\xa7\xcb\xad\xdc\x10\x79\x02\x4c\x20\xdb\xd0\x44\x56\xc0\xdc\x6a\xf3\xf1\x57\x9a\xfc\x16\x33\x51\xae\xe3\xbd\x59\x32\x37\x5d\x38\xca\xa5\xcd\x6d\x38\x86\x66\x90\xc7\x63\xba\x16\xce\x66\x28\xf8\x2e\xd1\x0b\x01\xc7\xf0\x70\x70\x37\x03\x0c\x19\x40\xd1\xa7\x01\x49\xfa\xb8\xb3\xd9\x7a\x71\xfe\x36\xa3\x8d\x13\x04\xa9\xf7\x45\x21\x87\x64\x86\x09\x12\xb9\xe9\x5f\xbc\x40\x47\x5c\x81\xdb\x3f\x76\x75\x63\x38\x6f\x87\x84\xe2\x56\xab\xdb\xe3\xd9\x9b\x5d\x60\xcd\x8c\x4e\xcb\xcb\x6f\x27\xe7\xf9\x53\x14\xe4\x17\xa7\xa0\xfd\x12\x61\xcd\x8e\x1d\x87\xdf\x52\xa0\x0d\x34\xdd\x42\xde\x2c\x63\x2e\x45\x1b\xdb\x21\x0b\xbb\x55\x0f\x7b\x3c\x7b\x3d\x1c\xba\x78\x11\xbc\x79\x5a\x6b\xa9\x56\x61\x58\x57\x2f\x7c\xe0\x5e\x2d\x9e\xb4\xdb\x99\x88\x23\x1f\x07\x2f\x87\x06\x28\x9c\x26\x22\x1d\xfc\xb1\xb5\x16\x08\x4c\xc6\xd2\x3e\xc5\xa6\xe0\x18\x13\x02\x3b\x71\x90\x0b\xbb\x5c\x28\xa9\x61\x8f\xa6\xb3\xbf\x0c\x74\x1d\xcf\x64\xc1\x82\x46\x64\xd8\x40\x1f\xc9\x86\x36\xb7\xc2\x6d\x50\x85\x70\xb4\x30\x0c\x3d\xfc\xae\xd3\x35\x57\x61\xd4\x5c\x3b\xb7\x4d\x68\x41\x73\x15\x05\x32\x03\x9b\x91\xbd\x19\xed\x5c\xa7\xa5\x7d\x44\x41\x2d\x4c\xc3\x36\x64\x43\x8f\x94\x0b\x4d\xe1\x5b\x23\x0a\x96\x5b\xad\x3f\xa2\x08\x4e\x88\x45\xe9\xbd\x40\xb2\x5f\xb9\x54\xe4\xfb\x86\x97\x58\x1a\xbf\x2b\xdc\x5c\x24\xe8\x8d\xe1\x27\x96\xd6\x79\x38\x0a\x07\x8f\x09\x4f\x9e\x72\xfe\x6e\xb6\x79\x9e\xf3\x05\xfc\x80\x6f\xef\x27\x1c\xc6\xc9\xc8\x65\x57\x14\x27\x32\xdd\x18\x98\xdc\xaf\x2c\x63\x69\xca\xc7\xad\xb7\x88\x90\x70\x58\xe6\x0f\x0f\x2f\x2f\x67\x10\x29\xd6\xc1\xbe\x9b\x72\xab\x3a\xf7\x9b\x8a\x5f\xef\x1a\xc7\xf7\x71\xed\x9a\xa8\xe2\xec\x24\x44\x92\x0d\x6c\x69\xc6\x01\xed\x77\x59\xe3\x40\x66\xce\xf4\x84\x02\x9c\x6f\x0e\x27\xc0\xc5\x92\x3b\x42\xc5\x50\x74\x58\xd2\xac\x91\x05\x75\x1d\x9a\x88\x64\x18\x3a\x04\x73\xf7\x9e\xa7\x81\x1a\xba\xc7\xeb\xa0\x1d\x39\x4f\x01\x20\xd9\xa2\x90\xad\x20\x5f\xbf\x7a\x45\xfc\x17\x82\x7e\xfb\x96\x84\x2a\x6c\xf8\x41\xaa\xff\x77\x26\x68\x0a\x7c\x3e\xa1\x03\xe8\x03\x1a\x71\x18\x8c\xb5\xf5\xf0\xbe\xe3\x1d\xac\x3f\xbc\x93\x9c\x32\xd4\xa5\xf1\x31\xb7\x04\xbb\xa4\xae\xed\x7d\xc2\x5d\x02\x95\xdf\x15\xf0\x2e\x14\xf6\xc6\x90\x97\x40\xed\x3c\xe8\x45\x0d\x88\x09\x7b\xbe\x4e\xfd\x1d\x6d\xf5\x60\x9f\x5e\x96\x52\x57\x1f\x7b\xe7\x9c\x50\xd3\xa4\x8d\x8c\xf1\x41\x2e\x14\xf6\x44\x3a\x3a\x3d\x07\x91\x4b\x2f\xaa\xb4\xf9\x23\xc5\x89\xbd\x19\xc1\xf9\x0a\xea\xc6\x02\x86\x35\xfc\xec\xcd\xae\x54\x58\xea\x76\xc4\xcd\x19\xb4\x41\xc4\xad\x9d\x16\xa2\x6e\x5b\xda\x78\x0e\xec\xa5\x09\xc3\x7a\x53\x1c\xfd\xed\x7f\xfe\xf7\x94\x5d\xfc\xfb\x3f\x61\xf9\xc5\xff\xfc\x6f\xb0\x66\x81\x33\x23\xa2\x8d\x74\xc2\x35\x37\xe6\x30\x36\x5b\x39\xe1\x3a\x47\xb3\x97\x4c\x9b\xc1\x91\x64\x2c\xe7\x8a\xb5\x9b\x39\xd6\x04\xf3\x71\x5c\xd3\xd3\x6d\x82\x69\xca\x61\xf5\x1c\x36\xca\xd2\x2c\x79\x77\xf9\x38\xbb\x93\x09\x7b\x70\x6d\xa1\x13\xd3\x30\xf4\xb6\x66\xbc\xed\xc2\xcb\x12\xf7\xfb\x09\x91\x72\x8b\x32\x56\xa8\xd8\x84\x3f\x8d\x90\x91\x91\xf3\x6e\x62\xa6\xde\xe5\x8d\x15\x34\xc1\xcd\x87\x8b\x9a\x03\x36\x40\x54\xc3\x4c\xb1\x57\x80\xe4\xf8\x0e\x9f\x20\x62\x49\x6c\x0b\xad\x0e\x52\x12\x3b\xf5\xb3\xfd\x02\x27\x3a\xb6\x91\xaf\x0f\xd8\x48\x9b\x6b\xb6\x06\xf4\x91\xbb\x3b\xf4\xc3\x7a\xd7\x1f\x9e\x90\x07\x1c\xc5\x98\xef\x18\xfa\x1d\xa7\x10\x0c\x7f\x41\xf1\x17\x12\xfb\x41\x50\x14\x8b\x51\xdf\x51\xe6\xe1\xdb\xcf\x74\xd8\xf1\x91\xfb\x84\x92\x4f\x05\xd2\x76\x64\x1b\x9a\x12\x4f\x89\xc3\x88\x4b\x08\x11\xa3\xa5\x05\x8f\x1e\x7e\xa4\xcd\xcf\x1e\x8a\x8a\x25\x47\x63\x18\xc6\x5d\x42\x8f\x1c\x01\x45\x19\x05\x9b\x29\xf1\x34\x28\x8e\x63\x2f\xa1\x41\x8d\xdc\x70\x72\xc8\x6c\x9d\x9d\xa7\x58\x12\x0c\x4a\x92\x17\xa9\x8d\x3e\x90\xd8\x7b\x9b\x14\x24\x08\x86\xa4\x2f\x21\xc1\x8c\x66\x86\xa2\xa9\xdb\xf4\x52\xb0\x18\x87\xe2\x7b\x12\x11\x4b\x23\x76\x43\xe7\xd2\xb5\x71\xb6\xa9\x73\xe0\x1d\x7b\x42\x1e\x0a\x99\x56\x63\x58\x2c\x55\xf1\x6c\x89\xc8\x8b\x4d\x32\x33\xa8\xe6\x6b\x62\xae\x9a\x2f\x77\xc5\x46\x17\x2f\x0e\x89\xd7\x5a\xbe\x5d\xac\x8b\xdd\xac\x50\xe7\xdb\x7d\xa6\x99\x65\xea\x03\xbc\x18\xd4\x4f\x24\x11\x7c\x47\x24\x3b\xa8\x14\xe8\x96\x48\xd6\xc5\x92\xd0\xc8\xd6\xc4\x7c\x86\x21\x70\x9e\x24\xe8\x57\xaa\x21\xe6\xda\xad\x6a\xa1\x5f\x61\x0a\x99\x6a\xb6\xd6\xac\x96\xf2\x75\xb2\xcd\x08\xc3\x7e\xaf\x9b\x9a\x08\xe1\x10\xc1\x89\x66\x1e\x2f\x76\x05\x0a\xe7\x6b\x83\x6e\xbe\x5b\x24\xf8\x61\x99\x1f\x0c\x0a\x83\x41\x0f\xef\x15\x07\xc3\x61\x8b\x16\x86\x03\xa1\xd3\xa8\xe4\x06\xaf\x6d\xbe\x4f\x33\x83\x3a\x99\x9a\x08\xe9\xa8\x6b\x50\x68\x96\xfb\xbd\x6a\xbf\x3e\x2c\xe6\xab\xbd\x4e\xa5\xdf\xa3\xf2\x85\x22\x4f\x54\xc5\xe1\x10\x2f\x37\x2b\x35\xa6\xce\x97\xf9\xae\xd0\xcc\x77\xe9\x6a\x23\xdb\x16\xf2\xbd\x41\x5d\x7c\xb8\x76\x03\x72\xe7\x86\x13\xe6\xba\x2d\x54\x85\x6c\xc7\xb3\xa3\xfb\xc3\x82\xf1\x9b\x73\x4f\x08\xf9\x84\xd8\xe6\x12\xa6\xb0\xc0\xf3\x6d\xb7\x34\xf6\x77\xcd\x56\xcf\x5d\x24\xf5\x65\x15\x4f\x08\xf6\xe4\x6e\x53\x27\x0b\x1a\xb6\xd5\x73\xed\x4a\x3b\x6c\xf7\x78\xd6\x00\x4b\xb1\x1c\x47\xb0\x34\xcb\x39\x4c\xa1\x4f\xc8\xc3\xbf\xbf\x58\xf6\x2e\x6e\xcc\xc7\x23\x09\xe8\x60\x2e\xc3\x2f\x2f\xc8\x17\x0c\x45\x7f\xa0\xee\xe7\xcb\x7f\xa2\x6c\x33\x48\x00\xf3\x13\xc0\x9f\x10\xc2\x21\xe0\xf6\x01\x82\x68\x9f\x90\x2f\xa7\x0d\xce\xdd\xcd\x39\xb0\xb5\x15\x4c\x4f\x2e\x20\x0f\xf1\x84\x60\xae\x40\x6b\xa8\x8d\x27\x3b\x7a\xd8\x13\xf2\xc5\x55\xd7\x68\x0a\xb7\x3b\x1a\xd7\xfa\x80\xf4\x5c\x11\x7b\xae\x48\x9c\x61\xa9\xcf\xd4\xf2\x9e\xc0\x67\x6b\x39\x20\x4f\x4a\x2d\x5f\xe7\x04\xd3\x73\x45\x1e\xb8\xa2\x59\x16\xfb\x54\x2d\xbb\x04\x3e\x5b\xcb\x01\x79\xd2\x69\xf9\xca\x28\x70\x11\x57\x18\xce\xb2\x24\x87\x52\xdc\xde\x98\x71\x97\x2d\x5d\x9b\x69\x8e\x16\x38\x1c\x27\x08\x06\x47\x09\x9a\xa5\x7e\x90\x0c\x43\xb1\x28\x73\x52\x87\x6c\x28\x8e\x3a\xba\xed\xdc\xb9\x8e\x64\x13\x2a\x9a\x3d\x02\xfa\x62\x02\xe6\xcb\x19\x79\x82\x70\x1f\x4a\xf8\x3d\x96\x84\x1f\x64\xc4\x50\x74\x6f\x4a\xff\x27\x65\x64\x30\x86\x63\x19\x02\x3f\xc8\x98\xc6\x9a\xff\x0b\x44\x23\x02\xa2\xa5\x5d\xa8\xff\x05\xa2\x91\x4f\x08\x8e\x91\x0c\xc9\x92\x28\xc5\x30\xa1\xb3\x46\xfd\x77\x4a\x86\x07\x24\x0b\x99\xb4\xbf\x50\xb2\x84\xd4\x2d\xec\xe9\x94\x6b\x53\xb7\xc3\x13\x2a\xde\x1a\x89\x26\x14\x8e\x55\x29\x82\x86\x90\x66\x15\x4c\xc2\x19\x89\x92\x58\x4e\xc5\x09\xa0\x52\x04\x86\x49\x0c\x45\x73\x00\x27\x55\xa0\x62\x24\x4a\x00\x05\x95\x28\x5c\xa2\x09\x42\x42\x19\x09\x72\xdc\xc3\x93\xdb\xc6\xdb\x45\xca\x9d\x83\xc3\x38\x06\xfd\x8e\x62\xdf\x51\x0c\x41\xd1\x17\xe7\xbf\x60\xb1\xc8\xbd\xa0\xc4\x0b\xc5\xfd\xe0\x18\x16\x63\xc8\xc4\xbb\x24\xce\x91\x1c\xcd\xe0\x1c\xed\x86\x2f\x0c\x3d\xfb\x38\xa4\x31\xd4\x7b\x73\x7f\x8d\x46\xd8\x4e\x50\x15\xbb\x25\xa0\x28\x24\x2a\x43\xc0\x51\x24\x83\xb3\x32\x4e\xcb\x38\xad\xb2\x38\xad\x92\x40\xe5\x24\x56\x41\x25\x0c\x97\x68\x85\xc4\x14\x46\xc1\x71\x16\x90\x38\x03\x71\x06\x55\x24\x4c\x26\x65\xc8\xc8\x8e\x9c\x77\x50\x27\xe1\x9a\xed\xb9\x4e\x98\x48\x55\xb1\x04\x4e\x70\x89\x77\xdd\xb4\x96\xa4\x38\x3c\x46\x91\x04\x1a\xae\xca\xdd\xff\xd8\x94\xca\xdc\xb1\x8f\xd1\x40\x22\x09\x94\xe3\x08\x94\x04\x12\x27\xd1\x92\x4c\x2a\x18\x07\x49\x99\xe1\x30\x9c\x41\x71\x89\xa1\x81\xc4\x4a\x1c\x8d\x2b\x28\x21\x4b\x38\xcb\x31\x12\x27\x43\x0e\x2a\x32\x85\xca\xea\xc3\x7d\x26\x04\x77\xbd\xdb\xb9\x5e\xd8\x10\x75\x91\x2f\x3b\x9f\x8e\x91\x04\x11\xa6\x6a\xff\xdd\x7d\x06\x83\xb1\x2c\x1b\xa3\x4d\xea\x0e\xda\xdc\x95\xe6\x12\x0a\x68\xa8\xb0\x24\x46\x70\x24\xcb\xd0\x24\x89\x01\x95\x90\x30\x49\xa1\x31\xc8\xa0\x0a\xc7\x2a\x12\x40\x65\x92\x20\x65\x95\xc6\x68\x56\x66\x69\x8c\x21\x25\x42\x55\x68\x8e\x53\x49\x8e\x7e\xb8\xcf\x8c\xb8\x41\x3e\xcc\xca\x22\xf5\x85\x13\x24\x47\x24\xde\x75\x83\x2d\xcd\x61\x2c\x19\xa3\x4d\xfa\x0e\xda\xa4\x76\x76\x45\x28\x8c\x22\xa9\x0a\x20\x00\x20\x70\x8c\x41\x21\x86\x33\xb2\x42\x52\x32\x29\x03\x9a\xc0\x64\x42\x82\x34\x94\x81\x44\xcb\x04\x2e\x4b\x34\xc6\x31\x04\xc4\x65\x1a\x10\x2c\x25\x93\xa8\xe3\xb2\xee\x30\x23\xe1\xda\x24\xc3\x3d\xa6\xab\x2f\x02\x23\x19\x2c\xf1\xae\x1b\x05\x09\x9a\x64\xd1\x18\x6d\x32\x09\xda\x4c\x08\x4c\x29\x9e\x23\xbb\x36\x4e\x45\xec\x56\x44\x34\x04\xb0\x88\x99\x4f\xc0\x12\xa8\xf3\xf1\xeb\xb0\x04\xeb\xf2\xeb\xb0\x90\x81\x6a\xf8\x3a\x2c\x54\xa0\x7a\xbd\x0e\x0b\xed\xc7\x42\x5e\x87\x85\x09\xd4\x78\x57\xa2\x61\x03\x65\xd4\x95\xb3\xc4\x05\xd2\xf9\x2b\x15\xec\x2c\x25\x5f\x59\x70\x25\x1e\x2c\x98\xa9\x5e\x89\x27\x98\xf1\x92\xf7\x79\x04\xf2\x2e\xdd\xca\xf8\xed\xc2\xdd\xbc\xa6\x6d\xd3\x46\x3c\x09\x78\xb3\x77\xf1\x98\x99\xc7\x11\x1c\xff\x66\x3d\x0d\x20\x75\x39\x57\xf6\xc9\xfe\x95\x7b\x0a\x4e\xe1\xe0\xb6\xaa\x6f\xea\x18\x3e\x21\x29\xba\x51\x9f\xb0\xf7\x11\xa5\xb5\xbd\xcb\x3a\xfe\x4d\x7e\xae\xd6\xae\xac\xb4\xfe\x3a\xad\xb9\xce\xf5\xf8\x37\xfa\xa9\x5a\xbb\xb6\xa3\xf7\x17\x69\xcd\xdf\x30\x3c\x5e\xb8\xd6\x46\xa7\x6b\xac\xd9\xe6\xd2\xb2\x21\xbc\xd5\x90\x1c\x34\x86\x79\xab\x66\xff\x7c\xf3\xe1\xc6\x2d\xbf\x8b\x66\xee\xd0\x06\x3d\x5e\xa0\x7f\x78\xe6\x6e\xf0\xbf\x7f\xc7\xcc\xdd\x79\xdb\x39\x6c\xe6\x7c\xcd\xdd\xe3\x05\x7a\xac\x5c\xfe\xfd\xc5\x36\x6e\x55\xa6\x6a\x1a\xb3\x5b\xe7\xf5\x2f\x6e\xca\x7e\xc2\xde\x7d\xc8\x4c\xf9\x93\xc9\xe3\x05\x7d\x3e\x53\x37\x38\xac\xd3\x4c\xdd\xb0\x74\xfe\xda\x4e\xec\x8d\x4b\x2a\x21\x85\x0d\xf9\xe5\xc5\x25\x4f\x1a\x44\x63\x4d\x7e\xc6\xfd\xda\x34\x39\xf2\x59\xba\xb0\x32\x9c\x8d\x2e\x37\x13\xf1\xe0\x7e\x3c\x51\xb5\x50\x22\x1e\x22\x90\x85\x5e\x8b\x87\xf4\xe3\x89\xaa\x15\x13\xf1\x50\x81\xfc\xee\x5a\x3c\xb4\x1f\x4f\x54\x25\x9d\x88\x87\x09\x24\x4e\x57\x23\x62\x03\x71\xfc\xea\x19\xe3\x02\x61\xe5\x6a\x55\xfb\x0b\xf3\x5b\x58\xf2\x97\xe6\xf4\x2d\x98\xf0\x00\xa6\xe8\xe2\xfc\xd2\x5f\x31\xdc\xa3\x3c\x4f\x7a\xc8\xf5\x92\x02\x3d\xf2\x37\x0b\x77\xf0\x3d\xde\x07\x52\x09\x86\x84\x1c\x47\x90\x9c\xc4\x41\x95\x51\x24\xc0\x01\x4a\x91\x08\x82\xe0\x24\x86\x55\x15\xc0\xaa\x04\xc9\x30\x8c\x84\x01\x95\x20\x24\x40\xd2\x2c\x50\x28\x19\x55\x54\x8e\xa4\x15\x52\x71\xb7\x03\x6e\x7a\x30\xd0\x0d\xa8\x28\x1a\xd9\x07\xff\xc1\xb1\x04\xcd\xc6\xed\xc5\xb8\x77\xbd\x1e\xef\x81\xdf\x7d\x0a\x55\xb6\xd8\x5c\x35\xa7\x52\x05\x2f\xf2\x44\xbf\xf7\xd6\x32\x2b\xb3\xb7\x01\x8a\xaa\x05\xd6\xaa\x96\x98\x19\x2a\xb4\xd6\xe5\xfe\x33\x3f\x20\x76\xe0\xaf\xfc\xf1\x93\xe1\xfd\x9f\xe0\x35\x6f\xbe\x8b\x74\x15\xd6\xc1\xf8\x6d\x53\x03\xdd\x06\x47\x67\x3e\x54\x8b\x83\xa8\x6c\x98\xe2\xeb\xe0\x23\xd3\x2f\x4f\xf3\x46\x85\x99\xae\xa6\x6b\x07\xbe\x4e\x99\x15\x2f\xbe\xde\x6a\x9d\xe7\x76\xb7\x84\x6c\xee\xe3\x7d\x35\x6d\x66\x9a\x86\xc8\x97\x35\xb5\xd1\x1a\xe4\x8c\xea\x64\x65\x6f\xe5\x0e\xa1\xe7\x1b\xd9\x26\x85\x8d\xa7\x8a\x95\x2f\x82\x8c\xd8\x5f\xa3\x54\xfb\xb9\x37\xe9\xa3\x83\xf1\xd4\x44\xb3\x99\x86\x40\x8a\x20\xdf\xc3\x2b\x33\xd9\x22\x5e\xd7\xd5\x99\x26\x91\x9d\x96\x59\xab\x3e\x1c\x74\xe0\xe8\xa1\x79\xa2\xdc\x0c\x4a\xe2\x7c\x7e\xf9\xe0\x79\x61\xf7\x4f\xf6\x74\x5d\x3a\xfd\x59\xa1\xdf\xa0\x46\xbc\xcd\x8c\x12\xdb\x29\xe8\xb9\x67\x38\x96\x09\xa6\x31\xb0\x8b\x95\xca\x47\xbf\xc7\xae\x7b\xda\x6b\x06\x64\x97\x54\x95\xaa\x39\xf0\xb9\x25\xd8\x8e\xf9\x00\xbe\xb3\xcf\x99\x7e\xfd\xfc\x7a\xe8\x5f\x30\xa7\x39\x98\xc5\x2d\x7c\x55\x16\x45\x8f\xd0\xeb\xf4\xf4\x8f\x3a\x71\xf8\xaf\x05\xe0\x32\xda\x73\x06\xad\xa2\xe5\xc2\xd6\x9e\xac\x45\x4c\x1f\xa2\x60\xbb\x30\x30\x4e\x2c\x6e\x56\xd5\xec\xb6\x4e\xd9\x19\x41\xce\xba\xf3\x4c\x8c\x6d\xb3\x3e\x7f\x8d\x51\x80\x5f\xde\xb0\x4f\x70\x4e\x2e\xa7\x3f\x7c\x7e\x94\x03\xf8\x52\xd2\xff\xe5\xd8\xc7\xbf\xc7\x2c\x6d\x52\x02\xdf\xad\xe4\x9a\xd9\xe1\xfc\x03\xed\xad\xe9\x2c\x29\x31\xf2\x5c\xe0\xa8\x56\x67\x3d\xad\x2b\xc3\x72\x51\xca\xb4\xf0\x71\xa7\x67\x89\xf5\xee\x0a\x1b\xf6\xec\x3c\x59\xae\x70\xfc\xb8\xb3\xa9\xe7\xfa\x93\x9e\xa2\x2d\xe6\x55\x11\x97\xb3\x94\x31\x7b\x14\x50\xf0\x91\x5d\xff\xfa\xe5\xa4\x8a\xce\xcf\x5a\x0e\x3b\xdf\xbb\x7f\x93\xa3\x84\xc7\x91\xa9\x14\xca\xaa\x38\x49\xe3\xb8\x2c\xe1\x34\xc5\x4a\xac\x44\xd2\x32\x4b\xaa\x0a\x26\x2b\xa8\x8a\x11\x12\xcd\xa2\x1c\x2a\x01\x00\x59\x4a\x22\x31\xc8\x4a\x34\x23\xab\x18\x0d\x15\x95\x62\x58\xf9\xb4\xaf\x79\x83\x23\xc3\x93\x1c\x19\x87\xb1\x5c\xd8\x5e\x93\xff\xae\x37\x55\xba\xd5\x91\x05\x17\xdd\x99\xa1\xdb\xd2\x78\xd0\xa2\x05\xc6\xc8\x55\xd1\x6a\xf3\x71\x3d\x6c\x67\xb9\x8f\xc1\x6a\xd0\xeb\x10\x1b\xad\xa1\x0d\x97\x6d\x09\xcb\xad\x66\xcd\x2a\x64\x1d\xf8\x68\x47\xc6\x9b\xef\x0c\x0e\xd6\x6f\x6c\x09\x95\xaa\xf8\x24\x5b\xe6\x72\x75\x03\x53\xbb\xeb\xcd\x62\xdd\x9d\x57\xb8\x16\x25\xae\x5a\xcf\x70\x3d\x90\x0d\x75\x55\x7f\xc4\x16\x2d\xb1\x5c\x86\x1d\xb1\x58\x2b\xe8\x92\xa2\xe7\x2b\xf0\x7d\xba\x9e\x11\xea\xb4\xd1\xe0\xb0\xd5\xb8\xda\x1f\x90\x8c\x91\xfb\x34\x47\x56\xed\x93\x79\x14\x4e\xea\x34\xbf\xe5\xb2\x68\xc3\x2a\x08\xe3\x95\x8c\x31\x18\xd6\xe5\xd8\xe1\x1b\x39\xab\x4e\x67\x5c\x93\xa1\xa6\x59\x62\xe5\xc0\xff\x69\x47\xf6\xc1\x2f\x81\x7d\xa3\x23\x6b\x86\xe9\xe4\x1a\x47\xc2\x92\xa1\x3a\x3d\x93\x37\xf8\xd9\x3b\x92\x0a\xbd\xe4\x66\x56\xe9\x39\x2b\x16\xb6\x9c\xd1\xd4\xd4\xe6\xc7\xbb\x38\xc0\x6a\x35\x20\xe7\xcb\xdb\x55\x17\x76\x24\x54\x25\xac\x3c\x51\x29\x32\x1f\x2b\x1b\x74\x3b\xed\xf6\x60\xfa\xd1\xfa\xc8\x2c\xfa\xc4\x6b\xab\x3d\x7f\x5f\xd4\xca\x36\x41\xe5\x3e\x9e\x15\x89\xcc\x62\xfa\x63\x9d\xe6\xef\xe3\x48\x70\x09\x87\x2c\xae\x48\x40\x92\x50\x9c\x94\x70\x06\xa0\x32\x81\x91\xa8\x0c\x18\x4c\x61\x81\xcc\x49\x32\x83\xb1\x04\xa6\x72\x2a\x05\x08\x49\xa1\x39\x28\x03\x42\x61\x59\x55\x42\xa1\x4c\xed\x1d\x09\x71\x9b\x23\x21\x12\x1d\x09\x4b\x87\x3e\x02\x70\xba\x4b\x3e\xf8\x6b\x9c\x5b\x1d\x49\x2e\xc9\xd0\xa4\xd9\x78\x86\xf5\x70\x65\x4c\xf5\xb0\xd9\x3b\x06\xf5\x9a\x5c\xc0\xec\xcd\x5b\x7b\x58\x79\xe5\xd6\xc2\xd8\x68\x67\x00\xec\xb3\x5d\x2d\x6f\x38\xf0\xd1\x8e\x24\x57\x5e\xea\x98\x5d\x2d\x54\xf3\x64\x6f\xb3\xb6\x51\x25\x97\xed\x09\x2a\x6d\x4b\x94\x4e\x4a\xdb\x9a\x59\x18\x67\x17\x8f\x7a\xef\xb5\x36\xdb\xc8\x36\x45\x6a\xa2\x8a\xcf\x36\xf6\xdb\x86\xae\x29\xd4\x6b\x99\x14\xc8\x9c\x2e\x5b\x2a\x49\x0b\xfc\x24\x53\x68\x77\x1b\xd6\x9c\x55\x87\x9f\xe7\x48\x0a\x94\x51\xb6\x7b\xca\x7c\x58\xef\x29\xaf\xef\xf6\x60\xd1\x29\x66\x6c\x49\x1e\xa2\xb3\xec\x4c\x95\x33\xa5\x8a\x30\xee\xcf\xf5\x55\xbe\x34\x01\xae\x26\xff\xb0\x23\x59\xb5\x3b\xc6\xad\x19\xd1\xdd\x1c\x09\xd3\x3d\x8d\xaf\xc5\xc8\x1b\xfc\xec\x1d\xc9\x56\x5a\x28\x52\x7b\xa3\x6d\x60\x5e\x96\xab\x4a\xb1\xb9\xd6\x5b\xc5\x47\xb3\xff\xf8\x0a\x0b\xec\x5b\x65\x63\xf0\xef\xea\xa2\xd7\xef\x94\xad\x41\x15\xc2\xd2\xdb\x80\x5b\x58\xd2\x90\x85\x6f\x45\xd8\x6f\xc3\x4c\x9d\xa7\x06\xd5\xe2\x63\x7d\xc2\x97\x9a\xad\xa9\x9e\x63\xca\xcf\x45\xfc\x4e\x8e\x84\xc5\x30\x8c\xc3\x65\x82\xa5\x49\x42\x51\x19\x42\x46\x31\x0a\x50\x00\x53\x18\x46\x62\x51\x5c\x51\x55\x94\x52\x48\x95\x42\x55\x99\x56\x30\x94\xc5\x68\x00\x18\x4a\x46\x01\x8d\xa1\x9c\xca\x81\xbd\x1b\xb8\x65\x47\xc1\xf3\x7c\x5a\x8c\x47\x39\x3c\x84\xc5\xb0\x61\x0f\x0e\xfa\xef\xfa\xba\x1d\x7b\x97\x72\x99\xf9\xbb\x2e\xa5\x14\x66\x62\x9e\xeb\xa1\x73\xdd\xeb\x89\xfb\x2c\x35\x8b\x2d\x33\x4a\xd1\xe8\x2c\xc7\xb5\x55\xd3\xce\x31\x99\x49\xa9\x4a\x88\x90\x53\x7a\x0d\xb5\x50\x7a\x2c\x6b\x54\x79\xd5\xad\x3f\xbe\xf2\x36\x43\x3c\x1f\x3f\x27\x7c\xf9\x23\xfd\x66\x43\x1f\x33\x85\xea\xa4\x3c\x46\x37\xcc\xdb\x82\x5f\x63\xc2\x9a\x2e\xe2\x83\x3c\xbd\x6d\x95\x66\x6a\xb9\xb4\xce\xab\x1b\x94\x13\x97\x1a\x25\xd9\xf5\x32\x9f\x87\xeb\x3c\x2f\xaa\x75\xc0\x67\xd8\x7c\xf3\x55\xa7\x16\x04\x4f\x8d\x89\x29\x9d\x2b\xe6\xb4\xb1\xda\x15\xbb\x39\x8c\x1e\xcb\xbf\x52\xb8\x97\x82\xd7\x7e\xe3\xdd\x8b\xa7\xd8\xb8\xd4\xbd\xf4\x7a\x9d\xd6\x1e\xcb\xa5\xb9\x9d\xf3\x29\x06\xf4\x17\x5c\x7e\x4d\xde\xbf\x54\xaf\x71\x7f\xaf\xeb\x93\xbc\x27\x57\x12\x61\x0b\xa7\x4f\x48\x41\xe6\x75\x3f\x4b\x90\x95\x7a\x83\x57\x3c\xa7\x0f\xfa\xc0\xec\xd1\xdd\xcd\x5a\xea\x13\x05\xb1\x3c\x5e\xcc\x09\xbe\x9d\x9d\x94\xf2\x0b\x4a\xda\xb4\x4b\x7d\xd7\xfd\x32\x33\xcb\x0d\x45\x2e\xbe\x88\x4f\x7c\x41\x96\xbb\x8d\xfe\x4c\x3e\xd1\xbf\xa2\x20\x7b\xec\xe7\xac\xe1\x52\x98\xe5\x3a\xc5\x65\x7d\x9a\xcb\x75\x3b\x39\x43\x7d\x95\x07\x66\x59\xd0\x5e\xd9\xe9\x1b\xdf\x7b\x2e\x76\x50\x9c\xae\xea\x4b\x94\x9c\xf2\x3d\x86\xef\xf2\x18\x4b\x19\x7c\x71\xdd\xcb\xcc\x06\xb3\xb9\x9c\x9b\xe5\x60\xc7\xa8\xc9\xf5\x4a\x86\x6b\x62\xcd\xc6\xe0\x3d\x73\x1f\xf7\x27\x29\x24\x4b\x2b\x92\xa2\xa0\xb8\x42\xd2\x28\x8b\x31\x34\x83\xc9\x24\xa0\x00\x03\x39\x85\x86\x2c\x4d\xc9\x00\xe7\xe4\x5d\x2d\x46\xe3\x0a\x03\x80\xca\xa0\x00\x57\x21\xa4\x24\x82\x56\xa0\xeb\xfe\x6e\xfa\x35\xe8\x45\xee\x8f\x89\x7b\x40\x95\xf1\x3c\x9f\xba\xef\xd0\xba\x86\x78\x61\x37\xe4\xcf\x38\xbf\xc2\x91\x7e\x33\xc3\x4d\x67\x95\x3e\xfe\x4e\xac\x98\xa6\xba\x65\x1b\x35\x38\x15\x24\xac\xd3\x29\x51\xda\xe6\x7d\x5a\x42\x33\xc6\x78\x60\xd6\x6d\x66\x5c\xc7\x68\xbc\x29\x4d\x27\xb8\xd2\xee\x74\x55\x98\x33\x56\x32\xda\xe0\x81\x3a\xc9\x0d\x36\xf6\xa4\xc7\xeb\x56\x75\xf9\xa6\x67\x66\xdb\xb7\x0c\x3f\xfc\x3c\xe7\x77\x69\xb7\xe9\x77\x3b\xbf\x6b\xba\x61\x9f\xe2\xfc\xb2\x4b\x83\x30\x6c\x92\x7a\xcf\x36\x84\xcd\xa2\xf9\x4c\x18\x45\xf1\xf1\x03\x63\x5a\x5b\xcd\xc2\x74\xb5\x96\x1f\xce\x9a\xfd\xb1\xb9\x6c\x3f\x76\xdc\x01\x77\x76\x7e\xd7\xd0\xbf\xd1\xf9\x15\xf1\xf6\x70\x21\x01\x13\x3e\xdb\x99\xe7\xea\x9a\xdd\xd0\xcd\xd6\xaa\x27\xd6\xde\x66\xd5\xc2\x7b\xf3\xad\x59\xd0\x32\xd0\xa2\x89\x25\xcf\x0c\xcc\xd7\xcc\xb2\x5d\x7c\xc5\xca\x62\x8b\x23\xeb\x1a\xf7\xd1\x64\x33\x8b\x47\x41\x54\x0b\x78\xbe\x9b\xed\xaf\x97\x74\xbd\x5b\x90\x2a\x35\x21\x33\xbe\x8b\xf3\x63\x18\x82\x56\x51\x89\xa5\x39\x05\xa2\x2a\x43\x02\x0a\x2a\x8c\xca\x2a\x34\x85\x73\x1c\xc9\xe1\x04\x0b\x25\x54\x45\x49\x1c\x53\x09\x55\xc6\x25\x49\x26\x09\x16\x65\x49\x15\xc7\x64\x16\xa5\x28\xf7\x17\xd7\xd8\x2d\x3b\xdd\x97\x38\x3f\x9c\xe0\x42\x7f\xeb\xe0\xbf\xeb\xdb\x0d\x72\x4d\xf1\xc2\x1e\x4a\x3a\xf7\xe7\x9a\xc2\x85\x0d\xf6\xeb\xdc\xe5\xfa\x60\x8a\x86\x87\x95\xe2\x91\xdf\x66\xee\x2d\xd3\xe6\x97\x7a\x45\xe6\xec\xd6\x7b\x61\xfc\x58\x9f\xf6\xa4\x4a\xe3\x83\x34\xf4\x56\x73\xd8\x85\xab\x6d\x56\x5d\xa1\x55\x5e\x7f\x97\x06\x05\x7a\xdb\x90\x16\x2d\x34\xd3\xa2\x0d\x66\x66\x6a\xb3\xd6\x8c\xad\x93\x3d\xa3\x95\x29\x94\xf8\x4e\x33\x43\xe2\x62\xbd\x2f\xe7\x3f\x94\xe6\x3a\x8d\xbb\xf4\xea\x27\xda\x5d\x3a\xfc\xff\xed\xee\xb2\xf9\x47\xf8\x73\xda\x0b\x31\xfc\x25\xb8\xd3\xeb\x6d\xe8\x7a\x77\x2a\xdc\x46\xff\x46\x77\x5a\xaf\xe5\x4b\x59\xba\xbb\xf8\xc0\xb1\x82\x01\x72\x24\xdd\xea\x59\xc6\x73\x43\xd3\x7a\xf9\xcc\xa4\x45\x3f\x97\xca\x8f\xcf\x4d\x2b\xdb\x5f\xd8\xb2\x64\x96\xb8\xa5\x5e\x6c\xe6\x8b\xef\x6f\x4b\xb0\xac\xbc\x16\xa4\x35\x33\xe9\x4f\x04\x61\x38\xce\x88\x7c\xf1\x6d\x88\x52\xaf\xeb\x81\x88\xe5\xf8\xbb\xb8\x53\x42\xa2\x15\x99\x52\x49\x1a\x2a\x2c\x46\xa2\x14\x47\xc9\xaa\x4a\x4a\x84\xc4\xca\x12\xa0\x25\x46\x95\x51\x49\x46\x59\x14\x53\x15\x1c\xc7\x21\x29\x33\x18\x23\x71\x24\xc7\x40\x48\xc9\x50\x41\x1f\x9e\x10\xea\xe0\x4e\x6f\xcf\x25\xc9\x24\x77\x4a\x60\x1c\x41\xc5\xfc\xa2\xc4\xbd\xeb\xdb\xc8\xbe\x35\x9b\x8c\x69\xf3\xbb\xa6\x70\x61\x77\xee\x16\x77\xaa\x7c\xf4\x3d\x4d\x1d\x6f\xf6\x99\x97\xea\xa8\x6d\x2b\xcf\xab\x42\xc1\x32\x29\x76\x5a\x5c\x54\xac\xcc\xb4\x8e\xb5\x40\x75\xc1\x6f\x84\xfa\xdb\xf3\x80\xca\x71\x84\x50\x51\x07\xd4\x66\x53\x5c\x2c\x0b\x5a\x97\x6b\xe8\xe5\xfa\x16\x7b\x06\x7a\x51\xe4\xa6\x72\x7d\x63\x57\x44\x65\xb5\x62\x3e\xb2\x93\x42\xab\xd1\x7a\x6e\xb2\xf7\x70\xa7\xae\xac\x41\x77\xfa\x57\x96\xde\xdd\x3f\xc2\x5f\x51\xc6\xf4\x44\xfe\xd6\xfc\x5f\xeb\xee\x43\xf5\xf7\x1b\xf9\x4b\xd2\x5f\x48\x38\xba\x77\x76\x7d\x5e\x55\xc4\x87\xa3\xfc\x6d\xf4\xa7\xe4\x89\x7e\x68\xca\x17\x1f\x8e\x7a\x16\xd3\xc6\x31\xe2\x91\x1d\x82\xed\x6a\xbe\x6d\xc2\xe9\xfb\xba\xd0\x64\x7a\x79\x63\x39\xcd\x09\x4d\xba\xc1\xa9\xd3\x06\x21\x37\x17\x9c\x3a\x2f\x0a\x70\x46\x82\x72\x07\x7d\xec\x4e\x99\xea\x80\x7b\xef\xca\x04\xde\x5a\x33\x05\xd4\xc0\xf0\xc7\xe7\x55\xad\x22\xbc\x0a\x5c\x91\xcb\xc5\xb5\x36\x62\x0f\xa6\x09\x3f\x27\xed\x78\x30\xcf\xe1\xe5\xbb\x97\xbe\x64\x2f\x80\xd5\x79\x37\x23\x9f\xcb\x79\x5f\xe7\x1b\x46\x18\x69\xb4\x4a\x35\xbe\x35\x44\x2a\xc2\x10\xf9\xaa\x29\x49\x2f\x6e\x0c\xbc\xed\x28\xe5\x39\x73\x37\x4b\xe7\x27\x1b\x26\xdc\x55\x8c\x21\x5d\xb1\xd4\xec\x0a\xc8\xd7\x13\xf8\x93\xe7\x04\x96\x27\xdf\x79\x29\x17\xaa\xe6\x3e\xd3\x7a\xb1\xe0\x17\x4d\x6a\xc4\x2f\xd8\x12\x7e\x24\x76\x5f\xc9\xc2\x89\xc4\x49\x1a\xc3\x56\x6a\xc9\x23\x1f\x10\x4c\x7c\x02\xef\xbe\xd2\x47\x91\x89\x93\x3f\x96\xb5\x44\x0d\x04\x4f\xfa\xdc\x8b\xe2\x9c\x0b\x9a\xee\x2d\xc6\xee\x11\xa2\x01\x3c\x48\x5d\x0c\x2e\x88\x6e\xbb\x24\x16\x10\xc9\x36\x21\x3c\xac\xb0\x88\x95\xe4\x39\xa5\xf4\x5a\x76\x4e\x28\xbc\x9c\xf8\x8a\x00\x3f\x3f\x2e\xf0\xd3\xd9\x3b\x8c\xc3\x98\x73\xce\x59\xbd\x81\x33\xe7\x55\xce\xa9\xd8\x0a\xbe\x00\x3a\x8c\x9b\xfd\xe1\xb0\x37\xf0\xe3\x62\x48\xc7\x51\xe0\xed\xd2\x4f\xe7\x2f\x92\x0e\x5d\x64\xde\xd3\x6e\x2f\xe7\x74\xef\x97\x5d\x86\x03\xe8\xbc\x6c\x1f\x5e\x32\xe3\xe3\x38\xec\xd0\x83\xa7\xc3\x01\x07\x51\xcc\x9e\xde\x72\x7b\x23\x9b\x9a\x92\x9a\xc1\xd3\x0b\xe4\x9f\x42\x4f\x6a\x48\x60\xfa\x70\x40\xf1\x3d\xf8\xde\xe3\xf2\xb2\x1e\x11\x1c\xae\x92\x24\x5c\x80\xc3\x59\xcc\xf7\x10\x60\x8f\x2b\xc2\xa6\xaf\x14\xc1\x7f\x1a\xc0\xb9\x10\x9e\x93\xa7\xaf\x5d\x8d\x1e\x1c\xd7\x2a\x3f\x5e\xd1\x81\xa3\xb4\x6f\xd5\xb5\x1f\x9d\x97\xe5\xc3\xbb\x3c\x7c\x3c\x86\x73\x74\x7e\x1c\xf8\xed\x6c\x9d\xe1\x4c\xe7\xde\xc2\x18\xf4\x1c\x6c\x7e\xf5\xb4\x9e\x70\x5c\x6f\x92\x49\xe6\xe7\x3b\xab\xfd\x7a\x4e\x3d\x58\x02\xbc\x2a\x30\xc0\xd9\xe1\x30\x97\x70\x5e\x02\x07\xcd\xdf\xc4\x91\x1f\x57\x12\x5f\x67\x87\x99\x84\xf2\x77\x76\x76\xfe\x4d\x1c\x06\xb1\x25\xf1\xe8\x3b\x80\xe5\xe9\xec\xfc\x95\xa7\xb3\x43\x76\x22\x84\xb8\xc3\x6a\xd9\xe3\x49\xe2\xf8\xc2\x98\xb4\xc3\x7a\x37\xed\x5e\xa0\xd8\x44\xbd\xb9\x6f\x4a\x3f\x7b\x25\xb1\x31\x1f\xed\x4f\x04\xbd\x55\xa1\x89\x04\x7c\xd9\xf1\xe1\xed\xce\xfe\x7c\xd4\x05\xbc\x80\xf7\xdb\xed\x20\x0e\x77\x32\xc7\x21\xab\xcc\x8f\x70\x9f\xfb\xec\xf0\xed\xaa\xe9\xab\xed\x21\x16\x6b\x62\xb2\xb5\x03\x4a\x60\x74\x1f\xb9\x76\x28\x8f\x46\x74\x27\x6e\xc3\x50\x27\x06\xcd\xb4\x96\xec\x41\x7e\x6f\x63\xf0\xa1\xbe\x26\xca\x47\xa3\x0b\x1c\xff\x78\x7f\x45\x9f\x1d\x30\x99\xc8\x7e\x60\x40\x7a\x61\x3c\xe7\x7d\x7e\x9a\xfe\xbd\x67\x8a\x26\x49\xe2\x81\x4d\x2f\x44\xd8\xe9\xa5\x9f\x26\x4d\xe8\x51\xa9\x49\x62\x85\x0d\x4a\x2f\xdf\xa1\x74\xfd\x34\x99\x8e\xc7\x1f\x25\xc9\x11\xd9\x63\xf0\xa3\x3e\xbd\x43\xe0\x33\x96\x76\x10\x7b\x68\xd9\x71\xe9\x02\xf7\x23\xf5\x27\xae\x77\x5a\xe1\x71\x24\xd2\xc8\x90\x90\x4d\xc7\x12\xbb\x5f\xf8\x3a\x47\x9c\x8a\xf7\xe4\x20\xe6\x2d\x71\x3e\xc3\x6c\xce\xf1\x5f\x5d\x60\x39\x49\xdc\x31\x90\x1f\xfa\x3a\x23\xc9\x30\xa6\x57\x6b\x39\x06\x67\x62\x8a\xf0\xf5\xeb\xe1\xcc\xcf\xef\xff\xfa\x17\xf2\x60\x19\xba\xe2\xd9\x35\x78\x78\x79\xb1\xe1\xc6\xfe\xf6\xed\x09\x89\x06\x94\x0d\x25\x1d\xa0\xdb\x01\x8d\x06\x95\x8c\xe5\x78\x62\xa7\x22\xef\x03\x8d\x67\xc0\x07\x1a\x60\xe1\x1b\xd2\x2f\x0a\x2d\xc1\x35\x32\xe4\x17\x42\x10\x09\x47\x94\x06\x2e\x47\x81\x33\x3c\x47\xaa\xa7\x43\x9e\xaf\xdc\xa7\x49\xae\xc0\xa4\x96\x78\x14\x27\x48\xbe\xde\x12\x4a\x05\xd1\x6d\x88\x07\x20\xbe\x21\x2d\x21\x2f\xb4\x04\x31\x2b\xb4\xcf\xd2\xdd\x84\xfd\x83\x48\x4d\xec\x0b\xba\x3f\xae\x07\x2f\x1f\x61\x5a\x38\xd4\xca\xa1\x3a\x70\x5a\xf8\x97\x6b\xe0\xfc\x98\xd5\x3f\xa8\x86\x08\x66\xfc\xba\x38\x07\xba\xb3\x51\x04\x0b\xfd\xbf\x41\x21\xd1\xa6\x71\xd6\x49\x49\x6b\x1d\x0d\xc3\xb2\xc7\x26\x6c\x37\xab\x88\x02\x6c\xb0\x33\x31\x44\x59\xce\x16\x88\x6c\xcc\x16\x3a\xb4\xa1\x23\xc3\xff\x0f\x00\x00\xff\xff\x40\xe7\x17\x3e\xbf\x97\x00\x00") + +func non_native_paymentHorizonSqlBytes() ([]byte, error) { + return bindataRead( + _non_native_paymentHorizonSql, + "non_native_payment-horizon.sql", + ) +} + +func non_native_paymentHorizonSql() (*asset, error) { + bytes, err := non_native_paymentHorizonSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "non_native_payment-horizon.sql", size: 38847, mode: os.FileMode(420), modTime: time.Unix(1508958240, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _order_booksCoreSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\xe7\x92\xea\xc8\xf2\x2f\xfa\x7d\x9e\x82\x98\x2f\x6b\x76\xb0\xf6\x46\xa5\x2a\x95\x4a\x33\x77\x76\x84\x00\x61\x85\xf7\xdc\xb8\xb1\xa2\x54\x06\x2f\x01\x92\x70\x27\xce\xbb\xdf\xc0\x74\x43\xd3\xb4\xc3\xac\x99\x73\xfe\xa3\x98\x59\x0d\x28\xc9\xca\xcc\xfa\xa5\x29\xa3\x62\x1e\xba\xee\xc0\xed\x45\xe6\x82\x0d\xa6\xe2\x97\xfd\x9f\x88\x1c\xb8\x03\xbf\x2f\xf8\xf7\x08\x1b\x7b\xfe\xf6\xfe\x58\xf0\x9e\x98\xff\xb2\xff\xb3\xfb\x54\xf0\x5f\xfe\xfd\xef\x5f\xfe\xfd\xef\x48\xd9\xf3\x83\xde\x5c\xd4\x2a\x76\x84\xd3\x80\x3a\xd4\x17\x11\x1e\x4e\xa6\xdb\xdb\xdb\xfb\xc9\x70\x32\x15\x3c\x22\xe7\xde\xe4\x48\xb0\x10\x73\x7f\xe0\xb9\x11\xe3\x3f\xf8\x3f\xda\x09\x95\xb3\x8e\x4c\x7b\x3f\xb6\x5f\x3f\x23\xf9\xa5\x66\xd5\x23\x7e\x40\x03\x31\x11\x6e\xf0\x23\x18\x4c\x84\x17\x06\x91\x3f\x23\xca\x1f\xbb\x5b\x63\x8f\x8d\x5e\x7f\x3a\xe0\x63\xf1\x63\xe0\xfe\x08\xe6\xd4\xf5\x29\x0b\x06\x9e\xfb\xc3\x17\xfe\x96\xef\x6b\x62\x36\x1e\x6c\x59\x0b\x97\x79\x7c\xab\xf3\x9f\x91\x6f\x8d\x7a\x8a\x7c\xfb\xe3\xa9\x6d\x97\xd3\x39\xff\xc1\x3c\x57\x7a\xf3\xc9\xc0\xed\xfd\xf0\x83\xf9\xc0\xed\xf9\x91\x3f\x23\x9e\x7b\xe0\xd1\x17\x6c\xf4\x43\x86\xee\xbe\x2d\xc7\xe3\x03\xb1\xbd\x2f\xe9\xd8\x17\x2f\x9a\x99\x0c\xdc\x1f\x13\xe1\xfb\xb4\xb7\x23\x58\xd2\xf9\xb6\x23\xf6\x24\x73\x6f\xf9\xc3\x17\x2c\x9c\x0f\x82\xf5\x96\xb9\x94\x7f\x1c\x0c\x20\xe8\x9c\xf5\x7f\x4c\x69\xd0\x8f\xfc\x19\x99\x86\xce\x78\xc0\xbe\x6f\x2d\xc6\x68\x40\xc7\x5e\xef\x8f\x5f\x7e\x49\x56\x4b\xe5\x48\xb6\x98\xb4\xda\x91\x6c\x2a\x62\xb5\xb3\xb5\x7a\xed\x40\xf9\x1f\x7f\xd0\x73\xc5\xdc\xa7\x8c\x79\xa1\x1b\xfc\xf1\x3e\xad\x18\x8f\x07\x6e\x6f\xe0\xfb\xa1\x98\x0f\x5c\x2e\x56\x1f\xd0\xb3\xe9\x2c\xf4\xe6\xe1\xc4\x77\xd6\xbe\x98\x7d\x48\x2c\xdc\xc5\x67\x28\xa7\xf3\x01\x13\x9f\x68\x7e\x8f\xcc\xcf\x70\xec\x0f\xfc\x40\x0a\xf1\x49\xca\x4f\x90\x39\xe1\xfa\x2b\x86\x3a\x58\xdf\xa1\x63\xea\x32\xe1\xff\xf1\x8b\x69\xd7\xad\x6a\xa4\x6e\xc6\x6d\xeb\x84\xba\x54\xb4\x3b\x4f\x5f\x09\x56\x5b\x51\xbc\xf9\x3a\xb2\x63\x9c\x28\x15\x6b\xf5\xaa\x99\x2d\xd6\x4f\xe8\x9f\x69\x7e\x4c\x47\x62\xfd\x39\xae\x52\x88\xcf\x30\x3e\x92\x7d\x9e\xf7\x3c\xf4\x83\xf1\xc0\x15\xfe\x7b\x9c\x9f\x89\x3e\xcd\x77\x2b\x85\xd8\x85\x81\x77\xf8\x1e\x89\x3e\xcf\x77\xef\x19\xef\x31\xdd\x53\x7c\x9e\xe3\xb3\x3f\xbc\xc7\xf4\x99\xe8\xd3\x7c\xa7\xa1\xe3\x87\xce\x3b\x3c\xf7\x04\x5f\xe1\x37\x1e\xf8\xfd\x59\x28\xc2\xf7\x6c\x7a\x4a\xf6\x79\xde\xe2\x7d\x9b\xee\xee\x7f\x9a\x9b\x27\xe5\xfb\xec\xf6\x04\x9f\xe6\xb7\x0f\x19\x7d\x41\xf9\xfb\x6c\x5f\xd0\x3d\x98\xfb\x21\x8c\x89\xd9\x8f\x4f\x36\xe3\x50\xf7\x1d\xe6\x0e\x75\x3f\x2d\xf0\x21\x2e\xbd\x27\xeb\x13\xc9\x57\x79\x6e\xd3\xfe\xc7\x6c\xb7\x54\x07\xce\x3b\xda\x73\xc6\xe7\xc1\xf0\x23\xb2\x63\xd8\xfa\x80\xf2\x39\x0c\xbd\x4f\x77\x0c\x2b\x1f\xd0\xed\x23\xc5\x07\x44\xcf\x9e\xff\x21\xdd\xa7\x94\xd8\x7b\xfd\x87\x34\xcf\x3e\xfc\x01\xa5\xf8\x50\x81\xbd\xb3\xbd\x4f\xf3\x02\xdb\xef\x93\x3a\xd4\x7d\x9f\xe0\x09\x7b\x9f\xa2\xda\x42\xe9\x40\x68\xb5\xeb\x56\xb1\x96\x2d\x15\x4f\x89\xc7\xd3\x9e\x3f\x1b\x1f\x28\x6a\x89\x8c\x55\x30\x5f\xf1\xfa\xe3\x50\xdf\x16\xe9\x44\xfc\xfe\xf4\x59\xa4\xbe\x9e\x8a\xdf\x0f\x5f\xf9\x23\x52\x63\x7d\x31\xa1\xbf\x47\xfe\xfd\x47\xa4\xb4\x74\xc5\xfc\xf7\xc8\xbf\x77\x65\x6f\xa2\x6a\x99\x75\xeb\x89\xf3\x13\xbf\x5f\x5e\x70\x7c\x79\xf3\xc0\x38\x51\x2a\x14\xac\x62\xfd\x1d\xce\x7b\x82\x48\xa9\xf8\x92\x41\x24\x5b\x8b\x7c\x7b\xaa\x51\x9f\x3e\xf3\x77\x4c\xbe\x9d\xb7\xfc\xa4\xfe\xa1\xcd\x67\x0b\x7d\xa8\xcf\x0b\x5b\x16\x4b\xf5\x33\x7b\x46\x5a\xd9\x7a\xe6\x59\xac\xd3\xa2\xf4\x45\xf3\x47\x2e\x67\x82\x7c\x45\xf9\x57\x4c\x76\x06\x28\xdb\xb1\x69\x6f\x3b\x12\x99\xce\x3d\x26\x78\x38\xa7\xe3\xc8\x98\xba\xbd\x90\xf6\xc4\xce\x0c\x9f\x2c\xa2\xb7\x64\x5c\x48\x1a\x8e\x83\x1f\x01\x75\xc6\xc2\x9f\x52\x26\xb6\x23\x82\x6f\x67\x77\x97\x83\xa0\xff\xc3\x1b\xf0\x93\x22\xff\x85\xb2\xa7\x80\x3c\xa8\xb9\x83\xee\x51\xc9\x27\x00\x5c\x32\xf8\x1e\xe5\xa7\x51\xf4\xb7\x5f\x22\x91\xc8\xd3\x27\x03\x1e\x61\x7d\x3a\xa7\x2c\x10\xf3\xc8\x82\xce\xb7\x75\xe8\x6f\x1a\xfe\xd7\xae\x6f\x8a\x0d\xdb\xfe\xbe\xa3\xde\x7e\xd1\xa5\x13\x71\x81\x18\xa3\x4b\xc4\x0b\x3a\x0e\x2f\x51\x03\xa0\x9e\x93\x8f\xa9\x1f\x4c\x3c\x3e\x90\x03\xc1\x23\x03\x37\x10\xdb\xf1\x61\xd2\x4a\x99\x0d\xbb\x1e\x51\x9e\x89\x7f\xf9\xd7\x39\x0a\x9e\xfd\xf9\x46\xab\xf8\x57\x99\xe4\x50\x7d\x47\x9c\x41\x6f\xe0\x06\x67\x37\x7d\x31\x73\xc3\xc9\xe5\x7b\x6e\x38\xf1\x43\x47\xb8\xc1\x7c\x3b\xb0\x7b\x52\xf8\x25\xcd\xc0\x95\x63\xba\x1d\xff\x71\xe1\x07\x97\xc5\xd9\x13\xf6\xbd\x89\xe0\xde\x84\x0e\xdc\x0b\x54\xf0\x95\xad\x83\xfe\x5c\xf8\x7d\x6f\xcc\xfd\x48\x20\x56\xe7\x92\xc9\x31\xed\xbd\x25\xd1\xc5\x5e\x7a\x49\x72\x92\x99\x9f\xd3\xfc\xc1\x4a\x3f\x76\xa3\xda\x48\x22\x63\x25\xf2\x91\xdf\x7e\x7b\xb2\xdd\x7f\xff\x8c\x28\xff\xfa\xd7\xdb\xdf\x7e\x61\xaa\x33\x1e\x2f\xcd\xb8\xe7\xf4\x1a\x23\xdb\xa4\x70\x2d\x3c\xb6\x85\xd1\x1e\x19\xae\xc7\xc5\x29\x2c\x5e\xc0\xe1\x75\xa3\x2f\x93\xd6\xb5\xcd\xbf\x2c\xff\xf6\x82\x1c\x3e\xa3\x7e\xff\x44\x98\xd7\x1e\x38\x9d\x8b\xc5\x87\x44\x4e\xc8\x46\x22\x18\x0f\xfc\xe0\x43\xd2\xe7\x9a\xf2\xa9\xe7\xf7\x1f\xef\x26\x71\x82\xc1\xe4\x0d\x27\xd8\x45\x9b\x0b\x30\x3b\xe9\xe9\x97\xa5\xeb\x33\xbf\xb3\xae\x3e\xb6\xf3\x06\x60\xde\xaa\x80\x5f\xb2\x39\x6a\xf1\x16\x5a\x0e\x15\xc9\xb5\x3d\x76\x18\x5e\xfc\x76\x08\x01\xe3\xb1\x98\x7f\x32\x98\xec\xbe\x39\xe0\x6f\x05\x93\xdd\x3c\x0a\xf5\x7d\x11\x04\xeb\xa9\x78\xc3\xfd\x4e\xc9\x98\xc7\x2f\x46\x5f\xf5\x5f\x2f\x68\xf7\x33\x0e\xef\xc5\x97\xfd\xcc\xc4\x47\x4d\x9f\x50\x7d\xd4\xf2\xe9\x54\xc7\x7b\x0d\xd3\xc9\x36\x04\x5c\x36\xc8\x6e\x46\xc7\x7d\x43\x96\xdd\xcd\xb7\x42\xd4\xee\x66\x84\x7b\xa1\x33\x16\x5b\x2f\x61\x83\xdd\x04\xe1\xa3\xc2\xe0\x61\x38\xb9\xd7\xe5\x0c\x8d\x07\x05\xdf\x40\xf4\xe1\x9b\x07\x5c\x9c\x7d\xf5\x09\x2d\x6f\xc1\x78\x5f\x7b\x5f\x8b\xe2\xfd\x90\x7b\x0f\xe2\xc1\xf4\x52\x5f\x6a\xaf\xe2\x8d\x37\x0f\xde\x49\xdd\x87\xbc\x27\x56\x01\x0d\x02\x31\x99\x06\x91\xad\x33\xfb\x01\x9d\x4c\x23\xdb\xea\xc7\x0b\xf7\x9f\x44\x36\x9e\x2b\x5e\x67\x4b\x49\x07\xe3\x70\x7e\x92\x2b\xdf\x6a\xe1\xc4\x7e\xfb\x79\x81\x93\x2f\xbf\xce\x1e\xcf\x6c\xdf\xe8\x82\xc3\xd4\x82\x37\x3f\xef\xb9\xdf\x76\xea\xfe\x37\xa2\xfc\x2b\x62\x16\x93\x91\xfd\xdb\xff\xe7\xcf\x08\xd6\x34\xa8\xfd\xeb\x62\x87\x9c\x0e\x9b\xae\xee\x97\xd3\x69\x96\xd3\x74\xf0\x56\x3c\xd8\xcd\x71\x6d\xe3\xef\x45\x81\xb6\x63\xbd\x1b\x44\xf1\x43\xe7\x20\xc4\x5c\xf8\x2f\x72\xe3\xeb\xaa\x63\xeb\x34\x73\x41\x9f\x1d\xe6\xb5\x3c\x27\x63\xd4\x6b\x65\x3a\xb2\xf8\x4c\xd2\x7e\x23\xaf\x9d\xdd\x17\xee\x42\x8c\xbd\xa9\xf8\x20\x8b\x1d\x9b\xbe\x21\xf7\x9c\x0c\xe7\x6f\x30\xc1\xd3\x84\xe1\xde\x04\x33\x5f\x7c\x22\xb9\x53\x3f\xf8\xc8\x10\x5b\x46\x1f\x1b\xe1\x69\x22\xf2\x05\xc7\x73\x43\xbc\x68\xed\x4d\x63\x1c\x26\x40\xae\xb6\xc4\x61\x32\xf6\x9a\xc2\x7e\xcf\x7d\x24\xd6\x9f\xa2\x5e\x8a\x41\xaf\x1f\xbc\x32\xdb\x05\x95\x8e\x73\x3f\x57\x6b\x75\x9c\xba\xfe\xed\xe8\xe2\x2f\xc7\x65\x17\xdc\xef\xbd\x40\x70\x32\x73\x75\xad\x54\x27\x13\xf5\xd7\x98\xfb\xa3\xda\xe2\xbd\x52\xe1\x12\xab\xb7\x0b\x90\xf3\xb1\xd0\x78\x30\x19\xbc\x51\x61\xbc\x3b\xb8\xbb\x5f\x7d\x70\xb2\x7c\x71\xd5\x40\xe9\xe4\xfb\x7b\x6d\xce\xbe\x7e\x50\xf1\xbf\x97\x9d\xec\xc5\xfc\xe6\xd5\xbd\x7f\xba\x04\xb4\xef\xff\x60\xf5\x22\xec\x7e\x62\x38\x71\xde\x33\xab\xdd\x22\xd8\x9b\x77\x59\x9f\xba\x3d\x71\x71\x08\x7b\x6a\x9c\xd3\x55\xa7\xeb\xe3\xf2\x71\xb2\xf8\x7a\x13\xfd\x64\xfb\x38\x1e\x5f\x5f\x32\x4e\xb0\x9a\x0b\x3f\x1c\x5f\x8c\xe4\xc1\x6a\x22\x3e\x1c\xae\x1d\x57\x08\xaf\xb1\x67\x72\x3b\x1e\x94\xde\xfc\x83\x79\xad\x48\xd2\xac\x9b\x1f\xd8\xf7\x7d\x96\xfe\x97\xf9\x65\x8b\x35\xab\x5a\x8f\x64\x8b\xf5\xd2\x71\x56\xa8\x69\xda\x0d\xab\x16\xf9\xed\x5b\x3a\x5e\x2d\x77\x32\x59\x5b\x4d\x64\x61\xaa\x58\x41\xf1\xb6\x9d\x2a\x14\x93\x76\x2a\xd7\x28\x96\x1b\x6a\xa6\x03\xbb\x85\x54\x2d\x53\x2a\x36\x12\x56\xc9\xac\xb5\xf4\x4a\x42\x2f\xb5\xd5\xcc\xb7\xef\x11\x63\x77\x11\xbc\xff\x6b\xe8\x8a\xf2\x3d\x02\xbf\x47\x94\xef\x7b\x03\x47\xbe\x7d\xfb\x1e\xf9\x66\x56\x4c\xd3\x34\xff\xfc\xf3\xdb\xee\x86\xfa\xaf\x3f\x3e\x92\x27\xa1\xc2\x4a\x4a\xcd\x34\x2c\x4d\x35\x0b\xed\x46\xaa\x91\x81\x66\x27\x67\xb6\xdb\xe9\x76\xbb\xa9\x36\x33\xed\x4e\xa7\x8a\xad\x4e\xdb\xaa\x97\xf3\xc9\x76\xb7\x66\xb6\xb0\xde\x2e\xa1\x67\x79\x0c\xbc\x95\x83\x68\xc4\x30\x20\xd2\x0c\xfc\xbe\x40\xe8\x63\x81\xe2\xed\x74\x25\xd7\x6a\xda\xad\x52\x27\x93\xb2\x9b\xf5\x7c\xab\xa9\xa5\xd2\x19\x13\xda\xc5\x4e\x47\xcd\x55\xf2\x05\xbd\x64\xe6\xcc\x86\x55\x49\x35\xb0\x5d\x4e\xd4\xac\x54\xb3\x5d\x2a\x7e\xfb\x1e\xd1\x0e\x12\xa9\x27\x12\xed\xa5\x7b\x47\x22\xfc\x09\x13\xb5\xf3\x69\x5c\x2d\xa2\x52\x31\x6b\x95\x13\x85\x62\x2a\xae\x43\xd5\x44\x10\x77\xb5\x72\x31\x59\xab\xda\xe9\x56\x5e\x4f\xc7\xed\x44\xa1\x62\x67\x53\x25\x54\xd3\xad\x4e\xab\xd9\xb8\x45\xa2\x37\x40\x79\x3e\x05\x75\x03\xbe\xdf\x9e\x58\xfa\x2a\xc8\x5f\x4e\x2e\x3d\x9b\x0d\x43\x6e\x10\xa9\x41\x2c\x04\x26\x1c\x38\xaa\xee\x68\x0e\x31\xa4\x0a\xa9\xd4\x20\x00\x8e\xae\x61\x83\xaa\x48\x52\x09\x90\x02\x29\x57\x1c\x4d\x75\x30\x84\x8e\xa2\x3b\xc2\x30\xb6\x86\x51\x6e\xbc\xb6\x3c\x34\x5d\xa5\xaa\x80\xaa\x94\x2a\x22\x54\xd1\x1d\x45\xe8\x8a\xe4\x40\x62\x0e\x01\x61\x40\x52\xc6\x55\xc5\xc1\x8c\x29\x84\x41\xc8\x35\x5d\xd7\x54\xcd\x20\x98\x00\x55\xa3\x00\x7f\xfb\x1e\x01\xbb\x7e\xf9\x66\xfe\x6d\xaf\x78\x3b\x3f\x40\xeb\xd8\xba\x96\x8f\xeb\x49\x37\x69\x64\x54\x65\x35\x8c\x47\x7d\xa5\x17\xf8\xcb\xec\x72\x03\xda\xbc\xd6\xea\xd0\x78\x8e\xa6\x7a\x5b\x7a\xab\x88\x6c\xba\x99\xaa\x95\x0f\x39\x77\xcd\x36\x40\x3b\xb2\xf8\xe8\x27\x28\x72\xd7\xeb\xdb\x99\x6b\xbf\x01\x54\x40\xb1\x74\x74\x83\x62\x0a\x0c\x4c\x90\x00\x3a\x62\x2a\xd3\xa8\x61\x70\x8a\xa9\xa1\x0a\xc9\x15\xac\x60\x44\x28\x36\x10\xd4\xa5\x74\x24\xe4\x8a\x64\xba\x20\x58\x48\x45\x6e\x41\x76\x0f\xb0\x6b\x14\x29\x92\x49\xa0\x10\x85\xf0\x2d\x50\x1d\xa6\xa9\x40\x68\x4c\xe7\x3a\x54\x15\x4d\x08\x95\x29\x4c\x4a\xc3\x61\x0e\x43\x8a\x82\x30\x70\x80\x04\xd4\xa0\x42\x87\x00\x6e\x81\xaa\x7e\x8f\x00\x4d\x21\x86\x46\x54\x04\x0f\x88\x4d\xa4\xcb\xdd\x21\x28\x86\x9a\xa7\x38\x39\xbd\x85\xdc\x75\x69\xd1\x58\xa5\x61\x73\xea\x8d\xa2\x8b\x94\x59\x0a\x12\x20\xaf\x16\xf4\xb8\x8e\xbb\x66\x63\x39\xef\x38\xcb\xd1\x1a\x40\x85\x3a\xbd\x41\x35\x4a\x36\x70\x3a\x58\x2d\x86\x9d\xb0\xbd\x6a\x55\x2b\x25\x28\x07\x76\x3d\x51\x59\xf9\x3b\x0b\xb7\x64\xb2\x97\x5d\x6e\x5f\x65\x9f\xff\xd9\x07\xb3\xde\xf1\xfd\xd2\x34\x73\xab\x7d\x8f\x80\xa5\x21\x5b\x20\x4a\x3b\x0a\xdf\xd4\x82\x95\xeb\xfb\x49\x9e\xd5\x53\x8c\x54\x4b\xf6\xba\x91\xd2\xd5\x68\x15\xf7\x3b\x1d\xbd\x14\xd7\x68\xa5\xbc\x59\x25\xcc\x21\x8d\xeb\x8b\x54\x56\xb4\x33\x60\x93\x4d\xe9\x83\x65\x21\xa6\x2d\xec\x95\x19\x4f\xa7\x57\x84\x4e\x42\xb6\x2a\xee\x9b\xba\x80\x68\xcb\xbf\x84\x8a\x67\x44\x27\xd8\xc7\xf0\xff\x9b\x5d\x9f\x44\xb4\xae\x33\xa8\x61\xaa\xab\x0c\x50\x4d\x17\x04\x62\x83\x31\xac\x73\x2e\x39\xa1\x90\x38\x54\x45\x84\x1b\xdc\x00\xd4\x81\x86\x26\xb0\x22\xa8\xa3\x2a\x48\xe7\x0a\x00\x48\x2a\x7c\x8b\xc6\x7b\x78\x05\x27\x0a\x14\x0e\x61\x14\x19\x0a\x60\x42\x81\x88\x31\x40\x11\x11\x52\xa5\x02\x62\x8e\x01\x22\xdb\xc0\x8b\x25\xc6\x58\xd7\xa5\xa2\x13\x06\x1d\x48\x1c\x9d\x69\x40\x40\xed\xdb\xae\xc0\x79\x46\x34\x7a\x42\x74\x7c\xba\x08\xb4\xe9\x2c\xdd\xea\x97\x52\xca\xd2\x6f\x4d\x5d\x4a\xa7\xf6\x42\x49\xc7\x47\x83\xc9\x38\x29\x63\x8b\x8d\x52\x5e\x45\xfb\x21\x29\x67\x6a\x7e\x47\x95\xe3\x75\x52\xaf\x6f\x94\x6e\xd7\xd5\x67\x7a\x31\x4b\x9b\x45\xe8\x0f\xd7\xdc\x6c\x91\x46\x2d\xa6\x34\x53\xe1\x4a\x59\xef\x2d\xbc\x45\x74\xee\xc4\xe2\xe1\x02\xba\xed\x4a\x79\xa1\x4f\xe5\x4c\x74\x9d\x4e\x3b\x53\x2b\x90\xd5\xcc\xab\xc8\x7e\x7f\x6d\x57\x53\xd9\x89\x18\x9a\xfd\xa9\x5e\xcd\x0e\x3b\x66\x34\x2c\x4c\x73\x26\x43\xc9\x7a\x21\x3d\x1a\x2e\xf2\x61\x31\xe8\x34\x06\xea\x26\x6d\x4c\xba\x90\x64\x86\x49\x1f\x05\xa4\x21\x8a\x3b\xdc\x15\x2e\x20\x36\x4f\x2e\xf5\xfa\xff\x00\xc4\x72\xe8\x60\x86\x1c\x80\x00\x94\x42\xd3\x01\x72\x00\xde\x42\x03\x4a\x83\x53\x95\x51\x55\x27\x48\xe3\x4c\x53\x31\xc4\xc8\x60\x18\x6b\x0c\x2a\x58\xd7\x38\x86\x1a\x23\x42\x6c\xd1\x76\x0f\xd4\x4b\x40\x09\xe5\x0c\x19\x44\xe1\x0c\x31\xa1\xe8\x8a\x54\x55\xa6\x02\x07\x1b\x10\x73\x61\x40\x45\x63\x14\x3a\x54\xe8\x80\x39\x1a\x24\x3a\x21\x2a\x81\x02\x29\x4c\xea\x0c\xc3\x6f\xdf\x23\xe8\x04\xb1\xda\x13\x62\x33\x32\xd9\x9c\x31\x3f\x3d\x96\x5e\x71\xba\x49\x4b\x1e\xeb\x78\x28\x1c\xd4\x8a\x6e\x37\x3d\x2f\x35\xb5\x1e\x9e\x67\x2d\x59\xb1\x1a\xa4\x08\x4c\x75\xe8\x2e\x8a\xf3\xa8\xdb\xae\x0e\xa2\xbe\xd1\xb1\xf2\xf9\x72\xb5\x64\x86\xf5\x71\x7c\x59\xcd\x4b\x34\x8f\xbb\xbd\x84\xa5\xb3\xb4\xb2\xb3\xf0\x0e\xb1\x27\xb8\x30\xca\x3a\x62\x44\x82\x95\xe4\x68\xd9\x56\x93\xd4\x1f\x42\x0a\xbb\x6d\xb7\x37\xeb\x4b\x9a\x53\xd7\xa6\x2e\xac\x12\xb4\x03\x3f\xb6\x9a\xe5\xa1\x35\x31\xa1\xb5\xe9\xb1\x72\xd6\xcf\x3a\xb4\xee\x88\xd1\xb2\x9d\x2f\x61\x6d\xb5\x06\xa5\xcc\x20\xd1\x8b\x56\x0a\x06\xe9\xec\x62\x7c\xe5\x02\x62\xab\x85\x4b\xbd\xfe\x3f\x00\xb1\x06\x67\x94\x3a\x90\x68\x42\x20\x8d\xa8\x92\x4b\x45\x00\xcd\x90\x0a\xd4\x05\x56\xb8\xa3\x40\xa4\x29\x42\x55\x29\x11\xc8\xc0\x5b\x10\x71\x55\x18\x8a\xd8\x8e\x02\x00\x17\x68\x17\x1f\xef\x80\x7a\xaa\x20\x07\x61\x63\x07\x53\x26\x31\x24\xc4\xe1\x04\xe9\x0a\x94\x04\xeb\xc0\x00\x4c\x12\xa6\x13\x47\x52\x01\x0d\x20\xa0\x34\x04\x34\x28\x55\x54\xce\xb7\x51\xd8\x20\xdb\x51\xca\x09\x62\xf1\x13\x62\x8b\x25\x75\x65\xa7\xe2\xe5\x68\x73\x55\x5b\x51\xdb\x49\x46\xb9\xe7\x7b\x6e\x3f\x05\x53\xb9\x61\x37\xb7\x9a\xb4\x93\x71\xb7\xdd\x2a\xb2\x61\xe8\x96\xe6\x61\xbb\xbe\x70\x45\xe0\xd3\xba\x84\x5d\x23\xea\x9a\x03\xac\x8c\x41\xd2\x42\x01\x25\xb9\xf1\x32\xb7\x6c\x64\x9a\xba\xe1\x1e\xab\x86\x5c\xef\x68\xf1\x34\x5c\x42\xd2\xce\xea\xe3\x76\x5c\x8e\xb0\xeb\xac\xd5\xa0\x59\xda\xa0\x2e\x5b\xf4\x8c\x35\x41\x6c\x58\xd6\x9d\xdc\xaa\xb2\x6c\x65\x69\xaf\xa6\xd0\x0a\x19\x6c\xca\x1d\x34\x30\xfa\x19\x33\xd6\x77\xd3\xd5\x0d\x5a\xa1\x05\x46\x5a\x66\x18\x15\x25\xea\x25\xa0\x20\xb3\xc9\x8e\x73\xe3\x02\x62\xe9\x79\x1d\x9b\x36\xff\x67\x20\x56\x21\x40\x75\x30\xa1\x0e\x86\x8c\x09\xac\x1a\x44\x55\x34\x47\xc3\xaa\xa3\x3a\x8e\xa1\x11\x24\x88\x62\xa8\x1c\x51\x95\x50\x62\x6c\xcb\x55\xc0\x24\x56\x35\xa4\x21\x15\x0a\x47\xdf\xa2\xed\x1e\xa8\x27\x54\x42\xcd\xa0\x54\x40\x8d\xaa\x18\x19\xdc\xc1\x12\x19\x5c\xa3\x90\x48\xa6\x70\xd5\x50\xb9\xe1\x00\x87\x38\x9a\x34\x0c\xa6\x33\xa6\x41\xa1\x13\x0d\x01\x03\x6a\x5c\x25\xe0\xdb\xf7\x08\x3e\x41\xac\xfe\x84\xd8\x1c\xcc\xcf\x36\x7d\xa1\xa5\x7a\x0b\xb8\x44\x4d\x77\x59\x8c\x76\x8a\x7e\xb2\x5a\x41\x83\x59\xa9\xd6\x22\x83\x4d\x0d\x57\x70\x6a\x50\x85\xa3\x79\x18\xd8\x99\xc2\xb0\xc5\x46\x33\xae\x42\xb5\x98\x5e\xf4\xfd\x4c\x3c\xd3\x2b\xb7\x49\x7f\xa6\xc7\x0b\xc1\xb8\x17\x9f\x18\xb0\xb7\x0c\x3b\x3b\x0b\xef\x10\xbb\x3c\x5a\xbc\x5e\xcc\x9b\x59\xd3\x89\xce\xd7\x9b\x8a\xd6\x4b\x8c\x57\xb5\x42\xbc\x37\xea\x34\xf5\x2e\x97\x32\x39\x6e\xf4\xf5\x5a\x7c\xb6\x4e\xd4\x9c\x69\x29\x4f\xc0\x64\x86\x80\x37\xa9\xf1\x60\x51\xe3\xad\xe1\x90\x24\x6b\xa3\x60\xb2\x0a\xed\xb6\xe6\x66\x36\xa9\xb2\xdb\x6f\xa4\xeb\xed\x5a\x6f\x87\xbb\xce\x05\xc4\x0e\xcf\xab\x82\x5d\xcc\xfd\x3f\x1d\xb1\x6f\xcc\x4b\x5c\xd8\x37\xf1\xd5\x09\x89\xc3\xde\x89\x7b\x4c\x29\x81\xdd\x7f\xdf\x1a\xb5\xe4\x16\xb9\x37\x4c\x96\x3d\x4f\x8a\xed\xff\x05\x4f\x33\x14\x5b\x20\xef\x9b\xd1\x76\x44\xda\x99\x2f\xbf\xd2\xe5\xfa\xc9\x28\xf5\xb5\x14\x77\x51\xed\x59\x17\x65\xaf\x88\xf2\x3d\xa2\xfc\x07\x9c\x4f\xc5\xe0\xcf\xa9\x77\x7d\x57\xc1\x47\x77\x95\xf2\x3d\xa2\xee\x55\xdc\xfe\x79\x6c\x5f\xa1\x07\xf5\x95\xf1\xb2\xaf\x8c\x5d\x57\x9d\x5d\xca\x27\x91\x78\xc3\x44\xed\xc3\xbb\x6a\x2b\xff\x5e\x45\xed\xe1\x7d\x85\x1f\xd4\x57\x9a\xf2\xb2\xb3\xb6\xdd\xf2\x1f\xf5\xcc\xad\x00\x78\xb4\x7a\xfa\x5e\x9f\x78\x3d\x71\x6b\x9c\xf8\xe9\xd1\xe6\x7c\x6e\xff\x8e\x10\x26\x77\xd3\xe7\x3e\xb6\x7d\x2b\x9f\x7c\x68\x82\xeb\x81\x61\xfc\xbd\x80\xf1\x85\xd0\xf6\x40\x5c\x00\xe5\x6f\x0a\x8c\x57\xd9\xeb\x91\x46\xb8\x5b\xd9\x74\x6f\x23\xbc\xca\x0b\x0f\xf4\x0f\xa0\xfe\xbd\x1c\xe4\x2b\xf9\xe4\x9d\x35\xc8\xd7\x3b\x42\x6f\x58\x85\x7c\x73\x37\xe3\x6d\x3c\xcf\x37\x24\xde\xc0\xed\x8d\xed\x84\x5f\x1d\x93\x9c\x6c\x29\x3c\x62\x2b\xa9\xe5\x93\x99\xa6\x6a\xb7\x13\x56\x39\x5d\xb3\xf3\xf5\x8e\x9a\xcc\x25\x50\xbe\x55\x46\xa5\x4c\xbb\x0a\xb5\x38\xac\x35\x51\xd3\xec\x58\x56\x27\xd9\x68\xaa\x30\x81\xbb\x66\x2d\xbb\xaf\xe5\xf7\xcb\x91\xe5\x59\xdf\x9d\x4f\xf9\xca\x12\xb4\x06\xea\x2b\x8f\x56\x59\xb3\x1b\xcb\x64\x16\x19\x59\xd1\xc7\xed\x71\xa5\x93\xad\x9b\xb8\x09\xfc\xf6\xc9\x62\xc8\x6e\x5d\x26\xb1\x7b\xb9\x1d\x3a\x5a\xbd\x78\x3d\x11\xf4\x17\x89\xba\xdd\x96\xd5\x69\x98\xc8\x65\xf4\x4d\x59\x4c\xec\x74\xb4\x38\xd0\x64\xaa\x9b\x32\x75\x1e\xcd\x06\x85\x5c\x32\xbd\x1b\x04\xc7\xbb\xa4\x64\x0e\x77\xdf\xef\x3d\xff\x13\x3f\x32\xdd\xbd\x4f\x9a\xa6\xe9\x5a\xc7\x46\xe3\x93\x65\x8a\x07\x68\x10\x6e\x8a\xa4\x62\xaa\xad\x19\xe8\x69\x95\x4e\x7c\xda\xcb\x96\xeb\xc6\xac\x64\x62\xab\x1f\xb7\x72\x83\xb2\x32\x9b\xb2\x1d\xbb\x74\xb4\xd2\x97\x41\x89\xd5\xe2\x24\x59\x1e\x16\x54\xdc\x2e\xaa\xe3\x42\x23\xc6\x2b\x46\xae\xa6\x93\x4d\xb9\x1d\x1d\x26\xad\x5a\xb1\xa6\xae\xb8\x14\xe6\xba\x4e\xd8\x6a\x9a\x46\x63\x65\x36\x0c\xa2\x32\x59\x88\x79\xdc\x1d\xad\x57\x5e\x98\x4e\x35\x3a\x05\x5d\xca\x74\x90\x8a\x57\xfe\xfc\xf3\x7c\xba\xe4\xce\x5d\x03\x6f\xea\x9a\xc2\xcb\xae\x49\x9a\x3c\xbf\x1a\x76\xa3\xed\x6c\x39\x28\x97\xab\xe3\x89\x0c\xe7\xbe\xd2\x9f\x36\xa0\x58\x97\x73\x4a\xdc\x59\x55\xed\x58\xb5\xd1\xd2\x33\xf5\xfd\x62\xdb\xae\x6b\xce\x67\xb8\xbe\x6c\xfa\x8a\x4f\x41\x37\x17\x35\xe3\x30\x33\xdc\xc4\xc9\xb8\xdd\x46\x6e\x35\xb4\xd3\xc9\x55\xa6\x3f\x88\xf7\xc0\x72\x04\xe6\x33\xd9\x1c\xe7\x41\xc5\xf7\x32\x48\xd4\xa3\x3d\xb3\x15\x66\x2d\x18\x6f\xf4\x3a\x7e\x10\x9d\xc4\xbb\xf5\x41\x7e\x3d\xaf\xd0\x8c\xd3\xd3\xa6\xab\x4e\xd5\x9c\x27\x96\x0f\x37\x3d\xba\xc9\xf4\x95\x33\xd3\x27\x1b\x49\x5a\x12\x44\x5d\x60\xce\xd3\x36\xde\x80\x5e\xc5\xf3\x0c\x0b\x25\xb4\x52\x23\x13\xb7\xa6\xb1\x81\x9f\x16\x66\xb6\x1e\x2c\x9d\xca\xb3\xe9\xc7\xb7\x9a\xbe\x96\x98\xd6\xd7\x35\x2d\x3b\x2c\xb0\x76\x26\x4d\xfb\x71\xa0\x2c\xbb\x52\x5f\x76\xd7\xb5\x6a\xcf\x73\x78\x7a\x56\x77\x75\x34\xdd\x64\xed\x92\xee\x37\x46\x38\xe1\xa5\x79\xd7\xb5\xcb\xae\x4c\x75\xac\x51\x25\xd9\x51\xd0\x94\xa3\x9c\x85\x9b\x19\x7b\xbc\xa1\xcd\xb1\xa7\x54\xcd\xc7\xa3\x5e\xbb\xc9\xf4\x8d\x33\xd3\x27\x18\x0e\x35\x5e\x8a\x72\xac\xae\xa6\xc5\x18\x77\x21\x66\x09\x7b\x5e\x6b\x37\x0a\xf5\x01\x98\x2f\x27\x6d\xd3\x8d\x57\x78\x7b\xa1\x8a\x63\x40\x9a\xdc\x6a\x7a\xd9\xae\xae\x03\x65\x20\xfb\x66\x3f\x39\x6b\x75\xc7\x01\x53\xcb\x99\xd9\xc6\x1b\x2e\x57\xe1\x7a\x43\xfb\x05\x03\xf5\x17\x25\x27\x5a\x2a\x2d\x62\x8d\xb8\xa0\xd6\x6a\x4e\xe3\x41\x73\x3e\x8a\x0d\xcc\xf8\xa2\x61\x57\xd6\x71\x35\x55\xec\x0e\xcb\x29\x42\x53\x39\x3f\x63\x18\xc8\xd9\x6d\xeb\x79\xac\xe9\xf1\x4d\xa6\xef\x9c\x9b\x3e\xc4\x8a\xcf\xd6\xc5\xee\xba\x36\x85\x8e\xec\x28\x34\x9a\x5e\x32\x4b\x98\x86\x5c\xa7\xe7\xbe\xb5\x56\x5b\x66\xda\x81\x22\x99\xd0\x7a\xcf\xa6\x77\x6f\x35\x3d\x70\x57\x7a\x7a\x62\x59\xeb\xc0\x8c\x19\xfd\x56\x0e\xd6\x58\x1a\xad\x6b\xd9\xdc\xc8\x5f\xab\x59\xab\x3e\x6a\x64\x37\xe9\xb5\x53\x2a\xf1\x69\xb2\x80\x03\xa2\x4c\xa1\xb4\x59\x46\x13\xbd\x44\x77\xe0\x4a\xa6\xa9\xae\x36\x1a\x75\x64\x1e\xf8\x7e\x4a\xd4\x20\xb0\xb1\xfb\x14\x70\xde\x4e\xec\x97\x36\xc9\x5f\x91\xd8\x9f\x36\xca\x1f\xd7\x86\x1c\x05\x68\xdc\xd1\x09\xa1\x82\x31\x2e\x81\xa2\x40\xac\x51\xca\xb1\x22\x34\x05\x2b\x80\x62\x45\x55\x24\x92\x9c\x12\xa1\x40\x0a\x54\xa0\x20\xa4\x62\x15\x4a\x44\xa9\xa1\x9f\x76\xea\x2e\xb4\xec\xd3\x68\x74\x96\x16\xe1\x18\x5a\x55\x6d\x6a\x37\xcb\xe9\xfe\x34\xb5\x6a\xba\x84\x09\xc2\x8d\x64\xd8\x14\xcd\x78\xaf\x5f\x48\x4e\xdb\xad\xd5\xde\x29\xde\x9b\x65\xbd\xb4\x29\xfe\x96\x22\xe9\xf2\x86\xf4\x2f\xdb\xf2\xb8\x29\xfd\xb8\x32\x7c\x38\xa4\x69\xff\xf4\x78\xe4\xd5\xb5\xdb\x39\xf3\xca\xc3\x2e\x30\x92\xde\x9c\x09\x9f\x4d\x3d\xd7\x15\xab\x60\x4c\x43\x97\xf5\xcf\x19\xed\x9e\x99\xfe\x0c\xb3\x31\xf5\x83\xfd\xb9\x53\x87\xe7\x66\x2e\x48\x75\xf3\x7a\xcb\x27\xe4\x38\xc4\x11\x3a\x67\xfd\xc1\xe2\x70\xf3\x5c\x8e\xff\xb5\xdb\x7a\xfb\xeb\xe1\x04\xab\x5f\x7f\x8f\x80\xfd\x66\xdc\x5f\x7d\x31\x5f\x88\xf9\xaf\xbf\x47\x7e\x5d\x28\xff\xc1\xff\x81\xff\xc6\xf8\xdf\x3d\x8e\xb1\xa6\x6b\x4c\xfe\x7a\x20\x62\xe1\x7c\x2e\xdc\xc0\xde\xa9\xf9\xeb\xef\x11\xfc\xf2\xf3\xf8\xee\xc9\x4f\xff\xd7\xdf\x23\xff\xef\x2f\x4f\x8d\xfe\xaf\x5f\x4e\x45\xd8\x51\x6e\x1b\x01\x98\x19\xdc\xe1\xc0\xe0\xd0\x60\x52\xea\x50\x31\xa8\x54\x08\x56\x01\xa0\x8c\x09\x8a\xa9\x01\x34\xc4\x29\x30\x10\xd4\xb8\xe1\x38\x84\x63\xdd\x70\x90\xca\x55\x8a\x21\x72\x0e\x12\x3d\xf3\xdd\x76\xe3\xaf\xbf\x9f\xb5\xb6\x57\x6c\x6b\x87\x5f\x7f\x8f\x28\x2f\x6e\xfd\xef\xb3\xef\xfb\x2e\x9d\x6e\xe5\x92\x54\x1a\xd0\x81\x44\xd3\x35\x05\x73\xae\xab\x0e\x85\x0a\x46\x52\x23\x94\x68\x2a\xa7\x3a\xa5\x14\x2a\x00\x68\x54\x25\x08\x1b\x1c\x69\x1a\x66\x00\x49\x2c\x14\x8e\x1d\xa1\xff\xfa\xcb\x85\x16\xde\xb0\x01\xc3\x42\x07\xce\x36\x2a\x10\x0d\x32\x9d\x13\xac\x31\xa0\x43\x26\xa4\x60\xd0\x21\xaa\xd0\x1d\x62\x70\x0d\x23\xa8\x01\xa2\x2a\x42\x17\x58\x97\x2a\x05\x1c\xab\x9c\x33\xa0\x7c\xdd\x06\xe0\xfb\xeb\x7b\x5e\x18\x4c\xc3\xe0\xbe\xba\xbf\x67\xe1\xf3\xd9\xb9\xaf\x5e\x5f\xb1\xf0\xcd\x6d\x3d\x08\x65\xff\xd8\xe0\x1f\x1b\xfc\x63\x83\x7f\x6c\xf0\x8f\x0d\xfe\xb1\xc1\x3f\x36\xf8\xc7\x06\x0f\xb4\xc1\xee\xd5\xff\xf7\xcb\xff\xfe\xec\x40\xc6\x67\xd3\xdd\xf9\x2a\x97\xae\x6f\x4f\xe3\xd0\xfd\x9c\x2e\xf6\xba\x18\xb7\x59\x35\x33\x19\x05\x0d\x42\xd3\xa3\x76\xaa\x25\x57\x2b\x7d\x05\x95\x92\xd6\xd4\x1a\xe9\x84\xb5\x2c\x8d\xb9\x93\xd2\x8f\x93\x01\xbb\xfd\x75\xa6\xe6\xc7\xdb\x8e\xc8\xce\xfd\x8d\xb4\xcc\xe2\x78\x16\x74\x4a\x8d\xb4\x49\x3b\x89\xa4\x12\xa3\xc3\x5e\xa9\x9f\xad\x54\x13\x9d\xa1\x91\x9f\xb5\xef\x3d\x19\xb1\x9b\x57\xcd\xeb\xf3\xda\x6a\x93\x05\x6e\x2e\xef\xf2\xc0\x18\x56\xe7\xc8\x89\x2f\xab\x28\x09\x62\x59\x1a\x2e\xeb\x76\xb7\x63\x76\x17\x1c\x15\xec\xfd\x3c\x52\xca\x5d\xa2\x04\x7b\xc9\xc9\x32\x7b\x03\xde\x2a\x98\xb3\x81\x1b\x6b\x74\xfb\x24\x48\x96\x8d\xac\x63\xe6\xc6\x99\x4c\x7a\xd6\x06\x8b\x4d\xe0\x19\x73\xb8\xf4\xec\x0a\x08\x5b\x4a\x61\x11\xb4\x06\xa9\xd4\x30\x31\x5b\x0f\x67\xc3\x62\x0c\xf7\x9a\xa9\x75\x76\x55\x8d\xf3\xb5\xdb\xa8\xfb\x99\x32\xa8\x8e\x13\x8b\x9a\x97\xf8\x67\xf2\xe6\xd2\xe4\xcd\x0e\x3a\x7c\x3d\xf3\x51\x3b\xac\x76\x6c\x83\x94\x52\x5d\x92\x94\x93\xa4\x63\x2a\x8d\x52\x76\x36\x1c\x8d\x17\x59\x5f\x09\x47\xa5\x7e\x67\xc4\xb5\xa3\x3d\x4c\x67\xd2\x9b\x80\xa6\xca\x7b\x5a\x13\x4c\x66\x40\x8c\x0b\x2c\x0d\x82\xd5\xb0\xd6\xc9\x77\x8d\xa5\xd5\xf3\x6a\x71\x2a\x5a\xa4\x31\x48\x79\xc7\xe7\x9a\x8e\x0b\x19\x2f\x3a\xfc\xf9\xda\xc9\x93\x6a\x36\x94\xc3\x66\x3b\xbb\x85\x52\x8a\xe8\x97\xb0\xb9\x36\x12\x4a\xd9\x4f\x5b\xbd\x05\x03\x3a\x00\x0d\x83\x74\x86\x68\x62\x8f\x26\x46\x45\xd7\x46\x09\xb8\xd8\xd1\x37\x72\x8d\xca\x61\x07\x61\xe0\xf4\xda\x55\x6c\xe9\x5e\xd2\x56\xec\x4a\x74\xd9\xa9\x25\x8c\x4d\x7b\xd1\x6e\xd6\xe1\x6a\x50\x1e\x74\xc2\x9a\x03\x92\x8b\x49\xc5\x16\xbb\x8d\x7f\x89\xa6\xb9\xd8\xcb\x98\xcc\x3e\xe3\xf9\xd5\x75\xd4\xc7\x44\x95\x68\x45\x8f\xaa\xd3\xf2\xa0\x6a\x66\x0a\x6a\xb3\xa0\xe9\xc5\x89\x6a\xe7\x42\x54\xab\xab\x9d\xb5\x63\xd1\x42\xd8\xea\x08\x4d\x73\x56\x09\x50\xb5\x7b\x6e\x43\xe7\x34\x63\xf7\x94\x59\x66\x1d\x4b\xd0\x01\x9b\x26\x5b\x68\x3d\xca\x6e\x62\xc5\x7e\xa6\x84\x69\x31\x5b\x43\x89\xfd\xec\x78\xe8\x41\x2f\x40\xda\x2c\x51\xb6\x56\xd3\x4a\x0c\x7a\x99\x62\x74\x03\xf4\xea\x7a\xe0\x83\xb1\x2c\xa4\x3a\x93\x4a\xab\x37\x0f\x6b\xd1\xfa\xae\xfb\x8e\x53\xea\x89\x73\x79\x8f\x7b\x16\x93\x37\xda\x27\xde\x6c\x16\x0f\x1d\x95\x00\x61\x9c\x67\xbc\x7a\xd8\x2b\x2c\x2a\x41\x52\x8f\xf7\xb3\x36\x2c\x0a\x83\x37\xcb\x32\x9d\x8d\xe6\x06\x5a\x6e\xd1\x28\x45\xbb\x66\xa0\xef\xda\x0a\x47\x25\x58\x39\x91\xa7\x71\xc9\xb2\xf1\x67\x7d\xac\x84\xe8\xcf\x73\x03\xbf\xed\xa1\x9a\x35\x1d\xcc\x07\xeb\x4c\x55\xb8\x1d\xbf\x42\xcc\x6c\x7f\xd6\xef\xf5\xfd\x9a\xe0\x60\x38\x8b\x57\x0a\xce\x38\x43\x2b\x36\x36\x48\x53\xd4\xb2\x4e\x4c\x43\xb1\x4c\xa7\xd4\x70\x2a\x4c\x8d\x25\x26\xe6\x2c\x39\xb1\xd0\x64\xd5\xa8\x6c\xf2\x4b\x96\xda\xb5\x92\xc7\x43\x31\x80\xc3\x89\x97\x25\xf5\xf4\x38\x19\x13\x3d\x06\xf5\x72\x3b\xc8\xe4\xf3\x9b\x56\x93\x2c\x9b\x83\x6e\x9c\x26\x42\xcd\xd6\x0e\xbb\x3f\xcd\xa7\x85\xbc\xf4\xb9\xbc\xc7\x97\x3b\xd2\x78\x65\x5c\x4d\x5e\x67\x9f\x1b\xf0\x9e\x0c\xe9\xba\x77\x94\x27\x71\xee\x5a\xbb\x2b\xfd\xac\x4f\xa5\xd4\xb3\x36\xe3\xb9\xcc\xae\x37\x1d\x58\x6a\x86\x2d\x5e\x2d\x35\x86\x3a\x5c\xdb\xf1\x6c\xd0\x04\x93\x69\x77\xdc\x2a\x95\xba\x85\x9e\x86\x49\x73\x38\x03\x98\xfa\x62\x5d\xef\x2d\x1a\x8d\xf8\xa2\x35\x89\x57\x4a\x43\x6e\xdb\x49\xbf\xa3\x2f\x1a\xb0\x56\x25\x55\xb3\x37\x48\x14\x0e\x0b\x61\xf3\x59\x11\xdb\xa2\x44\x7b\xc3\x55\x81\x36\xca\x06\x8e\x6f\xa4\x6f\x08\x85\x79\xf3\x62\xb7\xbd\x89\xb7\x72\xa3\x94\x97\xd7\x47\x8b\xd1\xf2\x2c\x1e\x9c\xc5\xff\xd7\xf1\x20\xd1\xb4\x0a\xd7\xd9\xa7\xd9\xac\x57\xcd\xab\xf0\x9e\x48\x67\x2c\x7a\x22\x4f\xee\x92\x65\x4d\xfa\xac\x8f\x59\x5a\xb2\x45\xa1\x1c\x0b\xe7\x51\x25\xe5\xb5\x20\x26\x8b\xf5\x3a\x2a\x87\xb6\x98\x37\xcc\xb6\xb5\xec\x0f\xb4\xf2\x52\xd9\x14\xc3\x4d\xbc\xb5\xcc\x55\x97\xfe\xb0\x99\x68\xd5\xad\x54\x9c\x2a\x99\x20\x5f\xea\x15\xcd\x35\x80\x53\x65\x54\xf5\x74\x8a\x27\x1d\x43\x2a\x31\x46\xf6\x20\x8b\x87\x34\xe1\x34\xdb\x5d\x35\x39\x6e\xb7\xe8\xbc\x89\x1b\xab\xa5\xd3\x82\xe9\x62\xae\x37\x75\xa1\x59\x4b\xf4\xb3\xa9\xa9\xe6\xac\x6a\xd9\x56\xef\x65\x3c\x88\x9f\xe3\xe1\x3c\x1e\x5c\x6f\x9f\x1b\xf0\x6e\xa6\x0c\xb1\xef\xe3\xe4\xf2\xac\xbf\x8f\x57\xfc\x59\x1f\x2b\xd1\x68\x35\x16\xf3\x7a\x23\x55\x23\xf9\x76\x42\xc9\xb6\x3b\xeb\x76\x7d\x8d\xd8\xc6\xae\x05\xc9\x58\x3a\xa1\x79\x4a\xd4\x74\x56\x1e\x8e\x87\x30\x2a\x61\xd9\x91\x73\xab\x8d\xc3\x1a\x07\xab\xb0\xb4\x2a\xe4\x62\x23\x7f\x33\x85\xe5\x66\x53\x58\x05\x7b\xbd\x86\xce\x3c\xeb\x1f\xf0\x94\xd6\xbc\x5c\xd0\xe4\x6e\xa7\xd4\xe4\xdd\x59\xd0\x9e\xd6\x33\xf1\xc0\x61\x1d\x65\x92\x98\x48\x16\xcf\xe6\xad\x5e\xcb\x1d\x2f\x52\xd9\xfe\x0e\x0b\x27\xf1\x20\x73\x2e\xef\xf1\xe5\x3e\x1e\x5c\x1f\x2f\x6f\xc0\xfb\x31\x1e\x34\xce\xfa\xfb\xe4\x4a\x3d\xeb\x53\x29\x96\x3b\xc3\xfa\xba\xae\xc7\x26\x1d\x4a\xd5\xca\xc8\x49\x6d\x92\x13\x65\x68\x4f\xed\x64\x3f\x17\x74\xcd\xe8\x3c\x57\xcc\x55\xf5\x5a\x5d\x86\x71\xd6\xc8\xb5\x99\xd6\x8a\x36\x96\x2d\x3f\xb6\xcc\x42\x75\xb0\x0c\xd1\x40\x34\xe0\x98\xe2\x69\x2e\x3b\x5a\x66\x63\x0a\x9f\x61\xbe\x4f\x30\xf1\x63\xfb\x77\x5f\x57\x79\xe3\x0c\x9c\xaf\x2e\x84\x9c\x9c\x83\x73\x97\x9d\x48\xb7\x6d\x1c\x3a\xec\x3d\x32\x54\x15\x42\x5d\x55\x20\x26\x1a\xd2\x75\x8d\x28\xfa\xeb\x4d\x45\xe7\x07\x3c\x5c\xd4\xe4\xa6\xfd\xf8\x7f\x2b\x4d\xfe\xba\x3e\xd9\xef\x2a\xfb\xbf\xa1\x4f\xbe\xa8\xc9\x5b\x9e\xf7\xd6\x09\x44\x5f\xf6\xbd\xd3\x53\x88\x8e\xcb\x90\x0e\x34\x88\x70\x10\x15\xc4\xd0\x35\x0c\x55\x0d\x23\xc8\x28\x57\x01\x33\x90\x00\xd0\x91\x4c\xd1\x91\x03\x55\x28\x04\x81\x02\x20\xe0\x48\x5d\x01\x54\xe3\x86\x82\x24\x70\x0e\x0f\xe7\xbf\x18\x4d\x17\xce\xa2\x73\x7c\x10\x8b\x2b\xb6\x92\x4b\xaf\x83\xfe\xb2\x08\xc6\x1d\x85\xae\xa7\x1e\x30\x8a\x99\xd5\xc2\x4e\xac\x4b\x5a\x10\xb7\x58\xa2\xb9\x58\xa6\x8c\x25\xec\x05\xf3\x92\xdb\xbd\x14\x44\xcf\xaf\x37\x9f\x0e\xda\x45\xbf\xc4\x2d\xed\x77\x62\x51\x76\xc6\xef\x93\xed\xbf\xde\x15\x71\xd9\xee\x58\x67\x8a\x66\x08\x00\x00\x91\x48\xea\x86\x43\x20\x46\x44\x68\x3a\x36\x1c\xe2\x48\x20\x81\x74\xa4\xa2\x6a\x06\x37\x14\xae\x0a\x44\x35\x4a\x28\x55\x88\xa6\x32\x04\x30\xd1\xf7\x76\x57\x5f\xaf\xa6\xdf\xa8\x37\x41\xc7\xef\x67\x1f\xa0\xb7\xd4\x99\x43\xa0\x62\x40\x40\x20\x26\x12\x1b\x88\x11\x02\x15\x47\xea\xc4\x20\x08\x08\x5d\xa8\x0c\x61\xce\x04\x54\x04\x56\x0c\x6c\x70\x42\x1c\xae\x30\xa1\x11\xc2\x1c\x61\xec\xf5\x86\x77\xd7\x5b\x3f\x19\x22\x5d\x7c\xf4\xf7\x46\xbd\x09\x00\xc0\x50\x19\x24\x18\x41\x2e\x75\xc8\x14\xa0\x51\x8d\x02\xae\xeb\x0e\x51\x54\x2e\xa5\xa2\x71\x24\x35\x45\x32\xcc\x81\x42\x00\xa6\x54\xd7\x98\x42\x31\x50\x0c\x69\xd0\xe3\x83\x40\xbb\x66\x8f\x7e\x76\xaa\xf7\xd7\xaa\x56\x13\xa2\x2a\x38\x94\xab\x17\x47\x31\xef\xe9\xfd\x6c\xf7\xe4\x6d\xed\x0b\x76\x6c\xff\x11\x7e\xe6\x70\x44\x30\x77\x38\x57\x54\x8e\xb0\x42\x80\x8e\x75\xc0\xb6\xee\xa4\x0b\x83\x63\x41\xb0\xc6\xa8\x6a\x30\x07\x01\x81\x55\xae\x53\x2a\x75\x85\xaa\x52\x08\xcd\x81\x98\x8b\xbd\xdd\xd5\x77\xed\xfe\xc5\xd9\x83\xbb\xdb\xfd\x9a\xf6\x1f\x6d\x77\x9d\x4b\xa2\xe9\x4c\x85\x4c\xe7\x52\x38\x86\x8e\xb8\xce\xa0\xa1\x61\x5d\xd7\x30\xd1\x28\x11\x5c\x52\x82\x0c\xec\x38\x3a\x01\x92\x43\x84\x19\x11\xaa\xa2\x6a\x92\x72\xc3\x91\x7b\xbb\x5f\xf0\xf3\x1b\xf1\xc6\xd0\x51\xef\x47\xc4\x37\x88\x74\xec\x30\x8c\x0c\x0d\x43\x44\x08\xdb\xc6\x70\x4e\x54\xdd\x50\x28\x35\x18\x42\x18\x19\x80\x10\x15\xaa\x0e\xd0\x14\xae\x12\x8c\x38\x80\x52\x18\x92\x32\xa1\x21\x05\xef\xf5\x46\xef\xea\x7d\x4d\x7f\x3f\x5a\x6f\x41\x0d\xa4\x21\x88\x29\x74\xb0\xa6\x08\x49\x09\x51\x30\x14\x3a\xd4\x35\x40\x98\x04\x86\x4a\xb8\x41\x11\xe4\x80\x3a\x14\x0a\x86\x09\xd2\xb7\x05\x04\x56\x1c\xa8\x43\x28\x0e\x07\x4c\xbc\xef\x67\x5f\x1c\xd5\xe5\x1a\x89\xe8\x41\xa9\xeb\xfd\xcc\xba\xad\xfd\xd2\x83\xfd\x0c\x01\x4c\x31\x64\x50\x02\x64\x00\x0d\xea\xd8\x20\x8c\x3b\x58\x1a\x04\x28\x86\x2e\x38\x11\x08\x31\xaa\xea\x5c\xe5\x86\xa2\x60\x87\x2b\x0e\xc5\x84\x40\x55\x38\xd2\xe0\x9a\xb6\xb7\xfb\x85\x3a\xe2\x46\xbd\x0b\x0f\xc6\x1b\x53\x0d\x03\x11\x0e\x18\x25\xba\x43\xb9\x2a\xa0\x6a\x18\x0c\x38\x0a\x20\xcc\x30\x30\x53\x55\x29\x35\xae\x61\xa9\xe9\x1a\x74\x18\x24\x52\x91\x9c\x10\x86\xb8\xca\x34\x6e\xa0\xbd\xde\x17\xe2\xcb\x8d\x7a\xdb\x8d\xa3\xde\x8f\xa8\x23\x34\x0d\x09\xaa\xaa\x06\x80\xc2\x91\x0a\x90\x0c\x39\x90\x22\x8e\x15\x47\x33\xa8\x50\x89\x84\xdb\x5a\x52\x51\xb8\xe6\x60\x4e\x91\x42\xb1\x41\x74\xaa\x41\xe1\x70\xa2\x4b\x45\xdf\xeb\x7d\x21\xbe\xdc\xa8\xf7\xe1\x14\x81\xde\x9b\x0a\xde\x5a\x2f\x4b\xe6\x30\xe9\x30\x2e\x14\xca\xb1\x50\x39\x45\x3a\x50\x31\x84\x08\x01\x68\x10\xc4\x75\x08\x75\x2e\x25\x35\x98\x06\x75\xe9\x28\x1a\x36\x24\x41\xc4\x81\x5c\x95\x58\xaa\xc7\xa7\x73\xcf\xfa\xe7\xde\xf9\xe4\xd5\x82\xc0\x07\xf1\x25\x75\x5b\xfb\xce\x39\xde\x3e\xd9\xfe\xa7\xeb\x75\xa4\x32\x2a\x15\x47\x20\x4a\x09\xd6\xa5\xa4\x04\xaa\x92\x48\x43\xd5\x1c\x5d\x63\x92\x18\x8e\x86\x81\xa6\xa9\x44\x01\x58\x38\xba\xa0\x48\xa7\x2a\xd1\xb8\x6a\x00\x83\x62\xb6\xb7\xfb\x85\xfa\xe9\xde\xf9\xec\x06\xbb\x5f\xd3\xfe\xa3\xed\x2e\x0c\x40\x34\x06\x18\x07\x90\x30\x8d\x01\x0d\xab\x9a\x06\x01\x93\x8e\xa6\xea\x4c\x53\x1c\xc3\x21\x48\x52\x4e\x29\xa0\x48\x63\x3a\x32\xa4\x4e\xa5\x81\x91\xce\x05\x43\x9a\xb2\xb7\xfb\x85\xf8\x76\x23\xde\xba\xe7\x7e\x7e\x67\xbd\x39\xe3\x40\x03\x92\x53\xa8\x22\xd5\x00\x2a\x57\xa5\xd0\x81\x50\x00\x01\x92\x28\x44\xc1\x52\x21\x80\x62\xc0\x24\xd2\x11\x26\x3a\x74\x54\xc1\x80\xe6\x38\xc0\xa1\x02\x1a\xda\x5e\xef\x0b\xf1\xed\xc6\xfe\x7e\xb4\xde\x8c\x03\x55\x10\x83\x3b\x86\x50\x90\x86\x80\x80\x3a\xd3\x0d\x2c\x1c\x4a\x05\x00\x84\x43\x2c\xe1\x36\x63\x33\x0e\x39\x17\x88\x0a\x65\xdb\xdb\x8e\x8e\x89\xdc\x1a\x48\xee\xf5\xd6\xee\xde\xdf\x9d\xc2\x51\xef\xc6\x03\xf4\x96\x06\x24\x08\x38\x04\x23\x87\x21\x26\x20\xe7\x8c\xa9\x42\xa5\x0e\x82\x3a\x71\x24\x47\x08\x0a\xc6\xb1\x10\x82\x68\x8e\xa1\x71\x0c\x11\xa7\x1a\x53\x14\x47\x61\x1c\x63\x7d\xaf\xf7\x85\xa7\x0a\x6e\xec\xef\x47\xeb\xad\x2b\x40\x48\xaa\x38\x8a\xaa\x62\x61\x60\xc0\x21\xe0\x52\x47\x12\xa9\x44\x35\x88\xea\x20\x05\x11\x47\x75\x0c\x82\x0c\x41\xa1\xd4\x85\xa2\x52\x04\x88\x06\x00\xd7\xb7\x39\xee\x70\x58\xd0\xeb\xb8\x7a\x6f\xbd\x53\x9f\xd3\xfb\xd9\xee\xe9\xdb\xda\x6f\x79\xc7\xf6\x3b\x5f\x68\xff\xd3\xf3\x30\xaa\x70\x1c\x87\x6b\x8a\xea\x08\xd5\xd0\x88\xa2\x12\xa2\x4b\xa9\x68\x52\x63\x8c\x6c\x0b\x44\xa8\xe9\x14\x32\xcc\x08\x90\xd8\x01\xdc\xe1\x5c\x00\x01\xa5\x03\x0d\x62\x38\x87\x43\x9a\x2e\xe4\xb3\x7b\xfb\xd9\x0d\x76\xbf\xa6\xfd\x47\xdb\x5d\xe3\x0e\x97\x1c\x52\xc7\x00\x12\x51\x4d\xa5\x00\x38\xd4\x50\x19\x56\x20\x44\x0e\xa3\x0a\x47\x94\x72\x43\x03\x52\x40\x0e\x34\x63\x3b\x2a\xa4\x92\x3a\x14\x60\xa8\x0a\x7a\xb0\xfb\x85\x7c\x76\x23\xde\x9a\xd6\x51\x6f\xf6\x00\xbd\x29\x02\x9a\x03\x0c\x55\x42\x1d\x2a\x14\x0a\x09\xa0\xa1\x40\x4d\x42\x86\x75\x01\x1d\xa0\x50\x24\x28\x36\xa4\xd4\x00\xd2\x24\xa4\x3a\xc6\x40\x63\x80\x12\x15\x29\x0a\x67\xc6\x5e\xef\x0b\xf9\xec\xc6\xfe\x7e\xb4\xde\x88\x40\xd5\x20\x12\x29\x54\x37\x24\xc2\x12\x13\xc4\x10\xe0\xaa\xca\x11\x37\x14\x55\x02\x0e\xa5\x70\x34\x48\x1d\xa1\x69\x1a\xe0\x90\x72\x6c\x70\x46\xa0\x8a\x14\xa2\x68\x87\xf8\x76\x21\x9f\xdd\xa8\x77\xbd\x77\xd4\xbb\xf7\x00\xbd\xb9\x64\x52\x01\x86\x20\x4c\x07\xaa\xa1\x28\x88\x70\xc6\x15\x81\x24\x55\x00\xc5\x5c\x57\x75\x02\x09\x76\xa0\xc0\x54\x37\xa0\x83\x98\x06\x39\xd7\x75\x0d\x30\xae\x12\x43\x1c\xfa\xfb\x42\x3e\xbb\x11\xe7\xb7\xe9\xfd\xe6\xda\xd4\x7d\x16\xa6\x1e\xbd\x2a\x95\xb6\x49\xa6\xb2\xa8\x8c\x9c\xbc\x9a\x31\x61\xab\x39\xac\xce\xf3\x93\x61\x5b\x51\x64\x9a\xf8\x76\x56\x9f\x28\x56\x75\x99\x6b\xc5\xcc\x36\x34\x9f\xf7\x1c\xec\x21\x76\x66\x8e\x57\x7b\xd4\xae\xde\xf3\x76\xe0\xb7\x5f\x85\xd8\x75\x72\x67\x58\x61\xe5\xba\x9a\xd6\xfa\x33\x37\x3e\xe9\xa5\xd3\xa2\x67\xe4\xc8\x18\x31\x60\xb9\x8d\xf1\x6a\x34\xb6\xc6\x19\xc3\x9f\x75\xe7\x8a\xa1\x83\x14\x2e\xd9\x2d\x29\x62\x13\x34\x9a\xa6\x82\x6c\xd4\xcf\x2a\x03\x30\xb3\x07\x81\x66\x2a\xb9\x75\xcb\x75\xfa\x1d\xbb\xa5\x79\xbb\xb3\x35\xd4\xcd\xa4\x14\xe4\x71\x8e\xb7\x0a\xe3\x6e\x72\x1d\x64\xd9\xb8\x64\xe9\x31\x93\xdb\x85\xa1\xee\x95\xfb\x15\xc7\x58\xa6\xc7\x6a\xa5\xbe\x3a\x6e\xc1\x7c\xc7\x06\x47\x64\xbc\x38\x3b\xfe\x7c\x15\xe6\x64\xd6\xe7\xab\x7b\x2a\xc6\x15\x7b\xbf\xef\xf1\x42\xd5\xf5\xa1\x5c\x4f\x48\x3e\x69\xff\x0b\xfd\x9f\x14\x09\xd5\x6f\x16\x3b\xe9\xe0\xc4\x1d\x96\x9f\x6f\xff\x75\x94\x78\xf4\xd2\xdf\xf5\xe0\x3e\x37\xee\x2b\x85\xbe\xb6\xc1\xcc\x2c\x46\x2d\xde\x39\xe5\x77\x04\x77\xb2\xe1\xd9\x73\x90\xca\x66\x0b\x3c\x05\x72\xa5\xbc\x5a\x6d\xf6\x90\x95\xac\x2c\xec\xa8\x58\x89\x21\xf0\x75\x43\x4b\xf3\x6e\x7e\xa3\x05\xb9\xb8\x81\xa6\xc9\x91\x63\x0e\x36\x64\x14\x9d\x94\x17\x4a\xa9\x19\xd6\xea\x84\xf6\x41\x61\x33\xea\x76\x7a\x63\xcf\x57\x18\x30\x59\x76\x07\xee\x2e\x89\x77\x51\x35\x5d\xae\xc3\x09\x2a\x8e\x86\x63\x3e\x0d\x6d\x22\x33\x3a\x49\xb4\xf8\xa8\x68\x8f\xa6\x74\x30\x4b\xa4\x6c\x2b\xe5\x1d\x57\x74\xef\x0a\xee\x2f\x6e\x70\x4c\xca\x7e\xa6\x75\xd9\xfe\xef\xf6\xc5\xf3\x75\x23\xb8\x3d\xe0\x57\x96\x8f\x03\xf7\x9d\xd7\x77\xaf\x07\x77\xf2\x23\x85\xbe\xb6\x9b\xfa\x3d\x70\x9b\x15\x93\x26\x7a\x6e\xdf\xcc\x2c\x5a\x8b\xc1\x7a\xcd\x06\xb9\x0c\x1c\x4d\x8d\xb5\x57\xaf\x04\xae\x5a\x4b\x0d\x9d\xc4\xcc\x6e\x34\xca\xf1\xfc\x86\x55\x03\xd2\x0f\xb3\x75\xcb\x10\x81\x5c\x8d\xad\xf8\xbc\x85\x06\x83\xdc\x68\xde\x5b\x57\x44\x29\x31\x8b\x65\xd3\x4e\x5a\xa8\x55\xd3\xdc\x1d\x4b\x4b\xc2\x64\xa2\x9e\x4e\xd2\x32\x6d\xac\xb3\x05\xdb\x40\x13\x2b\xe3\x22\xbf\x1a\x6c\x86\xc9\x49\xa2\xe5\x76\x06\x46\xb2\xd4\xca\xae\xa3\xc7\xa4\x72\x57\x70\x7f\x71\xb7\xde\x5f\x0d\xee\x71\xcb\xce\xd1\xc7\x81\xfb\xce\x8b\xf8\xd7\x6f\x85\x7c\xa7\x2c\xd9\x61\xf4\xba\xad\x90\x30\xf6\x7c\x1d\xf9\x9d\x6c\x5d\x2c\x8f\x7b\x7a\xda\xee\xe7\x7a\xca\x4a\x1f\x4e\xcd\x25\xb0\x96\x38\xa3\xb6\x53\x78\x5d\xcd\x4e\x64\x2e\xbb\x4c\xc9\x95\x62\x14\xc3\x81\xe6\x04\xa5\x9c\x99\x12\xcb\x94\x59\x94\x25\x6a\xc6\x49\xaa\xd2\x1d\x6b\x53\x68\x6a\x3d\x38\xc2\xc9\x4c\x72\xd0\x93\x8d\x62\x23\x09\x70\x8f\xed\xc0\xd8\xab\xa6\x6b\x4b\xd4\x4d\x42\x58\x36\x53\xb4\xd5\x07\x30\x34\x6d\x49\x52\xa0\xdc\x28\xaf\x02\x2b\x9b\x9a\x4d\xc1\x32\xdf\xa9\xb8\x9a\xf7\x2c\xd9\x65\xa0\x9f\xfa\xe8\x47\x40\x3f\xd9\xa8\xf4\xc5\xbe\xb8\x61\x1b\xef\xfe\xca\x9c\xd9\xfa\xbc\xf8\xae\x98\x2f\x17\x90\xae\x70\xc4\xe6\xa6\x67\xbe\x3c\xba\xea\xd5\x02\xe4\xb5\x8e\x70\xe7\x5d\x15\xd7\x3f\x23\xf0\x13\x1d\xe1\x64\x4f\x7f\xdc\x18\x4d\xf2\x2d\x75\x06\x17\x7a\x45\xae\x49\xb9\x20\x46\x96\x03\xea\xf5\xac\x36\x58\xcd\x46\x59\x25\xee\xf5\xda\xf3\x52\xa0\xf7\x4a\x00\xab\x15\x67\xd4\x57\x79\xad\xde\x90\x22\xe9\x2d\x98\x52\x36\xa9\xec\x27\xdb\xab\xa0\xdf\x34\xc7\xbe\x1d\x0e\xc7\xf1\xc9\x7a\x18\x37\x3b\x3b\xb0\x2e\x1a\xfd\x60\xc1\xcd\xa0\xda\xeb\xb5\xbb\xab\x55\xbe\xe5\x62\xee\x78\x5d\xe6\x4d\xd7\x4a\x66\x62\xb7\x67\x0b\x96\xb7\xa3\x9a\x53\x0c\x8e\x1b\xb5\xee\xea\x08\x5f\xec\x8b\x9f\xee\x08\x57\x94\x5b\x0f\x74\x84\x3b\x6f\x73\xb9\x3e\x23\xbc\x53\xcb\xef\x1d\xe1\xaa\x87\x07\x3e\xca\x08\xf1\x4c\xac\x60\xe3\x68\x75\xd3\x9a\x85\xa9\x72\x9f\xf4\xec\x94\x5a\x0d\xbb\x9b\x4e\x30\x1c\x4e\xcb\x22\xb3\x88\x79\xdc\x28\xe8\x68\x35\x6e\x28\x46\x9b\x22\xaa\x09\x50\xec\x17\x82\x42\xad\x9a\xf5\xec\x6c\xd0\x03\x16\x4d\xb6\x2c\x63\xb3\x08\x32\x72\xdc\x6c\x65\x4d\x5a\x5b\x56\x76\x60\x95\xb2\xdf\x5e\x0e\x57\x46\x6c\x3e\x56\x00\x29\x35\xbb\xb0\xe9\xb5\x3c\x5d\xce\xac\xf1\x3c\x40\x19\xa3\x98\x5e\x97\xb2\x89\x36\x56\x9d\x23\x98\xfe\xd2\x8c\x70\xfd\x83\x5e\xfb\xeb\x2f\xc9\x08\xaf\xb6\x66\x5c\xeb\x08\x77\xde\xf7\x74\x7d\x46\xf8\x89\x8e\x70\x92\x11\xac\x7c\x7c\x11\x25\x1b\x1b\x88\xe9\x72\x95\x88\xfa\xb9\xbe\xd5\x29\x4f\x9c\xa1\x6d\xb4\x6b\xac\x1d\xb0\xc0\x2b\x64\xb9\x08\x34\xde\xef\x8d\xf4\x4e\xae\x99\xdb\x98\x6e\xb5\xd6\xeb\xd4\x17\x72\xed\x65\x73\xf9\x1c\xaf\x4c\xda\x18\x87\x7d\xd5\x8b\xce\xd3\x46\x1e\xe7\xb2\x93\xde\x3e\x23\x14\x33\x94\x74\x73\xcd\x61\x2d\xbb\x59\xe6\x78\xcf\x1d\xe5\x67\xac\x9a\xae\x55\x07\x89\xc2\x3c\x55\x51\xbc\x6e\xd1\x8a\x61\x39\x2f\x35\x4f\x80\xfe\x97\x66\x84\x9f\xed\x08\x77\xc9\x08\x77\x73\x84\x3b\x6f\x84\xfb\xe2\xd4\xd9\xe7\x4a\xa3\x7d\xfa\xfb\xe2\xec\xce\x7d\x1e\x47\xdd\xf7\xf0\xb3\xbc\x95\x4c\xac\x3b\xda\x54\x63\x22\xa1\xa4\xf4\x55\xd9\xd8\x98\x53\x91\x59\x14\x32\xba\x3b\x13\xc1\x86\xd6\x78\xa7\x4f\x5a\x99\xf5\x7c\xb9\x5c\x38\x96\xbb\x42\x49\x07\xf7\x36\x4a\x6f\xee\x56\x73\xf1\x5c\x0d\xe3\x52\xd7\x49\x4f\x12\x23\x7d\xbd\xc9\x4c\x48\x72\x94\xd3\x9d\x1c\xaa\x98\x8d\x1d\xb8\xf1\xb4\xda\x28\xce\x4a\x6a\xa3\x14\xf5\x7a\xe9\xb2\x5b\x04\xe9\x02\xe9\xe6\x8b\x93\x51\xb9\x3a\xc3\x65\x9f\x5a\xcc\x22\xad\xc4\x86\x6d\x3e\x2a\xa5\x4e\xcb\x85\x77\x1c\x67\x69\xfe\x1f\x50\x4a\x55\xfe\x0a\xf9\xec\x69\x32\x50\xde\x93\xef\x13\x8e\x75\xe7\x9d\x8e\xd7\x3b\xd6\x3b\x19\x66\x0f\x94\x2f\xce\x2c\x3d\xc6\xb1\x52\xa9\xb4\x9d\x4e\xa5\xda\x8e\x95\xac\xf2\x91\x2a\x52\xeb\x8a\x59\x2f\x4e\x33\xe1\xac\x14\xf3\x53\xf3\xe9\xcc\x5f\x4d\x8a\xc5\x65\x9a\x46\x0b\xf6\xc0\x29\x56\x72\x76\xb2\xdd\xa2\x32\x81\x5a\x24\x5f\xc8\x57\x62\x7d\x4b\x29\x28\x75\x7b\xd5\x15\x61\xac\x44\x82\x8e\x1b\x0f\x97\x4b\x73\x07\xfe\x4a\x6b\x3a\x5c\xc6\x52\xb9\x54\x9d\x4f\x87\xc5\x60\x31\x89\x27\xda\x7a\x47\xb3\xd6\x03\x59\x53\x2b\xf1\xb9\x62\x4f\xbd\xde\x1a\xc7\xdc\xe6\xf1\xa1\x8a\xbb\x3a\xd6\xdf\x72\xb0\x5e\xf9\x2b\xe4\xbb\x87\x63\xdd\x79\x2b\xed\xf5\x8e\xf5\xce\x94\xed\x75\x19\xeb\xfa\x07\xa6\xdf\x71\x2c\xdb\x55\x8a\x22\xe1\xd3\x89\xd6\x99\x4f\x02\xbf\x90\xab\x34\x4b\xf6\xba\x54\x2f\xcf\x92\x8e\x5e\x2b\xd4\x13\xdd\xb4\x27\x27\x5a\xad\xdf\xc0\x92\x8d\x61\xb9\x3c\x10\x59\xb7\x52\x0c\x46\x20\x35\xa9\x36\x45\x63\xc5\x3b\x6d\x30\xf7\x5b\x6a\x3e\x03\x32\x15\x27\x87\x11\xca\x2c\x95\x1d\xf8\x97\xd3\x71\x56\x61\xb3\x4c\x18\xd8\xc3\x7c\x77\xe9\x98\x9d\x75\xd7\x49\xd8\xb1\x76\xd3\x01\xbc\xbe\x48\x0e\x97\xb1\xce\xd0\x52\xfc\x76\xf7\x28\xdb\x5f\x9a\xb1\x7e\x4a\xa9\x77\x43\xc6\xba\x5e\xbe\x7b\x38\xd6\x9d\xf7\x6a\x5f\xef\x58\xe7\xd3\x1d\x37\x67\xac\x87\x38\x56\x0a\xa2\x49\x67\x5d\xb5\x9d\x66\x1d\xa9\x95\x20\x15\x76\xb4\x46\x51\xf1\xe7\x86\xc5\x42\x0b\x8e\x03\x33\x66\xac\xcd\xd5\xa0\x58\x5a\x84\x23\xa7\x59\x2f\xd1\x0d\xc1\x61\xa2\x3d\xb5\xba\xe3\x36\x48\xb9\xd6\xaa\x93\xec\x2e\x4b\xdd\x5c\xab\xd9\x96\xbe\xc3\xbd\x85\xd3\x6c\x2c\xf7\xd3\xcb\xcd\x06\x1e\xe4\xab\xe5\x39\x89\xc7\x2c\x1f\xd7\x5b\x09\x30\x09\xf3\xe5\xa2\x16\x9a\xc9\x66\x10\x4c\xcd\xe9\xb4\x8f\x1b\xd1\x45\x47\x2e\x3f\x5a\x24\xfc\x49\x19\xeb\x67\x3b\xd6\xcf\x93\xef\x1e\x8e\x75\xe7\x87\x01\xae\x9f\x75\x7b\x27\x63\xdd\x7a\x24\xc5\x81\xa1\x6c\xf7\xf7\xaf\x88\xf9\x99\x23\x92\x56\x7e\xaf\xbf\xb1\xfa\x8b\xca\x24\x9b\x68\x32\x36\xac\x79\x6b\xa3\xa2\xda\x8d\x61\xdb\x1b\x63\x35\x37\x8e\x73\xe2\xf7\x27\xd5\xe5\xac\x64\xb4\xd7\x62\x3c\xad\x75\x34\x0d\x39\x7c\x92\x99\xe1\xd5\x8c\xe1\x61\xa7\xeb\x2d\x0d\x4d\xb3\x90\x5e\x6e\xcd\x12\x96\x14\xcd\x7e\x7f\x77\xde\xf8\xf7\xc8\x37\x87\x2c\xca\x8b\x22\xca\x83\xd0\xa6\xd5\x55\x6e\x58\xb4\x2c\xad\x5f\x64\x1b\x29\xa3\xd3\x55\x5d\xea\xf1\x96\x8b\x6a\x76\xb9\x66\x2c\x8e\x83\xe9\xcb\x4e\x74\xf9\xc1\x98\x2f\x06\xa1\x13\x20\xdf\x70\x9c\xcf\xfe\xfa\xe8\x78\x94\x0f\x26\x4b\x4e\x36\x08\x7f\xd5\x91\x8e\xfc\x7e\x0e\x56\xce\x8f\x83\xba\x66\x16\xb1\xb7\x7c\xd6\x37\x7e\x3e\x19\x73\x10\xe5\x52\xd3\x9f\xd9\x3d\x70\xdf\xa7\x4d\xae\x9f\x45\xfc\xc8\xb1\xf7\xd7\x0d\xe3\x8a\x92\x36\xcf\x9f\x74\x7e\xfe\x62\x67\x9d\x9c\x75\x24\xd6\x25\x27\xdd\x1f\x2d\x57\x9e\xdb\x8e\x35\xb3\xb1\x21\x93\xc3\x79\xa6\xc4\xfb\x85\x64\xd6\x68\xe8\x21\xca\xaf\x9a\x43\x13\xb6\x33\xb3\x51\x0b\x59\xc5\xa5\x37\xaf\x68\x93\x6e\xb2\x3a\x1c\xaa\x44\xa5\xcc\x4c\x13\x56\x90\xad\xf4\xa2\x23\x53\xac\xd2\x6c\xf2\x36\x56\xdd\x27\xc7\x36\x12\xeb\x45\x22\x5a\x9b\xf5\xdd\x18\xee\xad\xa3\xe5\xd1\x38\x00\x1b\x34\x01\x9d\x66\xc3\x33\x5b\x18\xe2\x91\x18\xf4\x79\xbe\x3a\x99\x1c\xd1\xf6\x15\xc7\xfe\x62\xd9\xbe\xbf\x8e\x4f\x6c\xde\xe2\x18\xfa\xc4\x3f\x04\x8b\x1d\x50\xbd\x73\xd1\x3e\xef\xd8\x5f\x2d\x3d\x77\xd7\xc9\xac\xe2\xa3\xb1\x72\xee\xd8\xd7\xcc\x8a\x3e\xce\xb1\xef\xfc\x38\xd3\xf5\x19\xfb\x9d\x52\xf8\x3e\x19\xfb\xb9\xb3\xe2\x95\x37\x0d\x76\x9a\xb1\x7b\x59\x75\x33\x68\x0c\x16\xe9\xa0\xc4\x5d\xb4\xee\x83\x64\x3e\xf0\xf1\x68\x93\x41\xa3\xee\xdc\xb3\xac\x8c\xd9\xc8\xfb\xd3\x61\x3c\x20\xb9\xb9\x58\xfa\xb3\x79\x07\x2c\x4a\x0b\x37\xa6\x79\x4e\x74\xa5\x59\xe9\xc9\xd4\x2a\xa5\x68\x32\x1e\x9b\x64\x8b\x05\x08\x4b\x66\x6d\xb2\x7e\x2a\x4d\x71\xb5\xcf\x32\x45\x0b\xad\x58\xaa\x95\x6b\x16\x58\x14\xe4\x48\xc3\x9e\xa0\x3a\x56\x67\xe9\x51\x3b\x53\x93\x62\x31\x1e\x49\xb1\x3a\xd9\x0c\xfc\xf0\x8c\x7d\xeb\x01\x7c\xfb\xeb\xd9\xb1\xf7\xa2\xff\xec\x8c\xfd\x13\xb1\xf2\x90\x8c\xfd\x6a\xaf\xf7\xb5\x8e\x7d\xe7\xe7\xf5\xae\xcf\xd8\x1f\x39\xf6\xfe\xfa\x89\xa7\x13\xce\xca\x2b\x6c\xcc\x6a\x49\x40\x8a\xb0\x93\xd7\x36\xbc\xb8\x71\xbb\x7c\xda\x8e\x8f\x1c\xaf\x9f\xab\x87\x89\xbc\xdb\x19\x2b\xbc\x52\x36\xad\x58\xa6\xb5\x32\x89\x2c\xca\x66\xaf\xd7\xec\x06\x69\x9a\x1e\x91\x4e\x81\x65\x62\x88\x2f\xe2\xfa\x46\xa4\x53\x46\xcd\xaa\x78\xb5\x4a\xbc\xb7\x77\x6c\x58\x4c\x55\x63\xb4\x30\xca\x57\xed\x5a\xcc\xcd\xf4\xd2\xf1\xa8\xd9\x4b\x93\x6c\x7a\x92\x29\x57\x15\x9a\x29\xad\xf5\x78\x4b\x4f\x63\xa4\x7d\x34\x03\x7b\xbf\x8c\x7d\x7a\xe0\xd3\xf5\x8e\x91\xed\xb0\xea\x69\xc6\x3e\xff\xc9\xb7\x47\x67\xec\x13\xc7\x78\x34\x56\x1e\x92\xb1\xef\xe6\xd8\x77\x7e\x20\xf5\xfa\x8c\x7d\xfe\xa0\xca\xbd\x33\xf6\x97\x8f\x21\xd6\xda\x1e\x4e\x34\xd1\x5c\x1f\xa4\x32\x72\x2d\x32\xea\x14\x54\xfd\xe1\xaa\xb4\xf6\xda\xe9\x59\xdf\x9b\x40\xc7\x72\xfa\x89\x82\xa8\x57\x8a\x79\x35\xda\xe8\x24\xd6\x2d\x77\xd2\xef\x56\xf1\xba\x3a\x68\xf5\x84\x51\xa8\x49\x96\xea\x0f\x16\xc0\xa6\x92\x06\xa9\x68\xad\x15\xb5\xcc\x83\x63\x6f\xaa\xb6\xe7\x3a\x6e\xaf\xda\xc8\x0c\x65\x66\x1c\x86\x33\x54\x1d\xd6\x9d\xcd\x42\x83\xc5\x32\xd7\xf2\x28\x1f\x6d\x05\xea\x30\xa6\xad\x3e\xda\xf5\x72\xbf\x8c\x1d\xbf\xcb\x18\xfb\x78\x18\x4b\xe1\xf2\x16\xac\x07\x67\xec\xc6\xcf\xc3\xca\x43\x32\xf6\xab\x23\x9c\xaf\x1e\x63\xdf\xf7\x89\xeb\xeb\x33\xf6\x47\x8e\xbd\xbf\x6e\x5d\x1b\xdb\x5d\xe7\x4f\x84\x9f\x5c\xa7\xe7\x09\xe3\x32\x09\xf5\x7e\x20\xb4\x89\xdd\x2f\xe4\x04\xb4\x92\x4e\x3a\x35\x89\x67\xf2\xbd\xd8\xa8\xa8\xc0\xb4\x5c\x2c\xa9\xa7\x8c\x3a\x34\xbd\xd0\x97\x99\x8e\x17\xe6\x63\x9b\x7e\x2b\x6e\x87\xd0\x8c\x06\x71\xd4\xa7\x09\xba\x50\x69\x8c\x97\x40\x6e\x50\x4c\xe2\x55\x1b\x80\xa7\x52\x3c\x5a\xef\xc7\xc3\x74\x8d\xd4\x4b\x65\xbe\x49\xa0\x59\x90\x14\x76\xac\x51\x89\x6e\x5a\x7a\xd8\x77\xc6\xbc\xa3\xa8\xe3\xa5\xe9\x17\xc0\xe4\xa3\x19\xe8\x3b\x66\xec\xbb\x8c\xb1\x3f\x3c\x6b\xfc\xc1\x19\xfb\x64\x57\xd3\xa3\xb1\xf2\x90\x8c\x7d\x37\xc7\xbe\xf3\x91\x02\xff\x1c\xdc\xfe\x88\x83\xdb\x77\xce\xc0\xe2\x3a\x4e\x2c\xb3\x13\xdc\xca\xd4\x33\x92\x97\x2b\x5e\xbe\x93\x57\xe2\x59\x7f\x3e\xb1\xdc\x59\x19\xa2\xc4\x34\xde\xaf\x66\xda\x33\xf6\x13\xcb\xf7\xbf\xee\xe0\xf7\x0f\x27\xb8\xde\x0f\x20\x27\x3f\x16\x72\x55\x00\xd9\x05\xdc\xbf\x31\x26\x1f\xf2\xf8\xf7\xb9\x8f\x7e\xe1\xb1\xf7\x47\x9f\xa9\x71\xfd\x50\xe1\xc3\xc0\xf3\x97\x9c\x10\x6f\xb6\x01\xda\x1b\xb7\xfc\xb6\xa1\x4f\x36\xd5\xe7\xaa\xdd\x5a\x34\x28\x56\x9a\xf6\x72\xca\xec\x4a\x9f\x0f\x73\xbc\x6c\xf7\x37\x85\x20\xaf\x94\x49\xc7\x9e\x0c\xeb\x28\xbe\x48\x0f\xbd\xb4\x2e\xb5\x18\x33\x82\xa8\x5f\x95\x33\x2d\x07\xdb\x69\xa4\x5b\x4b\x37\x5a\xdb\x94\x5c\x66\x34\x9b\xa8\xb2\x5c\xd8\x36\x0f\xfd\xc1\xd3\xce\xad\x5e\x18\xea\xa0\x92\x8f\xe6\x9b\xbd\xc4\x20\x13\x5b\xb6\xc1\x26\x3b\x28\x54\x80\x18\xae\xfc\x9e\xa4\x2b\xd5\x80\x7d\x14\xf3\xb5\x81\x73\x2c\xcf\x1f\x3d\xbc\xd8\x7b\xee\x5f\xf2\x0b\x34\x1f\x2e\x99\x7d\x3a\xf0\x5c\x35\x24\xd9\xff\x54\xd1\xdf\x17\x93\x0f\x39\x6f\xe3\x9e\x81\xe7\xce\x87\xca\x5c\x5f\xf1\x7c\xf8\xd3\x14\x7f\x49\x76\xe9\xf7\x57\xe9\xd3\xec\x72\xd1\xd0\x27\x15\x4f\xd2\xcf\xd8\x9b\x64\x4c\x9f\xc5\x82\x38\x4d\x05\xd1\x85\x4d\xfc\x85\x8b\xd6\x70\x06\xcc\xd4\xaa\x90\xed\x84\x75\x52\x2c\x6c\x1c\x7f\xd9\xf4\x13\x0d\x66\x67\x41\x65\x3c\x5a\xc5\x2b\xad\x20\xae\xd7\x86\x5e\xb2\x52\x08\x38\xe6\x39\x8b\x96\xd4\x70\x3a\x29\xb7\x8d\x32\x2c\x9b\xfb\xa7\x79\xda\x0e\x34\x4a\xf3\x91\xac\x8d\xf3\xfd\x34\x1e\xf9\x9d\x64\xd1\x5e\xf7\x40\x7e\xde\x6d\x48\x64\xa4\xba\x3e\x2c\x2d\x66\x38\x35\xb4\x67\xd7\x05\x9e\x6b\x2a\x9e\xbd\x3d\xfe\x9e\x3f\x75\xf3\xd8\x8a\x67\xf4\x37\xc7\xe4\x43\x2a\x9e\x73\x1f\xbd\x25\xf0\xdc\xf9\x54\xa7\x7f\x7e\x13\xe7\x11\xbf\x89\xb3\x0b\x3c\xd3\x78\x6b\x35\x5a\x14\x37\x89\xa1\xbe\x2a\x55\x8a\xb2\x9c\x96\x43\xbf\x32\x2d\x4d\xa7\x31\x90\x4a\x11\xcc\x27\x29\x96\xf6\x72\x66\x92\x7d\x74\x82\xc2\x1d\x2b\x9e\xfd\x01\x4c\x7f\x49\xc5\xf3\xd1\x92\xe3\x63\x2b\x9e\x5b\x9f\x77\x78\x34\x26\x1f\x52\xf1\xdc\x33\xf0\xdc\xf9\x58\xb5\xeb\x03\xcf\xf9\xf3\x72\x7f\x8f\xc0\x73\x3c\x38\x6a\xfd\xb6\xa1\x4f\x02\x4f\xc9\x2a\x8f\x4a\xb1\x60\x56\x47\xa3\x4a\x7c\x53\x1c\xd7\x4b\x62\xd3\x0d\x06\x6b\x27\xb4\x46\xc6\xa4\x30\x59\xa5\x87\xf6\x78\x92\x09\x45\x8b\x54\x82\x46\x0d\xe5\x40\x09\xb6\xfa\x6b\x54\xcc\xf7\xc9\x62\x39\xf1\xdc\x7c\x05\x84\x85\x69\xa2\x10\xdb\x74\xaa\x9b\x70\x32\xac\x59\xe1\x61\x8e\xa7\x96\xcc\x77\x0c\x73\xaa\x19\x69\xc3\xab\x5b\x99\x9a\xdd\x50\x2b\xf6\x4a\x89\x61\x50\x9a\x6b\xcd\x06\x2f\x05\x94\xaf\x93\x39\xb3\x97\xba\x6e\x8e\xe7\xaa\xc0\xf3\x37\xfe\xb1\xcf\xc7\x06\x1e\xff\x6f\x8e\xc9\x87\x04\x9e\xd7\xe7\xee\x5f\x1f\x78\xee\x7c\xae\xe1\xf5\x43\xad\x0f\x03\xcf\x5f\x51\xd6\x26\x70\x45\xe7\x27\xf2\xc4\x3f\x1a\x6a\xe5\x70\xda\x9f\xe4\x57\x62\xd8\xcf\xd6\x26\xf9\xd0\xce\xf2\x14\xe6\x83\x55\x72\x69\x0e\xd2\xb3\x74\x22\xbd\xca\x69\xb0\x55\xf2\x52\xe6\x2a\x6c\xf0\xa9\xb9\x98\xc3\x55\x53\xcb\xf6\x17\x31\x77\x48\x78\x4f\xab\x06\xf1\x8d\x43\xf2\x9d\x84\x57\xea\xd4\x07\x4e\xaa\x9a\x2c\xcc\xe3\xcb\xfd\x63\xaf\x90\x90\xb8\xeb\xad\x56\xf9\x4a\x3c\x0b\x8b\xc9\x51\xb4\x97\x9e\x80\xb5\x48\xf6\xe7\xe5\xc9\x54\x2b\x29\xab\x3a\x6c\xf3\xea\xa6\x36\x10\xd7\x55\x3c\xd7\x0c\xb5\xf6\x1d\xf2\x97\x0c\xb5\x3e\x5c\xd9\x79\xec\x50\xeb\xd6\x07\xd1\x1e\x8d\xc9\x87\x0c\xb5\xbe\x14\x78\x9e\xce\x16\xdd\x1f\x29\x4a\x19\xf3\x42\x37\xd8\xfd\x6e\xfb\xc9\xeb\x1f\xd3\x91\x78\x3e\x65\x34\x51\x2a\xd6\xea\x55\x33\x5b\xac\x7f\x70\xca\xa8\x69\xd7\xad\xea\xe1\x50\xd2\x52\xd1\xee\x9c\x72\xdc\xfd\x98\xbc\x99\x4c\x9e\x70\x7b\xd5\x60\xa4\x5c\xcd\x16\xcc\x6a\x27\x92\xb7\x3a\x91\xdf\x0e\x77\x07\xfc\x7b\x64\x4b\xe1\xd2\x89\x78\x4b\x7c\xff\xf9\xc5\x7d\x05\xf7\xdf\x91\xda\x7f\x4f\xe4\x57\x82\x3a\xd4\xdd\xfe\x7f\x27\xf1\x1c\xea\x5e\x92\xec\xa9\x81\x97\x42\xb9\x1e\x17\x17\x24\x1a\x0b\xde\x13\xf3\xbe\xa0\x5c\xcc\xfd\x97\xef\x7e\xec\xdf\xf9\x62\xf6\xe3\x2e\xe2\xbe\x60\x7e\x49\xf0\x77\x5a\x8f\x34\x8a\xd9\x4a\xc3\x8a\xfc\xf6\xfc\xe9\x97\x34\xb9\x8f\xbd\xbf\xa8\xc0\xeb\x3e\x38\xdc\xa7\x7e\xff\x95\xf4\x9e\x94\x5b\xb1\xf7\x7f\xee\x24\xef\x9e\xd9\x25\x41\x4f\x9a\x79\x29\xe1\xee\xc6\x05\x98\x4c\xc5\x56\xba\xdd\xbf\x77\x12\x6e\xc7\xeb\x92\x6c\xc7\x46\x5e\x8a\x36\x98\x7e\x8f\x4c\xbd\x79\xf0\x5a\xb6\x6d\x7b\x7e\x7f\x16\x8a\x50\xbc\x78\x73\x2f\x49\x4f\x58\x5e\x14\xf8\xbc\xc9\x4b\x9d\x7e\x49\x6a\x3f\x74\x0e\x7f\xee\x27\xa9\x1f\x3a\x6f\xc8\xf8\xd4\xcc\x4b\xe9\xe6\xc2\xbf\xd0\xdd\x3e\x9b\xce\x42\x6f\x1e\x4e\xfc\x93\x97\x77\x12\xf2\xc8\xf0\x92\xa0\x67\xcd\xbd\x14\x76\xe6\x8b\xe0\xa2\xf7\xf8\x83\x9e\xbb\x05\xe8\xe1\xef\xbd\x24\xdd\x73\xbb\x28\xe6\x49\x43\x6f\xe6\xab\x7d\x2b\x23\xb1\x7e\x2d\x6f\xe0\xcd\x85\x1f\xd0\x40\x9c\xbc\xbc\x97\xd4\xcf\x0c\x2f\x0a\xfe\xb2\xb9\x97\xb2\xef\x3e\xbf\x98\x61\x4f\x7e\xe4\xf7\xf8\xf2\x4e\x02\x1f\x19\x5e\x12\xf8\xac\xb9\x37\x8d\x3d\xf0\xfd\x50\xcc\xbf\x47\xa8\xef\x8b\x80\x79\xfc\x82\x0e\xa7\x47\xc7\x9f\xbe\xb9\x97\x1e\x27\x2c\x2f\x6a\x72\xde\xe4\xa5\x38\xe1\x8b\xd9\xf7\x48\xb0\x1a\xb8\x5c\xac\x2e\x68\x70\x14\xff\xde\xb2\xbf\x2b\xf8\x4d\x52\x1f\x3a\xc9\xa1\x63\xea\xb2\xe3\x4f\x99\x67\x8b\x49\xab\xfd\x81\x9c\x89\xaa\x65\xd6\xad\x3d\xe9\x39\x9f\x48\xa9\x78\x2c\xfc\x1a\xb5\x6c\x31\x1d\x71\x82\xb9\x10\x91\xdf\x0e\x14\xff\x8a\xb4\x32\x56\xd5\x7a\x7e\x1f\xf9\xef\x9f\x11\xf0\xfc\x0b\xd0\xaf\x6b\xb3\x70\x3d\x70\x7b\x7b\x18\xed\x14\xb9\x5a\xd0\x57\x9c\xb6\xa2\x1e\x12\xfc\x4b\x41\x4f\x08\x5f\xc9\xb3\xb5\xb9\xb3\xf6\xc5\xec\x6a\x39\x9e\x39\x6c\xdb\x3f\x62\xe7\x85\x08\x6f\xd7\x53\x5b\x72\x29\xc4\xed\x22\x3c\x31\xd9\x4b\x71\xe2\x83\x9f\x14\xe4\x70\xe7\x36\x41\x4e\x99\x6c\x05\x79\x59\x2d\x7e\x52\x92\xe9\x7c\xc0\xc4\x6d\xd8\x38\xb2\x78\x0b\x14\x3b\x8a\x4b\x19\x59\xb8\x8b\x1b\x8d\x70\xca\x64\xdb\xbc\xcf\xa6\x5f\xec\x8b\x63\x7a\xbe\x59\x92\x53\x3e\x07\x61\x9e\x6a\x8e\x97\xc2\x50\x3f\x78\x47\x20\x31\x1e\xdf\xc9\x6d\x5f\xb3\x7a\xab\x8b\x5e\x50\xbe\x55\x8c\x1c\x62\xd3\xf5\xe2\xbc\x60\xb3\xb3\xd0\xa1\xca\x79\x21\xcb\xa5\xc1\x66\xd9\xf3\x83\xde\x5c\xd4\x2a\xf6\x6e\xcc\xec\x50\x5f\x44\x78\x38\x99\x46\x98\x37\x99\x8e\x45\x20\x76\xad\xfd\xff\x01\x00\x00\xff\xff\xe7\x4e\xe1\x36\x20\xe5\x00\x00") + +func order_booksCoreSqlBytes() ([]byte, error) { + return bindataRead( + _order_booksCoreSql, + "order_books-core.sql", + ) +} + +func order_booksCoreSql() (*asset, error) { + bytes, err := order_booksCoreSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "order_books-core.sql", size: 58656, mode: os.FileMode(420), modTime: time.Unix(1508958245, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _order_booksHorizonSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x69\x93\xea\xb6\xb3\xf7\xfb\x7c\x0a\x2a\x6f\x26\xa9\x39\x27\x63\xc9\x96\x2c\x9f\x3c\xb9\x55\x06\xcc\xbe\xef\x70\xeb\x16\x25\x5b\x32\x98\xcd\x8c\x6d\xb6\xf9\xd7\xff\xbb\x3f\xc5\x0e\x1e\x76\x98\x39\x93\x54\xa8\x54\xce\x18\x49\xad\xee\x56\xeb\xa7\xee\x96\x2c\xbe\x7f\xff\xe5\xfb\xf7\x40\xce\x76\xbd\x96\xc3\x8b\xf9\x54\x80\x51\x8f\xea\xd4\xe5\x01\x36\xea\x0f\x7f\xf9\xfe\xfd\x97\x79\x79\x78\xd4\x1f\x72\x16\x30\x1d\xbb\xbf\xad\x30\xe6\x8e\x6b\xd9\x83\x80\xf2\x07\xfe\x03\xed\xd4\xd2\x67\x81\x61\xab\x39\x6f\xee\xab\xf2\x4b\x51\x2b\x05\x5c\x8f\x7a\xbc\xcf\x07\x5e\xd3\xb3\xfa\xdc\x1e\x79\x81\xbf\x02\xc2\x9f\x8b\xa2\x9e\x6d\x74\xdf\x7f\x6b\xf4\xac\x79\x6d\x3e\x30\x6c\x66\x0d\x5a\x81\xbf\x02\x4f\xe5\x52\x84\x3c\xfd\xb9\x26\x37\x60\xd4\x61\x4d\xc3\x1e\x98\xb6\xd3\xb7\x06\xad\xa6\xeb\x39\xd6\xa0\xe5\x06\xfe\x0a\xd8\x83\x15\x8d\x36\x37\xba\x4d\x73\x34\x30\x3c\xcb\x1e\x34\x75\x9b\x59\x7c\x5e\x6e\xd2\x9e\xcb\xf7\xba\xe9\x5b\x83\x66\x9f\xbb\x2e\x6d\x2d\x2a\x4c\xa8\x33\xb0\x06\xad\x3f\x57\xbc\x73\xea\x18\xed\xe6\x90\x7a\xed\xc0\x5f\x81\xe1\x48\xef\x59\xc6\xb7\xb9\xb0\x06\xf5\x68\xcf\x9e\x57\x53\x53\x25\xad\x10\x28\xa9\xc1\x94\x16\x88\x47\x02\x5a\x2d\x5e\x2c\x15\x03\xd9\x4c\xaa\xbe\xaa\xff\x47\xdb\x72\x3d\xdb\x99\x35\x3d\x87\x32\xee\x06\xc2\x85\x6c\x2e\x10\xca\x66\x8a\xa5\x82\x1a\xcf\x94\x76\x1a\xed\x57\x6c\x1a\xf6\x68\xe0\x71\xa7\x49\x5d\x97\x7b\x4d\x8b\x35\xcd\x2e\x9f\xfd\xf9\x19\x1d\x1a\x8b\xbf\x3e\xa3\xcb\xb9\x5d\x7d\x9e\x80\xcb\xde\xfc\xd2\x2d\x9a\xc7\x33\x61\xad\xb6\xd3\x72\xd5\xd3\xa2\x61\x93\x9b\x26\x37\x3c\xb7\xa9\xcf\x9a\xb6\xc3\xb8\xd3\xd4\x6d\xbb\x7b\xba\xa1\x35\x60\x7c\xda\xdc\xe9\x7f\xe0\xd2\x85\x2d\xba\x4d\x7b\xd0\xb4\xd8\x35\xad\xed\x21\x77\xe8\xa6\xad\x37\x1b\xf2\x3b\x5a\x6f\x39\xb9\x8b\x8b\xeb\xda\xf6\x38\x6b\x71\x67\xd1\xd0\xe5\xaf\x23\x3e\x30\xae\x12\x61\xa7\xf9\xd0\xe1\x63\xcb\x1e\xb9\xab\xef\x9a\x6d\xea\xb6\x6f\x24\x75\x3f\x05\xab\x3f\xb4\x9d\xf9\x8c\x59\xc1\xde\xad\x64\x6e\xd5\xa5\xd1\xb3\x5d\xce\x9a\xd4\xbb\xa6\xfd\xda\x98\x6f\x30\xa5\xd5\xd4\xb9\x81\xe9\xdd\x96\x94\x31\x87\xbb\xee\xe9\xe6\x6d\xcf\x61\x8b\xa5\xa1\xd9\xb3\xed\xee\x68\x78\x41\xed\xe1\x39\x96\x96\xb5\xa8\xe5\x5c\x49\x78\x8d\x8b\x17\x37\x98\xe3\x84\x69\x72\xe7\x5c\xd5\xe1\xbc\x66\xdb\x3b\xcb\xb7\xbb\x37\x6d\xf5\xd9\x59\xe5\xb7\x37\xf3\xe3\x92\xca\xf6\x92\x0f\xfb\x6c\x45\xcb\xf5\x9a\xde\xb4\x39\x3c\x4f\x72\x5e\xd3\x1e\x5e\x5a\x93\x5f\x5a\x6d\x0d\xc0\xa7\x2b\xeb\xeb\x49\x72\xb6\xda\xf9\xb9\xaf\x6f\x6c\xf7\x74\xbd\xe5\x1a\x36\xd7\xb6\xeb\x8e\xe6\x3d\x5f\xb5\x8a\x6d\xc6\x76\x48\x1d\xcf\x32\xac\x21\x1d\x78\x17\xae\x6b\x07\x9b\x36\x87\x57\xae\xa4\x1b\x70\xbf\x96\x83\xc3\x0d\xaf\xee\x7f\xa1\xbe\x4b\xfa\x5b\x56\xfc\x70\xfa\xcb\xe1\x34\x6c\xb6\xf6\x4e\xe6\x50\xb9\x76\x54\x16\x23\xdc\xbc\x90\x83\x96\xed\x0c\x9b\x7d\xab\xb5\x5a\x3b\x4f\xb0\xe0\xab\x79\x52\xc6\x4b\x4d\x68\xd9\x3a\x94\x4d\x95\xd3\x99\x80\xc5\x96\xbd\x87\xb5\x88\x5a\x4e\x95\x2e\xa4\x7d\xc4\x34\x1e\x40\x79\x35\x28\xa7\x29\x2d\x9e\x2e\x17\x7f\xbd\xac\x14\xb5\x7c\x59\xcb\x84\x6e\xd0\xd9\xdc\x31\x74\xf9\xeb\xd5\x3d\xef\x11\xb9\xb8\x35\xe3\x17\xd6\xdd\xba\x5f\x17\x4b\x78\x64\x6e\x5e\x23\xdf\x61\x12\x97\xb5\x5d\x39\x2a\x97\x55\x5e\x79\x25\x17\xcb\xb6\x9a\xa7\xd7\xc8\xb2\x6c\x72\x61\xdd\x95\xbf\x72\x39\x3f\x6b\x07\xe7\x12\x8e\x7c\x33\x7d\x55\x59\xab\x95\xb4\x4c\x31\x9e\xcd\xec\x36\xe8\x0d\x5b\xee\x6b\x6f\xcd\x46\x28\xa6\xa5\xd5\x77\xf4\xfe\xfc\x65\x19\xd4\x67\x68\x9f\xff\x58\x7f\x17\x28\xcd\x86\xfc\xc7\xaa\xc9\x9f\x81\xa2\xd1\xe6\x7d\xfa\x23\xf0\xfd\xcf\x40\x76\x32\xe0\xce\x8f\xc0\xf7\x45\xac\x1f\x2a\x68\x6a\x49\x5b\x53\x5e\xd3\xfb\x65\x8f\xe2\x7e\xe1\x8a\x70\x28\x9b\x4e\x6b\x99\xd2\x09\xca\xcb\x0a\x81\x6c\x66\x9f\x40\x20\x5e\x0c\x3c\xad\xa3\xf8\xf5\x77\xee\x82\xc8\x93\xbf\xe7\xb5\xf8\xab\x3e\x37\x1a\x3a\x2b\xcf\x9e\x2e\x33\xd9\x92\x4f\x9f\x81\x6a\xbc\x14\xdb\xb0\xb5\x1b\xce\xef\x75\xbf\xa5\xe2\x63\xe4\x1a\xe1\xdf\x11\x59\x28\x20\x97\x7a\x19\xb6\x8a\xf9\x54\x60\xe8\xd8\x06\x67\x23\x87\xf6\x02\x3d\x3a\x68\x8d\x68\x8b\x2f\xd4\x70\x61\xfa\x61\x5e\x8d\x71\x93\x8e\x7a\x5e\xd3\xa3\x7a\x8f\xbb\x43\x6a\xf0\xc0\x5f\x81\xa7\x27\x5f\xe9\xc4\xf2\xda\x4d\xdb\x62\x3b\x69\x90\x3d\x61\xfd\x46\xb9\x12\x75\x61\xc2\x5b\x41\xd7\x46\x70\x48\xe9\x4b\x6b\xf7\x2f\x78\xbf\xfd\x12\x08\x04\xe6\xb8\xee\xf1\xa9\xb7\x18\x8b\x4c\x39\x95\xfa\xb6\xf8\x96\x0e\x87\x3d\x6b\x11\xc1\x04\xe6\x2e\xb9\xeb\xd1\xfe\x30\x30\x67\x74\xf1\x18\x78\xb3\x07\xfc\x97\xdf\xfd\xa3\x72\x6c\xca\xad\x2d\x7e\x35\x57\x2f\xe3\x79\x33\xb3\x8f\x50\x5d\xb0\x59\x2c\xa9\x85\xd2\xd2\x66\xc0\xe2\x8b\x78\x26\x54\xd0\x16\x03\x1c\xac\xaf\xbe\xca\x64\x03\xe9\x78\xa6\xa2\xa6\xca\xda\xe6\x59\xad\x6d\x9f\x43\x6a\x28\xa6\x05\xc0\x39\x61\x6e\x56\xbb\x9f\xd0\x56\xef\xba\xd5\xb2\x06\xde\x7a\x45\x0d\x0c\xf8\xd4\x1b\xd3\xde\x6f\x4f\x47\x24\x7e\xfa\xf1\xc3\xe1\x2d\xa3\x47\x5d\xf7\x77\xff\x70\x2d\x23\xb7\x80\xd1\xa6\x0e\x35\x3c\xee\x04\xc6\xd4\x99\x59\x83\xd6\x6f\x58\xfa\xfd\xc4\x40\x2d\x81\xf7\x6e\xc9\x96\xee\xc2\x46\x2e\x6b\xe0\xf1\x16\x77\xfc\x3c\x6e\xdc\xb5\xc3\x6c\x1e\xac\x3e\x77\xf4\x0e\x54\x07\xf0\x70\xf5\xa5\x07\x78\xa0\x01\xc2\xdb\x06\xe7\xf4\xf1\x60\xb3\xdd\xa5\xf9\x69\x46\x7b\x4a\x90\x40\xb6\x9a\xd1\xc2\x81\x60\xfd\x8c\x44\x4b\xf7\xef\xb4\x40\x1b\x5a\xbe\xe2\x3f\xe6\x71\xe3\x61\xde\xd6\x0e\xc5\xbd\x56\xb7\xa2\xb3\x32\x3b\xdf\x9c\x69\x6e\xa7\xd7\xbe\x9d\xbc\xf7\x9f\x8e\xd5\xfc\x75\x11\xd0\xfe\x7a\xc4\x9a\x17\x76\x7c\xb8\x88\x71\x8f\x5a\x3d\x37\xd0\x71\xed\x81\x7e\xdc\xd8\xd6\x5e\xd8\xbd\x7a\x58\xd1\x59\xe9\x61\x9d\xc5\x3b\xc2\xdb\x4e\x6a\xed\xa2\x59\x78\x28\xab\x77\xb8\xe1\x4a\x2d\x3b\x6e\xf7\x62\x20\x36\x7c\xac\x51\x4e\xf0\xf5\xb0\x1d\x88\xcb\xea\x6f\x52\x6b\xbe\x85\xc9\x1e\x79\xdb\xb5\xc9\xdf\xc6\xe1\xd4\x3b\xdb\x68\x59\x77\x34\x64\x17\xd7\xdd\x98\xce\xea\xd1\x97\x75\x7c\x27\x0b\xf0\x1b\x91\xed\xd1\x5e\xd3\xb0\xad\x81\x7b\xd8\x06\x4d\xce\x9b\x43\xdb\xee\x1d\x2e\x5d\x64\xcd\x4d\x7e\x6c\xac\x17\xc5\x0e\x77\xb9\x33\x3e\x56\xa5\x4f\xa7\x4d\x6f\xda\x9c\x43\xa7\x6b\xbd\x1d\xab\x35\x74\x6c\xcf\x36\xec\xde\x51\xb9\x84\x0b\xb0\xf5\x48\xc0\x72\xaf\xf5\x1f\x09\x82\xcf\xac\x45\x97\xa3\xc0\x79\x5c\xb9\x56\xe4\xc7\x2e\x2f\x27\xfb\xf8\xac\xe5\xe6\x2a\x41\xef\x5c\x7e\x4e\xf6\xf5\x7e\x39\x3a\x5c\xfd\xc4\xf2\xb4\x13\xce\x3f\xcc\x36\xdf\xfb\x7c\x3e\x1c\xd8\xdb\xfb\x39\x5c\x67\xe1\x91\x1b\x4b\x51\x16\x2b\xd3\x9d\x0b\xd3\xf2\x2b\xd7\x1e\x39\xc6\x66\xeb\xed\xc8\x92\xb0\x9e\xe6\x4f\x4f\x3f\x7e\xbc\xab\x71\xc1\x3c\x58\x65\x53\xee\x55\xe7\x6a\x53\xf1\xb7\x87\xae\xe3\xab\x75\xed\x96\x55\x65\xb1\x93\x70\xb4\x5b\xdf\x96\xe6\xa9\x4a\xab\x5d\xd6\x53\x55\xfa\x8b\xe1\x39\x58\xe1\xfd\xe6\xf0\x99\x7a\x27\xbb\xdb\xd4\x3a\xd1\xe3\x82\x25\xcb\x6d\xba\xbc\xd7\xe3\x4e\x40\xb7\xed\x1e\xa7\x83\x65\xd9\x4e\x02\xf5\xe0\x1e\xef\x82\x6c\x73\x71\x0a\x20\x10\x8a\x69\xa1\x64\xe0\xb7\xdf\x76\x45\xfc\x9f\x80\xf0\xfb\xef\xe7\x48\x1d\x6a\xbe\x96\xea\xff\xbd\x13\xf4\x02\x7a\x7b\x42\xfb\xc8\xfb\x34\xb2\x60\xf0\xa4\xad\x1f\xce\x3b\x3e\xc0\xfa\x0f\x67\x92\x2f\x5c\xea\x2e\xc1\x98\x7b\x16\xbb\x73\x59\xdb\xc7\x2c\x77\x67\x7a\xf9\xac\x05\xef\x4a\x61\xef\x5c\xf2\xce\xf4\xf6\x7e\xd1\x3b\xd6\xe0\xc4\xb2\xb7\x97\xa9\x7f\xa0\xad\xae\xed\x73\x97\xa5\x8b\xa3\x8f\x15\x38\x9f\x89\x69\x2e\x5d\x19\x4f\x2f\x72\x07\xeb\x6e\xbb\x3e\xee\x9e\xd3\xa3\x53\xef\x58\x68\xf3\x53\x82\x13\x6f\xda\xe4\x83\x31\xef\xd9\x43\x7e\x28\xe1\xe7\x4d\xe7\xa1\xc2\xa8\xe7\x1d\x29\xec\x73\x8f\x1e\x29\x9a\x6b\xe1\x58\xb1\x6b\xb5\x06\xd4\x1b\x39\xfc\x50\x6e\x4a\xc1\xbf\xff\xef\xff\x6d\xbd\x8b\xff\xfc\xf7\x90\x7f\xf1\xbf\xff\xe7\x8f\x59\x78\xdf\x3e\x92\x46\xda\xd2\x1a\xd8\x03\x7e\xd2\x5b\xd9\xd2\x7a\x4f\x66\x25\x99\xd5\xe7\x4d\xdd\x1e\x0d\x98\x3b\x1f\x39\xe2\xd0\x41\xeb\x54\xd2\x73\x99\x04\xb3\xd8\x7a\xf6\xac\x37\xca\x2e\x99\xf2\xcb\xe9\xb3\xd8\x9d\x3c\xb3\x07\x57\xd4\x4a\x27\x12\x86\xbb\xa9\x99\xdd\x74\xe1\x75\x8e\xfb\xe3\x84\xb8\x70\x8b\xf2\xa4\x50\x27\x1d\xfe\x4b\x84\x3c\xba\x72\x3e\x4c\xcc\x8b\x77\x79\x4f\x0a\x7a\x06\xe6\x0f\x8b\x1a\xa6\x1e\x0d\x98\xb6\x73\xc1\x5e\x41\x20\xac\x96\xd4\x33\x22\xc6\x33\x45\xad\x50\x0a\xc4\x33\xa5\xec\xbb\xfd\x82\xc5\xea\x58\x0c\xfc\xf6\x04\x9a\xd6\xc0\xf2\x2c\xda\x6b\x2e\x77\x87\xfe\x70\x5f\x7b\x4f\xdf\x02\x4f\x50\x00\xf2\x77\x20\x7c\x87\x28\x00\xe0\x0f\x01\xfe\x90\xc0\x1f\x22\x42\x04\xa0\xef\x82\xfc\xf4\xfb\x9f\x97\x51\x87\xcd\xe5\x09\xa5\x3d\x15\xe8\xb3\xa6\x67\x5b\xec\x74\x4f\x0a\x10\xaf\xe9\x48\x6c\x8e\x5c\xbe\x41\xf8\xa6\x35\x78\x77\x28\xea\x64\x77\x18\x00\xa0\x5c\xd3\x9f\xd4\xa4\x8c\x35\xfd\xc9\x94\xd3\x7d\x20\x45\x21\xd7\xf4\x81\x9a\xcb\xe5\x64\xed\xd9\x2e\x76\x9e\x4e\x76\x21\x0b\x92\x74\x95\xda\xf0\xba\x8b\x15\xda\x5c\xd0\x85\x28\x4b\xf8\x9a\x2e\xe4\x66\xdf\x66\x96\x39\xbb\x5c\x0a\x02\x14\x01\xae\xba\x38\x32\x35\x4e\x6e\xe8\x5c\x3b\x37\xde\x6d\xea\xac\x79\x07\xdf\x02\x4f\xd1\x60\x21\x57\x8f\xc5\x53\x30\x14\x17\x23\x99\xbc\x14\xac\xa5\x22\xe9\x4c\x38\x15\x49\x94\x33\xb9\x32\x8c\xd5\xc5\x46\x3a\x52\x8c\x65\x33\xe5\x90\x96\x55\x8b\x55\x39\x1f\x92\xb3\x35\x18\xf3\xeb\xe7\x68\x27\x70\xde\x49\x08\x8a\xf9\x08\x8c\x95\x35\x04\xd5\x74\xad\x1c\x29\xc7\x44\xb5\x9e\x50\x6b\xb5\x68\xad\x56\x81\x95\x58\xad\x5e\x2f\x60\xad\x5e\xd3\x4a\xb9\x64\xb8\xd6\x28\xaa\x55\x2c\xd7\xb2\xd2\xc5\x9d\x88\x8b\x4e\x6a\xc9\x28\x2e\x64\xa4\x6c\x26\xae\xe5\x42\xe9\x4c\x24\x28\x8b\x50\x95\x44\xdc\x40\xb9\x4c\xb8\x58\x48\x45\xab\x49\x39\x1a\x4c\x85\xd2\xf9\x54\x3c\x92\x95\x8a\xb2\x56\xaf\x56\xca\x17\x77\x22\x2d\xd4\x55\x8b\xe6\x13\xd5\x4a\xaa\x9a\xad\xc7\x22\xa9\x4a\x29\x59\xad\xa0\x48\x34\xa6\x8a\xa9\x4c\xbd\x0e\x13\xf9\x64\x5a\xce\xaa\x09\xb5\xac\xe5\x23\x65\x9c\xca\x85\x8a\x5a\xa4\x52\xcb\x66\x9e\x6e\xdd\x80\x9c\xc3\xf0\x99\xb1\x2e\x6a\x29\x2d\x54\xda\xd9\xd1\xfd\xc3\xe5\xa7\x37\xe7\xbe\x05\xa4\x6f\x01\xcf\x19\xf1\x0b\x2c\xf0\xfd\xb6\xdb\x25\xf6\x77\xcb\x56\xcf\x43\x24\xdd\xf3\x2a\xbe\x05\xc0\xb7\xe5\x36\xf5\x79\x41\x0f\x6d\xf5\xdc\x3a\xd3\xd6\xdb\x3d\x3b\x73\x80\x20\xa2\x28\x22\xc1\x44\x59\x30\x25\x7c\x0b\x3c\xfd\xe7\x57\xd7\x9b\xaf\x1b\x83\x56\x53\xa7\x3d\x3a\x30\xf8\xaf\x3f\x02\xbf\x02\x41\x10\xfe\x10\x96\x9f\x5f\xff\x7b\xcc\x38\xfd\x3d\x80\xfd\x1e\xe0\xb7\x80\xb8\xe8\x61\x99\x08\x78\x47\xf7\x5b\xe0\xd7\xed\x16\xe7\xbc\x74\x40\x3d\x6b\xcc\x2f\xef\xcf\x27\x91\xf8\x2d\x00\x96\x22\x4d\xb8\xd5\x6a\xcf\x3b\x04\xdf\x02\xbf\x2e\x15\xd6\xec\xf2\xd9\xbc\x8f\x5b\x51\xe0\x72\xae\xc4\x15\x57\x12\x94\x09\x3a\xa3\x67\x7c\x97\x9e\x57\x3d\x1c\xd0\x33\x7e\xa8\x9e\x7d\x12\x5d\xa8\xe7\xdb\x80\xf0\x72\xae\xa4\x35\x57\x98\x10\xf0\xb1\x7a\x5e\xf6\xf0\xe1\x7a\xf6\x49\x74\x99\x9e\x6f\x5c\x0b\xae\xe2\x0a\x40\x42\x24\x45\x40\xca\xca\xa0\xe1\x92\xad\x9e\xd5\xb7\x16\x6a\x50\x20\x14\x45\x19\x0a\x22\x26\xe8\x0f\x49\x96\x11\x11\xe4\xad\x3a\x0c\x9b\x2d\xd4\x51\x2e\x86\xdf\xeb\xc8\x70\x38\xb3\xbc\x26\xed\x0d\xdb\x74\x30\xea\x4b\xdb\x1a\xcb\xa3\x09\x9f\x36\x67\x97\x32\x02\x41\x58\x19\xd3\x3f\x4e\xc6\xcd\x38\x02\x09\xc8\xf2\x1d\x32\x06\x4b\xa1\xaf\x2a\xe3\x76\x1c\x09\x94\xc5\x7f\xae\x8c\x32\x90\x15\x22\x8b\x70\x6d\xab\x3e\x58\x42\x07\x61\xe9\x6f\x60\xa3\xd0\x27\xdb\x01\xc8\xfd\xdb\xca\x26\x6d\x64\x93\xc5\xf5\xfc\xfb\xa7\xc8\x06\x7d\xb2\xfd\x93\xc6\x6d\x33\xdf\x08\x90\xd6\x98\x72\x95\x6c\x5f\x18\x4b\xa0\x4f\xb6\xab\xc7\xed\x0b\xcb\xb6\x99\x6f\x04\x21\xac\xfc\x53\xc7\x6d\x29\xdb\xdf\x65\xdc\xce\x84\xbf\x87\x4e\xf8\xdd\x1a\xfe\xae\x4f\xf9\xed\xe6\x99\xb0\xc8\x14\x62\x22\x11\x73\x8e\x09\x03\x3a\x94\x75\xa4\x13\xc5\x84\x22\x35\x91\x08\x80\x2e\x23\xac\x50\x28\x99\xd4\x04\x92\x20\x52\x26\xe8\x08\xea\x58\x14\x75\x41\xd6\xb9\xa2\x3c\x7d\x5b\x6e\x85\xcc\x23\x8d\xb9\x5b\x01\x14\x59\xf8\x2e\x80\xef\x02\x08\x08\xc2\x8f\xc5\x7f\xfe\x84\x9b\xf2\x43\x90\x7e\x08\xf8\x0f\x20\x10\x19\x81\xb3\xa5\x12\x54\x24\x05\xcb\x50\xc1\x4b\xe7\x1f\x08\xef\x3e\x8b\xae\x81\xb0\x5b\xb8\x7a\x16\x8e\x58\x8f\x5f\x15\xf3\x69\x00\x28\x36\x75\x59\xa1\x98\x02\x05\x13\x89\x03\x59\x32\xa0\x81\xa8\xa2\x30\x8a\xa9\x02\xb9\xc9\x04\x2c\x60\x89\x50\xac\x48\xa2\x6c\x9a\xba\x29\x32\xc1\x34\x64\x4e\x30\x37\x05\xf3\xe9\x31\xea\x14\x97\x86\xfb\x5e\x27\xe2\x51\x55\x01\x04\x14\xf9\x6c\xe9\x32\x31\x20\x21\x05\x9e\x50\xa4\x28\x1c\x56\xe5\xfc\x1f\x72\xa1\x32\xe7\xec\xcb\xb2\x21\x22\x4c\x65\x68\x00\x8a\x64\x4e\x44\xac\x18\x06\x96\x19\x33\x19\xa1\x22\xd1\x29\x94\x08\x53\x98\x02\xa8\x2e\x2a\x88\x63\x81\x53\x1d\x0a\x92\xcc\x04\x00\x24\x53\x60\x4f\x8f\x19\x10\x69\xf1\xdf\x01\xbd\x48\x47\xd5\x85\x44\x81\x9c\x2c\x9c\x1b\xe5\x2a\xfc\x03\x84\x90\x13\xca\x94\x1f\xa0\xcc\x39\xfb\x4c\xd4\xb1\x21\xe9\x40\x02\xa2\xc9\x91\x0c\x24\x1d\x60\xa2\x63\x43\x34\x15\x46\xa1\x41\xa1\x4c\x24\xc4\x0c\x04\xb1\x88\x25\xc5\xc0\x18\x19\xa2\x80\x65\xc4\xb0\x88\x0c\xc2\xf9\xd3\x63\x06\xe4\xa8\x32\xd1\x51\x7d\xc9\x90\x60\x78\xb6\x74\x09\xdc\x58\x01\x44\x3a\xa1\x4d\x00\x1e\xa0\x4e\xf4\x2d\xf0\xa4\x30\x83\x52\x5d\x24\x88\x73\x09\x11\x68\x32\x53\xe0\x00\x29\xa6\x20\xca\x1c\x0b\x4c\x17\x44\x09\x09\x1c\x42\x4a\xb8\xa4\x60\x13\x42\x83\x41\xae\x08\x7c\x3e\x81\x00\xe3\x0b\xd3\x79\xc0\x90\xe0\xc5\x7f\x87\x34\x73\x4c\x61\x50\x00\x48\x3a\x3a\xd1\x37\xa5\x10\x48\xb2\x44\x44\x2c\x11\xe1\x94\x3a\x1f\x61\x9d\x73\x01\x04\x02\xa0\x8e\x09\xd5\xb1\x68\x18\x1c\x43\x85\x40\x01\xe9\x08\x43\x1d\xea\xba\x82\x88\xc4\x89\xa0\x40\x26\x51\x48\x28\x51\xe6\xf0\x07\x0c\x13\x43\x24\x21\x09\x8a\x5c\x5f\xc8\xf3\x80\x21\x39\xaa\xce\xe3\x0a\x83\xa2\x80\x8e\xa2\xea\xa6\x14\x22\x19\x2b\x44\x10\x65\xf9\xd4\x0a\x04\xcf\x21\xe7\x99\x85\xfe\x82\xb3\xcd\xb7\xae\xfb\x47\x76\xd0\x8f\xe4\xa8\xc1\x91\xa1\x3f\x43\xc5\x97\x79\x86\xb7\x51\xf1\x67\x8a\x6f\xa3\x22\xf9\xb2\xb3\xb7\x51\x41\xbe\x6c\xea\x6d\x54\xf0\x3e\x15\xe9\x36\x2a\xb2\x2f\xe3\x78\x23\x19\xe2\x4b\xea\xdd\xa8\x19\xc5\x97\x37\xbb\x91\x9b\xc5\x5c\xda\xcd\x4d\xdd\xc8\x0e\x00\xfe\x1c\xc9\x8d\x74\xfc\xb9\x96\x5b\xf9\x11\xfd\xb1\xff\x8d\x74\xfc\xf9\x91\x5b\xf5\x8c\xfc\x31\xed\x8d\x74\xb0\x8f\xce\xad\xfa\x91\xfd\xb1\xda\x8d\x74\x88\x8f\xce\xad\xfa\x51\xd6\x6b\xa6\x24\xa0\x3b\xf4\x0c\x85\x0d\x1d\x09\xdf\xa1\x1f\x08\x36\x74\x88\x7c\x87\x5c\x10\xae\xe9\x20\x48\xf0\xed\x40\x08\xc5\x0d\x1d\xac\xe0\xdb\x41\x0c\x4a\x6b\x3a\x18\x08\x48\xbe\x9d\x1f\xb4\x59\x94\x65\x72\x8f\x9e\xf1\x9a\x0e\x00\xca\x3d\x7a\x96\x37\x74\xb0\x70\x8f\x9e\xc9\x9a\x0e\x14\xc0\x3d\x7a\x56\x36\x74\x24\x88\x6e\xb7\x67\x51\xd8\xd0\x21\x22\x5a\xe9\xf9\x11\x6f\xef\x3c\xe2\x44\xc1\xe9\x23\x7d\xf3\x40\xf6\xd2\xa3\x14\x47\xde\xd6\xb9\xdb\xdb\xda\x59\x76\x77\x1c\xa3\xcd\xdf\x64\x67\x83\xd6\x1c\x0d\xd8\x2a\x99\x74\xe3\xb9\x9f\x45\x62\x6a\x79\x9c\xe4\xae\x9c\xd4\xb7\xc0\x25\xa7\x1f\x3e\xe0\x80\xd2\x31\xb5\xad\x7c\xb8\xcd\xdf\xd2\xc7\xaa\xed\xc6\x2d\xfa\x23\x6a\xc3\x3f\x4f\x6d\x4b\x77\x73\xf3\xb7\xf0\xa1\x6a\xbb\x75\xc7\xfd\x2b\xa9\x6d\x7f\x47\x7f\xf3\xb0\xb4\x37\x7c\xd9\x8e\xa9\xe7\x8c\x5c\x8f\xf3\x7b\x67\xe0\x82\x8c\xed\xdc\xab\xda\x9f\xbf\x9f\x74\xe7\xc9\xbc\xab\x46\x6e\x7d\x4e\x61\xf3\x20\xfc\xe4\x91\xbb\x03\x4b\xbe\xc6\xc8\x3d\xf8\xe0\xe6\xf1\x91\x5b\x9d\xbe\xd8\x3c\xe0\x7f\xca\x9c\xfb\x19\x7b\x4a\x9f\x3a\xe7\x56\x67\x4a\x36\x0f\xf0\x9f\x32\xe7\x7e\xd6\xc8\x7d\xc2\x9c\xdb\x3b\x29\xb3\x79\x58\xa2\x25\x58\x8c\x9c\x67\xdf\xab\x4c\xd3\xb1\xfb\xf7\x8e\xeb\x57\x3e\x28\xf1\x01\x87\xe7\x8f\x0f\xd5\xea\x70\xcc\xe6\x01\xbf\x1f\xaa\x3b\x10\xeb\xdf\xa1\x7a\xdc\x50\xad\xcf\xc3\x6c\x1e\xe0\xdf\x76\x56\xfd\x34\x00\xfc\xac\xa1\x5a\x1d\x81\xd9\x3c\x90\xbf\xed\xac\xfa\xe7\x0e\xd5\x5e\x56\x76\xfb\xb0\x04\xc0\xe5\xf1\x9e\xa1\x63\xad\x52\x14\x68\x4f\x43\x3b\x2f\x58\xec\x7e\xbf\xa8\xde\x9c\x4b\xff\x9f\x5f\xd9\xea\xf8\xf8\x60\xfe\x2f\xfa\xef\xb7\xc0\xaf\xeb\xeb\x38\x7e\xfd\x31\x0f\x95\x7f\xd5\x47\xb3\x79\x64\x7a\xf0\x08\xfb\x3c\x74\xe5\xbd\xde\xb6\xdc\x87\x71\xfb\x85\xa7\x46\x65\xbf\xe6\xdf\xc8\x07\xdc\xcb\x75\x6f\x1f\xe0\xa1\xd1\x11\xfe\x00\x87\x07\xe7\xf4\xe8\x08\xeb\xe1\x39\x37\x3a\x3e\xed\x1f\x1c\xb9\xf3\xca\x7f\x3f\xc6\x7b\x84\xfe\x46\x5e\xde\xde\xfe\xc1\xf6\x81\x1c\x1a\x1b\x28\x1c\x9b\x39\x17\x4d\x1d\x28\xfc\x3b\x75\x6e\x9b\x3a\xab\x6d\x99\xed\x83\x74\x64\xea\x2c\x3f\xfb\xa3\xa3\x9c\x1e\x1d\xe5\xdf\x99\x73\xcf\xcc\x59\xed\x74\x6d\x1f\x84\x43\x43\x83\x8e\xcf\x9c\x8b\xa6\x0e\xfa\x77\xea\xdc\x38\x75\x56\x3b\x88\xdb\x87\x83\x3e\x81\xf0\x07\x3c\x34\x3c\x7e\x77\xca\x3f\x3c\xe8\xdf\xb9\x73\xe3\xdc\xd9\xdd\x95\xdd\x3e\xfc\x8d\x3d\x02\x9f\x8f\x7d\xf9\xfc\x7a\xf4\x10\x7e\xdc\x94\xfd\x2c\xb3\x58\x6d\xb2\x6f\x1f\x0e\x3a\x23\x1f\xed\xc6\xfb\x06\xf4\x4e\xb3\xb8\x1a\x76\xff\x3e\x66\xf1\x09\x48\xbe\x7b\x66\x62\xfb\xf0\xf7\x75\x82\xfe\x05\x8b\x87\x81\xc5\xea\x04\xcc\xf6\xe1\xa0\xff\xf5\xe1\x91\xcb\xbf\x68\xf1\xc5\xd0\x62\x75\xa2\x69\xfb\x70\xd0\xef\xfb\x78\xbf\xfc\x5f\xc3\xf8\x6a\x86\xb1\x3c\xa2\xb6\x7d\x38\xe2\x74\xfe\x1d\x02\x82\x7f\xd7\x91\x53\xeb\xc8\x99\xe3\x7c\x07\x6e\x8a\xbe\xe6\x66\xa4\xe3\x54\xcf\xdf\xc9\x7b\xeb\x91\xc1\xa3\x77\xff\x1d\x7a\x45\x83\x1c\x7f\x15\xe1\x2c\x1d\xb8\x4f\xe7\xd8\xb9\xeb\xb3\x74\x44\xdf\x81\xbc\x5b\xe9\x48\xfb\x74\x8e\x9d\x9b\x3d\x4b\x07\xf9\x4e\xba\xdd\x4a\x07\xef\xd3\x39\x76\x6e\xf6\x2c\x1d\xd9\x77\x82\xec\x66\x42\xc4\x77\xa0\xe9\x66\x0d\x29\xbe\xf3\x35\x37\x73\xb4\xff\xd2\x06\xbc\x83\x25\xe0\x3f\x7f\x70\xb3\x39\xee\xbf\xb8\x71\x8f\x9a\xf6\x5f\xdd\xc0\xf7\xf0\x24\xf9\x28\xdd\xae\x71\xe4\xdb\x51\xbe\x9d\x27\xec\xa3\x74\xbb\x9e\x64\xdf\xd6\xe9\xed\x3c\x11\x1f\xa5\xdb\xf5\xa4\xf8\xf6\x08\x6f\xa6\xb4\xff\x22\xc7\x3d\x7a\xda\x7f\x95\xe3\x1e\xe9\xf6\x5f\xe6\xb8\x07\x2c\xf7\x5f\xe7\xb8\x07\xe6\xf6\x5f\xe8\xc0\xf7\xf0\x84\x7c\xf9\xc2\xdb\x29\x61\x5f\x8a\xe9\x76\xe9\x64\x5f\x56\xe2\x76\x9e\x88\x2f\x92\xbd\x9d\x27\xc5\x17\xfb\xdc\x4c\x69\xff\xe5\x0e\x78\xea\xe5\x8e\x6b\x6f\xaa\x7f\xc4\xeb\x1d\xe7\x2e\x32\xbe\xe6\x05\x8f\xa3\xf7\xd2\x3f\xc0\x5f\xdb\xb9\x71\x96\xe9\xa2\x42\xb8\x2e\x51\x4e\x14\x19\x61\x11\x22\x2c\x89\x06\x65\x10\x18\x8a\xc4\x81\xa8\x9b\x86\x20\x4b\xba\x08\x45\xce\x89\xc8\x81\x04\x74\x53\x16\x00\x45\x4c\x11\x24\x13\xe8\x4f\x8b\x4b\x4b\xee\xba\xfc\x75\x79\x84\x45\x58\xe6\x4a\x8e\xdd\x06\x21\xcb\x47\x5f\x30\xdf\x94\xee\x7a\x89\x4f\xea\xfc\x13\x4d\x91\x58\x7e\x9c\xef\xea\x49\x18\x53\xc5\x6a\xa5\x53\x70\x92\xfd\x4e\x4d\x10\xcc\x28\x71\x53\x71\xb9\x2f\x68\x85\x49\xa2\xfa\xa2\xd6\xc4\x79\xf5\x86\xba\xf9\x04\xd5\xfd\x8f\xff\x59\xf5\xf4\x56\xad\x80\x35\xd9\x0e\xa7\x84\x54\xfe\x79\x52\x2f\x86\x94\xb7\xda\xb8\x56\x29\x89\x53\x2b\x67\xd5\x47\x45\x1d\x84\xc7\xfd\x7c\x8a\x93\x79\xf5\x50\x45\x1d\x77\x77\xe9\x55\xc6\x93\x88\x32\x51\x55\x55\x53\xeb\x9d\xbc\x91\x2b\xc1\x28\x6a\xbf\x0e\x82\xfd\x56\x34\xca\x5b\x4a\x82\xf4\x24\x03\x68\x83\x72\x6f\xda\xed\x69\xbd\x98\xe2\xbe\x36\x1c\x41\x91\x41\x04\x67\x53\x55\x93\xbf\xf4\xa5\xee\x30\xe2\xc5\x9f\xdd\xb8\x60\x81\xd7\x94\xe5\x21\x55\x48\xcc\xaa\x03\xbd\x5d\x4f\x55\x91\x1d\x7e\x5a\xeb\x60\xa1\x87\xfc\xb6\xe7\xbc\x5f\x92\xc5\xe7\xaf\xbd\xfa\xaa\xb6\xe0\x79\xfb\x1c\xdf\xfe\x99\xaa\x4a\x11\x81\xb7\xb3\x58\x9d\x29\x21\x21\xe7\x46\xb5\xd6\xd8\x00\x32\x00\x65\x85\xd4\x3b\x52\x3f\xd5\xed\x2b\x79\x19\x75\x43\xe2\x78\x51\xbf\x97\x4f\xa1\x65\xcb\xd0\xc1\x9e\x8f\xe8\x77\x9f\xdf\x9d\xfe\xaf\x18\xd3\x30\x0f\x41\xb7\x92\xa9\x47\xbd\x1d\xa1\x27\x97\xf7\xbf\xd1\x49\x6b\xfe\xbf\xb4\xaf\x5e\xd0\x7a\x09\x0a\x29\x21\x11\x9d\x79\xed\x49\x06\xf4\xea\x02\x9d\x0d\x6d\xa0\x64\x62\xd3\x71\x2a\x34\xcb\x22\x2f\xa8\x19\xa1\xe5\x38\x8b\x2d\xcf\xc9\x0e\x1a\x27\x14\xb0\x2f\xef\xa1\x8f\x7f\x4c\xae\xef\xbf\xfe\xf2\x6c\xf8\xe8\x5d\xd8\xff\x5f\x0b\xfb\xf8\x4f\x34\x2e\xc4\xc2\x82\xd2\x1e\xd5\xe9\x70\xd2\xb0\x83\xed\x81\x9d\x2b\x9a\x09\x1e\xcb\x14\x12\x20\x61\x34\x12\x85\x44\xe1\x45\x4f\xf6\xa9\x92\xe3\x4a\x81\x77\x2c\x30\x10\xc7\x68\x94\x48\x16\xf4\x62\xce\x09\x65\xe2\x1e\xb5\x24\x87\xe7\x33\x21\xa3\x37\x84\x52\x35\x04\x46\x54\x9d\xfc\xf5\xd7\x22\xbc\x5e\xfc\x74\xc1\xfa\x66\x9e\xf9\xff\xcf\xaf\x12\xbb\xb7\x73\xcb\x86\x80\x14\x0e\x00\x20\xa6\x64\xca\x8a\xbe\xb8\x4b\x82\xcf\x17\x0b\x9d\xe8\x26\x30\x81\xa9\x9b\x02\x44\x0a\x53\x04\x06\xb9\x44\x11\x25\x94\x0a\x04\x41\x43\x02\x98\xc8\x4b\x20\x83\xf7\x01\x19\x3c\x07\x64\xa2\x24\x1f\xbf\x11\x67\x55\xb8\x1b\x5c\xde\x0b\x63\xfe\x29\xf7\xce\xcc\x9d\xd7\x0c\x4e\xf1\x2c\x6d\x75\xa6\x69\x5a\xce\x29\x38\xf8\x66\xba\x0a\x17\x0c\xdb\xc9\x34\x6a\x6f\xc1\x6a\xa2\x1b\xb1\x93\x72\x77\xdc\x5d\xcc\x9b\xcc\xb3\xc6\xea\xbb\xf4\xb6\x30\x16\x2e\xdb\x29\x07\x44\xe2\xf1\x34\x8b\x80\x44\x36\x09\x0b\x95\x96\xa4\x85\xf3\xe3\xd4\x33\x9f\xf2\x0e\x70\x65\x05\x45\x59\x23\xf9\x86\xbc\x44\x50\x91\x86\xe1\xae\xae\x5a\x6f\xa4\xfb\xdc\xcf\x8d\x85\x6c\x65\x54\x2c\x11\xda\x06\xe9\xb7\x6e\xa3\xde\xea\xd9\xae\x60\x00\xd5\x88\x7f\x1c\x8c\x25\x71\x87\x5b\x62\xa7\x6f\xc7\x49\x29\xda\x0b\xbf\xf0\x96\x21\xca\xb9\x9a\x17\x4b\x26\xdf\xaa\x15\x32\xa9\x58\x8d\x20\x0d\x8d\x50\x0a\x2d\xe6\x7d\xd8\x6c\xc7\xaa\x87\x75\x7a\x52\xbf\xfb\xfc\xde\x0e\x63\x36\x70\xf3\x93\x7b\x61\x2c\x7f\x48\x27\xb7\xc0\x08\x91\x0e\xea\xf4\x9d\xbc\xfe\xcf\x0a\x46\x40\x32\x84\x95\x42\x31\x14\x8e\x15\x58\xb1\x64\x79\xdd\x4a\x3d\x1b\x54\x85\xd4\xec\x65\xe0\xd6\x6c\x45\xcf\xbe\xf0\xc2\xa0\x5a\x74\x9f\xf5\x62\xde\xe4\xc9\x3c\x8a\x4e\xe2\xee\x4b\x22\x37\xec\xc8\x4a\xb8\xa7\x77\xbb\x2f\x51\x9b\x95\xd2\x28\x5a\x8d\x27\x68\x2a\x13\xcb\xe4\x63\xa1\x07\xc1\x88\x29\x1b\x3a\x11\x05\x45\x04\x44\xc4\xc4\xc4\x8a\x64\x10\x22\x0a\xba\x29\x13\x85\x48\x80\xcb\x1c\x1a\x12\x66\x06\x17\x05\x8e\x05\x05\x2b\x8c\x10\x9d\x09\x06\x47\x84\x18\x3a\x57\x9e\x36\x97\xb8\xdd\x01\x23\xe2\x39\x18\x91\x00\xc2\xc7\x71\x64\x5d\xba\x9b\x15\xba\x17\x48\xc2\xe7\x0c\x4d\xef\xb7\xfa\xa0\x02\x59\x0b\x55\x40\xff\x15\xf0\x5e\xda\x88\x02\x6f\xda\x29\xd6\x93\x0d\x65\xa2\xb5\xec\x62\x90\xf2\x2a\x29\x5b\x11\x5b\x3d\x0d\x24\x6a\x5e\xa5\xa1\xd6\xa0\xad\xc6\xc6\xd5\xb1\x35\x9b\x19\x56\x22\x26\x76\x87\xca\xcc\x2e\xe5\xbd\x01\x2c\x46\x3a\x7a\xe8\x35\x55\x2e\xe7\x82\xc9\x37\xa3\xe0\x91\xf6\x28\x5e\xd2\x14\xee\x99\xd3\x9e\x16\x74\xaa\x92\x65\x25\xba\x4e\x6b\x96\xe7\xd9\xd0\xeb\x4b\x3c\xaa\x47\x39\x2c\xec\x4c\x02\xf5\xc1\x40\x12\x45\x76\xc2\xab\xb0\x41\x3d\x5b\x61\x8d\x57\xaf\x36\x2c\xc5\x82\x9e\x6e\xd4\x85\x7e\xa8\x6f\x1a\xc1\x78\x52\x6b\x55\x07\xbd\x71\x24\xde\xa6\xea\x17\x00\x92\x5e\x35\x95\xa0\x5f\x06\x48\xe4\xf2\xb6\x7d\xfa\x84\xbc\xfe\xcf\x0a\x48\x34\x35\xda\xb2\x13\x52\x3e\x28\x03\x47\x72\xdd\x41\xdc\x2a\x28\x28\x69\x1a\xaf\x9a\x90\x6a\x28\xdd\x76\x1d\x4e\x5e\x2d\x10\x09\x4f\x8a\xae\xa8\xe9\x66\x5c\xb7\xb4\x69\xae\xe6\xd4\x48\xa3\xa0\x52\x30\x8a\xdb\x56\x23\x29\xa5\xbb\xb1\x4e\xeb\x75\x3c\x0b\xf6\xa7\x03\xaf\x9b\x9f\x13\x7f\x00\x90\x10\x00\x80\x02\x0d\x91\x60\x49\x64\xa6\x2c\x1a\x02\x40\x14\x51\xc0\x64\x59\x27\x02\x64\xa6\x29\x20\x26\x99\x48\x30\x0d\xcc\x80\x40\x00\xa6\x54\x46\x86\x40\x31\x10\x14\x53\xa1\x2b\x18\xb8\x67\x37\x6a\xe7\xf6\xbc\xb3\x88\x82\x44\x8c\x8f\xdf\xc6\xb7\x2e\xdd\xcb\x0f\xaf\x20\xe5\x3a\xf3\x5f\x42\x4a\xfc\x90\x89\xed\x3c\x2f\x90\x21\x58\xa9\x64\x56\x3e\x6a\x08\x8c\x82\x2c\x66\x97\x46\xad\xf4\x38\xef\x85\xe5\x60\x3b\x9e\x12\x33\x5c\x61\x95\x9c\x19\x8d\x3f\x27\x2c\x94\x18\x97\xb3\xcf\x0d\xd5\x93\xc5\x97\xcd\x67\x4b\x2f\xb2\xe9\x3f\x9f\xeb\xb5\xe4\x68\xaa\x9d\x68\x09\x53\xb9\x33\x54\x27\x40\x9b\xe0\x18\xac\x45\xf0\xac\x10\xef\x9b\x89\xf8\x24\x62\x4e\x05\x25\x33\xb2\x90\xee\x65\x13\x6a\x84\x4f\x22\x6a\xc6\xcc\x52\x35\x48\x22\xf9\x46\x0f\x0d\x45\x15\xb5\xc4\x2e\x0e\xc7\xc2\x56\xcb\x2c\x67\xca\x61\x80\x5b\xc6\x5f\x17\xc0\x4b\x74\xd7\x7e\x4f\xc3\xcb\x4e\xa8\x71\xa5\x7e\xd5\x4a\xa5\x54\x58\x51\xb9\x32\x44\x5d\x7e\x62\x3e\xfd\xf9\xa7\x5f\x5e\xdd\x9f\xaa\x37\xc0\x5f\xe5\xad\xb5\x95\xb7\xa5\x1e\x0a\x45\x2e\x0d\xc7\x76\xe1\x67\x44\x43\x7a\xa5\xd6\x80\xe1\x5e\xad\x4a\x9d\x0a\x2e\x4f\x27\x7a\x55\x8c\x66\x12\xad\xe1\x40\x54\x8b\xa1\x76\x3c\x32\x44\xfa\xb4\x18\xaf\x2e\xda\x8b\x52\x01\xb4\xd4\x2d\xbd\x23\x9f\xd3\xe1\x58\xf8\xbe\xfe\xb9\x71\x42\x07\x27\xfa\x5f\xc1\xdf\x73\x35\xec\xd6\x47\x5a\x3f\x5c\x8a\x8d\xb2\xdd\x70\xb8\x5c\x0a\xdb\x66\xc3\xa8\x39\x09\xcd\x6a\x90\x6e\x47\xad\xbc\xc4\x4a\x02\xc4\xa9\xde\x48\x90\xba\x6a\x45\x56\xcb\x2a\x20\xc8\x56\x63\x93\x4a\xb0\x5f\xeb\x0f\x8c\x70\x3f\xcc\x4b\x76\xda\xc8\x26\x83\x4a\x1e\xe4\x73\xb5\xd7\xe0\x63\xfc\x28\x9d\x49\x04\x33\x9d\x31\x01\x32\x09\x0b\x04\xc8\x58\x06\xc6\x3c\xea\x92\xb9\xc2\x30\x27\x18\x19\x14\x2a\x86\x2e\x01\x8e\x21\x93\x29\x35\x65\x81\x42\x93\x73\xa4\x8b\x98\xf1\x25\xfc\xc1\x7b\x76\x5d\xaf\x82\x3f\x02\xb0\x72\x1c\xfe\x56\xa5\x7b\xbb\x5a\x4b\x53\xbc\x32\x8c\xf8\x39\xf0\x17\xdd\xf4\x9f\x0f\x2a\xdd\x7e\xb2\x0a\x5f\xc5\xb1\x9c\x37\x67\x24\x97\xe6\x5d\x4d\x07\xa5\x52\x1c\x59\xd3\xd7\x6e\x5c\x08\xda\xad\x9a\x93\xf5\xe4\x56\x16\x60\x98\xd7\xbb\x6d\xc8\x8a\xa5\xb2\xc9\xc3\xf6\xd8\x10\x72\x2a\x35\xdb\xe1\xda\xd4\x6b\x57\xd4\x9e\x9b\x1a\x75\x7a\xc1\xfe\xac\x13\x54\xeb\x1f\x07\x7f\x57\xea\xf7\xd3\xe1\xef\x86\x30\xf2\x63\xe0\x2f\x34\xb2\x45\xdb\x93\xd0\x6b\x28\xa7\x4d\x87\xf9\x17\xd1\x8e\x65\x9e\xdf\x80\x5c\x98\x59\x2e\xe8\x99\xe9\x48\xbd\x9f\xaf\xb6\x9c\x51\xf1\xb9\xb4\xa8\xff\x68\xf8\xbb\xa5\xff\x3b\xe1\x2f\x06\x8b\xf5\xa1\x4e\x1d\xfe\xe2\x05\x5f\x52\x13\x32\xc5\xf9\xc2\xb8\x92\x49\x77\xfa\xa9\xe8\x6b\xbe\x93\x8f\x5a\x41\xee\x62\x71\xa4\xca\x35\xa7\x11\x1c\x15\x63\x0d\x90\xc8\x14\x14\x29\x6b\x29\x6f\x79\x12\x1c\x3e\x6b\x19\x33\x0a\x23\xe5\x50\x75\x32\xc2\xd9\x72\x54\x4f\xa6\xb5\x60\xeb\x21\xf0\x27\x33\x93\x20\xd9\x80\xa2\x21\x33\x93\xeb\x8a\x2c\x31\xd9\x10\x15\x84\x65\x19\x61\x82\x28\xe1\xcc\xa4\x44\x52\xb0\xae\xcb\x04\x98\x4c\x94\xb0\x41\x38\x14\x20\x32\x29\x53\x74\x73\x7b\xa5\xf2\x23\xbc\x3f\xe9\x1c\xfc\x61\x80\x4e\x5c\x2e\xbc\x2e\xdd\xdb\x8b\xbf\xd7\xfb\x3b\x91\x99\x5a\xc2\x5f\xbe\x57\x58\x99\xd7\x03\xbd\xbf\x60\xec\x25\x9d\xc2\xcf\x85\xb7\xea\xeb\x28\x92\x6b\x93\x56\x2a\x02\x0b\xa3\xc6\x5b\xdd\xeb\x74\x86\x39\x1e\x1b\xbf\xd8\x4c\x49\xcb\xd2\xb4\x57\x16\x94\x1a\x95\x28\xe2\x20\xd3\x4e\x7b\xe9\x62\x21\x6e\xa7\xe2\x5e\x0b\x68\x34\x5c\xd5\x94\xb7\xb1\x17\x33\x7b\x95\x6a\x5c\xa5\xc5\x49\xfe\xeb\x78\x7f\xe5\x44\x39\xbf\x0a\xe8\xfe\x3e\xde\xdf\xbb\x0c\xd2\xa5\xc1\xe7\x9d\xde\x97\x21\x9d\xe0\x41\x3d\x28\xff\xe2\xb3\x0e\x3e\x4d\x32\x19\x3b\x28\x96\xa1\xaf\x52\xf9\x39\x36\x53\xdd\x5a\x23\x8a\x06\x19\x0b\x66\xb3\x5d\x45\xe2\x2f\xcf\x6d\x51\x78\x1b\x77\xa2\x95\x52\x09\x30\xa7\xed\xf4\xe4\x32\xd4\x66\xc2\x34\xa1\x59\x2d\xd7\x82\xe1\x72\xc1\xce\xd4\x4b\x62\xf6\x59\x60\xcf\x95\x4a\xbd\x15\x1c\xa6\x82\x8f\x09\x3e\x45\x49\xc6\xba\x81\x25\x05\x61\x51\x22\xc4\x30\x05\x88\x18\x81\xb2\x22\x50\xaa\x18\x92\x84\x25\x05\x10\x02\x45\xa8\x03\x24\x30\x48\xb0\xc4\x80\x68\x72\xc5\xa4\x06\x47\xd2\xe2\x2e\x67\x71\x79\x6f\xf6\x23\xbc\xaf\xf3\xf0\x23\x11\x70\xfc\x3a\xee\x75\xe9\xde\x01\x9e\x7b\xbd\xaf\x4f\x84\x9f\x1d\xef\x4b\x4b\x06\xc7\xcf\xe4\x2d\x05\xf8\x70\x32\x0d\x3d\xbb\x89\xb6\x56\xcf\xf5\xf5\x4e\x4a\xa9\x15\x8d\x9a\x67\x78\x76\x3a\xce\xb8\x87\x58\xbb\xd5\x95\xeb\x89\x4a\xe2\x4d\x1d\x14\x8a\xad\x7a\x69\x6c\xce\xec\x78\x22\x99\x60\xf9\x7e\x0d\xe3\x51\x1b\xda\xcf\x4e\x54\x49\xe2\x44\xbc\xdf\xfa\x42\xde\xd7\x67\xc3\xcf\x43\xbc\xaf\x47\xc0\xcf\x2d\xde\xcf\x9d\xf0\x93\xb7\xa3\x2f\xf2\x5b\x7a\x5c\xc1\x83\xb0\x96\xc2\x93\xbe\x56\x68\x3d\x37\x46\xe9\x31\x60\x89\x29\x07\x33\xd8\x9a\xb4\x01\x16\x7b\x30\x1a\x2a\x79\xad\x5e\x79\x90\x0e\xb1\x48\x32\xd8\xce\x2a\x2f\xc9\x56\xab\x6b\xf7\x40\xa8\x61\x3a\xaf\x38\x46\x3b\xd8\xd5\x05\xc7\xee\x5a\xf4\x41\xde\x0f\xa7\x8a\x84\x24\x11\x53\x51\xc7\x48\xe0\x26\x25\x44\xc0\x22\x97\x45\x19\x01\x62\x98\x40\x81\x84\x29\x54\x12\x19\xa0\x3a\x15\xb9\x81\x89\x24\x0b\x92\x09\xb0\xa0\x8b\xb2\x28\xf2\xe5\xb5\xfd\xe0\x9e\xeb\x1a\xae\x09\xfe\x64\x11\x1d\xbf\x51\x7d\x53\xba\x77\x56\x6f\x69\x0a\x57\x6e\x85\x5f\x16\xfc\x2d\x1d\xe1\x2b\xf7\xe5\x6e\x0b\x16\x17\x4d\x47\xdd\xac\xb8\x6b\x67\xb1\x0d\xbf\xf9\xd8\x4b\xa3\xfb\x56\x78\xe1\x21\x21\x22\x4f\x73\xca\x9b\x3a\xe4\xb1\x71\x3a\x26\x0f\x5e\xb9\xf7\x46\x8b\xac\xde\x26\xd5\xd8\xcc\x99\x4c\xc6\xba\x36\x98\x4a\x61\x1d\xb7\xde\x84\x96\x33\x28\x24\x82\x89\x22\xc6\xd9\x86\x1e\xed\x87\xba\xf2\xec\x2d\xd6\x27\xe1\x6e\x42\xd6\x13\x52\x5e\x2d\x5f\x02\x57\xbb\xfa\x39\x0e\x57\x0b\xfe\xbf\x7a\xb0\x98\xff\x19\xfc\xa5\x86\x61\x4f\x38\xc5\xdf\x99\x60\xf2\x4a\x1b\x4a\x94\x43\xcf\x2b\xe2\xb7\x07\x93\xda\x7d\xfd\x67\xef\x0b\x26\x4d\xa5\x5f\xca\xc4\x14\x29\x95\xaf\x8d\xb5\x17\x31\x1d\xea\x49\x9c\x4c\xcc\x11\x1f\x62\x31\x33\x4c\x00\x2b\x36\xad\x9b\xc9\x71\x38\xa4\xb8\x45\x33\xd6\xca\x8c\x5f\xc3\xb9\x62\x68\xc4\xb4\xae\xd6\x4b\x39\x36\xea\xb9\xb4\x9e\x2c\x8d\x53\x69\xae\x4f\xb2\xf9\x81\xe7\x0e\xda\x6a\x30\xff\x10\x38\x95\x00\xa6\x58\x34\x44\x13\x48\x0a\x40\xa2\x8c\x15\x62\x30\x1d\x9b\x0a\x01\x82\x22\x73\x46\xb8\x24\x19\x14\xca\x0c\x32\x45\x10\xb0\xce\x04\x9d\x62\x42\x44\xc8\x75\x53\x61\x08\x2d\xe1\xf4\xae\xdf\xce\xbe\xc6\x9b\x23\x02\x3e\x01\xa7\xeb\xd2\xbd\x63\xc6\xf7\xc2\xe9\x09\x6f\x6e\x69\x0a\x57\xee\x4e\x7e\x0c\x9c\x46\x22\xd1\x54\x34\x12\xa9\xe9\x5a\xb8\xc0\xba\x90\x47\x66\x79\xb5\x94\x19\xc6\x46\xaf\xd9\x17\x37\xe2\x0c\x5f\xdd\x69\x3f\x93\x99\x44\xe9\x73\x3a\x65\xe9\x99\x7c\x22\x15\xae\x55\xa9\x19\x92\xaa\x24\x99\x4e\xe6\x5f\xda\x9a\x90\x16\x4a\xa9\x69\x83\x8f\x5e\xb2\xc4\xab\x0f\x82\xa3\xc9\x44\xfd\x38\x38\xfd\x92\x5b\x0f\xf9\x9f\xc1\xdf\xe5\x70\xba\xf5\x0e\xef\x84\xb3\xf4\x7d\xde\x61\xb9\x5c\x77\xeb\xe5\x0a\x73\xf3\x99\x08\x2c\x35\xa4\x5a\x42\x0d\xa6\x61\x97\x63\x5b\x7e\x9e\x54\x47\xfd\xd7\xb7\x68\x5d\x10\xd5\x86\x23\x4d\x46\x09\x17\xa8\x5d\x37\xc3\x1a\x43\x92\x6a\xeb\x13\x7b\x32\x0c\x3f\x6b\xa5\xfc\x5b\x21\x3d\x8e\xf4\xb0\x4c\xe4\x19\xb0\x8c\xa8\x1c\x7e\xd0\xce\xa8\x01\x15\x45\x22\x0c\x18\x94\xc8\x3a\x65\x90\x8b\x50\x51\x0c\xa0\x0b\x80\x18\x8a\x82\x0d\x08\x4d\x13\x31\x84\x4d\x24\x23\x51\x37\x44\x62\x0a\x26\x23\xc4\x90\x18\x34\x10\x53\xa4\x25\x9c\x89\x0f\x82\x33\x74\x16\xce\x10\xc6\xc7\xcf\x9e\xae\x4b\xf7\xde\x50\xb8\x17\xce\x4e\x1c\xb6\xb8\xcd\x3b\xbc\x29\x98\x3d\x07\x67\xa9\x81\x90\xe1\x21\x97\xf6\x51\xdd\xe9\x7b\x6e\x3a\x91\xaf\x64\x53\xb3\x6c\x29\xf7\x1a\xd6\xe5\x62\xba\x14\x6a\x44\x6d\xb3\x8f\x8a\xed\x32\x36\x8d\x9e\x98\xcb\x59\x3c\x3e\xc8\x67\xbc\x2e\x88\xf4\x0b\x15\x5e\x9e\xb2\x7a\x0d\x38\x6e\x15\x26\x63\x20\x96\xd7\x13\x58\x92\x62\x13\xe1\xeb\x78\x87\x9f\x12\xcc\xde\xe1\x1d\xde\xce\xdf\x4f\x80\xb3\xd4\xf2\xa0\xc7\xd6\xdb\x7c\xff\x39\x05\x67\x23\x33\x0f\xa4\xe4\xf4\x55\xef\x59\x23\x0a\x27\x93\x5e\xb0\x2c\x8d\xe3\x28\xfd\x6c\x67\xc6\x5e\x7c\x9a\x4e\x74\x69\xfb\x59\xef\x25\x23\xa5\xa1\x32\xab\x19\xe4\x39\x21\x59\x4c\x85\xb0\x54\xae\x36\x22\x15\x54\x8a\x80\xb6\x59\x1d\x4d\xf5\xba\x6d\x96\x59\xd0\x1d\x38\x9d\x96\x19\x7e\x8c\x77\x86\x90\xc4\x29\x84\x0a\x10\xb9\x6e\x0a\xc0\x34\x24\x5d\xa4\x12\xc3\x82\x8e\x14\xca\x21\x31\x45\x59\xd1\x89\x20\x30\xa4\x63\x46\x25\x81\x62\x85\xc8\x14\x89\x5c\x67\x44\x36\x17\x3f\xf4\x25\xad\x73\x6d\xf7\xc3\x19\x3e\x07\x67\x0a\x80\xca\xf1\x5c\xdb\xba\x74\xef\xe5\xa6\x7b\xe1\xcc\xef\x8d\xdf\xed\x9d\x7d\x08\x9c\x45\x44\xa9\x5f\x9f\x15\x52\x7a\xa5\x24\xc1\xbc\x17\x19\xd5\x51\x39\x23\xb8\x8e\xa2\x19\x23\x4d\xec\x79\xea\x8b\x32\x53\xa7\x56\x26\x3b\x1e\x75\xf5\x4a\x29\x4b\xdf\x08\x1e\x85\x6a\x43\xad\xd1\xab\x81\xc8\x40\x9b\xd6\xc3\x8d\x49\xb6\x91\xa8\x56\x6a\xa6\xab\x33\x7b\xac\x57\xca\x93\x8b\x0e\x86\x7c\x8e\x77\xf6\xd9\x70\xf6\x79\xfc\xfd\x04\x38\x4b\x2c\x39\x6d\x1d\x52\xc4\xbb\xf1\xdd\x1d\xde\x25\x9c\xd5\x4c\xab\xd1\x49\x68\x9e\x57\xc9\x75\x1a\x21\xa1\x8a\x3a\xbd\xbc\x58\x9c\x8d\x85\xc2\x4c\x2a\xf1\xaa\x10\x7e\x11\xe3\xe1\x68\x5c\xc0\xcf\xb8\xe0\x55\xd2\xc8\xc9\xbd\xbd\x4a\x09\xde\x2d\xf4\x2b\x66\xb9\x6a\x94\x22\xad\xcc\x40\x45\xdd\x5e\xa3\xc2\x9e\xa7\x1e\xb4\x14\xaf\x52\x7a\xd0\xc1\x0d\x6c\x1a\xba\x61\xea\x06\xe3\x02\x65\x98\x43\x46\x25\x19\x40\x2c\x8a\x92\x04\x44\x85\x48\x4c\x16\x45\x99\x99\x26\x55\x0c\x24\xca\xa6\x2e\x20\xac\x98\x44\x22\xba\xc8\xa0\x89\x4d\xf8\xf4\x2d\x80\x1e\x77\x6e\xed\x9c\x77\x06\x05\x08\xc1\xd1\x83\x1b\x9b\xd2\xbd\x37\x2c\xef\xdd\xb9\x3c\xe1\x9d\x2d\xa7\xe7\xed\xc1\xe3\x8a\xa0\x59\x6b\x2f\xff\x22\xea\xd1\xa3\xa0\x1b\x38\x0c\xaa\x53\xb7\xd5\x7e\xd3\xda\xe3\x7c\x3f\x1e\xaa\x18\x46\xa7\x68\xcf\x94\x3c\x4c\x95\x3b\x35\xbb\x87\x61\xa2\x17\x64\xc4\x6d\xf7\x0b\x93\xd7\xac\x52\x9b\xf1\xde\xb0\x58\x47\x48\xd2\x59\x3f\xf6\x8a\xa7\xaf\x06\xee\xd4\x1b\xf6\x44\x41\x48\x93\xe4\x5c\xf5\x35\xa4\x99\xbc\xd2\x6e\x87\x26\x7f\x5d\x02\x5d\x7e\x5d\xa8\xb7\xe8\x76\xf9\xd1\x3e\x45\x77\xa7\xb7\x3e\xca\xdb\xe7\x2f\x2c\xc3\x76\x0c\xca\x37\xeb\x7c\xb1\x15\xd2\x9a\x6c\xe4\x0d\xfa\xb7\x56\x56\xac\x1c\xea\xfa\x40\xee\xf0\xd1\x3b\xb1\xef\x8f\x46\x9f\xce\x1d\x46\xee\xeb\x5f\xf7\x7b\xa7\x17\xf6\xbf\x82\xf3\x8f\x9a\x80\x8f\x78\x9f\x41\x82\x06\x35\x05\x9d\x4b\x94\x12\x2c\x9b\x26\x25\x22\x34\x89\xa9\x40\xa4\xcb\xc8\x30\x89\xa2\x23\x0c\x10\x82\x44\x00\x98\xeb\x32\xa7\x92\x4c\x21\x41\x0c\x2a\x40\xa1\xd8\x58\xc2\xf9\xa3\xce\xe1\x9d\x87\x73\x49\x16\x8e\xfe\xba\xfa\xa6\x74\xef\x35\xf7\x7b\x77\x82\xcf\xc1\xf9\xf2\x73\x47\x6e\x2b\x8b\x9c\xe4\x8e\xa9\x26\x0f\x5a\x31\x5d\x07\xeb\x41\x95\xcf\xb2\x7a\xb4\xdd\x9d\x4c\xed\x41\xed\xa5\x12\x7f\xe9\x18\x66\xc7\x89\x65\x59\x3b\x1d\x8e\x2b\x65\x79\x24\x25\xa7\x95\x8e\x2a\xd6\x62\xaf\xdd\xaa\xa4\x65\x26\xb6\x93\x47\xfd\x46\xb8\xd0\xe9\x40\x02\xa9\xa1\x46\x89\x91\x36\xab\xd1\x71\xdd\x8c\x18\xf9\x4a\x85\xd5\x30\x1c\xdc\x05\xe7\xd7\x06\xa6\x5b\xdd\x7e\xb8\xee\x2e\x86\xf3\x2f\x2c\xc3\x76\x0c\xca\x37\xeb\xfc\xe3\xe0\xfc\x21\x3b\xdb\x77\xc0\xf9\x2d\xfd\xdf\x09\xe7\x1f\x35\x01\x1f\xb1\xb3\xae\x00\x82\x0c\x60\x30\x20\x12\x03\x19\x00\x61\x88\x90\x08\x0c\x53\x47\x50\x36\x90\xa0\x2b\x3a\x91\x4c\xca\x28\x05\x54\x42\x86\x2c\x29\xa6\x4c\x4d\x05\x4b\x32\xe3\x86\x84\x84\x25\x9c\x3f\xea\x5c\xe1\xb9\x64\x03\x14\x64\x22\x93\xe3\x70\xbe\x2a\xdd\xbb\x6b\xe4\x5e\xef\xfc\x44\xb2\xe1\x31\xde\xf9\x66\x3a\x07\xf3\xea\x25\xde\x79\x2b\x0e\xdf\xac\xb2\x35\x8e\x7a\x59\x36\x90\x66\x6d\x10\x4e\x7a\x2e\xee\xbe\xc5\xa4\x6e\xc3\xb1\x35\x2d\xa6\x96\x93\xee\xb0\x13\xf4\x48\xc2\xe1\x13\xf7\xd5\xa9\x83\x71\x76\x3c\x78\x41\xb6\xfe\x3c\x45\x5a\xb4\x3f\xd4\xb2\x11\x1a\x0e\xbe\xf4\xe3\x99\xb4\x28\x66\xd5\x62\x7f\xb6\x36\xd5\x4d\x7f\x1f\xee\x9d\x7f\x8e\xee\x3e\xd6\x3b\xff\xc4\xf1\xff\x10\xef\xfc\x1d\x66\x5d\x7a\x50\xe9\x4e\xef\xb8\xe1\x4f\x76\x5c\x07\xa7\x1f\x35\x01\x1e\x00\xa7\xcc\x60\x00\x01\x93\x51\x11\x4a\x50\x01\x90\x41\x93\xcb\x80\x0b\x80\x00\x93\x08\x44\xc0\xa6\x40\x00\xc5\xc0\x30\x25\x59\xc2\x44\x16\x75\xc8\x0d\x80\x74\x1d\xe8\x94\x8b\x8b\x4c\x29\x7a\xdc\x39\xc9\xb3\x70\x0a\x80\x70\xfc\x9c\xe4\xa6\x74\xef\xc2\xa5\x7b\xbd\xe3\x73\x70\xba\xfc\xdc\xee\x1d\x85\xa2\x31\x6d\x35\x45\x17\x5d\x25\x0e\x19\xd2\xae\x77\xfc\x9a\x9b\x62\xe5\xb5\x18\x06\x24\x23\xd6\x93\xe8\x8d\x65\xde\x06\x0d\x36\xac\x05\xbb\xba\xdd\x4e\x94\x46\xa1\xe4\xa0\xde\x13\x58\x3e\xa7\x6a\x2f\xb1\xea\x54\x25\x66\xc6\xac\xb4\x5a\x95\x86\x17\xa5\xd1\x2e\xa9\xa7\x8d\xd8\x8b\xc4\xc6\x41\xf9\x8d\x47\x23\x4a\x51\xcb\xdb\xc5\x7c\xb0\xf5\xd9\xde\x71\xfe\x53\x74\xf7\xb1\xde\xf1\xe7\xc8\xb0\xed\xea\xd1\xde\xf1\x23\xe0\xf4\x16\xef\xf4\x4e\x38\xfd\xa8\x09\xf0\x88\x9d\x7d\x06\x20\x27\x0a\xd3\x15\x2e\x48\x48\x02\x5c\x94\x0d\x59\xc1\x5c\xa7\x94\x03\x40\x98\x88\x4d\x51\x37\x15\x66\x30\x91\x31\x2e\x51\x2e\xcc\x7d\x53\x5d\xc6\xc4\x9c\xe3\xae\xb9\x84\x53\xf4\x20\xef\x54\x3e\x0b\xa7\xa2\x24\x9e\x80\xd3\x55\xe9\xde\xad\x73\xf7\x7a\xa7\x91\xe3\x26\xf7\x10\xef\x64\x7b\xcd\x54\xf8\xe0\x39\xd3\xe5\x67\xc7\x3b\x45\x35\x1b\x87\x2a\x92\x23\x5b\x91\x98\x39\xe3\x31\x38\x04\x05\xb7\x33\xcd\xce\xec\x5a\xf4\xb5\x6d\xf7\x45\x5d\xd3\xdb\xa1\x34\x2f\xe5\x33\x49\xf8\x5c\xae\x87\x66\xd5\x41\xbf\xdd\x28\xe0\x59\xc1\xaa\xb6\xb8\x92\x2e\x9a\x46\xa4\x6d\x8d\x41\x8a\x9a\xd4\x8b\x3c\x17\xab\xcf\x9a\x7a\x0f\x9c\xde\xe4\xd9\x95\x3f\x45\x77\x1f\xeb\x9d\x7e\x8e\x0c\xdb\x31\x78\xb4\x77\x5a\xf6\xf7\xf2\x49\xde\x69\x7d\xb9\x24\xb5\x7c\x63\xf0\x4e\x5e\xff\x67\x05\xa7\x1f\x35\x01\x1e\x91\xbb\x55\x44\x22\x01\x9d\x60\x49\x37\x24\x83\x8b\x8c\x19\x06\xe4\x90\xea\x92\x28\x13\xdd\x64\x92\x24\x72\x83\x61\xce\x39\x41\xba\x82\x18\x16\x25\x46\x91\x21\x08\xba\x60\xb0\xe5\x85\x0d\x68\xf9\xbb\xc6\x8f\xf0\x4e\xcf\xc3\x29\xc2\x32\x3c\x0e\xa7\xab\xd2\xbd\xab\x37\xef\xf5\x4e\xcf\xc1\xe9\xf2\x73\xef\xb9\x3f\xf5\x90\xa9\xee\x7c\x76\xbc\xd3\x2c\xce\x91\x91\xdc\xf6\x38\xea\xa7\xda\xe9\x04\x17\xb5\xb0\x1e\x8d\xf4\x83\xb1\x64\xeb\xa5\x9b\x11\xc4\xa8\x39\x9e\x50\x5b\xe8\xd6\x69\x74\x2c\x4f\x62\x75\x7b\x94\x7c\x79\x6b\x57\x83\xa9\x91\xa8\x3e\x7b\x41\xa9\x4d\x43\x74\x0c\xe9\x0b\xcb\x82\x84\x95\x09\xe3\x69\x0d\x80\xbb\x82\xfd\x9b\x3c\xbb\xfa\xa7\xe8\xee\x63\xbd\xd3\xcf\x91\x61\x3b\x06\x8f\xf6\x4e\x1f\x01\xa7\xb7\x78\xa7\x77\xc2\xe9\x47\x4d\x80\x47\xbc\x93\x2d\x00\x6e\x52\x41\x17\x20\xc4\x5c\xc1\x80\x89\x80\x99\xb2\x64\x4a\x90\x40\x85\x40\x5d\x12\x24\xa2\x43\x5d\x21\x92\xc2\xa9\x68\xca\x5c\x80\x54\x02\x04\x01\xc0\x64\xaa\x18\x73\x5f\x10\xaf\xdf\x4a\xba\x1f\x4e\xc9\x39\x38\x85\x22\x42\xc7\xb7\xc2\xd6\xa5\x7b\xf7\x0f\xdf\x0b\xa7\xd1\xe3\x26\xb7\xf4\x4e\x6f\x3f\x78\x15\xa9\x94\x85\x95\xdd\x5c\x7b\x81\x68\x78\x44\x67\xad\x2d\x3f\xa1\x83\x6f\x98\xec\xbc\x64\x99\x6d\x69\x6f\x3d\xc7\x8c\xcf\xde\xea\x62\xb6\x32\xaa\xb2\x42\xb6\xdc\x91\xc5\x59\x2a\x18\xf7\x2a\xa0\x3f\x6c\xf4\xaa\xd9\x6c\x23\xdd\x42\x98\x54\x3a\xaf\x00\x53\x97\xcf\x4a\xad\x71\xb9\x1c\x1c\x57\xfb\xc1\x7c\xb6\xc3\x52\xa9\xb0\x5b\x97\xc7\x65\xb1\x58\x20\x05\xb5\x65\x85\xd2\x6a\xf7\x93\x21\xd8\xf8\xc2\xfa\xfe\xeb\xcc\x0b\xa4\x75\xf5\x3e\xe8\xfe\xca\xb2\x6f\xe4\xdd\x99\x2b\xb7\xc0\x6c\x69\x49\xb9\xb5\xf9\x9f\x7f\xee\x9d\x84\xd9\x6d\xdb\x85\xda\x1e\x0d\xf9\xef\x97\xb9\xd3\xdb\x75\x77\xea\xa2\x6a\x6f\xfb\xaf\x5f\xd1\xff\x6a\xc9\xc1\x6a\x29\x5b\xf5\x48\x27\x95\xe9\x18\xa8\x8a\x1a\x40\x43\xc5\xdc\xd8\x8c\xbb\x9a\x05\x6a\x55\xda\xeb\x57\xea\x12\xea\xce\xc2\x03\x67\x5a\xcd\x3a\xb5\xe1\xeb\x54\x4e\x64\x43\x4a\x21\x1f\x55\x68\x3d\xa2\xe2\x8c\xe0\xba\xd9\x69\x67\xa4\x94\x58\x22\x36\xd5\x42\xa1\x78\x7c\x12\x7a\xcc\xd9\x60\x02\xb9\xae\xeb\x0c\x09\x50\xe7\x50\x41\x44\x80\x84\xc8\xa6\x29\x20\x13\x19\x06\x21\xc4\x90\x44\x24\x53\xd1\xc0\x06\x01\x26\xd6\x01\xd3\x19\xe3\x80\x8b\xa6\x2e\x2a\x44\xd1\xc1\x72\xc9\x81\x0f\x4a\x88\x9c\x5f\x72\x90\xac\x1c\xdf\xae\x5b\x97\xee\x5d\x54\x7f\x6f\x42\xe4\xec\x92\x73\x7b\x40\x1c\x09\x55\xb4\x15\xaa\x5c\x0b\x03\x6a\x0d\x48\x4b\x93\xcb\x1d\x37\xbf\x9d\x6b\x45\x12\x85\x46\xf1\xd9\xcb\xe4\x2b\xa9\xc9\xd0\x48\xe5\xdb\xac\x93\x60\xb9\x54\xfb\x2d\xed\x25\x85\x1c\xa9\xa7\xfa\x9d\x92\x14\x1c\x47\x3b\x76\x54\x36\xd1\x8b\xa1\x78\xcf\x6e\xc1\x7c\x45\x09\xb1\x16\x95\x64\x6d\x32\x78\x2e\xbe\x65\x07\x86\x52\xa9\x48\xf9\xc9\x38\x95\x62\x23\xd7\xba\xf0\xcd\xae\x07\x26\x51\x5a\x5f\x58\xdf\x57\x2c\x39\xff\x38\xd9\xd5\x03\x30\x7b\x4b\xa2\xe4\xa3\x96\x9c\x87\x24\x6d\xee\x58\x72\x6e\xe9\xff\xce\x25\xa7\x17\xe9\xa5\xb0\x00\x82\xe5\x71\xa8\x37\xf1\x42\x11\x98\xee\x09\x64\x14\x4b\xcf\x04\x27\xff\x32\x6d\x8d\x68\x26\xd7\x8a\x12\x9a\x6d\xe9\xde\xcb\x40\x79\x83\x22\x9e\x46\x9e\x9d\xee\x80\x19\x7a\xc7\x2d\x85\x4c\x94\x4a\x63\xf6\x06\x2a\xb5\x76\x38\x44\x5c\x0f\xe2\x59\xea\x51\x6f\xd7\x21\xa6\x33\x93\x89\x54\x57\x80\x29\x51\x04\x29\x00\x3a\x55\xa0\x81\x05\x51\x94\x74\x83\x0a\x4c\xa2\x94\x29\x08\x98\x5c\x64\x00\x29\xba\x28\x8b\xd4\xa4\x3a\x05\x58\x84\x9c\xae\x96\x1c\xf1\x41\x51\x8e\x72\x76\xc9\x21\x02\x3a\xb1\xe4\xac\x4a\xf7\x7e\xd1\xe4\xde\x28\x27\xe6\x1b\xd3\xaf\x11\xe5\xb4\xdb\xd3\xe8\xae\xe7\x79\xd0\xfc\x76\xa2\x9c\xb0\x1b\x4b\xbd\x85\x5f\xe4\xd7\x17\x2f\x48\x23\xde\xf3\x38\x45\xdc\xf1\x40\x9a\x89\xaf\x40\x8d\x4c\xd3\xf1\xfa\xa8\x44\x32\xe9\x37\xdd\x9d\x54\xdc\x50\xd9\x48\xc5\x41\xbe\xd7\x9d\x06\xf3\x55\x2f\x28\x17\x3b\x76\x38\x9f\xf6\x18\x66\x09\x8d\x66\xe1\x68\xd8\xcf\xd5\x94\x9c\x98\x53\x2f\xba\xc9\xea\x81\x51\x4e\xf7\x0b\xeb\xfb\xa3\xa3\x9c\xaf\x2c\xbb\xfa\x51\x51\x8e\x7f\xee\x9d\x5f\x72\xf2\x8f\xe2\xa5\xa2\x6d\x79\x59\x44\x98\xd7\x41\x7e\x76\x62\x8c\xd3\xb9\x97\x91\xf3\x2c\x44\xec\xaa\x88\xc9\x78\x36\x7b\x36\x3b\x29\xee\x94\xd5\x9a\x36\x69\x5b\x28\x37\x11\xde\x32\xa3\xb7\x60\x75\x92\x28\x4c\xdc\x4e\x25\x54\x2d\x69\x91\x20\x15\x62\x5e\x32\xdb\xca\xa8\x33\x20\x0e\x85\x6e\xc1\x96\x29\xee\xd7\x15\x53\x78\x31\xc8\x83\x6e\xfb\xa2\x12\x40\x3a\x50\xa0\x29\xca\xa2\x40\x45\x6e\x02\x51\x11\x44\x64\x8a\x06\x96\xb9\xa8\x03\x81\x4a\x9c\x62\xc5\x34\x11\x90\x90\x29\x52\x19\x63\x80\x0c\x40\x09\x94\x04\x81\x19\xca\x12\xf2\xa5\x07\x45\x19\x67\x21\x5f\x04\x10\x1e\x7f\x65\x67\x5d\xba\xf7\xd3\x53\xf7\x46\x19\x67\x21\xff\xa7\x78\x7e\xdb\x64\x43\xf9\xb8\xf9\xed\x44\x19\x99\x5c\xbd\x53\x9a\x95\xe4\x97\x7e\x9d\x52\x98\xef\xea\x91\xb7\x70\x5f\xe8\xa4\x86\xa9\x70\x3b\xe1\x35\xd4\x67\x27\x91\x49\x14\xe4\x62\xc9\x1c\x05\x8d\x72\xa2\x66\xa0\xea\x73\x79\x52\x75\x5f\x26\x71\x11\x5a\x93\x91\x64\xf1\xb2\xd8\xa3\x78\x98\x88\x77\x27\xf1\x17\x81\xbd\x62\x96\x9f\x7c\x72\x94\x71\xef\xfd\x1a\x1f\xa9\xef\x8f\x8e\x32\xbe\xb2\xec\xea\x47\x45\x19\x0f\x82\xfc\x5b\x78\xb9\x13\xf2\x05\xc5\xca\xe4\x12\xb9\xf1\x73\xa3\x3d\x74\x1a\xa1\x82\x5b\x4b\x67\xf5\x62\x7a\xd4\x75\xb3\x5a\x1f\x74\xc3\xd8\xed\x0a\xbd\x98\x97\xc8\x3c\x4b\x91\x69\xbe\xc7\xde\x7a\x3a\x2a\x05\xe9\xdb\x8b\xda\x31\x69\x2a\x24\x5b\x09\x54\xe2\x15\xe7\xb5\xdb\xb5\x4a\x6a\xe7\xa5\x00\x9d\x21\x08\x3f\x06\xf2\x25\x22\x42\x85\x98\x92\x40\x65\xc5\x94\xb0\x89\x89\x64\x48\x80\x41\xc8\x24\xa6\x08\xd0\x04\x4c\x34\xb9\x8e\x44\xaa\x73\x84\x10\x60\x22\x65\x58\x61\x06\x11\xa1\x24\x10\x01\xad\xf6\x32\x1e\x73\xd2\x06\x2f\xd0\xfe\x34\xe4\x8b\x32\x39\x7e\xd2\x66\x5d\xba\xf7\x1b\x81\xf7\x42\xbe\xff\xce\x94\xaf\x01\xf9\xdb\x1f\x43\x9b\x1d\x37\xbf\x1d\xc8\xcf\x6a\xb9\x6e\xf6\xc5\x7b\x2d\x49\xdd\x7c\xf0\x2d\xd3\x2b\x65\xf9\x5b\xc3\xb3\x66\xfa\x48\xeb\x2a\xfd\x74\x7f\x1a\xed\xa4\x7a\xfd\xd8\x88\x57\x49\xde\x2b\x17\xa5\x04\xc8\x8a\xd5\xf6\x4c\xca\x24\xdb\x64\x3c\xe9\xdb\x83\x64\x1e\x8c\xd2\xc3\x50\xfa\xe5\xad\x5e\x78\x1b\xf5\x3b\x45\x6d\x74\xcf\x5e\xc6\x4d\xb0\xe7\x7e\x61\x7d\x7f\x34\xe4\x7f\x65\xd9\xd5\x8f\x82\xfc\xf7\xf7\x15\x7d\x1a\xe4\xbf\xe3\xe5\x3a\xc8\x97\xf2\xcf\x79\xf9\x19\x0e\x73\x56\x41\x8d\xa5\x61\x25\x8d\xe4\x4c\x1f\xa6\x12\x23\xa9\x58\x82\xf5\x99\xae\xd1\xf4\xa8\x5a\xe7\x08\xe9\xd3\x10\x28\xa4\x5a\x83\xb2\xcc\x68\x2c\xd5\x12\x5e\x63\xb3\x97\x10\xb5\x8c\x61\xb8\x2a\xcd\xba\xf1\xb7\x97\x4c\x3b\x96\xc5\x34\x13\x2f\x4a\x0f\xda\x4b\x60\xa6\x61\x0a\x40\xe1\xc4\x90\x01\x54\x04\x41\x22\xcc\x60\x02\x97\x4c\x2a\x00\x8a\x99\x0c\x65\x22\x12\xac\x8b\x1c\x53\x59\x11\x75\xc9\x40\x22\x63\xb2\x8c\x80\xc1\x20\x51\xf8\xca\xcb\x7f\xcc\x69\xa0\x4b\x20\x1f\x0b\xf0\xf8\xf6\xf5\xba\x74\xef\xc7\x5c\xef\x4d\xec\x9c\x85\xfc\x9f\x11\x6c\x87\x70\x5e\x66\x3b\xfc\x04\xcf\x25\x76\x12\x38\xea\xf6\x93\x53\xde\x69\xc7\x8b\xfd\xe4\x28\x15\x67\x11\xcc\xac\x69\x78\xa2\x5a\xd1\xd7\x68\x28\x3a\x4d\x20\xb1\x9a\xb5\x23\xea\x74\x54\x66\x43\x75\xec\x88\xd3\x0a\x8a\xb7\xc7\x2f\x83\x0e\x61\x2d\x54\xf0\x82\x6f\x3a\x49\xd6\x43\x76\xb6\x5e\xb2\xf4\x48\x21\x9c\x76\x82\x93\x8b\x2e\xdd\x7c\x60\x62\xe7\xde\x6b\xa7\x3e\x52\xdf\x1f\x9d\xd8\xf9\xca\xb2\xab\x1f\x95\xd8\x79\x10\xe4\x3f\x84\x97\xeb\x20\x7f\x60\xd3\x59\xdd\x89\xe0\xac\xd6\x4e\xd6\x5f\x25\xb7\x2d\xd4\x86\x30\xa5\xe5\xd4\x50\x9c\xda\xf5\xb8\xae\x0d\x06\xac\x8e\x5b\xe5\x70\x14\x15\x60\x37\xf4\x3c\x36\x23\xb5\xae\x15\x7d\x79\xe6\xb9\x29\x0c\xf7\xa2\x42\x2c\x33\x9e\x0c\x5b\xc9\x16\x6a\x67\x13\x6e\x45\x4b\xcf\xdc\xd8\xc9\x8b\x3f\xf7\x7f\xaf\xba\x65\x3b\xc3\x66\xdf\x6a\x39\x74\x89\xf7\xbe\xe7\xe6\xb0\xcb\x67\xeb\xdf\x7f\x0e\x65\x33\xc5\x52\x41\x8d\x67\xce\xfd\x54\xb5\x9a\x2a\x69\x85\xd5\xcf\x45\x67\x33\xa9\xba\x9f\xea\x2f\x81\x40\x20\xa0\x86\xc3\x3b\x14\x0f\x76\x1c\xc8\x15\xe2\x69\xb5\x50\x0f\x24\xb5\x7a\xe0\x37\x8b\x1d\xfd\xb5\x6d\xea\xba\xdc\x73\x7d\x8f\xcb\x7f\x9a\x86\xcd\xf8\xea\x4f\x6f\x36\x5c\xff\x69\xb9\xee\x88\x3b\xcd\x87\x48\xb7\xdf\xed\x21\xe1\x6e\x62\x2c\x50\xce\xc4\xf3\x65\x2d\xf0\xdb\xb6\xfa\xb7\xc0\xb6\xfe\xfa\xef\x65\x83\x2b\x55\xf3\x98\x61\xbd\x5a\xf0\xab\x06\xd5\x1e\xf2\xa5\x31\xec\xff\x18\xfb\xe9\xe2\x07\x4b\x76\xb8\x93\x53\x92\x9e\x60\xeb\x62\xc9\x8f\xfe\x10\xfd\xd9\x5f\x7a\x7f\xac\xf4\xc7\xba\x39\x25\xff\x49\xd6\xce\x6a\x60\x69\xd2\xfa\x6c\x65\xd5\x6b\x51\xe2\x99\xb0\x56\x3b\x23\x45\xa8\xa0\xa9\x25\x6d\x59\xd5\x4f\x27\x90\xcd\xf8\x27\x44\xb9\x18\xcf\x44\x03\xba\xe7\x70\xbe\x9e\x61\x47\x66\x92\x3e\x6b\x52\xc3\xb0\x47\x03\xef\x66\x76\xb6\x24\x76\x39\xd9\x73\xb4\xf7\xf9\x59\x56\xfe\x16\x58\xfd\xd1\x74\xf9\xeb\x88\x0f\x0c\x7e\x88\xb9\x36\x75\xdb\xf7\x70\x36\x6f\x7f\x19\x5b\xbb\x63\x3b\x6f\x75\x88\x9b\x1e\x67\xad\x3b\x06\x6e\x43\xe1\x32\x8e\x96\x75\x37\xea\xf9\x16\xa0\xc3\x61\xcf\x32\x96\x13\xd0\x76\xd8\x11\x60\x6c\xf2\xb9\x6d\x2c\xca\x6f\xe0\x74\x85\xcb\x4b\x86\x7d\xe4\x76\xd9\xe6\xa6\xc9\x0d\xbf\xa9\xbd\xc7\x09\x8b\x7d\x0b\xfc\xba\x68\xfc\xeb\x31\x66\x2d\xf6\x20\x36\x2d\x76\x31\x83\x6b\xd3\x9b\xb3\x77\x03\xd3\xf6\xb0\x39\x7c\x14\xdf\x2b\x5a\xbb\xac\x1f\x59\x1c\x6e\x92\xe4\xb0\x00\xde\xf4\x71\x02\xac\x68\x1d\xb1\xe9\x1b\x45\xd8\xa5\x70\x48\x08\x7b\x38\xb7\xca\xb6\x7d\x93\x0c\x2b\xe6\xb7\x34\x6e\x55\xfe\x69\x45\xbb\xab\xd9\xbe\x80\xea\xfb\x75\xbd\x4f\x6e\x97\xe5\xe5\xf7\x3e\x1e\x0f\x73\xb4\xab\xd7\x47\xb1\xf5\x8e\xe6\x65\xf0\x76\x88\x41\x6f\x39\x24\xde\x3d\xc3\xba\xa5\x71\xbb\x49\x9e\x33\x3f\xcf\x61\x0b\x54\x34\xcd\x3b\x96\x83\x3d\x2a\x3e\x5e\x19\xf7\x71\xb6\xa8\x74\x94\x97\xc5\x04\xe2\x4e\xb3\x67\xdb\xdd\xd1\xf0\x3e\x8e\xf6\x69\x9d\xe3\x6b\x5d\x7b\xe5\x65\x1c\xe1\x6f\x48\x2d\xa7\xe9\x59\x7d\xfe\x10\x0e\xfd\xd4\xce\xf1\xa8\x53\x77\x13\x81\xb0\x6f\x01\x3f\xcb\xdf\x02\xab\x89\x65\xf4\x6c\x97\xb3\x26\xf5\x8e\x08\xf1\x80\xd9\xb2\xa2\x73\x8e\xe3\x2b\xd7\xa4\x39\xd5\x87\x69\xf7\x0a\xc5\x9e\xd5\x9b\x35\x60\x7c\xda\xf4\x01\xbd\xdb\xb4\x07\x4d\xca\x98\xc3\x5d\xf7\x5e\x85\x9e\xed\x60\xcf\x3b\x5e\x15\xfb\xfc\xd1\x65\xc5\x2b\x78\xbf\xdf\x0e\x4e\xd1\x3e\xcf\xf1\x81\x59\xb6\x4f\x70\xe5\xfb\xcc\xe9\xcd\xa3\xe9\x9b\xed\xe1\x24\xd5\xb3\xce\xd6\xbc\xd2\x19\x46\x57\x2b\xd7\x9c\xe4\xc6\x88\x1e\xc4\xed\x21\xd2\x67\x17\xcd\x4b\x2d\x79\x87\xf8\xa3\x8d\x61\x8f\xf4\x2d\xab\xfc\x71\x72\xfd\xa1\xed\xcc\x81\x6f\xcc\x1d\xd7\xb2\x07\x8f\x57\xb4\xbf\x87\xf3\xec\xfb\x1a\x5c\x2e\xcc\x0a\x7a\x6e\x8c\x0f\x2f\xd3\xff\x4e\x1f\x67\x25\xd9\xa9\x7b\xb9\x10\x43\x87\x8f\x2d\x7b\xe4\x7e\x8a\x34\x87\x3a\x3b\x2b\xd6\xa1\x46\x97\xcb\xb7\x0e\x5d\x3f\x4c\xa6\x75\x07\x67\xe5\x38\x9a\x63\xd8\x27\xbd\x59\x6f\x3f\x64\x6a\xfb\xa9\x1f\x0c\x3b\xae\x9d\xe0\xfb\x44\xf7\x1d\xd7\x07\xcd\xf0\x53\x5d\x5c\x22\xc3\x19\x6f\xfa\x64\x67\x8f\x5b\xbe\xde\x13\xbe\x88\xf7\xf3\x8b\xd8\x6e\x88\xf3\x11\x66\xf3\x9e\xfe\xcd\x01\xd6\xc2\x89\xdb\x2c\xe4\xeb\xbc\x4e\x53\xb7\xed\xee\xcd\x5a\x3e\x41\xf3\xac\x8b\xf0\xdb\x6f\x8c\x7b\xd4\xea\xb9\x81\xef\xff\xf3\x3f\x81\x27\xd7\xee\xb1\x9d\x5d\x83\xa7\x1f\x3f\x3c\x3e\xf5\x7e\xff\xfd\x5b\xe0\x78\x45\xc3\x66\x97\x55\x5c\x66\x40\x8f\x57\xd5\xed\x51\xab\xed\x5d\xd4\xfd\x5e\xd5\xd3\x0c\xec\x55\xf5\xb1\xf0\x7b\xa0\x1a\xd3\x0a\xda\xd2\xc8\x02\x7f\x05\x44\xf1\x54\xd6\x7c\xee\x7d\xef\x3f\x36\x97\x81\xcd\x26\x7d\xd2\x34\x77\x32\xe4\x91\xe4\x63\x92\xe4\x8c\x9f\x4b\x89\x1f\xe3\x24\x10\xc9\x16\xb4\x78\x34\xb3\x4c\x88\xfb\x6a\xfc\x1e\x28\x68\x11\xad\xa0\x65\x42\x5a\xf1\x9d\xbb\x7b\x66\xff\xe0\xa8\x26\x56\x01\xdd\x4f\xd7\xc3\x2e\x1f\x87\xb4\xb0\x8e\x95\x0f\xea\x60\x91\xc2\xbf\x5e\x03\x9b\xa8\xf6\x2b\x98\xc3\x11\x66\xf6\x75\xf1\xbe\xd2\x83\x8d\xc2\x1f\xe8\x7f\x05\x85\x1c\x37\x8d\x77\x99\x94\x4b\xad\x23\x67\xbb\x5e\xcb\xe1\xc5\x7c\x2a\xc0\xa8\x47\xe7\x26\x16\x60\xa3\xfe\x30\x60\xd8\xfd\x61\x8f\x7b\x7c\x21\xc3\xff\x0f\x00\x00\xff\xff\x28\x56\x33\xc0\x0b\x1c\x01\x00") + +func order_booksHorizonSqlBytes() ([]byte, error) { + return bindataRead( + _order_booksHorizonSql, + "order_books-horizon.sql", + ) +} + +func order_booksHorizonSql() (*asset, error) { + bytes, err := order_booksHorizonSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "order_books-horizon.sql", size: 72715, mode: os.FileMode(420), modTime: time.Unix(1508958246, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _order_books_310CoreSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x67\x93\x1b\x3b\xd2\x26\xfa\xfd\xfc\x8a\x8e\xf9\x72\x66\x82\x67\x86\xf0\x66\xe6\xce\x46\x14\xbd\xf7\xfe\xc6\x8d\x13\x40\x01\x45\xcf\x22\x59\x45\xbb\xb1\xff\xfd\x06\x8d\x44\x36\xbb\xa5\x96\xd8\xa4\xde\x77\x77\xa7\x14\xa2\x28\x16\x2a\x81\x34\x0f\x90\x99\x05\xb3\x5c\xcd\x66\xc3\x59\xff\x65\x69\xdd\xe1\xdc\xfe\x76\xfa\xe7\xc5\x1b\xce\x86\xc1\xc0\x9a\x3f\x5e\xdc\x89\x1f\x1c\xee\x4f\xac\xe9\xdb\xe5\x6f\xa7\x7f\x8e\xbf\x5a\xf3\xdb\xdf\xff\xfe\xdb\xdf\xff\xfe\x52\xf1\x83\xb0\xbf\xb4\xf5\x6a\xe1\xc5\xa8\x50\x69\x15\xd8\x17\xb3\x9a\xce\x0f\xb7\x0f\xf7\x13\xab\xe9\xdc\x9a\x17\x6f\xe9\x4f\x2f\x05\xd6\x76\x19\x0c\xfd\xd9\x8b\xfc\x07\xfb\x07\xbd\x2a\xa5\x77\x2f\xf3\xfe\x9f\x87\xc7\x6f\x8a\xfc\x56\x4f\x36\x5e\x82\x50\x85\x76\x6a\x67\xe1\x9f\xe1\x70\x6a\xfd\x55\xf8\xf2\xef\x17\xf0\xaf\xe3\xad\x89\xef\x8e\xdf\xfe\x3a\x34\x13\xfb\xe7\x70\xf6\x67\xb8\x54\xb3\x40\xb9\xe1\xd0\x9f\xfd\x19\xd8\xe0\x40\xf7\x6d\x61\x77\x32\x3c\x90\xb6\x33\xd7\x37\x07\x9e\xff\xfd\xf2\x7b\xb3\x91\x12\xbf\xff\xeb\x4b\xdd\x33\xa3\x96\xe6\x4f\xd7\x9f\x79\xfe\x72\x3a\x9c\xf5\xff\x0c\xc2\xe5\x70\xd6\x0f\x5e\xfe\xfd\xe2\xcf\xce\x34\x06\xd6\x1d\xff\xe9\xad\x66\xa7\xba\xb4\x6f\x86\xf6\x70\xdf\x53\x93\xc0\xbe\xaa\x66\x3a\x9c\xfd\x39\xb5\x41\xa0\xfa\xc7\x02\x1b\xb5\x3c\x28\xe2\x54\x64\xe9\x6f\xfe\x0c\xac\xbb\x5a\x0e\xc3\xdd\x81\xb8\xe7\xfd\xeb\x2c\x00\xab\x96\xee\xe0\xcf\xb9\x0a\x07\x2f\xff\x7e\x99\xaf\xf4\x64\xe8\xfe\x71\x90\x98\xab\x42\x35\xf1\xfb\xff\xfa\xed\xb7\x44\xad\x5c\x79\xc9\x96\x12\xc9\xce\x4b\x36\xf5\x92\xec\x64\xeb\x8d\xfa\xb9\xe4\x3f\x82\x61\x7f\x66\x97\x81\x72\x5d\x7f\x35\x0b\xff\xf5\xfd\xb2\x76\x32\x19\xce\xfa\xc3\x20\x58\xd9\xe5\x70\x66\xec\xf6\x83\xf2\xee\x7c\xb1\xf2\x97\xab\x69\xa0\x77\x81\x5d\x7c\x58\xd8\xce\xd6\x3f\x52\x72\xbe\x1c\xba\xf6\x07\xaa\x3f\x59\xe6\x8f\x50\x1c\x0c\x83\xd0\xb3\xf6\x07\x4b\xfe\x40\x31\xbd\xda\xfd\x8c\xa0\xce\xd2\xd7\x6a\xa2\x66\xae\x0d\xfe\xf5\x9b\x53\x68\x24\x6b\x2f\x0d\x27\x56\x48\x5e\x95\x2e\x97\x0a\xdd\x2f\x8f\x84\xdb\x43\x53\xfc\xe5\xee\xe5\x48\x38\x5e\x2e\xd5\x1b\x35\x27\x5b\x6a\x5c\x95\xff\x5a\xe6\xcf\xf9\xd8\xee\x7e\x8c\xaa\x67\xed\x8f\x10\xbe\x14\xfb\x71\xda\xcb\x55\x10\x4e\x86\x33\x1b\x7c\x8f\xf2\xd7\x42\x3f\x4c\xf7\xd0\x0a\x7b\xec\x06\xbe\x43\xf7\x52\xe8\xc7\xe9\x9e\x90\xf1\x3d\xa2\xa7\x12\x3f\x4e\xf1\x2b\x1e\xbe\x47\xf4\x6b\xa1\x1f\xa6\x3b\x5f\xe9\x60\xa5\xbf\x43\xf3\x54\xe0\x67\xe8\x4d\x86\xc1\x60\xb1\xb2\xab\xef\xc9\xf4\xba\xd8\x8f\xd3\xb6\xdf\x97\xe9\xf1\xfe\x0f\x53\xf3\x3d\xef\xfb\xe4\x4e\x05\x7e\x98\xde\xa9\xcb\x18\x58\x65\xbe\x4f\xf6\x55\xb9\x27\x53\x3f\x77\x63\x76\xf1\xe7\x0f\x56\xa3\xd5\xec\x3b\xc4\xb5\x9a\xfd\x70\x83\xcf\xfd\xd2\xf7\xda\xfa\xa5\xc8\xcf\xd2\x3c\x0c\xfb\x1f\x93\x3d\x94\x3a\x53\x3e\x96\xbd\x25\x7c\xdb\x19\x7e\x54\xec\xd2\x6d\x7d\x50\xf2\x6b\x37\xf4\xfd\x72\x97\x6e\xe5\x83\x72\xa7\x9e\xe2\x83\x42\x5f\x91\xff\x61\xb9\x1f\x62\xe2\x84\xfa\x0f\xcb\x7c\xc5\xf0\x07\x25\xed\x87\x0c\x9c\xc0\xf6\xfd\x32\xaf\x6c\xfb\xfb\x45\xb5\x9a\x7d\xbf\xc0\x17\xdb\xfb\xa1\x52\x07\x53\x3a\x17\x4c\x76\x1a\xc9\x52\x3d\x5b\x2e\x5d\x17\x9e\xcc\xfb\xc1\x62\x72\x2e\x51\x8f\x67\x92\x45\xe7\x0d\xad\x7f\x9d\xfd\xdb\x92\x9a\xda\x7f\x7e\xf9\xed\xa5\xb1\x9b\xdb\x7f\x9e\x1f\xf9\xd7\x4b\xdd\x1d\xd8\xa9\xfa\xe7\xcb\xdf\xff\xf5\x52\xde\xcc\xec\xf2\x9f\x2f\x7f\x3f\xba\xbd\xf1\x5a\xd2\x69\x24\xbf\x50\xfe\x42\xef\xb7\x57\x14\x5f\xdf\x3c\x13\x8e\x97\x8b\xc5\x64\xa9\xf1\x1d\xca\xa7\x02\x2f\xe5\xd2\x6b\x02\x2f\xd9\xfa\xcb\xef\x5f\x7c\xd4\x2f\xbf\x05\x47\x22\xbf\xdf\xd6\xfc\x85\xfd\x73\x9d\x5f\x25\xf4\x21\x3f\xaf\x64\x59\x2a\x37\x6e\xe4\xf9\xd2\xce\x36\x32\x5f\x9b\x75\xed\x94\xbe\xaa\xfe\x42\xe5\xa6\x21\x3f\xc3\xfc\x1b\x22\x47\x01\x54\x0a\xd1\x79\xff\x10\x89\xcc\x97\xbe\x6b\xcd\x6a\xa9\x26\x2f\x13\x35\xeb\xaf\x54\xdf\x1e\xc5\xf0\x83\x4e\xf4\xa1\x98\xb1\x9e\x5a\x4d\xc2\x3f\x43\xa5\x27\x36\x98\x2b\xd7\x1e\x22\x82\xdf\x6f\xee\x6e\x86\xe1\xe0\x4f\x7f\x68\xae\x9c\xfc\x57\xcc\x5e\x1b\xe4\x99\xcd\xa3\xe9\x5e\x98\xfc\x62\x00\xef\x09\xfc\x64\xe5\xd7\xbd\xe8\x5f\x7f\x7b\x79\x79\xf9\xf2\xcb\xd0\xbc\xb8\x03\xb5\x54\x6e\x68\x97\x2f\x6b\xb5\x3c\xf8\xa1\x7f\xa5\xec\x6f\x47\xdd\x94\x9a\x85\xc2\x1f\xc7\xd2\x87\x07\x67\x6a\x6a\xdf\x29\xcc\xc8\x7b\x85\xd7\x6a\xb2\x7a\xaf\x34\x84\xe8\xb6\xf8\x44\x05\xe1\xd4\x37\x43\x6f\x68\xcd\xcb\x70\x16\xda\x43\x7c\x98\x48\xa6\x9c\x66\xa1\xf1\x02\xbe\x16\xfe\xed\x6f\xb7\x56\xf0\x15\xcf\x9f\x94\x4a\x70\x97\x48\xce\xde\xf7\x8b\x1e\xf6\x87\xb3\xf0\xe6\x66\x60\x17\xb3\xd5\xf4\xfd\x7b\xb3\xd5\x34\x58\x69\x3b\x0b\x97\x87\xc0\xee\x0b\xc3\xaf\xcb\x0c\x67\xde\x44\x1d\xe2\x3f\x63\x83\xf0\xfd\xe6\x9c\x0a\x0e\xfc\xa9\x35\xfe\x54\x0d\x67\xef\x94\xc2\x6f\x64\x1d\x0e\x96\x36\x18\xf8\x13\x13\xbc\x84\x76\x7b\xdb\x32\x6f\xa2\xfa\xdf\x6a\xd1\xbb\x5a\x7a\x5d\xe4\x6a\x64\xfe\x3a\xcc\x9f\xa5\xf4\xe7\x31\xaa\x7d\x89\x67\x92\xf1\xfc\xcb\x5f\xff\xfa\x45\x76\xff\xe3\xdf\x2f\xe0\x6f\x7f\xfb\xf6\xd3\xaf\x44\x75\x43\xe3\xb5\x18\x4f\x94\xde\xda\xc8\x61\x50\xb8\xd7\x3c\x0e\x8e\xd1\xc9\x32\x66\xbe\xb1\xd7\x66\xf1\xca\x1c\xde\x56\xfa\x7a\xd0\xba\xb7\xfa\xd7\xee\xdf\xa9\x21\xe7\xdf\x54\x30\xb8\x6a\xcc\x5b\x04\xce\x97\x76\xfd\x61\x21\xbd\x72\xc7\x36\x9c\x0c\x83\xf0\xc3\xa2\x5f\x7d\xca\x2f\x9a\x3f\xfd\x7c\x4c\xe2\x84\xc3\xe9\x37\x40\x70\xec\x6d\xde\x31\xb3\x2b\x4d\xbf\x76\x5d\xbf\xd2\xbb\x51\xf5\xa5\x9e\x6f\x18\xcc\xb7\x3c\xe0\xd7\x64\x2e\x5c\x7c\xcb\x5a\xce\x1e\xc9\xbd\x1a\x3b\x87\x17\x7f\x3d\x77\x01\x93\x89\x5d\xfe\x60\x67\x72\x7c\x72\x68\xbe\xd5\x99\x1c\xf3\x28\x2a\x08\x6c\x18\xee\xe6\xf6\x1b\xf0\xbb\x2e\xe6\xfa\xe6\xdd\xde\x17\xfd\xed\x55\xd9\x53\xc6\xe1\x7b\xfd\xcb\x29\x33\xf1\x51\xd5\x57\xa5\x3e\xaa\xf9\x3a\xd5\xf1\xbd\x8a\xd5\xf4\xd0\x05\xbc\x2f\x90\x63\x46\x67\xf6\x8d\xb6\x1c\x6f\x7e\xab\x8b\x3a\xde\x7c\x31\xfe\x4a\x4f\xec\x01\x25\xee\xf0\x98\x20\x7c\x56\x37\x78\x0e\x27\x4f\xbc\xdc\x58\xe3\x99\xc1\x6f\x58\xf4\xf9\xc9\xb3\x5d\xdc\x3c\xfa\xc5\x5a\xbe\x65\xc6\x27\xdf\xfb\x5e\x2b\x3e\x85\xdc\x27\x23\x1e\xce\xdf\xd3\x25\x7d\xd3\xdf\xf8\xcb\xf0\x3b\x43\xf7\x79\xdc\xb3\xdb\x50\x85\xa1\x9d\xce\xc3\x97\x03\x98\x83\x50\x4d\xe7\x2f\x07\xef\xc7\x5f\x9d\x7e\x79\xd9\xfb\x33\xfb\x76\xb4\xf4\xd4\x70\xb2\x5a\x5e\x8d\x95\xdf\xaa\xe1\x4a\x7e\xa7\xbc\xc0\xd5\xc3\x6f\x47\x8f\xaf\x64\xbf\xa1\x82\x73\x6a\xc1\x5f\xde\x6a\xee\xaf\x47\x76\xff\xc7\x0b\xf8\xdb\x8b\x53\x4a\xbc\x9c\xfe\xfb\xff\xfc\xfb\x85\x51\x8a\xe9\xdf\xde\x55\xc8\x75\xd8\x74\xb7\x5e\xae\xd3\x2c\xd7\xc3\xc1\xb7\xfa\x83\x63\x8e\xeb\xd0\xff\xbe\xdb\xa0\x43\xac\xf7\x89\xa6\x04\x2b\x7d\x6e\xc4\xd2\x06\xaf\xc6\xc6\xb7\x5e\xc7\x01\x34\x4b\xab\xbe\x02\xe6\x6d\x7b\xae\x62\xd4\x7b\xdb\x74\x21\xf1\x23\x83\xf6\x37\xc6\xb5\x9b\xfb\x76\xb6\xb6\x13\x7f\x6e\x3f\x18\xc5\x2e\x55\x7f\x62\xec\xb9\x0a\xe7\x3f\x21\x82\x2f\x09\xc3\x93\x08\x16\x81\xfd\x81\xc1\x5d\x05\xe1\x47\x82\x38\x10\xfa\x58\x08\x5f\x12\x91\xaf\x28\xde\x0a\xe2\x55\x6d\xdf\x14\xc6\x39\x01\x72\xb7\x24\xce\xc9\xd8\x7b\x1c\xfb\x13\xf5\xb1\xdd\xfd\x50\xe9\x8d\x1d\xf6\x07\xe1\x1b\xb1\xbd\xc3\xd2\x25\xf7\x73\x37\x57\x97\xd4\xf5\x5f\x2f\x10\x7f\x1d\x97\xbd\x03\xbf\xef\x75\x04\x57\x99\xab\x7b\x5b\x75\x95\xa8\xbf\x47\xdc\x1f\xf9\x16\xdf\x73\x15\xde\x23\xf5\x6d\x07\xe4\x36\x16\x9a\x0c\xa7\xc3\x6f\x78\x18\xdf\x0d\xee\x1e\xe7\x1f\x5c\xbd\xbe\xb8\x2b\x50\xba\x7a\xfe\xc4\xcd\xcd\xe3\x67\x16\xff\xc7\xfb\x20\x7b\x95\xdf\xbc\x5b\xfb\xd7\xaf\x80\x4e\xfa\x0f\xb7\xaf\xba\xdd\x1f\x08\x27\x6e\x35\xb3\x3d\xbe\x04\xfb\xe6\x5d\x77\xa0\x66\x7d\xfb\x6e\x08\x7b\x2d\x9c\xeb\xb7\x4e\xf7\xf7\xcb\x97\x64\xf1\xfd\x22\xfa\xc5\xf2\xd1\xbe\xd9\xbd\x27\x9c\x70\xbb\xb4\xc1\x6a\xf2\x6e\x4f\x1e\x6e\xa7\xf6\xc3\x70\xed\xf2\x86\xf0\x1e\x79\x26\x0e\xf1\xa0\xe7\x2f\x3f\xc8\x6b\xbd\x24\x9c\x86\xf3\x81\x7c\xbf\x4f\x32\xf8\x69\x7a\xd9\x52\x3d\x59\x6b\xbc\x64\x4b\x8d\xf2\x25\x2b\xd4\x72\x0a\xcd\x64\xfd\xe5\xaf\xbf\xa7\x63\xb5\x4a\x37\x93\x2d\xa0\x78\x16\xa7\x4a\x55\x12\xeb\x14\x52\xc5\x52\xa2\x90\xca\x35\x4b\x95\x26\xca\x74\x71\xaf\x98\xaa\x67\xca\xa5\x66\x3c\x59\x76\xea\x6d\x5e\x8d\xf3\x72\x07\x65\x7e\xff\xe3\x45\x1e\x2f\xc1\x4e\xff\x4a\x0e\xc0\x1f\x2f\xf8\x8f\x17\xf0\xc7\x49\xc0\x2f\xbf\xff\xfe\xc7\xcb\xef\x4e\xd5\x71\x1c\xe7\xdf\xff\xfe\xfd\x78\x03\xfd\xed\x5f\x1f\xb6\xa7\x93\xae\xe6\xda\xad\x42\xbb\xdc\xcd\xa4\x0a\xad\x46\xbe\xdd\xa2\xa9\x74\xc6\xc1\x85\x52\xb7\x8b\x72\xd5\x7c\x91\x97\x9d\x9c\xd3\x4c\x56\x53\x4d\x56\xa8\xc4\xeb\xc9\x54\xab\x53\x2e\xfd\xfe\xc7\x0b\x3d\x37\x44\x1c\x1a\x22\xa8\x90\x12\x13\x2a\xc9\x1f\x2f\xe8\x3b\x2d\xc2\x1f\xb7\x28\x8e\x70\x35\x85\x32\xcd\x24\x45\x4e\xb1\xd3\x4c\x35\x33\xd8\xe9\xe6\x9c\x4e\x27\xdd\xe9\xb4\x50\x2b\xd3\xe9\x76\x6b\x2c\xd9\xed\x24\x1b\x95\x7c\xa2\xd3\xab\x3b\x6d\xc6\x3b\x65\xf2\x55\x42\x92\xbd\x6a\x10\xfb\xbe\x88\xc8\x0f\x34\xa8\x93\x4f\xb3\x5a\x89\x94\x4b\xd9\x64\x25\x5e\x2c\xa5\x62\x1c\x23\x87\x60\xd6\xa3\x95\x52\xa2\x5e\x2b\xa4\xdb\x79\x9e\x8e\x15\xe2\xc5\x6a\x21\x9b\x2a\x93\x3a\x4f\x76\xdb\xad\xe6\x45\x44\x8c\x5e\xb5\x88\x21\xfe\xc7\x0b\xa6\xdf\x69\x12\xfd\xb6\xa1\xdf\xe6\xa0\x3e\x61\xe0\xdf\xce\x2c\xfd\xac\x95\xbf\xce\x2e\x7d\x95\x1b\xc3\x46\x0a\x8f\x62\x66\x2d\x13\x06\x6a\xc4\x35\xd5\x42\x7a\x08\x2b\x8f\x62\x08\x35\xa7\x4c\x2a\x44\x3c\xe5\x41\x02\xb0\x32\x40\x53\xa4\x19\xc6\x1a\x70\x6d\xa5\x3c\x08\x06\x7c\xf2\x3a\xd0\xa0\x1c\x29\x64\x31\xf2\x3c\x44\x84\x02\x5c\x03\xcb\x81\x67\xa0\xc7\x0c\x86\xc2\x85\x9e\x72\x0d\x02\x9a\xb9\x2e\x10\x2e\xc6\x86\x72\x4e\x11\x95\x82\x09\x88\xa8\x82\xec\xf7\x3f\x5e\xe0\x51\x2f\xbf\x3b\xff\x6d\xaf\x58\x27\x3f\x24\xbb\xe8\xae\x9e\x8f\xf1\xc4\x2c\x21\x33\x08\x6c\x47\xb1\x48\x00\xfa\x61\xb0\xc9\x6e\xf6\xb0\x63\xea\xed\xae\x8a\xe5\x54\xaa\x7f\x28\x9f\x2c\x91\x82\xda\xcf\x51\xf5\x43\xca\x3d\xa7\x03\xc9\xb1\x58\x6c\xfc\x0b\x18\x79\xe8\xf5\xfb\x0d\xb6\xbf\x61\xa8\x54\x32\xad\x05\x74\xad\x44\x16\x1f\xec\x43\x2a\x01\x18\x94\x84\x72\x6d\x95\x0b\xa0\xd0\xc0\x58\x22\x81\xc7\x25\xa7\x94\x4a\xd7\x40\x4f\x32\xa1\x95\x0b\xb9\x04\x47\x43\x7d\x84\xb1\x53\x45\x80\xe7\x7a\x10\x08\x20\xcc\xc1\x50\xb5\x4b\x11\xb4\xd4\xe5\x86\x63\x04\xa8\xb5\xc8\x05\xae\xe7\x49\xed\x6a\x97\x00\x40\x18\xd4\xd0\x83\x4a\x2a\xcb\x31\xc4\x07\x43\x45\x7f\xbc\x40\x0a\x84\xa4\x02\x11\x79\xb6\xd8\x78\xba\xd2\x1b\xc1\xd2\x8a\xfa\x40\xe7\x78\x9b\xcc\x76\xe5\x75\x73\x9b\xc6\xad\xb9\x3f\x8e\xac\x53\x4e\x39\x8c\xc3\x3c\x2a\xf2\x18\x67\x3d\xa7\xb9\x59\x76\xf5\x66\xbc\x83\x18\x28\xdd\x1f\xd6\x22\x62\x8f\xe7\xc3\xed\x7a\xd4\x5d\x75\xb6\xed\x5a\xb5\x8c\xbd\x61\xa1\x11\xaf\x6e\x83\xa3\x84\xdb\x5e\xa2\x9f\x3f\x5a\x47\xf6\xeb\xc7\xa9\x33\xeb\x5f\xfe\xbf\x71\x9c\xdc\xf6\xa4\x11\xb8\x91\x5e\x1b\x46\x54\x17\x98\x7d\x3d\xdc\xce\x82\x20\x61\xb2\x3c\xe5\x8a\x5a\xb9\xb0\x6b\xa6\x38\x8a\xd4\xd8\xa0\xdb\xe5\xe5\x18\x55\xd5\xca\x7e\x1b\x77\x46\x2a\xc6\xd7\xa9\xac\xed\x64\xe0\x3e\x9b\xe2\xc3\x4d\x31\x4a\xd7\x85\xad\x13\x4b\xa7\xb7\x42\x4d\x57\xee\xb6\x74\xaa\xea\x1d\x8b\x4e\x06\xef\x59\xc5\x57\x8b\x8e\xbb\x1f\x9b\xff\x7f\xb3\xeb\x07\x2d\x5a\x28\x62\x25\x37\x08\x41\x46\xa9\x11\x5c\x6b\xe1\x0a\xeb\x21\x06\xb1\x34\x44\x01\xcc\x14\xb0\x86\x1a\xcd\x00\x52\xd2\x08\x25\x29\x32\x9e\x36\x46\x21\x0b\x31\x43\x47\x6b\x7c\x00\x2a\x8c\x00\xd8\x6a\xe1\x2a\x22\x01\x74\x2d\xc0\xc4\x75\xa1\x22\x87\xa6\x28\x8b\x99\x61\x90\x88\x43\xc7\xcb\x3c\xc6\x18\xe7\x1e\xe0\xc2\xc5\x1a\x0b\xcd\x5d\x0a\x2d\xa6\xbf\x1f\x3d\x9c\x2f\x16\x4d\xbf\xf4\xc1\xf1\xd4\x64\xb9\x8a\xed\xe7\x85\x51\x8c\xc7\x55\x3f\x9d\x6e\xb6\x38\x0b\x9c\x6e\x50\xa2\xb9\x04\x9e\xc0\x56\x6f\x5f\x8b\xb4\x87\x6c\xd3\x19\xe7\x70\x64\xdd\x11\x09\x5d\x32\x5e\xd7\x63\x7d\x5c\x4e\x63\xed\xe9\x76\x6b\x00\xdc\xb0\x9c\x4a\xa4\x87\x99\xe9\x6a\x5c\x83\xb1\x44\x5e\x82\xa3\x84\x8f\x16\xdd\xbf\x48\x7c\xb5\xc6\xb3\x4e\xb5\xb2\xe6\x73\x6f\x61\x7b\xba\xdb\xc9\xd4\x8b\x62\xbb\xf0\xab\xde\x60\xb0\x2b\xd4\x52\xd9\xa9\x1d\x39\x83\x39\xaf\x65\x47\x5d\x27\xb2\x2a\xce\x73\x8e\x4b\x12\x8d\x62\x7a\x3c\x5a\xe7\x57\xa5\xb0\xdb\x1c\xa2\x7d\x5a\x4e\x7b\x58\x64\x46\x89\x80\x84\xa2\x69\x4b\x47\xbb\x2b\xbe\x63\xb1\x79\xf1\x9e\xd6\xff\x2f\xb0\x58\xea\x01\x80\x00\xe1\x9c\x43\x97\x2a\x45\xb8\xc6\x82\x00\x4a\x29\xd0\x0a\x7a\x5c\x0b\x0d\x5c\x42\x8d\x51\x90\x73\x82\x21\x97\x9e\x67\x39\xb5\x16\x78\xc4\xd5\x94\xda\x83\xb5\x3d\xc2\xea\x3d\xa8\x84\x32\x2e\x91\x02\x18\x97\xb8\x16\x70\xe0\x21\xe4\x22\xa8\x99\xc4\xcc\x58\x89\x01\x75\x15\xd6\xca\x72\xe8\x6a\x8a\x05\x17\x02\x09\x6c\x09\x70\x3d\xee\x32\xfc\xfb\x1f\x2f\xe4\xca\x62\xe1\x17\x8b\xcd\xce\xcb\x13\x99\x1d\xf4\x5a\x28\xb3\x22\xbb\xb2\x98\x26\x29\xcc\x3b\xc8\x2f\x43\x13\xf6\xf3\x73\x94\x9f\xd4\x31\xc7\xaa\x30\x28\x0d\x4b\x65\xe9\x05\xa2\x8a\x57\x91\x46\x74\x14\x26\x3b\x5a\x4d\x5b\xed\x52\x1b\xd6\x86\xcb\x24\x01\xed\x76\x67\xe4\xcc\x23\x61\x8d\xb6\xcb\xe4\x28\xe1\xa3\xc5\x6e\x2e\x12\x97\x15\x4e\x5c\xe1\xc1\xad\x67\xc8\xa6\x83\x12\x2a\x18\x61\x85\x7b\x9d\x59\x7f\x31\xf0\x54\x0e\xed\x1c\x6e\x93\x65\x5c\x08\x83\xe8\x76\x91\xc7\xc9\xa9\x83\x93\xfb\xbe\x5b\xc9\x06\x59\xad\x1a\xda\x8e\x37\x9d\x7c\x99\xd1\xed\x0e\x96\x33\xc3\x78\x3f\x52\x2d\x4a\xd1\x3d\xd2\xaf\xbe\x63\xb1\xb5\xe2\x7b\x5a\xff\xbf\xc0\x62\x01\x70\x39\x22\x40\x61\x64\x19\x33\xd2\xba\x88\x71\x8f\x08\x97\x4b\x86\x5c\x21\xb4\x85\xd0\x60\xec\x6a\x02\xb9\x8b\x88\x27\xa4\x4b\x05\x73\xb5\x84\x54\x68\x4a\x10\x3f\xf6\xb1\x8f\xb0\x7a\xe8\x1a\x40\x3d\x2b\x20\xb0\x00\x40\xae\x8d\x94\xc4\x72\x09\x90\x76\x0d\x56\x9c\x21\xa8\xa0\x2b\xa0\x14\xc4\x1a\x8d\xa4\x15\x46\x43\x8a\x8c\x85\x52\x40\xa2\x0e\x7d\x2c\xbd\xb2\x58\xf4\xb5\x8f\x15\x4e\x36\x69\x70\x26\xb5\x18\xdb\xfd\xc0\x69\xb5\xe2\x2c\x83\x57\x85\x44\xb2\x63\xfc\x8e\x49\xa4\x68\x34\x62\x2c\xa9\x34\x0a\x2d\x2b\x2b\x89\x22\xcb\x2c\xbb\xee\x6c\x9e\x69\x0f\x17\x32\x31\x88\x8e\xe7\x19\x1e\xdb\x75\x9c\x79\x2d\x2f\x4d\xa7\x51\xcc\x75\x7a\xa9\x8e\x1f\x6b\x1e\x25\x7c\xb0\xd8\xc2\x95\xc4\xc9\xd4\x5d\xd7\xc2\xea\x62\xb1\x76\xfa\x75\x50\x2d\xa4\xab\x89\x70\x85\x17\xb8\x8c\x8b\x22\x32\xd4\x45\x9b\x1e\x76\x94\x89\x07\xc9\xa0\x1e\xdb\x57\x3b\x91\x7e\x95\x38\x29\x8e\x7a\x8d\xd9\x38\xbe\x2e\x95\x67\xdd\x81\xef\xf6\x7b\x83\x32\xda\xcd\x7c\xb4\x6d\x86\xa4\xd7\x6f\xce\x8f\x76\xd7\x7c\x6b\xb1\xb1\xe4\xe6\x46\xe1\x03\xe7\xff\x00\x8b\xfd\x46\x94\xf7\xce\x6b\xe8\x9f\x0d\xef\xce\xaf\xa2\x1f\x11\x0f\xc3\xab\x58\xfc\xf4\x79\xe8\x20\x9b\xf5\xc4\xc1\x90\x3f\x11\xf8\x53\x49\x2f\x71\x36\xfc\xe3\x05\x82\x3f\x5e\xc0\x3f\xe0\x6d\x34\xc8\xbe\x86\xd7\x4f\xe2\x0f\x3d\x8d\x3f\xf2\x8a\x3f\x79\x64\xef\xe6\x02\xf4\xd9\xec\xe1\xa7\xb1\x87\x5f\xb1\x27\x8e\xec\xa1\xa7\xf3\x43\x9e\xc6\x0f\x7a\xc5\x0f\x3f\xf2\x43\x90\xa0\xfc\xf2\x79\x88\xcf\x9e\xcb\x1e\x7d\x1a\x7b\xf0\x15\x7b\xec\xc8\x1e\x7b\x7d\x51\xfe\x6c\xf6\xd8\xb3\xd8\xbb\x74\x18\x47\x92\x07\x31\xfe\x03\xdd\x74\x25\x10\x3e\x9b\x3d\xfe\x24\xf6\xc8\x0d\x7b\xe4\xc8\xde\xd3\xb1\x26\x9e\xc4\x0e\xbe\x61\xe7\xd0\x47\xfd\x03\xdf\x5c\xf0\xe9\xec\xc9\x27\xb1\x87\x6e\xd8\x3b\x8c\x30\xff\x78\x3a\x37\xc7\xf1\xf3\x19\xec\xc0\x1b\x76\xe0\x17\x9f\xe0\x99\xcc\x3c\xcb\xeb\x80\xd7\xbc\x5c\x39\x1e\xcf\xe5\xe6\x69\x3e\x86\xb8\xf6\x31\x8e\x7f\x0f\x82\xfb\x07\x90\x12\x5c\xff\x85\xe4\xe9\x6e\x14\x7c\x9a\xa3\x21\xf0\x6b\x1e\x25\x3c\x39\x8a\x52\x48\x70\xf9\x14\xe2\xe9\x1c\x3e\xcd\xf5\x10\xe8\x35\x87\xe2\xc4\x21\xc2\x84\x32\x2e\xc1\xf9\x8b\xc0\x4f\xe7\xf0\x69\xde\x87\x80\xaf\x39\xe4\x27\x0e\x09\x10\x84\x02\x0e\x08\x42\x14\x53\x04\x9f\xaf\xc3\xa7\x39\x20\x02\xbc\xe6\x90\x9d\x38\x64\x58\x62\x42\x10\x43\x48\x52\x20\xa0\x20\x4f\xe7\xf0\x59\x3e\x08\xbd\xed\x3a\xe9\x89\x43\xc9\x00\x17\x04\x43\xcc\x11\x25\x12\xc0\xa7\xfb\x90\xf0\x59\x6e\x09\xb9\xe5\x90\x1c\x39\x44\x04\x4b\x70\xf5\x81\x9f\x6f\xa5\xcf\xf2\x4c\xf0\x6b\x0e\x4f\x97\xfc\xfa\x3b\x3a\x06\x71\x18\x21\x2a\x00\x23\x14\x50\x8e\x30\x02\x14\x3d\x3d\x04\x7f\x96\xeb\x82\x6e\x35\x8a\x8e\x1a\x25\x9c\x41\x09\x2e\x9f\xec\xe9\xa8\x44\x4f\xf3\x67\xde\x38\x34\x47\x0e\x25\x78\xfd\x87\x3d\xdd\x63\x43\xcf\xf2\x71\xd0\x15\x83\xf4\x6b\x70\xf7\x5c\x5e\x9e\xe6\xcb\xf0\x2b\x5f\x86\x7e\xe9\x42\x81\x14\x00\x4b\x04\x29\x13\x0c\x71\x42\xc1\xf3\x47\x09\xf4\x34\x5f\x86\xa3\x57\x1c\x92\x53\xa2\x01\x08\x26\x29\xa3\x08\x72\x2c\x21\x06\xcf\xe7\xef\x69\x9e\x0c\x87\xaf\xf9\x3b\xbb\x6a\x50\xd2\xab\x0f\xf8\xf4\x3c\x11\x7a\x9a\x23\xc3\xc1\x2b\x06\xf1\x49\x81\x58\xbc\xba\xe4\xf3\x31\xf8\x34\x3f\x86\xc9\xd7\x0c\x9e\x1d\x35\x88\x24\xf8\x3a\xf4\xc1\xe7\xa7\xc2\xd0\xb3\xdc\x18\x7a\xd3\x63\xa2\x93\x06\x25\xc2\x80\xb3\xaf\x9f\xcf\xf7\xb5\xd1\xb3\xbc\x18\x72\xcb\xe0\xc9\x4d\xc3\x02\x48\x7a\xf9\x14\x4f\x77\x5b\xf0\xb3\xdc\x16\x7c\x3b\xe6\x1d\x35\x88\x7f\x41\x76\x1d\x3f\xcb\x4f\x41\xb7\x2c\x9d\x1c\x31\xfa\xfa\xcf\xd3\x23\x5c\xfc\x2c\x2f\x05\xde\xf0\x77\xd4\x98\xb8\x49\x69\x3e\xbd\x4f\xc1\xcf\x72\x5c\xf0\x8d\x97\x89\xff\x78\xc1\xb7\x19\x5b\x22\x3e\x9a\x09\xfb\x76\x61\xe2\x27\xe6\xc2\x7e\x73\x51\xdd\xe7\x68\xde\xae\x8b\xfb\x04\xb5\x6f\xac\x6a\xfb\xd9\x77\xb9\x57\x2b\xdb\xae\x6c\x84\x75\x33\x5d\x54\xa1\x69\x27\x57\x49\x34\x9d\x5a\xbb\x99\x4c\x56\xeb\xa8\x58\x6f\x36\x93\xa5\x4c\xbd\x82\x5b\xf9\x5a\xb6\xcb\x1b\xc9\x62\xa2\xd9\xcb\x77\x58\xd1\xe1\xe9\x66\xb7\x76\x7a\xdf\x79\x9a\x14\x5b\x40\x09\x02\xa2\xf3\x7e\xce\x96\xfb\x59\xe4\x57\xc7\x39\xd5\xcb\x4f\xe2\xa5\x4a\x2e\xc2\x16\xc3\x51\x86\x8e\xbb\xe5\x69\xab\x23\x36\x99\xfd\xe5\xb5\xf5\x71\x76\x60\xfc\xf8\xb5\xea\x38\x4e\xb2\x1f\x6b\xc4\xc3\xc1\x3a\xde\x28\x74\xbc\xda\x7c\x15\xcf\x65\xf8\xbe\x62\xa7\x85\x74\xa4\x34\xa4\x5e\xaa\x97\x72\xb8\x89\x64\xc3\x62\x2e\x91\x3e\xbe\xc2\x8f\xf5\x44\xd9\x99\x1f\x9f\xef\x7f\xfd\x88\x5d\x88\x1e\xff\x9f\x70\x1c\x67\x96\xbc\x54\x1a\x2b\xed\x33\x1e\x2f\xf5\x07\xac\x58\x19\x67\x72\x7e\x6d\x1d\x99\xf2\x94\x21\x11\xb6\xdc\x66\x18\xcb\x6e\x36\xfd\x22\x2f\xcc\x87\xfb\x01\x2e\x1e\xc9\x95\x63\x7d\x45\xa8\xb3\x98\x7a\xe5\xe2\x44\x76\x9d\x4d\x73\xea\x37\x10\x4e\x56\x02\xa7\xe1\x62\x90\x8f\xb4\xcb\xc3\xf1\x62\x54\xab\xb6\x03\x6c\x89\x5f\x77\xa7\xc3\xd6\x28\x31\x44\x86\xe0\x48\xb3\xeb\x6e\x13\x20\x96\xe0\x31\xb9\x18\xea\xe9\x74\xd3\xe9\x64\x2b\x5d\x61\xe2\xfd\x7f\xff\xfb\x76\x9a\xc9\x83\x55\x83\x3f\xa5\x9a\xe2\x6b\xd5\x24\x12\x1e\x93\xde\xa6\x14\x40\x28\x07\xd1\x45\xc2\x25\xda\x84\x32\xec\xb5\x33\xb5\x1d\x20\xcd\xa2\xca\x5a\xc5\x6a\x99\x66\xb2\xb8\xc4\xd5\xaf\xaa\x59\xdc\x4c\x53\xf8\x69\xd1\xeb\xe2\xd0\x96\x92\xa9\x52\xb2\xd1\x68\xfb\x5e\x26\x66\x32\x9d\x76\x77\x16\x59\xb5\x12\x3a\xbf\xcb\xd4\xc7\x23\xb7\xb8\xda\xe0\x0d\x55\xcb\x66\x25\xbf\x0e\x73\xdb\x34\x8b\x2c\x11\x4b\x14\xbd\xee\x64\xea\xce\xa6\xcd\xd2\x0e\x0a\x0a\x64\x36\xbd\x4e\x96\xd3\x28\x52\x0c\x5c\x13\xaf\x3e\x5d\xf4\xe4\x53\xa2\xaf\xde\x88\xde\x01\x1c\x46\xf6\xdb\x84\xe5\xb4\x12\x29\x83\x9a\x09\x17\xbd\x56\x17\xea\x56\x3a\x1f\x34\x46\xb5\x5e\xcf\x16\xe3\x33\x06\x33\x93\x2e\xef\x7f\x15\xfd\xf2\xb3\xa2\xef\xe7\x2b\x7e\x6d\x99\xec\x95\x4a\xad\xc9\x0e\x67\x5a\xcd\x56\x66\x30\xd1\xf9\xed\xc8\x29\x2c\xc5\x28\xbe\x08\x90\x4f\x1a\xc4\x0b\xea\xdd\x7c\x34\x2e\x07\x00\x6c\x78\xbf\xb8\x26\xf1\xb2\x34\x7e\x79\x9a\x07\xcd\x84\x97\x4e\x55\x5b\x5e\xa6\x18\x96\x72\xbd\xd2\x04\xae\x7b\xcb\xf8\xe6\xe9\xa2\xa7\x9f\x12\x7d\xf3\xd6\xea\x81\x28\xee\x7d\x1b\x0e\x76\x76\x6c\x54\x7e\x09\xca\x99\x48\x7d\xec\x05\x99\x9c\x1b\x9f\x24\x97\x10\x9a\xe2\x66\x62\xc6\x2d\xdb\x4f\x5d\xac\xfe\x76\xce\xf1\xcf\x5b\xbd\xab\xfc\x71\x76\xab\x1d\x90\x5a\x83\x86\x9f\x5e\x93\x49\xb3\x1f\x31\x45\xb1\x95\x4d\x51\x00\x65\x5f\x54\x32\x19\x95\x03\x51\x68\xc3\xee\x30\x17\x07\xf1\xad\xb7\x4b\xfb\xed\x78\x7f\xea\x76\xeb\xf5\x5e\x6d\x96\x8b\x2e\x16\x95\xc0\xf8\xb1\xbd\x5f\x76\x69\xe8\xd3\x6c\xec\xdc\xe1\x7c\x7b\x74\x79\x6f\xc1\xf0\x1d\xa3\xcb\x97\x45\xc3\x5f\x95\x89\x39\x86\xc6\xb3\xae\x11\x08\x5a\xe1\x62\x4b\xa0\x2b\x15\x84\xda\xb3\x52\x6b\x48\x8d\xc5\xd6\x2a\xed\x12\x6e\xb5\x42\x18\xb8\x08\x60\xac\x91\x95\x42\x63\xc1\x39\xbe\x56\xea\x51\xc8\xa7\xbe\x7c\xdd\xad\x8c\x1a\x91\xa9\x33\x21\xcc\x19\xa9\x41\xbc\x3a\x99\x8f\x17\xcd\x2c\x10\x33\xbe\x58\xe4\x8b\xde\xb4\xd6\x67\xbd\x96\xb7\x77\xbc\xe2\x47\x53\xa4\xde\x5b\x20\xfc\x99\x91\xfa\xfd\xc5\xb9\x3f\x2d\xcb\xcb\x02\xdd\xaf\xb2\x9c\xa8\x20\x3c\xed\x76\x7b\x5e\xad\x7f\x73\x9d\x56\xcc\x7c\x72\x5a\xe2\x2d\x40\xdf\x69\xc7\x97\x8d\x73\x4f\x3b\x7a\xdd\xb6\xe2\xd4\x0e\xfa\x23\x84\x3c\x7f\xe9\xda\xc0\x9d\xfb\xb3\x99\xdd\x86\x13\xb5\x9a\xb9\x83\x5b\x42\xc7\x7d\xac\x7e\x84\xd8\xb9\x1f\x51\x4b\x77\x30\x5c\x9f\x6f\xde\x12\xfb\x9f\xc7\x65\x88\x7f\x39\xef\xe6\xfb\x97\x7f\xbe\xc0\xd3\xc2\xc4\xbf\x04\x76\xb9\xb6\xcb\xbf\xfc\xf3\xe5\x2f\x6b\xf0\x0f\xf6\x0f\xfc\x77\xc6\xfe\xde\x37\x8c\x51\x4e\x5d\xef\x2f\xe7\x42\xee\x6a\xb9\xb4\xb3\xb0\x70\x14\xfe\x5f\xfe\xf9\x42\x5f\xff\x1e\x3b\xee\x82\x13\xfc\xe5\x9f\x2f\xff\xef\x6f\x5f\x2a\xfd\x9f\xbf\x5d\x37\xe1\x58\xf2\x50\x09\xe0\xda\x93\x98\x48\x84\x10\x20\x44\x19\xa2\x90\xd1\x88\x71\x57\x12\xc8\x29\xf4\xb8\x14\x8c\x33\x57\x52\x48\x5d\x6a\x21\xf6\x2c\x20\xd0\xb3\x4a\x41\x84\x35\x22\xfc\xdc\xa2\xaf\x74\x0f\xe2\xfb\xcb\x3f\x6f\x6a\x3b\x31\x76\x90\xc3\x5f\xfe\xf9\x02\x5e\xdd\xfa\x5f\x37\xcf\x07\x33\x35\x3f\xb4\xcb\x65\x96\x43\xad\xac\xeb\x0a\x8a\x5d\x6e\x04\xa3\x2e\xe4\xd8\xb5\x9e\x75\xb1\x16\xc8\x72\x2d\xa4\xa1\x8c\x60\x0a\x05\x02\x96\x5b\xc6\x3d\xa4\xa0\x61\xc8\x18\x17\x82\xbf\xfc\xf6\x4e\x0d\xdf\x90\x81\xf5\x30\x54\x08\x28\x2c\x85\xb5\x87\x3a\x10\x42\x9c\x5a\x25\x20\xe7\x5c\x30\xad\x5c\x4a\x18\x65\x1e\xc6\xc6\x75\x89\x87\x3d\xeb\x32\x60\x28\x35\xc6\x83\x0c\x1b\xf9\xf3\x32\x80\x7f\xbc\xbd\xe7\xaf\xc2\xf9\x2a\x7c\x2c\xef\xdf\x93\x30\xf8\xe4\xf5\x33\x12\xfe\x74\x5d\x4f\xb2\xb2\xff\xc8\xe0\x3f\x32\xf8\x8f\x0c\xfe\x23\x83\xff\xc8\xe0\x3f\x32\xf8\x8f\x0c\xfe\x23\x83\x27\xca\xe0\xf8\xed\xff\xfb\xed\x7f\xfd\x48\x00\x71\x08\xaf\x02\x77\x7e\xdc\x6b\xf2\xbd\xeb\xf7\x2f\x71\xe8\x31\xcf\x12\x97\xfd\x48\xa9\xc2\xba\xf1\xce\xc8\x8f\x97\x16\xc9\x5c\xbc\x3d\xad\xcf\xab\xa3\xc6\xce\x5b\x2d\x7c\x7f\x1b\xe9\xa5\x13\xf3\x49\x2b\x5a\x8c\x89\xcb\x82\xa3\xd4\xf1\x73\xef\x6e\x71\x64\xdf\xcd\xda\x51\x82\xc6\x76\x2a\xa9\xa3\xf3\xd5\xb6\x63\x2b\xab\x85\xa8\x45\x56\xc3\x62\x31\x9b\x28\xef\x58\x37\x20\x66\xff\xe8\x64\xc4\x31\xb9\x57\x69\x6c\xf6\xe5\x01\x43\x99\x1c\xab\x41\x7f\xb1\xae\x12\x8f\xe6\x6b\x91\x8d\x3b\xd9\xe4\x9b\xf5\x75\xa7\x05\xf6\xf1\x16\xaa\xb5\x98\xd3\x3a\xb5\x7a\xb6\x21\xf1\x9b\x55\x53\xc9\xd8\xb8\x8a\xc2\x71\x63\xe8\x4e\xa7\x8d\x6a\x61\x59\x5e\xc0\x45\x25\xb9\xeb\xa7\xfd\x4a\x63\x41\xb2\xf1\xf1\x9a\xb3\xd5\x7c\x1a\x5d\x6d\x72\x7e\x48\xe2\x83\x79\x5e\x96\x50\x2b\x22\xa6\x5e\x3a\xd1\x69\xd4\x13\xd5\x54\x17\xae\x50\x6d\xd8\xf2\xec\xa4\x94\x9a\x81\x15\x76\xaa\x44\xe4\xff\x93\xbc\x79\x2f\x79\x73\x54\x82\xe7\xc4\x63\x19\xb3\xdd\xaa\x79\x26\x20\xd5\x54\xab\xba\x1a\x48\x3e\xdc\x6c\x53\x58\xa5\x70\x75\x6b\xbd\xe8\xac\xb3\x4a\x80\x1d\xec\x1c\xca\xc7\x4f\x79\x92\xe5\xa2\xc4\x0a\xb6\xac\xfa\xa3\x6d\x51\x35\x2b\x92\xc5\xf6\x5e\x20\x2d\x70\xfd\x65\xa9\xd7\xd9\xc7\xda\xb9\x71\xca\xcf\xf3\xf1\x7a\xbc\xb9\x6c\xf1\x70\xac\xef\x56\x14\x57\x39\xf4\x8b\x29\xc4\x5a\xad\xd2\xf9\x46\x1c\xae\x62\x26\xe3\x37\x56\xfd\xe2\xba\x1a\x26\x78\x6c\x90\x2d\xe0\x92\x95\xa6\x55\xf1\xd2\xd9\x48\x6e\x48\x73\xeb\x66\x39\xd2\x73\x42\x7e\x7c\xbe\xee\xa7\xc4\x79\x9d\xf5\x65\x03\x81\xdb\x2b\xb6\x5c\xd5\x23\x8d\x63\xf5\x09\x35\xed\xec\x86\xb9\x74\x05\x97\xaa\xfd\xf6\x0c\xc4\xfa\x5b\xdf\xa7\xeb\x2a\x89\x05\xbb\xcd\xae\x38\x86\xb5\xaa\xe1\xb1\xa5\x3b\x8b\x65\xbd\x5a\xa7\x37\x59\x0c\x3b\xab\x78\xd5\x9b\xe5\xd5\xda\xcd\x62\x87\xb7\xf8\xc4\xdb\x0a\x95\x6f\x86\x53\xcd\x33\xe3\xe8\x6a\x58\x95\xdd\xd2\xb1\x96\x3c\x1b\xd9\x21\x1e\x4d\xfd\xac\x68\xa4\x27\x89\xa8\xed\xbb\x98\x57\x3a\x61\x26\x9f\xdf\xb7\x5b\x62\xd3\x1a\xf6\x62\x2a\xbe\xa2\x05\x7a\x4c\x26\xf5\x9c\xaf\xed\x2d\xbd\x87\xaf\xd3\x75\xb5\x2e\xb6\xd5\x6a\xd4\xce\x5f\x43\xdd\xef\xd4\x58\x92\xfb\x89\x02\x28\x54\x23\x9b\x6e\x3d\x2e\xf7\x9d\x75\xa7\xd5\xc0\xdb\x61\x65\xd8\x5d\xd5\x35\x4c\xac\xa7\xd5\x82\x3d\xad\x04\x2f\xd3\xe5\x09\x13\x8e\x7f\x43\xff\xea\x52\x5f\xf5\xe7\x0c\xc7\xc5\xc9\xa1\x10\xf3\x87\xa4\xd6\x67\xe9\x39\x0e\xd6\xfb\x46\x25\xed\xaa\x66\x75\x4b\x32\xe1\xbc\x04\x1a\xfd\x55\xd0\x59\x16\x1b\x63\xdd\x0a\x62\xf3\x75\xa6\x14\x44\x36\x40\xa7\x52\x32\x56\xee\x87\xbb\x74\x37\x8f\xa2\x6c\xef\x8d\x3b\xdd\x62\x2b\x19\x93\x1d\xa6\xe2\xa7\xfe\x6e\xe5\x63\x3f\x24\x74\x11\xaf\x24\xb7\xf3\x6a\x14\xfb\x99\x52\x64\x0f\x79\x6d\x37\x0c\xe0\xc4\x2b\xa6\xba\xd3\x6a\xbb\xff\x55\x5f\xe9\x4b\x1e\x3b\x79\xdb\xde\xcb\x02\xcb\xc4\xe5\xc7\x54\xab\x09\xce\x37\x0a\x6d\x92\x02\x76\x50\x66\xce\x4e\xc6\x41\x25\x48\x27\xfb\x6b\x17\x72\x08\x9b\x52\x74\x47\x64\x5a\x18\x4f\x65\x95\xd3\x71\x1c\xaf\x8f\xf4\xc3\x35\x65\x27\x53\x3a\xca\xaa\xf9\xee\x02\xce\xf4\x57\xfd\x55\x63\xd3\x62\x31\x5d\x4c\x25\xd2\x7d\x1e\x74\xbb\x58\xd4\x14\x9d\x66\x0b\x91\x70\xde\xee\x4e\x8a\x4d\xbc\x4e\x26\xdc\x72\xa4\xdd\x5e\xef\x37\xc1\xd4\x43\xcd\x55\xa2\xbe\x5a\x74\x26\xfd\x78\xd7\x9b\xaf\x63\x52\xd2\x6e\x27\xa5\x0b\x05\x5b\xcb\x55\xb3\xb5\xb6\x17\x88\x74\xdb\xc0\xea\x69\xfb\x80\xfb\xf1\x76\xbb\x2a\xf5\xd1\x78\xcb\x35\xe3\x91\xea\x95\xfc\xdf\x68\xc5\xb9\xc1\x5b\xbd\x99\x99\xad\xc3\xe5\xbc\xd9\x2a\xab\x45\x36\x39\x8f\xd9\x42\x3e\x31\x1f\xc6\x4b\x45\xb9\x6d\xec\x3c\xb0\x6b\xc1\xf5\xb8\x07\xe6\x74\xb6\x29\xa5\x6b\x5d\xbd\xc6\x2b\xbf\x61\xca\x9e\xec\xae\xa7\xa4\x35\x34\xa3\xc5\xa2\x85\x36\x23\xd8\xf0\x9a\xb1\x3c\x42\x9e\xd8\x65\x36\x27\x5b\xbe\x1f\x6f\xb7\x9d\xc4\xa3\xf1\x56\x98\x27\x42\x70\x25\xff\xd4\x7b\x42\xba\xc6\x9b\x61\x05\x27\x20\xd4\xe8\xd8\xd8\x49\xb4\x4b\x4d\x6a\xc3\x99\xef\xab\xdd\x26\xb3\x58\xc6\xa0\x6c\x78\x04\x0c\x76\x2c\x3a\x1d\x36\x9d\x59\xc9\xd9\x32\x5f\x44\x57\xd6\xaf\xa9\xcd\x2c\x82\x6b\xb9\x5d\x6d\x5d\x6d\xe3\x76\x7e\xde\xab\xe8\x39\xd9\xc7\x88\xdc\xbb\xdd\x71\xe2\xa8\xaf\xfb\xf1\x96\xed\xdf\xb4\xf7\xc1\x78\x73\x82\x30\x66\xcf\x44\x8e\x4a\xb8\xad\xef\x78\x5d\xe1\x2d\x3d\x5e\xc4\x32\x95\x5d\xd0\x5e\x94\x90\xf5\x53\x85\x24\x31\xcd\xcc\x8e\xd0\x66\xa4\x52\x1e\x83\xb8\x5f\xd0\xeb\x46\x57\x8d\xa3\xb1\x22\x18\x97\xfc\x6d\x75\xe2\x27\xa2\x8b\x4c\xbd\x95\x03\xbb\x04\x68\x95\x23\xce\xde\xcf\x07\xb1\x6c\x26\xb6\xa9\x2d\x54\x01\x4d\x97\x85\xd2\xca\x39\xf5\x8f\xf7\xe3\xad\x7b\xd3\xde\x07\xe3\x2d\x16\x2b\x36\xf7\x9b\x2b\xf9\xbb\xef\x09\xe9\x0a\x6f\xb1\xf9\xc4\x54\xe4\xaa\x5a\xa9\xb8\xed\x79\x71\x9a\x72\x17\x70\x9b\x63\xd1\x69\xa2\x1c\x34\x1a\xce\xba\xdb\xcb\xdb\x7d\x29\xba\xc2\x43\x3f\x55\xda\x19\xed\x46\x87\x29\x62\x88\xd3\x1c\xd6\xf2\x65\x94\xa8\xd4\x75\x30\x74\x7a\x95\x76\x7c\xd0\x6e\xad\x20\x48\x8c\x23\x70\x0c\xc0\x69\x95\xfd\xfd\x78\x6b\xdd\xb6\xf7\xf2\xf5\x21\x78\xcb\x94\x38\x45\xce\x71\xe9\xfd\xb8\x6e\x47\xd3\x77\x85\x74\x8d\xb7\xe4\x60\x02\x5b\x83\x7d\x8e\xe2\x49\x4b\x8e\x66\xc5\xa0\x11\x97\xd1\x04\x8d\x86\x4b\x30\x52\xed\x78\xbf\xee\x82\x7c\x7c\x6a\xea\x8b\xc9\x42\x57\xa3\xe3\x44\xb2\xbf\x6e\x44\x46\x5e\xbd\x90\x58\x55\x59\xbf\x28\xd3\xb9\x78\xdd\xf3\x53\x9d\x06\x99\x2f\x6d\x15\x4c\xe7\x85\x75\x3c\x7e\x82\xce\xdd\x78\xcb\x3c\x19\x6f\x89\x58\xb8\x8d\x9f\x89\x1c\xab\xfe\x10\x6f\x5b\x31\x5c\xba\x20\x56\x2a\x4e\x66\x1b\x27\x48\xcd\xa2\xa1\x6a\xa7\xcc\x7e\x3f\x98\x39\xf1\xa0\xd7\xd0\xba\xbe\x5b\x39\xb6\x4e\x27\x32\x92\x72\x53\xf1\x98\x0f\x07\x6c\x38\xcc\x06\x15\xd4\xe7\x3a\x3d\xcc\xf7\xeb\xf5\x72\x38\xc5\x34\x9d\x8b\x0c\xfd\x51\xca\x1f\xf7\x68\xf5\xd4\xf5\xde\x8d\xb7\x37\x9d\xc4\xa3\xc7\xb7\x18\x2e\xf5\x4e\xf2\x8d\xfd\xd0\xf8\xe6\x4c\xed\x0a\xba\x3a\x5f\xae\x2f\xc6\xce\xd8\x69\x89\xd2\xa8\x3a\xcb\x4e\x4b\x46\x16\x70\x34\xe5\x06\x81\x41\xdc\x98\x8a\xae\x8e\xd2\xe3\x71\x36\x95\xe8\x2e\x6b\x91\xd4\xd0\xb4\xf3\xfb\x3a\x32\xe1\x7c\x53\xc0\x11\x59\xda\x75\x57\x46\x27\x17\x89\x76\xbf\x9b\xcb\x20\xb6\x39\x55\x7a\x3f\xde\x6e\xed\xff\xd1\x78\xab\x6e\xc8\xe8\x6c\x84\xc7\x78\xe9\xfd\x2d\xdd\xae\xf0\xb6\x1d\x79\x2b\x27\xe8\x04\xcb\xc6\x76\x1d\xa1\xa5\x56\x77\x16\x68\x10\xf8\x8b\x38\xeb\xf9\x93\x55\x23\xda\xf1\xf5\x68\x19\x12\x6a\x1d\x5b\xea\x15\x37\x73\x19\xad\xb5\xd0\xa0\xd0\xd9\xd5\xc7\xad\x72\x6b\x8c\xca\x02\x92\xa8\xe9\xef\xac\x9a\xf3\x62\xa4\xd0\x6f\x0f\x75\x25\xf6\x49\x7f\xf2\x4d\xa4\xf0\x60\xbc\x5d\x2c\xe9\x84\xb7\x77\x2d\xe9\x95\x3f\xb9\x28\x36\x0b\x25\xb2\x9e\x0e\xca\xa3\x7e\xc6\x77\x7a\x49\xda\x2f\x65\xd4\x20\x3d\xab\x46\x6c\xa9\x3a\x68\xa5\x13\xa9\x66\xa9\xdd\xf7\xfd\x55\x77\x11\xdf\xa7\x47\x11\x7f\xa5\x92\x53\xeb\xad\x32\xa5\x54\x07\x95\x46\x4e\x82\x2e\xdc\x4e\xa3\x3a\x9a\x96\xb8\x88\x45\x52\x9b\x68\xb1\x7f\x8a\xbf\xee\xc7\xdb\xed\xbe\x3c\x8f\xc6\xdb\xda\x83\xa3\xd3\x06\x44\xc7\xf8\x20\xf1\xee\x3e\x40\xd7\xe3\x9b\xa9\xa7\xd6\x93\x58\xd1\xe1\x4c\x76\xa6\xb5\x62\x2d\xee\xb3\x19\xce\x17\x86\x9b\x12\x5b\x95\x1a\x53\x31\xa8\x4c\x9a\x9e\xbb\xcb\x12\xed\xed\x3b\xc5\xe1\xb4\xdd\x9b\x8b\x69\x31\x00\xa6\xd0\xe8\x31\x5b\x1f\xba\xc4\x02\xd3\x1d\x46\x96\x65\xd3\x8a\x17\xed\x3c\xe1\xed\xc1\x67\xe3\xb7\xfc\x6d\x7b\x2f\x5f\x1f\x82\xb7\x74\x34\x5e\x0e\xae\xe4\x9f\x78\xd7\x94\xae\xf0\x36\x15\xaa\x94\x83\xa2\x6a\xca\x48\x4c\x06\xd1\x45\xb4\x91\xab\x75\x64\x36\x31\xa9\x2f\x06\xaa\xb4\xdf\xf6\x27\x2a\x5a\xea\xef\xcc\x3c\xdd\xd9\x9a\xbe\xd3\xed\x3a\x52\xd7\x0b\xc6\x1d\xcf\xc6\x55\xb1\x4f\x6d\xbc\xba\xe9\x4e\xa7\xa3\xfc\x62\x96\xd8\x76\xd3\xb0\x09\xc0\xb2\x10\xfb\xa4\x3f\x99\xb8\x0d\x4d\x1e\x8c\xb7\x54\xc3\x49\xed\xaf\xe2\xb7\xf6\x6d\x7d\xc7\xeb\x0a\x6f\xd9\x48\xcc\xfa\xf3\xbd\x98\x93\xf2\x2c\x4c\x17\xea\xbc\x5a\xa9\xf6\x6b\x95\x44\xdb\xe1\xcb\x51\x2c\xd9\x1b\x00\xaf\x33\xda\x16\x0c\xae\xb5\xc3\x6c\x6e\xba\xde\x47\xcb\x71\xd0\x4b\xcd\xfa\x68\x95\x6e\xcb\x41\x39\x88\x4f\xea\x94\x11\x9c\x1f\x77\x5a\x03\xb2\x2d\xb5\x13\x66\xd3\x3f\xe9\xfb\x7e\xbc\x81\x9b\xf6\x3e\x1a\x6f\x74\xed\x95\x4f\x84\x8e\xe3\x5b\xec\xdd\x9d\xe2\xae\xf1\xb6\x69\xe7\xcb\xf9\x49\x27\xd2\x9a\x24\xfb\xa5\x61\x6e\x83\xc6\x6e\x27\x6e\xfc\x75\x7f\x56\x6d\xeb\x78\x6d\xb7\xae\x6a\xd8\x49\x7a\xc3\xd6\x24\x37\x74\x56\xe5\x58\xdc\x46\xe2\x36\x9b\x4d\xc5\x57\x11\xde\x63\xcb\xbc\x4f\x9a\x6e\x61\xe3\x35\x06\x95\xa0\x82\x4a\x76\x4b\x87\xeb\xfe\x67\xe3\xb7\x5b\xfb\x7f\x34\xde\x3a\xf5\x8c\xf6\xaf\xe4\x7f\x8b\xef\xd3\x75\x85\xb7\x72\x41\x70\x29\xfb\x66\x42\xd2\x72\x1c\x8f\xba\xe5\x06\x9b\x57\x57\x68\xef\x25\x68\x7a\x30\x48\x6e\x9d\x7c\x98\x9f\x6a\x1e\x08\x7f\x3f\x0e\x76\x8b\x6c\x37\x8b\xa0\x5d\xc4\x0b\xee\x64\xb5\x29\x4c\x34\xda\xc4\x86\x53\x5a\xde\x2c\xc1\x0e\xed\xf7\xdb\x6e\x86\xaf\x17\xe5\xcf\xe2\x2d\x7e\x9b\xbf\x78\x30\xde\xe2\x2d\x67\x3d\xbe\x92\xff\xfb\x49\xa5\xeb\xf1\xad\xc6\x26\x93\xf8\x2a\xce\xfd\x48\xc6\x2b\xa4\xb2\xe3\x92\x97\xe8\xdb\x19\x99\xa7\x79\x02\xa4\x50\x35\x31\xcc\x20\x23\x97\xd9\x42\x39\x5c\x8f\x4b\x76\x3b\xca\x89\x74\x7e\x59\xac\xa9\x92\xee\xae\x2a\x4d\x8b\x13\x71\x34\xab\xf2\x1c\xa9\x11\x9a\xa3\x89\x71\xa2\x88\x2b\xfd\xd3\xd8\x71\x7f\xfc\xd6\xbc\x69\xef\xa3\xe3\xb7\x7c\xbf\xb3\xbb\x96\xff\xbb\x4e\xf7\x75\xbe\x04\x84\xb1\x7a\x32\x29\x9d\xd6\x98\x0d\x27\xf9\x4c\x24\x42\xab\x40\x6e\xeb\xba\x5a\x0c\x46\xd8\xa9\x0c\x96\x89\xd1\x08\xe4\x76\xdc\x77\x8a\x5b\x56\x5a\xe0\x1d\xee\xee\xf3\xbc\xa4\xa2\x99\x6d\x26\xe6\x6c\x24\xc6\x25\x68\x3b\x4e\xb6\x31\xc1\xdb\x6d\xc5\xb2\x59\x9c\x88\x93\xdb\x7f\x3f\xde\x6a\xb7\xed\xbd\x7c\x7d\x8c\x3f\x39\x88\x90\xf4\xe9\xc9\x03\xec\x62\x99\x77\x4d\xe9\x0a\x6f\xeb\xfe\x22\xce\x1a\xbb\xe4\xa0\xbe\x1c\xa4\x78\x9e\x6c\x36\xe5\xbe\x01\x41\x7c\x3d\x4d\x39\xd5\xbe\x57\x84\xc9\x7d\xc4\x26\x37\x6d\x3d\x8d\xc6\x2a\xb9\x7a\x1b\xb4\xe7\xe5\xc6\xb6\x49\x3d\x9b\xcc\x3b\xe5\x79\xa1\xab\x32\xb9\xf5\x7a\x9d\x88\xb4\x7b\xf9\x29\xad\x64\xa3\x3b\x65\x3e\x8b\xb7\x37\x49\x9e\x47\xe3\xad\xbb\xce\xb7\xaf\xc6\xb7\xfc\x47\xf9\xc9\xec\xd0\x8d\x75\xf2\xc5\x4d\xa5\x59\x4e\x75\xa3\xbc\xea\x54\x73\xf9\x6e\x9b\xef\xfd\xd5\x80\x97\xe4\xaa\xbd\xdd\x6c\x54\x93\xac\x86\xde\x6e\x6f\xc0\xa4\xb6\x5d\xa6\x93\xa5\x49\xd1\x91\x0a\xcf\xb2\xe9\x7c\xba\xa0\x52\x7d\xe9\x2d\xe6\xf1\x59\xad\x91\x0c\xf0\x72\x98\x56\x99\xfa\xa7\xf3\x93\xb7\x8d\x7e\x34\xde\x1a\x40\x6d\xae\xf3\x93\xef\x86\x26\x57\x78\x8b\xd3\xba\x99\x36\xf7\xe9\xca\x0e\x2e\xfc\xdd\x48\xc8\x81\x18\x0d\x83\x74\x67\xd4\xcc\x4f\xa7\x7b\xe9\xba\xaa\x89\x86\x78\x46\x4b\xbd\xd2\xb8\x01\x12\x8d\x45\x7e\x5c\xcb\xcc\x13\xa1\x9d\xaf\xd3\x49\x5c\xee\xc6\x32\x1b\x38\x8f\x85\x05\xb7\xbc\xaf\xa5\xe2\xd1\xd1\x70\xed\x76\x83\xcf\x8e\x6f\xb7\xf6\xff\x68\xbc\x95\x22\x49\xd3\xbd\x92\x7f\xfa\x3d\x21\x5d\xe3\x6d\x0e\x07\x45\xbf\x28\x96\xa5\xa1\xc1\xf3\x59\xac\xbe\x8e\x06\x8b\x7e\x6d\x93\xcd\xee\x0a\xfd\xb1\x8d\xe9\x66\x31\x23\xeb\xdd\x46\xba\xdf\xe9\xb4\x7b\xf5\x18\xac\xf2\xda\x9a\x92\x6a\xbf\xa3\x73\xb4\x53\xda\x56\x16\x8e\x1c\xf7\xf7\xd1\x42\x77\x9e\x73\x71\x4b\x16\x82\x71\x64\x7a\x62\xea\x7e\xbc\xa5\x9f\xec\x4f\x26\xb7\xb6\x19\x9e\x89\x38\x3f\x82\xb7\x38\xe9\xd9\x52\x7b\xb6\xdc\xc9\xcc\x64\xda\x8c\x62\xd7\xeb\x8a\x58\xb3\xd5\x8e\xd0\x0d\xee\xf3\xec\x1e\x2f\x47\xbb\xe1\xaa\xe9\xf4\xbb\xa9\x69\x77\xd3\x1a\xb8\xc5\x64\x4b\x44\xfd\x24\x19\xe0\x8c\xb3\xdc\xae\x5a\xab\x8c\x67\xf8\xcc\x49\x95\x8b\x8d\x79\x7a\xe3\xcb\x56\x2d\x5a\x3d\xd9\xef\xfd\xfe\xe4\x93\xf3\x93\x4e\x63\x14\xcc\x4f\x91\xf4\x31\x7e\x8b\xdd\x8e\xa7\x27\xfa\x57\xfe\xa4\x5e\xb1\x62\x7a\xb0\x03\x30\x25\x97\xcd\xfd\x92\x56\xea\x30\x9f\xae\xd4\x12\xac\x83\x73\xab\x19\x28\x2c\x4a\x71\x15\x66\x6b\x35\x92\x2a\x38\xf1\x05\xdd\x36\x5a\x7d\x67\xd7\xda\x1b\xaf\xec\xf7\x33\x05\x6f\x5c\xdf\xd1\x26\xae\x37\xea\xc9\xca\xbe\x13\x59\x05\x59\x90\x07\x9f\xf6\x27\x07\xb7\xed\xbd\x7c\x7d\x08\xde\x52\x19\x00\xcf\x39\x99\xa3\x7c\x0a\xef\x09\xe9\x1a\x6f\x93\x46\x7a\x42\x0b\x13\xde\xae\x31\xdf\xcf\xf8\xa4\x51\x69\x64\x86\x95\xa0\x32\xe8\x56\x93\x6e\x65\x95\x32\x64\xa2\x77\x04\xcf\x86\x43\x2f\x88\xc7\x67\x85\x71\xcf\xdb\xfb\xbd\xee\xb6\x9c\x98\x3a\x99\xcc\x3a\x5a\xeb\x8c\x83\x71\x2c\xc3\x6d\x6d\xbc\x8d\xf7\xba\xb1\x5a\xa7\x56\xfd\x2c\xde\xb2\x4f\xc6\x9b\x53\x28\x54\x3b\x57\xe3\xdb\x9b\x57\x59\xc7\xeb\x0a\x6f\xa5\x81\x9b\xcf\xcc\xe1\xae\xd5\x18\x93\xb5\x2a\x4e\x06\x62\x54\x8f\x86\xc5\x38\xe8\x74\xe7\x8e\x70\x6c\x7e\xd6\xa8\xf7\xfc\xe8\x68\x9c\x5d\xa7\xc3\x2c\xe8\x66\x41\x6c\x2d\xbd\x6d\x21\xb9\x58\x57\xca\x6a\x45\x27\x05\x18\xb1\x70\xe3\xc3\xd8\x20\xba\xc0\x11\xe9\x78\xfd\xc1\x67\xf3\x93\x0e\xb9\x69\xef\xa3\xc7\x37\x9b\x4c\xea\x2b\xbc\xa5\x3f\xc2\x5b\xbc\x18\xa7\x2c\xdd\xe2\xcd\x99\x2e\xef\x4d\xca\x0f\x3b\xe3\x66\x45\x96\x77\x89\x58\xab\x17\x2b\xda\x40\x17\x2a\x38\x0d\x4c\xa4\x3c\x4c\x95\x67\x88\xc5\xeb\xcd\x4d\xbd\xd9\x69\x76\x5b\xcb\x75\x25\x9d\x2f\x95\xa7\xf1\x64\x76\xd9\x4c\x34\x0a\xb9\x36\x19\x86\xd1\x5d\x77\x10\xcf\x93\xcf\xe6\x27\xeb\xb7\xed\xbd\x7c\x7d\x08\xde\xca\xc5\x48\x76\x78\x7a\xf2\x18\xc6\xc9\xf7\x84\xf4\xea\x7d\x00\x28\x71\x39\x0e\x9d\xf9\xa4\x5e\x1f\xf9\xeb\x26\x05\xd9\x71\xb8\x1f\xae\x6a\xcb\x5c\x89\x6d\xa7\xb5\x71\x8a\x7b\x41\x2b\xd2\x1d\xe5\x69\x5f\x74\xda\x15\xdb\x37\xed\x55\x46\xac\x28\xdd\xc7\xf7\x3d\x37\xb6\x37\xc6\x17\x71\x35\x5c\x25\xdb\xf3\x5c\xb1\x32\x2a\xf6\x7a\xd9\x93\xd3\xfd\x89\xf1\xed\xc9\xf1\x5b\x8a\x47\x02\xef\x4c\xe4\x28\xf9\x8f\xf0\x16\x5b\x04\xd5\x35\xce\xce\x3c\xaf\x5e\x1f\x38\x3a\x32\x2d\x73\x3a\x4f\x95\xf4\x7a\x92\xac\x8c\x03\x47\xd4\x76\xd9\x1d\x1e\xe5\xe6\x0b\x6e\x5b\x05\x39\xde\x2c\xcb\xfd\xa5\x2d\xa8\x5c\x41\x64\x69\x6d\x99\xde\xa8\x92\xce\xa4\x2a\x39\x90\x0b\x0a\x13\xee\xaf\xd3\x78\x5f\x1b\x9f\xeb\xbc\x7f\x7c\xf3\x6f\xda\xfb\x68\xbc\xb5\x96\x7e\xee\xd4\x29\x1d\xf3\x25\xf1\x5b\x7c\x9f\x6e\x5d\x8d\x6f\xa5\xc6\xd6\xe8\xaa\x1b\x36\x7d\x27\x9d\x0b\xb6\xdb\x4e\xd5\x33\x9d\x54\xbd\xaa\x32\x12\xc6\x53\xb5\xcd\xbe\x46\x9a\xf9\x6a\xa7\xd4\x8e\x51\xdb\x1b\xa1\x44\xab\x23\x76\x6e\x14\x94\x37\x68\xdf\x5a\xe4\xa7\x64\xd2\x6e\x3a\xbd\x42\x35\xb3\xdf\x25\x52\x2b\x35\x48\x4c\x33\x8b\xe0\x04\x8a\xfb\xf1\xd6\xb9\x6d\xef\xe5\xeb\x43\xf0\x16\x1f\x31\xb5\x3a\x3d\x79\xd4\xc7\x87\xe3\xdb\x34\xb9\x8f\xb8\xc3\x42\xaf\x9d\xec\x64\x27\x41\xb2\x1d\x2e\xbb\x30\x3b\x84\xde\xde\x57\x5b\x64\xd2\xf1\x64\x34\xb5\x02\xe9\x41\x79\xb7\xd0\x1b\x09\x12\xeb\x20\x32\xc6\xaa\x55\x9e\x56\x0b\x8d\xd8\xae\x49\x73\xed\x51\x72\x6d\x58\x79\x1e\xf1\x5b\x78\x18\xe1\xf9\x4a\x25\xdc\x3a\x9f\x8c\xdf\x32\x4f\x1e\xdf\xe2\xae\x99\xe4\xce\x44\x8e\x1f\x1f\xf9\x93\xb9\x5c\x5a\xad\x74\xca\xcd\x94\x95\x8a\x8c\xda\x19\x36\x6f\x4e\x73\xc9\xcc\x92\xc9\x95\x24\x53\xd2\x58\xd7\x8a\x29\x77\x9e\x08\xe7\xe3\x72\x65\x9e\x5e\xf7\x15\xc8\x46\xd7\x41\x06\x17\x0a\xc3\x5a\x7b\x3b\x9d\x0d\xca\x23\xed\x82\x62\x13\x47\x20\x48\x0f\xa6\xca\xcd\xd2\x72\x35\xb8\xe8\xff\x39\xeb\xe0\xbe\x71\x7e\xe3\xcf\x2e\x5c\xbb\x3a\xc3\xf1\x41\x5b\x86\x7f\x66\xb3\x81\xf3\x7e\x05\x12\x21\x8c\x39\x02\x98\x09\x4a\x38\xa7\x02\xf0\xb7\x1b\xfd\xde\x1e\x05\xf6\x2e\x27\xf7\x9f\x97\xf6\xdf\x8d\x93\xff\x3a\x9d\xc4\x1a\xf1\xff\x43\x74\xf2\x93\x9c\x7c\x0b\x79\xdf\x3a\x3d\xf3\xa7\xb1\x77\x7d\x82\xe6\x65\xb9\xa6\xc6\x52\x58\x4d\x94\x15\x92\x53\x86\x11\x65\x04\xbb\xca\x20\xe8\x4a\x62\x21\xd6\x9e\x0b\x38\xd1\x18\x61\x6b\x05\xb6\x90\x40\xed\x71\x00\x15\x35\x12\x10\x0f\xea\xf3\xb9\x52\xaf\x66\x3f\x17\x6f\x46\xa3\xd8\x30\x1a\x03\x05\x90\x4b\xef\xc2\xc1\xa6\x04\x27\x5d\xa0\x76\x73\x1f\xca\x52\x66\xbb\x2e\xc4\x77\x65\x1a\xc6\x92\x6e\xbc\xb5\xde\xa4\xe4\x06\xf7\xc3\x65\x79\xd6\x7b\x77\xa8\xf9\x66\x4f\x7e\x73\x25\xbf\xf6\xfe\xf7\xd6\xdf\x8d\x46\xdc\x1b\x7a\x3f\x58\xff\xdb\x55\xec\xef\xcb\x9d\x71\x17\x50\x69\x21\x84\xc2\x23\x1e\x97\x5a\x60\x46\x84\xa5\x9c\x49\x2d\xb4\x07\x3d\xe8\x69\x0f\x20\x2a\x8d\x04\x06\x59\xa2\xa8\x12\x4a\x01\x41\x91\x4b\x20\x13\xfc\x24\x77\xf4\x76\xf5\xf3\x27\xf9\x16\x57\xae\xd0\xbb\xb3\x6e\x3f\xc9\xb7\xc7\x5d\x2d\x30\x90\x18\x0a\xcc\x84\xc7\x24\x71\x85\xc0\x40\x7b\x5c\x48\x41\xa0\xe5\x16\xb9\x84\x19\xd7\x62\x60\x19\x90\x4c\x1a\x21\xb4\x01\xae\xa5\x42\xb8\xda\xca\x13\xdf\xf8\xe1\x7c\xf3\xab\x90\xeb\xdd\xb7\xd5\x9f\xe4\x5b\x40\x08\x25\x72\xb1\x60\x04\x1b\x8f\x63\x17\x40\xaa\xa8\x82\x86\x73\x2d\x00\x32\x9e\x07\xa8\x21\x1e\x05\x9e\xcb\x0c\x04\x02\x32\xa5\x38\x75\x81\x62\x10\x48\x4f\xaa\xf3\x69\x57\x6f\x71\x76\xcd\xf7\x4a\xc5\x75\xab\xd3\x43\x89\x49\xa7\xad\x96\x2d\xd6\xdc\x6e\x74\x1b\xa7\x4b\xb9\xfe\x7c\x86\x9d\x7a\x7c\x90\x4d\xcd\xa9\xde\xd6\xb3\xa7\x8c\x33\x26\x35\x78\x7e\x73\xf1\xee\x0b\x8c\xef\xf1\xed\xbc\xf3\xd6\xfa\x9e\xfa\xad\x7b\xa9\xff\x19\x38\xd3\x86\x08\x66\xb4\x31\x00\x19\xc2\x80\x80\x9c\x71\xe8\x1e\xe0\xc4\xad\x34\xcc\x0a\x46\x5d\x85\xa4\xab\x09\xb4\x0c\x19\xae\x94\xc7\x81\x42\x9e\xb5\x54\x63\x66\xec\x49\xee\xe8\xbb\x72\xff\x49\xef\xf4\xe1\x72\xbf\xa7\xfe\x67\xcb\x9d\x1b\x4f\x50\xee\x22\xec\x72\xe3\x59\x2d\x39\x31\xdc\xc5\x92\x32\xce\x29\x13\x54\x09\x6b\x3c\x25\x88\x64\x5a\x73\x01\x3d\x83\x09\x73\x85\x45\x00\x51\x4f\x19\xa9\xbd\x93\xdc\xdf\xc1\xf9\x27\xed\xcd\x25\x17\xbe\x9f\xd1\xbf\x61\xc2\x99\x76\x19\x91\x94\x61\x22\x84\x7b\xe8\xc3\x8d\x40\x5c\x02\xa5\xa4\x4b\x08\x23\x12\x0a\x81\x30\xd2\x90\x02\x83\x04\x23\x06\x62\xcf\x4a\x4f\xb9\x96\x12\xc0\x4e\x7c\x93\xef\xf2\x7d\x8f\xbe\x9f\xcd\xb7\x55\x92\x50\x82\x99\xc2\x9a\x51\x60\x3d\x25\x04\x60\xd8\x72\xcc\x29\x14\xae\x07\x25\x12\x46\x2a\x82\x0d\x54\x5a\x61\xeb\x32\x41\xf8\xc1\x81\x60\x40\x63\x8e\xb1\x3d\x9f\x8d\xf6\x7d\x9c\xdd\x3f\xab\xfd\x7e\x9c\x25\x3f\x57\x7f\xf9\xc9\x38\x23\x90\x29\x86\x5d\xec\x41\x22\x21\xc5\x9c\x49\xe1\x1a\xcd\x3c\x29\x20\x90\xdc\x1a\x61\x09\x71\x15\xe2\x06\x19\x09\x00\xd3\x06\x68\xc5\x84\xc0\xc8\x6a\x4f\x1a\x4a\x4f\x72\x7f\xc7\x8f\xf8\x24\xdf\xc5\x27\xdb\x9b\x8b\xa4\x24\xc2\x40\x57\x09\xae\x95\x41\x16\x23\x29\x5d\xa8\x01\x14\xae\x94\xcc\x45\xc8\xf3\xa8\xa1\xcc\xa3\x9c\x62\xed\x62\xe1\x01\xcf\x08\xe1\x12\x83\x5c\x6a\x24\x39\xf1\xfd\x4e\xff\xf2\x49\xbe\x0b\xcd\x0b\xdf\xcf\xf0\x23\x28\x25\x56\x21\x24\x21\xb6\xda\x03\xd0\x73\x89\xc6\x8a\x18\x06\x34\x95\xca\x22\xe1\xe1\x83\x2f\x09\x80\xa1\x9a\x19\x45\x80\x62\x52\x70\x45\xb1\xd5\x46\x70\x0f\xf0\x13\xdf\xef\xf4\x2f\x9f\xe4\x3b\xb7\xb9\xf0\xfd\x0d\x40\x7d\x4e\xdf\x44\x68\x22\xa4\x40\xc6\x35\xd0\x03\xfc\xe0\x17\x5b\x8b\x91\x90\xc6\x45\x9a\x21\x26\xb5\x6b\xc1\xc1\x57\xe4\x50\x60\x63\xb4\x12\x16\x1b\x57\x21\xaa\xa1\x15\x44\xff\xfe\x65\x53\xe7\xdb\xfe\xe5\xd1\xfd\x6a\xfc\xc7\xf8\x76\xde\x59\x45\x72\x4f\xfd\xfa\xd6\xde\x7e\xb0\xfe\x1f\xee\x5f\x30\x57\x44\x40\x20\x8c\x81\x04\x23\x8e\x8d\xeb\x41\x17\x09\x24\x99\x61\x80\x08\x03\x24\xa4\x2e\x03\x1c\x1d\xba\x7d\x4d\x3d\x2e\x89\x16\x92\x32\xa0\x08\x70\x81\x7b\x92\xfb\x3b\xfd\xcb\x27\xf9\xee\xdd\xda\xdb\x83\xf9\x96\x9e\xb4\x8a\x43\xa2\xa1\xc2\x92\x31\xa2\xa1\x65\xc6\x03\x9e\xf2\x0c\x54\x0a\x72\x6b\x14\x87\x5a\x03\xca\x21\xf5\x2c\xc4\x1c\x22\xc2\x3c\x8c\x80\xd0\x58\x41\x0d\x4f\x7c\xbf\xd3\xbf\x7c\x92\xef\x6e\xf1\xc2\x77\xf3\x09\x7c\x7b\x92\x31\xa5\x31\x04\x10\x73\xa3\xac\x60\x2e\xb7\x96\xdb\x03\xb4\x28\xc0\x58\x52\xcc\x5d\x2e\x3c\x71\xe8\x86\x94\xb2\x8a\x0b\xc3\x3d\x23\x30\x81\x98\x18\xc5\xe5\x89\xef\x77\xfa\x97\x4f\xf2\xdd\xf6\x2f\x7c\x77\x9f\xc0\x37\x66\xc0\x08\x09\x84\x00\xd6\x6a\x83\x10\x31\x9c\x02\xa6\xa5\x10\x10\x53\xe4\x69\x97\x69\xa6\xa1\x44\xd0\x13\x44\x09\x6a\xa5\x00\x87\xee\x94\x53\x4d\x29\x03\xfa\x6c\xe7\xef\xec\x46\xf6\x49\xbe\x5b\xc9\x0b\xdf\xee\x13\xf8\xd6\x2e\x74\xa5\x10\xae\x8b\xa4\x91\xec\xe0\x9a\x19\x80\x91\x25\xc2\x13\x0c\xb9\x46\x41\x57\x5a\xc3\x20\xd5\x80\x2b\x57\x18\x4d\xa1\xf5\xb0\x94\xae\xc1\x9e\x42\x92\x9c\xed\x9c\x3d\x9c\xef\x46\xff\xc2\x77\xff\x09\x7c\x33\xa8\x31\x36\xae\x35\x4c\x0b\x68\x8c\x05\x56\x30\xcd\xa0\x56\x44\x69\x17\x09\xa0\x99\x8b\xa9\xcb\x2c\xd1\x4a\x00\x42\x35\x05\x02\x79\x9c\x28\xa9\x90\x66\xc0\x9a\x13\xdf\xfc\xe1\x7c\xd7\xc4\x85\xef\xf1\x13\xf8\x86\x0c\x2b\xa5\x19\x77\xa9\x42\x44\x51\x69\x8d\xa2\x96\x68\x62\xa9\x87\x91\x44\xc4\x63\x00\xbb\x9e\x47\xd1\xe1\x67\x4f\x23\x6a\x95\x95\x82\x53\x2c\x5c\x84\xe1\x31\x3e\xa1\xc7\x03\xdb\x1e\xcc\x77\xb5\x7b\xe1\xdb\x7f\x86\xbe\x11\xf7\x8c\x36\x94\x7a\x56\x79\x08\x5a\x66\x25\x53\xc6\x58\xad\x81\x47\x3d\x97\x63\x4a\x80\xe7\x49\x0a\xa8\xa1\x06\x18\x97\x33\x57\x5a\x97\x49\x8f\x18\xe4\x71\xe6\x9d\xf8\x96\x0f\xe7\xbb\x0c\x2e\x7c\x07\x4f\xe0\xdb\x22\x8a\xb4\x10\x04\x71\xc8\x3c\x22\x3d\x2b\x10\x31\x9e\x70\x25\xb5\x14\x2a\x4a\x35\x01\x46\x43\x4d\x21\x80\x5c\x2b\xc9\x8d\x4b\xa5\x46\x46\x72\x68\xa9\xab\x21\x38\xfb\x4d\xe0\xe1\x8c\x9f\xce\x39\xbf\x5a\xde\xfc\xe8\x8e\x4d\x32\xa4\x11\x12\x5c\x62\x41\xa5\xc1\xc8\x58\x69\x98\xc2\x06\x5b\x2e\x90\x72\xb5\xf0\x90\x01\x5a\x5a\xac\x20\x57\x12\x52\x0e\x15\x01\xc8\x70\xd7\x10\xae\x84\xfa\xfd\xeb\xf6\xe1\x0f\x66\xbc\x10\x5c\x18\x07\x4f\x60\x1c\x60\x82\x8d\x14\x9e\x27\x98\xf6\x88\xa6\x9e\xb4\x88\x18\x2d\x34\x16\x42\x7a\x16\x13\xe3\x71\x05\x19\x73\x3d\x63\xb9\x95\x40\x0a\x25\xb0\x0b\xa1\xc7\xad\x96\x1c\xa1\x33\xe3\x8f\x77\xd9\xf2\xd9\x0b\xe3\xe4\x09\x8c\x5b\x81\x98\x84\x9c\x4a\x57\xba\x94\x4b\xe6\x52\xd7\x95\x50\x41\x97\x43\x0f\x61\xac\x99\x4b\x15\x16\xca\x93\xca\x50\xc9\x0f\x8e\x0d\xa3\x14\x70\x21\xa0\x10\x58\x58\x7e\x66\xfc\xf1\x3e\x5b\xf6\x6a\x26\x91\x78\x02\xe3\x46\x00\x57\x00\xa9\x08\x60\x94\x01\x60\x38\x07\xd4\x72\xa3\x01\xb1\x10\x31\xa0\x3d\x2c\xa9\x40\x46\x12\x48\x08\x53\x92\x7a\x5a\xba\x56\x31\xc6\x04\xb0\x1e\x70\xcf\xdb\xa8\xc2\xc7\x3b\x6d\xe7\x19\xaf\xfd\xaf\xaf\x83\x1e\xed\xac\x1a\xa0\x5d\x42\x88\x47\xad\x04\x56\x2a\x06\x15\x55\x0a\x40\xa8\x84\x66\x08\x73\x66\x3d\x64\xb8\xc5\x80\x10\x28\x14\x14\xe2\xe0\xb2\x68\x0d\xb4\xa4\x9c\x00\x4f\x7c\x39\xde\xfc\xe1\x8c\xa7\x2e\x59\x9f\xd8\xed\xdb\x89\x47\x30\x0e\x0e\x71\x09\x54\x87\xd8\x4b\x6a\xe8\x72\xad\x09\xf6\x0c\x34\x2e\xf0\x0e\xa1\x19\x15\x06\x28\x00\x5d\x8c\xb9\xe1\x48\x01\x8c\x88\x0b\x10\x43\x9a\x0a\x23\x31\x83\x5f\xce\x75\x7f\xbc\xdb\x96\xb8\x84\xc3\xb1\x9f\x09\x87\x7f\x38\xfd\x61\x30\x3f\x74\x6e\x1c\x01\xe3\xe9\x83\x03\x47\x24\xc6\xd0\x23\x00\x6b\x4f\x61\x4f\x5a\x0f\x62\x88\x90\xa7\xac\xa4\x44\x71\xac\xb9\x66\x42\x68\x28\x80\x86\x14\x9e\xdd\x17\xf8\x78\xbf\x2d\x7e\x89\xc3\x63\xcf\x88\xc3\x15\x36\x02\xb9\x44\xb9\x08\x73\xcb\xb9\x87\x05\xf5\xb0\x6b\x3c\xaa\x30\x15\xae\xd2\x2e\xd1\xc0\x85\x48\x73\x8f\x0a\x4d\xa5\x0b\xe5\xc1\xdf\x51\x42\x71\x06\x20\x70\xcf\xfe\x0b\x7c\xbc\xe3\xe6\x5c\x02\xf1\xd8\x33\x02\x71\x0b\x24\xc6\xdc\x5a\xe3\x41\xcc\x18\xa3\x50\x22\x2b\x08\xd0\x08\x6b\x0f\x31\x2d\x98\xe7\x0a\xaa\x25\xd6\x9a\x00\x68\xb0\x82\xae\x25\xd6\x22\x05\x35\xe5\x12\xc1\x2f\x9d\xdb\xc3\x3d\x37\x10\xbd\x44\xe2\xb1\xa7\x44\xe2\x90\x00\x63\x3c\xe0\x72\xea\xf1\xe3\x37\xc3\x25\x96\xd0\x32\x4d\xa5\x44\x5a\xba\x94\x69\xe9\x22\xec\x02\x02\x00\x10\x5a\x02\xe1\x72\xa0\x08\xc4\x56\x03\x7c\x8e\x50\xd0\xc3\x3d\x37\x20\x2f\xa1\x78\xec\x19\xa1\x38\x35\x84\x51\x0c\x28\x27\xd6\xf5\x28\xa2\x14\x22\x4d\xa1\x20\xca\x63\x52\x48\x69\x24\x55\x02\x31\xeb\x32\x7d\x4c\xfc\x02\x8d\x0c\x26\x1a\x5b\x4f\x61\x8a\x0c\x3f\x9b\x3a\x7a\xb8\xe7\x06\xc4\x25\x16\x8f\x3d\x27\x16\x47\x0a\x32\x57\x09\xa4\xb9\x01\xda\x48\x80\x5d\xc4\x88\x40\x1c\x33\xd7\xb5\x5a\x7a\xc4\x7a\x0a\x70\x0e\x38\xb4\x1c\x09\x22\x19\x25\x1a\x2b\xd7\x1e\xc6\x76\x7c\xee\xdc\xd0\xc3\x3d\x37\xc0\x2e\xc1\x78\xec\x19\xc1\xb8\x02\xda\x68\xa3\xa1\x52\x98\x6a\xee\x21\x65\x5d\x04\xa0\x66\x50\x78\xae\xa2\x92\x00\x6a\x89\x8b\x39\xf5\x84\xc7\x99\x42\xc4\x7a\x88\x5a\x21\xa8\x92\xcc\x33\xfc\x4b\x30\x8e\x1e\xee\xb9\x01\x72\x89\xc6\x63\xcf\x88\xc6\xa5\x96\x80\x52\xc2\x10\x73\xe5\x61\xfc\x92\x4c\x13\x8f\xc1\x83\xdf\x0a\x0c\x16\x58\x61\xe1\x41\x84\xb0\x2b\x3c\x4a\xb8\xb0\xc6\x58\xe6\x59\x06\x14\xf7\x90\x47\xbe\x44\xe3\xe8\xe1\x9e\x1b\xc0\x97\x70\x3c\xf6\x8c\x70\x1c\x58\xc8\xad\xe0\x9e\x6b\x14\xc5\xf2\xe0\xa6\x70\x57\x7b\xd0\x22\x46\x85\xe7\x1a\x8f\x40\xab\x01\x13\xd2\x4a\x46\x24\x25\x54\x6b\x48\x14\x95\x0c\x08\x8c\x2c\xd5\x67\xcf\x0d\x3d\xdc\x73\x03\xf0\x12\x8f\xc7\x9e\x11\x8f\x7b\x88\x73\x4b\x94\xf6\xb8\x01\x06\x23\xe6\x29\x86\xad\x65\x88\x40\x7a\x08\xcb\x20\xb7\x04\x13\x8a\x01\x47\x8c\x73\x03\x3d\x66\x25\x83\xc2\x15\x06\x69\x2d\x28\x22\xbf\x7f\x3d\x6a\xed\xc1\x8c\x83\x4b\x3c\x1e\x7b\x46\x3c\x4e\x2d\x66\x08\x69\x8f\x19\xa5\x21\xe2\x0c\x52\x0a\x20\xd1\x02\x0b\xee\x21\x06\x15\xd0\xda\xd3\xd6\x43\x84\xbb\x4a\x01\x6a\xa5\x4b\xb4\x15\xae\x90\xc0\x28\x23\xe9\x17\x8d\x3f\xdc\x73\x03\xbb\x4b\x3c\x1e\x7b\x46\x3c\xae\x01\x70\x05\x56\x56\x78\xd8\x00\xd7\x10\x0f\x72\x06\x28\xe4\x50\x20\xa5\x8d\x07\x08\x01\xd6\x55\xcc\x7a\xae\x41\x1a\x78\x4a\x48\xac\xd4\xc1\xa7\xc1\xd4\x12\xe4\x9e\xdf\x5c\xa1\x87\x7b\x6e\x60\x7b\x89\xc7\x63\xcf\x88\xc7\xb1\xc7\x31\xd4\x8c\xb9\x50\x61\x83\x5c\xe2\x7a\xd2\xc0\x03\x92\xb9\x95\x10\x68\xab\x14\xf3\x0e\xf6\xaf\x38\x77\x5d\xd7\x33\x0c\x79\xd4\x2a\xed\x1a\x6c\x5d\xcf\x75\xcf\x41\x0a\x7a\xbc\xe7\xb6\xbe\x5a\x69\xf0\x8c\x78\x9c\x48\xe4\x0a\x17\x09\x20\xb4\xc7\x88\xd4\x0a\x23\xe8\x01\x8f\x53\x63\x14\x84\x54\x40\x08\xb8\xf6\x3c\x84\xa4\xf5\x08\xe5\x98\x00\xa5\xb4\x20\x92\x78\x54\x19\x02\xcf\x19\x18\xfc\x78\xcf\xed\x3c\x9b\xbf\xff\x95\xe5\x07\x33\xee\x02\x6c\x3c\x6d\x15\xa6\x0c\x30\x6d\x28\xa3\x1e\x66\x40\x2a\x0c\x98\x52\x88\x2b\x81\x94\x82\x44\x1f\x42\x55\x82\x3c\xa8\x20\xd6\x5c\xba\x50\x70\xe8\x51\xa2\xf0\xd9\xd4\xf1\xe3\x3d\xb7\xe0\x12\x8f\xc7\x9f\x11\x8f\x13\x64\x09\xf7\x84\x67\x5c\xcd\xb1\x70\x05\x21\x16\x52\xca\x5c\xe9\x29\x03\x85\xd5\x42\x08\x6e\xb8\x60\x02\x5a\x8f\x1e\x7a\x74\x26\xa4\xb0\x9a\x59\xe8\x52\x2b\xec\x17\xc6\x1f\xef\xb9\x2d\x2e\xf1\x78\xfc\x19\xf1\xb8\xb5\x92\x09\x46\x8d\xe7\x2a\x2e\x5c\x82\x5d\x02\x38\xc1\x90\x7b\xd8\x68\xd7\x70\x57\x49\x2e\x18\xc1\x5a\x72\xac\x5d\xa9\xa8\x71\x89\x87\xa8\x10\x9e\x14\xd0\x65\xe6\x9c\x73\xc3\x8f\xf7\xdc\xe6\x97\x78\x3c\xfe\xf3\xf1\xf8\x37\xe7\x62\x3f\x66\x22\xf6\xb3\x67\x61\xa7\x0b\x22\x53\x5d\x57\xc7\x3a\x8f\x32\x0e\x6e\xb7\x46\xb5\x65\x7e\x3a\xea\x00\xe0\xa5\x45\x50\xc8\xf2\x29\x48\xd6\x36\xb9\x76\xd4\xe9\x60\xe7\xeb\x9a\xa2\xe3\x75\xbb\xdd\xc7\x9b\xed\x3f\x7e\x76\x0d\xd1\x65\x3b\x91\x13\xbd\xd3\xac\xdb\xa3\x92\xbb\xa3\xaa\x5b\x69\xa0\x34\x1d\x2c\x66\xb1\x69\x3f\x9d\xb6\x7d\x99\x13\x13\xe2\xc2\xe4\xac\x39\xd9\x8e\x27\xc9\x49\x46\x06\x8b\xde\x12\x48\x0e\x53\xac\x5c\x68\x7b\x36\x3a\x25\xe3\x79\x2a\xcc\x46\x82\x2c\x18\xc2\x45\x61\x18\x52\x07\xe4\x76\xed\x99\x1e\x74\x0b\x6d\xea\x1f\xcf\x9f\x44\xfb\x69\x39\xcc\xb3\x9c\x69\x17\x27\xbd\xc4\x2e\xcc\xba\x93\x72\x92\x47\x1d\x53\x28\x8e\xb8\x5f\x19\x54\xb5\xdc\xa4\x27\xa8\xda\xd8\x5e\xf6\x31\xfe\x8e\x0c\x2e\x96\xf1\x45\xbe\x8e\xf3\xce\xac\xe3\xab\x59\x4e\x3f\xbb\x46\x76\x52\x2d\xd0\xd3\x93\x6f\xad\xf4\xc3\x76\xbd\xb3\x47\xf2\x4f\xe8\x3f\x61\xe3\x28\x68\x95\xba\xe9\xf0\x0a\x0e\xef\xae\x19\x7c\xbf\xfe\xb7\xdd\xc4\xb3\xa7\xba\xdf\x6f\xdc\xb7\xc2\x7d\xc3\xd0\xcf\x2d\x58\xbc\xde\x70\xe1\x44\xef\x62\xdc\x89\xa6\x5f\x58\xc2\x54\x36\x5b\x34\x29\x98\x2b\xe7\x51\xad\xd5\x27\xc9\x44\x75\x5d\x88\xd8\xad\x1d\xc1\x80\x4b\x9a\x36\xbd\xfc\x9e\x86\xb9\x98\x24\xf3\xc4\x58\x3b\xc3\xbd\x18\x47\xa6\x95\x35\x28\xb7\x56\xf5\x86\x50\x03\x58\xdc\x8f\x7b\xdd\xfe\xc4\x0f\x80\x0b\x1d\x37\x7b\x34\xee\x9e\x88\xf5\x48\x2d\x5d\x69\xe0\x29\x29\x8d\x47\x13\x33\x5f\x15\x84\x97\xe1\x22\xde\x36\xe3\x52\x61\x3c\x57\xc3\x45\x3c\x55\x48\xa6\xfc\xcb\x0a\x86\x87\x1a\xf7\x4f\x2e\x58\x4c\x78\x83\x4c\xfb\x7d\xf9\x7f\x57\x17\x5f\xaf\x4f\x1a\xb7\x0f\x83\xea\xe6\x79\xc6\xfd\xe0\xf5\x0c\xf7\x1b\xf7\x77\x76\xcf\x3a\x5d\x7a\xda\x9f\xc2\x16\x32\x7d\xda\x82\xd3\x05\xb4\x93\xa2\x9b\x86\xe1\x76\x54\xef\xe6\x7b\x72\x93\xec\xfb\xf5\x98\xb2\x6d\xd1\x1c\xa6\x8e\x01\xff\x77\x8c\xdb\xa9\x3a\x2a\xde\x9f\x0d\x9c\xcc\xba\xbd\x1e\xee\x76\xee\x30\x97\xc1\xe3\xb9\xdc\xf9\x8d\x6a\x38\x43\xf5\xd4\x48\xc7\x17\x85\x66\xb3\x12\xcb\xef\xdd\x5a\x28\x06\xab\x6c\x23\x29\x6d\xe8\x6d\x27\xc9\xd8\xb2\x4d\x86\xc3\xdc\x78\xd9\xdf\x55\x6d\x39\xbe\x88\x66\xd3\x3a\x6d\x51\xcd\x71\x0e\x06\x28\xc5\x2a\x11\x6f\xa4\x13\xaa\xa2\x9a\xbb\x6c\xb1\x20\xc9\x34\x99\x99\x91\xa0\x16\xee\x47\x89\x69\xbc\x3d\xeb\x0e\x65\xa2\xdc\xce\xee\x22\x97\x41\xe5\xa1\xc6\x9d\xa6\x7e\x2e\x6c\x99\x59\xb7\xdc\x32\xbd\x45\xd8\x99\x37\x32\xb1\x50\xbb\x5d\x30\x8d\x4f\x3d\x37\x96\xcd\x27\xfb\xed\xd9\x64\x9d\xca\x0e\x94\xf3\xdf\xc0\xb8\x27\xed\x42\x4e\x3d\xcf\xb8\x1f\xbc\x68\xe5\x27\x85\x7b\xb5\xd4\xf9\x3b\x6e\xc9\xd1\x46\xef\x5b\x0a\x8e\xa3\x5f\xaf\x0b\xbd\xd4\xd7\xfa\xab\x95\x49\x9f\xa7\x0b\x83\x5c\x1f\x6c\xf9\x68\xee\x6c\x60\x72\xc3\x32\xa8\x93\x62\xbb\x5a\x76\xea\xe5\xb2\x9b\x94\xb7\x05\xb2\xb4\x1a\x52\x1d\x96\x73\x4e\xca\x6e\x52\x4e\xc9\x2b\x2b\x27\x26\x52\xd5\xde\x84\xce\xb1\x43\xfb\x78\xcc\x12\x99\xc4\xb0\xef\x35\x4b\xcd\x04\x64\x7d\xf7\x68\x8c\xfd\x5a\xba\xbe\x21\xbd\x04\xc6\x15\x27\xa5\xda\x03\x88\x57\x4e\xc1\x13\x29\x58\x69\x56\xb6\x61\x32\x9b\x5a\xcc\xe1\x26\xdf\xad\xce\xe8\x65\x29\xfc\xfb\x86\x7e\x8d\xd1\x8f\x0c\xfd\x6a\x61\xde\x4f\xea\xe2\x33\xc7\x14\x1c\xaf\xcc\x8d\xac\xdf\xdd\x06\xe1\x6a\xc2\xf4\x1d\x40\x6c\xed\xaf\x72\xd3\xef\x4f\xb8\xbf\x17\x08\x0f\x5e\x45\x74\xff\x9a\xff\x5f\x08\x84\xeb\x3d\x22\xe4\x78\x9a\x6f\xa3\x05\x5e\xf3\xaa\xb7\x13\x95\xa2\x1d\x27\x35\x6c\x34\xb2\x74\xb8\x5d\x8c\xb3\x20\xe6\xf7\x3b\xcb\x72\xc8\xfb\x65\xc8\x50\x55\x8f\x07\xc8\xd4\x1b\x4d\xcf\x26\xfc\xb5\x0b\x2a\x8e\xf2\x06\x89\xce\x36\x1c\xb4\x9c\x49\x50\x58\x8d\x26\xb1\xe9\x6e\x14\x73\xba\x47\x63\x5d\x37\x07\xe1\xda\x38\x61\xad\xdf\xef\xf4\xb6\xdb\x7c\x7b\xc6\x8c\xf6\x7b\xae\x3f\xdf\x81\xcc\xb4\xd0\x59\xac\xdd\x7c\x21\x42\x75\x29\xbc\x2c\x4c\x7c\x28\x10\x7e\x52\x17\xbf\x1c\x08\x77\xb8\x5b\x4f\x04\xc2\x83\x97\x75\xdd\x3f\x22\x7c\xc7\x97\x3f\x01\xa1\x3a\xa9\x9d\x5d\xa2\x07\x8e\x08\xb1\x4c\xb4\x58\x60\x91\xda\xbe\xbd\x58\xa5\x2a\x03\xd1\x2f\xa4\x50\x6d\xd5\xdb\x77\xc3\xd1\x68\x5e\xb1\x99\x75\xd4\x37\xb2\xc8\xc9\x76\xd2\x04\xb2\xa3\x88\xa2\x16\x96\x06\xc5\xb0\x58\xaf\x65\xfd\x42\x36\xec\xc3\xa4\x4a\xb4\x93\x72\xbf\x0e\x33\xde\xa4\xd5\xce\x3a\xaa\xbe\xa9\x1e\x8d\xd5\xf3\x06\x9d\xcd\x68\x2b\xa3\xcb\x09\x80\xa2\xdc\xea\xe1\x96\xdf\xf6\xb9\xb7\x48\x4e\x96\x21\xc9\xc8\x52\x7a\x57\xce\xc6\x3b\x0c\xe9\x8b\x31\xfd\x97\x8e\x08\xcd\x5c\xb3\x7a\x76\x37\xfe\xf7\x19\x11\xde\x2c\x45\xba\x17\x08\x0f\x5e\xe7\x77\xff\x88\xf0\x0b\x81\x70\x35\x22\x24\xf3\xb1\x75\x44\xec\x0b\xd0\xce\x37\xdb\x78\x24\xc8\x0d\x92\xdd\xca\x54\x8f\x0a\xb2\x53\x77\x3b\xa1\x1b\xfa\xc5\xac\xb1\x21\x35\x83\xfe\x98\x77\x73\xad\xdc\xde\x99\xd5\xea\xfd\x6e\x63\xed\xed\xfc\x6c\x2e\x9f\x33\xd5\x69\x87\xb1\xd5\x00\xf9\x91\x65\x5a\xe6\x59\x2e\x3b\xed\x9f\x46\x84\x52\x46\x89\x5e\xae\x35\xaa\x67\xf7\x9b\x9c\xe9\xcf\xc6\xf9\x85\x5b\x4b\xd7\x6b\xc3\x78\x71\x99\xaa\x02\xbf\x57\x4a\x46\x99\xb7\x2c\xb7\xae\x0c\xfd\xbf\x74\x44\xf8\xd5\x40\x78\xc8\x88\xf0\x30\x20\x3c\x78\xe1\xe7\x4f\xa6\xce\x7e\xcc\x35\xba\xe7\xb8\xb3\xcf\x6c\x9f\xb8\x1a\x97\xf1\xb5\x16\x33\x5f\xdb\x5b\xcd\x44\x7b\xe3\x7d\x2d\x6a\xe3\x20\xc5\xb7\x15\xb9\x77\xe6\x36\xb3\x2e\x66\xf8\x6c\x61\xc3\xbd\xaa\x9b\xee\x40\xb4\x33\xbb\xe5\x66\xb3\xd6\xc9\xd9\x96\x24\x34\xeb\xef\x41\x7f\x39\xab\xe5\x62\xb9\x3a\x63\xe5\x9e\x4e\x4f\xe3\x63\xbe\xdb\x67\xa6\x22\x31\xce\x71\x9d\x23\x55\xa7\x79\x34\x6e\x36\xaf\x35\x4b\x8b\x32\x6a\x96\x23\x7e\x3f\x5d\x99\x95\x60\xba\x28\x7a\xf9\xd2\x74\x5c\xa9\x2d\x58\x25\x50\x49\x37\x29\xda\xf1\xbd\xbb\xff\xc8\x95\xba\x76\x17\xbe\x03\x9c\x8d\xf3\xbf\x81\x2b\x55\xfd\xaf\x68\xdf\xe9\xa8\xa8\xef\xb4\xef\x07\x80\xf5\xe0\x95\xbd\xf7\x03\xeb\x3b\x23\xcc\xc9\x50\x7e\x32\xb3\xf4\x1c\x60\xa5\x52\xe9\x42\x3a\x95\xea\xe8\x64\xa2\x66\xc6\xc8\xa6\x76\x55\xa7\x51\x9a\x67\x56\x8b\x72\x34\x48\x2d\xe7\x8b\x60\x3b\x2d\x95\x36\x69\x15\x29\x16\x86\xba\x54\xcd\x15\x12\x9d\xb6\xf2\xe2\xa4\x2d\xf2\xc5\x7c\x35\x3a\x48\x82\x22\x68\x14\xb6\x3d\xbb\x8a\x96\x45\xd8\x9d\xc5\x56\x9b\x8d\x73\x34\xfe\x6a\x7b\x3e\xda\x44\x53\xb9\x54\xc3\xcc\x47\xa5\x70\x3d\x8d\xc5\x3b\xbc\x4b\x93\xbb\xa1\x57\x47\xd5\xd8\x12\x14\xe6\x7e\x7f\xc7\xa2\xb3\xd6\x65\x13\x91\x87\x02\xeb\xbf\x65\xb0\x5e\xfd\xaf\x68\xdf\x23\x80\xf5\xe0\xa5\xe3\xf7\x03\xeb\x3b\x29\xdb\xfb\x46\xac\xbb\x5c\xbd\x8f\x80\x55\x98\x81\x92\x8d\x07\x6a\x4a\xbb\xcb\x69\x18\x14\x73\xd5\x56\xb9\xb0\x2b\x37\x2a\x8b\x84\xe6\xf5\x62\x23\xde\x4b\xfb\xde\x94\xd6\x07\x4d\xe6\xb9\x13\x5c\xa9\x0c\x6d\x76\x56\x2d\x85\x63\x98\x9a\xd6\x5a\xb6\xb9\x35\xdd\x0e\x5c\x06\x6d\x94\xcf\xc0\x4c\x55\xe7\x18\x21\x99\x0d\x38\x1a\xff\x66\x3e\xc9\x02\x77\x91\x59\x85\x85\x51\xbe\xb7\xd1\x4e\x77\xd7\xd3\xf1\x42\xb4\xd3\xd2\xd0\x34\xd6\x89\xd1\x26\xda\x1d\x25\x41\xd0\xe9\x5d\xda\xf6\x5f\x3a\x62\xfd\x12\x57\xef\x13\x23\xd6\xfd\xed\x7b\x04\xb0\x1e\xbc\x37\xc1\xfd\xc0\xba\x4d\x77\x7c\x7a\xc4\x7a\x0a\xb0\x52\x98\x4c\xbb\xbb\x5a\x41\xb7\x1a\x04\x55\xc3\xd4\xaa\x4b\x9b\x25\x10\x2c\x65\xd2\x5d\x25\xf1\x24\x74\xa2\x72\xe7\x6c\x87\xa5\xf2\x7a\x35\xd6\xad\x46\x59\xed\x05\x5b\xc5\x3b\xf3\x64\x6f\xd2\x81\xa9\x59\x72\xdb\x4d\xf4\x36\xe5\x5e\xae\xdd\xea\x78\x81\x36\xfe\x5a\xb7\x9a\x9b\x53\x7a\xb9\xd5\x64\xc3\x7c\xad\xb2\x14\xb1\x68\x32\x60\x8d\x76\x1c\x4e\x57\xf9\x4a\x89\xae\x9c\x44\x2b\x0c\xe7\xce\x7c\x3e\x60\xcd\xc8\xba\xeb\x6d\x3e\x7a\x49\xf8\x8b\x46\xac\x5f\x0d\xac\x5f\xd7\xbe\x87\x8c\x58\x8f\xdd\xfc\xe2\x3f\x47\xf4\x7c\x70\x44\xcf\xc9\xd0\xb7\xd9\x30\x3b\x8d\xe3\x52\x66\x63\xcd\xb8\x4c\x76\x43\xb3\x59\x76\xa7\x53\x41\xb2\x43\xe9\x76\x2b\x66\xe5\x13\xb9\x1b\xb6\xb7\x2c\xf9\xd1\x34\x92\xf7\x37\x82\xf9\xc9\xd1\xdd\xb9\x31\x9c\x4f\xb8\xd1\xb8\xaf\x45\xaf\x79\xa1\x77\xbb\xdd\xb2\xf3\x41\xb2\xe4\x6a\xb9\xcb\xcf\x8e\x50\x17\x7a\xa7\xeb\x13\xc7\x5d\x90\x74\x34\xdd\xba\xd0\x7b\xdf\x56\xaa\xce\xeb\xe3\x80\xee\x48\x9e\xd4\x27\x97\x75\x4d\xd9\xcd\xbb\xfa\xbc\x37\x79\xf2\xe0\xdd\x55\xee\x07\xf6\x77\x46\xcc\x87\x00\xbb\x29\xd3\x41\xf2\x4a\xf9\xb9\x77\x95\x75\x05\xec\x55\x73\xd6\x9b\x14\xb7\x23\x11\xaa\x45\xd1\x8f\x56\xba\x5e\x96\x2c\x63\x13\x02\xe3\xf3\x79\x10\xed\x64\xd2\x93\x92\x1f\xd2\x48\xa3\xdd\xe8\x25\xa5\x03\xd8\x70\x9e\xac\xb1\x2a\xef\x2c\xf4\x76\x50\xda\x4f\x9d\x9a\x28\xa9\xaa\xae\xe3\x44\x00\x6a\xd5\x35\x21\x4b\x9c\x2e\xc4\xfb\x27\x60\x57\xf1\x3c\x9b\xcc\xe2\x5a\x75\xe7\xca\xfd\x76\xe3\xe7\xdb\xb0\x5f\x2f\xc5\x6b\x9d\x74\x6c\xd7\xab\x32\x28\x69\x9d\x4c\xda\xf1\x71\xe2\xea\x75\xfa\xd3\x81\x7d\xd9\xa1\xec\x33\xc0\x56\xd6\xb6\xae\x80\xfd\xe6\x9c\x9c\x27\x03\xfb\x2a\xab\xf8\x09\x60\xa3\xd9\x6c\x72\x05\xec\xf7\x6d\xe5\x29\xc0\x7e\x33\x25\xf4\x5e\x60\x3f\x78\xfb\xa0\xfb\x81\x7d\x7b\x7e\xd5\xa3\x81\x5d\xf7\x53\xe2\x6c\xba\x49\xe7\x9b\x7b\xbd\x5d\x01\x5b\x16\xaa\xcd\x41\xac\x52\x4d\xf5\xca\xfe\xbc\x3e\x88\xae\x57\xcd\x52\xc5\x6d\x4e\x41\xa2\x90\x95\x9b\x04\x51\x1b\x42\x64\xdc\x5d\x31\x27\x51\xb4\x23\x15\x8a\x10\x15\x77\xab\x7d\x7b\xbd\x15\xb5\x4d\xb5\x58\x31\x72\x6f\x3a\x93\x4d\x3c\x49\x8d\x70\x1b\x78\x35\xdf\xac\x2a\xce\x19\xd8\x33\xca\x66\xa9\x42\x7a\x34\x99\xd6\xb7\x34\x14\x95\xa5\x4c\x2f\x52\x11\x34\x4b\xf3\x58\x27\xe5\x91\x86\x5b\xaf\xad\x8b\xfd\xe1\xde\xd7\x97\xfe\xee\xe9\xc0\x7e\xc8\x81\x3c\xb8\x39\x70\x6a\x57\xc0\x7e\xb3\x9f\xe1\x93\x81\xfd\x98\x03\xaa\x60\xb6\x9a\xbc\x02\xf6\xfb\xb6\xf2\x14\x60\xbf\x39\x50\xe5\xee\xf9\x7e\x8f\xdd\x1f\xeb\x7e\x60\xdf\x9e\xee\xf5\xf0\xd3\xfb\x1a\xa9\xe2\x39\xc0\x3a\x2a\xeb\xc3\xd3\xfb\x54\xaf\xd3\x88\xea\x71\x62\x8f\x53\x8b\x46\x6e\xd0\xc9\x87\x6e\xdd\xae\x69\x7f\xbf\x4c\x82\x4d\x01\xa5\xeb\xb3\x60\xef\xf1\x90\x2c\x62\x0d\x77\xd6\xc6\x15\x32\xb0\x19\xeb\xa4\xb2\xe3\xfa\x28\xec\xef\xc1\x94\x67\xfb\xe9\x06\xec\xfb\xad\x89\x0e\x8d\x43\x2b\x61\xaf\x54\x8a\x9f\x5d\xf1\x48\x5b\x2d\x8b\xd5\x24\x46\xab\x41\xe0\xad\xbc\x55\x3c\xdb\x4c\x94\x5b\x25\x61\x2b\x83\x26\x5b\x2c\x17\xb6\xe4\xc9\x3e\x48\x02\x34\xfb\x68\x5e\xe0\xe3\x80\x7d\xbd\xc1\xf9\x27\x80\x5d\x1e\x0d\x4b\x57\xc0\x7e\x73\xc8\xfd\x93\x81\x7d\x35\xe2\x7d\x02\xd8\x7b\x9f\x8c\xae\x80\xfd\xbe\xad\x3c\x05\xd8\xb7\x27\xa1\xdd\xff\x42\xff\xb1\x1b\xc0\xfd\xe7\x98\xc0\x0f\x8e\x09\x3c\x01\xbb\xd4\x47\xb9\x78\x36\xb1\x5a\xd7\x73\x25\x53\x55\x74\x18\x2b\xd5\x23\x42\xa1\xa0\x97\xf5\x06\xf9\x81\x9d\x3a\xde\xc6\xc0\xb0\xd5\x2d\xfc\x3a\x57\x3c\xf6\x98\x18\x3b\x3b\x4d\xe6\xae\x80\xfd\xc6\x50\x9f\x0c\xec\x2b\xa0\x7d\xc2\x56\x76\xb9\x41\xbc\xf5\x91\xad\x3c\x05\xd8\x6f\x3a\xc2\xbb\xe7\x6e\x3e\x76\x87\xc3\xfb\x81\x7d\xeb\xee\x3c\x1a\xd8\xa7\x4c\xe3\x45\x59\x6f\x8e\xae\x3d\x5e\x57\xc0\x36\xac\xe0\x04\x84\x1a\x1d\x1b\x3b\x89\x76\xa9\x49\x6d\x38\xf3\x7d\xb5\xdb\x64\x16\xcb\x18\x94\x0d\x8f\x80\xc1\x8e\x45\xa7\xc3\xa6\x33\x2b\x39\x5b\xe6\x8b\xe8\xca\xfa\x35\xb5\x99\x45\x70\x2d\xb7\xab\xad\xab\x6d\xdc\xce\xcf\x7b\x15\x3d\x27\xfb\x18\x91\x7b\xb7\x3b\x4e\x9c\x47\xec\x75\x6c\xd7\x1d\x15\xf3\x66\xb2\xf4\x23\x20\x51\x18\x8f\x48\x37\x40\x83\x9d\x85\x83\xf6\xc6\x06\x23\xdd\xb4\x82\xce\x4a\x15\x96\x6f\xfe\x3a\x57\x3c\xf6\x90\x18\xfb\x2a\xa3\x7f\x6b\xf8\xa7\xeb\xc9\xc0\xbe\xea\x48\x9e\x6d\x2b\x4f\x01\xf6\x9b\xd0\xe5\xee\x75\x65\x8f\xdd\xc2\xf3\x7e\x60\xdf\x26\x28\x1e\x0d\xec\xab\x7d\xec\x6f\xb7\xea\xbe\xba\xae\x80\x9d\xca\x2c\xda\xcd\x3c\x29\xac\x46\xc4\x88\xa0\x39\xac\x42\x51\x8e\x31\x6f\x38\xd6\x41\xa5\xda\xe9\x39\xe5\xac\xd7\xc3\x28\xe8\x07\x0c\x45\xaa\x90\xa7\x8b\xb3\x4d\x77\x11\x6c\x53\x3e\x0c\x87\x44\xd6\xb8\x5b\x2c\x28\x93\x08\x66\x83\xcc\x68\x3c\x1b\x97\xab\xc5\xbd\x1b\x49\x9c\x63\xec\xae\x2e\xca\x7d\xa8\x48\xc6\x90\xf2\x60\xd9\xd5\xf3\xfc\x3a\xde\x2f\xe8\x44\x27\x4d\x0b\x0b\xa7\xa6\x9b\xd9\x02\xae\xcf\xfd\x65\xf7\xbc\xb3\xa5\xf3\x2b\x80\xfd\x90\x18\xfb\xb2\x0a\xf3\xea\x75\xd1\xf5\xf5\x64\x60\x5f\x8d\x78\xcf\xb6\x95\xa7\x00\xfb\x4d\xb2\xf1\x5e\x60\x3f\x78\x8f\xda\xfb\x81\x7d\xfb\x4a\xe1\xd1\xc0\x4e\x47\xe3\xe5\xe0\x4a\x59\xb7\xaf\xd7\x4e\xd7\xf5\x09\x8b\x42\x95\x72\x50\x54\x4d\x19\x89\xc9\x20\xba\x88\x36\x72\xb5\x8e\xcc\x26\x26\xf5\xc5\x40\x95\xf6\xdb\xfe\x44\x45\x4b\xfd\x9d\x99\xa7\x3b\x5b\xd3\x77\xba\x5d\x47\xea\x7a\xc1\xb8\xe3\xd9\xb8\x2a\xf6\xa9\x8d\x57\x37\xdd\xe9\x74\x94\x5f\xcc\x12\xdb\x6e\x1a\x36\x01\x58\x16\xbe\xbc\xee\x4a\x8d\x16\xcb\x9e\x68\x0f\xeb\x93\x59\x38\xb7\x75\x40\xbd\xe2\x3c\x57\xe9\x26\xf6\xd1\xe6\xa2\x33\x8e\xec\x3a\x0b\xd6\x35\x8d\x51\xbc\x58\xfd\x68\xde\xed\xe3\x80\x7d\x7d\xb8\xd1\xfd\xc0\xd6\x22\xcb\xce\x34\x6f\xe7\xd2\x9e\xae\x27\x03\xfb\x6a\xc4\x7b\xb6\xad\x3c\x05\xd8\x6f\x5e\x0f\xde\x3d\x62\x3f\x76\x13\xe6\xfb\x81\x7d\x7b\x94\xe9\xa3\x81\x9d\x5c\xc4\xbc\xec\x95\xb2\xde\x5f\x1c\x7a\x05\x6c\x34\x9f\x08\x7f\x58\x1b\xc9\x7d\x33\x9b\x9a\x4b\xa7\x5b\x54\xf9\xb2\x06\x65\x47\x17\x83\xe2\x28\x57\x6a\x36\x33\x76\xa3\x70\x6e\x53\xcf\x80\x16\xea\x29\x7f\xc2\xfb\xe3\x0c\xdd\x4d\x97\x38\x5e\xda\x94\xa1\xa5\x1d\xe1\xa5\x87\x93\x42\x6f\x1a\xd9\xd2\x0a\xf7\xc7\x95\x76\xa2\x7a\x1e\xb1\x67\x51\x0d\x5b\xd1\x85\x18\xd0\xd5\x64\x81\xed\x6a\x23\xbd\xed\xbe\xe5\x44\x69\x33\x05\x4d\xc2\x35\xc1\x2c\x50\x5e\xa3\x2e\xd1\x47\x2b\x4b\x1e\x08\xec\x87\xc4\xd8\x57\x2f\x1f\x6e\x17\xd2\x9e\xae\x27\x03\xfb\x6a\xc4\x7b\xb6\xad\x3c\x05\xd8\xc1\x6d\x2d\x77\x2f\x02\x78\xf0\x2e\xe3\xf7\x23\xfb\xd6\x44\x1f\x7e\x28\xf2\x65\x43\x93\xe4\x37\x25\x76\x8d\x6c\x30\x89\x51\xce\x15\x6b\xa5\x1a\xd3\xc5\x30\x96\xaf\x76\x86\xbb\x3e\xeb\xf6\x47\x8d\x8a\xdb\x14\x33\x59\x9c\x18\x4d\xd3\x26\x6f\x7b\x22\x51\x1b\xb7\xd3\x5c\xf2\x45\x12\x37\x66\xd1\x76\x81\xae\x52\xdd\x59\x97\x2d\x26\x26\xc8\xca\x26\x86\x4e\x3d\x0c\x67\xd1\xe2\x40\x7c\x79\x91\x4d\x26\x79\x32\x88\xbb\x6d\x99\x8b\xfa\xb9\x52\xa4\x38\xb1\x4d\xd5\xd2\xd5\x52\xa0\x9b\xd5\x14\x5f\x74\x70\x6a\xba\x43\x9d\xcc\x64\xb7\xbd\x34\xed\xe9\xc8\x7e\x48\x90\x7d\xe5\xc6\x5e\xb6\x04\xba\xbe\x9e\x8c\xec\xab\x21\xef\xd9\xb6\xf2\x14\x64\xbf\xd9\x07\xe0\xee\xec\xd9\x83\xb7\xd1\xbf\x1f\xd9\xa5\x6f\x73\xf4\x10\x64\x3b\x65\xba\xcc\x5f\x69\xff\x43\x64\x0f\xc7\xc5\xc9\xa1\x10\xf3\x87\xa4\xd6\x67\xe9\x39\x0e\xd6\xfb\x46\x25\xed\xaa\x66\x75\x4b\x32\xe1\xbc\x04\x1a\xfd\x55\xd0\x59\x16\x1b\x63\xdd\x0a\x62\xf3\x75\xa6\x14\x44\x36\x40\xa7\x52\x32\x56\xee\x87\xbb\x74\x37\x8f\xa2\x6c\xef\x8d\x3b\xdd\x62\x2b\x19\x93\x1d\xa6\xbe\x20\x7b\xd5\xce\xef\xf2\x99\x31\x69\x9b\x62\xc8\x8c\x1a\x81\x88\x8d\x2f\x0b\xa3\x1d\x28\xcc\x46\x7e\x67\x51\x6b\x6d\xe7\x4e\xa1\xb3\x6f\x5a\xff\xa3\xfd\x01\x1e\x88\xec\x87\x44\xd9\x0e\x9f\x06\xa7\x36\xc7\xdf\x5f\x9a\xfc\x64\x64\x5f\x8d\x79\xcf\xb6\x95\xa7\x20\x1b\xdc\xd6\x72\x2f\xb2\x1f\x7d\x4e\xc4\xfd\xc8\x2e\x7f\x9b\xa3\xc7\xcc\x2a\x1d\xc4\xd2\xbb\x8b\xb6\x62\x93\x77\xb5\x75\x85\xec\x91\xb3\xb2\x83\x89\x85\x39\xb4\x0f\x70\x4d\x15\x5a\x34\x95\x88\x36\x82\xfe\xa6\xd5\xae\x36\x32\xcb\xf4\x6e\x2f\xb7\x61\xc6\x1b\xf9\x83\xc6\x5c\xae\xfa\xe3\x49\x31\x39\x49\xc1\x74\x4a\xf1\xfd\x76\x38\x6a\xcc\xfb\x83\x78\x1e\x3a\x60\xb7\x6b\xad\xb2\x4b\x4f\x4c\xb3\xd5\xe1\xea\xcb\x1b\x2f\x07\x54\x7a\xa3\xe8\x60\x29\x0b\x1d\x4a\xc6\x88\x04\x64\xe8\x11\x80\xb1\xdf\xd6\x15\x3c\x63\xd5\x69\xbe\x2f\x92\x9e\xb7\x9c\xec\x2e\xde\xec\xb3\x91\x7d\x7d\xa6\xea\xfd\xc8\x46\x16\x6f\xc3\x13\x3c\x0f\xc8\x4e\xff\xea\xc4\xf8\xe6\x11\xb6\x52\x9a\x85\x42\xb7\x3e\xb2\x95\xa7\x20\x9b\xdc\xd6\x72\xb7\x37\xfe\xe0\x83\x50\xee\x47\x76\xe5\xdb\x1c\x3d\x04\xd9\xad\xa2\xd3\x39\xf7\x1e\x47\x6d\xe9\x77\xb5\x75\x8d\x6c\x92\x62\xc3\x59\x65\x37\xeb\x33\x0b\xba\x61\x21\x74\x64\x3c\x96\x14\xa5\x6e\x62\xb5\x2a\x26\x6b\xd3\x4c\x4d\xda\x4a\x32\xc4\x26\xa5\x40\x7f\xaa\xa2\x15\x41\x0a\xb5\x71\xdb\x26\x14\xe9\x69\x94\x64\x9b\x7c\xab\x30\x5b\x8e\xdc\x45\xcd\xb4\x33\xa3\x24\xec\x96\x70\xdc\x39\x27\xd0\x58\x5c\xd5\x4c\x6f\xe7\xb6\xa8\x4e\xed\x73\xe9\xc1\x76\x2b\x46\x65\xb4\x55\xe5\x7c\x44\xc1\x9e\x09\xbc\x69\xab\x6a\xb3\xe9\x6c\xb9\xfc\xd1\xa2\x8b\x07\x22\xfb\x21\x71\x36\xea\xb2\xc6\xfc\x82\xec\xd4\x9b\xb8\xf1\xc9\xc8\x06\x8f\xb0\x95\xd2\xb4\x3c\x66\xad\x8f\x6c\xe5\x29\xc8\x16\xb7\xb5\xdc\x8b\xec\x47\x9f\xf4\x73\x3f\xb2\x6f\x5f\x8e\x3c\x7c\x5e\x29\x8a\xce\x16\xce\x45\x5b\xb5\x77\xb5\x75\x85\xec\x74\x77\xb3\xe9\x6e\x9a\x45\x95\x58\x6d\x07\x23\x6f\x9b\x5a\x4e\xbb\xfd\x35\x43\x93\xde\xb0\xb9\x6d\x58\x51\x2d\x6d\x38\xed\xa9\x68\x25\xbe\xeb\x45\x7b\x75\x52\xca\xb3\xb9\x6d\x3b\xb9\x41\x64\x2a\x32\x18\x4f\x06\x6e\x2b\x08\x42\x9a\x9c\x38\x83\x54\x2f\xb2\xdf\xf4\x7a\xb8\xf5\x25\x83\x86\x9c\x9d\x33\x1d\xc7\x26\x5d\x07\xe2\x98\xf5\x74\xac\x9c\x9c\xc6\xa3\xe5\x56\x3f\x9c\xc4\x6a\xe9\x45\x2b\x42\xf7\x8b\xde\xb4\x5f\x16\xc5\x0b\xef\x4f\x47\xf6\x43\xe2\x6c\x54\x17\x70\x72\x85\xec\x5f\xed\x8d\x93\x47\xd8\x4a\x69\xbc\x2e\xf5\x5a\x1f\xd9\xca\x33\x90\xfd\x16\xc7\x77\xcf\x2b\x7d\xf0\x51\x56\xf7\x23\xfb\x56\x7a\x0f\x9f\x58\x3a\x88\x90\xf3\x3c\xa2\xa3\xb6\x3e\x9c\x58\xba\xee\x2f\xe2\xac\xb1\x4b\x0e\xea\xcb\x41\x8a\xe7\xc9\x66\x53\xee\x1b\x10\xc4\xd7\xd3\x94\x53\xed\x7b\x45\x98\xdc\x47\x6c\x72\xd3\xd6\xd3\x68\xac\x92\xab\xb7\x41\x7b\x5e\x6e\x6c\x9b\xd4\xb3\xc9\xbc\x53\x9e\x17\xba\x2a\x93\x5b\xaf\xd7\x89\x48\xbb\x97\x9f\xd2\x4a\x36\xba\x53\xe6\xcb\x4b\xaf\x68\x75\x9d\xac\x55\x3a\xf3\xc4\x7c\x3e\x98\x2b\x3f\x96\xf6\xc3\x61\x09\xf1\x1d\x8c\x14\x93\xd5\xae\xdf\x1d\x0e\x27\x85\xa0\x30\xe9\x54\x2b\x17\xb8\x3d\x1d\xd9\x0f\x89\xb3\x51\x31\xda\x19\x5c\x90\x9d\xfc\xd5\x13\x4b\xc5\x23\x6c\xa5\x34\xaa\x40\xd2\xfa\xc8\x56\x9e\x82\xec\x87\x6d\x99\xf6\xe8\xb3\xda\xee\x47\x76\xfd\xdb\x1c\x3d\x04\xd9\xe5\x62\x24\x3b\x74\xbe\x6a\xcb\x91\xef\x6a\xeb\x0a\xd9\x49\x50\xe2\x72\x1c\x3a\xf3\x49\xbd\x3e\xf2\xd7\x4d\x0a\xb2\xe3\x70\x3f\x5c\xd5\x96\xb9\x12\xdb\x4e\x6b\xe3\x14\xf7\x82\x56\xa4\x3b\xca\xd3\xbe\xe8\xb4\x2b\xb6\x6f\xda\xab\x8c\x58\x51\xba\x8f\xef\x7b\x6e\x6c\x6f\x8c\x2f\xe2\x6a\xb8\x4a\xb6\xe7\xb9\x62\x65\x54\xec\xf5\xb2\xf1\x73\x9c\x1d\x2b\xa4\x07\x7e\x2e\xd5\x0b\x5c\xcb\xab\x51\x60\x36\x95\x7c\x7c\xd2\x05\x79\xc7\x2d\x62\xb8\xf3\x13\xb9\xa2\x33\xcd\xc3\x51\xaf\x34\xf8\x68\xd3\x8e\xc7\x21\xfb\xca\xa6\x3e\x83\xec\x4c\x8c\x9a\x0b\xb2\x13\x6f\x32\x42\xcf\x45\xf6\x35\x0e\x3e\x81\xec\xc1\xc6\x76\x5a\x1f\xd9\xca\x53\x90\xfd\xb0\xad\xaf\x1e\x7d\x18\xe1\xfd\xc8\x6e\x7c\x9b\xa3\xc7\x4c\x2d\xc5\xb2\x1b\x71\x2e\xda\xda\xbf\xab\xad\x2b\x64\x77\x9a\x03\x4d\xab\x0d\xa7\x1c\x59\xb7\xe8\xb8\x91\xac\x2e\xca\x73\xb9\x1b\x92\x20\x61\x97\xa3\x26\x5d\x67\x1b\xb4\x95\xc1\xc5\x61\x39\x8d\x05\xdc\x67\xe7\x93\xa9\xf2\x72\xa3\x42\x29\x53\x07\xc8\xce\xc6\xfe\xac\x9c\x09\x33\xed\xec\x7a\xb1\x9f\xb5\xaa\xa3\xcc\xa2\x8a\x85\xfc\xe2\x8d\x77\x1a\x5e\x6f\x84\xb3\xa5\xc8\x1e\x97\xeb\x8d\xa2\x57\x4d\xac\x59\x85\xf2\x6d\xb1\x5e\x60\xac\x55\x9f\x95\x71\xe8\x0f\xb7\xfd\x42\xaa\xf6\xeb\x26\xaa\x24\x1f\x12\x67\xaf\x3d\x38\x3a\x79\xc4\x27\x64\xff\xe2\x89\x2a\xb1\x87\xac\xcb\xfe\x31\x5b\x79\x0a\xb2\x1f\xb6\x2e\xfb\xd1\xa7\x6d\xde\x8f\xec\xdb\x24\xea\xc3\xe7\x96\x0e\xc5\x5c\x5d\x69\x6b\xfe\xae\xb6\xae\xdf\x7a\xe5\x36\x29\xd7\xdf\x3b\xb2\x4a\x5a\xa3\x68\xe8\xc4\x9c\xf1\x7c\xa0\xd7\xe5\x21\xcb\x04\x18\x51\x9d\x49\xc4\xe6\x8d\x21\xcb\x45\x0b\x25\x5c\x6f\x65\xd2\x41\xb7\x8a\x9a\x9b\x04\x5c\x5a\xb7\xdf\xf5\xbb\xa1\xdf\x4e\xc0\xc8\x62\x9c\x37\xa9\x62\x7d\x6f\x57\xd9\x9e\x6f\x72\x5f\x90\xed\xcb\x7e\x50\x0f\xb2\x98\x62\x41\x3a\xfb\xbd\xd7\x1e\xb5\x8b\x0b\x51\xdf\x6c\xea\x61\xb4\x5d\x68\xbb\xe9\x4e\x54\x2f\xf2\xa6\x9f\x2c\xfe\xba\x99\x2a\xc9\x87\xc4\xd9\xd3\xc2\x6e\x72\xf5\xd6\x2b\xfe\x8b\x17\x66\xc7\x1e\xb2\x30\xfb\xc7\x6c\xe5\x29\xc8\x7e\xd8\xc2\xec\x47\x1f\x27\x7b\x3f\xb2\x5b\xdf\xe6\xe8\x21\xc8\xce\x94\x38\x45\x8e\xd3\x81\xa4\x3a\xae\xdb\xd1\xf4\x4d\x00\x78\xbc\xae\xbd\xf1\xc1\x04\xb6\x06\xfb\x1c\xc5\x93\x96\x1c\xcd\x8a\x41\x23\x2e\xa3\x09\x1a\x0d\x97\x60\xa4\xda\xf1\x7e\xdd\x05\xf9\xf8\xd4\xd4\x17\x93\x85\xae\x46\xc7\x89\x64\x7f\xdd\x88\x8c\xbc\x7a\x21\xb1\xaa\xb2\x7e\x51\xa6\x73\xf1\xba\xe7\xa7\x3a\x0d\x32\x5f\xda\x2a\x98\xce\x0b\xeb\x78\xfc\x8c\x6c\x92\x2b\x62\x1e\x8a\x46\x6f\xda\xec\x15\xfc\x6a\x21\xcb\xc5\x74\x95\x8e\x66\xdb\xb4\xcc\xab\x31\xc0\x32\xe5\xc6\x2a\x3f\x08\x3b\xe3\xc1\xaf\xcb\xa0\x25\x1f\x12\x67\xbb\x78\x3d\xeb\x3a\x31\xaf\x33\x88\xd7\x72\xac\xdc\x7b\x33\xf3\xe2\xc9\xc8\xfe\x85\xb6\xf2\x14\x64\x3f\x6e\x65\xf6\x83\xcf\x4b\xbe\x1f\xd9\xed\x6f\x73\xf4\x98\xd9\xa5\x84\xe7\xcf\xb1\xfc\xff\x4f\xdc\xd7\x36\xa7\xaa\x83\x5d\x7f\xdf\xbf\xc2\x8f\xe7\x19\xcf\x19\x09\xaf\xe1\x9c\x79\xee\x19\x41\x7c\x7f\x43\x11\xd1\x2f\x67\x92\x90\x28\xa8\xa0\x02\x2a\xfd\xf5\xf7\xb4\xd5\x5d\xda\xda\xdd\x9e\xdd\xe8\xcd\xcc\xde\x4a\x65\xae\xac\x90\x6b\x91\x04\xd6\x22\x4f\xd7\xe1\xb7\x57\x92\xe7\xad\xc0\xec\xa9\x96\x85\x46\x4c\xd2\xfe\x88\x21\xd0\x53\xcb\x8e\x90\x8e\x97\xa1\x60\x97\xd7\x7a\x8e\xb7\xba\xa9\x86\xf6\x66\x3f\xb6\x26\xd4\x18\x1f\xab\xbb\x8c\x4c\xc0\xac\xda\x5b\x13\xc9\x7b\xd8\xb5\x8c\x5c\x52\xac\x24\x73\xfb\xc2\x4a\x58\xd6\x20\xa8\xec\xf7\x66\xdf\x4c\x5b\x17\xa5\x0a\x9c\xd4\x7c\xd8\xf3\x19\xe9\x4b\x47\xa0\x0c\x46\xca\x7e\x3a\xef\x28\xa7\x69\x46\x5a\xd0\xa8\x56\x5b\x99\x1d\x36\xcd\x95\x55\x4e\x6a\xf7\xf3\x83\x14\xdc\x4c\xdf\x60\xb6\x13\x26\xdb\xe7\x7e\xd3\x5c\x5c\xcd\xd4\x1b\x33\x9b\x8b\x35\xfb\x6b\xb9\x72\x13\x66\x73\xb3\x66\xf3\x5e\x10\xfc\xf7\x99\xed\x7d\x5c\x23\x3e\xea\xd2\x50\x45\x59\xa1\xb5\xde\xea\xd4\x9f\xb7\xa2\x21\xc4\x7a\x28\x93\xa0\x3b\x9f\x5a\x5e\x6b\x9d\x58\xd3\x74\x3f\x03\xad\x00\xb0\x87\x18\x9d\x44\xbf\x61\x5a\x95\x7a\x26\x34\x96\x83\x7c\x87\x8f\xba\x50\x3b\x24\xe5\x95\x84\xdc\xc1\xc6\xee\x3a\x46\x3e\x51\xda\xd3\xd0\x3a\xf8\xea\x60\x5b\x8e\x5d\x29\x28\x6b\x9d\xe1\x30\x3d\x5d\x9e\x67\x7b\x93\xb9\x63\x78\x4e\xa2\x8f\xdd\x51\x07\x34\xac\xbd\xb8\x69\x47\xf3\x69\xdc\xce\x4e\xfb\x2c\xed\x2e\x92\xb4\xdf\x1d\x1e\x62\xd0\xf5\xee\x37\x1a\xaf\x73\x99\x67\x77\x86\xdb\x5d\x61\x9e\xfd\x5e\x07\x7d\x63\x66\x73\xf1\x66\x7f\x2d\x57\x6e\xc2\x6c\x8e\xde\x6c\xbe\x2b\xde\xff\x3e\xb3\xdf\x5e\xac\xb8\xab\x4b\xfd\x87\xe9\xa4\x90\x3d\x9f\xaa\x4b\xdb\xd1\x3e\xf5\x1a\x79\xb8\xda\x6d\xab\xed\x6a\x9d\xd5\x66\x42\x3b\x6f\x87\x1e\x1b\xeb\x95\x93\xd7\xed\x36\xfd\x4c\xf2\x1c\x51\x68\x9d\xb6\x6d\xd3\xb0\xc5\x8e\xc0\x96\xb3\xc8\x0d\x12\x21\x8d\x30\x22\xa6\x5e\x39\x38\x64\xd3\x8d\xa6\xa7\xce\x02\xc4\x0d\x73\xa4\x67\xc9\x45\x83\x76\x30\xe3\x69\x1e\x77\x24\xa1\x2b\xda\x43\x73\xde\x6a\x3f\xe0\x9e\xaa\xe8\x83\xf2\xc2\x3f\x12\x4a\xe2\xf1\xd4\xed\x0e\x12\x6d\x6e\x3b\xf7\xbb\x83\x56\xe7\x32\xcf\x36\xa4\xfe\xf9\x5d\xc1\xc6\xff\x85\x6e\xdc\xe0\x62\xce\xfe\x5a\xae\xdc\x84\xd9\xdc\xcc\xd9\x48\xc0\x3e\xf6\x31\x40\x48\x52\xb0\xc6\x44\x44\x89\x28\x00\xac\x02\xc8\x08\x52\x74\x59\x50\xa8\x4c\x24\x4d\x61\x90\x69\x2a\x12\x65\xca\x44\x85\x42\xa8\x20\x5d\x65\xbe\x76\x31\x67\x8b\x1c\x34\x68\xf3\x8f\x6b\xc4\x47\x5d\x7a\x50\x4f\xb0\xd0\x5a\x9f\xde\x1b\x6f\xec\x4e\x66\x85\x04\xbe\xae\xb7\x3b\x96\x71\x50\x67\xda\x61\xb3\x9a\x80\xac\x3c\xb1\xcb\xe3\x63\xed\xd4\x6c\x85\x5d\xda\xdb\x6c\xf6\xa9\x32\x39\x88\x8e\x99\xa8\x66\x2a\xa7\xf1\xea\x70\x0c\xd7\x8d\x04\x1b\x31\x48\xc8\x04\x46\xf6\xe6\x98\x79\x59\x00\x31\xeb\x37\x9c\xcb\xcb\x79\xe3\xae\xa8\x27\x28\x06\x69\xa5\x93\x1d\x17\x0d\xb1\x31\xcc\xd7\xeb\xaa\xb7\x3a\x4a\x9e\xac\x8b\xf1\x4a\xcb\xbd\x78\x89\xd6\x07\x50\xbe\xe3\x68\x9c\xcb\x3c\x1b\xf8\x4e\xf4\xdc\x71\x3e\x31\xfb\xee\xf7\xc6\xb9\xb8\xb3\xfb\xde\x44\x39\xba\x9f\xe5\xca\x4d\x98\xcd\xcd\x9d\xad\x63\x5d\x50\x14\x59\x15\x55\xa2\x63\x86\x24\x5d\xc5\x32\x53\x01\x21\x3a\x10\x7c\x09\x4a\x48\x82\x0c\x88\xa2\x44\x20\x53\x64\x0d\x52\xdf\xa7\x2a\xa3\xaa\x80\x34\x26\x32\xf9\xe2\xce\x16\x39\x68\xd0\xd0\xc7\x35\xe2\xa3\x2e\x45\xaa\x39\x2b\x64\x4f\x76\xb5\xb5\x0a\xcc\x76\x26\xd0\x9b\x0a\xcd\xae\xdb\xa9\x1a\x01\xee\x11\x57\x68\x4a\xee\x69\xb2\x6a\x2c\x2b\xbe\xbd\x9c\x90\x9e\x40\xeb\xe6\xaa\xfe\xe0\x2e\xa8\xb7\x99\xe9\x0b\xe0\x56\x7a\xd1\x50\xaf\x25\xfd\x04\xa0\x60\x9b\xb5\xdd\x75\xb5\x31\x16\x0c\x08\x17\x27\xbc\x89\x6d\x65\xa9\xee\x6b\x67\x66\x6f\x14\xc3\x1d\x05\xb8\x7d\x50\x07\xd3\x74\x38\x23\xf9\xa8\xe6\x2c\xd4\xc1\xd0\x0a\x86\x2d\x7d\x42\x07\x12\xc5\xe5\x59\x87\xe5\xfa\xa7\xcb\x22\xf1\x63\x76\xe1\x75\x40\xdf\x61\xb6\x37\x6d\xe9\x2f\xcc\x36\xdf\xe9\xa0\x6f\xcc\x6c\x2e\xf6\xec\xbe\x0b\x82\xa1\xfb\x59\xae\xdc\x84\xd9\xdc\xec\xd9\x02\x05\x1a\x85\x1a\x23\x3e\x52\x24\x5d\xd2\x7c\x4d\x23\x98\x01\x2a\xaa\x0a\x64\xc4\x67\x32\xa0\x58\x50\xa1\x4e\x75\x55\xd6\x15\x59\xc1\x18\xc8\x48\xd1\x55\x01\x4a\x22\x55\xf0\x59\x83\x26\x72\xd0\xa0\xbd\xd5\xe6\xf2\x66\xb6\x53\x57\xc6\x42\x21\x7b\x3e\x7d\xea\xd5\x5d\xae\x65\x80\xe8\xa1\x2b\xd0\xe9\xdc\xa9\xf8\x27\x3d\x3c\xd6\x47\x2e\xd6\xa2\x1a\xad\x25\xe1\x90\x66\xc3\x4e\x47\xb1\x4d\x63\x31\x9d\x87\xc6\xb4\x7e\x3c\x8e\xbc\x87\xf2\xc2\x09\x9a\x84\x98\x87\x86\x32\x95\x7d\x5d\xca\x48\x75\x22\x9f\x06\x2b\x6c\x86\xc0\x6d\xea\x97\x7b\xe3\xb5\x25\x8b\x19\x14\xd7\x03\x87\x79\xac\x0b\x69\x7b\x1d\x42\x49\x68\xee\x8d\x38\xda\xce\xdb\x6e\x3d\x3b\x8d\xd7\xeb\xc5\x22\x57\xf0\xfd\x34\x68\x0d\x2e\xf3\x6c\x30\x9a\xed\x94\x02\xb3\xef\xfd\xd4\x8b\x8b\x3f\xbb\x3f\x99\x76\x32\xf7\xb3\x5c\xb9\x09\xb3\xb9\xf9\xb3\x99\xa8\x69\x54\x46\x98\x69\xbe\xe0\x4b\xa2\xca\x90\x2a\x51\xaa\x8a\x32\x50\x98\x86\x00\xd0\xa8\x2c\xc9\x8a\x24\x68\xa2\xaa\x69\x3e\x60\x2a\xd5\x55\x00\x09\xf4\x45\x8c\xa1\x22\xca\x67\x66\x73\xd0\xa0\xbd\xbd\x75\xc0\x5d\x5d\x7a\x94\x43\xbb\x90\x3d\xef\x52\xee\x69\x2b\x30\xfb\x14\xb2\xac\x9a\x78\xc9\xde\x39\x1d\xca\x4a\xdf\x9d\x45\x09\x16\x92\x78\x67\xaa\xf3\x78\x9d\x39\x15\x2f\xc6\xe1\x3e\x95\x15\x5a\xa5\xfd\x79\xef\xb8\xd5\x2b\x23\x57\x5c\x76\xbd\x7c\xbc\x72\x07\xee\x4a\x1c\x40\x20\x57\xfc\x45\x4e\xd1\x56\xeb\x95\xbb\x8b\x69\x80\x87\xc6\xe5\xde\x78\xc4\x56\xbb\x0a\xb3\x85\x1c\xab\xb3\xb2\x12\xd8\xae\xae\x5a\x9e\x52\x1b\x39\x46\x3e\x97\x04\x86\xb7\xb3\x59\xde\xef\x68\xcb\xf1\x67\xeb\xdb\x70\x64\x36\x97\x79\x36\xe8\xe2\x1e\x28\x30\xfb\xce\xef\x4a\x32\xb8\xf8\xb3\xfb\x63\xf1\xa1\xef\x7e\x96\x2b\x37\x61\x36\x37\x7f\xb6\x42\x25\x55\x14\x31\x53\x7d\x84\x81\xa8\xa9\x40\x51\x04\x20\x63\x28\x41\x8d\x89\x2a\x40\x02\xc6\x0c\x53\x26\xca\x1a\x41\x48\x50\xa8\x4e\x64\x4c\x21\x81\xba\xe0\x23\x5f\x57\x2e\x7d\x36\x07\x0d\x9a\xff\x71\x8d\xf8\xa8\x4b\xb1\xf4\x90\x14\xb2\x87\x5d\x6d\xad\x02\xb3\x49\x3d\x08\x83\xad\x5b\x59\xcf\x47\xad\xda\x2c\x20\xfd\x6d\xb3\x7e\x8c\x50\x57\x6e\x0b\xf5\xcd\x71\x45\xf6\x42\x43\x77\x4f\x4d\x79\x3d\x1f\xcf\x16\xdd\x70\x61\x47\x87\x45\x14\x98\x86\xbd\x3f\x64\x22\xdd\xe5\xbb\x41\xbd\x69\xc2\xa6\x20\x3b\x5a\x4d\x0f\xbd\x84\xce\xf6\xf2\xe5\xa9\x97\x17\xce\x82\x83\x28\xee\xad\x68\xe6\x4e\x8c\xb1\x3c\x68\xc2\x4d\x63\x91\x55\x0e\x87\x76\x33\xdf\x19\x34\xb2\x0e\x71\xde\xae\x21\xd1\xbd\x63\x9f\xcd\x67\x9e\x5d\xf7\xb3\xd3\x0b\xb3\x8d\x77\xde\xa5\x1b\x33\x9b\x8b\x3f\xbb\x3f\xf2\x70\xe2\x7e\x96\x2b\x37\x61\x36\x37\x7f\x36\x16\x04\x02\x25\x44\x21\x93\x7c\x81\xf8\x32\x03\x9a\x2a\x28\x40\x03\x50\x44\xd8\x67\x82\x2c\x0b\x94\x20\x95\x32\xe2\x8b\x58\x60\x08\xea\x12\x42\x04\x2a\x58\x52\xa8\x2c\x92\xf3\xa2\x3f\x22\x07\x0d\x1a\xfd\xb8\x46\x5c\x98\xdd\x6b\x48\x56\xab\x90\x3d\x6f\xe7\xf5\xcf\x5b\x81\xd9\xb8\x99\x77\xd2\x07\xdb\x12\xf2\x29\xab\x9a\xc7\x29\x2b\x83\xed\xcc\x95\x86\x83\x06\xa9\x76\x4e\xeb\x7e\x9a\x76\x3b\xb2\xa1\x74\x37\x9e\x24\xbb\xc7\x49\xab\x11\x4e\x9b\xbb\x4e\x2b\x38\x56\x50\x2d\x4d\x50\x6b\x67\xb4\x5b\xaa\x88\xd9\x6a\x16\xa9\x9d\xa0\x37\x0d\x46\xd1\xfa\xb2\x86\x40\x52\xcd\x6b\xfb\x18\xea\xb5\xbe\x73\xf2\x17\x13\xaf\x61\xee\x74\x68\xd9\x83\x7c\xa3\x41\x61\x5f\x53\x03\x67\x97\x2c\x71\x9f\xda\xc9\xfd\x56\xfd\x29\xd8\x1e\xbe\xc1\xec\x23\x26\xf6\xf3\xd5\xe8\x99\xd9\x77\x5e\xf5\xc7\xe0\xe2\xcf\xfe\x5a\xae\xdc\x84\xd9\xdc\xfc\xd9\x12\xd3\x24\x80\x55\x95\x00\x24\xf9\x22\x91\x09\xd3\x7d\xf0\x38\x9b\xd6\xa8\x0e\x04\x4c\x11\x52\xd9\xe3\x10\x1d\x69\x1a\x21\x84\xf9\xaa\xc8\x14\x8a\x30\xf1\x25\x4a\x18\x21\x67\x47\x88\xc8\x41\x83\xf6\xf6\xba\xc8\x5d\x5d\x7a\x12\x27\xab\x42\x6b\x7d\xaa\x54\x59\xad\xe6\x3b\x25\x71\x8f\x44\xd9\xee\xd5\xfe\x8c\xed\xd6\xe3\xd9\xca\xa6\x87\xbd\xa8\x49\x01\x5e\x0e\x74\xeb\xe8\xe6\xab\x81\xb8\xb1\xe5\xf2\x0a\x95\x8d\xbd\x1d\x96\xcb\x47\x46\x92\xac\x5d\xc7\x0d\x44\x2d\xb5\x9f\x3e\xd8\x27\x87\x69\x9e\x8d\x1a\xf3\xed\x31\x5c\x29\x97\x45\x04\x86\x52\x0f\xcf\x93\x46\x28\x24\xce\x30\x1a\x4d\xb5\x7a\x79\x65\x1f\x76\xdb\x03\x56\x51\xc4\x7a\x0f\xfa\xec\xe0\xed\x0e\xfd\x61\x52\xe9\xdd\xcf\x11\xd2\xe4\x32\xcf\x8e\x9a\xf3\x71\xe1\xa9\xd7\xdd\x95\x2a\x5c\xfc\xd9\x5f\xcb\x95\x9b\x30\x9b\x9b\x3f\x5b\xd6\x45\x02\x89\x08\x05\x88\x99\x2a\xeb\x18\x49\x22\x60\x02\xd3\x14\xdf\x47\x00\x28\x10\x00\x41\xc3\x8c\x89\xa2\x4e\x99\xac\x68\x92\x2c\x20\x84\xa1\xac\xcb\x4c\x41\xbe\x0c\xce\xef\x54\x91\x38\x68\xd0\xde\x3e\xc8\xe3\xae\x2e\x25\x60\x5d\xcc\x9e\x77\x13\xc0\xa7\xad\xf8\xd4\x2b\x3e\xd9\x89\x14\x94\x91\xa5\x0e\xaa\x74\x61\xac\x9c\x4d\x55\xf0\x77\x16\xf2\x6b\x8a\x0c\xcc\xfa\x64\xd6\x73\x6d\x80\xcc\x20\x50\x82\xb8\xdb\x43\x43\x35\x50\xe2\xf1\x5c\x29\xcb\x44\x70\xd9\x4c\xec\x55\x87\x9b\xed\xc9\xef\x9b\x83\x99\x74\x38\x36\x65\xaf\x06\xf3\x0b\xb3\xc7\xe3\xbc\xd7\xa9\x06\x95\x79\x3b\x0b\x5b\xac\x26\x79\x7e\x3c\x9a\x1a\x56\xf3\x50\x69\x6d\x35\xc1\x7d\xb0\x3b\x3b\x79\x3c\xd1\x11\x30\xee\xf7\x4e\x95\x26\x97\x79\xf6\xcb\x93\xe0\x67\x66\xbf\x83\x76\x63\x66\x73\xf1\x67\x7f\x2d\x57\x6e\xc1\xec\xf7\xef\x52\xfc\x5d\x66\x13\x41\xf2\x19\xa6\x48\x52\x54\x41\xc5\xbe\xa2\x2a\x4c\x52\x05\x1d\x49\x82\x8a\x90\xa8\x21\x28\x22\x04\x64\x2c\x31\x1f\xc8\x22\x03\x08\x48\x58\xd3\x09\x80\x1a\x60\x8a\x8c\xa4\xf3\x68\x5c\xe2\xa0\x41\x5b\x7e\x5c\x23\x2e\xcc\xae\x37\x05\x40\x0a\xad\xf5\xa9\x06\x6d\xed\x34\xd6\x4a\x77\xad\x4d\x47\x6a\x1c\x37\x63\xd9\x19\x3a\xcd\x60\x98\x0c\x97\x33\xdb\x22\xc3\xac\xee\xcb\x6b\x9c\xcb\x52\x14\x04\x2c\x31\xcd\xa8\xbb\x9a\xb3\x87\x78\x3e\x3b\x0d\x6a\x9b\x6a\xb3\x79\xa8\x8c\xbc\x55\xb2\x32\x9a\x1a\x1d\xad\x4e\xe6\x7c\x66\x8c\xbc\x91\x7d\x51\xaa\x1c\x6b\x92\xa6\x86\xee\x02\xe9\xee\x1a\x8a\x26\xea\x35\x76\x01\x8d\x3b\xbb\x7a\x77\xa8\xd7\x4d\x88\x2c\x8d\x92\x46\xb3\x09\xc6\xe1\x1d\x47\xe3\x5c\xe6\xd9\x13\xe6\xb8\xcf\x81\x9e\x95\x2a\xf7\xd6\xa0\x71\xf1\x67\x7f\x2d\x57\x6e\xc2\x6c\x6e\xfe\x6c\x59\xa4\xb2\xc6\x20\xf3\x09\xd6\x24\x48\xa0\x2c\x53\xa0\x28\x2a\xd1\x19\xf2\x01\xa4\x18\x42\xa8\xf9\x1a\x54\x21\xa0\x4c\xa1\xba\x0a\x54\xa8\x43\x8a\x55\x0a\x88\x42\x21\xbd\x30\x9b\x83\x06\x2d\xf8\xb8\x46\x7c\xd4\xa5\xb9\x50\x97\x0b\xad\xf5\xe9\xca\x3f\x68\x1c\x5b\xa4\xd2\x39\xa1\x58\x9a\xab\x8b\x49\xe2\x2c\x81\xcd\xba\xe1\xda\x91\xa1\xea\xd8\x9d\x45\x9a\xe9\xfd\xe5\xce\x81\xd6\xc3\xd8\x16\xc3\xba\x39\x5d\x0c\xcb\xb1\xdf\x9e\x44\x4e\x6b\x38\x9a\x68\x72\x6d\xb0\xd8\x1d\xad\x05\x69\x1a\x8d\x6d\x7c\x40\x28\x49\x44\xf9\xb2\x40\x88\x9d\x8d\x2a\xa1\x9e\x4b\x83\xde\xd2\x92\x5d\x37\x89\x54\x61\xa6\xca\x41\x13\xc8\xc8\xd0\x80\x3a\xad\xc7\x9b\x41\x9a\x35\xeb\xea\xe0\x7e\xcc\x2e\xb8\xa4\xbe\xc1\xec\x6e\xd7\xf6\x0a\xf3\xec\x7b\xaf\xfc\x53\xec\xf3\x6e\x9d\x2b\x37\x61\x36\x37\x7f\x36\xa5\xba\x0a\x55\xc5\x67\x04\x69\x90\xc8\x12\x91\x05\x4d\x96\x80\xc6\x24\x1f\x13\x5f\x23\x48\xd7\xa0\x2a\x4b\x58\xd7\x24\x4c\x74\xa4\xf8\x44\x66\xa2\x02\x21\xd3\x21\x20\xaa\x7f\x7e\x0f\x9a\xc4\x41\x83\x16\x7e\x5c\x23\x3e\xea\xd2\x24\x35\xce\x77\xe9\x9e\xee\xea\x7c\xba\x90\x80\x58\x3f\xc6\x34\xf2\xda\xee\xc0\x09\xf4\x38\x9f\x36\xf3\x7e\xb7\x2c\x1c\xbb\x23\x3f\x58\xd5\x8e\x86\xbc\xf3\xfb\xed\x4d\x58\x1e\xd8\x01\x44\x42\x38\x5a\x84\x76\xa3\x02\x2a\x56\x32\xde\x41\xa8\xec\xb4\xcd\xe4\xe0\x29\x9a\x67\x86\x93\x46\xb3\xbc\x67\x9a\x60\x94\xcd\xfa\xe5\x0e\x9a\xb6\x45\x0d\x8f\xe5\x51\x68\x0d\x2d\x43\xe8\x79\x50\x3f\xf4\x59\x67\x2d\xcf\x6b\x99\x37\x80\x9b\xb5\x64\xc1\x75\x30\xdc\x18\xa7\xf4\x7e\xef\x41\x6b\x71\x99\x67\xbf\x90\xe2\x59\x37\x7e\x67\x0d\x9a\xc9\xc5\x9f\xfd\xb5\x5c\xb9\x09\xb3\xbf\xee\xcf\xfe\xf1\xe3\xaf\xbf\x7e\xfc\xf5\x57\xa9\x8f\x36\xf4\xef\x12\x22\x24\xce\xa2\xd4\x47\x29\x2a\x7e\xff\x77\xbb\xa2\xf9\x3f\x25\x27\xdf\xd2\xbf\x4b\xe6\xa0\x3f\x76\x46\xd5\x56\xdf\xf9\xa7\x34\x26\x4b\xba\x41\x7f\x97\xb6\x19\x5e\x07\xe4\x9f\xd2\xe0\x18\xd1\xfd\xdf\xa5\xc7\x88\x3f\x7e\x54\xbb\x8e\x35\x2a\x39\x55\xa3\x6b\x95\x06\xfd\xee\xac\x18\xf1\x47\xa9\x54\x2a\x55\x6b\xb5\x42\xb4\x77\x05\x96\x86\xa3\x56\xaf\x3a\x9a\x95\x3a\xd6\xac\xf4\xc7\xf9\xd7\xc0\xff\xb3\xf4\x78\x44\x84\x36\xf4\x23\xf8\xc9\xcf\x2f\x7c\x81\x27\xbf\x40\x9d\xfc\x0a\xf2\x3b\xa0\x18\x45\x8f\xff\x38\xc1\xc3\x28\xba\x86\xec\x52\xc0\x6b\x50\x51\xec\xd3\x2b\x88\xd6\xd4\x5f\xd0\xfd\x92\x22\x9f\xee\x93\xd7\x7b\xff\x3e\xef\x25\x74\xf7\x2f\x17\xb8\xaf\x82\x5f\x03\xfe\x8b\xd2\x4b\x93\x7e\xcb\x9e\x58\xa5\x3f\x7e\xfe\xf5\x3f\xd5\x84\xcf\xf9\xfe\x8f\x15\x78\xdf\x06\xe7\xdf\x51\xb2\x7c\x87\x3e\x66\xec\x11\xf6\xf3\x07\x27\xbc\xcf\xc1\xae\x01\x2d\x14\xf3\x1a\xe1\xd3\x0f\x57\xd2\x64\x4b\x1f\xd1\x3d\xfd\xcf\x09\xdc\x53\xac\x6b\xd8\x5e\x0a\x79\x0d\x2d\xd8\xfe\x59\xda\xc6\xfb\xf4\x3d\xb6\xc7\xf2\x92\xe5\x2e\xa3\x19\x7d\xb5\xc3\x0b\x69\x21\xe4\x55\xc0\x6f\x8b\xbc\xd6\xe8\xd7\x50\x27\x19\x3e\x7f\xf0\x43\x9a\x64\xf8\x03\x8c\x97\x62\x5e\xa3\xdb\xd3\xe4\x4a\x73\x27\x64\xbb\xcb\xe2\x7d\xb6\x49\x0a\x5f\x39\x81\x7c\x09\x78\x0d\xe8\x9b\xe2\x5e\x83\xdd\x25\x34\xbd\xca\x9e\x24\x58\x44\x8f\x09\x7a\xfe\xe4\x85\xf4\x39\xda\x55\x98\x85\x82\x3e\xec\xaf\x9e\x4b\x59\xd1\xfc\x3d\xde\x34\xde\xd3\x24\x45\x29\x2d\x7c\xe5\x85\xfa\x67\xc0\xab\xc0\x5f\x17\xf7\x1a\xfb\xd3\xdf\xaf\xf6\xb0\xe9\x3e\x4b\xd2\x75\x10\xd1\xa4\xf0\x95\x13\xe0\x97\x80\xd7\x00\xbf\x29\xee\xc3\x93\x1d\x24\x49\x46\xf7\x7f\x96\x50\x92\xd0\x94\xc4\xfe\x95\x3a\x9c\x18\xa5\x97\x39\x4c\x71\x87\x57\x3d\x0a\x21\xaf\xd6\xe4\x6d\x91\xd7\xae\x13\x09\xdd\xfd\x59\x4a\x4f\x41\xe4\xd3\xd3\x95\x1a\xbc\xc0\xe7\x8d\xfd\x97\xc0\xbf\x85\xfa\xdc\x48\x18\xad\x51\x44\x68\x72\x01\xdb\xea\xd7\x2c\xef\x13\x9c\xe6\xc8\xaa\x3a\xd6\xf3\xa1\x6f\xe3\x94\x06\xfd\x97\x81\xdf\x64\xdc\xea\x37\x4a\x38\xdd\x53\x5a\xfa\xe3\x7c\xc4\xff\x2b\x4d\x9b\xd6\xc8\xfa\xb9\x5f\xfa\x9f\xff\x5f\x02\xc2\x65\x7b\x3f\x36\xcb\xf2\x20\x5a\x3c\xa7\xd1\x53\x45\x7e\x1b\xe8\xbb\x48\x8f\x50\xcf\x1d\xfc\x6b\xa0\x85\x03\xdf\xe1\x79\x3c\xe7\x38\x4f\xe8\xee\xb7\x71\xfc\x8c\xf0\x58\xfe\x4b\xee\xbc\x82\xf0\xf1\x78\xea\xf1\x70\x46\xe9\xf7\x21\x5c\x82\x3c\xa3\x28\x70\xf0\x8b\x40\xce\xbf\x7c\x0f\x48\x31\xc8\x23\x90\xd7\xa3\xc5\x2f\x22\xd9\xee\x03\x42\xbf\x97\x1b\x2f\x21\x3e\x4a\x8a\xa7\x23\xae\xf5\xc8\x34\x3a\x7c\xf3\x24\x14\x83\x3c\x16\x9f\x90\xed\x7f\x6c\x8b\x97\xee\xf9\xdb\x48\x8a\x71\xce\x60\x2e\x63\x8e\xd7\x60\x50\x92\xfe\x02\x10\x5d\xaf\x39\xd1\xf6\x7d\xa8\x8f\x9a\xe8\xd5\x91\x1f\x0d\x46\xce\xd7\xa6\xdf\x87\xf3\x2a\xcc\xd3\x19\x3a\x8f\x72\x5e\x61\xb9\x36\xd9\x1c\xc6\x49\xba\xd8\xd3\xb1\xdd\x7d\x9a\x33\x63\x94\xd0\x92\x9f\x6d\xb6\x25\x12\x6f\xb6\x6b\x9a\xd2\xa7\xd2\xfe\x37\x00\x00\xff\xff\x62\xc5\x8f\xca\xf1\x6f\x01\x00") + +func order_books_310CoreSqlBytes() ([]byte, error) { + return bindataRead( + _order_books_310CoreSql, + "order_books_310-core.sql", + ) +} + +func order_books_310CoreSql() (*asset, error) { + bytes, err := order_books_310CoreSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "order_books_310-core.sql", size: 94193, mode: os.FileMode(420), modTime: time.Unix(1508958251, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _order_books_310HorizonSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x67\x6f\xe3\x48\xb6\x37\xfe\x7e\x3e\x85\x30\x6f\x7a\x17\xee\x19\x57\x0e\x3d\xff\x79\x00\xe5\x60\x05\x2b\x4b\x7e\xf0\xc0\x28\x92\x45\x65\x51\x16\x95\xec\x8b\xfb\xdd\xff\xb0\xb2\x68\x25\x4b\xb4\x7a\x76\xd1\xba\x7b\x77\xcd\xae\xe2\xa9\x3a\xe9\x57\xf1\x1c\xfe\xf1\xc7\x6f\x7f\xfc\x11\x78\x74\xdc\x51\x63\xa8\x8b\xf9\x74\xc0\x52\x23\x65\x28\x57\x07\xac\x71\x6f\xf0\xdb\x1f\x7f\xfc\xf6\x5e\x1e\x19\xf7\x06\xda\x0a\xd8\x43\xa7\xb7\xa9\x30\xd1\x43\xb7\xe5\xf4\x03\xf2\x4f\xf6\x27\xdd\xaa\x65\xbc\x06\x06\x8d\xe7\xf7\xd7\x3d\x55\x7e\x2b\x46\x4b\x01\x77\xa4\x46\xba\xa7\xfb\xa3\xe7\x51\xab\xa7\x9d\xf1\x28\xf0\x77\x00\xfc\x35\x2f\xea\x3a\x66\xe7\xe3\xbf\x9a\xdd\xd6\x7b\x6d\xdd\x37\x1d\xab\xd5\x6f\x04\xfe\x0e\x7c\x2b\x97\x62\xe2\xdb\x5f\x2b\x72\x7d\x4b\x0d\xad\x67\xd3\xe9\xdb\xce\xb0\xd7\xea\x37\x9e\xdd\xd1\xb0\xd5\x6f\xb8\x81\xbf\x03\x4e\x7f\x49\xa3\xa9\xcd\xce\xb3\x3d\xee\x9b\xa3\x96\xd3\x7f\x36\x1c\xab\xa5\xdf\xcb\x6d\xd5\x75\xf5\x4e\x33\xbd\x56\xff\xb9\xa7\x5d\x57\x35\xe6\x15\xa6\x6a\xd8\x6f\xf5\x1b\x7f\x2d\xfb\xae\xd5\xd0\x6c\x3e\x0f\xd4\xa8\x19\xf8\x3b\x30\x18\x1b\xdd\x96\xf9\xfd\x9d\x59\x53\x8d\x54\xd7\x79\xaf\x16\x4c\x97\xa2\x85\x40\x29\x18\x4a\x47\x03\xc9\x58\x20\x5a\x4b\x16\x4b\xc5\x40\x2e\x9b\xae\x2f\xeb\xff\xd9\x6c\xb9\x23\x67\xf8\xfa\x3c\x1a\x2a\x4b\xbb\x81\x48\x21\xf7\x18\x08\xe7\xb2\xc5\x52\x21\x98\xcc\x96\xb6\x5e\xda\xad\xf8\x6c\x3a\xe3\xfe\x48\x0f\x9f\x95\xeb\xea\xd1\x73\xcb\x7a\xb6\x3b\xfa\xf5\xaf\x5b\x34\x68\xce\xff\xba\x45\x93\xef\x76\x75\x3b\x06\x17\xad\x79\xb9\x9b\xbf\x9e\xcc\x46\xa2\xb5\xad\x37\x97\x2d\xcd\x5f\x7c\xd6\xb6\xad\xcd\x91\xfb\x6c\xbc\x3e\x3b\x43\x4b\x0f\x9f\x0d\xc7\xe9\x1c\x7f\xb1\xd5\xb7\xf4\xec\x79\xab\xfd\xbe\xab\xe6\xb6\xe8\x3e\x3b\xfd\xe7\x96\xf5\x99\xb7\x9d\x81\x1e\xaa\xf5\xbb\xa3\xd7\x81\xbe\xe2\xed\x4d\x4f\xae\xea\xc5\xe7\xde\xed\x6a\xab\xa1\x87\xf3\x17\x5d\xfd\x32\xd6\x7d\xf3\x53\x2c\x6c\xbd\x3e\x18\xea\x49\xcb\x19\xbb\xcb\x7f\x7b\x6e\x2a\xb7\x79\x21\xa9\xeb\x29\xb4\x7a\x03\x67\xf8\xee\x31\x4b\xd8\xbb\x94\xcc\xa5\xb2\x34\xbb\x8e\xab\xad\x67\x35\xfa\xcc\xfb\x2b\x63\xbe\xc0\x94\x96\xae\x73\x41\xa7\xb7\xdf\x54\x96\x35\xd4\xae\x7b\xfc\xf5\xe6\x68\x68\xcd\x87\x86\xe7\xae\xe3\x74\xc6\x83\x33\x6a\x0f\x4e\x75\x69\x51\x4b\xb5\x86\x9f\x24\xbc\xc2\xc5\xb3\x5f\x78\xc7\x09\xdb\xd6\xc3\x53\x55\x07\xef\x35\x9b\xa3\x93\xfd\x76\x77\xdc\xd6\x78\x3d\x29\xfc\xe6\xda\x3f\xce\xa9\xec\x2c\xfa\xe1\x9c\xac\xd8\x72\x47\xcf\xa3\xd9\xf3\xe0\x34\xc9\xf7\x9a\xce\xe0\xdc\x9a\xfa\xdc\x6a\x2b\x00\x3e\x5e\xd9\x58\x39\xc9\xc9\x6a\xa7\x7d\xdf\x58\xdb\xee\xf1\x7a\x8b\x31\xec\x5d\xda\xae\x3b\x7e\x6f\xf9\x53\xa3\xd8\x5a\xb7\x03\x35\x1c\xb5\xcc\xd6\x40\xf5\x47\x67\x8e\x6b\x7b\x5f\x7d\x1e\x7c\x72\x24\x5d\x83\xfb\x67\x7b\xb0\xff\xc5\x4f\xb7\x3f\x17\xdf\x39\xed\x2d\x2a\x7e\x39\xfd\x85\x3a\x4d\xc7\x5a\xcd\x4e\xde\xa1\x72\x35\x51\x99\x6b\xf8\xf9\xcc\x1e\x34\x9c\xe1\xe0\xb9\xd7\x6a\x2c\xc7\xce\x23\x5d\xf0\xd4\x3c\xca\xe3\xb9\x26\xb4\x78\x3b\x9c\x4b\x97\x33\xd9\x40\xcb\x5a\xb4\x1e\x89\xc6\x82\xe5\x74\xe9\x4c\xda\x07\x4c\xc3\x07\xca\x4b\xa5\x1c\xa7\x34\x7f\x3a\x9f\xfd\xd5\xb0\x52\x8c\xe6\xcb\xd1\x6c\xf8\x02\x99\xbd\x4f\x0c\x5d\xfd\xf2\xe9\x96\x77\x88\x9c\xfd\xb6\xa5\xcf\xac\xbb\x99\x7e\x9d\xcd\xe1\x01\xdf\xfc\x0c\x7f\xfb\x49\x9c\xf7\xee\x72\xa2\x72\x5e\xe5\xe5\xac\xe4\x6c\xde\x96\x7e\xfa\x19\x5e\x16\xaf\x9c\x59\x77\x39\x5f\x39\xbf\x3f\xab\x09\xce\x39\x3d\xf2\x78\xfa\xb2\x72\xb4\x56\x8a\x66\x8b\xc9\x5c\x76\xfb\x85\xee\xa0\xe1\xbe\x74\x57\xdd\x08\x27\xa2\x99\xe0\x07\x7a\x7f\xfd\xb6\x58\xd4\x67\x55\x4f\xff\x58\xfd\x5b\xa0\xf4\x3a\xd0\x3f\x96\xaf\xfc\x15\x28\x9a\x4d\xdd\x53\x3f\x02\x7f\xfc\x15\xc8\x4d\xfb\x7a\xf8\x23\xf0\xc7\x7c\xad\x1f\x2e\x44\x83\xa5\xe8\x8a\xf2\x8a\xde\x6f\x3b\x14\x77\x0b\x97\x84\xc3\xb9\x4c\x26\x9a\x2d\x1d\xa1\xbc\xa8\x10\xc8\x65\x77\x09\x04\x92\xc5\xc0\xb7\xd5\x2a\x7e\xf5\x6f\xee\x9c\xc8\x37\x6f\xcb\x2b\xf6\x97\x6d\xae\x25\x74\x92\x9f\x1d\x59\x66\x73\x25\x8f\x3c\x03\xd5\x64\x29\xb1\xee\xd6\xf6\x72\x7e\xa7\xf9\x0d\x15\x4f\x47\x3e\xc3\xfc\x07\x22\x73\x01\x3c\xa6\xef\x07\x8d\x62\x3e\x1d\x18\x0c\x1d\x53\x5b\xe3\xa1\xea\x06\xba\xaa\xdf\x18\xab\x86\x9e\x8b\xe1\xcc\xed\x87\xf7\x6a\x96\xb6\xd5\xb8\x3b\x7a\x1e\x29\xa3\xab\xdd\x81\x32\x75\xe0\xef\xc0\xb7\x6f\x9e\xd2\x69\x6b\xd4\x7c\x76\x5a\xd6\xd6\x36\xc8\x0e\xb3\x5e\xa3\x5c\xb2\x3a\x37\xe1\x0d\xa3\x2b\x23\xd8\x27\xf4\x85\xb5\x7b\x07\xbc\x7f\xfd\x16\x08\x04\xde\x71\x7d\xa4\x67\xa3\xb9\x2e\xb2\xe5\x74\xfa\xfb\xfc\x5f\xd5\x60\xd0\x6d\xcd\x57\x30\x81\xf7\x29\xb9\x3b\x52\xbd\x41\xe0\xbd\xa3\xf3\xc7\xc0\x9b\xd3\xd7\xbf\xfd\xdb\xab\x95\x43\x2e\xb7\xb2\xf8\xa5\xaf\x9e\xd7\xe7\xb5\x67\x1f\xa0\x3a\xef\x66\xb1\x14\x2c\x94\x16\x36\x03\xe7\xff\x90\xcc\x86\x0b\xd1\xb9\x82\x43\xf5\xe5\x3f\x65\x73\x81\x4c\x32\x5b\x09\xa6\xcb\xd1\xf5\x73\xb0\xb6\x79\x0e\x07\xc3\x89\x68\x00\x9e\x62\xe6\x62\xb1\x7b\x09\x6d\xe4\x6e\xb4\x1a\xad\xfe\x68\x35\xa2\x06\xfa\x7a\x36\x9a\xa8\xee\xbf\xbe\x1d\xe0\xf8\xdb\x8f\x1f\x43\xdd\x30\xbb\xca\x75\xff\xed\x55\xd7\x62\xe5\x16\x30\x9b\x6a\xa8\xcc\x91\x1e\x06\x26\x6a\xf8\xda\xea\x37\xfe\xc5\xc8\xbf\x8f\x28\x6a\x01\xbc\x57\x73\xb6\x98\x2e\xac\xf9\x6a\xf5\x47\xba\xa1\x87\xde\x3e\xae\xa7\x6b\xfb\xbb\xb9\xb7\xfa\xfb\x44\x6f\x4f\x75\x88\xf6\x57\x5f\xcc\x00\xf7\xbc\x40\xd9\xe6\x85\x53\xf2\xf0\xd9\x6c\xb7\x69\xde\xcc\x68\x8f\x31\x12\xc8\x55\xb3\xd1\x48\x20\x54\x3f\xc1\xd1\x62\xfa\x77\x9c\xa1\x35\x2d\x4f\xf1\x9f\xef\xeb\xc6\xfd\x7d\x5b\x4d\x28\xae\xb5\xba\x25\x9d\xa5\xd9\x79\x7c\xe6\x79\xe3\x5e\xbb\x76\xf2\x71\xfe\x74\xa8\xe6\xef\xf3\x05\xed\xef\x07\xac\x79\x6e\xc7\xfb\x8b\x2c\x3d\x52\xad\xae\x1b\x68\xbb\x4e\xdf\x38\x6c\x6c\xab\x59\xd8\xb5\x72\x58\xd2\x59\xca\x61\xb5\x8b\x77\xa0\x6f\x5b\x5b\x6b\x67\x79\xe1\xbe\x5d\xbd\xfd\x2f\x2e\xc5\xb2\x35\xed\x9e\x2b\x62\xdd\x8f\x15\xca\x01\x4f\x0b\x1b\x45\x9c\x57\x7f\xbd\xb5\xe6\x19\x98\x9c\xf1\x68\x33\x36\x79\xdf\x19\x6a\x35\x3a\xf9\xd2\xa2\xee\x78\x60\x9d\x5d\x77\x6d\x3a\xcb\x47\xcf\xae\xe3\x07\x5e\xa0\xd7\x88\x9c\x91\xea\x3e\x9b\x4e\xab\xef\xee\xb7\x41\x5b\xeb\xe7\x81\xe3\x74\xf7\x97\xce\x77\xcd\x6d\x7d\x48\xd7\xf3\xe2\xa1\x76\xf5\x70\x72\xa8\x4a\x4f\xcd\x9e\x47\xb3\xe7\x77\xe8\x74\x5b\x6f\x87\x6a\x0d\x86\xce\xc8\x31\x9d\xee\x41\xbe\xc0\x19\xd8\x7a\x60\xc1\x72\xad\xf5\x1f\x58\x04\x9f\x18\x8b\xce\x47\x81\xd3\xb8\xf2\x59\x96\xfd\x1d\x5e\x8e\xb6\x71\xab\xe1\xe6\x53\x8c\x5e\x39\xfc\x1c\x6d\xeb\xe3\x70\xb4\xbf\xfa\x91\xe1\x69\x6b\x39\xef\x9b\x6d\x7e\x9c\xf3\x79\x70\x60\xe7\xec\x67\x7f\x9d\xf9\x8c\xdc\x5c\xb0\x32\x1f\x99\xae\x1c\x98\x16\xff\xe4\x3a\xe3\xa1\xb9\x3e\x7a\x3b\x30\x24\xac\xdc\xfc\xdb\xb7\x1f\x3f\x3e\xd4\x38\xc3\x0f\x96\xbb\x29\xd7\x8a\x73\x79\xa8\xf8\x2f\x5f\xc7\xf1\xe5\xb8\x76\xc9\xa8\x32\x3f\x49\x38\xd8\xac\xe7\x48\xf3\x58\xa5\xe5\x29\xeb\xb1\x2a\xbd\xb9\x7a\xf6\x56\xf8\x78\x38\x7c\xa2\xde\xd1\xe6\xd6\xb5\x8e\xb4\x38\xef\x52\xcb\x7d\x76\x75\xb7\xab\x87\x01\xc3\x71\xba\x5a\xf5\x17\x65\x5b\x1b\xa8\x7b\xcf\x78\xe7\x64\x9f\xe7\xb7\x00\x02\xe1\x44\x34\xfc\x10\xf8\xd7\xbf\xb6\x59\xfc\x3f\x01\xf0\xef\x7f\x9f\x22\xb5\xef\xf5\x15\x57\xff\xdf\x07\x46\xcf\xa0\xb7\xc3\xb4\x87\xbc\x47\x22\xf3\x0e\x1e\xb5\xf5\xfd\xfb\x8e\x3e\x58\xff\xfe\x9d\xe4\x33\x87\xba\x73\x30\xe6\x9a\xc1\xee\xd4\xae\xad\x3f\xc3\xdd\x89\x56\x6e\x35\xe0\x7d\x92\xd9\x2b\x87\xbc\x13\xad\x7d\x1c\xf4\x0e\xbd\x70\x64\xd8\xdb\xd9\xa9\xf7\xd1\x56\x57\xf6\xb9\xdd\xa5\xb3\x57\x1f\x4b\x70\x3e\xb1\xa6\x39\x77\x64\x3c\x3e\xc8\xed\xad\xbb\x69\xfa\xf0\xf4\x5c\x1d\x74\xbd\x43\x4b\x9b\x9f\xb2\x38\x19\xcd\x9e\x75\x7f\xa2\xbb\xce\x40\xef\xdb\xf0\x1b\xcd\xde\x97\x0a\xe3\xee\xe8\x40\x61\x4f\x8f\xd4\x81\xa2\x77\x29\x1c\x2a\x76\x5b\x8d\xbe\x1a\x8d\x87\x7a\xdf\xde\x94\x64\xff\xfe\xbf\xff\x6f\x33\xbb\xf8\x9f\xff\xdd\x37\xbf\xf8\xbf\xff\xcf\xbb\x66\xd1\x3d\xe7\xc0\x36\xd2\x86\x56\xdf\xe9\xeb\xa3\xb3\x95\x0d\xad\x8f\x64\x96\x9c\xb5\x7a\xfa\xd9\x70\xc6\x7d\xcb\x7d\xd7\x9c\x18\xaa\x7e\xe3\xd8\xa6\xe7\x62\x13\xac\x65\xad\xbc\x67\x75\x50\x76\x8e\xcb\x2f\xdc\x67\x7e\x3a\x79\xe2\x0c\xae\x18\x2d\x1d\xd9\x30\xdc\xde\x9a\xd9\xde\x2e\xfc\xdc\xc4\xdd\x3f\x26\xce\x3c\xa2\x3c\xca\xd4\xd1\x09\xff\x39\x4c\x1e\x1c\x39\x7d\x63\xf3\xec\x53\xde\xa3\x8c\x9e\x80\xf9\xfd\xac\x46\xd4\x48\x05\x6c\x67\x78\xc6\x59\x41\x20\x12\x2c\x05\x4f\xb0\x98\xcc\x16\xa3\x85\x52\x20\x99\x2d\xe5\x3e\x9c\x17\xcc\x47\xc7\x62\xe0\x5f\xdf\xe0\x73\xab\xdf\x1a\xb5\x54\xf7\x79\x71\x3a\xf4\xa7\xfb\xd2\xfd\xf6\x3d\xf0\x0d\x01\xc8\xff\x80\xe0\x0f\x44\x03\x10\xfd\x00\xe8\x07\x81\x7f\x62\x4a\x05\xa4\x7f\x00\xfe\xed\xdf\x7f\x9d\x47\x1d\x3d\x2f\x6e\x28\xed\x88\xc0\x78\x7d\x1e\x39\x2d\xeb\x78\x4b\x12\xe2\xcf\x34\x84\x9f\xc7\xae\x5e\x23\xfc\x73\xab\xff\xe1\x52\xd4\xd1\xe6\x18\x84\x50\x7e\xa6\x3d\xf2\xac\x2c\xeb\xd9\xbb\x99\x72\xbc\x0d\x2a\xa5\xf8\x4c\x1b\xf4\x79\x31\x9c\xac\x66\xb6\xf3\x93\xa7\xa3\x4d\x70\x40\xc8\xa7\xc4\xc6\x56\x4d\x2c\xd1\xe6\x8c\x26\x30\x27\xec\x33\x4d\xf0\xe7\x9e\x63\xb5\xec\xd7\xf3\xb9\x10\x50\x02\xb4\x6c\xe2\x80\x6b\x1c\x3d\xd0\xf9\xac\x6f\x7c\x38\xd4\x59\xf5\x1d\x7e\x0f\x7c\x8b\x87\x0a\x8f\xf5\x44\x32\x8d\xc2\x49\x1c\xcb\xe6\x49\xa8\x96\x8e\x65\xb2\x91\x74\x2c\x55\xce\x3e\x96\x51\xa2\x8e\x9f\x32\xb1\x62\x22\x97\x2d\x87\xa3\xb9\x60\xb1\xca\xf3\x61\x9e\xab\xa1\x84\x57\x3e\x07\x1b\x41\xef\x8d\x84\x11\xce\xc7\x50\xa2\x1c\xa5\x28\x98\xa9\x95\x63\xe5\x04\x0e\xd6\x53\xc1\x5a\x2d\x5e\xab\x55\x50\x25\x51\xab\xd7\x0b\x2c\x5a\xaf\x45\x4b\x8f\x0f\x91\xda\x53\x31\x58\x65\xbc\x96\x23\x67\x37\x82\xe7\x8d\xd4\x1e\xe2\xac\x90\x25\xb9\x6c\x32\xfa\x18\xce\x64\x63\x21\x8e\x51\x90\x60\xf6\x44\x1f\xb3\x91\x62\x21\x1d\xaf\x3e\xf0\x78\x28\x1d\xce\xe4\xd3\xc9\x58\x8e\x14\x79\xb4\x5e\xad\x94\xcf\x6e\x84\xcc\xc5\x55\x8b\xe7\x53\xd5\x4a\xba\x9a\xab\x27\x62\xe9\x4a\xe9\xa1\x5a\xa1\xb1\x78\x22\x88\xd3\xd9\x7a\x1d\xa5\xf2\x0f\x19\x9e\x0b\xa6\x82\xe5\x68\x3e\x56\x66\xe9\xc7\x70\x31\x1a\xab\xd4\x72\xd9\x6f\x97\x1e\x40\xbe\xc3\xf0\x09\x5d\x17\xa3\xe9\x68\xb8\xb4\x75\xa2\xfb\xa7\xab\x8f\x1f\xce\x7d\x0f\x90\xef\x81\xd1\x70\xac\xcf\xb0\xc0\x8f\xc7\x6e\xe7\xd8\xdf\x25\x47\x3d\xbe\x70\xba\x33\xab\xf8\x1e\x80\xdf\x17\xc7\xd4\xa7\x19\xdd\x77\xd4\x73\xa9\xa7\xad\x8e\x7b\xb6\x7c\x40\x50\x21\x25\x16\x4c\xc8\x79\xa7\xc0\xf7\xc0\xb7\xff\xf9\xdd\x1d\xbd\x8f\x1b\xfd\xc6\xb3\xa1\xba\xaa\x6f\xea\xdf\x7f\x04\x7e\x87\x00\x80\x3f\xc1\xe2\xf7\xfb\xff\x1e\x32\x4e\x6f\x0b\x70\xb7\x05\xf4\x3d\x80\xe7\x2d\x2c\x36\x02\x3e\xd0\xfd\x1e\xf8\x7d\x73\xc4\xf9\x5e\xda\x57\xa3\xd6\x44\x9f\xdf\x9e\x87\x23\xfc\x3d\x00\x17\x2c\x4d\x75\xab\xd1\x7c\x6f\x10\x7e\x0f\xfc\xbe\x10\xd8\x73\x47\xbf\xbe\xb7\x71\x29\x0a\x9c\xdf\x2b\xbc\xec\x15\x41\x5c\xd0\x13\x72\x66\x57\xc9\x79\xd9\xc2\x1e\x39\x33\x5f\xe5\xec\xe1\xe8\x4c\x39\x5f\x06\x84\xe7\xf7\x8a\xac\x7a\xc5\x84\x80\x5f\x2b\xe7\x45\x0b\x5f\x2e\x67\x0f\x47\xe7\xc9\xf9\xc2\xb1\xe0\x53\xbd\x82\x48\x08\x22\x01\x95\x4b\x83\x46\x8b\x6e\x75\x5b\xbd\xd6\x5c\x0c\x12\x21\x8c\x39\x02\x98\x09\xfa\x27\xe1\x9c\x0a\xc0\x37\xe2\x30\x1d\x6b\x2e\x8e\x72\x31\xf2\x51\x46\xe6\x50\x5b\xad\xd1\xb3\xea\x0e\x9a\xaa\x3f\xee\x91\x4d\x8d\xc5\xd5\x84\x9b\xf9\xec\x82\x47\x08\xc0\xd2\x98\xfe\xeb\x78\x5c\xeb\x11\x12\xc8\xf9\x15\x3c\x86\x4a\xe1\x7f\x2a\x8f\x1b\x3d\x0a\xc4\xf1\x7f\x2f\x8f\x1c\x72\x29\x38\x46\x2b\x5b\xf5\xc0\x12\xdd\x0b\x4b\xff\x01\x36\x8a\x3c\xbc\xed\x81\xdc\xff\x58\xde\xc8\x9a\x37\x8e\x57\xfe\xf7\xdf\xc2\x1b\xf2\xf0\xf6\xdf\xa4\xb7\xb5\xbf\x09\x48\x56\x98\xf2\x29\xde\xfe\xc1\x58\x82\x3c\xbc\x7d\x5a\x6f\xff\x60\xde\xd6\xfe\x26\x28\x65\xf2\xbf\x55\x6f\x0b\xde\xfe\x53\xf4\x76\x62\xf9\xbb\xef\x86\xdf\xa5\xcb\xdf\xd5\x2d\xbf\xed\x7d\x26\x86\x2d\x29\x6c\x8a\x99\xd6\x4c\x58\xd0\x40\xdc\xa0\x86\x90\x36\xc2\xca\xa6\x18\x42\x83\x53\x26\x15\x22\xb6\xb2\x21\x01\x58\x59\xc0\xa0\xc8\x60\x18\x1b\x80\x1b\x5a\xca\x6f\xdf\x17\x47\x21\xef\x2b\x8d\xf7\x69\x05\x94\x1c\xfc\x01\xe0\x1f\x00\x06\x00\xf8\x31\xff\x8f\x77\xc3\x4d\xfe\x00\xe4\x07\x44\x7f\x0a\x04\x28\x97\x27\x4b\x09\x92\x44\x32\x8e\x24\x5b\x4c\xfe\x21\xf8\xf0\x9b\x37\x0d\xc1\x76\xe1\xf2\x19\x1c\xb0\x1e\xaf\x28\xde\xdd\x80\x4a\x66\x18\x02\x9a\x5a\x22\x8d\x01\x37\x80\x54\x02\x30\x28\x09\xe5\x86\x56\x26\x80\xc2\x00\x96\x26\x12\xd8\x5c\x72\x4a\xa9\x34\x2d\x68\x4b\x26\x0c\x65\x42\x2e\xc1\x9c\x13\x1f\xc4\x89\x17\x86\xfb\x41\x26\xe0\x88\xa8\x38\x84\xe8\x64\xe9\x62\x63\x80\x50\x89\x8e\x08\x12\x83\xfd\xa2\x7c\xff\x1f\x71\xa6\x30\xdf\xbb\x2f\x14\xd1\x92\x5b\x08\x41\x46\xa9\x25\xb8\x61\x08\x53\x68\x1b\x31\x88\xa5\x45\x14\xc0\x4c\x01\x6d\x51\xcb\x60\x00\x29\x69\x09\x25\x29\xb2\x6c\xc3\xb2\x14\xd2\x10\xb3\x39\x37\x3e\x28\x84\xcc\xff\xb3\x47\x2e\x87\xad\x92\x21\x04\xc4\xc9\xd2\xe5\xfa\x0f\x0a\x21\x8e\x48\x93\xfb\x20\xcd\xf7\xfe\x53\x1b\x00\x04\x08\xe7\x1c\x9a\x54\x29\xc2\x0d\x2c\x08\xa0\x94\x02\x43\x41\x9b\x1b\xc2\x00\x26\xa1\x96\xa5\x20\xe7\x04\x43\x2e\x6d\x5b\x73\xaa\x35\xb0\x89\x69\x50\xaa\xbf\xf9\xa3\x91\x83\xd2\x84\x07\xe5\x25\x00\x42\xf4\x64\xe9\x02\xb9\x99\x84\x82\x1c\x91\x26\x84\x3e\x88\x93\x7e\x0f\x7c\x03\xc0\xe4\x88\x00\x85\x91\x66\xcc\x92\xda\x44\x8c\xdb\x44\x98\x5c\x32\x64\x0a\x61\x68\x08\x2d\x8c\x4d\x83\x40\x6e\x22\x62\x0b\x69\x52\xc1\x4c\x43\x42\x2a\x0c\x4a\x10\xff\xe6\x8f\x4a\x30\x5e\xfc\xff\x3e\xd9\x1c\x12\x99\x04\x12\x43\x72\xb2\x14\x41\xc2\x89\xc0\x8c\x08\x70\x44\xa0\x84\x9c\x10\xe8\x89\xc1\xe9\x8c\xfb\xb8\x97\x8e\x55\x07\x4e\x7d\x0f\xec\xab\xc2\x03\xca\x3f\x41\xc5\xb3\x5b\x8a\x2e\xa3\xe2\xdd\xdd\xbc\x8c\x0a\xf1\xec\x28\x5e\x46\x85\x7a\x76\x00\x2f\xa3\xc2\x76\xa9\x90\xcb\xa8\x70\xcf\x2e\xd9\x85\x64\x84\x67\x23\xea\x42\xc9\x48\xcf\x5e\xcf\x85\xbd\x99\xfb\xd2\xf6\x7e\xca\x85\xdd\x81\xd0\xbb\xae\xbf\x90\x8e\x77\x7f\xe0\xd2\xfe\x60\xef\x7a\xf5\x42\x3a\xde\x35\xfd\xa5\x72\xa6\xde\x75\xd8\x85\x74\x98\x87\xce\xa5\xf2\xe1\xde\xf5\xc5\x85\x74\x84\x87\xce\xa5\xf2\x91\x2b\x90\x27\x80\xbe\xcb\xf9\x42\xbe\x10\x58\xd3\x21\xec\x0a\xf9\x20\xb8\xa6\x23\xf8\x3b\x5f\x97\xd2\x41\x2b\x3a\x14\x09\x76\x39\x10\x22\xbc\xa6\xc3\x24\xbb\xdc\x2f\x10\x59\xd1\x61\x10\xd0\x2b\xe4\x4c\xd7\x74\x28\xa4\x57\xc8\x99\xad\xe9\x48\x44\xae\x90\x33\x5f\xd1\xe1\x18\x93\x2b\xe4\x2c\xd6\x74\x38\x21\x57\xc8\x79\x6d\xcf\x02\x52\x7c\xb9\x9c\xf1\xda\x9e\x05\x65\xf8\x72\x39\xe3\xb5\x3d\x0b\xc9\xd1\xe5\x72\xc6\x6b\x7b\x96\x58\xa0\xcb\xe5\x8c\xd7\xf6\x2c\xb9\x44\x97\xcb\x19\xaf\xec\x59\x82\xf7\x09\xe4\xe5\x74\xe8\x9a\x0e\x83\xf0\x0a\x39\xaf\xec\x59\x42\x80\xc0\x15\x72\xe6\x6b\x3a\x04\x83\x2b\xe4\x2c\xd6\x74\x04\x01\x57\xc8\x79\x65\xcf\x12\x21\x22\x2f\x97\x33\x01\x6b\x3a\x8c\xca\xcb\xe5\x4c\x56\xf6\x2c\x31\x58\x5c\x0d\xb8\x90\x0e\x5a\xd3\x21\xd7\x4c\x54\x09\x5e\xd3\x11\xe2\x8a\x79\x0b\x59\xdb\x33\x41\xf2\x8a\x71\x90\xac\xed\x99\x70\x70\xc5\x38\x48\xd6\xf6\x4c\x21\xbc\x62\x1c\x24\x6b\x7b\xa6\x14\x5d\x31\x0e\x92\xb5\x3d\x53\x89\xaf\x18\x07\xc9\xda\x9e\x19\x26\x57\x8c\x83\x74\x6d\xcf\x8c\xd3\x2b\xc6\x41\xba\xb6\x67\x0e\xd9\x6a\x1c\xf4\x23\xb2\xd0\x8f\xdb\x4e\xc7\xaf\x1b\x7f\x0f\xbc\x77\xfe\xbc\x6b\x5e\x07\x22\x09\xaf\x5e\x55\x6f\x2d\xaf\xb6\x16\xc0\xeb\xbf\xc5\xd6\xe5\x11\x7b\xdc\xb7\x96\x1b\xdd\x17\xde\x49\x9c\x6f\x9a\x2f\xae\xba\x5d\xb5\x5f\xfe\x3d\x70\xce\xcd\xac\x2f\xb8\x3c\x79\x48\x6c\xcb\xb5\xfa\xfa\x6f\xf2\xb5\x62\xbb\xf0\xfa\xd0\x01\xb1\xb1\x9f\x27\xb6\xc5\xb6\xc2\xfa\x6f\xf0\xa5\x62\xbb\xf4\x36\xd0\x3f\x49\x6c\xbb\xb7\x8d\xd6\x0f\x0b\x7b\x63\xe7\xdd\xe6\x18\x0d\xc7\xee\x48\xeb\x6b\x3d\x70\x4e\xc6\x19\x5e\x2b\xda\x9f\x7f\xd6\x7d\xe5\xad\xe1\x4f\x69\x6e\x75\x87\x6a\xfd\x00\x7e\xb2\xe6\xae\xc0\x92\x7f\x86\xe6\x7c\xbe\x54\x7e\x58\x73\xcb\x9b\x61\xeb\x07\xf6\xdf\xe2\x73\x3f\xe3\xbc\xfb\xa6\x3e\xb7\xbc\xef\xb6\x7e\x40\xff\x2d\x3e\xf7\xb3\x34\x77\x03\x9f\xdb\xb9\xc5\xb7\x7e\x58\xa0\x25\x9c\x6b\x6e\xe4\x5c\x2b\x4c\x7b\xe8\xf4\xae\xd5\xeb\x3f\xf9\x12\xd7\x17\x04\xf6\x1c\x56\xd5\xf2\xe2\xde\xfa\x81\x7d\x54\xd5\x15\x88\xf5\x4b\x55\xfe\xa9\x6a\x75\x57\x6f\xfd\x80\xfe\x63\xbd\xea\xa7\x01\xe0\xad\x54\xb5\xbc\x9e\xb7\x7e\x10\xff\xb1\x5e\xf5\xdf\xab\xaa\x9d\xd3\xb7\xcd\xc3\x02\x00\x17\x57\x0f\x07\xc3\xd6\x62\xd1\x08\xfe\x84\x5b\x02\xda\x89\xfd\xda\x91\xdd\xfc\x85\xe7\x77\xfe\xff\xe7\x77\xeb\xf7\x1f\xf3\x9b\x1b\xbf\xf7\xdf\xff\xf8\xdf\xef\x81\xdf\x57\xc9\x82\x7e\xff\xf1\xbe\x58\xfe\xdd\x18\xbf\xbe\xaf\x4d\xf7\xa2\xd8\x4e\xd9\x31\xb1\xbb\xba\xdb\xfd\x58\x73\x19\xa6\xe3\x25\xf4\x1f\x34\x93\xd8\x39\xd3\xdc\x3c\xa0\x03\xda\x59\xfc\x76\xb5\x23\x4f\x28\x47\xfe\xd2\xcd\x55\xba\x59\x9c\x13\x6f\x1e\xc4\x01\xdd\x20\xfa\xd1\x73\xc4\x09\xdd\x88\x5f\xba\xb9\x46\x37\xcb\xb3\xf7\xcd\x03\x39\xa0\x1b\x82\x04\xe5\x1e\xbf\xe1\x27\x74\xc3\x7f\xe9\xe6\x2a\xdd\x2c\xee\x33\x6c\x1e\xc0\x01\xdd\xb0\xf7\x1f\xdf\xd5\x8d\x37\x3a\xd3\xab\x1b\xf6\x4b\x37\xd7\xe8\x66\x79\x47\x64\xf3\x70\x60\x36\x80\xf6\xcd\x06\xbc\x13\x29\xaf\x6e\xe8\x2f\xdd\x5c\xa5\x9b\xc5\xbd\x9b\xcd\xc3\x81\xb9\xc0\x62\xb8\xf1\xe8\x86\x9c\xd0\x0d\xf9\xa5\x9b\xab\x74\xb3\xb8\xcb\xb4\x79\x38\x30\x17\xc0\x8b\xdf\xae\x6e\xf0\x09\xdd\xe0\x5f\xba\xb9\x46\x37\xcb\xfb\x61\x9b\x87\x03\x73\x01\xba\x0f\xd3\xd0\x09\xdd\xa0\x5f\xba\xb9\x4a\x37\x8b\x3b\x77\x9b\x87\xbd\x73\x01\xb8\xb3\x3c\x3f\x98\x79\xe4\xc3\xe2\xf3\x97\x6e\xae\xd1\xcd\xf2\x1e\xe3\xe6\x61\xef\x5c\x00\x82\x83\xca\x39\x4b\x37\xe0\x97\x72\x2e\x52\xce\xe2\x72\xe8\xe6\xe1\xc0\x64\x00\x48\x09\x80\x94\x5e\xdd\x9c\xd2\x0e\xf8\xa5\x9f\x2b\xf5\xb3\xb8\x74\xbb\x79\x38\xb4\x39\x00\xa4\x90\xc0\xbb\x71\x73\x42\x3d\xf2\x97\x76\xae\xd3\xce\xf2\x2a\xf3\xe6\xe1\xd0\xf6\x00\xc2\x84\x32\xe1\xd9\xba\x39\xa1\x1d\xf1\x4b\x3b\x57\x6a\x67\x71\x41\x7c\xf3\x70\x68\x83\x80\x00\x41\xa8\x77\xf3\xe6\x84\x76\xf8\x2f\xed\x5c\xa5\x9d\xd5\xb5\xfb\xcd\xc3\xa1\x03\x03\x86\x25\x26\x9e\xb3\x16\x76\x42\x3b\xec\x97\x76\xae\xd4\xce\x22\x98\x61\xf3\x70\xe8\xc0\x40\x32\xc0\x85\xf7\x24\xec\x84\x76\xe8\x2f\xed\x5c\xa7\x9d\x65\x88\xc8\xe6\xe1\xc0\xac\x00\x11\x2c\x01\xf2\x68\x87\x9c\xd0\x0e\xf9\xa5\x9d\x2b\xb5\xb3\x08\xbc\xd9\x3c\x1c\x98\x15\x60\x84\xa8\x00\xcc\xb3\x89\x73\x42\x3b\x78\x71\x80\x8a\xd6\x07\x3b\xcb\xba\xf2\x97\xae\x2e\xd2\xd5\x22\xb8\x69\xf3\x70\x60\x8e\x40\x38\x83\x12\x50\xcf\xa6\xce\x09\x5d\xa1\x5f\x9e\x74\x9d\x76\x96\x21\x63\x9b\x87\x03\x73\x04\x09\xe6\xff\xe7\x59\x9d\x9e\x5a\x9c\xfe\xd2\xce\x95\xda\x59\x04\xe2\x6d\x1e\xf6\xce\x11\xe8\xfe\x7d\x1d\x74\xde\xbe\x0e\xfd\xa5\x9a\x4b\x54\xb3\x8c\x6d\xdc\x3c\x1c\x98\x20\x00\x29\x00\x96\xc8\xbb\xad\x73\x42\x39\xf4\x97\x76\xae\xd3\xce\x22\x62\x74\xf3\x70\x68\xdb\x00\x08\x26\xa9\xe7\xe4\x5a\x9e\x50\x0e\x61\xbf\x94\x73\x95\x72\x16\x61\xb8\x9b\x87\x43\xbb\x06\x08\x4a\x0a\x3d\xae\x23\x4e\x29\xe7\x97\xe7\x5c\xa5\x9c\x65\x6c\xf3\xe6\xe1\xd0\xa6\xc1\xbb\xe2\x84\x67\x42\xc0\x4f\x28\x07\xff\xf2\x9c\xeb\x94\xb3\x08\x18\xdf\x3c\x1c\xda\x33\x60\x10\x49\xe0\x39\xbc\x66\xa7\x94\xf3\xcb\x73\xae\x52\xce\x32\x0a\x7f\xf3\x70\xe8\x20\x41\x22\x0c\xb8\x67\xcc\xa1\x27\x94\x83\x7e\x79\xce\x75\xca\x59\xa4\x36\xd8\x3c\x1c\x98\x10\x20\x2c\x80\xa4\x9e\x31\x87\x9c\x52\xce\x2f\xcf\xb9\x4e\x39\x8b\x7c\x11\x9b\x87\x03\x13\x02\xbc\xb8\xa0\xeb\xd9\xce\x39\xb5\xce\xf9\xe5\x39\x57\x29\x67\x99\x84\x63\xf3\x70\x60\x42\x40\xe8\xfb\xff\x79\xf7\x6f\x4e\x29\xe7\x97\xe7\x5c\xa7\x9c\x45\x66\x93\xcd\xc3\x81\x09\x81\xd8\x77\x9b\x0d\x9e\x50\xce\x2f\xc7\xb9\x4a\x37\xcb\x6c\x31\x9b\x87\xbd\xf3\x01\x7c\xf0\xa6\xe1\x59\x17\x0d\x7f\x6d\xac\xad\x74\x73\x22\xbd\xcd\x9e\xaf\xba\x7f\xe6\x2b\x66\x87\xa9\x9e\xfe\x7e\xf6\xa5\x29\x74\x0e\x7e\xa7\x73\x5f\x6a\x5a\x71\x38\x4f\xe4\x49\x3a\xc8\x93\x8f\xe7\x52\x3a\xd8\x93\xa0\xe6\x52\x3a\x64\x97\xce\xa1\xbc\x4d\x27\xe9\x50\x4f\xe6\x97\x4b\xe9\xb0\x5d\x3a\x87\xf2\x68\x9e\xa4\xc3\x3d\x19\x55\x2e\x26\x24\x3c\x09\x3e\x2e\x96\x90\xf4\xe4\x9b\xb8\xb8\x47\xbb\xc9\x6a\xd1\x15\x5d\x82\xde\x78\xfc\x8b\xcd\x7a\x37\x61\xed\x35\x62\xda\x4d\x59\xcb\xae\xe9\x13\xf1\x50\xba\x5c\xe2\xd4\x13\x61\x7d\x39\x77\xcc\x43\xe9\x72\xee\xb8\x27\x94\xf8\x72\x4a\xc2\x43\xe9\x72\x39\x49\x4f\xcc\xec\xc5\x72\xda\x4d\x60\x7b\x8d\xc4\x77\x53\xd8\x8a\x6b\x28\x21\x4f\xec\xdc\xe5\x94\xb0\x27\xd2\xeb\x72\x4a\xc4\x13\x97\x74\x39\x25\xea\x89\xa2\xb9\x9c\x12\xf3\xc4\x7c\x5c\x4e\x89\x7b\x22\x14\x2e\xa7\x24\x3c\xf7\xe9\x2f\xa7\x24\x3d\xb7\xbf\x2f\xa6\xb4\x9b\xd4\xf6\x1a\x89\xef\xa6\xb5\xbd\x46\xe2\xbb\x89\x6d\xaf\x91\xf8\x6e\x6a\xdb\x6b\x24\xbe\x9b\xdc\xf6\x2a\x89\x53\xcf\x25\xb0\xcb\x29\x31\xcf\x85\xa5\xcb\x29\x71\xcf\xe5\x9a\xcb\x29\x09\xcf\xd5\x8f\xcb\x29\x49\xcf\x35\x85\x8b\x29\xed\x26\xba\xbd\x46\xe2\xbb\xa9\x6e\xaf\x91\xf8\x6e\xb2\xdb\x6b\x24\xbe\x9b\xee\xf6\x1a\x89\xef\x26\xbc\xbd\x4a\xe2\xd4\x73\x68\x71\x39\x25\xe6\xd9\x61\xbf\x9c\x12\xf7\x6c\x07\x5f\x4e\x49\x78\xf6\x2e\x2f\xa7\x24\x3d\x1b\x6d\x97\x2f\x7d\x80\x67\x57\xe8\x72\x4a\xd0\xb3\x87\x71\x38\xfd\xed\x21\x5a\x5f\x99\x00\xf7\x44\x9b\x9f\x4a\x81\xbb\x45\xcb\xf7\x15\xfc\x46\xa0\xdf\x2c\x03\x4b\xa1\x0d\xa2\xb4\x90\xfc\x7d\x94\xa5\x8c\x60\x53\x59\x08\x9a\x92\x68\x88\x0d\xdb\x04\x9c\x18\x18\x61\xad\x05\xd6\x90\x40\xc3\xe6\x00\x2a\x6a\x49\x40\x6c\x68\x7c\x9b\x7f\x72\xee\xaa\x4f\xf7\x2f\x92\xfc\x2c\xaf\xe2\x1d\xf8\x96\x97\x80\xe8\xf0\xc7\x96\x56\xa5\xdb\xfb\x06\xdf\x82\xef\xbf\x78\x5a\x24\xf2\x93\x7c\xc7\x78\x40\x89\x20\xae\x56\xda\x85\xe1\x43\xaf\x5d\x03\xc0\x8e\x0b\x37\x9d\xe4\x3d\x10\x2d\x4c\x53\xd5\xfb\x60\x0d\xbf\x57\x7f\x0a\xae\x7f\xa1\xe0\xee\xcf\xfb\x1c\x1c\x19\x8d\x5a\x81\x45\xb9\x13\x49\x83\x74\xfe\x6e\x5a\x2f\x86\xe5\x5b\x6d\x52\xab\x94\xf0\xac\xf5\xd8\xaa\x8f\x8b\x06\x8c\x4c\x7a\xf9\xb4\x16\xef\xd5\xc3\x95\xe0\xa4\xb3\x4d\xaf\x32\x99\xc6\xe4\x34\x18\x0c\x46\x83\xf5\x76\xde\x7c\x2c\xa1\x38\x6d\xbe\xf4\x43\xbd\x46\x3c\xae\x1b\x32\x25\xba\xc4\x84\xd1\x7e\xb9\x3b\xeb\x74\xa3\xdd\x84\x74\x5f\x9e\x86\x40\x72\x18\x63\xb9\x74\xd5\xd6\xf7\x3d\xd2\x19\xc4\x46\xc9\x3b\x37\x09\x5a\xf0\x25\xdd\x1a\xd1\x20\x48\xbd\x56\xfb\x46\xb3\x9e\xae\x52\x27\xf2\x6d\x25\x83\xb9\x1c\xf2\x9b\x96\xf3\x5e\x4e\xe6\xbf\xbf\x77\xea\x07\xa3\xf3\x3e\x6f\x9e\x93\x9b\x3f\xd3\x55\x12\x03\xba\x99\x63\xc1\x57\x19\x06\x8f\x6e\x3c\xda\x98\x98\x90\x43\x58\x96\xa2\xde\x26\xbd\x74\xa7\x27\xf3\x9c\x76\xc2\x78\x32\xaf\xdf\xcd\xa7\xe9\xe2\xcd\xf0\xde\x96\x0f\xc8\x77\xb7\xbf\x5b\xed\x7f\x42\xa7\x11\x1d\x46\x6e\x25\x5b\x8f\x8f\xb6\x98\x9e\x9e\xdf\xfe\x5a\x26\x8d\xf7\xff\xca\x78\xea\x85\x5a\xf7\x21\x90\x06\xa9\xf8\xeb\xa8\x39\xcd\xc2\x6e\x1d\xa8\xd7\x81\x03\x65\x36\x31\x9b\xa4\xc3\xaf\x39\x3a\x0a\x45\xcd\xf0\x42\xcf\xb8\x31\x1a\xe6\xfa\x4f\x47\x04\xb0\xcb\xef\xbe\x9f\x57\x27\x9f\x6f\xbf\x7e\x7f\x67\x7a\xe8\x9d\xd9\xfe\xdf\x73\xfb\xf8\x9f\x78\x12\x24\x22\x40\x36\xc7\x75\x35\x98\x3e\x39\xa1\x66\xdf\x79\x2c\xda\x29\x9d\xc8\x16\x52\x30\x65\x3e\xa5\x0a\xa9\xc2\xbd\xf1\xd0\x53\xf2\x51\xcb\x82\x6e\xb7\x60\x1f\x4f\xe8\x38\xf5\x50\x30\x8a\x8f\xc3\x70\x36\x39\x52\x2d\x32\xd4\xf9\x6c\xd8\xec\x0e\x10\xa9\x86\xe1\x58\x05\xa7\x7f\xff\x3d\xdf\x70\xed\x3b\x7d\xbd\xfe\xae\xe2\xfb\x7f\x9f\x1e\x25\xb6\x80\x8c\x71\x13\x50\xa9\x21\x84\xc2\x26\x36\x97\xc6\xfc\x33\x60\x9a\x72\x26\x0d\x61\xd8\xd0\x86\xb6\x61\x03\x44\xa5\x25\x81\x85\x34\x51\x54\x09\xa5\x80\xa0\xc8\x24\x90\x09\xbe\x00\x32\x74\x1d\x90\xa1\x53\x40\x46\xd0\x11\x1c\x5b\x16\x6e\x6f\x37\x5e\x0b\x63\x5e\x97\xfb\x60\xe6\xc3\x97\x2c\x4b\xeb\x9c\x6a\xb4\x67\x19\x55\x7e\x94\x2c\xf4\x66\xbb\x52\x03\xd3\x19\x66\x9f\x6a\x6f\xa1\x6a\xaa\x13\x73\x1e\x78\x67\xd2\x99\xfb\x4d\xf6\x2e\x6a\xd5\xb7\xe9\x6d\x60\x2c\x52\x76\xd2\x43\x18\x4b\x26\x33\x56\x0c\xa6\x72\x0f\xa8\x50\x69\x90\x68\x24\x3f\x49\xdf\xe9\x99\x6e\x43\x97\x4b\x1a\xb7\x9e\x1e\xde\xe8\x28\x15\x92\x64\x10\xe9\x18\xc1\xd6\x9b\xe8\xdc\xf5\x1e\x27\x20\x57\x19\x17\x4b\x42\x35\x61\xe6\xad\xf3\x54\x6f\x74\x1d\x17\x98\x30\x68\x26\xbf\x0e\xc6\x1e\x58\x5b\xb7\x70\xbb\xe7\x24\x45\x29\xde\x8d\xdc\xeb\x86\x89\xf9\x63\x6d\x94\x78\x78\x78\xab\x56\xc4\xb4\xd2\x7a\x0a\xa9\xf0\x98\xa6\xe9\xdc\xef\x23\x76\x33\x51\xdd\x2f\xd3\xa3\xf2\xdd\xed\xef\xe5\x30\xe6\x40\x37\x3f\xbd\x16\xc6\xf2\xfb\x64\x72\x09\x8c\x08\xb2\x57\xa6\x1f\xf8\xf5\xfe\x96\x30\x02\x1f\xc2\x4c\x16\x8a\xe1\x48\xa2\x60\x15\x4b\xad\x51\xa7\x52\xcf\x85\x82\x20\xfd\x7a\xdf\x77\x6b\x8e\x34\x72\xf7\xba\xd0\xaf\x16\xdd\x3b\xa3\x98\xb7\xf5\x43\x9e\xc6\xa7\x49\xf7\x3e\xf5\x38\x68\x73\x19\xe9\x1a\x9d\xce\x7d\xdc\xb1\x4a\x19\x1a\xaf\x26\x53\x2a\x9d\x4d\x64\xf3\x89\xb0\x4f\x30\x62\x73\xd3\x10\x18\x48\x0c\x05\x66\xc2\x66\x92\x98\x42\x60\x60\xd8\x5c\x48\x41\xa0\xe6\x1a\x99\x84\x59\xa6\xc6\x40\x33\x20\x99\xb4\x84\x30\x2c\x60\x6a\x2a\x84\x69\x68\xf9\x6d\xfd\x09\xde\x2b\x60\x04\x9f\x82\x11\x0a\x04\x3f\xfc\xb1\xce\x55\xe9\xf6\x39\xc1\xb5\x40\x12\x39\x65\x68\x46\xaf\xd1\x83\x15\x64\x35\x68\x05\xf6\x5e\xa0\xee\x66\xcc\x38\x1c\xcd\xda\xc5\xfa\xc3\x93\x9c\x46\x1b\x4e\x31\xa4\x74\x55\x94\x5b\x31\x27\x78\x1c\x48\x82\xf9\xa0\x0a\x37\xfa\xcd\x60\x62\x52\x9d\xb4\x5e\x5f\xcd\x56\x2a\x81\x3b\x03\xf9\xea\x94\xf2\xa3\x3e\x2a\xc6\xda\x46\xf8\x25\x5d\x2e\x3f\x86\x1e\xde\xcc\xc2\x48\x34\xc7\xc9\x52\x54\xea\x91\x3d\xeb\x46\x43\xc3\x2a\x69\xb5\x52\x9d\x61\xe3\x35\xaf\x73\xe1\x97\xfb\x64\xdc\x88\x6b\x54\xd8\x72\x82\xa0\xcf\x40\x12\xa7\x4e\x6a\x54\xb1\xfa\xf5\x5c\xc5\x7a\x7a\x19\xd5\x06\xa5\x44\x68\x64\x98\x75\xd0\x0b\xf7\x6c\x33\x94\x7c\x88\x36\xaa\xfd\xee\x24\x96\x6c\xaa\xe0\x3f\x00\x48\xba\xd5\x74\x4a\xfd\x63\x80\x84\x97\x37\xef\x67\x8e\xf0\xeb\xfd\x2d\x81\x24\x1a\x8c\x37\x9c\x14\xc9\x87\x38\x1c\x12\xd7\xed\x27\x5b\x05\x49\x1f\x6c\xf3\x25\x0a\xd2\x4f\xb2\xd3\xac\xa3\xe9\x4b\x0b\xc6\x22\xd3\xa2\x8b\xa3\x86\x9d\x34\x5a\xd1\xd9\x63\x6d\x58\x13\x4f\x85\xa0\x82\xe3\xa4\xd3\x7a\x7a\x20\x99\x4e\xa2\xdd\x78\x99\xbc\x86\x7a\xb3\xfe\xa8\x93\x7f\x27\xee\x03\x90\x08\x08\xa1\x44\x26\x16\x8c\x60\xcb\xe6\xd8\x04\x90\x2a\xaa\xa0\xc5\xb9\x21\x00\xb2\x6c\x1b\x50\x8b\xd8\x14\xd8\x26\xb3\x20\x10\x90\x29\xc5\xa9\x09\x14\x83\x40\xda\x52\x2d\x61\xe0\x9a\xd4\xe1\x5b\xdf\x3e\x3e\x89\x28\x0c\x09\x7c\xf8\x4b\xcb\xab\xd2\x9d\x13\xc3\x25\xa4\x7c\xce\xfc\x17\x90\x92\xdc\x67\x62\x5b\xcf\x73\x64\x08\x55\x2a\xd9\xe5\x1c\x35\x0c\xc7\x21\x2b\xe1\x94\xc6\x8d\xcc\x24\x3f\x8a\xf0\x50\x33\x99\xc6\x59\x2d\xad\xca\xa3\x1d\x4f\xde\xa5\x5a\x34\x35\x29\xe7\xee\x9e\x82\x23\x8e\xef\xd7\xbf\x0d\xbd\xd8\xba\xfd\xfc\x63\xb7\xc1\xe3\xe9\x66\xaa\x01\x66\xbc\x3d\x08\x4e\x61\x74\xca\x12\xa8\x16\x63\xaf\x85\x64\xcf\x4e\x25\xa7\x31\x7b\x06\x64\x76\xdc\xa2\xc6\x28\x97\x0a\xc6\xf4\x34\x16\xcc\xda\x39\x15\x0c\x89\x58\xfe\xa9\x4b\x07\x38\x48\x1b\xb8\xc3\x22\x89\x48\xab\x61\x97\xb3\xe5\x08\x64\x0d\xf3\xef\x33\xe0\x25\xbe\x6d\xbf\xc7\xe1\x65\x6b\xa9\xf1\x49\xf9\x06\x2b\x95\x52\x61\x49\xe5\x93\x4b\xd4\xc5\x2f\xe1\x91\x9f\xd7\xfd\xf2\xc1\x5d\x57\xbd\x00\xfe\x2a\x6f\x8d\x0d\xbf\x8d\xe0\xbe\xa5\xc8\xb9\xcb\xb1\x6d\xf8\x19\xab\xb0\x51\xa9\x3d\xa1\x48\xb7\x56\x55\xc3\x0a\x2b\xcf\xa6\x46\x15\xc7\xb3\xa9\xc6\xa0\x8f\x83\xc5\x70\x33\x19\x1b\x50\x63\x56\x4c\x56\xe7\xef\x63\x52\x80\x8d\xe0\x86\xde\x81\xdf\xf1\xe5\x58\xe4\xba\xf6\xb5\x79\x44\x06\x47\xda\x5f\xc2\xdf\x5d\x35\xe2\xd6\xc7\xd1\x5e\xa4\x94\x18\xe7\x3a\x91\x48\xb9\x14\x71\xec\x27\xb3\x36\x4c\x45\x5b\x4f\xa2\xd3\x0e\x56\xee\x13\x25\x80\x58\xba\x3b\x06\xa4\x13\xac\xf0\x60\x39\x08\x05\x75\x82\x89\x69\x25\xd4\xab\xf5\xfa\x66\xa4\x17\xd1\x25\x27\x63\xe6\x1e\x42\x32\x0f\xf3\x8f\xb5\x97\x90\x3f\xf3\x28\xc3\x22\x82\x59\x86\x65\x01\x64\x11\x06\x04\xe4\x8c\x43\xf3\x7d\xd5\xc5\xb5\xb4\x98\x16\x8c\x9a\x0a\x49\xd3\x20\x50\x33\x64\x71\xa5\x6c\x0e\x14\xb2\xb5\xa6\x06\x66\x96\x5e\xc0\x1f\xba\xe6\x1e\xce\xa7\xe0\x8f\x61\x81\x0f\xc3\xdf\xb2\x74\xe7\x9e\xc3\xc2\x14\x3f\xb9\x8c\xf8\x39\xf0\x17\x5f\xb7\x9f\x0f\xc9\x4e\xef\xa1\x8a\x5e\xf0\x84\xe7\xed\x57\xf1\x98\xd1\x9d\xa8\x01\x4b\xa5\x24\x6d\xcd\x5e\x3a\x49\x10\x72\x1a\xb5\x61\x6e\xc4\x1b\x39\xc8\x50\xde\xe8\x34\x91\x55\x2c\x95\x6d\x1d\x71\x26\x26\x78\x0c\x2a\xbb\x19\xa9\xcd\x46\xcd\x4a\xb0\xeb\xa6\xc7\xed\x6e\xa8\xf7\xda\x0e\x05\xeb\x5f\x07\x7f\x9f\x94\xef\xcd\xe1\xef\x82\x65\xe4\xd7\xc0\x5f\x78\xec\x60\x67\x44\xe8\x4b\xf8\x31\x3a\x1b\xe4\xef\xb1\x93\xc8\xde\xbd\x41\x5e\x78\x6d\xb9\xb0\x6b\x67\x62\xf5\x5e\xbe\xda\x18\x8e\x8b\x77\xa5\x79\x7d\xbf\xe1\xef\x92\xf6\xaf\x84\xbf\x04\x2a\xd6\x07\x86\x1a\xea\xfb\x51\xe8\x3e\x3d\x15\x33\x96\x2f\x4c\x2a\xd9\x4c\xbb\x97\x8e\xbf\xe4\xdb\xf9\x78\x2b\xa4\x5d\x86\xc7\x41\x5e\x1b\x3e\x85\xc6\xc5\xc4\x13\x4c\x65\x0b\x92\xe4\x5a\xf2\x2d\x2f\x42\x83\xbb\x68\xd6\x8e\xa3\x58\x39\x5c\x9d\x8e\x59\xae\x1c\x37\x1e\x32\xd1\x50\xc3\x17\xf8\xe3\x96\x2d\x28\x37\x11\x36\xb9\x65\x6b\x43\x72\x62\x71\x13\x4b\xca\x38\xa7\x4c\x50\x25\xb4\x65\x2b\x41\x24\x33\x0c\x2e\xa0\x6d\x61\xc2\x4c\xa1\x11\x40\xd4\x56\x96\x34\xec\x05\xfc\x61\x9f\x66\x7f\xe4\x24\xfc\x49\x76\xf8\xeb\xfa\xeb\xd2\x9d\xdb\x59\xd7\xce\xfe\x8e\xec\x4c\x2d\xe0\x2f\xdf\x2d\x2c\xcd\xcb\xc7\xd9\x5f\x28\x71\x9f\x49\xb3\xbb\xc2\x5b\xf5\x65\x1c\x7b\x6c\x8a\x46\x3a\x86\x0a\xe3\xa7\xb7\xfa\xa8\xdd\x1e\x3c\xea\xc4\xe4\xde\xb1\x64\x86\x93\x59\xb7\x0c\x64\x4d\x11\x45\x35\xcc\x36\x33\xa3\x4c\xb1\x90\x74\xd2\xc9\x51\x03\x46\x55\xa4\x1a\x95\x6f\x93\x51\xc2\xee\x56\xaa\xc9\xa0\x2a\x4e\xf3\xff\x9c\xd9\x5f\x39\x55\xce\x2f\x17\x74\xff\x39\xb3\xbf\x0f\x3b\x48\xe7\x2e\x3e\xaf\x9c\x7d\x99\xe4\x48\x1f\x82\x7b\xf9\x9f\xff\x56\x8b\x4f\x5b\x4c\x27\x43\x9a\xc8\xaa\x17\x52\xbe\x4b\xbc\x06\xdd\xda\x53\x9c\xf6\xb3\x2d\x94\xcb\x75\x24\xd1\xf7\x77\x4d\x0c\xde\x26\xed\x78\xa5\x54\x82\xd6\xb0\x39\xec\xf2\x32\x8a\xbe\x82\x59\x2a\xda\x6a\xb8\x2d\x14\x29\x17\x9c\x6c\xbd\x84\x73\x77\xc0\xba\xab\x54\xea\x8d\xd0\x20\x1d\xf2\x67\xf1\x89\x09\x67\x86\xc9\x88\xa4\x0c\x13\x21\x4c\x1b\x20\x6a\x09\xc4\x25\x50\x4a\x9a\x84\x30\x22\xa1\x10\x08\x23\x03\x52\x60\x21\xc1\x88\x05\xb1\xad\xa5\xad\x4c\x4d\x09\x60\x0b\xf8\x21\x3e\xcd\xbe\x4e\xc2\x0f\x47\x98\xb1\x83\xf0\xb3\x2a\xdd\xb9\xd2\x79\xed\xec\xeb\x86\xf0\xb3\x35\xfb\x8a\x3e\x84\x26\x77\xe2\x2d\x0d\xf5\x60\x3a\x0b\xdf\xb9\xa9\x66\xb4\xfe\xd8\x33\xda\x69\x59\x2b\x9a\xb5\x91\x39\x72\x32\x49\x4b\x8f\xa8\xd5\x6c\x74\x78\x3d\x55\x49\xbd\x05\xfb\x85\x62\xa3\x5e\x9a\xd8\xaf\x4e\x32\xf5\x90\xb2\xf2\xbd\x1a\x63\xe3\x26\x72\xee\x86\x71\xf9\xc0\x52\xc9\x5e\xe3\x1f\x34\xfb\xba\x35\xfc\xf8\x32\xfb\xf2\x03\x7e\x2e\x99\xfd\x5c\x09\x3f\x79\x27\x7e\xcf\xdf\x32\x93\x0a\xeb\x47\xa2\x69\x36\xed\x45\x0b\x8d\xbb\xa7\x71\x66\x02\xad\xd4\x4c\xc3\x57\xd4\x98\x36\x21\xc3\x5d\x14\x0f\x97\x46\x8d\x6e\xb9\x9f\x09\x5b\xb1\x87\x50\x33\x27\xef\x1f\x1a\x8d\x8e\xd3\x85\xe1\x27\x7b\xf8\xc2\x12\xaa\xcd\x5c\x03\x0c\x9d\x4e\x4b\xf9\x34\xfb\xd1\x4a\x12\x4a\x30\x53\xd8\x60\x14\x68\x5b\x09\x01\x18\xd6\x1c\x73\x0a\x85\x69\x43\x89\x84\x25\x15\xc1\x16\x54\x86\xc2\xda\x64\x82\x70\x40\x6c\xc8\x80\x81\x39\xc6\xef\x2d\x93\xe5\xde\xd7\xa5\x1f\xb4\xf9\xcc\xe2\x4f\x00\xce\x0e\x2f\xfe\x56\xa5\x3b\xb7\xb7\x17\xa6\xf0\xc9\xa3\xf0\xf3\x16\x7f\x8b\x89\xf0\x27\xcf\xe5\x2e\x5b\x2c\xce\x5f\x1d\x77\x72\x78\xdb\xce\x12\xeb\xfe\xe6\x13\xf7\x4f\x9d\xb7\xc2\xbd\x0e\x83\x18\x9f\x3d\xca\xb7\xe0\x40\x27\x26\x99\x04\xef\xbf\xe8\xd1\x9b\x2a\x5a\xf5\xa6\xa8\x26\x5e\x87\xd3\xe9\xc4\x88\xf6\x67\x24\x62\xb0\xc6\x1b\x68\x0c\xfb\x85\x54\x28\x55\x64\x2c\xf7\x64\xc4\x7b\xe1\x0e\x7f\x7d\x4b\xf4\x44\xa4\x93\xe2\x46\x8a\xe4\x83\xe5\x73\xe0\x6a\x5b\x3e\x87\xe1\x6a\xde\xff\x7f\xfa\x62\x31\xff\x33\xfa\x97\x1e\x44\x46\xe0\x58\xff\x4e\x2c\x26\x3f\x69\x43\xa9\x72\xf8\x6e\x49\xfc\xf2\xc5\x64\xf4\xba\xf6\x73\xd7\x2d\x26\x6d\xd9\x2b\x65\x13\x92\xa4\xf3\xb5\x49\xf4\x1e\x67\xc2\x5d\xa2\xc5\xd4\x1e\xeb\x01\xc3\xd9\x41\x0a\xb6\x12\xb3\xba\xfd\x30\x89\x84\xa5\x5b\xb4\x13\x8d\xec\xe4\x25\xf2\x58\x0c\x8f\xad\x68\x27\xda\x4d\x0f\x1d\xda\x75\x55\xfd\xa1\x34\x49\x67\xb4\x31\xcd\xe5\xfb\x23\xb7\xdf\x0c\x86\xf2\xbe\xc0\x29\x81\x4c\x31\x6c\x62\x1b\x12\x09\x29\xe6\x4c\x0a\xd3\x32\x98\x2d\x05\x04\x92\x6b\x4b\x68\x42\x4c\x85\xb8\x85\x2c\x09\x00\x33\x2c\x60\x28\x26\x04\x46\xda\xb0\xa5\x45\xe9\x02\x4e\x91\x4f\x70\x7a\x72\x36\x27\x28\xa5\x87\x17\x93\xab\xd2\x9d\xc0\x93\x6b\xe1\xf4\xc8\x6c\x6e\x61\x0a\x9f\x3c\x9d\xfc\x1a\x38\x8d\xc5\xe2\xe9\x78\x2c\x56\x33\xa2\x91\x82\xd5\x41\x3a\xf6\x9a\x0f\x96\xb2\x83\xc4\xf8\x25\x77\xef\xc6\x86\x83\x17\x77\xd6\xcb\x66\xa7\x71\x75\x97\x49\xb7\x8c\x6c\x3e\x95\x8e\xd4\xaa\xca\x0e\x93\xaa\x78\xc8\x3c\xe4\xef\x9b\x51\x90\x01\xa5\xf4\xec\x49\x8f\xef\x73\x62\x54\xef\x87\xc6\xd3\x69\xf0\xeb\xe0\xf4\x1f\x79\xf4\x90\xff\x19\xfd\x3b\x1f\x4e\x37\xb3\xc3\x2b\xe1\x2c\x73\xdd\xec\xb0\x5c\xae\xbb\xf5\x72\xc5\x72\xf3\xd9\x18\x2a\x3d\x91\x5a\x2a\x18\xca\xa0\x8e\x66\x0e\xbf\x9b\x56\xc7\xbd\x97\xb7\x78\x1d\xe0\xe0\xd3\x90\x4c\xc7\x29\x17\x06\x3b\x6e\xd6\x7a\x1a\x88\x74\xd3\x98\x3a\xd3\x41\xe4\x2e\x5a\xca\xbf\x15\x32\x93\x58\x97\x71\xc1\x5f\x61\xcb\x8c\xf3\x88\x4f\x27\xa3\x26\x92\x92\x08\x0b\x9a\x4a\x70\x43\x59\x48\x63\x24\xa5\x09\x0d\x00\x85\x29\x25\x33\x11\xb2\x6d\x6a\x51\x66\x53\x4e\xb1\x61\x62\x61\x03\xdb\x12\xc2\x24\x16\x32\xa9\x25\xc9\x02\xce\xb0\x4f\x70\x46\x4f\xc1\x99\x04\x80\xa0\x83\x70\xb6\x2a\xdd\x89\x59\xbb\x16\xce\x8e\x5c\xb6\xb8\x6c\x76\x78\xd1\x62\xf6\x14\x9c\xa5\xfb\x20\xab\xc3\xae\xea\xd1\xfa\xb0\x37\x72\x33\xa9\x7c\x25\x97\x7e\xcd\x95\x1e\x5f\x22\x06\x2f\x66\x4a\xe1\xa7\xb8\x63\xf7\x68\xb1\x59\x66\xb6\xd9\xc5\x8f\x8f\x2d\x9d\xec\xe7\xb3\xa3\x0e\x8c\xf5\x0a\x15\x5d\x9e\x59\xf5\x1a\x1c\xba\x55\xf4\x90\x80\x89\xbc\x91\x62\x84\x24\xa6\xe0\x9f\x33\x3b\xbc\xc9\x62\xf6\x8a\xd9\xe1\xe5\xfd\xfb\x09\x70\x96\x5e\x5c\xf4\xd8\xcc\x36\x3f\xfe\x8e\xc1\xd9\xd8\xce\x43\xf2\x30\x7b\x31\xba\xad\xb1\x42\xd3\x69\x37\x54\x26\x93\x24\xcd\xdc\x39\xd9\xc9\x28\x39\xcb\xa4\x3a\xaa\x79\x67\x74\x1f\x62\xa5\x81\x7c\xad\x99\xe2\x2e\x45\x5a\x56\x10\xa1\x52\xb9\xfa\x14\xab\xd0\x52\x0c\x36\xed\xea\x78\x66\xd4\x1d\xbb\x6c\x85\xdc\xfe\xb0\xdd\xb0\x23\xfe\xcc\xce\x28\x25\x5a\x21\x24\x21\xd6\x86\x0d\xa0\x6d\x12\x03\x2b\x62\x31\x60\x50\xa9\x34\x12\x36\xe6\xd2\x10\x00\x58\xd4\x60\x96\x22\x40\x31\x29\xb8\xa2\x58\x1b\x96\xe0\x36\xe0\x0b\x38\x23\x3e\xc1\x19\x3b\x09\x67\x84\x1e\x39\xe9\x5c\x95\xee\x84\xbb\x5e\x0b\x67\xde\xd9\xf8\xd5\xb3\xb3\x2f\x81\xb3\x18\x26\xbd\xfa\x6b\x21\x6d\x54\x4a\x04\xe5\x47\xb1\x71\x9d\x96\xb3\xc0\x1d\xca\xa8\x39\x8e\xe2\xee\x28\x78\x2f\x5f\x83\xb3\x56\x36\x37\x19\x77\x8c\x4a\x29\xa7\xde\x04\x1b\x87\x6b\x83\xe8\x53\xb7\x06\x63\xfd\xe8\xac\x1e\x79\x9a\xe6\x9e\x52\xd5\x4a\xcd\x76\x0d\xcb\x99\x18\x95\xf2\xf4\xac\x8b\x21\xb7\x99\x9d\xdd\x1a\xce\x6e\xd7\xbf\x9f\x00\x67\xa9\x45\x4f\x1b\xfb\x04\xf1\x41\xbf\xdb\xea\x5d\xc0\x59\xcd\x6e\x3d\xb5\x53\xd1\xd1\xa8\xf2\xd8\x7e\x0a\x83\x2a\x6d\x77\xf3\xb8\xf8\x3a\x01\x85\x57\x52\xd2\x55\x10\xb9\xc7\xc9\x48\x3c\x09\xd8\x1d\x2b\x8c\x2a\x19\x3a\x7c\x7c\x7b\x21\x29\xdd\x29\xf4\x2a\x76\xb9\x6a\x96\x62\x8d\x6c\x3f\x48\x3b\xdd\xa7\x8a\x75\x37\x1b\xa1\x96\x1c\x55\x4a\x3e\x5d\xdc\x30\x89\x30\x88\x90\x02\x59\xa6\x05\x6d\xc0\xa5\x25\x81\xd6\x18\x09\x69\x99\xc8\x60\x88\x49\xc3\xd4\x40\x08\xc3\xe2\x50\x60\xcb\x32\x94\xd0\xd8\x32\x15\xa2\x06\xd4\x82\x18\xdf\xbe\x07\xe8\x6a\xef\xee\xfa\xa3\x83\x53\xb3\x33\x09\xa4\xa4\x07\xef\xad\xad\x4b\x77\x62\xee\xaf\x3d\x3a\x38\x32\x3b\xdb\x1a\xd9\x2e\x5f\x6c\xd4\x8a\x09\xc3\x59\xbc\x39\xb7\xd2\x87\xbd\xe6\xa5\x56\xb3\xbb\x50\x30\x97\x16\x5c\xca\x86\xd5\x25\x71\xd9\x09\xdf\x9b\xb9\x12\x1b\xe4\xc7\xe8\xcd\x8e\xd0\x78\xb3\x19\x9d\x05\x1f\x46\x0f\x3d\x83\xbb\xc2\x79\xeb\xb8\xaf\x2f\xc9\x7a\x12\x41\xfd\x12\x4e\x9b\xdd\xf1\x34\xdd\x35\xd0\x34\xd4\xea\xd1\xdc\x74\x08\x5e\xd1\xdb\xdb\xac\x9e\xe0\x93\x97\xdc\xbb\x35\x9d\x01\x5d\x5e\x59\x04\x2f\x91\xed\x16\xaf\xd7\xca\x2e\x4b\xe2\xf7\xf1\xca\x11\xd9\x1d\x3f\xfa\x28\x6f\x9e\xff\xc1\x3c\x6c\x74\x50\xbe\x58\xe6\x11\xbb\x99\x28\x76\xf3\x6b\x7e\x93\x9b\xe1\x65\xfb\x77\xee\x45\x14\xbf\x8f\x42\x3e\x5e\x8d\x3e\xbe\x77\x18\xbb\xae\x7d\xc3\x3b\x3b\x3d\xb3\xfd\x25\x9c\x7f\x95\x03\xfa\xb1\x77\x88\xb9\x22\x02\x02\x61\x59\x90\x60\xc4\xb1\x65\xda\xd0\x44\x02\x49\x66\x31\x40\x84\x05\x24\xa4\x26\x03\x1c\x31\x0a\xb4\x41\x6d\x2e\x89\x21\x24\x65\x40\x11\x60\x02\x73\x01\xe7\x7e\xdd\xc3\x3b\x35\x3b\x95\x10\x11\x7a\x30\xb0\x61\x5d\xba\x93\xf8\xe4\x5a\x38\x3f\x32\x3b\xf5\x05\xce\xcb\x32\xee\x46\xb7\x4c\x35\xb5\xd7\x8a\xb7\xe0\x7c\x5c\xee\x3f\x75\x33\xb3\xb6\x18\xa9\x97\x8c\x73\xff\x58\xb7\x93\x64\x18\xea\x12\x18\x1e\x0c\xdc\xfb\x5a\x22\xde\xcd\x3a\x23\x7a\x57\xaa\x96\x9e\xa2\x32\x08\x58\x6b\x10\x2d\xb0\x3c\xaf\xbd\x18\xb3\x66\xf6\xad\x17\x2c\x88\xac\xca\x1b\x45\x1c\x71\x41\x21\x3f\x21\x64\x88\xe3\xe9\x70\xe3\xd6\x70\x9e\xf4\x43\x76\x59\xd4\xef\x77\x2b\x47\x64\xf7\xb5\x70\x7e\x1b\x1e\x36\x3a\xf0\x1b\xce\x3f\x60\xd6\xb9\x27\xdb\x57\xc2\xe9\x93\x77\x76\xfc\x39\x38\xfd\x2a\x07\xf0\x01\x4e\xa5\x2d\xb5\xe2\x90\x18\x50\x61\xc9\x18\x31\xa0\x66\x96\x0d\x6c\x65\x5b\x50\x29\xc8\xb5\xa5\x38\x34\x0c\x40\x39\xa4\xb6\x86\x98\x43\x44\x98\x8d\x11\x10\x06\x56\xd0\x80\x0b\x38\xc5\x3e\xc1\x29\x3f\x09\xa7\x84\x1f\xdc\xba\x5c\x15\xee\xe4\x7e\xba\x16\x4c\x63\x87\x0d\xce\x17\x30\x2d\x3a\x31\xb1\x3c\x61\x8c\x06\x0f\xee\x8c\x6f\x81\xa9\x4c\xe7\xcb\xcd\xd0\x63\x3e\xf6\x94\x73\x06\xc5\xe6\xfd\x64\x5c\xce\x3e\x9a\xe5\x1e\x88\xa4\x93\x72\x1a\x21\x6a\x4a\x88\x0c\x9b\x63\x16\x8c\x64\x74\x5b\x8d\xc4\x08\x65\x5e\xc7\x6f\xd5\xc9\x4c\x14\xa6\xf9\xcc\xa3\x25\xdf\xac\x5a\x77\x1a\x8e\x52\x4b\x98\x25\x3c\x1e\x4c\xc7\x8f\xc1\x9b\x83\xa9\x2f\xb2\xcb\xc2\x64\x3e\x5a\x39\x22\xbb\xaf\x05\xd3\xdb\xf0\xb0\xd1\x81\xdf\x60\x5a\xf6\xb6\x72\x23\x30\xad\x2f\x04\xd7\xf0\xe8\xe0\x03\xbf\xde\xdf\x12\x4c\xbf\xca\x01\xfc\x88\xb5\x95\x8c\x29\x03\x43\x00\x31\xb7\x94\x16\xcc\xe4\x5a\x73\xad\x81\x10\x14\x60\x2c\x29\xe6\x26\x17\xb6\xa0\x44\x2b\xa5\xb4\xe2\xc2\xe2\xb6\x25\x30\x81\x98\x58\x8a\xcb\x05\x98\xfa\x75\x4b\x51\x9c\x04\x53\x8e\x8f\x6c\x35\xac\x4a\x77\x12\xe0\x5d\x0b\xa7\xf1\xc3\x26\xe7\x8b\x3b\xe5\x4b\xb1\xcc\x72\x8b\x6f\x6e\xaa\x89\x7d\x86\xb4\x0d\xa7\xea\xa9\x56\xba\x37\x3a\x91\x37\x1c\x7b\x29\xa5\x9a\xb5\x87\x91\x59\xd4\x13\xda\x78\x1b\x46\xc1\x34\x8d\xe2\xc5\xbe\xfb\x66\xf3\x11\x79\x09\x95\xcc\x7e\x15\x3f\x92\xa6\x4e\xe8\x60\x2c\xd9\x29\xb6\x47\x8d\x37\xd0\xe3\xc9\x46\xbc\x04\x1b\x4e\xa5\x6b\x8c\xac\x20\x7d\x1c\x3d\x65\xb3\xe1\x9b\x6f\x35\xe4\xfd\x90\x5d\xf6\xcd\x21\xed\xca\x11\xd9\x7d\x2d\x9c\xde\x86\x87\x4d\x53\x7e\xc3\x69\xdd\xdb\xca\x8d\xe0\xb4\xba\xd8\x5a\x6b\xac\xfb\xf0\x39\x38\xfd\x2a\x07\xf0\xe3\xd2\x37\x03\x96\x90\x40\x08\xa0\xb5\x61\x21\x44\x2c\x4e\x01\x33\xa4\x10\x10\x53\x64\x1b\x26\x33\x98\x01\x25\x82\xb6\x20\x4a\x50\x2d\x05\xe0\x36\xe0\x9c\x1a\x94\x32\x60\x2c\x97\xfa\xd4\x27\x38\x95\xa7\xe0\x14\x01\x48\x0e\xe6\x42\x59\x97\xee\x64\x01\xbd\x16\x4e\xbd\xe6\xed\x37\x9c\x6e\x25\x35\x98\x9b\xaa\x17\xbe\x17\xbf\x2d\x38\x1d\xc0\x66\xc6\xc9\x88\x61\xb6\x65\xe1\x41\x3f\x54\x9c\xdc\xbb\x2f\x8d\xc2\x34\x99\x7c\x4d\x37\x3a\x3a\x64\x94\x33\x09\x59\xac\x97\xe2\x8d\x5a\xad\xfa\x54\x0c\xc1\x3c\x2f\x4c\x28\xc9\x37\x6a\x46\x8a\xd6\xb2\xb3\xc7\x97\xa0\xec\x34\xde\xee\xd3\xf5\x41\xca\xc4\x15\x99\x76\x3b\x77\xbd\x50\xf0\xd6\x70\x5a\xf6\x45\x76\xaf\xa9\x66\xb8\x72\x44\x76\x5f\x0b\xa7\xb7\xe1\x61\xa3\x03\xbf\xe1\xd4\xf4\xb6\x72\x23\x38\xad\x2c\xb6\xb6\x1a\xeb\x3e\x7c\x0e\x4e\xbf\xca\x01\xfc\x88\x60\x36\xa1\x29\x85\x30\x4d\x24\x2d\xc9\x0c\x85\xb5\x05\x30\xd2\x44\xd8\x82\x21\xd3\x52\xd0\x94\xda\x62\x90\x1a\x80\x2b\x53\x58\x06\x85\xda\xc6\x52\x9a\x16\xb6\x15\x92\x64\xb9\xd4\x67\xbe\xc0\x29\x9b\x23\xe9\x71\x38\x45\x1c\x1f\x5e\xeb\xaf\x4a\x77\x52\x21\x5f\x0b\xa7\xde\xc5\x97\xdf\x70\xba\x38\xd7\x0d\xee\x33\xd5\xad\xdf\x16\x9c\x5a\x2c\x1d\x74\x09\xb5\x8c\x50\x27\x18\xa9\x66\xcb\x54\x8f\xfa\x8e\xa3\x5e\xa7\x89\x97\x61\x08\xca\x92\x4d\x40\xf3\x95\xdd\xf7\x5a\xe5\x60\x3f\x1b\x9c\x31\x47\xdc\x8f\xb5\x53\x50\xd3\xfe\x1d\x2e\xa4\x5e\x0b\x93\x7c\x15\x57\x1f\x06\x4f\x8f\xc6\x80\xbc\x85\x88\x7c\x33\xeb\x9d\xc8\xcd\x67\xa7\xf5\x9b\xc8\xee\x6b\xe1\xf4\x36\x3c\x6c\x74\xe0\x37\x9c\x7e\xb8\xc5\x7e\x23\x38\x2d\x2d\x1a\x6e\xac\xff\xeb\x73\x70\xfa\x55\x0e\xe0\x47\x7e\x3e\x68\x60\x6c\x99\xda\x62\x86\x80\x96\xa5\x81\x16\xcc\x60\xd0\x50\x44\x19\x26\x12\xc0\x60\x26\xa6\x26\xd3\xc4\x50\x02\x10\x6a\x50\x20\x90\xcd\x89\x92\x0a\x19\x0c\x68\x6b\x01\xa7\xdc\x27\x38\x3d\x95\x71\x54\x22\x7a\x64\x6e\x4a\x37\x33\xd3\x65\x2e\xf8\x6b\xa1\xd4\x7b\x28\xe0\x37\x94\x6e\x05\x68\x78\xaf\xbf\x6c\xfd\xb6\xa0\x34\x96\x78\xa9\x96\x1f\x48\x7a\xdc\x26\x96\x70\xcb\xad\x3c\x14\xb9\x10\xb3\x5b\x1d\xc3\x7d\xcc\xd7\x9e\x82\xb9\xa4\xfd\x84\x91\xdb\x70\x19\xba\xcb\x43\x1e\xcf\xf4\xa7\xf5\x17\x77\x16\x73\xe0\xa8\x45\x64\x81\x9b\x99\xb4\xb2\x22\x6e\xbf\x99\x68\x77\xfa\x9d\x5c\x3e\xf3\x66\xde\x45\x6e\xbe\x6f\x6a\xde\x44\x76\x5f\x0b\xa5\xb7\xe1\x61\xa3\x03\xbf\xa1\xb4\xe3\x6d\xe5\x46\x50\x5a\x58\x6c\x6c\x35\xd6\x7d\xf8\x1c\x94\x7e\x95\x03\xf8\x00\xa5\x90\x61\xa5\x0c\xc6\x4d\xaa\x10\x51\x54\x6a\x4b\x51\x4d\x0c\xa2\xa9\x8d\x91\x44\xc4\x66\x00\x9b\xb6\x4d\xd1\xfb\x3f\xdb\x06\xa2\x5a\x69\x29\x38\xc5\xc2\x44\x18\xce\xa3\xbb\xe9\xf7\x80\xf0\x09\x4a\x4f\xe5\x3c\x95\x88\x53\x70\x30\xba\x7b\x5d\xba\xf3\x41\x8c\x6b\xe1\xd4\x7b\x65\xc6\x6f\x38\x8d\xdf\x87\x73\xee\xe2\x4d\x6f\x24\xf0\xd6\x6f\x0b\x4e\x7b\x42\x65\x53\x50\xe4\xad\x1c\x12\xdd\xe6\xfd\xcb\x7d\x29\x55\xa8\xc9\x64\xa4\x5b\x7c\x69\xaa\xec\xdb\xac\xd1\x55\xf7\xd9\xc6\xab\x35\x88\xd7\x66\x56\x23\x58\xaf\x07\xa5\x51\x4c\x5b\x66\xa7\xdf\xc9\x8b\xb7\xd8\xd4\x2e\x5a\xf5\x5e\xaf\xfd\xf0\xd2\x8f\xcc\xea\x71\x58\x06\x60\x98\xbe\xfd\x15\xad\xc6\x4d\x64\xf7\xb5\x70\x7a\x1b\x1e\x36\x3a\xf0\x1b\x4e\x1d\x6f\x2b\x37\x82\xd3\x7c\x7d\x23\x3e\x27\xf8\x69\x38\xfd\x2a\x07\xf0\x63\x66\x8a\xb8\x6d\x19\x16\xa5\xb6\x56\x36\x82\x9a\x69\xc9\x94\x65\x69\xc3\x00\x36\xb5\x4d\x8e\x29\x01\xb6\x2d\x29\xa0\x16\xb5\x80\x65\x72\x66\x4a\x6d\x32\x69\x13\x0b\xd9\x9c\xd9\x0b\x38\x95\x3e\xc1\xe9\xa9\x68\x75\x89\x24\x87\x47\xe0\x74\x59\xba\xf3\x55\xa0\x6b\xe1\x34\x7d\xd8\xe4\x7c\x81\xd3\xe8\x4b\xc8\x5e\x6e\x26\x78\xdd\x7d\xeb\xb7\x05\xa7\x68\xd0\x15\x4e\xab\xd0\x96\x6f\xe5\x64\x6c\x20\x83\xf5\x8c\x7a\xc8\x19\x20\x17\x34\x32\x6e\xa6\x9d\xca\x96\xcb\x09\x3d\x55\x38\x35\x2d\x26\x40\x05\x3d\x29\xa7\xcb\x1b\x9d\x04\x7d\xed\x0d\x71\x38\x3b\xcd\x41\x4d\x6b\xc2\x8e\xb7\xba\xe9\xa7\xde\xdd\x8c\x3e\x72\xa7\xf3\x58\x8d\xe4\x6f\x0d\xa7\x9d\x9b\xc8\xee\x6b\xe1\xf4\x36\x3c\x6c\x74\xe0\x37\x9c\xba\xde\x56\x6e\x04\xa7\xb9\xc5\xc6\x46\x63\xdd\x87\xcf\xc1\xe9\x57\x39\x80\x1f\xc9\x3f\x10\x45\x86\x10\x04\x71\xc8\x6c\x22\x6d\x2d\x10\xb1\x6c\x61\x4a\xaa\x29\x54\x94\x1a\x04\x58\x06\x34\x28\x04\x90\x1b\x4a\x72\xcb\xa4\xd2\x40\x96\xe4\x50\x53\xd3\x80\x60\x19\x40\x00\x7c\xc2\xd3\x53\xe1\xea\x12\x43\xc9\x0e\x6f\x9c\xae\x4a\x77\xbe\x8d\x76\x2d\x9e\x7a\xaf\x59\xfb\x8d\xa7\x5b\x1f\x1b\x89\x1e\xb4\xe9\x6d\x3c\x05\xdd\x10\xe5\x5c\xb1\x4a\xac\xd4\x7b\x69\x85\x1e\xf2\xb5\xd6\x6b\x83\xd5\x1b\xed\xd2\xa3\x59\x16\x7d\x99\xe9\x5a\x06\x8d\x5b\x0f\xfa\x49\x44\x0a\x9d\x6a\x9c\x4b\xfe\x12\xc5\xa5\xfe\x7d\x35\x4d\xc7\xb1\x7a\xbf\xce\x5e\xba\x96\x9b\x94\x65\x0c\x83\xc5\xd1\xa8\x7f\x9f\x69\x8a\xdb\x5f\x39\x75\x6e\x22\xbb\xaf\xc5\xd3\xdb\xf0\xb0\xd1\x81\xdf\x78\xfa\x21\x9b\xf8\x8d\xf0\x34\xbb\xb0\xa8\xc6\xba\x0f\x9f\xc3\xd3\xaf\x72\x00\x3f\xce\xa1\x24\x43\x06\x42\x82\x4b\x2c\xa8\xb4\x30\xb2\xb4\xb4\x98\xc2\x16\xd6\x5c\x20\x65\x1a\xc2\x46\x16\x30\xa4\xc6\x0a\x72\x25\x21\xe5\x50\x11\x80\x2c\x6e\x5a\x84\x2b\xa1\x96\x78\xea\x4f\x44\x16\x03\x27\x23\xb2\x30\x39\x9c\x4c\x69\x55\xb8\xf3\x7d\xc8\x6b\xd1\x34\x7b\xd8\xe2\x7c\x41\xd3\x60\x8e\x0e\x97\x1b\x0a\xce\x41\x8b\xde\x46\xd3\x56\x27\xd3\x7d\xaf\xc4\x9c\x16\x29\x34\x58\x7c\x80\xdd\xc9\x5b\xe9\x31\x6e\xaa\x72\x7e\x46\x12\xa3\x41\x16\x94\x1a\x63\xb7\x36\xcc\x94\x3a\x46\xc5\x0d\x0d\x26\x89\xac\x7b\x37\x05\x46\x2c\x26\x43\xb9\xc6\xe8\x35\x5e\x7f\x40\xf7\xec\xcd\xee\xd4\xea\x99\x4a\x34\x24\x6b\x4c\xdd\x1e\x4d\xdd\x9b\xc8\xee\x6b\xd1\xf4\x36\x3c\x6c\x74\xe0\x37\x9a\x02\x6f\x2b\x37\x42\xd3\xf4\x42\x70\x8d\x75\x1f\x3e\x87\xa6\x5f\xe5\x00\x3e\xa0\x29\xc0\x04\x5b\x52\xd8\xb6\x60\x86\x4d\x0c\x6a\x4b\x8d\x88\x65\x08\x03\x0b\x21\x6d\x8d\x89\x65\x73\x05\x19\x33\x6d\x4b\x73\x2d\x81\x14\x4a\x60\x13\x42\x9b\x6b\x43\x72\x84\x96\x68\xea\x4f\x40\x14\x03\x27\x03\xa2\x30\x07\xe8\xf0\x6a\x7f\x55\xba\xf3\x95\xdc\x6b\xf1\x34\x77\xd8\xe6\xfc\x89\x6f\x6d\x86\xe2\xaf\x8b\x37\xdf\xfd\x29\xd4\xdd\x67\x49\xdb\x78\xda\x0e\x8e\x75\xb3\xab\x61\x0a\xbd\xb9\xb8\xa0\xd2\x15\x1a\x8b\xdc\x97\xdc\xc6\xb4\x52\xcd\x97\x12\xc3\xf8\xeb\x9b\x9c\x8d\x12\x76\xdb\x69\x96\x06\x72\xdc\xe8\x74\x33\xd1\x6e\x0c\xc6\x63\x8a\xbf\xcd\x5a\xed\xd2\xa0\xd1\x0c\x3f\xc0\x20\x78\x7d\xad\x8c\x93\x43\x5b\xf4\x92\xf9\xd6\xf8\xf6\xb7\xa4\xa6\x7e\xc8\x2e\xdb\x1f\x09\xa3\x72\x44\x76\x5f\x8b\xa7\xb7\xe1\x61\xa3\x03\xbf\xf1\x94\x78\x5b\xb9\x11\x9e\x3e\x2c\x76\x37\x1a\xeb\x3e\x7c\x0e\x4f\xbf\xca\x01\xfc\x58\xed\x0b\xc4\x24\xe4\x54\x9a\xd2\xa4\x5c\x32\x93\x9a\xa6\x84\x0a\x9a\x1c\xda\x08\x63\x83\x99\x54\x61\xa1\x6c\xa9\x2c\x2a\x39\x33\xb9\x66\x94\x02\x2e\x04\x14\x02\x0b\xcd\x97\x78\xea\x4f\x44\x14\x03\x27\x23\xa2\xb0\x44\xf2\x60\x72\xba\x75\xe9\xce\xb7\xc2\xaf\xc5\xd3\xc7\xc3\x36\xe7\x0b\x9e\x56\x32\xc1\xda\x12\xb3\xe7\xfe\x64\xec\xb3\xa4\x1d\x3c\x25\x31\xd6\xea\x3f\xbe\xf6\x1b\x4c\x83\xfa\x28\x3d\x0a\xca\x70\x28\x2a\xb2\xf5\xc8\x78\x9c\x89\x16\x7a\x89\x82\xd4\x8f\xd1\x11\xb6\x62\x0a\x34\x7a\xea\xfe\x51\x90\x74\xa1\x53\xd5\x11\x45\x9e\x0c\x14\x65\xd3\x87\x4a\xba\x3f\x6c\x9b\x2f\x05\xab\x9a\x68\x47\x61\x3d\x8b\xe7\x9f\x5f\xbb\x2d\x9e\x02\x3f\x64\x97\xed\xe5\x3a\xac\x72\x44\x76\x5f\x8b\xa7\xb7\xe1\x61\xa3\x03\xbf\xf1\x54\x78\x5b\xb9\x11\x9e\x26\x17\xbb\x1b\x8d\x75\x1f\x3e\x89\xa7\x5f\xe4\x00\x3e\xe0\xa9\x25\x80\x29\x80\x54\x04\x30\xca\x00\xb0\x38\x07\x54\x73\xcb\x00\x44\x43\xc4\x80\x61\x63\x49\x05\xb2\x24\x81\x84\x30\x25\xa9\x6d\x48\x53\x2b\xc6\x98\x00\xda\x06\x26\x5e\xe2\xa9\x3f\x41\x51\x0c\x9c\x0c\x8a\x22\x90\x72\x7a\x10\x4f\x57\xa5\x0b\x3c\x95\x58\x20\x1f\x4e\xa3\xbc\x9a\xf5\x3d\xc6\x14\xdd\xf7\x5f\x16\x6f\xce\xfd\xa9\xb0\xcf\x92\xb6\xf1\x34\x5e\x9f\x4e\xeb\xd3\x72\x46\x45\xc6\xb3\x66\xdb\x9e\xc5\x86\xbd\x7a\x63\xc2\x50\xf7\xa9\x55\x9e\x95\xb4\xc8\x67\xa7\x9c\x3e\xa9\xfb\xc7\xf0\xeb\xd3\xfd\x53\x91\x64\x1f\xd8\x40\x57\x83\xa9\xe6\x5d\x4f\x24\x30\xee\x36\xcd\x8a\xeb\x8e\x68\xb4\x1b\x6c\xc6\x9e\xee\xde\xa6\x4f\x4f\xb8\x72\xfb\xd3\x28\xe2\x87\xec\xb2\x9d\x49\xf6\xa9\x72\x44\x76\x5f\x8b\xa7\xb7\xe1\x61\xa3\x03\x9f\xf1\xf4\x23\x7a\xde\x08\x4f\x97\x81\x31\x8d\x75\x8b\x9f\xc3\xd3\xaf\x72\x00\x3f\x62\x4c\x2d\x60\x98\x84\x10\x9b\x6a\x09\xb4\x54\x0c\x2a\xaa\x14\x80\x50\x09\x83\x21\xcc\x99\xb6\x91\xc5\x35\x06\x84\x40\xa1\xa0\x10\x0a\x49\x62\x18\xc0\x90\x94\x13\x60\x8b\x25\x9e\xfa\x13\x15\xc5\xc0\xc9\xa8\x28\x82\xb9\x38\x7c\x1a\xb5\x2a\x5d\xe2\x29\x97\xc8\x87\xd3\x28\xaf\x7d\xfb\x1e\x64\xda\xbc\x23\xcb\x48\x98\xb9\x3f\x9d\x0c\x32\x9d\x34\x5e\xc2\xac\xf4\x1a\x6d\x16\x87\xcd\x18\x7f\x20\xd3\x69\xae\x61\x01\x37\x3c\xe9\xc5\x82\xf9\x86\x9d\x81\xd1\xb7\x3b\x1d\x9d\x56\x8d\xde\x7d\xe8\x31\x55\xac\x82\xea\x20\x57\x9a\x95\xa9\xad\xa3\x0f\xc1\xdc\x20\x5d\x57\x89\xd4\x64\x32\x89\xdc\x55\x9f\x1e\x7a\xf4\x31\x79\xff\xaa\xac\xdb\x5f\x96\x12\x7e\xc8\x2e\xdb\x7e\x84\xa4\x72\x44\x76\x5f\x8b\xa7\xb7\xe1\x61\xa3\x03\xbf\xf1\xf4\x93\x1f\x56\xf3\x0d\x4f\x63\x9b\x5c\xf4\xa1\x03\x37\x1a\x8e\xe1\xe9\x57\x39\x80\x1f\xfb\xa7\xc4\x80\x0a\x2a\x20\x21\x95\x06\x34\xb9\x61\x10\x6c\x5b\xd0\x32\x81\x8d\x04\x92\x54\x58\x40\x01\x68\x62\xcc\x2d\x8e\x14\xc0\x88\x98\x00\x31\x64\x50\x61\x49\xcc\x20\x5d\xe2\xa9\x4f\x61\x51\xf0\x64\x58\xd4\x3b\xe6\x1e\x0e\xda\x5f\x95\xce\xf1\x54\x02\x04\xa0\x0f\xe7\x51\xc5\xc3\x36\xe7\x0b\x9e\xe6\x32\x77\xc9\xd6\xe2\xcd\xf9\x79\x84\xdc\x67\x49\xdb\x78\x1a\x05\x59\x2e\x3b\xa3\xe0\xa0\x5b\x2c\xb6\x9d\x49\x99\x82\x64\x67\xf4\xd6\x1a\x17\x86\xa9\x2c\x9b\xf5\x0a\x9d\x18\xb7\xdd\xca\x5d\xbd\xfd\x40\x1b\xa2\x56\x7d\xd4\x0d\xab\x3a\x4e\x88\x31\xa5\x6f\xe1\xb7\x27\x33\xf4\x66\x59\x8e\x08\xab\xd6\x38\x5a\x1d\xa4\x32\x8f\xed\xcc\xd3\x53\x32\x7c\xeb\xfd\xd3\x6d\xcf\xbd\x02\x8b\x9a\x53\x5d\xab\x1c\x91\xdd\x97\xe2\xe9\x8d\x78\xd8\xe8\xc0\x6f\x3c\xbd\xf8\x53\x49\x57\xe2\x69\x64\x93\x1f\x30\xf4\x99\xfc\x80\xab\x2f\xb5\x7d\x91\x03\xf8\x91\x3d\xda\xc2\xdc\x92\xc2\xe6\x08\x58\xb6\x81\x2d\x53\x13\x89\x31\xb4\x09\xc0\x86\xad\xb0\x2d\xb5\x0d\x31\x44\xc8\x56\x5a\x52\xa2\x38\x36\xb8\xc1\x84\x30\xa0\x00\x06\xa4\x70\x79\x97\x1f\xfa\x14\x17\x05\x4f\xc6\x45\x11\x81\xc4\x91\xf5\xfe\xb2\x74\x89\xa7\x0c\x42\x1f\xce\xa3\x4a\x87\x6d\xce\x9f\x30\x53\x2c\xeb\x77\x8b\x37\xe7\xfe\xf4\xb6\xcf\x92\xb6\xf1\xb4\x56\x6e\x1a\x34\x5f\x0a\xe6\xee\x26\x15\xda\x29\x45\xf3\x2f\xb9\x81\x7c\x6d\x11\x37\xa2\x87\xed\x32\x9d\x24\x4b\xb4\x92\xc0\x99\x56\x2e\x8e\x05\x7c\x4b\x0e\xba\x3d\x65\xa7\xda\xe9\x6c\xa2\x08\x90\xee\x77\x9c\x7e\x2e\x31\x4a\x54\x93\x93\x97\xb7\x7e\x25\xdf\x4e\xbc\xe4\xb1\x90\x37\x5f\xef\x87\x7c\xc9\x55\x7a\x52\x76\x5f\x8b\xa7\xb7\xe1\x61\xa3\x03\xbf\xf1\xf4\x93\xf9\x56\x7d\xc3\xd3\xf0\x26\xdf\x69\xe8\x82\x7c\xa7\x5f\xe5\x00\x3e\xe0\xa9\xc2\x96\x40\x26\x51\x26\xc2\x5c\x73\x6e\x63\x41\x6d\x6c\x5a\x36\x55\x98\x0a\x53\x19\x26\x31\x80\x09\x91\xc1\x6d\x2a\x0c\x2a\x4d\x28\xb9\x6d\x19\x4a\x28\xce\x00\x04\xe6\xf2\x32\x3f\xf4\x29\x38\x0a\x9e\x0c\x8e\xa2\x40\x82\xc3\xeb\xfd\x55\xe9\x02\x4f\x21\x40\xc0\x87\xf3\x28\x6f\x22\x33\xdf\x63\x4d\x5b\x62\xb0\x48\xe9\xbe\xf0\xa7\xc1\x3e\x4b\xda\xb9\x2f\x95\x9a\xc6\x4c\xe7\x2d\x28\xf3\xa4\xd2\xbe\x1f\x05\x43\xc1\xce\xa0\x69\x4c\x72\x2d\x96\x70\x31\xa2\x46\x22\x12\x1a\x94\x5a\x2c\x75\x9f\xce\xe2\x62\x25\x11\x77\xeb\x79\x54\x9e\x46\xe0\x50\x9b\x8d\xba\x53\x1f\x39\xd5\x08\xbc\x7b\xe9\x3c\x58\xb1\x4c\xf1\x4d\x8f\x93\x4f\x8e\x95\xba\x3d\x9e\xfa\x92\x2c\xf4\xa4\xec\xbe\x16\x4f\x6f\xc3\xc3\x46\x07\x7e\xe3\xe9\xcf\x4a\x78\x1a\xdc\x24\x3c\x0d\x5d\x90\xf0\xf4\xab\x1c\xc0\x8f\xf3\x7d\x20\x31\xe6\x5a\x5b\x36\xc4\x8c\x31\x0a\x25\xd2\x82\x00\x03\x61\xc3\x46\xcc\x10\xcc\x36\x05\x35\x24\x36\x0c\x02\xa0\x85\x15\x34\x35\xd1\x1a\x29\x68\x50\x2e\x11\x5c\x9d\x47\xf9\x14\x1d\x05\x4f\x46\x47\x51\x8c\x8f\x9c\x47\xad\x4a\x97\x78\x4a\x30\xf0\xe1\x3c\xaa\x72\xd8\xe6\x7c\xc1\xd3\x44\x96\x53\x14\x0c\xd6\x20\xc9\x77\x8a\xba\xdd\xfb\x90\xea\x67\xfe\xdb\x5e\xef\x37\xbb\xb0\xd2\x7c\x4b\x51\xdc\xad\xc8\x76\x3f\xe3\x96\xc2\xf2\x3e\x42\xef\x47\x43\xd0\x56\xd5\x70\xa3\x68\x82\x87\x70\xcf\x2a\xbe\x74\x5f\x8c\xfc\x7d\x27\x12\x6d\x4c\x4a\x77\x6d\xbb\x98\x8e\x8c\xf3\xac\x91\x91\xf1\x54\xb8\x68\x3b\xb1\x5a\x89\x0c\x86\x3a\x0f\x7a\x83\xf4\x24\x1c\xbe\x39\x9e\xde\x46\x76\x5f\x8b\xa7\x37\xd4\xff\x97\xe0\xe9\x4f\xca\x79\x0a\xee\x37\x39\x4f\x43\x17\xe4\x3c\xfd\x2a\x07\xf0\xe3\x3c\x0a\x12\x60\x59\x36\x30\x39\xb5\xf9\xfc\x2f\x8b\x4b\x2c\xa1\x66\x06\x95\x12\x19\xd2\xa4\xcc\x90\x26\xc2\x26\x20\x00\x00\x61\x48\x20\x4c\x0e\x14\x81\x58\x1b\x00\x2f\xd3\xa0\x20\x9f\xa2\xa3\xe0\xc9\xe8\x28\x4a\x85\x38\x7c\xff\x74\x55\xba\xc4\x53\x41\x80\x0f\xe7\x51\xd5\xc3\x36\xe7\x4f\xb4\x29\xe1\x0f\xcb\x3d\xda\xf9\xfc\xc4\x8b\xdf\x8b\xdf\x16\x9e\x56\xf9\xb8\x1d\x72\xcc\x51\xb6\x60\x2b\x98\x61\x77\x25\x30\x2a\x36\xdb\x20\x7f\xd7\x95\xaf\xc6\x40\x86\x59\x3b\xdf\x1b\x16\xa3\x65\x1d\x2a\x4e\x83\x2f\x63\xb3\x0c\xeb\xc1\x4c\xd7\xc4\xb5\xb7\x97\x64\xe8\x15\xd3\xa8\x3b\xae\x64\x41\x07\x34\x23\x02\xde\x0f\x87\xe1\x6c\x78\x94\xbc\xf9\x7d\xfe\x90\x2f\x09\x43\x4f\xca\xee\x6b\xf1\xf4\x36\x3c\x6c\x74\xe0\x37\x9e\xfe\xa4\xa4\xa7\x40\x6e\x92\x9e\x86\x2e\x48\x7a\xfa\x55\x0e\xe0\xcb\xfe\x29\x61\x14\x03\xca\x89\x36\x6d\x8a\x28\x85\xc8\xa0\x50\x10\x65\x33\x29\xa4\xb4\x24\x55\x02\x31\x6d\x32\x63\xfe\xa9\x51\x60\x20\x0b\x13\x03\x6b\x5b\x61\x8a\x2c\xbe\x5c\xef\x23\x9f\xa2\xa3\xe0\xc9\xe8\x28\x2a\x10\x3d\x1c\x1e\xb5\x2a\x5d\xe0\x29\x42\x44\xfa\x70\x1e\x55\x3b\x6c\x73\xfe\x44\x9b\xb6\x99\x1a\x2f\xde\x9c\x9b\x99\x37\x5b\xc0\xe2\xb7\x9d\x0c\x25\xfa\x76\x67\xb6\xd2\x4f\xd5\x68\x2d\xd9\x75\xa3\xd5\xd1\xb0\x0e\x93\x2d\x68\xbf\x39\x6a\x86\xac\x78\x38\x7a\x1f\x1b\x83\x78\x33\xf7\xfa\x62\x4c\x25\x88\x4c\xdc\xbb\x0e\x56\x95\x5c\x2f\x9f\x2e\x85\x5e\xcb\x34\x55\x6d\x47\x27\x16\xcb\x0d\xee\x9c\x0a\x6e\xdd\xf1\x87\xc7\xc7\xd1\xec\xe6\xf7\x4f\x43\xbe\x64\x0c\x3d\x29\xbb\xaf\xc5\xd3\xdb\xf0\xb0\xd1\x81\xdf\x78\xfa\x93\xb2\x9e\x02\xb1\xc9\x7a\x1a\xba\x20\xeb\xe9\x57\x39\x80\x2f\x59\x4f\x91\x82\xcc\x54\x02\x19\xdc\x02\x86\x25\x01\x36\x11\x23\x02\x71\xcc\x4c\x53\x1b\xd2\x26\xda\x56\x80\x73\xc0\xa1\xe6\x48\x10\xc9\x28\x31\xb0\x32\xb5\x25\x09\xc4\xcb\xf3\x28\xe4\x53\x7c\x14\x3c\x19\x1f\xc5\x80\x38\x82\xa7\xab\xd2\x25\x9e\x32\x2a\x7d\x38\x8f\xf2\x0e\xe2\xbe\xc7\x9b\x5a\x6f\xd5\xa5\xa3\x94\x0f\xda\xf4\x36\x9e\xa6\xfa\xc3\x51\x2d\xfe\xda\xee\xbc\x0c\x82\xa9\x60\xcc\x8e\xd4\x41\xea\x35\xd5\xae\xd9\x45\x79\x3f\xab\xa5\xd3\x09\x6b\x8c\x6b\x25\x04\x92\xb3\x41\x2a\x1c\xca\xa3\x07\x60\x37\xeb\xfd\x4a\xcb\x05\xa3\xbe\xa1\xcc\xb0\xbc\x9f\x94\xcc\x5e\xba\x5f\x9d\x3d\x34\xa0\x13\x0f\x17\xe4\xd8\xbd\x79\x7c\x54\xc8\x97\x94\xa1\x27\x65\xf7\xb5\x78\x7a\x1b\x1e\x36\x3a\xf0\x1b\x4f\x7f\x52\xda\x53\xc0\x36\x69\x4f\x43\x17\xa4\x3d\xfd\x2a\x07\xf0\xe3\x3c\x0a\x18\x96\x61\x19\x50\x29\x4c\x0d\x6e\x23\xa5\x4d\x04\xa0\xc1\xa0\xb0\x4d\x45\x25\x01\x54\x13\x13\x73\x6a\x0b\x9b\x33\x85\x88\xb6\x11\xd5\x42\x50\x25\x99\x6d\xf1\x55\xda\x53\xe4\x53\x7c\x14\x3c\x19\x1f\xc5\x30\x3a\x7c\x1c\xb5\x2c\x5c\xa0\x29\x06\x4c\xf8\x70\x1a\xf5\x74\xd8\xe2\xfc\x89\x36\x9d\xb0\xd9\xf2\x1a\xe3\xdc\x5b\x4e\x9e\xee\xc7\x5f\x66\xe1\x7b\xb3\x65\x49\x99\x7a\x88\x86\x26\xac\xce\x27\xbd\x4e\x19\x8e\xef\xca\xf9\xbb\xe2\x34\x32\x4b\x24\xdb\x69\x9d\xe9\xf5\x86\x23\x5a\x9e\xa0\x52\xd8\x65\xe1\x11\x19\x39\x9d\xc9\xb4\xdd\x8d\xbb\x46\xc8\x81\xae\x59\x16\xfd\x7c\x6f\x3a\xae\x8d\x5b\xc2\xb0\xb3\xf1\x52\xf0\xe6\x68\xea\x4b\xd6\xd0\x6c\xad\x4c\xa7\x95\x23\xb2\xfb\x5a\x34\xbd\x0d\x0f\x1b\x1d\xf8\x8d\xa6\x3f\x29\xf3\x29\x20\x9b\xcc\xa7\xa1\x0b\x32\x9f\x7e\x95\x03\xf8\xf1\xf9\x3d\x43\x02\x4a\x09\x43\xcc\x94\x86\xad\xb0\x64\x06\xb1\x19\x34\x4d\x09\x81\x85\x05\x56\x58\xd8\x10\x21\x6c\x0a\x9b\x12\x2e\xb4\x65\x69\x66\x6b\x06\x14\xb7\x91\x4d\x56\x99\x4f\x91\x4f\xd1\x51\xf0\x64\x74\x14\xa3\x44\x1e\xfe\x9c\xe9\x7b\xe9\xe6\xf6\x29\x26\x5c\xf8\x70\x1a\xa5\x0e\xdb\x9c\x3f\xd1\xa6\x8a\x85\x97\xd3\x9c\xb9\xbf\x8c\xf7\x59\xd2\x36\x9e\x96\xca\xa2\x56\x05\x89\x74\xe5\x21\x18\x6a\x19\x19\xb3\x02\x12\xb8\x32\x2b\x77\xe2\xcd\x7b\x2b\xdf\x2c\x9b\x19\xa0\x63\xe1\x4e\xec\xad\xd2\xd0\xb5\x5e\x5d\x36\x60\xe5\x3e\xd3\x7f\x94\x11\x37\xeb\x42\xd5\x1a\x8c\x53\x95\x6e\x30\x5e\x04\x21\x21\x1a\x33\xa3\xe7\xe4\x69\x93\x0d\x23\x37\xc7\x53\x5f\xd2\x86\x66\x2b\xb0\xf5\x58\x39\x22\xbb\xaf\xc5\xd3\xdb\xf0\xb0\xd1\x81\xdf\x78\xfa\x93\x52\x9f\x02\xbc\x49\x7d\x1a\xba\x20\xf5\xe9\x57\x39\x80\x1f\xb7\xf9\x35\xe4\x5a\x70\xdb\xb4\x14\xc5\x12\x73\x8b\x73\xd3\xb0\xa1\x46\x8c\x0a\xdb\xb4\x6c\x02\xb5\x01\x98\x90\x5a\x32\x22\x29\xa1\x86\x01\x89\xa2\xef\xcb\x6a\x8c\x34\x35\x96\xd1\x51\xc8\xa7\xe8\x28\x78\x32\x3a\x8a\x09\x71\xe4\xf6\xe9\xaa\x74\x89\xa7\x42\x08\x1f\x4e\xa3\xbc\xd1\xd4\x7e\xe3\x69\x29\x46\x8b\xcb\x30\xf0\xb9\xbf\x9c\xbc\x2d\x95\x6e\x76\x09\x54\x7a\x92\x06\xba\xfa\x54\xba\xb7\x66\xb2\x3d\x8d\x15\x2a\x06\xef\x47\x74\xc4\x6d\x3f\xea\xf1\xe3\xc3\x03\xcd\x87\x43\x8d\xea\x53\x3b\x54\x8d\x4d\xa7\x85\xda\xdb\x5d\xa3\xd4\x4a\x98\x66\x78\x12\xa7\x55\x62\x49\x3c\x36\x83\x65\x32\xcb\x75\x8c\x70\x1b\x56\x12\xf2\xf6\xa7\xfb\xbe\xe4\x0d\xcd\x96\xab\x0f\xe3\xca\x11\xd9\x7d\x2d\x9e\xde\x86\x87\x8d\x0e\xfc\xc6\xd3\x9f\x94\xfb\x14\xc0\x4d\xee\xd3\xd0\x05\xb9\x4f\xbf\xca\x01\xfc\x38\xdd\x47\x9c\x6b\xa2\x0c\x9b\x5b\xc0\xc2\x88\xd9\x8a\x61\xad\x19\x22\x90\xda\x5c\x41\xc8\x35\xc1\x84\x62\xc0\x11\xe3\xdc\x82\x36\xd3\x92\x41\x61\x0a\x0b\x19\x86\xa0\x88\x2c\xf1\xd4\xa7\xe8\x28\x74\x32\x3a\x8a\x43\xc2\x0f\x9f\xee\xaf\x4a\x17\x78\x4a\x90\xe4\x3e\x9c\x46\x79\xb7\xec\x7d\x8f\x36\x9d\x92\xf6\xd2\x7a\xe6\xfe\xf2\x61\x11\x36\xff\x6d\xe1\xe9\xac\x6d\x8f\x83\x6e\xcd\x1d\x96\x66\x93\x3b\x9a\xad\xd4\xfb\xae\x01\x5c\xe7\x25\xcc\x9e\x9c\xee\xb8\x74\x5f\x73\x8c\xf6\x70\x44\xa8\x0e\xea\xec\x53\x66\x3a\x90\xf7\x85\x0a\x6a\xa6\x6b\xaf\xc5\x4e\x25\x57\xe9\xa0\x9c\x80\xe4\xde\x6a\xbc\x6a\x35\xe0\x99\xbb\x74\xa3\xda\x32\x1e\x43\x37\x3f\xdd\xf7\x25\x6f\x68\xb6\x88\xde\xb2\x95\x23\xb2\xfb\x5a\x3c\xbd\x0d\x0f\x1b\x1d\xf8\x8d\xa7\x3f\x29\xf7\x29\x00\x9b\xdc\xa7\xa1\x0b\x72\x9f\x7e\x95\x03\xf8\x71\xba\xaf\x31\x43\xc8\xb0\x99\xa5\x0c\x88\x38\x83\x94\x02\x48\x0c\x81\x05\xb7\x11\x83\x0a\x18\x86\x6d\x68\x1b\x11\x6e\x2a\x05\xa8\x96\x26\x31\xb4\x30\x85\x04\x96\xb2\x24\x5d\xcd\x4f\x7d\x8a\x8e\x42\x27\xa3\xa3\x38\xa6\x9c\x1f\xc6\xd3\x65\xe9\x12\x4f\x39\xe0\x3e\x9c\x46\x59\x87\x6d\xce\x9f\x68\x53\x03\xbf\x2d\x27\x0a\x73\x7f\xb1\xf7\x59\xd2\x36\x9e\x9a\xb1\x56\xbb\x35\xa8\xdc\x77\x9f\x0a\xc9\x48\xbd\x65\x66\x07\x89\xd8\xb4\xaf\xd2\x24\x05\x62\xbd\x69\xc7\x1c\x82\xb8\xac\xcc\x12\xa4\xfb\x54\xac\x37\xd2\xed\x46\xbe\x3f\x69\xf4\x5b\xe1\x50\x7e\x38\x19\x23\xfd\xf2\xfa\x92\x8b\x25\xc2\x22\x01\x48\x89\x47\x64\xbb\xe6\xea\xfa\x90\xdc\xfe\xb6\x94\x2f\x99\x43\xb3\x85\x9a\xe1\x56\x8e\xc8\xee\x6b\xf1\xf4\x36\x3c\x6c\x74\xe0\x37\x9e\xfe\xa4\xec\xa7\xe0\x75\x93\xfd\x34\x74\x41\xf6\xd3\xaf\x72\x00\x3f\x4e\xf7\x01\x30\x05\x56\x5a\xd8\xd8\x02\xa6\x45\x6c\xc8\x19\xa0\x90\x43\x81\x94\x61\xd9\x80\x10\xa0\x4d\xc5\xb4\x6d\x5a\xc8\x00\xb6\x12\x12\x2b\x65\x0a\x6a\x60\xaa\x09\x32\x8d\x25\x9e\xfa\x14\x1d\x85\x4e\x46\x47\x71\xc6\xc4\xe1\xfd\xd3\x55\xe9\x02\x4f\x29\x84\xcc\x87\xf3\x28\x7d\xd8\xe6\x7c\xc1\xd3\x4c\x1c\x47\x97\x61\x36\x73\x7f\xf1\xee\xd7\x2e\x7e\x5b\x78\x6a\x24\x5e\x1f\x46\x6f\xf9\x28\x78\xad\xda\xc1\xf0\xb4\x6a\xdf\xc1\x41\xbd\x82\x1f\x73\x71\x33\xf8\x30\xeb\x66\x47\xa3\xf4\x03\x09\xd1\x74\xaf\x86\x49\x65\x5a\x4e\xc6\xdb\xd5\xc4\xcb\x43\xb2\x35\xbd\x57\x91\x91\xab\x92\x2f\xa1\x54\x92\x21\xc3\xee\xd4\xfb\xec\xa1\x95\xa9\xb6\x0a\xfd\x6e\xf0\xe6\x78\xea\x4b\xe6\xd0\x93\xb2\xfb\x5a\x3c\xbd\x0d\x0f\x1b\x1d\xf8\x8d\xa7\x3f\x29\xfb\x29\x98\x6d\xb2\x9f\x86\x2e\xc8\x7e\xfa\x55\x0e\xe0\xc7\x27\xf7\x6d\x8e\xa1\xc1\x98\x09\x15\xb6\x90\x49\x4c\x5b\x5a\x90\x1a\x06\xe4\x5a\x42\x60\x68\xa5\x98\xcd\x6c\xc5\x14\xe7\xa6\x69\xda\x16\x43\x36\xd5\xca\x30\x2d\xac\x4d\xdb\x34\x97\xd9\x50\x90\x4f\xd1\x51\xe8\x64\x74\x14\x17\x92\x1c\xce\x7e\xba\x2a\x5d\xe2\x29\x45\xcc\x87\xf3\x28\xef\x7c\xc1\xf7\x68\xd3\x19\x2a\x2f\xd7\x78\x73\x7f\x39\x79\x9b\xbf\xd3\x79\x7a\xa1\x6e\x65\x6a\xd2\xc1\x90\x65\xeb\xf6\x4b\xb7\x58\xef\xe4\xf5\x64\x88\x38\x6e\x19\xcd\x9c\x8c\x4e\x2b\xaf\x9d\x1c\xea\xe5\xc9\x5d\x47\xdd\x85\x86\xf9\xf6\xdd\xdd\xd4\x36\xdd\x71\x2a\x66\xc4\x95\x8e\xb2\xec\xe8\x2d\x3f\x2b\xd9\xbc\x96\x57\xf1\xa7\xc1\xb4\xdd\xa1\xe1\x9b\xdf\x3e\xf5\x25\x73\xe8\x49\xd9\x7d\x2d\x9e\xde\x86\x87\x8d\x0e\xfc\xc6\xd3\x9f\x94\xfd\x14\x4c\x36\xd9\x4f\x43\x17\x64\x3f\xfd\x2a\x07\xf0\x01\x4f\x89\x44\xa6\x30\x91\x00\xc2\xb0\x19\x91\x86\xc2\x08\xda\xc0\xe6\xd4\xb2\x14\x84\x54\x40\x08\xb8\x61\xdb\x08\x49\x6d\x13\xca\x31\x01\x4a\x19\x82\x48\x62\x53\x65\x11\xb8\xcc\xce\x8f\x7d\x8a\x8e\x42\x27\xa3\xa3\x04\xc4\xec\xf0\x79\xd4\xaa\x74\x89\xa7\x12\x33\x1f\xce\xa3\xbc\x57\xf4\x7c\x8f\x36\x35\xe1\x2a\x21\x7b\xf9\xa0\x25\xed\xdc\x97\x72\x66\x79\x17\xb7\xee\x54\x94\xe5\x82\xba\x11\xea\x94\x7a\x41\x60\xbd\x44\x95\x15\xa1\x04\x86\x63\xe5\x7a\xa6\x92\x87\x2a\xdc\x6a\xd1\x96\x93\xce\xa8\x47\xd6\xa2\x4e\xf1\x89\xde\x11\x13\x54\xec\x3a\xca\x04\x1f\x7b\x83\x99\x95\x0d\xe7\xea\x78\x32\x4d\x90\x5a\x44\xbc\xde\x1e\x4f\x7d\xc9\x1c\x7a\x52\x76\x5f\x8b\xa7\xb7\xe1\x61\xa3\x03\x9f\xf1\xf4\x23\x8a\xdd\x08\x4f\x97\x57\x18\x1a\xeb\x3e\x7c\xf2\xbe\xd4\x17\x39\x80\x0f\x78\x6a\x02\x6c\xd9\x86\x56\x98\x32\xc0\x0c\x8b\x32\x6a\x63\x06\xa4\xc2\x80\x29\x85\xb8\x12\x48\x29\x48\x0c\x6c\x5b\x90\x20\x1b\x2a\x88\x0d\x2e\x4d\x28\x38\xb4\x29\x51\x78\xb9\xde\xc7\x3e\x45\x47\xa1\x93\xd1\x51\x82\x20\x7a\xf8\x3c\x6a\x55\xba\xc0\x53\x86\x09\xf5\xe1\x3c\xaa\x79\xd8\xe6\x7c\xc1\xd3\x58\x02\xc0\xe5\x99\xd7\xdc\x5f\x4e\x46\x47\x75\x4b\xf1\x2e\x4d\x77\x79\xb5\xc0\x1c\x27\xe1\x90\xd2\x63\x29\xd1\x7a\x74\x1f\x9b\xf5\x7c\xd4\x7c\x1c\xc7\x2c\xd2\x35\x5e\x09\xee\xb7\x5a\xb6\x1b\x0e\xf7\xd3\x9d\x27\xfb\xcd\x79\xaa\xcf\x72\x91\x5e\x30\x91\x98\xdc\x17\x6a\x1d\xb7\x13\x4a\x70\x5d\xe8\xcc\xc2\x4f\xf5\x50\xa1\x56\xc8\xdf\xfe\x36\xbf\x2f\x99\x43\x4f\xca\xee\x6b\xf1\xf4\x36\x3c\x6c\x74\xe0\x37\x9e\xfe\xa4\xec\xa7\xc0\xdd\x64\x3f\x0d\x5f\x90\xfd\xf4\xab\x1c\xc0\x8f\xf9\x29\xd2\x84\xdb\xc2\xb6\x4c\x83\x63\x61\x0a\x42\x34\xa4\x94\x99\xd2\x56\x16\x14\xda\x10\x42\x70\x8b\x0b\x26\xa0\xb6\xa9\x96\x0c\x32\x21\x85\x36\x98\x86\x26\xd5\x42\xaf\xf0\xd4\xa7\xe8\x28\x74\x32\x3a\x4a\x30\x76\x24\x1b\xca\xaa\x74\x89\xa7\x9c\x52\x1f\xce\xa3\x5a\x87\x6d\xce\x9f\x68\xd3\x57\x10\x5b\x4e\x74\xe6\xfe\x12\xdf\x67\x49\xdb\x78\xaa\x8a\x4e\xd4\xbc\x7f\x98\x29\x07\x3f\xb1\x46\xd9\x2d\x35\x61\xde\x4e\xb7\xbb\x25\x22\x58\x29\xff\xd0\x18\x8d\x65\xb6\xf9\x52\x12\xd1\xb7\x62\x1e\xb5\x63\xe1\x6a\xe3\xf1\xce\xb1\x52\xe5\x7e\x29\xf9\x58\x28\x73\x12\xc9\x35\x5e\xa6\xd1\x86\x99\x08\xc5\x07\xce\x44\x29\xd7\x45\x24\x72\xeb\xf9\xe9\xb6\x07\x7d\xa1\xec\xbe\x14\x4f\x6f\xc4\xc3\x46\x07\x7e\xe3\xe9\x4f\xca\x7e\x0a\x5e\x36\xd9\x4f\xc3\x17\x64\x3f\xfd\x2a\x07\xf0\x23\xbb\x94\x96\x4c\x30\x6a\xd9\xa6\xe2\xc2\x24\xd8\x24\x80\x13\x0c\xb9\x8d\x2d\xc3\xb4\xb8\xa9\x24\x17\x8c\x60\x43\x72\x6c\x98\x52\x51\xcb\x24\x36\xa2\x42\xd8\x52\x40\x93\x59\xcb\xaf\x47\x61\x9f\xa2\xa3\xd0\xc9\xe8\x28\x21\x24\x3d\x9c\x4d\x7a\x55\xba\xc0\x53\x0e\x19\xf1\xe1\x3c\xaa\x7d\xd8\xe6\xfc\x89\x36\x75\x47\xa1\xe5\x99\xd7\xfc\xfe\xcd\x7e\xcc\xda\xfe\xf6\x7e\x6c\xea\xe8\x7e\x2d\x55\xc9\x95\x5a\xd2\x79\xad\x26\x5e\xb3\xe9\x3b\x30\x4d\x17\xac\x56\x27\x32\x0d\x91\x17\x2b\x9b\xea\xb5\xef\x72\xf9\x96\x50\xa0\x5d\x68\xb4\xf3\xf1\x7b\x78\x1f\x75\x8b\x2f\x42\xd0\x17\xde\x2b\x4f\x6a\x94\xd7\xc2\xed\x72\x3c\x71\x37\xb4\x39\x08\xdd\x85\x63\x37\x3f\x8f\x0a\xfb\x92\x39\xf4\xa4\xec\xbe\x16\x4f\x6f\xc3\xc3\x46\x07\x7e\xe3\xe9\x4f\xca\x7e\x0a\x06\x9b\xec\xa7\xe1\x0b\xb2\x9f\x7e\x95\x03\x1c\xc4\xd3\xdf\x7e\xfb\xe3\x8f\xdf\xfe\xf8\x23\x90\x55\x3d\xfd\x23\xd0\x70\x86\x83\xe7\x5e\xab\x31\x54\x0b\x30\xf5\x3c\x3f\x0f\x3a\xfa\xf5\xaf\x40\xe9\x75\xa0\x7f\x04\xc2\xb9\x6c\xb1\x54\x08\x26\xb3\xa5\xbf\x02\x45\xb3\xa9\x7b\xea\x47\x60\x30\x36\xba\x2d\xf3\xaf\x40\x6e\xda\xd7\xc3\x1f\x81\x77\xca\xbf\xfd\x16\x4c\x97\xa2\x85\x40\x29\x18\x4a\x47\x03\xb9\x6c\xba\xee\xa5\xfa\x5b\x20\x10\x08\x04\x23\x91\x2d\x8a\x7b\x1b\x0e\x3c\x16\x92\x99\x60\xa1\x1e\x78\x88\xd6\x03\xff\x6a\x59\x1f\x7a\xbf\x1a\x0f\x94\xeb\xea\x91\xeb\x79\x5c\xfc\xcf\xb3\xe9\x58\x7a\xf9\xe7\xe8\x75\xb0\xfa\xb3\xe5\xba\x63\x3d\x7c\xf6\x85\xbb\xdd\x66\xf7\x31\x77\x51\xc7\x02\xe5\x6c\x32\x5f\x8e\x06\xfe\xb5\xa9\xfe\x3d\xb0\xa9\xbf\xfa\x7b\xf1\xc2\x27\x45\xe3\x8f\x5a\x3f\xcd\xf8\xa7\x94\xea\x0c\xf4\xc2\x18\x9e\x07\x6a\x38\x6a\x99\xad\x81\xea\x6f\x71\xb2\xbf\xd8\x67\xce\xf6\x37\x72\x8c\xd3\x23\xdd\x3a\x9b\xf3\xad\xe9\xcd\x7e\xde\x0f\x55\xf0\x99\xfb\x43\xcd\x1c\xe3\xff\x68\xd7\x4e\x4a\x60\x61\xd2\xc6\xeb\xd2\xaa\x57\xac\x24\xb3\x91\x68\xed\x04\x17\xe1\x42\x34\x58\x8a\x2e\xaa\x7a\xe9\x04\x72\x59\xaf\x43\x94\x8b\xc9\x6c\x3c\x60\x8c\x86\x5a\xaf\x3c\xec\x80\x27\x19\xaf\xcf\xca\x34\x9d\x71\x7f\x74\x71\x77\x36\x24\xb6\x7b\xb2\x33\x8b\xdd\xed\xcf\xa2\xf2\xf7\xc0\xf2\x8f\x67\x57\xbf\x8c\x75\xdf\xd4\xfb\x3a\xd7\x54\x6e\xf3\x9a\x9e\xbd\xbf\x7f\x5e\xb7\xb6\x75\xfb\xfe\xd6\xbe\xde\x74\xb5\xd5\xb8\x42\x71\x6b\x0a\xe7\xf5\x68\x51\x77\x2d\x9e\xef\x01\x35\x18\x74\x5b\xe6\xc2\x01\x9d\xa1\x75\x00\x18\x9f\xf5\xbb\x6d\xcc\xcb\x2f\xe8\xe9\x12\x97\x17\x1d\xf6\x90\xdb\xee\xb6\xb6\x6d\x6d\x7a\x4d\xed\x23\x4e\xb4\xac\xef\x81\xdf\xe7\x2f\xff\x7e\xa8\xb3\x2d\xcb\xa7\x6e\xb6\xac\xb3\x3b\xb8\x32\xbd\xf7\xee\x5d\xd0\x69\x67\xf0\x3c\xf0\xab\xdf\x4b\x5a\xdb\x5d\x3f\x30\x38\x5c\xc4\xc9\x7e\x06\x46\x33\xff\x18\x58\xd2\x3a\x60\xd3\x17\xb2\xb0\x4d\x61\x1f\x13\xce\xe0\xdd\x2a\x9b\xce\x45\x3c\x2c\x3b\xbf\xa1\x71\xa9\xf0\x8f\x0b\xda\x5d\x7a\xfb\x1c\xaa\xaf\x97\xf5\x2e\xb9\xed\x2e\x2f\xfe\xdd\xd3\xc7\xfd\x3d\xda\x96\xab\x5f\xdd\xfa\x40\xf3\x3c\x78\xdb\xd7\xc1\xd1\x42\x25\xa3\x6b\xd4\xba\xa1\x71\xb9\x49\x9e\x32\xbf\xd1\xd0\x9a\xa3\xa2\x6d\x5f\x31\x1c\xec\x50\xf1\xf4\xd5\xd2\x9e\x9e\xcd\x2b\x1d\xec\xcb\xdc\x81\xf4\xf0\xb9\xeb\x38\x9d\xf1\xe0\xba\x1e\xed\xd2\x3a\xd5\xaf\x55\xed\xe5\x2c\xe3\x40\xff\x06\xaa\x35\x7c\x1e\xb5\x7a\xda\x97\x1e\x7a\xa9\x9d\xea\xa3\xa1\xdc\xf5\x0a\xc4\xfa\x1e\xf0\x76\xf9\x7b\x60\xe9\x58\x66\xd7\x71\xb5\xf5\xac\x46\x07\x98\xf0\xc1\x5b\x96\x74\x4e\xf5\xf8\x93\x63\xd2\x3b\x55\xdf\xa4\xfb\x09\xc1\x9e\x94\x5b\xab\x6f\xe9\xd9\xb3\x07\xe8\xdd\x67\xa7\xff\xac\x2c\x6b\xa8\x5d\xf7\x5a\x81\x9e\x6c\x60\x67\x76\xbc\x2c\xf6\xcc\x47\x17\x15\x3f\xd1\xf7\xeb\xed\xe0\x18\xed\xd3\x3d\xde\xe3\x65\xbb\x04\x97\x73\x9f\x77\x7a\xef\xab\xe9\x8b\xed\xe1\x28\xd5\x93\x93\xad\xf7\x4a\x27\x3a\xba\x1c\xb9\xde\x49\xae\x8d\xc8\xa7\xde\xee\x23\x7d\x72\xd0\x3c\xd7\x92\xb7\x88\xfb\x6d\x0c\x3b\xa4\x2f\x19\xe5\x0f\x93\xeb\x0d\x9c\xe1\x3b\xf0\x4d\xf4\xd0\x6d\x39\x7d\xff\x05\xed\x6d\xe1\x74\xf7\x3d\x2f\x9c\xcf\xcc\x12\x7a\x2e\x5c\x1f\x9e\x27\xff\xad\x36\x4e\x72\xb2\x55\xf7\x7c\x26\x06\x43\x3d\x69\x39\x63\xf7\x26\xdc\xec\x6b\xec\x24\x5b\xfb\x5e\x3a\x9f\xbf\xd5\xd2\xf5\xcb\x78\x5a\x35\x70\x92\x8f\x83\x7b\x0c\xbb\xa4\xd7\xe3\xed\x97\xb8\xb6\x97\xfa\xde\x65\xc7\x67\x1d\x7c\x97\xe8\xee\xc4\xd5\x27\x0f\x3f\xd6\xc4\x39\x3c\x9c\x98\x4d\x1f\x6d\xcc\xbf\xe1\xeb\x23\xe1\xb3\xfa\x7e\x7a\x10\xdb\x5e\xe2\x7c\x85\xd9\x7c\xa4\x7f\xf1\x02\x6b\x3e\x89\x5b\x0f\xe4\xab\x7d\x9d\x67\xc3\x71\x3a\x17\x4b\xf9\x08\xcd\x93\x53\x84\x7f\xfd\xcb\xd2\x23\xd5\xea\xba\x81\x3f\xfe\xcf\xff\x09\x7c\x73\x9d\xae\xb5\x75\x6a\xf0\xed\xc7\x8f\x91\x9e\x8d\xfe\xfd\xef\xef\x81\xc3\x15\x4d\xc7\x3a\xaf\xe2\x62\x07\xf4\x70\x55\xc3\x19\x37\x9a\xa3\xb3\x9a\xdf\xa9\x7a\xbc\x03\x3b\x55\x3d\x5d\xf8\x77\xa0\x9a\x88\x16\xa2\x0b\x23\x0b\xfc\x1d\xc0\xf8\xd8\xae\xf9\xfb\xec\x7b\xf7\xf1\x79\xb1\xb0\x59\x6f\x9f\x3c\xdb\x5b\x3b\xe4\xb1\x07\x7f\x36\xc9\x2d\x7d\x6a\x4b\xfc\x50\x4f\x02\xb1\x5c\x21\x9a\x8c\x67\x17\x1b\xe2\x9e\x1a\xff\x0e\x14\xa2\xb1\x68\x21\x9a\x0d\x47\x8b\x1f\xa6\xbb\x27\xce\x0f\x0e\x4a\x62\xb9\xa0\xfb\xe9\x72\xd8\xee\xc7\x3e\x29\xac\xd6\xca\x7b\x65\x30\xdf\xc2\xff\xbc\x04\xd6\xab\xda\x7f\x82\x39\x1c\xe8\xcc\xae\x2c\x3e\x56\xf2\xd9\x28\xbc\x0b\xfd\x7f\x82\x40\x0e\x9b\xc6\x87\x9d\x94\x73\xad\xe3\xd1\x71\x47\x8d\xa1\x2e\xe6\xd3\x01\x4b\x8d\xd4\xbb\x89\x05\xac\x71\x6f\x10\x30\x9d\xde\xa0\xab\x47\x7a\xce\xc3\xff\x1f\x00\x00\xff\xff\xc2\xe7\xcc\xd6\xfa\xaf\x01\x00") + +func order_books_310HorizonSqlBytes() ([]byte, error) { + return bindataRead( + _order_books_310HorizonSql, + "order_books_310-horizon.sql", + ) +} + +func order_books_310HorizonSql() (*asset, error) { + bytes, err := order_books_310HorizonSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "order_books_310-horizon.sql", size: 110586, mode: os.FileMode(420), modTime: time.Unix(1508958253, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _pathed_paymentCoreSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x69\x93\xea\x36\xf7\x2f\xfa\x3e\x9f\x82\xca\x9b\x9d\x14\x3b\x4f\xcb\x96\x65\xd9\xc9\xcd\xbf\xca\x60\xcc\x8c\x31\x83\x19\x6e\xdd\xda\x25\x4b\xb2\x31\x83\x0d\x1e\x98\x4e\x9d\xef\x7e\x8b\xa1\x1b\xe8\xa6\x67\x3a\xc9\x39\x4f\xa8\x64\x77\x37\x5e\xac\xe1\xa7\xb5\x96\x96\x96\x64\x13\xa5\x41\xe0\x07\x5e\x26\xe2\xd4\x9f\xf3\x9f\x0e\x3f\x32\xae\x1f\xf8\xf1\x88\xb3\xef\x19\x3a\x0d\xe3\xdd\xf5\x29\x67\x1e\x8f\x7e\x3a\xfc\xd8\xbf\xcb\xd9\x4f\xbf\xfd\xf6\xd3\x6f\xbf\x65\x9a\x61\x9c\x78\x11\x6f\x5b\xb5\x0c\x23\x09\x71\x48\xcc\x33\x2c\x9d\xcd\x77\x97\x77\xd7\xf5\x74\x36\xe7\x2c\xe3\x46\xe1\xec\x44\xb0\xe4\x51\xec\x87\x41\x46\xfd\x8f\xfc\x1f\x74\x46\xe5\x6c\x32\x73\xef\xc7\xee\xe3\x8f\x48\x7e\x6a\x17\x3a\x99\x38\x21\x09\x9f\xf1\x20\xf9\x91\xf8\x33\x1e\xa6\x49\xe6\xcf\x0c\xf8\x63\x7f\x69\x1a\xd2\xc9\xd3\x77\x7d\x36\xe5\x3f\xfc\xe0\x47\x12\x91\x20\x26\x34\xf1\xc3\xe0\x47\xcc\xe3\x1d\xdf\xa7\xc4\x74\xea\xef\x58\xf3\x80\x86\x6c\x67\xf3\x9f\x99\x6f\xdd\x8e\xa1\x7c\xfb\xe3\x5e\x76\xc0\x48\xc4\x7e\xd0\x30\x70\xc3\x68\xe6\x07\xde\x8f\x38\x89\xfc\xc0\x8b\x33\x7f\x66\xc2\xe0\xc8\x63\xc4\xe9\xe4\x87\x9b\x06\x07\x59\x4e\xc8\x7c\xbe\xbb\xee\x92\x69\xcc\x2f\xc4\xcc\xfc\xe0\xc7\x8c\xc7\x31\xf1\xf6\x04\x2b\x12\xed\x06\xe2\x40\x12\x85\xab\x1f\x31\xa7\x69\xe4\x27\x9b\x1d\x73\xd7\xfd\xe3\x08\x00\x27\x11\x1d\xfd\x98\x93\x64\x94\xf9\x33\x33\x4f\x9d\xa9\x4f\xbf\xef\x10\xa3\x24\x21\xd3\xd0\xfb\xe3\xa7\x9f\xf4\x96\xd9\xcc\x94\x1b\x7a\xa1\x9f\x29\x1b\x99\x42\xbf\xdc\xee\xb4\x8f\x94\xff\x89\x7d\x2f\xe0\x51\x4c\x28\x0d\xd3\x20\xf9\xe3\x65\x5a\x3e\x9d\xfa\x81\xe7\xc7\x71\xca\x23\x3f\x60\x7c\xfd\x0a\x3d\x9d\x2f\xd2\x30\x4a\x67\xb1\xb3\x89\xf9\xe2\x55\x62\x1e\x2c\xdf\x42\x39\x8f\x7c\xca\xdf\x20\xfe\xe0\x99\x6f\xe1\x38\xf2\xe3\xc4\xe5\xfc\x8d\x94\x6f\x20\x73\xd2\xcd\x7b\x80\x3a\xa2\xef\x90\x29\x09\x28\x8f\xff\xf8\x49\xab\x75\x0a\xad\x4c\x47\xcb\xd5\x0a\x67\xd4\x66\xa3\x36\xb8\xff\x48\xb2\xde\xa9\x12\x46\x9b\xcc\x9e\x71\xde\x6c\xb4\x3b\x2d\xad\xdc\xe8\x9c\xd1\x3f\xd0\xfc\x98\x4f\xf8\xe6\x6d\x5c\x5d\xce\xdf\xc2\xf8\x44\xf6\x76\xde\x51\x1a\x27\x53\x3f\xe0\xf1\x4b\x9c\x1f\x88\xde\xcc\x77\xa7\x05\xdf\xa7\x81\x17\xf8\x9e\x88\xde\xce\xf7\x10\x19\x2f\x31\x3d\x50\xbc\x9d\xe3\x43\x3c\xbc\xc4\xf4\x81\xe8\xcd\x7c\xe7\xa9\x13\xa7\xce\x0b\x3c\x0f\x04\xef\xe1\x37\xf5\xe3\xd1\x22\xe5\xe9\x4b\x98\x9e\x93\xbd\x9d\x37\x7f\x19\xd3\xfd\xf5\x37\x73\x0b\x5d\xf7\x65\x76\x07\x82\x37\xf3\x3b\xa4\x8c\x11\x27\xec\x65\xb6\x17\x74\x5f\xcc\xfd\x98\xc6\xf8\xe2\xc7\x1b\xc5\x38\x24\x78\x81\xb9\x43\x82\x37\x2b\x7c\xcc\x4b\x2f\xe9\x7a\x4f\xf2\x5e\x9e\xbb\x69\xff\x75\xb6\x3b\xaa\x23\xe7\x3d\xed\x63\xc6\x8f\x93\xe1\x6b\x64\xa7\xb4\xf5\x0a\xe5\x43\x1a\x7a\x99\xee\x94\x56\x5e\xa1\x3b\x64\x8a\x57\x88\x1e\x22\xff\x55\xba\x37\x19\x71\x88\xfa\x57\x69\x1e\x62\xf8\x15\x4a\xfe\xaa\x01\x87\x60\x7b\x99\xe6\xc2\xb7\x5f\x26\x75\x48\xf0\x32\xc1\xbd\xef\xbd\x89\x6a\xe7\x4a\x47\xc2\x42\xbf\x53\x68\xb4\xcb\x66\xe3\x9c\x78\x3a\xf7\xe2\xc5\xf4\x48\xd1\xce\x97\x0a\x75\xed\x09\xaf\x3f\x8e\xf5\x6d\x83\xcc\xf8\xef\xf7\xef\x65\x3a\x9b\x39\xff\xfd\xf8\x91\x3f\x32\x6d\x3a\xe2\x33\xf2\x7b\xe6\xb7\x3f\x32\xe6\x2a\xe0\xd1\xef\x99\xdf\xf6\x65\x6f\xbe\x55\xd0\x3a\x85\x7b\xce\xf7\xfc\x7e\xba\xe0\x78\x79\xf1\xc8\x38\x6f\xd6\xeb\x85\x46\xe7\x05\xce\x07\x82\x8c\xd9\xb8\x64\x90\x29\xb7\x33\xdf\xee\x6b\xd4\xfb\xf7\xe2\x3d\x93\x6f\x8f\x25\xdf\x9b\x7f\x94\xf9\x80\xd0\xab\xf6\x5c\x60\xd9\x30\x3b\x8f\xf0\xcc\xf4\xca\x9d\xd2\x83\x5a\xe7\x45\xe9\x85\xf8\x13\x97\x47\x8a\xbc\xc7\xf8\x27\x4c\xf6\x00\x34\x6b\x77\x73\x6f\xb7\x12\x99\x47\x21\xe5\x2c\x8d\xc8\x34\x33\x25\x81\x97\x12\x8f\xef\x61\x78\x63\x11\xbd\x23\x63\xdc\x25\xe9\x34\xf9\x91\x10\x67\xca\xe3\x39\xa1\x7c\xb7\x22\xf8\xf6\xe8\xea\xca\x4f\x46\x3f\x42\x9f\x9d\x15\xf9\x17\xc6\x9e\x3b\xe4\xd1\xcc\xbd\xeb\x9e\x8c\xbc\x77\x80\x6b\x80\x1f\xbc\xfc\x3c\x8b\xfe\xf2\x53\x26\x93\xb9\x7f\xc7\x67\x19\x3a\x22\x11\xa1\x09\x8f\x32\x4b\x12\xed\xea\xd0\x5f\x90\xfc\xeb\x7e\x6c\x1a\xdd\x5a\xed\xfb\x9e\x7a\xf7\xc1\x80\xcc\xf8\x15\x62\x59\xba\x46\xbc\x24\xd3\xf4\x1a\xb5\x20\x88\x8f\xc9\xa7\x24\x4e\x66\x21\xf3\x5d\x9f\xb3\x8c\x1f\x24\x7c\xb7\x3e\xd4\x0b\x86\xd6\xad\x75\x32\xe0\x81\xf8\xa7\x5f\x1f\x7b\xc1\x43\x3c\x7f\x12\x95\xf8\x43\x90\x1c\xab\xef\x8c\xe3\x7b\x7e\x90\x3c\xba\x18\xf3\x45\x90\xce\xae\x5f\x0b\xd2\x59\x9c\x3a\x3c\x48\xa2\xdd\xc2\xee\xde\xe0\x4b\x1a\x3f\x70\xa7\x64\xb7\xfe\x63\x3c\x4e\xae\xab\x73\x20\x1c\x85\x33\xce\xc2\x19\xf1\x83\x2b\x54\xf0\x09\xd6\xc9\x28\xe2\xf1\x28\x9c\xb2\x38\x93\xf0\xf5\x63\xcd\xdc\x29\xf1\x9e\xd3\xe8\xea\x28\x5d\x92\x9c\xcd\xcc\x0f\xd3\xfc\x11\xa5\x1f\xfb\x55\x6d\x26\x5f\x2a\xe4\xab\x99\x5f\x7e\xb9\xc7\xee\x7f\xfe\xcc\x80\x5f\x7f\x7d\xfe\xd3\x17\x50\x3d\xe2\x71\x09\xe3\x81\xd3\x53\x1f\xd9\x4d\x0a\x1f\x75\x8f\x5d\x61\x74\xf0\x8c\x20\x64\xfc\xdc\x2d\x2e\xdc\xe1\xa9\xd0\xcb\x49\xeb\xa3\xe2\x2f\xcb\xbf\x83\x22\xc7\xf7\x48\x3c\x3a\x53\xe6\x69\x04\xce\x23\xbe\x7c\x95\xc8\x49\xe9\x84\x27\x53\x3f\x4e\x5e\x25\x7d\xa8\x29\xef\x47\xfe\xf0\xf6\xbe\x89\x93\xf8\xb3\x67\x82\x60\x9f\x6d\xae\xb8\xd9\xd9\x48\x5f\x96\xae\x0f\xfc\x1e\x0d\xf5\x49\xce\x33\x0e\xf3\x5c\x05\x7c\xc9\xe6\x64\xc5\x73\xde\x72\xac\x48\x3e\x3a\x62\xc7\xe5\xc5\x2f\xc7\x14\x30\x9d\xf2\xe8\x8d\xc9\x64\xff\x49\x9f\x3d\x97\x4c\xf6\x7d\x14\x12\xc7\x3c\x49\x36\x73\xfe\x4c\xf8\x9d\x93\xd1\x90\x5d\xcd\xbe\xe2\xaf\x17\xb4\x87\x8e\xc3\x4b\xf9\xe5\xd0\x99\x78\x4d\xf4\x19\xd5\x6b\x92\xcf\x5b\x1d\x2f\x09\x26\xb3\x5d\x0a\xb8\x0e\xc8\xbe\xa3\x13\x3c\xa3\xcb\xfe\xe2\x73\x29\x6a\x7f\x31\xc3\xc2\xd4\x99\xf2\x5d\x94\x50\x7f\xdf\x20\xfc\xaa\x34\x78\x5c\x4e\x1e\x6c\x79\xe4\x8d\x47\x03\x9f\xf1\xe8\xe3\x27\x8f\x7e\xf1\xe8\xa3\xf7\xde\xf2\x9c\x1b\x1f\x6a\xef\x8f\x7a\xf1\x61\xc9\x7d\x70\x62\x7f\x7e\x6d\x2c\xd1\x93\x7c\x13\x46\xc9\x0b\x53\xf7\x71\xde\xe3\xeb\x84\x24\x09\x9f\xcd\x93\xcc\x2e\x98\xe3\x84\xcc\xe6\x99\x5d\xf5\x13\xa6\x87\x77\x32\xdb\x30\xe0\x4f\x67\x4b\x97\xf8\xd3\x34\x3a\x9b\x2b\x9f\x93\x70\x86\xdf\xa1\x2f\x70\xf6\xe1\xa7\xb3\xc7\x03\xdb\x67\x86\xe0\xd8\x5a\x08\xa3\xc7\x23\xf7\xcb\xde\xdc\xff\xc9\x80\x5f\x33\x5a\x43\xcf\x1c\xfe\xfc\x7f\xfe\xcc\xc8\x08\x41\xf4\xeb\xd5\x01\x39\x5f\x36\x7d\x78\x5c\xce\xdb\x2c\xe7\xd3\xc1\x73\xf9\x60\xdf\xe3\xda\xe5\xdf\xab\x0a\xed\xd6\x7a\x9f\x50\x25\x4e\x9d\xa3\x12\x11\x8f\x2f\xe6\xc6\xa7\x55\xc7\x2e\x68\x22\x4e\x1e\x02\xe6\xa9\x3e\x67\x6b\xd4\x8f\xea\x74\x62\xf1\x96\x49\xfb\x99\x79\xed\xd1\x75\x1e\x2c\xf9\x34\x9c\xf3\x57\x66\xb1\x93\xe8\x4f\xcc\x3d\x67\xcb\xf9\x4f\x40\x70\xdf\x30\x3c\x40\xb0\x88\xf9\x1b\x26\x77\x12\x27\xaf\x01\xb1\x63\xf4\x3a\x08\xf7\x8d\xc8\x0b\x8e\x8f\x81\xb8\x90\xf6\x2c\x18\xc7\x06\xc8\x87\x91\x38\x36\x63\x3f\x52\xd8\x1f\xb8\x4f\xf8\xe6\x4d\xd4\x2b\xee\x7b\xa3\xe4\x09\x6c\x57\x4c\x3a\xf5\x7e\x3e\x6c\xd5\xa9\x75\xfd\xcb\x29\xc4\x2f\xd7\x65\x57\xc2\xef\xa5\x44\x70\xd6\xb9\xfa\xa8\x56\x67\x8d\xfa\x8f\xc0\xfd\x5a\x6d\xf1\x52\xa9\x70\x8d\xd5\xf3\x05\xc8\xe3\xb5\xd0\xd4\x9f\xf9\xcf\x54\x18\x2f\x2e\xee\x6e\x57\x1f\x9c\x6d\x5f\x7c\x68\xa1\x74\xf6\xf9\x83\x35\x8f\x3e\x7e\x34\xf1\x7f\xae\x07\xd9\x45\x7f\xf3\xc3\xa3\x7f\xbe\x05\x74\x18\xff\x64\x7d\x91\x76\xdf\xb0\x9c\x78\x3c\x32\xeb\xfd\x26\xd8\xb3\x57\xe9\x88\x04\x1e\xbf\xba\x84\x3d\x07\xe7\x7c\xd7\xe9\xe3\x79\xf9\xd4\x2c\xfe\x38\x44\x7f\x31\x3e\x4e\xc8\x36\xd7\xc0\x49\xd6\x11\x8f\xd3\xe9\xd5\x4c\x9e\xac\x67\xfc\xd5\xe5\xda\x69\x87\xf0\x23\x78\xea\xbb\xf5\xa0\x1b\x46\xaf\xf4\xb5\x32\xba\xd6\xd1\x5e\xc1\xf7\x65\x96\xf1\xbb\xf9\x95\x1b\xed\x42\xab\x93\x29\x37\x3a\xe6\xa9\x2b\x64\x6b\xb5\x6e\xa1\x9d\xf9\xe5\x5b\x31\xd7\x6a\x0e\x4a\xe5\x9a\x98\x2f\x43\xa3\x61\x49\xb9\x7e\xcd\xa8\x37\xf4\x9a\x51\xe9\x36\x9a\x5d\xb1\x34\x80\xc3\xba\xd1\x2e\x99\x8d\x6e\xbe\x60\x6a\xed\x1e\xb6\xf2\xd8\xec\x8b\xa5\x6f\xdf\x33\xea\xf1\x25\x1d\x7e\x20\x00\xbe\x67\xd0\xf7\x0c\xf8\x7e\x00\x38\xf3\xed\xdb\xf7\xcc\x37\xcd\xd2\x34\x4d\xfb\xf3\xcf\x6f\xfb\x0b\xe2\xaf\x7f\xbc\xa6\x8f\x86\x7a\xb9\xe6\x40\x43\x03\xa9\xa7\x15\x4a\xfd\x5e\x4b\xec\x56\x4d\xb1\x6b\x4a\xb9\x6e\xb1\xd4\xb5\xb0\x54\xe8\x36\xab\x66\x43\xb4\x4a\xb6\xd4\x6b\x95\xcc\x72\xab\x51\xad\x96\xc4\x93\x3e\x3b\x35\x14\xa4\xa8\x2a\x94\x90\x0a\xbf\x67\x84\x17\xf4\x81\xaf\xeb\x93\x17\xa1\x65\x88\xa5\x6e\x01\x89\x5a\xbd\xdf\x35\xba\x25\xa8\x0d\x2a\x5a\xbf\x5f\xec\xf7\x6d\xd1\x2e\xf5\x07\x83\x96\x5c\x18\xf4\x0b\x9d\x66\x55\xef\x0f\xdb\x5a\x4f\xc6\x7d\x53\x7a\xd0\x47\xb9\xd0\x47\x7a\x19\x1f\xe9\x0d\xfa\x58\xcd\x41\xb1\x24\x55\x11\xee\xe7\xf4\x42\xa3\x5a\xed\x23\x54\xd5\x3b\x3d\xb3\x53\x45\x3d\xbd\xd7\xb2\xcc\x92\x58\x2b\x15\xf4\x3e\x2c\x54\xed\xb2\xd5\xaa\xd5\x0b\xed\x62\xae\xf8\x65\xfa\xe4\xfa\x45\xab\xd2\xb3\x6b\x3d\x73\x50\x32\x6a\x76\xa7\xda\xb3\x91\x51\x2c\x69\xb0\xd6\x18\x0c\xc4\x8a\x55\xad\x63\x53\xab\x68\xdd\x82\x65\x74\xe5\x5a\x33\xdf\x2e\x18\x76\xdf\x6c\x3c\xe8\x83\x2f\xf4\x41\xdf\x33\xf0\x05\x7d\xd0\x1b\xf0\xe9\x57\x8b\x72\xab\x21\x99\x8d\x72\xa1\x99\xaf\x37\x8c\x1c\x86\xa2\x26\x41\x79\x88\x9a\x0d\xbd\xdd\xaa\x15\x7b\x55\x5c\xcc\xd5\xf2\x75\xab\x56\x36\x4c\xa9\x8d\x0b\x83\x9e\xdd\x7d\x1e\x9f\x97\xfc\x47\x7e\x3e\x05\x3c\xee\xce\x7d\x22\xf4\x9f\xef\xb9\xbd\x37\xfe\x2f\xfb\x6e\x0f\xa0\xc9\x90\xa9\x8a\x8b\xa0\xcc\xb9\xac\x30\xc1\x11\xb1\x83\x1c\x45\x75\x45\x48\x5c\x04\x05\xc1\xc1\x48\x56\x89\x28\xb9\xc4\x15\x24\x00\x09\x03\x0e\x12\x1d\x19\x42\x07\x60\x87\xab\xea\x0e\x18\xf0\xc9\xd7\x8e\x07\xc2\x22\x11\x39\x14\x5d\x57\x94\x14\x02\xb0\x03\x38\x06\x2e\x13\x5c\x99\x41\x41\xa1\x82\x4b\x28\x13\x81\x23\x53\x0a\x14\x0a\x21\x43\x18\x23\x11\xa9\x8a\xac\x08\x22\x22\x82\xfc\x6d\x3f\x5a\x60\x37\x4c\xff\xd8\x57\xae\x5f\xf5\xa5\xcd\xdd\xa6\x5d\xcd\x61\x3d\xd0\xd5\x92\x08\xd6\xe3\x5c\x36\x06\x5e\x12\xaf\xca\xab\xad\xd0\x67\xed\xde\x80\xe4\x2a\xc4\xf0\x76\xf4\x85\x86\x54\x23\xdb\xb9\x68\xbd\xca\x79\xa8\xf5\x05\x69\x4f\x96\x9b\xfc\x05\x86\xdc\xf4\xf5\xed\x51\x60\x3f\xe3\xa8\x88\x01\x2c\x62\x82\x09\x74\xb0\x0a\x04\x20\x4b\x94\x13\xee\x62\xa8\x60\x09\x71\x05\x43\x2e\x3a\xae\x4c\x38\x01\x90\x89\x8a\x24\x13\x42\x30\x60\x48\xa6\x0e\x14\x38\x41\x64\xe7\x64\xb7\x70\x76\x51\x65\x04\xa8\xa2\xc2\x54\x22\x03\xae\xb8\xa2\xe0\x30\xa4\x30\x15\x13\xa0\x00\x81\x2b\x10\xaa\x4c\x22\x54\x52\x05\x89\xb8\x32\x60\xa2\x02\x09\x17\x5d\xac\x8a\xd4\x15\x45\xc4\xbf\x7d\xcf\x88\xdf\x33\x02\x02\x8a\x8a\x14\x51\xbe\xf7\xd8\x7c\xb1\x39\x1c\x0b\x8d\x14\x85\xc0\xa9\xe0\x9e\x14\x6c\xcc\x65\x77\x5d\x84\xf6\x3c\x9c\x64\x97\x86\x66\x26\x79\xa1\x2a\xd6\x71\x0e\xcb\xc3\x51\xe0\x3a\x05\x7d\x5e\x6a\x0e\x98\x84\x02\x8b\x76\x70\x7f\xe2\x96\xeb\xab\x76\x5f\xf5\x0c\x5d\xcd\xba\x3d\x92\x60\x41\xb6\xca\x3d\xba\x47\xb8\xe7\xea\x5e\x63\xff\x5b\xf9\xe1\x9f\x43\x32\xf3\x4e\x7f\xaf\x34\xad\xb2\x3e\x8c\x88\xa5\xce\x94\x5a\xbb\xa8\x38\xa8\x07\x9c\x74\x5d\x48\x16\x71\x62\x5b\x5b\x5c\xb6\xef\x4a\x91\x3e\x2b\x16\x12\xa6\x49\xb3\x7c\x41\xef\xaf\xe6\xa2\x37\x09\x45\x32\x30\xc7\x9b\xa2\xda\x6b\x4c\xe5\xbc\x56\x0a\xeb\x48\xa8\xae\x2b\x46\x55\xf5\x40\x68\xa6\x35\x38\x89\x15\xbf\x7f\x10\x75\xc5\xa3\x4b\xe0\x9a\x57\x3c\x78\x74\x9e\xbe\xee\xfe\xff\xb0\xd7\x1b\x3d\x5a\xe0\x88\x8a\x54\x02\x22\x26\x8a\x24\x01\xc7\x51\x28\x53\x00\x43\x58\x75\x45\x8a\x65\xe4\x0a\xaa\x84\x10\x01\x5c\x41\x0e\x75\x11\x76\x1c\x07\x63\x4a\x05\xd7\xc1\x00\x48\xb2\xb4\x4f\x9b\x37\x88\x0a\x07\x0b\x92\x2c\x73\x95\x53\x2a\x3b\x12\xa0\x80\xc8\x58\x45\xae\xa8\x38\x90\xaa\x0c\x11\x24\x70\x22\x39\x5c\x90\x14\xec\x30\x2c\x4b\x10\x39\x9c\x09\x44\x41\x40\xc4\x2e\x56\x95\x6f\xfb\x89\xfb\xc1\xa3\x85\x7b\x8f\x36\x40\xa9\x22\xf3\x71\x82\x34\x6b\x58\x97\x53\x75\x3b\x02\xfd\x90\x66\xab\x77\x24\x0d\x75\x10\xb6\x16\x8b\x40\xb7\x9d\x5a\x9d\xcf\xc9\xb6\x6a\xd6\x27\xad\x65\x48\x74\x6f\x1b\x97\x88\x58\x9a\x8d\x49\x75\x28\x49\x59\x19\x4d\xc6\x77\xce\x70\x4b\x5a\xcc\x62\x4e\x04\xb3\x07\x67\xdd\x7b\xf4\x99\x5f\xac\x4b\x20\xf6\xe4\xa5\xa9\xd5\x83\x0d\x1e\x38\xf6\x9d\xd1\x8a\x29\xdd\x8e\x04\xa5\x68\x5b\x2d\x35\xac\x14\x07\x7d\x6b\xa6\x73\xb9\x65\x42\xa3\xe8\xcc\x71\x9d\x00\x5d\x9b\x07\x53\xb7\x5a\x6b\x56\x04\xd2\xe5\xf3\x9a\xd4\x1d\x61\x41\xb4\x84\x65\x52\x0c\xbb\x79\x17\xce\xf6\x9c\xeb\x57\x3c\xd6\x2c\x5c\x1b\xf5\xff\x02\x8f\x75\xb9\xe4\xba\x88\x38\x8a\x08\x04\x20\x71\x44\x64\xe0\x50\x4e\x45\xa8\x30\xec\x08\x80\x50\x4c\x20\xc7\x00\x43\x20\x13\x59\x62\x8c\x33\x19\x29\x98\x89\xdc\x85\x00\xab\x84\xed\xbc\xed\x16\x5e\x2f\xaa\xae\x20\xb8\x22\xc3\x5c\x75\x01\xe2\x14\x39\x58\x51\x00\xc5\x00\x3b\x44\x55\x1c\x97\x89\x82\xab\x00\x51\x80\x8e\x04\x14\x47\x24\x22\xc1\x8a\xa8\x62\xc1\x01\x54\x15\x65\x19\x7e\xfb\x9e\x91\xce\x3c\x56\xbc\xf7\xd8\x1c\xa2\xb5\x82\x16\x2c\x0a\x56\x2d\xad\x8b\x9a\xd0\x0f\x36\x6b\xb1\xbf\x9e\x1a\x3d\x4f\x36\x96\x4d\x1b\xa7\xd0\xad\x97\x30\xd5\x5a\x93\x5c\xb5\x31\x20\xcd\xea\x40\xf2\xd7\x00\x35\xab\x4a\xbb\x86\xed\x51\xb8\xa9\x25\x9d\x69\x67\xbc\xed\x0c\x67\x63\xdb\xb6\x11\x60\x1c\x1c\x9c\x61\xef\xb1\xde\x09\xf1\x21\x9f\x96\x9b\x6d\x18\x5b\x23\x2d\x9f\x56\xcb\x93\x18\x4a\xb2\x80\x94\x16\xac\xa8\xc2\x24\x5a\x64\x2b\xca\x1d\x9f\x15\x27\xeb\x65\x3b\x9c\x2b\x2d\x25\x71\xe7\x8a\x81\x8d\x44\xf2\xea\xb4\x94\xce\xfd\x3b\x30\xca\x6a\xe5\x4e\xa2\xf9\x9b\x70\xc1\xf3\xd3\x75\x5c\x9f\xcc\x06\xab\x1d\x67\xeb\x8a\xc7\x76\xbb\xd7\x46\xfd\xbf\xc0\x63\x25\xcc\x1c\x07\x51\xc8\xa9\x02\x5d\x24\x53\x57\x94\x15\x4e\x45\x19\x39\x22\x77\x19\x27\xaa\xe8\x2a\x22\x27\x82\xaa\x8a\x88\x8a\x0c\xbb\xc0\x81\x02\xc6\x2a\xa0\x50\x15\x00\xda\x95\x95\x37\xf1\x7a\x51\xa4\x4c\xa6\x2e\x92\x14\x81\xcb\xa2\x2b\x60\xe4\x72\x28\x32\x8c\x39\xc1\x0a\x45\xce\xae\x8a\x00\x00\xba\xaa\x23\xb9\x2a\x43\x12\x95\x55\x19\x32\x49\x25\x12\x84\xa2\xcb\x77\x7a\xa0\x33\x8f\x85\xf7\x1e\xdb\x44\x4d\x95\xa4\x79\xcd\xea\x4c\xe7\xde\xd2\x5c\x8d\xc7\xfd\xd8\x8a\x4a\x61\x96\x96\xea\xc5\xf9\x04\x72\x61\x3a\x52\x6b\xcb\x7a\x69\x96\x40\xb1\x27\xb4\xbb\x6b\xdc\x50\xea\xc5\x40\xc5\x2d\x6c\x0a\xba\x33\xca\x39\x7a\x4b\xec\x7b\x22\xae\x84\x15\x73\x5e\xc4\x4b\x65\x5b\x3f\xa4\xb7\xbd\xc7\xae\x4e\x88\xd7\xfd\xb9\xed\xe9\x4e\xcd\xcc\xad\x5a\xe1\xb4\x94\x8b\x3b\xed\x78\xb6\x36\x1a\x5b\xde\xe9\x43\x8d\x2d\x86\xed\x7e\x02\x6b\xc5\xba\x31\xf3\xfc\x6d\x6f\x2b\xb4\x73\xc8\x57\xfa\xfd\x6c\x3d\x61\xd9\xb9\xb4\x76\xca\x0e\xd0\x9a\x28\x69\x06\x76\xa7\x38\x1d\x0b\x95\xb9\x5e\x5f\xa2\x7d\x44\x74\xaf\x78\xac\x2d\x3d\x1a\xf0\x9c\xf6\xdf\xe1\xb1\x58\xc0\x50\xa2\x40\xe2\x32\x13\x98\x23\x70\x42\x09\x20\x12\x52\x54\x8c\x55\x2a\x38\xcc\x05\x54\x86\xc0\xa5\x12\x54\xa1\x83\x14\x44\xa8\xca\x15\x55\x10\x24\x06\xb8\x42\xe0\xae\xbe\xbc\x89\xd7\x2b\x5c\x84\x5c\x52\x64\xc2\x30\x71\x25\x59\xe1\x12\x70\x88\x2c\x22\x0c\x00\x94\xb9\x2b\x12\x20\x50\x8c\x04\x01\x23\x49\x44\x8e\xe0\x50\x8a\x15\x19\x13\xe0\x02\x11\x8b\x90\xed\x2a\x0b\xf9\xcc\x63\xa5\x7b\x8f\x2d\xb8\x4e\x42\x9b\xb1\x77\x67\xc7\xca\x6c\x1c\x57\xa6\x71\x7a\xc7\x17\xed\x6c\x5e\x1e\xcd\xda\xfd\xbc\x70\x97\xdf\x1a\x70\x52\x37\x5b\xb9\xde\x5a\x70\xe6\xcd\x61\xbf\x32\x9e\xae\x3d\xc9\xdb\x82\x51\x69\x3c\x28\x6d\x05\x90\x0a\x9b\xf2\xaa\x2d\xad\x8d\x5e\xbe\x0b\xe9\x28\x10\xd3\x53\x55\x60\x9e\x21\xce\xc2\x79\x71\x31\xbc\x33\xbc\xad\xb2\xf6\x54\xc1\xcd\xaf\x3a\xf1\x72\x5d\x9e\xc5\x6a\x3a\xe9\x61\x98\x2f\xf1\x7c\x92\x4b\x1b\xb3\x46\xaf\x6a\x96\xb3\xed\x62\xd4\x8f\x00\x31\xad\xda\xdc\xb7\x57\x9a\x88\x37\x61\x6e\x2d\x14\xfa\x76\xbe\xb7\x5e\xd6\x79\x91\x7b\x4a\x9e\x8e\xc5\xbd\xc7\x0e\xae\x78\x6c\x9f\x3e\x1a\xf0\xff\x2b\x3c\xf6\x99\xbe\xc4\x95\x23\x25\xef\x6d\x48\x1c\x8f\x95\xdc\xa2\x9d\x24\xec\xff\xfb\x56\xe8\xb6\x76\x9e\xfb\x89\x3e\xd9\x8e\x4b\xb7\xad\x1f\xb8\x7c\xb8\xfb\x27\xdc\x37\x36\xee\x35\x13\x5e\xeb\x18\x3d\x3d\xda\xf0\x89\x9e\xd1\xb3\xdb\xf2\x9f\xe3\xf9\x78\x67\xfd\x13\xdc\x9e\xd9\x17\x7f\xaf\x07\x9d\xed\x8d\x9f\x35\x01\x8d\x81\x5c\xd2\xf4\x56\xa9\x57\x69\x4b\x28\x9f\xab\xb6\xb5\x72\xbe\xd3\x29\x1b\x85\x61\xa9\x39\x28\x55\x50\xa7\xd9\x6b\xf6\x06\x56\xad\x6c\xc3\x01\xae\x5b\xcd\x5e\xd5\x2a\xe8\xf2\x61\x59\x7e\x68\x1e\x95\xd3\x66\x49\x33\x2b\xb8\x32\xdd\x86\xde\x62\x92\xd3\xe6\x5b\xab\x3b\xeb\x2c\x57\xac\x39\x5c\xc6\x59\xb1\x5c\x6b\xf5\x79\x33\xf6\xb2\x9b\xf0\x14\x2c\xfb\x14\x94\xdf\xff\xba\x0b\xf4\x82\x5f\x64\x6a\x6c\x99\x13\xaa\x8e\xe0\x78\xc6\x72\xeb\x66\xc2\x5b\x8a\xb7\xcd\x55\x5c\x51\xeb\x36\x21\x52\x87\x0b\xb8\xec\xcf\xb5\xd1\x70\x3f\xc9\xe6\x86\x8a\xa9\x1d\x96\xc2\xde\xc3\x3f\xb9\x13\xd3\xfd\xdf\xba\xa6\x69\xc1\xd9\xea\x23\xd7\x11\x7b\x52\x0f\x58\x6a\xb9\x1d\xf1\x8a\xee\xe5\x8c\x49\xb5\x6d\x2f\xa4\xaa\xd6\xd7\x0d\x34\x68\x8a\x18\x86\xa5\xda\xc6\xeb\x68\xdb\xc1\x9e\x5d\xa1\xb1\x5d\x07\xca\xe2\x2e\xaa\x56\x3d\x7d\xbb\xd6\x1b\x73\x3e\xc0\xbe\x25\xd4\x3a\xc1\x30\x52\x03\xb9\x55\x72\xe2\x48\xce\x8f\xcd\x48\xdd\x2e\x6a\xb1\xa2\x4e\xb1\x2d\xb8\x46\xa9\xb6\xd2\xbc\xf2\x76\x05\xea\x89\x9b\x75\x67\x83\xb2\xd1\xce\xde\xd9\x9b\xe1\xd6\x5d\xd9\x71\xce\xfa\xf3\xcf\xc7\x93\xdb\x8d\x87\x06\x7e\x6a\x68\xea\x97\x43\xa3\xeb\xf5\x50\xda\xb4\x8a\xd9\x51\x68\xea\xe6\x8a\x45\x03\x4e\x1a\xe1\x3c\x18\x8f\x71\x34\x6b\x37\xd5\x24\x68\xcc\x0d\x21\x27\xa4\x4b\x57\xf2\x1e\x86\x46\x78\x94\x1c\xdf\x0d\xbd\xe4\xd8\x26\x2a\xe6\x7b\x61\x61\x00\xfd\xbb\x72\x77\x45\x4a\x93\xa0\xde\x5f\xbb\x76\xd0\x4e\x8a\xe3\xa2\x3f\x6f\x95\x67\xbd\x20\x57\x0d\xd9\xb0\x23\x2a\x7a\x09\xa2\x75\xb5\x3c\x6c\x91\x6d\xa9\x3c\xf0\x87\xb2\x57\x0a\x36\x73\x6e\x54\x96\x72\x39\xd1\xec\x78\x3e\x50\xfd\x8d\xfe\xf5\xd0\x4b\x9f\x82\xde\x7a\x04\xbd\x56\x08\x85\x51\xa8\xcc\xc7\x7e\xad\xd4\x99\x28\xd1\xba\xbc\x4c\x7a\xc5\x71\x39\x15\x4c\xdb\x6c\x36\x1a\x33\xd2\xb0\xed\x7e\xd0\x12\x70\x4b\x7b\x80\x5e\xfc\x2c\xf4\xd1\xc8\x69\xde\xf9\x9b\xd5\xe8\x2e\x49\x3c\xa5\x13\x65\xeb\xeb\x70\xe8\x8f\x2b\xac\x5a\x03\xe6\x6a\x80\x98\x5f\x96\xf4\x55\x65\x95\x54\xe4\xd5\x42\x28\xf7\x5b\x77\x24\x22\x8b\x7e\xa3\x83\xab\x05\xc3\x91\xc7\x2d\x4d\x85\x53\x24\x47\x1b\x5c\x08\x25\x47\x75\xf2\x50\x33\xf4\xd5\x97\x43\x8f\x3e\x05\x7d\xf7\xb1\xd7\xbb\x43\xc7\xae\x74\x4a\x31\x5c\xad\x88\x0b\x93\x52\x8c\xbb\x8d\xb4\x60\xc4\x8d\xd2\x90\xeb\x4e\x3c\xf3\x26\xf2\xc4\x49\xef\xb6\xf5\x95\xf5\x00\x3d\xfc\x2c\xf4\x65\x5d\x90\x31\x2e\x5a\x33\xd0\x11\xbd\x70\xb2\xda\xdc\x99\xc3\x35\x5d\x27\x5e\xbd\x61\xaa\x7e\x80\x95\x6d\x11\x14\xe6\xd1\x0c\x0e\x45\x77\xd0\xac\x4e\x03\x21\xc8\xdb\xf9\x7c\x54\xf2\xc5\x04\xcb\xab\x6d\x87\x58\x39\x12\x7a\xfd\x75\xa7\xb5\x9c\x1b\x6d\x48\x5c\x3f\xdc\x6f\xc2\x7c\x2d\xf4\xf2\xa7\xa0\x1f\x3c\x86\xbe\x64\xa7\x13\x75\x4a\x67\x66\xbf\xa8\xfb\x7a\xb3\x5d\xe0\x0d\xcf\x6d\xf6\xdb\xb8\x5f\x1e\xe7\x6a\xe3\x82\x3d\xa8\x74\xd8\xa6\xe8\x92\xb3\x84\xf3\x64\x01\xf4\x5e\xe8\x2b\x79\x17\x65\xe1\x7c\x22\x79\x66\x65\xd5\x9b\x96\xc7\x83\xda\xc6\x88\xda\x11\xe7\xf5\x41\xde\xb0\x4c\x6f\xbd\x35\x27\xfe\xb6\x6e\x0c\x0b\x75\x84\x16\x73\x50\x98\x2e\x14\xa5\x51\x0b\x99\xa2\x2c\x23\x96\x1a\x34\xc9\xa9\x13\xdc\xd5\xed\x60\x3c\x43\xf5\x71\x6f\xe1\x19\xda\x31\xe1\x3c\x3f\xb1\x5f\x3b\xed\xf5\x81\x89\xfd\xfe\xc4\xd7\x69\x25\xef\xca\xc8\x51\x90\x23\x49\x90\x89\x82\x48\x18\x17\x25\xa8\x00\x41\x90\x25\x51\x15\x91\x4c\x38\x20\x40\xc0\x80\x22\x8e\x14\xe8\xca\xdc\xc5\x04\x60\xd1\x15\x15\x01\x02\x08\x2f\x06\x75\xef\xdf\x87\x69\xd4\x97\x14\xaa\x49\x41\x3c\xeb\x9b\x7e\x7e\x61\x15\xf2\x41\x23\xd7\x1e\x9a\x77\x39\xa0\xce\xb2\x5b\x3c\xf0\x12\x83\x49\xd9\x8d\x8e\xab\x87\xe6\xcd\x4b\xc6\x5f\x39\xdd\xf5\x99\x22\xe9\xfa\xc9\xaa\x77\x63\x79\x3a\x5d\xf5\x80\xe5\xfd\xd3\x06\x0e\xb7\x41\x65\x9e\xbc\xf6\x9d\xe5\x27\x11\x76\x85\x91\x1b\x46\x94\xc7\x74\x1e\x06\x01\x5f\x27\x53\x92\x06\x74\xf4\x98\xd1\xfe\xe6\x9f\xb7\x30\x9b\x92\x38\x39\x3c\x40\xe1\x78\x00\xf4\x8a\x56\x9f\x5e\x1d\xbf\x41\x8f\x63\x1e\x21\x11\x1d\xf9\xcb\xe3\xc5\xc7\x7a\xfc\xaf\xfd\x19\x92\x9f\x8f\x8f\x62\xf8\xf9\xf7\x8c\x70\x38\x55\xf2\x73\xcc\xa3\x25\x8f\x7e\xfe\x3d\xf3\xf3\x12\xfc\x47\xfe\x0f\xfc\x4d\x96\x7f\xf3\x98\x2c\x23\x8c\xa8\xfb\xf3\x91\x88\xa6\x51\xc4\x83\xa4\xb6\x37\xf3\xe7\xdf\x33\xf2\xe5\xfb\xb9\xfd\x2d\x0c\xf1\xcf\xbf\x67\xfe\xdf\x9f\xee\x85\xfe\xaf\x9f\xce\x55\xd8\x53\xee\x84\x60\x15\xaa\x82\xe3\x42\xe8\x32\x44\xa0\x24\x48\x22\x44\x8a\xac\xaa\xc8\x55\x89\xcc\x18\x57\x24\x28\xca\xc0\x55\xa0\x0b\x25\x59\x95\x15\xae\x52\xe6\xa8\x2a\xc6\x2e\xe3\x40\x74\xc1\x51\xa3\x07\xbe\xbb\x61\xfc\xf9\xf7\x47\xd2\x0e\x86\xed\x70\xf8\xf9\xf7\x0c\xb8\xb8\xf4\xbf\x1f\x7d\x3e\x0e\xc8\x7c\xa7\x17\xa7\x82\xea\x8a\x8e\xc0\x64\x09\x71\x45\x61\xc0\x21\x48\x26\x2e\x60\xb2\x03\x5c\xe8\x8a\xc0\x75\x81\xcc\x04\x89\x63\x40\x54\x01\x38\x80\xcb\x00\xca\x5c\x74\x5c\x45\x26\x8a\x22\xfd\xfc\xd3\x15\x09\xcf\x61\x00\x5d\x2a\x02\x85\x52\x80\x91\xc0\x65\xc0\x55\x4a\xa9\x2a\x60\xa2\x4a\x04\x20\x01\xc8\xd4\x85\xa2\xaa\xc8\x90\x03\x02\x09\x70\x04\xe8\x2a\x8a\xab\xb8\x0a\x43\x90\x30\xf8\x01\x0c\x84\xef\x4f\xaf\x85\x69\x32\x4f\x93\xdb\xda\xfe\x12\xc2\x9f\xdd\x74\x7f\x0f\xc2\x9f\x96\xf5\x45\x5e\xf6\x2f\x06\xff\x62\xf0\x2f\x06\xff\x62\xf0\x2f\x06\xff\x62\xf0\x2f\x06\xff\x62\xf0\x85\x18\xec\x7f\xfb\xff\x7e\xfa\xdf\x6f\x5d\xc8\xc4\x74\xbe\xbf\x51\xf8\xda\xeb\xdb\xfd\x3a\x74\xbf\xa4\xcc\xd7\xc6\xeb\x95\xee\xf3\xcd\x90\xca\xe5\xea\x5c\xb3\xaa\x14\x18\x95\x09\x56\x4a\x1d\xd1\xc1\xcd\xc4\xcf\x03\x1b\x8e\x71\xb9\x19\x2f\x4e\xcd\x80\xe2\xfe\x5f\xa0\x4e\x53\x23\x29\x34\xdb\x85\x05\xf4\x2d\x49\x6b\x0d\xf3\x93\x29\x49\xf3\x9e\xb1\x5a\xf3\x9e\xae\xa6\xaa\x9c\xdb\x28\x61\x61\x55\x17\x6f\xdd\x8c\xd8\xf7\x55\xeb\xac\x27\x77\x44\x7b\x33\x40\x74\x60\x96\xeb\x6a\xb9\x25\x89\x39\x45\x65\xb5\x84\xfa\xf5\x42\x5a\x6f\xd9\xde\xb4\x01\xcb\x43\x35\xf2\xf7\x9f\x32\x82\x95\xa4\x7b\x97\x9c\x0a\xfa\x72\xe0\x2c\xc6\x56\xa2\x14\x64\xb6\x52\x23\xb5\xb5\xad\x9b\xa9\xe0\xaf\xca\xbd\x10\xea\x13\xb1\x1d\xf3\xa9\xb9\xd0\x07\xb9\x2d\x66\x3e\x89\x70\x39\x06\xf6\x46\x5a\x2c\xd4\xc4\xf5\xbb\x69\xae\xdd\x2d\x94\xa4\x49\x67\x38\xaf\x96\xa7\x14\xa5\x50\x9d\x03\x53\x0f\xbb\xe5\x7f\x9b\x37\xd7\x9a\x37\xfb\x41\x28\x89\xb8\xaf\xe3\x72\x53\x70\x9a\x95\x10\xe7\x87\x4e\x6d\x09\x17\x93\xa5\x97\x86\xc3\xc9\x74\x95\xb8\xab\x78\xcd\x90\xae\x4f\x2c\xdb\x3b\xf5\x49\xa2\x45\x43\xae\x71\x93\x78\xe3\x75\x9d\x74\x9b\xaa\x9c\xdb\xba\xb1\xca\x01\x0d\xa3\xc6\xb0\xbf\xcd\xf5\x2a\x13\x23\xac\xe2\xc9\x72\xb2\x3a\x9d\x42\x3d\x3b\x5e\x78\x36\xe0\xa7\x5f\xf7\xd7\x0d\xbb\x7b\x3c\x23\xa3\xd5\x7a\x92\x01\xf8\xc8\x94\xb5\x8d\x9a\x07\xcd\xb8\x58\xf0\x96\x54\xc0\x82\xd0\x55\x95\xc1\x58\x9a\xd5\x26\x33\xd5\xc2\x68\x92\x87\xcb\xc3\x07\xee\x4f\xbd\x6a\x9a\x29\xe6\xef\x34\x53\x42\x83\x9c\x0e\x93\x92\x6d\x98\x42\x0b\x6a\xa0\xce\x27\x4d\xa5\xd2\x92\x83\x86\xa0\xa9\xbc\xe7\xb3\x4d\x39\xd9\xf7\x45\x73\x2d\xdb\x6e\x1f\x3e\x99\xf7\xee\x72\x63\xc5\x86\xea\x6a\x5c\x16\xda\x91\x2a\x87\x14\x9b\xb3\x28\x19\x89\xe3\xdc\x5a\xad\x99\x16\x53\x27\xb6\x5d\x28\x47\x83\xf6\x41\x96\xa1\xf2\x27\x07\xc0\x72\x51\xda\xce\x76\x0e\xe6\x35\xc7\xc2\xdc\x68\xe3\x06\x63\x12\xe0\xb8\x6b\x2b\x23\xcf\x48\x67\xdd\xa2\x77\x87\x96\xdd\x92\x2f\xad\x08\x1c\x5a\xc3\x19\x5c\xd4\x95\xc5\x5d\xae\x8b\x8a\x83\x6d\x43\xa5\x8d\x69\x48\x8b\x8a\x5f\x4d\x57\xe3\xb5\x24\xdc\x61\xd0\xef\x5a\x63\xab\x57\x02\xdb\x3b\x62\x0e\xaa\x0f\xfe\x78\xc0\x2f\xf7\x31\xff\x7e\xb1\x79\xf7\xcc\x4d\x73\xef\x6d\x38\x9d\xdd\x38\x77\x8b\x5b\x3b\x84\xcf\xed\xe8\x1e\x37\x85\x55\x51\x84\x10\x8b\x00\xca\x0a\x92\x30\x46\x0a\xc0\xdf\x33\xc2\xe5\x46\xad\xfc\x28\xb5\x5f\x35\xe4\x53\x9b\xd4\x9f\xd9\x54\x3e\xee\x4b\x5f\x35\x04\xfe\xf5\x76\x7c\xcd\x80\xbc\xdf\x8e\x8f\xdf\xf3\xf1\x85\xe3\xa1\x3e\xb1\xe3\xb9\x90\x7b\xee\x5e\xc5\x77\x07\xdd\xf9\xfd\x8a\xa7\x9b\x3b\x64\x59\x46\x32\x91\x39\x61\x5c\x04\x8a\x48\x11\x56\x00\xc2\x82\x28\x63\xa6\x72\x49\x42\x90\x73\x8e\xb0\x22\x50\xa2\x12\xa4\x10\x02\x05\x95\x3b\xc0\xe5\x0a\x94\x10\x72\xd9\xf1\xac\xfa\x45\xb9\x52\x3f\xa5\x9f\x43\xe6\xf3\xef\x72\xa0\x06\x2a\xc5\x4d\x32\x5a\x35\x84\xe9\x00\x90\xcd\x3c\x14\xd4\x46\x69\xbd\xac\xe5\x37\x26\x4a\x72\x05\x9a\xb7\x97\x2b\x43\x5d\x41\x2f\x89\xcc\x60\xf8\x38\x79\x5e\x7b\x3d\x7b\x58\x66\x9f\xfe\xf2\x9f\x91\x3f\xb8\xcb\xd2\xab\xd3\xd1\xab\xf2\x9f\x6e\x3b\x5d\xc7\xdd\x11\x5c\x45\x54\xa0\x22\x51\x24\x73\xc9\x01\xa2\xe4\x4a\x22\x46\xae\x28\xc9\x48\x01\xc4\x21\x8e\xeb\x0a\x84\x43\x47\x75\x88\x2c\x38\x00\x2a\x2a\x86\x08\x73\x84\x39\x77\xa8\x08\x0e\xb8\x8b\x4f\xb7\x2b\x3e\x69\xb7\x72\x56\x96\x3c\x9e\x96\x6f\x61\xb7\xe8\x88\x5c\x11\x99\x43\x9c\x9d\xcd\x8e\x88\x09\xa0\x50\x90\x00\x25\x58\x60\x0a\xa1\xaa\x43\xb1\xa0\x40\xc1\x55\x5d\x44\xa0\xc3\x64\x95\x53\x02\x99\xa2\xb8\x0e\xe0\x14\xd1\x83\xdd\xf0\xe6\x76\xe3\xb3\xe3\xaf\xf5\x2f\xb0\x9b\x0b\xd8\x21\x1c\x21\x91\x11\x20\x00\x44\x18\x14\x5d\xe0\xa8\x84\x30\x97\x01\x57\x16\x21\x77\x21\xe6\x8e\xa4\xc8\x8e\x00\x1c\x20\x49\x54\x50\x45\xa8\x40\x19\x70\x09\x21\x86\x0f\x76\x4b\x37\xb7\x1b\xad\x5e\x31\xf0\x93\x76\x53\x97\x29\x8a\x20\x73\x86\x14\x4c\x11\x67\x8a\xc2\x38\x01\xdc\x01\x40\x11\x14\x4a\x5c\xa8\x50\x80\x11\xe0\x18\x4b\x80\x03\xc4\x38\xa4\x22\x16\xb0\xcc\x55\xc2\xb9\xc2\x8f\xf7\xc2\xa0\x9b\xdb\x2d\x9d\x0d\xf2\xd5\x93\xcf\x9f\x8d\x6f\x44\x09\xa3\x1c\x20\x97\x02\xc2\x10\x93\x5d\x0e\x80\xea\x28\x0e\x60\xdc\xa1\x80\x41\xe6\x32\x28\x72\x22\x89\x8e\xc2\x1d\x02\xb9\xca\x89\xac\x50\x11\x4b\x32\x97\x04\xe0\x1e\xef\x98\x78\x9a\x57\xcf\xec\xd6\xf0\xa0\xa6\x68\x78\x3c\xf5\x0a\x4d\x0e\x58\xb7\x8b\xed\x12\xd5\xad\xb5\x6c\xdd\xad\xa6\xa5\x05\x85\x5d\x5d\x40\xa4\x02\xcb\xbe\x70\xb0\x05\xcf\xe2\x63\x95\xe7\x5d\x37\xf9\x79\xbb\x1f\x70\xd7\x3f\x27\x7f\x46\x4f\xf2\xbf\x22\xaf\x2a\x82\x20\xa8\x22\x85\x8a\x2c\x41\xe6\x62\x48\x81\x80\x08\x22\x02\xc3\xd8\x51\x80\xc8\x5c\x17\x20\x26\xb9\x08\xb8\x54\x66\x02\x50\x04\x99\x10\x8c\x28\x20\xb2\x00\x54\x57\x25\x07\xdc\xc5\x17\x71\xcf\xa5\x24\xef\xd8\xfd\xa1\xa8\x4f\xfb\x3d\x12\xd9\x72\x77\xbd\x72\x7a\xb0\xd8\xa8\x78\xf3\x00\x6a\xed\xfc\xa8\x6c\xcc\x91\xb3\x6e\x97\x7b\xde\x57\xe0\xfe\x11\xf9\x5f\x8d\xbb\xc3\x24\x45\x66\x0e\x63\x40\x64\x92\x0c\x14\x01\xcb\x58\xa0\x12\x41\x04\x73\x95\xc9\x5c\x91\x11\x25\xa2\x4a\x1d\x49\xe0\xb2\xc8\x30\x21\x2e\x06\x44\x74\x39\x47\x0e\x94\x19\x3f\xe0\x0e\x5f\xc4\x3d\x9f\x86\x30\x4c\x24\xb4\xc8\x37\x0b\xeb\xb9\x75\x07\xc3\x52\x23\xbb\x15\x70\x6b\xe3\xc7\xc2\xd4\xad\x1b\x83\x99\xd5\xf3\x1e\x96\x59\x37\xc7\xfd\x23\xf2\xbf\x1a\x77\x28\x72\xc9\x21\x82\x2b\x0a\x8a\x23\x13\x22\x4a\x22\x70\x24\x15\x4b\x48\x26\x82\x03\x54\xa0\x02\x0e\x15\x88\xb9\x2c\x3b\x50\x52\x11\x80\x80\x49\x9c\x31\x19\x30\xe0\x02\x84\xc1\x01\xf7\x2b\xf3\xca\x27\xfd\x6d\x22\x9d\xec\xfe\x8a\x3a\x02\xa8\x14\x08\x12\x26\xb2\x48\x77\x75\x94\x28\x70\xae\xa8\x2a\x03\x94\x52\xa6\x8a\x54\x11\x90\x88\x38\x27\x58\x10\x11\xc0\x22\x10\x65\x00\x45\xc1\x81\x44\x94\x54\x15\x71\xc5\x39\xde\xdf\xf3\xb2\xbf\xbd\x77\xd9\x7f\x0b\x7f\x2b\x7c\x4e\xfe\x57\xfb\x1b\xc6\x50\x76\x81\xa3\xc8\x2a\xe3\xc0\xc5\x12\x41\x9c\x61\x57\x61\x32\x12\x55\x55\xda\x95\x2c\xbb\xd5\x01\x90\x44\xc1\x85\x2e\x15\x1d\x87\x4a\x50\x01\x8a\xe4\x8a\x02\x55\x00\x42\x07\xdc\x5f\xce\xaf\x79\x21\xcd\xb1\x52\xd8\x49\xbd\xfa\xd2\x4a\x74\x9c\x1b\x95\x6b\xb0\xc1\x55\x66\x37\xdd\x62\x39\x5b\xf1\x51\x65\xd9\x35\xb3\x43\x2d\xc1\xab\x2f\xc1\xfd\x03\xf2\xbf\x1a\x77\x17\x4b\x94\x21\x49\x01\x80\x21\x88\x29\x90\x99\xeb\x42\x44\xa9\x84\x15\xe8\x70\x45\x11\xa8\xc8\x64\x0c\xa8\x20\x20\x81\x20\x99\x12\xec\xaa\x48\xc0\x48\x61\x14\x4b\x02\x62\x07\xdc\xaf\xd4\xcd\x9f\xb4\xfb\xab\xe3\x9c\xaa\xd0\x55\x80\x2c\x63\x17\x62\xb6\x9f\x32\x54\x4e\x01\xe3\xaa\xec\xba\x10\x2a\x82\x2c\x49\x64\x97\x01\x88\x44\x39\x11\xa8\x23\x53\xee\x08\x0e\xe5\x54\x76\x77\x53\xbd\x72\xb0\xfb\x4a\x7e\xfb\x64\x9c\x7d\xb5\xdd\x0e\x12\x5d\x41\x76\x5d\x47\x55\x28\x90\x30\x87\xd0\x51\xa9\xc8\x29\x04\x8a\x02\x20\x04\x94\x71\x2c\xb8\x0a\x72\xa0\x24\x41\x46\xb8\x48\x11\x75\x14\x99\x62\x26\x31\x45\x42\xe2\xf1\x6e\xb0\xa7\x71\x76\xeb\xbc\x9e\x7f\x9b\xdd\x0f\x90\x1b\x9f\x93\x3f\xee\x3e\xb2\xe7\x8d\xf2\xdf\x8a\xbb\xc0\x44\x22\x39\x1c\x8b\x12\x06\x32\x52\x5c\x59\x61\x0e\x02\x9c\xbb\xa2\xca\x09\x20\x2e\x74\x55\x05\x51\x2e\x28\x0e\xa2\xa2\xa0\xb8\x00\x4a\xb2\xc0\x24\x40\x25\xcc\xa8\xa8\x8a\xc7\x7b\x9a\x5e\xc4\xfd\x26\x75\x44\xee\x9d\xb8\x17\x3f\x27\xff\xc9\xb8\xbf\x51\xfe\xcb\xed\xe4\xab\x4f\x98\x7a\x7f\x63\xeb\xab\xbb\x5a\xc5\x9a\x52\xb2\x96\xd6\xc4\xa9\x8a\x25\x0d\xf6\xec\x71\x2b\xaa\xce\xc6\x7d\x00\xdc\xa2\x12\xd7\xca\x78\x06\x0a\xad\x55\xa5\x77\xa7\xf5\xf7\x87\xa1\xcf\xba\x57\x8f\x51\x7a\x82\x5a\xe2\x78\xfd\x96\x5c\xc0\xa1\x5e\x03\x35\x2b\xbb\x1a\xb4\xf3\xea\xb6\xbf\xec\xdb\x1d\xb8\xf6\x9b\xfe\x20\x6d\x3b\x82\xbe\x9c\x59\x35\xae\xec\xe9\x4d\x14\x55\xcf\xf9\x1d\x56\xb5\xbb\x41\xce\x31\xbd\xcf\x45\xd8\x95\xb8\x9a\x17\xdb\xeb\x79\xae\x36\x6c\xad\x85\xa8\xb2\x6d\x1b\xb5\x0a\x58\xeb\x3a\x48\xab\xc5\xf9\x6c\xe1\xb8\x53\xbd\x93\xed\xf7\xcb\x0b\xb9\xeb\xeb\xb9\xed\xcc\x58\x27\xd9\xa2\x99\xed\x2f\x8c\xd0\x6a\xb2\xa8\xdf\xc1\x73\x21\xac\x0d\xcb\xa5\x45\xa7\xde\xfc\xf6\x3d\xf3\x6d\x38\x1b\xf6\xe6\x69\xc4\xcb\xe5\x9a\xc1\x35\x7b\x5d\x09\x44\xde\x32\x9a\x29\xea\x7b\x74\x41\x7a\xd5\x70\x1d\x44\x7a\xd6\x03\xb6\x7b\x7a\x4e\xc3\x0b\x18\x9c\x3c\xe3\xe2\x51\x2c\x8f\x57\xf5\x67\x59\xf5\xbd\x9b\x3e\x7a\x4a\x36\x87\x8c\xf1\x34\x3b\xbc\xaa\xd7\xbd\x27\x9f\xc9\x7f\xc7\xf8\xeb\x3c\x2f\xc6\xe2\xb2\xd2\xd0\x4e\x8d\x95\xdc\xf5\xc8\xbc\x2a\xff\x69\x96\xfa\xea\xd6\xe1\xc7\x9d\xfb\x31\xb8\x4f\x0c\x0a\x9b\xab\xc1\x9d\xc1\xee\x68\x79\xd3\xe8\x2e\xee\xf8\xa2\x64\x6e\xe7\x0b\x3c\x60\xe1\x8a\xba\xed\xed\xa4\xe4\x0e\x0d\xbb\x95\xaf\x8a\x85\xc3\x66\xe0\x4b\xce\xed\x06\x46\x7b\x3b\xe4\x23\x01\x6f\x13\x45\x0c\xeb\x6c\xc1\xa5\xec\xdd\x3a\x88\xef\x26\xa5\x1c\x2b\xf6\x5d\x35\x57\xce\xb5\x06\xae\x3d\x84\xba\xd5\x81\x64\xb5\x1a\x06\xa8\xb6\xf0\xca\x45\xb5\xb2\x98\x2e\xeb\xb3\x96\xd0\xa9\x92\x35\x0d\x2b\x96\x9e\x2e\x8a\x34\xdf\xa6\xf5\x9d\x03\xc6\xae\x17\x9a\x85\x75\x0f\xd5\xb4\x89\x9a\x67\x6e\xa5\xd8\xd3\x16\xf2\xf2\xae\x98\x9a\x28\x9d\x15\x57\x66\x85\x0a\xee\xd4\x4d\x97\x67\xd6\xde\xd4\xb9\xab\xba\x52\x6c\xae\xfb\x2e\xcc\xd7\xc7\x76\x75\x09\x17\xa3\x6d\x2c\x93\x54\x2c\x91\x7a\xa9\x04\x62\x94\x83\x62\xcb\xee\x5a\x7e\x32\xaa\xec\xe9\xff\x6e\xe7\xde\x6a\x29\xf1\xbe\xcc\xb9\x6f\xdc\x1f\xfe\xb8\x73\xeb\xaf\x19\xe4\xcc\xbc\x99\x60\x8b\xcc\x43\xb6\x30\x5b\x08\x7c\x5a\xa7\x45\x21\x59\x8f\xdb\x83\xea\x50\x5d\x15\xbc\xb0\x9d\x23\xbc\xa7\x74\x7d\xe3\xb0\x36\x79\xde\xb9\xf5\x4a\x3a\x15\x92\x5a\xb1\x66\x48\xf6\x7a\x95\x00\xa6\xe7\xed\x82\x2b\x27\x0e\x9a\x4a\xce\xa6\x1e\x15\xbd\xfc\x3c\x3b\xb5\x87\xf5\xd9\x9a\x26\x48\xf2\x1b\xae\x38\x5b\x27\xe3\xb5\x5c\x67\x68\x58\x91\x0a\x92\x3e\xa5\xb1\x2b\xc9\x05\x6d\x94\x2b\xb6\xbb\xcd\x38\x50\xdc\xc1\xfe\x0e\xd5\xea\x46\xce\x8b\x72\xba\xaa\xd4\x2a\xb2\xae\x1b\xda\x26\x28\x0d\xa2\xca\xb2\x54\xd4\x4b\x48\x25\xa6\x4a\xf8\x66\x2c\x96\xb3\x2b\x6c\x9c\x06\xf4\xa6\xce\x5d\x44\x61\x25\xb1\x59\x30\x30\x6d\x36\x5c\x24\xfd\x79\xa7\x94\x4b\x1c\x3a\x00\xb3\xfc\xcc\xa5\xb9\x72\xb5\xe0\xf5\x82\xe9\xd2\x28\x8f\xc8\x01\xf5\xbf\xd9\xb9\x97\xed\x4e\xf8\x75\x99\xfb\xc6\x9b\x00\x1f\x77\xee\xc7\x2b\xd4\x27\x06\xbd\xf3\xac\xc4\x4b\xce\x3d\x18\xb8\x1b\x33\x9a\x35\x47\xee\xc4\x97\xa7\x51\x33\x1b\xe6\xdd\x34\xa8\xcc\x5a\xa9\x38\x73\xd7\x53\x09\x84\x68\xd1\x6b\xe1\x8d\x30\x98\x35\x95\x79\x58\xcc\xca\xfd\x85\x27\x09\xe3\x6a\xbe\xd7\x58\xd9\x61\x13\x0b\x38\x6f\x17\x9a\x1c\x83\x32\x48\x78\x6f\xd9\xe1\xe3\x49\x65\xff\x08\x83\x7e\x9a\xda\x6d\xd1\x2b\x18\x51\xa7\xb6\x4a\x49\xe4\x82\xe6\x60\x8c\xb7\x6e\xd4\x2e\xc6\x56\x5c\xe8\xe4\x26\x63\x4f\xd4\x27\x36\x3b\xed\xe5\xdd\xd4\xb9\xf5\xc4\x5b\xae\xf4\xd4\xec\x69\x96\x8a\x5b\x42\xab\x93\x74\xd9\xaa\xa1\x97\xe6\xfa\x5d\xbe\xcb\xe7\x5b\x66\x35\xfb\xd3\x30\xa0\x7e\xcd\x3e\xd0\xff\xcd\xce\x1d\x8d\x25\xe1\xeb\x32\xf7\x8d\x77\x7a\x3e\xee\xdc\xc6\x6b\x06\xbd\xef\xa0\xd2\x8b\xce\xdd\x98\x59\x23\x66\xf1\x4d\x9d\xf6\x8c\x5e\x53\x61\x76\x6b\xa2\x27\x46\x5b\x4a\x4a\xe5\xfc\xa6\xca\x48\x73\xd2\x92\xb3\x77\x35\x9c\x4d\xea\xdb\x6a\x2f\xec\x8e\x1d\x5d\xeb\xc7\xb4\x35\x28\x67\xc7\xb2\xc1\xee\x6c\xa3\x4b\xf4\x2d\x1b\xc4\xbd\xbc\x16\x97\x20\xe8\xa5\xe3\x72\x6d\xe7\x80\x5b\xd5\xcf\x39\x49\xaf\xb4\xe6\x62\x19\x2e\xf4\x48\x2b\x17\xeb\xd1\x76\xac\x31\x0b\x41\xcb\xcc\x31\x49\xa9\xac\x59\x3a\x4b\x65\xf3\xb4\x61\x7b\xdb\xb2\x44\x1e\x73\x1f\x8e\x67\x61\x59\xe9\x14\xa7\xfa\x1d\xf7\x28\xc4\xcd\x7e\x52\xaa\x56\xb7\x3d\x5b\x59\xd9\xfe\x30\x47\xf2\x29\xaa\xa1\xc3\x4e\xda\xdf\xed\xdc\x81\xc0\xf5\x2f\xac\xb9\x6f\xbb\x9d\xf7\xce\xcc\x31\x3c\x0d\xce\x0b\x0b\xca\xfd\xa9\xc4\x8f\x9d\x5a\xeb\xdf\x3d\xbc\x4e\xfc\x0a\x0f\xf2\x2d\xad\x61\xb5\xb7\xcb\x79\x21\x97\xd7\xfa\xcb\x58\x68\x7a\xb3\xd2\x5d\xd7\x70\x5c\x6d\x90\x40\x53\xf3\xbc\x41\xd3\xee\x30\x30\x1f\xdb\xb4\x42\x6c\x38\xd5\x0b\x77\x63\x73\x58\x0f\x6a\xc6\xb0\x3e\x31\x0a\x23\x4f\x62\xd3\xd4\xb6\xd6\x5c\x1f\x6a\xab\x4e\xb5\xdb\x24\x01\x8b\x57\xde\xde\x19\x13\x1a\x51\xc9\xb8\xd3\x22\x5b\x58\x4a\xda\x4c\x8a\x1b\xb2\xa2\x77\xa0\x5a\x4f\xe7\xf9\xd4\x4c\xc7\x32\x9f\x87\xab\xa0\x95\x5a\x96\xf2\xa0\xd9\x75\x47\x1f\x9c\xc1\xf2\x9a\xa3\x9f\x1d\x51\x79\x6f\x16\xef\xda\x76\xf7\xd8\x66\x7e\xef\xfa\x66\xff\x2a\x3d\xc2\xfa\xb1\xa3\x5a\xda\xe5\x11\x84\x8f\xcc\x32\x87\xe7\x45\x9c\x4e\xa8\x3e\x6d\x49\x7f\x34\x10\x6e\xbc\xbf\xfa\xce\xfa\xf0\x3d\x81\x60\xdb\x8d\xa3\xd5\xef\xe8\x6b\xc3\x6b\x81\x60\x3c\xc8\xb7\x9a\x53\x0f\x17\x6b\xa3\x8a\x07\xd6\x78\x3c\xd7\x56\x42\x61\x25\x97\xc4\xbe\x21\x6f\x5a\xe5\x99\x5b\x29\xaf\x0c\x77\x0d\xd4\x46\xea\x23\x27\x31\x2b\x9a\xc1\x57\x86\xd6\x70\x4d\xa2\xe5\x14\xc3\x1a\x4e\xd1\x1c\x6a\xc8\x83\x13\x59\x2f\xe9\xbe\xe7\x76\x1b\x5d\x5d\x90\x3d\xba\x77\x56\xaf\x55\x6c\xaf\xa4\xa1\x0e\x61\x53\x33\x48\x6f\x24\xc0\x54\xab\xb9\x8a\x21\x34\xbb\xcd\x75\x52\x28\x1b\x8b\xb9\xb0\xaa\x0e\xac\x00\x9d\x4e\x22\xdf\x34\x10\xde\x5b\xab\xdb\x76\xa7\x75\xe4\xf2\xde\x2e\xd6\xfe\xf5\xde\x40\xf8\xc8\x5a\xa2\xe3\x69\x97\x8f\x47\xb9\x59\x20\xdc\x78\xc3\xfb\x9d\xd3\xed\xdf\x13\x08\xc5\x07\xf9\x56\x4e\x9d\xcc\xaa\x3d\x71\x01\x97\xd8\x72\x37\x4a\xb3\xce\x27\x05\x47\xe8\x74\xca\xc8\x5f\x2f\x26\x65\x90\x0b\xbd\x7e\x64\x26\xd8\x33\x05\x59\xb4\x9c\xc9\x48\x64\xed\x4e\xd7\xe5\x7a\xb8\xa4\xa0\xa9\x11\x77\xa4\xf7\xd7\xc9\xc8\xd6\xa6\x71\x2d\x1d\x4f\x73\xb3\xcd\x38\xa7\x0d\xf6\xce\xba\xec\x8e\x92\x25\xd3\x92\x96\xe7\xf5\x87\xeb\x75\xb5\x17\xc8\xcc\x09\x87\x34\x9c\x6f\x40\x69\x56\xeb\x2f\x96\xb4\x5a\xcb\x22\xa7\x91\xbc\x56\xfa\x7c\x30\x10\xde\x5b\xfa\xfc\xd5\x81\xf0\x91\xd2\xec\xeb\x66\x84\x1b\x9f\x40\xf8\xf8\x8c\xf0\x42\x3b\xf2\xd6\xa5\xd1\xd9\x8c\x50\xaf\xcc\x96\xd9\xe9\xc8\x40\xd6\x70\xea\xb1\xf2\x22\xd7\xd7\xdb\x6c\x54\x48\xbc\x88\x74\xa2\x56\x7b\x65\x47\x88\xdd\xe5\xa2\x46\x5e\x54\xb8\x5b\xaa\x87\xeb\x41\x83\x64\xc5\x54\x4d\xda\x05\xb6\xee\x66\x47\xc5\xbe\x5c\x69\xf5\xf0\x4a\x33\xa0\x63\xce\x35\x25\x5a\xaf\xd7\x5a\x61\xef\xac\xf5\xb4\x2d\x97\x36\xc5\x1a\x59\x54\xf2\x79\x30\x05\xf6\xa2\xb8\x9a\x54\xf4\xb1\x07\xd1\x2c\x06\x53\xab\xde\xe8\x24\x82\x07\x9a\xb9\xfe\x49\xb3\xbf\x75\x46\xf8\xab\x4b\xa3\x9b\xcc\x08\x4f\x76\x6f\x3f\x1a\x08\x37\x3e\x92\xf2\xce\xbe\xf0\xdb\x66\x84\x43\xd4\xbf\xb3\x75\xf9\x99\x3b\x61\x6a\xb2\x72\x0e\x70\xe1\x41\x5f\x2b\x4f\x4a\xa3\xb9\x6f\x37\xd4\x82\x04\x71\xb9\x6f\xd0\xd2\xdc\xb5\xa3\x70\x2d\xb4\xcd\xbb\x46\x25\xc9\xcf\x72\xe2\xc8\x23\x5e\xdd\x2a\xe9\x2d\xbd\x68\xd5\x4b\x0d\xb8\x18\xb7\x69\xc7\x5c\x2c\x78\x21\x6e\x14\xd2\x65\x35\x1b\xe0\xb2\xe4\x64\x55\x23\x02\x2d\x98\xac\x66\xd4\x8b\xf7\xce\x9d\xa7\x5a\x97\xcf\x6a\xe5\xaa\x5e\xe6\x72\x25\xb0\xb6\x75\xb1\xbd\xc9\x75\xa7\x78\x41\xdb\xdd\x52\x39\x3f\xd0\xcb\x8e\xe9\xb7\x87\xfd\x30\x7e\xd0\xec\x7a\xe0\x9c\x67\xc9\x17\x02\x67\xa5\xfd\x1f\x10\x38\xd6\xdf\xa2\x5f\x3e\xbb\xcc\xbf\xa4\xdf\x1b\x02\xeb\xc6\x67\x8e\xde\xb9\x9b\xf8\x9e\xc0\x7a\x67\x67\xe9\x63\xa5\xd9\xe3\x33\x4f\x07\x0f\x78\xd0\xd7\xd2\xc7\xb9\xb6\x96\x4e\xab\x54\x4d\x5a\x8b\xa2\x97\x35\x27\xb6\x53\x6d\x6e\xa5\x70\xda\xb2\x06\x5d\xbe\xdc\xe4\xdd\x25\xa8\x69\xd3\x85\xd3\x2f\xca\x9b\xa6\x33\x6f\x81\x5c\x4b\x0e\xf1\x2c\xf2\x67\xad\x99\x62\x4a\x76\xd8\xca\x15\xcb\x5a\xc7\xca\x49\x62\xc3\xec\x51\x63\xcb\xac\xd5\xde\xf9\xd9\xd6\x59\xa5\xc5\x80\xeb\xb0\x3d\xc5\xfd\x6c\x63\xd8\x9e\x75\x27\xe3\x71\xa4\xaf\xac\x91\x72\xb7\x8a\x96\x05\x53\x1b\x35\xcb\xd4\x33\x4e\x67\xaa\x6f\x1a\x58\xff\xc8\xd2\xcc\xfa\x5b\xf4\xdb\x77\x25\x3f\x17\x58\x37\x3e\x54\xf6\xf1\xc0\x7a\xa1\x74\xfb\xd8\x8c\xf5\x89\xc0\x7a\x34\x63\x9d\x05\x96\x59\xae\xb6\xa7\xba\x35\x53\xbb\xd1\x42\x4c\xc7\xc1\x72\x3d\x1c\x17\x17\xf2\xb6\x62\x05\xb4\xd9\x99\x2b\xcb\xa9\x14\xe7\xf3\x52\x8b\x48\xf5\x6e\x40\x4a\x03\x9d\x4c\x5a\xfd\x8e\x11\x5a\xd3\xb2\xa1\x45\x28\x01\x61\x65\xc5\x72\xed\x58\xee\x54\x94\x3a\xb2\x79\xd1\xcb\x39\xd6\xa1\x0b\xa6\x82\xad\xdd\xd6\x74\xbb\xa1\xe4\x92\xbb\x6d\xbf\xde\x92\xcc\xac\x9f\x5b\x25\xc3\xd5\xaa\xd5\x25\x76\x3c\xbf\x9b\xb6\xd8\x00\x96\x2c\xfb\xb5\x23\x16\x7f\xd1\x8c\xf5\x57\x07\xd6\x5f\xa8\xdf\x0d\x66\xac\x1b\x9f\x5a\xfc\x78\x29\xf8\x6a\x60\xfd\x85\x37\x45\x3f\x9a\xb1\xce\x4a\xc1\xa2\x34\xc5\x93\xbc\xb6\x40\x64\xb1\x6c\x8b\xec\xae\xd4\x49\x06\x14\xd7\x34\x82\xe7\xed\xae\xef\x9b\x52\x75\x53\xad\x38\x8b\x59\xac\x7b\x4b\x3a\x29\xe6\x45\xe6\x8c\x68\x14\xaa\x09\x5d\xe6\x87\x25\x77\xb5\xe8\xd8\x59\x7f\xb2\x54\x4a\x33\x65\xe8\x12\x19\x4e\x06\xcd\x89\x75\x68\x26\x6c\x3a\x59\x6d\x18\x28\x10\xc2\xbc\x1f\xc4\x3a\x9f\x2e\x95\xad\xd7\x6b\x55\x37\x79\x7f\xb2\x5d\x94\x6a\x8e\x19\x3b\xdb\xd8\xb9\x53\x8c\xd3\xd1\xe1\x9b\x06\xd6\x3f\xb2\xbd\x6c\xfd\x2d\xfa\xdd\x60\xc6\xba\xf1\xb1\xd8\x8f\x37\x1b\x5e\x38\x1e\x52\xff\x64\xa0\x7c\xe6\x69\x07\xcb\x68\xe5\x9d\xe9\x73\x75\x13\xec\xac\x79\x61\x4c\xfb\x2b\x12\xce\xf0\x66\xda\xee\xb0\x0d\x31\xf1\xa2\x51\xc7\xd2\x20\x5b\xe9\x4e\x34\x31\x04\x29\xc5\x3d\xd1\xd8\xe6\xa6\x13\x9b\x8b\x31\xdd\x06\xf5\x3a\xc9\xb6\x94\x91\xdd\x71\xa6\x26\x9a\x5a\x72\xd6\xa0\x9d\x3a\x1a\x97\xa3\x9e\xb5\x58\x2f\x0c\x63\xe8\x98\x13\xed\x50\x2a\x26\x6d\xa5\x77\x87\x67\xf5\x5c\x49\xda\xa6\xb4\x16\xd7\xcb\x9e\x5e\xaf\xc3\xa0\x24\xf5\xb6\x2d\x5d\x4c\x6b\xc6\x46\x72\x4a\x42\x63\x64\x9c\x66\xdb\xeb\x81\x77\xfd\x76\xcc\xf7\x1e\xbf\x39\xe1\x61\x18\xb6\x7d\x94\xf9\xde\xb3\x57\x9f\x9d\x55\xf6\xaf\xeb\xc7\x77\x5f\x6e\xca\x9c\x3d\xa9\xf7\xbd\x33\xe1\x99\xcc\x7f\xae\x4f\x7e\xc9\xd1\xf0\xc7\x31\xfa\x8e\xa3\xe1\x5f\x7d\x2e\xfc\xe3\xed\xfe\x17\x66\xf4\xc3\x1a\xf5\x13\xa5\xef\xe9\xb1\x25\x7f\xe1\xac\x90\x73\xfb\xa3\x27\x63\x42\x1e\x1e\x13\xa3\xe9\x92\x4a\x5a\xdd\x74\xdb\xef\xf3\x46\x29\x15\x0c\xb7\x3c\xc8\x39\xf3\x69\x2e\x6c\x66\x1d\x21\x27\xa5\xf5\x62\x22\x76\x8b\xc3\x44\x1e\x37\xab\xcb\x95\x6d\xb6\x66\xf5\xad\xdb\xd7\x87\xa4\x94\x5b\x96\xfd\x28\x2e\x2b\xbc\xe1\x66\x55\x43\x28\x94\x81\x31\x52\xeb\x77\xe2\x78\x96\xf7\x0e\x33\x78\xa9\x3d\xaf\xa1\x4d\x6b\x35\x1c\xa8\xa1\x28\xe8\xa9\x32\x97\xbd\x68\x9b\x1d\xf4\xcd\x62\xad\x9f\x2f\x36\x35\x30\x60\x56\xbd\xa5\xae\xe6\xaf\x25\xa9\xf2\x23\x27\x7b\xb7\x03\x9f\xf8\xdd\x04\xcb\xff\x93\x1f\x99\x73\xb5\xba\x3a\x9c\xc0\x59\x69\xff\xd8\xea\xe5\xf4\xf7\xe0\x6f\xd1\xcf\x1a\xe6\xa3\x57\xf5\x7b\x8c\xdf\x3f\xa8\x11\x78\x15\xbf\xbf\x50\xbf\x7d\xec\x7c\x35\x7e\x5f\xb8\x2c\xbd\x09\x7e\x9f\xd0\xaf\xc0\x8b\xe3\x77\xe3\xf7\x0f\xea\x97\x5d\xc5\xef\x2f\xd4\xaf\x41\x3a\xf3\xb7\xe1\xf7\x5f\x51\x0c\x1e\xee\x57\x3b\x3c\x2e\xef\xef\x98\x4b\x6f\x53\x47\x5d\xdf\x6a\xbf\xb8\x27\xee\xe2\x0b\xfc\xf7\x0f\x84\x3c\xfb\xfd\xc7\x7c\xc2\x1f\xee\x8e\xcb\x9b\x8d\x76\xa7\xa5\x95\x1b\x9d\x57\xee\x8e\xd3\x6a\x9d\x42\xeb\x78\x33\x9d\xd9\xa8\x0d\xce\x39\xee\x9f\x52\xa9\xe9\xfa\x19\xb7\x27\x02\x33\xcd\x56\xb9\xae\xb5\x06\x99\x6a\x61\x90\xf9\xe5\x78\xd5\x67\xdf\x33\x3b\x8a\x80\xcc\xf8\x73\xea\xc7\x0f\xbf\xdc\x56\xf1\xf8\x05\xad\xe3\x97\x54\x7e\xa2\xa8\x43\x82\xdd\xff\x37\x52\xcf\x21\xc1\x35\xcd\xee\x05\x5c\x2a\x15\x84\x8c\x5f\xd1\xe8\xf2\x4b\xfe\x2e\xfe\xfa\x71\xf8\x2b\xe6\x8b\x1f\x37\x51\xf7\x82\xf9\x35\xc5\x5f\x90\x9e\xe9\x36\xca\x56\xb7\x90\xf9\xe5\xe1\xdd\x77\x59\x72\x1b\xbc\xdf\x69\xc0\xd3\x31\x38\x5e\x27\xf1\xe8\x89\xf6\xc7\x2f\x9b\x3b\xfc\xb8\x91\xbe\x07\x66\xd7\x14\x3d\x13\x73\xa9\xe1\xfe\xc2\x15\x37\xd9\x7f\xff\xdb\xe1\xdf\x1b\x29\xb7\xe7\x75\x4d\xb7\x93\x90\x4b\xd5\xfc\xf9\xf7\xcc\x3c\x8c\x92\xa7\xba\x9d\x7d\x9d\xdc\xc5\x1f\xb7\xd2\xf4\x8c\xe5\x55\x85\x1f\x8b\xbc\x36\xe8\xd7\xb4\x8e\x53\xe7\xf8\xe3\x76\x9a\xc6\xa9\xf3\x8c\x8e\xf7\x62\x2e\xb5\x8b\x78\x7c\x65\xb8\xcf\xbe\xdf\xe6\xf4\xeb\x8d\x94\x3c\x31\xbc\xa6\xe8\x23\x71\x97\xca\x2e\x62\x9e\x5c\x8d\x9e\xe3\x37\xdb\xdc\xff\xbc\x95\xa6\x07\x6e\x57\xd5\x3c\x13\xf4\xec\x7c\x75\x90\x32\xe1\x9b\xa7\xfa\x9e\x1e\xca\x7c\xfa\xf5\x56\x5a\x3f\x30\xbc\xaa\xf8\xa5\xb8\x4b\xdd\xf7\xef\x5f\x9d\x61\xcf\x1e\x6d\x79\xfa\xf5\x46\x0a\x9f\x18\x5e\x53\xf8\x91\xb8\x67\xc1\xf6\xe3\x38\xe5\xd1\xf7\x0c\x89\x63\x9e\xd0\x90\x5d\xb1\xe1\xfc\x91\x0b\xe7\x7f\xdc\xca\x8e\x33\x96\x57\x2d\x79\x2c\xf2\x5a\x9e\x88\xf9\xe2\x7b\x26\x59\xfb\x01\xe3\xeb\x2b\x16\x9c\xd4\xbf\xb5\xee\x2f\x2a\xfe\x29\xad\x8f\x83\xe4\x90\x29\x09\xe8\xe9\xd9\xbd\xe5\x86\x5e\xe8\xbf\xa2\x67\xbe\x55\xd0\x3a\x85\x03\xe9\x63\x3e\x19\xb3\x71\x2a\xfc\xba\xed\x72\xa3\x98\x71\x92\x88\xf3\xcc\x2f\x47\x8a\x5f\x33\xbd\x52\xa1\x55\x78\xf8\x3b\xf3\x3f\x7f\x9e\x1e\xe0\x0a\x9e\xd6\x66\xe9\xc6\x0f\xbc\x83\x1b\xed\x0d\xf9\xb0\xa2\x4f\x38\xed\x54\x3d\x4e\xf0\x97\x8a\x9e\x11\x3e\xd1\x67\x87\xb9\xb3\x89\xf9\xe2\xc3\x7a\x3c\x70\xd8\xc9\x3f\xf9\xce\x85\x0a\xcf\xd7\x53\x3b\x72\x97\xf3\xcf\xab\x70\xcf\xe4\xa0\xc5\x59\x0c\xbe\x51\x91\xe3\x95\xcf\x29\x72\xce\x64\xa7\xc8\x65\xb5\xf8\x46\x4d\xe6\x91\x4f\xf9\xe7\x7c\xe3\xc4\xe2\x39\xa7\xd8\x53\x5c\x9b\x91\x79\xb0\xfc\x24\x08\xe7\x4c\x76\xe2\xcf\xbe\x93\xf0\x8d\x08\x9c\xa6\xe7\x4f\x6b\x72\xce\xe7\xa8\xcc\x7d\xcd\x71\xa9\x0c\x89\x93\x17\x14\xe2\xd3\xe9\x8d\xc2\xf6\x29\xab\xe7\x86\xe8\x82\xf2\xb9\x62\xe4\x98\x9b\x3e\xae\xce\x05\x9b\x3d\x42\xc7\x2a\xe7\x42\x97\x6b\x8b\xcd\x66\x18\x27\x5e\xc4\xdb\x56\x2d\x73\xff\x4d\x7a\x19\x96\xce\xe6\x19\x1a\xce\xe6\x53\x9e\xf0\xbd\xb4\xff\x3f\x00\x00\xff\xff\xfa\x85\xd5\x28\x42\xb0\x00\x00") + +func pathed_paymentCoreSqlBytes() ([]byte, error) { + return bindataRead( + _pathed_paymentCoreSql, + "pathed_payment-core.sql", + ) +} + +func pathed_paymentCoreSql() (*asset, error) { + bytes, err := pathed_paymentCoreSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "pathed_payment-core.sql", size: 45122, mode: os.FileMode(420), modTime: time.Unix(1508958262, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _pathed_paymentHorizonSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\xbd\x69\x93\xa2\xca\xb3\x38\xfc\xfe\x7c\x0a\x62\xde\xf4\x39\xd1\x3d\xa7\x8b\x82\x62\x99\xf3\xcc\x8d\x40\xc5\x7d\xdf\xf5\xc6\x0d\xa3\x80\x42\x51\x14\x05\xdc\xfa\x17\xf7\xbb\x3f\xa1\xa8\xad\xb4\x28\xa2\x3d\xd3\xe7\xfe\x89\x8e\x19\xb1\xaa\x72\xab\xac\xac\xac\xcc\x04\xbf\x7f\xff\xe3\xfb\x77\xaa\x6c\x39\x6e\xdf\x26\xb5\x4a\x9e\xd2\xb0\x8b\x15\xec\x10\x4a\x9b\x8f\xa7\x7f\x7c\xff\xfe\xc7\xa6\x3d\x31\x1f\x4f\x89\x46\xe9\xb6\x35\x7e\xef\xb0\x20\xb6\x63\x58\x13\x4a\xfc\x9b\xfb\x1b\x1d\xf5\x52\xd6\xd4\xb4\xdf\xdb\x0c\xf7\x75\xf9\xa3\x26\xd7\x29\xc7\xc5\x2e\x19\x93\x89\xdb\x73\x8d\x31\xb1\xe6\x2e\xf5\x93\x02\xff\x6c\x9b\x4c\x4b\x1d\x7d\xfc\x56\x35\x8d\x4d\x6f\x32\x51\x2d\xcd\x98\xf4\xa9\x9f\xd4\x53\xa3\x9e\x14\x9e\xfe\xd9\x83\x9b\x68\xd8\xd6\x7a\xaa\x35\xd1\x2d\x7b\x6c\x4c\xfa\x3d\xc7\xb5\x8d\x49\xdf\xa1\x7e\x52\xd6\x64\x07\x63\x40\xd4\x51\x4f\x9f\x4f\x54\xd7\xb0\x26\x3d\xc5\xd2\x0c\xb2\x69\xd7\xb1\xe9\x90\x13\x34\x63\x63\xd2\x1b\x13\xc7\xc1\xfd\x6d\x87\x25\xb6\x27\xc6\xa4\xff\xcf\x8e\x76\x82\x6d\x75\xd0\x9b\x62\x77\x40\xfd\xa4\xa6\x73\xc5\x34\xd4\x97\x0d\xb3\x2a\x76\xb1\x69\x6d\xba\x49\xf9\xba\x5c\xa5\xea\x52\x2c\x2f\x53\x99\x24\x25\xb7\x33\xb5\x7a\x8d\x2a\x15\xf3\x9d\x5d\xff\xbf\x07\x86\xe3\x5a\xf6\xba\xe7\xda\x58\x23\x0e\x95\xa8\x96\xca\x54\xbc\x54\xac\xd5\xab\x52\xa6\x58\x3f\x1a\x74\xda\xb1\xa7\x5a\xf3\x89\x4b\xec\x1e\x76\x1c\xe2\xf6\x0c\xad\xa7\x8f\xc8\xfa\x9f\x5f\x81\x50\xdd\x7e\xfa\x15\x28\x37\x7a\xf5\xeb\x18\xf4\xb0\xf9\xb9\xdb\x0e\xcf\x14\x13\x72\xfb\x68\xe4\x0e\xd3\x76\x60\x8f\xe8\x3a\x51\x5d\xa7\xa7\xac\x7b\x96\xad\x11\xbb\xa7\x58\xd6\xe8\xf2\x40\x63\xa2\x91\x55\xef\x08\xff\xc4\xc1\x5b\x5d\x74\x7a\xd6\xa4\x67\x68\xb7\x8c\xb6\xa6\xc4\xc6\x87\xb1\xee\x7a\x4a\xee\x18\xfd\x4e\xc9\x5d\x54\xdc\x36\xd6\x24\x5a\x9f\xd8\xdb\x81\x0e\x99\xcd\xc9\x44\xbd\x89\x85\xa3\xe1\x53\x9b\x2c\x0c\x6b\xee\xec\xbe\xeb\x0d\xb0\x33\x88\x08\xea\x7e\x08\xc6\x78\x6a\xd9\x9b\x15\xb3\x33\x7b\x51\xc1\x44\x95\xa5\x6a\x5a\x0e\xd1\x7a\xd8\xbd\x65\xfc\x5e\x99\x23\xa8\xd2\x6e\xe9\x44\x20\xfa\x78\x24\xd6\x34\x9b\x38\xce\xe5\xe1\x03\xd7\xd6\xb6\x5b\x43\xcf\xb4\xac\xd1\x7c\x1a\xa2\xf7\xf4\x1a\x49\x5e\x2f\x6c\xd8\x37\x02\xde\xdb\xc5\xd0\x03\x36\x76\x42\xd7\x89\x7d\xad\xeb\x74\xd3\x73\xe0\x5e\xa5\xdb\x39\x59\xb6\xca\xfa\xaa\xf0\x07\x87\xf5\x11\xa6\xb3\xe5\xd1\x61\x5d\xed\x68\x38\x6e\xcf\x5d\xf5\xa6\xd7\x41\x6e\x7a\x5a\xd3\xb0\x3d\x49\xd8\x6e\x7b\x03\x7c\xb9\xb3\xb2\x5f\x24\x57\xbb\x5d\x5f\xfb\xca\x41\x77\x2f\xf7\xf3\xf6\xb0\x8d\xb4\x1d\x67\xbe\xc1\x7c\xd3\x2e\x76\x98\xdb\x29\xb6\x5d\x43\x35\xa6\x78\xe2\x86\xdc\xd7\xce\x0e\xed\x4d\x6f\xdc\x49\x0f\xc6\xfd\x56\x0a\xce\x0f\xbc\x19\xff\x56\x7c\x61\xf0\x79\x1d\x3f\x1d\xbe\x37\x9d\xaa\xa5\xed\xbd\x93\x8d\xa9\xdc\x3b\x2a\xdb\x19\xee\x85\xa4\xa0\x6f\xd9\xd3\xde\xd8\xe8\xef\xf6\xce\x0b\x24\xf8\x7a\x5e\xe4\x31\xac\x0a\x79\xa3\xe3\xa5\x7c\xa3\x50\xa4\x0c\xcd\xc3\x9e\x90\x93\x52\x23\x5f\x0f\x09\x3b\x40\x35\x1e\x00\x79\x37\x29\x97\x21\x6d\xef\xc2\xb3\xbf\xdf\x56\x6a\x72\xa5\x21\x17\xe3\x11\x64\xb6\x71\x0c\x1d\x32\xbb\x19\xf3\x09\x90\xd0\xa3\x35\x12\xb2\xef\xbb\xfb\x15\x9a\xc3\x80\xb5\x79\x0b\x7f\xe7\x41\x84\x1b\xbb\x73\x54\xc2\x75\xde\x79\x25\xa1\x79\xdb\xad\xd3\x5b\x78\xf1\x86\x84\xec\xbb\xf3\x57\xc2\xd3\xb3\x77\x70\xc2\x50\xe4\x5b\xe9\xbb\xce\x72\xbb\x2e\x17\x6b\x99\x52\xf1\x78\x80\x39\xed\x3b\x33\x73\x4f\x46\x3c\x2d\x17\xa4\x0f\xf0\xfe\xf9\xc3\x3b\xd4\x17\xf1\x98\xfc\xd8\x7f\x47\xd5\xd7\x53\xf2\x63\x37\xe4\x1f\xaa\xa6\x0e\xc8\x18\xff\xa0\xbe\xff\x43\x95\x96\x13\x62\xff\xa0\xbe\x6f\xcf\xfa\xf1\xaa\x2c\xd5\xe5\x3d\xe4\x3d\xbc\x3f\x4e\x20\x9e\x36\xee\x00\xc7\x4b\x85\x82\x5c\xac\x5f\x80\xec\x75\xa0\x4a\xc5\x53\x00\x54\xa6\x46\x3d\xed\x4f\xf1\xfb\xef\x9c\x2d\x90\x27\x3f\xe6\x3d\xfb\x3b\x9c\x07\x09\x5d\xe5\xe7\x44\x96\xc5\x52\xdd\x27\x4f\xaa\x95\xa9\xa7\x0f\x64\x1d\x1f\xe7\x4f\xd0\xbf\x43\xf1\x11\x72\x0b\xf3\x1f\x80\x6c\x05\x50\xce\xbf\x4e\xfb\xb5\x4a\x9e\x9a\xda\x96\x4a\xb4\xb9\x8d\x4d\xca\xc4\x93\xfe\x1c\xf7\xc9\x56\x0c\x21\xc3\x0f\x9b\x6e\x1a\xd1\xf1\xdc\x74\x7b\x2e\x56\x4c\xe2\x4c\xb1\x4a\xa8\x9f\xd4\xd3\x93\xaf\x75\x69\xb8\x83\x9e\x65\x68\x47\x61\x90\x13\x66\xfd\x4a\xb9\x63\x75\xab\xc2\xef\x8c\xee\x95\xe0\x9c\xd0\x3d\x6d\xf7\x6f\x78\x7f\xfe\x41\x51\xd4\xc6\xae\xbb\x64\xe5\x6e\xe7\xa2\xd8\xc8\xe7\x5f\xb6\xdf\xe2\xe9\xd4\x34\xb6\x27\x18\x6a\xe3\x92\x3b\x2e\x1e\x4f\xa9\x0d\xa1\xdb\x5b\xea\xcd\x9a\x90\x3f\xfe\xf2\xcf\x4a\xd0\x92\xdb\x6b\xfc\x6e\xad\x86\xa3\xf9\xb0\xb2\x03\xa0\x6e\xc9\xac\xd5\xa5\x6a\xdd\xd3\x19\x7a\xfb\x45\xa6\x18\xaf\xca\xdb\x09\x8e\x75\x76\x5f\x15\x4b\x54\x21\x53\x6c\x4a\xf9\x86\x7c\xb8\x97\xda\xef\xf7\x71\x29\x9e\x96\x29\xfa\x1a\x33\x91\xc5\xee\x07\xf4\x2e\x77\xc5\xe8\x1b\x13\x77\xbf\xa3\x52\x13\xb2\x72\x17\xd8\xfc\xf3\x29\x80\xe3\xa7\x1f\x3f\x6c\xd2\x57\x4d\xec\x38\x7f\xf9\xa7\xcb\x3b\xb9\x51\xea\x00\xdb\x58\x75\x89\x4d\x2d\xb0\xbd\x36\x26\xfd\x3f\x39\xf6\xaf\x0b\x13\xe5\x19\xde\xbb\x39\xf3\xdc\x85\x03\x5f\xc6\xc4\x25\x7d\x62\xfb\x69\x3c\xb8\x6b\xe7\xc9\x3c\xdb\x7d\xe3\xe8\x9d\xe9\x4e\xc3\xf3\xdd\x3d\x0f\xf0\xcc\x00\xc4\xbd\x0f\xb8\x26\x8f\x07\xab\xed\x31\xcc\x5f\xa6\xb4\x97\x18\xa1\x4a\xad\xa2\x9c\xa0\x62\x9d\x2b\x1c\x79\xee\xdf\x65\x86\x0e\xb0\x7c\xcd\x7f\x6f\xce\x8d\xe7\x69\xdb\x3b\x14\xf7\x6a\xdd\x0e\xce\x4e\xed\x7c\x6b\xa6\xf7\xbe\xbc\x4e\xf5\xe4\xa3\xff\x14\xd4\xf3\xdb\xf6\x40\xfb\x2d\x40\x9b\xb7\x7a\x7c\xbe\x49\x23\x2e\x36\x4c\x87\x1a\x3a\xd6\x44\x09\x56\xb6\xbd\x17\x76\xaf\x1c\x76\x70\x76\x72\xd8\x47\xf1\x02\x68\x3b\x0a\xad\x85\x5a\x85\xe7\xa2\x7a\xe7\x07\xee\xc4\x72\xe4\x76\x6f\x27\xe2\x40\xc7\xde\xca\x01\x1f\x86\xf7\x89\x08\xd7\xff\x10\x5a\xf3\x6d\x4c\xd6\xdc\x7d\xdf\x9b\xfc\x63\x6c\x82\xdd\xab\x83\xbc\xbe\xf3\xa9\x16\xba\xef\x41\x75\x76\xb7\xbe\xa8\xe3\x07\x5e\x68\xbf\x12\x59\x2e\x36\x7b\xaa\x65\x4c\x9c\xf3\x3a\xa8\x13\xd2\x9b\x5a\x96\x79\xbe\x75\x1b\x35\xd7\x49\xd0\x5c\x6f\x9b\x6d\xe2\x10\x7b\x11\xd4\x65\x8c\x57\x3d\x77\xd5\xdb\x98\x4e\xc7\x78\x0b\xea\x35\xb5\x2d\xd7\x52\x2d\x33\x90\x2f\x10\xc2\xb6\x06\x1c\x58\xee\xd5\xfe\x80\x43\xf0\x95\xbd\x28\xbc\x15\xb8\x6e\x57\x6e\x65\xf9\xb1\xdb\xcb\x45\x1c\xbf\x6a\xbb\xb9\x89\xd1\x3b\xb7\x9f\x8b\xb8\x3e\x6e\x47\xe7\xbb\x5f\xd8\x9e\x8e\x8e\xf3\x0f\xd3\xcd\x8f\x3e\x9f\xcf\x0e\x9c\xe4\x7e\xce\xf7\xd9\x7a\xe4\xaa\xc7\xca\x76\x67\xba\x73\x63\xf2\xbe\x72\xac\xb9\xad\x1e\x52\x6f\x01\x5b\xc2\x7e\x99\x3f\x3d\xfd\xf8\xf1\xa1\x47\x88\x75\xb0\x8b\xa6\xdc\x2b\xce\x5d\x52\xf1\xcf\x87\xee\xe3\xbb\x7d\x2d\xca\xae\xb2\xcd\x24\x04\xa2\xf5\xa5\x34\x2f\x75\xda\x65\x59\x2f\x75\x19\x6f\xa7\xe7\x6c\x87\x8f\xc9\xe1\x2b\xfd\x2e\xa2\x3b\xf4\xba\x80\x71\x4b\x92\xe1\xf4\x1c\x62\x9a\xc4\xa6\x14\xcb\x32\x09\x9e\x78\x6d\x47\x01\xd4\xb3\x39\xde\x2d\xd8\xde\xb6\x0a\x80\x8a\xa7\xe5\x78\x8e\xfa\xf3\xcf\x63\x16\xff\x8b\x02\x7f\xfd\x75\x0d\xd4\xb9\xe1\x7b\xae\xfe\xbf\x0f\x8c\x86\x80\x77\xc2\xb4\x0f\xbc\x4f\x22\x5b\x02\x2f\xea\xfa\xf9\xb8\xe3\x03\xb4\xff\x7c\x24\x39\xe4\x56\x17\xc6\xc6\xdc\xb3\xd9\x5d\x8b\xda\x3e\x66\xbb\xbb\x82\xe5\x57\x6d\x78\x37\x32\x7b\xe7\x96\x77\x05\xdb\xc7\x4d\x2f\x68\xc0\x85\x6d\xef\x24\x52\xff\x40\x5d\xdd\xeb\xe7\x31\x49\xa1\x4f\x1f\x3b\xe3\x7c\xe5\x4c\x13\x76\x67\xbc\xbc\xc9\x9d\xed\xfb\x8e\x3a\xd8\x3d\xc7\x81\x4b\x2f\xe8\x68\xf3\x5b\x0e\x27\xee\xaa\x47\x26\x0b\x62\x5a\x53\x72\x2e\xe0\xe7\xae\x36\x47\x85\xb9\xe9\x06\x34\x8e\x89\x8b\x03\x9a\x36\x52\x08\x6a\x76\x8c\xfe\x04\xbb\x73\x9b\x9c\x8b\x4d\x89\xdc\x5f\xff\xfd\x3f\xef\xde\xc5\x7f\xfe\xf7\x9c\x7f\xf1\xdf\xff\xe3\x3f\xb3\x90\xb1\x15\x10\x46\x7a\x87\x35\xb1\x26\xe4\xa2\xb7\xf2\x0e\xeb\x23\x98\x1d\x67\xc6\x98\xf4\x14\x6b\x3e\xd1\x9c\xcd\xcc\x09\x36\x9e\xf4\x2f\x05\x3d\xbd\x20\x98\xa1\xed\x57\xcf\x3e\x51\x16\x66\xc9\x7b\xcb\x67\x9b\x9d\xbc\x92\x83\xab\xc9\xf5\x0b\x01\xc3\xe3\xd0\xcc\x71\xb8\xf0\x36\xc7\xfd\x71\x4c\x84\x4c\x51\x5e\x64\xea\xa2\xc3\x1f\x86\xc9\xc0\x9d\xf3\x61\x6c\x86\xce\xf2\x5e\x64\xf4\x8a\x99\x3f\xcf\x6a\x02\xbb\x98\xd2\x2d\x3b\x44\xae\x80\x4a\x48\x75\xe9\x0a\x8b\x99\x62\x4d\xae\xd6\xa9\x4c\xb1\x5e\xfa\x90\x2f\xd8\xee\x8e\x35\xea\xcf\x27\xba\x67\x4c\x0c\xd7\xc0\x66\xcf\xcb\x0e\xfd\xed\xcc\xcc\xa7\x17\xea\x09\x02\x9a\xff\x4e\x83\xef\x10\x51\x34\xfc\x01\xe0\x0f\x96\xfe\x9b\x41\x48\xa0\xd1\x77\xc0\x3f\xfd\xf5\x4f\x38\xe8\xb0\xe7\x55\x28\x9d\x88\x40\x59\xf7\x5c\xcb\xd0\x2e\x63\x12\x69\xe6\x16\x44\x4c\x6f\xee\x90\x83\x85\xef\x19\x93\x0f\x45\x51\x17\xd1\x71\x34\x4d\x8b\xb7\xe0\x63\x7b\x58\xd3\x7a\xfe\x60\xca\x65\x1c\x48\x14\x85\x5b\x70\xa0\x9e\xb7\x9d\xec\x3d\xdb\x6d\xe6\xe9\x22\x0a\x1e\xb0\xec\x4d\x62\xe3\xf6\x28\x76\xd6\x26\x04\x0a\x86\x67\xb9\x5b\x50\xf0\xbd\xb1\xa5\x19\xfa\x3a\x3c\x17\x02\x2d\x02\xb8\x43\x11\xb0\x34\x2e\x26\x74\x6e\x5d\x1b\x1f\x92\x3a\x7b\xda\xe9\x17\xea\x29\x15\xab\x96\x3b\xe9\x4c\x1e\xc6\x33\x4c\xb2\x58\x61\x63\xed\x7c\xb2\x50\x4c\xe4\x93\xd9\x46\xb1\xdc\x80\xe9\x0e\xd3\x2d\x24\x6b\xe9\x52\xb1\x11\x97\x4b\x52\xad\xc5\x57\xe2\x7c\xa9\x0d\xd3\x7e\xf9\x04\x22\x81\x1b\x24\x71\xc8\x54\x92\x30\xdd\x90\x11\x94\x0a\xed\x46\xb2\x91\x66\xa4\x4e\x56\x6a\xb7\x53\xed\x76\x13\x36\xd3\xed\x4e\xa7\xca\xc9\x9d\xb6\x5c\x2f\xe7\x12\xed\x6e\x4d\x6a\x71\x7c\xbb\xc4\x86\x46\xc2\x6c\x91\x54\xca\x9d\x54\x9a\xcd\x21\xbe\x1d\x4b\xc8\xc5\x5c\xae\x8d\x50\x2e\x51\x6f\x95\xea\x39\xd4\x4a\xb4\xaa\x95\x52\x1a\xe6\xd3\x72\xa2\xcd\xc8\xb9\x66\xa6\x52\xcd\x17\xe4\x5a\x2a\x96\x0a\x8d\x84\xdd\x8a\xab\x9d\xaa\x64\x5b\xcd\x7c\xab\xd4\x49\x27\xf3\xcd\x7a\xae\xd5\x44\xc9\x54\x5a\x62\xf2\xc5\x4e\x07\x66\x2b\xb9\x02\x5f\x92\xb2\x52\x43\xae\x24\x1b\x5c\xbe\x1c\xaf\xc9\xc9\x66\xbb\x54\x0c\x8d\x04\x6d\x90\x48\xa8\x15\x2b\x77\x24\xd4\x61\x5b\x92\x9c\x6e\xb7\xaa\xb0\x91\x2b\xc1\x46\x89\x8d\x35\x52\xe9\x46\x85\x67\xe5\x46\x39\x57\x2a\xc2\x4a\xba\xc9\xb6\xaa\xe9\x52\xa6\x5a\xcc\xe5\xd2\x30\x34\x12\x6e\x2b\xae\x76\x2e\xc5\x55\x8b\x6c\xa9\x98\x91\xcb\xf1\x42\x31\x19\xe3\x19\x28\xb1\x0c\xd7\x45\xe5\x62\xa2\x56\xcd\xa7\x5a\x39\x3e\x15\xcb\xc7\x0b\x95\x7c\x26\x59\x62\x6b\xbc\xdc\x69\x35\x1b\x4f\x51\x53\xa9\x9b\x0d\xe5\x8a\xd6\xd6\xe4\xbc\x1c\xaf\x1f\xe5\xa6\xff\x76\xc8\xe5\x34\xe3\x0b\xc5\xbd\x50\xae\x3d\x27\x21\xd6\xd2\xc7\x04\x62\xe4\x95\xe4\xf9\x3b\xc7\xeb\x48\xb5\x89\x66\xb8\x3d\x6c\x4e\x07\x78\x32\x1f\xb3\x9b\xd5\x2f\x37\xaa\x4f\x9f\xa1\x98\xa7\xd8\x61\x00\xf6\x46\x2d\xf1\x74\xe7\xda\x8b\x92\xb0\x7b\xc8\x2c\x9f\xf8\x86\x2f\x14\x0c\x3b\xc7\xe7\xf2\x75\x51\x27\x79\x9f\xb3\x3b\x92\xb3\x80\x04\x51\x64\x04\x4e\x10\x5f\x28\xfa\x85\x02\x2f\xd4\xd3\x7f\xbe\x39\xee\x66\xf3\x9f\xf4\x7b\x0a\x36\xf1\x44\x25\xdf\x7e\x50\xdf\x68\x00\xfe\x06\xde\xf5\xed\x7f\x83\xe6\xd1\x8f\x80\x3e\x45\x00\x5f\x28\x66\x8b\xc0\x0b\xe6\xf8\xc1\xbe\x50\xdf\xde\xb3\xd4\x9b\xc6\x09\x76\x8d\x05\x09\x8f\xce\xc7\x0f\xf3\x42\xd1\x1e\x43\x4b\x62\xf4\x07\x1b\x7c\xf4\x0b\xf5\xcd\x13\x57\x6f\x44\xd6\x1b\x1c\x51\x95\x29\x3c\x55\xcc\x8e\x2a\x16\xf2\x02\xfa\x4c\x29\xef\x10\x7c\xb6\x94\x7d\xfc\x84\x94\x72\x34\x83\x11\x9e\x2a\x76\x4f\x15\x27\x08\xf4\xa7\x4a\xd9\x43\xf0\xd9\x52\xf6\xf1\x13\x4e\xca\x11\xb7\xf2\xf0\x54\xa1\x1d\x55\x08\x88\x3c\xff\x99\x52\xde\x21\xf8\x6c\x29\xfb\xf8\x09\x27\xe5\x88\xbe\x4c\x78\xaa\xb8\x3d\x55\x08\xf0\xcc\xa7\x4a\xd9\x43\xf0\xd9\x52\xf6\xf1\x13\xd2\x62\x44\x73\xe6\x6e\x9a\x7b\x1a\x0a\x02\x2b\x02\x24\xee\x0c\x33\xf4\xc8\x32\x8d\xb1\xb1\x95\x82\x08\x21\xc3\xf0\x10\x30\x9c\x80\xfe\x66\x79\x1e\x09\x80\x7f\x17\x87\x6a\x69\x5b\x71\xc8\x8d\xea\x47\x19\xf9\xfd\x97\xf7\x1e\x5e\x95\xd4\x2f\xb3\x8a\x1e\x8f\x34\x00\x3b\xb3\x18\x8d\xc7\x46\x2d\x11\x95\xc7\xcf\xde\x5f\xb9\x03\x8f\x2c\xbd\x33\x4a\xff\xe7\x78\x7c\x9f\x47\x01\xee\x4c\xc2\xff\x49\x5d\xe5\x69\x5e\x14\x78\x06\xee\x75\xd5\x67\x95\xe0\x19\xa3\xf4\x2f\xe0\x8c\xf1\x71\x76\xc6\xde\xfe\x4b\x39\xe3\x0e\x9c\xf1\xcc\x7e\xed\x85\xd9\x49\xfe\x05\x4b\x0e\xfa\x58\x0b\xbb\x49\xfe\x0b\x58\x3b\xac\x34\x81\x66\xf7\xd6\xe4\x06\x7d\xfc\xc2\x9c\x41\x1f\x67\x37\xae\xb4\x2f\xcc\x19\x3a\x70\x86\x10\x27\xde\xbe\xd2\xbe\xb0\x11\x61\x7c\xac\xdd\xba\xd2\xbe\x30\x6b\xdc\x0b\x05\x11\xcf\x89\x02\xe0\x85\xdd\x4a\x63\x3c\xde\xbc\xea\x9d\xbb\x4e\x6d\x2f\xd4\xb7\x7d\x11\xd4\xce\x85\x76\x2c\x53\xeb\x1d\x4b\xed\x58\x68\x8a\x35\xef\x0f\xdc\xc0\x66\x6f\xec\xb9\xe5\x70\xd4\x72\x49\xba\x7b\xf8\xe7\xe6\xe6\xa4\xed\x12\x90\x23\x5c\x0f\x58\x5d\x7e\xcc\xbf\xd8\x9d\x39\x99\x7a\x78\x6e\xea\xa3\x1e\x72\x3e\x7d\xea\x77\xf3\x76\xcf\xd4\xef\xb4\xe7\xde\xa9\x8f\x38\x4f\x97\xa6\xfe\x1e\x5b\x7d\x25\x5c\x7b\xee\xb1\x82\xa8\xe1\xda\xfd\xa3\x05\xc7\x41\x79\x8e\xd1\x44\x41\x47\x0c\x47\x08\x27\x68\xb4\x02\x79\x05\x29\x82\xa8\x43\x06\xeb\x88\xa1\x69\x85\x47\x9c\x88\x21\xab\x63\x9d\x66\x01\x83\x35\xa0\x20\xa8\x70\x0c\xa3\x00\x5e\x21\xa2\xf8\xf4\xe2\xd5\x5f\x50\xc0\x0b\x2a\xd0\x22\x0f\xbe\x03\xfa\x3b\xa0\x29\x00\x7e\x6c\xff\xfc\x59\x3e\xf1\x07\x60\x7f\x40\xf4\x37\x2b\xb2\x34\x62\xaf\xb6\xb2\x50\x64\x45\x8e\x87\x22\xe7\x1d\xf3\x69\xf0\xe1\xda\xa2\xa6\xc1\x71\xe3\xee\x1e\x04\x2c\x2e\xbf\x28\x36\x5b\x1f\xd2\x00\x0f\x79\xcc\x63\x46\xe1\x45\x40\x03\x8e\x55\x09\x26\x3a\xcf\x08\x3c\x8b\x88\xc0\x33\x04\x2a\x3a\x87\x09\x06\x8c\x06\x05\x96\xc3\x18\xf3\x40\x43\x9c\xaa\x30\x34\xc1\x08\x3f\x3d\x46\x9c\x68\xfb\x77\x46\x26\x81\x82\x44\x34\x64\x41\xa0\x20\x0f\xad\x5e\x28\x9b\x45\x22\xbc\x20\x48\x04\xce\x8b\x72\xf3\x9f\x10\x52\x98\x1b\xab\x44\x13\xa4\x42\x95\x05\x90\xc7\x02\xcb\x02\x45\x11\x54\x4d\x00\x1a\xe2\x45\x1d\xaa\x3c\x87\x74\x5a\x64\x11\xc2\x80\x08\x48\x51\x75\xc4\x2b\x8a\xc2\xf3\xaa\x4a\xeb\x0a\x0f\x00\xcb\x6d\xb9\x79\xc0\x84\xb0\xdb\xbf\x33\x72\xa1\x03\xc5\x85\x04\xc8\xf2\x57\x5b\x77\x91\x1e\x5a\x10\x84\x0b\xd2\x14\x1f\x20\xcd\x0d\xfd\x3a\x61\x75\x1d\x61\x45\x80\x80\x06\x2c\x41\x98\x03\x8a\x4a\x54\xc8\x08\x1a\xaf\xd0\x00\xab\x3c\x66\x08\x0f\x78\x06\x70\x98\x63\x35\x8d\x68\x1c\x12\x78\x0d\x12\x9d\x01\xbc\x88\xb5\xa7\xc7\xcc\x48\xa0\x34\x61\xa0\xbc\x04\x96\xbe\xda\xe8\x39\x6b\x9c\x48\x0b\xec\x05\x59\xd2\xcc\x03\x84\xb9\x59\x59\x2c\xaf\x29\x0a\x52\x19\xa2\x0a\x8c\x8e\x38\x55\x87\x9c\x40\x54\xc8\x21\x05\x12\x5d\x23\x58\x84\xba\x00\x09\xa6\x45\x11\x22\x15\x6a\xbc\x0e\x14\x86\xe6\x79\x11\xa8\x8c\x48\x03\xc4\x3d\x3d\x66\x42\xbc\x88\xc4\x19\xc1\x30\x41\xf2\xe2\x80\x88\x82\x0d\xe6\xa1\x15\xd2\x2c\xcf\x0a\x0c\xc7\x0a\xe0\x92\x38\xd9\x07\x88\x93\x7b\xa1\x9e\x78\x9a\x67\x58\x15\xb0\x84\xd3\x68\x4d\xa1\x09\x56\x31\xc0\x2c\x12\x44\x9e\x17\x55\x5a\xd1\x74\xa0\x72\x0c\xd0\x55\x96\x11\x19\x05\x09\x08\xab\x22\x11\x44\x9a\x66\x35\x40\x04\xcc\x90\xa7\xc7\x4c\x49\xa0\x38\x83\x05\x46\xf3\x88\x15\xae\xb6\xee\x9c\x2e\x86\xe7\x2f\x6d\x40\xf4\x35\xc3\x79\x65\x9f\x0f\xf1\x3c\x55\xd4\x6d\x3f\xa0\x6a\x2f\x20\xa7\x4a\x07\x4c\xfd\x15\x28\xbe\x54\x29\x8c\x06\xc5\x9f\xda\x8c\x06\x85\xf5\x25\x14\xa3\x41\x41\xa7\x09\x33\x36\x1a\x14\xce\x97\x46\x8c\x06\x85\xf7\xa5\xc9\xa2\x41\x11\x4e\xa1\xa0\x68\x50\x44\x5f\x32\x29\x1a\x94\xcd\x42\x3a\x06\xc3\x45\x04\x43\xfb\x92\x2e\x11\x99\xa2\xa1\x2f\xb1\x11\x71\xba\x69\xc6\x97\x3c\x88\xca\x97\x3f\x40\x1f\x95\x1e\xe4\x0b\x15\x47\x5c\x0c\x34\xe7\x83\x13\x95\x1e\xde\x1f\x05\x8d\x08\x47\xf0\xc1\x89\x2a\x67\xd1\x1f\xe0\x8b\x68\xfe\x80\x0f\x4e\x44\xf9\x40\xda\x17\xbb\x8a\x38\x5f\x10\xfa\xe0\x44\x5c\x17\x90\xd9\xfb\x13\x2c\x40\x1b\x39\x47\xe5\xcb\x1f\xbd\x88\x38\x5f\x10\xf9\xe0\xa0\xc7\x3c\xae\xfb\x90\x9a\xac\xcb\xa5\xed\x1b\xc2\xc3\x16\x69\x05\x3c\xb5\x7a\xb7\x07\x70\xb4\x17\x1c\x6d\xd6\x87\xcf\xc2\x51\x6d\x80\x3e\x9f\x68\xfb\x78\x62\xb4\xfa\xd7\x6d\x84\xd4\x2b\x46\xbc\x37\xe8\x76\xbd\x50\xe1\x13\xea\x74\x83\xa4\xb6\x73\x2b\x0e\x9f\xd9\xcf\x95\x5a\xf4\x78\xd5\xd7\x92\x9a\xe7\x00\x1d\x3e\x83\x4f\x95\xda\x1d\x21\xf0\x2f\x25\xb5\x9d\xab\x76\xf8\xcc\x7d\xaa\xd4\xa2\x16\x22\x7d\x39\xa9\x79\x3e\xe5\xe1\x33\xfc\xdc\x15\x1a\x3d\xe6\xfe\x55\xa4\x76\x5a\xb7\x74\xb8\xf1\x2c\x1b\x17\xae\x2e\xc4\xb5\xe7\x8e\x4b\xc8\xbd\x46\x6b\x0b\xc6\xb2\xef\xd5\xc7\xdf\x9f\xd1\xfb\x84\xa7\x14\x02\x67\x6e\x5f\x8d\x75\xb8\x01\x91\x67\x2e\xfa\x26\x7d\x3c\x73\x77\xd8\xdf\xdf\x9f\x41\xff\x84\x87\x58\x82\x67\x6e\x57\x63\x76\xb8\xe1\x7e\xf3\xcc\xdd\x61\xcd\xbe\xc6\xcc\xdd\xf1\xd0\xce\x6d\x33\xb7\xab\x9c\x3b\xdc\xc0\xdf\x6c\x2d\x1f\xb6\xe6\x7e\x97\xb5\xfc\x05\x6b\xee\xa4\x1e\xf0\x70\x03\x0e\xe1\xe3\xff\x7c\x73\xad\x7b\x85\xa9\xdb\xd6\xf8\xde\x79\xfd\xba\x85\x7c\x9f\xf0\xb4\x56\xf0\x44\xed\x8a\x00\x0f\x37\xdc\xc7\x89\xba\xc3\x5e\xbd\x4f\x54\x74\xd3\xf9\x85\x8b\xf7\x3e\xe1\xa9\xd2\xc0\x99\xda\x17\xfe\x1d\x6e\xe0\x27\x2d\xa9\x47\xcc\xd4\x57\xab\xd8\xfb\xa5\x13\xb5\xab\xf6\x3b\xdc\x08\x1f\x27\xea\x0e\xb7\xfb\xb1\xb6\xef\xcb\x55\xe9\xfd\x1a\xe3\x77\x12\x70\x7d\xbf\xf1\x8c\x9f\x57\xf2\x35\xb5\x8d\xdd\x69\xf1\x44\x40\x01\x2a\xbe\xed\xdd\xdb\x30\xff\x9f\x6f\xfb\xfa\xae\xc9\xe6\xff\xff\x3d\xad\xfb\x02\x2f\xd4\x37\x65\xbe\xde\x1c\x48\xcf\x97\x5e\x1d\xb7\x5d\x2c\xbd\x22\xa6\xf9\x11\xca\xbe\x06\xec\xa4\xf1\x62\x19\xd8\x31\xbe\xc7\x94\xef\x9d\x22\xff\x17\xb9\x2e\xa7\xb5\x7f\x87\x1b\x78\x54\xb9\xfb\xc8\xe5\x1b\x7d\x57\x9d\x62\x77\xf0\xed\x07\xf5\xdf\xff\xe3\x5b\xca\x0f\x58\xc9\xbb\xd7\x1b\x8e\xf1\x2a\x08\xe4\x63\x0a\xfd\xf6\xaf\x51\x0c\x2c\x6f\xf4\x9a\xcf\xd7\xb6\x1e\xb5\x85\xe0\xe5\xeb\x1c\x7e\xae\xa4\x24\xce\xbc\xf5\x31\x6a\x3a\x62\xf7\xe6\xc7\xb3\x9a\x0d\x02\x6b\x38\xe8\x6d\xf1\x11\x7d\x52\x5f\xc1\x6d\x55\xff\xe8\x8b\x70\xe9\x95\x50\x6f\xf5\xbb\x83\xbb\xf3\x6f\x0f\x3a\x57\x70\x21\x04\x27\xd0\xaf\xc2\x81\xa7\x70\x82\x32\x97\x57\xe1\x30\xbe\x5c\x46\x54\x38\xec\x29\x9c\xa0\xcc\xe5\x55\x38\xc8\x97\x25\x88\x0a\x87\x3b\x85\x13\x94\xb9\xbc\x0a\xc7\x1f\x7f\x8f\x0a\x47\x38\x85\x13\x94\x91\xbd\x0a\x47\xf4\x45\xb6\xa3\xc2\x39\x29\xc1\x80\xc1\x29\xd9\xeb\x80\x68\x5f\xd0\x38\x32\x6b\xa7\x65\x18\xf7\x4c\xda\x69\x21\x06\x77\x0f\x77\xac\x2f\xc8\x13\x9d\x26\xe4\x0b\x3a\x44\x5e\x22\xa7\xe5\x18\x77\xc9\xc9\x7f\xbe\x8e\x2e\x27\xc1\x07\x29\xb2\x41\x3a\x2d\xca\x80\x77\x40\x3a\x2d\xcb\xb8\x67\xee\x4e\x0b\x33\x84\x3b\xe6\xee\xb4\x34\x43\xb8\x63\xb5\x9c\x16\x67\x70\xf7\x70\xc7\xfa\x7c\xca\xe8\x34\x21\x1f\x24\xee\x51\xaf\x98\x7d\x48\x89\xc6\xb5\x97\xf2\xdd\x52\xa4\x11\xf8\x8e\xd5\x07\x78\x0e\xc7\x2f\x68\xe3\x38\x0e\x71\x98\x23\x58\x23\x10\x08\x50\x45\xbc\x00\x10\x4f\x43\x8e\xd7\x44\xc2\xb2\x88\x21\x84\x20\x5e\xa0\x55\x2c\x62\x24\x60\xcc\xd0\x22\x51\x80\x4e\x04\x86\x45\x48\xd7\xbc\x97\x03\xdd\xf5\x22\xb3\xbd\xdb\x15\x54\x62\x8b\xfe\x46\x34\x03\xc4\xc0\x5a\xda\x43\xeb\xb1\xbf\xf2\x24\x6d\xae\x54\x5e\x48\x57\x16\x95\x91\x92\x83\x69\x89\x69\x35\x87\x55\x3b\x37\x1e\xb6\x01\xd0\x53\x82\x93\xcf\xf0\x63\x20\x57\x97\xd9\xd6\xab\xd4\x66\x36\xdd\xbb\xd2\xe1\x8a\x49\xa7\x97\xff\x5e\x72\x95\x7e\xbb\xca\xc9\xbc\x95\xc8\x83\x7c\xe5\x79\xd9\xa9\xc5\xc5\xb7\xf6\xa2\xdd\xac\x33\x2b\xa3\x6c\x74\xe6\x35\x85\x4e\x2c\xc6\x95\x3c\x11\xb6\xfd\x4b\xc8\xce\x1d\xc3\x6b\x2e\x96\x49\x71\x29\x49\x92\x1c\xd3\x12\x6d\x02\x99\x06\x4b\xc4\x38\xac\xad\xa6\xb1\x7c\xb7\xba\xa2\xed\xec\x5b\x2d\x99\xcf\x82\x55\x22\x01\xe6\xb9\xd4\x74\x3c\x53\x74\x33\x51\x7f\x6e\xb7\x33\x33\xae\x61\x24\x62\x6f\xe3\xe4\xca\x7d\x4e\x95\x9e\xdb\xb3\xa4\x55\x29\x6b\x76\xbb\xce\x4f\x69\x2b\xdf\xcd\xa4\x67\xf5\x42\xf9\x69\x2f\x83\xad\x1c\x2a\xef\x98\x2b\x7e\x4e\xb6\xd7\xcf\x93\xfe\x92\xbc\xf9\x27\xfe\x7e\x9f\x79\xff\x98\x6f\xb1\x49\x40\x06\x25\x4e\x5a\x8b\x71\x50\x76\x52\x72\x7f\xa1\xd2\x3c\x4d\x37\x44\xa1\x33\x64\xc7\xf9\xd1\x58\xac\xf0\x68\x14\x67\x16\xdb\xfe\x89\x39\x5e\xf7\x25\x1f\xbc\x0f\xd7\x07\xf9\x9e\xd2\x7b\x84\xff\x86\x39\x4d\x90\x38\x74\xe0\x22\x5b\x94\x96\xef\x88\xce\xf3\x7f\x16\xff\x41\x26\x5b\xfa\x0b\xbe\x7e\x31\xe3\x35\x06\xf2\x20\x9b\x5a\xbb\x83\x65\x91\x36\x3b\x00\xaf\xa7\x16\x2d\x16\xd3\xab\x45\x3e\xbe\x2e\x21\x37\x26\xab\x71\x6f\x9e\x99\xbe\x6b\x97\x26\xdd\x0b\x02\x38\xe5\xf7\xdc\xe5\x9f\x93\xdb\xf1\x77\x5e\x9f\x55\x1f\xbc\x90\xf8\x7f\x6e\xf5\xe3\x3f\xed\x0a\xcd\xb8\x2e\x5d\x4a\x2f\x2a\xee\xc8\xc1\x95\x1a\x6c\xa8\x1a\x5e\xab\x60\x50\x5b\x6b\x85\xca\x52\xcc\x1b\x83\x59\x77\x36\x66\x50\x05\xbc\x9a\xf4\x3a\x37\x37\x33\xfd\xa5\x8a\x06\xaa\xa2\x0f\x86\x0b\x93\x1b\x60\x39\xc1\x60\x1a\x3c\x73\x1a\x8e\xc3\x5a\x8c\x1b\xbd\x25\x96\x3f\x7f\x6e\x8f\x97\xdb\xd7\xf0\xee\x1f\xf8\xda\xfc\x7b\x7d\x97\x38\x32\x64\x0a\xad\x0b\x50\x60\x04\x56\x45\x1c\x61\x15\x00\x59\x9d\x85\x3c\xd2\x21\xcb\x21\x01\x60\x05\x2b\xba\x4e\x63\xc2\x28\xa2\x82\x39\x5a\x01\x8c\x20\xf2\x0c\xe2\x09\xe2\x09\x51\xd4\xed\xe3\x4f\xd0\x0b\x75\xdc\x61\xc8\xe0\x35\x43\x06\x59\x16\xa0\x40\x43\xb6\x6f\x3d\x3e\xe8\xdc\x6b\xc8\xfc\x8b\xee\x83\xa2\x5b\xe5\x65\xe7\x35\xa9\xbd\xaa\x99\x75\xb1\x31\x7b\x25\xb3\x74\xe9\x6d\x3a\xe3\x3b\x9a\xb5\x54\xf5\xda\xdb\x28\xad\x77\x93\xcd\x6a\x3c\x07\xe5\xd1\xb6\xff\x25\x43\xa6\x4f\x92\xb5\xb7\x2e\x19\xd0\xfc\x9b\x2b\x40\xab\xa0\xcd\x08\xfb\xfc\xba\x9a\x38\xaf\xa3\x74\x4c\x4b\xb5\x75\x31\x96\x89\x55\x3b\x7a\xb3\xcb\x24\x2a\x75\x06\x2f\x97\xdd\x09\xca\xcf\xfa\x99\x94\x98\x9d\x99\x8b\xc2\xb8\x4a\xd7\x73\x78\xa5\x5a\xd9\x4a\x62\x3e\x4b\xa9\xf1\x9a\x5a\xf8\x34\x43\x96\x4b\x08\xa9\xf2\xaa\xad\x33\xf1\xc2\xb0\x99\x5b\x30\xb3\xc1\x9b\xc3\xe1\x39\x4c\xe3\x42\x3a\x0d\x1c\x14\x63\x60\xb5\xd9\xa8\x18\xee\x20\xbb\xed\xff\xbb\x0d\xd9\x9b\x34\xc7\xfd\x3b\x0d\x59\xe5\x9c\x4c\xa2\x18\x12\x81\x3d\x2b\xd3\x0f\xfc\xfa\xaf\xbd\x21\x69\xa3\x55\xc3\x81\x6d\x4b\x23\x02\xaf\x17\x67\x89\x34\x9e\xcc\xcb\x0b\xa1\xcb\x97\x51\x6c\xd9\xae\x9a\xcc\x6b\xa5\x26\x35\x5a\x69\xba\xa5\x2d\x81\x2c\x42\xa7\x90\xea\x3e\xd7\x38\x2b\x1e\x5b\xd4\xf0\x54\x79\xcb\x8e\xb4\xc6\x7a\xec\xb4\x73\xf1\x86\xc4\xcf\x06\x13\x69\x34\x49\x48\x0f\x31\x24\x50\x81\x44\x80\x9a\x82\x95\x8d\x11\x51\x20\x8f\x81\xca\xd0\x2c\x50\x31\x4f\x6b\x02\x56\x45\x45\xe5\x69\x81\xa1\x75\x51\x47\x98\x51\x34\x4e\x24\x2a\x66\x34\x41\xd0\x15\x40\x54\xa4\x3e\x1d\x5e\x09\x70\x87\x21\x61\xae\x19\x12\x06\x5c\x78\x2c\x6e\xd7\x78\x1c\x9f\xb8\xd7\x8c\x24\xae\xa9\x99\x32\xee\x8f\xe9\x26\xd4\xfa\xa8\x49\x8f\x67\x34\x31\x0b\x6a\x8a\x76\x57\xc3\x5a\x27\xd7\x15\x97\x72\xdf\xaa\xc5\x30\x69\x09\x0d\x23\x69\x6d\xfb\x07\x9b\x91\x44\x76\x6e\xd2\x6e\x3e\x95\x4f\xb2\xcd\xd5\xd2\x05\x5a\x22\xde\x94\x75\xce\x55\x90\xc9\x2a\xeb\x82\x9d\xea\xc7\xa7\xcf\x66\xb3\x5b\x18\xaf\x54\x17\xb1\x46\x51\x87\xe3\x95\x3b\x5c\x71\x05\x0d\x75\xb3\xac\xcc\x26\x4c\xd5\xd1\x59\x4e\x96\x06\xb1\x54\xad\x51\x76\x26\x82\xde\x49\x7c\x9a\x19\x49\x21\x2b\xeb\x36\xb5\x49\xa7\xd4\xd4\xba\x33\xb7\x3d\xad\xa7\x63\xae\xa2\x76\xc0\x38\x3e\xd6\xd5\x58\x26\x27\xf7\x5b\x13\x73\x91\xcc\x0c\xb0\x27\xc9\xdf\x6c\x46\x16\xb5\xba\x75\xaf\x3f\xf4\x30\x33\xc2\x37\xde\xc7\x17\x2e\xf0\xeb\xbf\x76\x66\x64\xad\x4c\x35\xa5\xb6\x32\x56\x24\xa9\xaa\x79\x2d\x5d\x59\x9a\xd5\xf4\xb3\xdd\x7a\xee\x92\x94\x30\xcc\xad\x2c\x69\xa6\x4f\x9b\xad\x7a\xd6\x69\xe7\x09\xc9\x0c\xdb\xe2\xd4\x51\x3a\x02\x19\xa6\x49\xab\x46\x62\x25\x09\xb5\xf3\xe9\xe7\xd2\x40\xca\x54\xaa\x23\x33\xc1\x67\x5f\xd3\x50\x7a\x8c\x3f\x42\x68\x5e\xc1\x04\x21\xa8\x61\x40\x03\x84\x35\x06\xea\x40\x11\x31\xd6\x74\x0d\xe8\x1c\x64\x88\xce\xf0\x44\x61\x05\x4e\xa1\x81\x02\x58\x56\xa5\x45\xc8\x08\x0c\x07\x08\x8b\x90\xc6\x7b\x66\x84\xbd\xcf\x8c\xb0\x57\xcd\x08\xc7\x88\x81\x4f\x84\x1e\x5a\x8f\x03\x8b\xf7\x1a\x12\xbf\xd7\xf9\x41\xd1\x4a\x30\xfe\x2a\x95\x58\xd4\x89\x25\x18\x37\xdd\x4c\x96\xe8\x2a\x23\x81\x02\x19\x95\x85\x6c\x95\x9b\x14\x69\x49\x24\x2d\x43\x5b\x67\x5c\x4f\x77\x2e\x18\x92\x4e\x47\x5f\x97\xec\x71\x79\xa0\x8f\x0c\xce\xb4\xcb\xcf\x56\x5c\x9f\x4f\xb2\xe3\xea\x1c\x8e\xf5\x95\xc9\x02\x0b\xcd\x5a\x55\x7e\x4d\x77\xc6\x65\x61\x6a\xa5\x9e\xb9\xf6\xac\xcf\xd2\xc3\x5c\xbc\x55\x5c\x36\xad\x32\x4f\xf3\xf1\xa6\x5c\x26\x3c\xc8\x00\x97\xb4\x16\x75\x32\x1c\x65\x3f\xcd\x90\x24\xdc\xfe\x62\x99\x98\x97\x5a\x52\x45\xe4\xab\x74\xb5\xee\x36\xb4\x65\x31\x91\x9e\x26\x5e\xe3\x0d\x32\x7d\xd3\x2a\xe5\xb6\x69\x4d\x54\x23\xdf\xf4\xfa\xff\x66\x43\x62\x0f\x59\xfa\xcb\xf8\x23\x68\xe9\x63\x2c\x80\x5f\xff\xb5\x33\x24\x30\x95\x16\x86\x33\x34\x64\xdb\x28\x33\x9f\xe2\xb7\xd7\x99\x34\xe1\xa7\xeb\xee\x48\x71\xa7\x13\xa1\x4b\x8a\xb9\x12\x36\x47\x44\x70\x5b\xd9\xe1\x6b\x0e\xc7\x16\x73\x93\xb3\x4a\xc5\xce\xba\x6f\x0e\xd5\x24\x4e\x3c\x8b\x64\x69\x56\x13\xcc\x5c\x8c\x17\xf3\x6d\xd3\x06\x8c\x85\xe2\x95\x87\x18\x12\x55\xd7\x04\x81\xe6\x88\x86\x04\x5e\x45\x44\x13\x04\x8d\x60\x40\x14\x00\x04\x5a\x50\xb1\xce\x08\x2a\xe0\x11\x20\x3c\xcf\x02\x02\x90\x46\x18\x15\xf2\x34\xcf\x11\x11\x13\x22\x10\xe2\x19\x12\x74\x9f\x21\x41\xd7\x0c\x09\x0b\x59\x18\x1c\xa1\xd9\xb7\x1e\x27\x04\xee\x35\x24\xc9\x6b\x8a\x66\xcf\x8a\x5c\x9e\x94\x70\x7f\xb8\x2a\xe0\x46\x59\xe4\x62\x6f\xba\x23\x12\xa0\x5a\x76\xb1\xdb\x7e\x8b\xb5\xb2\xa3\xa4\x95\xe3\x47\x8b\x91\xa7\x3b\x17\x0c\x49\x71\x5c\x19\x68\x15\xb2\x2e\xa8\xad\x64\xab\x2c\x68\xcd\xea\x28\xe1\x26\x6b\xac\x9b\xce\xc4\xd7\x39\x0d\x97\x47\x55\xee\xf9\x35\xcf\x3f\xbb\x85\xb7\x5c\xcb\x6a\x0c\x95\x84\xd4\x76\xd4\x6a\x27\xf3\x3c\xe4\x92\xda\x6b\x33\xd9\xc0\x89\x37\xad\xe3\xb4\xe2\x92\x93\x66\x40\x6b\x3e\xcc\xe4\x3f\xef\x60\xc3\x0d\x89\xc1\x0c\xc7\x56\x46\xa8\xa7\xcc\xc4\x2b\xe9\xab\x0c\x5f\x6e\xbb\xe9\x5c\xee\xad\xd5\x14\x96\x4d\xa3\x1b\xc3\xf1\x39\xca\x23\x6f\xcb\xfd\xdd\x86\x64\x42\x93\xc4\x97\xf1\x48\xd8\x23\x37\xa4\x71\x81\x5f\xff\xb5\x33\x24\x6f\xdd\x51\xa6\xdd\x48\x3b\xc3\x74\x72\xd0\x1c\xbe\xa6\x9b\x8d\xae\xc4\x57\x1b\xf3\x7c\x75\x2d\x39\xc6\xa4\x35\x44\x32\x59\x2c\xd6\xcf\xaf\x76\xbd\xb0\x36\x67\xc9\x0c\x5c\x2e\x93\x7c\x5a\x6e\xc5\xcb\xd6\xf3\xa0\xad\xd3\xd5\x66\xaa\x2f\x30\xad\x7c\xb2\xdf\xcf\xc7\x44\x31\x69\x5b\xeb\xf8\x83\x22\x24\x48\xc5\x9a\x4a\x00\xd2\x55\x80\x35\xa4\x71\x3a\x01\x40\x54\x04\x05\x68\x44\x51\x81\xc6\x68\xba\xc6\x40\x82\x59\xa8\x08\x44\xc1\x0c\x11\x09\xe6\x04\x15\xf2\x2c\x47\x58\x1a\xe8\xbb\x63\xc9\x3d\x4f\x1e\x1c\xbd\x26\xe6\xea\x09\x07\x09\x22\x17\xec\x9a\xec\x5b\x4f\x32\x83\x9e\x2a\xdc\xb8\x8f\x7a\x26\x25\x73\x4e\xc5\x8e\xee\x3b\xdb\xfb\x6a\xb3\x59\xf3\xee\xe3\xfd\xd7\xd8\x50\x68\x32\xe2\x72\x98\xa1\x6b\xb6\xc8\x59\x2a\x5f\x1a\xdb\xee\x00\x0e\x63\x2b\x31\x5f\xaa\x68\xe2\xa8\xd9\x94\x33\x76\xa7\xd6\x7e\x3d\x5c\xef\xf0\xe4\x03\xfe\x8a\x54\xac\xd4\xde\x16\x53\x39\x16\x97\xda\x0b\x87\x2e\xf7\xc7\xe9\xd7\x46\x52\xd1\xa5\x8e\xcb\x94\xa4\x7e\xbf\x53\x6e\xd6\x35\x30\x1d\x36\xd5\x2c\x6e\x32\x66\x42\x7e\x1d\x96\xba\x85\x49\x3e\xd9\x2d\x8c\x92\xf2\xa0\xcf\x6a\xe6\xbc\x59\x59\x91\x44\x57\x5a\xd6\x73\x8d\x32\x9e\x68\xce\xb2\xff\x33\x84\x79\x49\x1d\xeb\xef\x65\xf3\x72\x14\xfc\xbc\xd5\x4f\x69\x34\x9b\x0d\xcf\xbc\xdc\x1c\x6b\xda\x5e\x69\x9f\xfc\xfc\xcb\xaf\x22\x9d\x1e\x1e\xa2\xf8\x51\xdd\xe5\x3b\xbf\xef\xa6\x24\x40\x17\xde\xaf\x33\x01\xe2\x63\x13\xca\x77\xf2\x82\xc4\x0f\xcd\xbe\x5c\x26\x40\x6b\x34\xf8\x66\x5a\x4d\x54\x56\x5c\xe5\x75\x69\xa6\x67\x2a\xd3\x48\xd0\x08\x67\x99\x8c\x41\x7b\x3c\xf1\x63\xc7\x3b\x1c\x4b\xfd\x73\xd8\x8e\xf9\x3d\x77\x6d\x69\x4e\xdc\x87\x7f\xac\xbe\xe3\x8f\x10\x20\x96\xe8\x58\xbe\xf4\x3c\xaa\xc8\x99\x18\x79\x7e\x6b\x3c\xc7\x3b\xba\x58\x69\xba\x42\xcc\x60\x54\x36\x1e\x8f\xf5\xc5\x66\x91\xa9\x8d\x8b\xcd\xa5\x39\x6d\x93\x46\xa1\xfe\x5c\x40\xa3\xb5\xea\x34\x47\xeb\x4a\xa3\x96\x4a\x0c\x60\x0b\x35\x13\x49\xb6\x38\x4a\xc4\x0a\xd3\x8a\x38\xd3\xe0\x5b\xfc\x31\x71\x1d\x81\xa6\x69\x11\xaa\x8c\xc0\xb1\x8c\xa6\xf3\x8c\x0a\x68\x84\x11\xa6\x35\x9e\x57\x04\x00\x35\x5d\x07\x48\x63\x75\x04\x74\x95\xd3\x68\x20\xd0\x1c\xc6\x3c\x52\x01\xe6\x68\x20\xea\x22\xf6\xcc\x1f\xbc\xa7\x1e\xef\x16\xf3\xc7\x41\xc4\x07\x9b\xbf\x7d\xeb\x49\x39\xc3\xce\xa3\xba\x2d\x1e\x71\x8b\xf9\x6b\x36\x8b\x3b\x9d\x88\xd3\xf3\x98\x96\xb6\xea\xf3\x7e\x61\x51\x71\x13\x7c\x6c\x90\xc9\x33\x45\x22\x6a\xcd\xb2\x9e\xca\x3c\x67\x0d\x94\x5d\x34\x4a\xcf\x5d\xc9\xe5\x99\x73\xe6\x2f\x79\xc0\x5f\x29\x9b\x7d\x3e\x95\x1f\x64\xfb\x60\xc5\x0f\xa7\xd2\x92\x96\x97\x5c\x1a\xb6\x93\xdc\xba\x9a\x19\xeb\xd9\xcc\x32\xa9\xaf\x80\x58\x9c\x1b\x48\x71\x4b\x59\x29\x49\x96\x49\xa9\xa8\x97\xb0\x14\x13\x92\x95\xae\x89\xa6\x8c\x84\xfa\xcc\x88\x4b\xa4\x13\x46\x5f\x6f\x14\x1b\x09\x9a\xeb\xab\x9f\x67\xfe\x6e\x8d\xf7\x34\x9b\xf5\xea\x0e\xca\xad\x39\xc3\xed\x75\xab\xf9\x8b\x12\x8f\xaa\xf7\xdf\xf9\x3d\xbf\xf4\x23\x98\xbf\xd8\x1c\xc7\x95\x66\xbb\x0b\x13\x66\xbb\x85\xed\x26\xd7\x58\x2d\x95\x16\x93\x2a\x66\xfb\xd3\x09\x23\xd5\xe2\x83\x4c\x72\x8a\x94\x55\x2d\xd3\xf2\xcc\xdd\x83\xcd\x5f\x14\xfc\x77\x9a\xbf\xe7\x56\xc2\xe9\xcc\xe5\x71\xa2\x9e\x9e\x97\x46\x89\x44\xa3\x9e\xb0\xf4\xae\xda\xb6\xb3\xb2\xd1\x15\x46\x43\xa9\xf9\x9a\xae\x03\xc8\xe5\xcd\x39\x60\x47\x52\x93\x97\x1a\x12\x2d\x20\x4b\x4a\x2f\x9b\xb1\x71\x7b\x3c\x51\x13\xe3\x04\xa9\x5b\x05\xb5\x94\x8b\x89\x15\xba\x52\x6e\xcf\x62\x0f\xf2\xfe\x34\x56\xe0\x34\x45\xd3\x00\xd4\x58\x0e\x08\x34\xcf\xf1\xb4\xca\x62\x84\x79\x22\x6a\x1c\x11\x38\xa4\x62\x28\xaa\x0a\x4b\x13\x0e\x6a\x3c\xc6\x3a\x0f\x30\xd4\x09\x41\x0a\xc3\x69\xc4\x33\x7f\xcc\x3d\x65\xa0\x37\x99\x3f\xc4\x33\x17\xcc\xdf\xae\xf5\xa4\x06\xcb\x53\xc5\x1b\x0f\x3f\xbf\xc7\xfc\xa5\x0e\xf8\x2b\x31\x71\x34\xce\xb5\xe0\x8c\x59\xf0\x15\x7d\x2d\x94\x0b\x64\x24\x2b\x74\xbd\x9e\x41\xc6\x6a\x36\xca\x80\x98\xd5\x6f\xdb\x25\x97\xef\x97\x68\x0e\x56\x94\xd1\x00\x6a\xb5\x7a\x43\x27\x09\x6b\xa1\x82\xb2\x84\xf5\x41\xa2\xbd\x72\x07\x4d\xc9\x74\xf2\xf3\xa1\x19\x1b\xaf\x87\x31\xa9\xf3\x79\xe6\xef\xd6\xc3\xe5\xaf\x36\x7f\x51\x0e\xbf\x9f\xe2\xfd\xc5\xe7\x16\x63\xb9\x2c\x9a\xc5\xcb\xf2\x6a\x5a\x79\x65\xac\x74\xf1\xf9\x8d\xe6\xab\x6b\xc3\xa1\x4d\xbd\x90\xec\x8c\x2b\xad\xbe\x3d\xaf\x3d\xd7\xbd\x01\x0f\x36\x7f\x51\xf0\xdf\x69\xfe\xd2\xb0\xd6\x99\x2a\xd8\x26\xaf\x6e\xec\x35\xbf\x14\x56\x5c\xa5\xba\x68\x16\x0b\xc3\x71\x3e\x35\xab\x0c\x2b\x29\x23\x46\x1c\x8e\x99\x4b\x7c\xdb\xee\xc6\xe6\xb5\x74\x97\xce\x16\xab\x22\x5b\x32\xc4\xb7\x8a\x10\x9b\x3e\xcb\x45\x3d\x05\x93\x8d\x78\x6b\x39\xe7\x4a\x8d\x94\x92\x2b\xc8\xb1\xfe\x43\xcc\x1f\x03\x09\xab\x60\x5a\x87\xb4\xa0\x70\x18\x43\x16\x02\x85\x15\x79\x16\x71\x98\x56\x80\x08\x44\x40\x18\x81\xe1\x09\xc7\x29\x0c\x2b\x22\xc0\x00\x8d\x25\x9a\xc6\x01\x0d\xe8\x00\xf1\xc0\x33\x7f\x77\xfd\x02\xe1\x91\xf9\xbb\x1a\x97\xe7\x44\x28\x04\x87\xd3\xf6\xad\x27\x85\xa3\xf7\x7a\x7f\x17\x0a\x05\x1e\x7d\xf8\x3d\xf2\xfe\x0a\xd9\xf1\xe2\xd9\x1c\x24\x51\xa5\x6b\xf6\xb5\xcc\x2c\xd6\x4e\xd4\xb4\x81\xec\xf6\x6d\x5c\xb7\xab\xb5\x65\xd3\x46\xda\x6b\xcc\x2e\xc6\xa1\x40\xf4\x74\xc1\x5a\x75\x8a\xf8\x19\xce\x45\xb7\x26\x6b\xab\xc6\xf3\x20\xd5\xe6\xb2\xd5\x16\xbf\x94\x92\x8c\x52\x9a\x4a\x82\xbd\x5a\xad\x24\xf9\xeb\x78\x7f\xbf\xfa\xf0\xfb\x10\xef\xef\x43\x42\x3f\x6c\xec\xed\x4e\xef\x6b\xc4\x5e\xa0\x41\x3a\xcb\xff\xf6\xda\x99\x9f\xe5\x18\xbf\x72\x2d\xb9\x6d\xc6\xc6\xad\x18\x30\xac\xa4\x5a\xcc\x42\xb9\x06\xe3\xee\xb4\xe4\x26\xf3\xb1\xd6\xc2\x64\x84\x94\x03\xf2\xca\x0a\x09\xea\x7a\x98\xec\xd3\x36\x8f\x79\x48\x67\xaa\x4c\xb2\xce\xc9\x5d\xdd\x32\x93\xca\x42\x92\xda\x9a\xc3\x8d\x12\xeb\x45\x3a\x2d\x4b\x8f\x09\xe2\x03\x51\x05\x34\xcb\x63\x0e\xaa\x02\x14\x18\x48\x13\x22\x88\xa2\x06\x54\x55\xd5\x44\xa8\x0a\x34\x82\x88\x10\xcc\xd3\x10\x01\x1e\x02\xc8\x01\x06\xd2\x0a\x83\x21\x2b\x8a\x88\x08\xca\xd3\xfe\xf1\x94\xe8\x4f\x08\xde\xe2\x7d\x09\x2c\xcf\x70\x17\x5e\xac\xeb\xb5\x9e\xd4\x88\xef\xbc\xaf\xdb\x6a\x6a\xc2\x79\x5f\xde\x4e\x74\x63\x81\x41\x34\x73\xe5\xa9\x57\x9e\x13\x8e\xd5\x4f\x3e\xd0\x5b\x89\xe3\xf4\x60\x6a\x34\x8b\xa2\xcc\x32\x7c\xa6\x9d\x54\xd3\x53\xbd\x69\x5b\x2b\xba\x56\x7a\x2d\x66\xdd\xf8\x38\x06\x07\x7d\xdc\x2f\x54\xd2\x89\x6a\x22\x55\x29\xa4\x8b\xcc\x6c\x58\x53\xeb\xa5\xd9\x8c\xc8\x4e\x51\x9e\x2f\x72\xcf\x13\x3e\xc3\x2a\xcf\x62\xd2\x06\x55\xc6\x5d\x8e\xd5\xbe\x13\xc6\x5c\x1d\xcb\x27\xd8\x5c\x6d\x1d\x99\xaf\x6e\xae\x2a\xbf\x85\xbe\xf8\xf3\x22\x7e\x89\xbe\x2b\xde\xdc\xad\x3a\xf4\x08\x6f\x4e\xbe\x0f\xff\x9d\xde\x5c\xd6\x22\xa9\x71\xb6\xc1\x80\xfa\x50\x77\x06\x6a\x73\x49\x4c\xb1\x35\x1f\xa6\x9b\x19\x5e\x00\x63\x90\xeb\xa4\x71\x2a\x36\x93\x56\x92\x5a\x94\x0b\x5d\x69\xa9\x32\x64\x56\xcc\xae\x0a\xdc\x6c\xca\xd6\x96\xa0\xc6\x09\x36\xa7\x3b\xc3\xc1\x82\x07\xad\x45\x35\x4d\x98\x78\xf7\x51\xa9\x0c\x9e\x67\x38\x1d\x28\x02\x27\x6a\x04\xe8\x3c\x8b\x11\xd1\x78\x5d\xd0\x38\x04\x45\x91\x15\x21\x23\x10\x05\xe8\x80\x85\xb4\xce\xe8\x2a\x54\x14\x95\x65\x04\x20\xb0\x3a\xa4\x55\x01\x20\xe4\x99\xd3\xbb\x7e\x19\xfb\x26\x73\x2a\x32\xc1\x6f\xd6\x3e\xb4\x9e\x3c\xde\xe2\xa9\xe2\x8d\xb5\xd6\xb7\x98\xd3\x1b\xb3\xa3\xd1\x0e\xbf\xcb\xbd\x2a\x5a\x47\xa4\xa4\x0f\xf4\x56\x12\xc3\x58\x4d\x9a\x9b\x39\x55\x74\xab\xb3\x54\xff\xb9\x34\x6a\x2a\xb9\xf2\x1b\x6b\x99\xd5\x4a\xa7\x41\x16\xeb\xb8\xbe\x00\x79\xc9\x9c\x29\xed\x14\xb7\x2e\x2b\xd3\x2a\x88\x55\x39\x8b\x1f\xdb\xc6\xb8\x3a\x16\x4a\x6c\xd3\xaa\xc6\x52\x19\xa9\x5e\x89\xb1\xb0\x58\x6a\xa9\xc9\x37\xad\xb2\xfc\x3c\x73\xfa\x25\x0f\xbf\x95\xdf\x42\xdf\x36\x5b\x1e\xdd\x9c\x46\xd7\xa1\xc7\x98\xd3\x08\xf8\xef\x34\xa7\xa5\x42\x32\x13\xe7\x1a\xd3\x37\x48\xa7\x2c\x9c\x60\xb9\x6a\xd3\xb1\x5e\xcb\x86\xd1\x4c\xc6\x06\x55\xee\x35\x93\x7d\x7e\xad\x38\xf1\xd6\xd4\x55\x15\x3b\x23\xce\xcd\x74\x25\x99\x9e\x0d\xe7\x78\x9e\xeb\xa6\x94\x25\x3f\x68\x0d\x64\xb9\xd3\x8f\x15\xa5\xf4\xb0\x03\x50\x77\xd9\x2e\xd2\x0f\x2a\x79\xd5\x79\x56\xd5\x10\x2b\x00\xa0\x21\x86\x57\x01\xa7\xe9\x3a\x83\x54\x95\xe5\x05\x46\x21\x82\x40\xab\x50\xe3\x78\xa0\xd2\x34\xa2\x31\xe2\x54\xcc\xeb\x22\xa2\x79\x24\x68\x2a\xcf\xd2\x48\xf3\xcc\x29\xf3\x20\x73\x7a\xf5\x70\x2c\xb2\x4c\xf0\x7b\xf7\x0f\xad\x27\x4f\xe6\xdd\x6b\x4e\x2f\x1c\x8e\xa3\x79\xa7\x77\x98\x53\x9f\x77\x7a\x64\x4e\x4b\x99\x5c\xcd\x4c\x54\xc6\x62\xc3\x9e\xc1\xf9\x70\xb2\x58\x75\x87\xa9\x19\xf7\x96\xad\x4c\xd4\x72\x7d\x2a\x2c\x4c\xd6\x89\xc7\xd9\x2a\x66\x0b\x8d\x09\x4e\x77\x12\x78\x54\x6d\xd7\x93\x56\xc5\xcc\x24\x25\x1b\xb9\xc0\xca\x2e\xb5\x58\xcd\xe1\xea\x59\xa1\x80\x9a\x24\xd5\x8f\x29\x95\x50\x99\xe4\x5f\xe3\x9d\xfe\x6a\x73\xfa\x0b\xe9\x0b\xed\x9d\xbe\x1f\xb6\xef\x34\x67\x77\x1e\xb6\xd9\xfe\x34\xd7\x28\xc6\x15\xba\x36\xb7\x31\x57\x22\xaf\xc9\x71\x01\xdb\x76\xc1\x8c\x6b\x4b\xb1\x34\x59\x3f\xb7\x8d\x65\x26\x3f\x48\xda\xfd\x55\x4d\xb3\xb4\x7e\x71\x56\x4d\x6a\x85\xd6\x20\xde\xe8\x37\xe2\x8b\x31\x53\xeb\x4f\x62\x20\x99\x7b\x9b\x16\x26\xcb\x37\xb3\xc9\x62\x29\xe9\x3e\x28\xd3\xab\x8a\x8c\x2e\x00\x8e\xe3\x75\x86\xd7\xb6\x59\x0c\x91\xa8\x40\x23\x22\xa7\xeb\x0c\x23\xd0\x1c\xcb\xe2\xcd\x31\x1c\xb3\x2a\xc1\xb4\xaa\x70\x2a\x51\x68\x45\x25\x2a\xa7\xeb\x3a\x40\xc2\xfb\x6f\xd1\x3c\xe2\xb0\x7d\xdd\x9c\x89\xf4\x85\x54\xc7\xa6\xf5\xc8\x9c\x79\x0f\xf5\xde\x7b\xd8\xbe\x6a\xce\x6e\x2c\xc2\xbd\xe7\xb0\xed\xf3\x0e\x8f\x0e\xdb\x29\xd6\xe4\x47\x71\x69\x86\xf0\x6c\x51\x83\xda\x6b\xba\xee\x76\x54\x3e\x2f\x61\x7e\x5a\x6b\x18\x46\x89\xcd\xad\x73\x59\x65\x36\x76\x12\xfd\x85\x3a\x4a\xc5\xa1\xa6\x0c\x54\xdb\x12\x5d\x75\x11\xef\xa6\xf5\xe5\xac\xde\x7c\x36\x46\x0b\x21\x3d\x16\xba\x3a\xe6\x98\x51\xa7\x3c\xaa\x84\x4a\x8d\x44\x33\x67\x5f\xb2\x30\xa6\xf2\x5b\xe8\x0b\xed\x1d\x9e\x37\x67\x11\x74\xe8\x4e\x73\xa6\x18\xed\x79\x25\x13\xb7\xcd\xd9\x4c\xcc\x77\x19\x41\x2b\xd1\x83\x37\xc7\x89\xd9\x73\x33\x5b\xcb\x65\xf8\xbe\x9d\xb1\xcc\xf9\x0c\x2f\x4b\x71\x71\x5d\xe9\xe4\xbb\xf4\x3c\xb9\x9e\x0f\x21\xbd\x16\xb2\x23\xed\x35\x3e\x2d\xb6\xb9\x5c\xed\x75\x49\x94\x95\x29\xda\x36\xa9\xf6\x9f\xab\x0f\x4a\x5d\x28\x08\xea\x34\xa7\xeb\x8a\x28\xa8\x80\xe5\x09\xc3\x28\xa2\x0a\x89\xca\x00\x41\x00\x0c\x03\x54\x8d\xf0\xb4\x2e\x20\x85\x61\x59\x46\xc3\x04\xaa\x48\x55\x04\x4e\xe5\x35\x56\x13\x58\x04\x77\xe5\xbb\x0f\x4a\x5d\x5c\xab\x04\xe6\x68\x00\x83\x63\x87\x87\xd6\x93\x37\x0b\xdc\x9b\xba\xb8\xf0\x70\x92\xb7\x3c\xa3\x9b\xa7\x64\xb3\x01\x76\x7a\x73\xeb\x83\xcf\xd2\xc2\x5e\xf6\x8f\xe8\x39\xab\x7e\x47\xa9\x90\xa4\xd9\x5e\x62\x6b\xcc\xaf\xcd\x5a\x5d\x5b\xe3\x12\x3f\x2b\x16\x78\xb6\xf3\x9c\x6d\x8c\x24\x68\x81\xb9\xca\xb7\x60\xf2\x2d\x66\x8e\x9a\x04\x3a\xea\xdb\xa4\x50\xc0\xcf\x55\x61\xd0\xac\x2b\x66\x09\x99\x15\xee\x39\xa9\xd6\x0b\x68\x98\xb1\x5b\x95\xd9\x6a\x96\x4c\x76\x95\xd2\x48\x0a\x75\x18\xf6\xcb\x4f\x8a\x32\x1f\xde\x25\x7f\x61\x79\xff\xbc\x92\xe6\x69\xbc\xdf\xff\x9f\xe3\xfd\x40\xdf\x51\xd9\x7c\x94\x14\xcd\xd0\xab\x89\x7e\x3f\xd4\x7f\xd4\x9d\x0b\x66\x36\x78\xec\x43\xd2\x45\x1f\xcb\xd7\x2f\x07\x04\x1e\x2d\x8b\x90\xf8\x77\x5b\x4e\xab\xa9\xc7\x66\x86\xb2\xc8\x35\xb3\x45\x26\x6b\xf1\x73\x0b\xbc\x2d\x06\x43\xd6\xac\x55\x12\x78\x58\x43\x6f\xae\xd2\x69\x17\x52\xad\x6a\x93\xc7\xab\xb7\x92\xba\x5c\xd9\x28\xbd\x4e\x36\x8b\xf3\x06\x3f\x6e\x26\x6c\xb6\xb9\x2a\xbc\x8d\x0b\x86\xdb\x8d\xdb\x29\xab\xd1\x34\x1d\xae\xf2\xa0\x80\x00\xad\x41\xcc\x2a\x84\x87\x2c\x0f\x38\x24\xe8\x9c\xa0\x29\x08\x10\xa2\x43\x91\x60\x80\x75\x46\x17\x05\xa4\x12\x5a\x50\x90\x0a\x69\x41\x07\x0c\xcb\xd1\x1a\x0b\x54\x96\xd7\x54\x28\x6e\xb6\x1c\x6e\x9f\xae\xba\xbf\x58\xe8\x9a\x07\xcd\xd1\x02\x2d\x88\xc1\x5b\xce\xae\xf5\xe4\xc5\x31\xf7\x16\x0b\x5d\xf0\xa0\xbd\xf8\xeb\x1d\x07\xfc\xa4\x48\x76\x43\x7f\xa1\xc7\x16\xd3\xdb\x83\x0f\x9a\x8a\xf7\xf1\xdf\x98\x94\x60\x45\x5c\x6d\xcc\xdf\xda\x6d\x52\x4c\xcf\xe9\xa4\x9e\xe9\xc4\x94\xa9\x19\xb3\xca\xcf\x0a\x1d\x63\xe7\x85\x94\x0b\x1b\xa9\xae\xcb\x0d\xcb\xb9\xc5\xb2\x59\xaa\x8e\x0b\x6f\x7a\x3b\xd1\xc5\xe9\xd8\x22\x63\xd8\x4e\x46\x20\x45\xfd\x59\x4c\xd2\x72\x06\x24\x07\x62\xe1\x15\x0e\xc7\xf1\xfe\xcf\x30\xdb\x53\xdc\xb7\x6c\x6f\x7e\xd6\xf8\x1d\x5e\x32\xd9\x6c\xee\xbc\xc3\x5b\x1f\xff\x97\xda\x34\xeb\xd1\xf4\x6f\x9e\xdb\x73\x5b\xa0\xf7\xd4\xd3\x52\xfa\xb2\xa7\x85\xf7\xfb\xce\x6f\xa1\xaf\xd2\x8d\xdb\x57\xe9\xf3\xcb\xef\x0b\xa5\x36\xcf\xca\xef\x17\xd2\xb7\xd5\xbf\xcf\x96\xdf\x27\x06\xdf\x1e\x22\xbf\x3b\xe8\x93\x49\x6a\x78\xb3\xfc\xbe\x50\x2e\xe8\xac\xfc\x7e\x21\x7d\x45\x5c\x9f\x86\x93\xdf\xff\x13\x47\x00\xaf\xf2\x6d\xdb\xf7\x66\xb7\xf7\x1d\x7e\x74\x7b\xf0\x98\xfd\xf3\x7c\xa1\xee\x95\x63\xc6\x43\x8a\x62\x3f\x56\xc3\x5d\x3e\x66\xa4\xee\xc3\xff\xe1\x98\x13\x12\xff\xee\x98\xf1\x59\x8e\x5b\xe0\x31\xe3\xf4\x7d\x8c\x7d\xcb\x9e\xf6\xc6\x46\x7f\xff\xc6\x71\xdf\x7d\x6f\x3a\x22\xeb\xfd\xfb\x0d\xe3\xa5\x62\xad\x5e\x95\x32\xc5\x6b\xaf\x62\x94\xf2\x75\xb9\xba\x7b\x1d\x62\xa9\x98\xef\xf8\xa1\xfe\x41\x51\x14\x25\x25\x12\x47\x10\xcf\x22\xa6\xca\xd5\x4c\x41\xaa\x76\xa8\x9c\xdc\xa1\xfe\x34\xb4\xc0\xb7\x49\x6e\x5f\xa4\xed\xf8\x6e\x8f\xde\xd1\x7d\xf4\x4a\xee\x93\x97\x6e\xf7\x1e\xc2\xdd\x29\xda\x73\xcc\x45\x22\x8c\x6a\x14\x33\x95\x86\x4c\xfd\xf9\xde\xfd\x85\x7a\xef\xbf\xff\xec\x0d\xb8\x51\x34\x8f\x99\xd6\x9b\x19\xbf\x69\x52\x03\x7e\x0d\xf6\xca\x0f\xae\x3e\x96\xb3\xf3\x48\x2e\x71\x7a\x81\xac\xd0\x9c\x07\xbe\x68\xf5\xea\x9b\x4c\x1f\xcb\x7d\x10\x9a\x4b\xfc\x5f\x24\xed\xaa\x04\x3c\x95\x56\xd6\x3b\xad\xde\xb3\x92\x29\x26\xe4\xf6\x15\x2e\xe2\x55\x59\xaa\xcb\x5e\x57\x3f\x1c\xaa\x54\xf4\x2f\x88\x46\x2d\x53\x4c\x51\x8a\x6b\x13\xb2\x5f\x61\x01\x2b\x49\x59\xf7\x76\xbf\xf8\x18\x99\x9c\x77\x10\xc7\x94\x9c\x04\x77\x4e\xe9\xf1\x3a\xbf\x50\xbb\x0f\x3d\x87\xcc\xe6\x64\xa2\x92\x73\xc4\x0d\xb0\x33\xb8\x87\xb2\xcd\xf8\x70\x64\x1d\xcf\xed\x66\xd4\x39\x6a\x4c\xa2\xf5\xef\x98\xb8\x03\x84\x70\x14\x79\x7d\x0f\xe2\x79\xa1\xf0\x74\x6a\x1a\xaa\xb7\x00\x2d\x5b\x0b\x30\x8c\x3d\xb2\xd1\x8d\x6d\x7b\x04\x4a\x77\x76\xd9\x23\xd8\x07\xee\x98\x6c\xa2\xeb\x44\xf5\xab\xda\x47\x3b\x61\x68\x2f\xd4\xb7\xed\xe0\x6f\x41\xc4\x1a\xda\x83\xc8\x34\xb4\xd0\x04\xee\x55\x6f\x43\x5e\x04\xa2\xad\x69\x6f\xfa\x28\xba\x77\xb0\x8e\x49\x0f\xd8\x1c\x22\x71\x72\x9e\x01\x77\xf5\x38\x06\x76\xb0\x02\x74\x3a\x22\x0b\xc7\x10\xce\x31\x61\x4d\x37\x5a\x39\xb0\x22\xf1\xb0\x23\xfe\x1d\x46\x54\xe1\x5f\x16\xb4\xb3\x5b\xed\x5b\x53\x7d\xbf\xac\x4f\xc1\x1d\x93\xec\x7d\xef\xa3\xf1\x3c\x45\xc7\x72\x7d\x14\x59\x1f\x60\x86\x33\x6f\xe7\x08\x74\xbd\x29\x71\xef\x99\xd6\x77\x18\xd1\x55\xf2\x9a\xfa\xb9\xb6\xb6\xb5\x8a\xba\x7e\xc7\x76\x70\x02\xc5\x47\xab\x46\x7c\x94\xed\x7f\xcc\xea\x3c\x2d\xdb\x05\x44\xec\x9e\x69\x59\xa3\xf9\xf4\x3e\x8a\x4e\x61\x5d\xa3\x6b\xdf\x7b\xe7\x65\x04\xd0\x37\xc5\x86\xdd\x73\x8d\x31\x79\x08\x85\x7e\x68\xd7\x68\x54\xb0\x73\x38\x81\x68\x2f\x94\x9f\xe4\x17\x6a\xb7\xb0\x54\xd3\x72\x88\xd6\xc3\x6e\x00\x13\x0f\x58\x2d\x3b\x38\xd7\x28\xbe\x71\x4f\xda\x40\x7d\x98\x74\x6f\x10\xec\x55\xb9\x19\x13\x8d\xac\x7a\x3e\x43\xef\xf4\xac\x49\x0f\x6b\x9a\x4d\x1c\xe7\x5e\x81\x5e\x45\x70\xe2\x1d\xef\x9a\x7d\xfe\xa8\xd7\xf1\x06\xda\xef\xd7\x83\x4b\xb0\xaf\x53\x7c\x66\x95\x9d\x02\xdc\xf9\x3e\x1b\x78\x9b\xd3\x74\x64\x7d\xb8\x08\xf5\xaa\xb3\xb5\xe9\x74\x85\xd0\xdd\xce\xb5\x01\x79\x50\xa2\x07\x51\x7b\x0e\xf4\xd5\x4d\x33\xac\x26\x1f\x01\x7f\xb4\x32\x9c\x80\x8e\xb2\xcb\x07\x83\x1b\x4f\x2d\x7b\x63\xf8\x16\xc4\x76\x0c\x6b\xf2\x78\x41\xfb\x31\x5c\x27\xdf\x37\x20\x3c\x33\x3b\xd3\x13\xf1\x7c\x18\x4e\xfe\x47\x38\xae\x72\x72\xd4\x37\x3c\x13\x53\x9b\x2c\x0c\x6b\xee\xfc\x12\x6e\xce\x21\xbb\xca\xd6\xb9\x41\xe1\xf9\xdb\x1f\x5d\x3f\x8d\xa7\x3d\x82\xab\x7c\x04\xc6\x18\x4e\x41\xbf\xff\x3c\xe5\x67\x2c\x6d\x3f\xf4\xb3\xc7\x8e\x5b\x17\xf8\x29\xd0\x53\xc7\xf5\x41\x2b\xfc\x12\x8a\x30\x3c\x5c\xf1\xa6\x2f\x22\x7b\xdc\xf6\xf5\x11\x70\x28\xda\xaf\x6f\x62\xc7\x47\x9c\xcf\x50\x9b\x8f\xf0\x23\x1f\xb0\xb6\x4e\xdc\x61\x23\xdf\xc7\x75\x7a\x8a\x65\x8d\x22\x4b\xf9\x02\xcc\xab\x2e\xc2\x9f\x7f\x6a\xc4\xc5\x86\xe9\x50\xdf\xff\xeb\xbf\xa8\x27\xc7\x32\xb5\xa3\xac\xc1\xd3\x8f\x1f\x2e\x59\xb9\x7f\xfd\xf5\x42\x05\x77\x54\x2d\x2d\x5c\x47\x2f\x02\x1a\xdc\x55\xb1\xe6\xfd\x81\x1b\x0a\xfd\x49\xd7\xcb\x04\x9c\x74\xf5\x91\xf0\x17\xd5\x4a\xcb\x55\xd9\x53\x32\xea\x27\xc5\x30\x97\xa2\xe6\x1b\xef\xfb\xf4\xb6\xe7\x1d\x6c\x0e\xe1\x93\x9e\x7e\x14\x21\x4f\xe6\x1e\x13\x24\xd7\xc8\xb5\x90\x78\x10\x25\x54\xb2\x54\x95\x33\xa9\xa2\x17\x10\xf7\xf5\xf8\x8b\xaa\xca\x49\xb9\x2a\x17\xe3\x72\xed\x83\xbb\x7b\x25\x7f\x10\x28\x89\xdd\x81\xee\xb7\xcb\xe1\x98\x8e\x73\x52\xd8\x9f\x95\xcf\xca\x60\x1b\xc2\xbf\x5d\x02\x87\x53\xed\x57\x50\x87\x00\x62\x4e\x65\xf1\xb1\xd3\x83\x95\xc2\x7f\xd0\xff\x0a\x02\x09\x56\x8d\x0f\x91\x94\xb0\xda\x51\xb6\x1c\xb7\x6f\x93\x5a\x25\x4f\x69\xd8\xc5\x1b\x15\xa3\xb4\xf9\x78\x4a\xa9\xd6\x78\x6a\x12\x97\x6c\x79\xf8\xff\x03\x00\x00\xff\xff\x16\xe3\x1a\x94\xb7\xe9\x00\x00") + +func pathed_paymentHorizonSqlBytes() ([]byte, error) { + return bindataRead( + _pathed_paymentHorizonSql, + "pathed_payment-horizon.sql", + ) +} + +func pathed_paymentHorizonSql() (*asset, error) { + bytes, err := pathed_paymentHorizonSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "pathed_payment-horizon.sql", size: 59831, mode: os.FileMode(420), modTime: time.Unix(1508958265, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _pathsCoreSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x69\x93\xea\x38\xf2\x37\xfa\xbe\x3f\x05\xd1\x6f\x4e\x4f\xd0\x33\x48\x96\x65\x49\x33\xb7\xff\x11\x18\xcc\xbe\x83\xd9\x6e\xdc\xe8\x90\x25\x99\xdd\x80\x6d\xd6\x27\x9e\xef\x7e\x83\xa5\x0a\x8a\xa2\xaa\x4e\x01\xd5\xe7\xcc\xfc\xc7\xd1\x7d\x0a\xb0\x9c\xca\x4c\xfd\x32\x95\x4a\x2d\xf6\x17\x9e\x37\xf0\x7a\x11\x5f\x89\xc1\x4c\xfd\x72\xf8\x13\x71\x07\xde\x20\xe8\x2b\xf9\x7b\x44\x8c\xa7\xc1\xee\xfe\x58\xc9\x9e\xf2\x7f\x39\xfc\xd9\xff\xaa\xe4\x2f\x7f\xff\xfb\x2f\x7f\xff\x7b\xa4\x32\x0d\xc2\x9e\xaf\xea\xd5\x42\x44\xf2\x90\x3b\x3c\x50\x11\xb9\x98\xcc\x76\xb7\x77\xf7\x93\x8b\xc9\x4c\xc9\x88\xeb\x4f\x27\xa7\x02\x4b\xe5\x07\x83\xa9\x17\x61\xff\x30\xfe\x81\xcf\x4a\x39\x9b\xc8\xac\xf7\xe7\xee\xf1\x8b\x22\xbf\xd4\xad\x46\x24\x08\x79\xa8\x26\xca\x0b\xff\x0c\x07\x13\x35\x5d\x84\x91\x3f\x22\xe0\x5f\xfb\x5b\xe3\xa9\x18\xbd\xfe\x75\x20\xc7\xea\xcf\x81\xf7\x67\xe8\x73\x2f\xe0\x22\x1c\x4c\xbd\x3f\x03\x15\xec\xe8\xbe\x2e\x2c\xc6\x83\x1d\x69\xe5\x89\xa9\xdc\xc9\xfc\x47\xe4\x9b\xdd\x48\xd1\x6f\xff\x7a\xaa\xdb\x93\xdc\x97\x7f\x8a\xa9\xe7\x4e\xfd\xc9\xc0\xeb\xfd\x19\x84\xfe\xc0\xeb\x05\x91\x3f\x22\x53\xef\x48\xa3\xaf\xc4\xe8\x4f\x77\xe1\x1d\xea\x72\xa6\x72\xa0\x76\xf7\x5d\x3e\x0e\xd4\x8b\x6a\x26\x03\xef\xcf\x89\x0a\x02\xde\xdb\x17\x58\x71\x7f\xd7\x10\x87\x22\xfe\x74\xf5\x67\xa0\xc4\xc2\x1f\x84\x9b\x1d\x71\xd7\xfd\xd7\x51\x01\x8a\xfb\xa2\xff\xe7\x8c\x87\xfd\xc8\x1f\x91\xd9\xc2\x19\x0f\xc4\xef\x3b\x8d\x09\x1e\xf2\xf1\xb4\xf7\xaf\x5f\x7e\x49\xd6\xca\x95\x48\xb6\x94\xb4\xda\x91\x6c\x2a\x62\xb5\xb3\xf5\x46\xfd\x58\xf2\x1f\xc1\xa0\xe7\x29\x3f\xe0\x42\x4c\x17\x5e\xf8\xaf\xf7\xcb\xaa\xf1\x78\xe0\xf5\x06\x41\xb0\x50\xfe\xc0\x93\x6a\xfd\x41\x79\x31\x9b\x2f\xa6\xfe\x62\x12\x38\x9b\x40\xcd\x3f\x2c\xac\xbc\xe5\xf7\x94\x9c\xf9\x03\xa1\xbe\xa3\xfa\x03\x32\xbf\x87\x62\x7f\x10\x84\xae\x52\xdf\x59\xf2\x3b\x8a\x39\x8b\xcd\x67\x14\x75\xd4\xbe\xc3\xc7\xdc\x13\x2a\xf8\xd7\x2f\xf1\x42\xc3\xaa\x45\x1a\x71\xb3\x60\x9d\x95\x2e\x97\x0a\x9d\xa7\x47\xc2\xf5\x8e\x95\xa9\xbf\x89\xec\x09\x27\xca\xa5\x7a\xa3\x16\xcf\x96\x1a\x67\xe5\x9f\xcb\xfc\x39\x1b\xa9\xcd\xf7\x51\x75\x95\xfa\x1e\xc2\xa7\x62\xdf\x4f\xdb\x5f\x04\xe1\x78\xe0\xa9\xe0\x3d\xca\xcf\x85\xbe\x9b\xee\x8e\x0b\xb5\x77\x03\xef\xd0\x3d\x15\xfa\x7e\xba\x07\xcb\x78\x8f\xe8\xa1\xc4\xf7\x53\x7c\xb6\x87\xf7\x88\x3e\x17\xfa\x6e\xba\xb3\x85\x13\x2c\x9c\x77\x68\x1e\x0a\x7c\x86\xde\x78\x10\xf4\xe7\x0b\xb5\x78\x4f\xa7\xe7\xc5\xbe\x9f\xb6\x7a\x5f\xa7\xfb\xfb\xdf\x4d\x6d\xea\xba\xef\x93\x3b\x14\xf8\x6e\x7a\x07\x97\xd1\x57\x5c\xbe\x4f\xf6\x45\xb9\x2f\xa6\x7e\x74\x63\x6a\xfe\xe7\x77\x56\xe3\x70\xef\x1d\xe2\x0e\xf7\xbe\x9b\xe1\xa3\x5f\x7a\x8f\xd7\xa7\x22\x9f\xa5\xb9\xeb\xf6\x3f\x26\xbb\x2b\x75\xa4\xbc\x2f\x7b\x49\xf8\xd2\x19\x7e\x54\xec\xe4\xb6\x3e\x28\xf9\xec\x86\xde\x2f\x77\x72\x2b\x1f\x94\x3b\x78\x8a\x0f\x0a\x3d\x5b\xfe\x87\xe5\xbe\x4b\x88\x83\xd5\x7f\x58\xe6\xd9\x86\x3f\x28\xa9\x3e\x14\xe0\x60\x6c\xef\x97\x79\x81\xed\xf7\x8b\x3a\xdc\x7b\xbf\xc0\x13\xf6\xbe\xab\xd4\x0e\x4a\xc7\x82\x56\xbb\x61\x95\xea\xd9\x72\xe9\xbc\xf0\x78\xd6\x0b\xe6\xe3\x63\x89\x7a\x22\x63\x15\xe3\xaf\x68\xfd\xeb\x18\xdf\x96\xf8\x44\xfd\xf3\xe9\xb7\x48\x63\x33\x53\xff\x3c\x3e\xf2\xaf\x48\x5d\xf4\xd5\x84\xff\x33\xf2\xf7\x7f\x45\xca\x2b\x4f\xf9\xff\x8c\xfc\x7d\x1f\xf6\x26\x6a\x56\xbc\x61\x3d\x51\x7e\xa2\xf7\xcb\x0b\x8a\x2f\x6f\x1e\x09\x27\xca\xc5\xa2\x55\x6a\xbc\x43\xf9\x50\x20\x52\x2e\xbd\x24\x10\xc9\xd6\x23\xdf\x9e\x62\xd4\xa7\xdf\x82\x3d\x91\x6f\x97\x35\x3f\x89\x7f\xac\xf3\x59\x43\x1f\xca\xf3\x42\x97\xa5\x72\xe3\x42\x9f\x91\x56\xb6\x91\x79\x66\xeb\x3c\x28\x7d\x51\xfd\x89\xca\x05\x23\x9f\x11\xfe\x15\x91\xbd\x02\x2a\x85\xd8\xac\xb7\x1b\x89\xcc\xfc\xa9\x50\x72\xe1\xf3\x71\x64\xcc\xbd\xde\x82\xf7\xd4\x5e\x0d\xdf\x19\x44\xef\x8a\x49\xe5\xf2\xc5\x38\xfc\x33\xe4\xce\x58\x05\x33\x2e\xd4\x6e\x44\xf0\xed\xe2\xee\x6a\x10\xf6\xff\x9c\x0e\xe4\x59\x90\xff\x42\xd8\x73\x40\x1e\xc5\xdc\x43\xf7\x24\xe4\x13\x00\xae\x29\xfc\x80\xf2\x73\x2f\xfa\xdb\x2f\x91\x48\xe4\xe9\x97\x81\x8c\x88\x3e\xf7\xb9\x08\x95\x1f\x59\x72\x7f\x17\x87\xfe\x86\x8d\xbf\xed\xdb\xa6\x64\x17\x0a\xbf\xef\x4b\xef\x1e\xf4\xf8\x44\x5d\x29\x6c\xe8\xd7\x0a\x2f\xf9\x78\x71\xad\x34\x84\xda\x65\xf1\x31\x0f\xc2\xc9\x54\x0e\xdc\x81\x92\x91\x81\x17\xaa\xdd\xf8\x30\x69\xa5\xe2\x76\xa1\x11\x01\xcf\x85\x7f\xf9\xdb\x25\x0a\x9e\xed\xf9\x4e\xad\x04\x37\xa9\xe4\x18\x7d\x47\x9c\x41\x6f\xe0\x85\x17\x37\x03\x35\xf7\x16\x93\xeb\xf7\xbc\xc5\x24\x58\x38\xca\x0b\xfd\xdd\xc0\xee\x49\xe0\x97\x65\x06\x9e\x3b\xe6\xbb\xf1\x9f\x54\x41\x78\x9d\x9d\x43\xc1\xfe\x74\xa2\xe4\x74\xc2\x07\xde\x95\x52\xe8\x95\xae\xc3\xbe\xaf\x82\xfe\x74\x2c\x83\x48\xa8\xd6\x97\x9c\xb9\x63\xde\x7b\x8b\xa3\xab\xad\xf4\xb2\xc8\x59\xcf\xfc\xdc\xcd\x1f\xb5\xf4\xe7\x7e\x54\x1b\x49\x64\xac\x44\x3e\xf2\xdb\x6f\x4f\xba\xfb\x9f\x3f\x22\xe0\x6f\x7f\x7b\xfb\xe9\x17\xaa\xba\xa0\xf1\x52\x8d\x07\x4a\xaf\x31\xb2\xeb\x14\x6e\x85\xc7\x2e\x30\x3a\x20\xc3\x9b\x4a\x75\x0e\x8b\x17\x70\x78\x5d\xe9\xcb\x4e\xeb\xd6\xea\x5f\x86\x7f\x07\x46\x8e\xbf\xf1\xa0\x7f\xc6\xcc\x6b\x0b\x9c\xf9\x6a\xf9\x61\x21\x67\x21\x46\x2a\x1c\x0f\x82\xf0\xc3\xa2\xcf\x31\xe5\x53\xcb\x1f\x7e\xde\x27\x71\xc2\xc1\xe4\x0d\x23\xd8\x7b\x9b\x2b\x30\x3b\x6b\xe9\x97\xa1\xeb\x33\xbd\x8b\xa6\x3e\xd5\xf3\x06\x60\xde\x8a\x80\x5f\x92\x39\x49\xf1\x16\x5a\x8e\x11\xc9\xad\x2d\x76\x1c\x5e\xfc\x76\x74\x01\xe3\xb1\xf2\xbf\xd3\x99\xec\x9f\x1c\xc8\xb7\x9c\xc9\x3e\x8f\xc2\x83\x40\x85\xe1\x66\xa6\xde\x30\xbf\xf3\x62\x62\x2a\xaf\x7a\x5f\xed\x6f\x2f\xca\x1e\x32\x0e\xef\xf9\x97\x43\x66\xe2\xa3\xaa\xcf\x4a\x7d\x54\xf3\x79\xaa\xe3\xbd\x8a\xf9\x64\xe7\x02\xae\x2b\x64\x9f\xd1\xf1\xde\xe0\x65\x7f\xf3\x2d\x17\xb5\xbf\x19\x91\xd3\x85\x33\x56\x3b\x2b\x11\x83\x7d\x82\xf0\xab\xdc\xe0\x71\x38\x79\x90\xe5\x02\x8d\x47\x01\xdf\x40\xf4\xf1\xc9\x23\x2e\x2e\x1e\x7d\x42\xcb\x5b\x30\x3e\xc4\xde\xb7\xa2\xf8\x30\xe4\x3e\x80\x78\x30\xbb\xd6\x96\xf8\x95\xbf\x99\xfa\xe1\x3b\x5d\xf7\xb1\xdf\x53\xeb\x90\x87\xa1\x9a\xcc\xc2\xc8\xce\x98\x83\x90\x4f\x66\x91\x5d\xf4\x33\x5d\x1c\x7e\x89\x6c\xa7\x9e\x7a\xdd\x5b\xba\x7c\x30\x5e\xf8\x67\x7d\xe5\x5b\x35\x9c\xe9\xef\x90\x17\x38\x7b\xf8\x75\xef\xf1\x4c\xf6\x8d\x26\x38\xa6\x16\xa6\xfe\x65\xcb\xfd\xb6\x17\xf7\x7f\x22\xe0\x6f\x91\x78\x29\x19\x39\x7c\xfd\x7f\xfe\x88\x18\x18\x23\xfc\xb7\xab\x0d\x72\x3e\x6c\xba\xb9\x5d\xce\xd3\x2c\xe7\xdd\xc1\x5b\xfe\x60\x9f\xe3\xda\xf9\xdf\xab\x0c\xed\xc6\x7a\x77\xb0\x12\x2c\x9c\x23\x13\xbe\x0a\x5e\xf4\x8d\xaf\xa3\x8e\x9d\xd1\xf8\x8a\x3f\x1b\xcc\x6b\x7e\xce\xc6\xa8\xb7\xf2\x74\x22\xf1\x3d\x9d\xf6\x1b\xfd\xda\xc5\x7d\xe5\x2d\xd5\x78\x3a\x53\x1f\xf4\x62\xa7\xaa\xef\xe8\x7b\xce\x86\xf3\x77\xa8\xe0\x29\x61\x78\x50\xc1\x3c\x50\xdf\xd1\xb9\xf3\x20\xfc\x48\x11\x3b\x42\x1f\x2b\xe1\x29\x11\xf9\x82\xe2\xa5\x22\x5e\xd4\xf6\xa6\x32\x8e\x09\x90\x9b\x35\x71\x4c\xc6\xde\x12\xd8\x1f\xa8\x8f\xd4\xe6\xbb\x4a\xaf\xd4\xa0\xd7\x0f\x5f\xa9\xed\x8a\x48\xa7\xdc\xcf\xcd\x52\x9d\x52\xd7\xbf\x9d\x4c\xfc\xe5\xb8\xec\x8a\xf9\xbd\xe7\x08\xce\x32\x57\xb7\x72\x75\x96\xa8\xbf\x45\xdd\x1f\xc5\x16\xef\x85\x0a\xd7\x48\xbd\x1d\x80\x5c\x8e\x85\xc6\x83\xc9\xe0\x8d\x08\xe3\xdd\xc1\xdd\xe3\xe2\x83\xb3\xe9\x8b\x9b\x06\x4a\x67\xcf\x1f\xa4\xb9\x78\xfc\x28\xe2\xff\x5c\x37\xb2\x17\xf9\xcd\x9b\x5b\xff\x7c\x0a\xe8\xd0\xfe\xe1\xfa\x85\xdb\xfd\x8e\xe1\xc4\x65\xcb\xac\xf7\x93\x60\x6f\xde\x15\x7d\xee\xf5\xd4\xd5\x21\xec\xb9\x72\xce\x67\x9d\x6e\xf7\xcb\xa7\x64\xf1\xed\x2a\xfa\x8b\xf5\xe3\x4c\xe5\xe6\x9a\x72\xc2\xb5\xaf\x82\xc5\xf8\xaa\x27\x0f\xd7\x13\xf5\xe1\x70\xed\x34\x43\x78\x8b\x3e\x93\xbb\xf1\xa0\x3b\xf5\x3f\xc8\x6b\x45\x92\xf1\x46\xfc\x03\xfd\xbe\x4f\x32\xf8\x34\xbd\x6c\xa9\x6e\xd5\x1a\x91\x6c\xa9\x51\x3e\x65\x85\x9a\xf1\x82\x6d\xd5\x23\xbf\x7d\x4b\x9b\xb5\x4a\x27\x93\x2d\x68\x89\x2c\x4a\x95\xaa\xba\xd9\x2e\xa4\x8a\xa5\x64\x21\x95\xb3\x4b\x15\x5b\xcb\x74\x50\xb7\x98\xaa\x67\xca\x25\x3b\x61\x95\xe3\xf5\x16\xa9\x26\x48\xb9\xad\x65\xbe\xfd\x1e\x61\x87\x0b\x1f\xff\x1a\x00\xfc\x1e\xd1\x7f\x8f\x80\xdf\x0f\x0a\x8e\x7c\xfb\xf6\x7b\xe4\x5b\xbc\x1a\x8f\xc7\xe3\x7f\xfc\xf1\x6d\x7f\x43\xfb\xdb\xbf\x3e\xe2\x27\x6e\x25\x1b\x39\xbd\x52\xb1\x52\xcd\x16\x6e\x37\xb5\x3a\x29\xd8\x6d\xd3\xca\x94\xaa\xc5\x36\xae\x6a\xe9\x22\x36\xb4\x5a\x2e\x5d\xae\xa6\x49\xba\x99\xb0\x70\x06\x65\xb2\xa6\xde\x3c\xf1\xc3\x76\x7c\x50\x4c\x19\x43\x3a\x66\xe8\xf7\x08\x7c\x87\x21\xf4\x1d\x0c\xd5\xea\xa9\x5c\xa9\x9d\xcb\x66\xca\x86\x5d\xb0\xcd\x3c\x4a\x9a\x9d\x7c\xb3\x9e\xed\x5a\xa4\x9e\x20\x5a\x1d\x27\x3b\x66\x22\x63\x93\x64\xbe\xa0\x69\x76\x3b\xdf\x4c\x92\x62\xbb\xf2\x75\x0c\x25\xeb\x66\xa2\x5a\x46\x7a\xa6\x55\x49\xdb\xe9\x6a\xbd\x82\xaa\x66\xca\x6a\x37\x1b\xf5\x9a\x56\x69\xe9\x86\x9d\x4d\x37\x32\xcd\x56\xba\x95\x4b\x57\xf3\x19\x14\x4f\x95\x32\xed\x4c\xbb\xf4\xcc\x10\x3d\x67\xc8\x00\xe8\xf7\x08\x7a\x87\x21\xfc\x1d\x1a\xd2\x4a\x09\xbd\x5b\x6e\x17\xdb\x85\x66\x35\x5e\xad\xe2\x6c\x35\x9f\x6b\xeb\xa4\x88\x2a\x79\xb3\xda\xd4\x4a\xd8\x6e\xe2\xae\x5e\x6e\x17\xaa\x39\x94\xc8\x17\xcd\xb8\x56\xd6\x3a\x85\x13\x43\xda\x39\x43\x10\xfc\x1e\x81\xf4\x03\x8e\xde\x30\x92\xcb\x94\xd8\x1d\xf6\xf6\x76\xa2\xeb\xb3\x46\xf7\x32\xd9\xf5\xac\x36\x03\x49\x46\x5d\x8c\x0c\xa5\x0c\x2a\xa1\xa3\x11\x07\x3b\x94\xb9\x1a\xe2\x2e\x46\x10\x3a\x04\x1b\x8c\x6b\xba\xcb\x5d\xa8\x03\xc4\x25\x70\xb0\xe6\x18\x08\x39\x80\x38\x8a\xb1\x9d\x62\xc0\x9d\xd7\x8e\x06\x26\x1a\xd7\x14\xd2\x5c\x57\xd3\x29\x07\xc4\x01\x8a\x00\x57\x42\xd7\x90\x08\x52\x01\x5d\x2e\xa4\x06\x1c\x43\x08\x40\x05\x42\x12\x13\x82\x35\xcc\xa8\x41\xa1\x86\x39\x34\xbe\xed\x01\x0d\x76\xcd\xf4\xd3\x5e\x66\x3b\x3f\xd0\x37\xb1\x4d\x3d\x6f\x92\xa4\x97\x64\x19\x0d\xac\x87\x66\x34\x00\xbd\x30\x58\x65\x57\x5b\xd8\x96\xf5\x56\x87\x9b\x39\x9e\xea\xed\xca\x5b\x25\xbd\xc0\xb7\x33\xad\xfa\x21\xe5\x6e\xbc\x0d\xf5\x7d\x31\x73\xf4\x17\x08\xf2\xd0\xeb\xdb\x85\x69\xbf\x01\x54\x6e\x08\xa0\x71\x0d\x19\x1a\x01\x0a\x62\x5d\xd7\x5c\xe5\x12\xe1\x40\x87\xe8\x82\x70\x25\xa5\x72\x21\x00\xca\xc5\x9a\x74\x35\x97\x00\x05\xa4\xee\xe8\x50\x11\x60\x28\x46\x9c\x1d\xc8\x1e\x01\x76\xe4\xba\x04\x32\x2e\x05\x76\x15\xc4\x9c\x51\x48\x20\xa3\x90\x19\x54\x77\x10\x13\x90\x4a\x9d\x01\x48\x95\x41\x99\x04\x3a\xd7\x0d\xe9\xe8\x48\x50\x89\xb9\xd2\x35\x82\xe9\xb7\xdf\x23\xda\xef\x11\x88\x01\x65\x98\x6a\xe4\x09\xb1\x89\x74\xa5\x3b\x84\xa5\x05\x9e\x02\x27\x47\x5a\xba\xb7\x29\x2f\xed\x75\x1a\x35\x67\xd3\x51\x74\x99\x8a\x97\xc3\x04\xcc\x6b\x45\x62\x12\xa3\x3b\x4d\xcd\x11\xca\x76\x32\xad\xd5\x38\xdd\xe1\x39\x5e\x4c\x0c\x4b\xca\x76\x9b\x93\x64\xa1\x56\x88\x6e\x5b\x93\x66\xae\x57\xb4\xbb\x1e\x5d\x1c\xc0\xd0\x72\x93\xbd\xca\x1e\x51\xd9\xe7\x7f\x0e\xce\xec\xf4\x63\x7c\x15\x8f\xe7\xd6\x87\x16\x31\xc3\x46\x54\x2e\xfd\x62\x58\xdc\x2a\xa0\x47\x67\xee\x56\xcf\x8a\xad\x0b\x1c\x16\x9f\xba\xb9\x66\xaf\x30\x12\xb9\x61\x21\x8b\x5b\xd1\x51\x8c\xad\x27\xe1\xda\xd5\x9b\xf3\x4e\x6a\x3d\x31\xc7\xd3\xfa\xd6\x33\x87\xf6\xc8\x1c\x4e\x06\xd2\xcc\xd7\xc2\x30\xb9\x29\xb5\x16\x55\xaf\xb5\xa7\x9c\xbd\x82\xe8\xf4\x55\x78\x3f\x23\x3a\x21\x3e\x86\xff\x4f\x76\x7d\x27\xa2\xa9\xd2\x18\x22\x0e\x41\x1a\x06\x08\x50\x49\x0d\xba\x03\x0a\x32\x18\x51\x40\x31\x4d\x69\x06\x86\xd0\x31\x74\xa1\xb8\x70\x91\x24\xd2\x75\x21\x66\x0c\x22\xee\x30\xa0\xa1\x1d\x1a\x1f\x61\x15\x52\x1a\x5c\x73\x11\x44\x3a\x74\x84\x2b\x98\xe6\x02\xc4\x11\xd8\xc1\xdb\x91\x8e\x0e\x1c\xe1\x1a\x86\xa6\x3b\x88\x52\x87\x3b\x50\xd3\x25\x13\x06\x01\x0c\x28\x5d\x71\xe6\xec\x10\x8d\xce\x10\x0d\x9f\x10\x9d\x77\xe2\xf9\x41\x69\x20\xca\x29\xbb\xba\x24\x68\xb3\x0e\xc1\xda\x20\x92\xac\xe3\x65\x56\x47\x1b\xb6\xd2\x4b\x75\x90\xf1\xcc\xc5\x98\x34\x59\x53\x0d\x96\xee\xac\x6f\xf4\x57\xe3\x42\x89\x94\x0b\x78\x5b\x1a\x05\x0b\xce\x2c\x3f\x99\xb6\xe7\x1b\x3b\x57\x5c\x74\x42\x10\xc4\xac\xbd\x86\xf7\x88\x5e\x9d\x34\x5e\x5c\x61\xd5\x68\x8d\x17\xb1\xca\x42\x43\x9b\x8c\xb2\x1a\x8d\x92\x6c\x6c\x93\x49\x36\xcc\xa7\xd6\x29\x33\xdf\x1d\x8c\xe5\x00\x4c\x26\xc3\x98\xe4\x03\xba\x2e\x99\xcb\xca\xa6\x4e\x93\xd3\x55\xac\xdf\x62\x61\x7c\x59\xe9\x0e\xea\xdb\x41\x61\xbe\xce\x95\xbc\xb4\xc8\x25\x47\xc6\x6c\x71\xa0\x7c\x05\xb1\x4d\xfd\x5a\xab\xff\x2f\x40\x2c\xd8\xc1\x91\x0a\xe5\x70\x26\x90\x03\x18\x22\x08\xb9\x6c\x87\x37\x09\x35\xc9\x20\x40\x04\x23\x25\x0d\x8c\x75\x84\x99\x60\x48\x29\x17\x73\x86\x89\x46\x0c\x1d\xec\x3b\xe9\x87\xa0\x5e\x39\xdc\xd0\x11\x61\x58\x60\xc0\xb1\xce\x39\x05\x94\x42\x80\x5c\x0c\x88\x84\x50\xd7\x18\x34\x5c\x01\x19\xd2\x75\xe8\x48\x2e\x14\x71\x25\x11\x52\x42\x45\x74\xc7\x10\xfa\xb7\xfd\x10\xe1\x19\xb1\xda\x13\x62\xb3\xfa\xac\x44\xc4\xc6\x4e\x26\x4a\xfd\x69\x25\x0b\xb4\x71\x34\x39\x2b\x0c\xba\xb5\xb4\xd6\x28\xfb\x95\x4a\x1b\xc5\x52\xdd\x51\x63\x8e\xe3\x43\x60\x27\x48\xb7\xde\x90\x46\xc5\x1d\xac\x1d\xe8\xc5\xe8\x20\xd3\x8c\xc7\xd6\xf9\x66\xae\x5c\x87\x46\x46\x6d\x71\x7f\x38\xeb\xae\xf5\xfe\xc9\x07\x9f\xc3\x82\x46\xb3\x6a\x23\xd6\x55\x9b\x50\xad\x32\x73\x0b\x2b\x9d\x6e\x21\x8b\x95\x82\x9e\x70\xea\x75\x91\x35\x07\x7a\x98\xce\xd7\xaa\xe5\x4c\xc6\x9f\x8d\x4a\xb8\x9d\x4a\x8c\xeb\xf3\x5e\xb6\x57\xad\x40\x93\x59\x76\xbe\xe6\xd0\x74\xa3\x66\x2e\xf9\xd6\x8b\xb5\xb7\x32\xe3\xd5\xb5\x83\xfb\xae\x5e\x41\xec\xa0\x73\xad\xd5\xff\x17\x20\x96\x72\x8d\x20\x9d\x41\xcd\xc5\xca\x35\x08\x95\xba\x2e\x10\x65\x86\xc6\x95\x43\x18\x30\x98\x23\x21\xa7\x88\xb8\xd2\x95\xba\x10\xdc\x51\x8e\xe2\xca\x41\x9a\x30\x30\x32\xc4\xde\x3f\x3e\x02\xf5\xc0\xe5\x0e\xc1\x52\x20\xe6\x3a\x8c\x53\xc6\x75\x05\x38\x75\x11\x40\x08\x43\xcc\x05\xa0\x10\x3b\xba\x72\x11\x41\xca\xc5\x3a\x70\x5c\x03\xea\x52\x01\xa8\x6b\x8a\x49\x47\x7c\xfb\x3d\x82\xcf\x10\x8b\x9e\x10\x1b\xb7\x1c\x5e\x34\x0c\x2f\x19\xe4\x4a\xdb\x0a\x66\x74\x59\x2b\x74\xad\xa4\x6c\x90\x56\xd3\x2e\x75\x37\x0d\xb2\x6c\xcd\x9a\x1b\x39\x8a\xb7\x46\x5d\xcd\x0d\x53\x30\x36\xb7\x87\xe5\x55\xc9\x1b\x13\x39\x8a\xa5\x37\xba\x63\xf7\x17\x61\x42\x8b\x46\x89\x35\x2a\xe7\x47\x1e\xdd\xa6\xe9\x5e\xc3\x7b\xc4\x9e\xe1\x62\x99\x19\xb7\x7a\x8b\x58\x09\x86\xa3\x51\xa3\xed\xb5\xad\x46\xd9\x73\xb7\xf3\x99\x3b\xc9\xf5\xa7\xed\x45\xbf\xe0\xcc\x52\x8d\xca\xa8\x0e\x13\xb4\x32\x47\x6d\x51\x76\x17\x7c\xc0\x1b\xbd\x79\xa5\x98\x2c\xd5\x5a\x41\xc2\x6c\x01\xb2\x15\x51\x66\x27\x62\x1d\x1b\xf5\x52\x09\x43\x2e\xf7\x94\xed\x2b\x88\xd5\x82\x8b\x06\x2f\xc5\xff\x03\x10\xfb\xc6\x28\xef\xca\xac\xf8\x67\x87\x77\xc7\x99\xf1\x47\x0c\x87\xe1\xfe\xbf\x6f\x96\x5d\xdb\x21\xf7\x8e\x81\xfe\x8e\x8a\x5d\x4f\xde\x4b\xe5\x69\x98\xb8\x27\xa8\xfd\x1e\x01\xff\xc0\x57\x73\x02\xaf\x54\x70\x7b\x9d\xda\xcf\xac\x02\xf8\x34\xd4\xfd\x50\x01\xb7\x63\xe0\x90\x1f\xfa\x06\x7f\x0a\xf1\xb5\x1b\xc5\xbf\xbd\x46\xfd\x67\x6e\xff\xcf\x98\xc0\xed\x08\xc0\x8f\x54\xc1\xbd\x38\xfa\xeb\x11\x60\x9c\xa5\x90\x0f\xff\x3e\xa6\x29\x0f\x89\xea\x43\xf2\x73\x27\x07\xd8\x35\x26\xbc\xcc\x88\x19\x5f\xdd\xba\xe4\x20\x8f\xf6\x73\x18\x38\xfa\xcb\xfd\x1b\x3d\xca\xaf\x3d\x40\xfe\xbb\x95\xf8\xd7\x8b\xcf\x1e\x69\xdc\x77\x2b\xf1\xaf\x97\x1f\x1e\xaa\xfa\x86\x7e\x0e\xfc\xeb\x27\x05\x68\xcf\x2e\xfe\x6b\x15\x70\x0c\xf2\xd0\x23\x0c\xe0\x6e\x2d\xfe\x00\xf9\x8f\x11\x1e\x42\x8f\x90\xff\x5e\x25\xfe\x00\xf9\xd1\x23\x3d\xc0\xdd\x5a\x7c\x47\x01\x6f\x0c\x99\x5e\xaf\xc0\xbc\x63\x96\xed\xcd\xd5\x83\xf7\xd1\xbc\x5c\x00\x78\x07\xb5\x37\x96\xef\x7d\x76\x94\x78\xb6\x84\xef\x2c\x48\x22\x86\x81\x32\x44\xcb\x24\xf4\xb2\xd1\xac\x25\x8a\x46\x39\x55\xcb\x9b\xa8\x92\xee\x16\xed\x62\xa6\xd5\x2a\xe9\x85\x4c\xb9\xa0\x75\x10\xa9\x1b\x5d\x5c\x35\x9a\x29\x2d\xd3\xc0\x87\x61\xd2\x61\xba\xad\x12\x5b\x3a\x95\x58\x6d\x2d\xa4\x11\xd4\x8a\x54\x0f\x9a\xa6\x46\xb5\x96\xdd\x51\x70\x42\x5b\x72\xc3\x3a\x28\xda\x0e\x58\xdf\x98\xc9\xd3\x80\x78\x3f\xef\x90\xd8\x7f\xdc\x0d\xe6\xad\x41\xaf\xe5\xbb\xa2\xdf\x93\x4e\xc2\xee\xf6\xa7\xe3\xe9\x2a\x5f\x84\xb8\xc6\x5a\x9d\x62\x68\x2d\x49\x89\x77\xed\x49\x7c\x5d\x9b\xb8\x1b\xe3\x30\xd5\xd5\xa5\xe5\x78\x74\xff\x7c\xef\xf9\x1f\xf3\x44\x74\xff\x3d\x19\x8f\xc7\x3d\xeb\x54\xa9\xd9\x88\x02\x9f\x76\x5a\xb2\x9b\xab\x6c\xdb\xdd\x9e\x0a\xda\x05\x6f\x50\x4b\x67\x88\x27\x1a\x13\xa9\x37\xb3\xc3\x78\xb5\x47\x36\x72\x14\x8a\x3d\xb9\x6e\x49\x07\xf3\x59\xb3\x05\x1a\x76\xb9\xd8\xc2\xb9\x8c\xcd\x44\xb5\x9a\x03\x0c\x92\xb5\xb1\x2e\x35\x79\x68\x48\x90\xcf\xb5\xd7\x5e\x26\xa8\xe6\xba\x9b\x5a\x8f\x8e\x5a\x51\x7d\x5c\x98\x85\x26\x48\x77\x89\x56\x09\x62\xcd\x99\x51\xd8\x14\x34\xd6\x63\x05\xbf\xd5\x0b\x07\x89\xea\x1f\x7f\x5c\x26\xb0\x1e\xdc\x34\xe8\xae\xa6\x29\xbe\x6c\x9a\xa4\xd9\x86\x4d\x23\xcf\xa2\x93\xcc\x3c\x93\xb0\x03\x14\xe8\x4b\xaf\xa8\xd5\x37\xd8\x07\xf5\xa0\xd8\xad\xfb\xb9\xea\x68\x83\x07\xa8\xbe\xa5\xa7\xa6\x89\x5d\x24\x40\x3e\xad\xfa\x66\xb3\x37\xd4\x05\x6b\xf1\x70\x3b\xc8\x2f\xf0\x66\x56\x52\x8b\x64\xb9\xb9\x16\x5d\x92\x36\x3a\xfd\x6a\xaf\xbe\xcc\xcc\x48\x9a\xd9\x78\x35\x62\x4e\xa6\x0b\x7a\x81\x01\x9a\x1e\x59\x51\x95\x55\xa8\x8f\xf5\xa1\x25\x9a\x3a\xf4\xa7\xae\x33\x6f\x9b\xb9\x6e\x7c\x4d\x4d\xb3\xf7\xe5\xaa\xd7\xef\x52\x7d\xf5\x42\xf5\xc9\x5a\xb5\x10\x8e\x73\x25\x34\x65\xd1\x42\x6a\xd9\x72\x63\x9b\xac\xb4\x93\x31\x6b\x66\x8f\x70\xa1\x3d\x95\xa4\x32\x49\x97\xc7\x5e\x66\x90\x7e\x56\xbd\x79\x99\x7b\xfa\xb4\xea\x97\xfa\x94\x4e\xda\xa9\x75\xc2\xe8\xe3\xd5\xb8\x29\x46\x2d\x66\x10\xd3\xa6\xcb\xec\x34\xa5\xb4\x7e\xc5\x2c\x44\x27\xf3\x41\x16\xe7\x85\xdf\x4a\xb5\x92\x21\x1d\xd5\xd2\xf9\xfe\xa2\x54\x49\x77\xa2\xb9\x61\xa3\x9a\xac\xda\xe3\x54\x36\xec\x3a\x8e\x55\xef\x55\xbc\xb0\xdd\x45\x51\xf3\xeb\x51\x8f\xef\x52\xbd\x7d\xa1\xfa\x44\xcd\xeb\x46\x41\xbb\x1d\x9d\xd5\x8b\x24\xae\xa9\x76\xa8\x35\xa8\x53\xe8\x87\xf5\xb4\x01\x0a\x0e\x21\x41\xbd\xaa\xcf\xeb\xee\xb6\xe8\xac\x9e\x55\x7f\xa9\xfb\x4f\xab\x3e\x06\xf3\x8b\x6c\x76\x90\xee\xd7\x7a\x7e\xcf\x22\xac\x3b\x91\x63\x33\x6f\x47\x7b\xed\x45\x26\x68\x36\xd6\x6b\xbb\x59\xca\x72\x2d\xdb\x4d\xe5\xba\x86\x65\xba\x99\xb1\x11\x33\x2b\x63\x90\xaa\x95\xba\x30\x39\x4f\x79\xb6\xd6\xaa\xa6\x85\xa1\xf5\xc3\x51\x1f\x14\x2a\xb5\x45\xbb\x96\x38\xa2\xfe\xed\xde\xe5\xda\xca\xe8\x1b\x7a\x97\xa7\xd5\xd1\xcf\x8d\xa9\xbb\x4a\x6a\x8e\x0b\x29\x66\xd2\xd0\x19\x72\x11\x96\x8c\x42\xe5\x40\xa2\x29\x42\x19\x84\x94\x28\x45\x08\x44\x8c\x49\x05\xb1\xa6\x21\x00\x01\x45\x8e\x60\x92\x69\x92\x9c\x37\xea\x1e\xdf\x07\x5f\x1e\x8b\xb2\x20\xc6\x32\xa9\x35\x9a\xaf\xad\xed\x76\xb0\xb6\x33\xce\xb6\xdb\xad\xf5\x49\xcb\x59\x77\x51\x01\x0e\x5d\xac\xb6\x5a\x66\x3e\x06\x1f\x25\x5f\xaf\xad\x84\xbe\xa7\xa7\xbe\xbe\x0a\xf9\xd3\xba\x3c\xad\x44\x7e\xd6\xe5\xd1\x52\xb8\x2f\xfa\x83\xe5\xf1\xe6\xf9\xb5\x0b\xc2\xfe\xcf\x7e\x45\xe1\xaf\xc7\x83\x79\x7e\xfd\x67\x04\x1e\xd6\x18\xfe\x1a\x28\x7f\xa9\xfc\x5f\xff\x19\xf9\x75\x09\xfe\x61\xfc\x03\xfd\xdd\x30\xfe\xde\x93\x86\x81\x09\x16\xee\xaf\xc7\x42\x62\xe1\xfb\xca\x0b\x0b\xfb\xc9\x94\x5f\xff\x19\xc1\x2f\x7f\x37\xf7\x1b\xda\x82\x5f\xff\x19\xf9\x7f\x7f\x79\xaa\xf4\xff\xfc\x72\xce\xc2\xbe\xe4\xae\x12\x2a\x5c\x8d\x60\x0c\xb0\x21\x38\x45\x44\x69\x8c\x52\x89\x80\xd4\x25\x23\x8e\xcb\x08\xd6\x90\xe4\x3a\x94\x8e\x46\x98\x74\x91\xd2\x74\x4d\x97\x06\xa5\x8e\x8b\xb8\xee\x28\x7e\xe4\xe8\x99\xae\xa7\xd6\xe1\xaf\xff\xbc\xa8\xed\x20\xd8\x4e\x0f\xbf\xfe\x33\x02\x5e\xdc\xfa\xbf\x17\xcf\x07\x1e\x9f\xed\xf8\xd2\x30\x05\x8e\x41\x11\x34\x98\xae\xeb\x14\x10\x87\x13\x85\x04\xd2\xa5\x01\x19\x34\x90\x23\x0d\x69\x60\x8d\x12\xcd\x60\x58\x13\x80\x32\x81\xb8\xe0\x54\xb9\x80\xb8\xba\x26\x7f\xfd\xe5\x4a\x0d\x6f\xe8\x40\xb9\x08\x72\x0d\x70\xc4\xa8\x52\x04\x09\xa5\x69\x1a\xc1\x8a\x53\x48\x08\xa1\x86\xc3\x05\xd6\x0d\x6c\xb8\x08\x49\x21\x74\x17\xb9\x4a\x18\x40\x62\x2c\xa5\x0b\x0d\x24\xd9\xe7\x75\x00\x7f\x7f\x7d\x6f\xba\x08\x67\x8b\xf0\xb1\xb2\xbf\xa7\xe1\xdb\xd7\x81\x1d\xae\xcf\x68\xf8\xee\xba\xbe\x08\x65\xff\xd5\xc1\x7f\x75\xf0\x5f\x1d\xfc\x57\x07\xff\xd5\xc1\x7f\x75\xf0\x5f\x1d\xfc\x57\x07\x5f\xa8\x83\xfd\xa7\xff\xef\x97\xff\xfb\x6a\x64\x7d\x65\x00\xf1\x74\xb4\xe7\xe1\xcc\xa1\x4b\x19\x0e\x03\x08\xfc\x3d\x84\xdc\xa9\x2f\x54\x20\x66\x53\x6f\xa7\x91\x31\x5f\x78\xa2\x7f\x49\x68\x7f\xd2\xce\xf7\x10\x1b\xf3\x20\x3c\x9c\x56\x7a\xdc\x6d\x7d\x85\xab\xbb\xd7\x71\x7d\x27\x1f\x81\x98\xed\x0f\xd5\xb8\x76\x7d\x7b\x1a\x87\x1e\x12\x8b\x31\xa2\x6d\x63\x40\xb4\x33\xca\xb7\x1a\x95\x72\x21\x55\x95\xcb\xd2\x78\x9c\xce\x84\xdd\x65\xca\x13\xcb\x56\x29\x36\x26\x95\x8e\x9a\xb7\x4f\x4b\x95\x52\xfb\x7f\x41\x2c\xcc\xc7\xd2\x29\xaf\x55\x6f\x50\xa8\x75\x32\x7e\x6a\x83\xf5\x51\xad\x1f\xc5\xc8\xc2\x9e\x4a\xd5\xb3\x2b\x2b\x5b\xa6\x5e\xb7\xd0\x7e\x74\x32\x62\x9f\xdc\xcb\xa5\xa5\x47\x6a\xd2\x35\xc6\xd9\x6d\x90\xec\x62\x85\xba\x95\x75\xb0\x48\xc3\xac\xe3\x57\xc3\xe5\x72\xb1\xce\x25\x07\xb3\x5c\xac\xb8\x3e\xac\xcf\x4a\x79\x2b\xdd\xb2\x5e\x52\xb2\xcc\x78\x5a\xe0\xcd\x64\x69\xc6\x4b\x62\x92\xc9\x0f\x40\xa3\xb3\xf4\xd7\x63\x4f\xa1\x18\x6c\xa2\xd5\x70\x41\xc2\x5a\x55\x01\x6b\xda\xf2\xfb\xf1\x71\xcc\xee\x56\x3a\x1a\xe2\xa4\xad\x88\x91\xca\x6f\x2b\x6b\xd0\xc4\x93\x56\xcc\xf4\x3d\x57\x0d\x47\x03\x6b\x32\x9e\x2d\xb5\x5e\xee\xbf\xc9\x9b\x6b\xc9\x9b\x83\xc2\xd3\xda\xb0\xbc\x98\xad\x48\xa2\x21\xb6\x51\xd7\x2d\x80\xba\x56\x8b\x23\x3b\x0a\xc7\xcd\x64\x4b\x8c\xa2\x04\xce\x9b\xc2\xeb\xc6\x0f\x9b\x47\x0e\x79\x8f\x52\x29\xb5\x2d\xf8\xc1\x62\x11\xc4\xab\x7d\x68\xa5\x72\xcb\x2d\x29\x2d\xed\x74\x4a\x96\x48\x7d\x29\xa8\x94\xc2\x22\xd6\xac\x57\xe5\xe2\xb4\x79\x64\xf7\xbc\x99\xbd\x50\xc5\x59\xfb\xef\xf5\x95\x4a\x35\x9b\xc7\x32\xe5\x6a\xad\x2a\x97\x7d\x52\x29\x55\x41\xae\x82\xe2\xb9\x7a\xdb\x2f\xdb\xb2\x12\x6e\xa1\x95\x9e\xa8\x70\xd8\xaa\xf3\xc4\x90\xc4\x9b\x33\xb2\x2f\xdf\x28\x6e\x9f\x48\x61\x33\x65\x6a\xd1\x4c\x40\x61\xb2\x3a\x8a\x89\xf8\x38\xa7\x02\x5c\x03\x51\x54\xb1\xab\xbc\x6b\x68\xa5\x6e\x6e\x9a\xaf\x04\x66\xcb\x3b\xac\x07\x4c\x31\x75\x64\x24\xfb\x8c\xe7\x57\x97\xfd\x2c\x4f\xdc\x62\xfa\xaa\x5d\xcb\x84\x76\x3a\x2e\x7b\x29\x27\xd1\xb5\x52\x5b\x6d\x53\xec\xac\xc9\x4a\xe5\x07\x5a\x7f\x28\x44\xcb\x5c\xc6\x8c\x44\x85\x34\xd2\xa3\xf8\x74\x39\x99\x04\x66\xae\x94\x9e\xd6\xba\x8e\x0b\x59\xcf\xde\x0e\xad\x65\x36\x48\xd7\x69\xac\x9d\x80\x40\xc9\xf9\xa4\x94\xec\x1d\xac\x18\xb4\x8b\x8b\xc5\xc6\x30\x56\x66\x22\x63\x57\xed\x49\xac\x12\x68\xac\xda\x69\x02\x14\xe6\xd9\x76\x0d\xe1\xaa\x11\xd4\x27\xa6\x39\x5b\x3d\xef\x72\xd8\xe3\x33\xb9\xba\xe0\xf7\xe4\x1f\x92\x47\xfd\xac\x6f\xd4\x8f\xd9\x6c\x96\x8e\xfa\x49\x8e\x2c\x3b\xe3\xe8\x6a\xbb\xb5\x4b\x89\x06\x5b\x25\xec\xb1\xb1\x1d\x67\x1a\x44\xb0\x9a\x39\xf3\xfc\x0e\x1c\x4d\x7a\xd3\xe8\x2a\xc5\xd5\x81\x9f\xa7\x1d\x44\x47\xff\x66\x5d\xd3\xac\xf9\x2c\x8f\x65\x0e\x7b\x9c\xa7\xed\x7a\x9e\x2c\x13\xf5\x0e\x9e\x15\x9a\xdd\x58\x6e\xc0\xad\x38\x74\x66\xbc\xdc\xcf\xe6\x47\xcb\x54\x94\x75\x64\xad\x00\x2b\x3d\x6b\x69\x0d\x7d\x18\x6f\x35\x7b\x45\xea\x7a\xa3\xa4\x91\x5b\xf4\xb5\x69\xb1\x5d\x1a\xb9\x35\x90\x8d\x27\x2c\x57\x0d\x26\xc5\xd8\xaa\x7c\x60\xbd\x51\x13\x1b\x83\x14\x7c\x3f\x6e\x65\x65\xcd\xac\x3b\x34\xba\x75\xa0\xd9\x6f\x37\x14\xf0\x51\x25\xd3\x6e\x9b\xe5\x75\xbe\x63\xa5\xbd\xf8\x7e\x51\xe8\x33\x1e\xca\x97\xfc\x9e\x3e\xee\xa7\x34\xcc\x5a\xb3\x59\xbf\x4d\x3f\xd6\xa6\xd8\x8b\xdf\x86\x77\x33\xd3\x9f\xae\xce\xf8\xb9\xba\x74\x35\xf5\x2c\x4f\xb5\xec\x41\x5a\x6e\x6c\xc6\xf3\x99\x53\xdb\x0c\xda\x25\xbb\x96\xef\xf4\xb0\x2b\xa0\xdf\xd2\x2b\xa4\xec\xca\xcd\x36\xdb\xdf\x5a\x15\x43\x25\x41\xaf\x1e\xad\x2b\xdd\xae\x16\xcb\x2b\xb0\x0d\x96\x6e\x02\x49\xb7\x8e\x0c\x23\x9f\xb1\x5a\xb5\xb6\x49\xe7\xd5\xc2\xbc\x4a\xc6\x85\x78\x70\x03\x9e\xce\xfc\x41\xfc\x72\x3d\xee\xa5\x3f\x88\xdf\x89\xbf\x9c\x9d\x88\x1e\x15\xb3\xff\x33\xbd\x8a\xbf\xe7\xf2\x96\xb9\x0e\xda\xcb\xa6\x4f\x79\x79\x08\xd4\x44\x07\x6a\x95\x1e\xd7\x6b\x9d\xf9\x1a\xcc\x65\x9a\x65\x96\x6e\xd0\xce\x4d\x7a\x51\x91\x4d\xdb\xd9\xa9\xa4\x85\x7c\x14\xb1\x41\x3d\x29\xa8\xd3\xcc\xe5\xb5\x75\x67\x30\x5e\xa2\x52\x35\xc3\xe4\xa8\x55\x8e\x26\x13\x85\xa0\xed\x57\xe2\x99\x5b\xda\xf7\x0c\x7f\xf9\xaf\xc3\x5f\xaa\x69\x83\xea\x6d\xf8\x3b\x99\xb6\x79\x6a\xcf\xcb\x2b\xf3\x5c\xbe\x9a\x14\xc1\xc2\x1a\x74\x47\x95\x5e\x6a\x5a\xce\x37\xe7\xbc\xed\x92\x39\xf4\x20\xa3\x1b\x68\x76\x4b\xa9\xce\xd0\x83\xcb\x66\x06\x3b\x6b\x2e\x4b\x2c\x99\xaf\x59\x61\xcc\x2e\xcc\xc2\x6e\x0c\xf5\x92\x9d\x64\xcc\x1d\xac\x70\x33\x97\x1d\xe4\xb6\xe9\x4d\xd4\xa7\xdd\x56\x47\x25\x7b\x87\x3d\x33\x37\xf7\x47\xaf\xf0\x70\x89\x3f\xeb\xd9\x67\x7e\x5a\x3f\xcd\x66\xa3\x76\x7c\xf4\xb3\xfd\x51\x22\xba\x4c\x9c\xf1\xf3\x61\x7f\xe4\xd5\x87\x53\xd4\x99\x34\x3c\xa3\x50\x5b\x54\x7b\x61\xd0\x90\xb5\x72\xae\xee\xe5\x26\x54\x1f\x05\x1a\x35\x53\xee\xc4\x1c\xd4\x87\xd5\x69\x1e\xcf\x50\xdd\x1d\x7a\xd3\x89\x03\xf2\x7e\x7a\xb9\x58\x1b\x2d\xbd\xd7\xcc\xf7\xe0\xd2\xca\x8e\x8c\xa0\xe0\x0d\x1a\xb9\x59\x59\x27\x76\xe2\xd0\xb6\xb7\xf7\x47\x97\xfc\xbe\xea\x8f\xb2\x3f\xa2\x3f\xaa\xe9\xbc\x78\xc6\xcf\x47\xfd\x51\x1c\x44\xb3\xd6\xb2\xe1\x9a\x76\x39\x53\x9c\x64\x8d\xe4\xbc\xdf\xc8\x76\x99\xde\xcf\x0f\x0d\x98\x5c\x66\x50\xa6\x94\x5a\xa5\xd2\x88\xf4\x5a\x05\x2f\x59\x9f\xe4\x46\xbe\x52\x78\xd5\x06\x4e\x23\xd8\xa4\xe2\xd3\xc6\xac\x3e\xf5\x45\x53\xba\x61\xae\xaa\xe5\x65\x2c\xb3\x25\xd1\x6a\xf1\x16\x3c\x9d\xf9\x83\xdc\x25\xbf\xa7\x8f\x3f\x91\x3f\xb8\xda\x1f\x9d\xf9\x83\x7c\x27\xb0\x9a\x41\xd9\x5e\x64\x84\xa3\xd6\x64\xa9\x9a\x80\xe5\x7a\xc3\xf5\xa8\xbb\x99\xfb\x5a\x4a\x14\xb7\x8d\x4e\xba\x52\x8f\x26\x53\x03\x94\xea\x3b\xfd\x7c\xaf\x9a\xab\x7a\xfd\x41\x54\xa6\x6b\xbe\x70\xca\x6a\x5d\x5c\xe3\xc5\xc4\x36\xdb\xb5\xa9\x0c\x33\xb3\x4a\x33\x28\xf5\x0e\xed\x79\x7b\x7c\x7a\x89\x87\x57\xfe\x60\x5b\x7c\xea\x97\x3e\x1f\x9f\x6e\x6e\xc4\xfb\xa7\xe3\x53\x1f\x25\xc3\x56\xb6\xe4\x3a\xc5\x9e\x3f\xb1\x8c\x31\x84\xdd\x92\x59\x4f\x6f\x86\xb3\x49\x17\xda\xb9\x98\xbe\x15\x8d\x74\x90\x8d\x4f\x02\x54\x1e\x37\xa7\x72\xaa\xcc\x9e\x21\xe5\x2c\x5d\x8c\xc1\x74\xe0\x66\xca\xce\x9c\xc4\xb4\xf1\x12\xd7\xba\x7c\x96\x9a\xa3\xa4\x25\x32\xf7\xfa\x83\x57\x96\xf6\x3a\x3e\xbd\x55\x3f\x66\x71\xfb\x44\xfd\xab\xe3\xd3\x64\x27\x93\x68\x5b\x10\x6f\xd7\x30\x13\x34\xb0\xb1\x48\xb5\x4a\xe1\x6a\x2c\x72\x95\xe2\xc6\xf7\x72\xda\xbc\x6c\xc8\x04\xd2\x1c\x3b\xa1\xd7\x79\x2c\x09\x9c\x55\x45\x1f\x4f\x2d\x23\x3d\xe9\x0d\x69\x8b\xc1\xde\xba\x1a\x5f\x96\x0b\xa0\xec\xd5\x84\xd8\x38\xa9\x6d\xa6\xba\xa4\x87\xf8\xe0\xf6\xf8\xb4\x70\xc9\xef\xe9\xe3\xdd\xf1\xe9\xed\xfd\x5f\x7c\xe9\xaf\x7a\x67\xfc\x7c\x14\x9f\x96\x52\x63\x4d\x35\x63\xe5\x46\x4b\x8a\x7a\xb2\x21\x63\xc5\x4d\x38\xb7\x87\x5d\x5e\x8f\xb7\x53\x56\x1b\x8a\x5a\x1e\x9a\x1c\x57\x6c\x3f\x33\x5e\x97\xf5\x96\x9c\xce\xb2\x34\x09\xf2\xc3\xdc\x14\x32\xdc\xde\x50\x9c\x9c\xaf\xa3\x83\x46\xc2\x2a\x82\xb6\x0f\x62\xe3\x74\xd1\xa8\x1e\xec\xe7\xf6\xf8\x00\x5c\xf0\xfb\xca\x1f\xdc\x1e\xbf\xdf\xde\xff\xc5\x2d\x95\x1e\x9e\xf1\xf3\xa1\x3f\x58\x15\xab\xc5\x99\xf2\xfc\xc6\x18\x45\xf3\x0e\x88\x22\xd3\x50\x6e\x5b\xf6\x73\xb5\xe9\x74\x5e\x9a\xa3\x60\x55\x4c\x0b\xe0\x5b\x4a\x26\x47\x7a\x73\x68\x2f\x51\x7e\x5b\x8e\x0d\xe6\xc3\x20\x99\xe9\x69\x33\xa4\x67\x60\x3f\x4a\xfd\x4c\xd1\x49\x0e\x4a\xf1\x6e\x12\xd6\x80\x71\x0c\x50\x6e\xf6\x07\x89\x4b\x3c\x5c\xfa\x03\xbb\xd9\xb4\x7b\x37\xe9\xe7\x9e\xf8\xe0\xe4\x6a\xf7\xfc\x5c\xe6\x2b\xf6\xd7\xf9\x78\x55\x4b\x5a\xc3\x8e\xc6\x32\xb1\x79\x34\x2d\xf3\x6d\x4a\xbd\x59\xb1\x5b\xc4\x29\x89\x35\x3f\xba\xa9\x34\x12\x49\x48\x87\xa8\xdb\xdd\x02\x96\x18\x96\xbb\x0a\x70\x99\xee\x3b\xf9\x7e\x73\xd3\x58\xc5\x03\x3d\x9b\xcc\x8f\x36\x1c\x06\xad\x72\xb7\xd2\xdf\x46\xbd\xde\x7c\xbd\xec\x9d\x1d\xa5\x70\xd6\xbe\x9f\xce\x5f\xbd\xbb\x38\xe7\x8d\x03\xe4\x3e\xbb\xa0\xe4\xec\x10\xb9\x07\x6d\x12\xbc\x67\xc1\xef\x71\xd1\x3c\xd3\x34\x84\x88\x06\x90\x41\xb1\x4e\x08\xa6\x80\xec\x17\xfe\xc2\xd7\x47\x10\x5d\xe7\xff\xe6\x63\x9a\xee\xe5\xff\xb0\x70\xfa\x6e\xfe\x6f\x3e\xd5\xe9\x0b\xf5\x8f\x4f\xf3\x0c\xfb\x7a\xf4\xef\x92\xe4\x87\x21\xe9\x9d\x96\xf8\x37\x93\x04\xfe\x87\xc8\xa1\xfd\xc7\x08\xa2\xfd\x87\x08\x82\xfe\x53\x5a\x04\xfd\xc7\xb4\x08\xfa\x8c\x20\x6f\x85\x06\x6f\x9d\x2f\xfa\xe9\xe0\xe0\xfc\x8c\xd1\x67\xf5\x30\xd7\x35\x1c\x02\x1d\x87\x1b\x8e\xa6\x0b\xca\x5d\x61\x08\x8e\x91\x03\x35\x02\x34\x6c\x18\x52\x07\x8a\x09\xca\x1d\x97\x39\x54\x47\x4c\x31\x8e\x1c\x40\x11\x00\x4a\x87\x94\x9e\x36\xd2\x9f\xc2\xf4\xe2\x45\x18\x6c\x0e\x62\x26\x28\x80\x5c\x7a\x13\xf6\x57\x25\x38\xee\x00\xbe\x99\x4d\x21\x2b\x65\xd6\xcb\x42\x62\x53\xc6\xa1\x69\x89\x44\x73\xb9\x4a\xb1\x15\xea\x85\x7e\xd9\xeb\x5e\x8d\xa1\xdf\x0c\x51\x2f\x2e\xeb\x39\xac\xbd\xb5\xfe\x4e\x2c\x2a\x2e\xe8\x7d\x67\xfd\xaf\x97\xbf\x5f\xd7\x3b\x77\x05\xa3\xc8\x25\x2e\xa5\x14\x30\x5d\xd7\x5c\x61\x40\x43\x40\xa1\x74\x0d\x3b\x86\xa0\xc2\x35\x24\x75\x89\xce\x90\x83\x90\xeb\x1a\x9c\x02\x06\x00\xe2\x54\xc7\x4a\xec\x0f\x1c\xd1\xce\x36\xe7\x54\x1f\x25\x37\x3d\x3b\xf7\xe8\x6a\xb8\x7d\xa7\xdc\x58\x10\xe8\x42\x07\x32\xca\x99\xa3\x0c\x07\x0a\xa2\x90\x41\x10\x71\x1c\xa4\x90\x26\x88\xab\x61\x8a\x11\xc0\x04\x39\x02\x42\x57\x03\x54\x23\x12\x30\x88\x1c\x0e\xf5\xbd\x45\x69\x67\x3b\x5f\x1e\x26\x37\xb1\x4f\xcf\x17\xbf\x40\x6e\x60\xe8\x3a\x96\xc2\xa0\xd4\x15\x9a\xc2\x14\x61\x83\x28\x9d\xeb\x4c\x07\xba\x0e\x24\x25\xc2\xd5\x29\x21\x1c\x13\xee\x22\x60\x28\xa1\x88\x30\x74\x17\xba\xc0\x80\x52\xb9\xfa\x41\x6e\xfd\xe1\x72\xe3\xd5\x07\x02\xde\x29\xb7\x24\x86\x8e\x01\xa0\x86\xa3\x41\x4e\x75\xa6\x10\xe4\xd0\xa0\x98\x10\xce\x04\x84\x1a\x67\x10\x09\x84\x20\xe1\xc8\x05\x02\x72\x0a\x84\x21\x1c\x1d\x29\x68\x08\x17\xe9\xf4\x74\x4e\xc5\xbe\xda\x93\x7f\x39\x93\xfb\x93\xc3\xde\xf3\x69\xa8\xab\xd3\x24\xef\xab\xe3\xa8\xf7\xe4\x7d\xf5\x97\xc5\xa9\xfe\xaf\xf0\x2f\x42\x3a\x40\x28\x4d\x28\xd7\x80\x02\x0b\xee\x18\xd8\xd8\xb9\x17\x03\x0b\xec\x08\x03\x69\x2e\xd3\x91\xa3\x39\x52\x47\xc2\x95\x92\x02\x46\x75\x6e\x18\x8c\xe9\xc2\x21\x3a\xd5\x0f\x7a\xd7\xde\xd7\x7b\xb6\xcc\x55\x45\x55\x43\x47\x2e\xdb\xf6\xd2\x9f\x89\x5c\x32\xec\x6d\x62\x1d\x5e\xdc\x2e\xc3\x5a\xbd\x0b\x92\x6e\xc9\xae\x95\x3d\xed\x30\x06\x7e\xb8\xde\x6f\xa8\xff\xab\xf5\x8e\x0d\xc4\x1d\x28\x5c\x4a\x94\x81\x11\x21\x0a\x40\x4c\x21\xd2\x19\xe3\x06\xd0\x08\xa0\x50\x19\x08\xee\xd0\xaf\x5c\x84\x39\x10\x58\x01\x01\x84\xc6\x31\x67\x90\xba\xe4\xa0\x77\xf4\xbe\xde\x87\xd9\x79\x0b\xd5\x7b\x64\x69\xb7\xab\xf9\x70\x98\xec\x37\xbb\xd9\x4d\x83\xf6\x5d\x58\x98\x52\xd3\x52\xde\x7a\xde\xf6\x9b\x85\xf9\xbc\xf2\x35\x78\xbf\xa1\xfe\xaf\xd6\xbb\xeb\x2a\x26\x1d\xcc\xb0\x83\x15\x75\x94\x2e\xb1\xee\x10\x44\x15\xa1\x06\xd6\x08\xd0\xa5\x64\x06\x97\x94\x68\xcc\x11\x86\x63\x70\x29\x20\x11\x08\x00\x68\x68\xae\x26\xd8\xd1\xcf\x5c\xf1\xaf\x77\xda\x79\x51\x3f\xc9\xfd\x15\xfd\x29\xe4\x50\x0a\x80\x35\x43\x67\x2e\xa3\x08\xea\x1c\x6a\x1c\x12\x06\xa1\x44\xd4\xa0\x58\x43\x92\x50\x60\x50\x4a\xa4\xce\x38\xd6\x88\xce\x34\x0d\x3a\x90\x08\x49\x20\x12\xea\x20\xf7\x95\xed\x57\x77\xca\x5d\xb0\x4f\x72\x7f\x45\x7f\x6a\x38\xae\x74\x25\xe2\xca\x75\x81\x6b\x40\x82\x91\x26\xb8\x8b\x99\x52\x1a\x75\x95\x01\x1c\x22\x34\xe0\xba\xdc\xc0\x44\x57\x80\x3a\x4a\x09\xc9\x19\xa7\x0c\x48\xea\x6a\x8e\x76\x90\xdb\x78\xb8\xdc\xb9\xd5\x49\xee\xaf\xe8\x4f\x1d\x9d\x1a\xbb\x76\xa5\x4a\x61\x86\xa1\x0e\x5d\x87\x48\x2c\x19\x63\x4c\x62\xa9\x03\x87\x50\xc1\x85\xd0\x95\x46\x00\xd3\x94\x4e\xe9\x3e\xaa\x07\x5c\x00\x88\x08\x38\xb6\x37\x79\xb8\xdc\xd9\xe2\x49\x6e\xfb\x0b\xe4\xde\x79\x4d\x4c\x20\xd4\x0c\x03\x40\x5d\xee\x82\x64\x68\x38\x08\x31\xc7\xe1\xc0\x40\x5c\x42\x87\x4a\x4a\x35\xe4\x60\xe9\x3a\x54\x48\x84\x18\x33\x74\x9d\x60\xdd\x51\x3a\x66\x07\xb9\xe9\xc3\xe5\x4e\x4f\x4f\x72\x5f\x3d\x80\xf1\x4e\xb9\x91\xae\x73\x4c\xb9\x94\xba\xab\x63\x4d\xc7\x4c\xd3\xc5\xfe\x08\xc1\x1d\x0c\x0c\x05\x5c\x09\x81\x8b\xa8\x4b\x18\x31\x20\xc6\x18\x0a\xcc\x5c\x01\x1c\x8c\x35\xa8\x30\x3c\xf6\x27\xec\xe1\x72\xa7\xac\x93\xdc\xe2\x0b\xe4\xd6\xb0\xee\xea\x8e\x34\x74\x43\x68\x44\x10\x04\x30\x80\x2e\x06\x8e\x8b\x05\xc3\x3a\x72\x10\x86\x40\x40\xe0\x52\x07\x31\x88\x35\x87\xe8\x9c\x60\x21\x09\x55\x02\x73\x4e\xf8\x31\x6e\x04\x0f\x17\xfc\xb8\x32\xf0\x74\x1a\xc1\x83\x05\xe7\xc8\x15\x3a\x66\x5c\x30\x87\x73\x26\x90\x46\x34\xac\x73\x65\x28\x07\x52\xcd\x75\x0c\x20\x25\x66\x84\x0b\x44\x0c\x08\x31\x43\x0c\x49\x05\xb1\xa1\xef\x7c\x9f\xcb\x09\x39\x9d\x6c\x76\xe2\xf3\x32\x80\xb8\x63\xdd\xd6\xed\x01\x84\x75\x5f\xfd\x5f\x1d\x40\xb0\x5d\x44\xa0\x1b\x9c\x72\xe8\x72\x05\xb8\xe3\x52\x82\x0d\x09\x29\x13\x48\xea\x1a\x74\x1c\xec\x60\x0e\x24\x16\xc0\xa5\x1c\x51\xa4\x4b\x6e\x48\x83\x73\x45\x11\x84\xe2\xa8\xf7\x2b\x03\xf2\x3b\xe5\xfe\xea\x00\x02\x21\xcc\x08\x70\x35\x22\x20\xd4\xa1\xa0\x06\x76\x18\x27\x04\x52\xe6\xba\x8a\x40\xcc\xa0\x84\x48\xe8\x4c\x50\x69\x68\x12\x13\x0d\x31\x4d\xa3\xd8\xd0\x1c\xb1\x1b\x3a\x68\x07\xb9\xaf\x0c\xc8\xef\x94\xfb\xcb\x03\x08\xe4\x4a\x04\x01\x83\xc2\xe0\x08\x21\xc4\xa9\x52\x1a\xd2\x18\x11\x1a\xc6\x0a\x4a\xca\x18\xd7\x08\xc6\x90\x09\x9d\x4a\xe5\x4a\x24\x14\x20\x80\x72\x06\x74\x01\x35\xe7\x20\xf7\x95\x80\xf1\x4e\xb9\xbf\x3a\x80\x60\x8e\x46\x15\x14\x54\x51\x4c\x1c\xa0\x5c\xc9\x30\x15\x04\x08\x64\x48\x42\x88\x8b\x0c\x05\x30\x92\xba\x0b\xa4\x06\x08\x92\x48\x23\x86\x80\x54\xb8\x82\x62\x97\x69\x3a\x3b\xc8\x7d\x25\x60\xbc\x53\xee\xaf\x0e\x20\xa8\x06\x28\xe7\x70\xe7\x5d\x25\x81\x0e\xe1\x0a\x10\x06\x88\xe6\x20\x8e\xb8\x0b\x1d\x57\x52\x0a\x0c\x87\x1b\xae\x44\x58\x97\xc8\xdd\x1f\xfd\x4b\x1c\x22\x80\xbb\x03\xc6\x41\xee\x2b\x01\xe3\x9d\x72\x7f\x75\x00\x41\x84\x61\x20\x47\x77\x15\x35\x08\xd3\x05\x26\x8e\xee\x22\x49\x20\x75\x30\xd0\xa9\xa3\x20\xe7\x50\x01\xaa\x2b\xac\xb9\x48\x37\xa8\x94\x3a\x01\x54\x63\x1c\x60\x22\x5c\x75\xc4\xf9\x95\x80\xf1\x4e\xb9\xbf\x3a\x80\xc0\x44\x62\x5d\x69\x4c\x17\x5c\x93\x86\x06\x0c\x4d\x33\x38\x65\x18\x30\x62\x38\x8e\x12\x88\x62\x8d\x03\xec\x32\x42\x04\x65\xd8\x31\x28\x86\x40\x21\x8d\x29\x09\x85\xcb\x8e\x72\x5f\x09\x18\xef\x94\xfb\xcb\xe3\x07\x08\x85\xbe\x6b\x55\xc9\x31\x00\x3a\x01\x8e\xe6\x32\x0c\x19\x47\x84\x11\xd7\x10\xae\x43\x76\x1d\x18\x21\x06\x35\x98\xeb\xb8\xba\xa3\x3b\x18\x1a\x8e\x2e\x35\x45\xe1\x3e\xc1\x8a\xaf\xc6\x0f\x8f\x8e\x9b\x5e\x77\x66\xef\xc7\x0f\xa9\xfb\xea\x37\xe9\xa9\xfe\xd1\x27\xea\xff\xee\x81\x19\x56\x94\x42\x80\x39\x32\x80\xe0\xbb\x08\xcd\x41\x8c\x6b\x06\x32\x5c\x22\x5c\x2c\xa4\x4b\x38\x03\x90\x0b\x09\xa4\xee\x28\x26\x28\x60\xd0\xe1\x9a\x46\x14\xd0\xb1\x76\x3c\xfd\xfb\x4a\xc2\xed\x07\xe1\xed\x9a\xde\x6f\xa9\xff\x95\xde\xbf\xb3\xfe\xef\xd5\xbb\x4e\x28\x34\x30\x13\x1a\x13\xdc\x91\xae\x14\x18\x4b\x49\x25\x00\x44\x4a\x09\xb1\x0e\x5c\xc3\x75\x74\xec\x22\x47\x17\xca\xd0\xa9\xd2\xb1\x40\x9a\x86\x89\xd2\x89\xd0\xb9\x71\xd0\xfb\x95\xf8\xe5\x4e\xbc\x1d\x9d\xf9\x69\x5d\xfb\x83\xf1\xe6\x72\x61\x20\xac\x6b\x92\x31\xc3\x15\x0e\x07\xca\x70\x84\x43\x34\x24\x38\xd3\x1d\xcc\x91\xa3\x43\xec\x20\x43\xe9\x4a\x71\x61\xe8\x82\x52\x28\x5d\x69\x40\xa9\x13\xea\xaa\xe3\xa1\x3b\x57\xe2\x97\x3b\xdb\xfb\x95\xdc\x0f\x6e\x6f\xca\x20\x96\x84\x53\x21\x0c\x47\x69\x86\x80\x0c\x32\xcc\x09\x32\x1c\x8c\xb0\xc4\x92\x38\x0e\xc7\xc0\x70\x35\x83\x68\x06\xd1\x75\x46\x28\xd1\x74\xe0\x70\xc5\x04\x14\x14\x1c\xe4\xbe\x12\xbf\xdc\xd7\xde\x2c\x0a\x4e\x72\x07\x5f\xd0\xde\x40\x41\x4d\x41\x44\x80\xc6\x19\x26\x48\x50\x8a\x35\x06\x5d\x64\x38\xc8\xc0\x06\x14\x1a\xa5\x92\xee\x82\x1b\xcd\x65\x9a\x14\xae\x4e\x75\x88\x34\xc7\x10\x54\xea\x80\x3a\xee\x41\xee\x2b\xf1\xcb\x7d\xed\xfd\x5a\xee\x07\xb7\xb7\xc3\x98\x86\x5d\xee\x2a\x05\x81\x14\x0a\x69\x10\x22\xb4\x1b\x9f\x68\x90\x70\xc2\x81\xc1\xa0\xe0\x06\x90\xcc\x35\x88\xc0\x86\x64\x1c\x29\x41\x35\xb4\x73\xb4\x82\x61\x75\x90\xfb\x4a\xfc\x72\x67\x7b\xb3\xea\x49\xee\xd5\x17\xb4\x37\xa7\x4c\x0a\xe0\x10\xc5\x14\x80\xdc\x25\x08\xef\xe7\x66\x0c\x43\xb8\x84\x60\xc7\x95\x88\xb8\x0e\x50\x06\xd4\x34\xac\x61\x7d\x17\xe8\x00\x60\x68\xc4\xd5\x84\xab\x18\xe4\x07\xb9\xaf\xc4\x2f\x77\xca\x4d\x82\x93\xdc\xe0\x0b\xe4\x16\x4c\x73\x1c\xec\x02\xa1\x0c\xe1\xb8\x44\x67\x3a\xe3\x2e\x71\x0c\x1d\xe8\x0a\x70\xae\x20\x45\x4c\x0a\x07\x12\x5d\x70\x40\x1c\x6a\x38\xc0\x60\x00\x51\xc3\xd1\x29\x55\xe8\x68\xdf\x57\x12\x5e\x77\xca\x6d\x64\x4f\x72\xeb\x5f\x20\x37\xe5\x2e\x06\x8c\x62\xac\x11\x8e\x11\x45\x8c\x69\x42\xb9\x04\x69\x08\x0b\xe8\x32\x6e\x60\xc0\xb9\x01\x11\xa3\x3a\x43\x06\x77\xa5\x4e\x1c\xa2\x39\x2e\x70\x34\x24\x01\x39\xb6\xf7\xb5\x84\xd7\x9d\x82\xeb\x67\x0b\xb0\xe9\x17\x08\xae\x53\x62\xe8\x3a\x06\xba\x8e\x34\xc5\x90\x86\x14\x17\x0a\x48\x09\xa1\x21\x1c\x07\x69\x90\xba\x1a\x05\x10\x31\xc8\x19\x74\x34\x43\x37\x84\x63\x10\x49\x18\xa1\x8c\xf0\x27\xc7\x06\xe1\xc3\x05\x47\xf1\x67\xc1\x0f\x8b\x59\x1e\x6d\xe1\x48\x97\xca\x00\x10\x60\x9d\x31\x21\x85\xc1\x38\x02\x1a\x70\x85\x41\x5c\xae\x03\x4d\x63\x42\x6a\xae\xc3\x35\xa0\x5c\x6e\xe8\x8a\x28\x84\x11\x50\x86\x14\x0e\xe6\xfa\x7e\x49\x00\x3e\x9c\x72\xfc\x60\xc1\xe1\x29\xd5\x76\xd8\x82\xf3\x60\xc1\x99\xae\x18\xa0\xcc\x00\x3a\xc4\x1c\x53\x04\x11\x33\x34\x97\x22\xc8\x84\x30\x18\x66\x9a\x26\x5c\xc0\x75\xec\x60\xc3\x41\x8e\xe1\x28\xe6\x50\x48\x08\x85\x48\x77\x76\x1f\x8f\x82\x3f\x3c\x66\x63\xdb\x53\xae\xcd\xcc\x7e\x5a\xf0\x37\x17\x70\x3d\x66\xf5\xd6\x57\x2f\xdd\x4a\x17\x68\xa6\xba\xac\x8e\x9c\xbc\x96\x89\xa3\x56\x73\x58\xf3\xf3\x93\x61\x1b\x00\x37\x4d\x83\x42\x96\x4c\x80\x55\x5b\xe5\x5a\xb1\x78\x7b\x6f\x18\x67\x4b\xb4\xae\x9e\x40\x71\x7e\x7d\x72\xc7\x40\xa2\x19\x5f\x9e\x0f\x15\xcc\xc3\x92\x95\x5d\x23\x27\x98\x11\x8b\x9a\xc2\x29\xba\xe3\x65\xb1\xea\xa6\xe2\xd5\x86\x13\xcf\xa7\x17\x51\xc3\xac\xc1\xa2\x51\x4f\xc7\xf2\xcd\x6d\x23\x57\x1f\x67\x3b\x74\xba\xac\x37\x37\xab\x45\xd8\x1f\x31\x59\x6e\xb1\xe1\x44\x43\xc1\xa0\x31\xc8\x76\x2d\x90\x8d\x8f\xa9\xbe\xca\x53\xd4\xf3\xe2\xc2\xca\x7f\xfb\x3d\xf2\xcd\x8b\x71\x94\x26\x33\x3f\x57\x1c\x2c\xd7\xc1\xac\x11\xd4\x45\xa2\x39\x81\x71\x43\x0c\xfc\xa8\xd3\x4f\x7a\xb3\x29\x49\x24\xe3\xe5\x6a\xe7\x34\x8a\x7a\x47\x07\x27\x64\xbc\x78\x5d\xe9\xe5\x92\x9d\x33\x80\x7d\x76\xc7\xca\xb8\x5a\xc0\x87\x27\x13\xd7\xeb\x7e\x8f\xaf\x2b\x3b\x2a\x3e\xd1\xfe\x49\x95\xd0\x82\x66\xa9\x73\xd8\x2b\xf4\x6e\x45\x57\x7f\x7e\xed\x26\xbe\x7a\x7d\xdc\xed\xe0\xbe\x54\xee\x2b\x81\xb2\x9b\xfc\x38\x04\xd3\x32\x81\x29\x90\xf0\x3b\x2b\xbd\xd9\xaa\x17\x47\xb1\x6c\x9b\xd5\x8d\x4a\xbc\x96\x99\x51\x3e\x36\x60\xdd\x98\x0f\xf7\xbd\xe7\x7b\xe0\x6e\xf7\x59\x2c\x8a\x71\x6a\x52\x1d\xaa\xe2\x9a\x65\x8b\x55\xd7\xf4\x74\xcd\xed\x74\xa0\x9b\x8f\x37\x62\x3d\x27\xaa\x48\x05\x0d\x65\xbd\x98\xc8\x0f\xf2\xfd\xd5\x74\x3d\x84\xce\xc2\x21\x08\x71\xad\xbd\x58\x57\xac\xc6\x4c\x11\xb6\xd8\xf2\x70\x3b\xa1\xb1\x7c\x16\xf0\x20\xbb\x03\xa0\x4f\x27\x49\x16\x1b\x64\x13\x76\x75\xb9\xee\x3b\xe6\x76\x94\x73\x9c\xec\x56\xd3\x2a\x32\x57\xde\x56\x62\x7c\x9a\xa8\xc6\x8d\x7e\x8a\x98\xa7\x14\xe4\x43\xc1\x9d\x28\x0e\x66\x8e\xcc\x27\x17\xac\x26\xe3\x73\xad\x58\x4e\x35\x47\xc3\x5c\x65\x93\x8a\xd9\x8b\xe1\xca\xaa\x19\x6e\x7a\xa6\x42\x7b\x31\x9f\x1e\x4e\x94\xfe\xc1\xe0\xf6\x97\xac\x58\xfa\x3a\x70\x3f\x78\x11\xe4\xed\xe0\xbe\xdc\x16\xfe\x4a\xa0\x44\x72\xe2\x0d\xd1\xa8\xd0\x42\x0e\x84\x05\xc3\x68\x27\xaa\xa4\x53\x5c\x6a\xe9\x61\x91\x10\xdb\x9e\xc8\x38\xda\x36\xad\xc6\x8c\x79\x87\xbd\x64\x6f\x83\xdb\x94\x9e\x6d\xe6\x13\x4d\x94\x19\x67\xca\xf3\x19\x1e\x94\x0a\x41\x85\xf2\x05\x2f\x25\x96\xeb\xa4\x32\x67\x51\x90\x88\x8e\x57\x95\x8e\x5d\xf2\xb7\xb5\x78\xa1\x5a\x4b\xe6\x92\xad\x45\xde\xb5\xd6\x93\xa0\xe6\x5b\x5e\x8b\x16\xf2\x39\xa7\x28\x55\x8b\x0d\xc6\x05\x6e\x09\x6d\x1c\x2f\xef\x00\xd8\xce\x64\xd6\x41\x77\x30\x5b\x4e\x02\xe1\x0e\xbb\x5b\x45\x2a\xc3\x42\x86\x8e\xfb\x0d\xb3\x5d\xa6\x96\x9b\xcd\xe6\x58\xa2\x56\x36\x52\xc9\xd3\x3c\xd2\x43\xc1\x1d\xef\xe1\x99\xce\x70\x02\x86\x1a\x93\xf5\xe8\x62\xbc\x1a\x95\xb5\x64\x81\xf5\xa7\xdb\x72\x14\xa6\x72\x5e\xb5\x44\x61\xcd\x32\xdc\xee\x61\xac\xfc\xa3\xc1\x9d\x0f\xe3\xf6\xd7\x81\xfb\xc1\x2b\x5d\x6f\x07\xf7\xe5\x2c\xf1\x2b\x81\x3e\xb7\x11\xf5\x3d\x70\xc7\xdd\x0c\x6a\xe7\xa6\xd1\x75\x97\x72\x19\xf2\xb8\x56\xe9\x76\x51\x03\x8c\x8a\x98\x24\xda\xee\x3a\x3d\x8e\xe6\xb2\xa1\x97\x30\xbc\x0a\x2b\x6c\x07\x85\x6a\x31\xdf\x1b\x43\xcb\xea\x2f\x06\x95\xb9\x3b\xf4\xa0\x9e\xcf\xe3\x96\x6b\x2d\x81\x05\xa6\x33\x6c\xe6\x52\xf1\x91\xa4\x7b\x70\x9b\xa3\x9a\x5c\x4f\x87\xb4\x30\xee\xc1\x6e\xb4\x3e\x1a\xc7\x6b\x71\x2d\xb3\x05\x7d\x34\x6b\xfb\x5b\x73\xb1\xf5\xd6\x23\xea\x9a\x7d\xb4\x3c\x45\xa6\x0f\x05\xf7\x27\x37\x42\xff\x68\x70\xcf\xc7\x02\x38\x5f\x07\xee\x07\x2f\x67\xbe\x7d\x97\xf9\x3b\x31\xf7\xbe\x0b\xbf\x6d\xd7\x2d\x8a\x3d\x5f\x27\x7a\x67\xbb\xc2\x13\x20\x95\x1d\x80\x5a\x22\x9d\xac\x02\x6b\xb1\x30\x1b\x38\xdf\xd3\xda\xeb\x6d\x66\x5d\x68\xd7\xfc\xc4\xba\x93\x1e\x46\xfb\x1d\x12\x0b\x4c\xad\x13\xcd\x85\xad\x4d\xab\x36\x1c\xcf\x51\xb2\x53\xd0\xf9\xb0\x9e\xb2\x68\x89\xc3\x7c\x7e\xa2\x6b\xd3\x62\xac\x37\xec\xda\xeb\x28\xac\x54\xed\x3d\x18\xa1\x56\xab\x26\xd2\x41\x7f\x6e\x79\xc3\x74\x9f\xa7\xa4\xe1\x99\xd6\x7c\xd4\x58\x6d\x53\x46\x65\xb5\xe2\xbd\xa2\x53\xa8\x46\x53\x01\x05\x1f\xc5\xdf\xe7\xb3\xa8\x1f\x01\xfd\x6c\xab\xca\x67\x81\x7e\xc7\x89\x32\xfb\x2b\x73\xa1\xeb\xab\x3b\xb0\xcf\x56\x3e\xdc\x60\x88\xfa\xe1\xac\xac\xc4\x49\xe8\x57\x2b\x67\x6e\x35\x84\x07\xaf\x2f\xff\x64\x17\xfa\x19\x43\xb8\xe9\xb8\x85\xeb\x86\xf0\x5c\x7f\xb5\x54\x9f\xc4\xcc\xec\xba\xc2\x0a\x2b\xee\xb4\xa7\x66\x7e\xd0\xf3\x1b\x69\x8a\xa7\xb1\x8a\x3d\x33\x9a\xe5\x56\x3f\xe6\x29\x63\x52\xe4\x0d\xdc\x5f\xaa\x7e\xd2\x5e\x3a\xb5\x4c\xb5\xd7\xcf\xc5\xea\xdd\x46\xd2\x1d\x26\xa3\xa9\x4a\x65\xe8\x28\xe4\x6d\x45\xce\x5a\x78\xd0\x6a\xeb\x3d\xb0\x07\xeb\xd6\x49\x96\x0b\x65\xd6\x5f\x8b\xb9\xd6\x9c\xac\x44\x57\xb4\x68\x67\x13\xb5\xcb\x9b\xa5\x5d\xa9\xa0\x4e\xa2\x53\x9f\xf0\x6e\xa3\x20\xb3\x1f\x79\xfc\x1b\x0d\xe1\xb3\xe1\xcc\xed\x47\x03\x1c\xae\xcf\x1a\xc2\x0d\xe1\x96\x7e\xd8\xe6\x72\x3a\x3a\xf2\x71\x86\xf0\xe0\x05\xff\x9f\x1c\x28\xfd\xa0\x1e\xe1\xb9\xfe\x6a\xde\x19\xf7\x0d\xdd\x4a\xe5\xf5\x70\xa6\x45\xd7\xd3\x7e\x79\x54\xe2\x75\xe9\x16\x53\xc9\xac\x8c\x6d\x74\x6f\x3a\x23\xb2\x39\xe9\xd6\x02\x47\xe9\x6e\x4c\x35\x13\x33\xdb\xcf\x57\x13\xb5\x56\x21\xa7\x3b\xed\x6d\x71\x56\x69\x94\x1b\xc1\x30\x53\xcb\xae\xcb\x9c\xb6\xd4\xa8\x12\x5d\xad\xf6\x60\x6d\x0e\xe7\xeb\xad\xee\x4e\x6c\xe4\xf6\x52\x1d\x0b\x4c\x78\x27\x21\xb2\x99\x49\xb1\xad\x66\x64\xdb\xea\xad\x55\x32\xbe\x9a\xb7\x66\xe9\xca\x69\xfd\xc8\x43\x0d\xe1\xb3\x83\xd6\xbf\xba\x47\xb8\x61\x50\xfd\x85\x86\xf0\xe0\x1d\x18\xb7\x87\x46\xef\x64\x6c\x1e\xde\x23\x9c\x1d\x98\x23\xa7\x89\xee\x3c\x85\x6b\x56\x4a\x2f\x77\x13\x0b\x03\x2f\xec\x59\x1f\xb7\xec\xce\xc4\xce\xc7\x45\x29\xb1\xea\xf1\x9c\xd2\x8b\x0e\x1f\xad\x99\x36\x6a\x0e\x2c\xc5\x46\x3c\x07\x91\xd5\x6f\x96\x2b\xc4\x8e\x6e\x86\xde\x34\x56\x80\x4b\xb8\x9a\x35\x78\x83\x93\x4e\x72\x10\x17\x7b\xb0\xc6\xa2\x9e\xd3\x6a\x86\x6a\x10\x6d\x34\xeb\xa8\x5c\x56\x69\xdb\x33\x4b\x5a\xcb\xef\x88\xd9\x32\x1d\xce\x91\xe9\x26\xe3\x66\x67\x59\xc8\xfd\x24\xa1\xd1\x5f\xdd\x23\x3c\x24\x34\x7a\x95\xeb\xbf\xd5\x10\x1e\xbc\x25\xe7\x76\x43\x78\x27\xbb\x73\x30\x84\xe2\xb3\x62\x1f\x68\x08\xc5\x76\x2b\x68\xcf\x37\xe3\xdc\xda\x6a\xdb\x20\x17\x25\x95\xcc\xb8\x1e\x5b\x9b\xa3\x95\x11\x2b\xb4\x6d\x0d\x55\x51\xb0\x24\x6a\xc5\xb6\x34\xdf\xed\xe6\x9c\x94\x35\x4f\xf6\xfc\x3e\xd2\x41\x13\x13\x15\x6b\x4f\x61\x22\x5b\x96\xa2\xd6\xca\x74\x66\xf5\x2e\xe8\x74\x5d\x3c\x3c\x86\x46\xe9\x3e\x8a\xdb\x93\xba\x3b\x49\xa6\xf2\xd6\x3c\x85\x2d\x59\x4e\xf7\xeb\x95\x76\x2f\x3d\xc8\xc0\xdc\xac\x2e\x73\xd9\x7e\xd0\xde\xb6\xad\xb3\x5d\xcc\x3f\xd4\x10\x1a\x27\xef\xfa\xef\x63\x08\xaf\x56\x5b\xdf\x6a\x08\x0f\xde\xa3\x75\xbb\x21\xbc\x93\x09\x3a\x1a\xc2\xf0\x86\x23\xeb\x3e\x32\x84\x2c\x09\xed\xea\x68\x0b\x93\x4a\x6e\x9c\x40\xeb\x30\xb7\x33\x1a\xaa\x6e\x71\x54\x59\x77\x72\x9b\xaa\x06\x4b\xa5\xce\x44\x8e\x75\xbf\x89\xbc\x6c\x74\xb6\x40\x9b\x49\x7c\x50\x09\xe7\x7e\xa1\x35\xd2\x60\xd0\x6e\xd5\xfb\x34\x16\x83\xfe\x5a\x0f\xda\x19\xc0\xd3\x51\x97\x57\xab\x07\x43\xe0\x31\xc4\xca\x8b\xd8\x8a\xf5\x65\xa3\x90\x67\x5d\x32\x18\x46\x3b\x05\x37\x91\x8c\xcd\xc6\xb2\x9c\x28\x90\x40\x9b\xcd\x73\xc9\x0e\xf5\x4f\x5e\xed\xc7\x1a\xc2\xed\xc7\xab\xed\xaf\x1f\x62\x08\xaf\xe6\x7a\x6f\x35\x84\x07\x6f\xda\xbb\xdd\x10\x52\x6f\x0b\xf4\x64\x08\x4f\x80\x79\xa0\x21\xe4\xb9\xe8\x0c\x92\x31\x59\x6f\xa6\x4b\x8b\x44\x5c\x64\x6c\x3e\x86\x38\xdb\x70\x81\xbd\xcd\x28\xc7\x2d\xb5\x4a\x0b\xd9\x1c\xe1\x64\x65\xe9\xad\x53\xc5\xf2\xbc\x6d\x8e\xd6\xf1\x66\x79\xd3\x9c\xcf\xdb\xf9\x60\x9c\x8a\x87\x62\x1a\xeb\x67\x59\xab\x64\xe2\x0d\x77\xb5\x01\x55\xc7\xac\x51\x98\xe5\xe9\x7e\x87\x8c\xc7\xb5\xaa\x1b\xb2\x76\x77\xd2\x85\xb2\x5a\x50\x45\xbf\xd8\x18\x88\x5c\x61\x34\x48\x34\xb2\xd3\xfc\xca\x2c\xad\x7e\x96\x1e\x21\x7b\xf3\xb9\xa3\xfb\xeb\x87\x18\xc2\xab\xfd\x18\xb7\x1a\xc2\x83\x77\x71\xde\x6e\x08\xe9\xb7\x05\x3a\x1a\xc2\x2d\x87\x98\x7e\xd8\x23\x50\xbd\x51\x1e\xb1\x9c\x9e\xad\x9b\x13\x2f\x13\xaf\x6c\x70\xbe\x30\x4a\x7b\xfd\x69\xcc\x1c\x9a\x2d\xbf\xbb\xe8\xa4\x4c\x96\x8d\x19\x5d\xa3\x9a\x65\xa6\x86\x63\x93\xea\x0a\x58\x76\x79\x6d\x4e\xdb\x46\x9b\xcd\x89\xce\x75\xda\x98\x65\x7d\xd7\xf0\x58\xa1\x37\xf5\x12\x74\x15\xec\xc1\x8a\x87\xa9\xb6\x55\xef\xf6\x52\xa5\xea\x38\x68\x05\xdb\x09\x99\xa6\xcb\x61\x5a\xd7\xb2\x59\xd2\x76\x17\x45\xb0\x9d\xb4\x6a\x99\x66\x01\xa7\x4e\x53\x18\x3f\xd6\x10\x6e\x7e\x01\xc2\xe1\xfa\x21\x86\xf0\x6a\x83\xce\xad\x86\xf0\xe0\x6d\xbd\xb7\x1b\x42\xe6\x6d\x81\x9e\x0c\xe1\x0b\x7a\x84\x6c\x87\xc7\x9a\xc9\xbc\xe8\x6f\xb3\x9a\x50\x20\x33\x20\x56\x57\x0d\xcb\xbd\x71\x72\xd6\x2d\x04\x7d\x34\x2d\xd4\xd2\xb5\xd1\x20\xf4\xcb\x45\x63\x3b\x61\xfd\x5c\xbd\x6b\xb9\x95\x6e\xba\xd2\x89\xb1\xa8\x03\xf5\xa8\x5b\xf2\xe2\x9b\x41\xa6\x9d\x5e\x34\x73\x79\x6d\xe3\x0c\x1a\xb9\xde\xa1\x47\x28\x59\xb3\x8e\x2f\x1b\xc0\x1e\xb5\xea\x8d\x32\x45\xe5\x74\x7f\xa2\x57\x40\x95\xea\x0c\xcb\x7e\xb3\x99\x49\x79\x34\x01\xed\x3e\xae\x7d\x51\xd6\xe8\xf3\x86\xf0\x6f\xd8\x23\xbc\xda\xb1\x75\xab\x21\x3c\x7a\x9f\xf7\xed\x96\x70\x39\xfe\xbf\x62\x09\x4f\x5a\x7c\x64\x6c\x14\xef\x0e\x4b\x7e\x2b\x90\x5b\x58\x59\x2a\xc3\xae\xc7\x7c\x7d\x99\x00\x70\x1d\xf5\x93\x63\x43\x5b\x27\xb3\x5a\x69\x3d\x50\x79\x15\xa4\xd7\xc5\x7a\x74\x93\x0d\xf4\x9a\x87\x58\xd9\x18\xb4\xc6\xf1\x59\x7a\x9e\xce\xe1\xc2\x38\x41\xaa\xb5\x81\xcc\x36\x5b\x59\x9e\xa2\x4d\xa3\x17\xdf\xa3\x35\x67\xb3\x02\x1c\x39\x09\x37\x53\x4c\xc5\x5d\xbb\xc0\xc4\xd8\x2e\x6f\xed\xea\xaa\x1a\x2d\x94\x6b\xb6\x2f\xf3\x52\x40\x9d\xa4\xe6\xde\x69\x9f\xc6\x0f\xb6\x84\x9b\xdf\x19\xb4\xbf\x7e\x88\x25\xbc\xda\x53\x75\xf3\x8a\xb7\xc7\x6e\xfc\xbf\xfd\x85\x06\xef\x4c\x24\x1c\x62\xa2\x4f\xae\x78\xbb\xe3\x00\xe8\xc5\xa8\x8c\xce\x5b\xf1\xec\x85\x05\x26\xf0\xbb\x28\x58\x89\x44\x3d\x86\xa5\x1d\xe6\xe7\x0d\xe9\x9b\x9d\xb5\x3d\xcc\x1a\x0e\x4b\x80\x3c\x73\xe4\xc6\x4b\x07\x5e\xa3\x98\x2c\xeb\xab\x42\xd0\xa4\xd9\xf2\xb0\x1c\xed\xfa\x75\xb3\x1d\xb2\x94\x5d\xcd\x8c\x1b\xf9\x5e\xa6\x66\xe1\x8d\xf4\x4b\x05\xcd\xd5\x55\xad\x5a\xdc\x83\x7b\x1a\x5b\xa7\x26\xc1\xc4\x98\x8b\xa2\x97\xb3\xfd\x89\xb1\xee\x2d\xc3\x1e\x6a\x8e\x8d\x15\xea\xd4\x5a\x8d\x11\xd3\x9b\xdd\x4a\x4b\x45\xbd\x8f\xba\x90\xf3\xc4\xc3\x3b\x86\xb3\x8a\xff\x1b\x4c\x3c\x54\x7f\x04\x7f\x85\x59\x32\x04\xef\xf1\xf7\x1d\x86\xf5\xe0\x93\x1d\x6e\x37\xac\x77\x26\x26\x6e\x79\x53\xc6\x3d\x6f\x12\x78\xc7\xb0\x12\xb8\x96\xe8\xf8\xe6\xb6\x50\xcc\x15\xa7\xac\x14\x2d\x76\x12\x63\x3f\xd6\x9f\xf5\xda\x25\x5e\x28\xc5\xcb\x66\x98\xc6\x6c\x3e\x8a\xce\x37\x7c\x19\x36\xb0\xb5\xe8\x07\x3c\xda\x8e\x2e\x46\xb2\xdf\x19\xe5\xfc\x56\x2e\x9a\xe9\xeb\x5e\xaf\x1d\x83\xad\x32\xac\xcf\x2c\x3a\x8f\x99\xc7\x41\x8a\x27\x52\x80\x4f\xa7\xae\xdf\x9b\xc7\xfa\xd0\xa9\x0d\x44\xc5\xce\x3a\xa1\xd3\xea\x41\x91\xd4\xa7\x7a\xa9\x34\x0b\xf9\xdc\x48\x5a\xe2\x8b\x0c\xeb\xa7\x9c\xc8\xa8\xfe\x08\xfe\x1e\x61\x58\x0f\x3e\x3a\xe4\x76\xc3\x7a\x67\xa2\xe3\x36\xc3\xba\x69\x62\xe4\x23\xc3\xca\xad\x2a\xc9\x81\x19\xdd\x2c\xf2\xa9\x71\x2a\x08\x65\xa1\x38\x0d\x67\xb9\x71\x7c\x16\x4c\x90\xbe\xa1\x3c\x57\x1f\xfb\xb0\x32\xcc\x59\xf6\xc0\x70\xb7\x46\x6a\x21\x6a\xc5\x51\x98\xef\x64\xfa\xb9\x62\xb6\x34\xb7\xd3\xdb\xed\x04\xcc\xad\x55\x46\x05\xc2\xb0\xa7\x70\xb5\xaa\x6d\x7a\x87\x19\xc2\x22\x1c\xaf\xa8\xb7\xaa\x55\x45\x7f\xbc\xe0\x72\x3d\x70\x63\x5e\xaa\x9b\xa9\x55\x2c\x2f\x0b\x07\xb0\x9d\xc5\xd9\x69\x73\xb0\xb4\x2a\x95\x8f\xf2\xc1\x7f\x91\x61\xfd\x25\x13\x23\x77\x18\xd6\xed\xfc\x3d\xc2\xb0\x1e\x7c\x36\xcd\xed\x86\xf5\xce\xc4\xc9\x8d\x86\x75\xcb\x44\xcb\x87\xa1\xe0\x7c\x64\x05\xb3\x1c\x59\x17\x0a\x66\xaf\xed\x25\x08\x99\x4c\xa3\x76\x5d\x4f\x9a\xc3\x6e\x60\x52\xe6\xc7\xdb\xd5\x32\xda\x4e\xc4\x26\x83\xe7\x96\xd0\x3d\x37\x96\xd4\x93\xc5\x3a\xad\x41\x2f\xe3\x52\x41\x83\x90\x73\xbb\x89\x62\x75\x28\x67\x3e\x8d\xd7\x18\x4a\x54\x0f\x63\xa8\x4e\x0c\xac\x13\xb5\xf5\xbc\xb8\x2d\x4f\xc9\xa0\x38\x73\x13\x4d\x95\xe9\x4c\x78\x0e\xda\xdd\x75\x16\x2d\x01\xd5\x33\x89\xfc\xc8\x5a\xd5\x4f\xe0\xfc\xb1\x86\xf5\x57\x4c\xb4\xdc\x63\x58\x37\xf3\xf7\x90\x50\xf0\xb1\x87\x1f\xdd\x6e\x58\xef\x4c\xc4\xdc\x6a\x58\x37\xa4\xe9\x3e\x32\xac\x4a\x58\xab\xc6\x43\xdb\x1d\x58\x13\xde\x6d\xad\xf4\xc5\x3a\xe6\x39\x8b\x3e\xdd\xd0\xd2\x34\x4d\x27\xe6\xaa\x62\x6d\x52\x62\xde\xce\x24\xb5\x68\xac\xe0\x57\x71\x23\x6e\x94\x6d\x31\x5d\x66\x4d\x9d\x8a\x05\x5e\x8d\x2d\x5a\xd7\x50\x3e\xeb\x76\xf2\xba\x67\x41\x31\xae\x45\x7b\x87\xc5\x5d\x93\xcd\xb0\xbf\x29\xf7\xdb\x41\x39\xd6\x6d\x15\x45\xb1\x14\x4a\x44\x35\x3d\x55\xb1\x69\x29\x9b\xa9\x34\x72\xda\xaa\xb3\xa5\x7d\x77\x34\xfa\x28\x5f\xfd\x97\x19\xd6\x5f\x90\xa6\xbb\xcb\xb0\x6e\xe5\xef\x11\x86\xf5\xe0\xd3\xb5\x6e\x37\xac\x77\x26\x76\x6e\x34\xac\x9b\xdf\x66\xf7\x8e\x61\x15\xb7\x85\xc4\x78\x16\x9b\x30\xad\xb4\xa8\x58\xd3\x12\x54\x24\x45\x89\x9f\x4e\x67\x66\x89\x69\x3b\x91\xf5\x57\x34\x64\x42\xd2\x30\x81\x16\xa3\x7c\xa7\xda\x1c\x64\x36\x43\x2d\x15\x6b\x83\xe2\x82\xa2\x69\x6c\x3a\x9d\x62\xd1\x9e\xad\x0b\x1b\x8f\x65\x9d\x6e\xb7\x1d\x46\x13\xc7\xfc\x77\xaf\x37\x98\x5b\xb1\x75\x49\x38\x6a\x61\x62\x73\x13\x18\xe5\x65\x3a\xa6\x65\x4d\x7f\xb6\x04\xb0\xd1\x88\x15\x40\x5d\xa1\x55\x45\x1f\xfe\x2c\xa1\xe0\x5f\x31\x11\x74\x8f\x61\xdd\xcc\xdf\x23\x0c\xeb\xc1\xc7\xb7\xdd\x6e\x58\xef\x4c\x14\xdd\x6a\x58\x5f\xd1\x63\x75\x0a\xb1\x02\xc9\xf5\x87\x7d\xd5\x04\xbc\x31\x6d\x4e\x4d\x46\xb3\x8b\x15\xd7\xbb\xc8\x17\xf5\x60\xe1\xea\xdb\x0e\xf0\x64\x9d\x2e\x35\x77\x03\x27\xc9\x6d\xba\xbc\xa8\xeb\x1e\x48\xad\xa4\x90\xfd\xed\x86\x90\x79\x59\x4e\x52\x4d\x34\xaa\x07\x35\x82\x3b\xf3\x02\x5f\x75\xf6\xe0\x77\xd3\x1d\xd2\x88\xf6\xbd\x71\xb1\x49\x1a\x5b\xb8\x1e\x40\x33\xbb\xec\xcf\xfb\x7a\xb6\x31\x2e\x6c\x6b\x53\x64\x8b\x6c\x9e\x9b\xed\x6d\xf4\x67\x09\x05\xff\x8a\x89\xa5\xbb\x0c\xeb\x47\xf6\x58\x0f\x3e\x1f\xf0\x76\xc3\x7a\x67\xde\xe9\x56\xc3\xba\x61\x9e\xea\x23\xc3\x4a\x76\x0b\xe5\x4e\xd4\xa5\xbc\xe9\xf8\xad\x89\x90\x81\xbd\xc5\xf9\x64\x2b\x3d\x18\x15\x4c\xb7\x63\x59\xf5\xd2\x46\xa5\x62\xba\x39\x4e\xcd\x66\xad\x99\x1a\x16\xfd\x3a\x32\x9c\x4d\x62\xa3\x6d\xea\xa2\xc4\xb6\x56\x7f\x8d\x65\xb7\xd7\x5c\x4c\xea\xee\x2c\xe6\x84\x7d\xbb\xe3\xac\x0e\xe9\xf6\x26\x6b\x96\xf3\xf6\x66\x00\x07\xe6\x20\x37\x1f\x34\x13\x6d\x4e\x48\xb2\x5f\x9f\xa6\xa2\x6d\x37\x3b\x76\x78\xca\x2a\x17\x67\xa4\xb6\xc5\x3f\x8d\x61\xfd\x05\xf3\x54\x77\x19\xd6\xad\xfc\x3d\xc2\xb0\x1e\x7c\x00\xe5\xed\x13\xba\xff\x1e\x2f\xe6\xbe\x7a\x26\xe3\xd9\x04\x71\xa6\x53\xac\x97\x86\x0e\x70\xa3\xbe\xde\x05\x33\x77\xbb\x51\xa3\xf5\x68\x3b\x6a\x22\x8f\x2f\x49\x96\x15\xb3\x95\xf6\xa6\x22\xc7\x5e\xa5\x01\xf2\x45\x3c\x26\xb5\x19\xe0\xa9\x60\x9e\x6a\xe7\x2a\xf1\xc4\xb6\xd7\x2b\xce\x1b\x39\xbf\xb5\xee\xe0\x51\x34\x53\x31\x54\xc2\x4f\x47\xe3\xbd\xc3\x3c\x57\x6d\x5d\x4e\xcf\xb5\x71\xdc\x12\x85\x02\xb6\xbb\x53\x34\x8e\x39\x95\x70\x15\xcd\x4b\xad\x3f\x8b\xc6\xea\x20\xac\x71\x00\x16\xbd\xc6\x47\x1b\xe7\xaf\x1f\xd0\xfc\x49\xc7\x75\x06\xfe\x54\xaa\xd9\xcc\xde\xa6\xdf\x3b\xe6\xc2\x4c\xb7\xdd\x3f\x3c\x79\x39\xa9\x7d\xb8\xde\x9f\xf8\xb6\x4f\xdf\x3f\x6b\xb0\x27\x7a\x3f\x31\x26\xbf\xe4\x80\xa5\x4b\x1b\xfd\xc4\xc9\x52\x5f\x7d\x02\xeb\xed\x3d\xfa\xbf\x87\xe3\xb9\xaa\xe8\xb3\x1e\x3f\xdf\x09\xac\x66\x50\xb6\x17\x19\xe1\xa8\x35\x59\xaa\x26\x60\xb9\xde\x70\x3d\xea\x6e\xe6\xbe\x96\x12\xc5\x6d\xa3\x93\xae\xd4\xa3\xc9\xd4\x00\xa5\xfa\x4e\x3f\xdf\xab\xe6\xaa\x5e\x7f\x10\x95\xe9\x9a\x2f\x9c\xb2\x5a\x17\xd7\x78\x31\xb1\xcd\x76\x6d\x2a\xc3\xcc\xac\xd2\x0c\x4a\x3d\xeb\xb0\x6a\x57\x0d\x4c\x93\x97\x7a\x9b\x99\x0a\x02\x3c\x9d\x94\x96\x6e\xa5\x5d\x62\xc6\xc8\xf4\x4b\x49\x7b\x39\xdb\xc4\x47\xce\x74\xe0\xf6\x6a\xf5\xd3\xdb\xc9\x3e\xe3\x78\x6e\xea\x95\xf7\xa0\xff\x29\x1c\xcf\xab\x15\x24\xdf\xed\x78\x3e\x8d\x89\xf8\xf3\xa2\x8f\x9f\x17\x93\x5f\x72\x4a\xe9\xeb\x55\x3a\xb7\x3b\x9e\x07\x1f\x41\x7c\x7b\xc4\x93\xbf\xe0\xfe\x95\xe3\xb9\x7d\x5e\xf3\x9e\x46\x5e\xfa\xab\xde\x47\x8d\x7c\x16\xf1\xe4\xc0\xd4\x28\x69\xb9\x11\x8e\x0e\x80\x33\xca\x16\x1c\x0b\xd9\x8d\x81\x3d\xdb\x74\x97\xe5\x5c\xa1\xb4\x8c\xd7\xda\xb8\xd7\x19\x4d\x41\x3e\xb1\xe0\x12\x78\x3a\x36\x72\x13\x96\x98\xaf\x7d\x12\xa8\xf1\x22\x9b\xaa\x4f\x4b\xce\x3a\x91\x2b\xfb\x09\xac\x8f\x36\xbc\xb1\x28\xc3\xf8\x68\xef\x78\x6a\x7a\x6a\xec\x25\xbc\xfc\xd2\x45\xa9\xb6\x1c\x56\x4d\x86\x6a\xcd\x38\x5b\x86\x29\x4a\x1a\xe5\x6e\x16\xa7\x56\x9b\x5c\x1b\x67\xd6\xf9\x8f\xce\xc1\x7a\x60\xc4\xb3\xd7\xaf\xf5\x9c\x64\xfa\x2b\x1d\x4f\x22\xba\x3c\x3a\x92\x3b\x1d\xcf\x4d\x11\xcf\xcf\x8e\xc9\x2f\x89\x78\x2e\x6d\xf4\x1e\xc7\xf3\xe0\x33\xc0\x6f\x8f\x78\x3e\x74\x3c\x3f\x45\xef\x72\x35\xac\x3d\xcf\x71\x88\x60\x61\x0d\xba\xa3\x4a\x2f\x35\x2d\xe7\x9b\x73\xde\x76\xc9\x1c\x7a\x90\xd1\x0d\x34\xbb\xa5\x54\x67\xe8\xc1\x65\x33\x83\x9d\x35\x97\x25\x96\xcc\xd7\xac\x30\x66\x17\x66\x61\x37\x86\x7a\xc9\x4e\x32\xe6\x0e\x56\xb8\x99\xcb\x0e\x72\xdb\xf4\x26\xea\xd3\x6e\xab\xa3\x92\x3d\x7d\xef\x78\xa2\x41\x07\x56\xc3\x49\x2b\x56\x98\x96\x39\x0d\x37\x95\xfc\xb8\xd0\x1a\x86\x66\x6b\xeb\x8c\xc8\x7c\x3d\xda\x64\x33\x2e\xec\xc3\xcc\x30\xfa\xd1\xca\xa7\xc7\x45\x3c\x07\xa2\x3f\x45\xc4\x73\xfb\x50\xeb\xa6\x88\xe7\x90\x5b\xf9\x79\x31\xf9\x25\x11\xcf\xeb\xe3\xb8\x6e\x77\x3c\x0f\x3e\x84\xff\xf6\x88\xa7\x70\xc1\xfd\x03\x1d\xcf\x1d\x3d\xf2\x67\x23\x9e\x52\x6a\xac\xa9\x66\xac\xdc\x68\x49\x51\x4f\x36\x64\xac\xb8\x09\xe7\xf6\xb0\xcb\xeb\xf1\x76\xca\x6a\x43\x51\xcb\x43\x93\xe3\x8a\xed\x67\xc6\xeb\xb2\xde\x92\xd3\x59\x96\x26\x41\x7e\x98\x9b\x42\x86\xdb\x1b\x8a\x93\xf3\x75\x74\xd0\x48\x58\x45\xd0\xf6\x41\x6c\x9c\x2e\x1a\xd5\xc3\x92\xcb\x41\xad\xdd\x9e\x17\xd7\xbe\x3e\x59\x75\xd3\xcd\xd9\x96\xc3\x92\x6c\xb7\x17\x86\x9d\xa6\x13\x31\x91\xd6\x58\x17\xa3\x84\x61\x88\xcc\x59\x1a\xfa\xab\x23\x1e\xf3\xde\x1c\xcf\x1d\xab\xc7\x7e\x6c\xc4\xb3\x7f\xfe\x27\xc6\xe4\x97\x44\x3c\x97\x36\x7a\x8f\xe3\x79\xf0\x5b\x30\x6e\x8f\x78\x3e\x72\x3c\x87\xeb\xf6\x1e\xf2\xec\xb0\xc9\x7d\xa3\xbc\x0e\x1b\x77\x97\xfb\x54\xde\x8c\x0b\x27\x45\x20\x8f\xa5\x87\x53\x96\x99\x2d\x4a\x99\xc0\x9c\xd9\xa3\x56\x3e\x90\x79\xaf\xb6\xac\x11\x44\x52\x9b\xee\xb4\xe2\x25\xcc\x71\x22\x9f\x71\x13\x9b\x65\x18\xeb\x8c\x7a\xa8\x92\x86\xf5\x7a\x18\xb4\xb2\x33\x87\x6d\x6d\x33\xd6\xee\xa6\x86\xcb\xde\x6a\x40\x52\xc6\x76\x65\xae\x0e\xb3\x28\xc9\x7e\xa1\x5f\x5a\xe5\x67\xcd\xed\x26\x6b\xcf\x32\x5b\xbe\xed\xb6\x32\x89\x41\x69\x48\x1b\xf5\x68\x1d\x55\xea\x96\xb5\x09\x83\xa1\x9d\x28\xd0\x67\xd6\xbe\x3c\x7a\x39\xf5\x9c\x77\x6c\x30\xc9\xd2\x52\x6a\x71\xe8\x29\xf7\xa0\x7c\xf5\xc6\x9a\x0f\x76\x3b\xdd\x1b\x89\x9c\xed\xac\xba\x03\x2b\x95\x64\xcd\x09\x3f\xc2\x4a\x35\xfe\x72\x27\xf7\x0d\xe7\x8d\x23\x52\x7d\x96\x37\xb1\xba\xda\x9e\x37\x1f\x91\xf0\xd8\xd7\xbc\xdc\x1e\x51\x5c\x4a\xf4\x3a\x87\x72\xf3\x12\xd6\x3b\xc2\x46\x33\xd3\x9f\xae\xce\xf8\xf9\x28\xa2\x48\x36\xf4\x5e\x9d\x95\x68\xaa\xaa\x8b\x4d\x67\x38\x2d\xcf\x53\xc5\xbe\x87\x06\xd6\xbc\xe2\xdb\x65\xea\x0a\x01\xda\x71\xdb\x71\x17\x66\x67\x21\x4a\xf9\xce\xa4\x1e\x62\xe2\x99\x6e\x2d\x2c\x6f\xb3\x76\xa2\x5f\x1e\xe7\x07\xe1\xba\x09\xa3\x60\x9c\xec\xcc\x10\x75\x2b\x4b\x1c\x3f\xac\xdc\x5b\x74\x73\xae\x1f\xd5\xab\xa8\x5c\xec\x5b\x5b\xb9\xee\xf5\x95\x37\x4d\x8f\xc4\xac\xa7\xb9\x5d\xda\x0c\x27\x43\x92\xcd\x1a\xdb\xea\xa6\xf9\xd1\x91\x0b\x0f\x8c\x28\x0e\xbd\xe3\xe6\x39\x97\xf0\x17\x0e\x65\x2c\x95\x1e\x1e\x9e\xfc\x11\x11\xc5\xbd\xcb\xaa\xbf\x1a\x93\x5f\x12\x51\xbc\x06\xce\xed\x11\xc5\x83\xdf\xb3\x74\xbb\xe3\x29\x5d\x70\x7f\xc5\xf1\xdc\xba\x60\xea\x0e\xc3\xf8\xac\xe3\x29\x26\xad\x64\xbe\x3d\x33\x00\x96\xb1\xc1\x84\x55\xc2\x95\xf2\x3c\x88\x3a\x75\x9b\xe7\xf3\x43\x1e\x92\x62\xd2\xf4\x4a\xf9\x75\xc6\xab\xe2\x72\xaa\x03\x0b\x6c\x13\x6c\x97\xfa\x7c\x4a\xe2\x6b\xbd\x34\x97\x51\x93\x75\xdc\x65\x7e\xbd\x4d\xaf\xf4\x61\x35\x5d\x65\xb6\x2c\xf7\x0e\xd3\xd5\xf3\x1c\x8a\x87\x51\xaf\x97\x5e\x0a\x38\xb1\x37\x9a\x53\x91\x70\xc9\x4a\xb1\xa0\xdc\xa9\xe7\xea\xcd\xc4\xb8\x18\x4f\xe7\x62\x85\x8a\x51\xfb\x68\x3f\xf3\xe3\x1c\xcf\xf1\x54\xdd\x4d\xb1\x77\xa3\x7e\xef\x58\xaf\xff\x63\x1d\xcf\x5e\xe0\x9f\x18\x93\x5f\xe2\x78\x2e\x6d\xf4\x1e\xc7\xf3\xe0\x17\x9d\xdd\xee\x78\xca\x17\xdc\x3f\x32\x87\x72\xbb\x61\x7c\xd6\xf1\x94\x3d\x48\xcb\x8d\xcd\x78\x3e\x73\x6a\x9b\x41\xbb\x64\xd7\xf2\x9d\x1e\x76\x05\xf4\x5b\x7a\x85\x94\x5d\xb9\xd9\x66\xfb\x5b\xab\x62\xa8\x24\xe8\xd5\xa3\x75\xa5\xdb\xd5\x62\x79\x05\xb6\xc1\xd2\x4d\x20\xe9\xd6\x91\x61\xe4\x33\x56\xab\xd6\x36\xe9\xbc\x5a\x98\x57\xc9\xb8\x10\x3f\xe4\x50\x36\xf5\x05\xa4\x45\x1c\x2c\x51\xdd\x9e\x2c\x95\x56\xb5\xf4\xbc\xdf\xef\x61\x54\x48\x81\x4d\x4f\xe9\x7c\xc5\xab\xe5\x74\x98\x1d\x0e\x4f\x9c\x7d\xb9\xe3\xb9\x3b\x87\x72\xfb\x7e\x86\x1f\xeb\x78\xf6\xa3\xe2\x9f\x18\x93\x5f\xe2\x78\x2e\x6d\xf4\xae\xe4\xed\x83\xdf\x34\x78\xbb\xe7\xa9\x5c\xb0\xff\x3a\xe4\xb9\x79\xf3\xc5\x3d\x71\xed\xf3\xdc\xc4\x1b\xc7\x00\xc6\x5f\x7a\x9e\x74\xd9\x9c\x4d\xbb\xb5\xac\xbf\xa0\xb9\xdc\x70\x32\x0a\x9b\x1e\x9d\xe4\xa6\xd5\x64\x73\x31\x9e\x1a\x56\x6f\x5e\xa7\x6d\x02\xfb\xd0\x5a\xda\xd1\x78\x9d\xd6\xcb\x4b\xdb\xec\xb6\xe2\xdb\x75\x54\x55\x2b\xd3\x89\x91\xe1\xbd\xb5\xd0\x6a\x2c\x53\xed\xc5\xb3\x35\x66\xe4\x3b\xdb\x58\xfc\x30\x6d\x34\x58\xda\xb9\x7e\x33\x67\xd8\x7a\xb9\x5b\x28\xb3\x6d\x16\xae\xdc\xc9\xc4\xce\xcf\xfa\xe5\x4e\xbd\xc1\x97\x30\x13\x6e\x96\xab\x60\x08\x32\x7f\x61\xc8\xb3\xb7\x1e\x6b\xfb\x23\xc6\x5a\x29\xa6\x8e\x80\xb8\x7a\x52\xc9\x17\x7b\x9e\xbd\x8e\x7f\x62\x4c\x7e\x89\xe7\xb9\xb4\xd1\xbb\x16\xca\x3c\xf8\x55\x9f\xb7\x7b\x9e\x4b\x19\xae\x78\x9e\x9b\x03\xdb\xdb\x2d\xe3\xb3\x9e\xa7\xd4\x13\x39\xd1\x68\x7b\x95\x8c\xad\xd6\x15\x6f\xae\x37\x3b\x1a\x4a\x34\x57\x23\xba\xcd\x2f\x84\xc7\xa7\x64\x06\x0a\x6e\x37\xac\x16\xfa\x39\x9f\x56\x6a\xcb\x78\x6c\xd0\xea\x35\xa6\x9c\x27\x2a\x6b\x07\xb5\x92\xa9\x78\x82\xea\xcb\xaa\x21\x53\xeb\x6d\x2e\x68\x17\x65\x22\xb6\x3a\x9c\x28\x50\xcf\x74\x2d\xdb\xaa\x6e\x8c\x46\x36\xea\x97\x93\xd2\x6a\x6d\x48\xb1\x3f\xdc\xf4\xcc\x72\x6d\x5e\x0b\x26\xb5\x20\xf4\x20\x56\x39\xe5\xdf\x96\xf2\xbd\xc9\xf3\x3c\xe9\xf7\xe6\xc1\xd6\xed\x5b\xcd\x7e\xac\xe7\x39\x2c\x59\xfb\x79\x31\xf9\x25\x9e\xe7\x75\x4d\x77\x64\x79\x1e\xfc\xae\xdd\xdb\x3d\x4f\xed\x82\xfd\x2b\x9e\xe7\xd6\xed\x3b\x77\x58\xc6\x67\x3d\x4f\x9e\xad\x48\x73\x90\x6c\x6b\xdb\x6c\x1e\xf7\xcb\x33\x29\x5b\x8d\xaa\xdd\x0f\xa6\x46\x77\x22\x9b\x09\x37\x5a\x44\xd6\xda\x4f\xc4\x73\x7e\x69\x3b\x6b\xf2\x0c\xcf\xf4\x3a\x65\xaf\xcd\x6b\xc3\x0a\xab\xf9\x99\xf5\x76\x62\x2c\x62\x6c\xe6\x44\xed\x56\x6b\x5e\xe3\xe1\x6a\x9d\x31\x57\x87\x35\x7a\x53\x80\x26\xf1\x6a\x33\xe7\x95\xd6\xb3\xe9\x2a\x5b\x59\x7b\xd1\x51\x7c\xe0\x95\x0a\x64\xda\x23\x46\xb7\xec\x0e\xed\x15\x0e\x37\x70\x56\xf9\xe8\xfd\x37\x8f\xf3\x3c\x87\x03\x66\xac\x6d\x71\x75\xa3\x7e\xef\xd8\x8b\xf7\x63\x3d\xcf\x5e\xe0\x9f\x18\x93\x5f\xe2\x79\x2e\x6d\xf4\x1e\xcf\xf3\xe8\x97\x5d\xdf\xee\x79\xea\x17\xec\x3f\x32\xcf\x73\xbb\x65\x7c\xd6\xf3\x98\x15\x55\x4c\x81\x1a\x69\x9a\xbd\x4c\xc7\x6c\xad\x26\x35\x53\xb0\x60\x98\x2e\x2a\x9a\x19\x4c\xc3\x69\x07\x65\x52\x3d\x27\x16\xed\x0d\xa3\x60\x3d\x8b\xe7\x0b\x78\xe6\xc7\xeb\x8d\xda\xdc\x6a\xb5\x10\x73\x3b\xa9\xa2\xbe\x2e\x6c\x0a\xe6\x68\x59\x81\xab\x50\x66\x3c\x3e\x1b\x56\x0f\xa3\xad\x71\x79\x94\x1d\xf7\xaa\xcd\x59\xa7\xd8\x18\x0f\xa2\xc9\xb4\x58\xcf\x5a\xf5\x42\x25\x31\x6a\x41\xbe\x0d\x7d\xc3\xe9\xb5\x95\x59\x2a\x4c\xf4\xd3\xfa\x93\x2f\xf7\x3c\x77\xe7\x79\x6e\xdf\xac\xf8\x63\x3d\xcf\x7e\x56\xfe\x27\xc6\xe4\x97\x78\x9e\x4b\x1b\xfd\xae\x17\xce\x1f\xde\x33\xcf\x85\x98\x2e\xbc\x50\xf2\x90\x9f\x7f\xfe\x73\x36\x52\xcf\xaf\x9e\x4f\x94\x4b\xf5\x46\x2d\x9e\x2d\x35\x3e\x78\xf5\x7c\xbc\xd0\xb0\x6a\xc7\x37\xd5\x97\x4b\x85\xce\x39\xc5\x5f\x22\x91\x48\x24\x9e\x4c\x9e\x51\x7b\x55\x61\xa4\x52\xcb\x16\xe3\xb5\x4e\x24\x6f\x75\x22\xbf\x1d\xef\x0e\xe4\xef\x91\x5d\x09\x8f\x4f\xd4\x5b\xec\x07\xcf\x1f\x1e\xcb\x78\xf0\x0e\xd7\xc1\x7b\x2c\xbf\x62\xd4\xe1\xde\xee\xff\x07\xb1\xe7\x70\xef\x1a\x67\x4f\x15\xbc\x64\xca\x9b\x4a\x75\x85\xa3\xb1\x92\x3d\xe5\xf7\x15\x97\xca\x0f\x5e\x7e\xfb\xf3\xf0\x2d\x50\xf3\x3f\x1f\xc2\xee\x0b\xe2\xd7\x18\x7f\xa7\xf6\x88\x5d\xca\x56\x6d\x2b\xf2\xdb\xf3\xaf\x9f\x92\xe4\x31\xfa\xfe\xa4\x00\xaf\xdb\xe0\x78\x9f\x07\xfd\x57\xdc\x4f\x5d\x77\xc7\xf6\xe1\xcf\x83\xf8\x3d\x10\xbb\xc6\xe8\x59\x35\x2f\x39\xdc\xdf\xb8\x02\x93\x99\xda\x71\xb7\xff\xf7\x41\xcc\xed\x69\x5d\xe3\xed\x54\xc9\x4b\xd6\x06\xb3\xdf\x23\xb3\xa9\x1f\xbe\xe6\x6d\x57\x5f\xd0\x9f\x2f\xd4\x42\xbd\xf8\xf2\x28\x4e\xcf\x48\x5e\x65\xf8\xb2\xca\x6b\x8d\x7e\x8d\xeb\x60\xe1\x1c\xff\x3c\x8e\xd3\x60\xe1\xbc\xc1\xe3\x53\x35\x2f\xb9\xf3\x55\x70\xa5\xb9\x03\x31\x9b\x2f\xa6\xfe\x62\x12\x9c\x7d\x7c\x10\x93\x27\x82\xd7\x18\xbd\xa8\xee\x25\xb3\xf3\x40\x85\x57\xad\x27\x18\xf4\xbc\x1d\x40\x8f\x7f\x1f\xc5\xe9\x81\xda\x55\x36\xcf\x2a\x7a\xb3\xbf\x3a\xd4\x32\x52\x9b\xd7\xfc\x86\x53\x5f\x05\x21\x0f\xd5\xd9\xc7\x47\x71\xfd\x4c\xf0\x2a\xe3\x2f\xab\x7b\xc9\xfb\xfe\xf7\xab\x3d\x6c\xe8\x2f\x82\x70\x3c\xf0\x54\x70\xf6\xf1\x41\x0c\x9f\x08\x5e\x63\xf8\xa2\xba\x37\x95\x3d\x08\x82\x85\xf2\x7f\x8f\xf0\x20\x50\xa1\x98\xca\x2b\x32\xac\x5d\xa5\x9e\xc6\x58\xe7\x5f\x1e\x25\xc7\x19\xc9\xab\x92\x5c\x56\x79\xcd\x4f\x04\x6a\xfe\x7b\x24\x5c\x0f\x3c\xa9\xd6\x57\x24\x38\xb1\xff\x68\xde\xdf\x65\xfc\x2e\xae\x8f\x8d\xe4\xf0\x31\xf7\x84\x0a\x9e\x98\xcd\x96\x92\x56\xfb\x03\x3e\x13\x35\x2b\xde\xb0\x0e\x45\x2f\xe9\x44\xca\xa5\x53\xe0\x67\xd7\xb3\xa5\x74\xc4\x09\x7d\xa5\x22\xbf\x1d\x4b\xfc\x2d\xd2\xca\x58\x35\xeb\xf9\x7b\xe4\x7f\xfe\x88\x40\xf0\x74\xbd\x8e\xcd\x16\x9b\x81\xd7\x3b\xc0\x68\x2f\xc8\xcd\x8c\xbe\xa2\xb4\x63\xf5\xd8\xc1\xbf\x64\xf4\xac\xe0\x2b\x7e\x76\x3a\x77\x36\x81\x9a\xdf\xcc\xc7\x33\x85\x5d\xfd\x27\xec\xbc\x60\xe1\xed\x78\x6a\x57\xdc\x55\xea\x7e\x16\x9e\x88\x1c\xb8\x38\xb3\xc1\xef\x64\xe4\x78\xe7\x3e\x46\xce\x89\xec\x18\x79\x19\x2d\x7e\x27\x27\x33\x7f\x20\xd4\x7d\xd8\x38\x91\x78\x0b\x14\xfb\x12\xd7\x7a\x64\xe5\x2d\xef\x54\xc2\x39\x91\x5d\xf5\x81\x98\x7d\xb2\x2d\x4e\xdd\xf3\xdd\x9c\x9c\xd3\x39\x32\xf3\x14\x73\xbc\x64\x86\x07\xe1\x3b\x0c\xa9\xf1\xf8\x41\x66\xfb\x9a\xd4\x5b\x4d\xf4\xa2\xe4\x5b\xc1\xc8\xd1\x37\xdd\xce\xce\x0b\x32\x7b\x0d\x1d\xa3\x9c\x17\xbc\x5c\x1b\x6c\x56\xa6\x41\xd8\xf3\x55\xbd\x5a\xd8\x8f\x99\x1d\x1e\xa8\x88\x5c\x4c\x66\x11\x31\x9d\xcc\xc6\x2a\x54\xfb\xda\xfe\xff\x00\x00\x00\xff\xff\x4d\x5e\x58\x9c\x38\x26\x01\x00") + +func pathsCoreSqlBytes() ([]byte, error) { + return bindataRead( + _pathsCoreSql, + "paths-core.sql", + ) +} + +func pathsCoreSql() (*asset, error) { + bytes, err := pathsCoreSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "paths-core.sql", size: 75320, mode: os.FileMode(420), modTime: time.Unix(1508958272, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _pathsHorizonSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x69\x73\x2a\xb7\xd3\x37\xfc\x3e\x9f\x82\xca\x9b\x93\x14\x27\x41\xbb\x46\x27\x4f\xee\x2a\x96\x61\xdf\x77\xb8\xeb\x2e\xd7\x2c\x1a\x18\xb6\x19\x98\x61\xbd\xea\xfa\xee\x4f\x99\xcd\x36\x06\x83\x01\xfb\x38\xa9\x4c\x9d\xff\x3f\xc8\xd2\xb4\xba\x5b\xad\x9f\x5a\x52\x4b\xf3\xc7\x1f\xbf\xfc\xf1\x47\xa0\xe8\x78\x7e\x67\x22\x2b\xa5\x6c\xc0\xd4\x7c\x4d\xd7\x3c\x19\x30\xa7\x43\xf7\x97\x3f\xfe\xf8\xe5\x31\x3f\x36\x1d\xba\xd2\x0c\x58\x13\x67\xf8\x54\x60\x26\x27\x9e\xed\x8c\x02\xe2\x4f\xf6\x27\x7d\x56\x4a\x5f\x06\xdc\xce\xc3\xe3\xeb\x07\x45\x7e\xa9\xa8\xd5\x80\xe7\x6b\xbe\x1c\xca\x91\xff\xe0\xdb\x43\xe9\x4c\xfd\xc0\xdf\x01\xf0\xd7\x3a\x6b\xe0\x18\xfd\xd7\x7f\x35\x06\xf6\x63\x69\x39\x32\x1c\xd3\x1e\x75\x02\x7f\x07\xbe\xd5\xaa\x71\xe5\xdb\x5f\x3b\x72\x23\x53\x9b\x98\x0f\x86\x33\xb2\x9c\xc9\xd0\x1e\x75\x1e\x3c\x7f\x62\x8f\x3a\x5e\xe0\xef\x80\x33\xda\xd2\xe8\x4a\xa3\xff\x60\x4d\x47\x86\x6f\x3b\xa3\x07\xdd\x31\x6d\xf9\x98\x6f\x69\x03\x4f\xbe\xa8\x66\x68\x8f\x1e\x86\xd2\xf3\xb4\xce\xba\xc0\x5c\x9b\x8c\xec\x51\xe7\xaf\x2d\xef\x52\x9b\x18\xdd\x07\x57\xf3\xbb\x81\xbf\x03\xee\x54\x1f\xd8\xc6\xf7\x47\x61\x0d\xcd\xd7\x06\xce\x63\xb1\x70\xb6\xaa\x96\x03\xd5\x70\x24\xab\x06\x52\xf1\x80\xda\x4c\x55\xaa\x95\x40\x21\x9f\x6d\x6d\xcb\xff\xd9\xb5\x3d\xdf\x99\x2c\x1f\xfc\x89\x66\x4a\x2f\x10\x2b\x17\x8a\x81\x68\x21\x5f\xa9\x96\xc3\xa9\x7c\xf5\xd9\x4b\x2f\x0b\x3e\x18\xce\x74\xe4\xcb\xc9\x83\xe6\x79\xd2\x7f\xb0\xcd\x07\xab\x2f\x97\x7f\x7d\x46\x85\xc6\xfa\xd7\x67\x54\xf9\x68\x57\x9f\x27\xe0\xa6\xb6\x43\xe9\xd6\xaf\xa7\xf2\x31\xb5\xf9\xec\xcd\x6d\x4d\xeb\x17\x1f\xa4\x65\x49\xc3\xf7\x1e\xf4\xe5\x83\x33\x31\xe5\xe4\x41\x77\x9c\xfe\xdb\x2f\xda\x23\x53\x2e\x1e\x9e\xd5\x3f\xf2\xb4\xb5\x2d\x7a\x0f\xce\xe8\xc1\x36\xdf\xf3\xb6\xe3\xca\x89\xb6\x7f\xd7\x5f\xba\xf2\x86\xb7\x9f\x38\xb9\x89\x8b\xf7\xbd\x3b\x90\x66\x47\x4e\xd6\x2f\x7a\x72\x3c\x95\x23\xe3\x5d\x22\x3c\x7b\xdd\x9d\xc8\x99\xed\x4c\xbd\xed\xdf\x1e\xba\x9a\xd7\xbd\x92\xd4\xed\x14\xec\xa1\xeb\x4c\x1e\x7b\xcc\x16\xf6\xae\x25\x73\xad\x2e\x8d\x81\xe3\x49\xf3\x41\xf3\xdf\xf3\xfe\xce\x98\xaf\x30\xa5\x6d\xd7\xb9\x82\xe9\xe7\x6f\x6a\xa6\x39\x91\x9e\xf7\xf6\xeb\x5d\x7f\x62\xae\x87\x86\x87\x81\xe3\xf4\xa7\xee\x05\xa5\xdd\x73\x2c\x6d\x4a\x69\xf6\xe4\x9d\x84\x77\xb8\x78\xf1\x0b\x8f\x38\x61\x59\x72\x72\xae\xa8\xfb\x58\xb2\xeb\x9f\xe5\xdb\x7b\xd1\x6d\xf5\xe5\x59\xe5\x77\xf7\xfd\xe3\x92\xc2\xce\x86\x0f\xe7\x6c\x41\xdb\xf3\x1f\xfc\xc5\x83\x7b\x9e\xe4\x63\x49\xc7\xbd\xb4\xa4\xbc\xb4\xd8\x0e\x80\xdf\x2e\xac\xef\x3a\xc9\xd9\x62\xe7\xfb\xbe\xbe\xb7\xdd\xb7\xcb\x6d\xc6\xb0\x47\x6d\x7b\xde\xf4\xb1\xe6\x77\x8d\x62\xfb\xb6\x75\xb5\x89\x6f\x1b\xb6\xab\x8d\xfc\x0b\xc7\xb5\xa3\xaf\x3e\xb8\xef\x1c\x49\xf7\xe0\xfe\x5e\x0e\x8e\xbf\xf8\xee\xfa\xd7\xea\xbb\xa4\xbe\x4d\xc1\x0f\xa7\xbf\x69\x4e\xc3\x31\x77\xde\xc9\x23\x54\xee\x1c\x95\x75\x0b\x3f\x5c\xc8\x41\xc7\x99\xb8\x0f\x43\xbb\xb3\x1d\x3b\xdf\x60\xe1\xa0\xe4\x9b\x32\x5e\x6a\x42\x9b\xb7\xa3\x85\x6c\x2d\x97\x0f\xd8\xe6\xa6\xf6\x98\x1a\x0f\xd7\xb2\xd5\x0b\x69\x9f\x30\x8d\x3b\x50\xde\x36\xca\xdb\x94\xd6\xa9\xcb\xc5\xdf\x0d\x2b\x15\xb5\x54\x53\xf3\xd1\x2b\x74\xf6\xe8\x18\x7a\x72\xfc\xee\x9a\x5f\x10\xb9\xf8\x6d\x53\x5e\x58\xf6\xc9\xfd\xba\x58\xc2\x13\x7d\xf3\x3d\xf2\x1d\x27\x71\xd9\xbb\x5b\x47\xe5\xb2\xc2\x5b\xaf\xe4\x62\xd9\xb6\xfd\xf4\x3d\xb2\x6c\x5e\xb9\xb0\xec\xd6\x5f\xb9\x9c\x9f\x9d\x83\x73\x09\x47\x07\x3d\x7d\x5b\x58\x6d\x56\xd5\x7c\x25\x55\xc8\x3f\x7f\x61\xe0\x76\xbc\xf1\x60\xc7\x46\x34\xa9\xe6\xc2\xaf\xe8\xfd\xf5\xcb\x66\x52\x9f\xd7\x86\xf2\xc7\xee\x6f\x81\xea\xd2\x95\x3f\xb6\xaf\xfc\x15\xa8\x18\x5d\x39\xd4\x7e\x04\xfe\xf8\x2b\x50\x98\x8f\xe4\xe4\x47\xe0\x8f\xf5\x5c\x3f\x5a\x56\xc3\x55\x75\x47\x79\x47\xef\x97\x17\x14\x5f\x66\x6e\x09\x47\x0b\xb9\x9c\x9a\xaf\xbe\x41\x79\x53\x20\x50\xc8\xbf\x24\x10\x48\x55\x02\xdf\x76\xb3\xf8\xdd\xdf\xbc\x35\x91\x6f\x87\x35\xef\xc4\xdf\xd6\xb9\xd7\xd0\x59\x79\x5e\xe8\x32\x5f\xa8\x1e\xe8\x33\xd0\x48\x55\x93\x7b\xb6\x9e\x4f\xe7\x5f\x54\xff\x44\xe5\x80\x91\xf7\x08\xff\x8a\xc8\x5a\x01\xc5\x6c\xc8\xed\x54\x4a\xd9\x80\x3b\x71\x0c\x69\x4e\x27\xda\x20\x30\xd0\x46\x9d\xa9\xd6\x91\x6b\x35\x5c\xb8\xfc\xf0\x58\xcc\x94\x96\x36\x1d\xf8\x0f\xbe\xa6\x0f\xa4\xe7\x6a\x86\x0c\xfc\x1d\xf8\xf6\xed\x20\x77\x6e\xfb\xdd\x07\xc7\x36\x9f\x2d\x83\xbc\x10\xf6\xd0\x28\xb7\xa2\xae\x4d\xf8\x49\xd0\x9d\x11\x1c\x53\xfa\xc6\xda\x0f\x07\xbc\xdf\x7e\x09\x04\x02\x8f\xb8\xee\xcb\x85\xbf\x6e\x8b\x7c\x2d\x9b\xfd\xbe\xfe\xab\xe6\xba\x03\x7b\x3d\x83\x09\x3c\xba\xe4\x9e\xaf\x0d\xdd\xc0\x23\xa3\xeb\x64\x60\xe5\x8c\xe4\x2f\xbf\x1f\xb6\xca\xa9\x2e\xb7\xb3\xf8\x6d\x5f\xbd\x8c\xe7\x7d\xcf\x3e\x41\x75\xcd\x66\xa5\x1a\x2e\x57\x37\x36\x03\xd7\x7f\x48\xe5\xa3\x65\x75\xdd\xc0\x91\xd6\xf6\x4f\xf9\x42\x20\x97\xca\xd7\xc3\xd9\x9a\xba\x4f\x87\x9b\x4f\xe9\x68\x38\x9a\x54\x03\xf0\x9c\x30\x57\xab\xfd\x90\xd0\x93\xde\x75\xbb\x63\x8f\xfc\xdd\x88\x1a\x18\xc9\x85\x3f\xd3\x06\xbf\x7d\x3b\x21\xf1\xb7\x1f\x3f\x26\xb2\x63\x0c\x34\xcf\xfb\xfd\xb0\xb9\x36\x33\xb7\x80\xd1\xd5\x26\x9a\xe1\xcb\x49\x60\xa6\x4d\x96\xf6\xa8\xf3\x1b\x23\xbf\xbf\xd1\x50\x1b\xe0\xbd\x59\xb2\x8d\xbb\xb0\x97\xcb\x1e\xf9\xb2\x23\x27\x87\x3c\xee\xdd\xb5\xe3\x6c\x1e\x2d\xfe\xe8\xe8\x1d\x29\x0e\xd1\xf1\xe2\x1b\x0f\xf0\xc8\x0b\x94\x3d\xbd\x70\x4e\x1f\x77\x36\xdb\xe7\x34\x3f\xcd\x68\xdf\x12\x24\x50\x68\xe4\xd5\x58\x20\xd2\x3a\x23\xd1\xc6\xfd\x7b\x5b\xa0\x3d\xad\x83\xec\x3f\x1f\xe7\x8d\xc7\x79\xdb\x39\x14\xb7\x5a\xdd\x96\xce\xd6\xec\x0e\xfa\xcc\xc3\x53\xf7\x7a\x69\x27\xaf\xfd\xa7\x53\x25\x7f\x5d\x4f\x68\x7f\x3d\x61\xcd\x6b\x3b\x3e\x9e\x65\x4a\x5f\xb3\x07\x5e\xa0\xe7\x39\x23\xfd\xb4\xb1\xed\xbc\xb0\x5b\xf5\xb0\xa5\xb3\xd5\xc3\x6e\x15\xef\x04\x6f\xcf\x96\xd6\x2e\xea\x85\xc7\x56\xf5\x8e\xbf\xb8\x55\xcb\x33\xb7\x7b\xdd\x10\x7b\x3e\x76\x28\x07\x0e\x6a\x78\x6a\x88\xcb\xca\xef\x97\xd6\x0e\x06\x26\x67\xea\x3f\x8d\x4d\x87\xef\x4c\xa4\xe6\x9f\x7d\x69\x53\x76\xea\x9a\x17\x97\xdd\x9b\xce\x36\x79\xb0\xea\xf8\x4a\x16\x78\x68\x44\x8e\xaf\x0d\x1e\x0c\xc7\x1e\x79\xc7\x6d\xd0\x92\xf2\xc1\x75\x9c\xc1\xf1\xdc\xf5\xaa\xb9\x25\x4f\xb5\xf5\x3a\x7b\x22\x3d\x39\x99\x9d\x2a\x32\xd4\x16\x0f\xfe\xe2\xe1\x11\x3a\x3d\x7b\x75\xaa\x94\x3b\x71\x7c\xc7\x70\x06\x27\xe5\x02\x17\x60\xeb\x89\x09\xcb\xad\xd6\x7f\x62\x12\x7c\x66\x2c\xba\x1c\x05\xce\xe3\xca\x7b\x45\xbe\xef\xf0\xf2\x66\x1d\x9f\x35\xdc\xbc\x4b\xd0\x1b\x87\x9f\x37\xeb\x7a\x3d\x1c\x1d\x2f\xfe\xc6\xf0\xf4\x6c\x3a\x7f\x37\xdb\x7c\xed\xf3\x1d\xe0\xc0\x8b\xbd\x9f\xe3\x65\xd6\x1e\xb9\xb1\x11\x65\x3d\x32\xdd\x38\x30\x6d\xfe\xe4\x39\xd3\x89\xb1\xdf\x7a\x3b\x31\x24\xec\xba\xf9\xb7\x6f\x3f\x7e\xbc\x2a\x71\x41\x3f\xd8\xae\xa6\xdc\xaa\xce\xed\xa6\xe2\x6f\x77\x1d\xc7\xb7\xe3\xda\x35\xa3\xca\x7a\x27\xe1\x64\xb5\x07\x5b\x9a\x6f\x15\xda\xee\xb2\xbe\x55\x64\xb8\x6e\x9e\xa3\x05\x5e\x6f\x0e\x9f\x29\xf7\x66\x75\xfb\x52\x6f\xd4\xb8\x66\xc9\xf6\x1e\x3c\x39\x18\xc8\x49\x40\x77\x9c\x81\xd4\x46\x9b\xbc\x67\x0b\xa8\x47\xf7\x78\xd7\x64\x1f\xd6\x51\x00\x81\x68\x52\x8d\x66\x02\xbf\xfd\xf6\x5c\xc4\xff\x13\x00\xbf\xff\x7e\x8e\xd4\xb1\xd7\x77\x52\xfd\x7f\xaf\x04\xbd\x80\xde\x0b\xa1\x0f\xc8\x1f\x68\x64\xcd\xe0\x9b\xb6\x7e\x7c\xdd\xf1\x0e\xd6\x7f\x7c\x25\xf9\xc2\xa1\xee\x12\x8c\xb9\x65\xb0\x3b\xb7\x6a\x7b\x9f\xe1\xee\x4c\x2d\x9f\x35\xe0\xbd\x53\xd8\x1b\x87\xbc\x33\xb5\xbd\x1e\xf4\x4e\xbd\xf0\xc6\xb0\xf7\x62\xa5\xfe\x8e\xb6\xba\xb3\xcf\xe7\x2c\x5d\x3c\xfb\xd8\x82\xf3\x99\x39\xcd\xa5\x23\xe3\xdb\x83\xdc\xd1\xb2\x4f\x55\x9f\x76\xcf\xb5\x93\x5d\xef\xd4\xd4\xe6\xa7\x4c\x4e\xfc\xc5\x83\x1c\xcd\xe4\xc0\x71\xe5\xb1\x05\x3f\x7f\xf1\x38\x55\x98\x0e\xfc\x13\x99\x43\xe9\x6b\x27\xb2\x1e\xb5\x70\x2a\xdb\xb3\x3b\x23\xcd\x9f\x4e\xe4\xb1\xb5\x29\xc1\x7e\xff\xbf\xff\xef\xc9\xbb\xf8\x9f\xff\x3d\xe6\x5f\xfc\xdf\xff\x77\x38\x67\x91\x43\xe7\xc4\x32\xd2\x13\xad\x91\x33\x92\x6f\x7a\x2b\x4f\xb4\x5e\x93\xd9\x4a\x66\x0f\xe5\x83\xee\x4c\x47\xa6\xf7\xd8\x72\xca\x44\x1b\x75\xde\x5a\xf4\xdc\x2c\x82\xd9\xe6\xae\xf7\xec\x36\xca\x2e\xe9\xf2\x9b\xee\xb3\xde\x9d\x3c\xb3\x07\x57\x51\xab\x6f\x2c\x18\x3e\x5f\x9a\x79\xbe\x5c\xf8\x3e\xc7\xfd\x7e\x42\x5c\xb8\x45\xf9\xa6\x50\x6f\x3a\xfc\x97\x08\x79\x72\xe4\xbc\x9b\x98\x17\xef\xf2\xbe\x29\xe8\x19\x98\x3f\x2e\x6a\x4c\xf3\xb5\x80\xe5\x4c\x2e\xd8\x2b\x08\xc4\xc2\xd5\xf0\x19\x11\x53\xf9\x8a\x5a\xae\x06\x52\xf9\x6a\xe1\xd5\x7e\xc1\x7a\x74\xac\x04\x7e\xfb\x06\x1f\xec\x91\xed\xdb\xda\xe0\x61\xb3\x3b\xf4\xa7\x37\x1e\x7c\xfb\x1e\xf8\x86\x00\xe4\x7f\x40\xf0\x07\xa2\x01\x88\x7e\x00\xf4\x83\xc0\x3f\x31\xa5\x0a\xa4\x7f\x00\xfe\xed\xf7\xbf\x2e\xa3\x8e\x1e\x36\x11\x4a\x2f\x54\xa0\x2f\x1f\x7c\xc7\x36\xdf\xae\x49\x40\xfc\x9e\x8a\xf0\xc3\xd4\x93\x7b\x84\x7f\xb0\x47\xaf\x82\xa2\xde\xac\x8e\x41\x08\xc5\x7b\xea\x23\x0f\x9a\x69\x3e\x1c\x2e\xa6\xbc\x5d\x07\x15\x42\x79\x4f\x1d\xf4\x61\x33\x9c\xec\x3c\xdb\xf5\xce\xd3\x9b\x55\x70\x40\xc8\xbb\xd4\xc6\x76\x55\x6c\xd1\xe6\x82\x2a\x30\x27\xec\x3d\x55\xf0\x87\xa1\x63\xda\xd6\xf2\x72\x29\x14\x28\x00\xda\x56\x71\xa2\x6b\xbc\xb9\xa1\xf3\xde\xbe\xf1\x6a\x53\x67\xc7\x3b\xfc\x1e\xf8\x96\x88\x94\x8b\xad\x64\x2a\x8b\xa2\x29\x1c\xcf\x97\x48\xa4\x99\x8d\xe7\xf2\xb1\x6c\x3c\x5d\xcb\x17\x6b\x28\xd9\xc2\xed\x5c\xbc\x92\x2c\xe4\x6b\x51\xb5\x10\xae\x34\x78\x29\xca\x0b\x4d\x94\x3c\xd4\xcf\xc9\x4a\xd0\x63\x25\xb1\x4a\x24\x5a\x2a\x60\x92\x6c\x14\x13\xb5\x44\xa9\x52\xc4\xa5\x48\x5c\x6d\xd6\xab\x95\x32\x2a\x36\x08\xab\xa5\x12\xd5\x64\xbd\x91\x68\xa4\x13\xa5\x4c\x12\x87\xe3\xf9\x64\x33\xd9\xcc\x5f\x5c\x09\x7e\xac\x24\x5c\xae\xc4\xd3\xf9\x66\x3a\x95\x2c\xb0\x5a\xb6\x16\xc9\xe0\x58\xa4\x95\xa9\x57\x52\x6d\x95\x57\xa2\x1c\x55\x68\xac\x15\x89\x26\x6b\x3c\x96\xc9\x22\x54\x6b\x66\xea\x31\x9e\x6b\x16\x2f\xae\x84\xac\x2b\x51\x63\xd5\x34\x29\x16\xd5\x78\xbd\x41\x9b\x75\x54\xe1\xd9\x5a\x33\xa2\x26\xf3\xa5\x5c\x93\x96\x50\x22\x47\x19\x2a\xa7\x13\x85\x52\x82\x27\xea\x51\x95\x26\x71\x32\x15\x21\xf5\x8b\x2b\xa1\xeb\x4a\x50\x3e\x4a\xda\x85\x66\xae\x99\xad\x97\xc2\xa5\x12\x4d\x95\x32\xe9\x26\xe1\x39\x5c\xcc\x44\x4a\x75\x94\xa7\xb5\x3a\x6d\x93\x42\x33\x5b\x4a\xe3\x68\x26\x17\x09\xa3\x02\x6a\x65\xbf\x5d\xbb\xcb\xf9\x88\xf5\x67\x0c\xaa\xa2\x66\xd5\x68\xf5\xd9\xb6\xf1\x9f\x9e\x7c\x7b\x07\xf0\x7b\x80\x7e\x0f\xf8\x93\xa9\xbc\xc0\xcc\x5f\xef\xed\x5d\x62\xe4\xd7\xec\x27\xdd\x45\xd2\x17\xae\xcb\xf7\x00\xfc\xbe\xd9\x0b\x3f\x2f\xe8\xb1\xfd\xa4\x6b\xbb\xf3\x6e\x4f\xe9\x59\x47\x53\xa8\x22\x04\x56\x98\x22\xd6\x4c\x81\xef\x81\x6f\xff\xf3\xab\xe7\x3f\x0e\x4e\xa3\xce\x83\xae\x0d\xb4\x91\x21\x7f\xfd\x11\xf8\x15\x02\x00\xfe\x04\x9b\xe7\xd7\xff\x3d\x65\x9c\x87\x35\xc0\x97\x35\xa0\xef\x01\xbc\xae\x61\xb3\xda\xf0\x8a\xee\xf7\xc0\xaf\x4f\xfb\xa8\x8f\xb9\x23\xcd\xb7\x67\xf2\xf2\xfa\x0e\x24\xc2\xdf\x03\x70\x23\xd2\x5c\xda\x9d\xee\x63\x85\xf0\x7b\xe0\xd7\x8d\xc2\x1e\xfa\x72\xf9\x58\xc7\xb5\x50\x73\x39\x57\x78\xcb\x15\x41\x5c\xa1\x1f\xaa\xe7\x6d\x0d\x1f\xae\xe7\x03\x89\x2e\xd3\xf3\x95\x68\x7b\x39\x57\x64\xc7\x15\x53\x14\xf8\xb1\x7a\xde\xd4\xf0\xe1\x7a\x3e\x90\xe8\x42\x3d\x5f\x37\xe0\x5c\xce\x15\xdd\x72\x45\x81\xe0\xfc\x43\xf5\xbc\xad\xe1\xc3\xf5\x7c\x20\xd1\x85\x7a\xbe\x6e\xcc\x7d\x17\x57\x10\x29\x0a\x11\x80\x8a\x2d\x70\xa0\x0d\x5b\x03\x7b\x68\xaf\xd5\x20\x10\xc2\x98\x23\x80\x99\x42\xff\x24\x9c\x53\x05\xf0\x27\x75\x18\x8e\xb9\x56\x47\xad\x12\x7b\xad\x23\x63\x22\x4d\xdb\x7f\xd0\x06\x6e\x57\x1b\x4d\x87\xe4\xa9\xc4\x26\xce\xe4\x73\xb0\x91\xec\x64\x84\x00\x6c\x3b\xed\x75\x32\xaa\xb5\xf2\x57\x95\x11\xef\x65\x24\x70\xdb\x61\xfe\x75\xed\xb8\xb7\x55\xa8\x20\x8e\xff\x9d\xed\xb8\x97\x11\x21\xcc\xc4\x0d\x32\xc2\xaf\x2f\x21\x23\xec\x16\xc4\x41\x5f\x5f\x44\x0c\x28\xbb\x05\x70\x10\xfa\xfa\x22\x12\x46\x6f\xc1\x1b\xfc\x0f\x68\x45\x85\xd3\x5b\xe0\x06\x7f\xfd\x56\x24\x48\x21\xb7\xa0\x0d\xc6\x5f\x55\xc4\xc7\x86\xe3\x90\x0b\x85\x63\xb4\x1b\xfc\x0f\xfc\x3c\x7a\xd4\xcf\xfb\x07\x0c\x88\xe8\x40\xb6\x23\x3e\xec\x3f\x56\x36\xba\x97\x8d\xe3\x9d\x43\xf3\x2e\xd9\xbe\xf0\x20\x8f\x0e\x64\x7b\x77\xbb\x7d\x61\xd9\xf6\xed\xa6\x40\xb2\x73\xd2\xde\x25\xdb\x97\x1d\x0f\xd0\x81\x64\xef\x6e\xb5\x2f\x2b\xd9\x53\x9b\x51\xba\x73\x3a\xdf\x25\xd9\xd7\x75\xc5\xd0\x81\x68\xef\x6e\xb4\xaf\x2b\xda\x53\xab\x09\xb6\x73\xa4\xdf\x27\xda\x97\xf5\x4b\xd0\x81\x68\xef\x6f\xb5\x2f\x2b\xda\xbe\xd5\x04\xe6\xec\x1a\x7f\xe4\xeb\x3a\xcc\xe8\x40\xb4\x77\xb7\xda\xd7\x15\xed\xa9\xd5\xb8\x42\xaf\xf1\x46\xbe\xee\x1c\x00\x1d\x88\xf6\xfe\x56\xfb\xb2\xa2\xed\x5a\x4d\x00\x28\xe8\x35\xbe\xc8\xd7\x9d\xd6\xa0\x03\xd1\xde\xdf\x6a\x3f\x45\xb4\x33\x3b\x91\xc7\x4e\x74\x5d\xbb\x13\xb9\x3b\xd5\xf5\x3c\xae\x80\x61\x53\x28\x16\xc5\x4c\x4a\xa6\x98\x50\x47\x5c\xa7\xba\x22\x2c\x84\x35\x8b\x62\x08\x75\x4e\x99\xd0\x10\xb1\x34\x0b\x12\x80\x35\x13\xe8\x14\xe9\x0c\x63\x1d\x70\x5d\x0a\xf1\xed\xfb\x26\xf4\x2d\x00\x36\xfb\x11\x50\x70\xf0\x07\x80\x7f\x00\x18\x00\xe0\xc7\xfa\xdf\x61\x80\x85\xf8\x01\xc8\x0f\x4c\xff\x44\x14\x13\xe5\x5c\x26\x41\x82\x08\xc6\x91\x60\x9b\xdd\x01\x08\x5e\x3d\xeb\x8a\x21\x78\x9e\xb9\x4d\x83\x13\xa6\x73\xa8\x88\xc7\x2e\xa0\x31\x03\x20\x0d\x61\x86\x38\x90\x90\x12\x82\x2c\x69\x71\x43\x87\x3a\x27\x06\xd7\xa4\x69\x4a\x0b\x02\x20\x2d\x8a\x4c\x0b\x59\x1c\x48\x60\x12\x9d\x40\xc9\x01\x93\x82\xeb\xdf\xee\xa3\x4c\xb2\xfe\x77\x44\x25\xa7\xd5\xc8\x28\x52\xe8\xd9\xdc\xcd\x0e\x2d\xa1\x02\xbd\xa1\x48\x02\x8e\xab\xf2\xf1\x3f\xca\x85\xca\x7c\xec\x74\x8a\x44\x02\x73\x9d\x63\x44\x01\x06\x8a\xa9\x30\x05\x1b\x8a\x89\x99\xe0\x12\x48\x81\x24\x62\x14\x42\x9d\x11\x43\x6a\x86\x85\x4d\x6e\x5a\x16\xa4\x42\x40\xac\xe9\x02\x20\xfc\xed\x3e\x0d\xb2\x91\xf3\xa8\x66\xe0\x49\x85\x09\x86\x29\x3a\x9b\xbb\xdd\x22\x82\x8a\xa2\xbc\xa1\x4f\x78\x0f\x85\x3e\xda\x03\x78\xd4\x96\x62\x48\x5d\x13\x06\xd6\x81\xc0\x1c\x63\x4b\x3c\xaa\xc3\x84\xc8\x14\x10\x60\x4e\xb1\x34\x19\xa5\x04\x53\x61\x08\x2c\xa5\x45\x35\x41\x39\xe2\x8c\x00\xc8\xbe\xdd\xa7\x51\x94\xf5\xbf\x23\x9a\x39\xa9\x30\x8c\x89\x72\x5a\x9d\xfb\xdc\xcd\x78\xcb\x04\x54\xc8\x1b\xea\x44\xe8\x0e\xea\xa4\x8f\xaa\xd0\x10\xc7\x44\x40\x64\x51\x69\x31\xae\x98\x84\x18\x58\x11\x0c\x69\x52\xe7\x02\x30\xa1\x9b\x50\x53\x30\xb7\x4c\xcb\x24\x86\xa1\xe9\x52\x97\x9a\xd4\x31\x32\x18\xc5\xcc\x58\x77\xf6\x3b\x34\x09\xc4\x9b\xff\x1d\xd1\x0d\x3e\xa9\x32\x05\x31\x76\x5a\xa1\xbb\x5c\x04\x09\x27\x0a\x66\x44\x01\x6f\x28\x14\xd3\x33\x0a\x3d\x33\x3a\x5d\x70\x00\xf3\xda\xc1\xea\x44\x98\xef\x89\x18\x17\x78\xa2\xf1\xcf\x50\x39\x88\x5c\x41\xd7\x51\x39\x8c\x34\xb9\x8e\x0a\x39\x88\xee\xb8\x8e\x0a\x3d\x88\xc6\xb8\x8e\x0a\x7b\x49\x85\x5c\x47\x85\x1f\x44\x2c\x5c\x47\x45\x79\x49\x85\x5e\x47\x45\x1c\xec\xea\x5f\x49\x66\xdd\x93\x9e\xef\x9c\x5f\xa9\x1a\x08\x0f\x76\xa7\xaf\x6c\x6e\x88\x0e\x76\x80\xaf\x95\x0b\x1f\xec\xb2\x5e\x4b\x87\x1c\xec\x65\x5e\x4b\xe7\x70\xc3\xf0\x5a\x3a\xec\x60\x57\xee\x5a\x3a\xfc\x60\xeb\xeb\x5a\x3a\xca\xc1\xfe\xd2\xb5\x74\xc4\xc1\x46\xc7\x95\xf6\x83\xc0\xe1\x86\xc9\x95\x74\xe0\xe1\x02\xfe\x95\x74\x0e\x37\x02\xae\xd4\x0f\xc2\x87\x4b\xd3\x57\xd2\x21\x07\x74\xae\xe5\xe7\x70\x41\xf9\x5a\x7e\xd8\x01\x9d\x6b\xf9\xe1\x87\xeb\x89\x57\xd2\x51\x0e\xe8\x5c\xcb\x8f\x38\x5c\x29\xbb\x72\x28\x06\x07\x74\xae\xe4\x07\xc3\xc3\x35\xa0\x2b\xe9\x1c\xae\x25\x5d\xcb\x0f\x3e\x58\xdd\xb8\x96\x0e\x39\x5c\x25\xb9\x92\x0e\xdd\xb9\x98\x04\xd0\x1b\xfa\x29\x66\x7b\x3a\x84\xdd\xd0\x4f\x31\xdf\xd3\x51\xf8\x0d\xfd\x02\x2b\x3b\x3a\x14\x29\x37\xf4\x0b\x2c\xf6\x74\x98\xb8\xc1\x0e\x09\xd8\xd1\x61\x10\xdc\x60\x87\x04\xee\xe9\x50\x78\x83\xfd\x10\xb4\xa7\x23\xd0\x0d\xe3\x17\xc1\x3b\x3a\x1c\x63\x72\x3d\x6e\x10\xb2\xa7\xc3\x09\xb9\x41\xcf\x7b\x7b\x56\x20\xc5\xd7\xdb\x33\xd9\xdb\xb3\x42\x19\xbe\x41\xcf\x7b\x7b\x56\x04\x47\x5b\x3d\xdf\xe3\xa2\x94\x7b\x9c\xab\x78\xfb\xf4\xe4\xf7\xc0\x23\xf3\x97\x1d\x28\x39\x71\x31\xca\xcd\x73\xc6\x67\xb3\x87\x67\xd3\xbb\xfd\x6f\xe5\x59\xf8\xb4\x35\x1d\x99\xdb\x75\xdc\x2b\x8f\x58\xad\xd7\x84\x37\x87\x6a\x6e\x5a\x0e\xfe\x1e\xb8\x24\x96\xfb\x03\xce\x82\x9d\x52\xdb\x76\x26\xba\xff\x4d\x3e\x54\x6d\xd7\x1e\x54\xf8\x7a\x6a\xdb\x4c\x9a\xf7\xbf\xc1\xc7\xaa\xed\xca\x73\x07\x5f\x4e\x6d\xdb\xf9\xfd\xfe\x37\xfb\x58\xb5\x5d\x79\x8c\xe0\x2b\xa9\xed\xe5\x31\x85\x7d\x62\xd3\x4d\xd9\x65\x41\x8b\xfe\x64\xea\xf9\x52\xde\x0a\x5c\x6b\x32\xce\xe4\x56\xd5\xfe\xfc\x58\xbc\x1b\x8f\x75\xbe\xab\xe5\x76\x87\x2f\xf6\x09\xf0\xb3\x5b\xee\x7a\x2c\xf9\xf9\xd1\x78\x1f\x70\xea\xf7\x74\xcb\x6d\x8f\x94\xec\x13\xec\x67\xb7\xdc\xf5\x83\xe7\x17\xe9\x73\xf7\x3d\x14\x7e\xba\xe5\xb6\x07\x65\xf6\x09\xf4\xb3\x5b\xee\x5e\x68\xf9\xd3\xfa\xdc\x27\xa1\xe5\xee\xf8\xcf\x3e\xa1\xfc\x5b\x5a\xee\xf3\x63\xbc\x3e\xb5\xdd\xb6\x87\x9a\xf6\x89\x7f\x8d\x7f\xf2\x13\x02\x61\x3f\xb3\xe1\x76\x47\xb5\xf6\x89\x9f\xee\x9e\xdc\xad\xe1\x3e\x3f\x3e\xef\x53\x1b\x6e\x7b\x00\x6d\x9f\xf8\xe9\xde\xc9\xbd\x1a\xee\x27\x84\xc3\x7e\x6a\xc3\x6d\x8f\xd5\xed\x13\xff\x1a\xe7\xe4\x27\x44\xc4\x7e\x66\xc3\xed\x0e\x0b\xee\x13\xff\x1a\xdf\xe4\x27\x04\xc5\x7e\x52\xc3\xbd\x38\x02\xb9\x4f\x6c\xc6\x38\xb8\x6e\x38\xdf\xb9\x75\x6e\x65\x4d\x9c\xe1\xad\xcd\xfa\x95\x4f\x2e\x7e\xc0\x9d\x61\xa7\x9b\x6a\x7b\xea\x71\x9f\x60\x47\x9a\xea\x7a\xb3\xff\xcc\xa6\xfa\x59\x53\xb5\xcf\x6a\xaa\xdd\x41\xc7\x7d\x02\xfd\x63\x9b\xea\xe7\x38\x1c\x9f\xd6\x50\xdb\xd3\x8d\xfb\x84\xf2\x8f\x6d\xa8\x9f\x34\x19\xfb\xb4\x96\xda\x9e\x68\xdc\x27\xc8\x3f\xb7\xa5\x7e\x8e\x2f\xf8\x59\x2d\xb5\x3b\xc5\xb8\x4f\x1c\x73\x29\xfe\x19\x2d\xf5\x93\xa6\x5b\x9f\xd6\x52\xdb\x93\x8b\xfb\xc4\x3f\xd7\xa3\xf8\x49\xf3\xab\x4f\x6a\xa9\xfd\x69\xc5\x7d\xe2\x9f\xeb\x50\xfc\xa4\x09\xd5\xc7\xb7\xd4\x8b\x70\xc0\xa7\xc4\xa6\x4f\x6d\x4e\x62\xba\x13\x7b\xb3\x5d\x0e\xfe\xa4\xcf\xf4\xf3\xec\x7a\xc1\xe7\x7a\x5b\x97\x7e\x78\x14\xfe\x7f\x7e\x35\x7f\xfd\x11\x40\xdf\x03\xbf\x8e\x7e\xfd\x11\x80\xff\xfb\x3d\xf0\xeb\xee\x43\x39\xbf\xfe\x08\x80\xef\x81\x5f\xf5\xe9\xd2\x1e\x75\x1e\x8e\xce\x88\x5e\xe4\xbd\xa5\x72\x4f\x0e\x06\xaf\xa9\x6c\x9d\xf5\x97\x99\x6f\x91\x79\x51\xdf\x1d\x1a\xf0\x55\xe5\xff\xa0\x59\xf6\xcb\xd8\xce\x7d\x02\x1d\x33\x0a\xf8\xa2\xd3\x5c\x68\x14\xf0\x3f\xa3\xf8\xa7\x22\xc5\x26\x50\xf7\x29\xa1\xbc\xc3\x28\xd0\x57\x34\x0a\xf8\x6f\x35\x89\xcf\xc2\x89\x5d\xcc\xf5\x3e\x41\xfe\x1b\x3c\xbe\xac\x51\x7c\x16\x4e\x6c\x03\xe8\x9f\x12\xe0\xe7\xe1\x04\xfc\xcf\x24\xbe\x02\x4e\xec\xce\x42\xec\x13\x27\x9c\x4c\x78\x1c\x27\xc0\xdb\x46\x01\x3e\x17\x2a\x0e\x6e\xcf\xfe\x80\x06\xff\xdc\xfe\xba\x3d\x60\xf2\x94\x78\x8f\xb3\x87\xbf\xe2\xb8\x8e\xfe\x1b\xd8\x6f\xed\xb0\x9b\xc3\x42\x4f\x89\xf7\xf8\x7a\x77\xb6\x09\x74\x0f\x10\xdf\xac\x61\xfe\x67\x12\xd7\x9b\xc4\xf6\xdc\xd7\x53\xe2\xa8\xaf\xf7\x49\x26\x81\xfe\x1b\xd7\xbf\x84\x4d\x6c\xce\xf0\x3d\x25\x8e\xba\x7a\xe8\xb8\x4d\x90\x8b\x6c\x02\x7d\xee\xd0\x81\xff\x1b\x3a\x6e\xb4\x89\xed\x79\xcc\xa7\xc4\x51\x5f\xef\x73\x6c\x02\xdf\x63\xe8\xc0\xff\x0d\x1d\xb7\x9a\xc4\xe6\x68\xed\x53\xe2\xa8\x87\xf9\x49\x26\x71\x8f\xa1\x63\xb3\x27\xf0\x9f\x49\xdc\x60\x12\x9b\x53\xd2\x4f\x89\xa3\x0e\xe6\x27\x99\x04\xfe\xcf\x9b\xf8\x20\x9b\x38\x73\x9c\x7c\xf3\x69\xcf\xab\xbf\x4f\x78\x9a\xea\xf9\xcf\xef\x5f\x7b\x64\xfd\xe4\x67\x7e\x8f\x5d\x74\xa6\x9c\xbe\xff\xe1\x2c\x1d\x74\x70\xfe\xfd\x5a\x3a\xf8\xe0\x40\xf8\xb5\x74\xc8\x4b\x3a\xa7\xee\x2f\x3a\x4b\x87\x1e\x9c\xb4\xbe\x96\x0e\x7b\x49\xe7\xd4\xbd\x5e\x67\xe9\x1c\x1e\x61\xbe\x96\x8e\xf2\x92\xce\xa9\x7b\x24\xce\xd2\x11\x07\x47\x83\xaf\x26\xf4\xf2\xea\xb3\x5b\x54\xf4\xf2\xf2\x33\x76\x43\xe3\xbf\xbc\xfe\x0c\xdd\x22\x1d\x3e\x38\x5a\x76\x3d\x25\x72\x70\xd8\xe9\x7a\x4a\xf4\xe0\xf4\xcd\xf5\x94\xd8\xc1\x71\x90\xeb\x29\xf1\x83\xf3\x09\xd7\x53\x52\x0e\x02\xe6\xaf\xa7\x24\x0e\x22\xb8\xaf\x07\x49\x70\x40\xe9\x6a\xcb\x7c\x79\x21\x1a\xbb\x85\x27\x74\x40\xe9\x6a\x3d\xa1\xc3\x98\xdc\xeb\x79\x22\x07\x94\xae\xe7\x89\x1e\x84\x9f\x5e\xcf\x13\x3b\xa0\x74\x3d\x4f\xfc\x20\xd0\xf2\x7a\x9e\x94\x03\x4a\xd7\xf3\x24\x0e\x42\x0a\xaf\xe6\xe9\xe5\x15\x69\xb7\xa0\xca\xcb\x4b\xd2\x6e\xb1\xf1\x97\xd7\xa4\xdd\x62\xe3\xf8\x30\x4c\xec\x7a\x4a\xe4\x80\xd2\xf5\xd2\xd1\x83\x80\xa8\xeb\x79\x62\x07\x51\x34\xd7\xf3\xc4\x0f\x42\x2f\xae\xe7\x49\x39\xd8\xb1\xbf\x9e\x27\x71\xb0\xcd\x7b\x35\x4f\x2f\xaf\x4d\xbb\xc5\x32\x5f\x5e\x9c\x76\x8b\x3d\xbd\xbc\x3a\xed\x16\x8d\xbf\xbc\x3c\xed\x16\x54\x79\x79\x7d\xda\x4d\x1a\xa7\x07\x6b\x74\xd7\x53\x62\x07\x4b\x3b\xd7\x53\xe2\x07\x2b\x02\xa7\x2f\x51\x3b\x45\xeb\x23\xaf\x51\x3b\x53\xe7\xbb\x2e\x52\x7b\x46\xeb\xee\xf3\xd2\x27\x85\x7e\x13\x96\xc5\x74\x0e\x75\x5d\x63\x3a\x22\x86\xa2\x59\x06\x33\x34\x8a\x75\x88\x38\x40\x94\x31\x93\x00\x29\x0c\x45\xd3\x2d\xa1\x2b\x04\x0b\x29\x34\xac\x03\x05\x03\x20\x09\x54\x94\x6f\xeb\xcf\x72\xc0\x5b\xae\x47\xda\x04\xfe\x82\xcd\xce\xc0\x89\x4f\x1e\x30\xc8\xc5\xe9\x0f\x22\x6c\x73\x9f\xcf\x86\xbf\x85\x1f\x9f\x44\x56\x49\x96\x66\xa5\xbe\x9e\x41\xc9\x30\x6e\xd4\x7b\xe5\x49\x66\xd8\x6b\x02\x60\x25\x14\x2f\x9b\xe2\x43\xa0\x96\xe7\xe9\x46\x28\xdc\xc4\x8f\xc5\xdb\xe1\xfd\x13\x09\xbf\x7c\x0e\xd3\x61\x1a\x89\x47\x50\x30\xe9\x29\x30\x56\xea\x87\x8c\xf0\x20\x2d\x3d\x5a\x06\x41\x5c\xac\x95\xb4\x36\x43\xf9\x76\xda\xc9\x14\xbd\x48\x63\xe4\x3d\x16\x8f\xd6\xc3\xb3\xfe\x73\x7a\xf5\xd9\x3c\x2e\xe6\xe1\x70\x58\x8d\x0a\x16\x0a\x46\x0c\x3d\x67\x0d\x66\xb9\x92\x15\x0f\x97\xaa\x7a\x38\x93\x98\x06\x59\xa4\x0c\x73\xac\x92\x08\x65\xea\xab\x6a\xba\x32\x48\xb5\x14\x67\x56\xa9\x2f\xe7\x53\xbf\xdb\x17\x66\xa1\x21\x7a\x43\x84\x3d\xbb\x6a\xa7\xda\x2a\x48\x85\x07\x0a\x99\x67\x14\xdc\x19\x85\x0d\x35\xf3\x6d\xa7\x83\xb5\x1e\x4a\x4f\x35\x97\x0e\x25\x59\x3f\x7f\xbf\x28\x1f\x56\xd7\x3c\x3f\xa5\x53\x4f\x3f\x0b\xa5\x72\xc9\x9c\x75\x79\x31\x5f\x02\xe9\x22\x0e\xa7\x2b\xcd\x49\xa1\x66\x16\xfd\x15\x54\x13\x43\xe9\xf7\x1a\x15\x2d\xda\xe3\xe1\xba\xcb\xd7\xe5\x07\xa5\x2c\xdd\xbc\x19\x3d\x5a\xf3\x09\xfd\xbe\xe4\xf7\x59\xfd\xef\x68\xd3\x98\x8c\x22\xaf\x9e\x6f\x25\x46\x67\x2b\x3a\xfa\xe7\xbd\x4e\x3a\x8f\xff\x97\x3b\x28\x17\xb1\x43\x11\x90\x05\xe9\xc4\xd2\xef\xce\xf3\x70\xd0\x02\xda\xd2\x75\xa0\xc8\x27\x17\xb3\x6c\x74\x59\xa0\x7e\x44\x35\xa2\x9b\x76\xc6\x1d\x7f\x52\x18\xb5\xdf\x50\xc0\x4b\x79\x8f\x3d\x87\x6d\xf2\xfe\xfa\x5b\xa1\xa0\x71\x40\xef\xc2\xfa\xff\x5e\xdb\xc7\xff\xcc\xe4\x2c\xd4\x69\x26\x56\x49\xaa\xaf\xd4\xe4\xa2\xa4\xaa\x68\x1e\xed\x4e\x66\xd3\x4e\xcd\xac\x16\xfa\xdd\xd9\x72\x60\x80\x65\xcd\xad\x24\x8a\x99\x2c\x18\x18\x5e\x76\xd2\x6a\x17\x9b\xd5\xc1\xac\x45\x7d\x9f\xa7\xfa\xc4\x4e\x94\xf3\xd1\x70\xda\x2a\xe4\xa2\xb3\x3c\x49\xcf\x93\x91\x68\xe7\xef\xbf\xd7\xcb\x88\x23\x67\x24\xf7\x1f\x9f\x79\xfc\xff\xf3\xa3\xc4\x33\x20\xd3\x2c\x43\x28\xd8\xe2\x96\xa2\x28\x40\x10\x82\x2c\x83\x41\x66\x40\x43\x12\x44\x75\x66\x28\x86\xc5\x4c\xc5\xe2\x44\x60\x1d\x63\xcb\x62\x9a\x02\x04\x00\x58\x53\x08\x95\xc6\xfa\xe3\x0d\x68\xf3\xe9\xa4\x1b\x80\x0c\x9d\x03\x32\xce\x94\xd3\x1f\x82\xd8\xe7\x3e\x5f\x46\xbb\x15\xc8\x0e\x3b\xdd\x2b\x43\x4f\x2d\x33\x03\x1f\x38\x05\x0e\xe3\x20\x3a\x69\xcd\x49\xbd\x51\xc9\xf5\x43\xa9\xa6\xa8\xb0\x62\xb8\x9c\x74\x15\x6d\xc0\x60\x85\x8d\x7b\x4a\xf8\x0c\x90\x35\xbb\x22\x14\xa4\x34\x3e\x2c\xf5\x64\x6e\x21\x52\xb9\x92\x15\x19\x11\x64\xb5\x5a\xd0\xca\x84\xab\xa1\x8e\x1e\x94\xbc\x88\x7b\x66\x25\x17\xcd\xd8\x99\xee\xdc\x59\xf4\xa0\x3e\xd5\x39\xc6\x1a\x6a\x4e\x17\x45\xb5\xea\x4a\x2e\xa6\x2b\xcd\x5f\x0d\x95\x50\x26\x05\x34\x2f\xf5\x61\x40\x16\xcd\xd9\xae\x6e\x66\x62\x53\x51\x36\xc3\x63\x94\x2b\xc4\xeb\xfd\x5e\xba\xb8\x8c\x87\x6a\xd3\xde\x5c\x2d\x33\x2b\xe1\x4a\xbf\x36\x1d\x3b\xa1\x75\xf9\x9f\x0c\x64\x93\x99\xc8\xe5\x6f\x05\xb2\xd2\x31\x9d\x5c\x03\x24\x0a\x39\xaa\xd3\x57\xf2\x1e\x3e\x5b\x20\x19\x10\xcb\x0a\x4d\x65\xb9\xdd\x4f\xe1\x5e\xce\xaa\xc4\xd4\xe4\xbc\x1d\xcc\x8f\x50\x22\xdf\x5c\x76\xd4\x10\x49\x84\x46\xd3\x95\x20\xb8\xd6\x0b\xdb\x8e\xed\x18\x99\x5c\x4b\x34\xf8\x30\x28\x04\xf2\x07\xdc\xab\x2e\x54\xd6\x9c\x86\x74\x0f\x4d\x0c\x3a\x2b\x2e\xed\x7c\x62\x12\x0d\xdf\x05\x48\xa8\xc1\xa1\x05\x75\x28\x14\x4d\xe8\x92\xe9\xd0\xe0\x12\x33\x8e\xb9\xae\x63\x89\x91\xc1\x2d\x44\x15\x8a\x01\xe5\x58\x37\x20\xb4\x10\x50\x10\x37\x81\x80\x58\xd7\x20\x59\xf7\xdf\xed\x87\xca\x6e\x00\x12\x7c\x0e\x48\x14\xc8\xd9\xe9\x4f\x6d\xed\x72\x9f\xaf\x7f\xdf\x0a\x24\xb1\x73\x86\x16\x8d\x0d\x47\x3d\xdc\xcf\x36\xb0\x0e\x61\x96\xb1\x66\xb4\xc4\x5b\xb9\x19\x4a\xf4\x72\x9c\xd7\x6a\x43\x33\x8c\x57\x75\xb5\xea\x8a\xd1\xda\x32\xde\x00\x92\x88\x39\xaa\x45\x32\xd1\x3a\x4e\x0e\x92\x85\xb1\x4b\xed\x7c\xd6\x2b\x2a\xda\x54\xcb\x47\x67\x8b\x98\x8c\xb8\x41\x10\x0d\x0e\xe6\xc5\x56\x2d\x3f\x59\x95\xc3\xd9\x52\x39\x96\x8e\x35\xa6\x19\x4b\x5d\x0c\xbd\xf2\x44\x1d\x35\x94\x6c\x26\xad\xe7\x4c\xd9\x10\xf6\x20\xab\xa9\x06\x1a\x84\x0b\x1f\x06\x24\xe1\x0e\x75\x89\xa0\x51\xe8\x23\x61\x56\x82\xd3\xc1\xbc\x5f\x40\xb1\xac\xe8\x3a\xab\x42\x10\xc6\xd3\xa3\x52\x5e\x81\x65\x95\x59\x6d\xb0\x2e\xfe\xb3\x81\x24\xe3\x87\x6b\x5f\x06\x48\x78\xed\xe9\xfd\xdc\x1b\xf2\x1e\x3e\x5b\x20\x69\xb6\x61\xb8\xd2\x19\x98\x0b\x5a\x5e\x8d\xc7\xb2\xd5\xab\xf0\x58\x28\x31\x19\xf6\x4a\x13\xa5\x84\x3b\x9a\xe5\x87\x67\xae\x11\x43\xf1\x98\xa6\x80\x52\x14\xa8\xa5\x65\x09\x4e\xec\xd1\x22\xd7\x9e\xa8\xda\x22\x0d\x67\xd1\xa5\xdd\x58\x25\x9b\x83\x59\xcb\xad\xa0\x6e\x32\xef\x96\x62\xf7\xf1\x48\x00\x23\x84\x9a\x06\x53\x14\xcb\x40\x92\x2a\x98\x32\x2e\x89\x46\x04\x01\x84\x00\x53\xe1\x86\xf5\x38\x4b\xd7\x28\xd7\x2c\x0c\x98\x34\x24\x37\x18\xb1\xa0\x05\x18\x34\xa5\x45\x36\x40\x42\x6e\x03\x12\x72\x16\x48\x38\x41\xa7\x3f\x9d\xb6\xcb\x7d\xbe\x71\x75\x2b\x90\x1c\xfa\x9d\xaf\x0c\x2d\x9f\x8f\xaf\xb2\x13\x6f\x3a\xf5\xc2\xa5\x2e\x54\xe3\xe9\xd9\x8a\xe7\x67\xb5\x44\xdc\xcc\xf3\xca\xcc\x50\x4c\xd3\x50\xb9\xea\x76\x4a\xda\xda\x9b\x7d\x03\x48\xc2\x56\x12\x37\xd3\x4e\x70\xd1\x56\x34\xd3\xd7\xc2\xa8\xd8\x6e\xe3\x2a\xe8\xe7\x28\x8f\x36\xad\x45\x62\x10\x4c\xa7\xfc\x51\x94\x8d\x8a\x22\xbb\xb2\xb3\xa5\x5c\xa6\x33\x80\xaa\xda\x9d\xda\xc5\xb1\xd5\x1b\x41\x92\xc9\xd0\x86\xa5\xce\x80\x0a\x1c\x97\x46\xd2\xf1\x70\xdf\x54\x3e\x0e\x48\x62\xd5\xb2\xb1\x64\x3c\x3b\x99\x84\xd5\x94\x59\x8e\x54\x74\x25\xb8\xd2\x61\xa4\xdb\xac\x4a\x30\xc1\xc5\x64\xb3\x19\x29\x2c\x32\x2d\x75\x3b\xa1\xf9\xc9\x40\x32\x1e\x18\x40\xff\x32\x40\x42\xe7\x07\x82\x9d\x90\xf7\xf0\xd9\x02\x49\x72\x21\xe0\x52\x2b\x7a\x0d\x2b\x31\xd2\x1b\x9d\x7c\x0f\x35\x4c\x20\xd2\xb1\x82\x9c\x0f\xb0\x52\x76\x2d\xbb\x92\x6d\xcf\xa7\xee\x2a\x54\x51\x88\x0d\x62\x51\x27\x6d\x96\x23\x29\xdd\xe9\xb1\x11\xa1\x42\x46\xed\x69\x7d\xb4\xc8\x8a\x48\x3e\x93\x91\xa5\x4a\xb9\x94\x4e\x5a\x77\x02\x12\x93\x33\x42\x01\x50\x98\x8e\xa0\xa6\x10\x21\x31\xd4\x20\x53\x28\xe7\x9a\x30\x20\x44\x9a\x80\xd8\xc0\x18\x72\x0d\x5b\xc0\x80\x9a\x02\x0c\x66\xe8\x04\x4b\xc8\x0c\x6b\xf3\xd1\x4d\xbc\x5d\xa3\xb9\x36\x52\xe3\xd9\xd7\x26\xcf\xba\x26\x82\x71\x7e\xfa\xeb\x95\x8f\xb9\xec\xdb\xc1\x16\xf6\xc6\x14\xde\x69\xfe\x1b\x48\x49\x1d\x33\xb1\x67\xe9\xd6\x3a\x5d\xaf\xe7\xb7\xb0\x13\xeb\xab\xb5\xa4\x4e\xe4\x6a\x55\xcb\x47\xab\x62\x1e\xad\x0d\xd8\x6a\x90\xac\x72\x43\x94\x23\xee\x68\xd2\x82\xfd\x61\xc7\x09\xce\xe3\x9a\xc4\xa1\xfd\xf3\x44\x2f\xbe\xaf\xbf\x14\x05\xf1\x94\x0d\xca\xd1\x44\xac\x04\xd4\xe9\x34\x52\xa5\x99\x0e\x6a\x2e\x56\xc9\x45\xb6\x59\x9e\x44\x17\xad\x44\x2f\xd8\x6d\xf1\x90\x17\x41\xad\x60\xda\x6f\x2c\x1b\xe5\xde\x60\x8c\x63\xad\x2c\xd1\x7a\x95\xb8\xaa\xe4\x35\x98\xc9\x0c\x09\x72\x72\xa1\x4e\xaf\x5d\x5b\x04\x61\xb1\x54\xfb\xfb\x02\x78\x49\x3c\xb7\xdf\xb7\xe1\xe5\xd9\xaa\xc5\x7b\xe1\xa5\x5e\xaf\x96\xb7\x54\xde\xb9\xda\xb5\x79\x92\x07\xfa\x3b\xec\x7e\xa5\xf0\xcb\x31\xff\x0a\xf8\x23\x85\xf0\x5e\xde\xe8\x93\xfc\x27\x6c\xe1\xe9\x39\xb2\xb2\xf3\x1c\x42\x01\x68\xe6\xa6\xd3\x25\x63\xf3\x48\x34\x59\x2b\xd5\x86\xa1\xa2\x87\x44\xa9\x55\x07\xd8\xcf\x88\xd5\x02\xc2\x79\xd5\xab\x0c\x23\x11\x77\x0d\x3a\xe9\x5a\x34\xb8\x15\xae\x73\xac\xb6\xe7\xf2\x1e\x7b\xd6\x3c\xc7\x6e\xab\xbf\x60\x3c\xd5\x7f\xc5\xca\x4e\xb6\x54\xb3\xb3\x65\x35\xd5\xca\xc7\x4a\x15\x46\xe2\xc5\xfe\x38\xd6\xb6\x92\x39\x4b\xf5\xcd\x84\x97\x8d\x77\xb4\x22\x8b\xf7\x66\xc1\x79\xb2\xdd\x23\x43\xa8\xa7\xdb\x89\x42\x63\x62\xe4\x3b\xb3\xee\x38\x9f\xaa\x55\xe7\x70\x52\x73\xc6\x7a\x4f\xeb\xac\x82\xd1\xfc\xa0\x9a\xe4\x35\x11\x29\xdd\x05\xfe\x0c\x53\x07\x86\x44\x86\xb4\x18\x34\xa8\xa1\xe9\x8c\x32\x66\x40\x83\x51\x83\xea\x06\xc3\xc8\x12\x04\xeb\x48\x37\x09\x36\x2c\xd3\x54\x80\x50\x88\xc6\x98\x10\xc4\xd0\x39\x51\xc8\x06\xfe\xd0\x2d\xb7\x89\xbf\x0b\xfe\x04\xa7\xa7\x97\x78\x76\xb9\x2f\xe2\x6e\xb6\xdd\xf7\x7d\xd3\x88\xf7\xc0\x5f\xb9\x5e\xaf\x6c\xd2\x37\xc3\xdf\xbe\xfe\x52\xbe\x32\x0c\x45\x52\x8b\xa2\xc8\xce\x35\xbd\xe9\x44\x32\x76\x67\x52\x4d\x28\xd4\x09\x15\x6b\x2e\xab\x17\x1a\xdd\xd0\x48\xb2\x61\x4e\xab\xd2\xee\x4c\x76\x63\xb5\x99\x5e\x4e\x96\x3a\xdd\x74\xa8\xd2\xae\xc6\xac\x5e\x2c\x18\x2f\x16\x7b\xba\xc4\xa3\x95\x91\x56\xa7\x23\xa8\x36\x49\x07\x7c\x1c\xfc\xbd\x77\x9a\x56\xab\xd7\x6b\xdb\xee\xfc\x29\xf0\x77\xc5\x34\x92\x6c\x9c\x9e\xe8\x13\xbd\xbb\xc0\x5f\xaa\xa0\xc9\xa2\x2c\xf9\xba\x39\x6b\xd6\x66\x13\xd7\x48\xc7\xfc\xce\x32\xd4\xd2\x72\xab\x99\x5f\xae\xb4\x41\xcc\xca\xd7\xca\x85\x11\x32\xd7\xc5\xef\x0e\x7f\x57\xd4\x7f\x23\xfc\xc1\x8c\xae\xa8\x3d\x35\x04\x66\x11\xd7\x97\x1d\x75\x9c\x89\xfa\x39\x7d\x35\xec\x29\xa2\x32\x72\x6b\x54\x4b\x06\x4d\x3e\x6e\x2d\xdc\xe2\x30\x21\x98\x9a\xaf\x08\x5f\x35\xa3\x51\x75\x24\xd2\x83\x5c\x3e\x98\x2b\x92\x9a\x12\xcc\xfb\x5c\x5a\xf9\x79\xbf\xc2\xac\x5a\xd9\xb2\x63\xf7\x81\x3f\xca\xb0\xa6\x43\xc3\x52\xb8\x64\x14\x73\x2e\x01\xa4\x0a\xc4\x44\x08\x8d\x01\xc4\x81\x02\x25\xc3\xf0\xd1\x17\x94\x16\xa6\x1a\x30\xa8\x04\x06\x30\x90\x46\x35\x01\x15\x8b\x6f\xe0\x0f\xdf\x72\x25\xff\x3b\xe0\x0f\x03\x24\xd8\xc9\xad\xba\x7d\xee\x8b\x60\xc1\x8d\x29\xbe\x73\x39\xf6\x27\x79\x7f\xfb\xfa\x4b\x19\x7d\xd0\x65\x44\x8d\x67\x88\xef\xa2\xe0\xc2\xe9\x16\xfa\x79\xad\x62\x5a\xb9\x78\x2c\x65\x86\x96\x64\xe4\xb8\xdc\xac\x0f\xdb\x65\x4f\x97\xc4\x0a\xc9\x7a\xd4\xad\x4d\x32\xa5\x68\xb9\x91\x4d\x13\xbd\xb9\xca\xb9\xc5\x6a\xa1\xea\xf5\x92\xe5\xd4\xa2\xa0\x29\x0d\xd9\x2f\x06\xe7\xf3\x8f\x83\xbf\xf7\x2e\x77\x7f\xb6\xf7\x77\xc5\x72\xfc\x07\xc1\x5f\x2f\x35\x6e\xe0\x4a\x87\xcf\x6a\xcd\x52\xc6\xef\xc5\xba\xf5\x76\x6a\x59\x55\xba\x16\xcc\x3a\x4a\x44\x95\xa3\xc5\xb8\x39\xa9\x67\xc7\xe3\xe2\xc7\x78\x7f\x57\xd4\x7f\x23\xfc\xb9\xd3\x46\x72\xd2\x29\xd5\x26\x36\x1a\xe9\x3c\x61\xab\xac\x04\xdd\x34\x54\xe6\xb5\x5c\x17\x87\xb2\xb6\xb4\x47\x3e\x6c\xb4\x07\x89\x85\xcf\xbb\x21\x41\x6b\x99\x41\xc5\x73\xc3\xe9\x78\xcb\x1b\x75\x7d\x2b\xb7\xec\x8b\x1c\x2d\x2c\x73\xa6\xda\x53\xe9\x64\xd1\x66\xa5\x10\x8f\xdd\x67\x39\xde\xb2\xa4\x30\x75\x2a\xa8\x4e\xa5\xa2\x4b\x62\x52\xa2\x73\xac\x48\xae\x30\x8a\x38\x20\xa6\x29\x98\x66\x2a\x1c\x09\xdd\x60\x3a\xd3\x4c\x03\x72\x03\x03\x00\x19\xb2\x90\x21\xb6\x93\x5f\x72\xa7\xc9\xef\xb9\xe5\x34\x0c\x18\xa0\xec\x34\xfc\x6d\x73\x5f\x44\x38\xdf\x3a\xf9\x7d\x63\x87\xef\xee\xde\xdf\xd3\xe4\x37\x6f\x3a\xd1\xf6\x38\x4e\xcb\x6a\x9c\x14\xda\xd1\x29\xa3\xd3\x9a\xdb\xa5\x8d\x5a\x6b\x58\xcb\x84\x8d\x7c\x74\xde\xd1\xd2\x92\xe4\x74\xad\xbf\x10\xa8\x5f\xb7\x55\x29\xfa\x5a\x1a\x62\xb5\x5b\x2f\x14\x79\x2d\xb8\xec\x8d\x9c\x50\x16\xce\xe0\xdc\xad\x6a\x55\x8d\xb7\x62\x76\xd8\xf8\x3a\x93\xdf\xcf\xf6\xfe\xee\x32\xf9\x7d\xb5\x13\x77\xe9\xda\xdb\x8d\x93\xcf\xdc\x66\x37\xb0\x73\x94\x87\xf0\x51\xf9\xd7\xcf\xce\xfb\x42\x9d\xf4\xd0\x69\x0e\xd4\x52\xb3\x43\xfb\x19\x3e\x19\xd2\xca\x30\x39\x68\x97\xed\x76\xc9\x89\xcc\x41\x36\x1a\x71\x06\xbc\xb3\xf0\xc7\xd5\x24\xd6\xca\x8d\x54\x99\xa3\xb2\x33\x6a\x1a\x95\x78\x8d\x84\xfc\x2a\xcf\x14\x64\x4f\x99\x35\x42\xcd\xe8\x20\xef\xe6\x27\x7e\xa7\x90\x8a\xcc\xef\x02\x3f\x50\x83\xa6\x01\x28\x62\x44\x58\x42\xc1\x90\x68\x10\x69\x90\x0b\x08\x4d\xac\x30\x85\x22\x6c\x72\x05\x30\x45\xe1\x26\x11\x1a\x45\x9c\x08\x84\xa0\x0e\xb9\x61\x72\x88\x0d\xb9\x81\x1f\x7a\x27\xf8\xa1\x67\xe1\x47\x28\xf0\xe4\xe4\x73\x9d\x4b\xbe\x1d\x1c\x8b\xb8\x15\x7e\xde\xd8\x17\xdc\xc0\x4f\x6e\xdf\xf4\x77\x84\x9f\x5c\xb3\xe1\x35\xc7\xcb\x41\x7a\xa1\x36\x6b\x20\x1d\xe4\xc5\xe4\xa0\x12\x5a\x44\xfa\x73\x16\xca\x36\x6b\x08\x97\xb0\x37\xe3\x72\x2e\x56\x4a\xa6\xdd\x4e\xeb\x71\x75\x1c\xeb\x4c\xba\x98\x80\x3a\xe5\x32\xd4\x74\x60\x34\x55\x30\x8d\x72\x23\xd9\x72\x2b\x6d\xd0\x6a\x5b\xb4\xf7\x91\x93\xcf\xf7\x76\xef\xea\xd3\x28\xfe\xcf\x81\x9f\x57\xfb\x77\x9f\x04\x3f\xd9\xcd\x1e\x62\xe7\x28\x0f\xe1\xa3\xf2\xaf\x9f\x2d\xfc\x2c\x4c\x6d\x21\x27\x99\xda\x48\x2d\x9b\xd5\xd2\x88\x7b\x8a\xac\x67\x43\x6a\xa2\x1a\x9b\x28\xbe\x59\xd5\xcd\x98\x5c\x86\x7c\x1e\xc3\xc5\xb9\x3b\xe8\x0f\xbc\x5a\xc5\x29\x44\xa7\x49\xab\x57\x6e\x8e\x7c\x2e\x64\xaf\x96\xea\x50\xb8\x88\xb7\x4c\x7b\x90\x1e\x95\xbb\x83\xd0\xb0\x70\xa7\xc9\x1f\xd3\x2d\xd3\x32\xb1\x26\x2d\x0b\x58\x0c\x72\x8a\x91\xa1\x59\x54\x48\x89\x14\x4b\x32\xa0\x73\x03\x01\xcb\xd2\x18\xe5\x44\x02\x45\x97\xd2\x30\x35\xa1\x29\x02\x98\x8a\x85\x74\xb4\x81\x1f\x76\x27\xf8\x61\xe7\xe0\x07\x62\x40\x4e\x6e\x26\xee\x73\x5f\x9c\xa5\xba\x15\x7e\xde\xd8\x4d\xdc\xc2\x4f\x6f\x57\xe4\x8e\xf0\x93\xe2\x7e\xad\xd4\x5f\xc1\x98\x34\x97\xba\x87\x5a\xc2\x6a\xf5\x7b\xb2\x9d\xeb\x17\x17\xad\xf4\xb2\x84\x60\x3e\xdf\x1a\x9a\x03\x32\xa9\xe3\x51\x2a\xe8\x4e\xf1\x72\x18\xb6\x8b\xfe\x78\x92\x6d\xf4\x11\xf4\x9a\x8d\x4a\x57\x09\x85\xe0\x64\x41\xbc\x66\x12\x68\x89\xa0\xa5\x95\x4a\x5f\x09\x7e\x52\x8b\x1d\x95\x7f\x0e\xfc\xbc\xea\xe3\x9f\x04\x3f\xe9\xcd\xce\x63\xe7\x28\x0f\xe1\xe3\xac\x85\x9f\xe0\xa7\x37\x85\xe5\x68\xb5\x58\xcb\x53\x9c\x9e\xae\xda\x3d\x28\xec\x4a\x9e\xf6\x97\xa5\x50\xbc\x33\x4a\xc7\xf4\x1a\x80\x76\x1b\x35\x6d\xbf\x29\x8d\x1e\x1b\x72\x2b\xd3\x8a\xa6\x82\x68\xec\xf9\x5a\x55\x6f\x2c\xcc\x76\x26\xb9\x0a\x85\x1a\xb3\xa4\xbd\x30\xac\xb2\xa3\x53\xe1\x46\xee\x04\x3f\x3a\x51\xd8\xa3\x97\xa3\x48\x49\x05\x85\x04\x5a\x3a\x37\xa9\x29\x84\x10\x26\x35\x09\xd0\xb9\x62\x68\x86\x41\x24\xe2\x40\x20\x49\x14\x65\x1d\x43\x0e\x34\x03\x40\xcc\xc1\xd6\xfb\xe1\x77\x82\x1f\x7e\x16\x7e\xa8\x50\xf8\x69\xf8\xd9\xe6\xbe\x38\x80\x79\x2b\xfc\xc4\x4f\x9b\xdc\x0e\x7e\x76\x0e\xf1\x1d\xe1\x27\xa3\x19\x2d\x3b\x16\x32\x2b\xf5\x44\x7e\x1a\x0d\x1b\xc9\x9a\x36\x80\x34\x55\xb5\x40\x6d\x95\x94\xba\x95\x6f\xe4\xa7\x66\xbd\x4f\x63\xc5\xd9\x68\x11\xcf\x15\xc6\xcd\x48\x7f\x11\xae\x17\x96\xf5\xf1\xb8\x99\xf1\x06\xf1\xb0\x6f\x38\xa1\x6e\x4a\x34\xf2\x11\xba\xd4\x2c\x64\x2b\xf2\x2b\xed\x3c\x56\x53\xcb\x1d\x95\x7f\x0e\xfc\xd4\xc2\xa7\x6d\xe1\xe9\xb9\x3f\xfc\xa4\x36\x82\x74\x8e\xf2\x10\x3e\x2a\xff\xfa\xd9\xad\xfd\xb8\x0b\x3b\x55\x14\x30\x5d\x6b\x21\x92\x8a\xcc\xcd\xf2\xb8\xd9\xec\x77\xf3\xa1\x72\x35\x67\x52\x5f\x81\x2d\x44\x61\xa3\xda\xcf\x05\x83\x96\x5a\x9b\x33\xd7\x48\x54\xd5\x48\x8d\xa7\x1b\x63\xd7\x18\x2f\x6b\xb5\x28\x5c\xf6\x82\x6a\x0f\xb6\x40\x72\x94\x76\x43\x5a\x76\x41\xef\xb4\xf3\x27\x19\x86\x94\x43\x88\x18\x03\x90\x98\x04\x51\x1d\x32\x1d\x63\xa1\xeb\x1a\x60\x58\x33\xa1\xae\x98\x8a\x82\xb0\x4e\x4d\x4b\x57\x0c\x13\x63\x21\x18\x21\x9c\x12\x5d\x12\x2a\x36\xf0\xa3\xdc\x09\x7e\x94\x73\xf0\x83\x00\x16\xe4\x24\xfc\xec\x72\x5f\x9c\xda\xbe\x15\x7e\x12\xa7\x4d\x6e\x0b\x3f\xab\x8f\xf0\x7e\x14\x52\x2d\xf4\x45\x9a\xa4\x2a\x91\xe1\x28\x19\x2e\x2e\x69\x26\xdb\x4f\x8c\xba\x4e\x28\xd2\x8b\x34\x26\xed\x69\x2b\x1e\x11\xa9\x10\x6b\xb3\x52\x4a\x44\x10\x0d\x0d\x4b\x73\xa0\xd6\x0a\x8b\x88\xd3\x64\x4d\x31\xe6\x44\x23\x4a\xd5\x4d\x4d\x2c\x36\x12\xd9\x8e\x33\x8a\x2a\x73\xef\x0b\xc1\x4f\xee\x1f\xe8\xfd\xb4\xc2\xa7\x6d\xe1\xe9\xb9\x3f\xfc\x24\x9c\xf5\x9b\x9d\xa3\x3c\x84\x8f\xca\xbf\x7e\x76\xde\xcf\xaa\x9b\x63\x55\x30\xea\x74\x53\x09\xcd\x30\xc2\xa1\x6c\xdf\x99\x96\x34\x99\xe8\x29\x89\x5c\x5c\xf3\x87\xb4\x53\x4b\x82\x5e\xc8\x1d\xb9\xe1\x1e\x48\xea\xa3\x60\x3b\x16\x2b\x95\x4b\x5c\x4d\x74\x2d\xd7\x42\x93\x59\x77\xd2\x5b\x14\xfa\xb6\x1f\x1a\x5b\x60\x1a\xb5\x8d\xec\x2a\x7a\x9f\xb5\x1f\x4c\x88\x46\x15\xcd\x34\x89\x45\x28\x22\x54\x20\x62\x48\x0b\x73\xfc\xe8\x14\x31\x09\x2c\x13\x02\x0b\x2b\x16\x17\x9c\x41\x4a\x29\x34\xa8\xb0\x0c\xa0\x53\x8a\xa0\xa4\x70\xbb\xf3\x26\xee\x04\x3f\xe2\x2c\xfc\x60\x84\x4e\x7b\x3f\x8f\xb9\xca\xb7\x83\xab\x1e\x6e\x85\x9f\xe4\x69\x93\xdb\xc1\xcf\x07\x78\x3f\xa9\x96\x16\xaa\xc7\x32\x46\x77\x95\x42\x86\x04\x49\x9b\xab\x6d\xd9\x2b\x74\x06\x31\xb7\x9d\xf5\xba\xd8\xc9\x96\x13\xe5\xbe\xed\x4f\x0a\x39\xb6\x1a\x8a\x6e\xba\xd2\x56\xad\x62\x3b\x51\x6c\x85\x44\x50\x87\x24\x68\xe5\x47\xe1\xa5\x9d\x6c\x26\xa6\xf5\x74\x06\x2d\x75\xbb\x9a\xee\x7c\x25\xef\x27\xf7\x0f\xf4\x7e\x8c\xf0\x69\x5b\x78\x7a\xee\x0f\x3f\xf1\xcd\xf8\xd6\x39\xca\x43\xf8\xa8\xfc\xeb\x67\x0b\x3f\xdd\xee\x44\xd4\x72\xee\x32\x99\xeb\xb5\x17\xbc\x24\xb3\x5e\x79\xc0\x72\x2c\x5a\x2b\x0c\xfa\xd3\x65\x52\x76\x7c\xb5\x9d\xa8\x64\x90\x47\x56\x93\x82\x8e\xd4\x41\xba\x5f\x56\x44\xbf\x25\x7a\x21\x4c\x67\xcd\x1e\x55\x90\x11\xcb\xa4\x4c\x43\xa3\xb5\xfe\x44\x4f\x4f\xd3\xb9\xe1\x9d\xbc\x1f\x44\x89\x45\x74\x93\x11\x66\x20\x6e\x70\x0c\x28\x80\x16\x05\xba\x45\x0d\x41\x09\xd6\x31\x85\xc0\x80\xc0\x52\x74\x2c\x20\x45\x3a\x27\x1a\xa7\x86\xc9\x15\x69\x50\x4d\xe3\xda\xee\x18\xc9\x5d\xf0\x87\xad\xa1\xe7\x6d\xfc\x61\xe0\x2d\xf7\x67\x9b\xfb\xe2\x82\x98\x5b\xf1\xe7\x70\xaf\xe1\x08\xfe\xec\xec\xfc\x9e\xb3\xaf\x70\xbb\x97\x9f\x34\x3c\x73\x05\x8b\x33\xc9\x6a\x95\xd0\x84\xcc\xa2\x00\x2e\x82\x93\xd8\x80\xa1\x45\x2c\x85\xf2\x0b\x5b\x66\xa4\x97\x58\xe4\x2a\xc1\x65\xca\x23\xe5\x11\x16\x05\x66\x37\x06\x61\x37\x31\x4e\xa4\x69\x76\x10\xe5\xa5\xb2\x6d\xa6\xea\x8d\x94\x16\x57\xea\xac\x13\xfe\x4a\xf8\xb3\xda\x51\xf9\xe7\xe0\xcf\xab\xad\xf7\x4f\xc2\x9f\x58\xe7\xa9\xfa\x13\xdb\xff\x6f\xe1\x8f\x13\x19\xe6\x90\xaf\x2d\x70\xb1\x16\x14\xdc\x2d\x67\x83\x33\x5b\xc9\x56\x9b\x49\xe6\x15\x9a\x13\x5d\xcd\xf5\x5a\x38\x91\x26\x2e\x9b\xeb\xea\x22\xcb\x53\xf6\xaa\x9b\xb0\x2c\xc0\xc7\x69\xad\x16\xed\x6b\x4e\x6b\xd4\x9f\xd6\xb2\x7e\x24\x91\x06\xdd\x7a\xab\xeb\x34\x17\xcd\x71\xf8\x3e\x3b\xef\x1a\xb6\x0c\x42\x85\x66\x08\x5d\xd3\x84\x81\x11\x47\x94\x68\x92\x49\x1d\x2a\xc8\xd2\x19\x30\x4d\x2a\xb8\x66\x60\xce\x20\xa4\x02\x0b\x6c\x4a\x48\x19\xb1\xa8\x90\x96\xc6\xf9\xf6\xf4\xc9\x2d\x37\xd5\xbf\x27\xf0\x08\x53\xc2\x4f\x9e\x88\xdb\xe7\xbe\xb8\x0b\x6a\x63\x0a\xef\x3c\xd0\x7e\x59\xe0\xd1\x66\x54\x7a\xe7\xd9\xda\xeb\x02\x95\xd6\xa6\x38\xed\x17\xf0\x73\x3b\x4b\xee\xf9\x2d\x45\xc0\xa4\x8d\xbd\xb9\x11\xad\x84\xa8\x59\xf3\x33\xe3\xaa\x39\x89\xb4\x16\xb5\x5e\x8a\xe9\x22\x0a\x32\x42\x37\x97\xa3\x84\x37\xaa\xe6\x62\x05\x32\xcf\x7a\x75\x25\x55\xe8\x15\x82\xed\x49\x25\xd2\xf4\x45\xbc\x56\x4a\x0e\xaa\x99\x4e\xb2\xac\xd2\xa5\x39\xc9\x67\x91\x45\x64\xb9\x94\xbb\x04\xae\x9e\xeb\xe7\x34\x5c\xad\xf9\xff\xea\x81\x4a\xa5\x9f\xc1\x5f\xd6\x8d\xf9\xe0\x2d\xfe\xde\x0e\x64\x7a\xaf\x0d\xdd\x25\x90\x49\xbd\xad\xfe\x1b\x03\x99\x92\x15\x7f\x24\x57\x91\x79\x3a\x1b\x1a\xc0\x0a\x18\xbb\x79\xe4\xc5\x7b\xf1\x4a\xae\xe7\xce\x40\xb6\x34\x81\x3e\xce\x18\xda\xd2\xcc\xcd\x73\xbc\x17\x9e\x2e\x9a\xf3\x0e\xcb\x71\x3a\xf4\x53\x71\x89\x41\xbd\x1c\x96\xf5\xdc\x38\x6c\xaa\xd5\x51\x1a\x79\x60\xd6\x0e\x75\x69\x3c\x7c\x9f\xd9\xa4\x30\x0d\xc8\x09\xd3\x14\x0d\x5a\x9a\x04\x9a\x6e\x29\x9c\x32\x13\x2a\xc2\xc0\x26\x41\x50\xd7\xa9\x4e\x35\x60\x52\x03\x58\x8a\x86\x15\x4c\x4c\x8d\x99\x4c\xd3\xa4\x82\x21\x34\xb6\x70\x8a\xee\x04\xa7\x67\x03\x99\x08\x00\xa7\x6f\x2a\xd8\xe7\xbe\xb8\xc6\xee\x56\x38\x7d\x23\x90\x69\x63\x0a\xef\x3c\x18\x78\x5d\xe0\xd3\x39\x38\x8d\xd2\x72\xb4\x35\x89\xac\xb2\xb9\x74\xce\x11\xf9\x60\xae\x15\x1d\x4c\x42\x5d\xb7\xd3\xcc\x6b\xd9\x7c\xb8\x10\xf1\x13\x54\x8c\xfb\xc1\xf1\x52\x9b\xf9\x55\xaa\x4e\xbb\x9e\x16\x6c\x06\xa7\x7d\xb3\xdb\xea\xa7\x27\x8d\x74\x30\xd9\x25\xa3\x4e\x33\x04\x1b\x05\x58\x71\x55\x65\x1c\x8a\x5c\xb6\xf8\x75\x1d\x9c\x7e\xc9\xc0\xa7\xd2\xcf\xe0\xef\x72\x38\x7d\xf2\x0e\x6f\x84\xb3\x1b\x03\xa3\xb2\x03\x35\x6d\x7b\xc9\x9c\x37\xef\x2f\x7b\x00\x93\x45\x27\xd3\x98\x05\x13\xc3\x88\x01\x1d\x0f\x84\x49\x02\xe8\x23\x34\xae\xb2\x49\x7a\x1c\x84\xc5\x7e\x85\x25\x16\x13\x6a\x31\x56\x46\x71\xbb\x34\xf4\x5b\x23\x22\x93\xb6\x8c\x58\xa1\x7a\x8b\xd7\x33\xfd\xea\x72\xa2\x24\xef\xb5\x38\x86\xa9\xe0\xc0\x42\xdc\x80\x90\x40\x43\x61\x54\x17\x1a\xe7\x50\x11\x96\x25\x39\xa4\x02\x9a\x10\x1b\x44\x18\x8a\xc9\x90\x49\x39\xc2\x02\x21\x85\x32\xa4\x1b\x04\x1b\x16\xda\xc0\x19\xbe\x13\x9c\x9d\x0d\x8c\x22\x98\x9f\xbe\x41\x6a\x9f\xfb\xe2\x06\xcc\x5b\xe1\xec\x8d\xc0\xa8\xeb\xe0\xec\xaa\x40\xaa\x73\x70\x96\x9e\x17\x63\x76\x24\xb8\x9c\x66\xe2\x83\xb8\xe7\x9b\xd9\x9c\xe3\xbb\xe9\x41\xd8\xf5\x86\x98\x2c\x15\x2d\x5d\x19\x4c\x60\xb1\x97\x56\x6b\x36\xb3\x56\x2c\x3e\x35\xca\xb9\xbe\x9f\x69\x25\xbb\xe9\x5c\x2a\x3f\xae\x25\x56\xab\x21\x18\xab\xf3\xa4\xf4\x0c\x56\x73\xe0\x7c\x5e\x5e\x76\x2e\x8a\xe3\xfc\x1c\x38\xfb\x94\x40\xaa\x1b\xe0\xec\x7a\xfe\x7e\x02\x9c\xdd\x18\x68\x35\x0a\x2b\x85\x54\x92\x67\x88\xd3\xa8\x35\x96\x10\x78\x4b\x1b\xf5\x87\xb5\xe8\x70\xa9\x5b\xbd\xec\xc2\x19\x64\x1a\xb3\x5a\x30\xd7\x2f\x57\xb2\x6e\xa8\xe8\x34\xe8\x42\x5d\x56\x80\xdb\x91\x6a\x7f\xde\x41\x6e\x49\x2f\x16\xf4\x8a\x53\x0d\x9b\x6c\xb1\x72\x2b\xbd\x66\x2c\x92\xcc\xdc\x29\xce\x93\x61\xcb\xc4\x10\x08\x68\x30\x0d\x63\x8c\x35\x45\x4a\x84\x91\xe0\x06\xa2\x54\x42\x53\x11\x42\x43\x9c\x52\x28\x0c\xa2\x98\xd2\x32\xb1\x21\x01\x07\x8a\x26\x00\x31\x20\xd2\x37\x70\x46\xee\x04\x67\x67\x03\xad\x08\x57\xc4\x1b\x70\xb6\xcd\x7d\x71\x79\xee\xad\x70\xf6\x46\xa0\xd5\x95\x70\x76\x4d\x60\xd6\xd9\xc9\xee\xb8\xaf\x7a\x6e\x9a\x2f\xb2\xd9\x48\xa7\x39\x8a\x72\x3e\x74\x82\xb5\x0a\x89\x45\x7a\x6d\x2f\xa2\x88\x49\xb8\x59\x2a\xe0\xd5\xd0\x58\x26\xe9\x58\x35\xc8\xc8\x0a\xc5\x48\x2c\x57\x51\xca\x70\x94\xb4\x14\x43\xf1\x7c\x4d\xab\xd5\x71\xa8\x02\x4d\x77\xa2\x84\xcb\x02\x47\x4b\x17\xad\xcd\x7d\x12\x9c\x7d\x46\x60\xd6\x2d\x70\x76\x35\x7f\x3f\x01\xce\x6e\x0c\xdc\x4a\x8c\x4b\x95\x65\x7f\x34\x53\x3d\x2f\x11\x91\x46\x76\x36\xd5\x7a\xb4\x9c\xed\xe4\x12\xf9\xe1\x3c\xb9\x42\x5e\xc4\x0c\x73\xab\xd0\x5e\xa5\xac\xa1\x53\x5e\xd9\x66\x48\x29\x76\x72\x8b\xec\x22\xd9\x30\xcc\xd0\x62\xb5\x5c\x42\xd7\x2d\x37\x2d\x91\xad\xa3\xe1\x6c\x1e\x49\x62\x23\x7d\xa7\xb5\x3b\xa1\x23\x45\x42\x43\x91\x0a\xe5\x3a\x90\x96\x29\xa8\x62\x70\x60\x60\x66\x72\xce\x2d\xcc\x24\xa0\xd8\x24\x16\x30\x11\xe0\xd8\xc4\x88\x33\x03\x2a\x86\x65\x28\xd4\x12\x88\x88\x0d\x9c\xd1\x3b\xc1\xd9\xd9\xc0\x2d\x8a\xb0\x38\x79\x65\xc4\x3e\xf7\xc5\xbd\xdb\xb7\xc2\xd9\x1b\x81\x5b\xd7\xc2\xd9\x15\x5b\x9d\xe7\xe0\xac\xe8\x97\x4b\x61\xbf\x66\xd9\xea\x50\x6b\x37\xe6\x64\xba\x08\x8d\xf4\x69\x57\x59\x2a\x79\x27\xa1\x0c\x23\xf3\xa2\xba\x8c\x1b\xe3\x66\x32\x86\x82\xa1\xec\xa4\x44\xab\x61\x56\xa8\x19\xce\x2c\x15\x21\x8a\x31\xa5\xf3\x81\xaa\x54\x10\xce\xa4\xac\x56\x86\x8c\x54\x68\x0c\xca\xc1\xce\x45\x87\x0c\x3f\x0b\xce\x3e\x61\xab\xf3\x26\x38\xbb\x96\xbf\x9f\x00\x67\x37\x06\x82\x05\x61\x3c\x1c\x85\xe5\x60\xaa\xd2\x76\x07\x7a\xcc\xe6\xc9\xa0\x39\x65\xc9\x55\x76\x8e\x3a\xfa\xb2\x95\x0c\x2b\xd5\x54\x7d\xe9\x1a\x46\x51\xe7\xca\xd4\x8f\x0d\x72\x31\x87\x96\x97\xb6\xd2\x49\xf6\x16\x4b\x3e\x8a\xd6\xaa\x8b\xac\x6e\x38\x5d\xd1\x99\xd8\x46\xb5\xbe\xac\x27\xd9\x9d\x0e\x01\x2a\x08\x28\x9a\x06\xb1\x65\x10\x93\x43\x9d\x6b\x12\x70\x01\x38\xd2\xb1\x86\x35\x0b\xea\x96\xa9\x28\x80\xe9\x1a\xb3\x4c\x4c\x89\x89\x2d\x43\x37\x21\xe2\x3a\x37\x80\xf5\xe8\xc6\x6d\xe0\x8c\xdd\x09\xce\xce\x06\x82\x51\x4e\x94\xd3\x87\x00\x77\xb9\x2f\xae\xec\xbf\x15\xce\xde\x08\x04\xbb\x12\xce\xae\x09\x1c\x3b\x07\x67\xb9\x55\x36\x3a\x70\x43\x43\x81\xf2\xd3\xa2\xea\xe4\xa1\xe4\x71\x85\x4f\x12\x89\xa4\x1b\x75\x9a\xd1\xd4\x64\xae\xf8\xc2\x30\x15\x3f\x8a\xa7\xfd\x4c\xab\x54\xb7\x93\xcb\x1e\x8a\x87\x9a\x20\x37\x55\xb0\x13\x72\x1c\x87\x1a\x4d\x77\x91\x5d\x8e\x44\x4a\x6f\xb7\x9b\x7e\x30\x7a\x59\xe4\xc6\x27\xc1\xd9\x67\x04\x8e\xdd\x02\x67\x57\xf3\xf7\x13\xe0\xec\xc6\xc0\xb2\x55\xce\xcb\x34\x46\x41\x1d\xb7\x10\x51\x2a\x1d\x5c\xe7\x5e\x73\x35\xf5\x5a\x2d\xd9\xcf\x74\x8d\x94\x3d\x8b\x2d\x31\x5c\xe0\x25\xc8\x4a\x56\x72\xbb\x91\x46\xca\xca\x14\x5b\x4d\x61\x95\x96\x7c\x25\x7b\x41\xdb\xee\x0d\x16\x72\xa4\xce\x32\x16\xe8\xfa\x83\x81\xc4\x24\x73\xa7\xc8\x0e\x6e\x30\x86\x75\x62\x49\x85\x71\x41\x0c\xca\x75\x62\x61\x93\x43\x45\xa7\x80\x28\xba\x84\x9a\x06\x25\x50\x88\xa4\xc8\xc2\x84\x29\xa6\x49\x38\x50\x90\xd0\x00\xe5\x86\x25\xb7\x93\x4d\x7e\x27\x38\x3b\x1b\x58\xc6\x10\x7e\xe3\x4c\xf3\x2e\xf7\xc5\xd7\x3e\x6e\x85\xb3\x37\x02\xcb\xae\x85\xb3\x8f\xf0\xce\x5a\xd9\x50\x96\xa7\xbb\xbd\xae\xac\x03\xad\xea\xd4\x9d\x88\x50\x52\xd3\xb9\x46\xda\x78\x62\x54\xbc\xa9\x45\x56\x2d\x30\x32\x2b\xca\x0c\x59\x4b\x38\x8c\xad\x12\x85\x69\x85\x8c\x40\x7c\x6e\x1a\x66\x77\xb5\xe4\x7c\x5c\x30\x87\xf1\x3a\xee\x57\xbc\x32\xa7\xad\x71\x56\x9b\xb7\xbe\x12\x9c\x7d\x71\xef\xec\x6a\xfe\x7e\x02\x9c\xdd\x18\xa8\x26\x3a\x33\x65\xe6\x0d\x13\x85\x38\x6d\x96\xdd\x42\xb7\xd1\x49\xe2\xb9\xcd\x23\x93\xee\x48\xfa\x8b\xcc\x92\x86\x7a\xf9\x5e\xc5\x84\xd9\x65\xa8\x1d\xca\x36\x5a\xc5\x5c\x8b\xd1\xac\x6d\x95\x9a\x11\xb8\x40\xc9\x62\x76\x36\x75\x28\x6a\xd5\x9b\xb2\x9c\x59\x24\x67\x03\xdb\xf1\x27\x91\xfb\xdc\x4f\x48\xb9\x49\x89\x44\x82\x18\x1a\x32\x19\x02\x0c\x21\xa6\x29\x9b\xeb\x42\x75\x5d\x1a\x58\xa1\x48\x03\xd4\x12\x9c\x1b\x8a\xa0\x3a\x53\x28\x04\x12\x23\x21\x4d\x68\x58\x62\x0b\x67\xca\x5d\xe0\xec\x82\x38\x35\xc6\xd1\xe9\xb9\xe6\x36\xf3\xc5\x67\x82\x6e\x05\xb3\x37\xa2\xd4\xae\x05\xb3\x2b\xa2\xda\xce\x81\x59\xac\x9d\x2d\xb4\x82\x96\xa2\xd5\xf5\x49\x63\x68\x98\x5e\x6d\x45\x33\xb1\x46\xc2\xee\x67\x23\x56\x4b\x55\x2b\xf9\xa5\x8c\x87\x48\x64\x10\x77\xdd\x86\x2b\x7b\xb9\x49\x05\x33\x7d\x19\x5d\xa2\x65\xc5\xc8\x8b\x95\xda\x5d\x50\xb3\xdd\xa9\x4f\x87\x15\xcb\x0d\xe9\x7e\xb7\xd6\xd2\xe7\x1f\x18\x26\xf2\x25\xa3\xda\x6e\x02\xb3\x6b\xf9\xfb\x09\x60\x76\x63\xd4\x5b\xbe\xef\xd1\x1e\x0d\x2d\xdc\xfa\xd4\xd7\xda\x0b\xb4\xa8\x16\xfb\x4e\xbe\xa5\x65\x4a\x5e\x5c\x74\x4a\xe5\x14\x4e\x93\x66\xa8\x93\xa8\x35\x86\x03\x6d\xc0\x72\x4b\x3f\x6b\xb9\xb3\x54\x36\xab\xa7\xd3\x73\x8c\x73\x95\x64\x72\x00\x87\x91\x06\x6b\xa7\x83\x23\x31\x45\xf1\x72\x77\x76\xa7\x30\x0d\x0d\x42\x83\x3c\x7a\x60\xa6\x46\x01\x20\x1c\xe8\xc8\x12\x14\x0a\x0d\x73\xc1\x2d\x66\x58\x3a\x07\x96\xa2\x71\xce\x14\x26\x2c\xdd\x22\x3a\xd1\x29\x64\x3a\x31\x91\x54\xe0\x3a\x28\x82\xde\xeb\xb2\x55\x06\xce\x7d\x19\x07\x2b\x18\xe1\xd3\x68\xb6\xcb\x7d\xf1\xad\xb2\x5b\x83\x6e\xd3\x07\x6d\xfa\xac\xfb\x6e\xba\xe7\xf5\x61\x17\xf1\x7a\x0d\x6c\xed\xe6\xbd\x9f\x99\x09\x37\x21\x29\x3d\xe3\xe7\xa8\x55\x3e\x0b\xe2\x4d\xb6\x72\x95\x7c\x4f\x07\x56\x70\x42\xda\xc0\xb5\x56\x4b\xd9\x5f\xf4\x57\xfd\x3a\x1e\x69\x33\x9e\x12\xb9\x54\xb1\xb9\x2c\x9a\x83\x51\xb1\x0a\x32\x39\x3a\xe0\x65\x17\x68\x71\x6f\x1c\x6f\xa6\x8b\xe1\xe8\xaa\xd3\xc9\x8d\xab\xe9\x49\x63\xd1\xa2\xfd\x60\xb2\xc8\x64\x74\x92\x08\x86\x3b\x97\xc0\xdd\xe1\xbe\x70\xf8\x9a\xf6\xd8\x3c\xea\x17\xd6\xf7\xdf\x67\x02\x94\x6b\x4f\xe9\x7f\x9d\xec\x7b\xfe\x9e\xaf\x32\xbf\x3f\xb8\x58\xac\x9e\xc2\x47\x22\x47\xfb\xde\x9b\x30\xfb\xc4\xdb\xba\x5f\xde\x3b\xd0\xf9\x75\x3c\xcb\xdb\x91\x81\xb7\xe9\x22\x18\x51\x9e\xea\xef\xbf\xa3\xfe\xed\x90\x63\x76\x16\x29\x94\x9f\x95\x43\x6c\xd6\x1d\x55\x06\xa1\x62\x9a\x55\x13\xd5\x42\xb9\x29\xcd\x71\xc8\xeb\x81\x79\x47\x58\x29\x81\x1a\x86\x28\x96\x9c\xd5\xb0\xe9\x27\x46\x65\xa7\xb1\x74\xea\x46\x5f\x09\x67\x0b\xd1\xf0\xd2\xcd\x0d\x7d\x3d\xde\x1b\x56\x89\x11\x72\x49\xc6\xd3\xc9\x9d\xbe\x38\xa2\x53\xa9\x28\x10\x50\x0d\x33\x60\x68\x82\x6b\x86\x8e\x85\x86\x18\x66\x16\x37\x2c\x6a\x98\x16\xd7\x04\x80\x9a\x61\x02\x93\xe8\x52\x18\x0a\x10\x50\xd7\x10\xe2\x12\x10\x8a\x8c\xcd\x90\x73\x9f\xc8\xc0\x4b\x86\x1c\x46\xdf\x18\x71\x36\x99\x2f\x3e\x69\x79\xab\xff\xfc\xcf\x18\x70\x8e\x1a\xdf\x33\xff\x3a\xd3\xf2\xd4\xba\x57\xa8\x4d\x93\x86\x2e\x17\x7c\x26\xeb\x40\xa4\x3b\xbd\x45\xbf\xbd\x1c\x4f\x50\xdc\xc8\xad\xaa\xad\x44\xb1\x12\x8c\xc5\x6d\x1c\xef\xea\xdd\x4c\xa7\x94\x2e\x8d\xba\x76\xd0\x4c\x94\x27\x86\x5e\x90\x8b\xdc\x82\x4e\x87\xb5\x48\xb3\xec\x98\x7e\xd2\x2d\xd6\xbd\x7c\x47\xbd\x7e\xc0\x79\xb7\xbc\xfb\xf6\xf8\xa2\xfa\x7e\xc7\x80\xf3\xaf\x93\x3d\x7c\x04\x64\xaf\xf0\xeb\x45\x70\x73\xb5\xf0\x1a\x64\xbd\xf0\xd1\x53\x34\x97\x0f\x38\x3f\x69\x8e\x71\x27\x5d\xbc\x1e\x70\x2e\xac\x7f\x77\xaf\x82\x3d\x2f\x37\xe6\xb4\x42\xcc\x85\xcf\x93\x53\x41\x9b\x55\x30\x8c\x16\x13\xe5\x51\x66\x3c\x6b\xd5\xe7\xab\x7c\xbe\xd3\x12\x59\x92\x6b\x64\x8d\x46\x7c\xaa\x8e\x23\xe1\x41\x54\x26\xb2\x14\xb4\x13\xfe\xc2\xa3\x5c\x5d\x25\x87\xac\x5d\x8a\x9b\x89\x2e\x02\xb2\x2f\x1a\x73\x14\xbe\xcf\xfa\x33\xe1\x0a\x64\x54\x18\x48\x18\x9a\x6e\x5a\xa6\x41\xa9\x69\x2a\x26\x00\xdc\x34\x4d\x48\x09\xb0\x98\xa5\x13\x6a\x61\x9d\x18\x92\x11\x45\x12\x6a\x60\x84\x28\x97\x84\x1b\x44\x63\x9b\x01\x07\xdf\x69\x8e\x73\xee\xa3\x79\x58\x51\x04\x3e\x7d\xab\xd4\x2e\xf7\xc5\xb7\x8f\x6f\x9d\xe3\x64\x0e\xda\xf4\xd5\x90\x73\x7d\x2c\xe6\x2d\x30\x30\x9b\xcc\x3b\xcf\xf8\x39\x6a\x7e\xcf\xe6\x38\x69\xe0\xb0\x3c\x4a\xf7\x69\xd0\x06\x7a\x3f\x95\xd5\x55\x5c\xab\xda\x35\x77\xd9\x9e\x15\xd2\xd9\xfc\x2c\x5c\x6e\xd2\x4e\xab\xef\x80\x4c\x74\xaa\x99\x60\x44\x28\x4b\x0f\x45\x74\xbc\x98\x70\x4f\x0e\xa6\xa9\x78\xc5\xc9\xeb\x8b\x68\xba\x30\x89\x52\xd2\x5f\x6a\xd5\x69\x01\x86\xfb\x9f\x3c\xc7\xf9\xca\xfa\xfe\xe8\x39\xce\x57\x96\x3d\xfc\x51\x73\x9c\xc3\xbe\x77\x7e\xc8\x29\xdd\x89\x97\xe0\x76\x9f\x71\x2d\xf7\x7a\xf7\xf1\x7d\x73\x8c\x51\xa5\xe7\xe0\xd6\xb0\x3a\x62\xd9\xf2\xb4\xd4\xf1\xbd\xaa\x59\x2e\xa4\x2b\xa3\xf4\x50\x21\x7d\x0f\x29\x91\xb8\x35\x8c\xd8\x95\x5e\xc9\xc9\x50\x17\x57\xac\xde\xc8\x19\xea\x20\x33\x49\xcc\xa6\x0b\xd6\x20\x9d\x7a\xa6\x03\x67\x6a\xaa\xcf\xbc\xec\xc8\xae\xa6\xdd\x02\xe1\xb5\xe8\x7d\x20\xdf\xd2\x0c\x86\x29\x41\xa6\x10\xcc\x32\x74\x0d\x48\xa6\x1b\x3a\x47\xd8\xd0\x04\xd1\xa9\x86\x75\x02\xa9\x8e\x99\x24\x52\x6a\x06\x23\x86\xa2\x40\xd3\x32\x19\x34\x09\x57\x2c\xc9\x37\x90\x7f\x9f\xf8\xd6\x0b\x20\x5f\x40\x88\x4e\x6f\x39\xee\x72\x5f\x7c\xa4\xfe\xd6\x59\xc6\x59\xc8\xff\x12\x9e\xdf\x51\x47\xe8\xf9\x2a\xbe\xe1\x4d\x55\xbb\xdd\x2f\x76\xe2\x4e\x21\x53\x1f\x6b\x4d\x8b\x8f\xe1\x08\x0a\x65\x09\x23\xed\x7c\xbc\xd5\x1b\xc1\x59\x3d\x49\xf5\x85\x66\xe6\x45\x2c\x53\x56\xfd\x50\x2d\xeb\xfa\xed\x10\xee\xc4\x5a\xb1\x90\x65\xcf\x69\x3d\x9d\xb2\xd3\xab\xc4\x32\x38\x51\xda\x8d\x96\x8c\x75\xc8\x27\xcf\x32\x4a\x5f\x58\xdf\x1f\x3d\xcb\xf8\xca\xb2\x87\x3f\x6a\x96\xf1\xfa\xf3\x75\x57\x41\xfe\x35\x5e\xfe\x2b\xc8\x7f\xfd\xbc\xb9\x93\xb1\x5c\x92\x4a\x7a\x58\x0a\x86\x1b\x1d\xe2\x36\x5c\xd7\x0c\x4d\x27\x0d\xab\x89\x57\xd9\x5a\xbc\x0f\xea\x76\xc1\x6a\x88\x9a\x35\x98\xc5\x5d\x80\x41\xce\x55\x2b\x58\x94\xa6\x43\x38\x0a\xc9\x70\xbe\x53\x14\xc1\x6c\x6c\x50\xeb\xdb\xa9\x51\x4e\xcf\xb2\xd9\x62\xd0\xee\x92\xc2\x9d\x3e\x1b\xa7\x08\x48\x4d\xae\x29\x86\xc1\x74\x89\x98\x01\x05\x14\x54\xe3\x98\xe9\x14\x53\x93\x9a\x5c\xd7\x35\x0a\x98\x85\x18\x47\x8c\x13\x22\xb8\xc2\x11\x01\xba\x26\x85\x01\x0d\x05\x6c\x20\xff\x3e\x57\x57\x33\x70\xf6\xfc\xbe\xc0\xf8\xf4\x67\xe3\xf6\xb9\x5b\xc8\x67\xe2\x1e\x97\x37\x66\x0f\xda\xf4\x8e\x90\xaf\xee\x03\xad\x3e\xdc\xcb\xcf\xc7\x07\x48\xd6\x43\x85\x6a\xc3\x34\x2a\xb1\xaa\x19\xca\x2d\xfd\x71\xad\xd7\xd6\x2a\xe1\x66\x5c\x6d\x42\xa3\x9c\x81\x11\x8d\x16\x6b\x93\xe4\x60\x51\x20\x0d\xd3\x71\x53\x4a\x0c\x64\x7a\x69\x07\x0a\xda\x5c\x2a\x34\x36\x5e\x04\xed\x6a\x54\xcd\x81\xe6\x04\x84\x06\x89\x1c\x2b\x5d\x74\x20\xf5\x8e\x5e\x7e\xed\x0b\xeb\xfb\xa3\xbd\xfc\xaf\x2c\x7b\xf8\xa3\xbc\xfc\xc3\xbe\xf7\x79\x5e\xfe\xeb\xe1\xe7\x7d\x5e\x3e\x68\x34\xdb\xb4\xa9\xd0\x7c\x1b\x2e\x52\xf9\x3c\x56\x56\x19\xe4\x56\xf2\x03\x37\x15\x31\x6a\x65\xab\xbe\x50\x27\xb5\xf8\xa4\x2f\x2a\x9e\x6c\xaa\xbc\xdb\x46\x76\xbf\x37\x2f\x96\xc6\xb9\x61\xaf\x89\x07\x56\x76\xd5\x2f\x4c\x92\x2c\x9d\x4b\x95\x56\x65\x39\xab\x06\x6b\xad\x95\x7b\xa7\x43\xb9\x40\x42\x24\x21\xe6\x00\x69\x82\x72\x6c\x28\x0a\x45\x02\x5a\x98\xe9\x98\x51\x06\x0d\xa4\x28\xa6\x62\x19\xc4\x44\x96\x40\xa6\x61\x11\x85\x40\x8c\x74\x66\x28\x26\x01\x8a\x6e\x6d\x20\xff\x3e\x71\xd2\x97\x40\x3e\x55\xd0\x69\xc4\xdf\x64\x6e\x00\x9f\x41\x70\x8f\xb0\xc2\x73\x80\xbf\x79\xae\xbf\xb0\xe3\xd9\xa7\x88\xd7\x86\xfa\x7a\x2a\xfb\xf8\x58\xbb\xf2\x91\xb0\xa1\xc7\x39\xd4\x42\x89\x9e\x23\x92\xee\x34\x9f\xf4\x22\x6e\xad\xdf\xc8\x78\x66\x66\x54\x9e\x95\x39\xe6\xf1\x65\xdb\x29\x8e\xa2\x91\x41\x34\x93\xb4\xa2\xcb\x99\x1f\x6a\xf5\x3b\xb8\x98\x80\x95\x8a\xef\x35\x52\xae\x2e\x56\xb5\x48\xa8\xd9\x8e\xf7\x66\x9d\xb9\xcd\xe3\x6c\x35\x8f\xcc\xff\xfe\x64\x7f\xbd\x75\x17\xdd\x15\x63\x65\xdd\x7f\x43\x77\x1f\xeb\x77\x7f\x8e\x0c\x4f\x6d\x50\xbb\x5e\xe7\x83\x52\x16\xf3\xd2\x5e\xde\xe8\x53\x64\xd4\xf3\xe7\xd2\xfb\xaf\xee\xed\xcb\x9f\x90\xf7\xf0\xd9\x82\xe9\x47\x75\x80\x7b\x6c\xcb\x0a\x81\xa8\xa5\x59\x52\x42\x60\x1a\x12\x23\x08\x31\xe6\x1c\x2a\x08\x72\x8d\x6b\x80\x09\x68\x68\x0c\x98\xc2\x62\xdc\xa0\xcc\x14\x1a\x96\x86\x82\xb0\x66\x98\xc0\x10\x54\x6e\xc0\xf4\x3e\x97\x9f\x33\x70\xf6\xc2\x16\xc1\x05\x3d\x7d\xfd\xde\x2e\x77\x0b\xa7\x14\xde\xe3\xfa\xcf\x43\x9b\x7b\xbd\x4a\x7e\xf5\x11\xdf\x1b\xa6\xb1\x91\x64\xd7\x99\x3f\xe3\xe7\x9c\xff\x1c\xab\x92\x4e\x45\xe4\x95\x78\x89\x18\xcb\x56\xcf\x29\x8c\xe3\xb9\xee\x08\xdb\xea\xb8\x38\xa9\x15\x14\xcb\x30\x40\x33\x5c\xd3\xad\x69\xa4\x35\x35\xf2\x99\xd6\xb0\xe2\x53\x3e\x8a\x58\x65\xbf\xb0\x4a\xd5\xa2\xdd\xc2\x20\x63\xfb\x8b\x3a\x0c\x82\x41\xac\xe5\x62\xc5\x2a\xce\x68\xf8\xa2\x33\x76\x77\xf4\x9f\x6f\x3d\x52\xfd\x91\xfa\xfe\x68\xff\xf9\x2b\xcb\x1e\xfe\x28\xff\xf9\xf5\xf5\x0b\x9f\xe6\x3f\x8b\xd2\x9e\x97\x4d\x54\xee\xfb\xfc\xe7\x7c\xd1\x8e\x64\x01\x9e\xd7\x63\xdd\x55\xda\x2e\x74\x98\x53\x5b\x26\x2c\x99\xaa\x38\x41\xbf\xc4\x17\x62\xb1\x2a\x1b\x91\xb2\x1f\x24\x71\x9b\xce\x81\x6b\xb7\x33\x78\x34\x35\xe2\x22\x01\x78\xae\x5b\xca\xa8\xac\x36\xce\xe0\x78\xb3\xc9\x2b\xb5\xbc\x3d\xb2\x16\x4a\x30\xd4\xbf\xd3\x39\x43\x4d\x11\xa6\x01\x74\x2e\x85\x04\x50\xb3\x38\xa6\xeb\xaf\x48\x33\x66\x58\x9c\x53\xdd\x32\x31\xb7\x74\x20\x19\x44\x88\x22\x4a\x90\x20\x06\x00\x0c\x71\x0b\x19\x96\x14\x50\xdb\x40\xfe\x7d\x2e\x9c\x67\xe0\xdc\xa5\x36\x04\x00\x7a\x3a\x14\x67\x9f\xbb\x85\x7c\x81\xee\x71\xe3\x6a\xfe\xa0\x4d\x8f\x40\xfe\xb5\x07\x6d\xd4\xe5\x7e\xa3\xeb\xa3\x21\x3f\x17\x53\x63\x99\xa6\xcb\x00\x35\x43\xf6\x50\x14\xfd\xb9\x1c\x8d\x20\x6e\x55\x6a\x5a\x26\xd3\xd3\x7c\x9e\x8b\x45\x46\xf9\xcc\x22\x39\x2a\xd1\x42\xbc\x05\xb3\x62\xe9\xad\x66\x64\xec\xf0\xf0\x82\xe4\xc7\x66\x30\x22\x5a\xd6\x2c\xb3\x58\x25\xe6\xa4\x57\x4a\x94\x44\xcd\x2c\x74\x3e\x3b\xf8\xb3\xf3\x85\xf5\xfd\xd1\x90\xff\x95\x65\x0f\x7f\x14\xe4\x1f\xf6\xbd\x4f\x84\x7c\xee\x3d\xa9\x7d\xed\xf0\xbf\x0f\xf2\xe7\xb9\x52\xce\x95\xa3\x49\x75\x80\x83\x19\x1d\x04\x71\x84\x49\xab\x69\x76\xd3\x65\xc7\x19\xe7\xc7\xd8\x9b\xe7\x12\x06\x98\xa8\xd2\x8c\xf5\x49\xbd\x57\x9b\xe1\xcc\xaa\x10\xb2\xc7\x3d\x2f\x96\xec\x20\x17\x93\x24\xec\x06\x95\x49\x32\xa7\xc7\xec\x7c\xb8\x1d\x83\x65\xc0\xee\x14\x7c\x69\x08\xa4\xeb\xd4\x02\x86\x64\x86\x6e\x71\x22\x88\xd0\x2c\xae\x33\x02\x88\x04\x9a\x26\xa1\x82\x85\x69\xe8\x90\x13\x43\x03\x5c\x57\x98\x0e\x98\x00\x58\x61\x3a\x51\x14\x89\xb7\xab\xe4\xf7\xb9\xe4\x9f\x81\x73\x17\xff\x10\x80\x01\x3f\xb9\x66\xb2\xcf\xdd\x40\x3e\xc7\x98\xdc\xe1\x0b\x6b\x85\x83\x36\xbd\xe7\x2a\xf9\x32\xb7\xdb\x64\xfa\x68\xc8\x2f\x8c\xa0\x52\xa8\x2e\x07\x63\x57\x2f\x2f\xed\x66\xbe\x56\xce\xb4\x3a\xd4\x32\xe0\xa4\x41\x8a\xbc\x60\x99\xcb\x55\xaa\xbb\x52\x8b\x4c\xc6\x40\xa7\x12\xac\x48\x52\x2b\xe5\x0a\x73\xb0\xf2\x66\x56\x14\x9b\x56\x05\x33\x96\x49\xaa\x8d\x72\x33\xa2\x8c\x4b\xd9\x71\x89\x0f\xb2\xe1\xcf\x5e\x25\xef\x7f\x61\x7d\x7f\x34\xe4\x7f\x65\xd9\xc3\x1f\x05\xf9\x87\x7d\xef\x13\x21\x9f\xa5\xf6\xbc\x84\xd7\x6c\xbd\x0f\xf2\x99\xd5\x9c\xd3\x62\xa6\x31\x1e\xf8\xc9\x4c\xda\x80\x65\xd5\xb5\x63\x03\xb1\x6a\xf8\x7a\x27\xe4\x51\x81\xb3\x39\x3b\x99\x2b\x85\x5c\x52\xac\x44\xb2\x34\xcd\xbb\xe5\xf0\x9c\xc7\xaa\x85\xa5\x50\xb2\x26\x14\x59\x6b\xe2\x38\x46\xb9\x1d\x37\x92\x4b\x37\x3c\x75\x63\xd3\x9a\x77\xa7\x55\x72\x45\xb3\x28\x10\x0a\xa5\x88\x6b\x14\x2b\x58\x08\x64\x48\x8b\x63\x84\xa9\x01\x2d\xa1\x31\x0a\x34\x8d\x41\x2c\x14\x22\x30\xd3\x2c\x93\x70\x9d\x23\xdd\x02\x3a\xc2\x26\xe0\x5b\x2f\xff\x6e\x1f\x56\x38\x77\x3b\x12\x01\x0c\x2a\x27\x57\x76\xf6\xb9\x5b\xcc\xe7\x84\xdc\x61\x67\xb4\x78\xd0\xa8\xaf\xdd\xfc\xab\xaf\x07\xb9\x65\xb6\x6d\x35\xbb\x9b\x37\x4f\x7c\xf0\x31\xfc\x12\xf3\x13\x85\x88\xeb\xb4\xcb\xa9\xc9\x54\x49\xa7\x7b\xc3\xbe\x5f\x1f\x29\xc3\xb4\x53\x8a\xd5\xa7\x03\x87\xa9\x9d\x71\x45\x69\x72\xd8\x85\xea\xac\x16\x0c\x57\x94\x4a\x61\x56\x8b\xb4\x1b\xe1\xd5\x22\x28\x4b\x45\x67\xc8\x92\x5a\x67\x61\xa0\xb2\x48\x96\x3a\xe1\x54\x59\xb0\x4c\x6b\x15\x0a\xdf\x10\x0c\x73\x15\xee\x39\x5f\x58\xdf\x1f\x8d\xf9\x5f\x59\xf6\xf0\x47\x61\xfe\x61\xdf\xfb\x44\xcc\x27\xfd\x3d\x2f\xe1\x75\xf4\xfb\xfb\x30\xbf\x45\x12\xc3\xee\x40\xb5\xa7\x7c\xde\x1f\x16\xb4\x0a\x6c\x58\xcb\xd6\xb0\x1b\xce\x37\x58\xa3\xe7\x54\xa2\x6e\x76\x61\xcd\x1a\xc9\x5a\x45\x54\x49\x24\xbb\x48\x31\x51\x8a\x0f\x5a\xb1\x62\x92\xd2\x70\xd0\xd6\x1d\x73\x1c\x8b\xaf\xda\x49\x60\x46\xc3\xe1\x6e\x12\x3b\x6e\xaf\xa8\xdc\x29\x18\x86\x28\x9c\x11\x42\x01\x21\x18\x49\x81\x11\x96\x9a\x21\x81\x69\x42\xc8\x0c\x5d\xc7\x08\x2a\x16\x52\x00\xc4\x02\x6a\x02\xea\x88\x11\x66\xe8\x8c\x9b\x5c\x70\x45\x70\x6d\xb7\x33\x0a\xef\x75\xae\xf7\xdc\x15\x52\x04\x28\x88\xbd\xb1\xb4\xb3\xcd\xdd\x60\xbe\x02\x29\xbe\xc3\xb9\xde\xc3\x96\x3d\x82\xf9\x57\x4f\xb7\x57\xd7\x4f\xb7\xdf\x89\xf9\xf9\x8e\x91\x36\xaa\xcd\x51\x31\x59\x93\x8b\xe2\x68\x4c\xea\x2d\x84\xa3\xf5\x79\x5f\x59\x65\xa6\xc6\x48\x73\xb8\x0b\xb2\x56\xdb\x2f\x65\xbb\xe9\x89\x52\x2c\xcf\xc2\x21\xbb\xd1\xa9\x3a\x9a\x16\x2d\x2e\x74\xdc\x88\xc5\xc3\x51\x85\xcc\x4a\xcc\x8c\x2f\x56\x69\xaf\x99\x33\xa3\xa1\xf9\x45\xf7\x19\xdf\x11\xf3\xbd\x2f\xac\xef\x8f\xc6\xfc\xaf\x2c\x7b\xf8\xa3\x30\xff\x75\x4d\x9f\x86\xf9\x38\xfc\xc4\xcb\xfa\xd7\xfb\x30\x1f\x45\xe6\x83\x45\x5e\x1a\x8a\x59\xe6\x6a\x50\x4e\xba\xf5\x9e\x6e\xa4\x9b\xd1\xea\x2a\x37\xa6\x4b\x73\xdc\x9b\x8e\x4a\xbe\x18\xc2\xf0\x54\x1d\xce\xe6\x22\xa1\xc4\x82\x69\x2d\x52\xe8\xba\x4e\x2a\x14\x9f\x99\xad\x5c\x2d\x9c\x5d\xd9\x22\xe6\x82\x66\x32\x37\x5c\x18\x0b\x90\x0d\xdd\x69\x03\x57\xc3\xc4\x94\x0c\x40\x40\x89\x10\x86\x69\x30\xa1\x61\x80\x80\x65\x30\x6e\x69\x04\x20\x24\x0c\x13\x59\xba\x86\x80\xb4\x34\x46\x24\x97\x98\x62\x20\x99\x69\xe8\x54\x23\x16\xd9\x62\x3e\xba\x13\xe6\x9f\xbb\x67\x8b\x40\x70\xf2\x83\x1b\xdb\xbc\x2d\xde\x53\x86\xef\xb0\x7b\x5b\x3e\x68\xd0\x23\x78\x7f\xed\x35\x33\xea\xea\xfa\xb9\xf6\x3b\xf1\x3e\x23\xe6\xbc\x6e\xc7\x9a\x68\x95\xca\xd0\x6e\xc1\x35\xcd\x46\xb5\x54\xeb\x7a\x0e\x6b\x0f\xcd\x7a\xd4\x0a\xe6\xb0\xba\x98\x44\xc3\xe9\x49\x7e\xe5\xd6\xb5\xa4\x96\xec\xb4\x0a\xa3\xa6\x56\xee\x15\x45\x79\x92\x5c\xac\x86\x6c\x1a\x12\xae\x1e\xac\x35\x1a\xe3\xb2\xe6\xcf\x17\xc9\xc8\xfc\xb3\xcf\x38\xcd\xbf\xb0\xbe\x3f\x1a\xef\xbf\xb2\xec\xe1\x8f\xc2\xfb\xc3\xbe\xf7\x89\x78\x0f\x9f\xbe\xb0\x14\x59\xd3\x7b\x1f\xde\x4f\x70\xcc\x6f\xa4\xf2\x96\x9e\xeb\x4c\x86\x2a\x1b\x40\xd8\xce\x47\x2a\x89\x65\xcf\x1d\xb6\x61\x2d\x1d\x22\x2b\xa3\x9a\xf0\x52\xe1\xa1\x87\x0b\x83\xba\x63\x3a\x32\xd2\x61\xa6\xe9\x26\x72\x21\x98\xf0\xac\x64\x41\x1f\xf3\x10\x1a\xcc\x68\xb9\xad\xb9\xf1\x31\x8e\xa9\x46\xf2\x4e\x67\x9c\x04\x91\x02\x28\x82\x01\x02\xa9\x46\x15\x0c\xb1\x60\xc8\x52\x30\x14\x86\xc1\x04\x15\x08\x19\x16\xd0\x08\xd5\x29\xd3\xb1\xce\x74\x29\x74\x05\x72\xae\x40\x4c\xf4\xc7\x9f\x5b\xbc\xbf\xd3\xb9\x56\x78\xee\x22\x32\x02\x31\xe0\x27\x0f\x39\xed\x73\xb7\x98\x2f\x38\xba\xc3\xf6\x6d\xe5\xa0\x51\xef\xb9\x96\xbf\xca\xcd\xb7\xa4\x3e\x1a\xf3\x23\x45\x99\x8b\x83\x32\xaf\x47\x3a\xc9\x56\xa4\x31\x1f\x96\x23\x86\xf0\x7a\x89\x9c\x54\x92\xb6\xe3\x3b\x2d\x9c\x8c\x77\xf4\x50\xb0\xd3\x0b\x82\x85\x1b\xce\x64\xa9\x3b\x09\x57\xaa\xe5\xb1\xda\x68\x60\x61\xb5\xe2\x39\xb2\xc8\x2e\xb3\x91\xfe\xac\x08\xe7\xbe\x99\x1c\x69\x6e\xaf\xf4\xd9\xeb\x3a\xe0\x0b\xeb\xfb\xa3\x31\xff\x2b\xcb\x1e\xfe\x28\xcc\x3f\xec\x7b\x9f\x88\xf9\xaf\x78\x79\x1f\xe6\xab\x82\xcc\x9b\xe5\xa4\x5f\x4b\x84\xcd\x4e\x5c\x8f\xb6\xd5\xf8\x0a\x2d\x73\xad\x05\x9f\xcb\x8c\x8d\xba\x3d\xc3\x68\x44\x66\x21\x16\x2d\xf2\x6a\xa2\x1f\x76\x66\xc3\xa1\x17\x49\xe7\x13\x4e\xb9\xad\x5b\x50\x74\x6a\xab\x9e\x3a\x4b\x79\x89\x8a\x12\x6a\x46\x21\x90\xe6\x78\x98\x7f\x73\x5d\xe7\x97\x5f\xfe\xf8\xe3\x97\x3f\xfe\x08\xe4\xb5\xa1\xfc\x11\xe8\x38\x13\xf7\x61\x68\x77\x26\xda\x06\xf0\x0f\xd2\x0f\x6e\x5f\x2e\xff\x0a\x54\x97\xae\xfc\x11\x88\x16\xf2\x95\x6a\x39\x9c\xca\x57\xff\x0a\x54\x8c\xae\x1c\x6a\x3f\x02\xee\x54\x1f\xd8\xc6\x5f\x81\xc2\x7c\x24\x27\x3f\x02\x8f\x94\x7f\xf9\x25\x9c\xad\xaa\xe5\x40\x35\x1c\xc9\xaa\x81\x42\x3e\xdb\x3a\xa4\xfa\x4b\x20\x10\x08\x84\x63\xb1\x67\x14\x8f\x56\x1c\x28\x96\x53\xb9\x70\xb9\x15\xc8\xa8\xad\xc0\x6f\xb6\xf9\x8a\xfb\xdd\x98\xa5\x79\x9e\xf4\xbd\x83\xe4\xe6\x3f\x0f\x86\x63\xca\xed\x4f\x7f\xe9\xee\x7e\xda\x9e\x37\x95\x93\x87\xbb\x48\xf7\xb2\xda\x63\xc2\x5d\xc5\x58\xa0\x96\x4f\x95\x6a\x6a\xe0\xb7\xa7\xe2\xdf\x03\x4f\xe5\x77\xbf\x37\x2f\xbc\x53\x35\xf7\x69\xd6\x77\x0b\xfe\xae\x46\x75\x5c\xb9\x31\x86\x07\x57\x9b\xf8\xb6\x61\xbb\xda\xe8\x99\x24\xc7\xb3\xef\x2c\xd9\xf1\x4a\xde\x92\xf4\x0d\xb6\x2e\x96\xfc\x99\x0b\x76\x5c\xf6\x53\x05\xee\x2c\xfd\xa9\x6a\xde\x92\xff\x4d\xd6\xce\x6a\x60\x63\xd2\xfa\x72\x6b\xd5\x3b\x51\x52\xf9\x98\xda\x3c\x23\x45\xb4\xac\x86\xab\xea\xa6\xe8\x21\x9d\x40\x21\x7f\xd8\x21\x6a\x95\x54\x3e\x11\xd0\xfd\x89\x94\xbb\x1e\x76\xa2\x27\xe9\xcb\x07\xcd\x30\x9c\xe9\xc8\xbf\x9a\x9d\x27\x12\xcf\x39\x79\xe1\x69\xbf\xe4\x67\x53\xf8\x7b\x60\xfb\xe3\xc1\x93\xe3\xa9\x1c\x19\xf2\x18\x73\x5d\xcd\xeb\xde\xc2\xd9\xe3\xfb\x97\xb1\xf5\xbc\x6d\x1f\xdf\x3a\xc6\xcd\x40\x9a\x9d\x1b\x1a\x6e\x4f\xe1\x32\x8e\x36\x65\xf7\xea\xf9\x1e\xd0\x5c\x77\x60\x1b\x9b\x0e\xe8\x4c\xcc\x13\xc0\xf8\x20\x1f\x6d\x63\x9d\x7f\x05\xa7\x5b\x5c\xde\x30\x7c\x40\xee\x39\xdb\xd2\xb2\xa4\x71\x68\x6a\xaf\x71\xc2\x36\xbf\x07\x7e\x5d\xbf\xfc\xeb\x29\x66\x6d\xf3\x4e\x6c\xda\xe6\xc5\x0c\xee\x4c\xef\x91\xbd\x2b\x98\x76\xdc\x07\xf7\x5e\x7c\x6f\x69\x3d\x67\xfd\xc4\xe0\x70\x95\x24\xc7\x05\xf0\x17\xf7\x13\x60\x4b\xeb\x84\x4d\x5f\x29\xc2\x73\x0a\xc7\x84\x70\xdc\x47\xab\xec\x3a\x57\xc9\xb0\x65\xfe\x89\xc6\xb5\xca\x7f\x5b\xd1\xde\xb6\xb7\xaf\xa1\xfa\x76\x5d\xbf\x24\xf7\x9c\xe5\xcd\xdf\x0f\x78\x3c\xce\xd1\x73\xbd\xde\x8b\xad\x57\x34\x2f\x83\xb7\x63\x0c\xfa\x9b\x26\xf1\x6f\x69\xd6\x27\x1a\xd7\x9b\xe4\x39\xf3\xf3\x27\xe6\x1a\x15\x2d\xeb\x86\xe1\xe0\x05\x95\x03\x5e\x4d\x79\xc0\xd9\xba\xd0\x49\x5e\xd6\x1d\x48\x4e\x1e\x06\x8e\xd3\x9f\xba\xb7\x71\xf4\x92\xd6\x39\xbe\x76\xa5\xb7\x5e\xc6\x09\xfe\x5c\xcd\x9e\x3c\xf8\xf6\x50\xde\x85\xc3\x43\x6a\xe7\x78\xd4\x35\x6f\x3f\x03\x31\xbf\x07\x0e\x59\xfe\x1e\xd8\x76\x2c\x63\xe0\x78\xd2\x7c\xd0\xfc\x13\x42\xdc\xa1\xb7\x6c\xe9\x9c\xe3\xf8\x9d\x63\xd2\x23\xd5\xbb\x69\xf7\x1d\x8a\x3d\xab\x37\x7b\x64\xca\xc5\xc3\x01\xd0\x7b\x0f\xce\xe8\x41\x33\xcd\x89\xf4\xbc\x5b\x15\x7a\xb6\x82\x17\xde\xf1\x36\xfb\xc0\x1f\xdd\x14\x7c\x07\xef\xb7\xdb\xc1\x5b\xb4\xcf\x73\x7c\xa4\x97\xbd\x24\xb8\xf5\x7d\x1e\xe9\x3d\xce\xa6\xaf\xb6\x87\x37\xa9\x9e\x75\xb6\x1e\x0b\x9d\x61\x74\x3b\x72\x3d\x92\xdc\x1b\xd1\x9d\xb8\x3d\x46\xfa\xec\xa0\x79\xa9\x25\x3f\x23\x7e\x6f\x63\x78\x41\xfa\x9a\x51\xfe\x34\xb9\xa1\xeb\x4c\x1e\x81\x6f\x26\x27\x9e\xed\x8c\xee\xaf\xe8\xc3\x1a\xce\xb3\x7f\xf0\xc2\xe5\xc2\x6c\xa1\xe7\xca\xf9\xe1\x65\xfa\x7f\x56\xc7\x59\x49\x9e\x95\xbd\x5c\x08\x77\x22\x67\xb6\x33\xf5\x3e\x45\x9a\x63\x95\x9d\x15\xeb\xd8\x4b\x97\xcb\xb7\x9b\xba\x7e\x98\x4c\xbb\x0a\xce\xca\x71\x72\x8d\xe1\x25\xe9\xfd\x78\xfb\x21\x5d\xfb\x90\xfa\xd1\x69\xc7\x7b\x3b\xf8\x4b\xa2\x2f\x1d\xd7\x3b\xf5\xf0\xb7\xaa\xb8\x44\x86\x33\xde\xf4\x9b\x95\xdd\x6f\xf8\x7a\x4d\xf8\x22\xde\xcf\x0f\x62\xcf\xa7\x38\x1f\x61\x36\xaf\xe9\x5f\x3d\xc1\x5a\x3b\x71\xfb\x81\x7c\xb7\xae\xf3\xa0\x3b\x4e\xff\x6a\x2d\xbf\x41\xf3\xac\x8b\xf0\xdb\x6f\xa6\xf4\x35\x7b\xe0\x05\xfe\xf8\x3f\xff\x27\xf0\xcd\x73\x06\xe6\xb3\x5d\x83\x6f\x3f\x7e\xf8\x72\xe1\xff\xfe\xfb\xf7\xc0\xe9\x82\x86\x63\x5e\x56\x70\xb3\x02\x7a\xba\xa8\xee\x4c\x3b\x5d\xff\xa2\xea\x5f\x14\x7d\x9b\x81\x17\x45\x0f\x58\xf8\x3d\xd0\x48\xaa\x65\x75\x63\x64\x81\xbf\x03\x18\xbf\xb5\x6a\xfe\xe8\x7d\xbf\x4c\x3e\x6c\x26\x36\xfb\xe5\x93\x07\xeb\xd9\x0a\x79\x3c\x73\x9f\x45\x72\x53\x9e\x5b\x12\x3f\xc5\x49\x20\x5e\x28\xab\xa9\x44\x7e\xb3\x20\x7e\x50\xe2\xf7\x40\x59\x8d\xab\x65\x35\x1f\x55\x2b\xaf\xdc\xdd\x33\xfb\x07\x27\x35\xb1\x9d\xd0\xfd\x74\x3d\x3c\xe7\xe3\x98\x16\x76\x73\xe5\xa3\x3a\x58\x2f\xe1\xbf\x5f\x03\xfb\x59\xed\x57\x30\x87\x13\xcc\xbc\xd4\xc5\xeb\x42\x77\x36\x8a\xc3\x89\xfe\x57\x50\xc8\x69\xd3\x78\xb5\x92\x72\xa9\x75\x14\x1d\xcf\xef\x4c\x64\xa5\x94\x0d\x98\x9a\xaf\x3d\x9a\x58\xc0\x9c\x0e\xdd\x80\xe1\x0c\xdd\x81\xf4\xe5\x5a\x86\xff\x3f\x00\x00\xff\xff\xb5\x38\xff\xe4\x01\x84\x01\x00") + +func pathsHorizonSqlBytes() ([]byte, error) { + return bindataRead( + _pathsHorizonSql, + "paths-horizon.sql", + ) +} + +func pathsHorizonSql() (*asset, error) { + bytes, err := pathsHorizonSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "paths-horizon.sql", size: 99329, mode: os.FileMode(420), modTime: time.Unix(1508958275, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _self_sendCoreSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7c\xd9\x8e\xa3\xca\xb2\xf6\x7d\x3d\x05\xea\x9b\xea\x56\x55\x2f\x33\x0f\xdd\x7f\x6f\x09\xdb\xb8\x3c\xe2\x79\xfc\x75\x54\x4a\x92\x04\x53\xc6\x60\x33\x78\xda\xda\xef\x7e\x04\x78\x00\x1b\x0f\x65\xf7\xda\x5a\x47\x6a\x5f\xd4\x60\x82\x2f\xbe\x8c\x8c\x8c\x8c\x0c\xc8\x74\x7c\xcb\x32\x2c\x1d\x73\x10\x34\x66\xe8\x29\xfa\x85\x69\x86\x65\xb8\x63\xa4\xbe\x62\xd0\xb4\xdd\xe0\xba\x89\x54\x1d\x39\x4f\xd1\xaf\xf0\x5b\xa4\x3e\x7d\xff\xfe\xf4\xfd\x3b\xd6\xb0\x5d\x4f\x77\x50\xbb\x59\xc5\x54\xe0\x01\x05\xb8\x08\x53\xfd\xe9\x2c\xb8\x1c\x5c\xcf\xfb\xd3\x19\x52\x31\xcd\xb1\xa7\x07\x81\x05\x72\x5c\xc3\xb6\x30\xe1\x2f\xf6\x2f\x26\x26\xa5\xac\xb1\x99\xfe\x1e\xdc\x7e\x24\xf2\xd4\x96\x3a\x98\xeb\x01\x0f\x4d\x91\xe5\xbd\x7b\xc6\x14\xd9\xbe\x87\xfd\xc2\xf0\x9f\xe1\x25\xd3\x86\x93\xd3\x6f\x0d\xd5\x44\xef\x86\xf5\xee\x39\xc0\x72\x01\xf4\x0c\xdb\x7a\x77\x91\x1b\xe0\x9e\x0a\x43\xd3\x08\xa0\x91\x05\x6d\x35\x68\xf3\x2f\xec\xb9\xdb\x29\xf0\xcf\x3f\x77\xba\x2d\x15\x38\xea\x3b\xb4\x2d\xcd\x76\xa6\x86\xa5\xbf\xbb\x9e\x63\x58\xba\x8b\xfd\xc2\x6c\x6b\x8b\x31\x46\x70\xf2\xae\xf9\x56\xa4\x4b\xb1\x55\x03\x05\xd7\x35\x60\xba\x28\xa1\x66\x6a\x58\xef\x53\xe4\xba\x40\x0f\x05\x96\xc0\x09\x3a\x22\x12\x71\xec\xe5\xbb\x8b\xa0\xef\x18\xde\x3a\x00\xd7\xb4\x9f\x5b\x03\x20\xe0\xc0\xf1\xfb\x0c\x78\x63\xec\x17\x36\xf3\x15\xd3\x80\xaf\x81\xc5\x20\xf0\x80\x69\xeb\x3f\x9f\x9e\xf2\xad\x7a\x03\x2b\xc9\x79\x69\x80\x95\x0a\x98\x34\x28\xb5\x3b\xed\xad\xe4\x5f\xae\xa1\x5b\xc8\x71\x01\x84\xb6\x6f\x79\x3f\x2f\xcb\x22\xd3\x34\x2c\xdd\x70\x5d\x1f\x39\x86\xa5\xa2\xd5\x15\x79\x38\x9b\xfb\xb6\xe3\x4f\x5d\x65\xed\xa2\xf9\x55\x61\x64\x2d\x6e\x91\x9c\x39\x06\x44\x37\xa8\x8f\x3c\xf3\x16\xc4\xb1\xe1\x7a\x1a\x42\x37\x4a\xde\x20\xa6\xf8\xeb\xcf\x18\x6a\x6b\x7d\x05\x98\xc0\x82\xc8\xfd\xf9\x24\x56\x3b\x52\x0b\xeb\x88\xd9\xaa\x14\x93\xae\xcb\xd5\xe1\xee\x16\x6f\x15\x50\xb1\x9d\x35\x16\x02\xe7\xea\x72\xbb\xd3\x12\x4b\x72\x27\x26\xbf\x97\x79\x9f\x4d\xd0\xfa\x36\x54\x0d\xa1\x5b\x80\x0f\x62\xb7\x63\x3b\xbe\xeb\x99\x86\x85\xdc\x4b\xc8\x7b\xa1\x9b\x71\x03\x16\x28\x0c\x03\x17\x70\x0f\x42\xb7\xe3\x46\x23\xe3\x12\x68\x24\x71\x3b\xe2\x7e\x3c\x5c\x02\xdd\x0b\xdd\x8c\x3b\xf3\x15\xd7\x57\x2e\x60\x46\x02\x9f\xc1\x33\x0d\x77\x3c\xf7\x91\x7f\xc9\xa6\x71\xb1\xdb\xb1\xd1\x65\x9b\x86\xd7\x6f\x46\xb3\x35\xed\x32\x5c\x24\x70\x33\x5e\x14\x32\xc6\x08\xa8\x97\x61\x13\x72\x7f\x33\xfa\x36\x8c\xa1\xf9\xfb\x8d\x6a\x14\x60\x5d\x00\x57\x80\x75\x33\xe1\x6d\x5c\xba\xc4\x75\x27\xf2\x59\xcc\x60\xda\xbf\x0e\x1b\x48\x6d\x91\x43\xd9\x63\xe0\xe3\x60\x78\x4d\xec\x10\xb6\xae\x48\xee\xc3\xd0\x65\xb9\x43\x58\xb9\x22\x17\x45\x8a\x2b\x42\xfb\x91\x7f\x55\xee\xa6\x46\x44\xa3\xfe\xaa\xcc\x7e\x0c\x5f\x91\x44\x57\x1b\x10\x0d\xb6\xcb\x32\x09\xdf\xbe\x2c\xaa\x00\xeb\xb2\xc0\xce\xf7\x6e\x92\x0a\x5c\x69\x2b\x28\x0d\x3a\x92\xdc\x2e\xd5\xe5\xb8\xb0\x39\xd3\xdd\xb9\xb9\x95\x68\xe7\x8a\x52\x4d\x3c\xc1\xfa\xb9\xcd\x6f\x65\x30\x45\x3f\x76\xdf\x61\x9d\xf5\x0c\xfd\xd8\xde\xf2\x13\x6b\xc3\x31\x9a\x82\x1f\xd8\xf7\x9f\x58\x7d\x69\x21\xe7\x07\xf6\x3d\x4c\x7b\x73\x2d\x49\xec\x48\x3b\xe4\x1d\xde\x53\x02\x31\x79\x71\x0b\x9c\xab\xd7\x6a\x92\xdc\xb9\x80\x1c\x09\x60\x75\x39\x09\x80\x95\xda\xd8\xf3\x2e\x47\xdd\x7d\xe7\x86\x20\xcf\xc7\x9a\x77\xcd\xdf\xea\xdc\x5b\xe8\x6a\x7b\x12\xb6\x94\xeb\x9d\x23\x7b\x62\xfd\x52\xa7\xb8\xa7\x15\x4f\x4a\x13\xea\x0f\x28\x47\x44\x3e\xd3\xf8\x13\x90\xd0\x00\x8d\x6a\x66\xa6\x07\x2b\x91\x99\x63\x43\xa4\xfa\x0e\x30\x31\x13\x58\xba\x0f\x74\x14\x9a\xe1\xc6\x24\x3a\x10\x53\x91\x06\x7c\xd3\x7b\xf7\x80\x62\x22\x77\x06\x20\x0a\x56\x04\xcf\x47\x57\x97\x86\x37\x7e\xb7\x0d\x35\x96\xe4\x27\x1a\x1b\x77\xc8\x6d\x33\x43\xd7\x3d\x34\x72\xe7\x00\x69\x06\x8f\xbc\x3c\x1e\x45\xbf\x3e\x61\x18\xb6\xfb\xc6\x50\x31\x38\x06\x0e\x80\x1e\x72\xb0\x05\x70\x82\x3c\xf4\x2b\xc3\x7e\x0b\xfb\x46\xee\x56\xab\xaf\xa1\x74\x70\xa3\x05\xa6\x28\x45\x98\xa5\xd3\x84\x17\xc0\xf4\xd3\xa4\x09\x82\x3c\x16\x37\x81\xeb\x4d\x6d\xd5\xd0\x0c\xa4\x62\x86\xe5\xa1\x60\x7d\x98\x97\x0a\x62\xb7\xda\xc1\xf0\xbd\xf0\xd3\xb7\x63\x2f\xd8\x8f\xe7\x07\xad\xe2\xde\x65\x92\x6d\xf6\x8d\x29\x86\x6e\x58\xde\xd1\x45\x17\xcd\x2d\x7f\x9a\x7e\xcd\xf2\xa7\xae\xaf\x20\xcb\x73\x82\x85\xdd\xae\xc1\x49\x19\xc3\xd2\x4c\x10\xac\xff\x54\xe4\x7a\xe9\x74\x22\xc1\xb1\x3d\x45\xaa\x3d\x05\x86\x95\x22\x45\x9d\xd8\xda\x1b\x3b\xc8\x1d\xdb\xa6\xea\x62\x1e\x5a\x1d\x33\xd3\x4c\xa0\x9f\x63\x94\xda\x4b\x49\x91\xd8\xcc\xbc\x9f\xe6\xb7\x56\x7a\x0f\x57\xb5\x58\xae\x28\xe5\x2a\xd8\xd7\xaf\x3b\xdb\xfd\xeb\x17\x86\x7f\xfb\x76\xfe\xee\x84\xa9\x8e\x30\x92\x66\x8c\x90\x4e\x7d\x24\x98\x14\xee\x75\x8f\x20\x31\x8a\x3c\xc3\xb2\x55\x14\x77\x8b\x84\x3b\x9c\x2a\x4d\x4e\x5a\xf7\xaa\x4f\xa6\x7f\x11\x91\xed\x77\xc0\x1d\xc7\xc8\x9c\x8e\xc0\x99\x83\x16\x57\x85\x14\x1f\x4e\x90\x67\x1a\xae\x77\x55\x74\x9f\x53\xee\x7a\x3e\xfa\x3a\x2c\xe2\x78\xc6\xf4\xcc\x20\x08\xa3\x4d\x8a\x9b\xc5\x7a\x3a\x99\xba\xee\xf1\x8e\xba\xfa\xa0\xe7\x8c\xc3\x9c\xcb\x80\x93\x30\x87\x56\x9c\xf3\x96\x6d\x46\x72\x6f\x8f\x6d\x97\x17\x5f\xb7\x21\xc0\x34\x91\x73\x63\x30\x09\xef\x34\xd4\x73\xc1\x24\xac\xa3\x00\xd7\x45\x9e\xb7\x9e\xa1\x33\xc3\x2f\x2e\x06\x6d\x35\x35\xfa\x92\xdf\x12\xb2\x51\xc5\xe1\x52\x7c\x89\x2a\x13\xd7\x54\xc7\xa4\xae\x69\x8e\x97\x3a\x2e\x29\x06\xd3\x20\x04\xa4\x1b\x24\xac\xe8\x58\x67\xb8\x84\x17\xcf\x85\xa8\xf0\x22\xa6\xda\xbe\x62\xa2\x60\x94\x40\x23\x2c\x10\xfe\x5d\x61\x70\xbb\x9c\x8c\xda\x72\xe4\x8d\xdb\x06\x9e\xf1\xe8\xed\x9d\x5b\xbf\x38\xba\x75\xe7\x2d\xe7\xdc\x38\xca\xbd\xef\xf5\xe2\x68\xc9\x1d\x39\xb1\x31\x4b\xeb\x4b\xe6\x24\xde\xd8\x8e\x77\x61\xea\xde\xce\x7b\x68\xe5\x01\xcf\x43\xd3\x99\x87\x05\x83\xd9\xf5\xc0\x74\x86\x05\xd9\x8f\xed\x47\xdf\x60\x1b\xdb\x42\xa7\xb3\xa5\x06\x0c\xd3\x77\x62\x73\xe5\x39\x0d\x31\xfb\x45\x75\x81\xd8\xcd\xa7\xb3\xc7\x1e\xf6\x4c\x17\x6c\x4b\x0b\xb6\x73\xdc\x73\x5f\xc3\xe6\xfe\x0b\xc3\xbf\x61\xa2\x9c\xc7\xa2\x7f\xff\xdf\x2f\x8c\x65\x18\x8a\xf9\x96\xda\x21\xf1\x65\xd3\xdd\xfd\x12\x2f\xb3\xc4\xa7\x83\x73\xf1\x20\xac\x71\x05\xf1\x37\x95\x50\xb0\xd6\x7b\x80\x8a\xeb\x2b\x5b\x12\x0e\x72\x13\x73\xe3\x69\xd6\x11\x0c\x1a\x07\x81\xfd\x80\x39\xe5\x13\x5b\xa3\xde\xcb\xe9\x00\x71\xcb\xa4\x7d\x66\x5e\x3b\xba\x8e\xac\x05\x32\xed\x19\xba\x32\x8b\x1d\x54\x3f\x30\xf7\xc4\x96\xf3\x0f\x98\x60\x57\x30\x8c\x4c\x30\x77\xd1\x0d\x93\x3b\x70\xbd\x6b\x86\x08\x80\xae\x1b\x61\x57\x88\x4c\x20\x1e\x1b\x22\xa1\xed\xac\x31\xb6\x05\x90\xbb\x2d\xb1\x2d\xc6\xde\x93\xd8\x47\xe8\x13\xb4\xbe\x49\x7a\x89\x0c\x7d\xec\x9d\x98\x2d\xa5\x49\x87\xda\xcf\xdd\xad\x3a\x94\xae\xbf\x1e\x86\x78\x72\x5d\x96\x32\xfc\x2e\x05\x82\x58\xe5\xea\x5e\x56\xb1\x42\xfd\x3d\xe6\xbe\x96\x5b\x5c\x4a\x15\xd2\xa0\xce\x27\x20\xc7\x6b\x21\xd3\x98\x1a\x67\x32\x8c\x8b\x8b\xbb\xdf\x97\x1f\xc4\x1e\x5f\xdc\xb5\x50\x8a\xdd\x1f\xb5\xe6\xe8\xf6\x6d\x13\xff\x95\x3e\xc8\x12\xf5\xcd\xbb\x7b\x3f\xfe\x08\x28\xea\x7f\x6f\x95\x08\xbb\x37\x2c\x27\x8e\x7b\x66\x15\x3e\x04\x3b\x7b\x15\x8e\x81\xa5\xa3\xd4\x25\x6c\xdc\x38\xf1\xa7\x4e\xf7\xc7\xe5\x43\xb1\xf8\x7e\x13\xfd\x97\xed\xa3\xd8\xea\x3a\xcd\x38\xde\xca\x41\xae\x6f\xa6\x46\x72\x6f\x35\x45\x57\x97\x6b\x87\x27\x84\xf7\xd8\x33\x1f\xac\x07\x35\xdb\xb9\x52\xd7\xc2\xf2\x62\x47\xbc\x62\xdf\xcb\x90\xee\xa7\xf1\x4a\x72\x5b\x6a\x75\xb0\x92\xdc\xa9\x1f\xaa\x42\x3d\xb1\xda\x95\xda\xd8\xd7\xe7\xb7\x6c\xab\x31\x2c\x96\xaa\x64\xae\x44\x15\xe4\x26\x9d\x1d\x54\x0b\x35\x39\x5f\x2d\x94\xbb\x72\xa3\x4b\x16\x87\xd4\xa8\x56\x68\x17\xeb\x72\x37\x27\xd5\xc5\x76\x9f\x6b\xe6\xb8\xfa\x80\x2c\x3e\xbf\x62\xc2\xf6\xc3\x6f\x7f\xe3\xf8\x2b\x46\xbc\x62\xf8\x6b\x64\x60\xec\xf9\xf9\x15\x7b\x16\x9b\xa2\x28\x8a\xbf\x7e\x3d\x87\x17\xc8\x6f\x3f\xaf\xf1\xc9\x0d\x2a\x6f\x6c\x4b\xa6\xeb\x72\x49\x6a\xe4\x6a\x72\x21\xcb\x51\xa4\x48\x53\xec\x88\x69\xc8\xf9\x76\xab\xfa\xd6\xaf\x70\x6f\xd9\x6a\xae\xd6\xac\x96\x0a\x75\xba\xcd\x49\xc3\x7e\xaf\x7b\xe0\x13\xd0\xe0\x19\x5e\x10\x28\x9a\x11\xa8\xcb\x7c\xa8\xf3\x5d\x78\x5c\x5d\x79\xa0\xeb\xce\xd7\x4c\x3e\xdb\x7f\xc9\xba\xc9\xde\x68\x2c\xa5\x0a\xbc\xc6\x50\x2c\x42\x2c\xaf\x12\x0a\xc9\x29\x8c\xc2\x0b\x1a\x49\x01\x8d\xa1\x08\x42\xe1\x18\x56\x00\x24\xad\x01\x8d\xa0\x71\x0a\xa8\xb8\xc2\x90\x0a\x4b\x51\x0a\xce\x29\x48\x10\x02\xc3\xe0\x0f\x7e\x02\x0c\x86\x23\x01\x89\x28\x52\xd3\x48\x9a\x07\x38\xa7\xe0\x88\xc3\x35\x95\xd0\x58\x95\x22\x78\x48\x68\x00\xaa\x24\xae\xb0\x10\xe2\x3c\xa4\x28\x95\xe1\x38\x86\x64\x04\x9e\xe5\x09\x92\x01\x04\xfb\xbc\x73\xa0\x67\xf1\x1f\xfb\xc9\x0e\x2a\x06\xbd\xce\xac\xdb\x95\x2c\x97\xb7\xf2\x42\x91\xc4\x57\x1f\xd9\x17\x17\xd7\x3d\x77\x59\x5a\x6e\x88\x81\xda\xee\x0f\x41\xb6\x0c\x0a\x7a\x20\x2f\xc9\x74\x15\x6c\x66\x64\xf3\x2a\xf2\x48\x1c\x10\x74\x28\x96\x9d\xfc\x17\x1a\xf2\x5b\x3f\xcf\x47\x03\xfb\xac\xa3\xb2\x90\x65\x35\x1e\xd7\x58\x4d\xe3\x49\x8d\x23\x15\x41\xe5\x38\x9c\x23\x69\x08\x49\x8d\x43\x0c\x47\xe2\x1a\x8d\x58\x08\x29\x44\xab\x38\xa9\xd2\x14\xcf\x73\x24\x89\x54\x96\x66\x00\x0a\x9c\xec\x77\x38\x3b\x01\x01\x84\x82\x06\x09\x9a\xe6\x79\x12\x52\x2a\x4e\xd2\x2a\xcf\xa8\x0a\x52\x54\x92\xe5\x58\x9a\x66\x14\x42\x53\xa0\x42\xb1\x04\xa7\x69\xb8\x46\x93\x0c\x42\x0a\xa1\x30\x94\x42\x69\x0c\xf5\xfc\x8a\x91\xaf\x18\xc1\xe0\xbc\xc0\xf0\x24\x27\x6c\x3d\x36\xf7\xd6\x18\x7d\x10\xb2\xcf\xd8\xb8\x52\xe6\xfa\xb4\xb5\xae\x2f\xba\xab\x37\xaa\x37\xb3\x27\x2f\x8b\x82\x58\xf7\x72\x44\x85\xac\x71\x59\x8e\x1d\xd9\xc5\x6e\x77\xde\xa8\x13\x6d\x7b\xd0\xcf\x36\xfb\x46\xd3\x42\xec\x8b\x58\x84\x35\x3c\xd7\xab\x78\xba\x9c\xd9\x48\xd3\x05\xc8\x4b\x38\x1d\x59\xb8\xaf\xe5\xf5\xd6\x32\xf8\xab\xb4\xff\x11\x05\x33\xfd\xf0\xff\x52\x14\xcb\xab\x48\x5e\xf2\xf4\xb5\x61\x59\x25\xd7\xed\x33\x5e\x16\x29\x64\xc6\x93\x47\xd9\x19\xe1\x78\x39\xa5\xb4\x50\x6d\x20\x4c\x72\x99\xbc\x30\xd5\xab\x4b\xe8\xd4\x2c\xbe\x20\x19\xb9\xa5\x20\x4e\xc8\x02\xf9\xb2\x68\x8f\xc8\x56\xc1\xd5\x16\x55\x79\xac\x65\xf2\x78\x19\xb1\x2b\xaf\xe3\x66\xba\x91\xfe\x14\x8f\x4e\xf7\xd8\xbd\x47\xe7\xe0\x75\xf7\xff\x87\x7d\x6e\xf4\x68\x9e\x67\x69\x55\x45\x3c\xa1\xa8\xa4\xa0\xaa\x0a\x20\x59\x0d\x51\x3c\x8d\x23\x82\x23\x01\x8f\x23\x48\x91\x14\x60\x28\x9a\x52\x34\xc0\x31\x1c\x84\x34\xc5\x13\x1c\x27\x68\xac\xc2\xb0\x90\x89\x3c\xfa\xf1\x51\xa1\x30\x40\x65\x21\x10\x18\x1a\xf0\x38\xc5\xd3\x34\xa9\x40\x85\x27\x35\x55\x61\x08\x9e\xe0\x55\x40\x91\x34\x89\x18\x42\xd3\x28\x1a\x2a\x24\xc7\x40\x9e\xc5\x15\x05\x41\x9e\xc7\x49\x56\xd5\x9e\x5f\x31\xea\xe0\xd1\x3c\xbe\xf7\x68\xd9\x1d\x2d\xf4\x86\x92\xd1\x17\xd0\xb1\x06\xb0\x58\xae\x2d\x17\x9a\x09\x75\xa1\xae\xd4\x1a\x13\x3c\x47\xe4\x8d\x62\xc9\x27\x26\x7d\x7f\xc4\x5a\xe3\xc2\xd8\x5e\xcf\x1c\x94\xf5\x55\xb6\xeb\x9a\x1c\x99\x9d\x67\xe1\x5b\xb1\x41\xf7\xbb\x25\x8d\x85\x2f\xab\x51\xa1\xf5\xe2\x52\xdd\xd0\xc2\x81\x47\xb7\x63\x16\x2f\x2e\x8b\xb2\x3b\x6d\x0d\x5f\x7a\x38\xd3\xe2\x9b\x70\xb5\xa9\xb2\x6b\xbe\xa1\x33\x0a\x5f\x61\x06\x8d\x9c\xe7\xf2\xb6\xc6\x52\xcd\x42\x7e\x4e\x38\xfd\xf5\xac\x57\xd1\xf3\x63\xa9\xc2\xfb\xb9\x8c\xd2\x1d\xbe\xc9\xf6\xba\xe9\x77\x35\x1e\x5f\xaf\x55\x38\xd6\xfd\x97\x75\x49\x9c\x52\xa1\xc7\xd6\x52\x3c\x36\x5f\x4a\xeb\xf5\xff\xeb\x1e\x7b\x26\x03\x49\x29\xfe\x3f\x90\xcf\x9c\xd6\x60\x1f\x01\x3b\x57\x3f\x7c\x0c\xf3\xb8\x04\xf8\x00\xda\x99\x02\xde\x67\x73\xb7\x58\x11\x2f\x96\xed\x96\xe4\xb7\x5c\x95\x21\x29\x89\x2d\x0f\x07\x85\x32\x5d\xa1\x99\x36\xdb\x2c\x57\xea\xbd\x72\xbe\xf7\xd6\xc9\x56\x87\x54\x43\x2a\x36\xa4\x61\x2b\xcb\x4a\xb4\x44\xb5\x25\xae\xc3\xb6\xa2\xf9\x27\xca\x92\xca\xf9\x4e\x6e\x40\xf5\xd7\xa8\x63\x30\x5d\xbe\xb7\x71\x17\xcd\xf6\x8c\xe8\x7e\xcc\xc1\xb0\x47\x93\xfc\x98\x9a\xac\xa4\x86\x01\xcb\x7e\xab\x71\xf0\x95\xd0\xf9\x73\xe1\x9f\x81\x9f\x4b\x86\xae\xb6\xda\x36\xcf\xf5\x2a\x63\x75\x58\xc8\x82\x72\x4e\xe5\x1c\x5a\x54\x97\x9b\x66\xb9\x3b\x27\x45\x2a\x53\x6b\x03\xc1\xae\x75\x3a\xe1\x6c\x23\x66\x47\x7c\x3d\x5b\x0c\xff\xd4\xf7\x3f\xb2\x07\xd0\xf0\xff\xbc\x28\x8a\x96\x74\x50\x9a\xcd\x0a\x7d\x50\x17\x6b\x70\xc9\x7d\x7c\x8c\xfc\xb1\x61\x15\x87\x1d\x86\x6b\x65\x8c\xb6\x3f\x9e\x14\xda\x74\x77\x01\xfd\xac\xdf\x70\xdf\x06\xdd\x10\x6e\x61\x2a\x53\xb7\x56\x25\x78\xa3\x6b\x35\xe8\x46\x65\x38\xcc\x4e\x11\x43\x54\x0b\x60\xdc\xd1\xfd\xc2\x4b\xa1\x5e\xd3\x5f\x4a\x1f\x8c\x48\xab\x2c\xb9\x66\x0d\x6f\x50\x9b\x39\x13\x3a\xdb\x91\x5a\xbd\x11\x18\x95\x87\xed\xa5\x68\xcc\x4b\xb0\xcd\x14\x73\xea\x38\xbf\x9c\xfa\x60\x29\xea\xbf\x7e\x1d\xc7\xf6\xdf\xdc\x35\xd4\x43\x5d\x53\x4b\x76\x4d\x3e\x6b\xcd\x91\xd4\x7f\xfb\xa8\x4c\x3d\xfa\x8d\xa1\x66\xed\xf5\x60\x31\x7c\xb3\x0b\xcb\x21\xcc\x8c\x47\xcd\x71\x66\xb6\xe1\x0a\x93\x5e\x91\xdd\xa8\xcd\x7d\xd7\x1c\x07\xb7\x4f\x9b\xbe\xe2\xaf\x65\xaa\x26\x0e\xe8\xba\xa5\xcd\x7b\x65\x62\xb4\xfa\x28\x2f\x8c\x92\x35\xe9\xdb\xa8\xdb\xe9\xd2\x0b\x49\x34\x88\xa2\x64\x79\xf3\xbe\x36\x61\xbd\xcd\x1c\xe0\x9d\x09\x61\xab\x13\xae\x2f\xbf\x2c\x73\xd5\xa5\x60\xf0\x7a\xa6\xbc\xa8\x94\x35\x01\x74\x06\x16\xca\x98\xed\x7c\x33\x32\xfd\xf9\x71\x96\x56\x25\xbe\x63\x9c\xed\x2a\xc5\xfb\xce\xc4\x39\x95\x11\x00\xc5\xe3\x14\x01\x21\xa5\xf0\x88\x62\x59\xc4\xb3\xa4\x00\x39\x96\xa0\x10\xa7\xd0\x9c\xc6\x0b\xa4\x02\x08\x01\x67\x68\x85\x67\x82\x49\x18\xe1\x2c\xa2\x10\x24\x04\x8e\x89\x77\x6a\x68\xe4\xc8\xab\x27\x72\xad\xac\xa9\x4a\x99\xa9\x57\xcd\xce\x6a\x50\x5f\x0b\xd9\x8a\xd5\x6b\xd7\x67\xb3\xf1\xe0\x43\x59\x17\x51\x47\x6a\xbe\x94\x97\x53\x46\xe2\xaf\x45\xe8\xb4\xaa\xf0\x23\x31\x2b\xbd\x22\xfb\x69\x5b\x1e\xaa\xb2\x7b\x5b\xee\x76\x29\x44\xaf\x4f\x61\x27\x9f\x70\x21\x78\x32\xc2\x52\x80\x34\xdb\x81\xc8\x85\x33\xdb\xb2\xd0\xca\x33\x81\x6f\xc1\xf1\x31\x50\xf8\xd2\xd0\x2d\x60\x26\x70\xbd\x68\xe3\xc5\xf6\xc1\x51\x0a\xab\x87\x73\xb5\x1b\x78\x6c\xe3\x08\x70\xe0\xd8\x58\x6c\x2f\x1e\xf3\xf8\x77\x58\x7b\xfa\xb2\xdd\xc2\xf1\xe5\x07\x46\x44\xd5\xa8\x2f\x2e\x72\x16\xc8\xf9\xf2\x03\xfb\xb2\xc0\xff\x62\xff\xa2\xbe\xb3\xec\x77\x5d\x65\x59\x86\x63\xa0\xf6\x65\x2b\x04\x7d\xc7\x41\x96\x57\x0d\x9b\xf9\xe5\x07\x46\x25\xbf\xcf\x86\xaf\x3e\xb8\x5f\x7e\x60\xff\xff\x69\xa7\xf4\xdf\x4f\x71\x0a\xa1\x64\xa0\x04\xf0\x40\xa0\xf0\x20\xaf\xc4\x05\x82\x54\x15\xa8\xa9\xbc\x4a\x70\x1a\x03\x05\x9e\x81\x34\xcd\x69\x04\xcb\x20\x96\x40\x24\x84\x84\x02\x28\x4a\x83\x82\xa2\x30\x2c\xc2\x29\x05\x21\x44\x6c\x19\xed\x71\x83\x6e\xfc\xf2\xe3\x48\x5b\xd4\xb0\xc0\x0e\x5f\x7e\x60\x78\xe2\xd2\x7f\x8e\xee\x77\x2d\x30\x0b\x78\x21\x8d\x22\x00\x89\x03\x4a\xe0\x11\xe2\x28\x88\x48\x92\xe4\x18\x04\x82\xbe\xe0\x78\x56\x01\x90\xa1\x59\x86\xd5\x28\x4a\x85\x90\xd6\x28\x0d\x41\x16\x57\x19\x46\x55\x35\x22\x58\x1d\x7e\x79\x4a\xd1\x70\xc6\x06\x8f\x96\x3d\x3e\x6f\x03\xe2\xf5\xf4\x9a\xed\x7b\x33\xdf\xfb\xbd\x6d\xbf\x64\xe1\x87\x5b\xfd\x8f\xb6\xf0\x6d\x5e\xf6\xc7\x06\x7f\x6c\xf0\xc7\x06\x7f\x6c\xf0\xc7\x06\x7f\x6c\xf0\xc7\x06\x7f\x6c\xf0\x37\xda\x20\xfc\xeb\x7f\x9e\xfe\x73\xeb\x42\xc6\x85\xb3\xf0\x05\xe3\xb4\xcf\xf3\x6e\x1d\x1a\x96\x58\x72\x4d\x7c\x69\x0a\x84\x6b\x4d\x68\xbf\xd7\x28\x40\xae\x8a\x4b\x73\xb5\x57\x62\xa7\xd3\x02\x92\x17\x25\x95\xa9\xb5\xf2\xb4\x95\x53\x26\x9d\xe5\xbe\x18\x90\x0f\x7f\x2e\xb5\xde\xf4\x43\xcf\x17\x6b\x75\x9a\x26\x15\x7b\x38\x5b\x91\xd2\x0b\xc2\x35\x7a\xe2\xd8\xa3\x6c\xd7\x2f\x54\xa9\xaa\xae\x7c\x70\x59\x93\xf8\xdd\xc5\x88\xb0\xcc\xf1\x86\x66\x74\x6b\x08\x6a\x73\x40\xe9\x8a\x85\xcc\x6a\x19\x09\x3a\xd0\x07\xd9\xf1\xe6\xa5\x60\xe6\x8a\x2f\x56\xc3\xed\xb7\xba\x9a\x23\x47\xfa\x0b\xd6\x92\x96\xf4\x24\x92\x94\xed\xd6\xdd\xd9\xa0\xfc\xf1\x42\xe2\x59\xe4\xf8\xf5\x02\x0b\x1d\x7a\x45\x95\x33\x9b\x37\xf2\x45\x97\x9a\xc5\x92\x6c\x36\x96\x93\xdc\x50\xa1\xed\x46\x4f\xc9\xbe\xbc\x50\x33\x61\x5c\x42\x99\xe6\x1c\xef\xb6\xac\x51\xb3\x48\xae\x9c\x1c\xe1\x57\xba\x43\xb1\xb8\x9e\xae\x32\xd6\x9b\xcc\x37\xfe\x14\x6f\xd2\x8a\x37\x61\x27\x7c\x28\x6f\x0a\x9d\x27\x33\x74\x95\xaa\x30\x04\x95\x5d\x77\x6a\x55\x8a\x19\x94\x1a\x9d\xe9\x26\xcf\xc8\xa2\xd7\xa4\xc7\xeb\xaa\x37\x2a\x38\xfa\xa1\x4e\xe2\xcc\x65\xb6\x8a\xea\x40\xff\x58\xd5\x40\xb7\x21\xb0\xd9\x8d\xe6\x0a\x08\x87\xb6\x23\x8f\x06\x9b\x6c\xbf\x3c\x29\xd8\x15\x6e\xb2\x98\x2c\x0f\xcf\x92\x62\xf7\xc7\x3a\xfc\xf0\x67\xc8\x27\xe7\xdb\x94\xed\xd1\xcc\x3c\xd7\x90\x56\xb3\x66\x86\xb2\x8b\xf2\xcb\x86\xe0\x5a\x6b\xc3\x25\x4c\xad\x56\x18\x4e\x9b\x7d\xdd\xf1\xdb\x2f\x9d\x38\xcc\xc2\x59\xc6\x3c\x29\xbb\xbf\x2e\xe5\x56\xc0\x57\x66\xce\x72\x94\x5b\x97\x7b\xc3\x1e\x87\xfa\x1b\xb1\xf9\xb1\x59\x56\x1c\x6b\x5e\x69\x28\x75\xb2\x8b\x90\x6d\x94\x8b\x59\x20\xe1\x85\x62\x4f\x5f\x41\xd4\xa5\xb2\x6b\x5a\x2f\x6b\x35\x8b\x1b\x55\xb8\xa2\xed\xe5\xa6\xf5\x89\x37\xf3\x39\x51\x6e\x01\x49\x1d\x8e\x27\xe2\x51\xdd\x28\x7b\x9f\x7f\x5d\x2c\x9e\x9d\x79\xd9\xed\x81\x12\xd2\xd9\x57\xa8\x3e\x5b\x44\x4a\xbc\x46\xb5\x8f\x73\x24\xc5\xd1\x48\x10\x28\x5a\x50\x04\xa4\x71\xaa\x02\x04\xc0\xa8\x0a\x45\x51\x82\xc2\xf1\x9a\x0a\x78\x8d\xa2\x39\x8e\x53\x08\xa0\x51\x94\x02\x68\x96\x07\x2a\x03\x71\x55\x13\x68\x56\xa5\xd5\xed\x23\xd8\x44\x34\xac\x1d\xac\x1b\x75\xac\x91\xc9\xe2\x55\xbc\xfc\xb6\xf6\xc6\x4b\x99\x30\x87\x38\x58\xcf\x6c\x42\x90\x8b\xab\x45\x35\xb7\xae\x33\x5e\x56\x82\xb9\xde\x62\x59\x10\x96\x94\xee\x39\x75\x6b\x24\xde\xf0\x39\xfb\x64\x28\xec\xdd\xdc\x23\xfa\x87\x99\x17\x98\xea\xed\x57\xf5\x9f\x56\xb5\xd3\xed\xae\x31\x02\x47\xa8\x48\xa3\x34\x0d\xe7\x21\xce\x84\x15\x06\xc4\xa9\x1c\xa1\x68\x34\xc5\xe1\x94\xa2\x08\x3c\x02\x84\xc6\x71\x2c\x02\x1c\x85\xf3\x0c\xc9\x32\x2a\xc5\xa8\x9a\x4a\x93\x40\xd9\x3e\x28\x3c\xb5\x7b\xac\xdd\x9f\x1e\x95\xdc\xd4\xb5\xc5\x03\xde\x5d\x76\xcf\x3f\xa6\x7f\x0a\x0f\xfa\x3f\x6f\xf7\xb3\x63\xe8\xf7\x0c\xa0\xbf\x7b\xf4\xbc\x55\xf9\x62\x73\xd1\x9c\x28\x15\xb2\x28\x52\xfd\xde\x47\xcb\xa9\x4c\x3f\x06\x38\xae\xbd\xf1\x6e\xb5\xc4\x4d\x71\xa9\xb5\x2c\xf7\x33\xe2\x80\x12\xc3\xa7\xa4\xfb\x4f\xf6\xc8\x1c\xc7\xff\x7f\x32\xf6\x8b\x62\x9d\x71\x2a\x71\xbc\x68\x74\x84\xb1\x39\xbf\x99\x2f\x26\xcd\x6c\xd3\x96\xc5\xb2\xa1\x35\x5a\x83\xbc\x5d\x1d\x2f\xbc\x35\xec\x50\x66\xa1\x91\x6b\x32\x84\x3e\x51\xdd\x42\x11\x64\xe5\xfe\x12\x67\xda\x99\xde\xb8\x8f\x0f\xf4\x89\x83\xe7\xb2\x0d\x89\x96\x41\xa1\x47\x56\xa6\xd0\xa5\x46\xcb\xea\xd4\x50\xe8\x4e\xcb\xa9\x55\x83\x7c\xaa\x44\x75\x66\x13\x7c\xca\x70\x14\xc9\x4e\x4d\x72\x53\x63\x3c\x3a\x03\x3e\x36\x2d\x0a\xad\x9c\x4d\x9d\x6d\xd9\x4e\x6f\x29\xbf\x74\x95\x2e\xbe\x27\x76\xc1\x06\x07\xcf\x48\xbc\xc9\x74\x1c\x1d\x62\xd3\x7c\x85\xfd\x40\x06\xf5\x31\xb5\x4b\x7c\xe7\xcd\xcc\x67\x90\x0e\x29\xae\x31\xf0\x8a\x95\xca\xa6\xdf\xe3\x97\x3d\x63\x94\x05\x39\x9f\xa9\x32\xe1\x50\x13\xf3\x3e\x58\x47\x23\x25\x97\xae\xfb\x12\xaf\x9d\x27\xc7\xf4\x7f\xa2\xff\xf3\x28\x47\xba\xe4\xa2\x2c\x8f\x96\x47\x78\xb7\xe9\x3f\x8d\x52\x7f\x77\x88\xfa\xa4\x71\x47\x87\xce\xb9\xe0\xdc\xf7\x24\x36\xbb\x4f\x95\xe5\xe3\x29\x1e\xd8\x27\x3e\xa2\xdb\x77\xa6\x2c\xe0\xdf\x9a\xae\xd1\xeb\x17\x10\x65\xba\x4b\xa9\xc4\xf3\xb9\x39\xc3\x1a\x1f\xe4\xc6\x33\x8b\xd6\xbc\x64\xb4\x96\xfd\xb1\x9c\x6d\x11\xc3\xda\xa0\x68\xca\x4b\xe8\x97\x72\x83\x4d\xf9\x85\x6c\xfb\x2b\xb6\xda\x9c\x7d\xcc\xaa\x40\xf1\x97\xf9\x6e\x7f\x5c\xec\x97\x46\x3b\x47\x14\x46\x50\xe5\x36\x99\xe5\x87\x38\xa8\x97\x0c\x46\x80\x8a\x90\x87\x79\x9f\xf9\x98\x17\x29\xd5\x9f\x6d\x72\x85\xb2\x89\x13\x94\xd0\x9c\xbb\x7b\x6a\xe9\x4e\x1e\x0f\x8f\xa9\x4e\x9e\x78\xd0\x75\xf2\x46\xec\xe9\x89\x16\xfb\x1d\xee\xbb\xb7\x71\xaf\x04\xc7\xf8\xd1\x1a\xe1\x81\x1a\x31\xc4\x70\xad\x25\xe6\xf3\x29\x9b\x6e\xf7\x0a\xb1\x46\xab\x54\x13\x5b\x43\xac\x22\x0d\xb1\xaf\xfb\x77\xfa\x5f\xf7\x7b\xc1\xcf\xee\xc7\x3e\x3a\xe4\xe3\x77\x11\x77\x2f\xb0\x76\x2f\x51\x4e\xdb\x14\x7c\x38\xd7\xe4\x61\x7a\x0a\xb0\xd2\x98\xed\x14\x24\x49\x45\x9b\x92\x2e\xef\x18\xbe\x78\xa0\xcb\xc3\x74\x13\xe0\x69\xc4\x2f\x68\xc7\xba\x72\xa9\xd9\x95\xb0\xc3\x6b\xde\x9f\x6a\xc9\xef\xb1\xf7\x27\x1b\x70\xda\x07\x87\x4d\xd4\x67\x36\x00\x27\x8e\x01\x7a\x98\x6f\x04\x96\x46\x34\xa6\x26\xc9\x70\xbb\xc1\x33\x7d\x63\x67\xfc\xcc\xa3\x87\xc9\x85\x58\x69\xdc\x0e\x4a\x92\xd4\x8c\xd9\x6b\xb8\xdd\xf3\xe2\x1e\xc7\x94\xb3\x9e\x1e\x67\x1a\x83\x4c\x25\x7c\xac\x32\xad\xd3\xcf\x6c\x84\x4c\x9c\x78\xf5\x3b\x98\xba\xbe\x72\x86\xe3\x4e\x4d\x92\x5d\xb8\x87\xf2\xc2\x96\xc0\x93\x63\xbe\x1e\x26\x79\x00\x4c\x23\x7a\xa4\x2e\x49\x76\xb7\xab\xf0\xdc\xae\xbd\xe4\x41\x67\x8f\x33\x8d\xd0\x52\x69\xc6\x14\x9d\x9d\xaf\xf6\xfb\xf9\x2e\x6c\xc9\x3b\x39\xf0\xed\x71\xd6\x7b\xc0\x54\xe2\x49\x75\x49\xee\xfb\x5d\x7d\x17\x76\xeb\x9d\x9c\x7c\xf7\x30\xe1\x03\x60\x1a\xe1\x23\x75\x67\x8d\x1d\xed\xd6\x7b\x3d\x6c\xc5\xbb\xb8\xeb\x2c\xe5\x64\xc0\xc7\xdb\x11\x83\x4c\x6d\xc9\xb1\xca\xb4\x38\xe1\xa2\xf9\xeb\x6e\x9b\xd5\xf9\x1d\x61\xc7\x27\x26\xfe\x06\xee\x17\x89\x3f\xc4\xfa\xf8\xd0\xc8\x2d\xd9\xf0\x88\xc9\xdb\x76\xb3\x45\xa7\x51\x1e\xe1\x60\x75\xf9\x90\xf8\x75\xdb\x25\xf9\x0d\x53\x3c\x07\x21\x6c\xb7\x77\xf1\x1b\xd6\x2f\x4a\x2d\x09\x8b\xef\x65\x24\xf6\x0f\x00\x4e\x73\xb3\x93\xa3\x30\xef\x25\x7a\x82\x14\x50\xdd\x4e\xf0\x49\xa2\x31\xc1\x13\x3e\x87\x13\x3c\xef\xe5\xb1\x47\x08\xf4\x1f\x7c\x27\x41\xe1\x7c\x3e\x95\x38\x6b\xf4\x11\x0a\x3b\x90\x88\x45\x6c\x0c\xde\x48\x24\x71\x3c\xea\xbd\x44\xe2\x20\x01\x91\x64\xb6\x78\x23\x93\xd8\x81\xae\xf7\xf2\x38\x40\x9c\x73\x8a\x50\x22\x6d\x46\x3e\x9c\x3a\x7b\xaf\xf2\x38\x48\xa0\x3e\xf6\x66\xed\x8d\x16\x38\x3e\x29\xf7\x01\x26\x71\x9c\x2d\x99\x5d\xce\x91\x24\x13\xdf\xb7\x7f\x4a\xe8\xf4\xa8\xdf\xbb\x39\x9d\x40\x9d\xeb\xa2\x84\xe4\xb9\x64\x64\x77\x52\xf1\xdd\x74\x12\x30\xa1\x85\xb6\x59\x4e\x82\x4b\xda\x62\xf3\xdc\xb1\xd6\x18\xb4\xa7\x33\x13\x79\x28\xd4\xf6\xbf\x01\x00\x00\xff\xff\x31\xc0\xd9\x6c\x40\x5b\x00\x00") + +func self_sendCoreSqlBytes() ([]byte, error) { + return bindataRead( + _self_sendCoreSql, + "self_send-core.sql", + ) +} + +func self_sendCoreSql() (*asset, error) { + bytes, err := self_sendCoreSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "self_send-core.sql", size: 23360, mode: os.FileMode(420), modTime: time.Unix(1508958281, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _self_sendHorizonSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x3d\x69\x6f\xda\x4a\xd7\xdf\xfb\x2b\x46\xfd\x42\xa2\x4b\x5a\xef\x4b\xfa\xe6\x4a\x2c\x26\xa1\x21\x26\x2c\x09\x49\x1f\x3d\xb2\xc6\xf6\x18\xdc\x18\x9b\xda\x26\x24\xb9\x7a\xfe\xfb\x2b\x6f\x60\x1b\xaf\x40\x7b\xd1\x55\x6f\x61\xce\x9c\x6d\xce\x36\x73\xec\xe9\xc5\xc5\xa7\x8b\x0b\x70\x6f\x39\xee\xdc\x46\x93\xd1\x00\xa8\xd0\x85\x32\x74\x10\x50\xd7\xcb\xd5\xa7\x8b\x8b\x4f\xde\x78\x77\xbd\x5c\x21\x15\x68\xb6\xb5\xdc\x01\xbc\x22\xdb\xd1\x2d\x13\xf0\x5f\x98\x2f\x74\x0c\x4a\x7e\x07\xab\xb9\xe4\x4d\x4f\x81\x7c\x9a\x08\x53\xe0\xb8\xd0\x45\x4b\x64\xba\x92\xab\x2f\x91\xb5\x76\xc1\x15\xc0\xbe\xf9\x43\x86\xa5\xbc\xec\xff\xaa\x18\xba\x07\x8d\x4c\xc5\x52\x75\x73\x0e\xae\x40\xe3\x61\xda\xe3\x1a\xdf\x22\x74\xa6\x0a\x6d\x55\x52\x2c\x53\xb3\xec\xa5\x6e\xce\x25\xc7\xb5\x75\x73\xee\x80\x2b\x60\x99\x21\x8e\x05\x52\x5e\x24\x6d\x6d\x2a\xae\x6e\x99\x92\x6c\xa9\x3a\xf2\xc6\x35\x68\x38\x28\x41\x66\xa9\x9b\xd2\x12\x39\x0e\x9c\xfb\x00\x1b\x68\x9b\xba\x39\xff\x16\xf2\x8e\xa0\xad\x2c\xa4\x15\x74\x17\xe0\x0a\xac\xd6\xb2\xa1\x2b\x4d\x4f\x58\x05\xba\xd0\xb0\x3c\xb0\xd6\x60\x2a\x8c\xc1\xb4\xd5\x1e\x08\xa0\xdf\x03\xc2\x53\x7f\x32\x9d\x80\xa1\x38\x78\x0e\xe1\xbf\x2c\x74\xc7\xb5\xec\x77\xc9\xb5\xa1\x8a\x1c\xd0\x1d\x0f\xef\x41\x67\x28\x4e\xa6\xe3\x56\x5f\x9c\xc6\x26\x25\x01\x25\xc5\x5a\x9b\x2e\xb2\x25\xe8\x38\xc8\x95\x74\x55\xd2\x5e\xd0\xfb\xb7\x3f\x41\x50\xf1\xff\xf6\x27\x48\x7a\x76\xf5\xe7\x04\x0c\xa8\xa5\xa5\xf3\xa7\xf7\xc5\xae\xf0\x14\x9b\x19\x52\xf2\x27\x4a\x48\xd3\x90\xe2\x3a\x92\xfc\x2e\x59\xb6\x8a\x6c\x49\xb6\xac\x97\xe2\x89\xba\xa9\xa2\x37\x29\x46\xdf\x74\xa0\x6f\x8b\x8e\x64\x99\x92\xae\xd6\x99\x6d\xad\x90\x0d\xb7\x73\xdd\xf7\x15\x3a\x62\xf6\x8e\x93\xa3\xb8\xa8\x37\xd7\x40\xea\x1c\xd9\xfe\x44\x07\xfd\x5a\x23\x53\xa9\x25\x42\x6c\xfa\xca\x46\xaf\xba\xb5\x76\xc2\xdf\xa4\x05\x74\x16\x07\xa2\x3a\x1e\x83\xbe\x5c\x59\xb6\xe7\x31\x61\xd8\x3b\x14\xcd\xa1\xba\x54\x0c\xcb\x41\xaa\x04\xdd\x3a\xf3\x23\x63\x3e\xc0\x94\x42\xd7\x39\x80\xe9\xf8\x4c\xa8\xaa\x36\x72\x9c\xe2\xe9\x0b\xd7\x56\xfd\xd4\x20\x19\x96\xf5\xb2\x5e\x55\x80\x5e\x95\xb1\x14\x40\x41\xdd\xae\x89\x38\x8a\x8b\x95\x27\x78\x71\x42\xd3\x90\x5d\x06\xba\xf2\x20\x17\x6e\x29\xdf\x4e\xc2\x6d\xe5\xf7\x52\xe5\x2f\xb6\xfe\x51\x05\xd8\x0a\xf8\xb0\x4a\x01\x75\xc7\x95\xdc\x37\x69\x55\x8e\xd2\x83\xb4\x56\x55\x21\x51\x55\xb0\x28\x00\x17\x03\xcb\x91\x93\x94\x82\x95\xfb\xbe\xbc\xb5\xdd\x62\xb8\x20\x87\x79\xda\x76\x9c\xb5\x47\xb9\x56\x16\xdb\xae\xed\x0a\xda\xae\xae\xe8\x2b\x68\xba\x15\xf3\x5a\xe6\x54\x69\x55\x33\x93\x6e\x83\x7b\x5d\x0e\xb2\x27\xd6\xa6\xef\xab\xaf\x0a\xbd\x00\xf0\xb7\xe3\x0f\x96\x53\xb1\xd4\xa8\x3a\xf1\x42\x65\x54\xa8\xf8\x2b\x2c\x55\xe4\x60\x6e\xd9\x2b\x69\xa9\xcf\xc3\xdc\x59\xc0\x42\x0a\xb2\x50\xc6\xaa\x26\x14\xcc\xee\x0c\x07\x0f\x77\x22\xd0\xd5\x80\x7a\x57\xe8\xb5\x1e\x06\xd3\x8a\xb8\x73\x4c\xe3\x04\x98\xc3\x45\x29\xc6\xe4\x7f\xab\x2e\x7e\x94\x56\x26\xc2\xe8\x41\x10\x3b\x07\xe8\xcc\x2b\x0c\x1d\xf4\xab\x36\xe5\x04\x92\xca\xb3\x55\x54\x11\x76\x57\x7e\x55\x96\x30\xc7\x37\xeb\xc8\x97\x8d\xa2\xda\xdc\xb0\x50\xa9\x06\x1c\x56\x25\x95\x65\x0b\xfd\xb4\x8e\x2c\xc1\x94\x8a\xb0\x61\xbd\x52\x9d\x9f\xa8\xc0\xa9\xc2\x51\xca\xd3\x43\x60\xe1\x69\x2a\x88\x93\xfe\x50\x8c\x4f\x30\x56\x73\xe7\x97\x11\xb1\xd1\xb9\x11\xee\x5a\x7b\xf8\xbe\x7d\x0a\x36\xf5\x22\x5c\xa2\xcb\xe8\x37\x30\x7d\x5f\xa1\xcb\x70\xca\x37\x30\x51\x16\x68\x09\x2f\xc1\xc5\x37\x30\xdc\x98\xc8\xbe\x04\x17\xfe\x5e\xbf\x33\x16\x5a\x53\x21\xc2\x1c\xe1\xfb\x94\xc0\x98\x1c\x0c\x11\x77\x86\x77\x77\x82\x38\x2d\xc0\x1c\x00\x80\xa1\x98\x44\x00\xfa\x13\xd0\x88\x76\xf1\xd1\x6f\x8e\x8f\xa4\x91\xa6\x1c\x89\x1f\xd2\xdc\x6a\xa8\x54\x9e\x84\x2e\xc5\xe1\x34\xa5\x4f\x30\xeb\x4f\x6f\xb6\x6c\xc5\xb7\xf3\x09\xf2\x3b\x2c\x29\x46\xea\x08\xbf\x87\xc4\x57\xc0\xfd\xe0\xeb\x6a\x3e\x19\x0d\xc0\xca\xb6\x14\xa4\xae\x6d\x68\x00\x03\x9a\xf3\x35\x9c\x23\x5f\x0d\x15\x8f\x1f\x3c\x30\x15\x69\x70\x6d\xb8\x92\x0b\x65\x03\x39\x2b\xa8\x20\x70\x05\x1a\x8d\xd4\xe8\x46\x77\x17\x92\xa5\xab\xb1\x63\x90\x84\xb0\x69\xa3\x0c\x45\xf5\x4d\x78\x27\x68\x64\x04\x59\x4a\x0f\xac\x3d\x9d\xf0\xce\x3e\x01\x00\xbc\xb8\xee\xa2\x37\xd7\x5f\x0b\xf1\x61\x30\x68\xfa\xbf\xc2\xd5\xca\xd0\xfd\x1d\x0c\xf0\x4a\x72\xc7\x85\xcb\x15\xf0\x18\xf5\xbf\x82\x0f\xcb\x44\x9f\xce\xd3\xab\x92\xe7\x72\x91\xc5\x87\xbe\x5a\x8d\xe7\xad\x67\xe7\x60\xf5\xd9\x9c\x4c\x5b\xe3\x69\x60\x33\xb8\xff\x43\x5f\xec\x8c\x05\x7f\x81\xdb\xcf\xe1\x4f\xe2\x10\xdc\xf5\xc5\xc7\xd6\xe0\x41\xd8\x7e\x6f\x3d\xed\xbe\x77\x5a\x9d\x1b\x01\xe0\x65\xc2\x1c\xac\xf6\x34\xa2\x9d\xde\x65\x7d\xae\x9b\x6e\x94\x51\x81\x89\xde\xdc\x57\x68\x9c\x35\x72\x24\x6e\x5c\x5e\xda\x68\xae\x18\xd0\x71\xce\xd3\xcb\x15\xec\xdc\x80\xb2\x80\x36\x54\x5c\x64\x83\x57\x68\xbf\xeb\xe6\xfc\x8c\xa1\xce\x0b\x16\x2a\x08\xbc\x47\x4b\x16\x94\x0b\x5b\xb9\x74\xd3\x45\x73\x64\xa7\x79\xdc\x96\x6b\xd9\x6c\x66\x82\x7b\x85\x5e\x06\x38\x4e\x64\x83\x07\x15\x60\xc6\x04\x9a\xd9\x4d\x28\xd3\xc7\x89\xcd\x36\x8e\xf3\x8f\x19\x6d\x91\x20\x60\x38\x13\x85\x2e\x68\x3f\x97\x48\x14\x94\x7f\xc5\x02\x6d\x71\xa5\x86\xbf\x78\xfb\xc6\x6c\xde\xa2\x82\xe2\x58\xab\x0b\xf1\x84\x66\x97\xf2\x19\x69\xe7\x5e\x49\x3b\xd9\xaf\x9f\xf2\x20\x3f\xfb\x1b\xda\xcf\x39\xd6\xec\xdb\x71\xf6\x90\x8a\x5c\xa8\x1b\x0e\xf8\xe9\x58\xa6\x9c\x6f\x6c\x51\x15\x76\xac\x1e\x42\x3c\xa1\x1e\xa2\x53\xbc\x1c\xde\x62\x47\x6b\x95\xbc\x30\xeb\x54\x2f\x7b\x62\xa8\x96\x58\xd9\xed\x2f\xc4\x96\x8f\x28\xca\x61\x29\x0a\xbb\x85\xa8\x06\xbf\x3d\x5a\x4b\x25\x26\x6b\xed\xee\x72\x53\x7a\x8e\x8d\xa0\x5b\x3a\x29\x80\x5d\xaf\xd4\xca\xb0\x5b\xd3\x09\xbf\xa6\x4e\x1d\xf7\x64\xc1\xd3\x46\x64\xb9\xd0\x90\x14\x4b\x37\x9d\x6c\x1b\xd4\x10\x92\x56\x96\x65\x64\x8f\xfa\xa7\xe6\x1a\xca\x5b\x6b\x7f\xd8\x46\x0e\xb2\x5f\xf3\x40\x96\xf0\x4d\x72\xdf\x24\x2f\x74\x3a\xfa\x47\x1e\xd4\xca\xb6\x5c\x4b\xb1\x8c\x5c\xb9\xb0\x0a\xb1\x35\x67\xc3\x72\xac\xf5\xe7\x6c\x82\x4b\x72\x51\xf5\x28\x50\x1e\x57\xea\x8a\x7c\xda\xf4\x52\x48\xe3\x4f\xa5\x9b\x5a\x82\x1e\x99\x7e\x0a\x69\xed\xa7\xa3\x6c\xf0\x82\xf4\x14\xdb\xce\x9f\xcc\x36\xf7\x6b\xbe\x54\x1c\x48\xf4\x7e\xb2\x61\xfc\x8a\x5c\x09\x44\xf1\x33\xd3\x91\x89\x29\xf8\xc9\xb1\xd6\xb6\xb2\x6d\xbd\xe5\xa4\x84\xc8\xcd\x1b\x8d\xcb\xcb\x3d\x88\x0a\x7e\x10\x9e\xa6\x1c\xab\xce\xb0\xa9\x78\x76\xd2\x3c\x1e\xe6\xb5\x43\xb2\x8a\xdf\x49\xc8\x25\x9b\x6a\x69\x16\x01\x85\x5d\xd6\x22\x90\xa5\xbf\x3c\x99\x00\xfb\xcd\xe1\x12\xb8\x42\x72\x5b\xa8\x02\x8a\x3e\x4b\xba\x23\x39\xc8\x30\x90\x0d\x64\xcb\x32\x10\x34\x83\xb1\xd8\x01\x6a\x66\x8f\xd7\x47\x2b\xf9\x4f\x01\x80\xce\x8d\xd0\xb9\x05\x67\x67\x71\x11\xff\x06\xd8\xf9\x79\x19\xaa\xac\xe9\x91\x54\xff\xb7\x27\x68\x05\x7c\x09\xa1\x53\xe8\x53\x1a\xf1\x19\x2c\xb4\xf5\xec\x73\xc7\x13\x58\x7f\xf6\x49\x72\xc5\x54\x57\x25\xc6\x1c\x93\xec\xca\x4e\x6d\x4f\x93\xee\x4a\xa8\xfc\xa9\x84\x57\x53\xd8\x23\x53\x5e\x09\xb5\xfd\xa4\x97\x37\xa1\x20\xed\x25\x4e\xea\x4f\x68\xab\x91\x7d\xc6\x59\xaa\xbc\xfb\x08\x83\x73\xc9\x9e\xa6\x6a\x66\x2c\x4e\x72\x99\xb0\x3b\xd2\xf9\xe5\x39\xcc\x75\xbd\xbc\xad\xcd\xbf\xb2\x39\x71\xdf\x24\x64\xbe\x22\xc3\x5a\xa1\xac\x03\x3f\xf7\xcd\xdb\x2a\xac\x0d\x37\x67\x70\x89\x5c\x98\x33\xe4\x69\x21\x6f\xd8\xd1\xe7\x26\x74\xd7\x36\xca\x3a\x9b\xe2\x99\xf3\xff\xfc\x77\x57\x5d\xfc\xf3\xbf\xac\xfa\xe2\x3f\xff\x4d\xef\x59\xd0\xd2\xca\x39\x46\xda\xe1\x32\x2d\x13\x15\x56\x2b\x3b\x5c\xfb\x68\x42\xc9\xf4\x25\x92\x64\x6b\x6d\xaa\x8e\xb7\x72\x9c\x0d\xcd\x79\xd1\xa1\x67\x70\x08\xa6\xab\x91\xf7\x44\x8d\xb2\x2a\x2e\x1f\xb8\x8f\xdf\x9d\x2c\xe9\xc1\x4d\x84\x69\xc1\x81\x61\xfc\x68\x26\x7e\x5c\x58\xaf\x70\x3f\x9d\x10\x15\x5b\x94\x85\x42\x15\x16\xfc\x55\x84\xcc\xcd\x9c\x27\x13\xb3\x72\x97\xb7\x50\xd0\x92\x30\x9f\x2d\x6a\x17\xba\x10\x68\x96\x5d\xa1\x57\x00\xba\xad\x69\xab\x44\xc4\xbe\x38\x11\xc6\x53\xd0\x17\xa7\xc3\xbd\x7e\x81\x9f\x1d\x27\xe0\xac\x81\x4b\xba\xa9\xbb\x3a\x34\xa4\xa0\x3b\xf4\xc5\xf9\x65\x34\x9a\xa0\x41\x60\x38\x7b\x81\x63\x17\x04\x0d\x70\xe2\x12\x23\x2e\x29\xfc\x0b\x49\xd3\x1c\x4e\x5f\x60\x6c\xe3\xfc\x5b\x35\xec\x84\x14\x3c\xa1\x94\x50\x81\xfc\x2e\xb9\x96\xae\x16\x53\xe2\x71\xb2\x0e\x21\x52\x5a\x3b\x68\x1b\xe1\x25\xdd\xdc\x7b\x28\xaa\x90\x1c\x83\xe3\x38\x5f\x87\x1e\x25\x41\x55\x95\xd2\x87\x29\xc5\x34\x68\x9e\xe7\xea\xd0\xa0\xa5\x20\x9d\x44\x95\xad\xdf\x79\x2a\x24\xc1\x62\x14\x55\x4b\x6d\x4c\x44\x22\x8c\x36\x15\x48\x90\x2c\xc5\xd4\x21\xc1\x4a\x4b\x4b\xd5\xb5\xf7\xea\x52\x70\x38\x8f\x11\x21\x89\x1c\xd7\x28\x6c\xe8\xd4\xf5\x8d\xbd\xa6\x4e\xc4\x3b\xde\x04\x8d\xeb\xf6\xf8\xfe\xf9\xa6\x3f\x20\x3a\x7d\xb2\x27\x8e\xa8\xf6\xd3\xa0\x77\x27\x76\x07\xbd\xef\x0f\xe2\xfd\x03\x71\xf3\x4c\xfe\xb8\xeb\x4d\x6e\x86\xe2\x43\x47\x18\xb6\x26\x33\x76\xd4\x61\x87\x4f\xc4\x4d\x5a\x3f\xb9\x44\x08\x8f\x48\xe7\xe9\xf6\x9a\x19\x8b\xd4\x50\xec\x0b\xf7\x9d\x3b\xb1\xd7\x66\x49\xa2\x45\x91\xcc\x0f\xfa\x5e\xec\x4e\xc6\x83\xeb\xd9\x2d\x7b\xdd\x1e\x74\xee\x46\x83\x7e\x6f\x48\x4d\x58\xe1\x79\xf6\xf8\xd0\x38\xb4\x6d\xe7\x05\xaf\x12\x0d\x4d\x84\x81\xd0\x99\xc6\xfa\xa0\x5f\x1c\x54\xdc\xd2\x6a\x02\xa2\x09\x5c\x7b\x8d\x2a\xac\xdb\x7e\xb3\xaa\xca\xaa\x1d\xd2\x20\x39\x89\xa4\x89\x5c\xdc\x04\x78\x33\x68\xee\x96\x0b\x9a\xd5\x20\x39\xd4\x3e\xa3\x26\x49\xcc\x72\x38\x9a\xe3\x79\x92\x63\x38\xde\x67\x0a\x6b\x82\xc6\x3f\x9f\x1d\xd7\x8b\xb6\xe6\x5c\x92\xa1\x01\x4d\x05\x7d\xbe\x04\x9f\x71\x0c\xfb\x82\x05\x9f\xcf\xff\xcb\xb3\xcd\x34\x01\x3c\x49\x80\x68\x02\xd2\x27\x10\xec\x9e\xd3\x68\x9b\xe0\xf3\xae\x2d\xe8\x0d\x9a\xd0\xd5\x5f\x51\x75\x72\x29\x79\xc8\x26\xc0\x03\x81\x36\x48\x9f\x2f\x3c\x7a\x78\x13\x7c\x0e\xd4\x25\xbd\xa0\x77\x8f\xc6\xa1\x9e\x53\x8b\x2b\x9c\xe0\x38\x8a\xc7\x68\x9e\xa3\x7d\x35\x13\x29\x2d\xd0\x27\xd5\x41\x82\x5a\x86\xce\x2b\x52\x2b\x31\xcc\xac\x8e\xd5\xa1\x86\x19\x75\xad\xe2\x71\x93\x21\x55\x9e\xd3\x68\x92\x41\x88\xe1\x54\x5c\x26\x58\x99\x96\x39\x5e\x23\x48\xa8\xd1\x24\x8e\xcb\x2c\xcd\xf0\x90\xa0\x34\xa8\xe1\x14\x46\x42\x15\x93\x69\x42\x66\x48\x52\xc6\x58\x19\xf1\x7c\xa3\x19\x94\xf6\x9e\x4d\x7b\x56\x80\xf3\x2c\x76\x81\xe1\x17\x18\x0e\x30\xec\xd2\xff\x2f\x9d\x40\xf8\x4b\x8c\xba\xa4\xa8\x2f\x1c\x49\x63\x34\x57\x3a\x4a\x11\x3c\xc5\x33\x2c\xc1\x33\x81\xa1\xe1\xd8\xde\xc7\x27\x8d\x63\xf1\xc1\xf0\x3b\x96\xb3\x9e\x69\x55\x10\xbe\x2a\x18\x85\x61\x34\x0e\xd3\x18\x4d\xe3\x08\x8d\x25\x64\x5e\x65\x59\x8c\x25\x28\x45\x21\x34\x16\xd1\x2c\x81\x69\x14\x62\x14\x85\x44\x94\x8a\x11\x2a\x45\x72\x1c\x4b\x10\x48\x65\x28\x1a\xa2\xc6\x69\xd4\x89\xfb\xff\xed\xeb\x84\xe4\x73\x55\x45\x61\x38\x51\x3e\x1a\x38\x2d\x45\xf3\x44\x81\x22\x71\x2c\x5b\x95\xde\xff\xb8\x8a\xca\xf4\x3c\x81\xe3\x18\x4a\x55\x11\x87\xcb\x2a\xc1\xab\xaa\x0c\x09\x46\x43\x24\x47\x61\x08\x67\x09\xc8\x61\x48\x21\x09\x12\xd2\x24\x45\xca\x1a\x64\x69\x56\x51\x28\x92\xc3\x59\x96\xd7\x18\x99\x66\x14\xba\x71\x9a\x05\xc9\x53\x26\x95\x6f\x95\x0c\xc5\xb2\x64\xe9\x68\xe8\xfd\x38\xc7\x71\x05\xda\x24\x4a\xb4\x59\xe2\xfc\x15\xfa\x77\x87\xc6\x82\x9c\x5d\x62\x4e\x4a\xc1\x73\x56\xbe\x04\x4b\x2a\x53\x10\x87\x61\x21\xd3\xb1\xf6\x34\xcd\xbf\x93\x54\x1c\xc5\x1b\x65\x3f\x29\x54\xab\xb4\x72\x5a\x60\x47\x2f\xef\x4e\x8d\xf1\x95\xd8\xfe\x9d\x8b\xd5\x23\xda\xda\x54\x91\xed\x67\xeb\x03\x8b\x69\x3f\xd3\x05\xd5\xe6\x51\x49\xbf\x09\x2a\x14\x47\xbf\xa1\xe8\xcf\xd0\x5a\xb2\xa6\xd8\x7e\xa1\xb6\xa1\xe5\x9f\xcf\xae\x75\xac\xb0\x9a\x6d\x2d\x8f\xc5\x51\xaf\xf0\x38\xd1\x66\x26\xc7\x98\x33\x9a\x8f\x75\xb6\x0d\xf9\x58\xcb\xdb\x3c\x87\x3a\x4c\xee\x71\x52\x56\x44\xe4\xf2\x23\x62\x29\x1e\x22\x89\x27\x2f\x26\x96\xe2\x21\x53\xe6\x98\x1f\x15\xeb\x36\x4e\x4e\x11\x17\xcb\xce\xd5\x6a\x44\xc6\xdc\x2e\xc9\x09\x96\x3a\x7e\x04\x46\xb2\x14\xf2\xea\x23\x5e\xe6\x91\xc6\xaa\x32\xe4\x21\xad\xca\x24\x49\xf2\x32\xcb\x69\x2a\xe4\x34\x92\x62\x59\x56\xc6\xa1\x46\x92\x32\xa4\x18\x0e\xaa\xb4\x82\xa9\x1a\x4f\x31\x2a\xa5\x06\xdb\xea\xa3\x8e\x22\x82\x98\xe2\x97\x08\xf9\xb5\x1c\xcb\xe6\x97\xcc\xd1\x68\xdc\xc0\x1a\x2d\xef\x73\x3d\xe0\x6e\x46\xaf\xa3\x17\xf9\x96\xb8\x69\x91\xb3\xc7\x9f\x63\xfb\x76\xf9\xf3\x09\xc3\xb4\x6b\xce\x19\xf4\xd9\x25\x26\x8c\x37\xdf\x67\x5f\x5b\x4f\xa4\x07\xfe\xa3\xb5\xfd\xb4\x5b\xc9\x4f\xfa\x7b\xcb\xfe\x25\x32\x03\x34\x84\xf3\x9f\x6f\x77\xf0\xe1\x9e\x67\xda\x1f\x9a\xc3\x23\x4c\xb1\x6c\xf1\xc7\xd3\x47\x7b\xf6\xfd\xa5\x67\xdd\xb2\x2f\xaf\x2f\x1b\x1f\x7e\x48\xdb\xb7\x71\x7c\x8f\xaf\x9b\x1e\xef\x0d\x09\x9d\xee\xc7\xaf\xd7\x97\x51\x7b\x64\x89\xad\xef\xba\x76\x3f\x7e\xea\x5a\x83\xc5\xab\xfb\xae\x4c\x49\xa3\x77\xdf\x19\xd1\xf8\xfc\x45\x75\x7a\x37\xb0\x2d\xce\x36\x18\x3d\xf9\xfa\xb8\x98\x61\x4f\xf3\x17\x1b\xeb\xb4\xef\x05\x4a\x84\xbd\x47\xe2\x76\xa9\x38\xe4\x8f\xcd\x60\xa9\xcb\xd4\x74\x6c\xdf\x0d\x1a\x91\x0e\x7c\x3d\x8c\x76\x94\x47\x69\x49\xfc\xcf\x55\x02\xbe\x25\x78\x7f\x74\x76\xdf\xfb\xbb\xbf\xde\x32\x3f\x91\x4e\xfe\x5c\x5a\x7d\x6e\x7a\x6d\x74\xbf\xa2\xb9\x42\xb2\xf7\x4f\xee\xcd\xed\xed\xc7\xec\x91\xdb\x3c\xea\x3f\xda\xb0\xb3\xa6\x07\xf4\x9d\x0f\xdf\x5d\xc3\xf7\x79\x2b\x85\x6f\xef\xb3\xa7\xdf\x24\xbf\x31\xfa\x35\xd6\xb4\x8b\x3a\x84\x43\xbc\x7e\x17\x7f\x6c\xca\xe4\xcf\xa4\xbf\xd5\x89\xcf\xff\x5d\x0a\xae\xad\x7f\x6d\x63\x03\xec\xfb\xf5\xbb\xbb\xd8\x88\xb8\xf1\x8c\xc1\xf7\x95\x85\xf3\xe2\xcd\xdb\xeb\xa0\xf3\x3e\xa4\xdd\xb6\xa0\x74\x82\x75\x26\xe7\xae\x3d\x34\x7f\x14\x28\xa0\x84\xbf\x8c\x35\xa9\x4f\xff\xf9\xeb\x5f\x4a\x0a\x5f\x45\xfa\x57\xbe\x7d\xfc\x33\xe7\x18\x9b\x16\x5a\x0f\xb7\xdd\x51\xe7\xd9\xfc\xc0\x1e\x37\x4c\x87\x92\x59\xc5\x14\x78\x7a\x3c\xdd\xbc\x0c\xd5\xe7\xef\x37\x72\x7b\x4c\xcc\xa7\x8f\x8e\x38\x7c\x78\xc5\x9f\x1f\xdd\x1e\xf5\xfd\x96\x6f\xcd\xa7\x6f\xc3\xee\x6c\xf1\xa8\xea\x2b\x73\x20\x12\x4a\x87\xb6\x96\x7f\x09\x18\xfc\xe8\x6c\xae\xae\xfc\xcc\xec\x37\xd2\xa2\x7d\xb5\xf7\x67\x79\x8e\x88\x05\x32\x8d\xe6\x59\x5c\x45\x1a\xa9\x69\x18\xa7\x60\xb4\x82\x08\x82\x40\xac\xca\xe2\xb2\x46\x91\x2c\x46\xca\x32\xcf\x21\x88\x6b\x2c\xcb\x20\xc8\x92\x18\x47\x13\x0c\xad\x92\xb4\xaa\xa9\x14\x01\xe5\x20\x36\xe3\xc7\x54\x08\xb1\xbd\x26\x59\x16\xd1\x18\x9a\x21\x0b\xb6\x5b\xe1\x68\x22\xd5\x05\xa6\x58\xd3\xfd\x02\x93\xeb\xb7\x8a\x43\x5a\x60\x0a\x75\x43\x5a\xf0\x19\x30\x5c\xcc\x3b\x5b\x30\x1a\x6f\xb7\x9c\x99\xbd\x64\x20\x77\x3d\x72\xf4\xc7\x59\x0f\x91\x86\xb3\x11\xfa\x1c\xd7\xf9\x45\x33\xfa\x4f\xe2\xc3\x35\x6e\xcc\x5f\x7d\x7d\xbc\x99\x2d\xc4\xf6\x18\x7f\xbe\x7b\xba\x31\xc4\x8d\xb2\xee\x77\x9e\x3e\xbe\xff\x45\x4c\xd6\x6f\xcc\x60\xb4\xfa\xb9\x1a\x40\x79\xbd\xe9\x3e\xcc\x16\x37\xb3\xfe\x8f\xc8\x14\xb7\xf4\xb2\x43\x5b\x5c\xd6\xac\xd0\x96\xe5\xda\x31\xd7\xea\xac\x2d\xd2\x72\x29\xfa\x57\xe7\x5e\x78\x5b\x8d\xbe\x92\xd6\x8d\xf8\xd7\x07\xce\x8e\xdf\x75\x07\x37\xb4\xbb\xde\xf3\x72\x34\x9b\xdb\xeb\xc9\x5f\xd3\x60\x02\xbb\x74\xac\xd6\x0e\x5f\xce\xa7\xd8\xb5\xbb\xc7\xd1\x5f\x2a\x3b\xfa\x07\xb8\xf6\xef\x5a\xac\x5c\xd7\x2e\x7c\xf3\x28\xfb\x45\xd8\xed\x9b\x57\xd1\xd3\x55\x75\xbb\xa8\x29\xac\x7e\xf3\xbd\xd5\xed\xc6\x9f\xd7\xca\x22\x0c\xee\xc7\xfd\xbb\xd6\xf8\x19\xdc\x0a\xcf\xe0\x4c\x57\xcb\x3a\xf3\x87\xbd\x48\x7c\xb4\x74\x49\xb2\x59\xc2\x1d\xc4\x18\x78\x10\xfb\xa3\x07\x01\x9c\xed\xc0\x9b\xb1\x57\x6c\x9a\x89\x17\x62\x6a\xaa\xe6\x34\xcb\x5a\x5b\xf0\x5a\x8b\x9a\x73\x4e\x53\xe5\xed\xf7\x93\x49\x96\x4d\xa4\x48\xd2\x02\xb6\x2a\x4b\x9e\xbb\x1b\x2b\xdd\xef\x9c\x56\xfa\x3c\x32\x45\xf2\x17\xb2\x56\xaa\x81\xf4\x55\x0e\xa1\x28\xfe\xc5\x0f\xd5\x1e\x53\x0b\xee\x88\x48\xe1\x01\x43\x31\xed\x10\x0f\x93\xbe\x78\x0d\x64\xd7\x46\x28\xf2\xb0\x1c\x4f\x8a\x5d\x43\x71\x28\x3b\x3b\x14\x71\x4e\x12\x05\x55\x92\x9f\x00\xb8\xb9\xf7\x90\x5a\x16\x73\xfe\x45\x1a\x47\x70\xe6\x3f\xab\x57\x89\xad\xf4\x13\x7e\x59\xdc\x84\xb7\x7f\x1c\xc1\x4f\x80\xa1\x1a\x47\xa9\xc7\x07\x9b\xfb\x4f\x0a\x66\x3a\x59\xfc\x3a\x93\xfa\x9c\x86\x71\x39\x60\x38\x85\x2e\xce\x76\xd4\xc5\x4b\x70\x9c\xf5\x54\x7b\x33\x7a\x82\x3d\x8f\xd9\xdd\x63\x4c\x47\xb2\xa9\xab\x95\x19\xdc\x3d\x21\xdc\xcc\x7c\x14\xbf\x84\xe9\xe8\x06\x9a\x53\xf0\x1d\xe2\x8a\xb3\x9e\x93\x1c\x0e\x92\x24\x5b\x80\xe8\xb2\x9d\x53\x08\x10\xe2\xca\xb1\xe9\x03\x45\x48\x3e\xee\xbd\x2f\x44\xec\x6a\xa1\x43\xbd\x31\x86\xe3\x50\xe5\x17\x2b\x3a\x75\x57\xd2\xb1\xba\x4e\xa2\x8b\xb3\x1c\x35\x0d\x13\x3c\x66\x73\xb4\x7f\xdf\xd3\xf1\x6c\xed\xe1\xac\x16\xde\xb2\x18\x8c\xdd\x5c\x75\xf0\xb2\xee\x70\x1c\x6e\x92\x65\xe6\x97\xb8\x8c\xeb\x70\x4e\x63\x58\x52\xbc\xaa\x28\xc5\x59\xf4\xb6\x4e\x36\x2f\xa9\x9b\xc4\x8e\xe2\x28\x89\xab\x8c\xaf\xbd\xb7\x55\x32\xf9\xdb\xbb\x1c\xed\x28\x0e\xd3\xd8\xca\x78\x4c\xbc\x61\xd3\xdc\x7b\xc1\xa6\xb9\xf7\x16\x55\x8e\x10\x27\xf0\x96\x10\x4f\x19\xc7\x35\x73\x52\xfa\x4e\xbb\xa3\xb4\x5b\x43\xb1\xa5\x7a\x2b\xbf\xac\xef\x48\x85\x96\x12\x48\x54\xc7\xd1\x83\x88\xc9\x7a\x34\x00\xac\xc1\xfb\xf1\x76\x50\x84\xbb\x9c\xe3\x0c\x2f\x2b\xbe\x8a\xf1\x50\x7b\x28\xc4\x5a\x5a\x6c\x79\x40\x25\x8c\x66\xde\x39\x79\x1a\x6e\xb3\x50\x97\x26\xcd\xaa\x96\x9c\xbc\x64\xf3\xa4\xc6\x90\x40\x7d\x48\x96\xaf\x7e\xab\xe8\xc9\x15\xbd\x77\x83\x40\x29\xfb\xa9\x09\xd5\x85\x89\x5f\xb2\xfa\xbb\xf4\x1f\xbf\x34\xa2\x4c\x92\x18\x6c\x75\x21\x32\x2f\x9d\xfd\x5d\xd2\x64\xde\x85\x51\x26\x56\xd6\xa4\xea\xf2\x6d\xef\xe4\xfd\x5d\x32\x6d\xdf\x6f\x2b\x93\x23\xf7\x8c\xa1\xe4\x2e\xe2\x93\x32\x9e\xc6\x9e\xb9\xed\xa8\xeb\xe0\x85\xd7\x30\x9f\xc6\xc3\x8b\x48\x54\x91\xa1\xa4\x9a\x2e\xbd\x94\xfa\xb7\x48\x91\xca\x60\xb9\xbc\x97\x27\xb1\x8c\x4b\xb8\x4f\x6a\x36\xfb\xf8\x0f\xde\x60\x15\x5d\x3b\x7e\xa8\x96\x0b\x70\x96\x96\x08\x67\x67\xd1\xa5\x0e\x17\x7f\xff\x0d\x1a\x8e\x65\xa8\xb1\xae\x41\xe3\xf2\xd2\x45\x6f\xee\xf9\x79\x13\xe4\x03\x2a\x96\x5a\x0d\x30\x38\x01\xcd\x07\x95\xad\xf5\x7c\xe1\x56\x22\x9f\x00\x2d\x66\x20\x01\x9a\x62\xe1\x1c\xcc\x6e\x84\xb1\x10\x18\x19\xb8\x02\x24\x59\x72\x07\x45\xf6\x9d\x04\xa9\x7b\xe7\xc3\x75\xec\xdd\x9e\xe6\x90\x5c\x45\x65\x47\xe2\x79\x9c\x80\xde\x70\x2c\xf4\xaf\xc5\xe0\x40\x3c\x05\x71\x0e\xc6\x42\x4f\x18\x0b\x62\x47\x98\xec\x95\xbb\x25\xfd\x83\x5c\x4d\x24\xee\xfb\xff\x17\xf5\x10\xe7\x23\x4b\x0b\xd1\x5e\x39\x53\x07\xfe\x11\x7e\x7d\x0d\xe4\xfd\x23\x0b\xff\x8a\x1a\x72\x98\x49\xea\x62\x1f\xe8\xc4\x46\x91\xfd\x0f\x5d\xfc\xbb\x0a\xc9\x37\x8d\xbd\x93\x94\xaa\xd6\x91\xf7\x6f\xae\x00\xc5\x5a\xae\x0c\xe4\x22\x5f\x86\xff\x0f\x00\x00\xff\xff\x3f\xe7\x65\x7f\xa0\x65\x00\x00") + +func self_sendHorizonSqlBytes() ([]byte, error) { + return bindataRead( + _self_sendHorizonSql, + "self_send-horizon.sql", + ) +} + +func self_sendHorizonSql() (*asset, error) { + bytes, err := self_sendHorizonSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "self_send-horizon.sql", size: 26016, mode: os.FileMode(420), modTime: time.Unix(1508958285, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _send_to_issuerCoreSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x59\x93\xa3\x3a\x97\xed\x7b\xfd\x0a\xa2\x5e\xf2\x9c\x70\x9d\x93\x4c\x12\x50\x75\xab\x23\xf0\x3c\x63\x1b\xcf\x37\x6e\x54\x08\x49\xd8\xd8\x18\x6c\x06\x4f\x1d\xfd\xdf\x6f\x18\x4f\x78\x4c\x67\x3a\xeb\xeb\xaf\xa3\x8f\x1f\x72\x30\x9b\xbd\x97\x96\x96\xa4\x2d\x01\xc2\x0b\x1d\xc7\x72\x06\x8c\x47\xb1\x35\xa5\x5f\xb6\xbf\x18\xd3\x72\x2c\x7f\x48\xc9\x37\x06\xdb\xae\xbf\x39\x6e\x53\x32\xa0\xde\x97\xed\xaf\xe8\x5b\x4a\xbe\xfc\xf5\xd7\x97\xbf\xfe\x62\x6a\xae\x1f\x0c\x3c\xaa\xd7\xcb\x0c\x41\x01\x32\x90\x4f\x19\x12\x4e\xa6\x9b\xc3\x9b\xe3\xe9\x70\x32\xa5\x84\x31\x3d\x77\x72\x34\x98\x53\xcf\xb7\x5c\x87\x51\xfe\x86\x7f\x83\x98\x95\xb1\x62\xa6\x83\x5f\x9b\xd3\xcf\x4c\xbe\xe8\x99\x26\xe3\x07\x28\xa0\x13\xea\x04\xbf\x02\x6b\x42\xdd\x30\x60\x7e\x32\xec\x8f\xe8\x90\xed\xe2\xf1\xe5\xb7\x16\xb1\xe9\x2f\xcb\xf9\x15\x78\xc8\xf1\x11\x0e\x2c\xd7\xf9\xe5\x53\x7f\xe3\xf7\xd2\x18\xdb\xd6\xc6\x35\x75\xb0\x4b\x36\x65\xfe\xc9\xbc\xb4\x9a\x59\xf9\xe5\xc7\x3e\xb6\x43\x90\x47\x7e\x61\xd7\x31\x5d\x6f\x62\x39\x83\x5f\x7e\xe0\x59\xce\xc0\x67\x7e\x32\xae\xb3\xf3\x31\xa4\x78\xfc\xcb\x0c\x9d\x6d\x2c\xc3\x25\x16\xdd\x1c\x37\x91\xed\xd3\x93\x30\x13\xcb\xf9\x35\xa1\xbe\x8f\x06\x91\xc1\x02\x79\x9b\x8a\xd8\x9a\x78\xee\xe2\x97\x4f\x71\xe8\x59\xc1\x6a\xe3\xdc\x34\x7f\xec\x08\xa0\xc8\xc3\xc3\x5f\x53\x14\x0c\x99\x9f\xcc\x34\x34\x6c\x0b\x7f\xdb\x30\x86\x51\x80\x6c\x77\xf0\xe3\xcb\x97\x74\x43\xab\x31\x85\x6a\x3a\xd3\x65\x0a\x59\x26\xd3\x2d\xe8\x4d\x7d\x67\xf9\xb7\x6f\x0d\x1c\xea\xf9\x08\x63\x37\x74\x82\x1f\xf7\x6d\xa9\x6d\x5b\xce\xc0\xf2\xfd\x90\x7a\x96\x43\xe8\xf2\x0d\x7b\x3c\x9d\x85\xae\x17\x4e\x7c\x63\xe5\xd3\xd9\x9b\xc6\xd4\x99\x3f\x62\x39\xf5\x2c\x4c\x1f\x08\xbf\x55\xe6\x23\x1e\x87\x96\x1f\x98\x94\x3e\x68\xf9\x80\x99\x11\xae\xde\x43\xd4\x8e\x7d\x03\xd9\xc8\xc1\xd4\xff\xf1\x45\x2d\x37\x33\x0d\xa6\xa9\x26\xcb\x99\x98\xb5\x56\x2d\xf7\xf6\xa7\x04\xcb\x0d\x14\xd7\x5b\x31\x91\xe3\x94\x56\xd5\x9b\x0d\xb5\x50\x6d\xc6\xec\x0f\x36\xbf\xa6\x63\xba\x7a\xcc\xab\x49\xe9\x23\x8e\x8f\x66\x8f\xfb\xf6\x42\x3f\xb0\x2d\x87\xfa\xf7\x3c\x1f\x8c\x1e\xf6\xbb\x41\x41\xa3\x6e\xe0\x8e\xdf\xa3\xd1\xe3\x7e\xb7\x2d\xe3\x9e\xd3\xad\xc5\xe3\x1e\x0f\xed\xe1\x9e\xd3\x83\xd1\xc3\x7e\xa7\xa1\xe1\x87\xc6\x1d\x9f\x5b\x83\xf7\xf8\xb3\x2d\x7f\x38\x0b\x69\x78\x8f\xd3\xb8\xd9\xe3\xbe\xe9\x7d\x4e\xa3\xe3\x0f\x7b\x73\x4d\xf3\xbe\xbb\xad\xc1\xc3\xfe\xb6\x5d\xc6\x90\x22\x72\xdf\xed\x89\xdd\x6f\xf6\xbe\xeb\xc6\xe8\xec\xd7\x83\x61\x0c\xe4\xdc\x71\x6e\x20\xe7\x61\xc0\xbb\x7e\xe9\x1e\xd6\xbd\xc9\x7b\x7d\x6e\x86\xfd\xb7\xdd\x6e\xac\x76\x9e\x23\xdb\x73\xc7\xe7\x9d\xe1\x5b\x66\xc7\x6e\xeb\x0d\xcb\x43\x37\x74\xdf\xee\xd8\xad\xbc\x61\xb7\xed\x29\xde\x30\x3a\xb4\xfc\x37\xed\x1e\x2a\xc4\xb6\xd5\xbf\x69\x73\x68\xc3\x6f\x58\xd2\x37\x0b\xb0\x6d\x6c\xf7\x6d\x4e\xb4\x7d\xdf\xd4\x40\xce\x7d\x83\xbd\xf6\x1e\xb2\xda\x48\x69\x67\x98\xe9\x36\x33\x55\xbd\xa0\x55\xe3\xc6\xf6\x74\xe0\xcf\xec\x9d\x85\x9e\xca\x67\x2a\xea\x85\xaf\x1f\xbb\xfc\xb6\x8a\x26\xf4\xfb\xfe\x3b\xa6\xb9\x9a\xd2\xef\xbb\x53\x7e\x30\x3a\x1e\xd2\x09\xfa\xce\xfc\xf5\x83\xd1\x16\x0e\xf5\xbe\x33\x7f\x45\x69\x6f\xaa\x91\x51\x9b\x99\xbd\xe7\xbd\xbf\x2f\x27\x1e\x4f\x0f\xee\x1c\xa7\xb4\x4a\x25\x53\x6d\xde\xf1\xbc\x35\x60\xb4\xea\xa9\x03\xa6\xa0\x33\x2f\xfb\x1c\x75\xff\x9d\x1f\x39\x79\x39\x8f\xbc\x2f\xfe\x2e\xe6\x81\xa1\x37\xcb\x73\xc2\x65\x55\x6b\x9e\xf1\xc9\x74\x0a\xcd\xfc\x01\x56\x3c\x29\x3d\x09\x7f\xf4\x72\x06\xe4\x3d\x85\xbf\x70\x12\x11\x50\x2b\xbf\x4e\x07\x9b\x99\xc8\xd4\x73\x31\x25\xa1\x87\x6c\xc6\x46\xce\x20\x44\x03\x1a\xd1\xf0\x60\x12\xbd\x31\x23\xd4\x44\xa1\x1d\xfc\x0a\x90\x61\x53\x7f\x8a\x30\xdd\xcc\x08\x5e\xce\x8e\x2e\xac\x60\xf8\xcb\xb5\x48\x2c\xc9\x3f\x29\x6c\x5c\x90\xbb\x62\x46\xd2\x3d\x16\x72\x2f\x80\x6b\x84\x6f\x55\x1e\xef\x45\xff\xf8\xc2\x30\xcc\xfe\x1b\x8b\x30\x78\x88\x3c\x84\x03\xea\x31\x73\xe4\x6d\xf2\xd0\x3f\x00\xfc\x33\xaa\x9b\x6a\xab\x5c\xfe\x16\x59\x6f\x4e\x74\xd0\x84\x5e\x31\x86\xe2\x35\xe3\x39\xb2\xc3\x6b\xd6\x1c\xc7\x9f\x9b\xdb\xc8\x0f\x26\x2e\xb1\x4c\x8b\x12\xc6\x72\x02\xba\x99\x1f\xa6\x33\x59\xb5\x55\x6e\x32\xec\xc1\xf8\xcb\x9f\xe7\x2a\x38\xb4\xe7\x27\x59\xf1\x3f\x44\xc9\x2e\xfb\x66\x0c\x6b\x60\x39\xc1\xd9\x41\x9f\xce\x9c\x70\x72\xfd\x98\x13\x4e\xfc\xd0\xa0\x4e\xe0\x6d\x26\x76\xfb\x02\x9f\xda\x58\x8e\x69\xa3\xcd\xfc\x8f\x50\x3f\xb8\x0e\x67\x6b\x38\x74\x27\x94\xb8\x13\x64\x39\x57\xac\x84\x0b\xae\x83\xa1\x47\xfd\xa1\x6b\x13\x9f\x09\xe8\xf2\x1c\x99\x69\xa3\xc1\x2d\x44\x57\x6b\xe9\xd4\x24\x36\x32\x1f\x86\xf9\x1d\x4b\xbf\xa2\x59\x2d\x93\xca\x67\x52\x25\xe6\x8f\x3f\xf6\xdc\xfd\xc7\x4f\x86\xfd\xf3\xcf\xdb\x67\x9f\x50\x75\xe6\xe3\x94\xc6\xad\xa7\x4b\x8d\x6c\x06\x85\x8f\xca\x63\x93\x18\x6d\x95\xe1\xb8\x84\xc6\x65\x71\x22\x87\xcb\xa0\xa7\x83\xd6\x47\xc3\x9f\xa6\x7f\x5b\x20\xbb\xef\x90\x3f\x8c\x81\xb9\x6c\x81\x53\x8f\xce\xdf\x34\x32\x42\x3c\xa6\x81\x6d\xf9\xc1\x9b\xa6\x87\x9c\x72\x5f\xf3\xdb\xaf\xa3\x45\x9c\xc0\x9a\xdc\x68\x04\x51\x6f\x73\x45\x66\xb1\x9a\x3e\x4d\x5d\x0f\xfe\xce\xaa\xfa\x18\xe7\x86\x60\x6e\x65\xc0\xa7\x6e\x8e\xa5\xb8\xa5\x96\x5d\x46\xf2\xd1\x1a\xdb\x4d\x2f\xfe\xd8\x75\x01\xb6\x4d\xbd\x07\x3b\x93\xe8\x4c\x8b\xdc\xea\x4c\xa2\x75\x14\xe4\xfb\x34\x08\x56\x53\x7a\xa3\xf9\xc5\xcd\xb0\x4b\xae\xf6\xbe\xfc\x9f\x27\xb6\xdb\x15\x87\x7b\xfd\xcb\x76\x65\xe2\xad\xd0\x31\xab\xb7\x22\xc7\x97\x3a\xee\x05\x46\x93\x4d\x17\x70\x9d\x90\x68\x45\xc7\xb9\x81\x25\x3a\x78\xab\x8b\x8a\x0e\x32\xc4\x0d\x0d\x9b\x6e\x5a\x09\xb6\xa2\x05\xc2\xdf\xd5\x0d\xee\xa6\x93\xdb\xb2\x9c\xa9\x71\x57\xc0\x1b\x8a\xde\x9d\xb9\xd3\xc5\xd9\xa9\x7b\xb5\xdc\x92\xf1\x36\xf7\xfe\xa8\x8a\xb7\x53\xee\xad\x88\xad\xe9\xb5\xba\x04\x17\xfd\x8d\xeb\x05\x77\x86\xee\xdd\xb8\x47\x97\x01\x0a\x02\x3a\x99\x06\xcc\xa6\x31\xfb\x01\x9a\x4c\x99\x4d\xf6\xe3\x86\xdb\x6f\x98\xb5\xeb\xd0\xcb\xd1\xd2\x44\x96\x1d\x7a\xb1\xb1\xf2\x56\x84\x18\x7f\xdb\x75\x81\xd8\xc9\x97\xa3\xc7\xc1\xed\x8d\x2a\xd8\x2d\x2d\xb8\xde\x79\xcd\xfd\x11\x15\xf7\x3f\x18\xf6\x4f\x46\xad\xa6\x99\xed\xbf\xff\xe7\x27\x03\x01\x10\xc0\x9f\x57\x2b\x24\x3e\x6d\xfa\x70\xbd\xc4\x97\x59\xe2\xc3\xc1\xad\xfe\x20\x5a\xe3\xda\xf4\xbf\x57\x01\x6d\xe6\x7a\x4f\x40\xf1\x43\x63\x07\xc2\xa3\xfe\xc9\xd8\x78\x99\x75\x6c\x1a\x8d\x47\xd1\xa1\xc1\x5c\xe2\x89\xcd\x51\x3f\x8a\xe9\xe8\xe2\x91\x41\xfb\xc6\xb8\x76\x76\x9c\x3a\x73\x6a\xbb\x53\xfa\xc6\x28\x76\x0c\xfd\xc4\xd8\x13\x9b\xce\x3f\x41\xc1\x7e\xc1\x70\x4b\xc1\xcc\xa7\x0f\x0c\xee\xc8\x0f\xde\x22\x62\xe3\xe8\x6d\x12\xf6\x0b\x91\x27\x1e\xcf\x89\x38\x89\x76\x93\x8c\xdd\x02\xc8\x87\x99\xd8\x2d\xc6\x7e\x24\xb1\xdf\x7a\x1f\xd3\xd5\x43\xd6\x0b\x6a\x0d\x86\xc1\x05\x6d\x57\x8a\x74\x5c\xfb\xf9\x70\xa9\x8e\x4b\xd7\x7f\x1c\x9b\xf8\xe9\xbc\xec\x4a\xf3\xbb\xd7\x11\xc4\x56\xae\x3e\x8a\x2a\xb6\x50\xff\x11\xba\xdf\xca\x2d\xee\xa5\x0a\xd7\x5c\xdd\x4e\x40\xce\xe7\x42\xb6\x35\xb1\x6e\x64\x18\x77\x27\x77\x9f\x97\x1f\xc4\x2e\x5f\x7c\x68\xa2\x14\x3b\x7f\x5b\x9a\xb3\xd3\x77\x45\xfc\x8f\xeb\x8d\xec\x64\x7d\xf3\xc3\xb5\x1f\xbf\x04\xb4\xad\xff\x60\x79\xd2\xed\x3e\x30\x9d\x38\xaf\x99\x65\x74\x11\xec\xe6\x51\x3c\x44\xce\x80\x5e\x9d\xc2\xc6\xc9\x89\x5f\x75\xfa\x78\xbf\x7c\x5c\x2c\xfe\x38\x45\xff\x62\x7e\x0c\x97\xac\xae\x91\x13\x2c\x3d\xea\x87\xf6\xd5\x9e\x3c\x58\x4e\xe8\x9b\xd3\xb5\xe3\x15\xc2\x8f\xf0\x99\xde\xcc\x07\x4d\xd7\x7b\x63\x5d\x8b\x49\xab\x4d\xf5\x0d\x7e\xef\xbb\xf4\xdf\xed\xaf\x50\xd5\x33\x8d\x26\x53\xa8\x36\xb5\xe3\xaa\x50\x5b\x2d\xb7\x32\x3a\xf3\xc7\x4b\x2e\xd9\xa8\xf5\xf2\x85\x32\x9f\x2a\x08\xd9\x6a\x5d\x4c\x76\xcb\xd9\x4a\x35\x5d\xce\x16\x5b\xd5\x5a\x8b\xcf\xf7\x84\x7e\x25\xab\xe7\xb5\x6a\x2b\x95\xd1\x54\xbd\x23\xd5\x53\x92\xd6\xe5\xf3\x2f\xdf\x18\x65\xf7\x91\xb6\xbf\x64\x96\xfd\xc6\xf0\xdf\x18\xf6\xdb\x96\x60\xe6\xe5\xe5\x1b\xf3\xa2\xd6\x55\x55\x55\x7f\xfe\x7c\x89\x0e\xf0\x7f\xfe\x78\x0b\x4f\x8a\x17\xea\x59\x3e\xdf\xca\x00\x5e\xad\x74\x5b\xd9\x56\x5e\x50\x7b\x45\xb5\xdb\xcd\x75\xbb\x6d\xbe\x9d\xef\xf6\x7a\x0d\x98\xe9\x75\x33\xcd\x5a\x29\xdd\xed\xeb\x6a\x07\x4a\x5d\x4d\x3c\xe2\xd9\xc0\x90\x81\xac\x28\x82\x08\x14\xe1\x3e\x1e\xf1\x01\x3c\xdd\x52\x0e\x36\xaa\xa2\x56\x2d\x64\x6a\xa9\x4a\x35\x9b\x94\x04\x5e\x15\x05\xd8\x07\xb5\x6a\x5a\x6f\x94\x73\x9d\x92\x94\x4b\x96\x53\x95\x7a\xb9\x90\xd5\x44\x5d\xca\xf4\x3a\xed\xd6\x01\x8f\x7c\x82\x47\xfc\xc6\x70\x77\xf0\x80\xdb\x92\x3a\x5f\xed\x79\x42\x4a\xb7\xd7\x70\xde\xab\xa7\xd3\x75\x9c\x03\x69\x50\x20\x8a\x6c\x02\x01\x52\x0a\x65\xc2\x19\xbc\x64\x00\x43\x56\x4c\x5e\x40\x26\x10\x38\xce\x90\x00\x54\x10\x2f\x9a\xc8\xe4\x44\x56\x40\x84\x35\x00\x6f\x40\x41\x30\x58\xc9\xa0\x8a\xb2\x21\x86\x7d\xf2\xb3\xf1\x01\x24\x1e\xf1\x54\xe0\x4d\x93\x17\x65\xc4\x4a\x06\x4b\x25\xd6\x24\x9c\x09\x89\xc0\xc9\x98\x33\x11\x26\x3c\x6b\x40\x8c\x59\x19\x0b\x02\x01\x92\x04\x78\xa0\xc8\x50\xe6\x78\x80\x38\xf8\x12\xd5\x16\xbb\xa9\xa6\x7f\xdb\x4f\xb2\x5b\xb2\xc4\xd5\xeb\x4a\x2f\x25\xa5\xb4\x93\x56\xf2\x3c\xbb\x1c\x25\x13\x3e\x3b\x08\xfc\x45\x61\xb1\xe6\xba\x44\xef\xf4\x50\xb2\x88\xb2\x83\x8d\x7d\xa6\x2a\x96\xd1\x7a\xca\xd7\xdf\xf4\xdc\x57\xbb\x9c\x18\x99\x25\xc7\xff\x82\x82\x7c\xea\xe7\xe5\xac\x61\xdf\x10\x2a\x12\xa8\x09\x65\x45\xc2\x54\x92\x05\x13\x28\x50\x64\x39\xc2\x2b\x0a\x91\x01\xe4\x30\x96\x64\x93\x40\x81\xa5\x84\x0a\x04\x13\x01\x60\x99\xc7\x22\x82\x18\xb2\x14\x53\x0c\x0d\xb4\x11\xd9\x67\x88\x1d\x21\xd9\xe0\x90\x21\x2a\x26\x60\x4d\x4c\x09\x27\x71\x84\x43\x12\x47\x31\xc2\x06\xc7\x19\x84\x02\x41\xe1\x45\x2c\xb3\x12\x2f\x63\x24\xf1\x86\x20\xb3\x1c\xe5\x45\xd6\x50\x04\x04\xc9\x4b\xd4\xf3\x72\x80\x95\x15\x20\xf3\xca\x5e\xb1\xa9\x5c\xad\x3f\xe2\xaa\x21\x70\x59\xa3\x28\x75\x44\x67\xa5\xcd\x5b\xcb\x9c\xd0\x9e\xba\xe3\xc4\x3c\xab\x6a\x41\x8a\x2b\xf1\x15\x29\x29\xc1\x7e\xab\x48\x15\x0d\x8c\xd5\x75\x75\x1d\xbe\xc2\x29\xdb\x2f\xba\x7d\x59\x1e\xb2\xcd\x74\x68\x08\x61\xcf\xb7\xfb\x45\x09\xeb\x7e\xa3\x33\xd8\x32\xdc\x31\xd3\x83\x56\xf4\x77\xe1\xf0\x63\xdb\x99\x1d\xbf\x54\x17\xaa\x5a\x5c\xee\xaa\xc4\xa9\x17\x4a\xd6\xa2\x2e\xad\xb8\xd5\x00\x2a\x99\x06\xeb\x65\x12\x72\x10\x74\x96\x23\xa2\x2b\x64\x3a\xf4\x0a\x92\x41\x1c\xd8\xd3\xe1\xcc\x5a\xce\x58\x87\x4b\xcb\x52\x03\x93\x9c\x93\xf7\xbd\x72\xc6\x10\x6c\x4d\x6f\x16\x92\xab\x51\x09\x7b\x9a\x9a\xb7\xea\xe5\x31\x34\xa2\x78\x85\x2b\x8a\x4e\x17\xae\xa9\xe2\xa0\xe8\x14\x7e\x5b\xfe\xff\x66\x9f\x07\x15\xad\x70\xbc\x8c\x39\x05\x02\x99\x13\x4d\x49\x01\x08\x9a\x02\x31\x15\x88\x14\x60\x00\x93\x4a\x90\x42\x88\x4d\x11\x28\x50\x40\x26\x85\x0a\x92\x45\xc8\x9b\x90\xca\x0a\xc7\x01\x20\xf2\x91\x1a\x3f\xa1\x55\x20\x22\x2a\x26\x85\x26\x4f\x29\xc7\x2b\x3c\x4f\x78\xc3\xe4\x05\x51\xe6\x78\x0c\x24\x49\x01\x80\x08\x80\x18\x32\x42\x88\x20\xc5\xe4\x30\x95\x11\x67\xf0\x50\x84\x02\x27\x13\x28\x0b\x2f\xdf\x18\x21\xa6\x68\x6e\xaf\xe8\x52\x6d\x8e\x8a\xa6\x46\xd3\x4a\xbf\xaf\xe6\xf5\x09\x19\x76\xf2\x15\x5a\xe3\x46\xe9\x40\x54\xd6\xcd\x6e\xa1\x9c\x99\xfa\x3d\x6d\xed\x23\x38\xce\x64\x1a\xcb\x9e\x05\xfd\x4a\xcb\x4b\x63\xd1\x5a\xeb\x0d\xcc\xb5\x07\x49\xed\xb5\xe7\x0f\x15\xd0\xd4\x7a\x3a\xea\xbc\x26\x17\x96\xd6\x8b\x18\x8e\x14\xbd\x38\x32\x5e\x2e\x97\x6a\x46\xc5\x1d\xe5\x13\x8d\x46\xa2\xa9\x27\xd3\xa5\x5c\xf2\x35\x08\xcd\x3c\x3f\x29\x73\x3c\xc6\xa9\xbc\xc7\x15\x1d\x5e\x5a\xd5\x52\x81\x6e\x82\x79\x39\xcc\x4c\x0b\x41\xe9\xb5\xc0\x0e\xf4\x65\x97\xb6\xbb\xcd\xae\x61\xcd\x3c\xe4\x2c\xd7\xae\x6b\x14\xc7\xbd\xe5\xa8\x33\x88\xfc\x57\xae\x28\x36\xe3\x5f\xab\xf5\xff\x05\x8a\x95\x38\x11\x21\x96\x37\x21\x6f\x12\x56\x66\x45\x05\x53\xc3\x10\x79\x9e\x43\x1c\xe0\x21\x67\x88\x0a\x0f\x38\xa8\x98\x86\x69\x72\xd8\x10\x78\x08\x14\x91\x15\x14\x4a\x78\x9e\x83\x1c\x1f\x29\xf6\x93\x54\x0f\xa8\x2c\x49\x2c\x26\x14\x62\x73\x23\x64\x19\x53\x6a\xf2\xb2\x81\x38\x91\xc8\xb2\x88\xb0\x8c\x25\x02\x05\x53\x04\x80\x40\x16\xf1\x9c\x69\x48\x22\x35\x0d\x45\x12\x09\x78\xf9\xc6\x88\x31\xc5\xf2\x7b\xc5\x16\x33\xee\xa2\xdf\xef\x65\x6b\xb4\x3d\x9d\xd7\x4c\x7b\x66\x1b\xdd\x04\x09\xfb\xbe\x92\xb5\x47\x5e\x02\xa1\x61\xae\xcc\xc3\x62\xa6\xdd\x4e\x75\x87\xc6\x6b\xdb\x4f\x96\xf2\x03\x5c\xaa\xf3\x46\x69\x40\x9d\xe9\xc8\xaa\x2e\x12\x6b\xbe\x97\x6f\xa5\x7a\x6d\xc2\x26\x54\x6e\x55\x6a\xe5\xb7\x62\xd9\x28\xb6\x1d\x63\xbc\x3a\x77\xeb\xc0\x64\x87\x62\x57\x0b\xf9\xf5\x9a\x54\xa7\x09\x1e\xf5\xb2\xd6\xba\x53\x79\x6d\x5a\x25\x3f\x95\xf5\x06\xb3\x44\xde\x6b\xc3\xd2\x08\xd0\xa1\x90\xae\x02\xff\x35\x17\xba\xeb\x50\x76\xc3\x61\xb3\x37\x2c\xad\x2a\x66\xa7\xc6\xb6\x49\xaf\x54\x30\x03\x56\x92\x6c\x96\x8b\x74\x57\xbf\xa2\xd8\xdc\x55\x45\xfe\x2f\x50\xac\x01\xa9\x24\x40\x8e\x33\x21\x14\x09\x4f\x45\x20\xb3\xec\x56\x60\x10\x09\x94\x28\xb2\x48\x44\x9e\x23\x02\x2b\x20\x88\x59\x91\x4a\x3c\x15\x11\x82\x84\xe3\x0c\x4e\x31\x14\x69\xa3\xb6\xcf\x50\x3d\x04\x1c\x64\x59\x82\x58\x85\x13\x09\x67\xf2\x92\xc0\x0a\x82\x6c\x88\x78\x93\x6a\x18\xa6\xc1\x21\x93\x95\x29\x35\x37\xa9\x2c\xab\x70\x32\x91\x65\x85\x62\x91\x45\xbc\x81\x4d\x42\x37\x7d\x2c\x88\x29\x56\xd8\x2b\x36\x9f\x2d\xb9\x29\xc5\x7a\xad\x0f\x32\x8e\x16\xb2\x85\xa1\xdb\x2e\x0e\x83\x62\xb1\x81\xcc\xf9\x6b\xbe\x5c\x99\x74\x5a\x2a\x90\xf4\x42\x27\x63\x8d\x0b\xb2\x46\x27\x99\x41\x32\x59\x65\xcd\x62\x49\x29\xcd\xd7\xad\xa1\x95\xe2\x6b\xbe\xb9\x5a\x72\x10\x0c\x88\xd5\x58\xcd\xfc\xca\x54\xc6\x11\xc3\x91\x62\x63\xba\x98\x2d\xf4\xa5\x97\x35\x64\x1a\xcc\xc4\x81\x4e\x96\x9a\xa5\x64\xb9\xd2\xc8\xa8\x54\x8c\xe4\x30\x5d\x24\xa5\xee\xaa\xd4\x98\xad\xb2\xcd\x62\x60\x67\x07\x69\x94\x6a\x34\x1b\xb2\x53\x49\x6b\xe5\x66\xcd\x5b\xce\xa5\xdc\x3c\xa5\x49\x9c\xdb\x49\x35\x46\x3d\x8b\x2e\x55\xd7\x5b\x2b\x62\xd4\xc7\xb6\xae\x28\x36\xcf\x5e\xab\xf5\xff\xe9\x8a\xbd\x31\xcb\xbb\x72\xc1\xf7\x89\x39\xe3\xe5\x75\xb7\x67\x9c\xdd\xba\x66\xf4\x9c\xcf\xf3\xcb\x3e\x4f\x78\xbb\x71\xd1\xe6\xbd\xf3\xe3\xd8\x85\x9b\xe3\x8a\x82\xaa\xf6\xc5\x5e\x29\xdb\xce\xe7\xf3\x05\x58\x11\xdb\xfd\x46\xb6\xd5\x12\x41\x45\x6f\x75\x2a\xdd\x4c\x89\xaf\x55\xab\xaa\x26\xe5\xba\x5d\xd0\xce\xf4\x3b\xed\x3c\xc8\xc2\x66\x3a\xdf\xda\xe6\xf8\xbb\x99\x68\x8e\xf6\x5a\x9d\xe9\xda\x69\x00\xa7\x04\xac\x8e\xad\x91\x7e\xc9\x9e\x74\x0b\x5e\x93\x0f\x54\x09\x78\x82\xd4\x9a\x18\xed\x1a\x3b\x9f\x1e\xb5\x12\xa5\xc4\xa9\xe8\xcf\x8d\xce\x33\xc3\xba\x2d\xb1\xd2\xa4\x9e\xae\x08\x9a\xf4\x3a\x73\x1a\xe3\xc9\xd0\x59\xaf\xf2\x8d\x8a\x06\xe6\x14\x58\xab\xf6\xd8\x09\x96\xa5\x65\x16\x6d\xcf\x4f\xf6\x65\x2d\xa9\x47\x7f\x0e\x0e\x3f\x92\x47\xa7\xd1\xff\xe9\x4d\xa6\x9f\x39\x06\x4d\xca\xf6\xa2\x6b\x65\x96\x53\x76\x16\x68\x61\x6e\x20\xae\xc6\x76\x65\xd1\x09\x0a\x25\x42\xd6\xc2\x32\x99\xab\x17\xad\xb0\x95\x18\x24\xa6\x49\x3f\x72\x87\xb4\x12\xaa\x29\x61\x97\x17\x79\x71\xb6\x34\xdc\x7e\xee\xb5\x3e\x69\x79\x8e\x85\x93\x45\xb9\xa7\xf8\xd9\x71\x98\x2d\x37\xab\xce\x6c\xd2\x70\x90\x98\x6d\x96\xbc\x1a\x99\x97\xbc\xae\x3c\xb6\xfa\x45\xb8\x90\xeb\xbc\xb6\xc6\xe5\xd5\x6b\xd9\x41\x81\xab\xce\x94\xfc\x4c\x11\xd2\x83\x9f\x3f\xcf\xfb\xf6\x4f\xae\x1a\xe1\xa9\xaa\xa9\x9c\x56\x4d\x3a\x55\xaf\x37\xf2\x59\xab\x3c\x5b\x2c\x75\xbf\xba\xb6\xca\xd5\x62\x76\xdd\xee\xa8\x19\x49\xb1\x56\x79\xc1\xae\x80\x61\x71\x6a\xc8\xf9\x54\x01\x0c\x0e\x55\xd3\x3c\xeb\x1b\xde\x4d\xbd\xa5\xf9\xde\x44\xb4\x8a\x02\x0c\x80\x9e\x82\x78\x0d\x68\xb7\x33\xf1\x94\x02\xc9\x59\x43\x5f\xc9\xd7\xd0\x90\xd4\x12\x68\xc4\xeb\x9e\xa2\x79\xd3\xd6\x30\x1f\x16\xe4\x8c\xd5\x09\x3a\xea\x5a\x59\x41\x1d\xd5\xd6\x59\xd6\xd5\x6d\xbf\xb5\x48\xdb\x52\x23\xdd\x4d\x85\xa9\x94\xfa\xdb\xa9\x17\x9f\xa2\xbe\x7e\x46\x7d\x92\x66\xe7\x4a\x67\x91\x71\x69\x72\x31\x4d\xf7\xfd\x59\x12\xd2\x89\x56\x10\xd2\x52\xad\x3f\x20\xf5\xe2\xb0\x2d\x34\xc5\x74\xb7\x30\xad\xd3\xc5\x81\xfa\xd6\xb3\xd4\x1b\x35\xdb\x6e\x54\xb3\x72\x69\x3a\xc9\x2d\x78\x3c\xa9\x95\x48\xc5\x0f\x47\x7e\x2b\x74\x16\xb5\xac\xd1\xa4\xfe\xec\x75\xa6\x4f\xb4\x85\x05\xa5\x44\xca\x1f\xb4\x14\x87\xe0\xca\xc4\x18\x54\xd4\x56\x6e\x98\x4d\xa3\xa0\x9f\x18\x97\x03\x9d\x9b\x57\x65\x5d\x6f\x0b\x69\x75\x0d\x93\x8b\xdf\x4e\x3d\x78\x8a\xfa\xd6\x85\xea\x47\x0b\x00\x7b\xba\x9a\xc9\x08\x0d\x79\xec\xb1\xb3\xd7\xaa\x9e\x2b\x94\x7b\x89\xe5\x6b\x39\xdf\xf5\x26\x49\xbe\x98\x2f\xcd\x16\x2b\x67\x79\xa4\xbe\xfd\x2c\xf5\x2d\x39\x98\xcd\x07\xe5\x69\x46\x2d\x39\xa6\x98\x9d\x94\x4a\x20\xbf\xe2\xd7\x6c\xe0\x65\x5f\xe9\x28\xa5\x70\x63\x8d\x88\x95\x8a\xee\x48\x61\xae\x5a\x12\xa9\x88\xc4\x26\xd1\xd3\x4e\xa2\xec\x13\x71\xad\x49\xc1\x2a\x6c\x15\x42\xb9\x69\x36\x8a\x35\x43\x6d\xda\x42\xd5\x76\x92\xf5\x2d\xf5\xb7\x47\x97\x6b\xd7\xc3\x3f\x30\xba\xec\xaf\x89\x1f\x2a\xd3\xe4\x01\xe6\x24\x59\x16\x31\x54\x08\x8f\x0c\x91\x1a\x32\x94\x05\x19\x23\x51\x11\x31\xe6\xa0\x21\xca\xbc\x42\x24\x49\x20\x26\xc7\x8a\x50\x64\x15\x19\x51\x20\x50\x59\xa0\x48\xe4\x8c\x78\xa5\x46\x4d\x63\xd7\x97\xf7\xc1\xb0\x81\x1c\x8d\xe4\x27\xd8\x9b\x14\x51\x0b\x70\xe3\x59\xa7\x8f\xad\xa0\x86\xd8\xf4\x7c\x32\x37\x03\xbd\x1f\xb4\x5e\xf5\xc4\xf8\xad\xbc\xe4\xda\xf5\xef\x67\x46\xea\xeb\xd7\x9e\xdf\xcd\xe5\xf1\xfa\xf3\x81\x4b\x1b\xf9\xc1\xf6\x61\xce\xdd\xcd\x28\x67\x9f\x4d\x0e\xfe\xf4\x5c\xe0\xbc\x81\x5e\xc1\xb1\x6b\xb1\xc8\xc3\x43\x6b\xbe\x3b\x78\x8e\xe3\x3f\xa3\xeb\x59\x5f\x77\x8f\x85\x7e\xfd\xce\x70\xdb\x2b\x5c\x5f\x7d\xea\xcd\xa9\xf7\xf5\x3b\xf3\x75\xce\xfe\x0d\xff\x16\xfe\x82\xf0\xaf\x01\x81\x10\x48\x00\x9b\x5f\x77\x46\x38\xf4\x3c\xea\x04\xe5\xa8\x98\x5f\xbf\x33\xe0\xf4\xfb\x64\x74\x3b\xa5\xff\xf5\x3b\xf3\x7f\xbf\xec\x83\xfe\xe7\x97\x38\x84\xc8\x72\x13\x84\xe7\x20\x22\xa6\x8c\x64\x96\x70\x26\x54\x78\xc3\x94\x58\x0e\x4a\x0a\x34\xa0\x2c\x51\x93\xb2\x26\x00\x1c\x2b\x29\x26\xc0\xbc\x84\x29\x05\x00\x13\x2a\x2b\x12\x27\x0a\x04\xf2\x18\xec\x10\x1d\xfc\x3a\x74\x19\x7c\xfd\x7e\x16\x6d\x5b\xb0\x0d\x0f\x5f\xbf\x33\xec\xc9\xa1\xff\x3a\x3b\xdf\x77\xd0\x74\x83\x8b\xe5\x65\x89\x15\x24\xde\x34\x20\xc7\x49\x84\x98\x26\x2b\xf3\x48\x94\x78\x45\x66\xb1\x88\xb1\x80\x15\x20\x01\x83\x02\x48\x09\x96\xb0\x2c\x29\x0a\x87\x0c\x99\x03\x84\x1a\x26\x8b\xe8\xd7\x2f\x57\x22\xdc\xe0\x80\x9a\x02\x87\x78\x16\x09\x8a\x4c\xa9\x24\x60\xca\xf3\xbc\x04\x28\x92\x39\x49\x92\x64\x68\x20\x0c\x44\x08\xa0\x29\x08\x04\x63\xd1\x14\x4c\x8a\x21\x4b\x00\x20\xc4\xe4\xa0\x40\x94\xf7\x73\xc0\x7d\xbb\x3c\xe6\x86\xc1\x34\x0c\x3e\xb7\xec\x77\x19\x7e\xf2\xf3\x1e\x86\x9f\x8e\xf5\xbb\x54\xf6\x0f\x07\xff\x70\xf0\x0f\x07\xff\x70\xf0\x0f\x07\xff\x70\xf0\x0f\x07\xff\x70\xf0\xfb\x38\x88\xfe\xfa\x7f\x5f\xfe\xeb\x91\x09\xc4\x7e\x63\x99\xed\x13\xaf\xe7\x65\xd8\x4e\x20\xc0\x23\x8e\x4c\xd7\xc3\xd4\xc7\x53\xd7\xd9\x30\x62\xa3\xd0\xc1\xc3\x73\x47\xd1\x73\x9e\x8f\x38\xdb\x4c\xaf\x7c\x3c\x8d\x1e\xa5\xba\xf6\x79\xd9\xcf\x43\xb7\x77\x1c\x24\x9d\x49\x36\x3b\xc3\x80\xa5\xfd\x55\xd8\xb3\xa7\x4d\xa7\xa3\x4f\xfb\xf6\xaa\xc4\x2a\x5e\x5d\x4b\x20\x25\xc1\x15\x27\x5c\x53\x29\xc3\xe3\x2a\x7e\x36\xfa\xf9\x5a\xc4\x59\x71\x58\x41\xa4\xe4\x35\xbd\xa1\xab\x55\xa6\xc5\x66\x25\xeb\xe9\x29\xa7\x8b\x15\xb9\xde\x18\xa7\x7a\x9e\x5d\x73\x6b\xb3\xba\xf1\xd9\x8b\x11\xd1\xe2\x5e\x31\x55\x4b\x3b\xd3\x61\x41\xad\x37\x49\x7e\xa5\xcf\x75\x4f\xe6\x0a\xbd\x41\x30\x92\xf2\xb2\x4f\x68\xd8\xcb\xf7\xc6\x78\xe6\xa5\x4b\x66\x7e\x8b\xda\x59\x88\xd9\xb3\x25\xa5\x4c\x32\x9b\xd6\x39\x7e\x4c\x7c\x10\x0a\x5a\x01\x50\x38\x0e\x97\x43\x71\x00\x67\xed\xd7\x9e\xde\x4e\x26\x07\xe9\xee\xbc\xe8\x5b\x8a\x49\xd6\xe9\xdc\xa0\xd7\x0b\xe4\x39\xf1\x04\xa3\x9e\x6a\x35\x04\xd6\xee\x75\x55\xe0\x98\x5a\xba\x9a\x1f\x8d\xa9\x12\x06\x01\x0c\x53\x4d\x41\xae\xfe\xb3\x78\x73\x6d\xf1\x26\xaa\x84\xa5\x3e\x53\xe7\xbd\x39\x5b\x48\x16\xd7\x5e\x90\x2a\xa0\xac\xde\x33\x74\xbd\xd5\x71\xa4\xd7\xe5\x6a\x5d\xb4\x6d\x55\xa3\xac\x95\x1d\x16\x06\xc7\x75\x12\x6f\x56\x85\x65\xaa\xa1\xc1\x68\x59\x41\xad\x9a\x02\x93\x6b\xd3\x57\x28\x8b\x5d\xaf\xda\xef\xae\x93\x9d\xe2\x38\xeb\x96\xa4\xf1\x7c\xbc\x38\xde\x57\x15\xbb\x61\x26\x56\xe1\xc7\x3f\xb7\x4b\x94\x5c\x98\x24\x79\xb7\x19\x0e\x2a\xf3\x7a\x90\x96\x92\xc3\x42\x59\xa8\x52\x85\xb4\x6b\x66\xae\x90\x28\x5a\xa0\x38\x6f\x69\x89\xbe\x1a\x48\x11\xbf\xd9\x76\x8b\xdd\x35\x84\x72\x47\xcc\xb2\x74\xa8\x41\x75\xa5\xa4\xd8\x9a\x9f\xcb\x0c\xe6\x98\x93\x38\xae\xa5\xc8\xbd\x91\x38\x29\x8f\x27\x4a\x5d\x02\xe3\x94\x30\x8f\xce\x64\x87\x3c\x8c\x43\x41\x07\xbc\xaa\x13\xc8\x73\xd7\x5d\xf1\x95\xda\x14\xb6\xf5\xb4\x2b\x36\x04\xdd\x4a\x24\xb2\x21\x22\x63\xa1\xb2\x46\xee\x22\xd9\x5c\x54\x8d\x72\x38\xd3\x3a\x3a\xc9\x34\x2a\xa3\xf6\x5a\x28\x4e\x3b\xd9\x92\x1f\x76\xc0\xbc\x54\x1a\x8d\x9b\xd9\xbe\x37\xea\xcb\x99\xfa\x62\x49\x5d\x31\xdd\x29\x26\x8f\xfc\x25\x8f\xe5\x7d\x77\x7b\xbf\xb7\xe0\x76\xe3\x51\x80\xf7\x2e\x12\xc5\x1e\x07\xf8\x8c\x1b\x44\xb9\x6f\xcc\x33\xf7\xbb\xbe\xb4\xf4\xf4\xcb\x37\x46\xe1\x79\x41\x90\x78\x56\x80\x32\x10\x25\x09\xc8\xac\x14\xdd\x7b\x1a\x1b\x36\xa2\x50\x77\xee\x2d\xbd\x79\xb7\xfc\xbb\x09\x8a\xdf\x31\x7f\xbc\x1d\x14\x42\x08\x20\x82\x14\x11\xca\xb3\x32\x8f\x81\x24\xb3\x40\xe2\x78\x28\x11\x85\x8a\x22\x10\x28\xa5\x40\x92\x39\x8c\x14\x04\x64\x84\x04\x4e\xa1\x06\x6b\x52\x59\x10\x01\x30\xf7\x77\xb7\x9d\x0c\x07\x95\xa3\x5c\xb6\x6a\xb1\x5e\x93\x6c\x99\x2d\xe6\x56\xc1\x70\x51\xe5\xec\x1e\x8b\x56\x53\x97\x53\xaa\xf9\xe5\xbc\x9c\x5a\x69\x20\x48\x66\x70\xaa\x3d\x5f\x64\x95\x85\x30\x08\x3c\xcd\xe9\xab\x0f\x7c\x6e\x5e\x10\x8e\xe4\x9a\x7a\x26\x7e\xef\x35\x81\xaf\x36\xf7\x37\xe3\x5f\x2e\xeb\x5f\xe7\x9d\xa5\x94\xe3\x08\x31\x44\x99\x93\x10\xe4\x20\x30\x59\xc8\x63\x5e\xe6\x25\xc1\x30\x01\xcf\x11\xc5\x30\x29\xc1\x48\xa4\x48\x60\x45\x53\x32\x08\x25\x3c\x36\x64\x4a\x44\x9e\x37\x24\xba\xe5\x9d\xbf\x5c\x0e\x7e\xb2\xdc\xb2\x78\x3c\xff\xea\x7d\x7a\x4f\x96\xdb\x20\xa2\x0c\x89\x41\x08\xcb\x13\x11\xb2\x32\x27\x41\x89\xc3\x22\x02\x48\xa2\x0a\x81\x54\x86\x00\x23\x5e\xc1\x86\xc8\x51\xc8\x13\x09\x21\x53\x62\x11\x6f\x52\x0a\x0c\x01\x12\xba\xbb\xf7\xec\x52\x6f\xb1\x72\xa7\x42\x57\x70\x03\x11\xcc\x52\xb5\xcc\x72\x5a\x7f\x15\xdc\x7c\x35\xb1\xe6\xa4\xc6\xca\xf2\x39\xdb\xac\x64\x7b\x93\x7a\x67\xe0\x85\x7a\x62\x77\x59\x4e\x9a\xf8\xae\x7a\xf4\x77\xe3\x73\x5f\x6f\xe9\xe7\xe2\x4f\xf0\x31\xfe\xef\xd0\xdb\xa6\x3d\x0b\x06\x01\x00\x41\x85\xe5\x21\x2f\x12\x56\x30\x05\x59\x01\x06\x56\x38\xc3\x94\x15\x6c\xb0\x82\xa4\x18\x12\x20\x82\x42\x81\xa1\x48\x04\x0b\x44\x14\x65\x04\x29\x05\xd8\xd8\xdd\x41\x75\x9f\xf7\x77\x0e\x83\x9f\xc2\x7b\xe6\xb9\xf8\xbf\x9d\x77\x81\x95\x38\xc2\xf2\x8a\x2c\x20\x22\x1b\x12\x2b\x09\x82\x21\x53\x0a\x78\xc4\x29\x92\x08\x90\x00\x21\x91\x38\xcc\x99\x92\x08\x00\xa7\x28\x92\x24\x50\x09\xca\x02\x21\x08\xb1\x02\xd8\xdd\x07\x74\xc9\xfb\x67\xeb\x2d\xf9\x4e\xde\xb3\xcf\xc5\x1f\x8b\xc7\xf8\x85\x77\xc4\xbf\x7b\xed\xee\xfa\x33\x53\xef\x1f\x28\x7f\xf7\x28\x99\x2b\xcb\xf9\xfa\xbc\x3e\x36\x4a\x7c\x5e\x15\x3a\xed\x51\xc3\x2b\x4d\x46\x5d\x96\x35\x73\xb2\x5f\x2e\x48\x13\x36\xd3\x58\x14\x3b\xaf\x6a\x57\x50\xa3\x9b\xa0\x0e\x9f\x73\x96\x2e\x58\x0b\x8c\x41\xb7\x01\x33\x92\x9b\x2e\xb3\xe5\x7a\x62\xd1\xd3\x53\xca\xba\x3b\xef\xb6\x9b\xc2\xd2\xaa\x59\xbd\x50\x37\xb8\xf4\x7c\x52\x2f\x53\x39\xb2\xd7\x80\x57\x8a\xfb\xdb\x8e\x06\xd1\xa4\x86\xa4\xbb\x94\x17\x5a\x22\x55\x52\xbc\xbe\x9c\x26\xcb\xfd\xc6\x92\xf3\x8a\x6b\x3d\x5b\x2e\xb2\xcb\x74\x9a\x0d\x4b\xb9\xe9\x64\x66\x98\x76\xba\x99\xe8\x76\x0b\x33\xd8\xb2\xd2\xc9\xf5\x24\xbb\x0c\x12\x39\x2d\xd1\x9d\x65\xdd\x7a\x8d\x78\xdd\xa6\x34\xe5\xdc\x72\xbf\x90\x9f\x35\x2b\xb5\x4d\x6e\xd4\x9f\xf4\x3b\xd3\xd0\xa3\x85\x42\x39\x4b\xd5\xf6\xb2\xe8\xf0\xb4\x91\xad\x85\xa0\x3b\xc0\x33\xd4\x29\xb9\x4b\xc7\x4b\x27\x06\x6c\xdb\x3c\xde\x13\x76\x87\x83\xa3\x32\x4e\x1e\x06\x39\x1f\x0d\x63\xa3\xd9\x3b\x93\x6e\x35\x1d\xa2\xd5\xb6\x87\x4a\x5d\x8f\x7d\x0f\xd7\x5e\xc9\xb1\xf8\xef\xa8\xff\x34\x4d\xf1\x3e\x3f\x2f\x56\x9b\xb1\x2e\xf2\x7a\x6f\x79\x35\xfe\x65\x2f\xf5\xbb\x53\x91\x8f\x8b\xfb\x9c\xdc\x8b\x02\xbd\x6f\x06\x77\x4f\xdc\x6a\x3f\xa5\xeb\x59\xa3\x55\x2a\x58\x85\xe6\x30\x29\x24\x0b\x79\x93\x0b\xc1\x80\x9d\xa7\xf5\x7e\x9d\x4d\xa5\x45\x33\xa9\x26\xa6\xb5\x59\xab\xfe\xaa\x90\x85\xae\xe9\xe5\x44\x35\x57\xe9\xf7\xe7\x36\x4f\x8b\x1d\x96\xa7\x5a\x23\x33\xd2\xc4\x7a\xbb\x21\xe2\x02\x9e\x34\x26\x49\xd2\xab\x6e\x04\x98\x0e\x33\x84\x67\x07\xdd\xe9\xb0\x6f\x26\xad\x85\x5b\x5c\xcf\xb9\x02\x99\xbc\x4a\x78\xaa\xb9\x8b\xa6\x30\xa7\xac\x1f\x6a\x5c\xaa\x24\x1c\x33\xad\x4f\x15\x77\x09\x8e\xa8\x25\x8c\x26\x6e\x41\x6e\xe6\xec\xf4\x2b\x1d\x60\x41\xaa\x75\x83\x7c\xa9\xb4\xee\xb4\xe5\x45\xdb\xea\x27\x51\x2a\x04\x65\x10\x8d\x23\xff\xed\xe2\x5e\xab\x21\x5a\xff\x36\x71\x7f\x72\xbe\xf9\x4e\x72\xfb\xc7\xca\xb9\xd3\x73\x47\x8f\x38\x24\xdb\xed\xea\x2e\x01\x79\x47\x1e\x23\xbc\x1e\x3e\xb1\x1a\x38\xc4\xaf\x27\x95\xf1\xa4\xd4\xe1\x67\xc2\x5c\xaa\x9b\x2b\xb9\x56\xa1\xe3\x8c\xc1\x35\x9b\x05\x60\x2d\x67\xe3\x02\x9b\x74\x07\x5d\x4f\x0b\xa4\x81\xc6\x41\xbe\x6e\x8c\x87\x3c\xd1\x9b\x2d\x93\xa6\xdd\x39\x66\x6b\x2a\x32\x87\xe9\xee\x32\x18\xb6\x55\xdb\x2f\x87\x23\x3b\x39\x59\x8d\x92\x6a\x2f\x12\xe3\xbc\x35\x0c\xe6\x44\x0d\x1a\x83\x41\xb7\xbf\x5c\x96\x3a\x0e\x24\x86\xdb\xc7\xee\x74\xc5\xe6\x27\xe5\xee\x6c\x8e\x4b\xe5\x04\x30\xaa\xc1\x5b\x42\xef\xc5\x68\x79\x4b\xe8\xb1\xb9\xe5\x7b\x85\xde\x6e\x37\x1b\x3b\x2f\xef\x1d\x25\xa3\x4f\xfe\x8c\xeb\xf3\xfc\xa4\x7e\xc0\xa7\x7e\x08\xdf\xa6\x21\xf6\x17\xea\xc9\xd2\xdd\x65\x4e\xfa\xd1\x86\xf0\xc9\x13\x80\x77\x0e\xa1\x8f\x35\x84\x8f\xac\xd3\x7d\xb0\xe1\x2c\x54\xb5\x33\xaf\xd4\xe9\xc9\xd3\x93\xf9\x03\xde\x7a\x65\xbe\x1e\x75\x70\x8b\xca\x29\xb2\xe8\xbe\x62\x1b\x4c\x97\x7c\x73\xdc\x0b\xa0\xc4\x37\xba\x5a\x76\x5e\xd4\x9a\x25\x60\x96\xa0\x3e\x4a\x4e\x6b\xf9\xdc\x08\x64\x0a\xd9\x65\xaa\xd1\x25\x65\x35\xbb\xe2\x4b\x9c\xa3\x8f\xf3\xba\x53\x18\x2b\x55\x7e\xb6\x58\xd4\x4b\x8b\x12\xe7\x2f\x16\x91\xb8\x8b\x0e\x2b\x71\xed\xe9\x54\x9d\x14\xab\xea\xab\x56\xec\xc8\x63\x23\x51\x5c\x2d\xaa\x20\xe0\x58\x00\x0c\x5b\x59\x28\x8d\xc2\x34\x04\xf8\xf8\xd8\xd1\xf5\x86\x13\x17\xc7\x9d\x86\xb3\x50\xff\x07\x34\x9c\xfa\xbf\x1e\x5f\xd6\x5b\x67\xf2\xd3\xbb\xf8\x1e\x69\x58\x9f\x3b\xc3\xfb\xf8\x08\x73\x27\x7d\xca\x7c\xa4\xf2\x3e\xdc\xb0\xd4\x24\x29\x90\x30\x3e\x8e\xc7\x46\xa4\xa2\x64\x96\x61\xa9\x12\x8c\xd2\x90\xda\xad\x01\xd4\x32\x84\x75\xe7\xf3\xa1\x31\x71\xfa\xd5\x75\x85\x9f\x55\xd4\x96\x9c\xee\xac\xa4\xd9\xc8\x1e\x3b\x8d\x4c\xb3\xc0\x61\x65\x85\xda\x43\xdd\x2b\xdb\xa1\xb1\xb2\x5c\x90\x59\x76\x90\xc8\x9b\xc9\x4c\xa5\xd2\x9d\x69\x2a\x67\xd5\xb7\x23\x52\x61\x81\x89\x3a\x1d\x40\xbe\x8c\xf3\x15\x69\x14\xb6\x66\xb9\x6e\x03\x55\x27\xdc\x72\x61\x92\x6c\xab\x6f\x0b\x35\x07\xa5\x05\xe4\xa6\x5b\x9f\xd8\xb0\xfe\x3d\x85\x7b\xfc\xbf\xf5\xdf\x81\xcf\x58\xa9\xd5\xde\x5b\x0d\xeb\xe6\x7e\xb3\x97\xfb\x6a\x1f\xf6\xd9\xdd\xef\x09\xf2\xc6\x7c\x3e\xbe\xc1\x77\xb4\xad\x77\xcc\x63\x74\x75\x56\x4d\xa7\xaf\x6c\xfd\x79\x08\xc8\xd4\x1a\x85\x8a\xda\xe8\x31\xa5\x4c\x8f\xf9\xe3\xb0\xb3\xd0\xb7\xc3\x8e\xb4\x37\x77\x85\x3d\xdb\x6a\xfc\xb3\x80\xfb\x77\x50\xfb\xf7\x20\x5f\xdb\x9a\xf4\xb8\xbb\xfa\xd3\xf0\x0c\xe4\x5c\x43\xb6\x0f\x70\x0a\x6a\xbb\x35\xda\xfd\x7d\x4b\xef\x6e\x2b\xff\x34\xdc\x13\xe7\xd7\x80\xdf\x89\xce\xb4\xaa\x85\x7a\x2b\xc3\x1c\x37\x9b\x79\x57\x49\x3e\x87\xef\x77\x16\xe0\xb2\x0e\x8e\x5b\xb9\xde\xd8\x86\xf4\xe4\x65\x04\x4f\xe3\xdd\x3a\xbb\x06\x34\x16\xe6\x14\xe1\x6e\x9b\xc9\xeb\xdb\x4b\xc6\xdf\xbc\xf0\x34\xb8\xc8\xd7\x35\x6c\xc7\x20\xa7\xd0\xac\xe9\xb7\x68\xd3\xc9\xbb\x3b\x2d\x5e\x79\xe3\xc4\xf3\x48\x63\x2e\xaf\x02\x3e\x0f\x79\xad\xd2\x6f\x6c\xc7\x78\xf2\xde\x8d\xcf\x40\xea\x87\xc6\x0d\x8c\xfb\x30\xa7\xe8\xa2\x9d\x1c\xef\x6c\x4c\x78\xf1\xb2\x91\xa7\x41\x1e\x1d\x5e\x03\x7a\x16\xee\x14\xec\x7e\x6f\xc3\x5b\x7b\x07\x9e\xbe\x6e\xe5\x79\xa4\x5b\x6f\x57\x61\xc6\x02\xdd\x1c\xaf\x0e\xbb\x0a\xde\xd9\x18\xf0\xe2\xb5\x33\xcf\xa3\x3e\x38\xbc\x0a\xfc\x34\xdc\x29\xf6\xc3\xde\x82\x77\xf6\x0c\xbc\x78\xff\xce\xd3\x80\x8f\x0e\xaf\x01\x3e\x0b\x77\x93\xec\xed\x9e\x81\xdf\x8e\x1b\x02\xde\xdd\xfb\xee\xca\xfb\x89\x9e\x2f\x47\xcc\xe5\xd5\x92\x9c\x87\xbc\xd6\x4f\xf8\x74\xf6\x6d\xbf\xd9\xdb\xed\x7d\xe9\xce\xdf\xdb\xf4\x09\xd8\xef\x02\x7f\x0a\xf5\xf9\xab\xab\x76\x60\xa3\x17\x5d\x3d\xb6\xa7\xde\xf6\x9d\x58\x67\x7e\x18\xad\x7a\x4c\xfc\x5a\x7a\xa1\x9a\x63\x8c\xc0\xa3\x94\xd9\xef\xa0\xf8\x27\xd3\xc9\x67\x1a\x19\x26\xbe\xa3\x22\x77\xb8\xf7\xe3\x32\x37\xbb\x78\x21\xd7\x47\x81\x5e\x78\xda\x40\xdd\x0d\xf0\xa7\x40\x63\x86\x17\x78\x8e\xef\x11\xfb\x28\x8e\x83\x87\x4d\xfc\xa3\x76\x4e\x20\xdc\xce\xa7\x4e\xde\x78\xf6\x0c\x84\xbd\x93\x2d\x8a\x58\x1b\x7c\x10\xc8\xc9\x4b\xda\x3e\x0a\x24\xee\x64\x03\xe4\x34\x5b\x7c\x10\x49\xec\xb5\x72\x1f\xc5\x71\x74\x71\x4b\x14\x91\xc5\xb5\x11\xf9\xf8\xee\xbb\x8f\x06\x8f\x3b\xd9\x84\x8f\x3d\xf5\xfa\x20\x03\xe7\xef\xeb\x7b\x02\x49\xdc\xcf\x0e\xcc\x3e\xe7\x38\x05\x13\xdf\x3d\xf8\x12\xd0\xe5\x0b\x07\x3f\x8c\xe9\xc2\xd5\xad\x2a\x3a\xb1\xbc\x95\x8c\xec\xdf\x97\xf8\x61\x38\x27\x6e\x22\x86\x76\x59\xce\x09\x96\x6b\x93\xcd\x5b\x2f\xd7\x64\xb0\x3b\x99\xda\x34\xa0\x51\xb4\xff\x1f\x00\x00\xff\xff\xea\x62\x1d\x20\xc6\x73\x00\x00") + +func send_to_issuerCoreSqlBytes() ([]byte, error) { + return bindataRead( + _send_to_issuerCoreSql, + "send_to_issuer-core.sql", + ) +} + +func send_to_issuerCoreSql() (*asset, error) { + bytes, err := send_to_issuerCoreSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "send_to_issuer-core.sql", size: 29638, mode: os.FileMode(420), modTime: time.Unix(1508958292, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _send_to_issuerHorizonSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x3d\xe9\x72\xe2\xba\xd2\xff\xe7\x29\x5c\xf3\x87\x99\x0a\x99\x78\x5f\x32\xdf\xdc\x2a\x03\x26\x10\xc0\x84\x2d\x90\xdc\xba\x45\xc9\x96\x0c\x0e\x8b\x89\x6d\x20\xe4\xd4\x7d\xf7\xaf\xf0\x02\xc6\x78\x63\x99\x39\xe7\x52\xa7\xe6\xc4\xa8\xd5\x9b\x5a\xdd\xad\x96\x91\x6e\x6f\xbf\xdc\xde\x62\x4f\x86\x65\x8f\x4c\xd4\x69\xd5\x31\x08\x6c\xa0\x00\x0b\x61\x70\x39\x5b\x7c\xb9\xbd\xfd\xb2\x6d\x2f\x2d\x67\x0b\x04\x31\xcd\x34\x66\x7b\x80\x15\x32\x2d\xdd\x98\x63\xc2\x0f\xf6\x07\x13\x80\x52\x36\xd8\x62\x34\xdc\x76\x0f\x81\x7c\xe9\x48\x5d\xcc\xb2\x81\x8d\x66\x68\x6e\x0f\x6d\x7d\x86\x8c\xa5\x8d\xfd\xc2\xf0\x9f\x4e\xd3\xd4\x50\x27\xc7\xdf\xaa\x53\x7d\x0b\x8d\xe6\xaa\x01\xf5\xf9\x08\xfb\x85\xe5\x7a\xdd\x32\x9f\xfb\xe9\xa3\x9b\x43\x60\xc2\xa1\x6a\xcc\x35\xc3\x9c\xe9\xf3\xd1\xd0\xb2\x4d\x7d\x3e\xb2\xb0\x5f\x98\x31\xf7\x70\x8c\x91\x3a\x19\x6a\xcb\xb9\x6a\xeb\xc6\x7c\xa8\x18\x50\x47\xdb\x76\x0d\x4c\x2d\x74\x40\x66\xa6\xcf\x87\x33\x64\x59\x60\xe4\x00\xac\x81\x39\xd7\xe7\xa3\x9f\x1e\xef\x08\x98\xea\x78\xb8\x00\xf6\x18\xfb\x85\x2d\x96\xca\x54\x57\xf3\x5b\x61\x55\x60\x83\xa9\xb1\x05\x13\xeb\x5d\xa9\x8d\x75\xc5\x42\x5d\xc2\xaa\x65\x4c\x1a\x54\x3b\xdd\x0e\xd6\x94\xeb\x2f\x1e\xfc\x8f\xb1\x6e\xd9\x86\xb9\x19\xda\x26\x80\xc8\xc2\x4a\xed\xe6\x13\x56\x6c\xca\x9d\x6e\x5b\xac\xca\xdd\x40\xa7\x43\xc0\xa1\x6a\x2c\xe7\x36\x32\x87\xc0\xb2\x90\x3d\xd4\xe1\x50\x9b\xa0\xcd\xcf\x3f\x41\x50\x75\xfe\xfa\x13\x24\xb7\x76\xf5\xe7\x04\x74\xa9\x85\xa5\x73\xba\x57\xe5\x92\x34\x08\xf4\xf4\x28\x39\x1d\x87\x48\xd3\x90\x6a\x5b\x43\x65\x33\x34\x4c\x88\xcc\xa1\x62\x18\x93\xe4\x8e\xfa\x1c\xa2\x8f\x61\x80\xfe\xdc\x02\x8e\x2d\x5a\x43\x63\x3e\xd4\xe1\x29\xbd\x8d\x05\x32\xc1\xae\xaf\xbd\x59\xa0\x0b\x7a\xef\x39\xb9\x88\x8b\xd3\xfa\x4e\x11\x1c\x21\xd3\xe9\x68\xa1\xf7\x25\x9a\xab\x27\x89\x10\xe8\xbe\x30\xd1\x4a\x37\x96\x96\xf7\xdd\x70\x0c\xac\xf1\x99\xa8\x2e\xc7\xa0\xcf\x16\x86\xb9\x9d\x31\x9e\xdb\x3b\x17\xcd\xb9\xba\x54\xa7\x86\x85\xe0\x10\xd8\xa7\xf4\xf7\x8d\xf9\x0c\x53\xf2\xa6\xce\x19\x4c\x07\x7b\x02\x08\x4d\x64\x59\xc9\xdd\xc7\xb6\x09\x9d\xd0\x30\x9c\x1a\xc6\x64\xb9\xc8\x00\xbd\x48\x63\xc9\x85\x02\xba\x79\x22\x62\xdf\x2f\x66\xee\xb0\xf5\x13\x9a\x86\xcc\x34\xd0\xc5\x16\x72\x6c\xa7\xf2\x6d\x1d\x4c\x5b\x65\x93\xaa\xfc\xf1\x6e\x7e\x64\x01\x36\x5c\x3e\x8c\x54\x40\xdd\xb2\x87\xf6\xc7\x70\x91\x8e\x72\x0b\x69\x2c\xb2\x42\xa2\xac\x60\xbe\x03\x4e\x06\x56\xfc\x49\x92\x0a\x96\x3e\xf7\x95\x9d\xed\x26\xc3\xb9\x31\x6c\xab\x6d\xcb\x5a\x6e\x29\x9f\x14\xc5\x76\x63\xbb\x00\xa6\xad\xab\xfa\x02\xcc\xed\x8c\x71\x2d\xb2\xeb\x70\x71\x62\x24\xdd\x39\xf7\x53\x39\x88\xee\x78\x32\x7d\x47\x7d\x59\xe8\xb9\x80\xbf\x1d\xbf\x3b\x9c\xaa\x01\xfd\xec\x64\xeb\x2a\xfd\x44\xc5\x19\xe1\x61\x46\x0e\x46\x86\xb9\x18\xce\xf4\x91\x17\x3b\x13\x58\x08\x41\x26\xca\x98\xd5\x84\xdc\xde\xc5\x66\xbd\xd7\x90\x31\x1d\xba\xd4\x4b\x52\x59\xec\xd5\xbb\x19\x71\xc7\x98\xc6\x15\x30\x7b\x83\x92\x8c\xc9\x79\xca\x2e\xbe\x1f\x56\x3a\x52\xab\x27\xc9\xc5\x33\x74\xb6\x4d\x0c\x2d\xf4\x7e\x32\xe5\x03\x24\x99\x7b\x43\x94\x11\x76\x9f\x7e\x65\x96\x30\x66\x6e\x9e\x22\x5f\x34\x8a\x6c\x7d\xbd\x44\x25\x1b\xb0\x97\x95\x64\x96\xcd\x9b\xa7\xa7\xc8\xe2\x76\xc9\x08\xeb\xe5\x2b\xd9\xf9\xf1\x13\x9c\x2c\x1c\x85\x66\xba\x07\x2c\x0d\xba\x92\xdc\xa9\x36\xe5\x60\x87\xe9\x62\x64\xbd\x4f\x7d\x36\x8a\x15\xa9\x21\x1e\xe1\xfb\xf9\xc5\x5d\xd4\xcb\x60\x86\xee\xfd\xef\xb0\xee\x66\x81\xee\xbd\x2e\x3f\xb1\x8e\x3a\x46\x33\x70\x8f\xdd\xfe\xc4\x9a\xeb\x39\x32\xef\xb1\x5b\x67\xad\x5f\x6c\x4b\x62\x57\xf2\x31\xfb\xf8\xbe\x1c\x60\x3c\x6c\xf4\x10\x17\x9b\x8d\x86\x24\x77\x13\x30\xbb\x00\x58\x53\x3e\x44\x80\x55\x3b\x58\xce\x5f\xc5\xfb\xdf\x59\x0e\x92\x5c\x98\xb2\x2f\xbe\x47\x73\xa7\xa1\x54\x79\x0e\x74\x29\x37\xbb\x21\x7d\x62\xfd\x6a\xb7\xb2\x63\x2b\xb8\x9c\x3f\x20\xbf\xc7\x12\x62\xe4\x14\xe1\x8f\x90\x38\x0a\x78\xaa\xdf\x2d\x46\x9d\x56\x1d\x5b\x98\x86\x8a\xe0\xd2\x04\x53\x6c\x0a\xe6\xa3\x25\x18\x21\x47\x0d\x19\xcb\x0f\x5b\x30\x88\x34\xb0\x9c\xda\x43\x1b\x28\x53\x64\x2d\x80\x8a\xb0\x5f\x58\x2e\x17\x6a\x5d\xeb\xf6\x78\x68\xe8\x30\x50\x06\x39\x10\x36\x6c\x94\x9e\xa8\x8e\x09\xef\x05\xf5\x8d\x20\x4a\xe9\xae\xb5\x87\x03\xde\xb7\x2f\x18\x86\x6d\xfd\xba\x8d\x3e\x6c\x67\x2c\xe4\x5e\xbd\x9e\x77\xbe\x05\x8b\xc5\x54\x77\x56\x30\xd8\x36\x25\xb7\x6c\x30\x5b\x60\x5b\x46\x9d\x47\xec\xd3\x98\xa3\x2f\xdf\xc3\xa3\x12\x37\xe5\x7c\x8b\xf7\xe6\x6a\x36\x9e\x77\x33\x3b\x06\xab\xc3\x66\xa7\x2b\xb6\xbb\xae\xcd\x10\xce\x17\x55\xb9\xd8\x96\x9c\x01\x2e\xbc\x78\x5f\xc9\x4d\xac\x51\x95\x9f\xc5\x7a\x4f\xda\x3d\x8b\x83\xfd\x73\x51\x2c\x56\x24\x8c\x48\x13\xe6\x6c\xb5\x87\x11\xed\xf5\xae\xe8\x23\x7d\x6e\xfb\x11\x15\x9b\xa3\x0f\x7b\x05\xa6\xdf\x72\x31\x12\xe7\xee\xef\x4d\x34\x52\xa7\xc0\xb2\xbe\x87\x87\xcb\x5d\xb9\x61\xea\x18\x98\x40\xb5\x91\x89\xad\x80\xb9\xd1\xe7\xa3\x6f\x2c\xfd\x3d\x61\xa0\x5c\xc7\x7b\xb1\x64\x6e\xba\xb0\x93\x4b\x9f\xdb\x68\x84\xcc\x30\x8f\xbb\x74\x2d\x9a\xcd\x48\xf0\x6d\xa2\x17\x01\x4e\x90\xd1\xe0\x6e\x06\x18\xd1\x81\x61\xf7\x1d\xd2\xf4\x71\x65\xb3\x0d\xe2\xfc\x63\x46\x9b\x24\x08\xd6\xec\xcb\x52\x09\x2b\xbc\xa4\x48\xe4\xa6\x7f\xc9\x02\xed\x70\x85\x9a\x7f\x6c\xd7\x8d\xd1\xbc\xf9\x09\xc5\xa5\x56\xe7\xe1\xf1\xcc\x2e\x34\x67\x86\xfb\xe9\x75\x68\x27\xc7\xf9\x53\x1c\xe4\x57\x67\x41\xfb\x35\xc6\x9a\x1d\x3b\x8e\x6e\x82\xc8\x06\xfa\xd4\xc2\xde\x2c\x63\xae\xc4\x1b\x9b\x9f\x85\x5d\xaa\x07\x0f\x8f\xa7\x07\xbf\x8a\x17\xc3\x5b\xa0\xb4\x96\x69\x16\x46\x55\xf5\xa2\x3b\x7a\x6a\x09\xa4\xdd\xce\x40\xec\xf8\xf0\xbd\x1c\x1e\xa2\xb0\x1f\x88\x6c\xf0\xbb\xd2\x5a\x28\x30\x19\x4b\x7b\x1f\x9b\xc2\x7d\x4c\x04\xec\xd4\x4e\x2e\xec\x72\x01\x33\xc3\xee\x4c\xc7\x7b\x0c\x55\x1d\x8f\x64\x21\xc2\x46\x64\xd8\x60\x3a\x54\x0d\x7d\x6e\x45\xdb\xa0\x86\xd0\x70\x61\x18\xd3\xe8\x56\xa7\x6a\xae\xa1\xb8\xb1\x76\x9a\x4d\x64\x21\x73\x15\x07\x32\x03\x1f\x43\xfb\x63\xb8\x75\x9d\x96\xfe\x19\x07\xb5\x30\x0d\xdb\x50\x8d\x69\xac\x5c\x78\x06\xdf\x1a\xb3\x60\xb9\xd4\xfa\x63\x16\xc1\x29\xb1\x28\xbb\x17\x48\xf7\x2b\xa7\x8a\x7c\xdd\xf0\x92\x48\xe3\x4f\x85\x9b\x93\x04\xbd\x30\xfc\x24\xd2\x3a\x0e\x47\xd1\xe0\x09\xe1\x29\xb0\x9c\xbf\x9a\x6d\x1e\xe7\x7c\x21\x3f\x70\xb0\xf7\x13\x0d\xe3\x64\xe4\xaa\x2b\x8a\x13\x99\x2e\x0c\x4c\xee\x57\x96\xb1\x34\xd5\xdd\xd6\x5b\x4c\x48\xf0\xa7\x79\x2e\x77\x7f\x7f\x04\x91\x61\x1e\x78\xd5\x94\x4b\xd5\xe9\x6d\x2a\x7e\xbb\x6a\x1c\xf7\xe2\xda\x39\x51\xc5\xd9\x49\x88\x25\x1b\xda\xd2\x4c\x02\xf2\x76\x59\x93\x40\x66\xce\xf0\x44\x02\x1c\x6f\x0e\xa7\xc0\x25\x92\xdb\x41\x25\x50\x74\x58\xd2\xad\xa1\x85\xa6\x53\x64\x62\x8a\x61\x4c\x11\x98\xbb\x6d\x81\x02\x6a\xe4\x1e\xaf\x83\x76\xe8\xbc\x05\x80\x15\x2b\x52\xb1\x86\x7d\xfb\x16\x14\xf1\x5f\x18\xfe\xfd\x7b\x1a\xaa\xa8\xee\xbe\x54\xff\x77\x24\x68\x06\x7c\x07\x42\x87\xd0\x87\x34\xe2\x30\x98\x68\xeb\xd1\x75\xc7\x2b\x58\x7f\x74\x25\x39\x63\xa8\xcb\xe2\x63\x2e\x09\x76\x69\x55\xdb\xeb\x84\xbb\x14\x2a\x7f\x2a\xe0\x9d\x28\xec\x85\x21\x2f\x85\xda\x71\xd0\x8b\xeb\x90\x10\xf6\x0e\x2a\xf5\x57\xb4\x55\xdf\x3e\x83\x2c\x65\x5e\x7d\x78\xce\x39\x65\x4d\x93\x35\x32\x26\x07\xb9\x48\xd8\x3d\xe9\xf8\xf4\x1c\xc4\x4e\xbd\xb8\xa5\xcd\xdf\xb2\x38\xb1\x3f\x86\x68\xbe\x42\x53\x63\x81\xa2\x0a\x7e\xf6\xc7\x76\xa9\xb0\x9c\xda\x31\x8d\x33\x64\x83\x98\xa6\xad\x16\xe2\x9a\x2d\x7d\x34\x07\xf6\xd2\x44\x51\xb5\x29\x81\xfd\xfe\xef\xff\xec\xb3\x8b\xbf\xfe\x1b\x95\x5f\xfc\xfb\x3f\xe1\x35\x0b\x9a\x19\x31\x65\xa4\x3d\xae\xb9\x31\x47\x89\xd9\xca\x1e\xd7\x31\x1a\x4f\x32\x7d\x86\x86\x8a\xb1\x9c\x43\x6b\x3b\x72\xbc\x09\xe6\xa3\xa4\xa2\xa7\x5b\x04\xd3\xa1\x3f\x7b\xfc\x8d\xb2\x2c\x53\xde\x9d\x3e\xce\xee\x64\xca\x1e\x5c\x47\xea\x26\x14\x0c\x83\xa5\x99\x60\xb9\xf0\xb4\xc4\xfd\x7a\x42\x64\xdc\xa2\x4c\x14\x2a\x31\xe1\xcf\x22\x64\x6c\xe4\xbc\x9a\x98\x99\x77\x79\x13\x05\x4d\x71\xf3\xd1\xa2\x96\x80\x0d\x30\xcd\x30\x33\xec\x15\x60\x25\xb1\x2b\xa6\x88\x58\x95\x3b\x52\xbb\x8b\x55\xe5\x6e\xf3\x68\xbf\xc0\x89\x8e\x1d\xec\x5b\x8e\x18\xea\x73\xdd\xd6\xc1\x74\xe8\xee\x0e\xfd\xb0\xde\xa7\xb9\x3c\x96\x23\x71\x82\xbb\x25\xf0\x5b\x92\xc1\x08\xf2\x1e\x27\xef\x69\xe2\x07\xc5\x30\x3c\xc1\xdc\xe2\x5c\xee\xfb\xcf\x6c\xd8\xc9\xa1\xfb\x86\xd2\x81\x0a\x94\xcd\xd0\x36\x74\x98\x4c\x49\x20\xa8\x53\x08\x51\xc3\xa5\x85\x76\x1e\x7e\xa8\xcf\x8f\x5e\x8a\x4a\x24\xc7\x12\x04\x21\x9c\x42\x8f\x1e\x02\x08\x87\xe1\x62\x4a\x32\x0d\x46\x10\xf8\x53\x68\x30\x43\x37\x9c\xf8\x99\xad\xb3\xf3\x94\x48\x82\xc3\x69\xfa\x24\xb5\xb1\x3e\x09\xcf\xdb\x64\x20\x41\x71\x34\x7b\x0a\x09\x6e\x38\x33\xa0\xae\x6d\xb2\x4b\xc1\x13\x02\x4e\x7a\x24\x62\xa6\x46\xe2\x86\xce\xa9\x73\xe3\x68\x53\xc7\xe7\x9d\xc8\x63\xb9\x87\x42\xfb\xe9\xa5\x52\xad\x93\xc5\x2a\x55\x96\x5b\x74\x61\x50\x2f\x37\xe4\x52\xbd\xfc\xd8\x93\x9f\x7a\x64\xe5\x85\x7a\x6d\x94\x3b\x95\xa6\xdc\x2b\x4a\x4d\xb1\xd3\xe7\x5a\x45\xae\x39\x20\x2b\x61\xfd\xc4\x12\x21\xb7\x44\x8a\x24\xd5\x2a\x93\x95\x9e\xc4\x90\x62\x63\xd0\x2b\xf7\x2a\x94\xf8\xf2\x28\x0e\x06\x0f\x83\xc1\x33\xf9\x5c\x19\xbc\xbc\xb4\x59\xe9\x65\x20\x75\x9f\x6a\xa5\xc1\x6b\x47\xec\xb3\xdc\xa0\x49\x67\x26\x42\x39\x44\x06\xb5\x07\xb6\x2d\xd3\x4d\xb9\x2a\x3d\x15\x1b\x72\xb9\xc0\x51\xa4\x48\x53\xec\x2b\xf3\x24\x97\x3a\xed\xfa\x43\xbf\xc6\x3d\x14\xea\xc5\x46\xab\x5e\x2d\x37\xe9\x0e\x27\xbd\xf4\x9f\x7b\xb9\x73\xf7\x06\xb7\x1e\x32\x65\x18\x3a\x52\x5d\x2a\x76\x03\x9b\xad\x3f\x2c\x94\xbc\x6f\x96\xc7\xa8\x3c\x66\x9b\x4b\x94\xc1\x38\x8e\x77\xc4\xb2\x98\xc6\x39\xbb\x30\x57\x91\xf4\x20\xe0\xe7\x31\x22\xef\xee\x20\xa7\x0b\x1a\xb5\x0b\x73\xee\x24\xf0\x77\x62\x02\xe6\xc9\x33\xbc\x20\x50\x3c\xcb\x0b\x0e\x53\x78\x1e\xcb\xfd\xf5\xd5\xb2\xb7\x2e\x7d\x3e\x1a\x2a\x60\x0a\xe6\x2a\xfa\x7a\x8f\x7d\x25\x70\xfc\x07\xee\x7e\xbe\xfe\x37\xce\x36\xc3\x04\x88\x43\x02\xa4\x33\xc0\xb9\xbf\xbe\xba\x4b\xf4\x30\xda\x3c\xf6\x75\xbf\xf7\xb8\x6d\x9c\x03\x5b\x5f\xa1\xec\xe4\x42\xf2\x50\x79\x8c\x70\x05\x5a\x23\x7d\x34\xde\xd2\x23\xf2\xd8\x57\x57\x5d\xc3\x09\xda\x6c\x69\x9c\x3b\x3d\xb3\x73\x45\x79\x5c\xd1\x24\xc7\x33\xbf\x53\xcb\x1e\x81\xdf\xad\xe5\x90\x3c\x19\xb5\x7c\x9e\x7f\x3a\x89\x2b\x82\xe4\x79\x5a\xc0\x19\xc1\x53\x33\xe9\xb2\x35\xd5\x67\xba\xa3\x05\x81\x24\x29\x8a\x23\x71\x8a\xe5\x99\x1f\x34\xc7\x31\x3c\xce\xed\xd5\xa1\x1a\xd0\x51\x47\xaf\x53\x3a\xd6\x91\x6a\x22\xa8\xdb\x43\x30\x5d\x8c\xc1\x7c\x39\xa3\xf7\x10\xee\x4e\xf6\x1f\xb3\x24\x82\x23\x38\x81\xe7\x28\x92\x27\x5c\x19\x8f\x47\xda\xf9\x1c\x0f\xf7\xff\x80\x7c\x64\x48\xbe\x68\x4b\xfe\x9f\x96\x8f\x24\x68\x8e\xe6\x69\x9c\xe1\xb8\xf8\xf1\xfb\x9f\x14\x8e\x0a\x09\x17\x37\x78\xff\x38\xe1\x52\x02\x70\xd4\xf6\xff\xb9\x01\xd8\x7f\x05\x20\x98\x84\xb2\x14\x14\x78\x8d\xa1\x58\x84\x58\x1e\x12\x0a\xc9\x29\x8c\xc2\x0b\x1a\x49\x01\x8d\xa1\x08\x42\xe1\x18\x56\x00\x24\xad\x01\x8d\xa0\x71\x0a\x40\x5c\x61\x48\x85\xa5\x28\x05\xe7\x14\x24\x08\xb9\xbc\x5b\x27\xd9\x46\x95\xad\xc3\x23\x04\x0e\xbf\xc5\x89\x5b\x9c\xc0\x70\xfc\xde\xf9\x2f\x9c\x8d\x0b\xf7\x38\x7d\xcf\xd0\x3f\x18\x16\xc7\xb9\xc4\x46\x22\x97\xc7\x68\x52\xa0\x05\x96\x23\x05\xd6\xf5\xf4\xfe\x14\x0c\x7c\x1c\xca\x04\x1e\x6c\xf4\x9e\xf1\x18\xeb\x09\x6b\x62\x3b\x0f\x00\x85\x34\x96\x17\x38\x15\x71\x3c\xa5\x31\x02\x4b\xe3\x04\x24\x05\x01\xf2\x0c\x4b\xa8\x2a\xc7\x6b\x90\xa5\x70\x04\x11\x05\x55\x48\x31\x2a\x4f\xaa\x34\x60\x55\x16\x47\x2a\x52\x59\x05\xe4\xae\xa3\x4d\xd2\x9d\x95\xc7\x3a\x89\xd7\x23\x47\x32\xbc\x90\xda\xea\xe6\x26\x34\x23\x90\x09\x8a\x24\xf1\x68\x55\x6e\xff\xc7\x67\x54\xe6\x76\xde\x09\x04\xc9\xab\x84\xc0\x32\x3c\x41\x6b\x9c\xc0\x00\x56\xa3\xa0\x26\xb0\x40\x60\x14\x46\x43\x1c\x8b\x58\x56\xd5\x68\x46\x60\x29\xa0\x21\x56\x00\x3c\xcd\x92\x1a\x8b\x78\x81\x20\x18\x86\x26\x73\xd7\x19\x10\x37\x4a\x45\xe8\x85\x88\x53\x17\x4b\x90\x54\x4a\x9b\x17\xe8\x09\x9e\xe7\x13\x34\x49\x5d\x41\x93\x74\x1e\xcb\x71\x04\x0d\x00\x4e\x6a\x2c\xa9\x41\x9c\xc7\x69\x41\x45\x8a\x42\x93\x24\x01\x08\x86\x64\x09\x85\x16\x48\x86\x60\x05\x4d\xd1\x34\x42\x55\x28\x92\x65\x04\x1a\xa7\x04\x04\x49\x92\x60\x09\xd2\xd1\xe4\x15\x46\x23\x56\x93\x64\xac\xb6\x48\x8e\x65\xe3\x75\xe9\xb7\xba\x21\x97\x15\x08\x9e\x4e\xd0\x26\x7d\x05\x6d\x32\x79\x2c\xa7\xb0\x88\xa3\x58\x82\xd0\x58\x96\x86\x24\xa2\x19\x1e\xc7\x5d\xe1\x59\x40\x21\x28\xf0\x34\xa4\x49\x02\x52\x38\x05\x58\x15\xa7\x11\x47\x22\x1a\x00\x16\x12\x84\x42\x08\x8a\xe0\xb8\xab\x2b\x8c\x48\xac\x36\xe3\xf5\x45\x53\x38\x45\x27\xb6\x32\x39\x3f\x06\x52\x2c\xcd\xe3\x09\xda\x64\x52\xb4\x99\x12\x93\x32\xbc\xa3\x73\x6e\x88\x8a\xa9\x04\xc7\xac\xe8\x88\x98\x91\x4f\xc1\x12\x5a\xa8\x91\xe7\x61\x09\x2f\x44\xce\xc3\x42\x87\x96\x67\xe7\x61\x61\x42\xcb\x8f\x33\x99\x61\x43\x19\xf0\x99\x68\xb8\x70\x22\x7d\x1e\x1a\x3e\x9c\xd2\x9d\x87\x46\x08\xa1\xa1\xae\xf3\x22\xd6\x55\x0a\x33\xc9\x9b\x16\x79\x4c\xc8\x5a\x90\x8a\x79\x1d\xe9\xe2\x69\x18\x18\x8d\xc0\x8c\xd9\xfd\xcd\x07\x0a\x0a\xda\x72\x0e\xbd\x84\xf8\xcc\xc2\xa6\x93\x5c\xbb\x45\xb9\x8b\xf2\xea\x3c\x96\xa1\xba\xf1\x1b\x0a\xb0\x71\x5a\xf3\xe6\xf6\xee\x6f\xfa\xf7\x6a\xed\xcc\x5a\xc7\x3f\x48\x6b\x87\xa5\x94\xdd\x83\xab\x37\x36\x5b\x59\xc5\x36\x97\x96\x8d\xd0\xa5\x86\xe4\xa0\x31\xcc\x4b\x35\xfb\xf7\x2f\x35\x2f\x2c\xd3\x67\x1d\xb9\x83\x02\xd1\xee\x01\xdf\xa5\x3c\x7f\x7d\xb5\x8d\x4b\x95\xa9\x99\xc6\xec\xd2\x71\xfd\xa7\xd7\x74\x7e\xc3\xd6\x4d\xc4\x70\x1d\xc6\xd7\xdd\x03\x1b\x31\x5c\xe7\xab\x7a\x3f\x5c\x17\xcc\x9f\x7f\x72\x15\xe7\x4a\x3b\x60\x31\xa1\x3d\xe2\xb5\xd8\x53\xf6\x9a\xe2\xb1\xa6\xbf\x80\x78\x6e\xfa\x10\xfb\xa2\x43\x54\x1e\xcf\xc7\x67\xbd\xa9\x78\xc8\x43\x3c\x71\x19\x62\x2a\x1e\xea\x30\x3a\xc7\xe5\xbd\xa9\x78\xe8\x50\x94\x3f\x17\x4f\x38\xec\x9d\xcd\x10\x1b\xf2\xc2\x67\x6b\x88\x0b\x21\x3a\x9b\x23\x3e\xe4\x68\xce\xe6\x48\x08\x21\x8a\xcf\xeb\x4f\x7d\x0d\xf3\x1a\x99\x7d\xda\x5b\x3a\x27\xe4\xf6\xb1\xef\x5c\x5e\x61\x7a\x06\x5f\xd8\x60\x59\x96\x61\x01\x8b\x00\x44\x24\xce\x93\x2a\xc3\xf1\x38\xc3\x11\x24\xcb\x41\x01\xd1\x34\x43\x21\x84\x18\x8e\x27\x54\x20\x00\x86\x07\x80\x22\x04\xa4\xe0\x1a\xe2\x29\x9a\x61\x34\xe8\xd6\x2e\x2f\x7a\xb1\xc1\x0d\x3b\x38\x1e\x57\x1d\xa1\x7f\x30\x1c\x45\x92\x7c\x7c\xad\xd3\x6b\x0d\x3a\x85\x9c\xb8\xfd\x3c\xd4\xf9\x4a\x6b\xd5\x9a\x28\x35\xb2\x22\x52\xfd\xe7\xb7\xb6\x59\x9b\xbd\x0d\x70\x5c\x7b\xe0\xad\x7a\x95\x9b\xe1\x52\x7b\xfd\xd8\xbf\x13\x07\xd4\x16\xfc\x55\xdc\x7d\x0a\xe2\xe1\x27\xfc\x2c\xda\xca\x68\xd0\x66\x25\xce\x28\xd5\xf1\x7a\xeb\x66\xfd\xd2\x29\x0a\x9f\x83\xd5\xe0\xb9\x4b\x7d\xe8\x4f\xfa\xcb\xb2\xa3\x10\xa5\xd5\xac\x55\x47\xbc\x03\xdf\x64\xcc\x5a\x10\xdf\xf3\x6a\x5d\x16\xd6\xa2\x28\x4a\x05\x58\x1a\x20\x92\xea\xd1\x48\x28\x92\x9d\x8f\x45\xa1\xfe\xda\xfe\x20\xcc\xc7\xcf\x4e\xb9\xfe\x88\x7f\x94\x4a\xf8\xb2\xf6\xb0\x98\xbd\x2b\xda\xb4\xd4\xbd\x19\x0c\xaa\xef\x6c\x4f\x2f\x15\x3e\x67\xe5\x0f\xfb\xe6\xa1\x79\x33\x78\x2f\x1b\xad\x27\x68\x0e\xba\xdc\x82\x30\xea\xaf\xd5\xca\x7b\xb7\xf1\x94\xf3\x75\xe0\xe8\xa1\xb5\xa7\xdc\x0a\x4b\xe2\x7c\x7e\x1d\xc0\x8b\xd2\xf6\x9f\xe2\xfe\xb9\xba\xff\xb3\xde\xa7\xcb\x38\x1a\x37\x59\x71\x23\x14\xf1\x27\xeb\x41\x1a\xad\x54\x82\x23\x88\x9e\xc0\xbf\xbc\xd1\xb3\xfa\x64\x26\xb4\x38\x66\x52\xa4\x56\x0e\x7c\x69\x09\x36\x23\x31\x84\xef\xe8\x73\xa4\xdf\x43\x7e\x03\xf4\x4f\x18\xd3\x12\x2a\x92\x16\xb9\x7a\x94\xbb\xa3\x7d\xff\x51\x76\xfa\x3b\x9d\x38\x7d\x1a\x21\xb8\x82\x7e\x57\xc0\xeb\xf8\xe3\xc3\xc6\x1e\xaf\x65\x62\xfa\x82\x83\xcd\xc2\x20\x04\xb9\xf2\xb1\xaa\x17\x37\x4d\xc6\x2e\x48\x6a\xd1\x1d\x67\x6a\x64\x9b\xcd\xf9\x6b\x82\x02\x0e\xe5\x8d\xfa\x84\xc7\xe4\x74\xfa\x2f\x77\x37\x6a\x08\x5f\x46\xfa\xbf\x1c\xfb\xf8\x6b\xd0\x22\x28\xdb\x26\x9a\x95\x55\xcb\x9e\x58\xa0\xd5\x21\x7b\x2a\x04\x1b\x15\x1f\x77\x36\xb0\xd1\x5a\x0b\x75\x7d\xfc\xfe\xfa\x3e\xa3\x98\x16\x7e\x37\x25\x36\xb5\xe5\xb4\x3a\x5a\xab\xcc\x58\x55\xb4\xf1\xdb\x6a\xca\x8e\x81\x54\xa2\x00\x81\xdf\xb0\x10\x14\xc9\x4e\x81\x9d\x7c\x96\xd6\xbf\x7e\x39\xd9\x94\xf3\x5a\xae\xbf\xb1\xb4\xfd\x37\x3d\x46\x04\x1c\x19\x8e\x10\x41\x40\xa8\xd0\x3c\xc1\x01\x96\x60\x19\x0d\x67\x49\x95\xe4\x49\x8e\x52\x34\x86\x24\xa0\xa0\x68\x08\xaa\x80\x46\x80\xc2\x69\x8d\x53\x20\x82\xa4\xaa\xf0\x08\xd2\x24\xa9\x70\x68\xbf\x09\x73\x81\x23\x23\xd3\x1c\x19\xbf\x4d\x13\x62\x1d\x99\xdf\x1a\xcc\x26\x2e\x75\x64\xe1\x49\x77\x64\xe8\xe6\xbb\xcc\xd6\x51\x13\x8c\xde\x3e\x1a\xa0\xf7\x24\xb0\x85\x4f\xcd\x12\x10\xae\x1a\xa6\xfc\x3a\xf8\x2c\xf4\x1f\x27\x65\xa3\xc6\x4d\x56\x93\xb5\x03\x1f\xef\xc8\xc4\xd7\x62\xa7\x53\x56\x7a\xb5\xaa\x5e\xed\x8e\x0b\x54\xa1\x5a\xd1\x88\x25\x33\xc2\x57\xa5\xce\x6b\x0b\x2f\x96\x68\xad\x20\xde\x2c\x9e\xde\x7b\xad\x3b\x01\xae\x3b\xcd\x4e\xfd\x46\x7e\x68\xbc\xbe\xae\xa6\x24\x7a\xec\xe3\x24\x6a\xb6\xa5\xb7\x26\xdd\x7a\x6e\xd3\x6a\x55\x9d\xb5\x67\x05\xf8\x22\xff\x36\x47\x56\x63\xdf\x90\x4e\xbd\xcd\x8c\x2a\xdf\x7d\x98\x96\xee\xd0\x48\xa5\xb8\xa7\x81\x5d\xa9\xd5\x3e\xfb\xcf\xfc\xfa\x59\x7f\x2d\x80\xe2\x92\xa9\x33\xce\xcc\xff\xdb\x1d\xd9\xa7\xb8\x04\x9f\x17\x3a\xb2\x56\x94\x4e\xce\x71\x24\x3c\x1d\xa9\xd3\x23\x79\xc3\x1f\xcf\x91\x3c\xb4\x26\x93\x71\x9f\x28\xea\x55\x5d\xa2\x5b\x70\xdd\x29\x50\x82\xb2\x7c\x91\xeb\x6b\x7c\xd6\x93\xc5\xd1\x4d\x65\xdd\x7a\x7a\xef\xb2\x53\xe9\xe9\x6e\xa0\x4a\x6f\x13\xfd\xee\xad\xfd\xf6\xd0\x57\x18\x38\xd7\x9f\x6d\x79\xfe\x36\x69\x57\x3f\x97\x52\xb9\x87\x2a\xc5\xca\xe3\xe4\x75\x34\xe8\x97\x5a\x57\x71\x24\x0a\xa4\x79\x16\x2a\x10\xe2\x24\xa4\x59\x9c\x27\x38\x96\x23\x54\x1a\x30\x80\x43\x02\x64\x11\xcf\x32\x2a\x20\x05\x55\xa1\x09\xc4\x92\x90\x03\x40\xe3\x70\x40\x6a\x08\x31\x0a\xc5\x42\xe4\xbe\x51\x48\x5c\xb2\x3c\x0c\x6c\xdb\x52\x29\x1e\x85\x25\xb6\x6e\x22\x61\xef\xd2\x6d\x3d\x58\x57\xb8\xa6\x70\xa2\xf9\xbf\xee\x87\x3a\x21\x37\x7a\x71\x9e\x9f\x9f\x65\x2f\xb8\x14\x89\x65\x01\x56\x8c\xee\x72\xd4\x58\xb5\xec\x12\x57\x18\x57\xeb\x94\x8c\x04\xf8\xfc\xa4\x3d\x54\x6f\x1e\x75\xe6\x71\xd5\x6b\xde\xbc\x8a\x36\x47\xdd\xed\x3e\x7b\x7c\x0f\x3b\xfa\xad\x82\x30\x99\xd5\xfa\xe4\x3b\xb5\xe2\x5a\xda\x86\x7f\x6a\xa0\x89\xa4\x10\xdd\x6e\x95\xd1\x3f\xde\x27\x55\xbc\x60\x8c\x06\x66\xd3\xe6\x46\x4d\x82\x25\x5b\xca\x64\x4c\xc2\x4e\xb7\xa7\xa1\x92\xb1\x52\xf1\x27\x11\x68\xe3\xd2\xe0\xc3\x1e\x3f\x8b\x53\xab\xbe\x7c\x9b\x16\x66\x9b\xb7\x82\xf8\xf2\x2b\x83\x7b\x79\x08\xda\x6f\xb2\x7b\x09\xe4\x08\xa7\xba\x97\xe7\xe7\x6e\xdb\xc3\x72\x6a\x6e\xe9\x7c\x2a\x21\xfd\x85\xa7\x5f\x6b\xc7\x9f\x78\x16\x7f\x5b\xf7\xf7\xba\xde\xcb\xbb\x77\x25\x31\xb6\xb0\xff\x44\xe4\x51\x01\x9d\x15\x97\x06\x65\xd8\x34\xf3\x5e\x7c\x92\x3e\x16\xad\x3b\xca\xa8\xc8\x37\x9f\x04\xd7\xde\xe8\x16\x31\xd5\x1a\xe5\x97\x59\xab\x3f\x32\x97\x9d\x9b\xae\xdb\x81\x9b\x59\x86\xb8\xc7\x17\xf3\x49\xce\xa3\x4a\x97\xd1\x9f\xa9\x7b\xfa\x67\xe4\x51\x15\xb2\xf3\xb2\x50\x80\x89\xee\xec\xc2\x5d\x7d\xcd\x7f\xb0\xad\xf6\xea\x59\x6e\xbc\xcd\xea\x0f\xef\xad\xb7\xd6\x83\x5e\x40\x16\x4b\x2d\x45\x6e\x60\xbe\x16\x96\x9d\xca\x2b\xf1\x28\xb7\x05\xba\xa9\x0b\x9f\x2d\xbe\xb0\xb8\x91\x64\xed\x81\x2c\xf7\x8a\xfd\xf5\x92\x6d\xf6\x1e\x94\x5a\x43\x2a\x8c\xae\xe2\xfe\xb6\x0b\x3f\x4a\x81\x0c\x03\x58\x01\x27\x59\x92\x86\x38\xa5\x51\xbc\xc0\x28\xaa\x40\x28\x1a\x2f\xa8\x0a\x4e\x71\x82\xc2\x31\x90\x12\x10\xa3\x08\x1c\x54\x29\x48\xd3\x3c\x60\x11\x62\x54\x25\x97\xc7\x68\xdf\xfd\x9d\x59\xc9\x3c\xc5\xfd\x91\x7c\xd2\xab\x1b\x7e\xeb\x41\x11\xc3\x35\xc5\x13\x97\x31\xd9\xdc\x9f\x6b\x0a\x27\x66\x54\xe7\xb9\xcb\xb5\x28\xf6\x57\x8d\x16\x9a\x04\x59\xa9\xec\xf8\x6d\x35\x56\x9f\x6f\x7d\xb5\x87\xf8\x22\x5c\x0f\xee\xd4\x29\xb3\xf8\x20\xbb\x93\x17\x9b\xe5\xc8\xf6\xa0\x59\x5e\x3d\x36\xbb\x35\x46\xab\xb1\x9d\xb7\xc2\xe2\xa9\xf2\xf0\xc6\x48\xd5\xf2\x47\xb1\x3d\x80\x75\xb1\xbc\x21\x6b\xc4\xbc\x33\xa9\x74\xe6\xd5\x89\x20\x93\xef\xeb\x75\xab\xb6\xae\x11\xd6\x7a\x9d\xc5\x5d\x06\xf5\x13\xef\x2e\x1d\xd1\xff\xe9\xee\xb2\xf5\xe7\xf9\x2b\x9b\x9f\x52\x65\x91\xc8\x5f\x8a\x3b\x3d\xc9\x86\xae\xe4\x4e\xa5\xcb\xe8\x5f\xe8\x4e\x37\x77\x4d\xf9\xf5\xa3\xcd\xad\x1f\xa9\x82\x26\x6c\x06\xb3\x79\xe5\xb5\xd9\xd6\x29\x73\xf5\x5a\x56\xe9\x3e\x3f\x61\x1a\xe6\x94\x37\x17\xb5\xc6\xc3\x84\x57\xc1\xd3\xa4\x35\x1a\x48\x8f\x65\x88\x5b\xe2\xa0\xfe\x62\xf6\x61\xad\x05\x6b\xaa\xde\xc5\x29\x60\x96\x0a\xa2\x29\x9a\xfd\xcf\x92\x78\x1d\x77\x4a\xe1\x1c\x01\x71\x52\xe0\x29\x00\x79\x85\xc3\x39\x8a\x52\x78\x84\x18\x12\x10\x02\x47\x33\x80\x62\x59\xc8\x11\x2a\xa1\x71\x34\xc3\x10\x82\xc0\x71\x14\xe2\x58\x9e\x82\x10\x00\xf7\xed\x1e\xe6\x7a\xd9\x24\x9d\xe6\x4e\x69\x8a\x4d\x78\xb7\xcb\x6f\x3d\xa8\xc0\x5e\x9a\x4d\x26\x2c\x50\x5d\x53\x38\x71\x7a\x9f\xed\x4e\xc5\x02\xac\xc2\x65\x70\x0e\x04\xb2\xcf\x47\x4e\xab\xb3\xb5\x86\xfd\x56\x62\xd1\xb4\x37\x62\x9b\x12\xc4\x8d\xd5\x6a\xac\xcc\xe6\xaf\xf2\x67\x83\x7c\x6f\x88\x3d\xbe\xd4\xdf\x70\xef\x6f\xd3\xc9\xbc\x2d\x75\xab\x84\x2a\x6c\xc0\xf3\xb8\x63\xd6\xa7\x4b\x65\xa3\x1b\x8c\xf4\xd1\x07\x34\xa9\x15\xa4\x46\x63\xf0\xde\x14\x09\xbd\x95\x29\xfb\x3c\xc1\x9d\xfe\x33\xdd\xd5\xfe\xb9\xf7\x77\xf0\xa7\x6c\x44\xf9\xe5\x44\x77\x7a\xed\xec\xf0\x38\x2b\x4e\x76\xa7\xe5\xcb\xe8\x4f\xe8\x3d\xfd\xc8\x94\x25\xd9\x9d\xce\x6d\x7e\x65\x18\x1b\xb2\xf1\xb4\x60\x9f\x3b\x25\x83\x6e\x53\x1d\xfd\xe6\xa6\xbc\x04\x70\x42\x35\x3e\x81\xb1\x2e\x74\xd7\xb2\x52\x5f\xbe\x37\xfb\x1d\x28\xb5\x1b\x6f\xcf\x9f\xd4\xe3\xa2\x5f\xae\x59\xcb\x3e\xb3\xaa\xd5\xde\x26\xdd\xf2\xab\xf9\xf6\xca\x4b\xad\xf5\x07\x32\xe8\x52\xff\x31\x31\x3b\x4d\x3c\xd2\x34\xfa\x84\xed\xdd\x91\xae\xfe\xb1\x2d\xa7\xfe\x3c\x3b\x84\xd5\xf9\x55\xbf\x58\x2a\x05\x0f\x82\x89\x22\x8c\x3d\xb5\xab\x0d\xb1\xfd\x82\xd5\xa4\x17\xec\x9b\x0e\xd3\x7e\xf2\x1f\xfa\x31\x5e\xc6\x13\xca\x2f\x96\xee\x90\x6c\x94\x70\x67\x31\x86\xf5\xe4\x6a\xab\x27\x61\xdf\xf6\xe0\xf9\xc0\xd9\x9d\xf9\x83\x93\x36\x4f\x54\xcd\x75\x86\xf5\x64\xc1\x4f\x1a\xd4\x98\x97\x0e\x53\x5e\xec\xbb\xae\x64\xd1\x44\x92\x24\x4d\x60\x2b\xb3\xe4\xb1\x1b\xb3\xa9\x5b\x9f\xd7\x95\x3e\x8e\x4c\x92\xfc\x89\xac\xa5\x6a\x20\x7c\x47\x84\x27\x8a\x73\xa3\x44\xb6\xf3\x6f\xdc\xcb\x27\x42\x78\xb0\xa6\x1c\x9e\x10\xbd\x4e\x55\x7e\xc0\x14\xdb\x44\xc8\x9f\x61\x31\x33\x29\x70\xbf\xc5\xb9\xec\xec\x51\x04\x39\x39\x48\x62\x0f\xf9\x71\x81\xf3\x47\xa7\xdf\x44\x31\xe7\xdc\xd0\x71\x01\x67\xce\x21\x40\x99\xd8\x0a\x1f\x1d\x14\xc5\x8d\x77\xad\xc8\x05\xfc\xb8\x18\xb2\x71\x14\x3a\x97\x28\x7f\x7c\x04\x51\xe4\x24\x0b\xde\x93\x72\x3a\xa7\x9e\x5f\x76\x19\x0e\xa1\x0b\xb2\xed\xff\x80\xee\x80\xe3\xa8\xe3\xf2\xf2\xfe\xd1\x78\x71\xcc\xee\xcf\x47\xb9\x90\x4d\x1d\x66\x66\x70\x7f\xf4\x58\x3e\xf2\x8c\xbf\x14\xa6\xfd\xab\x6d\xae\xc1\xb7\x87\x2b\xc8\x7a\x4c\x70\x38\x4b\x92\x68\x01\xfc\x5b\x7c\xae\x21\x80\x87\x2b\xc6\xa6\xcf\x14\xe1\xf0\x1c\xb9\x63\x21\x02\x77\x16\x9d\x3b\x1b\x03\x38\xce\x55\x7e\xb2\xa2\x43\x97\x30\x5d\xaa\xeb\x43\x74\x41\x96\xfd\x5f\x2a\x1d\xf0\x18\xcd\xd1\xf1\x45\x52\x97\xb3\x75\x84\x33\x9b\x7b\x8b\x62\x30\x70\x25\xd6\xd9\xc3\xba\xc7\x71\xbe\x49\xa6\x99\xdf\xc1\x2d\x5f\xe7\x73\x1a\xc0\x12\xe2\x15\xa2\x10\x67\xfe\x31\xa0\xd1\xbc\x84\xae\x28\xbb\x88\xa3\x43\x5c\x69\x7c\x1d\x1d\x83\x19\xc9\xdf\xd1\xad\x6b\x17\x71\x18\xc6\x96\xc6\xe3\xc1\xd1\x9d\xf9\xa3\x93\x3b\xf3\x47\xc7\xb3\xc6\x08\x71\x85\xd9\xe2\xe1\x49\xe3\xf8\xc4\x98\x14\xbe\x2c\xef\x22\xed\x9e\xa0\xd8\x54\xbd\xa5\xdf\x02\x78\xa1\x42\x53\x09\x1c\x64\xc7\xfe\xe1\x43\x87\xf9\xa8\x0b\x78\x02\xef\x97\xdb\x41\x12\xee\x74\x8e\x23\x66\x59\xf2\x1d\x8f\xe7\xda\x43\x22\xd6\xd4\x64\x6b\x0b\x94\xc2\x68\xe4\x65\x96\xd7\xe1\x36\x0a\x75\x6a\xd0\xcc\x6a\xc9\x87\xb7\x77\x5e\xd5\x18\x0e\x50\x9f\x13\xe5\xb3\x5f\x57\x7a\x75\x45\x1f\x5d\x4d\x90\xca\x7e\xa8\x43\x76\x61\x82\xb7\xb7\xfe\x2e\xfd\x07\x6f\xa3\x48\x93\x24\x00\x9b\x5d\x88\xc8\xdb\x6c\x7f\x97\x34\x91\x97\x6c\xa4\x89\x15\xd5\x29\xbb\x7c\xbb\xcb\x7e\x7f\x97\x4c\xbb\x83\x73\xd3\xe4\x88\xad\x31\xa4\x5c\x72\x7c\x55\xc6\xc3\xd8\x23\x97\x1d\xa7\x4e\xf0\xc4\xfb\x9d\xaf\x33\xc3\x93\x48\x64\x91\x21\x25\x9b\x4e\xbd\xed\xfa\xb7\x48\x11\x8a\x60\xb1\xbc\xa7\x07\xb1\x88\xdb\xbd\xaf\x6a\x36\xc7\xf8\xcf\x5e\x60\x25\xdd\x67\x7e\xae\x96\x13\x70\xa6\xa6\x08\xdf\xbe\xf9\xb7\x45\xdc\xfe\xeb\x5f\x58\xce\x32\xa6\x30\xb0\x6b\x90\xbb\xbf\xb7\xd1\x87\xfd\xfd\x7b\x1e\x8b\x07\x54\x0d\x98\x0d\xd0\xad\x80\xc6\x83\x2a\xc6\x72\x34\xb6\x33\x91\x3f\x00\x4d\x66\xe0\x00\x34\xc4\xc2\x77\xac\x5f\x91\xda\x92\x6b\x64\xd8\x2f\x8c\x4a\xfc\x0d\xd2\x36\xfb\x3e\x7c\x8c\xbe\xd0\xde\x1b\xc7\x72\xed\x3a\x45\x72\x88\xd2\x4a\xe2\x71\x9c\x60\xe5\x66\x5b\xaa\x3e\xc8\x6e\x41\x3c\x04\xf1\x1d\x6b\x4b\x65\xa9\x2d\xc9\x45\xa9\x73\x94\xee\xa6\xec\x1f\xc4\x6a\xc2\x5b\xd0\xfd\xed\x7a\x08\xf2\x11\xa5\x05\x7f\xad\x1c\xa9\x03\xa7\x84\x7f\xba\x06\x8e\x2f\xe8\xf8\x1b\xd5\x10\xc3\xcc\xa1\x2e\x8e\x81\xae\x6c\x14\xe1\x85\xfe\x3f\x41\x21\xf1\xa6\x71\x54\x49\xc9\x6a\x1d\x4f\x86\x65\x8f\x4c\xd4\x69\xd5\x31\x08\x6c\xb0\x35\x31\x0c\x2e\x67\x0b\x4c\x35\x66\x8b\x29\xb2\x91\x23\xc3\xff\x07\x00\x00\xff\xff\xaf\xd5\x10\x1f\xf9\x85\x00\x00") + +func send_to_issuerHorizonSqlBytes() ([]byte, error) { + return bindataRead( + _send_to_issuerHorizonSql, + "send_to_issuer-horizon.sql", + ) +} + +func send_to_issuerHorizonSql() (*asset, error) { + bytes, err := send_to_issuerHorizonSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "send_to_issuer-horizon.sql", size: 34297, mode: os.FileMode(420), modTime: time.Unix(1508958294, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _set_optionsCoreSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x69\x8f\xe3\x36\xb3\x06\xfa\x3d\xbf\xc2\xc8\x97\x49\xe0\xc9\x6b\x52\x14\x29\x31\xb9\x79\x01\xd9\x96\xf7\x7d\xb7\x2f\x2e\x06\x14\x49\xc9\xb2\x65\xc9\x96\xe4\xf5\xe0\xfc\xf7\x0b\x2f\xdd\x76\xbb\xdd\xcb\xb4\x7b\x72\x02\x24\x02\x66\xba\x6d\x95\x8a\xc5\xa7\x1e\x96\x8a\x45\x89\x1d\x2e\x7d\xdf\xf5\x9d\x44\x28\xb9\x3b\x97\x3f\x1d\x7f\x24\x6c\xd7\x77\xa3\xb1\x14\x5f\x13\xdc\x0b\xa2\xfd\x79\x4f\x0a\x47\x86\x3f\x1d\x7f\x1c\xbe\x95\xe2\xa7\xdf\x7e\xfb\xe9\xb7\xdf\x12\x8d\x20\x8a\x9d\x50\xb6\x9b\x95\x84\x60\x31\xb3\x58\x24\x13\x62\x39\x9b\xef\x4f\xef\xcf\x67\x97\xb3\xb9\x14\x09\x3b\x0c\x66\x67\x81\x95\x0c\x23\x37\xf0\x13\xf4\x3f\xe4\x3f\xf8\x42\xca\xda\x26\xe6\xce\xb7\xfd\xe5\x57\x22\x3f\xb5\xcd\x4e\x22\x8a\x59\x2c\x67\xd2\x8f\xbf\xc5\xee\x4c\x06\xcb\x38\xf1\x67\x02\xfc\x71\x38\xe5\x05\x7c\xfa\xfc\x5b\x57\x78\xf2\x9b\xeb\x7f\x8b\x43\xe6\x47\x8c\xc7\x6e\xe0\x7f\x8b\x64\xb4\xd7\xfb\x5c\x98\x7b\xee\x5e\xb5\xf4\x79\x20\xf6\x7d\xfe\x33\xf1\xa5\xdb\xc9\xe9\x5f\xfe\x78\x68\xdb\x17\x2c\x14\xdf\x78\xe0\xdb\x41\x38\x73\x7d\xe7\x5b\x14\x87\xae\xef\x44\x89\x3f\x13\x81\x7f\xd2\x31\x96\x7c\xfa\xcd\x5e\xfa\xc7\xb6\xac\x40\xb8\x72\x7f\xde\x66\x5e\x24\x9f\x34\x33\x73\xfd\x6f\x33\x19\x45\xcc\x39\x08\xac\x59\xb8\x77\xc4\x51\x24\x0c\xd6\xdf\x22\xc9\x97\xa1\x1b\x6f\xf7\xca\x6d\xfb\x8f\x13\x00\x92\x85\x7c\xfc\x6d\xce\xe2\x71\xe2\xcf\xc4\x7c\x69\x79\x2e\xff\xba\x47\x8c\xb3\x98\x79\x81\xf3\xc7\x4f\x3f\x65\x5b\xf5\x46\xa2\x58\xcb\x9a\x83\x44\x31\x97\x30\x07\xc5\x76\xa7\x7d\x92\xfc\x4f\xe4\x3a\xbe\x0c\x23\xc6\x79\xb0\xf4\xe3\x3f\x5e\x97\x95\x9e\xe7\xfa\x8e\x1b\x45\x4b\x19\xba\xbe\x90\x9b\x37\xe4\xf9\x7c\xb1\x0c\xc2\xe5\x2c\xb2\xb6\x91\x5c\xbc\x29\x2c\xfd\xd5\x7b\x24\xe7\xa1\xcb\xe5\x3b\x9a\x3f\x32\xf3\x3d\x1a\xc7\x6e\x14\xdb\x52\xbe\x53\xf2\x1d\x62\xd6\x72\xfb\x3d\x40\x9d\xd0\xb7\x98\xc7\x7c\x2e\xa3\x3f\x7e\x32\x2a\x1d\xb3\x95\xe8\x18\xe9\x8a\x79\x21\x5d\xaf\x55\x86\x0f\x97\xc4\x9b\xbd\x29\x41\xb8\x4d\x1c\x14\x67\xea\xb5\x76\xa7\x65\x14\x6b\x9d\x0b\xf9\x47\x99\x6f\xf3\xa9\xdc\xbe\x4f\xab\x2d\xe5\x7b\x14\x9f\xc5\xde\xaf\x3b\x5c\x46\xb1\xe7\xfa\x32\x7a\x4d\xf3\xa3\xd0\xbb\xf5\xee\xad\x90\x87\x30\xf0\x8a\xde\xb3\xd0\xfb\xf5\x1e\x47\xc6\x6b\x4a\x8f\x12\xef\xd7\xf8\x38\x1e\x5e\x53\xfa\x28\xf4\x6e\xbd\xf3\xa5\x15\x2d\xad\x57\x74\x1e\x05\xbe\x47\x9f\xe7\x46\xe3\xc5\x52\x2e\x5f\xc3\xf4\x52\xec\xfd\xba\xe5\xeb\x98\x1e\xce\xbf\x5b\x5b\x60\xdb\xaf\xab\x3b\x0a\xbc\x5b\xdf\x31\x64\x8c\x25\x13\xaf\xab\x7d\x22\xf7\x83\xb5\x9f\xc2\x98\x5c\x7c\x7b\x67\x33\x16\xf3\x5f\x51\x6e\x31\xff\xdd\x06\x9f\xe2\xd2\x6b\xb6\x3e\x88\x7c\xaf\xce\xfd\x6d\xff\x6d\xb5\x7b\xa9\x93\xe6\x83\xec\xb5\xe2\xeb\x60\xf8\x96\xd8\x39\x6c\xbd\x21\xf9\x18\x86\x5e\x97\x3b\x87\x95\x37\xe4\x8e\x91\xe2\x0d\xa1\xc7\x91\xff\xa6\xdc\xbb\x3a\x71\x1c\xf5\x6f\xca\x3c\x8e\xe1\x37\x24\xe5\x9b\x1d\x38\x0e\xb6\xd7\x65\x9e\x70\xfb\x75\x51\x8b\xf9\xaf\x0b\x3c\x70\xef\x5d\x52\x7b\x2a\x9d\x04\xcd\x41\xc7\xac\xb5\x8b\xf5\xda\xa5\xb0\x37\x77\xa2\x85\x77\x92\x68\x67\x0a\x66\xd5\x78\xa6\xeb\x8f\x53\x7e\x5b\x63\x33\xf9\xfb\xc3\x77\x89\xce\x76\x2e\x7f\x3f\x5d\xf2\x47\xa2\xcd\xc7\x72\xc6\x7e\x4f\xfc\xf6\x47\xa2\xbe\xf6\x65\xf8\x7b\xe2\xb7\x43\xda\x9b\x69\x99\x46\xc7\x7c\xd0\xfc\xa0\xef\xa7\x27\x1a\x9f\x9e\x3c\x29\xce\xd4\xab\x55\xb3\xd6\x79\x45\xf3\x51\x20\x51\xaf\x3d\x55\x90\x28\xb6\x13\x5f\x1e\x72\xd4\x87\xef\xa2\x83\x92\x2f\xd7\x2d\x3f\x74\xff\xd4\xe6\x23\x42\x6f\xf6\xe7\x09\x96\xb5\x7a\xe7\x0a\xcf\x44\xbf\xd8\x29\x3c\x9a\x75\x99\x94\x3e\x69\xfe\xac\xe5\xca\x90\xef\xe9\xfc\x33\x25\x07\x00\x1a\x95\xd4\xdc\xd9\xcf\x44\xe6\x61\xc0\xa5\x58\x86\xcc\x4b\x78\xcc\x77\x96\xcc\x91\x07\x18\xde\x99\x44\xef\xc5\x84\xb4\xd9\xd2\x8b\xbf\xc5\xcc\xf2\x64\x34\x67\x5c\xee\x67\x04\x5f\xae\xce\xae\xdd\x78\xfc\x2d\x70\xc5\x45\x92\xff\xa4\xb3\x97\x84\x3c\x75\xf3\x40\xdd\x73\x27\x1f\x08\x70\x0b\xf0\x23\xcb\x2f\xa3\xe8\x2f\x3f\x25\x12\x89\x87\x6f\x5c\x91\xe0\x63\x16\x32\x1e\xcb\x30\xb1\x62\xe1\x3e\x0f\xfd\x05\x93\x5f\x0f\xbe\xa9\x75\x2b\x95\xaf\x07\xe9\xfd\x85\x3e\x9b\xc9\x1b\xc2\x44\xbd\x25\xbc\x62\xde\xf2\x96\x34\x84\xca\xb5\xb8\xc7\xa2\x78\x16\x08\xd7\x76\xa5\x48\xb8\x7e\x2c\xf7\xf3\xc3\xac\x99\x33\xba\x95\x4e\x02\x3c\x0a\xff\xf4\xeb\x35\x0b\x1e\xc7\xf3\x9d\xa8\x44\x1f\x82\xe4\x94\x7d\x27\x2c\xd7\x71\xfd\xf8\xea\x64\x24\x17\xfe\x72\x76\xfb\x9c\xbf\x9c\x45\x4b\x4b\xfa\x71\xb8\x9f\xd8\x3d\x74\xf8\xa9\x8c\xeb\xdb\x1e\xdb\xcf\xff\x84\x8c\xe2\xdb\xe6\x1c\x05\xc7\xc1\x4c\x8a\x60\xc6\x5c\xff\x86\x14\x7a\x86\x75\x3c\x0e\x65\x34\x0e\x3c\x11\x25\x62\xb9\xb9\xb6\xcc\xf6\x98\xf3\x92\x45\x37\xbd\xf4\x54\xe4\xe2\xce\xfc\x78\x9b\x3f\xa1\xf4\xed\x30\xab\x4d\x64\x0a\x66\xa6\x9c\xf8\xe5\x97\x07\xec\xfe\xfb\x67\x02\xfc\xfa\xeb\xcb\x57\x3f\x81\xea\x4a\xc7\x53\x18\x8f\x9a\x9e\x73\x64\x7f\x53\xf8\x28\x3d\xf6\x89\xd1\x91\x19\x7e\x20\xe4\x25\x2d\x9e\xd0\xe1\x79\xa3\x4f\x6f\x5a\x1f\x6d\xfe\x69\xfa\x77\x34\xe4\xf4\x1d\x8b\xc6\x17\xc6\x3c\x1f\x81\xf3\x50\xae\xde\x14\xb2\x96\x7c\x2a\x63\xcf\x8d\xe2\x37\x45\x1f\x73\xca\x07\xcf\x1f\xbf\x3e\x14\x71\x62\x77\xf6\xc2\x20\x38\x44\x9b\x1b\x34\xbb\xf0\xf4\xd3\xd4\xf5\x51\xdf\x95\xab\xcf\xed\xbc\x40\x98\x97\x32\xe0\xa7\x6a\xce\xbd\x78\x89\x2d\xa7\x8c\xe4\xa3\x1e\x3b\x4d\x2f\x7e\x39\x85\x00\xcf\x93\xe1\x3b\x83\xc9\xe1\x4a\x57\xbc\x14\x4c\x0e\x75\x14\x16\x45\x32\x8e\xb7\x73\xf9\xc2\xf0\xbb\x14\xe3\x81\xb8\x19\x7d\x95\x5f\x9f\xc8\x1e\x2b\x0e\xaf\xc5\x97\x63\x65\xe2\xad\xa6\x2f\xa4\xde\x6a\xf9\xb2\xd4\xf1\x5a\xc3\x6c\xb6\x0f\x01\xb7\x01\x39\x54\x74\xfc\x17\x6c\x39\x9c\x7c\x29\x44\x1d\x4e\x26\x44\xb0\xb4\x3c\xb9\x1f\x25\xdc\x3d\x14\x08\x7f\x54\x18\x3c\x4d\x27\x8f\x7d\xb9\x62\xe3\xa9\x83\x2f\x30\xfa\x74\xe5\x89\x17\x57\x97\x3e\xb0\xe5\x25\x1a\x1f\x73\xef\x8f\xb2\xf8\x38\xe5\x3e\x92\xd8\x9d\xdf\xf2\x25\x7e\x16\x6f\x82\x30\x7e\xe5\xd6\x7d\xba\xef\xc9\x4d\xcc\xe2\x58\xce\xe6\x71\x62\x3f\x98\xa3\x98\xcd\xe6\x89\x7d\xf6\x13\x2c\x8f\xdf\x24\x76\x81\x2f\x9f\xdf\x2d\x6d\xe6\x7a\xcb\xf0\xe2\x5e\xf9\x52\x0b\x17\xf8\x1d\xeb\x02\x17\x17\x3f\xbf\x7b\x3c\xaa\x7d\xc1\x05\xa7\xd2\x42\x10\x5e\x7b\xee\x97\x43\x77\xff\x9b\x00\xbf\x26\x8c\x5a\x36\x71\xfc\xf8\xff\xfc\x99\x20\x18\x23\xfc\xeb\x4d\x87\x5c\x4e\x9b\x3e\xec\x97\xcb\x32\xcb\xe5\xed\xe0\xa5\x78\x70\xa8\x71\xed\xe3\xef\x4d\x83\xf6\x73\xbd\x3b\x4c\x89\x96\xd6\xc9\x88\x50\x46\x4f\xee\x8d\xcf\xb3\x8e\xfd\xa0\x09\x25\x7b\x1c\x30\xcf\xed\xb9\x98\xa3\x7e\xd4\xa6\xb3\x8a\xf7\xdc\xb4\x5f\xb8\xaf\x5d\x9d\x97\xfe\x4a\x7a\xc1\x5c\xbe\x71\x17\x3b\x37\x7d\xc7\xbd\xe7\x62\x3a\x7f\x07\x04\x0f\x05\xc3\x23\x04\x8b\x48\xbe\xe3\xe6\xce\xa2\xf8\x2d\x20\xf6\x8a\xde\x06\xe1\xa1\x10\xf9\x44\xe3\x35\x10\x4f\x5a\x7b\x11\x8c\x53\x01\xe4\xc3\x48\x9c\x8a\xb1\x1f\x49\xec\x8f\xda\xa7\x72\xfb\x2e\xe9\xb5\x74\x9d\x71\xfc\x0c\xb6\x1b\x5d\x3a\xd7\x7e\x3e\xdc\xab\x73\xe9\xfa\x97\xf3\x10\x7f\x3a\x2f\xbb\x31\xfc\x5e\x0b\x04\x17\x95\xab\x8f\x5a\x75\x51\xa8\xff\x08\xdc\x6f\xe5\x16\xaf\xa5\x0a\xb7\x54\xbd\x9c\x80\x5c\xcf\x85\x3c\x77\xe6\xbe\x90\x61\xbc\x3a\xb9\xfb\xbc\xfc\xe0\x62\xf9\xe2\x43\x13\xa5\x8b\xeb\x8f\xbd\xb9\xba\xfc\xd4\xc5\xff\xde\x1e\x64\x4f\xea\x9b\x1f\xf6\xfe\xe5\x12\xd0\xd1\xff\xf1\xe6\x49\xd8\x7d\xc7\x74\xe2\xda\x33\x9b\xc3\x22\xd8\x8b\x67\xf9\x98\xf9\x8e\xbc\x39\x85\xbd\x04\xe7\x72\xd5\xe9\xe3\x71\xf9\x5c\x2c\xfe\x38\x44\x7f\x31\x3e\x56\x20\xb6\xb7\xc0\x89\x37\xa1\x8c\x96\xde\xcd\x48\x1e\x6f\x66\xf2\xcd\xe9\xda\x79\x85\xf0\x23\x78\x66\xf7\xf3\x41\x3b\x08\xdf\xa8\x6b\x25\xb2\x46\xc7\x78\x03\xdf\xd7\x55\x46\xdf\xad\xaf\x58\x6b\x9b\xad\x4e\xa2\x58\xeb\xd4\xcf\x55\xa1\x9e\x51\xe9\x9a\xed\xc4\x2f\x5f\xf2\xe9\x56\x63\x58\x28\x56\x94\x4c\x11\xe5\x6a\x4d\x35\x3d\xa8\xe4\xaa\xb5\x6c\x25\x57\xea\xd6\x1a\x5d\xa5\x30\x44\xa3\x6a\xae\x5d\xa8\xd7\xba\x19\xb3\x6e\xb4\xfb\x5a\x33\xa3\xd5\x07\x4a\xe1\xcb\xd7\x04\x3d\x1e\xda\xe9\xa7\x0e\xc0\xd7\x84\xf2\x35\x01\xbe\x1e\x01\x4e\x7c\xf9\xf2\x35\xf1\xc5\x68\x1a\x86\x61\xfc\xf9\xe7\x97\xc3\x09\xe5\xd7\x3f\xde\xb2\xc7\xc0\xfd\x74\x63\x68\xe0\xa1\xda\x37\xcc\xc2\xa0\xdf\x52\xba\xe5\xba\xd2\xad\xab\xe9\x6e\xbe\xd0\x6d\x6a\xaa\xd9\x6d\x94\xeb\x35\xa5\x59\xe8\xa9\xfd\x56\xa1\x5e\x6c\xd5\xca\xe5\x82\xf2\xe5\x6b\x02\x82\xc7\xe3\x6b\x42\xc7\x3a\xa5\x48\xc5\xf4\x7e\x8b\x32\x83\x72\x9e\xb4\x6a\x6a\xbd\x56\x34\x1b\x99\x6a\x2d\x97\xd6\x90\x62\xa8\x88\x8c\x70\xa3\x96\x6d\xb7\x2a\xf9\x7e\x59\xcb\xa7\x2b\x99\x6a\xb3\x52\xcc\xd5\xd5\xb6\x66\x0e\xfb\xbd\xee\x19\x21\x78\x61\x10\x01\xf0\xd0\xee\x3d\x1d\xfd\xe2\x2f\x3d\x2f\x8a\xb7\x9e\xfc\x0f\x0f\x66\x87\x3e\x39\x46\xc6\x70\x1e\xfa\x04\xe1\xcb\xcc\xbc\x2e\x1a\xdd\xc1\xc8\x97\x4b\x41\xdf\x4b\xcb\xa7\xe5\xa0\x47\xe4\x09\x12\x54\xb7\x31\x22\x52\x12\x5d\x40\x4b\xd1\x2c\x6c\xe9\xd4\x56\x10\xb3\x31\x82\xd0\xd2\x30\xa1\x4c\x51\x6d\x66\x43\x15\x20\x26\x80\x85\x15\x8b\x20\x64\x01\xcd\x92\x94\xee\x91\x01\x77\x1e\x7b\x1d\x58\x53\x98\x22\x91\x62\xdb\x8a\xaa\x33\xa0\x59\x40\x6a\xc0\x16\xd0\x26\x02\x41\x9d\x43\x9b\x71\xa1\x00\x8b\x70\x0e\x74\x8e\x90\xc0\x9a\x86\x15\x4c\x75\xa2\x43\x05\x33\x48\xf6\xdc\x3c\x3a\xdd\xf8\xdb\x1e\xe9\x41\xd9\x55\xb7\xa9\x6d\xbb\x9c\xd6\xb2\x7e\x96\x16\x14\xb0\x99\xa4\x93\x11\x70\xe2\x68\x5d\x5c\xef\xe0\x40\xb4\xfb\x43\x96\x2e\xb1\x9c\xb3\x97\x37\x6b\x6a\x85\xed\xe6\x4a\xf3\x4d\xcd\x23\x63\x00\xd5\x83\x58\x7a\xfa\x17\x74\xe4\x53\x8f\x2f\x57\xd1\xe1\x05\xa2\x4a\x0b\x02\x86\x25\xc5\x0c\x52\x45\x91\x9a\x24\x54\x43\x8a\xad\x13\x42\x75\x85\xa9\x8c\x03\x08\x90\xad\x32\x9d\x01\x4b\x63\x96\x6a\x31\x9d\x50\x15\x0a\x6e\xa9\x42\xe1\xba\xdc\x93\xec\x33\xc8\x6e\x63\x4b\xb3\x10\xa5\x48\x12\x4d\x81\x3a\x85\x4c\x93\x50\x00\x1d\x49\x44\x34\xca\x15\xa4\x60\xa8\x08\x82\x14\x04\x55\x8d\x70\x49\x74\x85\x58\x1c\x72\x66\x63\xc2\x24\xb7\xbe\x1c\x02\x38\xc4\x40\xa7\x58\x57\x28\x3d\x31\x36\x93\x6f\x8c\x26\xb0\xb6\xc4\x01\xb0\x4a\x5a\x5f\xf5\xb7\xf5\x55\x77\x93\x47\xbd\x79\x30\x4d\xae\x72\x46\x3d\xce\xc0\xb2\x52\xd5\xd2\x1a\x19\x75\x65\xae\x3f\x46\xc9\xca\x10\x0d\x3b\x85\xe9\xd8\x22\x71\x72\xe0\x4e\x3b\xaa\x6e\x94\x7b\xdd\x70\x9c\x2c\xd6\x3c\x54\x1d\xd2\x5a\x2d\xee\x1e\x10\xee\xdb\x59\xa7\xbf\xde\xff\x56\x7c\xfc\xef\x18\xa1\x9d\xf3\xe7\xb5\x61\x94\x36\x47\x8f\xac\xfb\xb5\x91\x5d\xc4\xfd\x6d\xae\xbf\x51\x66\x5a\x27\xa8\x35\x33\xe3\xe1\x08\xef\x16\xb9\x70\x1d\x38\xca\x04\x4c\x07\x8b\x66\xad\x62\x84\x2b\x18\x6b\xf5\x51\x63\xc6\xc7\x6e\x6b\x9e\x2c\x34\x9d\x64\xcd\xf7\x33\x55\xcf\x8c\x87\xdb\x6a\x57\x44\x38\x28\x85\x6b\x1e\x42\xb6\xdc\x1e\xdb\xbf\xc1\xe8\x6c\xf1\x16\x2b\x1e\x19\x9d\xe1\x6f\xd3\xff\x6f\x76\xbc\x93\xd1\x98\x41\x80\x6d\x0e\x91\xb0\x75\x8b\x50\xa0\xa9\x10\x2a\x18\xab\x18\xd8\x2a\xb6\x55\x88\x89\xae\x2a\xc0\x06\x02\x02\x40\x6c\x8b\x01\x0b\x2a\xcc\x66\x98\x59\x2a\xe7\x80\xb1\x3d\x1b\x3f\x63\x54\x28\x54\x01\xb6\x60\x10\xeb\x9a\x46\x18\x46\x94\x4a\x49\x04\x60\xc0\xc6\x4c\x13\x98\x48\xdd\xb6\x55\x05\x43\x1d\x4a\x6a\xab\x14\x13\x6c\xdb\xc4\x42\x40\x02\x88\x54\x6e\x69\x5f\xbe\x26\xd0\x23\xa3\x11\x78\x88\xc1\x99\x7a\xd4\x9c\x4b\x8f\xe5\xdb\x15\x1f\xcf\xf9\x36\x99\x67\xc3\xf2\x34\x34\xcc\x2c\x2d\xbb\x4e\x4c\xe2\xca\x22\xef\xa5\x51\xa5\xd3\xde\xd6\x8b\xb9\xa1\x98\x97\xea\x86\x5c\xa2\x6a\x3e\x6f\x4c\x32\x6e\x37\x65\x39\xe3\x45\xd4\xc5\x9d\x99\xce\x64\x88\x35\xd5\xec\xb0\xa8\xa0\x1f\x18\x7b\x60\xf4\xe0\x02\xf1\xfe\x36\x6e\x6c\x82\xa5\xc8\xc5\x69\x23\x39\x68\x38\xc1\x80\xe8\x75\xbf\x3d\xdf\x2e\x40\x66\x5b\x2b\x6d\xac\x94\x33\xad\xea\xbb\xb1\xbb\x28\xce\x8b\x0d\x65\xdc\x2f\x88\x45\x17\xfb\x4b\xab\x19\x34\xfa\x3e\xec\x93\x06\xcd\x74\x87\x85\x39\x2d\xf5\xbc\x94\x12\xad\xd5\x74\xad\x1a\x1f\x18\x5b\xbd\xc1\x58\x33\xba\xe5\xf5\x7f\x00\x63\x89\x02\x84\x4a\xa1\xae\xa8\x16\xc1\x90\x41\x4a\x10\x85\x02\x42\x0d\xc3\xfd\x8d\x5a\xc7\x48\x25\x98\x41\xa9\x09\xac\x0a\x1d\x11\x29\x10\x92\x98\x0b\x8a\x6d\xac\x59\xf6\x21\x7e\x7e\x06\xeb\x19\x07\x4c\xd5\x54\xa9\x43\xa9\x28\xaa\x04\xba\x40\x8a\xae\x48\xc0\x10\x56\xb9\x06\x20\x90\x96\x25\x55\x1b\x41\xa0\x40\x29\xb0\xa5\x2a\x96\xb4\x99\xc5\x80\xc4\x9a\xc5\xe4\x5e\x87\x7a\xc1\x58\xf8\xc0\xd8\x5c\xd0\x1c\xe8\x26\x4d\x56\x58\x53\xa4\x4d\xaf\x97\xcb\x82\x01\xc8\xf5\xc7\x99\xec\x1a\x34\xd3\xab\xa5\x13\xb5\x43\xd2\x0f\x3b\xd5\xcc\xc2\xe9\x17\xb7\x28\x8e\xdb\xd1\x36\x5d\x23\xe5\xc9\x0a\xf8\xa3\xa8\x37\x2b\x54\x27\xc9\xf2\x70\x96\x31\xba\x23\xc5\x56\x82\x6c\xa9\x96\x4d\x0d\x0f\x08\x1f\x18\x7b\xc1\x0b\x06\x5d\x24\x26\x15\xb5\x94\x57\xba\x60\xb1\x9d\x29\x99\x6a\x20\xd3\x1b\x2f\x4c\xae\x66\x72\x69\x8d\xb4\x55\x3e\xa3\xfa\xce\x58\xa5\xe5\x28\x33\x15\x75\x47\x16\xa7\x6a\x11\x6c\x9d\x65\x66\xd2\xab\xf2\x74\x36\x5c\x4d\xf5\x8d\x31\xd6\x7a\x71\x66\xb5\x5a\x90\xac\x27\x09\x39\x0c\x8e\xe6\x0d\xc6\xe6\x6f\x32\xf2\x1f\xc0\x58\x29\x80\x0a\xa4\xc6\x30\x10\x00\xe9\x40\xd3\x05\x02\x10\x51\xc8\x6d\x8c\x6d\x8b\x31\x55\x6a\x9c\x02\xc2\x91\x84\xd4\xe2\xc0\x42\x44\x65\xd2\xb2\x25\x01\x50\xc1\x54\xc2\x43\xd6\xf0\x19\xac\x87\x2a\x41\x5c\x53\xa1\x4d\x89\x6d\xeb\x1a\xd6\x6c\x68\xa9\xb6\x8d\x75\xa6\x70\x2e\x00\x41\x00\x10\x0d\x29\x1a\x53\xa0\x82\x6c\xa1\x12\xae\xea\x1c\xdb\x94\x01\xae\x31\x45\x7c\xf9\x9a\xc0\x17\x8c\x55\x1e\xb3\x86\x62\xad\xdd\x72\xa6\xb1\x97\x1f\x7b\x93\xa9\x30\x07\xdd\x16\x8d\xc7\x9d\x96\x17\x48\xbb\xd7\x19\xd6\x96\x60\x87\xb9\xd2\xa3\x83\x15\xd6\x46\xc5\x0c\xa1\xf5\x24\x2e\x6f\xd7\x61\x1a\x78\x49\x47\x2d\x0e\x56\xa0\xad\x67\xca\x2e\x1d\xe4\x52\x4a\xd8\x6a\xa7\xec\x7a\x98\xad\x05\x07\x84\x0f\x8c\x75\xce\x88\x5b\xa5\x4c\x9d\x95\x67\x4a\x86\x99\xa5\x69\x76\x35\xa5\xfd\x9c\xc3\x9b\x06\x2a\xcd\x6b\x0a\xca\x6c\xb2\x45\x3c\xe9\x6c\xfb\xb6\x1f\xf3\x71\xab\x35\xd9\x80\x02\xb6\x52\x63\x68\x6f\xe2\x06\x1d\x06\xd1\xae\x39\x5c\xa7\xfd\xaa\x1f\x8c\x8b\x29\x98\xdf\x14\x37\xf6\xcc\xd9\x90\xca\x81\x77\xdd\x1b\x8c\x2d\x80\x5b\x5e\xff\x07\x30\x56\xb3\x11\xc2\x3a\x12\x36\xe5\xd8\x16\x1a\x94\x4c\x5a\x4c\x12\x66\x01\x01\x55\x4c\x38\x03\x36\xa1\x14\x40\x28\x05\xd4\x2c\x29\xa1\x54\x98\x42\xa4\xd4\x39\x00\x3a\x90\xfc\x90\x15\x7c\x02\xeb\x21\x03\x96\xae\xa9\x96\x22\x21\xb6\x34\x89\x35\x0d\xea\xd2\xc6\x44\x50\xa4\xaa\x42\x30\x15\x00\x84\x75\x8d\x23\x86\x34\x4d\x57\x20\x16\x96\xb4\x74\x46\x85\x02\x2d\x8d\xa0\x7d\x56\x40\x2e\x18\x8b\x1e\xb3\x02\x60\x66\xfd\x79\x13\x64\x9d\xc2\xa4\x63\x74\xa6\x9c\xf6\x92\x64\x5e\xb7\x4b\xe9\xa8\x31\x9e\xe9\x99\xdd\xa8\x4c\x52\xd8\x31\x3d\x7f\x6c\xc1\x54\xa7\xb6\x74\xaa\xad\x4e\xb1\x12\x02\x75\xd2\x8e\x66\xcd\x72\x72\xd4\x6e\x6d\x02\x94\xcf\x0d\xbd\x38\x55\x91\xc5\x59\x7a\xb1\x19\x1e\xc9\x70\x60\xec\xfa\x8c\x78\xb3\x9c\xb7\x29\xa8\xa5\x32\xd2\x5a\xb2\x41\x7f\xe3\xcd\x1b\x16\xdf\xb9\x2c\xdd\x35\xd5\xf5\x36\x48\xfa\xf5\x59\xb7\x8f\x88\x91\x8d\x23\x96\x51\x45\xa5\x32\xee\x23\x3c\xe0\x43\x0d\x5a\xa3\x9a\x89\x58\xd3\xa8\x0d\xed\x6c\x80\x64\x26\x27\x56\xa1\x3b\x07\xe3\x58\xa9\x1d\xf4\x0f\x6f\x30\xb6\x34\xbc\xe5\xf5\x7f\x00\x63\x75\x2e\x74\xc9\x39\x54\x6d\x2c\x75\x20\x75\xd5\xe6\x48\x6a\x0a\x65\x3a\xb6\x34\x8e\xf5\xc3\x19\x4a\xa5\xa2\x72\xa1\xa8\x0c\x62\xa2\x28\x12\x08\x1d\x0a\xac\xdb\x0c\xed\xa7\xee\x9f\xc2\x7a\xa2\x52\x15\x09\x6c\x41\xa6\x33\x0c\x31\x57\x89\x2e\x19\x16\x3a\x51\x00\xd6\x6d\x4b\x58\x1c\xd9\xba\x40\x1c\x2a\x0a\x60\x3a\x10\x0c\x6a\x54\x40\xdd\x56\xf0\x7e\xd2\xc6\xf0\x97\xaf\x09\xed\x82\xb1\xea\x03\x63\x0b\xfa\xae\x9f\x45\x78\x63\xc3\x0d\x59\x2e\x97\x2c\xcc\xb6\x5a\xfd\xad\x43\xe7\xd3\x74\x21\xce\x69\xda\x58\x5d\x94\x96\xa4\x6a\x14\xb3\xd1\x92\x07\xe5\xc5\x60\x91\x31\x57\xdd\x4a\x13\x70\x6f\x36\x0f\x50\xbe\xbd\xd6\xdd\x31\xde\x6d\x72\xa5\xcc\x48\x94\x47\xf5\x46\x9d\x56\xfd\x73\x8c\xbd\xa4\x8d\x4e\xe6\x08\x87\x04\xcd\xaa\xdb\x6d\x51\xac\x73\xdb\x54\xbd\x57\x6c\xfa\x43\x36\xae\xf4\xac\x4d\x72\xd3\xd6\x5a\x5d\xa5\x95\xef\x37\x9d\xf4\xd4\xcb\x42\x2b\x1f\xcc\x5b\x03\x93\xd5\xe7\x62\xec\xa6\x87\x49\xba\xca\x26\x6b\x8d\x74\xd1\x59\x18\xca\x58\x8a\x7c\xa3\xd4\xae\x7a\xf3\x03\xef\xf8\x0d\xc6\x96\xf5\x5b\x5e\xff\x07\x30\x56\xa1\xb6\x40\x04\x61\x06\x99\x4a\x21\xdf\xe7\x92\x00\x72\xa0\x5b\x2a\xa6\x9c\x29\x98\x08\x21\x85\xd0\xb0\xa6\xdb\x92\x09\x0b\xe9\xc0\xa2\x96\xd0\x38\x12\x1c\x5a\x98\x1f\x72\xd0\xcf\x60\xbd\x80\x44\xd7\x6d\x6e\x43\x5d\x83\x0a\xe1\x18\x43\x2e\x81\x54\x38\x55\x15\xae\x58\x0a\x17\x58\x72\xc6\xb0\x02\x20\x44\x8c\x5a\xd4\xd2\x74\xa2\x0b\x85\xda\x12\x5b\xc2\x62\xfb\xcc\x42\xbf\x60\x2c\x7e\x60\x6c\x71\x37\xd4\xaa\xb9\xc6\x20\xc8\x06\x1d\xbd\xe1\x97\xd9\xd8\xb2\x73\x93\x74\x07\xce\x64\xa9\x0a\xa6\x41\x6f\xe8\xaa\x35\x47\xf4\x1b\x81\x42\x4a\x70\xed\xee\xd2\x01\x2f\x85\xbc\xe4\x56\xfd\x6d\xa7\x09\x02\x61\xad\x96\xa9\xda\x96\xce\xdd\x65\x7f\xac\xc6\x56\x49\x23\x74\xcd\x0f\x08\x1f\x18\x7b\xc1\x8b\x12\x88\x23\x35\x35\x18\x36\x63\xa6\x64\x1a\x69\x1f\x3b\xf3\x49\x66\x36\x63\xac\x43\xbc\x95\xd9\x1d\x47\x61\x84\xb6\xdb\x61\x3f\xd0\xfd\x16\x2b\xa6\x1a\xf9\x82\x39\xdb\xf4\x0a\xf5\xac\xbb\xed\x56\x32\x51\x04\xe5\x76\xd1\x75\xcc\xce\xc2\x9a\xa1\x71\x00\xe6\x29\x6f\x65\x2d\x8e\xb5\x89\x1b\x8c\xad\x3a\xb7\xbc\xfe\x0f\x60\xec\x3e\x3f\xd4\x55\xa2\x28\x5c\xd7\x89\xb4\xb9\x22\xf7\x37\x6b\xa0\x42\x95\x00\x66\x41\x82\x85\xa5\x53\xac\x22\x80\x15\x24\xb1\x0a\x6d\x45\x87\x94\x03\xc6\x29\xb0\x11\x60\xca\x71\x9e\x7f\x3f\xeb\x21\x66\x4c\x40\x5d\x60\x89\x91\x8a\x00\xd2\x2c\x4d\xd1\x05\x47\xb6\xad\x92\x3d\x77\x39\x51\x21\xa2\x00\x41\x8a\x35\x9b\x1e\x72\x03\xc5\xe2\xb6\xcd\x74\x85\x0b\x0a\xf6\x99\x05\xbd\x60\x2c\x79\x60\x6c\xc6\xa7\xb5\x49\x7f\x3c\x2f\x15\xca\x2d\x60\xf0\x4c\xa5\x35\xda\xba\xbd\x18\xc5\x10\xca\x06\x89\x23\x35\x83\x57\x83\x35\x5d\x5b\x83\x72\xb2\x62\x79\x7d\x45\x1d\xe4\x92\xd1\x38\x5c\x17\xf9\xcc\x77\x97\xe5\x05\x4a\x89\xfe\xbc\x62\xaf\x69\x31\x4f\xcb\xc4\xce\x99\x8d\x2a\xbb\x88\xb1\x17\xbc\x69\xd4\xc7\x9b\x9c\x59\xd6\x69\xbd\xcf\x76\xdd\x70\xe1\xd6\xfc\x7c\xde\x2c\x8c\xbb\x2b\xb7\x11\x2d\x72\xcb\x02\x92\x8b\x49\x3b\xcb\xb7\xde\xba\xb7\x88\xf3\xb5\x81\x57\xcb\x1a\x28\xde\x4e\x78\x23\xd5\x8a\xd4\xfa\x66\x6a\x62\x63\xe3\x0d\x92\x9d\x00\xf1\x70\x97\x5a\x64\x76\xa3\x63\x35\x6d\x7a\x83\xb1\x75\xf3\x96\xd7\xff\x01\x8c\xb5\x29\x42\xdc\xd2\x39\x11\xd2\xa2\x9c\x33\x68\x43\x84\x11\xa4\x5c\x40\x40\xe8\x3e\x24\x32\x4e\x6c\x21\xb8\x6a\x6b\x14\x2b\x36\x56\x89\x50\xb1\xad\x49\x5b\xb1\x2d\xdb\x66\xc7\x7a\xed\xfd\xac\x27\x54\x51\x24\xb3\xa1\x2a\x74\x0c\x29\x52\xa4\x64\xcc\xd6\xa1\xc6\x6c\xac\xaa\x0c\xd9\x3a\xb1\x2d\x9d\xd9\xc8\x92\x08\x6a\xd8\x12\x8a\x2e\x6c\x5d\xdf\x0f\x0e\x01\xf6\xd4\x3f\x2c\x7a\x5d\x50\x56\x7b\x9c\x7a\x55\x8d\x71\xbe\x18\xb9\x79\x4d\xaf\x2c\x87\xe9\x74\xba\xe5\x2c\x36\x23\xb1\x2c\xf5\xb2\xe9\x76\xc3\x6b\xda\xe5\xb4\x6f\x84\xa5\xec\x2e\xe3\xf2\x70\x04\xfd\xec\xa6\xdb\x29\x99\x64\x95\x8a\x9c\x54\x41\xf2\x7c\xb3\x6d\xb4\xdc\x20\x67\x17\xe4\x70\x4d\xf0\x74\x51\x36\x72\x63\xf3\x22\xc8\x5e\x24\xb2\xc4\x6b\x99\x60\x3e\x66\x63\xb6\x58\xe4\x66\x5b\xd0\x74\x0b\x6d\xde\xc6\xb6\x5b\xe8\x47\x76\x3b\x5a\x8c\x4a\xc0\x9b\xba\x5a\x09\x26\x73\xf3\xe2\x32\xdc\x74\x86\xdd\x51\x75\x49\x16\xc9\xb4\x5c\xf5\xcc\x20\x35\x5e\x2d\xcb\xba\xa6\x6e\x84\x05\x02\xa4\xba\x53\x51\xcb\x66\xd1\x41\x73\x70\x83\xb2\x8d\xe0\x96\xdb\xff\x01\x94\x85\xba\x22\x35\xa6\x2a\x9c\xe8\x8a\x42\x85\x65\xab\x9a\x82\xa0\xa2\x59\xdc\x02\xea\x9e\xb5\x14\x33\x81\x55\x8a\x6c\x1d\xa9\x2a\x44\x36\x85\x16\xa3\x18\x53\x02\x25\x05\x87\x29\xcf\xa7\xd0\x9e\xd9\x36\xb0\x21\xe5\x54\x10\x80\x75\xc9\x74\xa2\x12\x85\xa8\xc4\xe6\x42\x41\x5c\xe8\x58\x23\xdc\xb2\x98\xd0\x75\x5b\xb7\xb1\x44\x10\x63\x46\x88\x66\x13\xaa\x4a\x29\x0e\x69\x01\x84\x17\x94\xd5\x1f\x28\xdb\x98\xee\xb6\xea\x26\x26\x78\x57\x2e\x6c\x6a\x9d\x3c\x07\x4d\x26\x4a\xe5\x30\x9f\x12\x9b\x86\xec\x55\x60\x2b\x6e\xd9\xf6\xaa\xa2\xa5\xc8\x62\x99\x1c\xae\x50\xa1\xb9\x43\xb2\xac\x68\x73\x1d\xa3\x38\x5f\xd9\xe0\x7a\xa7\x3f\x5f\x2c\xba\x9d\x4e\xb1\x92\x4b\xfb\x4e\xce\x6d\xd8\x47\x9e\xee\x29\x3b\xba\x80\x7c\x96\x5b\xd7\xbd\xdc\x82\xf7\xc4\x56\xc6\x1e\x5a\x4d\xe6\xee\xa0\x62\xb5\xab\xbb\x61\xcf\x65\xaa\xba\x6a\x83\xd8\x6a\x4d\xb1\x3e\xdc\x6d\x57\x7a\x23\xcf\xfd\x7e\x7a\x48\x82\x51\xbe\x34\xb5\x74\x30\xd9\x0d\x7b\xca\x56\x0b\x87\x13\x95\xca\x6a\xaf\x3f\x1b\xa5\x58\x57\x8b\x8f\x79\x41\x74\x83\xb2\xad\xea\x2d\xb7\xff\x03\x28\x0b\x98\xce\xb1\xe0\x96\xc0\x50\x20\x89\xa0\x00\x44\x05\x0a\xd7\x54\x0b\x20\x8a\x35\x26\xa8\x6a\x53\xdd\x52\x14\x46\xb8\xad\x29\x98\x5b\xfb\x49\x95\x6a\xa9\x8a\x60\x9a\x64\x87\xfa\xff\x67\xd0\x9e\x6b\x00\x59\x50\x45\x0a\xe1\x44\x60\xae\x01\xcc\x2c\x8d\x73\x8b\x32\xa0\x6a\x8a\x26\x18\xd7\xb0\xb0\x31\x96\x80\x72\x8c\x89\x26\x08\x05\x04\x00\x4c\x2c\x45\xb1\xb1\x14\x7b\xca\x2a\x17\x94\x7d\x5c\x16\x4b\x3b\x4b\x39\xad\xe4\x1d\xd7\xb7\x68\xa1\xb8\x29\x69\xdb\x75\xb3\xc9\x46\xfd\xb8\x57\x6a\xa8\x35\xd3\x4c\x4d\xad\x45\xaf\xdf\x2f\xcc\x0d\x14\xa6\x19\x76\x5b\xbc\x5c\x13\x64\x07\xd5\xf6\x3a\xa7\xaa\xa5\xdd\xa2\xde\x6c\x2a\xdb\x15\xa2\x19\x3a\xa8\xc7\xe5\xb0\x28\xe0\xac\x7d\x5c\x23\x3d\x50\xf6\x82\x18\x68\x47\xc7\x33\xa3\x3d\xaf\xd0\xd8\xe8\x6d\xa6\xf1\x26\x8b\x06\xed\xfa\x1c\xb9\xf1\xa6\xbd\x32\x67\x55\x62\x74\xa7\xeb\x74\x5b\x35\x5b\x7e\xc1\xd0\x72\xd9\x52\x64\xf5\x36\xeb\x7e\x68\x57\x97\x2c\x5d\x28\xd1\xb0\x30\xb0\x7b\x32\xc3\x7b\x7d\xbb\x3f\xcd\x1b\x39\xb6\xad\x40\xed\xa0\x7f\xfd\x8f\xa1\xec\x0b\x8f\x31\xdc\x78\x31\xe2\x8e\x87\x22\x9e\x3f\x9f\x7e\x8f\xb2\x97\x9e\xad\xbe\x4f\xe7\xf5\xe3\xd1\x77\x68\x7b\xe1\xe1\xe6\xef\x7d\x00\xe4\xe2\x01\xe7\x8b\xe7\x6e\x5a\x43\xad\x95\xce\xe4\x73\x4a\x99\x34\xb2\xd5\x6a\x0b\x0d\x3a\xca\xa0\x3d\xec\x36\xcc\x66\x05\xb5\x8d\x52\xad\xd9\x1e\xa0\x2a\xee\xa8\xa4\x51\x6e\xe0\x96\x51\x2b\xb6\xb4\x42\xf9\xb8\x88\x7d\x7c\xd4\xa2\x5c\x6f\x6c\x32\xc5\x8d\x28\xeb\xba\x95\x6f\x21\x29\xc3\xed\xa6\x85\x8b\x15\x54\xcc\xf4\xd7\x9e\x6d\xd5\x77\x18\x13\x9f\xba\xe9\xc5\xc5\x42\xef\xe1\xd7\xcc\xe1\xd7\x3d\xcf\xcd\x71\x4b\xed\xb1\x82\xad\xc6\x13\x31\xae\xca\x76\x6e\xb5\x40\x58\x96\x5b\x8d\xc9\xda\x98\xf7\xda\xcb\x82\xea\x28\x03\xbe\x99\x00\xa0\xc0\xe3\x63\x0e\x23\xbd\x9e\xb6\x0e\xd7\x3b\x8f\xff\xa5\xcf\x4a\x0f\x9f\xb3\x86\x61\xf8\x17\xf9\x77\x7a\xa4\x84\x28\x2d\x06\x2e\xdc\xe5\xc7\x36\x64\x3d\x25\x93\x81\x79\xa3\xb5\xcd\xdb\x5a\x95\xb8\x9b\xf2\xb8\x5e\x6b\x72\xd0\x33\xf3\x49\xf5\xa0\x6e\x63\xe6\x59\x8a\x3a\x19\x9f\x22\x47\xaa\xe5\x51\x00\xb4\xa0\x94\xc5\xd1\x78\xc0\x7c\xbe\x74\xfd\x9a\xb2\x51\xab\xb5\xec\x34\xd9\x61\x83\x79\x3a\x55\xad\xd8\x9e\xbd\x5b\x5a\x45\x3b\x9a\xda\x01\xf3\xfb\x03\x61\x94\x2a\xdd\x64\x0c\xfb\xf9\xfe\x70\x52\xce\x36\x5a\x5b\x25\xdb\xfc\xf3\xcf\xeb\xe0\xfe\xc9\xae\x41\x77\xb9\xa6\xfa\xd4\x35\x59\xc3\xe9\x8d\x95\xe9\x54\x4d\x13\x8d\xaf\x87\xc3\x4c\xb5\x5c\xea\xd0\x65\x26\xbf\xd8\x74\xbc\xba\xb5\x99\x93\x95\xbf\x72\x5a\xb5\xc5\xda\xde\x1a\x8f\xae\xe1\x57\xb1\xe1\xbb\xa1\xf7\x32\x79\x77\x31\xc9\xd0\x8c\xc8\xb4\xfb\x85\x46\x6a\xd2\xce\x4e\x15\xa7\x1d\x8f\xf3\x39\xd3\x2d\x06\x60\x3c\x28\x15\x71\x75\xd0\x60\x66\x05\x4e\x3c\x9a\x9f\x06\x39\x8f\x99\xb1\x5b\xaa\x8d\x77\xa3\xe9\x64\x9a\xaf\x95\x26\x55\x6d\xd4\xde\xce\xf2\xe5\xf2\x24\xd7\x55\x47\xeb\xc1\xe1\x89\xb4\x1f\x0b\xbd\x7a\x17\xf4\xcd\x2b\xe8\x33\xe9\xe1\xa4\x22\x15\x58\xde\x15\x4d\x14\x2c\xea\xa9\xb6\x98\x6d\xfa\x43\xbe\x6d\xa8\x73\x77\x58\x4c\xb7\xfc\x51\x8a\x39\xd5\x29\x68\x50\xe7\x11\x7a\x71\x2f\xf4\xfa\x68\x57\x55\xc2\xa8\xbf\x88\xbc\x8d\x55\xdf\x76\x1b\xe6\x2e\xbb\xec\xee\xda\x0b\x2f\xe7\x63\xa5\x9b\x6d\x17\x73\xa8\x54\xcd\xd0\x64\x31\x99\xea\xef\x8a\xb5\xd2\xba\x82\x05\xdf\x38\x2e\x06\x92\x34\x6a\xc5\x4e\x81\x52\xa8\x0f\x8b\x85\x75\xd2\xcd\x23\x2d\x96\xdb\x54\x2b\xfd\xe3\xa1\xc7\x77\x41\xdf\xbd\x82\x3e\x1b\x4f\x9d\x4a\x08\x34\x6d\x1a\x56\x32\x51\xa1\x3d\x20\x59\x67\x2c\x53\xad\xca\xba\xb8\xa8\x40\x3e\x48\xb1\x38\x57\xa1\x3a\x89\xaa\xca\x19\x7a\x79\x2f\xf4\x81\x1b\xa8\xaa\xec\x0d\x07\x48\xad\x77\x3d\x67\x5d\x72\xa0\x31\xa9\x9b\x05\x6f\xe6\xae\x44\x28\x1d\x92\x32\xc2\x7a\x3c\x5b\xb0\xd5\x38\xbb\x69\x5a\xb6\xd1\x58\x56\xb3\x85\x4d\x73\x13\xed\xe6\xdb\x49\xdf\xf5\x7d\xb3\x9f\xef\xa4\xc5\x1a\xf6\xc3\xd5\xd6\x8c\xc8\xa6\x92\xfc\x0b\xa0\x27\x77\x41\x3f\xbc\x82\x3e\xbd\x1a\xd0\xaa\x42\x8c\x4d\xae\xea\x2c\x57\x1d\xb7\x56\xde\x8e\x8c\x10\x7b\xa5\x42\x7e\xc2\x87\x3d\xb7\x8f\xf4\x58\x75\x87\xf9\x30\x37\x3e\x07\x1c\xfb\x5e\xe8\x99\xb7\xf6\xdb\x4b\xb5\xaa\x74\x16\x39\x1f\xd3\xb1\xd7\xa0\x46\x6f\x39\x59\x2e\xd7\xb9\xdd\x38\x57\x1c\xd3\x21\xdd\xcc\xbc\x79\x5c\x9d\x17\xdc\x5c\xad\xba\xb4\x2b\xac\x33\x5a\xce\x50\x0f\xd5\xcc\x45\xc1\xb5\x1b\x46\xaa\xbc\xe8\x65\x93\x3d\x34\xe9\x55\xcd\x1d\xa3\xa5\x69\xf4\x17\x04\x1c\xed\x2e\xe8\xf9\x75\xc0\xc1\x5b\x67\x31\x97\x41\xb1\x4d\x9b\x71\xb6\xb5\xed\xb3\xd9\x84\x8f\x2a\xd9\x6d\xb9\xe0\x37\xcc\xee\xb4\xe4\x81\xf9\x54\xd5\x35\xb0\x95\x67\xd6\x5f\xd7\x64\xbf\x1b\xfa\x4c\xc4\xdb\x85\xe4\xba\x4e\xab\x6d\x52\x86\xe9\x49\x2e\xd7\xda\x42\x2b\xca\x17\x24\xe9\x66\x52\x2b\x9f\x65\xab\x51\xc7\xd5\xe0\x72\x33\xde\x0c\x46\xcb\xd2\x10\x0c\x0b\xfe\x28\x97\x4e\xb1\xee\x58\xac\x71\x7b\x41\xf4\x82\xe9\x4c\x26\xbb\xf4\xa0\xd5\x28\xd6\x7a\xd5\x9d\xb5\x4d\x3b\x3f\x1c\x7a\xfd\x2e\xe8\x9d\xeb\x80\x13\xf8\x83\x4c\xa5\x9a\x1f\xaf\x67\xf1\x7a\x56\xdc\xda\xa5\x5a\xb6\x3d\x86\xcb\xa4\xa6\xa3\x8a\x32\x2b\x63\x56\x70\x61\xe4\xaf\x42\x94\x5e\x3f\x42\x3f\xbe\x17\xfa\x4e\x94\xf4\xf2\xd5\x74\x2a\xee\xe6\xea\x9e\x53\xe6\x41\x99\x8d\xa2\xb2\x8e\xc3\xde\xa4\x46\x33\xd3\xfa\xa0\xa1\xf6\xec\x99\x59\x89\x67\xee\xa4\x57\x18\x68\x73\x67\x08\x66\x53\x5c\x76\xa3\xe1\x84\xaf\x26\x6a\x6a\x3c\x47\xb3\x11\x5c\x85\x4d\x34\xe9\x65\x76\x13\x3b\x59\x4c\xfd\x05\x19\x0e\xbd\x0b\xfa\xe9\x35\xf4\x6a\xbc\xec\x59\xd6\x98\x0f\xc8\x36\xbf\x32\xc6\x5b\x26\xcb\xea\x22\xb4\x29\x64\xd3\x38\x95\x05\x8e\x05\xc2\xb9\xde\x6d\xea\x9b\xc5\x99\xf5\xee\xbd\xd0\x0b\x33\xd5\xe2\x35\xde\xc9\x61\xa5\xd8\x49\x56\x47\x86\x36\x5c\xee\x26\x3b\x63\x3d\xed\xcc\x6b\xa5\x4d\xb7\x4f\x93\x96\xcc\x93\xc6\x48\xe2\x3c\x99\xd7\x75\x6d\x59\x4a\x47\xbd\xe5\xba\xb3\x4d\x99\x60\x97\x17\x2c\xdf\x73\xd6\x49\xc7\xef\x1a\x35\x15\xae\x6c\x08\xb2\x48\x1a\x3f\x9e\xf5\x10\xdc\x85\x7d\x70\x1d\xec\xb7\xb1\xdf\xe7\x8d\x5c\xab\x3a\xed\x2c\x52\xc9\x6d\x56\x17\x78\x3d\x4a\x17\xd3\xf9\xb2\xd3\xd3\x05\x9e\x64\xc3\x59\x3b\x08\x8c\xbe\xd9\x3a\xd3\x7e\x72\x2f\xf6\x32\x8f\x4c\x67\x14\x27\x99\x67\x19\x93\x42\x09\x2f\xf3\xf1\x14\xf4\x66\xb6\x9a\xb3\x47\x58\xa6\x1b\xa5\x1a\x0f\xd3\xed\xee\x5c\x45\xaa\xc6\x94\x2e\xad\x94\xec\x59\xbf\xad\xe6\x46\xcb\x41\x0d\x35\xd4\xfc\x9a\x2c\x8c\x45\x79\xd3\xe8\x68\xd4\x67\xd3\x1e\xdb\x6c\xc7\x49\xe3\xc7\xd3\x1e\xc2\xbb\xb0\x8f\xae\xa3\xfd\x42\xc3\x6e\x8a\x8b\x6c\x43\xa8\xa1\xb5\xf4\x77\xbe\x04\xc3\x55\x61\x8a\x6b\x6c\xb6\x98\xb7\x6a\x55\x27\xea\xe6\xa5\xd1\x2f\xd2\xd4\xf9\x46\x7b\xfd\x7c\xf9\x77\x63\x9f\xf7\x0a\x36\x03\xe3\x1c\x0e\x1c\x73\x59\xdf\xa8\x3b\xb3\x3f\x5b\xc4\xa3\x6c\xbb\x1f\xfb\x32\x47\x6b\xbd\x66\x1e\x6c\xf4\xfc\xca\x1c\x71\x28\x74\x7b\x6b\x66\x3b\x7e\x75\x52\x8f\xd2\xab\x62\x79\x35\x74\x2b\x8a\x42\xd5\x6c\x40\x57\x53\xbb\x9a\xd2\x52\xc9\x15\x6c\x37\x6b\x7f\x41\xc8\x81\xf7\x4d\x78\xd7\xd7\xd8\x47\xb9\x70\x56\xca\xad\x03\x88\xc2\xc6\x60\x5c\x31\x06\x13\xc7\xaf\x07\x38\x9d\xb5\xca\x29\x1b\x54\x20\x27\x60\x11\x8d\x51\x7f\x54\x3e\x4f\x78\xbd\x7b\xb1\xe7\x86\x31\x9b\x37\xbd\x3c\xe3\x3a\xca\x55\xc6\x4d\xcd\xe8\xc2\xb6\xb6\x30\xe7\xf1\x2c\xc9\x0d\x42\xcd\x75\xb8\x03\xf9\x20\xe5\xc5\xa6\x04\xc3\x51\xa7\xd5\xae\xe9\x6c\x55\x01\x1e\x72\x5c\x4b\x6f\xea\xa5\x24\xb6\xa1\xa8\x4c\x20\xce\x76\x27\xcb\x9c\x53\x9c\x94\x5a\xd9\x53\x92\xf3\x72\xf5\xe2\xd6\x7b\xc9\x1f\xa8\x5e\x3c\xbc\x9b\x7c\x5e\x14\xd5\x08\xb3\x35\x80\x05\x96\x8a\xd0\x10\x64\x50\xb3\x31\xa1\x58\xe8\x0a\xb0\x30\xd4\x81\xaa\x29\x90\xda\x92\x73\xc9\x14\xae\x32\x5d\x95\x08\x03\x0d\xa9\x58\x55\xa1\x25\xe5\x13\xaf\x1e\x50\x3e\x16\x0b\x02\x35\x65\x16\x27\x39\x10\xee\x36\xd1\xa8\x20\x30\x59\x55\x72\x85\xa9\xb3\xe2\x4e\xc9\xca\xf4\x68\xa4\x35\x7c\x7f\x61\x2b\xc5\x7c\x70\x4c\x7d\x5e\xeb\xfd\x8d\x17\x91\xef\x29\x05\xdd\x7e\x09\xf8\xbb\xc1\x3c\xbf\x08\xfc\x08\xa6\xc7\xa2\xf8\xb8\xab\xee\x69\x57\x80\xab\xe3\xf0\xa2\xcf\xbd\xd5\xe6\xeb\x21\x7a\xc3\x8e\x87\x0d\x7a\x8f\x3b\x87\x5d\x5b\x71\xb4\x03\xbf\x47\x91\x1d\x84\x5c\x46\x7c\x1e\xf8\xbe\xdc\xc4\x1e\x5b\xfa\x7c\x7c\xad\xe8\xb0\x5f\xd6\x7b\x94\x9d\x22\x09\x0b\xf9\xd8\x5d\x9d\x4e\x5e\x2b\xfb\x9f\xc3\xeb\x8e\x3f\x9f\x76\x0d\xfe\xf9\xf7\x04\x3c\xbe\x00\xf9\x73\x24\xc3\x95\x0c\x7f\xfe\x3d\xf1\xf3\x0a\xfc\x87\xfc\x07\xfd\x46\xc8\x6f\x8e\x20\x04\x6b\x98\xdb\x3f\x9f\x84\xf8\x32\x0c\xa5\x1f\x57\x0e\xe0\xef\x2f\x56\x9e\x9e\x48\x1f\xb6\xdb\x89\x7e\xfe\x3d\xf1\xff\xfe\xf4\xd0\xea\xff\xfc\x74\x69\xc3\x41\x72\xdf\xca\xbd\xef\x63\x9d\x4c\x7a\xd4\xbb\xc7\xef\xe7\xdf\xaf\x5a\x3b\xf6\x6c\x0f\xc4\xcf\xbf\x27\xc0\x93\x53\xff\x7b\x75\x7d\xe4\xb3\xf9\xde\x2e\xa2\x51\x21\x11\xc7\x9a\x2d\x99\x04\x52\x40\x05\x41\x9d\x5a\x14\xeb\xb6\x0e\x30\x85\x12\x11\x45\x15\xc0\xd2\x99\xb0\x6c\x5b\xe5\xaa\xc0\x54\xc5\x8c\x68\xd4\xb2\x85\x0d\xed\x9f\x7f\xba\xd1\xc2\x0b\x18\x60\x8d\x48\xcd\x66\x10\x6b\x80\x59\x8c\x23\x2e\x04\x01\x9a\x0e\x14\x0b\x10\xa6\x6b\x42\x63\x1a\x57\x29\x22\x44\xd1\x80\xc2\x19\x42\xdc\x22\x96\x04\x42\x41\x8a\x4a\x2c\x2a\xbf\x1f\x03\xf8\xf5\xf9\xb9\x60\x19\xcf\x97\xf1\xe7\xf6\xfd\x35\x84\x25\xb6\x2c\x08\xb1\xe0\x18\x31\xdd\x26\x48\x25\x3a\x06\x12\x11\x86\x11\x50\x25\x94\xb6\xa6\x0a\x49\x01\xd2\x75\x5b\x42\xa0\x28\x92\x29\x42\x2a\x84\x40\x8a\x54\xd5\x96\xea\xf7\x20\xfc\xd7\xb3\xec\x75\x84\x6d\x61\x01\x5b\xd5\x11\x84\x92\x2b\x2a\x05\x82\xe9\xaa\x05\x21\xc3\x82\xaa\xaa\x62\x13\x4d\x57\x75\xc1\xa4\x2a\x74\xce\x30\xc0\x98\xea\x08\x73\xa8\x10\x6a\x01\x55\x81\x04\xbf\x0f\xe1\xbb\x7b\xfd\xb7\x46\xf8\x7d\xe3\xf8\x5f\x0c\xfe\xc5\xe0\x5f\x0c\xfe\xc5\xe0\x5f\x0c\xfe\xc5\xe0\x5f\x0c\x7e\x18\x06\x87\xdf\xfe\xbf\x9f\xfe\xf7\x3d\xf3\x93\xfd\xec\x2d\xe2\xf3\xc3\x96\x99\xb7\x8e\x2f\x0f\xd3\xdc\x63\xd9\x79\x32\xd1\x9b\x6e\x75\xd0\x5e\x35\xf2\x9b\xa9\x40\xfe\x42\x8f\xba\xb2\x9d\xa1\x5b\xc3\x8b\x4a\x03\x65\x17\x25\xa5\x9c\xa7\x86\x0e\xbb\xa8\x72\x1e\x9f\x57\x51\xc4\x82\xae\x07\x3d\x35\xe6\x9b\x60\x40\xfb\x9e\x70\x9c\xb8\xe5\x98\x7c\xec\x27\x77\xf5\x20\x6a\x07\x9d\x49\xb7\x50\xcb\xb5\xd2\xab\xe5\x67\x17\x3b\x0e\x46\x94\xd7\xfd\xe5\x70\x3a\xc8\x4c\x06\x32\xa2\xd2\x8c\xd2\xb2\x9e\xe1\x64\x32\x35\x6b\x51\x48\x53\xcd\x55\x6f\x17\xb6\x17\xdb\x82\x18\x4d\xe7\x87\xab\x72\xfe\x5a\xcd\x77\x9f\x6a\x32\x33\x6e\x64\xc0\x66\x26\xdd\xe1\x4d\x4e\xea\xcd\xa0\xb6\x43\x95\x59\x79\x94\x2c\xaf\x3d\x1c\x35\x69\xb7\xad\x0d\x04\x8c\xb4\xf1\x06\x87\x45\x7b\xdc\xcd\xc4\x46\x3e\x1e\xf3\xdd\xdc\x98\x14\xab\x9c\xd7\x97\xa2\xee\x15\x9b\x2e\xa8\xe5\xa7\x73\x31\xe2\xfa\xb8\x31\xb2\xab\xa0\xf6\x6f\x71\xe8\x56\x71\xe8\x00\xf8\xb0\xe2\xcf\x33\x9b\xa0\x38\x57\x52\xad\x6d\xb5\x2d\xf5\xc8\x34\xf3\xb3\x5e\xd8\x6b\x77\x92\xd9\x56\xba\x81\xf3\xc4\xeb\x79\x63\xd2\xac\xad\x9f\xfa\xfb\x07\x95\x65\x5e\xd8\xb6\xec\x8e\xca\xcc\x8b\x9b\x61\x7d\x6f\x6d\xe6\xc9\x86\x58\x8f\xe3\xdb\x52\x98\xa2\x68\x1c\x51\x4e\x54\xa6\xaa\x36\xd7\x98\x25\x54\x4e\x89\x0e\xa9\x8a\x89\x0d\x10\xa5\x14\x10\x01\x15\xae\x6a\x44\x68\xc0\x52\x81\x62\xd9\xc2\x52\x28\x11\x84\xa1\xd3\xae\x13\x4f\xa2\x40\xf5\x8c\xf2\x11\x70\x37\x95\x06\x15\x50\xca\x6f\xe3\xf1\xba\x06\xbd\x21\x60\xdb\x79\x00\x69\xad\xb0\x59\x55\x32\xdb\x3a\x8e\xd3\x26\xcf\xf4\x56\xeb\x1c\x5d\x23\x27\x0e\xeb\xfe\xc8\x78\xc7\xf1\xe2\x73\x6c\xe6\x99\xf5\x1f\x6c\x7f\x98\x4a\xf2\x2b\x7d\xef\x6c\xff\x79\xb9\xf8\x36\xee\x88\x58\x52\x03\xb6\xa5\x69\xba\x62\x53\x1d\x40\x2e\xb8\x14\x1c\x2a\x80\x48\x05\xda\x94\x2a\x14\x71\x4a\x75\x02\x18\xc4\x52\x55\xa1\xad\x6a\x2a\xd5\x54\x8d\x01\x86\x34\x76\xda\xed\xe3\x46\x91\xf1\xce\x7e\xeb\xea\xf9\xfa\x9b\xfb\x67\xdc\xd9\x6f\xae\x11\x5b\x57\x91\x10\x0a\x95\x54\xb1\x18\xb7\xec\xfd\x1c\x99\x0a\x0c\x54\xac\x32\xa0\x22\xc9\x24\x61\x58\xda\x3a\x94\x8a\xd4\x05\xa7\x9a\x05\x24\x00\x58\x20\x40\x89\x72\xda\x13\xe2\x39\xdf\x2e\xfa\x9d\x59\x06\x28\x88\x55\xbc\xc8\x34\xcc\xcd\xbc\x99\x42\x41\xa1\x96\xdc\x41\xad\xb5\x75\x23\xe8\xd9\xd5\xdc\x70\xd6\xec\x3b\xe1\xb2\x9d\xec\x1c\xe4\x4b\xdd\x4c\xf2\xd4\xa9\x9b\xaf\x01\xbd\xd6\xef\x47\xdc\xb3\xf7\xb5\x5f\xe7\xe7\xf6\x7f\x04\xdf\x74\x8a\x2d\x28\x11\x93\x08\x6b\xc0\x66\x1c\xab\x54\x0a\x9b\x73\x85\x00\xa8\x28\x4c\xb1\x29\x02\x16\xc2\x16\x55\x2d\x28\x6c\x9b\x51\x5b\xe7\x0a\x03\xba\x0e\x09\xe3\x48\x23\xa7\x9d\x0d\x9e\xe3\xfe\x63\xfa\x7d\xec\xab\x36\xac\xe8\x86\x36\xf1\x1c\xb3\x21\x81\xe8\x76\xb5\x5e\x81\x67\x9b\x1b\xd2\x4c\xad\xbd\xc2\x82\xa3\x6e\x16\x62\x56\x42\x45\x17\x36\xdf\xed\x27\xf3\x3e\x7b\xab\xea\xd9\xde\xeb\x07\xac\x3e\xd3\xde\xf7\xfa\xd5\x02\x96\xa5\x10\xcb\xe2\x44\xe3\x1c\x72\x45\x21\xfb\xc0\x21\xa1\x6e\x53\xd5\xa6\x1a\x21\x96\x2a\x31\x27\x3a\x44\x0a\x57\x38\xb3\x6d\x8d\x02\x4d\xa3\x50\x40\x4d\x41\xb6\xa2\x9d\xde\xff\x7f\xee\xd7\xbf\x11\x4e\xe6\x7b\xfc\x9a\xbb\xcf\xde\x4a\xf7\xaa\xff\x3f\xc8\xde\xf7\xfa\x95\x69\x0a\xb4\x24\x53\xa1\x46\xf0\xfe\xe6\x2c\x05\x26\x2a\x97\xcc\xb6\x34\xa0\xab\x0c\x41\x8e\x85\x64\xb6\x84\x1a\x97\xc0\xc2\x8a\x50\xa4\xa2\x61\xc5\x96\x4c\xaa\x9a\xb0\x1e\xde\x92\x7f\xee\xd7\xbf\x1f\x4e\x2f\xc6\xdc\xc3\xf9\xfc\x7d\xf6\x96\xd6\xe7\x36\x9a\x3f\xd0\xde\x77\xdf\xff\x18\xe6\x42\xa7\x0a\x11\x18\x08\x6c\x53\x95\x71\x0e\x34\xd5\x22\x9c\x12\x22\xa9\xa2\x41\x8a\xb1\x06\xb9\xa5\x52\x4d\x93\x90\x5b\x1a\xa1\x40\xd8\xba\x8a\x15\x6a\xc3\xc3\x78\xd5\x6e\xfa\xf5\xef\x88\x53\xe6\x36\x56\x87\xf3\x85\xfb\xec\x2d\x56\xcf\xf6\x76\x7f\xa0\xbd\xef\xf5\xab\xb4\x54\x81\x30\x02\x14\x53\x88\x55\xcd\x92\x9a\x2d\x15\xdb\xa2\x5c\x55\x75\xa4\x0a\x05\x48\x55\x60\x42\x15\xaa\x02\x5d\x67\x1c\x32\x24\x14\xa0\x0a\x48\x24\x65\x40\xc3\xf0\xf4\xc6\xf5\x73\xbf\xfe\xdd\x70\xaa\x59\x7e\x2f\xb2\x0a\x35\x20\xfb\x1b\xaf\x32\xab\xad\xac\xc3\xb9\xa2\x61\x38\x37\xf3\xc5\x8b\x67\xe7\x8f\x47\xb8\xa8\x91\x8a\xac\x33\x67\xb2\xa9\xb2\x6e\x83\x92\xf4\xce\x8e\xa8\x04\x3c\x08\x6b\xa3\xc1\x2e\xdd\x2f\x4d\x73\x41\x59\x9b\xae\xa6\xc7\xd9\x6b\xcf\x58\x8d\x17\x86\xf1\x70\x1f\xc9\x5f\xf1\xc8\xa8\x2b\x99\x94\x51\x57\xf1\x30\x9d\x45\x71\xa1\x97\xab\xc3\x16\x32\x40\x55\x4e\x1b\x7a\xa9\x45\xfc\x1a\x34\xa8\xec\xbb\x62\x5b\x3c\x6e\x5a\x77\xb0\x27\xdb\xc7\xd0\xca\x6f\x76\xa2\xe0\x45\xa3\x36\x9e\x58\x0a\x38\x99\x59\xcc\x5c\x77\xe0\x9d\xf7\x61\xa9\x63\x0b\x4b\xa8\x0a\x6e\x51\x5b\x52\x8d\x30\x0d\x71\xce\xb9\x6e\xd9\x8c\x13\x6a\x49\x4d\x72\xc9\x15\xa8\x10\xcb\x96\x58\xf2\xc3\x4b\xf9\x44\x47\x96\x8a\x04\x17\xda\xe9\xfd\xe5\xe7\xfe\x2f\xde\xe7\xff\x7c\x70\xd6\x37\x34\x9e\xce\x7e\x7f\x88\xff\x8f\xfa\x2b\x7d\x35\x07\xe4\xb8\x4e\x8c\x2d\xcd\x80\x46\x94\x37\x9d\x15\x87\x1a\x84\x5d\xaa\x0f\x27\xea\xac\x32\x9d\xd1\xa6\x86\xa7\x19\xb4\xba\xb0\xe7\x8a\x9f\x17\x4f\x04\x95\xc9\x44\xba\x68\x32\x0b\x8a\x7a\x27\xef\x65\x53\xd2\xe1\x48\x6b\x0c\xe2\x42\xb9\xbc\xeb\xf7\xf4\x75\xcf\x1d\xa5\x59\x66\x89\x2b\xf8\xc8\x77\xaf\x59\x51\xbb\xe7\xa7\xde\x8f\x4f\x36\x9a\x67\xfb\xb2\xb1\xb3\x5a\x67\x97\xf5\xbe\xd1\xa4\x5a\x0b\xb6\x3a\x71\x57\xac\x6b\xd9\xc2\x3c\x9b\xca\x74\xe5\x7c\x27\x9a\x8d\x81\x17\xf8\xdc\xad\xf4\xce\xf6\xc0\xa5\xe8\x6f\x22\x8e\x5a\xd8\xca\x77\x97\x43\x85\xc6\x27\x6c\x33\x97\xf9\x6b\x6c\x39\x83\x16\x31\xb5\x20\x5b\x01\x95\x66\x72\x3d\x6c\x67\xe8\x6e\xb0\x1a\xf4\x3a\x68\xe3\x36\xdc\xe1\xb2\x6d\xc1\xec\x6a\xd6\xac\x48\xdd\x78\x3a\x4f\x36\xde\x19\x6b\x54\xc0\x74\x5b\x13\x44\xaa\xba\xa2\x58\x36\x51\xb1\x4e\xb0\xd0\x34\x4a\x15\x45\x70\x21\xf6\x9c\xc2\x48\xb3\x28\x45\x52\xc3\x52\x83\x04\x73\xae\xab\x8c\x03\x55\x02\x61\xb1\x87\x37\x8f\x9f\x93\xad\x74\x1f\xd9\x72\xe6\x59\x1f\xff\xdb\x92\x2d\x7d\x93\x6c\xc1\x7d\x64\xab\x1b\x8f\x64\x3b\x46\x90\xbf\x25\xd9\x72\xdf\x4f\x36\xa0\x21\x24\x2c\x8a\xa9\xb4\x75\x0d\x4a\x0d\x00\x21\x55\xc8\xb9\x02\x34\x95\x5b\x48\x07\x82\x69\x16\x04\x0a\x51\x04\xc2\x40\x00\x4b\x02\xa8\x01\x55\xd7\x31\x56\x19\x25\xfa\xc3\x3b\xc3\xcf\xc9\x56\xbe\x8f\x6c\x59\xe7\xac\xcf\xb9\x93\x6c\xc6\x5f\x4c\xb6\xe8\x3e\xb2\x15\xce\x75\xdd\x4c\xf3\x4e\xb2\x19\x7f\x1d\xd9\x5e\xac\x70\x7e\x4e\x79\xf3\x47\xd7\x36\xf3\x15\xbd\xd0\x5c\x35\xa7\x56\x59\x29\x18\xa8\xdf\x9b\xb4\xc2\xf2\x6c\x32\x00\xc0\xce\xeb\x51\xa5\xa8\xcd\x80\xd9\x5a\x97\xfa\x29\x63\x70\xd8\x02\xe1\xa2\x86\x99\xbe\xe2\xc0\xf5\xe7\x8f\xe4\x44\x97\x8f\xcb\xa6\x8f\x35\xbc\xbd\xa3\xb2\x31\x2a\xaf\x67\xac\xb1\x6c\x88\x5c\xbb\xbb\x11\x46\x4e\x5a\xa4\xde\x94\xf1\xb6\x59\x2e\xf6\xd9\xce\xb3\xda\xd5\xea\x78\x56\x28\xd7\x2a\x59\x35\x5a\x8c\xcd\x45\x77\xc4\x9b\x0d\xe0\x25\x07\xa9\xfa\x3c\x19\x44\xfd\x59\x8d\x24\x73\xdd\xa1\x15\xed\x34\xdc\x54\x26\x79\x75\x55\xad\x7e\xf9\x9a\xf8\x12\x2d\x8a\xfe\x1a\x6f\xa6\x73\x33\x55\x58\xd0\x4e\x89\xa5\xbd\x9c\xb5\xae\x8f\xa6\x79\xd0\xde\x14\xac\x41\x06\x18\x61\xca\x2a\xf7\xe1\xe2\x3c\x2f\x7c\x05\x83\x07\x62\xfc\xf9\xe5\xc9\xd6\xda\xd7\x35\xcc\xe2\x5d\x23\x05\x1f\xaf\x7c\x96\xd3\xbd\xe6\x8b\xc7\xa3\x79\xd5\xfe\x77\xf8\x3f\x2b\x33\x4a\xd4\xab\x0d\xf3\xbb\x8b\x09\xc5\xed\x79\xee\xcd\xf6\x9f\x87\xe6\x1f\x5d\x40\xfe\x38\xb9\xaf\xc1\x7d\xd6\xa1\xef\x4c\xd0\x5f\x21\xb7\x81\x36\x7d\x6b\xd3\xa8\x5b\xfe\xa8\xea\xa6\xf3\xb9\x72\xa5\xd4\x5c\xda\xa5\x8a\xb3\xec\x44\x85\xd2\x66\x6b\x44\x8d\x06\xce\xd1\xd1\x04\x13\xc8\x06\xfe\xaa\x96\x2a\xf4\x5a\x25\x2b\x17\x99\xdc\x8d\xf3\x96\xe3\x52\xd1\xef\x89\x72\x6b\xb8\x9a\xf5\xfa\x19\x77\x57\x14\xb3\x4a\x31\xbb\x27\x60\x2d\xc4\xeb\x24\x92\x99\xe4\xd0\xe0\xa8\x8e\xd2\xc5\xbc\x3a\x4e\x8e\xca\x9d\xed\x68\xec\x04\x3d\x6c\x16\x80\x28\x89\x42\x50\xae\x91\x73\xe8\xfe\x54\x72\x7f\x6f\xd8\xfe\x3f\x26\x77\xb8\xa2\xd5\xda\x8f\x23\xf7\x27\xaf\x12\x7c\x67\xe4\x18\x9d\x9d\xf3\x4a\xe4\x3e\xcf\x26\x3f\x96\xe0\xbd\xe1\xa0\xdb\x47\xfa\x31\x07\x32\x33\xba\xb6\x2d\x79\x65\xbc\x1b\xac\x97\x53\x8f\x37\x36\xe3\x59\x23\xa6\x85\x34\x1d\xd6\xad\x24\x28\x14\x78\x4d\x69\xc7\xb2\xdd\xab\x44\x13\x7f\xcb\xec\xda\x32\x85\x09\xa8\x4e\xf4\x54\xb3\xb4\xb3\xdb\x7e\x79\x86\x58\xd8\xea\x95\xe2\x82\x93\x73\x58\x3b\x57\x72\xb7\xeb\x56\x90\xdb\x13\x76\xa3\x24\xcd\x86\x28\xcb\x69\x18\x56\xf4\xf1\x68\x04\x9b\xad\x6e\x60\x36\x16\x78\x31\x58\x39\xb2\x12\xa0\x92\x5c\xab\xc6\xa0\x93\xe9\x9f\x09\x74\x7b\x30\x5c\xae\x8f\xdf\x1c\x0c\x17\x39\xdb\x45\x35\xf1\x23\x39\x11\xbe\x5a\xeb\xbe\xb4\xe5\x43\x39\xd1\x87\xc9\xfb\xc9\x4b\x2d\x1f\x27\xef\x2b\x91\xf9\x59\x29\xe8\xca\x19\xef\x3a\x2e\xc8\x68\x54\xba\x7e\x51\xf4\x07\x93\x6c\x39\xe7\x7a\x7a\x12\x65\x1b\xbc\xb8\x8d\x45\x95\x07\xa9\x74\xb5\xef\x87\x8b\xed\x8a\x16\x78\x2a\xdb\x8c\xf2\x46\xbd\x52\x68\x89\xb1\x30\x7a\x95\x54\xd4\x6b\x6f\xfa\x5a\xb1\xb3\x9b\x6f\x86\xc8\x5a\x41\xd8\xc8\xf6\xbc\x30\xd5\xc5\x59\x11\x3a\xe9\x3d\x61\xdc\x5e\x24\xeb\xcb\xda\x20\x4b\x36\x5d\x3f\x4e\x55\x4b\x8e\xe9\x06\xab\xe9\x3a\x82\xcb\x6e\x24\x52\xc4\x57\xd7\x8b\x4c\x31\xb7\x58\xa3\xf3\x7e\x97\xf7\x93\xf1\x02\x84\x8f\x90\x71\x77\xf1\x12\xa6\x73\x65\xcb\xc7\x82\xc5\x47\xc9\xf8\xc9\xeb\x43\x1f\x27\x63\xf6\x9a\x3c\x37\x1d\x73\x33\x32\x5e\xdf\x36\x5f\x39\xd8\x43\x8e\x9c\x36\xe8\x6c\x9c\x6f\xa5\x83\x91\x44\x92\x35\xb2\x0b\x93\xa4\x16\x3d\x73\x8e\xdd\x5c\xda\x2c\x4f\xcc\x70\x68\x75\x77\x3d\x2f\x8c\x43\xc2\xb3\x38\x8e\x7d\xb0\xcc\xef\x2a\xcd\xa8\x57\xf5\x4c\xa7\x31\x4f\xeb\xca\xa0\xcf\x34\x67\xd7\x69\x39\xa0\xbe\x9d\xf2\xa1\xa9\x07\x71\x70\xfa\x33\x3d\x5f\xa2\x4a\x34\x5b\xea\x23\x7d\xcd\x8b\xb3\x72\x67\x37\x9e\xe0\x0e\x16\xb3\xb8\x3e\xc8\x3b\x9d\x4a\x66\xbb\xa2\x38\x8d\xa6\x22\xb7\x6d\x6c\xcf\x8f\x11\xdc\x4f\xca\x0b\xd9\x8f\x90\x32\xbe\xd8\x05\xe2\xfa\x69\x98\x8f\x91\xf2\xa6\x4f\xde\x41\xca\x4f\x5e\xdc\xfa\x38\x29\xaf\x57\xda\xbf\x83\x94\xd7\x9f\x2f\x48\x7a\x9d\x5b\x5d\xc8\x9f\x23\x66\xda\x24\x85\x15\x49\xcb\x64\xdb\xa7\x41\x6f\x5b\x98\x25\x9b\x52\x34\x06\xcd\x75\x64\xa6\xba\xd4\x0e\x65\x7f\x52\xea\xb4\xf4\x74\x4d\x5f\xf8\x2b\x9f\xf4\xba\xf5\x9d\xe0\xa0\x4b\x1a\xd9\x66\x66\x1b\x06\x95\x8c\xb1\x1e\xc3\xca\xac\x8c\xdc\xfa\xcc\x77\x16\x7c\x67\xc3\xd6\x30\xbf\x27\xd0\x7c\x9b\x4f\xce\xd3\xc2\xab\x73\x2b\xee\x4d\x77\x8b\x24\xca\x98\xc1\x66\x23\xc8\x4a\x1d\xec\x9c\xb8\x0d\x96\x25\x58\x49\x86\x53\xdb\xfa\x4c\x72\x5e\xec\x36\xfc\x11\x72\xfa\xc6\x23\x7e\xe9\x6b\x5b\x3e\x4c\xce\xf7\x14\xf3\x7f\xf4\x0a\xdd\xc7\xc9\x99\x7b\x99\x6c\xef\x22\xe7\xf5\xf1\xda\xca\xc7\xd5\x91\x7f\xb4\xa7\x59\xc7\xa1\xc7\x28\xdd\xa2\x19\x59\xce\x5a\x69\x3f\xae\xa4\xc7\xb0\x3d\x17\x3e\x34\x76\xbb\xa2\x3b\x69\x26\x93\x26\x1a\x4c\xf5\x4c\x68\x8c\x97\xa1\x59\x22\xd9\x95\x52\x95\x65\xdd\x5b\x93\x72\xa6\x5f\x5f\xd7\xab\xf9\x61\x33\x20\xb8\x50\x74\x23\xa3\xd6\xae\x2f\x57\x2c\x6d\xf0\x03\x99\xb6\xde\x6e\x38\x9d\xc1\x26\xb4\xbd\xf2\xce\x10\x15\xab\x34\x5a\x4e\xfd\x7c\xaf\xb7\xd9\x02\x0f\xa9\x3c\x56\xa6\xb5\xa4\xd9\x9d\xeb\xed\xcf\x24\xea\xc5\x83\x5d\x1f\x21\xaa\x73\xce\x33\xd3\xf7\xe6\x99\xef\x2a\xf4\x1a\x4f\xfb\xf6\x36\x81\x3f\x79\x29\xf2\xe3\x04\xce\xdf\x22\xe0\x33\x87\x7d\xef\x64\xe8\x78\x17\x83\xcb\xb4\x28\x04\x9d\xa5\x53\x5d\x35\xe3\xac\x96\x1e\x17\x2b\xa8\x26\xa9\xe8\x35\xec\x7c\x31\x59\x72\x71\x69\xd5\xad\x27\x47\x46\xac\x9d\x97\x7e\x8e\xc7\x45\x8a\xb0\xed\x44\xb9\x52\x0a\x4e\xc5\xc4\xaf\x4f\xab\xb9\xc6\x78\xdd\x2b\x5b\x65\xcb\xa9\x75\xab\xbd\x78\x3b\x4b\x4d\xc7\x05\xdc\x23\x9a\x36\xaf\x80\xe9\xb0\x5b\xcf\x44\xf5\x7e\x3f\x9d\xde\x18\xc9\xc2\x02\xb1\xc2\xd6\x13\x91\x2d\x7a\xab\xbc\x98\xe9\xf5\x6d\xb9\x6a\x7b\x39\x91\x0b\xb3\xa7\x14\x81\x00\x00\xab\xa5\x7e\xab\x57\x58\xf9\x29\x37\x89\x37\xa6\x03\x80\x83\x6b\xbd\x79\xb9\x9b\x29\x86\xe9\x80\x16\x4d\xd0\x27\x2c\x0d\xcf\xb6\xdd\x4f\xee\x0b\xc6\x7c\x84\xdc\xec\x9c\xb7\xa6\x1d\xe3\xef\xba\x8a\xf1\xc6\x92\xd9\x8f\x5e\x9b\xfd\xf8\x80\x28\x5c\x51\xf9\xff\x70\x40\x5c\xb4\x77\x31\x20\x52\xc9\x38\x18\x6a\xe3\x7c\x81\x75\x77\x21\xd1\xa0\x3e\x9a\xb4\x79\xbb\x93\xec\x4f\x72\xce\xb0\xd6\xa5\xcd\x48\xc2\x75\x63\xd1\xab\x93\x6e\x2a\x53\xed\x8d\x1a\x5b\x32\xda\xb9\xb3\xa9\x3b\xc8\x6d\x78\x9a\xa3\xf9\x16\xa6\xe5\x70\x86\x32\x46\x72\x98\x59\x94\xc3\x42\x6b\x67\xa4\x9b\x47\xd2\xae\x82\x3e\x54\xbb\xa8\xe2\x27\x3d\x65\xbe\xdb\x55\xb7\x95\x64\xc4\x2c\x9c\xdc\x45\xc5\x36\x4b\x61\xb9\xcb\x75\x39\xcb\xc6\x59\x54\xfb\xcc\x68\xff\x8f\x58\x43\x7e\x63\x59\xef\x87\x2f\x20\x7f\x7c\x44\x5c\x67\xc9\xaf\x8c\x08\xd3\xb8\xaf\x5e\x96\xa6\xe5\x6a\xb9\x6c\xb4\xdd\xda\x24\x37\xce\x31\x36\xde\xb8\xfe\x96\x2b\xbc\xd9\x5c\x69\xa6\xe1\x36\xe3\x74\x87\x80\x61\xab\xed\xec\xd4\x94\x22\x8c\x1a\x1f\x04\x3c\x33\x4d\x23\xb3\x99\x9b\xcb\xc1\x2a\x18\x4c\x36\x9b\x92\x59\x8d\xcd\x45\x4f\xa9\x0d\x1a\x22\xbd\xdd\xac\x8a\xf5\x3d\xfb\x9a\xe5\x09\x82\xcb\x76\xa6\x9c\x1a\xe5\xc6\x1e\x44\xb3\x76\x85\xa3\x4e\x9c\xed\xa2\xe5\xa8\xe1\x0f\xfc\x9c\xb7\x2b\xb6\xa3\x74\x3d\x6b\x9d\x17\x99\xef\x67\xf6\xdf\x68\xc1\xfa\x70\xfc\x2d\x98\xfd\xd9\xab\xd5\x1f\x67\x76\xe9\x9a\x89\x37\xbd\xfc\x97\xc4\xfa\x8b\xe3\x22\xd6\xc3\x94\xd9\x67\x46\xa3\xee\x2d\xd5\x56\x5e\xa7\x5d\xaf\x3a\x1f\x54\x9a\x05\x6f\x4a\xc5\xba\xba\x4d\x75\x2a\xb3\x92\x16\xc7\x99\x8e\xd6\xdd\x94\xe8\xb4\xdd\x55\x33\xd6\xa0\xd7\xcd\xa7\x5c\x6d\x9b\xdf\xb4\xc3\x88\xae\x74\xa7\x57\xae\xe4\x36\x71\xa7\xe8\x0d\xbc\x9a\x55\xb0\x80\x71\x8a\xf5\xe9\x5d\xc3\xf2\x46\x9a\xca\x25\x37\xd0\xb4\x50\x2d\x16\x3a\x95\xba\xa1\xf8\x51\xb3\xe4\x02\x98\x6d\xae\x9c\xdc\xba\x5d\xec\x75\x17\xfd\x73\xc2\x72\xff\x88\xf8\xec\x55\xf5\x0b\x5b\x7e\xc8\x88\x30\x9e\xf6\xed\xd9\x5f\x78\xbf\xf8\x43\xe4\x97\xbf\x7f\x9b\x4f\xe5\xe3\x5a\xf9\xf9\x8f\xa0\xbf\xb1\x56\x6e\x54\x3a\x66\xeb\xb4\xb4\x5e\xaf\x55\x86\x97\x1a\x0f\x2f\x04\x1a\xd9\xec\xe5\x9f\x54\xbf\x6e\x30\xd1\x68\x15\xab\x46\x6b\x98\x28\x9b\xc3\xc4\x2f\xa7\xb3\xae\xf8\x9a\xd8\x4b\xf8\x6c\x26\x5f\x32\x3f\x7a\xfc\xe5\x73\x0d\x8f\x5e\xb1\x3a\x7a\xcd\xe4\x67\x86\x5a\xcc\xdf\xff\xfb\x24\xf3\x2c\xe6\xdf\xb2\xec\xa1\x81\xa7\x46\xf9\x81\x90\x37\x2c\x7a\xba\x29\xfb\x93\x4f\x17\x7f\xe1\xfe\x53\xcc\x7d\xa2\xfc\x96\xe1\xaf\xb4\x9e\xe8\xd6\x8a\xcd\xae\x99\x38\xff\x75\xfd\xef\xea\xc9\xe7\xe0\xfd\x9d\x1d\x78\xee\x83\xd3\x79\x16\x8d\x9f\x59\x7f\xdc\x5e\xfc\xf4\xe3\x93\xec\x3d\x2a\xbb\x65\xe8\x45\x33\x4f\x2d\x3c\x9c\xb8\x41\x93\xc3\x7e\xe5\xc7\xff\x3f\xc9\xb8\x83\xae\x5b\xb6\x9d\x1b\x79\x6a\x9a\x3b\xff\x9a\x98\x07\x61\xfc\xdc\xb6\x8b\xed\xcf\x9f\x7c\xf8\x2c\x4b\x2f\x54\xde\x34\xf8\xba\xc9\x5b\x4e\xbf\x65\x75\xb4\xb4\x4e\x3f\x3e\xcf\xd2\x68\x69\xbd\x60\xe3\x43\x33\x4f\xad\x0b\x65\x74\xc3\xdd\x17\x5b\x95\x9d\x7f\xfd\x24\x23\xcf\x0a\x6f\x19\x7a\xd5\xdc\x53\x63\x17\x91\x8c\x6f\x8e\x9e\xd3\x1e\x65\x0f\x3f\x3f\xcb\xd2\xa3\xb6\x9b\x66\x5e\x34\xf4\xe2\xfd\xea\xd8\xca\x54\x6e\x9f\xdb\x7b\x7e\xff\xfd\xfc\xeb\x67\x59\xfd\xa8\xf0\xa6\xe1\x4f\x9b\x7b\x6a\xfb\xe1\xfb\x9b\x77\xd8\xf3\xdb\xc6\x17\xbf\x7e\x92\xc1\x67\x85\xb7\x0c\xbe\x6a\xee\x45\xb0\xdd\x28\x5a\xca\xf0\x6b\x82\x45\x91\x8c\x79\x20\x6e\xf4\xe1\xf2\xa9\xd3\xcb\x0f\x9f\xd5\x8f\x0b\x95\x37\x7b\x72\xdd\xe4\xad\x38\x11\xc9\xc5\xd7\x44\xbc\x71\x7d\x21\x37\x37\x7a\x70\x36\xff\xb3\x6d\x7f\xd5\xf0\xbb\xac\x3e\x39\xc9\x62\x1e\xf3\xf9\xf9\x75\xf5\x62\x2d\x6b\x0e\xde\xb0\x33\xd3\x32\x8d\x8e\x79\x14\xbd\xd6\x93\xa8\xd7\xce\x89\x5f\xb7\x5d\xac\xe5\x13\x56\x1c\x4a\x99\xf8\xe5\x24\xf1\x6b\xa2\x5f\x30\x5b\xe6\xe3\xe7\xc4\x7f\xff\x4c\xc0\xc7\x5d\x2a\x9e\xe7\x66\xcb\xad\xeb\x3b\x47\x1a\x1d\x3a\xf2\x61\x43\x9f\x69\xda\x9b\x7a\xba\xc1\x3f\x35\xf4\x42\xf0\x99\x3d\x7b\xcc\xad\x6d\x24\x17\x1f\xb6\xe3\x51\xc3\xbe\xfd\x33\x77\x9e\x98\xf0\x72\x3e\xb5\x17\xb7\xa5\xbc\xdf\x84\x07\x25\x47\x2b\x2e\xc6\xe0\x3b\x0d\x39\x9d\xb9\xcf\x90\x4b\x25\x7b\x43\x9e\x66\x8b\xef\xb4\x64\x1e\xba\x5c\xde\xc7\x8d\xb3\x8a\x97\x48\x71\x90\xb8\x75\x47\x96\xfe\xea\x4e\x10\x2e\x95\xec\x9b\xbf\xd8\x5f\xf6\x9d\x08\x9c\x6f\xcf\x77\x5b\x72\xa9\xe7\x64\xcc\x43\xce\xf1\xd4\x18\x16\xc5\xaf\x18\x24\x3d\xef\x93\x86\xed\x73\x55\x2f\xb9\xe8\x89\xe4\x4b\xc9\xc8\x29\x36\x7d\xdc\x9c\x27\x6a\x0e\x08\x9d\xb2\x9c\x27\xb6\xdc\x9a\x6c\x36\x82\x28\x76\x42\xd9\x6e\x56\x12\x0f\x7b\x91\x26\xc4\x72\x36\x4f\xf0\x60\x36\xf7\x64\x2c\x0f\xad\xfd\xff\x01\x00\x00\xff\xff\x27\xf8\x04\xf0\xb7\xac\x00\x00") + +func set_optionsCoreSqlBytes() ([]byte, error) { + return bindataRead( + _set_optionsCoreSql, + "set_options-core.sql", + ) +} + +func set_optionsCoreSql() (*asset, error) { + bytes, err := set_optionsCoreSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "set_options-core.sql", size: 44215, mode: os.FileMode(420), modTime: time.Unix(1508958301, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _set_optionsHorizonSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\x7d\x69\x73\xe2\xb8\xd7\xef\xfb\xf9\x14\xae\x7e\x93\x99\x4a\x7a\x22\xd9\x92\x65\xf5\xdc\x7e\xaa\x58\x03\x61\xdf\x21\xff\xfa\x17\x25\x4b\x32\x38\x01\x4c\xb0\x49\x20\x53\xcf\x77\xbf\x85\xd9\x1d\xcc\xde\xcb\xad\x4b\x4d\xf5\xc4\xe8\xe8\x6c\x3a\xfa\x9d\x23\xc9\xc6\x5f\xbf\xfe\xf1\xf5\xab\x52\x74\x5c\xaf\x33\x92\x95\x52\x56\x11\xcc\x63\x26\x73\xa5\x22\xc6\xfd\xe1\x1f\x5f\xbf\xfe\x31\x6b\x8f\x8f\xfb\x43\x29\x14\x6b\xe4\xf4\xd7\x04\x6f\x72\xe4\xda\xce\x40\xa1\x7f\xeb\x7f\xe3\x0d\x2a\x73\xaa\x0c\x3b\xed\x59\xf7\x00\xc9\x1f\x95\x44\x55\x71\x3d\xe6\xc9\xbe\x1c\x78\x6d\xcf\xee\x4b\x67\xec\x29\xdf\x15\xf0\x8f\xdf\xd4\x73\xf8\xcb\xe7\x6f\x79\xcf\x9e\x51\xcb\x01\x77\x84\x3d\xe8\x28\xdf\x95\x9b\x5a\x35\x69\xdc\xfc\xb3\x64\x37\x10\x6c\x24\xda\xdc\x19\x58\xce\xa8\x6f\x0f\x3a\x6d\xd7\x1b\xd9\x83\x8e\xab\x7c\x57\x9c\xc1\x82\x47\x57\xf2\x97\xb6\x35\x1e\x70\xcf\x76\x06\x6d\xd3\x11\xb6\x9c\xb5\x5b\xac\xe7\xca\x2d\x31\x7d\x7b\xd0\xee\x4b\xd7\x65\x1d\x9f\xe0\x9d\x8d\x06\xf6\xa0\xf3\xcf\x42\x77\xc9\x46\xbc\xdb\x1e\x32\xaf\xab\x7c\x57\x86\x63\xb3\x67\xf3\xbb\x99\xb1\x9c\x79\xac\xe7\xcc\xc8\x22\xd9\x6a\xa2\xac\x54\x23\xd1\x6c\x42\x49\x27\x95\x44\x33\x5d\xa9\x56\x94\x42\x3e\xdb\x5a\xd0\xff\xdd\xb5\x5d\xcf\x19\x4d\xdb\xde\x88\x09\xe9\x2a\xf1\x72\xa1\xa8\xc4\x0a\xf9\x4a\xb5\x1c\x49\xe7\xab\x1b\x9d\xb6\x09\xdb\xdc\x19\x0f\x3c\x39\x6a\x33\xd7\x95\x5e\xdb\x16\x6d\xeb\x45\x4e\xff\xf9\x19\x02\xb9\xff\xd7\xcf\x10\x39\x8b\xab\x9f\x67\xe0\x5c\x5a\xd0\x3a\xbf\x7b\x3a\x1f\x4f\x34\x37\x7a\x2e\x24\xf9\x1d\xdb\xd2\xb2\x24\xf7\xdc\xb6\x39\x6d\x3b\x23\x21\x47\x6d\xd3\x71\x5e\xf6\x77\xb4\x07\x42\x4e\xda\x1b\xf2\x07\x2e\xf3\x63\xd1\x6d\x3b\x83\xb6\x2d\x4e\xe9\xed\x0c\xe5\x88\xad\xfa\x7a\xd3\xa1\xbc\xa0\xf7\x5a\x93\x8b\xb4\x38\xad\x6f\x4f\x8a\x8e\x1c\xf9\x1d\x5d\xf9\x3a\x96\x03\x7e\x92\x09\x1b\xdd\x87\x23\xf9\x66\x3b\x63\x77\xf1\x5d\xbb\xcb\xdc\xee\x99\xac\x2e\xe7\x60\xf7\x87\xce\x68\x36\x63\x16\xb0\x77\x2e\x9b\x73\x7d\xc9\x7b\x8e\x2b\x45\x9b\x79\xa7\xf4\x5f\x06\xf3\x19\xa1\xb4\x98\x3a\x67\x28\xbd\xd9\x93\x09\x31\x92\xae\xbb\xbf\x7b\xd7\x1b\x09\x3f\x35\xb4\x7b\x8e\xf3\x32\x1e\x1e\x41\x3d\x3c\xa4\xd2\x9c\x8a\xd9\xa3\x13\x19\x2f\x71\xf1\xe8\x0e\x33\x9c\xb0\x2c\x39\x3a\x44\x3a\x9c\x51\x76\xbd\x83\x7a\xbb\x5b\xd3\xd6\x9c\x1e\x74\x7e\x77\x35\x3f\x8e\x21\x76\xe6\x7a\x38\x07\x09\x6d\xd7\x6b\x7b\x93\xf6\xf0\x30\xcb\x19\xa5\x33\x3c\x96\x52\x1e\x4b\xb6\x04\xe0\xfd\xc4\xe6\x72\x92\x1c\x24\x3b\x3c\xf7\xcd\x55\xec\xee\xa7\x9b\xe7\xb0\x99\xb7\x5d\x77\x3c\x93\x7c\x52\x16\x5b\x8d\xed\x90\x8d\x3c\x9b\xdb\x43\x36\xf0\x8e\xcc\x6b\x3b\xbb\xb6\x87\x27\x66\xd2\x15\xb8\x9f\xaa\xc1\xee\x8e\x27\xcb\xf7\xdd\x77\x8c\xbc\x39\xe1\x0f\xe7\x3f\x1f\x4e\xee\x88\x65\x75\x32\x83\xca\x65\xa1\xe2\x8f\x70\xfb\x48\x0d\x3a\xce\x68\xd8\xee\xdb\x9d\x45\xee\xdc\xa3\x42\x80\x72\xaf\x8d\xc7\x86\xd0\xbc\x77\xac\x90\xad\xe5\xf2\x8a\x2d\xe6\xd2\xe3\x89\x64\xa4\x96\xad\x1e\xc9\x3b\x24\x34\xae\xc0\x79\x31\x28\xfb\x39\xf9\x57\xc7\x9b\xbf\x4c\x2b\x95\x44\xa9\x96\xc8\xc7\xce\xf0\xd9\xac\x30\x74\xe5\xeb\xc9\x92\xb7\x98\x1c\xdd\x5b\xc8\x23\x69\xd7\xe5\xd7\xd1\x16\x86\xcc\xcd\x53\xec\xdb\xcd\xe2\xb8\xbe\x8b\x42\xe5\x38\xe2\x45\x55\x72\xb4\x6d\x8b\x79\x7a\x8a\x2d\xf3\x2e\x47\xd2\x2e\xea\x95\xe3\xf5\x59\x16\x38\xc7\x68\x14\x98\xe9\x0b\xe2\x44\xb3\x9a\xc8\x57\xd2\x85\xfc\x66\x87\xde\xb0\xe3\xbe\xf6\x96\x6a\xc4\x52\x89\x5c\xe4\x13\xbf\x7f\xfe\x98\x2f\xea\xf3\xac\x2f\xbf\x2d\xbf\x53\xaa\xd3\xa1\xfc\xb6\xe8\xf2\x8f\x52\xe1\x5d\xd9\x67\xdf\x94\xaf\xff\x28\x85\xf7\x81\x1c\x7d\x53\xbe\xfa\x6b\xfd\x58\x39\x11\xa9\x26\x96\x9c\x97\xfc\xfe\xd8\xe2\xb8\xdd\xb8\x60\x1c\x2b\xe4\x72\x89\x7c\x75\x0f\xe7\x39\x81\x52\xc8\x6f\x33\x50\xd2\x15\xe5\x66\xb9\x8a\x5f\x7e\xe7\xfa\x4c\x6e\x82\x92\x97\xe6\x2f\x64\xae\x3c\x74\xd0\x9e\x2d\x5f\xe6\x0b\xd5\x80\x3f\x95\x46\xba\x9a\x5a\xa9\xb5\xb9\x9c\xdf\x12\xbf\xe6\x12\x50\xe4\x14\xe3\x3f\x31\xf1\x1d\x50\xcc\xde\x0f\x3b\x95\x52\x56\x19\x8e\x1c\x2e\xc5\x78\xc4\x7a\x4a\x8f\x0d\x3a\x63\xd6\x91\xbe\x1b\x8e\xdc\x7e\x98\x91\x09\x69\xb1\x71\xcf\x6b\x7b\xcc\xec\x49\x77\xc8\xb8\x54\xbe\x2b\x37\x37\x81\xd6\x77\xdb\xeb\xb6\x1d\x5b\x6c\x6c\x83\x6c\x19\x1b\x0c\xca\x85\xa9\x7e\x08\xaf\x0d\x5d\x06\xc1\x2e\xa7\xcf\xa3\x3d\x98\xf0\xfe\xfc\x43\x51\x94\x19\xae\x7b\x72\xe2\xf9\x63\x91\xaf\x65\xb3\x77\xfe\xb7\x6c\x38\xec\xd9\xfe\x0a\x46\x99\x95\xe4\xae\xc7\xfa\x43\x65\xa6\xa8\x7f\xa9\x7c\x38\x03\xf9\xc7\x5f\xc1\x51\x09\x9b\x72\xcb\x88\x5f\xcc\xd5\xe3\x74\x5e\xcd\xec\x10\xae\xbe\x9a\x95\x6a\xa4\x5c\x9d\xc7\x0c\xf4\xbf\x48\xe7\x63\xe5\x84\x3f\xc0\xd1\xd6\xe2\xab\x7c\x41\xc9\xa5\xf3\xf5\x48\xb6\x96\x58\x5d\x47\x9a\xeb\xeb\x58\x24\x96\x4a\x28\xf0\x90\x31\x67\xbb\x3d\xc8\x68\xed\x77\xd3\xee\xd8\x03\x6f\x99\x51\x95\x81\x9c\x78\x6f\xac\xf7\xe7\x4d\x88\xc5\x37\xdf\xbe\x8d\x64\x87\xf7\x98\xeb\xfe\x15\x1c\xae\xf9\xca\x4d\xe1\x5d\x36\x62\xdc\x93\x23\xe5\x8d\x8d\xa6\xf6\xa0\xf3\xa7\x8e\xfe\xda\x33\x50\x73\xe0\xbd\xd8\xb2\x79\xb9\xb0\xb2\xcb\x1e\x78\xb2\x23\x47\x41\x1d\x57\xe5\xda\x6e\x35\x77\x92\xcf\x0a\xbd\x1d\xe4\x50\xdd\x4d\x3e\xaf\x00\x77\x74\xc0\xfa\xba\xc3\x21\x7f\x5c\x39\x6c\x37\x79\xfe\xb4\xa0\xdd\x67\x88\x52\x68\xe4\x13\x71\x25\xda\x3a\x60\xd1\xbc\xfc\xdb\x6f\xd0\x8a\x57\xa0\xf9\xef\xd9\xba\x71\xb7\x6e\xcb\x82\xe2\xd2\xa8\x5b\xf0\x59\x84\x5d\x60\xce\xb4\xd7\xd3\x6b\x3b\x4e\x3e\xd7\x4f\x61\x94\x5f\xfc\x05\xed\x97\x90\x68\xf6\xe3\x78\x77\x93\x90\x1e\xb3\x7b\xae\xf2\xec\x3a\x03\x33\x3c\xd8\x96\x55\xd8\xa5\x7e\x58\xf0\x59\xf8\x61\xb9\x8b\x17\xa2\xdb\xc6\xd6\xda\x51\xb3\x70\xd7\xae\xde\xee\x8e\x0b\xb7\x6c\x94\xdd\xfe\x40\xac\xf4\x58\xa2\x1c\x08\x48\x58\x0f\xc4\x71\xf4\xab\xad\xb5\x40\x62\x72\xc6\xde\x3a\x37\x05\xfb\x8c\x24\xf3\x0e\x76\x9a\xd3\x8e\x87\xe2\x68\xda\x55\xe8\x2c\x2e\x03\xbb\x8e\x9f\x6c\x81\xc1\x20\x72\x3c\xd6\x6b\x73\xc7\x1e\xb8\xbb\x63\xd0\x92\xb2\x3d\x74\x9c\xde\xee\x56\x7f\xd7\xdc\x92\x61\x63\xed\x37\x8f\xa4\x2b\x47\x6f\x61\x24\x7d\x36\x69\x7b\x93\xf6\x0c\x3a\x5d\xfb\x23\x8c\x6a\x38\x72\x3c\x87\x3b\xbd\x50\xbb\xc0\x11\xd8\x1a\xb2\x60\xb9\x34\xfa\x43\x16\xc1\x07\x72\xd1\xf1\x28\x70\x18\x57\x4e\x35\xf9\xba\xe9\x65\xaf\x8c\x9f\x95\x6e\x4e\x32\xf4\xc2\xf4\xb3\x57\xd6\xe7\x74\xb4\x9b\x7c\x4f\x7a\xda\x58\xce\x5f\x2d\x36\x3f\xd7\x7c\x01\x1c\xd8\x3a\xfb\xd9\x4d\xe3\x57\xe4\x7c\x6e\x8a\x9f\x99\x2e\x4c\x4c\xf3\xaf\x5c\x67\x3c\xe2\xab\xa3\xb7\x90\x94\xb0\x9c\xe6\x37\x37\xdf\xbe\x7d\xa2\x38\x62\x1e\x2c\x76\x53\x2e\x75\xe7\xe2\x50\xf1\xcf\xab\xe6\xf1\x45\x5e\x3b\x27\xab\xf8\x27\x09\xa1\x62\x03\x47\x9a\xfb\x88\x16\xa7\xac\xfb\x48\xfa\xfe\xf0\xec\x24\xf8\x7c\x38\x7c\x80\x6e\xaf\xb8\x15\xd5\x1e\x89\xbe\x4a\xb6\xdb\x76\x65\xaf\x27\x47\x8a\xe9\x38\x3d\xc9\x06\xf3\xb6\x8d\x0d\xd4\x9d\x67\xbc\x3e\xdb\xb6\x7f\x17\x80\x12\x4b\x25\x62\x19\xe5\xcf\x3f\x37\x4d\xfc\x1f\x05\xfc\xf5\xd7\x21\x56\xbb\xba\x2f\xad\xfa\x3f\x9f\x0c\x3d\x82\xdf\x96\xd1\x01\xf6\x01\x8f\xf8\x0a\xee\x8d\xf5\xdd\xfb\x8e\x57\x88\xfe\xdd\x3b\xc9\x47\xa6\xba\x63\x30\xe6\x92\x64\x77\x68\xd7\xf6\x3a\xe9\xee\x80\x94\x9f\x95\xf0\x4e\x34\xf6\xc2\x94\x77\x40\xda\xe7\xa4\x17\xd6\x61\x4f\xda\xdb\xda\xa9\xbf\x62\xac\x2e\xe3\x73\x53\xa5\xa3\x57\x1f\x0b\x70\x3e\xb0\xa6\x39\x36\x33\xee\x4f\x72\x3b\x69\xd7\xa2\xc3\xcb\x73\x16\x3a\xf5\xc2\x96\x36\xbf\x64\x71\xe2\x4d\xda\x72\xf0\x26\x7b\xce\x50\xee\xda\xf0\xf3\x26\xb3\xa5\xc2\xb8\xe7\x85\x34\xf6\xa5\xc7\x42\x9a\x66\x5e\x08\x6b\x76\xed\xce\x80\x79\xe3\x91\xdc\xb5\x37\x45\xf5\xbf\xfe\xf3\xdf\x75\x75\xf1\xef\xff\xee\xaa\x2f\xfe\xf3\xdf\xe0\x9a\x45\xf6\x9d\x90\x6d\xa4\x35\xaf\x81\x33\x90\x7b\xab\x95\x35\xaf\xcf\x6c\x16\x96\xd9\x7d\xd9\x36\x9d\xf1\x40\xb8\xb3\x91\x33\x46\x6c\xd0\xd9\xb7\xe9\x39\xdf\x04\xb3\xc5\x72\xf6\x2c\x0f\xca\x8e\x99\xf2\xf3\xe9\xe3\x9f\x4e\x1e\x38\x83\xab\x24\xaa\x7b\x36\x0c\x37\xb7\x66\x36\xb7\x0b\x4f\x2b\xdc\xaf\x67\xc4\x91\x47\x94\x7b\x8d\xda\x5b\xf0\x1f\x63\x64\x68\xe6\xbc\x9a\x99\x47\x9f\xf2\xee\x35\xf4\x00\xcc\xef\x36\x35\xce\x3c\xa6\x58\xce\xe8\x88\xb3\x02\x25\x1e\xa9\x46\x0e\x98\x98\xce\x57\x12\xe5\xaa\x92\xce\x57\x0b\x9f\xce\x0b\xfc\xec\x58\x51\xfe\xbc\x81\x6d\x7b\x60\x7b\x36\xeb\xb5\xe7\xa7\x43\x7f\xbb\xaf\xbd\x9b\x3b\xe5\x46\x05\x90\x7c\x85\xe0\xab\x8a\x15\xa8\x7e\x03\xea\x37\x04\xff\xd6\x30\x36\x20\xfe\x0a\xc8\xcd\x5f\xff\x1c\xc7\x5d\x6d\xcf\xef\x50\xda\x72\x81\x39\x6d\x7b\x8e\x2d\xf6\x4b\xa2\x50\x3b\x45\x90\xd6\x1e\xbb\x72\x85\xf0\x6d\x7b\xf0\xe9\xa6\xa8\xbd\xe2\x74\x08\x21\x3d\x45\x1e\x6a\x33\x21\xda\xc1\xcd\x94\xfd\x32\x30\xa5\xc6\x29\x32\x70\x7b\x9e\x4e\x96\x95\xad\x7f\xf2\xb4\x57\x04\x01\x08\x9d\xe4\x36\x7d\x29\x62\x81\x36\x47\x88\xd0\x08\xd2\x4f\x11\x41\xda\x7d\x47\xd8\xd6\xf4\x78\x2b\x0c\x48\x81\xba\x10\x11\x32\x35\xf6\x1e\xe8\x9c\x3a\x37\x3e\x1d\xea\x2c\x75\x87\x77\xca\xcd\x43\xb4\x5c\x6c\xa5\xd2\x59\x35\x96\xd6\x92\xf9\x12\x8a\x36\xb3\xc9\x5c\x3e\x9e\x4d\x3e\xd6\xf2\xc5\x9a\x9a\x6a\x69\x4f\xb9\x64\x25\x55\xc8\xd7\x62\x89\x42\xa4\xd2\x20\xa5\x18\x29\x34\xd5\x54\xd0\x3f\xa1\x42\xd4\x99\x90\x58\x33\xf3\xa0\x97\xf3\xa8\x90\x4f\x27\x8a\xb1\x5c\x3e\x19\x25\x9a\x1a\x41\x9a\xfe\x84\x8b\xf9\x78\xa5\x9c\x7d\x68\x64\xc8\x43\x34\x1b\xcb\x95\xb2\xe9\x64\x01\x55\x48\xa2\xd5\xa8\xd7\x8e\x16\xa2\xcd\x84\x44\x70\x23\x5a\x6c\x45\x70\x0b\x35\x22\x89\x54\xb3\x51\x56\x6b\x99\x82\x5a\x2b\xa0\x68\xed\x21\x55\x2b\x11\x94\xa8\x15\x33\x85\xbc\x5a\x4a\xd5\x51\xa3\x9c\x2a\xa4\xcb\xf9\x4c\x26\xa5\xde\x9c\x7b\x36\x38\x43\xc8\x03\xc3\x50\x49\x64\x13\xb1\xea\xc6\x61\xeb\xdf\xae\xdc\x7f\x6e\x76\xa7\x68\x77\x8a\x37\x1a\xcb\x23\x82\xe3\xf3\x89\xd8\x31\xa1\x71\xce\x29\xcc\x55\x2c\xdd\x4a\xf8\x77\x0a\xbc\x9b\x9f\x20\x1f\x36\x74\xd7\x29\xcc\xb9\x93\x60\x79\x12\xb3\x11\x9e\x06\x36\x28\xd5\x0c\xdd\xa0\xbe\x52\xe0\x4e\xb9\xf9\xf7\x8b\xeb\xcd\x20\x7d\xd0\x69\x9b\xac\xc7\x06\x5c\x7e\xf9\xa6\x7c\x81\x00\x80\xbf\xc1\xfc\xf3\xe5\x7f\xc3\x82\x33\x28\x01\x6e\x4b\x50\xfd\x11\xbe\xf9\xf7\xcb\x7c\x8d\xfe\x89\xef\x9d\xf2\x65\x7d\xfa\x38\x6b\x1d\x30\xcf\x7e\x93\xc7\xcb\x0b\x58\xa4\xdd\x29\x70\x6e\xd2\xbb\xb4\x3b\xdd\x99\x40\x78\xa7\x7c\x99\x3b\xac\xfd\x22\xa7\x33\x19\xe7\x4e\xd0\xe3\xb5\xd2\x16\x5a\x21\x95\x18\xf8\x87\xfa\x79\x21\xe1\x87\xfb\x39\x60\xd1\x71\x7e\x3e\x13\xa3\x4e\x1a\x7d\xa8\x1a\x06\xa2\x00\xd3\x85\xa3\xa1\xfa\xeb\x87\x7f\xa6\x16\x81\x84\x1a\x44\x53\x0d\xe8\xab\xa5\xcf\x47\x67\xec\x75\xdb\x23\xf9\x3a\xb6\x47\x52\xb4\xad\x1e\xeb\x7c\xf9\xe6\xe3\xdf\xd9\xac\xd5\xdf\xc6\x62\x15\x22\x82\x0c\x04\x30\x21\x3b\x07\x42\xfd\x45\x6a\x61\xa2\x53\x03\x10\x83\x68\xbe\x5a\xc8\xd7\xaa\xe7\xbc\xb7\xbd\xee\x48\xba\x5d\xa7\x27\xbe\x7c\x9b\x4d\xcf\x2f\x7d\x29\xb6\xbe\x9b\x29\xdc\xb5\x3b\xdd\xed\x2f\xcf\x96\xbd\x63\xa4\x7e\x91\x4b\x34\x00\x74\x44\x08\x86\xfa\x3c\x07\x60\x5f\xab\xae\xd3\x97\x6d\xe1\xf4\x99\x3d\xf0\x01\x62\xdc\xeb\xb9\xde\xb4\x27\xff\xe6\x4e\xff\x7c\xf6\xbf\x91\xd5\x48\xc3\x94\x20\x15\xe9\xbb\x81\xe2\x77\x50\x4b\x3d\x2e\x7d\xa9\x5a\x29\xa9\xa6\x6a\x09\xac\x46\x72\xcd\x5a\xb2\x96\xd2\x22\xad\xc7\x48\xb3\xf9\xd0\x6c\xd6\xd5\x7a\xaa\xd9\x6a\x95\xf5\x44\xab\x99\xa8\x16\x33\xf1\xe6\x53\x25\xd2\xd0\x49\xb3\x80\x4e\x53\xcb\xd0\x31\x22\x80\x12\x1d\xfe\x56\xde\xda\x54\x6b\x47\x6c\xe1\x5f\xe3\x2d\xa4\x52\x44\x75\x42\x00\x26\x87\xd0\xde\xaf\x02\xcf\xe6\xfd\xfb\x4c\xa7\x2d\xb5\xb4\xdf\x67\x24\x88\x8a\x90\x8e\x90\x86\xe7\x70\x0f\xa1\xaf\xd6\xaf\xd6\xe4\x27\x8c\xdb\x81\x65\xc5\xae\x9b\x9a\xce\x5d\x56\x2c\x6f\x6c\xda\x5c\x5a\xeb\x9a\xa0\x86\x85\x35\x5d\x4a\xdd\x10\xd0\x54\x89\x89\x4d\x83\x5a\xaa\xc6\x2c\xac\x41\x68\x12\xac\x53\xa6\x22\x8b\x59\x10\x01\x8d\x09\x60\x62\xd5\xd4\x35\xcd\x04\xc4\x94\x94\xde\xdc\xcd\x77\x7f\x67\xa9\x78\x06\x81\x90\x12\xf0\x15\xc0\xaf\x00\x2a\x00\x7c\xf3\xff\x0b\xee\x31\xd0\x6f\x00\x7f\x03\xe8\x6f\x48\x21\x41\xc6\xc1\xd6\x45\xc4\xaa\x54\x9f\xa3\x2c\x04\x9f\x3e\xbe\x68\x08\x36\x1b\x17\xd7\x20\x64\xe0\x83\xae\x98\x0d\xb2\x34\x21\x60\x58\x52\xcc\x20\x55\x55\x49\xa4\x4e\x89\xa6\x5a\x86\xae\x53\x43\x65\x88\x71\x00\x81\x66\x21\x66\x30\x60\x12\x66\x22\x93\x19\x3a\x45\x50\x70\x13\x09\x95\x1b\xf2\xe6\x3a\xee\x54\xfd\xff\x82\x3e\x41\xdf\x30\x0d\x73\x95\x0a\x34\x43\x27\x07\x5b\xe7\x0b\x2e\x84\xa9\xba\xc7\x91\x2a\xd8\xed\xca\xd9\xff\x8c\x23\x9d\x39\x5b\xd2\x60\x06\x01\xb6\x38\xd4\x84\x65\x98\x3a\x05\x04\x41\xa8\x62\x8c\x30\xb0\x10\xb6\x10\xc4\xba\x81\x54\x60\x01\x01\x01\xd0\x2d\x93\x01\x13\xaa\xcc\x62\x98\x99\x88\x73\xc0\xd8\xcd\x75\x06\x64\x9e\x05\x77\xf8\x25\x34\x2a\x55\x4d\xd3\x60\x68\x54\xae\x5a\x17\xeb\x17\x68\x18\xc6\x1e\x6f\x6a\x57\xf0\xe6\xac\xf2\xd5\x55\x20\x10\x85\x86\x8a\x4c\x1d\x43\x06\xa9\xae\x51\x28\x20\x24\x18\x42\x4b\x17\x06\xd6\x90\x8e\x19\x94\x44\x60\x24\x0c\x4d\x97\x42\xd3\x24\xe6\x82\x62\x0b\x13\xd3\xf2\x23\xe7\x0a\x23\x12\xea\x4d\x18\xea\x2f\x84\x11\x0d\xf7\xe6\xb2\x75\xbe\x36\xd2\x29\x34\xd0\x1e\x6f\xa2\x2b\x78\x73\x56\x34\x4b\x01\x10\x90\x84\x61\x20\x80\x36\xab\xf3\x85\x06\xa0\x46\x21\xb7\x30\xb6\x4c\xc6\x90\x24\x9c\x02\x9d\x6b\x12\x52\x93\x03\x53\xd3\x11\x93\xa6\x25\x75\x00\x55\x4c\xa5\x6f\xec\x15\x46\x24\xd4\x9b\x6a\xa8\xbf\xb0\x01\x74\xfd\x60\xeb\x7c\x49\xa7\xe9\xc8\x00\x7b\xbc\x89\xaf\xe0\xcd\x59\xc1\x44\x2c\x4d\xc3\x86\x26\x2c\xca\xb1\x25\x08\x94\x4c\x9a\x4c\xea\xcc\x04\x02\x22\xac\x73\x06\x2c\x9d\x52\x00\xa1\x14\x90\x98\x52\x42\xa9\x32\x55\x97\xd2\xe0\x00\x18\x40\xf2\x9b\xeb\x8c\x48\xa8\x37\xb5\x50\x7f\x11\x88\x69\x38\x6c\x2e\x5b\x17\xab\x41\x8d\x90\x7d\x09\x48\xbf\x82\x37\xc9\x9d\x72\x63\x70\x61\x48\xce\x21\xb2\xb0\x34\x80\x34\x90\xc5\x35\x49\x54\xca\x0c\x6c\x12\x8e\x0d\xbf\x85\x52\xa9\x22\x2e\x54\xc4\x20\xd6\x55\x55\x02\x61\x40\x81\x0d\x8b\x69\x7e\x70\x5c\x61\x44\x42\xbd\x89\x42\xfd\x65\xe8\xc4\x08\x8f\xcd\x65\xeb\x62\x95\x09\x01\xd9\x97\x85\xc8\x15\xbc\x69\xcc\x54\xa1\x96\xd0\x74\x0d\x33\xc8\x10\x85\x9c\x21\x82\x00\xe4\xc0\x30\x11\xa6\x9c\xa9\x58\x17\x42\x0a\x41\x30\x31\x2c\xc9\x84\xa9\x19\xc0\xa4\xa6\x20\x5c\x13\x1c\x9a\x98\xfb\x59\xe8\x0a\x23\x12\xea\x4d\x1c\xe6\x2f\x0d\x68\x2a\x09\xf5\xe6\xaa\x75\xbe\x0a\xd5\x0c\x4d\xdf\x97\x85\x8c\x2b\x78\x93\xfa\xc5\x0d\x00\x06\xd2\x55\x95\x1b\x86\x2e\x2d\xae\xca\xd9\x04\x04\x08\x22\x1d\x30\x13\xea\x58\x98\x06\xc5\x48\x03\x58\xd5\x24\x46\xd0\x52\x0d\x48\x39\x60\x9c\x02\x4b\x03\x6c\x0e\x6b\x97\x8f\x48\xa8\x37\xc3\xfd\x05\x09\x44\xa1\x91\xbb\x6a\x5d\xac\x52\xb1\xae\xef\xcb\x42\xf4\x0a\xde\xf4\x77\x0b\x2c\xaa\x69\xdc\x34\xb8\x2e\xa4\x49\x39\x67\xd0\x82\x1a\xd6\x20\xe5\x02\x02\x9d\xce\x62\x89\x71\xdd\x12\x82\x23\x8b\x50\xac\x5a\x18\xe9\x02\x61\x8b\x48\x4b\xb5\x4c\xcb\x62\x37\xd7\x19\x92\x50\x77\x86\x42\xa3\xa6\x01\x42\x0e\xb7\xae\x0b\xf7\x7d\x69\x08\x82\x6b\xf8\x73\x66\x01\x34\x54\x49\x18\x52\xb9\x6e\xa8\x2a\x15\xa6\x85\x88\xaa\x41\x95\x98\xdc\x04\x68\xe6\x52\x8a\x99\xc0\x88\x6a\x96\xa1\x21\x04\x35\x8b\x42\x93\x51\x8c\xa9\x0e\x25\x05\x9a\x6f\xd0\x15\xc6\x24\xd4\x9f\xa1\x65\x90\x86\x28\x32\x42\x93\xfe\xaa\x75\xb1\x32\x05\x2a\xde\x97\x88\x20\xbc\x86\x3f\x67\x2b\x10\xc0\x0c\x8e\x05\x37\x05\x86\x42\x93\x1a\x14\x60\x26\x9c\x13\x64\x02\x8d\x62\xc2\x04\x45\x16\x35\x4c\x55\x65\x3a\xb7\x88\x8a\xb9\x39\xcb\x31\xc8\x44\xaa\x60\x44\x32\x7f\x3d\x74\x85\x31\x59\x2c\x2c\x3f\xbb\x26\x74\x3d\xa4\xe9\x1a\x20\x87\x5b\x31\xc4\x1a\xd5\x01\xc1\x78\x5f\x2a\x3a\xe8\xcf\x03\x0b\xf8\x23\x1e\xd3\x38\x77\x3d\x1f\x72\x33\x50\xc8\x99\x1e\x0c\x19\xfb\x03\x5c\x02\x27\x75\xea\x79\x5c\x82\x27\x6b\xe7\x71\x41\x81\xd3\xac\xf3\xb8\xe0\xc0\xe9\xd3\x99\x26\xe9\xc1\x23\x9d\xf3\xd8\x90\xc0\x11\xcc\x99\x6c\x8c\xe0\xb1\xc5\x79\x6c\x68\xf0\x1c\xe0\x3c\x36\xb3\xd9\xb4\xbd\x43\x7e\x26\x1f\x18\xdc\x3b\x3e\x93\xcf\xa7\x0d\xd9\x33\xf9\x68\xc1\x0d\xc2\xeb\x3c\xab\x74\x95\x7b\x17\xf6\xdf\xd7\x77\xa7\xc0\xa3\x6f\xda\x08\x79\x64\xe7\x62\x9c\xda\x08\xd7\x0d\x48\x59\xfd\x6d\x6c\x1c\xb9\x5b\xe3\x81\x90\x23\x7f\x7b\xf5\xcc\x9b\x7f\xfc\xc3\xf3\xf9\x8d\x2b\x17\xed\xd2\xde\x29\xc7\x9c\xff\xff\x80\xbb\x94\xc2\xdc\xb6\x40\xbf\xd5\xdf\xe8\x87\xba\xed\xdc\x9b\x01\x7e\x27\xb7\x6d\xdf\x6c\xb0\xba\x40\x1b\xc7\xa8\xf6\xc0\xea\xcd\x27\x8f\x90\xee\x65\x96\xcf\xad\xba\xf2\xdd\x64\xbb\xac\xda\xba\x57\x61\x75\x01\x36\xac\x72\xa5\xe7\x1f\x60\xb9\x5f\xbe\x29\xff\x81\xff\x9d\x8d\xc9\xf2\x9b\xb6\xff\xdd\xf6\x61\xd7\x97\xff\xfe\x2c\xdd\xb7\x53\xde\xea\x42\xdf\xd0\xbd\xcf\x5c\x6f\xfe\xe3\x53\xed\xf5\xe1\xcb\x4f\xd3\x6f\x2b\x97\xae\x2e\xd4\x0d\xfd\x2e\xb9\x17\xe1\xe7\x18\xb1\x95\xc9\xd7\x17\xc6\xf1\x77\x0f\xfc\x24\x3d\x37\x2b\x85\xf5\xc5\xe6\xf4\x74\xed\xce\x60\x1e\x0c\x17\x1d\x04\xce\x26\xc0\x9c\xd3\xfa\xa0\xfe\xa7\x59\xb9\x59\xc7\xac\x2f\xc0\x4f\xb1\x12\xff\x2c\x2b\xb7\xaa\xac\xf5\xc5\xe6\xc4\xe6\x3d\xc9\x46\x01\x58\xda\xf8\xee\xd7\x02\xd3\x56\x75\xb7\xbe\x50\x7f\xca\x28\x81\x8b\xad\x3c\x50\xd8\xed\x78\x70\xf8\x94\xbb\x71\xc3\xb9\x1e\x7e\x44\xf3\xdc\xe2\x31\xf4\x51\x90\x5d\xcb\x5c\x23\x7c\x69\x79\x90\x8f\xba\xcd\x27\x6c\x85\x70\x90\x8f\x16\x28\xcd\xce\xe5\x83\xb6\xf9\x84\x2d\x76\x0f\xf2\x09\x96\x3c\x67\x1b\xa6\x07\xaa\x8c\xb3\x19\x05\x53\xfe\xd9\x8c\x8c\x40\x6e\x3e\x9b\x51\x30\x3f\x9e\xcd\x68\x7b\xe1\x7b\x89\xb7\x61\x30\x4b\x9c\xcf\x49\x0d\x20\xf1\xf9\x9c\x82\x98\x18\xbe\xfc\x3d\xf5\x81\xde\x6b\x2c\x80\x0f\x3d\xef\x75\xca\x12\x38\xf4\xf1\xdd\x2b\xe0\xd8\xc6\x83\x39\xa6\xca\x54\x95\x70\x8d\x72\x1d\x31\x84\x2c\x4e\x98\x29\x10\xa7\xba\x01\x29\xc2\xba\x05\x34\x4a\x29\xd0\x05\x54\x39\x22\xba\x20\xc0\x44\x40\x35\x2d\x61\xaa\x54\x17\x3a\xd3\xe6\xf7\x8b\x5c\xf4\x8c\xcc\x7c\xc7\x1a\x80\xd0\x13\xbf\xbf\x55\x80\x30\xdd\x73\xf7\x09\xd2\x6f\xb6\xb1\xf3\x26\x32\xfb\x3c\x64\x8d\x54\xe9\xad\xf4\x62\x66\xd4\x54\x44\x6b\xd4\x9f\xcb\xa3\x4c\xff\xb9\x09\x80\xf5\x60\xb8\xd9\x34\xe9\x83\x44\xf9\xfd\xb1\x71\x1f\x69\x6a\x33\xf2\xa7\xc8\xea\x13\x8d\x6c\x7f\x82\xd7\x91\xd1\x6b\x5e\xcf\xca\x02\xeb\x3c\x4f\x72\xac\x56\xa4\x7a\xf4\xc3\x72\xa9\x04\xdc\x19\xe5\x9f\x9a\x1f\xd1\xc6\xe3\x4b\xd2\xc9\x90\x97\xb7\x97\xf7\x19\x79\xac\x1e\x79\x7b\xd9\xe4\x57\x7f\x7b\x4f\xd2\x59\x53\x22\xee\x69\x99\xf7\x3e\x2b\x8e\x8b\x22\x59\xa9\x4d\x44\x24\x29\x4d\xbd\x50\x92\xde\xb4\x94\x49\x37\xd8\x47\xcf\xac\xe4\x72\xdd\x7e\x2a\x93\xcf\xc6\x91\xfb\xda\x4d\xbc\xd6\x9e\x78\xa9\x08\x7a\xb7\xcd\xfb\xc2\xf0\xd6\x71\x1b\xfd\xbc\x7e\x9b\xac\xb5\x4c\xf7\x83\xe0\x92\xfa\xfc\x80\xde\x72\xb9\x9b\xa5\x0f\x7c\x3f\x94\xd6\x92\x4b\x41\x4b\xfc\xcf\xf7\x2d\xfa\x48\xc2\xd7\x79\x7d\x9d\x5e\xff\x99\xd1\x9f\xa5\xad\x3d\xf7\x9d\xb4\x51\x7d\xe8\xc5\xef\x65\x87\x6b\xa4\xd8\xf4\x52\x99\xcc\x47\xa3\x6e\xbc\xd7\xed\xa7\x28\x8b\x8d\x71\x16\xe7\x7c\xfa\x5e\x29\x8b\xe7\x3d\x63\x3b\x25\x87\xf8\x77\x5b\xdf\x0d\xf9\x27\x8c\x69\x5c\xc6\x54\xb7\x9e\x6f\x3d\x7c\x74\xd6\xfd\x3b\xc7\xcb\x5f\xf9\xc4\xef\x93\x0b\xd0\x45\xed\xfb\x28\xc8\x82\xc7\x87\xa9\xd7\x7d\xcf\xc3\x5e\x0b\xb0\xe9\xd0\x81\x34\x9f\x9a\xbc\x65\x63\xd3\x02\xf6\xa2\x09\x1e\x9b\x8f\xb3\xd6\xf1\x46\x85\xc1\xd3\x1e\x07\x6c\xdb\xbb\xeb\x13\x1c\x93\xd3\xe5\xb7\xee\x6f\x79\x80\xdf\x91\xf2\xbf\xfb\xf1\xf1\x2f\x11\x53\xf7\xb1\xff\x4c\x9e\xb5\x72\xad\x97\x6b\x96\xa2\xcd\xfe\xed\xf3\x4b\x6a\xc4\x5f\x62\x76\xb2\xef\xe2\x06\x78\x8e\xa7\x9f\xba\xd3\xe7\xca\xfb\x6d\x36\xe3\x94\x33\xbd\x87\x66\x22\x4e\x1f\xad\xde\xfd\xc7\xab\xf5\x9a\x4d\x0e\x9f\xe5\x5b\xb7\xfe\xf0\x40\x72\xb7\xb7\xb5\xbc\x33\x19\x67\x3f\xe2\x91\xef\xdf\xfd\xa2\xd3\x7f\xbe\x7b\x79\x2f\xdf\xec\xdf\xc3\x39\x62\xf3\xc9\x4f\xdd\x94\x04\x58\x26\x21\x86\x6a\x51\x03\x40\x2e\xb8\x14\x1c\xaa\x40\x97\x2a\xb4\x28\x55\xa9\xc6\x29\x35\x74\xc0\x20\x96\x08\x41\x0b\x11\x44\x09\x22\x0c\x30\x8d\x30\x73\x7d\xdb\xdb\x05\x30\xa6\x1e\x82\xb1\x19\xa4\x86\xdf\x0d\xb2\x6c\xdd\x2c\xba\x2e\x05\xb2\xe0\xa4\xfb\x14\xe8\x05\x35\x76\x1f\x29\x20\xdc\x8a\xc6\x35\x2f\x55\x4f\x16\x60\x59\x8b\x80\x9c\x7c\x29\x1a\x8f\x65\x7d\x90\x87\x11\x2a\x1b\xb6\x98\xa6\xbd\x5a\x64\x3f\x90\x45\xb4\x49\xc3\x9c\x14\x0b\xe6\xe0\x29\x67\x47\x1f\x92\x99\xec\x63\x69\x6c\x3d\x66\x3b\xe3\xaa\x9b\x7a\x9c\x4c\x23\x6e\xb1\x88\x93\xf4\xe9\x19\xeb\x90\x35\x07\x6f\xf9\xfb\x54\xbd\xfc\x68\x26\xdd\x04\xb7\xbd\x07\xb3\x63\x53\xd1\xa8\x8b\x4c\xb9\xf5\xd6\xaf\x37\x62\xf6\x47\x5a\xf4\xb3\xe9\xf8\x0f\x03\xb2\xb8\xd7\x79\x7b\x8f\x8f\x0b\x8d\x48\x89\x92\x32\x2c\x57\xbd\x9a\x78\xcf\xc7\x53\xc3\xf8\x7d\xac\x26\x87\x1f\xa2\x54\x6c\xf6\x9c\x01\xb7\xb3\x75\x9f\xfe\x17\x03\xd9\xe8\x8d\xe6\xf2\x97\x02\x59\x69\x97\x4f\xce\x01\x12\x03\xed\xf4\xe9\x27\x7b\x83\x9f\x05\x90\xe4\x8d\x7a\xdf\xa8\x7e\xf4\xb1\x5a\x4d\x77\xca\xdd\x8a\x3d\xad\x65\x07\xd3\x0a\xca\xbe\x90\xe8\x94\xf3\x4e\x36\xfe\x71\x5b\xb6\x1a\xad\x5b\xe9\x35\x7a\x98\x7c\x58\x13\x58\xab\x34\x26\x66\x34\x95\x1e\x95\xfb\x28\xfd\xd6\xac\xf7\x9a\x95\x97\x46\x16\xf7\xea\x1d\xc7\x9d\xa6\x9e\xec\x69\xe4\xfd\x2a\x40\xc2\x89\x6e\x19\x48\x13\x42\xa5\x92\xaa\x26\xe3\xa6\xa5\x42\x1d\x53\x81\x01\xc2\x88\x01\xa4\x49\x26\x75\x86\xa5\x65\x40\xa9\x4a\x43\x70\x4a\x4c\x20\x01\xc0\x42\x03\x54\x57\xe7\x8f\xa6\xc2\x4b\x56\xd1\x1b\x37\xca\x6a\x87\x10\x45\xd3\x0c\x2d\x1c\x51\x96\xad\x5b\xcb\xaf\x79\x28\x9c\x98\xc7\x9f\xd6\x43\xbd\xa7\x36\xaa\xad\xaf\x4f\x9d\x5e\xa5\xfd\x21\xbc\xe7\x13\x1d\x8d\x2b\xb7\xd5\xd9\x5f\x89\x98\x41\xa6\x8f\xbd\x0c\xfe\x68\xbe\x8f\x5f\x7a\xbc\x38\xe9\xf6\x8b\x1e\x4d\x45\x69\xab\x60\xde\x82\x54\x8a\xe7\xd5\x8a\x27\x2b\xf5\xac\xfb\x3c\x98\x32\x2b\x3f\xbe\xc7\x3a\xc8\x3d\x1b\xf7\xa5\xc7\x0f\xab\x32\xc8\xf4\x35\x36\x2a\xd7\x1f\xbd\x54\x27\xd9\x61\x95\xe4\xa3\x3d\x7d\x2f\x3b\xc9\x23\x20\x28\xb9\x19\xe3\x3b\x20\x28\xba\xa6\xcf\xad\x9b\xce\xa8\xa5\x10\x9e\xd7\x93\x3b\x7d\x76\xaa\xcf\xf7\xf8\x7b\x47\xed\xb3\x01\x19\xb1\xb1\xa3\x39\x1e\xc2\xaf\xb1\x62\x62\x32\x2c\xdd\x6b\x4e\x2a\x7f\xfb\x01\x49\x79\x6a\xbb\xb0\x67\xe5\x92\xad\x7e\xa9\xd1\x59\x8d\x4b\xe4\xb1\x16\xbb\x5d\x28\xbb\x1b\xb6\x82\xfe\x0c\x7c\x7c\x1f\xc6\x2f\x93\x5f\xe0\x6b\xf9\x67\xd4\x3e\x6f\x05\xc3\x7e\xaa\x8c\x39\x34\xb2\xc3\xc7\x66\xdc\x68\x3d\x3d\x13\xab\xfc\x6e\x35\xe2\xfd\x7b\x2f\x3a\xd1\xe2\xe2\x65\xd4\x7c\xe9\x55\x48\x1a\x1b\xfd\xc1\x87\xf9\x76\x2b\xbd\x78\xfa\xbe\x08\x62\x5c\x03\xc3\xe9\xd0\x53\x5f\x41\xbd\x62\x96\x51\xb4\xf5\xf0\xd2\xad\xb4\x5c\x37\xc1\xa2\xa5\xab\x40\x96\x41\xb1\x09\xa5\xc6\xa4\x86\x09\xb0\x18\xc7\x88\x4a\x61\x71\xae\xea\x00\xaa\x2a\x53\x2d\xaa\x01\x53\xc3\x26\x45\x26\x14\x96\xc5\xa8\x65\x70\x95\x01\xc3\x80\x3a\xe3\x9a\x7f\x1b\x1f\xba\x1e\x64\xa1\x43\x90\x85\x30\x25\xfb\x6e\xd7\x9e\xb7\x6e\x6d\xf4\x5c\x0a\x59\x7b\xaa\xa0\xda\xae\xe1\x8f\xee\x0f\xc7\x4f\x9f\x0d\x08\x8a\x64\x6b\x83\xb4\x68\x34\x9f\xe3\x99\xa4\xdd\x33\x6e\xb5\x78\x91\xa7\xa7\x9e\xc8\x71\xe7\x3e\x9a\x6b\x0c\x46\xaf\xd3\x37\x9a\xe2\xf7\xf1\x92\xfb\x10\x29\x64\x53\x65\xd1\x15\x91\x7a\xf6\xde\xad\x57\x26\x0d\x92\xae\x7e\x0c\x27\x2d\xcd\x7c\x83\xb0\x18\xaf\xf7\x46\xf7\x35\x1c\x17\xa3\x4e\xf4\xba\x10\xb4\xd1\xff\x1c\x08\x9a\x57\x21\x73\x9f\x76\x02\x3e\x3b\x0f\xf6\x8f\x85\xa0\x1f\x03\x01\x73\x1d\x48\x2b\x6b\x44\xc8\x73\xaf\x93\x28\x4a\x20\x6a\x35\x52\x4f\xf1\x78\x69\xa2\x97\xee\xdf\x7b\xa9\x57\xae\xd5\xe2\x10\xb3\x47\x2d\x6d\xc3\xcd\xb8\xd8\x0f\x59\x89\xcb\xf4\xcd\xa1\xb5\xbe\xe9\x1f\xa8\xef\x02\xe2\x62\xf0\x71\x9a\xaa\xf7\xd0\xfb\xb4\xdb\x1a\x5a\x45\xef\xfd\x43\x8b\xe5\x46\xcd\x6a\x2a\x53\x7c\xaf\x26\x87\xba\xee\x8e\xee\xcb\x5a\xf1\x1d\x64\xa3\x9d\xb8\x3d\x01\xcd\x56\xb3\x94\xac\xdc\x93\x64\xcd\xad\x8f\xa7\x09\x43\xe7\x8d\xbc\x4a\xa8\xa8\xbe\xc3\x27\x76\x0f\x0b\x25\x8d\xa1\xc8\x75\x20\xce\x04\xa6\xa9\xea\xa6\xc9\x75\xc2\x39\xe4\xaa\xaa\xcf\xd6\x73\x12\x1a\x16\x45\x16\x25\xba\x6e\x22\x89\xb9\x6e\x40\x4d\xe5\x2a\x67\x96\x45\x28\x20\x84\x42\x01\x89\xaa\x59\x2a\xb9\xf1\x8f\x4e\xae\x05\x71\xf8\x10\xc4\x61\x03\x87\xdf\xed\xbb\x6a\xdd\xda\x82\xbe\x14\xe2\xe2\x81\x31\x3d\x0e\xe2\xd6\xa1\xba\x6f\x51\xb3\xfe\xb0\xe5\x8e\x56\x34\x42\xfb\xdd\x87\x72\xd4\x79\x92\x9a\x64\xc5\xf8\x6b\x42\xbf\x7f\xad\x27\x86\xd8\x4e\x46\x13\x99\xe7\xc4\xa8\x65\xd6\x3e\xea\xbd\x91\x37\xd2\x79\x1c\x7b\xde\x00\x8c\x1f\x3e\xb2\x25\xb7\x9e\xeb\x25\x3a\xc5\x61\xd4\x50\x9b\x0d\x46\x3a\x1f\xd5\x72\x07\x14\xa6\x2f\xbc\x95\x30\x1c\xcf\x89\x74\xbe\x7f\xbf\x2e\xd4\x6d\xd8\x7e\x0e\xd4\x79\xa5\xb5\x6f\xde\x03\xbe\x3b\x0f\xea\x76\xfa\x79\x07\xd4\xfd\x46\xd0\x91\x08\xfa\x3f\xf0\x49\x04\xc6\xe4\x1c\x7d\xb3\xb5\x80\xfd\x3f\x48\xdf\x05\xd4\xfd\xa8\xe0\xbd\x02\xd4\x31\xa2\x42\x53\x32\x04\x89\x8e\x35\xca\x75\x29\xb0\x8e\xb8\x64\x96\x49\x80\x81\x98\x06\x39\x16\x92\x59\x12\x12\x2e\x81\x89\x55\xa1\x4a\x95\x60\xd5\x92\x4c\x22\x22\xcc\x19\xd4\xe9\xd7\x83\x3a\xfd\x10\xd4\x11\x15\x1a\xa1\x0f\x91\xac\x5a\xb7\x0e\xc9\x2e\x85\xba\x60\xf5\x7e\x02\xd4\x05\xaf\x37\xa0\x2f\xb8\x3f\xb3\x41\xbf\xae\xee\xa2\x09\x3d\xf5\xa6\x47\xe5\x6d\x65\x40\x9d\xfa\x34\xd5\xbf\x2d\x49\x51\x6c\x96\xde\xdd\xc4\x7d\x8d\x5a\x23\xd9\x78\x7e\xac\x96\x8d\x68\xde\x78\x1d\xbc\x0d\xf4\x7a\xad\xf0\x21\x38\xa8\xe9\xc5\x78\x29\x36\x1d\x39\xd9\x58\xe4\xbd\x0b\xb3\xfd\x8c\x66\x17\xfa\x83\xce\x2b\xff\xb0\x60\xb9\xf5\x70\x5d\xc8\x6b\xad\x9b\xce\x81\xbc\x41\x64\xe5\x93\x68\xd0\x67\x67\x43\x5e\xfa\x13\xec\xed\x80\xbc\xdf\x0f\x42\x42\x17\xab\x7e\xfb\xc3\x65\xfa\x3e\xbe\xaf\x65\x7c\x1a\xf3\x2b\xea\xbb\x80\xbc\x72\xa1\x4b\x6e\x3b\xcd\xb7\x97\xe1\x3d\x4b\xf2\x2e\x7e\x7b\x49\x0d\xaa\x10\xe4\xb2\xd1\x22\x2c\x36\x75\xad\xe7\x4c\x6b\xc0\x8a\x54\xad\xcc\x90\xe0\xdb\x5e\x3d\xee\x6a\xcd\x7c\xb2\xf0\xfc\x0e\x22\xee\xab\x1e\x7b\xef\xe4\xd2\xa2\x82\x6d\x0f\x3d\x0f\x87\x28\x33\xc8\x69\xb4\xd6\x88\x5e\x07\xf2\x38\xc3\x5c\x18\x54\xd5\x05\x06\x02\x5b\x14\x31\xce\x01\x41\xa6\xce\xa9\xae\x4b\xaa\x12\x48\x31\x26\x90\x9b\x88\x12\x22\x21\x37\x89\x4e\x81\xb0\x0c\x84\x55\x6a\x41\xbf\xba\x23\xd7\x83\x3c\x72\x08\xf2\x0c\xa2\xee\xd9\xc5\x5f\xb6\x6e\x1d\xe7\x5f\x0a\x79\xc9\xc0\x98\x9e\x0a\x79\xc1\x8f\xdf\x1e\x6f\x60\x68\x3e\x4c\x3e\x44\xaa\xe7\x3e\x55\xf0\xb3\xa9\x82\x1d\xa4\x0f\x2b\x7d\x4a\x05\x3c\xea\x31\x4a\xa7\x5a\x5f\x1f\xf7\xcb\xd1\x81\x97\x8d\x76\x61\x65\x28\x06\x30\xf2\xf1\x91\xb6\x9f\x4b\xb7\xb7\x09\xad\xf9\x62\xc4\x46\x91\xee\x78\x94\x78\xd4\xe3\x6f\x6a\x4e\x66\x8c\xde\xbb\x9e\x89\x35\x0a\xef\x85\xdc\x43\xab\xe4\xe8\x38\x95\xb6\xdd\x48\xbe\x52\x18\xbf\xb1\x68\x84\x5f\xb9\xe2\xdb\x38\xe2\x3a\x07\xfe\x3a\xeb\xfd\xb5\xe8\xa5\xfb\x6b\x7e\x7f\x38\x16\x8d\x89\xcb\xb5\x32\x36\x1f\x6a\xe3\x96\x4a\x3d\xbf\xad\x13\x89\x7d\x9e\xae\x1b\xd5\xef\x1a\xc6\x7e\x47\x98\xd9\xa1\xfb\xaa\x3d\x75\x99\xbe\xe9\xdc\x5a\xdf\x4f\xb1\x7d\x45\x7d\x97\x67\x9a\xfd\x71\x7d\xa4\x69\x59\x69\xbe\xea\x4f\x89\x07\x09\xdc\x87\x54\x3d\xd3\x53\xad\x5a\xbc\x98\xb3\x33\xf9\x38\x41\x55\x21\xab\xef\x19\x37\xf6\xa0\xbb\xa5\x81\x53\xb8\x6f\x4d\xd0\x68\xda\x8c\x3b\xce\x63\x8b\x44\xd0\xfb\x53\x37\xf6\x3c\x7a\xe1\x76\xe6\x3d\x02\xd3\xba\x4e\x9d\x44\xf4\x3a\x47\x11\xd2\x44\x42\xc3\x1a\xa0\x98\x42\x8c\x88\x29\x89\x25\x55\xcb\xa4\x1c\x21\x43\x43\x42\x05\x12\x09\xac\x53\x95\x22\x60\x18\x8c\x43\xa6\x09\x15\x20\x01\x75\x49\x19\x20\x18\xce\x40\xed\x7a\xb0\x68\x1c\x80\x45\x0d\x68\x06\x0e\x7f\xc4\x75\xd9\xba\x75\x6f\xd2\xa5\xb0\xf8\x10\x18\xd3\x4b\x61\x71\x83\x3e\x06\xc7\x51\x91\x72\xaa\xe3\x4e\xee\xad\xe4\xc5\x49\xb4\x9b\xce\x6a\x79\x49\x45\xbd\x68\x3d\xa4\x6f\x1f\x6d\xfc\xf8\x56\x2b\xdc\x3e\x45\x3c\xf2\x1e\xd9\x2e\x4a\x37\x16\xc9\xd3\xaa\x9b\x7c\xbc\x87\x2f\xe2\x79\x50\x78\xc9\x25\x8b\xdd\xf7\x7a\xc6\xcc\x98\x9d\x7c\x2d\x57\xf7\xa6\xfd\xfb\x97\x6e\x0a\xd7\x75\x42\x86\x59\xf0\xd2\xaa\x15\x62\x6e\xa1\xd1\x88\x46\x27\x91\xdb\xd4\xab\xc6\x52\xd3\x9e\x70\x2d\x51\x7f\x7b\x10\x7d\xa3\x30\xcd\xe4\xac\x5e\x52\x24\x47\xf1\xab\x2f\x92\x37\xe6\xc6\x39\x90\xc9\xd6\xfb\x81\xd1\x4e\x80\xff\x0f\x81\xcc\xb9\xaf\x3d\xb3\xd3\x2c\xeb\x09\xe2\xc4\xb3\x20\x5b\xba\x7d\x6f\x55\x62\xf4\xa3\xf9\xd6\xac\x57\xb5\x89\x5d\xb4\x5b\xe3\x8a\x09\xe3\x6f\xfd\x52\x56\x1a\xc1\xb1\xdf\x05\xb3\xbf\x1b\x6c\xe5\xcd\x41\xdd\x35\x53\x79\x20\x1b\x93\x5e\xb6\x9f\x7f\x33\x97\x2b\x94\xce\xee\x55\x4a\x24\xb0\xbb\x70\xc6\x2d\x4a\xdd\xd7\x48\x64\xc7\xdc\x9a\xfb\xfb\xc4\x3b\x05\xf6\x95\x18\xa1\x2b\x82\x7f\x7f\xd4\x84\xb9\xc6\x1e\xa4\x34\xb0\x89\x25\x44\x82\x9b\xd4\x92\x94\xe8\x8c\x68\x9c\x73\x6e\x98\x16\xe3\x3a\x35\x25\x91\x5c\x72\x15\xaa\xba\x69\x49\x2c\x39\xc7\x18\x72\xdd\xd0\x4c\xa4\x09\x2e\x66\x55\x2a\xbd\x1e\x1c\xd3\x43\x70\x0c\x89\xbe\xf7\xf7\x08\xe6\xad\x5b\x37\x78\x5e\x0a\xc7\xa9\x5d\x21\x39\xff\xfc\x6c\x38\xde\x90\xb7\x01\xc7\xf7\xb7\x9e\xd3\x22\xdd\x87\x14\xab\x7d\x8c\x74\x02\x8d\xa7\xe7\x0a\xaf\x54\x6f\x1b\xcf\xc9\x4e\x2b\x5f\xa3\x25\x57\xc2\xf7\xe2\x6b\xbd\xa0\xd7\xee\x63\xb9\xfa\x53\x71\xaa\x3f\x7d\xd8\xfd\x17\xbb\x99\x9c\xf0\x28\xd7\x86\x53\x18\x95\xad\xbe\x16\x8b\xdc\xb6\x62\xaf\x99\x51\xaa\xfc\x11\x89\x96\xae\x0d\xc7\x1b\xf7\xd7\x9c\x03\xc7\xb5\xf5\x9e\x65\xf4\x3d\xf2\xbb\xc2\xf1\x6e\x7f\xac\xe1\x78\x03\xe3\xce\x81\xe3\x07\x67\xcd\xaf\x15\xf0\xef\x0f\x81\xe3\x39\xff\x6c\x03\x25\x81\xec\x16\xf4\xc8\x94\xc6\x40\xd1\x7d\x48\x74\xde\x38\x24\x10\xd6\xa8\xd1\x7a\x46\xfd\xec\x4b\x9f\x96\x08\x7e\x89\x69\x6f\x81\xf8\x88\xfc\x7f\x36\xfe\x9f\xd2\xf1\xbf\x3f\x6a\x72\x5e\x01\xfa\x11\x60\x86\x45\x84\x2e\x91\xa1\xaa\xa6\xa5\x23\x6c\xe8\x58\x10\x42\xa9\xaa\x0a\x2e\xc4\x0c\xe2\xb1\x46\x4c\x4a\x35\x49\xb0\x24\x50\xc7\x9c\x1b\x88\x71\x80\x24\x10\xa6\xff\xa3\x1c\xe0\x5a\xd8\xbf\xf1\x43\x4f\xa1\x3f\x80\x02\x71\xf8\xaf\x79\x2c\x1a\xb7\x6e\xc8\xbf\x14\xf9\x83\x15\xc9\x1e\xe4\x4f\x04\x47\xff\x98\xcf\xe6\x16\x2c\xcd\xe4\x32\x99\x48\xc5\xce\x3f\x27\xbb\x49\xc6\xba\x13\x7b\x30\xe5\x2a\x2f\x95\xde\x48\x22\x62\x97\xbc\x68\x55\x07\xad\x72\xa5\xf3\x81\xee\x55\x11\xc9\xf3\xa6\xc3\x63\x2f\x51\x2d\x51\x4a\x0e\x65\xf3\xcd\x69\x3e\x4f\x26\x8f\x89\x9c\x97\x78\xad\xab\xf9\x66\x51\x44\xa7\x93\xb7\x74\xe1\xba\x08\xee\xac\x9b\xce\x99\xc1\x05\xff\xaf\xd8\xea\x9f\x4b\x66\xb0\xff\xf9\x25\x08\xfe\xb8\x6e\x3e\x07\xc1\x93\x89\x35\x3f\x1e\xf9\x5d\x11\x3c\xba\x13\xc1\x7f\xa3\xf1\xff\x89\x19\xfc\x5f\xab\xf2\x1c\xb3\x3b\x09\xe7\xb9\x35\x69\x95\x1b\x7d\x87\xb7\x86\xc6\x20\x3f\x48\x24\xb2\xb7\x93\x48\xfa\x25\x5b\xaa\xdd\x7a\x0f\x89\x9a\x93\xbb\x2d\xd2\x41\x29\xde\x4c\xea\xa9\xc8\x30\x22\x26\x89\x28\x6b\xf6\x88\x9e\x44\x06\xaf\x94\xe3\xd9\x72\xa6\x27\x9e\xeb\x1f\x5a\x89\xbb\xe6\xf4\x4a\xc5\x3b\x20\x9a\x26\x4c\x8a\xa9\xb4\x0c\x02\x25\x01\x40\x48\x04\x39\x57\x01\x41\xdc\xd4\x0c\x20\x18\x31\x21\x50\x75\x55\x68\x18\x08\x60\x4a\x00\x09\x40\x86\x81\x31\x62\x54\xf7\x7f\x22\x12\x5e\x0f\xc1\x0f\x3d\xf0\xa2\x61\x00\xc2\x7f\xd3\x72\xd5\xba\xf5\x28\xd4\xa5\x18\xfe\x18\x88\xe4\x5f\x58\xbd\x6f\x7c\x36\xaa\x77\x78\x9f\x68\xb0\x48\xb1\xd0\x1b\xa3\xf2\x83\x41\x6b\xbd\xdc\xb0\x99\x2d\xa5\x7a\x2f\x54\xbc\xe7\xa6\xf7\xd5\x6c\xff\x91\x78\x5e\xac\x4a\x6a\x93\x47\xfa\x52\xa9\xa1\x98\xd9\xac\xd7\x1e\xee\x6d\x32\x7d\x98\x54\x46\x2e\x7d\x33\x3a\xf5\x4c\x36\x39\xf1\xaa\xe9\x5e\xb3\x97\x37\x53\x26\x88\x5c\xbd\x7a\x77\xd7\x4d\xe7\xcc\xfd\xd4\x7a\xff\x39\x76\x95\xfb\x3b\x2f\xde\x7f\xce\xac\xdb\xcf\xc1\xf1\x78\x67\xcd\xaf\x13\xb9\x0c\xc7\xfd\xcf\x4f\xc4\xf1\x6b\x8f\xe5\xff\x1b\x79\xfc\xdf\x1f\x35\xd1\x42\x71\x7c\xfb\x09\xce\xe0\x4b\xc4\x02\xd7\xed\xe1\x8b\x9c\x2e\x9f\x88\x5c\xbf\x01\xf8\xd4\x37\xfd\x05\xb8\xfa\x2f\x88\x8c\xc4\xe3\x9b\xef\x14\xde\x25\x58\x29\x96\xd3\xb9\x48\xb9\xa5\x64\x12\x2d\xe5\x4f\x5b\x1c\x7a\x7b\x64\xe0\xbd\x4e\xf3\x97\xe9\x70\x47\x2c\xdf\x6f\xec\x4d\x87\xab\x57\x1d\xbb\xee\x78\xfe\x58\xff\xe5\xd6\x6d\x8b\xdd\x65\xdc\x59\x8a\x29\xb5\x7c\xba\x54\x4b\x28\x7f\xae\xc9\xef\x94\x35\xfd\xf2\xef\x79\x87\x13\x5d\x73\x9d\x61\x3d\xd9\xf0\x93\x06\x35\xe4\xd7\xb9\x0e\xfc\x00\xd6\x75\x2d\xdb\x2d\x64\x9f\xa5\x7b\xd4\x3a\xda\xf2\xd0\x47\xb3\x0f\x3e\xfb\x7c\x5d\xeb\xc3\xc4\xec\xb3\x7f\xaf\x6a\x07\x3d\x30\x0f\x69\x73\xba\x88\xea\xa5\x29\xe9\x7c\x3c\xd1\x3c\xee\x55\xca\x3e\x69\x90\x8f\x52\xc8\x07\x27\x44\xad\x92\xce\x3f\x28\xa6\x37\x92\x72\x39\xc3\x42\x66\x92\xb9\x7a\x25\xde\xd9\xea\xac\x59\x6c\x6a\xb2\x55\x3d\x6f\xeb\x33\x27\xbe\xfb\xf4\x22\xe5\x5d\xca\x75\x99\xdb\xbd\x44\x33\xff\x7d\xd2\x47\xa9\x15\x7c\x0b\xf5\x2e\x6d\xe6\x3f\x2e\x7a\x89\x3e\x73\x0e\xc7\x69\x14\x78\xc5\xf5\xdd\xe7\xb7\x59\xef\x9c\x64\x6d\x39\x8b\x0d\xbf\xfd\x0c\x4d\x17\xb8\x3c\x57\x38\xc0\x6e\x53\xed\xe5\xfb\x46\xb6\x34\xfe\x8c\x13\xb6\xb8\x53\xbe\xf8\x9d\xbf\x84\x29\xbb\x7e\xd5\xee\x85\x6a\xda\xe2\x68\x05\xd7\x6f\xb1\xbf\xdb\x01\x6e\x07\x95\x76\x86\xed\xe1\xb5\xf4\x5e\xf0\xda\x54\x3d\x24\x39\x9c\x65\xc9\x6e\x03\xbc\xc9\xf5\x0c\x58\xf0\x0a\x89\xe9\x33\x4d\xd8\xe4\xb0\xcb\x08\x67\x38\x8b\xca\xae\x73\x96\x0d\x0b\xe5\xd7\x3c\xce\x75\xfe\x7e\x47\xbb\x8b\xd9\xee\x43\xf5\xe5\xbe\xde\x66\xb7\xa9\xf2\xf2\x37\x8f\xb7\x74\xdc\xad\xd1\xa6\x5f\xaf\xa5\xd6\x27\x9e\xc7\xc1\xdb\x2e\x05\xbd\xf9\x90\x78\x97\x0c\xeb\x9a\xc7\xf9\x21\x79\x28\xfc\xbc\x91\xf0\x51\xd1\xb2\x2e\x48\x07\x5b\x5c\x02\xba\x0a\x19\xd0\xcc\x27\x0a\xd5\xc5\x9f\x40\x72\xd4\xee\x39\xce\xcb\x78\x78\x99\x46\xdb\xbc\x0e\xe9\xb5\xa4\x5e\x54\x19\x21\xfa\x0d\x99\x3d\x6a\xfb\x6f\xcd\xbf\x86\x86\x41\x6e\x87\x74\x34\x99\xbb\x5a\x81\x88\x3b\x25\xa8\xf2\x9d\xb2\x98\x58\xbc\xe7\xb8\x52\xb4\x99\x17\x62\xc4\x15\x66\xcb\x82\xcf\x21\x8d\x4f\xcc\x49\x33\xae\x57\xf3\xee\x09\x8e\x3d\xe8\xb7\xf9\xeb\xda\x03\x40\xef\xb6\x9d\x41\x9b\x09\x31\x92\xae\x7b\xa9\x43\x0f\x0a\xd8\xaa\x8e\x97\xef\xb1\xde\xae\x47\xe7\x84\x27\xe8\x7e\x79\x1c\xec\xe3\x7d\x58\xe3\x1d\xb3\x6c\x9b\xe1\xa2\xf6\x99\xf1\x9b\xad\xa6\xcf\x8e\x87\xbd\x5c\x0f\x16\x5b\x33\xa2\x03\x8a\x2e\x32\xd7\x8c\xe5\x2a\x88\xae\xa4\xed\x2e\xd6\x07\x93\xe6\xb1\x91\xbc\xc1\xfc\xda\xc1\xb0\xc5\xfa\x9c\x2c\x1f\xce\xae\x3f\x74\x46\x33\xe0\x7b\x93\x23\xd7\x76\x06\xd7\x77\x74\x50\xc2\x61\xf5\x03\x1d\x8e\x37\x66\x01\x3d\x67\xae\x0f\x8f\xf3\xff\x86\x8c\x83\x96\x6c\xd0\x1e\x6f\xc4\x70\x24\xdf\x6c\x67\xec\xfe\x14\x6b\x76\x09\x3b\x68\xd6\xae\x4e\xc7\xdb\xb7\x5c\xba\xfe\x30\x9b\x96\x02\x0e\xda\x11\xba\xc7\xb0\xcd\x7a\xfd\x33\xaa\x3f\x62\x6a\x07\xb9\xef\x5c\x76\x9c\x3a\xc1\xb7\x99\x6e\x17\xae\x57\x9a\xe1\xfb\x44\x1c\x63\xc3\x81\x6a\x7a\xaf\xb0\xeb\xa5\xaf\xcf\x8c\x8f\xd2\xfd\x70\x12\xdb\x5c\xe2\xfc\x88\xb0\xf9\xcc\xff\xec\x05\x96\x5f\xc4\xad\x12\xf9\x72\x5f\xa7\x6d\x3a\xce\xcb\xd9\x5e\xde\xc3\xf3\x60\x89\xf0\xe7\x9f\x42\x7a\xcc\xee\xb9\xca\xd7\xff\xf9\x1f\xe5\xc6\x75\x7a\x62\xe3\xd4\xe0\xe6\xdb\x37\x4f\x4e\xbc\xbf\xfe\xba\x53\xc2\x09\xb9\x23\x8e\x23\x9c\xef\x80\x86\x93\x9a\xce\xb8\xd3\xf5\x8e\x12\xbf\x45\xba\x5f\x81\x2d\xd2\x80\x0a\x7f\x29\x8d\x54\xa2\x9c\x98\x07\x99\xf2\x5d\xd1\xb4\x7d\xbb\xe6\xb3\xea\x7b\xfb\xb2\x3d\x5f\xd8\xac\xb6\x4f\xda\xd6\xc6\x0e\x79\x32\x73\x9d\x4d\x72\x21\x0f\x6d\x89\x87\x69\xa2\x24\x0b\xe5\x44\xfa\x21\x3f\xdf\x10\x0f\x50\xfc\xa5\x94\x13\xc9\x44\x39\x91\x8f\x25\x2a\x9f\xca\xdd\x03\xe7\x07\xa1\x9e\x58\x2c\xe8\x7e\xb9\x1f\x36\xf5\xd8\xe5\x85\xe5\x5a\x79\xa7\x0f\xfc\x2d\xfc\xd3\x3d\xb0\x5a\xd5\xfe\x0e\xe1\x10\xa2\xcc\xb6\x2f\x3e\x13\x5d\x39\x28\x82\x0b\xfd\xdf\xc1\x21\xe1\xa1\xf1\x69\x27\xe5\xd8\xe8\x28\x3a\xae\xd7\x19\xc9\x4a\x29\xab\x08\xe6\xb1\x59\x88\x29\x62\xdc\x1f\x2a\xdc\xe9\x0f\x7b\xd2\x93\xbe\x0d\xff\x37\x00\x00\xff\xff\x3f\xc8\x30\x0b\x44\xb8\x00\x00") + +func set_optionsHorizonSqlBytes() ([]byte, error) { + return bindataRead( + _set_optionsHorizonSql, + "set_options-horizon.sql", + ) +} + +func set_optionsHorizonSql() (*asset, error) { + bytes, err := set_optionsHorizonSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "set_options-horizon.sql", size: 47172, mode: os.FileMode(420), modTime: time.Unix(1508958304, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _tradesCoreSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x69\x93\xe2\x46\xd3\x36\xfa\x7d\x7e\x05\xe1\x2f\x63\x07\x63\xa3\x5a\x54\x92\xec\xe3\x3b\x42\x02\x01\x62\x91\x10\x3b\x9c\x38\x31\x51\x25\x95\x40\x2c\x12\x48\x62\x7d\xe2\xf9\xef\x27\x58\xba\xa1\x69\x7a\xa7\x3d\xf3\xbe\xb7\x15\xf6\x34\xa0\x24\x2b\xf3\xaa\xcc\xac\xac\xac\x2a\x11\x2d\x82\xc0\x0f\x06\xa9\x88\x3b\xfe\x8c\x7f\x39\xfc\x49\x79\x7e\xe0\xc7\x43\xee\x7e\x4b\x39\x93\x30\xde\xdd\x9f\x70\x77\xc0\xa3\x2f\x87\x3f\xfb\x4f\xb9\xfb\xe5\xf7\xdf\xbf\xfc\xfe\x7b\xaa\x16\xc6\xc9\x20\xe2\x0d\xbb\x92\x72\x69\x42\x19\x8d\x79\xca\x5d\x4c\x67\xbb\xdb\xbb\xfb\xb9\xc5\x74\xc6\xdd\x94\x17\x85\xd3\x13\xc1\x92\x47\xb1\x1f\x06\x29\xe5\x0f\xf2\x87\x78\x46\xc5\x36\xa9\xd9\xe0\xfb\xee\xeb\x17\x24\x5f\x1a\x7a\x33\x15\x27\x34\xe1\x53\x1e\x24\xdf\x13\x7f\xca\xc3\x45\x92\xfa\x3b\x25\xfc\xb5\xbf\x35\x09\x9d\xf1\xe3\x4f\x7d\x77\xc2\xbf\xfb\xc1\xf7\x24\xa2\x41\x4c\x9d\xc4\x0f\x83\xef\x31\x8f\x77\x7c\x1f\x13\x3b\x13\x7f\xc7\x9a\x07\x4e\xe8\xee\x74\xfe\x3b\xf5\xb5\xd5\xcc\xcb\x5f\xff\xba\x6b\x3b\x70\x69\xe4\x7e\x77\xc2\xc0\x0b\xa3\xa9\x1f\x0c\xbe\xc7\x49\xe4\x07\x83\x38\xf5\x77\x2a\x0c\x8e\x3c\x86\xdc\x19\x7f\xf7\x16\xc1\xa1\x2d\x16\xba\x3e\xdf\xdd\xf7\xe8\x24\xe6\x0f\x9a\x99\xfa\xc1\xf7\x29\x8f\x63\x3a\xd8\x13\xac\x68\xb4\xeb\x88\x03\x49\x14\xae\xbe\xc7\xdc\x59\x44\x7e\xb2\xd9\x31\xf7\xbc\xbf\x8e\x00\x70\x1a\x39\xc3\xef\x33\x9a\x0c\x53\x7f\xa7\x66\x0b\x36\xf1\x9d\x6f\x3b\xc4\x1c\x9a\xd0\x49\x38\xf8\xeb\xcb\x97\x5c\xdd\xaa\xa5\x0c\x33\xa7\x77\x53\x46\x3e\xa5\x77\x8d\x46\xb3\x71\xa4\xfc\x23\xf6\x07\x01\x8f\x62\xea\x38\xe1\x22\x48\xfe\x7a\x9e\x96\x4f\x26\x7e\x30\xf0\xe3\x78\xc1\x23\x3f\x70\xf9\xfa\x05\x7a\x67\x36\x5f\x84\xd1\x62\x1a\xb3\x4d\xcc\xe7\x2f\x12\xf3\x60\xf9\x1a\xca\x59\xe4\x3b\xfc\x15\xcd\x1f\x2c\xf3\x35\x1c\x87\x7e\x9c\x78\x9c\xbf\x92\xf2\x15\x64\x6c\xb1\x79\x0b\x50\x47\xf4\x19\x9d\xd0\xc0\xe1\xf1\x5f\x5f\xd4\x4a\x53\xaf\xa7\x9a\xaa\x56\xd1\xcf\xa8\x2d\xb3\xd2\xbb\xfb\x4a\xb2\xde\x89\x12\x46\x9b\xd4\x9e\x71\xd6\x32\x1b\xcd\xba\x6a\x98\xcd\x33\xfa\x7b\x9a\xef\xb3\x31\xdf\xbc\x8e\xab\xc7\xf9\x6b\x18\x9f\xc8\x5e\xcf\x3b\x5a\xc4\xc9\xc4\x0f\x78\xfc\x1c\xe7\x7b\xa2\x57\xf3\xdd\x49\xc1\xf7\x61\xe0\x19\xbe\x27\xa2\xd7\xf3\x3d\x78\xc6\x73\x4c\x0f\x14\xaf\xe7\x78\xef\x0f\xcf\x31\xbd\x27\x7a\x35\xdf\xd9\x82\xc5\x0b\xf6\x0c\xcf\x03\xc1\x5b\xf8\x4d\xfc\x78\x38\x5f\xf0\xc5\x73\x98\x9e\x93\xbd\x9e\x37\x7f\x1e\xd3\xfd\xfd\x57\x73\x0b\x3d\xef\x79\x76\x07\x82\x57\xf3\x3b\x84\x8c\x21\xa7\xee\xf3\x6c\x1f\xd0\x7d\x32\xf7\x63\x18\xe3\xf3\xef\xaf\x6c\x86\xd1\xe0\x19\xe6\x8c\x06\xaf\x16\xf8\x18\x97\x9e\x93\xf5\x8e\xe4\xad\x3c\x77\xc3\xfe\xcb\x6c\x77\x54\x47\xce\x7b\xda\x4b\xc6\x97\xc1\xf0\x25\xb2\x53\xd8\x7a\x81\xf2\x3e\x0c\x3d\x4f\x77\x0a\x2b\x2f\xd0\x1d\x22\xc5\x0b\x44\xf7\x9e\xff\x22\xdd\xab\x94\x38\x78\xfd\x8b\x34\xf7\x3e\xfc\x02\x25\x7f\x51\x81\x83\xb3\x3d\x4f\xf3\xc0\xb6\x9f\x27\x65\x34\x78\x9e\xe0\xce\xf6\x5e\x45\xb5\x33\xa5\x23\xa1\xde\x6d\xea\x66\xc3\xb0\xcc\x73\xe2\xc9\x6c\x10\xcf\x27\x47\x8a\x46\xb6\xa8\x57\xd5\x47\xbc\xfe\x3a\xe6\xb7\x26\x9d\xf2\x3f\xef\x3e\x4b\x35\x37\x33\xfe\xe7\xf1\x2b\x7f\xa5\x1a\xce\x90\x4f\xe9\x9f\xa9\xdf\xff\x4a\x59\xab\x80\x47\x7f\xa6\x7e\xdf\xa7\xbd\xd9\xba\xae\x36\xf5\x3b\xce\x77\xfc\xbe\x3c\xe0\xf8\xf0\xe6\x91\x71\xd6\xaa\x56\x75\xb3\xf9\x0c\xe7\x03\x41\xca\x32\x1f\x32\x48\x19\x8d\xd4\xd7\xbb\x1c\xf5\xee\xb3\x78\xcf\xe4\xeb\x65\xcb\x77\xea\x1f\xdb\xbc\x47\xe8\x45\x7d\x1e\x60\x69\x5a\xcd\x0b\x3c\x53\x1d\xa3\x59\xbc\x17\xeb\x3c\x29\x7d\xd0\xfc\x89\xcb\x85\x20\x6f\x51\xfe\x11\x93\x3d\x00\xb5\x4a\x66\x36\xd8\xcd\x44\x66\x51\xe8\x70\x77\x11\xd1\x49\x6a\x42\x83\xc1\x82\x0e\xf8\x1e\x86\x57\x26\xd1\x3b\x32\x97\x7b\x74\x31\x49\xbe\x27\x94\x4d\x78\x3c\xa3\x0e\xdf\xcd\x08\xbe\x5e\xdc\x5d\xf9\xc9\xf0\x7b\xe8\xbb\x67\x49\xfe\x03\x65\xcf\x0d\xf2\xa8\xe6\xde\x74\x4f\x4a\xde\x19\xc0\x35\xc0\x0f\x56\x7e\x1e\x45\x7f\xfd\x92\x4a\xa5\xee\x3e\xf1\xdd\x94\x33\xa4\x11\x75\x12\x1e\xa5\x96\x34\xda\xe5\xa1\xbf\x8a\xe4\xb7\x7d\xdf\x98\xad\x4a\xe5\xdb\x9e\x7a\xf7\xc5\x80\x4e\xf9\x15\x62\x82\xaf\x11\x2f\xe9\x64\x71\x8d\x1a\x00\x78\x49\x3e\xa1\x71\x32\x0d\x5d\xdf\xf3\xb9\x9b\xf2\x83\x84\xef\xe6\x87\x39\x3d\xaf\xb6\x2a\xcd\x94\x70\x4f\xfc\xe5\xb7\x4b\x2b\xb8\xf7\xe7\x0f\xa2\x12\xbf\x0b\x92\x63\xf6\x9d\x62\xfe\xc0\x0f\x92\x8b\x9b\x31\x9f\x07\x8b\xe9\xf5\x7b\xc1\x62\x1a\x2f\x18\x0f\x92\x68\x37\xb1\xbb\x53\xf8\x21\x8d\x1f\x78\x13\xba\x9b\xff\xb9\x3c\x4e\xae\x8b\x73\x20\x1c\x86\x53\xee\x86\x53\xea\x07\x57\xa8\xd0\x23\xac\x93\x61\xc4\xe3\x61\x38\x71\xe3\x54\xc2\xd7\x97\x92\x79\x13\x3a\x78\x4a\xa2\xab\xbd\xf4\x90\xe4\x6c\x64\xbe\x1f\xe6\x8f\x28\x7d\xdf\xcf\x6a\x53\xd9\xa2\x9e\x2d\xa7\x7e\xfd\xf5\x0e\xbb\xff\xfc\x9d\x12\x7e\xfb\xed\xe9\x6f\x3f\x80\xea\x82\xc7\x43\x18\x0f\x9c\x1e\xdb\xc8\x6e\x50\x78\xaf\x79\xec\x12\xa3\x83\x65\x04\xa1\xcb\xcf\xcd\xe2\x81\x39\x3c\x6e\xf4\xe1\xa0\xf5\xde\xe6\x1f\xa6\x7f\x07\x41\x8e\x9f\xd1\x78\x78\x26\xcc\x63\x0f\x9c\x45\x7c\xf9\x22\x11\x5b\x38\x63\x9e\x4c\xfc\x38\x79\x91\xf4\x3e\xa7\xbc\xeb\xf9\xc3\xc7\xfb\x22\x4e\xe2\x4f\x9f\x70\x82\x7d\xb4\xb9\x62\x66\x67\x3d\xfd\x30\x75\xbd\xe7\x77\xd1\xd5\xa7\x76\x9e\x30\x98\xa7\x32\xe0\x87\x6c\x4e\x5a\x3c\x65\x2d\xc7\x8c\xe4\xbd\x3d\x76\x9c\x5e\xfc\x7a\x0c\x01\x93\x09\x8f\x5e\x19\x4c\xf6\xdf\xf4\xdd\xa7\x82\xc9\xbe\x8e\x42\xe3\x98\x27\xc9\x66\xc6\x9f\x70\xbf\x73\x32\x27\x74\xaf\x46\x5f\xf8\xdb\x03\xda\x43\xc5\xe1\xb9\xf8\x72\xa8\x4c\xbc\xd4\xf4\x19\xd5\x4b\x2d\x9f\x97\x3a\x9e\x6b\x98\x4e\x77\x21\xe0\x3a\x20\xfb\x8a\x4e\xf0\x84\x2c\xfb\x9b\x4f\x85\xa8\xfd\xcd\x94\x1b\x2e\xd8\x84\xef\xbc\xc4\xf1\xf7\x05\xc2\xcf\x0a\x83\xc7\xe9\xe4\x41\x97\x0b\x6b\x3c\x2a\xf8\x84\x45\x1f\xbf\x79\xb4\x8b\x8b\xaf\xde\x59\xcb\x53\x66\x7c\xc8\xbd\xdf\x6b\xc5\x87\x29\xf7\xc1\x88\xfd\xd9\xb5\xbe\x14\x1f\xc5\x9b\x30\x4a\x9e\x19\xba\x8f\xe3\x1e\x5f\x27\x34\x49\xf8\x74\x96\xa4\x76\xce\x1c\x27\x74\x3a\x4b\xed\xb2\x9f\x70\x71\xf8\x24\xb5\x0d\x03\xfe\x78\xb4\xf4\xa8\x3f\x59\x44\x67\x63\xe5\x53\x2d\x9c\xe1\x77\xa8\x0b\x9c\x7d\xf9\xf1\xe8\x71\xcf\xf6\x89\x2e\x38\x96\x16\xc2\xe8\xb2\xe7\x7e\xdd\xab\xfb\x9f\x94\xf0\x5b\x4a\x35\x73\xa9\xc3\xdb\xff\xe7\xef\x14\x11\x45\x24\xfe\x76\xb5\x43\xce\xa7\x4d\xef\xee\x97\xf3\x32\xcb\xf9\x70\xf0\x54\x3c\xd8\xd7\xb8\x76\xf1\xf7\xaa\x40\xbb\xb9\xde\x07\x44\x89\x17\xec\x28\x44\xc4\xe3\x07\x63\xe3\xe3\xac\x63\xe7\x34\x11\xa7\xf7\x0e\xf3\x58\x9e\xb3\x39\xea\x7b\x65\x3a\xb1\x78\xcd\xa0\xfd\xc4\xb8\x76\x71\x9f\x07\x4b\x3e\x09\x67\xfc\x85\x51\xec\xd4\xf4\x07\xc6\x9e\xb3\xe9\xfc\x07\x20\xb8\x2b\x18\x1e\x20\x98\xc7\xfc\x15\x83\x3b\x8d\x93\x97\x80\xd8\x31\x7a\x19\x84\xbb\x42\xe4\x03\x8e\x97\x40\x3c\x68\xed\x49\x30\x8e\x05\x90\x77\x23\x71\x2c\xc6\xbe\x27\xb1\x3f\x70\x1f\xf3\xcd\xab\xa8\x57\xdc\x1f\x0c\x93\x47\xb0\x5d\x51\xe9\x54\xfb\x79\xb7\x56\xa7\xd2\xf5\xaf\x27\x17\x7f\x38\x2f\xbb\xe2\x7e\xcf\x05\x82\xb3\xca\xd5\x7b\xa5\x3a\x2b\xd4\xbf\x07\xee\x97\x72\x8b\xe7\x52\x85\x6b\xac\x9e\x4e\x40\x2e\xe7\x42\x13\x7f\xea\x3f\x91\x61\x3c\x3b\xb9\xbb\x5d\x7e\x70\xb6\x7c\xf1\xae\x89\xd2\xd9\xf7\x0f\xda\x5c\x7c\xfd\xa8\xe2\x7f\xae\x3b\xd9\x83\xfa\xe6\xbb\x7b\xff\x7c\x09\xe8\xd0\xff\xc9\xfa\x41\xd8\x7d\xc5\x74\xe2\xb2\x67\xd6\xfb\x45\xb0\x27\xef\x3a\x43\x1a\x0c\xf8\xd5\x29\xec\x39\x38\xe7\xab\x4e\xef\x8f\xcb\xa7\x62\xf1\xfb\x21\xfa\x87\xf1\x61\xa1\xbb\xb9\x06\x4e\xb2\x8e\x78\xbc\x98\x5c\x8d\xe4\xc9\x7a\xca\x5f\x9c\xae\x9d\x56\x08\xdf\x83\x67\x6e\x37\x1f\xf4\xc2\xe8\x85\xba\x56\x2a\xa7\x36\xd5\x17\xf0\x7d\x9e\x65\xfc\x66\x7e\x86\xd9\xd0\xeb\xcd\x94\x61\x36\xad\x53\x55\xa8\xad\x56\x5a\x7a\x23\xf5\xeb\xd7\x82\x56\xaf\xf5\x8a\x46\x05\x66\x0d\x94\x37\x6d\xac\x75\x2b\xf9\xaa\x99\xab\xe4\x4b\x2d\xb3\xd6\x82\xc5\x1e\xea\x57\xf3\x8d\xa2\x65\xb6\xb2\xba\xa5\x36\x3a\x92\x9d\x95\xac\x2e\x2c\x7e\xfd\x96\x52\x8e\x97\x78\xf8\x43\x04\xe1\x5b\x0a\x7f\x4b\x09\xdf\x0e\x00\xa7\xbe\x7e\xfd\x96\xfa\xaa\xda\xaa\xaa\xaa\x7f\xff\xfd\x75\x7f\x03\xfe\xf6\xd7\x4b\xf2\x64\xed\x5a\xaf\x50\xc4\x65\x51\xea\x6a\x39\xdd\x2c\x97\xbb\xa2\x58\xce\x35\x3b\x56\xb3\x2c\x76\x72\x9d\xba\x6d\x15\x61\xa5\xa8\xe7\xba\x48\x2f\xb7\x0d\xbb\x5e\xa9\xea\x8d\x82\x56\x38\xc9\xb3\x13\x43\x16\x65\x45\x41\x58\x54\xd0\xf3\xf2\xe0\x57\xc8\x03\x91\x9d\x87\xc5\x96\x2e\x42\xb5\xda\x6d\xe5\x5b\x45\xa4\xf6\x4a\x6a\xb7\x5b\xe8\x76\xdb\xb0\x5d\xec\xf6\x7a\x75\xa2\xf7\xba\x7a\xb3\x56\xce\x75\xfb\x0d\xb5\x43\xa4\xae\x85\x3f\x4d\x1e\x55\xec\x68\xb5\x9e\x2a\xf6\x70\x47\xd5\x8b\xdd\x4e\x1d\xb6\xca\x16\x6c\x59\x58\x6b\x15\x8a\x2d\x5b\xc2\x7a\xab\x56\xb6\x4c\x68\x17\xdb\xb8\x53\x2f\x5a\x46\xdd\x2c\x97\x8b\xf0\x5e\x1e\xf1\x81\x3c\xd2\xb7\x94\xf8\x8c\x3c\xe2\x2b\xf0\xe9\x96\x0b\xa4\x6e\x62\xcb\x34\xf4\x5a\xb6\x6a\xe6\x35\x09\x41\x15\x23\xd2\x17\x6b\x66\xae\x51\xaf\x14\x3a\x65\xa9\xa0\x55\xb2\x55\xbb\x62\xe4\x2d\xdc\x90\xf4\x5e\xa7\xdd\xba\x97\x87\x3c\x90\x87\x7c\x4b\xa1\x67\xe4\x21\x4f\xbb\xdc\x65\x35\xec\x03\xae\xf6\x74\x8d\xeb\xad\xfe\xf6\xb0\xce\x75\x0f\x1a\x41\xae\x22\x7b\x22\x22\x9c\x13\xd9\x05\x0c\x4a\x4c\x64\xb2\xe2\x41\x44\x3d\x11\x01\xc0\x24\x91\x28\x14\x62\x8f\x7a\x00\x0b\x88\xba\x02\x13\x21\x23\x08\x31\x41\x62\x5c\x51\x76\xc0\x08\x1f\xbc\x76\x3c\x44\x09\x52\xc8\x11\xf4\x3c\x88\x65\x2a\x48\x4c\xe0\x92\xe0\xb9\xc0\x23\x2e\x02\xb2\x03\x3c\xea\xb8\x50\x60\xc4\x71\x04\xd9\x41\xc8\x15\x25\x49\x84\xa2\x22\x13\x19\x40\x91\x02\xf2\xf5\x5b\x0a\xec\xfb\xe5\xab\xfa\xd3\x5e\x5a\xb7\xec\xe3\x4d\x66\xd3\x28\x6b\x52\x2e\xc8\x29\x45\x28\xac\x47\x5a\x3a\x16\x06\x49\xbc\x32\x56\x5b\xd0\x75\x1b\x9d\x1e\xd5\x4a\x34\x3f\xd8\xd1\xeb\x26\xae\xd0\xed\x0c\xda\x2f\x72\xee\xab\x5d\x80\xf7\x64\xda\xf8\x1f\x50\xe4\xa6\xd7\xd7\x0b\xc7\x7e\xc2\x50\xb9\xa2\x40\xa6\x30\x41\xc1\xae\x23\x7b\x02\x23\x82\xc8\x25\x0a\x10\xa6\x22\x50\x90\x04\x05\x82\x28\x06\x32\xe2\x00\x62\x8a\x21\x80\x54\x72\x99\x88\x19\xc4\x54\x26\xdc\x43\x3b\x23\xbb\x85\xb1\x3b\x50\xc2\x14\x89\x92\x27\x32\xd1\x63\x14\x48\x8a\x24\x33\x99\x73\x05\x61\x59\x10\x14\x47\x26\x94\x11\xd9\xc1\xc8\x65\xce\x2e\x8c\x30\x4a\x28\x15\x5d\x8f\x43\x06\x44\x51\xe1\x5f\xbf\xa5\xe0\xb7\x14\x10\x05\x59\x11\x65\x24\xc8\x47\x8b\xcd\x16\x6a\xfd\x11\x30\x17\x62\x28\xb0\x92\xd4\xc1\xc1\xc6\x5a\xb6\xd6\x05\xd4\x9e\x85\xe3\xf4\x32\xaf\x5a\x49\x16\x94\x61\x55\xd2\x24\xd2\x1f\xca\xd0\x1e\xc4\x0b\xb5\x31\x6d\x08\xeb\x41\x7e\x06\xbc\x91\xdf\x84\x2b\x73\xb0\x6c\x77\xea\xd9\x49\xa3\x23\x2e\xaa\x35\x84\x71\xa3\x1a\xee\x11\xee\x78\xb9\x41\x7f\xff\xca\xb8\xff\xe7\x10\xcc\x06\xa7\xf7\x2b\x55\x2d\xad\x0f\x3d\x32\x94\xa2\x62\x11\xf1\xe1\x7c\xd9\x8a\x3b\x7a\xcd\x53\x27\xcb\x76\x3c\x53\x55\x98\xe9\xd7\x85\xd2\xa8\xa6\xe6\x0d\xb7\xc8\x6c\x18\x37\x46\x59\xb7\x6c\x76\x15\xd6\x95\xc2\xee\x04\x2f\x2c\xd2\x6c\xa8\x59\x67\x38\x4f\xc2\x75\x0e\xca\x66\x7e\x4a\xe8\xbc\xeb\xe1\x28\xdf\x0e\x0e\x4d\x5d\xb1\xe8\xc2\x55\xf3\xbe\xb7\xe8\xac\xf3\xb2\xf9\xff\x64\xd7\x2b\x2d\x9a\x2a\x0e\x76\x14\x8f\x42\xc5\x63\x02\x92\x11\xa3\x12\x45\x50\xa1\x90\x01\x81\x8a\x8e\xe4\x62\x91\x0a\x58\x82\x0a\x43\x00\x50\x0f\x7b\x18\x7b\x14\x21\x47\xf1\x00\x41\x0a\x65\x3b\x6b\xbc\x85\x57\x30\x89\x42\x8f\x01\x59\xc4\xd4\xf5\x10\x06\x0a\x57\x14\x80\x14\x42\x08\x92\x64\x59\x76\x3d\x09\x2b\x58\x16\x29\xc7\x48\x74\x65\x28\x20\x4e\xa0\x87\x5c\x2e\x4a\x02\x24\x50\xda\xc9\x81\xce\x2c\x5a\xb9\xb3\x68\x6b\xda\x58\xb0\x6c\x0b\x19\x72\xa5\x97\x17\x89\x2e\xcc\xea\x63\x64\x14\xac\x71\x21\x87\x1b\x8d\xb1\xd1\x98\x29\x49\x2b\x1e\xcf\x0b\xd2\x76\x32\xb3\x9d\xfa\x6a\x38\x87\xe5\xe5\x74\xb5\xc2\xcd\xd8\xe8\x38\xbd\xc8\x37\x27\xf9\x65\x13\xb9\x61\x21\x09\xc7\x66\x35\x1d\x75\x04\xab\xb5\x47\x78\x6f\xd1\x67\x76\xd1\x18\x6e\xe7\x86\x42\x2b\xbd\xb4\x54\x9e\x89\xfd\x15\x22\x3d\x2e\x09\xc8\xef\xaf\x83\xa2\x8a\x73\x2b\x30\x15\xcb\x79\x5c\x2f\x96\xa7\x16\x0a\x97\x71\xaf\x5d\x46\x5b\xbb\x4f\xfa\xba\xd8\x9f\x9a\xd8\x37\x15\x61\x62\x74\x16\x36\x80\x59\x35\xdd\x5b\xd6\x78\x7b\x55\xf2\xf9\x6a\xc7\xb9\x7a\xc5\x62\xab\x83\x6b\xbd\xfe\x5f\x60\xb1\xb2\x8c\x44\x65\xd7\xed\x22\x23\x0a\x63\x02\xa3\x94\x33\x04\x04\x4e\x5c\x97\x2b\xdc\x71\x05\xc2\x99\x20\x09\x0c\xcb\x0e\xa1\x02\xe5\xb2\x0b\x44\x99\x61\x26\x2a\x58\x61\x74\x3f\xd0\xdf\xc2\xea\x1d\xcf\xc1\x4c\xf1\x98\x2b\xc9\x02\xf0\x18\x80\x00\x70\x17\x2a\x50\xf1\x64\x87\xb9\x92\x24\xb8\x0e\x81\x10\x2a\x32\x40\x08\x13\xcf\x15\x08\x94\x04\x80\x44\x42\x01\x07\xb2\xb8\x4b\x16\xf0\xc9\x62\xc1\x5d\xd6\x90\x2d\x07\xfa\xc6\x0b\x67\xe9\x95\x95\x5b\x04\xe1\x66\xea\xc7\xf6\xcc\xf1\x5a\x9d\x41\x7d\x33\xdd\xea\x54\xa9\xd5\x6b\xe1\x76\xe3\xe5\x47\xd3\x68\x93\xd1\x56\x43\xe8\xd2\xbc\x4a\x07\xbe\x96\x6b\x20\x2b\x1d\x23\xb7\x3d\xd0\xba\xa3\xea\x62\x3c\xae\x08\xcb\x6c\xb7\xb9\x10\x7a\xd5\x39\xde\x23\xbc\xb7\xd8\x33\xbb\x19\xeb\xbc\xb8\x62\x7e\xa7\x13\xae\xa9\x37\x94\x1a\x0e\x6a\x25\x95\x5e\x7f\x69\x96\x4a\xd0\x97\x66\x4b\x21\x9a\x99\x5e\xe2\x4e\xa7\x7e\xb3\xb6\xae\x04\x12\xc0\xaa\x17\x37\x74\x2e\xcc\xca\xde\xa8\x02\x50\xce\xe9\xf9\xe5\x9e\xbe\xad\x2f\x85\x42\x69\xa5\x03\x3a\xc4\xbd\xf6\x9e\xbf\x7d\xc5\x62\x6b\xe1\xb5\x5e\xff\x2f\xb0\x58\xe8\x02\x24\x0b\x54\xe1\x10\x00\xe2\xca\xb2\xe8\xc8\x40\x00\xa2\x20\x4a\xae\xc8\x29\x51\x3c\x2e\x10\x06\x10\x66\xc8\x81\x22\x10\xb9\x28\x28\x04\x60\x85\x32\x49\x81\x50\x62\x7b\x6b\xbb\x85\xd5\xbb\xb2\x28\x31\xa4\xc8\xd8\xe1\x84\x53\xa8\x40\x00\x80\x8c\x45\x19\x63\x0f\x4a\x78\x67\xc4\x98\xb9\x00\x38\x80\x63\x0a\x90\x2b\x70\xc2\xb9\x04\x00\x71\xb0\xe7\x20\x02\xc1\xd7\xfd\xe4\xe8\xde\x62\xc1\x9d\xc5\x1a\x03\x30\xe9\xaa\x93\x64\xb6\x58\x2d\xe6\x64\xab\x5b\xcc\x25\x7c\x6b\xb3\x48\x5b\x25\xc6\x7a\x9e\x5d\x8c\xea\x9d\x4a\x03\x4c\x4a\x8b\x81\xd2\xab\xe5\xa6\xc3\x8a\xe0\xe4\xec\xe6\xc4\x58\xd6\x2b\xb9\xf6\x94\xc6\x4a\x2d\x61\x73\xd1\x1a\xa5\x93\xe1\x3a\x1e\xce\x4a\xd6\xc8\xc9\x1d\x52\xc8\xbd\xc5\xae\x4e\x88\x4f\xf2\xa3\x00\x15\xad\x6e\x7a\x20\x4d\xb4\x99\x58\xb4\x4a\xa5\x11\xa4\xa3\x6a\x47\x83\x93\x4c\x7a\x4e\x6a\x21\x2c\x94\xfd\xe6\xb8\x3f\xea\xf6\xda\x92\xd5\x6b\x5a\x6c\x5e\x6e\xe8\xf5\x61\x7e\xa8\xcb\x81\xad\xa5\x85\x65\xbd\xa8\x89\x65\x5d\xc9\x4d\xa5\x40\xef\xac\x6b\x2b\x68\xec\xed\xae\x75\xc5\x62\x5b\xad\x8b\x0e\xcf\xa9\xff\x1d\x16\x2b\x61\x85\xb8\x44\x74\x76\x26\x2a\x51\x2c\xba\x48\xe6\x92\xe2\x00\x97\x43\xc5\x71\x64\x4c\x3c\xc8\x20\x20\x0e\x07\xb2\xc2\x45\x41\x20\x92\x00\x05\xe8\x79\xc0\xa3\xa2\xcc\x9c\xbd\xc5\xde\xc2\xea\x45\xea\x71\x59\x22\x0c\x28\x1c\xb9\x1e\x50\x1c\x0a\x5d\xe8\x42\x8a\x3c\x57\x52\x08\x10\xb1\x2c\x48\xb2\x42\x91\xa8\x28\x8a\xcb\x65\x4a\xa1\x2c\x0a\x82\x84\x05\x05\x43\x41\xc0\xbb\x3c\x97\x9c\x59\x2c\xbc\xb3\xd8\xac\xd0\x1c\x94\x03\x5f\xef\x40\xa3\x6b\xe8\x5a\x2b\xef\xb5\xc9\x34\x48\x6b\x91\x2e\xc4\x72\xa9\xde\x9d\x64\x3b\xf9\xd2\x1c\x8d\x7d\x2e\xf5\xc4\xac\x6a\x4b\x73\xb5\x62\x1a\x91\x98\x6d\xd4\xd7\xa5\xb0\x55\x68\x2f\x91\x8d\x74\x2a\x2e\x1b\x4d\x33\x19\x4f\xd5\x7a\x29\xce\xbb\x87\xc0\xba\xb3\x58\x7a\x86\xf8\x7c\x69\xf8\x99\x21\xca\x0d\x66\xaa\x0c\xa7\x6c\xd4\xc8\x6c\xfd\x4e\x2e\x03\xc9\xa4\x1f\x56\x06\x95\x49\x20\xb6\xc2\x16\x8f\x33\x8b\x85\x48\x33\xa1\x1b\x15\x78\xcd\x2b\x38\x61\x52\x69\x84\x19\x20\xf6\xda\x0d\x95\x97\x42\x30\xed\xa3\x70\xee\x0f\x6d\x4d\xc8\xb6\x0c\xb5\xb9\x6f\xaa\x77\xc5\x62\xbb\xce\x45\x87\xeb\xea\xff\x05\x16\xfb\x44\x5d\xe2\xca\x16\x8e\xb7\x16\x24\x8e\xdb\x38\x6e\x51\x4e\x82\xfb\xc9\xff\x57\xbd\x55\xdf\x59\xee\x07\xea\x76\x3b\x2e\xad\x46\xee\xc0\xe5\xfd\xd5\xb6\xbb\xc2\xc6\xb7\x14\xb8\xbf\xbe\xa5\x80\x70\xf6\xf9\x1f\xf7\x37\x8e\x9f\xe1\xab\x55\xae\x1b\x82\x84\x7e\x2e\x90\xe4\x13\x18\xe2\x21\x1d\xfb\x03\x8a\x9f\x8d\x01\xf8\xb9\x30\x10\xcf\x0c\xe2\xee\xbf\x63\x69\xf1\x59\x00\xde\x5f\xe8\xc4\xb7\x12\xfd\xbe\x74\x7c\xf8\xf7\x19\x4d\x9e\x88\x20\x8f\x77\xcf\x7c\xa0\x4c\xfa\xe4\xce\x8f\x8f\xf1\xbc\xdc\xbc\xf1\x01\x6e\x4f\x6c\xbd\x78\x6b\xd0\x3c\xdb\x7e\x71\xb6\x6e\xd2\xd6\x25\xab\x67\x17\xf2\xad\x3a\xd1\xcb\x0d\x09\xe7\x34\x33\x5f\x13\x0b\x39\xab\x6c\xd9\x9a\x24\x8a\x45\xdc\x2d\x4b\xed\x52\xab\x61\xf4\xda\x52\x4f\x2b\x9a\xc5\xb2\xa5\xa2\x43\xe0\x3c\xd4\x4b\x0b\xb3\xda\x62\xad\xae\x69\x5d\xae\xb7\x96\x72\x21\x3f\xeb\x2a\x55\x73\x13\xd8\xb9\xcc\xb2\x29\x2f\x22\xa5\x25\x8c\x47\x79\x0f\x67\xdd\x19\x38\x8d\x0f\xfb\xc2\x51\x76\xff\x72\x37\xb6\xe9\x7e\x71\xdb\xcf\x66\x37\x58\x2b\xf7\x2b\xcd\x82\xda\x09\xda\x69\xab\x54\x63\x2a\xcc\x2a\xed\xbe\x5e\x6e\x97\xd8\x14\xaf\x32\xde\x68\x68\x6c\xf6\xa3\xa8\xd6\x97\xad\x63\xbd\x72\x70\xff\x8f\x76\x62\xba\x7f\xbf\xcb\xfb\x02\xfd\xd4\xa8\x56\xa9\xb4\x10\xad\x60\xd0\xcc\xad\x66\xa8\x15\xf6\x36\xba\xee\x6d\x96\xc9\x20\x92\xfb\xe3\x7e\xd4\x44\x5b\x21\x69\x4d\x27\xe9\xb9\x9d\x31\xf6\xec\xb4\x56\x76\xa5\x57\x3d\x6c\x98\x99\xfe\x92\xa3\xbe\xc1\x8a\xb9\x7c\xab\xdb\x5d\xf4\x6a\xc0\x4a\x48\x53\xb7\x51\x67\x54\xcd\xce\x46\xf9\xf2\xaa\x96\xc9\xfb\x73\x5a\x61\x73\xab\x6a\x56\x17\x15\xde\xe6\x86\xb5\x9e\xf5\x3d\xdf\x76\xe6\x0a\x0e\x2b\x6d\x66\x4c\x8d\xe6\xd0\xcb\xae\xfe\xfe\xfb\x32\x9f\xbb\x71\xd7\xa0\x0f\x75\x4d\xf5\x61\xd7\xe4\xb2\x9d\x89\xb6\x2e\x66\x0b\x51\x6f\x9e\x66\xb9\xdc\xd0\x5a\x0d\xfb\x6b\x7f\x61\xc0\x56\x47\xa9\xb9\x70\x40\xa1\x6f\x0b\x5b\x92\x30\x5b\xb4\xef\xbb\x66\x72\x91\x0f\xbc\x19\xfa\x76\x6d\xb1\x18\x64\x86\x0d\x92\xe4\x73\xc3\x4d\x90\xa1\x99\x6e\xd9\x2a\x1b\x96\xac\x14\x67\x6c\xb3\x51\x4a\x34\x5f\x4f\xb7\x5b\x15\x63\xdb\x4a\x4b\x76\xa9\xa5\x75\x3a\x5d\x6b\x6d\x6d\x96\x25\x34\x84\xca\x34\x44\x3d\x23\x5f\xab\x20\x7b\x12\xe4\x46\x9b\xda\x9c\xa1\xb2\x54\xcf\xd9\x9f\x0e\x3d\xfe\x10\xf4\xf6\x05\xf4\xb9\x8a\x5c\xcc\x16\xfb\x20\x6c\x69\xf3\xac\xa1\x9b\x15\x47\x22\x5b\x17\x74\xd4\x3c\xaf\x6e\x48\xc3\x5e\x36\xe4\x92\x6b\x49\xf5\xc1\x26\x3a\x79\xc5\xf4\xa3\xd0\x67\x87\x6c\x26\x8e\xc8\xa8\x32\x95\xc4\x5e\xbc\x74\x90\x18\x6d\xc9\xb4\x9d\x94\x84\xf1\x44\x1c\x24\x8b\x95\x6f\xf5\xa0\xa6\x34\xea\x61\xd5\x4f\x2b\xdb\xee\x3a\x5c\x2e\x89\xd9\x69\x73\xc1\xe8\x8d\x96\xb3\x34\x60\xd8\x5c\x2f\xe6\xcd\xb4\x07\xf5\xb1\xb2\x26\xc5\x5a\xb6\xa3\x7d\xbe\xd5\x8b\x1f\x82\xbe\x75\x09\x3d\x18\xc8\x16\xd5\x97\xf5\x95\xa9\x59\x2d\x5f\xd1\x63\xb3\xd3\x9f\x6f\x85\x34\x58\x44\x63\x52\x23\xb0\x58\xd8\x14\xc6\x63\x62\xae\xac\x93\xd5\x07\x1f\x85\x3e\x6c\x82\xce\x74\x5c\x90\x4b\xc3\xec\xc8\x5a\x7b\xa2\x0f\x7b\x78\x6e\x8b\xa2\x6b\xc4\xb2\x2f\x6d\x7b\x33\xea\xe5\xe6\xee\xd4\x18\xe8\x1d\xb8\xf2\xb8\x22\x2a\x1b\xd4\x0b\x50\x26\x99\x31\x00\x1b\xc5\x61\x83\x6b\xe1\x5a\x6e\x77\xfa\xab\x45\x7a\xae\x92\x68\xec\x9a\x65\x75\xf0\xe9\xd0\x93\x0f\x41\xdf\xbb\x80\x5e\x1b\x8d\x0d\x2d\xb7\x08\xd5\x58\xf0\x97\xe3\x52\xa9\xa8\x4f\x87\x76\xbf\x93\x71\x73\x4e\x3d\x9a\x2a\xa5\x2a\x84\x8d\x9e\xa6\x4f\x57\x6d\xa8\xde\x43\x7f\x59\xa5\x7a\x33\xf4\x33\x5f\xed\x25\x46\x65\x50\x68\xda\x1b\x53\x92\xb7\x9a\x35\x92\x45\x64\x2c\xcb\xdb\x1e\x88\x9b\xed\x65\x6d\x9c\x96\xc6\x05\xd3\x9a\x59\x6e\x56\x35\x92\xc2\x32\x74\x96\xeb\x8e\x33\x6d\x53\x9c\x9e\xf8\x91\xa0\x16\x22\xcd\x84\xa0\x97\x2e\x64\x31\x80\xac\x29\x99\x61\x4b\x3d\x5a\xfd\xd3\x03\xfb\xb5\x0d\x85\xef\x18\xd8\xef\x36\x15\x9e\x8a\x57\x0e\x13\x91\x44\x64\xc6\x91\x88\x1d\xe4\x40\xc5\x75\x31\x05\xb2\x23\x63\x00\x3c\x87\x7a\x8c\x08\xd4\x73\x08\xc1\x84\x30\xec\x49\x8e\x87\x99\x88\x15\x2a\x7a\x94\x62\xe4\xc1\xf3\x4e\xdd\xdb\xf7\x61\x18\xa5\xe3\xb4\xa4\xe7\xf2\xb3\xe2\x3a\xdf\xc8\xac\x7a\x9d\x89\x27\xac\x50\xd9\x55\x6b\x69\xa5\xb6\x21\x4b\xd0\x6c\x34\xaa\xed\xcc\xa0\x04\x83\x43\x0d\xe6\x39\xe5\xaf\x6c\x20\xfc\x48\x92\x74\x7d\xf3\xde\x9b\xb1\x3c\x6d\xe0\xbb\xc7\xf2\xee\x81\x16\x87\x93\x76\xa9\x47\xd7\xbe\xe4\xf1\xc8\xc3\xae\x30\xf2\xc2\xc8\xe1\xb1\x33\x0b\x83\x80\xaf\x93\x09\x5d\x04\xce\xf0\x92\xd1\xfe\x7c\xd9\x6b\x98\x4d\x68\x9c\x1c\x9e\xd1\x71\xdc\x63\x7c\x45\xaa\x0f\x17\x84\x5e\x21\xc7\x31\x8e\xd0\xc8\x19\xfa\xcb\xe3\xcd\x4b\x39\xfe\x67\xbf\x4d\xe9\x97\xe3\xd3\x3e\x7e\xf9\x33\x05\x0e\x1b\x97\x7e\x89\x79\xb4\xe4\xd1\x2f\x7f\xa6\x7e\x59\x0a\x7f\x90\x3f\xd0\xef\x84\xfc\x3e\x70\x09\x11\x25\xd1\xf1\x7e\x39\x12\x39\x8b\x28\xe2\x41\x52\xd9\xab\xf9\xcb\x9f\x29\xf2\xf0\x73\x6d\x7f\x4a\x26\xfe\xe5\xcf\xd4\xff\xfb\xe5\xae\xd1\xff\xf9\x72\x2e\xc2\x9e\x72\xd7\x88\x40\x88\x20\x31\x2e\x61\x24\x13\xe8\x88\xd8\xe1\x32\x56\x38\x91\x45\x19\x13\x99\x2a\xc4\x13\x80\x24\x8b\x48\x71\x65\xc1\x55\x44\x8a\xb1\x42\x44\x99\x49\xa2\xe2\x8a\xc4\x01\xd0\x39\x4a\x74\xcf\x77\xd7\x8d\xbf\xfc\x79\xd1\xda\x41\xb1\x1d\x0e\xbf\xfc\x99\x12\x1e\xdc\xfa\xdf\x8b\xef\xc7\x01\x9d\xed\xe4\x42\x9c\x4b\xc0\x05\x32\x22\xa2\xab\x08\x58\x90\x01\xf1\x14\x05\x50\x19\x71\x0f\x70\x0c\x45\xac\x00\x2e\x32\x57\x92\x1c\xc6\x45\x91\x39\x22\x62\x14\xca\x80\x42\x0c\xa1\xe3\xc1\x5f\xbe\x5c\x69\xe1\x09\x0c\x3c\x88\x14\x0f\x53\xea\x09\x82\x27\x50\xa4\xc8\x4c\x96\x64\xee\x42\x81\x4b\xa2\x22\x01\x11\x49\x90\x01\x0a\x1c\x2e\x4b\x0c\x41\x11\x48\x90\x00\xc9\x65\x08\xcb\x8a\x00\x90\x04\xde\x8e\x01\xf8\xf6\xf8\x5e\xb8\x48\x66\x8b\xe4\xb6\xba\x3f\x87\xf0\x47\xf7\x99\xbc\x05\xe1\x0f\xb7\xf5\x49\x56\xf6\x2f\x06\xff\x62\xf0\x2f\x06\xff\x62\xf0\x2f\x06\xff\x62\xf0\x2f\x06\xff\x62\xf0\x89\x18\xec\x5f\xfd\x7f\x5f\xfe\xf7\xb5\x13\x99\xd8\x99\xed\xcf\xa2\x5f\xbb\xbe\xde\xcd\x43\x0f\x25\xae\x79\x53\x8a\xed\x6a\x67\xec\xe9\xed\x4a\x46\x1b\xd2\x76\xa6\x99\x73\x66\x82\x9a\x91\x84\x4c\x65\x9e\x69\x9b\x25\x63\xdd\x4d\xab\x01\x75\x4f\x8b\xa6\x85\xfd\xbf\x9b\x0d\x30\xa1\x9f\x36\x5b\x2b\xb9\xec\x82\x72\xa1\x3a\xd4\x8a\x72\x24\xf5\xca\x99\x42\xbf\x40\x05\x45\x56\x2a\xed\xd2\xcc\x9b\x8f\x6b\x9b\x5b\x17\x23\xf6\x75\xd5\x82\x65\x0f\x74\x8b\x0c\xb2\xdb\x46\x39\x6d\x8f\xc7\x4e\x83\xe6\xb5\x09\x53\x04\x73\x5d\x58\x30\x61\xbc\x65\xfd\xd2\x40\x6f\x30\xad\xbb\xaf\x88\xa8\xf9\x60\x85\x0b\x17\xfb\xc5\x74\x6d\xd4\xac\x39\x71\x60\x80\xf9\xca\xf2\xdb\x71\xa4\xa6\xcd\xf6\xd8\x95\x74\x69\x3e\xeb\x94\xa6\x46\x41\x0c\x62\xc7\x6b\x15\x07\x6d\xe2\x14\x06\x4e\x7e\x92\x69\x51\x15\xcc\x6b\x5e\x2b\x5b\x09\xd8\xd0\x1e\x0a\x65\x7d\x2b\x6c\x55\xd3\x20\x3e\x31\x49\x57\x5f\x16\x9c\x8d\x60\xfd\x5b\xbc\xb9\x56\xbc\xd9\x03\x9e\xe8\x38\x3b\xc3\xc3\x7c\xe2\xe7\x37\x9a\xda\xd6\xba\x80\xcf\x66\x99\x01\x5d\x9b\x95\x5a\xb6\xd5\x16\xed\xc9\xb0\x41\x13\xd1\x08\x16\x7b\xfa\xc3\x8e\xd8\x68\x6e\x92\x0a\xb7\xe8\x60\xb4\xae\xd2\x56\x4d\x21\xda\xd6\x8b\x15\x2e\x38\x61\x64\xf6\xbb\x5b\xad\x53\x1a\xe7\xc3\xb2\x34\x5e\x8e\x57\xa7\x8d\xd7\x83\xfb\x62\xcb\x79\x87\x9f\x5e\xee\xf9\xe7\xdb\x2d\xe1\x48\x53\xe9\xe0\xbc\xc0\x87\x16\x51\x37\x4a\x56\xa8\xc5\x05\x7d\xb0\x74\x80\x04\x40\x4b\x91\x7b\x23\x3c\xad\x8c\xa7\x8a\x2d\x89\xe3\x2c\x5a\x9e\x31\x74\xb7\x9d\xe3\xfe\x18\xfb\x82\xff\x19\xfe\xd1\xa2\x91\x6e\xee\x6f\xe7\xba\xf5\x4c\xa7\x8d\xf4\xa8\x32\x4d\x43\x45\x0b\xc6\x74\x50\x5e\x6f\x23\xa4\x8f\x1a\x72\x7e\xab\xe2\x7a\x58\xee\x0a\x1d\xe8\x49\x74\xd2\x6a\x25\x89\xe6\x55\x4b\xf6\xc8\xac\xba\x73\x71\x13\x64\x24\xe6\x6e\x79\xab\x3d\x5f\x22\x7d\xb9\x01\x21\x17\x70\x51\x9c\x2e\x73\xad\x83\xbd\x95\xc9\x88\xfb\x68\x34\x0d\x0d\xb9\x59\x98\xe4\x32\x7c\xe0\x20\xa9\xd6\x4d\x8a\xe5\xf2\xb6\xd3\x96\x57\x6d\xbf\xaf\xd1\xec\x42\xac\x88\xfb\x25\x89\xb3\x6d\xc8\xb9\x6b\xfe\x75\xb8\xf6\xa4\x5a\xbb\x6d\x1e\x15\xcb\x82\x85\xe6\x16\xc3\xe6\x62\x50\x5d\xda\x49\x4e\xd2\x86\x46\x05\x99\x5c\x71\xdb\x35\xaf\x60\xa4\x4b\xbe\x58\x5a\xb6\xac\x74\x5f\x4d\xa4\x03\xbe\xf9\x76\xfb\xd0\x87\x6a\x39\x27\x17\x6a\xeb\xae\x87\xb2\xd5\x51\xbb\xbc\x44\xf3\xe1\x36\x26\x74\x01\x8b\xb4\x5a\x2c\x0a\xb1\xa8\x21\x58\x6f\xb7\x6c\x3f\x19\x96\x0e\x52\x20\xf3\xb8\xb1\x54\x53\xaf\x75\xe5\xfe\x2a\xdc\xeb\x63\x57\x86\xee\x92\xf4\xea\xdb\x41\x52\x9a\x49\x06\x2c\x9b\x9b\x96\x65\xea\xcd\x90\x4c\x89\x93\xa9\xbb\x51\x37\x9f\x04\x7a\x83\xd9\x28\x63\x55\xcd\x2e\x1f\x8f\x33\x88\x87\x42\xcf\x41\x82\x18\x97\xc5\xf4\x66\xd8\xac\x54\x37\x59\xdf\x36\x82\x20\x57\x4d\xba\x33\xb3\x5d\x52\x06\xbd\x8b\xf6\x6f\x5e\xb7\x7b\xe2\x3c\xea\x5b\x0b\x6d\x67\x67\x52\x6f\xb4\x3a\xff\x91\x25\xe9\xe3\xaa\xb6\x02\x21\x42\x12\x14\x10\x91\x45\x2c\x49\xa2\x2c\x48\x97\xeb\xd3\x97\x0b\xec\x9f\xa2\xc7\xbb\xf7\x16\x1c\xb7\x27\x5c\xd5\x03\xbf\x43\x91\xf7\xef\x16\xf8\x44\x45\x7e\x80\x1e\x9f\x62\x58\x57\x3a\xe4\x29\x9f\x7b\xea\x1c\xf0\x9b\xbd\xee\xfc\x2c\xf0\x69\xb1\x00\x49\x98\x2b\x0a\xc2\x0a\x53\xb8\x27\xb9\x8c\x2a\x54\x74\x19\x42\x48\x61\x92\xec\xb9\x54\xf6\x10\x96\x24\x89\x01\xea\x21\xc4\x28\x26\x32\x75\x45\x47\x70\x3d\x05\x13\x17\xbb\xa7\x6d\x54\xa7\x71\xac\x7a\x11\x97\x35\x3f\xa3\x09\x15\xa1\x54\xd8\x24\xc3\x95\x09\x26\x3d\x81\x6e\x66\x21\x50\xcc\xe2\x7a\x59\xc9\x6e\x2c\x31\xd1\x74\x27\xdb\x5e\xae\xf2\xca\x0a\x0d\x92\xc8\x0a\xfa\xd7\xc2\xe7\xe5\xf5\xe4\xc6\xb8\x7d\xdc\xcb\x7e\xa4\xfd\x5e\x26\xed\x5c\xf0\x7b\x65\xfb\x8f\xd7\xdb\xae\xe3\x0e\x08\xa6\xa2\x40\x30\x67\x94\x60\x0f\x3a\x2e\xa3\x2e\x93\x45\xc2\x3c\x84\xb1\x8c\x65\xd1\x73\x08\x24\x10\x4b\xd4\xa5\x88\xbb\x48\x71\x5c\xd7\x13\x3c\xa2\x08\x10\x20\xc4\xc8\x01\x77\xf8\x78\x9d\xe6\x83\x7a\xcb\xf8\xf4\x7d\xe3\x13\xf4\x86\x2e\x22\xa2\x83\x1c\xac\x78\x48\x22\xa2\x24\xb8\xde\x4e\x6b\x87\x12\x28\x0a\x48\x21\xc4\x13\x38\x24\x0a\x85\x9e\x08\x1c\x97\x11\xd9\xe1\x90\x73\xa0\x50\xc9\x93\x21\x16\xe9\x41\x6f\x74\x73\xbd\xa5\xb3\x8d\xc3\xd5\x4f\xd0\x5b\x10\x10\x57\x00\x10\x80\x0b\x14\x4a\x19\xc3\x50\xc1\x0a\x50\x44\x24\x0b\x44\x96\x89\x2b\x49\x92\x03\x89\x00\x11\x72\x08\x96\x64\x0f\x38\x0a\x94\xa9\xa4\x70\x07\x73\x28\xe1\xe3\xae\x1b\x7c\x73\xbd\xc5\xd5\x0b\x0a\x7e\x50\x6f\xe6\x62\x99\xb8\xcc\x75\x05\xe8\x62\x22\xc8\x40\x22\x12\x70\x30\x15\xa9\xc4\x15\x97\x70\x99\x88\x0e\x85\x8a\xc3\x30\xe0\x04\xba\x12\xa5\x9e\x24\x50\xe8\x71\x2e\x32\x44\x5c\x7e\xda\x81\xb8\x6f\xf6\x14\x5f\xce\xf4\xce\x2e\x42\x14\x26\x58\x9c\x67\x6b\xfa\x7a\x66\x67\x50\x58\x34\xd3\x5b\x20\xd5\x37\x7e\x0c\x26\x5e\x35\xdf\x9b\xda\x9d\xc1\x7d\x5e\xab\xaa\xd2\x34\x3e\x4e\x3b\xae\x1e\xc9\x79\x1e\x8e\x23\xee\xb9\x8f\xb5\x3f\x75\x4e\xed\x7f\x46\x7c\x11\x04\xca\x14\xc7\x73\x38\x64\xd8\xc1\x00\x03\x57\x66\x8c\x48\x44\x76\x5d\x41\xc1\xcc\x65\x0c\x38\x12\x16\x88\x04\x04\x97\x31\xc4\xa8\xc0\x3d\x45\x96\x25\xc1\x23\x88\x22\x8c\x0f\xb8\xc3\x67\x71\x57\xa5\x5e\x45\x56\xa5\xd1\x64\xa0\xd7\xb8\xe0\xb6\x5a\x52\xbb\xe8\xe4\xec\x35\xb1\x33\xab\x49\x71\xee\xa0\x56\x0e\x88\xb4\x84\x0c\x1f\xd8\x9f\x81\xfb\x7b\xda\xff\x6c\xdc\x1d\x89\x32\x24\x63\xe4\x09\x54\x70\xb0\xc7\x25\xc5\xe5\x0e\x17\x3c\x0f\x30\x19\x29\xc0\x93\xa8\xe2\x22\xec\x60\xc9\x61\xae\xc4\x91\x28\x20\xec\x49\x0c\xca\x1e\x11\x5c\xcf\xd9\x1f\x6a\x46\x57\xe3\xdb\x07\xed\x6d\x8c\x4f\x7a\x7f\x46\x5c\x17\xb9\xa7\x38\x02\x61\x8c\x40\xd1\x85\x2e\x85\x50\x06\x00\xc8\xcc\xf5\x00\x76\x65\x41\x96\x88\x8c\x44\xc4\x39\xf4\x1c\x2a\x61\x51\x72\x64\x2e\x0a\xc4\x63\x9c\x29\xc0\x73\x44\xf1\xa0\xf7\x95\xf8\xf6\xc1\xfe\xfe\x6c\xbd\x39\xf6\x38\x63\x84\x52\x26\x7a\x32\x72\x3d\xec\x00\x85\x61\x0f\x78\x84\xc9\x44\x96\x3c\x00\x64\x99\x00\xa2\x70\x45\x21\x1c\x10\x46\xa9\x24\x52\xea\x40\x57\xa6\x82\xe2\x10\xf9\xb4\xb9\xf6\x24\xe7\xa3\xf8\x36\xc8\x68\x23\xb9\x8d\x94\xd5\xc8\x00\x8d\x48\x21\xa1\x23\x59\xd3\x28\x19\xc2\x91\xb6\x56\x2a\x96\xed\x2a\xe3\x76\x5b\x37\xa2\x5e\xe3\x76\x7e\xa6\x7f\xac\xfd\xcf\xf6\x33\x28\x23\x89\x02\x86\x5c\xee\x41\x07\xba\xae\xe7\x3a\x2e\x17\x19\xc6\xcc\x13\x64\x57\xa2\x00\x50\x05\x41\xd9\x95\x77\x19\x06\x90\x3c\x0a\x19\x23\xc4\xc5\x8e\x8c\x20\x11\x1c\xe9\x80\xfb\xf3\xf1\xed\xad\xf5\x83\x9b\xe3\xfe\x8e\xf6\x3f\x1b\x77\x24\x12\xce\x1d\xe0\x09\x18\x41\xc6\x18\xa3\x82\xe2\xba\x8e\x03\x14\x24\x71\x28\x43\x11\x51\xec\x3a\x32\x57\x64\xcf\x93\x24\x57\xe4\x8a\xcb\x39\xc0\x02\xe3\xa2\xa0\x20\x2a\x09\xc7\x13\x69\x8f\x71\xbf\xb5\x9f\x67\xdf\x88\x7b\xfe\x63\xed\x8f\x5a\x17\xfa\xbc\xb2\xfd\xd7\xe7\xcd\x82\x0b\x09\x76\x15\x0e\x39\x42\x04\x3b\x50\xf1\xa8\x47\x28\xe1\x8e\x0c\x44\x2a\x53\x99\x13\x8a\x09\x87\x48\x50\x88\x4b\x01\x06\xc0\x83\xca\xee\x9d\x2b\xc9\x12\x80\x07\xdc\xaf\xcc\x17\x3e\xa8\xf7\x70\x75\xd2\xdb\xfe\x04\xbd\x31\x15\xa8\x03\x08\x57\xb0\x2c\x01\x01\x28\x0a\x11\x15\x26\x70\x19\x20\xc0\xb8\x40\x5c\x4f\x54\x30\xe6\xa2\x24\x0b\xc4\x11\x5c\x26\x41\x28\x8b\x0a\xc7\x5c\xa6\xd4\x05\x7c\x9f\xc7\x88\x57\xc7\xd3\x0f\xea\x3d\xa8\x9e\xf4\x6e\x7d\x82\xde\x02\xf3\xa0\x20\x00\x0c\xa8\x24\x79\x9c\x51\xaa\x28\x10\x7b\x18\x22\xee\x8a\xb2\x84\x15\x85\x41\xc9\xe1\x8a\x80\x1d\x05\x2a\x44\xa2\x02\xa6\x00\x7a\x50\x66\x88\x8a\x8c\x8b\xf2\xf1\x1c\xdd\xb3\x7e\x76\x93\x3c\xe2\xad\x7e\x56\xf8\x58\xfb\x9f\xed\x67\x0a\x03\x90\x38\x10\x62\x97\x03\x24\x4b\x0a\x94\xa8\x84\x5c\x48\x80\xcc\x31\x44\x18\x40\x99\x0a\x54\x00\x12\xc4\x2e\x72\x31\x44\xb2\xec\x08\x5c\x76\x24\xae\x48\xd4\x15\x04\xf1\x80\xfb\x15\x3f\xfb\xa0\xde\x1f\xf3\xb3\x27\x6b\x4b\xb7\x29\x2c\x7d\x76\x55\xa9\x50\x91\x8b\xf6\xd2\x1e\xb3\x32\x2c\xaa\xa8\xd3\x1e\xd5\xa3\xf2\x74\xd4\x15\x04\xaf\x20\xc7\x15\x43\x9a\x0a\x7a\x7d\x55\xea\x64\xd4\x2e\x52\xef\x57\x0b\xf6\x97\x76\x01\xc7\xe5\xfb\x37\xae\xd6\xa8\xaa\x25\x46\xe5\x73\x7e\x87\xd9\xf4\xae\x93\xb3\xb9\xed\x7c\x39\xb6\x35\x3b\x34\xd5\x92\xef\xd5\xea\xdd\x5c\x58\x19\x2e\x93\x8d\xd3\x44\x93\x7c\x2d\x6b\x8b\x60\x30\x76\xe3\x7c\x91\x6a\x66\x67\x25\x88\x8d\x4c\x7b\xd8\x11\xba\x83\x71\x24\x64\xb5\x9a\x8e\x4d\x9a\x6f\xc3\xf2\xd4\x89\x51\x7f\x55\x99\xfa\x0c\x37\xeb\x51\xb5\xf2\xf5\x5b\xea\xab\x81\x9a\xb3\xb1\x30\x15\x25\x04\xc9\x74\x02\xb7\x55\x31\xc1\x19\x3a\xda\xd6\x11\x5f\x47\x5b\x8b\xd4\xc3\xa8\xbd\x32\xd3\x2d\xd6\x12\xee\x05\x7b\x06\x83\x93\x65\x3c\x78\xec\xd1\x65\x35\xe1\x2c\x5b\x7e\xe3\x6a\x8d\x9a\x5b\xd0\xc3\x51\x9d\x2b\x56\xfa\xa2\x5c\x77\x96\x7c\xd6\xfe\x1b\xfa\x3f\xc7\xb3\x30\x86\xcb\x92\x59\x7c\xb1\xa1\xab\x1f\x3f\x8e\x12\x9f\x5d\xba\x7b\xbf\x71\x5f\x82\xfb\x48\x21\x0b\x66\x33\xaa\x85\xc5\x9e\x96\x43\x49\xb1\x9d\xb7\x40\x1d\xa9\x42\x95\x8f\x6b\x72\xa9\x4e\x02\x13\xa8\x0a\xef\xf8\xee\xc6\x48\x0e\x51\xf5\x69\xe3\x56\x1b\x7a\xdf\xef\x33\x9e\x5f\x65\xe3\xa8\xac\x05\x65\x63\x11\x67\x04\xb1\x9d\x94\x72\x5a\x34\x08\xe3\xc5\xb0\x62\x67\x5a\xa4\xdb\x1a\xe1\x64\xd5\xd9\x0c\x63\xa9\x95\x34\x70\xb6\xca\xd7\x56\x95\x94\xe6\x8e\x37\x2f\x95\x81\xd0\x99\x68\xe3\xf1\x2a\xc0\x03\xb9\x66\x78\x23\x63\x5f\xec\xcf\x8f\x67\x76\xdf\x5a\x4c\x9b\x9b\x2d\x8b\xd8\xb0\xb3\xdc\xd6\x8d\x46\x3e\x53\x28\xf9\x75\x02\x47\x52\x33\x30\xd1\x4a\x99\xa9\xc3\xaa\xd4\xbb\x17\xec\xa6\xc6\x9d\x4b\x06\xcb\x55\x6e\x61\x75\x54\x5b\x91\xea\xa0\xde\x4c\x5a\xee\xca\xcc\x15\x67\xb9\x4c\xb6\xc5\x67\x5b\xd7\xae\x75\x27\x61\xe0\xf8\x95\xf6\x81\xfe\x07\x1b\xf7\x56\x5d\xd0\xe0\xc5\x86\xde\x6b\xdc\x37\xae\xcf\xbe\xdf\xb8\x9f\x59\xe7\x3d\x5c\x09\x1b\x74\xeb\x44\x97\xc2\x5c\x45\xa8\xd8\xe9\x55\xaf\x91\x55\xb6\xdd\x65\xb7\xdd\x44\x6b\xbf\xe6\xf7\x16\x0d\x06\x72\xcb\xa9\x5d\xe1\xf2\x9e\xfe\x69\xe3\xd6\x32\x25\x6d\xb0\x34\xaa\x12\x18\x54\x34\x63\x28\x34\x2d\x53\x61\xe9\x49\x5a\x9d\xf5\xb7\x20\x5b\xce\xd9\x7e\x2b\xdf\x68\x0b\xb1\x53\x1f\x2c\x34\x40\x83\x4d\x75\x55\xad\x93\x58\x6c\xf8\x34\xbb\x4a\x72\xc1\x3a\xae\x05\x14\xc0\xba\xdb\xb2\xcb\x93\x22\xa4\xbc\xaa\x6e\xe4\xe2\xce\x00\x2b\xcd\xbe\x53\xd3\x83\xad\x3b\x71\xcc\x74\x9e\xca\x33\xbf\x95\x9b\x4c\x65\xab\x34\x0b\x97\x2d\x07\xc2\x91\x55\x59\x14\xa8\x87\x4b\xf9\xd3\x36\x88\x9b\x1a\xf7\x5b\xf7\x09\xfc\x68\xe3\x5e\x36\x9a\xe1\xe7\x45\xee\x1b\x17\xe1\xdf\x6f\xdc\x97\x33\xf3\x47\x0a\x85\xb5\x55\x2f\x93\x77\x33\x8e\xb1\x31\x5b\xf3\x0c\x9f\x17\xad\xed\x6c\x2e\xf5\xdc\x70\xe5\x78\x8d\xed\xb8\xe8\xf5\xf3\xed\x7a\xb6\x0c\xf5\xc3\xfe\x91\xa7\x8d\x3b\x67\x58\x0b\x77\xbb\x18\x79\x61\xda\x6d\x18\xa5\x6e\x97\x09\xa4\x31\xaa\x68\x95\x4a\x37\xce\xaf\x83\x76\x50\x07\xc5\x12\x1f\x79\x73\x68\x0e\xf2\xad\xa4\xb2\xe8\xc2\x72\xd4\x36\x1b\xfd\x4d\x5d\x2b\xa4\x3b\x4b\xcf\x0d\xbb\xab\x6c\xcd\x99\xc9\xe2\x30\x57\x67\xd9\xe9\x88\xd5\x7a\xd5\xbd\x01\xe6\x48\x5d\xd7\x84\xfe\x3c\x4a\xb2\x93\x52\xa1\x6d\xa9\xd4\x60\x5d\x57\x2e\x0d\x8c\xed\x7a\xcc\x6b\xc5\x52\xb9\xcc\xf9\xda\x2a\x09\xa7\x05\x95\xdb\xa6\x25\x6f\xdc\xa4\xf1\xa3\x8d\x3b\x1a\x61\xf0\x79\x91\xfb\xc6\x2b\x2d\xef\xdf\xa1\xf3\x4c\xce\x7d\xd8\xa1\xf2\xae\x1d\x3a\x28\x73\x7f\x9d\xf5\xc0\x69\x47\x8d\xa6\x8c\xa7\xe5\x0e\x9c\xa3\xa5\x64\x7b\x1b\xb9\x56\xe5\x63\x9d\x81\x66\xd3\x10\xfd\xf5\x7c\x6c\x08\x5a\x38\xe8\x46\x56\x22\x0d\x2c\x40\xa0\xcd\xc6\x43\xe8\x36\x9a\x2d\x8f\xe7\xc2\xa5\x23\xd4\x54\xea\x0d\x73\xdd\x75\x32\x6c\xab\x93\xb8\xb2\x18\x4d\xb4\xe9\x66\xa4\xa9\xbd\xbd\x31\x2e\x5b\xc3\x64\xe9\xaa\x49\x7d\x30\xe8\xf6\xd7\xeb\x72\x27\x20\x2e\x0b\xfb\x4e\x38\xdb\x08\xc5\x69\xa5\x3b\x5f\x3a\xe5\x4a\x5a\x64\x66\x72\x5a\x3c\xbd\x6e\xe8\xbd\x33\x58\x5e\x32\xf4\xb3\x55\xf4\xb7\xe6\xdf\xed\x76\xb3\x7e\xe4\xf2\xd6\x51\x72\x7f\x15\x2f\xb0\xbe\x9c\x59\xda\xea\xc3\x55\xd2\xf7\xcc\x0f\x0e\x4f\xc4\x39\x3b\xb1\xff\xa8\x5a\xf9\xfe\x28\x7f\xd3\xa5\xaf\x37\xe6\x87\x3f\xc6\x11\xf4\xfb\xf6\xed\x4a\x9b\x19\x46\x1a\x54\xb8\xbf\x5d\x0f\x02\x27\x67\x60\x52\x2e\x6e\xb4\x44\x10\xd3\x45\x05\x06\x20\x5d\x47\x50\x2e\x29\x5b\x73\x02\xbd\x41\xa9\x03\x03\x2f\x40\x79\x23\xac\xb4\x63\x38\x6f\x83\x74\xb6\x35\x8b\x00\x04\x14\x6a\x92\x5a\x25\xc5\x72\x84\x03\xad\xa2\x1a\x07\x63\x2d\x2f\x9c\x8c\x55\x16\xd6\x9a\xed\xfa\x52\x1f\x8e\xdc\x6c\x6b\xc9\x62\xc7\x55\xfb\xeb\x1c\x8b\xa5\xd0\x4a\xf7\x86\x2b\x65\x14\x0a\x27\x8b\xb9\xa9\x23\xbc\x35\x57\xff\xa7\x1d\xe1\x3d\x73\x89\xcf\x73\x84\x1b\xaf\x45\xbe\x7f\x44\x78\x66\xa2\x7a\x70\x84\x7a\xbb\xdd\x38\xbc\x7f\xc3\x5a\x53\xf7\x85\x11\xc1\xca\x04\x6c\x12\xca\x65\x75\xdc\xb0\x3c\xd9\xb1\x2d\xcb\x57\x73\xdd\xcd\x60\x9d\x36\x84\xbe\xdb\x09\xab\xb8\x3d\xc0\x7a\xb9\xa6\xaa\xa5\x6e\x3e\x48\x9c\x64\x94\x35\x36\x36\x76\xe2\x76\x6b\xb3\xa2\x1d\x04\x4b\x99\x31\xb7\x3b\x3d\xb6\x11\xa1\x36\xf2\xcd\x61\x33\x43\xec\x70\x6f\xac\x6b\x12\x63\x3b\x93\x1d\xac\x6b\xa2\x88\x62\x5c\x93\xd9\x40\x2c\xa2\xb9\x6b\x56\xeb\xf2\xb2\x8b\x81\x2a\x28\x52\xb9\xd6\x33\xcf\x04\xfb\xb1\x23\x42\xab\xdd\x6e\x1d\xd7\xa4\xde\x9a\x5a\xee\xaf\x1f\x32\x22\x3c\x5a\xaf\x7d\xaf\x23\xdc\x78\x71\xfa\xfd\x23\xc2\x3f\xe8\x08\x67\x23\x82\x55\x80\x85\xb2\xa5\xf8\x44\x70\xaa\xc0\x2e\xc3\x96\x09\x06\xdd\xa8\xa8\xf7\x46\xbc\x50\xa9\x77\xf3\x4d\x31\x0e\xb2\x73\x4b\xcc\x07\x35\xbd\x29\x3a\xed\x18\x09\xa6\x64\x34\x6b\x7d\x52\x2c\x12\xdb\xe9\x43\xc3\xcd\x02\x87\x90\x55\x65\xc0\x71\x61\x53\x97\x97\xb3\xd5\x4a\xd8\x1b\x6b\x77\x19\xa8\x54\xea\x4d\x84\x24\xf4\x07\xf5\x42\x05\xad\x9b\xbd\x6c\x91\xe6\x5a\x69\xbc\xdc\x04\xf5\xee\xc6\x6a\x15\xd2\xe9\x45\x3d\x93\x3f\xed\xaf\xfa\xa1\x23\xc2\x3f\xed\x08\x37\x19\x11\x6e\xe6\x08\x37\xde\xad\xf0\xc6\x09\xd8\xeb\x52\xa3\xc3\xf0\xf7\xc6\xd2\xe5\xfb\x1c\xe7\xb0\x3a\x33\xd7\xbc\x73\x80\xf5\x7b\x79\x6d\x7d\x30\xec\x68\x95\xdc\x68\x6a\x56\xb6\x4e\x2d\x4f\x42\xd9\x9d\xb7\x8a\xd5\xd8\x10\x3a\xc3\x24\xe9\xe8\x19\x55\x6b\x94\x69\xd1\x74\xd2\x42\x7e\x1e\xe7\xd3\x0b\x5f\x4c\xf3\xf1\x06\xeb\xf5\xcd\x42\x51\x7a\x75\xa2\xe9\xc5\x3c\x36\x27\x83\x4d\x25\x68\xcc\xd1\xd6\xc9\x45\xca\x71\x04\x11\x6b\x44\xa2\xf3\xc4\x1b\x28\x4a\xb5\xc0\x9a\x6b\x25\x1a\x86\xde\xba\x60\xf4\x3a\xc1\x6c\xb2\xc8\x47\xf3\xa0\x33\x5f\x25\xfe\x20\x38\x3b\x05\x74\xdd\x71\xce\xd3\x85\x67\x1c\x67\xa5\xfe\x1f\xe0\x38\xf6\x8f\x90\x4f\x2b\x0f\xba\x9b\xe7\xe4\x7b\x4d\xd9\xf4\xb6\xdb\x51\xde\x58\xb6\x7b\x8b\x63\xbd\x71\xc1\xeb\x03\xc7\x69\x2e\x1d\xab\x78\x2f\xaf\x5d\x08\xed\x9a\x9f\x13\x8a\xba\xe6\x0b\x2d\xd9\x29\x9a\x24\x98\xf4\x51\x38\xd6\x3d\x77\x9a\x48\xd3\xf9\xd8\x2e\x1a\x09\x4c\x16\xf5\x0a\xed\xf7\x81\x5f\xb5\x57\x2d\x8c\xaa\xf2\x32\x1d\x24\x25\x3b\x56\xb1\x03\xb9\xd6\x4d\x94\x42\x6f\x96\x81\x4a\xbe\x32\x0a\x18\x05\xf6\x6a\x6f\xfc\xe5\x1c\x1f\xc6\x8a\xb4\x59\x25\x48\xd9\xf2\x8e\xd0\xc8\x64\x4d\x3e\x2c\xcc\xaa\x21\x2c\xe6\xbc\x7c\x26\x8c\x92\x29\xa8\x0e\x36\xbd\xaa\xf3\x39\x8e\xf5\x53\x4e\xd6\xed\x1f\x21\xdf\x2d\x1c\xeb\xc6\xfb\x8d\xde\x9f\xba\xbd\x78\xee\xec\xfd\x23\xd0\x07\xce\xf5\x9d\x4a\x9a\xcf\x9c\x3b\x3b\x4b\x05\x75\xa2\x8e\x37\xb9\x74\x17\xd5\x42\x87\xe4\x47\x64\x42\x27\xbd\xe5\xb4\xd8\x72\x99\x89\xe4\xc5\x22\x20\xd9\xae\x58\x75\x32\x4e\x29\xc8\xdb\x74\x9e\xf4\x35\x2b\x54\x57\xb9\x20\x69\x4e\x40\x61\x9b\xf1\xa4\x88\xd7\x67\x5d\xa7\xd4\x6b\xb8\x76\x7a\xa6\x3b\xad\x20\x03\x6b\xaa\xbe\x77\x0e\xb3\x23\xc5\xc5\x95\xbd\x59\x48\x8b\x41\xe0\x6e\xb5\x31\xc2\x61\xa9\x39\x33\x37\xd6\xb4\xa6\x20\xc0\x03\x8e\x5b\xd9\x74\xab\x64\x9d\x95\x40\xaf\x3b\xde\xf5\xfd\xf7\x6f\x5d\xcc\x3c\xe1\xf1\x81\x73\x7d\x1f\x70\xce\x53\x49\x5e\x57\xaf\xa5\x6c\xcf\xa7\xb8\x67\x7b\x8a\xde\x3a\x12\x9e\xb5\xf9\x13\xdb\xa4\xfa\x09\x7b\xb0\x2e\x7d\xf4\x0d\x7b\x81\x3e\x7b\xc3\xdd\xfb\x03\xcf\x33\x6b\x45\x3f\x32\xf0\x74\xc6\xc4\xd6\xb2\xd6\xa8\x5b\xbc\x58\x7b\x3a\xef\xe4\x53\xe0\x29\x86\x1e\x47\x6c\xe0\x8e\x34\x97\x10\xac\x46\xf3\xa8\x5c\x19\xc1\x8c\x4f\x31\xab\x50\xb1\x37\x29\x64\xaa\x15\x69\x91\x6f\xd7\xcb\x9d\x26\x9b\x09\x93\x19\x2b\x67\xa9\xc0\xf2\x75\x51\xd5\x83\x6c\x31\x97\xc9\x6f\x4a\x83\xf2\x10\x35\x7d\xd3\x9a\x95\x51\x31\x5f\x1f\x77\x6c\x79\x1f\x78\x2a\xb6\x30\x6d\xf6\xf1\xa2\x0a\x9b\xd9\x80\x28\x73\x16\x0f\xda\xf3\xf2\x68\x3a\x2b\xe0\x51\xb6\x03\x87\x76\x5d\x9e\x19\xab\xa0\x3b\x5c\x9f\xb2\x91\x4f\x0f\x3c\x7b\xa3\xfc\x31\x81\xc7\xa4\xcd\x99\xaa\x1b\xc4\x74\x9c\xd3\x86\xe4\xb3\xeb\x73\x03\x8f\xf1\xb3\xdb\xa4\xfa\x09\x81\xe7\xf1\x4e\xeb\xf7\x07\x9e\x1b\xef\x78\x7d\x7f\xe0\xc9\x5f\x48\xff\x73\x04\x9e\x6c\x7a\x79\xb4\xd6\xbc\xfa\xe4\x22\xea\x59\xe0\x29\x64\x97\x95\xba\xb5\x2a\x26\x85\x02\x99\xc2\x5a\x49\x30\x8c\x2d\xca\xd7\x8b\x85\xd6\x5a\xe9\x6c\x06\x73\xb3\x5b\x34\xed\x9a\x29\xf4\x66\xe3\x4c\xd8\x34\x27\x49\x49\x5d\xd4\x02\x11\xe6\xfb\x69\x4b\xf2\x8c\xe9\xd2\x29\x7a\x5e\xb5\xd2\xae\x66\xf3\x39\x33\xd7\x1c\xe4\x83\xc8\xb0\xab\xfb\xc0\xd3\x18\x44\x1a\x9b\x35\x8a\xba\x36\xed\x74\x58\x2e\xd4\xd7\xcb\x01\xf3\x3a\xad\xe6\x84\xab\x4c\x85\xc8\x08\x3b\xbc\x19\xce\x93\xe2\xf8\xa5\xe5\x90\x1b\x06\x9e\x8f\x3e\xc9\xe0\x03\x81\xa7\x42\xe4\x63\xa3\xd7\x9d\xe2\x73\x03\xcf\x4f\x6f\x93\xea\x27\x04\x9e\x4b\x1f\xfd\x48\xe0\xb9\xf1\x96\xf3\x7f\x1f\xf1\xf1\x19\x8f\xf8\xd8\x07\x9e\x6c\xc6\x50\xf3\xda\x0c\x65\xa2\xf9\x6c\x3c\x56\xb2\xb5\xa4\x53\x6c\xf4\xe3\x60\x3b\xd3\xaa\xe3\x59\x9f\x68\x65\x7d\x59\xae\x58\x93\xe5\xe4\xa5\xe2\x61\xf5\xd2\x70\xde\x6a\x94\x27\x7e\x1f\x28\x10\x16\x1d\x70\x7c\x68\xfc\x07\x9c\xf0\xd4\x3f\xd9\x7b\xa3\x7f\x1c\x70\x0e\x59\xc1\x4a\xfd\x69\x8b\x8d\xa7\xf7\xbd\x1f\x22\x5f\x2e\xe7\x9b\x2f\xca\xf7\xd1\x62\xf2\x3f\x52\xf3\xfa\x00\x7e\x1f\x90\x6f\x6f\xcb\x6f\xc5\xef\xa7\x5c\xce\xed\xfd\x10\xf9\x5e\x8f\xdf\xcf\x59\xd3\xbc\x09\x7e\x1f\x90\xef\xf5\xfe\xfb\x5f\x51\x62\x3a\x1c\xbb\x3a\xd0\xfe\x88\xb1\xed\x03\xb9\xca\x8b\x8f\x6b\x7b\x4d\x52\x77\xe3\xf3\x6c\xef\x4f\xea\x5e\x2c\x63\x7d\x00\xa8\xfd\x75\x4a\x22\xae\xd7\x5b\xf7\x17\xbd\x7f\xee\x9e\x0a\x04\x0f\x4c\xdc\x75\x79\x23\x2e\x93\xa5\xdd\x17\x0b\x61\x36\x76\x88\xb2\x36\x84\xa5\xe6\xac\x2c\x9d\x66\x27\x4a\x3e\x09\xd2\x70\xd6\xce\x57\x98\xdd\xdd\x66\x5b\xc6\xb6\x59\xa4\x0b\x67\x96\x49\x43\xe4\xa0\x49\x9e\x46\xca\xba\x22\x27\xb4\x98\x58\x5a\xba\x1f\xad\x40\x6e\x70\x48\x3a\xa6\xeb\x52\x6c\x8c\xd1\xd0\x2a\x8e\x83\xd9\x56\x98\x16\x2c\x7b\x64\x37\xfc\x41\xa8\x39\x63\x41\xb1\x47\x7e\x35\x17\xae\xd3\x13\x22\xa8\x2f\x6d\x8b\xb8\x3e\x33\x7c\xeb\xa9\xb5\x13\xd3\x4f\x7f\x86\xe0\x0b\x5b\x37\xce\x9e\x19\xf9\xd6\xa0\x78\x6a\xf4\x9f\xb1\x95\x53\x10\x57\xdf\x25\xef\x2e\x48\x1d\xce\x32\x64\x4f\x8d\x3c\xea\xcf\x27\xb7\x72\xdc\x9d\xd9\x3c\x1c\xd5\xa4\x8e\x13\x2e\x82\x64\xff\xa4\xd4\xb3\xd7\xdf\x67\x63\x7e\x7f\x7a\x33\x6b\x99\x8d\x66\x5d\x35\xcc\xe6\x0b\xa7\x37\xd5\x4a\x53\xaf\x1f\x0f\x7b\x5a\x66\xa5\x77\xce\x71\xff\xf8\x56\x35\x97\x3b\xe3\xf6\xa8\xc1\x54\xad\x6e\x54\xd5\x7a\x2f\x55\xd6\x7b\xa9\x5f\x8f\x77\x7d\xf7\x5b\x6a\x47\x11\xd0\x29\x7f\x4a\xfc\xf8\xfe\xc5\x6d\x05\x8f\x9f\x91\x3a\x7e\x4e\xe4\x47\x82\x32\x1a\xec\xfe\xbf\x91\x78\x8c\x06\xd7\x24\xbb\x6b\xe0\xa1\x50\x41\xe8\xf2\x2b\x12\x3d\xfc\xc1\xd7\x07\xef\xbe\x1f\xde\xc5\x7c\xfe\xfd\x26\xe2\x3e\x60\x7e\x4d\xf0\x67\x5a\x4f\xb5\x4c\xc3\x6e\xe9\xa9\x5f\xef\x3f\x7d\x93\x26\xb7\xc1\xfb\x8d\x0a\x3c\xee\x83\xe3\x7d\x1a\x0f\x1f\x49\x7f\xfc\x39\xc5\xc3\x9f\x1b\xc9\x7b\x60\x76\x4d\xd0\xb3\x66\x1e\x4a\xb8\xbf\x71\xc5\x4c\xf6\x3f\x8c\x78\xf8\xf7\x46\xc2\xed\x79\x5d\x93\xed\xd4\xc8\x43\xd1\xfc\xd9\xb7\xd4\x2c\x8c\x92\xc7\xb2\x9d\xfd\xce\xe2\x83\x37\xb7\x92\xf4\x8c\xe5\x55\x81\x2f\x9b\xbc\xd6\xe9\xd7\xa4\x8e\x17\xec\xf8\xe7\x76\x92\xc6\x0b\xf6\x84\x8c\x77\xcd\x3c\x94\x2e\xe2\xf1\x95\xee\x3e\xfb\xe1\xa7\xd3\xcb\x1b\x09\x79\x62\x78\x4d\xd0\x8b\xe6\x1e\x0a\x3b\x8f\x79\x72\xd5\x7b\x8e\x3f\xf9\x74\xf7\xf7\x56\x92\x1e\xb8\x5d\x15\xf3\xac\xa1\x27\xc7\xab\x43\x2b\x63\xbe\x79\x2c\xef\xe9\x69\xe5\xa7\x97\xb7\x92\xfa\x9e\xe1\x55\xc1\x1f\x36\xf7\x50\xf6\xfd\xe7\x57\x47\xd8\xb3\x67\x9f\x9e\x5e\xde\x48\xe0\x13\xc3\x6b\x02\x5f\x34\xf7\x24\xd8\x7e\x1c\x2f\x78\xf4\x2d\x45\xe3\x98\x27\x4e\xe8\x5e\xd1\xe1\xfc\x91\x1c\xe7\x6f\x6e\xa5\xc7\x19\xcb\xab\x9a\x5c\x36\x79\x2d\x4e\xc4\x7c\xfe\x2d\x95\xac\xfd\xc0\xe5\xeb\x2b\x1a\x9c\xc4\xbf\xb5\xec\xcf\x0a\xfe\x21\xa9\x8f\x9d\xc4\xe8\x84\x06\xce\xe9\xe1\xce\x86\x99\xd3\xbb\x2f\xc8\x99\xad\xeb\x6a\x53\x3f\x90\x5e\xf2\x49\x59\xe6\x29\xf1\x6b\x35\x0c\xb3\x90\x62\x49\xc4\x79\xea\xd7\x23\xc5\x6f\xa9\x4e\x51\xaf\xeb\xf7\xef\x53\xff\xf9\xfb\xec\xe7\xae\x1f\xe7\x66\x8b\x8d\x1f\x0c\x0e\x66\xb4\x57\xe4\xdd\x82\x3e\xe2\xb4\x13\xf5\x38\xc0\x3f\x14\xf4\x8c\xf0\x91\x3c\x3b\xcc\xd9\x26\xe6\xf3\x77\xcb\x71\xcf\x61\xd7\xfe\xc9\x76\x1e\x88\xf0\x74\x3e\xb5\x23\xf7\x38\xff\xb8\x08\x77\x4c\x0e\x52\x9c\xf9\xe0\x2b\x05\x39\xde\xf9\x98\x20\xe7\x4c\x76\x82\x3c\xcc\x16\x5f\x29\xc9\x2c\xf2\x1d\xfe\x31\xdb\x38\xb1\x78\xca\x28\xf6\x14\xd7\x46\x64\x1e\x2c\x3f\x08\xc2\x39\x93\x5d\xf3\x67\x3f\xd6\xf9\x4a\x04\x4e\xc3\xf3\x87\x25\x39\xe7\x73\x14\xe6\x2e\xe7\x78\x28\x0c\x8d\x93\x67\x04\xe2\x93\xc9\x8d\xdc\xf6\x31\xab\xa7\xba\xe8\x01\xe5\x53\xc9\xc8\x31\x36\xbd\x5f\x9c\x07\x6c\xf6\x08\x1d\xb3\x9c\x07\xb2\x5c\x9b\x6c\xd6\xc2\x38\x19\x44\xbc\x61\x57\x52\x77\x3f\x31\x99\x72\x17\xd3\x59\xca\x09\xa7\xb3\x09\x4f\xf8\xbe\xb5\xff\x3f\x00\x00\xff\xff\x2e\xf8\x24\x6f\xbe\xb5\x00\x00") + +func tradesCoreSqlBytes() ([]byte, error) { + return bindataRead( + _tradesCoreSql, + "trades-core.sql", + ) +} + +func tradesCoreSql() (*asset, error) { + bytes, err := tradesCoreSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "trades-core.sql", size: 46526, mode: os.FileMode(420), modTime: time.Unix(1508958310, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _tradesHorizonSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x69\x73\xe2\xc8\xb2\x30\xfc\x7d\x7e\x85\xa2\xbf\x78\x26\xec\x1e\x57\x95\xf6\x9e\xb7\x6f\x84\x00\x61\x30\xab\xd8\xf1\x8d\x1b\x44\x49\x55\x02\xb1\x48\x58\x12\x60\x7c\xe2\xfe\xf7\x37\x40\x62\x93\x11\xbb\xbb\x7d\xce\x73\x89\x89\x69\xcb\x95\x95\x5b\x65\x65\x66\x65\x16\xf2\xf7\xef\x7f\x7c\xff\xce\x94\x1d\xcf\xef\xba\xb4\xaa\xe5\x19\x82\x7d\xac\x63\x8f\x32\x64\x32\x1a\xff\xf1\xfd\xfb\x1f\x8b\xf1\xd4\x64\x34\xa6\x84\x31\x5d\x67\xb4\x01\x98\x52\xd7\xb3\x1c\x9b\x91\xff\x16\xfe\xe6\xb7\xa0\xf4\x39\x33\xee\x76\x16\xd3\x23\x20\x7f\x54\xd5\x1a\xe3\xf9\xd8\xa7\x23\x6a\xfb\x1d\xdf\x1a\x51\x67\xe2\x33\x3f\x19\xf0\xcf\x72\x68\xe8\x18\x83\x8f\xbf\x35\x86\xd6\x02\x9a\xda\x86\x43\x2c\xbb\xcb\xfc\x64\xee\xea\xb5\xb4\x74\xf7\xcf\x0a\x9d\x4d\xb0\x4b\x3a\x86\x63\x9b\x8e\x3b\xb2\xec\x6e\xc7\xf3\x5d\xcb\xee\x7a\xcc\x4f\xc6\xb1\x43\x1c\x3d\x6a\x0c\x3a\xe6\xc4\x36\x7c\xcb\xb1\x3b\xba\x43\x2c\xba\x18\x37\xf1\xd0\xa3\x3b\x64\x46\x96\xdd\x19\x51\xcf\xc3\xdd\x25\xc0\x0c\xbb\xb6\x65\x77\xff\x09\x79\xa7\xd8\x35\x7a\x9d\x31\xf6\x7b\xcc\x4f\x66\x3c\xd1\x87\x96\xf1\xb0\x10\xd6\xc0\x3e\x1e\x3a\x0b\x30\x25\x5f\x53\x2b\x4c\x4d\x49\xe4\x55\x26\x9b\x66\xd4\x56\xb6\x5a\xab\x32\xa5\x62\xbe\x1d\xc2\xff\xdd\xb3\x3c\xdf\x71\xe7\x1d\xdf\xc5\x84\x7a\x4c\xaa\x52\x2a\x33\xc9\x52\xb1\x5a\xab\x28\xd9\x62\x6d\x6b\xd2\x2e\x60\xc7\x70\x26\xb6\x4f\xdd\x0e\xf6\x3c\xea\x77\x2c\xd2\x31\x07\x74\xfe\xcf\xaf\x20\x68\x2c\x7f\xfa\x15\x24\x17\x76\xf5\xeb\x04\x0c\xa8\x45\xa5\x5b\x4e\xcf\x16\x53\x6a\x6b\x6b\x66\x48\x69\x39\xb1\x43\x4d\x93\x1a\xbe\xd7\xd1\xe7\x1d\xc7\x25\xd4\xed\xe8\x8e\x33\x38\x3c\xd1\xb2\x09\x7d\xeb\x6c\xd1\xb7\x3d\xbc\xb4\x45\xaf\xe3\xd8\x1d\x8b\x9c\x33\xdb\x19\x53\x17\xaf\xe7\xfa\xf3\x31\xbd\x62\xf6\x86\x93\xab\xb8\x38\x6f\xee\x90\x92\x2e\x75\x97\x13\x3d\xfa\x3a\xa1\xb6\x71\x96\x08\x5b\xd3\xc7\x2e\x9d\x5a\xce\xc4\x0b\x7f\xd7\xe9\x61\xaf\x77\x21\xaa\xeb\x31\x58\xa3\xb1\xe3\x2e\x76\x4c\xe8\xf6\x2e\x45\x73\xa9\x2e\x8d\xa1\xe3\x51\xd2\xc1\xfe\x39\xf3\x57\xc6\x7c\x81\x29\x85\x5b\xe7\x02\xa6\xb7\x67\x62\x42\x5c\xea\x79\x87\xa7\xf7\x7c\x97\x2c\x43\x43\x67\xe8\x38\x83\xc9\xf8\x04\xe8\xf1\x31\x96\x02\x28\x6c\xb9\x67\x22\x5e\xf9\xc5\x93\x27\x2c\xfc\x84\x69\x52\xf7\x18\xe8\x78\x01\xd9\xf3\x8f\xf2\xed\xed\x6c\x5b\x7d\x7e\x54\xf9\xbd\xf5\xfe\x38\x05\xd8\x09\xf8\x70\x8e\x02\x5a\x9e\xdf\xf1\xdf\x3a\xe3\xe3\x28\x17\x90\xce\xf8\x54\x48\x7a\x2a\xd8\xca\x01\x1f\x06\xd6\x57\x9b\xe4\x28\xd8\xf1\xbd\xaf\xaf\x6d\xf7\x30\x5c\x10\xc3\x16\xda\xf6\xbc\xc9\x82\xf2\x59\x51\x6c\xbd\xb6\x63\xec\xfa\x96\x61\x8d\xb1\xed\x9f\x18\xd7\xf6\x4e\xed\x8c\xcf\x8c\xa4\x6b\xe7\x7e\x2e\x07\xfb\x27\x9e\x4d\x7f\xa9\xbe\x53\xe8\x05\x80\x9f\x8e\x3f\x58\x4e\xc3\x21\xab\xec\x64\xe1\x2a\x57\x89\xca\x72\x85\x3b\x27\x72\xd0\x75\xdc\x71\x67\x64\x75\xc3\xd8\x79\x80\x85\x08\xe4\x41\x19\x4f\x35\xa1\x60\x76\xb2\x94\xaf\x17\x8a\x8c\x45\x02\xea\x29\x35\xad\xd4\xf3\xb5\x13\x71\xc7\x98\xc6\x0d\x30\x87\x8b\x72\x18\xd3\xf2\xe9\x74\xf1\x57\x61\xa5\xaa\x6a\x75\xb5\x98\xbc\x40\x67\x8b\xc4\xd0\xa3\xaf\x67\x53\xde\x41\x72\xf2\x6c\x42\x4f\x84\xdd\xa4\x5f\x27\x4b\x18\xb3\x37\xcf\x91\x6f\x3f\x8a\xd3\xe6\x86\x89\xca\x69\xc0\x61\x56\x72\xb2\x6c\xe1\x3e\x3d\x47\x96\x60\xca\x89\xb0\x61\xbe\x72\x3a\x3f\xab\x04\xe7\x14\x8e\x22\x3b\x3d\x04\x56\x5b\x35\xb5\x58\xcd\x96\x8a\xdb\x13\x86\xe3\xae\xf7\x3a\x5c\xb1\x91\xcc\xa8\x05\xe5\x03\xbe\x7f\xfe\x08\x0e\xf5\x45\x3c\xa2\x3f\x56\xbf\x63\x6a\xf3\x31\xfd\x11\x4e\xf9\x87\xa9\x1a\x3d\x3a\xc2\x3f\x98\xef\xff\x30\xa5\x99\x4d\xdd\x1f\xcc\xf7\xe5\x59\x3f\x59\x51\x95\x9a\xba\xc2\xbc\xc2\xf7\xc7\x0e\xc6\xdd\xc1\x10\x71\xb2\x54\x28\xa8\xc5\xda\x01\xcc\x01\x00\x53\x2a\xee\x22\x60\xb2\x55\xe6\x6e\x75\x8a\x5f\xfd\xce\x5b\x22\xb9\x8b\x52\x5e\x89\x1f\xd2\x5c\x6b\xe8\xa8\x3c\x3b\xba\x2c\x96\x6a\x11\x7d\x32\xcd\x6c\x2d\xb3\x66\x6b\xfb\x38\xbf\x43\x7e\x83\x25\xc2\xc8\x39\xc2\x7f\x40\xb2\x54\x40\x39\xff\x38\xee\x56\xb5\x3c\x33\x76\x1d\x83\x92\x89\x8b\x87\xcc\x10\xdb\xdd\x09\xee\xd2\xa5\x1a\x4e\x2c\x3f\x2c\xc0\x08\x35\xf1\x64\xe8\x77\x7c\xac\x0f\xa9\x37\xc6\x06\x65\x7e\x32\x77\x77\x91\xd1\x99\xe5\xf7\x3a\x8e\x45\xb6\xca\x20\x3b\xc2\x46\x8d\x32\x14\x75\x69\xc2\x1b\x41\x57\x46\xb0\x4f\xe9\x81\xb5\x47\x03\xde\x9f\x7f\x30\x0c\xb3\xf0\xeb\x3e\x7d\xf3\x97\x6b\x51\xac\xe7\xf3\x0f\xcb\xdf\xe2\xf1\x78\x68\x2d\x4f\x30\xcc\x22\x25\xf7\x7c\x3c\x1a\x33\x0b\x46\x97\x8f\xcc\xbb\x63\xd3\x3f\xfe\x8a\xae\x4a\xdc\x96\x5b\x59\x7c\xb8\x57\x4f\xe3\x79\xbd\xb3\x63\xb0\x2e\xd9\xac\xd6\x94\x4a\x2d\xb0\x19\xb8\xfc\x45\xb6\x98\xac\xa8\xcb\x05\x4e\xb4\xc3\x5f\x15\x4b\x4c\x21\x5b\x6c\x28\xf9\xba\xba\x7e\x56\x5a\x9b\xe7\xa4\x92\xcc\xa8\x0c\x3c\x26\xcc\xc5\x6a\x8f\x22\xda\xe8\x5d\xb7\xba\x96\xed\xaf\x22\x2a\x63\xd3\x37\x7f\x8a\x87\x7f\xde\xc5\x48\x7c\xf7\xe3\x87\x4b\xbb\xc6\x10\x7b\xde\x5f\xd1\xe5\x0a\x4e\x6e\x8c\xd1\xc3\x2e\x36\x7c\xea\x32\x53\xec\xce\x2d\xbb\xfb\xa7\xc0\xfd\x75\x60\xa1\x02\xc7\x7b\xb5\x64\x41\xba\xb0\x96\xcb\xb2\x7d\xda\xa5\x6e\x94\xc7\x75\xba\xb6\x9f\xcd\xbd\xe0\x8b\x44\x6f\x0f\x38\x44\xfb\xc1\x83\x0c\x70\xcf\x04\x5e\xd8\x4c\x38\xa6\x8f\x1b\x9b\xed\x36\xce\x5f\x66\xb4\x87\x04\x61\x4a\xcd\xa2\x9a\x62\x12\xed\x23\x12\x05\xe9\xdf\x61\x81\xd6\xb8\x22\xc3\x7f\x2f\xce\x8d\xfb\x79\x5b\x25\x14\xd7\x5a\x5d\x88\x27\x34\xbb\xc8\x9e\xe9\x6c\xb6\xd7\xae\x9d\x7c\xcc\x9f\xe2\x20\xbf\x2d\x0f\xb4\xdf\x62\xac\x79\x69\xc7\xfb\x87\x08\xf5\xb1\x35\xf4\x98\xbe\xe7\xd8\x7a\xbc\xb1\xad\xb2\xb0\x6b\xf5\x10\xe2\x09\xf5\xb0\xaa\xe2\xc5\xf0\xb6\x55\x5a\x3b\x69\x17\xee\xab\xea\xed\x9f\x18\xaa\x65\x2b\xed\x5e\x2e\xc4\x9a\x8f\x95\x97\x03\x11\x0a\x9b\x85\x38\x0d\x7e\x5d\x5a\x8b\x04\x26\x67\xe2\x6f\x62\x53\x74\x8e\x4b\xb1\x7f\x74\x52\x00\x3b\x19\x93\x93\x61\xd7\xa6\x13\x3e\x46\xaa\x8e\x1f\x64\x81\x51\x23\x72\x7c\x3c\xec\x18\x8e\x65\x7b\xfb\x6d\xd0\xa4\xb4\x33\x76\x9c\xe1\xfe\xd1\x65\xd5\xdc\xa4\x71\x6b\xbd\x1c\x76\xa9\x47\xdd\x69\x1c\xc8\x08\xbf\x75\xfc\xb7\xce\xc2\x75\x7a\xd6\x7b\x1c\xd4\xd8\x75\x7c\xc7\x70\x86\xb1\x72\x81\x13\x7c\x6b\xcc\x81\xe5\x5a\xeb\x8f\x39\x04\x1f\x89\x45\xa7\x7b\x81\xe3\x7e\xe5\x5c\x91\x6f\x1b\x5e\x0e\xd2\xf8\x55\xe1\xe6\x2c\x41\xaf\x0c\x3f\x07\x69\x7d\x0c\x47\xfb\xc1\x0f\x84\xa7\xad\xe3\xfc\xcd\x6c\xf3\x63\xce\x17\xf1\x03\x3b\xbd\x9f\xfd\x30\xcb\x8c\xdc\x08\x44\x59\x46\xa6\x2b\x03\x53\xf0\x2b\xcf\x99\xb8\xc6\xba\xf5\x16\x13\x12\x56\xdb\xfc\xee\xee\xc7\x8f\x0f\x10\x27\xec\x83\xb0\x9a\x72\xad\x3a\xc3\xa6\xe2\x9f\x37\x8d\xe3\x61\x5c\xbb\x24\xaa\x2c\x3b\x09\xb1\x64\x23\x2d\xcd\x43\x40\x61\x97\xf5\x10\xc8\x68\xb9\x3c\x7b\x01\x3e\x36\x87\x8f\xc0\x1d\x24\xb7\x86\x3a\x40\x71\xc9\x92\xe5\x75\x3c\x3a\x1c\x52\x97\xd1\x1d\x67\x48\xb1\x1d\x8c\x6d\x15\x50\xf7\xf6\x78\x97\x68\x3b\xcb\x5b\x00\x4c\x32\xa3\x26\x73\xcc\x9f\x7f\x6e\x8b\xf8\x5f\x0c\xf8\xeb\xaf\x63\xa8\xf6\x4d\x5f\x49\xf5\xff\x7d\x10\xf4\x04\x7c\x3b\x42\x47\xd0\x47\x34\xb2\x64\xf0\xa0\xad\xef\xaf\x3b\xde\xc0\xfa\xf7\x57\x92\x4f\x0c\x75\xa7\xf8\x98\x6b\x82\xdd\xb1\xaa\xed\x6d\xc2\xdd\x11\x2a\xbf\x2a\xe0\x9d\x29\xec\x95\x21\xef\x08\xb5\x8f\x41\x2f\x6e\xc2\x81\xb0\xb7\x53\xa9\xbf\xa1\xad\xae\xec\x73\x9b\xa5\x93\x4f\x1f\xa1\x73\x3e\x72\xa6\x39\x35\x32\x1e\x0e\x72\x7b\x61\x37\xa4\xe3\xd3\x73\x1c\xbb\xf5\xe2\x8e\x36\xbf\xe5\x70\xe2\xbf\x75\xa8\x3d\xa5\x43\x67\x4c\xf7\x15\xfc\xfc\xb7\xc5\x51\x61\x32\xf4\x63\x06\x47\xd4\xc7\x31\x43\x0b\x2d\xc4\x0d\x7b\x56\xd7\xc6\xfe\xc4\xa5\xfb\x6a\x53\xb2\xf0\xd7\x7f\xff\xcf\x26\xbb\xf8\xd7\xff\xee\xcb\x2f\xfe\xfb\x7f\xa2\x67\x16\x3a\x72\x62\xca\x48\x1b\x5c\xb6\x63\xd3\x83\xd9\xca\x06\xd7\x47\x34\xa1\x64\xd6\x88\x76\x74\x67\x62\x13\x6f\xb1\x72\x92\x8b\xed\xee\xa1\xa2\x67\x50\x04\xb3\xc8\x6a\xf7\xac\x1a\x65\xa7\x6c\xf9\x60\xfb\x2c\xbb\x93\x47\x7a\x70\x55\xb5\x76\xa0\x60\xb8\x5d\x9a\xd9\x2e\x17\x9e\x97\xb8\xdf\x4e\x88\x13\x5b\x94\x07\x85\x3a\x98\xf0\x9f\x22\x64\x6c\xe4\xbc\x99\x98\x27\x77\x79\x0f\x0a\x7a\xc4\xcd\xef\x17\x35\x85\x7d\xcc\x98\x8e\x7b\x42\xaf\x80\x49\x29\x35\xe5\x88\x88\xd9\x62\x55\xad\xd4\x98\x6c\xb1\x56\xfa\xd0\x2f\x58\x46\xc7\x2a\xf3\xe7\x1d\xec\x58\xb6\xe5\x5b\x78\xd8\x09\xba\x43\x7f\x7b\xaf\xc3\xbb\x07\xe6\x0e\x01\x28\x7e\x87\xe0\x3b\xe2\x19\x88\x7e\x00\xf4\x83\x83\x7f\xb3\x3c\x2f\x41\xfe\x3b\x10\xef\xfe\xfa\xe7\x34\xec\xa8\x13\xdc\x50\xda\x51\x81\x3e\xef\xf8\x8e\x45\x0e\x53\x92\x21\x7b\x0e\x21\xb6\x33\xf1\xe8\xda\xc3\x77\x2c\xfb\xc3\xa5\xa8\x83\xe4\x04\x08\xa1\x7c\x0e\x3d\xae\x83\x09\xe9\x44\x8b\x29\x87\x69\xf0\xb2\x2c\x9d\x43\x83\xef\x04\xe1\x64\x95\xd9\x2e\x3b\x4f\x07\x49\x88\x80\xe3\xce\x52\x9b\xb0\x22\x11\x7a\x9b\x13\x48\xb0\x22\x27\x9c\x43\x42\xec\x8c\x1c\x62\x99\xf3\xd3\xa5\x90\xa0\x0c\x50\x48\x22\x66\x6b\x1c\x6c\xe8\x9c\xbb\x37\x3e\x34\x75\x56\xbc\xc3\x07\xe6\xee\x29\x51\x29\xb7\x33\xd9\x3c\x4a\x66\xd9\x74\x51\xe3\x12\xad\x7c\xba\x50\x4c\xe5\xd3\xcf\xf5\x62\xb9\x8e\x32\x6d\xf6\xa5\x90\xae\x66\x4a\xc5\x7a\x52\x2d\x29\xd5\xa6\xa8\x25\xc5\x52\x0b\x65\xa2\xfa\x89\x25\x82\x16\x44\x92\xad\xdc\x93\x50\x29\x72\xa5\x62\x56\x2d\x27\x0b\xc5\x74\x42\x64\x91\xc2\xb1\xc2\x0b\x5f\x2e\xa6\xaa\x95\xfc\x53\x33\x27\x3e\x25\xf2\xc9\x82\x96\xcf\xa6\x4b\x5c\x55\x54\xdb\xcd\x46\xfd\x64\x22\xec\x82\x88\xc2\x37\x13\xe5\xb6\xc2\xb7\xb9\xa6\xa2\x66\x5a\xcd\x0a\xaa\xe7\x4a\xa8\x5e\xe2\x12\xf5\xa7\x4c\x5d\x13\x39\xb5\x5e\xce\x95\x8a\x48\xcb\x34\xb8\x66\x25\x53\xca\x56\x8a\xb9\x5c\x06\x9d\x4c\x84\x5b\x4a\x82\x58\x2d\x8d\x32\x75\x95\x47\x4a\xa1\x55\x4f\xd7\x33\xac\xd2\x7e\x56\x5a\xad\xa7\x56\xab\x81\x1a\x99\x56\xbb\x5d\x11\xd4\x76\x4b\xad\x95\x73\xa9\xd6\x4b\x55\x69\x0a\x62\xab\xc4\x9d\x4c\x84\x5f\x12\xd1\xca\xed\xa7\x0c\x97\xe3\xc5\x56\x22\xa5\x16\x73\xb9\x16\xcf\xe7\x52\xb5\x66\xa9\x96\xe3\x9b\xa9\x66\x45\x2b\x65\x50\x3e\xa3\xa6\x5a\xac\x9a\x6b\x64\xb5\x4a\xbe\xa0\x56\x9f\x12\x4f\x77\x97\x76\x39\x17\xbe\xfe\x88\x41\x55\xd5\xbc\x9a\xac\x6d\xb5\x8d\xff\xf6\xe8\xe1\x0e\xe0\x03\xc3\x3f\x30\xbe\x3b\xa1\x27\x98\xf9\xc7\xde\xde\xc5\x46\x1e\xa4\x22\xdb\x26\x6e\xb8\x94\x58\x7e\x07\x0f\xc7\x3d\x6c\x4f\x46\xdc\x62\x63\xaa\xf5\xca\xdd\x95\x9a\x3e\x81\x3a\x8a\xa1\x5e\xaf\xa6\xee\xae\x34\xa6\x4b\x7a\x69\x37\x59\xe5\x9d\xb4\xed\x81\x41\xa7\xae\xf1\xbe\x56\xda\xa5\x8b\xbc\x6a\xa7\x6d\xe9\x59\xe2\x25\x59\x66\x25\x41\x92\x1f\x18\xf8\xc0\x80\x07\xe6\xee\x5f\xdf\x3c\x7f\x11\x97\xed\x6e\x47\xc7\x43\x6c\x1b\xf4\xdb\x0f\xe6\x1b\x04\xe0\x6f\x10\x7c\xbe\xfd\x6f\xdc\x3a\x46\x09\xc0\x5d\x02\xe8\x81\x61\x97\x04\x82\x3a\x4b\x14\xed\x03\xf3\x6d\xd3\x40\x5e\x0c\xda\xd8\xb7\xa6\xf4\x74\x72\x11\x79\xd8\x07\x06\x06\x02\xcd\xa8\xd5\xed\x2d\xe8\xc1\x07\xe6\x5b\xa0\xae\xce\x80\xce\x17\x34\x2e\xf5\xb1\xa7\x73\xc5\x86\x5c\x71\x48\x94\xf8\xcf\xd4\x72\x48\xe0\xb3\xb5\x1c\x91\xe7\x34\x2d\x5f\x18\x64\x4e\xe7\x8a\x5b\x71\x25\x48\x12\xfc\x54\x2d\x07\x04\x3e\x5b\xcb\x11\x79\x4e\xb4\xe5\xcb\x1c\xe3\xe9\x5c\xf1\x21\x57\x3c\x90\x45\xf1\x33\xb5\x1c\x12\xf8\x6c\x2d\x47\xe4\x39\x51\xcb\x97\x05\xbf\xb3\xfc\x18\x44\x92\xc4\xc9\x80\x97\x43\x97\x81\x02\xb6\x86\xd6\xc8\x5a\x6a\x41\x46\x88\x65\x45\x04\x58\x41\xe2\xff\xe6\x44\x91\x97\x80\xb8\x51\x87\xe1\x90\xa5\x3a\xea\xd5\xd4\x47\x1d\x45\x23\xeb\x06\x22\xb8\x5a\xf3\x6b\x2c\x89\x5d\xc9\x08\x01\x08\x37\xec\x7f\x9c\x8c\xeb\x75\x84\x1c\x0c\xb7\xcb\x65\x32\xaa\xf5\xca\xa5\x32\x7e\xb6\xad\x6e\xd6\x51\x42\x22\xfb\x9f\x2b\xa3\x08\x45\x59\x12\x59\xb4\xb2\xd5\x88\x57\xe2\xf7\x79\xa5\x7f\x03\xd1\xf8\x88\x68\x7b\x1c\xee\xbf\xab\x68\x68\x2d\x9a\xc8\xae\x76\xdf\x39\xa2\x7d\x61\xc7\xc2\x45\x44\x3b\x77\xd5\xbe\xb0\x68\xe8\x81\x41\xbc\x28\xc8\x12\x10\xa5\xd0\x9f\xb0\x81\x6c\x41\x2b\xfa\xaa\x6c\xf2\x81\xf9\xb6\xea\xe8\x87\xa1\xdd\x73\x86\xa4\xb3\xad\xb5\x6d\xa5\xe9\xce\xa4\xdb\xf3\x63\x87\x83\xb9\xfb\x14\xbb\x35\x72\x48\xbb\x2b\xfc\xfb\x76\xd4\xce\xd8\x21\x24\x5b\xb4\x6e\xb0\x4e\x51\xca\xbf\xd8\xcd\xee\x2c\x3d\xda\xb7\xf4\x97\x1e\xd7\x3e\x7d\xe9\xc3\x75\xbb\x66\xe9\x43\xeb\xb9\x76\xe9\x2f\x5c\xa7\x43\x4b\x7f\xcd\xae\x3f\x52\xe0\xd8\x77\x47\xf6\xd2\x02\xc7\xea\x9e\xec\x76\x19\x4b\x60\x89\x2c\x99\x3c\x2b\x50\x2a\x48\x04\xea\x48\xd4\x79\x5d\x92\x4d\xc4\x62\x93\x67\x21\xd4\x45\x5e\x90\x31\xe2\x4c\x6c\x42\x0e\xb0\x98\x00\x9d\x47\xba\xc0\xb2\x3a\x10\x75\x2a\xcb\x77\x0f\x41\x33\x71\x71\xd2\x59\x24\x36\x50\x16\xc1\x77\x00\xbf\x03\xc8\x00\xf0\x63\xf9\x5f\xb4\x64\x2d\xff\x00\xfc\x0f\xc8\xfe\x0d\x39\x28\x89\xd2\xd1\x51\x0e\xc9\x9c\x2c\x88\x48\x16\x82\xe3\x07\x04\x1f\x3e\x4b\xd2\x10\x6c\x0f\x86\xcf\x20\x66\x73\x45\x55\xb1\x08\x7d\x54\x96\x91\x2e\xeb\x40\xe6\x88\x21\x99\x40\x17\x00\x4f\x45\x0c\x59\x0e\xf3\x50\x5e\x64\x68\x02\x8b\x39\x28\xb1\x14\x22\x0e\x73\x08\x22\x2c\x12\x9d\xe7\x74\xc4\x61\x49\xa0\x26\x7b\x77\x1b\x75\x72\xcb\xff\x3e\xea\x04\xc4\xab\x8a\x87\x02\xe2\x8f\x8e\x06\xc5\x1f\x8e\x97\xd1\x01\x45\x72\x60\xbf\x2a\x17\xff\x48\x27\x2a\x73\xe1\x95\xb0\x6c\x70\x86\x6c\x62\x24\x9b\x3a\x60\x25\x56\xc7\x22\x66\x91\x8c\x91\x0e\x01\xe6\x0d\x91\x70\x3c\x06\x9c\x88\x64\x9d\x85\x10\x9b\x9c\xc9\x71\x26\x66\x59\x43\x36\xa1\xc0\xca\x58\xbf\xbb\xcd\x82\xc4\x2a\x53\x8e\x55\x97\xc4\x73\xc2\xb1\xc1\xf0\xfc\x09\x25\x49\x3a\xa0\x4b\xe9\x06\xba\x5c\x70\x2f\x49\x2c\x2f\xf3\x22\x40\xbc\x2e\xc8\xba\x0e\x74\x8c\xa9\xce\x42\x40\x05\x42\xa8\x4c\x0d\x02\x04\xaa\x03\x11\xe8\x9c\x64\x08\x18\x60\x2a\x11\xc8\x4b\x3a\xa7\xf3\x32\x27\xeb\x78\xb9\x01\x6f\xb0\x1e\x28\xc8\x10\x3f\xea\x25\x76\x87\x23\x20\x48\xf1\x86\xb9\x1e\x0d\x92\x35\x41\x86\x12\x77\x40\x9b\x10\xdc\x40\x9d\xfc\x82\x17\x02\x59\x09\x60\x99\x22\x08\x05\x22\x49\xbc\x21\x41\x00\x79\xc0\x8b\x84\xa7\x58\x90\x4d\x0a\x04\x1d\xb2\x9c\xce\x1a\x88\x87\x3c\xe5\x81\x2c\x40\x4e\xc6\xba\x28\x23\x24\xea\x4b\xd3\xbc\xc1\x92\xb0\x41\x56\xfa\x51\x33\x30\x56\x61\x88\x47\x72\xac\x17\x58\x8f\x22\xc8\x89\x9c\xc4\x0a\x9c\x04\x0e\xa9\x93\xbd\x81\x3a\x85\x07\xe6\x4e\xe4\x64\x81\x08\xbc\xb1\xd0\x9f\x88\x39\x9e\xb0\x12\x15\x65\x03\x12\x8a\x64\xc3\x90\x38\xc1\x44\x3a\x82\x82\x41\xa1\x24\x53\x1e\x00\x41\x04\x08\x20\xd3\x84\x26\xe6\x25\xdd\x58\xaa\xf3\x06\x4b\x12\x6b\x9d\x28\x56\x61\x1c\x42\x52\xec\x56\x5f\x8f\x86\x49\x17\x2b\x8a\x87\x02\x10\xe4\x8f\xa8\xf3\x48\x9c\x3f\xe1\xcb\x01\x97\x86\xfd\x98\x2b\x28\x31\x5d\x08\x18\xb3\xf4\x47\xb0\x44\x9a\x0b\xe8\x32\x2c\xd1\x66\xc0\x65\x58\xb8\x48\x09\xfe\x32\x2c\x7c\xa4\x64\x7e\x19\x16\x61\x17\x0b\x77\x19\x16\x31\x52\x58\xbe\x0c\x8b\xb4\x8b\x85\xbf\x0c\x8b\x1c\x29\xbf\x5e\xb8\xd4\xcb\x9d\xb4\x5d\xe2\xbc\x70\x99\x20\x8c\x94\x11\x2f\xe5\x07\x45\x4a\x75\x97\xf2\x13\x2d\x87\x5d\xa8\x66\xc8\x45\xf0\x5c\xca\x0f\x1f\xa9\x86\x5c\x68\x82\x50\x88\x56\x55\x2e\xc4\x23\xae\x22\x14\x07\xf8\x65\x57\xe1\x42\x3c\xd2\x1a\x0f\x27\x5c\xb3\x5e\xf2\x1a\x8f\x24\x0a\xf2\xc5\x78\x10\x88\x9e\xcf\x2f\xc4\x03\x57\x78\x20\x94\x85\xd0\x95\xde\xe2\x4b\x47\xb7\xe8\xd3\x1f\xbe\x89\xb8\x50\xe4\xa9\x8d\xfb\x98\x2f\x19\x5d\x1d\xe3\xb6\xbc\xdd\x56\x38\x5a\xff\x2c\x6d\x75\xe5\xcc\x89\x4d\xc2\x13\xfc\x85\xd7\x95\x96\x35\xc0\xe0\x82\xca\xb5\xd5\x97\xe3\x2d\xc2\x4f\xb8\x56\x15\xa7\xb5\x30\x70\xae\x7f\xe6\x3e\x55\x6b\x57\x94\x2b\xbf\x96\xd6\x82\x10\xbf\xfe\x19\x7c\xae\xad\x5d\x5e\xc2\xfc\x52\x5a\x0b\x93\x91\xf5\xcf\xc2\xe7\x6a\xed\xf2\xea\xdf\x57\xd1\xda\x6e\xef\x7b\xfd\x10\xec\x51\xe1\xb4\xde\xa2\xef\x4e\x3c\x9f\xd2\x6b\x0d\x69\x89\xc6\xb9\xba\xf2\xfc\xfb\xbb\x2f\x9f\x70\x9b\x34\x76\xe5\x56\x1d\xfd\xf5\x03\xf8\xcd\x2b\x77\x85\xff\xfd\x1a\x2b\x77\xe3\x2b\xba\xf1\x2b\x17\xde\x53\x58\x3f\x08\x17\xaf\xdc\xe5\x6e\xe8\x53\xf6\xdc\xef\xe8\x53\xff\xd2\x3d\x17\xde\xbe\x58\x3f\xa0\xdf\xbc\x72\x37\xdb\x73\xbf\x6b\xe5\x7e\xc1\x9e\xdb\xb9\x53\xb2\x7e\x08\xbc\x25\x5c\xae\x9c\xef\x5c\xab\x4c\xd3\x75\x46\xd7\xae\xeb\x17\xbe\x0b\xf2\x09\x97\xd1\xe3\x57\x2a\xbc\x47\xb2\x7e\x10\x3e\xae\xd4\x15\x0e\x6b\xb3\x52\x97\x47\xbd\x2f\x7c\xff\xe3\x13\xbe\x05\xb2\x67\xa5\x76\x0a\x2f\x9b\x87\x60\xa5\x82\xcb\x04\x63\xd7\x0a\x73\xdb\x1d\x05\xc5\x5d\x30\x5d\x82\x77\x16\xd2\xff\xeb\xdb\xea\xea\x80\xbd\xf8\xf7\x7f\x77\xaf\x14\x80\x07\xe6\x9b\x3e\x99\x2f\xf2\xe7\xfd\x5d\xfd\xed\xb1\x83\x5d\x7d\x3a\x1c\x7e\xc4\xb2\xba\x5e\xb0\x33\x78\xf0\x86\xc1\x36\xbd\xdb\xdc\x0c\xd9\x25\xfe\x6f\xe4\x69\x77\xca\x68\x9b\x07\xb4\xdf\x2a\x60\xf0\xd9\xb5\x0a\xf9\xb0\x51\x6c\x35\x4a\x02\xeb\x58\x7f\xfe\xcf\x4c\xfe\xdd\xcc\x24\xa8\x92\x6e\x1e\xa4\xfd\x66\x82\xf8\x3d\xce\x43\x3a\x68\x26\x5c\x68\x1d\xfc\xff\x19\xc5\xbf\x8f\x51\xec\x94\xbc\xd7\x0f\x31\xbe\x63\x6f\x44\xe1\x6f\x1b\x50\x56\x37\x04\xaf\x33\x8a\xd5\x55\xc5\xeb\x8d\xe2\x8a\x8a\x53\xac\x51\x7c\xf1\x42\xc7\x6e\xff\x62\xfd\x10\xe3\x29\x3e\xd3\x28\x22\xdf\x7c\xb9\xdd\x72\x7f\xbd\xb5\x39\xd2\x70\xd9\xf3\x0a\xb2\x4b\x9b\x2d\xe1\x6b\xc8\xf6\xba\x00\x10\x7b\x07\x23\xfc\x9a\xd6\x03\xc3\x6f\x92\x81\xe0\xd2\xc6\xd6\x2f\x4e\x6b\x1e\x9d\xf4\x8a\xa9\x2b\xa4\xdb\xff\x2a\x8b\x7d\x17\x26\xa4\xf8\x66\xfc\x51\x3c\x68\x17\x4f\x5c\xbf\xf0\x28\x1e\x36\xd2\xa9\xb9\x14\x0f\xb7\x8b\x27\xae\x0f\x7a\x14\x0f\x1f\xe9\x81\x5c\x8a\x47\xd8\xc5\x13\xd7\xb7\x3e\x8a\x27\xda\x5d\xb8\x14\x8f\xb4\x8b\x27\xae\xaf\x7f\x14\x8f\x1c\x29\xdb\x5f\xbc\xf0\xbb\x57\x28\xc0\x15\x4b\xb6\x7b\x89\x42\xb8\x86\x27\x14\x29\xb3\x5d\xce\x13\x1b\x29\xfb\x5c\x8e\x89\x8b\x60\xba\x78\xe9\x76\x2f\x53\x08\x57\x18\xe5\xee\x75\x8a\xab\x34\x1e\x3d\xca\x5f\xae\x27\x29\x72\xfc\xbb\x1c\x53\xf4\x84\x70\x31\xa6\xdd\x6b\x15\xe8\x0a\x3d\xed\x5e\xac\x90\x0e\x5d\xac\x38\xf7\xe5\x76\xb7\xb8\x5a\x71\xec\xdd\x47\xe7\x5c\xae\x88\x7d\x95\xdd\x0d\x62\xe2\xf6\x7b\x8a\x58\x91\xa3\xb2\xcc\x72\xb2\x2e\x53\x53\x24\x3a\x96\x31\x4f\x74\x96\x65\x65\x5d\x94\x4c\x82\x25\x93\xe5\x44\x51\xd4\x21\x36\x59\x56\xc7\x9c\x20\x61\xc2\x1b\x80\x98\x32\x27\x10\x8e\x04\xb7\x36\xaf\x7a\x5f\x4c\x50\x62\x04\x41\x51\x38\xe6\xfa\x3b\x92\xe3\xef\x73\x87\x83\xdb\x71\xf8\x4e\x59\x7c\x9e\xf2\x52\x46\x9b\x6a\x03\x3d\x87\x32\x0a\xdb\x6c\xf4\x2b\x6e\x6e\xd4\x6f\x01\x60\x3e\x49\x5e\x3e\x2b\x8e\x80\x5a\x99\x3d\x37\x1f\x95\x16\xbb\x00\x7f\x51\xd6\x9f\x84\xb2\xfb\x89\x3e\x2b\xee\x6b\x51\xc8\xd3\x12\xee\xf6\xdf\x0a\xb8\x5e\x96\x85\xc4\xbb\xe9\xc9\x14\x18\x8e\x5b\x7c\x69\xbd\x27\x9a\xcf\x83\xb4\x93\x13\x07\xd3\xc1\x6c\x09\x5f\xe2\xdd\xdc\x36\xbe\xc6\x74\x96\x96\x17\x43\x6a\x32\xf5\xfe\x3a\x1d\x68\x09\xcd\x29\x2a\xcf\x96\x59\xae\xb4\x52\x4e\xbe\x37\xf5\xe7\x46\x8d\x1d\xa6\xcb\x49\x8d\x87\xdd\x01\xf1\xd2\x19\x9c\x28\x36\x67\x80\xaf\x3e\x36\x7a\x4d\xd0\xea\x0e\x5c\x90\x4c\x94\x55\xae\x88\xd3\x0d\x94\x1b\x19\x1e\xfb\x32\xcb\x8f\x2c\x9d\xab\x55\xdc\x42\xfe\x6e\xa5\x83\xa5\x1e\xb4\x0d\x65\x2d\x2a\xc9\xf2\xf3\x73\x07\x5e\x51\x17\xff\x4b\x6e\x9e\xb3\x9b\x1f\x73\x42\x9f\x5a\x6c\x7f\xe4\x64\xa5\xda\xd3\x30\xf5\x48\xbb\x06\x2b\x96\x5b\x7e\x26\x97\x7b\x6f\x36\xa4\x59\xc3\x7a\x49\xe0\xe4\x84\xcf\xf3\x85\x25\x7c\x6a\x82\xe7\x5d\x25\x82\xef\xc3\xe7\x83\x7e\x77\xf9\xdd\xa2\x7f\xc6\x9a\xa6\x68\x12\x79\x68\xfa\x5c\xcc\x1c\x25\xb4\xf7\xd7\x6b\x9d\x2c\xf9\x2f\x44\xe0\x12\xd6\x63\x02\xe4\xc1\xf3\xd3\xdc\xef\xcd\x8a\x70\xd8\x06\x78\x3e\x76\xa0\x5c\xcc\xbc\x4d\xf3\xc9\x79\x89\xf7\x13\xaa\x91\x0c\xd6\x99\xed\xfa\x6e\xc9\x7e\x39\xa0\x80\x5d\x79\xf7\x7d\xa2\x6b\x72\x3e\xfd\xf6\xe3\xbd\x11\xc1\x77\x22\xfd\x9f\x4b\xfb\xf8\x57\x57\x12\x5c\x5e\x55\xea\xb9\x94\x96\x6c\xdb\xef\xa0\x31\x13\x92\x9c\x2e\x1a\xb6\x2a\xf3\x95\xda\x6c\x50\x22\xed\xe7\x8c\x9e\xa8\xa0\x6e\xad\xe1\x15\x4b\xf5\x29\x6c\x37\xfc\x34\xf7\x9c\x93\x95\x6e\xed\xad\x94\x6a\xf6\x1a\xc4\x1a\xdb\xf9\x22\x32\x92\xbc\x33\xba\x57\x01\x7e\x4f\xce\x7e\xfe\x5c\x1e\x9b\x96\xef\x3a\x5c\x7d\x11\x69\xf1\xff\xe3\x31\x62\xfb\x65\x6e\x02\x87\x79\x20\x70\x54\xc7\x02\x67\x22\x83\xe8\x98\xe8\x12\x2f\xe8\x26\xcb\x2d\x02\x18\x6f\x1a\x02\x12\x10\x27\x62\x82\x59\x4a\x58\xd9\x20\xc4\x04\xa6\x20\x03\x04\x59\x56\x17\x36\x97\xcf\xaf\x70\x63\xe8\x98\x1b\x13\x10\x62\x63\xdd\xd8\x62\x10\xde\xed\xe6\xef\xd7\xfa\xb1\xe8\x9e\xfb\x60\xe7\x25\x94\x7c\x54\x4a\x1c\xdf\x4e\xa4\x58\x3f\xd3\x48\x97\x60\x85\x55\x40\x81\x0e\xca\xd2\x73\x45\xb0\x8b\x50\x91\x69\xd3\x22\xf3\xac\x5f\x0f\xe0\x63\xfd\x98\x52\x55\x5f\xac\x17\x9d\xa6\x67\x49\xcf\xcd\x25\xec\x5c\x76\xe2\x3d\x02\xbe\xe1\x3f\xa7\x12\x6e\xd7\xf1\x26\xbd\xbc\xf6\x58\x17\x5a\xf5\x3e\xe7\xcf\x9a\xf3\x9e\x27\xd6\xfd\x2a\x97\x2c\xd0\xb7\x52\x41\x78\x7e\x35\xcc\xd7\xe7\x1c\x04\xcd\x61\x62\x30\x98\xd9\x5c\x57\x2a\x67\xcd\x7e\xf6\xe9\xd3\xfc\x58\xca\xef\x4e\x67\xa9\x49\xa9\xa9\x68\xb2\x58\x81\x95\x9a\x5f\x27\xb3\x62\x2a\x33\x4e\x3d\x26\xeb\x74\xfc\x4e\xb4\x72\x6b\xe8\xd8\x86\x95\x6f\x04\xf0\xbf\xd9\x8f\xbd\x2b\x13\x6c\x1f\x25\x74\xd8\x8f\x69\xfb\x74\x72\x89\x1f\x91\xb8\xbd\x3a\xfd\x20\x6f\xf4\x13\xfa\x11\xb5\xf7\xd4\x1e\x35\xd9\x9e\xa1\xb8\xb9\x79\xf7\x65\x6e\xe5\xdd\xb2\x5c\x6a\xe8\x55\x6d\x86\xb9\x5c\x3e\xef\x54\x41\x19\x96\x86\x30\x7b\x9f\x37\xd2\x9e\xa3\x97\x60\xbe\x3e\x51\xfa\x19\xaf\xd6\x2f\x59\xd8\xce\x08\x56\xd5\x27\xe9\xb1\xf6\xf2\x5c\x78\xbe\xcf\x96\x53\xf3\x0c\x37\x4f\x74\x6f\xe2\x47\x10\x61\x05\xde\x60\x0d\x4e\x36\x59\x51\xe0\x45\x40\xcc\x85\x17\x31\xb0\x80\x78\xc0\xca\x82\x60\x02\x8a\x04\x19\x23\x93\x87\x06\xd1\x05\xc9\xa0\x88\x52\x28\x63\xd1\x94\x10\xc7\xe3\xbb\xf5\x37\xd5\xaf\xf0\x23\xec\x51\x3f\x22\x48\x22\x17\xef\x48\xc2\xd1\xed\x83\xf7\xb5\x8e\x24\x75\xcc\xd0\x7c\xbd\xdb\xaa\x08\xaa\xe8\xa4\xf2\x20\xaf\xdd\xcf\xda\xd5\xa4\xfc\xde\x9a\xb6\x1a\x35\xf6\xcd\x2a\x5b\xed\x49\x55\x87\xa9\xe9\x48\xcb\x53\x69\x09\x1f\xef\x48\x12\x8f\xcf\x89\xee\x34\x5b\x10\x61\x37\x9f\xc8\xf6\x40\xad\x54\x94\xf5\xfb\xe1\xbd\x32\x7e\x79\x87\xc9\x5c\x4a\xb3\xea\xe9\x6a\x03\x78\x46\xa5\x3b\x49\x40\x6c\xcf\x0b\xb3\x42\x45\xf0\xf8\xaa\x85\x93\x33\x3f\x65\xbf\x79\x65\x1b\x43\x54\x21\x75\x2d\x37\xcc\x20\x4c\x0b\xca\x5c\xca\x7c\x9a\x23\xc9\x37\xb9\x34\xa0\xbd\x92\xa0\xcc\xe5\x24\x28\x7b\x4f\x6a\x77\x6a\x40\x11\xc2\xba\x2c\xb5\xfb\xdc\x28\x3f\x18\xc9\x9a\xc8\x0f\x92\xec\x34\xd0\xe4\x6f\x76\x24\xd3\x6a\xcd\xb9\x36\x21\xba\x99\x23\x11\xeb\x9b\xf9\x85\x03\xf2\x46\x3f\xa1\x23\x31\xe7\x5a\x3b\x3f\x4f\x95\xe4\x76\x72\x56\xcd\x12\xf5\xbd\x6f\x36\x1f\xc7\x66\x37\xd7\x34\x64\xcd\xea\x82\xec\x30\x51\x1f\x92\x7c\x46\x6d\xe7\xbb\xa4\x39\x96\xfa\x85\x94\x4a\xdd\x52\xdd\x19\x75\xbd\xbc\xc6\x4b\x7a\x8a\x47\x3e\x19\xb4\x1a\x6a\x72\x5c\x91\x47\x76\x5f\x29\x4c\x13\xb7\x49\x48\x00\x60\xa9\x0c\x21\x80\x04\xca\x18\xeb\xfa\xf2\x1b\xd0\x50\xe6\x59\x09\x08\x92\x24\x10\x51\x14\x0d\x24\x00\xc4\xb2\x86\xc0\x89\x92\x09\x0d\x19\x49\x58\x94\xa9\xc1\x51\x24\x72\x6c\xe0\x48\xb8\xeb\x1c\x09\x77\xcc\x91\x88\x90\x15\xe2\xbf\x45\xbb\x1a\xdd\xae\x98\x5d\xeb\x48\xa2\x69\xe7\x07\x43\x73\xca\xb3\xf6\x63\x9a\x3c\x1a\xd9\x79\xb1\xfe\xfa\x48\x5f\x33\xa5\xf7\xf1\xab\xd8\x26\xce\xcc\x30\xab\xef\x83\x8c\xf9\x92\x6e\x54\x92\x39\xa4\x0e\x96\xf0\xf1\x8e\x24\x95\x2d\x4d\xc8\xfb\xa4\x6f\x3a\xf7\xa4\x9a\x7d\x6e\xb5\x74\x20\x54\xfb\xf9\x44\x3e\xdf\xf2\xd2\x6f\x76\xc3\xae\xc0\xcc\x33\xed\x9b\xaf\xa8\xd8\x4d\xd7\xfd\xfc\xa4\x85\x72\x6e\xa3\x58\x7d\x99\x57\x12\x4f\xf7\xcd\xa9\x49\x9c\xd6\x2c\x59\x36\xc6\x12\xdf\x4b\x55\xf4\xe4\xa8\xaf\x97\xdb\x85\xcf\x3b\x59\xa5\xa4\xa7\xf2\x5b\xcb\x64\x93\x85\x7e\x23\x37\x65\x5f\x7b\xef\x9e\x80\x27\x28\x83\x0b\x99\x0c\xf0\xf8\x04\x8b\x2a\x8d\xba\x66\xf9\xbd\xe7\x25\xfc\xef\x76\x24\x6e\x9f\x83\x5f\x26\x23\xe1\x67\x11\xc1\x62\xe4\x8d\x7e\x42\x47\x32\x4f\xb9\xb6\x21\x3a\xac\x50\xb6\xeb\x56\xb2\x01\x91\x5c\x1a\x38\xf3\x59\x75\x0e\xc5\x84\xf1\x02\x5f\x00\xa9\xcc\x5b\x0e\x2b\xf8\xfd\x76\xa2\x91\xaf\x8a\x43\xd9\x7a\x85\xb5\xfa\xc8\x18\x68\x95\xe9\xd0\x65\x59\x9c\x96\x94\x3e\x9b\x33\x4b\x6d\x0d\x34\x67\x63\x07\xbd\xa3\x94\x72\x13\x47\xa2\x13\x4e\x12\x88\x4e\x08\x40\x84\x13\x80\x04\x45\x41\x84\x06\x87\x79\x2c\x52\x99\x08\x54\x12\x78\x03\x23\xd9\xd0\x39\x48\x05\x44\x44\x8c\x4d\x11\x60\x64\x52\xca\xeb\xac\x40\xe8\xdd\xaa\x65\x73\x79\x63\x6a\xeb\xb5\x03\x47\x53\x13\x89\x3f\x50\xa9\x59\x0c\xc2\xbb\x48\xe9\x3c\xb0\x84\x33\xeb\x0a\x81\x47\xc9\xee\xb3\xb0\xad\xe7\xf6\xf2\xb9\xd1\x28\x86\x5e\x27\x09\x27\x09\x92\x71\x6a\x93\x6e\x61\xaa\xf9\x29\x31\xd1\xcb\xe6\xd9\x22\x95\x49\xa3\x6c\x3e\x65\xef\x9f\x2d\xfe\x79\x5a\x2f\xdd\xbf\x28\xbe\xc8\x3e\xae\x3f\x1b\x7c\x4f\x6b\xfa\x5a\x42\x1e\x8c\x72\x4d\xf4\xca\x4e\x45\xcd\x9c\x4b\xe5\x02\x1d\xa8\x3a\xac\xd5\xb2\xbc\xf5\xf6\x3a\xc8\x82\x84\xd3\x6d\xb9\x25\x5f\xec\x96\xa0\x80\x34\x7d\xd0\x43\xa4\x5a\xab\x9b\x34\xe5\x4c\x0d\x50\x56\xb0\xd9\x4b\xb5\xde\xfc\x5e\x43\x19\x7a\xf9\x49\x7f\x98\x18\xcd\xfb\x09\xa5\xfd\xf3\x04\xef\xf2\xb4\x6d\xbe\x87\xbd\xcb\x56\xcd\xe2\xdc\xba\x4d\xa3\x51\xab\x84\x58\xce\x4d\xed\x96\x9f\x4c\x44\x7f\xd1\xdd\xa7\x29\xbb\x21\xff\x92\xba\x52\xad\xbb\x91\xb7\xab\xec\xab\x69\x9c\x5a\xd7\xd9\xd2\x59\x72\xe2\xb0\x8e\xcf\xf1\xaf\xc9\xb2\xfa\x36\xd6\x1e\x59\x27\x53\xbc\x7f\x87\x62\x65\x6e\x79\x70\x68\x16\xd2\xed\x91\xd6\xec\xba\x93\xea\x7d\x2d\x98\x20\x8e\x3c\x47\xd9\xe0\x8b\xf9\x1c\xae\xeb\xa4\xae\xa3\x3f\x32\x0e\xe8\xe0\x00\xfd\xd0\xfb\x65\x50\xb5\x3d\xd6\xb1\x4b\x1f\xfd\xc4\x63\x7e\x26\xbd\x09\x5a\x65\xda\x28\x16\xfa\xa3\xfc\xd3\xab\xd6\xd7\x9e\xac\x04\xf5\x04\x76\xa2\x88\x2d\xf7\x25\x31\xa9\x66\x5e\xe0\x73\xb1\x22\x73\x25\x4b\x7e\xd7\xa4\xc4\xf8\x5e\x2d\x9a\x4f\x28\x5d\x4f\x36\x67\x13\xa1\x54\x7f\xd2\x73\x05\xf5\x46\xe7\x31\x00\xb0\x2e\x1b\xa6\x41\x91\xce\x19\x1c\xe4\x20\x91\x74\x5d\x10\x05\x89\x10\x20\x73\x3a\xd1\x75\x68\x88\x1c\x10\x44\x08\x88\xae\xb3\x3a\x06\xd4\x94\x25\x49\x04\xa6\xc0\x62\x96\xe3\x02\xef\x87\xae\xb9\x47\x73\x96\xf7\x93\x04\x14\xff\x8a\x97\xd5\xe8\x4e\xbf\x2f\x30\xc5\x33\xcb\x11\xbf\xc7\xfd\xa9\x6b\xfa\x5a\xbe\xa1\x67\xb3\xf7\x30\x4f\xad\xf7\xb7\xae\x6d\xa4\xb2\x9c\x90\xcb\xcc\x13\x3e\xe0\xef\x33\x32\xb2\xe1\x7d\x85\x45\xd2\xb3\xfc\x5e\x1c\x22\xb3\xfb\xdc\x44\xb6\x69\xb3\xe9\xac\x93\x6f\x78\xe8\xb5\x01\xef\x93\xf5\xb1\x0b\x11\xc4\x28\x21\x2a\x05\x21\x93\x73\x39\x3b\x91\x57\xb2\x9f\xe7\xfe\xce\x2d\xf7\xfc\x6a\xf7\x77\x49\x39\xea\x53\xdc\x9f\x22\xb6\xf3\x92\x22\xf6\x87\x5d\xb5\x4c\x01\xa9\xd7\xc5\x46\xc6\x48\x69\x6f\x82\xf6\x38\x1b\x66\x5e\x0d\xb6\x9e\x82\x3c\x7e\x66\xb3\x16\x0c\x64\xba\xb1\xfb\xbb\x84\xfe\x95\xee\xcf\x6f\x78\xdd\xbe\x58\xf7\x85\x7c\xf9\x29\x49\x66\x85\x7e\xdf\x71\xcc\xec\x13\x5b\xb3\x39\x93\xc5\x66\x8b\xcf\x98\xfa\xcc\x66\x0b\xa8\xf5\x72\xaf\x0c\x75\x4c\xee\x4d\xa3\x6e\x75\xfd\xe6\x3b\x1e\xb7\x5a\xdc\x73\x75\x34\x6d\xe9\x0d\xb7\x9d\xf1\x94\x77\xc7\x78\x9d\x5a\x86\xea\x29\xb7\x71\x7f\x86\x88\x75\x56\xe2\x58\x13\x60\x60\x70\x26\x15\x65\x42\x0d\x0a\x4c\x13\xea\x12\x2b\x43\x53\xc4\x32\x61\x39\x83\x13\x0d\x9d\x88\x94\xe5\x01\xcb\x99\xa2\x8e\x24\x53\x00\xc4\x34\xc0\xd6\x2b\x6a\x6e\x91\xfc\x1d\x3d\x4e\xca\x10\xc5\x9f\x26\xc3\xc1\x9d\x2b\x0a\xd7\xe6\x7e\x07\xea\xdb\x81\xf3\xab\x34\x1a\xd5\xe0\x39\xd9\x7d\x4c\xf4\xa5\x06\x2b\xcf\xfa\x59\x58\x75\x65\xc1\x31\xc4\xd2\xc8\xf5\x7b\xa8\x9f\x78\x93\xf3\x25\x8d\xc8\x83\x46\x43\xcd\xba\xed\x6a\xeb\x48\xee\x57\x7a\xb4\xf5\xa1\x23\xe5\x94\x41\xb5\x64\x4a\x86\x56\x2a\x59\x4a\xaa\x35\xef\xbe\xdd\x67\xc1\x0b\x69\x3a\x05\xae\xd1\xe5\xd4\x5c\x59\x51\x9e\x5b\x69\xdb\x37\xfc\x7e\x32\x3b\xd7\x38\xc3\x6b\xd4\xe7\x33\xdc\x64\xd1\xf3\xe3\x80\x6a\xcd\xb6\x3e\xe7\x51\xa2\x6f\x15\x7b\xb5\x47\x41\x73\xbe\x4e\xee\x57\x6f\x34\xea\xe1\x66\x3e\xf7\x34\xbe\xfc\xfc\x96\xdc\xef\x43\x1d\xfa\xd4\x93\xe7\x95\xb9\xd7\x80\x3b\xc0\x83\xb2\x57\xfe\xe5\x27\x74\x3e\xe2\x3d\x99\x34\xfb\x33\x27\x59\xc9\xf2\x8f\x6f\x6f\x0a\x27\x64\x95\xa2\x99\x4b\x65\xb8\x7e\x65\x08\x71\xf7\xbd\xd7\x4c\x75\x35\x47\x52\x94\xa1\xd1\xa4\x70\x8e\x0a\xd9\xfe\x73\xaa\x37\x7f\x6b\xd4\xf2\x89\xb1\x6e\xb6\xed\xfb\x0a\x9f\x78\xe9\x4d\xf3\x76\xfb\xa9\x94\x45\xe9\xf2\xe3\x38\x79\x1b\xe7\xc3\x53\x53\x36\x80\xa0\xeb\x02\xe2\x09\x22\x18\x21\x09\x42\x28\xe9\xc4\x84\x1c\x91\x80\x24\x0a\x12\xcb\xb3\x94\x22\xd3\xc0\x22\xc7\x8b\x86\x44\x79\x20\x98\x3a\xd5\x65\x68\x1a\x3c\x1f\x38\x1f\xee\x46\xb9\xd7\x71\xe7\xc3\x01\x39\xfe\x05\x7a\xab\xd1\x9d\x7b\x4d\xd7\xe6\x5e\xbf\xd0\xfd\x6c\xe5\x5e\xa5\x27\xf4\x94\x2b\xc9\x96\x00\x8c\x02\xd4\x72\xa8\x5e\x84\xdd\x96\x9b\x51\xdb\x7d\xfa\x94\xaf\xb4\xd2\x35\xde\xb3\x93\xaf\x25\x3e\x6d\x97\xd5\x1a\x6f\x34\x3c\x16\x14\xc5\x6c\xad\xfc\x22\x64\x32\x82\x66\xbc\xa0\x2c\x49\x42\x43\x10\x66\xf9\x2e\xe5\x9e\xe6\x15\x69\x3a\x9e\xcd\xc0\xd7\xc9\xbd\x7e\xb5\xfb\xb9\x49\xee\x75\x0b\xf7\x73\x49\xee\x73\xa5\xfb\xe1\xf4\x76\xdb\x11\x51\xde\xad\xcc\xde\x1b\x8a\xfb\xa2\xb1\xcd\x04\xf5\x8c\x8a\x55\xe4\xda\x7e\xda\x68\x94\x47\x73\x23\xe7\x88\x83\xa6\x21\x55\xca\xc3\xb7\xe6\xbb\xa9\xb1\x5e\xaf\x20\xdb\x8e\x61\x8e\x13\x6f\x76\xbb\x07\xf2\x8d\x77\xd7\x55\x26\x09\xb1\xab\x3f\x67\xe6\xf7\x76\x2a\xa5\xdd\xc4\xfd\x50\xce\xa4\xba\x2e\x60\xac\xf3\xa6\xc4\x12\x93\x33\xa0\xac\x73\x26\x34\x05\x5d\x12\x24\xd1\x84\x8b\xf3\x14\x14\x64\x2a\xcb\x02\x85\x82\x8e\xb1\xc8\x63\x6c\x20\x22\x61\x20\x1b\x82\x14\xd6\xbf\xaf\xf9\xfa\xe4\x19\x47\x3f\x04\xc4\x43\xef\xf5\x5b\x8d\xee\x5c\x61\x0c\xb3\x9f\xf3\xea\xbe\xa7\x1d\xfd\x82\x34\xf8\xcc\xee\xfe\x65\xee\x2a\x30\xe5\xd7\x84\xb9\x6d\x7e\xea\x9a\x5f\x4d\xed\xf6\x9a\x89\x7c\xaa\x3f\x2a\xe6\xdf\x8d\x72\x5a\x70\x24\xf2\x5a\xcf\x14\xbc\x2c\x68\xf6\x7c\xbf\xa9\x3e\x2a\x89\x6a\x0e\x67\x8a\xc6\x3d\x48\xbf\x7a\xe9\xfb\x89\xc5\xdf\xd3\xc1\x9c\x53\x2b\xf3\x89\x2c\xb7\x2b\x42\x42\xcd\xa4\xb9\xe2\xb0\x3b\xcf\xdb\xd5\x57\xf6\xdd\x48\xb9\xf2\x69\xd9\xd2\xb6\x7e\xe2\xdd\xd5\xb2\x72\xfc\xd5\xdd\x95\xf6\x3b\xf8\x4b\xe4\xba\xad\xf9\x21\xfe\x8e\x54\xd2\xce\xb4\xa1\x9b\x1c\x25\xd5\xeb\xe8\x5f\x79\x94\xac\x26\xd3\x6d\xd5\x2b\x95\xda\x60\x5a\x9c\x49\xad\xd7\xfe\x1b\x1a\x6b\xc6\x7c\xd6\xaf\xe0\x27\x04\xdb\x35\x49\x49\x67\xc7\x8e\x01\xdf\x45\xad\xf9\x3a\x6b\x09\x42\xde\xe6\x85\x5a\xbe\x5b\xc9\xe4\x44\x16\xf6\x32\x8e\xaa\x19\xad\x2e\x6a\xa6\xb2\x13\x92\x73\xcd\xe2\xac\x34\x85\x37\xca\xe6\x90\xc4\x8a\x18\xea\x2c\xa1\x26\x32\x10\x21\x26\x31\x08\xe5\x75\x8e\xd3\x4d\x20\x11\x11\x43\x88\x65\x16\x49\x44\x12\x01\x31\xa1\x68\x62\xa4\xeb\x82\x40\x38\x43\x62\x91\x00\x0c\x31\x70\xa7\xe8\x9a\xef\x38\x9f\xe3\x4e\x21\xe4\xe3\xb3\xb9\xf5\xe8\xce\xed\xeb\xc0\x14\xcf\xec\xc7\x9f\xe3\x4e\xcf\xbc\xf4\x79\x59\xe5\x6d\x39\x35\xea\x4e\x33\x6b\x7e\xb5\x27\x47\x2b\x5b\x29\x90\x51\x13\x16\xa8\x4b\x46\xa6\x28\xd8\xc3\x17\xd6\x19\xa8\x26\x19\xf9\xe2\xe8\x75\xa0\x65\xb2\x3e\xf2\x27\x95\x3c\x7e\x79\x81\x56\x41\x9b\xd5\x39\xb6\x20\x4d\xef\x6d\xff\x59\xf3\x14\xce\x40\x34\xd1\xf2\xe5\xa7\xf6\xf8\x11\xc9\xe9\x7c\xdf\xd6\x31\xd4\x66\x9f\xe7\x4e\xbf\x64\xe3\x41\xfb\x1d\xfc\x5d\xeb\x4e\xcf\xb4\xa1\x9b\xbb\xd3\x0b\xe8\x5f\xe9\x4e\x71\x4f\xb9\xcf\x96\x35\x43\x7b\xca\x57\x6a\x6f\x33\x83\x7d\xa5\x0d\x9b\x5a\x5a\x45\x46\x98\x9d\xe0\xd7\x8a\x62\x58\x2c\x46\xbc\xea\x8f\x87\x76\x33\xfb\x96\x4a\xd4\xfa\xc6\xfb\xfc\x51\xa0\x60\x98\x9c\xa5\x7a\xef\x2f\x5c\x9a\xb2\xe0\xc5\xb2\x1f\x75\x50\x9f\x94\x88\xef\x36\x6e\xd4\x96\x65\x79\x81\x52\x03\x9a\x80\x63\x91\xae\xeb\x3a\x06\x32\x21\x86\x01\x65\x56\xa4\x48\x42\x3c\x8b\x39\x62\x48\x54\x96\x4c\x53\x14\x09\x4f\x65\x42\x29\xe4\x80\x4e\x79\x20\xb3\x58\x04\xc1\x1f\xc1\x84\x37\x3a\x1c\xf3\xc7\xdc\x29\xe2\x45\x29\xde\x9d\xae\x46\x77\xbe\x82\x72\xed\xe1\xf8\xc0\x95\xb1\xc0\x3d\x5c\x9e\x6d\xa6\x1b\x75\x10\xda\xcd\xe5\xd7\xaf\x12\xf1\xe6\xb7\x75\xd8\x56\x05\x65\x30\x4f\xdd\xb7\xd8\xb2\x63\x08\xe9\xbe\x30\xc4\xc3\xf6\x74\x94\xa9\x13\xbd\xc8\x4a\x93\x89\x2d\x24\x5b\x7c\xc1\x78\x34\x9e\xed\xb4\x86\x5f\xfd\x97\x44\xc9\x51\x66\x29\xdb\xaf\x0d\xe1\xd3\xfb\xa3\x29\xba\xb4\x32\x6e\x19\xcf\xed\x2a\xd1\xee\xc7\xaa\x51\xb7\x1f\x51\x59\x51\x4f\x71\xb7\x51\xfd\x29\x97\xac\x47\x28\xcf\x17\xd6\xf7\xcf\x23\x85\x84\xfa\xe6\xf9\x3f\x4e\xf6\x35\x7f\xe9\xad\x5f\x5c\x50\x04\xe8\x06\xa1\xa9\xbb\xd6\xd7\x47\xdb\x39\xe0\x66\x37\x73\x0b\xd1\xb9\xb7\x28\x48\x7c\xbc\x9d\x74\x38\xe4\x5c\xa9\x8b\x7e\x3d\x22\xcf\x89\xf4\xc3\x90\x53\x73\x92\xb5\x6c\x99\x37\x8d\xfb\xde\xbb\xd3\x2c\xbf\x36\x5e\x1b\xd6\x7d\x9b\x54\xa0\xc7\x9a\x73\x41\x30\x9d\x67\x73\xf0\xf6\x2e\xcf\x46\x46\x23\xf1\xfa\x0a\x07\xaa\xd0\x4d\x29\x25\x0a\x4b\xad\xba\x5e\x96\x1f\x27\x3e\xff\x34\x24\xb3\x61\xef\x19\xa6\x84\x41\xe5\xad\x6a\x3e\xb6\x25\xe5\x36\x05\x11\x44\x00\x41\x02\x47\x64\x8a\x28\xcb\x0a\x9c\x81\x64\x13\x9b\x02\x16\xa8\x21\x41\x1e\x4b\x58\xa2\x02\xe6\x04\x8a\x58\x20\x0b\x04\x43\x0e\x42\x13\xc9\x8b\x27\x22\x4a\xe2\xf2\xfb\xdb\xfc\xed\x7a\xe1\xc2\xd1\x90\x23\xca\x72\xfc\x7b\xfb\x57\xa3\x3b\xdf\x55\xbc\x36\xe4\x1c\xb8\x5c\xf8\x3b\x43\x4e\x73\x20\x68\x89\x64\xa9\xdf\xca\x44\x2e\x2b\x6e\x9b\xfe\x26\xe4\x64\x1c\x93\xb2\x7a\x97\xf4\x13\x44\x10\x38\xc5\x7d\x75\x73\xf9\x3e\x7a\xb4\x30\xa7\xe7\x31\xdf\x1e\x3e\x3d\x16\xf2\xe2\x24\xdd\xa8\xe4\x9a\x35\x7d\x0c\x86\x63\x3d\x97\xc4\x40\x4f\x57\x78\x45\xb5\x93\x99\xd4\x63\x7a\xfe\xdc\xcd\xf5\xd8\x9a\x55\x2c\x8d\x73\x6c\x26\x5d\x19\x34\x35\xe9\x17\x87\x9c\xec\x17\xd6\xf7\x67\x87\x9c\xaf\x2c\xbb\xf2\x59\x21\xe7\x63\x7a\x7f\x2c\xe4\x68\xb7\xe2\xa5\x37\xdb\xf0\xa2\x29\x67\xbb\x7c\xda\x93\x45\x32\x49\xa0\x42\x9a\x75\xdd\x6e\x72\xf2\xea\x39\x93\xb2\x7e\xff\xec\xf6\x3c\xdf\x1d\x5a\x75\x5d\x9a\x4d\x27\x5c\xa3\xa1\x8e\x5f\x8a\x13\xbb\xda\x1c\x7a\xce\xb3\x5b\xf1\x1a\x99\x81\x52\x35\xb2\x46\x59\x6a\x65\x47\xca\x6b\x86\x94\xb2\x40\x18\xb8\x86\xd1\x78\xaa\xbc\xa4\x6e\x73\x8b\x9c\xc3\x00\x1b\x50\xa0\x32\x27\x89\x10\x40\x59\x16\x78\x59\x07\x54\x82\x2c\xd4\x29\x10\x88\xc9\xcb\x1c\x47\x79\x51\x02\x82\x01\x88\x2e\x22\x24\xf1\x32\xe5\xa8\x84\x31\x81\x74\x79\xfd\x89\x0f\xfb\xff\x37\x70\xf9\xe2\x31\x97\xcf\x02\x28\xc5\xd7\xc0\x57\xa3\x3b\x5f\x2a\xbf\xd6\xe5\xa7\x23\x6b\xfa\x35\x5c\x7e\xf2\x7e\x1a\xda\x60\x5a\x89\xbd\x1b\xbd\xe5\xf2\x9f\x92\xd3\x7c\xa5\x34\xcb\xf8\x4f\x4f\xc2\x08\x95\x9f\x41\x36\xfb\xce\xa6\x2b\x99\xa7\xfa\x9b\xdc\x9c\x77\x5f\x8b\xad\x4c\x51\x2b\x17\x41\x7b\x3c\x78\x74\x6a\xc5\xa1\xff\xac\x4c\xca\x36\x8f\xd2\x2f\xf7\x25\xd1\xcc\x8e\xa6\x46\xc6\x34\x0b\xf9\x46\x21\x99\x4e\x15\x53\xb5\x6e\xda\x76\xb3\x5a\xe1\x17\xbb\xfc\xaf\xac\xef\xcf\x76\xf9\x5f\x59\x76\xe5\xb3\x5c\x7e\x74\xef\xfd\x42\x97\xff\x81\x97\xf3\x5c\x7e\x3b\x27\xf9\xaa\xa8\x50\xd0\xd6\x5f\xf5\xb6\x64\x6b\xdd\x7e\xd9\x68\xa8\xc6\x4b\x2d\x03\xf5\x5c\xd2\x81\x86\x01\x15\x89\xad\x58\xa3\xda\x7d\xaf\x80\x9a\x60\x90\xe4\xee\x4d\xbb\xdd\xb0\x39\xd1\x97\x2c\x2c\xcf\x88\x2c\xcd\xfc\xfa\x2c\x5b\x2f\x80\x62\x49\x69\x52\xaf\xa7\xdc\xe8\x8b\x43\xba\x89\x00\x80\x1c\xc4\xa2\x68\x52\x1d\x63\x59\x46\x9c\xc9\x21\x96\x12\x5e\x12\x39\x59\xd6\x91\x68\x50\x19\x70\x86\x8c\x64\x41\xc4\x80\xc3\x10\x99\x48\xd2\x59\xcc\xeb\x94\x5f\x38\x58\xe1\x76\xf7\xfd\x8f\x16\x96\x38\x24\x81\xf8\x3f\x76\xb6\x1a\xdd\x79\xfb\xc7\xb5\x97\xbe\x8e\x16\x96\x2e\xaf\xbb\xa7\xd3\x8d\x46\x58\x77\x3f\xf7\xeb\x38\x09\xb6\xf8\xa2\x6d\xf1\xb3\xd7\xfc\xb6\x2e\x91\xe5\x7b\x64\x2a\xb4\x2b\xef\x5d\xff\x79\x2c\x66\x51\xae\x38\xaf\x97\x8a\x6a\xcd\x11\x46\x82\xf1\x58\x21\x6e\x2b\xed\xdb\x6a\x55\xd7\xd8\xc7\x52\xa1\xd8\xa2\x83\xc1\x23\x4b\x1d\xd0\x36\x58\xc0\x7b\x39\xfe\x7e\xde\xab\xe5\x0b\xf3\xa4\xa5\x65\x6d\x3b\x55\xf0\x5b\xe3\x62\xe3\x59\xee\x9e\xf4\x05\x82\x2d\xfd\x5d\xd4\x26\xde\xc2\x77\x1b\x7d\x5d\xbe\x5e\x0a\x79\x6f\x86\x3c\x05\x85\x96\x7d\x6e\x3e\xc8\x82\x67\xca\x97\x6d\xa3\x6e\x9e\xdb\xbf\x85\xbf\x54\xca\x2a\x1e\xe5\xef\xda\x36\xf9\x2f\xe9\xeb\x5c\xa1\xbf\x2b\xf8\xcb\x18\x70\x78\xb6\xfe\xbe\xe4\xa5\xcc\xf6\x6f\xe1\xef\x74\xfd\x7d\xcd\xbe\xdd\x4d\xf4\x77\x05\x7f\xa7\xef\xdf\xff\x27\x8a\xe9\xc1\x2d\xc5\x00\xf6\xdc\xd4\x72\x83\xff\x0a\x7f\x7a\x93\x78\xb6\x49\x95\xb7\x3f\x47\x0a\xf6\x37\xb9\xc0\x7c\x6e\xc1\xfe\xe9\x3a\xfa\x57\x16\xec\x27\x69\xf4\x38\xee\x65\x4a\x49\x30\xb2\xbd\x7e\xdb\x61\x9f\x35\x0e\x54\x4a\xfd\x57\x7d\xfc\x2e\xa7\x91\x6f\x34\x91\x51\x79\xf6\x53\xa6\xc4\xcd\x20\x11\xaa\xb5\x47\x22\xf4\x2b\xbd\x77\xb3\x36\x9a\xb9\xb6\x98\x4b\x17\xbc\xf7\x6c\xee\x59\xb1\xa8\x51\x98\x43\x3a\x80\x75\x1b\xdd\xe8\xcb\x6b\xb2\x0e\x91\x60\x20\xc4\x11\x0a\x59\x49\x94\x91\x88\x45\x96\x20\x01\x4a\x94\x43\x2c\x07\x91\x84\x01\x06\x50\x44\x1c\x61\x09\x87\x58\x49\x32\x00\x95\x0c\x91\xca\x22\x26\x00\xf0\x41\x2a\x8f\x6e\x94\xca\x1f\x2d\xd8\xf3\x80\x8b\xcf\xe4\xc3\xc1\x9d\x97\xef\x5d\x9b\xc8\x1f\x2d\xd7\x5f\xb1\x91\x96\x9f\x65\x60\xd9\x18\xea\xfe\xa3\x31\x5e\x5d\xd8\x49\x28\x10\x98\x70\x48\xde\x72\x73\x7e\xea\x4f\xb5\x17\xfe\xc9\x49\x7a\x86\x20\xbf\x65\xc1\x34\x61\xcc\x4a\x2a\x4e\x0e\xe5\xb4\x6f\xdf\xa3\x71\x23\x9d\xd7\xb5\xd6\x7b\xb2\x9e\x7d\xaf\x65\xf0\xc4\x18\x3f\xde\x23\xd6\x60\x87\x69\xec\xca\x6f\x79\xc9\xc7\x19\xbf\x94\xb8\x7f\x71\x67\x30\xd5\xfd\x79\x79\x1d\xe6\xdc\x20\xb2\x41\xfa\xe9\xba\x3b\x5c\x4f\x69\x6f\x9e\xbf\xb0\x0c\x1b\x52\xed\xcb\x75\xbe\x08\x4c\xc1\x0b\x55\x92\x1b\x22\x1f\x5e\x66\x72\xea\x75\xf0\x2b\x9d\xe9\x95\xa5\xf0\xcf\xda\x00\xb1\xce\x74\xf7\xdd\x9d\x5d\xc7\x1d\x77\x46\x56\x77\xf5\x2e\xf2\xc8\x73\x67\x3c\xa0\xf3\xd5\xbb\x30\x93\xa5\x62\xb5\x56\x51\xb2\xc5\x63\xaf\xed\x54\xf2\x35\xb5\x12\xbe\x3a\xb3\x54\xcc\xb7\xa3\x58\xff\x60\x18\x86\x51\x52\xa9\x2d\x8c\x7b\x09\x33\xe5\x4a\xb6\xa0\x54\xda\x4c\x4e\x6d\x33\x7f\x5a\x24\xf6\xcd\xa3\xcb\xd7\x89\x7b\x91\xc7\xad\x77\x95\x6f\xbd\x99\x7c\xe7\xd5\xe3\x9d\x9b\x48\xb7\x4b\x76\x9f\x70\x17\x31\xc6\xd4\x8b\x59\xad\xae\x32\x7f\x6e\xc0\x1f\x98\x0d\xfc\xea\xe7\x60\xc2\x99\xaa\xb9\xcd\xb2\x9e\x2d\xf8\x59\x8b\x1a\xf3\x17\x7f\x8f\xfc\x51\xdd\xdb\x4a\xb6\x9f\xc8\x21\x49\x0f\xb0\x75\xb2\xe4\xb1\x2f\xe5\x3d\xfa\xd6\xdb\xdb\x4a\x1f\x47\xe6\x90\xfc\x07\x59\x3b\xaa\x81\xc0\xa4\xf5\x79\x68\xd5\x2b\x51\xb2\xc5\x94\xda\x3a\x22\x45\xb2\xa2\x2a\x35\x35\x00\x8d\xe2\x61\x4a\xc5\xe8\x86\xa8\x57\xb3\xc5\x27\x46\xf7\x5d\x4a\x57\x3b\x2c\x66\x27\xe9\xf3\x4e\xf8\xb7\x50\x2f\x66\x67\x83\x62\x9b\x93\x9d\x14\x76\x97\x9f\x00\xf8\x81\x09\x7f\xe8\x78\xf4\x75\x42\x6d\x83\xee\x63\xae\x87\xbd\xde\x35\x9c\x2d\xe6\x9f\xc6\xd6\xf6\xda\x2e\x66\xed\xe3\x66\x48\x49\xf7\x8a\x85\x5b\x63\x38\x8d\xa3\x00\x76\xad\x9e\x07\x06\x8f\xc7\x43\xcb\x08\x36\xa0\xe3\x92\x18\xc7\xd8\xa1\x0b\xdb\x58\x8e\x5f\xc0\x69\xe8\x97\x03\x86\x23\xe8\xb6\xd9\xa6\xa6\x49\x8d\xa8\xa9\x7d\xf4\x13\x16\x79\x60\xbe\x2d\x27\x7f\x8b\x63\xd6\x22\x37\x62\xd3\x22\x27\x33\xb8\x32\xbd\x05\x7b\x17\x30\xed\x8c\x3b\xe3\x5b\xf1\x1d\xe2\xda\x66\x3d\x26\x38\x5c\x24\xc9\x7e\x01\xfc\xb7\xdb\x09\x10\xe2\x8a\xb1\xe9\x0b\x45\xd8\xc6\xb0\x4f\x08\x67\xbc\xb0\xca\x9e\x73\x91\x0c\x21\xf3\x1b\x1c\x97\x2a\xff\xb0\xa2\xbd\x70\xb7\x2f\x5d\xf5\xf5\xba\xde\x45\xb7\xcd\x72\xf0\xfb\x08\x8f\xfb\x39\xda\xd6\xeb\xad\xd8\xfa\x80\xf3\x34\xf7\xb6\x8f\x41\x3f\x58\x12\xff\x9a\x65\xdd\xe0\xb8\xdc\x24\x8f\x99\x9f\xef\x92\xa5\x57\x34\xcd\x2b\xc2\xc1\x0e\x96\x08\xaf\x84\x46\x38\x5b\xfd\x45\xa3\xfd\xbc\x2c\x37\x10\x75\x3b\x43\xc7\x19\x4c\xc6\xd7\x71\xb4\x8b\xeb\x18\x5f\x2b\xe8\x30\xcb\x88\xe1\x6f\x8c\x2d\xb7\xe3\x5b\x23\x7a\x13\x0e\xa3\xd8\x8e\xf1\xa8\x63\x6f\x7d\x02\x21\x0f\x4c\x94\xe5\x07\x26\xdc\x58\xc6\xd0\xf1\x28\xe9\x60\x3f\x46\x88\x1b\xec\x96\x10\xcf\x31\x8e\xcf\x8c\x49\x0b\xac\x37\xd3\xee\x19\x8a\x3d\xaa\x37\xcb\x26\xf4\xad\x13\x71\xf4\x5e\xc7\xb1\x3b\x98\x10\x97\x7a\xde\xb5\x0a\x3d\x4a\x60\x27\x3b\x0e\x87\x23\xf9\x68\x00\x78\x06\xef\xd7\xdb\xc1\x21\xdc\xc7\x39\xde\xb3\xcb\x76\x11\x86\xb9\xcf\x02\xdf\xe2\x34\x7d\xb1\x3d\x1c\xc4\x7a\x34\xd9\x5a\x00\x1d\x61\x34\x8c\x5c\x0b\x94\x6b\x23\xba\x11\xb7\xfb\x50\x1f\x0d\x9a\xa7\x5a\xf2\x16\xf2\x5b\x1b\xc3\x0e\xea\x4b\xa2\x7c\x3c\xba\xd1\xd8\x71\x17\x8e\x6f\x4a\x5d\xcf\x72\xec\xdb\x2b\x3a\x4a\xe1\x38\xfb\x91\x09\xa7\x0b\x13\xba\x9e\x0b\xcf\x87\xa7\xe9\x7f\x8b\xc6\x51\x49\xb6\x60\x4f\x17\x62\xec\xd2\xa9\xe5\x4c\xbc\x5f\x22\xcd\x3e\x62\x47\xc5\xda\x37\xe9\x74\xf9\x56\x47\xd7\x4f\x93\x69\x45\xe0\xa8\x1c\xb1\x35\x86\x5d\xd4\x9b\x3f\x5c\xf9\x19\x5b\x3b\x8a\x7d\xef\xb1\xe3\xdc\x0d\xbe\x8b\x74\x37\x71\xbd\xd1\x0e\x3f\x44\xe2\x14\x19\x8e\x64\xd3\x07\x89\xdd\x2e\x7c\x7d\x44\x7c\x12\xef\xc7\x83\xd8\xf6\x11\xe7\x33\xcc\xe6\x23\xfe\x8b\x0f\x58\xcb\x24\x6e\x1d\xc8\x57\x75\x9d\x8e\xee\x38\x83\x8b\xb5\x7c\x00\xe7\xd1\x14\xe1\xcf\x3f\x09\xf5\xb1\x35\xf4\x98\xef\xff\xf5\x5f\xcc\x9d\xe7\x0c\xc9\x56\xd7\xe0\xee\xc7\x0f\x9f\xbe\xf9\x7f\xfd\xf5\xc0\xc4\x03\x1a\x0e\x39\x0d\x30\xa8\x80\xc6\x83\xea\xce\xa4\xdb\xf3\x4f\x22\xbf\x03\x7a\x98\x81\x1d\xd0\x08\x0b\x7f\x31\xcd\x8c\x5a\x51\x03\x23\x63\x7e\x32\x2c\x7b\xa8\x6a\xbe\xc8\xbe\x77\x1f\x3b\xc1\xc1\x66\x5d\x3e\xe9\x98\x5b\x15\xf2\x74\xee\x36\x45\x72\x42\x8f\x95\xc4\xe3\x38\x61\xd2\xa5\x8a\x9a\x7d\x2a\x06\x05\xf1\x08\xc4\x5f\x4c\x45\x4d\xab\x15\xb5\x98\x54\xab\x1f\xd2\xdd\x23\xfd\x83\x58\x4d\x84\x07\xba\xdf\xae\x87\x6d\x3e\xf6\x69\x61\x75\x56\xde\xab\x83\x65\x09\xff\x7c\x0d\xac\x4f\xb5\x5f\xc1\x1c\x62\x98\xd9\xd5\xc5\x47\xa0\x1b\x1b\x45\xf4\xa0\xff\x15\x14\x12\x6f\x1a\x1f\x2a\x29\xa7\x5a\x47\xd9\xf1\xfc\xae\x4b\xab\x5a\x9e\x21\xd8\xc7\x0b\x13\x63\xc8\x64\x34\x66\x0c\x67\x34\x1e\x52\x9f\x2e\x65\xf8\xff\x03\x00\x00\xff\xff\x4f\x2b\xda\xaf\x4a\xe5\x00\x00") + +func tradesHorizonSqlBytes() ([]byte, error) { + return bindataRead( + _tradesHorizonSql, + "trades-horizon.sql", + ) +} + +func tradesHorizonSql() (*asset, error) { + bytes, err := tradesHorizonSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "trades-horizon.sql", size: 58698, mode: os.FileMode(420), modTime: time.Unix(1508958313, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +// Asset loads and returns the asset for the given name. +// It returns an error if the asset could not be found or +// could not be loaded. +func Asset(name string) ([]byte, error) { + cannonicalName := strings.Replace(name, "\\", "/", -1) + if f, ok := _bindata[cannonicalName]; ok { + a, err := f() + if err != nil { + return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err) + } + return a.bytes, nil + } + return nil, fmt.Errorf("Asset %s not found", name) +} + +// MustAsset is like Asset but panics when Asset would return an error. +// It simplifies safe initialization of global variables. +func MustAsset(name string) []byte { + a, err := Asset(name) + if err != nil { + panic("asset: Asset(" + name + "): " + err.Error()) + } + + return a +} + +// AssetInfo loads and returns the asset info for the given name. +// It returns an error if the asset could not be found or +// could not be loaded. +func AssetInfo(name string) (os.FileInfo, error) { + cannonicalName := strings.Replace(name, "\\", "/", -1) + if f, ok := _bindata[cannonicalName]; ok { + a, err := f() + if err != nil { + return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err) + } + return a.info, nil + } + return nil, fmt.Errorf("AssetInfo %s not found", name) +} + +// AssetNames returns the names of the assets. +func AssetNames() []string { + names := make([]string, 0, len(_bindata)) + for name := range _bindata { + names = append(names, name) + } + return names +} + +// _bindata is a table, holding each asset generator, mapped to its name. +var _bindata = map[string]func() (*asset, error){ + "account_merge-core.sql": account_mergeCoreSql, + "account_merge-horizon.sql": account_mergeHorizonSql, + "allow_trust-core.sql": allow_trustCoreSql, + "allow_trust-horizon.sql": allow_trustHorizonSql, + "bad_cost-core.sql": bad_costCoreSql, + "bad_cost-horizon.sql": bad_costHorizonSql, + "base-core.sql": baseCoreSql, + "base-horizon.sql": baseHorizonSql, + "blank-horizon.sql": blankHorizonSql, + "change_trust-core.sql": change_trustCoreSql, + "change_trust-horizon.sql": change_trustHorizonSql, + "kahuna-core.sql": kahunaCoreSql, + "kahuna-horizon.sql": kahunaHorizonSql, + "non_native_payment-core.sql": non_native_paymentCoreSql, + "non_native_payment-horizon.sql": non_native_paymentHorizonSql, + "order_books-core.sql": order_booksCoreSql, + "order_books-horizon.sql": order_booksHorizonSql, + "order_books_310-core.sql": order_books_310CoreSql, + "order_books_310-horizon.sql": order_books_310HorizonSql, + "pathed_payment-core.sql": pathed_paymentCoreSql, + "pathed_payment-horizon.sql": pathed_paymentHorizonSql, + "paths-core.sql": pathsCoreSql, + "paths-horizon.sql": pathsHorizonSql, + "self_send-core.sql": self_sendCoreSql, + "self_send-horizon.sql": self_sendHorizonSql, + "send_to_issuer-core.sql": send_to_issuerCoreSql, + "send_to_issuer-horizon.sql": send_to_issuerHorizonSql, + "set_options-core.sql": set_optionsCoreSql, + "set_options-horizon.sql": set_optionsHorizonSql, + "trades-core.sql": tradesCoreSql, + "trades-horizon.sql": tradesHorizonSql, +} + +// AssetDir returns the file names below a certain +// directory embedded in the file by go-bindata. +// For example if you run go-bindata on data/... and data contains the +// following hierarchy: +// data/ +// foo.txt +// img/ +// a.png +// b.png +// then AssetDir("data") would return []string{"foo.txt", "img"} +// AssetDir("data/img") would return []string{"a.png", "b.png"} +// AssetDir("foo.txt") and AssetDir("notexist") would return an error +// AssetDir("") will return []string{"data"}. +func AssetDir(name string) ([]string, error) { + node := _bintree + if len(name) != 0 { + cannonicalName := strings.Replace(name, "\\", "/", -1) + pathList := strings.Split(cannonicalName, "/") + for _, p := range pathList { + node = node.Children[p] + if node == nil { + return nil, fmt.Errorf("Asset %s not found", name) + } + } + } + if node.Func != nil { + return nil, fmt.Errorf("Asset %s not found", name) + } + rv := make([]string, 0, len(node.Children)) + for childName := range node.Children { + rv = append(rv, childName) + } + return rv, nil +} + +type bintree struct { + Func func() (*asset, error) + Children map[string]*bintree +} +var _bintree = &bintree{nil, map[string]*bintree{ + "account_merge-core.sql": &bintree{account_mergeCoreSql, map[string]*bintree{}}, + "account_merge-horizon.sql": &bintree{account_mergeHorizonSql, map[string]*bintree{}}, + "allow_trust-core.sql": &bintree{allow_trustCoreSql, map[string]*bintree{}}, + "allow_trust-horizon.sql": &bintree{allow_trustHorizonSql, map[string]*bintree{}}, + "bad_cost-core.sql": &bintree{bad_costCoreSql, map[string]*bintree{}}, + "bad_cost-horizon.sql": &bintree{bad_costHorizonSql, map[string]*bintree{}}, + "base-core.sql": &bintree{baseCoreSql, map[string]*bintree{}}, + "base-horizon.sql": &bintree{baseHorizonSql, map[string]*bintree{}}, + "blank-horizon.sql": &bintree{blankHorizonSql, map[string]*bintree{}}, + "change_trust-core.sql": &bintree{change_trustCoreSql, map[string]*bintree{}}, + "change_trust-horizon.sql": &bintree{change_trustHorizonSql, map[string]*bintree{}}, + "kahuna-core.sql": &bintree{kahunaCoreSql, map[string]*bintree{}}, + "kahuna-horizon.sql": &bintree{kahunaHorizonSql, map[string]*bintree{}}, + "non_native_payment-core.sql": &bintree{non_native_paymentCoreSql, map[string]*bintree{}}, + "non_native_payment-horizon.sql": &bintree{non_native_paymentHorizonSql, map[string]*bintree{}}, + "order_books-core.sql": &bintree{order_booksCoreSql, map[string]*bintree{}}, + "order_books-horizon.sql": &bintree{order_booksHorizonSql, map[string]*bintree{}}, + "order_books_310-core.sql": &bintree{order_books_310CoreSql, map[string]*bintree{}}, + "order_books_310-horizon.sql": &bintree{order_books_310HorizonSql, map[string]*bintree{}}, + "pathed_payment-core.sql": &bintree{pathed_paymentCoreSql, map[string]*bintree{}}, + "pathed_payment-horizon.sql": &bintree{pathed_paymentHorizonSql, map[string]*bintree{}}, + "paths-core.sql": &bintree{pathsCoreSql, map[string]*bintree{}}, + "paths-horizon.sql": &bintree{pathsHorizonSql, map[string]*bintree{}}, + "self_send-core.sql": &bintree{self_sendCoreSql, map[string]*bintree{}}, + "self_send-horizon.sql": &bintree{self_sendHorizonSql, map[string]*bintree{}}, + "send_to_issuer-core.sql": &bintree{send_to_issuerCoreSql, map[string]*bintree{}}, + "send_to_issuer-horizon.sql": &bintree{send_to_issuerHorizonSql, map[string]*bintree{}}, + "set_options-core.sql": &bintree{set_optionsCoreSql, map[string]*bintree{}}, + "set_options-horizon.sql": &bintree{set_optionsHorizonSql, map[string]*bintree{}}, + "trades-core.sql": &bintree{tradesCoreSql, map[string]*bintree{}}, + "trades-horizon.sql": &bintree{tradesHorizonSql, map[string]*bintree{}}, +}} + +// RestoreAsset restores an asset under the given directory +func RestoreAsset(dir, name string) error { + data, err := Asset(name) + if err != nil { + return err + } + info, err := AssetInfo(name) + if err != nil { + return err + } + err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755)) + if err != nil { + return err + } + err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) + if err != nil { + return err + } + err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) + if err != nil { + return err + } + return nil +} + +// RestoreAssets restores an asset under the given directory recursively +func RestoreAssets(dir, name string) error { + children, err := AssetDir(name) + // File + if err != nil { + return RestoreAsset(dir, name) + } + // Dir + for _, child := range children { + err = RestoreAssets(dir, filepath.Join(name, child)) + if err != nil { + return err + } + } + return nil +} + +func _filePath(dir, name string) string { + cannonicalName := strings.Replace(name, "\\", "/", -1) + return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) +} + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/blank-horizon.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/blank-horizon.sql new file mode 100644 index 0000000..39d6304 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/blank-horizon.sql @@ -0,0 +1,725 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; + +SET search_path = public, pg_catalog; + +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_account_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_account_id_fkey; +DROP INDEX IF EXISTS public.trade_effects_by_order_book; +DROP INDEX IF EXISTS public.index_history_transactions_on_id; +DROP INDEX IF EXISTS public.index_history_operations_on_type; +DROP INDEX IF EXISTS public.index_history_operations_on_transaction_id; +DROP INDEX IF EXISTS public.index_history_operations_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_sequence; +DROP INDEX IF EXISTS public.index_history_ledgers_on_previous_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_importer_version; +DROP INDEX IF EXISTS public.index_history_ledgers_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_closed_at; +DROP INDEX IF EXISTS public.index_history_effects_on_type; +DROP INDEX IF EXISTS public.index_history_accounts_on_id; +DROP INDEX IF EXISTS public.index_history_accounts_on_address; +DROP INDEX IF EXISTS public.htrd_time_lookup; +DROP INDEX IF EXISTS public.htrd_pid; +DROP INDEX IF EXISTS public.htrd_pair_time_lookup; +DROP INDEX IF EXISTS public.htrd_counter_lookup; +DROP INDEX IF EXISTS public.htrd_by_offer; +DROP INDEX IF EXISTS public.htp_by_htid; +DROP INDEX IF EXISTS public.hs_transaction_by_id; +DROP INDEX IF EXISTS public.hs_ledger_by_id; +DROP INDEX IF EXISTS public.hop_by_hoid; +DROP INDEX IF EXISTS public.hist_tx_p_id; +DROP INDEX IF EXISTS public.hist_op_p_id; +DROP INDEX IF EXISTS public.hist_e_id; +DROP INDEX IF EXISTS public.hist_e_by_order; +DROP INDEX IF EXISTS public.by_ledger; +DROP INDEX IF EXISTS public.by_hash; +DROP INDEX IF EXISTS public.by_account; +DROP INDEX IF EXISTS public.asset_by_issuer; +ALTER TABLE IF EXISTS ONLY public.history_transaction_participants DROP CONSTRAINT IF EXISTS history_transaction_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_operation_participants DROP CONSTRAINT IF EXISTS history_operation_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_asset_code_asset_type_asset_issuer_key; +ALTER TABLE IF EXISTS ONLY public.gorp_migrations DROP CONSTRAINT IF EXISTS gorp_migrations_pkey; +ALTER TABLE IF EXISTS public.history_transaction_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_operation_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_assets ALTER COLUMN id DROP DEFAULT; +DROP TABLE IF EXISTS public.history_transactions; +DROP SEQUENCE IF EXISTS public.history_transaction_participants_id_seq; +DROP TABLE IF EXISTS public.history_transaction_participants; +DROP TABLE IF EXISTS public.history_trades; +DROP TABLE IF EXISTS public.history_operations; +DROP SEQUENCE IF EXISTS public.history_operation_participants_id_seq; +DROP TABLE IF EXISTS public.history_operation_participants; +DROP TABLE IF EXISTS public.history_ledgers; +DROP TABLE IF EXISTS public.history_effects; +DROP SEQUENCE IF EXISTS public.history_assets_id_seq; +DROP TABLE IF EXISTS public.history_assets; +DROP TABLE IF EXISTS public.history_accounts; +DROP SEQUENCE IF EXISTS public.history_accounts_id_seq; +DROP TABLE IF EXISTS public.gorp_migrations; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: gorp_migrations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE gorp_migrations ( + id text NOT NULL, + applied_at timestamp with time zone +); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_accounts_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_accounts ( + id bigint DEFAULT nextval('history_accounts_id_seq'::regclass) NOT NULL, + address character varying(64) +); + + +-- +-- Name: history_assets; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_assets ( + id integer NOT NULL, + asset_type character varying(64) NOT NULL, + asset_code character varying(12) NOT NULL, + asset_issuer character varying(56) NOT NULL +); + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_assets_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_assets_id_seq OWNED BY history_assets.id; + + +-- +-- Name: history_effects; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_effects ( + history_account_id bigint NOT NULL, + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + type integer NOT NULL, + details jsonb +); + + +-- +-- Name: history_ledgers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_ledgers ( + sequence integer NOT NULL, + ledger_hash character varying(64) NOT NULL, + previous_ledger_hash character varying(64), + transaction_count integer DEFAULT 0 NOT NULL, + operation_count integer DEFAULT 0 NOT NULL, + closed_at timestamp without time zone NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + importer_version integer DEFAULT 1 NOT NULL, + total_coins bigint NOT NULL, + fee_pool bigint NOT NULL, + base_fee integer NOT NULL, + base_reserve integer NOT NULL, + max_tx_set_size integer NOT NULL, + protocol_version integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: history_operation_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operation_participants ( + id integer NOT NULL, + history_operation_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_operation_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_operation_participants_id_seq OWNED BY history_operation_participants.id; + + +-- +-- Name: history_operations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operations ( + id bigint NOT NULL, + transaction_id bigint NOT NULL, + application_order integer NOT NULL, + type integer NOT NULL, + details jsonb, + source_account character varying(64) DEFAULT ''::character varying NOT NULL +); + + +-- +-- Name: history_trades; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_trades ( + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + ledger_closed_at timestamp without time zone NOT NULL, + offer_id bigint NOT NULL, + base_account_id bigint NOT NULL, + base_asset_id bigint NOT NULL, + base_amount bigint NOT NULL, + counter_account_id bigint NOT NULL, + counter_asset_id bigint NOT NULL, + counter_amount bigint NOT NULL, + base_is_seller boolean, + CONSTRAINT history_trades_base_amount_check CHECK ((base_amount > 0)), + CONSTRAINT history_trades_check CHECK ((base_asset_id < counter_asset_id)), + CONSTRAINT history_trades_counter_amount_check CHECK ((counter_amount > 0)) +); + + +-- +-- Name: history_transaction_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transaction_participants ( + id integer NOT NULL, + history_transaction_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_transaction_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_transaction_participants_id_seq OWNED BY history_transaction_participants.id; + + +-- +-- Name: history_transactions; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transactions ( + transaction_hash character varying(64) NOT NULL, + ledger_sequence integer NOT NULL, + application_order integer NOT NULL, + account character varying(64) NOT NULL, + account_sequence bigint NOT NULL, + fee_paid integer NOT NULL, + operation_count integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + tx_envelope text NOT NULL, + tx_result text NOT NULL, + tx_meta text NOT NULL, + tx_fee_meta text NOT NULL, + signatures character varying(96)[] DEFAULT '{}'::character varying[] NOT NULL, + memo_type character varying DEFAULT 'none'::character varying NOT NULL, + memo character varying, + time_bounds int8range +); + + +-- +-- Name: history_assets id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets ALTER COLUMN id SET DEFAULT nextval('history_assets_id_seq'::regclass); + + +-- +-- Name: history_operation_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants ALTER COLUMN id SET DEFAULT nextval('history_operation_participants_id_seq'::regclass); + + +-- +-- Name: history_transaction_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants ALTER COLUMN id SET DEFAULT nextval('history_transaction_participants_id_seq'::regclass); + + +-- +-- Data for Name: gorp_migrations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO gorp_migrations VALUES ('1_initial_schema.sql', '2017-10-25 12:02:41.355815-07'); +INSERT INTO gorp_migrations VALUES ('2_index_participants_by_toid.sql', '2017-10-25 12:02:41.35913-07'); +INSERT INTO gorp_migrations VALUES ('3_use_sequence_in_history_accounts.sql', '2017-10-25 12:02:41.361119-07'); +INSERT INTO gorp_migrations VALUES ('4_add_protocol_version.sql', '2017-10-25 12:02:41.365998-07'); +INSERT INTO gorp_migrations VALUES ('5_create_trades_table.sql', '2017-10-25 12:02:41.370443-07'); +INSERT INTO gorp_migrations VALUES ('6_create_assets_table.sql', '2017-10-25 12:02:41.373746-07'); +INSERT INTO gorp_migrations VALUES ('7_modify_trades_table.sql', '2017-10-25 12:02:41.381902-07'); + + +-- +-- Data for Name: history_accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_accounts_id_seq', 1, false); + + +-- +-- Data for Name: history_assets; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_assets_id_seq', 1, false); + + +-- +-- Data for Name: history_effects; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: history_ledgers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: history_operation_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_operation_participants_id_seq', 1, false); + + +-- +-- Data for Name: history_operations; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: history_trades; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: history_transaction_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_transaction_participants_id_seq', 1, false); + + +-- +-- Data for Name: history_transactions; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Name: gorp_migrations gorp_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY gorp_migrations + ADD CONSTRAINT gorp_migrations_pkey PRIMARY KEY (id); + + +-- +-- Name: history_assets history_assets_asset_code_asset_type_asset_issuer_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_asset_code_asset_type_asset_issuer_key UNIQUE (asset_code, asset_type, asset_issuer); + + +-- +-- Name: history_assets history_assets_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_pkey PRIMARY KEY (id); + + +-- +-- Name: history_operation_participants history_operation_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants + ADD CONSTRAINT history_operation_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: history_transaction_participants history_transaction_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants + ADD CONSTRAINT history_transaction_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: asset_by_issuer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX asset_by_issuer ON history_assets USING btree (asset_issuer); + + +-- +-- Name: by_account; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_account ON history_transactions USING btree (account, account_sequence); + + +-- +-- Name: by_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_hash ON history_transactions USING btree (transaction_hash); + + +-- +-- Name: by_ledger; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_ledger ON history_transactions USING btree (ledger_sequence, application_order); + + +-- +-- Name: hist_e_by_order; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_by_order ON history_effects USING btree (history_operation_id, "order"); + + +-- +-- Name: hist_e_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_id ON history_effects USING btree (history_account_id, history_operation_id, "order"); + + +-- +-- Name: hist_op_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_op_p_id ON history_operation_participants USING btree (history_account_id, history_operation_id); + + +-- +-- Name: hist_tx_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_tx_p_id ON history_transaction_participants USING btree (history_account_id, history_transaction_id); + + +-- +-- Name: hop_by_hoid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX hop_by_hoid ON history_operation_participants USING btree (history_operation_id); + + +-- +-- Name: hs_ledger_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_ledger_by_id ON history_ledgers USING btree (id); + + +-- +-- Name: hs_transaction_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_transaction_by_id ON history_transactions USING btree (id); + + +-- +-- Name: htp_by_htid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htp_by_htid ON history_transaction_participants USING btree (history_transaction_id); + + +-- +-- Name: htrd_by_offer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_by_offer ON history_trades USING btree (offer_id); + + +-- +-- Name: htrd_counter_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_counter_lookup ON history_trades USING btree (counter_asset_id); + + +-- +-- Name: htrd_pair_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_pair_time_lookup ON history_trades USING btree (base_asset_id, counter_asset_id, ledger_closed_at); + + +-- +-- Name: htrd_pid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX htrd_pid ON history_trades USING btree (history_operation_id, "order"); + + +-- +-- Name: htrd_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_time_lookup ON history_trades USING btree (ledger_closed_at); + + +-- +-- Name: index_history_accounts_on_address; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_address ON history_accounts USING btree (address); + + +-- +-- Name: index_history_accounts_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_id ON history_accounts USING btree (id); + + +-- +-- Name: index_history_effects_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_effects_on_type ON history_effects USING btree (type); + + +-- +-- Name: index_history_ledgers_on_closed_at; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_closed_at ON history_ledgers USING btree (closed_at); + + +-- +-- Name: index_history_ledgers_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_id ON history_ledgers USING btree (id); + + +-- +-- Name: index_history_ledgers_on_importer_version; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_importer_version ON history_ledgers USING btree (importer_version); + + +-- +-- Name: index_history_ledgers_on_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_ledger_hash ON history_ledgers USING btree (ledger_hash); + + +-- +-- Name: index_history_ledgers_on_previous_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_previous_ledger_hash ON history_ledgers USING btree (previous_ledger_hash); + + +-- +-- Name: index_history_ledgers_on_sequence; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_sequence ON history_ledgers USING btree (sequence); + + +-- +-- Name: index_history_operations_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_operations_on_id ON history_operations USING btree (id); + + +-- +-- Name: index_history_operations_on_transaction_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_transaction_id ON history_operations USING btree (transaction_id); + + +-- +-- Name: index_history_operations_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_type ON history_operations USING btree (type); + + +-- +-- Name: index_history_transactions_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_transactions_on_id ON history_transactions USING btree (id); + + +-- +-- Name: trade_effects_by_order_book; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX trade_effects_by_order_book ON history_effects USING btree (((details ->> 'sold_asset_type'::text)), ((details ->> 'sold_asset_code'::text)), ((details ->> 'sold_asset_issuer'::text)), ((details ->> 'bought_asset_type'::text)), ((details ->> 'bought_asset_code'::text)), ((details ->> 'bought_asset_issuer'::text))) WHERE (type = 33); + + +-- +-- Name: history_trades history_trades_base_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_account_id_fkey FOREIGN KEY (base_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_base_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_asset_id_fkey FOREIGN KEY (base_asset_id) REFERENCES history_assets(id); + + +-- +-- Name: history_trades history_trades_counter_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_account_id_fkey FOREIGN KEY (counter_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_counter_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_asset_id_fkey FOREIGN KEY (counter_asset_id) REFERENCES history_assets(id); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/change_trust-core.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/change_trust-core.sql new file mode 100644 index 0000000..0fb8ddb --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/change_trust-core.sql @@ -0,0 +1,700 @@ +running recipe +recipe finished, closing ledger +ledger closed +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; +SET row_security = off; + +SET search_path = public, pg_catalog; + +DROP INDEX IF EXISTS public.signersaccount; +DROP INDEX IF EXISTS public.sellingissuerindex; +DROP INDEX IF EXISTS public.scpquorumsbyseq; +DROP INDEX IF EXISTS public.scpenvsbyseq; +DROP INDEX IF EXISTS public.priceindex; +DROP INDEX IF EXISTS public.ledgersbyseq; +DROP INDEX IF EXISTS public.histfeebyseq; +DROP INDEX IF EXISTS public.histbyseq; +DROP INDEX IF EXISTS public.buyingissuerindex; +DROP INDEX IF EXISTS public.accountbalances; +ALTER TABLE IF EXISTS ONLY public.txhistory DROP CONSTRAINT IF EXISTS txhistory_pkey; +ALTER TABLE IF EXISTS ONLY public.txfeehistory DROP CONSTRAINT IF EXISTS txfeehistory_pkey; +ALTER TABLE IF EXISTS ONLY public.trustlines DROP CONSTRAINT IF EXISTS trustlines_pkey; +ALTER TABLE IF EXISTS ONLY public.storestate DROP CONSTRAINT IF EXISTS storestate_pkey; +ALTER TABLE IF EXISTS ONLY public.signers DROP CONSTRAINT IF EXISTS signers_pkey; +ALTER TABLE IF EXISTS ONLY public.scpquorums DROP CONSTRAINT IF EXISTS scpquorums_pkey; +ALTER TABLE IF EXISTS ONLY public.pubsub DROP CONSTRAINT IF EXISTS pubsub_pkey; +ALTER TABLE IF EXISTS ONLY public.publishqueue DROP CONSTRAINT IF EXISTS publishqueue_pkey; +ALTER TABLE IF EXISTS ONLY public.peers DROP CONSTRAINT IF EXISTS peers_pkey; +ALTER TABLE IF EXISTS ONLY public.offers DROP CONSTRAINT IF EXISTS offers_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_ledgerseq_key; +ALTER TABLE IF EXISTS ONLY public.ban DROP CONSTRAINT IF EXISTS ban_pkey; +ALTER TABLE IF EXISTS ONLY public.accounts DROP CONSTRAINT IF EXISTS accounts_pkey; +ALTER TABLE IF EXISTS ONLY public.accountdata DROP CONSTRAINT IF EXISTS accountdata_pkey; +DROP TABLE IF EXISTS public.txhistory; +DROP TABLE IF EXISTS public.txfeehistory; +DROP TABLE IF EXISTS public.trustlines; +DROP TABLE IF EXISTS public.storestate; +DROP TABLE IF EXISTS public.signers; +DROP TABLE IF EXISTS public.scpquorums; +DROP TABLE IF EXISTS public.scphistory; +DROP TABLE IF EXISTS public.pubsub; +DROP TABLE IF EXISTS public.publishqueue; +DROP TABLE IF EXISTS public.peers; +DROP TABLE IF EXISTS public.offers; +DROP TABLE IF EXISTS public.ledgerheaders; +DROP TABLE IF EXISTS public.ban; +DROP TABLE IF EXISTS public.accounts; +DROP TABLE IF EXISTS public.accountdata; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: accountdata; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accountdata ( + accountid character varying(56) NOT NULL, + dataname character varying(64) NOT NULL, + datavalue character varying(112) NOT NULL, + lastmodified integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accounts ( + accountid character varying(56) NOT NULL, + balance bigint NOT NULL, + seqnum bigint NOT NULL, + numsubentries integer NOT NULL, + inflationdest character varying(56), + homedomain character varying(32) NOT NULL, + thresholds text NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT accounts_balance_check CHECK ((balance >= 0)), + CONSTRAINT accounts_numsubentries_check CHECK ((numsubentries >= 0)) +); + + +-- +-- Name: ban; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ban ( + nodeid character(56) NOT NULL +); + + +-- +-- Name: ledgerheaders; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ledgerheaders ( + ledgerhash character(64) NOT NULL, + prevhash character(64) NOT NULL, + bucketlisthash character(64) NOT NULL, + ledgerseq integer, + closetime bigint NOT NULL, + data text NOT NULL, + CONSTRAINT ledgerheaders_closetime_check CHECK ((closetime >= 0)), + CONSTRAINT ledgerheaders_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: offers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE offers ( + sellerid character varying(56) NOT NULL, + offerid bigint NOT NULL, + sellingassettype integer NOT NULL, + sellingassetcode character varying(12), + sellingissuer character varying(56), + buyingassettype integer NOT NULL, + buyingassetcode character varying(12), + buyingissuer character varying(56), + amount bigint NOT NULL, + pricen integer NOT NULL, + priced integer NOT NULL, + price double precision NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT offers_amount_check CHECK ((amount >= 0)), + CONSTRAINT offers_offerid_check CHECK ((offerid >= 0)) +); + + +-- +-- Name: peers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE peers ( + ip character varying(15) NOT NULL, + port integer DEFAULT 0 NOT NULL, + nextattempt timestamp without time zone NOT NULL, + numfailures integer DEFAULT 0 NOT NULL, + CONSTRAINT peers_numfailures_check CHECK ((numfailures >= 0)), + CONSTRAINT peers_port_check CHECK (((port > 0) AND (port <= 65535))) +); + + +-- +-- Name: publishqueue; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE publishqueue ( + ledger integer NOT NULL, + state text +); + + +-- +-- Name: pubsub; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE pubsub ( + resid character(32) NOT NULL, + lastread integer +); + + +-- +-- Name: scphistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scphistory ( + nodeid character(56) NOT NULL, + ledgerseq integer NOT NULL, + envelope text NOT NULL, + CONSTRAINT scphistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: scpquorums; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scpquorums ( + qsethash character(64) NOT NULL, + lastledgerseq integer NOT NULL, + qset text NOT NULL, + CONSTRAINT scpquorums_lastledgerseq_check CHECK ((lastledgerseq >= 0)) +); + + +-- +-- Name: signers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE signers ( + accountid character varying(56) NOT NULL, + publickey character varying(56) NOT NULL, + weight integer NOT NULL +); + + +-- +-- Name: storestate; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE storestate ( + statename character(32) NOT NULL, + state text +); + + +-- +-- Name: trustlines; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE trustlines ( + accountid character varying(56) NOT NULL, + assettype integer NOT NULL, + issuer character varying(56) NOT NULL, + assetcode character varying(12) NOT NULL, + tlimit bigint NOT NULL, + balance bigint NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT trustlines_balance_check CHECK ((balance >= 0)), + CONSTRAINT trustlines_tlimit_check CHECK ((tlimit > 0)) +); + + +-- +-- Name: txfeehistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txfeehistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txchanges text NOT NULL, + CONSTRAINT txfeehistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: txhistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txhistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txbody text NOT NULL, + txresult text NOT NULL, + txmeta text NOT NULL, + CONSTRAINT txhistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Data for Name: accountdata; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO accounts VALUES ('GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 10000000000, 8589934592, 0, NULL, '', 'AQAAAA==', 0, 2); +INSERT INTO accounts VALUES ('GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 999999979999999800, 2, 0, NULL, '', 'AQAAAA==', 0, 2); +INSERT INTO accounts VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 9999999700, 8589934595, 0, NULL, '', 'AQAAAA==', 0, 5); + + +-- +-- Data for Name: ban; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: ledgerheaders; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO ledgerheaders VALUES ('63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', '0000000000000000000000000000000000000000000000000000000000000000', '572a2e32ff248a07b0e70fd1f6d318c1facd20b6cc08c33d5775259868125a16', 1, 0, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXKi4y/ySKB7DnD9H20xjB+s0gtswIwz1XdSWYaBJaFgAAAAEN4Lazp2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAX14QAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('c7c53d35527253b7257a11162d4cbcc43dc9890f2bf95493123fe72a75fae22e', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', '69b1ded30c0c7a1fdf5306e16643da099d872904d16d9e447b1195be1e1172f0', 2, 1508958222, 'AAAACGPZj1Nu5o0bJ7W4nyOvUxG3Vpok+vFAOtC1K2M7B76Zu5H9cHd0qAsZj9Q6Y8yIIc6utkf/CO+Lm/0KbsfrzPUAAAAAWfDgDgAAAAIAAAAIAAAAAQAAAAgAAAAIAAAAAwAAJxAAAAAAP0PjS3Rf7hs8xVIBg2g8xKvqOO/n/g/XwgPR/HB7qe9psd7TDAx6H99TBuFmQ9oJnYcpBNFtnkR7EZW+HhFy8AAAAAIN4Lazp2QAAAAAAAAAAADIAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('a164997c7b07051bbce29817d32669f976f099bae83db4c8a63d7c6116f5ce4e', 'c7c53d35527253b7257a11162d4cbcc43dc9890f2bf95493123fe72a75fae22e', '7101cc0e3fe98078467524c004d873084f50213d7d12fe1d435d45fb8ead201b', 3, 1508958223, 'AAAACMfFPTVSclO3JXoRFi1MvMQ9yYkPK/lUkxI/5yp1+uIuf5viJw1D0vY80ObGswGaMaRqqsdSJBb1uiIaSkKEgwkAAAAAWfDgDwAAAAAAAAAALLKPbMojH+RR+TSBDKGB/tufH2mL12ccCHr1Jn27yPBxAcwOP+mAeEZ1JMAE2HMIT1AhPX0S/h1DXUX7jq0gGwAAAAMN4Lazp2QAAAAAAAAAAAEsAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('85f3261d4b17641111522d72d15790465e73bdfd479ece37d1a89bf49e9ecc4b', 'a164997c7b07051bbce29817d32669f976f099bae83db4c8a63d7c6116f5ce4e', 'e56efd02fe3d054467f4b0779593e8f79f9ed9ce347f6e87955a84055ae7d137', 4, 1508958224, 'AAAACKFkmXx7BwUbvOKYF9Mmafl28Jm66D20yKY9fGEW9c5OYyrvqkhaPngp1ia0yOXzxaDi4UK/WF7GZJekFW6vSpAAAAAAWfDgEAAAAAAAAAAALG1UZnCzCamYL0dOv0yVmx9sJIXQO2l+Gr9BTnPshPnlbv0C/j0FRGf0sHeVk+j3n57ZzjR/boeVWoQFWufRNwAAAAQN4Lazp2QAAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('1ae5a5404285711d7aeb9ed000acfd87981250b135fd281a5f70d484e9ce8ba3', '85f3261d4b17641111522d72d15790465e73bdfd479ece37d1a89bf49e9ecc4b', '79bf8e60d38c7ba0223fe78895d570f25c4901bfa31e84642479e595205d0706', 5, 1508958225, 'AAAACIXzJh1LF2QREVItctFXkEZec739R57ON9Gom/SensxL17U355Of33Z9bh1PZnOwfs6TXs6NGhukZynY8na8v2oAAAAAWfDgEQAAAAAAAAAAtqD7ZvGzk5mv/AtZ7AfsBkliGMVUtteUvuL+rVvYC/55v45g04x7oCI/54iV1XDyXEkBv6MehGQkeeWVIF0HBgAAAAUN4Lazp2QAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('28e3a0a8e4a50463fcf08d914b7bf07fa391b2eec243a9ff68ff215e975a156d', '1ae5a5404285711d7aeb9ed000acfd87981250b135fd281a5f70d484e9ce8ba3', '2495ad2549b289e0d8a5badf31b0899a9a010369d5a4f733d17b0effa982dd36', 6, 1508958226, 'AAAACBrlpUBChXEdeuue0ACs/YeYElCxNf0oGl9w1ITpzoujf5j3z7CT/qywHNaRXG2SlDCT+MF7YWcoZ3n60MmMOQoAAAAAWfDgEgAAAAAAAAAA3z9hmASpL9tAVxktxD3XSOp3itxSvEmM6AUkwBS4ERkkla0lSbKJ4Nilut8xsImamgEDadWk9zPRew7/qYLdNgAAAAYN4Lazp2QAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); + + +-- +-- Data for Name: offers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: peers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: publishqueue; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: pubsub; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: scphistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scphistory VALUES ('GAG3GVDULN3ATC3MDNMT6SVDNPFV3LUNUA74U5TR2CLQFPBBUHFIZS5A', 2, 'AAAAAA2zVHRbdgmLbBtZP0qja8tdro2gP8p2cdCXArwhocqMAAAAAAAAAAIAAAACAAAAAQAAAEi7kf1wd3SoCxmP1DpjzIghzq62R/8I74ub/Qpux+vM9QAAAABZ8OAOAAAAAgAAAAgAAAABAAAACAAAAAgAAAADAAAnEAAAAAAAAAABZ3lKIpgHOFdbwfxtNPns+Gra8yEVUn5yQQSNv5Gw24IAAABATLu9Xy+DQbqSanF2S5k3qVUiQF9om50oPQhTEsHzk8yFvCrpMbRGGX8MHfBVR8XWYxTCyl2g3WFneeYh8Jr9DA=='); +INSERT INTO scphistory VALUES ('GAG3GVDULN3ATC3MDNMT6SVDNPFV3LUNUA74U5TR2CLQFPBBUHFIZS5A', 3, 'AAAAAA2zVHRbdgmLbBtZP0qja8tdro2gP8p2cdCXArwhocqMAAAAAAAAAAMAAAACAAAAAQAAADB/m+InDUPS9jzQ5sazAZoxpGqqx1IkFvW6IhpKQoSDCQAAAABZ8OAPAAAAAAAAAAAAAAABZ3lKIpgHOFdbwfxtNPns+Gra8yEVUn5yQQSNv5Gw24IAAABAdHyRUtFLC+dTZUF7/3zAk8IHrgvmXaxL7rcu2h/Wo8hL5kncx5iQhWJpTaGbg4omVaDDOHHQZiS9uTUVa2jZCQ=='); +INSERT INTO scphistory VALUES ('GAG3GVDULN3ATC3MDNMT6SVDNPFV3LUNUA74U5TR2CLQFPBBUHFIZS5A', 4, 'AAAAAA2zVHRbdgmLbBtZP0qja8tdro2gP8p2cdCXArwhocqMAAAAAAAAAAQAAAACAAAAAQAAADBjKu+qSFo+eCnWJrTI5fPFoOLhQr9YXsZkl6QVbq9KkAAAAABZ8OAQAAAAAAAAAAAAAAABZ3lKIpgHOFdbwfxtNPns+Gra8yEVUn5yQQSNv5Gw24IAAABAIEgiELnjbtHpDnq/Afs49o3ZvLAJo+puL6iKiRkd+pybgu7nj0alKP3zYOscIfDi2LYuCFJzPMOdfQ/CLIkGAQ=='); +INSERT INTO scphistory VALUES ('GAG3GVDULN3ATC3MDNMT6SVDNPFV3LUNUA74U5TR2CLQFPBBUHFIZS5A', 5, 'AAAAAA2zVHRbdgmLbBtZP0qja8tdro2gP8p2cdCXArwhocqMAAAAAAAAAAUAAAACAAAAAQAAADDXtTfnk5/fdn1uHU9mc7B+zpNezo0aG6RnKdjydry/agAAAABZ8OARAAAAAAAAAAAAAAABZ3lKIpgHOFdbwfxtNPns+Gra8yEVUn5yQQSNv5Gw24IAAABA7NV/oBYiLWnZRZsSX3U34zVkUArAQVIOad96Wam41r7byjb0nuRXTDi9NPz/q1RFKwXC1aur5USglyWh4JrTCQ=='); +INSERT INTO scphistory VALUES ('GAG3GVDULN3ATC3MDNMT6SVDNPFV3LUNUA74U5TR2CLQFPBBUHFIZS5A', 6, 'AAAAAA2zVHRbdgmLbBtZP0qja8tdro2gP8p2cdCXArwhocqMAAAAAAAAAAYAAAACAAAAAQAAADB/mPfPsJP+rLAc1pFcbZKUMJP4wXthZyhnefrQyYw5CgAAAABZ8OASAAAAAAAAAAAAAAABZ3lKIpgHOFdbwfxtNPns+Gra8yEVUn5yQQSNv5Gw24IAAABAqRV1+rzaU8ThsxVhpqX7Xf+8X2aOHFVwbT/lvhYF+AY3Mo2R5oKjJvl1EXymgiTM2/tztDSujJQrln187EBIAA=='); + + +-- +-- Data for Name: scpquorums; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scpquorums VALUES ('67794a22980738575bc1fc6d34f9ecf86adaf32115527e7241048dbf91b0db82', 6, 'AAAAAQAAAAEAAAAADbNUdFt2CYtsG1k/SqNry12ujaA/ynZx0JcCvCGhyowAAAAA'); + + +-- +-- Data for Name: signers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: storestate; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO storestate VALUES ('databaseschema ', '5'); +INSERT INTO storestate VALUES ('forcescponnextlaunch ', 'false'); +INSERT INTO storestate VALUES ('lastclosedledger ', '28e3a0a8e4a50463fcf08d914b7bf07fa391b2eec243a9ff68ff215e975a156d'); +INSERT INTO storestate VALUES ('historyarchivestate ', '{ + "version": 1, + "server": "v0.6.3-66-gd66575cf", + "currentLedger": 6, + "currentBuckets": [ + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "e84353fe97afbb9e1d632a0dd946ff3ac4fce36f2e37e7a3778a86540ceb97df" + }, + { + "curr": "51e113d7e9f4d92f79c03400f24ae1c0a91013833aff460ebfc970afa280ba24", + "next": { + "state": 1, + "output": "e84353fe97afbb9e1d632a0dd946ff3ac4fce36f2e37e7a3778a86540ceb97df" + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + } + ] +}'); +INSERT INTO storestate VALUES ('lastscpdata ', 'AAAAAgAAAAANs1R0W3YJi2wbWT9Ko2vLXa6NoD/KdnHQlwK8IaHKjAAAAAAAAAAGAAAAA2d5SiKYBzhXW8H8bTT57Phq2vMhFVJ+ckEEjb+RsNuCAAAAAQAAADB/mPfPsJP+rLAc1pFcbZKUMJP4wXthZyhnefrQyYw5CgAAAABZ8OASAAAAAAAAAAAAAAABAAAAMH+Y98+wk/6ssBzWkVxtkpQwk/jBe2FnKGd5+tDJjDkKAAAAAFnw4BIAAAAAAAAAAAAAAEAgySqjd1UnML18m4g5034YJB4wBABI4H9sV8Mtv2Lck1Hs3mYkOJdP3B/z+RqqFzezLhfT24sw5jWohDyEwSYKAAAAAA2zVHRbdgmLbBtZP0qja8tdro2gP8p2cdCXArwhocqMAAAAAAAAAAYAAAACAAAAAQAAADB/mPfPsJP+rLAc1pFcbZKUMJP4wXthZyhnefrQyYw5CgAAAABZ8OASAAAAAAAAAAAAAAABZ3lKIpgHOFdbwfxtNPns+Gra8yEVUn5yQQSNv5Gw24IAAABAqRV1+rzaU8ThsxVhpqX7Xf+8X2aOHFVwbT/lvhYF+AY3Mo2R5oKjJvl1EXymgiTM2/tztDSujJQrln187EBIAAAAAAEa5aVAQoVxHXrrntAArP2HmBJQsTX9KBpfcNSE6c6LowAAAAAAAAABAAAAAQAAAAEAAAAADbNUdFt2CYtsG1k/SqNry12ujaA/ynZx0JcCvCGhyowAAAAA'); + + +-- +-- Data for Name: trustlines; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: txfeehistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txfeehistory VALUES ('db398eb4ae89756325643cad21c94e13bfc074b323ee83e141bf701a5d904f1b', 2, 1, 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('f97caffab8c16023a37884165cb0b3ff1aa2daf4000fef49d21efc847ddbfbea', 2, 2, 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/84AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('bd486dbdd02d460817671c4a5a7e9d6e865ca29cb41e62d7aaf70a2fee5b36de', 3, 1, 'AAAAAgAAAAMAAAACAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('857fd8ff2fdf3d24a6781c955d902ae100dc2715814f25e7282b2e567479c65a', 4, 1, 'AAAAAgAAAAMAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+OcAAAAAgAAAAEAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+M4AAAAAgAAAAIAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('31f210d64fced45a34ea630f944433de5f339b3480c7d3fff92f2b3426fbc594', 5, 1, 'AAAAAgAAAAMAAAAEAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+M4AAAAAgAAAAIAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+LUAAAAAgAAAAMAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); + + +-- +-- Data for Name: txhistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txhistory VALUES ('db398eb4ae89756325643cad21c94e13bfc074b323ee83e141bf701a5d904f1b', 2, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACVAvkAAAAAAAAAAABVvwF9wAAAEAYjQcPT2G5hqnBmgGGeg9J8l4c1EnUlxklElH9sqZr0971F6OLWfe/m4kpFtI+sI0i1qLit5A0JyWnbhYLW5oD', '2zmOtK6JdWMlZDytIclOE7/AdLMj7oPhQb9wGl2QTxsAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2sVNYGzgAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('f97caffab8c16023a37884165cb0b3ff1aa2daf4000fef49d21efc847ddbfbea', 2, 2, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAACVAvkAAAAAAAAAAABVvwF9wAAAEBmKpSgvrwKO20XCOfYfXsGEEUtwYaaEfqSu6ymJmlDma+IX6I7IggbUZMocQdZ94IMAfKdQANqXbIO7ysweeMC', '+Xyv+rjBYCOjeIQWXLCz/xqi2vQAD+9J0h78hH3b++oAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rv9MNzgAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('bd486dbdd02d460817671c4a5a7e9d6e865ca29cb41e62d7aaf70a2fee5b36de', 3, 1, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAGu5L5MAAAAQB9kmKW2q3v7Qfy8PMekEb1TTI5ixqkI0BogXrOt7gO162Qbkh2dSTUfeDovc0PAafhDXxthVAlsLujlBmyjBAY=', 'vUhtvdAtRggXZxxKWn6dboZcopy0HmLXqvcKL+5bNt4AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL45wAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('857fd8ff2fdf3d24a6781c955d902ae100dc2715814f25e7282b2e567479c65a', 4, 1, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAlQL5AAAAAAAAAAAAGu5L5MAAAAQFXNYQ1nN8EmRkvMcd2feWgcArIxRflch7zupcTFCkz8rBJFwobg4z+hs4Umn3TLWL5Nlr1Sf9CP8JcgGXsDSgQ=', 'hX/Y/y/fPSSmeByVXZAq4QDcJxWBTyXnKCsuVnR5xloAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAAAAAAlQL5AAAAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('31f210d64fced45a34ea630f944433de5f339b3480c7d3fff92f2b3426fbc594', 5, 1, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAAAAAAAAAAAAAAAAGu5L5MAAAAQGwsqMIzwrRIIdYGXSzgym6DUbMHrUre+JV1IWsNriIomdY3zGufZtCCV59ADJ9y165PVEFVsX457e4j0M/RWw0=', 'MfIQ1k/O1Fo06mMPlEQz3l8zmzSAx9P/+S8rNCb7xZQAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAADAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL4tQAAAACAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAAAAAAlQL5AAAAAAAQAAAAAAAAAAAAAAAgAAAAEAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7w=='); + + +-- +-- Name: accountdata accountdata_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accountdata + ADD CONSTRAINT accountdata_pkey PRIMARY KEY (accountid, dataname); + + +-- +-- Name: accounts accounts_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accounts + ADD CONSTRAINT accounts_pkey PRIMARY KEY (accountid); + + +-- +-- Name: ban ban_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ban + ADD CONSTRAINT ban_pkey PRIMARY KEY (nodeid); + + +-- +-- Name: ledgerheaders ledgerheaders_ledgerseq_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_ledgerseq_key UNIQUE (ledgerseq); + + +-- +-- Name: ledgerheaders ledgerheaders_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_pkey PRIMARY KEY (ledgerhash); + + +-- +-- Name: offers offers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY offers + ADD CONSTRAINT offers_pkey PRIMARY KEY (offerid); + + +-- +-- Name: peers peers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY peers + ADD CONSTRAINT peers_pkey PRIMARY KEY (ip, port); + + +-- +-- Name: publishqueue publishqueue_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY publishqueue + ADD CONSTRAINT publishqueue_pkey PRIMARY KEY (ledger); + + +-- +-- Name: pubsub pubsub_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY pubsub + ADD CONSTRAINT pubsub_pkey PRIMARY KEY (resid); + + +-- +-- Name: scpquorums scpquorums_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY scpquorums + ADD CONSTRAINT scpquorums_pkey PRIMARY KEY (qsethash); + + +-- +-- Name: signers signers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY signers + ADD CONSTRAINT signers_pkey PRIMARY KEY (accountid, publickey); + + +-- +-- Name: storestate storestate_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY storestate + ADD CONSTRAINT storestate_pkey PRIMARY KEY (statename); + + +-- +-- Name: trustlines trustlines_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY trustlines + ADD CONSTRAINT trustlines_pkey PRIMARY KEY (accountid, issuer, assetcode); + + +-- +-- Name: txfeehistory txfeehistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txfeehistory + ADD CONSTRAINT txfeehistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: txhistory txhistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txhistory + ADD CONSTRAINT txhistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: accountbalances; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX accountbalances ON accounts USING btree (balance) WHERE (balance >= 1000000000); + + +-- +-- Name: buyingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX buyingissuerindex ON offers USING btree (buyingissuer); + + +-- +-- Name: histbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histbyseq ON txhistory USING btree (ledgerseq); + + +-- +-- Name: histfeebyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histfeebyseq ON txfeehistory USING btree (ledgerseq); + + +-- +-- Name: ledgersbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX ledgersbyseq ON ledgerheaders USING btree (ledgerseq); + + +-- +-- Name: priceindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX priceindex ON offers USING btree (price); + + +-- +-- Name: scpenvsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpenvsbyseq ON scphistory USING btree (ledgerseq); + + +-- +-- Name: scpquorumsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpquorumsbyseq ON scpquorums USING btree (lastledgerseq); + + +-- +-- Name: sellingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX sellingissuerindex ON offers USING btree (sellingissuer); + + +-- +-- Name: signersaccount; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX signersaccount ON signers USING btree (accountid); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/change_trust-horizon.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/change_trust-horizon.sql new file mode 100644 index 0000000..fd99c94 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/change_trust-horizon.sql @@ -0,0 +1,782 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; + +SET search_path = public, pg_catalog; + +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_account_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_account_id_fkey; +DROP INDEX IF EXISTS public.trade_effects_by_order_book; +DROP INDEX IF EXISTS public.index_history_transactions_on_id; +DROP INDEX IF EXISTS public.index_history_operations_on_type; +DROP INDEX IF EXISTS public.index_history_operations_on_transaction_id; +DROP INDEX IF EXISTS public.index_history_operations_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_sequence; +DROP INDEX IF EXISTS public.index_history_ledgers_on_previous_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_importer_version; +DROP INDEX IF EXISTS public.index_history_ledgers_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_closed_at; +DROP INDEX IF EXISTS public.index_history_effects_on_type; +DROP INDEX IF EXISTS public.index_history_accounts_on_id; +DROP INDEX IF EXISTS public.index_history_accounts_on_address; +DROP INDEX IF EXISTS public.htrd_time_lookup; +DROP INDEX IF EXISTS public.htrd_pid; +DROP INDEX IF EXISTS public.htrd_pair_time_lookup; +DROP INDEX IF EXISTS public.htrd_counter_lookup; +DROP INDEX IF EXISTS public.htrd_by_offer; +DROP INDEX IF EXISTS public.htp_by_htid; +DROP INDEX IF EXISTS public.hs_transaction_by_id; +DROP INDEX IF EXISTS public.hs_ledger_by_id; +DROP INDEX IF EXISTS public.hop_by_hoid; +DROP INDEX IF EXISTS public.hist_tx_p_id; +DROP INDEX IF EXISTS public.hist_op_p_id; +DROP INDEX IF EXISTS public.hist_e_id; +DROP INDEX IF EXISTS public.hist_e_by_order; +DROP INDEX IF EXISTS public.by_ledger; +DROP INDEX IF EXISTS public.by_hash; +DROP INDEX IF EXISTS public.by_account; +DROP INDEX IF EXISTS public.asset_by_issuer; +ALTER TABLE IF EXISTS ONLY public.history_transaction_participants DROP CONSTRAINT IF EXISTS history_transaction_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_operation_participants DROP CONSTRAINT IF EXISTS history_operation_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_asset_code_asset_type_asset_issuer_key; +ALTER TABLE IF EXISTS ONLY public.gorp_migrations DROP CONSTRAINT IF EXISTS gorp_migrations_pkey; +ALTER TABLE IF EXISTS public.history_transaction_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_operation_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_assets ALTER COLUMN id DROP DEFAULT; +DROP TABLE IF EXISTS public.history_transactions; +DROP SEQUENCE IF EXISTS public.history_transaction_participants_id_seq; +DROP TABLE IF EXISTS public.history_transaction_participants; +DROP TABLE IF EXISTS public.history_trades; +DROP TABLE IF EXISTS public.history_operations; +DROP SEQUENCE IF EXISTS public.history_operation_participants_id_seq; +DROP TABLE IF EXISTS public.history_operation_participants; +DROP TABLE IF EXISTS public.history_ledgers; +DROP TABLE IF EXISTS public.history_effects; +DROP SEQUENCE IF EXISTS public.history_assets_id_seq; +DROP TABLE IF EXISTS public.history_assets; +DROP TABLE IF EXISTS public.history_accounts; +DROP SEQUENCE IF EXISTS public.history_accounts_id_seq; +DROP TABLE IF EXISTS public.gorp_migrations; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: gorp_migrations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE gorp_migrations ( + id text NOT NULL, + applied_at timestamp with time zone +); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_accounts_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_accounts ( + id bigint DEFAULT nextval('history_accounts_id_seq'::regclass) NOT NULL, + address character varying(64) +); + + +-- +-- Name: history_assets; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_assets ( + id integer NOT NULL, + asset_type character varying(64) NOT NULL, + asset_code character varying(12) NOT NULL, + asset_issuer character varying(56) NOT NULL +); + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_assets_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_assets_id_seq OWNED BY history_assets.id; + + +-- +-- Name: history_effects; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_effects ( + history_account_id bigint NOT NULL, + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + type integer NOT NULL, + details jsonb +); + + +-- +-- Name: history_ledgers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_ledgers ( + sequence integer NOT NULL, + ledger_hash character varying(64) NOT NULL, + previous_ledger_hash character varying(64), + transaction_count integer DEFAULT 0 NOT NULL, + operation_count integer DEFAULT 0 NOT NULL, + closed_at timestamp without time zone NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + importer_version integer DEFAULT 1 NOT NULL, + total_coins bigint NOT NULL, + fee_pool bigint NOT NULL, + base_fee integer NOT NULL, + base_reserve integer NOT NULL, + max_tx_set_size integer NOT NULL, + protocol_version integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: history_operation_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operation_participants ( + id integer NOT NULL, + history_operation_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_operation_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_operation_participants_id_seq OWNED BY history_operation_participants.id; + + +-- +-- Name: history_operations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operations ( + id bigint NOT NULL, + transaction_id bigint NOT NULL, + application_order integer NOT NULL, + type integer NOT NULL, + details jsonb, + source_account character varying(64) DEFAULT ''::character varying NOT NULL +); + + +-- +-- Name: history_trades; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_trades ( + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + ledger_closed_at timestamp without time zone NOT NULL, + offer_id bigint NOT NULL, + base_account_id bigint NOT NULL, + base_asset_id bigint NOT NULL, + base_amount bigint NOT NULL, + counter_account_id bigint NOT NULL, + counter_asset_id bigint NOT NULL, + counter_amount bigint NOT NULL, + base_is_seller boolean, + CONSTRAINT history_trades_base_amount_check CHECK ((base_amount > 0)), + CONSTRAINT history_trades_check CHECK ((base_asset_id < counter_asset_id)), + CONSTRAINT history_trades_counter_amount_check CHECK ((counter_amount > 0)) +); + + +-- +-- Name: history_transaction_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transaction_participants ( + id integer NOT NULL, + history_transaction_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_transaction_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_transaction_participants_id_seq OWNED BY history_transaction_participants.id; + + +-- +-- Name: history_transactions; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transactions ( + transaction_hash character varying(64) NOT NULL, + ledger_sequence integer NOT NULL, + application_order integer NOT NULL, + account character varying(64) NOT NULL, + account_sequence bigint NOT NULL, + fee_paid integer NOT NULL, + operation_count integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + tx_envelope text NOT NULL, + tx_result text NOT NULL, + tx_meta text NOT NULL, + tx_fee_meta text NOT NULL, + signatures character varying(96)[] DEFAULT '{}'::character varying[] NOT NULL, + memo_type character varying DEFAULT 'none'::character varying NOT NULL, + memo character varying, + time_bounds int8range +); + + +-- +-- Name: history_assets id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets ALTER COLUMN id SET DEFAULT nextval('history_assets_id_seq'::regclass); + + +-- +-- Name: history_operation_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants ALTER COLUMN id SET DEFAULT nextval('history_operation_participants_id_seq'::regclass); + + +-- +-- Name: history_transaction_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants ALTER COLUMN id SET DEFAULT nextval('history_transaction_participants_id_seq'::regclass); + + +-- +-- Data for Name: gorp_migrations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO gorp_migrations VALUES ('1_initial_schema.sql', '2017-10-25 12:02:41.355815-07'); +INSERT INTO gorp_migrations VALUES ('2_index_participants_by_toid.sql', '2017-10-25 12:02:41.35913-07'); +INSERT INTO gorp_migrations VALUES ('3_use_sequence_in_history_accounts.sql', '2017-10-25 12:02:41.361119-07'); +INSERT INTO gorp_migrations VALUES ('4_add_protocol_version.sql', '2017-10-25 12:02:41.365998-07'); +INSERT INTO gorp_migrations VALUES ('5_create_trades_table.sql', '2017-10-25 12:02:41.370443-07'); +INSERT INTO gorp_migrations VALUES ('6_create_assets_table.sql', '2017-10-25 12:02:41.373746-07'); +INSERT INTO gorp_migrations VALUES ('7_modify_trades_table.sql', '2017-10-25 12:02:41.381902-07'); + + +-- +-- Data for Name: history_accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_accounts VALUES (1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_accounts VALUES (2, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); +INSERT INTO history_accounts VALUES (3, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_accounts_id_seq', 3, true); + + +-- +-- Data for Name: history_assets; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_assets_id_seq', 1, false); + + +-- +-- Data for Name: history_effects; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_effects VALUES (2, 8589938689, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589938689, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (2, 8589938689, 3, 10, '{"weight": 1, "public_key": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (3, 8589942785, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589942785, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (3, 8589942785, 3, 10, '{"weight": 1, "public_key": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU"}'); +INSERT INTO history_effects VALUES (3, 12884905985, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (3, 17179873281, 1, 22, '{"limit": "4000.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (3, 21474840577, 1, 21, '{"limit": "0.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); + + +-- +-- Data for Name: history_ledgers; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_ledgers VALUES (1, '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', NULL, 0, 0, '1970-01-01 00:00:00', '2017-10-25 19:03:45.078194', '2017-10-25 19:03:45.078194', 4294967296, 10, 1000000000000000000, 0, 100, 100000000, 100, 0); +INSERT INTO history_ledgers VALUES (2, 'c7c53d35527253b7257a11162d4cbcc43dc9890f2bf95493123fe72a75fae22e', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', 2, 2, '2017-10-25 19:03:42', '2017-10-25 19:03:45.090355', '2017-10-25 19:03:45.090355', 8589934592, 10, 1000000000000000000, 200, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (3, 'a164997c7b07051bbce29817d32669f976f099bae83db4c8a63d7c6116f5ce4e', 'c7c53d35527253b7257a11162d4cbcc43dc9890f2bf95493123fe72a75fae22e', 1, 1, '2017-10-25 19:03:43', '2017-10-25 19:03:45.119947', '2017-10-25 19:03:45.119947', 12884901888, 10, 1000000000000000000, 300, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (4, '85f3261d4b17641111522d72d15790465e73bdfd479ece37d1a89bf49e9ecc4b', 'a164997c7b07051bbce29817d32669f976f099bae83db4c8a63d7c6116f5ce4e', 1, 1, '2017-10-25 19:03:44', '2017-10-25 19:03:45.130822', '2017-10-25 19:03:45.130822', 17179869184, 10, 1000000000000000000, 400, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (5, '1ae5a5404285711d7aeb9ed000acfd87981250b135fd281a5f70d484e9ce8ba3', '85f3261d4b17641111522d72d15790465e73bdfd479ece37d1a89bf49e9ecc4b', 1, 1, '2017-10-25 19:03:45', '2017-10-25 19:03:45.142073', '2017-10-25 19:03:45.142073', 21474836480, 10, 1000000000000000000, 500, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (6, '28e3a0a8e4a50463fcf08d914b7bf07fa391b2eec243a9ff68ff215e975a156d', '1ae5a5404285711d7aeb9ed000acfd87981250b135fd281a5f70d484e9ce8ba3', 0, 0, '2017-10-25 19:03:46', '2017-10-25 19:03:45.150922', '2017-10-25 19:03:45.150922', 25769803776, 10, 1000000000000000000, 500, 100, 100000000, 10000, 8); + + +-- +-- Data for Name: history_operation_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operation_participants VALUES (1, 8589938689, 1); +INSERT INTO history_operation_participants VALUES (2, 8589938689, 2); +INSERT INTO history_operation_participants VALUES (3, 8589942785, 1); +INSERT INTO history_operation_participants VALUES (4, 8589942785, 3); +INSERT INTO history_operation_participants VALUES (5, 12884905985, 3); +INSERT INTO history_operation_participants VALUES (6, 17179873281, 3); +INSERT INTO history_operation_participants VALUES (7, 21474840577, 3); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_operation_participants_id_seq', 7, true); + + +-- +-- Data for Name: history_operations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operations VALUES (8589938689, 8589938688, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (8589942785, 8589942784, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (12884905985, 12884905984, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "trustor": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (17179873281, 17179873280, 1, 6, '{"limit": "4000.0000000", "trustee": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "trustor": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474840577, 21474840576, 1, 6, '{"limit": "0.0000000", "trustee": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "trustor": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); + + +-- +-- Data for Name: history_trades; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: history_transaction_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transaction_participants VALUES (1, 8589938688, 1); +INSERT INTO history_transaction_participants VALUES (2, 8589938688, 2); +INSERT INTO history_transaction_participants VALUES (3, 8589942784, 1); +INSERT INTO history_transaction_participants VALUES (4, 8589942784, 3); +INSERT INTO history_transaction_participants VALUES (5, 12884905984, 3); +INSERT INTO history_transaction_participants VALUES (6, 17179873280, 3); +INSERT INTO history_transaction_participants VALUES (7, 21474840576, 3); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_transaction_participants_id_seq', 7, true); + + +-- +-- Data for Name: history_transactions; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transactions VALUES ('db398eb4ae89756325643cad21c94e13bfc074b323ee83e141bf701a5d904f1b', 2, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 1, 100, 1, '2017-10-25 19:03:45.090964', '2017-10-25 19:03:45.090964', 8589938688, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACVAvkAAAAAAAAAAABVvwF9wAAAEAYjQcPT2G5hqnBmgGGeg9J8l4c1EnUlxklElH9sqZr0971F6OLWfe/m4kpFtI+sI0i1qLit5A0JyWnbhYLW5oD', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2sVNYGzgAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{GI0HD09huYapwZoBhnoPSfJeHNRJ1JcZJRJR/bKma9Pe9Reji1n3v5uJKRbSPrCNItai4reQNCclp24WC1uaAw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('f97caffab8c16023a37884165cb0b3ff1aa2daf4000fef49d21efc847ddbfbea', 2, 2, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 2, 100, 1, '2017-10-25 19:03:45.104571', '2017-10-25 19:03:45.104571', 8589942784, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAACVAvkAAAAAAAAAAABVvwF9wAAAEBmKpSgvrwKO20XCOfYfXsGEEUtwYaaEfqSu6ymJmlDma+IX6I7IggbUZMocQdZ94IMAfKdQANqXbIO7ysweeMC', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rv9MNzgAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/84AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{ZiqUoL68CjttFwjn2H17BhBFLcGGmhH6kruspiZpQ5mviF+iOyIIG1GTKHEHWfeCDAHynUADal2yDu8rMHnjAg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('bd486dbdd02d460817671c4a5a7e9d6e865ca29cb41e62d7aaf70a2fee5b36de', 3, 1, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934593, 100, 1, '2017-10-25 19:03:45.120518', '2017-10-25 19:03:45.120519', 12884905984, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAGu5L5MAAAAQB9kmKW2q3v7Qfy8PMekEb1TTI5ixqkI0BogXrOt7gO162Qbkh2dSTUfeDovc0PAafhDXxthVAlsLujlBmyjBAY=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL45wAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{H2SYpbare/tB/Lw8x6QRvVNMjmLGqQjQGiBes63uA7XrZBuSHZ1JNR94Oi9zQ8Bp+ENfG2FUCWwu6OUGbKMEBg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('857fd8ff2fdf3d24a6781c955d902ae100dc2715814f25e7282b2e567479c65a', 4, 1, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934594, 100, 1, '2017-10-25 19:03:45.131384', '2017-10-25 19:03:45.131384', 17179873280, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAlQL5AAAAAAAAAAAAGu5L5MAAAAQFXNYQ1nN8EmRkvMcd2feWgcArIxRflch7zupcTFCkz8rBJFwobg4z+hs4Umn3TLWL5Nlr1Sf9CP8JcgGXsDSgQ=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAAAAAAlQL5AAAAAAAQAAAAAAAAAA', 'AAAAAgAAAAMAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+OcAAAAAgAAAAEAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+M4AAAAAgAAAAIAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{Vc1hDWc3wSZGS8xx3Z95aBwCsjFF+VyHvO6lxMUKTPysEkXChuDjP6GzhSafdMtYvk2WvVJ/0I/wlyAZewNKBA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('31f210d64fced45a34ea630f944433de5f339b3480c7d3fff92f2b3426fbc594', 5, 1, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934595, 100, 1, '2017-10-25 19:03:45.142691', '2017-10-25 19:03:45.142692', 21474840576, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAAAAAAAAAAAAAAAAGu5L5MAAAAQGwsqMIzwrRIIdYGXSzgym6DUbMHrUre+JV1IWsNriIomdY3zGufZtCCV59ADJ9y165PVEFVsX457e4j0M/RWw0=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAADAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL4tQAAAACAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAAAAAAlQL5AAAAAAAQAAAAAAAAAAAAAAAgAAAAEAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7w==', 'AAAAAgAAAAMAAAAEAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+M4AAAAAgAAAAIAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+LUAAAAAgAAAAMAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{bCyowjPCtEgh1gZdLODKboNRswetSt74lXUhaw2uIiiZ1jfMa59m0IJXn0AMn3LXrk9UQVWxfjnt7iPQz9FbDQ==}', 'none', NULL, NULL); + + +-- +-- Name: gorp_migrations gorp_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY gorp_migrations + ADD CONSTRAINT gorp_migrations_pkey PRIMARY KEY (id); + + +-- +-- Name: history_assets history_assets_asset_code_asset_type_asset_issuer_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_asset_code_asset_type_asset_issuer_key UNIQUE (asset_code, asset_type, asset_issuer); + + +-- +-- Name: history_assets history_assets_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_pkey PRIMARY KEY (id); + + +-- +-- Name: history_operation_participants history_operation_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants + ADD CONSTRAINT history_operation_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: history_transaction_participants history_transaction_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants + ADD CONSTRAINT history_transaction_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: asset_by_issuer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX asset_by_issuer ON history_assets USING btree (asset_issuer); + + +-- +-- Name: by_account; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_account ON history_transactions USING btree (account, account_sequence); + + +-- +-- Name: by_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_hash ON history_transactions USING btree (transaction_hash); + + +-- +-- Name: by_ledger; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_ledger ON history_transactions USING btree (ledger_sequence, application_order); + + +-- +-- Name: hist_e_by_order; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_by_order ON history_effects USING btree (history_operation_id, "order"); + + +-- +-- Name: hist_e_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_id ON history_effects USING btree (history_account_id, history_operation_id, "order"); + + +-- +-- Name: hist_op_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_op_p_id ON history_operation_participants USING btree (history_account_id, history_operation_id); + + +-- +-- Name: hist_tx_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_tx_p_id ON history_transaction_participants USING btree (history_account_id, history_transaction_id); + + +-- +-- Name: hop_by_hoid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX hop_by_hoid ON history_operation_participants USING btree (history_operation_id); + + +-- +-- Name: hs_ledger_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_ledger_by_id ON history_ledgers USING btree (id); + + +-- +-- Name: hs_transaction_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_transaction_by_id ON history_transactions USING btree (id); + + +-- +-- Name: htp_by_htid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htp_by_htid ON history_transaction_participants USING btree (history_transaction_id); + + +-- +-- Name: htrd_by_offer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_by_offer ON history_trades USING btree (offer_id); + + +-- +-- Name: htrd_counter_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_counter_lookup ON history_trades USING btree (counter_asset_id); + + +-- +-- Name: htrd_pair_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_pair_time_lookup ON history_trades USING btree (base_asset_id, counter_asset_id, ledger_closed_at); + + +-- +-- Name: htrd_pid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX htrd_pid ON history_trades USING btree (history_operation_id, "order"); + + +-- +-- Name: htrd_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_time_lookup ON history_trades USING btree (ledger_closed_at); + + +-- +-- Name: index_history_accounts_on_address; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_address ON history_accounts USING btree (address); + + +-- +-- Name: index_history_accounts_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_id ON history_accounts USING btree (id); + + +-- +-- Name: index_history_effects_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_effects_on_type ON history_effects USING btree (type); + + +-- +-- Name: index_history_ledgers_on_closed_at; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_closed_at ON history_ledgers USING btree (closed_at); + + +-- +-- Name: index_history_ledgers_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_id ON history_ledgers USING btree (id); + + +-- +-- Name: index_history_ledgers_on_importer_version; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_importer_version ON history_ledgers USING btree (importer_version); + + +-- +-- Name: index_history_ledgers_on_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_ledger_hash ON history_ledgers USING btree (ledger_hash); + + +-- +-- Name: index_history_ledgers_on_previous_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_previous_ledger_hash ON history_ledgers USING btree (previous_ledger_hash); + + +-- +-- Name: index_history_ledgers_on_sequence; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_sequence ON history_ledgers USING btree (sequence); + + +-- +-- Name: index_history_operations_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_operations_on_id ON history_operations USING btree (id); + + +-- +-- Name: index_history_operations_on_transaction_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_transaction_id ON history_operations USING btree (transaction_id); + + +-- +-- Name: index_history_operations_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_type ON history_operations USING btree (type); + + +-- +-- Name: index_history_transactions_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_transactions_on_id ON history_transactions USING btree (id); + + +-- +-- Name: trade_effects_by_order_book; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX trade_effects_by_order_book ON history_effects USING btree (((details ->> 'sold_asset_type'::text)), ((details ->> 'sold_asset_code'::text)), ((details ->> 'sold_asset_issuer'::text)), ((details ->> 'bought_asset_type'::text)), ((details ->> 'bought_asset_code'::text)), ((details ->> 'bought_asset_issuer'::text))) WHERE (type = 33); + + +-- +-- Name: history_trades history_trades_base_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_account_id_fkey FOREIGN KEY (base_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_base_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_asset_id_fkey FOREIGN KEY (base_asset_id) REFERENCES history_assets(id); + + +-- +-- Name: history_trades history_trades_counter_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_account_id_fkey FOREIGN KEY (counter_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_counter_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_asset_id_fkey FOREIGN KEY (counter_asset_id) REFERENCES history_assets(id); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/change_trust.rb b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/change_trust.rb new file mode 100644 index 0000000..4f8bbf0 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/change_trust.rb @@ -0,0 +1,12 @@ +run_recipe File.dirname(__FILE__) + "/_common_accounts.rb" + +use_manual_close + +create_account :usd_gateway +create_account :scott + +close_ledger + +trust :scott, :usd_gateway, "USD" ; close_ledger +change_trust :scott, :usd_gateway, "USD", 4000 ; close_ledger +change_trust :scott, :usd_gateway, "USD", 0 ; close_ledger diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/kahuna-core.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/kahuna-core.sql new file mode 100644 index 0000000..359d064 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/kahuna-core.sql @@ -0,0 +1,989 @@ +running recipe +recipe finished, closing ledger +ledger closed +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; +SET row_security = off; + +SET search_path = public, pg_catalog; + +DROP INDEX IF EXISTS public.signersaccount; +DROP INDEX IF EXISTS public.sellingissuerindex; +DROP INDEX IF EXISTS public.scpquorumsbyseq; +DROP INDEX IF EXISTS public.scpenvsbyseq; +DROP INDEX IF EXISTS public.priceindex; +DROP INDEX IF EXISTS public.ledgersbyseq; +DROP INDEX IF EXISTS public.histfeebyseq; +DROP INDEX IF EXISTS public.histbyseq; +DROP INDEX IF EXISTS public.buyingissuerindex; +DROP INDEX IF EXISTS public.accountbalances; +ALTER TABLE IF EXISTS ONLY public.txhistory DROP CONSTRAINT IF EXISTS txhistory_pkey; +ALTER TABLE IF EXISTS ONLY public.txfeehistory DROP CONSTRAINT IF EXISTS txfeehistory_pkey; +ALTER TABLE IF EXISTS ONLY public.trustlines DROP CONSTRAINT IF EXISTS trustlines_pkey; +ALTER TABLE IF EXISTS ONLY public.storestate DROP CONSTRAINT IF EXISTS storestate_pkey; +ALTER TABLE IF EXISTS ONLY public.signers DROP CONSTRAINT IF EXISTS signers_pkey; +ALTER TABLE IF EXISTS ONLY public.scpquorums DROP CONSTRAINT IF EXISTS scpquorums_pkey; +ALTER TABLE IF EXISTS ONLY public.pubsub DROP CONSTRAINT IF EXISTS pubsub_pkey; +ALTER TABLE IF EXISTS ONLY public.publishqueue DROP CONSTRAINT IF EXISTS publishqueue_pkey; +ALTER TABLE IF EXISTS ONLY public.peers DROP CONSTRAINT IF EXISTS peers_pkey; +ALTER TABLE IF EXISTS ONLY public.offers DROP CONSTRAINT IF EXISTS offers_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_ledgerseq_key; +ALTER TABLE IF EXISTS ONLY public.ban DROP CONSTRAINT IF EXISTS ban_pkey; +ALTER TABLE IF EXISTS ONLY public.accounts DROP CONSTRAINT IF EXISTS accounts_pkey; +ALTER TABLE IF EXISTS ONLY public.accountdata DROP CONSTRAINT IF EXISTS accountdata_pkey; +DROP TABLE IF EXISTS public.txhistory; +DROP TABLE IF EXISTS public.txfeehistory; +DROP TABLE IF EXISTS public.trustlines; +DROP TABLE IF EXISTS public.storestate; +DROP TABLE IF EXISTS public.signers; +DROP TABLE IF EXISTS public.scpquorums; +DROP TABLE IF EXISTS public.scphistory; +DROP TABLE IF EXISTS public.pubsub; +DROP TABLE IF EXISTS public.publishqueue; +DROP TABLE IF EXISTS public.peers; +DROP TABLE IF EXISTS public.offers; +DROP TABLE IF EXISTS public.ledgerheaders; +DROP TABLE IF EXISTS public.ban; +DROP TABLE IF EXISTS public.accounts; +DROP TABLE IF EXISTS public.accountdata; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: accountdata; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accountdata ( + accountid character varying(56) NOT NULL, + dataname character varying(64) NOT NULL, + datavalue character varying(112) NOT NULL, + lastmodified integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accounts ( + accountid character varying(56) NOT NULL, + balance bigint NOT NULL, + seqnum bigint NOT NULL, + numsubentries integer NOT NULL, + inflationdest character varying(56), + homedomain character varying(32) NOT NULL, + thresholds text NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT accounts_balance_check CHECK ((balance >= 0)), + CONSTRAINT accounts_numsubentries_check CHECK ((numsubentries >= 0)) +); + + +-- +-- Name: ban; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ban ( + nodeid character(56) NOT NULL +); + + +-- +-- Name: ledgerheaders; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ledgerheaders ( + ledgerhash character(64) NOT NULL, + prevhash character(64) NOT NULL, + bucketlisthash character(64) NOT NULL, + ledgerseq integer, + closetime bigint NOT NULL, + data text NOT NULL, + CONSTRAINT ledgerheaders_closetime_check CHECK ((closetime >= 0)), + CONSTRAINT ledgerheaders_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: offers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE offers ( + sellerid character varying(56) NOT NULL, + offerid bigint NOT NULL, + sellingassettype integer NOT NULL, + sellingassetcode character varying(12), + sellingissuer character varying(56), + buyingassettype integer NOT NULL, + buyingassetcode character varying(12), + buyingissuer character varying(56), + amount bigint NOT NULL, + pricen integer NOT NULL, + priced integer NOT NULL, + price double precision NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT offers_amount_check CHECK ((amount >= 0)), + CONSTRAINT offers_offerid_check CHECK ((offerid >= 0)) +); + + +-- +-- Name: peers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE peers ( + ip character varying(15) NOT NULL, + port integer DEFAULT 0 NOT NULL, + nextattempt timestamp without time zone NOT NULL, + numfailures integer DEFAULT 0 NOT NULL, + CONSTRAINT peers_numfailures_check CHECK ((numfailures >= 0)), + CONSTRAINT peers_port_check CHECK (((port > 0) AND (port <= 65535))) +); + + +-- +-- Name: publishqueue; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE publishqueue ( + ledger integer NOT NULL, + state text +); + + +-- +-- Name: pubsub; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE pubsub ( + resid character(32) NOT NULL, + lastread integer +); + + +-- +-- Name: scphistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scphistory ( + nodeid character(56) NOT NULL, + ledgerseq integer NOT NULL, + envelope text NOT NULL, + CONSTRAINT scphistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: scpquorums; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scpquorums ( + qsethash character(64) NOT NULL, + lastledgerseq integer NOT NULL, + qset text NOT NULL, + CONSTRAINT scpquorums_lastledgerseq_check CHECK ((lastledgerseq >= 0)) +); + + +-- +-- Name: signers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE signers ( + accountid character varying(56) NOT NULL, + publickey character varying(56) NOT NULL, + weight integer NOT NULL +); + + +-- +-- Name: storestate; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE storestate ( + statename character(32) NOT NULL, + state text +); + + +-- +-- Name: trustlines; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE trustlines ( + accountid character varying(56) NOT NULL, + assettype integer NOT NULL, + issuer character varying(56) NOT NULL, + assetcode character varying(12) NOT NULL, + tlimit bigint NOT NULL, + balance bigint NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT trustlines_balance_check CHECK ((balance >= 0)), + CONSTRAINT trustlines_tlimit_check CHECK ((tlimit > 0)) +); + + +-- +-- Name: txfeehistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txfeehistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txchanges text NOT NULL, + CONSTRAINT txfeehistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: txhistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txhistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txbody text NOT NULL, + txresult text NOT NULL, + txmeta text NOT NULL, + CONSTRAINT txhistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Data for Name: accountdata; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO accountdata VALUES ('GAYSCMKQY6EYLXOPTT6JPPOXDMVNBWITPTSZIVWW4LWARVBOTH5RTLAD', 'name ', 'aXRzIGdvdCBzcGFjZXMh', 49); +INSERT INTO accountdata VALUES ('GAYSCMKQY6EYLXOPTT6JPPOXDMVNBWITPTSZIVWW4LWARVBOTH5RTLAD', 'name1', 'MDAwMA==', 52); + + +-- +-- Data for Name: accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO accounts VALUES ('GAXI33UCLQTCKM2NMRBS7XYBR535LLEVAHL5YBN4FTCB4HZHT7ZA5CVK', 10000000000, 12884901888, 0, NULL, '', 'AQAAAA==', 0, 3); +INSERT INTO accounts VALUES ('GANZGPKY5WSHWG5YOZMNG52GCK5SCJ4YGUWMJJVGZSK2FP4BI2JIJN2C', 10099999900, 55834574849, 1, NULL, '', 'AQAAAA==', 0, 14); +INSERT INTO accounts VALUES ('GCHC4D2CS45CJRNN4QAHT2LFZAJIU5PA7H53K3VOP6WEJ6XWHNSNZKQG', 9899999800, 55834574850, 0, NULL, '', 'AQAAAA==', 0, 15); +INSERT INTO accounts VALUES ('GDXFAGJCSCI4CK2YHK6YRLA6TKEXFRX7BMGVMQOBMLIEUJRJ5YQNLMIB', 9999999600, 17179869188, 1, NULL, '', 'AgICAg==', 0, 6); +INSERT INTO accounts VALUES ('GA46VRKBCLI2X6DXLX7AIEVRFLH3UA7XBE3NGNP6O74HQ5LXHMGTV2JB', 9959999600, 30064771076, 0, NULL, '', 'AQAAAA==', 0, 8); +INSERT INTO accounts VALUES ('GAG52TW6QAB6TGNMOTL32Y4M3UQQLNNNHPEHYAIYRP6SFF6ZAVRF5ZQY', 9799999800, 38654705665, 0, NULL, '', 'AQAAAA==', 0, 10); +INSERT INTO accounts VALUES ('GDCVTBGSEEU7KLXUMHMSXBALXJ2T4I2KOPXW2S5TRLKDRIAXD5UDHAYO', 9499999900, 47244640257, 0, NULL, '', 'AQAAAA==', 0, 12); +INSERT INTO accounts VALUES ('GCB7FPYGLL6RJ37HKRAYW5TAWMFBGGFGM4IM6ERBCZXI2BZ4OOOX2UAY', 500000000, 51539607552, 0, NULL, '', 'AQAAAA==', 0, 12); +INSERT INTO accounts VALUES ('GBOK7BOUSOWPHBANBYM6MIRYZJIDIPUYJPXHTHADF75UEVIVYWHHONQC', 9799999800, 90194313218, 1, NULL, '', 'AQAAAA==', 0, 24); +INSERT INTO accounts VALUES ('GACAR2AEYEKITE2LKI5RMXF5MIVZ6Q7XILROGDT22O7JX4DSWFS7FDDP', 9999999900, 68719476737, 1, NULL, '', 'AQAAAA==', 0, 17); +INSERT INTO accounts VALUES ('GB2QIYT2IAUFMRXKLSLLPRECC6OCOGJMADSPTRK7TGNT2SFR2YGWDARD', 10199999900, 90194313217, 1, NULL, '', 'AQAAAA==', 0, 24); +INSERT INTO accounts VALUES ('GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU', 10999999700, 68719476739, 1, NULL, '', 'AQAAAA==', 0, 20); +INSERT INTO accounts VALUES ('GDRW375MAYR46ODGF2WGANQC2RRZL7O246DYHHCGWTV2RE7IHE2QUQLD', 8999999700, 68719476739, 1, NULL, '', 'AQAAAA==', 0, 20); +INSERT INTO accounts VALUES ('GB6GN3LJUW6JYR7EDOJ47VBH7D45M4JWHXGK6LHJRAEI5JBSN2DBQY7Q', 9999999800, 107374182402, 2, NULL, '', 'AQAAAA==', 0, 26); +INSERT INTO accounts VALUES ('GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES', 9999998800, 115964117004, 0, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 'example.com', 'AgACAg==', 0, 32); +INSERT INTO accounts VALUES ('GCJKJXPKBFIHOO3455WXWG5CDBZXQNYFRRGICYMPUQ35CPQ4WVS3KZLG', 9999999600, 141733920772, 0, NULL, '', 'AQAAAA==', 0, 37); +INSERT INTO accounts VALUES ('GCVW5LCRZFP7PENXTAGOVIQXADDNUXXZJCNKF4VQB2IK7W2LPJWF73UG', 9999999800, 163208757250, 2, NULL, '', 'AQAAAA==', 0, 40); +INSERT INTO accounts VALUES ('GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF', 9999999600, 163208757252, 0, NULL, '', 'AQAAAA==', 3, 42); +INSERT INTO accounts VALUES ('GDR53WAEIKOU3ZKN34CSHAWH7HV6K63CBJRUTWUDBFSMY7RRQK3SPKOS', 200038144200001319, 193273528321, 0, 'GDR53WAEIKOU3ZKN34CSHAWH7HV6K63CBJRUTWUDBFSMY7RRQK3SPKOS', '', 'AQAAAA==', 0, 47); +INSERT INTO accounts VALUES ('GAYSCMKQY6EYLXOPTT6JPPOXDMVNBWITPTSZIVWW4LWARVBOTH5RTLAD', 9999999400, 206158430214, 2, NULL, '', 'AQAAAA==', 0, 52); +INSERT INTO accounts VALUES ('GACJPE4YUR22VP4CM2BDFDAHY3DLEF3H7NENKUQ53DT5TEI2GAHT5N4X', 10000000000, 227633266688, 0, NULL, '', 'AQAAAA==', 0, 54); +INSERT INTO accounts VALUES ('GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 800152377009533392, 25, 0, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', '', 'AQAAAA==', 0, 55); +INSERT INTO accounts VALUES ('GANFZDRBCNTUXIODCJEYMACPMCSZEVE4WZGZ3CZDZ3P2SXK4KH75IK6Y', 9999999900, 236223201281, 0, NULL, '', 'AQAAAA==', 0, 56); + + +-- +-- Data for Name: ban; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: ledgerheaders; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO ledgerheaders VALUES ('63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', '0000000000000000000000000000000000000000000000000000000000000000', '572a2e32ff248a07b0e70fd1f6d318c1facd20b6cc08c33d5775259868125a16', 1, 0, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXKi4y/ySKB7DnD9H20xjB+s0gtswIwz1XdSWYaBJaFgAAAAEN4Lazp2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAX14QAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('a486dcac961175ec4da4630992ecf7fe3392cf0834964a5ec9f15d6295fa2f35', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', '735227ed398461291237687b08446aa2c9b096e0c98a462dadda569f05dd2484', 2, 1508958228, 'AAAACGPZj1Nu5o0bJ7W4nyOvUxG3Vpok+vFAOtC1K2M7B76ZuZRHr9UdXKbTKiclfOjy72YZFJUkJPVcKT5htvorm1QAAAAAWfDgFAAAAAIAAAAIAAAAAQAAAAgAAAAIAAAAAwAAJxAAAAAA3z9hmASpL9tAVxktxD3XSOp3itxSvEmM6AUkwBS4ERlzUiftOYRhKRI3aHsIRGqiybCW4MmKRi2t2lafBd0khAAAAAIN4Lazp2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('106bb13cd6a438e77dd27181eb048c2316bd8fa377f69febeb753d5b86da823f', 'a486dcac961175ec4da4630992ecf7fe3392cf0834964a5ec9f15d6295fa2f35', '20152c0cf56a4d6052543eb7c6d403d5a94b255af3a67a69dfe5c37d79a1b632', 3, 1508958229, 'AAAACKSG3KyWEXXsTaRjCZLs9/4zks8INJZKXsnxXWKV+i81RUsMpsGf16awN2fwx8KqHnVVR1HrReWCE6dDTEeFtaQAAAAAWfDgFQAAAAAAAAAAZTJXylqAKscpSC5cC1USBOQW1Z3eZDL/jbC3qM+wVn4gFSwM9WpNYFJUPrfG1APVqUslWvOmemnf5cN9eaG2MgAAAAMN4Lazp2QAAAAAAAAAAABkAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('d1dda9941f42acf2a76a9a9307c58658c3186523bf166d79385215e3863cef8f', '106bb13cd6a438e77dd27181eb048c2316bd8fa377f69febeb753d5b86da823f', '8be5d143c32720ed0325a6f350fe391fd4de4414b1822699ef5790ee5a3fb830', 4, 1508958230, 'AAAACBBrsTzWpDjnfdJxgesEjCMWvY+jd/af6+t1PVuG2oI/Y3vAkb+3+bFmByJYx5oBlkqFmCvSZmsWubJy12UtfbIAAAAAWfDgFgAAAAAAAAAAI8FeHEzJ0/4FO8/NG/43wTEny1CW/vcH2jcrQkzbbciL5dFDwycg7QMlpvNQ/jkf1N5EFLGCJpnvV5DuWj+4MAAAAAQN4Lazp2QAAAAAAAAAAADIAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('c2c96120635b889940819a9671bf9d1a2711ea631f9ace627039ebc0dca27b65', 'd1dda9941f42acf2a76a9a9307c58658c3186523bf166d79385215e3863cef8f', '58c7de194394de58bd5053f02504b43c88cbf4152ef6396e41d3f9d4fbde9402', 5, 1508958231, 'AAAACNHdqZQfQqzyp2qakwfFhljDGGUjvxZteThSFeOGPO+PD0p08vkqc7zkAO3yLCR3fKaxT3SV/VhVJISC1GR+6NUAAAAAWfDgFwAAAAAAAAAAk6vO/KRxwZ0ynJMMrKUpOSf5WhbdkNk0LIO/zZxB+qdYx94ZQ5TeWL1QU/AlBLQ8iMv0FS72OW5B0/nU+96UAgAAAAUN4Lazp2QAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('b20926c7239a95103b9e38e028bc592eab2c24ecf00b711fd1253cec0df4d880', 'c2c96120635b889940819a9671bf9d1a2711ea631f9ace627039ebc0dca27b65', 'a8f6213dc2ba3bc5ab397d5f2fb3dec1bc8ead45444e164c584795a2719693e4', 6, 1508958232, 'AAAACMLJYSBjW4iZQIGalnG/nRonEepjH5rOYnA568DcontllWlFnRaYS4s5iz5u9H0+APNiahlqCUynA1PyxKTKXuYAAAAAWfDgGAAAAAAAAAAAN8Q2AtCCsel4HIsK4udqXyLQqcraGjcAHVSUN815grGo9iE9wro7xas5fV8vs97BvI6tRUROFkxYR5WicZaT5AAAAAYN4Lazp2QAAAAAAAAAAAJYAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('75237fa55882db2aa676bdc01933832f54a49f81e7c826b91d9cae7e81b54d63', 'b20926c7239a95103b9e38e028bc592eab2c24ecf00b711fd1253cec0df4d880', 'd2622427bae38c5e460ebbe2ecd2d3c15062a055b26f248424be070dee8afd8c', 7, 1508958233, 'AAAACLIJJscjmpUQO5444Ci8WS6rLCTs8AtxH9ElPOwN9NiAP90YX0c/r5mf1lO5p9sm8YvrzI1dB5pwUUteyFU+9zgAAAAAWfDgGQAAAAAAAAAAk5HOQp3TCIyOUj8VmNGrhs2C+IXj942pn3qPVIAXXx7SYiQnuuOMXkYOu+Ls0tPBUGKgVbJvJIQkvgcN7or9jAAAAAcN4Lazp2QAAAAAAAAAAAK8AAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('d22bfaddf4fba35aad07d9e6537eab3f85d098e855b9095475a24d9cba15bcf3', '75237fa55882db2aa676bdc01933832f54a49f81e7c826b91d9cae7e81b54d63', '986b57cbd6b80c088ce5b04605de66ffb63553d801ec0c30b2516bed3697fb6c', 8, 1508958234, 'AAAACHUjf6VYgtsqpna9wBkzgy9UpJ+B58gmuR2crn6BtU1jm4GfU2aI5jnb/7S4czGh1hxrvpSdH42G4AedFrA5X8kAAAAAWfDgGgAAAAAAAAAA5fh0DRZ+OfeA4iH3GTMbG6cqJGEx0qC57216HbTwQPWYa1fL1rgMCIzlsEYF3mb/tjVT2AHsDDCyUWvtNpf7bAAAAAgN4Lazp2QAAAAAAAAAAARMAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('3924b4e377892c1f0f694b5ca6351917facce41ee533a05d6812034ae45e7392', 'd22bfaddf4fba35aad07d9e6537eab3f85d098e855b9095475a24d9cba15bcf3', 'd13a556871af4f62052eb5a887a90f2a6fb52896e04f668cbb4ef8a7746ba128', 9, 1508958235, 'AAAACNIr+t30+6NarQfZ5lN+qz+F0JjoVbkJVHWiTZy6Fbzz/3niS6kTrcfvfOLBuMnPRI4RL5pAu5Tu0wTlUzEtE3cAAAAAWfDgGwAAAAAAAAAAbXQLWug2IZ2G4RnwUrCTvIwO6TMpu21+S2UXhqLKWTHROlVoca9PYgUutaiHqQ8qb7UoluBPZoy7TvindGuhKAAAAAkN4Lazp2QAAAAAAAAAAASwAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('38b3eff726d5c4887b99567fb7dcc1eb4f889c04744497d8b57ebb0b7aad62af', '3924b4e377892c1f0f694b5ca6351917facce41ee533a05d6812034ae45e7392', '631ceeb1bdd5812bbae6d1f4473c4732b99315d6ce025097e2bff39ef386f9f7', 10, 1508958236, 'AAAACDkktON3iSwfD2lLXKY1GRf6zOQe5TOgXWgSA0rkXnOSSHQspPD4XfnlXhrxjDG9KVS0DtHVL/sbjqRJTCp8NxgAAAAAWfDgHAAAAAAAAAAA9+jjsWK6v6g0OYMFxTo1+Yogi2yDSjXhJ86N1AxJOvFjHO6xvdWBK7rm0fRHPEcyuZMV1s4CUJfiv/Oe84b59wAAAAoN4Lazp2QAAAAAAAAAAAV4AAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('934ee62d025044902021685fba39338ff7f265410f5b62f12f37064faad799a2', '38b3eff726d5c4887b99567fb7dcc1eb4f889c04744497d8b57ebb0b7aad62af', '5f1d5b3ae8d98988a642acc1528156c4b3d85ab80cbd034bda8d5bd521c55f88', 11, 1508958237, 'AAAACDiz7/cm1cSIe5lWf7fcwetPiJwEdESX2LV+uwt6rWKv+yoP5dk+87W5lBhB72MrX1A9g7FstU+Wrautt0HAKLAAAAAAWfDgHQAAAAAAAAAApIxpaTPANJS3XftGXFSYrEJ0MhfN6GN1Oe5+YEP6099fHVs66NmJiKZCrMFSgVbEs9hauAy9A0vajVvVIcVfiAAAAAsN4Lazp2QAAAAAAAAAAAXcAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('2c21653c41d7a6e10efd838e9e7686b3379d3e226041d2387b7f7ba3c7492588', '934ee62d025044902021685fba39338ff7f265410f5b62f12f37064faad799a2', '65b2957cd303df63dabccc032def78d14d38cb536eb3018cd91e196788c10492', 12, 1508958238, 'AAAACJNO5i0CUESQICFoX7o5M4/38mVBD1ti8S83Bk+q15mifVIe/usAv+eIihHRYzEgfsFl+ScWKs6j6DFeKkruCtgAAAAAWfDgHgAAAAAAAAAAc4P3o+BJiJvXXIfj/eVQPF1RRIrnE2nfX0a4J7WFySplspV80wPfY9q8zAMt73jRTTjLU26zAYzZHhlniMEEkgAAAAwN4Lazp2QAAAAAAAAAAAZAAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('c797286229b370588575ecf1d45ffed593e95137d45cfb0292712c9301f9c4b6', '2c21653c41d7a6e10efd838e9e7686b3379d3e226041d2387b7f7ba3c7492588', '97fc7d48d24088215fd449c74d9b001c1f148b0023c9cfec13b5b47b45fcf3a8', 13, 1508958239, 'AAAACCwhZTxB16bhDv2Djp52hrM3nT4iYEHSOHt/e6PHSSWI93Q949mBHKT2KeFicspCZ8lA+nUjH9tvVVOaqcRIPQEAAAAAWfDgHwAAAAAAAAAAFkWUNyF+w67R5n+HgDNebl5snV2YlBsz3xLTqBMQsQGX/H1I0kCIIV/UScdNmwAcHxSLACPJz+wTtbR7RfzzqAAAAA0N4Lazp2QAAAAAAAAAAAcIAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('97746790779a2ed2eb05b95a8f24e15bd244dc7701fd0cac0f3a79e469a028b7', 'c797286229b370588575ecf1d45ffed593e95137d45cfb0292712c9301f9c4b6', '0a864c1fd969a9495109bd90cf5f86876ad998e3ce70a4cafad31ee3b3cbd38c', 14, 1508958240, 'AAAACMeXKGIps3BYhXXs8dRf/tWT6VE31Fz7ApJxLJMB+cS2YGGY9cy7t0aKv/0K3ts/SGV9Eoxzu0OcT/jkmo3gINgAAAAAWfDgIAAAAAAAAAAAkBsR4zZKGkuzmOMkFZMIwPdAxWuGy+ssPtEN7i6N7ekKhkwf2WmpSVEJvZDPX4aHatmY485wpMr60x7js8vTjAAAAA4N4Lazp2QAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('81ba813c17a15a891b66c8325fe48f232de2aebbd33ec9746b907c2e139aeff1', '97746790779a2ed2eb05b95a8f24e15bd244dc7701fd0cac0f3a79e469a028b7', 'bfffb768c742b5f3e4d858244e25c8109b8d949bb20fd8d9eb6145896c671125', 15, 1508958241, 'AAAACJd0Z5B3mi7S6wW5Wo8k4VvSRNx3Af0MrA86eeRpoCi3Ppn8nso8zuuFZzAYtqgFe6E7dNlqvMfKcr6A9wvh8VkAAAAAWfDgIQAAAAAAAAAAUsjUlWJzXzXDGEu7ZX8NM4G3hXMJgTqm1o4qvEMfb6G//7dox0K18+TYWCROJcgQm42Um7IP2NnrYUWJbGcRJQAAAA8N4Lazp2QAAAAAAAAAAAg0AAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('e0b1626c4ce4c5336fc1373fcba8e6be9e32205c2410bfee74bb08506bdb433e', '81ba813c17a15a891b66c8325fe48f232de2aebbd33ec9746b907c2e139aeff1', '45beaa9f2d82bdaa501990b1852214658d86a66c93986dbe63ebf229c7d2d995', 16, 1508958242, 'AAAACIG6gTwXoVqJG2bIMl/kjyMt4q670z7JdGuQfC4Tmu/x3tmmqUiYtpHT9psI5MQpv5TSiHQ3LDS5JviXBBvJNaUAAAAAWfDgIgAAAAAAAAAAYKou7BkPtQtmD4O54/TToUgBAVUCmCl/O+9Tgq2hNHxFvqqfLYK9qlAZkLGFIhRljYambJOYbb5j6/Ipx9LZlQAAABAN4Lazp2QAAAAAAAAAAAlgAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('6d2b3f38a8cd60a2aeb481f00ba2a2c442e650d621d82762939389399233c00f', 'e0b1626c4ce4c5336fc1373fcba8e6be9e32205c2410bfee74bb08506bdb433e', '6f814eec3571a8288f02137ab66e7eee81ddd22e87351d96630c48676a9bbfc2', 17, 1508958243, 'AAAACOCxYmxM5MUzb8E3P8uo5r6eMiBcJBC/7nS7CFBr20M++jVaaG3kqTLuWHA2Ve8YW4UBNJuIQMTavfrXawPOs+AAAAAAWfDgIwAAAAAAAAAAqHWOFRdWDweK4ZIEBYTYOkzwi2q8iIoB9xFzAOqPS/dvgU7sNXGoKI8CE3q2bn7ugd3SLoc1HZZjDEhnapu/wgAAABEN4Lazp2QAAAAAAAAAAAooAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('a93604e41d84c9f9ee9529aa335ecea91e1af466f210438fd7c9762703b139b5', '6d2b3f38a8cd60a2aeb481f00ba2a2c442e650d621d82762939389399233c00f', '1c8caaa5a5234b8ac19516df61d828e067e0d2d05d3b3d90d311178184aa7637', 18, 1508958244, 'AAAACG0rPziozWCirrSB8AuiosRC5lDWIdgnYpOTiTmSM8APZd5TBcqiZP+0qyIS5gJZnn4Rrvb8ilHoQAvjGXBN8VkAAAAAWfDgJAAAAAAAAAAANKxyAMoyM/gn59hBYzLxbU28Wbix3QHy7s086vpSY4ccjKqlpSNLisGVFt9h2CjgZ+DS0F07PZDTEReBhKp2NwAAABIN4Lazp2QAAAAAAAAAAAtUAAAAAAAAAAAAAAACAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('27b93f799642fcb133d65f2744948deb52768fee62c27d375d5d59e556151687', 'a93604e41d84c9f9ee9529aa335ecea91e1af466f210438fd7c9762703b139b5', 'b989db41d7c804150a982854c45e3ad3e4617e6ccffe779e13917487d19dcc24', 19, 1508958245, 'AAAACKk2BOQdhMn57pUpqjNezqkeGvRm8hBDj9fJdicDsTm14KEsXknbeQ58SKWzdrA3qNOFSELIcmkhK0VzW7LF9WsAAAAAWfDgJQAAAAAAAAAAYzC64fmWjZOtqE4JjsKqwerdnzN6ywnJSvdsDWFPcu25idtB18gEFQqYKFTEXjrT5GF+bM/+d54TkXSH0Z3MJAAAABMN4Lazp2QAAAAAAAAAAAu4AAAAAAAAAAAAAAACAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('360223f0a498dc1fbfd52895c8742e3bce8d54742a13ebbbdffa7dc482503815', '27b93f799642fcb133d65f2744948deb52768fee62c27d375d5d59e556151687', '2996db01034194222c1e4ed64162a44b9fa48db3a2a9b67eac680dc8549de270', 20, 1508958246, 'AAAACCe5P3mWQvyxM9ZfJ0SUjetSdo/uYsJ9N11dWeVWFRaH/N6oK5MQroR4GqI2prKkUvE3yznCy2593GsyFkGkvSwAAAAAWfDgJgAAAAAAAAAAx/hxaEW2XNJB3iDf23eYfGcwcQ862pSt7OJ6FF108IYpltsBA0GUIiweTtZBYqRLn6SNs6Kptn6saA3IVJ3icAAAABQN4Lazp2QAAAAAAAAAAAwcAAAAAAAAAAAAAAACAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('7378a987ef2675163ee8d8e450db804a0dce25bd737cd042fcd5383ddfb544f8', '360223f0a498dc1fbfd52895c8742e3bce8d54742a13ebbbdffa7dc482503815', '19266599367b5d4b67cf1598bbb4db845d7594fbb568c910d5080f691c0979bc', 21, 1508958247, 'AAAACDYCI/CkmNwfv9Uolch0LjvOjVR0KhPru9/6fcSCUDgVFU5U0IccgcA5tEMZmL+LyTWYP22HRUWl9QjpDtF5uSkAAAAAWfDgJwAAAAAAAAAA3LAnNjSwmLo474ojoHgysfkXmeeBIXdgWbyOJwbnsx8ZJmWZNntdS2fPFZi7tNuEXXWU+7VoyRDVCA9pHAl5vAAAABUN4Lazp2QAAAAAAAAAAAzkAAAAAAAAAAAAAAACAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('904cc66cfe9569cf28f97d1500f96d5e17d98290f17cd5c3adbfbf4d26f3291c', '7378a987ef2675163ee8d8e450db804a0dce25bd737cd042fcd5383ddfb544f8', 'a9f519d97d7b3f4dd5e3916d6daffd314438eec2dda1f4ca077eb61a961355c5', 22, 1508958248, 'AAAACHN4qYfvJnUWPujY5FDbgEoNziW9c3zQQvzVOD3ftUT4zt7cRbsIwEKRPauY0ouLPY7ktrMQM5qaA2itYUT7Nl4AAAAAWfDgKAAAAAAAAAAA0AMiyT4CyDLLvayS0AmP97hen9j1rkIsoYeN0iQrjuqp9RnZfXs/TdXjkW1tr/0xRDjuwt2h9MoHfrYalhNVxQAAABYN4Lazp2QAAAAAAAAAAA1IAAAAAAAAAAAAAAACAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('4a827dfa1e0944dba85918a58f719ca1bbe9155ea3a37e8f5f307fd06ccc3b2c', '904cc66cfe9569cf28f97d1500f96d5e17d98290f17cd5c3adbfbf4d26f3291c', '83d3601164daa5d49430b63754171546c0f0ee47eff105f194e9d64d7ffb2c45', 23, 1508958249, 'AAAACJBMxmz+lWnPKPl9FQD5bV4X2YKQ8XzVw62/v00m8ykcHmX+Ky2sbzF5JveL3BSjmmtuEJ7bu93K/AfENp3ZgaoAAAAAWfDgKQAAAAAAAAAAeu6ZLz++eOyW3/HPY616v+oF2X756WCT8G93ApdHifqD02ARZNql1JQwtjdUFxVGwPDuR+/xBfGU6dZNf/ssRQAAABcN4Lazp2QAAAAAAAAAAA2sAAAAAAAAAAAAAAADAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('20c6cdc0baafeeed2d70a2c8da62131813e9f70464717f38176dae0254988740', '4a827dfa1e0944dba85918a58f719ca1bbe9155ea3a37e8f5f307fd06ccc3b2c', 'c93efa68bde0c7b9567cfe11a2d1cb0b1a6cfe48430c179528f302cda12a8010', 24, 1508958250, 'AAAACEqCffoeCUTbqFkYpY9xnKG76RVeo6N+j18wf9BszDssTIEWJuNAv75elR/GiSWJZ7ZL2RzxE82+nGVAjDrzYhUAAAAAWfDgKgAAAAAAAAAA1ziHajubDrj1Iu5EQ8YZB24Czm29AJPdaJnsX3+A+fXJPvpoveDHuVZ8/hGi0csLGmz+SEMMF5Uo8wLNoSqAEAAAABgN4Lazp2QAAAAAAAAAAA4QAAAAAAAAAAAAAAAEAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('5205910c7be4dd1e3edbdeb5807ce38ca2fea7f6574ac40e6658e991ddbb5500', '20c6cdc0baafeeed2d70a2c8da62131813e9f70464717f38176dae0254988740', '38388a3882151c1381a12ba86358fce79e38160faa1bd020ac70cd4a5cf8f3af', 25, 1508958251, 'AAAACCDGzcC6r+7tLXCiyNpiExgT6fcEZHF/OBdtrgJUmIdAOJeVHCWwleqqY8F5T6oZdEviwwLLoY47R9vzdA3rm1kAAAAAWfDgKwAAAAAAAAAAM9gLVDvjwMuVZ+njRjvvMxlhodRg/VJpuapiCb0y9SA4OIo4ghUcE4GhK6hjWPznnjgWD6ob0CCscM1KXPjzrwAAABkN4Lazp2QAAAAAAAAAAA50AAAAAAAAAAAAAAAEAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('1a69de1f7cd2cd973e0291bb6c671aacba30dc4669aa151c109eaf883a9cf90a', '5205910c7be4dd1e3edbdeb5807ce38ca2fea7f6574ac40e6658e991ddbb5500', '815dda188bda63fb377342b5df4c6bc6defb2dff1fcae4650ce2830d65f88ae6', 26, 1508958252, 'AAAACFIFkQx75N0ePtvetYB844yi/qf2V0rEDmZY6ZHdu1UAInohhctpXcQ0Bt0/88FFBIFnJklVp+Ku5UKUbWxhrPsAAAAAWfDgLAAAAAAAAAAAGTKcjd5tsclF3P+ptDiMdUWp83tuYF+zlADp+X+gt+eBXdoYi9pj+zdzQrXfTGvG3vst/x/K5GUM4oMNZfiK5gAAABoN4Lazp2QAAAAAAAAAAA88AAAAAAAAAAAAAAAGAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('ec11610f716377b9770f171ef35553993ba070657dd32907896c31013e601337', '1a69de1f7cd2cd973e0291bb6c671aacba30dc4669aa151c109eaf883a9cf90a', 'f1c375714e4fb46eb5dca33b4611b546fb93efc105c9f3eb179398a260f70864', 27, 1508958253, 'AAAACBpp3h980s2XPgKRu2xnGqy6MNxGaaoVHBCer4g6nPkK28Nb+C5bF3RhWdGswsn6rlHslZnD6wVtfGcagcM6/zEAAAAAWfDgLQAAAAAAAAAAkpeXdNXfmh1EnUjCYIMebdzV8PlgCe6J6eJq8Mb4SXbxw3VxTk+0brXcoztGEbVG+5PvwQXJ8+sXk5iiYPcIZAAAABsN4Lazp2QAAAAAAAAAAA+gAAAAAAAAAAAAAAAGAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('1bad7e45a395460686974b89714bde2bab67426d54704be13e2c0381d913d37e', 'ec11610f716377b9770f171ef35553993ba070657dd32907896c31013e601337', '017a5fb20fca08be262354b3ad6aff8e3b2d26b9a8c1f92099e3158f1fa92d1a', 28, 1508958254, 'AAAACOwRYQ9xY3e5dw8XHvNVU5k7oHBlfdMpB4lsMQE+YBM36PsYvXlsjrui8IY6NHlA0W6Gbn1RMjhQhf27s+IJOiAAAAAAWfDgLgAAAAAAAAAAdQ/T4yJNKn9hiJoTuxDsNbd9ibRWf2hNHJhsiqBKWD0Bel+yD8oIviYjVLOtav+OOy0muajB+SCZ4xWPH6ktGgAAABwN4Lazp2QAAAAAAAAAABJcAAAAAAAAAAAAAAAGAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('9f78b3d93ae05ad744b5b2c3a5d111444d379970983fca34a8b83e5e99d3e557', '1bad7e45a395460686974b89714bde2bab67426d54704be13e2c0381d913d37e', '779c90add81b55c23c1611a9ee8b62a6f7484d8fa282f1688437f186f3b2824d', 29, 1508958255, 'AAAACButfkWjlUYGhpdLiXFL3iurZ0JtVHBL4T4sA4HZE9N+pvj3xI3BJxyrkzpGbgahc71cw6LtdmAeQhKE1UfuEo8AAAAAWfDgLwAAAAAAAAAAbaCD4RbfEqSrI+qpIyzzUU+bYYMJsRw3pHcmHwQrvaB3nJCt2BtVwjwWEanui2Km90hNj6KC8WiEN/GG87KCTQAAAB0N4Lazp2QAAAAAAAAAABLAAAAAAAAAAAAAAAAGAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('d0b374763391955368b5ad8e2c7c75a5ba8f06bf308c018290a35aa1306369b0', '9f78b3d93ae05ad744b5b2c3a5d111444d379970983fca34a8b83e5e99d3e557', '9ed738cf23e199ee00fc7aa8e614fceffcea8301e89dd3af625b5fef3f54f19d', 30, 1508958256, 'AAAACJ94s9k64FrXRLWyw6XREURNN5lwmD/KNKi4Pl6Z0+VXomODnFcZ6+UNfdvzm/DGT8LgtNj3Z65GB4XMyPZ2zmgAAAAAWfDgMAAAAAAAAAAA1jXLaoK/IOqKNVkib2cNLrjlETHXpZlcJ4BFYO8bM3me1zjPI+GZ7gD8eqjmFPzv/OqDAeid069iW1/vP1TxnQAAAB4N4Lazp2QAAAAAAAAAABMkAAAAAAAAAAAAAAAGAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('bcf949a2661872bc71bed6865597e786e517402bdc9a29a7b669f312c4f5a82d', 'd0b374763391955368b5ad8e2c7c75a5ba8f06bf308c018290a35aa1306369b0', '5bd9d31d11903c21c29bbbbe909072b77318b2834cf22a1d4ee00e3d6fdc70c3', 31, 1508958257, 'AAAACNCzdHYzkZVTaLWtjix8daW6jwa/MIwBgpCjWqEwY2mw4POEpXaZq0aHEmvlto6NCGM0NEXTKs+6zGNW2o+YsnwAAAAAWfDgMQAAAAAAAAAA8GmZ2mhGWPCcWAd1pU9SBJXfejtD7FOEoLD6oFsTOv5b2dMdEZA8IcKbu76QkHK3cxiyg0zyKh1O4A49b9xwwwAAAB8N4Lazp2QAAAAAAAAAABOIAAAAAAAAAAAAAAAGAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('b7fdf0aa48ab5d1e4dcfed4c12d58ab26a1ff3876006ff022f702add2ddffe48', 'bcf949a2661872bc71bed6865597e786e517402bdc9a29a7b669f312c4f5a82d', 'ace61cbcf62d677d1a47fa245b85fe23f7244a9f40ba74ab4f01a11fb530e530', 32, 1508958258, 'AAAACLz5SaJmGHK8cb7WhlWX54blF0Ar3Jopp7Zp8xLE9agtVi1ZSKFnmeld49TcXiYd4jKvhPY7tZ91aXG9u9JBfQUAAAAAWfDgMgAAAAAAAAAA2zD57d2oUw2L6murtm/oe2Dj6FuzBXnVm7l7HoDsMUys5hy89i1nfRpH+iRbhf4j9yRKn0C6dKtPAaEftTDlMAAAACAN4Lazp2QAAAAAAAAAABRQAAAAAAAAAAAAAAAGAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('caac2fa982cce7a832997ae3c9b334831d0f7979c2ed137a07a0eaa941e9dc88', 'b7fdf0aa48ab5d1e4dcfed4c12d58ab26a1ff3876006ff022f702add2ddffe48', 'e0805d4f24cb459c1c6f6e3532fff8f4cc0bb563d10a0e62136e9b5c5e3ef45e', 33, 1508958259, 'AAAACLf98KpIq10eTc/tTBLVirJqH/OHYAb/Ai9wKt0t3/5IqWELaMcQS55OxpEtPP7fWCL2lroQhirZH5blY8KR4a8AAAAAWfDgMwAAAAAAAAAAHdP8tBBtpeyL899tLPnNdaqUoHRWmHKjK8mobr412wHggF1PJMtFnBxvbjUy//j0zAu1Y9EKDmITbptcXj70XgAAACEN4Lazp2QAAAAAAAAAABS0AAAAAAAAAAAAAAAGAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('e15986114f71a1012b7c2e0dc5787cdd1df2a5d6f9895f2b71d5ccf163c3089c', 'caac2fa982cce7a832997ae3c9b334831d0f7979c2ed137a07a0eaa941e9dc88', 'becf23ccb1c68da1e6f79b5241d07fd4c6f098dcbcbc5db8fd97903676dcbba7', 34, 1508958260, 'AAAACMqsL6mCzOeoMpl648mzNIMdD3l5wu0Tegeg6qlB6dyIQhINKfSCS8cl+vhZfqlOlGS9motu4bFw+OUCRC3AjdMAAAAAWfDgNAAAAAAAAAAA/bE+PeQRbcMvSIfQyaXSWXEgzB7abwreNVQeYYIhwia+zyPMscaNoeb3m1JB0H/UxvCY3Ly8Xbj9l5A2dty7pwAAACIN4Lazp2QAAAAAAAAAABUYAAAAAAAAAAAAAAAGAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('695f24145375ea6311557129b05828fe8b12dd7628b700b88b1981392b1425aa', 'e15986114f71a1012b7c2e0dc5787cdd1df2a5d6f9895f2b71d5ccf163c3089c', 'ab230bd339498780652020372fcc5bbe10e9f80f68fe50aa536baa42cc717222', 35, 1508958261, 'AAAACOFZhhFPcaEBK3wuDcV4fN0d8qXW+YlfK3HVzPFjwwic0Vs5gExQbxmOlo8SWh/r2y0EU7XzUHFfr5iqKL7K75AAAAAAWfDgNQAAAAAAAAAAU3lWP9fTSJmRnN7PpNBaZaYziGh9Xk2I2lyAgYUdNsyrIwvTOUmHgGUgIDcvzFu+EOn4D2j+UKpTa6pCzHFyIgAAACMN4Lazp2QAAAAAAAAAABV8AAAAAAAAAAAAAAAGAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('27869e25d8ed9a9caff1e96aba01043356f9534fc6627d902a29ad5d3eee6c81', '695f24145375ea6311557129b05828fe8b12dd7628b700b88b1981392b1425aa', 'b5fe829604107a8cb9d1a2cd217ee05f2651124863af2925fc9a5eeceebeafdd', 36, 1508958262, 'AAAACGlfJBRTdepjEVVxKbBYKP6LEt12KLcAuIsZgTkrFCWqaur8a76SfIFxMTZQZMjgJxvkVDN4rEqyIXG2uK1qmXwAAAAAWfDgNgAAAAAAAAAADx7u3Tt890DDCAY2PUo3lKiU3M3nylcrqmvMlFLS+fG1/oKWBBB6jLnRos0hfuBfJlESSGOvKSX8ml7s7r6v3QAAACQN4Lazp2QAAAAAAAAAABXgAAAAAAAAAAAAAAAGAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('3bd71f4f29b478203266faba7920dbe33131a8188da94d49417bf7f5a77f82a0', '27869e25d8ed9a9caff1e96aba01043356f9534fc6627d902a29ad5d3eee6c81', 'c1aa34a6fd2fd64c1d71682947dbbb51f143f6274caf7042e956b3e2c9298218', 37, 1508958263, 'AAAACCeGniXY7Zqcr/HparoBBDNW+VNPxmJ9kCoprV0+7myBP54MekIWvIuxl2zdSZ5YzVqPn3AIjFbug5WqxVezAvoAAAAAWfDgNwAAAAAAAAAAPORbuvHNNFfsSSmddqmUP8Fk8iW9Jb1yQL/uEyYGc2vBqjSm/S/WTB1xaClH27tR8UP2J0yvcELpVrPiySmCGAAAACUN4Lazp2QAAAAAAAAAABZEAAAAAAAAAAAAAAAGAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('204da286bdf29029660a3a4f6f5bb917e41c14e8a05e51939eba2bf7bcb2dcaa', '3bd71f4f29b478203266faba7920dbe33131a8188da94d49417bf7f5a77f82a0', 'dc58d30ad2a992b06b8f7c2fae7a5e7953ce2db011155b1e51aca706b2188162', 38, 1508958264, 'AAAACDvXH08ptHggMmb6unkg2+MxMagYjalNSUF79/Wnf4KgyTbrakyvZbkfDPdc3Nuq2oZdIv7FIDfyne9shmJjOn0AAAAAWfDgOAAAAAAAAAAAN/+dCsXSVcipJLX5fSVl/dtD8pFe+iZnfnNZ2g7vXj/cWNMK0qmSsGuPfC+uel55U84tsBEVWx5RrKcGshiBYgAAACYN4Lazp2QAAAAAAAAAABcMAAAAAAAAAAAAAAAGAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('1294ac0497ef836f8f97f9ec0049dc5bcf89d11d506819e0f6d666abfcdad06b', '204da286bdf29029660a3a4f6f5bb917e41c14e8a05e51939eba2bf7bcb2dcaa', 'd827ae31d731ecbae6325448946d33b5280e876e9696d9a1bc0bc441266168d6', 39, 1508958265, 'AAAACCBNooa98pApZgo6T29buRfkHBTooF5Rk566K/e8styqoBiR+ZWnVQXfJwfFUNgsoHN08jbejcvv3lXatRuXQ1IAAAAAWfDgOQAAAAAAAAAASeHBruDgNPJb9kfcJVMyCg6meb0kov5dW9Ok8EEep2bYJ64x1zHsuuYyVEiUbTO1KA6HbpaW2aG8C8RBJmFo1gAAACcN4Lazp2QAAAAAAAAAABdwAAAAAAAAAAAAAAAGAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('1cbaf70818d8ce786f874a1a4346af115c55f90b1153911f3364558493f47f10', '1294ac0497ef836f8f97f9ec0049dc5bcf89d11d506819e0f6d666abfcdad06b', 'dd8c19a9de55f141f2e9147f29bf8f7ebb764660d06c6014fd1ffb75c7bd49ad', 40, 1508958266, 'AAAACBKUrASX74Nvj5f57ABJ3FvPidEdUGgZ4PbWZqv82tBrx0+S0ikoyf+berERNefusVpLN7F5dfvZnhzFOhEk5aoAAAAAWfDgOgAAAAAAAAAAWJlo97rfQjjINuAEkeCOb3Rwl6NYUk95Xa63Nc0UCv3djBmp3lXxQfLpFH8pv49+u3ZGYNBsYBT9H/t1x71JrQAAACgN4Lazp2QAAAAAAAAAABg4AAAAAAAAAAAAAAAGAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('9ffe8ea87ab401236e5ef5e502230a418703f2938c294c3cc61def09ca750c29', '1cbaf70818d8ce786f874a1a4346af115c55f90b1153911f3364558493f47f10', 'b0ecf9640dc0846e027fbdb851a79e54313ffa89d964b04722eca5cd8a5d4beb', 41, 1508958267, 'AAAACBy69wgY2M54b4dKGkNGrxFcVfkLEVORHzNkVYST9H8QyFbBzRIymbTdHyIBn9srjjmRUGT33kOKEmUuvkOT/DQAAAAAWfDgOwAAAAAAAAAA3texHWkeXlsh8yl52JzE1M7p/8uzk36DdlbvwdqWw1aw7PlkDcCEbgJ/vbhRp55UMT/6idlksEci7KXNil1L6wAAACkN4Lazp2QAAAAAAAAAABkAAAAAAAAAAAAAAAAGAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('e9bbe08be67ecfe33dc3b435743f606da703081dd0908230c19850a6d03567e1', '9ffe8ea87ab401236e5ef5e502230a418703f2938c294c3cc61def09ca750c29', 'cd06be3c70de26c3a0fe8abc2f56016cafb221f97b97aa4cbfb1bd817f91d62f', 42, 1508958268, 'AAAACJ/+jqh6tAEjbl715QIjCkGHA/KTjClMPMYd7wnKdQwpiswW4gnDD965Kx3MrAKjtofUDLPaycJ8dDzWzllQMe8AAAAAWfDgPAAAAAAAAAAA4mQxuIyGkMnUNprxo1u6b3NOKgS/CqRR0k9oMQPLWs/NBr48cN4mw6D+irwvVgFsr7Ih+XuXqky/sb2Bf5HWLwAAACoN4Lazp2QAAAAAAAAAABlkAAAAAAAAAAAAAAAGAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('ef94abd7a8374fb2f1855b68c71b3cde5dfa782bb2bfd31d2624368bc3c5b90a', 'e9bbe08be67ecfe33dc3b435743f606da703081dd0908230c19850a6d03567e1', '49c893477fae46f851f0e08ac81bf532a1671d8d29d58f6dae5ca8b65ea247fd', 43, 1508958269, 'AAAACOm74Ivmfs/jPcO0NXQ/YG2nAwgd0JCCMMGYUKbQNWfhfKdGIZDqNn0UQQf49XUWAYQADQQYDujbESeyPnQTYYAAAAAAWfDgPQAAAAAAAAAA9L2wqBam8xx6EMlQ1e/R7JPhksJqFoZDmKFcFBwf3xBJyJNHf65G+FHw4IrIG/UyoWcdjSnVj22uXKi2XqJH/QAAACsN4Lazp2QAAAAAAAAAABnIAAAAAAAAAAAAAAAGAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('097988b28e30c4063a48ac2e7ccc189bf250b40d7a2c267bdcdb86a8b194fe29', 'ef94abd7a8374fb2f1855b68c71b3cde5dfa782bb2bfd31d2624368bc3c5b90a', '1a869eacceb238ff4f9e55d0a044d5ff57008f3156dff89ffcb485218c740543', 44, 1508958270, 'AAAACO+Uq9eoN0+y8YVbaMcbPN5d+ngrsr/THSYkNovDxbkK/1GxKHXOinUvUeJa+L+K22dhowH/SRfDXQYdk77cT1gAAAAAWfDgPgAAAAAAAAAAWWc1pYhVWRoEJa6GcHIsaj1ysxI4CQ+BcJqiGW3wjmIahp6szrI4/0+eVdCgRNX/VwCPMVbf+J/8tIUhjHQFQwAAACwN4Lazp2QAAAAAAAAAABosAAAAAAAAAAAAAAAGAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('c14280198b12e194455fd4428c140f5bb0d761ff87cee2b82451ab235e340e4f', '097988b28e30c4063a48ac2e7ccc189bf250b40d7a2c267bdcdb86a8b194fe29', 'd57e47ac5b2b027e8a4b6e278fc27247dee39a3825eb7d3dd4646bfc0ba81055', 45, 1508958271, 'AAAACAl5iLKOMMQGOkisLnzMGJvyULQNeiwme9zbhqixlP4pXpkeZ4QyWrhiNfltAZCn2AQrWq3x2BcQ67voWaftcc4AAAAAWfDgPwAAAAAAAAAA2s+Yd36GUBmFrCn8nxzR3G7G6BlWwDjWIvSuQxGMICbVfkesWysCfopLbiePwnJH3uOaOCXrfT3UZGv8C6gQVQAAAC0N4Lazp2QAAAAAAAAAABqQAAAAAAAAAAAAAAAGAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('038b9f83b5b4e0a47542217d27f11340998b879b6b0db4ec1af1de96e27d5868', 'c14280198b12e194455fd4428c140f5bb0d761ff87cee2b82451ab235e340e4f', '68ece31e96832935d6d75cab734c562e23254d5ea002a80e2996cfe1c7999b3c', 46, 1508958272, 'AAAACMFCgBmLEuGURV/UQowUD1uw12H/h87iuCRRqyNeNA5P7VsF4H41DTBxB4Vh4mNH/jKLoKto6xa6dhM5HY1kFMsAAAAAWfDgQAAAAAAAAAAAknH58hxTmq2NI6laxFq7xN4R3r99jE86ydmH1AhFvM9o7OMeloMpNdbXXKtzTFYuIyVNXqACqA4pls/hx5mbPAAAAC4N4Lazp2QAAAAAAAAAABtYAAAAAAAAAAAAAAAGAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('8e739a667d355c842a21f26a43513ad2ec88b83a50f8e9560c4095bf7b6d60c3', '038b9f83b5b4e0a47542217d27f11340998b879b6b0db4ec1af1de96e27d5868', 'd5b7a92d6a5a71eeb373426c28ad93542e5cfaaa7e085886a186a043ba54dcb9', 47, 1508958273, 'AAAACAOLn4O1tOCkdUIhfSfxE0CZi4ebaw207Brx3pbifVhobGsLZjax05VyPATECKf0SKz/R5hCC8GfhLO32XByYvIAAAAAWfDgQQAAAAAAAAAA8OM7CNjloxWqwlaanmBarRzmaEAjS1RTT7DMBUh/OHjVt6ktalpx7rNzQmworZNULlz6qn4IWIahhqBDulTcuQAAAC8N4WQpWNjKAAAAAAAB0O3VAAAAAQAAAAAAAAAGAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('f0d4c3344320d3f4bca63a45f73525848d039fbe4bc61676a1a5fb292f3e98da', '8e739a667d355c842a21f26a43513ad2ec88b83a50f8e9560c4095bf7b6d60c3', '2abf4065429581a7b6cc7d64ff0b1c46021ebb42da59e4480be6c9cf2e98a4a4', 48, 1508958274, 'AAAACI5zmmZ9NVyEKiHyakNROtLsiLg6UPjpVgxAlb97bWDDZrsn0xAYwqMMTNzY4r/P5ax7+Izo5nhfcoenVyTIzOoAAAAAWfDgQgAAAAAAAAAAQNg4cr4Do7quX33o4rbaXa7+BDdHc8PbTEXBcuQETP8qv0BlQpWBp7bMfWT/CxxGAh67QtpZ5EgL5snPLpikpAAAADAN4WQpWNjKAAAAAAAB0O45AAAAAQAAAAAAAAAGAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('f475ab1fe9919922386748b3ca1ef25d904d3a022b8e43ff508bb499f95bacc3', 'f0d4c3344320d3f4bca63a45f73525848d039fbe4bc61676a1a5fb292f3e98da', '1d35e8605a5a3a9b2327057389f4613dd75a3dc519006ef118c956c0b7641061', 49, 1508958275, 'AAAACPDUwzRDINP0vKY6Rfc1JYSNA5++S8YWdqGl+ykvPpjaViRENcFBKAFzf9o6pErzkBcokJgU7afpL2ZT9SjDGnIAAAAAWfDgQwAAAAAAAAAAsSOLB+Fh7PI1BdmA+nlx5DdeXSAZY7OnyHcuyeMEmJAdNehgWlo6myMnBXOJ9GE911o9xRkAbvEYyVbAt2QQYQAAADEN4WQpWNjKAAAAAAAB0O9lAAAAAQAAAAAAAAAGAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('e614f8bddbbdd3ecffad4246fa5c9c5dc38856b0a5a1c43feb2bfb129bf1bfe9', 'f475ab1fe9919922386748b3ca1ef25d904d3a022b8e43ff508bb499f95bacc3', '07aaa42d419c9ae70c5e4b1c30a745537b35a133abf18276d62978f395fbad45', 50, 1508958276, 'AAAACPR1qx/pkZkiOGdIs8oe8l2QTToCK45D/1CLtJn5W6zDWYHFZRo+ahWmPjfPEsGDKwdvm8ttogB280drxLN0XF8AAAAAWfDgRAAAAAAAAAAAe2zMUWV2ofxxSJUd0hgEpW+dk+M503UNhsqXLKL0TMgHqqQtQZya5wxeSxwwp0VTezWhM6vxgnbWKXjzlfutRQAAADIN4WQpWNjKAAAAAAAB0O/JAAAAAQAAAAAAAAAGAAAAZAX14QAAACcQB6qkLUGcmucMXkscMKdFU3s1oTOr8YJ21il485X7rUUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('f3713d96b43bfc344dfac6fbb63fef5ac14425547aa7f01d6ac6e14337a48a6f', 'e614f8bddbbdd3ecffad4246fa5c9c5dc38856b0a5a1c43feb2bfb129bf1bfe9', 'ac9e8032159210230bdda3ed023f35650e80c3e1daa2133a25b4d7073f7001e6', 51, 1508958277, 'AAAACOYU+L3bvdPs/61CRvpcnF3DiFawpaHEP+sr+xKb8b/pAzIxgrtpXOw/H2FvA3rZS5fjZZE+/wjOwQ2wszrU130AAAAAWfDgRQAAAAAAAAAAG9Lveo8KOMBsuTXxxarafYQzHKlqwhXWtcRjpmTOc+OsnoAyFZIQIwvdo+0CPzVlDoDD4dqiEzoltNcHP3AB5gAAADMN4WQpWNjKAAAAAAAB0PAtAAAAAQAAAAAAAAAGAAAAZAX14QAAACcQB6qkLUGcmucMXkscMKdFU3s1oTOr8YJ21il485X7rUUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('d41407d5e89828dc7a66f0ba1f891fbdd1a0a1d86fd793dad97d897d3e310d46', 'f3713d96b43bfc344dfac6fbb63fef5ac14425547aa7f01d6ac6e14337a48a6f', 'c4a471e068d06a7c79ce2a038a638d0250b179e866d06334528bf66b9f7bda06', 52, 1508958278, 'AAAACPNxPZa0O/w0TfrG+7Y/71rBRCVUeqfwHWrG4UM3pIpvsKtS0rpe+iAn+KmyLthxo4CXuqjqLhwyHXX4lbr4JjoAAAAAWfDgRgAAAAAAAAAAdFs0uvdku2e14ZLZNY/inkD0IgG9m+9h08GbknZs9EzEpHHgaNBqfHnOKgOKY40CULF56GbQYzRSi/Zrn3vaBgAAADQN4WQpWNjKAAAAAAAB0PCRAAAAAQAAAAAAAAAGAAAAZAX14QAAACcQB6qkLUGcmucMXkscMKdFU3s1oTOr8YJ21il485X7rUUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('2ce195f95f10f727e481bf7baa553426c46f2879d4e05e57f6726743ecfea709', 'd41407d5e89828dc7a66f0ba1f891fbdd1a0a1d86fd793dad97d897d3e310d46', '71df6e457ddb2bb119fa6146054cc0fdbe7ecb3f5005c4ab97de6335d313edde', 53, 1508958279, 'AAAACNQUB9XomCjcembwuh+JH73RoKHYb9eT2tl9iX0+MQ1GMlYap8Ej+GgmsAe0DuPZSbSSlpkDZfOpSxcTNctyvekAAAAAWfDgRwAAAAAAAAAAY80asxoHVId70xk95LhsRNki3uSYhgJrvMpz6Qe35wRx325FfdsrsRn6YUYFTMD9vn7LP1AFxKuX3mM10xPt3gAAADUN4WQpWNjKAAAAAAAB0PD1AAAAAQAAAAAAAAAGAAAAZAX14QAAACcQB6qkLUGcmucMXkscMKdFU3s1oTOr8YJ21il485X7rUUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('3bd6b36f0064b923a2e41cf0f448b25ac14374da9ccc369d3bcb9d0baab8b7e1', '2ce195f95f10f727e481bf7baa553426c46f2879d4e05e57f6726743ecfea709', 'e1df39b3b1b08a77a255b7f2c837bc1e7aca6e707cad55f21b260c4f2caeaaac', 54, 1508958280, 'AAAACCzhlflfEPcn5IG/e6pVNCbEbyh51OBeV/ZyZ0Ps/qcJu7u6mPo+D/4dWz0YiDqyTcyh4BcVdEtdO19xkus1Si4AAAAAWfDgSAAAAAAAAAAAfXVfPS9jBqhTfz4LivYYP9btnu+qwf/qpVYL7HgbAM3h3zmzsbCKd6JVt/LIN7weespucHytVfIbJgxPLK6qrAAAADYN4WQpWNjKAAAAAAAB0PG9AAAAAQAAAAAAAAAGAAAAZAX14QAAACcQB6qkLUGcmucMXkscMKdFU3s1oTOr8YJ21il485X7rUUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('86427208d50aae35e8f522d1a9aace62cf5a9ee4c769b4eb261460752ebd8624', '3bd6b36f0064b923a2e41cf0f448b25ac14374da9ccc369d3bcb9d0baab8b7e1', '592bce6291167cf4c34ea41b2f37c85c0a946b3040091dce17988fb4a8d5d0a1', 55, 1508958281, 'AAAACDvWs28AZLkjouQc8PRIslrBQ3TanMw2nTvLnQuquLfh1ap1jTZ4tlx4TTqX+yeGPrT6UzLDVBttoA5JNa6CjZsAAAAAWfDgSQAAAAAAAAAAHOu0BR+25TDycY7dcNSyVck1nyZBCkABFZXwjkic52RZK85ikRZ89MNOpBsvN8hcCpRrMEAJHc4XmI+0qNXQoQAAADcN4WQpWNjKAAAAAAAB0PIhAAAAAQAAAAAAAAAGAAAAZAX14QAAACcQB6qkLUGcmucMXkscMKdFU3s1oTOr8YJ21il485X7rUUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('be7ad60678b36f0bb64d55b80ec7fe964da0929edd10f2670a7270b1ff3dd6a9', '86427208d50aae35e8f522d1a9aace62cf5a9ee4c769b4eb261460752ebd8624', '836d24b888d1b787bad83c0a4607fb7c5d72ba8e56d4cc64a6db61e03cb249ec', 56, 1508958282, 'AAAACIZCcgjVCq416PUi0amqzmLPWp7kx2m06yYUYHUuvYYkobAuH9NqxHkPTEIHUqUaE4923wzDNGUUft+rIBEG/lgAAAAAWfDgSgAAAAAAAAAAudvIKbdFQO6cnqBlfAQ0qwiv8T/bow/WPTIANo/ERRGDbSS4iNG3h7rYPApGB/t8XXK6jlbUzGSm22HgPLJJ7AAAADgN4WQpWNjKAAAAAAAB0PKFAAAAAQAAAAAAAAAGAAAAZAX14QAAACcQB6qkLUGcmucMXkscMKdFU3s1oTOr8YJ21il485X7rUUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('6cf23b5b98c4094998070403e133228bc7579f4c79062a70c30e09015b58b667', 'be7ad60678b36f0bb64d55b80ec7fe964da0929edd10f2670a7270b1ff3dd6a9', '836d24b888d1b787bad83c0a4607fb7c5d72ba8e56d4cc64a6db61e03cb249ec', 57, 1508958283, 'AAAACL561gZ4s28Ltk1VuA7H/pZNoJKe3RDyZwpycLH/PdapTVMlVs173UuQhiq2JXZ/9SUEHWAQCj2Osb14HPswEAcAAAAAWfDgSwAAAAAAAAAA3z9hmASpL9tAVxktxD3XSOp3itxSvEmM6AUkwBS4ERmDbSS4iNG3h7rYPApGB/t8XXK6jlbUzGSm22HgPLJJ7AAAADkN4WQpWNjKAAAAAAAB0PKFAAAAAQAAAAAAAAAGAAAAZAX14QAAACcQB6qkLUGcmucMXkscMKdFU3s1oTOr8YJ21il485X7rUUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); + + +-- +-- Data for Name: offers; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO offers VALUES ('GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU', 1, 0, NULL, NULL, 1, 'USD', 'GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU', 2000000000, 1, 2, 0.5, 0, 19); +INSERT INTO offers VALUES ('GB2QIYT2IAUFMRXKLSLLPRECC6OCOGJMADSPTRK7TGNT2SFR2YGWDARD', 4, 1, 'USD', 'GB2QIYT2IAUFMRXKLSLLPRECC6OCOGJMADSPTRK7TGNT2SFR2YGWDARD', 0, NULL, NULL, 100000000, 1, 1, 1, 0, 24); +INSERT INTO offers VALUES ('GB6GN3LJUW6JYR7EDOJ47VBH7D45M4JWHXGK6LHJRAEI5JBSN2DBQY7Q', 5, 1, 'USD', 'GB6GN3LJUW6JYR7EDOJ47VBH7D45M4JWHXGK6LHJRAEI5JBSN2DBQY7Q', 0, NULL, NULL, 2000000000, 1, 1, 1, 1, 26); +INSERT INTO offers VALUES ('GB6GN3LJUW6JYR7EDOJ47VBH7D45M4JWHXGK6LHJRAEI5JBSN2DBQY7Q', 6, 0, NULL, NULL, 1, 'USD', 'GB6GN3LJUW6JYR7EDOJ47VBH7D45M4JWHXGK6LHJRAEI5JBSN2DBQY7Q', 2000000000, 1, 1, 1, 1, 26); + + +-- +-- Data for Name: peers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: publishqueue; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: pubsub; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: scphistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 2, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAAAIAAAACAAAAAQAAAEi5lEev1R1cptMqJyV86PLvZhkUlSQk9VwpPmG2+iubVAAAAABZ8OAUAAAAAgAAAAgAAAABAAAACAAAAAgAAAADAAAnEAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABA14loW8qJsGrvDfcN8OtqAc6aKj/T9c9ReZpeQsHUmGsOAjlyGVbRsk0STVBTLHFJAc6vw+Oybwv0IIZp78lmBw=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 3, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAAAMAAAACAAAAAQAAADBFSwymwZ/XprA3Z/DHwqoedVVHUetF5YITp0NMR4W1pAAAAABZ8OAVAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABA5jsrODMzHT7CmRzwCu+ZDLoKJMqhnMKLE+sSOLf3S227tP1jfY2uej9VlL7olxuLICvqCbwB2WAgbW3Qo8GcDA=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 4, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAAAQAAAACAAAAAQAAADBje8CRv7f5sWYHIljHmgGWSoWYK9Jmaxa5snLXZS19sgAAAABZ8OAWAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAcwTkl4nHmKq0RfcpXxZmtR4oY9BADHoJrielGF2CHuz0zGKgyAW6ir17ZBniOFc7oqxSEH1eBEFEb+G2/kf3Aw=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 5, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAAAUAAAACAAAAAQAAADAPSnTy+SpzvOQA7fIsJHd8prFPdJX9WFUkhILUZH7o1QAAAABZ8OAXAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAAFM/f0G83G0n0S5d+bejWIyDMHMuKUJo/ouQAIM5cyAqR9aF58F816TmNm7kWqGx9PpzX+Qqmf6H2Cmm7ZKNDQ=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 6, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAAAYAAAACAAAAAQAAADCVaUWdFphLizmLPm70fT4A82JqGWoJTKcDU/LEpMpe5gAAAABZ8OAYAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAHl7fQDO28Wcd4lFoA5cfKKVNBonXRIh8P4FOOrMYO7Odcg3gBViNM5XCN/pmzdSbC6E3E2g9uMY4hmozCF9YDA=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 7, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAAAcAAAACAAAAAQAAADA/3RhfRz+vmZ/WU7mn2ybxi+vMjV0HmnBRS17IVT73OAAAAABZ8OAZAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAXuNqoY/gBIdCoVMSFLeaGLx+/LVgGZf7qLPjibvwx+bbwfXj4nhyFSa1KfexRGlk5QJzGUVNS4p6Rpv1PqC1Aw=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 8, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAAAgAAAACAAAAAQAAADCbgZ9TZojmOdv/tLhzMaHWHGu+lJ0fjYbgB50WsDlfyQAAAABZ8OAaAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABA2ptshjPWGqy1PK1cqaM8NywvRFR6mhQSB6Qd3f10app0tVZWe8Sti9NYOd+uTbUfpJiCqjV+G70HQRd3OEJMCA=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 9, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAAAkAAAACAAAAAQAAADD/eeJLqROtx+984sG4yc9EjhEvmkC7lO7TBOVTMS0TdwAAAABZ8OAbAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAhQgqZfGiMbHzASRZnZXewKL0St66G5CyCuveEQMb4V7xFheYt+NeHF/ksPpER3VaE+g69quqDDMy7DnaPLyoDQ=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 10, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAAAoAAAACAAAAAQAAADBIdCyk8Phd+eVeGvGMMb0pVLQO0dUv+xuOpElMKnw3GAAAAABZ8OAcAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAtS2DumeQ/0HCdlVgEQpDl3yo7VR5JkdZnBThhXAMM1dbXvNjkN9tlXuf4a4JjvqKDDnytnlS+ljgOS9Y+08eCw=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 11, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAAAsAAAACAAAAAQAAADD7Kg/l2T7ztbmUGEHvYytfUD2DsWy1T5atq623QcAosAAAAABZ8OAdAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAX0bkUt4jR7eeKo+bTWQJLHeoKrn1eIBV2tjkaw8EuTIceJjyOohfRCKklr+33HjwDbF2vodb/ysRdoSCUtX8Ag=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 12, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAAAwAAAACAAAAAQAAADB9Uh7+6wC/54iKEdFjMSB+wWX5JxYqzqPoMV4qSu4K2AAAAABZ8OAeAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAkOfInFM8ZhDOljSiyfenm1s8y/lo/ZBtom01roKwp1+9+FwtuM/3efJRchkpnIIzG6tujO/sNWKvVdkZKsdGAA=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 13, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAAA0AAAACAAAAAQAAADD3dD3j2YEcpPYp4WJyykJnyUD6dSMf229VU5qpxEg9AQAAAABZ8OAfAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAAWSMYYsOP9odv+76YUoHEQ/FKTsZ1QueE4fPkAEJHmm2r5ZV/Np+T8obY4q3VYtFS402b04zJjwARxP7do3nCA=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 14, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAAA4AAAACAAAAAQAAADBgYZj1zLu3Roq//Qre2z9IZX0SjHO7Q5xP+OSajeAg2AAAAABZ8OAgAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABA16yJgPAwtxlWQc1FCt8btCcMg3gYLyB7KHx8hSndOId4/CH0iGb6CZ3k7FFJCnxvozPehTVOkK/JVyTqjWt3BA=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 15, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAAA8AAAACAAAAAQAAADA+mfyeyjzO64VnMBi2qAV7oTt02Wq8x8pyvoD3C+HxWQAAAABZ8OAhAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABABlLbogfAXECM9s8hgrFICh/7WstyPCydSNlUBQ1cg6mORQUn8tn4iF3TUKpuvvMuj6uQmPzc4DejuNz/dAwbDg=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 16, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAABAAAAACAAAAAQAAADDe2aapSJi2kdP2mwjkxCm/lNKIdDcsNLkm+JcEG8k1pQAAAABZ8OAiAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAp5dLT4Z9H5rvtydrSPtuEXAC66b6gel59hrgdlruN11uRT6f72psqDhk4rmeIx0TEFi6Hi9ahAusG/OiJursCA=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 17, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAABEAAAACAAAAAQAAADD6NVpobeSpMu5YcDZV7xhbhQE0m4hAxNq9+tdrA86z4AAAAABZ8OAjAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABA/H3dXLg0slGLdLfmyjFyEZZvsADWon5YCZDKx9uplyylXJ380GEYrjsCui4b/f0hvokW++F9IF3BUFKA8dVzBg=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 18, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAABIAAAACAAAAAQAAADBl3lMFyqJk/7SrIhLmAlmefhGu9vyKUehAC+MZcE3xWQAAAABZ8OAkAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABA2JvtUjaXqbKiIAJfk4Q5r35Z8HLRngpKJtYK75P2wvCYOOULSlSCiX1/jCHfR/iUPDYbj+V5oYfXnc29OlAwBQ=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 19, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAABMAAAACAAAAAQAAADDgoSxeSdt5DnxIpbN2sDeo04VIQshyaSErRXNbssX1awAAAABZ8OAlAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABADUlkJ3NnXlg8p/OrW2Cp8sdkUsgiUPQ4xsNcVXw9+V2xK+Rjh3/cBFG6yqikJmkvJ27puwd/ieWuK184NHAcAw=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 20, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAABQAAAACAAAAAQAAADD83qgrkxCuhHgaojamsqRS8TfLOcLLbn3cazIWQaS9LAAAAABZ8OAmAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAn/gZBH78jRR+4pR+zYYwVuZtVQoC6Wqo6fH+QDQ80I2JQuW4Zzpds+tk3jeuXMP/ML9hrVSHNOGqWEUMMgHWDA=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 21, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAABUAAAACAAAAAQAAADAVTlTQhxyBwDm0QxmYv4vJNZg/bYdFRaX1COkO0Xm5KQAAAABZ8OAnAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAsoLsKxBOGMNK/a/z20Pgk2rquuHCPXERG6upCXvLyMY6PDDPJl2ZuBy2S0hN+3EHGshwH9ad9PyM9dxOii0IDA=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 22, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAABYAAAACAAAAAQAAADDO3txFuwjAQpE9q5jSi4s9juS2sxAzmpoDaK1hRPs2XgAAAABZ8OAoAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAbu5xcx25DtjYHG6QII6NlP5/+lErFXafeHdgqfU4Zz0THTrb0EkKXqbyHxRQ1feq/ukhE0wHmdX1e4wEzw05BA=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 23, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAABcAAAACAAAAAQAAADAeZf4rLaxvMXkm94vcFKOaa24Qntu73cr8B8Q2ndmBqgAAAABZ8OApAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABA1FHYrmb4WG4//72WkPNggrgVlFsA597lDpnEYiXxc5nODrjBD9+k8/gwGSGsIwc53fzmNdgbxWMoLdji0y8zDQ=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 24, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAABgAAAACAAAAAQAAADBMgRYm40C/vl6VH8aJJYlntkvZHPETzb6cZUCMOvNiFQAAAABZ8OAqAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAe9bYTyZHFD0sTLvm/mf/ERVvLXGXCULhJKHG75rEf8HUv39pgcYsPPDa2Ls9402LOFp1gyL5wRbllV85tg07DQ=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 25, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAABkAAAACAAAAAQAAADA4l5UcJbCV6qpjwXlPqhl0S+LDAsuhjjtH2/N0DeubWQAAAABZ8OArAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABA9mGS6EY1MRQQkPy+7qYHki3xSSHg2Z064DH2GlvWZWlvwS0g0QCgOWZ8mmDTjYW+gk9d2an0Z4A8jflnTUaPCg=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 26, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAABoAAAACAAAAAQAAADAieiGFy2ldxDQG3T/zwUUEgWcmSVWn4q7lQpRtbGGs+wAAAABZ8OAsAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAfu/c+Dn0VeajQd/pakc2Bzgb+k0EB7gN3+7TG70G1eJmZU9uTJ01zX/7tk1EuuQhFbKFyv3nrtIzWcl9YXH2CA=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 27, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAABsAAAACAAAAAQAAADDbw1v4LlsXdGFZ0azCyfquUeyVmcPrBW18ZxqBwzr/MQAAAABZ8OAtAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABA66Qw+GEt0SwA0WkNodpXHbIoYLr4rl87mIToBgbQuQq3q5lSowCkGZYxdBWaJENgshuTgthnOay0F7KhtyQFDg=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 28, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAABwAAAACAAAAAQAAADDo+xi9eWyOu6Lwhjo0eUDRboZufVEyOFCF/buz4gk6IAAAAABZ8OAuAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAqNjk7Y7g/G6qpYCsCzROdeKJSVw+glJ3sOzoL8NCmSR63RnZX6U57hnZESTUn868gQyNxmDJKgZz7vPq09wvBQ=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 29, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAAB0AAAACAAAAAQAAADCm+PfEjcEnHKuTOkZuBqFzvVzDou12YB5CEoTVR+4SjwAAAABZ8OAvAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAHC/F8fjgC+WidrSHjU1M0tHnIdwmb294naQUTwR4KMTsBt5fq8Kjhpla/eFK7ogfSUAbLk87vgb7yRviPFIIAQ=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 30, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAAB4AAAACAAAAAQAAADCiY4OcVxnr5Q192/Ob8MZPwuC02PdnrkYHhczI9nbOaAAAAABZ8OAwAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABA96VwmBB21gxDupOaEOXX4kLjbyE3D/ey6ai6FmTwUQcmuYTQtlT2IDHzqkM1QLy++kXG2qOVWvZ/5zLjG4fSCg=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 31, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAAB8AAAACAAAAAQAAADDg84SldpmrRocSa+W2jo0IYzQ0RdMqz7rMY1baj5iyfAAAAABZ8OAxAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAGUVfLNktK4Iy7C4oiCFg/cRfb0mxjrg9Ch1p9sAp6Eqdg04C+y86YVzGWo54IMpuwSAMla3RTkoGD8OJi4wbDA=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 32, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAACAAAAACAAAAAQAAADBWLVlIoWeZ6V3j1NxeJh3iMq+E9ju1n3Vpcb270kF9BQAAAABZ8OAyAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAg9FMQJWQ+OhdeUkUtozBP1RJlMb1g8ChnPbEzHUcCvg+8F/cpke+3LAQ3qBiWwrL5eFkwj2F8uPMbpv1G3yyDA=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 33, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAACEAAAACAAAAAQAAADCpYQtoxxBLnk7GkS08/t9YIvaWuhCGKtkfluVjwpHhrwAAAABZ8OAzAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAlBFo6sCVaD0l1F37buNN0+P5gDMUtwGpyNgnNTA34x+t2/gxWc7ns4iGGB3bwtIGTcIc7Wywm/edAwDpXAdqBA=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 34, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAACIAAAACAAAAAQAAADBCEg0p9IJLxyX6+Fl+qU6UZL2ai27hsXD45QJELcCN0wAAAABZ8OA0AAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAHt+bE9wSx1pmotTNZDVk+IGYjtI28vudef4ss2gp3AFD5BN75TgYV7VkrRc6XDLTXBRleDI+D+JEmyldGg+qAw=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 35, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAACMAAAACAAAAAQAAADDRWzmATFBvGY6WjxJaH+vbLQRTtfNQcV+vmKoovsrvkAAAAABZ8OA1AAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAL9+cNiZ/8tZsb17l6tEOE+DAG2YIdbODFv5LyDbRSqnnu12SnJF9c7zzUhAPRz9xFhKQtV94um8V8wAP+7OyBQ=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 36, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAACQAAAACAAAAAQAAADBq6vxrvpJ8gXExNlBkyOAnG+RUM3isSrIhcba4rWqZfAAAAABZ8OA2AAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAHAkRRIseSn7qMMTPScyDBxWniYjGN2lCuaZTiTB3HdaY2QrYbo7F/gh2DkYBlEpgrUiHQc1FTsnXj25ulRlZDQ=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 37, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAACUAAAACAAAAAQAAADA/ngx6Qha8i7GXbN1JnljNWo+fcAiMVu6DlarFV7MC+gAAAABZ8OA3AAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABADljHtFqSDC8nU9g8hcMiAFuXKfxgQuZfMnNM1ILRZMFArjbAd92eHN+XqHdoFAedRzjNn2cfBmMiwy58LlgiAw=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 38, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAACYAAAACAAAAAQAAADDJNutqTK9luR8M91zc26rahl0i/sUgN/Kd72yGYmM6fQAAAABZ8OA4AAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABA2EjcO0f4M5tHMA90LvpSjbxs89BisDkwI+AnGjSxvZdDgX/23b+a9GE4YsTQI2dRwDW6/nnLRlm27aJWaaw1AA=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 39, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAACcAAAACAAAAAQAAADCgGJH5ladVBd8nB8VQ2Cygc3TyNt6Ny+/eVdq1G5dDUgAAAABZ8OA5AAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABA0C3mh6A/Y9mmrOra8zGfsp35FzP2JUkgN7hkvCc87wLDn4woyJ+VS9PRx3YM0jK456KDWde5J3V+2bChEqmDBw=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 40, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAACgAAAACAAAAAQAAADDHT5LSKSjJ/5t6sRE15+6xWks3sXl1+9meHMU6ESTlqgAAAABZ8OA6AAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAB7KqWEQpn7uAcdZyf2Told2cByDUBjDpaTLMi6kho7k086+dQdqbAiaeWU+AkDmM1RmK9G2HmaM9bEXWOCG5CA=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 41, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAACkAAAACAAAAAQAAADDIVsHNEjKZtN0fIgGf2yuOOZFQZPfeQ4oSZS6+Q5P8NAAAAABZ8OA7AAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAByzQge2Yeb+Erf4nHJYPo9ydXW/iOQ/Z8PhzKbo6yyb1YlA1xCVx1fF7eTa3kBHrRg0etx2wTVxkqf2ST5baCg=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 42, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAACoAAAACAAAAAQAAADCKzBbiCcMP3rkrHcysAqO2h9QMs9rJwnx0PNbOWVAx7wAAAABZ8OA8AAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAuXM4GqgWzKYnnjPkQTzjffCvRIU/EL6M7a/vna/lcB5JczFCP6pnxbhh2kXTIKM+1rMPUpkqTqAwFQrXK0qaCw=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 43, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAACsAAAACAAAAAQAAADB8p0YhkOo2fRRBB/j1dRYBhAANBBgO6NsRJ7I+dBNhgAAAAABZ8OA9AAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAAEZbmTcv7lcHSsF+e8UjeOK4zzFAtQ34sZcE9hoEnFZwMMaINEYQJhw2rGglrbK+gTGx0tO4aWvooiu0lADvDQ=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 44, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAACwAAAACAAAAAQAAADD/UbEodc6KdS9R4lr4v4rbZ2GjAf9JF8NdBh2TvtxPWAAAAABZ8OA+AAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAF9b2L+vGvWHlxRLtuBoRqvNCnpesivC8xiMv7T3efTw68CrolOxRtiEMV6rsDrAGZ6RUPNhvxkTRUveU2fDBBg=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 45, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAAC0AAAACAAAAAQAAADBemR5nhDJauGI1+W0BkKfYBCtarfHYFxDru+hZp+1xzgAAAABZ8OA/AAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAiiTiKrGhFeLx0vAdHwGj2WEt0kFJTZ5wzaJtpnnQxNluZdvmL/FBJTCAZY/rdkrXAAE0S5BKPs/fceZaopEKAg=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 46, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAAC4AAAACAAAAAQAAADDtWwXgfjUNMHEHhWHiY0f+Mougq2jrFrp2EzkdjWQUywAAAABZ8OBAAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAmbuLCXrvFLhK5yWN9ry4T/8/D3if6/wVlzW/4JuVuTzp4h1tW+K9YRwwkluTSi17gg2otitNws+aaLdljUMPDA=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 47, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAAC8AAAACAAAAAQAAADBsawtmNrHTlXI8BMQIp/RIrP9HmEILwZ+Es7fZcHJi8gAAAABZ8OBBAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAmPZD0uiG0VoPPCH8Ectlz4X/yh8jJCXg3Pa3Ra4CnfB34cWuDWpYkrJ1JwOrxvgtpdqnlTiP6myJYwmtjgg1Dg=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 48, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAADAAAAACAAAAAQAAADBmuyfTEBjCowxM3Njiv8/lrHv4jOjmeF9yh6dXJMjM6gAAAABZ8OBCAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABADgYvvWfhoRfoDF2kJReYYSeHkuR6DGaeUZN/HehAQrnTD3Q5Kw/TG4y/y+2rgyKRnmBAG1SJxYLOBuz/fL7ADQ=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 49, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAADEAAAACAAAAAQAAADBWJEQ1wUEoAXN/2jqkSvOQFyiQmBTtp+kvZlP1KMMacgAAAABZ8OBDAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABADM68N/+MAq/AwK5loa7FOaur7G+0jiyfbPqabITzR01BMrC9diFJJ9C+VukTU2V89RXG0r9UR+d+bhvB+TuzDQ=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 50, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAADIAAAACAAAAAQAAADBZgcVlGj5qFaY+N88SwYMrB2+by22iAHbzR2vEs3RcXwAAAABZ8OBEAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABA6DfMqZJ4LdHJYPYMPngGJGBVSH/qrhQdykY4BuiqW3Bf3vkL4/3IbvJGhmhatogeSDhzjNvtXW7WtWG9WO+dDA=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 51, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAADMAAAACAAAAAQAAADADMjGCu2lc7D8fYW8DetlLl+NlkT7/CM7BDbCzOtTXfQAAAABZ8OBFAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABALArMJQ/U3jntZYRxHe1S3OD+u2qmbbji296aQcBH/jdN2chasJeNnF0kNKRXWlR7FFB1Bk2AzMjC47rDrJS0Dw=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 52, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAADQAAAACAAAAAQAAADCwq1LSul76ICf4qbIu2HGjgJe6qOouHDIddfiVuvgmOgAAAABZ8OBGAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAP1QYWOm/IxeRMejYq8pyMlt1XN8LppSmbflX4NVibDptJe0Vidz4bVNXOzdIvQV9tE2UIuhUYG/hkokpdW/JAA=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 53, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAADUAAAACAAAAAQAAADAyVhqnwSP4aCawB7QO49lJtJKWmQNl86lLFxM1y3K96QAAAABZ8OBHAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAANUffWNuCi+//zPWNDSuI62iTQ9zoG6E56f3ZN6airSvDdkqSKkefcMOCm7wruHCnACZJbGpv/Oz1tDWZ+8NAg=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 54, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAADYAAAACAAAAAQAAADC7u7qY+j4P/h1bPRiIOrJNzKHgFxV0S107X3GS6zVKLgAAAABZ8OBIAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAUa9K9U0S+kIpTrLhLRQAKjLDJYIl+bXvzunfRf36L/N340kBZLJ9oFp7241hLyiMTFwzJt0L5Fgj/IGVo/KWCg=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 55, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAADcAAAACAAAAAQAAADDVqnWNNni2XHhNOpf7J4Y+tPpTMsNUG22gDkk1roKNmwAAAABZ8OBJAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABAraQdMBvd+fgnPfqSHeHGO+5nWGSDEvtKITvXWqzhp/oUnGKJg48aH3InAivcmH28lKw9g/16bs21hCo/dOuDCQ=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 56, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAADgAAAACAAAAAQAAADChsC4f02rEeQ9MQgdSpRoTj3bfDMM0ZRR+36sgEQb+WAAAAABZ8OBKAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABA7+FchoUMJ9ltbxQfrWIw9FKwXirAuFSVJlnoqW247GuHBDJR3oMj5nK6v/HgZl1W+IimqJCRT55j4p2gIAv5Bg=='); +INSERT INTO scphistory VALUES ('GBLCXA3E2CC5M7GA4WZ4XAAQGQGHDLJ3F4K6X23WCCH2SFB62NGPGNEY', 57, 'AAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAADkAAAACAAAAAQAAADBNUyVWzXvdS5CGKrYldn/1JQQdYBAKPY6xvXgc+zAQBwAAAABZ8OBLAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABADYXwd3GOg/aVkmKgrHMRDmshjXetHd0a0N8HAoP371K+qViRvW55vWh3WtJnDs0Trk8Keb9KVreJDMRWkmsaBw=='); + + +-- +-- Data for Name: scpquorums; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scpquorums VALUES ('0f8452108c7f19c3d5fe45eb49bcd6eb842ae4a9acab74de42fd7be7623e4755', 57, 'AAAAAQAAAAEAAAAAViuDZNCF1nzA5bPLgBA0DHGtOy8V6+t2EI+pFD7TTPMAAAAA'); + + +-- +-- Data for Name: signers; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO signers VALUES ('GDXFAGJCSCI4CK2YHK6YRLA6TKEXFRX7BMGVMQOBMLIEUJRJ5YQNLMIB', 'GD3E7HKMRNT6HGBGHBT6I6JE4N2S4W5KZ246TGJ4KQSXJ2P4BXCUPQMP', 1); + + +-- +-- Data for Name: storestate; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO storestate VALUES ('databaseschema ', '5'); +INSERT INTO storestate VALUES ('forcescponnextlaunch ', 'false'); +INSERT INTO storestate VALUES ('lastclosedledger ', '6cf23b5b98c4094998070403e133228bc7579f4c79062a70c30e09015b58b667'); +INSERT INTO storestate VALUES ('historyarchivestate ', '{ + "version": 1, + "server": "v0.6.3-66-gd66575cf", + "currentLedger": 57, + "currentBuckets": [ + { + "curr": "baca585fda6e85acd2c53bf1c3e0ff5a0264f8d9f83acd07c3e7f2d6c178a837", + "next": { + "state": 0 + }, + "snap": "c2d4b45a6abf33d469f1bd80084fa03321464eb6bf6bf6bbf52d1ab97e9f2e2f" + }, + { + "curr": "5354e184cc86d8c9e4ac5b84688d0115764df0b8cb3a06e8c474d15d01e677fa", + "next": { + "state": 1, + "output": "f7ca506af550ca0c72d9112c03f398f9b2e6790b8ba9a93243fd05aedcf3295a" + }, + "snap": "8a17a85323f2834ea4ebfba73b1bd2c35e720492d7aabea37173f8db43f0954b" + }, + { + "curr": "4b2d37390c4a82ce08338a0171e95e76e2b0660de01d52fa59a8a5d199f85c52", + "next": { + "state": 1, + "output": "396f06dde3891b4b669d5ac3c8819f20c9fea5be56585724e58ae3b6f7471cb5" + }, + "snap": "8b1570ba3fbd3f4311a8c8bb1ae1ff5e2c34e80f127854dfae978f0bd58d2e47" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 1, + "output": "8b1570ba3fbd3f4311a8c8bb1ae1ff5e2c34e80f127854dfae978f0bd58d2e47" + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + } + ] +}'); +INSERT INTO storestate VALUES ('lastscpdata ', 'AAAAAgAAAABWK4Nk0IXWfMDls8uAEDQMca07LxXr63YQj6kUPtNM8wAAAAAAAAA5AAAAAw+EUhCMfxnD1f5F60m81uuEKuSprKt03kL9e+diPkdVAAAAAQAAADBNUyVWzXvdS5CGKrYldn/1JQQdYBAKPY6xvXgc+zAQBwAAAABZ8OBLAAAAAAAAAAAAAAABAAAAME1TJVbNe91LkIYqtiV2f/UlBB1gEAo9jrG9eBz7MBAHAAAAAFnw4EsAAAAAAAAAAAAAAEA4hI1QbVoOWvpu+tfDBUp3T0pIvTPDTOjaJqQ4WZ/8In1v926vDOZxeS6C86t2eLYyTNS6p5BWtiAoZ6NMeDoMAAAAAFYrg2TQhdZ8wOWzy4AQNAxxrTsvFevrdhCPqRQ+00zzAAAAAAAAADkAAAACAAAAAQAAADBNUyVWzXvdS5CGKrYldn/1JQQdYBAKPY6xvXgc+zAQBwAAAABZ8OBLAAAAAAAAAAAAAAABD4RSEIx/GcPV/kXrSbzW64Qq5Kmsq3TeQv1752I+R1UAAABADYXwd3GOg/aVkmKgrHMRDmshjXetHd0a0N8HAoP371K+qViRvW55vWh3WtJnDs0Trk8Keb9KVreJDMRWkmsaBwAAAAG+etYGeLNvC7ZNVbgOx/6WTaCSnt0Q8mcKcnCx/z3WqQAAAAAAAAABAAAAAQAAAAEAAAAAViuDZNCF1nzA5bPLgBA0DHGtOy8V6+t2EI+pFD7TTPMAAAAA'); + + +-- +-- Data for Name: trustlines; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO trustlines VALUES ('GANZGPKY5WSHWG5YOZMNG52GCK5SCJ4YGUWMJJVGZSK2FP4BI2JIJN2C', 1, 'GCHC4D2CS45CJRNN4QAHT2LFZAJIU5PA7H53K3VOP6WEJ6XWHNSNZKQG', 'USD', 9223372036854775807, 100000000, 1, 15); +INSERT INTO trustlines VALUES ('GDRW375MAYR46ODGF2WGANQC2RRZL7O246DYHHCGWTV2RE7IHE2QUQLD', 1, 'GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU', 'USD', 9223372036854775807, 0, 1, 19); +INSERT INTO trustlines VALUES ('GACAR2AEYEKITE2LKI5RMXF5MIVZ6Q7XILROGDT22O7JX4DSWFS7FDDP', 1, 'GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU', 'EUR', 9223372036854775807, 3000000000, 1, 20); +INSERT INTO trustlines VALUES ('GBOK7BOUSOWPHBANBYM6MIRYZJIDIPUYJPXHTHADF75UEVIVYWHHONQC', 1, 'GB2QIYT2IAUFMRXKLSLLPRECC6OCOGJMADSPTRK7TGNT2SFR2YGWDARD', 'USD', 9223372036854775807, 200000000, 1, 24); +INSERT INTO trustlines VALUES ('GCVW5LCRZFP7PENXTAGOVIQXADDNUXXZJCNKF4VQB2IK7W2LPJWF73UG', 1, 'GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF', 'USD', 9223372036854775807, 0, 1, 41); +INSERT INTO trustlines VALUES ('GCVW5LCRZFP7PENXTAGOVIQXADDNUXXZJCNKF4VQB2IK7W2LPJWF73UG', 1, 'GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF', 'EUR', 9223372036854775807, 0, 0, 42); + + +-- +-- Data for Name: txfeehistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txfeehistory VALUES ('f5e0d1f500b2d0c4b42fb8a438d5ed764bc58d1392f4328f4713af407b1968ca', 3, 1, 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('66e27fb28870cb5256ea92764bcb222adbbaa5fec2d89a62a9aa8c9c8e2ee9e9', 4, 1, 'AAAAAgAAAAMAAAADAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrFTWBucAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrFTWBs4AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('e9d1a3000aea36743142f2ede106d3cb37c3d7e88508e3f21b496370b5863858', 5, 1, 'AAAAAgAAAAMAAAAEAAAAAAAAAADuUBkikJHBK1g6vYisHpqJcsb/Cw1WQcFi0EomKe4g1QAAAAJUC+QAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAADuUBkikJHBK1g6vYisHpqJcsb/Cw1WQcFi0EomKe4g1QAAAAJUC+OcAAAABAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('995b9269f9f9c4c1eace75501188766d6e8ae40c5413120811a50437683cb74c', 5, 2, 'AAAAAQAAAAEAAAAFAAAAAAAAAADuUBkikJHBK1g6vYisHpqJcsb/Cw1WQcFi0EomKe4g1QAAAAJUC+M4AAAABAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('f78dca926455579b4a43009ffe35a0229a6da4bed32d3c999d7a06ad26605a25', 5, 3, 'AAAAAQAAAAEAAAAFAAAAAAAAAADuUBkikJHBK1g6vYisHpqJcsb/Cw1WQcFi0EomKe4g1QAAAAJUC+LUAAAABAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('a9085e13fbe9f84e07e320a0d445536de1afc2cfd8c7e4186687807edd2b4897', 6, 1, 'AAAAAgAAAAMAAAAFAAAAAAAAAADuUBkikJHBK1g6vYisHpqJcsb/Cw1WQcFi0EomKe4g1QAAAAJUC+LUAAAABAAAAAMAAAABAAAAAAAAAAAAAAAAAQICAgAAAAEAAAAA9k+dTItn45gmOGfkeSTjdS5bqs656Zk8VCV06fwNxUcAAAABAAAAAAAAAAAAAAABAAAABgAAAAAAAAAA7lAZIpCRwStYOr2IrB6aiXLG/wsNVkHBYtBKJinuINUAAAACVAvicAAAAAQAAAAEAAAAAQAAAAAAAAAAAAAAAAECAgIAAAABAAAAAPZPnUyLZ+OYJjhn5Hkk43UuW6rOuemZPFQldOn8DcVHAAAAAQAAAAAAAAAA'); +INSERT INTO txfeehistory VALUES ('0fb9c2e20946222b23e1d1d660de9d74576c41cfd9b199f9d565a013c1ef89ca', 7, 1, 'AAAAAgAAAAMAAAAEAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtq7/TDc4AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAHAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtq7/TDbUAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('dd74eee27a59843b28a05ad08abf65eaa231b7debe4d05550c0a7a424cca5929', 8, 1, 'AAAAAgAAAAMAAAAHAAAAAAAAAAA56sVBEtGr+Hdd/gQSsSrPugP3CTbTNf53+Hh1dzsNOgAAAAJUC+QAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAIAAAAAAAAAAA56sVBEtGr+Hdd/gQSsSrPugP3CTbTNf53+Hh1dzsNOgAAAAJUC+OcAAAABwAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('2551e76a3ce4881b7bc73fdfd89d670d511ea7d4e56156252b51777023202de7', 8, 2, 'AAAAAQAAAAEAAAAIAAAAAAAAAAA56sVBEtGr+Hdd/gQSsSrPugP3CTbTNf53+Hh1dzsNOgAAAAJUC+M4AAAABwAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('3b36ecfbcc2adb0cfff08ae86199f64e12984f084bb03be9bb249611df82322b', 8, 3, 'AAAAAQAAAAEAAAAIAAAAAAAAAAA56sVBEtGr+Hdd/gQSsSrPugP3CTbTNf53+Hh1dzsNOgAAAAJUC+LUAAAABwAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('e14885cb66af5f7f5e991b014eec475c61cc831292cf5526cdd0cda145300837', 8, 4, 'AAAAAQAAAAEAAAAIAAAAAAAAAAA56sVBEtGr+Hdd/gQSsSrPugP3CTbTNf53+Hh1dzsNOgAAAAJUC+JwAAAABwAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('66c28c0ccd5a2e47026aacafa2ecd3c501fe5de349ef376c0f8afb893c7bb55d', 9, 1, 'AAAAAgAAAAMAAAAIAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtqytoqzUAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAJAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtqytoqxwAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('fdb696a797b769176cbaed3a50e4a6a8671119621f65a3f954a3bcf100c7ef0c', 10, 1, 'AAAAAgAAAAMAAAAJAAAAAAAAAAAN3U7egAPpmax0171jjN0hBbWtO8h8ARiL/SKX2QViXgAAAAJUC+QAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAKAAAAAAAAAAAN3U7egAPpmax0171jjN0hBbWtO8h8ARiL/SKX2QViXgAAAAJUC+M4AAAACQAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('67601a2ca212b84092a7d3c521172b67f4b93d72b726a06c540917d2ab83c1a1', 11, 1, 'AAAAAgAAAAMAAAAKAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtqplgopwAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAALAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtqplgooMAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('0e128647b2b93786b6b76e182dcda0173757066f8caf0523d1ba3b47fd6f720d', 12, 1, 'AAAAAgAAAAMAAAALAAAAAAAAAADFWYTSISn1LvRh2SuEC7p1PiNKc+9tS7OK1DigFx9oMwAAAAJUC+QAAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAMAAAAAAAAAADFWYTSISn1LvRh2SuEC7p1PiNKc+9tS7OK1DigFx9oMwAAAAJUC+OcAAAACwAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('cd8a8e9eb53fd268d1294e228995c27f422d90783c4054e44ab0028fc1da210a', 13, 1, 'AAAAAgAAAAMAAAALAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtqgRdqYMAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAANAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtqgRdqWoAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('bfbd5e9457d717bcf847291a6c24b7cd8db4ff784ecd4592be30d08146c0c264', 13, 2, 'AAAAAQAAAAEAAAANAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtqgRdqVEAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('dbd964fcfdb336a30f21c240fffdaf73d7c75880ed1b99375c62f84e3e592570', 14, 1, 'AAAAAgAAAAMAAAANAAAAAAAAAAAbkz1Y7aR7G7h2WNN3RhK7ISeYNSzEpqbMlaK/gUaShAAAAAJUC+QAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAOAAAAAAAAAAAbkz1Y7aR7G7h2WNN3RhK7ISeYNSzEpqbMlaK/gUaShAAAAAJUC+OcAAAADQAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('30880dd42d8e402a30d8a3527b56c1e33e18e87c46e1332ea5cfc1721fd87cfb', 14, 2, 'AAAAAgAAAAMAAAANAAAAAAAAAACOLg9Clzokxa3kAHnpZcgSinXg+fu1bq5/rET69jtk3AAAAAJUC+QAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAOAAAAAAAAAACOLg9Clzokxa3kAHnpZcgSinXg+fu1bq5/rET69jtk3AAAAAJUC+OcAAAADQAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('142c988b1f67984f74a1581de9caecf499e60f1e0eed496661aa2c559238764c', 15, 1, 'AAAAAgAAAAMAAAAOAAAAAAAAAACOLg9Clzokxa3kAHnpZcgSinXg+fu1bq5/rET69jtk3AAAAAJOFgKcAAAADQAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAPAAAAAAAAAACOLg9Clzokxa3kAHnpZcgSinXg+fu1bq5/rET69jtk3AAAAAJOFgI4AAAADQAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('a5a9e3ca63e9cc155359c97337bcb14464cca56b230a4d0c7f27582644d16809', 16, 1, 'AAAAAgAAAAMAAAANAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtqNpXt1EAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAQAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtqNpXtzgAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('6a056189b45760c607e331c90c5a8b4cd720961df8bc8cecfd4aa388b577a6cb', 16, 2, 'AAAAAQAAAAEAAAAQAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtqNpXtx8AAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('18bf6cce20cfbb0f9079c4b8783718949d13bd12d173a60363d2b8e3a07efead', 16, 3, 'AAAAAQAAAAEAAAAQAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtqNpXtwYAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('cdef45dd961d59375351ea7dd7ef6414ff49371a335723e84dafacea1e13665a', 17, 1, 'AAAAAgAAAAMAAAAQAAAAAAAAAADjbf+sBiPPOGYurGA2AtRjlf3a54eDnEa066iT6Dk1CgAAAAJUC+QAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAARAAAAAAAAAADjbf+sBiPPOGYurGA2AtRjlf3a54eDnEa066iT6Dk1CgAAAAJUC+OcAAAAEAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('d1f593eb5e14f97027bc79821fa46628c107034fba9a5acef6a9da79e051ee73', 17, 2, 'AAAAAgAAAAMAAAAQAAAAAAAAAAAECOgEwRSJk0tSOxZcvWIrn0P3QuLjDnrTvpvwcrFl8gAAAAJUC+QAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAARAAAAAAAAAAAECOgEwRSJk0tSOxZcvWIrn0P3QuLjDnrTvpvwcrFl8gAAAAJUC+OcAAAAEAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('902b90c2322b9e6b335e7543389a7446b86e3039ebf59ec66dffb50eaec0dc85', 18, 1, 'AAAAAgAAAAMAAAAQAAAAAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAJUC+QAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAASAAAAAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAJUC+OcAAAAEAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('ca756d1519ceda79f8722042b12cea7ba004c3bd961adb62b59f88a867f86eb3', 18, 2, 'AAAAAQAAAAEAAAASAAAAAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAJUC+M4AAAAEAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('37bb79f6959c0e8e9b3d31f6c9308d8d084d9c6742cfa56ca094cfa6eae99423', 18, 3, 'AAAAAQAAAAEAAAASAAAAAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAJUC+LUAAAAEAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('198844c8b472daacc5b717695a4ca16ac799a13fb2cf4152d19e2117ae1c56c3', 19, 1, 'AAAAAgAAAAMAAAARAAAAAAAAAADjbf+sBiPPOGYurGA2AtRjlf3a54eDnEa066iT6Dk1CgAAAAJUC+OcAAAAEAAAAAEAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAATAAAAAAAAAADjbf+sBiPPOGYurGA2AtRjlf3a54eDnEa066iT6Dk1CgAAAAJUC+M4AAAAEAAAAAIAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('f08dc1fec150f276562866ce4f5272f658cf0bd9fd8c1d96a22c196be2e1b25a', 20, 1, 'AAAAAgAAAAMAAAATAAAAAAAAAADjbf+sBiPPOGYurGA2AtRjlf3a54eDnEa066iT6Dk1CgAAAAJUC+M4AAAAEAAAAAIAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAUAAAAAAAAAADjbf+sBiPPOGYurGA2AtRjlf3a54eDnEa066iT6Dk1CgAAAAJUC+LUAAAAEAAAAAMAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('2a6987a6930eab7e3becacf9b76ed7a06802668c1f1eb0f82f5671014b4b636a', 21, 1, 'AAAAAgAAAAMAAAAQAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtpxtOzAYAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAVAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtpxtOy+0AAAAAAAAAAsAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('96415ac1d2f79621b26b1568f963fd8dd6c50c20a22c7428cefbfe9dee867588', 21, 2, 'AAAAAQAAAAEAAAAVAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtpxtOy9QAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('be05e4bd966d58689e1b6fae013e5aa77bde56e6acd2db9b96870e5e746a4ab7', 22, 1, 'AAAAAgAAAAMAAAAVAAAAAAAAAABcr4XUk6zzhA0OGeYiOMpQND6YS+55nAMv+0JVFcWOdwAAAAJUC+QAAAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAWAAAAAAAAAABcr4XUk6zzhA0OGeYiOMpQND6YS+55nAMv+0JVFcWOdwAAAAJUC+OcAAAAFQAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('d8b2508123656b1df1ee17c2767829bc22ab41959ad25e6ccc520e849516fba1', 23, 1, 'AAAAAgAAAAMAAAAWAAAAAAAAAABcr4XUk6zzhA0OGeYiOMpQND6YS+55nAMv+0JVFcWOdwAAAAJUC+OcAAAAFQAAAAEAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAXAAAAAAAAAABcr4XUk6zzhA0OGeYiOMpQND6YS+55nAMv+0JVFcWOdwAAAAJUC+M4AAAAFQAAAAIAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('01346de1ca30ce03149d9f54945956a22f9cbed3d81f81c62bb59cf8cdd8b893', 24, 1, 'AAAAAgAAAAMAAAAVAAAAAAAAAAB1BGJ6QChWRupclrfEghecJxksAOT5xV+Zmz1IsdYNYQAAAAJUC+QAAAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAYAAAAAAAAAAB1BGJ6QChWRupclrfEghecJxksAOT5xV+Zmz1IsdYNYQAAAAJUC+OcAAAAFQAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('5065cd7c97cfb6fbf7da8493beed47ed2c7efb3b00b77a4c92692ed487fb86a4', 25, 1, 'AAAAAgAAAAMAAAAVAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtpfFI2dQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAZAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtpfFI2bsAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('a76e0260f6b83c6ea93f545d17de721c079dc31e81ee5edc41f159ec5fb48443', 26, 1, 'AAAAAgAAAAMAAAAZAAAAAAAAAAB8Zu1ppbycR+Qbk8/UJ/j51nE2PcyvLOmICI6kMm6GGAAAAAJUC+QAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAaAAAAAAAAAAB8Zu1ppbycR+Qbk8/UJ/j51nE2PcyvLOmICI6kMm6GGAAAAAJUC+OcAAAAGQAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('92a654c76966ac61acc9df0b75f91cbde3b551c9e9766730827af42d1e247cc3', 26, 2, 'AAAAAQAAAAEAAAAaAAAAAAAAAAB8Zu1ppbycR+Qbk8/UJ/j51nE2PcyvLOmICI6kMm6GGAAAAAJUC+M4AAAAGQAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('700fa44bb40e6ad2c5888656cd2e7b8d86de3d3557b653ae6874466175d64927', 27, 1, 'AAAAAgAAAAMAAAAZAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtpVxF4LsAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAbAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtpVxF4KIAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('fe3707fbd5c844395c598f31dc719c61218d4cea4e8dddadb6733f4866089100', 28, 1, 'AAAAAgAAAAMAAAAbAAAAAAAAAACQUsYKOw/kj+JXXI5eosCY2LS+fgH0zFHZXnenMJ4wUAAAAAJUC+QAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAcAAAAAAAAAACQUsYKOw/kj+JXXI5eosCY2LS+fgH0zFHZXnenMJ4wUAAAAAJUC+OcAAAAGwAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('345ef7f85c6ea297e3f994feef279b63812628681bd173a1f615185a4368e482', 28, 2, 'AAAAAQAAAAEAAAAcAAAAAAAAAACQUsYKOw/kj+JXXI5eosCY2LS+fgH0zFHZXnenMJ4wUAAAAAJUC+M4AAAAGwAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('2a14735d7b05109359444acdd87e7fe92c98e9295d2ba61b05e25d1f7ee10fd3', 28, 3, 'AAAAAQAAAAEAAAAcAAAAAAAAAACQUsYKOw/kj+JXXI5eosCY2LS+fgH0zFHZXnenMJ4wUAAAAAJUC+LUAAAAGwAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('4f9598206ab17cf27b5c3eb9e906d63ebee2626654112eabdd2bce7bf12cccf2', 28, 4, 'AAAAAQAAAAEAAAAcAAAAAAAAAACQUsYKOw/kj+JXXI5eosCY2LS+fgH0zFHZXnenMJ4wUAAAAAJUC+JwAAAAGwAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('852ba25e0e4aa149a22dc193bcb645ae9eba23e7f7432707f3b910474e9b6a5b', 28, 5, 'AAAAAQAAAAEAAAAcAAAAAAAAAACQUsYKOw/kj+JXXI5eosCY2LS+fgH0zFHZXnenMJ4wUAAAAAJUC+IMAAAAGwAAAAUAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('8ccc0c28c3e99a63cc59bad7dec3f5c56eb3942c548ecd40bc39c509d6b081d4', 28, 6, 'AAAAAQAAAAEAAAAcAAAAAAAAAACQUsYKOw/kj+JXXI5eosCY2LS+fgH0zFHZXnenMJ4wUAAAAAJUC+GoAAAAGwAAAAYAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('83201014880073f8eff6f21ae76e51c2c4faf533e550ecd3c2205b48a092960a', 28, 7, 'AAAAAQAAAAEAAAAcAAAAAAAAAACQUsYKOw/kj+JXXI5eosCY2LS+fgH0zFHZXnenMJ4wUAAAAAJUC+FEAAAAGwAAAAcAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('69f64ae0f809b08996c1f394ee795001a40eee69adb675ab63bfd1932d3aafb2', 29, 1, 'AAAAAgAAAAMAAAAcAAAAAAAAAACQUsYKOw/kj+JXXI5eosCY2LS+fgH0zFHZXnenMJ4wUAAAAAJUC+FEAAAAGwAAAAcAAAABAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAMAAAALZXhhbXBsZS5jb20AAgACAgAAAAEAAAAAfJ3Zy1YgTyqjyQHEjYWc3Nph+30O0bcxshQPJhZDE5AAAAABAAAAAAAAAAAAAAABAAAAHQAAAAAAAAAAkFLGCjsP5I/iV1yOXqLAmNi0vn4B9MxR2V53pzCeMFAAAAACVAvg4AAAABsAAAAIAAAAAQAAAAEAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcAAAADAAAAC2V4YW1wbGUuY29tAAIAAgIAAAABAAAAAHyd2ctWIE8qo8kBxI2FnNzaYft9DtG3MbIUDyYWQxOQAAAAAQAAAAAAAAAA'); +INSERT INTO txfeehistory VALUES ('c3cd47a311e025446f72c50426b5b5444e5261431fc5760e8e57467c87cd49fc', 30, 1, 'AAAAAgAAAAMAAAAdAAAAAAAAAACQUsYKOw/kj+JXXI5eosCY2LS+fgH0zFHZXnenMJ4wUAAAAAJUC+DgAAAAGwAAAAgAAAABAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAMAAAALZXhhbXBsZS5jb20AAgACAgAAAAEAAAAAfJ3Zy1YgTyqjyQHEjYWc3Nph+30O0bcxshQPJhZDE5AAAAABAAAAAAAAAAAAAAABAAAAHgAAAAAAAAAAkFLGCjsP5I/iV1yOXqLAmNi0vn4B9MxR2V53pzCeMFAAAAACVAvgfAAAABsAAAAJAAAAAQAAAAEAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcAAAADAAAAC2V4YW1wbGUuY29tAAIAAgIAAAABAAAAAHyd2ctWIE8qo8kBxI2FnNzaYft9DtG3MbIUDyYWQxOQAAAAAQAAAAAAAAAA'); +INSERT INTO txfeehistory VALUES ('299dc6631d585a55ae3602f660ec5b5a0088d24a14b344c72eccc2a62d9a8938', 31, 1, 'AAAAAgAAAAMAAAAeAAAAAAAAAACQUsYKOw/kj+JXXI5eosCY2LS+fgH0zFHZXnenMJ4wUAAAAAJUC+B8AAAAGwAAAAkAAAABAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAMAAAALZXhhbXBsZS5jb20AAgACAgAAAAEAAAAAfJ3Zy1YgTyqjyQHEjYWc3Nph+30O0bcxshQPJhZDE5AAAAABAAAAAAAAAAAAAAABAAAAHwAAAAAAAAAAkFLGCjsP5I/iV1yOXqLAmNi0vn4B9MxR2V53pzCeMFAAAAACVAvgGAAAABsAAAAKAAAAAQAAAAEAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcAAAADAAAAC2V4YW1wbGUuY29tAAIAAgIAAAABAAAAAHyd2ctWIE8qo8kBxI2FnNzaYft9DtG3MbIUDyYWQxOQAAAAAQAAAAAAAAAA'); +INSERT INTO txfeehistory VALUES ('bb9d6654111fae501594400dc901c70d47489a67163d2a34f9b3e32a921a50dc', 32, 1, 'AAAAAgAAAAMAAAAfAAAAAAAAAACQUsYKOw/kj+JXXI5eosCY2LS+fgH0zFHZXnenMJ4wUAAAAAJUC+AYAAAAGwAAAAoAAAABAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAMAAAALZXhhbXBsZS5jb20AAgACAgAAAAEAAAAAfJ3Zy1YgTyqjyQHEjYWc3Nph+30O0bcxshQPJhZDE5AAAAAFAAAAAAAAAAAAAAABAAAAIAAAAAAAAAAAkFLGCjsP5I/iV1yOXqLAmNi0vn4B9MxR2V53pzCeMFAAAAACVAvftAAAABsAAAALAAAAAQAAAAEAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcAAAADAAAAC2V4YW1wbGUuY29tAAIAAgIAAAABAAAAAHyd2ctWIE8qo8kBxI2FnNzaYft9DtG3MbIUDyYWQxOQAAAABQAAAAAAAAAA'); +INSERT INTO txfeehistory VALUES ('6b38cdd5c17df2013d5a5e211c4b32218b6be91025316b1aab28bc12316615d5', 32, 2, 'AAAAAQAAAAEAAAAgAAAAAAAAAACQUsYKOw/kj+JXXI5eosCY2LS+fgH0zFHZXnenMJ4wUAAAAAJUC99QAAAAGwAAAAwAAAABAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAMAAAALZXhhbXBsZS5jb20AAgACAgAAAAEAAAAAfJ3Zy1YgTyqjyQHEjYWc3Nph+30O0bcxshQPJhZDE5AAAAAFAAAAAAAAAAA='); +INSERT INTO txfeehistory VALUES ('6d78f17fafa2317d6af679e1e5420f351207ff61cdff21c600ea8f85155b3ea1', 33, 1, 'AAAAAgAAAAMAAAAbAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtpMdC56IAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAhAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtpMdC54kAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('a05daae230b1f743474e83ab6d4817df1f3f77661a7d815f7620cee2a9809480', 34, 1, 'AAAAAgAAAAMAAAAhAAAAAAAAAACSpN3qCVB3O3zvbXsbohhzeDcFjEyBYY+kN9E+HLVltQAAAAJUC+QAAAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAiAAAAAAAAAACSpN3qCVB3O3zvbXsbohhzeDcFjEyBYY+kN9E+HLVltQAAAAJUC+OcAAAAIQAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('4e2442fe2e8dd8c686570c9f537acb2f50153a9883f8d199b6f4701eb289b3a0', 35, 1, 'AAAAAgAAAAMAAAAiAAAAAAAAAACSpN3qCVB3O3zvbXsbohhzeDcFjEyBYY+kN9E+HLVltQAAAAJUC+OcAAAAIQAAAAEAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAjAAAAAAAAAACSpN3qCVB3O3zvbXsbohhzeDcFjEyBYY+kN9E+HLVltQAAAAJUC+M4AAAAIQAAAAIAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('44cb6c8ed4dbec542af1aad23001dd9d678cf19c8c461a653e762a7253eded82', 36, 1, 'AAAAAgAAAAMAAAAjAAAAAAAAAACSpN3qCVB3O3zvbXsbohhzeDcFjEyBYY+kN9E+HLVltQAAAAJUC+M4AAAAIQAAAAIAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAkAAAAAAAAAACSpN3qCVB3O3zvbXsbohhzeDcFjEyBYY+kN9E+HLVltQAAAAJUC+LUAAAAIQAAAAMAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('52388a98e4e36c17749a94374270cc65bdb7271cb51277f095aaa8f1ca9d322c', 37, 1, 'AAAAAgAAAAMAAAAkAAAAAAAAAACSpN3qCVB3O3zvbXsbohhzeDcFjEyBYY+kN9E+HLVltQAAAAJUC+LUAAAAIQAAAAMAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAlAAAAAAAAAACSpN3qCVB3O3zvbXsbohhzeDcFjEyBYY+kN9E+HLVltQAAAAJUC+JwAAAAIQAAAAQAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('afeb8080522eba71ca328225bbcf731029edcfa254c827c45be580bae95c7231', 38, 1, 'AAAAAgAAAAMAAAAhAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtpDI/7okAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAmAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtpDI/7nAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('2354df802111418a999e31c2964d16b8efe8e492b7d74de54939825190e1041f', 38, 2, 'AAAAAQAAAAEAAAAmAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtpDI/7lcAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('11705f94cd65d7b673a124a85ce368c80f8458ffaedff719304d8f849535b4e0', 39, 1, 'AAAAAgAAAAMAAAAmAAAAAAAAAAD5Jjibq+Rf5jsUyQ2/tGzCwiRg0Zd5nj9jARA1Skjz+AAAAAJUC+QAAAAAJgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAnAAAAAAAAAAD5Jjibq+Rf5jsUyQ2/tGzCwiRg0Zd5nj9jARA1Skjz+AAAAAJUC+OcAAAAJgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('6fa467b53f5386d77ad35c2502ed2cd3dd8b460a5be22b6b2818b81bcd3ed2da', 40, 1, 'AAAAAgAAAAMAAAAmAAAAAAAAAACrbqxRyV/3kbeYDOqiFwDG2l75SJqi8rAOkK/bS3psXwAAAAJUC+QAAAAAJgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAoAAAAAAAAAACrbqxRyV/3kbeYDOqiFwDG2l75SJqi8rAOkK/bS3psXwAAAAJUC+OcAAAAJgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('0bcb67aa365446fd244fecff3a0c397f81f3a9b13428688965e776d447c0b1ea', 40, 2, 'AAAAAQAAAAEAAAAoAAAAAAAAAACrbqxRyV/3kbeYDOqiFwDG2l75SJqi8rAOkK/bS3psXwAAAAJUC+M4AAAAJgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('6d2e30fd57492bf2e2b132e1bc91a548a369189bebf77eb2b3d829121a9d2c50', 41, 1, 'AAAAAgAAAAMAAAAnAAAAAAAAAAD5Jjibq+Rf5jsUyQ2/tGzCwiRg0Zd5nj9jARA1Skjz+AAAAAJUC+OcAAAAJgAAAAEAAAAAAAAAAAAAAAMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAApAAAAAAAAAAD5Jjibq+Rf5jsUyQ2/tGzCwiRg0Zd5nj9jARA1Skjz+AAAAAJUC+M4AAAAJgAAAAIAAAAAAAAAAAAAAAMAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('a832ff67085cb9eb6f1c4b740f6e033ba9b508af725fbf203469729a64a199ff', 41, 2, 'AAAAAQAAAAEAAAApAAAAAAAAAAD5Jjibq+Rf5jsUyQ2/tGzCwiRg0Zd5nj9jARA1Skjz+AAAAAJUC+LUAAAAJgAAAAMAAAAAAAAAAAAAAAMAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('d67cfb271a889e7854ffd61b08eacde76d56e758466fc37a8eec2d3a40ef8b14', 42, 1, 'AAAAAgAAAAMAAAApAAAAAAAAAAD5Jjibq+Rf5jsUyQ2/tGzCwiRg0Zd5nj9jARA1Skjz+AAAAAJUC+LUAAAAJgAAAAMAAAAAAAAAAAAAAAMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAqAAAAAAAAAAD5Jjibq+Rf5jsUyQ2/tGzCwiRg0Zd5nj9jARA1Skjz+AAAAAJUC+JwAAAAJgAAAAQAAAAAAAAAAAAAAAMAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('945b6171de747ab323b3cda52290933df39edd7061f6e260762663efc51bccb0', 43, 1, 'AAAAAgAAAAMAAAAmAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtowg5/FcAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAArAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtowg5/D4AAAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('e0773d07aba23d11e6a06b021682294be1f9f202a2926827022539662ce2c7fc', 44, 1, 'AAAAAgAAAAMAAAArAAAAAAAAAACO+5qjU8vVT4JoJ/v/7r4z/FScSdRR0OIwq2EviuPh7wAAAAJUC+QAAAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAsAAAAAAAAAACO+5qjU8vVT4JoJ/v/7r4z/FScSdRR0OIwq2EviuPh7wAAAAJUC+OcAAAAKwAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('5b42c77042f04bf716659a05e7ca3f4703af038a7da75b10b8538707c9ff172f', 45, 1, 'AAAAAgAAAAMAAAAsAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtowg5/CUAAAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAtAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtowg5/AwAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('d24f486bd722fd1875b843839e880bdeea324e25db706a26af5e4daa8c5071eb', 46, 1, 'AAAAAgAAAAMAAAAtAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wsaK5tl0/AwAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAuAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wsaK5tl0+/MAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('7207de5b75243e0b062c3833f587036b7e9f64453be49ff50f3f3fdc7516ec6b', 46, 2, 'AAAAAgAAAAMAAAAtAAAAAAAAAADj3dgEQp1N5U3fBSOCx/nr5XtiCmNJ2oMJZMx+MYK3JwLGivC7FAAAAAAALQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAuAAAAAAAAAADj3dgEQp1N5U3fBSOCx/nr5XtiCmNJ2oMJZMx+MYK3JwLGivC7E/+cAAAALQAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('ea93efd8c2f4e45c0318c69ec958623a0e4374f40d569eec124d43c8a54d6256', 47, 1, 'AAAAAgAAAAMAAAAuAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wsaK5tl0+/MAAAAAAAAABQAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAvAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wsaK5tl0+9oAAAAAAAAABUAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('eb8586c9176c4cf2e864b2521948a972db5274de24673669463e0c7824cee056', 48, 1, 'AAAAAgAAAAMAAAAvAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wsatl/x+h/EAAAAAAAAABUAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAwAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wsatl/x+h9gAAAAAAAAABYAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('9fff61916716fb2550043fac968ac6c13802af5176a10fc29108fcfc445ef513', 49, 1, 'AAAAAgAAAAMAAAAwAAAAAAAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAJUC+QAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAxAAAAAAAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAJUC+OcAAAAMAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('e4609180751e7702466a8845857df43e4d154ec84b6bad62ce507fe12f1daf99', 49, 2, 'AAAAAQAAAAEAAAAxAAAAAAAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAJUC+M4AAAAMAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('48415cd0fda9bc9aeb1f0b419bfb2997f7a2aa1b1ef2e51a0602c61104fc23cc', 49, 3, 'AAAAAQAAAAEAAAAxAAAAAAAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAJUC+LUAAAAMAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('616c609047ef8f9ca908a47a47aa4bb018449c569549ad2ca60590aab74267e8', 50, 1, 'AAAAAgAAAAMAAAAxAAAAAAAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAJUC+LUAAAAMAAAAAMAAAADAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAyAAAAAAAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAJUC+JwAAAAMAAAAAQAAAADAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('1d7833c4faab08e62609acf3714d1babe27621a2b328edf37465e99aaf389cab', 51, 1, 'AAAAAgAAAAMAAAAyAAAAAAAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAJUC+JwAAAAMAAAAAQAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAzAAAAAAAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAJUC+IMAAAAMAAAAAUAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('c8a28fb25d4784f37a7a078e1feef0eb30ca64e994734625ac4ea067cc621464', 52, 1, 'AAAAAgAAAAMAAAAzAAAAAAAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAJUC+IMAAAAMAAAAAUAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAA0AAAAAAAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAJUC+GoAAAAMAAAAAYAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('df5f0e8b3b533dd9cda0ff7540bef3e9e19369060f8a4b0414b0e3c1b4315b1c', 53, 1, 'AAAAAgAAAAMAAAAwAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wsatl2d7jtgAAAAAAAAABYAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAA1AAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wsatl2d7jr8AAAAAAAAABcAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('85bbd2b558563518a38e9b749bd4b8ced60b9fbbb7a6b283e15ae98548302ac4', 54, 1, 'AAAAAgAAAAMAAAA1AAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wsatltJ4lb8AAAAAAAAABcAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAA2AAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wsatltJ4lY0AAAAAAAAABgAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('5bbbedfb52efd1d5d973e22540044a27b8115772314293e3ba8b1fb12e63ca2e', 55, 1, 'AAAAAgAAAAMAAAA2AAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wsatltJ4lY0AAAAAAAAABgAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAA3AAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wsatltJ4lXQAAAAAAAAABkAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('2a805712c6d10f9e74bb0ccf54ae92a2b4b1e586451fe8133a2433816f6b567c', 56, 1, 'AAAAAgAAAAMAAAA3AAAAAAAAAAAaXI4hE2dLocMSSYYAT2ClklSctk2diyPO36ldXFH/1AAAAAJUC+QAAAAANwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAA4AAAAAAAAAAAaXI4hE2dLocMSSYYAT2ClklSctk2diyPO36ldXFH/1AAAAAJUC+OcAAAANwAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); + + +-- +-- Data for Name: txhistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txhistory VALUES ('f5e0d1f500b2d0c4b42fb8a438d5ed764bc58d1392f4328f4713af407b1968ca', 3, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAQAAAAAAAABkAAAAAF4MUYAAAAAAAAAAAQAAAAAAAAAAAAAAAC6N7oJcJiUzTWRDL98Bj3fVrJUB19wFvCzEHh8nn/IOAAAAAlQL5AAAAAAAAAAAAVb8BfcAAABAXK6PX0t3GL+4TcNTKBIB9vkqahUMix+Rf/7WY5d6YJsmeBQ+o5ULJWvzgfc3aTx4f/DCUXc54KcOfCfzqH0uDQ==', '9eDR9QCy0MS0L7ikONXtdkvFjROS9DKPRxOvQHsZaMoAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAAAAAAAAC6N7oJcJiUzTWRDL98Bj3fVrJUB19wFvCzEHh8nn/IOAAAAAlQL5AAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2sVNYG5wAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('66e27fb28870cb5256ea92764bcb222adbbaa5fec2d89a62a9aa8c9c8e2ee9e9', 4, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA7lAZIpCRwStYOr2IrB6aiXLG/wsNVkHBYtBKJinuINUAAAACVAvkAAAAAAAAAAABVvwF9wAAAECAUpO+hxiga/YgRsV3rFpBJydgOyn0TPImJCaQCMikkiG+sNXrQBsYXjJrlOiGjGsU3rk4uvGl85AriYD9PNYH', 'ZuJ/sohwy1JW6pJ2S8siKtu6pf7C2JpiqaqMnI4u6ekAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAQAAAAAAAAAAO5QGSKQkcErWDq9iKwemolyxv8LDVZBwWLQSiYp7iDVAAAAAlQL5AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rv9MNzgAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('e9d1a3000aea36743142f2ede106d3cb37c3d7e88508e3f21b496370b5863858', 5, 1, 'AAAAAO5QGSKQkcErWDq9iKwemolyxv8LDVZBwWLQSiYp7iDVAAAAZAAAAAQAAAABAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASnuINUAAABASz0AtZeNzXSXkjPkKJfOE8aUTAuPR6pxMMbF337wxE3wzOTDaVcDQ2N5P3E9MKc+fbbFhZ9K+07+J0wMGltRBA==', '6dGjAArqNnQxQvLt4QbTyzfD1+iFCOPyG0ljcLWGOFgAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAAAUAAAAAAAAAAO5QGSKQkcErWDq9iKwemolyxv8LDVZBwWLQSiYp7iDVAAAAAlQL4tQAAAAEAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('995b9269f9f9c4c1eace75501188766d6e8ae40c5413120811a50437683cb74c', 5, 2, 'AAAAAO5QGSKQkcErWDq9iKwemolyxv8LDVZBwWLQSiYp7iDVAAAAZAAAAAQAAAACAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAD2T51Mi2fjmCY4Z+R5JON1LluqzrnpmTxUJXTp/A3FRwAAAAEAAAAAAAAAASnuINUAAABADpkMMc7kkkYjDoPwfUlOE9tLYvWHI/m+BBe/gCKN1cVvEF1UBVeCCuGBTjury4TqoxplKl4NZHJST5/Orr4XCA==', 'mVuSafn5xMHqznVQEYh2bW6K5AxUExIIEaUEN2g8t0wAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAAAUAAAAAAAAAAO5QGSKQkcErWDq9iKwemolyxv8LDVZBwWLQSiYp7iDVAAAAAlQL4tQAAAAEAAAAAwAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAD2T51Mi2fjmCY4Z+R5JON1LluqzrnpmTxUJXTp/A3FRwAAAAEAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('f78dca926455579b4a43009ffe35a0229a6da4bed32d3c999d7a06ad26605a25', 5, 3, 'AAAAAO5QGSKQkcErWDq9iKwemolyxv8LDVZBwWLQSiYp7iDVAAAAZAAAAAQAAAADAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAABAAAAAgAAAAEAAAACAAAAAQAAAAIAAAAAAAAAAAAAAAAAAAABKe4g1QAAAEDglRRymtLjw+ImmGwTiBTKE7X7+2CywlHw8qed+t520SbAggcqboy5KXJaEP51/wRSMxtZUgDOFfaDn9Df04EA', '943KkmRVV5tKQwCf/jWgIpptpL7TLTyZnXoGrSZgWiUAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAAAUAAAAAAAAAAO5QGSKQkcErWDq9iKwemolyxv8LDVZBwWLQSiYp7iDVAAAAAlQL4tQAAAAEAAAAAwAAAAEAAAAAAAAAAAAAAAABAgICAAAAAQAAAAD2T51Mi2fjmCY4Z+R5JON1LluqzrnpmTxUJXTp/A3FRwAAAAEAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('a9085e13fbe9f84e07e320a0d445536de1afc2cfd8c7e4186687807edd2b4897', 6, 1, 'AAAAAO5QGSKQkcErWDq9iKwemolyxv8LDVZBwWLQSiYp7iDVAAAAZAAAAAQAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAinuINUAAABA4PRAe0en/05ZH2leCeTOsxbT0cUu3wgUiWUcuDk4ya8G/gI90hlV6pzOYyAB6Zt5fN7pRrPRL/tTlnjgUAjaBvwNxUcAAABAFmdGR6JZukKJUC3Vr2YEJ/24G3tesqTv4cV5UcAozRhS2+w0PYVVqe7QTmOMNSGX/C3LxP1tSvpXdU/OhYsODw==', 'qQheE/vp+E4H4yCg1EVTbeGvws/Yx+QYZoeAft0rSJcAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAAAYAAAAAAAAAAO5QGSKQkcErWDq9iKwemolyxv8LDVZBwWLQSiYp7iDVAAAAAlQL4nAAAAAEAAAABAAAAAEAAAAAAAAAAAAAAAACAgICAAAAAQAAAAD2T51Mi2fjmCY4Z+R5JON1LluqzrnpmTxUJXTp/A3FRwAAAAEAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('0fb9c2e20946222b23e1d1d660de9d74576c41cfd9b199f9d565a013c1ef89ca', 7, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAOerFQRLRq/h3Xf4EErEqz7oD9wk20zX+d/h4dXc7DToAAAACVAvkAAAAAAAAAAABVvwF9wAAAED8tIFyog9OeCqiaBNfxFdAlneNYTfjoNUMKi6FJCY5BqemnDBxGox3jKS/xx4zpxAToEFp3Y2M+NRJIU4g/H0J', 'D7nC4glGIisj4dHWYN6ddFdsQc/ZsZn51WWgE8HvicoAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAcAAAAAAAAAADnqxUES0av4d13+BBKxKs+6A/cJNtM1/nf4eHV3Ow06AAAAAlQL5AAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAcAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rKtAUtQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('dd74eee27a59843b28a05ad08abf65eaa231b7debe4d05550c0a7a424cca5929', 8, 1, 'AAAAADnqxUES0av4d13+BBKxKs+6A/cJNtM1/nf4eHV3Ow06AAAAZAAAAAcAAAABAAAAAAAAAAIAAAAAAAAAewAAAAEAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAJiWgAAAAAAAAAABdzsNOgAAAEBjk5EFqV8GiL9xU62OUCKeScXxGMTMqJoD7ryiGf5jLPZJRSphbWC3ZycHE+pDuu/6EKSqcNUri5AXzQmM+GYB', '3XTu4npZhDsooFrQir9l6qIxt96+TQVVDAp6QkzKWSkAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAADAAAAAQAAAAgAAAAAAAAAADnqxUES0av4d13+BBKxKs+6A/cJNtM1/nf4eHV3Ow06AAAAAlNzS/AAAAAHAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAcAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rKtAUtQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAgAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rKvY6VQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('2551e76a3ce4881b7bc73fdfd89d670d511ea7d4e56156252b51777023202de7', 8, 2, 'AAAAADnqxUES0av4d13+BBKxKs+6A/cJNtM1/nf4eHV3Ow06AAAAZAAAAAcAAAACAAAAAAAAAAEAAAAFaGVsbG8AAAAAAAABAAAAAAAAAAEAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcAAAAAAAAAAACYloAAAAAAAAAAAXc7DToAAABAS2+MaPA79AjD0B7qjl0qEz0N6CkDmoS4kgnXjZfbvdc9IkqNm0S+vKBNgV80pSfixY147L+jvS/ganovqbLiAQ==', 'JVHnajzkiBt7xz/f2J1nDVEep9TlYVYlK1F3cCMgLecAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAQAAAAgAAAAAAAAAADnqxUES0av4d13+BBKxKs+6A/cJNtM1/nf4eHV3Ow06AAAAAlLatXAAAAAHAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAgAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rKxxf9QAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('3b36ecfbcc2adb0cfff08ae86199f64e12984f084bb03be9bb249611df82322b', 8, 3, 'AAAAADnqxUES0av4d13+BBKxKs+6A/cJNtM1/nf4eHV3Ow06AAAAZAAAAAcAAAADAAAAAAAAAAMBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAJiWgAAAAAAAAAABdzsNOgAAAEDC9hMtMYZ6hbx1iAdXngRcCYQmf8eu4zcB9SLH2998tVYca6QYig5Dsgy2oCMD1J7khIL9jz/VWjcPhvTVvC8L', 'Ozbs+8wq2wz/8IroYZn2ThKYTwhLsDvpuySWEd+CMisAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAQAAAAgAAAAAAAAAADnqxUES0av4d13+BBKxKs+6A/cJNtM1/nf4eHV3Ow06AAAAAlJCHvAAAAAHAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAgAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rK0KFlQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('a5a9e3ca63e9cc155359c97337bcb14464cca56b230a4d0c7f27582644d16809', 16, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA423/rAYjzzhmLqxgNgLUY5X92ueHg5xGtOuok+g5NQoAAAACVAvkAAAAAAAAAAABVvwF9wAAAEBhFD/bYaTZZJ3VJ9xJqXoW5eeLK0AeFaATBH92cRfx0WUTFqp6rXx47fMBUxkWYq8bAHMfYCS5XXPRg86sAGUK', 'panjymPpzBVTWclzN7yxRGTMpWsjCk0MfydYJkTRaAkAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAABAAAAAAAAAAAONt/6wGI884Zi6sYDYC1GOV/drnh4OcRrTrqJPoOTUKAAAAAlQL5AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAABAAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2oRVS+BgAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('e14885cb66af5f7f5e991b014eec475c61cc831292cf5526cdd0cda145300837', 8, 4, 'AAAAADnqxUES0av4d13+BBKxKs+6A/cJNtM1/nf4eHV3Ow06AAAAZAAAAAcAAAAEAAAAAAAAAAQCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAEAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAJiWgAAAAAAAAAABdzsNOgAAAEBOfq9PQ8EGcpjRWEaqGxvhBjSVuk6K5A2rthLYHnmAXmQ1JjJD3EddjiES3bPZUF5efGQvRjoEKgiB2dU3f2wF', '4UiFy2avX39emRsBTuxHXGHMgxKSz1UmzdDNoUUwCDcAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAQAAAAgAAAAAAAAAADnqxUES0av4d13+BBKxKs+6A/cJNtM1/nf4eHV3Ow06AAAAAlGpiHAAAAAHAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAgAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rK2irNQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('66c28c0ccd5a2e47026aacafa2ecd3c501fe5de349ef376c0f8afb893c7bb55d', 9, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAADd1O3oAD6ZmsdNe9Y4zdIQW1rTvIfAEYi/0il9kFYl4AAAACVAvkAAAAAAAAAAABVvwF9wAAAEARD6MVWgEASusfhr6JdF9K3Rie2XCRJKl/NoKyJcrd1kGs3ygpp55xu80YlFwgNVErZ/cEAHYOq06CwNfnE2sC', 'ZsKMDM1aLkcCaqyvouzTxQH+XeNJ7zdsD4r7iTx7tV0AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAkAAAAAAAAAAA3dTt6AA+mZrHTXvWOM3SEFta07yHwBGIv9IpfZBWJeAAAAAlQL5AAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAkAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2qlmWyHAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('fdb696a797b769176cbaed3a50e4a6a8671119621f65a3f954a3bcf100c7ef0c', 10, 1, 'AAAAAA3dTt6AA+mZrHTXvWOM3SEFta07yHwBGIv9IpfZBWJeAAAAyAAAAAkAAAABAAAAAAAAAAAAAAACAAAAAAAAAAEAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcAAAAAAAAAAAX14QAAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAABfXhAAAAAAAAAAAB2QViXgAAAEAxyl5gvCCDC7l0pq9b/Btd3cOUUcY9Rv0ALxVjul4EVSL1Vygr107GjDo11+YswdmlCuWf7KItU0chlogpns4L', '/baWp5e3aRdsuu06UOSmqGcRGWIfZaP5VKO88QDH7wwAAAAAAAAAyAAAAAAAAAACAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAIAAAADAAAAAQAAAAoAAAAAAAAAAA3dTt6AA+mZrHTXvWOM3SEFta07yHwBGIv9IpfZBWJeAAAAAk4WAjgAAAAJAAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAkAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2qlmWyHAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAoAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2ql+MqXAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAEAAAAKAAAAAAAAAAAN3U7egAPpmax0171jjN0hBbWtO8h8ARiL/SKX2QViXgAAAAJIICE4AAAACQAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAKAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtqplgopwAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('67601a2ca212b84092a7d3c521172b67f4b93d72b726a06c540917d2ab83c1a1', 11, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAxVmE0iEp9S70YdkrhAu6dT4jSnPvbUuzitQ4oBcfaDMAAAACVAvkAAAAAAAAAAABVvwF9wAAAEBHLko6/Tbv0v/5CWHkixXnbyoU6qQ6yewZGqPHFSzNxMfud86eYGkN0j4msMCXfLAou7iKOVn0MWyzlpvYRA0B', 'Z2AaLKISuECSp9PFIRcrZ/S5PXK3JqBsVAkX0quDwaEAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAsAAAAAAAAAAMVZhNIhKfUu9GHZK4QLunU+I0pz721Ls4rUOKAXH2gzAAAAAlQL5AAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAsAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2qBF2pgwAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('0e128647b2b93786b6b76e182dcda0173757066f8caf0523d1ba3b47fd6f720d', 12, 1, 'AAAAAMVZhNIhKfUu9GHZK4QLunU+I0pz721Ls4rUOKAXH2gzAAAAZAAAAAsAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAg/K/Blr9FO/nVEGLdmCzChMYpmcQzxIhFm6NBzxznX0AAAAAHc1lAAAAAAAAAAABFx9oMwAAAEBwY9HQAR2SMPe3JPvmBBtBk2jfog0GFEFYkLNFzQNqvYl7iZitmO5FQmkKlv/NO5ZcaWBqXcHhOQpk0s2XSBQF', 'DhKGR7K5N4a2t24YLc2gFzdXBm+MrwUj0bo7R/1vcg0AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAwAAAAAAAAAAIPyvwZa/RTv51RBi3ZgswoTGKZnEM8SIRZujQc8c519AAAAAB3NZQAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAwAAAAAAAAAAMVZhNIhKfUu9GHZK4QLunU+I0pz721Ls4rUOKAXH2gzAAAAAjY+fpwAAAALAAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('cd8a8e9eb53fd268d1294e228995c27f422d90783c4054e44ab0028fc1da210a', 13, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAGAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAji4PQpc6JMWt5AB56WXIEop14Pn7tW6uf6xE+vY7ZNwAAAACVAvkAAAAAAAAAAABVvwF9wAAAEAUtdYWyr64yv/rKPr0/vV4vYyonfsWxpxHsiYLHKJ3bm6k+ypiAByc8t0K+7bzxSLPjmjKKN5Prw7AdenlC7MB', 'zYqOnrU/0mjRKU4iiZXCf0ItkHg8QFTkSrACj8HaIQoAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAA0AAAAAAAAAAI4uD0KXOiTFreQAeellyBKKdeD5+7Vurn+sRPr2O2TcAAAAAlQL5AAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA0AAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2pb1qwUQAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('bfbd5e9457d717bcf847291a6c24b7cd8db4ff784ecd4592be30d08146c0c264', 13, 2, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAHAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAG5M9WO2kexu4dljTd0YSuyEnmDUsxKamzJWiv4FGkoQAAAACVAvkAAAAAAAAAAABVvwF9wAAAEDY1TiMj+qj8+zYb2Vb60h+qWxZtFfSGwb0kvKttSFAHQhGOjIddiVQopx9LDRO6UgPmLLxFvQpIzeGnagh3vQD', 'v71elFfXF7z4RykabCS3zY20/3hOzUWSvjDQgUbAwmQAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAA0AAAAAAAAAABuTPVjtpHsbuHZY03dGErshJ5g1LMSmpsyVor+BRpKEAAAAAlQL5AAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA0AAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2o2le3UQAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('dbd964fcfdb336a30f21c240fffdaf73d7c75880ed1b99375c62f84e3e592570', 14, 1, 'AAAAABuTPVjtpHsbuHZY03dGErshJ5g1LMSmpsyVor+BRpKEAAAAZAAAAA0AAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAACOLg9Clzokxa3kAHnpZcgSinXg+fu1bq5/rET69jtk3H//////////AAAAAAAAAAGBRpKEAAAAQGDAV/5Op2DmFUP84dmyT5G/gxn1WzgdMrkSSU7wfpu39ycq36Sg+gs2ypRjw5hxxeMUj/GVEKipcDGndei38Aw=', '29lk/P2zNqMPIcJA//2vc9fHWIDtG5k3XGL4Tj5ZJXAAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAA4AAAABAAAAABuTPVjtpHsbuHZY03dGErshJ5g1LMSmpsyVor+BRpKEAAAAAVVTRAAAAAAAji4PQpc6JMWt5AB56WXIEop14Pn7tW6uf6xE+vY7ZNwAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAA4AAAAAAAAAABuTPVjtpHsbuHZY03dGErshJ5g1LMSmpsyVor+BRpKEAAAAAlQL45wAAAANAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('30880dd42d8e402a30d8a3527b56c1e33e18e87c46e1332ea5cfc1721fd87cfb', 14, 2, 'AAAAAI4uD0KXOiTFreQAeellyBKKdeD5+7Vurn+sRPr2O2TcAAAAZAAAAA0AAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAG5M9WO2kexu4dljTd0YSuyEnmDUsxKamzJWiv4FGkoQAAAAAAAAAAAX14QAAAAAAAAAAAfY7ZNwAAABAieZSSuOZqlwtyjnj5d/S0GUSGiQvy0ipPLynpl4UvO8qc7CDz3vsLROlN2g50qXirydSOdao56hvRhrEfRsGCA==', 'MIgN1C2OQCow2KNSe1bB4z4Y6HxG4TMupc/Bch/YfPsAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAQAAAA4AAAAAAAAAABuTPVjtpHsbuHZY03dGErshJ5g1LMSmpsyVor+BRpKEAAAAAloBxJwAAAANAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA4AAAAAAAAAAI4uD0KXOiTFreQAeellyBKKdeD5+7Vurn+sRPr2O2TcAAAAAk4WApwAAAANAAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('142c988b1f67984f74a1581de9caecf499e60f1e0eed496661aa2c559238764c', 15, 1, 'AAAAAI4uD0KXOiTFreQAeellyBKKdeD5+7Vurn+sRPr2O2TcAAAAZAAAAA0AAAACAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAG5M9WO2kexu4dljTd0YSuyEnmDUsxKamzJWiv4FGkoQAAAABVVNEAAAAAACOLg9Clzokxa3kAHnpZcgSinXg+fu1bq5/rET69jtk3AAAAAAF9eEAAAAAAAAAAAH2O2TcAAAAQJBUx5tWfjAwXxab9U5HOjZvBRv3u95jXbyzuqeZ/kjsyMsU0jO/g03Rf1zgect1hj4hDYGN8mW4oEot0sSTZgw=', 'FCyYix9nmE90oVgd6crs9JnmDx4O7UlmYaosVZI4dkwAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAA4AAAABAAAAABuTPVjtpHsbuHZY03dGErshJ5g1LMSmpsyVor+BRpKEAAAAAVVTRAAAAAAAji4PQpc6JMWt5AB56WXIEop14Pn7tW6uf6xE+vY7ZNwAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAA8AAAABAAAAABuTPVjtpHsbuHZY03dGErshJ5g1LMSmpsyVor+BRpKEAAAAAVVTRAAAAAAAji4PQpc6JMWt5AB56WXIEop14Pn7tW6uf6xE+vY7ZNwAAAAABfXhAH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('6a056189b45760c607e331c90c5a8b4cd720961df8bc8cecfd4aa388b577a6cb', 16, 2, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAJAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAABAjoBMEUiZNLUjsWXL1iK59D90Li4w56076b8HKxZfIAAAACVAvkAAAAAAAAAAABVvwF9wAAAEAxC5cl7tkjQI0cfFZTiIFDuo0SwyYnNqTUH2hxDBtm7h/vUkBG3cgwGXS87ninVkhmvdIpTWfeIeGiw7kgefUA', 'agVhibRXYMYH4zHJDFqLTNcglh34vIzs/UqjiLV3pssAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAABAAAAAAAAAAAAQI6ATBFImTS1I7Fly9YiufQ/dC4uMOetO+m/BysWXyAAAAAlQL5AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAABAAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2nsFHFBgAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('18bf6cce20cfbb0f9079c4b8783718949d13bd12d173a60363d2b8e3a07efead', 16, 3, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAKAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAACVAvkAAAAAAAAAAABVvwF9wAAAEC/RVto6ytAqHpd6ZFWjwXQyXopKORz8QSvz0d8RoPrOEBgNEuAj8+kbyhS7QieOqwbiJrS0AU8YWaBQQ4zc+wL', 'GL9sziDPuw+QecS4eDcYlJ0TvRLRc6YDY9K446B+/q0AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAABAAAAAAAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAlQL5AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAABAAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2nG07MBgAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('cdef45dd961d59375351ea7dd7ef6414ff49371a335723e84dafacea1e13665a', 17, 1, 'AAAAAONt/6wGI884Zi6sYDYC1GOV/drnh4OcRrTrqJPoOTUKAAAAZAAAABAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsX//////////AAAAAAAAAAHoOTUKAAAAQIjLqcYXE8EAsH6Dx2hwPjiEfHGZ4jsMNZZc7PynNiJi9kFXjfvvLDlWizGAr2B9MFDrfDRDvjnBxKKhJifEcQM=', 'ze9F3ZYdWTdTUep91+9kFP9JNxozVyPoTa+s6h4TZloAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAABEAAAABAAAAAONt/6wGI884Zi6sYDYC1GOV/drnh4OcRrTrqJPoOTUKAAAAAVVTRAAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAABEAAAAAAAAAAONt/6wGI884Zi6sYDYC1GOV/drnh4OcRrTrqJPoOTUKAAAAAlQL45wAAAAQAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('d1f593eb5e14f97027bc79821fa46628c107034fba9a5acef6a9da79e051ee73', 17, 2, 'AAAAAAQI6ATBFImTS1I7Fly9YiufQ/dC4uMOetO+m/BysWXyAAAAZAAAABAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABRVVSAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsX//////////AAAAAAAAAAFysWXyAAAAQI7hbwZc1+KWfheVnYAq5TXFX9ancHJmJq0wV0c9ONIfG6U8trhIVeVoiED2eUFFmhx+bBtF9TPSvifF/mfDlQk=', '0fWT614U+XAnvHmCH6RmKMEHA0+6mlrO9qnaeeBR7nMAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAABEAAAABAAAAAAQI6ATBFImTS1I7Fly9YiufQ/dC4uMOetO+m/BysWXyAAAAAUVVUgAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAABEAAAAAAAAAAAQI6ATBFImTS1I7Fly9YiufQ/dC4uMOetO+m/BysWXyAAAAAlQL45wAAAAQAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('902b90c2322b9e6b335e7543389a7446b86e3039ebf59ec66dffb50eaec0dc85', 18, 1, 'AAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAZAAAABAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAA423/rAYjzzhmLqxgNgLUY5X92ueHg5xGtOuok+g5NQoAAAABVVNEAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAA7msoAAAAAAAAAAAERVFexAAAAQC9X2I3Zz1x3AQMqL4XCzePTlwnokv2BQnWGmT007oH59gai3eNu7/WVoHtW8hsgHjs1mZK709FzzRF2cbD2tQE=', 'kCuQwjIrnmszXnVDOJp0RrhuMDnr9Z7Gbf+1Dq7A3IUAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAABEAAAABAAAAAONt/6wGI884Zi6sYDYC1GOV/drnh4OcRrTrqJPoOTUKAAAAAVVTRAAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAABIAAAABAAAAAONt/6wGI884Zi6sYDYC1GOV/drnh4OcRrTrqJPoOTUKAAAAAVVTRAAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAO5rKAH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('ca756d1519ceda79f8722042b12cea7ba004c3bd961adb62b59f88a867f86eb3', 18, 2, 'AAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAZAAAABAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAA7msoAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAARFUV7EAAABALuai5QxceFbtAiC5nkntNVnvSPeWR+C+FgplPAdRgRS+PPESpUiSCyuiwuhmvuDw7kwxn+A6E0M4ca1s2qzMAg==', 'ynVtFRnO2nn4ciBCsSzqe6AEw72WGttitZ+IqGf4brMAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAAAAAAQAAAAAAAAABVVNEAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAADuaygAAAAAAQAAAAIAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAABIAAAACAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAAAAAAEAAAAAAAAAAVVTRAAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAA7msoAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAQAAABIAAAAAAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAlQL4tQAAAAQAAAAAwAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('37bb79f6959c0e8e9b3d31f6c9308d8d084d9c6742cfa56ca094cfa6eae99423', 18, 3, 'AAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAZAAAABAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAAAAAAAstBeAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAARFUV7EAAABArzp9Fxxql+yoysglDjXm9+rsJeNX2GsSa7TOy3AzHOu4Y5Z8ICx52Q885gQGQWMtEP0w6yh83d6+o6kjC/WuAg==', 'N7t59pWcDo6bPTH2yTCNjQhNnGdCz6VsoJTPpurplCMAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAAAAAAgAAAAFFVVIAAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAAAAAACy0F4AAAAAAQAAAAEAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAABIAAAACAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAAAAAAIAAAABRVVSAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAAAAAAAstBeAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAQAAABIAAAAAAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAlQL4tQAAAAQAAAAAwAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('198844c8b472daacc5b717695a4ca16ac799a13fb2cf4152d19e2117ae1c56c3', 19, 1, 'AAAAAONt/6wGI884Zi6sYDYC1GOV/drnh4OcRrTrqJPoOTUKAAAAZAAAABAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAIAAAABVVNEAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAA7msoAAAAAAAQI6ATBFImTS1I7Fly9YiufQ/dC4uMOetO+m/BysWXyAAAAAUVVUgAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAdzWUAAAAAAEAAAAAAAAAAAAAAAHoOTUKAAAAQMs9vNZ518oYUMp38TakovW//DDTbs/9oPj1RAix5ElC/d7gbWaaNNJxKQR7eMNO6rB+ntGqee4WurTJgA4k2ws=', 'GYhEyLRy2qzFtxdpWkyhaseZoT+yz0FS0Z4hF64cVsMAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAIAAAAAAAAAAgAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAAAAAABAAAAAAAAAAB3NZQAAAAAAVVTRAAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAO5rKAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAAAAAACAAAAAUVVUgAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAdzWUAAAAAAAAAAAAdzWUAAAAAAAECOgEwRSJk0tSOxZcvWIrn0P3QuLjDnrTvpvwcrFl8gAAAAFFVVIAAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAHc1lAAAAAAA', 'AAAAAAAAAAEAAAAKAAAAAwAAABIAAAAAAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAlQL4tQAAAAQAAAAAwAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAABMAAAAAAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAlQL4tQAAAAQAAAAAwAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAwAAABEAAAABAAAAAAQI6ATBFImTS1I7Fly9YiufQ/dC4uMOetO+m/BysWXyAAAAAUVVUgAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAABMAAAABAAAAAAQI6ATBFImTS1I7Fly9YiufQ/dC4uMOetO+m/BysWXyAAAAAUVVUgAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAdzWUAH//////////AAAAAQAAAAAAAAAAAAAAAwAAABIAAAABAAAAAONt/6wGI884Zi6sYDYC1GOV/drnh4OcRrTrqJPoOTUKAAAAAVVTRAAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAO5rKAH//////////AAAAAQAAAAAAAAAAAAAAAQAAABMAAAABAAAAAONt/6wGI884Zi6sYDYC1GOV/drnh4OcRrTrqJPoOTUKAAAAAVVTRAAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAwAAABIAAAACAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAAAAAAEAAAAAAAAAAVVTRAAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAA7msoAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAQAAABMAAAACAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAAAAAAEAAAAAAAAAAVVTRAAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAdzWUAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAwAAABIAAAACAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAAAAAAIAAAABRVVSAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAAAAAAAstBeAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAQAAABMAAAACAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAAAAAAIAAAABRVVSAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAAAAAAAO5rKAAAAAAEAAAABAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('69f64ae0f809b08996c1f394ee795001a40eee69adb675ab63bfd1932d3aafb2', 29, 1, 'AAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAZAAAABsAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATCeMFAAAABAi69qDHclVS9A8GAaqyk6oIxiMC2KXXEneFijfxH5VyLGIQZNAxOOcCPpIalU6P1pYRX3K4OlKHZ4hIdxJzD6BQ==', 'afZK4PgJsImWwfOU7nlQAaQO7mmttnWrY7/Rky06r7IAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAAB0AAAAAAAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAAlQL4OAAAAAbAAAACAAAAAEAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAwAAAAtleGFtcGxlLmNvbQACAAICAAAAAQAAAAB8ndnLViBPKqPJAcSNhZzc2mH7fQ7RtzGyFA8mFkMTkAAAAAEAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('f08dc1fec150f276562866ce4f5272f658cf0bd9fd8c1d96a22c196be2e1b25a', 20, 1, 'AAAAAONt/6wGI884Zi6sYDYC1GOV/drnh4OcRrTrqJPoOTUKAAAAZAAAABAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAIAAAAAAAAAADuaygAAAAAABAjoBMEUiZNLUjsWXL1iK59D90Li4w56076b8HKxZfIAAAABRVVSAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAA7msoAAAAAAAAAAAAAAAAB6Dk1CgAAAEB+7jxesBKKrF343onyycjp2tiQLZiGH2ETl+9fuOqotveY2rIgvt9ng+QJ2aDP3+PnDsYEa9ZUaA+Zne2nIGgE', '8I3B/sFQ8nZWKGbOT1Jy9ljPC9n9jB2WoiwZa+LhsloAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAIAAAAAAAAAAQAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAAAAAACAAAAAUVVUgAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAO5rKAAAAAAAAAAAAO5rKAAAAAAAECOgEwRSJk0tSOxZcvWIrn0P3QuLjDnrTvpvwcrFl8gAAAAFFVVIAAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAADuaygAAAAAA', 'AAAAAAAAAAEAAAAHAAAAAwAAABMAAAAAAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAlQL4tQAAAAQAAAAAwAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAABQAAAAAAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAo+mrNQAAAAQAAAAAwAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAABQAAAAAAAAAAONt/6wGI884Zi6sYDYC1GOV/drnh4OcRrTrqJPoOTUKAAAAAhhxGNQAAAAQAAAAAwAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAwAAABMAAAABAAAAAAQI6ATBFImTS1I7Fly9YiufQ/dC4uMOetO+m/BysWXyAAAAAUVVUgAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAdzWUAH//////////AAAAAQAAAAAAAAAAAAAAAQAAABQAAAABAAAAAAQI6ATBFImTS1I7Fly9YiufQ/dC4uMOetO+m/BysWXyAAAAAUVVUgAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAstBeAH//////////AAAAAQAAAAAAAAAAAAAAAwAAABMAAAACAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAAAAAAIAAAABRVVSAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAAAAAAAO5rKAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAAAAAAg=='); +INSERT INTO txhistory VALUES ('2a6987a6930eab7e3becacf9b76ed7a06802668c1f1eb0f82f5671014b4b636a', 21, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAALAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAXK+F1JOs84QNDhnmIjjKUDQ+mEvueZwDL/tCVRXFjncAAAACVAvkAAAAAAAAAAABVvwF9wAAAEDfpUesb4kQ/RfBx1UxqNOtZ2+4R4S0XxzggPR1C3YyhZAr/K8KyZCg4ejDTFnhu9qAh4GLZLkbBraGncT9DcYF', 'KmmHppMOq3477Kz5t27XoGgCZowfHrD4L1ZxAUtLY2oAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAABUAAAAAAAAAAFyvhdSTrPOEDQ4Z5iI4ylA0PphL7nmcAy/7QlUVxY53AAAAAlQL5AAAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAABUAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2mhkvS1AAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('96415ac1d2f79621b26b1568f963fd8dd6c50c20a22c7428cefbfe9dee867588', 21, 2, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAMAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAdQRiekAoVkbqXJa3xIIXnCcZLADk+cVfmZs9SLHWDWEAAAACVAvkAAAAAAAAAAABVvwF9wAAAEDdJGdvdZ2S4QoXdO+Odt8ZRdeVu7mBvq7FtP9okqr98pGD/jSAraklQvaRmCyMALIMD2kG8R2KjhKvy7oIL6IB', 'lkFawdL3liGyaxVo+WP9jdbFDCCiLHQozvv+ne6GdYgAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAABUAAAAAAAAAAHUEYnpAKFZG6lyWt8SCF5wnGSwA5PnFX5mbPUix1g1hAAAAAlQL5AAAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAABUAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2l8UjZ1AAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('be05e4bd966d58689e1b6fae013e5aa77bde56e6acd2db9b96870e5e746a4ab7', 22, 1, 'AAAAAFyvhdSTrPOEDQ4Z5iI4ylA0PphL7nmcAy/7QlUVxY53AAAAZAAAABUAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAB1BGJ6QChWRupclrfEghecJxksAOT5xV+Zmz1IsdYNYX//////////AAAAAAAAAAEVxY53AAAAQDMCWfC0eGNJuYIX3s5AUNLernpcHTn8O6ygq/Nw3S5vny/W42O5G4G6UsihVU1xd5bR4im2+VzQlQYQhe0jhwg=', 'vgXkvZZtWGieG2+uAT5ap3veVuas0tublocOXnRqSrcAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAABYAAAABAAAAAFyvhdSTrPOEDQ4Z5iI4ylA0PphL7nmcAy/7QlUVxY53AAAAAVVTRAAAAAAAdQRiekAoVkbqXJa3xIIXnCcZLADk+cVfmZs9SLHWDWEAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAABYAAAAAAAAAAFyvhdSTrPOEDQ4Z5iI4ylA0PphL7nmcAy/7QlUVxY53AAAAAlQL45wAAAAVAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('d8b2508123656b1df1ee17c2767829bc22ab41959ad25e6ccc520e849516fba1', 23, 1, 'AAAAAFyvhdSTrPOEDQ4Z5iI4ylA0PphL7nmcAy/7QlUVxY53AAAAZAAAABUAAAACAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAdQRiekAoVkbqXJa3xIIXnCcZLADk+cVfmZs9SLHWDWEAAAAAC+vCAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAARXFjncAAABATR48xYiKbu8AOoXFwvcvILZ0/pQkfGuwwAoIZNefr7ydIwlcuL44XPM7pJ/6jDSbqBudTNWdE2JRjuq7HI7IAA==', '2LJQgSNlax3x7hfCdngpvCKrQZWa0l5szFIOhJUW+6EAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAXK+F1JOs84QNDhnmIjjKUDQ+mEvueZwDL/tCVRXFjncAAAAAAAAAAwAAAAAAAAABVVNEAAAAAAB1BGJ6QChWRupclrfEghecJxksAOT5xV+Zmz1IsdYNYQAAAAAL68IAAAAAAQAAAAEAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAABcAAAACAAAAAFyvhdSTrPOEDQ4Z5iI4ylA0PphL7nmcAy/7QlUVxY53AAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAdQRiekAoVkbqXJa3xIIXnCcZLADk+cVfmZs9SLHWDWEAAAAAC+vCAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAQAAABcAAAAAAAAAAFyvhdSTrPOEDQ4Z5iI4ylA0PphL7nmcAy/7QlUVxY53AAAAAlQL4zgAAAAVAAAAAgAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('01346de1ca30ce03149d9f54945956a22f9cbed3d81f81c62bb59cf8cdd8b893', 24, 1, 'AAAAAHUEYnpAKFZG6lyWt8SCF5wnGSwA5PnFX5mbPUix1g1hAAAAZAAAABUAAAABAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABVVNEAAAAAAB1BGJ6QChWRupclrfEghecJxksAOT5xV+Zmz1IsdYNYQAAAAAAAAAAEeGjAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAbHWDWEAAABA0L+69D1hxpytAkX6cvPiBuO80ql8SQKZ15POVxx9wYl6mZrL+6UWGab/+6ng2M+a29E7ON+Xs46Y9MNqTh91AQ==', 'ATRt4cowzgMUnZ9UlFlWoi+cvtPYH4HGK7Wc+M3YuJMAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAQAAAABcr4XUk6zzhA0OGeYiOMpQND6YS+55nAMv+0JVFcWOdwAAAAAAAAADAAAAAAAAAAAL68IAAAAAAVVTRAAAAAAAdQRiekAoVkbqXJa3xIIXnCcZLADk+cVfmZs9SLHWDWEAAAAAC+vCAAAAAAAAAAAAdQRiekAoVkbqXJa3xIIXnCcZLADk+cVfmZs9SLHWDWEAAAAAAAAABAAAAAFVU0QAAAAAAHUEYnpAKFZG6lyWt8SCF5wnGSwA5PnFX5mbPUix1g1hAAAAAAAAAAAF9eEAAAAAAQAAAAEAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAAIAAAAAAAAABgAAAACAAAAAHUEYnpAKFZG6lyWt8SCF5wnGSwA5PnFX5mbPUix1g1hAAAAAAAAAAQAAAABVVNEAAAAAAB1BGJ6QChWRupclrfEghecJxksAOT5xV+Zmz1IsdYNYQAAAAAAAAAABfXhAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAwAAABcAAAAAAAAAAFyvhdSTrPOEDQ4Z5iI4ylA0PphL7nmcAy/7QlUVxY53AAAAAlQL4zgAAAAVAAAAAgAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAABgAAAAAAAAAAFyvhdSTrPOEDQ4Z5iI4ylA0PphL7nmcAy/7QlUVxY53AAAAAkggITgAAAAVAAAAAgAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAABgAAAAAAAAAAHUEYnpAKFZG6lyWt8SCF5wnGSwA5PnFX5mbPUix1g1hAAAAAl/3pZwAAAAVAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAwAAABYAAAABAAAAAFyvhdSTrPOEDQ4Z5iI4ylA0PphL7nmcAy/7QlUVxY53AAAAAVVTRAAAAAAAdQRiekAoVkbqXJa3xIIXnCcZLADk+cVfmZs9SLHWDWEAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAABgAAAABAAAAAFyvhdSTrPOEDQ4Z5iI4ylA0PphL7nmcAy/7QlUVxY53AAAAAVVTRAAAAAAAdQRiekAoVkbqXJa3xIIXnCcZLADk+cVfmZs9SLHWDWEAAAAAC+vCAH//////////AAAAAQAAAAAAAAAAAAAAAwAAABcAAAACAAAAAFyvhdSTrPOEDQ4Z5iI4ylA0PphL7nmcAy/7QlUVxY53AAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAdQRiekAoVkbqXJa3xIIXnCcZLADk+cVfmZs9SLHWDWEAAAAAC+vCAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAXK+F1JOs84QNDhnmIjjKUDQ+mEvueZwDL/tCVRXFjncAAAAAAAAAAw=='); +INSERT INTO txhistory VALUES ('5065cd7c97cfb6fbf7da8493beed47ed2c7efb3b00b77a4c92692ed487fb86a4', 25, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAANAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAfGbtaaW8nEfkG5PP1Cf4+dZxNj3MryzpiAiOpDJuhhgAAAACVAvkAAAAAAAAAAABVvwF9wAAAEBthwT3JCg5IZkKRNK3pHBa/eG8zq8Af9gFPWlYvEdRo6jzA5D9fYOcDpKD3dEAuPLNNAHj9tNbZUJA3rwxN94B', 'UGXNfJfPtvv32oSTvu1H7Sx++zsAt3pMkmku1If7hqQAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAABkAAAAAAAAAAHxm7WmlvJxH5BuTz9Qn+PnWcTY9zK8s6YgIjqQyboYYAAAAAlQL5AAAAAAZAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAABkAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2lXEXguwAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('a76e0260f6b83c6ea93f545d17de721c079dc31e81ee5edc41f159ec5fb48443', 26, 1, 'AAAAAHxm7WmlvJxH5BuTz9Qn+PnWcTY9zK8s6YgIjqQyboYYAAAAZAAAABkAAAABAAAAAAAAAAAAAAABAAAAAAAAAAQAAAABVVNEAAAAAAB8Zu1ppbycR+Qbk8/UJ/j51nE2PcyvLOmICI6kMm6GGAAAAAAAAAAAdzWUAAAAAAEAAAABAAAAAAAAAAEyboYYAAAAQBqzCYDuLYn/jXhfEVxEGigMCJGoOBCK92lUb3Um15PgwSJ63tNl+FpH8+y5c+mCs/rzcvdyo9uXdodd4LXWiQg=', 'p24CYPa4PG6pP1RdF95yHAedwx6B7l7cQfFZ7F+0hEMAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAfGbtaaW8nEfkG5PP1Cf4+dZxNj3MryzpiAiOpDJuhhgAAAAAAAAABQAAAAFVU0QAAAAAAHxm7WmlvJxH5BuTz9Qn+PnWcTY9zK8s6YgIjqQyboYYAAAAAAAAAAB3NZQAAAAAAQAAAAEAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAABoAAAACAAAAAHxm7WmlvJxH5BuTz9Qn+PnWcTY9zK8s6YgIjqQyboYYAAAAAAAAAAUAAAABVVNEAAAAAAB8Zu1ppbycR+Qbk8/UJ/j51nE2PcyvLOmICI6kMm6GGAAAAAAAAAAAdzWUAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAQAAABoAAAAAAAAAAHxm7WmlvJxH5BuTz9Qn+PnWcTY9zK8s6YgIjqQyboYYAAAAAlQL4zgAAAAZAAAAAgAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('92a654c76966ac61acc9df0b75f91cbde3b551c9e9766730827af42d1e247cc3', 26, 2, 'AAAAAHxm7WmlvJxH5BuTz9Qn+PnWcTY9zK8s6YgIjqQyboYYAAAAZAAAABkAAAACAAAAAAAAAAAAAAABAAAAAAAAAAQAAAAAAAAAAVVTRAAAAAAAfGbtaaW8nEfkG5PP1Cf4+dZxNj3MryzpiAiOpDJuhhgAAAAAdzWUAAAAAAEAAAABAAAAAAAAAAEyboYYAAAAQBbE9T7oBKoN0/S3AV7GoSRe+xT79SlWNCYEtL1RPExL8FLhw5EDsXLoAvIBbBvHIr9NKcPtWDyhcHlIuaZKIg8=', 'kqZUx2lmrGGsyd8LdfkcveO1Ucnpdmcwgnr0LR4kfMMAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAfGbtaaW8nEfkG5PP1Cf4+dZxNj3MryzpiAiOpDJuhhgAAAAAAAAABgAAAAAAAAABVVNEAAAAAAB8Zu1ppbycR+Qbk8/UJ/j51nE2PcyvLOmICI6kMm6GGAAAAAB3NZQAAAAAAQAAAAEAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAABoAAAACAAAAAHxm7WmlvJxH5BuTz9Qn+PnWcTY9zK8s6YgIjqQyboYYAAAAAAAAAAYAAAAAAAAAAVVTRAAAAAAAfGbtaaW8nEfkG5PP1Cf4+dZxNj3MryzpiAiOpDJuhhgAAAAAdzWUAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAQAAABoAAAAAAAAAAHxm7WmlvJxH5BuTz9Qn+PnWcTY9zK8s6YgIjqQyboYYAAAAAlQL4zgAAAAZAAAAAgAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('700fa44bb40e6ad2c5888656cd2e7b8d86de3d3557b653ae6874466175d64927', 27, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAOAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAkFLGCjsP5I/iV1yOXqLAmNi0vn4B9MxR2V53pzCeMFAAAAACVAvkAAAAAAAAAAABVvwF9wAAAEBq3GPDVeRPfwqtW45GZNiUdQ9j6E9Nsz/lMYWcWDWGCZADSsEiEoXar1HWFK6drptsGEl9P6I9f7C2GBKb4YQM', 'cA+kS7QOatLFiIZWzS57jYbePTVXtlOuaHRGYXXWSScAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAABsAAAAAAAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAAlQL5AAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAABsAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2kx0LnogAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('fe3707fbd5c844395c598f31dc719c61218d4cea4e8dddadb6733f4866089100', 28, 1, 'AAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAZAAAABsAAAABAAAAAAAAAAAAAAABAAAAAAAAAAUAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMJ4wUAAAAEA/GIgE9sYPGwbCiIdLdhoEu25CyB0ZAcmjQonQItu6SE0gaSBVT/le355A/dw1NPaoXY9P/u0ou9D7h5Vb1fcK', '/jcH+9XIRDlcWY8x3HGcYSGNTOpOjd2ttnM/SGYIkQAAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAABwAAAAAAAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAAlQL4UQAAAAbAAAABwAAAAAAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('345ef7f85c6ea297e3f994feef279b63812628681bd173a1f615185a4368e482', 28, 2, 'AAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAZAAAABsAAAACAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMJ4wUAAAAEDYxq3zpaFIC2JcuJUbrQ3MFXzqvu+5G7XUi4NnHlfbLutn76ylQcjuwLgbUG2lqcQfl75doPUZyurKtFP1rkMO', 'NF73+Fxuopfj+ZT+7yebY4EmKGgb0XOh9hUYWkNo5IIAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAABwAAAAAAAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAAlQL4UQAAAAbAAAABwAAAAAAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAQAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('2a14735d7b05109359444acdd87e7fe92c98e9295d2ba61b05e25d1f7ee10fd3', 28, 3, 'AAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAZAAAABsAAAADAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMJ4wUAAAAEAKuQ1exMu8hdf8dOPeULX2DG7DZx5WWIUFHXJMWGG9KmVrQoZDt2S6a/1uYEVJnvvY/EoJM5RpVjh2ZCs30VYA', 'KhRzXXsFEJNZRErN2H5/6SyY6SldK6YbBeJdH37hD9MAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAABwAAAAAAAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAAlQL4UQAAAAbAAAABwAAAAAAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAwAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('4f9598206ab17cf27b5c3eb9e906d63ebee2626654112eabdd2bce7bf12cccf2', 28, 4, 'AAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAZAAAABsAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATCeMFAAAABAAd6MzHDjUdRtHozzDnD3jJA+uRDCar3PQtuH/43pnROzk1HkovJPQ1YyzcpOb/NeuU/LKNzseL0PJNasVX1lAQ==', 'T5WYIGqxfPJ7XD656QbWPr7iYmZUES6r3SvOe/EszPIAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAABwAAAAAAAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAAlQL4UQAAAAbAAAABwAAAAAAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAwAAAAACAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('852ba25e0e4aa149a22dc193bcb645ae9eba23e7f7432707f3b910474e9b6a5b', 28, 5, 'AAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAZAAAABsAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAAQAAAAIAAAAAAAAAAAAAAAAAAAABMJ4wUAAAAEAnFzc6kqweyIL4TzIDbr+8GUOGGs1W5jcX5iSNw4DeonzQARlejYJ9NOn/XkrcoC9Hvd8hc5lNx+1h991GxJUJ', 'hSuiXg5KoUmiLcGTvLZFrp66I+f3QycH87kQR06balsAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAABwAAAAAAAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAAlQL4UQAAAAbAAAABwAAAAAAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAwAAAAACAAICAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('8ccc0c28c3e99a63cc59bad7dec3f5c56eb3942c548ecd40bc39c509d6b081d4', 28, 6, 'AAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAZAAAABsAAAAGAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAC2V4YW1wbGUuY29tAAAAAAAAAAAAAAAAATCeMFAAAABAkID6CkBHP9eovLQXkMQJ7QkE6NWlmdKGmLxaiI1YaVKZaKJxz5P85x+6wzpYxxbs6Bd2l4qxVjS7Q36DwRiqBA==', 'jMwMKMPpmmPMWbrX3sP1xW6zlCxUjs1AvDnFCdawgdQAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAABwAAAAAAAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAAlQL4UQAAAAbAAAABwAAAAAAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAwAAAAtleGFtcGxlLmNvbQACAAICAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('83201014880073f8eff6f21ae76e51c2c4faf533e550ecd3c2205b48a092960a', 28, 7, 'AAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAZAAAABsAAAAHAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAB8ndnLViBPKqPJAcSNhZzc2mH7fQ7RtzGyFA8mFkMTkAAAAAEAAAAAAAAAATCeMFAAAABAtYtlsqMReQo1UoU2GYjb3h52wEKvnouCSO6LQO1xm/ArhtQO/sX5q35St8BjaYWEiFnp+SQj2FZC89OswCldAw==', 'gyAQFIgAc/jv9vIa525RwsT69TPlUOzTwiBbSKCSlgoAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAABwAAAAAAAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAAlQL4UQAAAAbAAAABwAAAAEAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAwAAAAtleGFtcGxlLmNvbQACAAICAAAAAQAAAAB8ndnLViBPKqPJAcSNhZzc2mH7fQ7RtzGyFA8mFkMTkAAAAAEAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('c3cd47a311e025446f72c50426b5b5444e5261431fc5760e8e57467c87cd49fc', 30, 1, 'AAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAZAAAABsAAAAJAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAB8ndnLViBPKqPJAcSNhZzc2mH7fQ7RtzGyFA8mFkMTkAAAAAEAAAAAAAAAATCeMFAAAABA7ZMKq80ucQSt+55q+6VQrG3Hrv6zHtOLwkfAxxsZdYPIuk7xZsgbyhOCVXjheOQ9ygAW1vtybdXG41AxSFRtAg==', 'w81HoxHgJURvcsUEJrW1RE5SYUMfxXYOjldGfIfNSfwAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAAB4AAAAAAAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAAlQL4HwAAAAbAAAACQAAAAEAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAwAAAAtleGFtcGxlLmNvbQACAAICAAAAAQAAAAB8ndnLViBPKqPJAcSNhZzc2mH7fQ7RtzGyFA8mFkMTkAAAAAEAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('299dc6631d585a55ae3602f660ec5b5a0088d24a14b344c72eccc2a62d9a8938', 31, 1, 'AAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAZAAAABsAAAAKAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAB8ndnLViBPKqPJAcSNhZzc2mH7fQ7RtzGyFA8mFkMTkAAAAAUAAAAAAAAAATCeMFAAAABA0wriernSr+5P2QCeon1uj5mrOLNTOrPYPPi5ricLug/nreEUhsgS/k3lA9JGpVbd+tacMEKmXKmFxHCEMjWPBg==', 'KZ3GYx1YWlWuNgL2YOxbWgCI0koUs0THLszCpi2aiTgAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAAB8AAAAAAAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAAlQL4BgAAAAbAAAACgAAAAEAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAwAAAAtleGFtcGxlLmNvbQACAAICAAAAAQAAAAB8ndnLViBPKqPJAcSNhZzc2mH7fQ7RtzGyFA8mFkMTkAAAAAUAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('bb9d6654111fae501594400dc901c70d47489a67163d2a34f9b3e32a921a50dc', 32, 1, 'AAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAZAAAABsAAAALAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMJ4wUAAAAEAFytUxjxN4bnJMrEJkSprnES9iGpOxAsNOFYrTP/xtGVk/PZ2oThUW+/hLRIk+hYYEgF21Gf58N/abJKFpqlsI', 'u51mVBEfrlAVlEANyQHHDUdImmcWPSo0+bPjKpIaUNwAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAACAAAAAAAAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAAlQL31AAAAAbAAAADAAAAAEAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAAAAAAtleGFtcGxlLmNvbQACAAICAAAAAQAAAAB8ndnLViBPKqPJAcSNhZzc2mH7fQ7RtzGyFA8mFkMTkAAAAAUAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('6b38cdd5c17df2013d5a5e211c4b32218b6be91025316b1aab28bc12316615d5', 32, 2, 'AAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAZAAAABsAAAAMAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAB8ndnLViBPKqPJAcSNhZzc2mH7fQ7RtzGyFA8mFkMTkAAAAAAAAAAAAAAAATCeMFAAAABAOb0qGWnk1WrSUXS6iQFocaIOY/BDmgG1zTmlPyg0boSid3jTBK3z9U8+IPGAOELNLgkQHtgGYFgFGMio1xY+BQ==', 'azjN1cF98gE9Wl4hHEsyIYtr6RAlMWsaqyi8EjFmFdUAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAACAAAAAAAAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAAlQL31AAAAAbAAAADAAAAAAAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAAAAAAtleGFtcGxlLmNvbQACAAICAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('6d78f17fafa2317d6af679e1e5420f351207ff61cdff21c600ea8f85155b3ea1', 33, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAPAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAkqTd6glQdzt87217G6IYc3g3BYxMgWGPpDfRPhy1ZbUAAAACVAvkAAAAAAAAAAABVvwF9wAAAEC+mgKIzZqflQIKIqWn9LrciuyEx7XPfXGUhvyQ3sIQBnGdOWhkOt57UU/75LtUy4recT+jrY2cHKZj33puue8F', 'bXjxf6+iMX1q9nnh5UIPNRIH/2HN/yHGAOqPhRVbPqEAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAACEAAAAAAAAAAJKk3eoJUHc7fO9texuiGHN4NwWMTIFhj6Q30T4ctWW1AAAAAlQL5AAAAAAhAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAACEAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2kMj/uiQAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('a05daae230b1f743474e83ab6d4817df1f3f77661a7d815f7620cee2a9809480', 34, 1, 'AAAAAJKk3eoJUHc7fO9texuiGHN4NwWMTIFhj6Q30T4ctWW1AAAAZAAAACEAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF93//////////AAAAAAAAAAEctWW1AAAAQBYUnV3I1O35EAyay0msjg3MzZfanCtvalKGG+94pe6RxgE/kCk2kTT9HXgXjbraq//Q/0vJ0AoCAXSeT18Ujgk=', 'oF2q4jCx90NHToOrbUgX3x8/d2YafYFfdiDO4qmAlIAAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAACIAAAABAAAAAJKk3eoJUHc7fO9texuiGHN4NwWMTIFhj6Q30T4ctWW1AAAAAVVTRAAAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAACIAAAAAAAAAAJKk3eoJUHc7fO9texuiGHN4NwWMTIFhj6Q30T4ctWW1AAAAAlQL45wAAAAhAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('4e2442fe2e8dd8c686570c9f537acb2f50153a9883f8d199b6f4701eb289b3a0', 35, 1, 'AAAAAJKk3eoJUHc7fO9texuiGHN4NwWMTIFhj6Q30T4ctWW1AAAAZAAAACEAAAACAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAA7msoAAAAAAAAAAAEctWW1AAAAQNugq+B30pdbzvVVGz9RO3+DMeRdWqc/Xsd2NYdg6NBu7esvOdTWQ3nvoBEJyeGz8EE9zRQiSiqorwHlm+AGfwI=', 'TiRC/i6N2MaGVwyfU3rLL1AVOpiD+NGZtvRwHrKJs6AAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAACIAAAABAAAAAJKk3eoJUHc7fO9texuiGHN4NwWMTIFhj6Q30T4ctWW1AAAAAVVTRAAAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAACMAAAABAAAAAJKk3eoJUHc7fO9texuiGHN4NwWMTIFhj6Q30T4ctWW1AAAAAVVTRAAAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcAAAAAAAAAAAAAAAA7msoAAAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('44cb6c8ed4dbec542af1aad23001dd9d678cf19c8c461a653e762a7253eded82', 36, 1, 'AAAAAJKk3eoJUHc7fO9texuiGHN4NwWMTIFhj6Q30T4ctWW1AAAAZAAAACEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAA7msoAAAAAAAAAAAEctWW1AAAAQO+eTIPXUZk+GAq7O6H8d1/WT5buo0apjLhGgtBeSyl37UV7LCpZfCn6DYVc7lQOVNWhBc7KDA7Ne83AR41kYAk=', 'RMtsjtTb7FQq8arSMAHdnWeM8ZyMRhplPnYqclPt7YIAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAACMAAAABAAAAAJKk3eoJUHc7fO9texuiGHN4NwWMTIFhj6Q30T4ctWW1AAAAAVVTRAAAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcAAAAAAAAAAAAAAAA7msoAAAAAAQAAAAAAAAAAAAAAAQAAACQAAAABAAAAAJKk3eoJUHc7fO9texuiGHN4NwWMTIFhj6Q30T4ctWW1AAAAAVVTRAAAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcAAAAAAAAAAAAAAAA7msoAAAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('52388a98e4e36c17749a94374270cc65bdb7271cb51277f095aaa8f1ca9d322c', 37, 1, 'AAAAAJKk3eoJUHc7fO9texuiGHN4NwWMTIFhj6Q30T4ctWW1AAAAZAAAACEAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAAAAAAAAAAEctWW1AAAAQM5SCoW10EJoKBBwwMu0Vw+f+bQ0GjQ9FO6w3l9Q/FIctm87248t9jXTbl0Rd4NgGcom0yoGxgcJiERwZGBMXQc=', 'UjiKmOTjbBd0mpQ3QnDMZb23Jxy1Enfwlaqo8cqdMiwAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAADAAAAAQAAACUAAAAAAAAAAJKk3eoJUHc7fO9texuiGHN4NwWMTIFhj6Q30T4ctWW1AAAAAlQL4nAAAAAhAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAwAAACQAAAABAAAAAJKk3eoJUHc7fO9texuiGHN4NwWMTIFhj6Q30T4ctWW1AAAAAVVTRAAAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcAAAAAAAAAAAAAAAA7msoAAAAAAQAAAAAAAAAAAAAAAgAAAAEAAAAAkqTd6glQdzt87217G6IYc3g3BYxMgWGPpDfRPhy1ZbUAAAABVVNEAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w=='); +INSERT INTO txhistory VALUES ('afeb8080522eba71ca328225bbcf731029edcfa254c827c45be580bae95c7231', 38, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAQAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAq26sUclf95G3mAzqohcAxtpe+UiaovKwDpCv20t6bF8AAAACVAvkAAAAAAAAAAABVvwF9wAAAEDnzvNgEYB1u3BGTHFDlIWnk0GOq7BMpfcyewJRsJK9lT4HTMEwMQ2jSJyrWmB7xdBxHKaNMXQaAIx6CShLXpQH', 'r+uAgFIuunHKMoIlu89zECntz6JUyCfEW+WAuulccjEAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAACYAAAAAAAAAAKturFHJX/eRt5gM6qIXAMbaXvlImqLysA6Qr9tLemxfAAAAAlQL5AAAAAAmAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAACYAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2jnTz1VwAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('2354df802111418a999e31c2964d16b8efe8e492b7d74de54939825190e1041f', 38, 2, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAARAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA+SY4m6vkX+Y7FMkNv7RswsIkYNGXeZ4/YwEQNUpI8/gAAAACVAvkAAAAAAAAAAABVvwF9wAAAEDD6WvAYL1wilsd7zYDJt0iFO/lppQ6GJJn/A8UJl9jTjMNOjuQPBtA7fSxR5KT0BZLbtQy8qFlys0I6fTe/cwO', 'I1TfgCERQYqZnjHClk0WuO/o5JK3103lSTmCUZDhBB8AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAACYAAAAAAAAAAPkmOJur5F/mOxTJDb+0bMLCJGDRl3meP2MBEDVKSPP4AAAAAlQL5AAAAAAmAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAACYAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2jCDn8VwAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('11705f94cd65d7b673a124a85ce368c80f8458ffaedff719304d8f849535b4e0', 39, 1, 'AAAAAPkmOJur5F/mOxTJDb+0bMLCJGDRl3meP2MBEDVKSPP4AAAAZAAAACYAAAABAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSkjz+AAAAECyjDa1e+jtXukTrHluO7x0Mx7Wj4mRoM4S5UAFmRV+2rVoxjMwqFJhtYnEAUV19+C5ycp5jOLLpWxrCeRKJQUG', 'EXBflM1l17ZzoSSoXONoyA+EWP+u3/cZME2PhJU1tOAAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAACcAAAAAAAAAAPkmOJur5F/mOxTJDb+0bMLCJGDRl3meP2MBEDVKSPP4AAAAAlQL45wAAAAmAAAAAQAAAAAAAAAAAAAAAwAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('6fa467b53f5386d77ad35c2502ed2cd3dd8b460a5be22b6b2818b81bcd3ed2da', 40, 1, 'AAAAAKturFHJX/eRt5gM6qIXAMbaXvlImqLysA6Qr9tLemxfAAAAZAAAACYAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAD5Jjibq+Rf5jsUyQ2/tGzCwiRg0Zd5nj9jARA1Skjz+H//////////AAAAAAAAAAFLemxfAAAAQKN8LftAafeoAGmvpsEokqm47jAuqw4g1UWjmL0j6QPm1jxoalzDwDS3W+N2HOHdjSJlEQaTxGBfQKHhr6nNsAA=', 'b6RntT9Thtd601wlAu0s092LRgpb4itrKBi4G80+0toAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAACgAAAABAAAAAKturFHJX/eRt5gM6qIXAMbaXvlImqLysA6Qr9tLemxfAAAAAVVTRAAAAAAA+SY4m6vkX+Y7FMkNv7RswsIkYNGXeZ4/YwEQNUpI8/gAAAAAAAAAAH//////////AAAAAAAAAAAAAAAAAAAAAQAAACgAAAAAAAAAAKturFHJX/eRt5gM6qIXAMbaXvlImqLysA6Qr9tLemxfAAAAAlQL4zgAAAAmAAAAAgAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('0bcb67aa365446fd244fecff3a0c397f81f3a9b13428688965e776d447c0b1ea', 40, 2, 'AAAAAKturFHJX/eRt5gM6qIXAMbaXvlImqLysA6Qr9tLemxfAAAAZAAAACYAAAACAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABRVVSAAAAAAD5Jjibq+Rf5jsUyQ2/tGzCwiRg0Zd5nj9jARA1Skjz+H//////////AAAAAAAAAAFLemxfAAAAQMPVgYf+w09depDSxMcJnjVZHA2FlkBmhPmi0N66FuhAzTekWcCOMdCI0cUc+xJhywLXSMiKA6wP6K94NRlFlQE=', 'C8tnqjZURv0kT+z/Ogw5f4HzqbE0KGiJZed21EfAseoAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAACgAAAABAAAAAKturFHJX/eRt5gM6qIXAMbaXvlImqLysA6Qr9tLemxfAAAAAUVVUgAAAAAA+SY4m6vkX+Y7FMkNv7RswsIkYNGXeZ4/YwEQNUpI8/gAAAAAAAAAAH//////////AAAAAAAAAAAAAAAAAAAAAQAAACgAAAAAAAAAAKturFHJX/eRt5gM6qIXAMbaXvlImqLysA6Qr9tLemxfAAAAAlQL4zgAAAAmAAAAAgAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('6d2e30fd57492bf2e2b132e1bc91a548a369189bebf77eb2b3d829121a9d2c50', 41, 1, 'AAAAAPkmOJur5F/mOxTJDb+0bMLCJGDRl3meP2MBEDVKSPP4AAAAZAAAACYAAAACAAAAAAAAAAAAAAABAAAAAAAAAAcAAAAAq26sUclf95G3mAzqohcAxtpe+UiaovKwDpCv20t6bF8AAAABVVNEAAAAAAEAAAAAAAAAAUpI8/gAAABA6O2fe1gQBwoO0fMNNEUKH0QdVXVjEWbN5VL51DmRUedYMMXtbX5JKVSzla2kIGvWgls1dXuXHZY/IOlaK01rBQ==', 'bS4w/VdJK/LisTLhvJGlSKNpGJvr936ys9gpEhqdLFAAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAcAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAACgAAAABAAAAAKturFHJX/eRt5gM6qIXAMbaXvlImqLysA6Qr9tLemxfAAAAAVVTRAAAAAAA+SY4m6vkX+Y7FMkNv7RswsIkYNGXeZ4/YwEQNUpI8/gAAAAAAAAAAH//////////AAAAAAAAAAAAAAAAAAAAAQAAACkAAAABAAAAAKturFHJX/eRt5gM6qIXAMbaXvlImqLysA6Qr9tLemxfAAAAAVVTRAAAAAAA+SY4m6vkX+Y7FMkNv7RswsIkYNGXeZ4/YwEQNUpI8/gAAAAAAAAAAH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('a832ff67085cb9eb6f1c4b740f6e033ba9b508af725fbf203469729a64a199ff', 41, 2, 'AAAAAPkmOJur5F/mOxTJDb+0bMLCJGDRl3meP2MBEDVKSPP4AAAAZAAAACYAAAADAAAAAAAAAAAAAAABAAAAAAAAAAcAAAAAq26sUclf95G3mAzqohcAxtpe+UiaovKwDpCv20t6bF8AAAABRVVSAAAAAAEAAAAAAAAAAUpI8/gAAABA1Qe8ngwANz4fLqYChwRjR5xng6cIqU5WBtjkZgF4ugVhi8J6kTpACvnvXso3IVym6Rfd6JdQW8QcLkFTX1MGCg==', 'qDL/ZwhcuetvHEt0D24DO6m1CK9yX78gNGlymmShmf8AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAcAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAACgAAAABAAAAAKturFHJX/eRt5gM6qIXAMbaXvlImqLysA6Qr9tLemxfAAAAAUVVUgAAAAAA+SY4m6vkX+Y7FMkNv7RswsIkYNGXeZ4/YwEQNUpI8/gAAAAAAAAAAH//////////AAAAAAAAAAAAAAAAAAAAAQAAACkAAAABAAAAAKturFHJX/eRt5gM6qIXAMbaXvlImqLysA6Qr9tLemxfAAAAAUVVUgAAAAAA+SY4m6vkX+Y7FMkNv7RswsIkYNGXeZ4/YwEQNUpI8/gAAAAAAAAAAH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('d67cfb271a889e7854ffd61b08eacde76d56e758466fc37a8eec2d3a40ef8b14', 42, 1, 'AAAAAPkmOJur5F/mOxTJDb+0bMLCJGDRl3meP2MBEDVKSPP4AAAAZAAAACYAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAcAAAAAq26sUclf95G3mAzqohcAxtpe+UiaovKwDpCv20t6bF8AAAABRVVSAAAAAAAAAAAAAAAAAUpI8/gAAABAEPKcQmATGpevrtlAcZnNI/GjfLLQEp9aODGGRFV+2C4UO8dU+UAMTkCSXQLD+xPaRQxzw93ScEok6GzYCtt7Bg==', '1nz7JxqInnhU/9YbCOrN521W51hGb8N6juwtOkDvixQAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAcAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAACkAAAABAAAAAKturFHJX/eRt5gM6qIXAMbaXvlImqLysA6Qr9tLemxfAAAAAUVVUgAAAAAA+SY4m6vkX+Y7FMkNv7RswsIkYNGXeZ4/YwEQNUpI8/gAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAACoAAAABAAAAAKturFHJX/eRt5gM6qIXAMbaXvlImqLysA6Qr9tLemxfAAAAAUVVUgAAAAAA+SY4m6vkX+Y7FMkNv7RswsIkYNGXeZ4/YwEQNUpI8/gAAAAAAAAAAH//////////AAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('945b6171de747ab323b3cda52290933df39edd7061f6e260762663efc51bccb0', 43, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAASAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAjvuao1PL1U+CaCf7/+6+M/xUnEnUUdDiMKthL4rj4e8AAAACVAvkAAAAAAAAAAABVvwF9wAAAEBFbS2c5rrYNGslNVslTHH8j8x0ggew1eHHOUTNajMPy8GYn52RSwRncwwvv1ejEfA+g/mTXMpXrBO847C46KoA', 'lFthcd50erMjs82lIpCTPfOe3XBh9uJgdiZj78UbzLAAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAACsAAAAAAAAAAI77mqNTy9VPgmgn+//uvjP8VJxJ1FHQ4jCrYS+K4+HvAAAAAlQL5AAAAAArAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAACsAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2iczcDPgAAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('e0773d07aba23d11e6a06b021682294be1f9f202a2926827022539662ce2c7fc', 44, 1, 'AAAAAI77mqNTy9VPgmgn+//uvjP8VJxJ1FHQ4jCrYS+K4+HvAAAAZAAAACsAAAABAAAAAAAAAAAAAAABAAAAAAAAAAgAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcAAAAAAAAAAYrj4e8AAABA3jJ7wBrRpsrcnqBQWjyzwvVz2v5UJ56G60IhgsaWQFSf+7om462KToc+HJ27aLVOQ83dGh1ivp+VIuREJq/SBw==', '4Hc9B6uiPRHmoGsCFoIpS+H58gKikmgnAiU5Zizix/wAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAgAAAAAAAAAAlQL45wAAAAA', 'AAAAAAAAAAEAAAADAAAAAwAAACsAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2iczcDPgAAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAACwAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2jCDn8JQAAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAjvuao1PL1U+CaCf7/+6+M/xUnEnUUdDiMKthL4rj4e8='); +INSERT INTO txhistory VALUES ('5b42c77042f04bf716659a05e7ca3f4703af038a7da75b10b8538707c9ff172f', 45, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAATAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA493YBEKdTeVN3wUjgsf56+V7YgpjSdqDCWTMfjGCtycCxorwuxQAAAAAAAAAAAABVvwF9wAAAECGClRePcAExQ/WKroo3/3dfchP/yI8TRDrrjt/chZ83ULiTc54l5wcz1AkbLa6CAapdSGpUWXk5ksTqDXLn4AA', 'W0LHcELwS/cWZZoF58o/RwOvA4p9p1sQuFOHB8n/Fy8AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAC0AAAAAAAAAAOPd2ARCnU3lTd8FI4LH+evle2IKY0nagwlkzH4xgrcnAsaK8LsUAAAAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAC0AAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3Cxorm2XT8DAAAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('d24f486bd722fd1875b843839e880bdeea324e25db706a26af5e4daa8c5071eb', 46, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAUAAAAAAAAAAAAAAABAAAAAAAAAAUAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVvwF9wAAAEBYI0TMQVWPvnC2KPbDph9Myz5UMuBRIYt2YQdtlPYC4UHamYnHsMghpIMfaS7MWdHuGY81+FBozOsS+/HGohQD', '0k9Ia9ci/Rh1uEODnogL3uoyTiXbcGomr15NqoxQcesAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAAC4AAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3Cxorm2XT78wAAAAAAAAAFAAAAAAAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('7207de5b75243e0b062c3833f587036b7e9f64453be49ff50f3f3fdc7516ec6b', 46, 2, 'AAAAAOPd2ARCnU3lTd8FI4LH+evle2IKY0nagwlkzH4xgrcnAAAAZAAAAC0AAAABAAAAAAAAAAAAAAABAAAAAAAAAAUAAAABAAAAAOPd2ARCnU3lTd8FI4LH+evle2IKY0nagwlkzH4xgrcnAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMYK3JwAAAEAOkGOPTOBDSQ7nW2Zn+bls2PDUebk2/k3/gqHKQ8eYOFsD6nBeEvyMD858vo5BabjQwB9injABIM8esDh7bEkC', 'cgfeW3UkPgsGLDgz9YcDa36fZEU75J/1Dz8/3HUW7GsAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAAC4AAAAAAAAAAOPd2ARCnU3lTd8FI4LH+evle2IKY0nagwlkzH4xgrcnAsaK8LsT/5wAAAAtAAAAAQAAAAAAAAABAAAAAOPd2ARCnU3lTd8FI4LH+evle2IKY0nagwlkzH4xgrcnAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('ea93efd8c2f4e45c0318c69ec958623a0e4374f40d569eec124d43c8a54d6256', 47, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAVAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAAAVb8BfcAAABABUHuXY+MTgW/wDv5+NDVh9fw4meszxeXO98HEQfgXVeCZ7eObCI2orSGUNA/SK6HV9/uTVSxIQQWIso1QoxHBQ==', '6pPv2ML05FwDGMaeyVhiOg5DdPQNVp7sEk1DyKVNYlYAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAkAAAAAAAAAAgAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAisSMJjBcAAAAAOPd2ARCnU3lTd8FI4LH+evle2IKY0nagwlkzH4xgrcnAAAisSN9x4sAAAAA', 'AAAAAAAAAAEAAAADAAAAAQAAAC8AAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3Cxq2X/H6H8QAAAAAAAAAFQAAAAAAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAwAAAC4AAAAAAAAAAOPd2ARCnU3lTd8FI4LH+evle2IKY0nagwlkzH4xgrcnAsaK8LsT/5wAAAAtAAAAAQAAAAAAAAABAAAAAOPd2ARCnU3lTd8FI4LH+evle2IKY0nagwlkzH4xgrcnAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAC8AAAAAAAAAAOPd2ARCnU3lTd8FI4LH+evle2IKY0nagwlkzH4xgrcnAsatod6RxycAAAAtAAAAAQAAAAAAAAABAAAAAOPd2ARCnU3lTd8FI4LH+evle2IKY0nagwlkzH4xgrcnAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('eb8586c9176c4cf2e864b2521948a972db5274de24673669463e0c7824cee056', 48, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAWAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAMSExUMeJhd3PnPyXvdcbKtDZE3zllFbW4uwI1C6Z+xkAAAACVAvkAAAAAAAAAAABVvwF9wAAAECAMOn6G4jusgpfSoHwntHQkYIDxI/VnyH/qIi+bdMWzi1T6WlwnO+yITgm2+mOaWc6zVuxiLjHllzBeQ/xKvQN', '64WGyRdsTPLoZLJSGUipcttSdN4kZzZpRj4MeCTO4FYAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAADAAAAAAAAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAAAlQL5AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAADAAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3Cxq2XZ3uO2AAAAAAAAAAFgAAAAAAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('9fff61916716fb2550043fac968ac6c13802af5176a10fc29108fcfc445ef513', 49, 1, 'AAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAAZAAAADAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAoAAAAFbmFtZTEAAAAAAAABAAAABDEyMzQAAAAAAAAAAS6Z+xkAAABAxKiHYYNLJiW3r5+kCJm8ucaoV7BcrEnQXFb3s1RyRyUbAkDlaCvE+RKwMZoNUfbkQUGrouyVKy1ZpUeccByqDg==', 'n/9hkWcW+yVQBD+slorGwTgCr1F2oQ/CkQj8/ERe9RMAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAoAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAADEAAAADAAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAABW5hbWUxAAAAAAAABDEyMzQAAAAAAAAAAAAAAAEAAAAxAAAAAAAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAJUC+LUAAAAMAAAAAMAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('e4609180751e7702466a8845857df43e4d154ec84b6bad62ce507fe12f1daf99', 49, 2, 'AAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAAZAAAADAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAoAAAAFbmFtZTIAAAAAAAABAAAABDU2NzgAAAAAAAAAAS6Z+xkAAABAjxgnTRBCa0n1efZocxpEjXeITQ5sEYTVd9fowuto2kPw5eFwgVnz6OrKJwCRt5L8ylmWiATXVI3Zyfi3yTKqBA==', '5GCRgHUedwJGaohFhX30Pk0VTshLa61izlB/4S8dr5kAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAoAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAADEAAAADAAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAABW5hbWUyAAAAAAAABDU2NzgAAAAAAAAAAAAAAAEAAAAxAAAAAAAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAJUC+LUAAAAMAAAAAMAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('48415cd0fda9bc9aeb1f0b419bfb2997f7a2aa1b1ef2e51a0602c61104fc23cc', 49, 3, 'AAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAAZAAAADAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAoAAAAFbmFtZSAAAAAAAAABAAAAD2l0cyBnb3Qgc3BhY2VzIQAAAAAAAAAAAS6Z+xkAAABANmYginYhX+6VAsl1JumfxkB57y2LHraWDUkR+KDxWW8l5pfTViLxx7J85KrOV0qNCY4RfasgqxF0FC3ErYceCQ==', 'SEFc0P2pvJrrHwtBm/spl/eiqhse8uUaBgLGEQT8I8wAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAoAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAADEAAAADAAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAABW5hbWUgAAAAAAAAD2l0cyBnb3Qgc3BhY2VzIQAAAAAAAAAAAAAAAAEAAAAxAAAAAAAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAJUC+LUAAAAMAAAAAMAAAADAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('616c609047ef8f9ca908a47a47aa4bb018449c569549ad2ca60590aab74267e8', 50, 1, 'AAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAAZAAAADAAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAoAAAAFbmFtZTIAAAAAAAAAAAAAAAAAAAEumfsZAAAAQAYRZNPhJCTwjJgAJ9beE3ZO/H3kYJhYmV1pCmy7c8Zr2sKdKOmaLn4fmA5qaL+lQMKwOShtjwkZ8JHxPUd8GAk=', 'YWxgkEfvj5ypCKR6R6pLsBhEnFaVSa0spgWQqrdCZ+gAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAoAAAAAAAAAAA==', 'AAAAAAAAAAEAAAADAAAAAQAAADIAAAAAAAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAAAlQL4nAAAAAwAAAABAAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAwAAADEAAAADAAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAABW5hbWUyAAAAAAAABDU2NzgAAAAAAAAAAAAAAAIAAAADAAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAABW5hbWUyAAAA'); +INSERT INTO txhistory VALUES ('1d7833c4faab08e62609acf3714d1babe27621a2b328edf37465e99aaf389cab', 51, 1, 'AAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAAZAAAADAAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAoAAAAFbmFtZTEAAAAAAAABAAAABDEyMzQAAAAAAAAAAS6Z+xkAAABAIW4yrFdk66fgDDir7YFATEd2llOubzx/iaJcM2wkF3ouqJQN+Aziy2rVtK5AoyphokiwsYXvHS6UF9MhdnUADQ==', 'HXgzxPqrCOYmCazzcU0bq+J2IaKzKO3zdGXpmq84nKsAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAoAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAADEAAAADAAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAABW5hbWUxAAAAAAAABDEyMzQAAAAAAAAAAAAAAAEAAAAzAAAAAwAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAVuYW1lMQAAAAAAAAQxMjM0AAAAAAAAAAA='); +INSERT INTO txhistory VALUES ('c8a28fb25d4784f37a7a078e1feef0eb30ca64e994734625ac4ea067cc621464', 52, 1, 'AAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAAZAAAADAAAAAGAAAAAAAAAAAAAAABAAAAAAAAAAoAAAAFbmFtZTEAAAAAAAABAAAABDAwMDAAAAAAAAAAAS6Z+xkAAABA3ExJNH79wGSRYZerPP1zMYlepMsuhoJF5vHn2gCsHmDpWfgO8VKC3BRImO+ne9spUXlVHMjEuhOHoPhl1hrMCg==', 'yKKPsl1HhPN6egeOH+7w6zDKZOmUc0YlrE6gZ8xiFGQAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAoAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAADMAAAADAAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAABW5hbWUxAAAAAAAABDEyMzQAAAAAAAAAAAAAAAEAAAA0AAAAAwAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAVuYW1lMQAAAAAAAAQwMDAwAAAAAAAAAAA='); +INSERT INTO txhistory VALUES ('df5f0e8b3b533dd9cda0ff7540bef3e9e19369060f8a4b0414b0e3c1b4315b1c', 53, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAXAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAABJeTmKR1qr+CZoIyjAfGxrIXZ/tI1VId2OfZkRowDz4AAAACVAvkAAAAAAAAAAABVvwF9wAAAEDyHwhW9GXQVXG1qibbeqSjxYzhv5IC08K2vSkxzYTwJykvQ8l0+e4M4h2guoK89s8HUfIqIOzDmoGsNTaLcYUG', '318OiztTPdnNoP91QL7z6eGTaQYPiksEFLDjwbQxWxwAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAADUAAAAAAAAAAASXk5ikdaq/gmaCMowHxsayF2f7SNVSHdjn2ZEaMA8+AAAAAlQL5AAAAAA1AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAADUAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3Cxq2W0niVvwAAAAAAAAAFwAAAAAAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('85bbd2b558563518a38e9b749bd4b8ced60b9fbbb7a6b283e15ae98548302ac4', 54, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAyAAAAAAAAAAYAAAAAAAAAAAAAAACAAAAAAAAAAEAAAAABJeTmKR1qr+CZoIyjAfGxrIXZ/tI1VId2OfZkRowDz4AAAAAAAAAAAX14QAAAAABAAAAAASXk5ikdaq/gmaCMowHxsayF2f7SNVSHdjn2ZEaMA8+AAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAABfXhAAAAAAAAAAACVvwF9wAAAEDRRWwMrdLrhnl+FIP+71tTHB5rlzCsPVyGnR3scvID9NmIL3LZEo992uTvDI9QLys5bC2yRc3WYR0vFiZRs40IGjAPPgAAAEDXbXWVdzmN6NWBjYU5OvB33WTUaa2wDZX3RmFTZQQ/+7JvPdblMtNCxo8IOYePQg90RajV9rB+k8P+SEpPHCUH', 'hbvStVhWNRijjpt0m9S4ztYLn7u3prKD4VrphUgwKsQAAAAAAAAAyAAAAAAAAAACAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAIAAAADAAAAAwAAADUAAAAAAAAAAASXk5ikdaq/gmaCMowHxsayF2f7SNVSHdjn2ZEaMA8+AAAAAlQL5AAAAAA1AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAADYAAAAAAAAAAASXk5ikdaq/gmaCMowHxsayF2f7SNVSHdjn2ZEaMA8+AAAAAloBxQAAAAA1AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAADYAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3Cxq2W0PsdTQAAAAAAAAAGAAAAAAAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAEAAAA2AAAAAAAAAAAEl5OYpHWqv4JmgjKMB8bGshdn+0jVUh3Y59mRGjAPPgAAAAJUC+QAAAAANQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAA2AAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wsatltJ4lY0AAAAAAAAABgAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('5bbbedfb52efd1d5d973e22540044a27b8115772314293e3ba8b1fb12e63ca2e', 55, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAZAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAGlyOIRNnS6HDEkmGAE9gpZJUnLZNnYsjzt+pXVxR/9QAAAACVAvkAAAAAAAAAAABVvwF9wAAAEBCMMjX9xO3XKpQ6uS/U1BqdzRhSBYQ35ivmZxPBgfqQsTDma1BzOsq/bmHJ4P+fkYJRJUdZZazXJM2i4mF7nUH', 'W7vt+1Lv0dXZc+IlQARKJ7gRV3IxQpPjuosfsS5jyi4AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAADcAAAAAAAAAABpcjiETZ0uhwxJJhgBPYKWSVJy2TZ2LI87fqV1cUf/UAAAAAlQL5AAAAAA3AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAADcAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3Cxq2WPXWcdAAAAAAAAAAGQAAAAAAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('2a805712c6d10f9e74bb0ccf54ae92a2b4b1e586451fe8133a2433816f6b567c', 56, 1, 'AAAAABpcjiETZ0uhwxJJhgBPYKWSVJy2TZ2LI87fqV1cUf/UAAAAZAAAADcAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAGlyOIRNnS6HDEkmGAE9gpZJUnLZNnYsjzt+pXVxR/9QAAAAAAAAAAAX14QAAAAAAAAAAAVxR/9QAAABAK6pcXYMzAEmH08CZ1LWmvtNDKauhx+OImtP/Lk4hVTMJRVBOebVs5WEPj9iSrgGT0EswuDCZ2i5AEzwgGof9Ag==', 'KoBXEsbRD550uwzPVK6SorSx5YZFH+gTOiQzgW9rVnwAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAAA'); + + +-- +-- Name: accountdata accountdata_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accountdata + ADD CONSTRAINT accountdata_pkey PRIMARY KEY (accountid, dataname); + + +-- +-- Name: accounts accounts_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accounts + ADD CONSTRAINT accounts_pkey PRIMARY KEY (accountid); + + +-- +-- Name: ban ban_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ban + ADD CONSTRAINT ban_pkey PRIMARY KEY (nodeid); + + +-- +-- Name: ledgerheaders ledgerheaders_ledgerseq_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_ledgerseq_key UNIQUE (ledgerseq); + + +-- +-- Name: ledgerheaders ledgerheaders_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_pkey PRIMARY KEY (ledgerhash); + + +-- +-- Name: offers offers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY offers + ADD CONSTRAINT offers_pkey PRIMARY KEY (offerid); + + +-- +-- Name: peers peers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY peers + ADD CONSTRAINT peers_pkey PRIMARY KEY (ip, port); + + +-- +-- Name: publishqueue publishqueue_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY publishqueue + ADD CONSTRAINT publishqueue_pkey PRIMARY KEY (ledger); + + +-- +-- Name: pubsub pubsub_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY pubsub + ADD CONSTRAINT pubsub_pkey PRIMARY KEY (resid); + + +-- +-- Name: scpquorums scpquorums_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY scpquorums + ADD CONSTRAINT scpquorums_pkey PRIMARY KEY (qsethash); + + +-- +-- Name: signers signers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY signers + ADD CONSTRAINT signers_pkey PRIMARY KEY (accountid, publickey); + + +-- +-- Name: storestate storestate_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY storestate + ADD CONSTRAINT storestate_pkey PRIMARY KEY (statename); + + +-- +-- Name: trustlines trustlines_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY trustlines + ADD CONSTRAINT trustlines_pkey PRIMARY KEY (accountid, issuer, assetcode); + + +-- +-- Name: txfeehistory txfeehistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txfeehistory + ADD CONSTRAINT txfeehistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: txhistory txhistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txhistory + ADD CONSTRAINT txhistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: accountbalances; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX accountbalances ON accounts USING btree (balance) WHERE (balance >= 1000000000); + + +-- +-- Name: buyingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX buyingissuerindex ON offers USING btree (buyingissuer); + + +-- +-- Name: histbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histbyseq ON txhistory USING btree (ledgerseq); + + +-- +-- Name: histfeebyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histfeebyseq ON txfeehistory USING btree (ledgerseq); + + +-- +-- Name: ledgersbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX ledgersbyseq ON ledgerheaders USING btree (ledgerseq); + + +-- +-- Name: priceindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX priceindex ON offers USING btree (price); + + +-- +-- Name: scpenvsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpenvsbyseq ON scphistory USING btree (ledgerseq); + + +-- +-- Name: scpquorumsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpquorumsbyseq ON scpquorums USING btree (lastledgerseq); + + +-- +-- Name: sellingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX sellingissuerindex ON offers USING btree (sellingissuer); + + +-- +-- Name: signersaccount; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX signersaccount ON signers USING btree (accountid); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/kahuna-horizon.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/kahuna-horizon.sql new file mode 100644 index 0000000..afffa2d --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/kahuna-horizon.sql @@ -0,0 +1,1399 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; + +SET search_path = public, pg_catalog; + +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_account_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_account_id_fkey; +DROP INDEX IF EXISTS public.trade_effects_by_order_book; +DROP INDEX IF EXISTS public.index_history_transactions_on_id; +DROP INDEX IF EXISTS public.index_history_operations_on_type; +DROP INDEX IF EXISTS public.index_history_operations_on_transaction_id; +DROP INDEX IF EXISTS public.index_history_operations_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_sequence; +DROP INDEX IF EXISTS public.index_history_ledgers_on_previous_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_importer_version; +DROP INDEX IF EXISTS public.index_history_ledgers_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_closed_at; +DROP INDEX IF EXISTS public.index_history_effects_on_type; +DROP INDEX IF EXISTS public.index_history_accounts_on_id; +DROP INDEX IF EXISTS public.index_history_accounts_on_address; +DROP INDEX IF EXISTS public.htrd_time_lookup; +DROP INDEX IF EXISTS public.htrd_pid; +DROP INDEX IF EXISTS public.htrd_pair_time_lookup; +DROP INDEX IF EXISTS public.htrd_counter_lookup; +DROP INDEX IF EXISTS public.htrd_by_offer; +DROP INDEX IF EXISTS public.htp_by_htid; +DROP INDEX IF EXISTS public.hs_transaction_by_id; +DROP INDEX IF EXISTS public.hs_ledger_by_id; +DROP INDEX IF EXISTS public.hop_by_hoid; +DROP INDEX IF EXISTS public.hist_tx_p_id; +DROP INDEX IF EXISTS public.hist_op_p_id; +DROP INDEX IF EXISTS public.hist_e_id; +DROP INDEX IF EXISTS public.hist_e_by_order; +DROP INDEX IF EXISTS public.by_ledger; +DROP INDEX IF EXISTS public.by_hash; +DROP INDEX IF EXISTS public.by_account; +DROP INDEX IF EXISTS public.asset_by_issuer; +ALTER TABLE IF EXISTS ONLY public.history_transaction_participants DROP CONSTRAINT IF EXISTS history_transaction_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_operation_participants DROP CONSTRAINT IF EXISTS history_operation_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_asset_code_asset_type_asset_issuer_key; +ALTER TABLE IF EXISTS ONLY public.gorp_migrations DROP CONSTRAINT IF EXISTS gorp_migrations_pkey; +ALTER TABLE IF EXISTS public.history_transaction_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_operation_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_assets ALTER COLUMN id DROP DEFAULT; +DROP TABLE IF EXISTS public.history_transactions; +DROP SEQUENCE IF EXISTS public.history_transaction_participants_id_seq; +DROP TABLE IF EXISTS public.history_transaction_participants; +DROP TABLE IF EXISTS public.history_trades; +DROP TABLE IF EXISTS public.history_operations; +DROP SEQUENCE IF EXISTS public.history_operation_participants_id_seq; +DROP TABLE IF EXISTS public.history_operation_participants; +DROP TABLE IF EXISTS public.history_ledgers; +DROP TABLE IF EXISTS public.history_effects; +DROP SEQUENCE IF EXISTS public.history_assets_id_seq; +DROP TABLE IF EXISTS public.history_assets; +DROP TABLE IF EXISTS public.history_accounts; +DROP SEQUENCE IF EXISTS public.history_accounts_id_seq; +DROP TABLE IF EXISTS public.gorp_migrations; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: gorp_migrations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE gorp_migrations ( + id text NOT NULL, + applied_at timestamp with time zone +); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_accounts_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_accounts ( + id bigint DEFAULT nextval('history_accounts_id_seq'::regclass) NOT NULL, + address character varying(64) +); + + +-- +-- Name: history_assets; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_assets ( + id integer NOT NULL, + asset_type character varying(64) NOT NULL, + asset_code character varying(12) NOT NULL, + asset_issuer character varying(56) NOT NULL +); + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_assets_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_assets_id_seq OWNED BY history_assets.id; + + +-- +-- Name: history_effects; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_effects ( + history_account_id bigint NOT NULL, + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + type integer NOT NULL, + details jsonb +); + + +-- +-- Name: history_ledgers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_ledgers ( + sequence integer NOT NULL, + ledger_hash character varying(64) NOT NULL, + previous_ledger_hash character varying(64), + transaction_count integer DEFAULT 0 NOT NULL, + operation_count integer DEFAULT 0 NOT NULL, + closed_at timestamp without time zone NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + importer_version integer DEFAULT 1 NOT NULL, + total_coins bigint NOT NULL, + fee_pool bigint NOT NULL, + base_fee integer NOT NULL, + base_reserve integer NOT NULL, + max_tx_set_size integer NOT NULL, + protocol_version integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: history_operation_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operation_participants ( + id integer NOT NULL, + history_operation_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_operation_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_operation_participants_id_seq OWNED BY history_operation_participants.id; + + +-- +-- Name: history_operations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operations ( + id bigint NOT NULL, + transaction_id bigint NOT NULL, + application_order integer NOT NULL, + type integer NOT NULL, + details jsonb, + source_account character varying(64) DEFAULT ''::character varying NOT NULL +); + + +-- +-- Name: history_trades; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_trades ( + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + ledger_closed_at timestamp without time zone NOT NULL, + offer_id bigint NOT NULL, + base_account_id bigint NOT NULL, + base_asset_id bigint NOT NULL, + base_amount bigint NOT NULL, + counter_account_id bigint NOT NULL, + counter_asset_id bigint NOT NULL, + counter_amount bigint NOT NULL, + base_is_seller boolean, + CONSTRAINT history_trades_base_amount_check CHECK ((base_amount > 0)), + CONSTRAINT history_trades_check CHECK ((base_asset_id < counter_asset_id)), + CONSTRAINT history_trades_counter_amount_check CHECK ((counter_amount > 0)) +); + + +-- +-- Name: history_transaction_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transaction_participants ( + id integer NOT NULL, + history_transaction_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_transaction_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_transaction_participants_id_seq OWNED BY history_transaction_participants.id; + + +-- +-- Name: history_transactions; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transactions ( + transaction_hash character varying(64) NOT NULL, + ledger_sequence integer NOT NULL, + application_order integer NOT NULL, + account character varying(64) NOT NULL, + account_sequence bigint NOT NULL, + fee_paid integer NOT NULL, + operation_count integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + tx_envelope text NOT NULL, + tx_result text NOT NULL, + tx_meta text NOT NULL, + tx_fee_meta text NOT NULL, + signatures character varying(96)[] DEFAULT '{}'::character varying[] NOT NULL, + memo_type character varying DEFAULT 'none'::character varying NOT NULL, + memo character varying, + time_bounds int8range +); + + +-- +-- Name: history_assets id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets ALTER COLUMN id SET DEFAULT nextval('history_assets_id_seq'::regclass); + + +-- +-- Name: history_operation_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants ALTER COLUMN id SET DEFAULT nextval('history_operation_participants_id_seq'::regclass); + + +-- +-- Name: history_transaction_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants ALTER COLUMN id SET DEFAULT nextval('history_transaction_participants_id_seq'::regclass); + + +-- +-- Data for Name: gorp_migrations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO gorp_migrations VALUES ('1_initial_schema.sql', '2017-10-25 12:02:41.355815-07'); +INSERT INTO gorp_migrations VALUES ('2_index_participants_by_toid.sql', '2017-10-25 12:02:41.35913-07'); +INSERT INTO gorp_migrations VALUES ('3_use_sequence_in_history_accounts.sql', '2017-10-25 12:02:41.361119-07'); +INSERT INTO gorp_migrations VALUES ('4_add_protocol_version.sql', '2017-10-25 12:02:41.365998-07'); +INSERT INTO gorp_migrations VALUES ('5_create_trades_table.sql', '2017-10-25 12:02:41.370443-07'); +INSERT INTO gorp_migrations VALUES ('6_create_assets_table.sql', '2017-10-25 12:02:41.373746-07'); +INSERT INTO gorp_migrations VALUES ('7_modify_trades_table.sql', '2017-10-25 12:02:41.381902-07'); + + +-- +-- Data for Name: history_accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_accounts VALUES (1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_accounts VALUES (2, 'GAXI33UCLQTCKM2NMRBS7XYBR535LLEVAHL5YBN4FTCB4HZHT7ZA5CVK'); +INSERT INTO history_accounts VALUES (3, 'GDXFAGJCSCI4CK2YHK6YRLA6TKEXFRX7BMGVMQOBMLIEUJRJ5YQNLMIB'); +INSERT INTO history_accounts VALUES (4, 'GA46VRKBCLI2X6DXLX7AIEVRFLH3UA7XBE3NGNP6O74HQ5LXHMGTV2JB'); +INSERT INTO history_accounts VALUES (5, 'GAG52TW6QAB6TGNMOTL32Y4M3UQQLNNNHPEHYAIYRP6SFF6ZAVRF5ZQY'); +INSERT INTO history_accounts VALUES (6, 'GDCVTBGSEEU7KLXUMHMSXBALXJ2T4I2KOPXW2S5TRLKDRIAXD5UDHAYO'); +INSERT INTO history_accounts VALUES (7, 'GCB7FPYGLL6RJ37HKRAYW5TAWMFBGGFGM4IM6ERBCZXI2BZ4OOOX2UAY'); +INSERT INTO history_accounts VALUES (8, 'GCHC4D2CS45CJRNN4QAHT2LFZAJIU5PA7H53K3VOP6WEJ6XWHNSNZKQG'); +INSERT INTO history_accounts VALUES (9, 'GANZGPKY5WSHWG5YOZMNG52GCK5SCJ4YGUWMJJVGZSK2FP4BI2JIJN2C'); +INSERT INTO history_accounts VALUES (10, 'GDRW375MAYR46ODGF2WGANQC2RRZL7O246DYHHCGWTV2RE7IHE2QUQLD'); +INSERT INTO history_accounts VALUES (11, 'GACAR2AEYEKITE2LKI5RMXF5MIVZ6Q7XILROGDT22O7JX4DSWFS7FDDP'); +INSERT INTO history_accounts VALUES (12, 'GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU'); +INSERT INTO history_accounts VALUES (13, 'GBOK7BOUSOWPHBANBYM6MIRYZJIDIPUYJPXHTHADF75UEVIVYWHHONQC'); +INSERT INTO history_accounts VALUES (14, 'GB2QIYT2IAUFMRXKLSLLPRECC6OCOGJMADSPTRK7TGNT2SFR2YGWDARD'); +INSERT INTO history_accounts VALUES (15, 'GB6GN3LJUW6JYR7EDOJ47VBH7D45M4JWHXGK6LHJRAEI5JBSN2DBQY7Q'); +INSERT INTO history_accounts VALUES (16, 'GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES'); +INSERT INTO history_accounts VALUES (17, 'GCJKJXPKBFIHOO3455WXWG5CDBZXQNYFRRGICYMPUQ35CPQ4WVS3KZLG'); +INSERT INTO history_accounts VALUES (18, 'GCVW5LCRZFP7PENXTAGOVIQXADDNUXXZJCNKF4VQB2IK7W2LPJWF73UG'); +INSERT INTO history_accounts VALUES (19, 'GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF'); +INSERT INTO history_accounts VALUES (20, 'GCHPXGVDKPF5KT4CNAT7X77OXYZ7YVE4JHKFDUHCGCVWCL4K4PQ67KKZ'); +INSERT INTO history_accounts VALUES (21, 'GDR53WAEIKOU3ZKN34CSHAWH7HV6K63CBJRUTWUDBFSMY7RRQK3SPKOS'); +INSERT INTO history_accounts VALUES (22, 'GAYSCMKQY6EYLXOPTT6JPPOXDMVNBWITPTSZIVWW4LWARVBOTH5RTLAD'); +INSERT INTO history_accounts VALUES (23, 'GACJPE4YUR22VP4CM2BDFDAHY3DLEF3H7NENKUQ53DT5TEI2GAHT5N4X'); +INSERT INTO history_accounts VALUES (24, 'GANFZDRBCNTUXIODCJEYMACPMCSZEVE4WZGZ3CZDZ3P2SXK4KH75IK6Y'); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_accounts_id_seq', 24, true); + + +-- +-- Data for Name: history_assets; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_assets VALUES (1, 'native', '', ''); +INSERT INTO history_assets VALUES (2, 'credit_alphanum4', 'USD', 'GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU'); +INSERT INTO history_assets VALUES (3, 'credit_alphanum4', 'EUR', 'GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU'); +INSERT INTO history_assets VALUES (4, 'credit_alphanum4', 'USD', 'GB2QIYT2IAUFMRXKLSLLPRECC6OCOGJMADSPTRK7TGNT2SFR2YGWDARD'); + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_assets_id_seq', 4, true); + + +-- +-- Data for Name: history_effects; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_effects VALUES (2, 12884905985, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 12884905985, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (2, 12884905985, 3, 10, '{"weight": 1, "public_key": "GAXI33UCLQTCKM2NMRBS7XYBR535LLEVAHL5YBN4FTCB4HZHT7ZA5CVK"}'); +INSERT INTO history_effects VALUES (3, 17179873281, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 17179873281, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (3, 17179873281, 3, 10, '{"weight": 1, "public_key": "GDXFAGJCSCI4CK2YHK6YRLA6TKEXFRX7BMGVMQOBMLIEUJRJ5YQNLMIB"}'); +INSERT INTO history_effects VALUES (3, 21474840577, 1, 12, '{"weight": 1, "public_key": "GDXFAGJCSCI4CK2YHK6YRLA6TKEXFRX7BMGVMQOBMLIEUJRJ5YQNLMIB"}'); +INSERT INTO history_effects VALUES (3, 21474844673, 1, 12, '{"weight": 1, "public_key": "GDXFAGJCSCI4CK2YHK6YRLA6TKEXFRX7BMGVMQOBMLIEUJRJ5YQNLMIB"}'); +INSERT INTO history_effects VALUES (3, 21474844673, 2, 10, '{"weight": 1, "public_key": "GD3E7HKMRNT6HGBGHBT6I6JE4N2S4W5KZ246TGJ4KQSXJ2P4BXCUPQMP"}'); +INSERT INTO history_effects VALUES (3, 21474848769, 1, 4, '{"low_threshold": 2, "med_threshold": 2, "high_threshold": 2}'); +INSERT INTO history_effects VALUES (3, 21474848769, 2, 12, '{"weight": 1, "public_key": "GDXFAGJCSCI4CK2YHK6YRLA6TKEXFRX7BMGVMQOBMLIEUJRJ5YQNLMIB"}'); +INSERT INTO history_effects VALUES (3, 21474848769, 3, 10, '{"weight": 1, "public_key": "GD3E7HKMRNT6HGBGHBT6I6JE4N2S4W5KZ246TGJ4KQSXJ2P4BXCUPQMP"}'); +INSERT INTO history_effects VALUES (3, 25769807873, 1, 12, '{"weight": 2, "public_key": "GDXFAGJCSCI4CK2YHK6YRLA6TKEXFRX7BMGVMQOBMLIEUJRJ5YQNLMIB"}'); +INSERT INTO history_effects VALUES (3, 25769807873, 2, 12, '{"weight": 1, "public_key": "GD3E7HKMRNT6HGBGHBT6I6JE4N2S4W5KZ246TGJ4KQSXJ2P4BXCUPQMP"}'); +INSERT INTO history_effects VALUES (4, 30064775169, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 30064775169, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (4, 30064775169, 3, 10, '{"weight": 1, "public_key": "GA46VRKBCLI2X6DXLX7AIEVRFLH3UA7XBE3NGNP6O74HQ5LXHMGTV2JB"}'); +INSERT INTO history_effects VALUES (1, 34359742465, 1, 2, '{"amount": "1.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (4, 34359742465, 2, 3, '{"amount": "1.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (1, 34359746561, 1, 2, '{"amount": "1.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (4, 34359746561, 2, 3, '{"amount": "1.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (1, 34359750657, 1, 2, '{"amount": "1.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (4, 34359750657, 2, 3, '{"amount": "1.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (1, 34359754753, 1, 2, '{"amount": "1.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (4, 34359754753, 2, 3, '{"amount": "1.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (5, 38654709761, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 38654709761, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (5, 38654709761, 3, 10, '{"weight": 1, "public_key": "GAG52TW6QAB6TGNMOTL32Y4M3UQQLNNNHPEHYAIYRP6SFF6ZAVRF5ZQY"}'); +INSERT INTO history_effects VALUES (1, 42949677057, 1, 2, '{"amount": "10.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (5, 42949677057, 2, 3, '{"amount": "10.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (1, 42949677058, 1, 2, '{"amount": "10.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (5, 42949677058, 2, 3, '{"amount": "10.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (6, 47244644353, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 47244644353, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (6, 47244644353, 3, 10, '{"weight": 1, "public_key": "GDCVTBGSEEU7KLXUMHMSXBALXJ2T4I2KOPXW2S5TRLKDRIAXD5UDHAYO"}'); +INSERT INTO history_effects VALUES (7, 51539611649, 1, 0, '{"starting_balance": "50.0000000"}'); +INSERT INTO history_effects VALUES (6, 51539611649, 2, 3, '{"amount": "50.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (7, 51539611649, 3, 10, '{"weight": 1, "public_key": "GCB7FPYGLL6RJ37HKRAYW5TAWMFBGGFGM4IM6ERBCZXI2BZ4OOOX2UAY"}'); +INSERT INTO history_effects VALUES (8, 55834578945, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 55834578945, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (8, 55834578945, 3, 10, '{"weight": 1, "public_key": "GCHC4D2CS45CJRNN4QAHT2LFZAJIU5PA7H53K3VOP6WEJ6XWHNSNZKQG"}'); +INSERT INTO history_effects VALUES (9, 55834583041, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 55834583041, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (9, 55834583041, 3, 10, '{"weight": 1, "public_key": "GANZGPKY5WSHWG5YOZMNG52GCK5SCJ4YGUWMJJVGZSK2FP4BI2JIJN2C"}'); +INSERT INTO history_effects VALUES (9, 60129546241, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GCHC4D2CS45CJRNN4QAHT2LFZAJIU5PA7H53K3VOP6WEJ6XWHNSNZKQG"}'); +INSERT INTO history_effects VALUES (9, 60129550337, 1, 2, '{"amount": "10.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (8, 60129550337, 2, 3, '{"amount": "10.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (9, 64424513537, 1, 2, '{"amount": "10.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GCHC4D2CS45CJRNN4QAHT2LFZAJIU5PA7H53K3VOP6WEJ6XWHNSNZKQG"}'); +INSERT INTO history_effects VALUES (8, 64424513537, 2, 3, '{"amount": "10.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GCHC4D2CS45CJRNN4QAHT2LFZAJIU5PA7H53K3VOP6WEJ6XWHNSNZKQG"}'); +INSERT INTO history_effects VALUES (10, 68719480833, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 68719480833, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (10, 68719480833, 3, 10, '{"weight": 1, "public_key": "GDRW375MAYR46ODGF2WGANQC2RRZL7O246DYHHCGWTV2RE7IHE2QUQLD"}'); +INSERT INTO history_effects VALUES (11, 68719484929, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 68719484929, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (11, 68719484929, 3, 10, '{"weight": 1, "public_key": "GACAR2AEYEKITE2LKI5RMXF5MIVZ6Q7XILROGDT22O7JX4DSWFS7FDDP"}'); +INSERT INTO history_effects VALUES (12, 68719489025, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 68719489025, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (12, 68719489025, 3, 10, '{"weight": 1, "public_key": "GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU"}'); +INSERT INTO history_effects VALUES (10, 73014448129, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU"}'); +INSERT INTO history_effects VALUES (11, 73014452225, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU"}'); +INSERT INTO history_effects VALUES (10, 77309415425, 1, 2, '{"amount": "100.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU"}'); +INSERT INTO history_effects VALUES (12, 77309415425, 2, 3, '{"amount": "100.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU"}'); +INSERT INTO history_effects VALUES (10, 81604382721, 1, 33, '{"seller": "GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU", "offer_id": 1, "sold_amount": "100.0000000", "bought_amount": "200.0000000", "sold_asset_code": "USD", "sold_asset_type": "credit_alphanum4", "bought_asset_type": "native", "sold_asset_issuer": "GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU"}'); +INSERT INTO history_effects VALUES (12, 81604382721, 2, 33, '{"seller": "GDRW375MAYR46ODGF2WGANQC2RRZL7O246DYHHCGWTV2RE7IHE2QUQLD", "offer_id": 1, "sold_amount": "200.0000000", "bought_amount": "100.0000000", "sold_asset_type": "native", "bought_asset_code": "USD", "bought_asset_type": "credit_alphanum4", "bought_asset_issuer": "GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU"}'); +INSERT INTO history_effects VALUES (10, 81604382721, 3, 33, '{"seller": "GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU", "offer_id": 2, "sold_amount": "200.0000000", "bought_amount": "200.0000000", "sold_asset_type": "native", "bought_asset_code": "EUR", "bought_asset_type": "credit_alphanum4", "bought_asset_issuer": "GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU"}'); +INSERT INTO history_effects VALUES (12, 81604382721, 4, 33, '{"seller": "GDRW375MAYR46ODGF2WGANQC2RRZL7O246DYHHCGWTV2RE7IHE2QUQLD", "offer_id": 2, "sold_amount": "200.0000000", "bought_amount": "200.0000000", "sold_asset_code": "EUR", "sold_asset_type": "credit_alphanum4", "bought_asset_type": "native", "sold_asset_issuer": "GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU"}'); +INSERT INTO history_effects VALUES (10, 85899350017, 1, 33, '{"seller": "GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU", "offer_id": 2, "sold_amount": "100.0000000", "bought_amount": "100.0000000", "sold_asset_type": "native", "bought_asset_code": "EUR", "bought_asset_type": "credit_alphanum4", "bought_asset_issuer": "GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU"}'); +INSERT INTO history_effects VALUES (12, 85899350017, 2, 33, '{"seller": "GDRW375MAYR46ODGF2WGANQC2RRZL7O246DYHHCGWTV2RE7IHE2QUQLD", "offer_id": 2, "sold_amount": "100.0000000", "bought_amount": "100.0000000", "sold_asset_code": "EUR", "sold_asset_type": "credit_alphanum4", "bought_asset_type": "native", "sold_asset_issuer": "GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU"}'); +INSERT INTO history_effects VALUES (13, 90194317313, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 90194317313, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (13, 90194317313, 3, 10, '{"weight": 1, "public_key": "GBOK7BOUSOWPHBANBYM6MIRYZJIDIPUYJPXHTHADF75UEVIVYWHHONQC"}'); +INSERT INTO history_effects VALUES (14, 90194321409, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 90194321409, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (14, 90194321409, 3, 10, '{"weight": 1, "public_key": "GB2QIYT2IAUFMRXKLSLLPRECC6OCOGJMADSPTRK7TGNT2SFR2YGWDARD"}'); +INSERT INTO history_effects VALUES (13, 94489284609, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GB2QIYT2IAUFMRXKLSLLPRECC6OCOGJMADSPTRK7TGNT2SFR2YGWDARD"}'); +INSERT INTO history_effects VALUES (14, 103079219201, 1, 33, '{"seller": "GBOK7BOUSOWPHBANBYM6MIRYZJIDIPUYJPXHTHADF75UEVIVYWHHONQC", "offer_id": 3, "sold_amount": "20.0000000", "bought_amount": "20.0000000", "sold_asset_code": "USD", "sold_asset_type": "credit_alphanum4", "bought_asset_type": "native", "sold_asset_issuer": "GB2QIYT2IAUFMRXKLSLLPRECC6OCOGJMADSPTRK7TGNT2SFR2YGWDARD"}'); +INSERT INTO history_effects VALUES (13, 103079219201, 2, 33, '{"seller": "GB2QIYT2IAUFMRXKLSLLPRECC6OCOGJMADSPTRK7TGNT2SFR2YGWDARD", "offer_id": 3, "sold_amount": "20.0000000", "bought_amount": "20.0000000", "sold_asset_type": "native", "bought_asset_code": "USD", "bought_asset_type": "credit_alphanum4", "bought_asset_issuer": "GB2QIYT2IAUFMRXKLSLLPRECC6OCOGJMADSPTRK7TGNT2SFR2YGWDARD"}'); +INSERT INTO history_effects VALUES (15, 107374186497, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 107374186497, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (15, 107374186497, 3, 10, '{"weight": 1, "public_key": "GB6GN3LJUW6JYR7EDOJ47VBH7D45M4JWHXGK6LHJRAEI5JBSN2DBQY7Q"}'); +INSERT INTO history_effects VALUES (16, 115964121089, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 115964121089, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (16, 115964121089, 3, 10, '{"weight": 1, "public_key": "GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES"}'); +INSERT INTO history_effects VALUES (16, 120259088385, 1, 12, '{"weight": 1, "public_key": "GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES"}'); +INSERT INTO history_effects VALUES (16, 120259092481, 1, 6, '{"auth_required_flag": true}'); +INSERT INTO history_effects VALUES (16, 120259092481, 2, 12, '{"weight": 1, "public_key": "GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES"}'); +INSERT INTO history_effects VALUES (16, 120259096577, 1, 6, '{"auth_revocable_flag": true}'); +INSERT INTO history_effects VALUES (16, 120259096577, 2, 12, '{"weight": 1, "public_key": "GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES"}'); +INSERT INTO history_effects VALUES (16, 120259100673, 1, 12, '{"weight": 2, "public_key": "GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES"}'); +INSERT INTO history_effects VALUES (16, 120259104769, 1, 4, '{"low_threshold": 0, "med_threshold": 2, "high_threshold": 2}'); +INSERT INTO history_effects VALUES (16, 120259104769, 2, 12, '{"weight": 2, "public_key": "GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES"}'); +INSERT INTO history_effects VALUES (16, 120259108865, 1, 5, '{"home_domain": "example.com"}'); +INSERT INTO history_effects VALUES (16, 120259108865, 2, 12, '{"weight": 2, "public_key": "GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES"}'); +INSERT INTO history_effects VALUES (16, 120259112961, 1, 12, '{"weight": 2, "public_key": "GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES"}'); +INSERT INTO history_effects VALUES (16, 120259112961, 2, 10, '{"weight": 1, "public_key": "GB6J3WOLKYQE6KVDZEA4JDMFTTONUYP3PUHNDNZRWIKA6JQWIMJZATFE"}'); +INSERT INTO history_effects VALUES (16, 124554055681, 1, 12, '{"weight": 1, "public_key": "GB6J3WOLKYQE6KVDZEA4JDMFTTONUYP3PUHNDNZRWIKA6JQWIMJZATFE"}'); +INSERT INTO history_effects VALUES (16, 124554055681, 2, 12, '{"weight": 2, "public_key": "GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES"}'); +INSERT INTO history_effects VALUES (16, 128849022977, 1, 12, '{"weight": 2, "public_key": "GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES"}'); +INSERT INTO history_effects VALUES (16, 128849022977, 2, 12, '{"weight": 1, "public_key": "GB6J3WOLKYQE6KVDZEA4JDMFTTONUYP3PUHNDNZRWIKA6JQWIMJZATFE"}'); +INSERT INTO history_effects VALUES (16, 133143990273, 1, 12, '{"weight": 2, "public_key": "GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES"}'); +INSERT INTO history_effects VALUES (16, 133143990273, 2, 12, '{"weight": 5, "public_key": "GB6J3WOLKYQE6KVDZEA4JDMFTTONUYP3PUHNDNZRWIKA6JQWIMJZATFE"}'); +INSERT INTO history_effects VALUES (16, 137438957569, 1, 6, '{"auth_required_flag": false, "auth_revocable_flag": false}'); +INSERT INTO history_effects VALUES (16, 137438957569, 2, 12, '{"weight": 2, "public_key": "GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES"}'); +INSERT INTO history_effects VALUES (16, 137438957569, 3, 12, '{"weight": 5, "public_key": "GB6J3WOLKYQE6KVDZEA4JDMFTTONUYP3PUHNDNZRWIKA6JQWIMJZATFE"}'); +INSERT INTO history_effects VALUES (16, 137438961665, 1, 12, '{"weight": 2, "public_key": "GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES"}'); +INSERT INTO history_effects VALUES (16, 137438961665, 2, 11, '{"public_key": "GB6J3WOLKYQE6KVDZEA4JDMFTTONUYP3PUHNDNZRWIKA6JQWIMJZATFE"}'); +INSERT INTO history_effects VALUES (17, 141733924865, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 141733924865, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (17, 141733924865, 3, 10, '{"weight": 1, "public_key": "GCJKJXPKBFIHOO3455WXWG5CDBZXQNYFRRGICYMPUQ35CPQ4WVS3KZLG"}'); +INSERT INTO history_effects VALUES (17, 146028892161, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H"}'); +INSERT INTO history_effects VALUES (17, 150323859457, 1, 22, '{"limit": "100.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H"}'); +INSERT INTO history_effects VALUES (17, 154618826753, 1, 22, '{"limit": "100.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H"}'); +INSERT INTO history_effects VALUES (17, 158913794049, 1, 21, '{"limit": "0.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H"}'); +INSERT INTO history_effects VALUES (18, 163208761345, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 163208761345, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (18, 163208761345, 3, 10, '{"weight": 1, "public_key": "GCVW5LCRZFP7PENXTAGOVIQXADDNUXXZJCNKF4VQB2IK7W2LPJWF73UG"}'); +INSERT INTO history_effects VALUES (19, 163208765441, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 163208765441, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (19, 163208765441, 3, 10, '{"weight": 1, "public_key": "GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF"}'); +INSERT INTO history_effects VALUES (19, 167503728641, 1, 6, '{"auth_required_flag": true, "auth_revocable_flag": true}'); +INSERT INTO history_effects VALUES (19, 167503728641, 2, 12, '{"weight": 1, "public_key": "GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF"}'); +INSERT INTO history_effects VALUES (18, 171798695937, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF"}'); +INSERT INTO history_effects VALUES (18, 171798700033, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF"}'); +INSERT INTO history_effects VALUES (19, 176093663233, 1, 23, '{"trustor": "GCVW5LCRZFP7PENXTAGOVIQXADDNUXXZJCNKF4VQB2IK7W2LPJWF73UG", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF"}'); +INSERT INTO history_effects VALUES (19, 176093667329, 1, 23, '{"trustor": "GCVW5LCRZFP7PENXTAGOVIQXADDNUXXZJCNKF4VQB2IK7W2LPJWF73UG", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF"}'); +INSERT INTO history_effects VALUES (19, 180388630529, 1, 24, '{"trustor": "GCVW5LCRZFP7PENXTAGOVIQXADDNUXXZJCNKF4VQB2IK7W2LPJWF73UG", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF"}'); +INSERT INTO history_effects VALUES (20, 184683597825, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 184683597825, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (20, 184683597825, 3, 10, '{"weight": 1, "public_key": "GCHPXGVDKPF5KT4CNAT7X77OXYZ7YVE4JHKFDUHCGCVWCL4K4PQ67KKZ"}'); +INSERT INTO history_effects VALUES (20, 188978565121, 1, 3, '{"amount": "999.9999900", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (1, 188978565121, 2, 2, '{"amount": "999.9999900", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (20, 188978565121, 3, 1, '{}'); +INSERT INTO history_effects VALUES (21, 193273532417, 1, 0, '{"starting_balance": "20000000000.0000000"}'); +INSERT INTO history_effects VALUES (1, 193273532417, 2, 3, '{"amount": "20000000000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (21, 193273532417, 3, 10, '{"weight": 1, "public_key": "GDR53WAEIKOU3ZKN34CSHAWH7HV6K63CBJRUTWUDBFSMY7RRQK3SPKOS"}'); +INSERT INTO history_effects VALUES (1, 197568499713, 1, 12, '{"weight": 1, "public_key": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H"}'); +INSERT INTO history_effects VALUES (21, 197568503809, 1, 12, '{"weight": 1, "public_key": "GDR53WAEIKOU3ZKN34CSHAWH7HV6K63CBJRUTWUDBFSMY7RRQK3SPKOS"}'); +INSERT INTO history_effects VALUES (1, 201863467009, 1, 2, '{"amount": "15257676.9536092", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (21, 201863467009, 2, 2, '{"amount": "3814420.0001419", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (22, 206158434305, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 206158434305, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (22, 206158434305, 3, 10, '{"weight": 1, "public_key": "GAYSCMKQY6EYLXOPTT6JPPOXDMVNBWITPTSZIVWW4LWARVBOTH5RTLAD"}'); +INSERT INTO history_effects VALUES (22, 210453401601, 1, 40, '{"name": "name1", "value": "MTIzNA=="}'); +INSERT INTO history_effects VALUES (22, 210453405697, 1, 40, '{"name": "name2", "value": "NTY3OA=="}'); +INSERT INTO history_effects VALUES (22, 210453409793, 1, 40, '{"name": "name ", "value": "aXRzIGdvdCBzcGFjZXMh"}'); +INSERT INTO history_effects VALUES (22, 214748368897, 1, 41, '{"name": "name2"}'); +INSERT INTO history_effects VALUES (22, 219043336193, 1, 42, '{"name": "name1", "value": "MTIzNA=="}'); +INSERT INTO history_effects VALUES (22, 223338303489, 1, 42, '{"name": "name1", "value": "MDAwMA=="}'); +INSERT INTO history_effects VALUES (23, 227633270785, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 227633270785, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (23, 227633270785, 3, 10, '{"weight": 1, "public_key": "GACJPE4YUR22VP4CM2BDFDAHY3DLEF3H7NENKUQ53DT5TEI2GAHT5N4X"}'); +INSERT INTO history_effects VALUES (23, 231928238081, 1, 2, '{"amount": "10.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (1, 231928238081, 2, 3, '{"amount": "10.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (1, 231928238082, 1, 2, '{"amount": "10.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (23, 231928238082, 2, 3, '{"amount": "10.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (24, 236223205377, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 236223205377, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (24, 236223205377, 3, 10, '{"weight": 1, "public_key": "GANFZDRBCNTUXIODCJEYMACPMCSZEVE4WZGZ3CZDZ3P2SXK4KH75IK6Y"}'); +INSERT INTO history_effects VALUES (24, 240518172673, 1, 2, '{"amount": "10.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (24, 240518172673, 2, 3, '{"amount": "10.0000000", "asset_type": "native"}'); + + +-- +-- Data for Name: history_ledgers; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_ledgers VALUES (1, '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', NULL, 0, 0, '1970-01-01 00:00:00', '2017-10-25 19:03:53.712418', '2017-10-25 19:03:53.712418', 4294967296, 10, 1000000000000000000, 0, 100, 100000000, 100, 0); +INSERT INTO history_ledgers VALUES (2, 'a486dcac961175ec4da4630992ecf7fe3392cf0834964a5ec9f15d6295fa2f35', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', 0, 0, '2017-10-25 19:03:48', '2017-10-25 19:03:53.720677', '2017-10-25 19:03:53.720677', 8589934592, 10, 1000000000000000000, 0, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (3, '106bb13cd6a438e77dd27181eb048c2316bd8fa377f69febeb753d5b86da823f', 'a486dcac961175ec4da4630992ecf7fe3392cf0834964a5ec9f15d6295fa2f35', 1, 1, '2017-10-25 19:03:49', '2017-10-25 19:03:53.725598', '2017-10-25 19:03:53.725598', 12884901888, 10, 1000000000000000000, 100, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (4, 'd1dda9941f42acf2a76a9a9307c58658c3186523bf166d79385215e3863cef8f', '106bb13cd6a438e77dd27181eb048c2316bd8fa377f69febeb753d5b86da823f', 1, 1, '2017-10-25 19:03:50', '2017-10-25 19:03:53.73914', '2017-10-25 19:03:53.73914', 17179869184, 10, 1000000000000000000, 200, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (5, 'c2c96120635b889940819a9671bf9d1a2711ea631f9ace627039ebc0dca27b65', 'd1dda9941f42acf2a76a9a9307c58658c3186523bf166d79385215e3863cef8f', 3, 3, '2017-10-25 19:03:51', '2017-10-25 19:03:53.748327', '2017-10-25 19:03:53.748327', 21474836480, 10, 1000000000000000000, 500, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (6, 'b20926c7239a95103b9e38e028bc592eab2c24ecf00b711fd1253cec0df4d880', 'c2c96120635b889940819a9671bf9d1a2711ea631f9ace627039ebc0dca27b65', 1, 1, '2017-10-25 19:03:52', '2017-10-25 19:03:53.764429', '2017-10-25 19:03:53.764429', 25769803776, 10, 1000000000000000000, 600, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (7, '75237fa55882db2aa676bdc01933832f54a49f81e7c826b91d9cae7e81b54d63', 'b20926c7239a95103b9e38e028bc592eab2c24ecf00b711fd1253cec0df4d880', 1, 1, '2017-10-25 19:03:53', '2017-10-25 19:03:53.771647', '2017-10-25 19:03:53.771647', 30064771072, 10, 1000000000000000000, 700, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (8, 'd22bfaddf4fba35aad07d9e6537eab3f85d098e855b9095475a24d9cba15bcf3', '75237fa55882db2aa676bdc01933832f54a49f81e7c826b91d9cae7e81b54d63', 4, 4, '2017-10-25 19:03:54', '2017-10-25 19:03:53.781742', '2017-10-25 19:03:53.781742', 34359738368, 10, 1000000000000000000, 1100, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (9, '3924b4e377892c1f0f694b5ca6351917facce41ee533a05d6812034ae45e7392', 'd22bfaddf4fba35aad07d9e6537eab3f85d098e855b9095475a24d9cba15bcf3', 1, 1, '2017-10-25 19:03:55', '2017-10-25 19:03:53.807906', '2017-10-25 19:03:53.807906', 38654705664, 10, 1000000000000000000, 1200, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (10, '38b3eff726d5c4887b99567fb7dcc1eb4f889c04744497d8b57ebb0b7aad62af', '3924b4e377892c1f0f694b5ca6351917facce41ee533a05d6812034ae45e7392', 1, 2, '2017-10-25 19:03:56', '2017-10-25 19:03:53.817978', '2017-10-25 19:03:53.817978', 42949672960, 10, 1000000000000000000, 1400, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (11, '934ee62d025044902021685fba39338ff7f265410f5b62f12f37064faad799a2', '38b3eff726d5c4887b99567fb7dcc1eb4f889c04744497d8b57ebb0b7aad62af', 1, 1, '2017-10-25 19:03:57', '2017-10-25 19:03:53.835787', '2017-10-25 19:03:53.835788', 47244640256, 10, 1000000000000000000, 1500, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (12, '2c21653c41d7a6e10efd838e9e7686b3379d3e226041d2387b7f7ba3c7492588', '934ee62d025044902021685fba39338ff7f265410f5b62f12f37064faad799a2', 1, 1, '2017-10-25 19:03:58', '2017-10-25 19:03:53.845131', '2017-10-25 19:03:53.845131', 51539607552, 10, 1000000000000000000, 1600, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (13, 'c797286229b370588575ecf1d45ffed593e95137d45cfb0292712c9301f9c4b6', '2c21653c41d7a6e10efd838e9e7686b3379d3e226041d2387b7f7ba3c7492588', 2, 2, '2017-10-25 19:03:59', '2017-10-25 19:03:53.856229', '2017-10-25 19:03:53.856229', 55834574848, 10, 1000000000000000000, 1800, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (14, '97746790779a2ed2eb05b95a8f24e15bd244dc7701fd0cac0f3a79e469a028b7', 'c797286229b370588575ecf1d45ffed593e95137d45cfb0292712c9301f9c4b6', 2, 2, '2017-10-25 19:04:00', '2017-10-25 19:03:53.87029', '2017-10-25 19:03:53.87029', 60129542144, 10, 1000000000000000000, 2000, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (15, '81ba813c17a15a891b66c8325fe48f232de2aebbd33ec9746b907c2e139aeff1', '97746790779a2ed2eb05b95a8f24e15bd244dc7701fd0cac0f3a79e469a028b7', 1, 1, '2017-10-25 19:04:01', '2017-10-25 19:03:53.879691', '2017-10-25 19:03:53.879691', 64424509440, 10, 1000000000000000000, 2100, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (16, 'e0b1626c4ce4c5336fc1373fcba8e6be9e32205c2410bfee74bb08506bdb433e', '81ba813c17a15a891b66c8325fe48f232de2aebbd33ec9746b907c2e139aeff1', 3, 3, '2017-10-25 19:04:02', '2017-10-25 19:03:53.886934', '2017-10-25 19:03:53.886934', 68719476736, 10, 1000000000000000000, 2400, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (17, '6d2b3f38a8cd60a2aeb481f00ba2a2c442e650d621d82762939389399233c00f', 'e0b1626c4ce4c5336fc1373fcba8e6be9e32205c2410bfee74bb08506bdb433e', 2, 2, '2017-10-25 19:04:03', '2017-10-25 19:03:53.905564', '2017-10-25 19:03:53.905564', 73014444032, 10, 1000000000000000000, 2600, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (18, 'a93604e41d84c9f9ee9529aa335ecea91e1af466f210438fd7c9762703b139b5', '6d2b3f38a8cd60a2aeb481f00ba2a2c442e650d621d82762939389399233c00f', 3, 3, '2017-10-25 19:04:04', '2017-10-25 19:03:53.916097', '2017-10-25 19:03:53.916097', 77309411328, 10, 1000000000000000000, 2900, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (19, '27b93f799642fcb133d65f2744948deb52768fee62c27d375d5d59e556151687', 'a93604e41d84c9f9ee9529aa335ecea91e1af466f210438fd7c9762703b139b5', 1, 1, '2017-10-25 19:04:05', '2017-10-25 19:03:53.9273', '2017-10-25 19:03:53.9273', 81604378624, 10, 1000000000000000000, 3000, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (20, '360223f0a498dc1fbfd52895c8742e3bce8d54742a13ebbbdffa7dc482503815', '27b93f799642fcb133d65f2744948deb52768fee62c27d375d5d59e556151687', 1, 1, '2017-10-25 19:04:06', '2017-10-25 19:03:53.941288', '2017-10-25 19:03:53.941289', 85899345920, 10, 1000000000000000000, 3100, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (21, '7378a987ef2675163ee8d8e450db804a0dce25bd737cd042fcd5383ddfb544f8', '360223f0a498dc1fbfd52895c8742e3bce8d54742a13ebbbdffa7dc482503815', 2, 2, '2017-10-25 19:04:07', '2017-10-25 19:03:53.951908', '2017-10-25 19:03:53.951908', 90194313216, 10, 1000000000000000000, 3300, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (22, '904cc66cfe9569cf28f97d1500f96d5e17d98290f17cd5c3adbfbf4d26f3291c', '7378a987ef2675163ee8d8e450db804a0dce25bd737cd042fcd5383ddfb544f8', 1, 1, '2017-10-25 19:04:08', '2017-10-25 19:03:53.967448', '2017-10-25 19:03:53.967448', 94489280512, 10, 1000000000000000000, 3400, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (23, '4a827dfa1e0944dba85918a58f719ca1bbe9155ea3a37e8f5f307fd06ccc3b2c', '904cc66cfe9569cf28f97d1500f96d5e17d98290f17cd5c3adbfbf4d26f3291c', 1, 1, '2017-10-25 19:04:09', '2017-10-25 19:03:53.974641', '2017-10-25 19:03:53.974641', 98784247808, 10, 1000000000000000000, 3500, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (24, '20c6cdc0baafeeed2d70a2c8da62131813e9f70464717f38176dae0254988740', '4a827dfa1e0944dba85918a58f719ca1bbe9155ea3a37e8f5f307fd06ccc3b2c', 1, 1, '2017-10-25 19:04:10', '2017-10-25 19:03:53.980718', '2017-10-25 19:03:53.980718', 103079215104, 10, 1000000000000000000, 3600, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (25, '5205910c7be4dd1e3edbdeb5807ce38ca2fea7f6574ac40e6658e991ddbb5500', '20c6cdc0baafeeed2d70a2c8da62131813e9f70464717f38176dae0254988740', 1, 1, '2017-10-25 19:04:11', '2017-10-25 19:03:53.990123', '2017-10-25 19:03:53.990123', 107374182400, 10, 1000000000000000000, 3700, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (26, '1a69de1f7cd2cd973e0291bb6c671aacba30dc4669aa151c109eaf883a9cf90a', '5205910c7be4dd1e3edbdeb5807ce38ca2fea7f6574ac40e6658e991ddbb5500', 2, 2, '2017-10-25 19:04:12', '2017-10-25 19:03:53.999819', '2017-10-25 19:03:53.999819', 111669149696, 10, 1000000000000000000, 3900, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (27, 'ec11610f716377b9770f171ef35553993ba070657dd32907896c31013e601337', '1a69de1f7cd2cd973e0291bb6c671aacba30dc4669aa151c109eaf883a9cf90a', 1, 1, '2017-10-25 19:04:13', '2017-10-25 19:03:54.014971', '2017-10-25 19:03:54.014971', 115964116992, 10, 1000000000000000000, 4000, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (28, '1bad7e45a395460686974b89714bde2bab67426d54704be13e2c0381d913d37e', 'ec11610f716377b9770f171ef35553993ba070657dd32907896c31013e601337', 7, 7, '2017-10-25 19:04:14', '2017-10-25 19:03:54.023987', '2017-10-25 19:03:54.023987', 120259084288, 10, 1000000000000000000, 4700, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (29, '9f78b3d93ae05ad744b5b2c3a5d111444d379970983fca34a8b83e5e99d3e557', '1bad7e45a395460686974b89714bde2bab67426d54704be13e2c0381d913d37e', 1, 1, '2017-10-25 19:04:15', '2017-10-25 19:03:54.046302', '2017-10-25 19:03:54.046302', 124554051584, 10, 1000000000000000000, 4800, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (30, 'd0b374763391955368b5ad8e2c7c75a5ba8f06bf308c018290a35aa1306369b0', '9f78b3d93ae05ad744b5b2c3a5d111444d379970983fca34a8b83e5e99d3e557', 1, 1, '2017-10-25 19:04:16', '2017-10-25 19:03:54.059279', '2017-10-25 19:03:54.059279', 128849018880, 10, 1000000000000000000, 4900, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (31, 'bcf949a2661872bc71bed6865597e786e517402bdc9a29a7b669f312c4f5a82d', 'd0b374763391955368b5ad8e2c7c75a5ba8f06bf308c018290a35aa1306369b0', 1, 1, '2017-10-25 19:04:17', '2017-10-25 19:03:54.067411', '2017-10-25 19:03:54.067411', 133143986176, 10, 1000000000000000000, 5000, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (32, 'b7fdf0aa48ab5d1e4dcfed4c12d58ab26a1ff3876006ff022f702add2ddffe48', 'bcf949a2661872bc71bed6865597e786e517402bdc9a29a7b669f312c4f5a82d', 2, 2, '2017-10-25 19:04:18', '2017-10-25 19:03:54.078064', '2017-10-25 19:03:54.078064', 137438953472, 10, 1000000000000000000, 5200, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (33, 'caac2fa982cce7a832997ae3c9b334831d0f7979c2ed137a07a0eaa941e9dc88', 'b7fdf0aa48ab5d1e4dcfed4c12d58ab26a1ff3876006ff022f702add2ddffe48', 1, 1, '2017-10-25 19:04:19', '2017-10-25 19:03:54.08917', '2017-10-25 19:03:54.08917', 141733920768, 10, 1000000000000000000, 5300, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (34, 'e15986114f71a1012b7c2e0dc5787cdd1df2a5d6f9895f2b71d5ccf163c3089c', 'caac2fa982cce7a832997ae3c9b334831d0f7979c2ed137a07a0eaa941e9dc88', 1, 1, '2017-10-25 19:04:20', '2017-10-25 19:03:54.098694', '2017-10-25 19:03:54.098694', 146028888064, 10, 1000000000000000000, 5400, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (35, '695f24145375ea6311557129b05828fe8b12dd7628b700b88b1981392b1425aa', 'e15986114f71a1012b7c2e0dc5787cdd1df2a5d6f9895f2b71d5ccf163c3089c', 1, 1, '2017-10-25 19:04:21', '2017-10-25 19:03:54.107014', '2017-10-25 19:03:54.107014', 150323855360, 10, 1000000000000000000, 5500, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (36, '27869e25d8ed9a9caff1e96aba01043356f9534fc6627d902a29ad5d3eee6c81', '695f24145375ea6311557129b05828fe8b12dd7628b700b88b1981392b1425aa', 1, 1, '2017-10-25 19:04:22', '2017-10-25 19:03:54.115086', '2017-10-25 19:03:54.115086', 154618822656, 10, 1000000000000000000, 5600, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (37, '3bd71f4f29b478203266faba7920dbe33131a8188da94d49417bf7f5a77f82a0', '27869e25d8ed9a9caff1e96aba01043356f9534fc6627d902a29ad5d3eee6c81', 1, 1, '2017-10-25 19:04:23', '2017-10-25 19:03:54.121364', '2017-10-25 19:03:54.121364', 158913789952, 10, 1000000000000000000, 5700, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (38, '204da286bdf29029660a3a4f6f5bb917e41c14e8a05e51939eba2bf7bcb2dcaa', '3bd71f4f29b478203266faba7920dbe33131a8188da94d49417bf7f5a77f82a0', 2, 2, '2017-10-25 19:04:24', '2017-10-25 19:03:54.128214', '2017-10-25 19:03:54.128214', 163208757248, 10, 1000000000000000000, 5900, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (39, '1294ac0497ef836f8f97f9ec0049dc5bcf89d11d506819e0f6d666abfcdad06b', '204da286bdf29029660a3a4f6f5bb917e41c14e8a05e51939eba2bf7bcb2dcaa', 1, 1, '2017-10-25 19:04:25', '2017-10-25 19:03:54.142343', '2017-10-25 19:03:54.142343', 167503724544, 10, 1000000000000000000, 6000, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (40, '1cbaf70818d8ce786f874a1a4346af115c55f90b1153911f3364558493f47f10', '1294ac0497ef836f8f97f9ec0049dc5bcf89d11d506819e0f6d666abfcdad06b', 2, 2, '2017-10-25 19:04:26', '2017-10-25 19:03:54.150346', '2017-10-25 19:03:54.150346', 171798691840, 10, 1000000000000000000, 6200, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (41, '9ffe8ea87ab401236e5ef5e502230a418703f2938c294c3cc61def09ca750c29', '1cbaf70818d8ce786f874a1a4346af115c55f90b1153911f3364558493f47f10', 2, 2, '2017-10-25 19:04:27', '2017-10-25 19:03:54.162462', '2017-10-25 19:03:54.162462', 176093659136, 10, 1000000000000000000, 6400, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (42, 'e9bbe08be67ecfe33dc3b435743f606da703081dd0908230c19850a6d03567e1', '9ffe8ea87ab401236e5ef5e502230a418703f2938c294c3cc61def09ca750c29', 1, 1, '2017-10-25 19:04:28', '2017-10-25 19:03:54.172945', '2017-10-25 19:03:54.172945', 180388626432, 10, 1000000000000000000, 6500, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (43, 'ef94abd7a8374fb2f1855b68c71b3cde5dfa782bb2bfd31d2624368bc3c5b90a', 'e9bbe08be67ecfe33dc3b435743f606da703081dd0908230c19850a6d03567e1', 1, 1, '2017-10-25 19:04:29', '2017-10-25 19:03:54.180045', '2017-10-25 19:03:54.180045', 184683593728, 10, 1000000000000000000, 6600, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (44, '097988b28e30c4063a48ac2e7ccc189bf250b40d7a2c267bdcdb86a8b194fe29', 'ef94abd7a8374fb2f1855b68c71b3cde5dfa782bb2bfd31d2624368bc3c5b90a', 1, 1, '2017-10-25 19:04:30', '2017-10-25 19:03:54.188669', '2017-10-25 19:03:54.188669', 188978561024, 10, 1000000000000000000, 6700, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (45, 'c14280198b12e194455fd4428c140f5bb0d761ff87cee2b82451ab235e340e4f', '097988b28e30c4063a48ac2e7ccc189bf250b40d7a2c267bdcdb86a8b194fe29', 1, 1, '2017-10-25 19:04:31', '2017-10-25 19:03:54.197059', '2017-10-25 19:03:54.197059', 193273528320, 10, 1000000000000000000, 6800, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (46, '038b9f83b5b4e0a47542217d27f11340998b879b6b0db4ec1af1de96e27d5868', 'c14280198b12e194455fd4428c140f5bb0d761ff87cee2b82451ab235e340e4f', 2, 2, '2017-10-25 19:04:32', '2017-10-25 19:03:54.208019', '2017-10-25 19:03:54.208019', 197568495616, 10, 1000000000000000000, 7000, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (47, '8e739a667d355c842a21f26a43513ad2ec88b83a50f8e9560c4095bf7b6d60c3', '038b9f83b5b4e0a47542217d27f11340998b879b6b0db4ec1af1de96e27d5868', 1, 1, '2017-10-25 19:04:33', '2017-10-25 19:03:54.217899', '2017-10-25 19:03:54.217899', 201863462912, 10, 1000190721000000000, 30469589, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (48, 'f0d4c3344320d3f4bca63a45f73525848d039fbe4bc61676a1a5fb292f3e98da', '8e739a667d355c842a21f26a43513ad2ec88b83a50f8e9560c4095bf7b6d60c3', 1, 1, '2017-10-25 19:04:34', '2017-10-25 19:03:54.226702', '2017-10-25 19:03:54.226702', 206158430208, 10, 1000190721000000000, 30469689, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (49, 'f475ab1fe9919922386748b3ca1ef25d904d3a022b8e43ff508bb499f95bacc3', 'f0d4c3344320d3f4bca63a45f73525848d039fbe4bc61676a1a5fb292f3e98da', 3, 3, '2017-10-25 19:04:35', '2017-10-25 19:03:54.239707', '2017-10-25 19:03:54.239707', 210453397504, 10, 1000190721000000000, 30469989, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (50, 'e614f8bddbbdd3ecffad4246fa5c9c5dc38856b0a5a1c43feb2bfb129bf1bfe9', 'f475ab1fe9919922386748b3ca1ef25d904d3a022b8e43ff508bb499f95bacc3', 1, 1, '2017-10-25 19:04:36', '2017-10-25 19:03:54.252174', '2017-10-25 19:03:54.252174', 214748364800, 10, 1000190721000000000, 30470089, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (51, 'f3713d96b43bfc344dfac6fbb63fef5ac14425547aa7f01d6ac6e14337a48a6f', 'e614f8bddbbdd3ecffad4246fa5c9c5dc38856b0a5a1c43feb2bfb129bf1bfe9', 1, 1, '2017-10-25 19:04:37', '2017-10-25 19:03:54.26006', '2017-10-25 19:03:54.26006', 219043332096, 10, 1000190721000000000, 30470189, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (52, 'd41407d5e89828dc7a66f0ba1f891fbdd1a0a1d86fd793dad97d897d3e310d46', 'f3713d96b43bfc344dfac6fbb63fef5ac14425547aa7f01d6ac6e14337a48a6f', 1, 1, '2017-10-25 19:04:38', '2017-10-25 19:03:54.266943', '2017-10-25 19:03:54.266943', 223338299392, 10, 1000190721000000000, 30470289, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (53, '2ce195f95f10f727e481bf7baa553426c46f2879d4e05e57f6726743ecfea709', 'd41407d5e89828dc7a66f0ba1f891fbdd1a0a1d86fd793dad97d897d3e310d46', 1, 1, '2017-10-25 19:04:39', '2017-10-25 19:03:54.273524', '2017-10-25 19:03:54.273524', 227633266688, 10, 1000190721000000000, 30470389, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (54, '3bd6b36f0064b923a2e41cf0f448b25ac14374da9ccc369d3bcb9d0baab8b7e1', '2ce195f95f10f727e481bf7baa553426c46f2879d4e05e57f6726743ecfea709', 1, 2, '2017-10-25 19:04:40', '2017-10-25 19:03:54.282082', '2017-10-25 19:03:54.282082', 231928233984, 10, 1000190721000000000, 30470589, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (55, '86427208d50aae35e8f522d1a9aace62cf5a9ee4c769b4eb261460752ebd8624', '3bd6b36f0064b923a2e41cf0f448b25ac14374da9ccc369d3bcb9d0baab8b7e1', 1, 1, '2017-10-25 19:04:41', '2017-10-25 19:03:54.293673', '2017-10-25 19:03:54.293673', 236223201280, 10, 1000190721000000000, 30470689, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (56, 'be7ad60678b36f0bb64d55b80ec7fe964da0929edd10f2670a7270b1ff3dd6a9', '86427208d50aae35e8f522d1a9aace62cf5a9ee4c769b4eb261460752ebd8624', 1, 1, '2017-10-25 19:04:42', '2017-10-25 19:03:54.303927', '2017-10-25 19:03:54.303927', 240518168576, 10, 1000190721000000000, 30470789, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (57, '6cf23b5b98c4094998070403e133228bc7579f4c79062a70c30e09015b58b667', 'be7ad60678b36f0bb64d55b80ec7fe964da0929edd10f2670a7270b1ff3dd6a9', 0, 0, '2017-10-25 19:04:43', '2017-10-25 19:03:54.313201', '2017-10-25 19:03:54.313201', 244813135872, 10, 1000190721000000000, 30470789, 100, 100000000, 10000, 8); + + +-- +-- Data for Name: history_operation_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operation_participants VALUES (1, 12884905985, 1); +INSERT INTO history_operation_participants VALUES (2, 12884905985, 2); +INSERT INTO history_operation_participants VALUES (3, 17179873281, 1); +INSERT INTO history_operation_participants VALUES (4, 17179873281, 3); +INSERT INTO history_operation_participants VALUES (5, 21474840577, 3); +INSERT INTO history_operation_participants VALUES (6, 21474844673, 3); +INSERT INTO history_operation_participants VALUES (7, 21474848769, 3); +INSERT INTO history_operation_participants VALUES (8, 25769807873, 3); +INSERT INTO history_operation_participants VALUES (9, 30064775169, 1); +INSERT INTO history_operation_participants VALUES (10, 30064775169, 4); +INSERT INTO history_operation_participants VALUES (11, 34359742465, 1); +INSERT INTO history_operation_participants VALUES (12, 34359742465, 4); +INSERT INTO history_operation_participants VALUES (13, 34359746561, 4); +INSERT INTO history_operation_participants VALUES (14, 34359746561, 1); +INSERT INTO history_operation_participants VALUES (15, 34359750657, 4); +INSERT INTO history_operation_participants VALUES (16, 34359750657, 1); +INSERT INTO history_operation_participants VALUES (17, 34359754753, 4); +INSERT INTO history_operation_participants VALUES (18, 34359754753, 1); +INSERT INTO history_operation_participants VALUES (19, 38654709761, 5); +INSERT INTO history_operation_participants VALUES (20, 38654709761, 1); +INSERT INTO history_operation_participants VALUES (21, 42949677057, 5); +INSERT INTO history_operation_participants VALUES (22, 42949677057, 1); +INSERT INTO history_operation_participants VALUES (23, 42949677058, 5); +INSERT INTO history_operation_participants VALUES (24, 42949677058, 1); +INSERT INTO history_operation_participants VALUES (25, 47244644353, 1); +INSERT INTO history_operation_participants VALUES (26, 47244644353, 6); +INSERT INTO history_operation_participants VALUES (27, 51539611649, 6); +INSERT INTO history_operation_participants VALUES (28, 51539611649, 7); +INSERT INTO history_operation_participants VALUES (29, 55834578945, 1); +INSERT INTO history_operation_participants VALUES (30, 55834578945, 8); +INSERT INTO history_operation_participants VALUES (31, 55834583041, 1); +INSERT INTO history_operation_participants VALUES (32, 55834583041, 9); +INSERT INTO history_operation_participants VALUES (33, 60129546241, 9); +INSERT INTO history_operation_participants VALUES (34, 60129550337, 8); +INSERT INTO history_operation_participants VALUES (35, 60129550337, 9); +INSERT INTO history_operation_participants VALUES (36, 64424513537, 8); +INSERT INTO history_operation_participants VALUES (37, 64424513537, 9); +INSERT INTO history_operation_participants VALUES (38, 68719480833, 1); +INSERT INTO history_operation_participants VALUES (39, 68719480833, 10); +INSERT INTO history_operation_participants VALUES (40, 68719484929, 1); +INSERT INTO history_operation_participants VALUES (41, 68719484929, 11); +INSERT INTO history_operation_participants VALUES (42, 68719489025, 1); +INSERT INTO history_operation_participants VALUES (43, 68719489025, 12); +INSERT INTO history_operation_participants VALUES (44, 73014448129, 10); +INSERT INTO history_operation_participants VALUES (45, 73014452225, 11); +INSERT INTO history_operation_participants VALUES (46, 77309415425, 12); +INSERT INTO history_operation_participants VALUES (47, 77309415425, 10); +INSERT INTO history_operation_participants VALUES (48, 77309419521, 12); +INSERT INTO history_operation_participants VALUES (49, 77309423617, 12); +INSERT INTO history_operation_participants VALUES (50, 81604382721, 11); +INSERT INTO history_operation_participants VALUES (51, 81604382721, 10); +INSERT INTO history_operation_participants VALUES (52, 85899350017, 10); +INSERT INTO history_operation_participants VALUES (53, 85899350017, 11); +INSERT INTO history_operation_participants VALUES (54, 90194317313, 1); +INSERT INTO history_operation_participants VALUES (55, 90194317313, 13); +INSERT INTO history_operation_participants VALUES (56, 90194321409, 1); +INSERT INTO history_operation_participants VALUES (57, 90194321409, 14); +INSERT INTO history_operation_participants VALUES (58, 94489284609, 13); +INSERT INTO history_operation_participants VALUES (59, 98784251905, 13); +INSERT INTO history_operation_participants VALUES (60, 103079219201, 14); +INSERT INTO history_operation_participants VALUES (61, 107374186497, 1); +INSERT INTO history_operation_participants VALUES (62, 107374186497, 15); +INSERT INTO history_operation_participants VALUES (63, 111669153793, 15); +INSERT INTO history_operation_participants VALUES (64, 111669157889, 15); +INSERT INTO history_operation_participants VALUES (65, 115964121089, 1); +INSERT INTO history_operation_participants VALUES (66, 115964121089, 16); +INSERT INTO history_operation_participants VALUES (67, 120259088385, 16); +INSERT INTO history_operation_participants VALUES (68, 120259092481, 16); +INSERT INTO history_operation_participants VALUES (69, 120259096577, 16); +INSERT INTO history_operation_participants VALUES (70, 120259100673, 16); +INSERT INTO history_operation_participants VALUES (71, 120259104769, 16); +INSERT INTO history_operation_participants VALUES (72, 120259108865, 16); +INSERT INTO history_operation_participants VALUES (73, 120259112961, 16); +INSERT INTO history_operation_participants VALUES (74, 124554055681, 16); +INSERT INTO history_operation_participants VALUES (75, 128849022977, 16); +INSERT INTO history_operation_participants VALUES (76, 133143990273, 16); +INSERT INTO history_operation_participants VALUES (77, 137438957569, 16); +INSERT INTO history_operation_participants VALUES (78, 137438961665, 16); +INSERT INTO history_operation_participants VALUES (79, 141733924865, 1); +INSERT INTO history_operation_participants VALUES (80, 141733924865, 17); +INSERT INTO history_operation_participants VALUES (81, 146028892161, 17); +INSERT INTO history_operation_participants VALUES (82, 150323859457, 17); +INSERT INTO history_operation_participants VALUES (83, 154618826753, 17); +INSERT INTO history_operation_participants VALUES (84, 158913794049, 17); +INSERT INTO history_operation_participants VALUES (85, 163208761345, 1); +INSERT INTO history_operation_participants VALUES (86, 163208761345, 18); +INSERT INTO history_operation_participants VALUES (87, 163208765441, 1); +INSERT INTO history_operation_participants VALUES (88, 163208765441, 19); +INSERT INTO history_operation_participants VALUES (89, 167503728641, 19); +INSERT INTO history_operation_participants VALUES (90, 171798695937, 18); +INSERT INTO history_operation_participants VALUES (91, 171798700033, 18); +INSERT INTO history_operation_participants VALUES (92, 176093663233, 19); +INSERT INTO history_operation_participants VALUES (93, 176093663233, 18); +INSERT INTO history_operation_participants VALUES (94, 176093667329, 19); +INSERT INTO history_operation_participants VALUES (95, 176093667329, 18); +INSERT INTO history_operation_participants VALUES (96, 180388630529, 19); +INSERT INTO history_operation_participants VALUES (97, 180388630529, 18); +INSERT INTO history_operation_participants VALUES (98, 184683597825, 1); +INSERT INTO history_operation_participants VALUES (99, 184683597825, 20); +INSERT INTO history_operation_participants VALUES (100, 188978565121, 20); +INSERT INTO history_operation_participants VALUES (101, 188978565121, 1); +INSERT INTO history_operation_participants VALUES (102, 193273532417, 1); +INSERT INTO history_operation_participants VALUES (103, 193273532417, 21); +INSERT INTO history_operation_participants VALUES (104, 197568499713, 1); +INSERT INTO history_operation_participants VALUES (105, 197568503809, 21); +INSERT INTO history_operation_participants VALUES (106, 201863467009, 1); +INSERT INTO history_operation_participants VALUES (107, 206158434305, 1); +INSERT INTO history_operation_participants VALUES (108, 206158434305, 22); +INSERT INTO history_operation_participants VALUES (109, 210453401601, 22); +INSERT INTO history_operation_participants VALUES (110, 210453405697, 22); +INSERT INTO history_operation_participants VALUES (111, 210453409793, 22); +INSERT INTO history_operation_participants VALUES (112, 214748368897, 22); +INSERT INTO history_operation_participants VALUES (113, 219043336193, 22); +INSERT INTO history_operation_participants VALUES (114, 223338303489, 22); +INSERT INTO history_operation_participants VALUES (115, 227633270785, 1); +INSERT INTO history_operation_participants VALUES (116, 227633270785, 23); +INSERT INTO history_operation_participants VALUES (117, 231928238081, 1); +INSERT INTO history_operation_participants VALUES (118, 231928238081, 23); +INSERT INTO history_operation_participants VALUES (119, 231928238082, 23); +INSERT INTO history_operation_participants VALUES (120, 231928238082, 1); +INSERT INTO history_operation_participants VALUES (121, 236223205377, 24); +INSERT INTO history_operation_participants VALUES (122, 236223205377, 1); +INSERT INTO history_operation_participants VALUES (123, 240518172673, 24); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_operation_participants_id_seq', 123, true); + + +-- +-- Data for Name: history_operations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operations VALUES (12884905985, 12884905984, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GAXI33UCLQTCKM2NMRBS7XYBR535LLEVAHL5YBN4FTCB4HZHT7ZA5CVK", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (17179873281, 17179873280, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GDXFAGJCSCI4CK2YHK6YRLA6TKEXFRX7BMGVMQOBMLIEUJRJ5YQNLMIB", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (21474840577, 21474840576, 1, 5, '{"master_key_weight": 1}', 'GDXFAGJCSCI4CK2YHK6YRLA6TKEXFRX7BMGVMQOBMLIEUJRJ5YQNLMIB'); +INSERT INTO history_operations VALUES (21474844673, 21474844672, 1, 5, '{"signer_key": "GD3E7HKMRNT6HGBGHBT6I6JE4N2S4W5KZ246TGJ4KQSXJ2P4BXCUPQMP", "signer_weight": 1}', 'GDXFAGJCSCI4CK2YHK6YRLA6TKEXFRX7BMGVMQOBMLIEUJRJ5YQNLMIB'); +INSERT INTO history_operations VALUES (21474848769, 21474848768, 1, 5, '{"low_threshold": 2, "med_threshold": 2, "high_threshold": 2}', 'GDXFAGJCSCI4CK2YHK6YRLA6TKEXFRX7BMGVMQOBMLIEUJRJ5YQNLMIB'); +INSERT INTO history_operations VALUES (25769807873, 25769807872, 1, 5, '{"master_key_weight": 2}', 'GDXFAGJCSCI4CK2YHK6YRLA6TKEXFRX7BMGVMQOBMLIEUJRJ5YQNLMIB'); +INSERT INTO history_operations VALUES (30064775169, 30064775168, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GA46VRKBCLI2X6DXLX7AIEVRFLH3UA7XBE3NGNP6O74HQ5LXHMGTV2JB", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (34359742465, 34359742464, 1, 1, '{"to": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "from": "GA46VRKBCLI2X6DXLX7AIEVRFLH3UA7XBE3NGNP6O74HQ5LXHMGTV2JB", "amount": "1.0000000", "asset_type": "native"}', 'GA46VRKBCLI2X6DXLX7AIEVRFLH3UA7XBE3NGNP6O74HQ5LXHMGTV2JB'); +INSERT INTO history_operations VALUES (34359746561, 34359746560, 1, 1, '{"to": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "from": "GA46VRKBCLI2X6DXLX7AIEVRFLH3UA7XBE3NGNP6O74HQ5LXHMGTV2JB", "amount": "1.0000000", "asset_type": "native"}', 'GA46VRKBCLI2X6DXLX7AIEVRFLH3UA7XBE3NGNP6O74HQ5LXHMGTV2JB'); +INSERT INTO history_operations VALUES (34359750657, 34359750656, 1, 1, '{"to": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "from": "GA46VRKBCLI2X6DXLX7AIEVRFLH3UA7XBE3NGNP6O74HQ5LXHMGTV2JB", "amount": "1.0000000", "asset_type": "native"}', 'GA46VRKBCLI2X6DXLX7AIEVRFLH3UA7XBE3NGNP6O74HQ5LXHMGTV2JB'); +INSERT INTO history_operations VALUES (34359754753, 34359754752, 1, 1, '{"to": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "from": "GA46VRKBCLI2X6DXLX7AIEVRFLH3UA7XBE3NGNP6O74HQ5LXHMGTV2JB", "amount": "1.0000000", "asset_type": "native"}', 'GA46VRKBCLI2X6DXLX7AIEVRFLH3UA7XBE3NGNP6O74HQ5LXHMGTV2JB'); +INSERT INTO history_operations VALUES (38654709761, 38654709760, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GAG52TW6QAB6TGNMOTL32Y4M3UQQLNNNHPEHYAIYRP6SFF6ZAVRF5ZQY", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (42949677057, 42949677056, 1, 1, '{"to": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "from": "GAG52TW6QAB6TGNMOTL32Y4M3UQQLNNNHPEHYAIYRP6SFF6ZAVRF5ZQY", "amount": "10.0000000", "asset_type": "native"}', 'GAG52TW6QAB6TGNMOTL32Y4M3UQQLNNNHPEHYAIYRP6SFF6ZAVRF5ZQY'); +INSERT INTO history_operations VALUES (42949677058, 42949677056, 2, 1, '{"to": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "from": "GAG52TW6QAB6TGNMOTL32Y4M3UQQLNNNHPEHYAIYRP6SFF6ZAVRF5ZQY", "amount": "10.0000000", "asset_type": "native"}', 'GAG52TW6QAB6TGNMOTL32Y4M3UQQLNNNHPEHYAIYRP6SFF6ZAVRF5ZQY'); +INSERT INTO history_operations VALUES (47244644353, 47244644352, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GDCVTBGSEEU7KLXUMHMSXBALXJ2T4I2KOPXW2S5TRLKDRIAXD5UDHAYO", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (51539611649, 51539611648, 1, 0, '{"funder": "GDCVTBGSEEU7KLXUMHMSXBALXJ2T4I2KOPXW2S5TRLKDRIAXD5UDHAYO", "account": "GCB7FPYGLL6RJ37HKRAYW5TAWMFBGGFGM4IM6ERBCZXI2BZ4OOOX2UAY", "starting_balance": "50.0000000"}', 'GDCVTBGSEEU7KLXUMHMSXBALXJ2T4I2KOPXW2S5TRLKDRIAXD5UDHAYO'); +INSERT INTO history_operations VALUES (55834578945, 55834578944, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GCHC4D2CS45CJRNN4QAHT2LFZAJIU5PA7H53K3VOP6WEJ6XWHNSNZKQG", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (55834583041, 55834583040, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GANZGPKY5WSHWG5YOZMNG52GCK5SCJ4YGUWMJJVGZSK2FP4BI2JIJN2C", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (60129546241, 60129546240, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GCHC4D2CS45CJRNN4QAHT2LFZAJIU5PA7H53K3VOP6WEJ6XWHNSNZKQG", "trustor": "GANZGPKY5WSHWG5YOZMNG52GCK5SCJ4YGUWMJJVGZSK2FP4BI2JIJN2C", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GCHC4D2CS45CJRNN4QAHT2LFZAJIU5PA7H53K3VOP6WEJ6XWHNSNZKQG"}', 'GANZGPKY5WSHWG5YOZMNG52GCK5SCJ4YGUWMJJVGZSK2FP4BI2JIJN2C'); +INSERT INTO history_operations VALUES (60129550337, 60129550336, 1, 1, '{"to": "GANZGPKY5WSHWG5YOZMNG52GCK5SCJ4YGUWMJJVGZSK2FP4BI2JIJN2C", "from": "GCHC4D2CS45CJRNN4QAHT2LFZAJIU5PA7H53K3VOP6WEJ6XWHNSNZKQG", "amount": "10.0000000", "asset_type": "native"}', 'GCHC4D2CS45CJRNN4QAHT2LFZAJIU5PA7H53K3VOP6WEJ6XWHNSNZKQG'); +INSERT INTO history_operations VALUES (64424513537, 64424513536, 1, 1, '{"to": "GANZGPKY5WSHWG5YOZMNG52GCK5SCJ4YGUWMJJVGZSK2FP4BI2JIJN2C", "from": "GCHC4D2CS45CJRNN4QAHT2LFZAJIU5PA7H53K3VOP6WEJ6XWHNSNZKQG", "amount": "10.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GCHC4D2CS45CJRNN4QAHT2LFZAJIU5PA7H53K3VOP6WEJ6XWHNSNZKQG"}', 'GCHC4D2CS45CJRNN4QAHT2LFZAJIU5PA7H53K3VOP6WEJ6XWHNSNZKQG'); +INSERT INTO history_operations VALUES (68719480833, 68719480832, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GDRW375MAYR46ODGF2WGANQC2RRZL7O246DYHHCGWTV2RE7IHE2QUQLD", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (68719484929, 68719484928, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GACAR2AEYEKITE2LKI5RMXF5MIVZ6Q7XILROGDT22O7JX4DSWFS7FDDP", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (68719489025, 68719489024, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (73014448129, 73014448128, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU", "trustor": "GDRW375MAYR46ODGF2WGANQC2RRZL7O246DYHHCGWTV2RE7IHE2QUQLD", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU"}', 'GDRW375MAYR46ODGF2WGANQC2RRZL7O246DYHHCGWTV2RE7IHE2QUQLD'); +INSERT INTO history_operations VALUES (73014452225, 73014452224, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU", "trustor": "GACAR2AEYEKITE2LKI5RMXF5MIVZ6Q7XILROGDT22O7JX4DSWFS7FDDP", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU"}', 'GACAR2AEYEKITE2LKI5RMXF5MIVZ6Q7XILROGDT22O7JX4DSWFS7FDDP'); +INSERT INTO history_operations VALUES (141733924865, 141733924864, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GCJKJXPKBFIHOO3455WXWG5CDBZXQNYFRRGICYMPUQ35CPQ4WVS3KZLG", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (77309415425, 77309415424, 1, 1, '{"to": "GDRW375MAYR46ODGF2WGANQC2RRZL7O246DYHHCGWTV2RE7IHE2QUQLD", "from": "GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU", "amount": "100.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU"}', 'GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU'); +INSERT INTO history_operations VALUES (77309419521, 77309419520, 1, 3, '{"price": "0.5000000", "amount": "400.0000000", "price_r": {"d": 2, "n": 1}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU"}', 'GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU'); +INSERT INTO history_operations VALUES (77309423617, 77309423616, 1, 3, '{"price": "1.0000000", "amount": "300.0000000", "price_r": {"d": 1, "n": 1}, "offer_id": 0, "buying_asset_type": "native", "selling_asset_code": "EUR", "selling_asset_type": "credit_alphanum4", "selling_asset_issuer": "GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU"}', 'GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU'); +INSERT INTO history_operations VALUES (81604382721, 81604382720, 1, 2, '{"to": "GACAR2AEYEKITE2LKI5RMXF5MIVZ6Q7XILROGDT22O7JX4DSWFS7FDDP", "from": "GDRW375MAYR46ODGF2WGANQC2RRZL7O246DYHHCGWTV2RE7IHE2QUQLD", "path": [{"asset_type": "native"}], "amount": "200.0000000", "asset_code": "EUR", "asset_type": "credit_alphanum4", "source_max": "100.0000000", "asset_issuer": "GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU", "source_amount": "100.0000000", "source_asset_code": "USD", "source_asset_type": "credit_alphanum4", "source_asset_issuer": "GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU"}', 'GDRW375MAYR46ODGF2WGANQC2RRZL7O246DYHHCGWTV2RE7IHE2QUQLD'); +INSERT INTO history_operations VALUES (85899350017, 85899350016, 1, 2, '{"to": "GACAR2AEYEKITE2LKI5RMXF5MIVZ6Q7XILROGDT22O7JX4DSWFS7FDDP", "from": "GDRW375MAYR46ODGF2WGANQC2RRZL7O246DYHHCGWTV2RE7IHE2QUQLD", "path": [], "amount": "100.0000000", "asset_code": "EUR", "asset_type": "credit_alphanum4", "source_max": "100.0000000", "asset_issuer": "GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU", "source_amount": "100.0000000", "source_asset_type": "native"}', 'GDRW375MAYR46ODGF2WGANQC2RRZL7O246DYHHCGWTV2RE7IHE2QUQLD'); +INSERT INTO history_operations VALUES (90194317313, 90194317312, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GBOK7BOUSOWPHBANBYM6MIRYZJIDIPUYJPXHTHADF75UEVIVYWHHONQC", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (90194321409, 90194321408, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GB2QIYT2IAUFMRXKLSLLPRECC6OCOGJMADSPTRK7TGNT2SFR2YGWDARD", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (94489284609, 94489284608, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GB2QIYT2IAUFMRXKLSLLPRECC6OCOGJMADSPTRK7TGNT2SFR2YGWDARD", "trustor": "GBOK7BOUSOWPHBANBYM6MIRYZJIDIPUYJPXHTHADF75UEVIVYWHHONQC", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GB2QIYT2IAUFMRXKLSLLPRECC6OCOGJMADSPTRK7TGNT2SFR2YGWDARD"}', 'GBOK7BOUSOWPHBANBYM6MIRYZJIDIPUYJPXHTHADF75UEVIVYWHHONQC'); +INSERT INTO history_operations VALUES (98784251905, 98784251904, 1, 3, '{"price": "1.0000000", "amount": "20.0000000", "price_r": {"d": 1, "n": 1}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GB2QIYT2IAUFMRXKLSLLPRECC6OCOGJMADSPTRK7TGNT2SFR2YGWDARD"}', 'GBOK7BOUSOWPHBANBYM6MIRYZJIDIPUYJPXHTHADF75UEVIVYWHHONQC'); +INSERT INTO history_operations VALUES (103079219201, 103079219200, 1, 3, '{"price": "1.0000000", "amount": "30.0000000", "price_r": {"d": 1, "n": 1}, "offer_id": 0, "buying_asset_type": "native", "selling_asset_code": "USD", "selling_asset_type": "credit_alphanum4", "selling_asset_issuer": "GB2QIYT2IAUFMRXKLSLLPRECC6OCOGJMADSPTRK7TGNT2SFR2YGWDARD"}', 'GB2QIYT2IAUFMRXKLSLLPRECC6OCOGJMADSPTRK7TGNT2SFR2YGWDARD'); +INSERT INTO history_operations VALUES (107374186497, 107374186496, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GB6GN3LJUW6JYR7EDOJ47VBH7D45M4JWHXGK6LHJRAEI5JBSN2DBQY7Q", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (111669153793, 111669153792, 1, 4, '{"price": "1.0000000", "amount": "200.0000000", "price_r": {"d": 1, "n": 1}, "buying_asset_type": "native", "selling_asset_code": "USD", "selling_asset_type": "credit_alphanum4", "selling_asset_issuer": "GB6GN3LJUW6JYR7EDOJ47VBH7D45M4JWHXGK6LHJRAEI5JBSN2DBQY7Q"}', 'GB6GN3LJUW6JYR7EDOJ47VBH7D45M4JWHXGK6LHJRAEI5JBSN2DBQY7Q'); +INSERT INTO history_operations VALUES (111669157889, 111669157888, 1, 4, '{"price": "1.0000000", "amount": "200.0000000", "price_r": {"d": 1, "n": 1}, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GB6GN3LJUW6JYR7EDOJ47VBH7D45M4JWHXGK6LHJRAEI5JBSN2DBQY7Q"}', 'GB6GN3LJUW6JYR7EDOJ47VBH7D45M4JWHXGK6LHJRAEI5JBSN2DBQY7Q'); +INSERT INTO history_operations VALUES (115964121089, 115964121088, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (120259088385, 120259088384, 1, 5, '{"inflation_dest": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H"}', 'GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES'); +INSERT INTO history_operations VALUES (120259092481, 120259092480, 1, 5, '{"set_flags": [1], "set_flags_s": ["auth_required"]}', 'GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES'); +INSERT INTO history_operations VALUES (120259096577, 120259096576, 1, 5, '{"set_flags": [2], "set_flags_s": ["auth_revocable"]}', 'GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES'); +INSERT INTO history_operations VALUES (120259100673, 120259100672, 1, 5, '{"master_key_weight": 2}', 'GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES'); +INSERT INTO history_operations VALUES (120259104769, 120259104768, 1, 5, '{"low_threshold": 0, "med_threshold": 2, "high_threshold": 2}', 'GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES'); +INSERT INTO history_operations VALUES (120259108865, 120259108864, 1, 5, '{"home_domain": "example.com"}', 'GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES'); +INSERT INTO history_operations VALUES (120259112961, 120259112960, 1, 5, '{"signer_key": "GB6J3WOLKYQE6KVDZEA4JDMFTTONUYP3PUHNDNZRWIKA6JQWIMJZATFE", "signer_weight": 1}', 'GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES'); +INSERT INTO history_operations VALUES (124554055681, 124554055680, 1, 5, '{"master_key_weight": 2}', 'GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES'); +INSERT INTO history_operations VALUES (128849022977, 128849022976, 1, 5, '{"signer_key": "GB6J3WOLKYQE6KVDZEA4JDMFTTONUYP3PUHNDNZRWIKA6JQWIMJZATFE", "signer_weight": 1}', 'GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES'); +INSERT INTO history_operations VALUES (133143990273, 133143990272, 1, 5, '{"signer_key": "GB6J3WOLKYQE6KVDZEA4JDMFTTONUYP3PUHNDNZRWIKA6JQWIMJZATFE", "signer_weight": 5}', 'GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES'); +INSERT INTO history_operations VALUES (137438957569, 137438957568, 1, 5, '{"clear_flags": [1, 2], "clear_flags_s": ["auth_required", "auth_revocable"]}', 'GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES'); +INSERT INTO history_operations VALUES (137438961665, 137438961664, 1, 5, '{"signer_key": "GB6J3WOLKYQE6KVDZEA4JDMFTTONUYP3PUHNDNZRWIKA6JQWIMJZATFE", "signer_weight": 0}', 'GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES'); +INSERT INTO history_operations VALUES (146028892161, 146028892160, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "trustor": "GCJKJXPKBFIHOO3455WXWG5CDBZXQNYFRRGICYMPUQ35CPQ4WVS3KZLG", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H"}', 'GCJKJXPKBFIHOO3455WXWG5CDBZXQNYFRRGICYMPUQ35CPQ4WVS3KZLG'); +INSERT INTO history_operations VALUES (150323859457, 150323859456, 1, 6, '{"limit": "100.0000000", "trustee": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "trustor": "GCJKJXPKBFIHOO3455WXWG5CDBZXQNYFRRGICYMPUQ35CPQ4WVS3KZLG", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H"}', 'GCJKJXPKBFIHOO3455WXWG5CDBZXQNYFRRGICYMPUQ35CPQ4WVS3KZLG'); +INSERT INTO history_operations VALUES (154618826753, 154618826752, 1, 6, '{"limit": "100.0000000", "trustee": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "trustor": "GCJKJXPKBFIHOO3455WXWG5CDBZXQNYFRRGICYMPUQ35CPQ4WVS3KZLG", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H"}', 'GCJKJXPKBFIHOO3455WXWG5CDBZXQNYFRRGICYMPUQ35CPQ4WVS3KZLG'); +INSERT INTO history_operations VALUES (158913794049, 158913794048, 1, 6, '{"limit": "0.0000000", "trustee": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "trustor": "GCJKJXPKBFIHOO3455WXWG5CDBZXQNYFRRGICYMPUQ35CPQ4WVS3KZLG", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H"}', 'GCJKJXPKBFIHOO3455WXWG5CDBZXQNYFRRGICYMPUQ35CPQ4WVS3KZLG'); +INSERT INTO history_operations VALUES (163208761345, 163208761344, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GCVW5LCRZFP7PENXTAGOVIQXADDNUXXZJCNKF4VQB2IK7W2LPJWF73UG", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (163208765441, 163208765440, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (167503728641, 167503728640, 1, 5, '{"set_flags": [1, 2], "set_flags_s": ["auth_required", "auth_revocable"]}', 'GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF'); +INSERT INTO history_operations VALUES (171798695937, 171798695936, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF", "trustor": "GCVW5LCRZFP7PENXTAGOVIQXADDNUXXZJCNKF4VQB2IK7W2LPJWF73UG", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF"}', 'GCVW5LCRZFP7PENXTAGOVIQXADDNUXXZJCNKF4VQB2IK7W2LPJWF73UG'); +INSERT INTO history_operations VALUES (171798700033, 171798700032, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF", "trustor": "GCVW5LCRZFP7PENXTAGOVIQXADDNUXXZJCNKF4VQB2IK7W2LPJWF73UG", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF"}', 'GCVW5LCRZFP7PENXTAGOVIQXADDNUXXZJCNKF4VQB2IK7W2LPJWF73UG'); +INSERT INTO history_operations VALUES (176093663233, 176093663232, 1, 7, '{"trustee": "GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF", "trustor": "GCVW5LCRZFP7PENXTAGOVIQXADDNUXXZJCNKF4VQB2IK7W2LPJWF73UG", "authorize": true, "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF"}', 'GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF'); +INSERT INTO history_operations VALUES (176093667329, 176093667328, 1, 7, '{"trustee": "GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF", "trustor": "GCVW5LCRZFP7PENXTAGOVIQXADDNUXXZJCNKF4VQB2IK7W2LPJWF73UG", "authorize": true, "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF"}', 'GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF'); +INSERT INTO history_operations VALUES (180388630529, 180388630528, 1, 7, '{"trustee": "GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF", "trustor": "GCVW5LCRZFP7PENXTAGOVIQXADDNUXXZJCNKF4VQB2IK7W2LPJWF73UG", "authorize": false, "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF"}', 'GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF'); +INSERT INTO history_operations VALUES (184683597825, 184683597824, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GCHPXGVDKPF5KT4CNAT7X77OXYZ7YVE4JHKFDUHCGCVWCL4K4PQ67KKZ", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (188978565121, 188978565120, 1, 8, '{"into": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GCHPXGVDKPF5KT4CNAT7X77OXYZ7YVE4JHKFDUHCGCVWCL4K4PQ67KKZ"}', 'GCHPXGVDKPF5KT4CNAT7X77OXYZ7YVE4JHKFDUHCGCVWCL4K4PQ67KKZ'); +INSERT INTO history_operations VALUES (193273532417, 193273532416, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GDR53WAEIKOU3ZKN34CSHAWH7HV6K63CBJRUTWUDBFSMY7RRQK3SPKOS", "starting_balance": "20000000000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (197568499713, 197568499712, 1, 5, '{"inflation_dest": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (197568503809, 197568503808, 1, 5, '{"inflation_dest": "GDR53WAEIKOU3ZKN34CSHAWH7HV6K63CBJRUTWUDBFSMY7RRQK3SPKOS"}', 'GDR53WAEIKOU3ZKN34CSHAWH7HV6K63CBJRUTWUDBFSMY7RRQK3SPKOS'); +INSERT INTO history_operations VALUES (201863467009, 201863467008, 1, 9, '{}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (206158434305, 206158434304, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GAYSCMKQY6EYLXOPTT6JPPOXDMVNBWITPTSZIVWW4LWARVBOTH5RTLAD", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (210453401601, 210453401600, 1, 10, '{"name": "name1", "value": "MTIzNA=="}', 'GAYSCMKQY6EYLXOPTT6JPPOXDMVNBWITPTSZIVWW4LWARVBOTH5RTLAD'); +INSERT INTO history_operations VALUES (210453405697, 210453405696, 1, 10, '{"name": "name2", "value": "NTY3OA=="}', 'GAYSCMKQY6EYLXOPTT6JPPOXDMVNBWITPTSZIVWW4LWARVBOTH5RTLAD'); +INSERT INTO history_operations VALUES (210453409793, 210453409792, 1, 10, '{"name": "name ", "value": "aXRzIGdvdCBzcGFjZXMh"}', 'GAYSCMKQY6EYLXOPTT6JPPOXDMVNBWITPTSZIVWW4LWARVBOTH5RTLAD'); +INSERT INTO history_operations VALUES (214748368897, 214748368896, 1, 10, '{"name": "name2", "value": null}', 'GAYSCMKQY6EYLXOPTT6JPPOXDMVNBWITPTSZIVWW4LWARVBOTH5RTLAD'); +INSERT INTO history_operations VALUES (219043336193, 219043336192, 1, 10, '{"name": "name1", "value": "MTIzNA=="}', 'GAYSCMKQY6EYLXOPTT6JPPOXDMVNBWITPTSZIVWW4LWARVBOTH5RTLAD'); +INSERT INTO history_operations VALUES (223338303489, 223338303488, 1, 10, '{"name": "name1", "value": "MDAwMA=="}', 'GAYSCMKQY6EYLXOPTT6JPPOXDMVNBWITPTSZIVWW4LWARVBOTH5RTLAD'); +INSERT INTO history_operations VALUES (227633270785, 227633270784, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GACJPE4YUR22VP4CM2BDFDAHY3DLEF3H7NENKUQ53DT5TEI2GAHT5N4X", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (231928238081, 231928238080, 1, 1, '{"to": "GACJPE4YUR22VP4CM2BDFDAHY3DLEF3H7NENKUQ53DT5TEI2GAHT5N4X", "from": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "amount": "10.0000000", "asset_type": "native"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (231928238082, 231928238080, 2, 1, '{"to": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "from": "GACJPE4YUR22VP4CM2BDFDAHY3DLEF3H7NENKUQ53DT5TEI2GAHT5N4X", "amount": "10.0000000", "asset_type": "native"}', 'GACJPE4YUR22VP4CM2BDFDAHY3DLEF3H7NENKUQ53DT5TEI2GAHT5N4X'); +INSERT INTO history_operations VALUES (236223205377, 236223205376, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GANFZDRBCNTUXIODCJEYMACPMCSZEVE4WZGZ3CZDZ3P2SXK4KH75IK6Y", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (240518172673, 240518172672, 1, 1, '{"to": "GANFZDRBCNTUXIODCJEYMACPMCSZEVE4WZGZ3CZDZ3P2SXK4KH75IK6Y", "from": "GANFZDRBCNTUXIODCJEYMACPMCSZEVE4WZGZ3CZDZ3P2SXK4KH75IK6Y", "amount": "10.0000000", "asset_type": "native"}', 'GANFZDRBCNTUXIODCJEYMACPMCSZEVE4WZGZ3CZDZ3P2SXK4KH75IK6Y'); + + +-- +-- Data for Name: history_trades; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_trades VALUES (81604382721, 0, '2017-10-25 19:04:05', 1, 12, 1, 2000000000, 10, 2, 1000000000, true); +INSERT INTO history_trades VALUES (81604382721, 1, '2017-10-25 19:04:05', 2, 10, 1, 2000000000, 12, 3, 2000000000, false); +INSERT INTO history_trades VALUES (85899350017, 0, '2017-10-25 19:04:06', 2, 10, 1, 1000000000, 12, 3, 1000000000, false); +INSERT INTO history_trades VALUES (103079219201, 0, '2017-10-25 19:04:10', 3, 13, 1, 200000000, 14, 4, 200000000, true); + + +-- +-- Data for Name: history_transaction_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transaction_participants VALUES (1, 12884905984, 1); +INSERT INTO history_transaction_participants VALUES (2, 12884905984, 2); +INSERT INTO history_transaction_participants VALUES (3, 17179873280, 1); +INSERT INTO history_transaction_participants VALUES (4, 17179873280, 3); +INSERT INTO history_transaction_participants VALUES (5, 21474840576, 3); +INSERT INTO history_transaction_participants VALUES (6, 21474844672, 3); +INSERT INTO history_transaction_participants VALUES (7, 21474848768, 3); +INSERT INTO history_transaction_participants VALUES (8, 25769807872, 3); +INSERT INTO history_transaction_participants VALUES (9, 30064775168, 4); +INSERT INTO history_transaction_participants VALUES (10, 30064775168, 1); +INSERT INTO history_transaction_participants VALUES (11, 34359742464, 4); +INSERT INTO history_transaction_participants VALUES (12, 34359742464, 1); +INSERT INTO history_transaction_participants VALUES (13, 34359746560, 4); +INSERT INTO history_transaction_participants VALUES (14, 34359746560, 1); +INSERT INTO history_transaction_participants VALUES (15, 34359750656, 4); +INSERT INTO history_transaction_participants VALUES (16, 34359750656, 1); +INSERT INTO history_transaction_participants VALUES (17, 34359754752, 4); +INSERT INTO history_transaction_participants VALUES (18, 34359754752, 1); +INSERT INTO history_transaction_participants VALUES (19, 38654709760, 1); +INSERT INTO history_transaction_participants VALUES (20, 38654709760, 5); +INSERT INTO history_transaction_participants VALUES (21, 42949677056, 5); +INSERT INTO history_transaction_participants VALUES (22, 42949677056, 1); +INSERT INTO history_transaction_participants VALUES (23, 47244644352, 1); +INSERT INTO history_transaction_participants VALUES (24, 47244644352, 6); +INSERT INTO history_transaction_participants VALUES (25, 51539611648, 6); +INSERT INTO history_transaction_participants VALUES (26, 51539611648, 7); +INSERT INTO history_transaction_participants VALUES (27, 55834578944, 8); +INSERT INTO history_transaction_participants VALUES (28, 55834578944, 1); +INSERT INTO history_transaction_participants VALUES (29, 55834583040, 1); +INSERT INTO history_transaction_participants VALUES (30, 55834583040, 9); +INSERT INTO history_transaction_participants VALUES (31, 60129546240, 9); +INSERT INTO history_transaction_participants VALUES (32, 60129550336, 8); +INSERT INTO history_transaction_participants VALUES (33, 60129550336, 9); +INSERT INTO history_transaction_participants VALUES (34, 64424513536, 8); +INSERT INTO history_transaction_participants VALUES (35, 64424513536, 9); +INSERT INTO history_transaction_participants VALUES (36, 68719480832, 1); +INSERT INTO history_transaction_participants VALUES (37, 68719480832, 10); +INSERT INTO history_transaction_participants VALUES (38, 68719484928, 11); +INSERT INTO history_transaction_participants VALUES (39, 68719484928, 1); +INSERT INTO history_transaction_participants VALUES (40, 68719489024, 1); +INSERT INTO history_transaction_participants VALUES (41, 68719489024, 12); +INSERT INTO history_transaction_participants VALUES (42, 73014448128, 10); +INSERT INTO history_transaction_participants VALUES (43, 73014452224, 11); +INSERT INTO history_transaction_participants VALUES (44, 77309415424, 12); +INSERT INTO history_transaction_participants VALUES (45, 77309415424, 10); +INSERT INTO history_transaction_participants VALUES (46, 77309419520, 12); +INSERT INTO history_transaction_participants VALUES (47, 77309423616, 12); +INSERT INTO history_transaction_participants VALUES (48, 81604382720, 10); +INSERT INTO history_transaction_participants VALUES (49, 81604382720, 12); +INSERT INTO history_transaction_participants VALUES (50, 81604382720, 11); +INSERT INTO history_transaction_participants VALUES (51, 85899350016, 12); +INSERT INTO history_transaction_participants VALUES (52, 85899350016, 11); +INSERT INTO history_transaction_participants VALUES (53, 85899350016, 10); +INSERT INTO history_transaction_participants VALUES (54, 90194317312, 13); +INSERT INTO history_transaction_participants VALUES (55, 90194317312, 1); +INSERT INTO history_transaction_participants VALUES (56, 90194321408, 14); +INSERT INTO history_transaction_participants VALUES (57, 90194321408, 1); +INSERT INTO history_transaction_participants VALUES (58, 94489284608, 13); +INSERT INTO history_transaction_participants VALUES (59, 98784251904, 13); +INSERT INTO history_transaction_participants VALUES (60, 103079219200, 14); +INSERT INTO history_transaction_participants VALUES (61, 103079219200, 13); +INSERT INTO history_transaction_participants VALUES (62, 107374186496, 1); +INSERT INTO history_transaction_participants VALUES (63, 107374186496, 15); +INSERT INTO history_transaction_participants VALUES (64, 111669153792, 15); +INSERT INTO history_transaction_participants VALUES (65, 111669157888, 15); +INSERT INTO history_transaction_participants VALUES (66, 115964121088, 1); +INSERT INTO history_transaction_participants VALUES (67, 115964121088, 16); +INSERT INTO history_transaction_participants VALUES (68, 120259088384, 16); +INSERT INTO history_transaction_participants VALUES (69, 120259092480, 16); +INSERT INTO history_transaction_participants VALUES (70, 120259096576, 16); +INSERT INTO history_transaction_participants VALUES (71, 120259100672, 16); +INSERT INTO history_transaction_participants VALUES (72, 120259104768, 16); +INSERT INTO history_transaction_participants VALUES (73, 120259108864, 16); +INSERT INTO history_transaction_participants VALUES (74, 120259112960, 16); +INSERT INTO history_transaction_participants VALUES (75, 124554055680, 16); +INSERT INTO history_transaction_participants VALUES (76, 128849022976, 16); +INSERT INTO history_transaction_participants VALUES (77, 133143990272, 16); +INSERT INTO history_transaction_participants VALUES (78, 137438957568, 16); +INSERT INTO history_transaction_participants VALUES (79, 137438961664, 16); +INSERT INTO history_transaction_participants VALUES (80, 141733924864, 1); +INSERT INTO history_transaction_participants VALUES (81, 141733924864, 17); +INSERT INTO history_transaction_participants VALUES (82, 146028892160, 17); +INSERT INTO history_transaction_participants VALUES (83, 150323859456, 17); +INSERT INTO history_transaction_participants VALUES (84, 154618826752, 17); +INSERT INTO history_transaction_participants VALUES (85, 158913794048, 17); +INSERT INTO history_transaction_participants VALUES (86, 163208761344, 1); +INSERT INTO history_transaction_participants VALUES (87, 163208761344, 18); +INSERT INTO history_transaction_participants VALUES (88, 163208765440, 1); +INSERT INTO history_transaction_participants VALUES (89, 163208765440, 19); +INSERT INTO history_transaction_participants VALUES (90, 167503728640, 19); +INSERT INTO history_transaction_participants VALUES (91, 171798695936, 18); +INSERT INTO history_transaction_participants VALUES (92, 171798700032, 18); +INSERT INTO history_transaction_participants VALUES (93, 176093663232, 19); +INSERT INTO history_transaction_participants VALUES (94, 176093663232, 18); +INSERT INTO history_transaction_participants VALUES (95, 176093667328, 19); +INSERT INTO history_transaction_participants VALUES (96, 176093667328, 18); +INSERT INTO history_transaction_participants VALUES (97, 180388630528, 19); +INSERT INTO history_transaction_participants VALUES (98, 180388630528, 18); +INSERT INTO history_transaction_participants VALUES (99, 184683597824, 1); +INSERT INTO history_transaction_participants VALUES (100, 184683597824, 20); +INSERT INTO history_transaction_participants VALUES (101, 188978565120, 20); +INSERT INTO history_transaction_participants VALUES (102, 188978565120, 1); +INSERT INTO history_transaction_participants VALUES (103, 193273532416, 21); +INSERT INTO history_transaction_participants VALUES (104, 193273532416, 1); +INSERT INTO history_transaction_participants VALUES (105, 197568499712, 1); +INSERT INTO history_transaction_participants VALUES (106, 197568503808, 21); +INSERT INTO history_transaction_participants VALUES (107, 201863467008, 1); +INSERT INTO history_transaction_participants VALUES (108, 201863467008, 21); +INSERT INTO history_transaction_participants VALUES (109, 206158434304, 1); +INSERT INTO history_transaction_participants VALUES (110, 206158434304, 22); +INSERT INTO history_transaction_participants VALUES (111, 210453401600, 22); +INSERT INTO history_transaction_participants VALUES (112, 210453405696, 22); +INSERT INTO history_transaction_participants VALUES (113, 210453409792, 22); +INSERT INTO history_transaction_participants VALUES (114, 214748368896, 22); +INSERT INTO history_transaction_participants VALUES (115, 219043336192, 22); +INSERT INTO history_transaction_participants VALUES (116, 223338303488, 22); +INSERT INTO history_transaction_participants VALUES (117, 227633270784, 1); +INSERT INTO history_transaction_participants VALUES (118, 227633270784, 23); +INSERT INTO history_transaction_participants VALUES (119, 231928238080, 1); +INSERT INTO history_transaction_participants VALUES (120, 231928238080, 23); +INSERT INTO history_transaction_participants VALUES (121, 236223205376, 1); +INSERT INTO history_transaction_participants VALUES (122, 236223205376, 24); +INSERT INTO history_transaction_participants VALUES (123, 240518172672, 24); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_transaction_participants_id_seq', 123, true); + + +-- +-- Data for Name: history_transactions; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transactions VALUES ('f5e0d1f500b2d0c4b42fb8a438d5ed764bc58d1392f4328f4713af407b1968ca', 3, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 1, 100, 1, '2017-10-25 19:03:53.726062', '2017-10-25 19:03:53.726062', 12884905984, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAQAAAAAAAABkAAAAAF4MUYAAAAAAAAAAAQAAAAAAAAAAAAAAAC6N7oJcJiUzTWRDL98Bj3fVrJUB19wFvCzEHh8nn/IOAAAAAlQL5AAAAAAAAAAAAVb8BfcAAABAXK6PX0t3GL+4TcNTKBIB9vkqahUMix+Rf/7WY5d6YJsmeBQ+o5ULJWvzgfc3aTx4f/DCUXc54KcOfCfzqH0uDQ==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAAAAAAAAC6N7oJcJiUzTWRDL98Bj3fVrJUB19wFvCzEHh8nn/IOAAAAAlQL5AAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2sVNYG5wAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{XK6PX0t3GL+4TcNTKBIB9vkqahUMix+Rf/7WY5d6YJsmeBQ+o5ULJWvzgfc3aTx4f/DCUXc54KcOfCfzqH0uDQ==}', 'none', NULL, '[100,1577865601)'); +INSERT INTO history_transactions VALUES ('66e27fb28870cb5256ea92764bcb222adbbaa5fec2d89a62a9aa8c9c8e2ee9e9', 4, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 2, 100, 1, '2017-10-25 19:03:53.739593', '2017-10-25 19:03:53.739593', 17179873280, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA7lAZIpCRwStYOr2IrB6aiXLG/wsNVkHBYtBKJinuINUAAAACVAvkAAAAAAAAAAABVvwF9wAAAECAUpO+hxiga/YgRsV3rFpBJydgOyn0TPImJCaQCMikkiG+sNXrQBsYXjJrlOiGjGsU3rk4uvGl85AriYD9PNYH', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAQAAAAAAAAAAO5QGSKQkcErWDq9iKwemolyxv8LDVZBwWLQSiYp7iDVAAAAAlQL5AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rv9MNzgAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAADAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrFTWBucAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrFTWBs4AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{gFKTvocYoGv2IEbFd6xaQScnYDsp9EzyJiQmkAjIpJIhvrDV60AbGF4ya5TohoxrFN65OLrxpfOQK4mA/TzWBw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('e9d1a3000aea36743142f2ede106d3cb37c3d7e88508e3f21b496370b5863858', 5, 1, 'GDXFAGJCSCI4CK2YHK6YRLA6TKEXFRX7BMGVMQOBMLIEUJRJ5YQNLMIB', 17179869185, 100, 1, '2017-10-25 19:03:53.748891', '2017-10-25 19:03:53.748891', 21474840576, 'AAAAAO5QGSKQkcErWDq9iKwemolyxv8LDVZBwWLQSiYp7iDVAAAAZAAAAAQAAAABAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASnuINUAAABASz0AtZeNzXSXkjPkKJfOE8aUTAuPR6pxMMbF337wxE3wzOTDaVcDQ2N5P3E9MKc+fbbFhZ9K+07+J0wMGltRBA==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAAAUAAAAAAAAAAO5QGSKQkcErWDq9iKwemolyxv8LDVZBwWLQSiYp7iDVAAAAAlQL4tQAAAAEAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAEAAAAAAAAAADuUBkikJHBK1g6vYisHpqJcsb/Cw1WQcFi0EomKe4g1QAAAAJUC+QAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAADuUBkikJHBK1g6vYisHpqJcsb/Cw1WQcFi0EomKe4g1QAAAAJUC+OcAAAABAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{Sz0AtZeNzXSXkjPkKJfOE8aUTAuPR6pxMMbF337wxE3wzOTDaVcDQ2N5P3E9MKc+fbbFhZ9K+07+J0wMGltRBA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('995b9269f9f9c4c1eace75501188766d6e8ae40c5413120811a50437683cb74c', 5, 2, 'GDXFAGJCSCI4CK2YHK6YRLA6TKEXFRX7BMGVMQOBMLIEUJRJ5YQNLMIB', 17179869186, 100, 1, '2017-10-25 19:03:53.752071', '2017-10-25 19:03:53.752071', 21474844672, 'AAAAAO5QGSKQkcErWDq9iKwemolyxv8LDVZBwWLQSiYp7iDVAAAAZAAAAAQAAAACAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAD2T51Mi2fjmCY4Z+R5JON1LluqzrnpmTxUJXTp/A3FRwAAAAEAAAAAAAAAASnuINUAAABADpkMMc7kkkYjDoPwfUlOE9tLYvWHI/m+BBe/gCKN1cVvEF1UBVeCCuGBTjury4TqoxplKl4NZHJST5/Orr4XCA==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAAAUAAAAAAAAAAO5QGSKQkcErWDq9iKwemolyxv8LDVZBwWLQSiYp7iDVAAAAAlQL4tQAAAAEAAAAAwAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAD2T51Mi2fjmCY4Z+R5JON1LluqzrnpmTxUJXTp/A3FRwAAAAEAAAAAAAAAAA==', 'AAAAAQAAAAEAAAAFAAAAAAAAAADuUBkikJHBK1g6vYisHpqJcsb/Cw1WQcFi0EomKe4g1QAAAAJUC+M4AAAABAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{DpkMMc7kkkYjDoPwfUlOE9tLYvWHI/m+BBe/gCKN1cVvEF1UBVeCCuGBTjury4TqoxplKl4NZHJST5/Orr4XCA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('f78dca926455579b4a43009ffe35a0229a6da4bed32d3c999d7a06ad26605a25', 5, 3, 'GDXFAGJCSCI4CK2YHK6YRLA6TKEXFRX7BMGVMQOBMLIEUJRJ5YQNLMIB', 17179869187, 100, 1, '2017-10-25 19:03:53.755852', '2017-10-25 19:03:53.755852', 21474848768, 'AAAAAO5QGSKQkcErWDq9iKwemolyxv8LDVZBwWLQSiYp7iDVAAAAZAAAAAQAAAADAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAABAAAAAgAAAAEAAAACAAAAAQAAAAIAAAAAAAAAAAAAAAAAAAABKe4g1QAAAEDglRRymtLjw+ImmGwTiBTKE7X7+2CywlHw8qed+t520SbAggcqboy5KXJaEP51/wRSMxtZUgDOFfaDn9Df04EA', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAAAUAAAAAAAAAAO5QGSKQkcErWDq9iKwemolyxv8LDVZBwWLQSiYp7iDVAAAAAlQL4tQAAAAEAAAAAwAAAAEAAAAAAAAAAAAAAAABAgICAAAAAQAAAAD2T51Mi2fjmCY4Z+R5JON1LluqzrnpmTxUJXTp/A3FRwAAAAEAAAAAAAAAAA==', 'AAAAAQAAAAEAAAAFAAAAAAAAAADuUBkikJHBK1g6vYisHpqJcsb/Cw1WQcFi0EomKe4g1QAAAAJUC+LUAAAABAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{4JUUcprS48PiJphsE4gUyhO1+/tgssJR8PKnnfredtEmwIIHKm6MuSlyWhD+df8EUjMbWVIAzhX2g5/Q39OBAA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('a9085e13fbe9f84e07e320a0d445536de1afc2cfd8c7e4186687807edd2b4897', 6, 1, 'GDXFAGJCSCI4CK2YHK6YRLA6TKEXFRX7BMGVMQOBMLIEUJRJ5YQNLMIB', 17179869188, 100, 1, '2017-10-25 19:03:53.764876', '2017-10-25 19:03:53.764876', 25769807872, 'AAAAAO5QGSKQkcErWDq9iKwemolyxv8LDVZBwWLQSiYp7iDVAAAAZAAAAAQAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAinuINUAAABA4PRAe0en/05ZH2leCeTOsxbT0cUu3wgUiWUcuDk4ya8G/gI90hlV6pzOYyAB6Zt5fN7pRrPRL/tTlnjgUAjaBvwNxUcAAABAFmdGR6JZukKJUC3Vr2YEJ/24G3tesqTv4cV5UcAozRhS2+w0PYVVqe7QTmOMNSGX/C3LxP1tSvpXdU/OhYsODw==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAAAYAAAAAAAAAAO5QGSKQkcErWDq9iKwemolyxv8LDVZBwWLQSiYp7iDVAAAAAlQL4nAAAAAEAAAABAAAAAEAAAAAAAAAAAAAAAACAgICAAAAAQAAAAD2T51Mi2fjmCY4Z+R5JON1LluqzrnpmTxUJXTp/A3FRwAAAAEAAAAAAAAAAA==', 'AAAAAgAAAAMAAAAFAAAAAAAAAADuUBkikJHBK1g6vYisHpqJcsb/Cw1WQcFi0EomKe4g1QAAAAJUC+LUAAAABAAAAAMAAAABAAAAAAAAAAAAAAAAAQICAgAAAAEAAAAA9k+dTItn45gmOGfkeSTjdS5bqs656Zk8VCV06fwNxUcAAAABAAAAAAAAAAAAAAABAAAABgAAAAAAAAAA7lAZIpCRwStYOr2IrB6aiXLG/wsNVkHBYtBKJinuINUAAAACVAvicAAAAAQAAAAEAAAAAQAAAAAAAAAAAAAAAAECAgIAAAABAAAAAPZPnUyLZ+OYJjhn5Hkk43UuW6rOuemZPFQldOn8DcVHAAAAAQAAAAAAAAAA', '{4PRAe0en/05ZH2leCeTOsxbT0cUu3wgUiWUcuDk4ya8G/gI90hlV6pzOYyAB6Zt5fN7pRrPRL/tTlnjgUAjaBg==,FmdGR6JZukKJUC3Vr2YEJ/24G3tesqTv4cV5UcAozRhS2+w0PYVVqe7QTmOMNSGX/C3LxP1tSvpXdU/OhYsODw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('0fb9c2e20946222b23e1d1d660de9d74576c41cfd9b199f9d565a013c1ef89ca', 7, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 3, 100, 1, '2017-10-25 19:03:53.772067', '2017-10-25 19:03:53.772067', 30064775168, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAOerFQRLRq/h3Xf4EErEqz7oD9wk20zX+d/h4dXc7DToAAAACVAvkAAAAAAAAAAABVvwF9wAAAED8tIFyog9OeCqiaBNfxFdAlneNYTfjoNUMKi6FJCY5BqemnDBxGox3jKS/xx4zpxAToEFp3Y2M+NRJIU4g/H0J', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAcAAAAAAAAAADnqxUES0av4d13+BBKxKs+6A/cJNtM1/nf4eHV3Ow06AAAAAlQL5AAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAcAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rKtAUtQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAEAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtq7/TDc4AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAHAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtq7/TDbUAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{/LSBcqIPTngqomgTX8RXQJZ3jWE346DVDCouhSQmOQanppwwcRqMd4ykv8ceM6cQE6BBad2NjPjUSSFOIPx9CQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('dd74eee27a59843b28a05ad08abf65eaa231b7debe4d05550c0a7a424cca5929', 8, 1, 'GA46VRKBCLI2X6DXLX7AIEVRFLH3UA7XBE3NGNP6O74HQ5LXHMGTV2JB', 30064771073, 100, 1, '2017-10-25 19:03:53.782362', '2017-10-25 19:03:53.782363', 34359742464, 'AAAAADnqxUES0av4d13+BBKxKs+6A/cJNtM1/nf4eHV3Ow06AAAAZAAAAAcAAAABAAAAAAAAAAIAAAAAAAAAewAAAAEAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAJiWgAAAAAAAAAABdzsNOgAAAEBjk5EFqV8GiL9xU62OUCKeScXxGMTMqJoD7ryiGf5jLPZJRSphbWC3ZycHE+pDuu/6EKSqcNUri5AXzQmM+GYB', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAADAAAAAQAAAAgAAAAAAAAAADnqxUES0av4d13+BBKxKs+6A/cJNtM1/nf4eHV3Ow06AAAAAlNzS/AAAAAHAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAcAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rKtAUtQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAgAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rKvY6VQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAHAAAAAAAAAAA56sVBEtGr+Hdd/gQSsSrPugP3CTbTNf53+Hh1dzsNOgAAAAJUC+QAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAIAAAAAAAAAAA56sVBEtGr+Hdd/gQSsSrPugP3CTbTNf53+Hh1dzsNOgAAAAJUC+OcAAAABwAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{Y5ORBalfBoi/cVOtjlAinknF8RjEzKiaA+68ohn+Yyz2SUUqYW1gt2cnBxPqQ7rv+hCkqnDVK4uQF80JjPhmAQ==}', 'id', '123', NULL); +INSERT INTO history_transactions VALUES ('2551e76a3ce4881b7bc73fdfd89d670d511ea7d4e56156252b51777023202de7', 8, 2, 'GA46VRKBCLI2X6DXLX7AIEVRFLH3UA7XBE3NGNP6O74HQ5LXHMGTV2JB', 30064771074, 100, 1, '2017-10-25 19:03:53.787589', '2017-10-25 19:03:53.787589', 34359746560, 'AAAAADnqxUES0av4d13+BBKxKs+6A/cJNtM1/nf4eHV3Ow06AAAAZAAAAAcAAAACAAAAAAAAAAEAAAAFaGVsbG8AAAAAAAABAAAAAAAAAAEAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcAAAAAAAAAAACYloAAAAAAAAAAAXc7DToAAABAS2+MaPA79AjD0B7qjl0qEz0N6CkDmoS4kgnXjZfbvdc9IkqNm0S+vKBNgV80pSfixY147L+jvS/ganovqbLiAQ==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAQAAAAgAAAAAAAAAADnqxUES0av4d13+BBKxKs+6A/cJNtM1/nf4eHV3Ow06AAAAAlLatXAAAAAHAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAgAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rKxxf9QAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAIAAAAAAAAAAA56sVBEtGr+Hdd/gQSsSrPugP3CTbTNf53+Hh1dzsNOgAAAAJUC+M4AAAABwAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{S2+MaPA79AjD0B7qjl0qEz0N6CkDmoS4kgnXjZfbvdc9IkqNm0S+vKBNgV80pSfixY147L+jvS/ganovqbLiAQ==}', 'text', 'hello', NULL); +INSERT INTO history_transactions VALUES ('3b36ecfbcc2adb0cfff08ae86199f64e12984f084bb03be9bb249611df82322b', 8, 3, 'GA46VRKBCLI2X6DXLX7AIEVRFLH3UA7XBE3NGNP6O74HQ5LXHMGTV2JB', 30064771075, 100, 1, '2017-10-25 19:03:53.792226', '2017-10-25 19:03:53.792226', 34359750656, 'AAAAADnqxUES0av4d13+BBKxKs+6A/cJNtM1/nf4eHV3Ow06AAAAZAAAAAcAAAADAAAAAAAAAAMBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAJiWgAAAAAAAAAABdzsNOgAAAEDC9hMtMYZ6hbx1iAdXngRcCYQmf8eu4zcB9SLH2998tVYca6QYig5Dsgy2oCMD1J7khIL9jz/VWjcPhvTVvC8L', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAQAAAAgAAAAAAAAAADnqxUES0av4d13+BBKxKs+6A/cJNtM1/nf4eHV3Ow06AAAAAlJCHvAAAAAHAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAgAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rK0KFlQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAIAAAAAAAAAAA56sVBEtGr+Hdd/gQSsSrPugP3CTbTNf53+Hh1dzsNOgAAAAJUC+LUAAAABwAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{wvYTLTGGeoW8dYgHV54EXAmEJn/HruM3AfUix9vffLVWHGukGIoOQ7IMtqAjA9Se5ISC/Y8/1Vo3D4b01bwvCw==}', 'hash', 'AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=', NULL); +INSERT INTO history_transactions VALUES ('e14885cb66af5f7f5e991b014eec475c61cc831292cf5526cdd0cda145300837', 8, 4, 'GA46VRKBCLI2X6DXLX7AIEVRFLH3UA7XBE3NGNP6O74HQ5LXHMGTV2JB', 30064771076, 100, 1, '2017-10-25 19:03:53.796747', '2017-10-25 19:03:53.796747', 34359754752, 'AAAAADnqxUES0av4d13+BBKxKs+6A/cJNtM1/nf4eHV3Ow06AAAAZAAAAAcAAAAEAAAAAAAAAAQCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAEAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAJiWgAAAAAAAAAABdzsNOgAAAEBOfq9PQ8EGcpjRWEaqGxvhBjSVuk6K5A2rthLYHnmAXmQ1JjJD3EddjiES3bPZUF5efGQvRjoEKgiB2dU3f2wF', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAQAAAAgAAAAAAAAAADnqxUES0av4d13+BBKxKs+6A/cJNtM1/nf4eHV3Ow06AAAAAlGpiHAAAAAHAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAgAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rK2irNQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAIAAAAAAAAAAA56sVBEtGr+Hdd/gQSsSrPugP3CTbTNf53+Hh1dzsNOgAAAAJUC+JwAAAABwAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{Tn6vT0PBBnKY0VhGqhsb4QY0lbpOiuQNq7YS2B55gF5kNSYyQ9xHXY4hEt2z2VBeXnxkL0Y6BCoIgdnVN39sBQ==}', 'return', 'AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI=', NULL); +INSERT INTO history_transactions VALUES ('66c28c0ccd5a2e47026aacafa2ecd3c501fe5de349ef376c0f8afb893c7bb55d', 9, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 4, 100, 1, '2017-10-25 19:03:53.808452', '2017-10-25 19:03:53.808452', 38654709760, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAADd1O3oAD6ZmsdNe9Y4zdIQW1rTvIfAEYi/0il9kFYl4AAAACVAvkAAAAAAAAAAABVvwF9wAAAEARD6MVWgEASusfhr6JdF9K3Rie2XCRJKl/NoKyJcrd1kGs3ygpp55xu80YlFwgNVErZ/cEAHYOq06CwNfnE2sC', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAkAAAAAAAAAAA3dTt6AA+mZrHTXvWOM3SEFta07yHwBGIv9IpfZBWJeAAAAAlQL5AAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAkAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2qlmWyHAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAIAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtqytoqzUAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAJAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtqytoqxwAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{EQ+jFVoBAErrH4a+iXRfSt0YntlwkSSpfzaCsiXK3dZBrN8oKaeecbvNGJRcIDVRK2f3BAB2DqtOgsDX5xNrAg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('fdb696a797b769176cbaed3a50e4a6a8671119621f65a3f954a3bcf100c7ef0c', 10, 1, 'GAG52TW6QAB6TGNMOTL32Y4M3UQQLNNNHPEHYAIYRP6SFF6ZAVRF5ZQY', 38654705665, 200, 2, '2017-10-25 19:03:53.818568', '2017-10-25 19:03:53.818569', 42949677056, 'AAAAAA3dTt6AA+mZrHTXvWOM3SEFta07yHwBGIv9IpfZBWJeAAAAyAAAAAkAAAABAAAAAAAAAAAAAAACAAAAAAAAAAEAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcAAAAAAAAAAAX14QAAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAABfXhAAAAAAAAAAAB2QViXgAAAEAxyl5gvCCDC7l0pq9b/Btd3cOUUcY9Rv0ALxVjul4EVSL1Vygr107GjDo11+YswdmlCuWf7KItU0chlogpns4L', 'AAAAAAAAAMgAAAAAAAAAAgAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAIAAAADAAAAAQAAAAoAAAAAAAAAAA3dTt6AA+mZrHTXvWOM3SEFta07yHwBGIv9IpfZBWJeAAAAAk4WAjgAAAAJAAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAkAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2qlmWyHAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAoAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2ql+MqXAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAEAAAAKAAAAAAAAAAAN3U7egAPpmax0171jjN0hBbWtO8h8ARiL/SKX2QViXgAAAAJIICE4AAAACQAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAKAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtqplgopwAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', 'AAAAAgAAAAMAAAAJAAAAAAAAAAAN3U7egAPpmax0171jjN0hBbWtO8h8ARiL/SKX2QViXgAAAAJUC+QAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAKAAAAAAAAAAAN3U7egAPpmax0171jjN0hBbWtO8h8ARiL/SKX2QViXgAAAAJUC+M4AAAACQAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{McpeYLwggwu5dKavW/wbXd3DlFHGPUb9AC8VY7peBFUi9VcoK9dOxow6NdfmLMHZpQrln+yiLVNHIZaIKZ7OCw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('67601a2ca212b84092a7d3c521172b67f4b93d72b726a06c540917d2ab83c1a1', 11, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 5, 100, 1, '2017-10-25 19:03:53.836323', '2017-10-25 19:03:53.836323', 47244644352, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAxVmE0iEp9S70YdkrhAu6dT4jSnPvbUuzitQ4oBcfaDMAAAACVAvkAAAAAAAAAAABVvwF9wAAAEBHLko6/Tbv0v/5CWHkixXnbyoU6qQ6yewZGqPHFSzNxMfud86eYGkN0j4msMCXfLAou7iKOVn0MWyzlpvYRA0B', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAsAAAAAAAAAAMVZhNIhKfUu9GHZK4QLunU+I0pz721Ls4rUOKAXH2gzAAAAAlQL5AAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAsAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2qBF2pgwAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAKAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtqplgopwAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAALAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtqplgooMAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{Ry5KOv0279L/+Qlh5IsV528qFOqkOsnsGRqjxxUszcTH7nfOnmBpDdI+JrDAl3ywKLu4ijlZ9DFss5ab2EQNAQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('0e128647b2b93786b6b76e182dcda0173757066f8caf0523d1ba3b47fd6f720d', 12, 1, 'GDCVTBGSEEU7KLXUMHMSXBALXJ2T4I2KOPXW2S5TRLKDRIAXD5UDHAYO', 47244640257, 100, 1, '2017-10-25 19:03:53.845625', '2017-10-25 19:03:53.845626', 51539611648, 'AAAAAMVZhNIhKfUu9GHZK4QLunU+I0pz721Ls4rUOKAXH2gzAAAAZAAAAAsAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAg/K/Blr9FO/nVEGLdmCzChMYpmcQzxIhFm6NBzxznX0AAAAAHc1lAAAAAAAAAAABFx9oMwAAAEBwY9HQAR2SMPe3JPvmBBtBk2jfog0GFEFYkLNFzQNqvYl7iZitmO5FQmkKlv/NO5ZcaWBqXcHhOQpk0s2XSBQF', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAwAAAAAAAAAAIPyvwZa/RTv51RBi3ZgswoTGKZnEM8SIRZujQc8c519AAAAAB3NZQAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAwAAAAAAAAAAMVZhNIhKfUu9GHZK4QLunU+I0pz721Ls4rUOKAXH2gzAAAAAjY+fpwAAAALAAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAALAAAAAAAAAADFWYTSISn1LvRh2SuEC7p1PiNKc+9tS7OK1DigFx9oMwAAAAJUC+QAAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAMAAAAAAAAAADFWYTSISn1LvRh2SuEC7p1PiNKc+9tS7OK1DigFx9oMwAAAAJUC+OcAAAACwAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{cGPR0AEdkjD3tyT75gQbQZNo36INBhRBWJCzRc0Dar2Je4mYrZjuRUJpCpb/zTuWXGlgal3B4TkKZNLNl0gUBQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('cd8a8e9eb53fd268d1294e228995c27f422d90783c4054e44ab0028fc1da210a', 13, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 6, 100, 1, '2017-10-25 19:03:53.856827', '2017-10-25 19:03:53.856827', 55834578944, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAGAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAji4PQpc6JMWt5AB56WXIEop14Pn7tW6uf6xE+vY7ZNwAAAACVAvkAAAAAAAAAAABVvwF9wAAAEAUtdYWyr64yv/rKPr0/vV4vYyonfsWxpxHsiYLHKJ3bm6k+ypiAByc8t0K+7bzxSLPjmjKKN5Prw7AdenlC7MB', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAA0AAAAAAAAAAI4uD0KXOiTFreQAeellyBKKdeD5+7Vurn+sRPr2O2TcAAAAAlQL5AAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA0AAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2pb1qwUQAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAALAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtqgRdqYMAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAANAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtqgRdqWoAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{FLXWFsq+uMr/6yj69P71eL2MqJ37FsacR7ImCxyid25upPsqYgAcnPLdCvu288Uiz45oyijeT68OwHXp5QuzAQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('bfbd5e9457d717bcf847291a6c24b7cd8db4ff784ecd4592be30d08146c0c264', 13, 2, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 7, 100, 1, '2017-10-25 19:03:53.862227', '2017-10-25 19:03:53.862228', 55834583040, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAHAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAG5M9WO2kexu4dljTd0YSuyEnmDUsxKamzJWiv4FGkoQAAAACVAvkAAAAAAAAAAABVvwF9wAAAEDY1TiMj+qj8+zYb2Vb60h+qWxZtFfSGwb0kvKttSFAHQhGOjIddiVQopx9LDRO6UgPmLLxFvQpIzeGnagh3vQD', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAA0AAAAAAAAAABuTPVjtpHsbuHZY03dGErshJ5g1LMSmpsyVor+BRpKEAAAAAlQL5AAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA0AAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2o2le3UQAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAANAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtqgRdqVEAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{2NU4jI/qo/Ps2G9lW+tIfqlsWbRX0hsG9JLyrbUhQB0IRjoyHXYlUKKcfSw0TulID5iy8Rb0KSM3hp2oId70Aw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('dbd964fcfdb336a30f21c240fffdaf73d7c75880ed1b99375c62f84e3e592570', 14, 1, 'GANZGPKY5WSHWG5YOZMNG52GCK5SCJ4YGUWMJJVGZSK2FP4BI2JIJN2C', 55834574849, 100, 1, '2017-10-25 19:03:53.870646', '2017-10-25 19:03:53.870646', 60129546240, 'AAAAABuTPVjtpHsbuHZY03dGErshJ5g1LMSmpsyVor+BRpKEAAAAZAAAAA0AAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAACOLg9Clzokxa3kAHnpZcgSinXg+fu1bq5/rET69jtk3H//////////AAAAAAAAAAGBRpKEAAAAQGDAV/5Op2DmFUP84dmyT5G/gxn1WzgdMrkSSU7wfpu39ycq36Sg+gs2ypRjw5hxxeMUj/GVEKipcDGndei38Aw=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAA4AAAABAAAAABuTPVjtpHsbuHZY03dGErshJ5g1LMSmpsyVor+BRpKEAAAAAVVTRAAAAAAAji4PQpc6JMWt5AB56WXIEop14Pn7tW6uf6xE+vY7ZNwAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAA4AAAAAAAAAABuTPVjtpHsbuHZY03dGErshJ5g1LMSmpsyVor+BRpKEAAAAAlQL45wAAAANAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAANAAAAAAAAAAAbkz1Y7aR7G7h2WNN3RhK7ISeYNSzEpqbMlaK/gUaShAAAAAJUC+QAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAOAAAAAAAAAAAbkz1Y7aR7G7h2WNN3RhK7ISeYNSzEpqbMlaK/gUaShAAAAAJUC+OcAAAADQAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{YMBX/k6nYOYVQ/zh2bJPkb+DGfVbOB0yuRJJTvB+m7f3JyrfpKD6CzbKlGPDmHHF4xSP8ZUQqKlwMad16LfwDA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('30880dd42d8e402a30d8a3527b56c1e33e18e87c46e1332ea5cfc1721fd87cfb', 14, 2, 'GCHC4D2CS45CJRNN4QAHT2LFZAJIU5PA7H53K3VOP6WEJ6XWHNSNZKQG', 55834574849, 100, 1, '2017-10-25 19:03:53.873155', '2017-10-25 19:03:53.873155', 60129550336, 'AAAAAI4uD0KXOiTFreQAeellyBKKdeD5+7Vurn+sRPr2O2TcAAAAZAAAAA0AAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAG5M9WO2kexu4dljTd0YSuyEnmDUsxKamzJWiv4FGkoQAAAAAAAAAAAX14QAAAAAAAAAAAfY7ZNwAAABAieZSSuOZqlwtyjnj5d/S0GUSGiQvy0ipPLynpl4UvO8qc7CDz3vsLROlN2g50qXirydSOdao56hvRhrEfRsGCA==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAQAAAA4AAAAAAAAAABuTPVjtpHsbuHZY03dGErshJ5g1LMSmpsyVor+BRpKEAAAAAloBxJwAAAANAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA4AAAAAAAAAAI4uD0KXOiTFreQAeellyBKKdeD5+7Vurn+sRPr2O2TcAAAAAk4WApwAAAANAAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAANAAAAAAAAAACOLg9Clzokxa3kAHnpZcgSinXg+fu1bq5/rET69jtk3AAAAAJUC+QAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAOAAAAAAAAAACOLg9Clzokxa3kAHnpZcgSinXg+fu1bq5/rET69jtk3AAAAAJUC+OcAAAADQAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{ieZSSuOZqlwtyjnj5d/S0GUSGiQvy0ipPLynpl4UvO8qc7CDz3vsLROlN2g50qXirydSOdao56hvRhrEfRsGCA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('852ba25e0e4aa149a22dc193bcb645ae9eba23e7f7432707f3b910474e9b6a5b', 28, 5, 'GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES', 115964116997, 100, 1, '2017-10-25 19:03:54.034701', '2017-10-25 19:03:54.034701', 120259104768, 'AAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAZAAAABsAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAAQAAAAIAAAAAAAAAAAAAAAAAAAABMJ4wUAAAAEAnFzc6kqweyIL4TzIDbr+8GUOGGs1W5jcX5iSNw4DeonzQARlejYJ9NOn/XkrcoC9Hvd8hc5lNx+1h991GxJUJ', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAABwAAAAAAAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAAlQL4UQAAAAbAAAABwAAAAAAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAwAAAAACAAICAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAcAAAAAAAAAACQUsYKOw/kj+JXXI5eosCY2LS+fgH0zFHZXnenMJ4wUAAAAAJUC+IMAAAAGwAAAAUAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{Jxc3OpKsHsiC+E8yA26/vBlDhhrNVuY3F+YkjcOA3qJ80AEZXo2CfTTp/15K3KAvR73fIXOZTcftYffdRsSVCQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('142c988b1f67984f74a1581de9caecf499e60f1e0eed496661aa2c559238764c', 15, 1, 'GCHC4D2CS45CJRNN4QAHT2LFZAJIU5PA7H53K3VOP6WEJ6XWHNSNZKQG', 55834574850, 100, 1, '2017-10-25 19:03:53.880056', '2017-10-25 19:03:53.880056', 64424513536, 'AAAAAI4uD0KXOiTFreQAeellyBKKdeD5+7Vurn+sRPr2O2TcAAAAZAAAAA0AAAACAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAG5M9WO2kexu4dljTd0YSuyEnmDUsxKamzJWiv4FGkoQAAAABVVNEAAAAAACOLg9Clzokxa3kAHnpZcgSinXg+fu1bq5/rET69jtk3AAAAAAF9eEAAAAAAAAAAAH2O2TcAAAAQJBUx5tWfjAwXxab9U5HOjZvBRv3u95jXbyzuqeZ/kjsyMsU0jO/g03Rf1zgect1hj4hDYGN8mW4oEot0sSTZgw=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAA4AAAABAAAAABuTPVjtpHsbuHZY03dGErshJ5g1LMSmpsyVor+BRpKEAAAAAVVTRAAAAAAAji4PQpc6JMWt5AB56WXIEop14Pn7tW6uf6xE+vY7ZNwAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAA8AAAABAAAAABuTPVjtpHsbuHZY03dGErshJ5g1LMSmpsyVor+BRpKEAAAAAVVTRAAAAAAAji4PQpc6JMWt5AB56WXIEop14Pn7tW6uf6xE+vY7ZNwAAAAABfXhAH//////////AAAAAQAAAAAAAAAA', 'AAAAAgAAAAMAAAAOAAAAAAAAAACOLg9Clzokxa3kAHnpZcgSinXg+fu1bq5/rET69jtk3AAAAAJOFgKcAAAADQAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAPAAAAAAAAAACOLg9Clzokxa3kAHnpZcgSinXg+fu1bq5/rET69jtk3AAAAAJOFgI4AAAADQAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{kFTHm1Z+MDBfFpv1Tkc6Nm8FG/e73mNdvLO6p5n+SOzIyxTSM7+DTdF/XOB5y3WGPiENgY3yZbigSi3SxJNmDA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('a5a9e3ca63e9cc155359c97337bcb14464cca56b230a4d0c7f27582644d16809', 16, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 8, 100, 1, '2017-10-25 19:03:53.887318', '2017-10-25 19:03:53.887318', 68719480832, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA423/rAYjzzhmLqxgNgLUY5X92ueHg5xGtOuok+g5NQoAAAACVAvkAAAAAAAAAAABVvwF9wAAAEBhFD/bYaTZZJ3VJ9xJqXoW5eeLK0AeFaATBH92cRfx0WUTFqp6rXx47fMBUxkWYq8bAHMfYCS5XXPRg86sAGUK', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAABAAAAAAAAAAAONt/6wGI884Zi6sYDYC1GOV/drnh4OcRrTrqJPoOTUKAAAAAlQL5AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAABAAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2oRVS+BgAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAANAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtqNpXt1EAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAQAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtqNpXtzgAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{YRQ/22Gk2WSd1SfcSal6FuXniytAHhWgEwR/dnEX8dFlExaqeq18eO3zAVMZFmKvGwBzH2AkuV1z0YPOrABlCg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('6a056189b45760c607e331c90c5a8b4cd720961df8bc8cecfd4aa388b577a6cb', 16, 2, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 9, 100, 1, '2017-10-25 19:03:53.891634', '2017-10-25 19:03:53.891634', 68719484928, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAJAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAABAjoBMEUiZNLUjsWXL1iK59D90Li4w56076b8HKxZfIAAAACVAvkAAAAAAAAAAABVvwF9wAAAEAxC5cl7tkjQI0cfFZTiIFDuo0SwyYnNqTUH2hxDBtm7h/vUkBG3cgwGXS87ninVkhmvdIpTWfeIeGiw7kgefUA', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAABAAAAAAAAAAAAQI6ATBFImTS1I7Fly9YiufQ/dC4uMOetO+m/BysWXyAAAAAlQL5AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAABAAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2nsFHFBgAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAQAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtqNpXtx8AAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{MQuXJe7ZI0CNHHxWU4iBQ7qNEsMmJzak1B9ocQwbZu4f71JARt3IMBl0vO54p1ZIZr3SKU1n3iHhosO5IHn1AA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('18bf6cce20cfbb0f9079c4b8783718949d13bd12d173a60363d2b8e3a07efead', 16, 3, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 10, 100, 1, '2017-10-25 19:03:53.895824', '2017-10-25 19:03:53.895824', 68719489024, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAKAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAACVAvkAAAAAAAAAAABVvwF9wAAAEC/RVto6ytAqHpd6ZFWjwXQyXopKORz8QSvz0d8RoPrOEBgNEuAj8+kbyhS7QieOqwbiJrS0AU8YWaBQQ4zc+wL', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAABAAAAAAAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAlQL5AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAABAAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2nG07MBgAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAQAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtqNpXtwYAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{v0VbaOsrQKh6XemRVo8F0Ml6KSjkc/EEr89HfEaD6zhAYDRLgI/PpG8oUu0InjqsG4ia0tAFPGFmgUEOM3PsCw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('cdef45dd961d59375351ea7dd7ef6414ff49371a335723e84dafacea1e13665a', 17, 1, 'GDRW375MAYR46ODGF2WGANQC2RRZL7O246DYHHCGWTV2RE7IHE2QUQLD', 68719476737, 100, 1, '2017-10-25 19:03:53.906117', '2017-10-25 19:03:53.906117', 73014448128, 'AAAAAONt/6wGI884Zi6sYDYC1GOV/drnh4OcRrTrqJPoOTUKAAAAZAAAABAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsX//////////AAAAAAAAAAHoOTUKAAAAQIjLqcYXE8EAsH6Dx2hwPjiEfHGZ4jsMNZZc7PynNiJi9kFXjfvvLDlWizGAr2B9MFDrfDRDvjnBxKKhJifEcQM=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAABEAAAABAAAAAONt/6wGI884Zi6sYDYC1GOV/drnh4OcRrTrqJPoOTUKAAAAAVVTRAAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAABEAAAAAAAAAAONt/6wGI884Zi6sYDYC1GOV/drnh4OcRrTrqJPoOTUKAAAAAlQL45wAAAAQAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAQAAAAAAAAAADjbf+sBiPPOGYurGA2AtRjlf3a54eDnEa066iT6Dk1CgAAAAJUC+QAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAARAAAAAAAAAADjbf+sBiPPOGYurGA2AtRjlf3a54eDnEa066iT6Dk1CgAAAAJUC+OcAAAAEAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{iMupxhcTwQCwfoPHaHA+OIR8cZniOww1llzs/Kc2ImL2QVeN++8sOVaLMYCvYH0wUOt8NEO+OcHEoqEmJ8RxAw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('d1f593eb5e14f97027bc79821fa46628c107034fba9a5acef6a9da79e051ee73', 17, 2, 'GACAR2AEYEKITE2LKI5RMXF5MIVZ6Q7XILROGDT22O7JX4DSWFS7FDDP', 68719476737, 100, 1, '2017-10-25 19:03:53.909534', '2017-10-25 19:03:53.909534', 73014452224, 'AAAAAAQI6ATBFImTS1I7Fly9YiufQ/dC4uMOetO+m/BysWXyAAAAZAAAABAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABRVVSAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsX//////////AAAAAAAAAAFysWXyAAAAQI7hbwZc1+KWfheVnYAq5TXFX9ancHJmJq0wV0c9ONIfG6U8trhIVeVoiED2eUFFmhx+bBtF9TPSvifF/mfDlQk=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAABEAAAABAAAAAAQI6ATBFImTS1I7Fly9YiufQ/dC4uMOetO+m/BysWXyAAAAAUVVUgAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAABEAAAAAAAAAAAQI6ATBFImTS1I7Fly9YiufQ/dC4uMOetO+m/BysWXyAAAAAlQL45wAAAAQAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAQAAAAAAAAAAAECOgEwRSJk0tSOxZcvWIrn0P3QuLjDnrTvpvwcrFl8gAAAAJUC+QAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAARAAAAAAAAAAAECOgEwRSJk0tSOxZcvWIrn0P3QuLjDnrTvpvwcrFl8gAAAAJUC+OcAAAAEAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{juFvBlzX4pZ+F5WdgCrlNcVf1qdwcmYmrTBXRz040h8bpTy2uEhV5WiIQPZ5QUWaHH5sG0X1M9K+J8X+Z8OVCQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('8ccc0c28c3e99a63cc59bad7dec3f5c56eb3942c548ecd40bc39c509d6b081d4', 28, 6, 'GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES', 115964116998, 100, 1, '2017-10-25 19:03:54.037419', '2017-10-25 19:03:54.037419', 120259108864, 'AAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAZAAAABsAAAAGAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAC2V4YW1wbGUuY29tAAAAAAAAAAAAAAAAATCeMFAAAABAkID6CkBHP9eovLQXkMQJ7QkE6NWlmdKGmLxaiI1YaVKZaKJxz5P85x+6wzpYxxbs6Bd2l4qxVjS7Q36DwRiqBA==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAABwAAAAAAAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAAlQL4UQAAAAbAAAABwAAAAAAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAwAAAAtleGFtcGxlLmNvbQACAAICAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAcAAAAAAAAAACQUsYKOw/kj+JXXI5eosCY2LS+fgH0zFHZXnenMJ4wUAAAAAJUC+GoAAAAGwAAAAYAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{kID6CkBHP9eovLQXkMQJ7QkE6NWlmdKGmLxaiI1YaVKZaKJxz5P85x+6wzpYxxbs6Bd2l4qxVjS7Q36DwRiqBA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('902b90c2322b9e6b335e7543389a7446b86e3039ebf59ec66dffb50eaec0dc85', 18, 1, 'GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU', 68719476737, 100, 1, '2017-10-25 19:03:53.916474', '2017-10-25 19:03:53.916474', 77309415424, 'AAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAZAAAABAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAA423/rAYjzzhmLqxgNgLUY5X92ueHg5xGtOuok+g5NQoAAAABVVNEAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAA7msoAAAAAAAAAAAERVFexAAAAQC9X2I3Zz1x3AQMqL4XCzePTlwnokv2BQnWGmT007oH59gai3eNu7/WVoHtW8hsgHjs1mZK709FzzRF2cbD2tQE=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAABEAAAABAAAAAONt/6wGI884Zi6sYDYC1GOV/drnh4OcRrTrqJPoOTUKAAAAAVVTRAAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAABIAAAABAAAAAONt/6wGI884Zi6sYDYC1GOV/drnh4OcRrTrqJPoOTUKAAAAAVVTRAAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAO5rKAH//////////AAAAAQAAAAAAAAAA', 'AAAAAgAAAAMAAAAQAAAAAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAJUC+QAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAASAAAAAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAJUC+OcAAAAEAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{L1fYjdnPXHcBAyovhcLN49OXCeiS/YFCdYaZPTTugfn2BqLd427v9ZWge1byGyAeOzWZkrvT0XPNEXZxsPa1AQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('ca756d1519ceda79f8722042b12cea7ba004c3bd961adb62b59f88a867f86eb3', 18, 2, 'GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU', 68719476738, 100, 1, '2017-10-25 19:03:53.920103', '2017-10-25 19:03:53.920103', 77309419520, 'AAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAZAAAABAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAA7msoAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAARFUV7EAAABALuai5QxceFbtAiC5nkntNVnvSPeWR+C+FgplPAdRgRS+PPESpUiSCyuiwuhmvuDw7kwxn+A6E0M4ca1s2qzMAg==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAAAAAAEAAAAAAAAAAVVTRAAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAA7msoAAAAAAEAAAACAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAABIAAAACAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAAAAAAEAAAAAAAAAAVVTRAAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAA7msoAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAQAAABIAAAAAAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAlQL4tQAAAAQAAAAAwAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAASAAAAAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAJUC+M4AAAAEAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{Luai5QxceFbtAiC5nkntNVnvSPeWR+C+FgplPAdRgRS+PPESpUiSCyuiwuhmvuDw7kwxn+A6E0M4ca1s2qzMAg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('37bb79f6959c0e8e9b3d31f6c9308d8d084d9c6742cfa56ca094cfa6eae99423', 18, 3, 'GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU', 68719476739, 100, 1, '2017-10-25 19:03:53.922086', '2017-10-25 19:03:53.922086', 77309423616, 'AAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAZAAAABAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAAAAAAAstBeAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAARFUV7EAAABArzp9Fxxql+yoysglDjXm9+rsJeNX2GsSa7TOy3AzHOu4Y5Z8ICx52Q885gQGQWMtEP0w6yh83d6+o6kjC/WuAg==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAAAAAAIAAAABRVVSAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAAAAAAAstBeAAAAAAEAAAABAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAABIAAAACAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAAAAAAIAAAABRVVSAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAAAAAAAstBeAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAQAAABIAAAAAAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAlQL4tQAAAAQAAAAAwAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAASAAAAAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAJUC+LUAAAAEAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{rzp9Fxxql+yoysglDjXm9+rsJeNX2GsSa7TOy3AzHOu4Y5Z8ICx52Q885gQGQWMtEP0w6yh83d6+o6kjC/WuAg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('198844c8b472daacc5b717695a4ca16ac799a13fb2cf4152d19e2117ae1c56c3', 19, 1, 'GDRW375MAYR46ODGF2WGANQC2RRZL7O246DYHHCGWTV2RE7IHE2QUQLD', 68719476738, 100, 1, '2017-10-25 19:03:53.927823', '2017-10-25 19:03:53.927823', 81604382720, 'AAAAAONt/6wGI884Zi6sYDYC1GOV/drnh4OcRrTrqJPoOTUKAAAAZAAAABAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAIAAAABVVNEAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAA7msoAAAAAAAQI6ATBFImTS1I7Fly9YiufQ/dC4uMOetO+m/BysWXyAAAAAUVVUgAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAdzWUAAAAAAEAAAAAAAAAAAAAAAHoOTUKAAAAQMs9vNZ518oYUMp38TakovW//DDTbs/9oPj1RAix5ElC/d7gbWaaNNJxKQR7eMNO6rB+ntGqee4WurTJgA4k2ws=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAACAAAAAAAAAAIAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAAAAAAQAAAAAAAAAAdzWUAAAAAAFVU0QAAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAADuaygAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAAAAAAgAAAAFFVVIAAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAHc1lAAAAAAAAAAAAHc1lAAAAAAABAjoBMEUiZNLUjsWXL1iK59D90Li4w56076b8HKxZfIAAAABRVVSAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAB3NZQAAAAAAA==', 'AAAAAAAAAAEAAAAKAAAAAwAAABIAAAAAAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAlQL4tQAAAAQAAAAAwAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAABMAAAAAAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAlQL4tQAAAAQAAAAAwAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAwAAABEAAAABAAAAAAQI6ATBFImTS1I7Fly9YiufQ/dC4uMOetO+m/BysWXyAAAAAUVVUgAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAABMAAAABAAAAAAQI6ATBFImTS1I7Fly9YiufQ/dC4uMOetO+m/BysWXyAAAAAUVVUgAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAdzWUAH//////////AAAAAQAAAAAAAAAAAAAAAwAAABIAAAABAAAAAONt/6wGI884Zi6sYDYC1GOV/drnh4OcRrTrqJPoOTUKAAAAAVVTRAAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAO5rKAH//////////AAAAAQAAAAAAAAAAAAAAAQAAABMAAAABAAAAAONt/6wGI884Zi6sYDYC1GOV/drnh4OcRrTrqJPoOTUKAAAAAVVTRAAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAwAAABIAAAACAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAAAAAAEAAAAAAAAAAVVTRAAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAA7msoAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAQAAABMAAAACAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAAAAAAEAAAAAAAAAAVVTRAAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAdzWUAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAwAAABIAAAACAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAAAAAAIAAAABRVVSAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAAAAAAAstBeAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAQAAABMAAAACAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAAAAAAIAAAABRVVSAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAAAAAAAO5rKAAAAAAEAAAABAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAARAAAAAAAAAADjbf+sBiPPOGYurGA2AtRjlf3a54eDnEa066iT6Dk1CgAAAAJUC+OcAAAAEAAAAAEAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAATAAAAAAAAAADjbf+sBiPPOGYurGA2AtRjlf3a54eDnEa066iT6Dk1CgAAAAJUC+M4AAAAEAAAAAIAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{yz281nnXyhhQynfxNqSi9b/8MNNuz/2g+PVECLHkSUL93uBtZpo00nEpBHt4w07qsH6e0ap57ha6tMmADiTbCw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('f08dc1fec150f276562866ce4f5272f658cf0bd9fd8c1d96a22c196be2e1b25a', 20, 1, 'GDRW375MAYR46ODGF2WGANQC2RRZL7O246DYHHCGWTV2RE7IHE2QUQLD', 68719476739, 100, 1, '2017-10-25 19:03:53.941866', '2017-10-25 19:03:53.941866', 85899350016, 'AAAAAONt/6wGI884Zi6sYDYC1GOV/drnh4OcRrTrqJPoOTUKAAAAZAAAABAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAIAAAAAAAAAADuaygAAAAAABAjoBMEUiZNLUjsWXL1iK59D90Li4w56076b8HKxZfIAAAABRVVSAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAA7msoAAAAAAAAAAAAAAAAB6Dk1CgAAAEB+7jxesBKKrF343onyycjp2tiQLZiGH2ETl+9fuOqotveY2rIgvt9ng+QJ2aDP3+PnDsYEa9ZUaA+Zne2nIGgE', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAACAAAAAAAAAAEAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAAAAAAgAAAAFFVVIAAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAADuaygAAAAAAAAAAADuaygAAAAAABAjoBMEUiZNLUjsWXL1iK59D90Li4w56076b8HKxZfIAAAABRVVSAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAA7msoAAAAAAA==', 'AAAAAAAAAAEAAAAHAAAAAwAAABMAAAAAAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAlQL4tQAAAAQAAAAAwAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAABQAAAAAAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAo+mrNQAAAAQAAAAAwAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAABQAAAAAAAAAAONt/6wGI884Zi6sYDYC1GOV/drnh4OcRrTrqJPoOTUKAAAAAhhxGNQAAAAQAAAAAwAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAwAAABMAAAABAAAAAAQI6ATBFImTS1I7Fly9YiufQ/dC4uMOetO+m/BysWXyAAAAAUVVUgAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAdzWUAH//////////AAAAAQAAAAAAAAAAAAAAAQAAABQAAAABAAAAAAQI6ATBFImTS1I7Fly9YiufQ/dC4uMOetO+m/BysWXyAAAAAUVVUgAAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAstBeAH//////////AAAAAQAAAAAAAAAAAAAAAwAAABMAAAACAAAAAC7C83M2T23Bu4kdQGqdfboZgjcxsJ2lBT23ifoRVFexAAAAAAAAAAIAAAABRVVSAAAAAAAuwvNzNk9twbuJHUBqnX26GYI3MbCdpQU9t4n6EVRXsQAAAAAAAAAAO5rKAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAALsLzczZPbcG7iR1Aap19uhmCNzGwnaUFPbeJ+hFUV7EAAAAAAAAAAg==', 'AAAAAgAAAAMAAAATAAAAAAAAAADjbf+sBiPPOGYurGA2AtRjlf3a54eDnEa066iT6Dk1CgAAAAJUC+M4AAAAEAAAAAIAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAUAAAAAAAAAADjbf+sBiPPOGYurGA2AtRjlf3a54eDnEa066iT6Dk1CgAAAAJUC+LUAAAAEAAAAAMAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{fu48XrASiqxd+N6J8snI6drYkC2Yhh9hE5fvX7jqqLb3mNqyIL7fZ4PkCdmgz9/j5w7GBGvWVGgPmZ3tpyBoBA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('2a6987a6930eab7e3becacf9b76ed7a06802668c1f1eb0f82f5671014b4b636a', 21, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 11, 100, 1, '2017-10-25 19:03:53.952494', '2017-10-25 19:03:53.952494', 90194317312, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAALAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAXK+F1JOs84QNDhnmIjjKUDQ+mEvueZwDL/tCVRXFjncAAAACVAvkAAAAAAAAAAABVvwF9wAAAEDfpUesb4kQ/RfBx1UxqNOtZ2+4R4S0XxzggPR1C3YyhZAr/K8KyZCg4ejDTFnhu9qAh4GLZLkbBraGncT9DcYF', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAABUAAAAAAAAAAFyvhdSTrPOEDQ4Z5iI4ylA0PphL7nmcAy/7QlUVxY53AAAAAlQL5AAAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAABUAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2mhkvS1AAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAQAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtpxtOzAYAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAVAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtpxtOy+0AAAAAAAAAAsAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{36VHrG+JEP0XwcdVMajTrWdvuEeEtF8c4ID0dQt2MoWQK/yvCsmQoOHow0xZ4bvagIeBi2S5Gwa2hp3E/Q3GBQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('96415ac1d2f79621b26b1568f963fd8dd6c50c20a22c7428cefbfe9dee867588', 21, 2, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 12, 100, 1, '2017-10-25 19:03:53.957969', '2017-10-25 19:03:53.957969', 90194321408, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAMAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAdQRiekAoVkbqXJa3xIIXnCcZLADk+cVfmZs9SLHWDWEAAAACVAvkAAAAAAAAAAABVvwF9wAAAEDdJGdvdZ2S4QoXdO+Odt8ZRdeVu7mBvq7FtP9okqr98pGD/jSAraklQvaRmCyMALIMD2kG8R2KjhKvy7oIL6IB', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAABUAAAAAAAAAAHUEYnpAKFZG6lyWt8SCF5wnGSwA5PnFX5mbPUix1g1hAAAAAlQL5AAAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAABUAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2l8UjZ1AAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAVAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtpxtOy9QAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{3SRnb3WdkuEKF3TvjnbfGUXXlbu5gb6uxbT/aJKq/fKRg/40gK2pJUL2kZgsjACyDA9pBvEdio4Sr8u6CC+iAQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('be05e4bd966d58689e1b6fae013e5aa77bde56e6acd2db9b96870e5e746a4ab7', 22, 1, 'GBOK7BOUSOWPHBANBYM6MIRYZJIDIPUYJPXHTHADF75UEVIVYWHHONQC', 90194313217, 100, 1, '2017-10-25 19:03:53.967932', '2017-10-25 19:03:53.967932', 94489284608, 'AAAAAFyvhdSTrPOEDQ4Z5iI4ylA0PphL7nmcAy/7QlUVxY53AAAAZAAAABUAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAB1BGJ6QChWRupclrfEghecJxksAOT5xV+Zmz1IsdYNYX//////////AAAAAAAAAAEVxY53AAAAQDMCWfC0eGNJuYIX3s5AUNLernpcHTn8O6ygq/Nw3S5vny/W42O5G4G6UsihVU1xd5bR4im2+VzQlQYQhe0jhwg=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAABYAAAABAAAAAFyvhdSTrPOEDQ4Z5iI4ylA0PphL7nmcAy/7QlUVxY53AAAAAVVTRAAAAAAAdQRiekAoVkbqXJa3xIIXnCcZLADk+cVfmZs9SLHWDWEAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAABYAAAAAAAAAAFyvhdSTrPOEDQ4Z5iI4ylA0PphL7nmcAy/7QlUVxY53AAAAAlQL45wAAAAVAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAVAAAAAAAAAABcr4XUk6zzhA0OGeYiOMpQND6YS+55nAMv+0JVFcWOdwAAAAJUC+QAAAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAWAAAAAAAAAABcr4XUk6zzhA0OGeYiOMpQND6YS+55nAMv+0JVFcWOdwAAAAJUC+OcAAAAFQAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{MwJZ8LR4Y0m5ghfezkBQ0t6uelwdOfw7rKCr83DdLm+fL9bjY7kbgbpSyKFVTXF3ltHiKbb5XNCVBhCF7SOHCA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('d8b2508123656b1df1ee17c2767829bc22ab41959ad25e6ccc520e849516fba1', 23, 1, 'GBOK7BOUSOWPHBANBYM6MIRYZJIDIPUYJPXHTHADF75UEVIVYWHHONQC', 90194313218, 100, 1, '2017-10-25 19:03:53.975051', '2017-10-25 19:03:53.975051', 98784251904, 'AAAAAFyvhdSTrPOEDQ4Z5iI4ylA0PphL7nmcAy/7QlUVxY53AAAAZAAAABUAAAACAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAdQRiekAoVkbqXJa3xIIXnCcZLADk+cVfmZs9SLHWDWEAAAAAC+vCAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAARXFjncAAABATR48xYiKbu8AOoXFwvcvILZ0/pQkfGuwwAoIZNefr7ydIwlcuL44XPM7pJ/6jDSbqBudTNWdE2JRjuq7HI7IAA==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAFyvhdSTrPOEDQ4Z5iI4ylA0PphL7nmcAy/7QlUVxY53AAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAdQRiekAoVkbqXJa3xIIXnCcZLADk+cVfmZs9SLHWDWEAAAAAC+vCAAAAAAEAAAABAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAABcAAAACAAAAAFyvhdSTrPOEDQ4Z5iI4ylA0PphL7nmcAy/7QlUVxY53AAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAdQRiekAoVkbqXJa3xIIXnCcZLADk+cVfmZs9SLHWDWEAAAAAC+vCAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAQAAABcAAAAAAAAAAFyvhdSTrPOEDQ4Z5iI4ylA0PphL7nmcAy/7QlUVxY53AAAAAlQL4zgAAAAVAAAAAgAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAWAAAAAAAAAABcr4XUk6zzhA0OGeYiOMpQND6YS+55nAMv+0JVFcWOdwAAAAJUC+OcAAAAFQAAAAEAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAXAAAAAAAAAABcr4XUk6zzhA0OGeYiOMpQND6YS+55nAMv+0JVFcWOdwAAAAJUC+M4AAAAFQAAAAIAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{TR48xYiKbu8AOoXFwvcvILZ0/pQkfGuwwAoIZNefr7ydIwlcuL44XPM7pJ/6jDSbqBudTNWdE2JRjuq7HI7IAA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('01346de1ca30ce03149d9f54945956a22f9cbed3d81f81c62bb59cf8cdd8b893', 24, 1, 'GB2QIYT2IAUFMRXKLSLLPRECC6OCOGJMADSPTRK7TGNT2SFR2YGWDARD', 90194313217, 100, 1, '2017-10-25 19:03:53.9812', '2017-10-25 19:03:53.9812', 103079219200, 'AAAAAHUEYnpAKFZG6lyWt8SCF5wnGSwA5PnFX5mbPUix1g1hAAAAZAAAABUAAAABAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABVVNEAAAAAAB1BGJ6QChWRupclrfEghecJxksAOT5xV+Zmz1IsdYNYQAAAAAAAAAAEeGjAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAbHWDWEAAABA0L+69D1hxpytAkX6cvPiBuO80ql8SQKZ15POVxx9wYl6mZrL+6UWGab/+6ng2M+a29E7ON+Xs46Y9MNqTh91AQ==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAEAAAAAXK+F1JOs84QNDhnmIjjKUDQ+mEvueZwDL/tCVRXFjncAAAAAAAAAAwAAAAAAAAAAC+vCAAAAAAFVU0QAAAAAAHUEYnpAKFZG6lyWt8SCF5wnGSwA5PnFX5mbPUix1g1hAAAAAAvrwgAAAAAAAAAAAHUEYnpAKFZG6lyWt8SCF5wnGSwA5PnFX5mbPUix1g1hAAAAAAAAAAQAAAABVVNEAAAAAAB1BGJ6QChWRupclrfEghecJxksAOT5xV+Zmz1IsdYNYQAAAAAAAAAABfXhAAAAAAEAAAABAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAAIAAAAAAAAABgAAAACAAAAAHUEYnpAKFZG6lyWt8SCF5wnGSwA5PnFX5mbPUix1g1hAAAAAAAAAAQAAAABVVNEAAAAAAB1BGJ6QChWRupclrfEghecJxksAOT5xV+Zmz1IsdYNYQAAAAAAAAAABfXhAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAwAAABcAAAAAAAAAAFyvhdSTrPOEDQ4Z5iI4ylA0PphL7nmcAy/7QlUVxY53AAAAAlQL4zgAAAAVAAAAAgAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAABgAAAAAAAAAAFyvhdSTrPOEDQ4Z5iI4ylA0PphL7nmcAy/7QlUVxY53AAAAAkggITgAAAAVAAAAAgAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAABgAAAAAAAAAAHUEYnpAKFZG6lyWt8SCF5wnGSwA5PnFX5mbPUix1g1hAAAAAl/3pZwAAAAVAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAwAAABYAAAABAAAAAFyvhdSTrPOEDQ4Z5iI4ylA0PphL7nmcAy/7QlUVxY53AAAAAVVTRAAAAAAAdQRiekAoVkbqXJa3xIIXnCcZLADk+cVfmZs9SLHWDWEAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAABgAAAABAAAAAFyvhdSTrPOEDQ4Z5iI4ylA0PphL7nmcAy/7QlUVxY53AAAAAVVTRAAAAAAAdQRiekAoVkbqXJa3xIIXnCcZLADk+cVfmZs9SLHWDWEAAAAAC+vCAH//////////AAAAAQAAAAAAAAAAAAAAAwAAABcAAAACAAAAAFyvhdSTrPOEDQ4Z5iI4ylA0PphL7nmcAy/7QlUVxY53AAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAdQRiekAoVkbqXJa3xIIXnCcZLADk+cVfmZs9SLHWDWEAAAAAC+vCAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAXK+F1JOs84QNDhnmIjjKUDQ+mEvueZwDL/tCVRXFjncAAAAAAAAAAw==', 'AAAAAgAAAAMAAAAVAAAAAAAAAAB1BGJ6QChWRupclrfEghecJxksAOT5xV+Zmz1IsdYNYQAAAAJUC+QAAAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAYAAAAAAAAAAB1BGJ6QChWRupclrfEghecJxksAOT5xV+Zmz1IsdYNYQAAAAJUC+OcAAAAFQAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{0L+69D1hxpytAkX6cvPiBuO80ql8SQKZ15POVxx9wYl6mZrL+6UWGab/+6ng2M+a29E7ON+Xs46Y9MNqTh91AQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('5065cd7c97cfb6fbf7da8493beed47ed2c7efb3b00b77a4c92692ed487fb86a4', 25, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 13, 100, 1, '2017-10-25 19:03:53.990567', '2017-10-25 19:03:53.990567', 107374186496, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAANAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAfGbtaaW8nEfkG5PP1Cf4+dZxNj3MryzpiAiOpDJuhhgAAAACVAvkAAAAAAAAAAABVvwF9wAAAEBthwT3JCg5IZkKRNK3pHBa/eG8zq8Af9gFPWlYvEdRo6jzA5D9fYOcDpKD3dEAuPLNNAHj9tNbZUJA3rwxN94B', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAABkAAAAAAAAAAHxm7WmlvJxH5BuTz9Qn+PnWcTY9zK8s6YgIjqQyboYYAAAAAlQL5AAAAAAZAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAABkAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2lXEXguwAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAVAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtpfFI2dQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAZAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtpfFI2bsAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{bYcE9yQoOSGZCkTSt6RwWv3hvM6vAH/YBT1pWLxHUaOo8wOQ/X2DnA6Sg93RALjyzTQB4/bTW2VCQN68MTfeAQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('a76e0260f6b83c6ea93f545d17de721c079dc31e81ee5edc41f159ec5fb48443', 26, 1, 'GB6GN3LJUW6JYR7EDOJ47VBH7D45M4JWHXGK6LHJRAEI5JBSN2DBQY7Q', 107374182401, 100, 1, '2017-10-25 19:03:54.001014', '2017-10-25 19:03:54.001014', 111669153792, 'AAAAAHxm7WmlvJxH5BuTz9Qn+PnWcTY9zK8s6YgIjqQyboYYAAAAZAAAABkAAAABAAAAAAAAAAAAAAABAAAAAAAAAAQAAAABVVNEAAAAAAB8Zu1ppbycR+Qbk8/UJ/j51nE2PcyvLOmICI6kMm6GGAAAAAAAAAAAdzWUAAAAAAEAAAABAAAAAAAAAAEyboYYAAAAQBqzCYDuLYn/jXhfEVxEGigMCJGoOBCK92lUb3Um15PgwSJ63tNl+FpH8+y5c+mCs/rzcvdyo9uXdodd4LXWiQg=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAHxm7WmlvJxH5BuTz9Qn+PnWcTY9zK8s6YgIjqQyboYYAAAAAAAAAAUAAAABVVNEAAAAAAB8Zu1ppbycR+Qbk8/UJ/j51nE2PcyvLOmICI6kMm6GGAAAAAAAAAAAdzWUAAAAAAEAAAABAAAAAQAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAABoAAAACAAAAAHxm7WmlvJxH5BuTz9Qn+PnWcTY9zK8s6YgIjqQyboYYAAAAAAAAAAUAAAABVVNEAAAAAAB8Zu1ppbycR+Qbk8/UJ/j51nE2PcyvLOmICI6kMm6GGAAAAAAAAAAAdzWUAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAQAAABoAAAAAAAAAAHxm7WmlvJxH5BuTz9Qn+PnWcTY9zK8s6YgIjqQyboYYAAAAAlQL4zgAAAAZAAAAAgAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAZAAAAAAAAAAB8Zu1ppbycR+Qbk8/UJ/j51nE2PcyvLOmICI6kMm6GGAAAAAJUC+QAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAaAAAAAAAAAAB8Zu1ppbycR+Qbk8/UJ/j51nE2PcyvLOmICI6kMm6GGAAAAAJUC+OcAAAAGQAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{GrMJgO4tif+NeF8RXEQaKAwIkag4EIr3aVRvdSbXk+DBInre02X4Wkfz7Llz6YKz+vNy93Kj25d2h13gtdaJCA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('92a654c76966ac61acc9df0b75f91cbde3b551c9e9766730827af42d1e247cc3', 26, 2, 'GB6GN3LJUW6JYR7EDOJ47VBH7D45M4JWHXGK6LHJRAEI5JBSN2DBQY7Q', 107374182402, 100, 1, '2017-10-25 19:03:54.006782', '2017-10-25 19:03:54.006782', 111669157888, 'AAAAAHxm7WmlvJxH5BuTz9Qn+PnWcTY9zK8s6YgIjqQyboYYAAAAZAAAABkAAAACAAAAAAAAAAAAAAABAAAAAAAAAAQAAAAAAAAAAVVTRAAAAAAAfGbtaaW8nEfkG5PP1Cf4+dZxNj3MryzpiAiOpDJuhhgAAAAAdzWUAAAAAAEAAAABAAAAAAAAAAEyboYYAAAAQBbE9T7oBKoN0/S3AV7GoSRe+xT79SlWNCYEtL1RPExL8FLhw5EDsXLoAvIBbBvHIr9NKcPtWDyhcHlIuaZKIg8=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAHxm7WmlvJxH5BuTz9Qn+PnWcTY9zK8s6YgIjqQyboYYAAAAAAAAAAYAAAAAAAAAAVVTRAAAAAAAfGbtaaW8nEfkG5PP1Cf4+dZxNj3MryzpiAiOpDJuhhgAAAAAdzWUAAAAAAEAAAABAAAAAQAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAABoAAAACAAAAAHxm7WmlvJxH5BuTz9Qn+PnWcTY9zK8s6YgIjqQyboYYAAAAAAAAAAYAAAAAAAAAAVVTRAAAAAAAfGbtaaW8nEfkG5PP1Cf4+dZxNj3MryzpiAiOpDJuhhgAAAAAdzWUAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAQAAABoAAAAAAAAAAHxm7WmlvJxH5BuTz9Qn+PnWcTY9zK8s6YgIjqQyboYYAAAAAlQL4zgAAAAZAAAAAgAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAaAAAAAAAAAAB8Zu1ppbycR+Qbk8/UJ/j51nE2PcyvLOmICI6kMm6GGAAAAAJUC+M4AAAAGQAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{FsT1PugEqg3T9LcBXsahJF77FPv1KVY0JgS0vVE8TEvwUuHDkQOxcugC8gFsG8civ00pw+1YPKFweUi5pkoiDw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('700fa44bb40e6ad2c5888656cd2e7b8d86de3d3557b653ae6874466175d64927', 27, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 14, 100, 1, '2017-10-25 19:03:54.015421', '2017-10-25 19:03:54.015421', 115964121088, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAOAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAkFLGCjsP5I/iV1yOXqLAmNi0vn4B9MxR2V53pzCeMFAAAAACVAvkAAAAAAAAAAABVvwF9wAAAEBq3GPDVeRPfwqtW45GZNiUdQ9j6E9Nsz/lMYWcWDWGCZADSsEiEoXar1HWFK6drptsGEl9P6I9f7C2GBKb4YQM', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAABsAAAAAAAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAAlQL5AAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAABsAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2kx0LnogAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAZAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtpVxF4LsAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAbAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtpVxF4KIAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{atxjw1XkT38KrVuORmTYlHUPY+hPTbM/5TGFnFg1hgmQA0rBIhKF2q9R1hSuna6bbBhJfT+iPX+wthgSm+GEDA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('fe3707fbd5c844395c598f31dc719c61218d4cea4e8dddadb6733f4866089100', 28, 1, 'GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES', 115964116993, 100, 1, '2017-10-25 19:03:54.024373', '2017-10-25 19:03:54.024373', 120259088384, 'AAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAZAAAABsAAAABAAAAAAAAAAAAAAABAAAAAAAAAAUAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMJ4wUAAAAEA/GIgE9sYPGwbCiIdLdhoEu25CyB0ZAcmjQonQItu6SE0gaSBVT/le355A/dw1NPaoXY9P/u0ou9D7h5Vb1fcK', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAABwAAAAAAAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAAlQL4UQAAAAbAAAABwAAAAAAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAbAAAAAAAAAACQUsYKOw/kj+JXXI5eosCY2LS+fgH0zFHZXnenMJ4wUAAAAAJUC+QAAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAcAAAAAAAAAACQUsYKOw/kj+JXXI5eosCY2LS+fgH0zFHZXnenMJ4wUAAAAAJUC+OcAAAAGwAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{PxiIBPbGDxsGwoiHS3YaBLtuQsgdGQHJo0KJ0CLbukhNIGkgVU/5Xt+eQP3cNTT2qF2PT/7tKLvQ+4eVW9X3Cg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('345ef7f85c6ea297e3f994feef279b63812628681bd173a1f615185a4368e482', 28, 2, 'GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES', 115964116994, 100, 1, '2017-10-25 19:03:54.026691', '2017-10-25 19:03:54.026691', 120259092480, 'AAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAZAAAABsAAAACAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMJ4wUAAAAEDYxq3zpaFIC2JcuJUbrQ3MFXzqvu+5G7XUi4NnHlfbLutn76ylQcjuwLgbUG2lqcQfl75doPUZyurKtFP1rkMO', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAABwAAAAAAAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAAlQL4UQAAAAbAAAABwAAAAAAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAQAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAcAAAAAAAAAACQUsYKOw/kj+JXXI5eosCY2LS+fgH0zFHZXnenMJ4wUAAAAAJUC+M4AAAAGwAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{2Mat86WhSAtiXLiVG60NzBV86r7vuRu11IuDZx5X2y7rZ++spUHI7sC4G1BtpanEH5e+XaD1GcrqyrRT9a5DDg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('2a14735d7b05109359444acdd87e7fe92c98e9295d2ba61b05e25d1f7ee10fd3', 28, 3, 'GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES', 115964116995, 100, 1, '2017-10-25 19:03:54.029472', '2017-10-25 19:03:54.029472', 120259096576, 'AAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAZAAAABsAAAADAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMJ4wUAAAAEAKuQ1exMu8hdf8dOPeULX2DG7DZx5WWIUFHXJMWGG9KmVrQoZDt2S6a/1uYEVJnvvY/EoJM5RpVjh2ZCs30VYA', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAABwAAAAAAAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAAlQL4UQAAAAbAAAABwAAAAAAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAwAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAcAAAAAAAAAACQUsYKOw/kj+JXXI5eosCY2LS+fgH0zFHZXnenMJ4wUAAAAAJUC+LUAAAAGwAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{CrkNXsTLvIXX/HTj3lC19gxuw2ceVliFBR1yTFhhvSpla0KGQ7dkumv9bmBFSZ772PxKCTOUaVY4dmQrN9FWAA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('4f9598206ab17cf27b5c3eb9e906d63ebee2626654112eabdd2bce7bf12cccf2', 28, 4, 'GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES', 115964116996, 100, 1, '2017-10-25 19:03:54.032439', '2017-10-25 19:03:54.032439', 120259100672, 'AAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAZAAAABsAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATCeMFAAAABAAd6MzHDjUdRtHozzDnD3jJA+uRDCar3PQtuH/43pnROzk1HkovJPQ1YyzcpOb/NeuU/LKNzseL0PJNasVX1lAQ==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAABwAAAAAAAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAAlQL4UQAAAAbAAAABwAAAAAAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAwAAAAACAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAcAAAAAAAAAACQUsYKOw/kj+JXXI5eosCY2LS+fgH0zFHZXnenMJ4wUAAAAAJUC+JwAAAAGwAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{Ad6MzHDjUdRtHozzDnD3jJA+uRDCar3PQtuH/43pnROzk1HkovJPQ1YyzcpOb/NeuU/LKNzseL0PJNasVX1lAQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('83201014880073f8eff6f21ae76e51c2c4faf533e550ecd3c2205b48a092960a', 28, 7, 'GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES', 115964116999, 100, 1, '2017-10-25 19:03:54.040049', '2017-10-25 19:03:54.040049', 120259112960, 'AAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAZAAAABsAAAAHAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAB8ndnLViBPKqPJAcSNhZzc2mH7fQ7RtzGyFA8mFkMTkAAAAAEAAAAAAAAAATCeMFAAAABAtYtlsqMReQo1UoU2GYjb3h52wEKvnouCSO6LQO1xm/ArhtQO/sX5q35St8BjaYWEiFnp+SQj2FZC89OswCldAw==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAABwAAAAAAAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAAlQL4UQAAAAbAAAABwAAAAEAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAwAAAAtleGFtcGxlLmNvbQACAAICAAAAAQAAAAB8ndnLViBPKqPJAcSNhZzc2mH7fQ7RtzGyFA8mFkMTkAAAAAEAAAAAAAAAAA==', 'AAAAAQAAAAEAAAAcAAAAAAAAAACQUsYKOw/kj+JXXI5eosCY2LS+fgH0zFHZXnenMJ4wUAAAAAJUC+FEAAAAGwAAAAcAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{tYtlsqMReQo1UoU2GYjb3h52wEKvnouCSO6LQO1xm/ArhtQO/sX5q35St8BjaYWEiFnp+SQj2FZC89OswCldAw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('69f64ae0f809b08996c1f394ee795001a40eee69adb675ab63bfd1932d3aafb2', 29, 1, 'GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES', 115964117000, 100, 1, '2017-10-25 19:03:54.046818', '2017-10-25 19:03:54.046818', 124554055680, 'AAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAZAAAABsAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATCeMFAAAABAi69qDHclVS9A8GAaqyk6oIxiMC2KXXEneFijfxH5VyLGIQZNAxOOcCPpIalU6P1pYRX3K4OlKHZ4hIdxJzD6BQ==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAAB0AAAAAAAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAAlQL4OAAAAAbAAAACAAAAAEAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAwAAAAtleGFtcGxlLmNvbQACAAICAAAAAQAAAAB8ndnLViBPKqPJAcSNhZzc2mH7fQ7RtzGyFA8mFkMTkAAAAAEAAAAAAAAAAA==', 'AAAAAgAAAAMAAAAcAAAAAAAAAACQUsYKOw/kj+JXXI5eosCY2LS+fgH0zFHZXnenMJ4wUAAAAAJUC+FEAAAAGwAAAAcAAAABAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAMAAAALZXhhbXBsZS5jb20AAgACAgAAAAEAAAAAfJ3Zy1YgTyqjyQHEjYWc3Nph+30O0bcxshQPJhZDE5AAAAABAAAAAAAAAAAAAAABAAAAHQAAAAAAAAAAkFLGCjsP5I/iV1yOXqLAmNi0vn4B9MxR2V53pzCeMFAAAAACVAvg4AAAABsAAAAIAAAAAQAAAAEAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcAAAADAAAAC2V4YW1wbGUuY29tAAIAAgIAAAABAAAAAHyd2ctWIE8qo8kBxI2FnNzaYft9DtG3MbIUDyYWQxOQAAAAAQAAAAAAAAAA', '{i69qDHclVS9A8GAaqyk6oIxiMC2KXXEneFijfxH5VyLGIQZNAxOOcCPpIalU6P1pYRX3K4OlKHZ4hIdxJzD6BQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('c3cd47a311e025446f72c50426b5b5444e5261431fc5760e8e57467c87cd49fc', 30, 1, 'GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES', 115964117001, 100, 1, '2017-10-25 19:03:54.059847', '2017-10-25 19:03:54.059847', 128849022976, 'AAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAZAAAABsAAAAJAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAB8ndnLViBPKqPJAcSNhZzc2mH7fQ7RtzGyFA8mFkMTkAAAAAEAAAAAAAAAATCeMFAAAABA7ZMKq80ucQSt+55q+6VQrG3Hrv6zHtOLwkfAxxsZdYPIuk7xZsgbyhOCVXjheOQ9ygAW1vtybdXG41AxSFRtAg==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAAB4AAAAAAAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAAlQL4HwAAAAbAAAACQAAAAEAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAwAAAAtleGFtcGxlLmNvbQACAAICAAAAAQAAAAB8ndnLViBPKqPJAcSNhZzc2mH7fQ7RtzGyFA8mFkMTkAAAAAEAAAAAAAAAAA==', 'AAAAAgAAAAMAAAAdAAAAAAAAAACQUsYKOw/kj+JXXI5eosCY2LS+fgH0zFHZXnenMJ4wUAAAAAJUC+DgAAAAGwAAAAgAAAABAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAMAAAALZXhhbXBsZS5jb20AAgACAgAAAAEAAAAAfJ3Zy1YgTyqjyQHEjYWc3Nph+30O0bcxshQPJhZDE5AAAAABAAAAAAAAAAAAAAABAAAAHgAAAAAAAAAAkFLGCjsP5I/iV1yOXqLAmNi0vn4B9MxR2V53pzCeMFAAAAACVAvgfAAAABsAAAAJAAAAAQAAAAEAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcAAAADAAAAC2V4YW1wbGUuY29tAAIAAgIAAAABAAAAAHyd2ctWIE8qo8kBxI2FnNzaYft9DtG3MbIUDyYWQxOQAAAAAQAAAAAAAAAA', '{7ZMKq80ucQSt+55q+6VQrG3Hrv6zHtOLwkfAxxsZdYPIuk7xZsgbyhOCVXjheOQ9ygAW1vtybdXG41AxSFRtAg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('299dc6631d585a55ae3602f660ec5b5a0088d24a14b344c72eccc2a62d9a8938', 31, 1, 'GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES', 115964117002, 100, 1, '2017-10-25 19:03:54.069005', '2017-10-25 19:03:54.069005', 133143990272, 'AAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAZAAAABsAAAAKAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAB8ndnLViBPKqPJAcSNhZzc2mH7fQ7RtzGyFA8mFkMTkAAAAAUAAAAAAAAAATCeMFAAAABA0wriernSr+5P2QCeon1uj5mrOLNTOrPYPPi5ricLug/nreEUhsgS/k3lA9JGpVbd+tacMEKmXKmFxHCEMjWPBg==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAAB8AAAAAAAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAAlQL4BgAAAAbAAAACgAAAAEAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAwAAAAtleGFtcGxlLmNvbQACAAICAAAAAQAAAAB8ndnLViBPKqPJAcSNhZzc2mH7fQ7RtzGyFA8mFkMTkAAAAAUAAAAAAAAAAA==', 'AAAAAgAAAAMAAAAeAAAAAAAAAACQUsYKOw/kj+JXXI5eosCY2LS+fgH0zFHZXnenMJ4wUAAAAAJUC+B8AAAAGwAAAAkAAAABAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAMAAAALZXhhbXBsZS5jb20AAgACAgAAAAEAAAAAfJ3Zy1YgTyqjyQHEjYWc3Nph+30O0bcxshQPJhZDE5AAAAABAAAAAAAAAAAAAAABAAAAHwAAAAAAAAAAkFLGCjsP5I/iV1yOXqLAmNi0vn4B9MxR2V53pzCeMFAAAAACVAvgGAAAABsAAAAKAAAAAQAAAAEAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcAAAADAAAAC2V4YW1wbGUuY29tAAIAAgIAAAABAAAAAHyd2ctWIE8qo8kBxI2FnNzaYft9DtG3MbIUDyYWQxOQAAAAAQAAAAAAAAAA', '{0wriernSr+5P2QCeon1uj5mrOLNTOrPYPPi5ricLug/nreEUhsgS/k3lA9JGpVbd+tacMEKmXKmFxHCEMjWPBg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('bb9d6654111fae501594400dc901c70d47489a67163d2a34f9b3e32a921a50dc', 32, 1, 'GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES', 115964117003, 100, 1, '2017-10-25 19:03:54.078609', '2017-10-25 19:03:54.078609', 137438957568, 'AAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAZAAAABsAAAALAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMJ4wUAAAAEAFytUxjxN4bnJMrEJkSprnES9iGpOxAsNOFYrTP/xtGVk/PZ2oThUW+/hLRIk+hYYEgF21Gf58N/abJKFpqlsI', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAACAAAAAAAAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAAlQL31AAAAAbAAAADAAAAAEAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAAAAAAtleGFtcGxlLmNvbQACAAICAAAAAQAAAAB8ndnLViBPKqPJAcSNhZzc2mH7fQ7RtzGyFA8mFkMTkAAAAAUAAAAAAAAAAA==', 'AAAAAgAAAAMAAAAfAAAAAAAAAACQUsYKOw/kj+JXXI5eosCY2LS+fgH0zFHZXnenMJ4wUAAAAAJUC+AYAAAAGwAAAAoAAAABAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAMAAAALZXhhbXBsZS5jb20AAgACAgAAAAEAAAAAfJ3Zy1YgTyqjyQHEjYWc3Nph+30O0bcxshQPJhZDE5AAAAAFAAAAAAAAAAAAAAABAAAAIAAAAAAAAAAAkFLGCjsP5I/iV1yOXqLAmNi0vn4B9MxR2V53pzCeMFAAAAACVAvftAAAABsAAAALAAAAAQAAAAEAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcAAAADAAAAC2V4YW1wbGUuY29tAAIAAgIAAAABAAAAAHyd2ctWIE8qo8kBxI2FnNzaYft9DtG3MbIUDyYWQxOQAAAABQAAAAAAAAAA', '{BcrVMY8TeG5yTKxCZEqa5xEvYhqTsQLDThWK0z/8bRlZPz2dqE4VFvv4S0SJPoWGBIBdtRn+fDf2myShaapbCA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('6b38cdd5c17df2013d5a5e211c4b32218b6be91025316b1aab28bc12316615d5', 32, 2, 'GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES', 115964117004, 100, 1, '2017-10-25 19:03:54.082617', '2017-10-25 19:03:54.082617', 137438961664, 'AAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAZAAAABsAAAAMAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAB8ndnLViBPKqPJAcSNhZzc2mH7fQ7RtzGyFA8mFkMTkAAAAAAAAAAAAAAAATCeMFAAAABAOb0qGWnk1WrSUXS6iQFocaIOY/BDmgG1zTmlPyg0boSid3jTBK3z9U8+IPGAOELNLgkQHtgGYFgFGMio1xY+BQ==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAACAAAAAAAAAAAJBSxgo7D+SP4ldcjl6iwJjYtL5+AfTMUdled6cwnjBQAAAAAlQL31AAAAAbAAAADAAAAAAAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAAAAAAtleGFtcGxlLmNvbQACAAICAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAgAAAAAAAAAACQUsYKOw/kj+JXXI5eosCY2LS+fgH0zFHZXnenMJ4wUAAAAAJUC99QAAAAGwAAAAwAAAABAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAMAAAALZXhhbXBsZS5jb20AAgACAgAAAAEAAAAAfJ3Zy1YgTyqjyQHEjYWc3Nph+30O0bcxshQPJhZDE5AAAAAFAAAAAAAAAAA=', '{Ob0qGWnk1WrSUXS6iQFocaIOY/BDmgG1zTmlPyg0boSid3jTBK3z9U8+IPGAOELNLgkQHtgGYFgFGMio1xY+BQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('6d78f17fafa2317d6af679e1e5420f351207ff61cdff21c600ea8f85155b3ea1', 33, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 15, 100, 1, '2017-10-25 19:03:54.089701', '2017-10-25 19:03:54.089701', 141733924864, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAPAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAkqTd6glQdzt87217G6IYc3g3BYxMgWGPpDfRPhy1ZbUAAAACVAvkAAAAAAAAAAABVvwF9wAAAEC+mgKIzZqflQIKIqWn9LrciuyEx7XPfXGUhvyQ3sIQBnGdOWhkOt57UU/75LtUy4recT+jrY2cHKZj33puue8F', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAACEAAAAAAAAAAJKk3eoJUHc7fO9texuiGHN4NwWMTIFhj6Q30T4ctWW1AAAAAlQL5AAAAAAhAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAACEAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2kMj/uiQAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAbAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtpMdC56IAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAhAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtpMdC54kAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{vpoCiM2an5UCCiKlp/S63IrshMe1z31xlIb8kN7CEAZxnTloZDree1FP++S7VMuK3nE/o62NnBymY996brnvBQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('a05daae230b1f743474e83ab6d4817df1f3f77661a7d815f7620cee2a9809480', 34, 1, 'GCJKJXPKBFIHOO3455WXWG5CDBZXQNYFRRGICYMPUQ35CPQ4WVS3KZLG', 141733920769, 100, 1, '2017-10-25 19:03:54.099629', '2017-10-25 19:03:54.099629', 146028892160, 'AAAAAJKk3eoJUHc7fO9texuiGHN4NwWMTIFhj6Q30T4ctWW1AAAAZAAAACEAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF93//////////AAAAAAAAAAEctWW1AAAAQBYUnV3I1O35EAyay0msjg3MzZfanCtvalKGG+94pe6RxgE/kCk2kTT9HXgXjbraq//Q/0vJ0AoCAXSeT18Ujgk=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAACIAAAABAAAAAJKk3eoJUHc7fO9texuiGHN4NwWMTIFhj6Q30T4ctWW1AAAAAVVTRAAAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAACIAAAAAAAAAAJKk3eoJUHc7fO9texuiGHN4NwWMTIFhj6Q30T4ctWW1AAAAAlQL45wAAAAhAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAhAAAAAAAAAACSpN3qCVB3O3zvbXsbohhzeDcFjEyBYY+kN9E+HLVltQAAAAJUC+QAAAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAiAAAAAAAAAACSpN3qCVB3O3zvbXsbohhzeDcFjEyBYY+kN9E+HLVltQAAAAJUC+OcAAAAIQAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{FhSdXcjU7fkQDJrLSayODczNl9qcK29qUoYb73il7pHGAT+QKTaRNP0deBeNutqr/9D/S8nQCgIBdJ5PXxSOCQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('4e2442fe2e8dd8c686570c9f537acb2f50153a9883f8d199b6f4701eb289b3a0', 35, 1, 'GCJKJXPKBFIHOO3455WXWG5CDBZXQNYFRRGICYMPUQ35CPQ4WVS3KZLG', 141733920770, 100, 1, '2017-10-25 19:03:54.107994', '2017-10-25 19:03:54.107995', 150323859456, 'AAAAAJKk3eoJUHc7fO9texuiGHN4NwWMTIFhj6Q30T4ctWW1AAAAZAAAACEAAAACAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAA7msoAAAAAAAAAAAEctWW1AAAAQNugq+B30pdbzvVVGz9RO3+DMeRdWqc/Xsd2NYdg6NBu7esvOdTWQ3nvoBEJyeGz8EE9zRQiSiqorwHlm+AGfwI=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAACIAAAABAAAAAJKk3eoJUHc7fO9texuiGHN4NwWMTIFhj6Q30T4ctWW1AAAAAVVTRAAAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAACMAAAABAAAAAJKk3eoJUHc7fO9texuiGHN4NwWMTIFhj6Q30T4ctWW1AAAAAVVTRAAAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcAAAAAAAAAAAAAAAA7msoAAAAAAQAAAAAAAAAA', 'AAAAAgAAAAMAAAAiAAAAAAAAAACSpN3qCVB3O3zvbXsbohhzeDcFjEyBYY+kN9E+HLVltQAAAAJUC+OcAAAAIQAAAAEAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAjAAAAAAAAAACSpN3qCVB3O3zvbXsbohhzeDcFjEyBYY+kN9E+HLVltQAAAAJUC+M4AAAAIQAAAAIAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{26Cr4HfSl1vO9VUbP1E7f4Mx5F1apz9ex3Y1h2Do0G7t6y851NZDee+gEQnJ4bPwQT3NFCJKKqivAeWb4AZ/Ag==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('44cb6c8ed4dbec542af1aad23001dd9d678cf19c8c461a653e762a7253eded82', 36, 1, 'GCJKJXPKBFIHOO3455WXWG5CDBZXQNYFRRGICYMPUQ35CPQ4WVS3KZLG', 141733920771, 100, 1, '2017-10-25 19:03:54.115533', '2017-10-25 19:03:54.115533', 154618826752, 'AAAAAJKk3eoJUHc7fO9texuiGHN4NwWMTIFhj6Q30T4ctWW1AAAAZAAAACEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAA7msoAAAAAAAAAAAEctWW1AAAAQO+eTIPXUZk+GAq7O6H8d1/WT5buo0apjLhGgtBeSyl37UV7LCpZfCn6DYVc7lQOVNWhBc7KDA7Ne83AR41kYAk=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAACMAAAABAAAAAJKk3eoJUHc7fO9texuiGHN4NwWMTIFhj6Q30T4ctWW1AAAAAVVTRAAAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcAAAAAAAAAAAAAAAA7msoAAAAAAQAAAAAAAAAAAAAAAQAAACQAAAABAAAAAJKk3eoJUHc7fO9texuiGHN4NwWMTIFhj6Q30T4ctWW1AAAAAVVTRAAAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcAAAAAAAAAAAAAAAA7msoAAAAAAQAAAAAAAAAA', 'AAAAAgAAAAMAAAAjAAAAAAAAAACSpN3qCVB3O3zvbXsbohhzeDcFjEyBYY+kN9E+HLVltQAAAAJUC+M4AAAAIQAAAAIAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAkAAAAAAAAAACSpN3qCVB3O3zvbXsbohhzeDcFjEyBYY+kN9E+HLVltQAAAAJUC+LUAAAAIQAAAAMAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{755Mg9dRmT4YCrs7ofx3X9ZPlu6jRqmMuEaC0F5LKXftRXssKll8KfoNhVzuVA5U1aEFzsoMDs17zcBHjWRgCQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('52388a98e4e36c17749a94374270cc65bdb7271cb51277f095aaa8f1ca9d322c', 37, 1, 'GCJKJXPKBFIHOO3455WXWG5CDBZXQNYFRRGICYMPUQ35CPQ4WVS3KZLG', 141733920772, 100, 1, '2017-10-25 19:03:54.121879', '2017-10-25 19:03:54.121879', 158913794048, 'AAAAAJKk3eoJUHc7fO9texuiGHN4NwWMTIFhj6Q30T4ctWW1AAAAZAAAACEAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAAAAAAAAAAEctWW1AAAAQM5SCoW10EJoKBBwwMu0Vw+f+bQ0GjQ9FO6w3l9Q/FIctm87248t9jXTbl0Rd4NgGcom0yoGxgcJiERwZGBMXQc=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAADAAAAAQAAACUAAAAAAAAAAJKk3eoJUHc7fO9texuiGHN4NwWMTIFhj6Q30T4ctWW1AAAAAlQL4nAAAAAhAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAwAAACQAAAABAAAAAJKk3eoJUHc7fO9texuiGHN4NwWMTIFhj6Q30T4ctWW1AAAAAVVTRAAAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcAAAAAAAAAAAAAAAA7msoAAAAAAQAAAAAAAAAAAAAAAgAAAAEAAAAAkqTd6glQdzt87217G6IYc3g3BYxMgWGPpDfRPhy1ZbUAAAABVVNEAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w==', 'AAAAAgAAAAMAAAAkAAAAAAAAAACSpN3qCVB3O3zvbXsbohhzeDcFjEyBYY+kN9E+HLVltQAAAAJUC+LUAAAAIQAAAAMAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAlAAAAAAAAAACSpN3qCVB3O3zvbXsbohhzeDcFjEyBYY+kN9E+HLVltQAAAAJUC+JwAAAAIQAAAAQAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{zlIKhbXQQmgoEHDAy7RXD5/5tDQaND0U7rDeX1D8Uhy2bzvbjy32NdNuXRF3g2AZyibTKgbGBwmIRHBkYExdBw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('afeb8080522eba71ca328225bbcf731029edcfa254c827c45be580bae95c7231', 38, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 16, 100, 1, '2017-10-25 19:03:54.128737', '2017-10-25 19:03:54.128737', 163208761344, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAQAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAq26sUclf95G3mAzqohcAxtpe+UiaovKwDpCv20t6bF8AAAACVAvkAAAAAAAAAAABVvwF9wAAAEDnzvNgEYB1u3BGTHFDlIWnk0GOq7BMpfcyewJRsJK9lT4HTMEwMQ2jSJyrWmB7xdBxHKaNMXQaAIx6CShLXpQH', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAACYAAAAAAAAAAKturFHJX/eRt5gM6qIXAMbaXvlImqLysA6Qr9tLemxfAAAAAlQL5AAAAAAmAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAACYAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2jnTz1VwAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAhAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtpDI/7okAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAmAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtpDI/7nAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{587zYBGAdbtwRkxxQ5SFp5NBjquwTKX3MnsCUbCSvZU+B0zBMDENo0icq1pge8XQcRymjTF0GgCMegkoS16UBw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('2354df802111418a999e31c2964d16b8efe8e492b7d74de54939825190e1041f', 38, 2, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 17, 100, 1, '2017-10-25 19:03:54.134233', '2017-10-25 19:03:54.134233', 163208765440, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAARAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA+SY4m6vkX+Y7FMkNv7RswsIkYNGXeZ4/YwEQNUpI8/gAAAACVAvkAAAAAAAAAAABVvwF9wAAAEDD6WvAYL1wilsd7zYDJt0iFO/lppQ6GJJn/A8UJl9jTjMNOjuQPBtA7fSxR5KT0BZLbtQy8qFlys0I6fTe/cwO', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAACYAAAAAAAAAAPkmOJur5F/mOxTJDb+0bMLCJGDRl3meP2MBEDVKSPP4AAAAAlQL5AAAAAAmAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAACYAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2jCDn8VwAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAmAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtpDI/7lcAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{w+lrwGC9cIpbHe82AybdIhTv5aaUOhiSZ/wPFCZfY04zDTo7kDwbQO30sUeSk9AWS27UMvKhZcrNCOn03v3MDg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('11705f94cd65d7b673a124a85ce368c80f8458ffaedff719304d8f849535b4e0', 39, 1, 'GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF', 163208757249, 100, 1, '2017-10-25 19:03:54.142816', '2017-10-25 19:03:54.142816', 167503728640, 'AAAAAPkmOJur5F/mOxTJDb+0bMLCJGDRl3meP2MBEDVKSPP4AAAAZAAAACYAAAABAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSkjz+AAAAECyjDa1e+jtXukTrHluO7x0Mx7Wj4mRoM4S5UAFmRV+2rVoxjMwqFJhtYnEAUV19+C5ycp5jOLLpWxrCeRKJQUG', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAACcAAAAAAAAAAPkmOJur5F/mOxTJDb+0bMLCJGDRl3meP2MBEDVKSPP4AAAAAlQL45wAAAAmAAAAAQAAAAAAAAAAAAAAAwAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAmAAAAAAAAAAD5Jjibq+Rf5jsUyQ2/tGzCwiRg0Zd5nj9jARA1Skjz+AAAAAJUC+QAAAAAJgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAnAAAAAAAAAAD5Jjibq+Rf5jsUyQ2/tGzCwiRg0Zd5nj9jARA1Skjz+AAAAAJUC+OcAAAAJgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{sow2tXvo7V7pE6x5bju8dDMe1o+JkaDOEuVABZkVftq1aMYzMKhSYbWJxAFFdffgucnKeYziy6VsawnkSiUFBg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('6fa467b53f5386d77ad35c2502ed2cd3dd8b460a5be22b6b2818b81bcd3ed2da', 40, 1, 'GCVW5LCRZFP7PENXTAGOVIQXADDNUXXZJCNKF4VQB2IK7W2LPJWF73UG', 163208757249, 100, 1, '2017-10-25 19:03:54.150925', '2017-10-25 19:03:54.150925', 171798695936, 'AAAAAKturFHJX/eRt5gM6qIXAMbaXvlImqLysA6Qr9tLemxfAAAAZAAAACYAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAD5Jjibq+Rf5jsUyQ2/tGzCwiRg0Zd5nj9jARA1Skjz+H//////////AAAAAAAAAAFLemxfAAAAQKN8LftAafeoAGmvpsEokqm47jAuqw4g1UWjmL0j6QPm1jxoalzDwDS3W+N2HOHdjSJlEQaTxGBfQKHhr6nNsAA=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAACgAAAABAAAAAKturFHJX/eRt5gM6qIXAMbaXvlImqLysA6Qr9tLemxfAAAAAVVTRAAAAAAA+SY4m6vkX+Y7FMkNv7RswsIkYNGXeZ4/YwEQNUpI8/gAAAAAAAAAAH//////////AAAAAAAAAAAAAAAAAAAAAQAAACgAAAAAAAAAAKturFHJX/eRt5gM6qIXAMbaXvlImqLysA6Qr9tLemxfAAAAAlQL4zgAAAAmAAAAAgAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAmAAAAAAAAAACrbqxRyV/3kbeYDOqiFwDG2l75SJqi8rAOkK/bS3psXwAAAAJUC+QAAAAAJgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAoAAAAAAAAAACrbqxRyV/3kbeYDOqiFwDG2l75SJqi8rAOkK/bS3psXwAAAAJUC+OcAAAAJgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{o3wt+0Bp96gAaa+mwSiSqbjuMC6rDiDVRaOYvSPpA+bWPGhqXMPANLdb43Yc4d2NImURBpPEYF9AoeGvqc2wAA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('0bcb67aa365446fd244fecff3a0c397f81f3a9b13428688965e776d447c0b1ea', 40, 2, 'GCVW5LCRZFP7PENXTAGOVIQXADDNUXXZJCNKF4VQB2IK7W2LPJWF73UG', 163208757250, 100, 1, '2017-10-25 19:03:54.154175', '2017-10-25 19:03:54.154175', 171798700032, 'AAAAAKturFHJX/eRt5gM6qIXAMbaXvlImqLysA6Qr9tLemxfAAAAZAAAACYAAAACAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABRVVSAAAAAAD5Jjibq+Rf5jsUyQ2/tGzCwiRg0Zd5nj9jARA1Skjz+H//////////AAAAAAAAAAFLemxfAAAAQMPVgYf+w09depDSxMcJnjVZHA2FlkBmhPmi0N66FuhAzTekWcCOMdCI0cUc+xJhywLXSMiKA6wP6K94NRlFlQE=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAACgAAAABAAAAAKturFHJX/eRt5gM6qIXAMbaXvlImqLysA6Qr9tLemxfAAAAAUVVUgAAAAAA+SY4m6vkX+Y7FMkNv7RswsIkYNGXeZ4/YwEQNUpI8/gAAAAAAAAAAH//////////AAAAAAAAAAAAAAAAAAAAAQAAACgAAAAAAAAAAKturFHJX/eRt5gM6qIXAMbaXvlImqLysA6Qr9tLemxfAAAAAlQL4zgAAAAmAAAAAgAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAoAAAAAAAAAACrbqxRyV/3kbeYDOqiFwDG2l75SJqi8rAOkK/bS3psXwAAAAJUC+M4AAAAJgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{w9WBh/7DT116kNLExwmeNVkcDYWWQGaE+aLQ3roW6EDNN6RZwI4x0IjRxRz7EmHLAtdIyIoDrA/or3g1GUWVAQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('6d2e30fd57492bf2e2b132e1bc91a548a369189bebf77eb2b3d829121a9d2c50', 41, 1, 'GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF', 163208757250, 100, 1, '2017-10-25 19:03:54.163145', '2017-10-25 19:03:54.163145', 176093663232, 'AAAAAPkmOJur5F/mOxTJDb+0bMLCJGDRl3meP2MBEDVKSPP4AAAAZAAAACYAAAACAAAAAAAAAAAAAAABAAAAAAAAAAcAAAAAq26sUclf95G3mAzqohcAxtpe+UiaovKwDpCv20t6bF8AAAABVVNEAAAAAAEAAAAAAAAAAUpI8/gAAABA6O2fe1gQBwoO0fMNNEUKH0QdVXVjEWbN5VL51DmRUedYMMXtbX5JKVSzla2kIGvWgls1dXuXHZY/IOlaK01rBQ==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAHAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAACgAAAABAAAAAKturFHJX/eRt5gM6qIXAMbaXvlImqLysA6Qr9tLemxfAAAAAVVTRAAAAAAA+SY4m6vkX+Y7FMkNv7RswsIkYNGXeZ4/YwEQNUpI8/gAAAAAAAAAAH//////////AAAAAAAAAAAAAAAAAAAAAQAAACkAAAABAAAAAKturFHJX/eRt5gM6qIXAMbaXvlImqLysA6Qr9tLemxfAAAAAVVTRAAAAAAA+SY4m6vkX+Y7FMkNv7RswsIkYNGXeZ4/YwEQNUpI8/gAAAAAAAAAAH//////////AAAAAQAAAAAAAAAA', 'AAAAAgAAAAMAAAAnAAAAAAAAAAD5Jjibq+Rf5jsUyQ2/tGzCwiRg0Zd5nj9jARA1Skjz+AAAAAJUC+OcAAAAJgAAAAEAAAAAAAAAAAAAAAMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAApAAAAAAAAAAD5Jjibq+Rf5jsUyQ2/tGzCwiRg0Zd5nj9jARA1Skjz+AAAAAJUC+M4AAAAJgAAAAIAAAAAAAAAAAAAAAMAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{6O2fe1gQBwoO0fMNNEUKH0QdVXVjEWbN5VL51DmRUedYMMXtbX5JKVSzla2kIGvWgls1dXuXHZY/IOlaK01rBQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('a832ff67085cb9eb6f1c4b740f6e033ba9b508af725fbf203469729a64a199ff', 41, 2, 'GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF', 163208757251, 100, 1, '2017-10-25 19:03:54.166342', '2017-10-25 19:03:54.166342', 176093667328, 'AAAAAPkmOJur5F/mOxTJDb+0bMLCJGDRl3meP2MBEDVKSPP4AAAAZAAAACYAAAADAAAAAAAAAAAAAAABAAAAAAAAAAcAAAAAq26sUclf95G3mAzqohcAxtpe+UiaovKwDpCv20t6bF8AAAABRVVSAAAAAAEAAAAAAAAAAUpI8/gAAABA1Qe8ngwANz4fLqYChwRjR5xng6cIqU5WBtjkZgF4ugVhi8J6kTpACvnvXso3IVym6Rfd6JdQW8QcLkFTX1MGCg==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAHAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAACgAAAABAAAAAKturFHJX/eRt5gM6qIXAMbaXvlImqLysA6Qr9tLemxfAAAAAUVVUgAAAAAA+SY4m6vkX+Y7FMkNv7RswsIkYNGXeZ4/YwEQNUpI8/gAAAAAAAAAAH//////////AAAAAAAAAAAAAAAAAAAAAQAAACkAAAABAAAAAKturFHJX/eRt5gM6qIXAMbaXvlImqLysA6Qr9tLemxfAAAAAUVVUgAAAAAA+SY4m6vkX+Y7FMkNv7RswsIkYNGXeZ4/YwEQNUpI8/gAAAAAAAAAAH//////////AAAAAQAAAAAAAAAA', 'AAAAAQAAAAEAAAApAAAAAAAAAAD5Jjibq+Rf5jsUyQ2/tGzCwiRg0Zd5nj9jARA1Skjz+AAAAAJUC+LUAAAAJgAAAAMAAAAAAAAAAAAAAAMAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{1Qe8ngwANz4fLqYChwRjR5xng6cIqU5WBtjkZgF4ugVhi8J6kTpACvnvXso3IVym6Rfd6JdQW8QcLkFTX1MGCg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('d67cfb271a889e7854ffd61b08eacde76d56e758466fc37a8eec2d3a40ef8b14', 42, 1, 'GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF', 163208757252, 100, 1, '2017-10-25 19:03:54.173363', '2017-10-25 19:03:54.173363', 180388630528, 'AAAAAPkmOJur5F/mOxTJDb+0bMLCJGDRl3meP2MBEDVKSPP4AAAAZAAAACYAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAcAAAAAq26sUclf95G3mAzqohcAxtpe+UiaovKwDpCv20t6bF8AAAABRVVSAAAAAAAAAAAAAAAAAUpI8/gAAABAEPKcQmATGpevrtlAcZnNI/GjfLLQEp9aODGGRFV+2C4UO8dU+UAMTkCSXQLD+xPaRQxzw93ScEok6GzYCtt7Bg==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAHAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAACkAAAABAAAAAKturFHJX/eRt5gM6qIXAMbaXvlImqLysA6Qr9tLemxfAAAAAUVVUgAAAAAA+SY4m6vkX+Y7FMkNv7RswsIkYNGXeZ4/YwEQNUpI8/gAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAACoAAAABAAAAAKturFHJX/eRt5gM6qIXAMbaXvlImqLysA6Qr9tLemxfAAAAAUVVUgAAAAAA+SY4m6vkX+Y7FMkNv7RswsIkYNGXeZ4/YwEQNUpI8/gAAAAAAAAAAH//////////AAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAApAAAAAAAAAAD5Jjibq+Rf5jsUyQ2/tGzCwiRg0Zd5nj9jARA1Skjz+AAAAAJUC+LUAAAAJgAAAAMAAAAAAAAAAAAAAAMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAqAAAAAAAAAAD5Jjibq+Rf5jsUyQ2/tGzCwiRg0Zd5nj9jARA1Skjz+AAAAAJUC+JwAAAAJgAAAAQAAAAAAAAAAAAAAAMAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{EPKcQmATGpevrtlAcZnNI/GjfLLQEp9aODGGRFV+2C4UO8dU+UAMTkCSXQLD+xPaRQxzw93ScEok6GzYCtt7Bg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('945b6171de747ab323b3cda52290933df39edd7061f6e260762663efc51bccb0', 43, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 18, 100, 1, '2017-10-25 19:03:54.180463', '2017-10-25 19:03:54.180463', 184683597824, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAASAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAjvuao1PL1U+CaCf7/+6+M/xUnEnUUdDiMKthL4rj4e8AAAACVAvkAAAAAAAAAAABVvwF9wAAAEBFbS2c5rrYNGslNVslTHH8j8x0ggew1eHHOUTNajMPy8GYn52RSwRncwwvv1ejEfA+g/mTXMpXrBO847C46KoA', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAACsAAAAAAAAAAI77mqNTy9VPgmgn+//uvjP8VJxJ1FHQ4jCrYS+K4+HvAAAAAlQL5AAAAAArAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAACsAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2iczcDPgAAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAmAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtowg5/FcAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAArAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtowg5/D4AAAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{RW0tnOa62DRrJTVbJUxx/I/MdIIHsNXhxzlEzWozD8vBmJ+dkUsEZ3MML79XoxHwPoP5k1zKV6wTvOOwuOiqAA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('e0773d07aba23d11e6a06b021682294be1f9f202a2926827022539662ce2c7fc', 44, 1, 'GCHPXGVDKPF5KT4CNAT7X77OXYZ7YVE4JHKFDUHCGCVWCL4K4PQ67KKZ', 184683593729, 100, 1, '2017-10-25 19:03:54.189106', '2017-10-25 19:03:54.189106', 188978565120, 'AAAAAI77mqNTy9VPgmgn+//uvjP8VJxJ1FHQ4jCrYS+K4+HvAAAAZAAAACsAAAABAAAAAAAAAAAAAAABAAAAAAAAAAgAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcAAAAAAAAAAYrj4e8AAABA3jJ7wBrRpsrcnqBQWjyzwvVz2v5UJ56G60IhgsaWQFSf+7om462KToc+HJ27aLVOQ83dGh1ivp+VIuREJq/SBw==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAIAAAAAAAAAAJUC+OcAAAAAA==', 'AAAAAAAAAAEAAAADAAAAAwAAACsAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2iczcDPgAAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAACwAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2jCDn8JQAAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAjvuao1PL1U+CaCf7/+6+M/xUnEnUUdDiMKthL4rj4e8=', 'AAAAAgAAAAMAAAArAAAAAAAAAACO+5qjU8vVT4JoJ/v/7r4z/FScSdRR0OIwq2EviuPh7wAAAAJUC+QAAAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAsAAAAAAAAAACO+5qjU8vVT4JoJ/v/7r4z/FScSdRR0OIwq2EviuPh7wAAAAJUC+OcAAAAKwAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{3jJ7wBrRpsrcnqBQWjyzwvVz2v5UJ56G60IhgsaWQFSf+7om462KToc+HJ27aLVOQ83dGh1ivp+VIuREJq/SBw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('5b42c77042f04bf716659a05e7ca3f4703af038a7da75b10b8538707c9ff172f', 45, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 19, 100, 1, '2017-10-25 19:03:54.197621', '2017-10-25 19:03:54.197621', 193273532416, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAATAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA493YBEKdTeVN3wUjgsf56+V7YgpjSdqDCWTMfjGCtycCxorwuxQAAAAAAAAAAAABVvwF9wAAAECGClRePcAExQ/WKroo3/3dfchP/yI8TRDrrjt/chZ83ULiTc54l5wcz1AkbLa6CAapdSGpUWXk5ksTqDXLn4AA', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAC0AAAAAAAAAAOPd2ARCnU3lTd8FI4LH+evle2IKY0nagwlkzH4xgrcnAsaK8LsUAAAAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAC0AAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3Cxorm2XT8DAAAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAsAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtowg5/CUAAAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAtAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtowg5/AwAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{hgpUXj3ABMUP1iq6KN/93X3IT/8iPE0Q6647f3IWfN1C4k3OeJecHM9QJGy2uggGqXUhqVFl5OZLE6g1y5+AAA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('d24f486bd722fd1875b843839e880bdeea324e25db706a26af5e4daa8c5071eb', 46, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 20, 100, 1, '2017-10-25 19:03:54.208662', '2017-10-25 19:03:54.208662', 197568499712, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAUAAAAAAAAAAAAAAABAAAAAAAAAAUAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVvwF9wAAAEBYI0TMQVWPvnC2KPbDph9Myz5UMuBRIYt2YQdtlPYC4UHamYnHsMghpIMfaS7MWdHuGY81+FBozOsS+/HGohQD', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAAC4AAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3Cxorm2XT78wAAAAAAAAAFAAAAAAAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAtAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wsaK5tl0/AwAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAuAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wsaK5tl0+/MAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{WCNEzEFVj75wtij2w6YfTMs+VDLgUSGLdmEHbZT2AuFB2pmJx7DIIaSDH2kuzFnR7hmPNfhQaMzrEvvxxqIUAw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('7207de5b75243e0b062c3833f587036b7e9f64453be49ff50f3f3fdc7516ec6b', 46, 2, 'GDR53WAEIKOU3ZKN34CSHAWH7HV6K63CBJRUTWUDBFSMY7RRQK3SPKOS', 193273528321, 100, 1, '2017-10-25 19:03:54.211669', '2017-10-25 19:03:54.211669', 197568503808, 'AAAAAOPd2ARCnU3lTd8FI4LH+evle2IKY0nagwlkzH4xgrcnAAAAZAAAAC0AAAABAAAAAAAAAAAAAAABAAAAAAAAAAUAAAABAAAAAOPd2ARCnU3lTd8FI4LH+evle2IKY0nagwlkzH4xgrcnAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMYK3JwAAAEAOkGOPTOBDSQ7nW2Zn+bls2PDUebk2/k3/gqHKQ8eYOFsD6nBeEvyMD858vo5BabjQwB9injABIM8esDh7bEkC', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAAC4AAAAAAAAAAOPd2ARCnU3lTd8FI4LH+evle2IKY0nagwlkzH4xgrcnAsaK8LsT/5wAAAAtAAAAAQAAAAAAAAABAAAAAOPd2ARCnU3lTd8FI4LH+evle2IKY0nagwlkzH4xgrcnAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAtAAAAAAAAAADj3dgEQp1N5U3fBSOCx/nr5XtiCmNJ2oMJZMx+MYK3JwLGivC7FAAAAAAALQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAuAAAAAAAAAADj3dgEQp1N5U3fBSOCx/nr5XtiCmNJ2oMJZMx+MYK3JwLGivC7E/+cAAAALQAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{DpBjj0zgQ0kO51tmZ/m5bNjw1Hm5Nv5N/4KhykPHmDhbA+pwXhL8jA/OfL6OQWm40MAfYp4wASDPHrA4e2xJAg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('ea93efd8c2f4e45c0318c69ec958623a0e4374f40d569eec124d43c8a54d6256', 47, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 21, 100, 1, '2017-10-25 19:03:54.218355', '2017-10-25 19:03:54.218355', 201863467008, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAVAAAAAAAAAAAAAAABAAAAAAAAAAkAAAAAAAAAAVb8BfcAAABABUHuXY+MTgW/wDv5+NDVh9fw4meszxeXO98HEQfgXVeCZ7eObCI2orSGUNA/SK6HV9/uTVSxIQQWIso1QoxHBQ==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAJAAAAAAAAAAIAAAAAYvwdC9CRsrYcDdZWNGsqaNfTR8bywsjubQRHAlb8BfcAAIrEjCYwXAAAAADj3dgEQp1N5U3fBSOCx/nr5XtiCmNJ2oMJZMx+MYK3JwAAIrEjfceLAAAAAA==', 'AAAAAAAAAAEAAAADAAAAAQAAAC8AAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3Cxq2X/H6H8QAAAAAAAAAFQAAAAAAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAwAAAC4AAAAAAAAAAOPd2ARCnU3lTd8FI4LH+evle2IKY0nagwlkzH4xgrcnAsaK8LsT/5wAAAAtAAAAAQAAAAAAAAABAAAAAOPd2ARCnU3lTd8FI4LH+evle2IKY0nagwlkzH4xgrcnAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAC8AAAAAAAAAAOPd2ARCnU3lTd8FI4LH+evle2IKY0nagwlkzH4xgrcnAsatod6RxycAAAAtAAAAAQAAAAAAAAABAAAAAOPd2ARCnU3lTd8FI4LH+evle2IKY0nagwlkzH4xgrcnAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAuAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wsaK5tl0+/MAAAAAAAAABQAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAvAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wsaK5tl0+9oAAAAAAAAABUAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{BUHuXY+MTgW/wDv5+NDVh9fw4meszxeXO98HEQfgXVeCZ7eObCI2orSGUNA/SK6HV9/uTVSxIQQWIso1QoxHBQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('eb8586c9176c4cf2e864b2521948a972db5274de24673669463e0c7824cee056', 48, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 22, 100, 1, '2017-10-25 19:03:54.227196', '2017-10-25 19:03:54.227196', 206158434304, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAWAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAMSExUMeJhd3PnPyXvdcbKtDZE3zllFbW4uwI1C6Z+xkAAAACVAvkAAAAAAAAAAABVvwF9wAAAECAMOn6G4jusgpfSoHwntHQkYIDxI/VnyH/qIi+bdMWzi1T6WlwnO+yITgm2+mOaWc6zVuxiLjHllzBeQ/xKvQN', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAADAAAAAAAAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAAAlQL5AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAADAAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3Cxq2XZ3uO2AAAAAAAAAAFgAAAAAAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAvAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wsatl/x+h/EAAAAAAAAABUAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAwAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wsatl/x+h9gAAAAAAAAABYAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{gDDp+huI7rIKX0qB8J7R0JGCA8SP1Z8h/6iIvm3TFs4tU+lpcJzvsiE4JtvpjmlnOs1bsYi4x5ZcwXkP8Sr0DQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('9fff61916716fb2550043fac968ac6c13802af5176a10fc29108fcfc445ef513', 49, 1, 'GAYSCMKQY6EYLXOPTT6JPPOXDMVNBWITPTSZIVWW4LWARVBOTH5RTLAD', 206158430209, 100, 1, '2017-10-25 19:03:54.24015', '2017-10-25 19:03:54.24015', 210453401600, 'AAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAAZAAAADAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAoAAAAFbmFtZTEAAAAAAAABAAAABDEyMzQAAAAAAAAAAS6Z+xkAAABAxKiHYYNLJiW3r5+kCJm8ucaoV7BcrEnQXFb3s1RyRyUbAkDlaCvE+RKwMZoNUfbkQUGrouyVKy1ZpUeccByqDg==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAKAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAADEAAAADAAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAABW5hbWUxAAAAAAAABDEyMzQAAAAAAAAAAAAAAAEAAAAxAAAAAAAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAJUC+LUAAAAMAAAAAMAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', 'AAAAAgAAAAMAAAAwAAAAAAAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAJUC+QAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAxAAAAAAAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAJUC+OcAAAAMAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{xKiHYYNLJiW3r5+kCJm8ucaoV7BcrEnQXFb3s1RyRyUbAkDlaCvE+RKwMZoNUfbkQUGrouyVKy1ZpUeccByqDg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('e4609180751e7702466a8845857df43e4d154ec84b6bad62ce507fe12f1daf99', 49, 2, 'GAYSCMKQY6EYLXOPTT6JPPOXDMVNBWITPTSZIVWW4LWARVBOTH5RTLAD', 206158430210, 100, 1, '2017-10-25 19:03:54.242743', '2017-10-25 19:03:54.242743', 210453405696, 'AAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAAZAAAADAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAoAAAAFbmFtZTIAAAAAAAABAAAABDU2NzgAAAAAAAAAAS6Z+xkAAABAjxgnTRBCa0n1efZocxpEjXeITQ5sEYTVd9fowuto2kPw5eFwgVnz6OrKJwCRt5L8ylmWiATXVI3Zyfi3yTKqBA==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAKAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAADEAAAADAAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAABW5hbWUyAAAAAAAABDU2NzgAAAAAAAAAAAAAAAEAAAAxAAAAAAAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAJUC+LUAAAAMAAAAAMAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', 'AAAAAQAAAAEAAAAxAAAAAAAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAJUC+M4AAAAMAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{jxgnTRBCa0n1efZocxpEjXeITQ5sEYTVd9fowuto2kPw5eFwgVnz6OrKJwCRt5L8ylmWiATXVI3Zyfi3yTKqBA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('48415cd0fda9bc9aeb1f0b419bfb2997f7a2aa1b1ef2e51a0602c61104fc23cc', 49, 3, 'GAYSCMKQY6EYLXOPTT6JPPOXDMVNBWITPTSZIVWW4LWARVBOTH5RTLAD', 206158430211, 100, 1, '2017-10-25 19:03:54.245162', '2017-10-25 19:03:54.245162', 210453409792, 'AAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAAZAAAADAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAoAAAAFbmFtZSAAAAAAAAABAAAAD2l0cyBnb3Qgc3BhY2VzIQAAAAAAAAAAAS6Z+xkAAABANmYginYhX+6VAsl1JumfxkB57y2LHraWDUkR+KDxWW8l5pfTViLxx7J85KrOV0qNCY4RfasgqxF0FC3ErYceCQ==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAKAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAADEAAAADAAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAABW5hbWUgAAAAAAAAD2l0cyBnb3Qgc3BhY2VzIQAAAAAAAAAAAAAAAAEAAAAxAAAAAAAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAJUC+LUAAAAMAAAAAMAAAADAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', 'AAAAAQAAAAEAAAAxAAAAAAAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAJUC+LUAAAAMAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{NmYginYhX+6VAsl1JumfxkB57y2LHraWDUkR+KDxWW8l5pfTViLxx7J85KrOV0qNCY4RfasgqxF0FC3ErYceCQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('616c609047ef8f9ca908a47a47aa4bb018449c569549ad2ca60590aab74267e8', 50, 1, 'GAYSCMKQY6EYLXOPTT6JPPOXDMVNBWITPTSZIVWW4LWARVBOTH5RTLAD', 206158430212, 100, 1, '2017-10-25 19:03:54.252773', '2017-10-25 19:03:54.252773', 214748368896, 'AAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAAZAAAADAAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAoAAAAFbmFtZTIAAAAAAAAAAAAAAAAAAAEumfsZAAAAQAYRZNPhJCTwjJgAJ9beE3ZO/H3kYJhYmV1pCmy7c8Zr2sKdKOmaLn4fmA5qaL+lQMKwOShtjwkZ8JHxPUd8GAk=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAKAAAAAAAAAAA=', 'AAAAAAAAAAEAAAADAAAAAQAAADIAAAAAAAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAAAlQL4nAAAAAwAAAABAAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAwAAADEAAAADAAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAABW5hbWUyAAAAAAAABDU2NzgAAAAAAAAAAAAAAAIAAAADAAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAABW5hbWUyAAAA', 'AAAAAgAAAAMAAAAxAAAAAAAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAJUC+LUAAAAMAAAAAMAAAADAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAyAAAAAAAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAJUC+JwAAAAMAAAAAQAAAADAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{BhFk0+EkJPCMmAAn1t4Tdk78feRgmFiZXWkKbLtzxmvawp0o6Zoufh+YDmpov6VAwrA5KG2PCRnwkfE9R3wYCQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('1d7833c4faab08e62609acf3714d1babe27621a2b328edf37465e99aaf389cab', 51, 1, 'GAYSCMKQY6EYLXOPTT6JPPOXDMVNBWITPTSZIVWW4LWARVBOTH5RTLAD', 206158430213, 100, 1, '2017-10-25 19:03:54.260607', '2017-10-25 19:03:54.260607', 219043336192, 'AAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAAZAAAADAAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAoAAAAFbmFtZTEAAAAAAAABAAAABDEyMzQAAAAAAAAAAS6Z+xkAAABAIW4yrFdk66fgDDir7YFATEd2llOubzx/iaJcM2wkF3ouqJQN+Aziy2rVtK5AoyphokiwsYXvHS6UF9MhdnUADQ==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAKAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAADEAAAADAAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAABW5hbWUxAAAAAAAABDEyMzQAAAAAAAAAAAAAAAEAAAAzAAAAAwAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAVuYW1lMQAAAAAAAAQxMjM0AAAAAAAAAAA=', 'AAAAAgAAAAMAAAAyAAAAAAAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAJUC+JwAAAAMAAAAAQAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAzAAAAAAAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAJUC+IMAAAAMAAAAAUAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{IW4yrFdk66fgDDir7YFATEd2llOubzx/iaJcM2wkF3ouqJQN+Aziy2rVtK5AoyphokiwsYXvHS6UF9MhdnUADQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('c8a28fb25d4784f37a7a078e1feef0eb30ca64e994734625ac4ea067cc621464', 52, 1, 'GAYSCMKQY6EYLXOPTT6JPPOXDMVNBWITPTSZIVWW4LWARVBOTH5RTLAD', 206158430214, 100, 1, '2017-10-25 19:03:54.267319', '2017-10-25 19:03:54.267319', 223338303488, 'AAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAAZAAAADAAAAAGAAAAAAAAAAAAAAABAAAAAAAAAAoAAAAFbmFtZTEAAAAAAAABAAAABDAwMDAAAAAAAAAAAS6Z+xkAAABA3ExJNH79wGSRYZerPP1zMYlepMsuhoJF5vHn2gCsHmDpWfgO8VKC3BRImO+ne9spUXlVHMjEuhOHoPhl1hrMCg==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAKAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAADMAAAADAAAAADEhMVDHiYXdz5z8l73XGyrQ2RN85ZRW1uLsCNQumfsZAAAABW5hbWUxAAAAAAAABDEyMzQAAAAAAAAAAAAAAAEAAAA0AAAAAwAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAVuYW1lMQAAAAAAAAQwMDAwAAAAAAAAAAA=', 'AAAAAgAAAAMAAAAzAAAAAAAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAJUC+IMAAAAMAAAAAUAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAA0AAAAAAAAAAAxITFQx4mF3c+c/Je91xsq0NkTfOWUVtbi7AjULpn7GQAAAAJUC+GoAAAAMAAAAAYAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{3ExJNH79wGSRYZerPP1zMYlepMsuhoJF5vHn2gCsHmDpWfgO8VKC3BRImO+ne9spUXlVHMjEuhOHoPhl1hrMCg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('df5f0e8b3b533dd9cda0ff7540bef3e9e19369060f8a4b0414b0e3c1b4315b1c', 53, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 23, 100, 1, '2017-10-25 19:03:54.274014', '2017-10-25 19:03:54.274014', 227633270784, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAXAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAABJeTmKR1qr+CZoIyjAfGxrIXZ/tI1VId2OfZkRowDz4AAAACVAvkAAAAAAAAAAABVvwF9wAAAEDyHwhW9GXQVXG1qibbeqSjxYzhv5IC08K2vSkxzYTwJykvQ8l0+e4M4h2guoK89s8HUfIqIOzDmoGsNTaLcYUG', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAADUAAAAAAAAAAASXk5ikdaq/gmaCMowHxsayF2f7SNVSHdjn2ZEaMA8+AAAAAlQL5AAAAAA1AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAADUAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3Cxq2W0niVvwAAAAAAAAAFwAAAAAAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAwAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wsatl2d7jtgAAAAAAAAABYAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAA1AAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wsatl2d7jr8AAAAAAAAABcAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{8h8IVvRl0FVxtaom23qko8WM4b+SAtPCtr0pMc2E8CcpL0PJdPnuDOIdoLqCvPbPB1HyKiDsw5qBrDU2i3GFBg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('85bbd2b558563518a38e9b749bd4b8ced60b9fbbb7a6b283e15ae98548302ac4', 54, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 24, 200, 2, '2017-10-25 19:03:54.28266', '2017-10-25 19:03:54.282661', 231928238080, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAyAAAAAAAAAAYAAAAAAAAAAAAAAACAAAAAAAAAAEAAAAABJeTmKR1qr+CZoIyjAfGxrIXZ/tI1VId2OfZkRowDz4AAAAAAAAAAAX14QAAAAABAAAAAASXk5ikdaq/gmaCMowHxsayF2f7SNVSHdjn2ZEaMA8+AAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAABfXhAAAAAAAAAAACVvwF9wAAAEDRRWwMrdLrhnl+FIP+71tTHB5rlzCsPVyGnR3scvID9NmIL3LZEo992uTvDI9QLys5bC2yRc3WYR0vFiZRs40IGjAPPgAAAEDXbXWVdzmN6NWBjYU5OvB33WTUaa2wDZX3RmFTZQQ/+7JvPdblMtNCxo8IOYePQg90RajV9rB+k8P+SEpPHCUH', 'AAAAAAAAAMgAAAAAAAAAAgAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAIAAAADAAAAAwAAADUAAAAAAAAAAASXk5ikdaq/gmaCMowHxsayF2f7SNVSHdjn2ZEaMA8+AAAAAlQL5AAAAAA1AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAADYAAAAAAAAAAASXk5ikdaq/gmaCMowHxsayF2f7SNVSHdjn2ZEaMA8+AAAAAloBxQAAAAA1AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAADYAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3Cxq2W0PsdTQAAAAAAAAAGAAAAAAAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAEAAAA2AAAAAAAAAAAEl5OYpHWqv4JmgjKMB8bGshdn+0jVUh3Y59mRGjAPPgAAAAJUC+QAAAAANQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAA2AAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wsatltJ4lY0AAAAAAAAABgAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', 'AAAAAgAAAAMAAAA1AAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wsatltJ4lb8AAAAAAAAABcAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAA2AAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wsatltJ4lY0AAAAAAAAABgAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{0UVsDK3S64Z5fhSD/u9bUxwea5cwrD1chp0d7HLyA/TZiC9y2RKPfdrk7wyPUC8rOWwtskXN1mEdLxYmUbONCA==,1211lXc5jejVgY2FOTrwd91k1GmtsA2V90ZhU2UEP/uybz3W5TLTQsaPCDmHj0IPdEWo1fawfpPD/khKTxwlBw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('5bbbedfb52efd1d5d973e22540044a27b8115772314293e3ba8b1fb12e63ca2e', 55, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 25, 100, 1, '2017-10-25 19:03:54.294127', '2017-10-25 19:03:54.294127', 236223205376, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAZAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAGlyOIRNnS6HDEkmGAE9gpZJUnLZNnYsjzt+pXVxR/9QAAAACVAvkAAAAAAAAAAABVvwF9wAAAEBCMMjX9xO3XKpQ6uS/U1BqdzRhSBYQ35ivmZxPBgfqQsTDma1BzOsq/bmHJ4P+fkYJRJUdZZazXJM2i4mF7nUH', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAADcAAAAAAAAAABpcjiETZ0uhwxJJhgBPYKWSVJy2TZ2LI87fqV1cUf/UAAAAAlQL5AAAAAA3AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAADcAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3Cxq2WPXWcdAAAAAAAAAAGQAAAAAAAAABAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAA2AAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wsatltJ4lY0AAAAAAAAABgAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAA3AAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wsatltJ4lXQAAAAAAAAABkAAAAAAAAAAQAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9wAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{QjDI1/cTt1yqUOrkv1NQanc0YUgWEN+Yr5mcTwYH6kLEw5mtQczrKv25hyeD/n5GCUSVHWWWs1yTNouJhe51Bw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('2a805712c6d10f9e74bb0ccf54ae92a2b4b1e586451fe8133a2433816f6b567c', 56, 1, 'GANFZDRBCNTUXIODCJEYMACPMCSZEVE4WZGZ3CZDZ3P2SXK4KH75IK6Y', 236223201281, 100, 1, '2017-10-25 19:03:54.304469', '2017-10-25 19:03:54.304469', 240518172672, 'AAAAABpcjiETZ0uhwxJJhgBPYKWSVJy2TZ2LI87fqV1cUf/UAAAAZAAAADcAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAGlyOIRNnS6HDEkmGAE9gpZJUnLZNnYsjzt+pXVxR/9QAAAAAAAAAAAX14QAAAAAAAAAAAVxR/9QAAABAK6pcXYMzAEmH08CZ1LWmvtNDKauhx+OImtP/Lk4hVTMJRVBOebVs5WEPj9iSrgGT0EswuDCZ2i5AEzwgGof9Ag==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAAA', 'AAAAAgAAAAMAAAA3AAAAAAAAAAAaXI4hE2dLocMSSYYAT2ClklSctk2diyPO36ldXFH/1AAAAAJUC+QAAAAANwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAA4AAAAAAAAAAAaXI4hE2dLocMSSYYAT2ClklSctk2diyPO36ldXFH/1AAAAAJUC+OcAAAANwAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{K6pcXYMzAEmH08CZ1LWmvtNDKauhx+OImtP/Lk4hVTMJRVBOebVs5WEPj9iSrgGT0EswuDCZ2i5AEzwgGof9Ag==}', 'none', NULL, NULL); + + +-- +-- Name: gorp_migrations gorp_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY gorp_migrations + ADD CONSTRAINT gorp_migrations_pkey PRIMARY KEY (id); + + +-- +-- Name: history_assets history_assets_asset_code_asset_type_asset_issuer_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_asset_code_asset_type_asset_issuer_key UNIQUE (asset_code, asset_type, asset_issuer); + + +-- +-- Name: history_assets history_assets_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_pkey PRIMARY KEY (id); + + +-- +-- Name: history_operation_participants history_operation_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants + ADD CONSTRAINT history_operation_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: history_transaction_participants history_transaction_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants + ADD CONSTRAINT history_transaction_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: asset_by_issuer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX asset_by_issuer ON history_assets USING btree (asset_issuer); + + +-- +-- Name: by_account; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_account ON history_transactions USING btree (account, account_sequence); + + +-- +-- Name: by_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_hash ON history_transactions USING btree (transaction_hash); + + +-- +-- Name: by_ledger; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_ledger ON history_transactions USING btree (ledger_sequence, application_order); + + +-- +-- Name: hist_e_by_order; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_by_order ON history_effects USING btree (history_operation_id, "order"); + + +-- +-- Name: hist_e_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_id ON history_effects USING btree (history_account_id, history_operation_id, "order"); + + +-- +-- Name: hist_op_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_op_p_id ON history_operation_participants USING btree (history_account_id, history_operation_id); + + +-- +-- Name: hist_tx_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_tx_p_id ON history_transaction_participants USING btree (history_account_id, history_transaction_id); + + +-- +-- Name: hop_by_hoid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX hop_by_hoid ON history_operation_participants USING btree (history_operation_id); + + +-- +-- Name: hs_ledger_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_ledger_by_id ON history_ledgers USING btree (id); + + +-- +-- Name: hs_transaction_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_transaction_by_id ON history_transactions USING btree (id); + + +-- +-- Name: htp_by_htid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htp_by_htid ON history_transaction_participants USING btree (history_transaction_id); + + +-- +-- Name: htrd_by_offer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_by_offer ON history_trades USING btree (offer_id); + + +-- +-- Name: htrd_counter_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_counter_lookup ON history_trades USING btree (counter_asset_id); + + +-- +-- Name: htrd_pair_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_pair_time_lookup ON history_trades USING btree (base_asset_id, counter_asset_id, ledger_closed_at); + + +-- +-- Name: htrd_pid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX htrd_pid ON history_trades USING btree (history_operation_id, "order"); + + +-- +-- Name: htrd_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_time_lookup ON history_trades USING btree (ledger_closed_at); + + +-- +-- Name: index_history_accounts_on_address; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_address ON history_accounts USING btree (address); + + +-- +-- Name: index_history_accounts_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_id ON history_accounts USING btree (id); + + +-- +-- Name: index_history_effects_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_effects_on_type ON history_effects USING btree (type); + + +-- +-- Name: index_history_ledgers_on_closed_at; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_closed_at ON history_ledgers USING btree (closed_at); + + +-- +-- Name: index_history_ledgers_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_id ON history_ledgers USING btree (id); + + +-- +-- Name: index_history_ledgers_on_importer_version; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_importer_version ON history_ledgers USING btree (importer_version); + + +-- +-- Name: index_history_ledgers_on_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_ledger_hash ON history_ledgers USING btree (ledger_hash); + + +-- +-- Name: index_history_ledgers_on_previous_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_previous_ledger_hash ON history_ledgers USING btree (previous_ledger_hash); + + +-- +-- Name: index_history_ledgers_on_sequence; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_sequence ON history_ledgers USING btree (sequence); + + +-- +-- Name: index_history_operations_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_operations_on_id ON history_operations USING btree (id); + + +-- +-- Name: index_history_operations_on_transaction_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_transaction_id ON history_operations USING btree (transaction_id); + + +-- +-- Name: index_history_operations_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_type ON history_operations USING btree (type); + + +-- +-- Name: index_history_transactions_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_transactions_on_id ON history_transactions USING btree (id); + + +-- +-- Name: trade_effects_by_order_book; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX trade_effects_by_order_book ON history_effects USING btree (((details ->> 'sold_asset_type'::text)), ((details ->> 'sold_asset_code'::text)), ((details ->> 'sold_asset_issuer'::text)), ((details ->> 'bought_asset_type'::text)), ((details ->> 'bought_asset_code'::text)), ((details ->> 'bought_asset_issuer'::text))) WHERE (type = 33); + + +-- +-- Name: history_trades history_trades_base_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_account_id_fkey FOREIGN KEY (base_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_base_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_asset_id_fkey FOREIGN KEY (base_asset_id) REFERENCES history_assets(id); + + +-- +-- Name: history_trades history_trades_counter_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_account_id_fkey FOREIGN KEY (counter_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_counter_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_asset_id_fkey FOREIGN KEY (counter_asset_id) REFERENCES history_assets(id); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/kahuna.rb b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/kahuna.rb new file mode 100644 index 0000000..ef9f195 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/kahuna.rb @@ -0,0 +1,359 @@ +# This is the big kahuna test scenario. It aims to comprehensively use +# stellar's features, exercising each feature and option at least once. +# +# As new features are added to stellar, this scenario will get updated to +# exercise those new features. This scenario is used during the horizon +# ingestion tests. +# +use_manual_close +KP = Stellar::KeyPair +close_ledger #2 + +## Transaction exercises + +# time bounds + # Secret seed: SBQGG7PY4JZQT6F2MBXDDI4VNDKZYG2Y5TJLKNG7AG6ETNNTJT6MCBOF + # Public: GAXI33UCLQTCKM2NMRBS7XYBR535LLEVAHL5YBN4FTCB4HZHT7ZA5CVK + account :time_bounds, KP.from_seed("SBQGG7PY4JZQT6F2MBXDDI4VNDKZYG2Y5TJLKNG7AG6ETNNTJT6MCBOF") + create_account :time_bounds do |env| + env.tx.time_bounds = Stellar::TimeBounds.new(min_time: 100, max_time: Time.parse("2020-01-01").to_i) + env.signatures = [env.tx.sign_decorated(get_account :master)] + end + + close_ledger #3 + +# multisig + # Secret seed: SCUNXR4FVJGNH4CZBA5K3IIK264WBH7FURTLDMOT3FGWNZKOZCPBW3GS + # Public: GDXFAGJCSCI4CK2YHK6YRLA6TKEXFRX7BMGVMQOBMLIEUJRJ5YQNLMIB + account :multisig, KP.from_seed("SCUNXR4FVJGNH4CZBA5K3IIK264WBH7FURTLDMOT3FGWNZKOZCPBW3GS") + # Secret seed: SBYRIKN5UMKMLVMVJOV2TC2FI3VIU572W4V5KIKR7EDNNORPBIW2RO3I + # Public: GD3E7HKMRNT6HGBGHBT6I6JE4N2S4W5KZ246TGJ4KQSXJ2P4BXCUPQMP + multisig_2 = KP.from_seed("SBYRIKN5UMKMLVMVJOV2TC2FI3VIU572W4V5KIKR7EDNNORPBIW2RO3I") + + create_account :multisig + close_ledger #4 + + set_master_signer_weight :multisig, 1 + add_signer :multisig, multisig_2, 1 + set_thresholds :multisig, low: 2, medium: 2, high: 2 + + close_ledger #5 + + set_master_signer_weight :multisig, 2 do |env| + env.signatures << env.tx.sign_decorated(multisig_2) + end + + close_ledger #6 + +# memo + # Secret seed: SACUGRIIBI3WTZTVYZNS7KM4JSJQJKUE2AQ4GDE3MEZRAT5QEJ76YWFE + # Public: GA46VRKBCLI2X6DXLX7AIEVRFLH3UA7XBE3NGNP6O74HQ5LXHMGTV2JB + account :memo, KP.from_seed("SACUGRIIBI3WTZTVYZNS7KM4JSJQJKUE2AQ4GDE3MEZRAT5QEJ76YWFE") + create_account :memo + close_ledger #7 + + payment :memo, :master, [:native, "1.0"], memo: [:id, 123] + payment :memo, :master, [:native, "1.0"], memo: [:text, "hello"] + payment :memo, :master, [:native, "1.0"], memo: [:hash, "\x01" * 32] + payment :memo, :master, [:native, "1.0"], memo: [:return, "\x02" * 32] + close_ledger #8 + +# multiop + # Secret seed: SD7MLW2LH2PJOU5ZS2AVOZ5OWTH47MXYHOY6JSTNJU4RORU5RLNUTM7V + # Public: GAG52TW6QAB6TGNMOTL32Y4M3UQQLNNNHPEHYAIYRP6SFF6ZAVRF5ZQY + account :multiop, KP.from_seed("SD7MLW2LH2PJOU5ZS2AVOZ5OWTH47MXYHOY6JSTNJU4RORU5RLNUTM7V") + create_account :multiop + close_ledger #9 + + payment :multiop, :master, [:native, "10.00"] do |env| + env.tx.operations = env.tx.operations * 2 + env.tx.fee = 200 + env.signatures = [env.tx.sign_decorated(get_account :multiop)] + end + + close_ledger #10 + +## Operation exercises + +# create account + # Secret seed: SDM2YMHCCJWEOSDA26XV7OAKP4DPS5MZXBM7RHUR5N7XMKVDOMCQDINF + # Public: GDCVTBGSEEU7KLXUMHMSXBALXJ2T4I2KOPXW2S5TRLKDRIAXD5UDHAYO + account :first_create, KP.from_seed("SDM2YMHCCJWEOSDA26XV7OAKP4DPS5MZXBM7RHUR5N7XMKVDOMCQDINF") + # Secret seed: SCHWJBPUXWXYXQ5GCTDSGZUQWNRX7IO5DDD3ULPTR5JQPK6AG7YOKMFF + # Public: GCB7FPYGLL6RJ37HKRAYW5TAWMFBGGFGM4IM6ERBCZXI2BZ4OOOX2UAY + account :second_create, KP.from_seed("SCHWJBPUXWXYXQ5GCTDSGZUQWNRX7IO5DDD3ULPTR5JQPK6AG7YOKMFF") + + # default create from root account + create_account :first_create + close_ledger #11 + + # create with custom starting balance + create_account :second_create, :first_create, "50.00" + + close_ledger #12 + +# payment + # Secret seed: SCYYD7ZVS4UNOOIEQA2W77ZEXLOVTGQXA3Z6WCP3KD7YLMT3GFTTTMMO + # Public: GCHC4D2CS45CJRNN4QAHT2LFZAJIU5PA7H53K3VOP6WEJ6XWHNSNZKQG + account :payer, KP.from_seed("SCYYD7ZVS4UNOOIEQA2W77ZEXLOVTGQXA3Z6WCP3KD7YLMT3GFTTTMMO") + # Secret seed: SAZRXWWS6BZ5G7TTW22CXDPJQC2PHYVDBQJBDADS4MHN4NRJQYPW7JFU + # Public: GANZGPKY5WSHWG5YOZMNG52GCK5SCJ4YGUWMJJVGZSK2FP4BI2JIJN2C + account :payee, KP.from_seed("SAZRXWWS6BZ5G7TTW22CXDPJQC2PHYVDBQJBDADS4MHN4NRJQYPW7JFU") + + create_account :payer + create_account :payee + close_ledger #13 + + # native payment + payment :payer, :payee, [:native, "10.00"] + + # non-native payment + trust :payee, :payer, "USD" + close_ledger #14 + payment :payer, :payee, ["USD", :payer, "10.00"] + + close_ledger #15 + +# path payment + + # Secret seed: SBVM6Q7LG23HQGK6P56RY4UMI24DB6DSYPH6QSBUMD7FM3YOAO4JTZOE + # Public: GDRW375MAYR46ODGF2WGANQC2RRZL7O246DYHHCGWTV2RE7IHE2QUQLD + account :path_payer, KP.from_seed("SBVM6Q7LG23HQGK6P56RY4UMI24DB6DSYPH6QSBUMD7FM3YOAO4JTZOE") + # Secret seed: SCKTG6NCSP5JMZBXCI7UQUDB2X3UOFIKDHB4Z3RZ7ZP4UOIHBGEU6VDA + # Public: GACAR2AEYEKITE2LKI5RMXF5MIVZ6Q7XILROGDT22O7JX4DSWFS7FDDP + account :path_payee, KP.from_seed("SCKTG6NCSP5JMZBXCI7UQUDB2X3UOFIKDHB4Z3RZ7ZP4UOIHBGEU6VDA") + # Secret seed: SB6E22ZX7QOUNZCINQGNXCFQXZNSLU3WTUIWDRFNXNNMYLIWQLX2IIMB + # Public: GAXMF43TGZHW3QN3REOUA2U5PW5BTARXGGYJ3JIFHW3YT6QRKRL3CPPU + account :path_gateway, KP.from_seed("SB6E22ZX7QOUNZCINQGNXCFQXZNSLU3WTUIWDRFNXNNMYLIWQLX2IIMB") + + create_account :path_payer + create_account :path_payee + create_account :path_gateway + close_ledger #16 + + trust :path_payer, :path_gateway, "USD" + trust :path_payee, :path_gateway, "EUR" + close_ledger #17 + + payment :path_gateway, :path_payer, ["USD", :path_gateway, "100.00"] + offer :path_gateway, {buy:["USD", :path_gateway], with: :native}, "200.0", "2.0" + offer :path_gateway, {sell:["EUR", :path_gateway], for: :native}, "300.0", "1.0" + close_ledger #18 + + payment :path_payer, :path_payee, + ["EUR", :path_gateway, "200.0"], + with: ["USD", :path_gateway, "100.0"], + path:[:native] + close_ledger #19 + + payment :path_payer, :path_payee, + ["EUR", :path_gateway, "100.0"], + with: [:native, "100.0"], + path:[] + close_ledger #20 + +# manage offer + + # Secret seed: SDK24P4CD2ILEMNEDAWEZIJS6TZYTQQH7VQRPNVXXIJVYDI7IBUSUG2K + # Public: GBOK7BOUSOWPHBANBYM6MIRYZJIDIPUYJPXHTHADF75UEVIVYWHHONQC + account :manage_trader, KP.from_seed("SDK24P4CD2ILEMNEDAWEZIJS6TZYTQQH7VQRPNVXXIJVYDI7IBUSUG2K") + # Secret seed: SCPIDWDRQCS2CNEXDQBJ7WLXJKG2D3WMPWZ74YXDHGBKX2BZZL625UE7 + # Public: GB2QIYT2IAUFMRXKLSLLPRECC6OCOGJMADSPTRK7TGNT2SFR2YGWDARD + account :manage_gateway, KP.from_seed("SCPIDWDRQCS2CNEXDQBJ7WLXJKG2D3WMPWZ74YXDHGBKX2BZZL625UE7") + create_account :manage_trader + create_account :manage_gateway + close_ledger #21 + + trust :manage_trader, :manage_gateway, "USD" + close_ledger #22 + + # make offer + offer :manage_trader, {buy:["USD", :manage_gateway], with: :native}, "20.0", "1.0" + close_ledger #23 + + # offer that consumes another + offer :manage_gateway, {sell:["USD", :manage_gateway], for: :native}, "30.0", "1.0" + close_ledger #24 + +# create passive offer + + # Secret seed: SDLEIPR3JYEPVGISRN7WK5NRK667Q3HHXUYVBSSIIV46AHQ7QOEOP7XY + # Public: GB6GN3LJUW6JYR7EDOJ47VBH7D45M4JWHXGK6LHJRAEI5JBSN2DBQY7Q + account :passive_trader, KP.from_seed("SDLEIPR3JYEPVGISRN7WK5NRK667Q3HHXUYVBSSIIV46AHQ7QOEOP7XY") + create_account :passive_trader + close_ledger #25 + + passive_offer :passive_trader, {sell:["USD", :passive_trader], for: :native}, "200.0", "1.0" + passive_offer :passive_trader, {buy:["USD", :passive_trader], with: :native}, "200.0", "1.0" + close_ledger #26 + + +# set options + # Secret seed: SDTS7HKJ4TON3G66U4PN2P6QPHMCFYDQHXDZ5BPCZSZQ62OGZDGPO3TX + # Public: GCIFFRQKHMH6JD7CK5OI4XVCYCMNRNF6PYA7JTCR3FPHPJZQTYYFB5ES + account :optioneer, KP.from_seed("SDTS7HKJ4TON3G66U4PN2P6QPHMCFYDQHXDZ5BPCZSZQ62OGZDGPO3TX") + # Secret seed: SBLKCWLFDZUF2F7WK43DZFPBHXA3N33LCNJ2U7UDSWG6NIUVV35TTLIY + # Public: GB6J3WOLKYQE6KVDZEA4JDMFTTONUYP3PUHNDNZRWIKA6JQWIMJZATFE + option_kp = KP.from_seed("SBLKCWLFDZUF2F7WK43DZFPBHXA3N33LCNJ2U7UDSWG6NIUVV35TTLIY") + + create_account :optioneer + close_ledger #27 + + set_inflation_dest :optioneer, :master + set_flags :optioneer, [:auth_required_flag] + set_flags :optioneer, [:auth_revocable_flag] + set_master_signer_weight :optioneer, 2 + set_thresholds :optioneer, low: 0, medium: 2, high: 2 + set_home_domain :optioneer, "example.com" + add_signer :optioneer, option_kp, 1 + close_ledger #28 + + # no-op change of master weight + set_master_signer_weight :optioneer, 2 + close_ledger #29 + + # no-op change of weight + add_signer :optioneer, option_kp, 1 + close_ledger #30 + + # change weight + add_signer :optioneer, option_kp, 5 + close_ledger #31 + + clear_flags :optioneer, [:auth_required_flag, :auth_revocable_flag] + remove_signer :optioneer, option_kp + close_ledger #32 + + +# change trust + # Secret seed: SCCNDKYXPFSHP3IPOQ2DGNJ6TKJY5KPRMB4JDMLISICHBMPMBF42ZEQU + # Public: GCJKJXPKBFIHOO3455WXWG5CDBZXQNYFRRGICYMPUQ35CPQ4WVS3KZLG + account :change_trustor, KP.from_seed("SCCNDKYXPFSHP3IPOQ2DGNJ6TKJY5KPRMB4JDMLISICHBMPMBF42ZEQU") + create_account :change_trustor + close_ledger #33 + + + trust :change_trustor, :master, "USD" + close_ledger #34 + + change_trust :change_trustor, :master, "USD", 100 + close_ledger #35 + + # change trust operation that doesn't change limit + change_trust :change_trustor, :master, "USD", 100 + close_ledger #36 + + change_trust :change_trustor, :master, "USD", 0 + close_ledger #37 + + +# allow trust + + # Secret seed: SCSV7463UPUPU5T2WJVT7TUK3V3IC4AMQTR6QSRAP2J2XS37JSEDY2J4 + # Public: GCVW5LCRZFP7PENXTAGOVIQXADDNUXXZJCNKF4VQB2IK7W2LPJWF73UG + account :allow_trustor, KP.from_seed("SCSV7463UPUPU5T2WJVT7TUK3V3IC4AMQTR6QSRAP2J2XS37JSEDY2J4") + # Secret seed: SAJTZHT2P73SI3U7VPYZTXVWRXKWUPTW2Q4GDUT56NTJ5PXAYUYNVQ3Q + # Public: GD4SMOE3VPSF7ZR3CTEQ3P5UNTBMEJDA2GLXTHR7MMARANKKJDZ7RPGF + account :allow_trustee, KP.from_seed("SAJTZHT2P73SI3U7VPYZTXVWRXKWUPTW2Q4GDUT56NTJ5PXAYUYNVQ3Q") + create_account :allow_trustor + create_account :allow_trustee + close_ledger #38 + + set_flags :allow_trustee, [:auth_required_flag, :auth_revocable_flag] + close_ledger #39 + + # start trust + trust :allow_trustor, :allow_trustee, "USD" + trust :allow_trustor, :allow_trustee, "EUR" + close_ledger #40 + + # allow trust + allow_trust :allow_trustee, :allow_trustor, "USD" + allow_trust :allow_trustee, :allow_trustor, "EUR" + close_ledger #41 + + # revoke trust + allow_trust :allow_trustee, :allow_trustor, "EUR", false + close_ledger #42 + +# account merge + # Secret seed: SCCLMTKRVHN2GSPJ7IP3VXI2NATH6QQTE5ZDMJCIZYWMZESSF5RKKBHT + # Public: GCHPXGVDKPF5KT4CNAT7X77OXYZ7YVE4JHKFDUHCGCVWCL4K4PQ67KKZ + account :merger, KP.from_seed("SCCLMTKRVHN2GSPJ7IP3VXI2NATH6QQTE5ZDMJCIZYWMZESSF5RKKBHT") + create_account :merger + close_ledger #43 + + merge_account :merger, :master + close_ledger #44 + +# inflation with payouts +# Secret seed: SBLDQ4ZOUCR4ZOIS4VHMSK5CZTZ7EXIPBNM2LP2HQPMW4T2F5EBTP4MF +# Public: GDR53WAEIKOU3ZKN34CSHAWH7HV6K63CBJRUTWUDBFSMY7RRQK3SPKOS +account :inflatee, KP.from_seed("SBLDQ4ZOUCR4ZOIS4VHMSK5CZTZ7EXIPBNM2LP2HQPMW4T2F5EBTP4MF") + +create_account :inflatee, :master, "20000000000.0" +close_ledger #45 + +set_inflation_dest :master, :master +set_inflation_dest :inflatee, :inflatee +close_ledger #46 + +inflation +close_ledger #47 + + +# manage_data + # Secret seed: SCHZL45S64JBNP7V6K7IM35PM7MFJ3REWRVMDRSJIH63JIYSW44VUOLN + # Public: GAYSCMKQY6EYLXOPTT6JPPOXDMVNBWITPTSZIVWW4LWARVBOTH5RTLAD + account :dataman, KP.from_seed("SCHZL45S64JBNP7V6K7IM35PM7MFJ3REWRVMDRSJIH63JIYSW44VUOLN") + create_account :dataman + close_ledger #48 + + set_data :dataman, "name1", "1234" + set_data :dataman, "name2", "5678" + set_data :dataman, "name ", "its got spaces!" + close_ledger #49 + + clear_data :dataman, "name2" + close_ledger #50 + + # no-op change + set_data :dataman, "name1", "1234" + close_ledger #51 + + set_data :dataman, "name1", "0000" + close_ledger #52 + +# different source account + # Secret seed: SAKHJAR6DZPSQMKR5EFGQBWH4RZYUCLXBXA3MMJ5PK7YWV2LKVWEQMYA + # Public: GACJPE4YUR22VP4CM2BDFDAHY3DLEF3H7NENKUQ53DT5TEI2GAHT5N4X + account :different_source, KP.from_seed("SAKHJAR6DZPSQMKR5EFGQBWH4RZYUCLXBXA3MMJ5PK7YWV2LKVWEQMYA") + create_account :different_source + close_ledger #53 + + payment :master, :different_source, [:native, "10.00"] do |env| + newop = Stellar::Operation.from_xdr env.tx.operations[0].to_xdr + + newop.source_account = env.tx.operations[0].body.value.destination + newop.body.value.destination = env.tx.source_account + + env.tx.operations << newop + env.tx.fee = 200 + env.signatures = [ + env.tx.sign_decorated(get_account :master), + env.tx.sign_decorated(get_account :different_source), + ] + end + close_ledger #54 + +# self-pay + # Secret seed: SAN5MUUVD2B3WJPIFDT7FQRLGNTD7LYFT7S7ULOKYBFC6ZUFIOSC2YRP + # Public: GANFZDRBCNTUXIODCJEYMACPMCSZEVE4WZGZ3CZDZ3P2SXK4KH75IK6Y + + account :selfpay, KP.from_seed("SAN5MUUVD2B3WJPIFDT7FQRLGNTD7LYFT7S7ULOKYBFC6ZUFIOSC2YRP") + create_account :selfpay + close_ledger + + payment :selfpay, :selfpay, [:native, "10.0"] + close_ledger + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/main.go new file mode 100644 index 0000000..2ff37c2 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/main.go @@ -0,0 +1,29 @@ +package scenarios + +import ( + "bytes" + "log" + "os/exec" +) + +//go:generate go-bindata -ignore (go|rb)$ -pkg scenarios . + +// Load executes the sql script at `path` on postgres database at `url` +func Load(url string, path string) { + sql, err := Asset(path) + + if err != nil { + log.Panic(err) + } + + reader := bytes.NewReader(sql) + cmd := exec.Command("psql", url) + cmd.Stdin = reader + + err = cmd.Run() + + if err != nil { + log.Panic(err) + } + +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/non_native_payment-core.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/non_native_payment-core.sql new file mode 100644 index 0000000..09bcc53 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/non_native_payment-core.sql @@ -0,0 +1,705 @@ +running recipe +recipe finished, closing ledger +ledger closed +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; +SET row_security = off; + +SET search_path = public, pg_catalog; + +DROP INDEX IF EXISTS public.signersaccount; +DROP INDEX IF EXISTS public.sellingissuerindex; +DROP INDEX IF EXISTS public.scpquorumsbyseq; +DROP INDEX IF EXISTS public.scpenvsbyseq; +DROP INDEX IF EXISTS public.priceindex; +DROP INDEX IF EXISTS public.ledgersbyseq; +DROP INDEX IF EXISTS public.histfeebyseq; +DROP INDEX IF EXISTS public.histbyseq; +DROP INDEX IF EXISTS public.buyingissuerindex; +DROP INDEX IF EXISTS public.accountbalances; +ALTER TABLE IF EXISTS ONLY public.txhistory DROP CONSTRAINT IF EXISTS txhistory_pkey; +ALTER TABLE IF EXISTS ONLY public.txfeehistory DROP CONSTRAINT IF EXISTS txfeehistory_pkey; +ALTER TABLE IF EXISTS ONLY public.trustlines DROP CONSTRAINT IF EXISTS trustlines_pkey; +ALTER TABLE IF EXISTS ONLY public.storestate DROP CONSTRAINT IF EXISTS storestate_pkey; +ALTER TABLE IF EXISTS ONLY public.signers DROP CONSTRAINT IF EXISTS signers_pkey; +ALTER TABLE IF EXISTS ONLY public.scpquorums DROP CONSTRAINT IF EXISTS scpquorums_pkey; +ALTER TABLE IF EXISTS ONLY public.pubsub DROP CONSTRAINT IF EXISTS pubsub_pkey; +ALTER TABLE IF EXISTS ONLY public.publishqueue DROP CONSTRAINT IF EXISTS publishqueue_pkey; +ALTER TABLE IF EXISTS ONLY public.peers DROP CONSTRAINT IF EXISTS peers_pkey; +ALTER TABLE IF EXISTS ONLY public.offers DROP CONSTRAINT IF EXISTS offers_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_ledgerseq_key; +ALTER TABLE IF EXISTS ONLY public.ban DROP CONSTRAINT IF EXISTS ban_pkey; +ALTER TABLE IF EXISTS ONLY public.accounts DROP CONSTRAINT IF EXISTS accounts_pkey; +ALTER TABLE IF EXISTS ONLY public.accountdata DROP CONSTRAINT IF EXISTS accountdata_pkey; +DROP TABLE IF EXISTS public.txhistory; +DROP TABLE IF EXISTS public.txfeehistory; +DROP TABLE IF EXISTS public.trustlines; +DROP TABLE IF EXISTS public.storestate; +DROP TABLE IF EXISTS public.signers; +DROP TABLE IF EXISTS public.scpquorums; +DROP TABLE IF EXISTS public.scphistory; +DROP TABLE IF EXISTS public.pubsub; +DROP TABLE IF EXISTS public.publishqueue; +DROP TABLE IF EXISTS public.peers; +DROP TABLE IF EXISTS public.offers; +DROP TABLE IF EXISTS public.ledgerheaders; +DROP TABLE IF EXISTS public.ban; +DROP TABLE IF EXISTS public.accounts; +DROP TABLE IF EXISTS public.accountdata; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: accountdata; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accountdata ( + accountid character varying(56) NOT NULL, + dataname character varying(64) NOT NULL, + datavalue character varying(112) NOT NULL, + lastmodified integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accounts ( + accountid character varying(56) NOT NULL, + balance bigint NOT NULL, + seqnum bigint NOT NULL, + numsubentries integer NOT NULL, + inflationdest character varying(56), + homedomain character varying(32) NOT NULL, + thresholds text NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT accounts_balance_check CHECK ((balance >= 0)), + CONSTRAINT accounts_numsubentries_check CHECK ((numsubentries >= 0)) +); + + +-- +-- Name: ban; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ban ( + nodeid character(56) NOT NULL +); + + +-- +-- Name: ledgerheaders; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ledgerheaders ( + ledgerhash character(64) NOT NULL, + prevhash character(64) NOT NULL, + bucketlisthash character(64) NOT NULL, + ledgerseq integer, + closetime bigint NOT NULL, + data text NOT NULL, + CONSTRAINT ledgerheaders_closetime_check CHECK ((closetime >= 0)), + CONSTRAINT ledgerheaders_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: offers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE offers ( + sellerid character varying(56) NOT NULL, + offerid bigint NOT NULL, + sellingassettype integer NOT NULL, + sellingassetcode character varying(12), + sellingissuer character varying(56), + buyingassettype integer NOT NULL, + buyingassetcode character varying(12), + buyingissuer character varying(56), + amount bigint NOT NULL, + pricen integer NOT NULL, + priced integer NOT NULL, + price double precision NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT offers_amount_check CHECK ((amount >= 0)), + CONSTRAINT offers_offerid_check CHECK ((offerid >= 0)) +); + + +-- +-- Name: peers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE peers ( + ip character varying(15) NOT NULL, + port integer DEFAULT 0 NOT NULL, + nextattempt timestamp without time zone NOT NULL, + numfailures integer DEFAULT 0 NOT NULL, + CONSTRAINT peers_numfailures_check CHECK ((numfailures >= 0)), + CONSTRAINT peers_port_check CHECK (((port > 0) AND (port <= 65535))) +); + + +-- +-- Name: publishqueue; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE publishqueue ( + ledger integer NOT NULL, + state text +); + + +-- +-- Name: pubsub; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE pubsub ( + resid character(32) NOT NULL, + lastread integer +); + + +-- +-- Name: scphistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scphistory ( + nodeid character(56) NOT NULL, + ledgerseq integer NOT NULL, + envelope text NOT NULL, + CONSTRAINT scphistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: scpquorums; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scpquorums ( + qsethash character(64) NOT NULL, + lastledgerseq integer NOT NULL, + qset text NOT NULL, + CONSTRAINT scpquorums_lastledgerseq_check CHECK ((lastledgerseq >= 0)) +); + + +-- +-- Name: signers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE signers ( + accountid character varying(56) NOT NULL, + publickey character varying(56) NOT NULL, + weight integer NOT NULL +); + + +-- +-- Name: storestate; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE storestate ( + statename character(32) NOT NULL, + state text +); + + +-- +-- Name: trustlines; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE trustlines ( + accountid character varying(56) NOT NULL, + assettype integer NOT NULL, + issuer character varying(56) NOT NULL, + assetcode character varying(12) NOT NULL, + tlimit bigint NOT NULL, + balance bigint NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT trustlines_balance_check CHECK ((balance >= 0)), + CONSTRAINT trustlines_tlimit_check CHECK ((tlimit > 0)) +); + + +-- +-- Name: txfeehistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txfeehistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txchanges text NOT NULL, + CONSTRAINT txfeehistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: txhistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txhistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txbody text NOT NULL, + txresult text NOT NULL, + txmeta text NOT NULL, + CONSTRAINT txhistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Data for Name: accountdata; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO accounts VALUES ('GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 999999996999999700, 3, 0, NULL, '', 'AQAAAA==', 0, 2); +INSERT INTO accounts VALUES ('GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 999999900, 8589934593, 1, NULL, '', 'AQAAAA==', 0, 3); +INSERT INTO accounts VALUES ('GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 999999900, 8589934593, 0, NULL, '', 'AQAAAA==', 0, 4); +INSERT INTO accounts VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 999999800, 8589934594, 1, NULL, '', 'AQAAAA==', 0, 5); + + +-- +-- Data for Name: ban; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: ledgerheaders; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO ledgerheaders VALUES ('63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', '0000000000000000000000000000000000000000000000000000000000000000', '572a2e32ff248a07b0e70fd1f6d318c1facd20b6cc08c33d5775259868125a16', 1, 0, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXKi4y/ySKB7DnD9H20xjB+s0gtswIwz1XdSWYaBJaFgAAAAEN4Lazp2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAX14QAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('dd40cea954728c26c26f826f4af9b8d0b12b6d41d7d228a427e270db1c4ce7c0', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', '9ca4f8c78b0147f710569acb911c6e14146f2bc97b20057139fc980a645363b9', 2, 1508958237, 'AAAACGPZj1Nu5o0bJ7W4nyOvUxG3Vpok+vFAOtC1K2M7B76ZP3bET1BQWO7v25lKgR/u6tNkZT/xU5qQN30ohPD6CoAAAAAAWfDgHQAAAAIAAAAIAAAAAQAAAAgAAAAIAAAAAwAAJxAAAAAATmS1LmeTcag6pi81IhaOG+MYxa34gawjnsRB3rvSgEycpPjHiwFH9xBWmsuRHG4UFG8ryXsgBXE5/JgKZFNjuQAAAAIN4Lazp2QAAAAAAAAAAAEsAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('16ab43099304ab9b6bc4d19e4c7912702b76ab8b962d03cb2897b9ce9edc50cf', 'dd40cea954728c26c26f826f4af9b8d0b12b6d41d7d228a427e270db1c4ce7c0', '64b6dea3512bbb931889ba6104058b10cd971e43ecb60cd1b6fa8c6363ff53bb', 3, 1508958238, 'AAAACN1AzqlUcowmwm+Cb0r5uNCxK21B19IopCficNscTOfABpb8iNjnaNVEKYbVMPQAwdwcmt0c3xusA3Z+rB3pAjIAAAAAWfDgHgAAAAAAAAAAN13a+3Gscvm/C1jZHTPHN4HPw5H2WdEz2kGkUix7+Fxktt6jUSu7kxiJumEEBYsQzZceQ+y2DNG2+oxjY/9TuwAAAAMN4Lazp2QAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('b0a6ed841394876441af3b1bd61e70d98dba0c434cf6168c86174b3fd699f496', '16ab43099304ab9b6bc4d19e4c7912702b76ab8b962d03cb2897b9ce9edc50cf', '58e65f7a7e9b35595b49390ba9070002c6358925e4fa9495ad53c0ad91df0cd8', 4, 1508958239, 'AAAACBarQwmTBKuba8TRnkx5EnArdquLli0DyyiXuc6e3FDPJaCqW8JqWdRyq81/q6m82qUC1IZDRAV65iEDtv5b9wIAAAAAWfDgHwAAAAAAAAAA89aPZigAg+IMx5cMdGKxwXobEhFVZAiHObRfY4fyizFY5l96fps1WVtJOQupBwACxjWJJeT6lJWtU8Ctkd8M2AAAAAQN4Lazp2QAAAAAAAAAAAJYAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('d3d7dbfda3aa32170e127cd45c4ca631c3be6ecab6c32cb61973e2c6a385c404', 'b0a6ed841394876441af3b1bd61e70d98dba0c434cf6168c86174b3fd699f496', '1c5ca70b4cd412b979a60536101ba9f58ebb1867c8af9b88aa000e8ad1d3d898', 5, 1508958240, 'AAAACLCm7YQTlIdkQa87G9YecNmNugxDTPYWjIYXSz/WmfSWfCfhJg1mW1paGSz2hPapaJHGWobcDXSOChoYqct14lkAAAAAWfDgIAAAAAAAAAAAnpHN6r0WB8KXbaGDbS3aPdFFMJZ+yrybEFpZjcDQA/0cXKcLTNQSuXmmBTYQG6n1jrsYZ8ivm4iqAA6K0dPYmAAAAAUN4Lazp2QAAAAAAAAAAAK8AAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); + + +-- +-- Data for Name: offers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: peers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: publishqueue; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: pubsub; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: scphistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scphistory VALUES ('GA66ZI4V3QSN5DYBUSY7DB6I3YVJADUGGYH7SUV5RXNQUZ2AJSHLU2GE', 2, 'AAAAAD3so5XcJN6PAaSx8YfI3iqQDoY2D/lSvY3bCmdATI66AAAAAAAAAAIAAAACAAAAAQAAAEg/dsRPUFBY7u/bmUqBH+7q02RlP/FTmpA3fSiE8PoKgAAAAABZ8OAdAAAAAgAAAAgAAAABAAAACAAAAAgAAAADAAAnEAAAAAAAAAABj1NAvc7Iyl/TdMWm5m+Sns8AI3vTu893iCTbjyQp1j8AAABATXWgy95ByNAI5qlfUEq9CO8wC/u7KZr2G8pvflodIEs5Emtou/8qrkG11QsxN7HWQHHBDa7WhrBEcUdcryfmDw=='); +INSERT INTO scphistory VALUES ('GA66ZI4V3QSN5DYBUSY7DB6I3YVJADUGGYH7SUV5RXNQUZ2AJSHLU2GE', 3, 'AAAAAD3so5XcJN6PAaSx8YfI3iqQDoY2D/lSvY3bCmdATI66AAAAAAAAAAMAAAACAAAAAQAAADAGlvyI2Odo1UQphtUw9ADB3Bya3RzfG6wDdn6sHekCMgAAAABZ8OAeAAAAAAAAAAAAAAABj1NAvc7Iyl/TdMWm5m+Sns8AI3vTu893iCTbjyQp1j8AAABAfJK6CWklXr/iXc9wcimSiMLuiXSlnO2SlfAkdkR4OJsJIr/dTzSrt7l+TPKEq7eSZjK4Hx84OaMW9neA89S2Aw=='); +INSERT INTO scphistory VALUES ('GA66ZI4V3QSN5DYBUSY7DB6I3YVJADUGGYH7SUV5RXNQUZ2AJSHLU2GE', 4, 'AAAAAD3so5XcJN6PAaSx8YfI3iqQDoY2D/lSvY3bCmdATI66AAAAAAAAAAQAAAACAAAAAQAAADAloKpbwmpZ1HKrzX+rqbzapQLUhkNEBXrmIQO2/lv3AgAAAABZ8OAfAAAAAAAAAAAAAAABj1NAvc7Iyl/TdMWm5m+Sns8AI3vTu893iCTbjyQp1j8AAABAVB1jNqlASvh9apK3iGscL4Ob5I+8ieQR9wAdBAaJ4z1wkfCgXsESbkKULtW7qlmUwRlA0Cy4quY0Bp8XuYZBCA=='); +INSERT INTO scphistory VALUES ('GA66ZI4V3QSN5DYBUSY7DB6I3YVJADUGGYH7SUV5RXNQUZ2AJSHLU2GE', 5, 'AAAAAD3so5XcJN6PAaSx8YfI3iqQDoY2D/lSvY3bCmdATI66AAAAAAAAAAUAAAACAAAAAQAAADB8J+EmDWZbWloZLPaE9qlokcZahtwNdI4KGhipy3XiWQAAAABZ8OAgAAAAAAAAAAAAAAABj1NAvc7Iyl/TdMWm5m+Sns8AI3vTu893iCTbjyQp1j8AAABAba/cATtCjD5k5EPYNWPGSQYtrDoHvm3MRRL7BBbJ043spdKOL0MITIJ0pEhWUNh+8ijvXCSsrA+wk/cx2lR8CQ=='); + + +-- +-- Data for Name: scpquorums; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scpquorums VALUES ('8f5340bdcec8ca5fd374c5a6e66f929ecf00237bd3bbcf778824db8f2429d63f', 5, 'AAAAAQAAAAEAAAAAPeyjldwk3o8BpLHxh8jeKpAOhjYP+VK9jdsKZ0BMjroAAAAA'); + + +-- +-- Data for Name: signers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: storestate; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO storestate VALUES ('databaseschema ', '5'); +INSERT INTO storestate VALUES ('forcescponnextlaunch ', 'false'); +INSERT INTO storestate VALUES ('lastclosedledger ', 'd3d7dbfda3aa32170e127cd45c4ca631c3be6ecab6c32cb61973e2c6a385c404'); +INSERT INTO storestate VALUES ('historyarchivestate ', '{ + "version": 1, + "server": "v0.6.3-66-gd66575cf", + "currentLedger": 5, + "currentBuckets": [ + { + "curr": "d547bae554014d3b02ea524bd743c9ea59f0202a48965eba4a5d303a8c114e43", + "next": { + "state": 0 + }, + "snap": "db9fa4d9c5bcc26caa2ec416c6bc868fcb9fdf35a03eeabd6a844ccde91de222" + }, + { + "curr": "ef31a20a398ee73ce22275ea8177786bac54656f33dcc4f3fec60d55ddf163d9", + "next": { + "state": 1, + "output": "db9fa4d9c5bcc26caa2ec416c6bc868fcb9fdf35a03eeabd6a844ccde91de222" + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + } + ] +}'); +INSERT INTO storestate VALUES ('lastscpdata ', 'AAAAAgAAAAA97KOV3CTejwGksfGHyN4qkA6GNg/5Ur2N2wpnQEyOugAAAAAAAAAFAAAAA49TQL3OyMpf03TFpuZvkp7PACN707vPd4gk248kKdY/AAAAAQAAADB8J+EmDWZbWloZLPaE9qlokcZahtwNdI4KGhipy3XiWQAAAABZ8OAgAAAAAAAAAAAAAAABAAAAMHwn4SYNZltaWhks9oT2qWiRxlqG3A10jgoaGKnLdeJZAAAAAFnw4CAAAAAAAAAAAAAAAECDe0UvuhldNQ6sb6wEzqZ5DP9ElsgSqVUCh16Vo1mBl+z41eKVMOB05XB3L9cfAYQH97ZqKtFfpkWBKPFkAKwNAAAAAD3so5XcJN6PAaSx8YfI3iqQDoY2D/lSvY3bCmdATI66AAAAAAAAAAUAAAACAAAAAQAAADB8J+EmDWZbWloZLPaE9qlokcZahtwNdI4KGhipy3XiWQAAAABZ8OAgAAAAAAAAAAAAAAABj1NAvc7Iyl/TdMWm5m+Sns8AI3vTu893iCTbjyQp1j8AAABAba/cATtCjD5k5EPYNWPGSQYtrDoHvm3MRRL7BBbJ043spdKOL0MITIJ0pEhWUNh+8ijvXCSsrA+wk/cx2lR8CQAAAAGwpu2EE5SHZEGvOxvWHnDZjboMQ0z2FoyGF0s/1pn0lgAAAAEAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAABkAAAAAgAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAB3NZQAAAAAAAAAAAa7kvkwAAABAVs7S213+8YayvnyQekqwGQ7VFoukDEQ6P9fkP3cQp9fnHEem4aJT0+Uk7LX9qUc32Rw7G0o12+/vMKEZE9H9DwAAAAEAAAABAAAAAQAAAAA97KOV3CTejwGksfGHyN4qkA6GNg/5Ur2N2wpnQEyOugAAAAA='); + + +-- +-- Data for Name: trustlines; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO trustlines VALUES ('GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 1, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 'USD', 9223372036854775807, 500000000, 1, 5); +INSERT INTO trustlines VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 1, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 'USD', 9223372036854775807, 500000000, 1, 5); + + +-- +-- Data for Name: txfeehistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txfeehistory VALUES ('2374e99349b9ef7dba9a5db3339b78fda8f34777b1af33ba468ad5c0df946d4d', 2, 1, 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('f508f24622cb2658b8b46c84fd1cd0f13b68090baae85b41e8b67cf16edf578c', 2, 2, 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/84AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('2b2e82dbabb024b27a0c3140ca71d8ac9bc71831f9f5a3bd69eca3d88fb0ec5c', 2, 3, 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/7UAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('811192c38643df73c015a5a1d77b802dff05d4f50fc6d10816aa75c0a6109f9a', 3, 1, 'AAAAAgAAAAMAAAACAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('bd486dbdd02d460817671c4a5a7e9d6e865ca29cb41e62d7aaf70a2fee5b36de', 3, 2, 'AAAAAgAAAAMAAAACAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('7736f0b869de0f74a5ed7f8d6529949238eb0f0421f3fc2bbc438084f21c8055', 4, 1, 'AAAAAgAAAAMAAAACAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('3b6dc5f46ed8140595cff4b3b8cba6b7fc0bc0801fd222e4c717b9497ee5ced0', 5, 1, 'AAAAAgAAAAMAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msmcAAAAAgAAAAEAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msk4AAAAAgAAAAIAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); + + +-- +-- Data for Name: txhistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txhistory VALUES ('2374e99349b9ef7dba9a5db3339b78fda8f34777b1af33ba468ad5c0df946d4d', 2, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAO5rKAAAAAAAAAAABVvwF9wAAAECDzqvkQBQoNAJifPRXDoLhvtycT3lFPCQ51gkdsFHaBNWw05S/VhW0Xgkr0CBPE4NaFV2Kmcs3ZwLmib4TRrML', 'I3Tpk0m57326ml2zM5t4/ajzR3exrzO6RorVwN+UbU0AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2s2vJNNQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('f508f24622cb2658b8b46c84fd1cd0f13b68090baae85b41e8b67cf16edf578c', 2, 2, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAAAAAAAAAAABVvwF9wAAAEArq72awj8I0bL2hCJ9DOo1fUwxpwUnK9R5NvR/ewXcofvO+1pRNJJeTNHMGlbdlFKeqkwm3fkPP91vgLWX47oD', '9QjyRiLLJli4tGyE/RzQ8TtoCQuq6FtB6LZ88W7fV4wAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2szAuatQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('2b2e82dbabb024b27a0c3140ca71d8ac9bc71831f9f5a3bd69eca3d88fb0ec5c', 2, 3, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAAAO5rKAAAAAAAAAAABVvwF9wAAAEDJul1tLGLF4Vxwt0dDCVEf6tb5l4byMrGgCp+lVZMmxct54iNf2mxtjx6Md5ZJ4E4Dlcsf46EAhBGSUPsn8fYD', 'Ky6C26uwJLJ6DDFAynHYrJvHGDH59aO9aeyj2I+w7FwAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2svSToNQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('811192c38643df73c015a5a1d77b802dff05d4f50fc6d10816aa75c0a6109f9a', 3, 1, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAFvFIhaAAAAQPlg7GLhJg0x7jpAw1Ew6H2XF6yRImfJIwFfx09Nui5btOJAFewFANfOaAB8FQZl5p3A5g3k6DHDigfUNUD16gc=', 'gRGSw4ZD33PAFaWh13uALf8F1PUPxtEIFqp1wKYQn5oAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAADuayZwAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('bd486dbdd02d460817671c4a5a7e9d6e865ca29cb41e62d7aaf70a2fee5b36de', 3, 2, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAGu5L5MAAAAQB9kmKW2q3v7Qfy8PMekEb1TTI5ixqkI0BogXrOt7gO162Qbkh2dSTUfeDovc0PAafhDXxthVAlsLujlBmyjBAY=', 'vUhtvdAtRggXZxxKWn6dboZcopy0HmLXqvcKL+5bNt4AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAADuayZwAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('7736f0b869de0f74a5ed7f8d6529949238eb0f0421f3fc2bbc438084f21c8055', 4, 1, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAA7msoAAAAAAAAAAAH5kC3vAAAAQDjBSAulKc9tRqGg+OkVbKPz4olRQYUevyCfv0LAlqbXG6yPbpR0BR6o7mrimRm8O4VoRBGIATQB42NOWcFzdQw=', 'dzbwuGneD3Sl7X+NZSmUkjjrDwQh8/wrvEOAhPIcgFUAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('3b6dc5f46ed8140595cff4b3b8cba6b7fc0bc0801fd222e4c717b9497ee5ced0', 5, 1, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAdzWUAAAAAAAAAAAGu5L5MAAAAQFbO0ttd/vGGsr58kHpKsBkO1RaLpAxEOj/X5D93EKfX5xxHpuGiU9PlJOy1/alHN9kcOxtKNdvv7zChGRPR/Q8=', 'O23F9G7YFAWVz/SzuMumt/wLwIAf0iLkxxe5SX7lztAAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAAEAAAAAwAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAUAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAHc1lAH//////////AAAAAQAAAAAAAAAAAAAAAwAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAUAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAHc1lAH//////////AAAAAQAAAAAAAAAA'); + + +-- +-- Name: accountdata accountdata_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accountdata + ADD CONSTRAINT accountdata_pkey PRIMARY KEY (accountid, dataname); + + +-- +-- Name: accounts accounts_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accounts + ADD CONSTRAINT accounts_pkey PRIMARY KEY (accountid); + + +-- +-- Name: ban ban_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ban + ADD CONSTRAINT ban_pkey PRIMARY KEY (nodeid); + + +-- +-- Name: ledgerheaders ledgerheaders_ledgerseq_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_ledgerseq_key UNIQUE (ledgerseq); + + +-- +-- Name: ledgerheaders ledgerheaders_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_pkey PRIMARY KEY (ledgerhash); + + +-- +-- Name: offers offers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY offers + ADD CONSTRAINT offers_pkey PRIMARY KEY (offerid); + + +-- +-- Name: peers peers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY peers + ADD CONSTRAINT peers_pkey PRIMARY KEY (ip, port); + + +-- +-- Name: publishqueue publishqueue_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY publishqueue + ADD CONSTRAINT publishqueue_pkey PRIMARY KEY (ledger); + + +-- +-- Name: pubsub pubsub_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY pubsub + ADD CONSTRAINT pubsub_pkey PRIMARY KEY (resid); + + +-- +-- Name: scpquorums scpquorums_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY scpquorums + ADD CONSTRAINT scpquorums_pkey PRIMARY KEY (qsethash); + + +-- +-- Name: signers signers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY signers + ADD CONSTRAINT signers_pkey PRIMARY KEY (accountid, publickey); + + +-- +-- Name: storestate storestate_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY storestate + ADD CONSTRAINT storestate_pkey PRIMARY KEY (statename); + + +-- +-- Name: trustlines trustlines_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY trustlines + ADD CONSTRAINT trustlines_pkey PRIMARY KEY (accountid, issuer, assetcode); + + +-- +-- Name: txfeehistory txfeehistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txfeehistory + ADD CONSTRAINT txfeehistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: txhistory txhistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txhistory + ADD CONSTRAINT txhistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: accountbalances; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX accountbalances ON accounts USING btree (balance) WHERE (balance >= 1000000000); + + +-- +-- Name: buyingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX buyingissuerindex ON offers USING btree (buyingissuer); + + +-- +-- Name: histbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histbyseq ON txhistory USING btree (ledgerseq); + + +-- +-- Name: histfeebyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histfeebyseq ON txfeehistory USING btree (ledgerseq); + + +-- +-- Name: ledgersbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX ledgersbyseq ON ledgerheaders USING btree (ledgerseq); + + +-- +-- Name: priceindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX priceindex ON offers USING btree (price); + + +-- +-- Name: scpenvsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpenvsbyseq ON scphistory USING btree (ledgerseq); + + +-- +-- Name: scpquorumsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpquorumsbyseq ON scpquorums USING btree (lastledgerseq); + + +-- +-- Name: sellingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX sellingissuerindex ON offers USING btree (sellingissuer); + + +-- +-- Name: signersaccount; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX signersaccount ON signers USING btree (accountid); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/non_native_payment-horizon.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/non_native_payment-horizon.sql new file mode 100644 index 0000000..48d28ff --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/non_native_payment-horizon.sql @@ -0,0 +1,802 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; + +SET search_path = public, pg_catalog; + +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_account_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_account_id_fkey; +DROP INDEX IF EXISTS public.trade_effects_by_order_book; +DROP INDEX IF EXISTS public.index_history_transactions_on_id; +DROP INDEX IF EXISTS public.index_history_operations_on_type; +DROP INDEX IF EXISTS public.index_history_operations_on_transaction_id; +DROP INDEX IF EXISTS public.index_history_operations_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_sequence; +DROP INDEX IF EXISTS public.index_history_ledgers_on_previous_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_importer_version; +DROP INDEX IF EXISTS public.index_history_ledgers_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_closed_at; +DROP INDEX IF EXISTS public.index_history_effects_on_type; +DROP INDEX IF EXISTS public.index_history_accounts_on_id; +DROP INDEX IF EXISTS public.index_history_accounts_on_address; +DROP INDEX IF EXISTS public.htrd_time_lookup; +DROP INDEX IF EXISTS public.htrd_pid; +DROP INDEX IF EXISTS public.htrd_pair_time_lookup; +DROP INDEX IF EXISTS public.htrd_counter_lookup; +DROP INDEX IF EXISTS public.htrd_by_offer; +DROP INDEX IF EXISTS public.htp_by_htid; +DROP INDEX IF EXISTS public.hs_transaction_by_id; +DROP INDEX IF EXISTS public.hs_ledger_by_id; +DROP INDEX IF EXISTS public.hop_by_hoid; +DROP INDEX IF EXISTS public.hist_tx_p_id; +DROP INDEX IF EXISTS public.hist_op_p_id; +DROP INDEX IF EXISTS public.hist_e_id; +DROP INDEX IF EXISTS public.hist_e_by_order; +DROP INDEX IF EXISTS public.by_ledger; +DROP INDEX IF EXISTS public.by_hash; +DROP INDEX IF EXISTS public.by_account; +DROP INDEX IF EXISTS public.asset_by_issuer; +ALTER TABLE IF EXISTS ONLY public.history_transaction_participants DROP CONSTRAINT IF EXISTS history_transaction_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_operation_participants DROP CONSTRAINT IF EXISTS history_operation_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_asset_code_asset_type_asset_issuer_key; +ALTER TABLE IF EXISTS ONLY public.gorp_migrations DROP CONSTRAINT IF EXISTS gorp_migrations_pkey; +ALTER TABLE IF EXISTS public.history_transaction_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_operation_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_assets ALTER COLUMN id DROP DEFAULT; +DROP TABLE IF EXISTS public.history_transactions; +DROP SEQUENCE IF EXISTS public.history_transaction_participants_id_seq; +DROP TABLE IF EXISTS public.history_transaction_participants; +DROP TABLE IF EXISTS public.history_trades; +DROP TABLE IF EXISTS public.history_operations; +DROP SEQUENCE IF EXISTS public.history_operation_participants_id_seq; +DROP TABLE IF EXISTS public.history_operation_participants; +DROP TABLE IF EXISTS public.history_ledgers; +DROP TABLE IF EXISTS public.history_effects; +DROP SEQUENCE IF EXISTS public.history_assets_id_seq; +DROP TABLE IF EXISTS public.history_assets; +DROP TABLE IF EXISTS public.history_accounts; +DROP SEQUENCE IF EXISTS public.history_accounts_id_seq; +DROP TABLE IF EXISTS public.gorp_migrations; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: gorp_migrations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE gorp_migrations ( + id text NOT NULL, + applied_at timestamp with time zone +); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_accounts_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_accounts ( + id bigint DEFAULT nextval('history_accounts_id_seq'::regclass) NOT NULL, + address character varying(64) +); + + +-- +-- Name: history_assets; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_assets ( + id integer NOT NULL, + asset_type character varying(64) NOT NULL, + asset_code character varying(12) NOT NULL, + asset_issuer character varying(56) NOT NULL +); + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_assets_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_assets_id_seq OWNED BY history_assets.id; + + +-- +-- Name: history_effects; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_effects ( + history_account_id bigint NOT NULL, + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + type integer NOT NULL, + details jsonb +); + + +-- +-- Name: history_ledgers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_ledgers ( + sequence integer NOT NULL, + ledger_hash character varying(64) NOT NULL, + previous_ledger_hash character varying(64), + transaction_count integer DEFAULT 0 NOT NULL, + operation_count integer DEFAULT 0 NOT NULL, + closed_at timestamp without time zone NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + importer_version integer DEFAULT 1 NOT NULL, + total_coins bigint NOT NULL, + fee_pool bigint NOT NULL, + base_fee integer NOT NULL, + base_reserve integer NOT NULL, + max_tx_set_size integer NOT NULL, + protocol_version integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: history_operation_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operation_participants ( + id integer NOT NULL, + history_operation_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_operation_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_operation_participants_id_seq OWNED BY history_operation_participants.id; + + +-- +-- Name: history_operations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operations ( + id bigint NOT NULL, + transaction_id bigint NOT NULL, + application_order integer NOT NULL, + type integer NOT NULL, + details jsonb, + source_account character varying(64) DEFAULT ''::character varying NOT NULL +); + + +-- +-- Name: history_trades; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_trades ( + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + ledger_closed_at timestamp without time zone NOT NULL, + offer_id bigint NOT NULL, + base_account_id bigint NOT NULL, + base_asset_id bigint NOT NULL, + base_amount bigint NOT NULL, + counter_account_id bigint NOT NULL, + counter_asset_id bigint NOT NULL, + counter_amount bigint NOT NULL, + base_is_seller boolean, + CONSTRAINT history_trades_base_amount_check CHECK ((base_amount > 0)), + CONSTRAINT history_trades_check CHECK ((base_asset_id < counter_asset_id)), + CONSTRAINT history_trades_counter_amount_check CHECK ((counter_amount > 0)) +); + + +-- +-- Name: history_transaction_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transaction_participants ( + id integer NOT NULL, + history_transaction_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_transaction_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_transaction_participants_id_seq OWNED BY history_transaction_participants.id; + + +-- +-- Name: history_transactions; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transactions ( + transaction_hash character varying(64) NOT NULL, + ledger_sequence integer NOT NULL, + application_order integer NOT NULL, + account character varying(64) NOT NULL, + account_sequence bigint NOT NULL, + fee_paid integer NOT NULL, + operation_count integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + tx_envelope text NOT NULL, + tx_result text NOT NULL, + tx_meta text NOT NULL, + tx_fee_meta text NOT NULL, + signatures character varying(96)[] DEFAULT '{}'::character varying[] NOT NULL, + memo_type character varying DEFAULT 'none'::character varying NOT NULL, + memo character varying, + time_bounds int8range +); + + +-- +-- Name: history_assets id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets ALTER COLUMN id SET DEFAULT nextval('history_assets_id_seq'::regclass); + + +-- +-- Name: history_operation_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants ALTER COLUMN id SET DEFAULT nextval('history_operation_participants_id_seq'::regclass); + + +-- +-- Name: history_transaction_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants ALTER COLUMN id SET DEFAULT nextval('history_transaction_participants_id_seq'::regclass); + + +-- +-- Data for Name: gorp_migrations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO gorp_migrations VALUES ('1_initial_schema.sql', '2017-10-25 12:02:41.355815-07'); +INSERT INTO gorp_migrations VALUES ('2_index_participants_by_toid.sql', '2017-10-25 12:02:41.35913-07'); +INSERT INTO gorp_migrations VALUES ('3_use_sequence_in_history_accounts.sql', '2017-10-25 12:02:41.361119-07'); +INSERT INTO gorp_migrations VALUES ('4_add_protocol_version.sql', '2017-10-25 12:02:41.365998-07'); +INSERT INTO gorp_migrations VALUES ('5_create_trades_table.sql', '2017-10-25 12:02:41.370443-07'); +INSERT INTO gorp_migrations VALUES ('6_create_assets_table.sql', '2017-10-25 12:02:41.373746-07'); +INSERT INTO gorp_migrations VALUES ('7_modify_trades_table.sql', '2017-10-25 12:02:41.381902-07'); + + +-- +-- Data for Name: history_accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_accounts VALUES (1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_accounts VALUES (2, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_accounts VALUES (3, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); +INSERT INTO history_accounts VALUES (4, 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON'); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_accounts_id_seq', 4, true); + + +-- +-- Data for Name: history_assets; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_assets_id_seq', 1, false); + + +-- +-- Data for Name: history_effects; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_effects VALUES (2, 8589938689, 1, 0, '{"starting_balance": "100.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589938689, 2, 3, '{"amount": "100.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (2, 8589938689, 3, 10, '{"weight": 1, "public_key": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU"}'); +INSERT INTO history_effects VALUES (3, 8589942785, 1, 0, '{"starting_balance": "100.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589942785, 2, 3, '{"amount": "100.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (3, 8589942785, 3, 10, '{"weight": 1, "public_key": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (4, 8589946881, 1, 0, '{"starting_balance": "100.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589946881, 2, 3, '{"amount": "100.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (4, 8589946881, 3, 10, '{"weight": 1, "public_key": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON"}'); +INSERT INTO history_effects VALUES (4, 12884905985, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (2, 12884910081, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (2, 17179873281, 1, 2, '{"amount": "100.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (3, 17179873281, 2, 3, '{"amount": "100.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (4, 21474840577, 1, 2, '{"amount": "50.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (2, 21474840577, 2, 3, '{"amount": "50.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); + + +-- +-- Data for Name: history_ledgers; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_ledgers VALUES (1, '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', NULL, 0, 0, '1970-01-01 00:00:00', '2017-10-25 19:03:59.978174', '2017-10-25 19:03:59.978174', 4294967296, 10, 1000000000000000000, 0, 100, 100000000, 100, 0); +INSERT INTO history_ledgers VALUES (2, 'dd40cea954728c26c26f826f4af9b8d0b12b6d41d7d228a427e270db1c4ce7c0', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', 3, 3, '2017-10-25 19:03:57', '2017-10-25 19:03:59.983239', '2017-10-25 19:03:59.983239', 8589934592, 10, 1000000000000000000, 300, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (3, '16ab43099304ab9b6bc4d19e4c7912702b76ab8b962d03cb2897b9ce9edc50cf', 'dd40cea954728c26c26f826f4af9b8d0b12b6d41d7d228a427e270db1c4ce7c0', 2, 2, '2017-10-25 19:03:58', '2017-10-25 19:04:00.014337', '2017-10-25 19:04:00.014337', 12884901888, 10, 1000000000000000000, 500, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (4, 'b0a6ed841394876441af3b1bd61e70d98dba0c434cf6168c86174b3fd699f496', '16ab43099304ab9b6bc4d19e4c7912702b76ab8b962d03cb2897b9ce9edc50cf', 1, 1, '2017-10-25 19:03:59', '2017-10-25 19:04:00.023493', '2017-10-25 19:04:00.023493', 17179869184, 10, 1000000000000000000, 600, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (5, 'd3d7dbfda3aa32170e127cd45c4ca631c3be6ecab6c32cb61973e2c6a385c404', 'b0a6ed841394876441af3b1bd61e70d98dba0c434cf6168c86174b3fd699f496', 1, 1, '2017-10-25 19:04:00', '2017-10-25 19:04:00.031471', '2017-10-25 19:04:00.031471', 21474836480, 10, 1000000000000000000, 700, 100, 100000000, 10000, 8); + + +-- +-- Data for Name: history_operation_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operation_participants VALUES (1, 8589938689, 1); +INSERT INTO history_operation_participants VALUES (2, 8589938689, 2); +INSERT INTO history_operation_participants VALUES (3, 8589942785, 1); +INSERT INTO history_operation_participants VALUES (4, 8589942785, 3); +INSERT INTO history_operation_participants VALUES (5, 8589946881, 1); +INSERT INTO history_operation_participants VALUES (6, 8589946881, 4); +INSERT INTO history_operation_participants VALUES (7, 12884905985, 4); +INSERT INTO history_operation_participants VALUES (8, 12884910081, 2); +INSERT INTO history_operation_participants VALUES (9, 17179873281, 3); +INSERT INTO history_operation_participants VALUES (10, 17179873281, 2); +INSERT INTO history_operation_participants VALUES (11, 21474840577, 2); +INSERT INTO history_operation_participants VALUES (12, 21474840577, 4); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_operation_participants_id_seq', 12, true); + + +-- +-- Data for Name: history_operations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operations VALUES (8589938689, 8589938688, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "starting_balance": "100.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (8589942785, 8589942784, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "starting_balance": "100.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (8589946881, 8589946880, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", "starting_balance": "100.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (12884905985, 12884905984, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "trustor": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON'); +INSERT INTO history_operations VALUES (12884910081, 12884910080, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "trustor": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (17179873281, 17179873280, 1, 1, '{"to": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "from": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "amount": "100.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); +INSERT INTO history_operations VALUES (21474840577, 21474840576, 1, 1, '{"to": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", "from": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "amount": "50.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); + + +-- +-- Data for Name: history_trades; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: history_transaction_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transaction_participants VALUES (1, 8589938688, 1); +INSERT INTO history_transaction_participants VALUES (2, 8589938688, 2); +INSERT INTO history_transaction_participants VALUES (3, 8589942784, 1); +INSERT INTO history_transaction_participants VALUES (4, 8589942784, 3); +INSERT INTO history_transaction_participants VALUES (5, 8589946880, 1); +INSERT INTO history_transaction_participants VALUES (6, 8589946880, 4); +INSERT INTO history_transaction_participants VALUES (7, 12884905984, 4); +INSERT INTO history_transaction_participants VALUES (8, 12884910080, 2); +INSERT INTO history_transaction_participants VALUES (9, 17179873280, 3); +INSERT INTO history_transaction_participants VALUES (10, 17179873280, 2); +INSERT INTO history_transaction_participants VALUES (11, 21474840576, 2); +INSERT INTO history_transaction_participants VALUES (12, 21474840576, 4); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_transaction_participants_id_seq', 12, true); + + +-- +-- Data for Name: history_transactions; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transactions VALUES ('2374e99349b9ef7dba9a5db3339b78fda8f34777b1af33ba468ad5c0df946d4d', 2, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 1, 100, 1, '2017-10-25 19:03:59.983689', '2017-10-25 19:03:59.983689', 8589938688, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAO5rKAAAAAAAAAAABVvwF9wAAAECDzqvkQBQoNAJifPRXDoLhvtycT3lFPCQ51gkdsFHaBNWw05S/VhW0Xgkr0CBPE4NaFV2Kmcs3ZwLmib4TRrML', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2s2vJNNQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{g86r5EAUKDQCYnz0Vw6C4b7cnE95RTwkOdYJHbBR2gTVsNOUv1YVtF4JK9AgTxODWhVdipnLN2cC5om+E0azCw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('f508f24622cb2658b8b46c84fd1cd0f13b68090baae85b41e8b67cf16edf578c', 2, 2, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 2, 100, 1, '2017-10-25 19:03:59.991891', '2017-10-25 19:03:59.991891', 8589942784, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAAAAAAAAAAABVvwF9wAAAEArq72awj8I0bL2hCJ9DOo1fUwxpwUnK9R5NvR/ewXcofvO+1pRNJJeTNHMGlbdlFKeqkwm3fkPP91vgLWX47oD', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2szAuatQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/84AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{K6u9msI/CNGy9oQifQzqNX1MMacFJyvUeTb0f3sF3KH7zvtaUTSSXkzRzBpW3ZRSnqpMJt35Dz/db4C1l+O6Aw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('2b2e82dbabb024b27a0c3140ca71d8ac9bc71831f9f5a3bd69eca3d88fb0ec5c', 2, 3, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 3, 100, 1, '2017-10-25 19:03:59.998693', '2017-10-25 19:03:59.998694', 8589946880, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAAAO5rKAAAAAAAAAAABVvwF9wAAAEDJul1tLGLF4Vxwt0dDCVEf6tb5l4byMrGgCp+lVZMmxct54iNf2mxtjx6Md5ZJ4E4Dlcsf46EAhBGSUPsn8fYD', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2svSToNQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/7UAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{ybpdbSxixeFccLdHQwlRH+rW+ZeG8jKxoAqfpVWTJsXLeeIjX9psbY8ejHeWSeBOA5XLH+OhAIQRklD7J/H2Aw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('811192c38643df73c015a5a1d77b802dff05d4f50fc6d10816aa75c0a6109f9a', 3, 1, 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 8589934593, 100, 1, '2017-10-25 19:04:00.014784', '2017-10-25 19:04:00.014784', 12884905984, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAFvFIhaAAAAQPlg7GLhJg0x7jpAw1Ew6H2XF6yRImfJIwFfx09Nui5btOJAFewFANfOaAB8FQZl5p3A5g3k6DHDigfUNUD16gc=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAADuayZwAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{+WDsYuEmDTHuOkDDUTDofZcXrJEiZ8kjAV/HT026Llu04kAV7AUA185oAHwVBmXmncDmDeToMcOKB9Q1QPXqBw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('bd486dbdd02d460817671c4a5a7e9d6e865ca29cb41e62d7aaf70a2fee5b36de', 3, 2, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934593, 100, 1, '2017-10-25 19:04:00.01737', '2017-10-25 19:04:00.01737', 12884910080, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAGu5L5MAAAAQB9kmKW2q3v7Qfy8PMekEb1TTI5ixqkI0BogXrOt7gO162Qbkh2dSTUfeDovc0PAafhDXxthVAlsLujlBmyjBAY=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAADuayZwAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{H2SYpbare/tB/Lw8x6QRvVNMjmLGqQjQGiBes63uA7XrZBuSHZ1JNR94Oi9zQ8Bp+ENfG2FUCWwu6OUGbKMEBg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('7736f0b869de0f74a5ed7f8d6529949238eb0f0421f3fc2bbc438084f21c8055', 4, 1, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 8589934593, 100, 1, '2017-10-25 19:04:00.023939', '2017-10-25 19:04:00.023939', 17179873280, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAA7msoAAAAAAAAAAAH5kC3vAAAAQDjBSAulKc9tRqGg+OkVbKPz4olRQYUevyCfv0LAlqbXG6yPbpR0BR6o7mrimRm8O4VoRBGIATQB42NOWcFzdQw=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAH//////////AAAAAQAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{OMFIC6Upz21GoaD46RVso/PiiVFBhR6/IJ+/QsCWptcbrI9ulHQFHqjuauKZGbw7hWhEEYgBNAHjY05ZwXN1DA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('3b6dc5f46ed8140595cff4b3b8cba6b7fc0bc0801fd222e4c717b9497ee5ced0', 5, 1, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934594, 100, 1, '2017-10-25 19:04:00.031935', '2017-10-25 19:04:00.031935', 21474840576, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAdzWUAAAAAAAAAAAGu5L5MAAAAQFbO0ttd/vGGsr58kHpKsBkO1RaLpAxEOj/X5D93EKfX5xxHpuGiU9PlJOy1/alHN9kcOxtKNdvv7zChGRPR/Q8=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAAEAAAAAwAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAUAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAHc1lAH//////////AAAAAQAAAAAAAAAAAAAAAwAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAUAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAHc1lAH//////////AAAAAQAAAAAAAAAA', 'AAAAAgAAAAMAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msmcAAAAAgAAAAEAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msk4AAAAAgAAAAIAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{Vs7S213+8YayvnyQekqwGQ7VFoukDEQ6P9fkP3cQp9fnHEem4aJT0+Uk7LX9qUc32Rw7G0o12+/vMKEZE9H9Dw==}', 'none', NULL, NULL); + + +-- +-- Name: gorp_migrations gorp_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY gorp_migrations + ADD CONSTRAINT gorp_migrations_pkey PRIMARY KEY (id); + + +-- +-- Name: history_assets history_assets_asset_code_asset_type_asset_issuer_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_asset_code_asset_type_asset_issuer_key UNIQUE (asset_code, asset_type, asset_issuer); + + +-- +-- Name: history_assets history_assets_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_pkey PRIMARY KEY (id); + + +-- +-- Name: history_operation_participants history_operation_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants + ADD CONSTRAINT history_operation_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: history_transaction_participants history_transaction_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants + ADD CONSTRAINT history_transaction_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: asset_by_issuer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX asset_by_issuer ON history_assets USING btree (asset_issuer); + + +-- +-- Name: by_account; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_account ON history_transactions USING btree (account, account_sequence); + + +-- +-- Name: by_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_hash ON history_transactions USING btree (transaction_hash); + + +-- +-- Name: by_ledger; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_ledger ON history_transactions USING btree (ledger_sequence, application_order); + + +-- +-- Name: hist_e_by_order; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_by_order ON history_effects USING btree (history_operation_id, "order"); + + +-- +-- Name: hist_e_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_id ON history_effects USING btree (history_account_id, history_operation_id, "order"); + + +-- +-- Name: hist_op_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_op_p_id ON history_operation_participants USING btree (history_account_id, history_operation_id); + + +-- +-- Name: hist_tx_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_tx_p_id ON history_transaction_participants USING btree (history_account_id, history_transaction_id); + + +-- +-- Name: hop_by_hoid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX hop_by_hoid ON history_operation_participants USING btree (history_operation_id); + + +-- +-- Name: hs_ledger_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_ledger_by_id ON history_ledgers USING btree (id); + + +-- +-- Name: hs_transaction_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_transaction_by_id ON history_transactions USING btree (id); + + +-- +-- Name: htp_by_htid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htp_by_htid ON history_transaction_participants USING btree (history_transaction_id); + + +-- +-- Name: htrd_by_offer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_by_offer ON history_trades USING btree (offer_id); + + +-- +-- Name: htrd_counter_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_counter_lookup ON history_trades USING btree (counter_asset_id); + + +-- +-- Name: htrd_pair_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_pair_time_lookup ON history_trades USING btree (base_asset_id, counter_asset_id, ledger_closed_at); + + +-- +-- Name: htrd_pid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX htrd_pid ON history_trades USING btree (history_operation_id, "order"); + + +-- +-- Name: htrd_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_time_lookup ON history_trades USING btree (ledger_closed_at); + + +-- +-- Name: index_history_accounts_on_address; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_address ON history_accounts USING btree (address); + + +-- +-- Name: index_history_accounts_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_id ON history_accounts USING btree (id); + + +-- +-- Name: index_history_effects_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_effects_on_type ON history_effects USING btree (type); + + +-- +-- Name: index_history_ledgers_on_closed_at; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_closed_at ON history_ledgers USING btree (closed_at); + + +-- +-- Name: index_history_ledgers_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_id ON history_ledgers USING btree (id); + + +-- +-- Name: index_history_ledgers_on_importer_version; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_importer_version ON history_ledgers USING btree (importer_version); + + +-- +-- Name: index_history_ledgers_on_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_ledger_hash ON history_ledgers USING btree (ledger_hash); + + +-- +-- Name: index_history_ledgers_on_previous_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_previous_ledger_hash ON history_ledgers USING btree (previous_ledger_hash); + + +-- +-- Name: index_history_ledgers_on_sequence; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_sequence ON history_ledgers USING btree (sequence); + + +-- +-- Name: index_history_operations_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_operations_on_id ON history_operations USING btree (id); + + +-- +-- Name: index_history_operations_on_transaction_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_transaction_id ON history_operations USING btree (transaction_id); + + +-- +-- Name: index_history_operations_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_type ON history_operations USING btree (type); + + +-- +-- Name: index_history_transactions_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_transactions_on_id ON history_transactions USING btree (id); + + +-- +-- Name: trade_effects_by_order_book; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX trade_effects_by_order_book ON history_effects USING btree (((details ->> 'sold_asset_type'::text)), ((details ->> 'sold_asset_code'::text)), ((details ->> 'sold_asset_issuer'::text)), ((details ->> 'bought_asset_type'::text)), ((details ->> 'bought_asset_code'::text)), ((details ->> 'bought_asset_issuer'::text))) WHERE (type = 33); + + +-- +-- Name: history_trades history_trades_base_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_account_id_fkey FOREIGN KEY (base_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_base_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_asset_id_fkey FOREIGN KEY (base_asset_id) REFERENCES history_assets(id); + + +-- +-- Name: history_trades history_trades_counter_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_account_id_fkey FOREIGN KEY (counter_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_counter_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_asset_id_fkey FOREIGN KEY (counter_asset_id) REFERENCES history_assets(id); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/non_native_payment.rb b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/non_native_payment.rb new file mode 100644 index 0000000..ec8054c --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/non_native_payment.rb @@ -0,0 +1,20 @@ +run_recipe File.dirname(__FILE__) + "/_common_accounts.rb" + +use_manual_close + +create_account :scott, :master, 100 +create_account :usd_gateway, :master, 100 +create_account :andrew, :master, 100 + +close_ledger + +trust :scott, :usd_gateway, "USD" +trust :andrew, :usd_gateway, "USD" + +close_ledger + +payment :usd_gateway, :scott, ["USD", :usd_gateway, 100] + +close_ledger + +payment :scott, :andrew, ["USD", :usd_gateway, 50] diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/order_books-core.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/order_books-core.sql new file mode 100644 index 0000000..300880d --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/order_books-core.sql @@ -0,0 +1,753 @@ +running recipe +recipe finished, closing ledger +ledger closed +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; +SET row_security = off; + +SET search_path = public, pg_catalog; + +DROP INDEX IF EXISTS public.signersaccount; +DROP INDEX IF EXISTS public.sellingissuerindex; +DROP INDEX IF EXISTS public.scpquorumsbyseq; +DROP INDEX IF EXISTS public.scpenvsbyseq; +DROP INDEX IF EXISTS public.priceindex; +DROP INDEX IF EXISTS public.ledgersbyseq; +DROP INDEX IF EXISTS public.histfeebyseq; +DROP INDEX IF EXISTS public.histbyseq; +DROP INDEX IF EXISTS public.buyingissuerindex; +DROP INDEX IF EXISTS public.accountbalances; +ALTER TABLE IF EXISTS ONLY public.txhistory DROP CONSTRAINT IF EXISTS txhistory_pkey; +ALTER TABLE IF EXISTS ONLY public.txfeehistory DROP CONSTRAINT IF EXISTS txfeehistory_pkey; +ALTER TABLE IF EXISTS ONLY public.trustlines DROP CONSTRAINT IF EXISTS trustlines_pkey; +ALTER TABLE IF EXISTS ONLY public.storestate DROP CONSTRAINT IF EXISTS storestate_pkey; +ALTER TABLE IF EXISTS ONLY public.signers DROP CONSTRAINT IF EXISTS signers_pkey; +ALTER TABLE IF EXISTS ONLY public.scpquorums DROP CONSTRAINT IF EXISTS scpquorums_pkey; +ALTER TABLE IF EXISTS ONLY public.pubsub DROP CONSTRAINT IF EXISTS pubsub_pkey; +ALTER TABLE IF EXISTS ONLY public.publishqueue DROP CONSTRAINT IF EXISTS publishqueue_pkey; +ALTER TABLE IF EXISTS ONLY public.peers DROP CONSTRAINT IF EXISTS peers_pkey; +ALTER TABLE IF EXISTS ONLY public.offers DROP CONSTRAINT IF EXISTS offers_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_ledgerseq_key; +ALTER TABLE IF EXISTS ONLY public.ban DROP CONSTRAINT IF EXISTS ban_pkey; +ALTER TABLE IF EXISTS ONLY public.accounts DROP CONSTRAINT IF EXISTS accounts_pkey; +ALTER TABLE IF EXISTS ONLY public.accountdata DROP CONSTRAINT IF EXISTS accountdata_pkey; +DROP TABLE IF EXISTS public.txhistory; +DROP TABLE IF EXISTS public.txfeehistory; +DROP TABLE IF EXISTS public.trustlines; +DROP TABLE IF EXISTS public.storestate; +DROP TABLE IF EXISTS public.signers; +DROP TABLE IF EXISTS public.scpquorums; +DROP TABLE IF EXISTS public.scphistory; +DROP TABLE IF EXISTS public.pubsub; +DROP TABLE IF EXISTS public.publishqueue; +DROP TABLE IF EXISTS public.peers; +DROP TABLE IF EXISTS public.offers; +DROP TABLE IF EXISTS public.ledgerheaders; +DROP TABLE IF EXISTS public.ban; +DROP TABLE IF EXISTS public.accounts; +DROP TABLE IF EXISTS public.accountdata; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: accountdata; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accountdata ( + accountid character varying(56) NOT NULL, + dataname character varying(64) NOT NULL, + datavalue character varying(112) NOT NULL, + lastmodified integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accounts ( + accountid character varying(56) NOT NULL, + balance bigint NOT NULL, + seqnum bigint NOT NULL, + numsubentries integer NOT NULL, + inflationdest character varying(56), + homedomain character varying(32) NOT NULL, + thresholds text NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT accounts_balance_check CHECK ((balance >= 0)), + CONSTRAINT accounts_numsubentries_check CHECK ((numsubentries >= 0)) +); + + +-- +-- Name: ban; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ban ( + nodeid character(56) NOT NULL +); + + +-- +-- Name: ledgerheaders; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ledgerheaders ( + ledgerhash character(64) NOT NULL, + prevhash character(64) NOT NULL, + bucketlisthash character(64) NOT NULL, + ledgerseq integer, + closetime bigint NOT NULL, + data text NOT NULL, + CONSTRAINT ledgerheaders_closetime_check CHECK ((closetime >= 0)), + CONSTRAINT ledgerheaders_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: offers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE offers ( + sellerid character varying(56) NOT NULL, + offerid bigint NOT NULL, + sellingassettype integer NOT NULL, + sellingassetcode character varying(12), + sellingissuer character varying(56), + buyingassettype integer NOT NULL, + buyingassetcode character varying(12), + buyingissuer character varying(56), + amount bigint NOT NULL, + pricen integer NOT NULL, + priced integer NOT NULL, + price double precision NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT offers_amount_check CHECK ((amount >= 0)), + CONSTRAINT offers_offerid_check CHECK ((offerid >= 0)) +); + + +-- +-- Name: peers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE peers ( + ip character varying(15) NOT NULL, + port integer DEFAULT 0 NOT NULL, + nextattempt timestamp without time zone NOT NULL, + numfailures integer DEFAULT 0 NOT NULL, + CONSTRAINT peers_numfailures_check CHECK ((numfailures >= 0)), + CONSTRAINT peers_port_check CHECK (((port > 0) AND (port <= 65535))) +); + + +-- +-- Name: publishqueue; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE publishqueue ( + ledger integer NOT NULL, + state text +); + + +-- +-- Name: pubsub; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE pubsub ( + resid character(32) NOT NULL, + lastread integer +); + + +-- +-- Name: scphistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scphistory ( + nodeid character(56) NOT NULL, + ledgerseq integer NOT NULL, + envelope text NOT NULL, + CONSTRAINT scphistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: scpquorums; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scpquorums ( + qsethash character(64) NOT NULL, + lastledgerseq integer NOT NULL, + qset text NOT NULL, + CONSTRAINT scpquorums_lastledgerseq_check CHECK ((lastledgerseq >= 0)) +); + + +-- +-- Name: signers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE signers ( + accountid character varying(56) NOT NULL, + publickey character varying(56) NOT NULL, + weight integer NOT NULL +); + + +-- +-- Name: storestate; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE storestate ( + statename character(32) NOT NULL, + state text +); + + +-- +-- Name: trustlines; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE trustlines ( + accountid character varying(56) NOT NULL, + assettype integer NOT NULL, + issuer character varying(56) NOT NULL, + assetcode character varying(12) NOT NULL, + tlimit bigint NOT NULL, + balance bigint NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT trustlines_balance_check CHECK ((balance >= 0)), + CONSTRAINT trustlines_tlimit_check CHECK ((tlimit > 0)) +); + + +-- +-- Name: txfeehistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txfeehistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txchanges text NOT NULL, + CONSTRAINT txfeehistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: txhistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txhistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txbody text NOT NULL, + txresult text NOT NULL, + txmeta text NOT NULL, + CONSTRAINT txhistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Data for Name: accountdata; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO accounts VALUES ('GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 999999869999999700, 3, 0, NULL, '', 'AQAAAA==', 0, 2); +INSERT INTO accounts VALUES ('GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 9999999600, 8589934596, 0, NULL, '', 'AQAAAA==', 0, 4); +INSERT INTO accounts VALUES ('GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 59999999200, 8589934600, 8, NULL, '', 'AQAAAA==', 0, 6); +INSERT INTO accounts VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 59999999200, 8589934600, 8, NULL, '', 'AQAAAA==', 0, 6); + + +-- +-- Data for Name: ban; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: ledgerheaders; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO ledgerheaders VALUES ('63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', '0000000000000000000000000000000000000000000000000000000000000000', '572a2e32ff248a07b0e70fd1f6d318c1facd20b6cc08c33d5775259868125a16', 1, 0, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXKi4y/ySKB7DnD9H20xjB+s0gtswIwz1XdSWYaBJaFgAAAAEN4Lazp2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAX14QAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('1a6fb79a6a19684e174c2c5a99da6a92efd060648a69437ffbf3d0fc7e86ef0f', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', '5a40fcf10808da07bbc521e5c7d73205ee2c0cff9bcbc400461b1f1a9ae73136', 2, 1508958243, 'AAAACGPZj1Nu5o0bJ7W4nyOvUxG3Vpok+vFAOtC1K2M7B76ZAUwrYbwky130abgiR+8z3pixvjYuXxWRQO3fiLTCQxsAAAAAWfDgIwAAAAIAAAAIAAAAAQAAAAgAAAAIAAAAAwAAJxAAAAAA1w9fW1+aY0dzStxnssDdI7Fc8ROLyUF72+R6hYY7OB5aQPzxCAjaB7vFIeXH1zIF7iwM/5vLxABGGx8amucxNgAAAAIN4Lazp2QAAAAAAAAAAAEsAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('77c356a72c1a57e8369cc67ddfd8a38ba248d9d91ab395e60eab2047d0114f0d', '1a6fb79a6a19684e174c2c5a99da6a92efd060648a69437ffbf3d0fc7e86ef0f', 'd803eb8ca4901ce034cc1a48ef2ae36d6148b6cc6f66677f078c3b38b7c51e35', 3, 1508958244, 'AAAACBpvt5pqGWhOF0wsWpnaapLv0GBkimlDf/vz0Px+hu8PHSsY2flyD7Tz0ZZn7q7NIaVN3sjydAW8US/0VFux0yAAAAAAWfDgJAAAAAAAAAAAuv3nXQPv7pfqeZbYXHSM8xqoQfhhyLRFImejAhp7RIjYA+uMpJAc4DTMGkjvKuNtYUi2zG9mZ38HjDs4t8UeNQAAAAMN4Lazp2QAAAAAAAAAAAK8AAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('d3b6c4b1413fe5714b168b6c3f9da2ca27845dc5263649c665c30675d635c8ee', '77c356a72c1a57e8369cc67ddfd8a38ba248d9d91ab395e60eab2047d0114f0d', 'f1a8adc4980dc4ce070f22c21b6936de9305ca3bae71cb538788283e40cf7c63', 4, 1508958245, 'AAAACHfDVqcsGlfoNpzGfd/Yo4uiSNnZGrOV5g6rIEfQEU8N1A2jnvNr+nXRi+s9YEKKPROAuTlBwRKf4rBngCE7cG0AAAAAWfDgJQAAAAAAAAAA9P74c8f1xfd4wX2Dasj3a3ZXngqhfaJ2yA7eEO3Lts/xqK3EmA3EzgcPIsIbaTbekwXKO65xy1OHiCg+QM98YwAAAAQN4Lazp2QAAAAAAAAAAARMAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('9dcaab385ee4582fdf0e159f037e60db03450e22a8e496f22cd2e90e85891de4', 'd3b6c4b1413fe5714b168b6c3f9da2ca27845dc5263649c665c30675d635c8ee', 'a04b4690f22ccf6388bd84703f867191cf8c78bfae391e3f9e39aa02ddef2a98', 5, 1508958246, 'AAAACNO2xLFBP+VxSxaLbD+dosonhF3FJjZJxmXDBnXWNcjunOruXTvnetsaTf3Z9+nAi60l1DE4ta8JlwJwUHV79nsAAAAAWfDgJgAAAAAAAAAAG3w38XI7lXBfk6nby2tVOz4Zcvg9y84cjP7bJxQwWIagS0aQ8izPY4i9hHA/hnGRz4x4v645Hj+eOaoC3e8qmAAAAAUN4Lazp2QAAAAAAAAAAAakAAAAAAAAAAAAAAAGAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('0812b68ab63cce6298205b562b2bb9584e8092d4a28a8969a21cf62545423eb7', '9dcaab385ee4582fdf0e159f037e60db03450e22a8e496f22cd2e90e85891de4', '8af359aae35a2649db6f49d5a38fc0d292d9b1b8b5f99c7cc53e78541935d281', 6, 1508958247, 'AAAACJ3Kqzhe5Fgv3w4VnwN+YNsDRQ4iqOSW8izS6Q6FiR3krutLHMjWckqd232NGvhsHBHgPX8hq7BMtlgBm93gwuYAAAAAWfDgJwAAAAAAAAAATNKAIAb+ryzQ5gClxSMBgkYV7ZdffDlUh7SBqyCSbpOK81mq41omSdtvSdWjj8DSktmxuLX5nHzFPnhUGTXSgQAAAAYN4Lazp2QAAAAAAAAAAAj8AAAAAAAAAAAAAAAMAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); + + +-- +-- Data for Name: offers; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO offers VALUES ('GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 1, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 0, NULL, NULL, 100000000, 15, 1, 15, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 2, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 1000000000, 1, 10, 0.100000000000000006, 0, 5); +INSERT INTO offers VALUES ('GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 3, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 0, NULL, NULL, 1000000000, 20, 1, 20, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 4, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 9000000000, 1, 9, 0.111111111111111105, 0, 5); +INSERT INTO offers VALUES ('GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 5, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 0, NULL, NULL, 10000000000, 50, 1, 50, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 6, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 50000000000, 1, 5, 0.200000000000000011, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 7, 1, 'BTC', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 1000000000, 1, 10, 0.100000000000000006, 0, 6); +INSERT INTO offers VALUES ('GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 8, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 1, 'BTC', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 100000000, 15, 1, 15, 0, 6); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 9, 1, 'BTC', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 9000000000, 1, 9, 0.111111111111111105, 0, 6); +INSERT INTO offers VALUES ('GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 10, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 1, 'BTC', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 1000000000, 20, 1, 20, 0, 6); +INSERT INTO offers VALUES ('GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 11, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 1, 'BTC', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 10000000000, 50, 1, 50, 0, 6); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 12, 1, 'BTC', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 50000000000, 1, 5, 0.200000000000000011, 0, 6); + + +-- +-- Data for Name: peers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: publishqueue; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: pubsub; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: scphistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scphistory VALUES ('GD5KDHV2LXCEPGSLKTY2DJC4KWP4OHXR35B3SV4VAYEEYDUV23C6ZASI', 2, 'AAAAAPqhnrpdxEeaS1TxoaRcVZ/HHvHfQ7lXlQYITA6V1sXsAAAAAAAAAAIAAAACAAAAAQAAAEgBTCthvCTLXfRpuCJH7zPemLG+Ni5fFZFA7d+ItMJDGwAAAABZ8OAjAAAAAgAAAAgAAAABAAAACAAAAAgAAAADAAAnEAAAAAAAAAABmwFdt4iuzN8QA2Wq1g5QYBpgIPT9qOA6EhBEJiP0qpcAAABAG+QhftOcSB8DPjM26XN2lMU/dQ9JS78zPX+jDESNS2xdfeAyT8cxpG4l0qjt+fDM/odnkyxouGFUYM7ffGtFBQ=='); +INSERT INTO scphistory VALUES ('GD5KDHV2LXCEPGSLKTY2DJC4KWP4OHXR35B3SV4VAYEEYDUV23C6ZASI', 3, 'AAAAAPqhnrpdxEeaS1TxoaRcVZ/HHvHfQ7lXlQYITA6V1sXsAAAAAAAAAAMAAAACAAAAAQAAADAdKxjZ+XIPtPPRlmfurs0hpU3eyPJ0BbxRL/RUW7HTIAAAAABZ8OAkAAAAAAAAAAAAAAABmwFdt4iuzN8QA2Wq1g5QYBpgIPT9qOA6EhBEJiP0qpcAAABAQsa1ZJ+AB3HjzB8lXX4nRuLGDxHhiBg1wk1rqfVlK1QsoH4eT+gAWuIE3BUgYst+mBZTiKyrQaHbg5pxYRArCw=='); +INSERT INTO scphistory VALUES ('GD5KDHV2LXCEPGSLKTY2DJC4KWP4OHXR35B3SV4VAYEEYDUV23C6ZASI', 4, 'AAAAAPqhnrpdxEeaS1TxoaRcVZ/HHvHfQ7lXlQYITA6V1sXsAAAAAAAAAAQAAAACAAAAAQAAADDUDaOe82v6ddGL6z1gQoo9E4C5OUHBEp/isGeAITtwbQAAAABZ8OAlAAAAAAAAAAAAAAABmwFdt4iuzN8QA2Wq1g5QYBpgIPT9qOA6EhBEJiP0qpcAAABASCpTyS5IjMcXHGahB10wZf7wZySRgobdGqTn74pzILO7sUk6CoGdZnLPnfFYEkQDY04pd4JE6VHLlzaVlo0RAQ=='); +INSERT INTO scphistory VALUES ('GD5KDHV2LXCEPGSLKTY2DJC4KWP4OHXR35B3SV4VAYEEYDUV23C6ZASI', 5, 'AAAAAPqhnrpdxEeaS1TxoaRcVZ/HHvHfQ7lXlQYITA6V1sXsAAAAAAAAAAUAAAACAAAAAQAAADCc6u5dO+d62xpN/dn36cCLrSXUMTi1rwmXAnBQdXv2ewAAAABZ8OAmAAAAAAAAAAAAAAABmwFdt4iuzN8QA2Wq1g5QYBpgIPT9qOA6EhBEJiP0qpcAAABAfXRyt0ifhAhDqWZltc2PHqzojwxuyzahM94hvOb+OOv/UBeaExraBtVrk/iABvULQyB2FNZjPF8aFJsH994bAA=='); +INSERT INTO scphistory VALUES ('GD5KDHV2LXCEPGSLKTY2DJC4KWP4OHXR35B3SV4VAYEEYDUV23C6ZASI', 6, 'AAAAAPqhnrpdxEeaS1TxoaRcVZ/HHvHfQ7lXlQYITA6V1sXsAAAAAAAAAAYAAAACAAAAAQAAADCu60scyNZySp3bfY0a+GwcEeA9fyGrsEy2WAGb3eDC5gAAAABZ8OAnAAAAAAAAAAAAAAABmwFdt4iuzN8QA2Wq1g5QYBpgIPT9qOA6EhBEJiP0qpcAAABA1nx7GmEEytA/9hWJ3ScG4ySIJksy2IETkUIzGybOOdpDM6t80p3fLcH5egCZinfc52n5kkYfK1ssFeS31L6nCw=='); + + +-- +-- Data for Name: scpquorums; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scpquorums VALUES ('9b015db788aeccdf100365aad60e50601a6020f4fda8e03a1210442623f4aa97', 6, 'AAAAAQAAAAEAAAAA+qGeul3ER5pLVPGhpFxVn8ce8d9DuVeVBghMDpXWxewAAAAA'); + + +-- +-- Data for Name: signers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: storestate; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO storestate VALUES ('databaseschema ', '5'); +INSERT INTO storestate VALUES ('forcescponnextlaunch ', 'false'); +INSERT INTO storestate VALUES ('lastclosedledger ', '0812b68ab63cce6298205b562b2bb9584e8092d4a28a8969a21cf62545423eb7'); +INSERT INTO storestate VALUES ('historyarchivestate ', '{ + "version": 1, + "server": "v0.6.3-66-gd66575cf", + "currentLedger": 6, + "currentBuckets": [ + { + "curr": "16c9dbd19d39cff7309af086211accea6a9154da19435d9bb8d679b42d2a634b", + "next": { + "state": 0 + }, + "snap": "faf93b3857506dd72ba3064f58a852da7aaa30115a28469d4556c14f6e0d6be7" + }, + { + "curr": "c6e71baecc853c7d865c173cefec3b82e7b89d564351820e7e67f2a1d62ddc10", + "next": { + "state": 1, + "output": "faf93b3857506dd72ba3064f58a852da7aaa30115a28469d4556c14f6e0d6be7" + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + } + ] +}'); +INSERT INTO storestate VALUES ('lastscpdata ', 'AAAAAgAAAAD6oZ66XcRHmktU8aGkXFWfxx7x30O5V5UGCEwOldbF7AAAAAAAAAAGAAAAA5sBXbeIrszfEANlqtYOUGAaYCD0/ajgOhIQRCYj9KqXAAAAAQAAADCu60scyNZySp3bfY0a+GwcEeA9fyGrsEy2WAGb3eDC5gAAAABZ8OAnAAAAAAAAAAAAAAABAAAAMK7rSxzI1nJKndt9jRr4bBwR4D1/IauwTLZYAZvd4MLmAAAAAFnw4CcAAAAAAAAAAAAAAEAgidWMAqin/UZh8tDP9IbAJlHHGqX1vzto9r3woLQ1uW0MvtWiFFjCqyjqjN/6gVFyIxRBdynUTsHP1RlCvSoCAAAAAPqhnrpdxEeaS1TxoaRcVZ/HHvHfQ7lXlQYITA6V1sXsAAAAAAAAAAYAAAACAAAAAQAAADCu60scyNZySp3bfY0a+GwcEeA9fyGrsEy2WAGb3eDC5gAAAABZ8OAnAAAAAAAAAAAAAAABmwFdt4iuzN8QA2Wq1g5QYBpgIPT9qOA6EhBEJiP0qpcAAABA1nx7GmEEytA/9hWJ3ScG4ySIJksy2IETkUIzGybOOdpDM6t80p3fLcH5egCZinfc52n5kkYfK1ssFeS31L6nCwAAAAGdyqs4XuRYL98OFZ8DfmDbA0UOIqjklvIs0ukOhYkd5AAAAAYAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAABkAAAAAgAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACVAvkAAAAADIAAAABAAAAAAAAAAAAAAAAAAAAAW8UiFoAAABA4Q+Q7+2pPiRAHM2VM57Nm2LJu4ST2YybEaMuWYe55bxC1RLgnU7daHLg0qHy/CaicpDW4ykIz/NhHO6aNIS4CQAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAGQAAAACAAAACAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAukO3QAAAAAAQAAAAUAAAAAAAAAAAAAAAAAAAABruS+TAAAAECehrJisXo4SEpiriyHRenYsQ8AIhqhghsSed1jqBQMblHaQL698VeSIb/54/HYOUbQc2/CmAqDmE4mxUQzKwcFAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAGAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADuaygAAAAABAAAACgAAAAAAAAAAAAAAAAAAAAGu5L5MAAAAQOgEzlrfIyzY3OVuWdROUj73yLBItV1mpZlWOOZMg568Vjq16aseyTgvUUBvWmBQOjdLLDsY7vU3SR8RAgiCMAkAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAABkAAAAAgAAAAcAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAFCVEMAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACGHEaAAAAAAEAAAAJAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAOwcvMP/ur+0FoW368vyy+fjLerUAXEwhi5Pw0zNuzBWwJRwsjVCWTEFBa0HtKOgNAy13p0kRo7a6mY9f0/c8BAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAGQAAAACAAAABgAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAF9eEAAAAADwAAAAEAAAAAAAAAAAAAAAAAAAABbxSIWgAAAECUWUvrTUFS8KXC0IXYyXTy4czLStD/GC5o0+Abxo6Bu3+f3PbfrEX6uSd1xuOxMJ/kszp3PVVeEMLyy3brIsMAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAAHAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFCVEMAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADuaygAAAAAUAAAAAQAAAAAAAAAAAAAAAAAAAAFvFIhaAAAAQNPYjTyT7/mYaa2QkbFzDm0jLpLDhJtZA+rJNJR7STfuBcUJXc5W+UwWs/wI32iwu4ieU3la6pJIkwI/0dq6dQwAAAABAAAAAQAAAAEAAAAA+qGeul3ER5pLVPGhpFxVn8ce8d9DuVeVBghMDpXWxewAAAAA'); + + +-- +-- Data for Name: trustlines; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO trustlines VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 1, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 'USD', 9223372036854775807, 50000000000, 1, 4); +INSERT INTO trustlines VALUES ('GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 1, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 'USD', 9223372036854775807, 50000000000, 1, 4); +INSERT INTO trustlines VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 1, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 'BTC', 9223372036854775807, 50000000000, 1, 4); +INSERT INTO trustlines VALUES ('GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 1, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 'BTC', 9223372036854775807, 50000000000, 1, 4); + + +-- +-- Data for Name: txfeehistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txfeehistory VALUES ('db398eb4ae89756325643cad21c94e13bfc074b323ee83e141bf701a5d904f1b', 2, 1, 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('67c059e1118f4f79b83648e5769b8bf1f1fbf0259d90d2e4a5a8aa0852c41687', 2, 2, 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/84AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('f7cb8309318368f694c8830bf789841e7e2c46dce30e60969d88bd0ce588cbe9', 2, 3, 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/7UAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('811192c38643df73c015a5a1d77b802dff05d4f50fc6d10816aa75c0a6109f9a', 3, 1, 'AAAAAgAAAAMAAAACAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1gAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1ecAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('bd486dbdd02d460817671c4a5a7e9d6e865ca29cb41e62d7aaf70a2fee5b36de', 3, 2, 'AAAAAgAAAAMAAAACAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1gAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1ecAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('7df857c23c7dfeb974d7c3956775685a8edfa8496bb781fd346c8e2025fad9bf', 3, 3, 'AAAAAQAAAAEAAAADAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1c4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('3476bc649563488cf025d82790aa9c44649188232b150d2864d13fe9face5406', 3, 4, 'AAAAAQAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1c4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('ea945436a3b650efa88063e737518cf1928d9a43d1aba3ec684704f160b3733e', 4, 1, 'AAAAAgAAAAMAAAACAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('416a63c3f1491537698cdb6f981097ed8e44ca27d2d9006bd0ba68832ebf9d55', 4, 2, 'AAAAAQAAAAEAAAAEAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+M4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('c29948d1ca87bad2e3299c1b018c996c22ff5d56f5753bc38f0fd88c4d2c5d94', 4, 3, 'AAAAAQAAAAEAAAAEAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+LUAAAAAgAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('554ea22913ebf01fc4b3a4d60b59ae28f379b800d5b6da40a6987a53ebd87f07', 4, 4, 'AAAAAQAAAAEAAAAEAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+JwAAAAAgAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('6fcbcfbcde0ad6e2da47126334413984d7337dffa9c537fb0569f848b3d2f6f2', 5, 1, 'AAAAAgAAAAMAAAADAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1c4AAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1bUAAAAAgAAAAMAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('f42caf0be4aa867ffa832f8f925b75cf89b5615528016eb7ea47a285d2919a6c', 5, 2, 'AAAAAgAAAAMAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1c4AAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1bUAAAAAgAAAAMAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('e9185c1cd138c5c15625531cfb527c50b9b84fadaa1a45c749f7af9647dec450', 5, 3, 'AAAAAQAAAAEAAAAFAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1ZwAAAAAgAAAAQAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('dcd151fda3242912d2fe71e0181f80806f081a61cf4746873b2ec15bb1bae395', 5, 4, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1ZwAAAAAgAAAAQAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('cd12e89db9e04541e37c796ebaae118d36f3bf9dcd3dde4ae0af96b768ffe71f', 5, 5, 'AAAAAQAAAAEAAAAFAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1YMAAAAAgAAAAUAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('f93841b864bc4ce3ddcc2e2ab4378bfd443ecd6eee85b95d634da5c00b0cd667', 5, 6, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1YMAAAAAgAAAAUAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('701efa0b0226e961d31df74f4282982b4048b2b9849ea3f7e02a418511d7a9c5', 6, 1, 'AAAAAgAAAAMAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1YMAAAAAgAAAAUAAAAFAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1WoAAAAAgAAAAYAAAAFAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('82ebbbd502be295802887ff05f5cc888c4357a3c6c81f6b1dbdde1e3fb3989b1', 6, 2, 'AAAAAgAAAAMAAAAFAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1YMAAAAAgAAAAUAAAAFAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1WoAAAAAgAAAAYAAAAFAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('5dbdfd3ab91f4a52a11ba92c60334bca0d4aad951fe3d159b373afaba1632ea1', 6, 3, 'AAAAAQAAAAEAAAAGAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1VEAAAAAgAAAAcAAAAFAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('a415b192f3730a3ef139035f3c67e3b10a4ea69ff5145f3a76615c1a82400dc9', 6, 4, 'AAAAAQAAAAEAAAAGAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1VEAAAAAgAAAAcAAAAFAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('483298f40a79f46f684c41d22d4d902f1d3feb53abe5551d3ad69dc832408055', 6, 5, 'AAAAAQAAAAEAAAAGAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1TgAAAAAgAAAAgAAAAFAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('dfcf019e8c71290048dcd0e4fa01a6d7278386b3e6a793b4c53dd7751cd289e9', 6, 6, 'AAAAAQAAAAEAAAAGAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1TgAAAAAgAAAAgAAAAFAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); + + +-- +-- Data for Name: txhistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txhistory VALUES ('db398eb4ae89756325643cad21c94e13bfc074b323ee83e141bf701a5d904f1b', 2, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACVAvkAAAAAAAAAAABVvwF9wAAAEAYjQcPT2G5hqnBmgGGeg9J8l4c1EnUlxklElH9sqZr0971F6OLWfe/m4kpFtI+sI0i1qLit5A0JyWnbhYLW5oD', '2zmOtK6JdWMlZDytIclOE7/AdLMj7oPhQb9wGl2QTxsAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2sVNYGtQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('67c059e1118f4f79b83648e5769b8bf1f1fbf0259d90d2e4a5a8aa0852c41687', 2, 2, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAN+EdYAAAAAAAAAAABVvwF9wAAAEDUoLr1FIIMdF1JOK2RVg4EDQvL+exej1s795GdZKz5tJB94pDkbAiz8k+mPv0OVuST8ah1MzkZYglos0c1AcID', 'Z8BZ4RGPT3m4NkjldpuL8fH78CWdkNLkpaiqCFLEFocAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHWAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2o1sQwtQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('f7cb8309318368f694c8830bf789841e7e2c46dce30e60969d88bd0ce588cbe9', 2, 3, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAAN+EdYAAAAAAAAAAABVvwF9wAAAEAQAaCgnhAHvWviyyciJH3kp9yoTQtn2SFjbCqLUUPBKzcRt8huITE9etfxlEBrW4iiJkrgyQeOCq/IGbGe2RAA', '98uDCTGDaPaUyIML94mEHn4sRtzjDmCWnYi9DOWIy+kAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAADfhHWAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2lWLJatQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('811192c38643df73c015a5a1d77b802dff05d4f50fc6d10816aa75c0a6109f9a', 3, 1, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAFvFIhaAAAAQPlg7GLhJg0x7jpAw1Ew6H2XF6yRImfJIwFfx09Nui5btOJAFewFANfOaAB8FQZl5p3A5g3k6DHDigfUNUD16gc=', 'gRGSw4ZD33PAFaWh13uALf8F1PUPxtEIFqp1wKYQn5oAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAADfhHVzgAAAACAAAAAgAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('bd486dbdd02d460817671c4a5a7e9d6e865ca29cb41e62d7aaf70a2fee5b36de', 3, 2, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAGu5L5MAAAAQB9kmKW2q3v7Qfy8PMekEb1TTI5ixqkI0BogXrOt7gO162Qbkh2dSTUfeDovc0PAafhDXxthVAlsLujlBmyjBAY=', 'vUhtvdAtRggXZxxKWn6dboZcopy0HmLXqvcKL+5bNt4AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHVzgAAAACAAAAAgAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('7df857c23c7dfeb974d7c3956775685a8edfa8496bb781fd346c8e2025fad9bf', 3, 3, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAFvFIhaAAAAQBH/ML6+RzWquFPh8gLF2RuZzYtjjpPeHv/od9M74xlU09Xa4a5e1NhMtMSRIoLItg1EaDWE9zvtHflVWIAaSwQ=', 'ffhXwjx9/rl018OVZ3VoWo7fqElrt4H9NGyOICX62b8AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAADfhHVzgAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('3476bc649563488cf025d82790aa9c44649188232b150d2864d13fe9face5406', 3, 4, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAGu5L5MAAAAQEKBv+8zL1epwxC+sJhEYPmbjL9XScXtctoMIdet5dhgk7YJVJzAnRSgYTvfyoIJKJdQmX66uh2o+rG9K6JImgY=', 'NHa8ZJVjSIzwJdgnkKqcRGSRiCMrFQ0oZNE/6frOVAYAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHVzgAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('ea945436a3b650efa88063e737518cf1928d9a43d1aba3ec684704f160b3733e', 4, 1, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAukO3QAAAAAAAAAAAH5kC3vAAAAQH/ZkzR/eC0F7xP9zApeHvMH7nqetzaSdYh8WHyrwwvbEnx4Db6gz0grnRJBJS66OZbGmCk7yzHm8DkJ7bJ4QAU=', '6pRUNqO2UO+ogGPnN1GM8ZKNmkPRq6PsaEcE8WCzcz4AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('416a63c3f1491537698cdb6f981097ed8e44ca27d2d9006bd0ba68832ebf9d55', 4, 2, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAukO3QAAAAAAAAAAAH5kC3vAAAAQFFGLGFFXbEDRdk2eFyQATNpHuqO/sFrpqsxmNNwGa+MLibNQJLDXWafC4W8KMKQ/hE0M0TLxZeu/O8tYnBuwwA=', 'QWpjw/FJFTdpjNtvmBCX7Y5EyifS2QBr0Lpogy6/nVUAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('c29948d1ca87bad2e3299c1b018c996c22ff5d56f5753bc38f0fd88c4d2c5d94', 4, 3, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAukO3QAAAAAAAAAAAH5kC3vAAAAQLn0NeCsam5YrmtsMJQVOLyOTPqDb7SMTCZGofm5ShU6fcl3PPieInQNtk1FmRVeUxdYX1rsW2KH1HQbJ644Hw0=', 'wplI0cqHutLjKZwbAYyZbCL/XVb1dTvDjw/YjE0sXZQAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('554ea22913ebf01fc4b3a4d60b59ae28f379b800d5b6da40a6987a53ebd87f07', 4, 4, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAukO3QAAAAAAAAAAAH5kC3vAAAAQF34mYyRLbVT42QtFuY5UN0sr9EcuE3ltA/9yAxiNOvukbVTOaz86uCXpEZlX1FnExYDZwOZJWVXfsbdovbVUwc=', 'VU6iKRPr8B/Es6TWC1muKPN5uADVttpApph6U+vYfwcAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('6fcbcfbcde0ad6e2da47126334413984d7337dffa9c537fb0569f848b3d2f6f2', 5, 1, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAAAAAABfXhAAAAAA8AAAABAAAAAAAAAAAAAAAAAAAAAW8UiFoAAABAxsghzEhvQmICVccjSoy9Q2LUjXol62JlBd8shmRwqO9XyelpSY554bdmHq6xqc6jYZow955E47PWqCEfeVhhCw==', 'b8vPvN4K1uLaRxJjNEE5hNczff+pxTf7BWn4SLPS9vIAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAAAAAAAAQAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAAAAAAAF9eEAAAAADwAAAAEAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAAAAAAEAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAAAAAABfXhAAAAAA8AAAABAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAADfhHVgwAAAACAAAABQAAAAMAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('f42caf0be4aa867ffa832f8f925b75cf89b5615528016eb7ea47a285d2919a6c', 5, 2, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAAAAAAEAAAAKAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAeyObGhkwxonX/VI/jcfjrHOdhMDI9U7u4KxVjA3XHqkW4ENworQ5mZDRjj282acAG8cMfWGvYfFcQVVdX62nCw==', '9CyvC+Sqhn/6gy+Pklt1z4m1YVUoAW636keihdKRmmwAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAAAgAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAA7msoAAAAAAQAAAAoAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAIAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAAAAAAEAAAAKAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHVgwAAAACAAAABQAAAAMAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('e9185c1cd138c5c15625531cfb527c50b9b84fadaa1a45c749f7af9647dec450', 5, 3, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAAAAAAO5rKAAAAABQAAAABAAAAAAAAAAAAAAAAAAAAAW8UiFoAAABAgI2ziUivGtOdn4yh1DKts6kzH4kZroEEHAUKspjBt8JrewsqrY1vOvn/5ob+x5EGmpEOFaDB/mINM33OASmyAA==', '6RhcHNE4xcFWJVMc+1J8ULm4T62qGkXHSfevlkfexFAAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAAAAAAAAwAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAAAAAAA7msoAAAAAFAAAAAEAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAAAAAAMAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAAAAAAO5rKAAAAABQAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAADfhHVgwAAAACAAAABQAAAAQAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('dcd151fda3242912d2fe71e0181f80806f081a61cf4746873b2ec15bb1bae395', 5, 4, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACGHEaAAAAAAEAAAAJAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAqPx69qSD18N3YK5zdNznZdpXBkbohJTuCKnYl0dQPAE/HWxA8fNfVggVZtGaGk8YMcH/4dvB7zeGF9SEQoSQBg==', '3NFR/aMkKRLS/nHgGB+AgG8IGmHPR0aHOy7BW7G645UAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAABAAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAIYcRoAAAAAAQAAAAkAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAQAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACGHEaAAAAAAEAAAAJAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHVgwAAAACAAAABQAAAAQAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('cd12e89db9e04541e37c796ebaae118d36f3bf9dcd3dde4ae0af96b768ffe71f', 5, 5, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAAAAACVAvkAAAAADIAAAABAAAAAAAAAAAAAAAAAAAAAW8UiFoAAABA5Xo6CV4r7iFHfyeH2p1RsjxOyoXGqhom3bEbhCMeTQNK2+UYCyWnmhZR6yRiWge9MSfcFhiv1LafatF+SW+EAg==', 'zRLonbngRUHjfHluuq4RjTbzv53NPd5K4K+Wt2j/5x8AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAAAAAAABQAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAAAAAAJUC+QAAAAAMgAAAAEAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAAAAAAUAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAAAAACVAvkAAAAADIAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAADfhHVgwAAAACAAAABQAAAAUAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('f93841b864bc4ce3ddcc2e2ab4378bfd443ecd6eee85b95d634da5c00b0cd667', 5, 6, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAO6P8u7hte5mLhMJe3EDbGFmBHKg/kN03Gfvwao0kYaGv7wHYouK/zhWBLu3A+tB4haCav2a/dO1JiND6xX11AA==', '+ThBuGS8TOPdzC4qtDeL/UQ+zW7uhbldY02lwAsM1mcAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAABgAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAukO3QAAAAAAQAAAAUAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAYAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHVgwAAAACAAAABQAAAAUAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('701efa0b0226e961d31df74f4282982b4048b2b9849ea3f7e02a418511d7a9c5', 6, 1, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAGAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADuaygAAAAABAAAACgAAAAAAAAAAAAAAAAAAAAGu5L5MAAAAQOgEzlrfIyzY3OVuWdROUj73yLBItV1mpZlWOOZMg568Vjq16aseyTgvUUBvWmBQOjdLLDsY7vU3SR8RAgiCMAk=', 'cB76CwIm6WHTHfdPQoKYK0BIsrmEnqP34CpBhRHXqcUAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAABwAAAAFCVEMAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAAAAAAEAAAAKAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAYAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAcAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADuaygAAAAABAAAACgAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1TgAAAAAgAAAAgAAAAGAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('82ebbbd502be295802887ff05f5cc888c4357a3c6c81f6b1dbdde1e3fb3989b1', 6, 2, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAAGAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFCVEMAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAAX14QAAAAAPAAAAAQAAAAAAAAAAAAAAAAAAAAFvFIhaAAAAQJRZS+tNQVLwpcLQhdjJdPLhzMtK0P8YLmjT4BvGjoG7f5/c9t+sRfq5J3XG47Ewn+SzOnc9VV4QwvLLdusiwwA=', 'guu71QK+KVgCiH/wX1zIiMQ1ejxsgfax293h4/s5ibEAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAAAAAAACAAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAABfXhAAAAAA8AAAABAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAYAAAACAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAAAAAAgAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFCVEMAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAAX14QAAAAAPAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1TgAAAAAgAAAAgAAAAGAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('5dbdfd3ab91f4a52a11ba92c60334bca0d4aad951fe3d159b373afaba1632ea1', 6, 3, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAHAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAhhxGgAAAAABAAAACQAAAAAAAAAAAAAAAAAAAAGu5L5MAAAAQDsHLzD/7q/tBaFt+vL8svn4y3q1AFxMIYuT8NMzbswVsCUcLI1QlkxBQWtB7SjoDQMtd6dJEaO2upmPX9P3PAQ=', 'Xb39OrkfSlKhG6ksYDNLyg1KrZUf49FZs3Ovq6FjLqEAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAACQAAAAFCVEMAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACGHEaAAAAAAEAAAAJAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAYAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAkAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAhhxGgAAAAABAAAACQAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1TgAAAAAgAAAAgAAAAHAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('a415b192f3730a3ef139035f3c67e3b10a4ea69ff5145f3a76615c1a82400dc9', 6, 4, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAAHAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFCVEMAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADuaygAAAAAUAAAAAQAAAAAAAAAAAAAAAAAAAAFvFIhaAAAAQNPYjTyT7/mYaa2QkbFzDm0jLpLDhJtZA+rJNJR7STfuBcUJXc5W+UwWs/wI32iwu4ieU3la6pJIkwI/0dq6dQw=', 'pBWxkvNzCj7xOQNfPGfjsQpOpp/1FF86dmFcGoJADckAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAAAAAAACgAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAAAAABQAAAABAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAYAAAACAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAAAAAAoAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFCVEMAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADuaygAAAAAUAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1TgAAAAAgAAAAgAAAAHAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('483298f40a79f46f684c41d22d4d902f1d3feb53abe5551d3ad69dc832408055', 6, 5, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFCVEMAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAlQL5AAAAAAyAAAAAQAAAAAAAAAAAAAAAAAAAAFvFIhaAAAAQOEPkO/tqT4kQBzNlTOezZtiybuEk9mMmxGjLlmHueW8QtUS4J1O3Why4NKh8vwmonKQ1uMpCM/zYRzumjSEuAk=', 'SDKY9Ap59G9oTEHSLU2QLx0/61Or5VUdOtadyDJAgFUAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAAAAAAACwAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACVAvkAAAAADIAAAABAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAYAAAACAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAAAAAAsAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFCVEMAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAlQL5AAAAAAyAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1TgAAAAAgAAAAgAAAAIAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('dfcf019e8c71290048dcd0e4fa01a6d7278386b3e6a793b4c53dd7751cd289e9', 6, 6, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAC6Q7dAAAAAABAAAABQAAAAAAAAAAAAAAAAAAAAGu5L5MAAAAQJ6GsmKxejhISmKuLIdF6dixDwAiGqGCGxJ53WOoFAxuUdpAvr3xV5Ihv/nj8dg5RtBzb8KYCoOYTibFRDMrBwU=', '388BnoxxKQBI3NDk+gGm1yeDhrPmp5O0xT3XdRzSiekAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAADAAAAAFCVEMAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AAAAAAEAAAAFAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAYAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAwAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAC6Q7dAAAAAABAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1TgAAAAAgAAAAgAAAAIAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); + + +-- +-- Name: accountdata accountdata_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accountdata + ADD CONSTRAINT accountdata_pkey PRIMARY KEY (accountid, dataname); + + +-- +-- Name: accounts accounts_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accounts + ADD CONSTRAINT accounts_pkey PRIMARY KEY (accountid); + + +-- +-- Name: ban ban_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ban + ADD CONSTRAINT ban_pkey PRIMARY KEY (nodeid); + + +-- +-- Name: ledgerheaders ledgerheaders_ledgerseq_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_ledgerseq_key UNIQUE (ledgerseq); + + +-- +-- Name: ledgerheaders ledgerheaders_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_pkey PRIMARY KEY (ledgerhash); + + +-- +-- Name: offers offers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY offers + ADD CONSTRAINT offers_pkey PRIMARY KEY (offerid); + + +-- +-- Name: peers peers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY peers + ADD CONSTRAINT peers_pkey PRIMARY KEY (ip, port); + + +-- +-- Name: publishqueue publishqueue_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY publishqueue + ADD CONSTRAINT publishqueue_pkey PRIMARY KEY (ledger); + + +-- +-- Name: pubsub pubsub_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY pubsub + ADD CONSTRAINT pubsub_pkey PRIMARY KEY (resid); + + +-- +-- Name: scpquorums scpquorums_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY scpquorums + ADD CONSTRAINT scpquorums_pkey PRIMARY KEY (qsethash); + + +-- +-- Name: signers signers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY signers + ADD CONSTRAINT signers_pkey PRIMARY KEY (accountid, publickey); + + +-- +-- Name: storestate storestate_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY storestate + ADD CONSTRAINT storestate_pkey PRIMARY KEY (statename); + + +-- +-- Name: trustlines trustlines_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY trustlines + ADD CONSTRAINT trustlines_pkey PRIMARY KEY (accountid, issuer, assetcode); + + +-- +-- Name: txfeehistory txfeehistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txfeehistory + ADD CONSTRAINT txfeehistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: txhistory txhistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txhistory + ADD CONSTRAINT txhistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: accountbalances; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX accountbalances ON accounts USING btree (balance) WHERE (balance >= 1000000000); + + +-- +-- Name: buyingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX buyingissuerindex ON offers USING btree (buyingissuer); + + +-- +-- Name: histbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histbyseq ON txhistory USING btree (ledgerseq); + + +-- +-- Name: histfeebyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histfeebyseq ON txfeehistory USING btree (ledgerseq); + + +-- +-- Name: ledgersbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX ledgersbyseq ON ledgerheaders USING btree (ledgerseq); + + +-- +-- Name: priceindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX priceindex ON offers USING btree (price); + + +-- +-- Name: scpenvsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpenvsbyseq ON scphistory USING btree (ledgerseq); + + +-- +-- Name: scpquorumsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpquorumsbyseq ON scpquorums USING btree (lastledgerseq); + + +-- +-- Name: sellingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX sellingissuerindex ON offers USING btree (sellingissuer); + + +-- +-- Name: signersaccount; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX signersaccount ON signers USING btree (accountid); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/order_books-horizon.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/order_books-horizon.sql new file mode 100644 index 0000000..e497450 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/order_books-horizon.sql @@ -0,0 +1,877 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; + +SET search_path = public, pg_catalog; + +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_account_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_account_id_fkey; +DROP INDEX IF EXISTS public.trade_effects_by_order_book; +DROP INDEX IF EXISTS public.index_history_transactions_on_id; +DROP INDEX IF EXISTS public.index_history_operations_on_type; +DROP INDEX IF EXISTS public.index_history_operations_on_transaction_id; +DROP INDEX IF EXISTS public.index_history_operations_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_sequence; +DROP INDEX IF EXISTS public.index_history_ledgers_on_previous_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_importer_version; +DROP INDEX IF EXISTS public.index_history_ledgers_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_closed_at; +DROP INDEX IF EXISTS public.index_history_effects_on_type; +DROP INDEX IF EXISTS public.index_history_accounts_on_id; +DROP INDEX IF EXISTS public.index_history_accounts_on_address; +DROP INDEX IF EXISTS public.htrd_time_lookup; +DROP INDEX IF EXISTS public.htrd_pid; +DROP INDEX IF EXISTS public.htrd_pair_time_lookup; +DROP INDEX IF EXISTS public.htrd_counter_lookup; +DROP INDEX IF EXISTS public.htrd_by_offer; +DROP INDEX IF EXISTS public.htp_by_htid; +DROP INDEX IF EXISTS public.hs_transaction_by_id; +DROP INDEX IF EXISTS public.hs_ledger_by_id; +DROP INDEX IF EXISTS public.hop_by_hoid; +DROP INDEX IF EXISTS public.hist_tx_p_id; +DROP INDEX IF EXISTS public.hist_op_p_id; +DROP INDEX IF EXISTS public.hist_e_id; +DROP INDEX IF EXISTS public.hist_e_by_order; +DROP INDEX IF EXISTS public.by_ledger; +DROP INDEX IF EXISTS public.by_hash; +DROP INDEX IF EXISTS public.by_account; +DROP INDEX IF EXISTS public.asset_by_issuer; +ALTER TABLE IF EXISTS ONLY public.history_transaction_participants DROP CONSTRAINT IF EXISTS history_transaction_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_operation_participants DROP CONSTRAINT IF EXISTS history_operation_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_asset_code_asset_type_asset_issuer_key; +ALTER TABLE IF EXISTS ONLY public.gorp_migrations DROP CONSTRAINT IF EXISTS gorp_migrations_pkey; +ALTER TABLE IF EXISTS public.history_transaction_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_operation_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_assets ALTER COLUMN id DROP DEFAULT; +DROP TABLE IF EXISTS public.history_transactions; +DROP SEQUENCE IF EXISTS public.history_transaction_participants_id_seq; +DROP TABLE IF EXISTS public.history_transaction_participants; +DROP TABLE IF EXISTS public.history_trades; +DROP TABLE IF EXISTS public.history_operations; +DROP SEQUENCE IF EXISTS public.history_operation_participants_id_seq; +DROP TABLE IF EXISTS public.history_operation_participants; +DROP TABLE IF EXISTS public.history_ledgers; +DROP TABLE IF EXISTS public.history_effects; +DROP SEQUENCE IF EXISTS public.history_assets_id_seq; +DROP TABLE IF EXISTS public.history_assets; +DROP TABLE IF EXISTS public.history_accounts; +DROP SEQUENCE IF EXISTS public.history_accounts_id_seq; +DROP TABLE IF EXISTS public.gorp_migrations; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: gorp_migrations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE gorp_migrations ( + id text NOT NULL, + applied_at timestamp with time zone +); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_accounts_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_accounts ( + id bigint DEFAULT nextval('history_accounts_id_seq'::regclass) NOT NULL, + address character varying(64) +); + + +-- +-- Name: history_assets; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_assets ( + id integer NOT NULL, + asset_type character varying(64) NOT NULL, + asset_code character varying(12) NOT NULL, + asset_issuer character varying(56) NOT NULL +); + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_assets_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_assets_id_seq OWNED BY history_assets.id; + + +-- +-- Name: history_effects; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_effects ( + history_account_id bigint NOT NULL, + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + type integer NOT NULL, + details jsonb +); + + +-- +-- Name: history_ledgers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_ledgers ( + sequence integer NOT NULL, + ledger_hash character varying(64) NOT NULL, + previous_ledger_hash character varying(64), + transaction_count integer DEFAULT 0 NOT NULL, + operation_count integer DEFAULT 0 NOT NULL, + closed_at timestamp without time zone NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + importer_version integer DEFAULT 1 NOT NULL, + total_coins bigint NOT NULL, + fee_pool bigint NOT NULL, + base_fee integer NOT NULL, + base_reserve integer NOT NULL, + max_tx_set_size integer NOT NULL, + protocol_version integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: history_operation_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operation_participants ( + id integer NOT NULL, + history_operation_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_operation_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_operation_participants_id_seq OWNED BY history_operation_participants.id; + + +-- +-- Name: history_operations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operations ( + id bigint NOT NULL, + transaction_id bigint NOT NULL, + application_order integer NOT NULL, + type integer NOT NULL, + details jsonb, + source_account character varying(64) DEFAULT ''::character varying NOT NULL +); + + +-- +-- Name: history_trades; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_trades ( + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + ledger_closed_at timestamp without time zone NOT NULL, + offer_id bigint NOT NULL, + base_account_id bigint NOT NULL, + base_asset_id bigint NOT NULL, + base_amount bigint NOT NULL, + counter_account_id bigint NOT NULL, + counter_asset_id bigint NOT NULL, + counter_amount bigint NOT NULL, + base_is_seller boolean, + CONSTRAINT history_trades_base_amount_check CHECK ((base_amount > 0)), + CONSTRAINT history_trades_check CHECK ((base_asset_id < counter_asset_id)), + CONSTRAINT history_trades_counter_amount_check CHECK ((counter_amount > 0)) +); + + +-- +-- Name: history_transaction_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transaction_participants ( + id integer NOT NULL, + history_transaction_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_transaction_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_transaction_participants_id_seq OWNED BY history_transaction_participants.id; + + +-- +-- Name: history_transactions; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transactions ( + transaction_hash character varying(64) NOT NULL, + ledger_sequence integer NOT NULL, + application_order integer NOT NULL, + account character varying(64) NOT NULL, + account_sequence bigint NOT NULL, + fee_paid integer NOT NULL, + operation_count integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + tx_envelope text NOT NULL, + tx_result text NOT NULL, + tx_meta text NOT NULL, + tx_fee_meta text NOT NULL, + signatures character varying(96)[] DEFAULT '{}'::character varying[] NOT NULL, + memo_type character varying DEFAULT 'none'::character varying NOT NULL, + memo character varying, + time_bounds int8range +); + + +-- +-- Name: history_assets id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets ALTER COLUMN id SET DEFAULT nextval('history_assets_id_seq'::regclass); + + +-- +-- Name: history_operation_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants ALTER COLUMN id SET DEFAULT nextval('history_operation_participants_id_seq'::regclass); + + +-- +-- Name: history_transaction_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants ALTER COLUMN id SET DEFAULT nextval('history_transaction_participants_id_seq'::regclass); + + +-- +-- Data for Name: gorp_migrations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO gorp_migrations VALUES ('1_initial_schema.sql', '2017-10-25 12:02:41.355815-07'); +INSERT INTO gorp_migrations VALUES ('2_index_participants_by_toid.sql', '2017-10-25 12:02:41.35913-07'); +INSERT INTO gorp_migrations VALUES ('3_use_sequence_in_history_accounts.sql', '2017-10-25 12:02:41.361119-07'); +INSERT INTO gorp_migrations VALUES ('4_add_protocol_version.sql', '2017-10-25 12:02:41.365998-07'); +INSERT INTO gorp_migrations VALUES ('5_create_trades_table.sql', '2017-10-25 12:02:41.370443-07'); +INSERT INTO gorp_migrations VALUES ('6_create_assets_table.sql', '2017-10-25 12:02:41.373746-07'); +INSERT INTO gorp_migrations VALUES ('7_modify_trades_table.sql', '2017-10-25 12:02:41.381902-07'); + + +-- +-- Data for Name: history_accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_accounts VALUES (1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_accounts VALUES (2, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); +INSERT INTO history_accounts VALUES (3, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_accounts VALUES (4, 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON'); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_accounts_id_seq', 4, true); + + +-- +-- Data for Name: history_assets; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_assets_id_seq', 1, false); + + +-- +-- Data for Name: history_effects; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_effects VALUES (2, 8589938689, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589938689, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (2, 8589938689, 3, 10, '{"weight": 1, "public_key": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (3, 8589942785, 1, 0, '{"starting_balance": "6000.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589942785, 2, 3, '{"amount": "6000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (3, 8589942785, 3, 10, '{"weight": 1, "public_key": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU"}'); +INSERT INTO history_effects VALUES (4, 8589946881, 1, 0, '{"starting_balance": "6000.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589946881, 2, 3, '{"amount": "6000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (4, 8589946881, 3, 10, '{"weight": 1, "public_key": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON"}'); +INSERT INTO history_effects VALUES (4, 12884905985, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (3, 12884910081, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (4, 12884914177, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "BTC", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (3, 12884918273, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "BTC", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (3, 17179873281, 1, 2, '{"amount": "5000.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (2, 17179873281, 2, 3, '{"amount": "5000.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (4, 17179877377, 1, 2, '{"amount": "5000.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (2, 17179877377, 2, 3, '{"amount": "5000.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (3, 17179881473, 1, 2, '{"amount": "5000.0000000", "asset_code": "BTC", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (2, 17179881473, 2, 3, '{"amount": "5000.0000000", "asset_code": "BTC", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (4, 17179885569, 1, 2, '{"amount": "5000.0000000", "asset_code": "BTC", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (2, 17179885569, 2, 3, '{"amount": "5000.0000000", "asset_code": "BTC", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); + + +-- +-- Data for Name: history_ledgers; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_ledgers VALUES (1, '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', NULL, 0, 0, '1970-01-01 00:00:00', '2017-10-25 19:04:06.108751', '2017-10-25 19:04:06.108751', 4294967296, 10, 1000000000000000000, 0, 100, 100000000, 100, 0); +INSERT INTO history_ledgers VALUES (2, '1a6fb79a6a19684e174c2c5a99da6a92efd060648a69437ffbf3d0fc7e86ef0f', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', 3, 3, '2017-10-25 19:04:03', '2017-10-25 19:04:06.115197', '2017-10-25 19:04:06.115197', 8589934592, 10, 1000000000000000000, 300, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (3, '77c356a72c1a57e8369cc67ddfd8a38ba248d9d91ab395e60eab2047d0114f0d', '1a6fb79a6a19684e174c2c5a99da6a92efd060648a69437ffbf3d0fc7e86ef0f', 4, 4, '2017-10-25 19:04:04', '2017-10-25 19:04:06.15308', '2017-10-25 19:04:06.153081', 12884901888, 10, 1000000000000000000, 700, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (4, 'd3b6c4b1413fe5714b168b6c3f9da2ca27845dc5263649c665c30675d635c8ee', '77c356a72c1a57e8369cc67ddfd8a38ba248d9d91ab395e60eab2047d0114f0d', 4, 4, '2017-10-25 19:04:05', '2017-10-25 19:04:06.172862', '2017-10-25 19:04:06.172862', 17179869184, 10, 1000000000000000000, 1100, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (5, '9dcaab385ee4582fdf0e159f037e60db03450e22a8e496f22cd2e90e85891de4', 'd3b6c4b1413fe5714b168b6c3f9da2ca27845dc5263649c665c30675d635c8ee', 6, 6, '2017-10-25 19:04:06', '2017-10-25 19:04:06.201547', '2017-10-25 19:04:06.201547', 21474836480, 10, 1000000000000000000, 1700, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (6, '0812b68ab63cce6298205b562b2bb9584e8092d4a28a8969a21cf62545423eb7', '9dcaab385ee4582fdf0e159f037e60db03450e22a8e496f22cd2e90e85891de4', 6, 6, '2017-10-25 19:04:07', '2017-10-25 19:04:06.223053', '2017-10-25 19:04:06.223053', 25769803776, 10, 1000000000000000000, 2300, 100, 100000000, 10000, 8); + + +-- +-- Data for Name: history_operation_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operation_participants VALUES (1, 8589938689, 1); +INSERT INTO history_operation_participants VALUES (2, 8589938689, 2); +INSERT INTO history_operation_participants VALUES (3, 8589942785, 1); +INSERT INTO history_operation_participants VALUES (4, 8589942785, 3); +INSERT INTO history_operation_participants VALUES (5, 8589946881, 1); +INSERT INTO history_operation_participants VALUES (6, 8589946881, 4); +INSERT INTO history_operation_participants VALUES (7, 12884905985, 4); +INSERT INTO history_operation_participants VALUES (8, 12884910081, 3); +INSERT INTO history_operation_participants VALUES (9, 12884914177, 4); +INSERT INTO history_operation_participants VALUES (10, 12884918273, 3); +INSERT INTO history_operation_participants VALUES (11, 17179873281, 2); +INSERT INTO history_operation_participants VALUES (12, 17179873281, 3); +INSERT INTO history_operation_participants VALUES (13, 17179877377, 2); +INSERT INTO history_operation_participants VALUES (14, 17179877377, 4); +INSERT INTO history_operation_participants VALUES (15, 17179881473, 2); +INSERT INTO history_operation_participants VALUES (16, 17179881473, 3); +INSERT INTO history_operation_participants VALUES (17, 17179885569, 2); +INSERT INTO history_operation_participants VALUES (18, 17179885569, 4); +INSERT INTO history_operation_participants VALUES (19, 21474840577, 4); +INSERT INTO history_operation_participants VALUES (20, 21474844673, 3); +INSERT INTO history_operation_participants VALUES (21, 21474848769, 4); +INSERT INTO history_operation_participants VALUES (22, 21474852865, 3); +INSERT INTO history_operation_participants VALUES (23, 21474856961, 4); +INSERT INTO history_operation_participants VALUES (24, 21474861057, 3); +INSERT INTO history_operation_participants VALUES (25, 25769807873, 3); +INSERT INTO history_operation_participants VALUES (26, 25769811969, 4); +INSERT INTO history_operation_participants VALUES (27, 25769816065, 3); +INSERT INTO history_operation_participants VALUES (28, 25769820161, 4); +INSERT INTO history_operation_participants VALUES (29, 25769824257, 4); +INSERT INTO history_operation_participants VALUES (30, 25769828353, 3); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_operation_participants_id_seq', 30, true); + + +-- +-- Data for Name: history_operations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operations VALUES (8589938689, 8589938688, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (8589942785, 8589942784, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "starting_balance": "6000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (8589946881, 8589946880, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", "starting_balance": "6000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (12884905985, 12884905984, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "trustor": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON'); +INSERT INTO history_operations VALUES (12884910081, 12884910080, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "trustor": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (12884914177, 12884914176, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "trustor": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", "asset_code": "BTC", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON'); +INSERT INTO history_operations VALUES (12884918273, 12884918272, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "trustor": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "asset_code": "BTC", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (17179873281, 17179873280, 1, 1, '{"to": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "from": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "amount": "5000.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); +INSERT INTO history_operations VALUES (17179877377, 17179877376, 1, 1, '{"to": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", "from": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "amount": "5000.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); +INSERT INTO history_operations VALUES (17179881473, 17179881472, 1, 1, '{"to": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "from": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "amount": "5000.0000000", "asset_code": "BTC", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); +INSERT INTO history_operations VALUES (17179885569, 17179885568, 1, 1, '{"to": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", "from": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "amount": "5000.0000000", "asset_code": "BTC", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); +INSERT INTO history_operations VALUES (21474840577, 21474840576, 1, 3, '{"price": "15.0000000", "amount": "10.0000000", "price_r": {"d": 1, "n": 15}, "offer_id": 0, "buying_asset_type": "native", "selling_asset_code": "USD", "selling_asset_type": "credit_alphanum4", "selling_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON'); +INSERT INTO history_operations VALUES (21474844673, 21474844672, 1, 3, '{"price": "0.1000000", "amount": "100.0000000", "price_r": {"d": 10, "n": 1}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474848769, 21474848768, 1, 3, '{"price": "20.0000000", "amount": "100.0000000", "price_r": {"d": 1, "n": 20}, "offer_id": 0, "buying_asset_type": "native", "selling_asset_code": "USD", "selling_asset_type": "credit_alphanum4", "selling_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON'); +INSERT INTO history_operations VALUES (21474852865, 21474852864, 1, 3, '{"price": "0.1111111", "amount": "900.0000000", "price_r": {"d": 9, "n": 1}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474856961, 21474856960, 1, 3, '{"price": "50.0000000", "amount": "1000.0000000", "price_r": {"d": 1, "n": 50}, "offer_id": 0, "buying_asset_type": "native", "selling_asset_code": "USD", "selling_asset_type": "credit_alphanum4", "selling_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON'); +INSERT INTO history_operations VALUES (21474861057, 21474861056, 1, 3, '{"price": "0.2000000", "amount": "5000.0000000", "price_r": {"d": 5, "n": 1}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (25769807873, 25769807872, 1, 3, '{"price": "0.1000000", "amount": "100.0000000", "price_r": {"d": 10, "n": 1}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_code": "BTC", "selling_asset_type": "credit_alphanum4", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "selling_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (25769811969, 25769811968, 1, 3, '{"price": "15.0000000", "amount": "10.0000000", "price_r": {"d": 1, "n": 15}, "offer_id": 0, "buying_asset_code": "BTC", "buying_asset_type": "credit_alphanum4", "selling_asset_code": "USD", "selling_asset_type": "credit_alphanum4", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "selling_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON'); +INSERT INTO history_operations VALUES (25769816065, 25769816064, 1, 3, '{"price": "0.1111111", "amount": "900.0000000", "price_r": {"d": 9, "n": 1}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_code": "BTC", "selling_asset_type": "credit_alphanum4", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "selling_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (25769820161, 25769820160, 1, 3, '{"price": "20.0000000", "amount": "100.0000000", "price_r": {"d": 1, "n": 20}, "offer_id": 0, "buying_asset_code": "BTC", "buying_asset_type": "credit_alphanum4", "selling_asset_code": "USD", "selling_asset_type": "credit_alphanum4", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "selling_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON'); +INSERT INTO history_operations VALUES (25769824257, 25769824256, 1, 3, '{"price": "50.0000000", "amount": "1000.0000000", "price_r": {"d": 1, "n": 50}, "offer_id": 0, "buying_asset_code": "BTC", "buying_asset_type": "credit_alphanum4", "selling_asset_code": "USD", "selling_asset_type": "credit_alphanum4", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "selling_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON'); +INSERT INTO history_operations VALUES (25769828353, 25769828352, 1, 3, '{"price": "0.2000000", "amount": "5000.0000000", "price_r": {"d": 5, "n": 1}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_code": "BTC", "selling_asset_type": "credit_alphanum4", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "selling_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); + + +-- +-- Data for Name: history_trades; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: history_transaction_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transaction_participants VALUES (1, 8589938688, 1); +INSERT INTO history_transaction_participants VALUES (2, 8589938688, 2); +INSERT INTO history_transaction_participants VALUES (3, 8589942784, 1); +INSERT INTO history_transaction_participants VALUES (4, 8589942784, 3); +INSERT INTO history_transaction_participants VALUES (5, 8589946880, 1); +INSERT INTO history_transaction_participants VALUES (6, 8589946880, 4); +INSERT INTO history_transaction_participants VALUES (7, 12884905984, 4); +INSERT INTO history_transaction_participants VALUES (8, 12884910080, 3); +INSERT INTO history_transaction_participants VALUES (9, 12884914176, 4); +INSERT INTO history_transaction_participants VALUES (10, 12884918272, 3); +INSERT INTO history_transaction_participants VALUES (11, 17179873280, 2); +INSERT INTO history_transaction_participants VALUES (12, 17179873280, 3); +INSERT INTO history_transaction_participants VALUES (13, 17179877376, 2); +INSERT INTO history_transaction_participants VALUES (14, 17179877376, 4); +INSERT INTO history_transaction_participants VALUES (15, 17179881472, 2); +INSERT INTO history_transaction_participants VALUES (16, 17179881472, 3); +INSERT INTO history_transaction_participants VALUES (17, 17179885568, 2); +INSERT INTO history_transaction_participants VALUES (18, 17179885568, 4); +INSERT INTO history_transaction_participants VALUES (19, 21474840576, 4); +INSERT INTO history_transaction_participants VALUES (20, 21474844672, 3); +INSERT INTO history_transaction_participants VALUES (21, 21474848768, 4); +INSERT INTO history_transaction_participants VALUES (22, 21474852864, 3); +INSERT INTO history_transaction_participants VALUES (23, 21474856960, 4); +INSERT INTO history_transaction_participants VALUES (24, 21474861056, 3); +INSERT INTO history_transaction_participants VALUES (25, 25769807872, 3); +INSERT INTO history_transaction_participants VALUES (26, 25769811968, 4); +INSERT INTO history_transaction_participants VALUES (27, 25769816064, 3); +INSERT INTO history_transaction_participants VALUES (28, 25769820160, 4); +INSERT INTO history_transaction_participants VALUES (29, 25769824256, 4); +INSERT INTO history_transaction_participants VALUES (30, 25769828352, 3); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_transaction_participants_id_seq', 30, true); + + +-- +-- Data for Name: history_transactions; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transactions VALUES ('db398eb4ae89756325643cad21c94e13bfc074b323ee83e141bf701a5d904f1b', 2, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 1, 100, 1, '2017-10-25 19:04:06.115776', '2017-10-25 19:04:06.115776', 8589938688, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACVAvkAAAAAAAAAAABVvwF9wAAAEAYjQcPT2G5hqnBmgGGeg9J8l4c1EnUlxklElH9sqZr0971F6OLWfe/m4kpFtI+sI0i1qLit5A0JyWnbhYLW5oD', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2sVNYGtQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{GI0HD09huYapwZoBhnoPSfJeHNRJ1JcZJRJR/bKma9Pe9Reji1n3v5uJKRbSPrCNItai4reQNCclp24WC1uaAw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('67c059e1118f4f79b83648e5769b8bf1f1fbf0259d90d2e4a5a8aa0852c41687', 2, 2, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 2, 100, 1, '2017-10-25 19:04:06.13473', '2017-10-25 19:04:06.13473', 8589942784, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAN+EdYAAAAAAAAAAABVvwF9wAAAEDUoLr1FIIMdF1JOK2RVg4EDQvL+exej1s795GdZKz5tJB94pDkbAiz8k+mPv0OVuST8ah1MzkZYglos0c1AcID', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHWAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2o1sQwtQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/84AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{1KC69RSCDHRdSTitkVYOBA0Ly/nsXo9bO/eRnWSs+bSQfeKQ5GwIs/JPpj79Dlbkk/GodTM5GWIJaLNHNQHCAw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('f7cb8309318368f694c8830bf789841e7e2c46dce30e60969d88bd0ce588cbe9', 2, 3, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 3, 100, 1, '2017-10-25 19:04:06.141563', '2017-10-25 19:04:06.141563', 8589946880, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAAN+EdYAAAAAAAAAAABVvwF9wAAAEAQAaCgnhAHvWviyyciJH3kp9yoTQtn2SFjbCqLUUPBKzcRt8huITE9etfxlEBrW4iiJkrgyQeOCq/IGbGe2RAA', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAADfhHWAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2lWLJatQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/7UAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{EAGgoJ4QB71r4ssnIiR95KfcqE0LZ9khY2wqi1FDwSs3EbfIbiExPXrX8ZRAa1uIoiZK4MkHjgqvyBmxntkQAA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('811192c38643df73c015a5a1d77b802dff05d4f50fc6d10816aa75c0a6109f9a', 3, 1, 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 8589934593, 100, 1, '2017-10-25 19:04:06.153667', '2017-10-25 19:04:06.153667', 12884905984, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAFvFIhaAAAAQPlg7GLhJg0x7jpAw1Ew6H2XF6yRImfJIwFfx09Nui5btOJAFewFANfOaAB8FQZl5p3A5g3k6DHDigfUNUD16gc=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAADfhHVzgAAAACAAAAAgAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1gAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1ecAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{+WDsYuEmDTHuOkDDUTDofZcXrJEiZ8kjAV/HT026Llu04kAV7AUA185oAHwVBmXmncDmDeToMcOKB9Q1QPXqBw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('bd486dbdd02d460817671c4a5a7e9d6e865ca29cb41e62d7aaf70a2fee5b36de', 3, 2, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934593, 100, 1, '2017-10-25 19:04:06.158169', '2017-10-25 19:04:06.158169', 12884910080, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAGu5L5MAAAAQB9kmKW2q3v7Qfy8PMekEb1TTI5ixqkI0BogXrOt7gO162Qbkh2dSTUfeDovc0PAafhDXxthVAlsLujlBmyjBAY=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHVzgAAAACAAAAAgAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1gAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1ecAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{H2SYpbare/tB/Lw8x6QRvVNMjmLGqQjQGiBes63uA7XrZBuSHZ1JNR94Oi9zQ8Bp+ENfG2FUCWwu6OUGbKMEBg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('7df857c23c7dfeb974d7c3956775685a8edfa8496bb781fd346c8e2025fad9bf', 3, 3, 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 8589934594, 100, 1, '2017-10-25 19:04:06.161504', '2017-10-25 19:04:06.161504', 12884914176, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAFvFIhaAAAAQBH/ML6+RzWquFPh8gLF2RuZzYtjjpPeHv/od9M74xlU09Xa4a5e1NhMtMSRIoLItg1EaDWE9zvtHflVWIAaSwQ=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAADfhHVzgAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAADAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1c4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{Ef8wvr5HNaq4U+HyAsXZG5nNi2OOk94e/+h30zvjGVTT1drhrl7U2Ey0xJEigsi2DURoNYT3O+0d+VVYgBpLBA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('3476bc649563488cf025d82790aa9c44649188232b150d2864d13fe9face5406', 3, 4, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934594, 100, 1, '2017-10-25 19:04:06.164815', '2017-10-25 19:04:06.164815', 12884918272, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAGu5L5MAAAAQEKBv+8zL1epwxC+sJhEYPmbjL9XScXtctoMIdet5dhgk7YJVJzAnRSgYTvfyoIJKJdQmX66uh2o+rG9K6JImgY=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHVzgAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1c4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{QoG/7zMvV6nDEL6wmERg+ZuMv1dJxe1y2gwh163l2GCTtglUnMCdFKBhO9/Kggkol1CZfrq6Haj6sb0rokiaBg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('ea945436a3b650efa88063e737518cf1928d9a43d1aba3ec684704f160b3733e', 4, 1, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 8589934593, 100, 1, '2017-10-25 19:04:06.173553', '2017-10-25 19:04:06.173553', 17179873280, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAukO3QAAAAAAAAAAAH5kC3vAAAAQH/ZkzR/eC0F7xP9zApeHvMH7nqetzaSdYh8WHyrwwvbEnx4Db6gz0grnRJBJS66OZbGmCk7yzHm8DkJ7bJ4QAU=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AH//////////AAAAAQAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{f9mTNH94LQXvE/3MCl4e8wfuep63NpJ1iHxYfKvDC9sSfHgNvqDPSCudEkElLro5lsaYKTvLMebwOQntsnhABQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('416a63c3f1491537698cdb6f981097ed8e44ca27d2d9006bd0ba68832ebf9d55', 4, 2, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 8589934594, 100, 1, '2017-10-25 19:04:06.180653', '2017-10-25 19:04:06.180653', 17179877376, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAukO3QAAAAAAAAAAAH5kC3vAAAAQFFGLGFFXbEDRdk2eFyQATNpHuqO/sFrpqsxmNNwGa+MLibNQJLDXWafC4W8KMKQ/hE0M0TLxZeu/O8tYnBuwwA=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AH//////////AAAAAQAAAAAAAAAA', 'AAAAAQAAAAEAAAAEAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+M4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{UUYsYUVdsQNF2TZ4XJABM2ke6o7+wWumqzGY03AZr4wuJs1AksNdZp8LhbwowpD+ETQzRMvFl6787y1icG7DAA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('c29948d1ca87bad2e3299c1b018c996c22ff5d56f5753bc38f0fd88c4d2c5d94', 4, 3, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 8589934595, 100, 1, '2017-10-25 19:04:06.185666', '2017-10-25 19:04:06.185666', 17179881472, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAukO3QAAAAAAAAAAAH5kC3vAAAAQLn0NeCsam5YrmtsMJQVOLyOTPqDb7SMTCZGofm5ShU6fcl3PPieInQNtk1FmRVeUxdYX1rsW2KH1HQbJ644Hw0=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AH//////////AAAAAQAAAAAAAAAA', 'AAAAAQAAAAEAAAAEAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+LUAAAAAgAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{ufQ14Kxqbliua2wwlBU4vI5M+oNvtIxMJkah+blKFTp9yXc8+J4idA22TUWZFV5TF1hfWuxbYofUdBsnrjgfDQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('554ea22913ebf01fc4b3a4d60b59ae28f379b800d5b6da40a6987a53ebd87f07', 4, 4, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 8589934596, 100, 1, '2017-10-25 19:04:06.191295', '2017-10-25 19:04:06.191295', 17179885568, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAukO3QAAAAAAAAAAAH5kC3vAAAAQF34mYyRLbVT42QtFuY5UN0sr9EcuE3ltA/9yAxiNOvukbVTOaz86uCXpEZlX1FnExYDZwOZJWVXfsbdovbVUwc=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AH//////////AAAAAQAAAAAAAAAA', 'AAAAAQAAAAEAAAAEAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+JwAAAAAgAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{XfiZjJEttVPjZC0W5jlQ3Syv0Ry4TeW0D/3IDGI06+6RtVM5rPzq4JekRmVfUWcTFgNnA5klZVd+xt2i9tVTBw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('6fcbcfbcde0ad6e2da47126334413984d7337dffa9c537fb0569f848b3d2f6f2', 5, 1, 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 8589934595, 100, 1, '2017-10-25 19:04:06.202219', '2017-10-25 19:04:06.202219', 21474840576, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAAAAAABfXhAAAAAA8AAAABAAAAAAAAAAAAAAAAAAAAAW8UiFoAAABAxsghzEhvQmICVccjSoy9Q2LUjXol62JlBd8shmRwqO9XyelpSY554bdmHq6xqc6jYZow955E47PWqCEfeVhhCw==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAAAAAAEAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAAAAAABfXhAAAAAA8AAAABAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAAAAAAEAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAAAAAABfXhAAAAAA8AAAABAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAADfhHVgwAAAACAAAABQAAAAMAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAADAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1c4AAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1bUAAAAAgAAAAMAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{xsghzEhvQmICVccjSoy9Q2LUjXol62JlBd8shmRwqO9XyelpSY554bdmHq6xqc6jYZow955E47PWqCEfeVhhCw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('f42caf0be4aa867ffa832f8f925b75cf89b5615528016eb7ea47a285d2919a6c', 5, 2, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934595, 100, 1, '2017-10-25 19:04:06.204701', '2017-10-25 19:04:06.204701', 21474844672, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAAAAAAEAAAAKAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAeyObGhkwxonX/VI/jcfjrHOdhMDI9U7u4KxVjA3XHqkW4ENworQ5mZDRjj282acAG8cMfWGvYfFcQVVdX62nCw==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAIAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAAAAAAEAAAAKAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAIAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAAAAAAEAAAAKAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHVgwAAAACAAAABQAAAAMAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1c4AAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1bUAAAAAgAAAAMAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{eyObGhkwxonX/VI/jcfjrHOdhMDI9U7u4KxVjA3XHqkW4ENworQ5mZDRjj282acAG8cMfWGvYfFcQVVdX62nCw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('e9185c1cd138c5c15625531cfb527c50b9b84fadaa1a45c749f7af9647dec450', 5, 3, 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 8589934596, 100, 1, '2017-10-25 19:04:06.207878', '2017-10-25 19:04:06.207878', 21474848768, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAAAAAAO5rKAAAAABQAAAABAAAAAAAAAAAAAAAAAAAAAW8UiFoAAABAgI2ziUivGtOdn4yh1DKts6kzH4kZroEEHAUKspjBt8JrewsqrY1vOvn/5ob+x5EGmpEOFaDB/mINM33OASmyAA==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAAAAAAMAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAAAAAAO5rKAAAAABQAAAABAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAAAAAAMAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAAAAAAO5rKAAAAABQAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAADfhHVgwAAAACAAAABQAAAAQAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1ZwAAAAAgAAAAQAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{gI2ziUivGtOdn4yh1DKts6kzH4kZroEEHAUKspjBt8JrewsqrY1vOvn/5ob+x5EGmpEOFaDB/mINM33OASmyAA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('dcd151fda3242912d2fe71e0181f80806f081a61cf4746873b2ec15bb1bae395', 5, 4, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934596, 100, 1, '2017-10-25 19:04:06.211015', '2017-10-25 19:04:06.211015', 21474852864, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACGHEaAAAAAAEAAAAJAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAqPx69qSD18N3YK5zdNznZdpXBkbohJTuCKnYl0dQPAE/HWxA8fNfVggVZtGaGk8YMcH/4dvB7zeGF9SEQoSQBg==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAQAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACGHEaAAAAAAEAAAAJAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAQAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACGHEaAAAAAAEAAAAJAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHVgwAAAACAAAABQAAAAQAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1ZwAAAAAgAAAAQAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{qPx69qSD18N3YK5zdNznZdpXBkbohJTuCKnYl0dQPAE/HWxA8fNfVggVZtGaGk8YMcH/4dvB7zeGF9SEQoSQBg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('cd12e89db9e04541e37c796ebaae118d36f3bf9dcd3dde4ae0af96b768ffe71f', 5, 5, 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 8589934597, 100, 1, '2017-10-25 19:04:06.213435', '2017-10-25 19:04:06.213435', 21474856960, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAAAAACVAvkAAAAADIAAAABAAAAAAAAAAAAAAAAAAAAAW8UiFoAAABA5Xo6CV4r7iFHfyeH2p1RsjxOyoXGqhom3bEbhCMeTQNK2+UYCyWnmhZR6yRiWge9MSfcFhiv1LafatF+SW+EAg==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAAAAAAUAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAAAAACVAvkAAAAADIAAAABAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAAAAAAUAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAAAAACVAvkAAAAADIAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAADfhHVgwAAAACAAAABQAAAAUAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1YMAAAAAgAAAAUAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{5Xo6CV4r7iFHfyeH2p1RsjxOyoXGqhom3bEbhCMeTQNK2+UYCyWnmhZR6yRiWge9MSfcFhiv1LafatF+SW+EAg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('f93841b864bc4ce3ddcc2e2ab4378bfd443ecd6eee85b95d634da5c00b0cd667', 5, 6, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934597, 100, 1, '2017-10-25 19:04:06.215672', '2017-10-25 19:04:06.215672', 21474861056, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAO6P8u7hte5mLhMJe3EDbGFmBHKg/kN03Gfvwao0kYaGv7wHYouK/zhWBLu3A+tB4haCav2a/dO1JiND6xX11AA==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAYAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AAAAAAEAAAAFAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAYAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHVgwAAAACAAAABQAAAAUAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1YMAAAAAgAAAAUAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{O6P8u7hte5mLhMJe3EDbGFmBHKg/kN03Gfvwao0kYaGv7wHYouK/zhWBLu3A+tB4haCav2a/dO1JiND6xX11AA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('701efa0b0226e961d31df74f4282982b4048b2b9849ea3f7e02a418511d7a9c5', 6, 1, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934598, 100, 1, '2017-10-25 19:04:06.223551', '2017-10-25 19:04:06.223551', 25769807872, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAGAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADuaygAAAAABAAAACgAAAAAAAAAAAAAAAAAAAAGu5L5MAAAAQOgEzlrfIyzY3OVuWdROUj73yLBItV1mpZlWOOZMg568Vjq16aseyTgvUUBvWmBQOjdLLDsY7vU3SR8RAgiCMAk=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAcAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADuaygAAAAABAAAACgAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAYAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAcAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADuaygAAAAABAAAACgAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1TgAAAAAgAAAAgAAAAGAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', 'AAAAAgAAAAMAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1YMAAAAAgAAAAUAAAAFAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1WoAAAAAgAAAAYAAAAFAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{6ATOWt8jLNjc5W5Z1E5SPvfIsEi1XWalmVY45kyDnrxWOrXpqx7JOC9RQG9aYFA6N0ssOxju9TdJHxECCIIwCQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('82ebbbd502be295802887ff05f5cc888c4357a3c6c81f6b1dbdde1e3fb3989b1', 6, 2, 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 8589934598, 100, 1, '2017-10-25 19:04:06.225798', '2017-10-25 19:04:06.225798', 25769811968, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAAGAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFCVEMAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAAX14QAAAAAPAAAAAQAAAAAAAAAAAAAAAAAAAAFvFIhaAAAAQJRZS+tNQVLwpcLQhdjJdPLhzMtK0P8YLmjT4BvGjoG7f5/c9t+sRfq5J3XG47Ewn+SzOnc9VV4QwvLLdusiwwA=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAAAAAAgAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFCVEMAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAAX14QAAAAAPAAAAAQAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAYAAAACAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAAAAAAgAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFCVEMAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAAX14QAAAAAPAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1TgAAAAAgAAAAgAAAAGAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', 'AAAAAgAAAAMAAAAFAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1YMAAAAAgAAAAUAAAAFAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1WoAAAAAgAAAAYAAAAFAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{lFlL601BUvClwtCF2Ml08uHMy0rQ/xguaNPgG8aOgbt/n9z236xF+rkndcbjsTCf5LM6dz1VXhDC8st26yLDAA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('5dbdfd3ab91f4a52a11ba92c60334bca0d4aad951fe3d159b373afaba1632ea1', 6, 3, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934599, 100, 1, '2017-10-25 19:04:06.228058', '2017-10-25 19:04:06.228058', 25769816064, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAHAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAhhxGgAAAAABAAAACQAAAAAAAAAAAAAAAAAAAAGu5L5MAAAAQDsHLzD/7q/tBaFt+vL8svn4y3q1AFxMIYuT8NMzbswVsCUcLI1QlkxBQWtB7SjoDQMtd6dJEaO2upmPX9P3PAQ=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAkAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAhhxGgAAAAABAAAACQAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAYAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAkAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAhhxGgAAAAABAAAACQAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1TgAAAAAgAAAAgAAAAHAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', 'AAAAAQAAAAEAAAAGAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1VEAAAAAgAAAAcAAAAFAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{OwcvMP/ur+0FoW368vyy+fjLerUAXEwhi5Pw0zNuzBWwJRwsjVCWTEFBa0HtKOgNAy13p0kRo7a6mY9f0/c8BA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('a415b192f3730a3ef139035f3c67e3b10a4ea69ff5145f3a76615c1a82400dc9', 6, 4, 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 8589934599, 100, 1, '2017-10-25 19:04:06.231229', '2017-10-25 19:04:06.231229', 25769820160, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAAHAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFCVEMAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADuaygAAAAAUAAAAAQAAAAAAAAAAAAAAAAAAAAFvFIhaAAAAQNPYjTyT7/mYaa2QkbFzDm0jLpLDhJtZA+rJNJR7STfuBcUJXc5W+UwWs/wI32iwu4ieU3la6pJIkwI/0dq6dQw=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAAAAAAoAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFCVEMAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADuaygAAAAAUAAAAAQAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAYAAAACAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAAAAAAoAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFCVEMAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADuaygAAAAAUAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1TgAAAAAgAAAAgAAAAHAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', 'AAAAAQAAAAEAAAAGAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1VEAAAAAgAAAAcAAAAFAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{09iNPJPv+ZhprZCRsXMObSMuksOEm1kD6sk0lHtJN+4FxQldzlb5TBaz/AjfaLC7iJ5TeVrqkkiTAj/R2rp1DA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('483298f40a79f46f684c41d22d4d902f1d3feb53abe5551d3ad69dc832408055', 6, 5, 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 8589934600, 100, 1, '2017-10-25 19:04:06.233785', '2017-10-25 19:04:06.233785', 25769824256, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFCVEMAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAlQL5AAAAAAyAAAAAQAAAAAAAAAAAAAAAAAAAAFvFIhaAAAAQOEPkO/tqT4kQBzNlTOezZtiybuEk9mMmxGjLlmHueW8QtUS4J1O3Why4NKh8vwmonKQ1uMpCM/zYRzumjSEuAk=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAAAAAAsAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFCVEMAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAlQL5AAAAAAyAAAAAQAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAYAAAACAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAAAAAAsAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFCVEMAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAlQL5AAAAAAyAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1TgAAAAAgAAAAgAAAAIAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', 'AAAAAQAAAAEAAAAGAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1TgAAAAAgAAAAgAAAAFAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{4Q+Q7+2pPiRAHM2VM57Nm2LJu4ST2YybEaMuWYe55bxC1RLgnU7daHLg0qHy/CaicpDW4ykIz/NhHO6aNIS4CQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('dfcf019e8c71290048dcd0e4fa01a6d7278386b3e6a793b4c53dd7751cd289e9', 6, 6, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934600, 100, 1, '2017-10-25 19:04:06.236021', '2017-10-25 19:04:06.236021', 25769828352, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAC6Q7dAAAAAABAAAABQAAAAAAAAAAAAAAAAAAAAGu5L5MAAAAQJ6GsmKxejhISmKuLIdF6dixDwAiGqGCGxJ53WOoFAxuUdpAvr3xV5Ihv/nj8dg5RtBzb8KYCoOYTibFRDMrBwU=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAwAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAC6Q7dAAAAAABAAAABQAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAYAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAwAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAC6Q7dAAAAAABAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1TgAAAAAgAAAAgAAAAIAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', 'AAAAAQAAAAEAAAAGAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1TgAAAAAgAAAAgAAAAFAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{noayYrF6OEhKYq4sh0Xp2LEPACIaoYIbEnndY6gUDG5R2kC+vfFXkiG/+ePx2DlG0HNvwpgKg5hOJsVEMysHBQ==}', 'none', NULL, NULL); + + +-- +-- Name: gorp_migrations gorp_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY gorp_migrations + ADD CONSTRAINT gorp_migrations_pkey PRIMARY KEY (id); + + +-- +-- Name: history_assets history_assets_asset_code_asset_type_asset_issuer_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_asset_code_asset_type_asset_issuer_key UNIQUE (asset_code, asset_type, asset_issuer); + + +-- +-- Name: history_assets history_assets_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_pkey PRIMARY KEY (id); + + +-- +-- Name: history_operation_participants history_operation_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants + ADD CONSTRAINT history_operation_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: history_transaction_participants history_transaction_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants + ADD CONSTRAINT history_transaction_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: asset_by_issuer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX asset_by_issuer ON history_assets USING btree (asset_issuer); + + +-- +-- Name: by_account; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_account ON history_transactions USING btree (account, account_sequence); + + +-- +-- Name: by_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_hash ON history_transactions USING btree (transaction_hash); + + +-- +-- Name: by_ledger; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_ledger ON history_transactions USING btree (ledger_sequence, application_order); + + +-- +-- Name: hist_e_by_order; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_by_order ON history_effects USING btree (history_operation_id, "order"); + + +-- +-- Name: hist_e_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_id ON history_effects USING btree (history_account_id, history_operation_id, "order"); + + +-- +-- Name: hist_op_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_op_p_id ON history_operation_participants USING btree (history_account_id, history_operation_id); + + +-- +-- Name: hist_tx_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_tx_p_id ON history_transaction_participants USING btree (history_account_id, history_transaction_id); + + +-- +-- Name: hop_by_hoid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX hop_by_hoid ON history_operation_participants USING btree (history_operation_id); + + +-- +-- Name: hs_ledger_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_ledger_by_id ON history_ledgers USING btree (id); + + +-- +-- Name: hs_transaction_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_transaction_by_id ON history_transactions USING btree (id); + + +-- +-- Name: htp_by_htid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htp_by_htid ON history_transaction_participants USING btree (history_transaction_id); + + +-- +-- Name: htrd_by_offer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_by_offer ON history_trades USING btree (offer_id); + + +-- +-- Name: htrd_counter_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_counter_lookup ON history_trades USING btree (counter_asset_id); + + +-- +-- Name: htrd_pair_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_pair_time_lookup ON history_trades USING btree (base_asset_id, counter_asset_id, ledger_closed_at); + + +-- +-- Name: htrd_pid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX htrd_pid ON history_trades USING btree (history_operation_id, "order"); + + +-- +-- Name: htrd_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_time_lookup ON history_trades USING btree (ledger_closed_at); + + +-- +-- Name: index_history_accounts_on_address; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_address ON history_accounts USING btree (address); + + +-- +-- Name: index_history_accounts_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_id ON history_accounts USING btree (id); + + +-- +-- Name: index_history_effects_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_effects_on_type ON history_effects USING btree (type); + + +-- +-- Name: index_history_ledgers_on_closed_at; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_closed_at ON history_ledgers USING btree (closed_at); + + +-- +-- Name: index_history_ledgers_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_id ON history_ledgers USING btree (id); + + +-- +-- Name: index_history_ledgers_on_importer_version; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_importer_version ON history_ledgers USING btree (importer_version); + + +-- +-- Name: index_history_ledgers_on_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_ledger_hash ON history_ledgers USING btree (ledger_hash); + + +-- +-- Name: index_history_ledgers_on_previous_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_previous_ledger_hash ON history_ledgers USING btree (previous_ledger_hash); + + +-- +-- Name: index_history_ledgers_on_sequence; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_sequence ON history_ledgers USING btree (sequence); + + +-- +-- Name: index_history_operations_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_operations_on_id ON history_operations USING btree (id); + + +-- +-- Name: index_history_operations_on_transaction_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_transaction_id ON history_operations USING btree (transaction_id); + + +-- +-- Name: index_history_operations_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_type ON history_operations USING btree (type); + + +-- +-- Name: index_history_transactions_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_transactions_on_id ON history_transactions USING btree (id); + + +-- +-- Name: trade_effects_by_order_book; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX trade_effects_by_order_book ON history_effects USING btree (((details ->> 'sold_asset_type'::text)), ((details ->> 'sold_asset_code'::text)), ((details ->> 'sold_asset_issuer'::text)), ((details ->> 'bought_asset_type'::text)), ((details ->> 'bought_asset_code'::text)), ((details ->> 'bought_asset_issuer'::text))) WHERE (type = 33); + + +-- +-- Name: history_trades history_trades_base_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_account_id_fkey FOREIGN KEY (base_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_base_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_asset_id_fkey FOREIGN KEY (base_asset_id) REFERENCES history_assets(id); + + +-- +-- Name: history_trades history_trades_counter_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_account_id_fkey FOREIGN KEY (counter_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_counter_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_asset_id_fkey FOREIGN KEY (counter_asset_id) REFERENCES history_assets(id); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/order_books.rb b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/order_books.rb new file mode 100644 index 0000000..04168c6 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/order_books.rb @@ -0,0 +1,43 @@ +run_recipe File.dirname(__FILE__) + "/_common_accounts.rb" + +use_manual_close + +create_account :usd_gateway +create_account :scott, :master, "6000.0" +create_account :andrew, :master, "6000.0" + +close_ledger + +trust :scott, :usd_gateway, "USD" +trust :andrew, :usd_gateway, "USD" + +trust :scott, :usd_gateway, "BTC" +trust :andrew, :usd_gateway, "BTC" + +close_ledger + +payment :usd_gateway, :scott, ["USD", :usd_gateway, "5000.0"] +payment :usd_gateway, :andrew, ["USD", :usd_gateway, "5000.0"] + +payment :usd_gateway, :scott, ["BTC", :usd_gateway, "5000.0"] +payment :usd_gateway, :andrew, ["BTC", :usd_gateway, "5000.0"] + +close_ledger + +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "10", "10.0" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "100", "9.0" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "5.0" + +offer :andrew, {sell:["USD", :usd_gateway], for: :native}, "10", "15.0" +offer :andrew, {sell:["USD", :usd_gateway], for: :native}, "100", "20.0" +offer :andrew, {sell:["USD", :usd_gateway], for: :native}, "1000", "50.0" + +close_ledger + +offer :scott, {buy:["USD", :usd_gateway], with: ["BTC", :usd_gateway]}, 10, "10.0" +offer :scott, {buy:["USD", :usd_gateway], with: ["BTC", :usd_gateway]}, 100, "9.0" +offer :scott, {buy:["USD", :usd_gateway], with: ["BTC", :usd_gateway]}, 1000, "5.0" + +offer :andrew, {sell:["USD", :usd_gateway], for: ["BTC", :usd_gateway]}, 10, "15.0" +offer :andrew, {sell:["USD", :usd_gateway], for: ["BTC", :usd_gateway]}, 100, "20.0" +offer :andrew, {sell:["USD", :usd_gateway], for: ["BTC", :usd_gateway]}, 1000, "50.0" diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/order_books_310-core.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/order_books_310-core.sql new file mode 100644 index 0000000..e2cd53d --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/order_books_310-core.sql @@ -0,0 +1,814 @@ +running recipe +recipe finished, closing ledger +ledger closed +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; +SET row_security = off; + +SET search_path = public, pg_catalog; + +DROP INDEX IF EXISTS public.signersaccount; +DROP INDEX IF EXISTS public.sellingissuerindex; +DROP INDEX IF EXISTS public.scpquorumsbyseq; +DROP INDEX IF EXISTS public.scpenvsbyseq; +DROP INDEX IF EXISTS public.priceindex; +DROP INDEX IF EXISTS public.ledgersbyseq; +DROP INDEX IF EXISTS public.histfeebyseq; +DROP INDEX IF EXISTS public.histbyseq; +DROP INDEX IF EXISTS public.buyingissuerindex; +DROP INDEX IF EXISTS public.accountbalances; +ALTER TABLE IF EXISTS ONLY public.txhistory DROP CONSTRAINT IF EXISTS txhistory_pkey; +ALTER TABLE IF EXISTS ONLY public.txfeehistory DROP CONSTRAINT IF EXISTS txfeehistory_pkey; +ALTER TABLE IF EXISTS ONLY public.trustlines DROP CONSTRAINT IF EXISTS trustlines_pkey; +ALTER TABLE IF EXISTS ONLY public.storestate DROP CONSTRAINT IF EXISTS storestate_pkey; +ALTER TABLE IF EXISTS ONLY public.signers DROP CONSTRAINT IF EXISTS signers_pkey; +ALTER TABLE IF EXISTS ONLY public.scpquorums DROP CONSTRAINT IF EXISTS scpquorums_pkey; +ALTER TABLE IF EXISTS ONLY public.pubsub DROP CONSTRAINT IF EXISTS pubsub_pkey; +ALTER TABLE IF EXISTS ONLY public.publishqueue DROP CONSTRAINT IF EXISTS publishqueue_pkey; +ALTER TABLE IF EXISTS ONLY public.peers DROP CONSTRAINT IF EXISTS peers_pkey; +ALTER TABLE IF EXISTS ONLY public.offers DROP CONSTRAINT IF EXISTS offers_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_ledgerseq_key; +ALTER TABLE IF EXISTS ONLY public.ban DROP CONSTRAINT IF EXISTS ban_pkey; +ALTER TABLE IF EXISTS ONLY public.accounts DROP CONSTRAINT IF EXISTS accounts_pkey; +ALTER TABLE IF EXISTS ONLY public.accountdata DROP CONSTRAINT IF EXISTS accountdata_pkey; +DROP TABLE IF EXISTS public.txhistory; +DROP TABLE IF EXISTS public.txfeehistory; +DROP TABLE IF EXISTS public.trustlines; +DROP TABLE IF EXISTS public.storestate; +DROP TABLE IF EXISTS public.signers; +DROP TABLE IF EXISTS public.scpquorums; +DROP TABLE IF EXISTS public.scphistory; +DROP TABLE IF EXISTS public.pubsub; +DROP TABLE IF EXISTS public.publishqueue; +DROP TABLE IF EXISTS public.peers; +DROP TABLE IF EXISTS public.offers; +DROP TABLE IF EXISTS public.ledgerheaders; +DROP TABLE IF EXISTS public.ban; +DROP TABLE IF EXISTS public.accounts; +DROP TABLE IF EXISTS public.accountdata; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: accountdata; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accountdata ( + accountid character varying(56) NOT NULL, + dataname character varying(64) NOT NULL, + datavalue character varying(112) NOT NULL, + lastmodified integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accounts ( + accountid character varying(56) NOT NULL, + balance bigint NOT NULL, + seqnum bigint NOT NULL, + numsubentries integer NOT NULL, + inflationdest character varying(56), + homedomain character varying(32) NOT NULL, + thresholds text NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT accounts_balance_check CHECK ((balance >= 0)), + CONSTRAINT accounts_numsubentries_check CHECK ((numsubentries >= 0)) +); + + +-- +-- Name: ban; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ban ( + nodeid character(56) NOT NULL +); + + +-- +-- Name: ledgerheaders; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ledgerheaders ( + ledgerhash character(64) NOT NULL, + prevhash character(64) NOT NULL, + bucketlisthash character(64) NOT NULL, + ledgerseq integer, + closetime bigint NOT NULL, + data text NOT NULL, + CONSTRAINT ledgerheaders_closetime_check CHECK ((closetime >= 0)), + CONSTRAINT ledgerheaders_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: offers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE offers ( + sellerid character varying(56) NOT NULL, + offerid bigint NOT NULL, + sellingassettype integer NOT NULL, + sellingassetcode character varying(12), + sellingissuer character varying(56), + buyingassettype integer NOT NULL, + buyingassetcode character varying(12), + buyingissuer character varying(56), + amount bigint NOT NULL, + pricen integer NOT NULL, + priced integer NOT NULL, + price double precision NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT offers_amount_check CHECK ((amount >= 0)), + CONSTRAINT offers_offerid_check CHECK ((offerid >= 0)) +); + + +-- +-- Name: peers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE peers ( + ip character varying(15) NOT NULL, + port integer DEFAULT 0 NOT NULL, + nextattempt timestamp without time zone NOT NULL, + numfailures integer DEFAULT 0 NOT NULL, + CONSTRAINT peers_numfailures_check CHECK ((numfailures >= 0)), + CONSTRAINT peers_port_check CHECK (((port > 0) AND (port <= 65535))) +); + + +-- +-- Name: publishqueue; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE publishqueue ( + ledger integer NOT NULL, + state text +); + + +-- +-- Name: pubsub; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE pubsub ( + resid character(32) NOT NULL, + lastread integer +); + + +-- +-- Name: scphistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scphistory ( + nodeid character(56) NOT NULL, + ledgerseq integer NOT NULL, + envelope text NOT NULL, + CONSTRAINT scphistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: scpquorums; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scpquorums ( + qsethash character(64) NOT NULL, + lastledgerseq integer NOT NULL, + qset text NOT NULL, + CONSTRAINT scpquorums_lastledgerseq_check CHECK ((lastledgerseq >= 0)) +); + + +-- +-- Name: signers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE signers ( + accountid character varying(56) NOT NULL, + publickey character varying(56) NOT NULL, + weight integer NOT NULL +); + + +-- +-- Name: storestate; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE storestate ( + statename character(32) NOT NULL, + state text +); + + +-- +-- Name: trustlines; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE trustlines ( + accountid character varying(56) NOT NULL, + assettype integer NOT NULL, + issuer character varying(56) NOT NULL, + assetcode character varying(12) NOT NULL, + tlimit bigint NOT NULL, + balance bigint NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT trustlines_balance_check CHECK ((balance >= 0)), + CONSTRAINT trustlines_tlimit_check CHECK ((tlimit > 0)) +); + + +-- +-- Name: txfeehistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txfeehistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txchanges text NOT NULL, + CONSTRAINT txfeehistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: txhistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txhistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txbody text NOT NULL, + txresult text NOT NULL, + txmeta text NOT NULL, + CONSTRAINT txhistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Data for Name: accountdata; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO accounts VALUES ('GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 999999869999999700, 3, 0, NULL, '', 'AQAAAA==', 0, 2); +INSERT INTO accounts VALUES ('GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 59999999800, 8589934594, 2, NULL, '', 'AQAAAA==', 0, 3); +INSERT INTO accounts VALUES ('GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 9999999600, 8589934596, 0, NULL, '', 'AQAAAA==', 0, 4); +INSERT INTO accounts VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 59999996500, 8589934627, 35, NULL, '', 'AQAAAA==', 0, 5); + + +-- +-- Data for Name: ban; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: ledgerheaders; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO ledgerheaders VALUES ('63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', '0000000000000000000000000000000000000000000000000000000000000000', '572a2e32ff248a07b0e70fd1f6d318c1facd20b6cc08c33d5775259868125a16', 1, 0, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXKi4y/ySKB7DnD9H20xjB+s0gtswIwz1XdSWYaBJaFgAAAAEN4Lazp2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAX14QAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('596bb81ce92e307b09a80619457beac018b0de490f7975559cd1f968bac17909', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', '5a40fcf10808da07bbc521e5c7d73205ee2c0cff9bcbc400461b1f1a9ae73136', 2, 1508958249, 'AAAACGPZj1Nu5o0bJ7W4nyOvUxG3Vpok+vFAOtC1K2M7B76ZAUwrYbwky130abgiR+8z3pixvjYuXxWRQO3fiLTCQxsAAAAAWfDgKQAAAAIAAAAIAAAAAQAAAAgAAAAIAAAAAwAAJxAAAAAA1w9fW1+aY0dzStxnssDdI7Fc8ROLyUF72+R6hYY7OB5aQPzxCAjaB7vFIeXH1zIF7iwM/5vLxABGGx8amucxNgAAAAIN4Lazp2QAAAAAAAAAAAEsAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('8a4e97d221655d87bb8c8ef26139d4a036a0ed5db602a9d8a952dfbdda2e1362', '596bb81ce92e307b09a80619457beac018b0de490f7975559cd1f968bac17909', 'd803eb8ca4901ce034cc1a48ef2ae36d6148b6cc6f66677f078c3b38b7c51e35', 3, 1508958250, 'AAAACFlruBzpLjB7CagGGUV76sAYsN5JD3l1VZzR+Wi6wXkJ3+vX8DbNdfYf6g3OG3bfbWVh0ctOFDGiHmukR1BDK90AAAAAWfDgKgAAAAAAAAAAuv3nXQPv7pfqeZbYXHSM8xqoQfhhyLRFImejAhp7RIjYA+uMpJAc4DTMGkjvKuNtYUi2zG9mZ38HjDs4t8UeNQAAAAMN4Lazp2QAAAAAAAAAAAK8AAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('5f002047771c5aa47b38405550ba1f7b8b0c45dda17743179ffe75ee0f4cb55e', '8a4e97d221655d87bb8c8ef26139d4a036a0ed5db602a9d8a952dfbdda2e1362', 'f1a8adc4980dc4ce070f22c21b6936de9305ca3bae71cb538788283e40cf7c63', 4, 1508958251, 'AAAACIpOl9IhZV2Hu4yO8mE51KA2oO1dtgKp2KlS373aLhNiNO9fs8Q3u+T/jtEXbamVWNW1RirE40WWXjAp+tR5WO4AAAAAWfDgKwAAAAAAAAAA9P74c8f1xfd4wX2Dasj3a3ZXngqhfaJ2yA7eEO3Lts/xqK3EmA3EzgcPIsIbaTbekwXKO65xy1OHiCg+QM98YwAAAAQN4Lazp2QAAAAAAAAAAARMAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('00c7240a32e66d9ec267f48c7962c88be11d33cb417c24f89c586cb9158b5427', '5f002047771c5aa47b38405550ba1f7b8b0c45dda17743179ffe75ee0f4cb55e', '81cd05fe810e0017bd994e7902bcd3a7621a1c81984edb29e8db152de19814a5', 5, 1508958252, 'AAAACF8AIEd3HFqkezhAVVC6H3uLDEXdoXdDF5/+de4PTLVe9PDM6HrYcnpHWiq9Dh/kpH7ByXApRK9dXTMJXZFXoBUAAAAAWfDgLAAAAAAAAAAA4mcvRtQqqvAgS0QLGQDtu3q3O3M8+ibMeGiXadCsEsSBzQX+gQ4AF72ZTnkCvNOnYhocgZhO2yno2xUt4ZgUpQAAAAUN4Lazp2QAAAAAAAAAABEwAAAAAAAAAAAAAAAhAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); + + +-- +-- Data for Name: offers; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 1, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 59599996500, 1, 10, 0.100000000000000006, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 2, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 59499996500, 1, 9, 0.111111111111111105, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 3, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 59399996500, 1, 8, 0.125, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 4, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 59299996500, 1, 7, 0.142857142857142849, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 5, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 59199996500, 1, 6, 0.166666666666666657, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 6, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 50000000000, 1, 5, 0.200000000000000011, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 7, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 40000000000, 1, 4, 0.25, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 30000000000, 1, 3, 0.333333333333333315, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 9, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 20000000000, 1, 2, 0.5, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 10, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 10000000000, 1, 1, 1, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 11, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 1000000000, 10, 1, 10, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 12, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 58499996500, 10, 101, 0.0990099009900990146, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 13, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 58399996500, 10, 91, 0.109890109890109888, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 14, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 58299996500, 10, 81, 0.123456790123456783, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 15, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 58199996500, 10, 71, 0.140845070422535218, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 16, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 58099996500, 10, 61, 0.163934426229508184, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 17, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 51000000000, 10, 51, 0.196078431372549017, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 18, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 41000000000, 10, 41, 0.243902439024390238, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 19, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 31000000000, 100000009, 310000028, 0.322580645057232052, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 20, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 21000000000, 10, 21, 0.476190476190476164, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 21, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 11000000000, 10, 11, 0.909090909090909061, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 22, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 2000000000, 5, 1, 5, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 23, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 57399996500, 5, 51, 0.0980392156862745084, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 24, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 57299996500, 5, 46, 0.10869565217391304, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 25, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 57199996500, 5, 41, 0.121951219512195119, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 26, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 57099996500, 5, 36, 0.138888888888888895, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 27, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 56999996500, 5, 31, 0.161290322580645157, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 28, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 52000000000, 5, 26, 0.192307692307692318, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 29, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 42000000000, 5, 21, 0.238095238095238082, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 30, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 32000000000, 5, 16, 0.3125, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 31, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 22000000000, 5, 11, 0.45454545454545453, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 32, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 12000000000, 5, 6, 0.83333333333333337, 0, 5); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 33, 0, NULL, NULL, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 3000000000, 10, 3, 3.33333333333333348, 0, 5); + + +-- +-- Data for Name: peers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: publishqueue; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: pubsub; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: scphistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scphistory VALUES ('GC6YHY2P5GAJPDUARWUEEQS2MSUUENHSP3VKRIY7TEMDUZKX6MA7GUYR', 2, 'AAAAAL2D40/pgJeOgI2oQkJaZKlCNPJ+6qijH5kYOmVX8wHzAAAAAAAAAAIAAAACAAAAAQAAAEgBTCthvCTLXfRpuCJH7zPemLG+Ni5fFZFA7d+ItMJDGwAAAABZ8OApAAAAAgAAAAgAAAABAAAACAAAAAgAAAADAAAnEAAAAAAAAAABNzHf7Ngh6MPkHJoRv+m7Fd4+6rxH66IwwgM7Lpizh3MAAABAOBga45AqmfOMl9YAwUmoT23EPsATc30K+WOikqjRQWs3e4oScmiVjDi2d43+UYcxD0BD7B9qibmmwXXIPY8dCg=='); +INSERT INTO scphistory VALUES ('GC6YHY2P5GAJPDUARWUEEQS2MSUUENHSP3VKRIY7TEMDUZKX6MA7GUYR', 3, 'AAAAAL2D40/pgJeOgI2oQkJaZKlCNPJ+6qijH5kYOmVX8wHzAAAAAAAAAAMAAAACAAAAAQAAADDf69fwNs119h/qDc4bdt9tZWHRy04UMaIea6RHUEMr3QAAAABZ8OAqAAAAAAAAAAAAAAABNzHf7Ngh6MPkHJoRv+m7Fd4+6rxH66IwwgM7Lpizh3MAAABAbMieNEFNETTWofHBdHXWYn+uVDbKyHSkjcMuw3w5arUPKvtJxG6+r26DMfYlmcnmUNy18509IGvEOG2+MscdCQ=='); +INSERT INTO scphistory VALUES ('GC6YHY2P5GAJPDUARWUEEQS2MSUUENHSP3VKRIY7TEMDUZKX6MA7GUYR', 4, 'AAAAAL2D40/pgJeOgI2oQkJaZKlCNPJ+6qijH5kYOmVX8wHzAAAAAAAAAAQAAAACAAAAAQAAADA071+zxDe75P+O0RdtqZVY1bVGKsTjRZZeMCn61HlY7gAAAABZ8OArAAAAAAAAAAAAAAABNzHf7Ngh6MPkHJoRv+m7Fd4+6rxH66IwwgM7Lpizh3MAAABAgKPoRrEZNNVly3HVUVHhlbKxjALr8jCqs2o4T4fsSYK/C9h00w7gMv4CO9doOmK0UDfGFQVfHMtNJZNl1vZrCw=='); +INSERT INTO scphistory VALUES ('GC6YHY2P5GAJPDUARWUEEQS2MSUUENHSP3VKRIY7TEMDUZKX6MA7GUYR', 5, 'AAAAAL2D40/pgJeOgI2oQkJaZKlCNPJ+6qijH5kYOmVX8wHzAAAAAAAAAAUAAAACAAAAAQAAADD08MzoethyekdaKr0OH+SkfsHJcClEr11dMwldkVegFQAAAABZ8OAsAAAAAAAAAAAAAAABNzHf7Ngh6MPkHJoRv+m7Fd4+6rxH66IwwgM7Lpizh3MAAABAbcaokIxbA0Fv0ToGv4lUg+dM8x9U8L0Oo8PHHaJ0/1etYiJC0CxfyGoWCgmcYSSZRnJ/qqPsdoBzoOc5to5IBg=='); + + +-- +-- Data for Name: scpquorums; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scpquorums VALUES ('3731dfecd821e8c3e41c9a11bfe9bb15de3eeabc47eba230c2033b2e98b38773', 5, 'AAAAAQAAAAEAAAAAvYPjT+mAl46AjahCQlpkqUI08n7qqKMfmRg6ZVfzAfMAAAAA'); + + +-- +-- Data for Name: signers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: storestate; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO storestate VALUES ('lastclosedledger ', '00c7240a32e66d9ec267f48c7962c88be11d33cb417c24f89c586cb9158b5427'); +INSERT INTO storestate VALUES ('databaseschema ', '5'); +INSERT INTO storestate VALUES ('forcescponnextlaunch ', 'false'); +INSERT INTO storestate VALUES ('historyarchivestate ', '{ + "version": 1, + "server": "v0.6.3-66-gd66575cf", + "currentLedger": 5, + "currentBuckets": [ + { + "curr": "07bf9349222044ad4a2db267c941751f798676c9515c5e13fe041feaa123b247", + "next": { + "state": 0 + }, + "snap": "c6e71baecc853c7d865c173cefec3b82e7b89d564351820e7e67f2a1d62ddc10" + }, + { + "curr": "ef31a20a398ee73ce22275ea8177786bac54656f33dcc4f3fec60d55ddf163d9", + "next": { + "state": 1, + "output": "c6e71baecc853c7d865c173cefec3b82e7b89d564351820e7e67f2a1d62ddc10" + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + } + ] +}'); +INSERT INTO storestate VALUES ('lastscpdata ', 'AAAAAgAAAAC9g+NP6YCXjoCNqEJCWmSpQjTyfuqoox+ZGDplV/MB8wAAAAAAAAAFAAAAAzcx3+zYIejD5ByaEb/puxXePuq8R+uiMMIDOy6Ys4dzAAAAAQAAADD08MzoethyekdaKr0OH+SkfsHJcClEr11dMwldkVegFQAAAABZ8OAsAAAAAAAAAAAAAAABAAAAMPTwzOh62HJ6R1oqvQ4f5KR+wclwKUSvXV0zCV2RV6AVAAAAAFnw4CwAAAAAAAAAAAAAAEBkQ2tkTicmmTQLrOq1qPEygGoPTq4ICkv76upm/uwJot4ChpK9N2V+8mfGDXTSDQFY1u2RiVfelNFn0u3AQ48KAAAAAL2D40/pgJeOgI2oQkJaZKlCNPJ+6qijH5kYOmVX8wHzAAAAAAAAAAUAAAACAAAAAQAAADD08MzoethyekdaKr0OH+SkfsHJcClEr11dMwldkVegFQAAAABZ8OAsAAAAAAAAAAAAAAABNzHf7Ngh6MPkHJoRv+m7Fd4+6rxH66IwwgM7Lpizh3MAAABAbcaokIxbA0Fv0ToGv4lUg+dM8x9U8L0Oo8PHHaJ0/1etYiJC0CxfyGoWCgmcYSSZRnJ/qqPsdoBzoOc5to5IBgAAAAFfACBHdxxapHs4QFVQuh97iwxF3aF3Qxef/nXuD0y1XgAAACEAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAABkAAAAAgAAAAsAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAASoF8gAAAAAAQAAAAIAAAAAAAAAAAAAAAAAAAABruS+TAAAAEDamXyiJGP3NQgWn0Bgxoo5vQ4BsywyMk1RQd7BrcnBIfRXZlqiXuCQfnKavcI3A7V7lfx8aKUtmb7Hk/uiQ9YNAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAANAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAAAAAAoAAAABAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAikMlBAAA6oi4Rg6Gp3svzTPGcaUQx4HtpN0TgusXrMTkbVsBpvHNs+w0bFF9BOgtyGYK2/6zfkXYMVEB9X6aCgAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAGQAAAACAAAAEAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAEtv56gAAAAAKAAAAUQAAAAAAAAAAAAAAAAAAAAGu5L5MAAAAQBmMMGMFDGg7sYY38Ra5mIL+tpWYlMU3vEDcO+WWvzwsmf2UuDSuqXlgCYfpvB995YXFbLLeRJQIRWfs8GWd1Q0AAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAABkAAAAAgAAAAwAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+QAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAABruS+TAAAAEDSUHnvtrpUVOaqIEpBeLKDpiCNM9xTyf0yV1vkZ0p5nwNGRYbv3uoTdOf9Yvm4VidjqqV2wj1TfUBK22f8yHwKAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAd6LAs45dbBkADWNU5etnooaywHqrB19Tf40hy6/miUAnNAx6o8/ueoRawn+3RJyRvQW3WKpZPbp4zB49zcYkDwAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAGQAAAACAAAAIgAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAstBeAAAAAAFAAAABgAAAAAAAAAAAAAAAAAAAAGu5L5MAAAAQGkqBHPysWqN2eoFLE4dUHy45U+POk0CoLbvTYak/BM0kNoxQloD/qHSVJ0yD0VO+AzoKsBIHBwRqaL2mrLNuA8AAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAABkAAAAAgAAAAYAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAABBMUzwAAAAAAQAAAAcAAAAAAAAAAAAAAAAAAAABruS+TAAAAEBpldP9uQPPcWpMmFcq1xJ6/mDOsTTAvYZKezN/u3ioFNydbc/iF4d4AUiRKO2DPSbsiAZPWChWVu10Dk+1k00LAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAVAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAHN752AAX14QkSejmcAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAEhl1VhzJ53lV9jnMsTC9/D5/tr0jaWCgSc0KCmdSqlqbQ/kDEgvT+jfSLDuQ6gM9GJCSfoFXT4preQ0mpLvCCQAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAGQAAAACAAAAHgAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAADBtxCAAAAAAFAAAAGgAAAAAAAAAAAAAAAAAAAAGu5L5MAAAAQGx8irc0BNMlnwAsFn/taWFdzzhnACsZTbbSyuAeS5l9+FcFCBo1h6iiIsP2g7bGiKgSSOtm35GJ+iojFokZ5QIAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAABkAAAAAgAAABgAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAB3NZQAAAAABQAAAAEAAAAAAAAAAAAAAAAAAAABruS+TAAAAEAmeu1cbKOSqkAkAV8NjQnImNd9L3/Fcssd27ddPbQjGkkIFDYrR+FidWKzS2dtpwL3+9NyYudbEqDWgYJH26wEAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAcAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAQw4jQAAAAAAUAAAAkAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAxjfuAsXsrTxv+5NVYnsb0soqC6ZoluT/Xobjrt45eAeNZMwp9/RV2hLXySkVOVk2O814/dgyeap7M+LgWibPBgAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAGQAAAACAAAAIAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAB3NZQAAAAAAFAAAAEAAAAAAAAAAAAAAAAAAAAAGu5L5MAAAAQBqMULN4vmhOjgHoAZE5gNHahGnQ+eNQhVGDFUNWgoouYqCzGj+ouaEmefuHNFX2NjAD5qcXTQjmN78B+Fw/MgsAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAABkAAAAAgAAABMAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAvf1j4AAAAACgAAADMAAAAAAAAAAAAAAAAAAAABruS+TAAAAEBdSFvlBMA769XmRMRCo6n3KLiwN6uNTm8hPlUfcyI4bfzXMimWZp8mMs0dLTZ6eSic4e0dYi+rOdVCMepDfz0NAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAKAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAG/COsAAAAAAEAAAADAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAm8aNJ18QdO28lh/q/TJRX9IDlSqhaNzxgla/NgydpGXxdgAYYA9bSLdcknkQ8zFwfSdYmmjKqnDxYG1U00rLBwAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAGQAAAACAAAADwAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAFTAFzgAAAAAKAAAAWwAAAAAAAAAAAAAAAAAAAAGu5L5MAAAAQI+Beopz8p4OntGLS7QPQgRPDWA7rjBEZh0fXjxLd3RWtIJmvz/OC0ZFng2uGW9hOsClS5643KkXVh4xNWDdwgMAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAABkAAAAAgAAAB0AAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAA5vfOwAAAAABQAAAB8AAAAAAAAAAAAAAAAAAAABruS+TAAAAEBwWKOKlX+VlEgNiJw2kcXCdovgnQWbCRyvQb1XEfiVlJiAuOBCe+CeIIFCu+7Z6rKo4UcLwfThPsP2Nex5ivgKAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAXSHboAAAAAAEAAAAKAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAOL8799gdl4G9kC/cOT6pQu2zfD5GhhExAKtKmb7s8ozksyqIYI21eqCLcluwLlb2wBim5Owr0y2zzxYH7vqOBwAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAGQAAAACAAAACQAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAACVAvkAAAAAABAAAABAAAAAAAAAAAAAAAAAAAAAGu5L5MAAAAQBR6llCuC7o+HfLFIkNfDgen4pG7D0F2QDiH2d9rILOtvkNexjJ8GKrMRaNbYuPUe3DC2nQ7J4R45J5DkDM3Pg4AAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAABkAAAAAgAAAAUAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAABKgXyAAAAAAAQAAAAgAAAAAAAAAAAAAAAAAAAABruS+TAAAAED0tBSEE9AVk6ilKH++5Q09xSbQMsj3APhrDjj0Jy7oAMx6Nq3y3YzK7Na/HxHBAw933N1eXAITl3xxPe6nC48CAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAARAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAQh+4GAAAAAAoAAABHAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAvgqC6TyEhSrhF7K4wwOgd0sCvmFAQgfM1Ez+eEwWbm/BPJSW0WpOTxU5feEKAOpLYaHJvvvD+WZKm5PI/yadBwAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAGQAAAACAAAAFAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAACYvKWgAAAAAKAAAAKQAAAAAAAAAAAAAAAAAAAAGu5L5MAAAAQIicBXKMwPUOFY/7QAQJKYW7zouh7N9uWxwwaU4uifyzd0lRxrGENlMA9a3nIGKGLaFg9fqpCnRTEs3riGaHSQ0AAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAABkAAAAAgAAAAQAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAABT0awQAAAAAAQAAAAkAAAAAAAAAAAAAAAAAAAABruS+TAAAAEC5SdmUzGPy1qoyj89h8jisGXjUKmmz9ccaU2i3n5NZNkT0DTqKkRHpDtepvGE3OYBHw1pBtLcOzRFC/jivcYsKAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAHAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAN+EdYAAAAAAEAAAAGAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAp1hMoM8rNid3pnBSv/sqgRwIIyLgkeBbUMH9SYTGgXXWZSB1Q7Rv54QgXbJ5XNxPqA9kgz/LYpJc3V9Lsk+mBAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAGQAAAACAAAAGwAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAExeUtAAAAAAFAAAAKQAAAAAAAAAAAAAAAAAAAAGu5L5MAAAAQC4ZeNWnry9HlmU/3cfY8BUVW+5w3g7Iz3rjyiuUAgYFmYwVhcMEV8/oE4h3HArxuVuHfd7nAFOMTpGwo9VR/QkAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAABkAAAAAgAAABYAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAATjspIAAAAACgAAABUAAAAAAAAAAAAAAAAAAAABruS+TAAAAEBbu6MGhy01F9rUzr5PS1KGPRD6X3Jun0LqNCatIRR4FLACq5xTVgAyVzdfOogHLfkSy5U3STSEPzX+usI0K0gKAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAhAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAFH01cAAAAAAUAAAALAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAlTGl5Ll7WR6ooHo4TPTHiPsPhYQEcPuFd4lby43niifsCCnLkZfzoZYxODmAHHv/RXkskBH7eRkxCZYBRXRQBAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAGQAAAACAAAAIwAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAALLQXgAAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAGu5L5MAAAAQNhcKHp1yVTk4vaMlh8jS/tMC0XYpA8AeKnTSZo/jkIvGtI0YI0Bv9fxLEqvPOau5lL1+e1wo1Bh/q3+9AfghQIAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAABkAAAAAgAAAA4AAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAABeEEbIAAAAACgAAAGUAAAAAAAAAAAAAAAAAAAABruS+TAAAAECMC56GV7UnbOzdFotXkUP9OyDBVZBMesbLP3G0d+OiFOn26CSUwSUXUYVrvPGKNOmCEIrUDTLJW4it/yYhCK4EAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAASAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAOM+IiAAAAAAoAAAA9AAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAE0N79ktAplSSjovU50IktziuRrJN6xmRkF7fsV+YjK5g8XWPegdWuH8u55zCzZcBzddo8CaiuEWpJMPjMZZICAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAGQAAAACAAAAGQAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAF7+sfAAAAAAFAAAAMwAAAAAAAAAAAAAAAAAAAAGu5L5MAAAAQBqsQv3InffSShAb+mO75pFNbvlEPksA8RyIy3jJpq7eVL9kwrOgreLaJL8I5RrGwaNbHFPJ0JsLl7ovG3zRkwAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAABkAAAAAgAAABoAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAABVroJgAAAAABQAAAC4AAAAAAAAAAAAAAAAAAAABruS+TAAAAEBNTxdbQctUoAGJsxxXQfdXFSQaH91CFRwzR4UKQXNWB5eZj2DVX8yc/0Ow2zVqKm4lWUAZLQHzyDFuahDmHqsMAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAXAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACj6auAAAAAAoAAAALAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAmEz+ciLZWEXIlsEWtrY1Ii1fzoax2dGCE/Fu0GhOyqbw90Dvs+k3aVOmQLTByU5JWjEvd6Op+oV3i+7KPPtxAwAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAGQAAAACAAAAHwAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAACcdlJAAAAAAFAAAAFQAAAAAAAAAAAAAAAAAAAAGu5L5MAAAAQJJGaubFcHOaa+jWH6pUmJEHr69u94m4TvRMFcpDtpkOPpGvga0I/vsH3LLiRWxmnhOjbc0MU3+10GhmacI5OQsAAAABAAAAAQAAAAEAAAAAvYPjT+mAl46AjahCQlpkqUI08n7qqKMfmRg6ZVfzAfMAAAAA'); + + +-- +-- Data for Name: trustlines; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO trustlines VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 1, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 'USD', 9223372036854775807, 50000000000, 1, 4); +INSERT INTO trustlines VALUES ('GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 1, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 'USD', 9223372036854775807, 50000000000, 1, 4); +INSERT INTO trustlines VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 1, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 'BTC', 9223372036854775807, 50000000000, 1, 4); +INSERT INTO trustlines VALUES ('GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 1, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 'BTC', 9223372036854775807, 50000000000, 1, 4); + + +-- +-- Data for Name: txfeehistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txfeehistory VALUES ('db398eb4ae89756325643cad21c94e13bfc074b323ee83e141bf701a5d904f1b', 2, 1, 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('67c059e1118f4f79b83648e5769b8bf1f1fbf0259d90d2e4a5a8aa0852c41687', 2, 2, 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/84AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('f7cb8309318368f694c8830bf789841e7e2c46dce30e60969d88bd0ce588cbe9', 2, 3, 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/7UAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('811192c38643df73c015a5a1d77b802dff05d4f50fc6d10816aa75c0a6109f9a', 3, 1, 'AAAAAgAAAAMAAAACAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1gAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1ecAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('bd486dbdd02d460817671c4a5a7e9d6e865ca29cb41e62d7aaf70a2fee5b36de', 3, 2, 'AAAAAgAAAAMAAAACAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1gAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1ecAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('7df857c23c7dfeb974d7c3956775685a8edfa8496bb781fd346c8e2025fad9bf', 3, 3, 'AAAAAQAAAAEAAAADAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1c4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('3476bc649563488cf025d82790aa9c44649188232b150d2864d13fe9face5406', 3, 4, 'AAAAAQAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1c4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('ea945436a3b650efa88063e737518cf1928d9a43d1aba3ec684704f160b3733e', 4, 1, 'AAAAAgAAAAMAAAACAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('416a63c3f1491537698cdb6f981097ed8e44ca27d2d9006bd0ba68832ebf9d55', 4, 2, 'AAAAAQAAAAEAAAAEAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+M4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('c29948d1ca87bad2e3299c1b018c996c22ff5d56f5753bc38f0fd88c4d2c5d94', 4, 3, 'AAAAAQAAAAEAAAAEAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+LUAAAAAgAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('554ea22913ebf01fc4b3a4d60b59ae28f379b800d5b6da40a6987a53ebd87f07', 4, 4, 'AAAAAQAAAAEAAAAEAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+JwAAAAAgAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('c48b48982dcd1f079d90ee3289dc2b6269bce088bd7183ddba8e3dca25b1e84b', 5, 1, 'AAAAAgAAAAMAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1c4AAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1bUAAAAAgAAAAMAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('437a48108dd143273dcf1c28296d6048d0915c6072650eb5f794b89560a40c0c', 5, 2, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1ZwAAAAAgAAAAQAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('9f9ea714b1a39664b1e6df0fafd1aa17eda71bb05715fe1371246f3208b3a1b1', 5, 3, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1YMAAAAAgAAAAUAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('f966ab310137dae86c7ee7ee08850339537c78f854eaaaea78d7fd834134da79', 5, 4, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1WoAAAAAgAAAAYAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('360d890880eebd224d7506b9881352fbc6b6b1921f84a85e9807f0775b5560bc', 5, 5, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1VEAAAAAgAAAAcAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('bc1c988cc29d96ba3ed032e48f862cda1c9ed615b07ac8db51ef399cd3fa2941', 5, 6, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1TgAAAAAgAAAAgAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('61b33dced6b81dde0e86b61ba4abc280b6c35c6e4ba8045b5082f74a9a2b60ed', 5, 7, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1R8AAAAAgAAAAkAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('163aab67c5a24a59eda5e4b4e5f32924f603cff52a5e4fb25eae987538c23106', 5, 8, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1QYAAAAAgAAAAoAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('627fdbd55feaf21e6e96addebb0f5fc73540ff9505d5d0dc76c9ec69f4d2f76f', 5, 9, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1O0AAAAAgAAAAsAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('e252b8842716f49fe824df8c95e51a55b40db1b51017ba97dc59b2d971e5cb10', 5, 10, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1NQAAAAAgAAAAwAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('b962b228793859d32de9d6a3d3e782acb8f2d0b9e3a17a91571a402d7cd47a8a', 5, 11, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1LsAAAAAgAAAA0AAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('0343d98ff86bf4b5f9e24db8b3889fe34df7a166cfde7e9098a83c11f7eb9722', 5, 12, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1KIAAAAAgAAAA4AAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('e82691759c9c5796c5cc91a1c71f233b6c5a38af9ad5976c7e655078818838e7', 5, 13, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1IkAAAAAgAAAA8AAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('d80c809a4065600d7705e7db04e1260bf39582d941446a95fb9cea66680ef0c3', 5, 14, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1HAAAAAAgAAABAAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('fd0bc444f5e90e9a61a5aa011a8b62376ef2d7e304418a188a294bb0b95740f8', 5, 15, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1FcAAAAAgAAABEAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('04b1a1a09159b1c7bb43fd1dc0f282958d0a01c337d72a0324c0262b58d93615', 5, 16, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1D4AAAAAgAAABIAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('5d37d98f720dfb3dce49331f403bfa3f9ef13122fae954a73b7b688b180b1516', 5, 17, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1CUAAAAAgAAABMAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('a3d82c4ac237e77f385f3cdf5a358cabc4b0c12b7f58b59c197fdba8a76010cf', 5, 18, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1AwAAAAAgAAABQAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('e09337eedf136665192e840b23bf26b86fc85b93bb401d3a1ce4ee2a1b579213', 5, 19, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R0/MAAAAAgAAABUAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('f140ddf0c75f70ddf0d79391e6b5992b9c56b9c23c040008b908c70a413eb03d', 5, 20, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R09oAAAAAgAAABYAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('5d46530574ecf525512b5184af69899d95a826ec6bbad2e0b2d34b3efa352d7f', 5, 21, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R08EAAAAAgAAABcAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('bc2a16ca82b7d0bd903c26482736cceb9f4efa077071e72849654b3aced94136', 5, 22, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R06gAAAAAgAAABgAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('a0bdbdb1aa35b7f2aec201b618fca59405e4c375f8f76a24ef25e885a96fd7ed', 5, 23, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R048AAAAAgAAABkAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('9b90554626c9bfa396b4f61cc910d383a38f1223c8f5478edde6fe60a7f2f406', 5, 24, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R03YAAAAAgAAABoAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('0e17e87fcda53937d77cbf1e2658fcdf41eb0689e9649545bb14a5960832e5b8', 5, 25, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R010AAAAAgAAABsAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('f277e4abf7d0d326fa63ee62415f7a117e43453072677d1f6e9618c8d2bb8524', 5, 26, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R00QAAAAAgAAABwAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('5e3622bf6dab1276155014b8387f261a0bbfbef247caa05e9c4be8c890dad958', 5, 27, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R0ysAAAAAgAAAB0AAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('b00c83ae8f3d0cd4f1760517182abdf0440eca6efcd2b0fa893aac85b35e42cb', 5, 28, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R0xIAAAAAgAAAB4AAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('3f731b66c1a3d2c4cf9d15bb17e910beaa6f6fa6a77cccfd62f5eabcd3ecfcc5', 5, 29, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R0vkAAAAAgAAAB8AAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('492c8c2808bf649ba321f0f75dda11581107bff229ef457340aab8494f5ad412', 5, 30, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R0uAAAAAAgAAACAAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('c03dfbea35606bd565f3609a306aa27a82aa14b3fd142f1a13b79c1871f54a3b', 5, 31, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R0scAAAAAgAAACEAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('42e47f8fdcb738c844e1556c9fad18eb8887d78681ef5e9616898eb6e1c5e8eb', 5, 32, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R0q4AAAAAgAAACIAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('ee96865dfca78c43c4074317f3dbcd7ca978643b973bc9a5dc4f2588f981c6d7', 5, 33, 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R0pUAAAAAgAAACMAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); + + +-- +-- Data for Name: txhistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txhistory VALUES ('db398eb4ae89756325643cad21c94e13bfc074b323ee83e141bf701a5d904f1b', 2, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACVAvkAAAAAAAAAAABVvwF9wAAAEAYjQcPT2G5hqnBmgGGeg9J8l4c1EnUlxklElH9sqZr0971F6OLWfe/m4kpFtI+sI0i1qLit5A0JyWnbhYLW5oD', '2zmOtK6JdWMlZDytIclOE7/AdLMj7oPhQb9wGl2QTxsAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2sVNYGtQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('67c059e1118f4f79b83648e5769b8bf1f1fbf0259d90d2e4a5a8aa0852c41687', 2, 2, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAN+EdYAAAAAAAAAAABVvwF9wAAAEDUoLr1FIIMdF1JOK2RVg4EDQvL+exej1s795GdZKz5tJB94pDkbAiz8k+mPv0OVuST8ah1MzkZYglos0c1AcID', 'Z8BZ4RGPT3m4NkjldpuL8fH78CWdkNLkpaiqCFLEFocAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHWAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2o1sQwtQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('f7cb8309318368f694c8830bf789841e7e2c46dce30e60969d88bd0ce588cbe9', 2, 3, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAAN+EdYAAAAAAAAAAABVvwF9wAAAEAQAaCgnhAHvWviyyciJH3kp9yoTQtn2SFjbCqLUUPBKzcRt8huITE9etfxlEBrW4iiJkrgyQeOCq/IGbGe2RAA', '98uDCTGDaPaUyIML94mEHn4sRtzjDmCWnYi9DOWIy+kAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAADfhHWAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2lWLJatQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('811192c38643df73c015a5a1d77b802dff05d4f50fc6d10816aa75c0a6109f9a', 3, 1, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAFvFIhaAAAAQPlg7GLhJg0x7jpAw1Ew6H2XF6yRImfJIwFfx09Nui5btOJAFewFANfOaAB8FQZl5p3A5g3k6DHDigfUNUD16gc=', 'gRGSw4ZD33PAFaWh13uALf8F1PUPxtEIFqp1wKYQn5oAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAADfhHVzgAAAACAAAAAgAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('bd486dbdd02d460817671c4a5a7e9d6e865ca29cb41e62d7aaf70a2fee5b36de', 3, 2, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAGu5L5MAAAAQB9kmKW2q3v7Qfy8PMekEb1TTI5ixqkI0BogXrOt7gO162Qbkh2dSTUfeDovc0PAafhDXxthVAlsLujlBmyjBAY=', 'vUhtvdAtRggXZxxKWn6dboZcopy0HmLXqvcKL+5bNt4AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHVzgAAAACAAAAAgAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('7df857c23c7dfeb974d7c3956775685a8edfa8496bb781fd346c8e2025fad9bf', 3, 3, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAFvFIhaAAAAQBH/ML6+RzWquFPh8gLF2RuZzYtjjpPeHv/od9M74xlU09Xa4a5e1NhMtMSRIoLItg1EaDWE9zvtHflVWIAaSwQ=', 'ffhXwjx9/rl018OVZ3VoWo7fqElrt4H9NGyOICX62b8AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAADfhHVzgAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('3476bc649563488cf025d82790aa9c44649188232b150d2864d13fe9face5406', 3, 4, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAGu5L5MAAAAQEKBv+8zL1epwxC+sJhEYPmbjL9XScXtctoMIdet5dhgk7YJVJzAnRSgYTvfyoIJKJdQmX66uh2o+rG9K6JImgY=', 'NHa8ZJVjSIzwJdgnkKqcRGSRiCMrFQ0oZNE/6frOVAYAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHVzgAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('ea945436a3b650efa88063e737518cf1928d9a43d1aba3ec684704f160b3733e', 4, 1, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAukO3QAAAAAAAAAAAH5kC3vAAAAQH/ZkzR/eC0F7xP9zApeHvMH7nqetzaSdYh8WHyrwwvbEnx4Db6gz0grnRJBJS66OZbGmCk7yzHm8DkJ7bJ4QAU=', '6pRUNqO2UO+ogGPnN1GM8ZKNmkPRq6PsaEcE8WCzcz4AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('416a63c3f1491537698cdb6f981097ed8e44ca27d2d9006bd0ba68832ebf9d55', 4, 2, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAukO3QAAAAAAAAAAAH5kC3vAAAAQFFGLGFFXbEDRdk2eFyQATNpHuqO/sFrpqsxmNNwGa+MLibNQJLDXWafC4W8KMKQ/hE0M0TLxZeu/O8tYnBuwwA=', 'QWpjw/FJFTdpjNtvmBCX7Y5EyifS2QBr0Lpogy6/nVUAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('c29948d1ca87bad2e3299c1b018c996c22ff5d56f5753bc38f0fd88c4d2c5d94', 4, 3, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAukO3QAAAAAAAAAAAH5kC3vAAAAQLn0NeCsam5YrmtsMJQVOLyOTPqDb7SMTCZGofm5ShU6fcl3PPieInQNtk1FmRVeUxdYX1rsW2KH1HQbJ644Hw0=', 'wplI0cqHutLjKZwbAYyZbCL/XVb1dTvDjw/YjE0sXZQAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('554ea22913ebf01fc4b3a4d60b59ae28f379b800d5b6da40a6987a53ebd87f07', 4, 4, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAukO3QAAAAAAAAAAAH5kC3vAAAAQF34mYyRLbVT42QtFuY5UN0sr9EcuE3ltA/9yAxiNOvukbVTOaz86uCXpEZlX1FnExYDZwOZJWVXfsbdovbVUwc=', 'VU6iKRPr8B/Es6TWC1muKPN5uADVttpApph6U+vYfwcAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('c48b48982dcd1f079d90ee3289dc2b6269bce088bd7183ddba8e3dca25b1e84b', 5, 1, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAXSHboAAAAAAEAAAAKAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAOL8799gdl4G9kC/cOT6pQu2zfD5GhhExAKtKmb7s8ozksyqIYI21eqCLcluwLlb2wBim5Owr0y2zzxYH7vqOBw==', 'xItImC3NHwedkO4yidwrYmm84Ii9cYPduo49yiWx6EsAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAAAQAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAA3gb8ZUAAAAAQAAAAoAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAEAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAN4G/GVAAAAAEAAAAKAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAAMAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('437a48108dd143273dcf1c28296d6048d0915c6072650eb5f794b89560a40c0c', 5, 2, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAU9GsEAAAAAAEAAAAJAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAuUnZlMxj8taqMo/PYfI4rBl41Cpps/XHGlNot5+TWTZE9A06ipER6Q7XqbxhNzmAR8NaQbS3Ds0RQv44r3GLCg==', 'Q3pIEI3RQyc9zxwoKW1gSNCRXGByZQ6195S4lWCkDAwAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAAAgAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAA3aeeVUAAAAAQAAAAkAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAIAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAN2nnlVAAAAAEAAAAJAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAAQAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('9f9ea714b1a39664b1e6df0fafd1aa17eda71bb05715fe1371246f3208b3a1b1', 5, 3, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAASoF8gAAAAAAEAAAAIAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABA9LQUhBPQFZOopSh/vuUNPcUm0DLI9wD4aw449Ccu6ADMejat8t2MyuzWvx8RwQMPd9zdXlwCE5d8cT3upwuPAg==', 'n56nFLGjlmSx5t8Pr9GqF+2nG7BXFf4TcSRvMgizobEAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAAAwAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAA3UhARUAAAAAQAAAAgAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAN1IQEVAAAAAEAAAAIAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAAUAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('f966ab310137dae86c7ee7ee08850339537c78f854eaaaea78d7fd834134da79', 5, 4, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAGAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAQTFM8AAAAAAEAAAAHAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAaZXT/bkDz3FqTJhXKtcSev5gzrE0wL2GSnszf7t4qBTcnW3P4heHeAFIkSjtgz0m7IgGT1goVlbtdA5PtZNNCw==', '+WarMQE32uhsfufuCIUDOVN8ePhU6qrqeNf9g0E02nkAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAABAAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAA3OjiNUAAAAAQAAAAcAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAQAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANzo4jVAAAAAEAAAAHAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAAYAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('360d890880eebd224d7506b9881352fbc6b6b1921f84a85e9807f0775b5560bc', 5, 5, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAHAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAN+EdYAAAAAAEAAAAGAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAp1hMoM8rNid3pnBSv/sqgRwIIyLgkeBbUMH9SYTGgXXWZSB1Q7Rv54QgXbJ5XNxPqA9kgz/LYpJc3V9Lsk+mBA==', 'Ng2JCIDuvSJNdQa5iBNS+8a2sZIfhKhemAfwd1tVYLwAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAABQAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAA3ImEJUAAAAAQAAAAYAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAUAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANyJhCVAAAAAEAAAAGAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAAcAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('bc1c988cc29d96ba3ed032e48f862cda1c9ed615b07ac8db51ef399cd3fa2941', 5, 6, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAd6LAs45dbBkADWNU5etnooaywHqrB19Tf40hy6/miUAnNAx6o8/ueoRawn+3RJyRvQW3WKpZPbp4zB49zcYkDw==', 'vByYjMKdlro+0DLkj4Ys2hye1hWwesjbUe85nNP6KUEAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAABgAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAukO3QAAAAAAQAAAAUAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAYAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAAgAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('61b33dced6b81dde0e86b61ba4abc280b6c35c6e4ba8045b5082f74a9a2b60ed', 5, 7, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAJAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAJUC+QAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAFHqWUK4Luj4d8sUiQ18OB6fikbsPQXZAOIfZ32sgs62+Q17GMnwYqsxFo1ti49R7cMLadDsnhHjknkOQMzc+Dg==', 'YbM9zta4Hd4OhrYbpKvCgLbDXG5LqARbUIL3SporYO0AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAABwAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAlQL5AAAAAAAQAAAAQAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAcAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAJUC+QAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAAkAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('163aab67c5a24a59eda5e4b4e5f32924f603cff52a5e4fb25eae987538c23106', 5, 8, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAKAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAG/COsAAAAAAEAAAADAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAm8aNJ18QdO28lh/q/TJRX9IDlSqhaNzxgla/NgydpGXxdgAYYA9bSLdcknkQ8zFwfSdYmmjKqnDxYG1U00rLBw==', 'FjqrZ8WiSlntpeS05fMpJPYDz/UqXk+yXq6YdTjCMQYAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAACAAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAb8I6wAAAAAAQAAAAMAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAgAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAG/COsAAAAAAEAAAADAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAAoAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('627fdbd55feaf21e6e96addebb0f5fc73540ff9505d5d0dc76c9ec69f4d2f76f', 5, 9, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAALAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAEqBfIAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABA2pl8oiRj9zUIFp9AYMaKOb0OAbMsMjJNUUHewa3JwSH0V2Zaol7gkH5ymr3CNwO1e5X8fGilLZm+x5P7okPWDQ==', 'Yn/b1V/q8h5ulq3euw9fxzVA/5UF1dDcdsnsafTS928AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAACQAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAASoF8gAAAAAAQAAAAIAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAkAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAEqBfIAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAAsAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('e252b8842716f49fe824df8c95e51a55b40db1b51017ba97dc59b2d971e5cb10', 5, 10, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAMAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACVAvkAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABA0lB577a6VFTmqiBKQXiyg6YgjTPcU8n9Mldb5GdKeZ8DRkWG797qE3Tn/WL5uFYnY6qldsI9U31ASttn/Mh8Cg==', '4lK4hCcW9J/oJN+MleUaVbQNsbUQF7qX3Fmy2XHlyxAAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAACgAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+QAAAAAAQAAAAEAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAoAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACVAvkAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAAwAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('b962b228793859d32de9d6a3d3e782acb8f2d0b9e3a17a91571a402d7cd47a8a', 5, 11, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAANAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAAAAAAoAAAABAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAikMlBAAA6oi4Rg6Gp3svzTPGcaUQx4HtpN0TgusXrMTkbVsBpvHNs+w0bFF9BOgtyGYK2/6zfkXYMVEB9X6aCg==', 'uWKyKHk4WdMt6daj0+eCrLjy0LnjoXqRVxpALXzUeooAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAACwAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAA7msoAAAAACgAAAAEAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAsAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAAAAAAoAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAA0AAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('0343d98ff86bf4b5f9e24db8b3889fe34df7a166cfde7e9098a83c11f7eb9722', 5, 12, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAOAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAXhBGyAAAAAAoAAABlAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAjAuehle1J2zs3RaLV5FD/TsgwVWQTHrGyz9xtHfjohTp9ugklMElF1GFa7zxijTpghCK1A0yyVuIrf8mIQiuBA==', 'A0PZj/hr9LX54k24s4if4033oWbP3n6QmKg8EffrlyIAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAADAAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAA2e3xtUAAAACgAAAGUAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAwAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANnt8bVAAAAAoAAABlAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAA4AAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('e82691759c9c5796c5cc91a1c71f233b6c5a38af9ad5976c7e655078818838e7', 5, 13, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAPAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAVMAXOAAAAAAoAAABbAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAj4F6inPyng6e0YtLtA9CBE8NYDuuMERmHR9ePEt3dFa0gma/P84LRkWeDa4Zb2E6wKVLnrjcqRdWHjE1YN3CAw==', '6CaRdZycV5bFzJGhxx8jO2xaOK+a1ZdsfmVQeIGIOOcAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAADQAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAA2Y6TpUAAAACgAAAFsAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAA0AAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANmOk6VAAAAAoAAABbAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAA8AAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('d80c809a4065600d7705e7db04e1260bf39582d941446a95fb9cea66680ef0c3', 5, 14, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAQAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAS2/nqAAAAAAoAAABRAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAGYwwYwUMaDuxhjfxFrmYgv62lZiUxTe8QNw75Za/PCyZ/ZS4NK6peWAJh+m8H33lhcVsst5ElAhFZ+zwZZ3VDQ==', '2AyAmkBlYA13BefbBOEmC/OVgtlBRGqV+5zqZmgO8MMAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAADgAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAA2S81lUAAAACgAAAFEAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAA4AAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANkvNZVAAAAAoAAABRAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAABAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('fd0bc444f5e90e9a61a5aa011a8b62376ef2d7e304418a188a294bb0b95740f8', 5, 15, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAARAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAQh+4GAAAAAAoAAABHAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAvgqC6TyEhSrhF7K4wwOgd0sCvmFAQgfM1Ez+eEwWbm/BPJSW0WpOTxU5feEKAOpLYaHJvvvD+WZKm5PI/yadBw==', '/QvERPXpDpphpaoBGotiN27y1+MEQYoYiilLsLlXQPgAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAADwAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAA2M/XhUAAAACgAAAEcAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAA8AAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANjP14VAAAAAoAAABHAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAABEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('04b1a1a09159b1c7bb43fd1dc0f282958d0a01c337d72a0324c0262b58d93615', 5, 16, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAASAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAOM+IiAAAAAAoAAAA9AAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAE0N79ktAplSSjovU50IktziuRrJN6xmRkF7fsV+YjK5g8XWPegdWuH8u55zCzZcBzddo8CaiuEWpJMPjMZZICA==', 'BLGhoJFZsce7Q/0dwPKClY0KAcM31yoDJMAmK1jZNhUAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAAEAAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAA2HB5dUAAAACgAAAD0AAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABAAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANhweXVAAAAAoAAAA9AAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAABIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('5d37d98f720dfb3dce49331f403bfa3f9ef13122fae954a73b7b688b180b1516', 5, 17, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAATAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAL39Y+AAAAAAoAAAAzAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAXUhb5QTAO+vV5kTEQqOp9yi4sDerjU5vIT5VH3MiOG381zIplmafJjLNHS02enkonOHtHWIvqznVQjHqQ389DQ==', 'XTfZj3IN+z3OSTMfQDv6P57xMSL66VSnO3toixgLFRYAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAAEQAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAvf1j4AAAAACgAAADMAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABEAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAL39Y+AAAAAAoAAAAzAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAABMAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('a3d82c4ac237e77f385f3cdf5a358cabc4b0c12b7f58b59c197fdba8a76010cf', 5, 18, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAUAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAJi8paAAAAAAoAAAApAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAiJwFcozA9Q4Vj/tABAkphbvOi6Hs325bHDBpTi6J/LN3SVHGsYQ2UwD1recgYoYtoWD1+qkKdFMSzeuIZodJDQ==', 'o9gsSsI35384XzzfWjWMq8SwwSt/WLWcGX/bqKdgEM8AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAAEgAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAmLyloAAAAACgAAACkAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABIAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAJi8paAAAAAAoAAAApAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAABQAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('e09337eedf136665192e840b23bf26b86fc85b93bb401d3a1ce4ee2a1b579213', 5, 19, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAVAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAHN752AAX14QkSejmcAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAEhl1VhzJ53lV9jnMsTC9/D5/tr0jaWCgSc0KCmdSqlqbQ/kDEgvT+jfSLDuQ6gM9GJCSfoFXT4preQ0mpLvCCQ==', '4JM37t8TZmUZLoQLI78muG/IW5O7QB06HOTuKhtXkhMAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAAEwAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAc3vnYABfXhCRJ6OZwAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAHN752AAX14QkSejmcAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAABUAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('f140ddf0c75f70ddf0d79391e6b5992b9c56b9c23c040008b908c70a413eb03d', 5, 20, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAWAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAE47KSAAAAAAoAAAAVAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAW7ujBoctNRfa1M6+T0tShj0Q+l9ybp9C6jQmrSEUeBSwAqucU1YAMlc3XzqIBy35EsuVN0k0hD81/rrCNCtICg==', '8UDd8MdfcN3w15OR5rWZK5xWucI8BAAIuQjHCkE+sD0AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAAFAAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAATjspIAAAAACgAAABUAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABQAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAE47KSAAAAAAoAAAAVAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAABYAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('5d46530574ecf525512b5184af69899d95a826ec6bbad2e0b2d34b3efa352d7f', 5, 21, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAXAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACj6auAAAAAAoAAAALAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAmEz+ciLZWEXIlsEWtrY1Ii1fzoax2dGCE/Fu0GhOyqbw90Dvs+k3aVOmQLTByU5JWjEvd6Op+oV3i+7KPPtxAw==', 'XUZTBXTs9SVRK1GEr2mJnZWoJuxrutLgstNLPvo1LX8AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAAFQAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAKPpq4AAAAACgAAAAsAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABUAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACj6auAAAAAAoAAAALAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAABcAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('bc2a16ca82b7d0bd903c26482736cceb9f4efa077071e72849654b3aced94136', 5, 22, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAYAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAdzWUAAAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAJnrtXGyjkqpAJAFfDY0JyJjXfS9/xXLLHdu3XT20IxpJCBQ2K0fhYnVis0tnbacC9/vTcmLnWxKg1oGCR9usBA==', 'vCoWyoK30L2QPCZIJzbM659O+gdwcecoSWVLOs7ZQTYAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAAFgAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAB3NZQAAAAABQAAAAEAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABYAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAdzWUAAAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAABgAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('a0bdbdb1aa35b7f2aec201b618fca59405e4c375f8f76a24ef25e885a96fd7ed', 5, 23, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAZAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAXv6x8AAAAAAUAAAAzAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAGqxC/cid99JKEBv6Y7vmkU1u+UQ+SwDxHIjLeMmmrt5Uv2TCs6Ct4tokvwjlGsbBo1scU8nQmwuXui8bfNGTAA==', 'oL29sao1t/KuwgG2GPyllAXkw3X492ok7yXohalv1+0AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAAFwAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAA1dTnBUAAAABQAAADMAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABcAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANXU5wVAAAAAUAAAAzAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAABkAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('9b90554626c9bfa396b4f61cc910d383a38f1223c8f5478edde6fe60a7f2f406', 5, 24, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAaAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAVa6CYAAAAAAUAAAAuAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABATU8XW0HLVKABibMcV0H3VxUkGh/dQhUcM0eFCkFzVgeXmY9g1V/MnP9DsNs1aipuJVlAGS0B88gxbmoQ5h6rDA==', 'm5BVRibJv6OWtPYcyRDTg6OPEiPI9UeO3eb+YKfy9AYAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAAGAAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAA1XWI9UAAAABQAAAC4AAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABgAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANV1iPVAAAAAUAAAAuAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAABoAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('0e17e87fcda53937d77cbf1e2658fcdf41eb0689e9649545bb14a5960832e5b8', 5, 25, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAbAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAATF5S0AAAAAAUAAAApAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABALhl41aevL0eWZT/dx9jwFRVb7nDeDsjPeuPKK5QCBgWZjBWFwwRXz+gTiHccCvG5W4d93ucAU4xOkbCj1VH9CQ==', 'Dhfof82lOTfXfL8eJlj830HrBonpZJVFuxSllggy5bgAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAAGQAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAA1RYq5UAAAABQAAACkAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABkAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANUWKuVAAAAAUAAAApAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAABsAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('f277e4abf7d0d326fa63ee62415f7a117e43453072677d1f6e9618c8d2bb8524', 5, 26, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAcAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAQw4jQAAAAAAUAAAAkAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAxjfuAsXsrTxv+5NVYnsb0soqC6ZoluT/Xobjrt45eAeNZMwp9/RV2hLXySkVOVk2O814/dgyeap7M+LgWibPBg==', '8nfkq/fQ0yb6Y+5iQV96EX5DRTByZ30fbpYYyNK7hSQAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAAGgAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAA1LbM1UAAAABQAAACQAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABoAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANS2zNVAAAAAUAAAAkAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAABwAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('5e3622bf6dab1276155014b8387f261a0bbfbef247caa05e9c4be8c890dad958', 5, 27, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAdAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAOb3zsAAAAAAUAAAAfAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAcFijipV/lZRIDYicNpHFwnaL4J0Fmwkcr0G9VxH4lZSYgLjgQnvgniCBQrvu2eqyqOFHC8H04T7D9jXseYr4Cg==', 'XjYiv22rEnYVUBS4OH8mGgu/vvJHyqBenEvoyJDa2VgAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAAGwAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAA1FduxUAAAABQAAAB8AAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABsAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANRXbsVAAAAAUAAAAfAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAB0AAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('b00c83ae8f3d0cd4f1760517182abdf0440eca6efcd2b0fa893aac85b35e42cb', 5, 28, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAeAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAMG3EIAAAAAAUAAAAaAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAbHyKtzQE0yWfACwWf+1pYV3POGcAKxlNttLK4B5LmX34VwUIGjWHqKIiw/aDtsaIqBJI62bfkYn6KiMWiRnlAg==', 'sAyDro89DNTxdgUXGCq98EQOym780rD6iTqshbNeQssAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAAHAAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAwbcQgAAAAABQAAABoAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABwAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAMG3EIAAAAAAUAAAAaAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAB4AAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('3f731b66c1a3d2c4cf9d15bb17e910beaa6f6fa6a77cccfd62f5eabcd3ecfcc5', 5, 29, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAfAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAJx2UkAAAAAAUAAAAVAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAkkZq5sVwc5pr6NYfqlSYkQevr273ibhO9EwVykO2mQ4+ka+BrQj++wfcsuJFbGaeE6NtzQxTf7XQaGZpwjk5Cw==', 'P3MbZsGj0sTPnRW7F+kQvqpvb6anfMz9YvXqvNPs/MUAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAAHQAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAnHZSQAAAAABQAAABUAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAB0AAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAJx2UkAAAAAAUAAAAVAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAB8AAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('492c8c2808bf649ba321f0f75dda11581107bff229ef457340aab8494f5ad412', 5, 30, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAgAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAHc1lAAAAAAAUAAAAQAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAGoxQs3i+aE6OAegBkTmA0dqEadD541CFUYMVQ1aCii5ioLMaP6i5oSZ5+4c0VfY2MAPmpxdNCOY3vwH4XD8yCw==', 'SSyMKAi/ZJujIfD3XdoRWBEHv/Ip70VzQKq4SU9a1BIAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAAHgAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAdzWUAAAAAABQAAABAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAB4AAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAHc1lAAAAAAAUAAAAQAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAACAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('c03dfbea35606bd565f3609a306aa27a82aa14b3fd142f1a13b79c1871f54a3b', 5, 31, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAhAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAFH01cAAAAAAUAAAALAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAlTGl5Ll7WR6ooHo4TPTHiPsPhYQEcPuFd4lby43niifsCCnLkZfzoZYxODmAHHv/RXkskBH7eRkxCZYBRXRQBA==', 'wD376jVga9Vl82CaMGqieoKqFLP9FC8aE7ecGHH1SjsAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAAHwAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAUfTVwAAAAABQAAAAsAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAB8AAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAFH01cAAAAAAUAAAALAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAACEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('42e47f8fdcb738c844e1556c9fad18eb8887d78681ef5e9616898eb6e1c5e8eb', 5, 32, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAiAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACy0F4AAAAAAUAAAAGAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAaSoEc/Kxao3Z6gUsTh1QfLjlT486TQKgtu9NhqT8EzSQ2jFCWgP+odJUnTIPRU74DOgqwEgcHBGpovaass24Dw==', 'QuR/j9y3OMhE4VVsn60Y64iH14aB716WFomOtuHF6OsAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAAIAAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAALLQXgAAAAABQAAAAYAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAACAAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACy0F4AAAAAAUAAAAGAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAACIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('ee96865dfca78c43c4074317f3dbcd7ca978643b973bc9a5dc4f2588f981c6d7', 5, 33, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAjAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAstBeAAAAAAoAAAADAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABA2FwoenXJVOTi9oyWHyNL+0wLRdikDwB4qdNJmj+OQi8a0jRgjQG/1/EsSq885q7mUvX57XCjUGH+rf70B+CFAg==', '7paGXfynjEPEB0MX89vNfKl4ZDuXO8ml3E8liPmBxtcAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAAIQAAAAAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAACy0F4AAAAACgAAAAMAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAACEAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAstBeAAAAAAoAAAADAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAACMAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); + + +-- +-- Name: accountdata accountdata_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accountdata + ADD CONSTRAINT accountdata_pkey PRIMARY KEY (accountid, dataname); + + +-- +-- Name: accounts accounts_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accounts + ADD CONSTRAINT accounts_pkey PRIMARY KEY (accountid); + + +-- +-- Name: ban ban_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ban + ADD CONSTRAINT ban_pkey PRIMARY KEY (nodeid); + + +-- +-- Name: ledgerheaders ledgerheaders_ledgerseq_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_ledgerseq_key UNIQUE (ledgerseq); + + +-- +-- Name: ledgerheaders ledgerheaders_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_pkey PRIMARY KEY (ledgerhash); + + +-- +-- Name: offers offers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY offers + ADD CONSTRAINT offers_pkey PRIMARY KEY (offerid); + + +-- +-- Name: peers peers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY peers + ADD CONSTRAINT peers_pkey PRIMARY KEY (ip, port); + + +-- +-- Name: publishqueue publishqueue_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY publishqueue + ADD CONSTRAINT publishqueue_pkey PRIMARY KEY (ledger); + + +-- +-- Name: pubsub pubsub_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY pubsub + ADD CONSTRAINT pubsub_pkey PRIMARY KEY (resid); + + +-- +-- Name: scpquorums scpquorums_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY scpquorums + ADD CONSTRAINT scpquorums_pkey PRIMARY KEY (qsethash); + + +-- +-- Name: signers signers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY signers + ADD CONSTRAINT signers_pkey PRIMARY KEY (accountid, publickey); + + +-- +-- Name: storestate storestate_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY storestate + ADD CONSTRAINT storestate_pkey PRIMARY KEY (statename); + + +-- +-- Name: trustlines trustlines_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY trustlines + ADD CONSTRAINT trustlines_pkey PRIMARY KEY (accountid, issuer, assetcode); + + +-- +-- Name: txfeehistory txfeehistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txfeehistory + ADD CONSTRAINT txfeehistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: txhistory txhistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txhistory + ADD CONSTRAINT txhistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: accountbalances; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX accountbalances ON accounts USING btree (balance) WHERE (balance >= 1000000000); + + +-- +-- Name: buyingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX buyingissuerindex ON offers USING btree (buyingissuer); + + +-- +-- Name: histbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histbyseq ON txhistory USING btree (ledgerseq); + + +-- +-- Name: histfeebyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histfeebyseq ON txfeehistory USING btree (ledgerseq); + + +-- +-- Name: ledgersbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX ledgersbyseq ON ledgerheaders USING btree (ledgerseq); + + +-- +-- Name: priceindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX priceindex ON offers USING btree (price); + + +-- +-- Name: scpenvsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpenvsbyseq ON scphistory USING btree (ledgerseq); + + +-- +-- Name: scpquorumsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpquorumsbyseq ON scpquorums USING btree (lastledgerseq); + + +-- +-- Name: sellingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX sellingissuerindex ON offers USING btree (sellingissuer); + + +-- +-- Name: signersaccount; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX signersaccount ON signers USING btree (accountid); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/order_books_310-horizon.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/order_books_310-horizon.sql new file mode 100644 index 0000000..b477fce --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/order_books_310-horizon.sql @@ -0,0 +1,960 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; + +SET search_path = public, pg_catalog; + +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_account_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_account_id_fkey; +DROP INDEX IF EXISTS public.trade_effects_by_order_book; +DROP INDEX IF EXISTS public.index_history_transactions_on_id; +DROP INDEX IF EXISTS public.index_history_operations_on_type; +DROP INDEX IF EXISTS public.index_history_operations_on_transaction_id; +DROP INDEX IF EXISTS public.index_history_operations_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_sequence; +DROP INDEX IF EXISTS public.index_history_ledgers_on_previous_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_importer_version; +DROP INDEX IF EXISTS public.index_history_ledgers_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_closed_at; +DROP INDEX IF EXISTS public.index_history_effects_on_type; +DROP INDEX IF EXISTS public.index_history_accounts_on_id; +DROP INDEX IF EXISTS public.index_history_accounts_on_address; +DROP INDEX IF EXISTS public.htrd_time_lookup; +DROP INDEX IF EXISTS public.htrd_pid; +DROP INDEX IF EXISTS public.htrd_pair_time_lookup; +DROP INDEX IF EXISTS public.htrd_counter_lookup; +DROP INDEX IF EXISTS public.htrd_by_offer; +DROP INDEX IF EXISTS public.htp_by_htid; +DROP INDEX IF EXISTS public.hs_transaction_by_id; +DROP INDEX IF EXISTS public.hs_ledger_by_id; +DROP INDEX IF EXISTS public.hop_by_hoid; +DROP INDEX IF EXISTS public.hist_tx_p_id; +DROP INDEX IF EXISTS public.hist_op_p_id; +DROP INDEX IF EXISTS public.hist_e_id; +DROP INDEX IF EXISTS public.hist_e_by_order; +DROP INDEX IF EXISTS public.by_ledger; +DROP INDEX IF EXISTS public.by_hash; +DROP INDEX IF EXISTS public.by_account; +DROP INDEX IF EXISTS public.asset_by_issuer; +ALTER TABLE IF EXISTS ONLY public.history_transaction_participants DROP CONSTRAINT IF EXISTS history_transaction_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_operation_participants DROP CONSTRAINT IF EXISTS history_operation_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_asset_code_asset_type_asset_issuer_key; +ALTER TABLE IF EXISTS ONLY public.gorp_migrations DROP CONSTRAINT IF EXISTS gorp_migrations_pkey; +ALTER TABLE IF EXISTS public.history_transaction_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_operation_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_assets ALTER COLUMN id DROP DEFAULT; +DROP TABLE IF EXISTS public.history_transactions; +DROP SEQUENCE IF EXISTS public.history_transaction_participants_id_seq; +DROP TABLE IF EXISTS public.history_transaction_participants; +DROP TABLE IF EXISTS public.history_trades; +DROP TABLE IF EXISTS public.history_operations; +DROP SEQUENCE IF EXISTS public.history_operation_participants_id_seq; +DROP TABLE IF EXISTS public.history_operation_participants; +DROP TABLE IF EXISTS public.history_ledgers; +DROP TABLE IF EXISTS public.history_effects; +DROP SEQUENCE IF EXISTS public.history_assets_id_seq; +DROP TABLE IF EXISTS public.history_assets; +DROP TABLE IF EXISTS public.history_accounts; +DROP SEQUENCE IF EXISTS public.history_accounts_id_seq; +DROP TABLE IF EXISTS public.gorp_migrations; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: gorp_migrations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE gorp_migrations ( + id text NOT NULL, + applied_at timestamp with time zone +); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_accounts_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_accounts ( + id bigint DEFAULT nextval('history_accounts_id_seq'::regclass) NOT NULL, + address character varying(64) +); + + +-- +-- Name: history_assets; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_assets ( + id integer NOT NULL, + asset_type character varying(64) NOT NULL, + asset_code character varying(12) NOT NULL, + asset_issuer character varying(56) NOT NULL +); + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_assets_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_assets_id_seq OWNED BY history_assets.id; + + +-- +-- Name: history_effects; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_effects ( + history_account_id bigint NOT NULL, + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + type integer NOT NULL, + details jsonb +); + + +-- +-- Name: history_ledgers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_ledgers ( + sequence integer NOT NULL, + ledger_hash character varying(64) NOT NULL, + previous_ledger_hash character varying(64), + transaction_count integer DEFAULT 0 NOT NULL, + operation_count integer DEFAULT 0 NOT NULL, + closed_at timestamp without time zone NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + importer_version integer DEFAULT 1 NOT NULL, + total_coins bigint NOT NULL, + fee_pool bigint NOT NULL, + base_fee integer NOT NULL, + base_reserve integer NOT NULL, + max_tx_set_size integer NOT NULL, + protocol_version integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: history_operation_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operation_participants ( + id integer NOT NULL, + history_operation_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_operation_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_operation_participants_id_seq OWNED BY history_operation_participants.id; + + +-- +-- Name: history_operations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operations ( + id bigint NOT NULL, + transaction_id bigint NOT NULL, + application_order integer NOT NULL, + type integer NOT NULL, + details jsonb, + source_account character varying(64) DEFAULT ''::character varying NOT NULL +); + + +-- +-- Name: history_trades; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_trades ( + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + ledger_closed_at timestamp without time zone NOT NULL, + offer_id bigint NOT NULL, + base_account_id bigint NOT NULL, + base_asset_id bigint NOT NULL, + base_amount bigint NOT NULL, + counter_account_id bigint NOT NULL, + counter_asset_id bigint NOT NULL, + counter_amount bigint NOT NULL, + base_is_seller boolean, + CONSTRAINT history_trades_base_amount_check CHECK ((base_amount > 0)), + CONSTRAINT history_trades_check CHECK ((base_asset_id < counter_asset_id)), + CONSTRAINT history_trades_counter_amount_check CHECK ((counter_amount > 0)) +); + + +-- +-- Name: history_transaction_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transaction_participants ( + id integer NOT NULL, + history_transaction_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_transaction_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_transaction_participants_id_seq OWNED BY history_transaction_participants.id; + + +-- +-- Name: history_transactions; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transactions ( + transaction_hash character varying(64) NOT NULL, + ledger_sequence integer NOT NULL, + application_order integer NOT NULL, + account character varying(64) NOT NULL, + account_sequence bigint NOT NULL, + fee_paid integer NOT NULL, + operation_count integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + tx_envelope text NOT NULL, + tx_result text NOT NULL, + tx_meta text NOT NULL, + tx_fee_meta text NOT NULL, + signatures character varying(96)[] DEFAULT '{}'::character varying[] NOT NULL, + memo_type character varying DEFAULT 'none'::character varying NOT NULL, + memo character varying, + time_bounds int8range +); + + +-- +-- Name: history_assets id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets ALTER COLUMN id SET DEFAULT nextval('history_assets_id_seq'::regclass); + + +-- +-- Name: history_operation_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants ALTER COLUMN id SET DEFAULT nextval('history_operation_participants_id_seq'::regclass); + + +-- +-- Name: history_transaction_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants ALTER COLUMN id SET DEFAULT nextval('history_transaction_participants_id_seq'::regclass); + + +-- +-- Data for Name: gorp_migrations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO gorp_migrations VALUES ('1_initial_schema.sql', '2017-10-25 12:02:41.355815-07'); +INSERT INTO gorp_migrations VALUES ('2_index_participants_by_toid.sql', '2017-10-25 12:02:41.35913-07'); +INSERT INTO gorp_migrations VALUES ('3_use_sequence_in_history_accounts.sql', '2017-10-25 12:02:41.361119-07'); +INSERT INTO gorp_migrations VALUES ('4_add_protocol_version.sql', '2017-10-25 12:02:41.365998-07'); +INSERT INTO gorp_migrations VALUES ('5_create_trades_table.sql', '2017-10-25 12:02:41.370443-07'); +INSERT INTO gorp_migrations VALUES ('6_create_assets_table.sql', '2017-10-25 12:02:41.373746-07'); +INSERT INTO gorp_migrations VALUES ('7_modify_trades_table.sql', '2017-10-25 12:02:41.381902-07'); + + +-- +-- Data for Name: history_accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_accounts VALUES (1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_accounts VALUES (2, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); +INSERT INTO history_accounts VALUES (3, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_accounts VALUES (4, 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON'); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_accounts_id_seq', 4, true); + + +-- +-- Data for Name: history_assets; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_assets_id_seq', 1, false); + + +-- +-- Data for Name: history_effects; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_effects VALUES (2, 8589938689, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589938689, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (2, 8589938689, 3, 10, '{"weight": 1, "public_key": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (3, 8589942785, 1, 0, '{"starting_balance": "6000.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589942785, 2, 3, '{"amount": "6000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (3, 8589942785, 3, 10, '{"weight": 1, "public_key": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU"}'); +INSERT INTO history_effects VALUES (4, 8589946881, 1, 0, '{"starting_balance": "6000.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589946881, 2, 3, '{"amount": "6000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (4, 8589946881, 3, 10, '{"weight": 1, "public_key": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON"}'); +INSERT INTO history_effects VALUES (4, 12884905985, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (3, 12884910081, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (4, 12884914177, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "BTC", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (3, 12884918273, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "BTC", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (3, 17179873281, 1, 2, '{"amount": "5000.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (2, 17179873281, 2, 3, '{"amount": "5000.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (4, 17179877377, 1, 2, '{"amount": "5000.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (2, 17179877377, 2, 3, '{"amount": "5000.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (3, 17179881473, 1, 2, '{"amount": "5000.0000000", "asset_code": "BTC", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (2, 17179881473, 2, 3, '{"amount": "5000.0000000", "asset_code": "BTC", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (4, 17179885569, 1, 2, '{"amount": "5000.0000000", "asset_code": "BTC", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (2, 17179885569, 2, 3, '{"amount": "5000.0000000", "asset_code": "BTC", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); + + +-- +-- Data for Name: history_ledgers; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_ledgers VALUES (1, '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', NULL, 0, 0, '1970-01-01 00:00:00', '2017-10-25 19:04:12.820579', '2017-10-25 19:04:12.820579', 4294967296, 10, 1000000000000000000, 0, 100, 100000000, 100, 0); +INSERT INTO history_ledgers VALUES (2, '596bb81ce92e307b09a80619457beac018b0de490f7975559cd1f968bac17909', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', 3, 3, '2017-10-25 19:04:09', '2017-10-25 19:04:12.827112', '2017-10-25 19:04:12.827112', 8589934592, 10, 1000000000000000000, 300, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (3, '8a4e97d221655d87bb8c8ef26139d4a036a0ed5db602a9d8a952dfbdda2e1362', '596bb81ce92e307b09a80619457beac018b0de490f7975559cd1f968bac17909', 4, 4, '2017-10-25 19:04:10', '2017-10-25 19:04:12.862208', '2017-10-25 19:04:12.862208', 12884901888, 10, 1000000000000000000, 700, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (4, '5f002047771c5aa47b38405550ba1f7b8b0c45dda17743179ffe75ee0f4cb55e', '8a4e97d221655d87bb8c8ef26139d4a036a0ed5db602a9d8a952dfbdda2e1362', 4, 4, '2017-10-25 19:04:11', '2017-10-25 19:04:12.880225', '2017-10-25 19:04:12.880225', 17179869184, 10, 1000000000000000000, 1100, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (5, '00c7240a32e66d9ec267f48c7962c88be11d33cb417c24f89c586cb9158b5427', '5f002047771c5aa47b38405550ba1f7b8b0c45dda17743179ffe75ee0f4cb55e', 33, 33, '2017-10-25 19:04:12', '2017-10-25 19:04:12.909314', '2017-10-25 19:04:12.909314', 21474836480, 10, 1000000000000000000, 4400, 100, 100000000, 10000, 8); + + +-- +-- Data for Name: history_operation_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operation_participants VALUES (1, 8589938689, 1); +INSERT INTO history_operation_participants VALUES (2, 8589938689, 2); +INSERT INTO history_operation_participants VALUES (3, 8589942785, 1); +INSERT INTO history_operation_participants VALUES (4, 8589942785, 3); +INSERT INTO history_operation_participants VALUES (5, 8589946881, 1); +INSERT INTO history_operation_participants VALUES (6, 8589946881, 4); +INSERT INTO history_operation_participants VALUES (7, 12884905985, 4); +INSERT INTO history_operation_participants VALUES (8, 12884910081, 3); +INSERT INTO history_operation_participants VALUES (9, 12884914177, 4); +INSERT INTO history_operation_participants VALUES (10, 12884918273, 3); +INSERT INTO history_operation_participants VALUES (11, 17179873281, 2); +INSERT INTO history_operation_participants VALUES (12, 17179873281, 3); +INSERT INTO history_operation_participants VALUES (13, 17179877377, 2); +INSERT INTO history_operation_participants VALUES (14, 17179877377, 4); +INSERT INTO history_operation_participants VALUES (15, 17179881473, 2); +INSERT INTO history_operation_participants VALUES (16, 17179881473, 3); +INSERT INTO history_operation_participants VALUES (17, 17179885569, 2); +INSERT INTO history_operation_participants VALUES (18, 17179885569, 4); +INSERT INTO history_operation_participants VALUES (19, 21474840577, 3); +INSERT INTO history_operation_participants VALUES (20, 21474844673, 3); +INSERT INTO history_operation_participants VALUES (21, 21474848769, 3); +INSERT INTO history_operation_participants VALUES (22, 21474852865, 3); +INSERT INTO history_operation_participants VALUES (23, 21474856961, 3); +INSERT INTO history_operation_participants VALUES (24, 21474861057, 3); +INSERT INTO history_operation_participants VALUES (25, 21474865153, 3); +INSERT INTO history_operation_participants VALUES (26, 21474869249, 3); +INSERT INTO history_operation_participants VALUES (27, 21474873345, 3); +INSERT INTO history_operation_participants VALUES (28, 21474877441, 3); +INSERT INTO history_operation_participants VALUES (29, 21474881537, 3); +INSERT INTO history_operation_participants VALUES (30, 21474885633, 3); +INSERT INTO history_operation_participants VALUES (31, 21474889729, 3); +INSERT INTO history_operation_participants VALUES (32, 21474893825, 3); +INSERT INTO history_operation_participants VALUES (33, 21474897921, 3); +INSERT INTO history_operation_participants VALUES (34, 21474902017, 3); +INSERT INTO history_operation_participants VALUES (35, 21474906113, 3); +INSERT INTO history_operation_participants VALUES (36, 21474910209, 3); +INSERT INTO history_operation_participants VALUES (37, 21474914305, 3); +INSERT INTO history_operation_participants VALUES (38, 21474918401, 3); +INSERT INTO history_operation_participants VALUES (39, 21474922497, 3); +INSERT INTO history_operation_participants VALUES (40, 21474926593, 3); +INSERT INTO history_operation_participants VALUES (41, 21474930689, 3); +INSERT INTO history_operation_participants VALUES (42, 21474934785, 3); +INSERT INTO history_operation_participants VALUES (43, 21474938881, 3); +INSERT INTO history_operation_participants VALUES (44, 21474942977, 3); +INSERT INTO history_operation_participants VALUES (45, 21474947073, 3); +INSERT INTO history_operation_participants VALUES (46, 21474951169, 3); +INSERT INTO history_operation_participants VALUES (47, 21474955265, 3); +INSERT INTO history_operation_participants VALUES (48, 21474959361, 3); +INSERT INTO history_operation_participants VALUES (49, 21474963457, 3); +INSERT INTO history_operation_participants VALUES (50, 21474967553, 3); +INSERT INTO history_operation_participants VALUES (51, 21474971649, 3); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_operation_participants_id_seq', 51, true); + + +-- +-- Data for Name: history_operations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operations VALUES (8589938689, 8589938688, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (8589942785, 8589942784, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "starting_balance": "6000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (8589946881, 8589946880, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", "starting_balance": "6000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (12884905985, 12884905984, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "trustor": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON'); +INSERT INTO history_operations VALUES (12884910081, 12884910080, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "trustor": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (12884914177, 12884914176, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "trustor": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", "asset_code": "BTC", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON'); +INSERT INTO history_operations VALUES (12884918273, 12884918272, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "trustor": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "asset_code": "BTC", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (17179873281, 17179873280, 1, 1, '{"to": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "from": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "amount": "5000.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); +INSERT INTO history_operations VALUES (17179877377, 17179877376, 1, 1, '{"to": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", "from": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "amount": "5000.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); +INSERT INTO history_operations VALUES (17179881473, 17179881472, 1, 1, '{"to": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "from": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "amount": "5000.0000000", "asset_code": "BTC", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); +INSERT INTO history_operations VALUES (17179885569, 17179885568, 1, 1, '{"to": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", "from": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "amount": "5000.0000000", "asset_code": "BTC", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); +INSERT INTO history_operations VALUES (21474840577, 21474840576, 1, 3, '{"price": "0.1000000", "amount": "10000.0000000", "price_r": {"d": 10, "n": 1}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474844673, 21474844672, 1, 3, '{"price": "0.1111111", "amount": "9000.0000000", "price_r": {"d": 9, "n": 1}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474848769, 21474848768, 1, 3, '{"price": "0.1250000", "amount": "8000.0000000", "price_r": {"d": 8, "n": 1}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474852865, 21474852864, 1, 3, '{"price": "0.1428571", "amount": "7000.0000000", "price_r": {"d": 7, "n": 1}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474856961, 21474856960, 1, 3, '{"price": "0.1666667", "amount": "6000.0000000", "price_r": {"d": 6, "n": 1}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474861057, 21474861056, 1, 3, '{"price": "0.2000000", "amount": "5000.0000000", "price_r": {"d": 5, "n": 1}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474865153, 21474865152, 1, 3, '{"price": "0.2500000", "amount": "4000.0000000", "price_r": {"d": 4, "n": 1}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474869249, 21474869248, 1, 3, '{"price": "0.3333333", "amount": "3000.0000000", "price_r": {"d": 3, "n": 1}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474873345, 21474873344, 1, 3, '{"price": "0.5000000", "amount": "2000.0000000", "price_r": {"d": 2, "n": 1}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474877441, 21474877440, 1, 3, '{"price": "1.0000000", "amount": "1000.0000000", "price_r": {"d": 1, "n": 1}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474881537, 21474881536, 1, 3, '{"price": "10.0000000", "amount": "100.0000000", "price_r": {"d": 1, "n": 10}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474885633, 21474885632, 1, 3, '{"price": "0.0990099", "amount": "10100.0000000", "price_r": {"d": 101, "n": 10}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474889729, 21474889728, 1, 3, '{"price": "0.1098901", "amount": "9100.0000000", "price_r": {"d": 91, "n": 10}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474893825, 21474893824, 1, 3, '{"price": "0.1234568", "amount": "8100.0000000", "price_r": {"d": 81, "n": 10}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474897921, 21474897920, 1, 3, '{"price": "0.1408451", "amount": "7100.0000000", "price_r": {"d": 71, "n": 10}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474902017, 21474902016, 1, 3, '{"price": "0.1639344", "amount": "6100.0000000", "price_r": {"d": 61, "n": 10}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474906113, 21474906112, 1, 3, '{"price": "0.1960784", "amount": "5100.0000000", "price_r": {"d": 51, "n": 10}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474910209, 21474910208, 1, 3, '{"price": "0.2439024", "amount": "4100.0000000", "price_r": {"d": 41, "n": 10}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474914305, 21474914304, 1, 3, '{"price": "0.3225806", "amount": "3100.0000000", "price_r": {"d": 310000028, "n": 100000009}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474918401, 21474918400, 1, 3, '{"price": "0.4761905", "amount": "2100.0000000", "price_r": {"d": 21, "n": 10}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474922497, 21474922496, 1, 3, '{"price": "0.9090909", "amount": "1100.0000000", "price_r": {"d": 11, "n": 10}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474926593, 21474926592, 1, 3, '{"price": "5.0000000", "amount": "200.0000000", "price_r": {"d": 1, "n": 5}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474930689, 21474930688, 1, 3, '{"price": "0.0980392", "amount": "10200.0000000", "price_r": {"d": 51, "n": 5}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474934785, 21474934784, 1, 3, '{"price": "0.1086957", "amount": "9200.0000000", "price_r": {"d": 46, "n": 5}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474938881, 21474938880, 1, 3, '{"price": "0.1219512", "amount": "8200.0000000", "price_r": {"d": 41, "n": 5}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474942977, 21474942976, 1, 3, '{"price": "0.1388889", "amount": "7200.0000000", "price_r": {"d": 36, "n": 5}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474947073, 21474947072, 1, 3, '{"price": "0.1612903", "amount": "6200.0000000", "price_r": {"d": 31, "n": 5}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474951169, 21474951168, 1, 3, '{"price": "0.1923077", "amount": "5200.0000000", "price_r": {"d": 26, "n": 5}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474955265, 21474955264, 1, 3, '{"price": "0.2380952", "amount": "4200.0000000", "price_r": {"d": 21, "n": 5}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474959361, 21474959360, 1, 3, '{"price": "0.3125000", "amount": "3200.0000000", "price_r": {"d": 16, "n": 5}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474963457, 21474963456, 1, 3, '{"price": "0.4545455", "amount": "2200.0000000", "price_r": {"d": 11, "n": 5}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474967553, 21474967552, 1, 3, '{"price": "0.8333333", "amount": "1200.0000000", "price_r": {"d": 6, "n": 5}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474971649, 21474971648, 1, 3, '{"price": "3.3333333", "amount": "300.0000000", "price_r": {"d": 3, "n": 10}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); + + +-- +-- Data for Name: history_trades; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: history_transaction_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transaction_participants VALUES (1, 8589938688, 2); +INSERT INTO history_transaction_participants VALUES (2, 8589938688, 1); +INSERT INTO history_transaction_participants VALUES (3, 8589942784, 1); +INSERT INTO history_transaction_participants VALUES (4, 8589942784, 3); +INSERT INTO history_transaction_participants VALUES (5, 8589946880, 1); +INSERT INTO history_transaction_participants VALUES (6, 8589946880, 4); +INSERT INTO history_transaction_participants VALUES (7, 12884905984, 4); +INSERT INTO history_transaction_participants VALUES (8, 12884910080, 3); +INSERT INTO history_transaction_participants VALUES (9, 12884914176, 4); +INSERT INTO history_transaction_participants VALUES (10, 12884918272, 3); +INSERT INTO history_transaction_participants VALUES (11, 17179873280, 2); +INSERT INTO history_transaction_participants VALUES (12, 17179873280, 3); +INSERT INTO history_transaction_participants VALUES (13, 17179877376, 2); +INSERT INTO history_transaction_participants VALUES (14, 17179877376, 4); +INSERT INTO history_transaction_participants VALUES (15, 17179881472, 3); +INSERT INTO history_transaction_participants VALUES (16, 17179881472, 2); +INSERT INTO history_transaction_participants VALUES (17, 17179885568, 2); +INSERT INTO history_transaction_participants VALUES (18, 17179885568, 4); +INSERT INTO history_transaction_participants VALUES (19, 21474840576, 3); +INSERT INTO history_transaction_participants VALUES (20, 21474844672, 3); +INSERT INTO history_transaction_participants VALUES (21, 21474848768, 3); +INSERT INTO history_transaction_participants VALUES (22, 21474852864, 3); +INSERT INTO history_transaction_participants VALUES (23, 21474856960, 3); +INSERT INTO history_transaction_participants VALUES (24, 21474861056, 3); +INSERT INTO history_transaction_participants VALUES (25, 21474865152, 3); +INSERT INTO history_transaction_participants VALUES (26, 21474869248, 3); +INSERT INTO history_transaction_participants VALUES (27, 21474873344, 3); +INSERT INTO history_transaction_participants VALUES (28, 21474877440, 3); +INSERT INTO history_transaction_participants VALUES (29, 21474881536, 3); +INSERT INTO history_transaction_participants VALUES (30, 21474885632, 3); +INSERT INTO history_transaction_participants VALUES (31, 21474889728, 3); +INSERT INTO history_transaction_participants VALUES (32, 21474893824, 3); +INSERT INTO history_transaction_participants VALUES (33, 21474897920, 3); +INSERT INTO history_transaction_participants VALUES (34, 21474902016, 3); +INSERT INTO history_transaction_participants VALUES (35, 21474906112, 3); +INSERT INTO history_transaction_participants VALUES (36, 21474910208, 3); +INSERT INTO history_transaction_participants VALUES (37, 21474914304, 3); +INSERT INTO history_transaction_participants VALUES (38, 21474918400, 3); +INSERT INTO history_transaction_participants VALUES (39, 21474922496, 3); +INSERT INTO history_transaction_participants VALUES (40, 21474926592, 3); +INSERT INTO history_transaction_participants VALUES (41, 21474930688, 3); +INSERT INTO history_transaction_participants VALUES (42, 21474934784, 3); +INSERT INTO history_transaction_participants VALUES (43, 21474938880, 3); +INSERT INTO history_transaction_participants VALUES (44, 21474942976, 3); +INSERT INTO history_transaction_participants VALUES (45, 21474947072, 3); +INSERT INTO history_transaction_participants VALUES (46, 21474951168, 3); +INSERT INTO history_transaction_participants VALUES (47, 21474955264, 3); +INSERT INTO history_transaction_participants VALUES (48, 21474959360, 3); +INSERT INTO history_transaction_participants VALUES (49, 21474963456, 3); +INSERT INTO history_transaction_participants VALUES (50, 21474967552, 3); +INSERT INTO history_transaction_participants VALUES (51, 21474971648, 3); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_transaction_participants_id_seq', 51, true); + + +-- +-- Data for Name: history_transactions; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transactions VALUES ('db398eb4ae89756325643cad21c94e13bfc074b323ee83e141bf701a5d904f1b', 2, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 1, 100, 1, '2017-10-25 19:04:12.828121', '2017-10-25 19:04:12.828121', 8589938688, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACVAvkAAAAAAAAAAABVvwF9wAAAEAYjQcPT2G5hqnBmgGGeg9J8l4c1EnUlxklElH9sqZr0971F6OLWfe/m4kpFtI+sI0i1qLit5A0JyWnbhYLW5oD', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2sVNYGtQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{GI0HD09huYapwZoBhnoPSfJeHNRJ1JcZJRJR/bKma9Pe9Reji1n3v5uJKRbSPrCNItai4reQNCclp24WC1uaAw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('67c059e1118f4f79b83648e5769b8bf1f1fbf0259d90d2e4a5a8aa0852c41687', 2, 2, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 2, 100, 1, '2017-10-25 19:04:12.84221', '2017-10-25 19:04:12.84221', 8589942784, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAN+EdYAAAAAAAAAAABVvwF9wAAAEDUoLr1FIIMdF1JOK2RVg4EDQvL+exej1s795GdZKz5tJB94pDkbAiz8k+mPv0OVuST8ah1MzkZYglos0c1AcID', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHWAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2o1sQwtQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/84AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{1KC69RSCDHRdSTitkVYOBA0Ly/nsXo9bO/eRnWSs+bSQfeKQ5GwIs/JPpj79Dlbkk/GodTM5GWIJaLNHNQHCAw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('f7cb8309318368f694c8830bf789841e7e2c46dce30e60969d88bd0ce588cbe9', 2, 3, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 3, 100, 1, '2017-10-25 19:04:12.850878', '2017-10-25 19:04:12.850878', 8589946880, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAAN+EdYAAAAAAAAAAABVvwF9wAAAEAQAaCgnhAHvWviyyciJH3kp9yoTQtn2SFjbCqLUUPBKzcRt8huITE9etfxlEBrW4iiJkrgyQeOCq/IGbGe2RAA', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAADfhHWAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2lWLJatQAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/7UAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{EAGgoJ4QB71r4ssnIiR95KfcqE0LZ9khY2wqi1FDwSs3EbfIbiExPXrX8ZRAa1uIoiZK4MkHjgqvyBmxntkQAA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('811192c38643df73c015a5a1d77b802dff05d4f50fc6d10816aa75c0a6109f9a', 3, 1, 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 8589934593, 100, 1, '2017-10-25 19:04:12.862839', '2017-10-25 19:04:12.862839', 12884905984, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAFvFIhaAAAAQPlg7GLhJg0x7jpAw1Ew6H2XF6yRImfJIwFfx09Nui5btOJAFewFANfOaAB8FQZl5p3A5g3k6DHDigfUNUD16gc=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAADfhHVzgAAAACAAAAAgAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1gAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1ecAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{+WDsYuEmDTHuOkDDUTDofZcXrJEiZ8kjAV/HT026Llu04kAV7AUA185oAHwVBmXmncDmDeToMcOKB9Q1QPXqBw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('bd486dbdd02d460817671c4a5a7e9d6e865ca29cb41e62d7aaf70a2fee5b36de', 3, 2, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934593, 100, 1, '2017-10-25 19:04:12.866383', '2017-10-25 19:04:12.866383', 12884910080, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAGu5L5MAAAAQB9kmKW2q3v7Qfy8PMekEb1TTI5ixqkI0BogXrOt7gO162Qbkh2dSTUfeDovc0PAafhDXxthVAlsLujlBmyjBAY=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHVzgAAAACAAAAAgAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1gAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1ecAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{H2SYpbare/tB/Lw8x6QRvVNMjmLGqQjQGiBes63uA7XrZBuSHZ1JNR94Oi9zQ8Bp+ENfG2FUCWwu6OUGbKMEBg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('7df857c23c7dfeb974d7c3956775685a8edfa8496bb781fd346c8e2025fad9bf', 3, 3, 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 8589934594, 100, 1, '2017-10-25 19:04:12.869614', '2017-10-25 19:04:12.869614', 12884914176, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAFvFIhaAAAAQBH/ML6+RzWquFPh8gLF2RuZzYtjjpPeHv/od9M74xlU09Xa4a5e1NhMtMSRIoLItg1EaDWE9zvtHflVWIAaSwQ=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAADfhHVzgAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAADAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAA34R1c4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{Ef8wvr5HNaq4U+HyAsXZG5nNi2OOk94e/+h30zvjGVTT1drhrl7U2Ey0xJEigsi2DURoNYT3O+0d+VVYgBpLBA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('3476bc649563488cf025d82790aa9c44649188232b150d2864d13fe9face5406', 3, 4, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934594, 100, 1, '2017-10-25 19:04:12.872366', '2017-10-25 19:04:12.872366', 12884918272, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAGu5L5MAAAAQEKBv+8zL1epwxC+sJhEYPmbjL9XScXtctoMIdet5dhgk7YJVJzAnRSgYTvfyoIJKJdQmX66uh2o+rG9K6JImgY=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHVzgAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1c4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{QoG/7zMvV6nDEL6wmERg+ZuMv1dJxe1y2gwh163l2GCTtglUnMCdFKBhO9/Kggkol1CZfrq6Haj6sb0rokiaBg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('ea945436a3b650efa88063e737518cf1928d9a43d1aba3ec684704f160b3733e', 4, 1, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 8589934593, 100, 1, '2017-10-25 19:04:12.880763', '2017-10-25 19:04:12.880763', 17179873280, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAukO3QAAAAAAAAAAAH5kC3vAAAAQH/ZkzR/eC0F7xP9zApeHvMH7nqetzaSdYh8WHyrwwvbEnx4Db6gz0grnRJBJS66OZbGmCk7yzHm8DkJ7bJ4QAU=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AH//////////AAAAAQAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{f9mTNH94LQXvE/3MCl4e8wfuep63NpJ1iHxYfKvDC9sSfHgNvqDPSCudEkElLro5lsaYKTvLMebwOQntsnhABQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('416a63c3f1491537698cdb6f981097ed8e44ca27d2d9006bd0ba68832ebf9d55', 4, 2, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 8589934594, 100, 1, '2017-10-25 19:04:12.885554', '2017-10-25 19:04:12.885554', 17179877376, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAukO3QAAAAAAAAAAAH5kC3vAAAAQFFGLGFFXbEDRdk2eFyQATNpHuqO/sFrpqsxmNNwGa+MLibNQJLDXWafC4W8KMKQ/hE0M0TLxZeu/O8tYnBuwwA=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AH//////////AAAAAQAAAAAAAAAA', 'AAAAAQAAAAEAAAAEAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+M4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{UUYsYUVdsQNF2TZ4XJABM2ke6o7+wWumqzGY03AZr4wuJs1AksNdZp8LhbwowpD+ETQzRMvFl6787y1icG7DAA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('c29948d1ca87bad2e3299c1b018c996c22ff5d56f5753bc38f0fd88c4d2c5d94', 4, 3, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 8589934595, 100, 1, '2017-10-25 19:04:12.890042', '2017-10-25 19:04:12.890042', 17179881472, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAukO3QAAAAAAAAAAAH5kC3vAAAAQLn0NeCsam5YrmtsMJQVOLyOTPqDb7SMTCZGofm5ShU6fcl3PPieInQNtk1FmRVeUxdYX1rsW2KH1HQbJ644Hw0=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AH//////////AAAAAQAAAAAAAAAA', 'AAAAAQAAAAEAAAAEAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+LUAAAAAgAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{ufQ14Kxqbliua2wwlBU4vI5M+oNvtIxMJkah+blKFTp9yXc8+J4idA22TUWZFV5TF1hfWuxbYofUdBsnrjgfDQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('554ea22913ebf01fc4b3a4d60b59ae28f379b800d5b6da40a6987a53ebd87f07', 4, 4, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 8589934596, 100, 1, '2017-10-25 19:04:12.894583', '2017-10-25 19:04:12.894583', 17179885568, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAABQlRDAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAukO3QAAAAAAAAAAAH5kC3vAAAAQF34mYyRLbVT42QtFuY5UN0sr9EcuE3ltA/9yAxiNOvukbVTOaz86uCXpEZlX1FnExYDZwOZJWVXfsbdovbVUwc=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAUJUQwAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AH//////////AAAAAQAAAAAAAAAA', 'AAAAAQAAAAEAAAAEAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAJUC+JwAAAAAgAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{XfiZjJEttVPjZC0W5jlQ3Syv0Ry4TeW0D/3IDGI06+6RtVM5rPzq4JekRmVfUWcTFgNnA5klZVd+xt2i9tVTBw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('c48b48982dcd1f079d90ee3289dc2b6269bce088bd7183ddba8e3dca25b1e84b', 5, 1, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934595, 100, 1, '2017-10-25 19:04:12.909959', '2017-10-25 19:04:12.909959', 21474840576, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAXSHboAAAAAAEAAAAKAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAOL8799gdl4G9kC/cOT6pQu2zfD5GhhExAKtKmb7s8ozksyqIYI21eqCLcluwLlb2wBim5Owr0y2zzxYH7vqOBw==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAEAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAN4G/GVAAAAAEAAAAKAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAEAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAN4G/GVAAAAAEAAAAKAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAAMAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1c4AAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1bUAAAAAgAAAAMAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{OL8799gdl4G9kC/cOT6pQu2zfD5GhhExAKtKmb7s8ozksyqIYI21eqCLcluwLlb2wBim5Owr0y2zzxYH7vqOBw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('437a48108dd143273dcf1c28296d6048d0915c6072650eb5f794b89560a40c0c', 5, 2, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934596, 100, 1, '2017-10-25 19:04:12.912458', '2017-10-25 19:04:12.912458', 21474844672, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAU9GsEAAAAAAEAAAAJAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAuUnZlMxj8taqMo/PYfI4rBl41Cpps/XHGlNot5+TWTZE9A06ipER6Q7XqbxhNzmAR8NaQbS3Ds0RQv44r3GLCg==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAIAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAN2nnlVAAAAAEAAAAJAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAIAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAN2nnlVAAAAAEAAAAJAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAAQAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1ZwAAAAAgAAAAQAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{uUnZlMxj8taqMo/PYfI4rBl41Cpps/XHGlNot5+TWTZE9A06ipER6Q7XqbxhNzmAR8NaQbS3Ds0RQv44r3GLCg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('9f9ea714b1a39664b1e6df0fafd1aa17eda71bb05715fe1371246f3208b3a1b1', 5, 3, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934597, 100, 1, '2017-10-25 19:04:12.91472', '2017-10-25 19:04:12.91472', 21474848768, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAASoF8gAAAAAAEAAAAIAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABA9LQUhBPQFZOopSh/vuUNPcUm0DLI9wD4aw449Ccu6ADMejat8t2MyuzWvx8RwQMPd9zdXlwCE5d8cT3upwuPAg==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAN1IQEVAAAAAEAAAAIAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAN1IQEVAAAAAEAAAAIAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAAUAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1YMAAAAAgAAAAUAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{9LQUhBPQFZOopSh/vuUNPcUm0DLI9wD4aw449Ccu6ADMejat8t2MyuzWvx8RwQMPd9zdXlwCE5d8cT3upwuPAg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('f966ab310137dae86c7ee7ee08850339537c78f854eaaaea78d7fd834134da79', 5, 4, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934598, 100, 1, '2017-10-25 19:04:12.917359', '2017-10-25 19:04:12.917359', 21474852864, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAGAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAQTFM8AAAAAAEAAAAHAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAaZXT/bkDz3FqTJhXKtcSev5gzrE0wL2GSnszf7t4qBTcnW3P4heHeAFIkSjtgz0m7IgGT1goVlbtdA5PtZNNCw==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAQAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANzo4jVAAAAAEAAAAHAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAQAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANzo4jVAAAAAEAAAAHAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAAYAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1WoAAAAAgAAAAYAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{aZXT/bkDz3FqTJhXKtcSev5gzrE0wL2GSnszf7t4qBTcnW3P4heHeAFIkSjtgz0m7IgGT1goVlbtdA5PtZNNCw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('360d890880eebd224d7506b9881352fbc6b6b1921f84a85e9807f0775b5560bc', 5, 5, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934599, 100, 1, '2017-10-25 19:04:12.920141', '2017-10-25 19:04:12.920141', 21474856960, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAHAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAN+EdYAAAAAAEAAAAGAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAp1hMoM8rNid3pnBSv/sqgRwIIyLgkeBbUMH9SYTGgXXWZSB1Q7Rv54QgXbJ5XNxPqA9kgz/LYpJc3V9Lsk+mBA==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAUAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANyJhCVAAAAAEAAAAGAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAUAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANyJhCVAAAAAEAAAAGAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAAcAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1VEAAAAAgAAAAcAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{p1hMoM8rNid3pnBSv/sqgRwIIyLgkeBbUMH9SYTGgXXWZSB1Q7Rv54QgXbJ5XNxPqA9kgz/LYpJc3V9Lsk+mBA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('bc1c988cc29d96ba3ed032e48f862cda1c9ed615b07ac8db51ef399cd3fa2941', 5, 6, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934600, 100, 1, '2017-10-25 19:04:12.922732', '2017-10-25 19:04:12.922732', 21474861056, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAd6LAs45dbBkADWNU5etnooaywHqrB19Tf40hy6/miUAnNAx6o8/ueoRawn+3RJyRvQW3WKpZPbp4zB49zcYkDw==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAYAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AAAAAAEAAAAFAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAYAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAALpDt0AAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAAgAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1TgAAAAAgAAAAgAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{d6LAs45dbBkADWNU5etnooaywHqrB19Tf40hy6/miUAnNAx6o8/ueoRawn+3RJyRvQW3WKpZPbp4zB49zcYkDw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('61b33dced6b81dde0e86b61ba4abc280b6c35c6e4ba8045b5082f74a9a2b60ed', 5, 7, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934601, 100, 1, '2017-10-25 19:04:12.9251', '2017-10-25 19:04:12.9251', 21474865152, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAJAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAJUC+QAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAFHqWUK4Luj4d8sUiQ18OB6fikbsPQXZAOIfZ32sgs62+Q17GMnwYqsxFo1ti49R7cMLadDsnhHjknkOQMzc+Dg==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAcAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAJUC+QAAAAAAEAAAAEAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAcAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAJUC+QAAAAAAEAAAAEAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAAkAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1R8AAAAAgAAAAkAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{FHqWUK4Luj4d8sUiQ18OB6fikbsPQXZAOIfZ32sgs62+Q17GMnwYqsxFo1ti49R7cMLadDsnhHjknkOQMzc+Dg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('163aab67c5a24a59eda5e4b4e5f32924f603cff52a5e4fb25eae987538c23106', 5, 8, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934602, 100, 1, '2017-10-25 19:04:12.927506', '2017-10-25 19:04:12.927506', 21474869248, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAKAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAG/COsAAAAAAEAAAADAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAm8aNJ18QdO28lh/q/TJRX9IDlSqhaNzxgla/NgydpGXxdgAYYA9bSLdcknkQ8zFwfSdYmmjKqnDxYG1U00rLBw==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAgAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAG/COsAAAAAAEAAAADAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAgAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAG/COsAAAAAAEAAAADAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAAoAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1QYAAAAAgAAAAoAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{m8aNJ18QdO28lh/q/TJRX9IDlSqhaNzxgla/NgydpGXxdgAYYA9bSLdcknkQ8zFwfSdYmmjKqnDxYG1U00rLBw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('627fdbd55feaf21e6e96addebb0f5fc73540ff9505d5d0dc76c9ec69f4d2f76f', 5, 9, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934603, 100, 1, '2017-10-25 19:04:12.929716', '2017-10-25 19:04:12.929716', 21474873344, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAALAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAEqBfIAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABA2pl8oiRj9zUIFp9AYMaKOb0OAbMsMjJNUUHewa3JwSH0V2Zaol7gkH5ymr3CNwO1e5X8fGilLZm+x5P7okPWDQ==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAkAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAEqBfIAAAAAAEAAAACAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAkAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAEqBfIAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAAsAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1O0AAAAAgAAAAsAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{2pl8oiRj9zUIFp9AYMaKOb0OAbMsMjJNUUHewa3JwSH0V2Zaol7gkH5ymr3CNwO1e5X8fGilLZm+x5P7okPWDQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('e252b8842716f49fe824df8c95e51a55b40db1b51017ba97dc59b2d971e5cb10', 5, 10, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934604, 100, 1, '2017-10-25 19:04:12.931962', '2017-10-25 19:04:12.931962', 21474877440, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAMAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACVAvkAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABA0lB577a6VFTmqiBKQXiyg6YgjTPcU8n9Mldb5GdKeZ8DRkWG797qE3Tn/WL5uFYnY6qldsI9U31ASttn/Mh8Cg==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAoAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACVAvkAAAAAAEAAAABAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAoAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACVAvkAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAAwAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1NQAAAAAgAAAAwAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{0lB577a6VFTmqiBKQXiyg6YgjTPcU8n9Mldb5GdKeZ8DRkWG797qE3Tn/WL5uFYnY6qldsI9U31ASttn/Mh8Cg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('b962b228793859d32de9d6a3d3e782acb8f2d0b9e3a17a91571a402d7cd47a8a', 5, 11, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934605, 100, 1, '2017-10-25 19:04:12.93463', '2017-10-25 19:04:12.93463', 21474881536, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAANAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAAAAAAoAAAABAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAikMlBAAA6oi4Rg6Gp3svzTPGcaUQx4HtpN0TgusXrMTkbVsBpvHNs+w0bFF9BOgtyGYK2/6zfkXYMVEB9X6aCg==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAsAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAAAAAAoAAAABAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAsAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAAAAAAoAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAA0AAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1LsAAAAAgAAAA0AAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{ikMlBAAA6oi4Rg6Gp3svzTPGcaUQx4HtpN0TgusXrMTkbVsBpvHNs+w0bFF9BOgtyGYK2/6zfkXYMVEB9X6aCg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('0343d98ff86bf4b5f9e24db8b3889fe34df7a166cfde7e9098a83c11f7eb9722', 5, 12, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934606, 100, 1, '2017-10-25 19:04:12.937026', '2017-10-25 19:04:12.937026', 21474885632, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAOAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAXhBGyAAAAAAoAAABlAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAjAuehle1J2zs3RaLV5FD/TsgwVWQTHrGyz9xtHfjohTp9ugklMElF1GFa7zxijTpghCK1A0yyVuIrf8mIQiuBA==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAwAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANnt8bVAAAAAoAAABlAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAwAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANnt8bVAAAAAoAAABlAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAA4AAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1KIAAAAAgAAAA4AAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{jAuehle1J2zs3RaLV5FD/TsgwVWQTHrGyz9xtHfjohTp9ugklMElF1GFa7zxijTpghCK1A0yyVuIrf8mIQiuBA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('e82691759c9c5796c5cc91a1c71f233b6c5a38af9ad5976c7e655078818838e7', 5, 13, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934607, 100, 1, '2017-10-25 19:04:12.939294', '2017-10-25 19:04:12.939294', 21474889728, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAPAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAVMAXOAAAAAAoAAABbAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAj4F6inPyng6e0YtLtA9CBE8NYDuuMERmHR9ePEt3dFa0gma/P84LRkWeDa4Zb2E6wKVLnrjcqRdWHjE1YN3CAw==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAA0AAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANmOk6VAAAAAoAAABbAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAA0AAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANmOk6VAAAAAoAAABbAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAA8AAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1IkAAAAAgAAAA8AAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{j4F6inPyng6e0YtLtA9CBE8NYDuuMERmHR9ePEt3dFa0gma/P84LRkWeDa4Zb2E6wKVLnrjcqRdWHjE1YN3CAw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('d80c809a4065600d7705e7db04e1260bf39582d941446a95fb9cea66680ef0c3', 5, 14, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934608, 100, 1, '2017-10-25 19:04:12.941575', '2017-10-25 19:04:12.941575', 21474893824, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAQAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAS2/nqAAAAAAoAAABRAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAGYwwYwUMaDuxhjfxFrmYgv62lZiUxTe8QNw75Za/PCyZ/ZS4NK6peWAJh+m8H33lhcVsst5ElAhFZ+zwZZ3VDQ==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAA4AAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANkvNZVAAAAAoAAABRAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAA4AAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANkvNZVAAAAAoAAABRAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAABAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1HAAAAAAgAAABAAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{GYwwYwUMaDuxhjfxFrmYgv62lZiUxTe8QNw75Za/PCyZ/ZS4NK6peWAJh+m8H33lhcVsst5ElAhFZ+zwZZ3VDQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('fd0bc444f5e90e9a61a5aa011a8b62376ef2d7e304418a188a294bb0b95740f8', 5, 15, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934609, 100, 1, '2017-10-25 19:04:12.943782', '2017-10-25 19:04:12.943782', 21474897920, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAARAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAQh+4GAAAAAAoAAABHAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAvgqC6TyEhSrhF7K4wwOgd0sCvmFAQgfM1Ez+eEwWbm/BPJSW0WpOTxU5feEKAOpLYaHJvvvD+WZKm5PI/yadBw==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAA8AAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANjP14VAAAAAoAAABHAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAA8AAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANjP14VAAAAAoAAABHAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAABEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1FcAAAAAgAAABEAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{vgqC6TyEhSrhF7K4wwOgd0sCvmFAQgfM1Ez+eEwWbm/BPJSW0WpOTxU5feEKAOpLYaHJvvvD+WZKm5PI/yadBw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('04b1a1a09159b1c7bb43fd1dc0f282958d0a01c337d72a0324c0262b58d93615', 5, 16, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934610, 100, 1, '2017-10-25 19:04:12.946099', '2017-10-25 19:04:12.946099', 21474902016, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAASAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAOM+IiAAAAAAoAAAA9AAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAE0N79ktAplSSjovU50IktziuRrJN6xmRkF7fsV+YjK5g8XWPegdWuH8u55zCzZcBzddo8CaiuEWpJMPjMZZICA==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABAAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANhweXVAAAAAoAAAA9AAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABAAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANhweXVAAAAAoAAAA9AAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAABIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1D4AAAAAgAAABIAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{E0N79ktAplSSjovU50IktziuRrJN6xmRkF7fsV+YjK5g8XWPegdWuH8u55zCzZcBzddo8CaiuEWpJMPjMZZICA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('5d37d98f720dfb3dce49331f403bfa3f9ef13122fae954a73b7b688b180b1516', 5, 17, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934611, 100, 1, '2017-10-25 19:04:12.948285', '2017-10-25 19:04:12.948285', 21474906112, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAATAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAL39Y+AAAAAAoAAAAzAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAXUhb5QTAO+vV5kTEQqOp9yi4sDerjU5vIT5VH3MiOG381zIplmafJjLNHS02enkonOHtHWIvqznVQjHqQ389DQ==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABEAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAL39Y+AAAAAAoAAAAzAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABEAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAL39Y+AAAAAAoAAAAzAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAABMAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1CUAAAAAgAAABMAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{XUhb5QTAO+vV5kTEQqOp9yi4sDerjU5vIT5VH3MiOG381zIplmafJjLNHS02enkonOHtHWIvqznVQjHqQ389DQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('a3d82c4ac237e77f385f3cdf5a358cabc4b0c12b7f58b59c197fdba8a76010cf', 5, 18, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934612, 100, 1, '2017-10-25 19:04:12.950902', '2017-10-25 19:04:12.950902', 21474910208, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAUAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAJi8paAAAAAAoAAAApAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAiJwFcozA9Q4Vj/tABAkphbvOi6Hs325bHDBpTi6J/LN3SVHGsYQ2UwD1recgYoYtoWD1+qkKdFMSzeuIZodJDQ==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABIAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAJi8paAAAAAAoAAAApAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABIAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAJi8paAAAAAAoAAAApAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAABQAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R1AwAAAAAgAAABQAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{iJwFcozA9Q4Vj/tABAkphbvOi6Hs325bHDBpTi6J/LN3SVHGsYQ2UwD1recgYoYtoWD1+qkKdFMSzeuIZodJDQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('e09337eedf136665192e840b23bf26b86fc85b93bb401d3a1ce4ee2a1b579213', 5, 19, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934613, 100, 1, '2017-10-25 19:04:12.953375', '2017-10-25 19:04:12.953375', 21474914304, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAVAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAHN752AAX14QkSejmcAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAEhl1VhzJ53lV9jnMsTC9/D5/tr0jaWCgSc0KCmdSqlqbQ/kDEgvT+jfSLDuQ6gM9GJCSfoFXT4preQ0mpLvCCQ==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAHN752AAX14QkSejmcAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAHN752AAX14QkSejmcAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAABUAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R0/MAAAAAgAAABUAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{Ehl1VhzJ53lV9jnMsTC9/D5/tr0jaWCgSc0KCmdSqlqbQ/kDEgvT+jfSLDuQ6gM9GJCSfoFXT4preQ0mpLvCCQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('f140ddf0c75f70ddf0d79391e6b5992b9c56b9c23c040008b908c70a413eb03d', 5, 20, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934614, 100, 1, '2017-10-25 19:04:12.955886', '2017-10-25 19:04:12.955886', 21474918400, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAWAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAE47KSAAAAAAoAAAAVAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAW7ujBoctNRfa1M6+T0tShj0Q+l9ybp9C6jQmrSEUeBSwAqucU1YAMlc3XzqIBy35EsuVN0k0hD81/rrCNCtICg==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABQAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAE47KSAAAAAAoAAAAVAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABQAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAE47KSAAAAAAoAAAAVAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAABYAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R09oAAAAAgAAABYAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{W7ujBoctNRfa1M6+T0tShj0Q+l9ybp9C6jQmrSEUeBSwAqucU1YAMlc3XzqIBy35EsuVN0k0hD81/rrCNCtICg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('5d46530574ecf525512b5184af69899d95a826ec6bbad2e0b2d34b3efa352d7f', 5, 21, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934615, 100, 1, '2017-10-25 19:04:12.958253', '2017-10-25 19:04:12.958253', 21474922496, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAXAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACj6auAAAAAAoAAAALAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAmEz+ciLZWEXIlsEWtrY1Ii1fzoax2dGCE/Fu0GhOyqbw90Dvs+k3aVOmQLTByU5JWjEvd6Op+oV3i+7KPPtxAw==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABUAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACj6auAAAAAAoAAAALAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABUAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACj6auAAAAAAoAAAALAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAABcAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R08EAAAAAgAAABcAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{mEz+ciLZWEXIlsEWtrY1Ii1fzoax2dGCE/Fu0GhOyqbw90Dvs+k3aVOmQLTByU5JWjEvd6Op+oV3i+7KPPtxAw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('bc2a16ca82b7d0bd903c26482736cceb9f4efa077071e72849654b3aced94136', 5, 22, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934616, 100, 1, '2017-10-25 19:04:12.960853', '2017-10-25 19:04:12.960853', 21474926592, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAYAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAdzWUAAAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAJnrtXGyjkqpAJAFfDY0JyJjXfS9/xXLLHdu3XT20IxpJCBQ2K0fhYnVis0tnbacC9/vTcmLnWxKg1oGCR9usBA==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABYAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAdzWUAAAAAAUAAAABAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABYAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAdzWUAAAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAABgAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R06gAAAAAgAAABgAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{JnrtXGyjkqpAJAFfDY0JyJjXfS9/xXLLHdu3XT20IxpJCBQ2K0fhYnVis0tnbacC9/vTcmLnWxKg1oGCR9usBA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('a0bdbdb1aa35b7f2aec201b618fca59405e4c375f8f76a24ef25e885a96fd7ed', 5, 23, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934617, 100, 1, '2017-10-25 19:04:12.96322', '2017-10-25 19:04:12.96322', 21474930688, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAZAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAXv6x8AAAAAAUAAAAzAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAGqxC/cid99JKEBv6Y7vmkU1u+UQ+SwDxHIjLeMmmrt5Uv2TCs6Ct4tokvwjlGsbBo1scU8nQmwuXui8bfNGTAA==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABcAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANXU5wVAAAAAUAAAAzAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABcAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANXU5wVAAAAAUAAAAzAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAABkAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R048AAAAAgAAABkAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{GqxC/cid99JKEBv6Y7vmkU1u+UQ+SwDxHIjLeMmmrt5Uv2TCs6Ct4tokvwjlGsbBo1scU8nQmwuXui8bfNGTAA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('9b90554626c9bfa396b4f61cc910d383a38f1223c8f5478edde6fe60a7f2f406', 5, 24, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934618, 100, 1, '2017-10-25 19:04:12.965498', '2017-10-25 19:04:12.965499', 21474934784, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAaAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAVa6CYAAAAAAUAAAAuAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABATU8XW0HLVKABibMcV0H3VxUkGh/dQhUcM0eFCkFzVgeXmY9g1V/MnP9DsNs1aipuJVlAGS0B88gxbmoQ5h6rDA==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABgAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANV1iPVAAAAAUAAAAuAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABgAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANV1iPVAAAAAUAAAAuAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAABoAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R03YAAAAAgAAABoAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{TU8XW0HLVKABibMcV0H3VxUkGh/dQhUcM0eFCkFzVgeXmY9g1V/MnP9DsNs1aipuJVlAGS0B88gxbmoQ5h6rDA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('0e17e87fcda53937d77cbf1e2658fcdf41eb0689e9649545bb14a5960832e5b8', 5, 25, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934619, 100, 1, '2017-10-25 19:04:12.968885', '2017-10-25 19:04:12.968885', 21474938880, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAbAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAATF5S0AAAAAAUAAAApAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABALhl41aevL0eWZT/dx9jwFRVb7nDeDsjPeuPKK5QCBgWZjBWFwwRXz+gTiHccCvG5W4d93ucAU4xOkbCj1VH9CQ==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABkAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANUWKuVAAAAAUAAAApAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABkAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANUWKuVAAAAAUAAAApAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAABsAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R010AAAAAgAAABsAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{Lhl41aevL0eWZT/dx9jwFRVb7nDeDsjPeuPKK5QCBgWZjBWFwwRXz+gTiHccCvG5W4d93ucAU4xOkbCj1VH9CQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('f277e4abf7d0d326fa63ee62415f7a117e43453072677d1f6e9618c8d2bb8524', 5, 26, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934620, 100, 1, '2017-10-25 19:04:12.971476', '2017-10-25 19:04:12.971476', 21474942976, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAcAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAQw4jQAAAAAAUAAAAkAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAxjfuAsXsrTxv+5NVYnsb0soqC6ZoluT/Xobjrt45eAeNZMwp9/RV2hLXySkVOVk2O814/dgyeap7M+LgWibPBg==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABoAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANS2zNVAAAAAUAAAAkAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABoAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANS2zNVAAAAAUAAAAkAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAABwAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R00QAAAAAgAAABwAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{xjfuAsXsrTxv+5NVYnsb0soqC6ZoluT/Xobjrt45eAeNZMwp9/RV2hLXySkVOVk2O814/dgyeap7M+LgWibPBg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('5e3622bf6dab1276155014b8387f261a0bbfbef247caa05e9c4be8c890dad958', 5, 27, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934621, 100, 1, '2017-10-25 19:04:12.973577', '2017-10-25 19:04:12.973577', 21474947072, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAdAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAOb3zsAAAAAAUAAAAfAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAcFijipV/lZRIDYicNpHFwnaL4J0Fmwkcr0G9VxH4lZSYgLjgQnvgniCBQrvu2eqyqOFHC8H04T7D9jXseYr4Cg==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABsAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANRXbsVAAAAAUAAAAfAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABsAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAANRXbsVAAAAAUAAAAfAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAB0AAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R0ysAAAAAgAAAB0AAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{cFijipV/lZRIDYicNpHFwnaL4J0Fmwkcr0G9VxH4lZSYgLjgQnvgniCBQrvu2eqyqOFHC8H04T7D9jXseYr4Cg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('b00c83ae8f3d0cd4f1760517182abdf0440eca6efcd2b0fa893aac85b35e42cb', 5, 28, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934622, 100, 1, '2017-10-25 19:04:12.976688', '2017-10-25 19:04:12.976688', 21474951168, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAeAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAMG3EIAAAAAAUAAAAaAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAbHyKtzQE0yWfACwWf+1pYV3POGcAKxlNttLK4B5LmX34VwUIGjWHqKIiw/aDtsaIqBJI62bfkYn6KiMWiRnlAg==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABwAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAMG3EIAAAAAAUAAAAaAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAABwAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAMG3EIAAAAAAUAAAAaAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAB4AAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R0xIAAAAAgAAAB4AAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{bHyKtzQE0yWfACwWf+1pYV3POGcAKxlNttLK4B5LmX34VwUIGjWHqKIiw/aDtsaIqBJI62bfkYn6KiMWiRnlAg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('3f731b66c1a3d2c4cf9d15bb17e910beaa6f6fa6a77cccfd62f5eabcd3ecfcc5', 5, 29, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934623, 100, 1, '2017-10-25 19:04:12.978944', '2017-10-25 19:04:12.978944', 21474955264, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAfAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAJx2UkAAAAAAUAAAAVAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAkkZq5sVwc5pr6NYfqlSYkQevr273ibhO9EwVykO2mQ4+ka+BrQj++wfcsuJFbGaeE6NtzQxTf7XQaGZpwjk5Cw==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAB0AAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAJx2UkAAAAAAUAAAAVAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAB0AAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAJx2UkAAAAAAUAAAAVAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAAB8AAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R0vkAAAAAgAAAB8AAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{kkZq5sVwc5pr6NYfqlSYkQevr273ibhO9EwVykO2mQ4+ka+BrQj++wfcsuJFbGaeE6NtzQxTf7XQaGZpwjk5Cw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('492c8c2808bf649ba321f0f75dda11581107bff229ef457340aab8494f5ad412', 5, 30, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934624, 100, 1, '2017-10-25 19:04:12.981365', '2017-10-25 19:04:12.981365', 21474959360, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAgAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAHc1lAAAAAAAUAAAAQAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAGoxQs3i+aE6OAegBkTmA0dqEadD541CFUYMVQ1aCii5ioLMaP6i5oSZ5+4c0VfY2MAPmpxdNCOY3vwH4XD8yCw==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAB4AAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAHc1lAAAAAAAUAAAAQAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAB4AAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAHc1lAAAAAAAUAAAAQAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAACAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R0uAAAAAAgAAACAAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{GoxQs3i+aE6OAegBkTmA0dqEadD541CFUYMVQ1aCii5ioLMaP6i5oSZ5+4c0VfY2MAPmpxdNCOY3vwH4XD8yCw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('c03dfbea35606bd565f3609a306aa27a82aa14b3fd142f1a13b79c1871f54a3b', 5, 31, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934625, 100, 1, '2017-10-25 19:04:12.984256', '2017-10-25 19:04:12.984256', 21474963456, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAhAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAFH01cAAAAAAUAAAALAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAlTGl5Ll7WR6ooHo4TPTHiPsPhYQEcPuFd4lby43niifsCCnLkZfzoZYxODmAHHv/RXkskBH7eRkxCZYBRXRQBA==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAB8AAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAFH01cAAAAAAUAAAALAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAB8AAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAFH01cAAAAAAUAAAALAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAACEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R0scAAAAAgAAACEAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{lTGl5Ll7WR6ooHo4TPTHiPsPhYQEcPuFd4lby43niifsCCnLkZfzoZYxODmAHHv/RXkskBH7eRkxCZYBRXRQBA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('42e47f8fdcb738c844e1556c9fad18eb8887d78681ef5e9616898eb6e1c5e8eb', 5, 32, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934626, 100, 1, '2017-10-25 19:04:12.986675', '2017-10-25 19:04:12.986675', 21474967552, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAiAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACy0F4AAAAAAUAAAAGAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABAaSoEc/Kxao3Z6gUsTh1QfLjlT486TQKgtu9NhqT8EzSQ2jFCWgP+odJUnTIPRU74DOgqwEgcHBGpovaass24Dw==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAACAAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACy0F4AAAAAAUAAAAGAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAACAAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAACy0F4AAAAAAUAAAAGAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAACIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R0q4AAAAAgAAACIAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{aSoEc/Kxao3Z6gUsTh1QfLjlT486TQKgtu9NhqT8EzSQ2jFCWgP+odJUnTIPRU74DOgqwEgcHBGpovaass24Dw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('ee96865dfca78c43c4074317f3dbcd7ca978643b973bc9a5dc4f2588f981c6d7', 5, 33, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934627, 100, 1, '2017-10-25 19:04:12.988959', '2017-10-25 19:04:12.988959', 21474971648, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAjAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAstBeAAAAAAoAAAADAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABA2FwoenXJVOTi9oyWHyNL+0wLRdikDwB4qdNJmj+OQi8a0jRgjQG/1/EsSq885q7mUvX57XCjUGH+rf70B+CFAg==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAACEAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAstBeAAAAAAoAAAADAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAACEAAAAAAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAstBeAAAAAAoAAAADAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAADfhHSlQAAAACAAAAIwAAACMAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAA34R0pUAAAAAgAAACMAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{2FwoenXJVOTi9oyWHyNL+0wLRdikDwB4qdNJmj+OQi8a0jRgjQG/1/EsSq885q7mUvX57XCjUGH+rf70B+CFAg==}', 'none', NULL, NULL); + + +-- +-- Name: gorp_migrations gorp_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY gorp_migrations + ADD CONSTRAINT gorp_migrations_pkey PRIMARY KEY (id); + + +-- +-- Name: history_assets history_assets_asset_code_asset_type_asset_issuer_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_asset_code_asset_type_asset_issuer_key UNIQUE (asset_code, asset_type, asset_issuer); + + +-- +-- Name: history_assets history_assets_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_pkey PRIMARY KEY (id); + + +-- +-- Name: history_operation_participants history_operation_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants + ADD CONSTRAINT history_operation_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: history_transaction_participants history_transaction_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants + ADD CONSTRAINT history_transaction_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: asset_by_issuer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX asset_by_issuer ON history_assets USING btree (asset_issuer); + + +-- +-- Name: by_account; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_account ON history_transactions USING btree (account, account_sequence); + + +-- +-- Name: by_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_hash ON history_transactions USING btree (transaction_hash); + + +-- +-- Name: by_ledger; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_ledger ON history_transactions USING btree (ledger_sequence, application_order); + + +-- +-- Name: hist_e_by_order; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_by_order ON history_effects USING btree (history_operation_id, "order"); + + +-- +-- Name: hist_e_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_id ON history_effects USING btree (history_account_id, history_operation_id, "order"); + + +-- +-- Name: hist_op_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_op_p_id ON history_operation_participants USING btree (history_account_id, history_operation_id); + + +-- +-- Name: hist_tx_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_tx_p_id ON history_transaction_participants USING btree (history_account_id, history_transaction_id); + + +-- +-- Name: hop_by_hoid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX hop_by_hoid ON history_operation_participants USING btree (history_operation_id); + + +-- +-- Name: hs_ledger_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_ledger_by_id ON history_ledgers USING btree (id); + + +-- +-- Name: hs_transaction_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_transaction_by_id ON history_transactions USING btree (id); + + +-- +-- Name: htp_by_htid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htp_by_htid ON history_transaction_participants USING btree (history_transaction_id); + + +-- +-- Name: htrd_by_offer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_by_offer ON history_trades USING btree (offer_id); + + +-- +-- Name: htrd_counter_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_counter_lookup ON history_trades USING btree (counter_asset_id); + + +-- +-- Name: htrd_pair_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_pair_time_lookup ON history_trades USING btree (base_asset_id, counter_asset_id, ledger_closed_at); + + +-- +-- Name: htrd_pid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX htrd_pid ON history_trades USING btree (history_operation_id, "order"); + + +-- +-- Name: htrd_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_time_lookup ON history_trades USING btree (ledger_closed_at); + + +-- +-- Name: index_history_accounts_on_address; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_address ON history_accounts USING btree (address); + + +-- +-- Name: index_history_accounts_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_id ON history_accounts USING btree (id); + + +-- +-- Name: index_history_effects_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_effects_on_type ON history_effects USING btree (type); + + +-- +-- Name: index_history_ledgers_on_closed_at; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_closed_at ON history_ledgers USING btree (closed_at); + + +-- +-- Name: index_history_ledgers_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_id ON history_ledgers USING btree (id); + + +-- +-- Name: index_history_ledgers_on_importer_version; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_importer_version ON history_ledgers USING btree (importer_version); + + +-- +-- Name: index_history_ledgers_on_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_ledger_hash ON history_ledgers USING btree (ledger_hash); + + +-- +-- Name: index_history_ledgers_on_previous_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_previous_ledger_hash ON history_ledgers USING btree (previous_ledger_hash); + + +-- +-- Name: index_history_ledgers_on_sequence; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_sequence ON history_ledgers USING btree (sequence); + + +-- +-- Name: index_history_operations_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_operations_on_id ON history_operations USING btree (id); + + +-- +-- Name: index_history_operations_on_transaction_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_transaction_id ON history_operations USING btree (transaction_id); + + +-- +-- Name: index_history_operations_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_type ON history_operations USING btree (type); + + +-- +-- Name: index_history_transactions_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_transactions_on_id ON history_transactions USING btree (id); + + +-- +-- Name: trade_effects_by_order_book; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX trade_effects_by_order_book ON history_effects USING btree (((details ->> 'sold_asset_type'::text)), ((details ->> 'sold_asset_code'::text)), ((details ->> 'sold_asset_issuer'::text)), ((details ->> 'bought_asset_type'::text)), ((details ->> 'bought_asset_code'::text)), ((details ->> 'bought_asset_issuer'::text))) WHERE (type = 33); + + +-- +-- Name: history_trades history_trades_base_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_account_id_fkey FOREIGN KEY (base_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_base_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_asset_id_fkey FOREIGN KEY (base_asset_id) REFERENCES history_assets(id); + + +-- +-- Name: history_trades history_trades_counter_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_account_id_fkey FOREIGN KEY (counter_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_counter_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_asset_id_fkey FOREIGN KEY (counter_asset_id) REFERENCES history_assets(id); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/order_books_310.rb b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/order_books_310.rb new file mode 100644 index 0000000..6973772 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/order_books_310.rb @@ -0,0 +1,64 @@ +# This scenario attempts to emulate the scenario that gave rise to https://github.com/stellar/horizon/issues/310 + +run_recipe File.dirname(__FILE__) + "/_common_accounts.rb" + +use_manual_close + +create_account :usd_gateway +create_account :scott, :master, "6000.0" +create_account :andrew, :master, "6000.0" + +close_ledger + +trust :scott, :usd_gateway, "USD" +trust :andrew, :usd_gateway, "USD" + +trust :scott, :usd_gateway, "BTC" +trust :andrew, :usd_gateway, "BTC" + +close_ledger + +payment :usd_gateway, :scott, ["USD", :usd_gateway, "5000.0"] +payment :usd_gateway, :andrew, ["USD", :usd_gateway, "5000.0"] + +payment :usd_gateway, :scott, ["BTC", :usd_gateway, "5000.0"] +payment :usd_gateway, :andrew, ["BTC", :usd_gateway, "5000.0"] + +close_ledger + + +# polate an order book with more than 20 price levels, inserted into the db out +# of order. +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "10.0" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "9.0" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "8.0" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "7.0" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "6.0" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "5.0" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "4.0" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "3.0" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "2.0" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "1.0" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "0.1" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "10.1" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "9.1" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "8.1" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "7.1" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "6.1" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "5.1" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "4.1" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "3.1" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "2.1" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "1.1" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "0.2" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "10.2" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "9.2" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "8.2" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "7.2" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "6.2" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "5.2" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "4.2" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "3.2" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "2.2" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "1.2" +offer :scott, {buy:["USD", :usd_gateway], with: :native}, "1000", "0.3" \ No newline at end of file diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/pathed_payment-core.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/pathed_payment-core.sql new file mode 100644 index 0000000..ff3d858 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/pathed_payment-core.sql @@ -0,0 +1,728 @@ +running recipe +recipe finished, closing ledger +ledger closed +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; +SET row_security = off; + +SET search_path = public, pg_catalog; + +DROP INDEX IF EXISTS public.signersaccount; +DROP INDEX IF EXISTS public.sellingissuerindex; +DROP INDEX IF EXISTS public.scpquorumsbyseq; +DROP INDEX IF EXISTS public.scpenvsbyseq; +DROP INDEX IF EXISTS public.priceindex; +DROP INDEX IF EXISTS public.ledgersbyseq; +DROP INDEX IF EXISTS public.histfeebyseq; +DROP INDEX IF EXISTS public.histbyseq; +DROP INDEX IF EXISTS public.buyingissuerindex; +DROP INDEX IF EXISTS public.accountbalances; +ALTER TABLE IF EXISTS ONLY public.txhistory DROP CONSTRAINT IF EXISTS txhistory_pkey; +ALTER TABLE IF EXISTS ONLY public.txfeehistory DROP CONSTRAINT IF EXISTS txfeehistory_pkey; +ALTER TABLE IF EXISTS ONLY public.trustlines DROP CONSTRAINT IF EXISTS trustlines_pkey; +ALTER TABLE IF EXISTS ONLY public.storestate DROP CONSTRAINT IF EXISTS storestate_pkey; +ALTER TABLE IF EXISTS ONLY public.signers DROP CONSTRAINT IF EXISTS signers_pkey; +ALTER TABLE IF EXISTS ONLY public.scpquorums DROP CONSTRAINT IF EXISTS scpquorums_pkey; +ALTER TABLE IF EXISTS ONLY public.pubsub DROP CONSTRAINT IF EXISTS pubsub_pkey; +ALTER TABLE IF EXISTS ONLY public.publishqueue DROP CONSTRAINT IF EXISTS publishqueue_pkey; +ALTER TABLE IF EXISTS ONLY public.peers DROP CONSTRAINT IF EXISTS peers_pkey; +ALTER TABLE IF EXISTS ONLY public.offers DROP CONSTRAINT IF EXISTS offers_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_ledgerseq_key; +ALTER TABLE IF EXISTS ONLY public.ban DROP CONSTRAINT IF EXISTS ban_pkey; +ALTER TABLE IF EXISTS ONLY public.accounts DROP CONSTRAINT IF EXISTS accounts_pkey; +ALTER TABLE IF EXISTS ONLY public.accountdata DROP CONSTRAINT IF EXISTS accountdata_pkey; +DROP TABLE IF EXISTS public.txhistory; +DROP TABLE IF EXISTS public.txfeehistory; +DROP TABLE IF EXISTS public.trustlines; +DROP TABLE IF EXISTS public.storestate; +DROP TABLE IF EXISTS public.signers; +DROP TABLE IF EXISTS public.scpquorums; +DROP TABLE IF EXISTS public.scphistory; +DROP TABLE IF EXISTS public.pubsub; +DROP TABLE IF EXISTS public.publishqueue; +DROP TABLE IF EXISTS public.peers; +DROP TABLE IF EXISTS public.offers; +DROP TABLE IF EXISTS public.ledgerheaders; +DROP TABLE IF EXISTS public.ban; +DROP TABLE IF EXISTS public.accounts; +DROP TABLE IF EXISTS public.accountdata; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: accountdata; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accountdata ( + accountid character varying(56) NOT NULL, + dataname character varying(64) NOT NULL, + datavalue character varying(112) NOT NULL, + lastmodified integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accounts ( + accountid character varying(56) NOT NULL, + balance bigint NOT NULL, + seqnum bigint NOT NULL, + numsubentries integer NOT NULL, + inflationdest character varying(56), + homedomain character varying(32) NOT NULL, + thresholds text NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT accounts_balance_check CHECK ((balance >= 0)), + CONSTRAINT accounts_numsubentries_check CHECK ((numsubentries >= 0)) +); + + +-- +-- Name: ban; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ban ( + nodeid character(56) NOT NULL +); + + +-- +-- Name: ledgerheaders; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ledgerheaders ( + ledgerhash character(64) NOT NULL, + prevhash character(64) NOT NULL, + bucketlisthash character(64) NOT NULL, + ledgerseq integer, + closetime bigint NOT NULL, + data text NOT NULL, + CONSTRAINT ledgerheaders_closetime_check CHECK ((closetime >= 0)), + CONSTRAINT ledgerheaders_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: offers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE offers ( + sellerid character varying(56) NOT NULL, + offerid bigint NOT NULL, + sellingassettype integer NOT NULL, + sellingassetcode character varying(12), + sellingissuer character varying(56), + buyingassettype integer NOT NULL, + buyingassetcode character varying(12), + buyingissuer character varying(56), + amount bigint NOT NULL, + pricen integer NOT NULL, + priced integer NOT NULL, + price double precision NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT offers_amount_check CHECK ((amount >= 0)), + CONSTRAINT offers_offerid_check CHECK ((offerid >= 0)) +); + + +-- +-- Name: peers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE peers ( + ip character varying(15) NOT NULL, + port integer DEFAULT 0 NOT NULL, + nextattempt timestamp without time zone NOT NULL, + numfailures integer DEFAULT 0 NOT NULL, + CONSTRAINT peers_numfailures_check CHECK ((numfailures >= 0)), + CONSTRAINT peers_port_check CHECK (((port > 0) AND (port <= 65535))) +); + + +-- +-- Name: publishqueue; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE publishqueue ( + ledger integer NOT NULL, + state text +); + + +-- +-- Name: pubsub; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE pubsub ( + resid character(32) NOT NULL, + lastread integer +); + + +-- +-- Name: scphistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scphistory ( + nodeid character(56) NOT NULL, + ledgerseq integer NOT NULL, + envelope text NOT NULL, + CONSTRAINT scphistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: scpquorums; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scpquorums ( + qsethash character(64) NOT NULL, + lastledgerseq integer NOT NULL, + qset text NOT NULL, + CONSTRAINT scpquorums_lastledgerseq_check CHECK ((lastledgerseq >= 0)) +); + + +-- +-- Name: signers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE signers ( + accountid character varying(56) NOT NULL, + publickey character varying(56) NOT NULL, + weight integer NOT NULL +); + + +-- +-- Name: storestate; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE storestate ( + statename character(32) NOT NULL, + state text +); + + +-- +-- Name: trustlines; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE trustlines ( + accountid character varying(56) NOT NULL, + assettype integer NOT NULL, + issuer character varying(56) NOT NULL, + assetcode character varying(12) NOT NULL, + tlimit bigint NOT NULL, + balance bigint NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT trustlines_balance_check CHECK ((balance >= 0)), + CONSTRAINT trustlines_tlimit_check CHECK ((tlimit > 0)) +); + + +-- +-- Name: txfeehistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txfeehistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txchanges text NOT NULL, + CONSTRAINT txfeehistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: txhistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txhistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txbody text NOT NULL, + txresult text NOT NULL, + txmeta text NOT NULL, + CONSTRAINT txhistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Data for Name: accountdata; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO accounts VALUES ('GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 999999994999999500, 5, 0, NULL, '', 'AQAAAA==', 0, 2); +INSERT INTO accounts VALUES ('GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2', 999999900, 8589934593, 1, NULL, '', 'AQAAAA==', 0, 3); +INSERT INTO accounts VALUES ('GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 999999800, 8589934594, 0, NULL, '', 'AQAAAA==', 0, 4); +INSERT INTO accounts VALUES ('GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG', 999999800, 8589934594, 0, NULL, '', 'AQAAAA==', 0, 4); +INSERT INTO accounts VALUES ('GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 999999700, 8589934595, 3, NULL, '', 'AQAAAA==', 0, 5); +INSERT INTO accounts VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 999999800, 8589934594, 1, NULL, '', 'AQAAAA==', 0, 6); + + +-- +-- Data for Name: ban; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: ledgerheaders; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO ledgerheaders VALUES ('63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', '0000000000000000000000000000000000000000000000000000000000000000', '572a2e32ff248a07b0e70fd1f6d318c1facd20b6cc08c33d5775259868125a16', 1, 0, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXKi4y/ySKB7DnD9H20xjB+s0gtswIwz1XdSWYaBJaFgAAAAEN4Lazp2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAX14QAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('5d0727a7a3b7901064ceaef738745e873e2bf6aea03d2846aaa70d56cb31ea5a', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', '29da0928d9a60e8f21bd58d97a0801e8339d4ac4914af60d283ae2f792cf225e', 2, 1508958260, 'AAAACGPZj1Nu5o0bJ7W4nyOvUxG3Vpok+vFAOtC1K2M7B76ZhnfbEDpHPYd45nQcT7XkfIMwSX9gFD9+fWat716QIWcAAAAAWfDgNAAAAAIAAAAIAAAAAQAAAAgAAAAIAAAAAwAAJxAAAAAAQ9m8LSG8b5W0buxEtqstVQz7IV/HrDmGEtdA4mCEDXwp2gko2aYOjyG9WNl6CAHoM51KxJFK9g0oOuL3ks8iXgAAAAIN4Lazp2QAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('1e5c2c4027a8440bb8cd80d579f2c765f19455a0e85bcf57bbb77cc1fb700464', '5d0727a7a3b7901064ceaef738745e873e2bf6aea03d2846aaa70d56cb31ea5a', 'b71466e9ecc6b40c0a6795f28b3c9d5a51ea4be1487bd76435bed1a85027f798', 3, 1508958261, 'AAAACF0HJ6ejt5AQZM6u9zh0Xoc+K/auoD0oRqqnDVbLMepazKOMkRvoaDgzsHa2HmjaKZ44+65kj/bZzaRdQdbr3+IAAAAAWfDgNQAAAAAAAAAAxH0sg6vOAMny7YbV/FRscczh18GVQR9oJGYXQmDe6RO3FGbp7Ma0DApnlfKLPJ1aUepL4Uh712Q1vtGoUCf3mAAAAAMN4Lazp2QAAAAAAAAAAAOEAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('fe4ff5ab820104e5a60bcec238d7b10ac7a3e707306a64dded6587d2ef3079ad', '1e5c2c4027a8440bb8cd80d579f2c765f19455a0e85bcf57bbb77cc1fb700464', '29f11f2d7e9f05ec5b7880c707ba98bfd21f80213b408b2a2a782971b0c92663', 4, 1508958262, 'AAAACB5cLEAnqEQLuM2A1Xnyx2XxlFWg6FvPV7u3fMH7cARkBKNYaPKY4ix05PK8SL7VhoyLtTlTjzTZmjVVV50de0QAAAAAWfDgNgAAAAAAAAAAZelIPS3sQhACuKIks346158R3J91krq+J8/emGkxvSop8R8tfp8F7Ft4gMcHupi/0h+AITtAiyoqeClxsMkmYwAAAAQN4Lazp2QAAAAAAAAAAAUUAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('47dbb5c3ec83f56cf268ec265b2efdea92f82ea19925c2d7f0b317790c391056', 'fe4ff5ab820104e5a60bcec238d7b10ac7a3e707306a64dded6587d2ef3079ad', '22cd6cf5481e62f175fe32d77ea78c5b21bd003f9b4f9d54c6963d49a4332fe6', 5, 1508958263, 'AAAACP5P9auCAQTlpgvOwjjXsQrHo+cHMGpk3e1lh9LvMHmt32W1SUx7N8MGn97R7O1DbhBbDR2Xg27JoJOpG7v8zMEAAAAAWfDgNwAAAAAAAAAAMipVgDbLOBwRolHBsTSsmxFNzeTX3AdqZSXt3LGMFmgizWz1SB5i8XX+Mtd+p4xbIb0AP5tPnVTGlj1JpDMv5gAAAAUN4Lazp2QAAAAAAAAAAAV4AAAAAAAAAAAAAAABAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('71734c04e6d1db1eaca0a4589779c1bdf0c630fc4393b585ac9e89114d0e8a3e', '47dbb5c3ec83f56cf268ec265b2efdea92f82ea19925c2d7f0b317790c391056', '8e23e486ad7af468e40ba62570036ef2a01c751175425b1bcc7867a0f02723da', 6, 1508958264, 'AAAACEfbtcPsg/Vs8mjsJlsu/eqS+C6hmSXC1/CzF3kMORBWx1bpPZXJjlxg4gz0hHjYHz10u1yIwS4xFWCU3chn2uIAAAAAWfDgOAAAAAAAAAAAdopGqZ/Fgz8xg91fCwTsvxIms9ukW73CHeCtBuNmNWKOI+SGrXr0aOQLpiVwA27yoBx1EXVCWxvMeGeg8Ccj2gAAAAYN4Lazp2QAAAAAAAAAAAXcAAAAAAAAAAAAAAABAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); + + +-- +-- Data for Name: offers; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO offers VALUES ('GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 1, 1, 'EUR', 'GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG', 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 100000000, 1, 1, 1, 0, 6); + + +-- +-- Data for Name: peers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: publishqueue; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: pubsub; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: scphistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scphistory VALUES ('GCFY6HADRHWJS45CBKSAICTTIFEZHPYHJ5TPWPWYQLIV3Y7MQPWKQED6', 2, 'AAAAAIuPHAOJ7JlzogqkBApzQUmTvwdPZvs+2ILRXePsg+yoAAAAAAAAAAIAAAACAAAAAQAAAEiGd9sQOkc9h3jmdBxPteR8gzBJf2AUP359Zq3vXpAhZwAAAABZ8OA0AAAAAgAAAAgAAAABAAAACAAAAAgAAAADAAAnEAAAAAAAAAABT2W4W0Q9ISreJDgBFkKSVq4KAXDF5YP273oHLygTAzYAAABAENzxn8q/rKKgDzxDNpeY7iQ1LTnZr9n6RHbsr6CjOr9zqLs89l7V1fFHLwAgIzw0Mtf+fmYIFS+/VyZzfwVsBQ=='); +INSERT INTO scphistory VALUES ('GCFY6HADRHWJS45CBKSAICTTIFEZHPYHJ5TPWPWYQLIV3Y7MQPWKQED6', 3, 'AAAAAIuPHAOJ7JlzogqkBApzQUmTvwdPZvs+2ILRXePsg+yoAAAAAAAAAAMAAAACAAAAAQAAADDMo4yRG+hoODOwdrYeaNopnjj7rmSP9tnNpF1B1uvf4gAAAABZ8OA1AAAAAAAAAAAAAAABT2W4W0Q9ISreJDgBFkKSVq4KAXDF5YP273oHLygTAzYAAABA4bVO5GCWoEY3i/IUwaHknMXxfVnStGjGipRImWnBKodZT28DH35xKIZRazHIYiZ6gHnypeFJv6ItAVspY9iyDQ=='); +INSERT INTO scphistory VALUES ('GCFY6HADRHWJS45CBKSAICTTIFEZHPYHJ5TPWPWYQLIV3Y7MQPWKQED6', 4, 'AAAAAIuPHAOJ7JlzogqkBApzQUmTvwdPZvs+2ILRXePsg+yoAAAAAAAAAAQAAAACAAAAAQAAADAEo1ho8pjiLHTk8rxIvtWGjIu1OVOPNNmaNVVXnR17RAAAAABZ8OA2AAAAAAAAAAAAAAABT2W4W0Q9ISreJDgBFkKSVq4KAXDF5YP273oHLygTAzYAAABArhbP/iywh/ttg8Tr+MxoZijJdKL0OwY5diI4DwJwtJ6wq1IXR/araqXNT7KEFb6jRA93l56ry7Eo4b9bC3AFDw=='); +INSERT INTO scphistory VALUES ('GCFY6HADRHWJS45CBKSAICTTIFEZHPYHJ5TPWPWYQLIV3Y7MQPWKQED6', 5, 'AAAAAIuPHAOJ7JlzogqkBApzQUmTvwdPZvs+2ILRXePsg+yoAAAAAAAAAAUAAAACAAAAAQAAADDfZbVJTHs3wwaf3tHs7UNuEFsNHZeDbsmgk6kbu/zMwQAAAABZ8OA3AAAAAAAAAAAAAAABT2W4W0Q9ISreJDgBFkKSVq4KAXDF5YP273oHLygTAzYAAABAID1677GQm0T2gokwy/OZxcxtgMNO9in78zG0Eprm3Z2fYPKln1nCVCCrHi2t76wzTaQBaogXxTRvpFS3afioAA=='); +INSERT INTO scphistory VALUES ('GCFY6HADRHWJS45CBKSAICTTIFEZHPYHJ5TPWPWYQLIV3Y7MQPWKQED6', 6, 'AAAAAIuPHAOJ7JlzogqkBApzQUmTvwdPZvs+2ILRXePsg+yoAAAAAAAAAAYAAAACAAAAAQAAADDHVuk9lcmOXGDiDPSEeNgfPXS7XIjBLjEVYJTdyGfa4gAAAABZ8OA4AAAAAAAAAAAAAAABT2W4W0Q9ISreJDgBFkKSVq4KAXDF5YP273oHLygTAzYAAABAJCf5+3pk4gOJwWlIjYLyFrSreeMYCFQOgxzOkizMFZEM55qp0Elq88NLod88vrduFctB9k7UDVnjm5MjWqgFAQ=='); + + +-- +-- Data for Name: scpquorums; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scpquorums VALUES ('4f65b85b443d212ade24380116429256ae0a0170c5e583f6ef7a072f28130336', 6, 'AAAAAQAAAAEAAAAAi48cA4nsmXOiCqQECnNBSZO/B09m+z7YgtFd4+yD7KgAAAAA'); + + +-- +-- Data for Name: signers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: storestate; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO storestate VALUES ('databaseschema ', '5'); +INSERT INTO storestate VALUES ('forcescponnextlaunch ', 'false'); +INSERT INTO storestate VALUES ('lastclosedledger ', '71734c04e6d1db1eaca0a4589779c1bdf0c630fc4393b585ac9e89114d0e8a3e'); +INSERT INTO storestate VALUES ('historyarchivestate ', '{ + "version": 1, + "server": "v0.6.3-66-gd66575cf", + "currentLedger": 6, + "currentBuckets": [ + { + "curr": "79391bf33fd5a341423586995f9a6dde843260f83f346968e9cdb9977fde02f0", + "next": { + "state": 0 + }, + "snap": "ec19f2b1d645e88d0ba56af0d6b0f3f20ff06d14e70a910b0e6036e2bf86a884" + }, + { + "curr": "73fc208cc0751e60e9ccc917a94a05106cf329863e0a3a0b13f88f8f8d53ad30", + "next": { + "state": 1, + "output": "ec19f2b1d645e88d0ba56af0d6b0f3f20ff06d14e70a910b0e6036e2bf86a884" + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + } + ] +}'); +INSERT INTO storestate VALUES ('lastscpdata ', 'AAAAAgAAAACLjxwDieyZc6IKpAQKc0FJk78HT2b7PtiC0V3j7IPsqAAAAAAAAAAGAAAAA09luFtEPSEq3iQ4ARZCklauCgFwxeWD9u96By8oEwM2AAAAAQAAADDHVuk9lcmOXGDiDPSEeNgfPXS7XIjBLjEVYJTdyGfa4gAAAABZ8OA4AAAAAAAAAAAAAAABAAAAMMdW6T2VyY5cYOIM9IR42B89dLtciMEuMRVglN3IZ9riAAAAAFnw4DgAAAAAAAAAAAAAAEDvYbqjQt8E6dw9r9RzMOu1iwIWo3Dk2SselOqDYBz7diar7Is0Vy4qq9tfiUuBSUEH4kTZpKIlc5u39p0ODoUIAAAAAIuPHAOJ7JlzogqkBApzQUmTvwdPZvs+2ILRXePsg+yoAAAAAAAAAAYAAAACAAAAAQAAADDHVuk9lcmOXGDiDPSEeNgfPXS7XIjBLjEVYJTdyGfa4gAAAABZ8OA4AAAAAAAAAAAAAAABT2W4W0Q9ISreJDgBFkKSVq4KAXDF5YP273oHLygTAzYAAABAJCf5+3pk4gOJwWlIjYLyFrSreeMYCFQOgxzOkizMFZEM55qp0Elq88NLod88vrduFctB9k7UDVnjm5MjWqgFAQAAAAFH27XD7IP1bPJo7CZbLv3qkvguoZklwtfwsxd5DDkQVgAAAAEAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAABkAAAAAgAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAAX14QAAAAAAO2C/AO45YBD3tHVFO1R3A0MekP8JR6nN1A9eWidyItUAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAAF9eEAAAAAAAAAAAAAAAABruS+TAAAAEAPj1pFS7Ndd40e7UV8hgFumUGg/5vUHi4wa3ZQZm3qM8q/BU5GYzN9cNlocG8iKuwjx41/70XUQjQWH0z/aOYKAAAAAQAAAAEAAAABAAAAAIuPHAOJ7JlzogqkBApzQUmTvwdPZvs+2ILRXePsg+yoAAAAAA=='); + + +-- +-- Data for Name: trustlines; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO trustlines VALUES ('GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2', 1, 'GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG', 'EUR', 9223372036854775807, 1100000000, 1, 6); +INSERT INTO trustlines VALUES ('GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 1, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 'USD', 9223372036854775807, 300000000, 1, 6); +INSERT INTO trustlines VALUES ('GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 1, 'GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG', 'EUR', 9223372036854775807, 100000000, 1, 6); +INSERT INTO trustlines VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 1, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 'USD', 9223372036854775807, 900000000, 1, 6); + + +-- +-- Data for Name: txfeehistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txfeehistory VALUES ('666656a6eade2082c5780571267d9e4453eee5781ca9a58aa319eb0fe83455fd', 2, 1, 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('b1f828384c56e4b024f4275f246580ababff1ae3b9ba61b03897357e57eebc20', 2, 2, 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/84AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('2b2e82dbabb024b27a0c3140ca71d8ac9bc71831f9f5a3bd69eca3d88fb0ec5c', 2, 3, 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/7UAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('e17bae552da0105ad32f0b9aadfd0f623ef37eb486b10b044c19238360e455d7', 2, 4, 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/5wAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('cfd8816ed587c5ed88dea0eb00818caf38c0750e7740e05de3c27176e9aee8ee', 2, 5, 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/4MAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('b5cadce05fc0ad5d6fe009b8b0debc0d3dfd32ea42b8eba3e9ea68c2746e410f', 3, 1, 'AAAAAgAAAAMAAAACAAAAAAAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('811192c38643df73c015a5a1d77b802dff05d4f50fc6d10816aa75c0a6109f9a', 3, 2, 'AAAAAgAAAAMAAAACAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('bd486dbdd02d460817671c4a5a7e9d6e865ca29cb41e62d7aaf70a2fee5b36de', 3, 3, 'AAAAAgAAAAMAAAACAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('32e4ba1f218b6aa2420b497456a1b09090e3837e66b3495030d4edd60d0f0570', 3, 4, 'AAAAAQAAAAEAAAADAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAAA7msk4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('09c0147a62c828321ee899d0cccd92c81525eea71250720260321b3a24995e8b', 4, 1, 'AAAAAgAAAAMAAAACAAAAAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('7736f0b869de0f74a5ed7f8d6529949238eb0f0421f3fc2bbc438084f21c8055', 4, 2, 'AAAAAgAAAAMAAAACAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('f74cd54800d537c06dff35cc4783be881c2d670c1151a56ca7f951758dc7415d', 4, 3, 'AAAAAQAAAAEAAAAEAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAA7msk4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('c93f80667f37df70a29ec0de96ff3381644ac828a4cea1cb6ceb1bcec6fff058', 4, 4, 'AAAAAQAAAAEAAAAEAAAAAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAA7msk4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('b52f16ffb98c047e33b9c2ec30880330cde71f85b3443dae2c5cb86c7d4d8452', 5, 1, 'AAAAAgAAAAMAAAADAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAAA7msk4AAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAAA7msjUAAAAAgAAAAMAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('1d2a4be72470658f68db50eef29ea0af3f985ce18b5c218f03461d40c47dc292', 6, 1, 'AAAAAgAAAAMAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msmcAAAAAgAAAAEAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msk4AAAAAgAAAAIAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); + + +-- +-- Data for Name: txhistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txhistory VALUES ('666656a6eade2082c5780571267d9e4453eee5781ca9a58aa319eb0fe83455fd', 2, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAAAAAAAAAAABVvwF9wAAAEBdDXe23U4e9C2SxpBLZRx1rJzSFLJ0xDD0uKGpmqbflDT+XXIq6UiDBzmFxt+GO+XqFoQPdrXT7p1oLZIHqTMP', 'ZmZWpureIILFeAVxJn2eRFPu5XgcqaWKoxnrD+g0Vf0AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2s2vJNAwAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('b1f828384c56e4b024f4275f246580ababff1ae3b9ba61b03897357e57eebc20', 2, 2, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAO5rKAAAAAAAAAAABVvwF9wAAAEBdfnFSzZeh17zt82oMdqe4+/xns/kHBdGXf9BIBRYfVZ3DQT3awwZn5LqgIG9JqlvMmR1TKaxcoJQDuqGcCScM', 'sfgoOExW5LAk9CdfJGWAq6v/GuO5umGwOJc1flfuvCAAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAKD8GPxXf3CMjVKv3qhzs6au2HaMHH0s5B32RVUQithJAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2szAuagwAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('2b2e82dbabb024b27a0c3140ca71d8ac9bc71831f9f5a3bd69eca3d88fb0ec5c', 2, 3, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAAAO5rKAAAAAAAAAAABVvwF9wAAAEDJul1tLGLF4Vxwt0dDCVEf6tb5l4byMrGgCp+lVZMmxct54iNf2mxtjx6Md5ZJ4E4Dlcsf46EAhBGSUPsn8fYD', 'Ky6C26uwJLJ6DDFAynHYrJvHGDH59aO9aeyj2I+w7FwAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2svSToAwAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('e17bae552da0105ad32f0b9aadfd0f623ef37eb486b10b044c19238360e455d7', 2, 4, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAO2C/AO45YBD3tHVFO1R3A0MekP8JR6nN1A9eWidyItUAAAAAO5rKAAAAAAAAAAABVvwF9wAAAEDYYfyOrmPhfki6lrP+oCfunJmRu2mfxl40o5qWR7y1YmP8poG+6Xqg41jKCWNwVoP717CVEPe70I0teWvTejkJ', '4XuuVS2gEFrTLwuarf0PYj7zfrSGsQsETBkjg2DkVdcAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2srj41gwAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('cfd8816ed587c5ed88dea0eb00818caf38c0750e7740e05de3c27176e9aee8ee', 2, 5, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAO5rKAAAAAAAAAAABVvwF9wAAAEDNmQhdQeyMcWFWP8dVRkDtFS4tHICyKdaPkR6+/L7+tMzKWoUjbDAXscRYI+j6Fd/VFUaDzdYsWCAsH30WujIL', 'z9iBbtWHxe2I3qDrAIGMrzjAdQ53QOBd48Jxdumu6O4AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2sn1eDAwAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('b5cadce05fc0ad5d6fe009b8b0debc0d3dfd32ea42b8eba3e9ea68c2746e410f', 3, 1, 'AAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSX//////////AAAAAAAAAAEnciLVAAAAQANQSzvpEBCAXvs1PgmH/UFbfAYt3OAggYPVTd0pjVcJaV3lDE/jOZMnLFZMkFEhg4dluVQxeDZAwTKUPandswg=', 'tcrc4F/ArV1v4Am4sN68DT39MupCuOuj6epownRuQQ8AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAADuayZwAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('811192c38643df73c015a5a1d77b802dff05d4f50fc6d10816aa75c0a6109f9a', 3, 2, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAFvFIhaAAAAQPlg7GLhJg0x7jpAw1Ew6H2XF6yRImfJIwFfx09Nui5btOJAFewFANfOaAB8FQZl5p3A5g3k6DHDigfUNUD16gc=', 'gRGSw4ZD33PAFaWh13uALf8F1PUPxtEIFqp1wKYQn5oAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAADuayTgAAAACAAAAAgAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('bd486dbdd02d460817671c4a5a7e9d6e865ca29cb41e62d7aaf70a2fee5b36de', 3, 3, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAGu5L5MAAAAQB9kmKW2q3v7Qfy8PMekEb1TTI5ixqkI0BogXrOt7gO162Qbkh2dSTUfeDovc0PAafhDXxthVAlsLujlBmyjBAY=', 'vUhtvdAtRggXZxxKWn6dboZcopy0HmLXqvcKL+5bNt4AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAADuayZwAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('32e4ba1f218b6aa2420b497456a1b09090e3837e66b3495030d4edd60d0f0570', 3, 4, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSX//////////AAAAAAAAAAFvFIhaAAAAQMJmv+lhF5QZlgdIqBXDSdhEtgraTrRSwVr5d/BrNC28efHMoxYNa+2u9tSEdxU+hGX6JRW7wAF3bOpA8rxxxAE=', 'MuS6HyGLaqJCC0l0VqGwkJDjg35ms0lQMNTt1g0PBXAAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAADuayTgAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('09c0147a62c828321ee899d0cccd92c81525eea71250720260321b3a24995e8b', 4, 1, 'AAAAAKD8GPxXf3CMjVKv3qhzs6au2HaMHH0s5B32RVUQithJAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAAL68IAAAAAAAAAAAEQithJAAAAQCaHhpiVN9E437IXFcHpfVrox1SO/NJtCmB2hgagMQHDRDGQMHN3qjScTOqqeEsNEuvK+n7I4b+9Fr0R3twmcgs=', 'CcAUemLIKDIe6JnQzM2SyBUl7qcSUHICYDIbOiSZXosAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAC+vCAH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('7736f0b869de0f74a5ed7f8d6529949238eb0f0421f3fc2bbc438084f21c8055', 4, 2, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAA7msoAAAAAAAAAAAH5kC3vAAAAQDjBSAulKc9tRqGg+OkVbKPz4olRQYUevyCfv0LAlqbXG6yPbpR0BR6o7mrimRm8O4VoRBGIATQB42NOWcFzdQw=', 'dzbwuGneD3Sl7X+NZSmUkjjrDwQh8/wrvEOAhPIcgFUAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('f74cd54800d537c06dff35cc4783be881c2d670c1151a56ca7f951758dc7415d', 4, 3, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAL68IAAAAAAAAAAAH5kC3vAAAAQOIKSlDQm9Urq2ujnvxZjGq6zJQncPTp8vl4sCC4Ra4MUnaHYDakRXTFoQlIFAr5t0oJwdBSs6TJ8M5VeGgBbQg=', '90zVSADVN8Bt/zXMR4O+iBwtZwwRUaVsp/lRdY3HQV0AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAC+vCAH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('c93f80667f37df70a29ec0de96ff3381644ac828a4cea1cb6ceb1bcec6fff058', 4, 4, 'AAAAAKD8GPxXf3CMjVKv3qhzs6au2HaMHH0s5B32RVUQithJAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAO2C/AO45YBD3tHVFO1R3A0MekP8JR6nN1A9eWidyItUAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAA7msoAAAAAAAAAAAEQithJAAAAQG4l7kCAq5aqvS2d/HTtYc7LAa7pSUiiO4KyKJbqmsDgvckGC2dbhcro9tcvCZHfwqTV+ikv8Hm8Zfa63kYPkQY=', 'yT+AZn8333CinsDelv8zgWRKyCikzqHLbOsbzsb/8FgAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAO5rKAH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('b52f16ffb98c047e33b9c2ec30880330cde71f85b3443dae2c5cb86c7d4d8452', 5, 1, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAAvrwgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAFvFIhaAAAAQFlXwaom7ylSTdyaO7qNM74Y+JUkA2o0uc7W2FzBlkVe2scznMMa+R8hVTblO5lQ6+FcTM5jIrWQqxqFFZbOkAw=', 'tS8W/7mMBH4zucLsMIgDMM3nH4WzRD2uLFy4bH1NhFIAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAAAAAAAAQAAAAFFVVIAAAAAAKD8GPxXf3CMjVKv3qhzs6au2HaMHH0s5B32RVUQithJAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAC+vCAAAAAAEAAAABAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAAAAAAEAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAAvrwgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAAA7msjUAAAAAgAAAAMAAAADAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('1d2a4be72470658f68db50eef29ea0af3f985ce18b5c218f03461d40c47dc292', 6, 1, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAIAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAF9eEAAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAABfXhAAAAAAAAAAAAAAAAAa7kvkwAAABAD49aRUuzXXeNHu1FfIYBbplBoP+b1B4uMGt2UGZt6jPKvwVORmMzfXDZaHBvIirsI8eNf+9F1EI0Fh9M/2jmCg==', 'HSpL5yRwZY9o21Du8p6grz+YXOGLXCGPA0YdQMR9wpIAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAIAAAAAAAAAAQAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAAAAAAABAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAABfXhAAAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAAX14QAAAAAAO2C/AO45YBD3tHVFO1R3A0MekP8JR6nN1A9eWidyItUAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAAF9eEAAAAAAA==', 'AAAAAAAAAAEAAAAKAAAAAwAAAAQAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAO5rKAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAYAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAQZCrAH//////////AAAAAQAAAAAAAAAAAAAAAwAAAAQAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAC+vCAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAYAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAABfXhAH//////////AAAAAQAAAAAAAAAAAAAAAwAAAAQAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAC+vCAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAYAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAEeGjAH//////////AAAAAQAAAAAAAAAAAAAAAwAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAYAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAANaTpAH//////////AAAAAQAAAAAAAAAAAAAAAwAAAAUAAAACAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAAAAAAEAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAAvrwgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAgAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAAAAAAABAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAF9eEAAAAAAQAAAAEAAAAAAAAAAAAAAAA='); + + +-- +-- Name: accountdata accountdata_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accountdata + ADD CONSTRAINT accountdata_pkey PRIMARY KEY (accountid, dataname); + + +-- +-- Name: accounts accounts_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accounts + ADD CONSTRAINT accounts_pkey PRIMARY KEY (accountid); + + +-- +-- Name: ban ban_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ban + ADD CONSTRAINT ban_pkey PRIMARY KEY (nodeid); + + +-- +-- Name: ledgerheaders ledgerheaders_ledgerseq_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_ledgerseq_key UNIQUE (ledgerseq); + + +-- +-- Name: ledgerheaders ledgerheaders_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_pkey PRIMARY KEY (ledgerhash); + + +-- +-- Name: offers offers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY offers + ADD CONSTRAINT offers_pkey PRIMARY KEY (offerid); + + +-- +-- Name: peers peers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY peers + ADD CONSTRAINT peers_pkey PRIMARY KEY (ip, port); + + +-- +-- Name: publishqueue publishqueue_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY publishqueue + ADD CONSTRAINT publishqueue_pkey PRIMARY KEY (ledger); + + +-- +-- Name: pubsub pubsub_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY pubsub + ADD CONSTRAINT pubsub_pkey PRIMARY KEY (resid); + + +-- +-- Name: scpquorums scpquorums_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY scpquorums + ADD CONSTRAINT scpquorums_pkey PRIMARY KEY (qsethash); + + +-- +-- Name: signers signers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY signers + ADD CONSTRAINT signers_pkey PRIMARY KEY (accountid, publickey); + + +-- +-- Name: storestate storestate_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY storestate + ADD CONSTRAINT storestate_pkey PRIMARY KEY (statename); + + +-- +-- Name: trustlines trustlines_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY trustlines + ADD CONSTRAINT trustlines_pkey PRIMARY KEY (accountid, issuer, assetcode); + + +-- +-- Name: txfeehistory txfeehistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txfeehistory + ADD CONSTRAINT txfeehistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: txhistory txhistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txhistory + ADD CONSTRAINT txhistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: accountbalances; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX accountbalances ON accounts USING btree (balance) WHERE (balance >= 1000000000); + + +-- +-- Name: buyingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX buyingissuerindex ON offers USING btree (buyingissuer); + + +-- +-- Name: histbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histbyseq ON txhistory USING btree (ledgerseq); + + +-- +-- Name: histfeebyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histfeebyseq ON txfeehistory USING btree (ledgerseq); + + +-- +-- Name: ledgersbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX ledgersbyseq ON ledgerheaders USING btree (ledgerseq); + + +-- +-- Name: priceindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX priceindex ON offers USING btree (price); + + +-- +-- Name: scpenvsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpenvsbyseq ON scphistory USING btree (ledgerseq); + + +-- +-- Name: scpquorumsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpquorumsbyseq ON scpquorums USING btree (lastledgerseq); + + +-- +-- Name: sellingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX sellingissuerindex ON offers USING btree (sellingissuer); + + +-- +-- Name: signersaccount; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX signersaccount ON signers USING btree (accountid); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/pathed_payment-horizon.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/pathed_payment-horizon.sql new file mode 100644 index 0000000..2177137 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/pathed_payment-horizon.sql @@ -0,0 +1,864 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; + +SET search_path = public, pg_catalog; + +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_account_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_account_id_fkey; +DROP INDEX IF EXISTS public.trade_effects_by_order_book; +DROP INDEX IF EXISTS public.index_history_transactions_on_id; +DROP INDEX IF EXISTS public.index_history_operations_on_type; +DROP INDEX IF EXISTS public.index_history_operations_on_transaction_id; +DROP INDEX IF EXISTS public.index_history_operations_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_sequence; +DROP INDEX IF EXISTS public.index_history_ledgers_on_previous_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_importer_version; +DROP INDEX IF EXISTS public.index_history_ledgers_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_closed_at; +DROP INDEX IF EXISTS public.index_history_effects_on_type; +DROP INDEX IF EXISTS public.index_history_accounts_on_id; +DROP INDEX IF EXISTS public.index_history_accounts_on_address; +DROP INDEX IF EXISTS public.htrd_time_lookup; +DROP INDEX IF EXISTS public.htrd_pid; +DROP INDEX IF EXISTS public.htrd_pair_time_lookup; +DROP INDEX IF EXISTS public.htrd_counter_lookup; +DROP INDEX IF EXISTS public.htrd_by_offer; +DROP INDEX IF EXISTS public.htp_by_htid; +DROP INDEX IF EXISTS public.hs_transaction_by_id; +DROP INDEX IF EXISTS public.hs_ledger_by_id; +DROP INDEX IF EXISTS public.hop_by_hoid; +DROP INDEX IF EXISTS public.hist_tx_p_id; +DROP INDEX IF EXISTS public.hist_op_p_id; +DROP INDEX IF EXISTS public.hist_e_id; +DROP INDEX IF EXISTS public.hist_e_by_order; +DROP INDEX IF EXISTS public.by_ledger; +DROP INDEX IF EXISTS public.by_hash; +DROP INDEX IF EXISTS public.by_account; +DROP INDEX IF EXISTS public.asset_by_issuer; +ALTER TABLE IF EXISTS ONLY public.history_transaction_participants DROP CONSTRAINT IF EXISTS history_transaction_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_operation_participants DROP CONSTRAINT IF EXISTS history_operation_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_asset_code_asset_type_asset_issuer_key; +ALTER TABLE IF EXISTS ONLY public.gorp_migrations DROP CONSTRAINT IF EXISTS gorp_migrations_pkey; +ALTER TABLE IF EXISTS public.history_transaction_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_operation_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_assets ALTER COLUMN id DROP DEFAULT; +DROP TABLE IF EXISTS public.history_transactions; +DROP SEQUENCE IF EXISTS public.history_transaction_participants_id_seq; +DROP TABLE IF EXISTS public.history_transaction_participants; +DROP TABLE IF EXISTS public.history_trades; +DROP TABLE IF EXISTS public.history_operations; +DROP SEQUENCE IF EXISTS public.history_operation_participants_id_seq; +DROP TABLE IF EXISTS public.history_operation_participants; +DROP TABLE IF EXISTS public.history_ledgers; +DROP TABLE IF EXISTS public.history_effects; +DROP SEQUENCE IF EXISTS public.history_assets_id_seq; +DROP TABLE IF EXISTS public.history_assets; +DROP TABLE IF EXISTS public.history_accounts; +DROP SEQUENCE IF EXISTS public.history_accounts_id_seq; +DROP TABLE IF EXISTS public.gorp_migrations; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: gorp_migrations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE gorp_migrations ( + id text NOT NULL, + applied_at timestamp with time zone +); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_accounts_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_accounts ( + id bigint DEFAULT nextval('history_accounts_id_seq'::regclass) NOT NULL, + address character varying(64) +); + + +-- +-- Name: history_assets; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_assets ( + id integer NOT NULL, + asset_type character varying(64) NOT NULL, + asset_code character varying(12) NOT NULL, + asset_issuer character varying(56) NOT NULL +); + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_assets_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_assets_id_seq OWNED BY history_assets.id; + + +-- +-- Name: history_effects; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_effects ( + history_account_id bigint NOT NULL, + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + type integer NOT NULL, + details jsonb +); + + +-- +-- Name: history_ledgers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_ledgers ( + sequence integer NOT NULL, + ledger_hash character varying(64) NOT NULL, + previous_ledger_hash character varying(64), + transaction_count integer DEFAULT 0 NOT NULL, + operation_count integer DEFAULT 0 NOT NULL, + closed_at timestamp without time zone NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + importer_version integer DEFAULT 1 NOT NULL, + total_coins bigint NOT NULL, + fee_pool bigint NOT NULL, + base_fee integer NOT NULL, + base_reserve integer NOT NULL, + max_tx_set_size integer NOT NULL, + protocol_version integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: history_operation_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operation_participants ( + id integer NOT NULL, + history_operation_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_operation_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_operation_participants_id_seq OWNED BY history_operation_participants.id; + + +-- +-- Name: history_operations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operations ( + id bigint NOT NULL, + transaction_id bigint NOT NULL, + application_order integer NOT NULL, + type integer NOT NULL, + details jsonb, + source_account character varying(64) DEFAULT ''::character varying NOT NULL +); + + +-- +-- Name: history_trades; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_trades ( + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + ledger_closed_at timestamp without time zone NOT NULL, + offer_id bigint NOT NULL, + base_account_id bigint NOT NULL, + base_asset_id bigint NOT NULL, + base_amount bigint NOT NULL, + counter_account_id bigint NOT NULL, + counter_asset_id bigint NOT NULL, + counter_amount bigint NOT NULL, + base_is_seller boolean, + CONSTRAINT history_trades_base_amount_check CHECK ((base_amount > 0)), + CONSTRAINT history_trades_check CHECK ((base_asset_id < counter_asset_id)), + CONSTRAINT history_trades_counter_amount_check CHECK ((counter_amount > 0)) +); + + +-- +-- Name: history_transaction_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transaction_participants ( + id integer NOT NULL, + history_transaction_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_transaction_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_transaction_participants_id_seq OWNED BY history_transaction_participants.id; + + +-- +-- Name: history_transactions; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transactions ( + transaction_hash character varying(64) NOT NULL, + ledger_sequence integer NOT NULL, + application_order integer NOT NULL, + account character varying(64) NOT NULL, + account_sequence bigint NOT NULL, + fee_paid integer NOT NULL, + operation_count integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + tx_envelope text NOT NULL, + tx_result text NOT NULL, + tx_meta text NOT NULL, + tx_fee_meta text NOT NULL, + signatures character varying(96)[] DEFAULT '{}'::character varying[] NOT NULL, + memo_type character varying DEFAULT 'none'::character varying NOT NULL, + memo character varying, + time_bounds int8range +); + + +-- +-- Name: history_assets id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets ALTER COLUMN id SET DEFAULT nextval('history_assets_id_seq'::regclass); + + +-- +-- Name: history_operation_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants ALTER COLUMN id SET DEFAULT nextval('history_operation_participants_id_seq'::regclass); + + +-- +-- Name: history_transaction_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants ALTER COLUMN id SET DEFAULT nextval('history_transaction_participants_id_seq'::regclass); + + +-- +-- Data for Name: gorp_migrations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO gorp_migrations VALUES ('1_initial_schema.sql', '2017-10-25 12:02:41.355815-07'); +INSERT INTO gorp_migrations VALUES ('2_index_participants_by_toid.sql', '2017-10-25 12:02:41.35913-07'); +INSERT INTO gorp_migrations VALUES ('3_use_sequence_in_history_accounts.sql', '2017-10-25 12:02:41.361119-07'); +INSERT INTO gorp_migrations VALUES ('4_add_protocol_version.sql', '2017-10-25 12:02:41.365998-07'); +INSERT INTO gorp_migrations VALUES ('5_create_trades_table.sql', '2017-10-25 12:02:41.370443-07'); +INSERT INTO gorp_migrations VALUES ('6_create_assets_table.sql', '2017-10-25 12:02:41.373746-07'); +INSERT INTO gorp_migrations VALUES ('7_modify_trades_table.sql', '2017-10-25 12:02:41.381902-07'); + + +-- +-- Data for Name: history_accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_accounts VALUES (1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_accounts VALUES (2, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); +INSERT INTO history_accounts VALUES (3, 'GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG'); +INSERT INTO history_accounts VALUES (4, 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON'); +INSERT INTO history_accounts VALUES (5, 'GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2'); +INSERT INTO history_accounts VALUES (6, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_accounts_id_seq', 6, true); + + +-- +-- Data for Name: history_assets; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_assets VALUES (1, 'credit_alphanum4', 'EUR', 'GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG'); +INSERT INTO history_assets VALUES (2, 'credit_alphanum4', 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_assets_id_seq', 2, true); + + +-- +-- Data for Name: history_effects; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_effects VALUES (2, 8589938689, 1, 0, '{"starting_balance": "100.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589938689, 2, 3, '{"amount": "100.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (2, 8589938689, 3, 10, '{"weight": 1, "public_key": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (3, 8589942785, 1, 0, '{"starting_balance": "100.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589942785, 2, 3, '{"amount": "100.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (3, 8589942785, 3, 10, '{"weight": 1, "public_key": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG"}'); +INSERT INTO history_effects VALUES (4, 8589946881, 1, 0, '{"starting_balance": "100.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589946881, 2, 3, '{"amount": "100.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (4, 8589946881, 3, 10, '{"weight": 1, "public_key": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON"}'); +INSERT INTO history_effects VALUES (5, 8589950977, 1, 0, '{"starting_balance": "100.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589950977, 2, 3, '{"amount": "100.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (5, 8589950977, 3, 10, '{"weight": 1, "public_key": "GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2"}'); +INSERT INTO history_effects VALUES (6, 8589955073, 1, 0, '{"starting_balance": "100.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589955073, 2, 3, '{"amount": "100.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (6, 8589955073, 3, 10, '{"weight": 1, "public_key": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU"}'); +INSERT INTO history_effects VALUES (5, 12884905985, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG"}'); +INSERT INTO history_effects VALUES (4, 12884910081, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (6, 12884914177, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (4, 12884918273, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG"}'); +INSERT INTO history_effects VALUES (4, 17179873281, 1, 2, '{"amount": "20.0000000", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG"}'); +INSERT INTO history_effects VALUES (3, 17179873281, 2, 3, '{"amount": "20.0000000", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG"}'); +INSERT INTO history_effects VALUES (6, 17179877377, 1, 2, '{"amount": "100.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (2, 17179877377, 2, 3, '{"amount": "100.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (4, 17179881473, 1, 2, '{"amount": "20.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (2, 17179881473, 2, 3, '{"amount": "20.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (5, 17179885569, 1, 2, '{"amount": "100.0000000", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG"}'); +INSERT INTO history_effects VALUES (3, 17179885569, 2, 3, '{"amount": "100.0000000", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG"}'); +INSERT INTO history_effects VALUES (6, 25769807873, 1, 33, '{"seller": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", "offer_id": 1, "sold_amount": "10.0000000", "bought_amount": "10.0000000", "sold_asset_code": "USD", "sold_asset_type": "credit_alphanum4", "bought_asset_code": "EUR", "bought_asset_type": "credit_alphanum4", "sold_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "bought_asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG"}'); +INSERT INTO history_effects VALUES (4, 25769807873, 2, 33, '{"seller": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "offer_id": 1, "sold_amount": "10.0000000", "bought_amount": "10.0000000", "sold_asset_code": "EUR", "sold_asset_type": "credit_alphanum4", "bought_asset_code": "USD", "bought_asset_type": "credit_alphanum4", "sold_asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG", "bought_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); + + +-- +-- Data for Name: history_ledgers; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_ledgers VALUES (1, '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', NULL, 0, 0, '1970-01-01 00:00:00', '2017-10-25 19:04:25.494154', '2017-10-25 19:04:25.494154', 4294967296, 10, 1000000000000000000, 0, 100, 100000000, 100, 0); +INSERT INTO history_ledgers VALUES (2, '5d0727a7a3b7901064ceaef738745e873e2bf6aea03d2846aaa70d56cb31ea5a', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', 5, 5, '2017-10-25 19:04:20', '2017-10-25 19:04:25.512404', '2017-10-25 19:04:25.512404', 8589934592, 10, 1000000000000000000, 500, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (3, '1e5c2c4027a8440bb8cd80d579f2c765f19455a0e85bcf57bbb77cc1fb700464', '5d0727a7a3b7901064ceaef738745e873e2bf6aea03d2846aaa70d56cb31ea5a', 4, 4, '2017-10-25 19:04:21', '2017-10-25 19:04:25.558247', '2017-10-25 19:04:25.558247', 12884901888, 10, 1000000000000000000, 900, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (4, 'fe4ff5ab820104e5a60bcec238d7b10ac7a3e707306a64dded6587d2ef3079ad', '1e5c2c4027a8440bb8cd80d579f2c765f19455a0e85bcf57bbb77cc1fb700464', 4, 4, '2017-10-25 19:04:22', '2017-10-25 19:04:25.58412', '2017-10-25 19:04:25.58412', 17179869184, 10, 1000000000000000000, 1300, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (5, '47dbb5c3ec83f56cf268ec265b2efdea92f82ea19925c2d7f0b317790c391056', 'fe4ff5ab820104e5a60bcec238d7b10ac7a3e707306a64dded6587d2ef3079ad', 1, 1, '2017-10-25 19:04:23', '2017-10-25 19:04:25.609554', '2017-10-25 19:04:25.609554', 21474836480, 10, 1000000000000000000, 1400, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (6, '71734c04e6d1db1eaca0a4589779c1bdf0c630fc4393b585ac9e89114d0e8a3e', '47dbb5c3ec83f56cf268ec265b2efdea92f82ea19925c2d7f0b317790c391056', 1, 1, '2017-10-25 19:04:24', '2017-10-25 19:04:25.617548', '2017-10-25 19:04:25.617548', 25769803776, 10, 1000000000000000000, 1500, 100, 100000000, 10000, 8); + + +-- +-- Data for Name: history_operation_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operation_participants VALUES (1, 8589938689, 1); +INSERT INTO history_operation_participants VALUES (2, 8589938689, 2); +INSERT INTO history_operation_participants VALUES (3, 8589942785, 1); +INSERT INTO history_operation_participants VALUES (4, 8589942785, 3); +INSERT INTO history_operation_participants VALUES (5, 8589946881, 4); +INSERT INTO history_operation_participants VALUES (6, 8589946881, 1); +INSERT INTO history_operation_participants VALUES (7, 8589950977, 1); +INSERT INTO history_operation_participants VALUES (8, 8589950977, 5); +INSERT INTO history_operation_participants VALUES (9, 8589955073, 1); +INSERT INTO history_operation_participants VALUES (10, 8589955073, 6); +INSERT INTO history_operation_participants VALUES (11, 12884905985, 5); +INSERT INTO history_operation_participants VALUES (12, 12884910081, 4); +INSERT INTO history_operation_participants VALUES (13, 12884914177, 6); +INSERT INTO history_operation_participants VALUES (14, 12884918273, 4); +INSERT INTO history_operation_participants VALUES (15, 17179873281, 3); +INSERT INTO history_operation_participants VALUES (16, 17179873281, 4); +INSERT INTO history_operation_participants VALUES (17, 17179877377, 2); +INSERT INTO history_operation_participants VALUES (18, 17179877377, 6); +INSERT INTO history_operation_participants VALUES (19, 17179881473, 2); +INSERT INTO history_operation_participants VALUES (20, 17179881473, 4); +INSERT INTO history_operation_participants VALUES (21, 17179885569, 3); +INSERT INTO history_operation_participants VALUES (22, 17179885569, 5); +INSERT INTO history_operation_participants VALUES (23, 21474840577, 4); +INSERT INTO history_operation_participants VALUES (24, 25769807873, 6); +INSERT INTO history_operation_participants VALUES (25, 25769807873, 5); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_operation_participants_id_seq', 25, true); + + +-- +-- Data for Name: history_operations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operations VALUES (8589938689, 8589938688, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "starting_balance": "100.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (8589942785, 8589942784, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG", "starting_balance": "100.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (8589946881, 8589946880, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", "starting_balance": "100.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (8589950977, 8589950976, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2", "starting_balance": "100.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (8589955073, 8589955072, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "starting_balance": "100.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (12884905985, 12884905984, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG", "trustor": "GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG"}', 'GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2'); +INSERT INTO history_operations VALUES (12884910081, 12884910080, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "trustor": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON'); +INSERT INTO history_operations VALUES (12884914177, 12884914176, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "trustor": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (12884918273, 12884918272, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG", "trustor": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG"}', 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON'); +INSERT INTO history_operations VALUES (17179873281, 17179873280, 1, 1, '{"to": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", "from": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG", "amount": "20.0000000", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG"}', 'GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG'); +INSERT INTO history_operations VALUES (17179877377, 17179877376, 1, 1, '{"to": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "from": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "amount": "100.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); +INSERT INTO history_operations VALUES (17179881473, 17179881472, 1, 1, '{"to": "GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON", "from": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "amount": "20.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); +INSERT INTO history_operations VALUES (17179885569, 17179885568, 1, 1, '{"to": "GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2", "from": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG", "amount": "100.0000000", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG"}', 'GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG'); +INSERT INTO history_operations VALUES (21474840577, 21474840576, 1, 3, '{"price": "1.0000000", "amount": "20.0000000", "price_r": {"d": 1, "n": 1}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_code": "EUR", "selling_asset_type": "credit_alphanum4", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "selling_asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG"}', 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON'); +INSERT INTO history_operations VALUES (25769807873, 25769807872, 1, 2, '{"to": "GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2", "from": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "path": [], "amount": "10.0000000", "asset_code": "EUR", "asset_type": "credit_alphanum4", "source_max": "10.0000000", "asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG", "source_amount": "10.0000000", "source_asset_code": "USD", "source_asset_type": "credit_alphanum4", "source_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); + + +-- +-- Data for Name: history_trades; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_trades VALUES (25769807873, 0, '2017-10-25 19:04:24', 1, 4, 1, 100000000, 6, 2, 100000000, true); + + +-- +-- Data for Name: history_transaction_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transaction_participants VALUES (1, 8589938688, 1); +INSERT INTO history_transaction_participants VALUES (2, 8589938688, 2); +INSERT INTO history_transaction_participants VALUES (3, 8589942784, 1); +INSERT INTO history_transaction_participants VALUES (4, 8589942784, 3); +INSERT INTO history_transaction_participants VALUES (5, 8589946880, 1); +INSERT INTO history_transaction_participants VALUES (6, 8589946880, 4); +INSERT INTO history_transaction_participants VALUES (7, 8589950976, 1); +INSERT INTO history_transaction_participants VALUES (8, 8589950976, 5); +INSERT INTO history_transaction_participants VALUES (9, 8589955072, 1); +INSERT INTO history_transaction_participants VALUES (10, 8589955072, 6); +INSERT INTO history_transaction_participants VALUES (11, 12884905984, 5); +INSERT INTO history_transaction_participants VALUES (12, 12884910080, 4); +INSERT INTO history_transaction_participants VALUES (13, 12884914176, 6); +INSERT INTO history_transaction_participants VALUES (14, 12884918272, 4); +INSERT INTO history_transaction_participants VALUES (15, 17179873280, 3); +INSERT INTO history_transaction_participants VALUES (16, 17179873280, 4); +INSERT INTO history_transaction_participants VALUES (17, 17179877376, 6); +INSERT INTO history_transaction_participants VALUES (18, 17179877376, 2); +INSERT INTO history_transaction_participants VALUES (19, 17179881472, 2); +INSERT INTO history_transaction_participants VALUES (20, 17179881472, 4); +INSERT INTO history_transaction_participants VALUES (21, 17179885568, 3); +INSERT INTO history_transaction_participants VALUES (22, 17179885568, 5); +INSERT INTO history_transaction_participants VALUES (23, 21474840576, 4); +INSERT INTO history_transaction_participants VALUES (24, 25769807872, 5); +INSERT INTO history_transaction_participants VALUES (25, 25769807872, 6); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_transaction_participants_id_seq', 25, true); + + +-- +-- Data for Name: history_transactions; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transactions VALUES ('666656a6eade2082c5780571267d9e4453eee5781ca9a58aa319eb0fe83455fd', 2, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 1, 100, 1, '2017-10-25 19:04:25.513098', '2017-10-25 19:04:25.513098', 8589938688, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAAAAAAAAAAABVvwF9wAAAEBdDXe23U4e9C2SxpBLZRx1rJzSFLJ0xDD0uKGpmqbflDT+XXIq6UiDBzmFxt+GO+XqFoQPdrXT7p1oLZIHqTMP', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2s2vJNAwAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{XQ13tt1OHvQtksaQS2Ucdayc0hSydMQw9LihqZqm35Q0/l1yKulIgwc5hcbfhjvl6haED3a10+6daC2SB6kzDw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('b1f828384c56e4b024f4275f246580ababff1ae3b9ba61b03897357e57eebc20', 2, 2, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 2, 100, 1, '2017-10-25 19:04:25.524405', '2017-10-25 19:04:25.524405', 8589942784, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAO5rKAAAAAAAAAAABVvwF9wAAAEBdfnFSzZeh17zt82oMdqe4+/xns/kHBdGXf9BIBRYfVZ3DQT3awwZn5LqgIG9JqlvMmR1TKaxcoJQDuqGcCScM', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAKD8GPxXf3CMjVKv3qhzs6au2HaMHH0s5B32RVUQithJAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2szAuagwAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/84AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{XX5xUs2Xode87fNqDHanuPv8Z7P5BwXRl3/QSAUWH1Wdw0E92sMGZ+S6oCBvSapbzJkdUymsXKCUA7qhnAknDA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('2b2e82dbabb024b27a0c3140ca71d8ac9bc71831f9f5a3bd69eca3d88fb0ec5c', 2, 3, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 3, 100, 1, '2017-10-25 19:04:25.53022', '2017-10-25 19:04:25.53022', 8589946880, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAAAO5rKAAAAAAAAAAABVvwF9wAAAEDJul1tLGLF4Vxwt0dDCVEf6tb5l4byMrGgCp+lVZMmxct54iNf2mxtjx6Md5ZJ4E4Dlcsf46EAhBGSUPsn8fYD', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2svSToAwAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/7UAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{ybpdbSxixeFccLdHQwlRH+rW+ZeG8jKxoAqfpVWTJsXLeeIjX9psbY8ejHeWSeBOA5XLH+OhAIQRklD7J/H2Aw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('e17bae552da0105ad32f0b9aadfd0f623ef37eb486b10b044c19238360e455d7', 2, 4, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 4, 100, 1, '2017-10-25 19:04:25.536393', '2017-10-25 19:04:25.536393', 8589950976, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAO2C/AO45YBD3tHVFO1R3A0MekP8JR6nN1A9eWidyItUAAAAAO5rKAAAAAAAAAAABVvwF9wAAAEDYYfyOrmPhfki6lrP+oCfunJmRu2mfxl40o5qWR7y1YmP8poG+6Xqg41jKCWNwVoP717CVEPe70I0teWvTejkJ', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2srj41gwAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/5wAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{2GH8jq5j4X5Iupaz/qAn7pyZkbtpn8ZeNKOalke8tWJj/KaBvul6oONYygljcFaD+9ewlRD3u9CNLXlr03o5CQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('cfd8816ed587c5ed88dea0eb00818caf38c0750e7740e05de3c27176e9aee8ee', 2, 5, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 5, 100, 1, '2017-10-25 19:04:25.542428', '2017-10-25 19:04:25.542428', 8589955072, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAO5rKAAAAAAAAAAABVvwF9wAAAEDNmQhdQeyMcWFWP8dVRkDtFS4tHICyKdaPkR6+/L7+tMzKWoUjbDAXscRYI+j6Fd/VFUaDzdYsWCAsH30WujIL', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2sn1eDAwAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/4MAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{zZkIXUHsjHFhVj/HVUZA7RUuLRyAsinWj5Eevvy+/rTMylqFI2wwF7HEWCPo+hXf1RVGg83WLFggLB99FroyCw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('b5cadce05fc0ad5d6fe009b8b0debc0d3dfd32ea42b8eba3e9ea68c2746e410f', 3, 1, 'GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2', 8589934593, 100, 1, '2017-10-25 19:04:25.558963', '2017-10-25 19:04:25.558963', 12884905984, 'AAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSX//////////AAAAAAAAAAEnciLVAAAAQANQSzvpEBCAXvs1PgmH/UFbfAYt3OAggYPVTd0pjVcJaV3lDE/jOZMnLFZMkFEhg4dluVQxeDZAwTKUPandswg=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAADuayZwAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{A1BLO+kQEIBe+zU+CYf9QVt8Bi3c4CCBg9VN3SmNVwlpXeUMT+M5kycsVkyQUSGDh2W5VDF4NkDBMpQ9qd2zCA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('811192c38643df73c015a5a1d77b802dff05d4f50fc6d10816aa75c0a6109f9a', 3, 2, 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 8589934593, 100, 1, '2017-10-25 19:04:25.562573', '2017-10-25 19:04:25.562573', 12884910080, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAFvFIhaAAAAQPlg7GLhJg0x7jpAw1Ew6H2XF6yRImfJIwFfx09Nui5btOJAFewFANfOaAB8FQZl5p3A5g3k6DHDigfUNUD16gc=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAADuayTgAAAACAAAAAgAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{+WDsYuEmDTHuOkDDUTDofZcXrJEiZ8kjAV/HT026Llu04kAV7AUA185oAHwVBmXmncDmDeToMcOKB9Q1QPXqBw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('bd486dbdd02d460817671c4a5a7e9d6e865ca29cb41e62d7aaf70a2fee5b36de', 3, 3, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934593, 100, 1, '2017-10-25 19:04:25.565733', '2017-10-25 19:04:25.565733', 12884914176, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAGu5L5MAAAAQB9kmKW2q3v7Qfy8PMekEb1TTI5ixqkI0BogXrOt7gO162Qbkh2dSTUfeDovc0PAafhDXxthVAlsLujlBmyjBAY=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAADuayZwAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{H2SYpbare/tB/Lw8x6QRvVNMjmLGqQjQGiBes63uA7XrZBuSHZ1JNR94Oi9zQ8Bp+ENfG2FUCWwu6OUGbKMEBg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('32e4ba1f218b6aa2420b497456a1b09090e3837e66b3495030d4edd60d0f0570', 3, 4, 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 8589934594, 100, 1, '2017-10-25 19:04:25.569288', '2017-10-25 19:04:25.569288', 12884918272, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSX//////////AAAAAAAAAAFvFIhaAAAAQMJmv+lhF5QZlgdIqBXDSdhEtgraTrRSwVr5d/BrNC28efHMoxYNa+2u9tSEdxU+hGX6JRW7wAF3bOpA8rxxxAE=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAADuayTgAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAADAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAAA7msk4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{wma/6WEXlBmWB0ioFcNJ2ES2CtpOtFLBWvl38Gs0Lbx58cyjFg1r7a721IR3FT6EZfolFbvAAXds6kDyvHHEAQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('09c0147a62c828321ee899d0cccd92c81525eea71250720260321b3a24995e8b', 4, 1, 'GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG', 8589934593, 100, 1, '2017-10-25 19:04:25.584736', '2017-10-25 19:04:25.584736', 17179873280, 'AAAAAKD8GPxXf3CMjVKv3qhzs6au2HaMHH0s5B32RVUQithJAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAAL68IAAAAAAAAAAAEQithJAAAAQCaHhpiVN9E437IXFcHpfVrox1SO/NJtCmB2hgagMQHDRDGQMHN3qjScTOqqeEsNEuvK+n7I4b+9Fr0R3twmcgs=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAC+vCAH//////////AAAAAQAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{JoeGmJU30TjfshcVwel9WujHVI780m0KYHaGBqAxAcNEMZAwc3eqNJxM6qp4Sw0S68r6fsjhv70WvRHe3CZyCw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('7736f0b869de0f74a5ed7f8d6529949238eb0f0421f3fc2bbc438084f21c8055', 4, 2, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 8589934593, 100, 1, '2017-10-25 19:04:25.589354', '2017-10-25 19:04:25.589354', 17179877376, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAA7msoAAAAAAAAAAAH5kC3vAAAAQDjBSAulKc9tRqGg+OkVbKPz4olRQYUevyCfv0LAlqbXG6yPbpR0BR6o7mrimRm8O4VoRBGIATQB42NOWcFzdQw=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAH//////////AAAAAQAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{OMFIC6Upz21GoaD46RVso/PiiVFBhR6/IJ+/QsCWptcbrI9ulHQFHqjuauKZGbw7hWhEEYgBNAHjY05ZwXN1DA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('f74cd54800d537c06dff35cc4783be881c2d670c1151a56ca7f951758dc7415d', 4, 3, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 8589934594, 100, 1, '2017-10-25 19:04:25.594324', '2017-10-25 19:04:25.594324', 17179881472, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAL68IAAAAAAAAAAAH5kC3vAAAAQOIKSlDQm9Urq2ujnvxZjGq6zJQncPTp8vl4sCC4Ra4MUnaHYDakRXTFoQlIFAr5t0oJwdBSs6TJ8M5VeGgBbQg=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAC+vCAH//////////AAAAAQAAAAAAAAAA', 'AAAAAQAAAAEAAAAEAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAA7msk4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{4gpKUNCb1Sura6Oe/FmMarrMlCdw9Ony+XiwILhFrgxSdodgNqRFdMWhCUgUCvm3SgnB0FKzpMnwzlV4aAFtCA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('c93f80667f37df70a29ec0de96ff3381644ac828a4cea1cb6ceb1bcec6fff058', 4, 4, 'GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG', 8589934594, 100, 1, '2017-10-25 19:04:25.599133', '2017-10-25 19:04:25.599134', 17179885568, 'AAAAAKD8GPxXf3CMjVKv3qhzs6au2HaMHH0s5B32RVUQithJAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAO2C/AO45YBD3tHVFO1R3A0MekP8JR6nN1A9eWidyItUAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAA7msoAAAAAAAAAAAEQithJAAAAQG4l7kCAq5aqvS2d/HTtYc7LAa7pSUiiO4KyKJbqmsDgvckGC2dbhcro9tcvCZHfwqTV+ikv8Hm8Zfa63kYPkQY=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAO5rKAH//////////AAAAAQAAAAAAAAAA', 'AAAAAQAAAAEAAAAEAAAAAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAA7msk4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{biXuQICrlqq9LZ38dO1hzssBrulJSKI7grIoluqawOC9yQYLZ1uFyuj21y8Jkd/CpNX6KS/webxl9rreRg+RBg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('b52f16ffb98c047e33b9c2ec30880330cde71f85b3443dae2c5cb86c7d4d8452', 5, 1, 'GBXGQJWVLWOYHFLVTKWV5FGHA3LNYY2JQKM7OAJAUEQFU6LPCSEFVXON', 8589934595, 100, 1, '2017-10-25 19:04:25.610236', '2017-10-25 19:04:25.610236', 21474840576, 'AAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAAvrwgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAFvFIhaAAAAQFlXwaom7ylSTdyaO7qNM74Y+JUkA2o0uc7W2FzBlkVe2scznMMa+R8hVTblO5lQ6+FcTM5jIrWQqxqFFZbOkAw=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAAAAAAEAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAAvrwgAAAAABAAAAAQAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAAAAAAEAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAAvrwgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAAA7msjUAAAAAgAAAAMAAAADAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', 'AAAAAgAAAAMAAAADAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAAA7msk4AAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAAA7msjUAAAAAgAAAAMAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{WVfBqibvKVJN3Jo7uo0zvhj4lSQDajS5ztbYXMGWRV7axzOcwxr5HyFVNuU7mVDr4VxMzmMitZCrGoUVls6QDA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('1d2a4be72470658f68db50eef29ea0af3f985ce18b5c218f03461d40c47dc292', 6, 1, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934594, 100, 1, '2017-10-25 19:04:25.618189', '2017-10-25 19:04:25.618189', 25769807872, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAIAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAF9eEAAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAABfXhAAAAAAAAAAAAAAAAAa7kvkwAAABAD49aRUuzXXeNHu1FfIYBbplBoP+b1B4uMGt2UGZt6jPKvwVORmMzfXDZaHBvIirsI8eNf+9F1EI0Fh9M/2jmCg==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAACAAAAAAAAAAEAAAAAbmgm1V2dg5V1mq1elMcG1txjSYKZ9wEgoSBaeW8UiFoAAAAAAAAAAQAAAAFFVVIAAAAAAKD8GPxXf3CMjVKv3qhzs6au2HaMHH0s5B32RVUQithJAAAAAAX14QAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAF9eEAAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAABfXhAAAAAAA=', 'AAAAAAAAAAEAAAAKAAAAAwAAAAQAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAO5rKAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAYAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAQZCrAH//////////AAAAAQAAAAAAAAAAAAAAAwAAAAQAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAC+vCAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAYAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAABfXhAH//////////AAAAAQAAAAAAAAAAAAAAAwAAAAQAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAC+vCAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAYAAAABAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAEeGjAH//////////AAAAAQAAAAAAAAAAAAAAAwAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAYAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAANaTpAH//////////AAAAAQAAAAAAAAAAAAAAAwAAAAUAAAACAAAAAG5oJtVdnYOVdZqtXpTHBtbcY0mCmfcBIKEgWnlvFIhaAAAAAAAAAAEAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAAvrwgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAgAAAABuaCbVXZ2DlXWarV6UxwbW3GNJgpn3ASChIFp5bxSIWgAAAAAAAAABAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAF9eEAAAAAAQAAAAEAAAAAAAAAAAAAAAA=', 'AAAAAgAAAAMAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msmcAAAAAgAAAAEAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msk4AAAAAgAAAAIAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{D49aRUuzXXeNHu1FfIYBbplBoP+b1B4uMGt2UGZt6jPKvwVORmMzfXDZaHBvIirsI8eNf+9F1EI0Fh9M/2jmCg==}', 'none', NULL, NULL); + + +-- +-- Name: gorp_migrations gorp_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY gorp_migrations + ADD CONSTRAINT gorp_migrations_pkey PRIMARY KEY (id); + + +-- +-- Name: history_assets history_assets_asset_code_asset_type_asset_issuer_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_asset_code_asset_type_asset_issuer_key UNIQUE (asset_code, asset_type, asset_issuer); + + +-- +-- Name: history_assets history_assets_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_pkey PRIMARY KEY (id); + + +-- +-- Name: history_operation_participants history_operation_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants + ADD CONSTRAINT history_operation_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: history_transaction_participants history_transaction_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants + ADD CONSTRAINT history_transaction_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: asset_by_issuer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX asset_by_issuer ON history_assets USING btree (asset_issuer); + + +-- +-- Name: by_account; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_account ON history_transactions USING btree (account, account_sequence); + + +-- +-- Name: by_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_hash ON history_transactions USING btree (transaction_hash); + + +-- +-- Name: by_ledger; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_ledger ON history_transactions USING btree (ledger_sequence, application_order); + + +-- +-- Name: hist_e_by_order; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_by_order ON history_effects USING btree (history_operation_id, "order"); + + +-- +-- Name: hist_e_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_id ON history_effects USING btree (history_account_id, history_operation_id, "order"); + + +-- +-- Name: hist_op_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_op_p_id ON history_operation_participants USING btree (history_account_id, history_operation_id); + + +-- +-- Name: hist_tx_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_tx_p_id ON history_transaction_participants USING btree (history_account_id, history_transaction_id); + + +-- +-- Name: hop_by_hoid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX hop_by_hoid ON history_operation_participants USING btree (history_operation_id); + + +-- +-- Name: hs_ledger_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_ledger_by_id ON history_ledgers USING btree (id); + + +-- +-- Name: hs_transaction_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_transaction_by_id ON history_transactions USING btree (id); + + +-- +-- Name: htp_by_htid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htp_by_htid ON history_transaction_participants USING btree (history_transaction_id); + + +-- +-- Name: htrd_by_offer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_by_offer ON history_trades USING btree (offer_id); + + +-- +-- Name: htrd_counter_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_counter_lookup ON history_trades USING btree (counter_asset_id); + + +-- +-- Name: htrd_pair_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_pair_time_lookup ON history_trades USING btree (base_asset_id, counter_asset_id, ledger_closed_at); + + +-- +-- Name: htrd_pid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX htrd_pid ON history_trades USING btree (history_operation_id, "order"); + + +-- +-- Name: htrd_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_time_lookup ON history_trades USING btree (ledger_closed_at); + + +-- +-- Name: index_history_accounts_on_address; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_address ON history_accounts USING btree (address); + + +-- +-- Name: index_history_accounts_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_id ON history_accounts USING btree (id); + + +-- +-- Name: index_history_effects_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_effects_on_type ON history_effects USING btree (type); + + +-- +-- Name: index_history_ledgers_on_closed_at; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_closed_at ON history_ledgers USING btree (closed_at); + + +-- +-- Name: index_history_ledgers_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_id ON history_ledgers USING btree (id); + + +-- +-- Name: index_history_ledgers_on_importer_version; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_importer_version ON history_ledgers USING btree (importer_version); + + +-- +-- Name: index_history_ledgers_on_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_ledger_hash ON history_ledgers USING btree (ledger_hash); + + +-- +-- Name: index_history_ledgers_on_previous_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_previous_ledger_hash ON history_ledgers USING btree (previous_ledger_hash); + + +-- +-- Name: index_history_ledgers_on_sequence; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_sequence ON history_ledgers USING btree (sequence); + + +-- +-- Name: index_history_operations_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_operations_on_id ON history_operations USING btree (id); + + +-- +-- Name: index_history_operations_on_transaction_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_transaction_id ON history_operations USING btree (transaction_id); + + +-- +-- Name: index_history_operations_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_type ON history_operations USING btree (type); + + +-- +-- Name: index_history_transactions_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_transactions_on_id ON history_transactions USING btree (id); + + +-- +-- Name: trade_effects_by_order_book; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX trade_effects_by_order_book ON history_effects USING btree (((details ->> 'sold_asset_type'::text)), ((details ->> 'sold_asset_code'::text)), ((details ->> 'sold_asset_issuer'::text)), ((details ->> 'bought_asset_type'::text)), ((details ->> 'bought_asset_code'::text)), ((details ->> 'bought_asset_issuer'::text))) WHERE (type = 33); + + +-- +-- Name: history_trades history_trades_base_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_account_id_fkey FOREIGN KEY (base_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_base_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_asset_id_fkey FOREIGN KEY (base_asset_id) REFERENCES history_assets(id); + + +-- +-- Name: history_trades history_trades_counter_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_account_id_fkey FOREIGN KEY (counter_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_counter_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_asset_id_fkey FOREIGN KEY (counter_asset_id) REFERENCES history_assets(id); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/pathed_payment.rb b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/pathed_payment.rb new file mode 100644 index 0000000..a99ff1e --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/pathed_payment.rb @@ -0,0 +1,32 @@ +run_recipe File.dirname(__FILE__) + "/_common_accounts.rb" + +use_manual_close + +create_account :usd_gateway, :master, 100 +create_account :eur_gateway, :master, 100 +create_account :andrew, :master, 100 +create_account :bartek, :master, 100 +create_account :scott, :master, 100 + +close_ledger + +trust :scott, :usd_gateway, "USD" +trust :bartek, :eur_gateway, "EUR" +trust :andrew, :usd_gateway, "USD" +trust :andrew, :eur_gateway, "EUR" + +close_ledger + +payment :usd_gateway, :scott, ["USD", :usd_gateway, 100] +payment :usd_gateway, :andrew, ["USD", :usd_gateway, 20] +payment :eur_gateway, :andrew, ["EUR", :eur_gateway, 20] +payment :eur_gateway, :bartek, ["EUR", :eur_gateway, 100] + +close_ledger + +offer :andrew, {buy:["USD", :usd_gateway], with:["EUR", :eur_gateway]}, 20, 1.0 + +close_ledger + +# fix path pathment +payment :scott, :bartek, ["EUR", :eur_gateway, 10], with: ["USD", :usd_gateway, 10], path:[] diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/paths-core.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/paths-core.sql new file mode 100644 index 0000000..7d7fbe0 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/paths-core.sql @@ -0,0 +1,783 @@ +running recipe +recipe finished, closing ledger +ledger closed +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; +SET row_security = off; + +SET search_path = public, pg_catalog; + +DROP INDEX IF EXISTS public.signersaccount; +DROP INDEX IF EXISTS public.sellingissuerindex; +DROP INDEX IF EXISTS public.scpquorumsbyseq; +DROP INDEX IF EXISTS public.scpenvsbyseq; +DROP INDEX IF EXISTS public.priceindex; +DROP INDEX IF EXISTS public.ledgersbyseq; +DROP INDEX IF EXISTS public.histfeebyseq; +DROP INDEX IF EXISTS public.histbyseq; +DROP INDEX IF EXISTS public.buyingissuerindex; +DROP INDEX IF EXISTS public.accountbalances; +ALTER TABLE IF EXISTS ONLY public.txhistory DROP CONSTRAINT IF EXISTS txhistory_pkey; +ALTER TABLE IF EXISTS ONLY public.txfeehistory DROP CONSTRAINT IF EXISTS txfeehistory_pkey; +ALTER TABLE IF EXISTS ONLY public.trustlines DROP CONSTRAINT IF EXISTS trustlines_pkey; +ALTER TABLE IF EXISTS ONLY public.storestate DROP CONSTRAINT IF EXISTS storestate_pkey; +ALTER TABLE IF EXISTS ONLY public.signers DROP CONSTRAINT IF EXISTS signers_pkey; +ALTER TABLE IF EXISTS ONLY public.scpquorums DROP CONSTRAINT IF EXISTS scpquorums_pkey; +ALTER TABLE IF EXISTS ONLY public.pubsub DROP CONSTRAINT IF EXISTS pubsub_pkey; +ALTER TABLE IF EXISTS ONLY public.publishqueue DROP CONSTRAINT IF EXISTS publishqueue_pkey; +ALTER TABLE IF EXISTS ONLY public.peers DROP CONSTRAINT IF EXISTS peers_pkey; +ALTER TABLE IF EXISTS ONLY public.offers DROP CONSTRAINT IF EXISTS offers_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_ledgerseq_key; +ALTER TABLE IF EXISTS ONLY public.ban DROP CONSTRAINT IF EXISTS ban_pkey; +ALTER TABLE IF EXISTS ONLY public.accounts DROP CONSTRAINT IF EXISTS accounts_pkey; +ALTER TABLE IF EXISTS ONLY public.accountdata DROP CONSTRAINT IF EXISTS accountdata_pkey; +DROP TABLE IF EXISTS public.txhistory; +DROP TABLE IF EXISTS public.txfeehistory; +DROP TABLE IF EXISTS public.trustlines; +DROP TABLE IF EXISTS public.storestate; +DROP TABLE IF EXISTS public.signers; +DROP TABLE IF EXISTS public.scpquorums; +DROP TABLE IF EXISTS public.scphistory; +DROP TABLE IF EXISTS public.pubsub; +DROP TABLE IF EXISTS public.publishqueue; +DROP TABLE IF EXISTS public.peers; +DROP TABLE IF EXISTS public.offers; +DROP TABLE IF EXISTS public.ledgerheaders; +DROP TABLE IF EXISTS public.ban; +DROP TABLE IF EXISTS public.accounts; +DROP TABLE IF EXISTS public.accountdata; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: accountdata; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accountdata ( + accountid character varying(56) NOT NULL, + dataname character varying(64) NOT NULL, + datavalue character varying(112) NOT NULL, + lastmodified integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accounts ( + accountid character varying(56) NOT NULL, + balance bigint NOT NULL, + seqnum bigint NOT NULL, + numsubentries integer NOT NULL, + inflationdest character varying(56), + homedomain character varying(32) NOT NULL, + thresholds text NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT accounts_balance_check CHECK ((balance >= 0)), + CONSTRAINT accounts_numsubentries_check CHECK ((numsubentries >= 0)) +); + + +-- +-- Name: ban; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ban ( + nodeid character(56) NOT NULL +); + + +-- +-- Name: ledgerheaders; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ledgerheaders ( + ledgerhash character(64) NOT NULL, + prevhash character(64) NOT NULL, + bucketlisthash character(64) NOT NULL, + ledgerseq integer, + closetime bigint NOT NULL, + data text NOT NULL, + CONSTRAINT ledgerheaders_closetime_check CHECK ((closetime >= 0)), + CONSTRAINT ledgerheaders_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: offers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE offers ( + sellerid character varying(56) NOT NULL, + offerid bigint NOT NULL, + sellingassettype integer NOT NULL, + sellingassetcode character varying(12), + sellingissuer character varying(56), + buyingassettype integer NOT NULL, + buyingassetcode character varying(12), + buyingissuer character varying(56), + amount bigint NOT NULL, + pricen integer NOT NULL, + priced integer NOT NULL, + price double precision NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT offers_amount_check CHECK ((amount >= 0)), + CONSTRAINT offers_offerid_check CHECK ((offerid >= 0)) +); + + +-- +-- Name: peers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE peers ( + ip character varying(15) NOT NULL, + port integer DEFAULT 0 NOT NULL, + nextattempt timestamp without time zone NOT NULL, + numfailures integer DEFAULT 0 NOT NULL, + CONSTRAINT peers_numfailures_check CHECK ((numfailures >= 0)), + CONSTRAINT peers_port_check CHECK (((port > 0) AND (port <= 65535))) +); + + +-- +-- Name: publishqueue; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE publishqueue ( + ledger integer NOT NULL, + state text +); + + +-- +-- Name: pubsub; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE pubsub ( + resid character(32) NOT NULL, + lastread integer +); + + +-- +-- Name: scphistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scphistory ( + nodeid character(56) NOT NULL, + ledgerseq integer NOT NULL, + envelope text NOT NULL, + CONSTRAINT scphistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: scpquorums; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scpquorums ( + qsethash character(64) NOT NULL, + lastledgerseq integer NOT NULL, + qset text NOT NULL, + CONSTRAINT scpquorums_lastledgerseq_check CHECK ((lastledgerseq >= 0)) +); + + +-- +-- Name: signers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE signers ( + accountid character varying(56) NOT NULL, + publickey character varying(56) NOT NULL, + weight integer NOT NULL +); + + +-- +-- Name: storestate; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE storestate ( + statename character(32) NOT NULL, + state text +); + + +-- +-- Name: trustlines; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE trustlines ( + accountid character varying(56) NOT NULL, + assettype integer NOT NULL, + issuer character varying(56) NOT NULL, + assetcode character varying(12) NOT NULL, + tlimit bigint NOT NULL, + balance bigint NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT trustlines_balance_check CHECK ((balance >= 0)), + CONSTRAINT trustlines_tlimit_check CHECK ((tlimit > 0)) +); + + +-- +-- Name: txfeehistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txfeehistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txchanges text NOT NULL, + CONSTRAINT txfeehistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: txhistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txhistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txbody text NOT NULL, + txresult text NOT NULL, + txmeta text NOT NULL, + CONSTRAINT txhistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Data for Name: accountdata; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO accounts VALUES ('GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 999999959999999600, 4, 0, NULL, '', 'AQAAAA==', 0, 2); +INSERT INTO accounts VALUES ('GAEDTJ4PPEFVW5XV2S7LUXBEHNQMX5Q2GM562RJGOQG7GVCE5H3HIB4V', 9999999900, 8589934593, 1, NULL, '', 'AQAAAA==', 0, 3); +INSERT INTO accounts VALUES ('GARSFJNXJIHO6ULUBK3DBYKVSIZE7SC72S5DYBCHU7DKL22UXKVD7MXP', 9999999900, 8589934593, 1, NULL, '', 'AQAAAA==', 0, 3); +INSERT INTO accounts VALUES ('GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 9999998900, 8589934603, 3, NULL, '', 'AQAAAA==', 0, 5); +INSERT INTO accounts VALUES ('GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 9999998200, 8589934610, 18, NULL, '', 'AQAAAA==', 0, 5); + + +-- +-- Data for Name: ban; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: ledgerheaders; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO ledgerheaders VALUES ('63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', '0000000000000000000000000000000000000000000000000000000000000000', '572a2e32ff248a07b0e70fd1f6d318c1facd20b6cc08c33d5775259868125a16', 1, 0, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXKi4y/ySKB7DnD9H20xjB+s0gtswIwz1XdSWYaBJaFgAAAAEN4Lazp2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAX14QAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('a6c02a236270e15442fef7cb1b74c7aeddef100ef52df2f70e0d4b41e706e97b', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', '3ff719adc5fe15a981719819684b39c18d49018e689d04a46db43c8d5ae42758', 2, 1508958270, 'AAAACGPZj1Nu5o0bJ7W4nyOvUxG3Vpok+vFAOtC1K2M7B76ZoFq33IYHWwlGYaJaMCjNeUfVmDLRL+zWmVJgMUZn8ukAAAAAWfDgPgAAAAIAAAAIAAAAAQAAAAgAAAAIAAAAAwAAJxAAAAAABtT+dvrMtMze04+pfz4Iczf0b9AofJVgLkcJjLI5W+k/9xmtxf4VqYFxmBloSznBjUkBjmidBKRttDyNWuQnWAAAAAIN4Lazp2QAAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('8e2937b73250308d8683c8d3697e0e92e26511b64ceacf3d7dff159913ab9023', 'a6c02a236270e15442fef7cb1b74c7aeddef100ef52df2f70e0d4b41e706e97b', 'dd6a2f31341bcfc92f03a30fe15bdb40bcf6624b388bab124d9c67090e4ea9b8', 3, 1508958271, 'AAAACKbAKiNicOFUQv73yxt0x67d7xAO9S3y9w4NS0HnBul7V9Veivfph6hwlLN7OL5zNksua9ErDGUqyUJMuYt0s/EAAAAAWfDgPwAAAAAAAAAAMw5eTWlu/Pu23yHeETTNdTzDD9jKFxFBKZildi0mmj/dai8xNBvPyS8Dow/hW9tAvPZiSziLqxJNnGcJDk6puAAAAAMN4Lazp2QAAAAAAAAAAAV4AAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('011b68ceba9c3b093733f9f7cbd12d9103753ed6554359c93eef5a9572764016', '8e2937b73250308d8683c8d3697e0e92e26511b64ceacf3d7dff159913ab9023', 'eba643795c50a54aa8088103f507d1142916fc193441bdace7fd7cdd1e74b6c4', 4, 1508958272, 'AAAACI4pN7cyUDCNhoPI02l+DpLiZRG2TOrPPX3/FZkTq5Aj0UC7ZSTd6Pfixb1n/8iHVA/xKVJOS16Hez5hjpZx4hkAAAAAWfDgQAAAAAAAAAAA8+IeycxQU782PpfLw48z19/NsgcbSScIBi4tGKRQOHHrpkN5XFClSqgIgQP1B9EUKRb8GTRBvazn/XzdHnS2xAAAAAQN4Lazp2QAAAAAAAAAAAiYAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('8a2734912f5ef678d44c38962aeb79069bd1a837fdfd4ccabebeaeb32c6536cb', '011b68ceba9c3b093733f9f7cbd12d9103753ed6554359c93eef5a9572764016', '0fab75dc39fb9a89a4e0a8f3033515ac0815b4ef373ef540bf614de0142e9dbc', 5, 1508958273, 'AAAACAEbaM66nDsJNzP598vRLZEDdT7WVUNZyT7vWpVydkAWkZ2ftF1/qUjOwNnl7dk/Gy4bUhutC2++7EkOKkn8zG8AAAAAWfDgQQAAAAAAAAAAvHlWgu/N1tkkTXnXETOnfzqpfmJhoXuhLbpFTPkS1C8Pq3XcOfuaiaTgqPMDNRWsCBW07zc+9UC/YU3gFC6dvAAAAAUN4Lazp2QAAAAAAAAAAA2sAAAAAAAAAAAAAAANAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); + + +-- +-- Data for Name: offers; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO offers VALUES ('GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 1, 1, 'EUR', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 1, 'USD', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 100000000, 1, 2, 0.5, 0, 5); +INSERT INTO offers VALUES ('GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 2, 1, 'EUR', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 1, 'USD', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 100000000, 1, 1, 1, 0, 5); +INSERT INTO offers VALUES ('GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 3, 1, '1', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 1, 'USD', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 200000000, 1, 1, 1, 0, 5); +INSERT INTO offers VALUES ('GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 4, 1, 'EUR', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 1, 'USD', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 100000000, 1, 2, 0.5, 0, 5); +INSERT INTO offers VALUES ('GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 5, 1, 'EUR', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 1, '1', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 200000000, 1, 1, 1, 0, 5); +INSERT INTO offers VALUES ('GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 6, 0, NULL, NULL, 1, 'USD', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 9599998900, 1, 10, 0.100000000000000006, 0, 5); +INSERT INTO offers VALUES ('GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 7, 1, '21', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 1, 'USD', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 300000000, 1, 1, 1, 0, 5); +INSERT INTO offers VALUES ('GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 8, 1, '22', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 1, '21', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 300000000, 1, 1, 1, 0, 5); +INSERT INTO offers VALUES ('GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 9, 1, 'EUR', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 1, '22', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 300000000, 1, 1, 1, 0, 5); +INSERT INTO offers VALUES ('GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 10, 1, '31', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 1, 'USD', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 400000000, 2, 1, 2, 0, 5); +INSERT INTO offers VALUES ('GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 11, 1, '32', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 1, '31', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 400000000, 2, 1, 2, 0, 5); +INSERT INTO offers VALUES ('GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 12, 1, '33', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 1, '32', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 400000000, 2, 1, 2, 0, 5); +INSERT INTO offers VALUES ('GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 13, 1, 'EUR', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 1, '33', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 400000000, 2, 1, 2, 0, 5); + + +-- +-- Data for Name: peers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: publishqueue; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: pubsub; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: scphistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scphistory VALUES ('GD7663H72HC4O6VRCM6OFRKB3PGZMUMHWWN4LHOL2Y37S6Z5Q6VF2HT5', 2, 'AAAAAP/vbP/Rxcd6sRM84sVB282WUYe1m8Wdy9Y3+Xs9h6pdAAAAAAAAAAIAAAACAAAAAQAAAEigWrfchgdbCUZholowKM15R9WYMtEv7NaZUmAxRmfy6QAAAABZ8OA+AAAAAgAAAAgAAAABAAAACAAAAAgAAAADAAAnEAAAAAAAAAABT+0r8YWdZJPzXZgesXLniRGH7ncTmd4VIjAQg7ydktcAAABAZN40qpVW0TUOMW5JHU9cQQJ0917x6xNVat6d0KJXxnHsQJZyRg8kW+4lLptB0GZ72Ps/Vp6LyL29g9LrWgtiCQ=='); +INSERT INTO scphistory VALUES ('GD7663H72HC4O6VRCM6OFRKB3PGZMUMHWWN4LHOL2Y37S6Z5Q6VF2HT5', 3, 'AAAAAP/vbP/Rxcd6sRM84sVB282WUYe1m8Wdy9Y3+Xs9h6pdAAAAAAAAAAMAAAACAAAAAQAAADBX1V6K9+mHqHCUs3s4vnM2Sy5r0SsMZSrJQky5i3Sz8QAAAABZ8OA/AAAAAAAAAAAAAAABT+0r8YWdZJPzXZgesXLniRGH7ncTmd4VIjAQg7ydktcAAABAVVgj4c9WatziKu5ypNeuDOVxcZ7G6YhQgSvHp7G9U5wk9bHZ0gs60Vn7w8eIe3h54jEcV41rofbqXBJZAx8BBg=='); +INSERT INTO scphistory VALUES ('GD7663H72HC4O6VRCM6OFRKB3PGZMUMHWWN4LHOL2Y37S6Z5Q6VF2HT5', 4, 'AAAAAP/vbP/Rxcd6sRM84sVB282WUYe1m8Wdy9Y3+Xs9h6pdAAAAAAAAAAQAAAACAAAAAQAAADDRQLtlJN3o9+LFvWf/yIdUD/EpUk5LXod7PmGOlnHiGQAAAABZ8OBAAAAAAAAAAAAAAAABT+0r8YWdZJPzXZgesXLniRGH7ncTmd4VIjAQg7ydktcAAABAv4o8mXFxC6h5wlVckW967BU8vIoFe2hPBL+mqiI5KcrWFWDt8kRGKhuNPGY+JjTQDQUlFItZbbESgPntXZ3+BQ=='); +INSERT INTO scphistory VALUES ('GD7663H72HC4O6VRCM6OFRKB3PGZMUMHWWN4LHOL2Y37S6Z5Q6VF2HT5', 5, 'AAAAAP/vbP/Rxcd6sRM84sVB282WUYe1m8Wdy9Y3+Xs9h6pdAAAAAAAAAAUAAAACAAAAAQAAADCRnZ+0XX+pSM7A2eXt2T8bLhtSG60Lb77sSQ4qSfzMbwAAAABZ8OBBAAAAAAAAAAAAAAABT+0r8YWdZJPzXZgesXLniRGH7ncTmd4VIjAQg7ydktcAAABA/1KuIIiGhRgrgE79ZmdlBKU+gXuHsVTxxUVNIa2IZFJZ6EBfHl6/BPl0FRNZ1DqFnU2WQGc62htkh0LPRuXRCg=='); + + +-- +-- Data for Name: scpquorums; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scpquorums VALUES ('4fed2bf1859d6493f35d981eb172e7891187ee771399de1522301083bc9d92d7', 5, 'AAAAAQAAAAEAAAAA/+9s/9HFx3qxEzzixUHbzZZRh7WbxZ3L1jf5ez2Hql0AAAAA'); + + +-- +-- Data for Name: signers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: storestate; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO storestate VALUES ('historyarchivestate ', '{ + "version": 1, + "server": "v0.6.3-66-gd66575cf", + "currentLedger": 5, + "currentBuckets": [ + { + "curr": "8cf2755056ca837e2988d30d4d97bf97523da41db279df3e2424d688bf3a4bea", + "next": { + "state": 0 + }, + "snap": "2580b683169444807ba7e3c34d619163bd6d6528726952c089c3aca8ef07f42d" + }, + { + "curr": "ef31a20a398ee73ce22275ea8177786bac54656f33dcc4f3fec60d55ddf163d9", + "next": { + "state": 1, + "output": "2580b683169444807ba7e3c34d619163bd6d6528726952c089c3aca8ef07f42d" + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + } + ] +}'); +INSERT INTO storestate VALUES ('databaseschema ', '5'); +INSERT INTO storestate VALUES ('forcescponnextlaunch ', 'false'); +INSERT INTO storestate VALUES ('lastclosedledger ', '8a2734912f5ef678d44c38962aeb79069bd1a837fdfd4ccabebeaeb32c6536cb'); +INSERT INTO storestate VALUES ('lastscpdata ', 'AAAAAgAAAAD/72z/0cXHerETPOLFQdvNllGHtZvFncvWN/l7PYeqXQAAAAAAAAAFAAAAA0/tK/GFnWST812YHrFy54kRh+53E5neFSIwEIO8nZLXAAAAAQAAADCRnZ+0XX+pSM7A2eXt2T8bLhtSG60Lb77sSQ4qSfzMbwAAAABZ8OBBAAAAAAAAAAAAAAABAAAAMJGdn7Rdf6lIzsDZ5e3ZPxsuG1IbrQtvvuxJDipJ/MxvAAAAAFnw4EEAAAAAAAAAAAAAAEBAGc5ymvBANcmHKi0TYvrxlne3/1V3wju7tRQe0EoWrhAl/UZPY23a7Xe76FKzPx0V5mW/BrnfejkiEmlpv2gJAAAAAP/vbP/Rxcd6sRM84sVB282WUYe1m8Wdy9Y3+Xs9h6pdAAAAAAAAAAUAAAACAAAAAQAAADCRnZ+0XX+pSM7A2eXt2T8bLhtSG60Lb77sSQ4qSfzMbwAAAABZ8OBBAAAAAAAAAAAAAAABT+0r8YWdZJPzXZgesXLniRGH7ncTmd4VIjAQg7ydktcAAABA/1KuIIiGhRgrgE79ZmdlBKU+gXuHsVTxxUVNIa2IZFJZ6EBfHl6/BPl0FRNZ1DqFnU2WQGc62htkh0LPRuXRCgAAAAEBG2jOupw7CTcz+ffL0S2RA3U+1lVDWck+71qVcnZAFgAAAA0AAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAABkAAAAAgAAABIAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAFFVVIAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAATMzAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAF9eEAAAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAUpgQacAAABAE94wXRHtUGAdgFbCZEFz2yMYx7weKi2hjccWBv/6CP7TGkAovmmsBJNGoRZbf19gUzjEvIsGS8/XC10edqmNDgAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAGQAAAACAAAADwAAAAAAAAAAAAAAAQAAAAAAAAADAAAAATMxAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAABVVNEAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAAX14QAAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAABSmBBpwAAAEBjgaaGUSK7vCSY5pLVZ/JiaEA1bpaOhIKkvF+9YdRL1PgEvEjr1AWVgM8fnkD6Juh2oMXNkfR0IACEfeimM/wOAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAAOAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAEyMgAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABHhowAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAFKYEGnAAAAQOn18OTylqpbRyiXNURKYg5fc1rW4P7OfdyzIhzEP6eD0gS+Se4UQMOw0zsvfC3dfS366KHEWRXB8qQLqQ7lLAsAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAABkAAAAAgAAAAsAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAAAAAABVVNEAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+QAAAAAAQAAAAoAAAAAAAAAAAAAAAAAAAAB+wFaewAAAEBxsXvVr8aOj0em40ewGlSRYqx0qdG9HvfsXJmg+cIGUIod8LK+39iSDc8bVJK2xYilv3NQH9dkWO+DCLsXrPAHAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAAKAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAX14QAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAH7AVp7AAAAQDcsuEiZkPgFoOKVqaXf7q1n198y1BZNFYjn1vVH5bxadN9DKREt/ULptZ/3gDYD/fiw5VJIiJzGy+r8ZWYeDg4AAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAABkAAAAAgAAAAoAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAExAAAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAC+vCAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAUpgQacAAABAnSjo3YmTn6LRuQgtsTdROJSnJm84ks28BFfmBiSjQoK5p3Sfjnomb0KrGvux6W4gVKg1vEIk6sLniTJpO47UCQAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAGQAAAACAAAADAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAATIxAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAABVVNEAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAAR4aMAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAABSmBBpwAAAEA0+IEvTfBUOHMmI6DqhTIZ94hKj61DvH3HNFwFG37gWLnDSmJkree5wX0bTsyFAoTpSorcVdftJQ2Kd/Hz7+QMAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAAJAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAX14QAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAH7AVp7AAAAQKYsEVsOUuHcbex7veV09JgjxkZyqr2FcMzTYGPS+DFi3FhbhKgQJQnhi+dGRrcbOexMx5umUBXRodtHpPVsNgEAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAABkAAAAAgAAABEAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAEzMwAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAATMyAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAF9eEAAAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAUpgQacAAABAr3DtWINfbMgrmE6l11ZNBSGyjpmZ1UJ/4zcTGsIAms3OlVodoeBg6ddpGM/1GsfHObq7/2lv5RZapFq3DEcHCQAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAGQAAAACAAAAEAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAATMyAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAABMzEAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAAX14QAAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAABSmBBpwAAAEDYHCXE15zx1HsT56uFWNtwlcJPMyrnJ2qO6dC32bUC4Sa/D0bwP4loE6Gmgj8W91gxQAvOL0OnRccybFzHQv8HAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAALAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAExAAAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAvrwgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAFKYEGnAAAAQNFl2eV/OTWdcSDTd/MytqUjZaSAXFEX1cRK1Ba5PUrHlxO4WdopI8D0KjJo195Xy85Dqx+iTCEM0Xr0/lGM6QsAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAABkAAAAAgAAAA0AAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAEyMgAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAATIxAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAEeGjAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAUpgQacAAABAwMQMpenrTl3+Kb0+3B6efXdhJRooqNq3swMGc0rEedDk4VjUv3KzO/iqjsDHg2p34H1h+8rHMbDiNAZD1R06CAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAGQAAAACAAAACQAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAUVVUgAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAABVVNEAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAAF9eEAAAAAAQAAAAIAAAAAAAAAAAAAAAAAAAABSmBBpwAAAEB2DEjY29H/q+GdKX88npMZM5Fd52r+yPTCD18j3ZZz09CjOZe0adGhbKhVyTwAs4IDKkya1sWOZPhz+ngqxvgIAAAAAQAAAAEAAAABAAAAAP/vbP/Rxcd6sRM84sVB282WUYe1m8Wdy9Y3+Xs9h6pdAAAAAA=='); + + +-- +-- Data for Name: trustlines; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO trustlines VALUES ('GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 1, 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 'USD', 9223372036854775807, 0, 1, 3); +INSERT INTO trustlines VALUES ('GAEDTJ4PPEFVW5XV2S7LUXBEHNQMX5Q2GM562RJGOQG7GVCE5H3HIB4V', 1, 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 'EUR', 9223372036854775807, 0, 1, 3); +INSERT INTO trustlines VALUES ('GARSFJNXJIHO6ULUBK3DBYKVSIZE7SC72S5DYBCHU7DKL22UXKVD7MXP', 1, 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 'USD', 9223372036854775807, 50000000000, 1, 4); +INSERT INTO trustlines VALUES ('GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 1, 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 'EUR', 9223372036854775807, 50000000000, 1, 4); +INSERT INTO trustlines VALUES ('GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 1, 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', '1', 9223372036854775807, 50000000000, 1, 4); +INSERT INTO trustlines VALUES ('GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 1, 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', '21', 9223372036854775807, 50000000000, 1, 4); +INSERT INTO trustlines VALUES ('GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 1, 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', '22', 9223372036854775807, 50000000000, 1, 4); +INSERT INTO trustlines VALUES ('GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 1, 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', '31', 9223372036854775807, 50000000000, 1, 4); +INSERT INTO trustlines VALUES ('GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 1, 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', '32', 9223372036854775807, 50000000000, 1, 4); +INSERT INTO trustlines VALUES ('GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 1, 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', '33', 9223372036854775807, 50000000000, 1, 4); + + +-- +-- Data for Name: txfeehistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txfeehistory VALUES ('9ff6b71bba6b24c8afc6ca53b12702566d40e9c8abf9b8439e9a3b08300e4188', 2, 1, 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('afc983f7f88809442fc616c1ce425b6c8cf6d8f7493b33ff6a809003a845ec16', 2, 2, 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/84AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('5c71f1b198a9be6b1c7e36737bb3e32c7f258530573bc11f20827d0913ba1433', 2, 3, 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/7UAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('06445dc688fc2e583567e4a4940440d87cf4877a57af306ece7c64f1f061def4', 2, 4, 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/5wAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('d76450086b21a849e31a168577a9c112a913c3317a3f0c1a80c6cb43e16cf348', 3, 1, 'AAAAAgAAAAMAAAACAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('cdb0ce2cef61c5cab6566c1c65c5bc632f943b2bd43cfdd80984a66994cb7484', 3, 2, 'AAAAAgAAAAMAAAACAAAAAAAAAAAIOaePeQtbdvXUvrpcJDtgy/YaMzvtRSZ0DfNUROn2dAAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAIOaePeQtbdvXUvrpcJDtgy/YaMzvtRSZ0DfNUROn2dAAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('563ab1cf87e65377e015813499a6027081e63177a9ef35a0c5e0c0c2a5a918f7', 3, 3, 'AAAAAgAAAAMAAAACAAAAAAAAAAAjIqW3Sg7vUXQKtjDhVZIyT8hf1Lo8BEenxqXrVLqqPwAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAjIqW3Sg7vUXQKtjDhVZIyT8hf1Lo8BEenxqXrVLqqPwAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('ffe9db595b5e8be4d54b738e78652704dd96ad8729bc6b6adc17c300162f2c98', 3, 4, 'AAAAAQAAAAEAAAADAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC+M4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('1a1dc052649f98314a12a17911d3868523d7806887d49a52749221b17cd713ce', 3, 5, 'AAAAAQAAAAEAAAADAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC+LUAAAAAgAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('6bfdfd3aeff0f617532caf59ee28fe60b7c20ffa6574e08beecda9a890d8f2b2', 3, 6, 'AAAAAQAAAAEAAAADAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC+JwAAAAAgAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('b48686858ee595141fb7d5d9999d5d40b78cacc4e27092e48824c8a0ac01370e', 3, 7, 'AAAAAQAAAAEAAAADAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC+IMAAAAAgAAAAUAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('e6315711266014d425b16b339bba063ad1b8d8823b5dfb8cd3399644754be459', 3, 8, 'AAAAAQAAAAEAAAADAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC+GoAAAAAgAAAAYAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('344a58add4f45245924cef37386866e0fd10f38f797615551c59fc0b5521e517', 3, 9, 'AAAAAQAAAAEAAAADAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC+FEAAAAAgAAAAcAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('254f4bd646c27c730501f50bf5c9543b3510c10f8b39152b74a75cd78ec5aa7a', 3, 10, 'AAAAAQAAAAEAAAADAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC+DgAAAAAgAAAAgAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('a3fc459ac9baa9c327254ae6eb182fb60dd597ac3761159393de1564f59efa77', 4, 1, 'AAAAAgAAAAMAAAACAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('9dc1746a8a1fae0abf8756d189c3d421bb5b5a0d5c0f8a3834da6d6aae8311c7', 4, 2, 'AAAAAQAAAAEAAAAEAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+M4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('335970f27c1141c865b9a77189ffe71591d13c49c8d62d57239228562bc43cf2', 4, 3, 'AAAAAQAAAAEAAAAEAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+LUAAAAAgAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('63fd31091c6a3333a8ee23297c255e1d899a275519c48defd3ce0708a904c12b', 4, 4, 'AAAAAQAAAAEAAAAEAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+JwAAAAAgAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('9b28e1c8e857b0efd958c70c36d777f36e053d4f0d2073d3276c18cfc85f9249', 4, 5, 'AAAAAQAAAAEAAAAEAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+IMAAAAAgAAAAUAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('8208aa13fc4d71b7ae079072b3a3af1bfd8806ba6fd354d3fcbd127b7c0fe232', 4, 6, 'AAAAAQAAAAEAAAAEAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+GoAAAAAgAAAAYAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('7c663b4fe86794c57b4f3d718b5048be1aa1e084e52f3468dd470829a057cfeb', 4, 7, 'AAAAAQAAAAEAAAAEAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+FEAAAAAgAAAAcAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('57d54e294ca2d6206226a8950976bbec3852a05f977c895b68510e329ed1cf9b', 4, 8, 'AAAAAQAAAAEAAAAEAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+DgAAAAAgAAAAgAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('a11c4e1aada500470b2f9519a3797f6cfb70f8a776869fbf4b4b516b4d2e8133', 5, 1, 'AAAAAgAAAAMAAAADAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC+DgAAAAAgAAAAgAAAAIAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC+B8AAAAAgAAAAkAAAAIAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('b5e88105a360ca97acb39a2636f7cf5cdf7a901acd0d4be9c8091ba227e0452c', 5, 2, 'AAAAAgAAAAMAAAAEAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+DgAAAAAgAAAAgAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+B8AAAAAgAAAAkAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('4781659c29cabdfdc55dd8d007ddd1540f6fb45f3b4ce648e45c32257e47c4a6', 5, 3, 'AAAAAQAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC+AYAAAAAgAAAAoAAAAIAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('fac63542d996fcba0e6bcb723ca94b5a3b415b36e4eeac64c881dfd61d478fe7', 5, 4, 'AAAAAQAAAAEAAAAFAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+AYAAAAAgAAAAoAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('8915d7a8cc6be26c19195a736b535d5d7bba506f267267449787240bae9c1c80', 5, 5, 'AAAAAQAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC9+0AAAAAgAAAAsAAAAIAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('0e12e13702a9573c885291f36b36561c288d8fc4d2f92dcf484132b6c8d408bf', 5, 6, 'AAAAAQAAAAEAAAAFAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC9+0AAAAAgAAAAsAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('b9925fafee10dce3211337718217a7a0691ca60d9f67c56d9a3ec823acd0c95e', 5, 7, 'AAAAAQAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC99QAAAAAgAAAAwAAAAIAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('a89dc0b7e9e01af735994cb66cf775bfd37fb0e61225254294c00627f2cfe91a', 5, 8, 'AAAAAQAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC97sAAAAAgAAAA0AAAAIAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('c92bb5f0ce6cbf74949af7b6404e0aae1839dcb174ca07b86b0690386b488e30', 5, 9, 'AAAAAQAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC96IAAAAAgAAAA4AAAAIAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('8af50985527a5383992cef73235c1f9a650aa613984936afd47b72bf0b23d07a', 5, 10, 'AAAAAQAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC94kAAAAAgAAAA8AAAAIAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('487644504432e9323eace0dd116cbb3218f2801391a91b2646cb67d797897abf', 5, 11, 'AAAAAQAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC93AAAAAAgAAABAAAAAIAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('a34de60105499cdc69a3020fc67fa40229cd2fba20efa64e7e3530e6dcb5a4f4', 5, 12, 'AAAAAQAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC91cAAAAAgAAABEAAAAIAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('94e908960415a58313962f8319cc695922cf0a45b56b3b6be9b81778134b9b81', 5, 13, 'AAAAAQAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC9z4AAAAAgAAABIAAAAIAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); + + +-- +-- Data for Name: txhistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txhistory VALUES ('9ff6b71bba6b24c8afc6ca53b12702566d40e9c8abf9b8439e9a3b08300e4188', 2, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAACVAvkAAAAAAAAAAABVvwF9wAAAEC96/+BcbMflvMQfFAQTbAKGu+6BR1M6SG/KVzTJSlIY8ovSVywuthk9dOW9jm23siTiIZE0IAl84wK83gnAcEK', 'n/a3G7prJMivxspTsScCVm1A6cir+bhDnpo7CDAOQYgAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2sVNYGnAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('afc983f7f88809442fc616c1ce425b6c8cf6d8f7493b33ff6a809003a845ec16', 2, 2, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAIyKlt0oO71F0CrYw4VWSMk/IX9S6PARHp8al61S6qj8AAAACVAvkAAAAAAAAAAABVvwF9wAAAECXh9/+55FmQjeMx9IMQfBn42fYY1fKAT/gb+e7P3jdSMCKiKhwoxj1bub733a2XuxPETpe79uzatzm8/KI0asI', 'r8mD9/iICUQvxhbBzkJbbIz22PdJOzP/aoCQA6hF7BYAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAACMipbdKDu9RdAq2MOFVkjJPyF/UujwER6fGpetUuqo/AAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rv9MNnAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('5c71f1b198a9be6b1c7e36737bb3e32c7f258530573bc11f20827d0913ba1433', 2, 3, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAACDmnj3kLW3b11L66XCQ7YMv2GjM77UUmdA3zVETp9nQAAAACVAvkAAAAAAAAAAABVvwF9wAAAEBdnUBKCV3HlHOqp5iNLsP8auaNCvxDeBp+0C+lwPYUNrzRALQRDJDWuKfExmsRrEnW8LKJbMdeW9ilLaEc2lAO', 'XHHxsZipvmscfjZze7PjLH8lhTBXO8EfIIJ9CRO6FDMAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAAg5p495C1t29dS+ulwkO2DL9hozO+1FJnQN81RE6fZ0AAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rKtAUnAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('06445dc688fc2e583567e4a4940440d87cf4877a57af306ece7c64f1f061def4', 2, 4, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAAACVAvkAAAAAAAAAAABVvwF9wAAAEAfH3XJo+xZ8adtaA2PZZ3T0kM57CXfxGl+JItnC6nP9LziLQMKgl1EEhuiPqfjn14KK5WfEv0E0op5BJFAkd8O', 'BkRdxoj8Llg1Z+SklARA2Hz0h3pXrzBuznxk8fBh3vQAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2qlc0bnAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('d76450086b21a849e31a168577a9c112a913c3317a3f0c1a80c6cb43e16cf348', 3, 1, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFae3//////////AAAAAAAAAAFKYEGnAAAAQC0FIi0RCGDQ0EuuBT5Kg2XxzHxLXRrCxYGj+hY7/sB2Y+JtWyWRjlq3DYL4ajSFE8Na1KKm42oM/gjZUx+1PQU=', '12RQCGshqEnjGhaFd6nBEqkTwzF6PwwagMbLQ+Fs80gAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAlQL4OAAAAACAAAACAAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('cdb0ce2cef61c5cab6566c1c65c5bc632f943b2bd43cfdd80984a66994cb7484', 3, 2, 'AAAAAAg5p495C1t29dS+ulwkO2DL9hozO+1FJnQN81RE6fZ0AAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFae3//////////AAAAAAAAAAFE6fZ0AAAAQNSm/BIxP9LwabXoBKigrTG85o/PUp6VOWh/ne6mMaT5hvehDUvbRHQghJ/SZTDfjD+FPPjbe3nzcJEun1EX4g0=', 'zbDOLO9hxcq2VmwcZcW8Yy+UOyvUPP3YCYSmaZTLdIQAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAAg5p495C1t29dS+ulwkO2DL9hozO+1FJnQN81RE6fZ0AAAAAUVVUgAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAg5p495C1t29dS+ulwkO2DL9hozO+1FJnQN81RE6fZ0AAAAAlQL45wAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('563ab1cf87e65377e015813499a6027081e63177a9ef35a0c5e0c0c2a5a918f7', 3, 3, 'AAAAACMipbdKDu9RdAq2MOFVkjJPyF/UujwER6fGpetUuqo/AAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFae3//////////AAAAAAAAAAFUuqo/AAAAQKblh64EFK4tp2+xohOkNaSdfMFDId/y4nop7dVmZRsbe4f/eVCpUrKQCRWLJ4bXzMpPTOTsjHRIxOa8WekP+ww=', 'Vjqxz4fmU3fgFYE0maYCcIHmMXep7zWgxeDAwqWpGPcAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAACMipbdKDu9RdAq2MOFVkjJPyF/UujwER6fGpetUuqo/AAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAACMipbdKDu9RdAq2MOFVkjJPyF/UujwER6fGpetUuqo/AAAAAlQL45wAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('ffe9db595b5e8be4d54b738e78652704dd96ad8729bc6b6adc17c300162f2c98', 3, 4, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFae3//////////AAAAAAAAAAFKYEGnAAAAQNdoCZqF5REF4OZCu65uUph5WUYmUKAcNCwgaJe4Mbakx92kViEe9kaJ13EhVOP7U+yjno/L1v1wpTaTa7YDiAc=', '/+nbWVtei+TVS3OOeGUnBN2WrYcpvGtq3BfDABYvLJgAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAUVVUgAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAlQL4OAAAAACAAAACAAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('1a1dc052649f98314a12a17911d3868523d7806887d49a52749221b17cd713ce', 3, 5, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABMQAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFae3//////////AAAAAAAAAAFKYEGnAAAAQMXWsXqylJxEXU0J+7PHlS/xBkw6/LXU23Q3sv7ew9z8KZZJbFEqDgrh340V57e/Xo1CIOdcRWHYpSZ0YZf5jg0=', 'Gh3AUmSfmDFKEqF5EdOGhSPXgGiH1JpSdJIhsXzXE84AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATEAAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAlQL4OAAAAACAAAACAAAAAMAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('6bfdfd3aeff0f617532caf59ee28fe60b7c20ffa6574e08beecda9a890d8f2b2', 3, 6, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABMjEAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFae3//////////AAAAAAAAAAFKYEGnAAAAQI7tUQkz1Dedybs2Y9fYkjeZMkPxYJyQ21NNYmdl4rV3nI+pu3ymAiPtqrLWk21sXWSh8//1rx4sXH0aG+faQQ0=', 'a/39Ou/w9hdTLK9Z7ij+YLfCD/pldOCL7s2pqJDY8rIAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATIxAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAlQL4OAAAAACAAAACAAAAAQAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('b48686858ee595141fb7d5d9999d5d40b78cacc4e27092e48824c8a0ac01370e', 3, 7, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABMjIAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFae3//////////AAAAAAAAAAFKYEGnAAAAQKacYiD/dSVGNuCAcHUal15ITf0UzHebfNWNudVk5DPvnxFMOqXBkxAVOyVqqXKslFAtco/hI9WNB5yaf2i8eQU=', 'tIaGhY7llRQft9XZmZ1dQLeMrMTicJLkiCTIoKwBNw4AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATIyAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAlQL4OAAAAACAAAACAAAAAUAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('e6315711266014d425b16b339bba063ad1b8d8823b5dfb8cd3399644754be459', 3, 8, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAAGAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABMzEAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFae3//////////AAAAAAAAAAFKYEGnAAAAQI84TOk9J4ISBmnHAPy5KLkGnho/BjBWrZuYFB9I/6Z6QI9B25/mQw0EUOxBoX6X9q74a48TpIrf6n9LgonC8ws=', '5jFXESZgFNQlsWszm7oGOtG42II7XfuM0zmWRHVL5FkAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATMxAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAlQL4OAAAAACAAAACAAAAAYAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('344a58add4f45245924cef37386866e0fd10f38f797615551c59fc0b5521e517', 3, 9, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAAHAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABMzIAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFae3//////////AAAAAAAAAAFKYEGnAAAAQIYa/VDKchzI2ce0Hi7EZejOglDpZLsh3oLRGRkitrOM6zm9hJSZEfPZGPY/9+b14+fNnAyiHXGuVJK2ybiTJgU=', 'NEpYrdT0UkWSTO83OGhm4P0Q8495dhVVHFn8C1Uh5RcAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATMyAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAlQL4OAAAAACAAAACAAAAAcAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('254f4bd646c27c730501f50bf5c9543b3510c10f8b39152b74a75cd78ec5aa7a', 3, 10, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABMzMAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFae3//////////AAAAAAAAAAFKYEGnAAAAQKAZjNrWsdz1Pve6US/r4vC01x+rDl62xDI2NxieKesGxMS+yIs4Rn39O6iWlApGqGJ5LlC7QRidIVWIaF8V6gA=', 'JU9L1kbCfHMFAfUL9clUOzUQwQ+LORUrdKdc147FqnoAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATMzAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAlQL4OAAAAACAAAACAAAAAgAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('a3fc459ac9baa9c327254ae6eb182fb60dd597ac3761159393de1564f59efa77', 4, 1, 'AAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAIyKlt0oO71F0CrYw4VWSMk/IX9S6PARHp8al61S6qj8AAAABVVNEAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAukO3QAAAAAAAAAAAH7AVp7AAAAQB0rZ3swcCS/5dUtKqTdrBYxUjI6b9C0K9bdynGsnTMDO4wLsV8IOjO+ZrSBXt9FUQHlTKgHRE5ydrNL2f4eRQM=', 'o/xFmsm6qcMnJUrm6xgvtg3Vl6w3YRWTk94VZPWe+ncAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAACMipbdKDu9RdAq2MOFVkjJPyF/UujwER6fGpetUuqo/AAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAACMipbdKDu9RdAq2MOFVkjJPyF/UujwER6fGpetUuqo/AAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAALpDt0AH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('9dc1746a8a1fae0abf8756d189c3d421bb5b5a0d5c0f8a3834da6d6aae8311c7', 4, 2, 'AAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAukO3QAAAAAAAAAAAH7AVp7AAAAQC5RCYrBzLMJMo9N+MYClr/hpgXNaLNAOBtG59qk+qyavtT5Euhsa+X+ukdhYkJrWJ+Hh4ngX/1WO1SpE8q/Bws=', 'ncF0aoofrgq/h1bRicPUIbtbWg1cD4o4NNptaq6DEccAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAUVVUgAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAUVVUgAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAALpDt0AH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('335970f27c1141c865b9a77189ffe71591d13c49c8d62d57239228562bc43cf2', 4, 3, 'AAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAAABMQAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAukO3QAAAAAAAAAAAH7AVp7AAAAQJwPDiB+yuKFlFstdLMotpJlApsm34y8aJSlr1PjJEUi6fz6FucRMktKYHhJMINqUGzzm0qEwHesc6Uo1wwRygc=', 'M1lw8nwRQchluadxif/nFZHRPEnI1i1XI5IoVivEPPIAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATEAAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATEAAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAALpDt0AH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('63fd31091c6a3333a8ee23297c255e1d899a275519c48defd3ce0708a904c12b', 4, 4, 'AAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAAABMjEAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAukO3QAAAAAAAAAAAH7AVp7AAAAQBqkEspJ7xLLBgXnC77mo+US4DBjZsB89rAXQO3zmcyH5qEc4nf/D4DMS8R1nHf8c8staaUV3/S1dpr8AR93CQA=', 'Y/0xCRxqMzOo7iMpfCVeHYmaJ1UZxI3v084HCKkEwSsAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATIxAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATIxAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAALpDt0AH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('9b28e1c8e857b0efd958c70c36d777f36e053d4f0d2073d3276c18cfc85f9249', 4, 5, 'AAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAAABMjIAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAukO3QAAAAAAAAAAAH7AVp7AAAAQPtRQAtUfiEmaZWw4ux/nbuh8y8NoG8mBwPEyFcqXHD2+/LrQ5TA6OUcovIB48cu5wlE8S23KIfYK4nE1clR+gw=', 'myjhyOhXsO/ZWMcMNtd3824FPU8NIHPTJ2wYz8hfkkkAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATIyAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATIyAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAALpDt0AH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('8208aa13fc4d71b7ae079072b3a3af1bfd8806ba6fd354d3fcbd127b7c0fe232', 4, 6, 'AAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAAGAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAAABMzEAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAukO3QAAAAAAAAAAAH7AVp7AAAAQMzLClp/m92NuPEoN1e7F87rGGHpCoXCIrw8t9cd8tC3ukKYQViHyj2F/X0Mu83o/ooo5cXpxLyn9IbZZXt+CgU=', 'ggiqE/xNcbeuB5Bys6OvG/2IBrpv01TT/L0Se3wP4jIAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATMxAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATMxAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAALpDt0AH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('7c663b4fe86794c57b4f3d718b5048be1aa1e084e52f3468dd470829a057cfeb', 4, 7, 'AAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAAHAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAAABMzIAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAukO3QAAAAAAAAAAAH7AVp7AAAAQPYL/L7JhjheV0aToVoB98Iuwa4Z3rcSsuf4zY0ndS8v2fy1mDzGOuS4n0Fwdcdhzy77qOdmFV3kSsR75YqLawY=', 'fGY7T+hnlMV7Tz1xi1BIvhqh4ITlLzRo3UcIKaBXz+sAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATMyAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATMyAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAALpDt0AH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('57d54e294ca2d6206226a8950976bbec3852a05f977c895b68510e329ed1cf9b', 4, 8, 'AAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAAABMzMAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAukO3QAAAAAAAAAAAH7AVp7AAAAQDZLOY+f8aVbrWmcdsUz5KDWGikLBfYEESNyeF/4BlFppWpejMrS36byCy2yScN9zEhx5dZgVumSfp/bthUYbwM=', 'V9VOKUyi1iBiJqiVCXa77DhSoF+XfIlbaFEOMp7Rz5sAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATMzAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATMzAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAALpDt0AH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('a11c4e1aada500470b2f9519a3797f6cfb70f8a776869fbf4b4b516b4d2e8133', 5, 1, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAAJAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAX14QAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAFKYEGnAAAAQHYMSNjb0f+r4Z0pfzyekxkzkV3nav7I9MIPXyPdlnPT0KM5l7Rp0aFsqFXJPACzggMqTJrWxY5k+HP6eCrG+Ag=', 'oRxOGq2lAEcLL5UZo3l/bPtw+Kd2hp+/S0tRa00ugTMAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAAAAAAAAAQAAAAFFVVIAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAABfXhAAAAAAEAAAACAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAAEAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAX14QAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC9z4AAAAAgAAABIAAAAJAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('b5e88105a360ca97acb39a2636f7cf5cdf7a901acd0d4be9c8091ba227e0452c', 5, 2, 'AAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAAJAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAX14QAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAH7AVp7AAAAQKYsEVsOUuHcbex7veV09JgjxkZyqr2FcMzTYGPS+DFi3FhbhKgQJQnhi+dGRrcbOexMx5umUBXRodtHpPVsNgE=', 'teiBBaNgypess5omNvfPXN96kBrNDUvpyAkboifgRSwAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAgAAAAFFVVIAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAABfXhAAAAAAEAAAABAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAAAAAIAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAX14QAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC9+0AAAAAgAAAAsAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('4781659c29cabdfdc55dd8d007ddd1540f6fb45f3b4ce648e45c32257e47c4a6', 5, 3, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAAKAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABMQAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAvrwgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAFKYEGnAAAAQJ0o6N2Jk5+i0bkILbE3UTiUpyZvOJLNvARX5gYko0KCuad0n456Jm9Cqxr7seluIFSoNbxCJOrC54kyaTuO1Ak=', 'R4FlnCnKvf3FXdjQB93RVA9vtF87TOZI5FwyJX5HxKYAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAAAAAAAAAwAAAAExAAAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAC+vCAAAAAAEAAAABAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAAMAAAABMQAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAvrwgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC9z4AAAAAgAAABIAAAAKAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('fac63542d996fcba0e6bcb723ca94b5a3b415b36e4eeac64c881dfd61d478fe7', 5, 4, 'AAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAAKAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAX14QAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAH7AVp7AAAAQDcsuEiZkPgFoOKVqaXf7q1n198y1BZNFYjn1vVH5bxadN9DKREt/ULptZ/3gDYD/fiw5VJIiJzGy+r8ZWYeDg4=', '+sY1QtmW/LoOa8tyPKlLWjtBWzbk7qxkyIHf1h1Hj+cAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAABAAAAAFFVVIAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAABfXhAAAAAAEAAAACAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAAAAAQAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAX14QAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC9+0AAAAAgAAAAsAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('8915d7a8cc6be26c19195a736b535d5d7bba506f267267449787240bae9c1c80', 5, 5, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAALAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAExAAAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAvrwgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAFKYEGnAAAAQNFl2eV/OTWdcSDTd/MytqUjZaSAXFEX1cRK1Ba5PUrHlxO4WdopI8D0KjJo195Xy85Dqx+iTCEM0Xr0/lGM6Qs=', 'iRXXqMxr4mwZGVpza1NdXXu6UG8mcmdEl4ckC66cHIAAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAAAAAAAABQAAAAFFVVIAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAATEAAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAC+vCAAAAAAEAAAABAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAAUAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAExAAAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAvrwgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC9z4AAAAAgAAABIAAAALAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('0e12e13702a9573c885291f36b36561c288d8fc4d2f92dcf484132b6c8d408bf', 5, 6, 'AAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAALAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAACVAvkAAAAAAEAAAAKAAAAAAAAAAAAAAAAAAAAAfsBWnsAAABAcbF71a/Gjo9HpuNHsBpUkWKsdKnRvR737FyZoPnCBlCKHfCyvt/Ykg3PG1SStsWIpb9zUB/XZFjvgwi7F6zwBw==', 'DhLhNwKpVzyIUpHzazZWHCiNj8TS+S3PSEEytsjUCL8AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAABgAAAAAAAAABVVNEAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAI8NFu0AAAAAQAAAAoAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAAAAAYAAAAAAAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAACPDRbtAAAAAEAAAAKAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAlQL37QAAAACAAAACwAAAAMAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('b9925fafee10dce3211337718217a7a0691ca60d9f67c56d9a3ec823acd0c95e', 5, 7, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAAMAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABMjEAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABHhowAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAFKYEGnAAAAQDT4gS9N8FQ4cyYjoOqFMhn3iEqPrUO8fcc0XAUbfuBYucNKYmSt57nBfRtOzIUChOlKitxV1+0lDYp38fPv5Aw=', 'uZJfr+4Q3OMhEzdxghenoGkcpg2fZ8Vtmj7II6zQyV4AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAAAAAAAABwAAAAEyMQAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAEeGjAAAAAAEAAAABAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAAcAAAABMjEAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABHhowAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC9z4AAAAAgAAABIAAAAMAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('a89dc0b7e9e01af735994cb66cf775bfd37fb0e61225254294c00627f2cfe91a', 5, 8, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAANAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABMjIAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAEyMQAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABHhowAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAFKYEGnAAAAQMDEDKXp605d/im9Ptwenn13YSUaKKjat7MDBnNKxHnQ5OFY1L9yszv4qo7Ax4Nqd+B9YfvKxzGw4jQGQ9UdOgg=', 'qJ3At+ngGvc1mUy2bPd1v9N/sOYSJSVClMAGJ/LP6RoAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAAAAAAAACAAAAAEyMgAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAATIxAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAEeGjAAAAAAEAAAABAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAAgAAAABMjIAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAEyMQAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABHhowAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC9z4AAAAAgAAABIAAAANAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('c92bb5f0ce6cbf74949af7b6404e0aae1839dcb174ca07b86b0690386b488e30', 5, 9, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAAOAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAEyMgAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABHhowAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAFKYEGnAAAAQOn18OTylqpbRyiXNURKYg5fc1rW4P7OfdyzIhzEP6eD0gS+Se4UQMOw0zsvfC3dfS366KHEWRXB8qQLqQ7lLAs=', 'ySu18M5sv3SUmve2QE4Krhg53LF0yge4awaQOGtIjjAAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAAAAAAAACQAAAAFFVVIAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAATIyAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAEeGjAAAAAAEAAAABAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAAkAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAEyMgAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABHhowAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC9z4AAAAAgAAABIAAAAOAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('8af50985527a5383992cef73235c1f9a650aa613984936afd47b72bf0b23d07a', 5, 10, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAAPAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABMzEAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABfXhAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAFKYEGnAAAAQGOBpoZRIru8JJjmktVn8mJoQDVulo6EgqS8X71h1EvU+AS8SOvUBZWAzx+eQPom6Hagxc2R9HQgAIR96KYz/A4=', 'ivUJhVJ6U4OZLO9zI1wfmmUKphOYSTav1Htyvwsj0HoAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAAAAAAAACgAAAAEzMQAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAF9eEAAAAAAIAAAABAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAAoAAAABMzEAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABfXhAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC9z4AAAAAgAAABIAAAAPAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('487644504432e9323eace0dd116cbb3218f2801391a91b2646cb67d797897abf', 5, 11, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAAQAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABMzIAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAEzMQAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABfXhAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAFKYEGnAAAAQNgcJcTXnPHUexPnq4VY23CVwk8zKucnao7p0LfZtQLhJr8PRvA/iWgToaaCPxb3WDFAC84vQ6dFxzJsXMdC/wc=', 'SHZEUEQy6TI+rODdEWy7MhjygBORqRsmRstn15eJer8AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAAAAAAAACwAAAAEzMgAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAATMxAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAF9eEAAAAAAIAAAABAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAAsAAAABMzIAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAEzMQAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABfXhAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC9z4AAAAAgAAABIAAAAQAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('a34de60105499cdc69a3020fc67fa40229cd2fba20efa64e7e3530e6dcb5a4f4', 5, 12, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAARAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABMzMAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAEzMgAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABfXhAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAFKYEGnAAAAQK9w7ViDX2zIK5hOpddWTQUhso6ZmdVCf+M3ExrCAJrNzpVaHaHgYOnXaRjP9RrHxzm6u/9pb+UWWqRatwxHBwk=', 'o03mAQVJnNxpowIPxn+kAinNL7og76ZOfjUw5ty1pPQAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAAAAAAAADAAAAAEzMwAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAATMyAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAF9eEAAAAAAIAAAABAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAAwAAAABMzMAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAEzMgAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABfXhAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC9z4AAAAAgAAABIAAAARAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('94e908960415a58313962f8319cc695922cf0a45b56b3b6be9b81778134b9b81', 5, 13, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAASAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAEzMwAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABfXhAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAFKYEGnAAAAQBPeMF0R7VBgHYBWwmRBc9sjGMe8HiotoY3HFgb/+gj+0xpAKL5prASTRqEWW39fYFM4xLyLBkvP1wtdHnapjQ4=', 'lOkIlgQVpYMTli+DGcxpWSLPCkW1aztr6bgXeBNLm4EAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAAAAAAAADQAAAAFFVVIAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAATMzAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAF9eEAAAAAAIAAAABAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAA0AAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAEzMwAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABfXhAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC9z4AAAAAgAAABIAAAASAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); + + +-- +-- Name: accountdata accountdata_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accountdata + ADD CONSTRAINT accountdata_pkey PRIMARY KEY (accountid, dataname); + + +-- +-- Name: accounts accounts_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accounts + ADD CONSTRAINT accounts_pkey PRIMARY KEY (accountid); + + +-- +-- Name: ban ban_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ban + ADD CONSTRAINT ban_pkey PRIMARY KEY (nodeid); + + +-- +-- Name: ledgerheaders ledgerheaders_ledgerseq_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_ledgerseq_key UNIQUE (ledgerseq); + + +-- +-- Name: ledgerheaders ledgerheaders_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_pkey PRIMARY KEY (ledgerhash); + + +-- +-- Name: offers offers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY offers + ADD CONSTRAINT offers_pkey PRIMARY KEY (offerid); + + +-- +-- Name: peers peers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY peers + ADD CONSTRAINT peers_pkey PRIMARY KEY (ip, port); + + +-- +-- Name: publishqueue publishqueue_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY publishqueue + ADD CONSTRAINT publishqueue_pkey PRIMARY KEY (ledger); + + +-- +-- Name: pubsub pubsub_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY pubsub + ADD CONSTRAINT pubsub_pkey PRIMARY KEY (resid); + + +-- +-- Name: scpquorums scpquorums_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY scpquorums + ADD CONSTRAINT scpquorums_pkey PRIMARY KEY (qsethash); + + +-- +-- Name: signers signers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY signers + ADD CONSTRAINT signers_pkey PRIMARY KEY (accountid, publickey); + + +-- +-- Name: storestate storestate_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY storestate + ADD CONSTRAINT storestate_pkey PRIMARY KEY (statename); + + +-- +-- Name: trustlines trustlines_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY trustlines + ADD CONSTRAINT trustlines_pkey PRIMARY KEY (accountid, issuer, assetcode); + + +-- +-- Name: txfeehistory txfeehistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txfeehistory + ADD CONSTRAINT txfeehistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: txhistory txhistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txhistory + ADD CONSTRAINT txhistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: accountbalances; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX accountbalances ON accounts USING btree (balance) WHERE (balance >= 1000000000); + + +-- +-- Name: buyingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX buyingissuerindex ON offers USING btree (buyingissuer); + + +-- +-- Name: histbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histbyseq ON txhistory USING btree (ledgerseq); + + +-- +-- Name: histfeebyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histfeebyseq ON txfeehistory USING btree (ledgerseq); + + +-- +-- Name: ledgersbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX ledgersbyseq ON ledgerheaders USING btree (ledgerseq); + + +-- +-- Name: priceindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX priceindex ON offers USING btree (price); + + +-- +-- Name: scpenvsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpenvsbyseq ON scphistory USING btree (ledgerseq); + + +-- +-- Name: scpquorumsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpquorumsbyseq ON scpquorums USING btree (lastledgerseq); + + +-- +-- Name: sellingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX sellingissuerindex ON offers USING btree (sellingissuer); + + +-- +-- Name: signersaccount; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX signersaccount ON signers USING btree (accountid); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/paths-horizon.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/paths-horizon.sql new file mode 100644 index 0000000..fdf27b0 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/paths-horizon.sql @@ -0,0 +1,952 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; + +SET search_path = public, pg_catalog; + +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_account_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_account_id_fkey; +DROP INDEX IF EXISTS public.trade_effects_by_order_book; +DROP INDEX IF EXISTS public.index_history_transactions_on_id; +DROP INDEX IF EXISTS public.index_history_operations_on_type; +DROP INDEX IF EXISTS public.index_history_operations_on_transaction_id; +DROP INDEX IF EXISTS public.index_history_operations_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_sequence; +DROP INDEX IF EXISTS public.index_history_ledgers_on_previous_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_importer_version; +DROP INDEX IF EXISTS public.index_history_ledgers_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_closed_at; +DROP INDEX IF EXISTS public.index_history_effects_on_type; +DROP INDEX IF EXISTS public.index_history_accounts_on_id; +DROP INDEX IF EXISTS public.index_history_accounts_on_address; +DROP INDEX IF EXISTS public.htrd_time_lookup; +DROP INDEX IF EXISTS public.htrd_pid; +DROP INDEX IF EXISTS public.htrd_pair_time_lookup; +DROP INDEX IF EXISTS public.htrd_counter_lookup; +DROP INDEX IF EXISTS public.htrd_by_offer; +DROP INDEX IF EXISTS public.htp_by_htid; +DROP INDEX IF EXISTS public.hs_transaction_by_id; +DROP INDEX IF EXISTS public.hs_ledger_by_id; +DROP INDEX IF EXISTS public.hop_by_hoid; +DROP INDEX IF EXISTS public.hist_tx_p_id; +DROP INDEX IF EXISTS public.hist_op_p_id; +DROP INDEX IF EXISTS public.hist_e_id; +DROP INDEX IF EXISTS public.hist_e_by_order; +DROP INDEX IF EXISTS public.by_ledger; +DROP INDEX IF EXISTS public.by_hash; +DROP INDEX IF EXISTS public.by_account; +DROP INDEX IF EXISTS public.asset_by_issuer; +ALTER TABLE IF EXISTS ONLY public.history_transaction_participants DROP CONSTRAINT IF EXISTS history_transaction_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_operation_participants DROP CONSTRAINT IF EXISTS history_operation_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_asset_code_asset_type_asset_issuer_key; +ALTER TABLE IF EXISTS ONLY public.gorp_migrations DROP CONSTRAINT IF EXISTS gorp_migrations_pkey; +ALTER TABLE IF EXISTS public.history_transaction_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_operation_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_assets ALTER COLUMN id DROP DEFAULT; +DROP TABLE IF EXISTS public.history_transactions; +DROP SEQUENCE IF EXISTS public.history_transaction_participants_id_seq; +DROP TABLE IF EXISTS public.history_transaction_participants; +DROP TABLE IF EXISTS public.history_trades; +DROP TABLE IF EXISTS public.history_operations; +DROP SEQUENCE IF EXISTS public.history_operation_participants_id_seq; +DROP TABLE IF EXISTS public.history_operation_participants; +DROP TABLE IF EXISTS public.history_ledgers; +DROP TABLE IF EXISTS public.history_effects; +DROP SEQUENCE IF EXISTS public.history_assets_id_seq; +DROP TABLE IF EXISTS public.history_assets; +DROP TABLE IF EXISTS public.history_accounts; +DROP SEQUENCE IF EXISTS public.history_accounts_id_seq; +DROP TABLE IF EXISTS public.gorp_migrations; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: gorp_migrations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE gorp_migrations ( + id text NOT NULL, + applied_at timestamp with time zone +); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_accounts_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_accounts ( + id bigint DEFAULT nextval('history_accounts_id_seq'::regclass) NOT NULL, + address character varying(64) +); + + +-- +-- Name: history_assets; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_assets ( + id integer NOT NULL, + asset_type character varying(64) NOT NULL, + asset_code character varying(12) NOT NULL, + asset_issuer character varying(56) NOT NULL +); + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_assets_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_assets_id_seq OWNED BY history_assets.id; + + +-- +-- Name: history_effects; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_effects ( + history_account_id bigint NOT NULL, + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + type integer NOT NULL, + details jsonb +); + + +-- +-- Name: history_ledgers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_ledgers ( + sequence integer NOT NULL, + ledger_hash character varying(64) NOT NULL, + previous_ledger_hash character varying(64), + transaction_count integer DEFAULT 0 NOT NULL, + operation_count integer DEFAULT 0 NOT NULL, + closed_at timestamp without time zone NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + importer_version integer DEFAULT 1 NOT NULL, + total_coins bigint NOT NULL, + fee_pool bigint NOT NULL, + base_fee integer NOT NULL, + base_reserve integer NOT NULL, + max_tx_set_size integer NOT NULL, + protocol_version integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: history_operation_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operation_participants ( + id integer NOT NULL, + history_operation_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_operation_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_operation_participants_id_seq OWNED BY history_operation_participants.id; + + +-- +-- Name: history_operations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operations ( + id bigint NOT NULL, + transaction_id bigint NOT NULL, + application_order integer NOT NULL, + type integer NOT NULL, + details jsonb, + source_account character varying(64) DEFAULT ''::character varying NOT NULL +); + + +-- +-- Name: history_trades; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_trades ( + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + ledger_closed_at timestamp without time zone NOT NULL, + offer_id bigint NOT NULL, + base_account_id bigint NOT NULL, + base_asset_id bigint NOT NULL, + base_amount bigint NOT NULL, + counter_account_id bigint NOT NULL, + counter_asset_id bigint NOT NULL, + counter_amount bigint NOT NULL, + base_is_seller boolean, + CONSTRAINT history_trades_base_amount_check CHECK ((base_amount > 0)), + CONSTRAINT history_trades_check CHECK ((base_asset_id < counter_asset_id)), + CONSTRAINT history_trades_counter_amount_check CHECK ((counter_amount > 0)) +); + + +-- +-- Name: history_transaction_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transaction_participants ( + id integer NOT NULL, + history_transaction_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_transaction_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_transaction_participants_id_seq OWNED BY history_transaction_participants.id; + + +-- +-- Name: history_transactions; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transactions ( + transaction_hash character varying(64) NOT NULL, + ledger_sequence integer NOT NULL, + application_order integer NOT NULL, + account character varying(64) NOT NULL, + account_sequence bigint NOT NULL, + fee_paid integer NOT NULL, + operation_count integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + tx_envelope text NOT NULL, + tx_result text NOT NULL, + tx_meta text NOT NULL, + tx_fee_meta text NOT NULL, + signatures character varying(96)[] DEFAULT '{}'::character varying[] NOT NULL, + memo_type character varying DEFAULT 'none'::character varying NOT NULL, + memo character varying, + time_bounds int8range +); + + +-- +-- Name: history_assets id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets ALTER COLUMN id SET DEFAULT nextval('history_assets_id_seq'::regclass); + + +-- +-- Name: history_operation_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants ALTER COLUMN id SET DEFAULT nextval('history_operation_participants_id_seq'::regclass); + + +-- +-- Name: history_transaction_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants ALTER COLUMN id SET DEFAULT nextval('history_transaction_participants_id_seq'::regclass); + + +-- +-- Data for Name: gorp_migrations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO gorp_migrations VALUES ('1_initial_schema.sql', '2017-10-25 12:02:41.355815-07'); +INSERT INTO gorp_migrations VALUES ('2_index_participants_by_toid.sql', '2017-10-25 12:02:41.35913-07'); +INSERT INTO gorp_migrations VALUES ('3_use_sequence_in_history_accounts.sql', '2017-10-25 12:02:41.361119-07'); +INSERT INTO gorp_migrations VALUES ('4_add_protocol_version.sql', '2017-10-25 12:02:41.365998-07'); +INSERT INTO gorp_migrations VALUES ('5_create_trades_table.sql', '2017-10-25 12:02:41.370443-07'); +INSERT INTO gorp_migrations VALUES ('6_create_assets_table.sql', '2017-10-25 12:02:41.373746-07'); +INSERT INTO gorp_migrations VALUES ('7_modify_trades_table.sql', '2017-10-25 12:02:41.381902-07'); + + +-- +-- Data for Name: history_accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_accounts VALUES (1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_accounts VALUES (2, 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN'); +INSERT INTO history_accounts VALUES (3, 'GARSFJNXJIHO6ULUBK3DBYKVSIZE7SC72S5DYBCHU7DKL22UXKVD7MXP'); +INSERT INTO history_accounts VALUES (4, 'GAEDTJ4PPEFVW5XV2S7LUXBEHNQMX5Q2GM562RJGOQG7GVCE5H3HIB4V'); +INSERT INTO history_accounts VALUES (5, 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL'); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_accounts_id_seq', 5, true); + + +-- +-- Data for Name: history_assets; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_assets_id_seq', 1, false); + + +-- +-- Data for Name: history_effects; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_effects VALUES (2, 8589938689, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589938689, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (2, 8589938689, 3, 10, '{"weight": 1, "public_key": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}'); +INSERT INTO history_effects VALUES (3, 8589942785, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589942785, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (3, 8589942785, 3, 10, '{"weight": 1, "public_key": "GARSFJNXJIHO6ULUBK3DBYKVSIZE7SC72S5DYBCHU7DKL22UXKVD7MXP"}'); +INSERT INTO history_effects VALUES (4, 8589946881, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589946881, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (4, 8589946881, 3, 10, '{"weight": 1, "public_key": "GAEDTJ4PPEFVW5XV2S7LUXBEHNQMX5Q2GM562RJGOQG7GVCE5H3HIB4V"}'); +INSERT INTO history_effects VALUES (5, 8589950977, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589950977, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (5, 8589950977, 3, 10, '{"weight": 1, "public_key": "GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL"}'); +INSERT INTO history_effects VALUES (5, 12884905985, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}'); +INSERT INTO history_effects VALUES (4, 12884910081, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}'); +INSERT INTO history_effects VALUES (3, 12884914177, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}'); +INSERT INTO history_effects VALUES (5, 12884918273, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}'); +INSERT INTO history_effects VALUES (5, 12884922369, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "1", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}'); +INSERT INTO history_effects VALUES (5, 12884926465, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "21", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}'); +INSERT INTO history_effects VALUES (5, 12884930561, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "22", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}'); +INSERT INTO history_effects VALUES (5, 12884934657, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "31", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}'); +INSERT INTO history_effects VALUES (5, 12884938753, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "32", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}'); +INSERT INTO history_effects VALUES (5, 12884942849, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "33", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}'); +INSERT INTO history_effects VALUES (3, 17179873281, 1, 2, '{"amount": "5000.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}'); +INSERT INTO history_effects VALUES (2, 17179873281, 2, 3, '{"amount": "5000.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}'); +INSERT INTO history_effects VALUES (5, 17179877377, 1, 2, '{"amount": "5000.0000000", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}'); +INSERT INTO history_effects VALUES (2, 17179877377, 2, 3, '{"amount": "5000.0000000", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}'); +INSERT INTO history_effects VALUES (5, 17179881473, 1, 2, '{"amount": "5000.0000000", "asset_code": "1", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}'); +INSERT INTO history_effects VALUES (2, 17179881473, 2, 3, '{"amount": "5000.0000000", "asset_code": "1", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}'); +INSERT INTO history_effects VALUES (5, 17179885569, 1, 2, '{"amount": "5000.0000000", "asset_code": "21", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}'); +INSERT INTO history_effects VALUES (2, 17179885569, 2, 3, '{"amount": "5000.0000000", "asset_code": "21", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}'); +INSERT INTO history_effects VALUES (5, 17179889665, 1, 2, '{"amount": "5000.0000000", "asset_code": "22", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}'); +INSERT INTO history_effects VALUES (2, 17179889665, 2, 3, '{"amount": "5000.0000000", "asset_code": "22", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}'); +INSERT INTO history_effects VALUES (5, 17179893761, 1, 2, '{"amount": "5000.0000000", "asset_code": "31", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}'); +INSERT INTO history_effects VALUES (2, 17179893761, 2, 3, '{"amount": "5000.0000000", "asset_code": "31", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}'); +INSERT INTO history_effects VALUES (5, 17179897857, 1, 2, '{"amount": "5000.0000000", "asset_code": "32", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}'); +INSERT INTO history_effects VALUES (2, 17179897857, 2, 3, '{"amount": "5000.0000000", "asset_code": "32", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}'); +INSERT INTO history_effects VALUES (5, 17179901953, 1, 2, '{"amount": "5000.0000000", "asset_code": "33", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}'); +INSERT INTO history_effects VALUES (2, 17179901953, 2, 3, '{"amount": "5000.0000000", "asset_code": "33", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}'); + + +-- +-- Data for Name: history_ledgers; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_ledgers VALUES (1, '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', NULL, 0, 0, '1970-01-01 00:00:00', '2017-10-25 19:04:35.25348', '2017-10-25 19:04:35.25348', 4294967296, 10, 1000000000000000000, 0, 100, 100000000, 100, 0); +INSERT INTO history_ledgers VALUES (2, 'a6c02a236270e15442fef7cb1b74c7aeddef100ef52df2f70e0d4b41e706e97b', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', 4, 4, '2017-10-25 19:04:30', '2017-10-25 19:04:35.265285', '2017-10-25 19:04:35.265285', 8589934592, 10, 1000000000000000000, 400, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (3, '8e2937b73250308d8683c8d3697e0e92e26511b64ceacf3d7dff159913ab9023', 'a6c02a236270e15442fef7cb1b74c7aeddef100ef52df2f70e0d4b41e706e97b', 10, 10, '2017-10-25 19:04:31', '2017-10-25 19:04:35.296352', '2017-10-25 19:04:35.296352', 12884901888, 10, 1000000000000000000, 1400, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (4, '011b68ceba9c3b093733f9f7cbd12d9103753ed6554359c93eef5a9572764016', '8e2937b73250308d8683c8d3697e0e92e26511b64ceacf3d7dff159913ab9023', 8, 8, '2017-10-25 19:04:32', '2017-10-25 19:04:35.334852', '2017-10-25 19:04:35.334852', 17179869184, 10, 1000000000000000000, 2200, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (5, '8a2734912f5ef678d44c38962aeb79069bd1a837fdfd4ccabebeaeb32c6536cb', '011b68ceba9c3b093733f9f7cbd12d9103753ed6554359c93eef5a9572764016', 13, 13, '2017-10-25 19:04:33', '2017-10-25 19:04:35.382662', '2017-10-25 19:04:35.382662', 21474836480, 10, 1000000000000000000, 3500, 100, 100000000, 10000, 8); + + +-- +-- Data for Name: history_operation_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operation_participants VALUES (1, 8589938689, 1); +INSERT INTO history_operation_participants VALUES (2, 8589938689, 2); +INSERT INTO history_operation_participants VALUES (3, 8589942785, 1); +INSERT INTO history_operation_participants VALUES (4, 8589942785, 3); +INSERT INTO history_operation_participants VALUES (5, 8589946881, 1); +INSERT INTO history_operation_participants VALUES (6, 8589946881, 4); +INSERT INTO history_operation_participants VALUES (7, 8589950977, 1); +INSERT INTO history_operation_participants VALUES (8, 8589950977, 5); +INSERT INTO history_operation_participants VALUES (9, 12884905985, 5); +INSERT INTO history_operation_participants VALUES (10, 12884910081, 4); +INSERT INTO history_operation_participants VALUES (11, 12884914177, 3); +INSERT INTO history_operation_participants VALUES (12, 12884918273, 5); +INSERT INTO history_operation_participants VALUES (13, 12884922369, 5); +INSERT INTO history_operation_participants VALUES (14, 12884926465, 5); +INSERT INTO history_operation_participants VALUES (15, 12884930561, 5); +INSERT INTO history_operation_participants VALUES (16, 12884934657, 5); +INSERT INTO history_operation_participants VALUES (17, 12884938753, 5); +INSERT INTO history_operation_participants VALUES (18, 12884942849, 5); +INSERT INTO history_operation_participants VALUES (19, 17179873281, 3); +INSERT INTO history_operation_participants VALUES (20, 17179873281, 2); +INSERT INTO history_operation_participants VALUES (21, 17179877377, 2); +INSERT INTO history_operation_participants VALUES (22, 17179877377, 5); +INSERT INTO history_operation_participants VALUES (23, 17179881473, 2); +INSERT INTO history_operation_participants VALUES (24, 17179881473, 5); +INSERT INTO history_operation_participants VALUES (25, 17179885569, 2); +INSERT INTO history_operation_participants VALUES (26, 17179885569, 5); +INSERT INTO history_operation_participants VALUES (27, 17179889665, 2); +INSERT INTO history_operation_participants VALUES (28, 17179889665, 5); +INSERT INTO history_operation_participants VALUES (29, 17179893761, 2); +INSERT INTO history_operation_participants VALUES (30, 17179893761, 5); +INSERT INTO history_operation_participants VALUES (31, 17179897857, 2); +INSERT INTO history_operation_participants VALUES (32, 17179897857, 5); +INSERT INTO history_operation_participants VALUES (33, 17179901953, 5); +INSERT INTO history_operation_participants VALUES (34, 17179901953, 2); +INSERT INTO history_operation_participants VALUES (35, 21474840577, 5); +INSERT INTO history_operation_participants VALUES (36, 21474844673, 2); +INSERT INTO history_operation_participants VALUES (37, 21474848769, 5); +INSERT INTO history_operation_participants VALUES (38, 21474852865, 2); +INSERT INTO history_operation_participants VALUES (39, 21474856961, 5); +INSERT INTO history_operation_participants VALUES (40, 21474861057, 2); +INSERT INTO history_operation_participants VALUES (41, 21474865153, 5); +INSERT INTO history_operation_participants VALUES (42, 21474869249, 5); +INSERT INTO history_operation_participants VALUES (43, 21474873345, 5); +INSERT INTO history_operation_participants VALUES (44, 21474877441, 5); +INSERT INTO history_operation_participants VALUES (45, 21474881537, 5); +INSERT INTO history_operation_participants VALUES (46, 21474885633, 5); +INSERT INTO history_operation_participants VALUES (47, 21474889729, 5); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_operation_participants_id_seq', 47, true); + + +-- +-- Data for Name: history_operations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operations VALUES (8589938689, 8589938688, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (8589942785, 8589942784, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GARSFJNXJIHO6ULUBK3DBYKVSIZE7SC72S5DYBCHU7DKL22UXKVD7MXP", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (8589946881, 8589946880, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GAEDTJ4PPEFVW5XV2S7LUXBEHNQMX5Q2GM562RJGOQG7GVCE5H3HIB4V", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (8589950977, 8589950976, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (12884905985, 12884905984, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "trustor": "GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL'); +INSERT INTO history_operations VALUES (12884910081, 12884910080, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "trustor": "GAEDTJ4PPEFVW5XV2S7LUXBEHNQMX5Q2GM562RJGOQG7GVCE5H3HIB4V", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GAEDTJ4PPEFVW5XV2S7LUXBEHNQMX5Q2GM562RJGOQG7GVCE5H3HIB4V'); +INSERT INTO history_operations VALUES (12884914177, 12884914176, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "trustor": "GARSFJNXJIHO6ULUBK3DBYKVSIZE7SC72S5DYBCHU7DKL22UXKVD7MXP", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GARSFJNXJIHO6ULUBK3DBYKVSIZE7SC72S5DYBCHU7DKL22UXKVD7MXP'); +INSERT INTO history_operations VALUES (12884918273, 12884918272, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "trustor": "GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL'); +INSERT INTO history_operations VALUES (12884922369, 12884922368, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "trustor": "GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL", "asset_code": "1", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL'); +INSERT INTO history_operations VALUES (12884926465, 12884926464, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "trustor": "GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL", "asset_code": "21", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL'); +INSERT INTO history_operations VALUES (12884930561, 12884930560, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "trustor": "GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL", "asset_code": "22", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL'); +INSERT INTO history_operations VALUES (12884934657, 12884934656, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "trustor": "GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL", "asset_code": "31", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL'); +INSERT INTO history_operations VALUES (12884938753, 12884938752, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "trustor": "GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL", "asset_code": "32", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL'); +INSERT INTO history_operations VALUES (12884942849, 12884942848, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "trustor": "GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL", "asset_code": "33", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL'); +INSERT INTO history_operations VALUES (17179873281, 17179873280, 1, 1, '{"to": "GARSFJNXJIHO6ULUBK3DBYKVSIZE7SC72S5DYBCHU7DKL22UXKVD7MXP", "from": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "amount": "5000.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN'); +INSERT INTO history_operations VALUES (17179877377, 17179877376, 1, 1, '{"to": "GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL", "from": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "amount": "5000.0000000", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN'); +INSERT INTO history_operations VALUES (17179881473, 17179881472, 1, 1, '{"to": "GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL", "from": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "amount": "5000.0000000", "asset_code": "1", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN'); +INSERT INTO history_operations VALUES (17179885569, 17179885568, 1, 1, '{"to": "GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL", "from": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "amount": "5000.0000000", "asset_code": "21", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN'); +INSERT INTO history_operations VALUES (17179889665, 17179889664, 1, 1, '{"to": "GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL", "from": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "amount": "5000.0000000", "asset_code": "22", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN'); +INSERT INTO history_operations VALUES (17179893761, 17179893760, 1, 1, '{"to": "GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL", "from": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "amount": "5000.0000000", "asset_code": "31", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN'); +INSERT INTO history_operations VALUES (17179897857, 17179897856, 1, 1, '{"to": "GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL", "from": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "amount": "5000.0000000", "asset_code": "32", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN'); +INSERT INTO history_operations VALUES (17179901953, 17179901952, 1, 1, '{"to": "GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL", "from": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "amount": "5000.0000000", "asset_code": "33", "asset_type": "credit_alphanum4", "asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN'); +INSERT INTO history_operations VALUES (21474840577, 21474840576, 1, 3, '{"price": "0.5000000", "amount": "10.0000000", "price_r": {"d": 2, "n": 1}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_code": "EUR", "selling_asset_type": "credit_alphanum4", "buying_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "selling_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL'); +INSERT INTO history_operations VALUES (21474844673, 21474844672, 1, 3, '{"price": "1.0000000", "amount": "10.0000000", "price_r": {"d": 1, "n": 1}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_code": "EUR", "selling_asset_type": "credit_alphanum4", "buying_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "selling_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN'); +INSERT INTO history_operations VALUES (21474848769, 21474848768, 1, 3, '{"price": "1.0000000", "amount": "20.0000000", "price_r": {"d": 1, "n": 1}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_code": "1", "selling_asset_type": "credit_alphanum4", "buying_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "selling_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL'); +INSERT INTO history_operations VALUES (21474852865, 21474852864, 1, 3, '{"price": "0.5000000", "amount": "10.0000000", "price_r": {"d": 2, "n": 1}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_code": "EUR", "selling_asset_type": "credit_alphanum4", "buying_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "selling_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN'); +INSERT INTO history_operations VALUES (21474856961, 21474856960, 1, 3, '{"price": "1.0000000", "amount": "20.0000000", "price_r": {"d": 1, "n": 1}, "offer_id": 0, "buying_asset_code": "1", "buying_asset_type": "credit_alphanum4", "selling_asset_code": "EUR", "selling_asset_type": "credit_alphanum4", "buying_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "selling_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL'); +INSERT INTO history_operations VALUES (21474861057, 21474861056, 1, 3, '{"price": "0.1000000", "amount": "1000.0000000", "price_r": {"d": 10, "n": 1}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_type": "native", "buying_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN'); +INSERT INTO history_operations VALUES (21474865153, 21474865152, 1, 3, '{"price": "1.0000000", "amount": "30.0000000", "price_r": {"d": 1, "n": 1}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_code": "21", "selling_asset_type": "credit_alphanum4", "buying_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "selling_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL'); +INSERT INTO history_operations VALUES (21474869249, 21474869248, 1, 3, '{"price": "1.0000000", "amount": "30.0000000", "price_r": {"d": 1, "n": 1}, "offer_id": 0, "buying_asset_code": "21", "buying_asset_type": "credit_alphanum4", "selling_asset_code": "22", "selling_asset_type": "credit_alphanum4", "buying_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "selling_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL'); +INSERT INTO history_operations VALUES (21474873345, 21474873344, 1, 3, '{"price": "1.0000000", "amount": "30.0000000", "price_r": {"d": 1, "n": 1}, "offer_id": 0, "buying_asset_code": "22", "buying_asset_type": "credit_alphanum4", "selling_asset_code": "EUR", "selling_asset_type": "credit_alphanum4", "buying_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "selling_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL'); +INSERT INTO history_operations VALUES (21474877441, 21474877440, 1, 3, '{"price": "2.0000000", "amount": "40.0000000", "price_r": {"d": 1, "n": 2}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_code": "31", "selling_asset_type": "credit_alphanum4", "buying_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "selling_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL'); +INSERT INTO history_operations VALUES (21474881537, 21474881536, 1, 3, '{"price": "2.0000000", "amount": "40.0000000", "price_r": {"d": 1, "n": 2}, "offer_id": 0, "buying_asset_code": "31", "buying_asset_type": "credit_alphanum4", "selling_asset_code": "32", "selling_asset_type": "credit_alphanum4", "buying_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "selling_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL'); +INSERT INTO history_operations VALUES (21474885633, 21474885632, 1, 3, '{"price": "2.0000000", "amount": "40.0000000", "price_r": {"d": 1, "n": 2}, "offer_id": 0, "buying_asset_code": "32", "buying_asset_type": "credit_alphanum4", "selling_asset_code": "33", "selling_asset_type": "credit_alphanum4", "buying_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "selling_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL'); +INSERT INTO history_operations VALUES (21474889729, 21474889728, 1, 3, '{"price": "2.0000000", "amount": "40.0000000", "price_r": {"d": 1, "n": 2}, "offer_id": 0, "buying_asset_code": "33", "buying_asset_type": "credit_alphanum4", "selling_asset_code": "EUR", "selling_asset_type": "credit_alphanum4", "buying_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN", "selling_asset_issuer": "GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN"}', 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL'); + + +-- +-- Data for Name: history_trades; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: history_transaction_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transaction_participants VALUES (1, 8589938688, 2); +INSERT INTO history_transaction_participants VALUES (2, 8589938688, 1); +INSERT INTO history_transaction_participants VALUES (3, 8589942784, 1); +INSERT INTO history_transaction_participants VALUES (4, 8589942784, 3); +INSERT INTO history_transaction_participants VALUES (5, 8589946880, 1); +INSERT INTO history_transaction_participants VALUES (6, 8589946880, 4); +INSERT INTO history_transaction_participants VALUES (7, 8589950976, 1); +INSERT INTO history_transaction_participants VALUES (8, 8589950976, 5); +INSERT INTO history_transaction_participants VALUES (9, 12884905984, 5); +INSERT INTO history_transaction_participants VALUES (10, 12884910080, 4); +INSERT INTO history_transaction_participants VALUES (11, 12884914176, 3); +INSERT INTO history_transaction_participants VALUES (12, 12884918272, 5); +INSERT INTO history_transaction_participants VALUES (13, 12884922368, 5); +INSERT INTO history_transaction_participants VALUES (14, 12884926464, 5); +INSERT INTO history_transaction_participants VALUES (15, 12884930560, 5); +INSERT INTO history_transaction_participants VALUES (16, 12884934656, 5); +INSERT INTO history_transaction_participants VALUES (17, 12884938752, 5); +INSERT INTO history_transaction_participants VALUES (18, 12884942848, 5); +INSERT INTO history_transaction_participants VALUES (19, 17179873280, 2); +INSERT INTO history_transaction_participants VALUES (20, 17179873280, 3); +INSERT INTO history_transaction_participants VALUES (21, 17179877376, 2); +INSERT INTO history_transaction_participants VALUES (22, 17179877376, 5); +INSERT INTO history_transaction_participants VALUES (23, 17179881472, 2); +INSERT INTO history_transaction_participants VALUES (24, 17179881472, 5); +INSERT INTO history_transaction_participants VALUES (25, 17179885568, 2); +INSERT INTO history_transaction_participants VALUES (26, 17179885568, 5); +INSERT INTO history_transaction_participants VALUES (27, 17179889664, 2); +INSERT INTO history_transaction_participants VALUES (28, 17179889664, 5); +INSERT INTO history_transaction_participants VALUES (29, 17179893760, 2); +INSERT INTO history_transaction_participants VALUES (30, 17179893760, 5); +INSERT INTO history_transaction_participants VALUES (31, 17179897856, 2); +INSERT INTO history_transaction_participants VALUES (32, 17179897856, 5); +INSERT INTO history_transaction_participants VALUES (33, 17179901952, 5); +INSERT INTO history_transaction_participants VALUES (34, 17179901952, 2); +INSERT INTO history_transaction_participants VALUES (35, 21474840576, 5); +INSERT INTO history_transaction_participants VALUES (36, 21474844672, 2); +INSERT INTO history_transaction_participants VALUES (37, 21474848768, 5); +INSERT INTO history_transaction_participants VALUES (38, 21474852864, 2); +INSERT INTO history_transaction_participants VALUES (39, 21474856960, 5); +INSERT INTO history_transaction_participants VALUES (40, 21474861056, 2); +INSERT INTO history_transaction_participants VALUES (41, 21474865152, 5); +INSERT INTO history_transaction_participants VALUES (42, 21474869248, 5); +INSERT INTO history_transaction_participants VALUES (43, 21474873344, 5); +INSERT INTO history_transaction_participants VALUES (44, 21474877440, 5); +INSERT INTO history_transaction_participants VALUES (45, 21474881536, 5); +INSERT INTO history_transaction_participants VALUES (46, 21474885632, 5); +INSERT INTO history_transaction_participants VALUES (47, 21474889728, 5); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_transaction_participants_id_seq', 47, true); + + +-- +-- Data for Name: history_transactions; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transactions VALUES ('9ff6b71bba6b24c8afc6ca53b12702566d40e9c8abf9b8439e9a3b08300e4188', 2, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 1, 100, 1, '2017-10-25 19:04:35.266179', '2017-10-25 19:04:35.266179', 8589938688, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAACVAvkAAAAAAAAAAABVvwF9wAAAEC96/+BcbMflvMQfFAQTbAKGu+6BR1M6SG/KVzTJSlIY8ovSVywuthk9dOW9jm23siTiIZE0IAl84wK83gnAcEK', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2sVNYGnAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{vev/gXGzH5bzEHxQEE2wChrvugUdTOkhvylc0yUpSGPKL0lcsLrYZPXTlvY5tt7Ik4iGRNCAJfOMCvN4JwHBCg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('afc983f7f88809442fc616c1ce425b6c8cf6d8f7493b33ff6a809003a845ec16', 2, 2, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 2, 100, 1, '2017-10-25 19:04:35.276833', '2017-10-25 19:04:35.276833', 8589942784, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAIyKlt0oO71F0CrYw4VWSMk/IX9S6PARHp8al61S6qj8AAAACVAvkAAAAAAAAAAABVvwF9wAAAECXh9/+55FmQjeMx9IMQfBn42fYY1fKAT/gb+e7P3jdSMCKiKhwoxj1bub733a2XuxPETpe79uzatzm8/KI0asI', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAACMipbdKDu9RdAq2MOFVkjJPyF/UujwER6fGpetUuqo/AAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rv9MNnAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/84AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{l4ff/ueRZkI3jMfSDEHwZ+Nn2GNXygE/4G/nuz943UjAioiocKMY9W7m+992tl7sTxE6Xu/bs2rc5vPyiNGrCA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('5c71f1b198a9be6b1c7e36737bb3e32c7f258530573bc11f20827d0913ba1433', 2, 3, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 3, 100, 1, '2017-10-25 19:04:35.281768', '2017-10-25 19:04:35.281768', 8589946880, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAACDmnj3kLW3b11L66XCQ7YMv2GjM77UUmdA3zVETp9nQAAAACVAvkAAAAAAAAAAABVvwF9wAAAEBdnUBKCV3HlHOqp5iNLsP8auaNCvxDeBp+0C+lwPYUNrzRALQRDJDWuKfExmsRrEnW8LKJbMdeW9ilLaEc2lAO', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAAg5p495C1t29dS+ulwkO2DL9hozO+1FJnQN81RE6fZ0AAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rKtAUnAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/7UAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{XZ1ASgldx5RzqqeYjS7D/GrmjQr8Q3gaftAvpcD2FDa80QC0EQyQ1rinxMZrEaxJ1vCyiWzHXlvYpS2hHNpQDg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('06445dc688fc2e583567e4a4940440d87cf4877a57af306ece7c64f1f061def4', 2, 4, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 4, 100, 1, '2017-10-25 19:04:35.287421', '2017-10-25 19:04:35.287421', 8589950976, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAAACVAvkAAAAAAAAAAABVvwF9wAAAEAfH3XJo+xZ8adtaA2PZZ3T0kM57CXfxGl+JItnC6nP9LziLQMKgl1EEhuiPqfjn14KK5WfEv0E0op5BJFAkd8O', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2qlc0bnAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/5wAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{Hx91yaPsWfGnbWgNj2Wd09JDOewl38RpfiSLZwupz/S84i0DCoJdRBIboj6n459eCiuVnxL9BNKKeQSRQJHfDg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('d76450086b21a849e31a168577a9c112a913c3317a3f0c1a80c6cb43e16cf348', 3, 1, 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 8589934593, 100, 1, '2017-10-25 19:04:35.296775', '2017-10-25 19:04:35.296776', 12884905984, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFae3//////////AAAAAAAAAAFKYEGnAAAAQC0FIi0RCGDQ0EuuBT5Kg2XxzHxLXRrCxYGj+hY7/sB2Y+JtWyWRjlq3DYL4ajSFE8Na1KKm42oM/gjZUx+1PQU=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAlQL4OAAAAACAAAACAAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{LQUiLREIYNDQS64FPkqDZfHMfEtdGsLFgaP6Fjv+wHZj4m1bJZGOWrcNgvhqNIUTw1rUoqbjagz+CNlTH7U9BQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('cdb0ce2cef61c5cab6566c1c65c5bc632f943b2bd43cfdd80984a66994cb7484', 3, 2, 'GAEDTJ4PPEFVW5XV2S7LUXBEHNQMX5Q2GM562RJGOQG7GVCE5H3HIB4V', 8589934593, 100, 1, '2017-10-25 19:04:35.299753', '2017-10-25 19:04:35.299753', 12884910080, 'AAAAAAg5p495C1t29dS+ulwkO2DL9hozO+1FJnQN81RE6fZ0AAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFae3//////////AAAAAAAAAAFE6fZ0AAAAQNSm/BIxP9LwabXoBKigrTG85o/PUp6VOWh/ne6mMaT5hvehDUvbRHQghJ/SZTDfjD+FPPjbe3nzcJEun1EX4g0=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAAg5p495C1t29dS+ulwkO2DL9hozO+1FJnQN81RE6fZ0AAAAAUVVUgAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAg5p495C1t29dS+ulwkO2DL9hozO+1FJnQN81RE6fZ0AAAAAlQL45wAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAAAIOaePeQtbdvXUvrpcJDtgy/YaMzvtRSZ0DfNUROn2dAAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAIOaePeQtbdvXUvrpcJDtgy/YaMzvtRSZ0DfNUROn2dAAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{1Kb8EjE/0vBptegEqKCtMbzmj89SnpU5aH+d7qYxpPmG96ENS9tEdCCEn9JlMN+MP4U8+Nt7efNwkS6fURfiDQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('563ab1cf87e65377e015813499a6027081e63177a9ef35a0c5e0c0c2a5a918f7', 3, 3, 'GARSFJNXJIHO6ULUBK3DBYKVSIZE7SC72S5DYBCHU7DKL22UXKVD7MXP', 8589934593, 100, 1, '2017-10-25 19:04:35.302969', '2017-10-25 19:04:35.302969', 12884914176, 'AAAAACMipbdKDu9RdAq2MOFVkjJPyF/UujwER6fGpetUuqo/AAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFae3//////////AAAAAAAAAAFUuqo/AAAAQKblh64EFK4tp2+xohOkNaSdfMFDId/y4nop7dVmZRsbe4f/eVCpUrKQCRWLJ4bXzMpPTOTsjHRIxOa8WekP+ww=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAACMipbdKDu9RdAq2MOFVkjJPyF/UujwER6fGpetUuqo/AAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAACMipbdKDu9RdAq2MOFVkjJPyF/UujwER6fGpetUuqo/AAAAAlQL45wAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAAAjIqW3Sg7vUXQKtjDhVZIyT8hf1Lo8BEenxqXrVLqqPwAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAjIqW3Sg7vUXQKtjDhVZIyT8hf1Lo8BEenxqXrVLqqPwAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{puWHrgQUri2nb7GiE6Q1pJ18wUMh3/Lieint1WZlGxt7h/95UKlSspAJFYsnhtfMyk9M5OyMdEjE5rxZ6Q/7DA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('ffe9db595b5e8be4d54b738e78652704dd96ad8729bc6b6adc17c300162f2c98', 3, 4, 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 8589934594, 100, 1, '2017-10-25 19:04:35.306056', '2017-10-25 19:04:35.306056', 12884918272, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFae3//////////AAAAAAAAAAFKYEGnAAAAQNdoCZqF5REF4OZCu65uUph5WUYmUKAcNCwgaJe4Mbakx92kViEe9kaJ13EhVOP7U+yjno/L1v1wpTaTa7YDiAc=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAUVVUgAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAlQL4OAAAAACAAAACAAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAADAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC+M4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{12gJmoXlEQXg5kK7rm5SmHlZRiZQoBw0LCBol7gxtqTH3aRWIR72RonXcSFU4/tT7KOej8vW/XClNpNrtgOIBw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('1a1dc052649f98314a12a17911d3868523d7806887d49a52749221b17cd713ce', 3, 5, 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 8589934595, 100, 1, '2017-10-25 19:04:35.309813', '2017-10-25 19:04:35.309814', 12884922368, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABMQAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFae3//////////AAAAAAAAAAFKYEGnAAAAQMXWsXqylJxEXU0J+7PHlS/xBkw6/LXU23Q3sv7ew9z8KZZJbFEqDgrh340V57e/Xo1CIOdcRWHYpSZ0YZf5jg0=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATEAAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAlQL4OAAAAACAAAACAAAAAMAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAADAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC+LUAAAAAgAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{xdaxerKUnERdTQn7s8eVL/EGTDr8tdTbdDey/t7D3PwplklsUSoOCuHfjRXnt79ejUIg51xFYdilJnRhl/mODQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('6bfdfd3aeff0f617532caf59ee28fe60b7c20ffa6574e08beecda9a890d8f2b2', 3, 6, 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 8589934596, 100, 1, '2017-10-25 19:04:35.313041', '2017-10-25 19:04:35.313041', 12884926464, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABMjEAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFae3//////////AAAAAAAAAAFKYEGnAAAAQI7tUQkz1Dedybs2Y9fYkjeZMkPxYJyQ21NNYmdl4rV3nI+pu3ymAiPtqrLWk21sXWSh8//1rx4sXH0aG+faQQ0=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATIxAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAlQL4OAAAAACAAAACAAAAAQAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAADAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC+JwAAAAAgAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{ju1RCTPUN53JuzZj19iSN5kyQ/FgnJDbU01iZ2XitXecj6m7fKYCI+2qstaTbWxdZKHz//WvHixcfRob59pBDQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('b48686858ee595141fb7d5d9999d5d40b78cacc4e27092e48824c8a0ac01370e', 3, 7, 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 8589934597, 100, 1, '2017-10-25 19:04:35.315987', '2017-10-25 19:04:35.315987', 12884930560, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABMjIAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFae3//////////AAAAAAAAAAFKYEGnAAAAQKacYiD/dSVGNuCAcHUal15ITf0UzHebfNWNudVk5DPvnxFMOqXBkxAVOyVqqXKslFAtco/hI9WNB5yaf2i8eQU=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATIyAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAlQL4OAAAAACAAAACAAAAAUAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAADAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC+IMAAAAAgAAAAUAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{ppxiIP91JUY24IBwdRqXXkhN/RTMd5t81Y251WTkM++fEUw6pcGTEBU7JWqpcqyUUC1yj+Ej1Y0HnJp/aLx5BQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('e6315711266014d425b16b339bba063ad1b8d8823b5dfb8cd3399644754be459', 3, 8, 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 8589934598, 100, 1, '2017-10-25 19:04:35.320394', '2017-10-25 19:04:35.320394', 12884934656, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAAGAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABMzEAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFae3//////////AAAAAAAAAAFKYEGnAAAAQI84TOk9J4ISBmnHAPy5KLkGnho/BjBWrZuYFB9I/6Z6QI9B25/mQw0EUOxBoX6X9q74a48TpIrf6n9LgonC8ws=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATMxAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAlQL4OAAAAACAAAACAAAAAYAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAADAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC+GoAAAAAgAAAAYAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{jzhM6T0nghIGaccA/LkouQaeGj8GMFatm5gUH0j/pnpAj0Hbn+ZDDQRQ7EGhfpf2rvhrjxOkit/qf0uCicLzCw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('344a58add4f45245924cef37386866e0fd10f38f797615551c59fc0b5521e517', 3, 9, 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 8589934599, 100, 1, '2017-10-25 19:04:35.323227', '2017-10-25 19:04:35.323228', 12884938752, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAAHAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABMzIAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFae3//////////AAAAAAAAAAFKYEGnAAAAQIYa/VDKchzI2ce0Hi7EZejOglDpZLsh3oLRGRkitrOM6zm9hJSZEfPZGPY/9+b14+fNnAyiHXGuVJK2ybiTJgU=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATMyAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAlQL4OAAAAACAAAACAAAAAcAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAADAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC+FEAAAAAgAAAAcAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{hhr9UMpyHMjZx7QeLsRl6M6CUOlkuyHegtEZGSK2s4zrOb2ElJkR89kY9j/35vXj582cDKIdca5UkrbJuJMmBQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('254f4bd646c27c730501f50bf5c9543b3510c10f8b39152b74a75cd78ec5aa7a', 3, 10, 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 8589934600, 100, 1, '2017-10-25 19:04:35.326094', '2017-10-25 19:04:35.326094', 12884942848, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABMzMAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFae3//////////AAAAAAAAAAFKYEGnAAAAQKAZjNrWsdz1Pve6US/r4vC01x+rDl62xDI2NxieKesGxMS+yIs4Rn39O6iWlApGqGJ5LlC7QRidIVWIaF8V6gA=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATMzAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAlQL4OAAAAACAAAACAAAAAgAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAADAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC+DgAAAAAgAAAAgAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{oBmM2tax3PU+97pRL+vi8LTXH6sOXrbEMjY3GJ4p6wbExL7IizhGff07qJaUCkaoYnkuULtBGJ0hVYhoXxXqAA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('a3fc459ac9baa9c327254ae6eb182fb60dd597ac3761159393de1564f59efa77', 4, 1, 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 8589934593, 100, 1, '2017-10-25 19:04:35.335478', '2017-10-25 19:04:35.335478', 17179873280, 'AAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAIyKlt0oO71F0CrYw4VWSMk/IX9S6PARHp8al61S6qj8AAAABVVNEAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAukO3QAAAAAAAAAAAH7AVp7AAAAQB0rZ3swcCS/5dUtKqTdrBYxUjI6b9C0K9bdynGsnTMDO4wLsV8IOjO+ZrSBXt9FUQHlTKgHRE5ydrNL2f4eRQM=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAACMipbdKDu9RdAq2MOFVkjJPyF/UujwER6fGpetUuqo/AAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAACMipbdKDu9RdAq2MOFVkjJPyF/UujwER6fGpetUuqo/AAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAALpDt0AH//////////AAAAAQAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{HStnezBwJL/l1S0qpN2sFjFSMjpv0LQr1t3KcaydMwM7jAuxXwg6M75mtIFe30VRAeVMqAdETnJ2s0vZ/h5FAw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('9dc1746a8a1fae0abf8756d189c3d421bb5b5a0d5c0f8a3834da6d6aae8311c7', 4, 2, 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 8589934594, 100, 1, '2017-10-25 19:04:35.340033', '2017-10-25 19:04:35.340033', 17179877376, 'AAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAukO3QAAAAAAAAAAAH7AVp7AAAAQC5RCYrBzLMJMo9N+MYClr/hpgXNaLNAOBtG59qk+qyavtT5Euhsa+X+ukdhYkJrWJ+Hh4ngX/1WO1SpE8q/Bws=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAUVVUgAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAUVVUgAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAALpDt0AH//////////AAAAAQAAAAAAAAAA', 'AAAAAQAAAAEAAAAEAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+M4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{LlEJisHMswkyj034xgKWv+GmBc1os0A4G0bn2qT6rJq+1PkS6Gxr5f66R2FiQmtYn4eHieBf/VY7VKkTyr8HCw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('335970f27c1141c865b9a77189ffe71591d13c49c8d62d57239228562bc43cf2', 4, 3, 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 8589934595, 100, 1, '2017-10-25 19:04:35.343779', '2017-10-25 19:04:35.343779', 17179881472, 'AAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAAABMQAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAukO3QAAAAAAAAAAAH7AVp7AAAAQJwPDiB+yuKFlFstdLMotpJlApsm34y8aJSlr1PjJEUi6fz6FucRMktKYHhJMINqUGzzm0qEwHesc6Uo1wwRygc=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATEAAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATEAAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAALpDt0AH//////////AAAAAQAAAAAAAAAA', 'AAAAAQAAAAEAAAAEAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+LUAAAAAgAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{nA8OIH7K4oWUWy10syi2kmUCmybfjLxolKWvU+MkRSLp/PoW5xEyS0pgeEkwg2pQbPObSoTAd6xzpSjXDBHKBw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('63fd31091c6a3333a8ee23297c255e1d899a275519c48defd3ce0708a904c12b', 4, 4, 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 8589934596, 100, 1, '2017-10-25 19:04:35.347899', '2017-10-25 19:04:35.347899', 17179885568, 'AAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAAABMjEAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAukO3QAAAAAAAAAAAH7AVp7AAAAQBqkEspJ7xLLBgXnC77mo+US4DBjZsB89rAXQO3zmcyH5qEc4nf/D4DMS8R1nHf8c8staaUV3/S1dpr8AR93CQA=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATIxAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATIxAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAALpDt0AH//////////AAAAAQAAAAAAAAAA', 'AAAAAQAAAAEAAAAEAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+JwAAAAAgAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{GqQSyknvEssGBecLvuaj5RLgMGNmwHz2sBdA7fOZzIfmoRzid/8PgMxLxHWcd/xzyy1ppRXf9LV2mvwBH3cJAA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('9b28e1c8e857b0efd958c70c36d777f36e053d4f0d2073d3276c18cfc85f9249', 4, 5, 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 8589934597, 100, 1, '2017-10-25 19:04:35.352395', '2017-10-25 19:04:35.352395', 17179889664, 'AAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAAABMjIAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAukO3QAAAAAAAAAAAH7AVp7AAAAQPtRQAtUfiEmaZWw4ux/nbuh8y8NoG8mBwPEyFcqXHD2+/LrQ5TA6OUcovIB48cu5wlE8S23KIfYK4nE1clR+gw=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATIyAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATIyAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAALpDt0AH//////////AAAAAQAAAAAAAAAA', 'AAAAAQAAAAEAAAAEAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+IMAAAAAgAAAAUAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{+1FAC1R+ISZplbDi7H+du6HzLw2gbyYHA8TIVypccPb78utDlMDo5Ryi8gHjxy7nCUTxLbcoh9gricTVyVH6DA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('8208aa13fc4d71b7ae079072b3a3af1bfd8806ba6fd354d3fcbd127b7c0fe232', 4, 6, 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 8589934598, 100, 1, '2017-10-25 19:04:35.357486', '2017-10-25 19:04:35.357486', 17179893760, 'AAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAAGAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAAABMzEAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAukO3QAAAAAAAAAAAH7AVp7AAAAQMzLClp/m92NuPEoN1e7F87rGGHpCoXCIrw8t9cd8tC3ukKYQViHyj2F/X0Mu83o/ooo5cXpxLyn9IbZZXt+CgU=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATMxAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATMxAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAALpDt0AH//////////AAAAAQAAAAAAAAAA', 'AAAAAQAAAAEAAAAEAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+GoAAAAAgAAAAYAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{zMsKWn+b3Y248Sg3V7sXzusYYekKhcIivDy31x3y0Le6QphBWIfKPYX9fQy7zej+iijlxenEvKf0htlle34KBQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('7c663b4fe86794c57b4f3d718b5048be1aa1e084e52f3468dd470829a057cfeb', 4, 7, 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 8589934599, 100, 1, '2017-10-25 19:04:35.362356', '2017-10-25 19:04:35.362356', 17179897856, 'AAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAAHAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAAABMzIAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAukO3QAAAAAAAAAAAH7AVp7AAAAQPYL/L7JhjheV0aToVoB98Iuwa4Z3rcSsuf4zY0ndS8v2fy1mDzGOuS4n0Fwdcdhzy77qOdmFV3kSsR75YqLawY=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATMyAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATMyAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAALpDt0AH//////////AAAAAQAAAAAAAAAA', 'AAAAAQAAAAEAAAAEAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+FEAAAAAgAAAAcAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{9gv8vsmGOF5XRpOhWgH3wi7BrhnetxKy5/jNjSd1Ly/Z/LWYPMY65LifQXB1x2HPLvuo52YVXeRKxHvliotrBg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('57d54e294ca2d6206226a8950976bbec3852a05f977c895b68510e329ed1cf9b', 4, 8, 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 8589934600, 100, 1, '2017-10-25 19:04:35.36725', '2017-10-25 19:04:35.36725', 17179901952, 'AAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAANNFzLrsuusAQh1EFJvz7NvUGFdN7Svc8ddcE7EpgQacAAAABMzMAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAukO3QAAAAAAAAAAAH7AVp7AAAAQDZLOY+f8aVbrWmcdsUz5KDWGikLBfYEESNyeF/4BlFppWpejMrS36byCy2yScN9zEhx5dZgVumSfp/bthUYbwM=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATMzAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAATMzAAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAALpDt0AH//////////AAAAAQAAAAAAAAAA', 'AAAAAQAAAAEAAAAEAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+DgAAAAAgAAAAgAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{Nks5j5/xpVutaZx2xTPkoNYaKQsF9gQRI3J4X/gGUWmlal6MytLfpvILLbJJw33MSHHl1mBW6ZJ+n9u2FRhvAw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('a11c4e1aada500470b2f9519a3797f6cfb70f8a776869fbf4b4b516b4d2e8133', 5, 1, 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 8589934601, 100, 1, '2017-10-25 19:04:35.383235', '2017-10-25 19:04:35.383235', 21474840576, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAAJAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAX14QAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAFKYEGnAAAAQHYMSNjb0f+r4Z0pfzyekxkzkV3nav7I9MIPXyPdlnPT0KM5l7Rp0aFsqFXJPACzggMqTJrWxY5k+HP6eCrG+Ag=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAAEAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAX14QAAAAABAAAAAgAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAAEAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAX14QAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC9z4AAAAAgAAABIAAAAJAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', 'AAAAAgAAAAMAAAADAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC+DgAAAAAgAAAAgAAAAIAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC+B8AAAAAgAAAAkAAAAIAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{dgxI2NvR/6vhnSl/PJ6TGTORXedq/sj0wg9fI92Wc9PQozmXtGnRoWyoVck8ALOCAypMmtbFjmT4c/p4Ksb4CA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('b5e88105a360ca97acb39a2636f7cf5cdf7a901acd0d4be9c8091ba227e0452c', 5, 2, 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 8589934601, 100, 1, '2017-10-25 19:04:35.38655', '2017-10-25 19:04:35.38655', 21474844672, 'AAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAAJAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAX14QAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAH7AVp7AAAAQKYsEVsOUuHcbex7veV09JgjxkZyqr2FcMzTYGPS+DFi3FhbhKgQJQnhi+dGRrcbOexMx5umUBXRodtHpPVsNgE=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAAAAAIAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAX14QAAAAABAAAAAQAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAAAAAIAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAX14QAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC9+0AAAAAgAAAAsAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', 'AAAAAgAAAAMAAAAEAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+DgAAAAAgAAAAgAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+B8AAAAAgAAAAkAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{piwRWw5S4dxt7Hu95XT0mCPGRnKqvYVwzNNgY9L4MWLcWFuEqBAlCeGL50ZGtxs57EzHm6ZQFdGh20ek9Ww2AQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('4781659c29cabdfdc55dd8d007ddd1540f6fb45f3b4ce648e45c32257e47c4a6', 5, 3, 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 8589934602, 100, 1, '2017-10-25 19:04:35.388931', '2017-10-25 19:04:35.388931', 21474848768, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAAKAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABMQAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAvrwgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAFKYEGnAAAAQJ0o6N2Jk5+i0bkILbE3UTiUpyZvOJLNvARX5gYko0KCuad0n456Jm9Cqxr7seluIFSoNbxCJOrC54kyaTuO1Ak=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAAMAAAABMQAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAvrwgAAAAABAAAAAQAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAAMAAAABMQAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAvrwgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC9z4AAAAAgAAABIAAAAKAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', 'AAAAAQAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC+AYAAAAAgAAAAoAAAAIAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{nSjo3YmTn6LRuQgtsTdROJSnJm84ks28BFfmBiSjQoK5p3Sfjnomb0KrGvux6W4gVKg1vEIk6sLniTJpO47UCQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('fac63542d996fcba0e6bcb723ca94b5a3b415b36e4eeac64c881dfd61d478fe7', 5, 4, 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 8589934602, 100, 1, '2017-10-25 19:04:35.391126', '2017-10-25 19:04:35.391126', 21474852864, 'AAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAAKAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAX14QAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAH7AVp7AAAAQDcsuEiZkPgFoOKVqaXf7q1n198y1BZNFYjn1vVH5bxadN9DKREt/ULptZ/3gDYD/fiw5VJIiJzGy+r8ZWYeDg4=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAAAAAQAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAX14QAAAAABAAAAAgAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAAAAAQAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAX14QAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC9+0AAAAAgAAAAsAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', 'AAAAAQAAAAEAAAAFAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC+AYAAAAAgAAAAoAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{Nyy4SJmQ+AWg4pWppd/urWfX3zLUFk0ViOfW9UflvFp030MpES39Qum1n/eANgP9+LDlUkiInMbL6vxlZh4ODg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('8915d7a8cc6be26c19195a736b535d5d7bba506f267267449787240bae9c1c80', 5, 5, 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 8589934603, 100, 1, '2017-10-25 19:04:35.393375', '2017-10-25 19:04:35.393375', 21474856960, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAALAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAExAAAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAvrwgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAFKYEGnAAAAQNFl2eV/OTWdcSDTd/MytqUjZaSAXFEX1cRK1Ba5PUrHlxO4WdopI8D0KjJo195Xy85Dqx+iTCEM0Xr0/lGM6Qs=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAAUAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAExAAAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAvrwgAAAAABAAAAAQAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAAUAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAExAAAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAvrwgAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC9z4AAAAAgAAABIAAAALAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', 'AAAAAQAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC9+0AAAAAgAAAAsAAAAIAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{0WXZ5X85NZ1xINN38zK2pSNlpIBcURfVxErUFrk9SseXE7hZ2ikjwPQqMmjX3lfLzkOrH6JMIQzRevT+UYzpCw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('0e12e13702a9573c885291f36b36561c288d8fc4d2f92dcf484132b6c8d408bf', 5, 6, 'GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN', 8589934603, 100, 1, '2017-10-25 19:04:35.39582', '2017-10-25 19:04:35.39582', 21474861056, 'AAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAZAAAAAIAAAALAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAACVAvkAAAAAAEAAAAKAAAAAAAAAAAAAAAAAAAAAfsBWnsAAABAcbF71a/Gjo9HpuNHsBpUkWKsdKnRvR737FyZoPnCBlCKHfCyvt/Ykg3PG1SStsWIpb9zUB/XZFjvgwi7F6zwBw==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAAAAAYAAAAAAAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAACPDRbtAAAAAEAAAAKAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAAAAAAYAAAAAAAAAAVVTRAAAAAAA5BFB2+Hs81DQk/cAlJes5R0+3PUQaZ62NZJoKPsBWnsAAAACPDRbtAAAAAEAAAAKAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAAlQL37QAAAACAAAACwAAAAMAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAFAAAAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAJUC9+0AAAAAgAAAAsAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{cbF71a/Gjo9HpuNHsBpUkWKsdKnRvR737FyZoPnCBlCKHfCyvt/Ykg3PG1SStsWIpb9zUB/XZFjvgwi7F6zwBw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('b9925fafee10dce3211337718217a7a0691ca60d9f67c56d9a3ec823acd0c95e', 5, 7, 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 8589934604, 100, 1, '2017-10-25 19:04:35.397954', '2017-10-25 19:04:35.397954', 21474865152, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAAMAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABMjEAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABHhowAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAFKYEGnAAAAQDT4gS9N8FQ4cyYjoOqFMhn3iEqPrUO8fcc0XAUbfuBYucNKYmSt57nBfRtOzIUChOlKitxV1+0lDYp38fPv5Aw=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAAcAAAABMjEAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABHhowAAAAABAAAAAQAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAAcAAAABMjEAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABHhowAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC9z4AAAAAgAAABIAAAAMAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', 'AAAAAQAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC99QAAAAAgAAAAwAAAAIAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{NPiBL03wVDhzJiOg6oUyGfeISo+tQ7x9xzRcBRt+4Fi5w0piZK3nucF9G07MhQKE6UqK3FXX7SUNinfx8+/kDA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('a89dc0b7e9e01af735994cb66cf775bfd37fb0e61225254294c00627f2cfe91a', 5, 8, 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 8589934605, 100, 1, '2017-10-25 19:04:35.400555', '2017-10-25 19:04:35.400555', 21474869248, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAANAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABMjIAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAEyMQAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABHhowAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAFKYEGnAAAAQMDEDKXp605d/im9Ptwenn13YSUaKKjat7MDBnNKxHnQ5OFY1L9yszv4qo7Ax4Nqd+B9YfvKxzGw4jQGQ9UdOgg=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAAgAAAABMjIAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAEyMQAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABHhowAAAAABAAAAAQAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAAgAAAABMjIAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAEyMQAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABHhowAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC9z4AAAAAgAAABIAAAANAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', 'AAAAAQAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC97sAAAAAgAAAA0AAAAIAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{wMQMpenrTl3+Kb0+3B6efXdhJRooqNq3swMGc0rEedDk4VjUv3KzO/iqjsDHg2p34H1h+8rHMbDiNAZD1R06CA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('c92bb5f0ce6cbf74949af7b6404e0aae1839dcb174ca07b86b0690386b488e30', 5, 9, 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 8589934606, 100, 1, '2017-10-25 19:04:35.403072', '2017-10-25 19:04:35.403072', 21474873344, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAAOAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAEyMgAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABHhowAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAFKYEGnAAAAQOn18OTylqpbRyiXNURKYg5fc1rW4P7OfdyzIhzEP6eD0gS+Se4UQMOw0zsvfC3dfS366KHEWRXB8qQLqQ7lLAs=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAAkAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAEyMgAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABHhowAAAAABAAAAAQAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAAkAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAEyMgAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABHhowAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC9z4AAAAAgAAABIAAAAOAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', 'AAAAAQAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC96IAAAAAgAAAA4AAAAIAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{6fXw5PKWqltHKJc1REpiDl9zWtbg/s593LMiHMQ/p4PSBL5J7hRAw7DTOy98Ld19LfroocRZFcHypAupDuUsCw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('8af50985527a5383992cef73235c1f9a650aa613984936afd47b72bf0b23d07a', 5, 10, 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 8589934607, 100, 1, '2017-10-25 19:04:35.406184', '2017-10-25 19:04:35.406184', 21474877440, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAAPAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABMzEAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABfXhAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAFKYEGnAAAAQGOBpoZRIru8JJjmktVn8mJoQDVulo6EgqS8X71h1EvU+AS8SOvUBZWAzx+eQPom6Hagxc2R9HQgAIR96KYz/A4=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAAoAAAABMzEAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABfXhAAAAAACAAAAAQAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAAoAAAABMzEAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAFVU0QAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABfXhAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC9z4AAAAAgAAABIAAAAPAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', 'AAAAAQAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC94kAAAAAgAAAA8AAAAIAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{Y4GmhlEiu7wkmOaS1WfyYmhANW6WjoSCpLxfvWHUS9T4BLxI69QFlYDPH55A+ibodqDFzZH0dCAAhH3opjP8Dg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('487644504432e9323eace0dd116cbb3218f2801391a91b2646cb67d797897abf', 5, 11, 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 8589934608, 100, 1, '2017-10-25 19:04:35.408265', '2017-10-25 19:04:35.408265', 21474881536, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAAQAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABMzIAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAEzMQAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABfXhAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAFKYEGnAAAAQNgcJcTXnPHUexPnq4VY23CVwk8zKucnao7p0LfZtQLhJr8PRvA/iWgToaaCPxb3WDFAC84vQ6dFxzJsXMdC/wc=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAAsAAAABMzIAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAEzMQAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABfXhAAAAAACAAAAAQAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAAsAAAABMzIAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAEzMQAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABfXhAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC9z4AAAAAgAAABIAAAAQAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', 'AAAAAQAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC93AAAAAAgAAABAAAAAIAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{2BwlxNec8dR7E+erhVjbcJXCTzMq5ydqjunQt9m1AuEmvw9G8D+JaBOhpoI/FvdYMUALzi9Dp0XHMmxcx0L/Bw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('a34de60105499cdc69a3020fc67fa40229cd2fba20efa64e7e3530e6dcb5a4f4', 5, 12, 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 8589934609, 100, 1, '2017-10-25 19:04:35.4103', '2017-10-25 19:04:35.4103', 21474885632, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAARAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABMzMAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAEzMgAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABfXhAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAFKYEGnAAAAQK9w7ViDX2zIK5hOpddWTQUhso6ZmdVCf+M3ExrCAJrNzpVaHaHgYOnXaRjP9RrHxzm6u/9pb+UWWqRatwxHBwk=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAAwAAAABMzMAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAEzMgAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABfXhAAAAAACAAAAAQAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAAwAAAABMzMAAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAEzMgAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABfXhAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC9z4AAAAAgAAABIAAAARAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', 'AAAAAQAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC91cAAAAAgAAABEAAAAIAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{r3DtWINfbMgrmE6l11ZNBSGyjpmZ1UJ/4zcTGsIAms3OlVodoeBg6ddpGM/1GsfHObq7/2lv5RZapFq3DEcHCQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('94e908960415a58313962f8319cc695922cf0a45b56b3b6be9b81778134b9b81', 5, 13, 'GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL', 8589934610, 100, 1, '2017-10-25 19:04:35.413076', '2017-10-25 19:04:35.413076', 21474889728, 'AAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAZAAAAAIAAAASAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAEzMwAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABfXhAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAFKYEGnAAAAQBPeMF0R7VBgHYBWwmRBc9sjGMe8HiotoY3HFgb/+gj+0xpAKL5prASTRqEWW39fYFM4xLyLBkvP1wtdHnapjQ4=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAA0AAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAEzMwAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABfXhAAAAAACAAAAAQAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAADTRcy67LrrAEIdRBSb8+zb1BhXTe0r3PHXXBOxKYEGnAAAAAAAAAA0AAAABRVVSAAAAAADkEUHb4ezzUNCT9wCUl6zlHT7c9RBpnrY1kmgo+wFaewAAAAEzMwAAAAAAAOQRQdvh7PNQ0JP3AJSXrOUdPtz1EGmetjWSaCj7AVp7AAAAABfXhAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC9z4AAAAAgAAABIAAAASAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', 'AAAAAQAAAAEAAAAFAAAAAAAAAAA00XMuuy66wBCHUQUm/Ps29QYV03tK9zx11wTsSmBBpwAAAAJUC9z4AAAAAgAAABIAAAAIAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{E94wXRHtUGAdgFbCZEFz2yMYx7weKi2hjccWBv/6CP7TGkAovmmsBJNGoRZbf19gUzjEvIsGS8/XC10edqmNDg==}', 'none', NULL, NULL); + + +-- +-- Name: gorp_migrations gorp_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY gorp_migrations + ADD CONSTRAINT gorp_migrations_pkey PRIMARY KEY (id); + + +-- +-- Name: history_assets history_assets_asset_code_asset_type_asset_issuer_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_asset_code_asset_type_asset_issuer_key UNIQUE (asset_code, asset_type, asset_issuer); + + +-- +-- Name: history_assets history_assets_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_pkey PRIMARY KEY (id); + + +-- +-- Name: history_operation_participants history_operation_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants + ADD CONSTRAINT history_operation_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: history_transaction_participants history_transaction_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants + ADD CONSTRAINT history_transaction_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: asset_by_issuer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX asset_by_issuer ON history_assets USING btree (asset_issuer); + + +-- +-- Name: by_account; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_account ON history_transactions USING btree (account, account_sequence); + + +-- +-- Name: by_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_hash ON history_transactions USING btree (transaction_hash); + + +-- +-- Name: by_ledger; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_ledger ON history_transactions USING btree (ledger_sequence, application_order); + + +-- +-- Name: hist_e_by_order; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_by_order ON history_effects USING btree (history_operation_id, "order"); + + +-- +-- Name: hist_e_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_id ON history_effects USING btree (history_account_id, history_operation_id, "order"); + + +-- +-- Name: hist_op_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_op_p_id ON history_operation_participants USING btree (history_account_id, history_operation_id); + + +-- +-- Name: hist_tx_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_tx_p_id ON history_transaction_participants USING btree (history_account_id, history_transaction_id); + + +-- +-- Name: hop_by_hoid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX hop_by_hoid ON history_operation_participants USING btree (history_operation_id); + + +-- +-- Name: hs_ledger_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_ledger_by_id ON history_ledgers USING btree (id); + + +-- +-- Name: hs_transaction_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_transaction_by_id ON history_transactions USING btree (id); + + +-- +-- Name: htp_by_htid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htp_by_htid ON history_transaction_participants USING btree (history_transaction_id); + + +-- +-- Name: htrd_by_offer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_by_offer ON history_trades USING btree (offer_id); + + +-- +-- Name: htrd_counter_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_counter_lookup ON history_trades USING btree (counter_asset_id); + + +-- +-- Name: htrd_pair_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_pair_time_lookup ON history_trades USING btree (base_asset_id, counter_asset_id, ledger_closed_at); + + +-- +-- Name: htrd_pid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX htrd_pid ON history_trades USING btree (history_operation_id, "order"); + + +-- +-- Name: htrd_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_time_lookup ON history_trades USING btree (ledger_closed_at); + + +-- +-- Name: index_history_accounts_on_address; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_address ON history_accounts USING btree (address); + + +-- +-- Name: index_history_accounts_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_id ON history_accounts USING btree (id); + + +-- +-- Name: index_history_effects_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_effects_on_type ON history_effects USING btree (type); + + +-- +-- Name: index_history_ledgers_on_closed_at; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_closed_at ON history_ledgers USING btree (closed_at); + + +-- +-- Name: index_history_ledgers_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_id ON history_ledgers USING btree (id); + + +-- +-- Name: index_history_ledgers_on_importer_version; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_importer_version ON history_ledgers USING btree (importer_version); + + +-- +-- Name: index_history_ledgers_on_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_ledger_hash ON history_ledgers USING btree (ledger_hash); + + +-- +-- Name: index_history_ledgers_on_previous_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_previous_ledger_hash ON history_ledgers USING btree (previous_ledger_hash); + + +-- +-- Name: index_history_ledgers_on_sequence; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_sequence ON history_ledgers USING btree (sequence); + + +-- +-- Name: index_history_operations_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_operations_on_id ON history_operations USING btree (id); + + +-- +-- Name: index_history_operations_on_transaction_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_transaction_id ON history_operations USING btree (transaction_id); + + +-- +-- Name: index_history_operations_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_type ON history_operations USING btree (type); + + +-- +-- Name: index_history_transactions_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_transactions_on_id ON history_transactions USING btree (id); + + +-- +-- Name: trade_effects_by_order_book; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX trade_effects_by_order_book ON history_effects USING btree (((details ->> 'sold_asset_type'::text)), ((details ->> 'sold_asset_code'::text)), ((details ->> 'sold_asset_issuer'::text)), ((details ->> 'bought_asset_type'::text)), ((details ->> 'bought_asset_code'::text)), ((details ->> 'bought_asset_issuer'::text))) WHERE (type = 33); + + +-- +-- Name: history_trades history_trades_base_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_account_id_fkey FOREIGN KEY (base_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_base_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_asset_id_fkey FOREIGN KEY (base_asset_id) REFERENCES history_assets(id); + + +-- +-- Name: history_trades history_trades_counter_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_account_id_fkey FOREIGN KEY (counter_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_counter_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_asset_id_fkey FOREIGN KEY (counter_asset_id) REFERENCES history_assets(id); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/paths.rb b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/paths.rb new file mode 100644 index 0000000..86ad1ed --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/paths.rb @@ -0,0 +1,65 @@ +#address: GDSBCQO34HWPGUGQSP3QBFEXVTSR2PW46UIGTHVWGWJGQKH3AFNHXHXN +account :gateway, Stellar::KeyPair.from_seed("SDHZO6NSO3OXIOORMZF4CAMYM37OK7E2OB3JCHT2ZD273ELK2QJRVNDR") +#address: GARSFJNXJIHO6ULUBK3DBYKVSIZE7SC72S5DYBCHU7DKL22UXKVD7MXP +account :payer, Stellar::KeyPair.from_seed("SC2RRVCKKDT5HTUVJLHB4YCY4BXRI35S2R2XC2X3S3NPR46ITKB5E4G7") +#address: GAEDTJ4PPEFVW5XV2S7LUXBEHNQMX5Q2GM562RJGOQG7GVCE5H3HIB4V +account :payee, Stellar::KeyPair.from_seed("SBEJ6AEIE2374O3YFBSVV7XI7QAWEKBYBWFGHHLMMPRH7W2O2NVB5NGU") +#address: GA2NC4ZOXMXLVQAQQ5IQKJX47M3PKBQV2N5UV5Z4OXLQJ3CKMBA2O2YL +account :trader, Stellar::KeyPair.from_seed("SAAHOOTVIZJVXOEPCTNKYTYOTKZA3MFXJ3AIWEVCL4EH4HOPQBBOUTAA") + +use_manual_close + +create_account :gateway +create_account :payer +create_account :payee +create_account :trader + +close_ledger + +trust :payer, :gateway, "USD" +trust :payee, :gateway, "EUR" + +trust :trader, :gateway, "USD" +trust :trader, :gateway, "EUR" + +# one hop path +trust :trader, :gateway, "1" +# two hop path +trust :trader, :gateway, "21" +trust :trader, :gateway, "22" + +# three hop path +trust :trader, :gateway, "31" +trust :trader, :gateway, "32" +trust :trader, :gateway, "33" + +close_ledger + +payment :gateway, :payer, ["USD", :gateway, 5000] +payment :gateway, :trader, ["EUR", :gateway, 5000] +payment :gateway, :trader, ["1", :gateway, 5000] +payment :gateway, :trader, ["21", :gateway, 5000] +payment :gateway, :trader, ["22", :gateway, 5000] +payment :gateway, :trader, ["31", :gateway, 5000] +payment :gateway, :trader, ["32", :gateway, 5000] +payment :gateway, :trader, ["33", :gateway, 5000] + +close_ledger + +offer :trader, {for:["USD", :gateway], sell:["EUR", :gateway]}, 10, 0.5 +offer :gateway, {for:["USD", :gateway], sell:["EUR", :gateway]}, 10, 1.0 +offer :gateway, {for:["USD", :gateway], sell:["EUR", :gateway]}, 10, 0.5 + +offer :trader, {for:["USD", :gateway], sell:["1", :gateway]}, 20, 1.0 +offer :trader, {for:["1", :gateway], sell:["EUR", :gateway]}, 20, 1.0 + +offer :trader, {for:["USD", :gateway], sell:["21", :gateway]}, 30, 1.0 +offer :trader, {for:["21", :gateway], sell:["22", :gateway]}, 30, 1.0 +offer :trader, {for:["22", :gateway], sell:["EUR", :gateway]}, 30, 1.0 + +offer :trader, {for:["USD", :gateway], sell:["31", :gateway]}, 40, 2.0 +offer :trader, {for:["31", :gateway], sell:["32", :gateway]}, 40, 2.0 +offer :trader, {for:["32", :gateway], sell:["33", :gateway]}, 40, 2.0 +offer :trader, {for:["33", :gateway], sell:["EUR", :gateway]}, 40, 2.0 + +offer :gateway, {for:["USD", :gateway], sell: :native}, 1000, 0.1 diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/self_send-core.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/self_send-core.sql new file mode 100644 index 0000000..28f0cd5 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/self_send-core.sql @@ -0,0 +1,687 @@ +running recipe +recipe finished, closing ledger +ledger closed +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; +SET row_security = off; + +SET search_path = public, pg_catalog; + +DROP INDEX IF EXISTS public.signersaccount; +DROP INDEX IF EXISTS public.sellingissuerindex; +DROP INDEX IF EXISTS public.scpquorumsbyseq; +DROP INDEX IF EXISTS public.scpenvsbyseq; +DROP INDEX IF EXISTS public.priceindex; +DROP INDEX IF EXISTS public.ledgersbyseq; +DROP INDEX IF EXISTS public.histfeebyseq; +DROP INDEX IF EXISTS public.histbyseq; +DROP INDEX IF EXISTS public.buyingissuerindex; +DROP INDEX IF EXISTS public.accountbalances; +ALTER TABLE IF EXISTS ONLY public.txhistory DROP CONSTRAINT IF EXISTS txhistory_pkey; +ALTER TABLE IF EXISTS ONLY public.txfeehistory DROP CONSTRAINT IF EXISTS txfeehistory_pkey; +ALTER TABLE IF EXISTS ONLY public.trustlines DROP CONSTRAINT IF EXISTS trustlines_pkey; +ALTER TABLE IF EXISTS ONLY public.storestate DROP CONSTRAINT IF EXISTS storestate_pkey; +ALTER TABLE IF EXISTS ONLY public.signers DROP CONSTRAINT IF EXISTS signers_pkey; +ALTER TABLE IF EXISTS ONLY public.scpquorums DROP CONSTRAINT IF EXISTS scpquorums_pkey; +ALTER TABLE IF EXISTS ONLY public.pubsub DROP CONSTRAINT IF EXISTS pubsub_pkey; +ALTER TABLE IF EXISTS ONLY public.publishqueue DROP CONSTRAINT IF EXISTS publishqueue_pkey; +ALTER TABLE IF EXISTS ONLY public.peers DROP CONSTRAINT IF EXISTS peers_pkey; +ALTER TABLE IF EXISTS ONLY public.offers DROP CONSTRAINT IF EXISTS offers_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_ledgerseq_key; +ALTER TABLE IF EXISTS ONLY public.ban DROP CONSTRAINT IF EXISTS ban_pkey; +ALTER TABLE IF EXISTS ONLY public.accounts DROP CONSTRAINT IF EXISTS accounts_pkey; +ALTER TABLE IF EXISTS ONLY public.accountdata DROP CONSTRAINT IF EXISTS accountdata_pkey; +DROP TABLE IF EXISTS public.txhistory; +DROP TABLE IF EXISTS public.txfeehistory; +DROP TABLE IF EXISTS public.trustlines; +DROP TABLE IF EXISTS public.storestate; +DROP TABLE IF EXISTS public.signers; +DROP TABLE IF EXISTS public.scpquorums; +DROP TABLE IF EXISTS public.scphistory; +DROP TABLE IF EXISTS public.pubsub; +DROP TABLE IF EXISTS public.publishqueue; +DROP TABLE IF EXISTS public.peers; +DROP TABLE IF EXISTS public.offers; +DROP TABLE IF EXISTS public.ledgerheaders; +DROP TABLE IF EXISTS public.ban; +DROP TABLE IF EXISTS public.accounts; +DROP TABLE IF EXISTS public.accountdata; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: accountdata; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accountdata ( + accountid character varying(56) NOT NULL, + dataname character varying(64) NOT NULL, + datavalue character varying(112) NOT NULL, + lastmodified integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accounts ( + accountid character varying(56) NOT NULL, + balance bigint NOT NULL, + seqnum bigint NOT NULL, + numsubentries integer NOT NULL, + inflationdest character varying(56), + homedomain character varying(32) NOT NULL, + thresholds text NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT accounts_balance_check CHECK ((balance >= 0)), + CONSTRAINT accounts_numsubentries_check CHECK ((numsubentries >= 0)) +); + + +-- +-- Name: ban; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ban ( + nodeid character(56) NOT NULL +); + + +-- +-- Name: ledgerheaders; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ledgerheaders ( + ledgerhash character(64) NOT NULL, + prevhash character(64) NOT NULL, + bucketlisthash character(64) NOT NULL, + ledgerseq integer, + closetime bigint NOT NULL, + data text NOT NULL, + CONSTRAINT ledgerheaders_closetime_check CHECK ((closetime >= 0)), + CONSTRAINT ledgerheaders_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: offers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE offers ( + sellerid character varying(56) NOT NULL, + offerid bigint NOT NULL, + sellingassettype integer NOT NULL, + sellingassetcode character varying(12), + sellingissuer character varying(56), + buyingassettype integer NOT NULL, + buyingassetcode character varying(12), + buyingissuer character varying(56), + amount bigint NOT NULL, + pricen integer NOT NULL, + priced integer NOT NULL, + price double precision NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT offers_amount_check CHECK ((amount >= 0)), + CONSTRAINT offers_offerid_check CHECK ((offerid >= 0)) +); + + +-- +-- Name: peers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE peers ( + ip character varying(15) NOT NULL, + port integer DEFAULT 0 NOT NULL, + nextattempt timestamp without time zone NOT NULL, + numfailures integer DEFAULT 0 NOT NULL, + CONSTRAINT peers_numfailures_check CHECK ((numfailures >= 0)), + CONSTRAINT peers_port_check CHECK (((port > 0) AND (port <= 65535))) +); + + +-- +-- Name: publishqueue; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE publishqueue ( + ledger integer NOT NULL, + state text +); + + +-- +-- Name: pubsub; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE pubsub ( + resid character(32) NOT NULL, + lastread integer +); + + +-- +-- Name: scphistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scphistory ( + nodeid character(56) NOT NULL, + ledgerseq integer NOT NULL, + envelope text NOT NULL, + CONSTRAINT scphistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: scpquorums; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scpquorums ( + qsethash character(64) NOT NULL, + lastledgerseq integer NOT NULL, + qset text NOT NULL, + CONSTRAINT scpquorums_lastledgerseq_check CHECK ((lastledgerseq >= 0)) +); + + +-- +-- Name: signers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE signers ( + accountid character varying(56) NOT NULL, + publickey character varying(56) NOT NULL, + weight integer NOT NULL +); + + +-- +-- Name: storestate; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE storestate ( + statename character(32) NOT NULL, + state text +); + + +-- +-- Name: trustlines; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE trustlines ( + accountid character varying(56) NOT NULL, + assettype integer NOT NULL, + issuer character varying(56) NOT NULL, + assetcode character varying(12) NOT NULL, + tlimit bigint NOT NULL, + balance bigint NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT trustlines_balance_check CHECK ((balance >= 0)), + CONSTRAINT trustlines_tlimit_check CHECK ((tlimit > 0)) +); + + +-- +-- Name: txfeehistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txfeehistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txchanges text NOT NULL, + CONSTRAINT txfeehistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: txhistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txhistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txbody text NOT NULL, + txresult text NOT NULL, + txmeta text NOT NULL, + CONSTRAINT txhistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Data for Name: accountdata; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO accounts VALUES ('GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 999999998999999900, 1, 0, NULL, '', 'AQAAAA==', 0, 2); +INSERT INTO accounts VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 999999900, 8589934593, 0, NULL, '', 'AQAAAA==', 0, 3); + + +-- +-- Data for Name: ban; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: ledgerheaders; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO ledgerheaders VALUES ('63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', '0000000000000000000000000000000000000000000000000000000000000000', '572a2e32ff248a07b0e70fd1f6d318c1facd20b6cc08c33d5775259868125a16', 1, 0, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXKi4y/ySKB7DnD9H20xjB+s0gtswIwz1XdSWYaBJaFgAAAAEN4Lazp2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAX14QAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('636c66f80f6ff82f72b9d770724cc2f7e5720f4e6cc3e4d02d4388722ed645ae', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', '1cacc9fc144882c3d024d85dbebd2676445b1fbcb3617ff0f425eeb1b53b3f53', 2, 1508958279, 'AAAACGPZj1Nu5o0bJ7W4nyOvUxG3Vpok+vFAOtC1K2M7B76ZoHUUqPO1SoXWBQWiQne6+AHcM0CVKtgN/zEmvaDE04AAAAAAWfDgRwAAAAIAAAAIAAAAAQAAAAgAAAAIAAAAAwAAJxAAAAAAEtgyinnIssW5tBeb2/tNZBp1rtCbIvdoa9kC/D9mgLwcrMn8FEiCw9Ak2F2+vSZ2RFsfvLNhf/D0Je6xtTs/UwAAAAIN4Lazp2QAAAAAAAAAAABkAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('8864dde81bd29ddba26fe3840e172a80ec323a5343bfa757cc4381779f6b56c5', '636c66f80f6ff82f72b9d770724cc2f7e5720f4e6cc3e4d02d4388722ed645ae', 'b5ad6ca954a8038442bcb82fdb51818da3242e51ff34cb275c860bbec88026df', 3, 1508958280, 'AAAACGNsZvgPb/gvcrnXcHJMwvflcg9ObMPk0C1DiHIu1kWuZ6nhFhoypreBud6Usl72BqBcGHP4WUIf6c+xZFR+s3UAAAAAWfDgSAAAAAAAAAAAHwHNsmRY+V05R8QcxzL6y8Pg5b8K5XPCts8of63QFDq1rWypVKgDhEK8uC/bUYGNoyQuUf80yydchgu+yIAm3wAAAAMN4Lazp2QAAAAAAAAAAADIAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); + + +-- +-- Data for Name: offers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: peers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: publishqueue; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: pubsub; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: scphistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scphistory VALUES ('GCINGCL523E6JYXFJ4K45S6QJKOVJDVGTBLY3PEHPEYRB6E4E3SE7T6R', 2, 'AAAAAJDTCX3WyeTi5U8VzsvQSp1UjqaYV428h3kxEPicJuRPAAAAAAAAAAIAAAACAAAAAQAAAEigdRSo87VKhdYFBaJCd7r4AdwzQJUq2A3/MSa9oMTTgAAAAABZ8OBHAAAAAgAAAAgAAAABAAAACAAAAAgAAAADAAAnEAAAAAAAAAABB9WaOAMcw7jjZuhinHYT57R/iSuhkFS4UvcuBuPsGXUAAABAvlbmsML18iUnP4PKYYBme51LFahTguF+FOMg+Ij5A4d62y6itXMprk4BTERVZaZJYSwAiqIcS5HCdhDwmuawAg=='); +INSERT INTO scphistory VALUES ('GCINGCL523E6JYXFJ4K45S6QJKOVJDVGTBLY3PEHPEYRB6E4E3SE7T6R', 3, 'AAAAAJDTCX3WyeTi5U8VzsvQSp1UjqaYV428h3kxEPicJuRPAAAAAAAAAAMAAAACAAAAAQAAADBnqeEWGjKmt4G53pSyXvYGoFwYc/hZQh/pz7FkVH6zdQAAAABZ8OBIAAAAAAAAAAAAAAABB9WaOAMcw7jjZuhinHYT57R/iSuhkFS4UvcuBuPsGXUAAABAKuyN3MAX4OnfqVJ1ZxjJviInkWoeUTU4vEAi1HEntqWfk6tzqa0Tk1odk7WN+wCLw9i8g/JvKJf9aTXne/lSDQ=='); + + +-- +-- Data for Name: scpquorums; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scpquorums VALUES ('07d59a38031cc3b8e366e8629c7613e7b47f892ba19054b852f72e06e3ec1975', 3, 'AAAAAQAAAAEAAAAAkNMJfdbJ5OLlTxXOy9BKnVSOpphXjbyHeTEQ+Jwm5E8AAAAA'); + + +-- +-- Data for Name: signers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: storestate; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO storestate VALUES ('databaseschema ', '5'); +INSERT INTO storestate VALUES ('forcescponnextlaunch ', 'false'); +INSERT INTO storestate VALUES ('lastclosedledger ', '8864dde81bd29ddba26fe3840e172a80ec323a5343bfa757cc4381779f6b56c5'); +INSERT INTO storestate VALUES ('historyarchivestate ', '{ + "version": 1, + "server": "v0.6.3-66-gd66575cf", + "currentLedger": 3, + "currentBuckets": [ + { + "curr": "a8a9304e6c0912dbcfd8d17f5c985c447f165e61e2cc1ba33fc9bb56e03beee1", + "next": { + "state": 0 + }, + "snap": "ef31a20a398ee73ce22275ea8177786bac54656f33dcc4f3fec60d55ddf163d9" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 1, + "output": "ef31a20a398ee73ce22275ea8177786bac54656f33dcc4f3fec60d55ddf163d9" + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + } + ] +}'); +INSERT INTO storestate VALUES ('lastscpdata ', 'AAAAAgAAAACQ0wl91snk4uVPFc7L0EqdVI6mmFeNvId5MRD4nCbkTwAAAAAAAAADAAAAAwfVmjgDHMO442boYpx2E+e0f4kroZBUuFL3Lgbj7Bl1AAAAAQAAADBnqeEWGjKmt4G53pSyXvYGoFwYc/hZQh/pz7FkVH6zdQAAAABZ8OBIAAAAAAAAAAAAAAABAAAAMGep4RYaMqa3gbnelLJe9gagXBhz+FlCH+nPsWRUfrN1AAAAAFnw4EgAAAAAAAAAAAAAAEBUOspXJj+20BeruOF6cr4x3J/zG2+gEQHINlPwkCYb4oPVbB++3p9hIe/Qq0URnZQH2xrC1uKUYAHymx/nGN8PAAAAAJDTCX3WyeTi5U8VzsvQSp1UjqaYV428h3kxEPicJuRPAAAAAAAAAAMAAAACAAAAAQAAADBnqeEWGjKmt4G53pSyXvYGoFwYc/hZQh/pz7FkVH6zdQAAAABZ8OBIAAAAAAAAAAAAAAABB9WaOAMcw7jjZuhinHYT57R/iSuhkFS4UvcuBuPsGXUAAABAKuyN3MAX4OnfqVJ1ZxjJviInkWoeUTU4vEAi1HEntqWfk6tzqa0Tk1odk7WN+wCLw9i8g/JvKJf9aTXne/lSDQAAAAFjbGb4D2/4L3K513ByTML35XIPTmzD5NAtQ4hyLtZFrgAAAAEAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAABkAAAAAgAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAAAAAAAAvrwgAAAAAAAAAABruS+TAAAAECxaubprwZCyJVYV7eWzAQjzwKrnqKPbO2UeeoiJHBaE0FHVgxceU3By4gJfMn7ZK7HotCmOktpu7ANRaEdYhkAAAAAAQAAAAEAAAABAAAAAJDTCX3WyeTi5U8VzsvQSp1UjqaYV428h3kxEPicJuRPAAAAAA=='); + + +-- +-- Data for Name: trustlines; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: txfeehistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txfeehistory VALUES ('2374e99349b9ef7dba9a5db3339b78fda8f34777b1af33ba468ad5c0df946d4d', 2, 1, 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('f5971def3ff08c05ce222e7d71bf43703bb98ea1f776ea73085265d35dfd42ab', 3, 1, 'AAAAAgAAAAMAAAACAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); + + +-- +-- Data for Name: txhistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txhistory VALUES ('2374e99349b9ef7dba9a5db3339b78fda8f34777b1af33ba468ad5c0df946d4d', 2, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAO5rKAAAAAAAAAAABVvwF9wAAAECDzqvkQBQoNAJifPRXDoLhvtycT3lFPCQ51gkdsFHaBNWw05S/VhW0Xgkr0CBPE4NaFV2Kmcs3ZwLmib4TRrML', 'I3Tpk0m57326ml2zM5t4/ajzR3exrzO6RorVwN+UbU0AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2s2vJNZwAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('f5971def3ff08c05ce222e7d71bf43703bb98ea1f776ea73085265d35dfd42ab', 3, 1, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAAAAL68IAAAAAAAAAAAa7kvkwAAABAsWrm6a8GQsiVWFe3lswEI88Cq56ij2ztlHnqIiRwWhNBR1YMXHlNwcuICXzJ+2Sux6LQpjpLabuwDUWhHWIZAA==', '9Zcd7z/wjAXOIi59cb9DcDu5jqH3dupzCFJl0139QqsAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAAA'); + + +-- +-- Name: accountdata accountdata_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accountdata + ADD CONSTRAINT accountdata_pkey PRIMARY KEY (accountid, dataname); + + +-- +-- Name: accounts accounts_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accounts + ADD CONSTRAINT accounts_pkey PRIMARY KEY (accountid); + + +-- +-- Name: ban ban_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ban + ADD CONSTRAINT ban_pkey PRIMARY KEY (nodeid); + + +-- +-- Name: ledgerheaders ledgerheaders_ledgerseq_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_ledgerseq_key UNIQUE (ledgerseq); + + +-- +-- Name: ledgerheaders ledgerheaders_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_pkey PRIMARY KEY (ledgerhash); + + +-- +-- Name: offers offers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY offers + ADD CONSTRAINT offers_pkey PRIMARY KEY (offerid); + + +-- +-- Name: peers peers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY peers + ADD CONSTRAINT peers_pkey PRIMARY KEY (ip, port); + + +-- +-- Name: publishqueue publishqueue_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY publishqueue + ADD CONSTRAINT publishqueue_pkey PRIMARY KEY (ledger); + + +-- +-- Name: pubsub pubsub_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY pubsub + ADD CONSTRAINT pubsub_pkey PRIMARY KEY (resid); + + +-- +-- Name: scpquorums scpquorums_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY scpquorums + ADD CONSTRAINT scpquorums_pkey PRIMARY KEY (qsethash); + + +-- +-- Name: signers signers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY signers + ADD CONSTRAINT signers_pkey PRIMARY KEY (accountid, publickey); + + +-- +-- Name: storestate storestate_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY storestate + ADD CONSTRAINT storestate_pkey PRIMARY KEY (statename); + + +-- +-- Name: trustlines trustlines_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY trustlines + ADD CONSTRAINT trustlines_pkey PRIMARY KEY (accountid, issuer, assetcode); + + +-- +-- Name: txfeehistory txfeehistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txfeehistory + ADD CONSTRAINT txfeehistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: txhistory txhistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txhistory + ADD CONSTRAINT txhistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: accountbalances; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX accountbalances ON accounts USING btree (balance) WHERE (balance >= 1000000000); + + +-- +-- Name: buyingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX buyingissuerindex ON offers USING btree (buyingissuer); + + +-- +-- Name: histbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histbyseq ON txhistory USING btree (ledgerseq); + + +-- +-- Name: histfeebyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histfeebyseq ON txfeehistory USING btree (ledgerseq); + + +-- +-- Name: ledgersbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX ledgersbyseq ON ledgerheaders USING btree (ledgerseq); + + +-- +-- Name: priceindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX priceindex ON offers USING btree (price); + + +-- +-- Name: scpenvsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpenvsbyseq ON scphistory USING btree (ledgerseq); + + +-- +-- Name: scpquorumsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpquorumsbyseq ON scpquorums USING btree (lastledgerseq); + + +-- +-- Name: sellingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX sellingissuerindex ON offers USING btree (sellingissuer); + + +-- +-- Name: signersaccount; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX signersaccount ON signers USING btree (accountid); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/self_send-horizon.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/self_send-horizon.sql new file mode 100644 index 0000000..4d6d3e8 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/self_send-horizon.sql @@ -0,0 +1,760 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; + +SET search_path = public, pg_catalog; + +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_account_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_account_id_fkey; +DROP INDEX IF EXISTS public.trade_effects_by_order_book; +DROP INDEX IF EXISTS public.index_history_transactions_on_id; +DROP INDEX IF EXISTS public.index_history_operations_on_type; +DROP INDEX IF EXISTS public.index_history_operations_on_transaction_id; +DROP INDEX IF EXISTS public.index_history_operations_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_sequence; +DROP INDEX IF EXISTS public.index_history_ledgers_on_previous_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_importer_version; +DROP INDEX IF EXISTS public.index_history_ledgers_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_closed_at; +DROP INDEX IF EXISTS public.index_history_effects_on_type; +DROP INDEX IF EXISTS public.index_history_accounts_on_id; +DROP INDEX IF EXISTS public.index_history_accounts_on_address; +DROP INDEX IF EXISTS public.htrd_time_lookup; +DROP INDEX IF EXISTS public.htrd_pid; +DROP INDEX IF EXISTS public.htrd_pair_time_lookup; +DROP INDEX IF EXISTS public.htrd_counter_lookup; +DROP INDEX IF EXISTS public.htrd_by_offer; +DROP INDEX IF EXISTS public.htp_by_htid; +DROP INDEX IF EXISTS public.hs_transaction_by_id; +DROP INDEX IF EXISTS public.hs_ledger_by_id; +DROP INDEX IF EXISTS public.hop_by_hoid; +DROP INDEX IF EXISTS public.hist_tx_p_id; +DROP INDEX IF EXISTS public.hist_op_p_id; +DROP INDEX IF EXISTS public.hist_e_id; +DROP INDEX IF EXISTS public.hist_e_by_order; +DROP INDEX IF EXISTS public.by_ledger; +DROP INDEX IF EXISTS public.by_hash; +DROP INDEX IF EXISTS public.by_account; +DROP INDEX IF EXISTS public.asset_by_issuer; +ALTER TABLE IF EXISTS ONLY public.history_transaction_participants DROP CONSTRAINT IF EXISTS history_transaction_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_operation_participants DROP CONSTRAINT IF EXISTS history_operation_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_asset_code_asset_type_asset_issuer_key; +ALTER TABLE IF EXISTS ONLY public.gorp_migrations DROP CONSTRAINT IF EXISTS gorp_migrations_pkey; +ALTER TABLE IF EXISTS public.history_transaction_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_operation_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_assets ALTER COLUMN id DROP DEFAULT; +DROP TABLE IF EXISTS public.history_transactions; +DROP SEQUENCE IF EXISTS public.history_transaction_participants_id_seq; +DROP TABLE IF EXISTS public.history_transaction_participants; +DROP TABLE IF EXISTS public.history_trades; +DROP TABLE IF EXISTS public.history_operations; +DROP SEQUENCE IF EXISTS public.history_operation_participants_id_seq; +DROP TABLE IF EXISTS public.history_operation_participants; +DROP TABLE IF EXISTS public.history_ledgers; +DROP TABLE IF EXISTS public.history_effects; +DROP SEQUENCE IF EXISTS public.history_assets_id_seq; +DROP TABLE IF EXISTS public.history_assets; +DROP TABLE IF EXISTS public.history_accounts; +DROP SEQUENCE IF EXISTS public.history_accounts_id_seq; +DROP TABLE IF EXISTS public.gorp_migrations; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: gorp_migrations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE gorp_migrations ( + id text NOT NULL, + applied_at timestamp with time zone +); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_accounts_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_accounts ( + id bigint DEFAULT nextval('history_accounts_id_seq'::regclass) NOT NULL, + address character varying(64) +); + + +-- +-- Name: history_assets; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_assets ( + id integer NOT NULL, + asset_type character varying(64) NOT NULL, + asset_code character varying(12) NOT NULL, + asset_issuer character varying(56) NOT NULL +); + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_assets_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_assets_id_seq OWNED BY history_assets.id; + + +-- +-- Name: history_effects; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_effects ( + history_account_id bigint NOT NULL, + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + type integer NOT NULL, + details jsonb +); + + +-- +-- Name: history_ledgers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_ledgers ( + sequence integer NOT NULL, + ledger_hash character varying(64) NOT NULL, + previous_ledger_hash character varying(64), + transaction_count integer DEFAULT 0 NOT NULL, + operation_count integer DEFAULT 0 NOT NULL, + closed_at timestamp without time zone NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + importer_version integer DEFAULT 1 NOT NULL, + total_coins bigint NOT NULL, + fee_pool bigint NOT NULL, + base_fee integer NOT NULL, + base_reserve integer NOT NULL, + max_tx_set_size integer NOT NULL, + protocol_version integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: history_operation_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operation_participants ( + id integer NOT NULL, + history_operation_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_operation_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_operation_participants_id_seq OWNED BY history_operation_participants.id; + + +-- +-- Name: history_operations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operations ( + id bigint NOT NULL, + transaction_id bigint NOT NULL, + application_order integer NOT NULL, + type integer NOT NULL, + details jsonb, + source_account character varying(64) DEFAULT ''::character varying NOT NULL +); + + +-- +-- Name: history_trades; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_trades ( + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + ledger_closed_at timestamp without time zone NOT NULL, + offer_id bigint NOT NULL, + base_account_id bigint NOT NULL, + base_asset_id bigint NOT NULL, + base_amount bigint NOT NULL, + counter_account_id bigint NOT NULL, + counter_asset_id bigint NOT NULL, + counter_amount bigint NOT NULL, + base_is_seller boolean, + CONSTRAINT history_trades_base_amount_check CHECK ((base_amount > 0)), + CONSTRAINT history_trades_check CHECK ((base_asset_id < counter_asset_id)), + CONSTRAINT history_trades_counter_amount_check CHECK ((counter_amount > 0)) +); + + +-- +-- Name: history_transaction_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transaction_participants ( + id integer NOT NULL, + history_transaction_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_transaction_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_transaction_participants_id_seq OWNED BY history_transaction_participants.id; + + +-- +-- Name: history_transactions; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transactions ( + transaction_hash character varying(64) NOT NULL, + ledger_sequence integer NOT NULL, + application_order integer NOT NULL, + account character varying(64) NOT NULL, + account_sequence bigint NOT NULL, + fee_paid integer NOT NULL, + operation_count integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + tx_envelope text NOT NULL, + tx_result text NOT NULL, + tx_meta text NOT NULL, + tx_fee_meta text NOT NULL, + signatures character varying(96)[] DEFAULT '{}'::character varying[] NOT NULL, + memo_type character varying DEFAULT 'none'::character varying NOT NULL, + memo character varying, + time_bounds int8range +); + + +-- +-- Name: history_assets id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets ALTER COLUMN id SET DEFAULT nextval('history_assets_id_seq'::regclass); + + +-- +-- Name: history_operation_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants ALTER COLUMN id SET DEFAULT nextval('history_operation_participants_id_seq'::regclass); + + +-- +-- Name: history_transaction_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants ALTER COLUMN id SET DEFAULT nextval('history_transaction_participants_id_seq'::regclass); + + +-- +-- Data for Name: gorp_migrations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO gorp_migrations VALUES ('1_initial_schema.sql', '2017-10-25 12:02:41.355815-07'); +INSERT INTO gorp_migrations VALUES ('2_index_participants_by_toid.sql', '2017-10-25 12:02:41.35913-07'); +INSERT INTO gorp_migrations VALUES ('3_use_sequence_in_history_accounts.sql', '2017-10-25 12:02:41.361119-07'); +INSERT INTO gorp_migrations VALUES ('4_add_protocol_version.sql', '2017-10-25 12:02:41.365998-07'); +INSERT INTO gorp_migrations VALUES ('5_create_trades_table.sql', '2017-10-25 12:02:41.370443-07'); +INSERT INTO gorp_migrations VALUES ('6_create_assets_table.sql', '2017-10-25 12:02:41.373746-07'); +INSERT INTO gorp_migrations VALUES ('7_modify_trades_table.sql', '2017-10-25 12:02:41.381902-07'); + + +-- +-- Data for Name: history_accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_accounts VALUES (1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_accounts VALUES (2, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_accounts_id_seq', 2, true); + + +-- +-- Data for Name: history_assets; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_assets_id_seq', 1, false); + + +-- +-- Data for Name: history_effects; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_effects VALUES (2, 8589938689, 1, 0, '{"starting_balance": "100.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589938689, 2, 3, '{"amount": "100.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (2, 8589938689, 3, 10, '{"weight": 1, "public_key": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU"}'); +INSERT INTO history_effects VALUES (2, 12884905985, 1, 2, '{"amount": "5.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (2, 12884905985, 2, 3, '{"amount": "5.0000000", "asset_type": "native"}'); + + +-- +-- Data for Name: history_ledgers; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_ledgers VALUES (1, '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', NULL, 0, 0, '1970-01-01 00:00:00', '2017-10-25 19:04:44.835058', '2017-10-25 19:04:44.835058', 4294967296, 10, 1000000000000000000, 0, 100, 100000000, 100, 0); +INSERT INTO history_ledgers VALUES (2, '636c66f80f6ff82f72b9d770724cc2f7e5720f4e6cc3e4d02d4388722ed645ae', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', 1, 1, '2017-10-25 19:04:39', '2017-10-25 19:04:44.840129', '2017-10-25 19:04:44.840129', 8589934592, 10, 1000000000000000000, 100, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (3, '8864dde81bd29ddba26fe3840e172a80ec323a5343bfa757cc4381779f6b56c5', '636c66f80f6ff82f72b9d770724cc2f7e5720f4e6cc3e4d02d4388722ed645ae', 1, 1, '2017-10-25 19:04:40', '2017-10-25 19:04:44.864773', '2017-10-25 19:04:44.864773', 12884901888, 10, 1000000000000000000, 200, 100, 100000000, 10000, 8); + + +-- +-- Data for Name: history_operation_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operation_participants VALUES (1, 8589938689, 1); +INSERT INTO history_operation_participants VALUES (2, 8589938689, 2); +INSERT INTO history_operation_participants VALUES (3, 12884905985, 2); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_operation_participants_id_seq', 3, true); + + +-- +-- Data for Name: history_operations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operations VALUES (8589938689, 8589938688, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "starting_balance": "100.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (12884905985, 12884905984, 1, 1, '{"to": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "from": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "amount": "5.0000000", "asset_type": "native"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); + + +-- +-- Data for Name: history_trades; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: history_transaction_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transaction_participants VALUES (1, 8589938688, 1); +INSERT INTO history_transaction_participants VALUES (2, 8589938688, 2); +INSERT INTO history_transaction_participants VALUES (3, 12884905984, 2); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_transaction_participants_id_seq', 3, true); + + +-- +-- Data for Name: history_transactions; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transactions VALUES ('2374e99349b9ef7dba9a5db3339b78fda8f34777b1af33ba468ad5c0df946d4d', 2, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 1, 100, 1, '2017-10-25 19:04:44.840778', '2017-10-25 19:04:44.840778', 8589938688, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAO5rKAAAAAAAAAAABVvwF9wAAAECDzqvkQBQoNAJifPRXDoLhvtycT3lFPCQ51gkdsFHaBNWw05S/VhW0Xgkr0CBPE4NaFV2Kmcs3ZwLmib4TRrML', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2s2vJNZwAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{g86r5EAUKDQCYnz0Vw6C4b7cnE95RTwkOdYJHbBR2gTVsNOUv1YVtF4JK9AgTxODWhVdipnLN2cC5om+E0azCw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('f5971def3ff08c05ce222e7d71bf43703bb98ea1f776ea73085265d35dfd42ab', 3, 1, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934593, 100, 1, '2017-10-25 19:04:44.865633', '2017-10-25 19:04:44.865633', 12884905984, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAAAAL68IAAAAAAAAAAAa7kvkwAAABAsWrm6a8GQsiVWFe3lswEI88Cq56ij2ztlHnqIiRwWhNBR1YMXHlNwcuICXzJ+2Sux6LQpjpLabuwDUWhHWIZAA==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{sWrm6a8GQsiVWFe3lswEI88Cq56ij2ztlHnqIiRwWhNBR1YMXHlNwcuICXzJ+2Sux6LQpjpLabuwDUWhHWIZAA==}', 'none', NULL, NULL); + + +-- +-- Name: gorp_migrations gorp_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY gorp_migrations + ADD CONSTRAINT gorp_migrations_pkey PRIMARY KEY (id); + + +-- +-- Name: history_assets history_assets_asset_code_asset_type_asset_issuer_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_asset_code_asset_type_asset_issuer_key UNIQUE (asset_code, asset_type, asset_issuer); + + +-- +-- Name: history_assets history_assets_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_pkey PRIMARY KEY (id); + + +-- +-- Name: history_operation_participants history_operation_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants + ADD CONSTRAINT history_operation_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: history_transaction_participants history_transaction_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants + ADD CONSTRAINT history_transaction_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: asset_by_issuer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX asset_by_issuer ON history_assets USING btree (asset_issuer); + + +-- +-- Name: by_account; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_account ON history_transactions USING btree (account, account_sequence); + + +-- +-- Name: by_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_hash ON history_transactions USING btree (transaction_hash); + + +-- +-- Name: by_ledger; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_ledger ON history_transactions USING btree (ledger_sequence, application_order); + + +-- +-- Name: hist_e_by_order; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_by_order ON history_effects USING btree (history_operation_id, "order"); + + +-- +-- Name: hist_e_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_id ON history_effects USING btree (history_account_id, history_operation_id, "order"); + + +-- +-- Name: hist_op_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_op_p_id ON history_operation_participants USING btree (history_account_id, history_operation_id); + + +-- +-- Name: hist_tx_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_tx_p_id ON history_transaction_participants USING btree (history_account_id, history_transaction_id); + + +-- +-- Name: hop_by_hoid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX hop_by_hoid ON history_operation_participants USING btree (history_operation_id); + + +-- +-- Name: hs_ledger_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_ledger_by_id ON history_ledgers USING btree (id); + + +-- +-- Name: hs_transaction_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_transaction_by_id ON history_transactions USING btree (id); + + +-- +-- Name: htp_by_htid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htp_by_htid ON history_transaction_participants USING btree (history_transaction_id); + + +-- +-- Name: htrd_by_offer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_by_offer ON history_trades USING btree (offer_id); + + +-- +-- Name: htrd_counter_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_counter_lookup ON history_trades USING btree (counter_asset_id); + + +-- +-- Name: htrd_pair_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_pair_time_lookup ON history_trades USING btree (base_asset_id, counter_asset_id, ledger_closed_at); + + +-- +-- Name: htrd_pid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX htrd_pid ON history_trades USING btree (history_operation_id, "order"); + + +-- +-- Name: htrd_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_time_lookup ON history_trades USING btree (ledger_closed_at); + + +-- +-- Name: index_history_accounts_on_address; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_address ON history_accounts USING btree (address); + + +-- +-- Name: index_history_accounts_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_id ON history_accounts USING btree (id); + + +-- +-- Name: index_history_effects_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_effects_on_type ON history_effects USING btree (type); + + +-- +-- Name: index_history_ledgers_on_closed_at; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_closed_at ON history_ledgers USING btree (closed_at); + + +-- +-- Name: index_history_ledgers_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_id ON history_ledgers USING btree (id); + + +-- +-- Name: index_history_ledgers_on_importer_version; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_importer_version ON history_ledgers USING btree (importer_version); + + +-- +-- Name: index_history_ledgers_on_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_ledger_hash ON history_ledgers USING btree (ledger_hash); + + +-- +-- Name: index_history_ledgers_on_previous_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_previous_ledger_hash ON history_ledgers USING btree (previous_ledger_hash); + + +-- +-- Name: index_history_ledgers_on_sequence; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_sequence ON history_ledgers USING btree (sequence); + + +-- +-- Name: index_history_operations_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_operations_on_id ON history_operations USING btree (id); + + +-- +-- Name: index_history_operations_on_transaction_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_transaction_id ON history_operations USING btree (transaction_id); + + +-- +-- Name: index_history_operations_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_type ON history_operations USING btree (type); + + +-- +-- Name: index_history_transactions_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_transactions_on_id ON history_transactions USING btree (id); + + +-- +-- Name: trade_effects_by_order_book; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX trade_effects_by_order_book ON history_effects USING btree (((details ->> 'sold_asset_type'::text)), ((details ->> 'sold_asset_code'::text)), ((details ->> 'sold_asset_issuer'::text)), ((details ->> 'bought_asset_type'::text)), ((details ->> 'bought_asset_code'::text)), ((details ->> 'bought_asset_issuer'::text))) WHERE (type = 33); + + +-- +-- Name: history_trades history_trades_base_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_account_id_fkey FOREIGN KEY (base_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_base_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_asset_id_fkey FOREIGN KEY (base_asset_id) REFERENCES history_assets(id); + + +-- +-- Name: history_trades history_trades_counter_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_account_id_fkey FOREIGN KEY (counter_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_counter_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_asset_id_fkey FOREIGN KEY (counter_asset_id) REFERENCES history_assets(id); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/self_send.rb b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/self_send.rb new file mode 100644 index 0000000..3d9e5d6 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/self_send.rb @@ -0,0 +1,9 @@ +run_recipe File.dirname(__FILE__) + "/_common_accounts.rb" + +use_manual_close + +create_account :scott, :master, 100 + +close_ledger + +payment :scott, :scott, [:native, 5] diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/send_to_issuer-core.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/send_to_issuer-core.sql new file mode 100644 index 0000000..a748d98 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/send_to_issuer-core.sql @@ -0,0 +1,699 @@ +running recipe +recipe finished, closing ledger +ledger closed +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; +SET row_security = off; + +SET search_path = public, pg_catalog; + +DROP INDEX IF EXISTS public.signersaccount; +DROP INDEX IF EXISTS public.sellingissuerindex; +DROP INDEX IF EXISTS public.scpquorumsbyseq; +DROP INDEX IF EXISTS public.scpenvsbyseq; +DROP INDEX IF EXISTS public.priceindex; +DROP INDEX IF EXISTS public.ledgersbyseq; +DROP INDEX IF EXISTS public.histfeebyseq; +DROP INDEX IF EXISTS public.histbyseq; +DROP INDEX IF EXISTS public.buyingissuerindex; +DROP INDEX IF EXISTS public.accountbalances; +ALTER TABLE IF EXISTS ONLY public.txhistory DROP CONSTRAINT IF EXISTS txhistory_pkey; +ALTER TABLE IF EXISTS ONLY public.txfeehistory DROP CONSTRAINT IF EXISTS txfeehistory_pkey; +ALTER TABLE IF EXISTS ONLY public.trustlines DROP CONSTRAINT IF EXISTS trustlines_pkey; +ALTER TABLE IF EXISTS ONLY public.storestate DROP CONSTRAINT IF EXISTS storestate_pkey; +ALTER TABLE IF EXISTS ONLY public.signers DROP CONSTRAINT IF EXISTS signers_pkey; +ALTER TABLE IF EXISTS ONLY public.scpquorums DROP CONSTRAINT IF EXISTS scpquorums_pkey; +ALTER TABLE IF EXISTS ONLY public.pubsub DROP CONSTRAINT IF EXISTS pubsub_pkey; +ALTER TABLE IF EXISTS ONLY public.publishqueue DROP CONSTRAINT IF EXISTS publishqueue_pkey; +ALTER TABLE IF EXISTS ONLY public.peers DROP CONSTRAINT IF EXISTS peers_pkey; +ALTER TABLE IF EXISTS ONLY public.offers DROP CONSTRAINT IF EXISTS offers_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_ledgerseq_key; +ALTER TABLE IF EXISTS ONLY public.ban DROP CONSTRAINT IF EXISTS ban_pkey; +ALTER TABLE IF EXISTS ONLY public.accounts DROP CONSTRAINT IF EXISTS accounts_pkey; +ALTER TABLE IF EXISTS ONLY public.accountdata DROP CONSTRAINT IF EXISTS accountdata_pkey; +DROP TABLE IF EXISTS public.txhistory; +DROP TABLE IF EXISTS public.txfeehistory; +DROP TABLE IF EXISTS public.trustlines; +DROP TABLE IF EXISTS public.storestate; +DROP TABLE IF EXISTS public.signers; +DROP TABLE IF EXISTS public.scpquorums; +DROP TABLE IF EXISTS public.scphistory; +DROP TABLE IF EXISTS public.pubsub; +DROP TABLE IF EXISTS public.publishqueue; +DROP TABLE IF EXISTS public.peers; +DROP TABLE IF EXISTS public.offers; +DROP TABLE IF EXISTS public.ledgerheaders; +DROP TABLE IF EXISTS public.ban; +DROP TABLE IF EXISTS public.accounts; +DROP TABLE IF EXISTS public.accountdata; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: accountdata; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accountdata ( + accountid character varying(56) NOT NULL, + dataname character varying(64) NOT NULL, + datavalue character varying(112) NOT NULL, + lastmodified integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accounts ( + accountid character varying(56) NOT NULL, + balance bigint NOT NULL, + seqnum bigint NOT NULL, + numsubentries integer NOT NULL, + inflationdest character varying(56), + homedomain character varying(32) NOT NULL, + thresholds text NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT accounts_balance_check CHECK ((balance >= 0)), + CONSTRAINT accounts_numsubentries_check CHECK ((numsubentries >= 0)) +); + + +-- +-- Name: ban; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ban ( + nodeid character(56) NOT NULL +); + + +-- +-- Name: ledgerheaders; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ledgerheaders ( + ledgerhash character(64) NOT NULL, + prevhash character(64) NOT NULL, + bucketlisthash character(64) NOT NULL, + ledgerseq integer, + closetime bigint NOT NULL, + data text NOT NULL, + CONSTRAINT ledgerheaders_closetime_check CHECK ((closetime >= 0)), + CONSTRAINT ledgerheaders_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: offers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE offers ( + sellerid character varying(56) NOT NULL, + offerid bigint NOT NULL, + sellingassettype integer NOT NULL, + sellingassetcode character varying(12), + sellingissuer character varying(56), + buyingassettype integer NOT NULL, + buyingassetcode character varying(12), + buyingissuer character varying(56), + amount bigint NOT NULL, + pricen integer NOT NULL, + priced integer NOT NULL, + price double precision NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT offers_amount_check CHECK ((amount >= 0)), + CONSTRAINT offers_offerid_check CHECK ((offerid >= 0)) +); + + +-- +-- Name: peers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE peers ( + ip character varying(15) NOT NULL, + port integer DEFAULT 0 NOT NULL, + nextattempt timestamp without time zone NOT NULL, + numfailures integer DEFAULT 0 NOT NULL, + CONSTRAINT peers_numfailures_check CHECK ((numfailures >= 0)), + CONSTRAINT peers_port_check CHECK (((port > 0) AND (port <= 65535))) +); + + +-- +-- Name: publishqueue; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE publishqueue ( + ledger integer NOT NULL, + state text +); + + +-- +-- Name: pubsub; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE pubsub ( + resid character(32) NOT NULL, + lastread integer +); + + +-- +-- Name: scphistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scphistory ( + nodeid character(56) NOT NULL, + ledgerseq integer NOT NULL, + envelope text NOT NULL, + CONSTRAINT scphistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: scpquorums; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scpquorums ( + qsethash character(64) NOT NULL, + lastledgerseq integer NOT NULL, + qset text NOT NULL, + CONSTRAINT scpquorums_lastledgerseq_check CHECK ((lastledgerseq >= 0)) +); + + +-- +-- Name: signers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE signers ( + accountid character varying(56) NOT NULL, + publickey character varying(56) NOT NULL, + weight integer NOT NULL +); + + +-- +-- Name: storestate; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE storestate ( + statename character(32) NOT NULL, + state text +); + + +-- +-- Name: trustlines; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE trustlines ( + accountid character varying(56) NOT NULL, + assettype integer NOT NULL, + issuer character varying(56) NOT NULL, + assetcode character varying(12) NOT NULL, + tlimit bigint NOT NULL, + balance bigint NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT trustlines_balance_check CHECK ((balance >= 0)), + CONSTRAINT trustlines_tlimit_check CHECK ((tlimit > 0)) +); + + +-- +-- Name: txfeehistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txfeehistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txchanges text NOT NULL, + CONSTRAINT txfeehistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: txhistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txhistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txbody text NOT NULL, + txresult text NOT NULL, + txmeta text NOT NULL, + CONSTRAINT txhistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Data for Name: accountdata; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO accounts VALUES ('GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 999999997999999800, 2, 0, NULL, '', 'AQAAAA==', 0, 2); +INSERT INTO accounts VALUES ('GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 999999900, 8589934593, 0, NULL, '', 'AQAAAA==', 0, 4); +INSERT INTO accounts VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 999999800, 8589934594, 1, NULL, '', 'AQAAAA==', 0, 5); + + +-- +-- Data for Name: ban; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: ledgerheaders; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO ledgerheaders VALUES ('63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', '0000000000000000000000000000000000000000000000000000000000000000', '572a2e32ff248a07b0e70fd1f6d318c1facd20b6cc08c33d5775259868125a16', 1, 0, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXKi4y/ySKB7DnD9H20xjB+s0gtswIwz1XdSWYaBJaFgAAAAEN4Lazp2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAX14QAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('a3ef6897ce783f596401d299d8561cc78fd630ede3dcd35c82c4a6c60ecec6ba', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', 'aa8b1ab49f50fced171d1a71ecacb11bde53924c80728ca72b3801e240b93a6d', 2, 1508958290, 'AAAACGPZj1Nu5o0bJ7W4nyOvUxG3Vpok+vFAOtC1K2M7B76ZUJe9O5kAzNzu/6p0ZJoZ88h0TDub3uYslZJ7cSsRWgAAAAAAWfDgUgAAAAIAAAAIAAAAAQAAAAgAAAAIAAAAAwAAJxAAAAAAAnQIKiwQ7y1yg69ER0rE+8ttWxjdS9dphrI7bdn6YS6qixq0n1D87RcdGnHsrLEb3lOSTIByjKcrOAHiQLk6bQAAAAIN4Lazp2QAAAAAAAAAAADIAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('9128c1965814f795a6f3df96a95b5fe76e66cf45963afe69a8462f6e89115542', 'a3ef6897ce783f596401d299d8561cc78fd630ede3dcd35c82c4a6c60ecec6ba', 'ad49fe6f2ee12922d2bf234812c577955d35db8aaada9f1ce8a1b2646318d683', 3, 1508958291, 'AAAACKPvaJfOeD9ZZAHSmdhWHMeP1jDt49zTXILEpsYOzsa6kEERxYi6sMUrDc4izSRc1VgBO/Ysh95TOYSaW/BwiOYAAAAAWfDgUwAAAAAAAAAALLKPbMojH+RR+TSBDKGB/tufH2mL12ccCHr1Jn27yPCtSf5vLuEpItK/I0gSxXeVXTXbiqranxzoobJkYxjWgwAAAAMN4Lazp2QAAAAAAAAAAAEsAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('714aa02f62fd08049cebb4221a15261b4925169fbff1cb326594039ed2216122', '9128c1965814f795a6f3df96a95b5fe76e66cf45963afe69a8462f6e89115542', 'a3e5e8770cde6cfc6ba8ceef28ba14d884ac8c7d63f455d60a21fb74efb974d5', 4, 1508958292, 'AAAACJEowZZYFPeVpvPflqlbX+duZs9Fljr+aahGL26JEVVCXhb/VsBKHgcKQ2bKgenpjiNw+z2YHUCYVd0+A1yKUHsAAAAAWfDgVAAAAAAAAAAANvoQ5f0h4XOu2zzdNp+2aYFizWM/TiKsCFrgq+HrV6Kj5eh3DN5s/Guozu8ouhTYhKyMfWP0VdYKIft077l01QAAAAQN4Lazp2QAAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('b6e73611f664d2e45800e66cf46a3ed984d421d303a6c04e72e4aa6d11b19b97', '714aa02f62fd08049cebb4221a15261b4925169fbff1cb326594039ed2216122', '651600da0914d1f2730338b4cfaf1bfb1af08eef5a160918d889ec40a2bcfde3', 5, 1508958293, 'AAAACHFKoC9i/QgEnOu0IhoVJhtJJRafv/HLMmWUA57SIWEikI8OemEgBBN0fJK9KvzUhiC2Psfyx165gdiRyqsMp8cAAAAAWfDgVQAAAAAAAAAAqwSxrFb8etq4gSdxOi9F1KjbMMbBhDJdKXyKRqyFTJtlFgDaCRTR8nMDOLTPrxv7GvCO71oWCRjYiexAorz94wAAAAUN4Lazp2QAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); + + +-- +-- Data for Name: offers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: peers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: publishqueue; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: pubsub; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: scphistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scphistory VALUES ('GAAZ4YKFVHHHI6M4VZRFUU45MSUWMXEK2PNNAO7GXX5VEZWVH5F6TDHU', 2, 'AAAAAAGeYUWpznR5nK5iWlOdZKlmXIrT2tA75r37UmbVP0vpAAAAAAAAAAIAAAACAAAAAQAAAEhQl707mQDM3O7/qnRkmhnzyHRMO5ve5iyVkntxKxFaAAAAAABZ8OBSAAAAAgAAAAgAAAABAAAACAAAAAgAAAADAAAnEAAAAAAAAAAB8lwXiExp0qtOuGg4yklMwWtIKddz3xBGQJiuU+g+pBsAAABAaOKaP9uX2424qxboZG/QmUrnicBJ8Y9sFkuFLTNnqmRna4FTKrPdvKrX8kiZJ6w8Q2OzcLy/LnatoAq9Hq93Dg=='); +INSERT INTO scphistory VALUES ('GAAZ4YKFVHHHI6M4VZRFUU45MSUWMXEK2PNNAO7GXX5VEZWVH5F6TDHU', 3, 'AAAAAAGeYUWpznR5nK5iWlOdZKlmXIrT2tA75r37UmbVP0vpAAAAAAAAAAMAAAACAAAAAQAAADCQQRHFiLqwxSsNziLNJFzVWAE79iyH3lM5hJpb8HCI5gAAAABZ8OBTAAAAAAAAAAAAAAAB8lwXiExp0qtOuGg4yklMwWtIKddz3xBGQJiuU+g+pBsAAABAiOsrm4iJ36t5SC6cz5eXWmr9IdGihs9HPahdP+aj2Sr9OrpUhHuI8EiWtWAz9y6SaPzF0oSlsUwDl7RDXCuCCA=='); +INSERT INTO scphistory VALUES ('GAAZ4YKFVHHHI6M4VZRFUU45MSUWMXEK2PNNAO7GXX5VEZWVH5F6TDHU', 4, 'AAAAAAGeYUWpznR5nK5iWlOdZKlmXIrT2tA75r37UmbVP0vpAAAAAAAAAAQAAAACAAAAAQAAADBeFv9WwEoeBwpDZsqB6emOI3D7PZgdQJhV3T4DXIpQewAAAABZ8OBUAAAAAAAAAAAAAAAB8lwXiExp0qtOuGg4yklMwWtIKddz3xBGQJiuU+g+pBsAAABAbPllRNF8KpmGw2cmPKdMsujsUunwPFbTesq/qSmOwi67+CsgU9ndcMmbgMAUGhFDatZ+kLtS1vN8SSV3DAz6Bw=='); +INSERT INTO scphistory VALUES ('GAAZ4YKFVHHHI6M4VZRFUU45MSUWMXEK2PNNAO7GXX5VEZWVH5F6TDHU', 5, 'AAAAAAGeYUWpznR5nK5iWlOdZKlmXIrT2tA75r37UmbVP0vpAAAAAAAAAAUAAAACAAAAAQAAADCQjw56YSAEE3R8kr0q/NSGILY+x/LHXrmB2JHKqwynxwAAAABZ8OBVAAAAAAAAAAAAAAAB8lwXiExp0qtOuGg4yklMwWtIKddz3xBGQJiuU+g+pBsAAABAU8tqvgLpEAKnf4FmKK5Hy2z0trF/ejC91kOd4MMSn7uGNK4e4a4TdSDn+Lsd4zO7tyuUIu8TfRJPbATl3NlnBQ=='); + + +-- +-- Data for Name: scpquorums; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scpquorums VALUES ('f25c17884c69d2ab4eb86838ca494cc16b4829d773df10464098ae53e83ea41b', 5, 'AAAAAQAAAAEAAAAAAZ5hRanOdHmcrmJaU51kqWZcitPa0DvmvftSZtU/S+kAAAAA'); + + +-- +-- Data for Name: signers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: storestate; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO storestate VALUES ('lastclosedledger ', 'b6e73611f664d2e45800e66cf46a3ed984d421d303a6c04e72e4aa6d11b19b97'); +INSERT INTO storestate VALUES ('historyarchivestate ', '{ + "version": 1, + "server": "v0.6.3-66-gd66575cf", + "currentLedger": 5, + "currentBuckets": [ + { + "curr": "216adf8a80d1f692bf7016796b687efe0f551079f5c27cee55cde897143d62c5", + "next": { + "state": 0 + }, + "snap": "02870372fb6117ddff082a472980c4cc3c9575be56edc7c87991ab815debf0ae" + }, + { + "curr": "ef31a20a398ee73ce22275ea8177786bac54656f33dcc4f3fec60d55ddf163d9", + "next": { + "state": 1, + "output": "02870372fb6117ddff082a472980c4cc3c9575be56edc7c87991ab815debf0ae" + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + } + ] +}'); +INSERT INTO storestate VALUES ('databaseschema ', '5'); +INSERT INTO storestate VALUES ('forcescponnextlaunch ', 'false'); +INSERT INTO storestate VALUES ('lastscpdata ', 'AAAAAgAAAAABnmFFqc50eZyuYlpTnWSpZlyK09rQO+a9+1Jm1T9L6QAAAAAAAAAFAAAAA/JcF4hMadKrTrhoOMpJTMFrSCnXc98QRkCYrlPoPqQbAAAAAQAAADCQjw56YSAEE3R8kr0q/NSGILY+x/LHXrmB2JHKqwynxwAAAABZ8OBVAAAAAAAAAAAAAAABAAAAMJCPDnphIAQTdHySvSr81IYgtj7H8sdeuYHYkcqrDKfHAAAAAFnw4FUAAAAAAAAAAAAAAEBFDS12kds5u3OI5e6kuxh4g6qV/YSVBBgDXvJsi9fdzDGgYYt8vdr3bQCUR30lYXA5nfODNHjke9utt6uCT38NAAAAAAGeYUWpznR5nK5iWlOdZKlmXIrT2tA75r37UmbVP0vpAAAAAAAAAAUAAAACAAAAAQAAADCQjw56YSAEE3R8kr0q/NSGILY+x/LHXrmB2JHKqwynxwAAAABZ8OBVAAAAAAAAAAAAAAAB8lwXiExp0qtOuGg4yklMwWtIKddz3xBGQJiuU+g+pBsAAABAU8tqvgLpEAKnf4FmKK5Hy2z0trF/ejC91kOd4MMSn7uGNK4e4a4TdSDn+Lsd4zO7tyuUIu8TfRJPbATl3NlnBQAAAAFxSqAvYv0IBJzrtCIaFSYbSSUWn7/xyzJllAOe0iFhIgAAAAEAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAABkAAAAAgAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAF0h26AAAAAAAAAAAAa7kvkwAAABAnt8vooy2MPp6VSDo4R3Si++Fuadk3MzaowBTwNbLuqOWSdERMjVz3JpWFKsuW5vKKjkTFZrjZ8EQwxeo4DWJBgAAAAEAAAABAAAAAQAAAAABnmFFqc50eZyuYlpTnWSpZlyK09rQO+a9+1Jm1T9L6QAAAAA='); + + +-- +-- Data for Name: trustlines; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO trustlines VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 1, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 'USD', 9223372036854775807, 99900000000000, 1, 5); + + +-- +-- Data for Name: txfeehistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txfeehistory VALUES ('666656a6eade2082c5780571267d9e4453eee5781ca9a58aa319eb0fe83455fd', 2, 1, 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('0ee11ddb4817a6165f062c28273bf521d9bfedca4ea304f7bded2cb8ed422b7e', 2, 2, 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/84AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('bd486dbdd02d460817671c4a5a7e9d6e865ca29cb41e62d7aaf70a2fee5b36de', 3, 1, 'AAAAAgAAAAMAAAACAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('267d3bd55a6902624d03f3895bc91bf89cb0379b75d39e5b97dc3d448a6ee5cb', 4, 1, 'AAAAAgAAAAMAAAACAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('23071d02983ad8b70733b8ee52a19745a366d71c1f7455199773e7683ddaa035', 5, 1, 'AAAAAgAAAAMAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msmcAAAAAgAAAAEAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msk4AAAAAgAAAAIAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); + + +-- +-- Data for Name: txhistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txhistory VALUES ('666656a6eade2082c5780571267d9e4453eee5781ca9a58aa319eb0fe83455fd', 2, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAAAAAAAAAAABVvwF9wAAAEBdDXe23U4e9C2SxpBLZRx1rJzSFLJ0xDD0uKGpmqbflDT+XXIq6UiDBzmFxt+GO+XqFoQPdrXT7p1oLZIHqTMP', 'ZmZWpureIILFeAVxJn2eRFPu5XgcqaWKoxnrD+g0Vf0AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2s2vJNTgAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('0ee11ddb4817a6165f062c28273bf521d9bfedca4ea304f7bded2cb8ed422b7e', 2, 2, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAO5rKAAAAAAAAAAABVvwF9wAAAEAZCSSFbUKIiIThB3BIHf1u5g0vDSZQ0CD4fBA+pPqUQ/9dwSOSL+NGMZZvl2eJW02eOREjO4QVR4cIcmRmBdYN', 'DuEd20gXphZfBiwoJzv1Idm/7cpOowT3ve0suO1CK34AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2szAuazgAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('bd486dbdd02d460817671c4a5a7e9d6e865ca29cb41e62d7aaf70a2fee5b36de', 3, 1, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAGu5L5MAAAAQB9kmKW2q3v7Qfy8PMekEb1TTI5ixqkI0BogXrOt7gO162Qbkh2dSTUfeDovc0PAafhDXxthVAlsLujlBmyjBAY=', 'vUhtvdAtRggXZxxKWn6dboZcopy0HmLXqvcKL+5bNt4AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAADuayZwAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('267d3bd55a6902624d03f3895bc91bf89cb0379b75d39e5b97dc3d448a6ee5cb', 4, 1, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAWvMQekAAAAAAAAAAAAH5kC3vAAAAQMvzjWcUe8CdwX/cl5px2TkYt672RXOFvJOTK5fK6SjBpPHGj5EIFxCRXdLAFy2K1nSkHSnIk9N2qwwQKwK1sww=', 'Jn071VppAmJNA/OJW8kb+JywN5t1055bl9w9RIpu5csAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAFrzEHpAAH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('23071d02983ad8b70733b8ee52a19745a366d71c1f7455199773e7683ddaa035', 5, 1, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAABdIdugAAAAAAAAAAAGu5L5MAAAAQJ7fL6KMtjD6elUg6OEd0ovvhbmnZNzM2qMAU8DWy7qjlknRETI1c9yaVhSrLlubyio5ExWa42fBEMMXqOA1iQY=', 'IwcdApg62LcHM7juUqGXRaNm1xwfdFUZl3PnaD3aoDUAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAFrzEHpAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAUAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAFrbyANYAH//////////AAAAAQAAAAAAAAAA'); + + +-- +-- Name: accountdata accountdata_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accountdata + ADD CONSTRAINT accountdata_pkey PRIMARY KEY (accountid, dataname); + + +-- +-- Name: accounts accounts_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accounts + ADD CONSTRAINT accounts_pkey PRIMARY KEY (accountid); + + +-- +-- Name: ban ban_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ban + ADD CONSTRAINT ban_pkey PRIMARY KEY (nodeid); + + +-- +-- Name: ledgerheaders ledgerheaders_ledgerseq_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_ledgerseq_key UNIQUE (ledgerseq); + + +-- +-- Name: ledgerheaders ledgerheaders_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_pkey PRIMARY KEY (ledgerhash); + + +-- +-- Name: offers offers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY offers + ADD CONSTRAINT offers_pkey PRIMARY KEY (offerid); + + +-- +-- Name: peers peers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY peers + ADD CONSTRAINT peers_pkey PRIMARY KEY (ip, port); + + +-- +-- Name: publishqueue publishqueue_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY publishqueue + ADD CONSTRAINT publishqueue_pkey PRIMARY KEY (ledger); + + +-- +-- Name: pubsub pubsub_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY pubsub + ADD CONSTRAINT pubsub_pkey PRIMARY KEY (resid); + + +-- +-- Name: scpquorums scpquorums_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY scpquorums + ADD CONSTRAINT scpquorums_pkey PRIMARY KEY (qsethash); + + +-- +-- Name: signers signers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY signers + ADD CONSTRAINT signers_pkey PRIMARY KEY (accountid, publickey); + + +-- +-- Name: storestate storestate_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY storestate + ADD CONSTRAINT storestate_pkey PRIMARY KEY (statename); + + +-- +-- Name: trustlines trustlines_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY trustlines + ADD CONSTRAINT trustlines_pkey PRIMARY KEY (accountid, issuer, assetcode); + + +-- +-- Name: txfeehistory txfeehistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txfeehistory + ADD CONSTRAINT txfeehistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: txhistory txhistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txhistory + ADD CONSTRAINT txhistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: accountbalances; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX accountbalances ON accounts USING btree (balance) WHERE (balance >= 1000000000); + + +-- +-- Name: buyingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX buyingissuerindex ON offers USING btree (buyingissuer); + + +-- +-- Name: histbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histbyseq ON txhistory USING btree (ledgerseq); + + +-- +-- Name: histfeebyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histfeebyseq ON txfeehistory USING btree (ledgerseq); + + +-- +-- Name: ledgersbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX ledgersbyseq ON ledgerheaders USING btree (ledgerseq); + + +-- +-- Name: priceindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX priceindex ON offers USING btree (price); + + +-- +-- Name: scpenvsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpenvsbyseq ON scphistory USING btree (ledgerseq); + + +-- +-- Name: scpquorumsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpquorumsbyseq ON scpquorums USING btree (lastledgerseq); + + +-- +-- Name: sellingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX sellingissuerindex ON offers USING btree (sellingissuer); + + +-- +-- Name: signersaccount; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX signersaccount ON signers USING btree (accountid); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/send_to_issuer-horizon.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/send_to_issuer-horizon.sql new file mode 100644 index 0000000..b69cfbf --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/send_to_issuer-horizon.sql @@ -0,0 +1,787 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; + +SET search_path = public, pg_catalog; + +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_account_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_account_id_fkey; +DROP INDEX IF EXISTS public.trade_effects_by_order_book; +DROP INDEX IF EXISTS public.index_history_transactions_on_id; +DROP INDEX IF EXISTS public.index_history_operations_on_type; +DROP INDEX IF EXISTS public.index_history_operations_on_transaction_id; +DROP INDEX IF EXISTS public.index_history_operations_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_sequence; +DROP INDEX IF EXISTS public.index_history_ledgers_on_previous_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_importer_version; +DROP INDEX IF EXISTS public.index_history_ledgers_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_closed_at; +DROP INDEX IF EXISTS public.index_history_effects_on_type; +DROP INDEX IF EXISTS public.index_history_accounts_on_id; +DROP INDEX IF EXISTS public.index_history_accounts_on_address; +DROP INDEX IF EXISTS public.htrd_time_lookup; +DROP INDEX IF EXISTS public.htrd_pid; +DROP INDEX IF EXISTS public.htrd_pair_time_lookup; +DROP INDEX IF EXISTS public.htrd_counter_lookup; +DROP INDEX IF EXISTS public.htrd_by_offer; +DROP INDEX IF EXISTS public.htp_by_htid; +DROP INDEX IF EXISTS public.hs_transaction_by_id; +DROP INDEX IF EXISTS public.hs_ledger_by_id; +DROP INDEX IF EXISTS public.hop_by_hoid; +DROP INDEX IF EXISTS public.hist_tx_p_id; +DROP INDEX IF EXISTS public.hist_op_p_id; +DROP INDEX IF EXISTS public.hist_e_id; +DROP INDEX IF EXISTS public.hist_e_by_order; +DROP INDEX IF EXISTS public.by_ledger; +DROP INDEX IF EXISTS public.by_hash; +DROP INDEX IF EXISTS public.by_account; +DROP INDEX IF EXISTS public.asset_by_issuer; +ALTER TABLE IF EXISTS ONLY public.history_transaction_participants DROP CONSTRAINT IF EXISTS history_transaction_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_operation_participants DROP CONSTRAINT IF EXISTS history_operation_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_asset_code_asset_type_asset_issuer_key; +ALTER TABLE IF EXISTS ONLY public.gorp_migrations DROP CONSTRAINT IF EXISTS gorp_migrations_pkey; +ALTER TABLE IF EXISTS public.history_transaction_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_operation_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_assets ALTER COLUMN id DROP DEFAULT; +DROP TABLE IF EXISTS public.history_transactions; +DROP SEQUENCE IF EXISTS public.history_transaction_participants_id_seq; +DROP TABLE IF EXISTS public.history_transaction_participants; +DROP TABLE IF EXISTS public.history_trades; +DROP TABLE IF EXISTS public.history_operations; +DROP SEQUENCE IF EXISTS public.history_operation_participants_id_seq; +DROP TABLE IF EXISTS public.history_operation_participants; +DROP TABLE IF EXISTS public.history_ledgers; +DROP TABLE IF EXISTS public.history_effects; +DROP SEQUENCE IF EXISTS public.history_assets_id_seq; +DROP TABLE IF EXISTS public.history_assets; +DROP TABLE IF EXISTS public.history_accounts; +DROP SEQUENCE IF EXISTS public.history_accounts_id_seq; +DROP TABLE IF EXISTS public.gorp_migrations; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: gorp_migrations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE gorp_migrations ( + id text NOT NULL, + applied_at timestamp with time zone +); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_accounts_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_accounts ( + id bigint DEFAULT nextval('history_accounts_id_seq'::regclass) NOT NULL, + address character varying(64) +); + + +-- +-- Name: history_assets; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_assets ( + id integer NOT NULL, + asset_type character varying(64) NOT NULL, + asset_code character varying(12) NOT NULL, + asset_issuer character varying(56) NOT NULL +); + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_assets_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_assets_id_seq OWNED BY history_assets.id; + + +-- +-- Name: history_effects; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_effects ( + history_account_id bigint NOT NULL, + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + type integer NOT NULL, + details jsonb +); + + +-- +-- Name: history_ledgers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_ledgers ( + sequence integer NOT NULL, + ledger_hash character varying(64) NOT NULL, + previous_ledger_hash character varying(64), + transaction_count integer DEFAULT 0 NOT NULL, + operation_count integer DEFAULT 0 NOT NULL, + closed_at timestamp without time zone NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + importer_version integer DEFAULT 1 NOT NULL, + total_coins bigint NOT NULL, + fee_pool bigint NOT NULL, + base_fee integer NOT NULL, + base_reserve integer NOT NULL, + max_tx_set_size integer NOT NULL, + protocol_version integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: history_operation_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operation_participants ( + id integer NOT NULL, + history_operation_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_operation_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_operation_participants_id_seq OWNED BY history_operation_participants.id; + + +-- +-- Name: history_operations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operations ( + id bigint NOT NULL, + transaction_id bigint NOT NULL, + application_order integer NOT NULL, + type integer NOT NULL, + details jsonb, + source_account character varying(64) DEFAULT ''::character varying NOT NULL +); + + +-- +-- Name: history_trades; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_trades ( + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + ledger_closed_at timestamp without time zone NOT NULL, + offer_id bigint NOT NULL, + base_account_id bigint NOT NULL, + base_asset_id bigint NOT NULL, + base_amount bigint NOT NULL, + counter_account_id bigint NOT NULL, + counter_asset_id bigint NOT NULL, + counter_amount bigint NOT NULL, + base_is_seller boolean, + CONSTRAINT history_trades_base_amount_check CHECK ((base_amount > 0)), + CONSTRAINT history_trades_check CHECK ((base_asset_id < counter_asset_id)), + CONSTRAINT history_trades_counter_amount_check CHECK ((counter_amount > 0)) +); + + +-- +-- Name: history_transaction_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transaction_participants ( + id integer NOT NULL, + history_transaction_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_transaction_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_transaction_participants_id_seq OWNED BY history_transaction_participants.id; + + +-- +-- Name: history_transactions; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transactions ( + transaction_hash character varying(64) NOT NULL, + ledger_sequence integer NOT NULL, + application_order integer NOT NULL, + account character varying(64) NOT NULL, + account_sequence bigint NOT NULL, + fee_paid integer NOT NULL, + operation_count integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + tx_envelope text NOT NULL, + tx_result text NOT NULL, + tx_meta text NOT NULL, + tx_fee_meta text NOT NULL, + signatures character varying(96)[] DEFAULT '{}'::character varying[] NOT NULL, + memo_type character varying DEFAULT 'none'::character varying NOT NULL, + memo character varying, + time_bounds int8range +); + + +-- +-- Name: history_assets id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets ALTER COLUMN id SET DEFAULT nextval('history_assets_id_seq'::regclass); + + +-- +-- Name: history_operation_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants ALTER COLUMN id SET DEFAULT nextval('history_operation_participants_id_seq'::regclass); + + +-- +-- Name: history_transaction_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants ALTER COLUMN id SET DEFAULT nextval('history_transaction_participants_id_seq'::regclass); + + +-- +-- Data for Name: gorp_migrations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO gorp_migrations VALUES ('1_initial_schema.sql', '2017-10-25 12:02:41.355815-07'); +INSERT INTO gorp_migrations VALUES ('2_index_participants_by_toid.sql', '2017-10-25 12:02:41.35913-07'); +INSERT INTO gorp_migrations VALUES ('3_use_sequence_in_history_accounts.sql', '2017-10-25 12:02:41.361119-07'); +INSERT INTO gorp_migrations VALUES ('4_add_protocol_version.sql', '2017-10-25 12:02:41.365998-07'); +INSERT INTO gorp_migrations VALUES ('5_create_trades_table.sql', '2017-10-25 12:02:41.370443-07'); +INSERT INTO gorp_migrations VALUES ('6_create_assets_table.sql', '2017-10-25 12:02:41.373746-07'); +INSERT INTO gorp_migrations VALUES ('7_modify_trades_table.sql', '2017-10-25 12:02:41.381902-07'); + + +-- +-- Data for Name: history_accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_accounts VALUES (1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_accounts VALUES (2, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); +INSERT INTO history_accounts VALUES (3, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_accounts_id_seq', 3, true); + + +-- +-- Data for Name: history_assets; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_assets_id_seq', 1, false); + + +-- +-- Data for Name: history_effects; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_effects VALUES (2, 8589938689, 1, 0, '{"starting_balance": "100.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589938689, 2, 3, '{"amount": "100.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (2, 8589938689, 3, 10, '{"weight": 1, "public_key": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (3, 8589942785, 1, 0, '{"starting_balance": "100.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589942785, 2, 3, '{"amount": "100.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (3, 8589942785, 3, 10, '{"weight": 1, "public_key": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU"}'); +INSERT INTO history_effects VALUES (3, 12884905985, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (3, 17179873281, 1, 2, '{"amount": "10000000.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (2, 17179873281, 2, 3, '{"amount": "10000000.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (2, 21474840577, 1, 2, '{"amount": "10000.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (3, 21474840577, 2, 3, '{"amount": "10000.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); + + +-- +-- Data for Name: history_ledgers; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_ledgers VALUES (1, '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', NULL, 0, 0, '1970-01-01 00:00:00', '2017-10-25 19:04:54.56007', '2017-10-25 19:04:54.560071', 4294967296, 10, 1000000000000000000, 0, 100, 100000000, 100, 0); +INSERT INTO history_ledgers VALUES (2, 'a3ef6897ce783f596401d299d8561cc78fd630ede3dcd35c82c4a6c60ecec6ba', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', 2, 2, '2017-10-25 19:04:50', '2017-10-25 19:04:54.572589', '2017-10-25 19:04:54.572589', 8589934592, 10, 1000000000000000000, 200, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (3, '9128c1965814f795a6f3df96a95b5fe76e66cf45963afe69a8462f6e89115542', 'a3ef6897ce783f596401d299d8561cc78fd630ede3dcd35c82c4a6c60ecec6ba', 1, 1, '2017-10-25 19:04:51', '2017-10-25 19:04:54.6123', '2017-10-25 19:04:54.6123', 12884901888, 10, 1000000000000000000, 300, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (4, '714aa02f62fd08049cebb4221a15261b4925169fbff1cb326594039ed2216122', '9128c1965814f795a6f3df96a95b5fe76e66cf45963afe69a8462f6e89115542', 1, 1, '2017-10-25 19:04:52', '2017-10-25 19:04:54.627663', '2017-10-25 19:04:54.627663', 17179869184, 10, 1000000000000000000, 400, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (5, 'b6e73611f664d2e45800e66cf46a3ed984d421d303a6c04e72e4aa6d11b19b97', '714aa02f62fd08049cebb4221a15261b4925169fbff1cb326594039ed2216122', 1, 1, '2017-10-25 19:04:53', '2017-10-25 19:04:54.643034', '2017-10-25 19:04:54.643035', 21474836480, 10, 1000000000000000000, 500, 100, 100000000, 10000, 8); + + +-- +-- Data for Name: history_operation_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operation_participants VALUES (1, 8589938689, 1); +INSERT INTO history_operation_participants VALUES (2, 8589938689, 2); +INSERT INTO history_operation_participants VALUES (3, 8589942785, 3); +INSERT INTO history_operation_participants VALUES (4, 8589942785, 1); +INSERT INTO history_operation_participants VALUES (5, 12884905985, 3); +INSERT INTO history_operation_participants VALUES (6, 17179873281, 3); +INSERT INTO history_operation_participants VALUES (7, 17179873281, 2); +INSERT INTO history_operation_participants VALUES (8, 21474840577, 2); +INSERT INTO history_operation_participants VALUES (9, 21474840577, 3); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_operation_participants_id_seq', 9, true); + + +-- +-- Data for Name: history_operations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operations VALUES (8589938689, 8589938688, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "starting_balance": "100.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (8589942785, 8589942784, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "starting_balance": "100.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (12884905985, 12884905984, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "trustor": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (17179873281, 17179873280, 1, 1, '{"to": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "from": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "amount": "10000000.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); +INSERT INTO history_operations VALUES (21474840577, 21474840576, 1, 1, '{"to": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "from": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "amount": "10000.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); + + +-- +-- Data for Name: history_trades; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: history_transaction_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transaction_participants VALUES (1, 8589938688, 1); +INSERT INTO history_transaction_participants VALUES (2, 8589938688, 2); +INSERT INTO history_transaction_participants VALUES (3, 8589942784, 3); +INSERT INTO history_transaction_participants VALUES (4, 8589942784, 1); +INSERT INTO history_transaction_participants VALUES (5, 12884905984, 3); +INSERT INTO history_transaction_participants VALUES (6, 17179873280, 2); +INSERT INTO history_transaction_participants VALUES (7, 17179873280, 3); +INSERT INTO history_transaction_participants VALUES (8, 21474840576, 2); +INSERT INTO history_transaction_participants VALUES (9, 21474840576, 3); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_transaction_participants_id_seq', 9, true); + + +-- +-- Data for Name: history_transactions; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transactions VALUES ('666656a6eade2082c5780571267d9e4453eee5781ca9a58aa319eb0fe83455fd', 2, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 1, 100, 1, '2017-10-25 19:04:54.573228', '2017-10-25 19:04:54.573228', 8589938688, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAAAAAAAAAAABVvwF9wAAAEBdDXe23U4e9C2SxpBLZRx1rJzSFLJ0xDD0uKGpmqbflDT+XXIq6UiDBzmFxt+GO+XqFoQPdrXT7p1oLZIHqTMP', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2s2vJNTgAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{XQ13tt1OHvQtksaQS2Ucdayc0hSydMQw9LihqZqm35Q0/l1yKulIgwc5hcbfhjvl6haED3a10+6daC2SB6kzDw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('0ee11ddb4817a6165f062c28273bf521d9bfedca4ea304f7bded2cb8ed422b7e', 2, 2, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 2, 100, 1, '2017-10-25 19:04:54.588994', '2017-10-25 19:04:54.588994', 8589942784, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAO5rKAAAAAAAAAAABVvwF9wAAAEAZCSSFbUKIiIThB3BIHf1u5g0vDSZQ0CD4fBA+pPqUQ/9dwSOSL+NGMZZvl2eJW02eOREjO4QVR4cIcmRmBdYN', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2szAuazgAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/84AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{GQkkhW1CiIiE4QdwSB39buYNLw0mUNAg+HwQPqT6lEP/XcEjki/jRjGWb5dniVtNnjkRIzuEFUeHCHJkZgXWDQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('bd486dbdd02d460817671c4a5a7e9d6e865ca29cb41e62d7aaf70a2fee5b36de', 3, 1, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934593, 100, 1, '2017-10-25 19:04:54.612784', '2017-10-25 19:04:54.612784', 12884905984, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAGu5L5MAAAAQB9kmKW2q3v7Qfy8PMekEb1TTI5ixqkI0BogXrOt7gO162Qbkh2dSTUfeDovc0PAafhDXxthVAlsLujlBmyjBAY=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAADuayZwAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{H2SYpbare/tB/Lw8x6QRvVNMjmLGqQjQGiBes63uA7XrZBuSHZ1JNR94Oi9zQ8Bp+ENfG2FUCWwu6OUGbKMEBg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('267d3bd55a6902624d03f3895bc91bf89cb0379b75d39e5b97dc3d448a6ee5cb', 4, 1, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 8589934593, 100, 1, '2017-10-25 19:04:54.628123', '2017-10-25 19:04:54.628123', 17179873280, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAWvMQekAAAAAAAAAAAAH5kC3vAAAAQMvzjWcUe8CdwX/cl5px2TkYt672RXOFvJOTK5fK6SjBpPHGj5EIFxCRXdLAFy2K1nSkHSnIk9N2qwwQKwK1sww=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAFrzEHpAAH//////////AAAAAQAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{y/ONZxR7wJ3Bf9yXmnHZORi3rvZFc4W8k5Mrl8rpKMGk8caPkQgXEJFd0sAXLYrWdKQdKciT03arDBArArWzDA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('23071d02983ad8b70733b8ee52a19745a366d71c1f7455199773e7683ddaa035', 5, 1, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934594, 100, 1, '2017-10-25 19:04:54.643652', '2017-10-25 19:04:54.643652', 21474840576, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAABdIdugAAAAAAAAAAAGu5L5MAAAAQJ7fL6KMtjD6elUg6OEd0ovvhbmnZNzM2qMAU8DWy7qjlknRETI1c9yaVhSrLlubyio5ExWa42fBEMMXqOA1iQY=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAFrzEHpAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAUAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAFrbyANYAH//////////AAAAAQAAAAAAAAAA', 'AAAAAgAAAAMAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msmcAAAAAgAAAAEAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msk4AAAAAgAAAAIAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{nt8vooy2MPp6VSDo4R3Si++Fuadk3MzaowBTwNbLuqOWSdERMjVz3JpWFKsuW5vKKjkTFZrjZ8EQwxeo4DWJBg==}', 'none', NULL, NULL); + + +-- +-- Name: gorp_migrations gorp_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY gorp_migrations + ADD CONSTRAINT gorp_migrations_pkey PRIMARY KEY (id); + + +-- +-- Name: history_assets history_assets_asset_code_asset_type_asset_issuer_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_asset_code_asset_type_asset_issuer_key UNIQUE (asset_code, asset_type, asset_issuer); + + +-- +-- Name: history_assets history_assets_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_pkey PRIMARY KEY (id); + + +-- +-- Name: history_operation_participants history_operation_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants + ADD CONSTRAINT history_operation_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: history_transaction_participants history_transaction_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants + ADD CONSTRAINT history_transaction_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: asset_by_issuer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX asset_by_issuer ON history_assets USING btree (asset_issuer); + + +-- +-- Name: by_account; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_account ON history_transactions USING btree (account, account_sequence); + + +-- +-- Name: by_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_hash ON history_transactions USING btree (transaction_hash); + + +-- +-- Name: by_ledger; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_ledger ON history_transactions USING btree (ledger_sequence, application_order); + + +-- +-- Name: hist_e_by_order; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_by_order ON history_effects USING btree (history_operation_id, "order"); + + +-- +-- Name: hist_e_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_id ON history_effects USING btree (history_account_id, history_operation_id, "order"); + + +-- +-- Name: hist_op_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_op_p_id ON history_operation_participants USING btree (history_account_id, history_operation_id); + + +-- +-- Name: hist_tx_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_tx_p_id ON history_transaction_participants USING btree (history_account_id, history_transaction_id); + + +-- +-- Name: hop_by_hoid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX hop_by_hoid ON history_operation_participants USING btree (history_operation_id); + + +-- +-- Name: hs_ledger_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_ledger_by_id ON history_ledgers USING btree (id); + + +-- +-- Name: hs_transaction_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_transaction_by_id ON history_transactions USING btree (id); + + +-- +-- Name: htp_by_htid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htp_by_htid ON history_transaction_participants USING btree (history_transaction_id); + + +-- +-- Name: htrd_by_offer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_by_offer ON history_trades USING btree (offer_id); + + +-- +-- Name: htrd_counter_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_counter_lookup ON history_trades USING btree (counter_asset_id); + + +-- +-- Name: htrd_pair_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_pair_time_lookup ON history_trades USING btree (base_asset_id, counter_asset_id, ledger_closed_at); + + +-- +-- Name: htrd_pid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX htrd_pid ON history_trades USING btree (history_operation_id, "order"); + + +-- +-- Name: htrd_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_time_lookup ON history_trades USING btree (ledger_closed_at); + + +-- +-- Name: index_history_accounts_on_address; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_address ON history_accounts USING btree (address); + + +-- +-- Name: index_history_accounts_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_id ON history_accounts USING btree (id); + + +-- +-- Name: index_history_effects_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_effects_on_type ON history_effects USING btree (type); + + +-- +-- Name: index_history_ledgers_on_closed_at; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_closed_at ON history_ledgers USING btree (closed_at); + + +-- +-- Name: index_history_ledgers_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_id ON history_ledgers USING btree (id); + + +-- +-- Name: index_history_ledgers_on_importer_version; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_importer_version ON history_ledgers USING btree (importer_version); + + +-- +-- Name: index_history_ledgers_on_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_ledger_hash ON history_ledgers USING btree (ledger_hash); + + +-- +-- Name: index_history_ledgers_on_previous_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_previous_ledger_hash ON history_ledgers USING btree (previous_ledger_hash); + + +-- +-- Name: index_history_ledgers_on_sequence; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_sequence ON history_ledgers USING btree (sequence); + + +-- +-- Name: index_history_operations_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_operations_on_id ON history_operations USING btree (id); + + +-- +-- Name: index_history_operations_on_transaction_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_transaction_id ON history_operations USING btree (transaction_id); + + +-- +-- Name: index_history_operations_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_type ON history_operations USING btree (type); + + +-- +-- Name: index_history_transactions_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_transactions_on_id ON history_transactions USING btree (id); + + +-- +-- Name: trade_effects_by_order_book; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX trade_effects_by_order_book ON history_effects USING btree (((details ->> 'sold_asset_type'::text)), ((details ->> 'sold_asset_code'::text)), ((details ->> 'sold_asset_issuer'::text)), ((details ->> 'bought_asset_type'::text)), ((details ->> 'bought_asset_code'::text)), ((details ->> 'bought_asset_issuer'::text))) WHERE (type = 33); + + +-- +-- Name: history_trades history_trades_base_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_account_id_fkey FOREIGN KEY (base_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_base_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_asset_id_fkey FOREIGN KEY (base_asset_id) REFERENCES history_assets(id); + + +-- +-- Name: history_trades history_trades_counter_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_account_id_fkey FOREIGN KEY (counter_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_counter_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_asset_id_fkey FOREIGN KEY (counter_asset_id) REFERENCES history_assets(id); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/send_to_issuer.rb b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/send_to_issuer.rb new file mode 100644 index 0000000..c44a098 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/send_to_issuer.rb @@ -0,0 +1,18 @@ +run_recipe File.dirname(__FILE__) + "/_common_accounts.rb" + +use_manual_close + +create_account :usd_gateway, :master, 100 +create_account :scott, :master, 100 + +close_ledger + +trust :scott, :usd_gateway, "USD" + +close_ledger + +payment :usd_gateway, :scott, ["USD", :usd_gateway, 10_000_000] + +close_ledger + +payment :scott, :usd_gateway, ["USD", :usd_gateway, 10_000] diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/set_options-core.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/set_options-core.sql new file mode 100644 index 0000000..fdbcf42 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/set_options-core.sql @@ -0,0 +1,725 @@ +running recipe +recipe finished, closing ledger +ledger closed +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; +SET row_security = off; + +SET search_path = public, pg_catalog; + +DROP INDEX IF EXISTS public.signersaccount; +DROP INDEX IF EXISTS public.sellingissuerindex; +DROP INDEX IF EXISTS public.scpquorumsbyseq; +DROP INDEX IF EXISTS public.scpenvsbyseq; +DROP INDEX IF EXISTS public.priceindex; +DROP INDEX IF EXISTS public.ledgersbyseq; +DROP INDEX IF EXISTS public.histfeebyseq; +DROP INDEX IF EXISTS public.histbyseq; +DROP INDEX IF EXISTS public.buyingissuerindex; +DROP INDEX IF EXISTS public.accountbalances; +ALTER TABLE IF EXISTS ONLY public.txhistory DROP CONSTRAINT IF EXISTS txhistory_pkey; +ALTER TABLE IF EXISTS ONLY public.txfeehistory DROP CONSTRAINT IF EXISTS txfeehistory_pkey; +ALTER TABLE IF EXISTS ONLY public.trustlines DROP CONSTRAINT IF EXISTS trustlines_pkey; +ALTER TABLE IF EXISTS ONLY public.storestate DROP CONSTRAINT IF EXISTS storestate_pkey; +ALTER TABLE IF EXISTS ONLY public.signers DROP CONSTRAINT IF EXISTS signers_pkey; +ALTER TABLE IF EXISTS ONLY public.scpquorums DROP CONSTRAINT IF EXISTS scpquorums_pkey; +ALTER TABLE IF EXISTS ONLY public.pubsub DROP CONSTRAINT IF EXISTS pubsub_pkey; +ALTER TABLE IF EXISTS ONLY public.publishqueue DROP CONSTRAINT IF EXISTS publishqueue_pkey; +ALTER TABLE IF EXISTS ONLY public.peers DROP CONSTRAINT IF EXISTS peers_pkey; +ALTER TABLE IF EXISTS ONLY public.offers DROP CONSTRAINT IF EXISTS offers_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_ledgerseq_key; +ALTER TABLE IF EXISTS ONLY public.ban DROP CONSTRAINT IF EXISTS ban_pkey; +ALTER TABLE IF EXISTS ONLY public.accounts DROP CONSTRAINT IF EXISTS accounts_pkey; +ALTER TABLE IF EXISTS ONLY public.accountdata DROP CONSTRAINT IF EXISTS accountdata_pkey; +DROP TABLE IF EXISTS public.txhistory; +DROP TABLE IF EXISTS public.txfeehistory; +DROP TABLE IF EXISTS public.trustlines; +DROP TABLE IF EXISTS public.storestate; +DROP TABLE IF EXISTS public.signers; +DROP TABLE IF EXISTS public.scpquorums; +DROP TABLE IF EXISTS public.scphistory; +DROP TABLE IF EXISTS public.pubsub; +DROP TABLE IF EXISTS public.publishqueue; +DROP TABLE IF EXISTS public.peers; +DROP TABLE IF EXISTS public.offers; +DROP TABLE IF EXISTS public.ledgerheaders; +DROP TABLE IF EXISTS public.ban; +DROP TABLE IF EXISTS public.accounts; +DROP TABLE IF EXISTS public.accountdata; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: accountdata; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accountdata ( + accountid character varying(56) NOT NULL, + dataname character varying(64) NOT NULL, + datavalue character varying(112) NOT NULL, + lastmodified integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accounts ( + accountid character varying(56) NOT NULL, + balance bigint NOT NULL, + seqnum bigint NOT NULL, + numsubentries integer NOT NULL, + inflationdest character varying(56), + homedomain character varying(32) NOT NULL, + thresholds text NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT accounts_balance_check CHECK ((balance >= 0)), + CONSTRAINT accounts_numsubentries_check CHECK ((numsubentries >= 0)) +); + + +-- +-- Name: ban; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ban ( + nodeid character(56) NOT NULL +); + + +-- +-- Name: ledgerheaders; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ledgerheaders ( + ledgerhash character(64) NOT NULL, + prevhash character(64) NOT NULL, + bucketlisthash character(64) NOT NULL, + ledgerseq integer, + closetime bigint NOT NULL, + data text NOT NULL, + CONSTRAINT ledgerheaders_closetime_check CHECK ((closetime >= 0)), + CONSTRAINT ledgerheaders_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: offers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE offers ( + sellerid character varying(56) NOT NULL, + offerid bigint NOT NULL, + sellingassettype integer NOT NULL, + sellingassetcode character varying(12), + sellingissuer character varying(56), + buyingassettype integer NOT NULL, + buyingassetcode character varying(12), + buyingissuer character varying(56), + amount bigint NOT NULL, + pricen integer NOT NULL, + priced integer NOT NULL, + price double precision NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT offers_amount_check CHECK ((amount >= 0)), + CONSTRAINT offers_offerid_check CHECK ((offerid >= 0)) +); + + +-- +-- Name: peers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE peers ( + ip character varying(15) NOT NULL, + port integer DEFAULT 0 NOT NULL, + nextattempt timestamp without time zone NOT NULL, + numfailures integer DEFAULT 0 NOT NULL, + CONSTRAINT peers_numfailures_check CHECK ((numfailures >= 0)), + CONSTRAINT peers_port_check CHECK (((port > 0) AND (port <= 65535))) +); + + +-- +-- Name: publishqueue; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE publishqueue ( + ledger integer NOT NULL, + state text +); + + +-- +-- Name: pubsub; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE pubsub ( + resid character(32) NOT NULL, + lastread integer +); + + +-- +-- Name: scphistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scphistory ( + nodeid character(56) NOT NULL, + ledgerseq integer NOT NULL, + envelope text NOT NULL, + CONSTRAINT scphistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: scpquorums; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scpquorums ( + qsethash character(64) NOT NULL, + lastledgerseq integer NOT NULL, + qset text NOT NULL, + CONSTRAINT scpquorums_lastledgerseq_check CHECK ((lastledgerseq >= 0)) +); + + +-- +-- Name: signers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE signers ( + accountid character varying(56) NOT NULL, + publickey character varying(56) NOT NULL, + weight integer NOT NULL +); + + +-- +-- Name: storestate; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE storestate ( + statename character(32) NOT NULL, + state text +); + + +-- +-- Name: trustlines; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE trustlines ( + accountid character varying(56) NOT NULL, + assettype integer NOT NULL, + issuer character varying(56) NOT NULL, + assetcode character varying(12) NOT NULL, + tlimit bigint NOT NULL, + balance bigint NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT trustlines_balance_check CHECK ((balance >= 0)), + CONSTRAINT trustlines_tlimit_check CHECK ((tlimit > 0)) +); + + +-- +-- Name: txfeehistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txfeehistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txchanges text NOT NULL, + CONSTRAINT txfeehistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: txhistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txhistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txbody text NOT NULL, + txresult text NOT NULL, + txmeta text NOT NULL, + CONSTRAINT txhistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Data for Name: accountdata; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO accounts VALUES ('GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 999999979999999800, 2, 0, NULL, '', 'AQAAAA==', 0, 2); +INSERT INTO accounts VALUES ('GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2', 10000000000, 8589934592, 0, NULL, '', 'AQAAAA==', 0, 2); +INSERT INTO accounts VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 9999999100, 8589934601, 0, 'GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2', 'nullstyle.com', 'AgACAg==', 0, 11); + + +-- +-- Data for Name: ban; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: ledgerheaders; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO ledgerheaders VALUES ('63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', '0000000000000000000000000000000000000000000000000000000000000000', '572a2e32ff248a07b0e70fd1f6d318c1facd20b6cc08c33d5775259868125a16', 1, 0, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXKi4y/ySKB7DnD9H20xjB+s0gtswIwz1XdSWYaBJaFgAAAAEN4Lazp2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAX14QAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('eb10a5e95a1922e7e69732f866982a4ac0103f4a8a0b7ab4ba86941dcb4d2c8e', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', 'f5b7b3993e6721891a7e1d083e3679c232512d63231476ce6826bc1caf56aecb', 2, 1508958299, 'AAAACGPZj1Nu5o0bJ7W4nyOvUxG3Vpok+vFAOtC1K2M7B76ZUeFWh3+LY3YTHkhb6t+XikT48AKVUrh+INl3MY9NNtUAAAAAWfDgWwAAAAIAAAAIAAAAAQAAAAgAAAAIAAAAAwAAJxAAAAAAwWNZfI5WyFWx2m7ToNQChYZ5zqFrwog2j0kXqQNLArv1t7OZPmchiRp+HQg+NnnCMlEtYyMUds5oJrwcr1auywAAAAIN4Lazp2QAAAAAAAAAAADIAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('5a105fc13df8b6907411255450f45f41568420f0d1006fba0b12afa5ab4cc0aa', 'eb10a5e95a1922e7e69732f866982a4ac0103f4a8a0b7ab4ba86941dcb4d2c8e', '2920fda158776a5399ee6d0a0f5a7d56e8ff425181e9f49565ff6b30e0134cb7', 3, 1508958300, 'AAAACOsQpelaGSLn5pcy+GaYKkrAED9Kigt6tLqGlB3LTSyOIFYdpJOAeu3MGGAjCiU/bghqsU5Tm8aer574ETasH8gAAAAAWfDgXAAAAAAAAAAAWytPxoudFtBA+XPgoX68OnSpyq0CyNJxb/gkM8zhiqIpIP2hWHdqU5nubQoPWn1W6P9CUYHp9JVl/2sw4BNMtwAAAAMN4Lazp2QAAAAAAAAAAAEsAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('620d491824b651a196391d117511f6d853465a1e7d54d836ed33e5cd95f57bf9', '5a105fc13df8b6907411255450f45f41568420f0d1006fba0b12afa5ab4cc0aa', 'ac0a474e81e224e08d3282e0a354c7010ebbe4f31021ed5b42befaba0e57baea', 4, 1508958301, 'AAAACFoQX8E9+LaQdBElVFD0X0FWhCDw0QBvugsSr6WrTMCqgWIy3ttSsyBN6Kjv0nZsVmHMj+KYmCAUZ2f2oDJND/YAAAAAWfDgXQAAAAAAAAAAa1i3djL4JG2U0qym2CMoeBxlr+vmeubZ7vGC4ngh49KsCkdOgeIk4I0yguCjVMcBDrvk8xAh7VtCvvq6Dle66gAAAAQN4Lazp2QAAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('ed040e7a50d038078d301391cf55fbaa4e7c906c3e19bc0b364aebfe601259e1', '620d491824b651a196391d117511f6d853465a1e7d54d836ed33e5cd95f57bf9', '51463c741f96ff8757f1b4ff58a2ccd0630067327a2123fd46c48c5f9a0c7a2d', 5, 1508958302, 'AAAACGINSRgktlGhljkdEXUR9thTRloefVTYNu0z5c2V9Xv57ZIC69O+5KywrB0l+g4IXv0S8CKi9XF/2rRS/fOrDNoAAAAAWfDgXgAAAAAAAAAAbJCOaKm2CaEJkDvk9WFgcQA3JpN23CxDI5jTyWfntchRRjx0H5b/h1fxtP9YoszQYwBnMnohI/1GxIxfmgx6LQAAAAUN4Lazp2QAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('7f33583df9c5fd71eaebae6ab0d1456ca0f699011ed17bee1e2a26ee8c0080ec', 'ed040e7a50d038078d301391cf55fbaa4e7c906c3e19bc0b364aebfe601259e1', '1a0b874b2e15b7e57718ef56d9344dda4003587c3a3778215dbeb8a9d21b7637', 6, 1508958303, 'AAAACO0EDnpQ0DgHjTATkc9V+6pOfJBsPhm8CzZK6/5gElnhb1/TNugMRTILr04jSsmQK+ZSRxo3GFYlt/LeImBqxYQAAAAAWfDgXwAAAAAAAAAAQKGf90N/CebuaXWxlpPbcziaBUE4wyo+nOmUW36ADtsaC4dLLhW35XcY71bZNE3aQANYfDo3eCFdvrip0ht2NwAAAAYN4Lazp2QAAAAAAAAAAAJYAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('8cd8ecc14f5e80e84fc3e729a85b7c58c14f599e24cd24a15622e0d81d58fa36', '7f33583df9c5fd71eaebae6ab0d1456ca0f699011ed17bee1e2a26ee8c0080ec', '64943d5b1a8a515c468ea5d862058fbdbc3f8d3c1220a80da179d18f252325a5', 7, 1508958304, 'AAAACH8zWD35xf1x6uuuarDRRWyg9pkBHtF77h4qJu6MAIDsucoKqXqCEvULQ0clmpo3GSw8ih5zxFJCZdKZOPO9MnoAAAAAWfDgYAAAAAAAAAAA86p35r63mMyyIdwFy/OVIQnYahLVbx+xS7RU2RGWQgBklD1bGopRXEaOpdhiBY+9vD+NPBIgqA2hedGPJSMlpQAAAAcN4Lazp2QAAAAAAAAAAAK8AAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('29fd3635a1a491ca47401c08b459ca256ddedd7578feadb380b9bd7c3dc1b5ca', '8cd8ecc14f5e80e84fc3e729a85b7c58c14f599e24cd24a15622e0d81d58fa36', 'd1688fcf187126c551ce0e2c942c2b2cd5ecaa520113a9b9b7868d29fe5bdba9', 8, 1508958305, 'AAAACIzY7MFPXoDoT8PnKahbfFjBT1meJM0koVYi4NgdWPo26J1wizBocJrcJiMnyTQ0odbvu/Ny9piuWh4tbJ769wcAAAAAWfDgYQAAAAAAAAAAJ0ts4/XYQta2CPBn5gpjCmmaaT6lvEUhsrs3yyYWo8nRaI/PGHEmxVHODiyULCss1eyqUgETqbm3ho0p/lvbqQAAAAgN4Lazp2QAAAAAAAAAAAMgAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('630084622c886efc2ee601041460ab165db895430523e541f2819c0ac90f30a2', '29fd3635a1a491ca47401c08b459ca256ddedd7578feadb380b9bd7c3dc1b5ca', '15aad18d5e5343037b728dc3ff46ce0ec64139031957f93a3772bcffa82cd901', 9, 1508958306, 'AAAACCn9NjWhpJHKR0AcCLRZyiVt3t11eP6ts4C5vXw9wbXK+LblW24XF+shrwIcmniuKq3/dWpLfw9IG9K6fFEPMaoAAAAAWfDgYgAAAAAAAAAAPOhxFEK89OWazUrqiNnGGEHhUviPsqFuH3eqjSDcylwVqtGNXlNDA3tyjcP/Rs4OxkE5AxlX+To3crz/qCzZAQAAAAkN4Lazp2QAAAAAAAAAAAOEAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('f933cb8c6deb9cca1f135319cd1069d24aac6fddc4f7952f546d45f7ef2fbffa', '630084622c886efc2ee601041460ab165db895430523e541f2819c0ac90f30a2', '6922eaf14d851932eeaaf817af544a3f86fb8af3be3175bd28df88a474d0c3dc', 10, 1508958307, 'AAAACGMAhGIsiG78LuYBBBRgqxZduJVDBSPlQfKBnArJDzCicrZ1nDxUTJE6v/sg/HecGQSARioFfHeYw65kqKAFhEcAAAAAWfDgYwAAAAAAAAAA6lRE0phahaqqFmy0QiHScS5fiHWsfSsqZJ0lki7J1+FpIurxTYUZMu6q+BevVEo/hvuK874xdb0o34ikdNDD3AAAAAoN4Lazp2QAAAAAAAAAAAPoAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('182e7a42c68229dbf4723127bcb04106995ad5493f834413f91ba955961e9037', 'f933cb8c6deb9cca1f135319cd1069d24aac6fddc4f7952f546d45f7ef2fbffa', 'aff0f19c9d6058ea86462646fcd23cd8576cbbad88f8f5e3155a667f694eeda9', 11, 1508958308, 'AAAACPkzy4xt65zKHxNTGc0QadJKrG/dxPeVL1RtRffvL7/6qu+Yv3HQz3eK27p853tGLx5OTWpqqUTTILFBngFiPfwAAAAAWfDgZAAAAAAAAAAAmFwOlFqcVdyetl3vjpiXLbSMzYVia44vS0tbRk58Yzyv8PGcnWBY6oZGJkb80jzYV2y7rYj49eMVWmZ/aU7tqQAAAAsN4Lazp2QAAAAAAAAAAARMAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('0a8c5dcbd51d3e31d06402c74b03957ad94f98b22a6cf725cbe6ab4b42da7eae', '182e7a42c68229dbf4723127bcb04106995ad5493f834413f91ba955961e9037', 'c703b14326c6d5c705ab7ccb9a04727dac75df55e09c5567d69060056b22f5ed', 12, 1508958309, 'AAAACBguekLGginb9HIxJ7ywQQaZWtVJP4NEE/kbqVWWHpA3rBa5iRcKNd6z14SwF44JzqOQQ2yv39C9XOtKrId1mSkAAAAAWfDgZQAAAAAAAAAA3z9hmASpL9tAVxktxD3XSOp3itxSvEmM6AUkwBS4ERnHA7FDJsbVxwWrfMuaBHJ9rHXfVeCcVWfWkGAFayL17QAAAAwN4Lazp2QAAAAAAAAAAARMAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); + + +-- +-- Data for Name: offers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: peers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: publishqueue; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: pubsub; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: scphistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scphistory VALUES ('GCRY7RBCGF2K6PDMMR3XT2XSYUPEQL3SAJNQSX3M5T46PKP5RANIR7HK', 2, 'AAAAAKOPxCIxdK88bGR3eeryxR5IL3ICWwlfbOz556n9iBqIAAAAAAAAAAIAAAACAAAAAQAAAEhR4VaHf4tjdhMeSFvq35eKRPjwApVSuH4g2Xcxj0021QAAAABZ8OBbAAAAAgAAAAgAAAABAAAACAAAAAgAAAADAAAnEAAAAAAAAAABZ2r3BdXi1zGhf1aV2CC1GARyGf7M6ixKhONQc0VEG+4AAABAxEGa/9gCn93ge4KZo07oJD5shXancuinN2x4MNDk+TaXpB/MLflfzubIfskfoanWXdAJLU+t1WGWYjKDPRy2DQ=='); +INSERT INTO scphistory VALUES ('GCRY7RBCGF2K6PDMMR3XT2XSYUPEQL3SAJNQSX3M5T46PKP5RANIR7HK', 3, 'AAAAAKOPxCIxdK88bGR3eeryxR5IL3ICWwlfbOz556n9iBqIAAAAAAAAAAMAAAACAAAAAQAAADAgVh2kk4B67cwYYCMKJT9uCGqxTlObxp6vnvgRNqwfyAAAAABZ8OBcAAAAAAAAAAAAAAABZ2r3BdXi1zGhf1aV2CC1GARyGf7M6ixKhONQc0VEG+4AAABAlCGiqjC9CdCSWHP/jSDk2gSthGFEiIo0hXJI5MXPaEL1jl9GkoFlaEtiJNhzZkjkGNJjM7ZSymGKKjFU4ZwXAA=='); +INSERT INTO scphistory VALUES ('GCRY7RBCGF2K6PDMMR3XT2XSYUPEQL3SAJNQSX3M5T46PKP5RANIR7HK', 4, 'AAAAAKOPxCIxdK88bGR3eeryxR5IL3ICWwlfbOz556n9iBqIAAAAAAAAAAQAAAACAAAAAQAAADCBYjLe21KzIE3oqO/SdmxWYcyP4piYIBRnZ/agMk0P9gAAAABZ8OBdAAAAAAAAAAAAAAABZ2r3BdXi1zGhf1aV2CC1GARyGf7M6ixKhONQc0VEG+4AAABA8ZzM2rsWqslxbOyUPEzDuUzSqlFn52UDSIF3JMC9+I+/WzINJwL5dcxgi50e6PNITH9918YIHw+iG37tey/RBA=='); +INSERT INTO scphistory VALUES ('GCRY7RBCGF2K6PDMMR3XT2XSYUPEQL3SAJNQSX3M5T46PKP5RANIR7HK', 5, 'AAAAAKOPxCIxdK88bGR3eeryxR5IL3ICWwlfbOz556n9iBqIAAAAAAAAAAUAAAACAAAAAQAAADDtkgLr077krLCsHSX6Dghe/RLwIqL1cX/atFL986sM2gAAAABZ8OBeAAAAAAAAAAAAAAABZ2r3BdXi1zGhf1aV2CC1GARyGf7M6ixKhONQc0VEG+4AAABAoio44eVYX34OUlgwJg1AjOEHlmivdreg6/ArOtmqavhDxQbfAPuMDHxQxszpyjWinnEWGTBdw1WrvyEs6xL+BA=='); +INSERT INTO scphistory VALUES ('GCRY7RBCGF2K6PDMMR3XT2XSYUPEQL3SAJNQSX3M5T46PKP5RANIR7HK', 6, 'AAAAAKOPxCIxdK88bGR3eeryxR5IL3ICWwlfbOz556n9iBqIAAAAAAAAAAYAAAACAAAAAQAAADBvX9M26AxFMguvTiNKyZAr5lJHGjcYViW38t4iYGrFhAAAAABZ8OBfAAAAAAAAAAAAAAABZ2r3BdXi1zGhf1aV2CC1GARyGf7M6ixKhONQc0VEG+4AAABAalwnSu4M2TqFn59hlP9AVujuuwFzhFIh9Y9xmlptMpHiFNMufLaTZum3V3NEqHifPA/KqVD+V3jVMEza9JksAA=='); +INSERT INTO scphistory VALUES ('GCRY7RBCGF2K6PDMMR3XT2XSYUPEQL3SAJNQSX3M5T46PKP5RANIR7HK', 7, 'AAAAAKOPxCIxdK88bGR3eeryxR5IL3ICWwlfbOz556n9iBqIAAAAAAAAAAcAAAACAAAAAQAAADC5ygqpeoIS9QtDRyWamjcZLDyKHnPEUkJl0pk4870yegAAAABZ8OBgAAAAAAAAAAAAAAABZ2r3BdXi1zGhf1aV2CC1GARyGf7M6ixKhONQc0VEG+4AAABACscSH+wO9MS6K1BjFFRy1bsGHe6UC/vnaDMsTi71uxhxXZuJY0YHnZFB/aUhdw5Sq68HEgjjzBXRPINVMzbyBg=='); +INSERT INTO scphistory VALUES ('GCRY7RBCGF2K6PDMMR3XT2XSYUPEQL3SAJNQSX3M5T46PKP5RANIR7HK', 8, 'AAAAAKOPxCIxdK88bGR3eeryxR5IL3ICWwlfbOz556n9iBqIAAAAAAAAAAgAAAACAAAAAQAAADDonXCLMGhwmtwmIyfJNDSh1u+783L2mK5aHi1snvr3BwAAAABZ8OBhAAAAAAAAAAAAAAABZ2r3BdXi1zGhf1aV2CC1GARyGf7M6ixKhONQc0VEG+4AAABATs+lGMB/tUFOlgKcoKaZsK85rVjN9CkOXP4VfmELtmijVHX7pgY0mk5KisYjcvj4/hp3mZ1vrQ3jVCzjf+I/DQ=='); +INSERT INTO scphistory VALUES ('GCRY7RBCGF2K6PDMMR3XT2XSYUPEQL3SAJNQSX3M5T46PKP5RANIR7HK', 9, 'AAAAAKOPxCIxdK88bGR3eeryxR5IL3ICWwlfbOz556n9iBqIAAAAAAAAAAkAAAACAAAAAQAAADD4tuVbbhcX6yGvAhyaeK4qrf91akt/D0gb0rp8UQ8xqgAAAABZ8OBiAAAAAAAAAAAAAAABZ2r3BdXi1zGhf1aV2CC1GARyGf7M6ixKhONQc0VEG+4AAABAdE/RcNcTF52IT+MZA7YuzjzAwkTpNJxUW9+beG6PZe5G6pO87uJBsVuwTy/E0zGdaGVgw+gnUAN41vf10D3eAg=='); +INSERT INTO scphistory VALUES ('GCRY7RBCGF2K6PDMMR3XT2XSYUPEQL3SAJNQSX3M5T46PKP5RANIR7HK', 10, 'AAAAAKOPxCIxdK88bGR3eeryxR5IL3ICWwlfbOz556n9iBqIAAAAAAAAAAoAAAACAAAAAQAAADBytnWcPFRMkTq/+yD8d5wZBIBGKgV8d5jDrmSooAWERwAAAABZ8OBjAAAAAAAAAAAAAAABZ2r3BdXi1zGhf1aV2CC1GARyGf7M6ixKhONQc0VEG+4AAABAeG3EgZt+albAjHJ5uGtk0Vmf4FfZ5eBPJNcrBSUp4347a2U9LJfmWS4FZuXN3P4Gw6qAqKxPT79nakVaxyh+AQ=='); +INSERT INTO scphistory VALUES ('GCRY7RBCGF2K6PDMMR3XT2XSYUPEQL3SAJNQSX3M5T46PKP5RANIR7HK', 11, 'AAAAAKOPxCIxdK88bGR3eeryxR5IL3ICWwlfbOz556n9iBqIAAAAAAAAAAsAAAACAAAAAQAAADCq75i/cdDPd4rbunzne0YvHk5NamqpRNMgsUGeAWI9/AAAAABZ8OBkAAAAAAAAAAAAAAABZ2r3BdXi1zGhf1aV2CC1GARyGf7M6ixKhONQc0VEG+4AAABAGlHfa0hF5ogEuOx4zEWmqtZDSWtneF9NVQG0x8GvEZc1d8fyEDTnMjOsBvIKvYiL2294Do9vkfM/7/+v1SQNDQ=='); +INSERT INTO scphistory VALUES ('GCRY7RBCGF2K6PDMMR3XT2XSYUPEQL3SAJNQSX3M5T46PKP5RANIR7HK', 12, 'AAAAAKOPxCIxdK88bGR3eeryxR5IL3ICWwlfbOz556n9iBqIAAAAAAAAAAwAAAACAAAAAQAAADCsFrmJFwo13rPXhLAXjgnOo5BDbK/f0L1c60qsh3WZKQAAAABZ8OBlAAAAAAAAAAAAAAABZ2r3BdXi1zGhf1aV2CC1GARyGf7M6ixKhONQc0VEG+4AAABAcAAmpQlGac83FLhQ7AU1S7qEptm+cA69Ewrz0Go/ltEe0YZTRSN8avL0l3gib8Q8J+5f1dLj15DUjuFgIjJRDA=='); + + +-- +-- Data for Name: scpquorums; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scpquorums VALUES ('676af705d5e2d731a17f5695d820b518047219feccea2c4a84e3507345441bee', 12, 'AAAAAQAAAAEAAAAAo4/EIjF0rzxsZHd56vLFHkgvcgJbCV9s7Pnnqf2IGogAAAAA'); + + +-- +-- Data for Name: signers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: storestate; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO storestate VALUES ('lastclosedledger ', '0a8c5dcbd51d3e31d06402c74b03957ad94f98b22a6cf725cbe6ab4b42da7eae'); +INSERT INTO storestate VALUES ('databaseschema ', '5'); +INSERT INTO storestate VALUES ('forcescponnextlaunch ', 'false'); +INSERT INTO storestate VALUES ('historyarchivestate ', '{ + "version": 1, + "server": "v0.6.3-66-gd66575cf", + "currentLedger": 12, + "currentBuckets": [ + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "679de3c57feae0ed123189b958f80591e3624d0b8adbff4c4d5945a679bfdf1f" + }, + { + "curr": "576e7fa1570abac3cdd607802b06a87d7a7c493662702ca33cb6be0d23246b9e", + "next": { + "state": 1, + "output": "679de3c57feae0ed123189b958f80591e3624d0b8adbff4c4d5945a679bfdf1f" + }, + "snap": "e5bb115dc53a8f6346850e36a5304e1ef74de90388fe1022ea2de26619344fe4" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 1, + "output": "fdb0f48311ec2490da84b11a5d9442f67848dae4d8ca50559835c1269b042165" + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + } + ] +}'); +INSERT INTO storestate VALUES ('lastscpdata ', 'AAAAAgAAAACjj8QiMXSvPGxkd3nq8sUeSC9yAlsJX2zs+eep/YgaiAAAAAAAAAAMAAAAA2dq9wXV4tcxoX9WldggtRgEchn+zOosSoTjUHNFRBvuAAAAAQAAADCsFrmJFwo13rPXhLAXjgnOo5BDbK/f0L1c60qsh3WZKQAAAABZ8OBlAAAAAAAAAAAAAAABAAAAMKwWuYkXCjXes9eEsBeOCc6jkENsr9/QvVzrSqyHdZkpAAAAAFnw4GUAAAAAAAAAAAAAAECisA1QCBTcQc6OQoNz3LmKZ+Kwl5sQ9US7Xd1s7hx5rIfhUCtAGthczpAjIMccOudOlIQi0NGkpdZc8hPZfM0NAAAAAKOPxCIxdK88bGR3eeryxR5IL3ICWwlfbOz556n9iBqIAAAAAAAAAAwAAAACAAAAAQAAADCsFrmJFwo13rPXhLAXjgnOo5BDbK/f0L1c60qsh3WZKQAAAABZ8OBlAAAAAAAAAAAAAAABZ2r3BdXi1zGhf1aV2CC1GARyGf7M6ixKhONQc0VEG+4AAABAcAAmpQlGac83FLhQ7AU1S7qEptm+cA69Ewrz0Go/ltEe0YZTRSN8avL0l3gib8Q8J+5f1dLj15DUjuFgIjJRDAAAAAEYLnpCxoIp2/RyMSe8sEEGmVrVST+DRBP5G6lVlh6QNwAAAAAAAAABAAAAAQAAAAEAAAAAo4/EIjF0rzxsZHd56vLFHkgvcgJbCV9s7Pnnqf2IGogAAAAA'); + + +-- +-- Data for Name: trustlines; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: txfeehistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txfeehistory VALUES ('b2a227c39c64a44fc7abd4c96819456f0399906d12c476d70b402bfdb296d6a3', 2, 1, 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('36be70fb7782f9801cdcedc1206e21f99293c99860a15e441f4749747a0a37ab', 2, 2, 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/84AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('c76f843dd29e92bacbf21659d50454a043eae6a5ef81e2e8dc97b0e005d30962', 3, 1, 'AAAAAgAAAAMAAAACAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('895b1e3ae3570fac549edfcc260122a2f930b35b94b1dffa9f8c2a08816ac376', 4, 1, 'AAAAAgAAAAMAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAQAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+M4AAAAAgAAAAIAAAAAAAAAAQAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('b0bb26bbc67cc1c226293ce18f94f9766b4e5c68132c2caff7907791d1723f27', 5, 1, 'AAAAAgAAAAMAAAAEAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+M4AAAAAgAAAAIAAAAAAAAAAQAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAEAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+LUAAAAAgAAAAMAAAAAAAAAAQAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAEAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('a721bea4176539c6ed564ceafb7084a31c5deafe17ce0b52d2e2752feae47db7', 6, 1, 'AAAAAgAAAAMAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+LUAAAAAgAAAAMAAAAAAAAAAQAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+JwAAAAAgAAAAQAAAAAAAAAAQAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('ca5cd8926d50d5f94acc074b6c966e927195571cb4977e1cb7690df84529f127', 7, 1, 'AAAAAgAAAAMAAAAGAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+JwAAAAAgAAAAQAAAAAAAAAAQAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAEAAAAAAgACAgAAAAAAAAAAAAAAAAAAAAEAAAAHAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+IMAAAAAgAAAAUAAAAAAAAAAQAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAEAAAAAAgACAgAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('eb4d35309591547be7fe2fb9c44834d20e4d569294088ac1a3d204d16e9a0751', 8, 1, 'AAAAAgAAAAMAAAAHAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+IMAAAAAgAAAAUAAAAAAAAAAQAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAEAAAANbnVsbHN0eWxlLmNvbQAAAAIAAgIAAAAAAAAAAAAAAAAAAAABAAAACAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAACVAvhqAAAAAIAAAAGAAAAAAAAAAEAAAAAO2C/AO45YBD3tHVFO1R3A0MekP8JR6nN1A9eWidyItUAAAABAAAADW51bGxzdHlsZS5jb20AAAACAAICAAAAAAAAAAAAAAAA'); +INSERT INTO txfeehistory VALUES ('be85b5e14dcb9fe976a73cccc8bfac69be7ecec2126bfe5ecc551c683b43dcd7', 9, 1, 'AAAAAgAAAAMAAAAIAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+GoAAAAAgAAAAYAAAABAAAAAQAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAEAAAANbnVsbHN0eWxlLmNvbQAAAAIAAgIAAAABAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAQAAAAAAAAAAAAAAAQAAAAkAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL4UQAAAACAAAABwAAAAEAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAQAAAA1udWxsc3R5bGUuY29tAAAAAgACAgAAAAEAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAABAAAAAAAAAAA='); +INSERT INTO txfeehistory VALUES ('40a8f7d6e4822bf645865d779922dcdd3b43537b993e75e7165cc84ac04e0dba', 10, 1, 'AAAAAgAAAAMAAAAJAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+FEAAAAAgAAAAcAAAABAAAAAQAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAEAAAANbnVsbHN0eWxlLmNvbQAAAAIAAgIAAAABAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAABQAAAAAAAAAAAAAAAQAAAAoAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL4OAAAAACAAAACAAAAAEAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAQAAAA1udWxsc3R5bGUuY29tAAAAAgACAgAAAAEAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAFAAAAAAAAAAA='); +INSERT INTO txfeehistory VALUES ('0733db959ef871e700de41cc2074cb380da7b10262d350d0be0170488554a968', 11, 1, 'AAAAAgAAAAMAAAAKAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+DgAAAAAgAAAAgAAAABAAAAAQAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAAAAAANbnVsbHN0eWxlLmNvbQAAAAIAAgIAAAABAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAABQAAAAAAAAAAAAAAAQAAAAsAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL4HwAAAACAAAACQAAAAEAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAAAAAA1udWxsc3R5bGUuY29tAAAAAgACAgAAAAEAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAFAAAAAAAAAAA='); + + +-- +-- Data for Name: txhistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txhistory VALUES ('b2a227c39c64a44fc7abd4c96819456f0399906d12c476d70b402bfdb296d6a3', 2, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAACVAvkAAAAAAAAAAABVvwF9wAAAEDt3KwmaPuPdFSUxdAFeb6OQetyQKIWazlbSMMhmHKNLD4sqhEqUZcQP0l+X/Op+osWmN6+FUYbsz75Q2jG4vMM', 'sqInw5xkpE/Hq9TJaBlFbwOZkG0SxHbXC0Ar/bKW1qMAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2sVNYGzgAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('36be70fb7782f9801cdcedc1206e21f99293c99860a15e441f4749747a0a37ab', 2, 2, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAO2C/AO45YBD3tHVFO1R3A0MekP8JR6nN1A9eWidyItUAAAACVAvkAAAAAAAAAAABVvwF9wAAAEA3xWbxPObnZMiBGFKLJQufJLguTsHJxyAsPP5F9Zj561aXnvN/HVRJbFsEcitGbgi9dWVdKRYvmVWCizIdmLID', 'Nr5w+3eC+YAc3O3BIG4h+ZKTyZhgoV5EH0dJdHoKN6sAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rv9MNzgAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('c76f843dd29e92bacbf21659d50454a043eae6a5ef81e2e8dc97b0e005d30962', 3, 1, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAUAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABruS+TAAAAEC87yJlK5zXwuklcPxhmPt9HB9YOb+0HHcN2SteSVLsjnyafNu/560Mj8/QJzfSnKm3arRVJtHgFgaSFJiywRoF', 'x2+EPdKekrrL8hZZ1QRUoEPq5qXvgeLo3Jew4AXTCWIAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAAAMAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL45wAAAACAAAAAQAAAAAAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('895b1e3ae3570fac549edfcc260122a2f930b35b94b1dffa9f8c2a08816ac376', 4, 1, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABruS+TAAAAEALUnIdWXjDKFil8+3DPcIytdMco/BMWnrqyv9Hc/DQsGAOLHRdhdAVL/sVSxW7ITzpxY3bv11PDVlr/U5DdrgB', 'iVseOuNXD6xUnt/MJgEiovkws1uUsd/6n4wqCIFqw3YAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAAAQAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL4zgAAAACAAAAAgAAAAAAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('b0bb26bbc67cc1c226293ce18f94f9766b4e5c68132c2caff7907791d1723f27', 5, 1, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABA9mhGRBoZe3eaPDqE6/qVEp5iFBEKjErYbUzVlrtr6cD5ttn0uGzLQsVMlEgPpB82XWa7gzTRg0OykcYE8otoAg==', 'sLsmu8Z8wcImKTzhj5T5dmtOXGgTLCyv95B3kdFyPycAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL4tQAAAACAAAAAwAAAAAAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('a721bea4176539c6ed564ceafb7084a31c5deafe17ce0b52d2e2752feae47db7', 6, 1, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAAQAAAAIAAAAAAAAAAAAAAAAAAAABruS+TAAAAEBE6Hv6Be+Sn9oVyHm+QedPXQwsE/U9freWjJTR8BN8qnvn6VUOzdc0U6PDQCyroLCAwh1LmK3iOmngqczf1RYG', 'pyG+pBdlOcbtVkzq+3CEoxxd6v4XzgtS0uJ1L+rkfbcAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAAAYAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL4nAAAAACAAAABAAAAAAAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAQAAAAACAAICAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('ca5cd8926d50d5f94acc074b6c966e927195571cb4977e1cb7690df84529f127', 7, 1, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAADW51bGxzdHlsZS5jb20AAAAAAAAAAAAAAAAAAAGu5L5MAAAAQO5rla99y3m6umRBntLBh1Spdn1AzzIijQ++E3Xk8CrAhurEJ6Dv2MeK8lw6KCWOwOMGYQo65HIisANSOuvaBAc=', 'ylzYkm1Q1flKzAdLbJZuknGVVxy0l34ct2kN+EUp8ScAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAAAcAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL4gwAAAACAAAABQAAAAAAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAQAAAA1udWxsc3R5bGUuY29tAAAAAgACAgAAAAAAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('eb4d35309591547be7fe2fb9c44834d20e4d569294088ac1a3d204d16e9a0751', 8, 1, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAGAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAEAAAAAAAAAAa7kvkwAAABAyTsFJ/1kdjnOkMFPhwVKbKbgNUMVtym/khH5V677pL0kYUOCsOWWBBxA+Hq3aHyldsfdVvGdm8OyKMflFdFrDg==', '6001MJWRVHvn/i+5xEg00g5NVpKUCIrBo9IE0W6aB1EAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAAAgAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL4agAAAACAAAABgAAAAEAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAQAAAA1udWxsc3R5bGUuY29tAAAAAgACAgAAAAEAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAABAAAAAAAAAAA='); +INSERT INTO txhistory VALUES ('be85b5e14dcb9fe976a73cccc8bfac69be7ecec2126bfe5ecc551c683b43dcd7', 9, 1, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAHAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAUAAAAAAAAAAa7kvkwAAABA/+toY7hGHaUzr6718ZjScST+WjFgYNU9Qse1wPqVO6U/CMVZPy6ZzimkiXFxcBc3py1BeYm3CA+YCqKrHRzABQ==', 'voW14U3Ln+l2pzzMyL+sab5+zsISa/5ezFUcaDtD3NcAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAAAkAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL4UQAAAACAAAABwAAAAEAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAQAAAA1udWxsc3R5bGUuY29tAAAAAgACAgAAAAEAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAFAAAAAAAAAAA='); +INSERT INTO txhistory VALUES ('40a8f7d6e4822bf645865d779922dcdd3b43537b993e75e7165cc84ac04e0dba', 10, 1, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABruS+TAAAAEB9KMKKASiNjFhFaahxinyc2cQQv7EAiQtBT60YRSgz4/2dANcXocCkB3EQFpeXvoXjxxJEMtEqV2NXPdByxvIO', 'QKj31uSCK/ZFhl13mSLc3TtDU3uZPnXnFlzISsBODboAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAAAoAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL4OAAAAACAAAACAAAAAEAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAAAAAA1udWxsc3R5bGUuY29tAAAAAgACAgAAAAEAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAFAAAAAAAAAAA='); +INSERT INTO txhistory VALUES ('0733db959ef871e700de41cc2074cb380da7b10262d350d0be0170488554a968', 11, 1, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAJAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAAAAAAAAAAAa7kvkwAAABA1/EWaAPOlu4RG89UlMpXLQHlk9dwMy/TLmJ7ttCT7UxJ9kSU4CbXVUG/i7yGxSrs9v8gVKLFxtTIlXlNbHb0AQ==', 'BzPblZ74cecA3kHMIHTLOA2nsQJi01DQvgFwSIVUqWgAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAA==', 'AAAAAAAAAAEAAAABAAAAAQAAAAsAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL4HwAAAACAAAACQAAAAAAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAAAAAA1udWxsc3R5bGUuY29tAAAAAgACAgAAAAAAAAAAAAAAAA=='); + + +-- +-- Name: accountdata accountdata_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accountdata + ADD CONSTRAINT accountdata_pkey PRIMARY KEY (accountid, dataname); + + +-- +-- Name: accounts accounts_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accounts + ADD CONSTRAINT accounts_pkey PRIMARY KEY (accountid); + + +-- +-- Name: ban ban_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ban + ADD CONSTRAINT ban_pkey PRIMARY KEY (nodeid); + + +-- +-- Name: ledgerheaders ledgerheaders_ledgerseq_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_ledgerseq_key UNIQUE (ledgerseq); + + +-- +-- Name: ledgerheaders ledgerheaders_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_pkey PRIMARY KEY (ledgerhash); + + +-- +-- Name: offers offers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY offers + ADD CONSTRAINT offers_pkey PRIMARY KEY (offerid); + + +-- +-- Name: peers peers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY peers + ADD CONSTRAINT peers_pkey PRIMARY KEY (ip, port); + + +-- +-- Name: publishqueue publishqueue_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY publishqueue + ADD CONSTRAINT publishqueue_pkey PRIMARY KEY (ledger); + + +-- +-- Name: pubsub pubsub_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY pubsub + ADD CONSTRAINT pubsub_pkey PRIMARY KEY (resid); + + +-- +-- Name: scpquorums scpquorums_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY scpquorums + ADD CONSTRAINT scpquorums_pkey PRIMARY KEY (qsethash); + + +-- +-- Name: signers signers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY signers + ADD CONSTRAINT signers_pkey PRIMARY KEY (accountid, publickey); + + +-- +-- Name: storestate storestate_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY storestate + ADD CONSTRAINT storestate_pkey PRIMARY KEY (statename); + + +-- +-- Name: trustlines trustlines_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY trustlines + ADD CONSTRAINT trustlines_pkey PRIMARY KEY (accountid, issuer, assetcode); + + +-- +-- Name: txfeehistory txfeehistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txfeehistory + ADD CONSTRAINT txfeehistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: txhistory txhistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txhistory + ADD CONSTRAINT txhistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: accountbalances; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX accountbalances ON accounts USING btree (balance) WHERE (balance >= 1000000000); + + +-- +-- Name: buyingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX buyingissuerindex ON offers USING btree (buyingissuer); + + +-- +-- Name: histbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histbyseq ON txhistory USING btree (ledgerseq); + + +-- +-- Name: histfeebyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histfeebyseq ON txfeehistory USING btree (ledgerseq); + + +-- +-- Name: ledgersbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX ledgersbyseq ON ledgerheaders USING btree (ledgerseq); + + +-- +-- Name: priceindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX priceindex ON offers USING btree (price); + + +-- +-- Name: scpenvsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpenvsbyseq ON scphistory USING btree (ledgerseq); + + +-- +-- Name: scpquorumsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpquorumsbyseq ON scpquorums USING btree (lastledgerseq); + + +-- +-- Name: sellingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX sellingissuerindex ON offers USING btree (sellingissuer); + + +-- +-- Name: signersaccount; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX signersaccount ON signers USING btree (accountid); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/set_options-horizon.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/set_options-horizon.sql new file mode 100644 index 0000000..0d9906b --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/set_options-horizon.sql @@ -0,0 +1,826 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; + +SET search_path = public, pg_catalog; + +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_account_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_account_id_fkey; +DROP INDEX IF EXISTS public.trade_effects_by_order_book; +DROP INDEX IF EXISTS public.index_history_transactions_on_id; +DROP INDEX IF EXISTS public.index_history_operations_on_type; +DROP INDEX IF EXISTS public.index_history_operations_on_transaction_id; +DROP INDEX IF EXISTS public.index_history_operations_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_sequence; +DROP INDEX IF EXISTS public.index_history_ledgers_on_previous_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_importer_version; +DROP INDEX IF EXISTS public.index_history_ledgers_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_closed_at; +DROP INDEX IF EXISTS public.index_history_effects_on_type; +DROP INDEX IF EXISTS public.index_history_accounts_on_id; +DROP INDEX IF EXISTS public.index_history_accounts_on_address; +DROP INDEX IF EXISTS public.htrd_time_lookup; +DROP INDEX IF EXISTS public.htrd_pid; +DROP INDEX IF EXISTS public.htrd_pair_time_lookup; +DROP INDEX IF EXISTS public.htrd_counter_lookup; +DROP INDEX IF EXISTS public.htrd_by_offer; +DROP INDEX IF EXISTS public.htp_by_htid; +DROP INDEX IF EXISTS public.hs_transaction_by_id; +DROP INDEX IF EXISTS public.hs_ledger_by_id; +DROP INDEX IF EXISTS public.hop_by_hoid; +DROP INDEX IF EXISTS public.hist_tx_p_id; +DROP INDEX IF EXISTS public.hist_op_p_id; +DROP INDEX IF EXISTS public.hist_e_id; +DROP INDEX IF EXISTS public.hist_e_by_order; +DROP INDEX IF EXISTS public.by_ledger; +DROP INDEX IF EXISTS public.by_hash; +DROP INDEX IF EXISTS public.by_account; +DROP INDEX IF EXISTS public.asset_by_issuer; +ALTER TABLE IF EXISTS ONLY public.history_transaction_participants DROP CONSTRAINT IF EXISTS history_transaction_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_operation_participants DROP CONSTRAINT IF EXISTS history_operation_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_asset_code_asset_type_asset_issuer_key; +ALTER TABLE IF EXISTS ONLY public.gorp_migrations DROP CONSTRAINT IF EXISTS gorp_migrations_pkey; +ALTER TABLE IF EXISTS public.history_transaction_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_operation_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_assets ALTER COLUMN id DROP DEFAULT; +DROP TABLE IF EXISTS public.history_transactions; +DROP SEQUENCE IF EXISTS public.history_transaction_participants_id_seq; +DROP TABLE IF EXISTS public.history_transaction_participants; +DROP TABLE IF EXISTS public.history_trades; +DROP TABLE IF EXISTS public.history_operations; +DROP SEQUENCE IF EXISTS public.history_operation_participants_id_seq; +DROP TABLE IF EXISTS public.history_operation_participants; +DROP TABLE IF EXISTS public.history_ledgers; +DROP TABLE IF EXISTS public.history_effects; +DROP SEQUENCE IF EXISTS public.history_assets_id_seq; +DROP TABLE IF EXISTS public.history_assets; +DROP TABLE IF EXISTS public.history_accounts; +DROP SEQUENCE IF EXISTS public.history_accounts_id_seq; +DROP TABLE IF EXISTS public.gorp_migrations; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: gorp_migrations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE gorp_migrations ( + id text NOT NULL, + applied_at timestamp with time zone +); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_accounts_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_accounts ( + id bigint DEFAULT nextval('history_accounts_id_seq'::regclass) NOT NULL, + address character varying(64) +); + + +-- +-- Name: history_assets; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_assets ( + id integer NOT NULL, + asset_type character varying(64) NOT NULL, + asset_code character varying(12) NOT NULL, + asset_issuer character varying(56) NOT NULL +); + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_assets_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_assets_id_seq OWNED BY history_assets.id; + + +-- +-- Name: history_effects; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_effects ( + history_account_id bigint NOT NULL, + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + type integer NOT NULL, + details jsonb +); + + +-- +-- Name: history_ledgers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_ledgers ( + sequence integer NOT NULL, + ledger_hash character varying(64) NOT NULL, + previous_ledger_hash character varying(64), + transaction_count integer DEFAULT 0 NOT NULL, + operation_count integer DEFAULT 0 NOT NULL, + closed_at timestamp without time zone NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + importer_version integer DEFAULT 1 NOT NULL, + total_coins bigint NOT NULL, + fee_pool bigint NOT NULL, + base_fee integer NOT NULL, + base_reserve integer NOT NULL, + max_tx_set_size integer NOT NULL, + protocol_version integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: history_operation_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operation_participants ( + id integer NOT NULL, + history_operation_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_operation_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_operation_participants_id_seq OWNED BY history_operation_participants.id; + + +-- +-- Name: history_operations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operations ( + id bigint NOT NULL, + transaction_id bigint NOT NULL, + application_order integer NOT NULL, + type integer NOT NULL, + details jsonb, + source_account character varying(64) DEFAULT ''::character varying NOT NULL +); + + +-- +-- Name: history_trades; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_trades ( + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + ledger_closed_at timestamp without time zone NOT NULL, + offer_id bigint NOT NULL, + base_account_id bigint NOT NULL, + base_asset_id bigint NOT NULL, + base_amount bigint NOT NULL, + counter_account_id bigint NOT NULL, + counter_asset_id bigint NOT NULL, + counter_amount bigint NOT NULL, + base_is_seller boolean, + CONSTRAINT history_trades_base_amount_check CHECK ((base_amount > 0)), + CONSTRAINT history_trades_check CHECK ((base_asset_id < counter_asset_id)), + CONSTRAINT history_trades_counter_amount_check CHECK ((counter_amount > 0)) +); + + +-- +-- Name: history_transaction_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transaction_participants ( + id integer NOT NULL, + history_transaction_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_transaction_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_transaction_participants_id_seq OWNED BY history_transaction_participants.id; + + +-- +-- Name: history_transactions; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transactions ( + transaction_hash character varying(64) NOT NULL, + ledger_sequence integer NOT NULL, + application_order integer NOT NULL, + account character varying(64) NOT NULL, + account_sequence bigint NOT NULL, + fee_paid integer NOT NULL, + operation_count integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + tx_envelope text NOT NULL, + tx_result text NOT NULL, + tx_meta text NOT NULL, + tx_fee_meta text NOT NULL, + signatures character varying(96)[] DEFAULT '{}'::character varying[] NOT NULL, + memo_type character varying DEFAULT 'none'::character varying NOT NULL, + memo character varying, + time_bounds int8range +); + + +-- +-- Name: history_assets id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets ALTER COLUMN id SET DEFAULT nextval('history_assets_id_seq'::regclass); + + +-- +-- Name: history_operation_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants ALTER COLUMN id SET DEFAULT nextval('history_operation_participants_id_seq'::regclass); + + +-- +-- Name: history_transaction_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants ALTER COLUMN id SET DEFAULT nextval('history_transaction_participants_id_seq'::regclass); + + +-- +-- Data for Name: gorp_migrations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO gorp_migrations VALUES ('1_initial_schema.sql', '2017-10-25 12:02:41.355815-07'); +INSERT INTO gorp_migrations VALUES ('2_index_participants_by_toid.sql', '2017-10-25 12:02:41.35913-07'); +INSERT INTO gorp_migrations VALUES ('3_use_sequence_in_history_accounts.sql', '2017-10-25 12:02:41.361119-07'); +INSERT INTO gorp_migrations VALUES ('4_add_protocol_version.sql', '2017-10-25 12:02:41.365998-07'); +INSERT INTO gorp_migrations VALUES ('5_create_trades_table.sql', '2017-10-25 12:02:41.370443-07'); +INSERT INTO gorp_migrations VALUES ('6_create_assets_table.sql', '2017-10-25 12:02:41.373746-07'); +INSERT INTO gorp_migrations VALUES ('7_modify_trades_table.sql', '2017-10-25 12:02:41.381902-07'); + + +-- +-- Data for Name: history_accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_accounts VALUES (1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_accounts VALUES (2, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_accounts VALUES (3, 'GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2'); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_accounts_id_seq', 3, true); + + +-- +-- Data for Name: history_assets; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_assets_id_seq', 1, false); + + +-- +-- Data for Name: history_effects; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_effects VALUES (2, 8589938689, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589938689, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (2, 8589938689, 3, 10, '{"weight": 1, "public_key": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU"}'); +INSERT INTO history_effects VALUES (3, 8589942785, 1, 0, '{"starting_balance": "1000.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589942785, 2, 3, '{"amount": "1000.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (3, 8589942785, 3, 10, '{"weight": 1, "public_key": "GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2"}'); +INSERT INTO history_effects VALUES (2, 12884905985, 1, 12, '{"weight": 1, "public_key": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU"}'); +INSERT INTO history_effects VALUES (2, 17179873281, 1, 6, '{"auth_required_flag": true}'); +INSERT INTO history_effects VALUES (2, 17179873281, 2, 12, '{"weight": 1, "public_key": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU"}'); +INSERT INTO history_effects VALUES (2, 21474840577, 1, 12, '{"weight": 2, "public_key": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU"}'); +INSERT INTO history_effects VALUES (2, 25769807873, 1, 4, '{"low_threshold": 0, "med_threshold": 2, "high_threshold": 2}'); +INSERT INTO history_effects VALUES (2, 25769807873, 2, 12, '{"weight": 2, "public_key": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU"}'); +INSERT INTO history_effects VALUES (2, 30064775169, 1, 5, '{"home_domain": "nullstyle.com"}'); +INSERT INTO history_effects VALUES (2, 30064775169, 2, 12, '{"weight": 2, "public_key": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU"}'); +INSERT INTO history_effects VALUES (2, 34359742465, 1, 12, '{"weight": 2, "public_key": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU"}'); +INSERT INTO history_effects VALUES (2, 34359742465, 2, 10, '{"weight": 1, "public_key": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (2, 38654709761, 1, 12, '{"weight": 2, "public_key": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU"}'); +INSERT INTO history_effects VALUES (2, 38654709761, 2, 12, '{"weight": 5, "public_key": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (2, 42949677057, 1, 6, '{"auth_required_flag": false}'); +INSERT INTO history_effects VALUES (2, 42949677057, 2, 12, '{"weight": 2, "public_key": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU"}'); +INSERT INTO history_effects VALUES (2, 42949677057, 3, 12, '{"weight": 5, "public_key": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (2, 47244644353, 1, 11, '{"public_key": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (2, 47244644353, 2, 12, '{"weight": 2, "public_key": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU"}'); + + +-- +-- Data for Name: history_ledgers; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_ledgers VALUES (1, '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', NULL, 0, 0, '1970-01-01 00:00:00', '2017-10-25 19:05:04.191748', '2017-10-25 19:05:04.191748', 4294967296, 10, 1000000000000000000, 0, 100, 100000000, 100, 0); +INSERT INTO history_ledgers VALUES (2, 'eb10a5e95a1922e7e69732f866982a4ac0103f4a8a0b7ab4ba86941dcb4d2c8e', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', 2, 2, '2017-10-25 19:04:59', '2017-10-25 19:05:04.203867', '2017-10-25 19:05:04.203867', 8589934592, 10, 1000000000000000000, 200, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (3, '5a105fc13df8b6907411255450f45f41568420f0d1006fba0b12afa5ab4cc0aa', 'eb10a5e95a1922e7e69732f866982a4ac0103f4a8a0b7ab4ba86941dcb4d2c8e', 1, 1, '2017-10-25 19:05:00', '2017-10-25 19:05:04.233318', '2017-10-25 19:05:04.233318', 12884901888, 10, 1000000000000000000, 300, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (4, '620d491824b651a196391d117511f6d853465a1e7d54d836ed33e5cd95f57bf9', '5a105fc13df8b6907411255450f45f41568420f0d1006fba0b12afa5ab4cc0aa', 1, 1, '2017-10-25 19:05:01', '2017-10-25 19:05:04.245498', '2017-10-25 19:05:04.245498', 17179869184, 10, 1000000000000000000, 400, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (5, 'ed040e7a50d038078d301391cf55fbaa4e7c906c3e19bc0b364aebfe601259e1', '620d491824b651a196391d117511f6d853465a1e7d54d836ed33e5cd95f57bf9', 1, 1, '2017-10-25 19:05:02', '2017-10-25 19:05:04.258066', '2017-10-25 19:05:04.258066', 21474836480, 10, 1000000000000000000, 500, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (6, '7f33583df9c5fd71eaebae6ab0d1456ca0f699011ed17bee1e2a26ee8c0080ec', 'ed040e7a50d038078d301391cf55fbaa4e7c906c3e19bc0b364aebfe601259e1', 1, 1, '2017-10-25 19:05:03', '2017-10-25 19:05:04.271597', '2017-10-25 19:05:04.271597', 25769803776, 10, 1000000000000000000, 600, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (7, '8cd8ecc14f5e80e84fc3e729a85b7c58c14f599e24cd24a15622e0d81d58fa36', '7f33583df9c5fd71eaebae6ab0d1456ca0f699011ed17bee1e2a26ee8c0080ec', 1, 1, '2017-10-25 19:05:04', '2017-10-25 19:05:04.286786', '2017-10-25 19:05:04.286786', 30064771072, 10, 1000000000000000000, 700, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (8, '29fd3635a1a491ca47401c08b459ca256ddedd7578feadb380b9bd7c3dc1b5ca', '8cd8ecc14f5e80e84fc3e729a85b7c58c14f599e24cd24a15622e0d81d58fa36', 1, 1, '2017-10-25 19:05:05', '2017-10-25 19:05:04.303276', '2017-10-25 19:05:04.303276', 34359738368, 10, 1000000000000000000, 800, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (9, '630084622c886efc2ee601041460ab165db895430523e541f2819c0ac90f30a2', '29fd3635a1a491ca47401c08b459ca256ddedd7578feadb380b9bd7c3dc1b5ca', 1, 1, '2017-10-25 19:05:06', '2017-10-25 19:05:04.317144', '2017-10-25 19:05:04.317144', 38654705664, 10, 1000000000000000000, 900, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (10, 'f933cb8c6deb9cca1f135319cd1069d24aac6fddc4f7952f546d45f7ef2fbffa', '630084622c886efc2ee601041460ab165db895430523e541f2819c0ac90f30a2', 1, 1, '2017-10-25 19:05:07', '2017-10-25 19:05:04.330777', '2017-10-25 19:05:04.330777', 42949672960, 10, 1000000000000000000, 1000, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (11, '182e7a42c68229dbf4723127bcb04106995ad5493f834413f91ba955961e9037', 'f933cb8c6deb9cca1f135319cd1069d24aac6fddc4f7952f546d45f7ef2fbffa', 1, 1, '2017-10-25 19:05:08', '2017-10-25 19:05:04.349482', '2017-10-25 19:05:04.349482', 47244640256, 10, 1000000000000000000, 1100, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (12, '0a8c5dcbd51d3e31d06402c74b03957ad94f98b22a6cf725cbe6ab4b42da7eae', '182e7a42c68229dbf4723127bcb04106995ad5493f834413f91ba955961e9037', 0, 0, '2017-10-25 19:05:09', '2017-10-25 19:05:04.363079', '2017-10-25 19:05:04.363079', 51539607552, 10, 1000000000000000000, 1100, 100, 100000000, 10000, 8); + + +-- +-- Data for Name: history_operation_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operation_participants VALUES (1, 8589938689, 1); +INSERT INTO history_operation_participants VALUES (2, 8589938689, 2); +INSERT INTO history_operation_participants VALUES (3, 8589942785, 1); +INSERT INTO history_operation_participants VALUES (4, 8589942785, 3); +INSERT INTO history_operation_participants VALUES (5, 12884905985, 2); +INSERT INTO history_operation_participants VALUES (6, 17179873281, 2); +INSERT INTO history_operation_participants VALUES (7, 21474840577, 2); +INSERT INTO history_operation_participants VALUES (8, 25769807873, 2); +INSERT INTO history_operation_participants VALUES (9, 30064775169, 2); +INSERT INTO history_operation_participants VALUES (10, 34359742465, 2); +INSERT INTO history_operation_participants VALUES (11, 38654709761, 2); +INSERT INTO history_operation_participants VALUES (12, 42949677057, 2); +INSERT INTO history_operation_participants VALUES (13, 47244644353, 2); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_operation_participants_id_seq', 13, true); + + +-- +-- Data for Name: history_operations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operations VALUES (8589938689, 8589938688, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (8589942785, 8589942784, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2", "starting_balance": "1000.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (12884905985, 12884905984, 1, 5, '{"inflation_dest": "GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (17179873281, 17179873280, 1, 5, '{"set_flags": [1], "set_flags_s": ["auth_required"]}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (21474840577, 21474840576, 1, 5, '{"master_key_weight": 2}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (25769807873, 25769807872, 1, 5, '{"low_threshold": 0, "med_threshold": 2, "high_threshold": 2}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (30064775169, 30064775168, 1, 5, '{"home_domain": "nullstyle.com"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (34359742465, 34359742464, 1, 5, '{"signer_key": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "signer_weight": 1}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (38654709761, 38654709760, 1, 5, '{"signer_key": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "signer_weight": 5}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (42949677057, 42949677056, 1, 5, '{"clear_flags": [1], "clear_flags_s": ["auth_required"]}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (47244644353, 47244644352, 1, 5, '{"signer_key": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "signer_weight": 0}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); + + +-- +-- Data for Name: history_trades; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: history_transaction_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transaction_participants VALUES (1, 8589938688, 1); +INSERT INTO history_transaction_participants VALUES (2, 8589938688, 2); +INSERT INTO history_transaction_participants VALUES (3, 8589942784, 1); +INSERT INTO history_transaction_participants VALUES (4, 8589942784, 3); +INSERT INTO history_transaction_participants VALUES (5, 12884905984, 2); +INSERT INTO history_transaction_participants VALUES (6, 17179873280, 2); +INSERT INTO history_transaction_participants VALUES (7, 21474840576, 2); +INSERT INTO history_transaction_participants VALUES (8, 25769807872, 2); +INSERT INTO history_transaction_participants VALUES (9, 30064775168, 2); +INSERT INTO history_transaction_participants VALUES (10, 34359742464, 2); +INSERT INTO history_transaction_participants VALUES (11, 38654709760, 2); +INSERT INTO history_transaction_participants VALUES (12, 42949677056, 2); +INSERT INTO history_transaction_participants VALUES (13, 47244644352, 2); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_transaction_participants_id_seq', 13, true); + + +-- +-- Data for Name: history_transactions; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transactions VALUES ('b2a227c39c64a44fc7abd4c96819456f0399906d12c476d70b402bfdb296d6a3', 2, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 1, 100, 1, '2017-10-25 19:05:04.204599', '2017-10-25 19:05:04.2046', 8589938688, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAACVAvkAAAAAAAAAAABVvwF9wAAAEDt3KwmaPuPdFSUxdAFeb6OQetyQKIWazlbSMMhmHKNLD4sqhEqUZcQP0l+X/Op+osWmN6+FUYbsz75Q2jG4vMM', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2sVNYGzgAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{7dysJmj7j3RUlMXQBXm+jkHrckCiFms5W0jDIZhyjSw+LKoRKlGXED9Jfl/zqfqLFpjevhVGG7M++UNoxuLzDA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('36be70fb7782f9801cdcedc1206e21f99293c99860a15e441f4749747a0a37ab', 2, 2, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 2, 100, 1, '2017-10-25 19:05:04.219453', '2017-10-25 19:05:04.219453', 8589942784, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAO2C/AO45YBD3tHVFO1R3A0MekP8JR6nN1A9eWidyItUAAAACVAvkAAAAAAAAAAABVvwF9wAAAEA3xWbxPObnZMiBGFKLJQufJLguTsHJxyAsPP5F9Zj561aXnvN/HVRJbFsEcitGbgi9dWVdKRYvmVWCizIdmLID', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAlQL5AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2rv9MNzgAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/84AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{N8Vm8Tzm52TIgRhSiyULnyS4Lk7ByccgLDz+RfWY+etWl57zfx1USWxbBHIrRm4IvXVlXSkWL5lVgosyHZiyAw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('c76f843dd29e92bacbf21659d50454a043eae6a5ef81e2e8dc97b0e005d30962', 3, 1, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934593, 100, 1, '2017-10-25 19:05:04.233833', '2017-10-25 19:05:04.233833', 12884905984, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAUAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABruS+TAAAAEC87yJlK5zXwuklcPxhmPt9HB9YOb+0HHcN2SteSVLsjnyafNu/560Mj8/QJzfSnKm3arRVJtHgFgaSFJiywRoF', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAAAMAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL45wAAAACAAAAAQAAAAAAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+QAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{vO8iZSuc18LpJXD8YZj7fRwfWDm/tBx3DdkrXklS7I58mnzbv+etDI/P0Cc30pypt2q0VSbR4BYGkhSYssEaBQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('895b1e3ae3570fac549edfcc260122a2f930b35b94b1dffa9f8c2a08816ac376', 4, 1, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934594, 100, 1, '2017-10-25 19:05:04.245971', '2017-10-25 19:05:04.245971', 17179873280, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABruS+TAAAAEALUnIdWXjDKFil8+3DPcIytdMco/BMWnrqyv9Hc/DQsGAOLHRdhdAVL/sVSxW7ITzpxY3bv11PDVlr/U5DdrgB', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAAAQAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL4zgAAAACAAAAAgAAAAAAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+OcAAAAAgAAAAEAAAAAAAAAAQAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+M4AAAAAgAAAAIAAAAAAAAAAQAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{C1JyHVl4wyhYpfPtwz3CMrXTHKPwTFp66sr/R3Pw0LBgDix0XYXQFS/7FUsVuyE86cWN279dTw1Za/1OQ3a4AQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('b0bb26bbc67cc1c226293ce18f94f9766b4e5c68132c2caff7907791d1723f27', 5, 1, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934595, 100, 1, '2017-10-25 19:05:04.258544', '2017-10-25 19:05:04.258544', 21474840576, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABA9mhGRBoZe3eaPDqE6/qVEp5iFBEKjErYbUzVlrtr6cD5ttn0uGzLQsVMlEgPpB82XWa7gzTRg0OykcYE8otoAg==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAAAUAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL4tQAAAACAAAAAwAAAAAAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAEAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+M4AAAAAgAAAAIAAAAAAAAAAQAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAEAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+LUAAAAAgAAAAMAAAAAAAAAAQAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAEAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{9mhGRBoZe3eaPDqE6/qVEp5iFBEKjErYbUzVlrtr6cD5ttn0uGzLQsVMlEgPpB82XWa7gzTRg0OykcYE8otoAg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('a721bea4176539c6ed564ceafb7084a31c5deafe17ce0b52d2e2752feae47db7', 6, 1, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934596, 100, 1, '2017-10-25 19:05:04.272185', '2017-10-25 19:05:04.272185', 25769807872, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAAQAAAAIAAAAAAAAAAAAAAAAAAAABruS+TAAAAEBE6Hv6Be+Sn9oVyHm+QedPXQwsE/U9freWjJTR8BN8qnvn6VUOzdc0U6PDQCyroLCAwh1LmK3iOmngqczf1RYG', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAAAYAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL4nAAAAACAAAABAAAAAAAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAQAAAAACAAICAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAAFAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+LUAAAAAgAAAAMAAAAAAAAAAQAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+JwAAAAAgAAAAQAAAAAAAAAAQAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAEAAAAAAgAAAAAAAAAAAAAAAAAAAA==', '{ROh7+gXvkp/aFch5vkHnT10MLBP1PX63loyU0fATfKp75+lVDs3XNFOjw0Asq6CwgMIdS5it4jpp4KnM39UWBg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('ca5cd8926d50d5f94acc074b6c966e927195571cb4977e1cb7690df84529f127', 7, 1, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934597, 100, 1, '2017-10-25 19:05:04.287253', '2017-10-25 19:05:04.287253', 30064775168, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAADW51bGxzdHlsZS5jb20AAAAAAAAAAAAAAAAAAAGu5L5MAAAAQO5rla99y3m6umRBntLBh1Spdn1AzzIijQ++E3Xk8CrAhurEJ6Dv2MeK8lw6KCWOwOMGYQo65HIisANSOuvaBAc=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAAAcAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL4gwAAAACAAAABQAAAAAAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAQAAAA1udWxsc3R5bGUuY29tAAAAAgACAgAAAAAAAAAAAAAAAA==', 'AAAAAgAAAAMAAAAGAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+JwAAAAAgAAAAQAAAAAAAAAAQAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAEAAAAAAgACAgAAAAAAAAAAAAAAAAAAAAEAAAAHAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+IMAAAAAgAAAAUAAAAAAAAAAQAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAEAAAAAAgACAgAAAAAAAAAAAAAAAA==', '{7muVr33Lebq6ZEGe0sGHVKl2fUDPMiKND74TdeTwKsCG6sQnoO/Yx4ryXDooJY7A4wZhCjrkciKwA1I669oEBw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('eb4d35309591547be7fe2fb9c44834d20e4d569294088ac1a3d204d16e9a0751', 8, 1, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934598, 100, 1, '2017-10-25 19:05:04.303854', '2017-10-25 19:05:04.303854', 34359742464, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAGAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAEAAAAAAAAAAa7kvkwAAABAyTsFJ/1kdjnOkMFPhwVKbKbgNUMVtym/khH5V677pL0kYUOCsOWWBBxA+Hq3aHyldsfdVvGdm8OyKMflFdFrDg==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAAAgAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL4agAAAACAAAABgAAAAEAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAQAAAA1udWxsc3R5bGUuY29tAAAAAgACAgAAAAEAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAABAAAAAAAAAAA=', 'AAAAAgAAAAMAAAAHAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+IMAAAAAgAAAAUAAAAAAAAAAQAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAEAAAANbnVsbHN0eWxlLmNvbQAAAAIAAgIAAAAAAAAAAAAAAAAAAAABAAAACAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAACVAvhqAAAAAIAAAAGAAAAAAAAAAEAAAAAO2C/AO45YBD3tHVFO1R3A0MekP8JR6nN1A9eWidyItUAAAABAAAADW51bGxzdHlsZS5jb20AAAACAAICAAAAAAAAAAAAAAAA', '{yTsFJ/1kdjnOkMFPhwVKbKbgNUMVtym/khH5V677pL0kYUOCsOWWBBxA+Hq3aHyldsfdVvGdm8OyKMflFdFrDg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('be85b5e14dcb9fe976a73cccc8bfac69be7ecec2126bfe5ecc551c683b43dcd7', 9, 1, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934599, 100, 1, '2017-10-25 19:05:04.317606', '2017-10-25 19:05:04.317606', 38654709760, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAHAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAUAAAAAAAAAAa7kvkwAAABA/+toY7hGHaUzr6718ZjScST+WjFgYNU9Qse1wPqVO6U/CMVZPy6ZzimkiXFxcBc3py1BeYm3CA+YCqKrHRzABQ==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAAAkAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL4UQAAAACAAAABwAAAAEAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAQAAAA1udWxsc3R5bGUuY29tAAAAAgACAgAAAAEAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAFAAAAAAAAAAA=', 'AAAAAgAAAAMAAAAIAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+GoAAAAAgAAAAYAAAABAAAAAQAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAEAAAANbnVsbHN0eWxlLmNvbQAAAAIAAgIAAAABAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAQAAAAAAAAAAAAAAAQAAAAkAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL4UQAAAACAAAABwAAAAEAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAQAAAA1udWxsc3R5bGUuY29tAAAAAgACAgAAAAEAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAABAAAAAAAAAAA=', '{/+toY7hGHaUzr6718ZjScST+WjFgYNU9Qse1wPqVO6U/CMVZPy6ZzimkiXFxcBc3py1BeYm3CA+YCqKrHRzABQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('40a8f7d6e4822bf645865d779922dcdd3b43537b993e75e7165cc84ac04e0dba', 10, 1, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934600, 100, 1, '2017-10-25 19:05:04.33152', '2017-10-25 19:05:04.33152', 42949677056, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAIAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABruS+TAAAAEB9KMKKASiNjFhFaahxinyc2cQQv7EAiQtBT60YRSgz4/2dANcXocCkB3EQFpeXvoXjxxJEMtEqV2NXPdByxvIO', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAAAoAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL4OAAAAACAAAACAAAAAEAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAAAAAA1udWxsc3R5bGUuY29tAAAAAgACAgAAAAEAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAFAAAAAAAAAAA=', 'AAAAAgAAAAMAAAAJAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+FEAAAAAgAAAAcAAAABAAAAAQAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAEAAAANbnVsbHN0eWxlLmNvbQAAAAIAAgIAAAABAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAABQAAAAAAAAAAAAAAAQAAAAoAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL4OAAAAACAAAACAAAAAEAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAQAAAA1udWxsc3R5bGUuY29tAAAAAgACAgAAAAEAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAFAAAAAAAAAAA=', '{fSjCigEojYxYRWmocYp8nNnEEL+xAIkLQU+tGEUoM+P9nQDXF6HApAdxEBaXl76F48cSRDLRKldjVz3QcsbyDg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('0733db959ef871e700de41cc2074cb380da7b10262d350d0be0170488554a968', 11, 1, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934601, 100, 1, '2017-10-25 19:05:04.350001', '2017-10-25 19:05:04.350001', 47244644352, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAJAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAAAAAAAAAAAa7kvkwAAABA1/EWaAPOlu4RG89UlMpXLQHlk9dwMy/TLmJ7ttCT7UxJ9kSU4CbXVUG/i7yGxSrs9v8gVKLFxtTIlXlNbHb0AQ==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAA=', 'AAAAAAAAAAEAAAABAAAAAQAAAAsAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL4HwAAAACAAAACQAAAAAAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAAAAAA1udWxsc3R5bGUuY29tAAAAAgACAgAAAAAAAAAAAAAAAA==', 'AAAAAgAAAAMAAAAKAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAJUC+DgAAAAAgAAAAgAAAABAAAAAQAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAAAAAANbnVsbHN0eWxlLmNvbQAAAAIAAgIAAAABAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAABQAAAAAAAAAAAAAAAQAAAAsAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAlQL4HwAAAACAAAACQAAAAEAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAAAAAA1udWxsc3R5bGUuY29tAAAAAgACAgAAAAEAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAFAAAAAAAAAAA=', '{1/EWaAPOlu4RG89UlMpXLQHlk9dwMy/TLmJ7ttCT7UxJ9kSU4CbXVUG/i7yGxSrs9v8gVKLFxtTIlXlNbHb0AQ==}', 'none', NULL, NULL); + + +-- +-- Name: gorp_migrations gorp_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY gorp_migrations + ADD CONSTRAINT gorp_migrations_pkey PRIMARY KEY (id); + + +-- +-- Name: history_assets history_assets_asset_code_asset_type_asset_issuer_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_asset_code_asset_type_asset_issuer_key UNIQUE (asset_code, asset_type, asset_issuer); + + +-- +-- Name: history_assets history_assets_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_pkey PRIMARY KEY (id); + + +-- +-- Name: history_operation_participants history_operation_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants + ADD CONSTRAINT history_operation_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: history_transaction_participants history_transaction_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants + ADD CONSTRAINT history_transaction_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: asset_by_issuer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX asset_by_issuer ON history_assets USING btree (asset_issuer); + + +-- +-- Name: by_account; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_account ON history_transactions USING btree (account, account_sequence); + + +-- +-- Name: by_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_hash ON history_transactions USING btree (transaction_hash); + + +-- +-- Name: by_ledger; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_ledger ON history_transactions USING btree (ledger_sequence, application_order); + + +-- +-- Name: hist_e_by_order; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_by_order ON history_effects USING btree (history_operation_id, "order"); + + +-- +-- Name: hist_e_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_id ON history_effects USING btree (history_account_id, history_operation_id, "order"); + + +-- +-- Name: hist_op_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_op_p_id ON history_operation_participants USING btree (history_account_id, history_operation_id); + + +-- +-- Name: hist_tx_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_tx_p_id ON history_transaction_participants USING btree (history_account_id, history_transaction_id); + + +-- +-- Name: hop_by_hoid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX hop_by_hoid ON history_operation_participants USING btree (history_operation_id); + + +-- +-- Name: hs_ledger_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_ledger_by_id ON history_ledgers USING btree (id); + + +-- +-- Name: hs_transaction_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_transaction_by_id ON history_transactions USING btree (id); + + +-- +-- Name: htp_by_htid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htp_by_htid ON history_transaction_participants USING btree (history_transaction_id); + + +-- +-- Name: htrd_by_offer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_by_offer ON history_trades USING btree (offer_id); + + +-- +-- Name: htrd_counter_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_counter_lookup ON history_trades USING btree (counter_asset_id); + + +-- +-- Name: htrd_pair_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_pair_time_lookup ON history_trades USING btree (base_asset_id, counter_asset_id, ledger_closed_at); + + +-- +-- Name: htrd_pid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX htrd_pid ON history_trades USING btree (history_operation_id, "order"); + + +-- +-- Name: htrd_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_time_lookup ON history_trades USING btree (ledger_closed_at); + + +-- +-- Name: index_history_accounts_on_address; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_address ON history_accounts USING btree (address); + + +-- +-- Name: index_history_accounts_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_id ON history_accounts USING btree (id); + + +-- +-- Name: index_history_effects_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_effects_on_type ON history_effects USING btree (type); + + +-- +-- Name: index_history_ledgers_on_closed_at; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_closed_at ON history_ledgers USING btree (closed_at); + + +-- +-- Name: index_history_ledgers_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_id ON history_ledgers USING btree (id); + + +-- +-- Name: index_history_ledgers_on_importer_version; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_importer_version ON history_ledgers USING btree (importer_version); + + +-- +-- Name: index_history_ledgers_on_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_ledger_hash ON history_ledgers USING btree (ledger_hash); + + +-- +-- Name: index_history_ledgers_on_previous_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_previous_ledger_hash ON history_ledgers USING btree (previous_ledger_hash); + + +-- +-- Name: index_history_ledgers_on_sequence; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_sequence ON history_ledgers USING btree (sequence); + + +-- +-- Name: index_history_operations_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_operations_on_id ON history_operations USING btree (id); + + +-- +-- Name: index_history_operations_on_transaction_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_transaction_id ON history_operations USING btree (transaction_id); + + +-- +-- Name: index_history_operations_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_type ON history_operations USING btree (type); + + +-- +-- Name: index_history_transactions_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_transactions_on_id ON history_transactions USING btree (id); + + +-- +-- Name: trade_effects_by_order_book; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX trade_effects_by_order_book ON history_effects USING btree (((details ->> 'sold_asset_type'::text)), ((details ->> 'sold_asset_code'::text)), ((details ->> 'sold_asset_issuer'::text)), ((details ->> 'bought_asset_type'::text)), ((details ->> 'bought_asset_code'::text)), ((details ->> 'bought_asset_issuer'::text))) WHERE (type = 33); + + +-- +-- Name: history_trades history_trades_base_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_account_id_fkey FOREIGN KEY (base_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_base_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_asset_id_fkey FOREIGN KEY (base_asset_id) REFERENCES history_assets(id); + + +-- +-- Name: history_trades history_trades_counter_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_account_id_fkey FOREIGN KEY (counter_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_counter_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_asset_id_fkey FOREIGN KEY (counter_asset_id) REFERENCES history_assets(id); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/set_options.rb b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/set_options.rb new file mode 100644 index 0000000..66d4bb5 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/set_options.rb @@ -0,0 +1,19 @@ +run_recipe File.dirname(__FILE__) + "/_common_accounts.rb" + +use_manual_close + +create_account :scott +create_account :bartek + +close_ledger +kp = Stellar::KeyPair.from_seed("SB2XGZC7M5QXIZLXMF4SAIBAEAQCAIBAEAQCAIBAEAQCAIBAEAQCBV6K") + +set_inflation_dest :scott, :bartek ; close_ledger +set_flags :scott, [:auth_required_flag] ; close_ledger +set_master_signer_weight :scott, 2 ; close_ledger +set_thresholds :scott, low: 0, medium: 2, high: 2 ; close_ledger +set_home_domain :scott, "nullstyle.com" ; close_ledger +add_signer :scott, kp, 1 ; close_ledger +add_signer :scott, kp, 5 ; close_ledger +clear_flags :scott, [:auth_required_flag] ; close_ledger +remove_signer :scott, kp ; close_ledger diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/trades-core.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/trades-core.sql new file mode 100644 index 0000000..f0b3acf --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/trades-core.sql @@ -0,0 +1,730 @@ +running recipe +recipe finished, closing ledger +ledger closed +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; +SET row_security = off; + +SET search_path = public, pg_catalog; + +DROP INDEX IF EXISTS public.signersaccount; +DROP INDEX IF EXISTS public.sellingissuerindex; +DROP INDEX IF EXISTS public.scpquorumsbyseq; +DROP INDEX IF EXISTS public.scpenvsbyseq; +DROP INDEX IF EXISTS public.priceindex; +DROP INDEX IF EXISTS public.ledgersbyseq; +DROP INDEX IF EXISTS public.histfeebyseq; +DROP INDEX IF EXISTS public.histbyseq; +DROP INDEX IF EXISTS public.buyingissuerindex; +DROP INDEX IF EXISTS public.accountbalances; +ALTER TABLE IF EXISTS ONLY public.txhistory DROP CONSTRAINT IF EXISTS txhistory_pkey; +ALTER TABLE IF EXISTS ONLY public.txfeehistory DROP CONSTRAINT IF EXISTS txfeehistory_pkey; +ALTER TABLE IF EXISTS ONLY public.trustlines DROP CONSTRAINT IF EXISTS trustlines_pkey; +ALTER TABLE IF EXISTS ONLY public.storestate DROP CONSTRAINT IF EXISTS storestate_pkey; +ALTER TABLE IF EXISTS ONLY public.signers DROP CONSTRAINT IF EXISTS signers_pkey; +ALTER TABLE IF EXISTS ONLY public.scpquorums DROP CONSTRAINT IF EXISTS scpquorums_pkey; +ALTER TABLE IF EXISTS ONLY public.pubsub DROP CONSTRAINT IF EXISTS pubsub_pkey; +ALTER TABLE IF EXISTS ONLY public.publishqueue DROP CONSTRAINT IF EXISTS publishqueue_pkey; +ALTER TABLE IF EXISTS ONLY public.peers DROP CONSTRAINT IF EXISTS peers_pkey; +ALTER TABLE IF EXISTS ONLY public.offers DROP CONSTRAINT IF EXISTS offers_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_pkey; +ALTER TABLE IF EXISTS ONLY public.ledgerheaders DROP CONSTRAINT IF EXISTS ledgerheaders_ledgerseq_key; +ALTER TABLE IF EXISTS ONLY public.ban DROP CONSTRAINT IF EXISTS ban_pkey; +ALTER TABLE IF EXISTS ONLY public.accounts DROP CONSTRAINT IF EXISTS accounts_pkey; +ALTER TABLE IF EXISTS ONLY public.accountdata DROP CONSTRAINT IF EXISTS accountdata_pkey; +DROP TABLE IF EXISTS public.txhistory; +DROP TABLE IF EXISTS public.txfeehistory; +DROP TABLE IF EXISTS public.trustlines; +DROP TABLE IF EXISTS public.storestate; +DROP TABLE IF EXISTS public.signers; +DROP TABLE IF EXISTS public.scpquorums; +DROP TABLE IF EXISTS public.scphistory; +DROP TABLE IF EXISTS public.pubsub; +DROP TABLE IF EXISTS public.publishqueue; +DROP TABLE IF EXISTS public.peers; +DROP TABLE IF EXISTS public.offers; +DROP TABLE IF EXISTS public.ledgerheaders; +DROP TABLE IF EXISTS public.ban; +DROP TABLE IF EXISTS public.accounts; +DROP TABLE IF EXISTS public.accountdata; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: accountdata; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accountdata ( + accountid character varying(56) NOT NULL, + dataname character varying(64) NOT NULL, + datavalue character varying(112) NOT NULL, + lastmodified integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE accounts ( + accountid character varying(56) NOT NULL, + balance bigint NOT NULL, + seqnum bigint NOT NULL, + numsubentries integer NOT NULL, + inflationdest character varying(56), + homedomain character varying(32) NOT NULL, + thresholds text NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT accounts_balance_check CHECK ((balance >= 0)), + CONSTRAINT accounts_numsubentries_check CHECK ((numsubentries >= 0)) +); + + +-- +-- Name: ban; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ban ( + nodeid character(56) NOT NULL +); + + +-- +-- Name: ledgerheaders; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE ledgerheaders ( + ledgerhash character(64) NOT NULL, + prevhash character(64) NOT NULL, + bucketlisthash character(64) NOT NULL, + ledgerseq integer, + closetime bigint NOT NULL, + data text NOT NULL, + CONSTRAINT ledgerheaders_closetime_check CHECK ((closetime >= 0)), + CONSTRAINT ledgerheaders_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: offers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE offers ( + sellerid character varying(56) NOT NULL, + offerid bigint NOT NULL, + sellingassettype integer NOT NULL, + sellingassetcode character varying(12), + sellingissuer character varying(56), + buyingassettype integer NOT NULL, + buyingassetcode character varying(12), + buyingissuer character varying(56), + amount bigint NOT NULL, + pricen integer NOT NULL, + priced integer NOT NULL, + price double precision NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT offers_amount_check CHECK ((amount >= 0)), + CONSTRAINT offers_offerid_check CHECK ((offerid >= 0)) +); + + +-- +-- Name: peers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE peers ( + ip character varying(15) NOT NULL, + port integer DEFAULT 0 NOT NULL, + nextattempt timestamp without time zone NOT NULL, + numfailures integer DEFAULT 0 NOT NULL, + CONSTRAINT peers_numfailures_check CHECK ((numfailures >= 0)), + CONSTRAINT peers_port_check CHECK (((port > 0) AND (port <= 65535))) +); + + +-- +-- Name: publishqueue; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE publishqueue ( + ledger integer NOT NULL, + state text +); + + +-- +-- Name: pubsub; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE pubsub ( + resid character(32) NOT NULL, + lastread integer +); + + +-- +-- Name: scphistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scphistory ( + nodeid character(56) NOT NULL, + ledgerseq integer NOT NULL, + envelope text NOT NULL, + CONSTRAINT scphistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: scpquorums; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE scpquorums ( + qsethash character(64) NOT NULL, + lastledgerseq integer NOT NULL, + qset text NOT NULL, + CONSTRAINT scpquorums_lastledgerseq_check CHECK ((lastledgerseq >= 0)) +); + + +-- +-- Name: signers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE signers ( + accountid character varying(56) NOT NULL, + publickey character varying(56) NOT NULL, + weight integer NOT NULL +); + + +-- +-- Name: storestate; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE storestate ( + statename character(32) NOT NULL, + state text +); + + +-- +-- Name: trustlines; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE trustlines ( + accountid character varying(56) NOT NULL, + assettype integer NOT NULL, + issuer character varying(56) NOT NULL, + assetcode character varying(12) NOT NULL, + tlimit bigint NOT NULL, + balance bigint NOT NULL, + flags integer NOT NULL, + lastmodified integer NOT NULL, + CONSTRAINT trustlines_balance_check CHECK ((balance >= 0)), + CONSTRAINT trustlines_tlimit_check CHECK ((tlimit > 0)) +); + + +-- +-- Name: txfeehistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txfeehistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txchanges text NOT NULL, + CONSTRAINT txfeehistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Name: txhistory; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE txhistory ( + txid character(64) NOT NULL, + ledgerseq integer NOT NULL, + txindex integer NOT NULL, + txbody text NOT NULL, + txresult text NOT NULL, + txmeta text NOT NULL, + CONSTRAINT txhistory_ledgerseq_check CHECK ((ledgerseq >= 0)) +); + + +-- +-- Data for Name: accountdata; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO accounts VALUES ('GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 999999995999999600, 4, 0, NULL, '', 'AQAAAA==', 0, 2); +INSERT INTO accounts VALUES ('GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG', 999999900, 8589934593, 0, NULL, '', 'AQAAAA==', 0, 4); +INSERT INTO accounts VALUES ('GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 999999900, 8589934593, 0, NULL, '', 'AQAAAA==', 0, 4); +INSERT INTO accounts VALUES ('GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2', 999999500, 8589934597, 5, NULL, '', 'AQAAAA==', 0, 5); +INSERT INTO accounts VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 999999600, 8589934596, 3, NULL, '', 'AQAAAA==', 0, 6); + + +-- +-- Data for Name: ban; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: ledgerheaders; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO ledgerheaders VALUES ('63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', '0000000000000000000000000000000000000000000000000000000000000000', '572a2e32ff248a07b0e70fd1f6d318c1facd20b6cc08c33d5775259868125a16', 1, 0, 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXKi4y/ySKB7DnD9H20xjB+s0gtswIwz1XdSWYaBJaFgAAAAEN4Lazp2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAX14QAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('e992b9b094dc8f0b605e7a134a519372063a4183e124a4212a7db54b24a86ef3', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', 'c274a357f5b5fba17978b8ee9348009c86ab68c43dbc3459ba6aa5dfe2b1559e', 2, 1508958308, 'AAAACGPZj1Nu5o0bJ7W4nyOvUxG3Vpok+vFAOtC1K2M7B76Zh82QgsuASmS0xgFp1fjiT2wNgvVWRClSW5uMP344SMoAAAAAWfDgZAAAAAIAAAAIAAAAAQAAAAgAAAAIAAAAAwAAJxAAAAAAh7rHH3ehqvUsWEPfAlvVspAA2/ZR0JjPAFIdHbQ2sSjCdKNX9bX7oXl4uO6TSACchqtoxD28NFm6aqXf4rFVngAAAAIN4Lazp2QAAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('a9c4c9fa29fb0383ba7a329a2b10a5c7d45a04729b311af4f44fa33c9f1639ab', 'e992b9b094dc8f0b605e7a134a519372063a4183e124a4212a7db54b24a86ef3', 'b7a2fb1854adf3419e9913966637888df749485ae435d8203e62f3de5702627b', 3, 1508958309, 'AAAACOmSubCU3I8LYF56E0pRk3IGOkGD4SSkISp9tUskqG7zlpQcRwhq2Kvmww4TsIWcYriNlFvT3doGtokNM+rW0OUAAAAAWfDgZQAAAAAAAAAAShzqI9aLY+7Kp5Zw36Ye703iZxnHA4Dw1m5KF4RHKmO3ovsYVK3zQZ6ZE5ZmN4iN90lIWuQ12CA+YvPeVwJiewAAAAMN4Lazp2QAAAAAAAAAAAMgAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('8835957025b69bb0baaeb310e6dde9ecd06eb070b48c6a0ae8d158b4b5949ba0', 'a9c4c9fa29fb0383ba7a329a2b10a5c7d45a04729b311af4f44fa33c9f1639ab', 'cfc4b9fbd7801fb1211ed2929f8cbd770dc62229813346fd062701356a1e1856', 4, 1508958310, 'AAAACKnEyfop+wODunoymisQpcfUWgRymzEa9PRPozyfFjmry/Bwh2daFAagiBDS3O+s3dVgBXjMukkL0vCXTu0YMq4AAAAAWfDgZgAAAAAAAAAAkEeHwbiWWoxafh7Sc3UtLYZvNJJ2i7pv0rpNftdmmiTPxLn714AfsSEe0pKfjL13DcYiKYEzRv0GJwE1ah4YVgAAAAQN4Lazp2QAAAAAAAAAAAPoAAAAAAAAAAAAAAAAAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('2d1380a9e2116d885c81015057d5ea69fe06b134b3c2515e5096149ab79227bb', '8835957025b69bb0baaeb310e6dde9ecd06eb070b48c6a0ae8d158b4b5949ba0', 'd857b3984ce6ea292111845844f27401fb4bd11c1e4a13d0e6ee7116c4fc3621', 5, 1508958311, 'AAAACIg1lXAltpuwuq6zEObd6ezQbrBwtIxqCujRWLS1lJug9YPDmhL0cDQTlIvRLDVmas9Ptbq5Oj+thxshpJOjcDkAAAAAWfDgZwAAAAAAAAAAlFjn3HOX+g7lBp5HOJJj2ajMWB2l/+q6Po2GKiTkZjXYV7OYTObqKSERhFhE8nQB+0vRHB5KE9Dm7nEWxPw2IQAAAAUN4Lazp2QAAAAAAAAAAAUUAAAAAAAAAAAAAAADAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO ledgerheaders VALUES ('7496d65c057d7a45d38e79c1de29cc846f2b216ce189e500670202ff1fa58bcb', '2d1380a9e2116d885c81015057d5ea69fe06b134b3c2515e5096149ab79227bb', '5afe876b19e3df19ca2d2d2a3fd79615480789a35999de8aa28500740942004e', 6, 1508958312, 'AAAACC0TgKniEW2IXIEBUFfV6mn+BrE0s8JRXlCWFJq3kie7Y5CAQ7qALNIr5CSRxJoUGVv3Q3Ea5vSTNtkmARJsFdgAAAAAWfDgaAAAAAAAAAAAqvIi/h3DgpA82mbjS/ziWD/26lZoLgLln5UoUes/uu5a/odrGePfGcotLSo/15YVSAeJo1mZ3oqihQB0CUIATgAAAAYN4Lazp2QAAAAAAAAAAAXcAAAAAAAAAAAAAAAEAAAAZAX14QAAACcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'); + + +-- +-- Data for Name: offers; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO offers VALUES ('GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2', 2, 1, 'EUR', 'GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG', 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 900000000, 1111111111, 1000000000, 1.11111111100000004, 0, 5); +INSERT INTO offers VALUES ('GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2', 3, 1, 'EUR', 'GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG', 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 800000000, 5, 4, 1.25, 0, 5); +INSERT INTO offers VALUES ('GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2', 1, 1, 'EUR', 'GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG', 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 500000000, 1, 1, 1, 0, 6); +INSERT INTO offers VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 4, 1, 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 0, NULL, NULL, 500000000, 1, 1, 1, 0, 6); + + +-- +-- Data for Name: peers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: publishqueue; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: pubsub; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: scphistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scphistory VALUES ('GBVE7OYQGFUR6EKS74DBNFP5GDOKOQB755H4XK7VJUSIYV7YBHNHKOA3', 2, 'AAAAAGpPuxAxaR8RUv8GFpX9MNynQD/vT8ur9U0kjFf4Cdp1AAAAAAAAAAIAAAACAAAAAQAAAEiHzZCCy4BKZLTGAWnV+OJPbA2C9VZEKVJbm4w/fjhIygAAAABZ8OBkAAAAAgAAAAgAAAABAAAACAAAAAgAAAADAAAnEAAAAAAAAAABLLU3aL41TDwp3UoYyEEfyvtgr8ZkZrT3z0tUml+qQ/IAAABABUCwEMf4IN/Zve3ZIbHDFUXXuYP1Ot6TEQ3WjMCpjFKwP/FiqaLbqOMNMuLeVeIOxpZfiQcq94oLVbImIThfCw=='); +INSERT INTO scphistory VALUES ('GBVE7OYQGFUR6EKS74DBNFP5GDOKOQB755H4XK7VJUSIYV7YBHNHKOA3', 3, 'AAAAAGpPuxAxaR8RUv8GFpX9MNynQD/vT8ur9U0kjFf4Cdp1AAAAAAAAAAMAAAACAAAAAQAAADCWlBxHCGrYq+bDDhOwhZxiuI2UW9Pd2ga2iQ0z6tbQ5QAAAABZ8OBlAAAAAAAAAAAAAAABLLU3aL41TDwp3UoYyEEfyvtgr8ZkZrT3z0tUml+qQ/IAAABAVPuug/hS6tFDhyn/a/XKOKIO89Hpbyy9JaFR+VULIzU+7QJUBWWXOxOyvJ3h29mo3YIFPL3QlnDjyPqb3K7RDQ=='); +INSERT INTO scphistory VALUES ('GBVE7OYQGFUR6EKS74DBNFP5GDOKOQB755H4XK7VJUSIYV7YBHNHKOA3', 4, 'AAAAAGpPuxAxaR8RUv8GFpX9MNynQD/vT8ur9U0kjFf4Cdp1AAAAAAAAAAQAAAACAAAAAQAAADDL8HCHZ1oUBqCIENLc76zd1WAFeMy6SQvS8JdO7RgyrgAAAABZ8OBmAAAAAAAAAAAAAAABLLU3aL41TDwp3UoYyEEfyvtgr8ZkZrT3z0tUml+qQ/IAAABAChbp5j6jLm75Ysvc35rz6mVtJ0kl5gtuwiOY2B9SRoMi+9zXxovv6NWVe0IYjvp+1b4NxuqT+f2Ek9x6HPCWBw=='); +INSERT INTO scphistory VALUES ('GBVE7OYQGFUR6EKS74DBNFP5GDOKOQB755H4XK7VJUSIYV7YBHNHKOA3', 5, 'AAAAAGpPuxAxaR8RUv8GFpX9MNynQD/vT8ur9U0kjFf4Cdp1AAAAAAAAAAUAAAACAAAAAQAAADD1g8OaEvRwNBOUi9EsNWZqz0+1urk6P62HGyGkk6NwOQAAAABZ8OBnAAAAAAAAAAAAAAABLLU3aL41TDwp3UoYyEEfyvtgr8ZkZrT3z0tUml+qQ/IAAABAoT1WmkG8JhCjOxf5i2Y4qQ55dIs8i7zYpafDqdmIgEW2wfe959y3Yn3/tpb12SHhSeBox8VWZwu+qA6rkdNKAg=='); +INSERT INTO scphistory VALUES ('GBVE7OYQGFUR6EKS74DBNFP5GDOKOQB755H4XK7VJUSIYV7YBHNHKOA3', 6, 'AAAAAGpPuxAxaR8RUv8GFpX9MNynQD/vT8ur9U0kjFf4Cdp1AAAAAAAAAAYAAAACAAAAAQAAADBjkIBDuoAs0ivkJJHEmhQZW/dDcRrm9JM22SYBEmwV2AAAAABZ8OBoAAAAAAAAAAAAAAABLLU3aL41TDwp3UoYyEEfyvtgr8ZkZrT3z0tUml+qQ/IAAABApiAYtILgGTQyN78zBOj853IvKzY1sTVvPk+7kGNOpOdCAItGvocvxWcmVa4+lir0AGrBN21Y+GC412bT7NoUAw=='); + + +-- +-- Data for Name: scpquorums; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO scpquorums VALUES ('2cb53768be354c3c29dd4a18c8411fcafb60afc66466b4f7cf4b549a5faa43f2', 6, 'AAAAAQAAAAEAAAAAak+7EDFpHxFS/wYWlf0w3KdAP+9Py6v1TSSMV/gJ2nUAAAAA'); + + +-- +-- Data for Name: signers; Type: TABLE DATA; Schema: public; Owner: - +-- + + + +-- +-- Data for Name: storestate; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO storestate VALUES ('databaseschema ', '5'); +INSERT INTO storestate VALUES ('forcescponnextlaunch ', 'false'); +INSERT INTO storestate VALUES ('lastclosedledger ', '7496d65c057d7a45d38e79c1de29cc846f2b216ce189e500670202ff1fa58bcb'); +INSERT INTO storestate VALUES ('historyarchivestate ', '{ + "version": 1, + "server": "v0.6.3-66-gd66575cf", + "currentLedger": 6, + "currentBuckets": [ + { + "curr": "06607be743862c54ce849e6858468a96f0178539d80d95a449658b759d56c12c", + "next": { + "state": 0 + }, + "snap": "3ee71d18365d9040816f991a83ef1e425491e5bd77cbe55bc53ba281a2422cf2" + }, + { + "curr": "f239f4aaf00f0a398b878ed20e759715372b1a1ce87b325172617db348901371", + "next": { + "state": 1, + "output": "3ee71d18365d9040816f991a83ef1e425491e5bd77cbe55bc53ba281a2422cf2" + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "curr": "0000000000000000000000000000000000000000000000000000000000000000", + "next": { + "state": 0 + }, + "snap": "0000000000000000000000000000000000000000000000000000000000000000" + } + ] +}'); +INSERT INTO storestate VALUES ('lastscpdata ', 'AAAAAgAAAABqT7sQMWkfEVL/BhaV/TDcp0A/70/Lq/VNJIxX+AnadQAAAAAAAAAGAAAAAyy1N2i+NUw8Kd1KGMhBH8r7YK/GZGa0989LVJpfqkPyAAAAAQAAADBjkIBDuoAs0ivkJJHEmhQZW/dDcRrm9JM22SYBEmwV2AAAAABZ8OBoAAAAAAAAAAAAAAABAAAAMGOQgEO6gCzSK+QkkcSaFBlb90NxGub0kzbZJgESbBXYAAAAAFnw4GgAAAAAAAAAAAAAAEBjTPcsnI1qwOiVsrA+NVkd7E7qpWJmIG5nscfUHgV6cGgcFl/UaA1qPfUCLnbhQh0KEz0zANI6i6N6XEvGcy0OAAAAAGpPuxAxaR8RUv8GFpX9MNynQD/vT8ur9U0kjFf4Cdp1AAAAAAAAAAYAAAACAAAAAQAAADBjkIBDuoAs0ivkJJHEmhQZW/dDcRrm9JM22SYBEmwV2AAAAABZ8OBoAAAAAAAAAAAAAAABLLU3aL41TDwp3UoYyEEfyvtgr8ZkZrT3z0tUml+qQ/IAAABApiAYtILgGTQyN78zBOj853IvKzY1sTVvPk+7kGNOpOdCAItGvocvxWcmVa4+lir0AGrBN21Y+GC412bT7NoUAwAAAAEtE4Cp4hFtiFyBAVBX1epp/gaxNLPCUV5QlhSat5InuwAAAAIAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAABkAAAAAgAAAAQAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAAAAAAAdzWUAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAABruS+TAAAAEDXR/WV3ErLm+29BnkagKxzr3EjS8FzA4RoKX0W2f7alUUttBfMJQjNMdq5yn/7bdzeUVqv3Evy1oe04H5mvDUOAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFFVVIAAAAAAKD8GPxXf3CMjVKv3qhzs6au2HaMHH0s5B32RVUQithJAAAAAB3NZQAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAGu5L5MAAAAQLhdv6YRzgtJp7I2KNyUONETo6m6c/RdrXFtnESbQ3/OMNXekk/3eo0Yc305sK5+yhTLMyCiQInnDMtXpNVJ9gYAAAABAAAAAQAAAAEAAAAAak+7EDFpHxFS/wYWlf0w3KdAP+9Py6v1TSSMV/gJ2nUAAAAA'); + + +-- +-- Data for Name: trustlines; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO trustlines VALUES ('GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2', 1, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 'USD', 9223372036854775807, 500000000, 1, 6); +INSERT INTO trustlines VALUES ('GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2', 1, 'GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG', 'EUR', 9223372036854775807, 4500000000, 1, 6); +INSERT INTO trustlines VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 1, 'GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG', 'EUR', 9223372036854775807, 500000000, 1, 6); +INSERT INTO trustlines VALUES ('GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 1, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 'USD', 9223372036854775807, 4500000000, 1, 6); + + +-- +-- Data for Name: txfeehistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txfeehistory VALUES ('2374e99349b9ef7dba9a5db3339b78fda8f34777b1af33ba468ad5c0df946d4d', 2, 1, 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('164a5064eba64f2cdbadb856bf3448485fc626247ada3ed39cddf0f6902133b6', 2, 2, 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/84AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('2d365c3c49f376570df856bca62503966f0e269a2f51cdb68ce2ee19a7f8245a', 2, 3, 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/7UAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('003e91101d19aabb429491953806886d777c260233c6478f1c928a79ec4e2743', 2, 4, 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/5wAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('bd486dbdd02d460817671c4a5a7e9d6e865ca29cb41e62d7aaf70a2fee5b36de', 3, 1, 'AAAAAgAAAAMAAAACAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('00ab9cfce2b4c4141d8bb6768dd094bdbb1c7406710dbb3ba0ef98870f63a344', 3, 2, 'AAAAAgAAAAMAAAACAAAAAAAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('c7ab3843f0a0c4fe79dece0ff1b8391f7a9d34c47cbd7e35034f7b28f60dfc00', 3, 3, 'AAAAAQAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msk4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('5ef9c06bb625d2da2281118bdf14d808768353ee2fca7457c8e506fbeb91fc55', 3, 4, 'AAAAAQAAAAEAAAADAAAAAAAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAA7msk4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('e4febb6aab5f83df4c19b4f1f6b8687f11886169e996e16baa75aac2d8a09c68', 4, 1, 'AAAAAgAAAAMAAAACAAAAAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('2837a1b3def2c2ddfdcde5b44bf08d7a11a9328d870df17fa2bb66d4c83260c7', 4, 2, 'AAAAAgAAAAMAAAACAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('356eec1f0432bbbba09ddcc1937e28253a4dc8e98ff77d5e9dee140be5093a70', 5, 1, 'AAAAAgAAAAMAAAADAAAAAAAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAA7msk4AAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAA7msjUAAAAAgAAAAMAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('2d0d264d9e2e3364c29faf6a6ec815a8a8e6a46e23096da1411f292309d78712', 5, 2, 'AAAAAQAAAAEAAAAFAAAAAAAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAA7mshwAAAAAgAAAAQAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('4a0ac16e948710199659b0e8131be06df5944e57806c0db722859e4e8aad1e44', 5, 3, 'AAAAAQAAAAEAAAAFAAAAAAAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAA7msgMAAAAAgAAAAUAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('0bf200141a77febaa9924f423ed587499b27ce904c92967a04a12f28b3a5be58', 6, 1, 'AAAAAgAAAAMAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msk4AAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msjUAAAAAgAAAAMAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txfeehistory VALUES ('9b126c224de1387927a73d2618e4234128a0a01724d3d42388c0e8c7e97ad005', 6, 2, 'AAAAAQAAAAEAAAAGAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7mshwAAAAAgAAAAQAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); + + +-- +-- Data for Name: txhistory; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO txhistory VALUES ('2374e99349b9ef7dba9a5db3339b78fda8f34777b1af33ba468ad5c0df946d4d', 2, 1, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAO5rKAAAAAAAAAAABVvwF9wAAAECDzqvkQBQoNAJifPRXDoLhvtycT3lFPCQ51gkdsFHaBNWw05S/VhW0Xgkr0CBPE4NaFV2Kmcs3ZwLmib4TRrML', 'I3Tpk0m57326ml2zM5t4/ajzR3exrzO6RorVwN+UbU0AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2s2vJNHAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('164a5064eba64f2cdbadb856bf3448485fc626247ada3ed39cddf0f6902133b6', 2, 2, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAO2C/AO45YBD3tHVFO1R3A0MekP8JR6nN1A9eWidyItUAAAAAO5rKAAAAAAAAAAABVvwF9wAAAEASEZiZbeFwCsrKBnKIus/05VtJDBrgosuhLQ/U6XUj4twWyhs7UtS4CMexOM6JqcfqJK10WlBkkwn4g8PIfjIG', 'FkpQZOumTyzbrbhWvzRISF/GJiR62j7TnN3w9pAhM7YAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2szAuanAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('2d365c3c49f376570df856bca62503966f0e269a2f51cdb68ce2ee19a7f8245a', 2, 3, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAAAAAAAAAAABVvwF9wAAAEB/JBgvIM71gLBIh0TON9b+l+ApZz1CKDQiUFSV0scRguB1anyMwMR6s5SiaCwtDnxsPna12RdUQKlH2aeMAy8H', 'LTZcPEnzdlcN+Fa8piUDlm8OJpovUc22jOLuGaf4JFoAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2svSToHAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('003e91101d19aabb429491953806886d777c260233c6478f1c928a79ec4e2743', 2, 4, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAO5rKAAAAAAAAAAABVvwF9wAAAEDIOudzujfo+dSIJXXb06SjLBLLXsFxnVnR1HJejfq2NgFUtLuX2KrVNSZyRBG+WvfdoXwCPcp85hDRbCmjbPYM', 'AD6REB0ZqrtClJGVOAaIbXd8JgIzxkePHJKKeexOJ0MAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAKD8GPxXf3CMjVKv3qhzs6au2HaMHH0s5B32RVUQithJAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2srj41nAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('bd486dbdd02d460817671c4a5a7e9d6e865ca29cb41e62d7aaf70a2fee5b36de', 3, 1, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAGu5L5MAAAAQB9kmKW2q3v7Qfy8PMekEb1TTI5ixqkI0BogXrOt7gO162Qbkh2dSTUfeDovc0PAafhDXxthVAlsLujlBmyjBAY=', 'vUhtvdAtRggXZxxKWn6dboZcopy0HmLXqvcKL+5bNt4AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAADuayTgAAAACAAAAAgAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('00ab9cfce2b4c4141d8bb6768dd094bdbb1c7406710dbb3ba0ef98870f63a344', 3, 2, 'AAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAEnciLVAAAAQLVbII+1LeizxgncDI46KHyBt05+H92n1+R328J9zNl2fgJW2nfn3FIoLVs2qV1+CUpr121a2B7AM6HKr4nBLAI=', 'AKuc/OK0xBQdi7Z2jdCUvbscdAZxDbs7oO+Yhw9jo0QAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAADuayTgAAAACAAAAAgAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('c7ab3843f0a0c4fe79dece0ff1b8391f7a9d34c47cbd7e35034f7b28f60dfc00', 3, 3, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSX//////////AAAAAAAAAAGu5L5MAAAAQO/nblo8KAkSOf8cQOOiADXygx+I0ZdWoM4Vg4EKPAAJXFntctjCIyQ4csVUywaW32J/keQWYby52BjiNhT/6Qo=', 'x6s4Q/CgxP553s4P8bg5H3qdNMR8vX41A097KPYN/AAAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAADuayTgAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('5ef9c06bb625d2da2281118bdf14d808768353ee2fca7457c8e506fbeb91fc55', 3, 4, 'AAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSX//////////AAAAAAAAAAEnciLVAAAAQOG2GKO9i60cM1QK2UN1gXrHEYjeGLRXFT5snCqO5FnPET5cVs30N7ITPZ6HH6QcZ2IdC1c66wLge4GyR8vpww0=', 'XvnAa7Yl0toigRGL3xTYCHaDU+4vynRXyOUG++uR/FUAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAYAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAADuayTgAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('e4febb6aab5f83df4c19b4f1f6b8687f11886169e996e16baa75aac2d8a09c68', 4, 1, 'AAAAAKD8GPxXf3CMjVKv3qhzs6au2HaMHH0s5B32RVUQithJAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAO2C/AO45YBD3tHVFO1R3A0MekP8JR6nN1A9eWidyItUAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAEqBfIAAAAAAAAAAAEQithJAAAAQEghWBLDjmNLzcPF6o8dqUHMsI0WhttWE/ABSKaHNc+0FqsF+ui5+eky4ERyu99YR6BEHF4NlgyLnSq3zcDr9Qo=', '5P67aqtfg99MGbTx9rhofxGIYWnpluFrqnWqwtignGgAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAABKgXyAH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('2837a1b3def2c2ddfdcde5b44bf08d7a11a9328d870df17fa2bb66d4c83260c7', 4, 2, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAEqBfIAAAAAAAAAAAH5kC3vAAAAQGoQPiD0HEBi0U8cHN6nlZ3okEfdmt7mqkQHIt2tuRLaZZ1iMQwU43M8v+ntJQsA4c2eBXt9GYp/29FLjnba1Qw=', 'KDehs97ywt39zeW0S/CNehGpMo2HDfF/ortm1MgyYMcAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAABKgXyAH//////////AAAAAQAAAAAAAAAA'); +INSERT INTO txhistory VALUES ('356eec1f0432bbbba09ddcc1937e28253a4dc8e98ff77d5e9dee140be5093a70', 5, 1, 'AAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADuaygAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAEnciLVAAAAQE6AkyD+X3Poc6Fj6lalYvmHUdbN38uun6CX5Mc/cJnFQaqtZBOoAwDntTl1Gz/f7reRpXcJYSdQ+pEcUn/2PAE=', 'NW7sHwQyu7ugndzBk34oJTpNyOmP931ene4UC+UJOnAAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAO2C/AO45YBD3tHVFO1R3A0MekP8JR6nN1A9eWidyItUAAAAAAAAAAQAAAAFFVVIAAAAAAKD8GPxXf3CMjVKv3qhzs6au2HaMHH0s5B32RVUQithJAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAAAAAAEAAAABAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAAAAAAEAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADuaygAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAA7msgMAAAAAgAAAAUAAAADAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('2d0d264d9e2e3364c29faf6a6ec815a8a8e6a46e23096da1411f292309d78712', 5, 2, 'AAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAZAAAAAIAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADWk6QBCOjXHO5rKAAAAAAAAAAAAAAAAAAAAAAEnciLVAAAAQHofe3bgdjBd664ArqrKLj2/ia4bLa5YlG/ML7uFVRKWTbp0lpbKCa0bFR5AEnCHD/FyJgKh3TiNOpK3HFRkWQ8=', 'LQ0mTZ4uM2TCn69qbsgVqKjmpG4jCW2hQR8pIwnXhxIAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAO2C/AO45YBD3tHVFO1R3A0MekP8JR6nN1A9eWidyItUAAAAAAAAAAgAAAAFFVVIAAAAAAKD8GPxXf3CMjVKv3qhzs6au2HaMHH0s5B32RVUQithJAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAANaTpAEI6Ncc7msoAAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAAAAAAIAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADWk6QBCOjXHO5rKAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAA7msgMAAAAAgAAAAUAAAAEAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('4a0ac16e948710199659b0e8131be06df5944e57806c0db722859e4e8aad1e44', 5, 3, 'AAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAZAAAAAIAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAC+vCAAAAAAFAAAABAAAAAAAAAAAAAAAAAAAAAEnciLVAAAAQGCvLROwHtGG6m2PJ0IIz3FRHGUx9WygqNXHNQPN0Ypk/oTNltJAuPn52FZ+O7fImvcHffMLVMCFDNDTgFnrIQM=', 'SgrBbpSHEBmWWbDoExvgbfWUTleAbA23IoWeToqtHkQAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAO2C/AO45YBD3tHVFO1R3A0MekP8JR6nN1A9eWidyItUAAAAAAAAAAwAAAAFFVVIAAAAAAKD8GPxXf3CMjVKv3qhzs6au2HaMHH0s5B32RVUQithJAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAL68IAAAAAAUAAAAEAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAAAAAAMAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAC+vCAAAAAAFAAAABAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAA7msgMAAAAAgAAAAUAAAAFAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA=='); +INSERT INTO txhistory VALUES ('0bf200141a77febaa9924f423ed587499b27ce904c92967a04a12f28b3a5be58', 6, 1, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFFVVIAAAAAAKD8GPxXf3CMjVKv3qhzs6au2HaMHH0s5B32RVUQithJAAAAAB3NZQAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAGu5L5MAAAAQLhdv6YRzgtJp7I2KNyUONETo6m6c/RdrXFtnESbQ3/OMNXekk/3eo0Yc305sK5+yhTLMyCiQInnDMtXpNVJ9gY=', 'C/IAFBp3/rqpkk9CPtWHSZsnzpBMkpZ6BKEvKLOlvlgAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAQAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAAAAAABAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAHc1lAAAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAB3NZQAAAAACAAAAAA==', 'AAAAAAAAAAEAAAAKAAAAAwAAAAQAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAABKgXyAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAYAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAABDDiNAH//////////AAAAAQAAAAAAAAAAAAAAAwAAAAMAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAYAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAHc1lAH//////////AAAAAQAAAAAAAAAAAAAAAwAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAYAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAHc1lAH//////////AAAAAQAAAAAAAAAAAAAAAwAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAABKgXyAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAYAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAABDDiNAH//////////AAAAAQAAAAAAAAAAAAAAAwAAAAUAAAACAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAAAAAAEAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADuaygAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAgAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAAAAAABAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAdzWUAAAAAAQAAAAEAAAAAAAAAAAAAAAA='); +INSERT INTO txhistory VALUES ('9b126c224de1387927a73d2618e4234128a0a01724d3d42388c0e8c7e97ad005', 6, 2, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAAAAAAHc1lAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABA10f1ldxKy5vtvQZ5GoCsc69xI0vBcwOEaCl9Ftn+2pVFLbQXzCUIzTHaucp/+23c3lFar9xL8taHtOB+Zrw1Dg==', 'mxJsIk3hOHknpz0mGOQjQSigoBck09QjiMDox+l60AUAAAAAAAAAZAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAAAAABAAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAAAAAAAdzWUAAAAAAQAAAAEAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAYAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAQAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAAAAAAHc1lAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAYAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAADuayHAAAAACAAAABAAAAAMAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA'); + + +-- +-- Name: accountdata accountdata_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accountdata + ADD CONSTRAINT accountdata_pkey PRIMARY KEY (accountid, dataname); + + +-- +-- Name: accounts accounts_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY accounts + ADD CONSTRAINT accounts_pkey PRIMARY KEY (accountid); + + +-- +-- Name: ban ban_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ban + ADD CONSTRAINT ban_pkey PRIMARY KEY (nodeid); + + +-- +-- Name: ledgerheaders ledgerheaders_ledgerseq_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_ledgerseq_key UNIQUE (ledgerseq); + + +-- +-- Name: ledgerheaders ledgerheaders_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY ledgerheaders + ADD CONSTRAINT ledgerheaders_pkey PRIMARY KEY (ledgerhash); + + +-- +-- Name: offers offers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY offers + ADD CONSTRAINT offers_pkey PRIMARY KEY (offerid); + + +-- +-- Name: peers peers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY peers + ADD CONSTRAINT peers_pkey PRIMARY KEY (ip, port); + + +-- +-- Name: publishqueue publishqueue_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY publishqueue + ADD CONSTRAINT publishqueue_pkey PRIMARY KEY (ledger); + + +-- +-- Name: pubsub pubsub_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY pubsub + ADD CONSTRAINT pubsub_pkey PRIMARY KEY (resid); + + +-- +-- Name: scpquorums scpquorums_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY scpquorums + ADD CONSTRAINT scpquorums_pkey PRIMARY KEY (qsethash); + + +-- +-- Name: signers signers_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY signers + ADD CONSTRAINT signers_pkey PRIMARY KEY (accountid, publickey); + + +-- +-- Name: storestate storestate_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY storestate + ADD CONSTRAINT storestate_pkey PRIMARY KEY (statename); + + +-- +-- Name: trustlines trustlines_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY trustlines + ADD CONSTRAINT trustlines_pkey PRIMARY KEY (accountid, issuer, assetcode); + + +-- +-- Name: txfeehistory txfeehistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txfeehistory + ADD CONSTRAINT txfeehistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: txhistory txhistory_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY txhistory + ADD CONSTRAINT txhistory_pkey PRIMARY KEY (ledgerseq, txindex); + + +-- +-- Name: accountbalances; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX accountbalances ON accounts USING btree (balance) WHERE (balance >= 1000000000); + + +-- +-- Name: buyingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX buyingissuerindex ON offers USING btree (buyingissuer); + + +-- +-- Name: histbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histbyseq ON txhistory USING btree (ledgerseq); + + +-- +-- Name: histfeebyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX histfeebyseq ON txfeehistory USING btree (ledgerseq); + + +-- +-- Name: ledgersbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX ledgersbyseq ON ledgerheaders USING btree (ledgerseq); + + +-- +-- Name: priceindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX priceindex ON offers USING btree (price); + + +-- +-- Name: scpenvsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpenvsbyseq ON scphistory USING btree (ledgerseq); + + +-- +-- Name: scpquorumsbyseq; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX scpquorumsbyseq ON scpquorums USING btree (lastledgerseq); + + +-- +-- Name: sellingissuerindex; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX sellingissuerindex ON offers USING btree (sellingissuer); + + +-- +-- Name: signersaccount; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX signersaccount ON signers USING btree (accountid); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/trades-horizon.sql b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/trades-horizon.sql new file mode 100644 index 0000000..83c905a --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/trades-horizon.sql @@ -0,0 +1,848 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 9.6.5 +-- Dumped by pg_dump version 9.6.5 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; + +SET search_path = public, pg_catalog; + +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_counter_account_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_asset_id_fkey; +ALTER TABLE IF EXISTS ONLY public.history_trades DROP CONSTRAINT IF EXISTS history_trades_base_account_id_fkey; +DROP INDEX IF EXISTS public.trade_effects_by_order_book; +DROP INDEX IF EXISTS public.index_history_transactions_on_id; +DROP INDEX IF EXISTS public.index_history_operations_on_type; +DROP INDEX IF EXISTS public.index_history_operations_on_transaction_id; +DROP INDEX IF EXISTS public.index_history_operations_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_sequence; +DROP INDEX IF EXISTS public.index_history_ledgers_on_previous_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_ledger_hash; +DROP INDEX IF EXISTS public.index_history_ledgers_on_importer_version; +DROP INDEX IF EXISTS public.index_history_ledgers_on_id; +DROP INDEX IF EXISTS public.index_history_ledgers_on_closed_at; +DROP INDEX IF EXISTS public.index_history_effects_on_type; +DROP INDEX IF EXISTS public.index_history_accounts_on_id; +DROP INDEX IF EXISTS public.index_history_accounts_on_address; +DROP INDEX IF EXISTS public.htrd_time_lookup; +DROP INDEX IF EXISTS public.htrd_pid; +DROP INDEX IF EXISTS public.htrd_pair_time_lookup; +DROP INDEX IF EXISTS public.htrd_counter_lookup; +DROP INDEX IF EXISTS public.htrd_by_offer; +DROP INDEX IF EXISTS public.htp_by_htid; +DROP INDEX IF EXISTS public.hs_transaction_by_id; +DROP INDEX IF EXISTS public.hs_ledger_by_id; +DROP INDEX IF EXISTS public.hop_by_hoid; +DROP INDEX IF EXISTS public.hist_tx_p_id; +DROP INDEX IF EXISTS public.hist_op_p_id; +DROP INDEX IF EXISTS public.hist_e_id; +DROP INDEX IF EXISTS public.hist_e_by_order; +DROP INDEX IF EXISTS public.by_ledger; +DROP INDEX IF EXISTS public.by_hash; +DROP INDEX IF EXISTS public.by_account; +DROP INDEX IF EXISTS public.asset_by_issuer; +ALTER TABLE IF EXISTS ONLY public.history_transaction_participants DROP CONSTRAINT IF EXISTS history_transaction_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_operation_participants DROP CONSTRAINT IF EXISTS history_operation_participants_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_pkey; +ALTER TABLE IF EXISTS ONLY public.history_assets DROP CONSTRAINT IF EXISTS history_assets_asset_code_asset_type_asset_issuer_key; +ALTER TABLE IF EXISTS ONLY public.gorp_migrations DROP CONSTRAINT IF EXISTS gorp_migrations_pkey; +ALTER TABLE IF EXISTS public.history_transaction_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_operation_participants ALTER COLUMN id DROP DEFAULT; +ALTER TABLE IF EXISTS public.history_assets ALTER COLUMN id DROP DEFAULT; +DROP TABLE IF EXISTS public.history_transactions; +DROP SEQUENCE IF EXISTS public.history_transaction_participants_id_seq; +DROP TABLE IF EXISTS public.history_transaction_participants; +DROP TABLE IF EXISTS public.history_trades; +DROP TABLE IF EXISTS public.history_operations; +DROP SEQUENCE IF EXISTS public.history_operation_participants_id_seq; +DROP TABLE IF EXISTS public.history_operation_participants; +DROP TABLE IF EXISTS public.history_ledgers; +DROP TABLE IF EXISTS public.history_effects; +DROP SEQUENCE IF EXISTS public.history_assets_id_seq; +DROP TABLE IF EXISTS public.history_assets; +DROP TABLE IF EXISTS public.history_accounts; +DROP SEQUENCE IF EXISTS public.history_accounts_id_seq; +DROP TABLE IF EXISTS public.gorp_migrations; +DROP EXTENSION IF EXISTS plpgsql; +DROP SCHEMA IF EXISTS public; +-- +-- Name: public; Type: SCHEMA; Schema: -; Owner: - +-- + +CREATE SCHEMA public; + + +-- +-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON SCHEMA public IS 'standard public schema'; + + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: gorp_migrations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE gorp_migrations ( + id text NOT NULL, + applied_at timestamp with time zone +); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_accounts_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_accounts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_accounts ( + id bigint DEFAULT nextval('history_accounts_id_seq'::regclass) NOT NULL, + address character varying(64) +); + + +-- +-- Name: history_assets; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_assets ( + id integer NOT NULL, + asset_type character varying(64) NOT NULL, + asset_code character varying(12) NOT NULL, + asset_issuer character varying(56) NOT NULL +); + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_assets_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_assets_id_seq OWNED BY history_assets.id; + + +-- +-- Name: history_effects; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_effects ( + history_account_id bigint NOT NULL, + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + type integer NOT NULL, + details jsonb +); + + +-- +-- Name: history_ledgers; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_ledgers ( + sequence integer NOT NULL, + ledger_hash character varying(64) NOT NULL, + previous_ledger_hash character varying(64), + transaction_count integer DEFAULT 0 NOT NULL, + operation_count integer DEFAULT 0 NOT NULL, + closed_at timestamp without time zone NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + importer_version integer DEFAULT 1 NOT NULL, + total_coins bigint NOT NULL, + fee_pool bigint NOT NULL, + base_fee integer NOT NULL, + base_reserve integer NOT NULL, + max_tx_set_size integer NOT NULL, + protocol_version integer DEFAULT 0 NOT NULL +); + + +-- +-- Name: history_operation_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operation_participants ( + id integer NOT NULL, + history_operation_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_operation_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_operation_participants_id_seq OWNED BY history_operation_participants.id; + + +-- +-- Name: history_operations; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_operations ( + id bigint NOT NULL, + transaction_id bigint NOT NULL, + application_order integer NOT NULL, + type integer NOT NULL, + details jsonb, + source_account character varying(64) DEFAULT ''::character varying NOT NULL +); + + +-- +-- Name: history_trades; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_trades ( + history_operation_id bigint NOT NULL, + "order" integer NOT NULL, + ledger_closed_at timestamp without time zone NOT NULL, + offer_id bigint NOT NULL, + base_account_id bigint NOT NULL, + base_asset_id bigint NOT NULL, + base_amount bigint NOT NULL, + counter_account_id bigint NOT NULL, + counter_asset_id bigint NOT NULL, + counter_amount bigint NOT NULL, + base_is_seller boolean, + CONSTRAINT history_trades_base_amount_check CHECK ((base_amount > 0)), + CONSTRAINT history_trades_check CHECK ((base_asset_id < counter_asset_id)), + CONSTRAINT history_trades_counter_amount_check CHECK ((counter_amount > 0)) +); + + +-- +-- Name: history_transaction_participants; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transaction_participants ( + id integer NOT NULL, + history_transaction_id bigint NOT NULL, + history_account_id bigint NOT NULL +); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE history_transaction_participants_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE history_transaction_participants_id_seq OWNED BY history_transaction_participants.id; + + +-- +-- Name: history_transactions; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE history_transactions ( + transaction_hash character varying(64) NOT NULL, + ledger_sequence integer NOT NULL, + application_order integer NOT NULL, + account character varying(64) NOT NULL, + account_sequence bigint NOT NULL, + fee_paid integer NOT NULL, + operation_count integer NOT NULL, + created_at timestamp without time zone, + updated_at timestamp without time zone, + id bigint, + tx_envelope text NOT NULL, + tx_result text NOT NULL, + tx_meta text NOT NULL, + tx_fee_meta text NOT NULL, + signatures character varying(96)[] DEFAULT '{}'::character varying[] NOT NULL, + memo_type character varying DEFAULT 'none'::character varying NOT NULL, + memo character varying, + time_bounds int8range +); + + +-- +-- Name: history_assets id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets ALTER COLUMN id SET DEFAULT nextval('history_assets_id_seq'::regclass); + + +-- +-- Name: history_operation_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants ALTER COLUMN id SET DEFAULT nextval('history_operation_participants_id_seq'::regclass); + + +-- +-- Name: history_transaction_participants id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants ALTER COLUMN id SET DEFAULT nextval('history_transaction_participants_id_seq'::regclass); + + +-- +-- Data for Name: gorp_migrations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO gorp_migrations VALUES ('1_initial_schema.sql', '2017-10-25 12:02:41.355815-07'); +INSERT INTO gorp_migrations VALUES ('2_index_participants_by_toid.sql', '2017-10-25 12:02:41.35913-07'); +INSERT INTO gorp_migrations VALUES ('3_use_sequence_in_history_accounts.sql', '2017-10-25 12:02:41.361119-07'); +INSERT INTO gorp_migrations VALUES ('4_add_protocol_version.sql', '2017-10-25 12:02:41.365998-07'); +INSERT INTO gorp_migrations VALUES ('5_create_trades_table.sql', '2017-10-25 12:02:41.370443-07'); +INSERT INTO gorp_migrations VALUES ('6_create_assets_table.sql', '2017-10-25 12:02:41.373746-07'); +INSERT INTO gorp_migrations VALUES ('7_modify_trades_table.sql', '2017-10-25 12:02:41.381902-07'); + + +-- +-- Data for Name: history_accounts; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_accounts VALUES (1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_accounts VALUES (2, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_accounts VALUES (3, 'GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2'); +INSERT INTO history_accounts VALUES (4, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); +INSERT INTO history_accounts VALUES (5, 'GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG'); + + +-- +-- Name: history_accounts_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_accounts_id_seq', 5, true); + + +-- +-- Data for Name: history_assets; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_assets VALUES (1, 'credit_alphanum4', 'EUR', 'GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG'); +INSERT INTO history_assets VALUES (2, 'credit_alphanum4', 'USD', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); + + +-- +-- Name: history_assets_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_assets_id_seq', 2, true); + + +-- +-- Data for Name: history_effects; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_effects VALUES (2, 8589938689, 1, 0, '{"starting_balance": "100.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589938689, 2, 3, '{"amount": "100.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (2, 8589938689, 3, 10, '{"weight": 1, "public_key": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU"}'); +INSERT INTO history_effects VALUES (3, 8589942785, 1, 0, '{"starting_balance": "100.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589942785, 2, 3, '{"amount": "100.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (3, 8589942785, 3, 10, '{"weight": 1, "public_key": "GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2"}'); +INSERT INTO history_effects VALUES (4, 8589946881, 1, 0, '{"starting_balance": "100.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589946881, 2, 3, '{"amount": "100.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (4, 8589946881, 3, 10, '{"weight": 1, "public_key": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (5, 8589950977, 1, 0, '{"starting_balance": "100.0000000"}'); +INSERT INTO history_effects VALUES (1, 8589950977, 2, 3, '{"amount": "100.0000000", "asset_type": "native"}'); +INSERT INTO history_effects VALUES (5, 8589950977, 3, 10, '{"weight": 1, "public_key": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG"}'); +INSERT INTO history_effects VALUES (2, 12884905985, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (3, 12884910081, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (2, 12884914177, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG"}'); +INSERT INTO history_effects VALUES (3, 12884918273, 1, 20, '{"limit": "922337203685.4775807", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG"}'); +INSERT INTO history_effects VALUES (3, 17179873281, 1, 2, '{"amount": "500.0000000", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG"}'); +INSERT INTO history_effects VALUES (5, 17179873281, 2, 3, '{"amount": "500.0000000", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG"}'); +INSERT INTO history_effects VALUES (2, 17179877377, 1, 2, '{"amount": "500.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (4, 17179877377, 2, 3, '{"amount": "500.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); +INSERT INTO history_effects VALUES (2, 25769807873, 1, 33, '{"seller": "GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2", "offer_id": 1, "sold_amount": "50.0000000", "bought_amount": "50.0000000", "sold_asset_code": "USD", "sold_asset_type": "credit_alphanum4", "bought_asset_code": "EUR", "bought_asset_type": "credit_alphanum4", "sold_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "bought_asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG"}'); +INSERT INTO history_effects VALUES (3, 25769807873, 2, 33, '{"seller": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "offer_id": 1, "sold_amount": "50.0000000", "bought_amount": "50.0000000", "sold_asset_code": "EUR", "sold_asset_type": "credit_alphanum4", "bought_asset_code": "USD", "bought_asset_type": "credit_alphanum4", "sold_asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG", "bought_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}'); + + +-- +-- Data for Name: history_ledgers; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_ledgers VALUES (1, '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', NULL, 0, 0, '1970-01-01 00:00:00', '2017-10-25 19:05:13.141878', '2017-10-25 19:05:13.141878', 4294967296, 10, 1000000000000000000, 0, 100, 100000000, 100, 0); +INSERT INTO history_ledgers VALUES (2, 'e992b9b094dc8f0b605e7a134a519372063a4183e124a4212a7db54b24a86ef3', '63d98f536ee68d1b27b5b89f23af5311b7569a24faf1403ad0b52b633b07be99', 4, 4, '2017-10-25 19:05:08', '2017-10-25 19:05:13.151625', '2017-10-25 19:05:13.151625', 8589934592, 10, 1000000000000000000, 400, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (3, 'a9c4c9fa29fb0383ba7a329a2b10a5c7d45a04729b311af4f44fa33c9f1639ab', 'e992b9b094dc8f0b605e7a134a519372063a4183e124a4212a7db54b24a86ef3', 4, 4, '2017-10-25 19:05:09', '2017-10-25 19:05:13.18546', '2017-10-25 19:05:13.18546', 12884901888, 10, 1000000000000000000, 800, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (4, '8835957025b69bb0baaeb310e6dde9ecd06eb070b48c6a0ae8d158b4b5949ba0', 'a9c4c9fa29fb0383ba7a329a2b10a5c7d45a04729b311af4f44fa33c9f1639ab', 2, 2, '2017-10-25 19:05:10', '2017-10-25 19:05:13.206825', '2017-10-25 19:05:13.206825', 17179869184, 10, 1000000000000000000, 1000, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (5, '2d1380a9e2116d885c81015057d5ea69fe06b134b3c2515e5096149ab79227bb', '8835957025b69bb0baaeb310e6dde9ecd06eb070b48c6a0ae8d158b4b5949ba0', 3, 3, '2017-10-25 19:05:11', '2017-10-25 19:05:13.225298', '2017-10-25 19:05:13.225298', 21474836480, 10, 1000000000000000000, 1300, 100, 100000000, 10000, 8); +INSERT INTO history_ledgers VALUES (6, '7496d65c057d7a45d38e79c1de29cc846f2b216ce189e500670202ff1fa58bcb', '2d1380a9e2116d885c81015057d5ea69fe06b134b3c2515e5096149ab79227bb', 2, 2, '2017-10-25 19:05:12', '2017-10-25 19:05:13.242286', '2017-10-25 19:05:13.242286', 25769803776, 10, 1000000000000000000, 1500, 100, 100000000, 10000, 8); + + +-- +-- Data for Name: history_operation_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operation_participants VALUES (1, 8589938689, 1); +INSERT INTO history_operation_participants VALUES (2, 8589938689, 2); +INSERT INTO history_operation_participants VALUES (3, 8589942785, 1); +INSERT INTO history_operation_participants VALUES (4, 8589942785, 3); +INSERT INTO history_operation_participants VALUES (5, 8589946881, 1); +INSERT INTO history_operation_participants VALUES (6, 8589946881, 4); +INSERT INTO history_operation_participants VALUES (7, 8589950977, 1); +INSERT INTO history_operation_participants VALUES (8, 8589950977, 5); +INSERT INTO history_operation_participants VALUES (9, 12884905985, 2); +INSERT INTO history_operation_participants VALUES (10, 12884910081, 3); +INSERT INTO history_operation_participants VALUES (11, 12884914177, 2); +INSERT INTO history_operation_participants VALUES (12, 12884918273, 3); +INSERT INTO history_operation_participants VALUES (13, 17179873281, 5); +INSERT INTO history_operation_participants VALUES (14, 17179873281, 3); +INSERT INTO history_operation_participants VALUES (15, 17179877377, 4); +INSERT INTO history_operation_participants VALUES (16, 17179877377, 2); +INSERT INTO history_operation_participants VALUES (17, 21474840577, 3); +INSERT INTO history_operation_participants VALUES (18, 21474844673, 3); +INSERT INTO history_operation_participants VALUES (19, 21474848769, 3); +INSERT INTO history_operation_participants VALUES (20, 25769807873, 2); +INSERT INTO history_operation_participants VALUES (21, 25769811969, 2); + + +-- +-- Name: history_operation_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_operation_participants_id_seq', 21, true); + + +-- +-- Data for Name: history_operations; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_operations VALUES (8589938689, 8589938688, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "starting_balance": "100.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (8589942785, 8589942784, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2", "starting_balance": "100.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (8589946881, 8589946880, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "starting_balance": "100.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (8589950977, 8589950976, 1, 0, '{"funder": "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", "account": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG", "starting_balance": "100.0000000"}', 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H'); +INSERT INTO history_operations VALUES (12884905985, 12884905984, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "trustor": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (12884910081, 12884910080, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "trustor": "GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2'); +INSERT INTO history_operations VALUES (12884914177, 12884914176, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG", "trustor": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (12884918273, 12884918272, 1, 6, '{"limit": "922337203685.4775807", "trustee": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG", "trustor": "GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG"}', 'GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2'); +INSERT INTO history_operations VALUES (17179873281, 17179873280, 1, 1, '{"to": "GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2", "from": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG", "amount": "500.0000000", "asset_code": "EUR", "asset_type": "credit_alphanum4", "asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG"}', 'GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG'); +INSERT INTO history_operations VALUES (17179877377, 17179877376, 1, 1, '{"to": "GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU", "from": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "amount": "500.0000000", "asset_code": "USD", "asset_type": "credit_alphanum4", "asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4'); +INSERT INTO history_operations VALUES (21474840577, 21474840576, 1, 3, '{"price": "1.0000000", "amount": "100.0000000", "price_r": {"d": 1, "n": 1}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_code": "EUR", "selling_asset_type": "credit_alphanum4", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "selling_asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG"}', 'GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2'); +INSERT INTO history_operations VALUES (21474844673, 21474844672, 1, 3, '{"price": "1.1111111", "amount": "90.0000000", "price_r": {"d": 1000000000, "n": 1111111111}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_code": "EUR", "selling_asset_type": "credit_alphanum4", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "selling_asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG"}', 'GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2'); +INSERT INTO history_operations VALUES (21474848769, 21474848768, 1, 3, '{"price": "1.2500000", "amount": "80.0000000", "price_r": {"d": 4, "n": 5}, "offer_id": 0, "buying_asset_code": "USD", "buying_asset_type": "credit_alphanum4", "selling_asset_code": "EUR", "selling_asset_type": "credit_alphanum4", "buying_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4", "selling_asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG"}', 'GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2'); +INSERT INTO history_operations VALUES (25769807873, 25769807872, 1, 3, '{"price": "1.0000000", "amount": "50.0000000", "price_r": {"d": 1, "n": 1}, "offer_id": 0, "buying_asset_code": "EUR", "buying_asset_type": "credit_alphanum4", "selling_asset_code": "USD", "selling_asset_type": "credit_alphanum4", "buying_asset_issuer": "GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG", "selling_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); +INSERT INTO history_operations VALUES (25769811969, 25769811968, 1, 3, '{"price": "1.0000000", "amount": "50.0000000", "price_r": {"d": 1, "n": 1}, "offer_id": 0, "buying_asset_type": "native", "selling_asset_code": "USD", "selling_asset_type": "credit_alphanum4", "selling_asset_issuer": "GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4"}', 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU'); + + +-- +-- Data for Name: history_trades; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_trades VALUES (25769807873, 0, '2017-10-25 19:05:12', 1, 3, 1, 500000000, 2, 2, 500000000, true); + + +-- +-- Data for Name: history_transaction_participants; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transaction_participants VALUES (1, 8589938688, 1); +INSERT INTO history_transaction_participants VALUES (2, 8589938688, 2); +INSERT INTO history_transaction_participants VALUES (3, 8589942784, 1); +INSERT INTO history_transaction_participants VALUES (4, 8589942784, 3); +INSERT INTO history_transaction_participants VALUES (5, 8589946880, 1); +INSERT INTO history_transaction_participants VALUES (6, 8589946880, 4); +INSERT INTO history_transaction_participants VALUES (7, 8589950976, 1); +INSERT INTO history_transaction_participants VALUES (8, 8589950976, 5); +INSERT INTO history_transaction_participants VALUES (9, 12884905984, 2); +INSERT INTO history_transaction_participants VALUES (10, 12884910080, 3); +INSERT INTO history_transaction_participants VALUES (11, 12884914176, 2); +INSERT INTO history_transaction_participants VALUES (12, 12884918272, 3); +INSERT INTO history_transaction_participants VALUES (13, 17179873280, 3); +INSERT INTO history_transaction_participants VALUES (14, 17179873280, 5); +INSERT INTO history_transaction_participants VALUES (15, 17179877376, 4); +INSERT INTO history_transaction_participants VALUES (16, 17179877376, 2); +INSERT INTO history_transaction_participants VALUES (17, 21474840576, 3); +INSERT INTO history_transaction_participants VALUES (18, 21474844672, 3); +INSERT INTO history_transaction_participants VALUES (19, 21474848768, 3); +INSERT INTO history_transaction_participants VALUES (20, 25769807872, 2); +INSERT INTO history_transaction_participants VALUES (21, 25769811968, 2); + + +-- +-- Name: history_transaction_participants_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - +-- + +SELECT pg_catalog.setval('history_transaction_participants_id_seq', 21, true); + + +-- +-- Data for Name: history_transactions; Type: TABLE DATA; Schema: public; Owner: - +-- + +INSERT INTO history_transactions VALUES ('2374e99349b9ef7dba9a5db3339b78fda8f34777b1af33ba468ad5c0df946d4d', 2, 1, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 1, 100, 1, '2017-10-25 19:05:13.15296', '2017-10-25 19:05:13.15296', 8589938688, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAO5rKAAAAAAAAAAABVvwF9wAAAECDzqvkQBQoNAJifPRXDoLhvtycT3lFPCQ51gkdsFHaBNWw05S/VhW0Xgkr0CBPE4NaFV2Kmcs3ZwLmib4TRrML', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2s2vJNHAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAABAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/+cAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{g86r5EAUKDQCYnz0Vw6C4b7cnE95RTwkOdYJHbBR2gTVsNOUv1YVtF4JK9AgTxODWhVdipnLN2cC5om+E0azCw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('164a5064eba64f2cdbadb856bf3448485fc626247ada3ed39cddf0f6902133b6', 2, 2, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 2, 100, 1, '2017-10-25 19:05:13.16223', '2017-10-25 19:05:13.162231', 8589942784, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAO2C/AO45YBD3tHVFO1R3A0MekP8JR6nN1A9eWidyItUAAAAAO5rKAAAAAAAAAAABVvwF9wAAAEASEZiZbeFwCsrKBnKIus/05VtJDBrgosuhLQ/U6XUj4twWyhs7UtS4CMexOM6JqcfqJK10WlBkkwn4g8PIfjIG', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2szAuanAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/84AAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{EhGYmW3hcArKygZyiLrP9OVbSQwa4KLLoS0P1Ol1I+LcFsobO1LUuAjHsTjOianH6iStdFpQZJMJ+IPDyH4yBg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('2d365c3c49f376570df856bca62503966f0e269a2f51cdb68ce2ee19a7f8245a', 2, 3, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 3, 100, 1, '2017-10-25 19:05:13.166874', '2017-10-25 19:05:13.166874', 8589946880, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAO5rKAAAAAAAAAAABVvwF9wAAAEB/JBgvIM71gLBIh0TON9b+l+ApZz1CKDQiUFSV0scRguB1anyMwMR6s5SiaCwtDnxsPna12RdUQKlH2aeMAy8H', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2svSToHAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/7UAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{fyQYLyDO9YCwSIdEzjfW/pfgKWc9Qig0IlBUldLHEYLgdWp8jMDEerOUomgsLQ58bD52tdkXVECpR9mnjAMvBw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('003e91101d19aabb429491953806886d777c260233c6478f1c928a79ec4e2743', 2, 4, 'GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H', 4, 100, 1, '2017-10-25 19:05:13.171369', '2017-10-25 19:05:13.171369', 8589950976, 'AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAO5rKAAAAAAAAAAABVvwF9wAAAEDIOudzujfo+dSIJXXb06SjLBLLXsFxnVnR1HJejfq2NgFUtLuX2KrVNSZyRBG+WvfdoXwCPcp85hDRbCmjbPYM', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAIAAAAAAAAAAKD8GPxXf3CMjVKv3qhzs6au2HaMHH0s5B32RVUQithJAAAAADuaygAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3DeC2srj41nAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAACAAAAAAAAAABi/B0L0JGythwN1lY0aypo19NHxvLCyO5tBEcCVvwF9w3gtrOnY/5wAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{yDrnc7o36PnUiCV129OkoywSy17BcZ1Z0dRyXo36tjYBVLS7l9iq1TUmckQRvlr33aF8Aj3KfOYQ0Wwpo2z2DA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('bd486dbdd02d460817671c4a5a7e9d6e865ca29cb41e62d7aaf70a2fee5b36de', 3, 1, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934593, 100, 1, '2017-10-25 19:05:13.18596', '2017-10-25 19:05:13.185961', 12884905984, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAGu5L5MAAAAQB9kmKW2q3v7Qfy8PMekEb1TTI5ixqkI0BogXrOt7gO162Qbkh2dSTUfeDovc0PAafhDXxthVAlsLujlBmyjBAY=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAADuayTgAAAACAAAAAgAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{H2SYpbare/tB/Lw8x6QRvVNMjmLGqQjQGiBes63uA7XrZBuSHZ1JNR94Oi9zQ8Bp+ENfG2FUCWwu6OUGbKMEBg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('00ab9cfce2b4c4141d8bb6768dd094bdbb1c7406710dbb3ba0ef98870f63a344', 3, 2, 'GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2', 8589934593, 100, 1, '2017-10-25 19:05:13.188628', '2017-10-25 19:05:13.188628', 12884910080, 'AAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt73//////////AAAAAAAAAAEnciLVAAAAQLVbII+1LeizxgncDI46KHyBt05+H92n1+R328J9zNl2fgJW2nfn3FIoLVs2qV1+CUpr121a2B7AM6HKr4nBLAI=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAADuayTgAAAACAAAAAgAAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{tVsgj7Ut6LPGCdwMjjoofIG3Tn4f3afX5Hfbwn3M2XZ+Albad+fcUigtWzapXX4JSmvXbVrYHsAzocqvicEsAg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('c7ab3843f0a0c4fe79dece0ff1b8391f7a9d34c47cbd7e35034f7b28f60dfc00', 3, 3, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934594, 100, 1, '2017-10-25 19:05:13.19129', '2017-10-25 19:05:13.19129', 12884914176, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSX//////////AAAAAAAAAAGu5L5MAAAAQO/nblo8KAkSOf8cQOOiADXygx+I0ZdWoM4Vg4EKPAAJXFntctjCIyQ4csVUywaW32J/keQWYby52BjiNhT/6Qo=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAADuayTgAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msk4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{7+duWjwoCRI5/xxA46IANfKDH4jRl1agzhWDgQo8AAlcWe1y2MIjJDhyxVTLBpbfYn+R5BZhvLnYGOI2FP/pCg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('5ef9c06bb625d2da2281118bdf14d808768353ee2fca7457c8e506fbeb91fc55', 3, 4, 'GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2', 8589934594, 100, 1, '2017-10-25 19:05:13.194095', '2017-10-25 19:05:13.194095', 12884918272, 'AAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAZAAAAAIAAAACAAAAAAAAAAAAAAABAAAAAAAAAAYAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSX//////////AAAAAAAAAAEnciLVAAAAQOG2GKO9i60cM1QK2UN1gXrHEYjeGLRXFT5snCqO5FnPET5cVs30N7ITPZ6HH6QcZ2IdC1c66wLge4GyR8vpww0=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAAGAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAAAAAAMAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAADuayTgAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAADAAAAAAAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAA7msk4AAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{4bYYo72LrRwzVArZQ3WBescRiN4YtFcVPmycKo7kWc8RPlxWzfQ3shM9nocfpBxnYh0LVzrrAuB7gbJHy+nDDQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('e4febb6aab5f83df4c19b4f1f6b8687f11886169e996e16baa75aac2d8a09c68', 4, 1, 'GCQPYGH4K57XBDENKKX55KDTWOTK5WDWRQOH2LHEDX3EKVIQRLMESGBG', 8589934593, 100, 1, '2017-10-25 19:05:13.207298', '2017-10-25 19:05:13.207298', 17179873280, 'AAAAAKD8GPxXf3CMjVKv3qhzs6au2HaMHH0s5B32RVUQithJAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAO2C/AO45YBD3tHVFO1R3A0MekP8JR6nN1A9eWidyItUAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAEqBfIAAAAAAAAAAAEQithJAAAAQEghWBLDjmNLzcPF6o8dqUHMsI0WhttWE/ABSKaHNc+0FqsF+ui5+eky4ERyu99YR6BEHF4NlgyLnSq3zcDr9Qo=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAABKgXyAH//////////AAAAAQAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{SCFYEsOOY0vNw8Xqjx2pQcywjRaG21YT8AFIpoc1z7QWqwX66Ln56TLgRHK731hHoEQcXg2WDIudKrfNwOv1Cg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('2837a1b3def2c2ddfdcde5b44bf08d7a11a9328d870df17fa2bb66d4c83260c7', 4, 2, 'GC23QF2HUE52AMXUFUH3AYJAXXGXXV2VHXYYR6EYXETPKDXZSAW67XO4', 8589934593, 100, 1, '2017-10-25 19:05:13.211595', '2017-10-25 19:05:13.211595', 17179877376, 'AAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAZAAAAAIAAAABAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAEqBfIAAAAAAAAAAAH5kC3vAAAAQGoQPiD0HEBi0U8cHN6nlZ3okEfdmt7mqkQHIt2tuRLaZZ1iMQwU43M8v+ntJQsA4c2eBXt9GYp/29FLjnba1Qw=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=', 'AAAAAAAAAAEAAAACAAAAAwAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAABKgXyAH//////////AAAAAQAAAAAAAAAA', 'AAAAAgAAAAMAAAACAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAA7msoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAA7msmcAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{ahA+IPQcQGLRTxwc3qeVneiQR92a3uaqRAci3a25EtplnWIxDBTjczy/6e0lCwDhzZ4Fe30Zin/b0UuOdtrVDA==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('356eec1f0432bbbba09ddcc1937e28253a4dc8e98ff77d5e9dee140be5093a70', 5, 1, 'GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2', 8589934595, 100, 1, '2017-10-25 19:05:13.225785', '2017-10-25 19:05:13.225785', 21474840576, 'AAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADuaygAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAEnciLVAAAAQE6AkyD+X3Poc6Fj6lalYvmHUdbN38uun6CX5Mc/cJnFQaqtZBOoAwDntTl1Gz/f7reRpXcJYSdQ+pEcUn/2PAE=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAAAAAAEAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADuaygAAAAABAAAAAQAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAAAAAAEAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADuaygAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAA7msgMAAAAAgAAAAUAAAADAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', 'AAAAAgAAAAMAAAADAAAAAAAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAA7msk4AAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAA7msjUAAAAAgAAAAMAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{ToCTIP5fc+hzoWPqVqVi+YdR1s3fy66foJfkxz9wmcVBqq1kE6gDAOe1OXUbP9/ut5GldwlhJ1D6kRxSf/Y8AQ==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('2d0d264d9e2e3364c29faf6a6ec815a8a8e6a46e23096da1411f292309d78712', 5, 2, 'GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2', 8589934596, 100, 1, '2017-10-25 19:05:13.227992', '2017-10-25 19:05:13.227992', 21474844672, 'AAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAZAAAAAIAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADWk6QBCOjXHO5rKAAAAAAAAAAAAAAAAAAAAAAEnciLVAAAAQHofe3bgdjBd664ArqrKLj2/ia4bLa5YlG/ML7uFVRKWTbp0lpbKCa0bFR5AEnCHD/FyJgKh3TiNOpK3HFRkWQ8=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAAAAAAIAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADWk6QBCOjXHO5rKAAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAAAAAAIAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADWk6QBCOjXHO5rKAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAA7msgMAAAAAgAAAAUAAAAEAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', 'AAAAAQAAAAEAAAAFAAAAAAAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAA7mshwAAAAAgAAAAQAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{eh97duB2MF3rrgCuqsouPb+JrhstrliUb8wvu4VVEpZNunSWlsoJrRsVHkAScIcP8XImAqHdOI06krccVGRZDw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('4a0ac16e948710199659b0e8131be06df5944e57806c0db722859e4e8aad1e44', 5, 3, 'GA5WBPYA5Y4WAEHXWR2UKO2UO4BUGHUQ74EUPKON2QHV4WRHOIRNKKH2', 8589934597, 100, 1, '2017-10-25 19:05:13.230188', '2017-10-25 19:05:13.230188', 21474848768, 'AAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAZAAAAAIAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAC+vCAAAAAAFAAAABAAAAAAAAAAAAAAAAAAAAAEnciLVAAAAQGCvLROwHtGG6m2PJ0IIz3FRHGUx9WygqNXHNQPN0Ypk/oTNltJAuPn52FZ+O7fImvcHffMLVMCFDNDTgFnrIQM=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAAAAAAMAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAC+vCAAAAAAFAAAABAAAAAAAAAAAAAAAAA==', 'AAAAAAAAAAEAAAACAAAAAAAAAAUAAAACAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAAAAAAMAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAAC+vCAAAAAAFAAAABAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAA7msgMAAAAAgAAAAUAAAAFAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', 'AAAAAQAAAAEAAAAFAAAAAAAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAA7msgMAAAAAgAAAAUAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{YK8tE7Ae0YbqbY8nQgjPcVEcZTH1bKCo1cc1A83RimT+hM2W0kC4+fnYVn47t8ia9wd98wtUwIUM0NOAWeshAw==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('0bf200141a77febaa9924f423ed587499b27ce904c92967a04a12f28b3a5be58', 6, 1, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934595, 100, 1, '2017-10-25 19:05:13.242801', '2017-10-25 19:05:13.242801', 25769807872, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAFFVVIAAAAAAKD8GPxXf3CMjVKv3qhzs6au2HaMHH0s5B32RVUQithJAAAAAB3NZQAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAGu5L5MAAAAQLhdv6YRzgtJp7I2KNyUONETo6m6c/RdrXFtnESbQ3/OMNXekk/3eo0Yc305sK5+yhTLMyCiQInnDMtXpNVJ9gY=', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAEAAAAAO2C/AO45YBD3tHVFO1R3A0MekP8JR6nN1A9eWidyItUAAAAAAAAAAQAAAAFFVVIAAAAAAKD8GPxXf3CMjVKv3qhzs6au2HaMHH0s5B32RVUQithJAAAAAB3NZQAAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAdzWUAAAAAAgAAAAA=', 'AAAAAAAAAAEAAAAKAAAAAwAAAAQAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAABKgXyAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAYAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAABDDiNAH//////////AAAAAQAAAAAAAAAAAAAAAwAAAAMAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAYAAAABAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAAAHc1lAH//////////AAAAAQAAAAAAAAAAAAAAAwAAAAMAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAAAAAAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAYAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAAAHc1lAH//////////AAAAAQAAAAAAAAAAAAAAAwAAAAQAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAABKgXyAH//////////AAAAAQAAAAAAAAAAAAAAAQAAAAYAAAABAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAVVTRAAAAAAAtbgXR6E7oDL0LQ+wYSC9zXvXVT3xiPiYuSb1DvmQLe8AAAABDDiNAH//////////AAAAAQAAAAAAAAAAAAAAAwAAAAUAAAACAAAAADtgvwDuOWAQ97R1RTtUdwNDHpD/CUepzdQPXlonciLVAAAAAAAAAAEAAAABRVVSAAAAAACg/Bj8V39wjI1Sr96oc7Omrth2jBx9LOQd9kVVEIrYSQAAAAFVU0QAAAAAALW4F0ehO6Ay9C0PsGEgvc1711U98Yj4mLkm9Q75kC3vAAAAADuaygAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAgAAAAA7YL8A7jlgEPe0dUU7VHcDQx6Q/wlHqc3UD15aJ3Ii1QAAAAAAAAABAAAAAUVVUgAAAAAAoPwY/Fd/cIyNUq/eqHOzpq7YdowcfSzkHfZFVRCK2EkAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAdzWUAAAAAAQAAAAEAAAAAAAAAAAAAAAA=', 'AAAAAgAAAAMAAAADAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msk4AAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7msjUAAAAAgAAAAMAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{uF2/phHOC0mnsjYo3JQ40ROjqbpz9F2tcW2cRJtDf84w1d6ST/d6jRhzfTmwrn7KFMszIKJAiecMy1ek1Un2Bg==}', 'none', NULL, NULL); +INSERT INTO history_transactions VALUES ('9b126c224de1387927a73d2618e4234128a0a01724d3d42388c0e8c7e97ad005', 6, 2, 'GCXKG6RN4ONIEPCMNFB732A436Z5PNDSRLGWK7GBLCMQLIFO4S7EYWVU', 8589934596, 100, 1, '2017-10-25 19:05:13.25041', '2017-10-25 19:05:13.25041', 25769811968, 'AAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAZAAAAAIAAAAEAAAAAAAAAAAAAAABAAAAAAAAAAMAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAAAAAAHc1lAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAa7kvkwAAABA10f1ldxKy5vtvQZ5GoCsc69xI0vBcwOEaCl9Ftn+2pVFLbQXzCUIzTHaucp/+23c3lFar9xL8taHtOB+Zrw1Dg==', 'AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAQAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAAAAAAHc1lAAAAAAEAAAABAAAAAAAAAAAAAAAA', 'AAAAAAAAAAEAAAACAAAAAAAAAAYAAAACAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAAAAAAAQAAAABVVNEAAAAAAC1uBdHoTugMvQtD7BhIL3Ne9dVPfGI+Ji5JvUO+ZAt7wAAAAAAAAAAHc1lAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAYAAAAAAAAAAK6jei3jmoI8TGlD/egc37PXtHKKzWV8wViZBaCu5L5MAAAAADuayHAAAAACAAAABAAAAAMAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA', 'AAAAAQAAAAEAAAAGAAAAAAAAAACuo3ot45qCPExpQ/3oHN+z17Ryis1lfMFYmQWgruS+TAAAAAA7mshwAAAAAgAAAAQAAAACAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA==', '{10f1ldxKy5vtvQZ5GoCsc69xI0vBcwOEaCl9Ftn+2pVFLbQXzCUIzTHaucp/+23c3lFar9xL8taHtOB+Zrw1Dg==}', 'none', NULL, NULL); + + +-- +-- Name: gorp_migrations gorp_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY gorp_migrations + ADD CONSTRAINT gorp_migrations_pkey PRIMARY KEY (id); + + +-- +-- Name: history_assets history_assets_asset_code_asset_type_asset_issuer_key; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_asset_code_asset_type_asset_issuer_key UNIQUE (asset_code, asset_type, asset_issuer); + + +-- +-- Name: history_assets history_assets_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_assets + ADD CONSTRAINT history_assets_pkey PRIMARY KEY (id); + + +-- +-- Name: history_operation_participants history_operation_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_operation_participants + ADD CONSTRAINT history_operation_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: history_transaction_participants history_transaction_participants_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_transaction_participants + ADD CONSTRAINT history_transaction_participants_pkey PRIMARY KEY (id); + + +-- +-- Name: asset_by_issuer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX asset_by_issuer ON history_assets USING btree (asset_issuer); + + +-- +-- Name: by_account; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_account ON history_transactions USING btree (account, account_sequence); + + +-- +-- Name: by_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_hash ON history_transactions USING btree (transaction_hash); + + +-- +-- Name: by_ledger; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX by_ledger ON history_transactions USING btree (ledger_sequence, application_order); + + +-- +-- Name: hist_e_by_order; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_by_order ON history_effects USING btree (history_operation_id, "order"); + + +-- +-- Name: hist_e_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_e_id ON history_effects USING btree (history_account_id, history_operation_id, "order"); + + +-- +-- Name: hist_op_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_op_p_id ON history_operation_participants USING btree (history_account_id, history_operation_id); + + +-- +-- Name: hist_tx_p_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hist_tx_p_id ON history_transaction_participants USING btree (history_account_id, history_transaction_id); + + +-- +-- Name: hop_by_hoid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX hop_by_hoid ON history_operation_participants USING btree (history_operation_id); + + +-- +-- Name: hs_ledger_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_ledger_by_id ON history_ledgers USING btree (id); + + +-- +-- Name: hs_transaction_by_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX hs_transaction_by_id ON history_transactions USING btree (id); + + +-- +-- Name: htp_by_htid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htp_by_htid ON history_transaction_participants USING btree (history_transaction_id); + + +-- +-- Name: htrd_by_offer; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_by_offer ON history_trades USING btree (offer_id); + + +-- +-- Name: htrd_counter_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_counter_lookup ON history_trades USING btree (counter_asset_id); + + +-- +-- Name: htrd_pair_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_pair_time_lookup ON history_trades USING btree (base_asset_id, counter_asset_id, ledger_closed_at); + + +-- +-- Name: htrd_pid; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX htrd_pid ON history_trades USING btree (history_operation_id, "order"); + + +-- +-- Name: htrd_time_lookup; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX htrd_time_lookup ON history_trades USING btree (ledger_closed_at); + + +-- +-- Name: index_history_accounts_on_address; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_address ON history_accounts USING btree (address); + + +-- +-- Name: index_history_accounts_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_accounts_on_id ON history_accounts USING btree (id); + + +-- +-- Name: index_history_effects_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_effects_on_type ON history_effects USING btree (type); + + +-- +-- Name: index_history_ledgers_on_closed_at; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_closed_at ON history_ledgers USING btree (closed_at); + + +-- +-- Name: index_history_ledgers_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_id ON history_ledgers USING btree (id); + + +-- +-- Name: index_history_ledgers_on_importer_version; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_ledgers_on_importer_version ON history_ledgers USING btree (importer_version); + + +-- +-- Name: index_history_ledgers_on_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_ledger_hash ON history_ledgers USING btree (ledger_hash); + + +-- +-- Name: index_history_ledgers_on_previous_ledger_hash; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_previous_ledger_hash ON history_ledgers USING btree (previous_ledger_hash); + + +-- +-- Name: index_history_ledgers_on_sequence; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_ledgers_on_sequence ON history_ledgers USING btree (sequence); + + +-- +-- Name: index_history_operations_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_operations_on_id ON history_operations USING btree (id); + + +-- +-- Name: index_history_operations_on_transaction_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_transaction_id ON history_operations USING btree (transaction_id); + + +-- +-- Name: index_history_operations_on_type; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX index_history_operations_on_type ON history_operations USING btree (type); + + +-- +-- Name: index_history_transactions_on_id; Type: INDEX; Schema: public; Owner: - +-- + +CREATE UNIQUE INDEX index_history_transactions_on_id ON history_transactions USING btree (id); + + +-- +-- Name: trade_effects_by_order_book; Type: INDEX; Schema: public; Owner: - +-- + +CREATE INDEX trade_effects_by_order_book ON history_effects USING btree (((details ->> 'sold_asset_type'::text)), ((details ->> 'sold_asset_code'::text)), ((details ->> 'sold_asset_issuer'::text)), ((details ->> 'bought_asset_type'::text)), ((details ->> 'bought_asset_code'::text)), ((details ->> 'bought_asset_issuer'::text))) WHERE (type = 33); + + +-- +-- Name: history_trades history_trades_base_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_account_id_fkey FOREIGN KEY (base_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_base_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_base_asset_id_fkey FOREIGN KEY (base_asset_id) REFERENCES history_assets(id); + + +-- +-- Name: history_trades history_trades_counter_account_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_account_id_fkey FOREIGN KEY (counter_account_id) REFERENCES history_accounts(id); + + +-- +-- Name: history_trades history_trades_counter_asset_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY history_trades + ADD CONSTRAINT history_trades_counter_asset_id_fkey FOREIGN KEY (counter_asset_id) REFERENCES history_assets(id); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/trades.rb b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/trades.rb new file mode 100644 index 0000000..e5ca558 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/scenarios/trades.rb @@ -0,0 +1,32 @@ +run_recipe File.dirname(__FILE__) + "/_common_accounts.rb" + +use_manual_close + +create_account :scott, :master, 100 +create_account :bartek, :master, 100 +create_account :usd_gateway, :master, 100 +create_account :eur_gateway, :master, 100 + +close_ledger + +trust :scott, :usd_gateway, "USD" +trust :bartek, :usd_gateway, "USD" +trust :scott, :eur_gateway, "EUR" +trust :bartek, :eur_gateway, "EUR" + +close_ledger + +payment :usd_gateway, :scott, ["USD", :usd_gateway, 500] +payment :eur_gateway, :bartek, ["EUR", :eur_gateway, 500] + +close_ledger + +offer :bartek, {buy:["USD", :usd_gateway], with:["EUR", :eur_gateway]}, 100, 1.0 +offer :bartek, {buy:["USD", :usd_gateway], with:["EUR", :eur_gateway]}, 100, 0.9 +offer :bartek, {buy:["USD", :usd_gateway], with:["EUR", :eur_gateway]}, 100, 0.8 + +close_ledger + +offer :scott, {sell:["USD", :usd_gateway], for:["EUR", :eur_gateway]}, 50, 1.0 + +offer :scott, {sell:["USD", :usd_gateway], for: :native}, 50, 1.0 diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/static_mock_server.go b/vendor/src/github.com/stellar/go/services/horizon/internal/test/static_mock_server.go new file mode 100644 index 0000000..eb36f2b --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/static_mock_server.go @@ -0,0 +1,19 @@ +package test + +import ( + "fmt" + "net/http" + "net/http/httptest" +) + +// NewStaticMockServer creates a new mock server that always responds with +// `response` +func NewStaticMockServer(response string) *StaticMockServer { + result := &StaticMockServer{} + result.Server = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + result.LastRequest = r + fmt.Fprintln(w, response) + })) + + return result +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/test/t.go b/vendor/src/github.com/stellar/go/services/horizon/internal/test/t.go new file mode 100644 index 0000000..3151be1 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/test/t.go @@ -0,0 +1,99 @@ +package test + +import ( + "io" + + "encoding/json" + + "github.com/stellar/go/support/db" + "github.com/stellar/go/services/horizon/internal/ledger" +) + +// CoreSession returns a db.Session instance pointing at the stellar core test database +func (t *T) CoreSession() *db.Session { + return &db.Session{ + DB: t.CoreDB, + Ctx: t.Ctx, + } +} + +// Finish finishes the test, logging any accumulated horizon logs to the logs +// output +func (t *T) Finish() { + RestoreLogger() + // Reset cached ledger state + ledger.SetState(ledger.State{}) + + if t.LogBuffer.Len() > 0 { + t.T.Log("\n" + t.LogBuffer.String()) + } +} + +// HorizonSession returns a db.Session instance pointing at the horizon test +// database +func (t *T) HorizonSession() *db.Session { + return &db.Session{ + DB: t.HorizonDB, + Ctx: t.Ctx, + } +} + +// Scenario loads the named sql scenario into the database +func (t *T) Scenario(name string) *T { + LoadScenario(name) + t.UpdateLedgerState() + return t +} + +// ScenarioWithoutHorizon loads the named sql scenario into the database +func (t *T) ScenarioWithoutHorizon(name string) *T { + LoadScenarioWithoutHorizon(name) + t.UpdateLedgerState() + return t +} + +// UnmarshalPage populates dest with the records contained in the json-encoded +// page in r. +func (t *T) UnmarshalPage(r io.Reader, dest interface{}) { + var env struct { + Embedded struct { + Records json.RawMessage `json:"records"` + } `json:"_embedded"` + } + + err := json.NewDecoder(r).Decode(&env) + t.Require.NoError(err, "failed to decode page") + + err = json.Unmarshal(env.Embedded.Records, dest) + t.Require.NoError(err, "failed to decode records") +} + +// UpdateLedgerState updates the cached ledger state (or panicing on failure). +func (t *T) UpdateLedgerState() { + var next ledger.State + + err := t.CoreSession().GetRaw(&next, ` + SELECT + COALESCE(MIN(ledgerseq), 0) as core_elder, + COALESCE(MAX(ledgerseq), 0) as core_latest + FROM ledgerheaders + `) + + if err != nil { + panic(err) + } + + err = t.HorizonSession().GetRaw(&next, ` + SELECT + COALESCE(MIN(sequence), 0) as history_elder, + COALESCE(MAX(sequence), 0) as history_latest + FROM history_ledgers + `) + + if err != nil { + panic(err) + } + + ledger.SetState(next) + return +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/tls/localhost.conf b/vendor/src/github.com/stellar/go/services/horizon/internal/tls/localhost.conf new file mode 100644 index 0000000..30f5f23 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/tls/localhost.conf @@ -0,0 +1,17 @@ +[ req ] +distinguished_name = req_distinguished_name + +[ req_distinguished_name ] +C = US +C_default = US +ST = California +ST_default = California +L = San Francisco +L_default = San Francisco +O = Stellar Development Foundation +O_default = Stellar Development Foundation +OU = Engineering +OU_default = Engineering +CN = localhost:8000 +CN_default = localhost:8000 +emailAddress_default = diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/tls/regen.sh b/vendor/src/github.com/stellar/go/services/horizon/internal/tls/regen.sh new file mode 100644 index 0000000..6027f42 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/tls/regen.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +set -e + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +pushd $DIR + +openssl genrsa -des3 -passout pass:x -out new.pass.key 2048 +openssl rsa -passin pass:x -in new.pass.key -out new.key +rm new.pass.key +openssl req -new -key new.key -out new.csr -config localhost.conf +openssl x509 -req -days 365 -in new.csr -signkey new.key -out new.crt + +mv new.csr server.csr +mv new.crt server.crt +mv new.key server.key diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/toid/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/toid/main.go new file mode 100644 index 0000000..04c4277 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/toid/main.go @@ -0,0 +1,149 @@ +package toid + +import ( + "fmt" +) + +// +// ID represents the total order of Ledgers, Transactions and +// Operations. +// +// Operations within the stellar network have a total order, expressed by three +// pieces of information: the ledger sequence the operation was validated in, +// the order which the operation's containing transaction was applied in +// that ledger, and the index of the operation within that parent transaction. +// +// We express this order by packing those three pieces of information into a +// single signed 64-bit number (we used a signed number for SQL compatibility). +// +// The follow diagram shows this format: +// +// 0 1 2 3 +// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +// | Ledger Sequence Number | +// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +// | Transaction Application Order | Op Index | +// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +// +// By component: +// +// Ledger Sequence: 32-bits +// +// A complete ledger sequence number in which the operation was validated. +// +// Expressed in network byte order. +// +// Transaction Application Order: 20-bits +// +// The order that the transaction was applied within the ledger it was +// validated. Accommodates up to 1,048,575 transactions in a single ledger. +// +// Expressed in network byte order. +// +// Operation Index: 12-bits +// +// The index of the operation within its parent transaction. Accommodates up +// to 4095 operations per transaction. +// +// Expressed in network byte order. +// +// +// Note: API Clients should not be interpreting this value. We will use it +// as an opaque paging token that clients can parrot back to us after having read +// it within a resource to page from the represented position in time. +// +// Note: This does not uniquely identify an object. Given a ledger, it will +// share its id with its first transaction and the first operation of that +// transaction as well. Given that this ID is only meant for ordering within a +// single type of object, the sharing of ids across object types seems +// acceptable. +// +type ID struct { + LedgerSequence int32 + TransactionOrder int32 + OperationOrder int32 +} + +const ( + // LedgerMask is the bitmask to mask out ledger sequences in a + // TotalOrderID + LedgerMask = (1 << 32) - 1 + // TransactionMask is the bitmask to mask out transaction indexes + TransactionMask = (1 << 20) - 1 + // OperationMask is the bitmask to mask out operation indexes + OperationMask = (1 << 12) - 1 + + // LedgerShift is the number of bits to shift an int64 to target the + // ledger component + LedgerShift = 32 + // TransactionShift is the number of bits to shift an int64 to + // target the transaction component + TransactionShift = 12 + // OperationShift is the number of bits to shift an int64 to target + // the operation component + OperationShift = 0 +) + +// AfterLedger returns a new toid that represents the ledger time _after_ any +// contents (e.g. transactions, operations) that occur within the specified +// ledger. +func AfterLedger(seq int32) *ID { + return New(seq, TransactionMask, OperationMask) +} + +// IncOperationOrder increments the operation order, rolling over to the next +// ledger if overflow occurs. This allows queries to easily advance a cursor to +// the next operation. +func (id *ID) IncOperationOrder() { + id.OperationOrder++ + + if id.OperationOrder > OperationMask { + id.OperationOrder = 0 + id.LedgerSequence++ + } +} + +// New creates a new total order ID +func New(ledger int32, tx int32, op int32) *ID { + return &ID{ + LedgerSequence: ledger, + TransactionOrder: tx, + OperationOrder: op, + } +} + +// ToInt64 converts this struct back into an int64 +func (id *ID) ToInt64() (result int64) { + + if id.LedgerSequence < 0 { + panic("invalid ledger sequence") + } + + if id.TransactionOrder > TransactionMask { + panic("transaction order overflow") + } + + if id.OperationOrder > OperationMask { + panic("operation order overflow") + } + + result = result | ((int64(id.LedgerSequence) & LedgerMask) << LedgerShift) + result = result | ((int64(id.TransactionOrder) & TransactionMask) << TransactionShift) + result = result | ((int64(id.OperationOrder) & OperationMask) << OperationShift) + return +} + +// String returns a string representation of this id +func (id *ID) String() string { + return fmt.Sprintf("%d", id.ToInt64()) +} + +// Parse parses an int64 into a TotalOrderID struct +func Parse(id int64) (result ID) { + result.LedgerSequence = int32((id >> LedgerShift) & LedgerMask) + result.TransactionOrder = int32((id >> TransactionShift) & TransactionMask) + result.OperationOrder = int32((id >> OperationShift) & OperationMask) + + return +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/toid/main_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/toid/main_test.go new file mode 100644 index 0000000..a167cad --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/toid/main_test.go @@ -0,0 +1,94 @@ +package toid + +import ( + "fmt" + _ "github.com/lib/pq" + . "github.com/smartystreets/goconvey/convey" + "math" + "testing" +) + +func TestTotalOrderID(t *testing.T) { + ledger := int64(4294967296) // ledger sequence 1 + tx := int64(4096) // tx index 1 + op := int64(1) // op index 1 + + Convey("TotalOrderID.ToInt64", t, func() { + Convey("accomodates 12-bits of precision for the operation", func() { + So((&ID{0, 0, 1}).ToInt64(), ShouldEqual, 1) + So((&ID{0, 0, 4095}).ToInt64(), ShouldEqual, 4095) + So(func() { (&ID{0, 0, 4096}).ToInt64() }, ShouldPanic) + }) + + Convey("accomodates 20-bits of precision for the transaction", func() { + So((&ID{0, 1, 0}).ToInt64(), ShouldEqual, 4096) + So((&ID{0, 1048575, 0}).ToInt64(), ShouldEqual, 4294963200) + So(func() { (&ID{0, 1048576, 0}).ToInt64() }, ShouldPanic) + }) + + Convey("accomodates 32-bits of precision for the ledger", func() { + So((&ID{1, 0, 0}).ToInt64(), ShouldEqual, 4294967296) + So((&ID{math.MaxInt32, 0, 0}).ToInt64(), ShouldEqual, 9223372032559808512) + So(func() { (&ID{-1, 0, 0}).ToInt64() }, ShouldPanic) + So(func() { (&ID{math.MinInt32, 0, 0}).ToInt64() }, ShouldPanic) + }) + + Convey("works as expected", func() { + So((&ID{1, 1, 1}).ToInt64(), ShouldEqual, ledger+tx+op) + So((&ID{1, 1, 0}).ToInt64(), ShouldEqual, ledger+tx) + So((&ID{1, 0, 1}).ToInt64(), ShouldEqual, ledger+op) + So((&ID{1, 0, 0}).ToInt64(), ShouldEqual, ledger) + So((&ID{0, 1, 0}).ToInt64(), ShouldEqual, tx) + So((&ID{0, 0, 1}).ToInt64(), ShouldEqual, op) + So((&ID{0, 0, 0}).ToInt64(), ShouldEqual, 0) + }) + }) + + Convey("Parse", t, func() { + toid := Parse(ledger + tx + op) + So(toid.LedgerSequence, ShouldEqual, 1) + So(toid.TransactionOrder, ShouldEqual, 1) + So(toid.OperationOrder, ShouldEqual, 1) + + toid = Parse(ledger + tx) + So(toid.LedgerSequence, ShouldEqual, 1) + So(toid.TransactionOrder, ShouldEqual, 1) + So(toid.OperationOrder, ShouldEqual, 0) + + toid = Parse(ledger + op) + So(toid.LedgerSequence, ShouldEqual, 1) + So(toid.TransactionOrder, ShouldEqual, 0) + So(toid.OperationOrder, ShouldEqual, 1) + + toid = Parse(ledger) + So(toid.LedgerSequence, ShouldEqual, 1) + So(toid.TransactionOrder, ShouldEqual, 0) + So(toid.OperationOrder, ShouldEqual, 0) + + toid = Parse(tx) + So(toid.LedgerSequence, ShouldEqual, 0) + So(toid.TransactionOrder, ShouldEqual, 1) + So(toid.OperationOrder, ShouldEqual, 0) + + toid = Parse(op) + So(toid.LedgerSequence, ShouldEqual, 0) + So(toid.TransactionOrder, ShouldEqual, 0) + So(toid.OperationOrder, ShouldEqual, 1) + }) + + Convey("IncOperationOrder", t, func() { + tid := ID{0, 0, 0} + tid.IncOperationOrder() + So(tid.OperationOrder, ShouldEqual, 1) + tid.OperationOrder = OperationMask + tid.IncOperationOrder() + So(tid.OperationOrder, ShouldEqual, 0) + So(tid.LedgerSequence, ShouldEqual, 1) + }) +} + +func ExampleParse() { + toid := Parse(12884910080) + fmt.Printf("ledger:%d, tx:%d, op:%d", toid.LedgerSequence, toid.TransactionOrder, toid.OperationOrder) + // Output: ledger:3, tx:2, op:0 +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/doc.go b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/doc.go new file mode 100644 index 0000000..83871d9 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/doc.go @@ -0,0 +1,13 @@ +// Package txsub provides the machinery that horizon uses to submit transactions to +// the stellar network and track their progress. It also helps to hide some of the +// complex asynchronous nature of transaction submission, waiting to respond to +// submitters when no definitive state is known. +package txsub + +// Package layout: +// - main.go: interface and result types +// - errors.go: error definitions exposed by txsub +// - system.go: txsub.System, the struct that ties all the interfaces together +// - internal.go: helper functions +// - open_submission_list.go: A default implementation of the OpenSubmissionList interface +// - submitter.go: A default implementation of the Submitter interface diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/errors.go b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/errors.go new file mode 100644 index 0000000..7e4dbc4 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/errors.go @@ -0,0 +1,81 @@ +package txsub + +import ( + "errors" + "fmt" + "github.com/stellar/go/xdr" + "github.com/stellar/go/services/horizon/internal/codes" +) + +var ( + ErrNoResults = errors.New("No result found") + ErrCanceled = errors.New("canceled") + ErrTimeout = errors.New("timeout") + + // ErrBadSequence is a canned error response for transactions whose sequence + // number is wrong. + ErrBadSequence = &FailedTransactionError{"AAAAAAAAAAD////7AAAAAA=="} + // ErrNoAccount is returned when the source account for the transaction + // cannot be found in the database + ErrNoAccount = &FailedTransactionError{"AAAAAAAAAAD////4AAAAAA=="} +) + +// FailedTransactionError represent an error that occurred because +// stellar-core rejected the transaction. ResultXDR is a base64 +// encoded TransactionResult struct +type FailedTransactionError struct { + ResultXDR string +} + +func (err *FailedTransactionError) Error() string { + return fmt.Sprintf("tx failed: %s", err.ResultXDR) +} + +func (fte *FailedTransactionError) Result() (result xdr.TransactionResult, err error) { + err = xdr.SafeUnmarshalBase64(fte.ResultXDR, &result) + return +} + +func (fte *FailedTransactionError) TransactionResultCode() (result string, err error) { + r, err := fte.Result() + if err != nil { + return + } + + result, err = codes.String(r.Result.Code) + return +} + +func (fte *FailedTransactionError) OperationResultCodes() (result []string, err error) { + r, err := fte.Result() + if err != nil { + return + } + + oprs, ok := r.Result.GetResults() + + if !ok { + return + } + + result = make([]string, len(oprs)) + + for i, opr := range oprs { + result[i], err = codes.ForOperationResult(opr) + if err != nil { + return + } + } + + return +} + +// MalformedTransactionError represent an error that occurred because +// a TransactionEnvelope could not be decoded from the provided data. +type MalformedTransactionError struct { + EnvelopeXDR string +} + +func (err *MalformedTransactionError) Error() string { + return "tx malformed" +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/internal.go b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/internal.go new file mode 100644 index 0000000..fc4d2f8 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/internal.go @@ -0,0 +1,40 @@ +package txsub + +import ( + "github.com/stellar/go/build" + "github.com/stellar/go/strkey" + "github.com/stellar/go/xdr" + "golang.org/x/net/context" +) + +type envelopeInfo struct { + Hash string + Sequence uint64 + SourceAddress string +} + +func extractEnvelopeInfo(ctx context.Context, env string, passphrase string) (result envelopeInfo, err error) { + var tx xdr.TransactionEnvelope + + err = xdr.SafeUnmarshalBase64(env, &tx) + + if err != nil { + err = &MalformedTransactionError{env} + return + } + + txb := build.TransactionBuilder{TX: &tx.Tx} + txb.Mutate(build.Network{passphrase}) + + result.Hash, err = txb.HashHex() + if err != nil { + return + } + + result.Sequence = uint64(tx.Tx.SeqNum) + + aid := tx.Tx.SourceAccount.MustEd25519() + result.SourceAddress, err = strkey.Encode(strkey.VersionByteAccountID, aid[:]) + + return +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/main.go new file mode 100644 index 0000000..4171a16 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/main.go @@ -0,0 +1,118 @@ +package txsub + +import ( + "github.com/stellar/go/xdr" + "golang.org/x/net/context" + "time" +) + +// ResultProvider represents an abstract store that can lookup Result objects +// by transaction hash or by [address,sequence] pairs. A ResultProvider is +// used within the transaction submission system to decide whether a submission should +// be submitted to the backing stellar-core process, as well as looking up the status +// of each transaction in the open submission list at each tick (i.e. ledger close) +type ResultProvider interface { + // Look up a result by transaction hash + ResultByHash(context.Context, string) Result +} + +// SequenceProvider represents an abstract store that can lookup the current +// sequence number of an account. It is used by the SequenceLock to +type SequenceProvider interface { + // Look up a sequence by address + Get(addresses []string) (map[string]uint64, error) +} + +// Listener represents some client who is interested in retrieving the result +// of a specific transaction. +type Listener chan<- Result + +// OpenSubmissionList represents the structure that tracks pending transactions +// and forwards Result structs on to listeners as they become available. +// +// NOTE: An implementation of this interface will be called from multiple go-routines +// concurrently. +// +// NOTE: A Listener must be a buffered channel. A panic will trigger if you +// provide an unbuffered channel +type OpenSubmissionList interface { + // Add registers the provided listener as interested in being notified when a + // result is available for the provided transaction hash. + Add(context.Context, string, Listener) error + + // Finish forwards the provided result on to any listeners and cleans up any + // resources associated with the transaction that this result is for + Finish(context.Context, Result) error + + // Clean removes any open submissions over the provided age. + Clean(context.Context, time.Duration) (int, error) + + // Pending return a list of transaction hashes that have at least one + // listener registered to them in this list. + Pending(context.Context) []string +} + +// Submitter represents the low-level "submit a transaction to stellar-core" +// provider. +type Submitter interface { + // Submit sends the provided transaction envelope to stellar-core + Submit(context.Context, string) SubmissionResult +} + +// Result represents the response from a ResultProvider. Given no +// Err is set, the rest of the struct should be populated appropriately. +type Result struct { + // Any error that occurred during the retrieval of this result + Err error + + // The transaction hash to which this result corresponds + Hash string + + // The ledger sequence in which the transaction this result represents was + // applied + LedgerSequence int32 + + // The base64-encoded TransactionEnvelope for the transaction this result + // corresponds to + EnvelopeXDR string + + // The base64-encoded TransactionResult for the transaction this result + // corresponds to + ResultXDR string + + // The base64-encoded TransactionMeta for the transaction this result + // corresponds to + ResultMetaXDR string +} + +// SubmissionResult gets returned in response to a call to Submitter.Submit. +// It represents a single discrete submission of a transaction envelope to +// the stellar network. +type SubmissionResult struct { + // Any error that occurred during the attempted submission. A nil value + // indicates that the submission will or already is being considered for + // inclusion in the ledger (i.e. A successful submission). + Err error + + // Duration records the time it took to submit a transaction + // to stellar-core + Duration time.Duration +} + +func (s SubmissionResult) IsBadSeq() (bool, error) { + if s.Err == nil { + return false, nil + } + + fte, ok := s.Err.(*FailedTransactionError) + if !ok { + return false, nil + } + + result, err := fte.Result() + if err != nil { + return false, err + } + + return result.Result.Code == xdr.TransactionResultCodeTxBadSeq, nil +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/open_submission_list.go b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/open_submission_list.go new file mode 100644 index 0000000..4c047e4 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/open_submission_list.go @@ -0,0 +1,105 @@ +package txsub + +import ( + "github.com/go-errors/errors" + "golang.org/x/net/context" + "sync" + "time" +) + +// NewDefaultSubmissionList returns a list that manages open submissions purely +// in memory. +func NewDefaultSubmissionList() OpenSubmissionList { + return &submissionList{ + submissions: map[string]*openSubmission{}, + } +} + +// openSubmission tracks a slice of channels that should be emitted to when we +// know the result for the transactions with the provided hash +type openSubmission struct { + Hash string + SubmittedAt time.Time + Listeners []Listener +} + +type submissionList struct { + sync.Mutex + submissions map[string]*openSubmission +} + +func (s *submissionList) Add(ctx context.Context, hash string, l Listener) error { + s.Lock() + defer s.Unlock() + + if cap(l) == 0 { + panic("Unbuffered listener cannot be added to OpenSubmissionList") + } + + if len(hash) != 64 { + return errors.New("Unexpected transaction hash length: must be 64 hex characters") + } + + os, ok := s.submissions[hash] + + if !ok { + os = &openSubmission{ + Hash: hash, + SubmittedAt: time.Now(), + Listeners: []Listener{}, + } + s.submissions[hash] = os + } + + os.Listeners = append(os.Listeners, l) + + return nil +} + +func (s *submissionList) Finish(ctx context.Context, r Result) error { + s.Lock() + defer s.Unlock() + + os, ok := s.submissions[r.Hash] + if !ok { + return nil + } + + for _, l := range os.Listeners { + l <- r + close(l) + } + + delete(s.submissions, r.Hash) + return nil +} + +func (s *submissionList) Clean(ctx context.Context, maxAge time.Duration) (int, error) { + s.Lock() + defer s.Unlock() + + for _, os := range s.submissions { + if time.Since(os.SubmittedAt) > maxAge { + r := Result{Err: ErrTimeout} + delete(s.submissions, os.Hash) + for _, l := range os.Listeners { + l <- r + close(l) + } + } + } + + return len(s.submissions), nil +} + +func (s *submissionList) Pending(ctx context.Context) []string { + s.Lock() + defer s.Unlock() + results := make([]string, 0, len(s.submissions)) + + for hash, _ := range s.submissions { + results = append(results, hash) + } + + return results +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/open_submission_list_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/open_submission_list_test.go new file mode 100644 index 0000000..929324d --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/open_submission_list_test.go @@ -0,0 +1,140 @@ +package txsub + +import ( + . "github.com/smartystreets/goconvey/convey" + "github.com/stellar/go/services/horizon/internal/test" + "testing" + "time" +) + +func TestDefaultSubmissionList(t *testing.T) { + ctx := test.Context() + + Convey("submissionList (The default OpenSubmissionList implementation)", t, func() { + list := NewDefaultSubmissionList() + realList := list.(*submissionList) + hashes := []string{ + "0000000000000000000000000000000000000000000000000000000000000000", + "0000000000000000000000000000000000000000000000000000000000000001", + } + + listeners := []chan Result{ + make(chan Result, 1), + make(chan Result, 1), + } + + Convey("Add()", func() { + Convey("adds an entry to the submission list when a new hash is used", func() { + list.Add(ctx, hashes[0], listeners[0]) + sub := realList.submissions[hashes[0]] + So(sub.Hash, ShouldEqual, hashes[0]) + So(sub.SubmittedAt, ShouldHappenWithin, 1*time.Second, time.Now()) + + // drop the send side of the channel by casting to listener + var l Listener = listeners[0] + So(sub.Listeners[0], ShouldEqual, l) + }) + + Convey("adds an listener to an existing entry when a hash is used with a new listener", func() { + list.Add(ctx, hashes[0], listeners[0]) + sub := realList.submissions[hashes[0]] + st := sub.SubmittedAt + <-time.After(20 * time.Millisecond) + list.Add(ctx, hashes[0], listeners[1]) + + // increases the size of the listener + So(len(sub.Listeners), ShouldEqual, 2) + // doesn't update the submitted at time + So(st == sub.SubmittedAt, ShouldEqual, true) + }) + + Convey("panics when the listener is not buffered", func() { + So(func() { list.Add(ctx, hashes[0], make(Listener)) }, ShouldPanic) + }) + + Convey("errors when the provided hash is not 64-bytes", func() { + err := list.Add(ctx, "123", listeners[0]) + So(err, ShouldNotBeNil) + }) + }) + + Convey("Finish()", func() { + list.Add(ctx, hashes[0], listeners[0]) + list.Add(ctx, hashes[0], listeners[1]) + r := Result{ + Hash: hashes[0], + } + list.Finish(ctx, r) + + Convey("writes to every listener", func() { + r1, ok1 := <-listeners[0] + So(r1, ShouldResemble, r) + So(ok1, ShouldBeTrue) + + r2, ok2 := <-listeners[1] + So(r2, ShouldResemble, r) + So(ok2, ShouldBeTrue) + }) + + Convey("removes the entry", func() { + _, ok := realList.submissions[hashes[0]] + So(ok, ShouldBeFalse) + }) + + Convey("closes every listener", func() { + _, _ = <-listeners[0] + _, more := <-listeners[0] + So(more, ShouldBeFalse) + + _, _ = <-listeners[1] + _, more = <-listeners[1] + So(more, ShouldBeFalse) + }) + + Convey("works when the noone is waiting for the result", func() { + err := list.Finish(ctx, r) + So(err, ShouldBeNil) + }) + + }) + + Convey("Clean()", func() { + list.Add(ctx, hashes[0], listeners[0]) + <-time.After(200 * time.Millisecond) + list.Add(ctx, hashes[1], listeners[1]) + left, err := list.Clean(ctx, 200*time.Millisecond) + + So(err, ShouldBeNil) + So(left, ShouldEqual, 1) + + Convey("removes submissions older than the maxAge provided", func() { + _, ok := realList.submissions[hashes[0]] + So(ok, ShouldBeFalse) + }) + + Convey("leaves submissions that are younger than the maxAge provided", func() { + _, ok := realList.submissions[hashes[1]] + So(ok, ShouldBeTrue) + }) + + Convey("closes any cleaned listeners", func() { + So(len(listeners[0]), ShouldEqual, 1) + <-listeners[0] + select { + case _, stillOpen := <-listeners[0]: + So(stillOpen, ShouldBeFalse) + default: + panic("cleaned listener is still open") + } + }) + }) + + Convey("Pending() works as expected", func() { + So(len(list.Pending(ctx)), ShouldEqual, 0) + list.Add(ctx, hashes[0], listeners[0]) + So(len(list.Pending(ctx)), ShouldEqual, 1) + list.Add(ctx, hashes[1], listeners[1]) + So(len(list.Pending(ctx)), ShouldEqual, 2) + }) + }) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/results/db/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/results/db/main.go new file mode 100644 index 0000000..99d8d84 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/results/db/main.go @@ -0,0 +1,94 @@ +// Package results provides an implementation of the txsub.ResultProvider interface +// backed using the SQL databases used by both stellar core and horizon +package results + +import ( + "bytes" + "encoding/base64" + + "github.com/stellar/go/xdr" + "github.com/stellar/go/services/horizon/internal/db2/core" + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stellar/go/services/horizon/internal/txsub" + "golang.org/x/net/context" +) + +// DB provides transactio submission results by querying the +// connected horizon and stellar core databases. +type DB struct { + Core *core.Q + History *history.Q +} + +// ResultByHash implements txsub.ResultProvider +func (rp *DB) ResultByHash(ctx context.Context, hash string) txsub.Result { + // query history database + var hr history.Transaction + err := rp.History.TransactionByHash(&hr, hash) + if err == nil { + return txResultFromHistory(hr) + } + + if !rp.History.NoRows(err) { + return txsub.Result{Err: err} + } + + // query core database + var cr core.Transaction + err = rp.Core.TransactionByHash(&cr, hash) + if err == nil { + return txResultFromCore(cr) + } + + if !rp.Core.NoRows(err) { + return txsub.Result{Err: err} + } + + // if no result was found in either db, return ErrNoResults + return txsub.Result{Err: txsub.ErrNoResults} +} + +func txResultFromHistory(tx history.Transaction) txsub.Result { + return txsub.Result{ + Hash: tx.TransactionHash, + LedgerSequence: tx.LedgerSequence, + EnvelopeXDR: tx.TxEnvelope, + ResultXDR: tx.TxResult, + ResultMetaXDR: tx.TxMeta, + } +} + +func txResultFromCore(tx core.Transaction) txsub.Result { + // re-encode result to base64 + var raw bytes.Buffer + _, err := xdr.Marshal(&raw, tx.Result.Result) + + if err != nil { + return txsub.Result{Err: err} + } + + trx := base64.StdEncoding.EncodeToString(raw.Bytes()) + + // if result is success, send a normal resposne + if tx.Result.Result.Result.Code == xdr.TransactionResultCodeTxSuccess { + return txsub.Result{ + Hash: tx.TransactionHash, + LedgerSequence: tx.LedgerSequence, + EnvelopeXDR: tx.EnvelopeXDR(), + ResultXDR: trx, + ResultMetaXDR: tx.ResultMetaXDR(), + } + } + + // if failed, produce a FailedTransactionError + return txsub.Result{ + Err: &txsub.FailedTransactionError{ + ResultXDR: trx, + }, + Hash: tx.TransactionHash, + LedgerSequence: tx.LedgerSequence, + EnvelopeXDR: tx.EnvelopeXDR(), + ResultXDR: trx, + ResultMetaXDR: tx.ResultMetaXDR(), + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/results/db/main_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/results/db/main_test.go new file mode 100644 index 0000000..0b56847 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/results/db/main_test.go @@ -0,0 +1,27 @@ +package results + +import ( + "testing" + + "github.com/stellar/go/services/horizon/internal/db2/core" + "github.com/stellar/go/services/horizon/internal/db2/history" + "github.com/stellar/go/services/horizon/internal/test" +) + +func TestResultProvider(t *testing.T) { + tt := test.Start(t).ScenarioWithoutHorizon("base") + defer tt.Finish() + + rp := &DB{ + Core: &core.Q{Session: tt.CoreSession()}, + History: &history.Q{Session: tt.HorizonSession()}, + } + + // Regression: ensure a transaction that is not ingested still returns the + // result + hash := "2374e99349b9ef7dba9a5db3339b78fda8f34777b1af33ba468ad5c0df946d4d" + ret := rp.ResultByHash(tt.Ctx, hash) + + tt.Require.NoError(ret.Err) + tt.Assert.Equal(hash, ret.Hash) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/sequence/doc.go b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/sequence/doc.go new file mode 100644 index 0000000..805e571 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/sequence/doc.go @@ -0,0 +1,3 @@ +// Package sequence providers helpers to manage sequence numbers on behalf of horizon clients. +// See Manager for more details on the api. +package sequence diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/sequence/errors.go b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/sequence/errors.go new file mode 100644 index 0000000..2a7e125 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/sequence/errors.go @@ -0,0 +1,10 @@ +package sequence + +import ( + "errors" +) + +var ( + ErrNoMoreRoom = errors.New("queue full") + ErrBadSequence = errors.New("bad sequence") +) diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/sequence/manager.go b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/sequence/manager.go new file mode 100644 index 0000000..01920d6 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/sequence/manager.go @@ -0,0 +1,115 @@ +package sequence + +import ( + "fmt" + "strings" + "sync" +) + +// Manager provides a system for tracking the transaction submission queue for +// a set of addresses. Requests to submit at a certain sequence number are +// registered using the Push() method, and as the system is updated with +// account sequence information (through the Update() method) requests are +// notified that they can safely submit to stellar-core. +type Manager struct { + mutex sync.Mutex + MaxSize int + queues map[string]*Queue +} + +// NewManager returns a new manager +func NewManager() *Manager { + return &Manager{ + MaxSize: 1024, //TODO: make MaxSize configurable + queues: map[string]*Queue{}, + } +} + +func (m *Manager) String() string { + m.mutex.Lock() + defer m.mutex.Unlock() + var addys []string + + for addy, q := range m.queues { + addys = append(addys, fmt.Sprintf("%5s:%d", addy, q.nextSequence)) + } + + return "[ " + strings.Join(addys, ",") + " ]" +} + +// Size returns the count of submissions buffered within +// this manager. +func (m *Manager) Size() int { + m.mutex.Lock() + defer m.mutex.Unlock() + return m.size() +} + +func (m *Manager) Addresses() []string { + m.mutex.Lock() + defer m.mutex.Unlock() + addys := make([]string, 0, len(m.queues)) + + for addy, _ := range m.queues { + addys = append(addys, addy) + } + + return addys +} + +// Push registers an intent to submit a transaction for the provided address at +// the provided sequence. A channel is returned that will be written to when +// the requester should attempt the submission. +func (m *Manager) Push(address string, sequence uint64) <-chan error { + m.mutex.Lock() + defer m.mutex.Unlock() + + if m.size() >= m.MaxSize { + return m.getError(ErrNoMoreRoom) + } + + aq, ok := m.queues[address] + if !ok { + aq = NewQueue() + m.queues[address] = aq + } + + return aq.Push(sequence) +} + +// Update notifies the manager of newly loaded account sequence information. The manager uses this information +// to notify requests to submit that they should proceed. See Queue#Update for the actual meat of the logic. +func (m *Manager) Update(updates map[string]uint64) { + m.mutex.Lock() + defer m.mutex.Unlock() + + for address, seq := range updates { + queue, ok := m.queues[address] + if !ok { + continue + } + + queue.Update(seq) + if queue.Size() == 0 { + delete(m.queues, address) + } + } +} + +// size returns the count of submissions buffered within this manager. This +// internal version assumes you have locked the manager previously. +func (m *Manager) size() int { + var result int + for _, q := range m.queues { + result += q.Size() + } + + return result +} + +func (m *Manager) getError(err error) <-chan error { + ch := make(chan error, 1) + ch <- err + close(ch) + return ch +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/sequence/manager_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/sequence/manager_test.go new file mode 100644 index 0000000..1daea0e --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/sequence/manager_test.go @@ -0,0 +1,53 @@ +package sequence + +import ( + . "github.com/smartystreets/goconvey/convey" + "testing" +) + +func TestManager(t *testing.T) { + Convey("Manager", t, func() { + mgr := NewManager() + + Convey("Push", func() { + mgr.Push("1", 2) + mgr.Push("1", 2) + mgr.Push("1", 3) + mgr.Push("2", 2) + + So(mgr.Size(), ShouldEqual, 4) + So(mgr.queues["1"].Size(), ShouldEqual, 3) + So(mgr.queues["2"].Size(), ShouldEqual, 1) + }) + + Convey("Update", func() { + results := []<-chan error{ + mgr.Push("1", 2), + mgr.Push("1", 3), + mgr.Push("2", 2), + } + + mgr.Update(map[string]uint64{ + "1": 1, + "2": 1, + }) + + So(mgr.Size(), ShouldEqual, 1) + _, ok := mgr.queues["2"] + So(ok, ShouldBeFalse) + + So(<-results[0], ShouldEqual, nil) + So(<-results[2], ShouldEqual, nil) + So(len(results[1]), ShouldEqual, 0) + }) + + Convey("Push returns ErrNoMoreRoom when fill", func() { + for i := 0; i < mgr.MaxSize; i++ { + mgr.Push("1", 2) + } + + So(mgr.Size(), ShouldEqual, 1024) + So(<-mgr.Push("1", 2), ShouldEqual, ErrNoMoreRoom) + }) + }) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/sequence/queue.go b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/sequence/queue.go new file mode 100644 index 0000000..35cdf1b --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/sequence/queue.go @@ -0,0 +1,161 @@ +package sequence + +import ( + "container/heap" + "time" +) + +// Queue manages the submission queue for a single source account. The +// transaction system uses Push to enqueue submissions for given sequence +// numbers. +// +// Queue maintains a priority queue of pending submissions, and when updated +// (via the Update() method) with the current sequence number of the account +// being managed, queued submissions that can be acted upon will be unblocked. +// +type Queue struct { + lastActiveAt time.Time + timeout time.Duration + nextSequence uint64 + queue pqueue +} + +// NewQueue creates a new *Queue +func NewQueue() *Queue { + result := &Queue{ + lastActiveAt: time.Now(), + timeout: 10 * time.Second, + queue: nil, + } + + heap.Init(&result.queue) + + return result +} + +// Size returns the count of currently buffered submissions in the queue. +func (q *Queue) Size() int { + return len(q.queue) +} + +// Push enqueues the intent to submit a transaction at the provided sequence +// number and returns a channel that will emit when it is safe for the client +// to do so. +// +// Push does not perform any triggering (which +// occurs in Update(), even if the current sequence number for this queue is +// the same as the provided sequence, to keep internal complexity much lower. +// Given that, the recommended usage pattern is: +// +// 1. Push the submission onto the queue +// 2. Load the current sequence number for the source account from the DB +// 3. Call Update() with the result from step 2 to trigger the submission if +// possible +func (q *Queue) Push(sequence uint64) <-chan error { + ch := make(chan error, 1) + heap.Push(&q.queue, item{sequence, ch}) + return ch +} + +// Update notifies the queue that the provided sequence number is the latest +// seen value for the account that this queue manages submissions for. +// +// This function is monotonic... calling it with a sequence number lower than +// the latest seen sequence number is a noop. +func (q *Queue) Update(sequence uint64) { + if q.nextSequence <= sequence { + q.nextSequence = sequence + 1 + } + + wasChanged := false + + for { + if q.Size() == 0 { + break + } + + ch, hseq := q.head() + // if the next queued transaction has a sequence higher than the account's + // current sequence, stop removing entries + if hseq > q.nextSequence { + break + } + + // since this entry is unlocked (i.e. it's sequence is the next available + // or in the past we can remove it an mark the queue as changed + q.pop() + wasChanged = true + + if hseq < q.nextSequence { + ch <- ErrBadSequence + close(ch) + } else if hseq == q.nextSequence { + ch <- nil + close(ch) + } + } + + // if we modified the queue, bump the timeout for this queue + if wasChanged { + q.lastActiveAt = time.Now() + return + } + + // if the queue wasn't changed, see if it is too old, clear + // it and make room for other's + if time.Since(q.lastActiveAt) > q.timeout { + for q.Size() > 0 { + ch, _ := q.pop() + ch <- ErrBadSequence + close(ch) + } + } +} + +// helper function for interacting with the priority queue +func (q *Queue) head() (chan error, uint64) { + if len(q.queue) == 0 { + return nil, uint64(0) + } + + return q.queue[0].Chan, q.queue[0].Sequence +} + +// helper function for interacting with the priority queue +func (q *Queue) pop() (chan error, uint64) { + i := heap.Pop(&q.queue).(item) + + return i.Chan, i.Sequence +} + +// item is a element of the priority queue +type item struct { + Sequence uint64 + Chan chan error +} + +// pqueue is a priority queue used by Queue to manage buffered submissions. It +// implements heap.Interface. +type pqueue []item + +func (pq pqueue) Len() int { return len(pq) } + +func (pq pqueue) Less(i, j int) bool { + return pq[i].Sequence < pq[j].Sequence +} + +func (pq pqueue) Swap(i, j int) { + pq[i], pq[j] = pq[j], pq[i] +} + +func (pq *pqueue) Push(x interface{}) { + *pq = append(*pq, x.(item)) +} + +func (pq *pqueue) Pop() interface{} { + old := *pq + n := len(old) + result := old[n-1] + *pq = old[0 : n-1] + return result +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/sequence/queue_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/sequence/queue_test.go new file mode 100644 index 0000000..e04e078 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/sequence/queue_test.go @@ -0,0 +1,66 @@ +package sequence + +import ( + . "github.com/smartystreets/goconvey/convey" + "github.com/stellar/go/services/horizon/internal/test" + "testing" + "time" +) + +func TestQueue(t *testing.T) { + ctx := test.Context() + _ = ctx + Convey("Queue", t, func() { + queue := NewQueue() + + Convey("Push adds the provided channel on to the priority queue", func() { + So(queue.Size(), ShouldEqual, 0) + + queue.Push(2) + So(queue.Size(), ShouldEqual, 1) + _, s := queue.head() + So(s, ShouldEqual, 2) + + queue.Push(1) + So(queue.Size(), ShouldEqual, 2) + _, s = queue.head() + So(s, ShouldEqual, 1) + }) + + Convey("Update removes sequences that are submittable or in the past", func() { + results := []<-chan error{ + queue.Push(1), + queue.Push(2), + queue.Push(3), + queue.Push(4), + } + + queue.Update(2) + + // the update above signifies that 2 is the accounts current sequence, + // meaning that 3 is submittable, and so only 4 should still be queued + So(queue.Size(), ShouldEqual, 1) + _, s := queue.head() + So(s, ShouldEqual, 4) + + queue.Update(4) + So(queue.Size(), ShouldEqual, 0) + + So(<-results[0], ShouldEqual, ErrBadSequence) + So(<-results[1], ShouldEqual, ErrBadSequence) + So(<-results[2], ShouldEqual, nil) + So(<-results[3], ShouldEqual, ErrBadSequence) + + }) + + Convey("Update clears the queue if the head has not been released within the time limit", func() { + queue.timeout = 1 * time.Millisecond + result := queue.Push(2) + <-time.After(10 * time.Millisecond) + queue.Update(0) + + So(queue.Size(), ShouldEqual, 0) + So(<-result, ShouldEqual, ErrBadSequence) + }) + }) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/submitter.go b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/submitter.go new file mode 100644 index 0000000..f95b4e2 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/submitter.go @@ -0,0 +1,99 @@ +package txsub + +import ( + "encoding/json" + "github.com/go-errors/errors" + "golang.org/x/net/context" + "net/http" + "net/url" + "time" +) + +const ( + StatusError = "ERROR" + StatusPending = "PENDING" + StatusDuplicate = "DUPLICATE" +) + +// NewDefaultSubmitter returns a new, simple Submitter implementation +// that submits directly to the stellar-core at `url` using the http client +// `h`. +func NewDefaultSubmitter(h *http.Client, url string) Submitter { + return &submitter{ + http: h, + coreURL: url, + } +} + +// coreSubmissionResponse is the json response from stellar-core's tx endpoint +type coreSubmissionResponse struct { + Exception string `json:"exception"` + Error string `json:"error"` + Status string `json:"status"` +} + +// submitter is the default implementation for the Submitter interface. It +// submits directly to the configured stellar-core instance using the +// configured http client. +type submitter struct { + http *http.Client + coreURL string +} + +// Submit sends the provided envelope to stellar-core and parses the response into +// a SubmissionResult +func (sub *submitter) Submit(ctx context.Context, env string) (result SubmissionResult) { + start := time.Now() + defer func() { result.Duration = time.Since(start) }() + + // construct the request + u, err := url.Parse(sub.coreURL) + if err != nil { + result.Err = errors.Wrap(err, 1) + return + } + + u.Path = "/tx" + q := u.Query() + q.Add("blob", env) + u.RawQuery = q.Encode() + + req, err := http.NewRequest("GET", u.String(), nil) + if err != nil { + result.Err = errors.Wrap(err, 1) + return + } + + // perform the submission + resp, err := sub.http.Do(req) + if err != nil { + result.Err = errors.Wrap(err, 1) + return + } + defer resp.Body.Close() + + // parse response + var cresp coreSubmissionResponse + err = json.NewDecoder(resp.Body).Decode(&cresp) + if err != nil { + result.Err = errors.Wrap(err, 1) + return + } + + // interpet response + if cresp.Exception != "" { + result.Err = errors.Errorf("stellar-core exception: %s", cresp.Exception) + return + } + + switch cresp.Status { + case StatusError: + result.Err = &FailedTransactionError{cresp.Error} + case StatusPending, StatusDuplicate: + //noop. A nil Err indicates success + default: + result.Err = errors.Errorf("Unrecognized stellar-core status response: %s", cresp.Status) + } + + return +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/submitter_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/submitter_test.go new file mode 100644 index 0000000..0909e16 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/submitter_test.go @@ -0,0 +1,99 @@ +package txsub + +import ( + . "github.com/smartystreets/goconvey/convey" + "github.com/stellar/go/services/horizon/internal/test" + "net/http" + "testing" +) + +func TestDefaultSubmitter(t *testing.T) { + ctx := test.Context() + + Convey("submitter (The default Submitter implementation)", t, func() { + + Convey("submits to the configured stellar-core instance correctly", func() { + server := test.NewStaticMockServer(`{ + "status": "PENDING", + "error": null + }`) + defer server.Close() + + s := NewDefaultSubmitter(http.DefaultClient, server.URL) + sr := s.Submit(ctx, "hello") + So(sr.Err, ShouldBeNil) + So(sr.Duration, ShouldBeGreaterThan, 0) + So(server.LastRequest.URL.Query().Get("blob"), ShouldEqual, "hello") + }) + + Convey("succeeds when the stellar-core responds with DUPLICATE status", func() { + server := test.NewStaticMockServer(`{ + "status": "DUPLICATE", + "error": null + }`) + defer server.Close() + + s := NewDefaultSubmitter(http.DefaultClient, server.URL) + sr := s.Submit(ctx, "hello") + So(sr.Err, ShouldBeNil) + }) + + Convey("errors when the stellar-core url is empty", func() { + s := NewDefaultSubmitter(http.DefaultClient, "") + sr := s.Submit(ctx, "hello") + So(sr.Err, ShouldNotBeNil) + }) + + Convey("errors when the stellar-core url is not parseable", func() { + s := NewDefaultSubmitter(http.DefaultClient, "http://Not a url") + sr := s.Submit(ctx, "hello") + So(sr.Err, ShouldNotBeNil) + }) + + Convey("errors when the stellar-core url is not reachable", func() { + s := NewDefaultSubmitter(http.DefaultClient, "http://127.0.0.1:65535") + sr := s.Submit(ctx, "hello") + So(sr.Err, ShouldNotBeNil) + }) + + Convey("errors when the stellar-core returns an unparseable response", func() { + server := test.NewStaticMockServer(`{`) + defer server.Close() + + s := NewDefaultSubmitter(http.DefaultClient, server.URL) + sr := s.Submit(ctx, "hello") + So(sr.Err, ShouldNotBeNil) + }) + + Convey("errors when the stellar-core returns an exception response", func() { + server := test.NewStaticMockServer(`{"exception": "Invalid XDR"}`) + defer server.Close() + + s := NewDefaultSubmitter(http.DefaultClient, server.URL) + sr := s.Submit(ctx, "hello") + So(sr.Err, ShouldNotBeNil) + So(sr.Err.Error(), ShouldContainSubstring, "Invalid XDR") + }) + + Convey("errors when the stellar-core returns an unrecognized status", func() { + server := test.NewStaticMockServer(`{"status": "NOTREAL"}`) + defer server.Close() + + s := NewDefaultSubmitter(http.DefaultClient, server.URL) + sr := s.Submit(ctx, "hello") + So(sr.Err, ShouldNotBeNil) + So(sr.Err.Error(), ShouldContainSubstring, "NOTREAL") + }) + + Convey("errors when the stellar-core returns an error response", func() { + server := test.NewStaticMockServer(`{"status": "ERROR", "error": "1234"}`) + defer server.Close() + + s := NewDefaultSubmitter(http.DefaultClient, server.URL) + sr := s.Submit(ctx, "hello") + So(sr.Err, ShouldHaveSameTypeAs, &FailedTransactionError{}) + ferr := sr.Err.(*FailedTransactionError) + So(ferr.ResultXDR, ShouldEqual, "1234") + }) + }) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/system.go b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/system.go new file mode 100644 index 0000000..c200201 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/system.go @@ -0,0 +1,231 @@ +package txsub + +import ( + "sync" + "time" + + "github.com/rcrowley/go-metrics" + "github.com/stellar/go/services/horizon/internal/log" + "github.com/stellar/go/services/horizon/internal/txsub/sequence" + "golang.org/x/net/context" +) + +// System represents a completely configured transaction submission system. +// Its methods tie together the various pieces used to reliably submit transactions +// to a stellar-core instance. +type System struct { + initializer sync.Once + + Pending OpenSubmissionList + Results ResultProvider + Sequences SequenceProvider + Submitter Submitter + SubmissionQueue *sequence.Manager + NetworkPassphrase string + SubmissionTimeout time.Duration + + Metrics struct { + // SubmissionTimer exposes timing metrics about the rate and latency of + // submissions to stellar-core + SubmissionTimer metrics.Timer + + // BufferedSubmissionGauge tracks the count of submissions buffered + // behind this system's SubmissionQueue + BufferedSubmissionsGauge metrics.Gauge + + // OpenSubmissionsGauge tracks the count of "open" submissions (i.e. + // submissions whose transactions haven't been confirmed successful or failed + OpenSubmissionsGauge metrics.Gauge + + // FailedSubmissionsMeter tracks the rate of failed transactions that have + // been submitted to this process + FailedSubmissionsMeter metrics.Meter + + // SuccessfulSubmissionsMeter tracks the rate of successful transactions that + // have been submitted to this process + SuccessfulSubmissionsMeter metrics.Meter + } +} + +// Submit submits the provided base64 encoded transaction envelope to the +// network using this submission system. +func (sys *System) Submit(ctx context.Context, env string) (result <-chan Result) { + sys.Init() + response := make(chan Result, 1) + result = response + + // calculate hash of transaction + info, err := extractEnvelopeInfo(ctx, env, sys.NetworkPassphrase) + if err != nil { + sys.finish(response, Result{Err: err, EnvelopeXDR: env}) + return + } + + // check the configured result provider for an existing result + r := sys.Results.ResultByHash(ctx, info.Hash) + + if r.Err != ErrNoResults { + sys.finish(response, r) + return + } + + curSeq, err := sys.Sequences.Get([]string{info.SourceAddress}) + if err != nil { + sys.finish(response, Result{Err: err, EnvelopeXDR: env}) + return + } + + // If account's sequence cannot be found, abort with tx_NO_ACCOUNT + // error code + if _, ok := curSeq[info.SourceAddress]; !ok { + sys.finish(response, Result{Err: ErrNoAccount, EnvelopeXDR: env}) + return + } + + // queue the submission and get the channel that will emit when + // submission is valid + seq := sys.SubmissionQueue.Push(info.SourceAddress, info.Sequence) + + // update the submission queue with the source accounts current sequence value + // which will cause the channel returned by Push() to emit if possible. + sys.SubmissionQueue.Update(curSeq) + + select { + case err := <-seq: + if err == sequence.ErrBadSequence { + // convert the internal only ErrBadSequence into the FailedTransactionError + err = ErrBadSequence + } + + if err != nil { + sys.finish(response, Result{Err: err, EnvelopeXDR: env}) + return + } + + sr := sys.submitOnce(ctx, env) + + // if submission succeeded + if sr.Err == nil { + // add transactions to open list + sys.Pending.Add(ctx, info.Hash, response) + // update the submission queue, allowing the next submission to proceed + sys.SubmissionQueue.Update(map[string]uint64{info.SourceAddress: info.Sequence}) + return + } + + // any error other than "txBAD_SEQ" is a failure + isBad, err := sr.IsBadSeq() + if err != nil { + sys.finish(response, Result{Err: err, EnvelopeXDR: env}) + return + } + + if !isBad { + sys.finish(response, Result{Err: sr.Err, EnvelopeXDR: env}) + return + } + + // If error is txBAD_SEQ, check for the result again + r = sys.Results.ResultByHash(ctx, info.Hash) + + if r.Err == nil { + // If the found use it as the result + sys.finish(response, r) + } else { + // finally, return the bad_seq error if no result was found on 2nd attempt + sys.finish(response, Result{Err: sr.Err, EnvelopeXDR: env}) + } + + case <-ctx.Done(): + sys.finish(response, Result{Err: ErrCanceled, EnvelopeXDR: env}) + } + + return +} + +// Submit submits the provided base64 encoded transaction envelope to the +// network using this submission system. +func (sys *System) submitOnce(ctx context.Context, env string) SubmissionResult { + // submit to stellar-core + sr := sys.Submitter.Submit(ctx, env) + sys.Metrics.SubmissionTimer.Update(sr.Duration) + + // if received or duplicate, add to the open submissions list + if sr.Err == nil { + sys.Metrics.SuccessfulSubmissionsMeter.Mark(1) + } else { + sys.Metrics.FailedSubmissionsMeter.Mark(1) + } + + return sr +} + +// Tick triggers the system to update itself with any new data available. +func (sys *System) Tick(ctx context.Context) { + sys.Init() + logger := log.Ctx(ctx) + + logger. + WithField("queued", sys.SubmissionQueue.String()). + Debug("ticking txsub system") + + addys := sys.SubmissionQueue.Addresses() + if len(addys) > 0 { + curSeq, err := sys.Sequences.Get(addys) + if err != nil { + logger.WithStack(err).Error(err) + } else { + sys.SubmissionQueue.Update(curSeq) + } + } + + for _, hash := range sys.Pending.Pending(ctx) { + r := sys.Results.ResultByHash(ctx, hash) + + if r.Err == nil { + logger.WithField("hash", hash).Debug("finishing open submission") + sys.Pending.Finish(ctx, r) + continue + } + + _, ok := r.Err.(*FailedTransactionError) + + if ok { + logger.WithField("hash", hash).Debug("finishing open submission") + sys.Pending.Finish(ctx, r) + continue + } + + if r.Err != ErrNoResults { + logger.WithStack(r.Err).Error(r.Err) + } + } + + stillOpen, err := sys.Pending.Clean(ctx, sys.SubmissionTimeout) + if err != nil { + logger.WithStack(err).Error(err) + } + + sys.Metrics.OpenSubmissionsGauge.Update(int64(stillOpen)) + sys.Metrics.BufferedSubmissionsGauge.Update(int64(sys.SubmissionQueue.Size())) +} + +// Init initializes `sys` +func (sys *System) Init() { + sys.initializer.Do(func() { + sys.Metrics.FailedSubmissionsMeter = metrics.NewMeter() + sys.Metrics.SuccessfulSubmissionsMeter = metrics.NewMeter() + sys.Metrics.SubmissionTimer = metrics.NewTimer() + sys.Metrics.OpenSubmissionsGauge = metrics.NewGauge() + sys.Metrics.BufferedSubmissionsGauge = metrics.NewGauge() + + if sys.SubmissionTimeout == 0 { + sys.SubmissionTimeout = 1 * time.Minute + } + }) +} + +func (sys *System) finish(response chan<- Result, r Result) { + response <- r + close(response) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/system_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/system_test.go new file mode 100644 index 0000000..47790e7 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/system_test.go @@ -0,0 +1,138 @@ +package txsub + +import ( + "errors" + "testing" + "time" + + . "github.com/smartystreets/goconvey/convey" + "github.com/stellar/go/build" + "github.com/stellar/go/services/horizon/internal/test" + "github.com/stellar/go/services/horizon/internal/txsub/sequence" +) + +func TestTxsub(t *testing.T) { + Convey("txsub.System", t, func() { + ctx := test.Context() + submitter := &MockSubmitter{} + results := &MockResultProvider{} + sequences := &MockSequenceProvider{} + + system := &System{ + Pending: NewDefaultSubmissionList(), + Submitter: submitter, + Results: results, + Sequences: sequences, + SubmissionQueue: sequence.NewManager(), + NetworkPassphrase: build.TestNetwork.Passphrase, + } + + noResults := Result{Err: ErrNoResults} + successTx := Result{ + Hash: "2374e99349b9ef7dba9a5db3339b78fda8f34777b1af33ba468ad5c0df946d4d", + LedgerSequence: 2, + EnvelopeXDR: "AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAO5rKAAAAAAAAAAABVvwF9wAAAECDzqvkQBQoNAJifPRXDoLhvtycT3lFPCQ51gkdsFHaBNWw05S/VhW0Xgkr0CBPE4NaFV2Kmcs3ZwLmib4TRrML", + ResultXDR: "I3Tpk0m57326ml2zM5t4/ajzR3exrzO6RorVwN+UbU0AAAAAAAAAZAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA==", + } + + badSeq := SubmissionResult{ + Err: ErrBadSequence, + } + + sequences.Results = map[string]uint64{ + "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H": 0, + } + + Convey("Submit", func() { + Convey("returns the result provided by the ResultProvider", func() { + results.Results = []Result{successTx} + r := <-system.Submit(ctx, successTx.EnvelopeXDR) + + So(r.Err, ShouldBeNil) + So(r.Hash, ShouldEqual, successTx.Hash) + So(submitter.WasSubmittedTo, ShouldBeFalse) + }) + + Convey("returns the error from submission if no result is found by hash and the submitter returns an error", func() { + submitter.R.Err = errors.New("busted for some reason") + r := <-system.Submit(ctx, successTx.EnvelopeXDR) + + So(r.Err, ShouldNotBeNil) + So(submitter.WasSubmittedTo, ShouldBeTrue) + So(system.Metrics.SuccessfulSubmissionsMeter.Count(), ShouldEqual, 0) + So(system.Metrics.FailedSubmissionsMeter.Count(), ShouldEqual, 1) + So(system.Metrics.SubmissionTimer.Count(), ShouldEqual, 1) + }) + + Convey("if the error is bad_seq and the result at the transaction's sequence number is for the same hash, return result", func() { + submitter.R = badSeq + results.Results = []Result{noResults, successTx} + + r := <-system.Submit(ctx, successTx.EnvelopeXDR) + + So(r.Err, ShouldBeNil) + So(r.Hash, ShouldEqual, successTx.Hash) + So(submitter.WasSubmittedTo, ShouldBeTrue) + }) + + Convey("if error is bad_seq and no result is found, return error", func() { + submitter.R = badSeq + r := <-system.Submit(ctx, successTx.EnvelopeXDR) + + So(r.Err, ShouldNotBeNil) + So(submitter.WasSubmittedTo, ShouldBeTrue) + }) + + Convey("if no result found and no error submitting, add to open transaction list", func() { + _ = system.Submit(ctx, successTx.EnvelopeXDR) + pending := system.Pending.Pending(ctx) + So(len(pending), ShouldEqual, 1) + So(pending[0], ShouldEqual, successTx.Hash) + So(system.Metrics.SuccessfulSubmissionsMeter.Count(), ShouldEqual, 1) + So(system.Metrics.FailedSubmissionsMeter.Count(), ShouldEqual, 0) + So(system.Metrics.SubmissionTimer.Count(), ShouldEqual, 1) + }) + }) + + Convey("Tick", func() { + + Convey("no-ops if there are no open submissions", func() { + system.Tick(ctx) + }) + + Convey("finishes any available transactions", func() { + l := make(chan Result, 1) + system.Pending.Add(ctx, successTx.Hash, l) + system.Tick(ctx) + So(len(l), ShouldEqual, 0) + So(len(system.Pending.Pending(ctx)), ShouldEqual, 1) + + results.Results = []Result{successTx} + system.Tick(ctx) + + So(len(l), ShouldEqual, 1) + So(len(system.Pending.Pending(ctx)), ShouldEqual, 0) + }) + + Convey("removes old submissions that have timed out", func() { + l := make(chan Result, 1) + system.SubmissionTimeout = 100 * time.Millisecond + system.Pending.Add(ctx, successTx.Hash, l) + <-time.After(101 * time.Millisecond) + system.Tick(ctx) + + So(len(system.Pending.Pending(ctx)), ShouldEqual, 0) + So(len(l), ShouldEqual, 1) + <-l + select { + case _, stillOpen := <-l: + So(stillOpen, ShouldBeFalse) + default: + panic("could not read from listener") + } + + }) + }) + + }) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/test_helpers.go b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/test_helpers.go new file mode 100644 index 0000000..0dba8b9 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/txsub/test_helpers.go @@ -0,0 +1,53 @@ +package txsub + +// This file provides mock implementations for the txsub interfaces +// which are useful in a testing context. +// +// NOTE: this file is not a test file so that other packages may import +// txsub and use these mocks in their own tests + +import ( + "golang.org/x/net/context" +) + +// MockSubmitter is a test helper that simplements the Submitter interface +type MockSubmitter struct { + R SubmissionResult + WasSubmittedTo bool +} + +// Submit implements `txsub.Submitter` +func (sub *MockSubmitter) Submit(ctx context.Context, env string) SubmissionResult { + sub.WasSubmittedTo = true + return sub.R +} + +// MockResultProvider is a test helper that simplements the ResultProvider +// interface +type MockResultProvider struct { + Results []Result +} + +// ResultByHash implements `txsub.ResultProvider` +func (results *MockResultProvider) ResultByHash(ctx context.Context, hash string) (r Result) { + if len(results.Results) > 0 { + r = results.Results[0] + results.Results = results.Results[1:] + } else { + r = Result{Err: ErrNoResults} + } + + return +} + +// MockSequenceProvider is a test helper that simplements the SequenceProvider +// interface +type MockSequenceProvider struct { + Results map[string]uint64 + Err error +} + +// Get implements `txsub.SequenceProvider` +func (results *MockSequenceProvider) Get(addresses []string) (map[string]uint64, error) { + return results.Results, results.Err +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/utf8/main.go b/vendor/src/github.com/stellar/go/services/horizon/internal/utf8/main.go new file mode 100644 index 0000000..cf2ccfd --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/utf8/main.go @@ -0,0 +1,34 @@ +//Package utf8 contains utilities for working with utf8 data. +package utf8 + +import ( + "bytes" + "unicode/utf8" +) + +// Scrub ensures that a given string is valid utf-8, replacing any invalid byte +// sequences with the utf-8 replacement character. +func Scrub(in string) string { + + // First check validity using the stdlib, returning if the string is already + // valid + if utf8.ValidString(in) { + return in + } + + left := []byte(in) + var result bytes.Buffer + + for len(left) > 0 { + r, n := utf8.DecodeRune(left) + + _, err := result.WriteRune(r) + if err != nil { + panic(err) + } + + left = left[n:] + } + + return result.String() +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/internal/utf8/main_test.go b/vendor/src/github.com/stellar/go/services/horizon/internal/utf8/main_test.go new file mode 100644 index 0000000..807f9b4 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/internal/utf8/main_test.go @@ -0,0 +1,15 @@ +package utf8 + +import ( + "github.com/stellar/go/services/horizon/internal/test" + "testing" +) + +func TestScrub(t *testing.T) { + tt := test.Start(t) + defer tt.Finish() + + tt.Assert.Equal("scott", Scrub("scott")) + tt.Assert.Equal("scött", Scrub("scött")) + tt.Assert.Equal("�(", Scrub(string([]byte{0xC3, 0x28}))) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/main.go b/vendor/src/github.com/stellar/go/services/horizon/main.go new file mode 100644 index 0000000..2072189 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/main.go @@ -0,0 +1,226 @@ +package main + +import ( + "log" + "runtime" + + "github.com/PuerkitoBio/throttled" + "github.com/sirupsen/logrus" + "github.com/spf13/cobra" + "github.com/spf13/viper" + "github.com/stellar/go/services/horizon/internal" + hlog "github.com/stellar/go/services/horizon/internal/log" +) + +var app *horizon.App +var config horizon.Config + +var rootCmd *cobra.Command + +func main() { + runtime.GOMAXPROCS(runtime.NumCPU()) + rootCmd.Execute() +} + +func init() { + viper.SetDefault("port", 8000) + viper.SetDefault("history-retention-count", 0) + + viper.BindEnv("port", "PORT") + viper.BindEnv("db-url", "DATABASE_URL") + viper.BindEnv("stellar-core-db-url", "STELLAR_CORE_DATABASE_URL") + viper.BindEnv("stellar-core-url", "STELLAR_CORE_URL") + viper.BindEnv("friendbot-secret", "FRIENDBOT_SECRET") + viper.BindEnv("per-hour-rate-limit", "PER_HOUR_RATE_LIMIT") + viper.BindEnv("redis-url", "REDIS_URL") + viper.BindEnv("ruby-horizon-url", "RUBY_HORIZON_URL") + viper.BindEnv("log-level", "LOG_LEVEL") + viper.BindEnv("sentry-dsn", "SENTRY_DSN") + viper.BindEnv("loggly-token", "LOGGLY_TOKEN") + viper.BindEnv("loggly-host", "LOGGLY_HOST") + viper.BindEnv("tls-cert", "TLS_CERT") + viper.BindEnv("tls-key", "TLS_KEY") + viper.BindEnv("ingest", "INGEST") + viper.BindEnv("network-passphrase", "NETWORK_PASSPHRASE") + viper.BindEnv("history-retention-count", "HISTORY_RETENTION_COUNT") + viper.BindEnv("history-stale-threshold", "HISTORY_STALE_THRESHOLD") + viper.BindEnv("skip-cursor-update", "SKIP_CURSOR_UPDATE") + + rootCmd = &cobra.Command{ + Use: "horizon", + Short: "client-facing api server for the stellar network", + Long: "client-facing api server for the stellar network", + Run: func(cmd *cobra.Command, args []string) { + initApp(cmd, args) + app.Serve() + }, + } + + rootCmd.Flags().String( + "db-url", + "", + "horizon postgres database to connect with", + ) + + rootCmd.Flags().String( + "stellar-core-db-url", + "", + "stellar-core postgres database to connect with", + ) + + rootCmd.Flags().String( + "stellar-core-url", + "", + "stellar-core to connect with (for http commands)", + ) + + rootCmd.Flags().Int( + "port", + 8000, + "tcp port to listen on for http requests", + ) + + rootCmd.Flags().Int( + "per-hour-rate-limit", + 3600, + "max count of requests allowed in a one hour period, by remote ip address", + ) + + rootCmd.Flags().String( + "redis-url", + "", + "redis to connect with, for rate limiting", + ) + + rootCmd.Flags().String( + "log-level", + "info", + "Minimum log severity (debug, info, warn, error) to log", + ) + + rootCmd.Flags().String( + "sentry-dsn", + "", + "Sentry URL to which panics and errors should be reported", + ) + + rootCmd.Flags().String( + "loggly-token", + "", + "Loggly token, used to configure log forwarding to loggly", + ) + + rootCmd.Flags().String( + "loggly-host", + "", + "Hostname to be added to every loggly log event", + ) + + rootCmd.Flags().String( + "friendbot-secret", + "", + "Secret seed for friendbot functionality. When empty, friendbot will be disabled", + ) + + rootCmd.Flags().String( + "tls-cert", + "", + "The TLS certificate file to use for securing connections to horizon", + ) + + rootCmd.Flags().String( + "tls-key", + "", + "The TLS private key file to use for securing connections to horizon", + ) + + rootCmd.Flags().Bool( + "ingest", + false, + "causes this horizon process to ingest data from stellar-core into horizon's db", + ) + + rootCmd.Flags().String( + "network-passphrase", + "", + "Override the network passphrase", + ) + + rootCmd.Flags().Uint( + "history-retention-count", + 0, + "the minimum number of ledgers to maintain within horizon's history tables. 0 signifies an unlimited number of ledgers will be retained", + ) + + rootCmd.Flags().Uint( + "history-stale-threshold", + 0, + "the maximum number of ledgers the history db is allowed to be out of date from the connected stellar-core db before horizon considers history stale", + ) + + rootCmd.AddCommand(dbCmd) + + viper.BindPFlags(rootCmd.Flags()) +} + +func initApp(cmd *cobra.Command, args []string) { + initConfig() + + var err error + app, err = horizon.NewApp(config) + + if err != nil { + log.Fatal(err.Error()) + } +} + +func initConfig() { + if viper.GetString("db-url") == "" { + log.Fatal("Invalid config: db-url is blank. Please specify --db-url on the command line or set the DATABASE_URL environment variable.") + } + + if viper.GetString("stellar-core-db-url") == "" { + log.Fatal("Invalid config: stellar-core-db-url is blank. Please specify --stellar-core-db-url on the command line or set the STELLAR_CORE_DATABASE_URL environment variable.") + } + + if viper.GetString("stellar-core-url") == "" { + log.Fatal("Invalid config: stellar-core-url is blank. Please specify --stellar-core-url on the command line or set the STELLAR_CORE_URL environment variable.") + } + + ll, err := logrus.ParseLevel(viper.GetString("log-level")) + + if err != nil { + log.Fatalf("Could not parse log-level: %v", viper.GetString("log-level")) + } + + hlog.DefaultLogger.Level = ll + + cert, key := viper.GetString("tls-cert"), viper.GetString("tls-key") + + switch { + case cert != "" && key == "": + log.Fatal("Invalid TLS config: key not configured") + case cert == "" && key != "": + log.Fatal("Invalid TLS config: cert not configured") + } + + config = horizon.Config{ + DatabaseURL: viper.GetString("db-url"), + StellarCoreDatabaseURL: viper.GetString("stellar-core-db-url"), + StellarCoreURL: viper.GetString("stellar-core-url"), + Port: viper.GetInt("port"), + RateLimit: throttled.PerHour(viper.GetInt("per-hour-rate-limit")), + RedisURL: viper.GetString("redis-url"), + LogLevel: ll, + SentryDSN: viper.GetString("sentry-dsn"), + LogglyToken: viper.GetString("loggly-token"), + LogglyHost: viper.GetString("loggly-host"), + FriendbotSecret: viper.GetString("friendbot-secret"), + TLSCert: cert, + TLSKey: key, + Ingest: viper.GetBool("ingest"), + HistoryRetentionCount: uint(viper.GetInt("history-retention-count")), + StaleThreshold: uint(viper.GetInt("history-stale-threshold")), + SkipCursorUpdate: viper.GetBool("skip-cursor-update"), + } +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/serve.go b/vendor/src/github.com/stellar/go/services/horizon/serve.go new file mode 100644 index 0000000..399eac9 --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/serve.go @@ -0,0 +1,19 @@ +package main + +import ( + "github.com/spf13/cobra" +) + +var serveCmd = &cobra.Command{ + Use: "serve", + Short: "run horizon server", + Long: "serve initializes then starts the horizon HTTP server", + Run: func(cmd *cobra.Command, args []string) { + initApp(cmd, args) + app.Serve() + }, +} + +func init() { + rootCmd.AddCommand(serveCmd) +} diff --git a/vendor/src/github.com/stellar/go/services/horizon/version.go b/vendor/src/github.com/stellar/go/services/horizon/version.go new file mode 100644 index 0000000..109f55b --- /dev/null +++ b/vendor/src/github.com/stellar/go/services/horizon/version.go @@ -0,0 +1,21 @@ +package main + +import ( + "fmt" + + "github.com/spf13/cobra" + apkg "github.com/stellar/go/support/app" +) + +var versionCmd = &cobra.Command{ + Use: "version", + Short: "print horizon version", + Long: "", + Run: func(cmd *cobra.Command, args []string) { + fmt.Println(apkg.Version()) + }, +} + +func init() { + rootCmd.AddCommand(versionCmd) +} diff --git a/vendor/src/github.com/stellar/go/support/log/entry.go b/vendor/src/github.com/stellar/go/support/log/entry.go index bb35e93..c559beb 100644 --- a/vendor/src/github.com/stellar/go/support/log/entry.go +++ b/vendor/src/github.com/stellar/go/support/log/entry.go @@ -4,8 +4,8 @@ import ( "fmt" "io/ioutil" - "github.com/Sirupsen/logrus" - "github.com/Sirupsen/logrus/hooks/test" + "github.com/sirupsen/logrus" + "github.com/sirupsen/logrus/hooks/test" "github.com/stellar/go/support/errors" ) diff --git a/vendor/src/github.com/stellar/go/support/log/loggly_hook.go b/vendor/src/github.com/stellar/go/support/log/loggly_hook.go index 393fe16..aa53c34 100644 --- a/vendor/src/github.com/stellar/go/support/log/loggly_hook.go +++ b/vendor/src/github.com/stellar/go/support/log/loggly_hook.go @@ -4,8 +4,8 @@ import ( "os" "time" - "github.com/Sirupsen/logrus" "github.com/segmentio/go-loggly" + "github.com/sirupsen/logrus" ) // NewLogglyHook creates a new hook diff --git a/vendor/src/github.com/stellar/go/support/log/main.go b/vendor/src/github.com/stellar/go/support/log/main.go index 7432d07..54fa53e 100644 --- a/vendor/src/github.com/stellar/go/support/log/main.go +++ b/vendor/src/github.com/stellar/go/support/log/main.go @@ -5,8 +5,8 @@ import ( "os" "time" - "github.com/Sirupsen/logrus" "github.com/segmentio/go-loggly" + "github.com/sirupsen/logrus" "github.com/stellar/go/support/http/mutil" "golang.org/x/net/context" ) diff --git a/vendor/src/github.com/stellar/go/support/log/main_test.go b/vendor/src/github.com/stellar/go/support/log/main_test.go index 0739c91..60fa08b 100644 --- a/vendor/src/github.com/stellar/go/support/log/main_test.go +++ b/vendor/src/github.com/stellar/go/support/log/main_test.go @@ -9,7 +9,7 @@ import ( "goji.io" "goji.io/pat" - "github.com/Sirupsen/logrus" + "github.com/sirupsen/logrus" serr "github.com/stellar/go/support/errors" "github.com/stellar/go/support/http/httptest" "github.com/stretchr/testify/assert" diff --git a/vendor/src/github.com/stellar/go/support/scripts/build_release_artifacts/main.go b/vendor/src/github.com/stellar/go/support/scripts/build_release_artifacts/main.go index 18815dc..e1b06ec 100644 --- a/vendor/src/github.com/stellar/go/support/scripts/build_release_artifacts/main.go +++ b/vendor/src/github.com/stellar/go/support/scripts/build_release_artifacts/main.go @@ -3,7 +3,9 @@ package main // See README.md for a description of this script import ( + "flag" "fmt" + "io/ioutil" "os" "os/exec" "path/filepath" @@ -18,55 +20,66 @@ import ( var extractBinName = regexp.MustCompile(`^(?P[a-z-]+)-(?P.+)$`) -var builds = []struct { - OS string - Arch string -}{ +var builds = []buildConfig{ {"darwin", "amd64"}, {"linux", "amd64"}, {"linux", "arm"}, {"windows", "amd64"}, } -func main() { - log.SetLevel(log.InfoLevel) - bin, version := extractFromTag(os.Getenv("TRAVIS_TAG")) - pkg := packageName(bin) - repo := "github.com/stellar/go" +var binFilter = flag.String("bin", "", "restrict build to single binary") +var osFilter = flag.String("os", "", "restrict build to single os") +var archFilter = flag.String("arch", "", "restrict build to single arch") +var keepDir = flag.Bool("keep", false, "when true, artifact directories are not removed after packaging") - if os.Getenv("REPO") != "" { - repo = os.Getenv("REPO") - } +type buildConfig struct { + OS string + Arch string +} +func main() { + flag.Parse() + log.SetLevel(log.InfoLevel) run("rm", "-rf", "dist/*") - if bin == "" { - log.Info("could not extract info from TRAVIS_TAG: skipping artifact packaging") + if os.Getenv("TRAVIS_EVENT_TYPE") == "cron" { + buildNightlies() + os.Exit(0) + } else if os.Getenv("TRAVIS_TAG") != "" { + buildByTag() + os.Exit(0) + } else { + buildSnapshots() os.Exit(0) } - for _, cfg := range builds { - name := fmt.Sprintf("%s-%s-%s-%s", bin, version, cfg.OS, cfg.Arch) - dest := filepath.Join("dist", name) + log.Info("nothing to do") +} - // make destination directories - run("mkdir", "-p", dest) - run("cp", "LICENSE-APACHE.txt", dest) - run("cp", "COPYING", dest) - run("cp", filepath.Join(pkg, "README.md"), dest) - run("cp", filepath.Join(pkg, "CHANGELOG.md"), dest) +// package searches the `tools` and `services` packages of this repo to find +// the source directory. This is used within the script to find the README and +// other files that should be packaged with the binary. +func binPkgNames() []string { + result := []string{} + result = append(result, binNamesForDir("services")...) + result = append(result, binNamesForDir("tools")...) + return result +} - // rebuild the binary with the version variable set - build( - fmt.Sprintf("%s/%s", repo, pkg), - filepath.Join(dest, bin), - version, - cfg.OS, - cfg.Arch, - ) +func binNamesForDir(dir string) []string { + files, err := ioutil.ReadDir(dir) + if err != nil { + panic(errors.Wrap(err, "read-dir failed")) + } - packageArchive(dest, cfg.OS) + result := []string{} + for _, file := range files { + if file.IsDir() { + result = append(result, filepath.Join(dir, file.Name())) + } } + + return result } func build(pkg, dest, version, buildOS, buildArch string) { @@ -101,15 +114,86 @@ func build(pkg, dest, version, buildOS, buildArch string) { } } -// enableCgo replaces any CGO_ENABLED flags in `env` with CGO_ENABLED=1 -func enableCgo(env []string) (ret []string) { - for _, e := range env { - if !strings.HasPrefix(e, "CGO_ENABLED") { - ret = append(ret, e) +func buildNightlies() { + version := runOutput("git", "describe", "--always", "--dirty", "--tags") + repo := repoName() + + for _, pkg := range binPkgNames() { + bin := filepath.Base(pkg) + + if *binFilter != "" && *binFilter != bin { + continue + } + + for _, cfg := range getBuildConfigs() { + dest := prepareDest(pkg, bin, "nightly", cfg.OS, cfg.Arch) + + build( + fmt.Sprintf("%s/%s", repo, pkg), + filepath.Join(dest, bin), + version, + cfg.OS, + cfg.Arch, + ) + + packageArchive(dest, cfg.OS) + } + } +} + +func buildByTag() { + bin, version := extractFromTag(os.Getenv("TRAVIS_TAG")) + pkg := packageName(bin) + repo := repoName() + + if bin == "" { + log.Info("could not extract info from TRAVIS_TAG: skipping artifact packaging") + os.Exit(0) + } + + for _, cfg := range getBuildConfigs() { + dest := prepareDest(pkg, bin, version, cfg.OS, cfg.Arch) + + // rebuild the binary with the version variable set + build( + fmt.Sprintf("%s/%s", repo, pkg), + filepath.Join(dest, bin), + version, + cfg.OS, + cfg.Arch, + ) + + packageArchive(dest, cfg.OS) + } +} + +func buildSnapshots() { + rev := runOutput("git", "describe", "--always", "--dirty") + version := fmt.Sprintf("snapshot-%s", rev) + repo := repoName() + + for _, pkg := range binPkgNames() { + bin := filepath.Base(pkg) + + if *binFilter != "" && *binFilter != bin { + continue + } + + for _, cfg := range getBuildConfigs() { + + dest := prepareDest(pkg, bin, "snapshot", cfg.OS, cfg.Arch) + + build( + fmt.Sprintf("%s/%s", repo, pkg), + filepath.Join(dest, bin), + version, + cfg.OS, + cfg.Arch, + ) + + packageArchive(dest, cfg.OS) } } - ret = append(ret, "CGO_ENABLED=1") - return } // extractFromTag extracts the name of the binary that should be packaged in the @@ -129,6 +213,22 @@ func extractFromTag(tag string) (string, string) { return match[1], match[2] } +func getBuildConfigs() (result []buildConfig) { + for _, cfg := range builds { + + if *osFilter != "" && *osFilter != cfg.OS { + continue + } + + if *archFilter != "" && *archFilter != cfg.Arch { + continue + } + + result = append(result, cfg) + } + return +} + // packageArchive tars or zips `dest`, depending upon the OS, then removes // `dest`, in preparation of travis uploading all artifacts to github releases. func packageArchive(dest, buildOS string) { @@ -145,7 +245,9 @@ func packageArchive(dest, buildOS string) { run("tar", "-czf", dest+".tar.gz", "-C", dir, release) } - run("rm", "-rf", dest) + if !*keepDir { + run("rm", "-rf", dest) + } } // package searches the `tools` and `services` packages of this repo to find @@ -183,6 +285,19 @@ func packageName(binName string) string { return result } +func prepareDest(pkg, bin, version, os, arch string) string { + name := fmt.Sprintf("%s-%s-%s-%s", bin, version, os, arch) + dest := filepath.Join("dist", name) + + // make destination directories + run("mkdir", "-p", dest) + run("cp", "LICENSE-APACHE.txt", dest) + run("cp", "COPYING", dest) + run("cp", filepath.Join(pkg, "README.md"), dest) + run("cp", filepath.Join(pkg, "CHANGELOG.md"), dest) + return dest +} + // pushdir is a utility function to temporarily change directories. It returns // a func that can be called to restore the current working directory to the // state it was in when first calling pushdir. @@ -205,6 +320,14 @@ func pushdir(dir string) func() { } } +func repoName() string { + if os.Getenv("REPO") != "" { + return os.Getenv("REPO") + } + return "github.com/stellar/go" + +} + // utility command to run the provided command that echoes any output. A failed // command will trigger a panic. func run(name string, args ...string) { @@ -219,3 +342,19 @@ func run(name string, args ...string) { panic(err) } } + +// utility command to run the provided command that returns the output. A +// failed command will trigger a panic. +func runOutput(name string, args ...string) string { + cmd := exec.Command(name, args...) + cmd.Stderr = os.Stderr + + log.Infof("running: %s %s", name, strings.Join(args, " ")) + out, err := cmd.Output() + + if err != nil { + panic(err) + } + + return strings.TrimSpace(string(out)) +} diff --git a/vendor/src/github.com/stellar/go/support/scripts/run_tests b/vendor/src/github.com/stellar/go/support/scripts/run_tests index 70d2512..7a7342e 100644 --- a/vendor/src/github.com/stellar/go/support/scripts/run_tests +++ b/vendor/src/github.com/stellar/go/support/scripts/run_tests @@ -8,4 +8,4 @@ then exec go test -race $TESTS else exec go test $TESTS -fi \ No newline at end of file +fi diff --git a/vendor/src/github.com/stellar/go/tools/stellar-sign/main.go b/vendor/src/github.com/stellar/go/tools/stellar-sign/main.go index 6659006..7007a81 100644 --- a/vendor/src/github.com/stellar/go/tools/stellar-sign/main.go +++ b/vendor/src/github.com/stellar/go/tools/stellar-sign/main.go @@ -6,7 +6,9 @@ package main import ( "bufio" + "flag" "fmt" + "io/ioutil" "log" "os" "strings" @@ -18,13 +20,36 @@ import ( var in *bufio.Reader +var infile = flag.String("infile", "", "transaction envelope") + func main() { + flag.Parse() in = bufio.NewReader(os.Stdin) - // read envelope - env, err := readLine("Enter envelope (base64): ", false) - if err != nil { - log.Fatal(err) + var ( + env string + err error + ) + + if *infile == "" { + // read envelope + env, err = readLine("Enter envelope (base64): ", false) + if err != nil { + log.Fatal(err) + } + } else { + file, err := os.Open(*infile) + if err != nil { + log.Fatal(err) + } + defer file.Close() + + raw, err := ioutil.ReadAll(file) + if err != nil { + log.Fatal(err) + } + + env = string(raw) } // parse the envelope @@ -64,7 +89,9 @@ func main() { } fmt.Print("\n==== Result ====\n\n") + fmt.Print("```\n") fmt.Println(newEnv) + fmt.Print("```\n") } diff --git a/vendor/src/github.com/stellar/go/xdr/main_test.go b/vendor/src/github.com/stellar/go/xdr/main_test.go index dd1ebb4..c678653 100644 --- a/vendor/src/github.com/stellar/go/xdr/main_test.go +++ b/vendor/src/github.com/stellar/go/xdr/main_test.go @@ -1,12 +1,37 @@ -package xdr_test +package xdr import ( - . "github.com/stellar/go/xdr" + "encoding/base64" + "fmt" + "log" + "strings" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) +// ExampleUnmarshal shows the lowest-level process to decode a base64 +// envelope encoded in base64. +func ExampleUnmarshal() { + data := "AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAACgAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAArqN6LeOagjxMaUP96Bzfs9e0corNZXzBWJkFoK7kvkwAAAAAO5rKAAAAAAAAAAABVvwF9wAAAEAKZ7IPj/46PuWU6ZOtyMosctNAkXRNX9WCAI5RnfRk+AyxDLoDZP/9l3NvsxQtWj9juQOuoBlFLnWu8intgxQA" + + rawr := strings.NewReader(data) + b64r := base64.NewDecoder(base64.StdEncoding, rawr) + + var tx TransactionEnvelope + bytesRead, err := Unmarshal(b64r, &tx) + + fmt.Printf("read %d bytes\n", bytesRead) + + if err != nil { + log.Fatal(err) + } + + fmt.Printf("This tx has %d operations\n", len(tx.Tx.Operations)) + // Output: read 192 bytes + // This tx has 1 operations +} + var _ = Describe("xdr.SafeUnmarshal", func() { var ( result int32 diff --git a/vendor/src/github.com/stellar/go/xdr/price.go b/vendor/src/github.com/stellar/go/xdr/price.go index fa362c7..c044fc2 100644 --- a/vendor/src/github.com/stellar/go/xdr/price.go +++ b/vendor/src/github.com/stellar/go/xdr/price.go @@ -8,3 +8,8 @@ import ( func (p *Price) String() string { return big.NewRat(int64(p.N), int64(p.D)).FloatString(7) } + +// Invert inverts Price. +func (p *Price) Invert() { + p.N, p.D = p.D, p.N +} diff --git a/vendor/src/github.com/stellar/go/xdr/price_test.go b/vendor/src/github.com/stellar/go/xdr/price_test.go new file mode 100644 index 0000000..5cbc9cb --- /dev/null +++ b/vendor/src/github.com/stellar/go/xdr/price_test.go @@ -0,0 +1,21 @@ +package xdr_test + +import ( + . "github.com/stellar/go/xdr" + + . "github.com/onsi/ginkgo" + . "github.com/onsi/gomega" +) + +var _ = Describe("xdr.Price", func() { + Context("Price.Invert", func() { + price := Price{N: 1, D: 2} + + It("succeeds", func() { + price.Invert() + + Expect(price.N).To(Equal(Int32(2))) + Expect(price.D).To(Equal(Int32(1))) + }) + }) +})