tx · 5ixotgNUPBZphgERR1UQrbRe4rTLTjGuD1hMEgZShq6A

3NBH3LGg2DsaEtyBr495XEdaFuiLYSNyr3k:  -0.05100000 Waves

2022.08.03 12:29 [2168125] smart account 3NBH3LGg2DsaEtyBr495XEdaFuiLYSNyr3k > SELF 0.00000000 Waves

{ "type": 13, "id": "5ixotgNUPBZphgERR1UQrbRe4rTLTjGuD1hMEgZShq6A", "fee": 5100000, "feeAssetId": null, "timestamp": 1659518991772, "version": 2, "chainId": 84, "sender": "3NBH3LGg2DsaEtyBr495XEdaFuiLYSNyr3k", "senderPublicKey": "6rHNfG82m33YnDLzeMuCFn5XNvbNwGhR4ovSFhgJvbxP", "proofs": [ "4AeVi8UGPaknACA8GR2DYjVBJ3cZRxmrTugFnA8XGW4JLQKn8ALCqNcymeGka2RQY4e6WeTM5fgiA9Y8Dk7UYUCu" ], "script": "base64:BgJPCAISABIAEgkKBwEBAQEBAQESDgoMAQEBAQEBAQgICAEBEgUKAwEBARIFCgMBAQESABIDCgEBEgASAwoBCBIAEgMKAQgSAwoBCBIECgIIAXgACWtfb3JhX2tleQIJa19vcmFfa2V5AA9rX29yYV9ibG9ja19rZXkCD2tfb3JhX2Jsb2NrX2tleQAFa19vcmECBWtfb3JhAAlrX2JhbGFuY2UCCWtfYmFsYW5jZQAOa19wb3NpdGlvblNpemUCDmtfcG9zaXRpb25TaXplABBrX3Bvc2l0aW9uTWFyZ2luAhBrX3Bvc2l0aW9uTWFyZ2luABZrX3Bvc2l0aW9uT3Blbk5vdGlvbmFsAhZrX3Bvc2l0aW9uT3Blbk5vdGlvbmFsAC5rX3Bvc2l0aW9uTGFzdFVwZGF0ZWRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAhJrX3Bvc2l0aW9uRnJhY3Rpb24ADWtfaW5pdGlhbGl6ZWQCDWtfaW5pdGlhbGl6ZWQACGtfcGF1c2VkAghrX3BhdXNlZAAFa19mZWUCBWtfZmVlAA9rX2Z1bmRpbmdQZXJpb2QCD2tfZnVuZGluZ1BlcmlvZAARa19pbml0TWFyZ2luUmF0aW8CEWtfaW5pdE1hcmdpblJhdGlvABhrX21haW50ZW5hbmNlTWFyZ2luUmF0aW8CBWtfbW1yABVrX2xpcXVpZGF0aW9uRmVlUmF0aW8CFWtfbGlxdWlkYXRpb25GZWVSYXRpbwANa19zcHJlYWRMaW1pdAINa19zcHJlYWRMaW1pdAAQa19tYXhQcmljZUltcGFjdAIQa19tYXhQcmljZUltcGFjdAANa19sYXN0RGF0YVN0cgINa19sYXN0RGF0YVN0cgAOa19sYXN0TWludXRlSWQCDmtfbGFzdE1pbnV0ZUlkAB1rX3R3YXBEYXRhTGFzdEN1bXVsYXRpdmVQcmljZQIda190d2FwRGF0YUxhc3RDdW11bGF0aXZlUHJpY2UAE2tfdHdhcERhdGFMYXN0UHJpY2UCE2tfdHdhcERhdGFMYXN0UHJpY2UAGmtfdHdhcERhdGFQcmV2aW91c01pbnV0ZUlkAhprX3R3YXBEYXRhUHJldmlvdXNNaW51dGVJZAAla19sYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgIba19sYXRlc3RMb25nUHJlbWl1bUZyYWN0aW9uACZrX2xhdGVzdFNob3J0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgIca19sYXRlc3RTaG9ydFByZW1pdW1GcmFjdGlvbgASa19uZXh0RnVuZGluZ0Jsb2NrAh5rX25leHRGdW5kaW5nQmxvY2tNaW5UaW1lc3RhbXAAEWtfbG9uZ0Z1bmRpbmdSYXRlAhFrX2xvbmdGdW5kaW5nUmF0ZQASa19zaG9ydEZ1bmRpbmdSYXRlAhJrX3Nob3J0RnVuZGluZ1JhdGUAE2tfcXVvdGVBc3NldFJlc2VydmUCCGtfcXRBc3RSABJrX2Jhc2VBc3NldFJlc2VydmUCCGtfYnNBc3RSABNrX3RvdGFsUG9zaXRpb25TaXplAhNrX3RvdGFsUG9zaXRpb25TaXplABdrX3RvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQIXa190b3RhbExvbmdQb3NpdGlvblNpemUAGGtfdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQIYa190b3RhbFNob3J0UG9zaXRpb25TaXplABRrX2N1bXVsYXRpdmVOb3Rpb25hbAIUa19jdW11bGF0aXZlTm90aW9uYWwAFmtfb3BlbkludGVyZXN0Tm90aW9uYWwCFmtfb3BlbkludGVyZXN0Tm90aW9uYWwAFGtfY29vcmRpbmF0b3JBZGRyZXNzAhRrX2Nvb3JkaW5hdG9yQWRkcmVzcwATa19pbnN1cmFuY2VfYWRkcmVzcwITa19pbnN1cmFuY2VfYWRkcmVzcwAPa19hZG1pbl9hZGRyZXNzAg9rX2FkbWluX2FkZHJlc3MAEmtfYWRtaW5fcHVibGljX2tleQISa19hZG1pbl9wdWJsaWNfa2V5AA1rX3F1b3RlX2Fzc2V0Ag1rX3F1b3RlX2Fzc2V0AA9rX3F1b3RlX3N0YWtpbmcCD2tfcXVvdGVfc3Rha2luZwARa19zdGFraW5nX2FkZHJlc3MCEWtfc3Rha2luZ19hZGRyZXNzAA9rX21pbmVyX2FkZHJlc3MCD2tfbWluZXJfYWRkcmVzcwELY29vcmRpbmF0b3IACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUUa19jb29yZGluYXRvckFkZHJlc3MCE0Nvb3JkaW5hdG9yIG5vdCBzZXQBDGFkbWluQWRkcmVzcwAJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUPa19hZG1pbl9hZGRyZXNzAQ5hZG1pblB1YmxpY0tleQAJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUSa19hZG1pbl9wdWJsaWNfa2V5AQpxdW90ZUFzc2V0AAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABQ1rX3F1b3RlX2Fzc2V0ARFxdW90ZUFzc2V0U3Rha2luZwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABQ9rX3F1b3RlX3N0YWtpbmcCG1F1b3RlIGFzc2V0IHN0YWtpbmcgbm90IHNldAEOc3Rha2luZ0FkZHJlc3MACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAURa19zdGFraW5nX2FkZHJlc3MCEUluc3VyYW5jZSBub3Qgc2V0ARBpbnN1cmFuY2VBZGRyZXNzAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFE2tfaW5zdXJhbmNlX2FkZHJlc3MCEUluc3VyYW5jZSBub3Qgc2V0AQxtaW5lckFkZHJlc3MACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUPa19taW5lcl9hZGRyZXNzAhFJbnN1cmFuY2Ugbm90IHNldAAIRElSX0xPTkcAAQAJRElSX1NIT1JUAAIAFkZVTkRJTkdfQkxPQ0tfSU5URVJWQUwAPAANVFdBUF9JTlRFUlZBTAAPAA9PUkFDTEVfSU5URVJWQUwADwAHU0VDT05EUwDoBwAMREVDSU1BTF9VTklUCQBoAgABCQBoAgkAaAIJAGgCCQBoAgkAaAIACgAKAAoACgAKAAoAD0hVTkRSRURfUEVSQ0VOVAkAaAIAZAUMREVDSU1BTF9VTklUAAdPTkVfREFZCQBoAgCAowUFDERFQ0lNQUxfVU5JVAAIQUxMX0ZFRVMAZAAPUE5MX09QVElPTl9TUE9UAAEAEVBOTF9PUFRJT05fT1JBQ0xFAAIBAXMBAl94CQCsAgIJAKQDAQUCX3gCASwBBGRpdmQCAl94Al95CQBuBAUCX3gFDERFQ0lNQUxfVU5JVAUCX3kFCEhBTEZFVkVOAQRtdWxkAgJfeAJfeQkAbgQFAl94BQJfeQUMREVDSU1BTF9VTklUBQhIQUxGRVZFTgEDYWJzAQJfeAMJAGYCBQJfeAAABQJfeAkBAS0BBQJfeAEEdm1heAICX3gCX3kDCQBnAgUCX3gFAl95BQJfeAUCX3kBDnRvQ29tcG9zaXRlS2V5AgRfa2V5CF9hZGRyZXNzCQCsAgIJAKwCAgUEX2tleQIBXwUIX2FkZHJlc3MBCWxpc3RUb1N0cgEFX2xpc3QKAQVfam9pbgILYWNjdW11bGF0b3IDdmFsCQCsAgIJAKwCAgULYWNjdW11bGF0b3IFA3ZhbAIBLAQKbmV3TGlzdFN0cgoAAiRsBQVfbGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzACAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEFX2pvaW4CBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDIwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAQLbmV3TGlzdFN0clUJALMCAgUKbmV3TGlzdFN0cgABBAtuZXdMaXN0U3RyUgMJAAACCQCvAgIFC25ld0xpc3RTdHJVAAECASwJALACAgULbmV3TGlzdFN0clUAAQULbmV3TGlzdFN0clUFC25ld0xpc3RTdHJSAQlzdHJUb0xpc3QBBF9zdHIJALUJAgUEX3N0cgIBLAELcHVzaFRvUXVldWUDBV9saXN0CF9tYXhTaXplBl92YWx1ZQMJAGYCCQCQAwEFBV9saXN0BQhfbWF4U2l6ZQkAzQgCCQDRCAIFBV9saXN0AAAFBl92YWx1ZQkAzQgCBQVfbGlzdAUGX3ZhbHVlAQNpbnQBAWsJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzBQFrCQCsAgICDW5vIHZhbHVlIGZvciAFAWsBCGNiYWxhbmNlAAkBA2ludAEFCWtfYmFsYW5jZQEDZmVlAAkBA2ludAEFBWtfZmVlAQ9pbml0TWFyZ2luUmF0aW8ACQEDaW50AQURa19pbml0TWFyZ2luUmF0aW8BBnF0QXN0UgAJAQNpbnQBBRNrX3F1b3RlQXNzZXRSZXNlcnZlAQZic0FzdFIACQEDaW50AQUSa19iYXNlQXNzZXRSZXNlcnZlARF0b3RhbFBvc2l0aW9uU2l6ZQAJAQNpbnQBBRNrX3RvdGFsUG9zaXRpb25TaXplARJjdW11bGF0aXZlTm90aW9uYWwACQEDaW50AQUUa19jdW11bGF0aXZlTm90aW9uYWwBFG9wZW5JbnRlcmVzdE5vdGlvbmFsAAkBA2ludAEFFmtfb3BlbkludGVyZXN0Tm90aW9uYWwBGW5leHRGdW5kaW5nQmxvY2tUaW1lc3RhbXAACQEDaW50AQUSa19uZXh0RnVuZGluZ0Jsb2NrARBmdW5kaW5nUGVyaW9kUmF3AAkBA2ludAEFD2tfZnVuZGluZ1BlcmlvZAEUZnVuZGluZ1BlcmlvZERlY2ltYWwACQBoAgkBEGZ1bmRpbmdQZXJpb2RSYXcABQxERUNJTUFMX1VOSVQBFGZ1bmRpbmdQZXJpb2RTZWNvbmRzAAkAaAIJARBmdW5kaW5nUGVyaW9kUmF3AAUHU0VDT05EUwEWbWFpbnRlbmFuY2VNYXJnaW5SYXRpbwAJAQNpbnQBBRhrX21haW50ZW5hbmNlTWFyZ2luUmF0aW8BE2xpcXVpZGF0aW9uRmVlUmF0aW8ACQEDaW50AQUVa19saXF1aWRhdGlvbkZlZVJhdGlvAQtzcHJlYWRMaW1pdAAJAQNpbnQBBQ1rX3NwcmVhZExpbWl0AQ5tYXhQcmljZUltcGFjdAAJAQNpbnQBBRBrX21heFByaWNlSW1wYWN0ASNsYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgAJAQNpbnQBBSVrX2xhdGVzdExvbmdDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uASRsYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24ACQEDaW50AQUma19sYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24BFnRvdGFsU2hvcnRQb3NpdGlvblNpemUACQEDaW50AQUYa190b3RhbFNob3J0UG9zaXRpb25TaXplARV0b3RhbExvbmdQb3NpdGlvblNpemUACQEDaW50AQUXa190b3RhbExvbmdQb3NpdGlvblNpemUBFnJlcXVpcmVNb3JlTWFyZ2luUmF0aW8DDF9tYXJnaW5SYXRpbxBfYmFzZU1hcmdpblJhdGlvFF9sYXJnZXJUaGFuT3JFcXVhbFRvBBRyZW1haW5pbmdNYXJnaW5SYXRpbwkAZQIFDF9tYXJnaW5SYXRpbwUQX2Jhc2VNYXJnaW5SYXRpbwMDBRRfbGFyZ2VyVGhhbk9yRXF1YWxUbwkAZgIAAAUUcmVtYWluaW5nTWFyZ2luUmF0aW8HCQACAQIOSW52YWxpZCBtYXJnaW4DAwkBASEBBRRfbGFyZ2VyVGhhbk9yRXF1YWxUbwkAZwIFFHJlbWFpbmluZ01hcmdpblJhdGlvAAAHCQACAQIOSW52YWxpZCBtYXJnaW4GAR9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAQ1fcG9zaXRpb25TaXplAwkAAAIFDV9wb3NpdGlvblNpemUAAAkAAgECLFNob3VsZCBub3QgYmUgY2FsbGVkIHdpdGggX3Bvc2l0aW9uU2l6ZSA9PSAwAwkAZgIFDV9wb3NpdGlvblNpemUAAAkBI2xhdGVzdExvbmdDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAAkBJGxhdGVzdFNob3J0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgABC2dldFBvc2l0aW9uAQdfdHJhZGVyBA9wb3NpdGlvblNpemVPcHQJAJoIAgUEdGhpcwkBDnRvQ29tcG9zaXRlS2V5AgUOa19wb3NpdGlvblNpemUFB190cmFkZXIEByRtYXRjaDAFD3Bvc2l0aW9uU2l6ZU9wdAMJAAECBQckbWF0Y2gwAgNJbnQEDHBvc2l0aW9uU2l6ZQUHJG1hdGNoMAkAlgoEBQxwb3NpdGlvblNpemUJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAQ50b0NvbXBvc2l0ZUtleQIFEGtfcG9zaXRpb25NYXJnaW4FB190cmFkZXIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAQ50b0NvbXBvc2l0ZUtleQIFFmtfcG9zaXRpb25PcGVuTm90aW9uYWwFB190cmFkZXIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAQ50b0NvbXBvc2l0ZUtleQIFLmtfcG9zaXRpb25MYXN0VXBkYXRlZEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FB190cmFkZXIJAJYKBAAAAAAAAAAAARNyZXF1aXJlT3BlblBvc2l0aW9uAQdfdHJhZGVyAwkAAAIICQELZ2V0UG9zaXRpb24BBQdfdHJhZGVyAl8xAAAJAAIBAhBObyBvcGVuIHBvc2l0aW9uBgELaW5pdGlhbGl6ZWQACQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFDWtfaW5pdGlhbGl6ZWQHAQZwYXVzZWQACQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFCGtfcGF1c2VkBwENdXBkYXRlUmVzZXJ2ZQMGX2lzQWRkEV9xdW90ZUFzc2V0QW1vdW50EF9iYXNlQXNzZXRBbW91bnQDBQZfaXNBZGQEB25ld0Jhc2UJAGUCCQEGYnNBc3RSAAUQX2Jhc2VBc3NldEFtb3VudAMJAGcCAAAFB25ld0Jhc2UJAAIBAipUeCBsZWFkIHRvIGJhc2UgYXNzZXQgcmVzZXJ2ZSA8PSAwLCByZXZlcnQJAJYKBAkAZAIJAQZxdEFzdFIABRFfcXVvdGVBc3NldEFtb3VudAUHbmV3QmFzZQkAZAIJARF0b3RhbFBvc2l0aW9uU2l6ZQAFEF9iYXNlQXNzZXRBbW91bnQJAGQCCQESY3VtdWxhdGl2ZU5vdGlvbmFsAAURX3F1b3RlQXNzZXRBbW91bnQECG5ld1F1b3RlCQBlAgkBBnF0QXN0UgAFEV9xdW90ZUFzc2V0QW1vdW50AwkAZwIAAAUIbmV3UXVvdGUJAAIBAipUeCBsZWFkIHRvIGJhc2UgcXVvdGUgcmVzZXJ2ZSA8PSAwLCByZXZlcnQJAJYKBAUIbmV3UXVvdGUJAGQCCQEGYnNBc3RSAAUQX2Jhc2VBc3NldEFtb3VudAkAZQIJARF0b3RhbFBvc2l0aW9uU2l6ZQAFEF9iYXNlQXNzZXRBbW91bnQJAGUCCQESY3VtdWxhdGl2ZU5vdGlvbmFsAAURX3F1b3RlQXNzZXRBbW91bnQBCXN3YXBJbnB1dAIGX2lzQWRkEV9xdW90ZUFzc2V0QW1vdW50BAdfcXRBc3RSCQEGcXRBc3RSAAQHX2JzQXN0UgkBBmJzQXN0UgAEC3ByaWNlQmVmb3JlCQEEZGl2ZAIFB19xdEFzdFIFB19ic0FzdFIEJ2Ftb3VudEJhc2VBc3NldEJvdWdodFdpdGhvdXRQcmljZUltcGFjdAkBBG11bGQCBRFfcXVvdGVBc3NldEFtb3VudAULcHJpY2VCZWZvcmUEAWsJAQRtdWxkAgUHX3F0QXN0UgUHX2JzQXN0UgQWcXVvdGVBc3NldFJlc2VydmVBZnRlcgMFBl9pc0FkZAkAZAIFB19xdEFzdFIFEV9xdW90ZUFzc2V0QW1vdW50CQBlAgUHX3F0QXN0UgURX3F1b3RlQXNzZXRBbW91bnQEFWJhc2VBc3NldFJlc2VydmVBZnRlcgkBBGRpdmQCBQFrBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBBhhbW91bnRCYXNlQXNzZXRCb3VnaHRBYnMJAQNhYnMBCQBlAgUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBQdfYnNBc3RSBBVhbW91bnRCYXNlQXNzZXRCb3VnaHQDBQZfaXNBZGQFGGFtb3VudEJhc2VBc3NldEJvdWdodEFicwkBAS0BBRhhbW91bnRCYXNlQXNzZXRCb3VnaHRBYnMEC3ByaWNlSW1wYWN0CQBpAgkAZQIFJ2Ftb3VudEJhc2VBc3NldEJvdWdodFdpdGhvdXRQcmljZUltcGFjdAUYYW1vdW50QmFzZUFzc2V0Qm91Z2h0QWJzBSdhbW91bnRCYXNlQXNzZXRCb3VnaHRXaXRob3V0UHJpY2VJbXBhY3QEE21heFByaWNlSW1wYWN0VmFsdWUJAQ5tYXhQcmljZUltcGFjdAADCQBmAgULcHJpY2VJbXBhY3QFE21heFByaWNlSW1wYWN0VmFsdWUJAAIBCQCsAgIJAKwCAgkArAICAg1QcmljZSBpbXBhY3QgCQCkAwEFC3ByaWNlSW1wYWN0AhQgPiBtYXggcHJpY2UgaW1wYWN0IAkApAMBBRNtYXhQcmljZUltcGFjdFZhbHVlBA0kdDAxMjM2ODEyNTcxCQENdXBkYXRlUmVzZXJ2ZQMFBl9pc0FkZAURX3F1b3RlQXNzZXRBbW91bnQFGGFtb3VudEJhc2VBc3NldEJvdWdodEFicwQXcXVvdGVBc3NldFJlc2VydmVBZnRlcjEIBQ0kdDAxMjM2ODEyNTcxAl8xBBZiYXNlQXNzZXRSZXNlcnZlQWZ0ZXIxCAUNJHQwMTIzNjgxMjU3MQJfMgQXdG90YWxQb3NpdGlvblNpemVBZnRlcjEIBQ0kdDAxMjM2ODEyNTcxAl8zBBhjdW11bGF0aXZlTm90aW9uYWxBZnRlcjEIBQ0kdDAxMjM2ODEyNTcxAl80CQCXCgUFFWFtb3VudEJhc2VBc3NldEJvdWdodAUXcXVvdGVBc3NldFJlc2VydmVBZnRlcjEFFmJhc2VBc3NldFJlc2VydmVBZnRlcjEFF3RvdGFsUG9zaXRpb25TaXplQWZ0ZXIxBRhjdW11bGF0aXZlTm90aW9uYWxBZnRlcjEBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEEF9vbGRQb3NpdGlvblNpemUSX29sZFBvc2l0aW9uTWFyZ2luJV9vbGRQb3NpdGlvbkN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24MX21hcmdpbkRlbHRhBA5mdW5kaW5nUGF5bWVudAMJAQIhPQIFEF9vbGRQb3NpdGlvblNpemUAAAQgX2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24JAR9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAQUQX29sZFBvc2l0aW9uU2l6ZQkBBG11bGQCCQBlAgUgX2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FJV9vbGRQb3NpdGlvbkN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FEF9vbGRQb3NpdGlvblNpemUAAAQMc2lnbmVkTWFyZ2luCQBkAgkAZQIFDF9tYXJnaW5EZWx0YQUOZnVuZGluZ1BheW1lbnQFEl9vbGRQb3NpdGlvbk1hcmdpbgQNJHQwMTMzMTgxMzQ0NQMJAGYCAAAFDHNpZ25lZE1hcmdpbgkAlAoCAAAJAQNhYnMBBQxzaWduZWRNYXJnaW4JAJQKAgkBA2FicwEFDHNpZ25lZE1hcmdpbgAABAxyZW1haW5NYXJnaW4IBQ0kdDAxMzMxODEzNDQ1Al8xBAdiYWREZWJ0CAUNJHQwMTMzMTgxMzQ0NQJfMgkAlQoDBQxyZW1haW5NYXJnaW4FB2JhZERlYnQFDmZ1bmRpbmdQYXltZW50AQpzd2FwT3V0cHV0AgZfaXNBZGQQX2Jhc2VBc3NldEFtb3VudAQSX3F1b3RlQXNzZXRSZXNlcnZlCQEGcXRBc3RSAAQRX2Jhc2VBc3NldFJlc2VydmUJAQZic0FzdFIAAwkAAAIFEF9iYXNlQXNzZXRBbW91bnQAAAkAAgECGUludmFsaWQgYmFzZSBhc3NldCBhbW91bnQEAWsJAQRtdWxkAgUSX3F1b3RlQXNzZXRSZXNlcnZlBRFfYmFzZUFzc2V0UmVzZXJ2ZQQYYmFzZUFzc2V0UG9vbEFtb3VudEFmdGVyAwUGX2lzQWRkCQBkAgURX2Jhc2VBc3NldFJlc2VydmUFEF9iYXNlQXNzZXRBbW91bnQJAGUCBRFfYmFzZUFzc2V0UmVzZXJ2ZQUQX2Jhc2VBc3NldEFtb3VudAQPcXVvdGVBc3NldEFmdGVyCQEEZGl2ZAIFAWsFGGJhc2VBc3NldFBvb2xBbW91bnRBZnRlcgQOcXVvdGVBc3NldFNvbGQJAQNhYnMBCQBlAgUPcXVvdGVBc3NldEFmdGVyBRJfcXVvdGVBc3NldFJlc2VydmUEDSR0MDE0MjgzMTQ0NzYJAQ11cGRhdGVSZXNlcnZlAwkBASEBBQZfaXNBZGQFDnF1b3RlQXNzZXRTb2xkBRBfYmFzZUFzc2V0QW1vdW50BBdxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyMQgFDSR0MDE0MjgzMTQ0NzYCXzEEFmJhc2VBc3NldFJlc2VydmVBZnRlcjEIBQ0kdDAxNDI4MzE0NDc2Al8yBBd0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyMQgFDSR0MDE0MjgzMTQ0NzYCXzMEGGN1bXVsYXRpdmVOb3Rpb25hbEFmdGVyMQgFDSR0MDE0MjgzMTQ0NzYCXzQJAJkKBwUOcXVvdGVBc3NldFNvbGQFF3F1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIxBRZiYXNlQXNzZXRSZXNlcnZlQWZ0ZXIxBRd0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyMQUYY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIxCQBlAgkBFXRvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQADBQZfaXNBZGQJAQNhYnMBBRBfYmFzZUFzc2V0QW1vdW50AAAJAGUCCQEWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQADCQEBIQEFBl9pc0FkZAkBA2FicwEFEF9iYXNlQXNzZXRBbW91bnQAAAESZ2V0T3JhY2xlVHdhcFByaWNlAAQGb3JhY2xlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUFa19vcmECAAQIcHJpY2VLZXkJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFCWtfb3JhX2tleQQIYmxvY2tLZXkJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFD2tfb3JhX2Jsb2NrX2tleQQJbGFzdFZhbHVlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQZvcmFjbGUFCHByaWNlS2V5BQlsYXN0VmFsdWUBDGdldFNwb3RQcmljZQAEEl9xdW90ZUFzc2V0UmVzZXJ2ZQkBBnF0QXN0UgAEEV9iYXNlQXNzZXRSZXNlcnZlCQEGYnNBc3RSAAkBBGRpdmQCBRJfcXVvdGVBc3NldFJlc2VydmUFEV9iYXNlQXNzZXRSZXNlcnZlARZpc092ZXJGbHVjdHVhdGlvbkxpbWl0AAQLb3JhY2xlUHJpY2UJARJnZXRPcmFjbGVUd2FwUHJpY2UABAxjdXJyZW50UHJpY2UJAQxnZXRTcG90UHJpY2UACQBmAgkBBGRpdmQCCQEDYWJzAQkAZQIFC29yYWNsZVByaWNlBQxjdXJyZW50UHJpY2UFC29yYWNsZVByaWNlCQELc3ByZWFkTGltaXQAASNnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubAIHX3RyYWRlcgdfb3B0aW9uBA0kdDAxNjEwODE2MjM2CQELZ2V0UG9zaXRpb24BBQdfdHJhZGVyBAxwb3NpdGlvblNpemUIBQ0kdDAxNjEwODE2MjM2Al8xBA5wb3NpdGlvbk1hcmdpbggFDSR0MDE2MTA4MTYyMzYCXzIEFHBvc2l0aW9uT3Blbk5vdGlvbmFsCAUNJHQwMTYxMDgxNjIzNgJfMwQRcG9zaXRpb25Mc3RVcGRDUEYIBQ0kdDAxNjEwODE2MjM2Al80BA9wb3NpdGlvblNpemVBYnMJAQNhYnMBBQxwb3NpdGlvblNpemUDCQAAAgUPcG9zaXRpb25TaXplQWJzAAAJAAIBAhVJbnZhbGlkIHBvc2l0aW9uIHNpemUEB2lzU2hvcnQJAGYCAAAFDHBvc2l0aW9uU2l6ZQQQcG9zaXRpb25Ob3Rpb25hbAMJAAACBQdfb3B0aW9uBQ9QTkxfT1BUSU9OX1NQT1QEDSR0MDE2NDgzMTY1OTAJAQpzd2FwT3V0cHV0AgkBASEBBQdpc1Nob3J0BQ9wb3NpdGlvblNpemVBYnMEE291dFBvc2l0aW9uTm90aW9uYWwIBQ0kdDAxNjQ4MzE2NTkwAl8xBAJ4MQgFDSR0MDE2NDgzMTY1OTACXzIEAngyCAUNJHQwMTY0ODMxNjU5MAJfMwQCeDMIBQ0kdDAxNjQ4MzE2NTkwAl80BRNvdXRQb3NpdGlvbk5vdGlvbmFsCQEEbXVsZAIFD3Bvc2l0aW9uU2l6ZUFicwkBEmdldE9yYWNsZVR3YXBQcmljZQAEDXVucmVhbGl6ZWRQbmwDBQdpc1Nob3J0CQBlAgUUcG9zaXRpb25PcGVuTm90aW9uYWwFEHBvc2l0aW9uTm90aW9uYWwJAGUCBRBwb3NpdGlvbk5vdGlvbmFsBRRwb3NpdGlvbk9wZW5Ob3Rpb25hbAkAlAoCBRBwb3NpdGlvbk5vdGlvbmFsBQ11bnJlYWxpemVkUG5sAQ9jYWxjTWFyZ2luUmF0aW8DDV9yZW1haW5NYXJnaW4IX2JhZERlYnQRX3Bvc2l0aW9uTm90aW9uYWwJAQRkaXZkAgkAZQIFDV9yZW1haW5NYXJnaW4FCF9iYWREZWJ0BRFfcG9zaXRpb25Ob3Rpb25hbAEWZ2V0TWFyZ2luUmF0aW9CeU9wdGlvbgIHX3RyYWRlcgdfb3B0aW9uBA0kdDAxNzI2MDE3MzcxCQELZ2V0UG9zaXRpb24BBQdfdHJhZGVyBAxwb3NpdGlvblNpemUIBQ0kdDAxNzI2MDE3MzcxAl8xBA5wb3NpdGlvbk1hcmdpbggFDSR0MDE3MjYwMTczNzECXzIEA3BvbggFDSR0MDE3MjYwMTczNzECXzMEEXBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwMTcyNjAxNzM3MQJfNAQNJHQwMTczNzcxNzQ3MAkBI2dldFBvc2l0aW9uTm90aW9uYWxBbmRVbnJlYWxpemVkUG5sAgUHX3RyYWRlcgUHX29wdGlvbgQQcG9zaXRpb25Ob3Rpb25hbAgFDSR0MDE3Mzc3MTc0NzACXzEEDXVucmVhbGl6ZWRQbmwIBQ0kdDAxNzM3NzE3NDcwAl8yBA0kdDAxNzQ3NTE3NjQxCQEiY2FsY1JlbWFpbk1hcmdpbldpdGhGdW5kaW5nUGF5bWVudAQFDHBvc2l0aW9uU2l6ZQUOcG9zaXRpb25NYXJnaW4FEXBvc2l0aW9uTHN0VXBkQ1BGBQ11bnJlYWxpemVkUG5sBAxyZW1haW5NYXJnaW4IBQ0kdDAxNzQ3NTE3NjQxAl8xBAdiYWREZWJ0CAUNJHQwMTc0NzUxNzY0MQJfMgkBD2NhbGNNYXJnaW5SYXRpbwMFDHJlbWFpbk1hcmdpbgUHYmFkRGVidAUQcG9zaXRpb25Ob3Rpb25hbAEOZ2V0TWFyZ2luUmF0aW8BB190cmFkZXIJARZnZXRNYXJnaW5SYXRpb0J5T3B0aW9uAgUHX3RyYWRlcgUPUE5MX09QVElPTl9TUE9UARVpbnRlcm5hbENsb3NlUG9zaXRpb24BB190cmFkZXIEDSR0MDE3OTU3MTgwODUJAQtnZXRQb3NpdGlvbgEFB190cmFkZXIEDHBvc2l0aW9uU2l6ZQgFDSR0MDE3OTU3MTgwODUCXzEEDnBvc2l0aW9uTWFyZ2luCAUNJHQwMTc5NTcxODA4NQJfMgQUcG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDAxNzk1NzE4MDg1Al8zBBFwb3NpdGlvbkxzdFVwZENQRggFDSR0MDE3OTU3MTgwODUCXzQEDSR0MDE4MDkxMTgxNzgJASNnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubAIFB190cmFkZXIFD1BOTF9PUFRJT05fU1BPVAQCeDEIBQ0kdDAxODA5MTE4MTc4Al8xBA11bnJlYWxpemVkUG5sCAUNJHQwMTgwOTExODE3OAJfMgQNJHQwMTgxODMxODM1MQkBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEBQxwb3NpdGlvblNpemUFDnBvc2l0aW9uTWFyZ2luBRFwb3NpdGlvbkxzdFVwZENQRgUNdW5yZWFsaXplZFBubAQMcmVtYWluTWFyZ2luCAUNJHQwMTgxODMxODM1MQJfMQQHYmFkRGVidAgFDSR0MDE4MTgzMTgzNTECXzIEFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQkBAS0BBQxwb3NpdGlvblNpemUEC3JlYWxpemVkUG5sBQ11bnJlYWxpemVkUG5sBA1tYXJnaW5Ub1ZhdWx0CQEBLQEFDHJlbWFpbk1hcmdpbgQNJHQwMTg0NzgxODc1OQkBCnN3YXBPdXRwdXQCCQBmAgUMcG9zaXRpb25TaXplAAAJAQNhYnMBBQxwb3NpdGlvblNpemUEGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQIBQ0kdDAxODQ3ODE4NzU5Al8xBBZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwMTg0NzgxODc1OQJfMgQVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwMTg0NzgxODc1OQJfMwQWdG90YWxQb3NpdGlvblNpemVBZnRlcggFDSR0MDE4NDc4MTg3NTkCXzQEF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyCAUNJHQwMTg0NzgxODc1OQJfNQQOdG90YWxMb25nQWZ0ZXIIBQ0kdDAxODQ3ODE4NzU5Al82BA90b3RhbFNob3J0QWZ0ZXIIBQ0kdDAxODQ3ODE4NzU5Al83BBlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyCQBlAgkBFG9wZW5JbnRlcmVzdE5vdGlvbmFsAAUUcG9zaXRpb25PcGVuTm90aW9uYWwJAJ4KDAUVZXhjaGFuZ2VkUG9zaXRpb25TaXplBQdiYWREZWJ0BQtyZWFsaXplZFBubAUNbWFyZ2luVG9WYXVsdAUWcXVvdGVBc3NldFJlc2VydmVBZnRlcgUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBRZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyBRdjdW11bGF0aXZlTm90aW9uYWxBZnRlcgUZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcgUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAUOdG90YWxMb25nQWZ0ZXIFD3RvdGFsU2hvcnRBZnRlcgEQZ2V0VHdhcFNwb3RQcmljZQAECG1pbnV0ZUlkCQBpAgkAaQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wAOgHADwEDXN0YXJ0TWludXRlSWQJAGUCBQhtaW51dGVJZAUNVFdBUF9JTlRFUlZBTAQHbGlzdFN0cgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQ1rX2xhc3REYXRhU3RyAgAEBGxpc3QJALUJAgUHbGlzdFN0cgIBLAoBCGZpbHRlckZuAgthY2N1bXVsYXRvcgRuZXh0AwkAZwIFDXN0YXJ0TWludXRlSWQJAQ1wYXJzZUludFZhbHVlAQUEbmV4dAkAzQgCBQthY2N1bXVsYXRvcgkBDXBhcnNlSW50VmFsdWUBBQRuZXh0BQthY2N1bXVsYXRvcgQFbGlzdEYKAAIkbAUEbGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZmlsdGVyRm4CBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDIwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAQIbWF4SW5kZXgDCQBmAgkAkAMBBQVsaXN0RgAACQCWAwEFBWxpc3RGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUEbGlzdAAABAxsYXN0TWludXRlSWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUOa19sYXN0TWludXRlSWQAAAQWZW5kTGFzdEN1bXVsYXRpdmVQcmljZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgUda190d2FwRGF0YUxhc3RDdW11bGF0aXZlUHJpY2UCAV8JAKQDAQUMbGFzdE1pbnV0ZUlkAAAEDGVuZExhc3RQcmljZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgUTa190d2FwRGF0YUxhc3RQcmljZQIBXwkApAMBBQxsYXN0TWludXRlSWQAAAQSbm93Q3VtdWxhdGl2ZVByaWNlCQBkAgUWZW5kTGFzdEN1bXVsYXRpdmVQcmljZQkAaAIJAGUCBQhtaW51dGVJZAUMbGFzdE1pbnV0ZUlkBQxlbmRMYXN0UHJpY2UEGHN0YXJ0TGFzdEN1bXVsYXRpdmVQcmljZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgUda190d2FwRGF0YUxhc3RDdW11bGF0aXZlUHJpY2UCAV8JAKQDAQUIbWF4SW5kZXgAAAQOc3RhcnRMYXN0UHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIFE2tfdHdhcERhdGFMYXN0UHJpY2UCAV8JAKQDAQUIbWF4SW5kZXgAAAQUc3RhcnRDdW11bGF0aXZlUHJpY2UJAGQCBRhzdGFydExhc3RDdW11bGF0aXZlUHJpY2UJAGgCCQBlAgUNc3RhcnRNaW51dGVJZAUIbWF4SW5kZXgFDnN0YXJ0TGFzdFByaWNlCQBpAgkAZQIFEm5vd0N1bXVsYXRpdmVQcmljZQUUc3RhcnRDdW11bGF0aXZlUHJpY2UFDVRXQVBfSU5URVJWQUwBDnVwZGF0ZVNldHRpbmdzBxBfaW5pdE1hcmdpblJhdGlvBF9tbXIUX2xpcXVpZGF0aW9uRmVlUmF0aW8OX2Z1bmRpbmdQZXJpb2QEX2ZlZQxfc3ByZWFkTGltaXQPX21heFByaWNlSW1wYWN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrX2luaXRNYXJnaW5SYXRpbwUQX2luaXRNYXJnaW5SYXRpbwkAzAgCCQEMSW50ZWdlckVudHJ5AgUYa19tYWludGVuYW5jZU1hcmdpblJhdGlvBQRfbW1yCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVrX2xpcXVpZGF0aW9uRmVlUmF0aW8FFF9saXF1aWRhdGlvbkZlZVJhdGlvCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9rX2Z1bmRpbmdQZXJpb2QFDl9mdW5kaW5nUGVyaW9kCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQVrX2ZlZQUEX2ZlZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa19zcHJlYWRMaW1pdAUMX3NwcmVhZExpbWl0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrX21heFByaWNlSW1wYWN0BQ9fbWF4UHJpY2VJbXBhY3QFA25pbAENdXBkYXRlRnVuZGluZwURX25leHRGdW5kaW5nQmxvY2skX2xhdGVzdExvbmdDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uJV9sYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24QX2xvbmdGdW5kaW5nUmF0ZRFfc2hvcnRGdW5kaW5nUmF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUSa19uZXh0RnVuZGluZ0Jsb2NrBRFfbmV4dEZ1bmRpbmdCbG9jawkAzAgCCQEMSW50ZWdlckVudHJ5AgUla19sYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgUkX2xhdGVzdExvbmdDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uCQDMCAIJAQxJbnRlZ2VyRW50cnkCBSZrX2xhdGVzdFNob3J0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgUlX2xhdGVzdFNob3J0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgURa19sb25nRnVuZGluZ1JhdGUFEF9sb25nRnVuZGluZ1JhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIFEmtfc2hvcnRGdW5kaW5nUmF0ZQURX3Nob3J0RnVuZGluZ1JhdGUFA25pbAEOdXBkYXRlUG9zaXRpb24FCF9hZGRyZXNzBV9zaXplB19tYXJnaW4NX29wZW5Ob3Rpb25hbCBfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUOa19wb3NpdGlvblNpemUFCF9hZGRyZXNzBQVfc2l6ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUQa19wb3NpdGlvbk1hcmdpbgUIX2FkZHJlc3MFB19tYXJnaW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFFmtfcG9zaXRpb25PcGVuTm90aW9uYWwFCF9hZGRyZXNzBQ1fb3Blbk5vdGlvbmFsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBS5rX3Bvc2l0aW9uTGFzdFVwZGF0ZWRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uBQhfYWRkcmVzcwUgX2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FA25pbAEKYXBwZW5kVHdhcAEFcHJpY2UECG1pbnV0ZUlkCQBpAgkAaQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wAOgHADwEEHByZXZpb3VzTWludXRlSWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUOa19sYXN0TWludXRlSWQAAAMJAGYCBRBwcmV2aW91c01pbnV0ZUlkBQhtaW51dGVJZAkAAgECEVRXQVAgb3V0LW9mLW9yZGVyBAxsYXN0TWludXRlSWQDCQAAAgUQcHJldmlvdXNNaW51dGVJZAAABQhtaW51dGVJZAUQcHJldmlvdXNNaW51dGVJZAMJAGYCBQhtaW51dGVJZAUQcHJldmlvdXNNaW51dGVJZAQTcHJldkN1bXVsYXRpdmVQcmljZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgUda190d2FwRGF0YUxhc3RDdW11bGF0aXZlUHJpY2UCAV8JAKQDAQUQcHJldmlvdXNNaW51dGVJZAAABAlwcmV2UHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIFE2tfdHdhcERhdGFMYXN0UHJpY2UCAV8JAKQDAQUQcHJldmlvdXNNaW51dGVJZAUFcHJpY2UEE2xhc3RDdW11bGF0aXZlUHJpY2UJAGQCBRNwcmV2Q3VtdWxhdGl2ZVByaWNlCQBoAgkAZQIFCG1pbnV0ZUlkBQxsYXN0TWludXRlSWQFCXByZXZQcmljZQQEbGlzdAkBC3B1c2hUb1F1ZXVlAwkBCXN0clRvTGlzdAEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUNa19sYXN0RGF0YVN0cgIABQ1UV0FQX0lOVEVSVkFMCQCkAwEFCG1pbnV0ZUlkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBR1rX3R3YXBEYXRhTGFzdEN1bXVsYXRpdmVQcmljZQkApAMBBQhtaW51dGVJZAUTbGFzdEN1bXVsYXRpdmVQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUTa190d2FwRGF0YUxhc3RQcmljZQkApAMBBQhtaW51dGVJZAUFcHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFGmtfdHdhcERhdGFQcmV2aW91c01pbnV0ZUlkCQCkAwEFCG1pbnV0ZUlkBRBwcmV2aW91c01pbnV0ZUlkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ5rX2xhc3RNaW51dGVJZAUIbWludXRlSWQJAMwIAgkBC1N0cmluZ0VudHJ5AgUNa19sYXN0RGF0YVN0cgkBCWxpc3RUb1N0cgEFBGxpc3QFA25pbAQYdHdhcERhdGFQcmV2aW91c01pbnV0ZUlkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQ50b0NvbXBvc2l0ZUtleQIFGmtfdHdhcERhdGFQcmV2aW91c01pbnV0ZUlkCQCkAwEFCG1pbnV0ZUlkAAAEE3ByZXZDdW11bGF0aXZlUHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBDnRvQ29tcG9zaXRlS2V5AgUda190d2FwRGF0YUxhc3RDdW11bGF0aXZlUHJpY2UJAKQDAQUYdHdhcERhdGFQcmV2aW91c01pbnV0ZUlkAAAECXByZXZQcmljZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEOdG9Db21wb3NpdGVLZXkCBRNrX3R3YXBEYXRhTGFzdFByaWNlCQCkAwEFGHR3YXBEYXRhUHJldmlvdXNNaW51dGVJZAUFcHJpY2UEE2xhc3RDdW11bGF0aXZlUHJpY2UJAGQCBRNwcmV2Q3VtdWxhdGl2ZVByaWNlCQBoAgkAZQIFCG1pbnV0ZUlkBRh0d2FwRGF0YVByZXZpb3VzTWludXRlSWQFCXByZXZQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUda190d2FwRGF0YUxhc3RDdW11bGF0aXZlUHJpY2UJAKQDAQUIbWludXRlSWQFE2xhc3RDdW11bGF0aXZlUHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFE2tfdHdhcERhdGFMYXN0UHJpY2UJAKQDAQUIbWludXRlSWQFBXByaWNlBQNuaWwBCXVwZGF0ZUFtbQcHX3F0QXN0UgdfYnNBc3RSF190b3RhbFBvc2l0aW9uU2l6ZUFmdGVyGF9jdW11bGF0aXZlTm90aW9uYWxBZnRlchVfb3BlbkludGVyZXN0Tm90aW9uYWwWX3RvdGFsTG9uZ1Bvc2l0aW9uU2l6ZRdfdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQMJAQIhPQIJAGUCBRZfdG90YWxMb25nUG9zaXRpb25TaXplBRdfdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQUXX3RvdGFsUG9zaXRpb25TaXplQWZ0ZXIJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIYSW52YWxpZCBBTU0gc3RhdGUgZGF0YTogCQCkAwEFFl90b3RhbExvbmdQb3NpdGlvblNpemUCBCArICAJAKQDAQUXX3RvdGFsU2hvcnRQb3NpdGlvblNpemUCBCAhPSAJAKQDAQUXX3RvdGFsUG9zaXRpb25TaXplQWZ0ZXIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa19xdW90ZUFzc2V0UmVzZXJ2ZQUHX3F0QXN0UgkAzAgCCQEMSW50ZWdlckVudHJ5AgUSa19iYXNlQXNzZXRSZXNlcnZlBQdfYnNBc3RSCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrX3RvdGFsUG9zaXRpb25TaXplBRdfdG90YWxQb3NpdGlvblNpemVBZnRlcgkAzAgCCQEMSW50ZWdlckVudHJ5AgUUa19jdW11bGF0aXZlTm90aW9uYWwFGF9jdW11bGF0aXZlTm90aW9uYWxBZnRlcgkAzAgCCQEMSW50ZWdlckVudHJ5AgUWa19vcGVuSW50ZXJlc3ROb3Rpb25hbAUVX29wZW5JbnRlcmVzdE5vdGlvbmFsCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRdrX3RvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQUWX3RvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUYa190b3RhbFNob3J0UG9zaXRpb25TaXplBRdfdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQUDbmlsCQEKYXBwZW5kVHdhcAEJAQRkaXZkAgUHX3F0QXN0UgUHX2JzQXN0UgEOZGVsZXRlUG9zaXRpb24BCF9hZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ50b0NvbXBvc2l0ZUtleQIFDmtfcG9zaXRpb25TaXplBQhfYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQEOdG9Db21wb3NpdGVLZXkCBRBrX3Bvc2l0aW9uTWFyZ2luBQhfYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQEOdG9Db21wb3NpdGVLZXkCBRZrX3Bvc2l0aW9uT3Blbk5vdGlvbmFsBQhfYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQEOdG9Db21wb3NpdGVLZXkCBS5rX3Bvc2l0aW9uTGFzdFVwZGF0ZWRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uBQhfYWRkcmVzcwUDbmlsAQh3aXRoZHJhdwIIX2FkZHJlc3MHX2Ftb3VudAQHYmFsYW5jZQkA8AcCBQR0aGlzCQEKcXVvdGVBc3NldAADCQBmAgUHX2Ftb3VudAUHYmFsYW5jZQkAAgEJAKwCAgkArAICCQCsAgICE1VuYWJsZSB0byB3aXRoZHJhdyAJAKQDAQUHX2Ftb3VudAIXIGZyb20gY29udHJhY3QgYmFsYW5jZSAJAKQDAQUHYmFsYW5jZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQhfYWRkcmVzcwUHX2Ftb3VudAkBCnF1b3RlQXNzZXQABQNuaWwBDXVwZGF0ZUJhbGFuY2UBAWkDCQBmAgAABQFpCQACAQIHQmFsYW5jZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUJa19iYWxhbmNlBQFpBQNuaWwBC3RyYW5zZmVyRmVlAQFpCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQ5zdGFraW5nQWRkcmVzcwAFAWkJAQpxdW90ZUFzc2V0AAUDbmlsDgFpAQVwYXVzZQADCQECIT0CCAUBaQZjYWxsZXIJAQxhZG1pbkFkZHJlc3MACQACAQIaSW52YWxpZCB0b2dnbGVQYXVzZSBwYXJhbXMJAMwIAgkBDEJvb2xlYW5FbnRyeQIFCGtfcGF1c2VkBgUDbmlsAWkBB3VucGF1c2UAAwkBAiE9AggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAkAAgECGkludmFsaWQgdG9nZ2xlUGF1c2UgcGFyYW1zCQDMCAIJAQxCb29sZWFuRW50cnkCBQhrX3BhdXNlZAcFA25pbAFpAQ5jaGFuZ2VTZXR0aW5ncwcQX2luaXRNYXJnaW5SYXRpbwRfbW1yFF9saXF1aWRhdGlvbkZlZVJhdGlvDl9mdW5kaW5nUGVyaW9kBF9mZWUMX3NwcmVhZExpbWl0D19tYXhQcmljZUltcGFjdAMJAQIhPQIIBQFpBmNhbGxlcgkBDGFkbWluQWRkcmVzcwAJAAIBAh1JbnZhbGlkIGNoYW5nZVNldHRpbmdzIHBhcmFtcwkBDnVwZGF0ZVNldHRpbmdzBwUQX2luaXRNYXJnaW5SYXRpbwUEX21tcgUUX2xpcXVpZGF0aW9uRmVlUmF0aW8FDl9mdW5kaW5nUGVyaW9kBQRfZmVlBQxfc3ByZWFkTGltaXQFD19tYXhQcmljZUltcGFjdAFpAQppbml0aWFsaXplDAdfcXRBc3RSB19ic0FzdFIOX2Z1bmRpbmdQZXJpb2QQX2luaXRNYXJnaW5SYXRpbwRfbW1yFF9saXF1aWRhdGlvbkZlZVJhdGlvBF9mZWUHX29yYWNsZQpfb3JhY2xlS2V5DF9jb29yZGluYXRvcgxfc3ByZWFkTGltaXQPX21heFByaWNlSW1wYWN0AwMDAwMDAwMDAwkAZwIAAAUHX3F0QXN0UgYJAGcCAAAFB19ic0FzdFIGCQBnAgAABQ5fZnVuZGluZ1BlcmlvZAYJAGcCAAAFEF9pbml0TWFyZ2luUmF0aW8GCQBnAgAABQRfbW1yBgkAZwIAAAUUX2xpcXVpZGF0aW9uRmVlUmF0aW8GCQBnAgAABQRfZmVlBgkAZwIAAAUMX3NwcmVhZExpbWl0BgkAZwIAAAUPX21heFByaWNlSW1wYWN0BgkBC2luaXRpYWxpemVkAAkAAgECHUludmFsaWQgaW5pdGlhbGl6ZSBwYXJhbWV0ZXJzCQDOCAIJAM4IAgkAzggCCQDOCAIJAQl1cGRhdGVBbW0HBQdfcXRBc3RSBQdfYnNBc3RSAAAAAAAAAAAAAAkBDnVwZGF0ZVNldHRpbmdzBwUQX2luaXRNYXJnaW5SYXRpbwUEX21tcgUUX2xpcXVpZGF0aW9uRmVlUmF0aW8FDl9mdW5kaW5nUGVyaW9kBQRfZmVlBQxfc3ByZWFkTGltaXQFD19tYXhQcmljZUltcGFjdAkBDXVwZGF0ZUZ1bmRpbmcFCQBkAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFDl9mdW5kaW5nUGVyaW9kAAAAAAAAAAAJAQ11cGRhdGVCYWxhbmNlAQAACQDMCAIJAQxCb29sZWFuRW50cnkCBQ1rX2luaXRpYWxpemVkBgkAzAgCCQELU3RyaW5nRW50cnkCBQVrX29yYQUHX29yYWNsZQkAzAgCCQELU3RyaW5nRW50cnkCBQlrX29yYV9rZXkFCl9vcmFjbGVLZXkJAMwIAgkBC1N0cmluZ0VudHJ5AgUUa19jb29yZGluYXRvckFkZHJlc3MFDF9jb29yZGluYXRvcgUDbmlsAWkBEGRlY3JlYXNlUG9zaXRpb24DB19hbW91bnQJX2xldmVyYWdlE19taW5CYXNlQXNzZXRBbW91bnQDAwMDAwMJAGcCAAAFB19hbW91bnQGAwkAZgIJAGgCAAEFDERFQ0lNQUxfVU5JVAUJX2xldmVyYWdlBgkAZgIFCV9sZXZlcmFnZQkAaAIAAwUMREVDSU1BTF9VTklUBgkBASEBCQELaW5pdGlhbGl6ZWQABgkBASEBCQEWcmVxdWlyZU1vcmVNYXJnaW5SYXRpbwMJAQRkaXZkAgUMREVDSU1BTF9VTklUBQlfbGV2ZXJhZ2UJAQ9pbml0TWFyZ2luUmF0aW8ABgYJAQEhAQkBE3JlcXVpcmVPcGVuUG9zaXRpb24BCQClCAEIBQFpBmNhbGxlcgYJAQZwYXVzZWQACQACAQIjSW52YWxpZCBkZWNyZWFzZVBvc2l0aW9uIHBhcmFtZXRlcnMEDSR0MDI4NjAwMjg3NTIJAQtnZXRQb3NpdGlvbgEJAKUIAQgFAWkGY2FsbGVyBA9vbGRQb3NpdGlvblNpemUIBQ0kdDAyODYwMDI4NzUyAl8xBBFvbGRQb3NpdGlvbk1hcmdpbggFDSR0MDI4NjAwMjg3NTICXzIEF29sZFBvc2l0aW9uT3Blbk5vdGlvbmFsCAUNJHQwMjg2MDAyODc1MgJfMwQUb2xkUG9zaXRpb25Mc3RVcGRDUEYIBQ0kdDAyODYwMDI4NzUyAl80BApfZGlyZWN0aW9uAwkAZgIFD29sZFBvc2l0aW9uU2l6ZQAABQlESVJfU0hPUlQFCERJUl9MT05HBAVpc0FkZAkAAAIFCl9kaXJlY3Rpb24FCERJUl9MT05HBAxvcGVuTm90aW9uYWwJAQRtdWxkAgUHX2Ftb3VudAUJX2xldmVyYWdlBA0kdDAyODkyNTI5MDQxCQEjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwCCQClCAEIBQFpBmNhbGxlcgUPUE5MX09QVElPTl9TUE9UBBNvbGRQb3NpdGlvbk5vdGlvbmFsCAUNJHQwMjg5MjUyOTA0MQJfMQQNdW5yZWFsaXplZFBubAgFDSR0MDI4OTI1MjkwNDECXzIEDSR0MDI5MDQ3MzE1OTYDCQBmAgUTb2xkUG9zaXRpb25Ob3Rpb25hbAUMb3Blbk5vdGlvbmFsBA0kdDAyOTQyNDI5NjQzCQEJc3dhcElucHV0AgUFaXNBZGQFDG9wZW5Ob3Rpb25hbAQVZXhjaGFuZ2VkUG9zaXRpb25TaXplCAUNJHQwMjk0MjQyOTY0MwJfMQQWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFDSR0MDI5NDI0Mjk2NDMCXzIEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDI5NDI0Mjk2NDMCXzMEFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQ0kdDAyOTQyNDI5NjQzAl80BBdjdW11bGF0aXZlTm90aW9uYWxBZnRlcggFDSR0MDI5NDI0Mjk2NDMCXzUEGGV4Y2hhbmdlZFBvc2l0aW9uU2l6ZUFicwkBA2FicwEFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQMDCQECIT0CBRNfbWluQmFzZUFzc2V0QW1vdW50AAAJAGYCBRNfbWluQmFzZUFzc2V0QW1vdW50BRhleGNoYW5nZWRQb3NpdGlvblNpemVBYnMHCQACAQkArAICCQCsAgIJAKwCAgIlVG9vIGxpdHRsZSBiYXNlIGFzc2V0IGV4Y2hhbmdlZCwgZ290IAkApAMBBRhleGNoYW5nZWRQb3NpdGlvblNpemVBYnMCCiBleHBlY3RlZCAJAKQDAQUTX21pbkJhc2VBc3NldEFtb3VudAQLcmVhbGl6ZWRQbmwJAQRkaXZkAgkBBG11bGQCBQ11bnJlYWxpemVkUG5sBRhleGNoYW5nZWRQb3NpdGlvblNpemVBYnMJAQNhYnMBBQ9vbGRQb3NpdGlvblNpemUEDSR0MDMwMDgwMzAzMjUJASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BAUPb2xkUG9zaXRpb25TaXplBRFvbGRQb3NpdGlvbk1hcmdpbgUUb2xkUG9zaXRpb25Mc3RVcGRDUEYFC3JlYWxpemVkUG5sBAxyZW1haW5NYXJnaW4IBQ0kdDAzMDA4MDMwMzI1Al8xBAdiYWREZWJ0CAUNJHQwMzAwODAzMDMyNQJfMgQOZnVuZGluZ1BheW1lbnQIBQ0kdDAzMDA4MDMwMzI1Al8zBBlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50BQxvcGVuTm90aW9uYWwEEnVucmVhbGl6ZWRQbmxBZnRlcgkAZQIFDXVucmVhbGl6ZWRQbmwFC3JlYWxpemVkUG5sBBJyZW1haW5PcGVuTm90aW9uYWwDCQBmAgUPb2xkUG9zaXRpb25TaXplAAAJAGUCCQBlAgUTb2xkUG9zaXRpb25Ob3Rpb25hbAUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAUSdW5yZWFsaXplZFBubEFmdGVyCQBlAgkAZAIFEnVucmVhbGl6ZWRQbmxBZnRlcgUTb2xkUG9zaXRpb25Ob3Rpb25hbAUZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAQPbmV3UG9zaXRpb25TaXplCQBkAgUPb2xkUG9zaXRpb25TaXplBRVleGNoYW5nZWRQb3NpdGlvblNpemUJAJ0KCwUPbmV3UG9zaXRpb25TaXplBQxyZW1haW5NYXJnaW4JAQNhYnMBBRJyZW1haW5PcGVuTm90aW9uYWwJAR9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAQUPbmV3UG9zaXRpb25TaXplBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyCQBlAgkBFG9wZW5JbnRlcmVzdE5vdGlvbmFsAAUMb3Blbk5vdGlvbmFsCQBlAgkBFXRvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQADCQBmAgUPbmV3UG9zaXRpb25TaXplAAAJAQNhYnMBBRVleGNoYW5nZWRQb3NpdGlvblNpemUAAAkAZQIJARZ0b3RhbFNob3J0UG9zaXRpb25TaXplAAMJAGYCAAAFD25ld1Bvc2l0aW9uU2l6ZQkBA2FicwEFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQAACQACAQIUQ2xvc2UgcG9zaXRpb24gZmlyc3QED25ld1Bvc2l0aW9uU2l6ZQgFDSR0MDI5MDQ3MzE1OTYCXzEEF25ld1Bvc2l0aW9uUmVtYWluTWFyZ2luCAUNJHQwMjkwNDczMTU5NgJfMgQXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDAyOTA0NzMxNTk2Al8zBBRuZXdQb3NpdGlvbkxhdGVzdENQRggFDSR0MDI5MDQ3MzE1OTYCXzQEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDI5MDQ3MzE1OTYCXzUEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDAyOTA0NzMxNTk2Al82BBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwMjkwNDczMTU5NgJfNwQXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIIBQ0kdDAyOTA0NzMxNTk2Al84BBlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyCAUNJHQwMjkwNDczMTU5NgJfOQQOdG90YWxMb25nQWZ0ZXIIBQ0kdDAyOTA0NzMxNTk2A18xMAQPdG90YWxTaG9ydEFmdGVyCAUNJHQwMjkwNDczMTU5NgNfMTEEDm5vdGlmeU5vdGlvbmFsCQD8BwQJAQxtaW5lckFkZHJlc3MAAg5ub3RpZnlOb3Rpb25hbAkAzAgCCQClCAEIBQFpBmNhbGxlcgkAzAgCBRduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAUDbmlsBQNuaWwDCQAAAgUObm90aWZ5Tm90aW9uYWwFDm5vdGlmeU5vdGlvbmFsCQDOCAIJAQ51cGRhdGVQb3NpdGlvbgUJAKUIAQgFAWkGY2FsbGVyBQ9uZXdQb3NpdGlvblNpemUFF25ld1Bvc2l0aW9uUmVtYWluTWFyZ2luBRduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAUUbmV3UG9zaXRpb25MYXRlc3RDUEYJAQl1cGRhdGVBbW0HBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyBRlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyBQ50b3RhbExvbmdBZnRlcgUPdG90YWxTaG9ydEFmdGVyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEGluY3JlYXNlUG9zaXRpb24DCl9kaXJlY3Rpb24JX2xldmVyYWdlE19taW5CYXNlQXNzZXRBbW91bnQECl9yYXdBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AwMDAwMDAwMJAQIhPQIFCl9kaXJlY3Rpb24FCERJUl9MT05HCQECIT0CBQpfZGlyZWN0aW9uBQlESVJfU0hPUlQHBgkAZwIAAAUKX3Jhd0Ftb3VudAYDCQBmAgkAaAIAAQUMREVDSU1BTF9VTklUBQlfbGV2ZXJhZ2UGCQBmAgUJX2xldmVyYWdlCQBoAgADBQxERUNJTUFMX1VOSVQGCQEBIQEJAQtpbml0aWFsaXplZAAGCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQJAQpxdW90ZUFzc2V0AAYJAQEhAQkBFnJlcXVpcmVNb3JlTWFyZ2luUmF0aW8DCQEEZGl2ZAIFDERFQ0lNQUxfVU5JVAUJX2xldmVyYWdlCQEPaW5pdE1hcmdpblJhdGlvAAYGCQEGcGF1c2VkAAkAAgECI0ludmFsaWQgaW5jcmVhc2VQb3NpdGlvbiBwYXJhbWV0ZXJzBAlmZWVBbW91bnQJAQRtdWxkAgUKX3Jhd0Ftb3VudAkBA2ZlZQAEB19hbW91bnQJAGUCBQpfcmF3QW1vdW50BQlmZWVBbW91bnQEDSR0MDMyNzg0MzI5MzYJAQtnZXRQb3NpdGlvbgEJAKUIAQgFAWkGY2FsbGVyBA9vbGRQb3NpdGlvblNpemUIBQ0kdDAzMjc4NDMyOTM2Al8xBBFvbGRQb3NpdGlvbk1hcmdpbggFDSR0MDMyNzg0MzI5MzYCXzIEF29sZFBvc2l0aW9uT3Blbk5vdGlvbmFsCAUNJHQwMzI3ODQzMjkzNgJfMwQUb2xkUG9zaXRpb25Mc3RVcGRDUEYIBQ0kdDAzMjc4NDMyOTM2Al80BA1pc05ld1Bvc2l0aW9uCQAAAgUPb2xkUG9zaXRpb25TaXplAAAED2lzU2FtZURpcmVjdGlvbgMJAGYCBQ9vbGRQb3NpdGlvblNpemUAAAkAAAIFCl9kaXJlY3Rpb24FCERJUl9MT05HCQAAAgUKX2RpcmVjdGlvbgUJRElSX1NIT1JUBA5leHBhbmRFeGlzdGluZwMJAQEhAQUNaXNOZXdQb3NpdGlvbgUPaXNTYW1lRGlyZWN0aW9uBwQFaXNBZGQJAAACBQpfZGlyZWN0aW9uBQhESVJfTE9ORwQNJHQwMzMyMjUzNTYxNAMDBQ1pc05ld1Bvc2l0aW9uBgUOZXhwYW5kRXhpc3RpbmcEDG9wZW5Ob3Rpb25hbAkBBG11bGQCBQdfYW1vdW50BQlfbGV2ZXJhZ2UEDSR0MDMzNjQ5MzM4NTUJAQlzd2FwSW5wdXQCBQVpc0FkZAUMb3Blbk5vdGlvbmFsBBVhbW91bnRCYXNlQXNzZXRCb3VnaHQIBQ0kdDAzMzY0OTMzODU1Al8xBBZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwMzM2NDkzMzg1NQJfMgQVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwMzM2NDkzMzg1NQJfMwQWdG90YWxQb3NpdGlvblNpemVBZnRlcggFDSR0MDMzNjQ5MzM4NTUCXzQEF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyCAUNJHQwMzM2NDkzMzg1NQJfNQMDCQECIT0CBRNfbWluQmFzZUFzc2V0QW1vdW50AAAJAGYCBRNfbWluQmFzZUFzc2V0QW1vdW50CQEDYWJzAQUVYW1vdW50QmFzZUFzc2V0Qm91Z2h0BwkAAgEJAKwCAgkArAICCQCsAgICDUxpbWl0IGVycm9yOiAJAKQDAQkBA2FicwEFFWFtb3VudEJhc2VBc3NldEJvdWdodAIDIDwgCQCkAwEFE19taW5CYXNlQXNzZXRBbW91bnQED25ld1Bvc2l0aW9uU2l6ZQkAZAIFD29sZFBvc2l0aW9uU2l6ZQUVYW1vdW50QmFzZUFzc2V0Qm91Z2h0BBlpbmNyZWFzZU1hcmdpblJlcXVpcmVtZW50CQEEZGl2ZAIFDG9wZW5Ob3Rpb25hbAUJX2xldmVyYWdlBA0kdDAzNDIzNjM0NDc1CQEiY2FsY1JlbWFpbk1hcmdpbldpdGhGdW5kaW5nUGF5bWVudAQFD29sZFBvc2l0aW9uU2l6ZQURb2xkUG9zaXRpb25NYXJnaW4FFG9sZFBvc2l0aW9uTHN0VXBkQ1BGBRlpbmNyZWFzZU1hcmdpblJlcXVpcmVtZW50BAxyZW1haW5NYXJnaW4IBQ0kdDAzNDIzNjM0NDc1Al8xBAJ4MQgFDSR0MDM0MjM2MzQ0NzUCXzIEAngyCAUNJHQwMzQyMzYzNDQ3NQJfMwkAnQoLBQ9uZXdQb3NpdGlvblNpemUFDHJlbWFpbk1hcmdpbgkAZAIFF29sZFBvc2l0aW9uT3Blbk5vdGlvbmFsBQxvcGVuTm90aW9uYWwJAR9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAQUPbmV3UG9zaXRpb25TaXplBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyCQBkAgkBFG9wZW5JbnRlcmVzdE5vdGlvbmFsAAUMb3Blbk5vdGlvbmFsCQBkAgkBFXRvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQADCQBmAgUPbmV3UG9zaXRpb25TaXplAAAJAQNhYnMBBRVhbW91bnRCYXNlQXNzZXRCb3VnaHQAAAkAZAIJARZ0b3RhbFNob3J0UG9zaXRpb25TaXplAAMJAGYCAAAFD25ld1Bvc2l0aW9uU2l6ZQkBA2FicwEFFWFtb3VudEJhc2VBc3NldEJvdWdodAAABAxvcGVuTm90aW9uYWwJAQRtdWxkAgUHX2Ftb3VudAUJX2xldmVyYWdlBA0kdDAzNTMwNzM1NDIzCQEjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwCCQClCAEIBQFpBmNhbGxlcgUPUE5MX09QVElPTl9TUE9UBBNvbGRQb3NpdGlvbk5vdGlvbmFsCAUNJHQwMzUzMDczNTQyMwJfMQQNdW5yZWFsaXplZFBubAgFDSR0MDM1MzA3MzU0MjMCXzIDCQBmAgUTb2xkUG9zaXRpb25Ob3Rpb25hbAUMb3Blbk5vdGlvbmFsCQACAQIuVXNlIGRlY3JlYXNlUG9zaXRpb24gdG8gZGVjcmVhc2UgcG9zaXRpb24gc2l6ZQkAAgECFENsb3NlIHBvc2l0aW9uIGZpcnN0BA9uZXdQb3NpdGlvblNpemUIBQ0kdDAzMzIyNTM1NjE0Al8xBBduZXdQb3NpdGlvblJlbWFpbk1hcmdpbggFDSR0MDMzMjI1MzU2MTQCXzIEF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsCAUNJHQwMzMyMjUzNTYxNAJfMwQUbmV3UG9zaXRpb25MYXRlc3RDUEYIBQ0kdDAzMzIyNTM1NjE0Al80BBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDAzMzIyNTM1NjE0Al81BBZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwMzMyMjUzNTYxNAJfNgQWdG90YWxQb3NpdGlvblNpemVBZnRlcggFDSR0MDMzMjI1MzU2MTQCXzcEF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyCAUNJHQwMzMyMjUzNTYxNAJfOAQZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcggFDSR0MDMzMjI1MzU2MTQCXzkEDnRvdGFsTG9uZ0FmdGVyCAUNJHQwMzMyMjUzNTYxNANfMTAED3RvdGFsU2hvcnRBZnRlcggFDSR0MDMzMjI1MzU2MTQDXzExBAxmZWVUb1N0YWtlcnMJAGkCBQlmZWVBbW91bnQAAgQOZmVlVG9JbnN1cmFuY2UJAGUCBQlmZWVBbW91bnQFDGZlZVRvU3Rha2VycwQFc3Rha2UJAPwHBAkBEXF1b3RlQXNzZXRTdGFraW5nAAIObG9ja05ldXRyaW5vU1AJAMwIAgkApQgBCQEOc3Rha2luZ0FkZHJlc3MACQDMCAIFCEFMTF9GRUVTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQpxdW90ZUFzc2V0AAUHX2Ftb3VudAUDbmlsAwkAAAIFBXN0YWtlBQVzdGFrZQQQZGVwb3NpdEluc3VyYW5jZQkA/AcECQEQaW5zdXJhbmNlQWRkcmVzcwACB2RlcG9zaXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQABQ5mZWVUb0luc3VyYW5jZQUDbmlsAwkAAAIFEGRlcG9zaXRJbnN1cmFuY2UFEGRlcG9zaXRJbnN1cmFuY2UECW5vdGlmeUZlZQkA/AcECQEMbWluZXJBZGRyZXNzAAIKbm90aWZ5RmVlcwkAzAgCCQClCAEIBQFpBmNhbGxlcgkAzAgCBQlmZWVBbW91bnQFA25pbAUDbmlsAwkAAAIFCW5vdGlmeUZlZQUJbm90aWZ5RmVlBA5ub3RpZnlOb3Rpb25hbAkA/AcECQEMbWluZXJBZGRyZXNzAAIObm90aWZ5Tm90aW9uYWwJAMwIAgkApQgBCAUBaQZjYWxsZXIJAMwIAgUXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwFA25pbAUDbmlsAwkAAAIFDm5vdGlmeU5vdGlvbmFsBQ5ub3RpZnlOb3Rpb25hbAkAzggCCQDOCAIJAM4IAgkBDnVwZGF0ZVBvc2l0aW9uBQkApQgBCAUBaQZjYWxsZXIFD25ld1Bvc2l0aW9uU2l6ZQUXbmV3UG9zaXRpb25SZW1haW5NYXJnaW4FF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsBRRuZXdQb3NpdGlvbkxhdGVzdENQRgkBCXVwZGF0ZUFtbQcFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFWJhc2VBc3NldFJlc2VydmVBZnRlcgUWdG90YWxQb3NpdGlvblNpemVBZnRlcgUXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIFGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIFDnRvdGFsTG9uZ0FmdGVyBQ90b3RhbFNob3J0QWZ0ZXIJAQt0cmFuc2ZlckZlZQEFDGZlZVRvU3Rha2VycwkBDXVwZGF0ZUJhbGFuY2UBCQBkAgkBCGNiYWxhbmNlAAUHX2Ftb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQlhZGRNYXJnaW4ABApfcmF3QW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAMDAwMJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAkBCnF1b3RlQXNzZXQABgkBASEBCQETcmVxdWlyZU9wZW5Qb3NpdGlvbgEJAKUIAQgFAWkGY2FsbGVyBgkBASEBCQELaW5pdGlhbGl6ZWQABgkBBnBhdXNlZAAJAAIBAhxJbnZhbGlkIGFkZE1hcmdpbiBwYXJhbWV0ZXJzBAlmZWVBbW91bnQJAQRtdWxkAgUKX3Jhd0Ftb3VudAkBA2ZlZQAEB19hbW91bnQJAGUCBQpfcmF3QW1vdW50BQlmZWVBbW91bnQEDSR0MDM3MTcwMzczMjIJAQtnZXRQb3NpdGlvbgEJAKUIAQgFAWkGY2FsbGVyBA9vbGRQb3NpdGlvblNpemUIBQ0kdDAzNzE3MDM3MzIyAl8xBBFvbGRQb3NpdGlvbk1hcmdpbggFDSR0MDM3MTcwMzczMjICXzIEF29sZFBvc2l0aW9uT3Blbk5vdGlvbmFsCAUNJHQwMzcxNzAzNzMyMgJfMwQUb2xkUG9zaXRpb25Mc3RVcGRDUEYIBQ0kdDAzNzE3MDM3MzIyAl80BAxmZWVUb1N0YWtlcnMJAGkCBQlmZWVBbW91bnQAAgQOZmVlVG9JbnN1cmFuY2UJAGUCBQlmZWVBbW91bnQFDGZlZVRvU3Rha2VycwQFc3Rha2UJAPwHBAkBEXF1b3RlQXNzZXRTdGFraW5nAAIObG9ja05ldXRyaW5vU1AJAMwIAgkApQgBCQEOc3Rha2luZ0FkZHJlc3MACQDMCAIFCEFMTF9GRUVTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQpxdW90ZUFzc2V0AAUHX2Ftb3VudAUDbmlsAwkAAAIFBXN0YWtlBQVzdGFrZQQQZGVwb3NpdEluc3VyYW5jZQkA/AcECQEQaW5zdXJhbmNlQWRkcmVzcwACB2RlcG9zaXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQABQ5mZWVUb0luc3VyYW5jZQUDbmlsAwkAAAIFEGRlcG9zaXRJbnN1cmFuY2UFEGRlcG9zaXRJbnN1cmFuY2UECW5vdGlmeUZlZQkA/AcECQEMbWluZXJBZGRyZXNzAAIKbm90aWZ5RmVlcwkAzAgCCQClCAEIBQFpBmNhbGxlcgkAzAgCBQlmZWVBbW91bnQFA25pbAUDbmlsAwkAAAIFCW5vdGlmeUZlZQUJbm90aWZ5RmVlCQDOCAIJAM4IAgkBDnVwZGF0ZVBvc2l0aW9uBQkApQgBCAUBaQZjYWxsZXIFD29sZFBvc2l0aW9uU2l6ZQkAZAIFEW9sZFBvc2l0aW9uTWFyZ2luBQdfYW1vdW50BRdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAUUb2xkUG9zaXRpb25Mc3RVcGRDUEYJAQt0cmFuc2ZlckZlZQEFDGZlZVRvU3Rha2VycwkBDXVwZGF0ZUJhbGFuY2UBCQBkAgkBCGNiYWxhbmNlAAUHX2Ftb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQxyZW1vdmVNYXJnaW4BB19hbW91bnQDAwMDCQBnAgAABQdfYW1vdW50BgkBASEBCQETcmVxdWlyZU9wZW5Qb3NpdGlvbgEJAKUIAQgFAWkGY2FsbGVyBgkBASEBCQELaW5pdGlhbGl6ZWQABgkBBnBhdXNlZAAJAAIBAh9JbnZhbGlkIHJlbW92ZU1hcmdpbiBwYXJhbWV0ZXJzBA0kdDAzODM3MTM4NTIzCQELZ2V0UG9zaXRpb24BCQClCAEIBQFpBmNhbGxlcgQPb2xkUG9zaXRpb25TaXplCAUNJHQwMzgzNzEzODUyMwJfMQQRb2xkUG9zaXRpb25NYXJnaW4IBQ0kdDAzODM3MTM4NTIzAl8yBBdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDM4MzcxMzg1MjMCXzMEFG9sZFBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwMzgzNzEzODUyMwJfNAQLbWFyZ2luRGVsdGEJAQEtAQUHX2Ftb3VudAQNJHQwMzg1NjAzODczOQkBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEBQ9vbGRQb3NpdGlvblNpemUFEW9sZFBvc2l0aW9uTWFyZ2luBRRvbGRQb3NpdGlvbkxzdFVwZENQRgULbWFyZ2luRGVsdGEEDHJlbWFpbk1hcmdpbggFDSR0MDM4NTYwMzg3MzkCXzEEB2JhZERlYnQIBQ0kdDAzODU2MDM4NzM5Al8yAwkBAiE9AgUHYmFkRGVidAAACQACAQIdSW52YWxpZCByZW1vdmVkIG1hcmdpbiBhbW91bnQEC21hcmdpblJhdGlvCQEPY2FsY01hcmdpblJhdGlvAwUMcmVtYWluTWFyZ2luBQdiYWREZWJ0BRdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAMJAQEhAQkBFnJlcXVpcmVNb3JlTWFyZ2luUmF0aW8DBQttYXJnaW5SYXRpbwkBD2luaXRNYXJnaW5SYXRpbwAGCQACAQkArAICCQCsAgIJAKwCAgIZVG9vIG11Y2ggbWFyZ2luIHJlbW92ZWQ6IAkApAMBBQttYXJnaW5SYXRpbwIDIDwgCQCkAwEJAQ9pbml0TWFyZ2luUmF0aW8ABAd1bnN0YWtlCQD8BwQJARFxdW90ZUFzc2V0U3Rha2luZwACDnVubG9ja05ldXRyaW5vCQDMCAIFB19hbW91bnQJAMwIAgkA2AQBCQEKcXVvdGVBc3NldAAFA25pbAUDbmlsAwkAAAIFB3Vuc3Rha2UFB3Vuc3Rha2UJAM4IAgkAzggCCQEOdXBkYXRlUG9zaXRpb24FCQClCAEIBQFpBmNhbGxlcgUPb2xkUG9zaXRpb25TaXplBQxyZW1haW5NYXJnaW4FF29sZFBvc2l0aW9uT3Blbk5vdGlvbmFsCQEfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgEFD29sZFBvc2l0aW9uU2l6ZQkBCHdpdGhkcmF3AggFAWkGY2FsbGVyBQdfYW1vdW50CQENdXBkYXRlQmFsYW5jZQEJAGUCCQEIY2JhbGFuY2UABQdfYW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDWNsb3NlUG9zaXRpb24AAwMDCQEBIQEJARNyZXF1aXJlT3BlblBvc2l0aW9uAQkApQgBCAUBaQZjYWxsZXIGCQEBIQEJAQtpbml0aWFsaXplZAAGCQEGcGF1c2VkAAkAAgECIEludmFsaWQgY2xvc2VQb3NpdGlvbiBwYXJhbWV0ZXJzBA0kdDAzOTgzNTQwMjE5CQEVaW50ZXJuYWxDbG9zZVBvc2l0aW9uAQkApQgBCAUBaQZjYWxsZXIEAngxCAUNJHQwMzk4MzU0MDIxOQJfMQQPcG9zaXRpb25CYWREZWJ0CAUNJHQwMzk4MzU0MDIxOQJfMgQLcmVhbGl6ZWRQbmwIBQ0kdDAzOTgzNTQwMjE5Al8zBA1tYXJnaW5Ub1ZhdWx0CAUNJHQwMzk4MzU0MDIxOQJfNAQWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFDSR0MDM5ODM1NDAyMTkCXzUEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDM5ODM1NDAyMTkCXzYEFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQ0kdDAzOTgzNTQwMjE5Al83BBdjdW11bGF0aXZlTm90aW9uYWxBZnRlcggFDSR0MDM5ODM1NDAyMTkCXzgEGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIIBQ0kdDAzOTgzNTQwMjE5Al85BAJ4MggFDSR0MDM5ODM1NDAyMTkDXzEwBA50b3RhbExvbmdBZnRlcggFDSR0MDM5ODM1NDAyMTkDXzExBA90b3RhbFNob3J0QWZ0ZXIIBQ0kdDAzOTgzNTQwMjE5A18xMgMJAGYCBQ9wb3NpdGlvbkJhZERlYnQAAAkAAgECJlVuYWJsZSB0byBjbG9zZSBwb3NpdGlvbiB3aXRoIGJhZCBkZWJ0BA53aXRoZHJhd0Ftb3VudAkBA2FicwEFDW1hcmdpblRvVmF1bHQECmFtbUJhbGFuY2UJAGUCCQEIY2JhbGFuY2UABQ53aXRoZHJhd0Ftb3VudAQNJHQwNDA0Mjg0MDU3MAMJAGYCAAAFCmFtbUJhbGFuY2UJAJQKAgAACQEDYWJzAQUKYW1tQmFsYW5jZQkAlAoCBQphbW1CYWxhbmNlAAAEDWFtbU5ld0JhbGFuY2UIBQ0kdDA0MDQyODQwNTcwAl8xBBBnZXRGcm9tSW5zdXJhbmNlCAUNJHQwNDA0Mjg0MDU3MAJfMgQBeAMJAGYCBRBnZXRGcm9tSW5zdXJhbmNlAAAEEXdpdGhkcmF3SW5zdXJhbmNlCQD8BwQJARBpbnN1cmFuY2VBZGRyZXNzAAIId2l0aGRyYXcJAMwIAgUQZ2V0RnJvbUluc3VyYW5jZQUDbmlsBQNuaWwDCQAAAgURd2l0aGRyYXdJbnN1cmFuY2UFEXdpdGhkcmF3SW5zdXJhbmNlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAMJAAACBQF4BQF4BAd1bnN0YWtlCQD8BwQJARFxdW90ZUFzc2V0U3Rha2luZwACDnVubG9ja05ldXRyaW5vCQDMCAIJAGUCBQ53aXRoZHJhd0Ftb3VudAUQZ2V0RnJvbUluc3VyYW5jZQkAzAgCCQDYBAEJAQpxdW90ZUFzc2V0AAUDbmlsBQNuaWwDCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQQObm90aWZ5Tm90aW9uYWwJAPwHBAkBDG1pbmVyQWRkcmVzcwACDm5vdGlmeU5vdGlvbmFsCQDMCAIJAKUIAQgFAWkGY2FsbGVyCQDMCAIAAAUDbmlsBQNuaWwDCQAAAgUObm90aWZ5Tm90aW9uYWwFDm5vdGlmeU5vdGlvbmFsCQDOCAIJAM4IAgkAzggCCQEOZGVsZXRlUG9zaXRpb24BCQClCAEIBQFpBmNhbGxlcgkBCXVwZGF0ZUFtbQcFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFWJhc2VBc3NldFJlc2VydmVBZnRlcgUWdG90YWxQb3NpdGlvblNpemVBZnRlcgUXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIFGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIFDnRvdGFsTG9uZ0FmdGVyBQ90b3RhbFNob3J0QWZ0ZXIJAQh3aXRoZHJhdwIIBQFpBmNhbGxlcgUOd2l0aGRyYXdBbW91bnQJAQ11cGRhdGVCYWxhbmNlAQUNYW1tTmV3QmFsYW5jZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQlsaXF1aWRhdGUBB190cmFkZXIED3Nwb3RNYXJnaW5SYXRpbwkBFmdldE1hcmdpblJhdGlvQnlPcHRpb24CBQdfdHJhZGVyBQ9QTkxfT1BUSU9OX1NQT1QEC21hcmdpblJhdGlvAwkBFmlzT3ZlckZsdWN0dWF0aW9uTGltaXQABBFvcmFjbGVNYXJnaW5SYXRpbwkBFmdldE1hcmdpblJhdGlvQnlPcHRpb24CBQdfdHJhZGVyBRFQTkxfT1BUSU9OX09SQUNMRQkBBHZtYXgCBQ9zcG90TWFyZ2luUmF0aW8FEW9yYWNsZU1hcmdpblJhdGlvBQ9zcG90TWFyZ2luUmF0aW8DAwMDCQEBIQEJARZyZXF1aXJlTW9yZU1hcmdpblJhdGlvAwULbWFyZ2luUmF0aW8JARZtYWludGVuYW5jZU1hcmdpblJhdGlvAAcGCQEBIQEJARNyZXF1aXJlT3BlblBvc2l0aW9uAQUHX3RyYWRlcgYJAQEhAQkBC2luaXRpYWxpemVkAAYJAQZwYXVzZWQACQACAQITVW5hYmxlIHRvIGxpcXVpZGF0ZQQNJHQwNDIyNjA0MjY3NgkBFWludGVybmFsQ2xvc2VQb3NpdGlvbgEFB190cmFkZXIEAngxCAUNJHQwNDIyNjA0MjY3NgJfMQQHYmFkRGVidAgFDSR0MDQyMjYwNDI2NzYCXzIEAngyCAUNJHQwNDIyNjA0MjY3NgJfMwQCeDMIBQ0kdDA0MjI2MDQyNjc2Al80BBZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwNDIyNjA0MjY3NgJfNQQVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwNDIyNjA0MjY3NgJfNgQWdG90YWxQb3NpdGlvblNpemVBZnRlcggFDSR0MDQyMjYwNDI2NzYCXzcEF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyCAUNJHQwNDIyNjA0MjY3NgJfOAQZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcggFDSR0MDQyMjYwNDI2NzYCXzkEGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQIBQ0kdDA0MjI2MDQyNjc2A18xMAQOdG90YWxMb25nQWZ0ZXIIBQ0kdDA0MjI2MDQyNjc2A18xMQQPdG90YWxTaG9ydEFmdGVyCAUNJHQwNDIyNjA0MjY3NgNfMTIEEmxpcXVpZGF0aW9uUGVuYWx0eQkBBG11bGQCBRlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50CQETbGlxdWlkYXRpb25GZWVSYXRpbwAED2ZlZVRvTGlxdWlkYXRvcgkAaQIFEmxpcXVpZGF0aW9uUGVuYWx0eQACBA5mZWVUb0luc3VyYW5jZQkAZQIFEmxpcXVpZGF0aW9uUGVuYWx0eQUPZmVlVG9MaXF1aWRhdG9yBAphbW1CYWxhbmNlCQBlAgkBCGNiYWxhbmNlAAUSbGlxdWlkYXRpb25QZW5hbHR5BA0kdDA0MzA3NDQzMjA5AwkAZgIAAAUKYW1tQmFsYW5jZQkAlAoCAAAJAQNhYnMBBQphbW1CYWxhbmNlCQCUCgIFCmFtbUJhbGFuY2UAAAQNbmV3QW1tQmFsYW5jZQgFDSR0MDQzMDc0NDMyMDkCXzEEEXRha2VGcm9tSW5zdXJhbmNlCAUNJHQwNDMwNzQ0MzIwOQJfMgQBeAMJAGYCBRF0YWtlRnJvbUluc3VyYW5jZQAABBF3aXRoZHJhd0luc3VyYW5jZQkA/AcECQEQaW5zdXJhbmNlQWRkcmVzcwACCHdpdGhkcmF3CQDMCAIFEXRha2VGcm9tSW5zdXJhbmNlBQNuaWwFA25pbAMJAAACBRF3aXRoZHJhd0luc3VyYW5jZQURd2l0aGRyYXdJbnN1cmFuY2UFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsAwkAAAIFAXgFAXgEB3Vuc3Rha2UJAPwHBAkBEXF1b3RlQXNzZXRTdGFraW5nAAIOdW5sb2NrTmV1dHJpbm8JAMwIAgkAZQIFEmxpcXVpZGF0aW9uUGVuYWx0eQURdGFrZUZyb21JbnN1cmFuY2UJAMwIAgkA2AQBCQEKcXVvdGVBc3NldAAFA25pbAUDbmlsAwkAAAIFB3Vuc3Rha2UFB3Vuc3Rha2UEEGRlcG9zaXRJbnN1cmFuY2UJAPwHBAkBEGluc3VyYW5jZUFkZHJlc3MAAgdkZXBvc2l0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQpxdW90ZUFzc2V0AAUOZmVlVG9JbnN1cmFuY2UFA25pbAMJAAACBRBkZXBvc2l0SW5zdXJhbmNlBRBkZXBvc2l0SW5zdXJhbmNlBA5ub3RpZnlOb3Rpb25hbAkA/AcECQEMbWluZXJBZGRyZXNzAAIObm90aWZ5Tm90aW9uYWwJAMwIAgUHX3RyYWRlcgkAzAgCAAAFA25pbAUDbmlsAwkAAAIFDm5vdGlmeU5vdGlvbmFsBQ5ub3RpZnlOb3Rpb25hbAkAzggCCQDOCAIJAM4IAgkBDmRlbGV0ZVBvc2l0aW9uAQUHX3RyYWRlcgkBCXVwZGF0ZUFtbQcFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFWJhc2VBc3NldFJlc2VydmVBZnRlcgUWdG90YWxQb3NpdGlvblNpemVBZnRlcgUXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIFGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIFDnRvdGFsTG9uZ0FmdGVyBQ90b3RhbFNob3J0QWZ0ZXIJAQh3aXRoZHJhdwIIBQFpBmNhbGxlcgUPZmVlVG9MaXF1aWRhdG9yCQENdXBkYXRlQmFsYW5jZQEFDW5ld0FtbUJhbGFuY2UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKcGF5RnVuZGluZwAEFWZ1bmRpbmdCbG9ja1RpbWVzdGFtcAkBGW5leHRGdW5kaW5nQmxvY2tUaW1lc3RhbXAAAwMDCQBmAgUVZnVuZGluZ0Jsb2NrVGltZXN0YW1wCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAYJAQEhAQkBC2luaXRpYWxpemVkAAYJAQZwYXVzZWQACQACAQkArAICCQCsAgIJAKwCAgIhSW52YWxpZCBmdW5kaW5nIGJsb2NrIHRpbWVzdGFtcDogCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wAgMgPCAJAKQDAQUVZnVuZGluZ0Jsb2NrVGltZXN0YW1wBA91bmRlcmx5aW5nUHJpY2UJARJnZXRPcmFjbGVUd2FwUHJpY2UABA1zcG90VHdhcFByaWNlCQEQZ2V0VHdhcFNwb3RQcmljZQAEB3ByZW1pdW0JAGUCBQ1zcG90VHdhcFByaWNlBQ91bmRlcmx5aW5nUHJpY2UEDSR0MDQ0NzAzNDYwMzgDAwkAAAIJARZ0b3RhbFNob3J0UG9zaXRpb25TaXplAAAABgkAAAIJARV0b3RhbExvbmdQb3NpdGlvblNpemUAAAAJAJQKAgAAAAADCQBmAgAABQdwcmVtaXVtBBRzaG9ydFByZW1pdW1GcmFjdGlvbgkBBGRpdmQCCQEEbXVsZAIFB3ByZW1pdW0JARRmdW5kaW5nUGVyaW9kRGVjaW1hbAAFB09ORV9EQVkEE2xvbmdQcmVtaXVtRnJhY3Rpb24JAQRkaXZkAgkBBG11bGQCBRRzaG9ydFByZW1pdW1GcmFjdGlvbgkBFnRvdGFsU2hvcnRQb3NpdGlvblNpemUACQEVdG90YWxMb25nUG9zaXRpb25TaXplAAkAlAoCBRRzaG9ydFByZW1pdW1GcmFjdGlvbgUTbG9uZ1ByZW1pdW1GcmFjdGlvbgQTbG9uZ1ByZW1pdW1GcmFjdGlvbgkBBGRpdmQCCQEEbXVsZAIFB3ByZW1pdW0JARRmdW5kaW5nUGVyaW9kRGVjaW1hbAAFB09ORV9EQVkEFHNob3J0UHJlbWl1bUZyYWN0aW9uCQEEZGl2ZAIJAQRtdWxkAgUTbG9uZ1ByZW1pdW1GcmFjdGlvbgkBFXRvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQAJARZ0b3RhbFNob3J0UG9zaXRpb25TaXplAAkAlAoCBRRzaG9ydFByZW1pdW1GcmFjdGlvbgUTbG9uZ1ByZW1pdW1GcmFjdGlvbgQUc2hvcnRQcmVtaXVtRnJhY3Rpb24IBQ0kdDA0NDcwMzQ2MDM4Al8xBBNsb25nUHJlbWl1bUZyYWN0aW9uCAUNJHQwNDQ3MDM0NjAzOAJfMgkBDXVwZGF0ZUZ1bmRpbmcFCQBkAgUVZnVuZGluZ0Jsb2NrVGltZXN0YW1wCQEUZnVuZGluZ1BlcmlvZFNlY29uZHMACQBkAgkBI2xhdGVzdExvbmdDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAAUTbG9uZ1ByZW1pdW1GcmFjdGlvbgkAZAIJASRsYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24ABRRzaG9ydFByZW1pdW1GcmFjdGlvbgkBBGRpdmQCBRNsb25nUHJlbWl1bUZyYWN0aW9uBQ91bmRlcmx5aW5nUHJpY2UJAQRkaXZkAgUUc2hvcnRQcmVtaXVtRnJhY3Rpb24FD3VuZGVybHlpbmdQcmljZQFpAQV2X2dldAEHX3RyYWRlcgQNJHQwNDY0MTM0NjQ2NgkBFWludGVybmFsQ2xvc2VQb3NpdGlvbgEFB190cmFkZXIEAngxCAUNJHQwNDY0MTM0NjQ2NgJfMQQCeDIIBQ0kdDA0NjQxMzQ2NDY2Al8yBAJ4MwgFDSR0MDQ2NDEzNDY0NjYCXzMEAng0CAUNJHQwNDY0MTM0NjQ2NgJfNAkAAgEJAKwCAgkArAICCQCsAgIJAQFzAQUCeDIJAQFzAQUCeDMJAQFzAQUCeDQJAQFzAQkBDmdldE1hcmdpblJhdGlvAQUHX3RyYWRlcgFpASd2aWV3X2NhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQBB190cmFkZXIEDSR0MDQ2NjEzNDY3MjQJAQtnZXRQb3NpdGlvbgEFB190cmFkZXIEDHBvc2l0aW9uU2l6ZQgFDSR0MDQ2NjEzNDY3MjQCXzEEDnBvc2l0aW9uTWFyZ2luCAUNJHQwNDY2MTM0NjcyNAJfMgQDcG9uCAUNJHQwNDY2MTM0NjcyNAJfMwQRcG9zaXRpb25Mc3RVcGRDUEYIBQ0kdDA0NjYxMzQ2NzI0Al80BA0kdDA0NjcyOTQ2ODMwCQEjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwCBQdfdHJhZGVyBQ9QTkxfT1BUSU9OX1NQT1QEEHBvc2l0aW9uTm90aW9uYWwIBQ0kdDA0NjcyOTQ2ODMwAl8xBA11bnJlYWxpemVkUG5sCAUNJHQwNDY3Mjk0NjgzMAJfMgQNJHQwNDY4MzU0NzAxNwkBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEBQxwb3NpdGlvblNpemUFDnBvc2l0aW9uTWFyZ2luBRFwb3NpdGlvbkxzdFVwZENQRgUNdW5yZWFsaXplZFBubAQMcmVtYWluTWFyZ2luCAUNJHQwNDY4MzU0NzAxNwJfMQQHYmFkRGVidAgFDSR0MDQ2ODM1NDcwMTcCXzIEDmZ1bmRpbmdQYXltZW50CAUNJHQwNDY4MzU0NzAxNwJfMwkAAgEJAKwCAgkArAICCQEBcwEFDHJlbWFpbk1hcmdpbgkBAXMBBQ5mdW5kaW5nUGF5bWVudAkBAXMBCQEOZ2V0TWFyZ2luUmF0aW8BBQdfdHJhZGVyAWkBDmZvcmNlTW92ZUFzc2V0AgdfdHJhZGVyB19hbW91bnQDAwkBAiE9AgkApwgBCQEOYWRtaW5QdWJsaWNLZXkACAUBaQZjYWxsZXIGCQBmAgAABQdfYW1vdW50CQACAQIhSW52YWxpZCBmb3JjZU1vdmVBc3NldCBwYXJhbWV0ZXJzBAd1bnN0YWtlCQD8BwQJARFxdW90ZUFzc2V0U3Rha2luZwACDnVubG9ja05ldXRyaW5vCQDMCAIFB19hbW91bnQJAMwIAgkA2AQBCQEKcXVvdGVBc3NldAAFA25pbAUDbmlsAwkAAAIFB3Vuc3Rha2UFB3Vuc3Rha2UJAM4IAgkBCHdpdGhkcmF3AgkBEUBleHRyTmF0aXZlKDEwNjIpAQUHX3RyYWRlcgUHX2Ftb3VudAkBDXVwZGF0ZUJhbGFuY2UBCQBlAgkBCGNiYWxhbmNlAAUHX2Ftb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAJAQ5hZG1pblB1YmxpY0tleQCD1+UI", "height": 2168125, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2YZMot6ZLQn18vcwFQwqkJcrB2xpqvaro4PeBuZEgEbv Next: 3AoK9So1owfXP6XzU44uLeZRduwiJgSHAfQyh3j159Nb Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "k_ora_key"
55
66 let b = "k_ora_block_key"
77
88 let c = "k_ora"
99
1010 let d = "k_balance"
1111
1212 let e = "k_positionSize"
1313
1414 let f = "k_positionMargin"
1515
1616 let g = "k_positionOpenNotional"
1717
1818 let h = "k_positionFraction"
1919
2020 let i = "k_initialized"
2121
2222 let j = "k_paused"
2323
2424 let k = "k_fee"
2525
2626 let l = "k_fundingPeriod"
2727
2828 let m = "k_initMarginRatio"
2929
3030 let n = "k_mmr"
3131
3232 let o = "k_liquidationFeeRatio"
3333
3434 let p = "k_spreadLimit"
3535
3636 let q = "k_maxPriceImpact"
3737
3838 let r = "k_lastDataStr"
3939
4040 let s = "k_lastMinuteId"
4141
4242 let t = "k_twapDataLastCumulativePrice"
4343
4444 let u = "k_twapDataLastPrice"
4545
4646 let v = "k_twapDataPreviousMinuteId"
4747
4848 let w = "k_latestLongPremiumFraction"
4949
5050 let x = "k_latestShortPremiumFraction"
5151
5252 let y = "k_nextFundingBlockMinTimestamp"
5353
5454 let z = "k_longFundingRate"
5555
5656 let A = "k_shortFundingRate"
5757
5858 let B = "k_qtAstR"
5959
6060 let C = "k_bsAstR"
6161
6262 let D = "k_totalPositionSize"
6363
6464 let E = "k_totalLongPositionSize"
6565
6666 let F = "k_totalShortPositionSize"
6767
6868 let G = "k_cumulativeNotional"
6969
7070 let H = "k_openInterestNotional"
7171
7272 let I = "k_coordinatorAddress"
7373
7474 let J = "k_insurance_address"
7575
7676 let K = "k_admin_address"
7777
7878 let L = "k_admin_public_key"
7979
8080 let M = "k_quote_asset"
8181
8282 let N = "k_quote_staking"
8383
8484 let O = "k_staking_address"
8585
8686 let P = "k_miner_address"
8787
8888 func Q () = valueOrErrorMessage(addressFromString(getStringValue(this, I)), "Coordinator not set")
8989
9090
9191 func R () = addressFromString(getStringValue(Q(), K))
9292
9393
9494 func S () = fromBase58String(getStringValue(Q(), L))
9595
9696
9797 func T () = fromBase58String(getStringValue(Q(), M))
9898
9999
100100 func U () = valueOrErrorMessage(addressFromString(getStringValue(Q(), N)), "Quote asset staking not set")
101101
102102
103103 func V () = valueOrErrorMessage(addressFromString(getStringValue(Q(), O)), "Insurance not set")
104104
105105
106106 func W () = valueOrErrorMessage(addressFromString(getStringValue(Q(), J)), "Insurance not set")
107107
108108
109109 func X () = valueOrErrorMessage(addressFromString(getStringValue(Q(), P)), "Insurance not set")
110110
111111
112112 let Y = 1
113113
114114 let Z = 2
115115
116116 let aa = 60
117117
118118 let ab = 15
119119
120120 let ac = 15
121121
122122 let ad = 1000
123123
124124 let ae = (1 * (((((10 * 10) * 10) * 10) * 10) * 10))
125125
126126 let af = (100 * ae)
127127
128128 let ag = (86400 * ae)
129129
130130 let ah = 100
131131
132132 let ai = 1
133133
134134 let aj = 2
135135
136136 func ak (al) = (toString(al) + ",")
137137
138138
139139 func am (al,an) = fraction(al, ae, an, HALFEVEN)
140140
141141
142142 func ao (al,an) = fraction(al, an, ae, HALFEVEN)
143143
144144
145145 func ap (al) = if ((al > 0))
146146 then al
147147 else -(al)
148148
149149
150150 func aq (al,an) = if ((al >= an))
151151 then al
152152 else an
153153
154154
155155 func ar (as,at) = ((as + "_") + at)
156156
157157
158158 func au (av) = {
159159 func aw (ax,ay) = ((ax + ay) + ",")
160160
161161 let az = {
162162 let aA = av
163163 let aB = size(aA)
164164 let aC = ""
165165 func aD (aE,aF) = if ((aF >= aB))
166166 then aE
167167 else aw(aE, aA[aF])
168168
169169 func aG (aE,aF) = if ((aF >= aB))
170170 then aE
171171 else throw("List size exceeds 20")
172172
173173 aG(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aC, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
174174 }
175175 let aH = dropRight(az, 1)
176176 let aI = if ((take(aH, 1) == ","))
177177 then drop(aH, 1)
178178 else aH
179179 aI
180180 }
181181
182182
183183 func aJ (aK) = split(aK, ",")
184184
185185
186186 func aL (av,aM,aN) = if ((size(av) > aM))
187187 then (removeByIndex(av, 0) :+ aN)
188188 else (av :+ aN)
189189
190190
191191 func aO (aP) = valueOrErrorMessage(getInteger(this, aP), ("no value for " + aP))
192192
193193
194194 func aQ () = aO(d)
195195
196196
197197 func aR () = aO(k)
198198
199199
200200 func aS () = aO(m)
201201
202202
203203 func aT () = aO(B)
204204
205205
206206 func aU () = aO(C)
207207
208208
209209 func aV () = aO(D)
210210
211211
212212 func aW () = aO(G)
213213
214214
215215 func aX () = aO(H)
216216
217217
218218 func aY () = aO(y)
219219
220220
221221 func aZ () = aO(l)
222222
223223
224224 func ba () = (aZ() * ae)
225225
226226
227227 func bb () = (aZ() * ad)
228228
229229
230230 func bc () = aO(n)
231231
232232
233233 func bd () = aO(o)
234234
235235
236236 func be () = aO(p)
237237
238238
239239 func bf () = aO(q)
240240
241241
242242 func bg () = aO(w)
243243
244244
245245 func bh () = aO(x)
246246
247247
248248 func bi () = aO(F)
249249
250250
251251 func bj () = aO(E)
252252
253253
254254 func bk (bl,bm,bn) = {
255255 let bo = (bl - bm)
256256 if (if (bn)
257257 then (0 > bo)
258258 else false)
259259 then throw("Invalid margin")
260260 else if (if (!(bn))
261261 then (bo >= 0)
262262 else false)
263263 then throw("Invalid margin")
264264 else true
265265 }
266266
267267
268268 func bp (bq) = if ((bq == 0))
269269 then throw("Should not be called with _positionSize == 0")
270270 else if ((bq > 0))
271271 then bg()
272272 else bh()
273273
274274
275275 func br (bs) = {
276276 let bt = getInteger(this, ar(e, bs))
277277 let bu = bt
278278 if ($isInstanceOf(bu, "Int"))
279279 then {
280280 let bv = bu
281281 $Tuple4(bv, getIntegerValue(this, ar(f, bs)), getIntegerValue(this, ar(g, bs)), getIntegerValue(this, ar(h, bs)))
282282 }
283283 else $Tuple4(0, 0, 0, 0)
284284 }
285285
286286
287287 func bw (bs) = if ((br(bs)._1 == 0))
288288 then throw("No open position")
289289 else true
290290
291291
292292 func bx () = valueOrElse(getBoolean(this, i), false)
293293
294294
295295 func by () = valueOrElse(getBoolean(this, j), false)
296296
297297
298298 func bz (bA,bB,bC) = if (bA)
299299 then {
300300 let bD = (aU() - bC)
301301 if ((0 >= bD))
302302 then throw("Tx lead to base asset reserve <= 0, revert")
303303 else $Tuple4((aT() + bB), bD, (aV() + bC), (aW() + bB))
304304 }
305305 else {
306306 let bE = (aT() - bB)
307307 if ((0 >= bE))
308308 then throw("Tx lead to base quote reserve <= 0, revert")
309309 else $Tuple4(bE, (aU() + bC), (aV() - bC), (aW() - bB))
310310 }
311311
312312
313313 func bF (bA,bB) = {
314314 let bG = aT()
315315 let bH = aU()
316316 let bI = am(bG, bH)
317317 let bJ = ao(bB, bI)
318318 let aP = ao(bG, bH)
319319 let bK = if (bA)
320320 then (bG + bB)
321321 else (bG - bB)
322322 let bL = am(aP, bK)
323323 let bM = ap((bL - bH))
324324 let bN = if (bA)
325325 then bM
326326 else -(bM)
327327 let bO = ((bJ - bM) / bJ)
328328 let bP = bf()
329329 if ((bO > bP))
330330 then throw(((("Price impact " + toString(bO)) + " > max price impact ") + toString(bP)))
331331 else {
332332 let bQ = bz(bA, bB, bM)
333333 let bR = bQ._1
334334 let bS = bQ._2
335335 let bT = bQ._3
336336 let bU = bQ._4
337337 $Tuple5(bN, bR, bS, bT, bU)
338338 }
339339 }
340340
341341
342342 func bV (bW,bX,bY,bZ) = {
343343 let ca = if ((bW != 0))
344344 then {
345345 let cb = bp(bW)
346346 ao((cb - bY), bW)
347347 }
348348 else 0
349349 let cc = ((bZ - ca) + bX)
350350 let cd = if ((0 > cc))
351351 then $Tuple2(0, ap(cc))
352352 else $Tuple2(ap(cc), 0)
353353 let ce = cd._1
354354 let cf = cd._2
355355 $Tuple3(ce, cf, ca)
356356 }
357357
358358
359359 func cg (bA,bC) = {
360360 let ch = aT()
361361 let ci = aU()
362362 if ((bC == 0))
363363 then throw("Invalid base asset amount")
364364 else {
365365 let aP = ao(ch, ci)
366366 let cj = if (bA)
367367 then (ci + bC)
368368 else (ci - bC)
369369 let ck = am(aP, cj)
370370 let cl = ap((ck - ch))
371371 let cm = bz(!(bA), cl, bC)
372372 let bR = cm._1
373373 let bS = cm._2
374374 let bT = cm._3
375375 let bU = cm._4
376376 $Tuple7(cl, bR, bS, bT, bU, (bj() - (if (bA)
377377 then ap(bC)
378378 else 0)), (bi() - (if (!(bA))
379379 then ap(bC)
380380 else 0)))
381381 }
382382 }
383383
384384
385385 func cn () = {
386386 let co = valueOrErrorMessage(addressFromString(getStringValue(this, c)), "")
387387 let cp = getStringValue(this, a)
388388 let cq = getStringValue(this, b)
389389 let cr = getIntegerValue(co, cp)
390390 cr
391391 }
392392
393393
394394 func cs () = {
395395 let ch = aT()
396396 let ci = aU()
397397 am(ch, ci)
398398 }
399399
400400
401401 func ct () = {
402402 let cu = cn()
403403 let cv = cs()
404404 (am(ap((cu - cv)), cu) > be())
405405 }
406406
407407
408408 func cw (bs,cx) = {
409409 let cy = br(bs)
410410 let bv = cy._1
411411 let cz = cy._2
412412 let cA = cy._3
413413 let cB = cy._4
414414 let cC = ap(bv)
415415 if ((cC == 0))
416416 then throw("Invalid position size")
417417 else {
418418 let cD = (0 > bv)
419419 let cE = if ((cx == ai))
420420 then {
421421 let cF = cg(!(cD), cC)
422422 let cG = cF._1
423423 let cH = cF._2
424424 let cI = cF._3
425425 let cJ = cF._4
426426 cG
427427 }
428428 else ao(cC, cn())
429429 let cK = if (cD)
430430 then (cA - cE)
431431 else (cE - cA)
432432 $Tuple2(cE, cK)
433433 }
434434 }
435435
436436
437437 func cL (cM,cN,cO) = am((cM - cN), cO)
438438
439439
440440 func cP (bs,cx) = {
441441 let cQ = br(bs)
442442 let bv = cQ._1
443443 let cz = cQ._2
444444 let cR = cQ._3
445445 let cB = cQ._4
446446 let cS = cw(bs, cx)
447447 let cE = cS._1
448448 let cK = cS._2
449449 let cT = bV(bv, cz, cB, cK)
450450 let ce = cT._1
451451 let cf = cT._2
452452 cL(ce, cf, cE)
453453 }
454454
455455
456456 func cU (bs) = cP(bs, ai)
457457
458458
459459 func cV (bs) = {
460460 let cW = br(bs)
461461 let bv = cW._1
462462 let cz = cW._2
463463 let cA = cW._3
464464 let cB = cW._4
465465 let cX = cw(bs, ai)
466466 let cH = cX._1
467467 let cK = cX._2
468468 let cY = bV(bv, cz, cB, cK)
469469 let ce = cY._1
470470 let cf = cY._2
471471 let cZ = -(bv)
472472 let da = cK
473473 let db = -(ce)
474474 let dc = cg((bv > 0), ap(bv))
475475 let dd = dc._1
476476 let bK = dc._2
477477 let bL = dc._3
478478 let de = dc._4
479479 let df = dc._5
480480 let dg = dc._6
481481 let dh = dc._7
482482 let di = (aX() - cA)
483483 $Tuple12(cZ, cf, da, db, bK, bL, de, df, di, dd, dg, dh)
484484 }
485485
486486
487487 func dj () = {
488488 let dk = ((lastBlock.timestamp / 1000) / 60)
489489 let dl = (dk - ab)
490490 let dm = valueOrElse(getString(this, r), "")
491491 let dn = split(dm, ",")
492492 func do (ax,dp) = if ((dl >= parseIntValue(dp)))
493493 then (ax :+ parseIntValue(dp))
494494 else ax
495495
496496 let dq = {
497497 let aA = dn
498498 let aB = size(aA)
499499 let aC = nil
500500 func aD (aE,aF) = if ((aF >= aB))
501501 then aE
502502 else do(aE, aA[aF])
503503
504504 func aG (aE,aF) = if ((aF >= aB))
505505 then aE
506506 else throw("List size exceeds 20")
507507
508508 aG(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aD(aC, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
509509 }
510510 let dr = if ((size(dq) > 0))
511511 then max(dq)
512512 else parseIntValue(dn[0])
513513 let ds = valueOrElse(getInteger(this, s), 0)
514514 let dt = valueOrElse(getInteger(this, ((t + "_") + toString(ds))), 0)
515515 let du = valueOrElse(getInteger(this, ((u + "_") + toString(ds))), 0)
516516 let dv = (dt + ((dk - ds) * du))
517517 let dw = valueOrElse(getInteger(this, ((t + "_") + toString(dr))), 0)
518518 let dx = valueOrElse(getInteger(this, ((u + "_") + toString(dr))), 0)
519519 let dy = (dw + ((dl - dr) * dx))
520520 ((dv - dy) / ab)
521521 }
522522
523523
524524 func dz (dA,dB,dC,dD,dE,dF,dG) = [IntegerEntry(m, dA), IntegerEntry(n, dB), IntegerEntry(o, dC), IntegerEntry(l, dD), IntegerEntry(k, dE), IntegerEntry(p, dF), IntegerEntry(q, dG)]
525525
526526
527527 func dH (dI,dJ,dK,dL,dM) = [IntegerEntry(y, dI), IntegerEntry(w, dJ), IntegerEntry(x, dK), IntegerEntry(z, dL), IntegerEntry(A, dM)]
528528
529529
530530 func dN (at,dO,dP,dQ,cb) = [IntegerEntry(ar(e, at), dO), IntegerEntry(ar(f, at), dP), IntegerEntry(ar(g, at), dQ), IntegerEntry(ar(h, at), cb)]
531531
532532
533533 func dR (dS) = {
534534 let dk = ((lastBlock.timestamp / 1000) / 60)
535535 let dT = valueOrElse(getInteger(this, s), 0)
536536 if ((dT > dk))
537537 then throw("TWAP out-of-order")
538538 else {
539539 let ds = if ((dT == 0))
540540 then dk
541541 else dT
542542 if ((dk > dT))
543543 then {
544544 let dU = valueOrElse(getInteger(this, ((t + "_") + toString(dT))), 0)
545545 let dV = valueOrElse(getInteger(this, ((u + "_") + toString(dT))), dS)
546546 let dW = (dU + ((dk - ds) * dV))
547547 let dn = aL(aJ(valueOrElse(getString(this, r), "")), ab, toString(dk))
548548 [IntegerEntry(ar(t, toString(dk)), dW), IntegerEntry(ar(u, toString(dk)), dS), IntegerEntry(ar(v, toString(dk)), dT), IntegerEntry(s, dk), StringEntry(r, au(dn))]
549549 }
550550 else {
551551 let dX = valueOrElse(getInteger(this, ar(v, toString(dk))), 0)
552552 let dU = valueOrElse(getInteger(this, ar(t, toString(dX))), 0)
553553 let dV = valueOrElse(getInteger(this, ar(u, toString(dX))), dS)
554554 let dW = (dU + ((dk - dX) * dV))
555555 [IntegerEntry(ar(t, toString(dk)), dW), IntegerEntry(ar(u, toString(dk)), dS)]
556556 }
557557 }
558558 }
559559
560560
561561 func dY (bG,bH,dZ,ea,eb,ec,ed) = if (((ec - ed) != dZ))
562562 then throw(((((("Invalid AMM state data: " + toString(ec)) + " + ") + toString(ed)) + " != ") + toString(dZ)))
563563 else ([IntegerEntry(B, bG), IntegerEntry(C, bH), IntegerEntry(D, dZ), IntegerEntry(G, ea), IntegerEntry(H, eb), IntegerEntry(E, ec), IntegerEntry(F, ed)] ++ dR(am(bG, bH)))
564564
565565
566566 func ee (at) = [DeleteEntry(ar(e, at)), DeleteEntry(ar(f, at)), DeleteEntry(ar(g, at)), DeleteEntry(ar(h, at))]
567567
568568
569569 func ef (at,eg) = {
570570 let eh = assetBalance(this, T())
571571 if ((eg > eh))
572572 then throw(((("Unable to withdraw " + toString(eg)) + " from contract balance ") + toString(eh)))
573573 else [ScriptTransfer(at, eg, T())]
574574 }
575575
576576
577577 func ei (ej) = if ((0 > ej))
578578 then throw("Balance")
579579 else [IntegerEntry(d, ej)]
580580
581581
582582 func ek (ej) = [ScriptTransfer(V(), ej, T())]
583583
584584
585585 @Callable(ej)
586586 func pause () = if ((ej.caller != R()))
587587 then throw("Invalid togglePause params")
588588 else [BooleanEntry(j, true)]
589589
590590
591591
592592 @Callable(ej)
593593 func unpause () = if ((ej.caller != R()))
594594 then throw("Invalid togglePause params")
595595 else [BooleanEntry(j, false)]
596596
597597
598598
599599 @Callable(ej)
600600 func changeSettings (dA,dB,dC,dD,dE,dF,dG) = if ((ej.caller != R()))
601601 then throw("Invalid changeSettings params")
602602 else dz(dA, dB, dC, dD, dE, dF, dG)
603603
604604
605605
606606 @Callable(ej)
607607 func initialize (bG,bH,dD,dA,dB,dC,dE,el,em,en,dF,dG) = if (if (if (if (if (if (if (if (if (if ((0 >= bG))
608608 then true
609609 else (0 >= bH))
610610 then true
611611 else (0 >= dD))
612612 then true
613613 else (0 >= dA))
614614 then true
615615 else (0 >= dB))
616616 then true
617617 else (0 >= dC))
618618 then true
619619 else (0 >= dE))
620620 then true
621621 else (0 >= dF))
622622 then true
623623 else (0 >= dG))
624624 then true
625625 else bx())
626626 then throw("Invalid initialize parameters")
627627 else ((((dY(bG, bH, 0, 0, 0, 0, 0) ++ dz(dA, dB, dC, dD, dE, dF, dG)) ++ dH((lastBlock.timestamp + dD), 0, 0, 0, 0)) ++ ei(0)) ++ [BooleanEntry(i, true), StringEntry(c, el), StringEntry(a, em), StringEntry(I, en)])
628628
629629
630630
631631 @Callable(ej)
632632 func decreasePosition (eg,eo,ep) = if (if (if (if (if (if ((0 >= eg))
633633 then true
634634 else if (((1 * ae) > eo))
635635 then true
636636 else (eo > (3 * ae)))
637637 then true
638638 else !(bx()))
639639 then true
640640 else !(bk(am(ae, eo), aS(), true)))
641641 then true
642642 else !(bw(toString(ej.caller))))
643643 then true
644644 else by())
645645 then throw("Invalid decreasePosition parameters")
646646 else {
647647 let eq = br(toString(ej.caller))
648648 let er = eq._1
649649 let es = eq._2
650650 let et = eq._3
651651 let eu = eq._4
652652 let ev = if ((er > 0))
653653 then Z
654654 else Y
655655 let ew = (ev == Y)
656656 let ex = ao(eg, eo)
657657 let ey = cw(toString(ej.caller), ai)
658658 let ez = ey._1
659659 let cK = ey._2
660660 let eA = if ((ez > ex))
661661 then {
662662 let eB = bF(ew, ex)
663663 let cZ = eB._1
664664 let bK = eB._2
665665 let bL = eB._3
666666 let de = eB._4
667667 let df = eB._5
668668 let eC = ap(cZ)
669669 if (if ((ep != 0))
670670 then (ep > eC)
671671 else false)
672672 then throw(((("Too little base asset exchanged, got " + toString(eC)) + " expected ") + toString(ep)))
673673 else {
674674 let da = am(ao(cK, eC), ap(er))
675675 let eD = bV(er, es, eu, da)
676676 let ce = eD._1
677677 let cf = eD._2
678678 let ca = eD._3
679679 let dd = ex
680680 let eE = (cK - da)
681681 let eF = if ((er > 0))
682682 then ((ez - dd) - eE)
683683 else ((eE + ez) - dd)
684684 let eG = (er + cZ)
685685 $Tuple11(eG, ce, ap(eF), bp(eG), bL, bK, de, df, (aX() - ex), (bj() - (if ((eG > 0))
686686 then ap(cZ)
687687 else 0)), (bi() - (if ((0 > eG))
688688 then ap(cZ)
689689 else 0)))
690690 }
691691 }
692692 else throw("Close position first")
693693 let eG = eA._1
694694 let eH = eA._2
695695 let eI = eA._3
696696 let eJ = eA._4
697697 let bL = eA._5
698698 let bK = eA._6
699699 let de = eA._7
700700 let df = eA._8
701701 let di = eA._9
702702 let dg = eA._10
703703 let dh = eA._11
704704 let eK = invoke(X(), "notifyNotional", [toString(ej.caller), eI], nil)
705705 if ((eK == eK))
706706 then (dN(toString(ej.caller), eG, eH, eI, eJ) ++ dY(bK, bL, de, df, di, dg, dh))
707707 else throw("Strict value is not equal to itself.")
708708 }
709709
710710
711711
712712 @Callable(ej)
713713 func increasePosition (ev,eo,ep) = {
714714 let eL = ej.payments[0].amount
715715 if (if (if (if (if (if (if (if ((ev != Y))
716716 then (ev != Z)
717717 else false)
718718 then true
719719 else (0 >= eL))
720720 then true
721721 else if (((1 * ae) > eo))
722722 then true
723723 else (eo > (3 * ae)))
724724 then true
725725 else !(bx()))
726726 then true
727727 else (ej.payments[0].assetId != T()))
728728 then true
729729 else !(bk(am(ae, eo), aS(), true)))
730730 then true
731731 else by())
732732 then throw("Invalid increasePosition parameters")
733733 else {
734734 let eM = ao(eL, aR())
735735 let eg = (eL - eM)
736736 let eN = br(toString(ej.caller))
737737 let er = eN._1
738738 let es = eN._2
739739 let et = eN._3
740740 let eu = eN._4
741741 let eO = (er == 0)
742742 let eP = if ((er > 0))
743743 then (ev == Y)
744744 else (ev == Z)
745745 let eQ = if (!(eO))
746746 then eP
747747 else false
748748 let ew = (ev == Y)
749749 let eR = if (if (eO)
750750 then true
751751 else eQ)
752752 then {
753753 let ex = ao(eg, eo)
754754 let eS = bF(ew, ex)
755755 let bN = eS._1
756756 let bK = eS._2
757757 let bL = eS._3
758758 let de = eS._4
759759 let df = eS._5
760760 if (if ((ep != 0))
761761 then (ep > ap(bN))
762762 else false)
763763 then throw(((("Limit error: " + toString(ap(bN))) + " < ") + toString(ep)))
764764 else {
765765 let eG = (er + bN)
766766 let eT = am(ex, eo)
767767 let eU = bV(er, es, eu, eT)
768768 let ce = eU._1
769769 let cH = eU._2
770770 let cI = eU._3
771771 $Tuple11(eG, ce, (et + ex), bp(eG), bL, bK, de, df, (aX() + ex), (bj() + (if ((eG > 0))
772772 then ap(bN)
773773 else 0)), (bi() + (if ((0 > eG))
774774 then ap(bN)
775775 else 0)))
776776 }
777777 }
778778 else {
779779 let ex = ao(eg, eo)
780780 let eV = cw(toString(ej.caller), ai)
781781 let ez = eV._1
782782 let cK = eV._2
783783 if ((ez > ex))
784784 then throw("Use decreasePosition to decrease position size")
785785 else throw("Close position first")
786786 }
787787 let eG = eR._1
788788 let eH = eR._2
789789 let eI = eR._3
790790 let eJ = eR._4
791791 let bL = eR._5
792792 let bK = eR._6
793793 let de = eR._7
794794 let df = eR._8
795795 let di = eR._9
796796 let dg = eR._10
797797 let dh = eR._11
798798 let eW = (eM / 2)
799799 let eX = (eM - eW)
800800 let eY = invoke(U(), "lockNeutrinoSP", [toString(V()), ah], [AttachedPayment(T(), eg)])
801801 if ((eY == eY))
802802 then {
803803 let eZ = invoke(W(), "deposit", nil, [AttachedPayment(T(), eX)])
804804 if ((eZ == eZ))
805805 then {
806806 let fa = invoke(X(), "notifyFees", [toString(ej.caller), eM], nil)
807807 if ((fa == fa))
808808 then {
809809 let eK = invoke(X(), "notifyNotional", [toString(ej.caller), eI], nil)
810810 if ((eK == eK))
811811 then (((dN(toString(ej.caller), eG, eH, eI, eJ) ++ dY(bK, bL, de, df, di, dg, dh)) ++ ek(eW)) ++ ei((aQ() + eg)))
812812 else throw("Strict value is not equal to itself.")
813813 }
814814 else throw("Strict value is not equal to itself.")
815815 }
816816 else throw("Strict value is not equal to itself.")
817817 }
818818 else throw("Strict value is not equal to itself.")
819819 }
820820 }
821821
822822
823823
824824 @Callable(ej)
825825 func addMargin () = {
826826 let eL = ej.payments[0].amount
827827 if (if (if (if ((ej.payments[0].assetId != T()))
828828 then true
829829 else !(bw(toString(ej.caller))))
830830 then true
831831 else !(bx()))
832832 then true
833833 else by())
834834 then throw("Invalid addMargin parameters")
835835 else {
836836 let eM = ao(eL, aR())
837837 let eg = (eL - eM)
838838 let fb = br(toString(ej.caller))
839839 let er = fb._1
840840 let es = fb._2
841841 let et = fb._3
842842 let eu = fb._4
843843 let eW = (eM / 2)
844844 let eX = (eM - eW)
845845 let eY = invoke(U(), "lockNeutrinoSP", [toString(V()), ah], [AttachedPayment(T(), eg)])
846846 if ((eY == eY))
847847 then {
848848 let eZ = invoke(W(), "deposit", nil, [AttachedPayment(T(), eX)])
849849 if ((eZ == eZ))
850850 then {
851851 let fa = invoke(X(), "notifyFees", [toString(ej.caller), eM], nil)
852852 if ((fa == fa))
853853 then ((dN(toString(ej.caller), er, (es + eg), et, eu) ++ ek(eW)) ++ ei((aQ() + eg)))
854854 else throw("Strict value is not equal to itself.")
855855 }
856856 else throw("Strict value is not equal to itself.")
857857 }
858858 else throw("Strict value is not equal to itself.")
859859 }
860860 }
861861
862862
863863
864864 @Callable(ej)
865865 func removeMargin (eg) = if (if (if (if ((0 >= eg))
866866 then true
867867 else !(bw(toString(ej.caller))))
868868 then true
869869 else !(bx()))
870870 then true
871871 else by())
872872 then throw("Invalid removeMargin parameters")
873873 else {
874874 let fc = br(toString(ej.caller))
875875 let er = fc._1
876876 let es = fc._2
877877 let et = fc._3
878878 let eu = fc._4
879879 let fd = -(eg)
880880 let fe = bV(er, es, eu, fd)
881881 let ce = fe._1
882882 let cf = fe._2
883883 if ((cf != 0))
884884 then throw("Invalid removed margin amount")
885885 else {
886886 let ff = cL(ce, cf, et)
887887 if (!(bk(ff, aS(), true)))
888888 then throw(((("Too much margin removed: " + toString(ff)) + " < ") + toString(aS())))
889889 else {
890890 let fg = invoke(U(), "unlockNeutrino", [eg, toBase58String(T())], nil)
891891 if ((fg == fg))
892892 then ((dN(toString(ej.caller), er, ce, et, bp(er)) ++ ef(ej.caller, eg)) ++ ei((aQ() - eg)))
893893 else throw("Strict value is not equal to itself.")
894894 }
895895 }
896896 }
897897
898898
899899
900900 @Callable(ej)
901901 func closePosition () = if (if (if (!(bw(toString(ej.caller))))
902902 then true
903903 else !(bx()))
904904 then true
905905 else by())
906906 then throw("Invalid closePosition parameters")
907907 else {
908908 let fh = cV(toString(ej.caller))
909909 let cH = fh._1
910910 let fi = fh._2
911911 let da = fh._3
912912 let db = fh._4
913913 let bK = fh._5
914914 let bL = fh._6
915915 let de = fh._7
916916 let df = fh._8
917917 let di = fh._9
918918 let cI = fh._10
919919 let dg = fh._11
920920 let dh = fh._12
921921 if ((fi > 0))
922922 then throw("Unable to close position with bad debt")
923923 else {
924924 let fj = ap(db)
925925 let fk = (aQ() - fj)
926926 let fl = if ((0 > fk))
927927 then $Tuple2(0, ap(fk))
928928 else $Tuple2(fk, 0)
929929 let fm = fl._1
930930 let fn = fl._2
931931 let fo = if ((fn > 0))
932932 then {
933933 let fp = invoke(W(), "withdraw", [fn], nil)
934934 if ((fp == fp))
935935 then nil
936936 else throw("Strict value is not equal to itself.")
937937 }
938938 else nil
939939 if ((fo == fo))
940940 then {
941941 let fg = invoke(U(), "unlockNeutrino", [(fj - fn), toBase58String(T())], nil)
942942 if ((fg == fg))
943943 then {
944944 let eK = invoke(X(), "notifyNotional", [toString(ej.caller), 0], nil)
945945 if ((eK == eK))
946946 then (((ee(toString(ej.caller)) ++ dY(bK, bL, de, df, di, dg, dh)) ++ ef(ej.caller, fj)) ++ ei(fm))
947947 else throw("Strict value is not equal to itself.")
948948 }
949949 else throw("Strict value is not equal to itself.")
950950 }
951951 else throw("Strict value is not equal to itself.")
952952 }
953953 }
954954
955955
956956
957957 @Callable(ej)
958958 func liquidate (bs) = {
959959 let fq = cP(bs, ai)
960960 let ff = if (ct())
961961 then {
962962 let fr = cP(bs, aj)
963963 aq(fq, fr)
964964 }
965965 else fq
966966 if (if (if (if (!(bk(ff, bc(), false)))
967967 then true
968968 else !(bw(bs)))
969969 then true
970970 else !(bx()))
971971 then true
972972 else by())
973973 then throw("Unable to liquidate")
974974 else {
975975 let fs = cV(bs)
976976 let cH = fs._1
977977 let cf = fs._2
978978 let cI = fs._3
979979 let cJ = fs._4
980980 let bK = fs._5
981981 let bL = fs._6
982982 let de = fs._7
983983 let df = fs._8
984984 let di = fs._9
985985 let dd = fs._10
986986 let dg = fs._11
987987 let dh = fs._12
988988 let ft = ao(dd, bd())
989989 let fu = (ft / 2)
990990 let eX = (ft - fu)
991991 let fk = (aQ() - ft)
992992 let fv = if ((0 > fk))
993993 then $Tuple2(0, ap(fk))
994994 else $Tuple2(fk, 0)
995995 let fw = fv._1
996996 let fx = fv._2
997997 let fo = if ((fx > 0))
998998 then {
999999 let fp = invoke(W(), "withdraw", [fx], nil)
10001000 if ((fp == fp))
10011001 then nil
10021002 else throw("Strict value is not equal to itself.")
10031003 }
10041004 else nil
10051005 if ((fo == fo))
10061006 then {
10071007 let fg = invoke(U(), "unlockNeutrino", [(ft - fx), toBase58String(T())], nil)
10081008 if ((fg == fg))
10091009 then {
10101010 let eZ = invoke(W(), "deposit", nil, [AttachedPayment(T(), eX)])
10111011 if ((eZ == eZ))
10121012 then {
10131013 let eK = invoke(X(), "notifyNotional", [bs, 0], nil)
10141014 if ((eK == eK))
10151015 then (((ee(bs) ++ dY(bK, bL, de, df, di, dg, dh)) ++ ef(ej.caller, fu)) ++ ei(fw))
10161016 else throw("Strict value is not equal to itself.")
10171017 }
10181018 else throw("Strict value is not equal to itself.")
10191019 }
10201020 else throw("Strict value is not equal to itself.")
10211021 }
10221022 else throw("Strict value is not equal to itself.")
10231023 }
10241024 }
10251025
10261026
10271027
10281028 @Callable(ej)
10291029 func payFunding () = {
10301030 let fy = aY()
10311031 if (if (if ((fy > lastBlock.timestamp))
10321032 then true
10331033 else !(bx()))
10341034 then true
10351035 else by())
10361036 then throw(((("Invalid funding block timestamp: " + toString(lastBlock.timestamp)) + " < ") + toString(fy)))
10371037 else {
10381038 let fz = cn()
10391039 let fA = dj()
10401040 let fB = (fA - fz)
10411041 let fC = if (if ((bi() == 0))
10421042 then true
10431043 else (bj() == 0))
10441044 then $Tuple2(0, 0)
10451045 else if ((0 > fB))
10461046 then {
10471047 let fD = am(ao(fB, ba()), ag)
10481048 let fE = am(ao(fD, bi()), bj())
10491049 $Tuple2(fD, fE)
10501050 }
10511051 else {
10521052 let fE = am(ao(fB, ba()), ag)
10531053 let fD = am(ao(fE, bj()), bi())
10541054 $Tuple2(fD, fE)
10551055 }
10561056 let fD = fC._1
10571057 let fE = fC._2
10581058 dH((fy + bb()), (bg() + fE), (bh() + fD), am(fE, fz), am(fD, fz))
10591059 }
10601060 }
10611061
10621062
10631063
10641064 @Callable(ej)
10651065 func v_get (bs) = {
10661066 let fF = cV(bs)
10671067 let cH = fF._1
10681068 let cI = fF._2
10691069 let cJ = fF._3
10701070 let fG = fF._4
10711071 throw((((ak(cI) + ak(cJ)) + ak(fG)) + ak(cU(bs))))
10721072 }
10731073
10741074
10751075
10761076 @Callable(ej)
10771077 func view_calcRemainMarginWithFundingPayment (bs) = {
10781078 let fH = br(bs)
10791079 let bv = fH._1
10801080 let cz = fH._2
10811081 let cR = fH._3
10821082 let cB = fH._4
10831083 let fI = cw(bs, ai)
10841084 let cE = fI._1
10851085 let cK = fI._2
10861086 let fJ = bV(bv, cz, cB, cK)
10871087 let ce = fJ._1
10881088 let cf = fJ._2
10891089 let ca = fJ._3
10901090 throw(((ak(ce) + ak(ca)) + ak(cU(bs))))
10911091 }
10921092
10931093
10941094
10951095 @Callable(ej)
10961096 func forceMoveAsset (bs,eg) = if (if ((addressFromPublicKey(S()) != ej.caller))
10971097 then true
10981098 else (0 > eg))
10991099 then throw("Invalid forceMoveAsset parameters")
11001100 else {
11011101 let fg = invoke(U(), "unlockNeutrino", [eg, toBase58String(T())], nil)
11021102 if ((fg == fg))
11031103 then (ef(addressFromStringValue(bs), eg) ++ ei((aQ() - eg)))
11041104 else throw("Strict value is not equal to itself.")
11051105 }
11061106
11071107
11081108 @Verifier(fK)
11091109 func fL () = sigVerify(fK.bodyBytes, fK.proofs[0], S())
11101110

github/deemru/w8io/873ac7e 
123.55 ms