tx · Gw3gj8Lr4Pkxdiopxyjz8sy9FiXegMjTR5yfsrufT2ds

3NBH3LGg2DsaEtyBr495XEdaFuiLYSNyr3k:  -0.06000000 Waves

2022.09.21 16:21 [2238949] smart account 3NBH3LGg2DsaEtyBr495XEdaFuiLYSNyr3k > SELF 0.00000000 Waves

{ "type": 13, "id": "Gw3gj8Lr4Pkxdiopxyjz8sy9FiXegMjTR5yfsrufT2ds", "fee": 6000000, "feeAssetId": null, "timestamp": 1663766517722, "version": 2, "chainId": 84, "sender": "3NBH3LGg2DsaEtyBr495XEdaFuiLYSNyr3k", "senderPublicKey": "6rHNfG82m33YnDLzeMuCFn5XNvbNwGhR4ovSFhgJvbxP", "proofs": [ "D3XaQYTcKKWnhWBwviF38RfZbBovnLDGrZjE5HiaJSmqjGS6MhUfHhrRR5TLw5FLWPLZL1yQZ6zoqpJngA2LQBf" ], "script": "base64:BgJvCAISABIAEgMKAQESAwoBARILCgkBAQEBAQEBAQESEAoOAQEBAQEBAQgICAEBAQESAwoBARIFCgMBAQESBgoEAQEBCBIAEgMKAQESABIDCgEIEgASBAoCCAESAwoBARIDCgEIEgMKAQgSAwoBARIAiAEACWtfb3JhX2tleQIJa19vcmFfa2V5AA9rX29yYV9ibG9ja19rZXkCD2tfb3JhX2Jsb2NrX2tleQAFa19vcmECBWtfb3JhAAlrX2JhbGFuY2UCCWtfYmFsYW5jZQAOa19wb3NpdGlvblNpemUCDmtfcG9zaXRpb25TaXplABBrX3Bvc2l0aW9uTWFyZ2luAhBrX3Bvc2l0aW9uTWFyZ2luABZrX3Bvc2l0aW9uT3Blbk5vdGlvbmFsAhZrX3Bvc2l0aW9uT3Blbk5vdGlvbmFsAC5rX3Bvc2l0aW9uTGFzdFVwZGF0ZWRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAhJrX3Bvc2l0aW9uRnJhY3Rpb24AFGtfcG9zaXRpb25DbG9zZWREYXRlAhRrX3Bvc2l0aW9uQ2xvc2VkRGF0ZQANa19pbml0aWFsaXplZAINa19pbml0aWFsaXplZAAIa19wYXVzZWQCCGtfcGF1c2VkAAVrX2ZlZQIFa19mZWUAD2tfZnVuZGluZ1BlcmlvZAIPa19mdW5kaW5nUGVyaW9kABFrX2luaXRNYXJnaW5SYXRpbwIRa19pbml0TWFyZ2luUmF0aW8AGGtfbWFpbnRlbmFuY2VNYXJnaW5SYXRpbwIFa19tbXIAFWtfbGlxdWlkYXRpb25GZWVSYXRpbwIVa19saXF1aWRhdGlvbkZlZVJhdGlvABlrX3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvAhZrX3BhcnRMaXF1aWRhdGlvblJhdGlvAA1rX3NwcmVhZExpbWl0Ag1rX3NwcmVhZExpbWl0ABBrX21heFByaWNlSW1wYWN0AhBrX21heFByaWNlSW1wYWN0ABBrX21heFByaWNlU3ByZWFkAhBrX21heFByaWNlU3ByZWFkAA1rX2xhc3REYXRhU3RyAg1rX2xhc3REYXRhU3RyAA5rX2xhc3RNaW51dGVJZAIOa19sYXN0TWludXRlSWQAHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlAh1rX3R3YXBEYXRhTGFzdEN1bXVsYXRpdmVQcmljZQATa190d2FwRGF0YUxhc3RQcmljZQITa190d2FwRGF0YUxhc3RQcmljZQAaa190d2FwRGF0YVByZXZpb3VzTWludXRlSWQCGmtfdHdhcERhdGFQcmV2aW91c01pbnV0ZUlkACVrX2xhdGVzdExvbmdDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAhtrX2xhdGVzdExvbmdQcmVtaXVtRnJhY3Rpb24AJmtfbGF0ZXN0U2hvcnRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAhxrX2xhdGVzdFNob3J0UHJlbWl1bUZyYWN0aW9uABJrX25leHRGdW5kaW5nQmxvY2sCHmtfbmV4dEZ1bmRpbmdCbG9ja01pblRpbWVzdGFtcAARa19sb25nRnVuZGluZ1JhdGUCEWtfbG9uZ0Z1bmRpbmdSYXRlABJrX3Nob3J0RnVuZGluZ1JhdGUCEmtfc2hvcnRGdW5kaW5nUmF0ZQATa19xdW90ZUFzc2V0UmVzZXJ2ZQIIa19xdEFzdFIAEmtfYmFzZUFzc2V0UmVzZXJ2ZQIIa19ic0FzdFIAE2tfdG90YWxQb3NpdGlvblNpemUCE2tfdG90YWxQb3NpdGlvblNpemUAF2tfdG90YWxMb25nUG9zaXRpb25TaXplAhdrX3RvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQAYa190b3RhbFNob3J0UG9zaXRpb25TaXplAhhrX3RvdGFsU2hvcnRQb3NpdGlvblNpemUAFGtfY3VtdWxhdGl2ZU5vdGlvbmFsAhRrX2N1bXVsYXRpdmVOb3Rpb25hbAAWa19vcGVuSW50ZXJlc3ROb3Rpb25hbAIWa19vcGVuSW50ZXJlc3ROb3Rpb25hbAAUa19jb29yZGluYXRvckFkZHJlc3MCFGtfY29vcmRpbmF0b3JBZGRyZXNzABNrX2luc3VyYW5jZV9hZGRyZXNzAhNrX2luc3VyYW5jZV9hZGRyZXNzAA9rX2FkbWluX2FkZHJlc3MCD2tfYWRtaW5fYWRkcmVzcwASa19hZG1pbl9wdWJsaWNfa2V5AhJrX2FkbWluX3B1YmxpY19rZXkADWtfcXVvdGVfYXNzZXQCDWtfcXVvdGVfYXNzZXQAD2tfcXVvdGVfc3Rha2luZwIPa19xdW90ZV9zdGFraW5nABFrX3N0YWtpbmdfYWRkcmVzcwIRa19zdGFraW5nX2FkZHJlc3MAD2tfbWluZXJfYWRkcmVzcwIPa19taW5lcl9hZGRyZXNzABBrX29yZGVyc19hZGRyZXNzAhBrX29yZGVyc19hZGRyZXNzABJrX3JlZmVycmFsX2FkZHJlc3MCEmtfcmVmZXJyYWxfYWRkcmVzcwELY29vcmRpbmF0b3IACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUUa19jb29yZGluYXRvckFkZHJlc3MCE0Nvb3JkaW5hdG9yIG5vdCBzZXQBDGFkbWluQWRkcmVzcwAJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUPa19hZG1pbl9hZGRyZXNzAQ5hZG1pblB1YmxpY0tleQAJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUSa19hZG1pbl9wdWJsaWNfa2V5AQpxdW90ZUFzc2V0AAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABQ1rX3F1b3RlX2Fzc2V0ARFxdW90ZUFzc2V0U3Rha2luZwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABQ9rX3F1b3RlX3N0YWtpbmcCG1F1b3RlIGFzc2V0IHN0YWtpbmcgbm90IHNldAEOc3Rha2luZ0FkZHJlc3MACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAURa19zdGFraW5nX2FkZHJlc3MCD1N0YWtpbmcgbm90IHNldAEQaW5zdXJhbmNlQWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABRNrX2luc3VyYW5jZV9hZGRyZXNzAhFJbnN1cmFuY2Ugbm90IHNldAEMbWluZXJBZGRyZXNzAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFD2tfbWluZXJfYWRkcmVzcwINTWluZXIgbm90IHNldAENb3JkZXJzQWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABRBrX29yZGVyc19hZGRyZXNzAg5PcmRlcnMgbm90IHNldAEPcmVmZXJyYWxBZGRyZXNzAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFEmtfcmVmZXJyYWxfYWRkcmVzcwIQUmVmZXJyYWwgbm90IHNldAAIRElSX0xPTkcAAQAJRElSX1NIT1JUAAIADVRXQVBfSU5URVJWQUwADwAPT1JBQ0xFX0lOVEVSVkFMAA8AB1NFQ09ORFMA6AcADERFQ0lNQUxfVU5JVAkAaAIAAQkAaAIJAGgCCQBoAgkAaAIJAGgCAAoACgAKAAoACgAKAAdPTkVfREFZCQBoAgCAowUFDERFQ0lNQUxfVU5JVAAIQUxMX0ZFRVMAZAAPUE5MX09QVElPTl9TUE9UAAEAEVBOTF9PUFRJT05fT1JBQ0xFAAIBAXMBAl94CQCsAgIJAKQDAQUCX3gCASwBBGRpdmQCAl94Al95CQBuBAUCX3gFDERFQ0lNQUxfVU5JVAUCX3kFCEhBTEZFVkVOAQRtdWxkAgJfeAJfeQkAbgQFAl94BQJfeQUMREVDSU1BTF9VTklUBQhIQUxGRVZFTgEDYWJzAQJfeAMJAGYCBQJfeAAABQJfeAkBAS0BBQJfeAEEdm1heAICX3gCX3kDCQBnAgUCX3gFAl95BQJfeAUCX3kBDnRvQ29tcG9zaXRlS2V5AgRfa2V5CF9hZGRyZXNzCQCsAgIJAKwCAgUEX2tleQIBXwUIX2FkZHJlc3MBCWxpc3RUb1N0cgEFX2xpc3QKAQVfam9pbgILYWNjdW11bGF0b3IDdmFsCQCsAgIJAKwCAgULYWNjdW11bGF0b3IFA3ZhbAIBLAQKbmV3TGlzdFN0cgoAAiRsBQVfbGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzACAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEFX2pvaW4CBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDIwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAQLbmV3TGlzdFN0clUJALMCAgUKbmV3TGlzdFN0cgABBAtuZXdMaXN0U3RyUgMJAAACCQCvAgIFC25ld0xpc3RTdHJVAAECASwJALACAgULbmV3TGlzdFN0clUAAQULbmV3TGlzdFN0clUFC25ld0xpc3RTdHJSAQlzdHJUb0xpc3QBBF9zdHIJALUJAgUEX3N0cgIBLAELcHVzaFRvUXVldWUDBV9saXN0CF9tYXhTaXplBl92YWx1ZQMJAGYCCQCQAwEFBV9saXN0BQhfbWF4U2l6ZQkAzQgCCQDRCAIFBV9saXN0AAAFBl92YWx1ZQkAzQgCBQVfbGlzdAUGX3ZhbHVlAQNpbnQBAWsJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzBQFrCQCsAgICDW5vIHZhbHVlIGZvciAFAWsBCGNiYWxhbmNlAAkBA2ludAEFCWtfYmFsYW5jZQEDZmVlAAkBA2ludAEFBWtfZmVlAQ9pbml0TWFyZ2luUmF0aW8ACQEDaW50AQURa19pbml0TWFyZ2luUmF0aW8BBnF0QXN0UgAJAQNpbnQBBRNrX3F1b3RlQXNzZXRSZXNlcnZlAQZic0FzdFIACQEDaW50AQUSa19iYXNlQXNzZXRSZXNlcnZlARF0b3RhbFBvc2l0aW9uU2l6ZQAJAQNpbnQBBRNrX3RvdGFsUG9zaXRpb25TaXplARJjdW11bGF0aXZlTm90aW9uYWwACQEDaW50AQUUa19jdW11bGF0aXZlTm90aW9uYWwBFG9wZW5JbnRlcmVzdE5vdGlvbmFsAAkBA2ludAEFFmtfb3BlbkludGVyZXN0Tm90aW9uYWwBGW5leHRGdW5kaW5nQmxvY2tUaW1lc3RhbXAACQEDaW50AQUSa19uZXh0RnVuZGluZ0Jsb2NrARBmdW5kaW5nUGVyaW9kUmF3AAkBA2ludAEFD2tfZnVuZGluZ1BlcmlvZAEUZnVuZGluZ1BlcmlvZERlY2ltYWwACQBoAgkBEGZ1bmRpbmdQZXJpb2RSYXcABQxERUNJTUFMX1VOSVQBFGZ1bmRpbmdQZXJpb2RTZWNvbmRzAAkAaAIJARBmdW5kaW5nUGVyaW9kUmF3AAUHU0VDT05EUwEWbWFpbnRlbmFuY2VNYXJnaW5SYXRpbwAJAQNpbnQBBRhrX21haW50ZW5hbmNlTWFyZ2luUmF0aW8BE2xpcXVpZGF0aW9uRmVlUmF0aW8ACQEDaW50AQUVa19saXF1aWRhdGlvbkZlZVJhdGlvARdwYXJ0aWFsTGlxdWlkYXRpb25SYXRpbwAJAQNpbnQBBRlrX3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvAQtzcHJlYWRMaW1pdAAJAQNpbnQBBQ1rX3NwcmVhZExpbWl0AQ5tYXhQcmljZUltcGFjdAAJAQNpbnQBBRBrX21heFByaWNlSW1wYWN0AQ5tYXhQcmljZVNwcmVhZAAJAQNpbnQBBRBrX21heFByaWNlU3ByZWFkASNsYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgAJAQNpbnQBBSVrX2xhdGVzdExvbmdDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uASRsYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24ACQEDaW50AQUma19sYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24BFnRvdGFsU2hvcnRQb3NpdGlvblNpemUACQEDaW50AQUYa190b3RhbFNob3J0UG9zaXRpb25TaXplARV0b3RhbExvbmdQb3NpdGlvblNpemUACQEDaW50AQUXa190b3RhbExvbmdQb3NpdGlvblNpemUBD2dldEFjdHVhbENhbGxlcgEBaQkBC3ZhbHVlT3JFbHNlAgkAnQgCCQENb3JkZXJzQWRkcmVzcwACCGtfc2VuZGVyCQClCAEIBQFpBmNhbGxlcgEWcmVxdWlyZU1vcmVNYXJnaW5SYXRpbwMMX21hcmdpblJhdGlvEF9iYXNlTWFyZ2luUmF0aW8UX2xhcmdlclRoYW5PckVxdWFsVG8EFHJlbWFpbmluZ01hcmdpblJhdGlvCQBlAgUMX21hcmdpblJhdGlvBRBfYmFzZU1hcmdpblJhdGlvAwMFFF9sYXJnZXJUaGFuT3JFcXVhbFRvCQBmAgAABRRyZW1haW5pbmdNYXJnaW5SYXRpbwcJAAIBAg5JbnZhbGlkIG1hcmdpbgMDCQEBIQEFFF9sYXJnZXJUaGFuT3JFcXVhbFRvCQBnAgUUcmVtYWluaW5nTWFyZ2luUmF0aW8AAAcJAAIBAg5JbnZhbGlkIG1hcmdpbgYBH2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24BDV9wb3NpdGlvblNpemUDCQAAAgUNX3Bvc2l0aW9uU2l6ZQAACQACAQIsU2hvdWxkIG5vdCBiZSBjYWxsZWQgd2l0aCBfcG9zaXRpb25TaXplID09IDADCQBmAgUNX3Bvc2l0aW9uU2l6ZQAACQEjbGF0ZXN0TG9uZ0N1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24ACQEkbGF0ZXN0U2hvcnRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAAELZ2V0UG9zaXRpb24BB190cmFkZXIED3Bvc2l0aW9uU2l6ZU9wdAkAmggCBQR0aGlzCQEOdG9Db21wb3NpdGVLZXkCBQ5rX3Bvc2l0aW9uU2l6ZQUHX3RyYWRlcgQHJG1hdGNoMAUPcG9zaXRpb25TaXplT3B0AwkAAQIFByRtYXRjaDACA0ludAQMcG9zaXRpb25TaXplBQckbWF0Y2gwCQCWCgQFDHBvc2l0aW9uU2l6ZQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkBDnRvQ29tcG9zaXRlS2V5AgUQa19wb3NpdGlvbk1hcmdpbgUHX3RyYWRlcgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkBDnRvQ29tcG9zaXRlS2V5AgUWa19wb3NpdGlvbk9wZW5Ob3Rpb25hbAUHX3RyYWRlcgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkBDnRvQ29tcG9zaXRlS2V5AgUua19wb3NpdGlvbkxhc3RVcGRhdGVkQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgUHX3RyYWRlcgkAlgoEAAAAAAAAAAABE3JlcXVpcmVPcGVuUG9zaXRpb24BB190cmFkZXIDCQAAAggJAQtnZXRQb3NpdGlvbgEFB190cmFkZXICXzEAAAkAAgECEE5vIG9wZW4gcG9zaXRpb24GAQtpbml0aWFsaXplZAAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUNa19pbml0aWFsaXplZAcBBnBhdXNlZAAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUIa19wYXVzZWQHAQ11cGRhdGVSZXNlcnZlAwZfaXNBZGQRX3F1b3RlQXNzZXRBbW91bnQQX2Jhc2VBc3NldEFtb3VudAMFBl9pc0FkZAQHbmV3QmFzZQkAZQIJAQZic0FzdFIABRBfYmFzZUFzc2V0QW1vdW50AwkAZwIAAAUHbmV3QmFzZQkAAgECKlR4IGxlYWQgdG8gYmFzZSBhc3NldCByZXNlcnZlIDw9IDAsIHJldmVydAkAlgoECQBkAgkBBnF0QXN0UgAFEV9xdW90ZUFzc2V0QW1vdW50BQduZXdCYXNlCQBkAgkBEXRvdGFsUG9zaXRpb25TaXplAAUQX2Jhc2VBc3NldEFtb3VudAkAZAIJARJjdW11bGF0aXZlTm90aW9uYWwABRFfcXVvdGVBc3NldEFtb3VudAQIbmV3UXVvdGUJAGUCCQEGcXRBc3RSAAURX3F1b3RlQXNzZXRBbW91bnQDCQBnAgAABQhuZXdRdW90ZQkAAgECKlR4IGxlYWQgdG8gYmFzZSBxdW90ZSByZXNlcnZlIDw9IDAsIHJldmVydAkAlgoEBQhuZXdRdW90ZQkAZAIJAQZic0FzdFIABRBfYmFzZUFzc2V0QW1vdW50CQBlAgkBEXRvdGFsUG9zaXRpb25TaXplAAUQX2Jhc2VBc3NldEFtb3VudAkAZQIJARJjdW11bGF0aXZlTm90aW9uYWwABRFfcXVvdGVBc3NldEFtb3VudAEJc3dhcElucHV0AgZfaXNBZGQRX3F1b3RlQXNzZXRBbW91bnQEB19xdEFzdFIJAQZxdEFzdFIABAdfYnNBc3RSCQEGYnNBc3RSAAQBawkBBG11bGQCBQdfcXRBc3RSBQdfYnNBc3RSBBZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyAwUGX2lzQWRkCQBkAgUHX3F0QXN0UgURX3F1b3RlQXNzZXRBbW91bnQJAGUCBQdfcXRBc3RSBRFfcXVvdGVBc3NldEFtb3VudAQVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCQEEZGl2ZAIFAWsFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIEGGFtb3VudEJhc2VBc3NldEJvdWdodEFicwkBA2FicwEJAGUCBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFB19ic0FzdFIEFWFtb3VudEJhc2VBc3NldEJvdWdodAMFBl9pc0FkZAUYYW1vdW50QmFzZUFzc2V0Qm91Z2h0QWJzCQEBLQEFGGFtb3VudEJhc2VBc3NldEJvdWdodEFicwQNJHQwMTI4MTYxMzAwOQkBDXVwZGF0ZVJlc2VydmUDBQZfaXNBZGQFEV9xdW90ZUFzc2V0QW1vdW50BRhhbW91bnRCYXNlQXNzZXRCb3VnaHRBYnMEF3F1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIxCAUNJHQwMTI4MTYxMzAwOQJfMQQWYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyMQgFDSR0MDEyODE2MTMwMDkCXzIEF3RvdGFsUG9zaXRpb25TaXplQWZ0ZXIxCAUNJHQwMTI4MTYxMzAwOQJfMwQYY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIxCAUNJHQwMTI4MTYxMzAwOQJfNAQLcHJpY2VCZWZvcmUJAQRkaXZkAgUHX3F0QXN0UgUHX2JzQXN0UgQLbWFya2V0UHJpY2UJAQRkaXZkAgURX3F1b3RlQXNzZXRBbW91bnQFGGFtb3VudEJhc2VBc3NldEJvdWdodEFicwQJcHJpY2VEaWZmCQEDYWJzAQkAZQIFC3ByaWNlQmVmb3JlBQttYXJrZXRQcmljZQQLcHJpY2VJbXBhY3QJAGUCBQxERUNJTUFMX1VOSVQJAQRkaXZkAgULcHJpY2VCZWZvcmUJAGQCBQtwcmljZUJlZm9yZQUJcHJpY2VEaWZmBBNtYXhQcmljZUltcGFjdFZhbHVlCQEObWF4UHJpY2VJbXBhY3QAAwkAZgIFC3ByaWNlSW1wYWN0BRNtYXhQcmljZUltcGFjdFZhbHVlCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg1QcmljZSBpbXBhY3QgCQCkAwEFC3ByaWNlSW1wYWN0AhQgPiBtYXggcHJpY2UgaW1wYWN0IAkApAMBBRNtYXhQcmljZUltcGFjdFZhbHVlAhUgYmVmb3JlIHF1b3RlIGFzc2V0OiAJAKQDAQUHX3F0QXN0UgIUIGJlZm9yZSBiYXNlIGFzc2V0OiAJAKQDAQUHX2JzQXN0UgIhIHF1b3RlIGFzc2V0IGFtb3VudCB0byBleGNoYW5nZTogCQCkAwEFEV9xdW90ZUFzc2V0QW1vdW50Ag8gcHJpY2UgYmVmb3JlOiAJAKQDAQULcHJpY2VCZWZvcmUCDiBtYXJrZXRQcmljZTogCQCkAwEFC21hcmtldFByaWNlCQCXCgUFFWFtb3VudEJhc2VBc3NldEJvdWdodAUXcXVvdGVBc3NldFJlc2VydmVBZnRlcjEFFmJhc2VBc3NldFJlc2VydmVBZnRlcjEFF3RvdGFsUG9zaXRpb25TaXplQWZ0ZXIxBRhjdW11bGF0aXZlTm90aW9uYWxBZnRlcjEBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEEF9vbGRQb3NpdGlvblNpemUSX29sZFBvc2l0aW9uTWFyZ2luJV9vbGRQb3NpdGlvbkN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24MX21hcmdpbkRlbHRhBA5mdW5kaW5nUGF5bWVudAMJAQIhPQIFEF9vbGRQb3NpdGlvblNpemUAAAQgX2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24JAR9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAQUQX29sZFBvc2l0aW9uU2l6ZQkBBG11bGQCCQBlAgUgX2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FJV9vbGRQb3NpdGlvbkN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FEF9vbGRQb3NpdGlvblNpemUAAAQMc2lnbmVkTWFyZ2luCQBkAgkAZQIFDF9tYXJnaW5EZWx0YQUOZnVuZGluZ1BheW1lbnQFEl9vbGRQb3NpdGlvbk1hcmdpbgQNJHQwMTQ1MDAxNDYyNwMJAGYCAAAFDHNpZ25lZE1hcmdpbgkAlAoCAAAJAQNhYnMBBQxzaWduZWRNYXJnaW4JAJQKAgkBA2FicwEFDHNpZ25lZE1hcmdpbgAABAxyZW1haW5NYXJnaW4IBQ0kdDAxNDUwMDE0NjI3Al8xBAdiYWREZWJ0CAUNJHQwMTQ1MDAxNDYyNwJfMgkAlQoDBQxyZW1haW5NYXJnaW4FB2JhZERlYnQFDmZ1bmRpbmdQYXltZW50ARZzd2FwT3V0cHV0V2l0aFJlc2VydmVzBQZfaXNBZGQQX2Jhc2VBc3NldEFtb3VudBRfY2hlY2tNYXhQcmljZUltcGFjdBJfcXVvdGVBc3NldFJlc2VydmURX2Jhc2VBc3NldFJlc2VydmUEC3ByaWNlQmVmb3JlCQEEZGl2ZAIFEl9xdW90ZUFzc2V0UmVzZXJ2ZQURX2Jhc2VBc3NldFJlc2VydmUDCQAAAgUQX2Jhc2VBc3NldEFtb3VudAAACQACAQIZSW52YWxpZCBiYXNlIGFzc2V0IGFtb3VudAQBawkBBG11bGQCBRJfcXVvdGVBc3NldFJlc2VydmUFEV9iYXNlQXNzZXRSZXNlcnZlBBhiYXNlQXNzZXRQb29sQW1vdW50QWZ0ZXIDBQZfaXNBZGQJAGQCBRFfYmFzZUFzc2V0UmVzZXJ2ZQUQX2Jhc2VBc3NldEFtb3VudAkAZQIFEV9iYXNlQXNzZXRSZXNlcnZlBRBfYmFzZUFzc2V0QW1vdW50BA9xdW90ZUFzc2V0QWZ0ZXIJAQRkaXZkAgUBawUYYmFzZUFzc2V0UG9vbEFtb3VudEFmdGVyBA5xdW90ZUFzc2V0U29sZAkBA2FicwEJAGUCBQ9xdW90ZUFzc2V0QWZ0ZXIFEl9xdW90ZUFzc2V0UmVzZXJ2ZQQTbWF4UHJpY2VJbXBhY3RWYWx1ZQkBDm1heFByaWNlSW1wYWN0AAQNJHQwMTU2MDQxNTc5NwkBDXVwZGF0ZVJlc2VydmUDCQEBIQEFBl9pc0FkZAUOcXVvdGVBc3NldFNvbGQFEF9iYXNlQXNzZXRBbW91bnQEF3F1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIxCAUNJHQwMTU2MDQxNTc5NwJfMQQWYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyMQgFDSR0MDE1NjA0MTU3OTcCXzIEF3RvdGFsUG9zaXRpb25TaXplQWZ0ZXIxCAUNJHQwMTU2MDQxNTc5NwJfMwQYY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIxCAUNJHQwMTU2MDQxNTc5NwJfNAQLbWFya2V0UHJpY2UJAQRkaXZkAgUOcXVvdGVBc3NldFNvbGQFEF9iYXNlQXNzZXRBbW91bnQECXByaWNlRGlmZgkBA2FicwEJAGUCBQtwcmljZUJlZm9yZQULbWFya2V0UHJpY2UEC3ByaWNlSW1wYWN0CQBlAgUMREVDSU1BTF9VTklUCQEEZGl2ZAIFC3ByaWNlQmVmb3JlCQBkAgULcHJpY2VCZWZvcmUFCXByaWNlRGlmZgMDCQBmAgULcHJpY2VJbXBhY3QFE21heFByaWNlSW1wYWN0VmFsdWUFFF9jaGVja01heFByaWNlSW1wYWN0BwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgINUHJpY2UgaW1wYWN0IAkApAMBBQtwcmljZUltcGFjdAIUID4gbWF4IHByaWNlIGltcGFjdCAJAKQDAQUTbWF4UHJpY2VJbXBhY3RWYWx1ZQIVIGJlZm9yZSBxdW90ZSBhc3NldDogCQCkAwEFEl9xdW90ZUFzc2V0UmVzZXJ2ZQIUIGJlZm9yZSBiYXNlIGFzc2V0OiAJAKQDAQURX2Jhc2VBc3NldFJlc2VydmUCICBiYXNlIGFzc2V0IGFtb3VudCB0byBleGNoYW5nZTogCQCkAwEFEF9iYXNlQXNzZXRBbW91bnQCDyBwcmljZSBiZWZvcmU6IAkApAMBBQtwcmljZUJlZm9yZQIPIG1hcmtldCBwcmljZTogCQCkAwEFC21hcmtldFByaWNlCQCaCggFDnF1b3RlQXNzZXRTb2xkBRdxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyMQUWYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyMQUXdG90YWxQb3NpdGlvblNpemVBZnRlcjEFGGN1bXVsYXRpdmVOb3Rpb25hbEFmdGVyMQkAZQIJARV0b3RhbExvbmdQb3NpdGlvblNpemUAAwUGX2lzQWRkCQEDYWJzAQUQX2Jhc2VBc3NldEFtb3VudAAACQBlAgkBFnRvdGFsU2hvcnRQb3NpdGlvblNpemUAAwkBASEBBQZfaXNBZGQJAQNhYnMBBRBfYmFzZUFzc2V0QW1vdW50AAAFC3ByaWNlSW1wYWN0AQpzd2FwT3V0cHV0AwZfaXNBZGQQX2Jhc2VBc3NldEFtb3VudBRfY2hlY2tNYXhQcmljZUltcGFjdAkBFnN3YXBPdXRwdXRXaXRoUmVzZXJ2ZXMFBQZfaXNBZGQFEF9iYXNlQXNzZXRBbW91bnQFFF9jaGVja01heFByaWNlSW1wYWN0CQEGcXRBc3RSAAkBBmJzQXN0UgABEmdldE9yYWNsZVR3YXBQcmljZQAEBm9yYWNsZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFBWtfb3JhAgAECHByaWNlS2V5CQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBQlrX29yYV9rZXkECGJsb2NrS2V5CQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBQ9rX29yYV9ibG9ja19rZXkECWxhc3RWYWx1ZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBm9yYWNsZQUIcHJpY2VLZXkJAKwCAgkArAICCQCsAgICIkNhbiBub3QgZ2V0IG9yYWNsZSBwcmljZS4gT3JhY2xlOiAJAKUIAQUGb3JhY2xlAgYga2V5OiAFCHByaWNlS2V5BQlsYXN0VmFsdWUBGXJlcXVpcmVOb3RPdmVyU3ByZWFkTGltaXQCEl9xdW90ZUFzc2V0UmVzZXJ2ZRFfYmFzZUFzc2V0UmVzZXJ2ZQQLb3JhY2xlUHJpY2UJARJnZXRPcmFjbGVUd2FwUHJpY2UABApwcmljZUFmdGVyCQEEZGl2ZAIFEl9xdW90ZUFzc2V0UmVzZXJ2ZQURX2Jhc2VBc3NldFJlc2VydmUEDGF2ZXJhZ2VQcmljZQkBBGRpdmQCCQBkAgULb3JhY2xlUHJpY2UFCnByaWNlQWZ0ZXIJAGgCAAIFDERFQ0lNQUxfVU5JVAQMYWJzUHJpY2VEaWZmCQEEZGl2ZAIJAQNhYnMBCQBlAgULb3JhY2xlUHJpY2UFCnByaWNlQWZ0ZXIFDGF2ZXJhZ2VQcmljZQMJAGYCBQxhYnNQcmljZURpZmYJAQ5tYXhQcmljZVNwcmVhZAAJAAIBCQCsAgIJAKwCAgkArAICAg1QcmljZSBzcHJlYWQgCQCkAwEFDGFic1ByaWNlRGlmZgIUID4gbWF4IHByaWNlIHNwcmVhZCAJAKQDAQkBDm1heFByaWNlU3ByZWFkAAYBDGdldFNwb3RQcmljZQAEEl9xdW90ZUFzc2V0UmVzZXJ2ZQkBBnF0QXN0UgAEEV9iYXNlQXNzZXRSZXNlcnZlCQEGYnNBc3RSAAkBBGRpdmQCBRJfcXVvdGVBc3NldFJlc2VydmUFEV9iYXNlQXNzZXRSZXNlcnZlARZpc092ZXJGbHVjdHVhdGlvbkxpbWl0AAQLb3JhY2xlUHJpY2UJARJnZXRPcmFjbGVUd2FwUHJpY2UABAxjdXJyZW50UHJpY2UJAQxnZXRTcG90UHJpY2UACQBmAgkBBGRpdmQCCQEDYWJzAQkAZQIFC29yYWNsZVByaWNlBQxjdXJyZW50UHJpY2UFC29yYWNsZVByaWNlCQELc3ByZWFkTGltaXQAAR9nZXRQb3NpdGlvbkFkanVzdGVkT3Blbk5vdGlvbmFsBA1fcG9zaXRpb25TaXplB19vcHRpb24SX3F1b3RlQXNzZXRSZXNlcnZlEV9iYXNlQXNzZXRSZXNlcnZlBA9wb3NpdGlvblNpemVBYnMJAQNhYnMBBQ1fcG9zaXRpb25TaXplBAdpc1Nob3J0CQBmAgAABQ1fcG9zaXRpb25TaXplBBBwb3NpdGlvbk5vdGlvbmFsAwkAAAIFB19vcHRpb24FD1BOTF9PUFRJT05fU1BPVAQNJHQwMTkwMTUxOTE4NgkBFnN3YXBPdXRwdXRXaXRoUmVzZXJ2ZXMFCQEBIQEFB2lzU2hvcnQFD3Bvc2l0aW9uU2l6ZUFicwcFEl9xdW90ZUFzc2V0UmVzZXJ2ZQURX2Jhc2VBc3NldFJlc2VydmUEE291dFBvc2l0aW9uTm90aW9uYWwIBQ0kdDAxOTAxNTE5MTg2Al8xBAJ4MQgFDSR0MDE5MDE1MTkxODYCXzIEAngyCAUNJHQwMTkwMTUxOTE4NgJfMwQCeDMIBQ0kdDAxOTAxNTE5MTg2Al80BRNvdXRQb3NpdGlvbk5vdGlvbmFsCQEEbXVsZAIFD3Bvc2l0aW9uU2l6ZUFicwkBEmdldE9yYWNsZVR3YXBQcmljZQAFEHBvc2l0aW9uTm90aW9uYWwBK2dldFBvc2l0aW9uTm90aW9uYWxBbmRVbnJlYWxpemVkUG5sQnlWYWx1ZXMFDV9wb3NpdGlvblNpemUVX3Bvc2l0aW9uT3Blbk5vdGlvbmFsEl9xdW90ZUFzc2V0UmVzZXJ2ZRFfYmFzZUFzc2V0UmVzZXJ2ZQdfb3B0aW9uAwkAAAIFDV9wb3NpdGlvblNpemUAAAkAAgECFUludmFsaWQgcG9zaXRpb24gc2l6ZQQHaXNTaG9ydAkAZgIAAAUNX3Bvc2l0aW9uU2l6ZQQQcG9zaXRpb25Ob3Rpb25hbAkBH2dldFBvc2l0aW9uQWRqdXN0ZWRPcGVuTm90aW9uYWwEBQ1fcG9zaXRpb25TaXplBQdfb3B0aW9uBRJfcXVvdGVBc3NldFJlc2VydmUFEV9iYXNlQXNzZXRSZXNlcnZlBA11bnJlYWxpemVkUG5sAwUHaXNTaG9ydAkAZQIFFV9wb3NpdGlvbk9wZW5Ob3Rpb25hbAUQcG9zaXRpb25Ob3Rpb25hbAkAZQIFEHBvc2l0aW9uTm90aW9uYWwFFV9wb3NpdGlvbk9wZW5Ob3Rpb25hbAkAlAoCBRBwb3NpdGlvbk5vdGlvbmFsBQ11bnJlYWxpemVkUG5sASNnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubAIHX3RyYWRlcgdfb3B0aW9uBA0kdDAyMDUwMzIwNjMxCQELZ2V0UG9zaXRpb24BBQdfdHJhZGVyBAxwb3NpdGlvblNpemUIBQ0kdDAyMDUwMzIwNjMxAl8xBA5wb3NpdGlvbk1hcmdpbggFDSR0MDIwNTAzMjA2MzECXzIEFHBvc2l0aW9uT3Blbk5vdGlvbmFsCAUNJHQwMjA1MDMyMDYzMQJfMwQRcG9zaXRpb25Mc3RVcGRDUEYIBQ0kdDAyMDUwMzIwNjMxAl80CQErZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmxCeVZhbHVlcwUFDHBvc2l0aW9uU2l6ZQUUcG9zaXRpb25PcGVuTm90aW9uYWwJAQZxdEFzdFIACQEGYnNBc3RSAAUHX29wdGlvbgEPY2FsY01hcmdpblJhdGlvAw1fcmVtYWluTWFyZ2luCF9iYWREZWJ0EV9wb3NpdGlvbk5vdGlvbmFsCQEEZGl2ZAIJAGUCBQ1fcmVtYWluTWFyZ2luBQhfYmFkRGVidAURX3Bvc2l0aW9uTm90aW9uYWwBFmdldE1hcmdpblJhdGlvQnlPcHRpb24CB190cmFkZXIHX29wdGlvbgQNJHQwMjExMTIyMTIyMwkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgQMcG9zaXRpb25TaXplCAUNJHQwMjExMTIyMTIyMwJfMQQOcG9zaXRpb25NYXJnaW4IBQ0kdDAyMTExMjIxMjIzAl8yBANwb24IBQ0kdDAyMTExMjIxMjIzAl8zBBFwb3NpdGlvbkxzdFVwZENQRggFDSR0MDIxMTEyMjEyMjMCXzQEDSR0MDIxMjI5MjEzMjIJASNnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubAIFB190cmFkZXIFB19vcHRpb24EEHBvc2l0aW9uTm90aW9uYWwIBQ0kdDAyMTIyOTIxMzIyAl8xBA11bnJlYWxpemVkUG5sCAUNJHQwMjEyMjkyMTMyMgJfMgQNJHQwMjEzMjcyMTQ5MwkBImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQEBQxwb3NpdGlvblNpemUFDnBvc2l0aW9uTWFyZ2luBRFwb3NpdGlvbkxzdFVwZENQRgUNdW5yZWFsaXplZFBubAQMcmVtYWluTWFyZ2luCAUNJHQwMjEzMjcyMTQ5MwJfMQQHYmFkRGVidAgFDSR0MDIxMzI3MjE0OTMCXzIJAQ9jYWxjTWFyZ2luUmF0aW8DBQxyZW1haW5NYXJnaW4FB2JhZERlYnQFEHBvc2l0aW9uTm90aW9uYWwBDmdldE1hcmdpblJhdGlvAQdfdHJhZGVyCQEWZ2V0TWFyZ2luUmF0aW9CeU9wdGlvbgIFB190cmFkZXIFD1BOTF9PUFRJT05fU1BPVAEbZ2V0UGFydGlhbExpcXVpZGF0aW9uQW1vdW50AgdfdHJhZGVyDV9wb3NpdGlvblNpemUEDG1heGltdW1SYXRpbwkBBHZtYXgCCQEXcGFydGlhbExpcXVpZGF0aW9uUmF0aW8ACQBlAgUMREVDSU1BTF9VTklUCQEEZGl2ZAIJAQ5nZXRNYXJnaW5SYXRpbwEFB190cmFkZXIJARZtYWludGVuYW5jZU1hcmdpblJhdGlvAAQYbWF4RXhjaGFuZ2VkUG9zaXRpb25TaXplCQEEbXVsZAIJAQNhYnMBBQ1fcG9zaXRpb25TaXplBQxtYXhpbXVtUmF0aW8ECnN3YXBSZXN1bHQJAQpzd2FwT3V0cHV0AwkAZgIFDV9wb3NpdGlvblNpemUAAAUYbWF4RXhjaGFuZ2VkUG9zaXRpb25TaXplBwQcbWF4RXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAgFCnN3YXBSZXN1bHQCXzEEC3ByaWNlSW1wYWN0CAUKc3dhcFJlc3VsdAJfOAMJAGYCCQEObWF4UHJpY2VJbXBhY3QABQtwcmljZUltcGFjdAUcbWF4RXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAQVZXhjaGFuZ2VkUG9zaXRpb25TaXplCQEEbXVsZAIJAQNhYnMBBQ1fcG9zaXRpb25TaXplCQEXcGFydGlhbExpcXVpZGF0aW9uUmF0aW8ABBlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50CAkBCnN3YXBPdXRwdXQDCQBmAgUNX3Bvc2l0aW9uU2l6ZQAABRVleGNoYW5nZWRQb3NpdGlvblNpemUHAl8xBRlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50ARVpbnRlcm5hbENsb3NlUG9zaXRpb24CB190cmFkZXIUX2NoZWNrTWF4UHJpY2VJbXBhY3QEDSR0MDIyNzI2MjI4NTQJAQtnZXRQb3NpdGlvbgEFB190cmFkZXIEDHBvc2l0aW9uU2l6ZQgFDSR0MDIyNzI2MjI4NTQCXzEEDnBvc2l0aW9uTWFyZ2luCAUNJHQwMjI3MjYyMjg1NAJfMgQUcG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDAyMjcyNjIyODU0Al8zBBFwb3NpdGlvbkxzdFVwZENQRggFDSR0MDIyNzI2MjI4NTQCXzQEDXVucmVhbGl6ZWRQbmwICQEjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwCBQdfdHJhZGVyBQ9QTkxfT1BUSU9OX1NQT1QCXzIEDSR0MDIyOTQ5MjMxMTcJASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BAUMcG9zaXRpb25TaXplBQ5wb3NpdGlvbk1hcmdpbgURcG9zaXRpb25Mc3RVcGRDUEYFDXVucmVhbGl6ZWRQbmwEDHJlbWFpbk1hcmdpbggFDSR0MDIyOTQ5MjMxMTcCXzEEB2JhZERlYnQIBQ0kdDAyMjk0OTIzMTE3Al8yBBVleGNoYW5nZWRQb3NpdGlvblNpemUJAQEtAQUMcG9zaXRpb25TaXplBAtyZWFsaXplZFBubAUNdW5yZWFsaXplZFBubAQNbWFyZ2luVG9WYXVsdAkBAS0BBQxyZW1haW5NYXJnaW4EDSR0MDIzMjQ0MjM1NTUJAQpzd2FwT3V0cHV0AwkAZgIFDHBvc2l0aW9uU2l6ZQAACQEDYWJzAQUMcG9zaXRpb25TaXplBRRfY2hlY2tNYXhQcmljZUltcGFjdAQZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAgFDSR0MDIzMjQ0MjM1NTUCXzEEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDAyMzI0NDIzNTU1Al8yBBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDAyMzI0NDIzNTU1Al8zBBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwMjMyNDQyMzU1NQJfNAQXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIIBQ0kdDAyMzI0NDIzNTU1Al81BA50b3RhbExvbmdBZnRlcggFDSR0MDIzMjQ0MjM1NTUCXzYED3RvdGFsU2hvcnRBZnRlcggFDSR0MDIzMjQ0MjM1NTUCXzcEGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIJAGUCCQEUb3BlbkludGVyZXN0Tm90aW9uYWwABRRwb3NpdGlvbk9wZW5Ob3Rpb25hbAkAngoMBRVleGNoYW5nZWRQb3NpdGlvblNpemUFB2JhZERlYnQFC3JlYWxpemVkUG5sBQ1tYXJnaW5Ub1ZhdWx0BRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyBRlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyBRlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50BQ50b3RhbExvbmdBZnRlcgUPdG90YWxTaG9ydEFmdGVyARBnZXRUd2FwU3BvdFByaWNlAAQIbWludXRlSWQJAGkCCQBpAggFCWxhc3RCbG9jawl0aW1lc3RhbXAA6AcAPAQNc3RhcnRNaW51dGVJZAkAZQIFCG1pbnV0ZUlkBQ1UV0FQX0lOVEVSVkFMBAdsaXN0U3RyCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFDWtfbGFzdERhdGFTdHICAAQEbGlzdAkAtQkCBQdsaXN0U3RyAgEsCgEIZmlsdGVyRm4CC2FjY3VtdWxhdG9yBG5leHQDCQBnAgUNc3RhcnRNaW51dGVJZAkBDXBhcnNlSW50VmFsdWUBBQRuZXh0CQDNCAIFC2FjY3VtdWxhdG9yCQENcGFyc2VJbnRWYWx1ZQEFBG5leHQFC2FjY3VtdWxhdG9yBAVsaXN0RgoAAiRsBQRsaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmaWx0ZXJGbgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUBAhtYXhJbmRleAMJAGYCCQCQAwEFBWxpc3RGAAAJAJYDAQUFbGlzdEYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQRsaXN0AAAEDGxhc3RNaW51dGVJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ5rX2xhc3RNaW51dGVJZAAABBZlbmRMYXN0Q3VtdWxhdGl2ZVByaWNlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICBR1rX3R3YXBEYXRhTGFzdEN1bXVsYXRpdmVQcmljZQIBXwkApAMBBQxsYXN0TWludXRlSWQAAAQMZW5kTGFzdFByaWNlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICBRNrX3R3YXBEYXRhTGFzdFByaWNlAgFfCQCkAwEFDGxhc3RNaW51dGVJZAAABBJub3dDdW11bGF0aXZlUHJpY2UJAGQCBRZlbmRMYXN0Q3VtdWxhdGl2ZVByaWNlCQBoAgkAZQIFCG1pbnV0ZUlkBQxsYXN0TWludXRlSWQFDGVuZExhc3RQcmljZQQYc3RhcnRMYXN0Q3VtdWxhdGl2ZVByaWNlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICBR1rX3R3YXBEYXRhTGFzdEN1bXVsYXRpdmVQcmljZQIBXwkApAMBBQhtYXhJbmRleAAABA5zdGFydExhc3RQcmljZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgUTa190d2FwRGF0YUxhc3RQcmljZQIBXwkApAMBBQhtYXhJbmRleAAABBRzdGFydEN1bXVsYXRpdmVQcmljZQkAZAIFGHN0YXJ0TGFzdEN1bXVsYXRpdmVQcmljZQkAaAIJAGUCBQ1zdGFydE1pbnV0ZUlkBQhtYXhJbmRleAUOc3RhcnRMYXN0UHJpY2UJAGkCCQBlAgUSbm93Q3VtdWxhdGl2ZVByaWNlBRRzdGFydEN1bXVsYXRpdmVQcmljZQUNVFdBUF9JTlRFUlZBTAEQZ2V0UGVnQWRqdXN0Q29zdAEGX3ByaWNlBA1fcG9zaXRpb25TaXplCQERdG90YWxQb3NpdGlvblNpemUABAlkaXJlY3Rpb24JAGYCBQ1fcG9zaXRpb25TaXplAAAEFWN1cnJlbnROZXRNYXJrZXRWYWx1ZQgJAQpzd2FwT3V0cHV0AwUJZGlyZWN0aW9uCQEDYWJzAQUNX3Bvc2l0aW9uU2l6ZQcCXzEEEGJhc2VBc3NldFJlc2VydmUJAQZic0FzdFIABBRuZXdRdW90ZUFzc2V0UmVzZXJ2ZQkBBG11bGQCBRBiYXNlQXNzZXRSZXNlcnZlBQZfcHJpY2UEBGNvc3QICQErZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmxCeVZhbHVlcwUFDV9wb3NpdGlvblNpemUFFWN1cnJlbnROZXRNYXJrZXRWYWx1ZQUUbmV3UXVvdGVBc3NldFJlc2VydmUFEGJhc2VBc3NldFJlc2VydmUFD1BOTF9PUFRJT05fU1BPVAJfMgkAlAoCBRRuZXdRdW90ZUFzc2V0UmVzZXJ2ZQUEY29zdAEKZ2V0RnVuZGluZwAED3VuZGVybHlpbmdQcmljZQkBEmdldE9yYWNsZVR3YXBQcmljZQAEDXNwb3RUd2FwUHJpY2UJARBnZXRUd2FwU3BvdFByaWNlAAQHcHJlbWl1bQkAZQIFDXNwb3RUd2FwUHJpY2UFD3VuZGVybHlpbmdQcmljZQMDCQAAAgkBFnRvdGFsU2hvcnRQb3NpdGlvblNpemUAAAAGCQAAAgkBFXRvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQAAAAkAlAoCAAAAAAMJAGYCAAAFB3ByZW1pdW0EFHNob3J0UHJlbWl1bUZyYWN0aW9uCQEEZGl2ZAIJAQRtdWxkAgUHcHJlbWl1bQkBFGZ1bmRpbmdQZXJpb2REZWNpbWFsAAUHT05FX0RBWQQTbG9uZ1ByZW1pdW1GcmFjdGlvbgkBBGRpdmQCCQEEbXVsZAIFFHNob3J0UHJlbWl1bUZyYWN0aW9uCQEWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQAJARV0b3RhbExvbmdQb3NpdGlvblNpemUACQCUCgIFFHNob3J0UHJlbWl1bUZyYWN0aW9uBRNsb25nUHJlbWl1bUZyYWN0aW9uBBNsb25nUHJlbWl1bUZyYWN0aW9uCQEEZGl2ZAIJAQRtdWxkAgUHcHJlbWl1bQkBFGZ1bmRpbmdQZXJpb2REZWNpbWFsAAUHT05FX0RBWQQUc2hvcnRQcmVtaXVtRnJhY3Rpb24JAQRkaXZkAgkBBG11bGQCBRNsb25nUHJlbWl1bUZyYWN0aW9uCQEVdG90YWxMb25nUG9zaXRpb25TaXplAAkBFnRvdGFsU2hvcnRQb3NpdGlvblNpemUACQCUCgIFFHNob3J0UHJlbWl1bUZyYWN0aW9uBRNsb25nUHJlbWl1bUZyYWN0aW9uAQ51cGRhdGVTZXR0aW5ncwkQX2luaXRNYXJnaW5SYXRpbwRfbW1yFF9saXF1aWRhdGlvbkZlZVJhdGlvDl9mdW5kaW5nUGVyaW9kBF9mZWUMX3NwcmVhZExpbWl0D19tYXhQcmljZUltcGFjdBhfcGFydGlhbExpcXVpZGF0aW9uUmF0aW8PX21heFByaWNlU3ByZWFkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrX2luaXRNYXJnaW5SYXRpbwUQX2luaXRNYXJnaW5SYXRpbwkAzAgCCQEMSW50ZWdlckVudHJ5AgUYa19tYWludGVuYW5jZU1hcmdpblJhdGlvBQRfbW1yCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVrX2xpcXVpZGF0aW9uRmVlUmF0aW8FFF9saXF1aWRhdGlvbkZlZVJhdGlvCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9rX2Z1bmRpbmdQZXJpb2QFDl9mdW5kaW5nUGVyaW9kCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQVrX2ZlZQUEX2ZlZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa19zcHJlYWRMaW1pdAUMX3NwcmVhZExpbWl0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrX21heFByaWNlSW1wYWN0BQ9fbWF4UHJpY2VJbXBhY3QJAMwIAgkBDEludGVnZXJFbnRyeQIFGWtfcGFydGlhbExpcXVpZGF0aW9uUmF0aW8FGF9wYXJ0aWFsTGlxdWlkYXRpb25SYXRpbwkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa19tYXhQcmljZVNwcmVhZAUPX21heFByaWNlU3ByZWFkBQNuaWwBDXVwZGF0ZUZ1bmRpbmcFEV9uZXh0RnVuZGluZ0Jsb2NrJF9sYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbiVfbGF0ZXN0U2hvcnRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uEF9sb25nRnVuZGluZ1JhdGURX3Nob3J0RnVuZGluZ1JhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIFEmtfbmV4dEZ1bmRpbmdCbG9jawURX25leHRGdW5kaW5nQmxvY2sJAMwIAgkBDEludGVnZXJFbnRyeQIFJWtfbGF0ZXN0TG9uZ0N1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FJF9sYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgUma19sYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FJV9sYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24JAMwIAgkBDEludGVnZXJFbnRyeQIFEWtfbG9uZ0Z1bmRpbmdSYXRlBRBfbG9uZ0Z1bmRpbmdSYXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJrX3Nob3J0RnVuZGluZ1JhdGUFEV9zaG9ydEZ1bmRpbmdSYXRlBQNuaWwBDnVwZGF0ZVBvc2l0aW9uBQhfYWRkcmVzcwVfc2l6ZQdfbWFyZ2luDV9vcGVuTm90aW9uYWwgX2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFDmtfcG9zaXRpb25TaXplBQhfYWRkcmVzcwUFX3NpemUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFEGtfcG9zaXRpb25NYXJnaW4FCF9hZGRyZXNzBQdfbWFyZ2luCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBRZrX3Bvc2l0aW9uT3Blbk5vdGlvbmFsBQhfYWRkcmVzcwUNX29wZW5Ob3Rpb25hbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUua19wb3NpdGlvbkxhc3RVcGRhdGVkQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgUIX2FkZHJlc3MFIF9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uBQNuaWwBCmFwcGVuZFR3YXABBXByaWNlBAhtaW51dGVJZAkAaQIJAGkCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcADoBwA8BBBwcmV2aW91c01pbnV0ZUlkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDmtfbGFzdE1pbnV0ZUlkAAADCQBmAgUQcHJldmlvdXNNaW51dGVJZAUIbWludXRlSWQJAAIBAhFUV0FQIG91dC1vZi1vcmRlcgQMbGFzdE1pbnV0ZUlkAwkAAAIFEHByZXZpb3VzTWludXRlSWQAAAUIbWludXRlSWQFEHByZXZpb3VzTWludXRlSWQDCQBmAgUIbWludXRlSWQFEHByZXZpb3VzTWludXRlSWQEE3ByZXZDdW11bGF0aXZlUHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIFHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlAgFfCQCkAwEFEHByZXZpb3VzTWludXRlSWQAAAQJcHJldlByaWNlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICBRNrX3R3YXBEYXRhTGFzdFByaWNlAgFfCQCkAwEFEHByZXZpb3VzTWludXRlSWQFBXByaWNlBBNsYXN0Q3VtdWxhdGl2ZVByaWNlCQBkAgUTcHJldkN1bXVsYXRpdmVQcmljZQkAaAIJAGUCBQhtaW51dGVJZAUMbGFzdE1pbnV0ZUlkBQlwcmV2UHJpY2UEBGxpc3QJAQtwdXNoVG9RdWV1ZQMJAQlzdHJUb0xpc3QBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFDWtfbGFzdERhdGFTdHICAAUNVFdBUF9JTlRFUlZBTAkApAMBBQhtaW51dGVJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDnRvQ29tcG9zaXRlS2V5AgUda190d2FwRGF0YUxhc3RDdW11bGF0aXZlUHJpY2UJAKQDAQUIbWludXRlSWQFE2xhc3RDdW11bGF0aXZlUHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFE2tfdHdhcERhdGFMYXN0UHJpY2UJAKQDAQUIbWludXRlSWQFBXByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBRprX3R3YXBEYXRhUHJldmlvdXNNaW51dGVJZAkApAMBBQhtaW51dGVJZAUQcHJldmlvdXNNaW51dGVJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUOa19sYXN0TWludXRlSWQFCG1pbnV0ZUlkCQDMCAIJAQtTdHJpbmdFbnRyeQIFDWtfbGFzdERhdGFTdHIJAQlsaXN0VG9TdHIBBQRsaXN0BQNuaWwEGHR3YXBEYXRhUHJldmlvdXNNaW51dGVJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEOdG9Db21wb3NpdGVLZXkCBRprX3R3YXBEYXRhUHJldmlvdXNNaW51dGVJZAkApAMBBQhtaW51dGVJZAAABBNwcmV2Q3VtdWxhdGl2ZVByaWNlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQ50b0NvbXBvc2l0ZUtleQIFHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlCQCkAwEFGHR3YXBEYXRhUHJldmlvdXNNaW51dGVJZAAABAlwcmV2UHJpY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBDnRvQ29tcG9zaXRlS2V5AgUTa190d2FwRGF0YUxhc3RQcmljZQkApAMBBRh0d2FwRGF0YVByZXZpb3VzTWludXRlSWQFBXByaWNlBBNsYXN0Q3VtdWxhdGl2ZVByaWNlCQBkAgUTcHJldkN1bXVsYXRpdmVQcmljZQkAaAIJAGUCBQhtaW51dGVJZAUYdHdhcERhdGFQcmV2aW91c01pbnV0ZUlkBQlwcmV2UHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ50b0NvbXBvc2l0ZUtleQIFHWtfdHdhcERhdGFMYXN0Q3VtdWxhdGl2ZVByaWNlCQCkAwEFCG1pbnV0ZUlkBRNsYXN0Q3VtdWxhdGl2ZVByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBRNrX3R3YXBEYXRhTGFzdFByaWNlCQCkAwEFCG1pbnV0ZUlkBQVwcmljZQUDbmlsARF1cGRhdGVBbW1SZXNlcnZlcwIHX3F0QXN0UgdfYnNBc3RSCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrX3F1b3RlQXNzZXRSZXNlcnZlBQdfcXRBc3RSCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJrX2Jhc2VBc3NldFJlc2VydmUFB19ic0FzdFIFA25pbAEJdXBkYXRlQW1tBwdfcXRBc3RSB19ic0FzdFIXX3RvdGFsUG9zaXRpb25TaXplQWZ0ZXIYX2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyFV9vcGVuSW50ZXJlc3ROb3Rpb25hbBZfdG90YWxMb25nUG9zaXRpb25TaXplF190b3RhbFNob3J0UG9zaXRpb25TaXplAwkBAiE9AgkAZQIFFl90b3RhbExvbmdQb3NpdGlvblNpemUFF190b3RhbFNob3J0UG9zaXRpb25TaXplBRdfdG90YWxQb3NpdGlvblNpemVBZnRlcgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhhJbnZhbGlkIEFNTSBzdGF0ZSBkYXRhOiAJAKQDAQUWX3RvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQIEICsgIAkApAMBBRdfdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQIEICE9IAkApAMBBRdfdG90YWxQb3NpdGlvblNpemVBZnRlcgkAzggCCQDOCAIJARF1cGRhdGVBbW1SZXNlcnZlcwIFB19xdEFzdFIFB19ic0FzdFIJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tfdG90YWxQb3NpdGlvblNpemUFF190b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRrX2N1bXVsYXRpdmVOb3Rpb25hbAUYX2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRZrX29wZW5JbnRlcmVzdE5vdGlvbmFsBRVfb3BlbkludGVyZXN0Tm90aW9uYWwJAMwIAgkBDEludGVnZXJFbnRyeQIFF2tfdG90YWxMb25nUG9zaXRpb25TaXplBRZfdG90YWxMb25nUG9zaXRpb25TaXplCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRhrX3RvdGFsU2hvcnRQb3NpdGlvblNpemUFF190b3RhbFNob3J0UG9zaXRpb25TaXplBQNuaWwJAQphcHBlbmRUd2FwAQkBBGRpdmQCBQdfcXRBc3RSBQdfYnNBc3RSAQ5kZWxldGVQb3NpdGlvbgEIX2FkZHJlc3MJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDnRvQ29tcG9zaXRlS2V5AgUOa19wb3NpdGlvblNpemUFCF9hZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ50b0NvbXBvc2l0ZUtleQIFEGtfcG9zaXRpb25NYXJnaW4FCF9hZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ50b0NvbXBvc2l0ZUtleQIFFmtfcG9zaXRpb25PcGVuTm90aW9uYWwFCF9hZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ50b0NvbXBvc2l0ZUtleQIFLmtfcG9zaXRpb25MYXN0VXBkYXRlZEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FCF9hZGRyZXNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEOdG9Db21wb3NpdGVLZXkCBRRrX3Bvc2l0aW9uQ2xvc2VkRGF0ZQUIX2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQNuaWwBCHdpdGhkcmF3AghfYWRkcmVzcwdfYW1vdW50BAdiYWxhbmNlCQDwBwIFBHRoaXMJAQpxdW90ZUFzc2V0AAMJAGYCBQdfYW1vdW50BQdiYWxhbmNlCQACAQkArAICCQCsAgIJAKwCAgITVW5hYmxlIHRvIHdpdGhkcmF3IAkApAMBBQdfYW1vdW50AhcgZnJvbSBjb250cmFjdCBiYWxhbmNlIAkApAMBBQdiYWxhbmNlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCF9hZGRyZXNzBQdfYW1vdW50CQEKcXVvdGVBc3NldAAFA25pbAENdXBkYXRlQmFsYW5jZQEBaQMJAGYCAAAFAWkJAAIBAgdCYWxhbmNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrX2JhbGFuY2UFAWkFA25pbAELdHJhbnNmZXJGZWUBAWkJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBDnN0YWtpbmdBZGRyZXNzAAUBaQkBCnF1b3RlQXNzZXQABQNuaWwUAWkBBXBhdXNlAAMJAQIhPQIIBQFpBmNhbGxlcgkBDGFkbWluQWRkcmVzcwAJAAIBAhpJbnZhbGlkIHRvZ2dsZVBhdXNlIHBhcmFtcwkAzAgCCQEMQm9vbGVhbkVudHJ5AgUIa19wYXVzZWQGBQNuaWwBaQEHdW5wYXVzZQADCQECIT0CCAUBaQZjYWxsZXIJAQxhZG1pbkFkZHJlc3MACQACAQIaSW52YWxpZCB0b2dnbGVQYXVzZSBwYXJhbXMJAMwIAgkBDEJvb2xlYW5FbnRyeQIFCGtfcGF1c2VkBwUDbmlsAWkBDGFkZExpcXVpZGl0eQERX3F1b3RlQXNzZXRBbW91bnQDAwkBAiE9AggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAYJAGcCAAAFEV9xdW90ZUFzc2V0QW1vdW50CQACAQIbSW52YWxpZCBhZGRMaXF1aWRpdHkgcGFyYW1zBAdfcXRBc3RSCQEGcXRBc3RSAAQHX2JzQXN0UgkBBmJzQXN0UgAEBXByaWNlCQEEZGl2ZAIFB19xdEFzdFIFB19ic0FzdFIEFGJhc2VBc3NldEFtb3VudFRvQWRkCQEEZGl2ZAIFEV9xdW90ZUFzc2V0QW1vdW50BQVwcmljZQQLcXRBc3RSQWZ0ZXIJAGQCBQdfcXRBc3RSBRFfcXVvdGVBc3NldEFtb3VudAQLYnNBc3RSQWZ0ZXIJAGQCBQdfYnNBc3RSBRRiYXNlQXNzZXRBbW91bnRUb0FkZAkBEXVwZGF0ZUFtbVJlc2VydmVzAgULcXRBc3RSQWZ0ZXIFC2JzQXN0UkFmdGVyAWkBD3JlbW92ZUxpcXVpZGl0eQERX3F1b3RlQXNzZXRBbW91bnQDAwkBAiE9AggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAYJAGcCAAAFEV9xdW90ZUFzc2V0QW1vdW50CQACAQIeSW52YWxpZCByZW1vdmVMaXF1aWRpdHkgcGFyYW1zBAdfcXRBc3RSCQEGcXRBc3RSAAQHX2JzQXN0UgkBBmJzQXN0UgAEBXByaWNlCQEEZGl2ZAIFB19xdEFzdFIFB19ic0FzdFIEF2Jhc2VBc3NldEFtb3VudFRvUmVtb3ZlCQEEZGl2ZAIFEV9xdW90ZUFzc2V0QW1vdW50BQVwcmljZQQLcXRBc3RSQWZ0ZXIJAGUCBQdfcXRBc3RSBRFfcXVvdGVBc3NldEFtb3VudAQLYnNBc3RSQWZ0ZXIJAGUCBQdfYnNBc3RSBRdiYXNlQXNzZXRBbW91bnRUb1JlbW92ZQkBEXVwZGF0ZUFtbVJlc2VydmVzAgULcXRBc3RSQWZ0ZXIFC2JzQXN0UkFmdGVyAWkBDmNoYW5nZVNldHRpbmdzCRBfaW5pdE1hcmdpblJhdGlvBF9tbXIUX2xpcXVpZGF0aW9uRmVlUmF0aW8OX2Z1bmRpbmdQZXJpb2QEX2ZlZQxfc3ByZWFkTGltaXQPX21heFByaWNlSW1wYWN0GF9wYXJ0aWFsTGlxdWlkYXRpb25SYXRpbw9fbWF4UHJpY2VTcHJlYWQDCQECIT0CCAUBaQZjYWxsZXIJAQxhZG1pbkFkZHJlc3MACQACAQIdSW52YWxpZCBjaGFuZ2VTZXR0aW5ncyBwYXJhbXMJAQ51cGRhdGVTZXR0aW5ncwkFEF9pbml0TWFyZ2luUmF0aW8FBF9tbXIFFF9saXF1aWRhdGlvbkZlZVJhdGlvBQ5fZnVuZGluZ1BlcmlvZAUEX2ZlZQUMX3NwcmVhZExpbWl0BQ9fbWF4UHJpY2VJbXBhY3QFGF9wYXJ0aWFsTGlxdWlkYXRpb25SYXRpbwUPX21heFByaWNlU3ByZWFkAWkBCmluaXRpYWxpemUOB19xdEFzdFIHX2JzQXN0Ug5fZnVuZGluZ1BlcmlvZBBfaW5pdE1hcmdpblJhdGlvBF9tbXIUX2xpcXVpZGF0aW9uRmVlUmF0aW8EX2ZlZQdfb3JhY2xlCl9vcmFjbGVLZXkMX2Nvb3JkaW5hdG9yDF9zcHJlYWRMaW1pdA9fbWF4UHJpY2VJbXBhY3QYX3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvD19tYXhQcmljZVNwcmVhZAMDAwMDAwMDAwMDAwkAZwIAAAUHX3F0QXN0UgYJAGcCAAAFB19ic0FzdFIGCQBnAgAABQ5fZnVuZGluZ1BlcmlvZAYJAGcCAAAFEF9pbml0TWFyZ2luUmF0aW8GCQBnAgAABQRfbW1yBgkAZwIAAAUUX2xpcXVpZGF0aW9uRmVlUmF0aW8GCQBnAgAABQRfZmVlBgkAZwIAAAUMX3NwcmVhZExpbWl0BgkAZwIAAAUPX21heFByaWNlSW1wYWN0BgkAZwIAAAUYX3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvBgkAZwIAAAUPX21heFByaWNlU3ByZWFkBgkBC2luaXRpYWxpemVkAAkAAgECHUludmFsaWQgaW5pdGlhbGl6ZSBwYXJhbWV0ZXJzCQDOCAIJAM4IAgkAzggCCQDOCAIJAQl1cGRhdGVBbW0HBQdfcXRBc3RSBQdfYnNBc3RSAAAAAAAAAAAAAAkBDnVwZGF0ZVNldHRpbmdzCQUQX2luaXRNYXJnaW5SYXRpbwUEX21tcgUUX2xpcXVpZGF0aW9uRmVlUmF0aW8FDl9mdW5kaW5nUGVyaW9kBQRfZmVlBQxfc3ByZWFkTGltaXQFD19tYXhQcmljZUltcGFjdAUYX3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvBQ9fbWF4UHJpY2VTcHJlYWQJAQ11cGRhdGVGdW5kaW5nBQkAZAIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQ5fZnVuZGluZ1BlcmlvZAAAAAAAAAAACQENdXBkYXRlQmFsYW5jZQEAAAkAzAgCCQEMQm9vbGVhbkVudHJ5AgUNa19pbml0aWFsaXplZAYJAMwIAgkBC1N0cmluZ0VudHJ5AgUFa19vcmEFB19vcmFjbGUJAMwIAgkBC1N0cmluZ0VudHJ5AgUJa19vcmFfa2V5BQpfb3JhY2xlS2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIFFGtfY29vcmRpbmF0b3JBZGRyZXNzBQxfY29vcmRpbmF0b3IFA25pbAFpARJzZXRJbml0TWFyZ2luUmF0aW8BEF9pbml0TWFyZ2luUmF0aW8DAwkAZwIAAAUQX2luaXRNYXJnaW5SYXRpbwYJAQEhAQkBC2luaXRpYWxpemVkAAkAAgECJUludmFsaWQgc2V0SW5pdE1hcmdpblJhdGlvIHBhcmFtZXRlcnMJAQ51cGRhdGVTZXR0aW5ncwkFEF9pbml0TWFyZ2luUmF0aW8JARZtYWludGVuYW5jZU1hcmdpblJhdGlvAAkBE2xpcXVpZGF0aW9uRmVlUmF0aW8ACQEQZnVuZGluZ1BlcmlvZFJhdwAJAQNmZWUACQELc3ByZWFkTGltaXQACQEObWF4UHJpY2VJbXBhY3QACQEXcGFydGlhbExpcXVpZGF0aW9uUmF0aW8ACQEObWF4UHJpY2VTcHJlYWQAAWkBEGRlY3JlYXNlUG9zaXRpb24DB19hbW91bnQJX2xldmVyYWdlE19taW5CYXNlQXNzZXRBbW91bnQDAwMDAwkAZwIAAAUHX2Ftb3VudAYJAQEhAQkBC2luaXRpYWxpemVkAAYJAQEhAQkBFnJlcXVpcmVNb3JlTWFyZ2luUmF0aW8DCQEEZGl2ZAIFDERFQ0lNQUxfVU5JVAUJX2xldmVyYWdlCQEPaW5pdE1hcmdpblJhdGlvAAYGCQEBIQEJARNyZXF1aXJlT3BlblBvc2l0aW9uAQkApQgBCAUBaQZjYWxsZXIGCQEGcGF1c2VkAAkAAgECI0ludmFsaWQgZGVjcmVhc2VQb3NpdGlvbiBwYXJhbWV0ZXJzBA0kdDAzNzMzMTM3NDgzCQELZ2V0UG9zaXRpb24BCQClCAEIBQFpBmNhbGxlcgQPb2xkUG9zaXRpb25TaXplCAUNJHQwMzczMzEzNzQ4MwJfMQQRb2xkUG9zaXRpb25NYXJnaW4IBQ0kdDAzNzMzMTM3NDgzAl8yBBdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDM3MzMxMzc0ODMCXzMEFG9sZFBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwMzczMzEzNzQ4MwJfNAQKX2RpcmVjdGlvbgMJAGYCBQ9vbGRQb3NpdGlvblNpemUAAAUJRElSX1NIT1JUBQhESVJfTE9ORwQFaXNBZGQJAAACBQpfZGlyZWN0aW9uBQhESVJfTE9ORwQMb3Blbk5vdGlvbmFsCQEEbXVsZAIFB19hbW91bnQFCV9sZXZlcmFnZQQNJHQwMzc2NTYzNzc3MgkBI2dldFBvc2l0aW9uTm90aW9uYWxBbmRVbnJlYWxpemVkUG5sAgkApQgBCAUBaQZjYWxsZXIFD1BOTF9PUFRJT05fU1BPVAQTb2xkUG9zaXRpb25Ob3Rpb25hbAgFDSR0MDM3NjU2Mzc3NzICXzEEDXVucmVhbGl6ZWRQbmwIBQ0kdDAzNzY1NjM3NzcyAl8yBA0kdDAzNzc3ODQwMzI3AwkAZgIFE29sZFBvc2l0aW9uTm90aW9uYWwFDG9wZW5Ob3Rpb25hbAQNJHQwMzgxNTUzODM3NAkBCXN3YXBJbnB1dAIFBWlzQWRkBQxvcGVuTm90aW9uYWwEFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQgFDSR0MDM4MTU1MzgzNzQCXzEEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDAzODE1NTM4Mzc0Al8yBBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDAzODE1NTM4Mzc0Al8zBBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwMzgxNTUzODM3NAJfNAQXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIIBQ0kdDAzODE1NTM4Mzc0Al81BBhleGNoYW5nZWRQb3NpdGlvblNpemVBYnMJAQNhYnMBBRVleGNoYW5nZWRQb3NpdGlvblNpemUDAwkBAiE9AgUTX21pbkJhc2VBc3NldEFtb3VudAAACQBmAgUTX21pbkJhc2VBc3NldEFtb3VudAUYZXhjaGFuZ2VkUG9zaXRpb25TaXplQWJzBwkAAgEJAKwCAgkArAICCQCsAgICJVRvbyBsaXR0bGUgYmFzZSBhc3NldCBleGNoYW5nZWQsIGdvdCAJAKQDAQUYZXhjaGFuZ2VkUG9zaXRpb25TaXplQWJzAgogZXhwZWN0ZWQgCQCkAwEFE19taW5CYXNlQXNzZXRBbW91bnQEC3JlYWxpemVkUG5sCQEEZGl2ZAIJAQRtdWxkAgUNdW5yZWFsaXplZFBubAUYZXhjaGFuZ2VkUG9zaXRpb25TaXplQWJzCQEDYWJzAQUPb2xkUG9zaXRpb25TaXplBA0kdDAzODgxMTM5MDU2CQEiY2FsY1JlbWFpbk1hcmdpbldpdGhGdW5kaW5nUGF5bWVudAQFD29sZFBvc2l0aW9uU2l6ZQURb2xkUG9zaXRpb25NYXJnaW4FFG9sZFBvc2l0aW9uTHN0VXBkQ1BGBQtyZWFsaXplZFBubAQMcmVtYWluTWFyZ2luCAUNJHQwMzg4MTEzOTA1NgJfMQQHYmFkRGVidAgFDSR0MDM4ODExMzkwNTYCXzIEDmZ1bmRpbmdQYXltZW50CAUNJHQwMzg4MTEzOTA1NgJfMwQZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAUMb3Blbk5vdGlvbmFsBBJ1bnJlYWxpemVkUG5sQWZ0ZXIJAGUCBQ11bnJlYWxpemVkUG5sBQtyZWFsaXplZFBubAQScmVtYWluT3Blbk5vdGlvbmFsAwkAZgIFD29sZFBvc2l0aW9uU2l6ZQAACQBlAgkAZQIFE29sZFBvc2l0aW9uTm90aW9uYWwFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQFEnVucmVhbGl6ZWRQbmxBZnRlcgkAZQIJAGQCBRJ1bnJlYWxpemVkUG5sQWZ0ZXIFE29sZFBvc2l0aW9uTm90aW9uYWwFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQED25ld1Bvc2l0aW9uU2l6ZQkAZAIFD29sZFBvc2l0aW9uU2l6ZQUVZXhjaGFuZ2VkUG9zaXRpb25TaXplCQCdCgsFD25ld1Bvc2l0aW9uU2l6ZQUMcmVtYWluTWFyZ2luCQEDYWJzAQUScmVtYWluT3Blbk5vdGlvbmFsCQEfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgEFD25ld1Bvc2l0aW9uU2l6ZQUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBRZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBRZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyBRdjdW11bGF0aXZlTm90aW9uYWxBZnRlcgkAZQIJARRvcGVuSW50ZXJlc3ROb3Rpb25hbAAFDG9wZW5Ob3Rpb25hbAkAZQIJARV0b3RhbExvbmdQb3NpdGlvblNpemUAAwkAZgIFD25ld1Bvc2l0aW9uU2l6ZQAACQEDYWJzAQUVZXhjaGFuZ2VkUG9zaXRpb25TaXplAAAJAGUCCQEWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQADCQBmAgAABQ9uZXdQb3NpdGlvblNpemUJAQNhYnMBBRVleGNoYW5nZWRQb3NpdGlvblNpemUAAAkAAgECFENsb3NlIHBvc2l0aW9uIGZpcnN0BA9uZXdQb3NpdGlvblNpemUIBQ0kdDAzNzc3ODQwMzI3Al8xBBduZXdQb3NpdGlvblJlbWFpbk1hcmdpbggFDSR0MDM3Nzc4NDAzMjcCXzIEF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsCAUNJHQwMzc3Nzg0MDMyNwJfMwQUbmV3UG9zaXRpb25MYXRlc3RDUEYIBQ0kdDAzNzc3ODQwMzI3Al80BBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDAzNzc3ODQwMzI3Al81BBZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwMzc3Nzg0MDMyNwJfNgQWdG90YWxQb3NpdGlvblNpemVBZnRlcggFDSR0MDM3Nzc4NDAzMjcCXzcEF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyCAUNJHQwMzc3Nzg0MDMyNwJfOAQZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcggFDSR0MDM3Nzc4NDAzMjcCXzkEDnRvdGFsTG9uZ0FmdGVyCAUNJHQwMzc3Nzg0MDMyNwNfMTAED3RvdGFsU2hvcnRBZnRlcggFDSR0MDM3Nzc4NDAzMjcDXzExBA5ub3RpZnlOb3Rpb25hbAkA/AcECQEMbWluZXJBZGRyZXNzAAIObm90aWZ5Tm90aW9uYWwJAMwIAgkApQgBCAUBaQZjYWxsZXIJAMwIAgUXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwFA25pbAUDbmlsAwkAAAIFDm5vdGlmeU5vdGlvbmFsBQ5ub3RpZnlOb3Rpb25hbAkAzggCCQEOdXBkYXRlUG9zaXRpb24FCQClCAEIBQFpBmNhbGxlcgUPbmV3UG9zaXRpb25TaXplBRduZXdQb3NpdGlvblJlbWFpbk1hcmdpbgUXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwFFG5ld1Bvc2l0aW9uTGF0ZXN0Q1BGCQEJdXBkYXRlQW1tBwUWcXVvdGVBc3NldFJlc2VydmVBZnRlcgUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBRZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyBRdjdW11bGF0aXZlTm90aW9uYWxBZnRlcgUZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcgUOdG90YWxMb25nQWZ0ZXIFD3RvdGFsU2hvcnRBZnRlcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARBpbmNyZWFzZVBvc2l0aW9uBApfZGlyZWN0aW9uCV9sZXZlcmFnZRNfbWluQmFzZUFzc2V0QW1vdW50CF9yZWZMaW5rBApfcmF3QW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAMDAwMDAwMJAQIhPQIFCl9kaXJlY3Rpb24FCERJUl9MT05HCQECIT0CBQpfZGlyZWN0aW9uBQlESVJfU0hPUlQHBgkAZwIAAAUKX3Jhd0Ftb3VudAYJAQEhAQkBC2luaXRpYWxpemVkAAYJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAkBCnF1b3RlQXNzZXQABgkBASEBCQEWcmVxdWlyZU1vcmVNYXJnaW5SYXRpbwMJAQRkaXZkAgUMREVDSU1BTF9VTklUBQlfbGV2ZXJhZ2UJAQ9pbml0TWFyZ2luUmF0aW8ABgYJAQZwYXVzZWQACQACAQIjSW52YWxpZCBpbmNyZWFzZVBvc2l0aW9uIHBhcmFtZXRlcnMEB190cmFkZXIJAKUIAQgFAWkGY2FsbGVyBAxyYXdGZWVBbW91bnQJAQRtdWxkAgUKX3Jhd0Ftb3VudAkBA2ZlZQAEDnJlZmVycmVyRmVlQW55CQD8BwQJAQ9yZWZlcnJhbEFkZHJlc3MAAhVhY2NlcHRQYXltZW50V2l0aExpbmsJAMwIAgUHX3RyYWRlcgkAzAgCBQhfcmVmTGluawUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAFDHJhd0ZlZUFtb3VudAUDbmlsAwkAAAIFDnJlZmVycmVyRmVlQW55BQ5yZWZlcnJlckZlZUFueQQLcmVmZXJyZXJGZWUEByRtYXRjaDAFDnJlZmVycmVyRmVlQW55AwkAAQIFByRtYXRjaDACA0ludAQBeAUHJG1hdGNoMAUBeAkAAgECE0ludmFsaWQgcmVmZXJyZXJGZWUEB19hbW91bnQJAGUCBQpfcmF3QW1vdW50BQxyYXdGZWVBbW91bnQECWZlZUFtb3VudAkAZQIFDHJhd0ZlZUFtb3VudAULcmVmZXJyZXJGZWUEDSR0MDQxODU2NDE5OTYJAQtnZXRQb3NpdGlvbgEFB190cmFkZXIED29sZFBvc2l0aW9uU2l6ZQgFDSR0MDQxODU2NDE5OTYCXzEEEW9sZFBvc2l0aW9uTWFyZ2luCAUNJHQwNDE4NTY0MTk5NgJfMgQXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDA0MTg1NjQxOTk2Al8zBBRvbGRQb3NpdGlvbkxzdFVwZENQRggFDSR0MDQxODU2NDE5OTYCXzQEDWlzTmV3UG9zaXRpb24JAAACBQ9vbGRQb3NpdGlvblNpemUAAAQPaXNTYW1lRGlyZWN0aW9uAwkAZgIFD29sZFBvc2l0aW9uU2l6ZQAACQAAAgUKX2RpcmVjdGlvbgUIRElSX0xPTkcJAAACBQpfZGlyZWN0aW9uBQlESVJfU0hPUlQEDmV4cGFuZEV4aXN0aW5nAwkBASEBBQ1pc05ld1Bvc2l0aW9uBQ9pc1NhbWVEaXJlY3Rpb24HBAVpc0FkZAkAAAIFCl9kaXJlY3Rpb24FCERJUl9MT05HBA0kdDA0MjI4NTQ0ODUzAwMFDWlzTmV3UG9zaXRpb24GBQ5leHBhbmRFeGlzdGluZwQMb3Blbk5vdGlvbmFsCQEEbXVsZAIFB19hbW91bnQFCV9sZXZlcmFnZQQNJHQwNDI3MDk0MjkxNQkBCXN3YXBJbnB1dAIFBWlzQWRkBQxvcGVuTm90aW9uYWwEFWFtb3VudEJhc2VBc3NldEJvdWdodAgFDSR0MDQyNzA5NDI5MTUCXzEEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA0MjcwOTQyOTE1Al8yBBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA0MjcwOTQyOTE1Al8zBBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwNDI3MDk0MjkxNQJfNAQXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIIBQ0kdDA0MjcwOTQyOTE1Al81AwMJAQIhPQIFE19taW5CYXNlQXNzZXRBbW91bnQAAAkAZgIFE19taW5CYXNlQXNzZXRBbW91bnQJAQNhYnMBBRVhbW91bnRCYXNlQXNzZXRCb3VnaHQHCQACAQkArAICCQCsAgIJAKwCAgINTGltaXQgZXJyb3I6IAkApAMBCQEDYWJzAQUVYW1vdW50QmFzZUFzc2V0Qm91Z2h0AgMgPCAJAKQDAQUTX21pbkJhc2VBc3NldEFtb3VudAQPbmV3UG9zaXRpb25TaXplCQBkAgUPb2xkUG9zaXRpb25TaXplBRVhbW91bnRCYXNlQXNzZXRCb3VnaHQEGWluY3JlYXNlTWFyZ2luUmVxdWlyZW1lbnQJAQRkaXZkAgUMb3Blbk5vdGlvbmFsBQlfbGV2ZXJhZ2UEDSR0MDQzMjk2NDM1MzUJASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BAUPb2xkUG9zaXRpb25TaXplBRFvbGRQb3NpdGlvbk1hcmdpbgUUb2xkUG9zaXRpb25Mc3RVcGRDUEYFGWluY3JlYXNlTWFyZ2luUmVxdWlyZW1lbnQEDHJlbWFpbk1hcmdpbggFDSR0MDQzMjk2NDM1MzUCXzEEAngxCAUNJHQwNDMyOTY0MzUzNQJfMgQCeDIIBQ0kdDA0MzI5NjQzNTM1Al8zAwkBASEBCQEZcmVxdWlyZU5vdE92ZXJTcHJlYWRMaW1pdAIFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFWJhc2VBc3NldFJlc2VydmVBZnRlcgkAAgECFU92ZXIgbWF4IHNwcmVhZCBsaW1pdAkAnQoLBQ9uZXdQb3NpdGlvblNpemUFDHJlbWFpbk1hcmdpbgkAZAIFF29sZFBvc2l0aW9uT3Blbk5vdGlvbmFsBQxvcGVuTm90aW9uYWwJAR9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAQUPbmV3UG9zaXRpb25TaXplBRViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyCQBkAgkBFG9wZW5JbnRlcmVzdE5vdGlvbmFsAAUMb3Blbk5vdGlvbmFsCQBkAgkBFXRvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQADCQBmAgUPbmV3UG9zaXRpb25TaXplAAAJAQNhYnMBBRVhbW91bnRCYXNlQXNzZXRCb3VnaHQAAAkAZAIJARZ0b3RhbFNob3J0UG9zaXRpb25TaXplAAMJAGYCAAAFD25ld1Bvc2l0aW9uU2l6ZQkBA2FicwEFFWFtb3VudEJhc2VBc3NldEJvdWdodAAABAxvcGVuTm90aW9uYWwJAQRtdWxkAgUHX2Ftb3VudAUJX2xldmVyYWdlBA0kdDA0NDU0NjQ0NjYyCQEjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwCCQClCAEIBQFpBmNhbGxlcgUPUE5MX09QVElPTl9TUE9UBBNvbGRQb3NpdGlvbk5vdGlvbmFsCAUNJHQwNDQ1NDY0NDY2MgJfMQQNdW5yZWFsaXplZFBubAgFDSR0MDQ0NTQ2NDQ2NjICXzIDCQBmAgUTb2xkUG9zaXRpb25Ob3Rpb25hbAUMb3Blbk5vdGlvbmFsCQACAQIuVXNlIGRlY3JlYXNlUG9zaXRpb24gdG8gZGVjcmVhc2UgcG9zaXRpb24gc2l6ZQkAAgECFENsb3NlIHBvc2l0aW9uIGZpcnN0BA9uZXdQb3NpdGlvblNpemUIBQ0kdDA0MjI4NTQ0ODUzAl8xBBduZXdQb3NpdGlvblJlbWFpbk1hcmdpbggFDSR0MDQyMjg1NDQ4NTMCXzIEF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsCAUNJHQwNDIyODU0NDg1MwJfMwQUbmV3UG9zaXRpb25MYXRlc3RDUEYIBQ0kdDA0MjI4NTQ0ODUzAl80BBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA0MjI4NTQ0ODUzAl81BBZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyCAUNJHQwNDIyODU0NDg1MwJfNgQWdG90YWxQb3NpdGlvblNpemVBZnRlcggFDSR0MDQyMjg1NDQ4NTMCXzcEF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyCAUNJHQwNDIyODU0NDg1MwJfOAQZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcggFDSR0MDQyMjg1NDQ4NTMCXzkEDnRvdGFsTG9uZ0FmdGVyCAUNJHQwNDIyODU0NDg1MwNfMTAED3RvdGFsU2hvcnRBZnRlcggFDSR0MDQyMjg1NDQ4NTMDXzExBAxmZWVUb1N0YWtlcnMJAGkCBQlmZWVBbW91bnQAAgQOZmVlVG9JbnN1cmFuY2UJAGUCBQlmZWVBbW91bnQFDGZlZVRvU3Rha2VycwQFc3Rha2UJAPwHBAkBEXF1b3RlQXNzZXRTdGFraW5nAAIObG9ja05ldXRyaW5vU1AJAMwIAgkApQgBCQEOc3Rha2luZ0FkZHJlc3MACQDMCAIFCEFMTF9GRUVTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQpxdW90ZUFzc2V0AAUHX2Ftb3VudAUDbmlsAwkAAAIFBXN0YWtlBQVzdGFrZQQQZGVwb3NpdEluc3VyYW5jZQkA/AcECQEQaW5zdXJhbmNlQWRkcmVzcwACB2RlcG9zaXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQABQ5mZWVUb0luc3VyYW5jZQUDbmlsAwkAAAIFEGRlcG9zaXRJbnN1cmFuY2UFEGRlcG9zaXRJbnN1cmFuY2UECW5vdGlmeUZlZQkA/AcECQEMbWluZXJBZGRyZXNzAAIKbm90aWZ5RmVlcwkAzAgCBQdfdHJhZGVyCQDMCAIFCWZlZUFtb3VudAUDbmlsBQNuaWwDCQAAAgUJbm90aWZ5RmVlBQlub3RpZnlGZWUEDm5vdGlmeU5vdGlvbmFsCQD8BwQJAQxtaW5lckFkZHJlc3MAAg5ub3RpZnlOb3Rpb25hbAkAzAgCBQdfdHJhZGVyCQDMCAIFF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsBQNuaWwFA25pbAMJAAACBQ5ub3RpZnlOb3Rpb25hbAUObm90aWZ5Tm90aW9uYWwJAM4IAgkAzggCCQDOCAIJAQ51cGRhdGVQb3NpdGlvbgUFB190cmFkZXIFD25ld1Bvc2l0aW9uU2l6ZQUXbmV3UG9zaXRpb25SZW1haW5NYXJnaW4FF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsBRRuZXdQb3NpdGlvbkxhdGVzdENQRgkBCXVwZGF0ZUFtbQcFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFWJhc2VBc3NldFJlc2VydmVBZnRlcgUWdG90YWxQb3NpdGlvblNpemVBZnRlcgUXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIFGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIFDnRvdGFsTG9uZ0FmdGVyBQ90b3RhbFNob3J0QWZ0ZXIJAQt0cmFuc2ZlckZlZQEFDGZlZVRvU3Rha2VycwkBDXVwZGF0ZUJhbGFuY2UBCQBkAgkBCGNiYWxhbmNlAAUHX2Ftb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQlhZGRNYXJnaW4ABApfcmF3QW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAMDAwMJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAkBCnF1b3RlQXNzZXQABgkBASEBCQETcmVxdWlyZU9wZW5Qb3NpdGlvbgEJAKUIAQgFAWkGY2FsbGVyBgkBASEBCQELaW5pdGlhbGl6ZWQABgkBBnBhdXNlZAAJAAIBAhxJbnZhbGlkIGFkZE1hcmdpbiBwYXJhbWV0ZXJzBAdfdHJhZGVyCQClCAEIBQFpBmNhbGxlcgQMcmF3RmVlQW1vdW50CQEEbXVsZAIFCl9yYXdBbW91bnQJAQNmZWUABA5yZWZlcnJlckZlZUFueQkA/AcECQEPcmVmZXJyYWxBZGRyZXNzAAINYWNjZXB0UGF5bWVudAkAzAgCBQdfdHJhZGVyBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQpxdW90ZUFzc2V0AAUMcmF3RmVlQW1vdW50BQNuaWwDCQAAAgUOcmVmZXJyZXJGZWVBbnkFDnJlZmVycmVyRmVlQW55BAtyZWZlcnJlckZlZQQHJG1hdGNoMAUOcmVmZXJyZXJGZWVBbnkDCQABAgUHJG1hdGNoMAIDSW50BAF4BQckbWF0Y2gwBQF4CQACAQITSW52YWxpZCByZWZlcnJlckZlZQQJZmVlQW1vdW50CQBlAgUMcmF3RmVlQW1vdW50BQtyZWZlcnJlckZlZQQHX2Ftb3VudAkAZQIFCl9yYXdBbW91bnQFDHJhd0ZlZUFtb3VudAQNJHQwNDY3NDY0Njg4NgkBC2dldFBvc2l0aW9uAQUHX3RyYWRlcgQPb2xkUG9zaXRpb25TaXplCAUNJHQwNDY3NDY0Njg4NgJfMQQRb2xkUG9zaXRpb25NYXJnaW4IBQ0kdDA0Njc0NjQ2ODg2Al8yBBdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFDSR0MDQ2NzQ2NDY4ODYCXzMEFG9sZFBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwNDY3NDY0Njg4NgJfNAQMZmVlVG9TdGFrZXJzCQBpAgUJZmVlQW1vdW50AAIEDmZlZVRvSW5zdXJhbmNlCQBlAgUJZmVlQW1vdW50BQxmZWVUb1N0YWtlcnMEBXN0YWtlCQD8BwQJARFxdW90ZUFzc2V0U3Rha2luZwACDmxvY2tOZXV0cmlub1NQCQDMCAIJAKUIAQkBDnN0YWtpbmdBZGRyZXNzAAkAzAgCBQhBTExfRkVFUwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEKcXVvdGVBc3NldAAFB19hbW91bnQFA25pbAMJAAACBQVzdGFrZQUFc3Rha2UEEGRlcG9zaXRJbnN1cmFuY2UJAPwHBAkBEGluc3VyYW5jZUFkZHJlc3MAAgdkZXBvc2l0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQpxdW90ZUFzc2V0AAUOZmVlVG9JbnN1cmFuY2UFA25pbAMJAAACBRBkZXBvc2l0SW5zdXJhbmNlBRBkZXBvc2l0SW5zdXJhbmNlBAlub3RpZnlGZWUJAPwHBAkBDG1pbmVyQWRkcmVzcwACCm5vdGlmeUZlZXMJAMwIAgUHX3RyYWRlcgkAzAgCBQlmZWVBbW91bnQFA25pbAUDbmlsAwkAAAIFCW5vdGlmeUZlZQUJbm90aWZ5RmVlCQDOCAIJAM4IAgkBDnVwZGF0ZVBvc2l0aW9uBQUHX3RyYWRlcgUPb2xkUG9zaXRpb25TaXplCQBkAgURb2xkUG9zaXRpb25NYXJnaW4FB19hbW91bnQFF29sZFBvc2l0aW9uT3Blbk5vdGlvbmFsBRRvbGRQb3NpdGlvbkxzdFVwZENQRgkBC3RyYW5zZmVyRmVlAQUMZmVlVG9TdGFrZXJzCQENdXBkYXRlQmFsYW5jZQEJAGQCCQEIY2JhbGFuY2UABQdfYW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDHJlbW92ZU1hcmdpbgEHX2Ftb3VudAMDAwMJAGcCAAAFB19hbW91bnQGCQEBIQEJARNyZXF1aXJlT3BlblBvc2l0aW9uAQkApQgBCAUBaQZjYWxsZXIGCQEBIQEJAQtpbml0aWFsaXplZAAGCQEGcGF1c2VkAAkAAgECH0ludmFsaWQgcmVtb3ZlTWFyZ2luIHBhcmFtZXRlcnMEDSR0MDQ3OTExNDgwNjMJAQtnZXRQb3NpdGlvbgEJAKUIAQgFAWkGY2FsbGVyBA9vbGRQb3NpdGlvblNpemUIBQ0kdDA0NzkxMTQ4MDYzAl8xBBFvbGRQb3NpdGlvbk1hcmdpbggFDSR0MDQ3OTExNDgwNjMCXzIEF29sZFBvc2l0aW9uT3Blbk5vdGlvbmFsCAUNJHQwNDc5MTE0ODA2MwJfMwQUb2xkUG9zaXRpb25Mc3RVcGRDUEYIBQ0kdDA0NzkxMTQ4MDYzAl80BAttYXJnaW5EZWx0YQkBAS0BBQdfYW1vdW50BA0kdDA0ODEwMDQ4Mjc5CQEiY2FsY1JlbWFpbk1hcmdpbldpdGhGdW5kaW5nUGF5bWVudAQFD29sZFBvc2l0aW9uU2l6ZQURb2xkUG9zaXRpb25NYXJnaW4FFG9sZFBvc2l0aW9uTHN0VXBkQ1BGBQttYXJnaW5EZWx0YQQMcmVtYWluTWFyZ2luCAUNJHQwNDgxMDA0ODI3OQJfMQQHYmFkRGVidAgFDSR0MDQ4MTAwNDgyNzkCXzIDCQECIT0CBQdiYWREZWJ0AAAJAAIBAh1JbnZhbGlkIHJlbW92ZWQgbWFyZ2luIGFtb3VudAQLbWFyZ2luUmF0aW8JAQ9jYWxjTWFyZ2luUmF0aW8DBQxyZW1haW5NYXJnaW4FB2JhZERlYnQFF29sZFBvc2l0aW9uT3Blbk5vdGlvbmFsAwkBASEBCQEWcmVxdWlyZU1vcmVNYXJnaW5SYXRpbwMFC21hcmdpblJhdGlvCQEPaW5pdE1hcmdpblJhdGlvAAYJAAIBCQCsAgIJAKwCAgkArAICAhlUb28gbXVjaCBtYXJnaW4gcmVtb3ZlZDogCQCkAwEFC21hcmdpblJhdGlvAgMgPCAJAKQDAQkBD2luaXRNYXJnaW5SYXRpbwAEB3Vuc3Rha2UJAPwHBAkBEXF1b3RlQXNzZXRTdGFraW5nAAIOdW5sb2NrTmV1dHJpbm8JAMwIAgUHX2Ftb3VudAkAzAgCCQDYBAEJAQpxdW90ZUFzc2V0AAUDbmlsBQNuaWwDCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQkAzggCCQDOCAIJAQ51cGRhdGVQb3NpdGlvbgUJAKUIAQgFAWkGY2FsbGVyBQ9vbGRQb3NpdGlvblNpemUFDHJlbWFpbk1hcmdpbgUXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwJAR9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAQUPb2xkUG9zaXRpb25TaXplCQEId2l0aGRyYXcCCAUBaQZjYWxsZXIFB19hbW91bnQJAQ11cGRhdGVCYWxhbmNlAQkAZQIJAQhjYmFsYW5jZQAFB19hbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENY2xvc2VQb3NpdGlvbgAEBmNhbGxlcgkBD2dldEFjdHVhbENhbGxlcgEFAWkEDWNhbGxlckFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQZjYWxsZXICDkludmFsaWQgY2FsbGVyAwMDCQEBIQEJARNyZXF1aXJlT3BlblBvc2l0aW9uAQUGY2FsbGVyBgkBASEBCQELaW5pdGlhbGl6ZWQABgkBBnBhdXNlZAAJAAIBAiBJbnZhbGlkIGNsb3NlUG9zaXRpb24gcGFyYW1ldGVycwQNJHQwNDk0ODI0OTg1OQkBFWludGVybmFsQ2xvc2VQb3NpdGlvbgIFBmNhbGxlcgYEAngxCAUNJHQwNDk0ODI0OTg1OQJfMQQPcG9zaXRpb25CYWREZWJ0CAUNJHQwNDk0ODI0OTg1OQJfMgQLcmVhbGl6ZWRQbmwIBQ0kdDA0OTQ4MjQ5ODU5Al8zBA1tYXJnaW5Ub1ZhdWx0CAUNJHQwNDk0ODI0OTg1OQJfNAQWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFDSR0MDQ5NDgyNDk4NTkCXzUEFWJhc2VBc3NldFJlc2VydmVBZnRlcggFDSR0MDQ5NDgyNDk4NTkCXzYEFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQ0kdDA0OTQ4MjQ5ODU5Al83BBdjdW11bGF0aXZlTm90aW9uYWxBZnRlcggFDSR0MDQ5NDgyNDk4NTkCXzgEGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIIBQ0kdDA0OTQ4MjQ5ODU5Al85BAJ4MggFDSR0MDQ5NDgyNDk4NTkDXzEwBA50b3RhbExvbmdBZnRlcggFDSR0MDQ5NDgyNDk4NTkDXzExBA90b3RhbFNob3J0QWZ0ZXIIBQ0kdDA0OTQ4MjQ5ODU5A18xMgMJAGYCBQ9wb3NpdGlvbkJhZERlYnQAAAkAAgECJlVuYWJsZSB0byBjbG9zZSBwb3NpdGlvbiB3aXRoIGJhZCBkZWJ0BA53aXRoZHJhd0Ftb3VudAkBA2FicwEFDW1hcmdpblRvVmF1bHQECmFtbUJhbGFuY2UJAGUCCQEIY2JhbGFuY2UABQ53aXRoZHJhd0Ftb3VudAQNJHQwNTAwNjg1MDIxMAMJAGYCAAAFCmFtbUJhbGFuY2UJAJQKAgAACQEDYWJzAQUKYW1tQmFsYW5jZQkAlAoCBQphbW1CYWxhbmNlAAAEDWFtbU5ld0JhbGFuY2UIBQ0kdDA1MDA2ODUwMjEwAl8xBBBnZXRGcm9tSW5zdXJhbmNlCAUNJHQwNTAwNjg1MDIxMAJfMgQBeAMJAGYCBRBnZXRGcm9tSW5zdXJhbmNlAAAEEXdpdGhkcmF3SW5zdXJhbmNlCQD8BwQJARBpbnN1cmFuY2VBZGRyZXNzAAIId2l0aGRyYXcJAMwIAgUQZ2V0RnJvbUluc3VyYW5jZQUDbmlsBQNuaWwDCQAAAgURd2l0aGRyYXdJbnN1cmFuY2UFEXdpdGhkcmF3SW5zdXJhbmNlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAMJAAACBQF4BQF4BAd1bnN0YWtlCQD8BwQJARFxdW90ZUFzc2V0U3Rha2luZwACDnVubG9ja05ldXRyaW5vCQDMCAIJAGUCBQ53aXRoZHJhd0Ftb3VudAUQZ2V0RnJvbUluc3VyYW5jZQkAzAgCCQDYBAEJAQpxdW90ZUFzc2V0AAUDbmlsBQNuaWwDCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQQObm90aWZ5Tm90aW9uYWwJAPwHBAkBDG1pbmVyQWRkcmVzcwACDm5vdGlmeU5vdGlvbmFsCQDMCAIFBmNhbGxlcgkAzAgCAAAFA25pbAUDbmlsAwkAAAIFDm5vdGlmeU5vdGlvbmFsBQ5ub3RpZnlOb3Rpb25hbAkAzggCCQDOCAIJAM4IAgkBDmRlbGV0ZVBvc2l0aW9uAQUGY2FsbGVyCQEJdXBkYXRlQW1tBwUWcXVvdGVBc3NldFJlc2VydmVBZnRlcgUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBRZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyBRdjdW11bGF0aXZlTm90aW9uYWxBZnRlcgUZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcgUOdG90YWxMb25nQWZ0ZXIFD3RvdGFsU2hvcnRBZnRlcgkBCHdpdGhkcmF3AgUNY2FsbGVyQWRkcmVzcwUOd2l0aGRyYXdBbW91bnQJAQ11cGRhdGVCYWxhbmNlAQUNYW1tTmV3QmFsYW5jZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQlsaXF1aWRhdGUBB190cmFkZXIED3Nwb3RNYXJnaW5SYXRpbwkBFmdldE1hcmdpblJhdGlvQnlPcHRpb24CBQdfdHJhZGVyBQ9QTkxfT1BUSU9OX1NQT1QEC21hcmdpblJhdGlvAwkBFmlzT3ZlckZsdWN0dWF0aW9uTGltaXQABBFvcmFjbGVNYXJnaW5SYXRpbwkBFmdldE1hcmdpblJhdGlvQnlPcHRpb24CBQdfdHJhZGVyBRFQTkxfT1BUSU9OX09SQUNMRQkBBHZtYXgCBQ9zcG90TWFyZ2luUmF0aW8FEW9yYWNsZU1hcmdpblJhdGlvBQ9zcG90TWFyZ2luUmF0aW8DAwMDCQEBIQEJARZyZXF1aXJlTW9yZU1hcmdpblJhdGlvAwULbWFyZ2luUmF0aW8JARZtYWludGVuYW5jZU1hcmdpblJhdGlvAAcGCQEBIQEJARNyZXF1aXJlT3BlblBvc2l0aW9uAQUHX3RyYWRlcgYJAQEhAQkBC2luaXRpYWxpemVkAAYJAQZwYXVzZWQACQACAQITVW5hYmxlIHRvIGxpcXVpZGF0ZQMDAwkAZgIFD3Nwb3RNYXJnaW5SYXRpbwkBE2xpcXVpZGF0aW9uRmVlUmF0aW8ACQBmAgkBF3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvAAAABwkAZgIFDERFQ0lNQUxfVU5JVAkBF3BhcnRpYWxMaXF1aWRhdGlvblJhdGlvAAcEDSR0MDUyMjkwNTI0NDAJAQtnZXRQb3NpdGlvbgEFB190cmFkZXIED29sZFBvc2l0aW9uU2l6ZQgFDSR0MDUyMjkwNTI0NDACXzEEEW9sZFBvc2l0aW9uTWFyZ2luCAUNJHQwNTIyOTA1MjQ0MAJfMgQXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwIBQ0kdDA1MjI5MDUyNDQwAl8zBBRvbGRQb3NpdGlvbkxzdFVwZENQRggFDSR0MDUyMjkwNTI0NDACXzQECl9kaXJlY3Rpb24DCQBmAgUPb2xkUG9zaXRpb25TaXplAAAFCURJUl9TSE9SVAUIRElSX0xPTkcEBWlzQWRkCQAAAgUKX2RpcmVjdGlvbgUIRElSX0xPTkcEGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQJARtnZXRQYXJ0aWFsTGlxdWlkYXRpb25BbW91bnQCBQdfdHJhZGVyBQ9vbGRQb3NpdGlvblNpemUEDSR0MDUyNjY1NTI3NjkJASNnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubAIFB190cmFkZXIFD1BOTF9PUFRJT05fU1BPVAQTb2xkUG9zaXRpb25Ob3Rpb25hbAgFDSR0MDUyNjY1NTI3NjkCXzEEDXVucmVhbGl6ZWRQbmwIBQ0kdDA1MjY2NTUyNzY5Al8yBA0kdDA1Mjc3NzUzMDY3CQEJc3dhcElucHV0AgUFaXNBZGQFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQEFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQgFDSR0MDUyNzc3NTMwNjcCXzEEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA1Mjc3NzUzMDY3Al8yBBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA1Mjc3NzUzMDY3Al8zBBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwNTI3Nzc1MzA2NwJfNAQXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIIBQ0kdDA1Mjc3NzUzMDY3Al81BAtyZWFsaXplZFBubAkBBGRpdmQCCQEEbXVsZAIFDXVucmVhbGl6ZWRQbmwJAQNhYnMBBRVleGNoYW5nZWRQb3NpdGlvblNpemUJAQNhYnMBBQ9vbGRQb3NpdGlvblNpemUEDSR0MDUzMTc0NTM0MDcJASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BAUPb2xkUG9zaXRpb25TaXplBRFvbGRQb3NpdGlvbk1hcmdpbgUUb2xkUG9zaXRpb25Mc3RVcGRDUEYFC3JlYWxpemVkUG5sBAxyZW1haW5NYXJnaW4IBQ0kdDA1MzE3NDUzNDA3Al8xBAdiYWREZWJ0CAUNJHQwNTMxNzQ1MzQwNwJfMgQOZnVuZGluZ1BheW1lbnQIBQ0kdDA1MzE3NDUzNDA3Al8zBBJ1bnJlYWxpemVkUG5sQWZ0ZXIJAGUCBQ11bnJlYWxpemVkUG5sBQtyZWFsaXplZFBubAQScmVtYWluT3Blbk5vdGlvbmFsAwkAZgIFD29sZFBvc2l0aW9uU2l6ZQAACQBlAgkAZQIFE29sZFBvc2l0aW9uTm90aW9uYWwFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQFEnVucmVhbGl6ZWRQbmxBZnRlcgkAZQIJAGQCBRJ1bnJlYWxpemVkUG5sQWZ0ZXIFE29sZFBvc2l0aW9uTm90aW9uYWwFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQEEmxpcXVpZGF0aW9uUGVuYWx0eQkBBG11bGQCBRlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50CQETbGlxdWlkYXRpb25GZWVSYXRpbwAED2ZlZVRvTGlxdWlkYXRvcgkAaQIFEmxpcXVpZGF0aW9uUGVuYWx0eQACBA5mZWVUb0luc3VyYW5jZQkAZQIFEmxpcXVpZGF0aW9uUGVuYWx0eQUPZmVlVG9MaXF1aWRhdG9yBBFuZXdQb3NpdGlvbk1hcmdpbgkAZQIFDHJlbWFpbk1hcmdpbgUSbGlxdWlkYXRpb25QZW5hbHR5BA9uZXdQb3NpdGlvblNpemUJAGQCBQ9vbGRQb3NpdGlvblNpemUFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQQXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwJAQNhYnMBBRJyZW1haW5PcGVuTm90aW9uYWwEFG5ld1Bvc2l0aW9uTHN0VXBkQ1BGCQEfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgEFD25ld1Bvc2l0aW9uU2l6ZQQZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcgkAZQIJARRvcGVuSW50ZXJlc3ROb3Rpb25hbAAFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQECmFtbUJhbGFuY2UJAGUCCQEIY2JhbGFuY2UABRJsaXF1aWRhdGlvblBlbmFsdHkEDSR0MDU0NTgwNTQ3MjMDCQBmAgAABQphbW1CYWxhbmNlCQCUCgIAAAkBA2FicwEFCmFtbUJhbGFuY2UJAJQKAgUKYW1tQmFsYW5jZQAABA1uZXdBbW1CYWxhbmNlCAUNJHQwNTQ1ODA1NDcyMwJfMQQRdGFrZUZyb21JbnN1cmFuY2UIBQ0kdDA1NDU4MDU0NzIzAl8yBAF4AwkAZgIFEXRha2VGcm9tSW5zdXJhbmNlAAAEEXdpdGhkcmF3SW5zdXJhbmNlCQD8BwQJARBpbnN1cmFuY2VBZGRyZXNzAAIId2l0aGRyYXcJAMwIAgURdGFrZUZyb21JbnN1cmFuY2UFA25pbAUDbmlsAwkAAAIFEXdpdGhkcmF3SW5zdXJhbmNlBRF3aXRoZHJhd0luc3VyYW5jZQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwDCQAAAgUBeAUBeAQHdW5zdGFrZQkA/AcECQERcXVvdGVBc3NldFN0YWtpbmcAAg51bmxvY2tOZXV0cmlubwkAzAgCCQBlAgUSbGlxdWlkYXRpb25QZW5hbHR5BRF0YWtlRnJvbUluc3VyYW5jZQkAzAgCCQDYBAEJAQpxdW90ZUFzc2V0AAUDbmlsBQNuaWwDCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQQQZGVwb3NpdEluc3VyYW5jZQkA/AcECQEQaW5zdXJhbmNlQWRkcmVzcwACB2RlcG9zaXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQABQ5mZWVUb0luc3VyYW5jZQUDbmlsAwkAAAIFEGRlcG9zaXRJbnN1cmFuY2UFEGRlcG9zaXRJbnN1cmFuY2UEDm5vdGlmeU5vdGlvbmFsCQD8BwQJAQxtaW5lckFkZHJlc3MAAg5ub3RpZnlOb3Rpb25hbAkAzAgCBQdfdHJhZGVyCQDMCAIFF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsBQNuaWwFA25pbAMJAAACBQ5ub3RpZnlOb3Rpb25hbAUObm90aWZ5Tm90aW9uYWwJAM4IAgkAzggCCQDOCAIJAQ51cGRhdGVQb3NpdGlvbgUFB190cmFkZXIFD25ld1Bvc2l0aW9uU2l6ZQURbmV3UG9zaXRpb25NYXJnaW4FF25ld1Bvc2l0aW9uT3Blbk5vdGlvbmFsBRRuZXdQb3NpdGlvbkxzdFVwZENQRgkBCXVwZGF0ZUFtbQcFFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFFWJhc2VBc3NldFJlc2VydmVBZnRlcgUWdG90YWxQb3NpdGlvblNpemVBZnRlcgUXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIFGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIJAGUCCQEVdG90YWxMb25nUG9zaXRpb25TaXplAAMJAGYCBQ9uZXdQb3NpdGlvblNpemUAAAkBA2FicwEFFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQAACQBlAgkBFnRvdGFsU2hvcnRQb3NpdGlvblNpemUAAwkAZgIAAAUPbmV3UG9zaXRpb25TaXplCQEDYWJzAQUVZXhjaGFuZ2VkUG9zaXRpb25TaXplAAAJAQh3aXRoZHJhdwIIBQFpBmNhbGxlcgUPZmVlVG9MaXF1aWRhdG9yCQENdXBkYXRlQmFsYW5jZQEFDW5ld0FtbUJhbGFuY2UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EDSR0MDU2MTc5NTY2MzQJARVpbnRlcm5hbENsb3NlUG9zaXRpb24CBQdfdHJhZGVyBwQCeDEIBQ0kdDA1NjE3OTU2NjM0Al8xBAdiYWREZWJ0CAUNJHQwNTYxNzk1NjYzNAJfMgQCeDIIBQ0kdDA1NjE3OTU2NjM0Al8zBAJ4MwgFDSR0MDU2MTc5NTY2MzQCXzQEFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA1NjE3OTU2NjM0Al81BBViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQ0kdDA1NjE3OTU2NjM0Al82BBZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUNJHQwNTYxNzk1NjYzNAJfNwQXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIIBQ0kdDA1NjE3OTU2NjM0Al84BBlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyCAUNJHQwNTYxNzk1NjYzNAJfOQQZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAgFDSR0MDU2MTc5NTY2MzQDXzEwBA50b3RhbExvbmdBZnRlcggFDSR0MDU2MTc5NTY2MzQDXzExBA90b3RhbFNob3J0QWZ0ZXIIBQ0kdDA1NjE3OTU2NjM0A18xMgQSbGlxdWlkYXRpb25QZW5hbHR5CQEEbXVsZAIFGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQJARNsaXF1aWRhdGlvbkZlZVJhdGlvAAQPZmVlVG9MaXF1aWRhdG9yCQBpAgUSbGlxdWlkYXRpb25QZW5hbHR5AAIEDmZlZVRvSW5zdXJhbmNlCQBlAgUSbGlxdWlkYXRpb25QZW5hbHR5BQ9mZWVUb0xpcXVpZGF0b3IECmFtbUJhbGFuY2UJAGUCCQEIY2JhbGFuY2UABRJsaXF1aWRhdGlvblBlbmFsdHkEDSR0MDU3MDQ2NTcxODkDCQBmAgAABQphbW1CYWxhbmNlCQCUCgIAAAkBA2FicwEFCmFtbUJhbGFuY2UJAJQKAgUKYW1tQmFsYW5jZQAABA1uZXdBbW1CYWxhbmNlCAUNJHQwNTcwNDY1NzE4OQJfMQQRdGFrZUZyb21JbnN1cmFuY2UIBQ0kdDA1NzA0NjU3MTg5Al8yBAF4AwkAZgIFEXRha2VGcm9tSW5zdXJhbmNlAAAEEXdpdGhkcmF3SW5zdXJhbmNlCQD8BwQJARBpbnN1cmFuY2VBZGRyZXNzAAIId2l0aGRyYXcJAMwIAgURdGFrZUZyb21JbnN1cmFuY2UFA25pbAUDbmlsAwkAAAIFEXdpdGhkcmF3SW5zdXJhbmNlBRF3aXRoZHJhd0luc3VyYW5jZQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwDCQAAAgUBeAUBeAQHdW5zdGFrZQkA/AcECQERcXVvdGVBc3NldFN0YWtpbmcAAg51bmxvY2tOZXV0cmlubwkAzAgCCQBlAgUSbGlxdWlkYXRpb25QZW5hbHR5BRF0YWtlRnJvbUluc3VyYW5jZQkAzAgCCQDYBAEJAQpxdW90ZUFzc2V0AAUDbmlsBQNuaWwDCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQQQZGVwb3NpdEluc3VyYW5jZQkA/AcECQEQaW5zdXJhbmNlQWRkcmVzcwACB2RlcG9zaXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQABQ5mZWVUb0luc3VyYW5jZQUDbmlsAwkAAAIFEGRlcG9zaXRJbnN1cmFuY2UFEGRlcG9zaXRJbnN1cmFuY2UEDm5vdGlmeU5vdGlvbmFsCQD8BwQJAQxtaW5lckFkZHJlc3MAAg5ub3RpZnlOb3Rpb25hbAkAzAgCBQdfdHJhZGVyCQDMCAIAAAUDbmlsBQNuaWwDCQAAAgUObm90aWZ5Tm90aW9uYWwFDm5vdGlmeU5vdGlvbmFsCQDOCAIJAM4IAgkAzggCCQEOZGVsZXRlUG9zaXRpb24BBQdfdHJhZGVyCQEJdXBkYXRlQW1tBwUWcXVvdGVBc3NldFJlc2VydmVBZnRlcgUVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBRZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyBRdjdW11bGF0aXZlTm90aW9uYWxBZnRlcgUZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcgUOdG90YWxMb25nQWZ0ZXIFD3RvdGFsU2hvcnRBZnRlcgkBCHdpdGhkcmF3AggFAWkGY2FsbGVyBQ9mZWVUb0xpcXVpZGF0b3IJAQ11cGRhdGVCYWxhbmNlAQUNbmV3QW1tQmFsYW5jZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpwYXlGdW5kaW5nAAQVZnVuZGluZ0Jsb2NrVGltZXN0YW1wCQEZbmV4dEZ1bmRpbmdCbG9ja1RpbWVzdGFtcAADAwMJAGYCBRVmdW5kaW5nQmxvY2tUaW1lc3RhbXAIBQlsYXN0QmxvY2sJdGltZXN0YW1wBgkBASEBCQELaW5pdGlhbGl6ZWQABgkBBnBhdXNlZAAJAAIBCQCsAgIJAKwCAgkArAICAiFJbnZhbGlkIGZ1bmRpbmcgYmxvY2sgdGltZXN0YW1wOiAJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXACAyA8IAkApAMBBRVmdW5kaW5nQmxvY2tUaW1lc3RhbXAED3VuZGVybHlpbmdQcmljZQkBEmdldE9yYWNsZVR3YXBQcmljZQAEDSR0MDU4Njg0NTg3NDYJAQpnZXRGdW5kaW5nAAQUc2hvcnRQcmVtaXVtRnJhY3Rpb24IBQ0kdDA1ODY4NDU4NzQ2Al8xBBNsb25nUHJlbWl1bUZyYWN0aW9uCAUNJHQwNTg2ODQ1ODc0NgJfMgkBDXVwZGF0ZUZ1bmRpbmcFCQBkAgUVZnVuZGluZ0Jsb2NrVGltZXN0YW1wCQEUZnVuZGluZ1BlcmlvZFNlY29uZHMACQBkAgkBI2xhdGVzdExvbmdDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAAUTbG9uZ1ByZW1pdW1GcmFjdGlvbgkAZAIJASRsYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24ABRRzaG9ydFByZW1pdW1GcmFjdGlvbgkBBGRpdmQCBRNsb25nUHJlbWl1bUZyYWN0aW9uBQ91bmRlcmx5aW5nUHJpY2UJAQRkaXZkAgUUc2hvcnRQcmVtaXVtRnJhY3Rpb24FD3VuZGVybHlpbmdQcmljZQFpAQ5mb3JjZU1vdmVBc3NldAIHX3RyYWRlcgdfYW1vdW50AwMJAQIhPQIJAKcIAQkBDmFkbWluUHVibGljS2V5AAgFAWkGY2FsbGVyBgkAZgIAAAUHX2Ftb3VudAkAAgECIUludmFsaWQgZm9yY2VNb3ZlQXNzZXQgcGFyYW1ldGVycwQHdW5zdGFrZQkA/AcECQERcXVvdGVBc3NldFN0YWtpbmcAAg51bmxvY2tOZXV0cmlubwkAzAgCBQdfYW1vdW50CQDMCAIJANgEAQkBCnF1b3RlQXNzZXQABQNuaWwFA25pbAMJAAACBQd1bnN0YWtlBQd1bnN0YWtlCQDOCAIJAQh3aXRoZHJhdwIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB190cmFkZXIFB19hbW91bnQJAQ11cGRhdGVCYWxhbmNlAQkAZQIJAQhjYmFsYW5jZQAFB19hbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJYWRqdXN0UGVnAQZfcHJpY2UDAwkBAiE9AgkApwgBCQEOYWRtaW5QdWJsaWNLZXkACAUBaQZjYWxsZXIGCQBmAgAABQZfcHJpY2UJAAIBAhxJbnZhbGlkIGFkanVzdFBlZyBwYXJhbWV0ZXJzBA0kdDA1OTc0NjU5ODMyCQEQZ2V0UGVnQWRqdXN0Q29zdAEFBl9wcmljZQQUbmV3UXVvdGVBc3NldFJlc2VydmUIBQ0kdDA1OTc0NjU5ODMyAl8xBA1wZWdDaGFuZ2VDb3N0CAUNJHQwNTk3NDY1OTgzMgJfMgMJAAACBQ1wZWdDaGFuZ2VDb3N0AAAJAAIBAhFOb3RoaW5nIHRvIGFkanVzdAMJAGYCBQ1wZWdDaGFuZ2VDb3N0AAAEEXdpdGhkcmF3SW5zdXJhbmNlCQD8BwQJARBpbnN1cmFuY2VBZGRyZXNzAAIId2l0aGRyYXcJAMwIAgUNcGVnQ2hhbmdlQ29zdAUDbmlsBQNuaWwDCQAAAgURd2l0aGRyYXdJbnN1cmFuY2UFEXdpdGhkcmF3SW5zdXJhbmNlBAVzdGFrZQkA/AcECQERcXVvdGVBc3NldFN0YWtpbmcAAg5sb2NrTmV1dHJpbm9TUAkAzAgCCQClCAEJAQ5zdGFraW5nQWRkcmVzcwAJAMwIAgUIQUxMX0ZFRVMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQABQ1wZWdDaGFuZ2VDb3N0BQNuaWwDCQAAAgUFc3Rha2UFBXN0YWtlCQDOCAIJAQ11cGRhdGVCYWxhbmNlAQkAZAIJAQhjYmFsYW5jZQAFDXBlZ0NoYW5nZUNvc3QJARF1cGRhdGVBbW1SZXNlcnZlcwIFFG5ld1F1b3RlQXNzZXRSZXNlcnZlCQEGYnNBc3RSAAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQHdW5zdGFrZQkA/AcECQERcXVvdGVBc3NldFN0YWtpbmcAAg51bmxvY2tOZXV0cmlubwkAzAgCCQEDYWJzAQUNcGVnQ2hhbmdlQ29zdAkAzAgCCQDYBAEJAQpxdW90ZUFzc2V0AAUDbmlsBQNuaWwDCQAAAgUHdW5zdGFrZQUHdW5zdGFrZQQQZGVwb3NpdEluc3VyYW5jZQkA/AcECQEQaW5zdXJhbmNlQWRkcmVzcwACB2RlcG9zaXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBCnF1b3RlQXNzZXQACQEDYWJzAQUNcGVnQ2hhbmdlQ29zdAUDbmlsAwkAAAIFEGRlcG9zaXRJbnN1cmFuY2UFEGRlcG9zaXRJbnN1cmFuY2UJAM4IAgkBDXVwZGF0ZUJhbGFuY2UBCQBlAgkBCGNiYWxhbmNlAAkBA2FicwEFDXBlZ0NoYW5nZUNvc3QJARF1cGRhdGVBbW1SZXNlcnZlcwIFFG5ld1F1b3RlQXNzZXRSZXNlcnZlCQEGYnNBc3RSAAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQV2X2dldAEHX3RyYWRlcgQNJHQwNjEwNTc2MTExNwkBFWludGVybmFsQ2xvc2VQb3NpdGlvbgIFB190cmFkZXIHBAJ4MQgFDSR0MDYxMDU3NjExMTcCXzEEAngyCAUNJHQwNjEwNTc2MTExNwJfMgQCeDMIBQ0kdDA2MTA1NzYxMTE3Al8zBAJ4NAgFDSR0MDYxMDU3NjExMTcCXzQJAAIBCQCsAgIJAKwCAgkArAICCQEBcwEFAngyCQEBcwEFAngzCQEBcwEFAng0CQEBcwEJAQ5nZXRNYXJnaW5SYXRpbwEFB190cmFkZXIBaQEndmlld19jYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50AQdfdHJhZGVyBA0kdDA2MTI2NDYxMzc1CQELZ2V0UG9zaXRpb24BBQdfdHJhZGVyBAxwb3NpdGlvblNpemUIBQ0kdDA2MTI2NDYxMzc1Al8xBA5wb3NpdGlvbk1hcmdpbggFDSR0MDYxMjY0NjEzNzUCXzIEA3BvbggFDSR0MDYxMjY0NjEzNzUCXzMEEXBvc2l0aW9uTHN0VXBkQ1BGCAUNJHQwNjEyNjQ2MTM3NQJfNAQNJHQwNjEzODA2MTQ4MQkBI2dldFBvc2l0aW9uTm90aW9uYWxBbmRVbnJlYWxpemVkUG5sAgUHX3RyYWRlcgUPUE5MX09QVElPTl9TUE9UBBBwb3NpdGlvbk5vdGlvbmFsCAUNJHQwNjEzODA2MTQ4MQJfMQQNdW5yZWFsaXplZFBubAgFDSR0MDYxMzgwNjE0ODECXzIEDSR0MDYxNDg2NjE2NjgJASJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50BAUMcG9zaXRpb25TaXplBQ5wb3NpdGlvbk1hcmdpbgURcG9zaXRpb25Mc3RVcGRDUEYFDXVucmVhbGl6ZWRQbmwEDHJlbWFpbk1hcmdpbggFDSR0MDYxNDg2NjE2NjgCXzEEB2JhZERlYnQIBQ0kdDA2MTQ4NjYxNjY4Al8yBA5mdW5kaW5nUGF5bWVudAgFDSR0MDYxNDg2NjE2NjgCXzMJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkBAXMBBQxyZW1haW5NYXJnaW4JAQFzAQUOZnVuZGluZ1BheW1lbnQJAQFzAQkBDmdldE1hcmdpblJhdGlvAQUHX3RyYWRlcgkBAXMBBQ11bnJlYWxpemVkUG5sCQEBcwEFB2JhZERlYnQJAQFzAQUQcG9zaXRpb25Ob3Rpb25hbAFpARV2aWV3X2dldFBlZ0FkanVzdENvc3QBBl9wcmljZQQEY29zdAkBEGdldFBlZ0FkanVzdENvc3QBBQZfcHJpY2UJAAIBCQCkAwEIBQRjb3N0Al8yAWkBD3ZpZXdfZ2V0RnVuZGluZwAED3VuZGVybHlpbmdQcmljZQkBEmdldE9yYWNsZVR3YXBQcmljZQAEDSR0MDYyMDU5NjIxMjEJAQpnZXRGdW5kaW5nAAQUc2hvcnRQcmVtaXVtRnJhY3Rpb24IBQ0kdDA2MjA1OTYyMTIxAl8xBBNsb25nUHJlbWl1bUZyYWN0aW9uCAUNJHQwNjIwNTk2MjEyMQJfMgQLbG9uZ0Z1bmRpbmcJAQRkaXZkAgUTbG9uZ1ByZW1pdW1GcmFjdGlvbgUPdW5kZXJseWluZ1ByaWNlBAxzaG9ydEZ1bmRpbmcJAQRkaXZkAgUUc2hvcnRQcmVtaXVtRnJhY3Rpb24FD3VuZGVybHlpbmdQcmljZQkAAgEJAKwCAgkArAICCQCsAgIJAQFzAQULbG9uZ0Z1bmRpbmcJAQFzAQUMc2hvcnRGdW5kaW5nCQEBcwEJARBnZXRUd2FwU3BvdFByaWNlAAkBAXMBCQESZ2V0T3JhY2xlVHdhcFByaWNlAAECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAJAQ5hZG1pblB1YmxpY0tleQAImkqf", "height": 2238949, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6gwaVRf4YkNJrmKFS7YwAkaGwBi8XQhXuhkmBXgrw8ow Next: 6sKjZMiCSPrqwHfyFwZJw53uZdMLNC77o9NPxnmqAmWb Diff:
OldNewDifferences
14011401 let ei = gK._2
14021402 let gL = ar(ei, ee)
14031403 let gM = ar(eh, ee)
1404- throw((ap(gL) + ap(gM)))
1404+ throw((((ap(gL) + ap(gM)) + ap(dG())) + ap(cz())))
14051405 }
14061406
14071407
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_positionClosedDate"
2121
2222 let j = "k_initialized"
2323
2424 let k = "k_paused"
2525
2626 let l = "k_fee"
2727
2828 let m = "k_fundingPeriod"
2929
3030 let n = "k_initMarginRatio"
3131
3232 let o = "k_mmr"
3333
3434 let p = "k_liquidationFeeRatio"
3535
3636 let q = "k_partLiquidationRatio"
3737
3838 let r = "k_spreadLimit"
3939
4040 let s = "k_maxPriceImpact"
4141
4242 let t = "k_maxPriceSpread"
4343
4444 let u = "k_lastDataStr"
4545
4646 let v = "k_lastMinuteId"
4747
4848 let w = "k_twapDataLastCumulativePrice"
4949
5050 let x = "k_twapDataLastPrice"
5151
5252 let y = "k_twapDataPreviousMinuteId"
5353
5454 let z = "k_latestLongPremiumFraction"
5555
5656 let A = "k_latestShortPremiumFraction"
5757
5858 let B = "k_nextFundingBlockMinTimestamp"
5959
6060 let C = "k_longFundingRate"
6161
6262 let D = "k_shortFundingRate"
6363
6464 let E = "k_qtAstR"
6565
6666 let F = "k_bsAstR"
6767
6868 let G = "k_totalPositionSize"
6969
7070 let H = "k_totalLongPositionSize"
7171
7272 let I = "k_totalShortPositionSize"
7373
7474 let J = "k_cumulativeNotional"
7575
7676 let K = "k_openInterestNotional"
7777
7878 let L = "k_coordinatorAddress"
7979
8080 let M = "k_insurance_address"
8181
8282 let N = "k_admin_address"
8383
8484 let O = "k_admin_public_key"
8585
8686 let P = "k_quote_asset"
8787
8888 let Q = "k_quote_staking"
8989
9090 let R = "k_staking_address"
9191
9292 let S = "k_miner_address"
9393
9494 let T = "k_orders_address"
9595
9696 let U = "k_referral_address"
9797
9898 func V () = valueOrErrorMessage(addressFromString(getStringValue(this, L)), "Coordinator not set")
9999
100100
101101 func W () = addressFromString(getStringValue(V(), N))
102102
103103
104104 func X () = fromBase58String(getStringValue(V(), O))
105105
106106
107107 func Y () = fromBase58String(getStringValue(V(), P))
108108
109109
110110 func Z () = valueOrErrorMessage(addressFromString(getStringValue(V(), Q)), "Quote asset staking not set")
111111
112112
113113 func aa () = valueOrErrorMessage(addressFromString(getStringValue(V(), R)), "Staking not set")
114114
115115
116116 func ab () = valueOrErrorMessage(addressFromString(getStringValue(V(), M)), "Insurance not set")
117117
118118
119119 func ac () = valueOrErrorMessage(addressFromString(getStringValue(V(), S)), "Miner not set")
120120
121121
122122 func ad () = valueOrErrorMessage(addressFromString(getStringValue(V(), T)), "Orders not set")
123123
124124
125125 func ae () = valueOrErrorMessage(addressFromString(getStringValue(V(), U)), "Referral not set")
126126
127127
128128 let af = 1
129129
130130 let ag = 2
131131
132132 let ah = 15
133133
134134 let ai = 15
135135
136136 let aj = 1000
137137
138138 let ak = (1 * (((((10 * 10) * 10) * 10) * 10) * 10))
139139
140140 let al = (86400 * ak)
141141
142142 let am = 100
143143
144144 let an = 1
145145
146146 let ao = 2
147147
148148 func ap (aq) = (toString(aq) + ",")
149149
150150
151151 func ar (aq,as) = fraction(aq, ak, as, HALFEVEN)
152152
153153
154154 func at (aq,as) = fraction(aq, as, ak, HALFEVEN)
155155
156156
157157 func au (aq) = if ((aq > 0))
158158 then aq
159159 else -(aq)
160160
161161
162162 func av (aq,as) = if ((aq >= as))
163163 then aq
164164 else as
165165
166166
167167 func aw (ax,ay) = ((ax + "_") + ay)
168168
169169
170170 func az (aA) = {
171171 func aB (aC,aD) = ((aC + aD) + ",")
172172
173173 let aE = {
174174 let aF = aA
175175 let aG = size(aF)
176176 let aH = ""
177177 func aI (aJ,aK) = if ((aK >= aG))
178178 then aJ
179179 else aB(aJ, aF[aK])
180180
181181 func aL (aJ,aK) = if ((aK >= aG))
182182 then aJ
183183 else throw("List size exceeds 20")
184184
185185 aL(aI(aI(aI(aI(aI(aI(aI(aI(aI(aI(aI(aI(aI(aI(aI(aI(aI(aI(aI(aI(aH, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
186186 }
187187 let aM = dropRight(aE, 1)
188188 let aN = if ((take(aM, 1) == ","))
189189 then drop(aM, 1)
190190 else aM
191191 aN
192192 }
193193
194194
195195 func aO (aP) = split(aP, ",")
196196
197197
198198 func aQ (aA,aR,aS) = if ((size(aA) > aR))
199199 then (removeByIndex(aA, 0) :+ aS)
200200 else (aA :+ aS)
201201
202202
203203 func aT (aU) = valueOrErrorMessage(getInteger(this, aU), ("no value for " + aU))
204204
205205
206206 func aV () = aT(d)
207207
208208
209209 func aW () = aT(l)
210210
211211
212212 func aX () = aT(n)
213213
214214
215215 func aY () = aT(E)
216216
217217
218218 func aZ () = aT(F)
219219
220220
221221 func ba () = aT(G)
222222
223223
224224 func bb () = aT(J)
225225
226226
227227 func bc () = aT(K)
228228
229229
230230 func bd () = aT(B)
231231
232232
233233 func be () = aT(m)
234234
235235
236236 func bf () = (be() * ak)
237237
238238
239239 func bg () = (be() * aj)
240240
241241
242242 func bh () = aT(o)
243243
244244
245245 func bi () = aT(p)
246246
247247
248248 func bj () = aT(q)
249249
250250
251251 func bk () = aT(r)
252252
253253
254254 func bl () = aT(s)
255255
256256
257257 func bm () = aT(t)
258258
259259
260260 func bn () = aT(z)
261261
262262
263263 func bo () = aT(A)
264264
265265
266266 func bp () = aT(I)
267267
268268
269269 func bq () = aT(H)
270270
271271
272272 func br (bs) = valueOrElse(getString(ad(), "k_sender"), toString(bs.caller))
273273
274274
275275 func bt (bu,bv,bw) = {
276276 let bx = (bu - bv)
277277 if (if (bw)
278278 then (0 > bx)
279279 else false)
280280 then throw("Invalid margin")
281281 else if (if (!(bw))
282282 then (bx >= 0)
283283 else false)
284284 then throw("Invalid margin")
285285 else true
286286 }
287287
288288
289289 func by (bz) = if ((bz == 0))
290290 then throw("Should not be called with _positionSize == 0")
291291 else if ((bz > 0))
292292 then bn()
293293 else bo()
294294
295295
296296 func bA (bB) = {
297297 let bC = getInteger(this, aw(e, bB))
298298 let bD = bC
299299 if ($isInstanceOf(bD, "Int"))
300300 then {
301301 let bE = bD
302302 $Tuple4(bE, getIntegerValue(this, aw(f, bB)), getIntegerValue(this, aw(g, bB)), getIntegerValue(this, aw(h, bB)))
303303 }
304304 else $Tuple4(0, 0, 0, 0)
305305 }
306306
307307
308308 func bF (bB) = if ((bA(bB)._1 == 0))
309309 then throw("No open position")
310310 else true
311311
312312
313313 func bG () = valueOrElse(getBoolean(this, j), false)
314314
315315
316316 func bH () = valueOrElse(getBoolean(this, k), false)
317317
318318
319319 func bI (bJ,bK,bL) = if (bJ)
320320 then {
321321 let bM = (aZ() - bL)
322322 if ((0 >= bM))
323323 then throw("Tx lead to base asset reserve <= 0, revert")
324324 else $Tuple4((aY() + bK), bM, (ba() + bL), (bb() + bK))
325325 }
326326 else {
327327 let bN = (aY() - bK)
328328 if ((0 >= bN))
329329 then throw("Tx lead to base quote reserve <= 0, revert")
330330 else $Tuple4(bN, (aZ() + bL), (ba() - bL), (bb() - bK))
331331 }
332332
333333
334334 func bO (bJ,bK) = {
335335 let bP = aY()
336336 let bQ = aZ()
337337 let aU = at(bP, bQ)
338338 let bR = if (bJ)
339339 then (bP + bK)
340340 else (bP - bK)
341341 let bS = ar(aU, bR)
342342 let bT = au((bS - bQ))
343343 let bU = if (bJ)
344344 then bT
345345 else -(bT)
346346 let bV = bI(bJ, bK, bT)
347347 let bW = bV._1
348348 let bX = bV._2
349349 let bY = bV._3
350350 let bZ = bV._4
351351 let ca = ar(bP, bQ)
352352 let cb = ar(bK, bT)
353353 let cc = au((ca - cb))
354354 let cd = (ak - ar(ca, (ca + cc)))
355355 let ce = bl()
356356 if ((cd > ce))
357357 then throw(((((((((((((("Price impact " + toString(cd)) + " > max price impact ") + toString(ce)) + " before quote asset: ") + toString(bP)) + " before base asset: ") + toString(bQ)) + " quote asset amount to exchange: ") + toString(bK)) + " price before: ") + toString(ca)) + " marketPrice: ") + toString(cb)))
358358 else $Tuple5(bU, bW, bX, bY, bZ)
359359 }
360360
361361
362362 func cf (cg,ch,ci,cj) = {
363363 let ck = if ((cg != 0))
364364 then {
365365 let cl = by(cg)
366366 at((cl - ci), cg)
367367 }
368368 else 0
369369 let cm = ((cj - ck) + ch)
370370 let cn = if ((0 > cm))
371371 then $Tuple2(0, au(cm))
372372 else $Tuple2(au(cm), 0)
373373 let co = cn._1
374374 let cp = cn._2
375375 $Tuple3(co, cp, ck)
376376 }
377377
378378
379379 func cq (bJ,bL,cr,cs,ct) = {
380380 let ca = ar(cs, ct)
381381 if ((bL == 0))
382382 then throw("Invalid base asset amount")
383383 else {
384384 let aU = at(cs, ct)
385385 let cu = if (bJ)
386386 then (ct + bL)
387387 else (ct - bL)
388388 let cv = ar(aU, cu)
389389 let cw = au((cv - cs))
390390 let ce = bl()
391391 let cx = bI(!(bJ), cw, bL)
392392 let bW = cx._1
393393 let bX = cx._2
394394 let bY = cx._3
395395 let bZ = cx._4
396396 let cb = ar(cw, bL)
397397 let cc = au((ca - cb))
398398 let cd = (ak - ar(ca, (ca + cc)))
399399 if (if ((cd > ce))
400400 then cr
401401 else false)
402402 then throw(((((((((((((("Price impact " + toString(cd)) + " > max price impact ") + toString(ce)) + " before quote asset: ") + toString(cs)) + " before base asset: ") + toString(ct)) + " base asset amount to exchange: ") + toString(bL)) + " price before: ") + toString(ca)) + " market price: ") + toString(cb)))
403403 else $Tuple8(cw, bW, bX, bY, bZ, (bq() - (if (bJ)
404404 then au(bL)
405405 else 0)), (bp() - (if (!(bJ))
406406 then au(bL)
407407 else 0)), cd)
408408 }
409409 }
410410
411411
412412 func cy (bJ,bL,cr) = cq(bJ, bL, cr, aY(), aZ())
413413
414414
415415 func cz () = {
416416 let cA = valueOrErrorMessage(addressFromString(getStringValue(this, c)), "")
417417 let cB = getStringValue(this, a)
418418 let cC = getStringValue(this, b)
419419 let cD = valueOrErrorMessage(getInteger(cA, cB), ((("Can not get oracle price. Oracle: " + toString(cA)) + " key: ") + cB))
420420 cD
421421 }
422422
423423
424424 func cE (cs,ct) = {
425425 let cF = cz()
426426 let cG = ar(cs, ct)
427427 let cH = ar((cF + cG), (2 * ak))
428428 let cI = ar(au((cF - cG)), cH)
429429 if ((cI > bm()))
430430 then throw(((("Price spread " + toString(cI)) + " > max price spread ") + toString(bm())))
431431 else true
432432 }
433433
434434
435435 func cJ () = {
436436 let cs = aY()
437437 let ct = aZ()
438438 ar(cs, ct)
439439 }
440440
441441
442442 func cK () = {
443443 let cF = cz()
444444 let cL = cJ()
445445 (ar(au((cF - cL)), cF) > bk())
446446 }
447447
448448
449449 func cM (bz,cN,cs,ct) = {
450450 let cO = au(bz)
451451 let cP = (0 > bz)
452452 let cQ = if ((cN == an))
453453 then {
454454 let cR = cq(!(cP), cO, false, cs, ct)
455455 let cS = cR._1
456456 let cT = cR._2
457457 let cU = cR._3
458458 let cV = cR._4
459459 cS
460460 }
461461 else at(cO, cz())
462462 cQ
463463 }
464464
465465
466466 func cW (bz,cX,cs,ct,cN) = if ((bz == 0))
467467 then throw("Invalid position size")
468468 else {
469469 let cP = (0 > bz)
470470 let cQ = cM(bz, cN, cs, ct)
471471 let cY = if (cP)
472472 then (cX - cQ)
473473 else (cQ - cX)
474474 $Tuple2(cQ, cY)
475475 }
476476
477477
478478 func cZ (bB,cN) = {
479479 let da = bA(bB)
480480 let bE = da._1
481481 let db = da._2
482482 let dc = da._3
483483 let dd = da._4
484484 cW(bE, dc, aY(), aZ(), cN)
485485 }
486486
487487
488488 func de (df,dg,dh) = ar((df - dg), dh)
489489
490490
491491 func di (bB,cN) = {
492492 let dj = bA(bB)
493493 let bE = dj._1
494494 let db = dj._2
495495 let dk = dj._3
496496 let dd = dj._4
497497 let dl = cZ(bB, cN)
498498 let cQ = dl._1
499499 let cY = dl._2
500500 let dm = cf(bE, db, dd, cY)
501501 let co = dm._1
502502 let cp = dm._2
503503 de(co, cp, cQ)
504504 }
505505
506506
507507 func dn (bB) = di(bB, an)
508508
509509
510510 func do (bB,bz) = {
511511 let dp = av(bj(), (ak - ar(dn(bB), bh())))
512512 let dq = at(au(bz), dp)
513513 let dr = cy((bz > 0), dq, false)
514514 let ds = dr._1
515515 let cd = dr._8
516516 if ((bl() > cd))
517517 then ds
518518 else {
519519 let dt = at(au(bz), bj())
520520 let du = cy((bz > 0), dt, false)._1
521521 du
522522 }
523523 }
524524
525525
526526 func dv (bB,cr) = {
527527 let dw = bA(bB)
528528 let bE = dw._1
529529 let db = dw._2
530530 let dc = dw._3
531531 let dd = dw._4
532532 let cY = cZ(bB, an)._2
533533 let dx = cf(bE, db, dd, cY)
534534 let co = dx._1
535535 let cp = dx._2
536536 let dt = -(bE)
537537 let dy = cY
538538 let dz = -(co)
539539 let dA = cy((bE > 0), au(bE), cr)
540540 let du = dA._1
541541 let bR = dA._2
542542 let bS = dA._3
543543 let dB = dA._4
544544 let dC = dA._5
545545 let dD = dA._6
546546 let dE = dA._7
547547 let dF = (bc() - dc)
548548 $Tuple12(dt, cp, dy, dz, bR, bS, dB, dC, dF, du, dD, dE)
549549 }
550550
551551
552552 func dG () = {
553553 let dH = ((lastBlock.timestamp / 1000) / 60)
554554 let dI = (dH - ah)
555555 let dJ = valueOrElse(getString(this, u), "")
556556 let dK = split(dJ, ",")
557557 func dL (aC,dM) = if ((dI >= parseIntValue(dM)))
558558 then (aC :+ parseIntValue(dM))
559559 else aC
560560
561561 let dN = {
562562 let aF = dK
563563 let aG = size(aF)
564564 let aH = nil
565565 func aI (aJ,aK) = if ((aK >= aG))
566566 then aJ
567567 else dL(aJ, aF[aK])
568568
569569 func aL (aJ,aK) = if ((aK >= aG))
570570 then aJ
571571 else throw("List size exceeds 20")
572572
573573 aL(aI(aI(aI(aI(aI(aI(aI(aI(aI(aI(aI(aI(aI(aI(aI(aI(aI(aI(aI(aI(aH, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
574574 }
575575 let dO = if ((size(dN) > 0))
576576 then max(dN)
577577 else parseIntValue(dK[0])
578578 let dP = valueOrElse(getInteger(this, v), 0)
579579 let dQ = valueOrElse(getInteger(this, ((w + "_") + toString(dP))), 0)
580580 let dR = valueOrElse(getInteger(this, ((x + "_") + toString(dP))), 0)
581581 let dS = (dQ + ((dH - dP) * dR))
582582 let dT = valueOrElse(getInteger(this, ((w + "_") + toString(dO))), 0)
583583 let dU = valueOrElse(getInteger(this, ((x + "_") + toString(dO))), 0)
584584 let dV = (dT + ((dI - dO) * dU))
585585 ((dS - dV) / ah)
586586 }
587587
588588
589589 func dW (dX) = {
590590 let bz = ba()
591591 let dY = (bz > 0)
592592 let dZ = cy(dY, au(bz), false)._1
593593 let ea = aZ()
594594 let eb = at(ea, dX)
595595 let ec = cW(bz, dZ, eb, ea, an)._2
596596 $Tuple2(eb, ec)
597597 }
598598
599599
600600 func ed () = {
601601 let ee = cz()
602602 let ef = dG()
603603 let eg = (ef - ee)
604604 if (if ((bp() == 0))
605605 then true
606606 else (bq() == 0))
607607 then $Tuple2(0, 0)
608608 else if ((0 > eg))
609609 then {
610610 let eh = ar(at(eg, bf()), al)
611611 let ei = ar(at(eh, bp()), bq())
612612 $Tuple2(eh, ei)
613613 }
614614 else {
615615 let ei = ar(at(eg, bf()), al)
616616 let eh = ar(at(ei, bq()), bp())
617617 $Tuple2(eh, ei)
618618 }
619619 }
620620
621621
622622 func ej (ek,el,em,en,eo,ep,eq,er,es) = [IntegerEntry(n, ek), IntegerEntry(o, el), IntegerEntry(p, em), IntegerEntry(m, en), IntegerEntry(l, eo), IntegerEntry(r, ep), IntegerEntry(s, eq), IntegerEntry(q, er), IntegerEntry(t, es)]
623623
624624
625625 func et (eu,ev,ew,ex,ey) = [IntegerEntry(B, eu), IntegerEntry(z, ev), IntegerEntry(A, ew), IntegerEntry(C, ex), IntegerEntry(D, ey)]
626626
627627
628628 func ez (ay,eA,eB,eC,cl) = [IntegerEntry(aw(e, ay), eA), IntegerEntry(aw(f, ay), eB), IntegerEntry(aw(g, ay), eC), IntegerEntry(aw(h, ay), cl)]
629629
630630
631631 func eD (eE) = {
632632 let dH = ((lastBlock.timestamp / 1000) / 60)
633633 let eF = valueOrElse(getInteger(this, v), 0)
634634 if ((eF > dH))
635635 then throw("TWAP out-of-order")
636636 else {
637637 let dP = if ((eF == 0))
638638 then dH
639639 else eF
640640 if ((dH > eF))
641641 then {
642642 let eG = valueOrElse(getInteger(this, ((w + "_") + toString(eF))), 0)
643643 let eH = valueOrElse(getInteger(this, ((x + "_") + toString(eF))), eE)
644644 let eI = (eG + ((dH - dP) * eH))
645645 let dK = aQ(aO(valueOrElse(getString(this, u), "")), ah, toString(dH))
646646 [IntegerEntry(aw(w, toString(dH)), eI), IntegerEntry(aw(x, toString(dH)), eE), IntegerEntry(aw(y, toString(dH)), eF), IntegerEntry(v, dH), StringEntry(u, az(dK))]
647647 }
648648 else {
649649 let eJ = valueOrElse(getInteger(this, aw(y, toString(dH))), 0)
650650 let eG = valueOrElse(getInteger(this, aw(w, toString(eJ))), 0)
651651 let eH = valueOrElse(getInteger(this, aw(x, toString(eJ))), eE)
652652 let eI = (eG + ((dH - eJ) * eH))
653653 [IntegerEntry(aw(w, toString(dH)), eI), IntegerEntry(aw(x, toString(dH)), eE)]
654654 }
655655 }
656656 }
657657
658658
659659 func eK (bP,bQ) = [IntegerEntry(E, bP), IntegerEntry(F, bQ)]
660660
661661
662662 func eL (bP,bQ,eM,eN,eO,eP,eQ) = if (((eP - eQ) != eM))
663663 then throw(((((("Invalid AMM state data: " + toString(eP)) + " + ") + toString(eQ)) + " != ") + toString(eM)))
664664 else ((eK(bP, bQ) ++ [IntegerEntry(G, eM), IntegerEntry(J, eN), IntegerEntry(K, eO), IntegerEntry(H, eP), IntegerEntry(I, eQ)]) ++ eD(ar(bP, bQ)))
665665
666666
667667 func eR (ay) = [DeleteEntry(aw(e, ay)), DeleteEntry(aw(f, ay)), DeleteEntry(aw(g, ay)), DeleteEntry(aw(h, ay)), IntegerEntry(aw(i, ay), lastBlock.timestamp)]
668668
669669
670670 func eS (ay,eT) = {
671671 let eU = assetBalance(this, Y())
672672 if ((eT > eU))
673673 then throw(((("Unable to withdraw " + toString(eT)) + " from contract balance ") + toString(eU)))
674674 else [ScriptTransfer(ay, eT, Y())]
675675 }
676676
677677
678678 func eV (bs) = if ((0 > bs))
679679 then throw("Balance")
680680 else [IntegerEntry(d, bs)]
681681
682682
683683 func eW (bs) = [ScriptTransfer(aa(), bs, Y())]
684684
685685
686686 @Callable(bs)
687687 func pause () = if ((bs.caller != W()))
688688 then throw("Invalid togglePause params")
689689 else [BooleanEntry(k, true)]
690690
691691
692692
693693 @Callable(bs)
694694 func unpause () = if ((bs.caller != W()))
695695 then throw("Invalid togglePause params")
696696 else [BooleanEntry(k, false)]
697697
698698
699699
700700 @Callable(bs)
701701 func addLiquidity (bK) = if (if ((bs.caller != W()))
702702 then true
703703 else (0 >= bK))
704704 then throw("Invalid addLiquidity params")
705705 else {
706706 let bP = aY()
707707 let bQ = aZ()
708708 let eE = ar(bP, bQ)
709709 let eX = ar(bK, eE)
710710 let eY = (bP + bK)
711711 let eZ = (bQ + eX)
712712 eK(eY, eZ)
713713 }
714714
715715
716716
717717 @Callable(bs)
718718 func removeLiquidity (bK) = if (if ((bs.caller != W()))
719719 then true
720720 else (0 >= bK))
721721 then throw("Invalid removeLiquidity params")
722722 else {
723723 let bP = aY()
724724 let bQ = aZ()
725725 let eE = ar(bP, bQ)
726726 let fa = ar(bK, eE)
727727 let eY = (bP - bK)
728728 let eZ = (bQ - fa)
729729 eK(eY, eZ)
730730 }
731731
732732
733733
734734 @Callable(bs)
735735 func changeSettings (ek,el,em,en,eo,ep,eq,er,es) = if ((bs.caller != W()))
736736 then throw("Invalid changeSettings params")
737737 else ej(ek, el, em, en, eo, ep, eq, er, es)
738738
739739
740740
741741 @Callable(bs)
742742 func initialize (bP,bQ,en,ek,el,em,eo,fb,fc,fd,ep,eq,er,es) = if (if (if (if (if (if (if (if (if (if (if (if ((0 >= bP))
743743 then true
744744 else (0 >= bQ))
745745 then true
746746 else (0 >= en))
747747 then true
748748 else (0 >= ek))
749749 then true
750750 else (0 >= el))
751751 then true
752752 else (0 >= em))
753753 then true
754754 else (0 >= eo))
755755 then true
756756 else (0 >= ep))
757757 then true
758758 else (0 >= eq))
759759 then true
760760 else (0 >= er))
761761 then true
762762 else (0 >= es))
763763 then true
764764 else bG())
765765 then throw("Invalid initialize parameters")
766766 else ((((eL(bP, bQ, 0, 0, 0, 0, 0) ++ ej(ek, el, em, en, eo, ep, eq, er, es)) ++ et((lastBlock.timestamp + en), 0, 0, 0, 0)) ++ eV(0)) ++ [BooleanEntry(j, true), StringEntry(c, fb), StringEntry(a, fc), StringEntry(L, fd)])
767767
768768
769769
770770 @Callable(bs)
771771 func setInitMarginRatio (ek) = if (if ((0 >= ek))
772772 then true
773773 else !(bG()))
774774 then throw("Invalid setInitMarginRatio parameters")
775775 else ej(ek, bh(), bi(), be(), aW(), bk(), bl(), bj(), bm())
776776
777777
778778
779779 @Callable(bs)
780780 func decreasePosition (eT,fe,ff) = if (if (if (if (if ((0 >= eT))
781781 then true
782782 else !(bG()))
783783 then true
784784 else !(bt(ar(ak, fe), aX(), true)))
785785 then true
786786 else !(bF(toString(bs.caller))))
787787 then true
788788 else bH())
789789 then throw("Invalid decreasePosition parameters")
790790 else {
791791 let fg = bA(toString(bs.caller))
792792 let fh = fg._1
793793 let fi = fg._2
794794 let fj = fg._3
795795 let fk = fg._4
796796 let fl = if ((fh > 0))
797797 then ag
798798 else af
799799 let fm = (fl == af)
800800 let fn = at(eT, fe)
801801 let fo = cZ(toString(bs.caller), an)
802802 let fp = fo._1
803803 let cY = fo._2
804804 let fq = if ((fp > fn))
805805 then {
806806 let fr = bO(fm, fn)
807807 let dt = fr._1
808808 let bR = fr._2
809809 let bS = fr._3
810810 let dB = fr._4
811811 let dC = fr._5
812812 let fs = au(dt)
813813 if (if ((ff != 0))
814814 then (ff > fs)
815815 else false)
816816 then throw(((("Too little base asset exchanged, got " + toString(fs)) + " expected ") + toString(ff)))
817817 else {
818818 let dy = ar(at(cY, fs), au(fh))
819819 let ft = cf(fh, fi, fk, dy)
820820 let co = ft._1
821821 let cp = ft._2
822822 let ck = ft._3
823823 let du = fn
824824 let fu = (cY - dy)
825825 let fv = if ((fh > 0))
826826 then ((fp - du) - fu)
827827 else ((fu + fp) - du)
828828 let fw = (fh + dt)
829829 $Tuple11(fw, co, au(fv), by(fw), bS, bR, dB, dC, (bc() - fn), (bq() - (if ((fw > 0))
830830 then au(dt)
831831 else 0)), (bp() - (if ((0 > fw))
832832 then au(dt)
833833 else 0)))
834834 }
835835 }
836836 else throw("Close position first")
837837 let fw = fq._1
838838 let fx = fq._2
839839 let fy = fq._3
840840 let fz = fq._4
841841 let bS = fq._5
842842 let bR = fq._6
843843 let dB = fq._7
844844 let dC = fq._8
845845 let dF = fq._9
846846 let dD = fq._10
847847 let dE = fq._11
848848 let fA = invoke(ac(), "notifyNotional", [toString(bs.caller), fy], nil)
849849 if ((fA == fA))
850850 then (ez(toString(bs.caller), fw, fx, fy, fz) ++ eL(bR, bS, dB, dC, dF, dD, dE))
851851 else throw("Strict value is not equal to itself.")
852852 }
853853
854854
855855
856856 @Callable(bs)
857857 func increasePosition (fl,fe,ff,fB) = {
858858 let fC = bs.payments[0].amount
859859 if (if (if (if (if (if (if ((fl != af))
860860 then (fl != ag)
861861 else false)
862862 then true
863863 else (0 >= fC))
864864 then true
865865 else !(bG()))
866866 then true
867867 else (bs.payments[0].assetId != Y()))
868868 then true
869869 else !(bt(ar(ak, fe), aX(), true)))
870870 then true
871871 else bH())
872872 then throw("Invalid increasePosition parameters")
873873 else {
874874 let bB = toString(bs.caller)
875875 let fD = at(fC, aW())
876876 let fE = invoke(ae(), "acceptPaymentWithLink", [bB, fB], [AttachedPayment(Y(), fD)])
877877 if ((fE == fE))
878878 then {
879879 let fF = {
880880 let bD = fE
881881 if ($isInstanceOf(bD, "Int"))
882882 then {
883883 let fG = bD
884884 fG
885885 }
886886 else throw("Invalid referrerFee")
887887 }
888888 let eT = (fC - fD)
889889 let fH = (fD - fF)
890890 let fI = bA(bB)
891891 let fh = fI._1
892892 let fi = fI._2
893893 let fj = fI._3
894894 let fk = fI._4
895895 let fJ = (fh == 0)
896896 let fK = if ((fh > 0))
897897 then (fl == af)
898898 else (fl == ag)
899899 let fL = if (!(fJ))
900900 then fK
901901 else false
902902 let fm = (fl == af)
903903 let fM = if (if (fJ)
904904 then true
905905 else fL)
906906 then {
907907 let fn = at(eT, fe)
908908 let fN = bO(fm, fn)
909909 let bU = fN._1
910910 let bR = fN._2
911911 let bS = fN._3
912912 let dB = fN._4
913913 let dC = fN._5
914914 if (if ((ff != 0))
915915 then (ff > au(bU))
916916 else false)
917917 then throw(((("Limit error: " + toString(au(bU))) + " < ") + toString(ff)))
918918 else {
919919 let fw = (fh + bU)
920920 let fO = ar(fn, fe)
921921 let fP = cf(fh, fi, fk, fO)
922922 let co = fP._1
923923 let cT = fP._2
924924 let cU = fP._3
925925 if (!(cE(bR, bS)))
926926 then throw("Over max spread limit")
927927 else $Tuple11(fw, co, (fj + fn), by(fw), bS, bR, dB, dC, (bc() + fn), (bq() + (if ((fw > 0))
928928 then au(bU)
929929 else 0)), (bp() + (if ((0 > fw))
930930 then au(bU)
931931 else 0)))
932932 }
933933 }
934934 else {
935935 let fn = at(eT, fe)
936936 let fQ = cZ(toString(bs.caller), an)
937937 let fp = fQ._1
938938 let cY = fQ._2
939939 if ((fp > fn))
940940 then throw("Use decreasePosition to decrease position size")
941941 else throw("Close position first")
942942 }
943943 let fw = fM._1
944944 let fx = fM._2
945945 let fy = fM._3
946946 let fz = fM._4
947947 let bS = fM._5
948948 let bR = fM._6
949949 let dB = fM._7
950950 let dC = fM._8
951951 let dF = fM._9
952952 let dD = fM._10
953953 let dE = fM._11
954954 let fR = (fH / 2)
955955 let fS = (fH - fR)
956956 let fT = invoke(Z(), "lockNeutrinoSP", [toString(aa()), am], [AttachedPayment(Y(), eT)])
957957 if ((fT == fT))
958958 then {
959959 let fU = invoke(ab(), "deposit", nil, [AttachedPayment(Y(), fS)])
960960 if ((fU == fU))
961961 then {
962962 let fV = invoke(ac(), "notifyFees", [bB, fH], nil)
963963 if ((fV == fV))
964964 then {
965965 let fA = invoke(ac(), "notifyNotional", [bB, fy], nil)
966966 if ((fA == fA))
967967 then (((ez(bB, fw, fx, fy, fz) ++ eL(bR, bS, dB, dC, dF, dD, dE)) ++ eW(fR)) ++ eV((aV() + eT)))
968968 else throw("Strict value is not equal to itself.")
969969 }
970970 else throw("Strict value is not equal to itself.")
971971 }
972972 else throw("Strict value is not equal to itself.")
973973 }
974974 else throw("Strict value is not equal to itself.")
975975 }
976976 else throw("Strict value is not equal to itself.")
977977 }
978978 }
979979
980980
981981
982982 @Callable(bs)
983983 func addMargin () = {
984984 let fC = bs.payments[0].amount
985985 if (if (if (if ((bs.payments[0].assetId != Y()))
986986 then true
987987 else !(bF(toString(bs.caller))))
988988 then true
989989 else !(bG()))
990990 then true
991991 else bH())
992992 then throw("Invalid addMargin parameters")
993993 else {
994994 let bB = toString(bs.caller)
995995 let fD = at(fC, aW())
996996 let fE = invoke(ae(), "acceptPayment", [bB], [AttachedPayment(Y(), fD)])
997997 if ((fE == fE))
998998 then {
999999 let fF = {
10001000 let bD = fE
10011001 if ($isInstanceOf(bD, "Int"))
10021002 then {
10031003 let fG = bD
10041004 fG
10051005 }
10061006 else throw("Invalid referrerFee")
10071007 }
10081008 let fH = (fD - fF)
10091009 let eT = (fC - fD)
10101010 let fW = bA(bB)
10111011 let fh = fW._1
10121012 let fi = fW._2
10131013 let fj = fW._3
10141014 let fk = fW._4
10151015 let fR = (fH / 2)
10161016 let fS = (fH - fR)
10171017 let fT = invoke(Z(), "lockNeutrinoSP", [toString(aa()), am], [AttachedPayment(Y(), eT)])
10181018 if ((fT == fT))
10191019 then {
10201020 let fU = invoke(ab(), "deposit", nil, [AttachedPayment(Y(), fS)])
10211021 if ((fU == fU))
10221022 then {
10231023 let fV = invoke(ac(), "notifyFees", [bB, fH], nil)
10241024 if ((fV == fV))
10251025 then ((ez(bB, fh, (fi + eT), fj, fk) ++ eW(fR)) ++ eV((aV() + eT)))
10261026 else throw("Strict value is not equal to itself.")
10271027 }
10281028 else throw("Strict value is not equal to itself.")
10291029 }
10301030 else throw("Strict value is not equal to itself.")
10311031 }
10321032 else throw("Strict value is not equal to itself.")
10331033 }
10341034 }
10351035
10361036
10371037
10381038 @Callable(bs)
10391039 func removeMargin (eT) = if (if (if (if ((0 >= eT))
10401040 then true
10411041 else !(bF(toString(bs.caller))))
10421042 then true
10431043 else !(bG()))
10441044 then true
10451045 else bH())
10461046 then throw("Invalid removeMargin parameters")
10471047 else {
10481048 let fX = bA(toString(bs.caller))
10491049 let fh = fX._1
10501050 let fi = fX._2
10511051 let fj = fX._3
10521052 let fk = fX._4
10531053 let fY = -(eT)
10541054 let fZ = cf(fh, fi, fk, fY)
10551055 let co = fZ._1
10561056 let cp = fZ._2
10571057 if ((cp != 0))
10581058 then throw("Invalid removed margin amount")
10591059 else {
10601060 let ga = de(co, cp, fj)
10611061 if (!(bt(ga, aX(), true)))
10621062 then throw(((("Too much margin removed: " + toString(ga)) + " < ") + toString(aX())))
10631063 else {
10641064 let gb = invoke(Z(), "unlockNeutrino", [eT, toBase58String(Y())], nil)
10651065 if ((gb == gb))
10661066 then ((ez(toString(bs.caller), fh, co, fj, by(fh)) ++ eS(bs.caller, eT)) ++ eV((aV() - eT)))
10671067 else throw("Strict value is not equal to itself.")
10681068 }
10691069 }
10701070 }
10711071
10721072
10731073
10741074 @Callable(bs)
10751075 func closePosition () = {
10761076 let gc = br(bs)
10771077 let gd = valueOrErrorMessage(addressFromString(gc), "Invalid caller")
10781078 if (if (if (!(bF(gc)))
10791079 then true
10801080 else !(bG()))
10811081 then true
10821082 else bH())
10831083 then throw("Invalid closePosition parameters")
10841084 else {
10851085 let ge = dv(gc, true)
10861086 let cT = ge._1
10871087 let gf = ge._2
10881088 let dy = ge._3
10891089 let dz = ge._4
10901090 let bR = ge._5
10911091 let bS = ge._6
10921092 let dB = ge._7
10931093 let dC = ge._8
10941094 let dF = ge._9
10951095 let cU = ge._10
10961096 let dD = ge._11
10971097 let dE = ge._12
10981098 if ((gf > 0))
10991099 then throw("Unable to close position with bad debt")
11001100 else {
11011101 let gg = au(dz)
11021102 let gh = (aV() - gg)
11031103 let gi = if ((0 > gh))
11041104 then $Tuple2(0, au(gh))
11051105 else $Tuple2(gh, 0)
11061106 let gj = gi._1
11071107 let gk = gi._2
11081108 let fG = if ((gk > 0))
11091109 then {
11101110 let gl = invoke(ab(), "withdraw", [gk], nil)
11111111 if ((gl == gl))
11121112 then nil
11131113 else throw("Strict value is not equal to itself.")
11141114 }
11151115 else nil
11161116 if ((fG == fG))
11171117 then {
11181118 let gb = invoke(Z(), "unlockNeutrino", [(gg - gk), toBase58String(Y())], nil)
11191119 if ((gb == gb))
11201120 then {
11211121 let fA = invoke(ac(), "notifyNotional", [gc, 0], nil)
11221122 if ((fA == fA))
11231123 then (((eR(gc) ++ eL(bR, bS, dB, dC, dF, dD, dE)) ++ eS(gd, gg)) ++ eV(gj))
11241124 else throw("Strict value is not equal to itself.")
11251125 }
11261126 else throw("Strict value is not equal to itself.")
11271127 }
11281128 else throw("Strict value is not equal to itself.")
11291129 }
11301130 }
11311131 }
11321132
11331133
11341134
11351135 @Callable(bs)
11361136 func liquidate (bB) = {
11371137 let gm = di(bB, an)
11381138 let ga = if (cK())
11391139 then {
11401140 let gn = di(bB, ao)
11411141 av(gm, gn)
11421142 }
11431143 else gm
11441144 if (if (if (if (!(bt(ga, bh(), false)))
11451145 then true
11461146 else !(bF(bB)))
11471147 then true
11481148 else !(bG()))
11491149 then true
11501150 else bH())
11511151 then throw("Unable to liquidate")
11521152 else if (if (if ((gm > bi()))
11531153 then (bj() > 0)
11541154 else false)
11551155 then (ak > bj())
11561156 else false)
11571157 then {
11581158 let go = bA(bB)
11591159 let fh = go._1
11601160 let fi = go._2
11611161 let fj = go._3
11621162 let fk = go._4
11631163 let fl = if ((fh > 0))
11641164 then ag
11651165 else af
11661166 let fm = (fl == af)
11671167 let du = do(bB, fh)
11681168 let gp = cZ(bB, an)
11691169 let fp = gp._1
11701170 let cY = gp._2
11711171 let gq = bO(fm, du)
11721172 let dt = gq._1
11731173 let bR = gq._2
11741174 let bS = gq._3
11751175 let dB = gq._4
11761176 let dC = gq._5
11771177 let dy = ar(at(cY, au(dt)), au(fh))
11781178 let gr = cf(fh, fi, fk, dy)
11791179 let co = gr._1
11801180 let cp = gr._2
11811181 let ck = gr._3
11821182 let fu = (cY - dy)
11831183 let fv = if ((fh > 0))
11841184 then ((fp - du) - fu)
11851185 else ((fu + fp) - du)
11861186 let gs = at(du, bi())
11871187 let gt = (gs / 2)
11881188 let fS = (gs - gt)
11891189 let gu = (co - gs)
11901190 let fw = (fh + dt)
11911191 let fy = au(fv)
11921192 let gv = by(fw)
11931193 let dF = (bc() - du)
11941194 let gh = (aV() - gs)
11951195 let gw = if ((0 > gh))
11961196 then $Tuple2(0, au(gh))
11971197 else $Tuple2(gh, 0)
11981198 let gx = gw._1
11991199 let gy = gw._2
12001200 let fG = if ((gy > 0))
12011201 then {
12021202 let gl = invoke(ab(), "withdraw", [gy], nil)
12031203 if ((gl == gl))
12041204 then nil
12051205 else throw("Strict value is not equal to itself.")
12061206 }
12071207 else nil
12081208 if ((fG == fG))
12091209 then {
12101210 let gb = invoke(Z(), "unlockNeutrino", [(gs - gy), toBase58String(Y())], nil)
12111211 if ((gb == gb))
12121212 then {
12131213 let fU = invoke(ab(), "deposit", nil, [AttachedPayment(Y(), fS)])
12141214 if ((fU == fU))
12151215 then {
12161216 let fA = invoke(ac(), "notifyNotional", [bB, fy], nil)
12171217 if ((fA == fA))
12181218 then (((ez(bB, fw, gu, fy, gv) ++ eL(bR, bS, dB, dC, dF, (bq() - (if ((fw > 0))
12191219 then au(dt)
12201220 else 0)), (bp() - (if ((0 > fw))
12211221 then au(dt)
12221222 else 0)))) ++ eS(bs.caller, gt)) ++ eV(gx))
12231223 else throw("Strict value is not equal to itself.")
12241224 }
12251225 else throw("Strict value is not equal to itself.")
12261226 }
12271227 else throw("Strict value is not equal to itself.")
12281228 }
12291229 else throw("Strict value is not equal to itself.")
12301230 }
12311231 else {
12321232 let gz = dv(bB, false)
12331233 let cT = gz._1
12341234 let cp = gz._2
12351235 let cU = gz._3
12361236 let cV = gz._4
12371237 let bR = gz._5
12381238 let bS = gz._6
12391239 let dB = gz._7
12401240 let dC = gz._8
12411241 let dF = gz._9
12421242 let du = gz._10
12431243 let dD = gz._11
12441244 let dE = gz._12
12451245 let gs = at(du, bi())
12461246 let gt = (gs / 2)
12471247 let fS = (gs - gt)
12481248 let gh = (aV() - gs)
12491249 let gA = if ((0 > gh))
12501250 then $Tuple2(0, au(gh))
12511251 else $Tuple2(gh, 0)
12521252 let gx = gA._1
12531253 let gy = gA._2
12541254 let fG = if ((gy > 0))
12551255 then {
12561256 let gl = invoke(ab(), "withdraw", [gy], nil)
12571257 if ((gl == gl))
12581258 then nil
12591259 else throw("Strict value is not equal to itself.")
12601260 }
12611261 else nil
12621262 if ((fG == fG))
12631263 then {
12641264 let gb = invoke(Z(), "unlockNeutrino", [(gs - gy), toBase58String(Y())], nil)
12651265 if ((gb == gb))
12661266 then {
12671267 let fU = invoke(ab(), "deposit", nil, [AttachedPayment(Y(), fS)])
12681268 if ((fU == fU))
12691269 then {
12701270 let fA = invoke(ac(), "notifyNotional", [bB, 0], nil)
12711271 if ((fA == fA))
12721272 then (((eR(bB) ++ eL(bR, bS, dB, dC, dF, dD, dE)) ++ eS(bs.caller, gt)) ++ eV(gx))
12731273 else throw("Strict value is not equal to itself.")
12741274 }
12751275 else throw("Strict value is not equal to itself.")
12761276 }
12771277 else throw("Strict value is not equal to itself.")
12781278 }
12791279 else throw("Strict value is not equal to itself.")
12801280 }
12811281 }
12821282
12831283
12841284
12851285 @Callable(bs)
12861286 func payFunding () = {
12871287 let gB = bd()
12881288 if (if (if ((gB > lastBlock.timestamp))
12891289 then true
12901290 else !(bG()))
12911291 then true
12921292 else bH())
12931293 then throw(((("Invalid funding block timestamp: " + toString(lastBlock.timestamp)) + " < ") + toString(gB)))
12941294 else {
12951295 let ee = cz()
12961296 let gC = ed()
12971297 let eh = gC._1
12981298 let ei = gC._2
12991299 et((gB + bg()), (bn() + ei), (bo() + eh), ar(ei, ee), ar(eh, ee))
13001300 }
13011301 }
13021302
13031303
13041304
13051305 @Callable(bs)
13061306 func forceMoveAsset (bB,eT) = if (if ((addressFromPublicKey(X()) != bs.caller))
13071307 then true
13081308 else (0 > eT))
13091309 then throw("Invalid forceMoveAsset parameters")
13101310 else {
13111311 let gb = invoke(Z(), "unlockNeutrino", [eT, toBase58String(Y())], nil)
13121312 if ((gb == gb))
13131313 then (eS(addressFromStringValue(bB), eT) ++ eV((aV() - eT)))
13141314 else throw("Strict value is not equal to itself.")
13151315 }
13161316
13171317
13181318
13191319 @Callable(bs)
13201320 func adjustPeg (dX) = if (if ((addressFromPublicKey(X()) != bs.caller))
13211321 then true
13221322 else (0 > dX))
13231323 then throw("Invalid adjustPeg parameters")
13241324 else {
13251325 let gD = dW(dX)
13261326 let eb = gD._1
13271327 let gE = gD._2
13281328 if ((gE == 0))
13291329 then throw("Nothing to adjust")
13301330 else if ((gE > 0))
13311331 then {
13321332 let gl = invoke(ab(), "withdraw", [gE], nil)
13331333 if ((gl == gl))
13341334 then {
13351335 let fT = invoke(Z(), "lockNeutrinoSP", [toString(aa()), am], [AttachedPayment(Y(), gE)])
13361336 if ((fT == fT))
13371337 then (eV((aV() + gE)) ++ eK(eb, aZ()))
13381338 else throw("Strict value is not equal to itself.")
13391339 }
13401340 else throw("Strict value is not equal to itself.")
13411341 }
13421342 else {
13431343 let gb = invoke(Z(), "unlockNeutrino", [au(gE), toBase58String(Y())], nil)
13441344 if ((gb == gb))
13451345 then {
13461346 let fU = invoke(ab(), "deposit", nil, [AttachedPayment(Y(), au(gE))])
13471347 if ((fU == fU))
13481348 then (eV((aV() - au(gE))) ++ eK(eb, aZ()))
13491349 else throw("Strict value is not equal to itself.")
13501350 }
13511351 else throw("Strict value is not equal to itself.")
13521352 }
13531353 }
13541354
13551355
13561356
13571357 @Callable(bs)
13581358 func v_get (bB) = {
13591359 let gF = dv(bB, false)
13601360 let cT = gF._1
13611361 let cU = gF._2
13621362 let cV = gF._3
13631363 let gG = gF._4
13641364 throw((((ap(cU) + ap(cV)) + ap(gG)) + ap(dn(bB))))
13651365 }
13661366
13671367
13681368
13691369 @Callable(bs)
13701370 func view_calcRemainMarginWithFundingPayment (bB) = {
13711371 let gH = bA(bB)
13721372 let bE = gH._1
13731373 let db = gH._2
13741374 let dk = gH._3
13751375 let dd = gH._4
13761376 let gI = cZ(bB, an)
13771377 let cQ = gI._1
13781378 let cY = gI._2
13791379 let gJ = cf(bE, db, dd, cY)
13801380 let co = gJ._1
13811381 let cp = gJ._2
13821382 let ck = gJ._3
13831383 throw((((((ap(co) + ap(ck)) + ap(dn(bB))) + ap(cY)) + ap(cp)) + ap(cQ)))
13841384 }
13851385
13861386
13871387
13881388 @Callable(bs)
13891389 func view_getPegAdjustCost (dX) = {
13901390 let ec = dW(dX)
13911391 throw(toString(ec._2))
13921392 }
13931393
13941394
13951395
13961396 @Callable(bs)
13971397 func view_getFunding () = {
13981398 let ee = cz()
13991399 let gK = ed()
14001400 let eh = gK._1
14011401 let ei = gK._2
14021402 let gL = ar(ei, ee)
14031403 let gM = ar(eh, ee)
1404- throw((ap(gL) + ap(gM)))
1404+ throw((((ap(gL) + ap(gM)) + ap(dG())) + ap(cz())))
14051405 }
14061406
14071407
14081408 @Verifier(gN)
14091409 func gO () = sigVerify(gN.bodyBytes, gN.proofs[0], X())
14101410

github/deemru/w8io/026f985 
149.82 ms