diff --git a/README.md b/README.md
index 5d95b31..95cb318 100644
--- a/README.md
+++ b/README.md
@@ -28,7 +28,7 @@ If you don't need to bundle Tradable core in your code base, then you can simply
```html
-
```
@@ -75,7 +75,7 @@ tradable.on("myEmbedReadyListener", "embedReady", function() {
});
```
-The `embedReady` listener is notified every time that the status of `tradable.tradingEnabled` changes. As you might guess, if `tradable.tradingEnabled` is `true`, it means that the OAuth token was received and the user is successfully authenticated, i.e. you can now execute trades and orders.
+The `embedReady` listener is notified every time that the status of `tradable.tradingEnabled` changes. As you might guess, if `tradable.tradingEnabled` is `true`, it means that the OAuth token was received and the user is successfully authenticated, i.e. you can now execute trades and orders. On the other hand, if you receive an `embedReady` event and `tradable.tradingEnabled` is `false`, you need to show the disconnected state.
Turning the listener off is as easy as:
```javascript
diff --git a/dist/tradable.js b/dist/tradable.js
index f8eb009..1101703 100644
--- a/dist/tradable.js
+++ b/dist/tradable.js
@@ -1,15 +1,15 @@
-/****** Copyright 2016 Tradable ApS; @license MIT; v1.20.4 ******/
+/****** Copyright 2016 Tradable ApS; @license MIT; v1.21 ******/
// Avoid console errors when not supported
-if (typeof console === "undefined" || typeof console.log === "undefined") {
- console = { log: function() {}, warn: function() {} };
+if (typeof console === "undefined" || typeof console.log !== "function" || typeof console.warn !== "function" || typeof console.error !== "function") {
+ console = { log: function() {}, warn: function() {}, error: function() {} };
}
//Check minimum jQuery version '2.1.4'
if(typeof jQuery === "undefined") {
- console.warn('tradable requires jQuery to run');
+ console.warn("tradable requires jQuery to run");
} else if(!isGreaterOrEqualMinVersion(jQuery.fn.jquery, '2.1.4')) {
- console.warn('tradable requires jQuery version 2.1.4 or above');
+ console.warn("tradable requires jQuery version 2.1.4 or above");
}
// Save jQuery in custom variable
@@ -45,7 +45,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
* @property {Array} availableInstruments List of instruments cached in memory for the selected account. If the full instrument list is available for the selected account, all of them. Otherwise, instruments are gradually cached for the requested prices. All instruments related to to the open positions and pending orders are cached since the beginning.
*/
var tradable = {
- version : '1.20.4',
+ version : '1.21',
app_id: appId,
app_key: appKey,
oauth_host: oauthEndpoint.oauthHost,
@@ -74,6 +74,9 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
lastSnapshot: null,
instrumentKeysForAccountUpdates: [],
accountUpdateMillis: 700,
+ log: function(msg) { console.log("[TR] " + msg); },
+ warn: function(msg) { console.warn("[TR] " + msg); },
+ error: function(msg) { console.error("[TR] " + msg); },
/**
* Redirect to the Tradable account approval page
*/
@@ -189,8 +192,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
localStorage.removeItem("tradingEnabled:"+appId);
localStorage.removeItem("expirationTimeUTC:"+appId);
}
- tradable.tradingEnabled = false;
- notifyReadyCallbacks();
+ setTradingEnabled(false);
},
isEventValid : function(eventName) {
return (typeof eventName === "string" && $.inArray(eventName, availableEvents) !== -1);
@@ -328,11 +330,11 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
}
},
addSymbolToUpdates: function(updateClientId, instrumentId) {
- console.warn("'addSymbolToUpdates' is now deprecated, 'addInstrumentIdToUpdates' should now be used instead.");
+ tradable.warn("'addSymbolToUpdates' is now deprecated, 'addInstrumentIdToUpdates' should now be used instead.");
tradable.addInstrumentIdToUpdates(updateClientId, instrumentId);
},
removeSymbolFromUpdates: function(updateClientId, instrumentIdToRemove) {
- console.warn("'removeSymbolFromUpdates' is now deprecated, 'removeInstrumentIdFromUpdates' should now be used instead.");
+ tradable.warn("'removeSymbolFromUpdates' is now deprecated, 'removeInstrumentIdFromUpdates' should now be used instead.");
tradable.removeInstrumentIdFromUpdates(updateClientId, instrumentIdToRemove);
},
/**
@@ -423,7 +425,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
*/
getRemainingTokenMillis : function() {
if(!tradable.expirationTimeUTC) {
- console.log("You need to authenticate before calling this method");
+ tradable.log("You need to authenticate before calling this method");
}
return (tradable.expirationTimeUTC - new Date().getTime());
},
@@ -448,7 +450,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
} else if(tradable.accountMap[accountId]) {
endpoint = tradable.accountMap[accountId].endpointURL;
} else {
- console.warn("Please specify a valid accountId or method");
+ tradable.warn("Please specify a valid accountId or method");
var wrongRequestDeferred = new $.Deferred().reject("Invalid request: Please specify a valid accountId or method");
return resolveDeferred(wrongRequestDeferred, resolve, reject);
}
@@ -474,11 +476,13 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
ajaxPromise.then(function(){},
function(jqXHR){
if(jqXHR.responseJSON) {
- if(jqXHR.responseJSON.httpStatus === 403 || jqXHR.responseJSON.httpStatus === 502) {
- if(!tradable.initializingAccount && tradable.isReLoginRequired(jqXHR)) {
+ if(!tradable.initializingAccount && (jqXHR.responseJSON.httpStatus === 403 || jqXHR.responseJSON.httpStatus === 502)) {
+ if(tradable.isReLoginRequired(jqXHR)) {
notifyReloginRequiredCallbacks();
- } else if(!tradable.isReLoginRequired(jqXHR)) {
+ } else if(tradable.isTokenExpiredCode(jqXHR)) {
notifyTokenExpired();
+ } else if(!tradable.isReLoginRequired(jqXHR)) {
+ setTradingEnabled(false);
}
}
if(!tradable.isReLoginRequired(jqXHR)) {
@@ -504,7 +508,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
tradable.lastSnapshot = undefined;
tradable.selectedAccount = tradable.accountMap[accountId];
tradable.selectedAccountId = accountId;
- console.log('New accountId is set');
+ tradable.log("Setting account: " + ((accountId && accountId.length) ? (accountId.substring(0, accountId.length/2)) : accountId) + "..");
tradable.initializingAccount = true;
var deferred = $.Deferred();
initializeValuesForCurrentAccount(function() {
@@ -518,7 +522,6 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
if(tradable.isReLoginRequired(err)) {
tradable.reLogin().then(function () {
tradable.setSelectedAccount(accountId).then(function () {
- tradable.initializingAccount = false;
setTradingEnabled(true);
deferred.resolve();
});
@@ -531,12 +534,15 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
});
return resolveDeferred(deferred, resolve, reject);
} else {
- console.error("Can't set account id to: " + accountId);
+ tradable.error("Can't set account id to: " + accountId);
}
},
isReLoginRequired : function (err) {
return (!!err && !!err.responseJSON && err.responseJSON.httpStatus === 403 && err.responseJSON.code === 1005);
},
+ isTokenExpiredCode: function (err) {
+ return (!!err && !!err.responseJSON && err.responseJSON.httpStatus === 403 && err.responseJSON.code === 1007);
+ },
excludeCurrentAccount : function() {
var accountId = tradable.selectedAccountId;
var index = tradable.accounts.indexOf(tradable.selectedAccount);
@@ -574,7 +580,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
if(isInstrumentCached(instrumentId)) {
return tradable.getInstrumentForProperty(tradable.availableInstruments, "instrumentId", instrumentId);
} else {
- console.warn("Instrument Id not found...");
+ tradable.warn("Instrument Id not found...");
}
return null;
},
@@ -883,6 +889,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
}
tradable.allAccounts.push(account);
});
+ tradable.log("Accounts initialized");
});
return resolveDeferred(accountsPromise, resolve, reject);
@@ -1431,7 +1438,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
* @deprecated [This method will eventually be removed, please use 'placeProtectedOrderForAccount']
*/
placeOrderWithProtectionsForAccount : function (accountId, amount, price, side, instrumentId, type, tpDistance, slDistance, resolve, reject){
- console.warn("placeOrderWithProtections is deprecated and will eventually be removed, please use placeProtectedOrder or placeProtectedOrderForAccount instead.");
+ tradable.warn("placeOrderWithProtections is deprecated and will eventually be removed, please use placeProtectedOrder or placeProtectedOrderForAccount instead.");
var order = {'amount': amount, 'price': price, 'side': side, 'instrumentId': instrumentId, 'type': type};
if(tpDistance)
order["takeProfitDistance"] = tpDistance;
@@ -2037,7 +2044,6 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
return tradable.makeAccountRequest("POST", accountId, "prices/", instrumentIdsObj, resolve, reject);
} else {
var deferred = new $.Deferred();
-
var missingInstrumentIds = findMissingInstrumentIds(instrumentIds);
var promise;
@@ -2154,7 +2160,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
enableTrading : function(access_token, end_point, expires_in, set_latest_account){
var deferred = new $.Deferred();
- console.log("Enabling Trading...");
+ tradable.log("Enabling Trading...");
notifyNamespaceCallbacks("embedStarting");
tradable.tradingEnabled = false;
@@ -2173,6 +2179,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
}
};
+ tradable.log("Starting v_"+tradable.version);
initializeLibrary();
function initializeLibrary(){
@@ -2204,7 +2211,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
}
if(!success) {
- console.log('Initiating without authentication...');
+ tradable.log("Initiating without authentication...");
$(document).ready(function() {
notifyReadyCallbacks();
});
@@ -2293,7 +2300,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
var oauthHost = "api.tradable.com/";
if(appId > 200000) { // Staging app-id
oauthHost = "api-staging.tradable.com/";
- console.log("Starting in staging mode...");
+ tradable.log("Starting in staging mode...");
}
if(customOAuthHost) {
oauthHost = customOAuthHost;
@@ -2370,25 +2377,18 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
}
resetInstrumentCache();
- return getDefaultInstruments().then(function() {
- console.log('Instruments ready');
+ var deferred = new $.Deferred();
+ getDefaultInstruments().then(function() {
+ tradable.log("Instruments ready");
if(reset) {
tradable.tradingEnabled = true;
notifyAccountSwitchCallbacks();
}
- if(!!resolve && typeof resolve === "function") {
- return resolve(tradable.accounts);
- } else {
- return this;
- }
- //return
+ deferred.resolve(tradable.accounts);
}, function(error) {
- if(!!reject && typeof reject === "function") {
- return reject(error);
- } else {
- return this;
- }
+ deferred.reject(error);
});
+ return resolveDeferred(deferred, resolve, reject);
}
@@ -2526,18 +2526,26 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
}
function excludeAndValidate(deferred, err) {
+ var accQty = tradable.accounts.length;
tradable.excludeCurrentAccount();
+ tradable.log("Account initialization failed..");
if(tradable.accounts.length > 0) {
- validateToken();
+ tradable.log("Resetting to previous account");
+ setSelectedAccountAndNotify(false, accQty).then(function() {
+ tradable.initializingAccount = false;
+ }, function() {
+ tradable.initializingAccount = false;
+ });
} else {
+ tradable.log("No more accounts available, signing out..");
tradable.signOut();
+ tradable.initializingAccount = false;
}
deferred.reject(err);
- tradable.initializingAccount = false;
}
function validateToken() {
- console.log("Validating token...");
+ tradable.log("Validating token...");
// Check token validity
tradable.getAccounts().then(
function() {
@@ -2549,10 +2557,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
);
}
- function setSelectedAccountAndNotify(set_latest_account, account_qty) {
- var deferred = new $.Deferred();
-
- console.log('Accounts initialized');
+ function getAccountIdToInitialize(set_latest_account, account_qty) {
var accountId;
var savedAccId = localStorage.getItem("selectedAccount:"+appId);
var accIdxToSelect = tradable.accounts.length - 1;
@@ -2563,12 +2568,17 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
} else if(accIdxToSelect >= 0) {
accountId = tradable.accounts[accIdxToSelect].uniqueId;
}
+ return accountId;
+ }
+
+ function setSelectedAccountAndNotify(set_latest_account, account_qty) {
+ var deferred = new $.Deferred();
+
+ var accountId = getAccountIdToInitialize(set_latest_account, account_qty);
resetUpdates();
if(accountId) {
tradable.setSelectedAccount(accountId, function() {
- if(!tradable.tradingEnabled) {
- setTradingEnabled(true);
- }
+ setTradingEnabled(true);
deferred.resolve();
}, function(error) {
deferred.reject(error);
@@ -2581,11 +2591,14 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
}
function setTradingEnabled(value) {
- tradable.tradingEnabled = value;
- if(isLocalStorageSupported()) {
- localStorage.setItem("tradingEnabled:"+appId, tradable.tradingEnabled);
+ if(value !== tradable.tradingEnabled) {
+ tradable.tradingEnabled = value;
+ tradable.log("Embed ready: " + tradable.tradingEnabled);
+ if(isLocalStorageSupported()) {
+ localStorage.setItem("tradingEnabled:"+appId, tradable.tradingEnabled);
+ }
+ notifyReadyCallbacks();
}
- notifyReadyCallbacks();
}
// Notify events
@@ -2602,6 +2615,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
function processAccountUpdate() {
if(tradable.tradingEnabled && !tradable.initializingAccount && !processingUpdate &&
(accountUpdatedCallbacks.length > 0 || typeof callbackHolder["accountUpdated"] !== undefined)) {
+ var processingAccountId = tradable.selectedAccountId;
processingUpdate = true;
var instrumentIds = [];
$(tradable.instrumentKeysForAccountUpdates).each(function(idx, elem) {
@@ -2611,8 +2625,12 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
}
});
tradable.getSnapshot(instrumentIds).then(function(account) {
- tradable.lastSnapshot = account;
- return checkInstrumentsToCache(account);
+ if(processingAccountId === tradable.selectedAccountId) {
+ tradable.lastSnapshot = account;
+ return checkInstrumentsToCache(account);
+ } else {
+ return new $.Deferred().reject();
+ }
}).then(function(account) {
if(tradable.tradingEnabled && !tradable.initializingAccount) {
$.each(accountUpdatedCallbacks, function(idx, call) {
@@ -2644,6 +2662,8 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
if(missingInstrumentIds.length) {
tradable.getInstrumentsFromIds(missingInstrumentIds).then(function() {
deferred.resolve(snapshot);
+ }, function (err) {
+ deferred.reject(err);
});
} else {
deferred.resolve(snapshot);
@@ -2654,6 +2674,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
}
function notifyTokenExpired() {
+ tradable.log("Token expired");
setTradingEnabled(false);
$(tokenExpirationCallbacks).each(function(index, callback) {
executeCallback(callback);
@@ -2669,6 +2690,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
}
function notifyAccountSwitchCallbacks() {
+ tradable.log("Account switched: " + tradable.selectedAccount.displayName);
$(accountSwitchCallbacks).each(function(index, callback) {
executeCallback(callback);
});
@@ -2690,7 +2712,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
}
}
} else {
- console.error("Careful, can't notify '" + eventName + "', it's an invalid event name");
+ tradable.error("Careful, can't notify '" + eventName + "', it's an invalid event name");
}
}
@@ -2701,7 +2723,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
}
callback();
} catch(err) {
- console.error(err);
+ tradable.error(err);
}
}
diff --git a/dist/tradable.min.js b/dist/tradable.min.js
index d9812a8..86ccdcd 100644
--- a/dist/tradable.min.js
+++ b/dist/tradable.min.js
@@ -1,3 +1,3 @@
-/****** Copyright 2016 Tradable ApS; @license MIT; v1.20.4 ******/
-function isGreaterOrEqualMinVersion(e,t){return this.toNum=function(e){return parseInt(e,10)},this.highest=function(e,t){for(var n=e.split(".").map(this.toNum),o=t.split(".").map(this.toNum),r=0;ro[r]?e:t;return o.length>n.length?t:void 0},!("undefined"!=typeof highest(e,t)&&highest(e,t)===t)}"undefined"!=typeof console&&"undefined"!=typeof console.log||(console={log:function(){},warn:function(){}}),"undefined"==typeof jQuery?console.warn("tradable requires jQuery to run"):isGreaterOrEqualMinVersion(jQuery.fn.jquery,"2.1.4")||console.warn("tradable requires jQuery version 2.1.4 or above");var trEmbJQ=jQuery.noConflict(!0),jsGlobalObject="undefined"!=typeof window?window:"undefined"!=typeof self?self:"undefined"!=typeof global?global:this;!function(e,t){"use strict";function n(){function e(e,t){t.tradingEnabled=!1,u()&&localStorage.setItem("tradingEnabled:"+Q,!1);var n=o(e);return n.accessToken&&n.endPoint?(t.enableTrading(n.accessToken,n.endPoint,n.expiresIn),"osLaunch"===window.name&&window.close(),!0):!1}var n=!1,r=window.opener;if(r&&"osBrokerSignUp"===window.name)window.close();else if(r&&"osLaunch"===window.name){var i=window.location.hash;if(i){try{r.postMessage("replace your location","*"),n=e(i,r.tradable)}catch(c){n=!1}n||(n=e(i,ue))}}else window.location.hash&&-1!==window.location.hash.indexOf("access_token")&&-1!==window.location.hash.indexOf("endpointURL")&&-1!==window.location.hash.indexOf("expires_in")?n=e(window.location.hash,ue):ue.tradingEnabled&&(E(),n=!0);n||(console.log("Initiating without authentication..."),t(document).ready(function(){S()}))}function o(e){var n={accessToken:void 0,endPoint:void 0,expiresIn:void 0},o=e.replace("#","").split("&");return t(o).each(function(e,t){var o=t.split("="),r=o[0],i=o[1];"access_token"===r?n.accessToken=i:"endpointURL"===r?n.endPoint=i:"expires_in"===r&&(n.expiresIn=i)}),n}function r(){var n="undefined"!=typeof e.tradableEmbedConfig?e.tradableEmbedConfig:e.tradableConfig;if("undefined"==typeof n){var o=0!==t("#tradable-embed").length?"#tradable-embed":0!==t("#tradable").length?"#tradable":"#tradable-api";n={appId:t(o).attr("data-app-id"),appKey:t(o).attr("data-app-key"),redirectURI:t(o).attr("data-redirect-uri"),customOAuthURL:t(o).attr("data-custom-oauth-url"),customOAuthHost:t(o).attr("data-custom-oauth-host")}}return n}function i(){var e=tradableConfig.redirectURI?tradableConfig.redirectURI:location.href;return encodeURIComponent(e)}function c(e){var t={},n=tradableConfig.customOAuthURL,o=tradableConfig.customOAuthHost,r="api.tradable.com/";Q>2e5&&(r="api-staging.tradable.com/",console.log("Starting in staging mode...")),o&&(r=o);var i="https://"+r+"oauth/authorize?client_id="+Q+"&scope=trade&response_type=token&redirect_uri="+e,c=n?n:i;return t.oauthHost=r,t.oauthURL=c,t}function a(){var e={};return e.token=localStorage.getItem("accessToken:"+Q),e.authEndpoint=localStorage.getItem("authEndpoint:"+Q),e.tradingEnabled=localStorage.getItem("tradingEnabled:"+Q),e.expirationTimeUTC=localStorage.getItem("expirationTimeUTC:"+Q),!e.tradingEnabled||e.authEndpoint&&e.token&&e.expirationTimeUTC||(e.tradingEnabled=!1,u()&&localStorage.setItem("tradingEnabled:"+Q,e.tradingEnabled)),e}function u(){var e="test";try{return localStorage.setItem(e,"1"),localStorage.removeItem(e),!0}catch(t){return!1}}function s(e,t){var n=window.screenLeft?window.screenLeft:window.screenX,o=window.screenTop?window.screenTop:window.screenY,r=420,i=500,c=n+window.innerWidth/2-r/2,a=o+window.innerHeight/2-i/2;return window.open(e,t,"toolbar=no, titlebar=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width="+r+", height="+i+", top="+a+", left="+c)}function d(e){if("number"!=typeof e)return 0;var t=String(e).replace(",",".").split(".")[1];return t?t.length:0}function l(e,t){var n=!1;return ue.tradingEnabled&&(ue.tradingEnabled=!1,n=!0),v(),g().then(function(){return console.log("Instruments ready"),n&&(ue.tradingEnabled=!0,q()),e&&"function"==typeof e?e(ue.accounts):this},function(e){return t&&"function"==typeof t?t(e):this})}function f(e,t){return p(ue.selectedAccountId,e,t)}function p(e,t,n){return ue.makeAccountRequest("GET",e,"instruments/",null,t,n)}function h(){return"FULL_INSTRUMENT_LIST"===ue.selectedAccount.instrumentRetrieval}function m(e){var n=!0;return t(ue.accounts).each(function(t,o){o.uniqueId===e&&"FULL_INSTRUMENT_LIST"!==o.instrumentRetrieval&&(n=!1)}),n}function g(){var e=new t.Deferred;return h()?f().then(function(t){y(t),e.resolve(ue.availableInstruments)},function(t){e.reject(t)}):(le=[],ue.searchInstruments("EUR").then(function(e){return A(e),ue.searchInstruments("AUD")}).then(function(e){return A(e),ue.searchInstruments("USD")}).then(function(e){return A(e),ue.getPrices(le)}).then(function(){e.resolve(ue.availableInstruments)},function(t){e.reject(t)})),e}function A(e){var n=0;t(e).each(function(e,t){(6===t.symbol.length||7===t.symbol.length)&&16>n&&(le.push(t.instrumentId),n++)})}function v(){ue.availableCategories.splice(0,ue.availableCategories.length),ue.availableInstruments.splice(0,ue.availableInstruments.length),ue.availableSymbols.splice(0,ue.availableSymbols.length),ue.availableCurrencies.splice(0,ue.availableCurrencies.length),ue.instrumentKeysForAccountUpdates.splice(0,ue.instrumentKeysForAccountUpdates.length),fe={}}function I(e){return"undefined"!=typeof fe[e]}function y(e){function n(e){var n=["100","200","225","spx","h33","nas","u30","e50","f40","d30","e35","i40","z30","s30","uso","uko"];-1===t.inArray(e,ue.availableCurrencies)&&-1===t.inArray(e,n)&&ue.availableCurrencies.push(e)}t(e).each(function(e,o){if(!I(o.instrumentId)){ue.availableInstruments.push(o),ue.availableSymbols.push(o.symbol);var r=o.symbol.replace("/","");if(("FOREX"===o.type||"CFD"===o.type)&&6===r.length){var i=r.toLowerCase().substring(0,3),c=r.toLowerCase().substring(3,6);n(i),n(c)}-1===t.inArray(o.type,ue.availableCategories)&&ue.availableCategories.push(o.type),fe[o.instrumentId]=!0}})}function T(e){var n=[];return t(e).each(function(e,t){I(t)||n.push(t)}),n}function b(){ue.instrumentKeysForAccountUpdates.length&&ue.instrumentKeysForAccountUpdates.splice(0,ue.instrumentKeysForAccountUpdates.length)}function P(){ue.accountIdsToExclude.splice(0,ue.accountIdsToExclude.length)}function O(e,t){ue.excludeCurrentAccount(),ue.accounts.length>0?E():ue.signOut(),e.reject(t),ue.initializingAccount=!1}function E(){console.log("Validating token..."),ue.getAccounts().then(function(){ue.enableTrading(ue.accessToken,ue.authEndpoint)},function(){R(!1)})}function k(e,n){var o=new t.Deferred;console.log("Accounts initialized");var r,i=localStorage.getItem("selectedAccount:"+Q),c=ue.accounts.length-1;return e&&ue.accounts.length>n?r=ue.accounts[c].uniqueId:i&&ue.accountMap[i]?r=i:c>=0&&(r=ue.accounts[c].uniqueId),b(),r?ue.setSelectedAccount(r,function(){ue.tradingEnabled||R(!0),o.resolve()},function(e){o.reject(e)}):(ue.signOut(),o.reject()),o}function R(e){ue.tradingEnabled=e,u()&&localStorage.setItem("tradingEnabled:"+Q,ue.tradingEnabled),S()}function S(){t(ue.readyCallbacks).each(function(e,t){M(t)}),L("embedReady"),ue.notifiedCallbacks=!0}function w(){if(ue.tradingEnabled&&!ue.initializingAccount&&!pe&&(oe.length>0||void 0!==typeof te.accountUpdated)){pe=!0;var e=[];t(ue.instrumentKeysForAccountUpdates).each(function(n,o){var r=o.substring(0,o.indexOf(":"));-1===t.inArray(r,e)&&e.push(r)}),ue.getSnapshot(e).then(function(e){return ue.lastSnapshot=e,U(e)}).then(function(e){ue.tradingEnabled&&!ue.initializingAccount&&(t.each(oe,function(t,n){M(n,e)}),L("accountUpdated",e)),pe=!1},function(){pe=!1})}}function U(e){var n=new t.Deferred;if(h())n.resolve(e);else{var o=[],r=function(e,t){I(t.instrumentId)||o.push(t.instrumentId)};t(e.positions.open).each(r),t(e.orders.pending).each(r),o.length?ue.getInstrumentsFromIds(o).then(function(){n.resolve(e)}):n.resolve(e)}return n}function F(){R(!1),t(ie).each(function(e,t){M(t)}),L("tokenExpired")}function C(e){t(ae).each(function(t,n){M(n,e)}),L("error",e)}function q(){t(ne).each(function(e,t){M(t)}),L("accountSwitch")}function x(){R(!1),L("reLoginRequired")}function L(e,t){if(ue.isEventValid(e)){if(void 0!==typeof te[e])for(var n in te[e])te[e].hasOwnProperty(n)&&M(te[e][n],t)}else console.error("Careful, can't notify '"+e+"', it's an invalid event name")}function M(e,t){try{if(t)return e(t);e()}catch(n){console.error(n)}}function _(e){ue.selectedAccount.uniqueId!==se&&(D(),se=ue.selectedAccount.uniqueId),de||(de=new N,de.orders=K(e.orders.pending,"orders",!0),de.cancelledOrders=K(e.orders.recentlyCancelled,"cancelledOrders",!0),de.positions=K(e.positions.open,"positions",!0),de.closedPositions=K(e.positions.recentlyClosed,"closedPositions",!0));var t=new N(K(e.orders.pending,"orders"),K(e.orders.recentlyCancelled,"cancelledOrders"),K(e.positions.open,"positions"),K(e.positions.recentlyClosed,"closedPositions"));return t.getTotal()>0&&L("execution",t),t}function D(){de=void 0}function N(e,t,n,o){this.orders=e?e:[],this.cancelledOrders=t?t:[],this.positions=n?n:[],this.closedPositions=o?o:[],this.getTotal=function(){return this.orders.length+this.cancelledOrders.length+this.positions.length+this.closedPositions.length}}function K(e,n,o){for(var r=[],i=0;i-1&&(r=!0)}),r}function G(e,n){return t.grep(n,function(t){return t.indexOf(e)<0})}function W(e){return e.id+(e.type?"":0!==e.amount?e.side+e.amount:e.lastModified)}function z(e,t,n){return t||n?e.then(function(e){return"function"==typeof t?t(e):void 0},function(e,t,o){return"function"==typeof n?n(e,t,o):void 0}):e.promise()}function B(){var e=new t.Deferred;if(ue.selectedAccount.brokerId<0&&1===ue.allAccounts.length)return e.resolve(),e;var n={tokenValue:ue.accessToken};return ue.makeOsRequest("internal","POST","","signOut",n).then(function(){e.resolve()},function(){e.reject()}),e}function V(e){var t,n,o=0;if(0===e.length)return o;for(t=0;t0&&"number"==typeof e))throw"Please specify a valid update frequency";ue.accountUpdateMillis=e,ue.accountUpdateInterval&&(clearInterval(ue.accountUpdateInterval),ue.accountUpdateInterval=setInterval(w,ue.accountUpdateMillis))},addSymbolToUpdates:function(e,t){console.warn("'addSymbolToUpdates' is now deprecated, 'addInstrumentIdToUpdates' should now be used instead."),ue.addInstrumentIdToUpdates(e,t)},removeSymbolFromUpdates:function(e,t){console.warn("'removeSymbolFromUpdates' is now deprecated, 'removeInstrumentIdFromUpdates' should now be used instead."),ue.removeInstrumentIdFromUpdates(e,t)},addInstrumentIdToUpdates:function(e,n){if(-1!==e.indexOf(":"))throw"It is not allowed to include a colon ':' in the updateClientId";var o=n+":"+e;-1===t.inArray(o,ue.instrumentKeysForAccountUpdates)&&ue.instrumentKeysForAccountUpdates.push(o)},removeInstrumentIdFromUpdates:function(e,n){var o=n+":"+e;ue.instrumentKeysForAccountUpdates=t.grep(ue.instrumentKeysForAccountUpdates,function(e){return e!==o})},onAccountSwitch:function(e){ue.saveCallback(e,ne)},onTokenExpired:function(e){ue.saveCallback(e,ie)},onError:function(e){ue.saveCallback(e,ae)},saveCallback:function(e,n){e&&-1===t.inArray(e,n)&&n.push(e)},tokenWillExpireInterval:null,initTokenWillExpire:function(){function e(){var e=ue.getRemainingTokenMillis();e&&e>0&&18e5>e&&(t(ce).each(function(t,n){n(e)}),L("tokenWillExpire",e))}null===ue.tokenWillExpireInterval&&(ue.tokenWillExpireInterval=setInterval(e,3e5))},onTokenWillExpire:function(e){ue.initTokenWillExpire(),-1===t.inArray(e,ce)&&ce.push(e)},getRemainingTokenMillis:function(){return ue.expirationTimeUTC||console.log("You need to authenticate before calling this method"),ue.expirationTimeUTC-(new Date).getTime()},listeningToExecutions:!1,initExecutions:function(){ue.listeningToExecutions||(ue.on("internalExecutionsListener","accountUpdated",_),ue.listeningToExecutions=!0)},stopExecutions:function(){ue.off("internalExecutionsListener","accountUpdated"),ue.listeningToExecutions=!1},makeOsRequest:function(e,n,o,r,i,c,a){var u,s="internal"===e?"":"v1/";if("user"!==e&&"accounts"!==e)u="https://"+ue.oauth_host;else if(void 0!==o&&null!==o&&0===o.length)u=ue.authEndpoint;else{if(!ue.accountMap[o]){console.warn("Please specify a valid accountId or method");var d=(new t.Deferred).reject("Invalid request: Please specify a valid accountId or method");return z(d,c,a)}u=ue.accountMap[o].endpointURL}var l=t.ajax({type:n,beforeSend:function(t){"internal"!==e&&t.setRequestHeader("Authorization","Bearer "+ue.accessToken),t.setRequestHeader("x-tr-embed-sdk","js-"+ue.version)},crossDomain:!0,xhrFields:{withCredentials:!0},url:o&&o.length>0?u+s+e+"/"+o+"/"+r:u+s+e+"/"+r,contentType:"application/json; charset=utf-8",data:i?JSON.stringify(i):void 0,dataType:"json"});return l.then(function(){},function(e){e.responseJSON&&(403!==e.responseJSON.httpStatus&&502!==e.responseJSON.httpStatus||(!ue.initializingAccount&&ue.isReLoginRequired(e)?x():ue.isReLoginRequired(e)||F()),ue.isReLoginRequired(e)||C(e.responseJSON))}),z(l,c,a)},makeAccountRequest:function(e,t,n,o,r,i){return ue.makeOsRequest("accounts",e,t,n,o,r,i)},initializingAccount:!1,setSelectedAccount:function(e,n,o){if(ue.accountMap[e]){ue.lastSnapshot=void 0,ue.selectedAccount=ue.accountMap[e],ue.selectedAccountId=e,console.log("New accountId is set"),ue.initializingAccount=!0;var r=t.Deferred();return l(function(){u()&&localStorage.setItem("selectedAccount:"+Q,e),ue.initializingAccount=!1,r.resolve()},function(t){ue.isReLoginRequired(t)?ue.reLogin().then(function(){ue.setSelectedAccount(e).then(function(){ue.initializingAccount=!1,R(!0),r.resolve()})},function(){O(r,t)}):O(r,t)}),z(r,n,o)}console.error("Can't set account id to: "+e)},isReLoginRequired:function(e){return!!e&&!!e.responseJSON&&403===e.responseJSON.httpStatus&&1005===e.responseJSON.code},excludeCurrentAccount:function(){var e=ue.selectedAccountId,t=ue.accounts.indexOf(ue.selectedAccount);t>-1&&(ue.accounts.splice(t,1),delete ue.accountMap[e],ue.accountIdsToExclude.push(e))},getInstrumentFromSymbol:function(e){return e?ue.getInstrumentForProperty(ue.availableInstruments,"symbol",e):null},getInstrumentFromId:function(e){return e&&ue.tradingEnabled?I(e)?ue.getInstrumentForProperty(ue.availableInstruments,"instrumentId",e):(console.warn("Instrument Id not found..."),null):null},getInstrumentFromBrokerageAccountSymbol:function(e){return ue.getInstrumentForProperty(ue.availableInstruments,"brokerageAccountSymbol",e)},getInstrumentForProperty:function(e,n,o){var r=null;return t(e).each(function(e,t){return t[n].toUpperCase()===o.toUpperCase()?(r=t,!1):void 0}),r},calculatePipSize:function(e){var t=ue.getInstrumentFromId(e);if(!t)throw"Instrument not found for the given instrumentId: "+e;var n=t.pipPrecision;return n>0?1/Math.pow(10,n):1},calculatePipDistance:function(e,t,n){var o=ue.getInstrumentFromId(e);if(!o)throw"Instrument not found for the given instrumentId: "+e;var r=o.pipPrecision?o.pipPrecision:0,i=(n-t)*Math.pow(10,r);return Math.round(10*i)/10},calculateExpectedProfitOrLoss:function(e,t,n){return Math.round(e*t*n*100)/100},calculatePositionSizeForRiskPercentage:function(e,t,n,o,r){return ue.calculatePositionSize(e,t,!1,n,o,r)},calculatePositionSizeForRiskAmount:function(e,t,n,o,r){return ue.calculatePositionSize(e,t,!0,n,o,r)},calculatePositionSize:function(e,t,n,o,r,i){var c=i;if(!c&&ue.lastSnapshot)c=ue.lastSnapshot.metrics.equity;else if(!i)throw"Please provide the equity or subscribe to account updates before calling calculatePositionSizeForAccount.";if(!n&&t>100)throw"Please provide a valid risk value: riskIsMoney is false but the provided risk is not a percentage..";var a=n?t:c*t/100,u=a/o/r,s=ue.getInstrumentFromId(e);if(s.multipleOfMinAmount)u=Math.floor(u/s.minAmount)*s.minAmount;else{var l=d(s.minAmount),f=Math.pow(10,l);u=Math.floor(u*f)/f}return u},getAccountById:function(e){return ue.accountMap[e]},getUser:function(e,t){return ue.makeOsRequest("user","GET","","",null,e,t)},getAppInfo:function(e,t){return ue.makeOsRequest("apps","GET","",ue.app_id,null,e,t)},getBrokers:function(e,t){return ue.makeOsRequest("brokers","GET","","",null,e,t)},APP_KEY_MISSING:"Please specify your 'appKey' in the tradable config object or the 'data-app-key' attribute in the tradable core script tag.",authenticateWithCredentials:function(e,n,o,r,i,c){var a=new t.Deferred;"function"==typeof r&&("function"==typeof i&&(c=i),i=r),P();var u={appId:ue.app_id,brokerId:e,login:n,password:o};if(!ue.app_key)throw ue.APP_KEY_MISSING;return u.appKey=ue.app_key,"string"==typeof r?u.externalId=r:"undefined"!=typeof ue.external_id&&(u.externalId=ue.external_id),ue.makeAuthenticationRequest(a,"authenticate",u),z(a,i,c)},createDemoAccount:function(e,n,o){var r=new t.Deferred,i={appId:ue.app_id,type:e};if(!ue.app_key)throw ue.APP_KEY_MISSING;return i.appKey=ue.app_key,ue.makeAuthenticationRequest(r,"createDemoAccount",i),z(r,n,o)},makeAuthenticationRequest:function(e,t,n){var o;return ue.makeOsRequest(t,"POST","","",n).then(function(e){return o=e,ue.enableTrading(e.apiTokenValue,e.apiEndpoint,e.expires)}).then(function(){e.resolve(o)},function(t){e.reject(t)})},createForexDemoAccount:function(e,t){return ue.createDemoAccount("FOREX",e,t)},createStocksDemoAccount:function(e,t){return ue.createDemoAccount("STOCKS",e,t)},refreshAuthentication:function(e,n,o,r){var i=new t.Deferred,c={refreshTokenValue:e};return n&&(c={refreshTokenValue:e,appSecret:n}),ue.makeAuthenticationRequest(i,"refreshAuthentication",c),z(i,o,r)},getAccounts:function(e,n){var o=ue.makeAccountRequest("GET","","",null).then(function(e){ue.accounts.splice(0,ue.accounts.length),ue.allAccounts.splice(0,ue.allAccounts.length),ue.accountMap={},t(e.accounts).each(function(e,t){t.uniqueId&&"NA"!==t.uniqueId&&ue.accountIdsToExclude.indexOf(t.uniqueId)<=-1&&(ue.accounts.push(t),ue.accountMap[t.uniqueId]=t),ue.allAccounts.push(t)})});return z(o,e,n)},getCandles:function(e,t,n,o,r,i){return ue.getCandlesForAccount(ue.selectedAccountId,e,t,n,o,r,i)},getCandlesForAccount:function(e,t,n,o,r,i,c){var a={instrumentId:t,from:n,to:o,aggregation:r};return ue.makeAccountRequest("POST",e,"candles/",a,i,c)},subscribedCandleId:void 0,lastReceivedCandle:void 0,startCandleUpdates:function(e,n,o,r){function i(){ue.on("internalCandleUpdates","accountUpdated",function(n){var o=a(e,n.prices);if(ue.lastReceivedCandle&&o&&o.bid){var i=JSON.stringify(t.extend({},ue.lastReceivedCandle));if(c(o,u),i!==JSON.stringify(ue.lastReceivedCandle)){var s=[];return s.push(ue.lastReceivedCandle),r(s)}}})}function c(e,t){var n=e.bid;if(Date.now()-ue.lastReceivedCandle.timestamp>=t){ue.lastReceivedCandle.timestamp=ue.lastReceivedCandle.timestamp+t;var o=ue.lastReceivedCandle.close;ue.lastReceivedCandle.open=o,ue.lastReceivedCandle.high=o,ue.lastReceivedCandle.low=o}ue.lastReceivedCandle.close=n,n>ue.lastReceivedCandle.high&&(ue.lastReceivedCandle.high=n),no[r]?e:t;return o.length>n.length?t:void 0},!("undefined"!=typeof highest(e,t)&&highest(e,t)===t)}"undefined"!=typeof console&&"function"==typeof console.log&&"function"==typeof console.warn&&"function"==typeof console.error||(console={log:function(){},warn:function(){},error:function(){}}),"undefined"==typeof jQuery?console.warn("tradable requires jQuery to run"):isGreaterOrEqualMinVersion(jQuery.fn.jquery,"2.1.4")||console.warn("tradable requires jQuery version 2.1.4 or above");var trEmbJQ=jQuery.noConflict(!0),jsGlobalObject="undefined"!=typeof window?window:"undefined"!=typeof self?self:"undefined"!=typeof global?global:this;!function(e,t){"use strict";function n(){function e(e,t){t.tradingEnabled=!1,u()&&localStorage.setItem("tradingEnabled:"+Y,!1);var n=o(e);return n.accessToken&&n.endPoint?(t.enableTrading(n.accessToken,n.endPoint,n.expiresIn),"osLaunch"===window.name&&window.close(),!0):!1}var n=!1,r=window.opener;if(r&&"osBrokerSignUp"===window.name)window.close();else if(r&&"osLaunch"===window.name){var i=window.location.hash;if(i){try{r.postMessage("replace your location","*"),n=e(i,r.tradable)}catch(c){n=!1}n||(n=e(i,se))}}else window.location.hash&&-1!==window.location.hash.indexOf("access_token")&&-1!==window.location.hash.indexOf("endpointURL")&&-1!==window.location.hash.indexOf("expires_in")?n=e(window.location.hash,se):se.tradingEnabled&&(E(),n=!0);n||(se.log("Initiating without authentication..."),t(document).ready(function(){w()}))}function o(e){var n={accessToken:void 0,endPoint:void 0,expiresIn:void 0},o=e.replace("#","").split("&");return t(o).each(function(e,t){var o=t.split("="),r=o[0],i=o[1];"access_token"===r?n.accessToken=i:"endpointURL"===r?n.endPoint=i:"expires_in"===r&&(n.expiresIn=i)}),n}function r(){var n="undefined"!=typeof e.tradableEmbedConfig?e.tradableEmbedConfig:e.tradableConfig;if("undefined"==typeof n){var o=0!==t("#tradable-embed").length?"#tradable-embed":0!==t("#tradable").length?"#tradable":"#tradable-api";n={appId:t(o).attr("data-app-id"),appKey:t(o).attr("data-app-key"),redirectURI:t(o).attr("data-redirect-uri"),customOAuthURL:t(o).attr("data-custom-oauth-url"),customOAuthHost:t(o).attr("data-custom-oauth-host")}}return n}function i(){var e=tradableConfig.redirectURI?tradableConfig.redirectURI:location.href;return encodeURIComponent(e)}function c(e){var t={},n=tradableConfig.customOAuthURL,o=tradableConfig.customOAuthHost,r="api.tradable.com/";Y>2e5&&(r="api-staging.tradable.com/",se.log("Starting in staging mode...")),o&&(r=o);var i="https://"+r+"oauth/authorize?client_id="+Y+"&scope=trade&response_type=token&redirect_uri="+e,c=n?n:i;return t.oauthHost=r,t.oauthURL=c,t}function a(){var e={};return e.token=localStorage.getItem("accessToken:"+Y),e.authEndpoint=localStorage.getItem("authEndpoint:"+Y),e.tradingEnabled=localStorage.getItem("tradingEnabled:"+Y),e.expirationTimeUTC=localStorage.getItem("expirationTimeUTC:"+Y),!e.tradingEnabled||e.authEndpoint&&e.token&&e.expirationTimeUTC||(e.tradingEnabled=!1,u()&&localStorage.setItem("tradingEnabled:"+Y,e.tradingEnabled)),e}function u(){var e="test";try{return localStorage.setItem(e,"1"),localStorage.removeItem(e),!0}catch(t){return!1}}function s(e,t){var n=window.screenLeft?window.screenLeft:window.screenX,o=window.screenTop?window.screenTop:window.screenY,r=420,i=500,c=n+window.innerWidth/2-r/2,a=o+window.innerHeight/2-i/2;return window.open(e,t,"toolbar=no, titlebar=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width="+r+", height="+i+", top="+a+", left="+c)}function d(e){if("number"!=typeof e)return 0;var t=String(e).replace(",",".").split(".")[1];return t?t.length:0}function l(e,n){var o=!1;se.tradingEnabled&&(se.tradingEnabled=!1,o=!0),v();var r=new t.Deferred;return m().then(function(){se.log("Instruments ready"),o&&(se.tradingEnabled=!0,x()),r.resolve(se.accounts)},function(e){r.reject(e)}),B(r,e,n)}function f(e,t){return p(se.selectedAccountId,e,t)}function p(e,t,n){return se.makeAccountRequest("GET",e,"instruments/",null,t,n)}function h(){return"FULL_INSTRUMENT_LIST"===se.selectedAccount.instrumentRetrieval}function g(e){var n=!0;return t(se.accounts).each(function(t,o){o.uniqueId===e&&"FULL_INSTRUMENT_LIST"!==o.instrumentRetrieval&&(n=!1)}),n}function m(){var e=new t.Deferred;return h()?f().then(function(t){y(t),e.resolve(se.availableInstruments)},function(t){e.reject(t)}):(fe=[],se.searchInstruments("EUR").then(function(e){return A(e),se.searchInstruments("AUD")}).then(function(e){return A(e),se.searchInstruments("USD")}).then(function(e){return A(e),se.getPrices(fe)}).then(function(){e.resolve(se.availableInstruments)},function(t){e.reject(t)})),e}function A(e){var n=0;t(e).each(function(e,t){(6===t.symbol.length||7===t.symbol.length)&&16>n&&(fe.push(t.instrumentId),n++)})}function v(){se.availableCategories.splice(0,se.availableCategories.length),se.availableInstruments.splice(0,se.availableInstruments.length),se.availableSymbols.splice(0,se.availableSymbols.length),se.availableCurrencies.splice(0,se.availableCurrencies.length),se.instrumentKeysForAccountUpdates.splice(0,se.instrumentKeysForAccountUpdates.length),pe={}}function I(e){return"undefined"!=typeof pe[e]}function y(e){function n(e){var n=["100","200","225","spx","h33","nas","u30","e50","f40","d30","e35","i40","z30","s30","uso","uko"];-1===t.inArray(e,se.availableCurrencies)&&-1===t.inArray(e,n)&&se.availableCurrencies.push(e)}t(e).each(function(e,o){if(!I(o.instrumentId)){se.availableInstruments.push(o),se.availableSymbols.push(o.symbol);var r=o.symbol.replace("/","");if(("FOREX"===o.type||"CFD"===o.type)&&6===r.length){var i=r.toLowerCase().substring(0,3),c=r.toLowerCase().substring(3,6);n(i),n(c)}-1===t.inArray(o.type,se.availableCategories)&&se.availableCategories.push(o.type),pe[o.instrumentId]=!0}})}function T(e){var n=[];return t(e).each(function(e,t){I(t)||n.push(t)}),n}function b(){se.instrumentKeysForAccountUpdates.length&&se.instrumentKeysForAccountUpdates.splice(0,se.instrumentKeysForAccountUpdates.length)}function O(){se.accountIdsToExclude.splice(0,se.accountIdsToExclude.length)}function P(e,t){var n=se.accounts.length;se.excludeCurrentAccount(),se.log("Account initialization failed.."),se.accounts.length>0?(se.log("Resetting to previous account"),R(!1,n).then(function(){se.initializingAccount=!1},function(){se.initializingAccount=!1})):(se.log("No more accounts available, signing out.."),se.signOut(),se.initializingAccount=!1),e.reject(t)}function E(){se.log("Validating token..."),se.getAccounts().then(function(){se.enableTrading(se.accessToken,se.authEndpoint)},function(){S(!1)})}function k(e,t){var n,o=localStorage.getItem("selectedAccount:"+Y),r=se.accounts.length-1;return e&&se.accounts.length>t?n=se.accounts[r].uniqueId:o&&se.accountMap[o]?n=o:r>=0&&(n=se.accounts[r].uniqueId),n}function R(e,n){var o=new t.Deferred,r=k(e,n);return b(),r?se.setSelectedAccount(r,function(){S(!0),o.resolve()},function(e){o.reject(e)}):(se.signOut(),o.reject()),o}function S(e){e!==se.tradingEnabled&&(se.tradingEnabled=e,se.log("Embed ready: "+se.tradingEnabled),u()&&localStorage.setItem("tradingEnabled:"+Y,se.tradingEnabled),w())}function w(){t(se.readyCallbacks).each(function(e,t){_(t)}),M("embedReady"),se.notifiedCallbacks=!0}function U(){if(se.tradingEnabled&&!se.initializingAccount&&!he&&(re.length>0||void 0!==typeof ne.accountUpdated)){var e=se.selectedAccountId;he=!0;var n=[];t(se.instrumentKeysForAccountUpdates).each(function(e,o){var r=o.substring(0,o.indexOf(":"));-1===t.inArray(r,n)&&n.push(r)}),se.getSnapshot(n).then(function(n){return e===se.selectedAccountId?(se.lastSnapshot=n,F(n)):(new t.Deferred).reject()}).then(function(e){se.tradingEnabled&&!se.initializingAccount&&(t.each(re,function(t,n){_(n,e)}),M("accountUpdated",e)),he=!1},function(){he=!1})}}function F(e){var n=new t.Deferred;if(h())n.resolve(e);else{var o=[],r=function(e,t){I(t.instrumentId)||o.push(t.instrumentId)};t(e.positions.open).each(r),t(e.orders.pending).each(r),o.length?se.getInstrumentsFromIds(o).then(function(){n.resolve(e)},function(e){n.reject(e)}):n.resolve(e)}return n}function C(){se.log("Token expired"),S(!1),t(ce).each(function(e,t){_(t)}),M("tokenExpired")}function q(e){t(ue).each(function(t,n){_(n,e)}),M("error",e)}function x(){se.log("Account switched: "+se.selectedAccount.displayName),t(oe).each(function(e,t){_(t)}),M("accountSwitch")}function L(){S(!1),M("reLoginRequired")}function M(e,t){if(se.isEventValid(e)){if(void 0!==typeof ne[e])for(var n in ne[e])ne[e].hasOwnProperty(n)&&_(ne[e][n],t)}else se.error("Careful, can't notify '"+e+"', it's an invalid event name")}function _(e,t){try{if(t)return e(t);e()}catch(n){se.error(n)}}function D(e){se.selectedAccount.uniqueId!==de&&(N(),de=se.selectedAccount.uniqueId),le||(le=new j,le.orders=K(e.orders.pending,"orders",!0),le.cancelledOrders=K(e.orders.recentlyCancelled,"cancelledOrders",!0),le.positions=K(e.positions.open,"positions",!0),le.closedPositions=K(e.positions.recentlyClosed,"closedPositions",!0));var t=new j(K(e.orders.pending,"orders"),K(e.orders.recentlyCancelled,"cancelledOrders"),K(e.positions.open,"positions"),K(e.positions.recentlyClosed,"closedPositions"));return t.getTotal()>0&&M("execution",t),t}function N(){le=void 0}function j(e,t,n,o){this.orders=e?e:[],this.cancelledOrders=t?t:[],this.positions=n?n:[],this.closedPositions=o?o:[],this.getTotal=function(){return this.orders.length+this.cancelledOrders.length+this.positions.length+this.closedPositions.length}}function K(e,n,o){for(var r=[],i=0;i-1&&(r=!0)}),r}function z(e,n){return t.grep(n,function(t){return t.indexOf(e)<0})}function W(e){return e.id+(e.type?"":0!==e.amount?e.side+e.amount:e.lastModified)}function B(e,t,n){return t||n?e.then(function(e){return"function"==typeof t?t(e):void 0},function(e,t,o){return"function"==typeof n?n(e,t,o):void 0}):e.promise()}function J(){var e=new t.Deferred;if(se.selectedAccount.brokerId<0&&1===se.allAccounts.length)return e.resolve(),e;var n={tokenValue:se.accessToken};return se.makeOsRequest("internal","POST","","signOut",n).then(function(){e.resolve()},function(){e.reject()}),e}function V(e){var t,n,o=0;if(0===e.length)return o;for(t=0;t0&&"number"==typeof e))throw"Please specify a valid update frequency";se.accountUpdateMillis=e,se.accountUpdateInterval&&(clearInterval(se.accountUpdateInterval),se.accountUpdateInterval=setInterval(U,se.accountUpdateMillis))},addSymbolToUpdates:function(e,t){se.warn("'addSymbolToUpdates' is now deprecated, 'addInstrumentIdToUpdates' should now be used instead."),se.addInstrumentIdToUpdates(e,t)},removeSymbolFromUpdates:function(e,t){se.warn("'removeSymbolFromUpdates' is now deprecated, 'removeInstrumentIdFromUpdates' should now be used instead."),se.removeInstrumentIdFromUpdates(e,t)},addInstrumentIdToUpdates:function(e,n){if(-1!==e.indexOf(":"))throw"It is not allowed to include a colon ':' in the updateClientId";var o=n+":"+e;-1===t.inArray(o,se.instrumentKeysForAccountUpdates)&&se.instrumentKeysForAccountUpdates.push(o)},removeInstrumentIdFromUpdates:function(e,n){var o=n+":"+e;se.instrumentKeysForAccountUpdates=t.grep(se.instrumentKeysForAccountUpdates,function(e){return e!==o})},onAccountSwitch:function(e){se.saveCallback(e,oe)},onTokenExpired:function(e){se.saveCallback(e,ce)},onError:function(e){se.saveCallback(e,ue)},saveCallback:function(e,n){e&&-1===t.inArray(e,n)&&n.push(e)},tokenWillExpireInterval:null,initTokenWillExpire:function(){function e(){var e=se.getRemainingTokenMillis();e&&e>0&&18e5>e&&(t(ae).each(function(t,n){n(e)}),M("tokenWillExpire",e))}null===se.tokenWillExpireInterval&&(se.tokenWillExpireInterval=setInterval(e,3e5))},onTokenWillExpire:function(e){se.initTokenWillExpire(),-1===t.inArray(e,ae)&&ae.push(e)},getRemainingTokenMillis:function(){return se.expirationTimeUTC||se.log("You need to authenticate before calling this method"),se.expirationTimeUTC-(new Date).getTime()},listeningToExecutions:!1,initExecutions:function(){se.listeningToExecutions||(se.on("internalExecutionsListener","accountUpdated",D),se.listeningToExecutions=!0)},stopExecutions:function(){se.off("internalExecutionsListener","accountUpdated"),se.listeningToExecutions=!1},makeOsRequest:function(e,n,o,r,i,c,a){var u,s="internal"===e?"":"v1/";if("user"!==e&&"accounts"!==e)u="https://"+se.oauth_host;else if(void 0!==o&&null!==o&&0===o.length)u=se.authEndpoint;else{if(!se.accountMap[o]){se.warn("Please specify a valid accountId or method");var d=(new t.Deferred).reject("Invalid request: Please specify a valid accountId or method");return B(d,c,a)}u=se.accountMap[o].endpointURL}var l=t.ajax({type:n,beforeSend:function(t){"internal"!==e&&t.setRequestHeader("Authorization","Bearer "+se.accessToken),t.setRequestHeader("x-tr-embed-sdk","js-"+se.version)},crossDomain:!0,xhrFields:{withCredentials:!0},url:o&&o.length>0?u+s+e+"/"+o+"/"+r:u+s+e+"/"+r,contentType:"application/json; charset=utf-8",data:i?JSON.stringify(i):void 0,dataType:"json"});return l.then(function(){},function(e){e.responseJSON&&(se.initializingAccount||403!==e.responseJSON.httpStatus&&502!==e.responseJSON.httpStatus||(se.isReLoginRequired(e)?L():se.isTokenExpiredCode(e)?C():se.isReLoginRequired(e)||S(!1)),se.isReLoginRequired(e)||q(e.responseJSON))}),B(l,c,a)},makeAccountRequest:function(e,t,n,o,r,i){return se.makeOsRequest("accounts",e,t,n,o,r,i)},initializingAccount:!1,setSelectedAccount:function(e,n,o){if(se.accountMap[e]){se.lastSnapshot=void 0,se.selectedAccount=se.accountMap[e],se.selectedAccountId=e,se.log("Setting account: "+(e&&e.length?e.substring(0,e.length/2):e)+".."),se.initializingAccount=!0;var r=t.Deferred();return l(function(){u()&&localStorage.setItem("selectedAccount:"+Y,e),se.initializingAccount=!1,r.resolve()},function(t){se.isReLoginRequired(t)?se.reLogin().then(function(){se.setSelectedAccount(e).then(function(){S(!0),r.resolve()})},function(){P(r,t)}):P(r,t)}),B(r,n,o)}se.error("Can't set account id to: "+e)},isReLoginRequired:function(e){return!!e&&!!e.responseJSON&&403===e.responseJSON.httpStatus&&1005===e.responseJSON.code},isTokenExpiredCode:function(e){return!!e&&!!e.responseJSON&&403===e.responseJSON.httpStatus&&1007===e.responseJSON.code},excludeCurrentAccount:function(){var e=se.selectedAccountId,t=se.accounts.indexOf(se.selectedAccount);t>-1&&(se.accounts.splice(t,1),delete se.accountMap[e],se.accountIdsToExclude.push(e))},getInstrumentFromSymbol:function(e){return e?se.getInstrumentForProperty(se.availableInstruments,"symbol",e):null},getInstrumentFromId:function(e){return e&&se.tradingEnabled?I(e)?se.getInstrumentForProperty(se.availableInstruments,"instrumentId",e):(se.warn("Instrument Id not found..."),null):null},getInstrumentFromBrokerageAccountSymbol:function(e){return se.getInstrumentForProperty(se.availableInstruments,"brokerageAccountSymbol",e)},getInstrumentForProperty:function(e,n,o){var r=null;return t(e).each(function(e,t){return t[n].toUpperCase()===o.toUpperCase()?(r=t,!1):void 0}),r},calculatePipSize:function(e){var t=se.getInstrumentFromId(e);if(!t)throw"Instrument not found for the given instrumentId: "+e;var n=t.pipPrecision;return n>0?1/Math.pow(10,n):1},calculatePipDistance:function(e,t,n){var o=se.getInstrumentFromId(e);if(!o)throw"Instrument not found for the given instrumentId: "+e;var r=o.pipPrecision?o.pipPrecision:0,i=(n-t)*Math.pow(10,r);return Math.round(10*i)/10},calculateExpectedProfitOrLoss:function(e,t,n){return Math.round(e*t*n*100)/100},calculatePositionSizeForRiskPercentage:function(e,t,n,o,r){return se.calculatePositionSize(e,t,!1,n,o,r)},calculatePositionSizeForRiskAmount:function(e,t,n,o,r){return se.calculatePositionSize(e,t,!0,n,o,r)},calculatePositionSize:function(e,t,n,o,r,i){var c=i;if(!c&&se.lastSnapshot)c=se.lastSnapshot.metrics.equity;else if(!i)throw"Please provide the equity or subscribe to account updates before calling calculatePositionSizeForAccount.";if(!n&&t>100)throw"Please provide a valid risk value: riskIsMoney is false but the provided risk is not a percentage..";var a=n?t:c*t/100,u=a/o/r,s=se.getInstrumentFromId(e);if(s.multipleOfMinAmount)u=Math.floor(u/s.minAmount)*s.minAmount;else{var l=d(s.minAmount),f=Math.pow(10,l);u=Math.floor(u*f)/f}return u},getAccountById:function(e){return se.accountMap[e]},getUser:function(e,t){return se.makeOsRequest("user","GET","","",null,e,t)},getAppInfo:function(e,t){return se.makeOsRequest("apps","GET","",se.app_id,null,e,t)},getBrokers:function(e,t){return se.makeOsRequest("brokers","GET","","",null,e,t)},APP_KEY_MISSING:"Please specify your 'appKey' in the tradable config object or the 'data-app-key' attribute in the tradable core script tag.",authenticateWithCredentials:function(e,n,o,r,i,c){var a=new t.Deferred;"function"==typeof r&&("function"==typeof i&&(c=i),i=r),O();var u={appId:se.app_id,brokerId:e,login:n,password:o};if(!se.app_key)throw se.APP_KEY_MISSING;return u.appKey=se.app_key,"string"==typeof r?u.externalId=r:"undefined"!=typeof se.external_id&&(u.externalId=se.external_id),se.makeAuthenticationRequest(a,"authenticate",u),B(a,i,c)},createDemoAccount:function(e,n,o){var r=new t.Deferred,i={appId:se.app_id,type:e};if(!se.app_key)throw se.APP_KEY_MISSING;return i.appKey=se.app_key,se.makeAuthenticationRequest(r,"createDemoAccount",i),B(r,n,o)},makeAuthenticationRequest:function(e,t,n){var o;return se.makeOsRequest(t,"POST","","",n).then(function(e){return o=e,se.enableTrading(e.apiTokenValue,e.apiEndpoint,e.expires)}).then(function(){e.resolve(o)},function(t){e.reject(t)})},createForexDemoAccount:function(e,t){return se.createDemoAccount("FOREX",e,t)},createStocksDemoAccount:function(e,t){return se.createDemoAccount("STOCKS",e,t)},refreshAuthentication:function(e,n,o,r){var i=new t.Deferred,c={refreshTokenValue:e};return n&&(c={refreshTokenValue:e,appSecret:n}),se.makeAuthenticationRequest(i,"refreshAuthentication",c),B(i,o,r)},getAccounts:function(e,n){var o=se.makeAccountRequest("GET","","",null).then(function(e){se.accounts.splice(0,se.accounts.length),se.allAccounts.splice(0,se.allAccounts.length),se.accountMap={},t(e.accounts).each(function(e,t){t.uniqueId&&"NA"!==t.uniqueId&&se.accountIdsToExclude.indexOf(t.uniqueId)<=-1&&(se.accounts.push(t),se.accountMap[t.uniqueId]=t),se.allAccounts.push(t)}),se.log("Accounts initialized")});return B(o,e,n)},getCandles:function(e,t,n,o,r,i){return se.getCandlesForAccount(se.selectedAccountId,e,t,n,o,r,i)},getCandlesForAccount:function(e,t,n,o,r,i,c){var a={instrumentId:t,from:n,to:o,aggregation:r};return se.makeAccountRequest("POST",e,"candles/",a,i,c)},subscribedCandleId:void 0,lastReceivedCandle:void 0,startCandleUpdates:function(e,n,o,r){function i(){se.on("internalCandleUpdates","accountUpdated",function(n){var o=a(e,n.prices);if(se.lastReceivedCandle&&o&&o.bid){var i=JSON.stringify(t.extend({},se.lastReceivedCandle));if(c(o,u),i!==JSON.stringify(se.lastReceivedCandle)){var s=[];return s.push(se.lastReceivedCandle),r(s)}}})}function c(e,t){var n=e.bid;if(Date.now()-se.lastReceivedCandle.timestamp>=t){se.lastReceivedCandle.timestamp=se.lastReceivedCandle.timestamp+t;var o=se.lastReceivedCandle.close;se.lastReceivedCandle.open=o,se.lastReceivedCandle.high=o,se.lastReceivedCandle.low=o}se.lastReceivedCandle.close=n,n>se.lastReceivedCandle.high&&(se.lastReceivedCandle.high=n),n 200000) { // Staging app-id
oauthHost = "api-staging.tradable.com/";
- console.log("Starting in staging mode...");
+ tradable.log("Starting in staging mode...");
}
if(customOAuthHost) {
oauthHost = customOAuthHost;
@@ -2375,25 +2382,18 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
}
resetInstrumentCache();
- return getDefaultInstruments().then(function() {
- console.log('Instruments ready');
+ var deferred = new $.Deferred();
+ getDefaultInstruments().then(function() {
+ tradable.log("Instruments ready");
if(reset) {
tradable.tradingEnabled = true;
notifyAccountSwitchCallbacks();
}
- if(!!resolve && typeof resolve === "function") {
- return resolve(tradable.accounts);
- } else {
- return this;
- }
- //return
+ deferred.resolve(tradable.accounts);
}, function(error) {
- if(!!reject && typeof reject === "function") {
- return reject(error);
- } else {
- return this;
- }
+ deferred.reject(error);
});
+ return resolveDeferred(deferred, resolve, reject);
}
@@ -2531,18 +2531,26 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
}
function excludeAndValidate(deferred, err) {
+ var accQty = tradable.accounts.length;
tradable.excludeCurrentAccount();
+ tradable.log("Account initialization failed..");
if(tradable.accounts.length > 0) {
- validateToken();
+ tradable.log("Resetting to previous account");
+ setSelectedAccountAndNotify(false, accQty).then(function() {
+ tradable.initializingAccount = false;
+ }, function() {
+ tradable.initializingAccount = false;
+ });
} else {
+ tradable.log("No more accounts available, signing out..");
tradable.signOut();
+ tradable.initializingAccount = false;
}
deferred.reject(err);
- tradable.initializingAccount = false;
}
function validateToken() {
- console.log("Validating token...");
+ tradable.log("Validating token...");
// Check token validity
tradable.getAccounts().then(
function() {
@@ -2554,10 +2562,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
);
}
- function setSelectedAccountAndNotify(set_latest_account, account_qty) {
- var deferred = new $.Deferred();
-
- console.log('Accounts initialized');
+ function getAccountIdToInitialize(set_latest_account, account_qty) {
var accountId;
var savedAccId = localStorage.getItem("selectedAccount:"+appId);
var accIdxToSelect = tradable.accounts.length - 1;
@@ -2568,12 +2573,17 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
} else if(accIdxToSelect >= 0) {
accountId = tradable.accounts[accIdxToSelect].uniqueId;
}
+ return accountId;
+ }
+
+ function setSelectedAccountAndNotify(set_latest_account, account_qty) {
+ var deferred = new $.Deferred();
+
+ var accountId = getAccountIdToInitialize(set_latest_account, account_qty);
resetUpdates();
if(accountId) {
tradable.setSelectedAccount(accountId, function() {
- if(!tradable.tradingEnabled) {
- setTradingEnabled(true);
- }
+ setTradingEnabled(true);
deferred.resolve();
}, function(error) {
deferred.reject(error);
@@ -2586,11 +2596,14 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
}
function setTradingEnabled(value) {
- tradable.tradingEnabled = value;
- if(isLocalStorageSupported()) {
- localStorage.setItem("tradingEnabled:"+appId, tradable.tradingEnabled);
+ if(value !== tradable.tradingEnabled) {
+ tradable.tradingEnabled = value;
+ tradable.log("Embed ready: " + tradable.tradingEnabled);
+ if(isLocalStorageSupported()) {
+ localStorage.setItem("tradingEnabled:"+appId, tradable.tradingEnabled);
+ }
+ notifyReadyCallbacks();
}
- notifyReadyCallbacks();
}
// Notify events
@@ -2607,6 +2620,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
function processAccountUpdate() {
if(tradable.tradingEnabled && !tradable.initializingAccount && !processingUpdate &&
(accountUpdatedCallbacks.length > 0 || typeof callbackHolder["accountUpdated"] !== undefined)) {
+ var processingAccountId = tradable.selectedAccountId;
processingUpdate = true;
var instrumentIds = [];
$(tradable.instrumentKeysForAccountUpdates).each(function(idx, elem) {
@@ -2616,8 +2630,12 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
}
});
tradable.getSnapshot(instrumentIds).then(function(account) {
- tradable.lastSnapshot = account;
- return checkInstrumentsToCache(account);
+ if(processingAccountId === tradable.selectedAccountId) {
+ tradable.lastSnapshot = account;
+ return checkInstrumentsToCache(account);
+ } else {
+ return new $.Deferred().reject();
+ }
}).then(function(account) {
if(tradable.tradingEnabled && !tradable.initializingAccount) {
$.each(accountUpdatedCallbacks, function(idx, call) {
@@ -2649,6 +2667,8 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
if(missingInstrumentIds.length) {
tradable.getInstrumentsFromIds(missingInstrumentIds).then(function() {
deferred.resolve(snapshot);
+ }, function (err) {
+ deferred.reject(err);
});
} else {
deferred.resolve(snapshot);
@@ -2659,6 +2679,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
}
function notifyTokenExpired() {
+ tradable.log("Token expired");
setTradingEnabled(false);
$(tokenExpirationCallbacks).each(function(index, callback) {
executeCallback(callback);
@@ -2674,6 +2695,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
}
function notifyAccountSwitchCallbacks() {
+ tradable.log("Account switched: " + tradable.selectedAccount.displayName);
$(accountSwitchCallbacks).each(function(index, callback) {
executeCallback(callback);
});
@@ -2695,7 +2717,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
}
}
} else {
- console.error("Careful, can't notify '" + eventName + "', it's an invalid event name");
+ tradable.error("Careful, can't notify '" + eventName + "', it's an invalid event name");
}
}
@@ -2706,7 +2728,7 @@ var jsGlobalObject = (typeof window !== "undefined") ? window :
}
callback();
} catch(err) {
- console.error(err);
+ tradable.error(err);
}
}
diff --git a/test/coverage/lcov.info b/test/coverage/lcov.info
index 67732f6..49ab151 100644
--- a/test/coverage/lcov.info
+++ b/test/coverage/lcov.info
@@ -2,570 +2,588 @@ TN:
SF:c:\Users\Oier\git\tradable-core/src/tradable.js
FN:4,(anonymous_1)
FN:4,(anonymous_2)
-FN:23,(anonymous_3)
-FN:79,(anonymous_4)
-FN:85,(anonymous_5)
-FN:92,(anonymous_6)
-FN:102,(anonymous_7)
-FN:109,(anonymous_8)
-FN:116,(anonymous_9)
-FN:122,(anonymous_10)
-FN:128,(anonymous_11)
-FN:135,(anonymous_12)
-FN:138,(anonymous_13)
-FN:157,(anonymous_14)
-FN:177,(anonymous_15)
-FN:183,(anonymous_16)
-FN:194,(anonymous_17)
-FN:207,(anonymous_18)
-FN:245,(anonymous_19)
-FN:267,(anonymous_20)
-FN:277,(anonymous_21)
-FN:286,(anonymous_22)
-FN:291,(anonymous_23)
-FN:302,(anonymous_24)
-FN:318,(anonymous_25)
-FN:329,(anonymous_26)
-FN:333,(anonymous_27)
-FN:346,(anonymous_28)
-FN:362,(anonymous_29)
-FN:364,(anonymous_30)
-FN:372,(anonymous_31)
-FN:379,(anonymous_32)
-FN:386,(anonymous_33)
-FN:389,(anonymous_34)
-FN:395,(anonymous_35)
-FN:399,processTokenWillExpire
-FN:402,(anonymous_37)
-FN:413,(anonymous_38)
-FN:423,(anonymous_39)
-FN:430,(anonymous_40)
-FN:436,(anonymous_41)
-FN:440,(anonymous_42)
-FN:456,(anonymous_43)
-FN:473,(anonymous_44)
-FN:474,(anonymous_45)
-FN:491,(anonymous_46)
-FN:501,(anonymous_47)
-FN:509,(anonymous_48)
-FN:516,(anonymous_49)
-FN:518,(anonymous_50)
-FN:519,(anonymous_51)
-FN:524,(anonymous_52)
-FN:536,(anonymous_53)
-FN:539,(anonymous_54)
-FN:556,(anonymous_55)
-FN:569,(anonymous_56)
-FN:587,(anonymous_57)
-FN:590,(anonymous_58)
-FN:592,(anonymous_59)
-FN:608,(anonymous_60)
-FN:626,(anonymous_61)
-FN:655,(anonymous_62)
-FN:670,(anonymous_63)
-FN:685,(anonymous_64)
-FN:688,(anonymous_65)
-FN:721,(anonymous_66)
-FN:733,(anonymous_67)
-FN:745,(anonymous_68)
-FN:757,(anonymous_69)
-FN:772,(anonymous_70)
-FN:800,(anonymous_71)
-FN:813,(anonymous_72)
-FN:815,(anonymous_73)
-FN:818,(anonymous_74)
-FN:820,(anonymous_75)
-FN:830,(anonymous_76)
-FN:839,(anonymous_77)
-FN:850,(anonymous_78)
-FN:872,(anonymous_79)
-FN:873,(anonymous_80)
-FN:877,(anonymous_81)
-FN:914,(anonymous_82)
-FN:943,(anonymous_83)
-FN:965,(anonymous_84)
-FN:972,(anonymous_85)
-FN:976,(anonymous_86)
-FN:980,startCandleListener
-FN:981,(anonymous_88)
-FN:995,processCandle
-FN:1014,getPriceFromList
-FN:1016,(anonymous_91)
-FN:1028,(anonymous_92)
-FN:1046,(anonymous_93)
-FN:1059,(anonymous_94)
-FN:1079,(anonymous_95)
-FN:1099,(anonymous_96)
-FN:1110,(anonymous_97)
-FN:1113,(anonymous_98)
-FN:1120,(anonymous_99)
-FN:1122,(anonymous_100)
-FN:1129,(anonymous_101)
-FN:1135,(anonymous_102)
-FN:1137,(anonymous_103)
-FN:1139,(anonymous_104)
-FN:1161,(anonymous_105)
-FN:1181,(anonymous_106)
-FN:1188,(anonymous_107)
-FN:1191,(anonymous_108)
-FN:1195,(anonymous_109)
-FN:1203,(anonymous_110)
-FN:1205,(anonymous_111)
-FN:1213,matchInstruments
-FN:1215,(anonymous_113)
-FN:1222,escRegex
-FN:1226,normalizeInstrumentObject
-FN:1235,(anonymous_116)
-FN:1250,(anonymous_117)
-FN:1262,(anonymous_118)
-FN:1274,(anonymous_119)
-FN:1286,(anonymous_120)
-FN:1306,(anonymous_121)
-FN:1328,(anonymous_122)
-FN:1343,(anonymous_123)
-FN:1359,(anonymous_124)
-FN:1374,(anonymous_125)
-FN:1390,(anonymous_126)
-FN:1393,(anonymous_127)
-FN:1396,(anonymous_128)
-FN:1414,(anonymous_129)
-FN:1432,(anonymous_130)
-FN:1457,(anonymous_131)
-FN:1477,(anonymous_132)
-FN:1487,(anonymous_133)
-FN:1511,(anonymous_134)
-FN:1528,(anonymous_135)
-FN:1542,(anonymous_136)
-FN:1550,(anonymous_137)
-FN:1567,getProtection
-FN:1583,(anonymous_139)
-FN:1596,(anonymous_140)
-FN:1608,(anonymous_141)
-FN:1621,(anonymous_142)
-FN:1633,(anonymous_143)
-FN:1645,(anonymous_144)
-FN:1658,(anonymous_145)
-FN:1671,(anonymous_146)
-FN:1682,(anonymous_147)
-FN:1694,(anonymous_148)
-FN:1704,(anonymous_149)
-FN:1715,(anonymous_150)
-FN:1727,(anonymous_151)
-FN:1739,(anonymous_152)
-FN:1748,(anonymous_153)
-FN:1758,(anonymous_154)
-FN:1770,(anonymous_155)
-FN:1782,(anonymous_156)
-FN:1795,(anonymous_157)
-FN:1808,(anonymous_158)
-FN:1819,(anonymous_159)
-FN:1831,(anonymous_160)
-FN:1842,(anonymous_161)
-FN:1853,(anonymous_162)
-FN:1866,(anonymous_163)
-FN:1879,(anonymous_164)
-FN:1896,(anonymous_165)
-FN:1907,(anonymous_166)
-FN:1919,(anonymous_167)
-FN:1931,(anonymous_168)
-FN:1942,(anonymous_169)
-FN:1954,(anonymous_170)
-FN:1964,(anonymous_171)
-FN:1975,(anonymous_172)
-FN:1985,(anonymous_173)
-FN:1996,(anonymous_174)
-FN:1999,(anonymous_175)
-FN:2002,(anonymous_176)
-FN:2019,(anonymous_177)
-FN:2032,(anonymous_178)
-FN:2044,(anonymous_179)
-FN:2051,(anonymous_180)
-FN:2053,(anonymous_181)
-FN:2060,(anonymous_182)
-FN:2078,(anonymous_183)
-FN:2084,(anonymous_184)
-FN:2097,(anonymous_185)
-FN:2109,(anonymous_186)
-FN:2133,(anonymous_187)
-FN:2143,(anonymous_188)
-FN:2145,(anonymous_189)
-FN:2153,(anonymous_190)
-FN:2163,(anonymous_191)
-FN:2165,(anonymous_192)
-FN:2167,(anonymous_193)
-FN:2177,initializeLibrary
-FN:2207,(anonymous_195)
-FN:2212,processHashFragment
-FN:2234,getTokenValuesFromHashFragment
-FN:2247,(anonymous_198)
-FN:2263,initializeTradableConfig
-FN:2285,getRedirectUrl
-FN:2292,formOAuthEndpoint
-FN:2317,getTokenFromStorage
-FN:2335,isLocalStorageSupported
-FN:2346,popupwindow
-FN:2362,getDecimalQty
-FN:2370,initializeValuesForCurrentAccount
-FN:2378,(anonymous_207)
-FN:2390,(anonymous_208)
+FN:4,(anonymous_3)
+FN:23,(anonymous_4)
+FN:76,(anonymous_5)
+FN:77,(anonymous_6)
+FN:78,(anonymous_7)
+FN:82,(anonymous_8)
+FN:88,(anonymous_9)
+FN:95,(anonymous_10)
+FN:105,(anonymous_11)
+FN:112,(anonymous_12)
+FN:119,(anonymous_13)
+FN:125,(anonymous_14)
+FN:131,(anonymous_15)
+FN:138,(anonymous_16)
+FN:141,(anonymous_17)
+FN:160,(anonymous_18)
+FN:180,(anonymous_19)
+FN:186,(anonymous_20)
+FN:196,(anonymous_21)
+FN:209,(anonymous_22)
+FN:247,(anonymous_23)
+FN:269,(anonymous_24)
+FN:279,(anonymous_25)
+FN:288,(anonymous_26)
+FN:293,(anonymous_27)
+FN:304,(anonymous_28)
+FN:320,(anonymous_29)
+FN:331,(anonymous_30)
+FN:335,(anonymous_31)
+FN:348,(anonymous_32)
+FN:364,(anonymous_33)
+FN:366,(anonymous_34)
+FN:374,(anonymous_35)
+FN:381,(anonymous_36)
+FN:388,(anonymous_37)
+FN:391,(anonymous_38)
+FN:397,(anonymous_39)
+FN:401,processTokenWillExpire
+FN:404,(anonymous_41)
+FN:415,(anonymous_42)
+FN:425,(anonymous_43)
+FN:432,(anonymous_44)
+FN:438,(anonymous_45)
+FN:442,(anonymous_46)
+FN:458,(anonymous_47)
+FN:475,(anonymous_48)
+FN:476,(anonymous_49)
+FN:495,(anonymous_50)
+FN:505,(anonymous_51)
+FN:513,(anonymous_52)
+FN:520,(anonymous_53)
+FN:522,(anonymous_54)
+FN:523,(anonymous_55)
+FN:527,(anonymous_56)
+FN:539,(anonymous_57)
+FN:542,(anonymous_58)
+FN:545,(anonymous_59)
+FN:562,(anonymous_60)
+FN:575,(anonymous_61)
+FN:593,(anonymous_62)
+FN:596,(anonymous_63)
+FN:598,(anonymous_64)
+FN:614,(anonymous_65)
+FN:632,(anonymous_66)
+FN:661,(anonymous_67)
+FN:676,(anonymous_68)
+FN:691,(anonymous_69)
+FN:694,(anonymous_70)
+FN:727,(anonymous_71)
+FN:739,(anonymous_72)
+FN:751,(anonymous_73)
+FN:763,(anonymous_74)
+FN:778,(anonymous_75)
+FN:806,(anonymous_76)
+FN:819,(anonymous_77)
+FN:821,(anonymous_78)
+FN:824,(anonymous_79)
+FN:826,(anonymous_80)
+FN:836,(anonymous_81)
+FN:845,(anonymous_82)
+FN:856,(anonymous_83)
+FN:878,(anonymous_84)
+FN:879,(anonymous_85)
+FN:883,(anonymous_86)
+FN:921,(anonymous_87)
+FN:950,(anonymous_88)
+FN:972,(anonymous_89)
+FN:979,(anonymous_90)
+FN:983,(anonymous_91)
+FN:987,startCandleListener
+FN:988,(anonymous_93)
+FN:1002,processCandle
+FN:1021,getPriceFromList
+FN:1023,(anonymous_96)
+FN:1035,(anonymous_97)
+FN:1053,(anonymous_98)
+FN:1066,(anonymous_99)
+FN:1086,(anonymous_100)
+FN:1106,(anonymous_101)
+FN:1117,(anonymous_102)
+FN:1120,(anonymous_103)
+FN:1127,(anonymous_104)
+FN:1129,(anonymous_105)
+FN:1136,(anonymous_106)
+FN:1142,(anonymous_107)
+FN:1144,(anonymous_108)
+FN:1146,(anonymous_109)
+FN:1168,(anonymous_110)
+FN:1188,(anonymous_111)
+FN:1195,(anonymous_112)
+FN:1198,(anonymous_113)
+FN:1202,(anonymous_114)
+FN:1210,(anonymous_115)
+FN:1212,(anonymous_116)
+FN:1220,matchInstruments
+FN:1222,(anonymous_118)
+FN:1229,escRegex
+FN:1233,normalizeInstrumentObject
+FN:1242,(anonymous_121)
+FN:1257,(anonymous_122)
+FN:1269,(anonymous_123)
+FN:1281,(anonymous_124)
+FN:1293,(anonymous_125)
+FN:1313,(anonymous_126)
+FN:1335,(anonymous_127)
+FN:1350,(anonymous_128)
+FN:1366,(anonymous_129)
+FN:1381,(anonymous_130)
+FN:1397,(anonymous_131)
+FN:1400,(anonymous_132)
+FN:1403,(anonymous_133)
+FN:1421,(anonymous_134)
+FN:1439,(anonymous_135)
+FN:1464,(anonymous_136)
+FN:1484,(anonymous_137)
+FN:1494,(anonymous_138)
+FN:1518,(anonymous_139)
+FN:1535,(anonymous_140)
+FN:1549,(anonymous_141)
+FN:1557,(anonymous_142)
+FN:1574,getProtection
+FN:1590,(anonymous_144)
+FN:1603,(anonymous_145)
+FN:1615,(anonymous_146)
+FN:1628,(anonymous_147)
+FN:1640,(anonymous_148)
+FN:1652,(anonymous_149)
+FN:1665,(anonymous_150)
+FN:1678,(anonymous_151)
+FN:1689,(anonymous_152)
+FN:1701,(anonymous_153)
+FN:1711,(anonymous_154)
+FN:1722,(anonymous_155)
+FN:1734,(anonymous_156)
+FN:1746,(anonymous_157)
+FN:1755,(anonymous_158)
+FN:1765,(anonymous_159)
+FN:1777,(anonymous_160)
+FN:1789,(anonymous_161)
+FN:1802,(anonymous_162)
+FN:1815,(anonymous_163)
+FN:1826,(anonymous_164)
+FN:1838,(anonymous_165)
+FN:1849,(anonymous_166)
+FN:1860,(anonymous_167)
+FN:1873,(anonymous_168)
+FN:1886,(anonymous_169)
+FN:1903,(anonymous_170)
+FN:1914,(anonymous_171)
+FN:1926,(anonymous_172)
+FN:1938,(anonymous_173)
+FN:1949,(anonymous_174)
+FN:1961,(anonymous_175)
+FN:1971,(anonymous_176)
+FN:1982,(anonymous_177)
+FN:1992,(anonymous_178)
+FN:2003,(anonymous_179)
+FN:2006,(anonymous_180)
+FN:2009,(anonymous_181)
+FN:2026,(anonymous_182)
+FN:2039,(anonymous_183)
+FN:2050,(anonymous_184)
+FN:2057,(anonymous_185)
+FN:2059,(anonymous_186)
+FN:2066,(anonymous_187)
+FN:2084,(anonymous_188)
+FN:2090,(anonymous_189)
+FN:2103,(anonymous_190)
+FN:2115,(anonymous_191)
+FN:2139,(anonymous_192)
+FN:2149,(anonymous_193)
+FN:2151,(anonymous_194)
+FN:2159,(anonymous_195)
+FN:2169,(anonymous_196)
+FN:2171,(anonymous_197)
+FN:2173,(anonymous_198)
+FN:2184,initializeLibrary
+FN:2214,(anonymous_200)
+FN:2219,processHashFragment
+FN:2241,getTokenValuesFromHashFragment
+FN:2254,(anonymous_203)
+FN:2270,initializeTradableConfig
+FN:2292,getRedirectUrl
+FN:2299,formOAuthEndpoint
+FN:2324,getTokenFromStorage
+FN:2342,isLocalStorageSupported
+FN:2353,popupwindow
+FN:2369,getDecimalQty
+FN:2377,initializeValuesForCurrentAccount
+FN:2386,(anonymous_212)
+FN:2393,(anonymous_213)
FN:2404,getInstruments
FN:2412,getInstrumentsForAccount
FN:2416,isFullInstrumentListAvailable
FN:2419,isFullInstrumentListAvailableForAccount
-FN:2421,(anonymous_213)
+FN:2421,(anonymous_218)
FN:2429,getDefaultInstruments
-FN:2433,(anonymous_215)
-FN:2436,(anonymous_216)
-FN:2442,(anonymous_217)
-FN:2445,(anonymous_218)
-FN:2448,(anonymous_219)
-FN:2451,(anonymous_220)
-FN:2453,(anonymous_221)
+FN:2433,(anonymous_220)
+FN:2436,(anonymous_221)
+FN:2442,(anonymous_222)
+FN:2445,(anonymous_223)
+FN:2448,(anonymous_224)
+FN:2451,(anonymous_225)
+FN:2453,(anonymous_226)
FN:2460,gatherForexInstrumentIds
-FN:2462,(anonymous_223)
+FN:2462,(anonymous_228)
FN:2471,resetInstrumentCache
FN:2479,isInstrumentCached
FN:2482,cacheInstruments
-FN:2483,(anonymous_227)
+FN:2483,(anonymous_232)
FN:2504,cacheCurrency
FN:2513,findMissingInstrumentIds
-FN:2515,(anonymous_230)
+FN:2515,(anonymous_235)
FN:2523,resetUpdates
FN:2529,resetExcludedAccounts
FN:2533,excludeAndValidate
-FN:2544,validateToken
-FN:2548,(anonymous_235)
-FN:2551,(anonymous_236)
-FN:2557,setSelectedAccountAndNotify
-FN:2573,(anonymous_238)
-FN:2578,(anonymous_239)
-FN:2588,setTradingEnabled
-FN:2598,notifyReadyCallbacks
-FN:2599,(anonymous_242)
-FN:2607,processAccountUpdate
-FN:2612,(anonymous_244)
-FN:2618,(anonymous_245)
-FN:2621,(anonymous_246)
-FN:2623,(anonymous_247)
-FN:2629,(anonymous_248)
-FN:2635,checkInstrumentsToCache
-FN:2642,(anonymous_250)
-FN:2650,(anonymous_251)
-FN:2661,notifyTokenExpired
-FN:2663,(anonymous_253)
-FN:2669,notifyErrorCallbacks
-FN:2670,(anonymous_255)
-FN:2676,notifyAccountSwitchCallbacks
-FN:2677,(anonymous_257)
-FN:2683,notifyReloginRequiredCallbacks
-FN:2688,notifyNamespaceCallbacks
-FN:2702,executeCallback
-FN:2718,findAndNotifyExecutions
-FN:2748,resetNotifiedExecutions
-FN:2756,Execution
-FN:2761,(anonymous_264)
-FN:2767,collectNewExecutions
-FN:2789,needToClearPositions
-FN:2793,(anonymous_267)
-FN:2802,clearPositions
-FN:2803,(anonymous_269)
-FN:2812,getItemId
-FN:2816,resolveDeferred
-FN:2818,(anonymous_272)
-FN:2821,(anonymous_273)
-FN:2830,internalSignOut
-FN:2839,(anonymous_275)
-FN:2841,(anonymous_276)
-FN:2848,hashCode
-FN:2861,ie
-FN:2866,isEmpty
-FN:2911,isGreaterOrEqualMinVersion
-FN:2912,(anonymous_281)
-FN:2916,(anonymous_282)
-FNF:282
-FNH:213
+FN:2539,(anonymous_239)
+FN:2541,(anonymous_240)
+FN:2552,validateToken
+FN:2556,(anonymous_242)
+FN:2559,(anonymous_243)
+FN:2565,getAccountIdToInitialize
+FN:2579,setSelectedAccountAndNotify
+FN:2585,(anonymous_246)
+FN:2588,(anonymous_247)
+FN:2598,setTradingEnabled
+FN:2611,notifyReadyCallbacks
+FN:2612,(anonymous_250)
+FN:2620,processAccountUpdate
+FN:2626,(anonymous_252)
+FN:2632,(anonymous_253)
+FN:2639,(anonymous_254)
+FN:2641,(anonymous_255)
+FN:2647,(anonymous_256)
+FN:2653,checkInstrumentsToCache
+FN:2660,(anonymous_258)
+FN:2668,(anonymous_259)
+FN:2670,(anonymous_260)
+FN:2681,notifyTokenExpired
+FN:2684,(anonymous_262)
+FN:2690,notifyErrorCallbacks
+FN:2691,(anonymous_264)
+FN:2697,notifyAccountSwitchCallbacks
+FN:2699,(anonymous_266)
+FN:2705,notifyReloginRequiredCallbacks
+FN:2710,notifyNamespaceCallbacks
+FN:2724,executeCallback
+FN:2740,findAndNotifyExecutions
+FN:2770,resetNotifiedExecutions
+FN:2778,Execution
+FN:2783,(anonymous_273)
+FN:2789,collectNewExecutions
+FN:2811,needToClearPositions
+FN:2815,(anonymous_276)
+FN:2824,clearPositions
+FN:2825,(anonymous_278)
+FN:2834,getItemId
+FN:2838,resolveDeferred
+FN:2840,(anonymous_281)
+FN:2843,(anonymous_282)
+FN:2852,internalSignOut
+FN:2861,(anonymous_284)
+FN:2863,(anonymous_285)
+FN:2870,hashCode
+FN:2883,ie
+FN:2888,isEmpty
+FN:2933,isGreaterOrEqualMinVersion
+FN:2934,(anonymous_290)
+FN:2938,(anonymous_291)
+FNF:291
+FNH:218
FNDA:0,(anonymous_1)
FNDA:0,(anonymous_2)
-FNDA:1,(anonymous_3)
-FNDA:0,(anonymous_4)
-FNDA:0,(anonymous_5)
-FNDA:0,(anonymous_6)
-FNDA:0,(anonymous_7)
+FNDA:0,(anonymous_3)
+FNDA:1,(anonymous_4)
+FNDA:26,(anonymous_5)
+FNDA:9,(anonymous_6)
+FNDA:18,(anonymous_7)
FNDA:0,(anonymous_8)
FNDA:0,(anonymous_9)
FNDA:0,(anonymous_10)
FNDA:0,(anonymous_11)
-FNDA:1,(anonymous_12)
-FNDA:10,(anonymous_13)
-FNDA:1,(anonymous_14)
-FNDA:1,(anonymous_15)
+FNDA:0,(anonymous_12)
+FNDA:0,(anonymous_13)
+FNDA:0,(anonymous_14)
+FNDA:0,(anonymous_15)
FNDA:1,(anonymous_16)
-FNDA:82,(anonymous_17)
-FNDA:39,(anonymous_18)
-FNDA:17,(anonymous_19)
-FNDA:5,(anonymous_20)
-FNDA:2,(anonymous_21)
-FNDA:11,(anonymous_22)
-FNDA:3,(anonymous_23)
-FNDA:3,(anonymous_24)
-FNDA:3,(anonymous_25)
-FNDA:3,(anonymous_26)
-FNDA:1,(anonymous_27)
-FNDA:5,(anonymous_28)
-FNDA:2,(anonymous_29)
-FNDA:4,(anonymous_30)
-FNDA:0,(anonymous_31)
-FNDA:0,(anonymous_32)
-FNDA:0,(anonymous_33)
-FNDA:0,(anonymous_34)
-FNDA:4,(anonymous_35)
-FNDA:0,processTokenWillExpire
+FNDA:10,(anonymous_17)
+FNDA:1,(anonymous_18)
+FNDA:1,(anonymous_19)
+FNDA:1,(anonymous_20)
+FNDA:82,(anonymous_21)
+FNDA:39,(anonymous_22)
+FNDA:17,(anonymous_23)
+FNDA:5,(anonymous_24)
+FNDA:2,(anonymous_25)
+FNDA:11,(anonymous_26)
+FNDA:3,(anonymous_27)
+FNDA:3,(anonymous_28)
+FNDA:3,(anonymous_29)
+FNDA:3,(anonymous_30)
+FNDA:1,(anonymous_31)
+FNDA:5,(anonymous_32)
+FNDA:2,(anonymous_33)
+FNDA:4,(anonymous_34)
+FNDA:0,(anonymous_35)
+FNDA:0,(anonymous_36)
FNDA:0,(anonymous_37)
FNDA:0,(anonymous_38)
-FNDA:1,(anonymous_39)
-FNDA:5,(anonymous_40)
-FNDA:2,(anonymous_41)
-FNDA:118,(anonymous_42)
-FNDA:118,(anonymous_43)
-FNDA:113,(anonymous_44)
-FNDA:3,(anonymous_45)
-FNDA:110,(anonymous_46)
-FNDA:4,(anonymous_47)
-FNDA:4,(anonymous_48)
-FNDA:0,(anonymous_49)
-FNDA:0,(anonymous_50)
-FNDA:0,(anonymous_51)
-FNDA:0,(anonymous_52)
-FNDA:9,(anonymous_53)
-FNDA:1,(anonymous_54)
-FNDA:4,(anonymous_55)
-FNDA:19,(anonymous_56)
-FNDA:1,(anonymous_57)
-FNDA:109,(anonymous_58)
-FNDA:3281,(anonymous_59)
+FNDA:4,(anonymous_39)
+FNDA:0,processTokenWillExpire
+FNDA:0,(anonymous_41)
+FNDA:0,(anonymous_42)
+FNDA:1,(anonymous_43)
+FNDA:5,(anonymous_44)
+FNDA:2,(anonymous_45)
+FNDA:118,(anonymous_46)
+FNDA:118,(anonymous_47)
+FNDA:113,(anonymous_48)
+FNDA:3,(anonymous_49)
+FNDA:110,(anonymous_50)
+FNDA:4,(anonymous_51)
+FNDA:4,(anonymous_52)
+FNDA:0,(anonymous_53)
+FNDA:0,(anonymous_54)
+FNDA:0,(anonymous_55)
+FNDA:0,(anonymous_56)
+FNDA:9,(anonymous_57)
+FNDA:6,(anonymous_58)
+FNDA:1,(anonymous_59)
FNDA:4,(anonymous_60)
-FNDA:4,(anonymous_61)
-FNDA:2,(anonymous_62)
-FNDA:1,(anonymous_63)
-FNDA:1,(anonymous_64)
-FNDA:8,(anonymous_65)
-FNDA:1,(anonymous_66)
-FNDA:1,(anonymous_67)
+FNDA:19,(anonymous_61)
+FNDA:1,(anonymous_62)
+FNDA:109,(anonymous_63)
+FNDA:3281,(anonymous_64)
+FNDA:4,(anonymous_65)
+FNDA:4,(anonymous_66)
+FNDA:2,(anonymous_67)
FNDA:1,(anonymous_68)
FNDA:1,(anonymous_69)
-FNDA:4,(anonymous_70)
-FNDA:2,(anonymous_71)
-FNDA:3,(anonymous_72)
-FNDA:3,(anonymous_73)
-FNDA:3,(anonymous_74)
-FNDA:0,(anonymous_75)
-FNDA:1,(anonymous_76)
-FNDA:1,(anonymous_77)
-FNDA:1,(anonymous_78)
-FNDA:6,(anonymous_79)
-FNDA:5,(anonymous_80)
-FNDA:5,(anonymous_81)
+FNDA:8,(anonymous_70)
+FNDA:1,(anonymous_71)
+FNDA:1,(anonymous_72)
+FNDA:1,(anonymous_73)
+FNDA:1,(anonymous_74)
+FNDA:4,(anonymous_75)
+FNDA:2,(anonymous_76)
+FNDA:3,(anonymous_77)
+FNDA:3,(anonymous_78)
+FNDA:3,(anonymous_79)
+FNDA:0,(anonymous_80)
+FNDA:1,(anonymous_81)
FNDA:1,(anonymous_82)
FNDA:1,(anonymous_83)
-FNDA:1,(anonymous_84)
-FNDA:1,(anonymous_85)
-FNDA:0,(anonymous_86)
+FNDA:6,(anonymous_84)
+FNDA:5,(anonymous_85)
+FNDA:5,(anonymous_86)
+FNDA:1,(anonymous_87)
+FNDA:1,(anonymous_88)
+FNDA:1,(anonymous_89)
+FNDA:1,(anonymous_90)
+FNDA:0,(anonymous_91)
FNDA:1,startCandleListener
-FNDA:2,(anonymous_88)
+FNDA:2,(anonymous_93)
FNDA:2,processCandle
FNDA:2,getPriceFromList
-FNDA:2,(anonymous_91)
-FNDA:2,(anonymous_92)
-FNDA:7,(anonymous_93)
-FNDA:7,(anonymous_94)
-FNDA:0,(anonymous_95)
-FNDA:3,(anonymous_96)
+FNDA:2,(anonymous_96)
FNDA:2,(anonymous_97)
-FNDA:0,(anonymous_98)
-FNDA:3,(anonymous_99)
-FNDA:90,(anonymous_100)
-FNDA:0,(anonymous_101)
+FNDA:7,(anonymous_98)
+FNDA:7,(anonymous_99)
+FNDA:0,(anonymous_100)
+FNDA:3,(anonymous_101)
FNDA:2,(anonymous_102)
FNDA:0,(anonymous_103)
-FNDA:0,(anonymous_104)
-FNDA:3,(anonymous_105)
-FNDA:5,(anonymous_106)
-FNDA:1,(anonymous_107)
-FNDA:21,(anonymous_108)
+FNDA:3,(anonymous_104)
+FNDA:90,(anonymous_105)
+FNDA:0,(anonymous_106)
+FNDA:2,(anonymous_107)
+FNDA:0,(anonymous_108)
FNDA:0,(anonymous_109)
-FNDA:4,(anonymous_110)
-FNDA:0,(anonymous_111)
+FNDA:3,(anonymous_110)
+FNDA:5,(anonymous_111)
+FNDA:1,(anonymous_112)
+FNDA:21,(anonymous_113)
+FNDA:0,(anonymous_114)
+FNDA:4,(anonymous_115)
+FNDA:0,(anonymous_116)
FNDA:1,matchInstruments
-FNDA:85,(anonymous_113)
+FNDA:85,(anonymous_118)
FNDA:1,escRegex
FNDA:21,normalizeInstrumentObject
-FNDA:168,(anonymous_116)
-FNDA:1,(anonymous_117)
-FNDA:2,(anonymous_118)
-FNDA:0,(anonymous_119)
-FNDA:0,(anonymous_120)
-FNDA:3,(anonymous_121)
-FNDA:0,(anonymous_122)
-FNDA:1,(anonymous_123)
+FNDA:168,(anonymous_121)
+FNDA:1,(anonymous_122)
+FNDA:2,(anonymous_123)
FNDA:0,(anonymous_124)
-FNDA:1,(anonymous_125)
-FNDA:0,(anonymous_126)
-FNDA:6,(anonymous_127)
-FNDA:6,(anonymous_128)
-FNDA:1,(anonymous_129)
+FNDA:0,(anonymous_125)
+FNDA:3,(anonymous_126)
+FNDA:0,(anonymous_127)
+FNDA:1,(anonymous_128)
+FNDA:0,(anonymous_129)
FNDA:1,(anonymous_130)
-FNDA:12,(anonymous_131)
-FNDA:12,(anonymous_132)
-FNDA:12,(anonymous_133)
-FNDA:8,(anonymous_134)
-FNDA:8,(anonymous_135)
-FNDA:16,(anonymous_136)
+FNDA:0,(anonymous_131)
+FNDA:6,(anonymous_132)
+FNDA:6,(anonymous_133)
+FNDA:1,(anonymous_134)
+FNDA:1,(anonymous_135)
+FNDA:12,(anonymous_136)
FNDA:12,(anonymous_137)
+FNDA:12,(anonymous_138)
+FNDA:8,(anonymous_139)
+FNDA:8,(anonymous_140)
+FNDA:16,(anonymous_141)
+FNDA:12,(anonymous_142)
FNDA:20,getProtection
-FNDA:2,(anonymous_139)
-FNDA:2,(anonymous_140)
-FNDA:2,(anonymous_141)
-FNDA:2,(anonymous_142)
-FNDA:0,(anonymous_143)
-FNDA:0,(anonymous_144)
-FNDA:16,(anonymous_145)
-FNDA:16,(anonymous_146)
+FNDA:2,(anonymous_144)
+FNDA:2,(anonymous_145)
+FNDA:2,(anonymous_146)
FNDA:2,(anonymous_147)
-FNDA:2,(anonymous_148)
-FNDA:4,(anonymous_149)
-FNDA:4,(anonymous_150)
-FNDA:2,(anonymous_151)
+FNDA:0,(anonymous_148)
+FNDA:0,(anonymous_149)
+FNDA:16,(anonymous_150)
+FNDA:16,(anonymous_151)
FNDA:2,(anonymous_152)
-FNDA:1,(anonymous_153)
-FNDA:1,(anonymous_154)
+FNDA:2,(anonymous_153)
+FNDA:4,(anonymous_154)
FNDA:4,(anonymous_155)
-FNDA:4,(anonymous_156)
-FNDA:9,(anonymous_157)
-FNDA:9,(anonymous_158)
+FNDA:2,(anonymous_156)
+FNDA:2,(anonymous_157)
+FNDA:1,(anonymous_158)
FNDA:1,(anonymous_159)
-FNDA:1,(anonymous_160)
-FNDA:5,(anonymous_161)
-FNDA:5,(anonymous_162)
-FNDA:1,(anonymous_163)
+FNDA:4,(anonymous_160)
+FNDA:4,(anonymous_161)
+FNDA:9,(anonymous_162)
+FNDA:9,(anonymous_163)
FNDA:1,(anonymous_164)
FNDA:1,(anonymous_165)
-FNDA:1,(anonymous_166)
-FNDA:0,(anonymous_167)
-FNDA:0,(anonymous_168)
-FNDA:0,(anonymous_169)
-FNDA:0,(anonymous_170)
-FNDA:3,(anonymous_171)
+FNDA:5,(anonymous_166)
+FNDA:5,(anonymous_167)
+FNDA:1,(anonymous_168)
+FNDA:1,(anonymous_169)
+FNDA:1,(anonymous_170)
+FNDA:1,(anonymous_171)
FNDA:0,(anonymous_172)
-FNDA:3,(anonymous_173)
+FNDA:0,(anonymous_173)
FNDA:0,(anonymous_174)
-FNDA:6,(anonymous_175)
-FNDA:6,(anonymous_176)
-FNDA:9,(anonymous_177)
-FNDA:10,(anonymous_178)
-FNDA:1,(anonymous_179)
-FNDA:4,(anonymous_180)
-FNDA:0,(anonymous_181)
-FNDA:2,(anonymous_182)
-FNDA:2,(anonymous_183)
-FNDA:0,(anonymous_184)
-FNDA:2,(anonymous_185)
-FNDA:5,(anonymous_186)
-FNDA:0,(anonymous_187)
-FNDA:0,(anonymous_188)
+FNDA:0,(anonymous_175)
+FNDA:3,(anonymous_176)
+FNDA:0,(anonymous_177)
+FNDA:3,(anonymous_178)
+FNDA:0,(anonymous_179)
+FNDA:6,(anonymous_180)
+FNDA:6,(anonymous_181)
+FNDA:9,(anonymous_182)
+FNDA:10,(anonymous_183)
+FNDA:1,(anonymous_184)
+FNDA:4,(anonymous_185)
+FNDA:0,(anonymous_186)
+FNDA:2,(anonymous_187)
+FNDA:2,(anonymous_188)
FNDA:0,(anonymous_189)
-FNDA:4,(anonymous_190)
-FNDA:4,(anonymous_191)
-FNDA:4,(anonymous_192)
+FNDA:2,(anonymous_190)
+FNDA:5,(anonymous_191)
+FNDA:0,(anonymous_192)
FNDA:0,(anonymous_193)
+FNDA:0,(anonymous_194)
+FNDA:4,(anonymous_195)
+FNDA:4,(anonymous_196)
+FNDA:4,(anonymous_197)
+FNDA:0,(anonymous_198)
FNDA:1,initializeLibrary
-FNDA:1,(anonymous_195)
+FNDA:1,(anonymous_200)
FNDA:0,processHashFragment
FNDA:1,getTokenValuesFromHashFragment
-FNDA:3,(anonymous_198)
+FNDA:3,(anonymous_203)
FNDA:6,initializeTradableConfig
FNDA:1,getRedirectUrl
FNDA:1,formOAuthEndpoint
FNDA:1,getTokenFromStorage
-FNDA:15,isLocalStorageSupported
+FNDA:16,isLocalStorageSupported
FNDA:0,popupwindow
FNDA:13,getDecimalQty
FNDA:4,initializeValuesForCurrentAccount
-FNDA:4,(anonymous_207)
-FNDA:0,(anonymous_208)
+FNDA:4,(anonymous_212)
+FNDA:0,(anonymous_213)
FNDA:3,getInstruments
FNDA:3,getInstrumentsForAccount
FNDA:11,isFullInstrumentListAvailable
FNDA:18,isFullInstrumentListAvailableForAccount
-FNDA:18,(anonymous_213)
+FNDA:18,(anonymous_218)
FNDA:4,getDefaultInstruments
-FNDA:3,(anonymous_215)
-FNDA:0,(anonymous_216)
-FNDA:1,(anonymous_217)
-FNDA:1,(anonymous_218)
-FNDA:1,(anonymous_219)
-FNDA:1,(anonymous_220)
+FNDA:3,(anonymous_220)
FNDA:0,(anonymous_221)
+FNDA:1,(anonymous_222)
+FNDA:1,(anonymous_223)
+FNDA:1,(anonymous_224)
+FNDA:1,(anonymous_225)
+FNDA:0,(anonymous_226)
FNDA:3,gatherForexInstrumentIds
-FNDA:399,(anonymous_223)
+FNDA:387,(anonymous_228)
FNDA:5,resetInstrumentCache
FNDA:494,isInstrumentCached
FNDA:5,cacheInstruments
-FNDA:335,(anonymous_227)
+FNDA:335,(anonymous_232)
FNDA:544,cacheCurrency
FNDA:6,findMissingInstrumentIds
-FNDA:120,(anonymous_230)
+FNDA:120,(anonymous_235)
FNDA:4,resetUpdates
FNDA:4,resetExcludedAccounts
FNDA:0,excludeAndValidate
+FNDA:0,(anonymous_239)
+FNDA:0,(anonymous_240)
FNDA:1,validateToken
-FNDA:0,(anonymous_235)
-FNDA:0,(anonymous_236)
+FNDA:0,(anonymous_242)
+FNDA:0,(anonymous_243)
+FNDA:4,getAccountIdToInitialize
FNDA:4,setSelectedAccountAndNotify
-FNDA:4,(anonymous_238)
-FNDA:0,(anonymous_239)
-FNDA:4,setTradingEnabled
+FNDA:4,(anonymous_246)
+FNDA:0,(anonymous_247)
+FNDA:5,setTradingEnabled
FNDA:6,notifyReadyCallbacks
-FNDA:2,(anonymous_242)
-FNDA:7,processAccountUpdate
-FNDA:5,(anonymous_244)
-FNDA:7,(anonymous_245)
-FNDA:7,(anonymous_246)
-FNDA:6,(anonymous_247)
-FNDA:0,(anonymous_248)
+FNDA:2,(anonymous_250)
+FNDA:8,processAccountUpdate
+FNDA:5,(anonymous_252)
+FNDA:7,(anonymous_253)
+FNDA:7,(anonymous_254)
+FNDA:6,(anonymous_255)
+FNDA:0,(anonymous_256)
FNDA:7,checkInstrumentsToCache
-FNDA:21,(anonymous_250)
-FNDA:0,(anonymous_251)
+FNDA:21,(anonymous_258)
+FNDA:0,(anonymous_259)
+FNDA:0,(anonymous_260)
FNDA:0,notifyTokenExpired
-FNDA:0,(anonymous_253)
+FNDA:0,(anonymous_262)
FNDA:3,notifyErrorCallbacks
-FNDA:0,(anonymous_255)
+FNDA:0,(anonymous_264)
FNDA:0,notifyAccountSwitchCallbacks
-FNDA:0,(anonymous_257)
+FNDA:0,(anonymous_266)
FNDA:0,notifyReloginRequiredCallbacks
FNDA:28,notifyNamespaceCallbacks
FNDA:54,executeCallback
FNDA:9,findAndNotifyExecutions
FNDA:3,resetNotifiedExecutions
FNDA:12,Execution
-FNDA:9,(anonymous_264)
+FNDA:9,(anonymous_273)
FNDA:48,collectNewExecutions
-FNDA:256,needToClearPositions
-FNDA:10,(anonymous_267)
+FNDA:220,needToClearPositions
+FNDA:9,(anonymous_276)
FNDA:2,clearPositions
-FNDA:3,(anonymous_269)
-FNDA:259,getItemId
-FNDA:150,resolveDeferred
-FNDA:9,(anonymous_272)
-FNDA:1,(anonymous_273)
+FNDA:3,(anonymous_278)
+FNDA:223,getItemId
+FNDA:154,resolveDeferred
+FNDA:13,(anonymous_281)
+FNDA:1,(anonymous_282)
FNDA:1,internalSignOut
-FNDA:0,(anonymous_275)
-FNDA:0,(anonymous_276)
+FNDA:0,(anonymous_284)
+FNDA:0,(anonymous_285)
FNDA:2,hashCode
FNDA:0,ie
FNDA:57,isEmpty
FNDA:49,isGreaterOrEqualMinVersion
-FNDA:576,(anonymous_281)
-FNDA:96,(anonymous_282)
+FNDA:576,(anonymous_290)
+FNDA:96,(anonymous_291)
DA:3,1
DA:4,0
DA:8,1
@@ -585,680 +603,684 @@ DA:34,1
DA:35,1
DA:36,1
DA:46,1
-DA:80,0
-DA:86,0
-DA:93,0
-DA:94,0
+DA:76,26
+DA:77,9
+DA:78,18
+DA:83,0
+DA:89,0
DA:96,0
-DA:103,0
-DA:110,0
-DA:117,0
-DA:123,0
-DA:129,0
-DA:136,1
-DA:139,10
-DA:143,10
-DA:144,2
-DA:146,8
+DA:97,0
+DA:99,0
+DA:106,0
+DA:113,0
+DA:120,0
+DA:126,0
+DA:132,0
+DA:139,1
+DA:142,10
+DA:146,10
DA:147,2
-DA:150,8
-DA:151,6
-DA:152,2
-DA:155,8
-DA:158,1
-DA:160,0
-DA:161,0
+DA:149,8
+DA:150,2
+DA:153,8
+DA:154,6
+DA:155,2
+DA:158,8
+DA:161,1
+DA:163,0
DA:164,0
-DA:165,0
DA:167,0
DA:168,0
-DA:178,1
-DA:184,1
-DA:185,1
-DA:186,1
+DA:170,0
+DA:171,0
+DA:181,1
DA:187,1
DA:188,1
DA:189,1
+DA:190,1
DA:191,1
DA:192,1
-DA:195,82
-DA:208,39
-DA:209,1
-DA:212,38
-DA:214,16
-DA:218,38
-DA:219,1
-DA:220,37
-DA:221,6
-DA:225,31
-DA:226,1
-DA:229,30
-DA:230,4
-DA:231,9
+DA:194,1
+DA:197,82
+DA:210,39
+DA:211,1
+DA:214,38
+DA:216,16
+DA:220,38
+DA:221,1
+DA:222,37
+DA:223,6
+DA:227,31
+DA:228,1
+DA:231,30
DA:232,4
-DA:233,5
-DA:236,30
-DA:246,17
-DA:247,2
-DA:248,7
-DA:251,2
-DA:254,15
-DA:255,15
-DA:257,17
-DA:258,57
-DA:259,10
-DA:260,10
-DA:261,3
-DA:262,2
-DA:268,5
-DA:269,5
-DA:278,2
-DA:279,1
-DA:280,1
+DA:233,9
+DA:234,4
+DA:235,5
+DA:238,30
+DA:248,17
+DA:249,2
+DA:250,7
+DA:253,2
+DA:256,15
+DA:257,15
+DA:259,17
+DA:260,57
+DA:261,10
+DA:262,10
+DA:263,3
+DA:264,2
+DA:270,5
+DA:271,5
+DA:280,2
+DA:281,1
DA:282,1
-DA:287,11
-DA:288,4
-DA:292,3
-DA:293,3
+DA:284,1
+DA:289,11
+DA:290,4
DA:294,3
-DA:303,3
-DA:304,2
-DA:305,2
+DA:295,3
+DA:296,3
+DA:305,3
DA:306,2
-DA:307,1
-DA:308,1
-DA:311,1
-DA:319,3
-DA:320,2
-DA:321,2
+DA:307,2
+DA:308,2
+DA:309,1
+DA:310,1
+DA:313,1
+DA:321,3
DA:322,2
DA:323,2
-DA:326,1
-DA:330,3
-DA:331,3
-DA:334,1
-DA:335,1
-DA:347,5
-DA:348,1
-DA:350,4
-DA:351,4
-DA:352,3
-DA:363,2
-DA:364,2
-DA:365,4
-DA:373,0
-DA:380,0
-DA:387,0
-DA:390,0
-DA:391,0
-DA:396,4
-DA:397,1
+DA:324,2
+DA:325,2
+DA:328,1
+DA:332,3
+DA:333,3
+DA:336,1
+DA:337,1
+DA:349,5
+DA:350,1
+DA:352,4
+DA:353,4
+DA:354,3
+DA:365,2
+DA:366,2
+DA:367,4
+DA:375,0
+DA:382,0
+DA:389,0
+DA:392,0
+DA:393,0
+DA:398,4
DA:399,1
-DA:400,0
-DA:401,0
+DA:401,1
DA:402,0
DA:403,0
+DA:404,0
DA:405,0
-DA:414,0
-DA:415,0
+DA:407,0
DA:416,0
-DA:424,1
-DA:425,0
-DA:427,1
-DA:431,5
-DA:432,3
-DA:433,3
-DA:437,2
-DA:438,2
-DA:441,118
-DA:442,118
+DA:417,0
+DA:418,0
+DA:426,1
+DA:427,0
+DA:429,1
+DA:433,5
+DA:434,3
+DA:435,3
+DA:439,2
+DA:440,2
DA:443,118
-DA:444,7
-DA:445,111
+DA:444,118
+DA:445,118
DA:446,7
-DA:447,104
-DA:448,104
-DA:450,0
-DA:451,0
+DA:447,111
+DA:448,7
+DA:449,104
+DA:450,104
DA:452,0
-DA:454,118
-DA:457,118
-DA:458,117
-DA:460,118
-DA:473,118
-DA:475,3
-DA:476,3
-DA:477,0
-DA:478,0
+DA:453,0
+DA:454,0
+DA:456,118
+DA:459,118
+DA:460,117
+DA:462,118
+DA:475,118
+DA:477,3
+DA:478,3
DA:479,0
DA:480,0
-DA:483,3
-DA:484,3
-DA:489,118
-DA:492,110
-DA:502,4
-DA:503,4
-DA:504,4
-DA:505,4
+DA:481,0
+DA:482,0
+DA:483,0
+DA:484,0
+DA:487,3
+DA:488,3
+DA:493,118
+DA:496,110
DA:506,4
DA:507,4
DA:508,4
DA:509,4
DA:510,4
DA:511,4
+DA:512,4
DA:513,4
DA:514,4
-DA:517,0
-DA:518,0
-DA:519,0
-DA:520,0
+DA:515,4
+DA:517,4
+DA:518,4
DA:521,0
DA:522,0
+DA:523,0
+DA:524,0
DA:525,0
DA:528,0
-DA:531,4
-DA:533,0
-DA:537,9
-DA:540,1
-DA:541,1
-DA:542,1
-DA:543,1
-DA:544,1
-DA:545,1
-DA:557,4
-DA:558,1
-DA:560,3
-DA:570,19
-DA:571,1
-DA:573,18
-DA:574,15
-DA:576,3
-DA:578,3
-DA:588,1
-DA:591,109
-DA:592,109
-DA:593,3281
-DA:594,109
-DA:595,109
+DA:531,0
+DA:534,4
+DA:536,0
+DA:540,9
+DA:543,6
+DA:546,1
+DA:547,1
+DA:548,1
+DA:549,1
+DA:550,1
+DA:551,1
+DA:563,4
+DA:564,1
+DA:566,3
+DA:576,19
+DA:577,1
+DA:579,18
+DA:580,15
+DA:582,3
+DA:584,3
+DA:594,1
+DA:597,109
DA:598,109
-DA:609,4
-DA:610,4
-DA:611,1
-DA:613,3
-DA:614,3
-DA:627,4
-DA:628,4
-DA:629,1
-DA:631,3
-DA:632,3
-DA:633,3
-DA:656,2
-DA:671,1
-DA:686,1
-DA:690,8
-DA:691,8
-DA:692,6
-DA:693,2
-DA:694,0
+DA:599,3281
+DA:600,109
+DA:601,109
+DA:604,109
+DA:615,4
+DA:616,4
+DA:617,1
+DA:619,3
+DA:620,3
+DA:633,4
+DA:634,4
+DA:635,1
+DA:637,3
+DA:638,3
+DA:639,3
+DA:662,2
+DA:677,1
+DA:692,1
+DA:696,8
DA:697,8
-DA:698,0
-DA:701,8
-DA:702,8
-DA:704,8
-DA:705,8
-DA:706,1
-DA:708,6
-DA:709,6
-DA:710,6
-DA:712,7
-DA:722,1
-DA:734,1
-DA:746,1
-DA:758,1
-DA:773,4
-DA:776,4
-DA:777,3
-DA:778,3
-DA:780,3
-DA:783,4
-DA:784,4
-DA:785,4
-DA:786,2
-DA:788,2
-DA:790,2
-DA:791,1
-DA:792,1
-DA:793,1
-DA:795,2
-DA:797,2
+DA:698,6
+DA:699,2
+DA:700,0
+DA:703,8
+DA:704,0
+DA:707,8
+DA:708,8
+DA:710,8
+DA:711,8
+DA:712,1
+DA:714,6
+DA:715,6
+DA:716,6
+DA:718,7
+DA:728,1
+DA:740,1
+DA:752,1
+DA:764,1
+DA:779,4
+DA:782,4
+DA:783,3
+DA:784,3
+DA:786,3
+DA:789,4
+DA:790,4
+DA:791,4
+DA:792,2
+DA:794,2
+DA:796,2
+DA:797,1
+DA:798,1
+DA:799,1
DA:801,2
DA:803,2
-DA:804,2
-DA:805,0
DA:807,2
-DA:809,0
+DA:809,2
+DA:810,2
DA:811,0
-DA:814,3
-DA:815,3
-DA:816,3
-DA:817,3
-DA:819,3
-DA:821,0
-DA:831,1
-DA:840,1
-DA:851,1
-DA:853,1
-DA:854,1
-DA:856,0
-DA:858,1
+DA:813,2
+DA:815,0
+DA:817,0
+DA:820,3
+DA:821,3
+DA:822,3
+DA:823,3
+DA:825,3
+DA:827,0
+DA:837,1
+DA:846,1
+DA:857,1
+DA:859,1
DA:860,1
-DA:873,6
-DA:874,5
-DA:875,5
-DA:876,5
-DA:877,5
-DA:878,5
+DA:862,0
+DA:864,1
+DA:866,1
+DA:879,6
DA:880,5
DA:881,5
+DA:882,5
DA:883,5
-DA:887,6
-DA:915,1
-DA:944,1
-DA:945,1
-DA:966,1
-DA:968,1
-DA:969,1
-DA:970,1
-DA:972,1
+DA:884,5
+DA:886,5
+DA:887,5
+DA:889,5
+DA:891,5
+DA:894,6
+DA:922,1
+DA:951,1
+DA:952,1
DA:973,1
-DA:974,1
DA:975,1
-DA:977,0
+DA:976,1
+DA:977,1
+DA:979,1
DA:980,1
DA:981,1
-DA:982,2
-DA:983,2
-DA:984,2
-DA:985,2
-DA:987,2
-DA:988,2
+DA:982,1
+DA:984,0
+DA:987,1
+DA:988,1
DA:989,2
DA:990,2
-DA:995,1
+DA:991,2
+DA:992,2
+DA:994,2
+DA:995,2
DA:996,2
-DA:998,2
-DA:999,0
-DA:1000,0
-DA:1001,0
-DA:1002,0
-DA:1003,0
-DA:1006,2
-DA:1007,2
+DA:997,2
+DA:1002,1
+DA:1003,2
+DA:1005,2
+DA:1006,0
+DA:1007,0
DA:1008,0
-DA:1010,2
-DA:1011,1
-DA:1014,1
-DA:1015,2
-DA:1016,2
+DA:1009,0
+DA:1010,0
+DA:1013,2
+DA:1014,2
+DA:1015,0
DA:1017,2
DA:1018,2
-DA:1019,2
+DA:1021,1
DA:1022,2
+DA:1023,2
+DA:1024,2
+DA:1025,2
+DA:1026,2
DA:1029,2
-DA:1030,1
-DA:1031,1
-DA:1032,1
-DA:1033,1
-DA:1047,7
-DA:1060,7
-DA:1061,7
-DA:1080,0
-DA:1100,3
-DA:1102,3
-DA:1103,3
-DA:1104,2
+DA:1036,2
+DA:1037,1
+DA:1038,1
+DA:1039,1
+DA:1040,1
+DA:1054,7
+DA:1067,7
+DA:1068,7
+DA:1087,0
DA:1107,3
-DA:1108,3
-DA:1109,2
-DA:1110,2
+DA:1109,3
+DA:1110,3
DA:1111,2
-DA:1112,2
-DA:1114,0
-DA:1117,1
-DA:1120,3
-DA:1121,3
-DA:1122,3
-DA:1123,90
-DA:1124,90
-DA:1125,90
+DA:1114,3
+DA:1115,3
+DA:1116,2
+DA:1117,2
+DA:1118,2
+DA:1119,2
+DA:1121,0
+DA:1124,1
+DA:1127,3
DA:1128,3
-DA:1130,0
-DA:1133,3
-DA:1136,2
+DA:1129,3
+DA:1130,90
+DA:1131,90
+DA:1132,90
+DA:1135,3
DA:1137,0
-DA:1138,0
-DA:1140,0
+DA:1140,3
DA:1143,2
-DA:1162,3
-DA:1182,5
-DA:1184,5
-DA:1185,1
-DA:1186,1
-DA:1188,1
-DA:1189,1
-DA:1190,1
-DA:1191,1
-DA:1192,21
-DA:1194,1
-DA:1196,0
-DA:1199,4
-DA:1200,4
-DA:1201,0
-DA:1203,4
-DA:1204,4
-DA:1206,0
-DA:1211,5
-DA:1213,1
-DA:1214,1
-DA:1215,1
-DA:1216,85
+DA:1144,0
+DA:1145,0
+DA:1147,0
+DA:1150,2
+DA:1169,3
+DA:1189,5
+DA:1191,5
+DA:1192,1
+DA:1193,1
+DA:1195,1
+DA:1196,1
+DA:1197,1
+DA:1198,1
+DA:1199,21
+DA:1201,1
+DA:1203,0
+DA:1206,4
+DA:1207,4
+DA:1208,0
+DA:1210,4
+DA:1211,4
+DA:1213,0
+DA:1218,5
+DA:1220,1
+DA:1221,1
DA:1222,1
-DA:1223,1
-DA:1226,1
-DA:1227,21
-DA:1228,21
-DA:1229,21
-DA:1230,21
-DA:1231,294
-DA:1232,168
+DA:1223,85
+DA:1229,1
+DA:1230,1
+DA:1233,1
+DA:1234,21
DA:1235,21
-DA:1236,168
-DA:1238,21
-DA:1251,1
-DA:1263,2
-DA:1275,0
-DA:1287,0
-DA:1307,3
-DA:1329,0
-DA:1344,1
-DA:1360,0
-DA:1375,1
-DA:1391,0
-DA:1394,6
-DA:1397,6
-DA:1398,6
-DA:1415,1
-DA:1433,1
-DA:1434,1
-DA:1435,1
-DA:1436,1
-DA:1437,1
-DA:1438,1
-DA:1439,1
-DA:1458,12
-DA:1478,12
-DA:1480,4
-DA:1482,4
-DA:1483,4
-DA:1485,4
-DA:1488,12
-DA:1489,8
-DA:1490,2
-DA:1491,6
+DA:1236,21
+DA:1237,21
+DA:1238,294
+DA:1239,168
+DA:1242,21
+DA:1243,168
+DA:1245,21
+DA:1258,1
+DA:1270,2
+DA:1282,0
+DA:1294,0
+DA:1314,3
+DA:1336,0
+DA:1351,1
+DA:1367,0
+DA:1382,1
+DA:1398,0
+DA:1401,6
+DA:1404,6
+DA:1405,6
+DA:1422,1
+DA:1440,1
+DA:1441,1
+DA:1442,1
+DA:1443,1
+DA:1444,1
+DA:1445,1
+DA:1446,1
+DA:1465,12
+DA:1485,12
+DA:1487,4
+DA:1489,4
+DA:1490,4
DA:1492,4
-DA:1494,4
-DA:1495,2
-DA:1512,8
-DA:1529,8
-DA:1530,8
-DA:1532,8
-DA:1533,8
-DA:1535,8
+DA:1495,12
+DA:1496,8
+DA:1497,2
+DA:1498,6
+DA:1499,4
+DA:1501,4
+DA:1502,2
+DA:1519,8
DA:1536,8
-DA:1538,8
+DA:1537,8
+DA:1539,8
DA:1540,8
-DA:1543,16
-DA:1547,0
-DA:1551,12
-DA:1552,12
-DA:1554,12
-DA:1555,12
-DA:1556,12
+DA:1542,8
+DA:1543,8
+DA:1545,8
+DA:1547,8
+DA:1550,16
+DA:1554,0
DA:1558,12
-DA:1559,10
+DA:1559,12
DA:1561,12
-DA:1562,10
+DA:1562,12
+DA:1563,12
DA:1565,12
-DA:1567,1
-DA:1568,20
-DA:1584,2
-DA:1597,2
-DA:1609,2
-DA:1622,2
-DA:1634,0
-DA:1646,0
-DA:1659,16
-DA:1672,16
-DA:1683,2
-DA:1695,2
-DA:1705,4
-DA:1716,4
-DA:1728,2
-DA:1740,2
-DA:1749,1
-DA:1759,1
-DA:1771,4
-DA:1783,4
-DA:1796,9
-DA:1809,9
-DA:1820,1
-DA:1832,1
-DA:1833,1
-DA:1843,5
-DA:1854,5
-DA:1867,1
-DA:1880,1
-DA:1881,1
-DA:1882,1
-DA:1884,1
-DA:1885,1
+DA:1566,10
+DA:1568,12
+DA:1569,10
+DA:1572,12
+DA:1574,1
+DA:1575,20
+DA:1591,2
+DA:1604,2
+DA:1616,2
+DA:1629,2
+DA:1641,0
+DA:1653,0
+DA:1666,16
+DA:1679,16
+DA:1690,2
+DA:1702,2
+DA:1712,4
+DA:1723,4
+DA:1735,2
+DA:1747,2
+DA:1756,1
+DA:1766,1
+DA:1778,4
+DA:1790,4
+DA:1803,9
+DA:1816,9
+DA:1827,1
+DA:1839,1
+DA:1840,1
+DA:1850,5
+DA:1861,5
+DA:1874,1
DA:1887,1
-DA:1897,1
-DA:1908,1
-DA:1920,0
-DA:1932,0
-DA:1943,0
-DA:1955,0
-DA:1965,3
-DA:1976,0
-DA:1986,3
-DA:1997,0
-DA:2000,6
-DA:2003,6
-DA:2004,6
-DA:2005,6
+DA:1888,1
+DA:1889,1
+DA:1891,1
+DA:1892,1
+DA:1894,1
+DA:1904,1
+DA:1915,1
+DA:1927,0
+DA:1939,0
+DA:1950,0
+DA:1962,0
+DA:1972,3
+DA:1983,0
+DA:1993,3
+DA:2004,0
DA:2007,6
-DA:2020,9
-DA:2033,10
-DA:2035,10
-DA:2036,6
-DA:2038,4
-DA:2040,4
-DA:2042,4
-DA:2043,4
-DA:2044,1
-DA:2045,1
-DA:2048,3
-DA:2051,4
-DA:2052,4
-DA:2054,0
+DA:2010,6
+DA:2011,6
+DA:2012,6
+DA:2014,6
+DA:2027,9
+DA:2040,10
+DA:2042,10
+DA:2043,6
+DA:2045,4
+DA:2046,4
+DA:2048,4
+DA:2049,4
+DA:2050,1
+DA:2051,1
+DA:2054,3
DA:2057,4
-DA:2061,2
-DA:2062,2
-DA:2063,0
-DA:2065,2
-DA:2066,0
+DA:2058,4
+DA:2060,0
+DA:2063,4
+DA:2067,2
DA:2068,2
-DA:2077,2
-DA:2078,2
-DA:2079,2
-DA:2080,2
-DA:2082,0
-DA:2085,0
-DA:2088,2
-DA:2098,2
-DA:2110,5
-DA:2111,5
-DA:2112,5
-DA:2114,5
-DA:2115,5
+DA:2069,0
+DA:2071,2
+DA:2072,0
+DA:2074,2
+DA:2083,2
+DA:2084,2
+DA:2085,2
+DA:2086,2
+DA:2088,0
+DA:2091,0
+DA:2094,2
+DA:2104,2
DA:2116,5
+DA:2117,5
DA:2118,5
-DA:2119,5
DA:2120,5
+DA:2121,5
+DA:2122,5
DA:2124,5
DA:2125,5
-DA:2134,0
-DA:2144,0
-DA:2145,0
-DA:2146,0
-DA:2147,0
+DA:2126,5
+DA:2130,5
+DA:2131,5
+DA:2140,0
+DA:2150,0
DA:2151,0
-DA:2154,4
-DA:2156,4
-DA:2157,4
-DA:2159,4
+DA:2152,0
+DA:2153,0
+DA:2157,0
DA:2160,4
DA:2162,4
DA:2163,4
-DA:2164,4
+DA:2165,4
DA:2166,4
-DA:2168,0
-DA:2171,4
-DA:2175,1
-DA:2177,1
-DA:2178,1
-DA:2179,1
-DA:2180,1
-DA:2181,0
+DA:2168,4
+DA:2169,4
+DA:2170,4
+DA:2172,4
+DA:2174,0
+DA:2177,4
+DA:2181,1
DA:2182,1
-DA:2183,0
-DA:2184,0
-DA:2185,0
-DA:2186,0
-DA:2187,0
-DA:2189,0
+DA:2184,1
+DA:2185,1
+DA:2186,1
+DA:2187,1
+DA:2188,0
+DA:2189,1
+DA:2190,0
DA:2191,0
DA:2192,0
-DA:2195,1
+DA:2193,0
+DA:2194,0
+DA:2196,0
+DA:2198,0
DA:2199,0
-DA:2200,1
-DA:2201,0
-DA:2202,0
-DA:2205,1
-DA:2206,1
+DA:2202,1
+DA:2206,0
DA:2207,1
-DA:2208,1
+DA:2208,0
+DA:2209,0
DA:2212,1
-DA:2213,0
-DA:2214,0
-DA:2215,0
-DA:2218,0
+DA:2213,1
+DA:2214,1
+DA:2215,1
+DA:2219,1
DA:2220,0
DA:2221,0
DA:2222,0
-DA:2223,0
DA:2225,0
DA:2227,0
-DA:2232,1
-DA:2234,1
-DA:2237,1
-DA:2238,1
+DA:2228,0
+DA:2229,0
+DA:2230,0
+DA:2232,0
+DA:2234,0
+DA:2239,1
DA:2241,1
-DA:2246,1
-DA:2247,1
-DA:2248,3
-DA:2249,3
-DA:2250,3
-DA:2251,3
-DA:2252,1
-DA:2253,2
+DA:2244,1
+DA:2245,1
+DA:2248,1
+DA:2253,1
DA:2254,1
-DA:2255,1
-DA:2256,1
+DA:2255,3
+DA:2256,3
+DA:2257,3
+DA:2258,3
DA:2259,1
+DA:2260,2
+DA:2261,1
+DA:2262,1
DA:2263,1
-DA:2265,6
-DA:2267,6
-DA:2269,4
-DA:2272,4
-DA:2281,6
-DA:2285,1
-DA:2286,1
-DA:2288,1
+DA:2266,1
+DA:2270,1
+DA:2272,6
+DA:2274,6
+DA:2276,4
+DA:2279,4
+DA:2288,6
DA:2292,1
DA:2293,1
DA:2295,1
-DA:2296,1
-DA:2298,1
DA:2299,1
-DA:2300,0
-DA:2301,0
+DA:2300,1
+DA:2302,1
DA:2303,1
-DA:2304,0
-DA:2307,1
-DA:2308,1
+DA:2305,1
+DA:2306,1
+DA:2307,0
+DA:2308,0
DA:2310,1
-DA:2311,1
-DA:2313,1
+DA:2311,0
+DA:2314,1
+DA:2315,1
DA:2317,1
DA:2318,1
DA:2320,1
-DA:2321,1
-DA:2322,1
-DA:2323,1
+DA:2324,1
DA:2325,1
-DA:2326,0
-DA:2327,0
-DA:2328,0
+DA:2327,1
+DA:2328,1
+DA:2329,1
+DA:2330,1
DA:2332,1
-DA:2335,1
-DA:2336,15
-DA:2337,15
-DA:2338,15
-DA:2339,15
-DA:2340,15
-DA:2342,0
-DA:2346,1
-DA:2347,0
-DA:2348,0
+DA:2333,0
+DA:2334,0
+DA:2335,0
+DA:2339,1
+DA:2342,1
+DA:2343,16
+DA:2344,16
+DA:2345,16
+DA:2346,16
+DA:2347,16
DA:2349,0
-DA:2350,0
-DA:2351,0
-DA:2352,0
-DA:2353,0
-DA:2362,1
-DA:2363,13
-DA:2364,2
-DA:2366,11
-DA:2367,11
-DA:2370,1
-DA:2371,4
-DA:2372,4
-DA:2373,0
-DA:2374,0
-DA:2377,4
+DA:2353,1
+DA:2354,0
+DA:2355,0
+DA:2356,0
+DA:2357,0
+DA:2358,0
+DA:2359,0
+DA:2360,0
+DA:2369,1
+DA:2370,13
+DA:2371,2
+DA:2373,11
+DA:2374,11
+DA:2377,1
DA:2378,4
DA:2379,4
-DA:2380,4
+DA:2380,0
DA:2381,0
-DA:2382,0
DA:2384,4
DA:2385,4
-DA:2387,0
-DA:2391,0
-DA:2392,0
+DA:2386,4
+DA:2387,4
+DA:2388,4
+DA:2389,0
+DA:2390,0
+DA:2392,4
DA:2394,0
+DA:2396,4
DA:2404,1
DA:2405,3
DA:2412,1
@@ -1293,7 +1315,7 @@ DA:2458,4
DA:2460,1
DA:2461,3
DA:2462,3
-DA:2463,399
+DA:2463,387
DA:2464,48
DA:2465,48
DA:2470,1
@@ -1339,237 +1361,254 @@ DA:2533,1
DA:2534,0
DA:2535,0
DA:2536,0
+DA:2537,0
DA:2538,0
+DA:2539,0
DA:2540,0
-DA:2541,0
-DA:2544,1
-DA:2545,1
-DA:2547,1
+DA:2542,0
+DA:2545,0
+DA:2546,0
+DA:2547,0
DA:2549,0
-DA:2552,0
-DA:2557,1
-DA:2558,4
-DA:2560,4
-DA:2561,4
-DA:2562,4
-DA:2563,4
-DA:2564,4
-DA:2565,0
+DA:2552,1
+DA:2553,1
+DA:2555,1
+DA:2557,0
+DA:2560,0
+DA:2565,1
DA:2566,4
-DA:2567,1
-DA:2568,3
-DA:2569,3
+DA:2567,4
+DA:2568,4
+DA:2569,4
+DA:2570,0
DA:2571,4
-DA:2572,4
-DA:2573,4
-DA:2574,4
-DA:2575,4
-DA:2577,4
-DA:2579,0
-DA:2582,0
-DA:2583,0
+DA:2572,1
+DA:2573,3
+DA:2574,3
+DA:2576,4
+DA:2579,1
+DA:2580,4
+DA:2582,4
+DA:2583,4
+DA:2584,4
DA:2585,4
-DA:2588,1
-DA:2589,4
-DA:2590,4
-DA:2591,4
-DA:2593,4
+DA:2586,4
+DA:2587,4
+DA:2589,0
+DA:2592,0
+DA:2593,0
+DA:2595,4
DA:2598,1
-DA:2599,6
-DA:2600,2
-DA:2602,6
-DA:2603,6
-DA:2606,1
-DA:2607,1
-DA:2608,7
-DA:2610,7
-DA:2611,7
-DA:2612,7
-DA:2613,5
-DA:2614,5
-DA:2615,5
-DA:2618,7
-DA:2619,7
-DA:2620,7
-DA:2622,7
+DA:2599,5
+DA:2600,5
+DA:2601,5
+DA:2602,5
+DA:2603,5
+DA:2605,5
+DA:2611,1
+DA:2612,6
+DA:2613,2
+DA:2615,6
+DA:2616,6
+DA:2619,1
+DA:2620,1
+DA:2621,8
DA:2623,7
-DA:2624,6
+DA:2624,7
+DA:2625,7
DA:2626,7
-DA:2628,7
-DA:2630,0
-DA:2635,1
-DA:2636,7
-DA:2638,7
-DA:2639,4
-DA:2641,3
-DA:2642,3
-DA:2643,21
-DA:2644,0
-DA:2647,3
-DA:2648,3
-DA:2649,3
-DA:2650,0
-DA:2651,0
-DA:2654,3
-DA:2658,7
-DA:2661,1
+DA:2627,5
+DA:2628,5
+DA:2629,5
+DA:2632,7
+DA:2633,7
+DA:2634,7
+DA:2635,7
+DA:2637,0
+DA:2640,7
+DA:2641,7
+DA:2642,6
+DA:2644,7
+DA:2646,7
+DA:2648,0
+DA:2653,1
+DA:2654,7
+DA:2656,7
+DA:2657,4
+DA:2659,3
+DA:2660,3
+DA:2661,21
DA:2662,0
-DA:2663,0
-DA:2664,0
-DA:2666,0
-DA:2669,1
-DA:2670,3
+DA:2665,3
+DA:2666,3
+DA:2667,3
+DA:2668,0
+DA:2669,0
DA:2671,0
-DA:2673,3
-DA:2676,1
-DA:2677,0
-DA:2678,0
-DA:2680,0
-DA:2683,1
+DA:2674,3
+DA:2678,7
+DA:2681,1
+DA:2682,0
+DA:2683,0
DA:2684,0
DA:2685,0
-DA:2688,1
-DA:2689,28
-DA:2690,28
-DA:2691,28
-DA:2692,41
-DA:2693,41
+DA:2687,0
+DA:2690,1
+DA:2691,3
+DA:2692,0
+DA:2694,3
+DA:2697,1
DA:2698,0
-DA:2702,1
-DA:2703,54
-DA:2704,54
-DA:2705,29
-DA:2707,25
-DA:2709,17
-DA:2716,1
-DA:2717,1
-DA:2718,1
-DA:2719,9
-DA:2720,2
-DA:2721,2
-DA:2723,9
-DA:2724,3
-DA:2725,3
-DA:2726,3
-DA:2727,3
-DA:2728,3
-DA:2731,3
-DA:2734,9
+DA:2699,0
+DA:2700,0
+DA:2702,0
+DA:2705,1
+DA:2706,0
+DA:2707,0
+DA:2710,1
+DA:2711,28
+DA:2712,28
+DA:2713,28
+DA:2714,41
+DA:2715,41
+DA:2720,0
+DA:2724,1
+DA:2725,54
+DA:2726,54
+DA:2727,29
+DA:2729,25
+DA:2731,17
+DA:2738,1
+DA:2739,1
+DA:2740,1
DA:2741,9
DA:2742,2
+DA:2743,2
DA:2745,9
-DA:2748,1
+DA:2746,3
+DA:2747,3
+DA:2748,3
DA:2749,3
-DA:2752,3
-DA:2756,1
-DA:2757,12
-DA:2758,12
-DA:2759,12
-DA:2760,12
-DA:2761,12
-DA:2762,9
-DA:2767,1
-DA:2768,48
-DA:2769,48
-DA:2770,256
-DA:2776,256
-DA:2777,256
-DA:2778,2
-DA:2781,256
-DA:2782,66
-DA:2783,66
-DA:2786,48
+DA:2750,3
+DA:2753,3
+DA:2756,9
+DA:2763,9
+DA:2764,2
+DA:2767,9
+DA:2770,1
+DA:2771,3
+DA:2774,3
+DA:2778,1
+DA:2779,12
+DA:2780,12
+DA:2781,12
+DA:2782,12
+DA:2783,12
+DA:2784,9
DA:2789,1
-DA:2790,256
-DA:2791,256
-DA:2793,21
-DA:2794,10
-DA:2795,2
-DA:2799,256
-DA:2802,1
-DA:2803,2
-DA:2804,3
-DA:2812,1
-DA:2813,259
-DA:2816,1
-DA:2817,150
-DA:2818,10
-DA:2819,9
-DA:2820,9
-DA:2822,1
-DA:2823,1
-DA:2826,140
-DA:2830,1
-DA:2831,1
-DA:2833,1
-DA:2834,0
-DA:2835,0
+DA:2790,48
+DA:2791,48
+DA:2792,220
+DA:2798,220
+DA:2799,220
+DA:2800,2
+DA:2803,220
+DA:2804,57
+DA:2805,57
+DA:2808,48
+DA:2811,1
+DA:2812,220
+DA:2813,220
+DA:2815,16
+DA:2816,9
+DA:2817,2
+DA:2821,220
+DA:2824,1
+DA:2825,2
+DA:2826,3
+DA:2834,1
+DA:2835,223
DA:2838,1
-DA:2839,1
-DA:2840,0
-DA:2842,0
+DA:2839,154
+DA:2840,14
+DA:2841,13
+DA:2842,13
+DA:2844,1
DA:2845,1
-DA:2848,1
-DA:2849,2
-DA:2850,2
-DA:2851,2
-DA:2852,2
-DA:2853,2
-DA:2854,28
-DA:2855,28
-DA:2856,28
-DA:2858,2
+DA:2848,140
+DA:2852,1
+DA:2853,1
+DA:2855,1
+DA:2856,0
+DA:2857,0
+DA:2860,1
DA:2861,1
DA:2862,0
-DA:2866,1
-DA:2867,57
-DA:2868,47
-DA:2869,47
-DA:2872,10
-DA:2877,1
-DA:2878,1
-DA:2879,1
-DA:2880,1
-DA:2881,1
-DA:2882,1
+DA:2864,0
+DA:2867,1
+DA:2870,1
+DA:2871,2
+DA:2872,2
+DA:2873,2
+DA:2874,2
+DA:2875,2
+DA:2876,28
+DA:2877,28
+DA:2878,28
+DA:2880,2
DA:2883,1
-DA:2884,1
-DA:2885,1
-DA:2886,1
-DA:2887,1
+DA:2884,0
DA:2888,1
-DA:2889,1
-DA:2890,1
-DA:2891,1
-DA:2892,1
-DA:2896,1
-DA:2897,1
-DA:2898,1
+DA:2889,57
+DA:2890,47
+DA:2891,47
+DA:2894,10
+DA:2899,1
DA:2900,1
-DA:2902,0
+DA:2901,1
+DA:2902,1
DA:2903,1
-DA:2905,0
+DA:2904,1
+DA:2905,1
+DA:2906,1
+DA:2907,1
+DA:2908,1
+DA:2909,1
+DA:2910,1
DA:2911,1
-DA:2912,49
-DA:2913,576
-DA:2916,49
-DA:2917,96
-DA:2918,96
-DA:2920,96
-DA:2921,126
-DA:2922,32
-DA:2924,94
-DA:2925,6
-DA:2927,88
-DA:2930,2
-DA:2931,0
+DA:2912,1
+DA:2913,1
+DA:2914,1
+DA:2918,1
+DA:2919,1
+DA:2920,1
+DA:2922,1
+DA:2924,0
+DA:2925,1
+DA:2927,0
+DA:2933,1
DA:2934,49
-LF:998
-LH:818
+DA:2935,576
+DA:2938,49
+DA:2939,96
+DA:2940,96
+DA:2942,96
+DA:2943,126
+DA:2944,32
+DA:2946,94
+DA:2947,6
+DA:2949,88
+DA:2952,2
+DA:2953,0
+DA:2956,49
+LF:1017
+LH:829
BRDA:3,1,0,0
BRDA:3,1,1,1
BRDA:3,2,0,1
BRDA:3,2,1,1
+BRDA:3,2,2,1
+BRDA:3,2,3,1
BRDA:8,3,0,0
BRDA:8,3,1,1
BRDA:10,4,0,0
@@ -1580,556 +1619,559 @@ BRDA:19,6,0,0
BRDA:19,6,1,0
BRDA:20,7,0,0
BRDA:20,7,1,0
-BRDA:93,8,0,0
-BRDA:93,8,1,0
-BRDA:139,9,0,4
-BRDA:139,9,1,6
-BRDA:140,10,0,2
-BRDA:140,10,1,4
-BRDA:141,11,0,1
-BRDA:141,11,1,3
-BRDA:142,12,0,1
-BRDA:142,12,1,2
-BRDA:143,13,0,2
-BRDA:143,13,1,8
-BRDA:146,14,0,2
-BRDA:146,14,1,6
-BRDA:150,15,0,6
-BRDA:150,15,1,2
-BRDA:150,16,0,8
-BRDA:150,16,1,4
-BRDA:151,17,0,2
-BRDA:151,17,1,4
-BRDA:160,18,0,0
-BRDA:160,18,1,0
-BRDA:160,19,0,0
-BRDA:160,19,1,0
-BRDA:164,20,0,0
-BRDA:164,20,1,0
-BRDA:164,21,0,0
-BRDA:164,21,1,0
-BRDA:164,21,2,0
-BRDA:167,22,0,0
-BRDA:167,22,1,0
-BRDA:185,23,0,1
-BRDA:185,23,1,0
-BRDA:195,24,0,82
-BRDA:195,24,1,82
-BRDA:208,25,0,1
-BRDA:208,25,1,38
-BRDA:212,26,0,16
-BRDA:212,26,1,22
-BRDA:218,27,0,1
-BRDA:218,27,1,37
-BRDA:220,28,0,6
-BRDA:220,28,1,31
-BRDA:225,29,0,1
-BRDA:225,29,1,30
-BRDA:229,30,0,4
-BRDA:229,30,1,9
-BRDA:229,30,2,4
-BRDA:229,30,3,5
-BRDA:246,31,0,2
-BRDA:246,31,1,15
-BRDA:248,32,0,2
-BRDA:248,32,1,5
-BRDA:248,33,0,7
-BRDA:248,33,1,7
-BRDA:248,33,2,2
-BRDA:254,34,0,15
-BRDA:254,34,1,0
-BRDA:254,35,0,15
-BRDA:254,35,1,15
-BRDA:254,35,2,15
-BRDA:258,36,0,10
-BRDA:258,36,1,47
-BRDA:258,37,0,57
-BRDA:258,37,1,57
-BRDA:260,38,0,3
-BRDA:260,38,1,2
-BRDA:268,39,0,5
-BRDA:268,39,1,0
-BRDA:278,40,0,1
-BRDA:278,40,1,1
-BRDA:278,41,0,2
-BRDA:278,41,1,1
-BRDA:287,42,0,4
-BRDA:287,42,1,7
-BRDA:292,43,0,3
-BRDA:292,43,1,0
-BRDA:303,44,0,2
-BRDA:303,44,1,1
-BRDA:303,45,0,3
-BRDA:303,45,1,2
-BRDA:306,46,0,1
-BRDA:306,46,1,1
-BRDA:319,47,0,2
-BRDA:319,47,1,1
-BRDA:319,48,0,3
-BRDA:319,48,1,3
-BRDA:319,48,2,2
-BRDA:321,49,0,2
-BRDA:321,49,1,0
-BRDA:347,50,0,1
-BRDA:347,50,1,4
-BRDA:351,51,0,3
-BRDA:351,51,1,1
-BRDA:390,52,0,0
-BRDA:390,52,1,0
-BRDA:390,53,0,0
-BRDA:390,53,1,0
-BRDA:396,54,0,1
-BRDA:396,54,1,3
-BRDA:401,55,0,0
-BRDA:401,55,1,0
-BRDA:401,56,0,0
-BRDA:401,56,1,0
-BRDA:401,56,2,0
-BRDA:415,57,0,0
-BRDA:415,57,1,0
-BRDA:424,58,0,0
-BRDA:424,58,1,1
-BRDA:431,59,0,3
-BRDA:431,59,1,2
-BRDA:441,60,0,1
-BRDA:441,60,1,117
-BRDA:443,61,0,7
-BRDA:443,61,1,111
-BRDA:443,62,0,118
-BRDA:443,62,1,117
-BRDA:445,63,0,7
-BRDA:445,63,1,104
-BRDA:445,64,0,111
-BRDA:445,64,1,111
-BRDA:445,64,2,111
-BRDA:447,65,0,104
-BRDA:447,65,1,0
-BRDA:457,66,0,117
-BRDA:457,66,1,1
-BRDA:466,67,0,104
-BRDA:466,67,1,14
-BRDA:466,68,0,118
-BRDA:466,68,1,104
-BRDA:469,69,0,56
-BRDA:469,69,1,62
-BRDA:475,70,0,3
-BRDA:475,70,1,0
-BRDA:476,71,0,0
-BRDA:476,71,1,3
-BRDA:476,72,0,3
-BRDA:476,72,1,3
-BRDA:477,73,0,0
-BRDA:477,73,1,0
-BRDA:477,74,0,0
-BRDA:477,74,1,0
-BRDA:479,75,0,0
-BRDA:479,75,1,0
-BRDA:483,76,0,3
-BRDA:483,76,1,0
-BRDA:502,77,0,4
-BRDA:502,77,1,0
+BRDA:96,8,0,0
+BRDA:96,8,1,0
+BRDA:142,9,0,4
+BRDA:142,9,1,6
+BRDA:143,10,0,2
+BRDA:143,10,1,4
+BRDA:144,11,0,1
+BRDA:144,11,1,3
+BRDA:145,12,0,1
+BRDA:145,12,1,2
+BRDA:146,13,0,2
+BRDA:146,13,1,8
+BRDA:149,14,0,2
+BRDA:149,14,1,6
+BRDA:153,15,0,6
+BRDA:153,15,1,2
+BRDA:153,16,0,8
+BRDA:153,16,1,4
+BRDA:154,17,0,2
+BRDA:154,17,1,4
+BRDA:163,18,0,0
+BRDA:163,18,1,0
+BRDA:163,19,0,0
+BRDA:163,19,1,0
+BRDA:167,20,0,0
+BRDA:167,20,1,0
+BRDA:167,21,0,0
+BRDA:167,21,1,0
+BRDA:167,21,2,0
+BRDA:170,22,0,0
+BRDA:170,22,1,0
+BRDA:188,23,0,1
+BRDA:188,23,1,0
+BRDA:197,24,0,82
+BRDA:197,24,1,82
+BRDA:210,25,0,1
+BRDA:210,25,1,38
+BRDA:214,26,0,16
+BRDA:214,26,1,22
+BRDA:220,27,0,1
+BRDA:220,27,1,37
+BRDA:222,28,0,6
+BRDA:222,28,1,31
+BRDA:227,29,0,1
+BRDA:227,29,1,30
+BRDA:231,30,0,4
+BRDA:231,30,1,9
+BRDA:231,30,2,4
+BRDA:231,30,3,5
+BRDA:248,31,0,2
+BRDA:248,31,1,15
+BRDA:250,32,0,2
+BRDA:250,32,1,5
+BRDA:250,33,0,7
+BRDA:250,33,1,7
+BRDA:250,33,2,2
+BRDA:256,34,0,15
+BRDA:256,34,1,0
+BRDA:256,35,0,15
+BRDA:256,35,1,15
+BRDA:256,35,2,15
+BRDA:260,36,0,10
+BRDA:260,36,1,47
+BRDA:260,37,0,57
+BRDA:260,37,1,57
+BRDA:262,38,0,3
+BRDA:262,38,1,2
+BRDA:270,39,0,5
+BRDA:270,39,1,0
+BRDA:280,40,0,1
+BRDA:280,40,1,1
+BRDA:280,41,0,2
+BRDA:280,41,1,1
+BRDA:289,42,0,4
+BRDA:289,42,1,7
+BRDA:294,43,0,3
+BRDA:294,43,1,0
+BRDA:305,44,0,2
+BRDA:305,44,1,1
+BRDA:305,45,0,3
+BRDA:305,45,1,2
+BRDA:308,46,0,1
+BRDA:308,46,1,1
+BRDA:321,47,0,2
+BRDA:321,47,1,1
+BRDA:321,48,0,3
+BRDA:321,48,1,3
+BRDA:321,48,2,2
+BRDA:323,49,0,2
+BRDA:323,49,1,0
+BRDA:349,50,0,1
+BRDA:349,50,1,4
+BRDA:353,51,0,3
+BRDA:353,51,1,1
+BRDA:392,52,0,0
+BRDA:392,52,1,0
+BRDA:392,53,0,0
+BRDA:392,53,1,0
+BRDA:398,54,0,1
+BRDA:398,54,1,3
+BRDA:403,55,0,0
+BRDA:403,55,1,0
+BRDA:403,56,0,0
+BRDA:403,56,1,0
+BRDA:403,56,2,0
+BRDA:417,57,0,0
+BRDA:417,57,1,0
+BRDA:426,58,0,0
+BRDA:426,58,1,1
+BRDA:433,59,0,3
+BRDA:433,59,1,2
+BRDA:443,60,0,1
+BRDA:443,60,1,117
+BRDA:445,61,0,7
+BRDA:445,61,1,111
+BRDA:445,62,0,118
+BRDA:445,62,1,117
+BRDA:447,63,0,7
+BRDA:447,63,1,104
+BRDA:447,64,0,111
+BRDA:447,64,1,111
+BRDA:447,64,2,111
+BRDA:449,65,0,104
+BRDA:449,65,1,0
+BRDA:459,66,0,117
+BRDA:459,66,1,1
+BRDA:468,67,0,104
+BRDA:468,67,1,14
+BRDA:468,68,0,118
+BRDA:468,68,1,104
+BRDA:471,69,0,56
+BRDA:471,69,1,62
+BRDA:477,70,0,3
+BRDA:477,70,1,0
+BRDA:478,71,0,0
+BRDA:478,71,1,3
+BRDA:478,72,0,3
+BRDA:478,72,1,3
+BRDA:478,72,2,3
+BRDA:479,73,0,0
+BRDA:479,73,1,0
+BRDA:481,74,0,0
+BRDA:481,74,1,0
+BRDA:483,75,0,0
+BRDA:483,75,1,0
+BRDA:487,76,0,3
+BRDA:487,76,1,0
+BRDA:506,77,0,4
+BRDA:506,77,1,0
BRDA:510,78,0,4
BRDA:510,78,1,0
-BRDA:517,79,0,0
-BRDA:517,79,1,0
-BRDA:537,80,0,9
-BRDA:537,80,1,8
-BRDA:537,80,2,8
-BRDA:537,80,3,3
-BRDA:542,81,0,1
-BRDA:542,81,1,0
-BRDA:557,82,0,1
-BRDA:557,82,1,3
-BRDA:570,83,0,1
-BRDA:570,83,1,18
-BRDA:570,84,0,19
-BRDA:570,84,1,18
-BRDA:573,85,0,15
-BRDA:573,85,1,3
-BRDA:593,86,0,109
-BRDA:593,86,1,3172
-BRDA:610,87,0,1
-BRDA:610,87,1,3
-BRDA:614,88,0,2
-BRDA:614,88,1,1
-BRDA:628,89,0,1
-BRDA:628,89,1,3
-BRDA:631,90,0,2
-BRDA:631,90,1,1
-BRDA:691,91,0,6
-BRDA:691,91,1,2
-BRDA:691,92,0,8
-BRDA:691,92,1,6
-BRDA:693,93,0,0
-BRDA:693,93,1,2
-BRDA:697,94,0,0
-BRDA:697,94,1,8
+BRDA:510,79,0,4
+BRDA:510,79,1,4
+BRDA:514,80,0,4
+BRDA:514,80,1,0
+BRDA:521,81,0,0
+BRDA:521,81,1,0
+BRDA:540,82,0,9
+BRDA:540,82,1,8
+BRDA:540,82,2,8
+BRDA:540,82,3,3
+BRDA:543,83,0,6
+BRDA:543,83,1,5
+BRDA:543,83,2,5
+BRDA:543,83,3,3
+BRDA:548,84,0,1
+BRDA:548,84,1,0
+BRDA:563,85,0,1
+BRDA:563,85,1,3
+BRDA:576,86,0,1
+BRDA:576,86,1,18
+BRDA:576,87,0,19
+BRDA:576,87,1,18
+BRDA:579,88,0,15
+BRDA:579,88,1,3
+BRDA:599,89,0,109
+BRDA:599,89,1,3172
+BRDA:616,90,0,1
+BRDA:616,90,1,3
+BRDA:620,91,0,2
+BRDA:620,91,1,1
+BRDA:634,92,0,1
+BRDA:634,92,1,3
+BRDA:637,93,0,2
+BRDA:637,93,1,1
+BRDA:697,94,0,6
+BRDA:697,94,1,2
BRDA:697,95,0,8
-BRDA:697,95,1,3
-BRDA:701,96,0,5
-BRDA:701,96,1,3
-BRDA:705,97,0,1
-BRDA:705,97,1,6
-BRDA:776,98,0,3
-BRDA:776,98,1,1
-BRDA:777,99,0,3
-BRDA:777,99,1,0
-BRDA:785,100,0,2
-BRDA:785,100,1,2
-BRDA:790,101,0,1
-BRDA:790,101,1,1
-BRDA:792,102,0,1
-BRDA:792,102,1,0
-BRDA:804,103,0,0
-BRDA:804,103,1,2
-BRDA:854,104,0,0
-BRDA:854,104,1,1
-BRDA:878,105,0,5
-BRDA:878,105,1,0
-BRDA:878,106,0,5
-BRDA:878,106,1,5
-BRDA:878,106,2,5
-BRDA:983,107,0,2
-BRDA:983,107,1,0
-BRDA:983,108,0,2
-BRDA:983,108,1,2
-BRDA:983,108,2,2
-BRDA:987,109,0,2
-BRDA:987,109,1,0
-BRDA:998,110,0,0
-BRDA:998,110,1,2
-BRDA:1007,111,0,0
-BRDA:1007,111,1,2
-BRDA:1010,112,0,1
-BRDA:1010,112,1,1
-BRDA:1017,113,0,2
-BRDA:1017,113,1,0
-BRDA:1029,114,0,1
-BRDA:1029,114,1,1
-BRDA:1103,115,0,2
-BRDA:1103,115,1,1
-BRDA:1108,116,0,2
-BRDA:1108,116,1,1
-BRDA:1124,117,0,90
-BRDA:1124,117,1,0
-BRDA:1136,118,0,0
-BRDA:1136,118,1,2
-BRDA:1136,119,0,2
-BRDA:1136,119,1,2
-BRDA:1184,120,0,1
-BRDA:1184,120,1,4
-BRDA:1200,121,0,0
-BRDA:1200,121,1,4
-BRDA:1216,122,0,85
-BRDA:1216,122,1,68
-BRDA:1216,122,2,64
-BRDA:1216,122,3,64
-BRDA:1231,123,0,168
-BRDA:1231,123,1,126
-BRDA:1231,124,0,294
-BRDA:1231,124,1,294
-BRDA:1435,125,0,1
-BRDA:1435,125,1,0
-BRDA:1437,126,0,1
-BRDA:1437,126,1,0
-BRDA:1482,127,0,2
-BRDA:1482,127,1,2
-BRDA:1488,128,0,8
-BRDA:1488,128,1,4
-BRDA:1489,129,0,2
-BRDA:1489,129,1,6
-BRDA:1489,130,0,8
-BRDA:1489,130,1,4
-BRDA:1489,130,2,4
-BRDA:1489,130,3,2
-BRDA:1491,131,0,4
-BRDA:1491,131,1,2
-BRDA:1494,132,0,2
-BRDA:1494,132,1,2
-BRDA:1494,133,0,4
-BRDA:1494,133,1,4
-BRDA:1494,133,2,2
-BRDA:1529,134,0,4
-BRDA:1529,134,1,4
-BRDA:1529,135,0,8
-BRDA:1529,135,1,6
-BRDA:1530,136,0,4
-BRDA:1530,136,1,4
-BRDA:1532,137,0,0
-BRDA:1532,137,1,8
-BRDA:1543,138,0,0
-BRDA:1543,138,1,16
-BRDA:1543,139,0,16
-BRDA:1543,139,1,16
-BRDA:1543,139,2,4
-BRDA:1543,139,3,0
-BRDA:1543,139,4,0
-BRDA:1555,140,0,12
-BRDA:1555,140,1,0
-BRDA:1556,141,0,6
-BRDA:1556,141,1,6
-BRDA:1558,142,0,10
-BRDA:1558,142,1,2
-BRDA:1561,143,0,10
-BRDA:1561,143,1,2
-BRDA:1568,144,0,8
-BRDA:1568,144,1,12
-BRDA:1570,145,0,6
-BRDA:1570,145,1,6
-BRDA:1881,146,0,1
-BRDA:1881,146,1,0
-BRDA:1884,147,0,1
-BRDA:1884,147,1,0
-BRDA:2004,148,0,6
-BRDA:2004,148,1,0
-BRDA:2035,149,0,6
-BRDA:2035,149,1,4
-BRDA:2035,150,0,10
-BRDA:2035,150,1,4
-BRDA:2043,151,0,1
-BRDA:2043,151,1,3
-BRDA:2062,152,0,0
-BRDA:2062,152,1,2
-BRDA:2065,153,0,0
-BRDA:2065,153,1,2
-BRDA:2079,154,0,2
-BRDA:2079,154,1,0
-BRDA:2110,155,0,5
-BRDA:2110,155,1,0
-BRDA:2110,156,0,5
-BRDA:2110,156,1,5
-BRDA:2114,157,0,5
-BRDA:2114,157,1,0
-BRDA:2118,158,0,5
-BRDA:2118,158,1,0
-BRDA:2146,159,0,0
-BRDA:2146,159,1,0
-BRDA:2180,160,0,0
-BRDA:2180,160,1,1
-BRDA:2180,161,0,1
-BRDA:2180,161,1,0
-BRDA:2182,162,0,0
-BRDA:2182,162,1,1
-BRDA:2182,163,0,1
-BRDA:2182,163,1,0
-BRDA:2184,164,0,0
-BRDA:2184,164,1,0
-BRDA:2191,165,0,0
-BRDA:2191,165,1,0
-BRDA:2195,166,0,0
-BRDA:2195,166,1,1
-BRDA:2195,167,0,1
-BRDA:2195,167,1,0
-BRDA:2195,167,2,0
-BRDA:2195,167,3,0
-BRDA:2200,168,0,0
-BRDA:2200,168,1,1
-BRDA:2205,169,0,1
-BRDA:2205,169,1,0
-BRDA:2214,170,0,0
-BRDA:2214,170,1,0
-BRDA:2220,171,0,0
-BRDA:2220,171,1,0
-BRDA:2220,172,0,0
-BRDA:2220,172,1,0
-BRDA:2222,173,0,0
-BRDA:2222,173,1,0
-BRDA:2237,174,0,1
-BRDA:2237,174,1,0
-BRDA:2251,175,0,1
-BRDA:2251,175,1,2
-BRDA:2253,176,0,1
-BRDA:2253,176,1,1
-BRDA:2255,177,0,1
-BRDA:2255,177,1,0
-BRDA:2265,178,0,1
-BRDA:2265,178,1,5
-BRDA:2267,179,0,4
-BRDA:2267,179,1,2
-BRDA:2269,180,0,1
-BRDA:2269,180,1,3
-BRDA:2270,181,0,2
-BRDA:2270,181,1,1
-BRDA:2286,182,0,0
-BRDA:2286,182,1,1
-BRDA:2299,183,0,0
-BRDA:2299,183,1,1
-BRDA:2303,184,0,0
-BRDA:2303,184,1,1
-BRDA:2308,185,0,1
-BRDA:2308,185,1,0
-BRDA:2325,186,0,0
-BRDA:2325,186,1,1
-BRDA:2325,187,0,1
-BRDA:2325,187,1,0
-BRDA:2325,187,2,0
-BRDA:2325,187,3,0
-BRDA:2327,188,0,0
-BRDA:2327,188,1,0
-BRDA:2347,189,0,0
-BRDA:2347,189,1,0
-BRDA:2348,190,0,0
-BRDA:2348,190,1,0
-BRDA:2363,191,0,2
-BRDA:2363,191,1,11
-BRDA:2367,192,0,3
-BRDA:2367,192,1,8
-BRDA:2372,193,0,0
-BRDA:2372,193,1,4
-BRDA:2380,194,0,0
-BRDA:2380,194,1,4
-BRDA:2384,195,0,4
-BRDA:2384,195,1,0
-BRDA:2384,196,0,4
-BRDA:2384,196,1,4
-BRDA:2391,197,0,0
-BRDA:2391,197,1,0
-BRDA:2391,198,0,0
-BRDA:2391,198,1,0
-BRDA:2422,199,0,10
-BRDA:2422,199,1,8
-BRDA:2422,200,0,18
-BRDA:2422,200,1,18
-BRDA:2432,201,0,3
-BRDA:2432,201,1,1
-BRDA:2463,202,0,48
-BRDA:2463,202,1,351
-BRDA:2463,203,0,399
-BRDA:2463,203,1,214
-BRDA:2463,203,2,185
-BRDA:2484,204,0,335
-BRDA:2484,204,1,0
-BRDA:2489,205,0,272
-BRDA:2489,205,1,63
-BRDA:2489,206,0,335
-BRDA:2489,206,1,117
-BRDA:2489,206,2,335
-BRDA:2496,207,0,7
-BRDA:2496,207,1,328
-BRDA:2506,208,0,100
-BRDA:2506,208,1,444
-BRDA:2506,209,0,544
-BRDA:2506,209,1,106
-BRDA:2516,210,0,111
-BRDA:2516,210,1,9
-BRDA:2524,211,0,0
-BRDA:2524,211,1,4
-BRDA:2535,212,0,0
-BRDA:2535,212,1,0
-BRDA:2564,213,0,0
-BRDA:2564,213,1,4
-BRDA:2564,214,0,4
-BRDA:2564,214,1,1
-BRDA:2566,215,0,1
-BRDA:2566,215,1,3
-BRDA:2566,216,0,4
-BRDA:2566,216,1,4
-BRDA:2568,217,0,3
-BRDA:2568,217,1,0
-BRDA:2572,218,0,4
-BRDA:2572,218,1,0
-BRDA:2574,219,0,4
-BRDA:2574,219,1,0
-BRDA:2590,220,0,4
-BRDA:2590,220,1,0
-BRDA:2608,221,0,7
-BRDA:2608,221,1,0
-BRDA:2608,222,0,7
-BRDA:2608,222,1,7
-BRDA:2608,222,2,7
-BRDA:2608,222,3,7
-BRDA:2608,222,4,1
-BRDA:2614,223,0,5
-BRDA:2614,223,1,0
-BRDA:2622,224,0,7
-BRDA:2622,224,1,0
-BRDA:2622,225,0,7
-BRDA:2622,225,1,7
-BRDA:2638,226,0,4
-BRDA:2638,226,1,3
-BRDA:2643,227,0,0
-BRDA:2643,227,1,21
-BRDA:2649,228,0,0
-BRDA:2649,228,1,3
-BRDA:2689,229,0,28
-BRDA:2689,229,1,0
-BRDA:2690,230,0,28
-BRDA:2690,230,1,0
-BRDA:2692,231,0,41
-BRDA:2692,231,1,0
-BRDA:2704,232,0,29
-BRDA:2704,232,1,25
-BRDA:2719,233,0,2
-BRDA:2719,233,1,7
-BRDA:2723,234,0,3
-BRDA:2723,234,1,6
-BRDA:2741,235,0,2
-BRDA:2741,235,1,7
-BRDA:2757,236,0,9
-BRDA:2757,236,1,3
-BRDA:2758,237,0,9
-BRDA:2758,237,1,3
-BRDA:2759,238,0,9
-BRDA:2759,238,1,3
-BRDA:2760,239,0,9
-BRDA:2760,239,1,3
-BRDA:2777,240,0,2
-BRDA:2777,240,1,254
-BRDA:2781,241,0,66
-BRDA:2781,241,1,190
-BRDA:2781,242,0,256
-BRDA:2781,242,1,182
-BRDA:2781,242,2,252
-BRDA:2782,243,0,62
-BRDA:2782,243,1,4
-BRDA:2791,244,0,21
-BRDA:2791,244,1,235
-BRDA:2791,245,0,256
-BRDA:2791,245,1,244
-BRDA:2791,245,2,74
-BRDA:2794,246,0,2
-BRDA:2794,246,1,8
-BRDA:2813,247,0,76
-BRDA:2813,247,1,183
-BRDA:2813,248,0,13
-BRDA:2813,248,1,63
-BRDA:2817,249,0,10
-BRDA:2817,249,1,140
-BRDA:2817,250,0,150
-BRDA:2817,250,1,140
-BRDA:2819,251,0,9
-BRDA:2819,251,1,0
-BRDA:2822,252,0,1
-BRDA:2822,252,1,0
-BRDA:2833,253,0,0
-BRDA:2833,253,1,1
-BRDA:2833,254,0,1
-BRDA:2833,254,1,0
-BRDA:2852,255,0,0
-BRDA:2852,255,1,2
-BRDA:2862,256,0,0
-BRDA:2862,256,1,0
-BRDA:2868,257,0,47
-BRDA:2868,257,1,0
-BRDA:2900,258,0,0
-BRDA:2900,258,1,1
-BRDA:2900,259,0,1
-BRDA:2900,259,1,0
-BRDA:2900,259,2,0
-BRDA:2903,260,0,0
-BRDA:2903,260,1,1
-BRDA:2903,261,0,1
-BRDA:2903,261,1,0
-BRDA:2903,261,2,0
-BRDA:2903,261,3,0
-BRDA:2921,262,0,32
-BRDA:2921,262,1,94
-BRDA:2924,263,0,6
-BRDA:2924,263,1,88
-BRDA:2930,264,0,0
-BRDA:2930,264,1,2
-BRDA:2934,265,0,49
-BRDA:2934,265,1,47
-BRF:564
-BRH:400
+BRDA:697,95,1,6
+BRDA:699,96,0,0
+BRDA:699,96,1,2
+BRDA:703,97,0,0
+BRDA:703,97,1,8
+BRDA:703,98,0,8
+BRDA:703,98,1,3
+BRDA:707,99,0,5
+BRDA:707,99,1,3
+BRDA:711,100,0,1
+BRDA:711,100,1,6
+BRDA:782,101,0,3
+BRDA:782,101,1,1
+BRDA:783,102,0,3
+BRDA:783,102,1,0
+BRDA:791,103,0,2
+BRDA:791,103,1,2
+BRDA:796,104,0,1
+BRDA:796,104,1,1
+BRDA:798,105,0,1
+BRDA:798,105,1,0
+BRDA:810,106,0,0
+BRDA:810,106,1,2
+BRDA:860,107,0,0
+BRDA:860,107,1,1
+BRDA:884,108,0,5
+BRDA:884,108,1,0
+BRDA:884,109,0,5
+BRDA:884,109,1,5
+BRDA:884,109,2,5
+BRDA:990,110,0,2
+BRDA:990,110,1,0
+BRDA:990,111,0,2
+BRDA:990,111,1,2
+BRDA:990,111,2,2
+BRDA:994,112,0,2
+BRDA:994,112,1,0
+BRDA:1005,113,0,0
+BRDA:1005,113,1,2
+BRDA:1014,114,0,0
+BRDA:1014,114,1,2
+BRDA:1017,115,0,2
+BRDA:1017,115,1,0
+BRDA:1024,116,0,2
+BRDA:1024,116,1,0
+BRDA:1036,117,0,1
+BRDA:1036,117,1,1
+BRDA:1110,118,0,2
+BRDA:1110,118,1,1
+BRDA:1115,119,0,2
+BRDA:1115,119,1,1
+BRDA:1131,120,0,90
+BRDA:1131,120,1,0
+BRDA:1143,121,0,0
+BRDA:1143,121,1,2
+BRDA:1143,122,0,2
+BRDA:1143,122,1,2
+BRDA:1191,123,0,1
+BRDA:1191,123,1,4
+BRDA:1207,124,0,0
+BRDA:1207,124,1,4
+BRDA:1223,125,0,85
+BRDA:1223,125,1,68
+BRDA:1223,125,2,64
+BRDA:1223,125,3,64
+BRDA:1238,126,0,168
+BRDA:1238,126,1,126
+BRDA:1238,127,0,294
+BRDA:1238,127,1,294
+BRDA:1442,128,0,1
+BRDA:1442,128,1,0
+BRDA:1444,129,0,1
+BRDA:1444,129,1,0
+BRDA:1489,130,0,2
+BRDA:1489,130,1,2
+BRDA:1495,131,0,8
+BRDA:1495,131,1,4
+BRDA:1496,132,0,2
+BRDA:1496,132,1,6
+BRDA:1496,133,0,8
+BRDA:1496,133,1,4
+BRDA:1496,133,2,4
+BRDA:1496,133,3,2
+BRDA:1498,134,0,4
+BRDA:1498,134,1,2
+BRDA:1501,135,0,2
+BRDA:1501,135,1,2
+BRDA:1501,136,0,4
+BRDA:1501,136,1,4
+BRDA:1501,136,2,2
+BRDA:1536,137,0,4
+BRDA:1536,137,1,4
+BRDA:1536,138,0,8
+BRDA:1536,138,1,6
+BRDA:1537,139,0,4
+BRDA:1537,139,1,4
+BRDA:1539,140,0,0
+BRDA:1539,140,1,8
+BRDA:1550,141,0,0
+BRDA:1550,141,1,16
+BRDA:1550,142,0,16
+BRDA:1550,142,1,16
+BRDA:1550,142,2,4
+BRDA:1550,142,3,0
+BRDA:1550,142,4,0
+BRDA:1562,143,0,12
+BRDA:1562,143,1,0
+BRDA:1563,144,0,6
+BRDA:1563,144,1,6
+BRDA:1565,145,0,10
+BRDA:1565,145,1,2
+BRDA:1568,146,0,10
+BRDA:1568,146,1,2
+BRDA:1575,147,0,8
+BRDA:1575,147,1,12
+BRDA:1577,148,0,6
+BRDA:1577,148,1,6
+BRDA:1888,149,0,1
+BRDA:1888,149,1,0
+BRDA:1891,150,0,1
+BRDA:1891,150,1,0
+BRDA:2011,151,0,6
+BRDA:2011,151,1,0
+BRDA:2042,152,0,6
+BRDA:2042,152,1,4
+BRDA:2042,153,0,10
+BRDA:2042,153,1,4
+BRDA:2049,154,0,1
+BRDA:2049,154,1,3
+BRDA:2068,155,0,0
+BRDA:2068,155,1,2
+BRDA:2071,156,0,0
+BRDA:2071,156,1,2
+BRDA:2085,157,0,2
+BRDA:2085,157,1,0
+BRDA:2116,158,0,5
+BRDA:2116,158,1,0
+BRDA:2116,159,0,5
+BRDA:2116,159,1,5
+BRDA:2120,160,0,5
+BRDA:2120,160,1,0
+BRDA:2124,161,0,5
+BRDA:2124,161,1,0
+BRDA:2152,162,0,0
+BRDA:2152,162,1,0
+BRDA:2187,163,0,0
+BRDA:2187,163,1,1
+BRDA:2187,164,0,1
+BRDA:2187,164,1,0
+BRDA:2189,165,0,0
+BRDA:2189,165,1,1
+BRDA:2189,166,0,1
+BRDA:2189,166,1,0
+BRDA:2191,167,0,0
+BRDA:2191,167,1,0
+BRDA:2198,168,0,0
+BRDA:2198,168,1,0
+BRDA:2202,169,0,0
+BRDA:2202,169,1,1
+BRDA:2202,170,0,1
+BRDA:2202,170,1,0
+BRDA:2202,170,2,0
+BRDA:2202,170,3,0
+BRDA:2207,171,0,0
+BRDA:2207,171,1,1
+BRDA:2212,172,0,1
+BRDA:2212,172,1,0
+BRDA:2221,173,0,0
+BRDA:2221,173,1,0
+BRDA:2227,174,0,0
+BRDA:2227,174,1,0
+BRDA:2227,175,0,0
+BRDA:2227,175,1,0
+BRDA:2229,176,0,0
+BRDA:2229,176,1,0
+BRDA:2244,177,0,1
+BRDA:2244,177,1,0
+BRDA:2258,178,0,1
+BRDA:2258,178,1,2
+BRDA:2260,179,0,1
+BRDA:2260,179,1,1
+BRDA:2262,180,0,1
+BRDA:2262,180,1,0
+BRDA:2272,181,0,1
+BRDA:2272,181,1,5
+BRDA:2274,182,0,4
+BRDA:2274,182,1,2
+BRDA:2276,183,0,1
+BRDA:2276,183,1,3
+BRDA:2277,184,0,2
+BRDA:2277,184,1,1
+BRDA:2293,185,0,0
+BRDA:2293,185,1,1
+BRDA:2306,186,0,0
+BRDA:2306,186,1,1
+BRDA:2310,187,0,0
+BRDA:2310,187,1,1
+BRDA:2315,188,0,1
+BRDA:2315,188,1,0
+BRDA:2332,189,0,0
+BRDA:2332,189,1,1
+BRDA:2332,190,0,1
+BRDA:2332,190,1,0
+BRDA:2332,190,2,0
+BRDA:2332,190,3,0
+BRDA:2334,191,0,0
+BRDA:2334,191,1,0
+BRDA:2354,192,0,0
+BRDA:2354,192,1,0
+BRDA:2355,193,0,0
+BRDA:2355,193,1,0
+BRDA:2370,194,0,2
+BRDA:2370,194,1,11
+BRDA:2374,195,0,3
+BRDA:2374,195,1,8
+BRDA:2379,196,0,0
+BRDA:2379,196,1,4
+BRDA:2388,197,0,0
+BRDA:2388,197,1,4
+BRDA:2422,198,0,10
+BRDA:2422,198,1,8
+BRDA:2422,199,0,18
+BRDA:2422,199,1,18
+BRDA:2432,200,0,3
+BRDA:2432,200,1,1
+BRDA:2463,201,0,48
+BRDA:2463,201,1,339
+BRDA:2463,202,0,387
+BRDA:2463,202,1,202
+BRDA:2463,202,2,185
+BRDA:2484,203,0,335
+BRDA:2484,203,1,0
+BRDA:2489,204,0,272
+BRDA:2489,204,1,63
+BRDA:2489,205,0,335
+BRDA:2489,205,1,117
+BRDA:2489,205,2,335
+BRDA:2496,206,0,7
+BRDA:2496,206,1,328
+BRDA:2506,207,0,100
+BRDA:2506,207,1,444
+BRDA:2506,208,0,544
+BRDA:2506,208,1,106
+BRDA:2516,209,0,111
+BRDA:2516,209,1,9
+BRDA:2524,210,0,0
+BRDA:2524,210,1,4
+BRDA:2537,211,0,0
+BRDA:2537,211,1,0
+BRDA:2569,212,0,0
+BRDA:2569,212,1,4
+BRDA:2569,213,0,4
+BRDA:2569,213,1,1
+BRDA:2571,214,0,1
+BRDA:2571,214,1,3
+BRDA:2571,215,0,4
+BRDA:2571,215,1,4
+BRDA:2573,216,0,3
+BRDA:2573,216,1,0
+BRDA:2584,217,0,4
+BRDA:2584,217,1,0
+BRDA:2599,218,0,5
+BRDA:2599,218,1,0
+BRDA:2602,219,0,5
+BRDA:2602,219,1,0
+BRDA:2621,220,0,7
+BRDA:2621,220,1,1
+BRDA:2621,221,0,8
+BRDA:2621,221,1,7
+BRDA:2621,221,2,7
+BRDA:2621,221,3,7
+BRDA:2621,221,4,1
+BRDA:2628,222,0,5
+BRDA:2628,222,1,0
+BRDA:2633,223,0,7
+BRDA:2633,223,1,0
+BRDA:2640,224,0,7
+BRDA:2640,224,1,0
+BRDA:2640,225,0,7
+BRDA:2640,225,1,7
+BRDA:2656,226,0,4
+BRDA:2656,226,1,3
+BRDA:2661,227,0,0
+BRDA:2661,227,1,21
+BRDA:2667,228,0,0
+BRDA:2667,228,1,3
+BRDA:2711,229,0,28
+BRDA:2711,229,1,0
+BRDA:2712,230,0,28
+BRDA:2712,230,1,0
+BRDA:2714,231,0,41
+BRDA:2714,231,1,0
+BRDA:2726,232,0,29
+BRDA:2726,232,1,25
+BRDA:2741,233,0,2
+BRDA:2741,233,1,7
+BRDA:2745,234,0,3
+BRDA:2745,234,1,6
+BRDA:2763,235,0,2
+BRDA:2763,235,1,7
+BRDA:2779,236,0,9
+BRDA:2779,236,1,3
+BRDA:2780,237,0,9
+BRDA:2780,237,1,3
+BRDA:2781,238,0,9
+BRDA:2781,238,1,3
+BRDA:2782,239,0,9
+BRDA:2782,239,1,3
+BRDA:2799,240,0,2
+BRDA:2799,240,1,218
+BRDA:2803,241,0,57
+BRDA:2803,241,1,163
+BRDA:2803,242,0,220
+BRDA:2803,242,1,166
+BRDA:2803,242,2,216
+BRDA:2804,243,0,53
+BRDA:2804,243,1,4
+BRDA:2813,244,0,16
+BRDA:2813,244,1,204
+BRDA:2813,245,0,220
+BRDA:2813,245,1,208
+BRDA:2813,245,2,54
+BRDA:2816,246,0,2
+BRDA:2816,246,1,7
+BRDA:2835,247,0,56
+BRDA:2835,247,1,167
+BRDA:2835,248,0,13
+BRDA:2835,248,1,43
+BRDA:2839,249,0,14
+BRDA:2839,249,1,140
+BRDA:2839,250,0,154
+BRDA:2839,250,1,140
+BRDA:2841,251,0,13
+BRDA:2841,251,1,0
+BRDA:2844,252,0,1
+BRDA:2844,252,1,0
+BRDA:2855,253,0,0
+BRDA:2855,253,1,1
+BRDA:2855,254,0,1
+BRDA:2855,254,1,0
+BRDA:2874,255,0,0
+BRDA:2874,255,1,2
+BRDA:2884,256,0,0
+BRDA:2884,256,1,0
+BRDA:2890,257,0,47
+BRDA:2890,257,1,0
+BRDA:2922,258,0,0
+BRDA:2922,258,1,1
+BRDA:2922,259,0,1
+BRDA:2922,259,1,0
+BRDA:2922,259,2,0
+BRDA:2925,260,0,0
+BRDA:2925,260,1,1
+BRDA:2925,261,0,1
+BRDA:2925,261,1,0
+BRDA:2925,261,2,0
+BRDA:2925,261,3,0
+BRDA:2943,262,0,32
+BRDA:2943,262,1,94
+BRDA:2946,263,0,6
+BRDA:2946,263,1,88
+BRDA:2952,264,0,0
+BRDA:2952,264,1,2
+BRDA:2956,265,0,49
+BRDA:2956,265,1,47
+BRF:569
+BRH:408
end_of_record
diff --git a/test/tests.js b/test/tests.js
index 48da1c7..7d117f9 100644
--- a/test/tests.js
+++ b/test/tests.js
@@ -1008,6 +1008,22 @@ QUnit.test("isReLoginRequired", function ( assert ) {
assert.ok(tradable.isReLoginRequired({'responseJSON': {'httpStatus': 403, 'code': 1005}}), "isReLoginRequired");
});
+QUnit.test("isTokenExpiredCode", function ( assert ) {
+ assert.ok(!tradable.isTokenExpiredCode(undefined), "isTokenExpiredCode: undefined");
+ assert.ok(!tradable.isTokenExpiredCode({'responseJSON': {'httpStatus': 403 }}), "isTokenExpiredCode no code");
+ assert.ok(!tradable.isTokenExpiredCode({'responseJSON': {'code': 1007}}), "isTokenExpiredCode no status");
+ assert.ok(!tradable.isTokenExpiredCode({'responseJSON': {'httpStatus': 403, 'code': 107}}), "isTokenExpiredCode wrong code");
+ assert.ok(!tradable.isTokenExpiredCode({'responseJSON': {'httpStatus': 43, 'code': 1007}}), "isTokenExpiredCode wrong status");
+ assert.ok(tradable.isTokenExpiredCode({'responseJSON': {'httpStatus': 403, 'code': 1007}}), "isTokenExpiredCode");
+});
+
+QUnit.test("Tradable logging", function ( assert ) {
+ tradable.log("test");
+ tradable.warn("test");
+ tradable.error("test");
+ assert.ok(true, "Tradable logging does not break");
+});
+
QUnit.test("Sign Out", function ( assert ) {
signOut(assert);
});