tx · 8cerC6hNi9hfztAA51oWYS6YYW85bsrEJDC93rk2W41E

3MtkUqugvLNA8mCbPGeUH5V8Yh3wV46LMwD:  -0.04700000 Waves

2022.08.04 14:01 [2169658] smart account 3MtkUqugvLNA8mCbPGeUH5V8Yh3wV46LMwD > SELF 0.00000000 Waves

{ "type": 13, "id": "8cerC6hNi9hfztAA51oWYS6YYW85bsrEJDC93rk2W41E", "fee": 4700000, "feeAssetId": null, "timestamp": 1659610905436, "version": 2, "chainId": 84, "sender": "3MtkUqugvLNA8mCbPGeUH5V8Yh3wV46LMwD", "senderPublicKey": "JAmAsWobWHZemNvGPySiiGJAiMVP2tVN2gaCnMD4P22x", "proofs": [ "4sqfe2qXmpKJytnPs4pUkLLDX2aMEPBMd7o6UnAn6vdhdHsWRDtLC9HmFi4bQRPzBcvP5kR32X4rvZcyhUVKe2D1" ], "script": "base64:BgJZCAISABIAEgMKAQESAwoBARIJCgcBAQEBAQEBEg4KDAEBAQEBAQEICAgBARIFCgMBAQESBQoDAQEBEgASAwoBARIAEgMKAQgSABIDCgEIEgMKAQgSBAoCCAF3AAlrX29yYV9rZXkCCWtfb3JhX2tleQAPa19vcmFfYmxvY2tfa2V5Ag9rX29yYV9ibG9ja19rZXkABWtfb3JhAgVrX29yYQAJa19iYWxhbmNlAglrX2JhbGFuY2UADmtfcG9zaXRpb25TaXplAg5rX3Bvc2l0aW9uU2l6ZQAQa19wb3NpdGlvbk1hcmdpbgIQa19wb3NpdGlvbk1hcmdpbgAWa19wb3NpdGlvbk9wZW5Ob3Rpb25hbAIWa19wb3NpdGlvbk9wZW5Ob3Rpb25hbAAua19wb3NpdGlvbkxhc3RVcGRhdGVkQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgISa19wb3NpdGlvbkZyYWN0aW9uAA1rX2luaXRpYWxpemVkAg1rX2luaXRpYWxpemVkAAhrX3BhdXNlZAIIa19wYXVzZWQABWtfZmVlAgVrX2ZlZQAPa19mdW5kaW5nUGVyaW9kAg9rX2Z1bmRpbmdQZXJpb2QAEWtfaW5pdE1hcmdpblJhdGlvAhFrX2luaXRNYXJnaW5SYXRpbwAYa19tYWludGVuYW5jZU1hcmdpblJhdGlvAgVrX21tcgAVa19saXF1aWRhdGlvbkZlZVJhdGlvAhVrX2xpcXVpZGF0aW9uRmVlUmF0aW8ADWtfc3ByZWFkTGltaXQCDWtfc3ByZWFkTGltaXQAEGtfbWF4UHJpY2VJbXBhY3QCEGtfbWF4UHJpY2VJbXBhY3QADWtfbGFzdERhdGFTdHICDWtfbGFzdERhdGFTdHIADmtfbGFzdE1pbnV0ZUlkAg5rX2xhc3RNaW51dGVJZAAda190d2FwRGF0YUxhc3RDdW11bGF0aXZlUHJpY2UCHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlABNrX3R3YXBEYXRhTGFzdFByaWNlAhNrX3R3YXBEYXRhTGFzdFByaWNlABprX3R3YXBEYXRhUHJldmlvdXNNaW51dGVJZAIaa190d2FwRGF0YVByZXZpb3VzTWludXRlSWQAJWtfbGF0ZXN0TG9uZ0N1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24CG2tfbGF0ZXN0TG9uZ1ByZW1pdW1GcmFjdGlvbgAma19sYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24CHGtfbGF0ZXN0U2hvcnRQcmVtaXVtRnJhY3Rpb24AEmtfbmV4dEZ1bmRpbmdCbG9jawIea19uZXh0RnVuZGluZ0Jsb2NrTWluVGltZXN0YW1wABFrX2xvbmdGdW5kaW5nUmF0ZQIRa19sb25nRnVuZGluZ1JhdGUAEmtfc2hvcnRGdW5kaW5nUmF0ZQISa19zaG9ydEZ1bmRpbmdSYXRlABNrX3F1b3RlQXNzZXRSZXNlcnZlAghrX3F0QXN0UgASa19iYXNlQXNzZXRSZXNlcnZlAghrX2JzQXN0UgATa190b3RhbFBvc2l0aW9uU2l6ZQITa190b3RhbFBvc2l0aW9uU2l6ZQAXa190b3RhbExvbmdQb3NpdGlvblNpemUCF2tfdG90YWxMb25nUG9zaXRpb25TaXplABhrX3RvdGFsU2hvcnRQb3NpdGlvblNpemUCGGtfdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQAUa19jdW11bGF0aXZlTm90aW9uYWwCFGtfY3VtdWxhdGl2ZU5vdGlvbmFsABZrX29wZW5JbnRlcmVzdE5vdGlvbmFsAhZrX29wZW5JbnRlcmVzdE5vdGlvbmFsABRrX2Nvb3JkaW5hdG9yQWRkcmVzcwIUa19jb29yZGluYXRvckFkZHJlc3MAE2tfaW5zdXJhbmNlX2FkZHJlc3MCE2tfaW5zdXJhbmNlX2FkZHJlc3MAD2tfYWRtaW5fYWRkcmVzcwIPa19hZG1pbl9hZGRyZXNzABJrX2FkbWluX3B1YmxpY19rZXkCEmtfYWRtaW5fcHVibGljX2tleQANa19xdW90ZV9hc3NldAINa19xdW90ZV9hc3NldAAPa19xdW90ZV9zdGFraW5nAg9rX3F1b3RlX3N0YWtpbmcAEWtfc3Rha2luZ19hZGRyZXNzAhFrX3N0YWtpbmdfYWRkcmVzcwAPa19taW5lcl9hZGRyZXNzAg9rX21pbmVyX2FkZHJlc3MBC2Nvb3JkaW5hdG9yAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFFGtfY29vcmRpbmF0b3JBZGRyZXNzAhNDb29yZGluYXRvciBub3Qgc2V0AQxhZG1pbkFkZHJlc3MACQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFD2tfYWRtaW5fYWRkcmVzcwEOYWRtaW5QdWJsaWNLZXkACQDZBAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFEmtfYWRtaW5fcHVibGljX2tleQEKcXVvdGVBc3NldAAJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUNa19xdW90ZV9hc3NldAERcXVvdGVBc3NldFN0YWtpbmcACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUPa19xdW90ZV9zdGFraW5nAhtRdW90ZSBhc3NldCBzdGFraW5nIG5vdCBzZXQBDnN0YWtpbmdBZGRyZXNzAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFEWtfc3Rha2luZ19hZGRyZXNzAhFJbnN1cmFuY2Ugbm90IHNldAEQaW5zdXJhbmNlQWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABRNrX2luc3VyYW5jZV9hZGRyZXNzAhFJbnN1cmFuY2Ugbm90IHNldAEMbWluZXJBZGRyZXNzAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFD2tfbWluZXJfYWRkcmVzcwIRSW5zdXJhbmNlIG5vdCBzZXQACERJUl9MT05HAAEACURJUl9TSE9SVAACAA1UV0FQX0lOVEVSVkFMAA8AD09SQUNMRV9JTlRFUlZBTAAPAAdTRUNPTkRTAOgHAAxERUNJTUFMX1VOSVQJAGgCAAEJAGgCCQBoAgkAaAIJAGgCCQBoAgAKAAoACgAKAAoACgAHT05FX0RBWQkAaAIAgKMFBQxERUNJTUFMX1VOSVQACEFMTF9GRUVTAGQAD1BOTF9PUFRJT05fU1BPVAABABFQTkxfT1BUSU9OX09SQUNMRQACAQFzAQJfeAkArAICCQCkAwEFAl94AgEsAQRkaXZkAgJfeAJfeQkAbgQFAl94BQxERUNJTUFMX1VOSVQFAl95BQhIQUxGRVZFTgEEbXVsZAICX3gCX3kJAG4EBQJfeAUCX3kFDERFQ0lNQUxfVU5JVAUISEFMRkVWRU4BA2FicwECX3gDCQBmAgUCX3gAAAUCX3gJAQEtAQUCX3gBBHZtYXgCAl94Al95AwkAZwIFAl94BQJfeQUCX3gFAl95AQ50b0NvbXBvc2l0ZUtleQIEX2tleQhfYWRkcmVzcwkArAICCQCsAgIFBF9rZXkCAV8FCF9hZGRyZXNzAQlsaXN0VG9TdHIBBV9saXN0CgEFX2pvaW4CC2FjY3VtdWxhdG9yA3ZhbAkArAICCQCsAgIFC2FjY3VtdWxhdG9yBQN2YWwCASwECm5ld0xpc3RTdHIKAAIkbAUFX2xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwAgAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBV9qb2luAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAyMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQEC25ld0xpc3RTdHJVCQCzAgIFCm5ld0xpc3RTdHIAAQQLbmV3TGlzdFN0clIDCQAAAgkArwICBQtuZXdMaXN0U3RyVQABAgEsCQCwAgIFC25ld0xpc3RTdHJVAAEFC25ld0xpc3RTdHJVBQtuZXdMaXN0U3RyUgEJc3RyVG9MaXN0AQRfc3RyCQC1CQIFBF9zdHICASwBC3B1c2hUb1F1ZXVlAwVfbGlzdAhfbWF4U2l6ZQZfdmFsdWUDCQBmAgkAkAMBBQVfbGlzdAUIX21heFNpemUJAM0IAgkA0QgCBQVfbGlzdAAABQZfdmFsdWUJAM0IAgUFX2xpc3QFBl92YWx1ZQEDaW50AQFrCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwUBawkArAICAg1ubyB2YWx1ZSBmb3IgBQFrAQhjYmFsYW5jZQAJAQNpbnQBBQlrX2JhbGFuY2UBA2ZlZQAJAQNpbnQBBQVrX2ZlZQEPaW5pdE1hcmdpblJhdGlvAAkBA2ludAEFEWtfaW5pdE1hcmdpblJhdGlvAQZxdEFzdFIACQEDaW50AQUTa19xdW90ZUFzc2V0UmVzZXJ2ZQEGYnNBc3RSAAkBA2ludAEFEmtfYmFzZUFzc2V0UmVzZXJ2ZQERdG90YWxQb3NpdGlvblNpemUACQEDaW50AQUTa190b3RhbFBvc2l0aW9uU2l6ZQESY3VtdWxhdGl2ZU5vdGlvbmFsAAkBA2ludAEFFGtfY3VtdWxhdGl2ZU5vdGlvbmFsARRvcGVuSW50ZXJlc3ROb3Rpb25hbAAJAQNpbnQBBRZrX29wZW5JbnRlcmVzdE5vdGlvbmFsARluZXh0RnVuZGluZ0Jsb2NrVGltZXN0YW1wAAkBA2ludAEFEmtfbmV4dEZ1bmRpbmdCbG9jawEQZnVuZGluZ1BlcmlvZFJhdwAJAQNpbnQBBQ9rX2Z1bmRpbmdQZXJpb2QBFGZ1bmRpbmdQZXJpb2REZWNpbWFsAAkAaAIJARBmdW5kaW5nUGVyaW9kUmF3AAUMREVDSU1BTF9VTklUARRmdW5kaW5nUGVyaW9kU2Vjb25kcwAJAGgCCQEQZnVuZGluZ1BlcmlvZFJhdwAFB1NFQ09ORFMBFm1haW50ZW5hbmNlTWFyZ2luUmF0aW8ACQEDaW50AQUYa19tYWludGVuYW5jZU1hcmdpblJhdGlvARNsaXF1aWRhdGlvbkZlZVJhdGlvAAkBA2ludAEFFWtfbGlxdWlkYXRpb25GZWVSYXRpbwELc3ByZWFkTGltaXQACQEDaW50AQUNa19zcHJlYWRMaW1pdAEObWF4UHJpY2VJbXBhY3QACQEDaW50AQUQa19tYXhQcmljZUltcGFjdAEjbGF0ZXN0TG9uZ0N1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24ACQEDaW50AQUla19sYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgEkbGF0ZXN0U2hvcnRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAAkBA2ludAEFJmtfbGF0ZXN0U2hvcnRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uARZ0b3RhbFNob3J0UG9zaXRpb25TaXplAAkBA2ludAEFGGtfdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQEVdG90YWxMb25nUG9zaXRpb25TaXplAAkBA2ludAEFF2tfdG90YWxMb25nUG9zaXRpb25TaXplARZyZXF1aXJlTW9yZU1hcmdpblJhdGlvAwxfbWFyZ2luUmF0aW8QX2Jhc2VNYXJnaW5SYXRpbxRfbGFyZ2VyVGhhbk9yRXF1YWxUbwQUcmVtYWluaW5nTWFyZ2luUmF0aW8JAGUCBQxfbWFyZ2luUmF0aW8FEF9iYXNlTWFyZ2luUmF0aW8DAwUUX2xhcmdlclRoYW5PckVxdWFsVG8JAGYCAAAFFHJlbWFpbmluZ01hcmdpblJhdGlvBwkAAgECDkludmFsaWQgbWFyZ2luAwMJAQEhAQUUX2xhcmdlclRoYW5PckVxdWFsVG8JAGcCBRRyZW1haW5pbmdNYXJnaW5SYXRpbwAABwkAAgECDkludmFsaWQgbWFyZ2luBgEfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgENX3Bvc2l0aW9uU2l6ZQMJAAACBQ1fcG9zaXRpb25TaXplAAAJAAIBAixTaG91bGQgbm90IGJlIGNhbGxlZCB3aXRoIF9wb3NpdGlvblNpemUgPT0gMAMJAGYCBQ1fcG9zaXRpb25TaXplAAAJASNsYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgAJASRsYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24AAQtnZXRQb3NpdGlvbgEHX3RyYWRlcgQPcG9zaXRpb25TaXplT3B0CQCaCAIFBHRoaXMJAQ50b0NvbXBvc2l0ZUtleQIFDmtfcG9zaXRpb25TaXplBQdfdHJhZGVyBAckbWF0Y2gwBQ9wb3NpdGlvblNpemVPcHQDCQABAgUHJG1hdGNoMAIDSW50BAxwb3NpdGlvblNpemUFByRtYXRjaDAJAJYKBAUMcG9zaXRpb25TaXplCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQEOdG9Db21wb3NpdGVLZXkCBRBrX3Bvc2l0aW9uTWFyZ2luBQdfdHJhZGVyCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQEOdG9Db21wb3NpdGVLZXkCBRZrX3Bvc2l0aW9uT3Blbk5vdGlvbmFsBQdfdHJhZGVyCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQEOdG9Db21wb3NpdGVLZXkCBS5rX3Bvc2l0aW9uTGFzdFVwZGF0ZWRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uBQdfdHJhZGVyCQCWCgQAAAAAAAAAAAETcmVxdWlyZU9wZW5Qb3NpdGlvbgEHX3RyYWRlcgMJAAACCAkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgJfMQAACQACAQIQTm8gb3BlbiBwb3NpdGlvbgYBC2luaXRpYWxpemVkAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQ1rX2luaXRpYWxpemVkBwEGcGF1c2VkAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQhrX3BhdXNlZAcBDXVwZGF0ZVJlc2VydmUDBl9pc0FkZBFfcXVvdGVBc3NldEFtb3VudBBfYmFzZUFzc2V0QW1vdW50AwUGX2lzQWRkBAduZXdCYXNlCQBlAgkBBmJzQXN0UgAFEF9iYXNlQXNzZXRBbW91bnQDCQBnAgAABQduZXdCYXNlCQACAQIqVHggbGVhZCB0byBiYXNlIGFzc2V0IHJlc2VydmUgPD0gMCwgcmV2ZXJ0CQCWCgQJAGQCCQEGcXRBc3RSAAURX3F1b3RlQXNzZXRBbW91bnQFB25ld0Jhc2UJAGQCCQERdG90YWxQb3NpdGlvblNpemUABRBfYmFzZUFzc2V0QW1vdW50CQBkAgkBEmN1bXVsYXRpdmVOb3Rpb25hbAAFEV9xdW90ZUFzc2V0QW1vdW50BAhuZXdRdW90ZQkAZQIJAQZxdEFzdFIABRFfcXVvdGVBc3NldEFtb3VudAMJAGcCAAAFCG5ld1F1b3RlCQACAQIqVHggbGVhZCB0byBiYXNlIHF1b3RlIHJlc2VydmUgPD0gMCwgcmV2ZXJ0CQCWCgQFCG5ld1F1b3RlCQBkAgkBBmJzQXN0UgAFEF9iYXNlQXNzZXRBbW91bnQJAGUCCQERdG90YWxQb3NpdGlvblNpemUABRBfYmFzZUFzc2V0QW1vdW50CQBlAgkBEmN1bXVsYXRpdmVOb3Rpb25hbAAFEV9xdW90ZUFzc2V0QW1vdW50AQlzd2FwSW5wdXQCBl9pc0FkZBFfcXVvdGVBc3NldEFtb3VudAQHX3F0QXN0UgkBBnF0QXN0UgAEB19ic0FzdFIJAQZic0FzdFIABAtwcmljZUJlZm9yZQkBBGRpdmQCBQdfcXRBc3RSBQdfYnNBc3RSBCdhbW91bnRCYXNlQXNzZXRCb3VnaHRXaXRob3V0UHJpY2VJbXBhY3QJAQRtdWxkAgURX3F1b3RlQXNzZXRBbW91bnQFC3ByaWNlQmVmb3JlBAFrCQEEbXVsZAIFB19xdEFzdFIFB19ic0FzdFIEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIDBQZfaXNBZGQJAGQCBQdfcXRBc3RSBRFfcXVvdGVBc3NldEFtb3VudAkAZQIFB19xdEFzdFIFEV9xdW90ZUFzc2V0QW1vdW50BBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIJAQRkaXZkAgUBawUWcXVvdGVBc3NldFJlc2VydmVBZnRlcgQYYW1vdW50QmFzZUFzc2V0Qm91Z2h0QWJzCQEDYWJzAQkAZQIFFWJhc2VBc3NldFJlc2VydmVBZnRlcgUHX2JzQXN0UgQVYW1vdW50QmFzZUFzc2V0Qm91Z2h0AwUGX2lzQWRkBRhhbW91bnRCYXNlQXNzZXRCb3VnaHRBYnMJAQEtAQUYYW1vdW50QmFzZUFzc2V0Qm91Z2h0QWJzBAtwcmljZUltcGFjdAkAaQIJAGUCBSdhbW91bnRCYXNlQXNzZXRCb3VnaHRXaXRob3V0UHJpY2VJbXBhY3QFGGFtb3VudEJhc2VBc3NldEJvdWdodEFicwUnYW1vdW50QmFzZUFzc2V0Qm91Z2h0V2l0aG91dFByaWNlSW1wYWN0BBNtYXhQcmljZUltcGFjdFZhbHVlCQEObWF4UHJpY2VJbXBhY3QAAwkAZgIFC3ByaWNlSW1wYWN0BRNtYXhQcmljZUltcGFjdFZhbHVlCQACAQkArAICCQCsAgIJAKwCAgINUHJpY2UgaW1wYWN0IAkApAMBBQtwcmljZUltcGFjdAIUID4gbWF4IHByaWNlIGltcGFjdCAJAKQDAQUTbWF4UHJpY2VJbXBhY3RWYWx1ZQQNJHQwMTIyOTQxMjQ5NwkBDXVwZGF0ZVJlc2VydmUDBQZfaXNBZGQFEV9xdW90ZUFzc2V0QW1vdW50BRhhbW91bnRCYXNlQXNzZXRCb3VnaHRBYnMEF3F1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIxCAUNJHQwMTIyOTQxMjQ5NwJfMQQWYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyMQgFDSR0MDEyMjk0MTI0OTcCXzIEF3RvdGFsUG9zaXRpb25TaXplQWZ0ZXIxCAUNJHQwMTIyOTQxMjQ5NwJfMwQYY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIxCAUNJHQwMTIyOTQxMjQ5NwJfNAkAlwoFBRVhbW91bnRCYXNlQXNzZXRCb3VnaHQFF3F1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIxBRZiYXNlQXNzZXRSZXNlcnZlQWZ0ZXIxBRd0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyMQUYY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIxASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BBBfb2xkUG9zaXRpb25TaXplEl9vbGRQb3NpdGlvbk1hcmdpbiVfb2xkUG9zaXRpb25DdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uDF9tYXJnaW5EZWx0YQQOZnVuZGluZ1BheW1lbnQDCQECIT0CBRBfb2xkUG9zaXRpb25TaXplAAAEIF9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uCQEfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgEFEF9vbGRQb3NpdGlvblNpemUJAQRtdWxkAgkAZQIFIF9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uBSVfb2xkUG9zaXRpb25DdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uBRBfb2xkUG9zaXRpb25TaXplAAAEDHNpZ25lZE1hcmdpbgkAZAIJAGUCBQxfbWFyZ2luRGVsdGEFDmZ1bmRpbmdQYXltZW50BRJfb2xkUG9zaXRpb25NYXJnaW4EDSR0MDEzMjQ0MTMzNzEDCQBmAgAABQxzaWduZWRNYXJnaW4JAJQKAgAACQEDYWJzAQUMc2lnbmVkTWFyZ2luCQCUCgIJAQNhYnMBBQxzaWduZWRNYXJnaW4AAAQMcmVtYWluTWFyZ2luCAUNJHQwMTMyNDQxMzM3MQJfMQQHYmFkRGVidAgFDSR0MDEzMjQ0MTMzNzECXzIJAJUKAwUMcmVtYWluTWFyZ2luBQdiYWREZWJ0BQ5mdW5kaW5nUGF5bWVudAEKc3dhcE91dHB1dAIGX2lzQWRkEF9iYXNlQXNzZXRBbW91bnQEEl9xdW90ZUFzc2V0UmVzZXJ2ZQkBBnF0QXN0UgAEEV9iYXNlQXNzZXRSZXNlcnZlCQEGYnNBc3RSAAMJAAACBRBfYmFzZUFzc2V0QW1vdW50AAAJAAIBAhlJbnZhbGlkIGJhc2UgYXNzZXQgYW1vdW50BAFrCQEEbXVsZAIFEl9xdW90ZUFzc2V0UmVzZXJ2ZQURX2Jhc2VBc3NldFJlc2VydmUEGGJhc2VBc3NldFBvb2xBbW91bnRBZnRlcgMFBl9pc0FkZAkAZAIFEV9iYXNlQXNzZXRSZXNlcnZlBRBfYmFzZUFzc2V0QW1vdW50CQBlAgURX2Jhc2VBc3NldFJlc2VydmUFEF9iYXNlQXNzZXRBbW91bnQED3F1b3RlQXNzZXRBZnRlcgkBBGRpdmQCBQFrBRhiYXNlQXNzZXRQb29sQW1vdW50QWZ0ZXIEDnF1b3RlQXNzZXRTb2xkCQEDYWJzAQkAZQIFD3F1b3RlQXNzZXRBZnRlcgUSX3F1b3RlQXNzZXRSZXNlcnZlBA0kdDAxNDIwOTE0NDAyCQENdXBkYXRlUmVzZXJ2ZQMJAQEhAQUGX2lzQWRkBQ5xdW90ZUFzc2V0U29sZAUQX2Jhc2VBc3NldEFtb3VudAQXcXVvdGVBc3NldFJlc2VydmVBZnRlcjEIBQ0kdDAxNDIwOTE0NDAyAl8xBBZiYXNlQXNzZXRSZXNlcnZlQWZ0ZXIxCAUNJHQwMTQyMDkxNDQwMgJfMgQXdG90YWxQb3NpdGlvblNpemVBZnRlcjEIBQ0kdDAxNDIwOTE0NDAyAl8zBBhjdW11bGF0aXZlTm90aW9uYWxBZnRlcjEIBQ0kdDAxNDIwOTE0NDAyAl80CQCZCgcFDnF1b3RlQXNzZXRTb2xkBRdxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyMQUWYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyMQUXdG90YWxQb3NpdGlvblNpemVBZnRlcjEFGGN1bXVsYXRpdmVOb3Rpb25hbEFmdGVyMQkAZQIJARV0b3RhbExvbmdQb3NpdGlvblNpemUAAwUGX2lzQWRkCQEDYWJzAQUQX2Jhc2VBc3NldEFtb3VudAAACQBlAgkBFnRvdGFsU2hvcnRQb3NpdGlvblNpemUAAwkBASEBBQZfaXNBZGQJAQNhYnMBBRBfYmFzZUFzc2V0QW1vdW50AAABEmdldE9yYWNsZVR3YXBQcmljZQAEBm9yYWNsZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFBWtfb3JhAgAECHByaWNlS2V5CQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBQlrX29yYV9rZXkECGJsb2NrS2V5CQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBQ9rX29yYV9ibG9ja19rZXkECWxhc3RWYWx1ZQkBEUBleHRyTmF0aXZlKDEwNTApAgUGb3JhY2xlBQhwcmljZUtleQUJbGFzdFZhbHVlAQxnZXRTcG90UHJpY2UABBJfcXVvdGVBc3NldFJlc2VydmUJAQZxdEFzdFIABBFfYmFzZUFzc2V0UmVzZXJ2ZQkBBmJzQXN0UgAJAQRkaXZkAgUSX3F1b3RlQXNzZXRSZXNlcnZlBRFfYmFzZUFzc2V0UmVzZXJ2ZQEWaXNPdmVyRmx1Y3R1YXRpb25MaW1pdAAEC29yYWNsZVByaWNlCQESZ2V0T3JhY2xlVHdhcFByaWNlAAQMY3VycmVudFByaWNlCQEMZ2V0U3BvdFByaWNlAAkAZgIJAQRkaXZkAgkBA2FicwEJAGUCBQtvcmFjbGVQcmljZQUMY3VycmVudFByaWNlBQtvcmFjbGVQcmljZQkBC3NwcmVhZExpbWl0AAEjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwCB190cmFkZXIHX29wdGlvbgQNJHQwMTYwMzQxNjE2MgkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgQMcG9zaXRpb25TaXplCAUNJHQwMTYwMzQxNjE2MgJfMQQOcG9zaXRpb25NYXJnaW4IBQ0kdDAxNjAzNDE2MTYyAl8yBBRwb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDE2MDM0MTYxNjICXzMEEXBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwMTYwMzQxNjE2MgJfNAQPcG9zaXRpb25TaXplQWJzCQEDYWJzAQUMcG9zaXRpb25TaXplAwkAAAIFD3Bvc2l0aW9uU2l6ZUFicwAACQACAQIVSW52YWxpZCBwb3NpdGlvbiBzaXplBAdpc1Nob3J0CQBmAgAABQxwb3NpdGlvblNpemUEEHBvc2l0aW9uTm90aW9uYWwDCQAAAgUHX29wdGlvbgUPUE5MX09QVElPTl9TUE9UBA0kdDAxNjQwOTE2NTE2CQEKc3dhcE91dHB1dAIJAQEhAQUHaXNTaG9ydAUPcG9zaXRpb25TaXplQWJzBBNvdXRQb3NpdGlvbk5vdGlvbmFsCAUNJHQwMTY0MDkxNjUxNgJfMQQCeDEIBQ0kdDAxNjQwOTE2NTE2Al8yBAJ4MggFDSR0MDE2NDA5MTY1MTYCXzMEAngzCAUNJHQwMTY0MDkxNjUxNgJfNAUTb3V0UG9zaXRpb25Ob3Rpb25hbAkBBG11bGQCBQ9wb3NpdGlvblNpemVBYnMJARJnZXRPcmFjbGVUd2FwUHJpY2UABA11bnJlYWxpemVkUG5sAwUHaXNTaG9ydAkAZQIFFHBvc2l0aW9uT3Blbk5vdGlvbmFsBRBwb3NpdGlvbk5vdGlvbmFsCQBlAgUQcG9zaXRpb25Ob3Rpb25hbAUUcG9zaXRpb25PcGVuTm90aW9uYWwJAJQKAgUQcG9zaXRpb25Ob3Rpb25hbAUNdW5yZWFsaXplZFBubAEPY2FsY01hcmdpblJhdGlvAw1fcmVtYWluTWFyZ2luCF9iYWREZWJ0EV9wb3NpdGlvbk5vdGlvbmFsCQEEZGl2ZAIJAGUCBQ1fcmVtYWluTWFyZ2luBQhfYmFkRGVidAURX3Bvc2l0aW9uTm90aW9uYWwBFmdldE1hcmdpblJhdGlvQnlPcHRpb24CB190cmFkZXIHX29wdGlvbgQNJHQwMTcxODYxNzI5NwkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgQMcG9zaXRpb25TaXplCAUNJHQwMTcxODYxNzI5NwJfMQQOcG9zaXRpb25NYXJnaW4IBQ0kdDAxNzE4NjE3Mjk3Al8yBANwb24IBQ0kdDAxNzE4NjE3Mjk3Al8zBBFwb3NpdGlvbkxzdFVwZENQRggFDSR0MDE3MTg2MTcyOTcCXzQEDSR0MDE3MzAzMTczOTYJASNnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubAIFB190cmFkZXIFB19vcHRpb24EEHBvc2l0aW9uTm90aW9uYWwIBQ0kdDAxNzMwMzE3Mzk2Al8xBA11bnJlYWxpemVkUG5sCAUNJHQwMTczMDMxNzM5NgJfMgQNJHQwMTc0MDExNzU2NwkBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEBQxwb3NpdGlvblNpemUFDnBvc2l0aW9uTWFyZ2luBRFwb3NpdGlvbkxzdFVwZENQRgUNdW5yZWFsaXplZFBubAQMcmVtYWluTWFyZ2luCAUNJHQwMTc0MDExNzU2NwJfMQQHYmFkRGVidAgFDSR0MDE3NDAxMTc1NjcCXzIJAQ9jYWxjTWFyZ2luUmF0aW8DBQxyZW1haW5NYXJnaW4FB2JhZERlYnQFEHBvc2l0aW9uTm90aW9uYWwBDmdldE1hcmdpblJhdGlvAQdfdHJhZGVyCQEWZ2V0TWFyZ2luUmF0aW9CeU9wdGlvbgIFB190cmFkZXIFD1BOTF9PUFRJT05fU1BPVAEVaW50ZXJuYWxDbG9zZVBvc2l0aW9uAQdfdHJhZGVyBA0kdDAxNzg4MzE4MDExCQELZ2V0UG9zaXRpb24BBQdfdHJhZGVyBAxwb3NpdGlvblNpemUIBQ0kdDAxNzg4MzE4MDExAl8xBA5wb3NpdGlvbk1hcmdpbggFDSR0MDE3ODgzMTgwMTECXzIEFHBvc2l0aW9uT3Blbk5vdGlvbmFsCAUNJHQwMTc4ODMxODAxMQJfMwQRcG9zaXRpb25Mc3RVcGRDUEYIBQ0kdDAxNzg4MzE4MDExAl80BA0kdDAxODAxNzE4MTA0CQEjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwCBQdfdHJhZGVyBQ9QTkxfT1BUSU9OX1NQT1QEAngxCAUNJHQwMTgwMTcxODEwNAJfMQQNdW5yZWFsaXplZFBubAgFDSR0MDE4MDE3MTgxMDQCXzIEDSR0MDE4MTA5MTgyNzcJASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BAUMcG9zaXRpb25TaXplBQ5wb3NpdGlvbk1hcmdpbgURcG9zaXRpb25Mc3RVcGRDUEYFDXVucmVhbGl6ZWRQbmwEDHJlbWFpbk1hcmdpbggFDSR0MDE4MTA5MTgyNzcCXzEEB2JhZERlYnQIBQ0kdDAxODEwOTE4Mjc3Al8yBBVleGNoYW5nZWRQb3NpdGlvblNpemUJAQEtAQUMcG9zaXRpb25TaXplBAtyZWFsaXplZFBubAUNdW5yZWFsaXplZFBubAQNbWFyZ2luVG9WYXVsdAkBAS0BBQxyZW1haW5NYXJnaW4EDSR0MDE4NDA0MTg2ODUJAQpzd2FwT3V0cHV0AgkAZgIFDHBvc2l0aW9uU2l6ZQAACQEDYWJzAQUMcG9zaXRpb25TaXplBBlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50CAUNJHQwMTg0MDQxODY4NQJfMQQWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFDSR0MDE4NDA0MTg2ODUCXzIEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDE4NDA0MTg2ODUCXzMEFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQ0kdDAxODQwNDE4Njg1Al80BBdjdW11bGF0aXZlTm90aW9uYWxBZnRlcggFDSR0MDE4NDA0MTg2ODUCXzUEDnRvdGFsTG9uZ0FmdGVyCAUNJHQwMTg0MDQxODY4NQJfNgQPdG90YWxTaG9ydEFmdGVyCAUNJHQwMTg0MDQxODY4NQJfNwQZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcgkAZQIJARRvcGVuSW50ZXJlc3ROb3Rpb25hbAAFFHBvc2l0aW9uT3Blbk5vdGlvbmFsCQCeCgwFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQUHYmFkRGVidAULcmVhbGl6ZWRQbmwFDW1hcmdpblRvVmF1bHQFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFWJhc2VBc3NldFJlc2VydmVBZnRlcgUWdG90YWxQb3NpdGlvblNpemVBZnRlcgUXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIFGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQFDnRvdGFsTG9uZ0FmdGVyBQ90b3RhbFNob3J0QWZ0ZXIBEGdldFR3YXBTcG90UHJpY2UABAhtaW51dGVJZAkAaQIJAGkCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcADoBwA8BA1zdGFydE1pbnV0ZUlkCQBlAgUIbWludXRlSWQFDVRXQVBfSU5URVJWQUwEB2xpc3RTdHIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUNa19sYXN0RGF0YVN0cgIABARsaXN0CQC1CQIFB2xpc3RTdHICASwKAQhmaWx0ZXJGbgILYWNjdW11bGF0b3IEbmV4dAMJAGcCBQ1zdGFydE1pbnV0ZUlkCQENcGFyc2VJbnRWYWx1ZQEFBG5leHQJAM0IAgULYWNjdW11bGF0b3IJAQ1wYXJzZUludFZhbHVlAQUEbmV4dAULYWNjdW11bGF0b3IEBWxpc3RGCgACJGwFBGxpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGZpbHRlckZuAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAyMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQECG1heEluZGV4AwkAZgIJAJADAQUFbGlzdEYAAAkAlgMBBQVsaXN0RgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBGxpc3QAAAQMbGFzdE1pbnV0ZUlkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDmtfbGFzdE1pbnV0ZUlkAAAEFmVuZExhc3RDdW11bGF0aXZlUHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIFHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlAgFfCQCkAwEFDGxhc3RNaW51dGVJZAAABAxlbmRMYXN0UHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIFE2tfdHdhcERhdGFMYXN0UHJpY2UCAV8JAKQDAQUMbGFzdE1pbnV0ZUlkAAAEEm5vd0N1bXVsYXRpdmVQcmljZQkAZAIFFmVuZExhc3RDdW11bGF0aXZlUHJpY2UJAGgCCQBlAgUIbWludXRlSWQFDGxhc3RNaW51dGVJZAUMZW5kTGFzdFByaWNlBBhzdGFydExhc3RDdW11bGF0aXZlUHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIFHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlAgFfCQCkAwEFCG1heEluZGV4AAAEDnN0YXJ0TGFzdFByaWNlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICBRNrX3R3YXBEYXRhTGFzdFByaWNlAgFfCQCkAwEFCG1heEluZGV4AAAEFHN0YXJ0Q3VtdWxhdGl2ZVByaWNlCQBkAgUYc3RhcnRMYXN0Q3VtdWxhdGl2ZVByaWNlCQBoAgkAZQIFDXN0YXJ0TWludXRlSWQFCG1heEluZGV4BQ5zdGFydExhc3RQcmljZQkAaQIJAGUCBRJub3dDdW11bGF0aXZlUHJpY2UFFHN0YXJ0Q3VtdWxhdGl2ZVByaWNlBQ1UV0FQX0lOVEVSVkFMAQ51cGRhdGVTZXR0aW5ncwcQX2luaXRNYXJnaW5SYXRpbwRfbW1yFF9saXF1aWRhdGlvbkZlZVJhdGlvDl9mdW5kaW5nUGVyaW9kBF9mZWUMX3NwcmVhZExpbWl0D19tYXhQcmljZUltcGFjdAkAzAgCCQEMSW50ZWdlckVudHJ5AgURa19pbml0TWFyZ2luUmF0aW8FEF9pbml0TWFyZ2luUmF0aW8JAMwIAgkBDEludGVnZXJFbnRyeQIFGGtfbWFpbnRlbmFuY2VNYXJnaW5SYXRpbwUEX21tcgkAzAgCCQEMSW50ZWdlckVudHJ5AgUVa19saXF1aWRhdGlvbkZlZVJhdGlvBRRfbGlxdWlkYXRpb25GZWVSYXRpbwkAzAgCCQEMSW50ZWdlckVudHJ5AgUPa19mdW5kaW5nUGVyaW9kBQ5fZnVuZGluZ1BlcmlvZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUFa19mZWUFBF9mZWUJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtfc3ByZWFkTGltaXQFDF9zcHJlYWRMaW1pdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa19tYXhQcmljZUltcGFjdAUPX21heFByaWNlSW1wYWN0BQNuaWwBDXVwZGF0ZUZ1bmRpbmcFEV9uZXh0RnVuZGluZ0Jsb2NrJF9sYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbiVfbGF0ZXN0U2hvcnRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uEF9sb25nRnVuZGluZ1JhdGURX3Nob3J0RnVuZGluZ1JhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIFEmtfbmV4dEZ1bmRpbmdCbG9jawURX25leHRGdW5kaW5nQmxvY2sJAMwIAgkBDEludGVnZXJFbnRyeQIFJWtfbGF0ZXN0TG9uZ0N1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FJF9sYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgUma19sYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FJV9sYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24JAMwIAgkBDEludGVnZXJFbnRyeQIFEWtfbG9uZ0Z1bmRpbmdSYXRlBRBfbG9uZ0Z1bmRpbmdSYXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJrX3Nob3J0RnVuZGluZ1JhdGUFEV9zaG9ydEZ1bmRpbmdSYXRlBQNuaWwBDnVwZGF0ZVBvc2l0aW9uBQhfYWRkcmVzcwVfc2l6ZQdfbWFyZ2luDV9vcGVuTm90aW9uYWwgX2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFDmtfcG9zaXRpb25TaXplBQhfYWRkcmVzcwUFX3NpemUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFEGtfcG9zaXRpb25NYXJnaW4FCF9hZGRyZXNzBQdfbWFyZ2luCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBRZrX3Bvc2l0aW9uT3Blbk5vdGlvbmFsBQhfYWRkcmVzcwUNX29wZW5Ob3Rpb25hbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUua19wb3NpdGlvbkxhc3RVcGRhdGVkQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgUIX2FkZHJlc3MFIF9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uBQNuaWwBCmFwcGVuZFR3YXABBXByaWNlBAhtaW51dGVJZAkAaQIJAGkCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcADoBwA8BBBwcmV2aW91c01pbnV0ZUlkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDmtfbGFzdE1pbnV0ZUlkAAADCQBmAgUQcHJldmlvdXNNaW51dGVJZAUIbWludXRlSWQJAAIBAhFUV0FQIG91dC1vZi1vcmRlcgQMbGFzdE1pbnV0ZUlkAwkAAAIFEHByZXZpb3VzTWludXRlSWQAAAUIbWludXRlSWQFEHByZXZpb3VzTWludXRlSWQDCQBmAgUIbWludXRlSWQFEHByZXZpb3VzTWludXRlSWQEE3ByZXZDdW11bGF0aXZlUHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIFHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlAgFfCQCkAwEFEHByZXZpb3VzTWludXRlSWQAAAQJcHJldlByaWNlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICBRNrX3R3YXBEYXRhTGFzdFByaWNlAgFfCQCkAwEFEHByZXZpb3VzTWludXRlSWQFBXByaWNlBBNsYXN0Q3VtdWxhdGl2ZVByaWNlCQBkAgUTcHJldkN1bXVsYXRpdmVQcmljZQkAaAIJAGUCBQhtaW51dGVJZAUMbGFzdE1pbnV0ZUlkBQlwcmV2UHJpY2UEBGxpc3QJAQtwdXNoVG9RdWV1ZQMJAQlzdHJUb0xpc3QBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFDWtfbGFzdERhdGFTdHICAAUNVFdBUF9JTlRFUlZBTAkApAMBBQhtaW51dGVJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUda190d2FwRGF0YUxhc3RDdW11bGF0aXZlUHJpY2UJAKQDAQUIbWludXRlSWQFE2xhc3RDdW11bGF0aXZlUHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFE2tfdHdhcERhdGFMYXN0UHJpY2UJAKQDAQUIbWludXRlSWQFBXByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBRprX3R3YXBEYXRhUHJldmlvdXNNaW51dGVJZAkApAMBBQhtaW51dGVJZAUQcHJldmlvdXNNaW51dGVJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUOa19sYXN0TWludXRlSWQFCG1pbnV0ZUlkCQDMCAIJAQtTdHJpbmdFbnRyeQIFDWtfbGFzdERhdGFTdHIJAQlsaXN0VG9TdHIBBQRsaXN0BQNuaWwEGHR3YXBEYXRhUHJldmlvdXNNaW51dGVJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEOdG9Db21wb3NpdGVLZXkCBRprX3R3YXBEYXRhUHJldmlvdXNNaW51dGVJZAkApAMBBQhtaW51dGVJZAAABBNwcmV2Q3VtdWxhdGl2ZVByaWNlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQ50b0NvbXBvc2l0ZUtleQIFHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlCQCkAwEFGHR3YXBEYXRhUHJldmlvdXNNaW51dGVJZAAABAlwcmV2UHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBDnRvQ29tcG9zaXRlS2V5AgUTa190d2FwRGF0YUxhc3RQcmljZQkApAMBBRh0d2FwRGF0YVByZXZpb3VzTWludXRlSWQFBXByaWNlBBNsYXN0Q3VtdWxhdGl2ZVByaWNlCQBkAgUTcHJldkN1bXVsYXRpdmVQcmljZQkAaAIJAGUCBQhtaW51dGVJZAUYdHdhcERhdGFQcmV2aW91c01pbnV0ZUlkBQlwcmV2UHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlCQCkAwEFCG1pbnV0ZUlkBRNsYXN0Q3VtdWxhdGl2ZVByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBRNrX3R3YXBEYXRhTGFzdFByaWNlCQCkAwEFCG1pbnV0ZUlkBQVwcmljZQUDbmlsARF1cGRhdGVBbW1SZXNlcnZlcwIHX3F0QXN0UgdfYnNBc3RSCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrX3F1b3RlQXNzZXRSZXNlcnZlBQdfcXRBc3RSCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJrX2Jhc2VBc3NldFJlc2VydmUFB19ic0FzdFIFA25pbAEJdXBkYXRlQW1tBwdfcXRBc3RSB19ic0FzdFIXX3RvdGFsUG9zaXRpb25TaXplQWZ0ZXIYX2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyFV9vcGVuSW50ZXJlc3ROb3Rpb25hbBZfdG90YWxMb25nUG9zaXRpb25TaXplF190b3RhbFNob3J0UG9zaXRpb25TaXplAwkBAiE9AgkAZQIFFl90b3RhbExvbmdQb3NpdGlvblNpemUFF190b3RhbFNob3J0UG9zaXRpb25TaXplBRdfdG90YWxQb3NpdGlvblNpemVBZnRlcgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhhJbnZhbGlkIEFNTSBzdGF0ZSBkYXRhOiAJAKQDAQUWX3RvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQIEICsgIAkApAMBBRdfdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQIEICE9IAkApAMBBRdfdG90YWxQb3NpdGlvblNpemVBZnRlcgkAzggCCQDOCAIJARF1cGRhdGVBbW1SZXNlcnZlcwIFB19xdEFzdFIFB19ic0FzdFIJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tfdG90YWxQb3NpdGlvblNpemUFF190b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRrX2N1bXVsYXRpdmVOb3Rpb25hbAUYX2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRZrX29wZW5JbnRlcmVzdE5vdGlvbmFsBRVfb3BlbkludGVyZXN0Tm90aW9uYWwJAMwIAgkBDEludGVnZXJFbnRyeQIFF2tfdG90YWxMb25nUG9zaXRpb25TaXplBRZfdG90YWxMb25nUG9zaXRpb25TaXplCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRhrX3RvdGFsU2hvcnRQb3NpdGlvblNpemUFF190b3RhbFNob3J0UG9zaXRpb25TaXplBQNuaWwJAQphcHBlbmRUd2FwAQkBBGRpdmQCBQdfcXRBc3RSBQdfYnNBc3RSAQ5kZWxldGVQb3NpdGlvbgEIX2FkZHJlc3MJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDnRvQ29tcG9zaXRlS2V5AgUOa19wb3NpdGlvblNpemUFCF9hZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ50b0NvbXBvc2l0ZUtleQIFEGtfcG9zaXRpb25NYXJnaW4FCF9hZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ50b0NvbXBvc2l0ZUtleQIFFmtfcG9zaXRpb25PcGVuTm90aW9uYWwFCF9hZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ50b0NvbXBvc2l0ZUtleQIFLmtfcG9zaXRpb25MYXN0VXBkYXRlZEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FCF9hZGRyZXNzBQNuaWwBCHdpdGhkcmF3AghfYWRkcmVzcwdfYW1vdW50BAdiYWxhbmNlCQDwBwIFBHRoaXMJAQpxdW90ZUFzc2V0AAMJAGYCBQdfYW1vdW50BQdiYWxhbmNlCQACAQkArAICCQCsAgIJAKwCAgITVW5hYmxlIHRvIHdpdGhkcmF3IAkApAMBBQdfYW1vdW50AhcgZnJvbSBjb250cmFjdCBiYWxhbmNlIAkApAMBBQdiYWxhbmNlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCF9hZGRyZXNzBQdfYW1vdW50CQEKcXVvdGVBc3NldAAFA25pbAENdXBkYXRlQmFsYW5jZQEBaQMJAGYCAAAFAWkJAAIBAgdCYWxhbmNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrX2JhbGFuY2UFAWkFA25pbAELdHJhbnNmZXJGZWUBAWkJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBDnN0YWtpbmdBZGRyZXNzAAUBaQkBCnF1b3RlQXNzZXQABQNuaWwQAWkBBXBhdXNlAAMJAQIhPQIIBQFpBmNhbGxlcgkBDGFkbWluQWRkcmVzcwAJAAIBAhpJbnZhbGlkIHRvZ2dsZVBhdXNlIHBhcmFtcwkAzAgCCQEMQm9vbGVhbkVudHJ5AgUIa19wYXVzZWQGBQNuaWwBaQEHdW5wYXVzZQADCQECIT0CCAUBaQZjYWxsZXIJAQxhZG1pbkFkZHJlc3MACQACAQIaSW52YWxpZCB0b2dnbGVQYXVzZSBwYXJhbXMJAMwIAgkBDEJvb2xlYW5FbnRyeQIFCGtfcGF1c2VkBwUDbmlsAWkBDGFkZExpcXVpZGl0eQERX3F1b3RlQXNzZXRBbW91bnQDAwkBAiE9AggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAYJAGcCAAAFEV9xdW90ZUFzc2V0QW1vdW50CQACAQIbSW52YWxpZCBhZGRMaXF1aWRpdHkgcGFyYW1zBAdfcXRBc3RSCQEGcXRBc3RSAAQHX2JzQXN0UgkBBmJzQXN0UgAEBXByaWNlCQEEZGl2ZAIFB19xdEFzdFIFB19ic0FzdFIEFGJhc2VBc3NldEFtb3VudFRvQWRkCQEEZGl2ZAIFEV9xdW90ZUFzc2V0QW1vdW50BQVwcmljZQQLcXRBc3RSQWZ0ZXIJAGQCBQdfcXRBc3RSBRFfcXVvdGVBc3NldEFtb3VudAQLYnNBc3RSQWZ0ZXIJAGQCBQdfYnNBc3RSBRRiYXNlQXNzZXRBbW91bnRUb0FkZAkBEXVwZGF0ZUFtbVJlc2VydmVzAgULcXRBc3RSQWZ0ZXIFC2JzQXN0UkFmdGVyAWkBD3JlbW92ZUxpcXVpZGl0eQERX3F1b3RlQXNzZXRBbW91bnQDAwkBAiE9AggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAYJAGcCAAAFEV9xdW90ZUFzc2V0QW1vdW50CQACAQIeSW52YWxpZCByZW1vdmVMaXF1aWRpdHkgcGFyYW1zBAdfcXRBc3RSCQEGcXRBc3RSAAQHX2JzQXN0UgkBBmJzQXN0UgAEBXByaWNlCQEEZGl2ZAIFB19xdEFzdFIFB19ic0FzdFIEF2Jhc2VBc3NldEFtb3VudFRvUmVtb3ZlCQEEZGl2ZAIFEV9xdW90ZUFzc2V0QW1vdW50BQVwcmljZQQLcXRBc3RSQWZ0ZXIJAGUCBQdfcXRBc3RSBRFfcXVvdGVBc3NldEFtb3VudAQLYnNBc3RSQWZ0ZXIJAGUCBQdfYnNBc3RSBRdiYXNlQXNzZXRBbW91bnRUb1JlbW92ZQkBEXVwZGF0ZUFtbVJlc2VydmVzAgULcXRBc3RSQWZ0ZXIFC2JzQXN0UkFmdGVyAWkBDmNoYW5nZVNldHRpbmdzBxBfaW5pdE1hcmdpblJhdGlvBF9tbXIUX2xpcXVpZGF0aW9uRmVlUmF0aW8OX2Z1bmRpbmdQZXJpb2QEX2ZlZQxfc3ByZWFkTGltaXQPX21heFByaWNlSW1wYWN0AwkBAiE9AggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAkAAgECHUludmFsaWQgY2hhbmdlU2V0dGluZ3MgcGFyYW1zCQEOdXBkYXRlU2V0dGluZ3MHBRBfaW5pdE1hcmdpblJhdGlvBQRfbW1yBRRfbGlxdWlkYXRpb25GZWVSYXRpbwUOX2Z1bmRpbmdQZXJpb2QFBF9mZWUFDF9zcHJlYWRMaW1pdAUPX21heFByaWNlSW1wYWN0AWkBCmluaXRpYWxpemUMB19xdEFzdFIHX2JzQXN0Ug5fZnVuZGluZ1BlcmlvZBBfaW5pdE1hcmdpblJhdGlvBF9tbXIUX2xpcXVpZGF0aW9uRmVlUmF0aW8EX2ZlZQdfb3JhY2xlCl9vcmFjbGVLZXkMX2Nvb3JkaW5hdG9yDF9zcHJlYWRMaW1pdA9fbWF4UHJpY2VJbXBhY3QDAwMDAwMDAwMDCQBnAgAABQdfcXRBc3RSBgkAZwIAAAUHX2JzQXN0UgYJAGcCAAAFDl9mdW5kaW5nUGVyaW9kBgkAZwIAAAUQX2luaXRNYXJnaW5SYXRpbwYJAGcCAAAFBF9tbXIGCQBnAgAABRRfbGlxdWlkYXRpb25GZWVSYXRpbwYJAGcCAAAFBF9mZWUGCQBnAgAABQxfc3ByZWFkTGltaXQGCQBnAgAABQ9fbWF4UHJpY2VJbXBhY3QGCQELaW5pdGlhbGl6ZWQACQACAQIdSW52YWxpZCBpbml0aWFsaXplIHBhcmFtZXRlcnMJAM4IAgkAzggCCQDOCAIJAM4IAgkBCXVwZGF0ZUFtbQcFB19xdEFzdFIFB19ic0FzdFIAAAAAAAAAAAAACQEOdXBkYXRlU2V0dGluZ3MHBRBfaW5pdE1hcmdpblJhdGlvBQRfbW1yBRRfbGlxdWlkYXRpb25GZWVSYXRpbwUOX2Z1bmRpbmdQZXJpb2QFBF9mZWUFDF9zcHJlYWRMaW1pdAUPX21heFByaWNlSW1wYWN0CQENdXBkYXRlRnVuZGluZwUJAGQCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUOX2Z1bmRpbmdQZXJpb2QAAAAAAAAAAAkBDXVwZGF0ZUJhbGFuY2UBAAAJAMwIAgkBDEJvb2xlYW5FbnRyeQIFDWtfaW5pdGlhbGl6ZWQGCQDMCAIJAQtTdHJpbmdFbnRyeQIFBWtfb3JhBQdfb3JhY2xlCQDMCAIJAQtTdHJpbmdFbnRyeQIFCWtfb3JhX2tleQUKX29yYWNsZUtleQkAzAgCCQELU3RyaW5nRW50cnkCBRRrX2Nvb3JkaW5hdG9yQWRkcmVzcwUMX2Nvb3JkaW5hdG9yBQNuaWwBaQEQZGVjcmVhc2VQb3NpdGlvbgMHX2Ftb3VudAlfbGV2ZXJhZ2UTX21pbkJhc2VBc3NldEFtb3VudAMDAwMDCQBnAgAABQdfYW1vdW50BgkBASEBCQELaW5pdGlhbGl6ZWQABgkBASEBCQEWcmVxdWlyZU1vcmVNYXJnaW5SYXRpbwMJAQRkaXZkAgUMREVDSU1BTF9VTklUBQlfbGV2ZXJhZ2UJAQ9pbml0TWFyZ2luUmF0aW8ABgYJAQEhAQkBE3JlcXVpcmVPcGVuUG9zaXRpb24BCQClCAEIBQFpBmNhbGxlcgYJAQZwYXVzZWQACQACAQIjSW52YWxpZCBkZWNyZWFzZVBvc2l0aW9uIHBhcmFtZXRlcnMEDSR0MDI5NTk0Mjk3NDYJAQtnZXRQb3NpdGlvbgEJAKUIAQgFAWkGY2FsbGVyBA9vbGRQb3NpdGlvblNpemUIBQ0kdDAyOTU5NDI5NzQ2Al8xBBFvbGRQb3NpdGlvbk1hcmdpbggFDSR0MDI5NTk0Mjk3NDYCXzIEF29sZFBvc2l0aW9uT3Blbk5vdGlvbmFsCAUNJHQwMjk1OTQyOTc0NgJfMwQUb2xkUG9zaXRpb25Mc3RVcGRDUEYIBQ0kdDAyOTU5NDI5NzQ2Al80BApfZGlyZWN0aW9uAwkAZgIFD29sZFBvc2l0aW9uU2l6ZQAABQlESVJfU0hPUlQFCERJUl9MT05HBAVpc0FkZAkAAAIFCl9kaXJlY3Rpb24FCERJUl9MT05HBAxvcGVuTm90aW9uYWwJAQRtdWxkAgUHX2Ftb3VudAUJX2xldmVyYWdlBA0kdDAyOTkxOTMwMDM1CQEjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwCCQClCAEIBQFpBmNhbGxlcgUPUE5MX09QVElPTl9TUE9UBBNvbGRQb3NpdGlvbk5vdGlvbmFsCAUNJHQwMjk5MTkzMDAzNQJfMQQNdW5yZWFsaXplZFBubAgFDSR0MDI5OTE5MzAwMzUCXzIEDSR0MDMwMDQxMzI1OTADCQBmAgUTb2xkUG9zaXRpb25Ob3Rpb25hbAUMb3Blbk5vdGlvbmFsBA0kdDAzMDQxODMwNjM3CQEJc3dhcElucHV0AgUFaXNBZGQFDG9wZW5Ob3Rpb25hbAQVZXhjaGFuZ2VkUG9zaXRpb25TaXplCAUNJHQwMzA0MTgzMDYzNwJfMQQWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFDSR0MDMwNDE4MzA2MzcCXzIEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDMwNDE4MzA2MzcCXzMEFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQ0kdDAzMDQxODMwNjM3Al80BBdjdW11bGF0aXZlTm90aW9uYWxBZnRlcggFDSR0MDMwNDE4MzA2MzcCXzUEGGV4Y2hhbmdlZFBvc2l0aW9uU2l6ZUFicwkBA2FicwEFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQMDCQECIT0CBRNfbWluQmFzZUFzc2V0QW1vdW50AAAJAGYCBRNfbWluQmFzZUFzc2V0QW1vdW50BRhleGNoYW5nZWRQb3NpdGlvblNpemVBYnMHCQACAQkArAICCQCsAgIJAKwCAgIlVG9vIGxpdHRsZSBiYXNlIGFzc2V0IGV4Y2hhbmdlZCwgZ290IAkApAMBBRhleGNoYW5nZWRQb3NpdGlvblNpemVBYnMCCiBleHBlY3RlZCAJAKQDAQUTX21pbkJhc2VBc3NldEFtb3VudAQLcmVhbGl6ZWRQbmwJAQRkaXZkAgkBBG11bGQCBQ11bnJlYWxpemVkUG5sBRhleGNoYW5nZWRQb3NpdGlvblNpemVBYnMJAQNhYnMBBQ9vbGRQb3NpdGlvblNpemUEDSR0MDMxMDc0MzEzMTkJASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BAUPb2xkUG9zaXRpb25TaXplBRFvbGRQb3NpdGlvbk1hcmdpbgUUb2xkUG9zaXRpb25Mc3RVcGRDUEYFC3JlYWxpemVkUG5sBAxyZW1haW5NYXJnaW4IBQ0kdDAzMTA3NDMxMzE5Al8xBAdiYWREZWJ0CAUNJHQwMzEwNzQzMTMxOQJfMgQOZnVuZGluZ1BheW1lbnQIBQ0kdDAzMTA3NDMxMzE5Al8zBBlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50BQxvcGVuTm90aW9uYWwEEnVucmVhbGl6ZWRQbmxBZnRlcgkAZQIFDXVucmVhbGl6ZWRQbmwFC3JlYWxpemVkUG5sBBJyZW1haW5PcGVuTm90aW9uYWwDCQBmAgUPb2xkUG9zaXRpb25TaXplAAAJAGUCCQBlAgUTb2xkUG9zaXRpb25Ob3Rpb25hbAUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAUSdW5yZWFsaXplZFBubEFmdGVyCQBlAgkAZAIFEnVucmVhbGl6ZWRQbmxBZnRlcgUTb2xkUG9zaXRpb25Ob3Rpb25hbAUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAQPbmV3UG9zaXRpb25TaXplCQBkAgUPb2xkUG9zaXRpb25TaXplBRVleGNoYW5nZWRQb3NpdGlvblNpemUJAJ0KCwUPbmV3UG9zaXRpb25TaXplBQxyZW1haW5NYXJnaW4JAQNhYnMBBRJyZW1haW5PcGVuTm90aW9uYWwJAR9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAQUPbmV3UG9zaXRpb25TaXplBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyCQBlAgkBFG9wZW5JbnRlcmVzdE5vdGlvbmFsAAUMb3Blbk5vdGlvbmFsCQBlAgkBFXRvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQADCQBmAgUPbmV3UG9zaXRpb25TaXplAAAJAQNhYnMBBRVleGNoYW5nZWRQb3NpdGlvblNpemUAAAkAZQIJARZ0b3RhbFNob3J0UG9zaXRpb25TaXplAAMJAGYCAAAFD25ld1Bvc2l0aW9uU2l6ZQkBA2FicwEFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQAACQACAQIUQ2xvc2UgcG9zaXRpb24gZmlyc3QED25ld1Bvc2l0aW9uU2l6ZQgFDSR0MDMwMDQxMzI1OTACXzEEF25ld1Bvc2l0aW9uUmVtYWluTWFyZ2luCAUNJHQwMzAwNDEzMjU5MAJfMgQXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDAzMDA0MTMyNTkwAl8zBBRuZXdQb3NpdGlvbkxhdGVzdENQRggFDSR0MDMwMDQxMzI1OTACXzQEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDMwMDQxMzI1OTACXzUEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDAzMDA0MTMyNTkwAl82BBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwMzAwNDEzMjU5MAJfNwQXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIIBQ0kdDAzMDA0MTMyNTkwAl84BBlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyCAUNJHQwMzAwNDEzMjU5MAJfOQQOdG90YWxMb25nQWZ0ZXIIBQ0kdDAzMDA0MTMyNTkwA18xMAQPdG90YWxTaG9ydEFmdGVyCAUNJHQwMzAwNDEzMjU5MANfMTEEDm5vdGlmeU5vdGlvbmFsCQD8BwQJAQxtaW5lckFkZHJlc3MAAg5ub3RpZnlOb3Rpb25hbAkAzAgCCQClCAEIBQFpBmNhbGxlcgkAzAgCBRduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAUDbmlsBQNuaWwDCQAAAgUObm90aWZ5Tm90aW9uYWwFDm5vdGlmeU5vdGlvbmFsCQDOCAIJAQ51cGRhdGVQb3NpdGlvbgUJAKUIAQgFAWkGY2FsbGVyBQ9uZXdQb3NpdGlvblNpemUFF25ld1Bvc2l0aW9uUmVtYWluTWFyZ2luBRduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAUUbmV3UG9zaXRpb25MYXRlc3RDUEYJAQl1cGRhdGVBbW0HBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyBRlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyBQ50b3RhbExvbmdBZnRlcgUPdG90YWxTaG9ydEFmdGVyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEGluY3JlYXNlUG9zaXRpb24DCl9kaXJlY3Rpb24JX2xldmVyYWdlE19taW5CYXNlQXNzZXRBbW91bnQECl9yYXdBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AwMDAwMDAwkBAiE9AgUKX2RpcmVjdGlvbgUIRElSX0xPTkcJAQIhPQIFCl9kaXJlY3Rpb24FCURJUl9TSE9SVAcGCQBnAgAABQpfcmF3QW1vdW50BgkBASEBCQELaW5pdGlhbGl6ZWQABgkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCQEKcXVvdGVBc3NldAAGCQEBIQEJARZyZXF1aXJlTW9yZU1hcmdpblJhdGlvAwkBBGRpdmQCBQxERUNJTUFMX1VOSVQFCV9sZXZlcmFnZQkBD2luaXRNYXJnaW5SYXRpbwAGBgkBBnBhdXNlZAAJAAIBAiNJbnZhbGlkIGluY3JlYXNlUG9zaXRpb24gcGFyYW1ldGVycwQJZmVlQW1vdW50CQEEbXVsZAIFCl9yYXdBbW91bnQJAQNmZWUABAdfYW1vdW50CQBlAgUKX3Jhd0Ftb3VudAUJZmVlQW1vdW50BA0kdDAzMzcwODMzODYwCQELZ2V0UG9zaXRpb24BCQClCAEIBQFpBmNhbGxlcgQPb2xkUG9zaXRpb25TaXplCAUNJHQwMzM3MDgzMzg2MAJfMQQRb2xkUG9zaXRpb25NYXJnaW4IBQ0kdDAzMzcwODMzODYwAl8yBBdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDMzNzA4MzM4NjACXzMEFG9sZFBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwMzM3MDgzMzg2MAJfNAQNaXNOZXdQb3NpdGlvbgkAAAIFD29sZFBvc2l0aW9uU2l6ZQAABA9pc1NhbWVEaXJlY3Rpb24DCQBmAgUPb2xkUG9zaXRpb25TaXplAAAJAAACBQpfZGlyZWN0aW9uBQhESVJfTE9ORwkAAAIFCl9kaXJlY3Rpb24FCURJUl9TSE9SVAQOZXhwYW5kRXhpc3RpbmcDCQEBIQEFDWlzTmV3UG9zaXRpb24FD2lzU2FtZURpcmVjdGlvbgcEBWlzQWRkCQAAAgUKX2RpcmVjdGlvbgUIRElSX0xPTkcEDSR0MDM0MTQ5MzY1MzgDAwUNaXNOZXdQb3NpdGlvbgYFDmV4cGFuZEV4aXN0aW5nBAxvcGVuTm90aW9uYWwJAQRtdWxkAgUHX2Ftb3VudAUJX2xldmVyYWdlBA0kdDAzNDU3MzM0Nzc5CQEJc3dhcElucHV0AgUFaXNBZGQFDG9wZW5Ob3Rpb25hbAQVYW1vdW50QmFzZUFzc2V0Qm91Z2h0CAUNJHQwMzQ1NzMzNDc3OQJfMQQWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFDSR0MDM0NTczMzQ3NzkCXzIEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDM0NTczMzQ3NzkCXzMEFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQ0kdDAzNDU3MzM0Nzc5Al80BBdjdW11bGF0aXZlTm90aW9uYWxBZnRlcggFDSR0MDM0NTczMzQ3NzkCXzUDAwkBAiE9AgUTX21pbkJhc2VBc3NldEFtb3VudAAACQBmAgUTX21pbkJhc2VBc3NldEFtb3VudAkBA2FicwEFFWFtb3VudEJhc2VBc3NldEJvdWdodAcJAAIBCQCsAgIJAKwCAgkArAICAg1MaW1pdCBlcnJvcjogCQCkAwEJAQNhYnMBBRVhbW91bnRCYXNlQXNzZXRCb3VnaHQCAyA8IAkApAMBBRNfbWluQmFzZUFzc2V0QW1vdW50BA9uZXdQb3NpdGlvblNpemUJAGQCBQ9vbGRQb3NpdGlvblNpemUFFWFtb3VudEJhc2VBc3NldEJvdWdodAQZaW5jcmVhc2VNYXJnaW5SZXF1aXJlbWVudAkBBGRpdmQCBQxvcGVuTm90aW9uYWwFCV9sZXZlcmFnZQQNJHQwMzUxNjAzNTM5OQkBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEBQ9vbGRQb3NpdGlvblNpemUFEW9sZFBvc2l0aW9uTWFyZ2luBRRvbGRQb3NpdGlvbkxzdFVwZENQRgUZaW5jcmVhc2VNYXJnaW5SZXF1aXJlbWVudAQMcmVtYWluTWFyZ2luCAUNJHQwMzUxNjAzNTM5OQJfMQQCeDEIBQ0kdDAzNTE2MDM1Mzk5Al8yBAJ4MggFDSR0MDM1MTYwMzUzOTkCXzMJAJ0KCwUPbmV3UG9zaXRpb25TaXplBQxyZW1haW5NYXJnaW4JAGQCBRdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAUMb3Blbk5vdGlvbmFsCQEfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgEFD25ld1Bvc2l0aW9uU2l6ZQUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyBRdjdW11bGF0aXZlTm90aW9uYWxBZnRlcgkAZAIJARRvcGVuSW50ZXJlc3ROb3Rpb25hbAAFDG9wZW5Ob3Rpb25hbAkAZAIJARV0b3RhbExvbmdQb3NpdGlvblNpemUAAwkAZgIFD25ld1Bvc2l0aW9uU2l6ZQAACQEDYWJzAQUVYW1vdW50QmFzZUFzc2V0Qm91Z2h0AAAJAGQCCQEWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQADCQBmAgAABQ9uZXdQb3NpdGlvblNpemUJAQNhYnMBBRVhbW91bnRCYXNlQXNzZXRCb3VnaHQAAAQMb3Blbk5vdGlvbmFsCQEEbXVsZAIFB19hbW91bnQFCV9sZXZlcmFnZQQNJHQwMzYyMzEzNjM0NwkBI2dldFBvc2l0aW9uTm90aW9uYWxBbmRVbnJlYWxpemVkUG5sAgkApQgBCAUBaQZjYWxsZXIFD1BOTF9PUFRJT05fU1BPVAQTb2xkUG9zaXRpb25Ob3Rpb25hbAgFDSR0MDM2MjMxMzYzNDcCXzEEDXVucmVhbGl6ZWRQbmwIBQ0kdDAzNjIzMTM2MzQ3Al8yAwkAZgIFE29sZFBvc2l0aW9uTm90aW9uYWwFDG9wZW5Ob3Rpb25hbAkAAgECLlVzZSBkZWNyZWFzZVBvc2l0aW9uIHRvIGRlY3JlYXNlIHBvc2l0aW9uIHNpemUJAAIBAhRDbG9zZSBwb3NpdGlvbiBmaXJzdAQPbmV3UG9zaXRpb25TaXplCAUNJHQwMzQxNDkzNjUzOAJfMQQXbmV3UG9zaXRpb25SZW1haW5NYXJnaW4IBQ0kdDAzNDE0OTM2NTM4Al8yBBduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDM0MTQ5MzY1MzgCXzMEFG5ld1Bvc2l0aW9uTGF0ZXN0Q1BGCAUNJHQwMzQxNDkzNjUzOAJfNAQVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwMzQxNDkzNjUzOAJfNQQWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFDSR0MDM0MTQ5MzY1MzgCXzYEFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQ0kdDAzNDE0OTM2NTM4Al83BBdjdW11bGF0aXZlTm90aW9uYWxBZnRlcggFDSR0MDM0MTQ5MzY1MzgCXzgEGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIIBQ0kdDAzNDE0OTM2NTM4Al85BA50b3RhbExvbmdBZnRlcggFDSR0MDM0MTQ5MzY1MzgDXzEwBA90b3RhbFNob3J0QWZ0ZXIIBQ0kdDAzNDE0OTM2NTM4A18xMQQMZmVlVG9TdGFrZXJzCQBpAgUJZmVlQW1vdW50AAIEDmZlZVRvSW5zdXJhbmNlCQBlAgUJZmVlQW1vdW50BQxmZWVUb1N0YWtlcnMEBXN0YWtlCQD8BwQJARFxdW90ZUFzc2V0U3Rha2luZwACDmxvY2tOZXV0cmlub1NQCQDMCAIJAKUIAQkBDnN0YWtpbmdBZGRyZXNzAAkAzAgCBQhBTExfRkVFUwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAFB19hbW91bnQFA25pbAMJAAACBQVzdGFrZQUFc3Rha2UEEGRlcG9zaXRJbnN1cmFuY2UJAPwHBAkBEGluc3VyYW5jZUFkZHJlc3MAAgdkZXBvc2l0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQpxdW90ZUFzc2V0AAUOZmVlVG9JbnN1cmFuY2UFA25pbAMJAAACBRBkZXBvc2l0SW5zdXJhbmNlBRBkZXBvc2l0SW5zdXJhbmNlBAlub3RpZnlGZWUJAPwHBAkBDG1pbmVyQWRkcmVzcwACCm5vdGlmeUZlZXMJAMwIAgkApQgBCAUBaQZjYWxsZXIJAMwIAgUJZmVlQW1vdW50BQNuaWwFA25pbAMJAAACBQlub3RpZnlGZWUFCW5vdGlmeUZlZQQObm90aWZ5Tm90aW9uYWwJAPwHBAkBDG1pbmVyQWRkcmVzcwACDm5vdGlmeU5vdGlvbmFsCQDMCAIJAKUIAQgFAWkGY2FsbGVyCQDMCAIFF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsBQNuaWwFA25pbAMJAAACBQ5ub3RpZnlOb3Rpb25hbAUObm90aWZ5Tm90aW9uYWwJAM4IAgkAzggCCQDOCAIJAQ51cGRhdGVQb3NpdGlvbgUJAKUIAQgFAWkGY2FsbGVyBQ9uZXdQb3NpdGlvblNpemUFF25ld1Bvc2l0aW9uUmVtYWluTWFyZ2luBRduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAUUbmV3UG9zaXRpb25MYXRlc3RDUEYJAQl1cGRhdGVBbW0HBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyBRlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyBQ50b3RhbExvbmdBZnRlcgUPdG90YWxTaG9ydEFmdGVyCQELdHJhbnNmZXJGZWUBBQxmZWVUb1N0YWtlcnMJAQ11cGRhdGVCYWxhbmNlAQkAZAIJAQhjYmFsYW5jZQAFB19hbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJYWRkTWFyZ2luAAQKX3Jhd0Ftb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQDAwMDCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQJAQpxdW90ZUFzc2V0AAYJAQEhAQkBE3JlcXVpcmVPcGVuUG9zaXRpb24BCQClCAEIBQFpBmNhbGxlcgYJAQEhAQkBC2luaXRpYWxpemVkAAYJAQZwYXVzZWQACQACAQIcSW52YWxpZCBhZGRNYXJnaW4gcGFyYW1ldGVycwQJZmVlQW1vdW50CQEEbXVsZAIFCl9yYXdBbW91bnQJAQNmZWUABAdfYW1vdW50CQBlAgUKX3Jhd0Ftb3VudAUJZmVlQW1vdW50BA0kdDAzODA5NDM4MjQ2CQELZ2V0UG9zaXRpb24BCQClCAEIBQFpBmNhbGxlcgQPb2xkUG9zaXRpb25TaXplCAUNJHQwMzgwOTQzODI0NgJfMQQRb2xkUG9zaXRpb25NYXJnaW4IBQ0kdDAzODA5NDM4MjQ2Al8yBBdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDM4MDk0MzgyNDYCXzMEFG9sZFBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwMzgwOTQzODI0NgJfNAQMZmVlVG9TdGFrZXJzCQBpAgUJZmVlQW1vdW50AAIEDmZlZVRvSW5zdXJhbmNlCQBlAgUJZmVlQW1vdW50BQxmZWVUb1N0YWtlcnMEBXN0YWtlCQD8BwQJARFxdW90ZUFzc2V0U3Rha2luZwACDmxvY2tOZXV0cmlub1NQCQDMCAIJAKUIAQkBDnN0YWtpbmdBZGRyZXNzAAkAzAgCBQhBTExfRkVFUwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAFB19hbW91bnQFA25pbAMJAAACBQVzdGFrZQUFc3Rha2UEEGRlcG9zaXRJbnN1cmFuY2UJAPwHBAkBEGluc3VyYW5jZUFkZHJlc3MAAgdkZXBvc2l0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQpxdW90ZUFzc2V0AAUOZmVlVG9JbnN1cmFuY2UFA25pbAMJAAACBRBkZXBvc2l0SW5zdXJhbmNlBRBkZXBvc2l0SW5zdXJhbmNlBAlub3RpZnlGZWUJAPwHBAkBDG1pbmVyQWRkcmVzcwACCm5vdGlmeUZlZXMJAMwIAgkApQgBCAUBaQZjYWxsZXIJAMwIAgUJZmVlQW1vdW50BQNuaWwFA25pbAMJAAACBQlub3RpZnlGZWUFCW5vdGlmeUZlZQkAzggCCQDOCAIJAQ51cGRhdGVQb3NpdGlvbgUJAKUIAQgFAWkGY2FsbGVyBQ9vbGRQb3NpdGlvblNpemUJAGQCBRFvbGRQb3NpdGlvbk1hcmdpbgUHX2Ftb3VudAUXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwFFG9sZFBvc2l0aW9uTHN0VXBkQ1BGCQELdHJhbnNmZXJGZWUBBQxmZWVUb1N0YWtlcnMJAQ11cGRhdGVCYWxhbmNlAQkAZAIJAQhjYmFsYW5jZQAFB19hbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMcmVtb3ZlTWFyZ2luAQdfYW1vdW50AwMDAwkAZwIAAAUHX2Ftb3VudAYJAQEhAQkBE3JlcXVpcmVPcGVuUG9zaXRpb24BCQClCAEIBQFpBmNhbGxlcgYJAQEhAQkBC2luaXRpYWxpemVkAAYJAQZwYXVzZWQACQACAQIfSW52YWxpZCByZW1vdmVNYXJnaW4gcGFyYW1ldGVycwQNJHQwMzkyOTUzOTQ0NwkBC2dldFBvc2l0aW9uAQkApQgBCAUBaQZjYWxsZXIED29sZFBvc2l0aW9uU2l6ZQgFDSR0MDM5Mjk1Mzk0NDcCXzEEEW9sZFBvc2l0aW9uTWFyZ2luCAUNJHQwMzkyOTUzOTQ0NwJfMgQXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDAzOTI5NTM5NDQ3Al8zBBRvbGRQb3NpdGlvbkxzdFVwZENQRggFDSR0MDM5Mjk1Mzk0NDcCXzQEC21hcmdpbkRlbHRhCQEBLQEFB19hbW91bnQEDSR0MDM5NDg0Mzk2NjMJASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BAUPb2xkUG9zaXRpb25TaXplBRFvbGRQb3NpdGlvbk1hcmdpbgUUb2xkUG9zaXRpb25Mc3RVcGRDUEYFC21hcmdpbkRlbHRhBAxyZW1haW5NYXJnaW4IBQ0kdDAzOTQ4NDM5NjYzAl8xBAdiYWREZWJ0CAUNJHQwMzk0ODQzOTY2MwJfMgMJAQIhPQIFB2JhZERlYnQAAAkAAgECHUludmFsaWQgcmVtb3ZlZCBtYXJnaW4gYW1vdW50BAttYXJnaW5SYXRpbwkBD2NhbGNNYXJnaW5SYXRpbwMFDHJlbWFpbk1hcmdpbgUHYmFkRGVidAUXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwDCQEBIQEJARZyZXF1aXJlTW9yZU1hcmdpblJhdGlvAwULbWFyZ2luUmF0aW8JAQ9pbml0TWFyZ2luUmF0aW8ABgkAAgEJAKwCAgkArAICCQCsAgICGVRvbyBtdWNoIG1hcmdpbiByZW1vdmVkOiAJAKQDAQULbWFyZ2luUmF0aW8CAyA8IAkApAMBCQEPaW5pdE1hcmdpblJhdGlvAAQHdW5zdGFrZQkA/AcECQERcXVvdGVBc3NldFN0YWtpbmcAAg51bmxvY2tOZXV0cmlubwkAzAgCBQdfYW1vdW50CQDMCAIJANgEAQkBCnF1b3RlQXNzZXQABQNuaWwFA25pbAMJAAACBQd1bnN0YWtlBQd1bnN0YWtlCQDOCAIJAM4IAgkBDnVwZGF0ZVBvc2l0aW9uBQkApQgBCAUBaQZjYWxsZXIFD29sZFBvc2l0aW9uU2l6ZQUMcmVtYWluTWFyZ2luBRdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAkBH2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24BBQ9vbGRQb3NpdGlvblNpemUJAQh3aXRoZHJhdwIIBQFpBmNhbGxlcgUHX2Ftb3VudAkBDXVwZGF0ZUJhbGFuY2UBCQBlAgkBCGNiYWxhbmNlAAUHX2Ftb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ1jbG9zZVBvc2l0aW9uAAMDAwkBASEBCQETcmVxdWlyZU9wZW5Qb3NpdGlvbgEJAKUIAQgFAWkGY2FsbGVyBgkBASEBCQELaW5pdGlhbGl6ZWQABgkBBnBhdXNlZAAJAAIBAiBJbnZhbGlkIGNsb3NlUG9zaXRpb24gcGFyYW1ldGVycwQNJHQwNDA3NTk0MTE0MwkBFWludGVybmFsQ2xvc2VQb3NpdGlvbgEJAKUIAQgFAWkGY2FsbGVyBAJ4MQgFDSR0MDQwNzU5NDExNDMCXzEED3Bvc2l0aW9uQmFkRGVidAgFDSR0MDQwNzU5NDExNDMCXzIEC3JlYWxpemVkUG5sCAUNJHQwNDA3NTk0MTE0MwJfMwQNbWFyZ2luVG9WYXVsdAgFDSR0MDQwNzU5NDExNDMCXzQEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA0MDc1OTQxMTQzAl81BBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA0MDc1OTQxMTQzAl82BBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwNDA3NTk0MTE0MwJfNwQXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIIBQ0kdDA0MDc1OTQxMTQzAl84BBlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyCAUNJHQwNDA3NTk0MTE0MwJfOQQCeDIIBQ0kdDA0MDc1OTQxMTQzA18xMAQOdG90YWxMb25nQWZ0ZXIIBQ0kdDA0MDc1OTQxMTQzA18xMQQPdG90YWxTaG9ydEFmdGVyCAUNJHQwNDA3NTk0MTE0MwNfMTIDCQBmAgUPcG9zaXRpb25CYWREZWJ0AAAJAAIBAiZVbmFibGUgdG8gY2xvc2UgcG9zaXRpb24gd2l0aCBiYWQgZGVidAQOd2l0aGRyYXdBbW91bnQJAQNhYnMBBQ1tYXJnaW5Ub1ZhdWx0BAphbW1CYWxhbmNlCQBlAgkBCGNiYWxhbmNlAAUOd2l0aGRyYXdBbW91bnQEDSR0MDQxMzUyNDE0OTQDCQBmAgAABQphbW1CYWxhbmNlCQCUCgIAAAkBA2FicwEFCmFtbUJhbGFuY2UJAJQKAgUKYW1tQmFsYW5jZQAABA1hbW1OZXdCYWxhbmNlCAUNJHQwNDEzNTI0MTQ5NAJfMQQQZ2V0RnJvbUluc3VyYW5jZQgFDSR0MDQxMzUyNDE0OTQCXzIEAXgDCQBmAgUQZ2V0RnJvbUluc3VyYW5jZQAABBF3aXRoZHJhd0luc3VyYW5jZQkA/AcECQEQaW5zdXJhbmNlQWRkcmVzcwACCHdpdGhkcmF3CQDMCAIFEGdldEZyb21JbnN1cmFuY2UFA25pbAUDbmlsAwkAAAIFEXdpdGhkcmF3SW5zdXJhbmNlBRF3aXRoZHJhd0luc3VyYW5jZQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwDCQAAAgUBeAUBeAQHdW5zdGFrZQkA/AcECQERcXVvdGVBc3NldFN0YWtpbmcAAg51bmxvY2tOZXV0cmlubwkAzAgCCQBlAgUOd2l0aGRyYXdBbW91bnQFEGdldEZyb21JbnN1cmFuY2UJAMwIAgkA2AQBCQEKcXVvdGVBc3NldAAFA25pbAUDbmlsAwkAAAIFB3Vuc3Rha2UFB3Vuc3Rha2UEDm5vdGlmeU5vdGlvbmFsCQD8BwQJAQxtaW5lckFkZHJlc3MAAg5ub3RpZnlOb3Rpb25hbAkAzAgCCQClCAEIBQFpBmNhbGxlcgkAzAgCAAAFA25pbAUDbmlsAwkAAAIFDm5vdGlmeU5vdGlvbmFsBQ5ub3RpZnlOb3Rpb25hbAkAzggCCQDOCAIJAM4IAgkBDmRlbGV0ZVBvc2l0aW9uAQkApQgBCAUBaQZjYWxsZXIJAQl1cGRhdGVBbW0HBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyBRlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyBQ50b3RhbExvbmdBZnRlcgUPdG90YWxTaG9ydEFmdGVyCQEId2l0aGRyYXcCCAUBaQZjYWxsZXIFDndpdGhkcmF3QW1vdW50CQENdXBkYXRlQmFsYW5jZQEFDWFtbU5ld0JhbGFuY2UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJbGlxdWlkYXRlAQdfdHJhZGVyBA9zcG90TWFyZ2luUmF0aW8JARZnZXRNYXJnaW5SYXRpb0J5T3B0aW9uAgUHX3RyYWRlcgUPUE5MX09QVElPTl9TUE9UBAttYXJnaW5SYXRpbwMJARZpc092ZXJGbHVjdHVhdGlvbkxpbWl0AAQRb3JhY2xlTWFyZ2luUmF0aW8JARZnZXRNYXJnaW5SYXRpb0J5T3B0aW9uAgUHX3RyYWRlcgURUE5MX09QVElPTl9PUkFDTEUJAQR2bWF4AgUPc3BvdE1hcmdpblJhdGlvBRFvcmFjbGVNYXJnaW5SYXRpbwUPc3BvdE1hcmdpblJhdGlvAwMDAwkBASEBCQEWcmVxdWlyZU1vcmVNYXJnaW5SYXRpbwMFC21hcmdpblJhdGlvCQEWbWFpbnRlbmFuY2VNYXJnaW5SYXRpbwAHBgkBASEBCQETcmVxdWlyZU9wZW5Qb3NpdGlvbgEFB190cmFkZXIGCQEBIQEJAQtpbml0aWFsaXplZAAGCQEGcGF1c2VkAAkAAgECE1VuYWJsZSB0byBsaXF1aWRhdGUEDSR0MDQzMTg0NDM2MDAJARVpbnRlcm5hbENsb3NlUG9zaXRpb24BBQdfdHJhZGVyBAJ4MQgFDSR0MDQzMTg0NDM2MDACXzEEB2JhZERlYnQIBQ0kdDA0MzE4NDQzNjAwAl8yBAJ4MggFDSR0MDQzMTg0NDM2MDACXzMEAngzCAUNJHQwNDMxODQ0MzYwMAJfNAQWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFDSR0MDQzMTg0NDM2MDACXzUEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDQzMTg0NDM2MDACXzYEFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQ0kdDA0MzE4NDQzNjAwAl83BBdjdW11bGF0aXZlTm90aW9uYWxBZnRlcggFDSR0MDQzMTg0NDM2MDACXzgEGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIIBQ0kdDA0MzE4NDQzNjAwAl85BBlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50CAUNJHQwNDMxODQ0MzYwMANfMTAEDnRvdGFsTG9uZ0FmdGVyCAUNJHQwNDMxODQ0MzYwMANfMTEED3RvdGFsU2hvcnRBZnRlcggFDSR0MDQzMTg0NDM2MDADXzEyBBJsaXF1aWRhdGlvblBlbmFsdHkJAQRtdWxkAgUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAkBE2xpcXVpZGF0aW9uRmVlUmF0aW8ABA9mZWVUb0xpcXVpZGF0b3IJAGkCBRJsaXF1aWRhdGlvblBlbmFsdHkAAgQOZmVlVG9JbnN1cmFuY2UJAGUCBRJsaXF1aWRhdGlvblBlbmFsdHkFD2ZlZVRvTGlxdWlkYXRvcgQKYW1tQmFsYW5jZQkAZQIJAQhjYmFsYW5jZQAFEmxpcXVpZGF0aW9uUGVuYWx0eQQNJHQwNDM5OTg0NDEzMwMJAGYCAAAFCmFtbUJhbGFuY2UJAJQKAgAACQEDYWJzAQUKYW1tQmFsYW5jZQkAlAoCBQphbW1CYWxhbmNlAAAEDW5ld0FtbUJhbGFuY2UIBQ0kdDA0Mzk5ODQ0MTMzAl8xBBF0YWtlRnJvbUluc3VyYW5jZQgFDSR0MDQzOTk4NDQxMzMCXzIEAXgDCQBmAgURdGFrZUZyb21JbnN1cmFuY2UAAAQRd2l0aGRyYXdJbnN1cmFuY2UJAPwHBAkBEGluc3VyYW5jZUFkZHJlc3MAAgh3aXRoZHJhdwkAzAgCBRF0YWtlRnJvbUluc3VyYW5jZQUDbmlsBQNuaWwDCQAAAgURd2l0aGRyYXdJbnN1cmFuY2UFEXdpdGhkcmF3SW5zdXJhbmNlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAMJAAACBQF4BQF4BAd1bnN0YWtlCQD8BwQJARFxdW90ZUFzc2V0U3Rha2luZwACDnVubG9ja05ldXRyaW5vCQDMCAIJAGUCBRJsaXF1aWRhdGlvblBlbmFsdHkFEXRha2VGcm9tSW5zdXJhbmNlCQDMCAIJANgEAQkBCnF1b3RlQXNzZXQABQNuaWwFA25pbAMJAAACBQd1bnN0YWtlBQd1bnN0YWtlBBBkZXBvc2l0SW5zdXJhbmNlCQD8BwQJARBpbnN1cmFuY2VBZGRyZXNzAAIHZGVwb3NpdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAFDmZlZVRvSW5zdXJhbmNlBQNuaWwDCQAAAgUQZGVwb3NpdEluc3VyYW5jZQUQZGVwb3NpdEluc3VyYW5jZQQObm90aWZ5Tm90aW9uYWwJAPwHBAkBDG1pbmVyQWRkcmVzcwACDm5vdGlmeU5vdGlvbmFsCQDMCAIFB190cmFkZXIJAMwIAgAABQNuaWwFA25pbAMJAAACBQ5ub3RpZnlOb3Rpb25hbAUObm90aWZ5Tm90aW9uYWwJAM4IAgkAzggCCQDOCAIJAQ5kZWxldGVQb3NpdGlvbgEFB190cmFkZXIJAQl1cGRhdGVBbW0HBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyBRlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyBQ50b3RhbExvbmdBZnRlcgUPdG90YWxTaG9ydEFmdGVyCQEId2l0aGRyYXcCCAUBaQZjYWxsZXIFD2ZlZVRvTGlxdWlkYXRvcgkBDXVwZGF0ZUJhbGFuY2UBBQ1uZXdBbW1CYWxhbmNlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnBheUZ1bmRpbmcABBVmdW5kaW5nQmxvY2tUaW1lc3RhbXAJARluZXh0RnVuZGluZ0Jsb2NrVGltZXN0YW1wAAMDAwkAZgIFFWZ1bmRpbmdCbG9ja1RpbWVzdGFtcAgFCWxhc3RCbG9jawl0aW1lc3RhbXAGCQEBIQEJAQtpbml0aWFsaXplZAAGCQEGcGF1c2VkAAkAAgEJAKwCAgkArAICCQCsAgICIUludmFsaWQgZnVuZGluZyBibG9jayB0aW1lc3RhbXA6IAkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAIDIDwgCQCkAwEFFWZ1bmRpbmdCbG9ja1RpbWVzdGFtcAQPdW5kZXJseWluZ1ByaWNlCQESZ2V0T3JhY2xlVHdhcFByaWNlAAQNc3BvdFR3YXBQcmljZQkBEGdldFR3YXBTcG90UHJpY2UABAdwcmVtaXVtCQBlAgUNc3BvdFR3YXBQcmljZQUPdW5kZXJseWluZ1ByaWNlBA0kdDA0NTYyNzQ2OTYyAwMJAAACCQEWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQAAAAYJAAACCQEVdG90YWxMb25nUG9zaXRpb25TaXplAAAACQCUCgIAAAAAAwkAZgIAAAUHcHJlbWl1bQQUc2hvcnRQcmVtaXVtRnJhY3Rpb24JAQRkaXZkAgkBBG11bGQCBQdwcmVtaXVtCQEUZnVuZGluZ1BlcmlvZERlY2ltYWwABQdPTkVfREFZBBNsb25nUHJlbWl1bUZyYWN0aW9uCQEEZGl2ZAIJAQRtdWxkAgUUc2hvcnRQcmVtaXVtRnJhY3Rpb24JARZ0b3RhbFNob3J0UG9zaXRpb25TaXplAAkBFXRvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQAJAJQKAgUUc2hvcnRQcmVtaXVtRnJhY3Rpb24FE2xvbmdQcmVtaXVtRnJhY3Rpb24EE2xvbmdQcmVtaXVtRnJhY3Rpb24JAQRkaXZkAgkBBG11bGQCBQdwcmVtaXVtCQEUZnVuZGluZ1BlcmlvZERlY2ltYWwABQdPTkVfREFZBBRzaG9ydFByZW1pdW1GcmFjdGlvbgkBBGRpdmQCCQEEbXVsZAIFE2xvbmdQcmVtaXVtRnJhY3Rpb24JARV0b3RhbExvbmdQb3NpdGlvblNpemUACQEWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQAJAJQKAgUUc2hvcnRQcmVtaXVtRnJhY3Rpb24FE2xvbmdQcmVtaXVtRnJhY3Rpb24EFHNob3J0UHJlbWl1bUZyYWN0aW9uCAUNJHQwNDU2Mjc0Njk2MgJfMQQTbG9uZ1ByZW1pdW1GcmFjdGlvbggFDSR0MDQ1NjI3NDY5NjICXzIJAQ11cGRhdGVGdW5kaW5nBQkAZAIFFWZ1bmRpbmdCbG9ja1RpbWVzdGFtcAkBFGZ1bmRpbmdQZXJpb2RTZWNvbmRzAAkAZAIJASNsYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgAFE2xvbmdQcmVtaXVtRnJhY3Rpb24JAGQCCQEkbGF0ZXN0U2hvcnRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAAUUc2hvcnRQcmVtaXVtRnJhY3Rpb24JAQRkaXZkAgUTbG9uZ1ByZW1pdW1GcmFjdGlvbgUPdW5kZXJseWluZ1ByaWNlCQEEZGl2ZAIFFHNob3J0UHJlbWl1bUZyYWN0aW9uBQ91bmRlcmx5aW5nUHJpY2UBaQEFdl9nZXQBB190cmFkZXIEDSR0MDQ3MzM3NDczOTAJARVpbnRlcm5hbENsb3NlUG9zaXRpb24BBQdfdHJhZGVyBAJ4MQgFDSR0MDQ3MzM3NDczOTACXzEEAngyCAUNJHQwNDczMzc0NzM5MAJfMgQCeDMIBQ0kdDA0NzMzNzQ3MzkwAl8zBAJ4NAgFDSR0MDQ3MzM3NDczOTACXzQJAAIBCQCsAgIJAKwCAgkArAICCQEBcwEFAngyCQEBcwEFAngzCQEBcwEFAng0CQEBcwEJAQ5nZXRNYXJnaW5SYXRpbwEFB190cmFkZXIBaQEndmlld19jYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50AQdfdHJhZGVyBA0kdDA0NzUzNzQ3NjQ4CQELZ2V0UG9zaXRpb24BBQdfdHJhZGVyBAxwb3NpdGlvblNpemUIBQ0kdDA0NzUzNzQ3NjQ4Al8xBA5wb3NpdGlvbk1hcmdpbggFDSR0MDQ3NTM3NDc2NDgCXzIEA3BvbggFDSR0MDQ3NTM3NDc2NDgCXzMEEXBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwNDc1Mzc0NzY0OAJfNAQNJHQwNDc2NTM0Nzc1NAkBI2dldFBvc2l0aW9uTm90aW9uYWxBbmRVbnJlYWxpemVkUG5sAgUHX3RyYWRlcgUPUE5MX09QVElPTl9TUE9UBBBwb3NpdGlvbk5vdGlvbmFsCAUNJHQwNDc2NTM0Nzc1NAJfMQQNdW5yZWFsaXplZFBubAgFDSR0MDQ3NjUzNDc3NTQCXzIEDSR0MDQ3NzU5NDc5NDEJASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BAUMcG9zaXRpb25TaXplBQ5wb3NpdGlvbk1hcmdpbgURcG9zaXRpb25Mc3RVcGRDUEYFDXVucmVhbGl6ZWRQbmwEDHJlbWFpbk1hcmdpbggFDSR0MDQ3NzU5NDc5NDECXzEEB2JhZERlYnQIBQ0kdDA0Nzc1OTQ3OTQxAl8yBA5mdW5kaW5nUGF5bWVudAgFDSR0MDQ3NzU5NDc5NDECXzMJAAIBCQCsAgIJAKwCAgkBAXMBBQxyZW1haW5NYXJnaW4JAQFzAQUOZnVuZGluZ1BheW1lbnQJAQFzAQkBDmdldE1hcmdpblJhdGlvAQUHX3RyYWRlcgFpAQ5mb3JjZU1vdmVBc3NldAIHX3RyYWRlcgdfYW1vdW50AwMJAQIhPQIJAKcIAQkBDmFkbWluUHVibGljS2V5AAgFAWkGY2FsbGVyBgkAZgIAAAUHX2Ftb3VudAkAAgECIUludmFsaWQgZm9yY2VNb3ZlQXNzZXQgcGFyYW1ldGVycwQHdW5zdGFrZQkA/AcECQERcXVvdGVBc3NldFN0YWtpbmcAAg51bmxvY2tOZXV0cmlubwkAzAgCBQdfYW1vdW50CQDMCAIJANgEAQkBCnF1b3RlQXNzZXQABQNuaWwFA25pbAMJAAACBQd1bnN0YWtlBQd1bnN0YWtlCQDOCAIJAQh3aXRoZHJhdwIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB190cmFkZXIFB19hbW91bnQJAQ11cGRhdGVCYWxhbmNlAQkAZQIJAQhjYmFsYW5jZQAFB19hbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQEOYWRtaW5QdWJsaWNLZXkAsZ18Ww==", "height": 2169658, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let a = "k_ora_key"
5+
6+let b = "k_ora_block_key"
7+
8+let c = "k_ora"
9+
10+let d = "k_balance"
11+
12+let e = "k_positionSize"
13+
14+let f = "k_positionMargin"
15+
16+let g = "k_positionOpenNotional"
17+
18+let h = "k_positionFraction"
19+
20+let i = "k_initialized"
21+
22+let j = "k_paused"
23+
24+let k = "k_fee"
25+
26+let l = "k_fundingPeriod"
27+
28+let m = "k_initMarginRatio"
29+
30+let n = "k_mmr"
31+
32+let o = "k_liquidationFeeRatio"
33+
34+let p = "k_spreadLimit"
35+
36+let q = "k_maxPriceImpact"
37+
38+let r = "k_lastDataStr"
39+
40+let s = "k_lastMinuteId"
41+
42+let t = "k_twapDataLastCumulativePrice"
43+
44+let u = "k_twapDataLastPrice"
45+
46+let v = "k_twapDataPreviousMinuteId"
47+
48+let w = "k_latestLongPremiumFraction"
49+
50+let x = "k_latestShortPremiumFraction"
51+
52+let y = "k_nextFundingBlockMinTimestamp"
53+
54+let z = "k_longFundingRate"
55+
56+let A = "k_shortFundingRate"
57+
58+let B = "k_qtAstR"
59+
60+let C = "k_bsAstR"
61+
62+let D = "k_totalPositionSize"
63+
64+let E = "k_totalLongPositionSize"
65+
66+let F = "k_totalShortPositionSize"
67+
68+let G = "k_cumulativeNotional"
69+
70+let H = "k_openInterestNotional"
71+
72+let I = "k_coordinatorAddress"
73+
74+let J = "k_insurance_address"
75+
76+let K = "k_admin_address"
77+
78+let L = "k_admin_public_key"
79+
80+let M = "k_quote_asset"
81+
82+let N = "k_quote_staking"
83+
84+let O = "k_staking_address"
85+
86+let P = "k_miner_address"
87+
88+func Q () = valueOrErrorMessage(addressFromString(getStringValue(this, I)), "Coordinator not set")
89+
90+
91+func R () = addressFromString(getStringValue(Q(), K))
92+
93+
94+func S () = fromBase58String(getStringValue(Q(), L))
95+
96+
97+func T () = fromBase58String(getStringValue(Q(), M))
98+
99+
100+func U () = valueOrErrorMessage(addressFromString(getStringValue(Q(), N)), "Quote asset staking not set")
101+
102+
103+func V () = valueOrErrorMessage(addressFromString(getStringValue(Q(), O)), "Insurance not set")
104+
105+
106+func W () = valueOrErrorMessage(addressFromString(getStringValue(Q(), J)), "Insurance not set")
107+
108+
109+func X () = valueOrErrorMessage(addressFromString(getStringValue(Q(), P)), "Insurance not set")
110+
111+
112+let Y = 1
113+
114+let Z = 2
115+
116+let aa = 15
117+
118+let ab = 15
119+
120+let ac = 1000
121+
122+let ad = (1 * (((((10 * 10) * 10) * 10) * 10) * 10))
123+
124+let ae = (86400 * ad)
125+
126+let af = 100
127+
128+let ag = 1
129+
130+let ah = 2
131+
132+func ai (aj) = (toString(aj) + ",")
133+
134+
135+func ak (aj,al) = fraction(aj, ad, al, HALFEVEN)
136+
137+
138+func am (aj,al) = fraction(aj, al, ad, HALFEVEN)
139+
140+
141+func an (aj) = if ((aj > 0))
142+ then aj
143+ else -(aj)
144+
145+
146+func ao (aj,al) = if ((aj >= al))
147+ then aj
148+ else al
149+
150+
151+func ap (aq,ar) = ((aq + "_") + ar)
152+
153+
154+func as (at) = {
155+ func au (av,aw) = ((av + aw) + ",")
156+
157+ let ax = {
158+ let ay = at
159+ let az = size(ay)
160+ let aA = ""
161+ func aB (aC,aD) = if ((aD >= az))
162+ then aC
163+ else au(aC, ay[aD])
164+
165+ func aE (aC,aD) = if ((aD >= az))
166+ then aC
167+ else throw("List size exceeds 20")
168+
169+ aE(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aA, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
170+ }
171+ let aF = dropRight(ax, 1)
172+ let aG = if ((take(aF, 1) == ","))
173+ then drop(aF, 1)
174+ else aF
175+ aG
176+ }
177+
178+
179+func aH (aI) = split(aI, ",")
180+
181+
182+func aJ (at,aK,aL) = if ((size(at) > aK))
183+ then (removeByIndex(at, 0) :+ aL)
184+ else (at :+ aL)
185+
186+
187+func aM (aN) = valueOrErrorMessage(getInteger(this, aN), ("no value for " + aN))
188+
189+
190+func aO () = aM(d)
191+
192+
193+func aP () = aM(k)
194+
195+
196+func aQ () = aM(m)
197+
198+
199+func aR () = aM(B)
200+
201+
202+func aS () = aM(C)
203+
204+
205+func aT () = aM(D)
206+
207+
208+func aU () = aM(G)
209+
210+
211+func aV () = aM(H)
212+
213+
214+func aW () = aM(y)
215+
216+
217+func aX () = aM(l)
218+
219+
220+func aY () = (aX() * ad)
221+
222+
223+func aZ () = (aX() * ac)
224+
225+
226+func ba () = aM(n)
227+
228+
229+func bb () = aM(o)
230+
231+
232+func bc () = aM(p)
233+
234+
235+func bd () = aM(q)
236+
237+
238+func be () = aM(w)
239+
240+
241+func bf () = aM(x)
242+
243+
244+func bg () = aM(F)
245+
246+
247+func bh () = aM(E)
248+
249+
250+func bi (bj,bk,bl) = {
251+ let bm = (bj - bk)
252+ if (if (bl)
253+ then (0 > bm)
254+ else false)
255+ then throw("Invalid margin")
256+ else if (if (!(bl))
257+ then (bm >= 0)
258+ else false)
259+ then throw("Invalid margin")
260+ else true
261+ }
262+
263+
264+func bn (bo) = if ((bo == 0))
265+ then throw("Should not be called with _positionSize == 0")
266+ else if ((bo > 0))
267+ then be()
268+ else bf()
269+
270+
271+func bp (bq) = {
272+ let br = getInteger(this, ap(e, bq))
273+ let bs = br
274+ if ($isInstanceOf(bs, "Int"))
275+ then {
276+ let bt = bs
277+ $Tuple4(bt, getIntegerValue(this, ap(f, bq)), getIntegerValue(this, ap(g, bq)), getIntegerValue(this, ap(h, bq)))
278+ }
279+ else $Tuple4(0, 0, 0, 0)
280+ }
281+
282+
283+func bu (bq) = if ((bp(bq)._1 == 0))
284+ then throw("No open position")
285+ else true
286+
287+
288+func bv () = valueOrElse(getBoolean(this, i), false)
289+
290+
291+func bw () = valueOrElse(getBoolean(this, j), false)
292+
293+
294+func bx (by,bz,bA) = if (by)
295+ then {
296+ let bB = (aS() - bA)
297+ if ((0 >= bB))
298+ then throw("Tx lead to base asset reserve <= 0, revert")
299+ else $Tuple4((aR() + bz), bB, (aT() + bA), (aU() + bz))
300+ }
301+ else {
302+ let bC = (aR() - bz)
303+ if ((0 >= bC))
304+ then throw("Tx lead to base quote reserve <= 0, revert")
305+ else $Tuple4(bC, (aS() + bA), (aT() - bA), (aU() - bz))
306+ }
307+
308+
309+func bD (by,bz) = {
310+ let bE = aR()
311+ let bF = aS()
312+ let bG = ak(bE, bF)
313+ let bH = am(bz, bG)
314+ let aN = am(bE, bF)
315+ let bI = if (by)
316+ then (bE + bz)
317+ else (bE - bz)
318+ let bJ = ak(aN, bI)
319+ let bK = an((bJ - bF))
320+ let bL = if (by)
321+ then bK
322+ else -(bK)
323+ let bM = ((bH - bK) / bH)
324+ let bN = bd()
325+ if ((bM > bN))
326+ then throw(((("Price impact " + toString(bM)) + " > max price impact ") + toString(bN)))
327+ else {
328+ let bO = bx(by, bz, bK)
329+ let bP = bO._1
330+ let bQ = bO._2
331+ let bR = bO._3
332+ let bS = bO._4
333+ $Tuple5(bL, bP, bQ, bR, bS)
334+ }
335+ }
336+
337+
338+func bT (bU,bV,bW,bX) = {
339+ let bY = if ((bU != 0))
340+ then {
341+ let bZ = bn(bU)
342+ am((bZ - bW), bU)
343+ }
344+ else 0
345+ let ca = ((bX - bY) + bV)
346+ let cb = if ((0 > ca))
347+ then $Tuple2(0, an(ca))
348+ else $Tuple2(an(ca), 0)
349+ let cc = cb._1
350+ let cd = cb._2
351+ $Tuple3(cc, cd, bY)
352+ }
353+
354+
355+func ce (by,bA) = {
356+ let cf = aR()
357+ let cg = aS()
358+ if ((bA == 0))
359+ then throw("Invalid base asset amount")
360+ else {
361+ let aN = am(cf, cg)
362+ let ch = if (by)
363+ then (cg + bA)
364+ else (cg - bA)
365+ let ci = ak(aN, ch)
366+ let cj = an((ci - cf))
367+ let ck = bx(!(by), cj, bA)
368+ let bP = ck._1
369+ let bQ = ck._2
370+ let bR = ck._3
371+ let bS = ck._4
372+ $Tuple7(cj, bP, bQ, bR, bS, (bh() - (if (by)
373+ then an(bA)
374+ else 0)), (bg() - (if (!(by))
375+ then an(bA)
376+ else 0)))
377+ }
378+ }
379+
380+
381+func cl () = {
382+ let cm = valueOrErrorMessage(addressFromString(getStringValue(this, c)), "")
383+ let cn = getStringValue(this, a)
384+ let co = getStringValue(this, b)
385+ let cp = getIntegerValue(cm, cn)
386+ cp
387+ }
388+
389+
390+func cq () = {
391+ let cf = aR()
392+ let cg = aS()
393+ ak(cf, cg)
394+ }
395+
396+
397+func cr () = {
398+ let cs = cl()
399+ let ct = cq()
400+ (ak(an((cs - ct)), cs) > bc())
401+ }
402+
403+
404+func cu (bq,cv) = {
405+ let cw = bp(bq)
406+ let bt = cw._1
407+ let cx = cw._2
408+ let cy = cw._3
409+ let cz = cw._4
410+ let cA = an(bt)
411+ if ((cA == 0))
412+ then throw("Invalid position size")
413+ else {
414+ let cB = (0 > bt)
415+ let cC = if ((cv == ag))
416+ then {
417+ let cD = ce(!(cB), cA)
418+ let cE = cD._1
419+ let cF = cD._2
420+ let cG = cD._3
421+ let cH = cD._4
422+ cE
423+ }
424+ else am(cA, cl())
425+ let cI = if (cB)
426+ then (cy - cC)
427+ else (cC - cy)
428+ $Tuple2(cC, cI)
429+ }
430+ }
431+
432+
433+func cJ (cK,cL,cM) = ak((cK - cL), cM)
434+
435+
436+func cN (bq,cv) = {
437+ let cO = bp(bq)
438+ let bt = cO._1
439+ let cx = cO._2
440+ let cP = cO._3
441+ let cz = cO._4
442+ let cQ = cu(bq, cv)
443+ let cC = cQ._1
444+ let cI = cQ._2
445+ let cR = bT(bt, cx, cz, cI)
446+ let cc = cR._1
447+ let cd = cR._2
448+ cJ(cc, cd, cC)
449+ }
450+
451+
452+func cS (bq) = cN(bq, ag)
453+
454+
455+func cT (bq) = {
456+ let cU = bp(bq)
457+ let bt = cU._1
458+ let cx = cU._2
459+ let cy = cU._3
460+ let cz = cU._4
461+ let cV = cu(bq, ag)
462+ let cF = cV._1
463+ let cI = cV._2
464+ let cW = bT(bt, cx, cz, cI)
465+ let cc = cW._1
466+ let cd = cW._2
467+ let cX = -(bt)
468+ let cY = cI
469+ let cZ = -(cc)
470+ let da = ce((bt > 0), an(bt))
471+ let db = da._1
472+ let bI = da._2
473+ let bJ = da._3
474+ let dc = da._4
475+ let dd = da._5
476+ let de = da._6
477+ let df = da._7
478+ let dg = (aV() - cy)
479+ $Tuple12(cX, cd, cY, cZ, bI, bJ, dc, dd, dg, db, de, df)
480+ }
481+
482+
483+func dh () = {
484+ let di = ((lastBlock.timestamp / 1000) / 60)
485+ let dj = (di - aa)
486+ let dk = valueOrElse(getString(this, r), "")
487+ let dl = split(dk, ",")
488+ func dm (av,dn) = if ((dj >= parseIntValue(dn)))
489+ then (av :+ parseIntValue(dn))
490+ else av
491+
492+ let do = {
493+ let ay = dl
494+ let az = size(ay)
495+ let aA = nil
496+ func aB (aC,aD) = if ((aD >= az))
497+ then aC
498+ else dm(aC, ay[aD])
499+
500+ func aE (aC,aD) = if ((aD >= az))
501+ then aC
502+ else throw("List size exceeds 20")
503+
504+ aE(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aB(aA, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
505+ }
506+ let dp = if ((size(do) > 0))
507+ then max(do)
508+ else parseIntValue(dl[0])
509+ let dq = valueOrElse(getInteger(this, s), 0)
510+ let dr = valueOrElse(getInteger(this, ((t + "_") + toString(dq))), 0)
511+ let ds = valueOrElse(getInteger(this, ((u + "_") + toString(dq))), 0)
512+ let dt = (dr + ((di - dq) * ds))
513+ let du = valueOrElse(getInteger(this, ((t + "_") + toString(dp))), 0)
514+ let dv = valueOrElse(getInteger(this, ((u + "_") + toString(dp))), 0)
515+ let dw = (du + ((dj - dp) * dv))
516+ ((dt - dw) / aa)
517+ }
518+
519+
520+func dx (dy,dz,dA,dB,dC,dD,dE) = [IntegerEntry(m, dy), IntegerEntry(n, dz), IntegerEntry(o, dA), IntegerEntry(l, dB), IntegerEntry(k, dC), IntegerEntry(p, dD), IntegerEntry(q, dE)]
521+
522+
523+func dF (dG,dH,dI,dJ,dK) = [IntegerEntry(y, dG), IntegerEntry(w, dH), IntegerEntry(x, dI), IntegerEntry(z, dJ), IntegerEntry(A, dK)]
524+
525+
526+func dL (ar,dM,dN,dO,bZ) = [IntegerEntry(ap(e, ar), dM), IntegerEntry(ap(f, ar), dN), IntegerEntry(ap(g, ar), dO), IntegerEntry(ap(h, ar), bZ)]
527+
528+
529+func dP (dQ) = {
530+ let di = ((lastBlock.timestamp / 1000) / 60)
531+ let dR = valueOrElse(getInteger(this, s), 0)
532+ if ((dR > di))
533+ then throw("TWAP out-of-order")
534+ else {
535+ let dq = if ((dR == 0))
536+ then di
537+ else dR
538+ if ((di > dR))
539+ then {
540+ let dS = valueOrElse(getInteger(this, ((t + "_") + toString(dR))), 0)
541+ let dT = valueOrElse(getInteger(this, ((u + "_") + toString(dR))), dQ)
542+ let dU = (dS + ((di - dq) * dT))
543+ let dl = aJ(aH(valueOrElse(getString(this, r), "")), aa, toString(di))
544+[IntegerEntry(ap(t, toString(di)), dU), IntegerEntry(ap(u, toString(di)), dQ), IntegerEntry(ap(v, toString(di)), dR), IntegerEntry(s, di), StringEntry(r, as(dl))]
545+ }
546+ else {
547+ let dV = valueOrElse(getInteger(this, ap(v, toString(di))), 0)
548+ let dS = valueOrElse(getInteger(this, ap(t, toString(dV))), 0)
549+ let dT = valueOrElse(getInteger(this, ap(u, toString(dV))), dQ)
550+ let dU = (dS + ((di - dV) * dT))
551+[IntegerEntry(ap(t, toString(di)), dU), IntegerEntry(ap(u, toString(di)), dQ)]
552+ }
553+ }
554+ }
555+
556+
557+func dW (bE,bF) = [IntegerEntry(B, bE), IntegerEntry(C, bF)]
558+
559+
560+func dX (bE,bF,dY,dZ,ea,eb,ec) = if (((eb - ec) != dY))
561+ then throw(((((("Invalid AMM state data: " + toString(eb)) + " + ") + toString(ec)) + " != ") + toString(dY)))
562+ else ((dW(bE, bF) ++ [IntegerEntry(D, dY), IntegerEntry(G, dZ), IntegerEntry(H, ea), IntegerEntry(E, eb), IntegerEntry(F, ec)]) ++ dP(ak(bE, bF)))
563+
564+
565+func ed (ar) = [DeleteEntry(ap(e, ar)), DeleteEntry(ap(f, ar)), DeleteEntry(ap(g, ar)), DeleteEntry(ap(h, ar))]
566+
567+
568+func ee (ar,ef) = {
569+ let eg = assetBalance(this, T())
570+ if ((ef > eg))
571+ then throw(((("Unable to withdraw " + toString(ef)) + " from contract balance ") + toString(eg)))
572+ else [ScriptTransfer(ar, ef, T())]
573+ }
574+
575+
576+func eh (ei) = if ((0 > ei))
577+ then throw("Balance")
578+ else [IntegerEntry(d, ei)]
579+
580+
581+func ej (ei) = [ScriptTransfer(V(), ei, T())]
582+
583+
584+@Callable(ei)
585+func pause () = if ((ei.caller != R()))
586+ then throw("Invalid togglePause params")
587+ else [BooleanEntry(j, true)]
588+
589+
590+
591+@Callable(ei)
592+func unpause () = if ((ei.caller != R()))
593+ then throw("Invalid togglePause params")
594+ else [BooleanEntry(j, false)]
595+
596+
597+
598+@Callable(ei)
599+func addLiquidity (bz) = if (if ((ei.caller != R()))
600+ then true
601+ else (0 >= bz))
602+ then throw("Invalid addLiquidity params")
603+ else {
604+ let bE = aR()
605+ let bF = aS()
606+ let dQ = ak(bE, bF)
607+ let ek = ak(bz, dQ)
608+ let el = (bE + bz)
609+ let em = (bF + ek)
610+ dW(el, em)
611+ }
612+
613+
614+
615+@Callable(ei)
616+func removeLiquidity (bz) = if (if ((ei.caller != R()))
617+ then true
618+ else (0 >= bz))
619+ then throw("Invalid removeLiquidity params")
620+ else {
621+ let bE = aR()
622+ let bF = aS()
623+ let dQ = ak(bE, bF)
624+ let en = ak(bz, dQ)
625+ let el = (bE - bz)
626+ let em = (bF - en)
627+ dW(el, em)
628+ }
629+
630+
631+
632+@Callable(ei)
633+func changeSettings (dy,dz,dA,dB,dC,dD,dE) = if ((ei.caller != R()))
634+ then throw("Invalid changeSettings params")
635+ else dx(dy, dz, dA, dB, dC, dD, dE)
636+
637+
638+
639+@Callable(ei)
640+func initialize (bE,bF,dB,dy,dz,dA,dC,eo,ep,eq,dD,dE) = if (if (if (if (if (if (if (if (if (if ((0 >= bE))
641+ then true
642+ else (0 >= bF))
643+ then true
644+ else (0 >= dB))
645+ then true
646+ else (0 >= dy))
647+ then true
648+ else (0 >= dz))
649+ then true
650+ else (0 >= dA))
651+ then true
652+ else (0 >= dC))
653+ then true
654+ else (0 >= dD))
655+ then true
656+ else (0 >= dE))
657+ then true
658+ else bv())
659+ then throw("Invalid initialize parameters")
660+ else ((((dX(bE, bF, 0, 0, 0, 0, 0) ++ dx(dy, dz, dA, dB, dC, dD, dE)) ++ dF((lastBlock.timestamp + dB), 0, 0, 0, 0)) ++ eh(0)) ++ [BooleanEntry(i, true), StringEntry(c, eo), StringEntry(a, ep), StringEntry(I, eq)])
661+
662+
663+
664+@Callable(ei)
665+func decreasePosition (ef,er,es) = if (if (if (if (if ((0 >= ef))
666+ then true
667+ else !(bv()))
668+ then true
669+ else !(bi(ak(ad, er), aQ(), true)))
670+ then true
671+ else !(bu(toString(ei.caller))))
672+ then true
673+ else bw())
674+ then throw("Invalid decreasePosition parameters")
675+ else {
676+ let et = bp(toString(ei.caller))
677+ let eu = et._1
678+ let ev = et._2
679+ let ew = et._3
680+ let ex = et._4
681+ let ey = if ((eu > 0))
682+ then Z
683+ else Y
684+ let ez = (ey == Y)
685+ let eA = am(ef, er)
686+ let eB = cu(toString(ei.caller), ag)
687+ let eC = eB._1
688+ let cI = eB._2
689+ let eD = if ((eC > eA))
690+ then {
691+ let eE = bD(ez, eA)
692+ let cX = eE._1
693+ let bI = eE._2
694+ let bJ = eE._3
695+ let dc = eE._4
696+ let dd = eE._5
697+ let eF = an(cX)
698+ if (if ((es != 0))
699+ then (es > eF)
700+ else false)
701+ then throw(((("Too little base asset exchanged, got " + toString(eF)) + " expected ") + toString(es)))
702+ else {
703+ let cY = ak(am(cI, eF), an(eu))
704+ let eG = bT(eu, ev, ex, cY)
705+ let cc = eG._1
706+ let cd = eG._2
707+ let bY = eG._3
708+ let db = eA
709+ let eH = (cI - cY)
710+ let eI = if ((eu > 0))
711+ then ((eC - db) - eH)
712+ else ((eH + eC) - db)
713+ let eJ = (eu + cX)
714+ $Tuple11(eJ, cc, an(eI), bn(eJ), bJ, bI, dc, dd, (aV() - eA), (bh() - (if ((eJ > 0))
715+ then an(cX)
716+ else 0)), (bg() - (if ((0 > eJ))
717+ then an(cX)
718+ else 0)))
719+ }
720+ }
721+ else throw("Close position first")
722+ let eJ = eD._1
723+ let eK = eD._2
724+ let eL = eD._3
725+ let eM = eD._4
726+ let bJ = eD._5
727+ let bI = eD._6
728+ let dc = eD._7
729+ let dd = eD._8
730+ let dg = eD._9
731+ let de = eD._10
732+ let df = eD._11
733+ let eN = invoke(X(), "notifyNotional", [toString(ei.caller), eL], nil)
734+ if ((eN == eN))
735+ then (dL(toString(ei.caller), eJ, eK, eL, eM) ++ dX(bI, bJ, dc, dd, dg, de, df))
736+ else throw("Strict value is not equal to itself.")
737+ }
738+
739+
740+
741+@Callable(ei)
742+func increasePosition (ey,er,es) = {
743+ let eO = ei.payments[0].amount
744+ if (if (if (if (if (if (if ((ey != Y))
745+ then (ey != Z)
746+ else false)
747+ then true
748+ else (0 >= eO))
749+ then true
750+ else !(bv()))
751+ then true
752+ else (ei.payments[0].assetId != T()))
753+ then true
754+ else !(bi(ak(ad, er), aQ(), true)))
755+ then true
756+ else bw())
757+ then throw("Invalid increasePosition parameters")
758+ else {
759+ let eP = am(eO, aP())
760+ let ef = (eO - eP)
761+ let eQ = bp(toString(ei.caller))
762+ let eu = eQ._1
763+ let ev = eQ._2
764+ let ew = eQ._3
765+ let ex = eQ._4
766+ let eR = (eu == 0)
767+ let eS = if ((eu > 0))
768+ then (ey == Y)
769+ else (ey == Z)
770+ let eT = if (!(eR))
771+ then eS
772+ else false
773+ let ez = (ey == Y)
774+ let eU = if (if (eR)
775+ then true
776+ else eT)
777+ then {
778+ let eA = am(ef, er)
779+ let eV = bD(ez, eA)
780+ let bL = eV._1
781+ let bI = eV._2
782+ let bJ = eV._3
783+ let dc = eV._4
784+ let dd = eV._5
785+ if (if ((es != 0))
786+ then (es > an(bL))
787+ else false)
788+ then throw(((("Limit error: " + toString(an(bL))) + " < ") + toString(es)))
789+ else {
790+ let eJ = (eu + bL)
791+ let eW = ak(eA, er)
792+ let eX = bT(eu, ev, ex, eW)
793+ let cc = eX._1
794+ let cF = eX._2
795+ let cG = eX._3
796+ $Tuple11(eJ, cc, (ew + eA), bn(eJ), bJ, bI, dc, dd, (aV() + eA), (bh() + (if ((eJ > 0))
797+ then an(bL)
798+ else 0)), (bg() + (if ((0 > eJ))
799+ then an(bL)
800+ else 0)))
801+ }
802+ }
803+ else {
804+ let eA = am(ef, er)
805+ let eY = cu(toString(ei.caller), ag)
806+ let eC = eY._1
807+ let cI = eY._2
808+ if ((eC > eA))
809+ then throw("Use decreasePosition to decrease position size")
810+ else throw("Close position first")
811+ }
812+ let eJ = eU._1
813+ let eK = eU._2
814+ let eL = eU._3
815+ let eM = eU._4
816+ let bJ = eU._5
817+ let bI = eU._6
818+ let dc = eU._7
819+ let dd = eU._8
820+ let dg = eU._9
821+ let de = eU._10
822+ let df = eU._11
823+ let eZ = (eP / 2)
824+ let fa = (eP - eZ)
825+ let fb = invoke(U(), "lockNeutrinoSP", [toString(V()), af], [AttachedPayment(T(), ef)])
826+ if ((fb == fb))
827+ then {
828+ let fc = invoke(W(), "deposit", nil, [AttachedPayment(T(), fa)])
829+ if ((fc == fc))
830+ then {
831+ let fd = invoke(X(), "notifyFees", [toString(ei.caller), eP], nil)
832+ if ((fd == fd))
833+ then {
834+ let eN = invoke(X(), "notifyNotional", [toString(ei.caller), eL], nil)
835+ if ((eN == eN))
836+ then (((dL(toString(ei.caller), eJ, eK, eL, eM) ++ dX(bI, bJ, dc, dd, dg, de, df)) ++ ej(eZ)) ++ eh((aO() + ef)))
837+ else throw("Strict value is not equal to itself.")
838+ }
839+ else throw("Strict value is not equal to itself.")
840+ }
841+ else throw("Strict value is not equal to itself.")
842+ }
843+ else throw("Strict value is not equal to itself.")
844+ }
845+ }
846+
847+
848+
849+@Callable(ei)
850+func addMargin () = {
851+ let eO = ei.payments[0].amount
852+ if (if (if (if ((ei.payments[0].assetId != T()))
853+ then true
854+ else !(bu(toString(ei.caller))))
855+ then true
856+ else !(bv()))
857+ then true
858+ else bw())
859+ then throw("Invalid addMargin parameters")
860+ else {
861+ let eP = am(eO, aP())
862+ let ef = (eO - eP)
863+ let fe = bp(toString(ei.caller))
864+ let eu = fe._1
865+ let ev = fe._2
866+ let ew = fe._3
867+ let ex = fe._4
868+ let eZ = (eP / 2)
869+ let fa = (eP - eZ)
870+ let fb = invoke(U(), "lockNeutrinoSP", [toString(V()), af], [AttachedPayment(T(), ef)])
871+ if ((fb == fb))
872+ then {
873+ let fc = invoke(W(), "deposit", nil, [AttachedPayment(T(), fa)])
874+ if ((fc == fc))
875+ then {
876+ let fd = invoke(X(), "notifyFees", [toString(ei.caller), eP], nil)
877+ if ((fd == fd))
878+ then ((dL(toString(ei.caller), eu, (ev + ef), ew, ex) ++ ej(eZ)) ++ eh((aO() + ef)))
879+ else throw("Strict value is not equal to itself.")
880+ }
881+ else throw("Strict value is not equal to itself.")
882+ }
883+ else throw("Strict value is not equal to itself.")
884+ }
885+ }
886+
887+
888+
889+@Callable(ei)
890+func removeMargin (ef) = if (if (if (if ((0 >= ef))
891+ then true
892+ else !(bu(toString(ei.caller))))
893+ then true
894+ else !(bv()))
895+ then true
896+ else bw())
897+ then throw("Invalid removeMargin parameters")
898+ else {
899+ let ff = bp(toString(ei.caller))
900+ let eu = ff._1
901+ let ev = ff._2
902+ let ew = ff._3
903+ let ex = ff._4
904+ let fg = -(ef)
905+ let fh = bT(eu, ev, ex, fg)
906+ let cc = fh._1
907+ let cd = fh._2
908+ if ((cd != 0))
909+ then throw("Invalid removed margin amount")
910+ else {
911+ let fi = cJ(cc, cd, ew)
912+ if (!(bi(fi, aQ(), true)))
913+ then throw(((("Too much margin removed: " + toString(fi)) + " < ") + toString(aQ())))
914+ else {
915+ let fj = invoke(U(), "unlockNeutrino", [ef, toBase58String(T())], nil)
916+ if ((fj == fj))
917+ then ((dL(toString(ei.caller), eu, cc, ew, bn(eu)) ++ ee(ei.caller, ef)) ++ eh((aO() - ef)))
918+ else throw("Strict value is not equal to itself.")
919+ }
920+ }
921+ }
922+
923+
924+
925+@Callable(ei)
926+func closePosition () = if (if (if (!(bu(toString(ei.caller))))
927+ then true
928+ else !(bv()))
929+ then true
930+ else bw())
931+ then throw("Invalid closePosition parameters")
932+ else {
933+ let fk = cT(toString(ei.caller))
934+ let cF = fk._1
935+ let fl = fk._2
936+ let cY = fk._3
937+ let cZ = fk._4
938+ let bI = fk._5
939+ let bJ = fk._6
940+ let dc = fk._7
941+ let dd = fk._8
942+ let dg = fk._9
943+ let cG = fk._10
944+ let de = fk._11
945+ let df = fk._12
946+ if ((fl > 0))
947+ then throw("Unable to close position with bad debt")
948+ else {
949+ let fm = an(cZ)
950+ let fn = (aO() - fm)
951+ let fo = if ((0 > fn))
952+ then $Tuple2(0, an(fn))
953+ else $Tuple2(fn, 0)
954+ let fp = fo._1
955+ let fq = fo._2
956+ let fr = if ((fq > 0))
957+ then {
958+ let fs = invoke(W(), "withdraw", [fq], nil)
959+ if ((fs == fs))
960+ then nil
961+ else throw("Strict value is not equal to itself.")
962+ }
963+ else nil
964+ if ((fr == fr))
965+ then {
966+ let fj = invoke(U(), "unlockNeutrino", [(fm - fq), toBase58String(T())], nil)
967+ if ((fj == fj))
968+ then {
969+ let eN = invoke(X(), "notifyNotional", [toString(ei.caller), 0], nil)
970+ if ((eN == eN))
971+ then (((ed(toString(ei.caller)) ++ dX(bI, bJ, dc, dd, dg, de, df)) ++ ee(ei.caller, fm)) ++ eh(fp))
972+ else throw("Strict value is not equal to itself.")
973+ }
974+ else throw("Strict value is not equal to itself.")
975+ }
976+ else throw("Strict value is not equal to itself.")
977+ }
978+ }
979+
980+
981+
982+@Callable(ei)
983+func liquidate (bq) = {
984+ let ft = cN(bq, ag)
985+ let fi = if (cr())
986+ then {
987+ let fu = cN(bq, ah)
988+ ao(ft, fu)
989+ }
990+ else ft
991+ if (if (if (if (!(bi(fi, ba(), false)))
992+ then true
993+ else !(bu(bq)))
994+ then true
995+ else !(bv()))
996+ then true
997+ else bw())
998+ then throw("Unable to liquidate")
999+ else {
1000+ let fv = cT(bq)
1001+ let cF = fv._1
1002+ let cd = fv._2
1003+ let cG = fv._3
1004+ let cH = fv._4
1005+ let bI = fv._5
1006+ let bJ = fv._6
1007+ let dc = fv._7
1008+ let dd = fv._8
1009+ let dg = fv._9
1010+ let db = fv._10
1011+ let de = fv._11
1012+ let df = fv._12
1013+ let fw = am(db, bb())
1014+ let fx = (fw / 2)
1015+ let fa = (fw - fx)
1016+ let fn = (aO() - fw)
1017+ let fy = if ((0 > fn))
1018+ then $Tuple2(0, an(fn))
1019+ else $Tuple2(fn, 0)
1020+ let fz = fy._1
1021+ let fA = fy._2
1022+ let fr = if ((fA > 0))
1023+ then {
1024+ let fs = invoke(W(), "withdraw", [fA], nil)
1025+ if ((fs == fs))
1026+ then nil
1027+ else throw("Strict value is not equal to itself.")
1028+ }
1029+ else nil
1030+ if ((fr == fr))
1031+ then {
1032+ let fj = invoke(U(), "unlockNeutrino", [(fw - fA), toBase58String(T())], nil)
1033+ if ((fj == fj))
1034+ then {
1035+ let fc = invoke(W(), "deposit", nil, [AttachedPayment(T(), fa)])
1036+ if ((fc == fc))
1037+ then {
1038+ let eN = invoke(X(), "notifyNotional", [bq, 0], nil)
1039+ if ((eN == eN))
1040+ then (((ed(bq) ++ dX(bI, bJ, dc, dd, dg, de, df)) ++ ee(ei.caller, fx)) ++ eh(fz))
1041+ else throw("Strict value is not equal to itself.")
1042+ }
1043+ else throw("Strict value is not equal to itself.")
1044+ }
1045+ else throw("Strict value is not equal to itself.")
1046+ }
1047+ else throw("Strict value is not equal to itself.")
1048+ }
1049+ }
1050+
1051+
1052+
1053+@Callable(ei)
1054+func payFunding () = {
1055+ let fB = aW()
1056+ if (if (if ((fB > lastBlock.timestamp))
1057+ then true
1058+ else !(bv()))
1059+ then true
1060+ else bw())
1061+ then throw(((("Invalid funding block timestamp: " + toString(lastBlock.timestamp)) + " < ") + toString(fB)))
1062+ else {
1063+ let fC = cl()
1064+ let fD = dh()
1065+ let fE = (fD - fC)
1066+ let fF = if (if ((bg() == 0))
1067+ then true
1068+ else (bh() == 0))
1069+ then $Tuple2(0, 0)
1070+ else if ((0 > fE))
1071+ then {
1072+ let fG = ak(am(fE, aY()), ae)
1073+ let fH = ak(am(fG, bg()), bh())
1074+ $Tuple2(fG, fH)
1075+ }
1076+ else {
1077+ let fH = ak(am(fE, aY()), ae)
1078+ let fG = ak(am(fH, bh()), bg())
1079+ $Tuple2(fG, fH)
1080+ }
1081+ let fG = fF._1
1082+ let fH = fF._2
1083+ dF((fB + aZ()), (be() + fH), (bf() + fG), ak(fH, fC), ak(fG, fC))
1084+ }
1085+ }
1086+
1087+
1088+
1089+@Callable(ei)
1090+func v_get (bq) = {
1091+ let fI = cT(bq)
1092+ let cF = fI._1
1093+ let cG = fI._2
1094+ let cH = fI._3
1095+ let fJ = fI._4
1096+ throw((((ai(cG) + ai(cH)) + ai(fJ)) + ai(cS(bq))))
1097+ }
1098+
1099+
1100+
1101+@Callable(ei)
1102+func view_calcRemainMarginWithFundingPayment (bq) = {
1103+ let fK = bp(bq)
1104+ let bt = fK._1
1105+ let cx = fK._2
1106+ let cP = fK._3
1107+ let cz = fK._4
1108+ let fL = cu(bq, ag)
1109+ let cC = fL._1
1110+ let cI = fL._2
1111+ let fM = bT(bt, cx, cz, cI)
1112+ let cc = fM._1
1113+ let cd = fM._2
1114+ let bY = fM._3
1115+ throw(((ai(cc) + ai(bY)) + ai(cS(bq))))
1116+ }
1117+
1118+
1119+
1120+@Callable(ei)
1121+func forceMoveAsset (bq,ef) = if (if ((addressFromPublicKey(S()) != ei.caller))
1122+ then true
1123+ else (0 > ef))
1124+ then throw("Invalid forceMoveAsset parameters")
1125+ else {
1126+ let fj = invoke(U(), "unlockNeutrino", [ef, toBase58String(T())], nil)
1127+ if ((fj == fj))
1128+ then (ee(addressFromStringValue(bq), ef) ++ eh((aO() - ef)))
1129+ else throw("Strict value is not equal to itself.")
1130+ }
1131+
1132+
1133+@Verifier(fN)
1134+func fO () = sigVerify(fN.bodyBytes, fN.proofs[0], S())
1135+

github/deemru/w8io/169f3d6 
47.40 ms