tx · FYSNibP2BnGQCBdyEbDb9NWMDYi5X2o4CJ61M9HTTZ8e

3N8G95pEaYEhZ4U3m3UrzpEzwBFn5vvXsZH:  -0.05000000 Waves

2022.07.05 09:26 [2126017] smart account 3N8G95pEaYEhZ4U3m3UrzpEzwBFn5vvXsZH > SELF 0.00000000 Waves

{ "type": 13, "id": "FYSNibP2BnGQCBdyEbDb9NWMDYi5X2o4CJ61M9HTTZ8e", "fee": 5000000, "feeAssetId": null, "timestamp": 1657002386368, "version": 2, "chainId": 84, "sender": "3N8G95pEaYEhZ4U3m3UrzpEzwBFn5vvXsZH", "senderPublicKey": "Hj6oyH6As5UWo8fZ1K4hPsEY7nxH3MvhBqDD6axiwjXs", "proofs": [ "2bBE2x3Ec7aodGGP3YxFsf69dbiwj7ZpENdAaqRA8Ed2zQHc38bDAuw6xiyCSsFD9urerVbz5pAgaUWLK3VDJ44B" ], "script": "base64:AAIFAAAAAAAAAEoIAhIAEgASCQoHAQEBAQEBARIOCgwBAQEBAQEBCAgIAQESBgoEAQEBARIFCgMBAQESABIDCgEBEgASAwoBCBIAEgMKAQgSAwoBCAAAAHAAAAAACWtfb3JhX2tleQIAAAAJa19vcmFfa2V5AAAAAA9rX29yYV9ibG9ja19rZXkCAAAAD2tfb3JhX2Jsb2NrX2tleQAAAAAFa19vcmECAAAABWtfb3JhAAAAAAlrX2JhbGFuY2UCAAAACWtfYmFsYW5jZQAAAAAOa19wb3NpdGlvblNpemUCAAAADmtfcG9zaXRpb25TaXplAAAAABBrX3Bvc2l0aW9uTWFyZ2luAgAAABBrX3Bvc2l0aW9uTWFyZ2luAAAAABZrX3Bvc2l0aW9uT3Blbk5vdGlvbmFsAgAAABZrX3Bvc2l0aW9uT3Blbk5vdGlvbmFsAAAAAC5rX3Bvc2l0aW9uTGFzdFVwZGF0ZWRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAgAAABJrX3Bvc2l0aW9uRnJhY3Rpb24AAAAADWtfaW5pdGlhbGl6ZWQCAAAADWtfaW5pdGlhbGl6ZWQAAAAACGtfcGF1c2VkAgAAAAhrX3BhdXNlZAAAAAAFa19mZWUCAAAABWtfZmVlAAAAAA9rX2Z1bmRpbmdQZXJpb2QCAAAAD2tfZnVuZGluZ1BlcmlvZAAAAAARa19pbml0TWFyZ2luUmF0aW8CAAAAEWtfaW5pdE1hcmdpblJhdGlvAAAAABhrX21haW50ZW5hbmNlTWFyZ2luUmF0aW8CAAAABWtfbW1yAAAAABVrX2xpcXVpZGF0aW9uRmVlUmF0aW8CAAAAFWtfbGlxdWlkYXRpb25GZWVSYXRpbwAAAAANa19zcHJlYWRMaW1pdAIAAAANa19zcHJlYWRMaW1pdAAAAAAQa19tYXhQcmljZUltcGFjdAIAAAAQa19tYXhQcmljZUltcGFjdAAAAAANa19sYXN0RGF0YVN0cgIAAAANa19sYXN0RGF0YVN0cgAAAAAOa19sYXN0TWludXRlSWQCAAAADmtfbGFzdE1pbnV0ZUlkAAAAAB1rX3R3YXBEYXRhTGFzdEN1bXVsYXRpdmVQcmljZQIAAAAda190d2FwRGF0YUxhc3RDdW11bGF0aXZlUHJpY2UAAAAAE2tfdHdhcERhdGFMYXN0UHJpY2UCAAAAE2tfdHdhcERhdGFMYXN0UHJpY2UAAAAAJWtfbGF0ZXN0TG9uZ0N1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24CAAAAG2tfbGF0ZXN0TG9uZ1ByZW1pdW1GcmFjdGlvbgAAAAAma19sYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24CAAAAHGtfbGF0ZXN0U2hvcnRQcmVtaXVtRnJhY3Rpb24AAAAAEmtfbmV4dEZ1bmRpbmdCbG9jawIAAAAea19uZXh0RnVuZGluZ0Jsb2NrTWluVGltZXN0YW1wAAAAABFrX2xvbmdGdW5kaW5nUmF0ZQIAAAARa19sb25nRnVuZGluZ1JhdGUAAAAAEmtfc2hvcnRGdW5kaW5nUmF0ZQIAAAASa19zaG9ydEZ1bmRpbmdSYXRlAAAAABNrX3F1b3RlQXNzZXRSZXNlcnZlAgAAAAhrX3F0QXN0UgAAAAASa19iYXNlQXNzZXRSZXNlcnZlAgAAAAhrX2JzQXN0UgAAAAATa190b3RhbFBvc2l0aW9uU2l6ZQIAAAATa190b3RhbFBvc2l0aW9uU2l6ZQAAAAAXa190b3RhbExvbmdQb3NpdGlvblNpemUCAAAAF2tfdG90YWxMb25nUG9zaXRpb25TaXplAAAAABhrX3RvdGFsU2hvcnRQb3NpdGlvblNpemUCAAAAGGtfdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQAAAAAUa19jdW11bGF0aXZlTm90aW9uYWwCAAAAFGtfY3VtdWxhdGl2ZU5vdGlvbmFsAAAAABZrX29wZW5JbnRlcmVzdE5vdGlvbmFsAgAAABZrX29wZW5JbnRlcmVzdE5vdGlvbmFsAAAAABRrX2Nvb3JkaW5hdG9yQWRkcmVzcwIAAAAUa19jb29yZGluYXRvckFkZHJlc3MAAAAAE2tfaW5zdXJhbmNlX2FkZHJlc3MCAAAAE2tfaW5zdXJhbmNlX2FkZHJlc3MAAAAAD2tfYWRtaW5fYWRkcmVzcwIAAAAPa19hZG1pbl9hZGRyZXNzAAAAABJrX2FkbWluX3B1YmxpY19rZXkCAAAAEmtfYWRtaW5fcHVibGljX2tleQAAAAANa19xdW90ZV9hc3NldAIAAAANa19xdW90ZV9hc3NldAAAAAAPa19xdW90ZV9zdGFraW5nAgAAAA9rX3F1b3RlX3N0YWtpbmcAAAAAEWtfc3Rha2luZ19hZGRyZXNzAgAAABFrX3N0YWtpbmdfYWRkcmVzcwEAAAALY29vcmRpbmF0b3IAAAAACQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwUAAAAUa19jb29yZGluYXRvckFkZHJlc3MCAAAAE0Nvb3JkaW5hdG9yIG5vdCBzZXQBAAAADGFkbWluQWRkcmVzcwAAAAAJAAQmAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgkBAAAAC2Nvb3JkaW5hdG9yAAAAAAUAAAAPa19hZG1pbl9hZGRyZXNzAQAAAA5hZG1pblB1YmxpY0tleQAAAAAJAAJZAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgkBAAAAC2Nvb3JkaW5hdG9yAAAAAAUAAAASa19hZG1pbl9wdWJsaWNfa2V5AQAAAApxdW90ZUFzc2V0AAAAAAkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACCQEAAAALY29vcmRpbmF0b3IAAAAABQAAAA1rX3F1b3RlX2Fzc2V0AQAAABFxdW90ZUFzc2V0U3Rha2luZwAAAAAJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACCQEAAAALY29vcmRpbmF0b3IAAAAABQAAAA9rX3F1b3RlX3N0YWtpbmcCAAAAG1F1b3RlIGFzc2V0IHN0YWtpbmcgbm90IHNldAEAAAAOc3Rha2luZ0FkZHJlc3MAAAAACQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgkBAAAAC2Nvb3JkaW5hdG9yAAAAAAUAAAARa19zdGFraW5nX2FkZHJlc3MCAAAAEUluc3VyYW5jZSBub3Qgc2V0AQAAABBpbnN1cmFuY2VBZGRyZXNzAAAAAAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEJgAAAAEJAQAAABFAZXh0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YWludGVuYW5jZU1hcmdpblJhdGlvAQAAABNsaXF1aWRhdGlvbkZlZVJhdGlvAAAAAAkBAAAAA2ludAAAAAEFAAAAFWtfbGlxdWlkYXRpb25GZWVSYXRpbwEAAAALc3ByZWFkTGltaXQAAAAACQEAAAADaW50AAAAAQUAAAANa19zcHJlYWRMaW1pdAEAAAAObWF4UHJpY2VJbXBhY3QAAAAACQEAAAADaW50AAAAAQUAAAAQa19tYXhQcmljZUltcGFjdAEAAAAjbGF0ZXN0TG9uZ0N1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24AAAAACQEAAAADaW50AAAAAQUAAAAla19sYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgEAAAAkbGF0ZXN0U2hvcnRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAAAAAAkBAAAAA2ludAAAAAEFAAAAJmtfbGF0ZXN0U2hvcnRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAQAAABZ0b3RhbFNob3J0UG9zaXRpb25TaXplAAAAAAkBAAAAA2ludAAAAAEFAAAAGGtfdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQEAAAAVdG90YWxMb25nUG9zaXRpb25TaXplAAAAAAkBAAAAA2ludAAAAAEFAAAAF2tfdG90YWxMb25nUG9zaXRpb25TaXplAQAAABZyZXF1aXJlTW9yZU1hcmdpblJhdGlvAAAAAwAAAAxfbWFyZ2luUmF0aW8AAAAQX2Jhc2VNYXJnaW5SYXRpbwAAABRfbGFyZ2VyVGhhbk9yRXF1YWxUbwQAAAAUcmVtYWluaW5nTWFyZ2luUmF0aW8JAABlAAAAAgUAAAAMX21hcmdpblJhdGlvBQAAABBfYmFzZU1hcmdpblJhdGlvAwMFAAAAFF9sYXJnZXJUaGFuT3JFcXVhbFRvCQAAZgAAAAIAAAAAAAAAAAAFAAAAFHJlbWFpbmluZ01hcmdpblJhdGlvBwkAAAIAAAABAgAAAA5JbnZhbGlkIG1hcmdpbgMDCQEAAAABIQAAAAEFAAAAFF9sYXJnZXJUaGFuT3JFcXVhbFRvCQAAZwAAAAIFAAAAFHJlbWFpbmluZ01hcmdpblJhdGlvAAAAAAAAAAAABwkAAAIAAAABAgAAAA5JbnZhbGlkIG1hcmdpbgYBAAAAH2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24AAAABAAAADV9wb3NpdGlvblNpemUDCQAAAAAAAAIFAAAADV9wb3NpdGlvblNpemUAAAAAAAAAAAAJAAACAAAAAQIAAAAsU2hvdWxkIG5vdCBiZSBjYWxsZWQgd2l0aCBfcG9zaXRpb25TaXplID09IDADCQAAZgAAAAIFAAAADV9wb3NpdGlvblNpemUAAAAAAAAAAAAJAQAAACNsYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgAAAAAJAQAAACRsYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24AAAAAAQAAAAtnZXRQb3NpdGlvbgAAAAEAAAAHX3RyYWRlcgQAAAAPcG9zaXRpb25TaXplT3B0CQAEGgAAAAIFAAAABHRoaXMJAQAAAA50b0NvbXBvc2l0ZUtleQAAAAIFAAAADmtfcG9zaXRpb25TaXplBQAAAAdfdHJhZGVyBAAAAAckbWF0Y2gwBQAAAA9wb3NpdGlvblNpemVPcHQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAMcG9zaXRpb25TaXplBQAAAAckbWF0Y2gwCQAFFgAAAAQFAAAADHBvc2l0aW9uU2l6ZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkBAAAADnRvQ29tcG9zaXRlS2V5AAAAAgUAAAAQa19wb3NpdGlvbk1hcmdpbgUAAAAHX3RyYWRlcgkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkBAAAADnRvQ29tcG9zaXRlS2V5AAAAAgUAAAAWa19wb3NpdGlvbk9wZW5Ob3Rpb25hbAUAAAAHX3RyYWRlcgkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkBAAAADnRvQ29tcG9zaXRlS2V5AAAAAgUAAAAua19wb3NpdGlvbkxhc3RVcGRhdGVkQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgUAAAAHX3RyYWRlcgkABRYAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAABNyZXF1aXJlT3BlblBvc2l0aW9uAAAAAQAAAAdfdHJhZGVyAwkAAAAAAAACCAkBAAAAC2dldFBvc2l0aW9uAAAAAQUAAAAHX3RyYWRlcgAAAAJfMQAAAAAAAAAAAAkAAAIAAAABAgAAABBObyBvcGVuIHBvc2l0aW9uBgEAAAALaW5pdGlhbGl6ZWQAAAAACQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAABHRoaXMFAAAADWtfaW5pdGlhbGl6ZWQHAQAAAAZwYXVzZWQAAAAACQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAABHRoaXMFAAAACGtfcGF1c2VkBwEAAAANdXBkYXRlUmVzZXJ2ZQAAAAMAAAAGX2lzQWRkAAAAEV9xdW90ZUFzc2V0QW1vdW50AAAAEF9iYXNlQXNzZXRBbW91bnQDBQAAAAZfaXNBZGQEAAAAB25ld0Jhc2UJAABlAAAAAgkBAAAABmJzQXN0UgAAAAAFAAAAEF9iYXNlQXNzZXRBbW91bnQDCQAAZwAAAAIAAAAAAAAAAAAFAAAAB25ld0Jhc2UJAAACAAAAAQIAAAAqVHggbGVhZCB0byBiYXNlIGFzc2V0IHJlc2VydmUgPD0gMCwgcmV2ZXJ0CQAFFgAAAAQJAABkAAAAAgkBAAAABnF0QXN0UgAAAAAFAAAAEV9xdW90ZUFzc2V0QW1vdW50BQAAAAduZXdCYXNlCQAAZAAAAAIJAQAAABF0b3RhbFBvc2l0aW9uU2l6ZQAAAAAFAAAAEF9iYXNlQXNzZXRBbW91bnQJAABkAAAAAgkBAAAAEmN1bXVsYXRpdmVOb3Rpb25hbAAAAAAFAAAAEV9xdW90ZUFzc2V0QW1vdW50BAAAAAhuZXdRdW90ZQkAAGUAAAACCQEAAAAGcXRBc3RSAAAAAAUAAAARX3F1b3RlQXNzZXRBbW91bnQDCQAAZwAAAAIAAAAAAAAAAAAFAAAACG5ld1F1b3RlCQAAAgAAAAECAAAAKlR4IGxlYWQgdG8gYmFzZSBxdW90ZSByZXNlcnZlIDw9IDAsIHJldmVydAkABRYAAAAEBQAAAAhuZXdRdW90ZQkAAGQAAAACCQEAAAAGYnNBc3RSAAAAAAUAAAAQX2Jhc2VBc3NldEFtb3VudAkAAGUAAAACCQEAAAARdG90YWxQb3NpdGlvblNpemUAAAAABQAAABBfYmFzZUFzc2V0QW1vdW50CQAAZQAAAAIJAQAAABJjdW11bGF0aXZlTm90aW9uYWwAAAAABQAAABFfcXVvdGVBc3NldEFtb3VudAEAAAAJc3dhcElucHV0AAAAAgAAAAZfaXNBZGQAAAARX3F1b3RlQXNzZXRBbW91bnQEAAAAB19xdEFzdFIJAQAAAAZxdEFzdFIAAAAABAAAAAdfYnNBc3RSCQEAAAAGYnNBc3RSAAAAAAQAAAALcHJpY2VCZWZvcmUJAQAAAARkaXZkAAAAAgUAAAAHX3F0QXN0UgUAAAAHX2JzQXN0UgQAAAAnYW1vdW50QmFzZUFzc2V0Qm91Z2h0V2l0aG91dFByaWNlSW1wYWN0CQEAAAAEbXVsZAAAAAIFAAAAEV9xdW90ZUFzc2V0QW1vdW50BQAAAAtwcmljZUJlZm9yZQQAAAABawkBAAAABG11bGQAAAACBQAAAAdfcXRBc3RSBQAAAAdfYnNBc3RSBAAAABZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyAwUAAAAGX2lzQWRkCQAAZAAAAAIFAAAAB19xdEFzdFIFAAAAEV9xdW90ZUFzc2V0QW1vdW50CQAAZQAAAAIFAAAAB19xdEFzdFIFAAAAEV9xdW90ZUFzc2V0QW1vdW50BAAAABViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIJAQAAAARkaXZkAAAAAgUAAAABawUAAAAWcXVvdGVBc3NldFJlc2VydmVBZnRlcgQAAAAYYW1vdW50QmFzZUFzc2V0Qm91Z2h0QWJzCQEAAAADYWJzAAAAAQkAAGUAAAACBQAAABViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFAAAAB19ic0FzdFIEAAAAFWFtb3VudEJhc2VBc3NldEJvdWdodAMFAAAABl9pc0FkZAUAAAAYYW1vdW50QmFzZUFzc2V0Qm91Z2h0QWJzCQEAAAABLQAAAAEFAAAAGGFtb3VudEJhc2VBc3NldEJvdWdodEFicwQAAAALcHJpY2VJbXBhY3QJAABpAAAAAgkAAGUAAAACBQAAACdhbW91bnRCYXNlQXNzZXRCb3VnaHRXaXRob3V0UHJpY2VJbXBhY3QFAAAAGGFtb3VudEJhc2VBc3NldEJvdWdodEFicwUAAAAnYW1vdW50QmFzZUFzc2V0Qm91Z2h0V2l0aG91dFByaWNlSW1wYWN0BAAAABNtYXhQcmljZUltcGFjdFZhbHVlCQEAAAAObWF4UHJpY2VJbXBhY3QAAAAAAwkAAGYAAAACBQAAAAtwcmljZUltcGFjdAUAAAATbWF4UHJpY2VJbXBhY3RWYWx1ZQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA1QcmljZSBpbXBhY3QgCQABpAAAAAEFAAAAC3ByaWNlSW1wYWN0AgAAABQgPiBtYXggcHJpY2UgaW1wYWN0IAkAAaQAAAABBQAAABNtYXhQcmljZUltcGFjdFZhbHVlBAAAAA0kdDAxMTQzMjExNjM1CQEAAAANdXBkYXRlUmVzZXJ2ZQAAAAMFAAAABl9pc0FkZAUAAAARX3F1b3RlQXNzZXRBbW91bnQFAAAAGGFtb3VudEJhc2VBc3NldEJvdWdodEFicwQAAAAXcXVvdGVBc3NldFJlc2VydmVBZnRlcjEIBQAAAA0kdDAxMTQzMjExNjM1AAAAAl8xBAAAABZiYXNlQXNzZXRSZXNlcnZlQWZ0ZXIxCAUAAAANJHQwMTE0MzIxMTYzNQAAAAJfMgQAAAAXdG90YWxQb3NpdGlvblNpemVBZnRlcjEIBQAAAA0kdDAxMTQzMjExNjM1AAAAAl8zBAAAABhjdW11bGF0aXZlTm90aW9uYWxBZnRlcjEIBQAAAA0kdDAxMTQzMjExNjM1AAAAAl80CQAFFwAAAAUFAAAAFWFtb3VudEJhc2VBc3NldEJvdWdodAUAAAAXcXVvdGVBc3NldFJlc2VydmVBZnRlcjEFAAAAFmJhc2VBc3NldFJlc2VydmVBZnRlcjEFAAAAF3RvdGFsUG9zaXRpb25TaXplQWZ0ZXIxBQAAABhjdW11bGF0aXZlTm90aW9uYWxBZnRlcjEBAAAAImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQAAAAEAAAAEF9vbGRQb3NpdGlvblNpemUAAAASX29sZFBvc2l0aW9uTWFyZ2luAAAAJV9vbGRQb3NpdGlvbkN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24AAAAMX21hcmdpbkRlbHRhBAAAAA5mdW5kaW5nUGF5bWVudAMJAQAAAAIhPQAAAAIFAAAAEF9vbGRQb3NpdGlvblNpemUAAAAAAAAAAAAEAAAAIF9sYXRlc3RDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uCQEAAAAfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgAAAAEFAAAAEF9vbGRQb3NpdGlvblNpemUJAQAAAARtdWxkAAAAAgkAAGUAAAACBQAAACBfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgUAAAAlX29sZFBvc2l0aW9uQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgUAAAAQX29sZFBvc2l0aW9uU2l6ZQAAAAAAAAAAAAQAAAAMc2lnbmVkTWFyZ2luCQAAZAAAAAIJAABlAAAAAgUAAAAMX21hcmdpbkRlbHRhBQAAAA5mdW5kaW5nUGF5bWVudAUAAAASX29sZFBvc2l0aW9uTWFyZ2luBAAAAA0kdDAxMjM4MjEyNTA5AwkAAGYAAAACAAAAAAAAAAAABQAAAAxzaWduZWRNYXJnaW4JAAUUAAAAAgAAAAAAAAAAAAkBAAAAA2FicwAAAAEFAAAADHNpZ25lZE1hcmdpbgkABRQAAAACCQEAAAADYWJzAAAAAQUAAAAMc2lnbmVkTWFyZ2luAAAAAAAAAAAABAAAAAxyZW1haW5NYXJnaW4IBQAAAA0kdDAxMjM4MjEyNTA5AAAAAl8xBAAAAAdiYWREZWJ0CAUAAAANJHQwMTIzODIxMjUwOQAAAAJfMgkABRUAAAADBQAAAAxyZW1haW5NYXJnaW4FAAAAB2JhZERlYnQFAAAADmZ1bmRpbmdQYXltZW50AQAAAApzd2FwT3V0cHV0AAAAAgAAAAZfaXNBZGQAAAAQX2Jhc2VBc3NldEFtb3VudAQAAAASX3F1b3RlQXNzZXRSZXNlcnZlCQEAAAAGcXRBc3RSAAAAAAQAAAARX2Jhc2VBc3NldFJlc2VydmUJAQAAAAZic0FzdFIAAAAAAwkAAAAAAAACBQAAABBfYmFzZUFzc2V0QW1vdW50AAAAAAAAAAAACQAAAgAAAAECAAAAGUludmFsaWQgYmFzZSBhc3NldCBhbW91bnQEAAAAAWsJAQAAAARtdWxkAAAAAgUAAAASX3F1b3RlQXNzZXRSZXNlcnZlBQAAABFfYmFzZUFzc2V0UmVzZXJ2ZQQAAAAYYmFzZUFzc2V0UG9vbEFtb3VudEFmdGVyAwUAAAAGX2lzQWRkCQAAZAAAAAIFAAAAEV9iYXNlQXNzZXRSZXNlcnZlBQAAABBfYmFzZUFzc2V0QW1vdW50CQAAZQAAAAIFAAAAEV9iYXNlQXNzZXRSZXNlcnZlBQAAABBfYmFzZUFzc2V0QW1vdW50BAAAAA9xdW90ZUFzc2V0QWZ0ZXIJAQAAAARkaXZkAAAAAgUAAAABawUAAAAYYmFzZUFzc2V0UG9vbEFtb3VudEFmdGVyBAAAAA5xdW90ZUFzc2V0U29sZAkBAAAAA2FicwAAAAEJAABlAAAAAgUAAAAPcXVvdGVBc3NldEFmdGVyBQAAABJfcXVvdGVBc3NldFJlc2VydmUEAAAADSR0MDEzMzQ3MTM1NDAJAQAAAA11cGRhdGVSZXNlcnZlAAAAAwkBAAAAASEAAAABBQAAAAZfaXNBZGQFAAAADnF1b3RlQXNzZXRTb2xkBQAAABBfYmFzZUFzc2V0QW1vdW50BAAAABdxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyMQgFAAAADSR0MDEzMzQ3MTM1NDAAAAACXzEEAAAAFmJhc2VBc3NldFJlc2VydmVBZnRlcjEIBQAAAA0kdDAxMzM0NzEzNTQwAAAAAl8yBAAAABd0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyMQgFAAAADSR0MDEzMzQ3MTM1NDAAAAACXzMEAAAAGGN1bXVsYXRpdmVOb3Rpb25hbEFmdGVyMQgFAAAADSR0MDEzMzQ3MTM1NDAAAAACXzQJAAUZAAAABwUAAAAOcXVvdGVBc3NldFNvbGQFAAAAF3F1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIxBQAAABZiYXNlQXNzZXRSZXNlcnZlQWZ0ZXIxBQAAABd0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyMQUAAAAYY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIxCQAAZQAAAAIJAQAAABV0b3RhbExvbmdQb3NpdGlvblNpemUAAAAAAwUAAAAGX2lzQWRkCQEAAAADYWJzAAAAAQUAAAAQX2Jhc2VBc3NldEFtb3VudAAAAAAAAAAAAAkAAGUAAAACCQEAAAAWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQAAAAADCQEAAAABIQAAAAEFAAAABl9pc0FkZAkBAAAAA2FicwAAAAEFAAAAEF9iYXNlQXNzZXRBbW91bnQAAAAAAAAAAAABAAAAEmdldE9yYWNsZVR3YXBQcmljZQAAAAAEAAAABm9yYWNsZQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEJgAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMFAAAABWtfb3JhAgAAAAAEAAAACHByaWNlS2V5CQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzBQAAAAlrX29yYV9rZXkEAAAACGJsb2NrS2V5CQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzBQAAAA9rX29yYV9ibG9ja19rZXkEAAAACWxhc3RWYWx1ZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAGb3JhY2xlBQAAAAhwcmljZUtleQUAAAAJbGFzdFZhbHVlAQAAAAxnZXRTcG90UHJpY2UAAAAABAAAABJfcXVvdGVBc3NldFJlc2VydmUJAQAAAAZxdEFzdFIAAAAABAAAABFfYmFzZUFzc2V0UmVzZXJ2ZQkBAAAABmJzQXN0UgAAAAAJAQAAAARkaXZkAAAAAgUAAAASX3F1b3RlQXNzZXRSZXNlcnZlBQAAABFfYmFzZUFzc2V0UmVzZXJ2ZQEAAAAWaXNPdmVyRmx1Y3R1YXRpb25MaW1pdAAAAAAEAAAAC29yYWNsZVByaWNlCQEAAAASZ2V0T3JhY2xlVHdhcFByaWNlAAAAAAQAAAAMY3VycmVudFByaWNlCQEAAAAMZ2V0U3BvdFByaWNlAAAAAAkAAGYAAAACCQEAAAAEZGl2ZAAAAAIJAQAAAANhYnMAAAABCQAAZQAAAAIFAAAAC29yYWNsZVByaWNlBQAAAAxjdXJyZW50UHJpY2UFAAAAC29yYWNsZVByaWNlCQEAAAALc3ByZWFkTGltaXQAAAAAAQAAACNnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubAAAAAIAAAAHX3RyYWRlcgAAAAdfb3B0aW9uBAAAAA0kdDAxNTE3MjE1MzAwCQEAAAALZ2V0UG9zaXRpb24AAAABBQAAAAdfdHJhZGVyBAAAAAxwb3NpdGlvblNpemUIBQAAAA0kdDAxNTE3MjE1MzAwAAAAAl8xBAAAAA5wb3NpdGlvbk1hcmdpbggFAAAADSR0MDE1MTcyMTUzMDAAAAACXzIEAAAAFHBvc2l0aW9uT3Blbk5vdGlvbmFsCAUAAAANJHQwMTUxNzIxNTMwMAAAAAJfMwQAAAARcG9zaXRpb25Mc3RVcGRDUEYIBQAAAA0kdDAxNTE3MjE1MzAwAAAAAl80BAAAAA9wb3NpdGlvblNpemVBYnMJAQAAAANhYnMAAAABBQAAAAxwb3NpdGlvblNpemUDCQAAAAAAAAIFAAAAD3Bvc2l0aW9uU2l6ZUFicwAAAAAAAAAAAAkAAAIAAAABAgAAABVJbnZhbGlkIHBvc2l0aW9uIHNpemUEAAAAB2lzU2hvcnQJAABmAAAAAgAAAAAAAAAAAAUAAAAMcG9zaXRpb25TaXplBAAAABBwb3NpdGlvbk5vdGlvbmFsAwkAAAAAAAACBQAAAAdfb3B0aW9uBQAAAA9QTkxfT1BUSU9OX1NQT1QEAAAADSR0MDE1NTQ3MTU2NTQJAQAAAApzd2FwT3V0cHV0AAAAAgkBAAAAASEAAAABBQAAAAdpc1Nob3J0BQAAAA9wb3NpdGlvblNpemVBYnMEAAAAE291dFBvc2l0aW9uTm90aW9uYWwIBQAAAA0kdDAxNTU0NzE1NjU0AAAAAl8xBAAAAAJ4MQgFAAAADSR0MDE1NTQ3MTU2NTQAAAACXzIEAAAAAngyCAUAAAANJHQwMTU1NDcxNTY1NAAAAAJfMwQAAAACeDMIBQAAAA0kdDAxNTU0NzE1NjU0AAAAAl80BQAAABNvdXRQb3NpdGlvbk5vdGlvbmFsCQAAaAAAAAIFAAAAD3Bvc2l0aW9uU2l6ZUFicwkBAAAAEmdldE9yYWNsZVR3YXBQcmljZQAAAAAEAAAADXVucmVhbGl6ZWRQbmwDBQAAAAdpc1Nob3J0CQAAZQAAAAIFAAAAFHBvc2l0aW9uT3Blbk5vdGlvbmFsBQAAABBwb3NpdGlvbk5vdGlvbmFsCQAAZQAAAAIFAAAAEHBvc2l0aW9uTm90aW9uYWwFAAAAFHBvc2l0aW9uT3Blbk5vdGlvbmFsCQAFFAAAAAIFAAAAEHBvc2l0aW9uTm90aW9uYWwFAAAADXVucmVhbGl6ZWRQbmwBAAAAFmdldE1hcmdpblJhdGlvQnlPcHRpb24AAAACAAAAB190cmFkZXIAAAAHX29wdGlvbgQAAAANJHQwMTYxNDkxNjI2MAkBAAAAC2dldFBvc2l0aW9uAAAAAQUAAAAHX3RyYWRlcgQAAAAMcG9zaXRpb25TaXplCAUAAAANJHQwMTYxNDkxNjI2MAAAAAJfMQQAAAAOcG9zaXRpb25NYXJnaW4IBQAAAA0kdDAxNjE0OTE2MjYwAAAAAl8yBAAAAANwb24IBQAAAA0kdDAxNjE0OTE2MjYwAAAAAl8zBAAAABFwb3NpdGlvbkxzdFVwZENQRggFAAAADSR0MDE2MTQ5MTYyNjAAAAACXzQEAAAADSR0MDE2MjY2MTYzNTkJAQAAACNnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubAAAAAIFAAAAB190cmFkZXIFAAAAB19vcHRpb24EAAAAEHBvc2l0aW9uTm90aW9uYWwIBQAAAA0kdDAxNjI2NjE2MzU5AAAAAl8xBAAAAA11bnJlYWxpemVkUG5sCAUAAAANJHQwMTYyNjYxNjM1OQAAAAJfMgQAAAANJHQwMTYzNjQxNjUzMAkBAAAAImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQAAAAEBQAAAAxwb3NpdGlvblNpemUFAAAADnBvc2l0aW9uTWFyZ2luBQAAABFwb3NpdGlvbkxzdFVwZENQRgUAAAANdW5yZWFsaXplZFBubAQAAAAMcmVtYWluTWFyZ2luCAUAAAANJHQwMTYzNjQxNjUzMAAAAAJfMQQAAAAHYmFkRGVidAgFAAAADSR0MDE2MzY0MTY1MzAAAAACXzIJAQAAAARkaXZkAAAAAgkAAGUAAAACBQAAAAxyZW1haW5NYXJnaW4FAAAAB2JhZERlYnQFAAAAEHBvc2l0aW9uTm90aW9uYWwBAAAADmdldE1hcmdpblJhdGlvAAAAAQAAAAdfdHJhZGVyCQEAAAAWZ2V0TWFyZ2luUmF0aW9CeU9wdGlvbgAAAAIFAAAAB190cmFkZXIFAAAAD1BOTF9PUFRJT05fU1BPVAEAAAAVaW50ZXJuYWxDbG9zZVBvc2l0aW9uAAAAAQAAAAdfdHJhZGVyBAAAAA0kdDAxNjgzNjE2OTQ3CQEAAAALZ2V0UG9zaXRpb24AAAABBQAAAAdfdHJhZGVyBAAAAAxwb3NpdGlvblNpemUIBQAAAA0kdDAxNjgzNjE2OTQ3AAAAAl8xBAAAAA5wb3NpdGlvbk1hcmdpbggFAAAADSR0MDE2ODM2MTY5NDcAAAACXzIEAAAAA3BvbggFAAAADSR0MDE2ODM2MTY5NDcAAAACXzMEAAAAEXBvc2l0aW9uTHN0VXBkQ1BGCAUAAAANJHQwMTY4MzYxNjk0NwAAAAJfNAQAAAANJHQwMTY5NTMxNzA0MAkBAAAAI2dldFBvc2l0aW9uTm90aW9uYWxBbmRVbnJlYWxpemVkUG5sAAAAAgUAAAAHX3RyYWRlcgUAAAAPUE5MX09QVElPTl9TUE9UBAAAAAJ4MQgFAAAADSR0MDE2OTUzMTcwNDAAAAACXzEEAAAADXVucmVhbGl6ZWRQbmwIBQAAAA0kdDAxNjk1MzE3MDQwAAAAAl8yBAAAAA0kdDAxNzA0NTE3MjEzCQEAAAAiY2FsY1JlbWFpbk1hcmdpbldpdGhGdW5kaW5nUGF5bWVudAAAAAQFAAAADHBvc2l0aW9uU2l6ZQUAAAAOcG9zaXRpb25NYXJnaW4FAAAAEXBvc2l0aW9uTHN0VXBkQ1BGBQAAAA11bnJlYWxpemVkUG5sBAAAAAxyZW1haW5NYXJnaW4IBQAAAA0kdDAxNzA0NTE3MjEzAAAAAl8xBAAAAAdiYWREZWJ0CAUAAAANJHQwMTcwNDUxNzIxMwAAAAJfMgQAAAAVZXhjaGFuZ2VkUG9zaXRpb25TaXplCQEAAAABLQAAAAEFAAAADHBvc2l0aW9uU2l6ZQQAAAALcmVhbGl6ZWRQbmwFAAAADXVucmVhbGl6ZWRQbmwEAAAADW1hcmdpblRvVmF1bHQJAQAAAAEtAAAAAQUAAAAMcmVtYWluTWFyZ2luBAAAAA0kdDAxNzM0MDE3NjIxCQEAAAAKc3dhcE91dHB1dAAAAAIJAABmAAAAAgUAAAAMcG9zaXRpb25TaXplAAAAAAAAAAAACQEAAAADYWJzAAAAAQUAAAAMcG9zaXRpb25TaXplBAAAABlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50CAUAAAANJHQwMTczNDAxNzYyMQAAAAJfMQQAAAAWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFAAAADSR0MDE3MzQwMTc2MjEAAAACXzIEAAAAFWJhc2VBc3NldFJlc2VydmVBZnRlcggFAAAADSR0MDE3MzQwMTc2MjEAAAACXzMEAAAAFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQAAAA0kdDAxNzM0MDE3NjIxAAAAAl80BAAAABdjdW11bGF0aXZlTm90aW9uYWxBZnRlcggFAAAADSR0MDE3MzQwMTc2MjEAAAACXzUEAAAADnRvdGFsTG9uZ0FmdGVyCAUAAAANJHQwMTczNDAxNzYyMQAAAAJfNgQAAAAPdG90YWxTaG9ydEFmdGVyCAUAAAANJHQwMTczNDAxNzYyMQAAAAJfNwQAAAAZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcgkAAGUAAAACCQEAAAAUb3BlbkludGVyZXN0Tm90aW9uYWwAAAAABQAAAANwb24JAAUeAAAADAUAAAAVZXhjaGFuZ2VkUG9zaXRpb25TaXplBQAAAAdiYWREZWJ0BQAAAAtyZWFsaXplZFBubAUAAAANbWFyZ2luVG9WYXVsdAUAAAAWcXVvdGVBc3NldFJlc2VydmVBZnRlcgUAAAAVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBQAAABZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyBQAAABdjdW11bGF0aXZlTm90aW9uYWxBZnRlcgUAAAAZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcgUAAAAZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAUAAAAOdG90YWxMb25nQWZ0ZXIFAAAAD3RvdGFsU2hvcnRBZnRlcgEAAAAQZ2V0VHdhcFNwb3RQcmljZQAAAAAEAAAACG1pbnV0ZUlkCQAAaQAAAAIJAABpAAAAAggFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAAAAAAAAAAA+gAAAAAAAAAADwEAAAADXN0YXJ0TWludXRlSWQJAABlAAAAAgUAAAAIbWludXRlSWQFAAAADVRXQVBfSU5URVJWQUwEAAAAB2xpc3RTdHIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAANa19sYXN0RGF0YVN0cgIAAAAABAAAAARsaXN0CQAEtQAAAAIFAAAAB2xpc3RTdHICAAAAASwKAQAAAAhmaWx0ZXJGbgAAAAIAAAALYWNj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AAAIbWF4SW5kZXgAAAAAAAAAAAAEAAAAFHN0YXJ0Q3VtdWxhdGl2ZVByaWNlCQAAZAAAAAIFAAAAGHN0YXJ0TGFzdEN1bXVsYXRpdmVQcmljZQkAAGgAAAACCQAAZQAAAAIFAAAADXN0YXJ0TWludXRlSWQFAAAACG1heEluZGV4BQAAAA5zdGFydExhc3RQcmljZQkAAGkAAAACCQAAZQAAAAIFAAAAEm5vd0N1bXVsYXRpdmVQcmljZQUAAAAUc3RhcnRDdW11bGF0aXZlUHJpY2UFAAAADVRXQVBfSU5URVJWQUwBAAAADnVwZGF0ZVNldHRpbmdzAAAABwAAABBfaW5pdE1hcmdpblJhdGlvAAAABF9tbXIAAAAUX2xpcXVpZGF0aW9uRmVlUmF0aW8AAAAOX2Z1bmRpbmdQZXJpb2QAAAAEX2ZlZQAAAAxfc3ByZWFkTGltaXQAAAAPX21heFByaWNlSW1wYWN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABFrX2luaXRNYXJnaW5SYXRpbwUAAAAQX2luaXRNYXJnaW5SYXRpbwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAYa19tYWludGVuYW5jZU1hcmdpblJhdGlvBQAAAARfbW1yCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABVrX2xpcXVpZGF0aW9uRmVlUmF0aW8FAAAAFF9saXF1aWRhdGlvbkZlZVJhdGlvCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA9rX2Z1bmRpbmdQZXJpb2QFAAAADl9mdW5kaW5nUGVyaW9kCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAVrX2ZlZQUAAAAEX2ZlZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANa19zcHJlYWRMaW1pdAUAAAAMX3NwcmVhZExpbWl0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABBrX21heFByaWNlSW1wYWN0BQAAAA9fbWF4UHJpY2VJbXBhY3QFAAAAA25pbAEAAAANdXBkYXRlRnVuZGluZwAAAAUAAAARX25leHRGdW5kaW5nQmxvY2sAAAAkX2xhdGVzdExvbmdDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uAAAAJV9sYXRlc3RTaG9ydEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24AAAAQX2xvbmdGdW5kaW5nUmF0ZQAAABFfc2hvcnRGdW5kaW5nUmF0ZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAASa19uZXh0RnVuZGluZ0Jsb2NrBQAAABFfbmV4dEZ1bmRpbmdCbG9jawkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAla19sYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgUAAAAkX2xhdGVzdExvbmdDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAACZrX2xhdGVzdFNob3J0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgUAAAAlX2xhdGVzdFNob3J0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAARa19sb25nRnVuZGluZ1JhdGUFAAAAEF9sb25nRnVuZGluZ1JhdGUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEmtfc2hvcnRGdW5kaW5nUmF0ZQUAAAARX3Nob3J0RnVuZGluZ1JhdGUFAAAAA25pbAEAAAAOdXBkYXRlUG9zaXRpb24AAAAFAAAACF9hZGRyZXNzAAAABV9zaXplAAAAB19tYXJnaW4AAAANX29wZW5Ob3Rpb25hbAAAACBfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADnRvQ29tcG9zaXRlS2V5AAAAAgUAAAAOa19wb3NpdGlvblNpemUFAAAACF9hZGRyZXNzBQAAAAVfc2l6ZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADnRvQ29tcG9zaXRlS2V5AAAAAgUAAAAQa19wb3NpdGlvbk1hcmdpbgUAAAAIX2FkZHJlc3MFAAAAB19tYXJnaW4JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA50b0NvbXBvc2l0ZUtleQAAAAIFAAAAFmtfcG9zaXRpb25PcGVuTm90aW9uYWwFAAAACF9hZGRyZXNzBQAAAA1fb3Blbk5vdGlvbmFsCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAOdG9Db21wb3NpdGVLZXkAAAACBQAAAC5rX3Bvc2l0aW9uTGFzdFVwZGF0ZWRDdW11bGF0aXZlUHJlbWl1bUZyYWN0aW9uBQAAAAhfYWRkcmVzcwUAAAAgX2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FAAAAA25pbAEAAAAKYXBwZW5kVHdhcAAAAAEAAAAFcHJpY2UEAAAACG1pbnV0ZUlkCQAAaQAAAAIJAABpAAAAAggFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAAAAAAAAAAA+gAAAAAAAAAADwEAAAAEHByZXZpb3VzTWludXRlSWQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAOa19sYXN0TWludXRlSWQAAAAAAAAAAAADCQAAZgAAAAIFAAAAEHByZXZpb3VzTWludXRlSWQFAAAACG1pbnV0ZUlkCQAAAgAAAAECAAAAEVRXQVAgb3V0LW9mLW9yZGVyBAAAAAxsYXN0TWludXRlSWQDCQAAAAAAAAIFAAAAEHByZXZpb3VzTWludXRlSWQAAAAAAAAAAAAFAAAACG1pbnV0ZUlkBQAAABBwcmV2aW91c01pbnV0ZUlkBAAAAAdsaXN0U3RyCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAADWtfbGFzdERhdGFTdHICAAAAAAQAAAAHb2xkTGlzdAkABLUAAAACBQAAAAdsaXN0U3RyAgAAAAEsBAAAAARsaXN0AwkAAGYAAAACCQABkAAAAAEFAAAAB29sZExpc3QFAAAADVRXQVBfSU5URVJWQUwJAARNAAAAAgkABFEAAAACBQAAAAdvbGRMaXN0AAAAAAAAAAAACQABpAAAAAEFAAAACG1pbnV0ZUlkCQAETQAAAAIFAAAAB29sZExpc3QJAAGkAAAAAQUAAAAIbWludXRlSWQEAAAAE3ByZXZDdW11bGF0aXZlUHJpY2UJAQAA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AAAHX3F0QXN0UgAAAAdfYnNBc3RSAAAAF190b3RhbFBvc2l0aW9uU2l6ZUFmdGVyAAAAGF9jdW11bGF0aXZlTm90aW9uYWxBZnRlcgAAABVfb3BlbkludGVyZXN0Tm90aW9uYWwAAAAWX3RvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQAAABdfdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQMJAQAAAAIhPQAAAAIJAABlAAAAAgUAAAAWX3RvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQUAAAAXX3RvdGFsU2hvcnRQb3NpdGlvblNpemUFAAAAF190b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABhJbnZhbGlkIEFNTSBzdGF0ZSBkYXRhOiAJAAGkAAAAAQUAAAAWX3RvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQIAAAAEICsgIAkAAaQAAAABBQAAABdfdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQIAAAAEICE9IAkAAaQAAAABBQAAABdfdG90YWxQb3NpdGlvblNpemVBZnRlcgkABE4AAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABNrX3F1b3RlQXNzZXRSZXNlcnZlBQAAAAdfcXRBc3RSCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJrX2Jhc2VBc3NldFJlc2VydmUFAAAAB19ic0FzdFIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAE2tfdG90YWxQb3NpdGlvblNpemUFAAAAF190b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABRrX2N1bXVsYXRpdmVOb3Rpb25hbAUAAAAYX2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABZrX29wZW5JbnRlcmVzdE5vdGlvbmFsBQAAABVfb3BlbkludGVyZXN0Tm90aW9uYWwJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAF2tfdG90YWxMb25nUG9zaXRpb25TaXplBQAAABZfdG90YWxMb25nUG9zaXRpb25TaXplCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABhrX3RvdGFsU2hvcnRQb3NpdGlvblNpemUFAAAAF190b3RhbFNob3J0UG9zaXRpb25TaXplBQAAAANuaWwJAQAAAAphcHBlbmRUd2FwAAAAAQkBAAAABGRpdmQAAAACBQAAAAdfcXRBc3RSBQAAAAdfYnNBc3RSAQAAAA5kZWxldGVQb3NpdGlvbgAAAAEAAAAIX2FkZHJlc3MJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAADnRvQ29tcG9zaXRlS2V5AAAAAgUAAAAOa19wb3NpdGlvblNpemUFAAAACF9hZGRyZXNzCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAA50b0NvbXBvc2l0ZUtleQAAAAIFAAAAEGtfcG9zaXRpb25NYXJnaW4FAAAACF9hZGRyZXNzCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAA50b0NvbXBvc2l0ZUtleQAAAAIFAAAAFmtfcG9zaXRpb25PcGVuTm90aW9uYWwFAAAACF9hZGRyZXNzCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAA50b0NvbXBvc2l0ZUtleQAAAAIFAAAALmtfcG9zaXRpb25MYXN0VXBkYXRlZEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24FAAAACF9hZGRyZXNzBQAAAANuaWwBAAAACHdpdGhkcmF3AAAAAgAAAAhfYWRkcmVzcwAAAAdfYW1vdW50BAAAAAdiYWxhbmNlCQAD8AAAAAIFAAAABHRoaXMJAQAAAApxdW90ZUFzc2V0AAAAAAMJAABmAAAAAgUAAAAHX2Ftb3VudAUAAAAHYmFsYW5jZQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABNVbmFibGUgdG8gd2l0aGRyYXcgCQABpAAAAAEFAAAAB19hbW91bnQCAAAAFyBmcm9tIGNvbnRyYWN0IGJhbGFuY2UgCQABpAAAAAEFAAAAB2JhbGFuY2UJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAIX2FkZHJl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AAEhAAAAAQkBAAAAE3JlcXVpcmVPcGVuUG9zaXRpb24AAAABCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgYJAQAAAAZwYXVzZWQAAAAACQAAAgAAAAECAAAAI0ludmFsaWQgZGVjcmVhc2VQb3NpdGlvbiBwYXJhbWV0ZXJzBAAAAA0kdDAyNjgwMTI2OTUzCQEAAAALZ2V0UG9zaXRpb24AAAABCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAPb2xkUG9zaXRpb25TaXplCAUAAAANJHQwMjY4MDEyNjk1MwAAAAJfMQQAAAARb2xkUG9zaXRpb25NYXJnaW4IBQAAAA0kdDAyNjgwMTI2OTUzAAAAAl8yBAAAABdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFAAAADSR0MDI2ODAxMjY5NTMAAAACXzMEAAAAFG9sZFBvc2l0aW9uTHN0VXBkQ1BGCAUAAAANJHQwMjY4MDEyNjk1MwAAAAJfNAQAAAAOZXhwYW5kRXhpc3RpbmcDCQAAZgAAAAIFAAAAD29sZFBvc2l0aW9uU2l6ZQAAAAAAAAAAAAkAAAAAAAACBQAAAApfZGlyZWN0aW9uBQAAAAhESVJfTE9ORwkAAAAAAAACBQAAAApfZGlyZWN0aW9uBQAAAAlESVJfU0hPUlQEAAAABWlzQWRkCQAAAAAAAAIFAAAACl9kaXJlY3Rpb24FAAAACERJUl9MT05HBAAAAA0kdDAyNzEzNzMwMTU4AwUAAAAOZXhwYW5kRXhpc3RpbmcJAAACAAAAAQIAAAA1VXNlIGluY3JlYXNlUG9zaXRpb24gdG8gb3BlbiBuZXcgb3IgaW5jcmVhc2UgcG9zaXRpb24EAAAADG9wZW5Ob3Rpb25hbAkBAAAABG11bGQAAAACBQAAAAdfYW1vdW50BQAAAAlfbGV2ZXJhZ2UEAAAADSR0MDI3NjI2Mjc3NDIJAQAAACNnZXRQb3NpdGlvbk5vdGlvbmFsQW5kVW5yZWFsaXplZFBubAAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAA9QTkxfT1BUSU9OX1NQT1QEAAAAE29sZFBvc2l0aW9uTm90aW9uYWwIBQAAAA0kdDAyNzYyNjI3NzQyAAAAAl8xBAAAAA11bnJlYWxpemVkUG5sCAUAAAANJHQwMjc2MjYyNzc0MgAAAAJfMgMJAABmAAAAAgUAAAATb2xkUG9zaXRpb25Ob3Rpb25hbAUAAAAMb3Blbk5vdGlvbmFsBAAAAA0kdDAyNzgwNDI4MDM0CQEAAAAJc3dhcElucHV0AAAAAgUAAAAFaXNBZGQFAAAADG9wZW5Ob3Rpb25hbAQAAAAVZXhjaGFuZ2VkUG9zaXRpb25TaXplCAUAAAANJHQwMjc4MDQyODAzNAAAAAJfMQQAAAAWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFAAAADSR0MDI3ODA0MjgwMzQAAAACXzIEAAAAFWJhc2VBc3NldFJlc2VydmVBZnRlcggFAAAADSR0MDI3ODA0MjgwMzQAAAACXzMEAAAAFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQAAAA0kdDAyNzgwNDI4MDM0AAAAAl80BAAAABdjdW11bGF0aXZlTm90aW9uYWxBZnRlcggFAAAADSR0MDI3ODA0MjgwMzQAAAACXzUEAAAAGGV4Y2hhbmdlZFBvc2l0aW9uU2l6ZUFicwkBAAAAA2FicwAAAAEFAAAAFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQMDCQEAAAACIT0AAAACBQAAABNfbWluQmFzZUFzc2V0QW1vdW50AAAAAAAAAAAACQAAZgAAAAIFAAAAE19taW5CYXNlQXNzZXRBbW91bnQFAAAAGGV4Y2hhbmdlZFBvc2l0aW9uU2l6ZUFicwcJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAlVG9vIGxpdHRsZSBiYXNlIGFzc2V0IGV4Y2hhbmdlZCwgZ290IAkAAaQAAAABBQAAABhleGNoYW5nZWRQb3NpdGlvblNpemVBYnMCAAAACiBleHBlY3RlZCAJAAGkAAAAAQUAAAATX21pbkJhc2VBc3NldEFtb3VudAQAAAALcmVhbGl6ZWRQbmwDCQEAAAACIT0AAAACBQAAAA9vbGRQb3NpdGlvblNpemUAAAAAAAAAAAAJAQAAAARkaXZkAAAAAgkBAAAABG11bGQAAAACBQAAAA11bnJlYWxpemVkUG5sBQAAABhleGNoYW5nZWRQb3NpdGlvblNpemVBYnMFAAAAD29sZFBvc2l0aW9uU2l6ZQAAAAAAAAAAAAQAAAANJHQwMjg1NzQyODgzMQkBAAAAImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQAAAAEBQAAAA9vbGRQb3NpdGlvblNpemUFAAAAEW9sZFBvc2l0aW9uTWFyZ2luBQAAABRvbGRQb3NpdGlvbkxzdFVwZENQRgUAAAALcmVhbGl6ZWRQbmwEAAAADHJlbWFpbk1hcmdpbggFAAAADSR0MDI4NTc0Mjg4MzEAAAACXzEEAAAAB2JhZERlYnQIBQAAAA0kdDAyODU3NDI4ODMxAAAAAl8yBAAAAA5mdW5kaW5nUGF5bWVudAgFAAAADSR0MDI4NTc0Mjg4MzEAAAACXzMEAAAAGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQFAAAADG9wZW5Ob3Rpb25hbAQAAAASdW5yZWFsaXplZFBubEFmdGVyCQAAZQAAAAIFAAAADXVucmVhbGl6ZWRQbmwFAAAAC3JlYWxpemVkUG5sBAAAABJyZW1haW5PcGVuTm90aW9uYWwDCQAAZgAAAAIFAAAAD29sZFBvc2l0aW9uU2l6ZQAAAAAAAAAAAAkAAGUAAAACCQAAZQAAAAIFAAAAE29sZFBvc2l0aW9uTm90aW9uYWwFAAAAGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQFAAAAEnVucmVhbGl6ZWRQbmxBZnRlcgkAAGUAAAACCQAAZAAAAAIFAAAAEnVucmVhbGl6ZWRQbmxBZnRlcgUAAAATb2xkUG9zaXRpb25Ob3Rpb25hbAUAAAAZZXhjaGFuZ2VkUXVvdGVBc3NldEFtb3VudAQAAAAPbmV3UG9zaXRpb25TaXplCQAAZAAAAAIFAAAAD29sZFBvc2l0aW9uU2l6ZQUAAAAVZXhjaGFuZ2VkUG9zaXRpb25TaXplCQAFHQAAAAsFAAAAD25ld1Bvc2l0aW9uU2l6ZQUAAAAMcmVtYWluTWFyZ2luCQEAAAADYWJzAAAAAQUAAAAScmVtYWluT3Blbk5vdGlvbmFsCQEAAAAfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgAAAAEFAAAAD25ld1Bvc2l0aW9uU2l6ZQUAAAAVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBQAAABZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBQAAABZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyBQAAABdjdW11bGF0aXZlTm90aW9uYWxBZnRlcgkAAGUAAAACCQEAAAAUb3BlbkludGVyZXN0Tm90aW9uYWwAAAAABQAAAAxvcGVuTm90aW9uYWwJAABlAAAAAgkBAAAAFXRvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQAAAAADCQAAZgAAAAIFAAAAD25ld1Bvc2l0aW9uU2l6ZQAAAAAAAAAAAAkBAAAAA2FicwAAAAEFAAAAFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQAAAAAAAAAAAAkAAGUAAAACCQEAAAAWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQAAAAADCQAAZgAAAAIAAAAAAAAAAAAFAAAAD25ld1Bvc2l0aW9uU2l6ZQkBAAAAA2FicwAAAAEFAAAAFWV4Y2hhbmdlZFBvc2l0aW9uU2l6ZQAAAAAAAAAAAAkAAAIAAAABAgAAABRDbG9zZSBwb3NpdGlvbiBmaXJzdAQAAAAPbmV3UG9zaXRpb25TaXplCAUAAAANJHQwMjcxMzczMDE1OAAAAAJfMQQAAAAXbmV3UG9zaXRpb25SZW1haW5NYXJnaW4IBQAAAA0kdDAyNzEzNzMwMTU4AAAAAl8yBAAAABduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFAAAADSR0MDI3MTM3MzAxNTgAAAACXzMEAAAAFG5ld1Bvc2l0aW9uTGF0ZXN0Q1BGCAUAAAANJHQwMjcxMzczMDE1OAAAAAJfNAQAAAAVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCAUAAAANJHQwMjcxMzczMDE1OAAAAAJfNQQAAAAWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFAAAADSR0MDI3MTM3MzAxNTgAAAACXzYEAAAAFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQAAAA0kdDAyNzEzNzMwMTU4AAAAAl83BAAAABdjdW11bGF0aXZlTm90aW9uYWxBZnRlcggFAAAADSR0MDI3MTM3MzAxNTgAAAACXzgEAAAAGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIIBQAAAA0kdDAyNzEzNzMwMTU4AAAAAl85BAAAAA50b3RhbExvbmdBZnRlcggFAAAADSR0MDI3MTM3MzAxNTgAAAADXzEwBAAAAA90b3RhbFNob3J0QWZ0ZXIIBQAAAA0kdDAyNzEzNzMwMTU4AAAAA18xMQkABE4AAAACCQEAAAAOdXBkYXRlUG9zaXRpb24AAAAFCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAPbmV3UG9zaXRpb25TaXplBQAAABduZXdQb3NpdGlvblJlbWFpbk1hcmdpbgUAAAAXbmV3UG9zaXRpb25PcGVuTm90aW9uYWwFAAAAFG5ld1Bvc2l0aW9uTGF0ZXN0Q1BGCQEAAAAJdXBkYXRlQW1tAAAABwUAAAAWcXVvdGVBc3NldFJlc2VydmVBZnRlcgUAAAAVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBQAAABZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyBQAAABdjdW11bGF0aXZlTm90aW9uYWxBZnRlcgUAAAAZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcgUAAAAOdG90YWxMb25nQWZ0ZXIFAAAAD3RvdGFsU2hvcnRBZnRlcgAAAAFpAQAAABBpbmNyZWFzZVBvc2l0aW9uAAAAAwAAAApfZGlyZWN0aW9uAAAACV9sZXZlcmFnZQAAABNfbWluQmFzZUFzc2V0QW1vdW50BAAAAApfcmF3QW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQDAwMDAwMDAwkBAAAAAiE9AAAAAgUAAAAKX2RpcmVjdGlvbgUAAAAIRElSX0xPTkcJAQAAAAIhPQAAAAIFAAAACl9kaXJlY3Rpb24FAAAACURJUl9TSE9SVAcGCQAAZwAAAAIAAAAAAAAAAAAFAAAACl9yYXdBbW91bnQGAwkAAGYAAAACCQAAaAAAAAIAAAAAAAAAAAEFAAAADERFQ0lNQUxfVU5JVAUAAAAJX2xldmVyYWdlBgkAAGYAAAACBQAAAAlfbGV2ZXJhZ2UJAABoAAAAAgAAAAAAAAAAAwUAAAAMREVDSU1BTF9VTklUBgkBAAAAASEAAAABCQEAAAALaW5pdGlhbGl6ZWQAAAAABgkBAAAAAiE9AAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAkBAAAACnF1b3RlQXNzZXQAAAAABgkBAAAAASEAAAABCQEAAAAWcmVxdWlyZU1vcmVNYXJnaW5SYXRpbwAAAAMJAQAAAARkaXZkAAAAAgUAAAAMREVDSU1BTF9VTklUBQAAAAlfbGV2ZXJhZ2UJAQAAAA9pbml0TWFyZ2luUmF0aW8AAAAABgYJAQAAAAZwYXVzZWQAAAAACQAAAgAAAAECAAAAI0ludmFsaWQgaW5jcmVhc2VQb3NpdGlvbiBwYXJhbWV0ZXJzBAAAAAlmZWVBbW91bnQJAQAAAARtdWxkAAAAAgUAAAAKX3Jhd0Ftb3VudAkBAAAAA2ZlZQAAAAAEAAAAB19hbW91bnQJAABlAAAAAgUAAAAKX3Jhd0Ftb3VudAUAAAAJZmVlQW1vdW50BAAAAA0kdDAzMTE5NDMxMzE4CQEAAAALZ2V0UG9zaXRpb24AAAABCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAPb2xkUG9zaXRpb25TaXplCAUAAAANJHQwMzExOTQzMTMxOAAAAAJfMQQAAAARb2xkUG9zaXRpb25NYXJnaW4IBQAAAA0kdDAzMTE5NDMxMzE4AAAAAl8yBAAAABdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFAAAADSR0MDMxMTk0MzEzMTgAAAACXzMEAAAADWlzTmV3UG9zaXRpb24JAAAAAAAAAgUAAAAPb2xkUG9zaXRpb25TaXplAAAAAAAAAAAABAAAAA9pc1NhbWVEaXJlY3Rpb24DCQAAZgAAAAIFAAAAD29sZFBvc2l0aW9uU2l6ZQAAAAAAAAAAAAkAAAAAAAACBQAAAApfZGlyZWN0aW9uBQAAAAhESVJfTE9ORwkAAAAAAAACBQAAAApfZGlyZWN0aW9uBQAAAAlESVJfU0hPUlQEAAAADmV4cGFuZEV4aXN0aW5nAwkBAAAAASEAAAABBQAAAA1pc05ld1Bvc2l0aW9uBQAAAA9pc1NhbWVEaXJlY3Rpb24HBAAAAAVpc0FkZAkAAAAAAAACBQAAAApfZGlyZWN0aW9uBQAAAAhESVJfTE9ORwQAAAANJHQwMzE2MDczNDE2MAMDBQAAAA1pc05ld1Bvc2l0aW9uBgUAAAAOZXhwYW5kRXhpc3RpbmcEAAAADG9wZW5Ob3Rpb25hbAkBAAAABG11bGQAAAACBQAAAAdfYW1vdW50BQAAAAlfbGV2ZXJhZ2UEAAAADSR0MDMyMDMxMzIyMzcJAQAAAAlzd2FwSW5wdXQAAAACBQAAAAVpc0FkZAUAAAAMb3Blbk5vdGlvbmFsBAAAABVhbW91bnRCYXNlQXNzZXRCb3VnaHQIBQAAAA0kdDAzMjAzMTMyMjM3AAAAAl8xBAAAABZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyCAUAAAANJHQwMzIwMzEzMjIzNwAAAAJfMgQAAAAVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCAUAAAANJHQwMzIwMzEzMjIzNwAAAAJfMwQAAAAWdG90YWxQb3NpdGlvblNpemVBZnRlcggFAAAADSR0MDMyMDMxMzIyMzcAAAACXzQEAAAAF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyCAUAAAANJHQwMzIwMzEzMjIzNwAAAAJfNQMDCQEAAAACIT0AAAACBQAAABNfbWluQmFzZUFzc2V0QW1vdW50AAAAAAAAAAAACQAAZgAAAAIFAAAAE19taW5CYXNlQXNzZXRBbW91bnQJAQAAAANhYnMAAAABBQAAABVhbW91bnRCYXNlQXNzZXRCb3VnaHQHCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADUxpbWl0IGVycm9yOiAJAAGkAAAAAQkBAAAAA2FicwAAAAEFAAAAFWFtb3VudEJhc2VBc3NldEJvdWdodAIAAAADIDwgCQABpAAAAAEFAAAAE19taW5CYXNlQXNzZXRBbW91bnQEAAAAD25ld1Bvc2l0aW9uU2l6ZQkAAGQAAAACBQAAAA9vbGRQb3NpdGlvblNpemUFAAAAFWFtb3VudEJhc2VBc3NldEJvdWdodAQAAAARcG9zaXRpb25Mc3RVcGRDUEYDBQAAAA1pc05ld1Bvc2l0aW9uCQEAAAAfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgAAAAEFAAAAD25ld1Bvc2l0aW9uU2l6ZQgJAQAAAAtnZXRQb3NpdGlvbgAAAAEJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyAAAAAl80BAAAABlpbmNyZWFzZU1hcmdpblJlcXVpcmVtZW50CQEAAAAEZGl2ZAAAAAIFAAAADG9wZW5Ob3Rpb25hbAUAAAAJX2xldmVyYWdlBAAAAA0kdDAzMjc4NTMzMDIxCQEAAAAiY2FsY1JlbWFpbk1hcmdpbldpdGhGdW5kaW5nUGF5bWVudAAAAAQFAAAAD29sZFBvc2l0aW9uU2l6ZQUAAAARb2xkUG9zaXRpb25NYXJnaW4FAAAAEXBvc2l0aW9uTHN0VXBkQ1BGBQAAABlpbmNyZWFzZU1hcmdpblJlcXVpcmVtZW50BAAAAAxyZW1haW5NYXJnaW4IBQAAAA0kdDAzMjc4NTMzMDIxAAAAAl8xBAAAAAJ4MQgFAAAADSR0MDMyNzg1MzMwMjEAAAACXzIEAAAAAngyCAUAAAANJHQwMzI3ODUzMzAyMQAAAAJfMwkABR0AAAALBQAAAA9uZXdQb3NpdGlvblNpemUFAAAADHJlbWFpbk1hcmdpbgkAAGQAAAACBQAAABdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAUAAAAMb3Blbk5vdGlvbmFsCQEAAAAfbGF0ZXN0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgAAAAEFAAAAD25ld1Bvc2l0aW9uU2l6ZQUAAAAVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBQAAABZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBQAAABZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyBQAAABdjdW11bGF0aXZlTm90aW9uYWxBZnRlcgkAAGQAAAACCQEAAAAUb3BlbkludGVyZXN0Tm90aW9uYWwAAAAABQAAAAxvcGVuTm90aW9uYWwJAABkAAAAAgkBAAAAFXRvdGFsTG9uZ1Bvc2l0aW9uU2l6ZQAAAAADCQAAZgAAAAIFAAAAD25ld1Bvc2l0aW9uU2l6ZQAAAAAAAAAAAAkBAAAAA2FicwAAAAEFAAAAFWFtb3VudEJhc2VBc3NldEJvdWdodAAAAAAAAAAAAAkAAGQAAAACCQEAAAAWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQAAAAADCQAAZgAAAAIAAAAAAAAAAAAFAAAAD25ld1Bvc2l0aW9uU2l6ZQkBAAAAA2FicwAAAAEFAAAAFWFtb3VudEJhc2VBc3NldEJvdWdodAAAAAAAAAAAAAQAAAAMb3Blbk5vdGlvbmFsCQEAAAAEbXVsZAAAAAIFAAAAB19hbW91bnQFAAAACV9sZXZlcmFnZQQAAAANJHQwMzM4NTMzMzk2OQkBAAAAI2dldFBvc2l0aW9uTm90aW9uYWxBbmRVbnJlYWxpemVkUG5sAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAD1BOTF9PUFRJT05fU1BPVAQAAAATb2xkUG9zaXRpb25Ob3Rpb25hbAgFAAAADSR0MDMzODUzMzM5NjkAAAACXzEEAAAADXVucmVhbGl6ZWRQbmwIBQAAAA0kdDAzMzg1MzMzOTY5AAAAAl8yAwkAAGYAAAACBQAAABNvbGRQb3NpdGlvbk5vdGlvbmFsBQAAAAxvcGVuTm90aW9uYWwJAAACAAAAAQIAAAAuVXNlIGRlY3JlYXNlUG9zaXRpb24gdG8gZGVjcmVhc2UgcG9zaXRpb24gc2l6ZQkAAAIAAAABAgAAABRDbG9zZSBwb3NpdGlvbiBmaXJzdAQAAAAPbmV3UG9zaXRpb25TaXplCAUAAAANJHQwMzE2MDczNDE2MAAAAAJfMQQAAAAXbmV3UG9zaXRpb25SZW1haW5NYXJnaW4IBQAAAA0kdDAzMTYwNzM0MTYwAAAAAl8yBAAAABduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAgFAAAADSR0MDMxNjA3MzQxNjAAAAACXzMEAAAAFG5ld1Bvc2l0aW9uTGF0ZXN0Q1BGCAUAAAANJHQwMzE2MDczNDE2MAAAAAJfNAQAAAAVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCAUAAAANJHQwMzE2MDczNDE2MAAAAAJfNQQAAAAWcXVvdGVBc3NldFJlc2VydmVBZnRlcggFAAAADSR0MDMxNjA3MzQxNjAAAAACXzYEAAAAFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIIBQAAAA0kdDAzMTYwNzM0MTYwAAAAAl83BAAAABdjdW11bGF0aXZlTm90aW9uYWxBZnRlcggFAAAADSR0MDMxNjA3MzQxNjAAAAACXzgEAAAAGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIIBQAAAA0kdDAzMTYwNzM0MTYwAAAAAl85BAAAAA50b3RhbExvbmdBZnRlcggFAAAADSR0MDMxNjA3MzQxNjAAAAADXzEwBAAAAA90b3RhbFNob3J0QWZ0ZXIIBQAAAA0kdDAzMTYwNzM0MTYwAAAAA18xMQQAAAAMZmVlVG9TdGFrZXJzCQAAaQAAAAIFAAAACWZlZUFtb3VudAAAAAAAAAAAAgQAAAAOZmVlVG9JbnN1cmFuY2UJAABlAAAAAgUAAAAJZmVlQW1vdW50BQAAAAxmZWVUb1N0YWtlcnMEAAAABXN0YWtlCQAD/AAAAAQJAQAAABFxdW90ZUFzc2V0U3Rha2luZwAAAAACAAAADmxvY2tOZXV0cmlub1NQCQAETAAAAAIJAAQlAAAAAQkBAAAADnN0YWtpbmdBZGRyZXNzAAAAAAkABEwAAAACBQAAAAhBTExfRkVFUwUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACCQEAAAAKcXVvdGVBc3NldAAAAAAFAAAAB19hbW91bnQFAAAAA25pbAMJAAAAAAAAAgUAAAAFc3Rha2UFAAAABXN0YWtlBAAAABBkZXBvc2l0SW5zdXJhbmNlCQAD/AAAAAQJAQAAABBpbnN1cmFuY2VBZGRyZXNzAAAAAAIAAAAHZGVwb3NpdAUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACCQEAAAAKcXVvdGVBc3NldAAAAAAFAAAADmZlZVRvSW5zdXJhbmNlBQAAAANuaWwDCQAAAAAAAAIFAAAAEGRlcG9zaXRJbnN1cmFuY2UFAAAAEGRlcG9zaXRJbnN1cmFuY2UJAAROAAAAAgkABE4AAAACCQAETgAAAAIJAQAAAA51cGRhdGVQb3NpdGlvbgAAAAUJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAA9uZXdQb3NpdGlvblNpemUFAAAAF25ld1Bvc2l0aW9uUmVtYWluTWFyZ2luBQAAABduZXdQb3NpdGlvbk9wZW5Ob3Rpb25hbAUAAAAUbmV3UG9zaXRpb25MYXRlc3RDUEYJAQAAAAl1cGRhdGVBbW0AAAAHBQAAABZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyBQAAABViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIFAAAAFnRvdGFsUG9zaXRpb25TaXplQWZ0ZXIFAAAAF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyBQAAABlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyBQAAAA50b3RhbExvbmdBZnRlcgUAAAAPdG90YWxTaG9ydEFmdGVyCQEAAAALdHJhbnNmZXJGZWUAAAABBQAAAAxmZWVUb1N0YWtlcnMJAQAAAA11cGRhdGVCYWxhbmNlAAAAAQkAAGQAAAACCQEAAAAIY2JhbGFuY2UAAAAABQAAAAdfYW1vdW50CQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAJYWRkTWFyZ2luAAAAAAQAAAAKX3Jhd0Ftb3VudAgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50AwMDAwkBAAAAAiE9AAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAkBAAAACnF1b3RlQXNzZXQAAAAABgkBAAAAASEAAAABCQEAAAATcmVxdWlyZU9wZW5Qb3NpdGlvbgAAAAEJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBgkBAAAAASEAAAABCQEAAAALaW5pdGlhbGl6ZWQAAAAABgkBAAAABnBhdXNlZAAAAAAJAAACAAAAAQIAAAAcSW52YWxpZCBhZGRNYXJnaW4gcGFyYW1ldGVycwQAAAAJZmVlQW1vdW50CQEAAAAEbXVsZAAAAAIFAAAACl9yYXdBbW91bnQJAQAAAANmZWUAAAAABAAAAAdfYW1vdW50CQAAZQAAAAIFAAAACl9yYXdBbW91bnQFAAAACWZlZUFtb3VudAQAAAANJHQwMzU0MzYzNTU4OAkBAAAAC2dldFBvc2l0aW9uAAAAAQkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAD29sZFBvc2l0aW9uU2l6ZQgFAAAADSR0MDM1NDM2MzU1ODgAAAACXzEEAAAAEW9sZFBvc2l0aW9uTWFyZ2luCAUAAAANJHQwMzU0MzYzNTU4OAAAAAJfMgQAAAAXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwIBQAAAA0kdDAzNTQzNjM1NTg4AAAAAl8zBAAAABRvbGRQb3NpdGlvbkxzdFVwZENQRggFAAAADSR0MDM1NDM2MzU1ODgAAAACXzQEAAAADGZlZVRvU3Rha2VycwkAAGkAAAACBQAAAAlmZWVBbW91bnQAAAAAAAAAAAIEAAAADmZlZVRvSW5zdXJhbmNlCQAAZQAAAAIFAAAACWZlZUFtb3VudAUAAAAMZmVlVG9TdGFrZXJzBAAAAAVzdGFrZQkAA/wAAAAECQEAAAARcXVvdGVBc3NldFN0YWtpbmcAAAAAAgAAAA5sb2NrTmV1dHJpbm9TUAkABEwAAAACCQAEJQAAAAEJAQAAAA5zdGFraW5nQWRkcmVzcwAAAAAJAARMAAAAAgUAAAAIQUxMX0ZFRVMFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgkBAAAACnF1b3RlQXNzZXQAAAAABQAAAAdfYW1vdW50BQAAAANuaWwDCQAAAAAAAAIFAAAABXN0YWtlBQAAAAVzdGFrZQQAAAAQZGVwb3NpdEluc3VyYW5jZQkAA/wAAAAECQEAAAAQaW5zdXJhbmNlQWRkcmVzcwAAAAACAAAAB2RlcG9zaXQFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgkBAAAACnF1b3RlQXNzZXQAAAAABQAAAA5mZWVUb0luc3VyYW5jZQUAAAADbmlsAwkAAAAAAAACBQAAABBkZXBvc2l0SW5zdXJhbmNlBQAAABBkZXBvc2l0SW5zdXJhbmNlCQAETgAAAAIJAAROAAAAAgkBAAAADnVwZGF0ZVBvc2l0aW9uAAAABQkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAD29sZFBvc2l0aW9uU2l6ZQkAAGQAAAACBQAAABFvbGRQb3NpdGlvbk1hcmdpbgUAAAAHX2Ftb3VudAUAAAAXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwFAAAAFG9sZFBvc2l0aW9uTHN0VXBkQ1BGCQEAAAALdHJhbnNmZXJGZWUAAAABBQAAAAxmZWVUb1N0YWtlcnMJAQAAAA11cGRhdGVCYWxhbmNlAAAAAQkAAGQAAAACCQEAAAAIY2JhbGFuY2UAAAAABQAAAAdfYW1vdW50CQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAMcmVtb3ZlTWFyZ2luAAAAAQAAAAdfYW1vdW50AwMDAwkAAGcAAAACAAAAAAAAAAAABQAAAAdfYW1vdW50BgkBAAAAASEAAAABCQEAAAATcmVxdWlyZU9wZW5Qb3NpdGlvbgAAAAEJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBgkBAAAAASEAAAABCQEAAAALaW5pdGlhbGl6ZWQAAAAABgkBAAAABnBhdXNlZAAAAAAJAAACAAAAAQIAAAAfSW52YWxpZCByZW1vdmVNYXJnaW4gcGFyYW1ldGVycwQAAAANJHQwMzY1MDgzNjY2MAkBAAAAC2dldFBvc2l0aW9uAAAAAQkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAD29sZFBvc2l0aW9uU2l6ZQgFAAAADSR0MDM2NTA4MzY2NjAAAAACXzEEAAAAEW9sZFBvc2l0aW9uTWFyZ2luCAUAAAANJHQwMzY1MDgzNjY2MAAAAAJfMgQAAAAXb2xkUG9zaXRpb25PcGVuTm90aW9uYWwIBQAAAA0kdDAzNjUwODM2NjYwAAAAAl8zBAAAABRvbGRQb3NpdGlvbkxzdFVwZENQRggFAAAADSR0MDM2NTA4MzY2NjAAAAACXzQEAAAAC21hcmdpbkRlbHRhCQEAAAABLQAAAAEFAAAAB19hbW91bnQEAAAADSR0MDM2Njk3MzY4NzYJAQAAACJjYWxjUmVtYWluTWFyZ2luV2l0aEZ1bmRpbmdQYXltZW50AAAABAUAAAAPb2xkUG9zaXRpb25TaXplBQAAABFvbGRQb3NpdGlvbk1hcmdpbgUAAAAUb2xkUG9zaXRpb25Mc3RVcGRDUEYFAAAAC21hcmdpbkRlbHRhBAAAAAxyZW1haW5NYXJnaW4IBQAAAA0kdDAzNjY5NzM2ODc2AAAAAl8xBAAAAAdiYWREZWJ0CAUAAAANJHQwMzY2OTczNjg3NgAAAAJfMgMJAQAAAAIhPQAAAAIFAAAAB2JhZERlYnQAAAAAAAAAAAAJAAACAAAAAQIAAAAbSW52YWxpZCBhZGRlZCBtYXJnaW4gYW1vdW50BAAAAAd1bnN0YWtlCQAD/AAAAAQJAQAAABFxdW90ZUFzc2V0U3Rha2luZwAAAAACAAAADnVubG9ja05ldXRyaW5vCQAETAAAAAIFAAAAB19hbW91bnQJAARMAAAAAgkAAlgAAAABCQEAAAAKcXVvdGVBc3NldAAAAAAFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAAd1bnN0YWtlBQAAAAd1bnN0YWtlCQAETgAAAAIJAAROAAAAAgkBAAAADnVwZGF0ZVBvc2l0aW9uAAAABQkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAD29sZFBvc2l0aW9uU2l6ZQUAAAAMcmVtYWluTWFyZ2luBQAAABdvbGRQb3NpdGlvbk9wZW5Ob3Rpb25hbAkBAAAAH2xhdGVzdEN1bXVsYXRpdmVQcmVtaXVtRnJhY3Rpb24AAAABBQAAAA9vbGRQb3NpdGlvblNpemUJAQAAAAh3aXRoZHJhdwAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAHX2Ftb3VudAkBAAAADXVwZGF0ZUJhbGFuY2UAAAABCQAAZQAAAAIJAQAAAAhjYmFsYW5jZQAAAAAFAAAAB19hbW91bnQJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAADWNsb3NlUG9zaXRpb24AAAAAAwMDCQEAAAABIQAAAAEJAQAAABNyZXF1aXJlT3BlblBvc2l0aW9uAAAAAQkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIGCQEAAAABIQAAAAEJAQAAAAtpbml0aWFsaXplZAAAAAAGCQEAAAAGcGF1c2VkAAAAAAkAAAIAAAABAgAAACBJbnZhbGlkIGNsb3NlUG9zaXRpb24gcGFyYW1ldGVycwQAAAANJHQwMzc2MzYzODAyMAkBAAAAFWludGVybmFsQ2xvc2VQb3NpdGlvbgAAAAEJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAAJ4MQgFAAAADSR0MDM3NjM2MzgwMjAAAAACXzEEAAAAD3Bvc2l0aW9uQmFkRGVidAgFAAAADSR0MDM3NjM2MzgwMjAAAAACXzIEAAAAC3JlYWxpemVkUG5sCAUAAAANJHQwMzc2MzYzODAyMAAAAAJfMwQAAAANbWFyZ2luVG9WYXVsdAgFAAAADSR0MDM3NjM2MzgwMjAAAAACXzQEAAAAFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIIBQAAAA0kdDAzNzYzNjM4MDIwAAAAAl81BAAAABViYXNlQXNzZXRSZXNlcnZlQWZ0ZXIIBQAAAA0kdDAzNzYzNjM4MDIwAAAAAl82BAAAABZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyCAUAAAANJHQwMzc2MzYzODAyMAAAAAJfNwQAAAAXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIIBQAAAA0kdDAzNzYzNjM4MDIwAAAAAl84BAAAABlvcGVuSW50ZXJlc3ROb3Rpb25hbEFmdGVyCAUAAAANJHQwMzc2MzYzODAyMAAAAAJfOQQAAAACeDIIBQAAAA0kdDAzNzYzNjM4MDIwAAAAA18xMAQAAAAOdG90YWxMb25nQWZ0ZXIIBQAAAA0kdDAzNzYzNjM4MDIwAAAAA18xMQQAAAAPdG90YWxTaG9ydEFmdGVyCAUAAAANJHQwMzc2MzYzODAyMAAAAANfMTIDCQAAZgAAAAIFAAAAD3Bvc2l0aW9uQmFkRGVidAAAAAAAAAAAAAkAAAIAAAABAgAAACZVbmFibGUgdG8gY2xvc2UgcG9zaXRpb24gd2l0aCBiYWQgZGVidAQAAAAOd2l0aGRyYXdBbW91bnQJAQAAAANhYnMAAAABBQAAAA1tYXJnaW5Ub1ZhdWx0BAAAAAphbW1CYWxhbmNlCQAAZQAAAAIJAQAAAAhjYmFsYW5jZQAAAAAFAAAADndpdGhkcmF3QW1vdW50BAAAAA0kdDAzODIyOTM4MzcxAwkAAGYAAAACAAAAAAAAAAAABQAAAAphbW1CYWxhbmNlCQAFFAAAAAIAAAAAAAAAAAAJAQAAAANhYnMAAAABBQAAAAphbW1CYWxhbmNlCQAFFAAAAAIFAAAACmFtbUJhbGFuY2UAAAAAAAAAAAAEAAAADWFtbU5ld0JhbGFuY2UIBQAAAA0kdDAzODIyOTM4MzcxAAAAAl8xBAAAABBnZXRGcm9tSW5zdXJhbmNlCAUAAAANJHQwMzgyMjkzODM3MQAAAAJfMgQAAAABeAMJAABmAAAAAgUAAAAQZ2V0RnJvbUluc3VyYW5jZQAAAAAAAAAAAAQAAAARd2l0aGRyYXdJbnN1cmFuY2UJAAP8AAAABAkBAAAAEGluc3VyYW5jZUFkZHJlc3MAAAAAAgAAAAh3aXRoZHJhdwkABEwAAAACBQAAABBnZXRGcm9tSW5zdXJhbmNlBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAARd2l0aGRyYXdJbnN1cmFuY2UFAAAAEXdpdGhkcmF3SW5zdXJhbmNlBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQAAAANuaWwDCQAAAAAAAAIFAAAAAXgFAAAAAXgEAAAAB3Vuc3Rha2UJAAP8AAAABAkBAAAAEXF1b3RlQXNzZXRTdGFraW5nAAAAAAIAAAAOdW5sb2NrTmV1dHJpbm8JAARMAAAAAgkAAGUAAAACBQAAAA53aXRoZHJhd0Ftb3VudAUAAAAQZ2V0RnJvbUluc3VyYW5jZQkABEwAAAACCQACWAAAAAEJAQAAAApxdW90ZUFzc2V0AAAAAAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAB3Vuc3Rha2UFAAAAB3Vuc3Rha2UJAAROAAAAAgkABE4AAAACCQAETgAAAAIJAQAAAA5kZWxldGVQb3NpdGlvbgAAAAEJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQEAAAAJdXBkYXRlQW1tAAAABwUAAAAWcXVvdGVBc3NldFJlc2VydmVBZnRlcgUAAAAVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyBQAAABZ0b3RhbFBvc2l0aW9uU2l6ZUFmdGVyBQAAABdjdW11bGF0aXZlTm90aW9uYWxBZnRlcgUAAAAZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcgUAAAAOdG90YWxMb25nQWZ0ZXIFAAAAD3RvdGFsU2hvcnRBZnRlcgkBAAAACHdpdGhkcmF3AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAA53aXRoZHJhd0Ftb3VudAkBAAAADXVwZGF0ZUJhbGFuY2UAAAABBQAAAA1hbW1OZXdCYWxhbmNlCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAJbGlxdWlkYXRlAAAAAQAAAAdfdHJhZGVyBAAAAAttYXJnaW5SYXRpbwMJAQAAABZpc092ZXJGbHVjdHVhdGlvbkxpbWl0AAAAAAkBAAAAFmdldE1hcmdpblJhdGlvQnlPcHRpb24AAAACBQAAAAdfdHJhZGVyBQAAABFQTkxfT1BUSU9OX09SQUNMRQkBAAAAFmdldE1hcmdpblJhdGlvQnlPcHRpb24AAAACBQAAAAdfdHJhZGVyBQAAAA9QTkxfT1BUSU9OX1NQT1QDAwMDCQEAAAABIQAAAAEJAQAAABZyZXF1aXJlTW9yZU1hcmdpblJhdGlvAAAAAwUAAAALbWFyZ2luUmF0aW8JAQAAABZtYWludGVuYW5jZU1hcmdpblJhdGlvAAAAAAcGCQEAAAABIQAAAAEJAQAAABNyZXF1aXJlT3BlblBvc2l0aW9uAAAAAQUAAAAHX3RyYWRlcgYJAQAAAAEhAAAAAQkBAAAAC2luaXRpYWxpemVkAAAAAAYJAQAAAAZwYXVzZWQAAAAACQAAAgAAAAECAAAAE1VuYWJsZSB0byBsaXF1aWRhdGUEAAAADSR0MDM5ODEwNDAyMzcJAQAAABVpbnRlcm5hbENsb3NlUG9zaXRpb24AAAABBQAAAAdfdHJhZGVyBAAAAAJ4MQgFAAAADSR0MDM5ODEwNDAyMzcAAAACXzEEAAAAB2JhZERlYnQIBQAAAA0kdDAzOTgxMDQwMjM3AAAAAl8yBAAAAAJ4MggFAAAADSR0MDM5ODEwNDAyMzcAAAACXzMEAAAADW1hcmdpblRvVmF1bHQIBQAAAA0kdDAzOTgxMDQwMjM3AAAAAl80BAAAABZxdW90ZUFzc2V0UmVzZXJ2ZUFmdGVyCAUAAAANJHQwMzk4MTA0MDIzNwAAAAJfNQQAAAAVYmFzZUFzc2V0UmVzZXJ2ZUFmdGVyCAUAAAANJHQwMzk4MTA0MDIzNwAAAAJfNgQAAAAWdG90YWxQb3NpdGlvblNpemVBZnRlcggFAAAADSR0MDM5ODEwNDAyMzcAAAACXzcEAAAAF2N1bXVsYXRpdmVOb3Rpb25hbEFmdGVyCAUAAAANJHQwMzk4MTA0MDIzNwAAAAJfOAQAAAAZb3BlbkludGVyZXN0Tm90aW9uYWxBZnRlcggFAAAADSR0MDM5ODEwNDAyMzcAAAACXzkEAAAAGWV4Y2hhbmdlZFF1b3RlQXNzZXRBbW91bnQIBQAAAA0kdDAzOTgxMDQwMjM3AAAAA18xMAQAAAAOdG90YWxMb25nQWZ0ZXIIBQAAAA0kdDAzOTgxMDQwMjM3AAAAA18xMQQAAAAPdG90YWxTaG9ydEFmdGVyCAUAAAANJHQwMzk4MTA0MDIzNwAAAANfMTIEAAAAEmxpcXVpZGF0aW9uUGVuYWx0eQkBAAAABG11bGQAAAACBQAAABlleGNoYW5nZWRRdW90ZUFzc2V0QW1vdW50CQEAAAATbGlxdWlkYXRpb25GZWVSYXRpbwAAAAAEAAAAD2ZlZVRvTGlxdWlkYXRvcgkAAGkAAAACBQAAABJsaXF1aWRhdGlvblBlbmFsdHkAAAAAAAAAAAIEAAAADmZlZVRvSW5zdXJhbmNlCQAAZQAAAAIFAAAAEmxpcXVpZGF0aW9uUGVuYWx0eQUAAAAPZmVlVG9MaXF1aWRhdG9yBAAAAAphbW1CYWREZWJ0CQAAZQAAAAIJAQAAAAhjYmFsYW5jZQAAAAAFAAAAEmxpcXVpZGF0aW9uUGVuYWx0eQQAAAANJHQwNDA2MzU0MDc3MAMJAABmAAAAAgAAAAAAAAAAAAUAAAAKYW1tQmFkRGVidAkABRQAAAACAAAAAAAAAAAACQEAAAADYWJzAAAAAQUAAAAKYW1tQmFkRGVidAkABRQAAAACBQAAAAphbW1CYWREZWJ0AAAAAAAAAAAABAAAAA1uZXdBbW1CYWxhbmNlCAUAAAANJHQwNDA2MzU0MDc3MAAAAAJfMQQAAAARdGFrZUZyb21JbnN1cmFuY2UIBQAAAA0kdDA0MDYzNTQwNzcwAAAAAl8yBAAAAAF4AwkAAGYAAAACBQAAABF0YWtlRnJvbUluc3VyYW5jZQAAAAAAAAAAAAQAAAARd2l0aGRyYXdJbnN1cmFuY2UJAAP8AAAABAkBAAAAEGluc3VyYW5jZUFkZHJlc3MAAAAAAgAAAAh3aXRoZHJhdwkABEwAAAACBQAAABF0YWtlRnJvbUluc3VyYW5jZQUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAEXdpdGhkcmF3SW5zdXJhbmNlBQAAABF3aXRoZHJhd0luc3VyYW5jZQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUAAAADbmlsAwkAAAAAAAACBQAAAAF4BQAAAAF4BAAAABBkZXBvc2l0SW5zdXJhbmNlCQAD/AAAAAQJAQAAABBpbnN1cmFuY2VBZGRyZXNzAAAAAAIAAAAHZGVwb3NpdAUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACCQEAAAAKcXVvdGVBc3NldAAAAAAFAAAADmZlZVRvSW5zdXJhbmNlBQAAAANuaWwDCQAAAAAAAAIFAAAAEGRlcG9zaXRJbnN1cmFuY2UFAAAAEGRlcG9zaXRJbnN1cmFuY2UEAAAAB3Vuc3Rha2UJAAP8AAAABAkBAAAAEXF1b3RlQXNzZXRTdGFraW5nAAAAAAIAAAAOdW5sb2NrTmV1dHJpbm8JAARMAAAAAgkAAGUAAAACBQAAAA9mZWVUb0xpcXVpZGF0b3IFAAAAEXRha2VGcm9tSW5zdXJhbmNlCQAETAAAAAIJAAJYAAAAAQkBAAAACnF1b3RlQXNzZXQAAAAABQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAHdW5zdGFrZQUAAAAHdW5zdGFrZQkABE4AAAACCQAETgAAAAIJAAROAAAAAgkBAAAADmRlbGV0ZVBvc2l0aW9uAAAAAQUAAAAHX3RyYWRlcgkBAAAACXVwZGF0ZUFtbQAAAAcFAAAAFnF1b3RlQXNzZXRSZXNlcnZlQWZ0ZXIFAAAAFWJhc2VBc3NldFJlc2VydmVBZnRlcgUAAAAWdG90YWxQb3NpdGlvblNpemVBZnRlcgUAAAAXY3VtdWxhdGl2ZU5vdGlvbmFsQWZ0ZXIFAAAAGW9wZW5JbnRlcmVzdE5vdGlvbmFsQWZ0ZXIFAAAADnRvdGFsTG9uZ0FmdGVyBQAAAA90b3RhbFNob3J0QWZ0ZXIJAQAAAAh3aXRoZHJhdwAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAPZmVlVG9MaXF1aWRhdG9yCQEAAAANdXBkYXRlQmFsYW5jZQAAAAEFAAAACmFtbUJhZERlYnQJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAKcGF5RnVuZGluZwAAAAAEAAAAFWZ1bmRpbmdCbG9ja1RpbWVzdGFtcAkBAAAAGW5leHRGdW5kaW5nQmxvY2tUaW1lc3RhbXAAAAAAAwMDCQAAZgAAAAIFAAAAFWZ1bmRpbmdCbG9ja1RpbWVzdGFtcAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAGCQEAAAABIQAAAAEJAQAAAAtpbml0aWFsaXplZAAAAAAGCQEAAAAGcGF1c2VkAAAAAAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAACFJbnZhbGlkIGZ1bmRpbmcgYmxvY2sgdGltZXN0YW1wOiAJAAGkAAAAAQgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXACAAAAAyA8IAkAAaQAAAABBQAAABVmdW5kaW5nQmxvY2tUaW1lc3RhbXAEAAAAD3VuZGVybHlpbmdQcmljZQkBAAAAEmdldE9yYWNsZVR3YXBQcmljZQAAAAAEAAAADXNwb3RUd2FwUHJpY2UJAQAAABBnZXRUd2FwU3BvdFByaWNlAAAAAAQAAAAHcHJlbWl1bQkAAGUAAAACBQAAAA1zcG90VHdhcFByaWNlBQAAAA91bmRlcmx5aW5nUHJpY2UEAAAADSR0MDQyMTQwNDM0NzUDAwkAAAAAAAACCQEAAAAWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQAAAAAAAAAAAAAAAAAGCQAAAAAAAAIJAQAAABV0b3RhbExvbmdQb3NpdGlvblNpemUAAAAAAAAAAAAAAAAACQAFFAAAAAIAAAAAAAAAAAAAAAAAAAAAAAADCQAAZgAAAAIAAAAAAAAAAAAFAAAAB3ByZW1pdW0EAAAAFHNob3J0UHJlbWl1bUZyYWN0aW9uCQEAAAAEZGl2ZAAAAAIJAQAAAARtdWxkAAAAAgUAAAAHcHJlbWl1bQkBAAAAFGZ1bmRpbmdQZXJpb2REZWNpbWFsAAAAAAUAAAAHT05FX0RBWQQAAAATbG9uZ1ByZW1pdW1GcmFjdGlvbgkBAAAABGRpdmQAAAACCQEAAAAEbXVsZAAAAAIFAAAAFHNob3J0UHJlbWl1bUZyYWN0aW9uCQEAAAAWdG90YWxTaG9ydFBvc2l0aW9uU2l6ZQAAAAAJAQAAABV0b3RhbExvbmdQb3NpdGlvblNpemUAAAAACQAFFAAAAAIFAAAAFHNob3J0UHJlbWl1bUZyYWN0aW9uBQAAABNsb25nUHJlbWl1bUZyYWN0aW9uBAAAABNsb25nUHJlbWl1bUZyYWN0aW9uCQEAAAAEZGl2ZAAAAAIJAQAAAARtdWxkAAAAAgUAAAAHcHJlbWl1bQkBAAAAFGZ1bmRpbmdQZXJpb2REZWNpbWFsAAAAAAUAAAAHT05FX0RBWQQAAAAUc2hvcnRQcmVtaXVtRnJhY3Rpb24JAQAAAARkaXZkAAAAAgkBAAAABG11bGQAAAACBQAAABNsb25nUHJlbWl1bUZyYWN0aW9uCQEAAAAVdG90YWxMb25nUG9zaXRpb25TaXplAAAAAAkBAAAAFnRvdGFsU2hvcnRQb3NpdGlvblNpemUAAAAACQAFFAAAAAIFAAAAFHNob3J0UHJlbWl1bUZyYWN0aW9uBQAAABNsb25nUHJlbWl1bUZyYWN0aW9uBAAAABRzaG9ydFByZW1pdW1GcmFjdGlvbggFAAAADSR0MDQyMTQwNDM0NzUAAAACXzEEAAAAE2xvbmdQcmVtaXVtRnJhY3Rpb24IBQAAAA0kdDA0MjE0MDQzNDc1AAAAAl8yCQEAAAANdXBkYXRlRnVuZGluZwAAAAUJAABkAAAAAgUAAAAVZnVuZGluZ0Jsb2NrVGltZXN0YW1wCQEAAAAUZnVuZGluZ1BlcmlvZFNlY29uZHMAAAAACQAAZAAAAAIJAQAAACNsYXRlc3RMb25nQ3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgAAAAAFAAAAE2xvbmdQcmVtaXVtRnJhY3Rpb24JAABkAAAAAgkBAAAAJGxhdGVzdFNob3J0Q3VtdWxhdGl2ZVByZW1pdW1GcmFjdGlvbgAAAAAFAAAAFHNob3J0UHJlbWl1bUZyYWN0aW9uCQEAAAAEZGl2ZAAAAAIFAAAAE2xvbmdQcmVtaXVtRnJhY3Rpb24FAAAAD3VuZGVybHlpbmdQcmljZQkBAAAABGRpdmQAAAACBQAAABRzaG9ydFByZW1pdW1GcmFjdGlvbgUAAAAPdW5kZXJseWluZ1ByaWNlAAAAAWkBAAAABXZfZ2V0AAAAAQAAAAdfdHJhZGVyBAAAAA0kdDA0Mzg1MDQzOTAzCQEAAAAVaW50ZXJuYWxDbG9zZVBvc2l0aW9uAAAAAQUAAAAHX3RyYWRlcgQAAAACeDEIBQAAAA0kdDA0Mzg1MDQzOTAzAAAAAl8xBAAAAAJ4MggFAAAADSR0MDQzODUwNDM5MDMAAAACXzIEAAAAAngzCAUAAAANJHQwNDM4NTA0MzkwMwAAAAJfMwQAAAACeDQIBQAAAA0kdDA0Mzg1MDQzOTAzAAAAAl80CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAQAAAAFzAAAAAQUAAAACeDIJAQAAAAFzAAAAAQUAAAACeDMJAQAAAAFzAAAAAQUAAAACeDQJAQAAAAFzAAAAAQkBAAAADmdldE1hcmdpblJhdGlvAAAAAQUAAAAHX3RyYWRlcgAAAAFpAQAAACd2aWV3X2NhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQAAAABAAAAB190cmFkZXIEAAAADSR0MDQ0MDUwNDQxNjEJAQAAAAtnZXRQb3NpdGlvbgAAAAEFAAAAB190cmFkZXIEAAAADHBvc2l0aW9uU2l6ZQgFAAAADSR0MDQ0MDUwNDQxNjEAAAACXzEEAAAADnBvc2l0aW9uTWFyZ2luCAUAAAANJHQwNDQwNTA0NDE2MQAAAAJfMgQAAAADcG9uCAUAAAANJHQwNDQwNTA0NDE2MQAAAAJfMwQAAAARcG9zaXRpb25Mc3RVcGRDUEYIBQAAAA0kdDA0NDA1MDQ0MTYxAAAAAl80BAAAAA0kdDA0NDE2NjQ0MjY3CQEAAAAjZ2V0UG9zaXRpb25Ob3Rpb25hbEFuZFVucmVhbGl6ZWRQbmwAAAACBQAAAAdfdHJhZGVyBQAAAA9QTkxfT1BUSU9OX1NQT1QEAAAAEHBvc2l0aW9uTm90aW9uYWwIBQAAAA0kdDA0NDE2NjQ0MjY3AAAAAl8xBAAAAA11bnJlYWxpemVkUG5sCAUAAAANJHQwNDQxNjY0NDI2NwAAAAJfMgQAAAANJHQwNDQyNzI0NDQ1NAkBAAAAImNhbGNSZW1haW5NYXJnaW5XaXRoRnVuZGluZ1BheW1lbnQAAAAEBQAAAAxwb3NpdGlvblNpemUFAAAADnBvc2l0aW9uTWFyZ2luBQAAABFwb3NpdGlvbkxzdFVwZENQRgUAAAANdW5yZWFsaXplZFBubAQAAAAMcmVtYWluTWFyZ2luCAUAAAANJHQwNDQyNzI0NDQ1NAAAAAJfMQQAAAAHYmFkRGVidAgFAAAADSR0MDQ0MjcyNDQ0NTQAAAACXzIEAAAADmZ1bmRpbmdQYXltZW50CAUAAAANJHQwNDQyNzI0NDQ1NAAAAAJfMwkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkBAAAAAXMAAAABBQAAAAxyZW1haW5NYXJnaW4JAQAAAAFzAAAAAQUAAAAOZnVuZGluZ1BheW1lbnQJAQAAAAFzAAAAAQkBAAAADmdldE1hcmdpblJhdGlvAAAAAQUAAAAHX3RyYWRlcgAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACQEAAAAOYWRtaW5QdWJsaWNLZXkAAAAAUEU76Q==", "height": 2126017, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FuSgDV6SfcmmPtZSfHjrwEpJySTKm1qH2RLL9vaahj3Z Next: J3TVmgT8PyjuC79UYd5WQwk7C35aW6ZrydDEc1yo7zhA Diff:
OldNewDifferences
619619 let ee = ec._2
620620 let ef = ec._3
621621 let eg = ec._4
622- let eh = (ed == 0)
623- let ei = if ((ed > 0))
622+ let eh = if ((ed > 0))
624623 then (dZ == V)
625624 else (dZ == W)
626- let ej = if (!(eh))
627- then ei
628- else false
629- let ek = (dZ == V)
630- let el = if (if (eh)
631- then true
632- else ej)
625+ let ei = (dZ == V)
626+ let ej = if (eh)
633627 then throw("Use increasePosition to open new or increase position")
634628 else {
635- let em = al(dR, ea)
636- let en = bY(toString(dU.caller), af)
637- let eo = en._1
638- let cm = en._2
639- if ((eo > em))
629+ let ek = al(dR, ea)
630+ let el = bY(toString(dU.caller), af)
631+ let em = el._1
632+ let cm = el._2
633+ if ((em > ek))
640634 then {
641- let ep = bh(ek, em)
642- let cx = ep._1
643- let bm = ep._2
644- let bn = ep._3
645- let cC = ep._4
646- let cD = ep._5
647- let eq = am(cx)
635+ let en = bh(ei, ek)
636+ let cx = en._1
637+ let bm = en._2
638+ let bn = en._3
639+ let cC = en._4
640+ let cD = en._5
641+ let eo = am(cx)
648642 if (if ((eb != 0))
649- then (eb > eq)
643+ then (eb > eo)
650644 else false)
651- then throw(((("Too little base asset exchanged, got " + toString(eq)) + " expected ") + toString(eb)))
645+ then throw(((("Too little base asset exchanged, got " + toString(eo)) + " expected ") + toString(eb)))
652646 else {
653647 let cy = if ((ed != 0))
654- then aj(al(cm, eq), ed)
648+ then aj(al(cm, eo), ed)
655649 else 0
656- let er = bx(ed, ee, eg, cy)
657- let bG = er._1
658- let bH = er._2
659- let bC = er._3
660- let cB = em
661- let es = (cm - cy)
662- let et = if ((ed > 0))
663- then ((eo - cB) - es)
664- else ((es + eo) - cB)
665- let eu = (ed + cx)
666- $Tuple11(eu, bG, am(et), aR(eu), bn, bm, cC, cD, (az() - em), (aL() - (if ((eu > 0))
650+ let ep = bx(ed, ee, eg, cy)
651+ let bG = ep._1
652+ let bH = ep._2
653+ let bC = ep._3
654+ let cB = ek
655+ let eq = (cm - cy)
656+ let er = if ((ed > 0))
657+ then ((em - cB) - eq)
658+ else ((eq + em) - cB)
659+ let es = (ed + cx)
660+ $Tuple11(es, bG, am(er), aR(es), bn, bm, cC, cD, (az() - ek), (aL() - (if ((es > 0))
667661 then am(cx)
668- else 0)), (aK() - (if ((0 > eu))
662+ else 0)), (aK() - (if ((0 > es))
669663 then am(cx)
670664 else 0)))
671665 }
672666 }
673667 else throw("Close position first")
674668 }
675- let eu = el._1
676- let ev = el._2
677- let ew = el._3
678- let ex = el._4
679- let bn = el._5
680- let bm = el._6
681- let cC = el._7
682- let cD = el._8
683- let cG = el._9
684- let cE = el._10
685- let cF = el._11
686- (dt(toString(dU.caller), eu, ev, ew, ex) ++ dJ(bm, bn, cC, cD, cG, cE, cF))
669+ let es = ej._1
670+ let et = ej._2
671+ let eu = ej._3
672+ let ev = ej._4
673+ let bn = ej._5
674+ let bm = ej._6
675+ let cC = ej._7
676+ let cD = ej._8
677+ let cG = ej._9
678+ let cE = ej._10
679+ let cF = ej._11
680+ (dt(toString(dU.caller), es, et, eu, ev) ++ dJ(bm, bn, cC, cD, cG, cE, cF))
687681 }
688682
689683
690684
691685 @Callable(dU)
692686 func increasePosition (dZ,ea,eb) = {
693- let ey = dU.payments[0].amount
687+ let ew = dU.payments[0].amount
694688 if (if (if (if (if (if (if (if ((dZ != V))
695689 then (dZ != W)
696690 else false)
697691 then true
698- else (0 >= ey))
692+ else (0 >= ew))
699693 then true
700694 else if (((1 * ab) > ea))
701695 then true
710704 else ba())
711705 then throw("Invalid increasePosition parameters")
712706 else {
713- let ez = al(ey, at())
714- let dR = (ey - ez)
715- let eA = aT(toString(dU.caller))
716- let ed = eA._1
717- let ee = eA._2
718- let ef = eA._3
719- let eh = (ed == 0)
720- let ei = if ((ed > 0))
707+ let ex = al(ew, at())
708+ let dR = (ew - ex)
709+ let ey = aT(toString(dU.caller))
710+ let ed = ey._1
711+ let ee = ey._2
712+ let ef = ey._3
713+ let ez = (ed == 0)
714+ let eA = if ((ed > 0))
721715 then (dZ == V)
722716 else (dZ == W)
723- let ej = if (!(eh))
724- then ei
717+ let eh = if (!(ez))
718+ then eA
725719 else false
726- let ek = (dZ == V)
727- let eB = if (if (eh)
720+ let ei = (dZ == V)
721+ let eB = if (if (ez)
728722 then true
729- else ej)
723+ else eh)
730724 then {
731- let em = al(dR, ea)
732- let eC = bh(ek, em)
725+ let ek = al(dR, ea)
726+ let eC = bh(ei, ek)
733727 let bp = eC._1
734728 let bm = eC._2
735729 let bn = eC._3
740734 else false)
741735 then throw(((("Limit error: " + toString(am(bp))) + " < ") + toString(eb)))
742736 else {
743- let eu = (ed + bp)
744- let cd = aR(eu)
745- let eD = aj(em, ea)
737+ let es = (ed + bp)
738+ let cd = if (ez)
739+ then aR(es)
740+ else aT(toString(dU.caller))._4
741+ let eD = aj(ek, ea)
746742 let eE = bx(ed, ee, cd, eD)
747743 let bG = eE._1
748744 let cj = eE._2
749745 let ck = eE._3
750- $Tuple11(eu, bG, (ef + em), aR(eu), bn, bm, cC, cD, (az() + em), (aL() + (if ((eu > 0))
746+ $Tuple11(es, bG, (ef + ek), aR(es), bn, bm, cC, cD, (az() + ek), (aL() + (if ((es > 0))
751747 then am(bp)
752- else 0)), (aK() + (if ((0 > eu))
748+ else 0)), (aK() + (if ((0 > es))
753749 then am(bp)
754750 else 0)))
755751 }
756752 }
757753 else {
758- let em = al(dR, ea)
754+ let ek = al(dR, ea)
759755 let eF = bY(toString(dU.caller), af)
760- let eo = eF._1
756+ let em = eF._1
761757 let cm = eF._2
762- if ((eo > em))
758+ if ((em > ek))
763759 then throw("Use decreasePosition to decrease position size")
764760 else throw("Close position first")
765761 }
766- let eu = eB._1
767- let ev = eB._2
768- let ew = eB._3
769- let ex = eB._4
762+ let es = eB._1
763+ let et = eB._2
764+ let eu = eB._3
765+ let ev = eB._4
770766 let bn = eB._5
771767 let bm = eB._6
772768 let cC = eB._7
774770 let cG = eB._9
775771 let cE = eB._10
776772 let cF = eB._11
777- let eG = (ez / 2)
778- let eH = (ez - eG)
773+ let eG = (ex / 2)
774+ let eH = (ex - eG)
779775 let eI = invoke(S(), "lockNeutrinoSP", [toString(T()), ae], [AttachedPayment(R(), dR)])
780776 if ((eI == eI))
781777 then {
782778 let eJ = invoke(U(), "deposit", nil, [AttachedPayment(R(), eH)])
783779 if ((eJ == eJ))
784- then (((dt(toString(dU.caller), eu, ev, ew, ex) ++ dJ(bm, bn, cC, cD, cG, cE, cF)) ++ dV(eG)) ++ dT((as() + dR)))
780+ then (((dt(toString(dU.caller), es, et, eu, ev) ++ dJ(bm, bn, cC, cD, cG, cE, cF)) ++ dV(eG)) ++ dT((as() + dR)))
785781 else throw("Strict value is not equal to itself.")
786782 }
787783 else throw("Strict value is not equal to itself.")
792788
793789 @Callable(dU)
794790 func addMargin () = {
795- let ey = dU.payments[0].amount
791+ let ew = dU.payments[0].amount
796792 if (if (if (if ((dU.payments[0].assetId != R()))
797793 then true
798794 else !(aY(toString(dU.caller))))
802798 else ba())
803799 then throw("Invalid addMargin parameters")
804800 else {
805- let ez = al(ey, at())
806- let dR = (ey - ez)
801+ let ex = al(ew, at())
802+ let dR = (ew - ex)
807803 let eK = aT(toString(dU.caller))
808804 let ed = eK._1
809805 let ee = eK._2
810806 let ef = eK._3
811807 let eg = eK._4
812- let eG = (ez / 2)
813- let eH = (ez - eG)
808+ let eG = (ex / 2)
809+ let eH = (ex - eG)
814810 let eI = invoke(S(), "lockNeutrinoSP", [toString(T()), ae], [AttachedPayment(R(), dR)])
815811 if ((eI == eI))
816812 then {
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "k_ora_key"
55
66 let b = "k_ora_block_key"
77
88 let c = "k_ora"
99
1010 let d = "k_balance"
1111
1212 let e = "k_positionSize"
1313
1414 let f = "k_positionMargin"
1515
1616 let g = "k_positionOpenNotional"
1717
1818 let h = "k_positionFraction"
1919
2020 let i = "k_initialized"
2121
2222 let j = "k_paused"
2323
2424 let k = "k_fee"
2525
2626 let l = "k_fundingPeriod"
2727
2828 let m = "k_initMarginRatio"
2929
3030 let n = "k_mmr"
3131
3232 let o = "k_liquidationFeeRatio"
3333
3434 let p = "k_spreadLimit"
3535
3636 let q = "k_maxPriceImpact"
3737
3838 let r = "k_lastDataStr"
3939
4040 let s = "k_lastMinuteId"
4141
4242 let t = "k_twapDataLastCumulativePrice"
4343
4444 let u = "k_twapDataLastPrice"
4545
4646 let v = "k_latestLongPremiumFraction"
4747
4848 let w = "k_latestShortPremiumFraction"
4949
5050 let x = "k_nextFundingBlockMinTimestamp"
5151
5252 let y = "k_longFundingRate"
5353
5454 let z = "k_shortFundingRate"
5555
5656 let A = "k_qtAstR"
5757
5858 let B = "k_bsAstR"
5959
6060 let C = "k_totalPositionSize"
6161
6262 let D = "k_totalLongPositionSize"
6363
6464 let E = "k_totalShortPositionSize"
6565
6666 let F = "k_cumulativeNotional"
6767
6868 let G = "k_openInterestNotional"
6969
7070 let H = "k_coordinatorAddress"
7171
7272 let I = "k_insurance_address"
7373
7474 let J = "k_admin_address"
7575
7676 let K = "k_admin_public_key"
7777
7878 let L = "k_quote_asset"
7979
8080 let M = "k_quote_staking"
8181
8282 let N = "k_staking_address"
8383
8484 func O () = valueOrErrorMessage(addressFromString(getStringValue(this, H)), "Coordinator not set")
8585
8686
8787 func P () = addressFromString(getStringValue(O(), J))
8888
8989
9090 func Q () = fromBase58String(getStringValue(O(), K))
9191
9292
9393 func R () = fromBase58String(getStringValue(O(), L))
9494
9595
9696 func S () = valueOrErrorMessage(addressFromString(getStringValue(O(), M)), "Quote asset staking not set")
9797
9898
9999 func T () = valueOrErrorMessage(addressFromString(getStringValue(O(), N)), "Insurance not set")
100100
101101
102102 func U () = valueOrErrorMessage(addressFromString(getStringValue(O(), I)), "Insurance not set")
103103
104104
105105 let V = 1
106106
107107 let W = 2
108108
109109 let X = 60
110110
111111 let Y = 15
112112
113113 let Z = 15
114114
115115 let aa = 1000
116116
117117 let ab = (1 * (((((10 * 10) * 10) * 10) * 10) * 10))
118118
119119 let ac = (100 * ab)
120120
121121 let ad = (86400 * ab)
122122
123123 let ae = 100
124124
125125 let af = 1
126126
127127 let ag = 2
128128
129129 func ah (ai) = (toString(ai) + ",")
130130
131131
132132 func aj (ai,ak) = fraction(ai, ab, ak, HALFEVEN)
133133
134134
135135 func al (ai,ak) = fraction(ai, ak, ab, HALFEVEN)
136136
137137
138138 func am (ai) = if ((ai > 0))
139139 then ai
140140 else -(ai)
141141
142142
143143 func an (ao,ap) = ((ao + "_") + ap)
144144
145145
146146 func aq (ar) = valueOrErrorMessage(getInteger(this, ar), ("no value for " + ar))
147147
148148
149149 func as () = aq(d)
150150
151151
152152 func at () = aq(k)
153153
154154
155155 func au () = aq(m)
156156
157157
158158 func av () = aq(A)
159159
160160
161161 func aw () = aq(B)
162162
163163
164164 func ax () = aq(C)
165165
166166
167167 func ay () = aq(F)
168168
169169
170170 func az () = aq(G)
171171
172172
173173 func aA () = aq(x)
174174
175175
176176 func aB () = aq(l)
177177
178178
179179 func aC () = (aB() * ab)
180180
181181
182182 func aD () = (aB() * aa)
183183
184184
185185 func aE () = aq(n)
186186
187187
188188 func aF () = aq(o)
189189
190190
191191 func aG () = aq(p)
192192
193193
194194 func aH () = aq(q)
195195
196196
197197 func aI () = aq(v)
198198
199199
200200 func aJ () = aq(w)
201201
202202
203203 func aK () = aq(E)
204204
205205
206206 func aL () = aq(D)
207207
208208
209209 func aM (aN,aO,aP) = {
210210 let aQ = (aN - aO)
211211 if (if (aP)
212212 then (0 > aQ)
213213 else false)
214214 then throw("Invalid margin")
215215 else if (if (!(aP))
216216 then (aQ >= 0)
217217 else false)
218218 then throw("Invalid margin")
219219 else true
220220 }
221221
222222
223223 func aR (aS) = if ((aS == 0))
224224 then throw("Should not be called with _positionSize == 0")
225225 else if ((aS > 0))
226226 then aI()
227227 else aJ()
228228
229229
230230 func aT (aU) = {
231231 let aV = getInteger(this, an(e, aU))
232232 let aW = aV
233233 if ($isInstanceOf(aW, "Int"))
234234 then {
235235 let aX = aW
236236 $Tuple4(aX, getIntegerValue(this, an(f, aU)), getIntegerValue(this, an(g, aU)), getIntegerValue(this, an(h, aU)))
237237 }
238238 else $Tuple4(0, 0, 0, 0)
239239 }
240240
241241
242242 func aY (aU) = if ((aT(aU)._1 == 0))
243243 then throw("No open position")
244244 else true
245245
246246
247247 func aZ () = valueOrElse(getBoolean(this, i), false)
248248
249249
250250 func ba () = valueOrElse(getBoolean(this, j), false)
251251
252252
253253 func bb (bc,bd,be) = if (bc)
254254 then {
255255 let bf = (aw() - be)
256256 if ((0 >= bf))
257257 then throw("Tx lead to base asset reserve <= 0, revert")
258258 else $Tuple4((av() + bd), bf, (ax() + be), (ay() + bd))
259259 }
260260 else {
261261 let bg = (av() - bd)
262262 if ((0 >= bg))
263263 then throw("Tx lead to base quote reserve <= 0, revert")
264264 else $Tuple4(bg, (aw() + be), (ax() - be), (ay() - bd))
265265 }
266266
267267
268268 func bh (bc,bd) = {
269269 let bi = av()
270270 let bj = aw()
271271 let bk = aj(bi, bj)
272272 let bl = al(bd, bk)
273273 let ar = al(bi, bj)
274274 let bm = if (bc)
275275 then (bi + bd)
276276 else (bi - bd)
277277 let bn = aj(ar, bm)
278278 let bo = am((bn - bj))
279279 let bp = if (bc)
280280 then bo
281281 else -(bo)
282282 let bq = ((bl - bo) / bl)
283283 let br = aH()
284284 if ((bq > br))
285285 then throw(((("Price impact " + toString(bq)) + " > max price impact ") + toString(br)))
286286 else {
287287 let bs = bb(bc, bd, bo)
288288 let bt = bs._1
289289 let bu = bs._2
290290 let bv = bs._3
291291 let bw = bs._4
292292 $Tuple5(bp, bt, bu, bv, bw)
293293 }
294294 }
295295
296296
297297 func bx (by,bz,bA,bB) = {
298298 let bC = if ((by != 0))
299299 then {
300300 let bD = aR(by)
301301 al((bD - bA), by)
302302 }
303303 else 0
304304 let bE = ((bB - bC) + bz)
305305 let bF = if ((0 > bE))
306306 then $Tuple2(0, am(bE))
307307 else $Tuple2(am(bE), 0)
308308 let bG = bF._1
309309 let bH = bF._2
310310 $Tuple3(bG, bH, bC)
311311 }
312312
313313
314314 func bI (bc,be) = {
315315 let bJ = av()
316316 let bK = aw()
317317 if ((be == 0))
318318 then throw("Invalid base asset amount")
319319 else {
320320 let ar = al(bJ, bK)
321321 let bL = if (bc)
322322 then (bK + be)
323323 else (bK - be)
324324 let bM = aj(ar, bL)
325325 let bN = am((bM - bJ))
326326 let bO = bb(!(bc), bN, be)
327327 let bt = bO._1
328328 let bu = bO._2
329329 let bv = bO._3
330330 let bw = bO._4
331331 $Tuple7(bN, bt, bu, bv, bw, (aL() - (if (bc)
332332 then am(be)
333333 else 0)), (aK() - (if (!(bc))
334334 then am(be)
335335 else 0)))
336336 }
337337 }
338338
339339
340340 func bP () = {
341341 let bQ = valueOrErrorMessage(addressFromString(getStringValue(this, c)), "")
342342 let bR = getStringValue(this, a)
343343 let bS = getStringValue(this, b)
344344 let bT = getIntegerValue(bQ, bR)
345345 bT
346346 }
347347
348348
349349 func bU () = {
350350 let bJ = av()
351351 let bK = aw()
352352 aj(bJ, bK)
353353 }
354354
355355
356356 func bV () = {
357357 let bW = bP()
358358 let bX = bU()
359359 (aj(am((bW - bX)), bW) > aG())
360360 }
361361
362362
363363 func bY (aU,bZ) = {
364364 let ca = aT(aU)
365365 let aX = ca._1
366366 let cb = ca._2
367367 let cc = ca._3
368368 let cd = ca._4
369369 let ce = am(aX)
370370 if ((ce == 0))
371371 then throw("Invalid position size")
372372 else {
373373 let cf = (0 > aX)
374374 let cg = if ((bZ == af))
375375 then {
376376 let ch = bI(!(cf), ce)
377377 let ci = ch._1
378378 let cj = ch._2
379379 let ck = ch._3
380380 let cl = ch._4
381381 ci
382382 }
383383 else (ce * bP())
384384 let cm = if (cf)
385385 then (cc - cg)
386386 else (cg - cc)
387387 $Tuple2(cg, cm)
388388 }
389389 }
390390
391391
392392 func cn (aU,bZ) = {
393393 let co = aT(aU)
394394 let aX = co._1
395395 let cb = co._2
396396 let cp = co._3
397397 let cd = co._4
398398 let cq = bY(aU, bZ)
399399 let cg = cq._1
400400 let cm = cq._2
401401 let cr = bx(aX, cb, cd, cm)
402402 let bG = cr._1
403403 let bH = cr._2
404404 aj((bG - bH), cg)
405405 }
406406
407407
408408 func cs (aU) = cn(aU, af)
409409
410410
411411 func ct (aU) = {
412412 let cu = aT(aU)
413413 let aX = cu._1
414414 let cb = cu._2
415415 let cp = cu._3
416416 let cd = cu._4
417417 let cv = bY(aU, af)
418418 let cj = cv._1
419419 let cm = cv._2
420420 let cw = bx(aX, cb, cd, cm)
421421 let bG = cw._1
422422 let bH = cw._2
423423 let cx = -(aX)
424424 let cy = cm
425425 let cz = -(bG)
426426 let cA = bI((aX > 0), am(aX))
427427 let cB = cA._1
428428 let bm = cA._2
429429 let bn = cA._3
430430 let cC = cA._4
431431 let cD = cA._5
432432 let cE = cA._6
433433 let cF = cA._7
434434 let cG = (az() - cp)
435435 $Tuple12(cx, bH, cy, cz, bm, bn, cC, cD, cG, cB, cE, cF)
436436 }
437437
438438
439439 func cH () = {
440440 let cI = ((lastBlock.timestamp / 1000) / 60)
441441 let cJ = (cI - Y)
442442 let cK = valueOrElse(getString(this, r), "")
443443 let cL = split(cK, ",")
444444 func cM (cN,cO) = if ((cJ >= parseIntValue(cO)))
445445 then (cN :+ parseIntValue(cO))
446446 else cN
447447
448448 let cP = {
449449 let cQ = cL
450450 let cR = size(cQ)
451451 let cS = nil
452452 func cT (cU,cV) = if ((cV >= cR))
453453 then cU
454454 else cM(cU, cQ[cV])
455455
456456 func cW (cU,cV) = if ((cV >= cR))
457457 then cU
458458 else throw("List size exceeds 20")
459459
460460 cW(cT(cT(cT(cT(cT(cT(cT(cT(cT(cT(cT(cT(cT(cT(cT(cT(cT(cT(cT(cT(cS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
461461 }
462462 let cX = if ((size(cP) > 0))
463463 then max(cP)
464464 else parseIntValue(cL[0])
465465 let cY = valueOrElse(getInteger(this, s), 0)
466466 let cZ = valueOrElse(getInteger(this, ((t + "_") + toString(cY))), 0)
467467 let da = valueOrElse(getInteger(this, ((u + "_") + toString(cY))), 0)
468468 let db = (cZ + ((cI - cY) * da))
469469 let dc = valueOrElse(getInteger(this, ((t + "_") + toString(cX))), 0)
470470 let dd = valueOrElse(getInteger(this, ((u + "_") + toString(cX))), 0)
471471 let de = (dc + ((cJ - cX) * dd))
472472 ((db - de) / Y)
473473 }
474474
475475
476476 func df (dg,dh,di,dj,dk,dl,dm) = [IntegerEntry(m, dg), IntegerEntry(n, dh), IntegerEntry(o, di), IntegerEntry(l, dj), IntegerEntry(k, dk), IntegerEntry(p, dl), IntegerEntry(q, dm)]
477477
478478
479479 func dn (do,dp,dq,dr,ds) = [IntegerEntry(x, do), IntegerEntry(v, dp), IntegerEntry(w, dq), IntegerEntry(y, dr), IntegerEntry(z, ds)]
480480
481481
482482 func dt (ap,du,dv,dw,bD) = [IntegerEntry(an(e, ap), du), IntegerEntry(an(f, ap), dv), IntegerEntry(an(g, ap), dw), IntegerEntry(an(h, ap), bD)]
483483
484484
485485 func dx (dy) = {
486486 let cI = ((lastBlock.timestamp / 1000) / 60)
487487 let dz = valueOrElse(getInteger(this, s), 0)
488488 if ((dz > cI))
489489 then throw("TWAP out-of-order")
490490 else {
491491 let cY = if ((dz == 0))
492492 then cI
493493 else dz
494494 let cK = valueOrElse(getString(this, r), "")
495495 let dA = split(cK, ",")
496496 let cL = if ((size(dA) > Y))
497497 then (removeByIndex(dA, 0) :+ toString(cI))
498498 else (dA :+ toString(cI))
499499 let dB = valueOrElse(getInteger(this, ((t + "_") + toString(dz))), 0)
500500 let dC = valueOrElse(getInteger(this, ((u + "_") + toString(dz))), dy)
501501 let dD = (dB + ((cI - cY) * dC))
502502 func dE (cN,dF) = ((cN + dF) + ",")
503503
504504 let dG = {
505505 let cQ = cL
506506 let cR = size(cQ)
507507 let cS = ""
508508 func cT (cU,cV) = if ((cV >= cR))
509509 then cU
510510 else dE(cU, cQ[cV])
511511
512512 func cW (cU,cV) = if ((cV >= cR))
513513 then cU
514514 else throw("List size exceeds 20")
515515
516516 cW(cT(cT(cT(cT(cT(cT(cT(cT(cT(cT(cT(cT(cT(cT(cT(cT(cT(cT(cT(cT(cS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
517517 }
518518 let dH = dropRight(dG, 1)
519519 let dI = if ((take(dH, 1) == ","))
520520 then drop(dH, 1)
521521 else dH
522522 [IntegerEntry(((t + "_") + toString(cI)), dD), IntegerEntry(((u + "_") + toString(cI)), dy), IntegerEntry(s, cI), StringEntry(r, dI)]
523523 }
524524 }
525525
526526
527527 func dJ (bi,bj,dK,dL,dM,dN,dO) = if (((dN - dO) != dK))
528528 then throw(((((("Invalid AMM state data: " + toString(dN)) + " + ") + toString(dO)) + " != ") + toString(dK)))
529529 else ([IntegerEntry(A, bi), IntegerEntry(B, bj), IntegerEntry(C, dK), IntegerEntry(F, dL), IntegerEntry(G, dM), IntegerEntry(D, dN), IntegerEntry(E, dO)] ++ dx(aj(bi, bj)))
530530
531531
532532 func dP (ap) = [DeleteEntry(an(e, ap)), DeleteEntry(an(f, ap)), DeleteEntry(an(g, ap)), DeleteEntry(an(h, ap))]
533533
534534
535535 func dQ (ap,dR) = {
536536 let dS = assetBalance(this, R())
537537 if ((dR > dS))
538538 then throw(((("Unable to withdraw " + toString(dR)) + " from contract balance ") + toString(dS)))
539539 else [ScriptTransfer(ap, dR, R())]
540540 }
541541
542542
543543 func dT (dU) = if ((0 > dU))
544544 then throw("Balance")
545545 else [IntegerEntry(d, dU)]
546546
547547
548548 func dV (dU) = [ScriptTransfer(T(), dU, R())]
549549
550550
551551 @Callable(dU)
552552 func pause () = if ((dU.caller != P()))
553553 then throw("Invalid togglePause params")
554554 else [BooleanEntry(j, true)]
555555
556556
557557
558558 @Callable(dU)
559559 func unpause () = if ((dU.caller != P()))
560560 then throw("Invalid togglePause params")
561561 else [BooleanEntry(j, false)]
562562
563563
564564
565565 @Callable(dU)
566566 func changeSettings (dg,dh,di,dj,dk,dl,dm) = if ((dU.caller != P()))
567567 then throw("Invalid changeSettings params")
568568 else df(dg, dh, di, dj, dk, dl, dm)
569569
570570
571571
572572 @Callable(dU)
573573 func initialize (bi,bj,dj,dg,dh,di,dk,dW,dX,dY,dl,dm) = if (if (if (if (if (if (if (if (if (if ((0 >= bi))
574574 then true
575575 else (0 >= bj))
576576 then true
577577 else (0 >= dj))
578578 then true
579579 else (0 >= dg))
580580 then true
581581 else (0 >= dh))
582582 then true
583583 else (0 >= di))
584584 then true
585585 else (0 >= dk))
586586 then true
587587 else (0 >= dl))
588588 then true
589589 else (0 >= dm))
590590 then true
591591 else aZ())
592592 then throw("Invalid initialize parameters")
593593 else ((((dJ(bi, bj, 0, 0, 0, 0, 0) ++ df(dg, dh, di, dj, dk, dl, dm)) ++ dn((lastBlock.timestamp + dj), 0, 0, 0, 0)) ++ dT(0)) ++ [BooleanEntry(i, true), StringEntry(c, dW), StringEntry(a, dX), StringEntry(H, dY)])
594594
595595
596596
597597 @Callable(dU)
598598 func decreasePosition (dZ,dR,ea,eb) = if (if (if (if (if (if (if (if ((dZ != V))
599599 then (dZ != W)
600600 else false)
601601 then true
602602 else (0 >= dR))
603603 then true
604604 else if (((1 * ab) > ea))
605605 then true
606606 else (ea > (3 * ab)))
607607 then true
608608 else !(aZ()))
609609 then true
610610 else !(aM(aj(ab, ea), au(), true)))
611611 then true
612612 else !(aY(toString(dU.caller))))
613613 then true
614614 else ba())
615615 then throw("Invalid decreasePosition parameters")
616616 else {
617617 let ec = aT(toString(dU.caller))
618618 let ed = ec._1
619619 let ee = ec._2
620620 let ef = ec._3
621621 let eg = ec._4
622- let eh = (ed == 0)
623- let ei = if ((ed > 0))
622+ let eh = if ((ed > 0))
624623 then (dZ == V)
625624 else (dZ == W)
626- let ej = if (!(eh))
627- then ei
628- else false
629- let ek = (dZ == V)
630- let el = if (if (eh)
631- then true
632- else ej)
625+ let ei = (dZ == V)
626+ let ej = if (eh)
633627 then throw("Use increasePosition to open new or increase position")
634628 else {
635- let em = al(dR, ea)
636- let en = bY(toString(dU.caller), af)
637- let eo = en._1
638- let cm = en._2
639- if ((eo > em))
629+ let ek = al(dR, ea)
630+ let el = bY(toString(dU.caller), af)
631+ let em = el._1
632+ let cm = el._2
633+ if ((em > ek))
640634 then {
641- let ep = bh(ek, em)
642- let cx = ep._1
643- let bm = ep._2
644- let bn = ep._3
645- let cC = ep._4
646- let cD = ep._5
647- let eq = am(cx)
635+ let en = bh(ei, ek)
636+ let cx = en._1
637+ let bm = en._2
638+ let bn = en._3
639+ let cC = en._4
640+ let cD = en._5
641+ let eo = am(cx)
648642 if (if ((eb != 0))
649- then (eb > eq)
643+ then (eb > eo)
650644 else false)
651- then throw(((("Too little base asset exchanged, got " + toString(eq)) + " expected ") + toString(eb)))
645+ then throw(((("Too little base asset exchanged, got " + toString(eo)) + " expected ") + toString(eb)))
652646 else {
653647 let cy = if ((ed != 0))
654- then aj(al(cm, eq), ed)
648+ then aj(al(cm, eo), ed)
655649 else 0
656- let er = bx(ed, ee, eg, cy)
657- let bG = er._1
658- let bH = er._2
659- let bC = er._3
660- let cB = em
661- let es = (cm - cy)
662- let et = if ((ed > 0))
663- then ((eo - cB) - es)
664- else ((es + eo) - cB)
665- let eu = (ed + cx)
666- $Tuple11(eu, bG, am(et), aR(eu), bn, bm, cC, cD, (az() - em), (aL() - (if ((eu > 0))
650+ let ep = bx(ed, ee, eg, cy)
651+ let bG = ep._1
652+ let bH = ep._2
653+ let bC = ep._3
654+ let cB = ek
655+ let eq = (cm - cy)
656+ let er = if ((ed > 0))
657+ then ((em - cB) - eq)
658+ else ((eq + em) - cB)
659+ let es = (ed + cx)
660+ $Tuple11(es, bG, am(er), aR(es), bn, bm, cC, cD, (az() - ek), (aL() - (if ((es > 0))
667661 then am(cx)
668- else 0)), (aK() - (if ((0 > eu))
662+ else 0)), (aK() - (if ((0 > es))
669663 then am(cx)
670664 else 0)))
671665 }
672666 }
673667 else throw("Close position first")
674668 }
675- let eu = el._1
676- let ev = el._2
677- let ew = el._3
678- let ex = el._4
679- let bn = el._5
680- let bm = el._6
681- let cC = el._7
682- let cD = el._8
683- let cG = el._9
684- let cE = el._10
685- let cF = el._11
686- (dt(toString(dU.caller), eu, ev, ew, ex) ++ dJ(bm, bn, cC, cD, cG, cE, cF))
669+ let es = ej._1
670+ let et = ej._2
671+ let eu = ej._3
672+ let ev = ej._4
673+ let bn = ej._5
674+ let bm = ej._6
675+ let cC = ej._7
676+ let cD = ej._8
677+ let cG = ej._9
678+ let cE = ej._10
679+ let cF = ej._11
680+ (dt(toString(dU.caller), es, et, eu, ev) ++ dJ(bm, bn, cC, cD, cG, cE, cF))
687681 }
688682
689683
690684
691685 @Callable(dU)
692686 func increasePosition (dZ,ea,eb) = {
693- let ey = dU.payments[0].amount
687+ let ew = dU.payments[0].amount
694688 if (if (if (if (if (if (if (if ((dZ != V))
695689 then (dZ != W)
696690 else false)
697691 then true
698- else (0 >= ey))
692+ else (0 >= ew))
699693 then true
700694 else if (((1 * ab) > ea))
701695 then true
702696 else (ea > (3 * ab)))
703697 then true
704698 else !(aZ()))
705699 then true
706700 else (dU.payments[0].assetId != R()))
707701 then true
708702 else !(aM(aj(ab, ea), au(), true)))
709703 then true
710704 else ba())
711705 then throw("Invalid increasePosition parameters")
712706 else {
713- let ez = al(ey, at())
714- let dR = (ey - ez)
715- let eA = aT(toString(dU.caller))
716- let ed = eA._1
717- let ee = eA._2
718- let ef = eA._3
719- let eh = (ed == 0)
720- let ei = if ((ed > 0))
707+ let ex = al(ew, at())
708+ let dR = (ew - ex)
709+ let ey = aT(toString(dU.caller))
710+ let ed = ey._1
711+ let ee = ey._2
712+ let ef = ey._3
713+ let ez = (ed == 0)
714+ let eA = if ((ed > 0))
721715 then (dZ == V)
722716 else (dZ == W)
723- let ej = if (!(eh))
724- then ei
717+ let eh = if (!(ez))
718+ then eA
725719 else false
726- let ek = (dZ == V)
727- let eB = if (if (eh)
720+ let ei = (dZ == V)
721+ let eB = if (if (ez)
728722 then true
729- else ej)
723+ else eh)
730724 then {
731- let em = al(dR, ea)
732- let eC = bh(ek, em)
725+ let ek = al(dR, ea)
726+ let eC = bh(ei, ek)
733727 let bp = eC._1
734728 let bm = eC._2
735729 let bn = eC._3
736730 let cC = eC._4
737731 let cD = eC._5
738732 if (if ((eb != 0))
739733 then (eb > am(bp))
740734 else false)
741735 then throw(((("Limit error: " + toString(am(bp))) + " < ") + toString(eb)))
742736 else {
743- let eu = (ed + bp)
744- let cd = aR(eu)
745- let eD = aj(em, ea)
737+ let es = (ed + bp)
738+ let cd = if (ez)
739+ then aR(es)
740+ else aT(toString(dU.caller))._4
741+ let eD = aj(ek, ea)
746742 let eE = bx(ed, ee, cd, eD)
747743 let bG = eE._1
748744 let cj = eE._2
749745 let ck = eE._3
750- $Tuple11(eu, bG, (ef + em), aR(eu), bn, bm, cC, cD, (az() + em), (aL() + (if ((eu > 0))
746+ $Tuple11(es, bG, (ef + ek), aR(es), bn, bm, cC, cD, (az() + ek), (aL() + (if ((es > 0))
751747 then am(bp)
752- else 0)), (aK() + (if ((0 > eu))
748+ else 0)), (aK() + (if ((0 > es))
753749 then am(bp)
754750 else 0)))
755751 }
756752 }
757753 else {
758- let em = al(dR, ea)
754+ let ek = al(dR, ea)
759755 let eF = bY(toString(dU.caller), af)
760- let eo = eF._1
756+ let em = eF._1
761757 let cm = eF._2
762- if ((eo > em))
758+ if ((em > ek))
763759 then throw("Use decreasePosition to decrease position size")
764760 else throw("Close position first")
765761 }
766- let eu = eB._1
767- let ev = eB._2
768- let ew = eB._3
769- let ex = eB._4
762+ let es = eB._1
763+ let et = eB._2
764+ let eu = eB._3
765+ let ev = eB._4
770766 let bn = eB._5
771767 let bm = eB._6
772768 let cC = eB._7
773769 let cD = eB._8
774770 let cG = eB._9
775771 let cE = eB._10
776772 let cF = eB._11
777- let eG = (ez / 2)
778- let eH = (ez - eG)
773+ let eG = (ex / 2)
774+ let eH = (ex - eG)
779775 let eI = invoke(S(), "lockNeutrinoSP", [toString(T()), ae], [AttachedPayment(R(), dR)])
780776 if ((eI == eI))
781777 then {
782778 let eJ = invoke(U(), "deposit", nil, [AttachedPayment(R(), eH)])
783779 if ((eJ == eJ))
784- then (((dt(toString(dU.caller), eu, ev, ew, ex) ++ dJ(bm, bn, cC, cD, cG, cE, cF)) ++ dV(eG)) ++ dT((as() + dR)))
780+ then (((dt(toString(dU.caller), es, et, eu, ev) ++ dJ(bm, bn, cC, cD, cG, cE, cF)) ++ dV(eG)) ++ dT((as() + dR)))
785781 else throw("Strict value is not equal to itself.")
786782 }
787783 else throw("Strict value is not equal to itself.")
788784 }
789785 }
790786
791787
792788
793789 @Callable(dU)
794790 func addMargin () = {
795- let ey = dU.payments[0].amount
791+ let ew = dU.payments[0].amount
796792 if (if (if (if ((dU.payments[0].assetId != R()))
797793 then true
798794 else !(aY(toString(dU.caller))))
799795 then true
800796 else !(aZ()))
801797 then true
802798 else ba())
803799 then throw("Invalid addMargin parameters")
804800 else {
805- let ez = al(ey, at())
806- let dR = (ey - ez)
801+ let ex = al(ew, at())
802+ let dR = (ew - ex)
807803 let eK = aT(toString(dU.caller))
808804 let ed = eK._1
809805 let ee = eK._2
810806 let ef = eK._3
811807 let eg = eK._4
812- let eG = (ez / 2)
813- let eH = (ez - eG)
808+ let eG = (ex / 2)
809+ let eH = (ex - eG)
814810 let eI = invoke(S(), "lockNeutrinoSP", [toString(T()), ae], [AttachedPayment(R(), dR)])
815811 if ((eI == eI))
816812 then {
817813 let eJ = invoke(U(), "deposit", nil, [AttachedPayment(R(), eH)])
818814 if ((eJ == eJ))
819815 then ((dt(toString(dU.caller), ed, (ee + dR), ef, eg) ++ dV(eG)) ++ dT((as() + dR)))
820816 else throw("Strict value is not equal to itself.")
821817 }
822818 else throw("Strict value is not equal to itself.")
823819 }
824820 }
825821
826822
827823
828824 @Callable(dU)
829825 func removeMargin (dR) = if (if (if (if ((0 >= dR))
830826 then true
831827 else !(aY(toString(dU.caller))))
832828 then true
833829 else !(aZ()))
834830 then true
835831 else ba())
836832 then throw("Invalid removeMargin parameters")
837833 else {
838834 let eL = aT(toString(dU.caller))
839835 let ed = eL._1
840836 let ee = eL._2
841837 let ef = eL._3
842838 let eg = eL._4
843839 let eM = -(dR)
844840 let eN = bx(ed, ee, eg, eM)
845841 let bG = eN._1
846842 let bH = eN._2
847843 if ((bH != 0))
848844 then throw("Invalid added margin amount")
849845 else {
850846 let eO = invoke(S(), "unlockNeutrino", [dR, toBase58String(R())], nil)
851847 if ((eO == eO))
852848 then ((dt(toString(dU.caller), ed, bG, ef, aR(ed)) ++ dQ(dU.caller, dR)) ++ dT((as() - dR)))
853849 else throw("Strict value is not equal to itself.")
854850 }
855851 }
856852
857853
858854
859855 @Callable(dU)
860856 func closePosition () = if (if (if (!(aY(toString(dU.caller))))
861857 then true
862858 else !(aZ()))
863859 then true
864860 else ba())
865861 then throw("Invalid closePosition parameters")
866862 else {
867863 let eP = ct(toString(dU.caller))
868864 let cj = eP._1
869865 let eQ = eP._2
870866 let cy = eP._3
871867 let cz = eP._4
872868 let bm = eP._5
873869 let bn = eP._6
874870 let cC = eP._7
875871 let cD = eP._8
876872 let cG = eP._9
877873 let ck = eP._10
878874 let cE = eP._11
879875 let cF = eP._12
880876 if ((eQ > 0))
881877 then throw("Unable to close position with bad debt")
882878 else {
883879 let eR = am(cz)
884880 let eS = (as() - eR)
885881 let eT = if ((0 > eS))
886882 then $Tuple2(0, am(eS))
887883 else $Tuple2(eS, 0)
888884 let eU = eT._1
889885 let eV = eT._2
890886 let eW = if ((eV > 0))
891887 then {
892888 let eX = invoke(U(), "withdraw", [eV], nil)
893889 if ((eX == eX))
894890 then nil
895891 else throw("Strict value is not equal to itself.")
896892 }
897893 else nil
898894 if ((eW == eW))
899895 then {
900896 let eO = invoke(S(), "unlockNeutrino", [(eR - eV), toBase58String(R())], nil)
901897 if ((eO == eO))
902898 then (((dP(toString(dU.caller)) ++ dJ(bm, bn, cC, cD, cG, cE, cF)) ++ dQ(dU.caller, eR)) ++ dT(eU))
903899 else throw("Strict value is not equal to itself.")
904900 }
905901 else throw("Strict value is not equal to itself.")
906902 }
907903 }
908904
909905
910906
911907 @Callable(dU)
912908 func liquidate (aU) = {
913909 let eY = if (bV())
914910 then cn(aU, ag)
915911 else cn(aU, af)
916912 if (if (if (if (!(aM(eY, aE(), false)))
917913 then true
918914 else !(aY(aU)))
919915 then true
920916 else !(aZ()))
921917 then true
922918 else ba())
923919 then throw("Unable to liquidate")
924920 else {
925921 let eZ = ct(aU)
926922 let cj = eZ._1
927923 let bH = eZ._2
928924 let ck = eZ._3
929925 let cz = eZ._4
930926 let bm = eZ._5
931927 let bn = eZ._6
932928 let cC = eZ._7
933929 let cD = eZ._8
934930 let cG = eZ._9
935931 let cB = eZ._10
936932 let cE = eZ._11
937933 let cF = eZ._12
938934 let fa = al(cB, aF())
939935 let fb = (fa / 2)
940936 let eH = (fa - fb)
941937 let fc = (as() - fa)
942938 let fd = if ((0 > fc))
943939 then $Tuple2(0, am(fc))
944940 else $Tuple2(fc, 0)
945941 let fe = fd._1
946942 let ff = fd._2
947943 let eW = if ((ff > 0))
948944 then {
949945 let eX = invoke(U(), "withdraw", [ff], nil)
950946 if ((eX == eX))
951947 then nil
952948 else throw("Strict value is not equal to itself.")
953949 }
954950 else nil
955951 if ((eW == eW))
956952 then {
957953 let eJ = invoke(U(), "deposit", nil, [AttachedPayment(R(), eH)])
958954 if ((eJ == eJ))
959955 then {
960956 let eO = invoke(S(), "unlockNeutrino", [(fb - ff), toBase58String(R())], nil)
961957 if ((eO == eO))
962958 then (((dP(aU) ++ dJ(bm, bn, cC, cD, cG, cE, cF)) ++ dQ(dU.caller, fb)) ++ dT(fc))
963959 else throw("Strict value is not equal to itself.")
964960 }
965961 else throw("Strict value is not equal to itself.")
966962 }
967963 else throw("Strict value is not equal to itself.")
968964 }
969965 }
970966
971967
972968
973969 @Callable(dU)
974970 func payFunding () = {
975971 let fg = aA()
976972 if (if (if ((fg > lastBlock.timestamp))
977973 then true
978974 else !(aZ()))
979975 then true
980976 else ba())
981977 then throw(((("Invalid funding block timestamp: " + toString(lastBlock.timestamp)) + " < ") + toString(fg)))
982978 else {
983979 let fh = bP()
984980 let fi = cH()
985981 let fj = (fi - fh)
986982 let fk = if (if ((aK() == 0))
987983 then true
988984 else (aL() == 0))
989985 then $Tuple2(0, 0)
990986 else if ((0 > fj))
991987 then {
992988 let fl = aj(al(fj, aC()), ad)
993989 let fm = aj(al(fl, aK()), aL())
994990 $Tuple2(fl, fm)
995991 }
996992 else {
997993 let fm = aj(al(fj, aC()), ad)
998994 let fl = aj(al(fm, aL()), aK())
999995 $Tuple2(fl, fm)
1000996 }
1001997 let fl = fk._1
1002998 let fm = fk._2
1003999 dn((fg + aD()), (aI() + fm), (aJ() + fl), aj(fm, fh), aj(fl, fh))
10041000 }
10051001 }
10061002
10071003
10081004
10091005 @Callable(dU)
10101006 func v_get (aU) = {
10111007 let fn = ct(aU)
10121008 let cj = fn._1
10131009 let ck = fn._2
10141010 let cl = fn._3
10151011 let fo = fn._4
10161012 throw((((ah(ck) + ah(cl)) + ah(fo)) + ah(cs(aU))))
10171013 }
10181014
10191015
10201016
10211017 @Callable(dU)
10221018 func view_calcRemainMarginWithFundingPayment (aU) = {
10231019 let fp = aT(aU)
10241020 let aX = fp._1
10251021 let cb = fp._2
10261022 let cp = fp._3
10271023 let cd = fp._4
10281024 let fq = bY(aU, af)
10291025 let cg = fq._1
10301026 let cm = fq._2
10311027 let fr = bx(aX, cb, cd, cm)
10321028 let bG = fr._1
10331029 let bH = fr._2
10341030 let bC = fr._3
10351031 throw(((ah(bG) + ah(bC)) + ah(cs(aU))))
10361032 }
10371033
10381034
10391035 @Verifier(fs)
10401036 func ft () = sigVerify(fs.bodyBytes, fs.proofs[0], Q())
10411037

github/deemru/w8io/169f3d6 
150.40 ms