tx · E5AveZhi12RNfidhzu9NkbAu8WsJrf4inH8HYKNb4ioS

3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS:  -0.04300000 Waves

2023.06.24 10:47 [2636406] smart account 3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS > SELF 0.00000000 Waves

{ "type": 13, "id": "E5AveZhi12RNfidhzu9NkbAu8WsJrf4inH8HYKNb4ioS", "fee": 4300000, "feeAssetId": null, "timestamp": 1687592844036, "version": 2, "chainId": 84, "sender": "3MvRWw2FPEimFCTGtK7qY9uAJbM7XJ4ZfJS", "senderPublicKey": "HP8sssVq1866F7CaPQJwgFrt6fsqhQjKwM84cL1wjD2a", "proofs": [ "27f5B8X9126AqvpHeZz9qCvyjssMfdfMLe99z7rW2C2vHChD7C61m5kc4wLyCRQL9tJRyWLSgvv3T1nkxbJxtLi7" ], "script": "base64:BgKKAQgCEgcKBQgBCAEBEgMKAQgSBAoCCAgSBQoDCBgYEgUKAwgBCBIECgIIARIGCgQBCAgBEgUKAwEICBIDCgEIEgMKAQgSBQoDCAgBEgYKBAgBCAgSDgoMCAgIAQQRGBgRAQEYEgoKCAgICAEECAEYEg4KDAgICAEEGBgYGBgBGBIKCggICAEBAQEBAWYAB1NGX1BPT0wCAlNGAAdXWF9QT09MAgJXWAAPQ0FQX0ZFRV9OT19MT0FOAgljYXBOb0xvYW4ADENBUF9GRUVfTE9BTgIHY2FwTG9hbgAUU1RPUExPU1NfRkVFX05PX0xPQU4CDnN0b3BMb3NzTm9Mb2FuAA1TVE9QTE9TU19MT0FOAgxzdG9wTG9zc0xvYW4ACExPQU5fRkVFAgRsb2FuAAtOT19MT0FOX0ZFRQIGbm9Mb2FuAAZOT19GRUUCBW5vRmVlAAZTQ0FMRTgAgMLXLwAHU0NBTEUxMACAyK+gJQAHU0NBTEUxNgkAtgIBAICAhP6m3uERAApGRUVfU0NBTEU2AMCEPQAUa1NGUG9vbEFBc3NldEJhbGFuY2UCD0FfYXNzZXRfYmFsYW5jZQAUa1NGUG9vbEJBc3NldEJhbGFuY2UCD0JfYXNzZXRfYmFsYW5jZQAPa1NGUG9vbEFBc3NldElkAgpBX2Fzc2V0X2lkAA9rU0ZQb29sQkFzc2V0SWQCCkJfYXNzZXRfaWQADmtTRlBvb2xTaGFyZUlkAg5zaGFyZV9hc3NldF9pZAASa1NGUG9vbFNoYXJlU3VwcGx5AhJzaGFyZV9hc3NldF9zdXBwbHkACmtTRlBvb2xGZWUCCmNvbW1pc3Npb24ADWtVc2VyUG9zaXRpb24CDl91c2VyX3Bvc2l0aW9uABFrVXNlclBvc2l0aW9uUG9vbAITX3VzZXJfcG9zaXRpb25fcG9vbAARa1VzZXJCb3Jyb3dBbW91bnQCHF91c2VyX3Bvc2l0aW9uX2JvcnJvd19hbW91bnQAEmtVc2VyQm9ycm93QXNzZXRJZAIeX3VzZXJfcG9zaXRpb25fYm9ycm93X2Fzc2V0X2lkABBrVXNlclBvc2l0aW9uTnVtAhVfdXNlcl9wb3NpdGlvbl9udW1iZXIAFWtVc2VyUG9zaXRpb25JbnRlcmVzdAIXX3VzZXJfcG9zaXRpb25faW50ZXJlc3QACmtQb29sVG90YWwCC19wb29sX3RvdGFsAA5rUG9vbFRvdGFsTG9hbgIQX3Bvb2xfdG90YWxfbG9hbgARa1Bvb2xJbnRlcmVzdExvYW4CE19wb29sX2ludGVyZXN0X2xvYW4AE2tQb29sSW50ZXJlc3ROb0xvYW4CFl9wb29sX2ludGVyZXN0X25vX2xvYW4AFWtBeGx5SW5GZWVXaXRob3V0TG9hbgIWX2F4bHlfZmVlX3dpdGhvdXRfbG9hbgASa0F4bHlJbkZlZVdpdGhMb2FuAhNfYXhseV9mZWVfd2l0aF9sb2FuABFrQXhseU5vTG9hbkNhcEZlZQIXX2F4bHlfZmVlX2NhcF93aXRoX2xvYW4AE2tBeGx5V2l0aExvYW5DYXBGZWUCFV9heGx5X2ZlZV9jYXBfbm9fbG9hbgAWa0F4bHlTdG9wTG9zc05vTG9hbkZlZQIcX2F4bHlfZmVlX3N0b3Bsb3NzX3dpdGhfbG9hbgAUa0F4bHlTdG9wTG9zc0xvYW5GZWUCGl9heGx5X2ZlZV9zdG9wbG9zc19ub19sb2FuAAprUmVxdWVzdElkAgtfcmVxdWVzdF9pZAAMa1JlcXVlc3RJdGVyAg1yZXF1ZXN0c19pdGVyAAVrUG9vbAIFcG9vbF8ACmtTaGFyZVBvb2wCDl9wb29sX3NoYXJlX2lkAA5rUG9vbENhcENoYW5nZQIQX3Bvb2xfY2FwX2NoYW5nZQAPa1Rva2VuTGFzdFByaWNlAgpsYXN0X3ByaWNlAA1rVXNlclN0b3BMb3NzAgpfc3RvcF9sb3NzAAlrTW9uZXlCb3gCDmF4bHlfbW9uZXlfYm94AA5rU0ZGYXJtaW5nQWRkcgITc3dvcGZpX2Zhcm1pbmdfYWRkcgAMa0xlbmRTZXJ2aWNlAhFsZW5kX3NlcnZpY2VfYWRkcgAMa0FkbWluQ2FsbFBLAhJhZG1pbl9jYWxsX3B1Yl9rZXkADGtQcmljZU9yYWNsZQIMcHJpY2Vfb3JhY2xlAAtrRXhDb250cmFjdAIRZXhjaGFuZ2VfY29udHJhY3QAD2tXeFN3YXBDb250cmFjdAIQd3hfc3dhcF9jb250cmFjdAAIbW9uZXlCb3gJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUJa01vbmV5Qm94AhhObyBheGx5IG1vbmV5Qm94IGFkZHJlc3MACmV4Q29udHJhY3QJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwULa0V4Q29udHJhY3QCHE5vIGV4Y2hhbmdlIGNvbnRyYWN0IGFkZHJlc3MAD3ByaWNlT3JhY2xlQWRkcgkBB0FkZHJlc3MBCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQxrUHJpY2VPcmFjbGUCF05vIHByaWNlIG9yYWNsZSBhZGRyZXNzAA53eFN3YXBDb250cmFjdAkBB0FkZHJlc3MBCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQ9rV3hTd2FwQ29udHJhY3QCEk5vIHd4IHN3YXAgYWRkcmVzcwAGU1dPUElEASA0ARNWjmBG4n5bqbgBR4LnsQAmEpt25E5LoqB8nG3ugQAEV1hJRAEgxlIegU7qbuM8wJewDl8s8mrp7Z2yhtGaQnioYH0+G7EBDmdldExlbmRTcnZBZGRyAAkBB0FkZHJlc3MBCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQxrTGVuZFNlcnZpY2UCG0Nhbid0IGdldCBsZW5kIHNlcnZpY2UgYWRkcgEQZ2V0QWRtaW5DYWxsQWRkcgAJAKcIAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUMa0FkbWluQ2FsbFBLAhRDYW4ndCBnZXQgYWRtaW4gYWRkcgELaXNBZG1pbkNhbGwBAWkDCQAAAggFAWkGY2FsbGVyCQEQZ2V0QWRtaW5DYWxsQWRkcgAFBHVuaXQJAAIBAiFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24BCmlzU2VsZkNhbGwBAWkDCQAAAggFAWkGY2FsbGVyBQR0aGlzBQR1bml0CQACAQIrT25seSBjb250cmFjdCBpdHNlbGYgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgEKaXNMYW5kQ2FsbAEBaQMJAAACCAUBaQZjYWxsZXIJAQ5nZXRMZW5kU3J2QWRkcgAFBHVuaXQJAAIBAilPbmx5IGxhbmQgY29udHJhY3QgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgEOYWNjb3VudEJhbGFuY2UBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCaWQFByRtYXRjaDAJAPAHAgUEdGhpcwUCaWQDCQABAgUHJG1hdGNoMAIEVW5pdAQFd2F2ZXMFByRtYXRjaDAICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQACAQILTWF0Y2ggZXJyb3IBDWdldFNGUG9vbERhdGEBCHBvb2xBZGRyCQCXCgUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQhwb29sQWRkcgUPa1NGUG9vbEFBc3NldElkAhlDYW4ndCBnZXQgcG9vbCBBIGFzc2V0IGlkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUIcG9vbEFkZHIFD2tTRlBvb2xCQXNzZXRJZAIZQ2FuJ3QgZ2V0IHBvb2wgQiBhc3NldCBpZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCHBvb2xBZGRyBRRrU0ZQb29sQUFzc2V0QmFsYW5jZQIeQ2FuJ3QgZ2V0IHBvb2wgQSBhc3NldCBiYWxhbmNlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUIcG9vbEFkZHIFFGtTRlBvb2xCQXNzZXRCYWxhbmNlAh5DYW4ndCBnZXQgcG9vbCBCIGFzc2V0IGJhbGFuY2UJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQhwb29sQWRkcgUOa1NGUG9vbFNoYXJlSWQCGENhbid0IGdldCBzaGFyZSBhc3NldCBpZAENZ2V0V1hQb29sRGF0YQEIcG9vbEFkZHIEA2NmZwoAAUAJAPwHBAUIcG9vbEFkZHICHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkFA25pbAUDbmlsAwkAAQIFAUACCUxpc3RbQW55XQUBQAkAAgEJAKwCAgkAAwEFAUACHiBjb3VsZG4ndCBiZSBjYXN0IHRvIExpc3RbQW55XQMJAAACBQNjZmcFA2NmZwQDYUlkCQETdmFsdWVPckVycm9yTWVzc2FnZQIKAAFACQCRAwIFA2NmZwAEAwkAAQIFAUACBlN0cmluZwUBQAUEdW5pdAIZQ2FuJ3QgZ2V0IHBvb2wgQSBhc3NldCBpZAQDYklkCQETdmFsdWVPckVycm9yTWVzc2FnZQIKAAFACQCRAwIFA2NmZwAFAwkAAQIFAUACBlN0cmluZwUBQAUEdW5pdAIZQ2FuJ3QgZ2V0IHBvb2wgQiBhc3NldCBpZAQHc2hhcmVJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCgABQAkAkQMCBQNjZmcAAwMJAAECBQFAAgZTdHJpbmcFAUAFBHVuaXQCGkNhbid0IGdldCBwb29sIExQIGFzc2V0IGlkBARiYWxBCgABQAkA/AcEBQhwb29sQWRkcgIcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQkAzAgCBQNhSWQFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAMJAAACBQRiYWxBBQRiYWxBBARiYWxCCgABQAkA/AcEBQhwb29sQWRkcgIcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQkAzAgCBQNiSWQFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAMJAAACBQRiYWxCBQRiYWxCCQCXCgUFA2FJZAUDYklkBQRiYWxBBQRiYWxCBQdzaGFyZUlkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQtnZXRQb29sRGF0YQIIcG9vbEFkZHIEdHlwZQMJAAACBQR0eXBlBQdTRl9QT09MCQENZ2V0U0ZQb29sRGF0YQEFCHBvb2xBZGRyAwkAAAIFBHR5cGUFB1dYX1BPT0wJAQ1nZXRXWFBvb2xEYXRhAQUIcG9vbEFkZHIJAAIBAg9Xcm9uZyBwb29sIHR5cGUBDmdldFNoYXJlU3VwcGx5Awhwb29sQWRkcgR0eXBlB3NoYXJlSWQDCQAAAgUEdHlwZQUHU0ZfUE9PTAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCHBvb2xBZGRyBRJrU0ZQb29sU2hhcmVTdXBwbHkCHENhbid0IGdldCBzaGFyZSBhc3NldCBzdXBwbHkDCQAAAgUEdHlwZQUHV1hfUE9PTAgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFB3NoYXJlSWQCDVdyb25nIFNoYXJlSWQIcXVhbnRpdHkJAAIBAg9Xcm9uZyBwb29sIHR5cGUBEWdldFBvb2xUb3RhbFNoYXJlAQRwb29sCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUKa1Bvb2xUb3RhbAAAARlnZXRQb29sVG90YWxTaGFyZVdpdGhMb2FuAQRwb29sCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUOa1Bvb2xUb3RhbExvYW4AAAEYZ2V0TmV3VXNlclBvc2l0aW9uTnVtYmVyAQR1c2VyCQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIFBHVzZXIFEGtVc2VyUG9zaXRpb25OdW0AAAABAQpnZXRBeGx5RmVlAgRwb29sB2ZlZVR5cGUDCQAAAgUHZmVlVHlwZQUMQ0FQX0ZFRV9MT0FOCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFE2tBeGx5V2l0aExvYW5DYXBGZWUDCQAAAgUHZmVlVHlwZQUPQ0FQX0ZFRV9OT19MT0FOCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFEWtBeGx5Tm9Mb2FuQ2FwRmVlAwkAAAIFB2ZlZVR5cGUFCExPQU5fRkVFCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFEmtBeGx5SW5GZWVXaXRoTG9hbgMJAAACBQdmZWVUeXBlBQtOT19MT0FOX0ZFRQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQRwb29sBRVrQXhseUluRmVlV2l0aG91dExvYW4DCQAAAgUHZmVlVHlwZQUGTk9fRkVFAAAJAAIBAg5Xcm9uZyBmZWUgdHlwZQEQZ2V0U0ZGYXJtaW5nQWRkcgAJAQdBZGRyZXNzAQkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUOa1NGRmFybWluZ0FkZHICHUNhbid0IGdldCBzd29wZmkgZmFybWluZyBhZGRyARBnZXRXWEZhcm1pbmdBZGRyAQhwb29sQWRkcgQJZkNvbnRyYWN0CQEHQWRkcmVzcwEJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCHBvb2xBZGRyAhMlc19fZmFjdG9yeUNvbnRyYWN0AiJDYW4ndCBnZXQgV1ggZmFjdG9yeSBjb250cmFjdCBhZGRyBApmYWN0cm95Q2ZnCQC1CQIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQlmQ29udHJhY3QCESVzX19mYWN0b3J5Q29uZmlnAhhDYW4ndCBnZXQgV1ggZmFjdG9yeSBjZmcCAl9fCQEHQWRkcmVzcwEJANkEAQkAkQMCBQpmYWN0cm95Q2ZnAAEBDGFzc2V0SWRUb1N0cgEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJpZAUHJG1hdGNoMAkA2AQBBQJpZAMJAAECBQckbWF0Y2gwAgRVbml0BAV3YXZlcwUHJG1hdGNoMAIFV0FWRVMJAAIBAgtNYXRjaCBlcnJvcgEOYXNzZXRJZEZyb21TdHIBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMFBHVuaXQJANkEAQUHYXNzZXRJZAEQZ2V0QXNzZXREZWNpbWFscwEHYXNzZXRJZAMJAAACBQdhc3NldElkAgVXQVZFUwAIBAckbWF0Y2gwCQDsBwEJANkEAQUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgVBc3NldAQFYXNzZXQFByRtYXRjaDAIBQVhc3NldAhkZWNpbWFscwkAAgECEENhbid0IGZpbmQgYXNzZXQBEWdldEFzc2V0UHJlY2l0aW9uAQdhc3NldElkCQBsBgAKAAAJARBnZXRBc3NldERlY2ltYWxzAQUHYXNzZXRJZAAAAAAFBERPV04BDmdldEFzc2V0c1ByaWNlAQhhc3NldElkcwoBCWdldFByaWNlcwIBYQdhc3NldElkBAphc3NldFByaWNlCAoAAUAJAPwHBAUPcHJpY2VPcmFjbGVBZGRyAglnZXRUV0FQNjAJAMwIAgUHYXNzZXRJZAkAzAgCBwUDbmlsBQNuaWwDCQABAgUBQAIKKEludCwgSW50KQUBQAkAAgEJAKwCAgkAAwEFAUACHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkCXzIJAM0IAgUBYQUKYXNzZXRQcmljZQoAAiRsBQhhc3NldElkcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJZ2V0UHJpY2VzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA1MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIBDWdldFNoYXJlUHJpY2UBB3NoYXJlSWQEBHBvb2wJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIFB3NoYXJlSWQFCmtTaGFyZVBvb2wCIENhbid0IGZpbmQgcG9vbCBhZGRyIGJ5IHNoYXJlIGlkBAhwb29sQWRkcgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAISUG9vbCBpcyBub3QgaW5pdGVkBAskdDA4ODQ1ODkxMAkBC2dldFBvb2xEYXRhAgUIcG9vbEFkZHIFBXBUeXBlBANhSWQIBQskdDA4ODQ1ODkxMAJfMQQDYklkCAULJHQwODg0NTg5MTACXzIECGFCYWxhbmNlCAULJHQwODg0NTg5MTACXzMECGJCYWxhbmNlCAULJHQwODg0NTg5MTACXzQEB2RQcmljZUEICgABQAkA/AcEBQ9wcmljZU9yYWNsZUFkZHICCWdldFRXQVA2MAkAzAgCBQNhSWQJAMwIAgcFA25pbAUDbmlsAwkAAQIFAUACCihJbnQsIEludCkFAUAJAAIBCQCsAgIJAAMBBQFAAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpAl8yBAdkUHJpY2VCCAoAAUAJAPwHBAUPcHJpY2VPcmFjbGVBZGRyAglnZXRUV0FQNjAJAMwIAgUDYklkCQDMCAIHBQNuaWwFA25pbAMJAAECBQFAAgooSW50LCBJbnQpBQFACQACAQkArAICCQADAQUBQAIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQJfMgQLc2hhcmVTdXBwbHkJAQ5nZXRTaGFyZVN1cHBseQMFCHBvb2xBZGRyBQVwVHlwZQUHc2hhcmVJZAQKQVByZWNpc2lvbgkAbAYACgAACQEQZ2V0QXNzZXREZWNpbWFscwEFA2FJZAAAAAAFBERPV04ECkJQcmVjaXNpb24JAGwGAAoAAAkBEGdldEFzc2V0RGVjaW1hbHMBBQNiSWQAAAAABQRET1dOBA5zaGFyZVByZWNpc2lvbgkAbAYACgAACQEQZ2V0QXNzZXREZWNpbWFscwEFB3NoYXJlSWQAAAAABQRET1dOBANzdW0JAGQCCQBrAwUIYUJhbGFuY2UFB2RQcmljZUEFCkFQcmVjaXNpb24JAGsDBQhiQmFsYW5jZQUHZFByaWNlQgUKQlByZWNpc2lvbgkAawMFA3N1bQUOc2hhcmVQcmVjaXNpb24FC3NoYXJlU3VwcGx5AQ5nZXRTaGFyZVByaWNlcwEIc2hhcmVJZHMKAQlnZXRQcmljZXMCAWEHc2hhcmVJZAkAzQgCBQFhCQENZ2V0U2hhcmVQcmljZQEFB3NoYXJlSWQKAAIkbAUIc2hhcmVJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCWdldFByaWNlcwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUAQ5nZXRDdXJzRW50cmllcwMDYUlkA2JJZAdzaGFyZUlkBAxhc3NldHNQcmljZXMJAQ5nZXRBc3NldHNQcmljZQEJAMwIAgUDYUlkCQDMCAIFA2JJZAUDbmlsBApzaGFyZVByaWNlCQENZ2V0U2hhcmVQcmljZQEFB3NoYXJlSWQEBnByaWNlcwkAzAgCCQCkAwEJAJEDAgUMYXNzZXRzUHJpY2VzAAAJAMwIAgkApAMBCQCRAwIFDGFzc2V0c1ByaWNlcwABCQDMCAIJAKQDAQUKc2hhcmVQcmljZQUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIFD2tUb2tlbkxhc3RQcmljZQkAuQkCBQZwcmljZXMCASwFA25pbAEYY2FsY1JlcGxlbmlzaEJ5VHdvVG9rZW5zCAVwVHlwZQhwb29sQWRkcgRwbXRBA2FJZARwbXRCA2JJZARiYWxBBGJhbEIDCQAAAgUFcFR5cGUFB1NGX1BPT0wEBHJlcGwKAAFACQD8BwQFCHBvb2xBZGRyAgxjYWxsRnVuY3Rpb24JAMwIAgIgY2FsY0xQUmVwbGVuaXNoVHdvVG9rZW5zUkVBRE9OTFkJAMwIAgkAzAgCCQCkAwEFBHBtdEEJAMwIAgkApAMBBQRwbXRCBQNuaWwFA25pbAUDbmlsAwkAAQIFAUACCUxpc3RbQW55XQUBQAkAAgEJAKwCAgkAAwEFAUACHiBjb3VsZG4ndCBiZSBjYXN0IHRvIExpc3RbQW55XQMJAAACBQRyZXBsBQRyZXBsCQCXCgUKAAFACQCRAwIFBHJlcGwAAwMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQKAAFACQCRAwIFBHJlcGwABAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQKAAFACQCRAwIFBHJlcGwAAQMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQJAQxhc3NldElkVG9TdHIBCgABQAkAkQMCBQRyZXBsAAIDCQABAgUBQAIPQnl0ZVZlY3RvcnxVbml0BQFACQACAQkArAICCQADAQUBQAIkIGNvdWxkbid0IGJlIGNhc3QgdG8gQnl0ZVZlY3RvcnxVbml0CgABQAkAkQMCBQRyZXBsAAADCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBA0kdDAxMDQ2NTEwNzE1CQCUCgIJALUJAgoAAUAJAPwHBAUIcG9vbEFkZHICIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZCQDMCAIFBHBtdEEFA25pbAUDbmlsAwkAAQIFAUACBlN0cmluZwUBQAkAAgEJAKwCAgkAAwEFAUACGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwICX18JALUJAgoAAUAJAPwHBAUIcG9vbEFkZHICH2V2YWx1YXRlUHV0QnlQcmljZUFzc2V0UkVBRE9OTFkJAMwIAgUEcG10QgUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nAgJfXwMJAAACBQ0kdDAxMDQ2NTEwNzE1BQ0kdDAxMDQ2NTEwNzE1BApldmFsUHV0SW5CCAUNJHQwMTA0NjUxMDcxNQJfMgQKZXZhbFB1dEluQQgFDSR0MDEwNDY1MTA3MTUCXzEEBWxwSW5BCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKZXZhbFB1dEluQQABBAVscEluQgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmV2YWxQdXRJbkIAAQMJAGYCBQVscEluQgUFbHBJbkEEA3BtdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmV2YWxQdXRJbkEACAkAlwoFBQRwbXRBBQNwbXQJAGUCBQRwbXRCBQNwbXQFA2JJZAUFbHBJbkIEA3BtdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmV2YWxQdXRJbkEACAkAlwoFBQNwbXQFBHBtdEIJAGUCBQRwbXRBBQNwbXQFA2FJZAUFbHBJbkEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BGHJlcGxlbmlzaFR3b1Rva2Vuc0J5VHlwZQYIcG9vbEFkZHIFcFR5cGUEcG10QQNhSWQEcG10QgNiSWQECHBheW1lbnRzCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQNhSWQFBHBtdEEJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEFA2JJZAUEcG10QgUDbmlsAwkAAAIFBXBUeXBlBQdTRl9QT09MCQD8BwQFCHBvb2xBZGRyAgxjYWxsRnVuY3Rpb24JAMwIAgIWcmVwbGVuaXNoV2l0aFR3b1Rva2VucwkAzAgCCQDMCAICBWZhbHNlCQDMCAICATAFA25pbAUDbmlsBQhwYXltZW50cwkA/AcEBQhwb29sQWRkcgIDcHV0CQDMCAIAwIQ9CQDMCAIHBQNuaWwFCHBheW1lbnRzARdyZXBsZW5pc2hPbmVUb2tlbkJ5VHlwZQQIcG9vbEFkZHIFcFR5cGUDcG10BXBtdElkBAhwYXltZW50cwkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUFcG10SWQFA3BtdAUDbmlsAwkAAAIFBXBUeXBlBQdTRl9QT09MCQD8BwQFCHBvb2xBZGRyAgxjYWxsRnVuY3Rpb24JAMwIAgIVcmVwbGVuaXNoV2l0aE9uZVRva2VuCQDMCAIJAMwIAgIBMAkAzAgCAgVmYWxzZQkAzAgCAgEwBQNuaWwFA25pbAUIcGF5bWVudHMJAPwHBAUIcG9vbEFkZHICCXB1dE9uZVRrbgkAzAgCAAAJAMwIAgcFA25pbAUIcGF5bWVudHMBB3N0YWtlTFAEBHBvb2wFcFR5cGUHc2hhcmVJZAZhbW91bnQECHBheW1lbnRzCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFB3NoYXJlSWQFBmFtb3VudAUDbmlsAwkAAAIFBXBUeXBlBQdTRl9QT09MCQD8BwQJARBnZXRTRkZhcm1pbmdBZGRyAAIPbG9ja1NoYXJlVG9rZW5zCQDMCAIFBHBvb2wJAMwIAgAABQNuaWwFCHBheW1lbnRzCQD8BwQJARBnZXRXWEZhcm1pbmdBZGRyAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUEcG9vbAIFc3Rha2UFA25pbAUIcGF5bWVudHMBCXVuc3Rha2VMUAQEcG9vbAVwVHlwZQdzaGFyZUlkBmFtb3VudAQNJHQwMTIyMDAxMjU1NwMJAAACBQVwVHlwZQUHU0ZfUE9PTAkAlQoDCQEQZ2V0U0ZGYXJtaW5nQWRkcgACE3dpdGhkcmF3U2hhcmVUb2tlbnMJAMwIAgUEcG9vbAkAzAgCBQZhbW91bnQFA25pbAMJAAACBQVwVHlwZQUHV1hfUE9PTAkAlQoDCQEQZ2V0V1hGYXJtaW5nQWRkcgEJAQdBZGRyZXNzAQkA2QQBBQRwb29sAgd1bnN0YWtlCQDMCAIFB3NoYXJlSWQJAMwIAgUGYW1vdW50BQNuaWwJAAIBAg9Xcm9uZyBwb29sIHR5cGUECGZhcm1BZGRyCAUNJHQwMTIyMDAxMjU1NwJfMQQFZk5hbWUIBQ0kdDAxMjIwMDEyNTU3Al8yBAZwYXJhbXMIBQ0kdDAxMjIwMDEyNTU3Al8zBANpbnYJAPwHBAUIZmFybUFkZHIFBWZOYW1lBQZwYXJhbXMFA25pbAMJAAACBQNpbnYFA2ludgUGYW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARFjYWxjQW1vdW50VG9QYXlTRgcEcG9vbAhhc3NldElkQQhhc3NldElkQgRiYWxBBGJhbEIQYW1vdW50VG9rZW5Ub0dldA9hc3NldFRva2VuVG9HZXQECHBvb2xBZGRyCQEHQWRkcmVzcwEJANkEAQUEcG9vbAQJZmVlU2NhbGU2AMCEPQQDZmVlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQhwb29sQWRkcgUKa1NGUG9vbEZlZQQMYW1udEdldE5vRmVlCQBrAwUQYW1vdW50VG9rZW5Ub0dldAUJZmVlU2NhbGU2CQBlAgUJZmVlU2NhbGU2BQNmZWUEDSR0MDEyOTcwMTMyNTgDCQAAAgUPYXNzZXRUb2tlblRvR2V0BQhhc3NldElkQQQLYW1vdW50VG9QYXkJAGsDBQRiYWxBBQxhbW50R2V0Tm9GZWUJAGUCBQRiYWxCBQxhbW50R2V0Tm9GZWUJAJQKAgULYW1vdW50VG9QYXkFCGFzc2V0SWRCBAthbW91bnRUb1BheQkAawMFBGJhbEIFDGFtbnRHZXROb0ZlZQkAZQIFBGJhbEEFDGFtbnRHZXROb0ZlZQkAlAoCBQthbW91bnRUb1BheQUIYXNzZXRJZEEEC2Ftb3VudFRvUGF5CAUNJHQwMTI5NzAxMzI1OAJfMQQKYXNzZXRUb1BheQgFDSR0MDEyOTcwMTMyNTgCXzIJAJQKAgUKYXNzZXRUb1BheQULYW1vdW50VG9QYXkBEWNhbGNBbW91bnRUb1BheVdYBwRwb29sCGFzc2V0SWRBCGFzc2V0SWRCBGJhbEEEYmFsQhBhbW91bnRUb2tlblRvR2V0D2Fzc2V0VG9rZW5Ub0dldAQFcHJGZWUJARFAZXh0ck5hdGl2ZSgxMDUwKQIFDnd4U3dhcENvbnRyYWN0Ag8lc19fcHJvdG9jb2xGZWUEBHBGZWUJARFAZXh0ck5hdGl2ZSgxMDUwKQIFDnd4U3dhcENvbnRyYWN0Agslc19fcG9vbEZlZQQIZmVlU2NhbGUJALYCAQCAwtcvBA0kdDAxMzU5NzEzOTA1AwkAAAIFD2Fzc2V0VG9rZW5Ub0dldAUIYXNzZXRJZEEEC2Ftb3VudFRvUGF5CQBrAwUEYmFsQQUQYW1vdW50VG9rZW5Ub0dldAkAZQIFBGJhbEIFEGFtb3VudFRva2VuVG9HZXQJAJQKAgULYW1vdW50VG9QYXkFCGFzc2V0SWRCBAthbW91bnRUb1BheQkAawMFBGJhbEIFEGFtb3VudFRva2VuVG9HZXQJAGUCBQRiYWxBBRBhbW91bnRUb2tlblRvR2V0CQCUCgIFC2Ftb3VudFRvUGF5BQhhc3NldElkQQQLYW1vdW50VG9QYXkIBQ0kdDAxMzU5NzEzOTA1Al8xBAphc3NldFRvUGF5CAUNJHQwMTM1OTcxMzkwNQJfMgQSYW1vdW50VG9QYXlXaXRoRmVlCQCgAwEJALwCAwkAtgIBBQthbW91bnRUb1BheQUIZmVlU2NhbGUJALgCAgUIZmVlU2NhbGUJALYCAQkAZAIFBXByRmVlBQRwRmVlCQCUCgIFCmFzc2V0VG9QYXkFEmFtb3VudFRvUGF5V2l0aEZlZQEQZXhjaGFuZ2VEaXJlY3RseQgEdHlwZQRwb29sCGFzc2V0SWRBCGFzc2V0SWRCBGJhbEEEYmFsQhBhbW91bnRUb2tlblRvR2V0D2Fzc2V0VG9rZW5Ub0dldAMJAAACBQR0eXBlBQdTRl9QT09MBA0kdDAxNDI0MzE0MzY1CQERY2FsY0Ftb3VudFRvUGF5U0YHBQRwb29sBQhhc3NldElkQQUIYXNzZXRJZEIFBGJhbEEFBGJhbEIFEGFtb3VudFRva2VuVG9HZXQFD2Fzc2V0VG9rZW5Ub0dldAQKYXNzZXRUb1BheQgFDSR0MDE0MjQzMTQzNjUCXzEEC2Ftb3VudFRvUGF5CAUNJHQwMTQyNDMxNDM2NQJfMgkA/AcECQERQGV4dHJOYXRpdmUoMTA2MikBBQRwb29sAgxjYWxsRnVuY3Rpb24JAMwIAgIIZXhjaGFuZ2UJAMwIAgkAzAgCAgExBQNuaWwFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUKYXNzZXRUb1BheQULYW1vdW50VG9QYXkFA25pbAQNJHQwMTQ1MTYxNDYzOAkBEWNhbGNBbW91bnRUb1BheVdYBwUEcG9vbAUIYXNzZXRJZEEFCGFzc2V0SWRCBQRiYWxBBQRiYWxCBRBhbW91bnRUb2tlblRvR2V0BQ9hc3NldFRva2VuVG9HZXQECmFzc2V0VG9QYXkIBQ0kdDAxNDUxNjE0NjM4Al8xBAthbW91bnRUb1BheQgFDSR0MDE0NTE2MTQ2MzgCXzIJAPwHBAUOd3hTd2FwQ29udHJhY3QCBHN3YXAJAMwIAgABCQDMCAIFD2Fzc2V0VG9rZW5Ub0dldAkAzAgCCQClCAEFBHRoaXMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkBDmFzc2V0SWRGcm9tU3RyAQUKYXNzZXRUb1BheQULYW1vdW50VG9QYXkFA25pbAETY2FsY1JlcGxlbmlzaExQVmlydAgFcFR5cGUEcG9vbARwbXRBA2FJZARwbXRCA2JJZARiYWxBBGJhbEIECHBvb2xBZGRyCQERQGV4dHJOYXRpdmUoMTA2MikBBQRwb29sAwkAAAIFBXBUeXBlBQdTRl9QT09MBANpbnYKAAFACQD8BwQFCHBvb2xBZGRyAgxjYWxsRnVuY3Rpb24JAMwIAgIfY2FsY0xQUmVwbGVuaXNoRGlmZlByb3BSRUFET05MWQkAzAgCCQDMCAIJAKQDAQUEcG10QQkAzAgCCQCkAwEFBHBtdEIJAMwIAgIBMAUDbmlsBQNuaWwFA25pbAMJAAECBQFAAglMaXN0W0FueV0FAUAJAAIBCQCsAgIJAAMBBQFAAh4gY291bGRuJ3QgYmUgY2FzdCB0byBMaXN0W0FueV0DCQAAAgUDaW52BQNpbnYJAJQKAgoAAUAJAJEDAgUDaW52AAADCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CgABQAkAkQMCBQNpbnYAAQMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAgUFcFR5cGUFB1dYX1BPT0wEDSR0MDE1MjI2MTU1NjcDAwkAZgIFBHBtdEEAAAkAZgIFBHBtdEIAAAcEDSR0MDE1MzA3MTU0MzMJARhjYWxjUmVwbGVuaXNoQnlUd29Ub2tlbnMIBQVwVHlwZQUIcG9vbEFkZHIFBHBtdEEFA2FJZAUEcG10QgUDYklkBQRiYWxBBQRiYWxCBAZwbXRJbkEIBQ0kdDAxNTMwNzE1NDMzAl8xBAZwbXRJbkIIBQ0kdDAxNTMwNzE1NDMzAl8yBAZjaGFuZ2UIBQ0kdDAxNTMwNzE1NDMzAl8zBAhjaGFuZ2VJZAgFDSR0MDE1MzA3MTU0MzMCXzQECGxwQW1vdW50CAUNJHQwMTUzMDcxNTQzMwJfNQkAlQoDBQZjaGFuZ2UFCGNoYW5nZUlkBQhscEFtb3VudAMJAGYCBQRwbXRBAAAJAJUKAwUEcG10QQUDYUlkAAAJAJUKAwUEcG10QgUDYklkAAAEBmNoYW5nZQgFDSR0MDE1MjI2MTU1NjcCXzEECGNoYW5nZUlkCAUNJHQwMTUyMjYxNTU2NwJfMgQFbHBUd28IBQ0kdDAxNTIyNjE1NTY3Al8zBA0kdDAxNTU3NDE1NzkwAwkAZgIFBmNoYW5nZQAABANpbnYKAAFACQD8BwQFCHBvb2xBZGRyAhFwdXRPbmVUa25SRUFET05MWQkAzAgCBQhjaGFuZ2VJZAkAzAgCBQZjaGFuZ2UFA25pbAUDbmlsAwkAAQIFAUACDyhJbnQsIEludCwgSW50KQUBQAkAAgEJAKwCAgkAAwEFAUACJCBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCwgSW50KQMJAAACBQNpbnYFA2ludgkAlAoCCAUDaW52Al8xCAUDaW52Al8zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCUCgIAAAAABAVscE9uZQgFDSR0MDE1NTc0MTU3OTACXzEEBGxvc3MIBQ0kdDAxNTU3NDE1NzkwAl8yCQCUCgIJAGQCBQVscFR3bwUFbHBPbmUFBGxvc3MJAAIBAg9Xcm9uZyBwb29sIHR5cGUBEmNhbGNXaXRoZHJhd0xQVmlydAoFcFR5cGUEcG9vbAhscEFtb3VudAdzaGFyZUlkA2FJZANiSWQEYmFsQQRiYWxCDGJvcnJvd0Ftb3VudA1ib3Jyb3dBc3NldElkBAhwb29sQWRkcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUEcG9vbAQNJHQwMTYwODQxNjU4NAMJAAACBQVwVHlwZQUHU0ZfUE9PTAQDaW52CgABQAkA/AcEBQhwb29sQWRkcgIMY2FsbEZ1bmN0aW9uCQDMCAICEHdpdGhkcmF3UkVBRE9OTFkJAMwIAgkAzAgCCQCkAwEFCGxwQW1vdW50CQDMCAIJAKQDAQUEYmFsQQkAzAgCCQCkAwEFBGJhbEIFA25pbAUDbmlsBQNuaWwDCQABAgUBQAIJTGlzdFtBbnldBQFACQACAQkArAICCQADAQUBQAIeIGNvdWxkbid0IGJlIGNhc3QgdG8gTGlzdFtBbnldAwkAAAIFA2ludgUDaW52CQCUCgIKAAFACQCRAwIFA2ludgAAAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAoAAUAJAJEDAgUDaW52AAEDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFBXBUeXBlBQdXWF9QT09MBANnZXQJALUJAgoAAUAJAPwHBAUIcG9vbEFkZHICE2V2YWx1YXRlR2V0UkVBRE9OTFkJAMwIAgUHc2hhcmVJZAkAzAgCBQhscEFtb3VudAUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nAgJfXwMJAAACBQNnZXQFA2dldAkAlAoCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDZ2V0AAEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNnZXQAAgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECD1dyb25nIHBvb2wgdHlwZQQKZ2V0QW1vdW50QQgFDSR0MDE2MDg0MTY1ODQCXzEECmdldEFtb3VudEIIBQ0kdDAxNjA4NDE2NTg0Al8yAwkAZgIFDGJvcnJvd0Ftb3VudAAABA1hbW91bnRUb0dldEV4AwMJAAACBQ1ib3Jyb3dBc3NldElkBQNhSWQJAGYCBQxib3Jyb3dBbW91bnQFCmdldEFtb3VudEEHCQBlAgUMYm9ycm93QW1vdW50BQpnZXRBbW91bnRBAwMJAAACBQ1ib3Jyb3dBc3NldElkBQNiSWQJAGYCBQxib3Jyb3dBbW91bnQFCmdldEFtb3VudEIHCQBlAgUMYm9ycm93QW1vdW50BQpnZXRBbW91bnRCAAAEDSR0MDE2ODYyMTcxNjUDCQBmAgUNYW1vdW50VG9HZXRFeAAAAwkAAAIFBXBUeXBlBQdTRl9QT09MCQERY2FsY0Ftb3VudFRvUGF5U0YHBQRwb29sBQNhSWQFA2JJZAUEYmFsQQUEYmFsQgUNYW1vdW50VG9HZXRFeAUNYm9ycm93QXNzZXRJZAkBEWNhbGNBbW91bnRUb1BheVdYBwUEcG9vbAUDYUlkBQNiSWQFBGJhbEEFBGJhbEIFDWFtb3VudFRvR2V0RXgFDWJvcnJvd0Fzc2V0SWQJAJQKAgIAAAAECmFzc2V0VG9QYXkIBQ0kdDAxNjg2MjE3MTY1Al8xBAthbW91bnRUb1BheQgFDSR0MDE2ODYyMTcxNjUCXzIDCQAAAgUNYm9ycm93QXNzZXRJZAUDYUlkCQCUCgIJAGUCCQBkAgUKZ2V0QW1vdW50QQUNYW1vdW50VG9HZXRFeAUMYm9ycm93QW1vdW50CQBlAgUKZ2V0QW1vdW50QgULYW1vdW50VG9QYXkJAJQKAgkAZQIFCmdldEFtb3VudEEFC2Ftb3VudFRvUGF5CQBlAgkAZAIFCmdldEFtb3VudEIFDWFtb3VudFRvR2V0RXgFDGJvcnJvd0Ftb3VudAkAlAoCBQpnZXRBbW91bnRBBQpnZXRBbW91bnRCAQtjbGFpbUZhcm1lZAIEdHlwZQRwb29sAwkAAAIFBHR5cGUFB1NGX1BPT0wECWJhbEJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQUGU1dPUElEAwkAAAIFCWJhbEJlZm9yZQUJYmFsQmVmb3JlBANpbnYJAPwHBAkBEGdldFNGRmFybWluZ0FkZHIAAgVjbGFpbQkAzAgCBQRwb29sBQNuaWwFA25pbAMJAAACBQNpbnYFA2ludgQIYmFsQWZ0ZXIJAQ5hY2NvdW50QmFsYW5jZQEFBlNXT1BJRAkAlAoCCQBlAgUIYmFsQWZ0ZXIFCWJhbEJlZm9yZQUGU1dPUElECQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFBHR5cGUFB1dYX1BPT0wECWJhbEJlZm9yZQkBDmFjY291bnRCYWxhbmNlAQUEV1hJRAMJAAACBQliYWxCZWZvcmUFCWJhbEJlZm9yZQQDaW52CQD8BwQJARBnZXRXWEZhcm1pbmdBZGRyAQkBB0FkZHJlc3MBCQDZBAEFBHBvb2wCB2NsYWltV1gJAMwIAgUEcG9vbAUDbmlsBQNuaWwDCQAAAgUDaW52BQNpbnYECGJhbEFmdGVyCQEOYWNjb3VudEJhbGFuY2UBBQRXWElECQCUCgIJAGUCBQhiYWxBZnRlcgUJYmFsQmVmb3JlBQRXWElECQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIPV3JvbmcgcG9vbCB0eXBlAQ9yZXBsZW5pc2hCeVR5cGUKBXBUeXBlBHBvb2wHZmVlVHlwZQRwbXRBA2FJZARwbXRCA2JJZARiYWxBBGJhbEIETFBJZAQPbHBCYWxhbmNlQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBCQDZBAEFBExQSWQDCQAAAgUPbHBCYWxhbmNlQmVmb3JlBQ9scEJhbGFuY2VCZWZvcmUECHBvb2xBZGRyCQERQGV4dHJOYXRpdmUoMTA2MikBBQRwb29sBA0kdDAxODM2MjE4Nzc4AwMJAGYCBQRwbXRBAAAJAGYCBQRwbXRCAAAHBA0kdDAxODQyODE4NTQ0CQEYY2FsY1JlcGxlbmlzaEJ5VHdvVG9rZW5zCAUFcFR5cGUFCHBvb2xBZGRyBQRwbXRBBQNhSWQFBHBtdEIFA2JJZAUEYmFsQQUEYmFsQgQGcG10SW5BCAUNJHQwMTg0MjgxODU0NAJfMQQGcG10SW5CCAUNJHQwMTg0MjgxODU0NAJfMgQGY2hhbmdlCAUNJHQwMTg0MjgxODU0NAJfMwQIY2hhbmdlSWQIBQ0kdDAxODQyODE4NTQ0Al80BANpbnYJARhyZXBsZW5pc2hUd29Ub2tlbnNCeVR5cGUGBQhwb29sQWRkcgUFcFR5cGUFBnBtdEluQQUDYUlkBQZwbXRJbkIFA2JJZAMJAAACBQNpbnYFA2ludgkAlAoCBQZjaGFuZ2UFCGNoYW5nZUlkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAZgIFBHBtdEEAAAkAlAoCBQRwbXRBBQNhSWQDCQBmAgUEcG10QgAACQCUCgIFBHBtdEIFA2JJZAkAAgECEHBtdHMgbXVzdCBiZSA+IDAEBmNoYW5nZQgFDSR0MDE4MzYyMTg3NzgCXzEECGNoYW5nZUlkCAUNJHQwMTgzNjIxODc3OAJfMgQDaW52AwkAZgIFBmNoYW5nZQAACQEXcmVwbGVuaXNoT25lVG9rZW5CeVR5cGUEBQhwb29sQWRkcgUFcFR5cGUFBmNoYW5nZQUIY2hhbmdlSWQFA25pbAMJAAACBQNpbnYFA2ludgQObHBCYWxhbmNlQWZ0ZXIJAQ5hY2NvdW50QmFsYW5jZQEJANkEAQUETFBJZAQLdG90YWxTdGFrZWQJAGUCBQ5scEJhbGFuY2VBZnRlcgUPbHBCYWxhbmNlQmVmb3JlBA1heGx5RmVlQW1vdW50CQBrAwULdG90YWxTdGFrZWQJAQpnZXRBeGx5RmVlAgUEcG9vbAUHZmVlVHlwZQUKRkVFX1NDQUxFNgQRdXNlclNoYXJlRm9yU3Rha2UJAGUCBQt0b3RhbFN0YWtlZAUNYXhseUZlZUFtb3VudAMJAGcCAAAFEXVzZXJTaGFyZUZvclN0YWtlCQACAQIoYW1vdW50IG9mIHN0YWtlZCBzaGFyZXRva2VucyBtdXN0IGJlID4gMAQFaW52TFAJAQdzdGFrZUxQBAUEcG9vbAUFcFR5cGUFBExQSWQFEXVzZXJTaGFyZUZvclN0YWtlAwkAAAIFBWludkxQBQVpbnZMUAkAlAoCBRF1c2VyU2hhcmVGb3JTdGFrZQUNYXhseUZlZUFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEQcmVwbGVuaXNoRW50cmllcwgEcG9vbAR1c2VyDHN0YWtlZEFtb3VudA1heGx5RmVlQW1vdW50BnBvc051bQdzaGFyZUlkBHR5cGUId2l0aExvYW4EC3RvdGFsQW1vdW50CQERZ2V0UG9vbFRvdGFsU2hhcmUBBQRwb29sBA90b3RhbEFtb3VudExvYW4JARlnZXRQb29sVG90YWxTaGFyZVdpdGhMb2FuAQUEcG9vbAQNJHQwMTk2MzYxOTg3NAMFCHdpdGhMb2FuCQCUCgIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUEcG9vbAURa1Bvb2xJbnRlcmVzdExvYW4JAGQCBQ90b3RhbEFtb3VudExvYW4FDHN0YWtlZEFtb3VudAkAlAoCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFE2tQb29sSW50ZXJlc3ROb0xvYW4FD3RvdGFsQW1vdW50TG9hbgQPY3VyUG9vbEludGVyZXN0CAUNJHQwMTk2MzYxOTg3NAJfMQQTdG90YWxTdGFrZWRXaXRoTG9hbggFDSR0MDE5NjM2MTk4NzQCXzIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUKa1Bvb2xUb3RhbAkAZAIFC3RvdGFsQW1vdW50BQxzdGFrZWRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUOa1Bvb2xUb3RhbExvYW4FE3RvdGFsU3Rha2VkV2l0aExvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfCQCkAwEFBnBvc051bQUNa1VzZXJQb3NpdGlvbgUMc3Rha2VkQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkApAMBBQZwb3NOdW0FFWtVc2VyUG9zaXRpb25JbnRlcmVzdAUPY3VyUG9vbEludGVyZXN0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFBHVzZXICAV8JAKQDAQUGcG9zTnVtBRFrVXNlclBvc2l0aW9uUG9vbAUEcG9vbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyBRBrVXNlclBvc2l0aW9uTnVtBQZwb3NOdW0JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUIbW9uZXlCb3gFDWF4bHlGZWVBbW91bnQJANkEAQUHc2hhcmVJZAUDbmlsAQ5leGNoYW5nZUtlZXBlcgoHdG9Ub2tlbglwbXRBbW91bnQIcG10QXNzZXQJYW1vdW50c0luCWFkZHJlc3Nlcw9hc3NldHNUb1JlY2VpdmULZXN0UmVjZWl2ZWQRc2xpcHBhZ2VUb2xlcmFuY2ULbWluUmVjZWl2ZWQHb3B0aW9ucwQSdG9rZW5CYWxhbmNlQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQd0b1Rva2VuAwkAAAIFEnRva2VuQmFsYW5jZUJlZm9yZQUSdG9rZW5CYWxhbmNlQmVmb3JlBANpbnYJAPwHBAUKZXhDb250cmFjdAIEc3dhcAkAzAgCBQlhbW91bnRzSW4JAMwIAgUJYWRkcmVzc2VzCQDMCAIFD2Fzc2V0c1RvUmVjZWl2ZQkAzAgCBQtlc3RSZWNlaXZlZAkAzAgCBRFzbGlwcGFnZVRvbGVyYW5jZQkAzAgCBQttaW5SZWNlaXZlZAkAzAgCBQdvcHRpb25zBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCHBtdEFzc2V0BQlwbXRBbW91bnQFA25pbAMJAAACBQNpbnYFA2ludgkAZQIJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFB3RvVG9rZW4FEnRva2VuQmFsYW5jZUJlZm9yZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEOZXhjaGFuZ2VQdXp6bGUGB3RvVG9rZW4JcG10QW1vdW50CHBtdEFzc2V0CXJvdXRlc1N0cgxtaW5Ub1JlY2VpdmUHb3B0aW9ucwQSdG9rZW5CYWxhbmNlQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQd0b1Rva2VuAwkAAAIFEnRva2VuQmFsYW5jZUJlZm9yZQUSdG9rZW5CYWxhbmNlQmVmb3JlBANpbnYJAPwHBAUKZXhDb250cmFjdAIKcHV6emxlU3dhcAkAzAgCBQlyb3V0ZXNTdHIJAMwIAgUMbWluVG9SZWNlaXZlCQDMCAIFB29wdGlvbnMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUIcG10QXNzZXQFCXBtdEFtb3VudAUDbmlsAwkAAAIFA2ludgUDaW52CQBlAgkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUHdG9Ub2tlbgUSdG9rZW5CYWxhbmNlQmVmb3JlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQ5leGNoYW5nZVN3b3BGaQoHdG9Ub2tlbglwbXRBbW91bnQIcG10QXNzZXQKZXhjaGFuZ2Vycw5leGNoYW5nZXJzVHlwZQVhcmdzMQVhcmdzMhFyb3V0aW5nQXNzZXRzS2V5cxJtaW5BbW91bnRUb1JlY2VpdmUHb3B0aW9ucwQSdG9rZW5CYWxhbmNlQmVmb3JlCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQd0b1Rva2VuAwkAAAIFEnRva2VuQmFsYW5jZUJlZm9yZQUSdG9rZW5CYWxhbmNlQmVmb3JlBANpbnYJAPwHBAUKZXhDb250cmFjdAIKc3dvcGZpU3dhcAkAzAgCBQpleGNoYW5nZXJzCQDMCAIFDmV4Y2hhbmdlcnNUeXBlCQDMCAIFBWFyZ3MxCQDMCAIFBWFyZ3MyCQDMCAIFEXJvdXRpbmdBc3NldHNLZXlzCQDMCAIFEm1pbkFtb3VudFRvUmVjZWl2ZQkAzAgCBQdvcHRpb25zBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCHBtdEFzc2V0BQlwbXRBbW91bnQFA25pbAMJAAACBQNpbnYFA2ludgkAZQIJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFB3RvVG9rZW4FEnRva2VuQmFsYW5jZUJlZm9yZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEKY2FwaXRhbGl6ZQQEcG9vbAVwVHlwZQd0b2tlbklkC3Rva2VuQW1vdW50BAhwb29sQWRkcgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wEDSR0MDIyMjI1MjIyOTEJAQtnZXRQb29sRGF0YQIFCHBvb2xBZGRyBQVwVHlwZQQDQUlkCAUNJHQwMjIyMjUyMjI5MQJfMQQDQklkCAUNJHQwMjIyMjUyMjI5MQJfMgQEYmFsQQgFDSR0MDIyMjI1MjIyOTECXzMEBGJhbEIIBQ0kdDAyMjIyNTIyMjkxAl80BAdzaGFyZUlkCAUNJHQwMjIyMjUyMjI5MQJfNQMDCQECIT0CBQd0b2tlbklkBQNBSWQJAQIhPQIFB3Rva2VuSWQFA0JJZAcJAAIBAgtXcm9uZyBhc3NldAQNJHQwMjIzNzYyMjQ1NgMJAAACBQd0b2tlbklkBQNBSWQJAJQKAgULdG9rZW5BbW91bnQAAAkAlAoCAAAFC3Rva2VuQW1vdW50BARwbXRBCAUNJHQwMjIzNzYyMjQ1NgJfMQQEcG10QggFDSR0MDIyMzc2MjI0NTYCXzIEDSR0MDIyNDU5MjI1NjMJAQ9yZXBsZW5pc2hCeVR5cGUKBQVwVHlwZQUEcG9vbAUGTk9fRkVFBQRwbXRBBQNBSWQFBHBtdEIFA0JJZAUEYmFsQQUEYmFsQgUHc2hhcmVJZAQMc3Rha2VkQW1vdW50CAUNJHQwMjI0NTkyMjU2MwJfMQQCbmYIBQ0kdDAyMjQ1OTIyNTYzAl8yBBNjdXJQb29sSW50ZXJlc3RMb2FuCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAURa1Bvb2xJbnRlcmVzdExvYW4AAAQVY3VyUG9vbEludGVyZXN0Tm9Mb2FuCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgUEcG9vbAUTa1Bvb2xJbnRlcmVzdE5vTG9hbgAABBB0b3RhbFNoYXJlQW1vdW50CQERZ2V0UG9vbFRvdGFsU2hhcmUBBQRwb29sBBh0b3RhbFNoYXJlQW1vdW50V2l0aExvYW4JARlnZXRQb29sVG90YWxTaGFyZVdpdGhMb2FuAQUEcG9vbAQLbG9hblBlcmNlbnQJAGsDBRh0b3RhbFNoYXJlQW1vdW50V2l0aExvYW4FBlNDQUxFOAUQdG90YWxTaGFyZUFtb3VudAQKc3Rha2VkTG9hbgkAawMFDHN0YWtlZEFtb3VudAULbG9hblBlcmNlbnQFBlNDQUxFOAQMc3Rha2VkTm9Mb2FuCQBlAgUMc3Rha2VkQW1vdW50BQpzdGFrZWRMb2FuBA9uZXdJbnRlcmVzdExvYW4DCQBmAgUYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuAAAJAGQCBRNjdXJQb29sSW50ZXJlc3RMb2FuCQBrAwUKc3Rha2VkTG9hbgUHU0NBTEUxMAUYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuAAAEEW5ld0ludGVyZXN0Tm9Mb2FuAwkAZgIJAGUCBRB0b3RhbFNoYXJlQW1vdW50BRh0b3RhbFNoYXJlQW1vdW50V2l0aExvYW4AAAkAZAIFFWN1clBvb2xJbnRlcmVzdE5vTG9hbgkAawMFDHN0YWtlZE5vTG9hbgUHU0NBTEUxMAkAZQIFEHRvdGFsU2hhcmVBbW91bnQFGHRvdGFsU2hhcmVBbW91bnRXaXRoTG9hbgAABAtheGx5RmVlTG9hbgkAawMFCnN0YWtlZExvYW4JAQpnZXRBeGx5RmVlAgUEcG9vbAUMQ0FQX0ZFRV9MT0FOBQpGRUVfU0NBTEU2BA1heGx5RmVlTm9Mb2FuCQBrAwUMc3Rha2VkTm9Mb2FuCQEKZ2V0QXhseUZlZQIFBHBvb2wFD0NBUF9GRUVfTk9fTE9BTgUKRkVFX1NDQUxFNgQHYXhseUZlZQkBCXVuc3Rha2VMUAQFBHBvb2wFBXBUeXBlBQdzaGFyZUlkCQBkAgULYXhseUZlZUxvYW4FDWF4bHlGZWVOb0xvYW4DCQAAAgUHYXhseUZlZQUHYXhseUZlZQkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFEWtQb29sSW50ZXJlc3RMb2FuBQ9uZXdJbnRlcmVzdExvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUTa1Bvb2xJbnRlcmVzdE5vTG9hbgURbmV3SW50ZXJlc3ROb0xvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUKa1Bvb2xUb3RhbAkAZQIJAGQCBRB0b3RhbFNoYXJlQW1vdW50BQxzdGFrZWRBbW91bnQFB2F4bHlGZWUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUOa1Bvb2xUb3RhbExvYW4JAGUCCQBkAgUYdG90YWxTaGFyZUFtb3VudFdpdGhMb2FuBQpzdGFrZWRMb2FuBQtheGx5RmVlTG9hbgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQhtb25leUJveAkAZAIFC2F4bHlGZWVMb2FuBQ1heGx5RmVlTm9Mb2FuCQDZBAEFB3NoYXJlSWQFA25pbAkBDmdldEN1cnNFbnRyaWVzAwUDQUlkBQNCSWQFB3NoYXJlSWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BEndpdGhkcmF3QW1vdW50Q2FsYwQEcG9vbA91c2VyQ2FuV2l0aGRyYXcEZGVidAtib3Jyb3dBc3NldAQIcG9vbEFkZHIJAQdBZGRyZXNzAQkA2QQBBQRwb29sBAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCDFVua25vd24gcG9vbAQNJHQwMjQzMzEyNDQwNwkBC2dldFBvb2xEYXRhAgUIcG9vbEFkZHIFBXBUeXBlBAhhc3NldElkQQgFDSR0MDI0MzMxMjQ0MDcCXzEECGFzc2V0SWRCCAUNJHQwMjQzMzEyNDQwNwJfMgQEYmFsQQgFDSR0MDI0MzMxMjQ0MDcCXzMEBGJhbEIIBQ0kdDAyNDMzMTI0NDA3Al80BAdzaGFyZUlkCAUNJHQwMjQzMzEyNDQwNwJfNQQLY0JhbEFCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFCGFzc2V0SWRBAwkAAAIFC2NCYWxBQmVmb3JlBQtjQmFsQUJlZm9yZQQLY0JhbEJCZWZvcmUJAQ5hY2NvdW50QmFsYW5jZQEJAQ5hc3NldElkRnJvbVN0cgEFCGFzc2V0SWRCAwkAAAIFC2NCYWxCQmVmb3JlBQtjQmFsQkJlZm9yZQQDaW52AwkAAAIFBXBUeXBlBQdTRl9QT09MCQD8BwQFCHBvb2xBZGRyAgxjYWxsRnVuY3Rpb24JAMwIAgIId2l0aGRyYXcJAMwIAgkAzAgCCQCkAwEFD3VzZXJDYW5XaXRoZHJhdwUDbmlsBQNuaWwFA25pbAQDaW52CQEJdW5zdGFrZUxQBAUEcG9vbAUFcFR5cGUFB3NoYXJlSWQFD3VzZXJDYW5XaXRoZHJhdwMJAAACBQNpbnYFA2ludgkA/AcEBQhwb29sQWRkcgIDZ2V0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ5hc3NldElkRnJvbVN0cgEFB3NoYXJlSWQFD3VzZXJDYW5XaXRoZHJhdwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFA2ludgUDaW52BApjQmFsQUFmdGVyCQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQhhc3NldElkQQQKY0JhbEJBZnRlcgkBDmFjY291bnRCYWxhbmNlAQkBDmFzc2V0SWRGcm9tU3RyAQUIYXNzZXRJZEIEDSR0MDI0OTcwMjUwNTkJAJQKAgkAZQIFCmNCYWxBQWZ0ZXIFC2NCYWxBQmVmb3JlCQBlAgUKY0JhbEJBZnRlcgULY0JhbEJCZWZvcmUEDXRva2Vuc0Ftb3VudEEIBQ0kdDAyNDk3MDI1MDU5Al8xBA10b2tlbnNBbW91bnRCCAUNJHQwMjQ5NzAyNTA1OQJfMgQNJHQwMjUwNjIyNTc1OAMJAGYCBQRkZWJ0AAAEDWFtb3VudFRvR2V0RXgDAwkAAAIFC2JvcnJvd0Fzc2V0BQhhc3NldElkQQkAZgIFBGRlYnQFDXRva2Vuc0Ftb3VudEEHCQBlAgUEZGVidAUNdG9rZW5zQW1vdW50QQMDCQAAAgULYm9ycm93QXNzZXQFCGFzc2V0SWRCCQBmAgUEZGVidAUNdG9rZW5zQW1vdW50QgcJAGUCBQRkZWJ0BQ10b2tlbnNBbW91bnRCAAAEBWV4SW52AwkAZgIFDWFtb3VudFRvR2V0RXgAAAkBEGV4Y2hhbmdlRGlyZWN0bHkIBQVwVHlwZQUEcG9vbAUIYXNzZXRJZEEFCGFzc2V0SWRCBQRiYWxBBQRiYWxCBQ1hbW91bnRUb0dldEV4BQtib3Jyb3dBc3NldAAAAwkAAAIFBWV4SW52BQVleEludgQPY0JhbEFBZnRlclJlcGF5CQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQhhc3NldElkQQQPY0JhbEJBZnRlclJlcGF5CQEOYWNjb3VudEJhbGFuY2UBCQEOYXNzZXRJZEZyb21TdHIBBQhhc3NldElkQgkAlAoCCQBlAgUPY0JhbEFBZnRlclJlcGF5BQtjQmFsQUJlZm9yZQkAZQIFD2NCYWxCQWZ0ZXJSZXBheQULY0JhbEJCZWZvcmUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJQKAgUNdG9rZW5zQW1vdW50QQUNdG9rZW5zQW1vdW50QgQNdG9Vc2VyQW1vdW50QQgFDSR0MDI1MDYyMjU3NTgCXzEEDXRvVXNlckFtb3VudEIIBQ0kdDAyNTA2MjI1NzU4Al8yCQCZCgcFDXRvVXNlckFtb3VudEEFCGFzc2V0SWRBBQ10b1VzZXJBbW91bnRCBQhhc3NldElkQgUKY0JhbEFBZnRlcgUKY0JhbEJBZnRlcgUHc2hhcmVJZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEYdXNlckNhbldpdGhkcmF3U2hhcmVDYWxjBAR1c2VyBHBvb2wFcG9zSWQIYm9ycm93ZWQEB3BBbW91bnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFDWtVc2VyUG9zaXRpb24CEFVua25vd24gcG9zaXRpb24EDHVzZXJJbnRlcmVzdAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRVrVXNlclBvc2l0aW9uSW50ZXJlc3QEDHBvb2xJbnRlcmVzdAMFCGJvcnJvd2VkCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFEWtQb29sSW50ZXJlc3RMb2FuCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFE2tQb29sSW50ZXJlc3ROb0xvYW4JAGQCBQdwQW1vdW50CQBrAwUHcEFtb3VudAkAZQIFDHBvb2xJbnRlcmVzdAUMdXNlckludGVyZXN0BQdTQ0FMRTEwAQ53aXRoZHJhd1RvVXNlcgQEdXNlcgRwb29sBXBvc0lkCHN0b3BMb3NzBAdwQW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBQ1rVXNlclBvc2l0aW9uAhBVbmtub3duIHBvc2l0aW9uBAx1c2VySW50ZXJlc3QJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUVa1VzZXJQb3NpdGlvbkludGVyZXN0BAxib3Jyb3dBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBRFrVXNlckJvcnJvd0Ftb3VudAAABA91c2VyQ2FuV2l0aGRyYXcJARh1c2VyQ2FuV2l0aGRyYXdTaGFyZUNhbGMEBQR1c2VyBQRwb29sBQVwb3NJZAkAZgIFDGJvcnJvd0Ftb3VudAAABA5wb29sVG90YWxTaGFyZQkBEWdldFBvb2xUb3RhbFNoYXJlAQUEcG9vbAQIdXNlckFkZHIJAQdBZGRyZXNzAQkA2QQBBQR1c2VyBAtib3Jyb3dBc3NldAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFEmtVc2VyQm9ycm93QXNzZXRJZAIABARkZWJ0AwkAZgIFDGJvcnJvd0Ftb3VudAAACgABQAkA/AcECQEOZ2V0TGVuZFNydkFkZHIAAgxnZXRBc3NldERlYnQJAMwIAgcJAMwIAgkArAICCQCsAgIFBHVzZXICAV8FBXBvc0lkCQDMCAIFC2JvcnJvd0Fzc2V0BQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAAQNJHQwMjcyNTcyNzQxMAkBEndpdGhkcmF3QW1vdW50Q2FsYwQFBHBvb2wFD3VzZXJDYW5XaXRoZHJhdwUEZGVidAULYm9ycm93QXNzZXQDCQAAAgUNJHQwMjcyNTcyNzQxMAUNJHQwMjcyNTcyNzQxMAQHc2hhcmVJZAgFDSR0MDI3MjU3Mjc0MTACXzcECmNCYWxCQWZ0ZXIIBQ0kdDAyNzI1NzI3NDEwAl82BApjQmFsQUFmdGVyCAUNJHQwMjcyNTcyNzQxMAJfNQQIYXNzZXRJZEIIBQ0kdDAyNzI1NzI3NDEwAl80BA10b1VzZXJBbW91bnRCCAUNJHQwMjcyNTcyNzQxMAJfMwQIYXNzZXRJZEEIBQ0kdDAyNzI1NzI3NDEwAl8yBA10b1VzZXJBbW91bnRBCAUNJHQwMjcyNTcyNzQxMAJfMQQLY2xvc2VEYnRJbnYDCQBmAgUEZGVidAAACQD8BwQJAQ5nZXRMZW5kU3J2QWRkcgACCHJlcGF5Rm9yCQDMCAIJAKwCAgkArAICBQR1c2VyAgFfBQVwb3NJZAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQEOYXNzZXRJZEZyb21TdHIBBQtib3Jyb3dBc3NldAUEZGVidAUDbmlsAAADCQAAAgULY2xvc2VEYnRJbnYFC2Nsb3NlRGJ0SW52CQDOCAIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBQ1rVXNlclBvc2l0aW9uCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUVa1VzZXJQb3NpdGlvbkludGVyZXN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFCmtQb29sVG90YWwJAGUCBQ5wb29sVG90YWxTaGFyZQUPdXNlckNhbldpdGhkcmF3CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCHVzZXJBZGRyBQ10b1VzZXJBbW91bnRBCQEOYXNzZXRJZEZyb21TdHIBBQhhc3NldElkQQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQh1c2VyQWRkcgUNdG9Vc2VyQW1vdW50QgkBDmFzc2V0SWRGcm9tU3RyAQUIYXNzZXRJZEIFA25pbAkBDmdldEN1cnNFbnRyaWVzAwUIYXNzZXRJZEEFCGFzc2V0SWRCBQdzaGFyZUlkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQxwYXJzZVJlcXVlc3QBCXJlcXVlc3RJZAQHcmVxdWVzdAkAtQkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQlyZXF1ZXN0SWQFCmtSZXF1ZXN0SWQJAKwCAgITTm8gcmVxdWVzdCB3aXRoIGlkIAUJcmVxdWVzdElkAgEsBAR1c2VyCQCRAwIFB3JlcXVlc3QAAAQEcG9vbAkAkQMCBQdyZXF1ZXN0AAEEBHBtdEEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdyZXF1ZXN0AAIEA0FJZAkAkQMCBQdyZXF1ZXN0AAMEBHBtdEIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdyZXF1ZXN0AAQEA0JJZAkAkQMCBQdyZXF1ZXN0AAUEBGJhbEEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdyZXF1ZXN0AAYEBGJhbEIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdyZXF1ZXN0AAcEB3NoYXJlSWQJAJEDAgUHcmVxdWVzdAAIBAdid0Fzc2V0CQCRAwIFB3JlcXVlc3QACQQIYndBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQdyZXF1ZXN0AAoJAJ0KCwUEdXNlcgUEcG9vbAUEcG10QQUDQUlkBQRwbXRCBQNCSWQFBGJhbEEFBGJhbEIFB3NoYXJlSWQFB2J3QXNzZXQFCGJ3QW1vdW50ARBjYWxjQm9ycm93QW1vdW50BgRwbXRBBHBtdEIDYUlkA2JJZAhsZXZlcmFnZQhib3Jyb3dJZAQHZFByaWNlQQgKAAFACQD8BwQFD3ByaWNlT3JhY2xlQWRkcgIJZ2V0VFdBUDYwCQDMCAIFA2FJZAkAzAgCBwUDbmlsBQNuaWwDCQABAgUBQAIKKEludCwgSW50KQUBQAkAAgEJAKwCAgkAAwEFAUACHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkCXzIEB2RQcmljZUIICgABQAkA/AcEBQ9wcmljZU9yYWNsZUFkZHICCWdldFRXQVA2MAkAzAgCBQNiSWQJAMwIAgcFA25pbAUDbmlsAwkAAQIFAUACCihJbnQsIEludCkFAUAJAAIBCQCsAgIJAAMBBQFAAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpAl8yBAZkZWNQckEJAGwGAAoAAAkBEGdldEFzc2V0RGVjaW1hbHMBBQNhSWQAAAAABQRET1dOBAZkZWNQckIJAGwGAAoAAAkBEGdldEFzc2V0RGVjaW1hbHMBBQNiSWQAAAAABQRET1dOBAxwYXlkSW5Eb2xsYXIJAGQCCQBrAwUHZFByaWNlQQUEcG10QQUGZGVjUHJBCQBrAwUHZFByaWNlQgUEcG10QgUGZGVjUHJCBA0kdDAyOTA5NjI5MTkzAwkAAAIFCGJvcnJvd0lkBQNhSWQJAJQKAgUHZFByaWNlQQUGZGVjUHJBCQCUCgIFB2RQcmljZUIFBmRlY1ByQgQLYm9ycm93UHJpY2UIBQ0kdDAyOTA5NjI5MTkzAl8xBAtib3Jyb3dEZWNQcggFDSR0MDI5MDk2MjkxOTMCXzIJAGsDCQBrAwUMcGF5ZEluRG9sbGFyCQBlAgUIbGV2ZXJhZ2UAZABkBQtib3Jyb3dEZWNQcgULYm9ycm93UHJpY2UQAWkBF2NhbGNQcmljZUltcGFjdEVWQUxPTkxZBQRwb29sCGxldmVyYWdlCGJvcnJvd0lkBHBtdEEEcG10QgMDCQBmAgBkBQhsZXZlcmFnZQYJAGYCBQhsZXZlcmFnZQCsAgkAAgECH0xldmVyYWdlIGNhbid0IGJlIDwxMDAgYW5kID4zMDAEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAISUG9vbCBpcyBub3QgaW5pdGVkBA0kdDAyOTYxMTI5NzAxCQELZ2V0UG9vbERhdGECCQEHQWRkcmVzcwEJANkEAQUEcG9vbAUFcFR5cGUEA0FJZAgFDSR0MDI5NjExMjk3MDECXzEEA0JJZAgFDSR0MDI5NjExMjk3MDECXzIEBGJhbEEIBQ0kdDAyOTYxMTI5NzAxAl8zBARiYWxCCAUNJHQwMjk2MTEyOTcwMQJfNAQHc2hhcmVJZAgFDSR0MDI5NjExMjk3MDECXzUEDGJvcnJvd0Ftb3VudAMJAGYCBQhsZXZlcmFnZQBkCQEQY2FsY0JvcnJvd0Ftb3VudAYFBHBtdEEFBHBtdEIFA0FJZAUDQklkBQhsZXZlcmFnZQUIYm9ycm93SWQAAAQNJHQwMjk4MzYyOTk0MwMJAAACBQhib3Jyb3dJZAUDQUlkCQCUCgIJAGQCBQRwbXRBBQxib3Jyb3dBbW91bnQFBHBtdEIJAJQKAgUEcG10QQkAZAIFBHBtdEIFDGJvcnJvd0Ftb3VudAQGcGF5SW5BCAUNJHQwMjk4MzYyOTk0MwJfMQQGcGF5SW5CCAUNJHQwMjk4MzYyOTk0MwJfMgQNJHQwMjk5NDYzMDAzOQkBE2NhbGNSZXBsZW5pc2hMUFZpcnQIBQVwVHlwZQUEcG9vbAUGcGF5SW5BBQNBSWQFBnBheUluQgUDQklkBQRiYWxBBQRiYWxCBAhscEFtb3VudAgFDSR0MDI5OTQ2MzAwMzkCXzEEBGxvc3MIBQ0kdDAyOTk0NjMwMDM5Al8yBAlpbXBhY3RNb2QDCQBmAgAABQRsb3NzCQBoAgUEbG9zcwD///////////8BBQRsb3NzCQCUCgIFA25pbAkAzAgCBQlpbXBhY3RNb2QFA25pbAFpARpnZXRTaGFyZUFzc2V0UHJpY2VSRUFET05MWQEHc2hhcmVJZAQLc2hhcmVQcmljZXMJAQ1nZXRTaGFyZVByaWNlAQUHc2hhcmVJZAkAlAoCBQNuaWwFC3NoYXJlUHJpY2VzAWkBImdldFVzZXJQb3NpdGlvblNoYXJlQW1vdW50UkVBRE9OTFkCBHVzZXIGcG9zTnVtBARwb29sCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICCQCsAgIJAKwCAgUEdXNlcgIBXwUGcG9zTnVtBRFrVXNlclBvc2l0aW9uUG9vbAIQVW5rbm93biBwb3NpdGlvbgQMYm9ycm93QW1vdW50CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUGcG9zTnVtBRFrVXNlckJvcnJvd0Ftb3VudAQPdXNlckNhbldpdGhkcmF3CQEYdXNlckNhbldpdGhkcmF3U2hhcmVDYWxjBAUEdXNlcgUEcG9vbAUGcG9zTnVtCQBmAgUMYm9ycm93QW1vdW50AAAJAJQKAgUDbmlsBQ91c2VyQ2FuV2l0aGRyYXcBaQEgZ2V0VXNlclBvc2l0aW9uSW5Eb2xsYXJzUkVBRE9OTFkDBHVzZXIFcG9vbHMGcG9zTnVtCgEHdXNlclBvcwIBYQRwb29sBA0kdDAzMDg1MjMwODg2BQFhBAh0b3RhbFBvcwgFDSR0MDMwODUyMzA4ODYCXzEEB3Bvc0RlYnQIBQ0kdDAzMDg1MjMwODg2Al8yBAVpbmRleAgFDSR0MDMwODUyMzA4ODYCXzMEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAISUG9vbCBpcyBub3QgaW5pdGVkBA0kdDAzMDk3ODMxMDY4CQELZ2V0UG9vbERhdGECCQEHQWRkcmVzcwEJANkEAQUEcG9vbAUFcFR5cGUEA0FJZAgFDSR0MDMwOTc4MzEwNjgCXzEEA0JJZAgFDSR0MDMwOTc4MzEwNjgCXzIEBGJhbEEIBQ0kdDAzMDk3ODMxMDY4Al8zBARiYWxCCAUNJHQwMzA5NzgzMTA2OAJfNAQHc2hhcmVJZAgFDSR0MDMwOTc4MzEwNjgCXzUEDGJvcnJvd0Ftb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkAkQMCBQZwb3NOdW0FBWluZGV4BRFrVXNlckJvcnJvd0Ftb3VudAAABA91c2VyQ2FuV2l0aGRyYXcJARh1c2VyQ2FuV2l0aGRyYXdTaGFyZUNhbGMEBQR1c2VyBQRwb29sCQCRAwIFBnBvc051bQUFaW5kZXgJAGYCBQxib3Jyb3dBbW91bnQAAAQLc2hhcmVQcmljZXMJAQ1nZXRTaGFyZVByaWNlAQUHc2hhcmVJZAQKZGVjUHJTaGFyZQkAbAYACgAACQEQZ2V0QXNzZXREZWNpbWFscwEFB3NoYXJlSWQAAAAABQRET1dOBAZzaGFyZUQJAGsDBQ91c2VyQ2FuV2l0aGRyYXcFC3NoYXJlUHJpY2VzBQpkZWNQclNoYXJlAwkAAAIFDGJvcnJvd0Ftb3VudAAACQCVCgMJAM0IAgUIdG90YWxQb3MFBnNoYXJlRAkAzQgCBQdwb3NEZWJ0AAAJAGQCBQVpbmRleAABBAtib3Jyb3dBc3NldAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8JAJEDAgUGcG9zTnVtBQVpbmRleAUSa1VzZXJCb3Jyb3dBc3NldElkBARkZWJ0CgABQAkA/AcECQEOZ2V0TGVuZFNydkFkZHIAAgxnZXRBc3NldERlYnQJAMwIAgcJAMwIAgkArAICCQCsAgIFBHVzZXICAV8JAJEDAgUGcG9zTnVtBQVpbmRleAkAzAgCBQtib3Jyb3dBc3NldAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BBBib3Jyb3dBc3NldFByaWNlCAoAAUAJAPwHBAUPcHJpY2VPcmFjbGVBZGRyAglnZXRUV0FQNjAJAMwIAgULYm9ycm93QXNzZXQJAMwIAgcFA25pbAUDbmlsAwkAAQIFAUACCihJbnQsIEludCkFAUAJAAIBCQCsAgIJAAMBBQFAAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpAl8xBA1kZWNQckJvcnJvd0lkCQBsBgAKAAAJARBnZXRBc3NldERlY2ltYWxzAQULYm9ycm93QXNzZXQAAAAABQRET1dOBAVkZWJ0RAkAawMFBGRlYnQFEGJvcnJvd0Fzc2V0UHJpY2UFDWRlY1ByQm9ycm93SWQJAJUKAwkAzQgCBQh0b3RhbFBvcwUGc2hhcmVECQDNCAIFB3Bvc0RlYnQFBWRlYnRECQBkAgUFaW5kZXgAAQQNJHQwMzIxMTEzMjE2NgoAAiRsBQVwb29scwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUDbmlsBQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHdXNlclBvcwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUBANwb3MIBQ0kdDAzMjExMTMyMTY2Al8xBARkZWJ0CAUNJHQwMzIxMTEzMjE2NgJfMgkAlAoCBQNuaWwJAJQKAgUDcG9zBQRkZWJ0AWkBCXJlcGxlbmlzaAMEcG9vbAhsZXZlcmFnZQhib3Jyb3dJZAMDCQBmAgBkBQhsZXZlcmFnZQYJAGYCBQhsZXZlcmFnZQCsAgkAAgECH0xldmVyYWdlIGNhbid0IGJlIDwxMDAgYW5kID4zMDAEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAISUG9vbCBpcyBub3QgaW5pdGVkBA0kdDAzMjQ4OTMyNTc5CQELZ2V0UG9vbERhdGECCQEHQWRkcmVzcwEJANkEAQUEcG9vbAUFcFR5cGUEA0FJZAgFDSR0MDMyNDg5MzI1NzkCXzEEA0JJZAgFDSR0MDMyNDg5MzI1NzkCXzIEBGJhbEEIBQ0kdDAzMjQ4OTMyNTc5Al8zBARiYWxCCAUNJHQwMzI0ODkzMjU3OQJfNAQHc2hhcmVJZAgFDSR0MDMyNDg5MzI1NzkCXzUEDSR0MDMyNTgyMzMyMTkDCQAAAgkAkAMBCAUBaQhwYXltZW50cwACAwkBAiE9AgkBDGFzc2V0SWRUb1N0cgEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUDQUlkCQACAQIVV3JvbmcgcGF5bWVudCBhc3NldCBBAwkBAiE9AgkBDGFzc2V0SWRUb1N0cgEICQCRAwIIBQFpCHBheW1lbnRzAAEHYXNzZXRJZAUDQklkCQACAQIVV3JvbmcgcGF5bWVudCBhc3NldCBCCQCWCgQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BQNBSWQICQCRAwIIBQFpCHBheW1lbnRzAAEGYW1vdW50BQNCSWQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABAwkAAAIJAQxhc3NldElkVG9TdHIBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFA0FJZAkAlgoECAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUDQUlkAAAFA0JJZAMJAAACCQEMYXNzZXRJZFRvU3RyAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQNCSWQJAJYKBAAABQNBSWQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BQNCSWQJAAIBAg1Xcm9uZyBwYXltZW50CQACAQIcT25lIG9yIHR3byBwYXltZW50cyBleHBlY3RlZAQEcG10QQgFDSR0MDMyNTgyMzMyMTkCXzEECXBtdEFzc2V0QQgFDSR0MDMyNTgyMzMyMTkCXzIEBHBtdEIIBQ0kdDAzMjU4MjMzMjE5Al8zBAlwbXRBc3NldEIIBQ0kdDAzMjU4MjMzMjE5Al80BAluZXdQb3NOdW0JARhnZXROZXdVc2VyUG9zaXRpb25OdW1iZXIBCQClCAEIBQFpBmNhbGxlcgMJAGYCBQhsZXZlcmFnZQBkBAxib3Jyb3dBbW91bnQJARBjYWxjQm9ycm93QW1vdW50BgUEcG10QQUEcG10QgUJcG10QXNzZXRBBQlwbXRBc3NldEIFCGxldmVyYWdlBQhib3Jyb3dJZAQHcmVxdWVzdAkAuQkCCQDMCAIJAKUIAQgFAWkGY2FsbGVyCQDMCAIFBHBvb2wJAMwIAgkApAMBBQRwbXRBCQDMCAIFCXBtdEFzc2V0QQkAzAgCCQCkAwEFBHBtdEIJAMwIAgUJcG10QXNzZXRCCQDMCAIJAKQDAQUEYmFsQQkAzAgCCQCkAwEFBGJhbEIJAMwIAgUHc2hhcmVJZAkAzAgCBQhib3Jyb3dJZAkAzAgCCQCkAwEFDGJvcnJvd0Ftb3VudAUDbmlsAgEsBAxuZXdSZXF1ZXN0SWQKAAFACQD8BwQFBHRoaXMCEGNyZWF0ZU5ld1JlcXVlc3QJAMwIAgUHcmVxdWVzdAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AwkAAAIFDG5ld1JlcXVlc3RJZAUMbmV3UmVxdWVzdElkBARhcmdzCQDMCAIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwkApAMBBQluZXdQb3NOdW0JAMwIAgUHc2hhcmVJZAkAzAgCBQhib3Jyb3dJZAkAzAgCBQxib3Jyb3dBbW91bnQJAMwIAgkApQgBBQR0aGlzCQDMCAICEXJlcGxlbmlzaEZyb21MYW5kCQDMCAIJAKQDAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBQxuZXdSZXF1ZXN0SWQCGENhbid0IGNyZWF0ZSBuZXcgcmVxdWVzdAUDbmlsBANpbnYJAP0HBAkBDmdldExlbmRTcnZBZGRyAAINZmxhc2hQb3NpdGlvbgUEYXJncwUDbmlsAwkAAAIFA2ludgUDaW52BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EDSR0MDM0MTQ3MzQyNTkJAQ9yZXBsZW5pc2hCeVR5cGUKBQVwVHlwZQUEcG9vbAULTk9fTE9BTl9GRUUFBHBtdEEFA0FJZAUEcG10QgUDQklkBQRiYWxBBQRiYWxCBQdzaGFyZUlkBAp1c2VyU3Rha2VkCAUNJHQwMzQxNDczNDI1OQJfMQQHYXhseUZlZQgFDSR0MDM0MTQ3MzQyNTkCXzIJAM4IAgkBEHJlcGxlbmlzaEVudHJpZXMIBQRwb29sCQClCAEIBQFpBmNhbGxlcgUKdXNlclN0YWtlZAUHYXhseUZlZQUJbmV3UG9zTnVtBQdzaGFyZUlkBQVwVHlwZQcJAQ5nZXRDdXJzRW50cmllcwMFA0FJZAUDQklkBQdzaGFyZUlkAWkBCHdpdGhkcmF3AgRwb29sBXBvc0lkCQEOd2l0aGRyYXdUb1VzZXIECQClCAEIBQFpBmNhbGxlcgUEcG9vbAkApAMBBQVwb3NJZAcBaQEUY3JlYXRlVXBkYXRlU3RvcExvc3MEBXBvc0lkBnBvb2xJZAdhc3NldElkBXByaWNlBBB0b2tlbk9yYWNsZVByaWNlCAoAAUAJAPwHBAUPcHJpY2VPcmFjbGVBZGRyAglnZXRUV0FQNjAJAMwIAgUHYXNzZXRJZAkAzAgCBwUDbmlsBQNuaWwDCQABAgUBQAIKKEludCwgSW50KQUBQAkAAgEJAKwCAgkAAwEFAUACHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkCXzEDCQEBIQEJAQlpc0RlZmluZWQBCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQZwb29sSWQCAV8JAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFBXBvc0lkBQ1rVXNlclBvc2l0aW9uCQACAQIaVGhlcmUgYXJlIG5vIHVzZXIgcG9zaXRpb24DCQBnAgAABQVwcmljZQkAAgECHFByaWNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIDADCQBmAgUFcHJpY2UFEHRva2VuT3JhY2xlUHJpY2UJAAIBAitQcmljZSBtdXN0IGJlIGxlc3MgdGhhbiBjdXJyZW50IHRva2VuIHByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFBXBvc0lkAgFfBQZwb29sSWQCAV8FB2Fzc2V0SWQFDWtVc2VyU3RvcExvc3MFBXByaWNlBQNuaWwBaQEOZGVsZXRlU3RvcExvc3MDBXBvc0lkBnBvb2xJZAdhc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFBXBvc0lkAgFfBQZwb29sSWQCAV8FB2Fzc2V0SWQFDWtVc2VyU3RvcExvc3MJAAIBAghObyBlbnRyeQkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfCQCkAwEFBXBvc0lkAgFfBQZwb29sSWQCAV8FB2Fzc2V0SWQFDWtVc2VyU3RvcExvc3MFA25pbAFpARBjcmVhdGVOZXdSZXF1ZXN0AQZwYXJhbXMJAQt2YWx1ZU9yRWxzZQIJAQppc1NlbGZDYWxsAQUBaQQMbmV3UmVxdWVzdElkCQBkAgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQxrUmVxdWVzdEl0ZXIAAAABCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCkAwEFDG5ld1JlcXVlc3RJZAUKa1JlcXVlc3RJZAUGcGFyYW1zCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxrUmVxdWVzdEl0ZXIFDG5ld1JlcXVlc3RJZAUDbmlsBQxuZXdSZXF1ZXN0SWQBaQERcmVwbGVuaXNoRnJvbUxhbmQBCXJlcXVlc3RJZAkBC3ZhbHVlT3JFbHNlAgkBCmlzTGFuZENhbGwBBQFpBA0kdDAzNjAxMjM2MTE2CQEMcGFyc2VSZXF1ZXN0AQUJcmVxdWVzdElkBAR1c2VyCAUNJHQwMzYwMTIzNjExNgJfMQQEcG9vbAgFDSR0MDM2MDEyMzYxMTYCXzIEBHBtdEEIBQ0kdDAzNjAxMjM2MTE2Al8zBANBSWQIBQ0kdDAzNjAxMjM2MTE2Al80BARwbXRCCAUNJHQwMzYwMTIzNjExNgJfNQQDQklkCAUNJHQwMzYwMTIzNjExNgJfNgQEYmFsQQgFDSR0MDM2MDEyMzYxMTYCXzcEBGJhbEIIBQ0kdDAzNjAxMjM2MTE2Al84BAdzaGFyZUlkCAUNJHQwMzYwMTIzNjExNgJfOQQHYndBc3NldAgFDSR0MDM2MDEyMzYxMTYDXzEwBAhid0Ftb3VudAgFDSR0MDM2MDEyMzYxMTYDXzExAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQISV3JvbmcgcGF5bWVudCBzaXplAwMJAQIhPQIJAQxhc3NldElkVG9TdHIBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFB2J3QXNzZXQGCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUIYndBbW91bnQJAAIBAg1Xcm9uZyBwYXltZW50BA0kdDAzNjMwNjM2NDMwAwkAAAIFA0FJZAUHYndBc3NldAkAlAoCCQBkAgUEcG10QQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFBHBtdEIJAJQKAgUEcG10QQkAZAIFBHBtdEIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BAdwbXRBbGxBCAUNJHQwMzYzMDYzNjQzMAJfMQQHcG10QWxsQggFDSR0MDM2MzA2MzY0MzACXzIEBXBUeXBlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwkArAICBQVrUG9vbAUEcG9vbAIMVW5rbm93biBwb29sBA0kdDAzNjUxMjM2NjI3CQEPcmVwbGVuaXNoQnlUeXBlCgUFcFR5cGUFBHBvb2wFCExPQU5fRkVFBQdwbXRBbGxBBQNBSWQFB3BtdEFsbEIFA0JJZAUEYmFsQQUEYmFsQgUHc2hhcmVJZAQKdXNlclN0YWtlZAgFDSR0MDM2NTEyMzY2MjcCXzEEB2F4bHlGZWUIBQ0kdDAzNjUxMjM2NjI3Al8yBAZwb3NOdW0JARhnZXROZXdVc2VyUG9zaXRpb25OdW1iZXIBBQR1c2VyBA1ib3Jyb3dFbnRyaWVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkApAMBBQZwb3NOdW0FEWtVc2VyQm9ycm93QW1vdW50BQhid0Ftb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwkApAMBBQZwb3NOdW0FEmtVc2VyQm9ycm93QXNzZXRJZAUHYndBc3NldAUDbmlsBAdlbnRyaWVzCQEQcmVwbGVuaXNoRW50cmllcwgFBHBvb2wFBHVzZXIFCnVzZXJTdGFrZWQFB2F4bHlGZWUFBnBvc051bQUHc2hhcmVJZAUFcFR5cGUGCQCUCgIJAM0IAgkAzggCCQDOCAIFB2VudHJpZXMJAQ5nZXRDdXJzRW50cmllcwMFA0FJZAUDQklkBQdzaGFyZUlkBQ1ib3Jyb3dFbnRyaWVzCQELRGVsZXRlRW50cnkBCQCsAgIFCXJlcXVlc3RJZAUKa1JlcXVlc3RJZAUKdXNlclN0YWtlZAFpAQlsaXF1aWRhdGUDBHVzZXIFcG9zSWQPbGlxdWlkYXRlQW1vdW50CQELdmFsdWVPckVsc2UCCQEKaXNMYW5kQ2FsbAEFAWkEBHBvb2wJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQCsAgIJAKwCAgkArAICBQR1c2VyAgFfBQVwb3NJZAURa1VzZXJQb3NpdGlvblBvb2wCC25vIHBvc2l0aW9uBAVwVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMJAKwCAgUFa1Bvb2wFBHBvb2wCElBvb2wgaXMgbm90IGluaXRlZAQNJHQwMzc0MDYzNzQ5NgkBC2dldFBvb2xEYXRhAgkBB0FkZHJlc3MBCQDZBAEFBHBvb2wFBXBUeXBlBANBSWQIBQ0kdDAzNzQwNjM3NDk2Al8xBANCSWQIBQ0kdDAzNzQwNjM3NDk2Al8yBARiYWxBCAUNJHQwMzc0MDYzNzQ5NgJfMwQEYmFsQggFDSR0MDM3NDA2Mzc0OTYCXzQEB3NoYXJlSWQIBQ0kdDAzNzQwNjM3NDk2Al81BAZhbW91bnQJAQl1bnN0YWtlTFAEBQRwb29sBQVwVHlwZQUHc2hhcmVJZAUPbGlxdWlkYXRlQW1vdW50BAxib3Jyb3dBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAURa1VzZXJCb3Jyb3dBbW91bnQEC2JvcnJvd0Fzc2V0CQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEcG9vbAIBXwUEdXNlcgIBXwUFcG9zSWQFEmtVc2VyQm9ycm93QXNzZXRJZAQPdXNlckNhbldpdGhkcmF3CQEYdXNlckNhbldpdGhkcmF3U2hhcmVDYWxjBAUEdXNlcgUEcG9vbAUFcG9zSWQJAGYCBQxib3Jyb3dBbW91bnQAAAMJAAACBQxib3Jyb3dBbW91bnQAAAkAAgECK1lvdSBjYW4ndCBsaXF1aWRhdGUgcG9zaXRpb24gd2l0aG91dCBib3Jyb3cJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQRwb29sAgFfBQR1c2VyAgFfBQVwb3NJZAUVa1VzZXJQb3NpdGlvbkludGVyZXN0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFBHBvb2wFEWtQb29sSW50ZXJlc3RMb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHBvb2wFDmtQb29sVG90YWxMb2FuCQBlAgkBGWdldFBvb2xUb3RhbFNoYXJlV2l0aExvYW4BBQRwb29sBQ9saXF1aWRhdGVBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUKa1Bvb2xUb3RhbAkAZQIJARFnZXRQb29sVG90YWxTaGFyZQEFBHBvb2wFD2xpcXVpZGF0ZUFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHBvb2wCAV8FBHVzZXICAV8FBXBvc0lkBQ1rVXNlclBvc2l0aW9uCQBlAgUPdXNlckNhbldpdGhkcmF3BQ9saXF1aWRhdGVBbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQZhbW91bnQJANkEAQUHc2hhcmVJZAUDbmlsAWkBCHN0b3BMb3NzBAR1c2VyBXBvc0lkBHBvb2wHYXNzZXRJZAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQQQdG9rZW5PcmFjbGVQcmljZQgKAAFACQD8BwQFD3ByaWNlT3JhY2xlQWRkcgIJZ2V0VFdBUDYwCQDMCAIFB2Fzc2V0SWQJAMwIAgcFA25pbAUDbmlsAwkAAQIFAUACCihJbnQsIEludCkFAUAJAAIBCQCsAgIJAAMBBQFAAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpAl8xAwkBASEBCQEJaXNEZWZpbmVkAQkAmggCBQR0aGlzCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBHVzZXICAV8JAKQDAQUFcG9zSWQCAV8FBHBvb2wCAV8FB2Fzc2V0SWQFDWtVc2VyU3RvcExvc3MJAAIBAghObyBlbnRyeQkAzQgCCQEOd2l0aGRyYXdUb1VzZXIECQClCAEIBQFpBmNhbGxlcgUEcG9vbAkApAMBBQVwb3NJZAYJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUEdXNlcgIBXwkApAMBBQVwb3NJZAIBXwUEcG9vbAIBXwUHYXNzZXRJZAUNa1VzZXJTdG9wTG9zcwFpARJjYXBpdGFsaXplRXhLZWVwZXIMBHBvb2wEdHlwZQl0b2tlblRvSWQQYW1vdW50VG9FeGNoYW5nZQVjbGFpbQlhbW91bnRzSW4JYWRkcmVzc2VzD2Fzc2V0c1RvUmVjZWl2ZQtlc3RSZWNlaXZlZBFzbGlwcGFnZVRvbGVyYW5jZQttaW5SZWNlaXZlZAdvcHRpb25zCQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpBA0kdDAzOTI4MjM5NDc2AwUFY2xhaW0JAQtjbGFpbUZhcm1lZAIFBHR5cGUFBHBvb2wEDGNsYWltZWRBc3NldAMJAAACBQR0eXBlBQdTRl9QT09MBQZTV09QSUQFBFdYSUQJAJQKAgUQYW1vdW50VG9FeGNoYW5nZQUMY2xhaW1lZEFzc2V0BA1jbGFpbWVkQW1vdW50CAUNJHQwMzkyODIzOTQ3NgJfMQQMY2xhaW1lZEFzc2V0CAUNJHQwMzkyODIzOTQ3NgJfMgQPZXhjaGFuZ2VkQW1vdW50CQEOZXhjaGFuZ2VLZWVwZXIKBQl0b2tlblRvSWQFEGFtb3VudFRvRXhjaGFuZ2UFDGNsYWltZWRBc3NldAUJYW1vdW50c0luBQlhZGRyZXNzZXMFD2Fzc2V0c1RvUmVjZWl2ZQULZXN0UmVjZWl2ZWQFEXNsaXBwYWdlVG9sZXJhbmNlBQttaW5SZWNlaXZlZAUHb3B0aW9ucwQGY2hhbmdlCQBlAgUNY2xhaW1lZEFtb3VudAUQYW1vdW50VG9FeGNoYW5nZQQLY2hhbmdlRW50cnkDCQBmAgUGY2hhbmdlAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUOa1Bvb2xDYXBDaGFuZ2UJAGQCBQZjaGFuZ2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBQ5rUG9vbENhcENoYW5nZQAABQNuaWwFA25pbAkAzggCCQEKY2FwaXRhbGl6ZQQFBHBvb2wFBHR5cGUFCXRva2VuVG9JZAUPZXhjaGFuZ2VkQW1vdW50BQtjaGFuZ2VFbnRyeQFpARJjYXBpdGFsaXplRXhQdXp6bGUIBHBvb2wEdHlwZQl0b2tlblRvSWQQYW1vdW50VG9FeGNoYW5nZQVjbGFpbQlyb3V0ZXNTdHIMbWluVG9SZWNlaXZlB29wdGlvbnMJAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkEDSR0MDQwMTYxNDAzNTUDBQVjbGFpbQkBC2NsYWltRmFybWVkAgUEdHlwZQUEcG9vbAQMY2xhaW1lZEFzc2V0AwkAAAIFBHR5cGUFB1NGX1BPT0wFBlNXT1BJRAUEV1hJRAkAlAoCBRBhbW91bnRUb0V4Y2hhbmdlBQxjbGFpbWVkQXNzZXQEDWNsYWltZWRBbW91bnQIBQ0kdDA0MDE2MTQwMzU1Al8xBAxjbGFpbWVkQXNzZXQIBQ0kdDA0MDE2MTQwMzU1Al8yBA9leGNoYW5nZWRBbW91bnQJAQ5leGNoYW5nZVB1enpsZQYFCXRva2VuVG9JZAUQYW1vdW50VG9FeGNoYW5nZQUMY2xhaW1lZEFzc2V0BQlyb3V0ZXNTdHIFDG1pblRvUmVjZWl2ZQUHb3B0aW9ucwQGY2hhbmdlCQBlAgUNY2xhaW1lZEFtb3VudAUQYW1vdW50VG9FeGNoYW5nZQQLY2hhbmdlRW50cnkDCQBmAgUGY2hhbmdlAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUOa1Bvb2xDYXBDaGFuZ2UJAGQCBQZjaGFuZ2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBQ5rUG9vbENhcENoYW5nZQAABQNuaWwFA25pbAkAzggCCQEKY2FwaXRhbGl6ZQQFBHBvb2wFBHR5cGUFCXRva2VuVG9JZAUPZXhjaGFuZ2VkQW1vdW50BQtjaGFuZ2VFbnRyeQFpARJjYXBpdGFsaXplRXhTd29wRmkMBHBvb2wEdHlwZQl0b2tlblRvSWQQYW1vdW50VG9FeGNoYW5nZQVjbGFpbQpleGNoYW5nZXJzDmV4Y2hhbmdlcnNUeXBlBWFyZ3MxBWFyZ3MyEXJvdXRpbmdBc3NldHNLZXlzEm1pbkFtb3VudFRvUmVjZWl2ZQdvcHRpb25zCQELdmFsdWVPckVsc2UCCQELaXNBZG1pbkNhbGwBBQFpBA0kdDA0MTEwNjQxMzAwAwUFY2xhaW0JAQtjbGFpbUZhcm1lZAIFBHR5cGUFBHBvb2wEDGNsYWltZWRBc3NldAMJAAACBQR0eXBlBQdTRl9QT09MBQZTV09QSUQFBFdYSUQJAJQKAgUQYW1vdW50VG9FeGNoYW5nZQUMY2xhaW1lZEFzc2V0BA1jbGFpbWVkQW1vdW50CAUNJHQwNDExMDY0MTMwMAJfMQQMY2xhaW1lZEFzc2V0CAUNJHQwNDExMDY0MTMwMAJfMgQPZXhjaGFuZ2VkQW1vdW50CQEOZXhjaGFuZ2VTd29wRmkKBQl0b2tlblRvSWQFEGFtb3VudFRvRXhjaGFuZ2UFDGNsYWltZWRBc3NldAUKZXhjaGFuZ2VycwUOZXhjaGFuZ2Vyc1R5cGUFBWFyZ3MxBQVhcmdzMgURcm91dGluZ0Fzc2V0c0tleXMFEm1pbkFtb3VudFRvUmVjZWl2ZQUHb3B0aW9ucwQGY2hhbmdlCQBlAgUNY2xhaW1lZEFtb3VudAUQYW1vdW50VG9FeGNoYW5nZQQLY2hhbmdlRW50cnkDCQBmAgUGY2hhbmdlAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEcG9vbAUOa1Bvb2xDYXBDaGFuZ2UJAGQCBQZjaGFuZ2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQRwb29sBQ5rUG9vbENhcENoYW5nZQAABQNuaWwFA25pbAkAzggCCQEKY2FwaXRhbGl6ZQQFBHBvb2wFBHR5cGUFCXRva2VuVG9JZAUPZXhjaGFuZ2VkQW1vdW50BQtjaGFuZ2VFbnRyeQFpAQtpbml0TmV3UG9vbAgEdHlwZQhwb29sQWRkcgtpbkZlZU5vTG9hbglpbkZlZUxvYW4MY2FwRmVlTm9Mb2FuDmNhcEZlZVdpdGhMb2FuEXN0b3Bsb3NzRmVlTm9Mb2FuE3N0b3Bsb3NzRmVlV2l0aExvYW4JAQt2YWx1ZU9yRWxzZQIJAQtpc0FkbWluQ2FsbAEFAWkDAwkBAiE9AgUEdHlwZQUHU0ZfUE9PTAkBAiE9AgUEdHlwZQUHV1hfUE9PTAcJAAIBAgpXcm9uZyB0eXBlBA0kdDA0MjAyMTQyMTE1CQELZ2V0UG9vbERhdGECCQEHQWRkcmVzcwEJANkEAQUIcG9vbEFkZHIFBHR5cGUEA2FJZAgFDSR0MDQyMDIxNDIxMTUCXzEEA2JJZAgFDSR0MDQyMDIxNDIxMTUCXzIEBGFCYWwIBQ0kdDA0MjAyMTQyMTE1Al8zBARiQmFsCAUNJHQwNDIwMjE0MjExNQJfNAQHc2hhcmVJZAgFDSR0MDQyMDIxNDIxMTUCXzUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFFWtBeGx5SW5GZWVXaXRob3V0TG9hbgULaW5GZWVOb0xvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFEmtBeGx5SW5GZWVXaXRoTG9hbgUJaW5GZWVMb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRFrQXhseU5vTG9hbkNhcEZlZQUMY2FwRmVlTm9Mb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRNrQXhseVdpdGhMb2FuQ2FwRmVlBQ5jYXBGZWVXaXRoTG9hbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQhwb29sQWRkcgUWa0F4bHlTdG9wTG9zc05vTG9hbkZlZQURc3RvcGxvc3NGZWVOb0xvYW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUIcG9vbEFkZHIFFGtBeGx5U3RvcExvc3NMb2FuRmVlBRNzdG9wbG9zc0ZlZVdpdGhMb2FuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRFrUG9vbEludGVyZXN0TG9hbgAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFCHBvb2xBZGRyBRNrUG9vbEludGVyZXN0Tm9Mb2FuAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQVrUG9vbAUIcG9vbEFkZHIFBHR5cGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQdzaGFyZUlkBQprU2hhcmVQb29sBQhwb29sQWRkcgUDbmlsAQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleejkqPk=", "height": 2636406, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4Fk7bYx6xdHRcB3w32CBpszvhVbawza5M9qHPY7eyDc9 Next: 6D9wtUz83iSGDkhLU1GPC6C5RkFHETkmvyZZe5eXczrr Diff:
OldNewDifferences
465465 let bO = bN._1
466466 let bP = bN._2
467467 let bQ = bN._3
468- let bz = invoke(bO, bP, bQ, nil)
469- if ((bz == bz))
468+ let bR = invoke(bO, bP, bQ, nil)
469+ if ((bR == bR))
470470 then bL
471471 else throw("Strict value is not equal to itself.")
472472 }
473473
474474
475-func bR (aD,bS,bT,ax,ay,bU,bV) = {
475+func bS (aD,bT,bU,ax,ay,bV,bW) = {
476476 let aq = Address(fromBase58String(aD))
477- let bW = 1000000
478- let bX = getIntegerValue(aq, t)
479- let bY = fraction(bU, bW, (bW - bX))
480- let bZ = if ((bV == bS))
477+ let bX = 1000000
478+ let bY = getIntegerValue(aq, t)
479+ let bZ = fraction(bV, bX, (bX - bY))
480+ let ca = if ((bW == bT))
481481 then {
482- let ca = fraction(ax, bY, (ay - bY))
483- $Tuple2(ca, bT)
482+ let cb = fraction(ax, bZ, (ay - bZ))
483+ $Tuple2(cb, bU)
484484 }
485485 else {
486- let ca = fraction(ay, bY, (ax - bY))
487- $Tuple2(ca, bS)
486+ let cb = fraction(ay, bZ, (ax - bZ))
487+ $Tuple2(cb, bT)
488488 }
489- let ca = bZ._1
490- let cb = bZ._2
491- $Tuple2(cb, ca)
489+ let cb = ca._1
490+ let cc = ca._2
491+ $Tuple2(cc, cb)
492492 }
493493
494494
495-func cc (aD,bS,bT,ax,ay,bU,bV) = {
496- let cd = getIntegerValue(ab, "%s__protocolFee")
497- let ce = getIntegerValue(ab, "%s__poolFee")
498- let cf = toBigInt(100000000)
499- let cg = if ((bV == bS))
495+func cd (aD,bT,bU,ax,ay,bV,bW) = {
496+ let ce = getIntegerValue(ab, "%s__protocolFee")
497+ let cf = getIntegerValue(ab, "%s__poolFee")
498+ let cg = toBigInt(100000000)
499+ let ch = if ((bW == bT))
500500 then {
501- let ca = fraction(ax, bU, (ay - bU))
502- $Tuple2(ca, bT)
501+ let cb = fraction(ax, bV, (ay - bV))
502+ $Tuple2(cb, bU)
503503 }
504504 else {
505- let ca = fraction(ay, bU, (ax - bU))
506- $Tuple2(ca, bS)
505+ let cb = fraction(ay, bV, (ax - bV))
506+ $Tuple2(cb, bT)
507507 }
508- let ca = cg._1
509- let cb = cg._2
510- let ch = toInt(fraction(toBigInt(ca), cf, (cf - toBigInt((cd + ce)))))
511- $Tuple2(cb, ch)
508+ let cb = ch._1
509+ let cc = ch._2
510+ let ci = toInt(fraction(toBigInt(cb), cg, (cg - toBigInt((ce + cf)))))
511+ $Tuple2(cc, ci)
512512 }
513513
514514
515-func ci (aA,aD,bS,bT,ax,ay,bU,bV) = if ((aA == a))
515+func cj (aA,aD,bT,bU,ax,ay,bV,bW) = if ((aA == a))
516516 then {
517- let cj = bR(aD, bS, bT, ax, ay, bU, bV)
518- let cb = cj._1
519- let ca = cj._2
520- invoke(addressFromStringValue(aD), "callFunction", ["exchange", ["1"]], [AttachedPayment(aO(cb), ca)])
517+ let ck = bS(aD, bT, bU, ax, ay, bV, bW)
518+ let cc = ck._1
519+ let cb = ck._2
520+ invoke(addressFromStringValue(aD), "callFunction", ["exchange", ["1"]], [AttachedPayment(aO(cc), cb)])
521521 }
522522 else {
523- let ck = cc(aD, bS, bT, ax, ay, bU, bV)
524- let cb = ck._1
525- let ca = ck._2
526- invoke(ab, "swap", [1, bV, toString(this)], [AttachedPayment(aO(cb), ca)])
523+ let cl = cd(aD, bT, bU, ax, ay, bV, bW)
524+ let cc = cl._1
525+ let cb = cl._2
526+ invoke(ab, "swap", [1, bW, toString(this)], [AttachedPayment(aO(cc), cb)])
527527 }
528528
529529
530-func cl (bf,aD,bx,au,by,av,ax,ay) = {
530+func cm (bf,aD,bx,au,by,av,ax,ay) = {
531531 let aq = addressFromStringValue(aD)
532532 if ((bf == a))
533533 then {
534- let bz = {
534+ let bR = {
535535 let at = invoke(aq, "callFunction", ["calcLPReplenishDiffPropREADONLY", [toString(bx), toString(by), "0"]], nil)
536536 if ($isInstanceOf(at, "List[Any]"))
537537 then at
538538 else throw(($getType(at) + " couldn't be cast to List[Any]"))
539539 }
540- if ((bz == bz))
540+ if ((bR == bR))
541541 then $Tuple2({
542- let at = bz[0]
542+ let at = bR[0]
543543 if ($isInstanceOf(at, "Int"))
544544 then at
545545 else throw(($getType(at) + " couldn't be cast to Int"))
546546 }, {
547- let at = bz[1]
547+ let at = bR[1]
548548 if ($isInstanceOf(at, "Int"))
549549 then at
550550 else throw(($getType(at) + " couldn't be cast to Int"))
553553 }
554554 else if ((bf == b))
555555 then {
556- let cm = if (if ((bx > 0))
556+ let cn = if (if ((bx > 0))
557557 then (by > 0)
558558 else false)
559559 then {
560- let cn = bw(bf, aq, bx, au, by, av, ax, ay)
561- let co = cn._1
562- let cp = cn._2
563- let cq = cn._3
564- let cr = cn._4
565- let cs = cn._5
566- $Tuple3(cq, cr, cs)
560+ let co = bw(bf, aq, bx, au, by, av, ax, ay)
561+ let cp = co._1
562+ let cq = co._2
563+ let cr = co._3
564+ let cs = co._4
565+ let ct = co._5
566+ $Tuple3(cr, cs, ct)
567567 }
568568 else if ((bx > 0))
569569 then $Tuple3(bx, au, 0)
570570 else $Tuple3(by, av, 0)
571- let cq = cm._1
572- let cr = cm._2
573- let ct = cm._3
574- let cu = if ((cq > 0))
571+ let cr = cn._1
572+ let cs = cn._2
573+ let cu = cn._3
574+ let cv = if ((cr > 0))
575575 then {
576- let bz = {
577- let at = invoke(aq, "putOneTknREADONLY", [cr, cq], nil)
576+ let bR = {
577+ let at = invoke(aq, "putOneTknREADONLY", [cs, cr], nil)
578578 if ($isInstanceOf(at, "(Int, Int, Int)"))
579579 then at
580580 else throw(($getType(at) + " couldn't be cast to (Int, Int, Int)"))
581581 }
582- if ((bz == bz))
583- then $Tuple2(bz._1, bz._3)
582+ if ((bR == bR))
583+ then $Tuple2(bR._1, bR._3)
584584 else throw("Strict value is not equal to itself.")
585585 }
586586 else $Tuple2(0, 0)
587- let cv = cu._1
588- let cw = cu._2
589- $Tuple2((ct + cv), cw)
587+ let cw = cv._1
588+ let cx = cv._2
589+ $Tuple2((cu + cw), cx)
590590 }
591591 else throw("Wrong pool type")
592592 }
593593
594594
595-func cx (bf,aD,cs,aw,au,av,ax,ay,cy,cz) = {
595+func cy (bf,aD,ct,aw,au,av,ax,ay,cz,cA) = {
596596 let aq = addressFromStringValue(aD)
597- let cA = if ((bf == a))
597+ let cB = if ((bf == a))
598598 then {
599- let bz = {
600- let at = invoke(aq, "callFunction", ["withdrawREADONLY", [toString(cs), toString(ax), toString(ay)]], nil)
599+ let bR = {
600+ let at = invoke(aq, "callFunction", ["withdrawREADONLY", [toString(ct), toString(ax), toString(ay)]], nil)
601601 if ($isInstanceOf(at, "List[Any]"))
602602 then at
603603 else throw(($getType(at) + " couldn't be cast to List[Any]"))
604604 }
605- if ((bz == bz))
605+ if ((bR == bR))
606606 then $Tuple2({
607- let at = bz[0]
607+ let at = bR[0]
608608 if ($isInstanceOf(at, "Int"))
609609 then at
610610 else throw(($getType(at) + " couldn't be cast to Int"))
611611 }, {
612- let at = bz[1]
612+ let at = bR[1]
613613 if ($isInstanceOf(at, "Int"))
614614 then at
615615 else throw(($getType(at) + " couldn't be cast to Int"))
618618 }
619619 else if ((bf == b))
620620 then {
621- let cB = split({
622- let at = invoke(aq, "evaluateGetREADONLY", [aw, cs], nil)
621+ let cC = split({
622+ let at = invoke(aq, "evaluateGetREADONLY", [aw, ct], nil)
623623 if ($isInstanceOf(at, "String"))
624624 then at
625625 else throw(($getType(at) + " couldn't be cast to String"))
626626 }, "__")
627- if ((cB == cB))
628- then $Tuple2(parseIntValue(cB[1]), parseIntValue(cB[2]))
627+ if ((cC == cC))
628+ then $Tuple2(parseIntValue(cC[1]), parseIntValue(cC[2]))
629629 else throw("Strict value is not equal to itself.")
630630 }
631631 else throw("Wrong pool type")
632- let cC = cA._1
633- let cD = cA._2
634- if ((cy > 0))
632+ let cD = cB._1
633+ let cE = cB._2
634+ if ((cz > 0))
635635 then {
636- let cE = if (if ((cz == au))
637- then (cy > cC)
636+ let cF = if (if ((cA == au))
637+ then (cz > cD)
638638 else false)
639- then (cy - cC)
640- else if (if ((cz == av))
641- then (cy > cD)
639+ then (cz - cD)
640+ else if (if ((cA == av))
641+ then (cz > cE)
642642 else false)
643- then (cy - cD)
643+ then (cz - cE)
644644 else 0
645- let cF = if ((cE > 0))
645+ let cG = if ((cF > 0))
646646 then if ((bf == a))
647- then bR(aD, au, av, ax, ay, cE, cz)
648- else cc(aD, au, av, ax, ay, cE, cz)
647+ then bS(aD, au, av, ax, ay, cF, cA)
648+ else cd(aD, au, av, ax, ay, cF, cA)
649649 else $Tuple2("", 0)
650- let cb = cF._1
651- let ca = cF._2
652- if ((cz == au))
653- then $Tuple2(((cC + cE) - cy), (cD - ca))
654- else $Tuple2((cC - ca), ((cD + cE) - cy))
650+ let cc = cG._1
651+ let cb = cG._2
652+ if ((cA == au))
653+ then $Tuple2(((cD + cF) - cz), (cE - cb))
654+ else $Tuple2((cD - cb), ((cE + cF) - cz))
655655 }
656- else $Tuple2(cC, cD)
656+ else $Tuple2(cD, cE)
657657 }
658658
659659
660-func cG (aA,aD) = if ((aA == a))
660+func cH (aA,aD) = if ((aA == a))
661661 then {
662- let cH = ak(ac)
663- if ((cH == cH))
662+ let cI = ak(ac)
663+ if ((cI == cI))
664664 then {
665- let bz = invoke(aJ(), "claim", [aD], nil)
666- if ((bz == bz))
665+ let bR = invoke(aJ(), "claim", [aD], nil)
666+ if ((bR == bR))
667667 then {
668- let cI = ak(ac)
669- $Tuple2((cI - cH), ac)
668+ let cJ = ak(ac)
669+ $Tuple2((cJ - cI), ac)
670670 }
671671 else throw("Strict value is not equal to itself.")
672672 }
674674 }
675675 else if ((aA == b))
676676 then {
677- let cH = ak(ad)
678- if ((cH == cH))
677+ let cI = ak(ad)
678+ if ((cI == cI))
679679 then {
680- let bz = invoke(aK(Address(fromBase58String(aD))), "claimWX", [aD], nil)
681- if ((bz == bz))
680+ let bR = invoke(aK(Address(fromBase58String(aD))), "claimWX", [aD], nil)
681+ if ((bR == bR))
682682 then {
683- let cI = ak(ad)
684- $Tuple2((cI - cH), ad)
683+ let cJ = ak(ad)
684+ $Tuple2((cJ - cI), ad)
685685 }
686686 else throw("Strict value is not equal to itself.")
687687 }
690690 else throw("Wrong pool type")
691691
692692
693-func cJ (bf,aD,aI,bx,au,by,av,ax,ay,cK) = {
694- let cL = ak(fromBase58String(cK))
695- if ((cL == cL))
693+func cK (bf,aD,aI,bx,au,by,av,ax,ay,cL) = {
694+ let cM = ak(fromBase58String(cL))
695+ if ((cM == cM))
696696 then {
697697 let aq = addressFromStringValue(aD)
698- let cM = if (if ((bx > 0))
698+ let cN = if (if ((bx > 0))
699699 then (by > 0)
700700 else false)
701701 then {
702- let cN = bw(bf, aq, bx, au, by, av, ax, ay)
703- let co = cN._1
704- let cp = cN._2
705- let cq = cN._3
706- let cr = cN._4
707- let bz = bG(aq, bf, co, au, cp, av)
708- if ((bz == bz))
709- then $Tuple2(cq, cr)
702+ let cO = bw(bf, aq, bx, au, by, av, ax, ay)
703+ let cp = cO._1
704+ let cq = cO._2
705+ let cr = cO._3
706+ let cs = cO._4
707+ let bR = bG(aq, bf, cp, au, cq, av)
708+ if ((bR == bR))
709+ then $Tuple2(cr, cs)
710710 else throw("Strict value is not equal to itself.")
711711 }
712712 else if ((bx > 0))
714714 else if ((by > 0))
715715 then $Tuple2(by, av)
716716 else throw("pmts must be > 0")
717- let cq = cM._1
718- let cr = cM._2
719- let bz = if ((cq > 0))
720- then bI(aq, bf, cq, cr)
717+ let cr = cN._1
718+ let cs = cN._2
719+ let bR = if ((cr > 0))
720+ then bI(aq, bf, cr, cs)
721721 else nil
722- if ((bz == bz))
722+ if ((bR == bR))
723723 then {
724- let cO = ak(fromBase58String(cK))
725- let cP = (cO - cL)
726- let cQ = fraction(cP, aH(aD, aI), m)
727- let cR = (cP - cQ)
728- if ((0 >= cR))
724+ let cP = ak(fromBase58String(cL))
725+ let cQ = (cP - cM)
726+ let cR = fraction(cQ, aH(aD, aI), m)
727+ let cS = (cQ - cR)
728+ if ((0 >= cS))
729729 then throw("amount of staked sharetokens must be > 0")
730730 else {
731- let cS = bK(aD, bf, cK, cR)
732- if ((cS == cS))
733- then $Tuple2(cR, cQ)
731+ let cT = bK(aD, bf, cL, cS)
732+ if ((cT == cT))
733+ then $Tuple2(cS, cR)
734734 else throw("Strict value is not equal to itself.")
735735 }
736736 }
740740 }
741741
742742
743-func cT (aD,aG,cU,cQ,cV,aw,aA,cW) = {
744- let cX = aC(aD)
745- let cY = aE(aD)
746- let cZ = if (cW)
747- then $Tuple2(getIntegerValue(this, (aD + C)), (cY + cU))
748- else $Tuple2(getIntegerValue(this, (aD + D)), cY)
749- let da = cZ._1
750- let db = cZ._2
751-[IntegerEntry((aD + A), (cX + cU)), IntegerEntry((aD + B), db), IntegerEntry((((((aD + "_") + aG) + "_") + toString(cV)) + u), cU), IntegerEntry((((((aD + "_") + aG) + "_") + toString(cV)) + z), da), StringEntry((((aG + "_") + toString(cV)) + v), aD), IntegerEntry((aG + y), cV), ScriptTransfer(Y, cQ, fromBase58String(aw))]
743+func cU (aD,aG,cV,cR,cW,aw,aA,cX) = {
744+ let cY = aC(aD)
745+ let cZ = aE(aD)
746+ let da = if (cX)
747+ then $Tuple2(getIntegerValue(this, (aD + C)), (cZ + cV))
748+ else $Tuple2(getIntegerValue(this, (aD + D)), cZ)
749+ let db = da._1
750+ let dc = da._2
751+[IntegerEntry((aD + A), (cY + cV)), IntegerEntry((aD + B), dc), IntegerEntry((((((aD + "_") + aG) + "_") + toString(cW)) + u), cV), IntegerEntry((((((aD + "_") + aG) + "_") + toString(cW)) + z), db), StringEntry((((aG + "_") + toString(cW)) + v), aD), IntegerEntry((aG + y), cW), ScriptTransfer(Y, cR, fromBase58String(aw))]
752752 }
753753
754754
755-func dc (dd,de,df,dg,dh,di,dj,dk,dl,dm) = {
756- let dn = ak(aO(dd))
757- if ((dn == dn))
755+func dd (de,df,dg,dh,di,dj,dk,dl,dm,dn) = {
756+ let do = ak(aO(de))
757+ if ((do == do))
758758 then {
759- let bz = invoke(Z, "swap", [dg, dh, di, dj, dk, dl, dm], [AttachedPayment(df, de)])
760- if ((bz == bz))
761- then (ak(aO(dd)) - dn)
759+ let bR = invoke(Z, "swap", [dh, di, dj, dk, dl, dm, dn], [AttachedPayment(dg, df)])
760+ if ((bR == bR))
761+ then (ak(aO(de)) - do)
762762 else throw("Strict value is not equal to itself.")
763763 }
764764 else throw("Strict value is not equal to itself.")
765765 }
766766
767767
768-func do (dd,de,df,dp,dq,dm) = {
769- let dn = ak(aO(dd))
770- if ((dn == dn))
768+func dp (de,df,dg,dq,dr,dn) = {
769+ let do = ak(aO(de))
770+ if ((do == do))
771771 then {
772- let bz = invoke(Z, "puzzleSwap", [dp, dq, dm], [AttachedPayment(df, de)])
773- if ((bz == bz))
774- then (ak(aO(dd)) - dn)
772+ let bR = invoke(Z, "puzzleSwap", [dq, dr, dn], [AttachedPayment(dg, df)])
773+ if ((bR == bR))
774+ then (ak(aO(de)) - do)
775775 else throw("Strict value is not equal to itself.")
776776 }
777777 else throw("Strict value is not equal to itself.")
778778 }
779779
780780
781-func dr (dd,de,df,ds,dt,du,dv,dw,dx,dm) = {
782- let dn = ak(aO(dd))
783- if ((dn == dn))
781+func ds (de,df,dg,dt,du,dv,dw,dx,dy,dn) = {
782+ let do = ak(aO(de))
783+ if ((do == do))
784784 then {
785- let bz = invoke(Z, "swopfiSwap", [ds, dt, du, dv, dw, dx, dm], [AttachedPayment(df, de)])
786- if ((bz == bz))
787- then (ak(aO(dd)) - dn)
785+ let bR = invoke(Z, "swopfiSwap", [dt, du, dv, dw, dx, dy, dn], [AttachedPayment(dg, df)])
786+ if ((bR == bR))
787+ then (ak(aO(de)) - do)
788788 else throw("Strict value is not equal to itself.")
789789 }
790790 else throw("Strict value is not equal to itself.")
791791 }
792792
793793
794-func dy (aD,bf,dz,dA) = {
794+func dz (aD,bf,dA,dB) = {
795795 let aq = Address(fromBase58String(aD))
796- let dB = az(aq, bf)
797- let dC = dB._1
798- let dD = dB._2
799- let ax = dB._3
800- let ay = dB._4
801- let aw = dB._5
802- if (if ((dz != dC))
803- then (dz != dD)
796+ let dC = az(aq, bf)
797+ let dD = dC._1
798+ let dE = dC._2
799+ let ax = dC._3
800+ let ay = dC._4
801+ let aw = dC._5
802+ if (if ((dA != dD))
803+ then (dA != dE)
804804 else false)
805805 then throw("Wrong asset")
806806 else {
807- let dE = if ((dz == dC))
808- then $Tuple2(dA, 0)
809- else $Tuple2(0, dA)
810- let bx = dE._1
811- let by = dE._2
812- let dF = cJ(bf, aD, i, bx, dC, by, dD, ax, ay, aw)
813- let cU = dF._1
814- let dG = dF._2
815- let dH = valueOrElse(getInteger(this, (aD + C)), 0)
816- let dI = valueOrElse(getInteger(this, (aD + D)), 0)
817- let dJ = aC(aD)
818- let dK = aE(aD)
819- let dL = fraction(dK, j, dJ)
820- let dM = fraction(cU, dL, j)
821- let dN = (cU - dM)
822- let dO = if ((dK > 0))
823- then (dH + fraction(dM, k, dK))
807+ let dF = if ((dA == dD))
808+ then $Tuple2(dB, 0)
809+ else $Tuple2(0, dB)
810+ let bx = dF._1
811+ let by = dF._2
812+ let dG = cK(bf, aD, i, bx, dD, by, dE, ax, ay, aw)
813+ let cV = dG._1
814+ let dH = dG._2
815+ let dI = valueOrElse(getInteger(this, (aD + C)), 0)
816+ let dJ = valueOrElse(getInteger(this, (aD + D)), 0)
817+ let dK = aC(aD)
818+ let dL = aE(aD)
819+ let dM = fraction(dL, j, dK)
820+ let dN = fraction(cV, dM, j)
821+ let dO = (cV - dN)
822+ let dP = if ((dL > 0))
823+ then (dI + fraction(dN, k, dL))
824824 else 0
825- let dP = if (((dJ - dK) > 0))
826- then (dI + fraction(dN, k, (dJ - dK)))
825+ let dQ = if (((dK - dL) > 0))
826+ then (dJ + fraction(dO, k, (dK - dL)))
827827 else 0
828- let dQ = fraction(dM, aH(aD, d), m)
829- let dR = fraction(dN, aH(aD, c), m)
830- let dS = bM(aD, bf, aw, (dQ + dR))
831- if ((dS == dS))
832- then ([IntegerEntry((aD + C), dO), IntegerEntry((aD + D), dP), IntegerEntry((aD + A), ((dJ + cU) - dS)), IntegerEntry((aD + B), ((dK + dM) - dQ)), ScriptTransfer(Y, (dQ + dR), fromBase58String(aw))] ++ bs(dC, dD, aw))
828+ let dR = fraction(dN, aH(aD, d), m)
829+ let dS = fraction(dO, aH(aD, c), m)
830+ let dT = bM(aD, bf, aw, (dR + dS))
831+ if ((dT == dT))
832+ then ([IntegerEntry((aD + C), dP), IntegerEntry((aD + D), dQ), IntegerEntry((aD + A), ((dK + cV) - dT)), IntegerEntry((aD + B), ((dL + dN) - dR)), ScriptTransfer(Y, (dR + dS), fromBase58String(aw))] ++ bs(dD, dE, aw))
833833 else throw("Strict value is not equal to itself.")
834834 }
835835 }
836836
837837
838-func dT (aD,dU,dV,dW) = {
838+func dU (aD,dV,dW,dX) = {
839839 let aq = Address(fromBase58String(aD))
840840 let bf = valueOrErrorMessage(getString(this, (M + aD)), "Unknown pool")
841- let dX = az(aq, bf)
842- let bS = dX._1
843- let bT = dX._2
844- let ax = dX._3
845- let ay = dX._4
846- let aw = dX._5
847- let dY = ak(aO(bS))
848- if ((dY == dY))
841+ let dY = az(aq, bf)
842+ let bT = dY._1
843+ let bU = dY._2
844+ let ax = dY._3
845+ let ay = dY._4
846+ let aw = dY._5
847+ let dZ = ak(aO(bT))
848+ if ((dZ == dZ))
849849 then {
850- let dZ = ak(aO(bT))
851- if ((dZ == dZ))
850+ let ea = ak(aO(bU))
851+ if ((ea == ea))
852852 then {
853- let bz = if ((bf == a))
854- then invoke(aq, "callFunction", ["withdraw", [toString(dU)]], nil)
853+ let bR = if ((bf == a))
854+ then invoke(aq, "callFunction", ["withdraw", [toString(dV)]], nil)
855855 else {
856- let bz = bM(aD, bf, aw, dU)
857- if ((bz == bz))
858- then invoke(aq, "get", nil, [AttachedPayment(aO(aw), dU)])
856+ let bR = bM(aD, bf, aw, dV)
857+ if ((bR == bR))
858+ then invoke(aq, "get", nil, [AttachedPayment(aO(aw), dV)])
859859 else throw("Strict value is not equal to itself.")
860860 }
861- if ((bz == bz))
861+ if ((bR == bR))
862862 then {
863- let ea = ak(aO(bS))
864863 let eb = ak(aO(bT))
865- let ec = $Tuple2((ea - dY), (eb - dZ))
866- let ed = ec._1
867- let ee = ec._2
868- let ef = if ((dV > 0))
864+ let ec = ak(aO(bU))
865+ let ed = $Tuple2((eb - dZ), (ec - ea))
866+ let ee = ed._1
867+ let ef = ed._2
868+ let eg = if ((dW > 0))
869869 then {
870- let cE = if (if ((dW == bS))
871- then (dV > ed)
870+ let cF = if (if ((dX == bT))
871+ then (dW > ee)
872872 else false)
873- then (dV - ed)
874- else if (if ((dW == bT))
875- then (dV > ee)
873+ then (dW - ee)
874+ else if (if ((dX == bU))
875+ then (dW > ef)
876876 else false)
877- then (dV - ee)
877+ then (dW - ef)
878878 else 0
879- let eg = if ((cE > 0))
880- then ci(bf, aD, bS, bT, ax, ay, cE, dW)
879+ let eh = if ((cF > 0))
880+ then cj(bf, aD, bT, bU, ax, ay, cF, dX)
881881 else 0
882- if ((eg == eg))
882+ if ((eh == eh))
883883 then {
884- let eh = ak(aO(bS))
885884 let ei = ak(aO(bT))
886- $Tuple2((eh - dY), (ei - dZ))
885+ let ej = ak(aO(bU))
886+ $Tuple2((ei - dZ), (ej - ea))
887887 }
888888 else throw("Strict value is not equal to itself.")
889889 }
890- else $Tuple2(ed, ee)
891- let ej = ef._1
892- let ek = ef._2
893- $Tuple7(ej, bS, ek, bT, ea, eb, aw)
890+ else $Tuple2(ee, ef)
891+ let ek = eg._1
892+ let el = eg._2
893+ $Tuple7(ek, bT, el, bU, eb, ec, aw)
894894 }
895895 else throw("Strict value is not equal to itself.")
896896 }
900900 }
901901
902902
903-func el (aG,aD,em,en) = {
904- let eo = valueOrErrorMessage(getInteger(this, (((((aD + "_") + aG) + "_") + em) + u)), "Unknown position")
905- let ep = getIntegerValue(this, (((((aD + "_") + aG) + "_") + em) + z))
906- let eq = if (en)
903+func em (aG,aD,en,eo) = {
904+ let ep = valueOrErrorMessage(getInteger(this, (((((aD + "_") + aG) + "_") + en) + u)), "Unknown position")
905+ let eq = getIntegerValue(this, (((((aD + "_") + aG) + "_") + en) + z))
906+ let er = if (eo)
907907 then getIntegerValue(this, (aD + C))
908908 else getIntegerValue(this, (aD + D))
909- (eo + fraction(eo, (eq - ep), k))
909+ (ep + fraction(ep, (er - eq), k))
910910 }
911911
912912
913-func er (aG,aD,em,es) = {
914- let eo = valueOrErrorMessage(getInteger(this, (((((aD + "_") + aG) + "_") + em) + u)), "Unknown position")
915- let ep = getIntegerValue(this, (((((aD + "_") + aG) + "_") + em) + z))
916- let cy = valueOrElse(getInteger(this, (((((aD + "_") + aG) + "_") + em) + w)), 0)
917- let dU = el(aG, aD, em, (cy > 0))
918- let et = aC(aD)
919- let eu = Address(fromBase58String(aG))
920- let dW = valueOrElse(getString(this, (((((aD + "_") + aG) + "_") + em) + x)), "")
921- let dV = if ((cy > 0))
913+func es (aG,aD,en,et) = {
914+ let ep = valueOrErrorMessage(getInteger(this, (((((aD + "_") + aG) + "_") + en) + u)), "Unknown position")
915+ let eq = getIntegerValue(this, (((((aD + "_") + aG) + "_") + en) + z))
916+ let cz = valueOrElse(getInteger(this, (((((aD + "_") + aG) + "_") + en) + w)), 0)
917+ let dV = em(aG, aD, en, (cz > 0))
918+ let eu = aC(aD)
919+ let ev = Address(fromBase58String(aG))
920+ let dX = valueOrElse(getString(this, (((((aD + "_") + aG) + "_") + en) + x)), "")
921+ let dW = if ((cz > 0))
922922 then {
923- let at = invoke(ae(), "getAssetDebt", [false, ((aG + "_") + em), dW], nil)
923+ let at = invoke(ae(), "getAssetDebt", [false, ((aG + "_") + en), dX], nil)
924924 if ($isInstanceOf(at, "Int"))
925925 then at
926926 else throw(($getType(at) + " couldn't be cast to Int"))
927927 }
928928 else 0
929- let ev = dT(aD, dU, dV, dW)
930- if ((ev == ev))
929+ let ew = dU(aD, dV, dW, dX)
930+ if ((ew == ew))
931931 then {
932- let aw = ev._7
933- let eb = ev._6
934- let ea = ev._5
935- let bT = ev._4
936- let ek = ev._3
937- let bS = ev._2
938- let ej = ev._1
939- let ew = if ((dV > 0))
940- then invoke(ae(), "repayFor", [((aG + "_") + em)], [AttachedPayment(aO(dW), dV)])
932+ let aw = ew._7
933+ let ec = ew._6
934+ let eb = ew._5
935+ let bU = ew._4
936+ let el = ew._3
937+ let bT = ew._2
938+ let ek = ew._1
939+ let ex = if ((dW > 0))
940+ then invoke(ae(), "repayFor", [((aG + "_") + en)], [AttachedPayment(aO(dX), dW)])
941941 else 0
942- if ((ew == ew))
943- then ([DeleteEntry((((((aD + "_") + aG) + "_") + em) + u)), DeleteEntry((((((aD + "_") + aG) + "_") + em) + z)), IntegerEntry((aD + A), (et - dU)), ScriptTransfer(eu, ej, aO(bS)), ScriptTransfer(eu, ek, aO(bT))] ++ bs(bS, bT, aw))
942+ if ((ex == ex))
943+ then ([DeleteEntry((((((aD + "_") + aG) + "_") + en) + u)), DeleteEntry((((((aD + "_") + aG) + "_") + en) + z)), IntegerEntry((aD + A), (eu - dV)), ScriptTransfer(ev, ek, aO(bT)), ScriptTransfer(ev, el, aO(bU))] ++ bs(bT, bU, aw))
944944 else throw("Strict value is not equal to itself.")
945945 }
946946 else throw("Strict value is not equal to itself.")
947947 }
948948
949949
950-func ex (ey) = {
951- let ez = split(valueOrErrorMessage(getString(this, (ey + K)), ("No request with id " + ey)), ",")
952- let aG = ez[0]
953- let aD = ez[1]
954- let bx = parseIntValue(ez[2])
955- let dC = ez[3]
956- let by = parseIntValue(ez[4])
957- let dD = ez[5]
958- let ax = parseIntValue(ez[6])
959- let ay = parseIntValue(ez[7])
960- let aw = ez[8]
961- let eA = ez[9]
962- let eB = parseIntValue(ez[10])
963- $Tuple11(aG, aD, bx, dC, by, dD, ax, ay, aw, eA, eB)
950+func ey (ez) = {
951+ let eA = split(valueOrErrorMessage(getString(this, (ez + K)), ("No request with id " + ez)), ",")
952+ let aG = eA[0]
953+ let aD = eA[1]
954+ let bx = parseIntValue(eA[2])
955+ let dD = eA[3]
956+ let by = parseIntValue(eA[4])
957+ let dE = eA[5]
958+ let ax = parseIntValue(eA[6])
959+ let ay = parseIntValue(eA[7])
960+ let aw = eA[8]
961+ let eB = eA[9]
962+ let eC = parseIntValue(eA[10])
963+ $Tuple11(aG, aD, bx, dD, by, dE, ax, ay, aw, eB, eC)
964964 }
965965
966966
967-func eC (bx,by,au,av,eD,eE) = {
967+func eD (bx,by,au,av,eE,eF) = {
968968 let bj = ( let at = invoke(aa, "getTWAP60", [au, false], nil)
969969 if ($isInstanceOf(at, "(Int, Int)"))
970970 then at
973973 if ($isInstanceOf(at, "(Int, Int)"))
974974 then at
975975 else throw(($getType(at) + " couldn't be cast to (Int, Int)")))._2
976- let eF = pow(10, 0, aP(au), 0, 0, DOWN)
977- let eG = pow(10, 0, aP(av), 0, 0, DOWN)
978- let eH = (fraction(bj, bx, eF) + fraction(bk, by, eG))
979- let eI = if ((eE == au))
980- then $Tuple2(bj, eF)
981- else $Tuple2(bk, eG)
982- let eJ = eI._1
983- let eK = eI._2
984- fraction(fraction(eH, (eD - 100), 100), eK, eJ)
976+ let eG = pow(10, 0, aP(au), 0, 0, DOWN)
977+ let eH = pow(10, 0, aP(av), 0, 0, DOWN)
978+ let eI = (fraction(bj, bx, eG) + fraction(bk, by, eH))
979+ let eJ = if ((eF == au))
980+ then $Tuple2(bj, eG)
981+ else $Tuple2(bk, eH)
982+ let eK = eJ._1
983+ let eL = eJ._2
984+ fraction(fraction(eI, (eE - 100), 100), eL, eK)
985985 }
986986
987987
988988 @Callable(ah)
989-func calcPriceImpactEVALONLY (aD,eD,eE,bx,by) = if (if ((100 > eD))
989+func calcPriceImpactEVALONLY (aD,eE,eF,bx,by) = if (if ((100 > eE))
990990 then true
991- else (eD > 300))
991+ else (eE > 300))
992992 then throw("Leverage can't be <100 and >300")
993993 else {
994994 let bf = valueOrErrorMessage(getString(this, (M + aD)), "Pool is not inited")
995- let eL = az(Address(fromBase58String(aD)), bf)
996- let dC = eL._1
997- let dD = eL._2
998- let ax = eL._3
999- let ay = eL._4
1000- let aw = eL._5
1001- let cy = if ((eD > 100))
1002- then eC(bx, by, dC, dD, eD, eE)
995+ let eM = az(Address(fromBase58String(aD)), bf)
996+ let dD = eM._1
997+ let dE = eM._2
998+ let ax = eM._3
999+ let ay = eM._4
1000+ let aw = eM._5
1001+ let cz = if ((eE > 100))
1002+ then eD(bx, by, dD, dE, eE, eF)
10031003 else 0
1004- let eM = if ((eE == dC))
1005- then $Tuple2((bx + cy), by)
1006- else $Tuple2(bx, (by + cy))
1007- let eN = eM._1
1008- let eO = eM._2
1009- let eP = cl(bf, aD, eN, dC, eO, dD, ax, ay)
1010- let cs = eP._1
1011- let cw = eP._2
1012- let eQ = if ((0 > cw))
1013- then (cw * -1)
1014- else cw
1015- $Tuple2(nil, [eQ])
1004+ let eN = if ((eF == dD))
1005+ then $Tuple2((bx + cz), by)
1006+ else $Tuple2(bx, (by + cz))
1007+ let eO = eN._1
1008+ let eP = eN._2
1009+ let eQ = cm(bf, aD, eO, dD, eP, dE, ax, ay)
1010+ let ct = eQ._1
1011+ let cx = eQ._2
1012+ let eR = if ((0 > cx))
1013+ then (cx * -1)
1014+ else cx
1015+ $Tuple2(nil, [eR])
10161016 }
10171017
10181018
10191019
10201020 @Callable(ah)
10211021 func getShareAssetPriceREADONLY (aw) = {
1022- let eR = be(aw)
1023- $Tuple2(nil, eR)
1022+ let eS = be(aw)
1023+ $Tuple2(nil, eS)
10241024 }
10251025
10261026
10271027
10281028 @Callable(ah)
1029-func getUserPositionShareAmountREADONLY (aG,cV) = {
1030- let aD = valueOrErrorMessage(getString(this, (((aG + "_") + cV) + v)), "Unknown position")
1031- let cy = getIntegerValue(this, (((((aD + "_") + aG) + "_") + cV) + w))
1032- let dU = el(aG, aD, cV, (cy > 0))
1033- $Tuple2(nil, dU)
1029+func getUserPositionShareAmountREADONLY (aG,cW) = {
1030+ let aD = valueOrErrorMessage(getString(this, (((aG + "_") + cW) + v)), "Unknown position")
1031+ let cz = getIntegerValue(this, (((((aD + "_") + aG) + "_") + cW) + w))
1032+ let dV = em(aG, aD, cW, (cz > 0))
1033+ $Tuple2(nil, dV)
10341034 }
10351035
10361036
10371037
10381038 @Callable(ah)
1039-func getUserPositionInDollarsREADONLY (aG,eS,cV) = {
1040- func eT (aV,aD) = {
1041- let eU = aV
1042- let eV = eU._1
1043- let eW = eU._2
1044- let eX = eU._3
1039+func getUserPositionInDollarsREADONLY (aG,eT,cW) = {
1040+ func eU (aV,aD) = {
1041+ let eV = aV
1042+ let eW = eV._1
1043+ let eX = eV._2
1044+ let eY = eV._3
10451045 let bf = valueOrErrorMessage(getString(this, (M + aD)), "Pool is not inited")
1046- let eY = az(Address(fromBase58String(aD)), bf)
1047- let dC = eY._1
1048- let dD = eY._2
1049- let ax = eY._3
1050- let ay = eY._4
1051- let aw = eY._5
1052- let cy = valueOrElse(getInteger(this, (((((aD + "_") + aG) + "_") + cV[eX]) + w)), 0)
1053- let dU = el(aG, aD, cV[eX], (cy > 0))
1054- let eR = be(aw)
1055- let eZ = pow(10, 0, aP(aw), 0, 0, DOWN)
1056- let fa = fraction(dU, eR, eZ)
1057- if ((cy == 0))
1058- then $Tuple3((eV :+ fa), (eW :+ 0), (eX + 1))
1046+ let eZ = az(Address(fromBase58String(aD)), bf)
1047+ let dD = eZ._1
1048+ let dE = eZ._2
1049+ let ax = eZ._3
1050+ let ay = eZ._4
1051+ let aw = eZ._5
1052+ let cz = valueOrElse(getInteger(this, (((((aD + "_") + aG) + "_") + cW[eY]) + w)), 0)
1053+ let dV = em(aG, aD, cW[eY], (cz > 0))
1054+ let eS = be(aw)
1055+ let fa = pow(10, 0, aP(aw), 0, 0, DOWN)
1056+ let fb = fraction(dV, eS, fa)
1057+ if ((cz == 0))
1058+ then $Tuple3((eW :+ fb), (eX :+ 0), (eY + 1))
10591059 else {
1060- let dW = getStringValue(this, (((((aD + "_") + aG) + "_") + cV[eX]) + x))
1061- let dV = {
1062- let at = invoke(ae(), "getAssetDebt", [false, ((aG + "_") + cV[eX]), dW], nil)
1060+ let dX = getStringValue(this, (((((aD + "_") + aG) + "_") + cW[eY]) + x))
1061+ let dW = {
1062+ let at = invoke(ae(), "getAssetDebt", [false, ((aG + "_") + cW[eY]), dX], nil)
10631063 if ($isInstanceOf(at, "Int"))
10641064 then at
10651065 else throw(($getType(at) + " couldn't be cast to Int"))
10661066 }
1067- let fb = ( let at = invoke(aa, "getTWAP60", [dW, false], nil)
1067+ let fc = ( let at = invoke(aa, "getTWAP60", [dX, false], nil)
10681068 if ($isInstanceOf(at, "(Int, Int)"))
10691069 then at
10701070 else throw(($getType(at) + " couldn't be cast to (Int, Int)")))._1
1071- let fc = pow(10, 0, aP(dW), 0, 0, DOWN)
1072- let fd = fraction(dV, fb, fc)
1073- $Tuple3((eV :+ fa), (eW :+ fd), (eX + 1))
1071+ let fd = pow(10, 0, aP(dX), 0, 0, DOWN)
1072+ let fe = fraction(dW, fc, fd)
1073+ $Tuple3((eW :+ fb), (eX :+ fe), (eY + 1))
10741074 }
10751075 }
10761076
1077- let fe = {
1078- let aX = eS
1077+ let ff = {
1078+ let aX = eT
10791079 let aY = size(aX)
10801080 let aZ = $Tuple3(nil, nil, 0)
10811081 func ba (bb,bc) = if ((bc >= aY))
10821082 then bb
1083- else eT(bb, aX[bc])
1083+ else eU(bb, aX[bc])
10841084
10851085 func bd (bb,bc) = if ((bc >= aY))
10861086 then bb
10881088
10891089 bd(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(aZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
10901090 }
1091- let ff = fe._1
1092- let dV = fe._2
1093- $Tuple2(nil, $Tuple2(ff, dV))
1091+ let fg = ff._1
1092+ let dW = ff._2
1093+ $Tuple2(nil, $Tuple2(fg, dW))
10941094 }
10951095
10961096
10971097
10981098 @Callable(ah)
1099-func replenish (aD,eD,eE) = if (if ((100 > eD))
1099+func replenish (aD,eE,eF) = if (if ((100 > eE))
11001100 then true
1101- else (eD > 300))
1101+ else (eE > 300))
11021102 then throw("Leverage can't be <100 and >300")
11031103 else {
11041104 let bf = valueOrErrorMessage(getString(this, (M + aD)), "Pool is not inited")
1105- let fg = az(Address(fromBase58String(aD)), bf)
1106- let dC = fg._1
1107- let dD = fg._2
1108- let ax = fg._3
1109- let ay = fg._4
1110- let aw = fg._5
1111- let fh = if ((size(ah.payments) == 2))
1112- then if ((aN(ah.payments[0].assetId) != dC))
1105+ let fh = az(Address(fromBase58String(aD)), bf)
1106+ let dD = fh._1
1107+ let dE = fh._2
1108+ let ax = fh._3
1109+ let ay = fh._4
1110+ let aw = fh._5
1111+ let fi = if ((size(ah.payments) == 2))
1112+ then if ((aN(ah.payments[0].assetId) != dD))
11131113 then throw("Wrong payment asset A")
1114- else if ((aN(ah.payments[1].assetId) != dD))
1114+ else if ((aN(ah.payments[1].assetId) != dE))
11151115 then throw("Wrong payment asset B")
1116- else $Tuple4(ah.payments[0].amount, dC, ah.payments[1].amount, dD)
1116+ else $Tuple4(ah.payments[0].amount, dD, ah.payments[1].amount, dE)
11171117 else if ((size(ah.payments) == 1))
1118- then if ((aN(ah.payments[0].assetId) == dC))
1119- then $Tuple4(ah.payments[0].amount, dC, 0, dD)
1120- else if ((aN(ah.payments[0].assetId) == dD))
1121- then $Tuple4(0, dC, ah.payments[0].amount, dD)
1118+ then if ((aN(ah.payments[0].assetId) == dD))
1119+ then $Tuple4(ah.payments[0].amount, dD, 0, dE)
1120+ else if ((aN(ah.payments[0].assetId) == dE))
1121+ then $Tuple4(0, dD, ah.payments[0].amount, dE)
11221122 else throw("Wrong payment")
11231123 else throw("One or two payments expected")
1124- let bx = fh._1
1125- let fi = fh._2
1126- let by = fh._3
1127- let fj = fh._4
1128- let fk = aF(toString(ah.caller))
1129- if ((eD > 100))
1124+ let bx = fi._1
1125+ let fj = fi._2
1126+ let by = fi._3
1127+ let fk = fi._4
1128+ let fl = aF(toString(ah.caller))
1129+ if ((eE > 100))
11301130 then {
1131- let cy = eC(bx, by, fi, fj, eD, eE)
1132- let ez = makeString([toString(ah.caller), aD, toString(bx), fi, toString(by), fj, toString(ax), toString(ay), aw, eE, toString(cy)], ",")
1133- let fl = {
1134- let at = invoke(this, "createNewRequest", [ez], nil)
1131+ let cz = eD(bx, by, fj, fk, eE, eF)
1132+ let eA = makeString([toString(ah.caller), aD, toString(bx), fj, toString(by), fk, toString(ax), toString(ay), aw, eF, toString(cz)], ",")
1133+ let fm = {
1134+ let at = invoke(this, "createNewRequest", [eA], nil)
11351135 if ($isInstanceOf(at, "Int"))
11361136 then at
11371137 else throw(($getType(at) + " couldn't be cast to Int"))
11381138 }
1139- if ((fl == fl))
1139+ if ((fm == fm))
11401140 then {
1141- let fm = [((toString(ah.caller) + "_") + toString(fk)), aw, eE, cy, toString(this), "replenishFromLand", toString(valueOrErrorMessage(fl, "Can't create new request"))]
1142- let bz = reentrantInvoke(ae(), "flashPosition", fm, nil)
1143- if ((bz == bz))
1141+ let fn = [((toString(ah.caller) + "_") + toString(fl)), aw, eF, cz, toString(this), "replenishFromLand", toString(valueOrErrorMessage(fm, "Can't create new request"))]
1142+ let bR = reentrantInvoke(ae(), "flashPosition", fn, nil)
1143+ if ((bR == bR))
11441144 then nil
11451145 else throw("Strict value is not equal to itself.")
11461146 }
11471147 else throw("Strict value is not equal to itself.")
11481148 }
11491149 else {
1150- let fn = cJ(bf, aD, h, bx, dC, by, dD, ax, ay, aw)
1151- let fo = fn._1
1152- let dS = fn._2
1153- (cT(aD, toString(ah.caller), fo, dS, fk, aw, bf, false) ++ bs(dC, dD, aw))
1150+ let fo = cK(bf, aD, h, bx, dD, by, dE, ax, ay, aw)
1151+ let fp = fo._1
1152+ let dT = fo._2
1153+ (cU(aD, toString(ah.caller), fp, dT, fl, aw, bf, false) ++ bs(dD, dE, aw))
11541154 }
11551155 }
11561156
11571157
11581158
11591159 @Callable(ah)
1160-func withdraw (aD,em) = er(toString(ah.caller), aD, toString(em), false)
1160+func withdraw (aD,en) = es(toString(ah.caller), aD, toString(en), false)
11611161
11621162
11631163
11641164 @Callable(ah)
1165-func createUpdateStopLoss (em,fp,al,fq) = {
1166- let fr = ( let at = invoke(aa, "getTWAP60", [al, false], nil)
1165+func createUpdateStopLoss (en,fq,al,fr) = {
1166+ let fs = ( let at = invoke(aa, "getTWAP60", [al, false], nil)
11671167 if ($isInstanceOf(at, "(Int, Int)"))
11681168 then at
11691169 else throw(($getType(at) + " couldn't be cast to (Int, Int)")))._1
1170- if (!(isDefined(getInteger(this, (((((fp + "_") + toString(ah.caller)) + "_") + toString(em)) + u)))))
1170+ if (!(isDefined(getInteger(this, (((((fq + "_") + toString(ah.caller)) + "_") + toString(en)) + u)))))
11711171 then throw("There are no user position")
1172- else if ((0 >= fq))
1172+ else if ((0 >= fr))
11731173 then throw("Price must be greater than 0")
1174- else if ((fq > fr))
1174+ else if ((fr > fs))
11751175 then throw("Price must be less than current token price")
1176- else [IntegerEntry((((((((toString(ah.caller) + "_") + toString(em)) + "_") + fp) + "_") + al) + Q), fq)]
1176+ else [IntegerEntry((((((((toString(ah.caller) + "_") + toString(en)) + "_") + fq) + "_") + al) + Q), fr)]
11771177 }
11781178
11791179
11801180
11811181 @Callable(ah)
1182-func deleteStopLoss (em,fp,al) = if (!(isDefined(getInteger(this, (((((((toString(ah.caller) + "_") + toString(em)) + "_") + fp) + "_") + al) + Q)))))
1182+func deleteStopLoss (en,fq,al) = if (!(isDefined(getInteger(this, (((((((toString(ah.caller) + "_") + toString(en)) + "_") + fq) + "_") + al) + Q)))))
11831183 then throw("No entry")
1184- else [DeleteEntry((((((((toString(ah.caller) + "_") + toString(em)) + "_") + fp) + "_") + al) + Q))]
1184+ else [DeleteEntry((((((((toString(ah.caller) + "_") + toString(en)) + "_") + fq) + "_") + al) + Q))]
11851185
11861186
11871187
11881188 @Callable(ah)
11891189 func createNewRequest (bQ) = valueOrElse(ai(ah), {
1190- let fl = (valueOrElse(getInteger(this, L), 0) + 1)
1191- $Tuple2([StringEntry((toString(fl) + K), bQ), IntegerEntry(L, fl)], fl)
1190+ let fm = (valueOrElse(getInteger(this, L), 0) + 1)
1191+ $Tuple2([StringEntry((toString(fm) + K), bQ), IntegerEntry(L, fm)], fm)
11921192 })
11931193
11941194
11951195
11961196 @Callable(ah)
1197-func replenishFromLand (ey) = valueOrElse(aj(ah), {
1198- let fs = ex(ey)
1199- let aG = fs._1
1200- let aD = fs._2
1201- let bx = fs._3
1202- let dC = fs._4
1203- let by = fs._5
1204- let dD = fs._6
1205- let ax = fs._7
1206- let ay = fs._8
1207- let aw = fs._9
1208- let eA = fs._10
1209- let eB = fs._11
1197+func replenishFromLand (ez) = valueOrElse(aj(ah), {
1198+ let ft = ey(ez)
1199+ let aG = ft._1
1200+ let aD = ft._2
1201+ let bx = ft._3
1202+ let dD = ft._4
1203+ let by = ft._5
1204+ let dE = ft._6
1205+ let ax = ft._7
1206+ let ay = ft._8
1207+ let aw = ft._9
1208+ let eB = ft._10
1209+ let eC = ft._11
12101210 if ((size(ah.payments) != 1))
12111211 then throw("Wrong payment size")
1212- else if (if ((aN(ah.payments[0].assetId) != eA))
1212+ else if (if ((aN(ah.payments[0].assetId) != eB))
12131213 then true
1214- else (ah.payments[0].amount != eB))
1214+ else (ah.payments[0].amount != eC))
12151215 then throw("Wrong payment")
12161216 else {
1217- let ft = if ((dC == eA))
1217+ let fu = if ((dD == eB))
12181218 then $Tuple2((bx + ah.payments[0].amount), by)
12191219 else $Tuple2(bx, (by + ah.payments[0].amount))
1220- let fu = ft._1
1221- let fv = ft._2
1220+ let fv = fu._1
1221+ let fw = fu._2
12221222 let bf = valueOrErrorMessage(getString(this, (M + aD)), "Unknown pool")
1223- let fw = cJ(bf, aD, g, fu, dC, fv, dD, ax, ay, aw)
1224- let fo = fw._1
1225- let dS = fw._2
1226- let cV = aF(aG)
1227- let fx = [IntegerEntry((((((aD + "_") + aG) + "_") + toString(cV)) + w), eB), StringEntry((((((aD + "_") + aG) + "_") + toString(cV)) + x), eA)]
1228- let fy = cT(aD, aG, fo, dS, cV, aw, bf, true)
1229- $Tuple2((((fy ++ bs(dC, dD, aw)) ++ fx) :+ DeleteEntry((ey + K))), fo)
1223+ let fx = cK(bf, aD, g, fv, dD, fw, dE, ax, ay, aw)
1224+ let fp = fx._1
1225+ let dT = fx._2
1226+ let cW = aF(aG)
1227+ let fy = [IntegerEntry((((((aD + "_") + aG) + "_") + toString(cW)) + w), eC), StringEntry((((((aD + "_") + aG) + "_") + toString(cW)) + x), eB)]
1228+ let fz = cU(aD, aG, fp, dT, cW, aw, bf, true)
1229+ $Tuple2((((fz ++ bs(dD, dE, aw)) ++ fy) :+ DeleteEntry((ez + K))), fp)
12301230 }
12311231 })
12321232
12331233
12341234
12351235 @Callable(ah)
1236-func liquidate (aG,em,fz) = valueOrElse(aj(ah), {
1237- let aD = valueOrErrorMessage(getString(this, (((aG + "_") + em) + v)), "no position")
1236+func liquidate (aG,en,fA) = valueOrElse(aj(ah), {
1237+ let aD = valueOrErrorMessage(getString(this, (((aG + "_") + en) + v)), "no position")
12381238 let bf = valueOrErrorMessage(getString(this, (M + aD)), "Pool is not inited")
1239- let fA = az(Address(fromBase58String(aD)), bf)
1240- let dC = fA._1
1241- let dD = fA._2
1242- let ax = fA._3
1243- let ay = fA._4
1244- let aw = fA._5
1245- let bL = bM(aD, bf, aw, fz)
1246- let cy = getIntegerValue(this, (((((aD + "_") + aG) + "_") + em) + w))
1247- let dW = getStringValue(this, (((((aD + "_") + aG) + "_") + em) + x))
1248- let dU = el(aG, aD, em, (cy > 0))
1249- if ((cy == 0))
1239+ let fB = az(Address(fromBase58String(aD)), bf)
1240+ let dD = fB._1
1241+ let dE = fB._2
1242+ let ax = fB._3
1243+ let ay = fB._4
1244+ let aw = fB._5
1245+ let bL = bM(aD, bf, aw, fA)
1246+ let cz = getIntegerValue(this, (((((aD + "_") + aG) + "_") + en) + w))
1247+ let dX = getStringValue(this, (((((aD + "_") + aG) + "_") + en) + x))
1248+ let dV = em(aG, aD, en, (cz > 0))
1249+ if ((cz == 0))
12501250 then throw("You can't liquidate position without borrow")
1251- else [IntegerEntry((((((aD + "_") + aG) + "_") + em) + z), getIntegerValue(this, (aD + C))), IntegerEntry((aD + B), (aE(aD) - fz)), IntegerEntry((aD + A), (aC(aD) - fz)), IntegerEntry((((((aD + "_") + aG) + "_") + em) + u), (dU - fz)), ScriptTransfer(ah.caller, bL, fromBase58String(aw))]
1251+ else [IntegerEntry((((((aD + "_") + aG) + "_") + en) + z), getIntegerValue(this, (aD + C))), IntegerEntry((aD + B), (aE(aD) - fA)), IntegerEntry((aD + A), (aC(aD) - fA)), IntegerEntry((((((aD + "_") + aG) + "_") + en) + u), (dV - fA)), ScriptTransfer(ah.caller, bL, fromBase58String(aw))]
12521252 })
12531253
12541254
12551255
12561256 @Callable(ah)
1257-func stopLoss (aG,em,aD,al) = valueOrElse(ag(ah), {
1258- let fr = ( let at = invoke(aa, "getTWAP60", [al, false], nil)
1257+func stopLoss (aG,en,aD,al) = valueOrElse(ag(ah), {
1258+ let fs = ( let at = invoke(aa, "getTWAP60", [al, false], nil)
12591259 if ($isInstanceOf(at, "(Int, Int)"))
12601260 then at
12611261 else throw(($getType(at) + " couldn't be cast to (Int, Int)")))._1
1262- if (!(isDefined(getInteger(this, (((((((aG + "_") + toString(em)) + "_") + aD) + "_") + al) + Q)))))
1262+ if (!(isDefined(getInteger(this, (((((((aG + "_") + toString(en)) + "_") + aD) + "_") + al) + Q)))))
12631263 then throw("No entry")
1264- else (er(toString(ah.caller), aD, toString(em), true) :+ DeleteEntry((((((((aG + "_") + toString(em)) + "_") + aD) + "_") + al) + Q)))
1264+ else (es(toString(ah.caller), aD, toString(en), true) :+ DeleteEntry((((((((aG + "_") + toString(en)) + "_") + aD) + "_") + al) + Q)))
12651265 })
12661266
12671267
12681268
12691269 @Callable(ah)
1270-func capitalizeExKeeper (aD,aA,fB,fC,fD,dg,dh,di,dj,dk,dl,dm) = valueOrElse(ag(ah), {
1271- let fE = if (fD)
1272- then cG(aA, aD)
1270+func capitalizeExKeeper (aD,aA,fC,fD,fE,dh,di,dj,dk,dl,dm,dn) = valueOrElse(ag(ah), {
1271+ let fF = if (fE)
1272+ then cH(aA, aD)
12731273 else {
1274- let fF = if ((aA == a))
1274+ let fG = if ((aA == a))
12751275 then ac
12761276 else ad
1277- $Tuple2(fC, fF)
1277+ $Tuple2(fD, fG)
12781278 }
1279- let fG = fE._1
1280- let fF = fE._2
1281- let fH = dc(fB, fC, fF, dg, dh, di, dj, dk, dl, dm)
1282- let cq = (fG - fC)
1283- let fI = if ((cq > 0))
1284- then [IntegerEntry((aD + O), (cq + valueOrElse(getInteger(this, (aD + O)), 0)))]
1279+ let fH = fF._1
1280+ let fG = fF._2
1281+ let fI = dd(fC, fD, fG, dh, di, dj, dk, dl, dm, dn)
1282+ let cr = (fH - fD)
1283+ let fJ = if ((cr > 0))
1284+ then [IntegerEntry((aD + O), (cr + valueOrElse(getInteger(this, (aD + O)), 0)))]
12851285 else nil
1286- (dy(aD, aA, fB, fH) ++ fI)
1286+ (dz(aD, aA, fC, fI) ++ fJ)
12871287 })
12881288
12891289
12901290
12911291 @Callable(ah)
1292-func capitalizeExPuzzle (aD,aA,fB,fC,fD,dp,dq,dm) = valueOrElse(ag(ah), {
1293- let fJ = if (fD)
1294- then cG(aA, aD)
1292+func capitalizeExPuzzle (aD,aA,fC,fD,fE,dq,dr,dn) = valueOrElse(ag(ah), {
1293+ let fK = if (fE)
1294+ then cH(aA, aD)
12951295 else {
1296- let fF = if ((aA == a))
1296+ let fG = if ((aA == a))
12971297 then ac
12981298 else ad
1299- $Tuple2(fC, fF)
1299+ $Tuple2(fD, fG)
13001300 }
1301- let fG = fJ._1
1302- let fF = fJ._2
1303- let fH = do(fB, fC, fF, dp, dq, dm)
1304- let cq = (fG - fC)
1305- let fI = if ((cq > 0))
1306- then [IntegerEntry((aD + O), (cq + valueOrElse(getInteger(this, (aD + O)), 0)))]
1301+ let fH = fK._1
1302+ let fG = fK._2
1303+ let fI = dp(fC, fD, fG, dq, dr, dn)
1304+ let cr = (fH - fD)
1305+ let fJ = if ((cr > 0))
1306+ then [IntegerEntry((aD + O), (cr + valueOrElse(getInteger(this, (aD + O)), 0)))]
13071307 else nil
1308- (dy(aD, aA, fB, fH) ++ fI)
1308+ (dz(aD, aA, fC, fI) ++ fJ)
13091309 })
13101310
13111311
13121312
13131313 @Callable(ah)
1314-func capitalizeExSwopFi (aD,aA,fB,fC,fD,ds,dt,du,dv,dw,dx,dm) = valueOrElse(ag(ah), {
1315- let fK = if (fD)
1316- then cG(aA, aD)
1314+func capitalizeExSwopFi (aD,aA,fC,fD,fE,dt,du,dv,dw,dx,dy,dn) = valueOrElse(ag(ah), {
1315+ let fL = if (fE)
1316+ then cH(aA, aD)
13171317 else {
1318- let fF = if ((aA == a))
1318+ let fG = if ((aA == a))
13191319 then ac
13201320 else ad
1321- $Tuple2(fC, fF)
1321+ $Tuple2(fD, fG)
13221322 }
1323- let fG = fK._1
1324- let fF = fK._2
1325- let fH = dr(fB, fC, fF, ds, dt, du, dv, dw, dx, dm)
1326- let cq = (fG - fC)
1327- let fI = if ((cq > 0))
1328- then [IntegerEntry((aD + O), (cq + valueOrElse(getInteger(this, (aD + O)), 0)))]
1323+ let fH = fL._1
1324+ let fG = fL._2
1325+ let fI = ds(fC, fD, fG, dt, du, dv, dw, dx, dy, dn)
1326+ let cr = (fH - fD)
1327+ let fJ = if ((cr > 0))
1328+ then [IntegerEntry((aD + O), (cr + valueOrElse(getInteger(this, (aD + O)), 0)))]
13291329 else nil
1330- (dy(aD, aA, fB, fH) ++ fI)
1330+ (dz(aD, aA, fC, fI) ++ fJ)
13311331 })
13321332
13331333
13341334
13351335 @Callable(ah)
1336-func initNewPool (aA,aq,fL,fM,fN,fO,fP,fQ) = valueOrElse(ag(ah), if (if ((aA != a))
1336+func initNewPool (aA,aq,fM,fN,fO,fP,fQ,fR) = valueOrElse(ag(ah), if (if ((aA != a))
13371337 then (aA != b)
13381338 else false)
13391339 then throw("Wrong type")
13401340 else {
1341- let fR = az(Address(fromBase58String(aq)), aA)
1342- let au = fR._1
1343- let av = fR._2
1344- let fS = fR._3
1345- let fT = fR._4
1346- let aw = fR._5
1347-[IntegerEntry((aq + E), fL), IntegerEntry((aq + F), fM), IntegerEntry((aq + G), fN), IntegerEntry((aq + H), fO), IntegerEntry((aq + I), fP), IntegerEntry((aq + J), fQ), IntegerEntry((aq + C), 0), IntegerEntry((aq + D), 0), StringEntry((M + aq), aA), StringEntry((aw + N), aq)]
1341+ let fS = az(Address(fromBase58String(aq)), aA)
1342+ let au = fS._1
1343+ let av = fS._2
1344+ let fT = fS._3
1345+ let fU = fS._4
1346+ let aw = fS._5
1347+[IntegerEntry((aq + E), fM), IntegerEntry((aq + F), fN), IntegerEntry((aq + G), fO), IntegerEntry((aq + H), fP), IntegerEntry((aq + I), fQ), IntegerEntry((aq + J), fR), IntegerEntry((aq + C), 0), IntegerEntry((aq + D), 0), StringEntry((M + aq), aA), StringEntry((aw + N), aq)]
13481348 })
13491349
13501350
1351-@Verifier(fU)
1352-func fV () = sigVerify(fU.bodyBytes, fU.proofs[0], fU.senderPublicKey)
1351+@Verifier(fV)
1352+func fW () = sigVerify(fV.bodyBytes, fV.proofs[0], fV.senderPublicKey)
13531353
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "SF"
55
66 let b = "WX"
77
88 let c = "capNoLoan"
99
1010 let d = "capLoan"
1111
1212 let e = "stopLossNoLoan"
1313
1414 let f = "stopLossLoan"
1515
1616 let g = "loan"
1717
1818 let h = "noLoan"
1919
2020 let i = "noFee"
2121
2222 let j = 100000000
2323
2424 let k = 10000000000
2525
2626 let l = toBigInt(10000000000000000)
2727
2828 let m = 1000000
2929
3030 let n = "A_asset_balance"
3131
3232 let o = "B_asset_balance"
3333
3434 let p = "A_asset_id"
3535
3636 let q = "B_asset_id"
3737
3838 let r = "share_asset_id"
3939
4040 let s = "share_asset_supply"
4141
4242 let t = "commission"
4343
4444 let u = "_user_position"
4545
4646 let v = "_user_position_pool"
4747
4848 let w = "_user_position_borrow_amount"
4949
5050 let x = "_user_position_borrow_asset_id"
5151
5252 let y = "_user_position_number"
5353
5454 let z = "_user_position_interest"
5555
5656 let A = "_pool_total"
5757
5858 let B = "_pool_total_loan"
5959
6060 let C = "_pool_interest_loan"
6161
6262 let D = "_pool_interest_no_loan"
6363
6464 let E = "_axly_fee_without_loan"
6565
6666 let F = "_axly_fee_with_loan"
6767
6868 let G = "_axly_fee_cap_with_loan"
6969
7070 let H = "_axly_fee_cap_no_loan"
7171
7272 let I = "_axly_fee_stoploss_with_loan"
7373
7474 let J = "_axly_fee_stoploss_no_loan"
7575
7676 let K = "_request_id"
7777
7878 let L = "requests_iter"
7979
8080 let M = "pool_"
8181
8282 let N = "_pool_share_id"
8383
8484 let O = "_pool_cap_change"
8585
8686 let P = "last_price"
8787
8888 let Q = "_stop_loss"
8989
9090 let R = "axly_money_box"
9191
9292 let S = "swopfi_farming_addr"
9393
9494 let T = "lend_service_addr"
9595
9696 let U = "admin_call_pub_key"
9797
9898 let V = "price_oracle"
9999
100100 let W = "exchange_contract"
101101
102102 let X = "wx_swap_contract"
103103
104104 let Y = Address(fromBase58String(valueOrErrorMessage(getString(this, R), "No axly moneyBox address")))
105105
106106 let Z = Address(fromBase58String(valueOrErrorMessage(getString(this, W), "No exchange contract address")))
107107
108108 let aa = Address(fromBase58String(valueOrErrorMessage(getString(this, V), "No price oracle address")))
109109
110110 let ab = Address(fromBase58String(valueOrErrorMessage(getString(this, X), "No wx swap address")))
111111
112112 let ac = base58'4W19ndijcc2CsQa9HGW2dfXKTVXhnneWWttxXrtjPmEp'
113113
114114 let ad = base58'EMAMLxDnv3xiz8RXg8Btj33jcEw3wLczL3JKYYmuubpc'
115115
116116 func ae () = Address(fromBase58String(valueOrErrorMessage(getString(this, T), "Can't get lend service addr")))
117117
118118
119119 func af () = addressFromPublicKey(fromBase58String(valueOrErrorMessage(getString(this, U), "Can't get admin addr")))
120120
121121
122122 func ag (ah) = if ((ah.caller == af()))
123123 then unit
124124 else throw("Only admin can call this function")
125125
126126
127127 func ai (ah) = if ((ah.caller == this))
128128 then unit
129129 else throw("Only contract itself can call this function")
130130
131131
132132 func aj (ah) = if ((ah.caller == ae()))
133133 then unit
134134 else throw("Only land contract can call this function")
135135
136136
137137 func ak (al) = {
138138 let am = al
139139 if ($isInstanceOf(am, "ByteVector"))
140140 then {
141141 let an = am
142142 assetBalance(this, an)
143143 }
144144 else if ($isInstanceOf(am, "Unit"))
145145 then {
146146 let ao = am
147147 wavesBalance(this).available
148148 }
149149 else throw("Match error")
150150 }
151151
152152
153153 func ap (aq) = $Tuple5(valueOrErrorMessage(getString(aq, p), "Can't get pool A asset id"), valueOrErrorMessage(getString(aq, q), "Can't get pool B asset id"), valueOrErrorMessage(getInteger(aq, n), "Can't get pool A asset balance"), valueOrErrorMessage(getInteger(aq, o), "Can't get pool B asset balance"), valueOrErrorMessage(getString(aq, r), "Can't get share asset id"))
154154
155155
156156 func ar (aq) = {
157157 let as = {
158158 let at = invoke(aq, "getPoolConfigWrapperREADONLY", nil, nil)
159159 if ($isInstanceOf(at, "List[Any]"))
160160 then at
161161 else throw(($getType(at) + " couldn't be cast to List[Any]"))
162162 }
163163 if ((as == as))
164164 then {
165165 let au = valueOrErrorMessage({
166166 let at = as[4]
167167 if ($isInstanceOf(at, "String"))
168168 then at
169169 else unit
170170 }, "Can't get pool A asset id")
171171 let av = valueOrErrorMessage({
172172 let at = as[5]
173173 if ($isInstanceOf(at, "String"))
174174 then at
175175 else unit
176176 }, "Can't get pool B asset id")
177177 let aw = valueOrErrorMessage({
178178 let at = as[3]
179179 if ($isInstanceOf(at, "String"))
180180 then at
181181 else unit
182182 }, "Can't get pool LP asset id")
183183 let ax = {
184184 let at = invoke(aq, "getAccBalanceWrapperREADONLY", [au], nil)
185185 if ($isInstanceOf(at, "Int"))
186186 then at
187187 else throw(($getType(at) + " couldn't be cast to Int"))
188188 }
189189 if ((ax == ax))
190190 then {
191191 let ay = {
192192 let at = invoke(aq, "getAccBalanceWrapperREADONLY", [av], nil)
193193 if ($isInstanceOf(at, "Int"))
194194 then at
195195 else throw(($getType(at) + " couldn't be cast to Int"))
196196 }
197197 if ((ay == ay))
198198 then $Tuple5(au, av, ax, ay, aw)
199199 else throw("Strict value is not equal to itself.")
200200 }
201201 else throw("Strict value is not equal to itself.")
202202 }
203203 else throw("Strict value is not equal to itself.")
204204 }
205205
206206
207207 func az (aq,aA) = if ((aA == a))
208208 then ap(aq)
209209 else if ((aA == b))
210210 then ar(aq)
211211 else throw("Wrong pool type")
212212
213213
214214 func aB (aq,aA,aw) = if ((aA == a))
215215 then valueOrErrorMessage(getInteger(aq, s), "Can't get share asset supply")
216216 else if ((aA == b))
217217 then valueOrErrorMessage(assetInfo(fromBase58String(aw)), "Wrong ShareId").quantity
218218 else throw("Wrong pool type")
219219
220220
221221 func aC (aD) = valueOrElse(getInteger(this, (aD + A)), 0)
222222
223223
224224 func aE (aD) = valueOrElse(getInteger(this, (aD + B)), 0)
225225
226226
227227 func aF (aG) = (valueOrElse(getInteger(this, (aG + y)), 0) + 1)
228228
229229
230230 func aH (aD,aI) = if ((aI == d))
231231 then getIntegerValue(this, (aD + H))
232232 else if ((aI == c))
233233 then getIntegerValue(this, (aD + G))
234234 else if ((aI == g))
235235 then getIntegerValue(this, (aD + F))
236236 else if ((aI == h))
237237 then getIntegerValue(this, (aD + E))
238238 else if ((aI == i))
239239 then 0
240240 else throw("Wrong fee type")
241241
242242
243243 func aJ () = Address(fromBase58String(valueOrErrorMessage(getString(this, S), "Can't get swopfi farming addr")))
244244
245245
246246 func aK (aq) = {
247247 let aL = Address(fromBase58String(valueOrErrorMessage(getString(aq, "%s__factoryContract"), "Can't get WX factory contract addr")))
248248 let aM = split(valueOrErrorMessage(getString(aL, "%s__factoryConfig"), "Can't get WX factory cfg"), "__")
249249 Address(fromBase58String(aM[1]))
250250 }
251251
252252
253253 func aN (al) = {
254254 let am = al
255255 if ($isInstanceOf(am, "ByteVector"))
256256 then {
257257 let an = am
258258 toBase58String(an)
259259 }
260260 else if ($isInstanceOf(am, "Unit"))
261261 then {
262262 let ao = am
263263 "WAVES"
264264 }
265265 else throw("Match error")
266266 }
267267
268268
269269 func aO (al) = if ((al == "WAVES"))
270270 then unit
271271 else fromBase58String(al)
272272
273273
274274 func aP (al) = if ((al == "WAVES"))
275275 then 8
276276 else {
277277 let am = assetInfo(fromBase58String(al))
278278 if ($isInstanceOf(am, "Asset"))
279279 then {
280280 let aQ = am
281281 aQ.decimals
282282 }
283283 else throw("Can't find asset")
284284 }
285285
286286
287287 func aR (al) = pow(10, 0, aP(al), 0, 0, DOWN)
288288
289289
290290 func aS (aT) = {
291291 func aU (aV,al) = {
292292 let aW = ( let at = invoke(aa, "getTWAP60", [al, false], nil)
293293 if ($isInstanceOf(at, "(Int, Int)"))
294294 then at
295295 else throw(($getType(at) + " couldn't be cast to (Int, Int)")))._2
296296 (aV :+ aW)
297297 }
298298
299299 let aX = aT
300300 let aY = size(aX)
301301 let aZ = nil
302302 func ba (bb,bc) = if ((bc >= aY))
303303 then bb
304304 else aU(bb, aX[bc])
305305
306306 func bd (bb,bc) = if ((bc >= aY))
307307 then bb
308308 else throw("List size exceeds 50")
309309
310310 bd(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(aZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
311311 }
312312
313313
314314 func be (aw) = {
315315 let aD = valueOrErrorMessage(getString(this, (aw + N)), "Can't find pool addr by share id")
316316 let aq = Address(fromBase58String(aD))
317317 let bf = valueOrErrorMessage(getString(this, (M + aD)), "Pool is not inited")
318318 let bg = az(aq, bf)
319319 let au = bg._1
320320 let av = bg._2
321321 let bh = bg._3
322322 let bi = bg._4
323323 let bj = ( let at = invoke(aa, "getTWAP60", [au, false], nil)
324324 if ($isInstanceOf(at, "(Int, Int)"))
325325 then at
326326 else throw(($getType(at) + " couldn't be cast to (Int, Int)")))._2
327327 let bk = ( let at = invoke(aa, "getTWAP60", [av, false], nil)
328328 if ($isInstanceOf(at, "(Int, Int)"))
329329 then at
330330 else throw(($getType(at) + " couldn't be cast to (Int, Int)")))._2
331331 let bl = aB(aq, bf, aw)
332332 let bm = pow(10, 0, aP(au), 0, 0, DOWN)
333333 let bn = pow(10, 0, aP(av), 0, 0, DOWN)
334334 let bo = pow(10, 0, aP(aw), 0, 0, DOWN)
335335 let bp = (fraction(bh, bj, bm) + fraction(bi, bk, bn))
336336 fraction(bp, bo, bl)
337337 }
338338
339339
340340 func bq (br) = {
341341 func aU (aV,aw) = (aV :+ be(aw))
342342
343343 let aX = br
344344 let aY = size(aX)
345345 let aZ = nil
346346 func ba (bb,bc) = if ((bc >= aY))
347347 then bb
348348 else aU(bb, aX[bc])
349349
350350 func bd (bb,bc) = if ((bc >= aY))
351351 then bb
352352 else throw("List size exceeds 20")
353353
354354 bd(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(aZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
355355 }
356356
357357
358358 func bs (au,av,aw) = {
359359 let bt = aS([au, av])
360360 let bu = be(aw)
361361 let bv = [toString(bt[0]), toString(bt[1]), toString(bu)]
362362 [StringEntry(P, makeString(bv, ","))]
363363 }
364364
365365
366366 func bw (bf,aq,bx,au,by,av,ax,ay) = if ((bf == a))
367367 then {
368368 let bz = {
369369 let at = invoke(aq, "callFunction", ["calcLPReplenishTwoTokensREADONLY", [toString(bx), toString(by)]], nil)
370370 if ($isInstanceOf(at, "List[Any]"))
371371 then at
372372 else throw(($getType(at) + " couldn't be cast to List[Any]"))
373373 }
374374 if ((bz == bz))
375375 then $Tuple5({
376376 let at = bz[3]
377377 if ($isInstanceOf(at, "Int"))
378378 then at
379379 else throw(($getType(at) + " couldn't be cast to Int"))
380380 }, {
381381 let at = bz[4]
382382 if ($isInstanceOf(at, "Int"))
383383 then at
384384 else throw(($getType(at) + " couldn't be cast to Int"))
385385 }, {
386386 let at = bz[1]
387387 if ($isInstanceOf(at, "Int"))
388388 then at
389389 else throw(($getType(at) + " couldn't be cast to Int"))
390390 }, aN({
391391 let at = bz[2]
392392 if ($isInstanceOf(at, "ByteVector|Unit"))
393393 then at
394394 else throw(($getType(at) + " couldn't be cast to ByteVector|Unit"))
395395 }), {
396396 let at = bz[0]
397397 if ($isInstanceOf(at, "Int"))
398398 then at
399399 else throw(($getType(at) + " couldn't be cast to Int"))
400400 })
401401 else throw("Strict value is not equal to itself.")
402402 }
403403 else {
404404 let bA = $Tuple2(split({
405405 let at = invoke(aq, "evaluatePutByAmountAssetREADONLY", [bx], nil)
406406 if ($isInstanceOf(at, "String"))
407407 then at
408408 else throw(($getType(at) + " couldn't be cast to String"))
409409 }, "__"), split({
410410 let at = invoke(aq, "evaluatePutByPriceAssetREADONLY", [by], nil)
411411 if ($isInstanceOf(at, "String"))
412412 then at
413413 else throw(($getType(at) + " couldn't be cast to String"))
414414 }, "__"))
415415 if ((bA == bA))
416416 then {
417417 let bB = bA._2
418418 let bC = bA._1
419419 let bD = parseIntValue(bC[1])
420420 let bE = parseIntValue(bB[1])
421421 if ((bE > bD))
422422 then {
423423 let bF = parseIntValue(bC[8])
424424 $Tuple5(bx, bF, (by - bF), av, bE)
425425 }
426426 else {
427427 let bF = parseIntValue(bC[8])
428428 $Tuple5(bF, by, (bx - bF), au, bD)
429429 }
430430 }
431431 else throw("Strict value is not equal to itself.")
432432 }
433433
434434
435435 func bG (aq,bf,bx,au,by,av) = {
436436 let bH = [AttachedPayment(aO(au), bx), AttachedPayment(aO(av), by)]
437437 if ((bf == a))
438438 then invoke(aq, "callFunction", ["replenishWithTwoTokens", ["false", "0"]], bH)
439439 else invoke(aq, "put", [1000000, false], bH)
440440 }
441441
442442
443443 func bI (aq,bf,bF,bJ) = {
444444 let bH = [AttachedPayment(aO(bJ), bF)]
445445 if ((bf == a))
446446 then invoke(aq, "callFunction", ["replenishWithOneToken", ["0", "false", "0"]], bH)
447447 else invoke(aq, "putOneTkn", [0, false], bH)
448448 }
449449
450450
451451 func bK (aD,bf,aw,bL) = {
452452 let bH = [AttachedPayment(fromBase58String(aw), bL)]
453453 if ((bf == a))
454454 then invoke(aJ(), "lockShareTokens", [aD, 0], bH)
455455 else invoke(aK(addressFromStringValue(aD)), "stake", nil, bH)
456456 }
457457
458458
459459 func bM (aD,bf,aw,bL) = {
460460 let bN = if ((bf == a))
461461 then $Tuple3(aJ(), "withdrawShareTokens", [aD, bL])
462462 else if ((bf == b))
463463 then $Tuple3(aK(Address(fromBase58String(aD))), "unstake", [aw, bL])
464464 else throw("Wrong pool type")
465465 let bO = bN._1
466466 let bP = bN._2
467467 let bQ = bN._3
468- let bz = invoke(bO, bP, bQ, nil)
469- if ((bz == bz))
468+ let bR = invoke(bO, bP, bQ, nil)
469+ if ((bR == bR))
470470 then bL
471471 else throw("Strict value is not equal to itself.")
472472 }
473473
474474
475-func bR (aD,bS,bT,ax,ay,bU,bV) = {
475+func bS (aD,bT,bU,ax,ay,bV,bW) = {
476476 let aq = Address(fromBase58String(aD))
477- let bW = 1000000
478- let bX = getIntegerValue(aq, t)
479- let bY = fraction(bU, bW, (bW - bX))
480- let bZ = if ((bV == bS))
477+ let bX = 1000000
478+ let bY = getIntegerValue(aq, t)
479+ let bZ = fraction(bV, bX, (bX - bY))
480+ let ca = if ((bW == bT))
481481 then {
482- let ca = fraction(ax, bY, (ay - bY))
483- $Tuple2(ca, bT)
482+ let cb = fraction(ax, bZ, (ay - bZ))
483+ $Tuple2(cb, bU)
484484 }
485485 else {
486- let ca = fraction(ay, bY, (ax - bY))
487- $Tuple2(ca, bS)
486+ let cb = fraction(ay, bZ, (ax - bZ))
487+ $Tuple2(cb, bT)
488488 }
489- let ca = bZ._1
490- let cb = bZ._2
491- $Tuple2(cb, ca)
489+ let cb = ca._1
490+ let cc = ca._2
491+ $Tuple2(cc, cb)
492492 }
493493
494494
495-func cc (aD,bS,bT,ax,ay,bU,bV) = {
496- let cd = getIntegerValue(ab, "%s__protocolFee")
497- let ce = getIntegerValue(ab, "%s__poolFee")
498- let cf = toBigInt(100000000)
499- let cg = if ((bV == bS))
495+func cd (aD,bT,bU,ax,ay,bV,bW) = {
496+ let ce = getIntegerValue(ab, "%s__protocolFee")
497+ let cf = getIntegerValue(ab, "%s__poolFee")
498+ let cg = toBigInt(100000000)
499+ let ch = if ((bW == bT))
500500 then {
501- let ca = fraction(ax, bU, (ay - bU))
502- $Tuple2(ca, bT)
501+ let cb = fraction(ax, bV, (ay - bV))
502+ $Tuple2(cb, bU)
503503 }
504504 else {
505- let ca = fraction(ay, bU, (ax - bU))
506- $Tuple2(ca, bS)
505+ let cb = fraction(ay, bV, (ax - bV))
506+ $Tuple2(cb, bT)
507507 }
508- let ca = cg._1
509- let cb = cg._2
510- let ch = toInt(fraction(toBigInt(ca), cf, (cf - toBigInt((cd + ce)))))
511- $Tuple2(cb, ch)
508+ let cb = ch._1
509+ let cc = ch._2
510+ let ci = toInt(fraction(toBigInt(cb), cg, (cg - toBigInt((ce + cf)))))
511+ $Tuple2(cc, ci)
512512 }
513513
514514
515-func ci (aA,aD,bS,bT,ax,ay,bU,bV) = if ((aA == a))
515+func cj (aA,aD,bT,bU,ax,ay,bV,bW) = if ((aA == a))
516516 then {
517- let cj = bR(aD, bS, bT, ax, ay, bU, bV)
518- let cb = cj._1
519- let ca = cj._2
520- invoke(addressFromStringValue(aD), "callFunction", ["exchange", ["1"]], [AttachedPayment(aO(cb), ca)])
517+ let ck = bS(aD, bT, bU, ax, ay, bV, bW)
518+ let cc = ck._1
519+ let cb = ck._2
520+ invoke(addressFromStringValue(aD), "callFunction", ["exchange", ["1"]], [AttachedPayment(aO(cc), cb)])
521521 }
522522 else {
523- let ck = cc(aD, bS, bT, ax, ay, bU, bV)
524- let cb = ck._1
525- let ca = ck._2
526- invoke(ab, "swap", [1, bV, toString(this)], [AttachedPayment(aO(cb), ca)])
523+ let cl = cd(aD, bT, bU, ax, ay, bV, bW)
524+ let cc = cl._1
525+ let cb = cl._2
526+ invoke(ab, "swap", [1, bW, toString(this)], [AttachedPayment(aO(cc), cb)])
527527 }
528528
529529
530-func cl (bf,aD,bx,au,by,av,ax,ay) = {
530+func cm (bf,aD,bx,au,by,av,ax,ay) = {
531531 let aq = addressFromStringValue(aD)
532532 if ((bf == a))
533533 then {
534- let bz = {
534+ let bR = {
535535 let at = invoke(aq, "callFunction", ["calcLPReplenishDiffPropREADONLY", [toString(bx), toString(by), "0"]], nil)
536536 if ($isInstanceOf(at, "List[Any]"))
537537 then at
538538 else throw(($getType(at) + " couldn't be cast to List[Any]"))
539539 }
540- if ((bz == bz))
540+ if ((bR == bR))
541541 then $Tuple2({
542- let at = bz[0]
542+ let at = bR[0]
543543 if ($isInstanceOf(at, "Int"))
544544 then at
545545 else throw(($getType(at) + " couldn't be cast to Int"))
546546 }, {
547- let at = bz[1]
547+ let at = bR[1]
548548 if ($isInstanceOf(at, "Int"))
549549 then at
550550 else throw(($getType(at) + " couldn't be cast to Int"))
551551 })
552552 else throw("Strict value is not equal to itself.")
553553 }
554554 else if ((bf == b))
555555 then {
556- let cm = if (if ((bx > 0))
556+ let cn = if (if ((bx > 0))
557557 then (by > 0)
558558 else false)
559559 then {
560- let cn = bw(bf, aq, bx, au, by, av, ax, ay)
561- let co = cn._1
562- let cp = cn._2
563- let cq = cn._3
564- let cr = cn._4
565- let cs = cn._5
566- $Tuple3(cq, cr, cs)
560+ let co = bw(bf, aq, bx, au, by, av, ax, ay)
561+ let cp = co._1
562+ let cq = co._2
563+ let cr = co._3
564+ let cs = co._4
565+ let ct = co._5
566+ $Tuple3(cr, cs, ct)
567567 }
568568 else if ((bx > 0))
569569 then $Tuple3(bx, au, 0)
570570 else $Tuple3(by, av, 0)
571- let cq = cm._1
572- let cr = cm._2
573- let ct = cm._3
574- let cu = if ((cq > 0))
571+ let cr = cn._1
572+ let cs = cn._2
573+ let cu = cn._3
574+ let cv = if ((cr > 0))
575575 then {
576- let bz = {
577- let at = invoke(aq, "putOneTknREADONLY", [cr, cq], nil)
576+ let bR = {
577+ let at = invoke(aq, "putOneTknREADONLY", [cs, cr], nil)
578578 if ($isInstanceOf(at, "(Int, Int, Int)"))
579579 then at
580580 else throw(($getType(at) + " couldn't be cast to (Int, Int, Int)"))
581581 }
582- if ((bz == bz))
583- then $Tuple2(bz._1, bz._3)
582+ if ((bR == bR))
583+ then $Tuple2(bR._1, bR._3)
584584 else throw("Strict value is not equal to itself.")
585585 }
586586 else $Tuple2(0, 0)
587- let cv = cu._1
588- let cw = cu._2
589- $Tuple2((ct + cv), cw)
587+ let cw = cv._1
588+ let cx = cv._2
589+ $Tuple2((cu + cw), cx)
590590 }
591591 else throw("Wrong pool type")
592592 }
593593
594594
595-func cx (bf,aD,cs,aw,au,av,ax,ay,cy,cz) = {
595+func cy (bf,aD,ct,aw,au,av,ax,ay,cz,cA) = {
596596 let aq = addressFromStringValue(aD)
597- let cA = if ((bf == a))
597+ let cB = if ((bf == a))
598598 then {
599- let bz = {
600- let at = invoke(aq, "callFunction", ["withdrawREADONLY", [toString(cs), toString(ax), toString(ay)]], nil)
599+ let bR = {
600+ let at = invoke(aq, "callFunction", ["withdrawREADONLY", [toString(ct), toString(ax), toString(ay)]], nil)
601601 if ($isInstanceOf(at, "List[Any]"))
602602 then at
603603 else throw(($getType(at) + " couldn't be cast to List[Any]"))
604604 }
605- if ((bz == bz))
605+ if ((bR == bR))
606606 then $Tuple2({
607- let at = bz[0]
607+ let at = bR[0]
608608 if ($isInstanceOf(at, "Int"))
609609 then at
610610 else throw(($getType(at) + " couldn't be cast to Int"))
611611 }, {
612- let at = bz[1]
612+ let at = bR[1]
613613 if ($isInstanceOf(at, "Int"))
614614 then at
615615 else throw(($getType(at) + " couldn't be cast to Int"))
616616 })
617617 else throw("Strict value is not equal to itself.")
618618 }
619619 else if ((bf == b))
620620 then {
621- let cB = split({
622- let at = invoke(aq, "evaluateGetREADONLY", [aw, cs], nil)
621+ let cC = split({
622+ let at = invoke(aq, "evaluateGetREADONLY", [aw, ct], nil)
623623 if ($isInstanceOf(at, "String"))
624624 then at
625625 else throw(($getType(at) + " couldn't be cast to String"))
626626 }, "__")
627- if ((cB == cB))
628- then $Tuple2(parseIntValue(cB[1]), parseIntValue(cB[2]))
627+ if ((cC == cC))
628+ then $Tuple2(parseIntValue(cC[1]), parseIntValue(cC[2]))
629629 else throw("Strict value is not equal to itself.")
630630 }
631631 else throw("Wrong pool type")
632- let cC = cA._1
633- let cD = cA._2
634- if ((cy > 0))
632+ let cD = cB._1
633+ let cE = cB._2
634+ if ((cz > 0))
635635 then {
636- let cE = if (if ((cz == au))
637- then (cy > cC)
636+ let cF = if (if ((cA == au))
637+ then (cz > cD)
638638 else false)
639- then (cy - cC)
640- else if (if ((cz == av))
641- then (cy > cD)
639+ then (cz - cD)
640+ else if (if ((cA == av))
641+ then (cz > cE)
642642 else false)
643- then (cy - cD)
643+ then (cz - cE)
644644 else 0
645- let cF = if ((cE > 0))
645+ let cG = if ((cF > 0))
646646 then if ((bf == a))
647- then bR(aD, au, av, ax, ay, cE, cz)
648- else cc(aD, au, av, ax, ay, cE, cz)
647+ then bS(aD, au, av, ax, ay, cF, cA)
648+ else cd(aD, au, av, ax, ay, cF, cA)
649649 else $Tuple2("", 0)
650- let cb = cF._1
651- let ca = cF._2
652- if ((cz == au))
653- then $Tuple2(((cC + cE) - cy), (cD - ca))
654- else $Tuple2((cC - ca), ((cD + cE) - cy))
650+ let cc = cG._1
651+ let cb = cG._2
652+ if ((cA == au))
653+ then $Tuple2(((cD + cF) - cz), (cE - cb))
654+ else $Tuple2((cD - cb), ((cE + cF) - cz))
655655 }
656- else $Tuple2(cC, cD)
656+ else $Tuple2(cD, cE)
657657 }
658658
659659
660-func cG (aA,aD) = if ((aA == a))
660+func cH (aA,aD) = if ((aA == a))
661661 then {
662- let cH = ak(ac)
663- if ((cH == cH))
662+ let cI = ak(ac)
663+ if ((cI == cI))
664664 then {
665- let bz = invoke(aJ(), "claim", [aD], nil)
666- if ((bz == bz))
665+ let bR = invoke(aJ(), "claim", [aD], nil)
666+ if ((bR == bR))
667667 then {
668- let cI = ak(ac)
669- $Tuple2((cI - cH), ac)
668+ let cJ = ak(ac)
669+ $Tuple2((cJ - cI), ac)
670670 }
671671 else throw("Strict value is not equal to itself.")
672672 }
673673 else throw("Strict value is not equal to itself.")
674674 }
675675 else if ((aA == b))
676676 then {
677- let cH = ak(ad)
678- if ((cH == cH))
677+ let cI = ak(ad)
678+ if ((cI == cI))
679679 then {
680- let bz = invoke(aK(Address(fromBase58String(aD))), "claimWX", [aD], nil)
681- if ((bz == bz))
680+ let bR = invoke(aK(Address(fromBase58String(aD))), "claimWX", [aD], nil)
681+ if ((bR == bR))
682682 then {
683- let cI = ak(ad)
684- $Tuple2((cI - cH), ad)
683+ let cJ = ak(ad)
684+ $Tuple2((cJ - cI), ad)
685685 }
686686 else throw("Strict value is not equal to itself.")
687687 }
688688 else throw("Strict value is not equal to itself.")
689689 }
690690 else throw("Wrong pool type")
691691
692692
693-func cJ (bf,aD,aI,bx,au,by,av,ax,ay,cK) = {
694- let cL = ak(fromBase58String(cK))
695- if ((cL == cL))
693+func cK (bf,aD,aI,bx,au,by,av,ax,ay,cL) = {
694+ let cM = ak(fromBase58String(cL))
695+ if ((cM == cM))
696696 then {
697697 let aq = addressFromStringValue(aD)
698- let cM = if (if ((bx > 0))
698+ let cN = if (if ((bx > 0))
699699 then (by > 0)
700700 else false)
701701 then {
702- let cN = bw(bf, aq, bx, au, by, av, ax, ay)
703- let co = cN._1
704- let cp = cN._2
705- let cq = cN._3
706- let cr = cN._4
707- let bz = bG(aq, bf, co, au, cp, av)
708- if ((bz == bz))
709- then $Tuple2(cq, cr)
702+ let cO = bw(bf, aq, bx, au, by, av, ax, ay)
703+ let cp = cO._1
704+ let cq = cO._2
705+ let cr = cO._3
706+ let cs = cO._4
707+ let bR = bG(aq, bf, cp, au, cq, av)
708+ if ((bR == bR))
709+ then $Tuple2(cr, cs)
710710 else throw("Strict value is not equal to itself.")
711711 }
712712 else if ((bx > 0))
713713 then $Tuple2(bx, au)
714714 else if ((by > 0))
715715 then $Tuple2(by, av)
716716 else throw("pmts must be > 0")
717- let cq = cM._1
718- let cr = cM._2
719- let bz = if ((cq > 0))
720- then bI(aq, bf, cq, cr)
717+ let cr = cN._1
718+ let cs = cN._2
719+ let bR = if ((cr > 0))
720+ then bI(aq, bf, cr, cs)
721721 else nil
722- if ((bz == bz))
722+ if ((bR == bR))
723723 then {
724- let cO = ak(fromBase58String(cK))
725- let cP = (cO - cL)
726- let cQ = fraction(cP, aH(aD, aI), m)
727- let cR = (cP - cQ)
728- if ((0 >= cR))
724+ let cP = ak(fromBase58String(cL))
725+ let cQ = (cP - cM)
726+ let cR = fraction(cQ, aH(aD, aI), m)
727+ let cS = (cQ - cR)
728+ if ((0 >= cS))
729729 then throw("amount of staked sharetokens must be > 0")
730730 else {
731- let cS = bK(aD, bf, cK, cR)
732- if ((cS == cS))
733- then $Tuple2(cR, cQ)
731+ let cT = bK(aD, bf, cL, cS)
732+ if ((cT == cT))
733+ then $Tuple2(cS, cR)
734734 else throw("Strict value is not equal to itself.")
735735 }
736736 }
737737 else throw("Strict value is not equal to itself.")
738738 }
739739 else throw("Strict value is not equal to itself.")
740740 }
741741
742742
743-func cT (aD,aG,cU,cQ,cV,aw,aA,cW) = {
744- let cX = aC(aD)
745- let cY = aE(aD)
746- let cZ = if (cW)
747- then $Tuple2(getIntegerValue(this, (aD + C)), (cY + cU))
748- else $Tuple2(getIntegerValue(this, (aD + D)), cY)
749- let da = cZ._1
750- let db = cZ._2
751-[IntegerEntry((aD + A), (cX + cU)), IntegerEntry((aD + B), db), IntegerEntry((((((aD + "_") + aG) + "_") + toString(cV)) + u), cU), IntegerEntry((((((aD + "_") + aG) + "_") + toString(cV)) + z), da), StringEntry((((aG + "_") + toString(cV)) + v), aD), IntegerEntry((aG + y), cV), ScriptTransfer(Y, cQ, fromBase58String(aw))]
743+func cU (aD,aG,cV,cR,cW,aw,aA,cX) = {
744+ let cY = aC(aD)
745+ let cZ = aE(aD)
746+ let da = if (cX)
747+ then $Tuple2(getIntegerValue(this, (aD + C)), (cZ + cV))
748+ else $Tuple2(getIntegerValue(this, (aD + D)), cZ)
749+ let db = da._1
750+ let dc = da._2
751+[IntegerEntry((aD + A), (cY + cV)), IntegerEntry((aD + B), dc), IntegerEntry((((((aD + "_") + aG) + "_") + toString(cW)) + u), cV), IntegerEntry((((((aD + "_") + aG) + "_") + toString(cW)) + z), db), StringEntry((((aG + "_") + toString(cW)) + v), aD), IntegerEntry((aG + y), cW), ScriptTransfer(Y, cR, fromBase58String(aw))]
752752 }
753753
754754
755-func dc (dd,de,df,dg,dh,di,dj,dk,dl,dm) = {
756- let dn = ak(aO(dd))
757- if ((dn == dn))
755+func dd (de,df,dg,dh,di,dj,dk,dl,dm,dn) = {
756+ let do = ak(aO(de))
757+ if ((do == do))
758758 then {
759- let bz = invoke(Z, "swap", [dg, dh, di, dj, dk, dl, dm], [AttachedPayment(df, de)])
760- if ((bz == bz))
761- then (ak(aO(dd)) - dn)
759+ let bR = invoke(Z, "swap", [dh, di, dj, dk, dl, dm, dn], [AttachedPayment(dg, df)])
760+ if ((bR == bR))
761+ then (ak(aO(de)) - do)
762762 else throw("Strict value is not equal to itself.")
763763 }
764764 else throw("Strict value is not equal to itself.")
765765 }
766766
767767
768-func do (dd,de,df,dp,dq,dm) = {
769- let dn = ak(aO(dd))
770- if ((dn == dn))
768+func dp (de,df,dg,dq,dr,dn) = {
769+ let do = ak(aO(de))
770+ if ((do == do))
771771 then {
772- let bz = invoke(Z, "puzzleSwap", [dp, dq, dm], [AttachedPayment(df, de)])
773- if ((bz == bz))
774- then (ak(aO(dd)) - dn)
772+ let bR = invoke(Z, "puzzleSwap", [dq, dr, dn], [AttachedPayment(dg, df)])
773+ if ((bR == bR))
774+ then (ak(aO(de)) - do)
775775 else throw("Strict value is not equal to itself.")
776776 }
777777 else throw("Strict value is not equal to itself.")
778778 }
779779
780780
781-func dr (dd,de,df,ds,dt,du,dv,dw,dx,dm) = {
782- let dn = ak(aO(dd))
783- if ((dn == dn))
781+func ds (de,df,dg,dt,du,dv,dw,dx,dy,dn) = {
782+ let do = ak(aO(de))
783+ if ((do == do))
784784 then {
785- let bz = invoke(Z, "swopfiSwap", [ds, dt, du, dv, dw, dx, dm], [AttachedPayment(df, de)])
786- if ((bz == bz))
787- then (ak(aO(dd)) - dn)
785+ let bR = invoke(Z, "swopfiSwap", [dt, du, dv, dw, dx, dy, dn], [AttachedPayment(dg, df)])
786+ if ((bR == bR))
787+ then (ak(aO(de)) - do)
788788 else throw("Strict value is not equal to itself.")
789789 }
790790 else throw("Strict value is not equal to itself.")
791791 }
792792
793793
794-func dy (aD,bf,dz,dA) = {
794+func dz (aD,bf,dA,dB) = {
795795 let aq = Address(fromBase58String(aD))
796- let dB = az(aq, bf)
797- let dC = dB._1
798- let dD = dB._2
799- let ax = dB._3
800- let ay = dB._4
801- let aw = dB._5
802- if (if ((dz != dC))
803- then (dz != dD)
796+ let dC = az(aq, bf)
797+ let dD = dC._1
798+ let dE = dC._2
799+ let ax = dC._3
800+ let ay = dC._4
801+ let aw = dC._5
802+ if (if ((dA != dD))
803+ then (dA != dE)
804804 else false)
805805 then throw("Wrong asset")
806806 else {
807- let dE = if ((dz == dC))
808- then $Tuple2(dA, 0)
809- else $Tuple2(0, dA)
810- let bx = dE._1
811- let by = dE._2
812- let dF = cJ(bf, aD, i, bx, dC, by, dD, ax, ay, aw)
813- let cU = dF._1
814- let dG = dF._2
815- let dH = valueOrElse(getInteger(this, (aD + C)), 0)
816- let dI = valueOrElse(getInteger(this, (aD + D)), 0)
817- let dJ = aC(aD)
818- let dK = aE(aD)
819- let dL = fraction(dK, j, dJ)
820- let dM = fraction(cU, dL, j)
821- let dN = (cU - dM)
822- let dO = if ((dK > 0))
823- then (dH + fraction(dM, k, dK))
807+ let dF = if ((dA == dD))
808+ then $Tuple2(dB, 0)
809+ else $Tuple2(0, dB)
810+ let bx = dF._1
811+ let by = dF._2
812+ let dG = cK(bf, aD, i, bx, dD, by, dE, ax, ay, aw)
813+ let cV = dG._1
814+ let dH = dG._2
815+ let dI = valueOrElse(getInteger(this, (aD + C)), 0)
816+ let dJ = valueOrElse(getInteger(this, (aD + D)), 0)
817+ let dK = aC(aD)
818+ let dL = aE(aD)
819+ let dM = fraction(dL, j, dK)
820+ let dN = fraction(cV, dM, j)
821+ let dO = (cV - dN)
822+ let dP = if ((dL > 0))
823+ then (dI + fraction(dN, k, dL))
824824 else 0
825- let dP = if (((dJ - dK) > 0))
826- then (dI + fraction(dN, k, (dJ - dK)))
825+ let dQ = if (((dK - dL) > 0))
826+ then (dJ + fraction(dO, k, (dK - dL)))
827827 else 0
828- let dQ = fraction(dM, aH(aD, d), m)
829- let dR = fraction(dN, aH(aD, c), m)
830- let dS = bM(aD, bf, aw, (dQ + dR))
831- if ((dS == dS))
832- then ([IntegerEntry((aD + C), dO), IntegerEntry((aD + D), dP), IntegerEntry((aD + A), ((dJ + cU) - dS)), IntegerEntry((aD + B), ((dK + dM) - dQ)), ScriptTransfer(Y, (dQ + dR), fromBase58String(aw))] ++ bs(dC, dD, aw))
828+ let dR = fraction(dN, aH(aD, d), m)
829+ let dS = fraction(dO, aH(aD, c), m)
830+ let dT = bM(aD, bf, aw, (dR + dS))
831+ if ((dT == dT))
832+ then ([IntegerEntry((aD + C), dP), IntegerEntry((aD + D), dQ), IntegerEntry((aD + A), ((dK + cV) - dT)), IntegerEntry((aD + B), ((dL + dN) - dR)), ScriptTransfer(Y, (dR + dS), fromBase58String(aw))] ++ bs(dD, dE, aw))
833833 else throw("Strict value is not equal to itself.")
834834 }
835835 }
836836
837837
838-func dT (aD,dU,dV,dW) = {
838+func dU (aD,dV,dW,dX) = {
839839 let aq = Address(fromBase58String(aD))
840840 let bf = valueOrErrorMessage(getString(this, (M + aD)), "Unknown pool")
841- let dX = az(aq, bf)
842- let bS = dX._1
843- let bT = dX._2
844- let ax = dX._3
845- let ay = dX._4
846- let aw = dX._5
847- let dY = ak(aO(bS))
848- if ((dY == dY))
841+ let dY = az(aq, bf)
842+ let bT = dY._1
843+ let bU = dY._2
844+ let ax = dY._3
845+ let ay = dY._4
846+ let aw = dY._5
847+ let dZ = ak(aO(bT))
848+ if ((dZ == dZ))
849849 then {
850- let dZ = ak(aO(bT))
851- if ((dZ == dZ))
850+ let ea = ak(aO(bU))
851+ if ((ea == ea))
852852 then {
853- let bz = if ((bf == a))
854- then invoke(aq, "callFunction", ["withdraw", [toString(dU)]], nil)
853+ let bR = if ((bf == a))
854+ then invoke(aq, "callFunction", ["withdraw", [toString(dV)]], nil)
855855 else {
856- let bz = bM(aD, bf, aw, dU)
857- if ((bz == bz))
858- then invoke(aq, "get", nil, [AttachedPayment(aO(aw), dU)])
856+ let bR = bM(aD, bf, aw, dV)
857+ if ((bR == bR))
858+ then invoke(aq, "get", nil, [AttachedPayment(aO(aw), dV)])
859859 else throw("Strict value is not equal to itself.")
860860 }
861- if ((bz == bz))
861+ if ((bR == bR))
862862 then {
863- let ea = ak(aO(bS))
864863 let eb = ak(aO(bT))
865- let ec = $Tuple2((ea - dY), (eb - dZ))
866- let ed = ec._1
867- let ee = ec._2
868- let ef = if ((dV > 0))
864+ let ec = ak(aO(bU))
865+ let ed = $Tuple2((eb - dZ), (ec - ea))
866+ let ee = ed._1
867+ let ef = ed._2
868+ let eg = if ((dW > 0))
869869 then {
870- let cE = if (if ((dW == bS))
871- then (dV > ed)
870+ let cF = if (if ((dX == bT))
871+ then (dW > ee)
872872 else false)
873- then (dV - ed)
874- else if (if ((dW == bT))
875- then (dV > ee)
873+ then (dW - ee)
874+ else if (if ((dX == bU))
875+ then (dW > ef)
876876 else false)
877- then (dV - ee)
877+ then (dW - ef)
878878 else 0
879- let eg = if ((cE > 0))
880- then ci(bf, aD, bS, bT, ax, ay, cE, dW)
879+ let eh = if ((cF > 0))
880+ then cj(bf, aD, bT, bU, ax, ay, cF, dX)
881881 else 0
882- if ((eg == eg))
882+ if ((eh == eh))
883883 then {
884- let eh = ak(aO(bS))
885884 let ei = ak(aO(bT))
886- $Tuple2((eh - dY), (ei - dZ))
885+ let ej = ak(aO(bU))
886+ $Tuple2((ei - dZ), (ej - ea))
887887 }
888888 else throw("Strict value is not equal to itself.")
889889 }
890- else $Tuple2(ed, ee)
891- let ej = ef._1
892- let ek = ef._2
893- $Tuple7(ej, bS, ek, bT, ea, eb, aw)
890+ else $Tuple2(ee, ef)
891+ let ek = eg._1
892+ let el = eg._2
893+ $Tuple7(ek, bT, el, bU, eb, ec, aw)
894894 }
895895 else throw("Strict value is not equal to itself.")
896896 }
897897 else throw("Strict value is not equal to itself.")
898898 }
899899 else throw("Strict value is not equal to itself.")
900900 }
901901
902902
903-func el (aG,aD,em,en) = {
904- let eo = valueOrErrorMessage(getInteger(this, (((((aD + "_") + aG) + "_") + em) + u)), "Unknown position")
905- let ep = getIntegerValue(this, (((((aD + "_") + aG) + "_") + em) + z))
906- let eq = if (en)
903+func em (aG,aD,en,eo) = {
904+ let ep = valueOrErrorMessage(getInteger(this, (((((aD + "_") + aG) + "_") + en) + u)), "Unknown position")
905+ let eq = getIntegerValue(this, (((((aD + "_") + aG) + "_") + en) + z))
906+ let er = if (eo)
907907 then getIntegerValue(this, (aD + C))
908908 else getIntegerValue(this, (aD + D))
909- (eo + fraction(eo, (eq - ep), k))
909+ (ep + fraction(ep, (er - eq), k))
910910 }
911911
912912
913-func er (aG,aD,em,es) = {
914- let eo = valueOrErrorMessage(getInteger(this, (((((aD + "_") + aG) + "_") + em) + u)), "Unknown position")
915- let ep = getIntegerValue(this, (((((aD + "_") + aG) + "_") + em) + z))
916- let cy = valueOrElse(getInteger(this, (((((aD + "_") + aG) + "_") + em) + w)), 0)
917- let dU = el(aG, aD, em, (cy > 0))
918- let et = aC(aD)
919- let eu = Address(fromBase58String(aG))
920- let dW = valueOrElse(getString(this, (((((aD + "_") + aG) + "_") + em) + x)), "")
921- let dV = if ((cy > 0))
913+func es (aG,aD,en,et) = {
914+ let ep = valueOrErrorMessage(getInteger(this, (((((aD + "_") + aG) + "_") + en) + u)), "Unknown position")
915+ let eq = getIntegerValue(this, (((((aD + "_") + aG) + "_") + en) + z))
916+ let cz = valueOrElse(getInteger(this, (((((aD + "_") + aG) + "_") + en) + w)), 0)
917+ let dV = em(aG, aD, en, (cz > 0))
918+ let eu = aC(aD)
919+ let ev = Address(fromBase58String(aG))
920+ let dX = valueOrElse(getString(this, (((((aD + "_") + aG) + "_") + en) + x)), "")
921+ let dW = if ((cz > 0))
922922 then {
923- let at = invoke(ae(), "getAssetDebt", [false, ((aG + "_") + em), dW], nil)
923+ let at = invoke(ae(), "getAssetDebt", [false, ((aG + "_") + en), dX], nil)
924924 if ($isInstanceOf(at, "Int"))
925925 then at
926926 else throw(($getType(at) + " couldn't be cast to Int"))
927927 }
928928 else 0
929- let ev = dT(aD, dU, dV, dW)
930- if ((ev == ev))
929+ let ew = dU(aD, dV, dW, dX)
930+ if ((ew == ew))
931931 then {
932- let aw = ev._7
933- let eb = ev._6
934- let ea = ev._5
935- let bT = ev._4
936- let ek = ev._3
937- let bS = ev._2
938- let ej = ev._1
939- let ew = if ((dV > 0))
940- then invoke(ae(), "repayFor", [((aG + "_") + em)], [AttachedPayment(aO(dW), dV)])
932+ let aw = ew._7
933+ let ec = ew._6
934+ let eb = ew._5
935+ let bU = ew._4
936+ let el = ew._3
937+ let bT = ew._2
938+ let ek = ew._1
939+ let ex = if ((dW > 0))
940+ then invoke(ae(), "repayFor", [((aG + "_") + en)], [AttachedPayment(aO(dX), dW)])
941941 else 0
942- if ((ew == ew))
943- then ([DeleteEntry((((((aD + "_") + aG) + "_") + em) + u)), DeleteEntry((((((aD + "_") + aG) + "_") + em) + z)), IntegerEntry((aD + A), (et - dU)), ScriptTransfer(eu, ej, aO(bS)), ScriptTransfer(eu, ek, aO(bT))] ++ bs(bS, bT, aw))
942+ if ((ex == ex))
943+ then ([DeleteEntry((((((aD + "_") + aG) + "_") + en) + u)), DeleteEntry((((((aD + "_") + aG) + "_") + en) + z)), IntegerEntry((aD + A), (eu - dV)), ScriptTransfer(ev, ek, aO(bT)), ScriptTransfer(ev, el, aO(bU))] ++ bs(bT, bU, aw))
944944 else throw("Strict value is not equal to itself.")
945945 }
946946 else throw("Strict value is not equal to itself.")
947947 }
948948
949949
950-func ex (ey) = {
951- let ez = split(valueOrErrorMessage(getString(this, (ey + K)), ("No request with id " + ey)), ",")
952- let aG = ez[0]
953- let aD = ez[1]
954- let bx = parseIntValue(ez[2])
955- let dC = ez[3]
956- let by = parseIntValue(ez[4])
957- let dD = ez[5]
958- let ax = parseIntValue(ez[6])
959- let ay = parseIntValue(ez[7])
960- let aw = ez[8]
961- let eA = ez[9]
962- let eB = parseIntValue(ez[10])
963- $Tuple11(aG, aD, bx, dC, by, dD, ax, ay, aw, eA, eB)
950+func ey (ez) = {
951+ let eA = split(valueOrErrorMessage(getString(this, (ez + K)), ("No request with id " + ez)), ",")
952+ let aG = eA[0]
953+ let aD = eA[1]
954+ let bx = parseIntValue(eA[2])
955+ let dD = eA[3]
956+ let by = parseIntValue(eA[4])
957+ let dE = eA[5]
958+ let ax = parseIntValue(eA[6])
959+ let ay = parseIntValue(eA[7])
960+ let aw = eA[8]
961+ let eB = eA[9]
962+ let eC = parseIntValue(eA[10])
963+ $Tuple11(aG, aD, bx, dD, by, dE, ax, ay, aw, eB, eC)
964964 }
965965
966966
967-func eC (bx,by,au,av,eD,eE) = {
967+func eD (bx,by,au,av,eE,eF) = {
968968 let bj = ( let at = invoke(aa, "getTWAP60", [au, false], nil)
969969 if ($isInstanceOf(at, "(Int, Int)"))
970970 then at
971971 else throw(($getType(at) + " couldn't be cast to (Int, Int)")))._2
972972 let bk = ( let at = invoke(aa, "getTWAP60", [av, false], nil)
973973 if ($isInstanceOf(at, "(Int, Int)"))
974974 then at
975975 else throw(($getType(at) + " couldn't be cast to (Int, Int)")))._2
976- let eF = pow(10, 0, aP(au), 0, 0, DOWN)
977- let eG = pow(10, 0, aP(av), 0, 0, DOWN)
978- let eH = (fraction(bj, bx, eF) + fraction(bk, by, eG))
979- let eI = if ((eE == au))
980- then $Tuple2(bj, eF)
981- else $Tuple2(bk, eG)
982- let eJ = eI._1
983- let eK = eI._2
984- fraction(fraction(eH, (eD - 100), 100), eK, eJ)
976+ let eG = pow(10, 0, aP(au), 0, 0, DOWN)
977+ let eH = pow(10, 0, aP(av), 0, 0, DOWN)
978+ let eI = (fraction(bj, bx, eG) + fraction(bk, by, eH))
979+ let eJ = if ((eF == au))
980+ then $Tuple2(bj, eG)
981+ else $Tuple2(bk, eH)
982+ let eK = eJ._1
983+ let eL = eJ._2
984+ fraction(fraction(eI, (eE - 100), 100), eL, eK)
985985 }
986986
987987
988988 @Callable(ah)
989-func calcPriceImpactEVALONLY (aD,eD,eE,bx,by) = if (if ((100 > eD))
989+func calcPriceImpactEVALONLY (aD,eE,eF,bx,by) = if (if ((100 > eE))
990990 then true
991- else (eD > 300))
991+ else (eE > 300))
992992 then throw("Leverage can't be <100 and >300")
993993 else {
994994 let bf = valueOrErrorMessage(getString(this, (M + aD)), "Pool is not inited")
995- let eL = az(Address(fromBase58String(aD)), bf)
996- let dC = eL._1
997- let dD = eL._2
998- let ax = eL._3
999- let ay = eL._4
1000- let aw = eL._5
1001- let cy = if ((eD > 100))
1002- then eC(bx, by, dC, dD, eD, eE)
995+ let eM = az(Address(fromBase58String(aD)), bf)
996+ let dD = eM._1
997+ let dE = eM._2
998+ let ax = eM._3
999+ let ay = eM._4
1000+ let aw = eM._5
1001+ let cz = if ((eE > 100))
1002+ then eD(bx, by, dD, dE, eE, eF)
10031003 else 0
1004- let eM = if ((eE == dC))
1005- then $Tuple2((bx + cy), by)
1006- else $Tuple2(bx, (by + cy))
1007- let eN = eM._1
1008- let eO = eM._2
1009- let eP = cl(bf, aD, eN, dC, eO, dD, ax, ay)
1010- let cs = eP._1
1011- let cw = eP._2
1012- let eQ = if ((0 > cw))
1013- then (cw * -1)
1014- else cw
1015- $Tuple2(nil, [eQ])
1004+ let eN = if ((eF == dD))
1005+ then $Tuple2((bx + cz), by)
1006+ else $Tuple2(bx, (by + cz))
1007+ let eO = eN._1
1008+ let eP = eN._2
1009+ let eQ = cm(bf, aD, eO, dD, eP, dE, ax, ay)
1010+ let ct = eQ._1
1011+ let cx = eQ._2
1012+ let eR = if ((0 > cx))
1013+ then (cx * -1)
1014+ else cx
1015+ $Tuple2(nil, [eR])
10161016 }
10171017
10181018
10191019
10201020 @Callable(ah)
10211021 func getShareAssetPriceREADONLY (aw) = {
1022- let eR = be(aw)
1023- $Tuple2(nil, eR)
1022+ let eS = be(aw)
1023+ $Tuple2(nil, eS)
10241024 }
10251025
10261026
10271027
10281028 @Callable(ah)
1029-func getUserPositionShareAmountREADONLY (aG,cV) = {
1030- let aD = valueOrErrorMessage(getString(this, (((aG + "_") + cV) + v)), "Unknown position")
1031- let cy = getIntegerValue(this, (((((aD + "_") + aG) + "_") + cV) + w))
1032- let dU = el(aG, aD, cV, (cy > 0))
1033- $Tuple2(nil, dU)
1029+func getUserPositionShareAmountREADONLY (aG,cW) = {
1030+ let aD = valueOrErrorMessage(getString(this, (((aG + "_") + cW) + v)), "Unknown position")
1031+ let cz = getIntegerValue(this, (((((aD + "_") + aG) + "_") + cW) + w))
1032+ let dV = em(aG, aD, cW, (cz > 0))
1033+ $Tuple2(nil, dV)
10341034 }
10351035
10361036
10371037
10381038 @Callable(ah)
1039-func getUserPositionInDollarsREADONLY (aG,eS,cV) = {
1040- func eT (aV,aD) = {
1041- let eU = aV
1042- let eV = eU._1
1043- let eW = eU._2
1044- let eX = eU._3
1039+func getUserPositionInDollarsREADONLY (aG,eT,cW) = {
1040+ func eU (aV,aD) = {
1041+ let eV = aV
1042+ let eW = eV._1
1043+ let eX = eV._2
1044+ let eY = eV._3
10451045 let bf = valueOrErrorMessage(getString(this, (M + aD)), "Pool is not inited")
1046- let eY = az(Address(fromBase58String(aD)), bf)
1047- let dC = eY._1
1048- let dD = eY._2
1049- let ax = eY._3
1050- let ay = eY._4
1051- let aw = eY._5
1052- let cy = valueOrElse(getInteger(this, (((((aD + "_") + aG) + "_") + cV[eX]) + w)), 0)
1053- let dU = el(aG, aD, cV[eX], (cy > 0))
1054- let eR = be(aw)
1055- let eZ = pow(10, 0, aP(aw), 0, 0, DOWN)
1056- let fa = fraction(dU, eR, eZ)
1057- if ((cy == 0))
1058- then $Tuple3((eV :+ fa), (eW :+ 0), (eX + 1))
1046+ let eZ = az(Address(fromBase58String(aD)), bf)
1047+ let dD = eZ._1
1048+ let dE = eZ._2
1049+ let ax = eZ._3
1050+ let ay = eZ._4
1051+ let aw = eZ._5
1052+ let cz = valueOrElse(getInteger(this, (((((aD + "_") + aG) + "_") + cW[eY]) + w)), 0)
1053+ let dV = em(aG, aD, cW[eY], (cz > 0))
1054+ let eS = be(aw)
1055+ let fa = pow(10, 0, aP(aw), 0, 0, DOWN)
1056+ let fb = fraction(dV, eS, fa)
1057+ if ((cz == 0))
1058+ then $Tuple3((eW :+ fb), (eX :+ 0), (eY + 1))
10591059 else {
1060- let dW = getStringValue(this, (((((aD + "_") + aG) + "_") + cV[eX]) + x))
1061- let dV = {
1062- let at = invoke(ae(), "getAssetDebt", [false, ((aG + "_") + cV[eX]), dW], nil)
1060+ let dX = getStringValue(this, (((((aD + "_") + aG) + "_") + cW[eY]) + x))
1061+ let dW = {
1062+ let at = invoke(ae(), "getAssetDebt", [false, ((aG + "_") + cW[eY]), dX], nil)
10631063 if ($isInstanceOf(at, "Int"))
10641064 then at
10651065 else throw(($getType(at) + " couldn't be cast to Int"))
10661066 }
1067- let fb = ( let at = invoke(aa, "getTWAP60", [dW, false], nil)
1067+ let fc = ( let at = invoke(aa, "getTWAP60", [dX, false], nil)
10681068 if ($isInstanceOf(at, "(Int, Int)"))
10691069 then at
10701070 else throw(($getType(at) + " couldn't be cast to (Int, Int)")))._1
1071- let fc = pow(10, 0, aP(dW), 0, 0, DOWN)
1072- let fd = fraction(dV, fb, fc)
1073- $Tuple3((eV :+ fa), (eW :+ fd), (eX + 1))
1071+ let fd = pow(10, 0, aP(dX), 0, 0, DOWN)
1072+ let fe = fraction(dW, fc, fd)
1073+ $Tuple3((eW :+ fb), (eX :+ fe), (eY + 1))
10741074 }
10751075 }
10761076
1077- let fe = {
1078- let aX = eS
1077+ let ff = {
1078+ let aX = eT
10791079 let aY = size(aX)
10801080 let aZ = $Tuple3(nil, nil, 0)
10811081 func ba (bb,bc) = if ((bc >= aY))
10821082 then bb
1083- else eT(bb, aX[bc])
1083+ else eU(bb, aX[bc])
10841084
10851085 func bd (bb,bc) = if ((bc >= aY))
10861086 then bb
10871087 else throw("List size exceeds 20")
10881088
10891089 bd(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(ba(aZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
10901090 }
1091- let ff = fe._1
1092- let dV = fe._2
1093- $Tuple2(nil, $Tuple2(ff, dV))
1091+ let fg = ff._1
1092+ let dW = ff._2
1093+ $Tuple2(nil, $Tuple2(fg, dW))
10941094 }
10951095
10961096
10971097
10981098 @Callable(ah)
1099-func replenish (aD,eD,eE) = if (if ((100 > eD))
1099+func replenish (aD,eE,eF) = if (if ((100 > eE))
11001100 then true
1101- else (eD > 300))
1101+ else (eE > 300))
11021102 then throw("Leverage can't be <100 and >300")
11031103 else {
11041104 let bf = valueOrErrorMessage(getString(this, (M + aD)), "Pool is not inited")
1105- let fg = az(Address(fromBase58String(aD)), bf)
1106- let dC = fg._1
1107- let dD = fg._2
1108- let ax = fg._3
1109- let ay = fg._4
1110- let aw = fg._5
1111- let fh = if ((size(ah.payments) == 2))
1112- then if ((aN(ah.payments[0].assetId) != dC))
1105+ let fh = az(Address(fromBase58String(aD)), bf)
1106+ let dD = fh._1
1107+ let dE = fh._2
1108+ let ax = fh._3
1109+ let ay = fh._4
1110+ let aw = fh._5
1111+ let fi = if ((size(ah.payments) == 2))
1112+ then if ((aN(ah.payments[0].assetId) != dD))
11131113 then throw("Wrong payment asset A")
1114- else if ((aN(ah.payments[1].assetId) != dD))
1114+ else if ((aN(ah.payments[1].assetId) != dE))
11151115 then throw("Wrong payment asset B")
1116- else $Tuple4(ah.payments[0].amount, dC, ah.payments[1].amount, dD)
1116+ else $Tuple4(ah.payments[0].amount, dD, ah.payments[1].amount, dE)
11171117 else if ((size(ah.payments) == 1))
1118- then if ((aN(ah.payments[0].assetId) == dC))
1119- then $Tuple4(ah.payments[0].amount, dC, 0, dD)
1120- else if ((aN(ah.payments[0].assetId) == dD))
1121- then $Tuple4(0, dC, ah.payments[0].amount, dD)
1118+ then if ((aN(ah.payments[0].assetId) == dD))
1119+ then $Tuple4(ah.payments[0].amount, dD, 0, dE)
1120+ else if ((aN(ah.payments[0].assetId) == dE))
1121+ then $Tuple4(0, dD, ah.payments[0].amount, dE)
11221122 else throw("Wrong payment")
11231123 else throw("One or two payments expected")
1124- let bx = fh._1
1125- let fi = fh._2
1126- let by = fh._3
1127- let fj = fh._4
1128- let fk = aF(toString(ah.caller))
1129- if ((eD > 100))
1124+ let bx = fi._1
1125+ let fj = fi._2
1126+ let by = fi._3
1127+ let fk = fi._4
1128+ let fl = aF(toString(ah.caller))
1129+ if ((eE > 100))
11301130 then {
1131- let cy = eC(bx, by, fi, fj, eD, eE)
1132- let ez = makeString([toString(ah.caller), aD, toString(bx), fi, toString(by), fj, toString(ax), toString(ay), aw, eE, toString(cy)], ",")
1133- let fl = {
1134- let at = invoke(this, "createNewRequest", [ez], nil)
1131+ let cz = eD(bx, by, fj, fk, eE, eF)
1132+ let eA = makeString([toString(ah.caller), aD, toString(bx), fj, toString(by), fk, toString(ax), toString(ay), aw, eF, toString(cz)], ",")
1133+ let fm = {
1134+ let at = invoke(this, "createNewRequest", [eA], nil)
11351135 if ($isInstanceOf(at, "Int"))
11361136 then at
11371137 else throw(($getType(at) + " couldn't be cast to Int"))
11381138 }
1139- if ((fl == fl))
1139+ if ((fm == fm))
11401140 then {
1141- let fm = [((toString(ah.caller) + "_") + toString(fk)), aw, eE, cy, toString(this), "replenishFromLand", toString(valueOrErrorMessage(fl, "Can't create new request"))]
1142- let bz = reentrantInvoke(ae(), "flashPosition", fm, nil)
1143- if ((bz == bz))
1141+ let fn = [((toString(ah.caller) + "_") + toString(fl)), aw, eF, cz, toString(this), "replenishFromLand", toString(valueOrErrorMessage(fm, "Can't create new request"))]
1142+ let bR = reentrantInvoke(ae(), "flashPosition", fn, nil)
1143+ if ((bR == bR))
11441144 then nil
11451145 else throw("Strict value is not equal to itself.")
11461146 }
11471147 else throw("Strict value is not equal to itself.")
11481148 }
11491149 else {
1150- let fn = cJ(bf, aD, h, bx, dC, by, dD, ax, ay, aw)
1151- let fo = fn._1
1152- let dS = fn._2
1153- (cT(aD, toString(ah.caller), fo, dS, fk, aw, bf, false) ++ bs(dC, dD, aw))
1150+ let fo = cK(bf, aD, h, bx, dD, by, dE, ax, ay, aw)
1151+ let fp = fo._1
1152+ let dT = fo._2
1153+ (cU(aD, toString(ah.caller), fp, dT, fl, aw, bf, false) ++ bs(dD, dE, aw))
11541154 }
11551155 }
11561156
11571157
11581158
11591159 @Callable(ah)
1160-func withdraw (aD,em) = er(toString(ah.caller), aD, toString(em), false)
1160+func withdraw (aD,en) = es(toString(ah.caller), aD, toString(en), false)
11611161
11621162
11631163
11641164 @Callable(ah)
1165-func createUpdateStopLoss (em,fp,al,fq) = {
1166- let fr = ( let at = invoke(aa, "getTWAP60", [al, false], nil)
1165+func createUpdateStopLoss (en,fq,al,fr) = {
1166+ let fs = ( let at = invoke(aa, "getTWAP60", [al, false], nil)
11671167 if ($isInstanceOf(at, "(Int, Int)"))
11681168 then at
11691169 else throw(($getType(at) + " couldn't be cast to (Int, Int)")))._1
1170- if (!(isDefined(getInteger(this, (((((fp + "_") + toString(ah.caller)) + "_") + toString(em)) + u)))))
1170+ if (!(isDefined(getInteger(this, (((((fq + "_") + toString(ah.caller)) + "_") + toString(en)) + u)))))
11711171 then throw("There are no user position")
1172- else if ((0 >= fq))
1172+ else if ((0 >= fr))
11731173 then throw("Price must be greater than 0")
1174- else if ((fq > fr))
1174+ else if ((fr > fs))
11751175 then throw("Price must be less than current token price")
1176- else [IntegerEntry((((((((toString(ah.caller) + "_") + toString(em)) + "_") + fp) + "_") + al) + Q), fq)]
1176+ else [IntegerEntry((((((((toString(ah.caller) + "_") + toString(en)) + "_") + fq) + "_") + al) + Q), fr)]
11771177 }
11781178
11791179
11801180
11811181 @Callable(ah)
1182-func deleteStopLoss (em,fp,al) = if (!(isDefined(getInteger(this, (((((((toString(ah.caller) + "_") + toString(em)) + "_") + fp) + "_") + al) + Q)))))
1182+func deleteStopLoss (en,fq,al) = if (!(isDefined(getInteger(this, (((((((toString(ah.caller) + "_") + toString(en)) + "_") + fq) + "_") + al) + Q)))))
11831183 then throw("No entry")
1184- else [DeleteEntry((((((((toString(ah.caller) + "_") + toString(em)) + "_") + fp) + "_") + al) + Q))]
1184+ else [DeleteEntry((((((((toString(ah.caller) + "_") + toString(en)) + "_") + fq) + "_") + al) + Q))]
11851185
11861186
11871187
11881188 @Callable(ah)
11891189 func createNewRequest (bQ) = valueOrElse(ai(ah), {
1190- let fl = (valueOrElse(getInteger(this, L), 0) + 1)
1191- $Tuple2([StringEntry((toString(fl) + K), bQ), IntegerEntry(L, fl)], fl)
1190+ let fm = (valueOrElse(getInteger(this, L), 0) + 1)
1191+ $Tuple2([StringEntry((toString(fm) + K), bQ), IntegerEntry(L, fm)], fm)
11921192 })
11931193
11941194
11951195
11961196 @Callable(ah)
1197-func replenishFromLand (ey) = valueOrElse(aj(ah), {
1198- let fs = ex(ey)
1199- let aG = fs._1
1200- let aD = fs._2
1201- let bx = fs._3
1202- let dC = fs._4
1203- let by = fs._5
1204- let dD = fs._6
1205- let ax = fs._7
1206- let ay = fs._8
1207- let aw = fs._9
1208- let eA = fs._10
1209- let eB = fs._11
1197+func replenishFromLand (ez) = valueOrElse(aj(ah), {
1198+ let ft = ey(ez)
1199+ let aG = ft._1
1200+ let aD = ft._2
1201+ let bx = ft._3
1202+ let dD = ft._4
1203+ let by = ft._5
1204+ let dE = ft._6
1205+ let ax = ft._7
1206+ let ay = ft._8
1207+ let aw = ft._9
1208+ let eB = ft._10
1209+ let eC = ft._11
12101210 if ((size(ah.payments) != 1))
12111211 then throw("Wrong payment size")
1212- else if (if ((aN(ah.payments[0].assetId) != eA))
1212+ else if (if ((aN(ah.payments[0].assetId) != eB))
12131213 then true
1214- else (ah.payments[0].amount != eB))
1214+ else (ah.payments[0].amount != eC))
12151215 then throw("Wrong payment")
12161216 else {
1217- let ft = if ((dC == eA))
1217+ let fu = if ((dD == eB))
12181218 then $Tuple2((bx + ah.payments[0].amount), by)
12191219 else $Tuple2(bx, (by + ah.payments[0].amount))
1220- let fu = ft._1
1221- let fv = ft._2
1220+ let fv = fu._1
1221+ let fw = fu._2
12221222 let bf = valueOrErrorMessage(getString(this, (M + aD)), "Unknown pool")
1223- let fw = cJ(bf, aD, g, fu, dC, fv, dD, ax, ay, aw)
1224- let fo = fw._1
1225- let dS = fw._2
1226- let cV = aF(aG)
1227- let fx = [IntegerEntry((((((aD + "_") + aG) + "_") + toString(cV)) + w), eB), StringEntry((((((aD + "_") + aG) + "_") + toString(cV)) + x), eA)]
1228- let fy = cT(aD, aG, fo, dS, cV, aw, bf, true)
1229- $Tuple2((((fy ++ bs(dC, dD, aw)) ++ fx) :+ DeleteEntry((ey + K))), fo)
1223+ let fx = cK(bf, aD, g, fv, dD, fw, dE, ax, ay, aw)
1224+ let fp = fx._1
1225+ let dT = fx._2
1226+ let cW = aF(aG)
1227+ let fy = [IntegerEntry((((((aD + "_") + aG) + "_") + toString(cW)) + w), eC), StringEntry((((((aD + "_") + aG) + "_") + toString(cW)) + x), eB)]
1228+ let fz = cU(aD, aG, fp, dT, cW, aw, bf, true)
1229+ $Tuple2((((fz ++ bs(dD, dE, aw)) ++ fy) :+ DeleteEntry((ez + K))), fp)
12301230 }
12311231 })
12321232
12331233
12341234
12351235 @Callable(ah)
1236-func liquidate (aG,em,fz) = valueOrElse(aj(ah), {
1237- let aD = valueOrErrorMessage(getString(this, (((aG + "_") + em) + v)), "no position")
1236+func liquidate (aG,en,fA) = valueOrElse(aj(ah), {
1237+ let aD = valueOrErrorMessage(getString(this, (((aG + "_") + en) + v)), "no position")
12381238 let bf = valueOrErrorMessage(getString(this, (M + aD)), "Pool is not inited")
1239- let fA = az(Address(fromBase58String(aD)), bf)
1240- let dC = fA._1
1241- let dD = fA._2
1242- let ax = fA._3
1243- let ay = fA._4
1244- let aw = fA._5
1245- let bL = bM(aD, bf, aw, fz)
1246- let cy = getIntegerValue(this, (((((aD + "_") + aG) + "_") + em) + w))
1247- let dW = getStringValue(this, (((((aD + "_") + aG) + "_") + em) + x))
1248- let dU = el(aG, aD, em, (cy > 0))
1249- if ((cy == 0))
1239+ let fB = az(Address(fromBase58String(aD)), bf)
1240+ let dD = fB._1
1241+ let dE = fB._2
1242+ let ax = fB._3
1243+ let ay = fB._4
1244+ let aw = fB._5
1245+ let bL = bM(aD, bf, aw, fA)
1246+ let cz = getIntegerValue(this, (((((aD + "_") + aG) + "_") + en) + w))
1247+ let dX = getStringValue(this, (((((aD + "_") + aG) + "_") + en) + x))
1248+ let dV = em(aG, aD, en, (cz > 0))
1249+ if ((cz == 0))
12501250 then throw("You can't liquidate position without borrow")
1251- else [IntegerEntry((((((aD + "_") + aG) + "_") + em) + z), getIntegerValue(this, (aD + C))), IntegerEntry((aD + B), (aE(aD) - fz)), IntegerEntry((aD + A), (aC(aD) - fz)), IntegerEntry((((((aD + "_") + aG) + "_") + em) + u), (dU - fz)), ScriptTransfer(ah.caller, bL, fromBase58String(aw))]
1251+ else [IntegerEntry((((((aD + "_") + aG) + "_") + en) + z), getIntegerValue(this, (aD + C))), IntegerEntry((aD + B), (aE(aD) - fA)), IntegerEntry((aD + A), (aC(aD) - fA)), IntegerEntry((((((aD + "_") + aG) + "_") + en) + u), (dV - fA)), ScriptTransfer(ah.caller, bL, fromBase58String(aw))]
12521252 })
12531253
12541254
12551255
12561256 @Callable(ah)
1257-func stopLoss (aG,em,aD,al) = valueOrElse(ag(ah), {
1258- let fr = ( let at = invoke(aa, "getTWAP60", [al, false], nil)
1257+func stopLoss (aG,en,aD,al) = valueOrElse(ag(ah), {
1258+ let fs = ( let at = invoke(aa, "getTWAP60", [al, false], nil)
12591259 if ($isInstanceOf(at, "(Int, Int)"))
12601260 then at
12611261 else throw(($getType(at) + " couldn't be cast to (Int, Int)")))._1
1262- if (!(isDefined(getInteger(this, (((((((aG + "_") + toString(em)) + "_") + aD) + "_") + al) + Q)))))
1262+ if (!(isDefined(getInteger(this, (((((((aG + "_") + toString(en)) + "_") + aD) + "_") + al) + Q)))))
12631263 then throw("No entry")
1264- else (er(toString(ah.caller), aD, toString(em), true) :+ DeleteEntry((((((((aG + "_") + toString(em)) + "_") + aD) + "_") + al) + Q)))
1264+ else (es(toString(ah.caller), aD, toString(en), true) :+ DeleteEntry((((((((aG + "_") + toString(en)) + "_") + aD) + "_") + al) + Q)))
12651265 })
12661266
12671267
12681268
12691269 @Callable(ah)
1270-func capitalizeExKeeper (aD,aA,fB,fC,fD,dg,dh,di,dj,dk,dl,dm) = valueOrElse(ag(ah), {
1271- let fE = if (fD)
1272- then cG(aA, aD)
1270+func capitalizeExKeeper (aD,aA,fC,fD,fE,dh,di,dj,dk,dl,dm,dn) = valueOrElse(ag(ah), {
1271+ let fF = if (fE)
1272+ then cH(aA, aD)
12731273 else {
1274- let fF = if ((aA == a))
1274+ let fG = if ((aA == a))
12751275 then ac
12761276 else ad
1277- $Tuple2(fC, fF)
1277+ $Tuple2(fD, fG)
12781278 }
1279- let fG = fE._1
1280- let fF = fE._2
1281- let fH = dc(fB, fC, fF, dg, dh, di, dj, dk, dl, dm)
1282- let cq = (fG - fC)
1283- let fI = if ((cq > 0))
1284- then [IntegerEntry((aD + O), (cq + valueOrElse(getInteger(this, (aD + O)), 0)))]
1279+ let fH = fF._1
1280+ let fG = fF._2
1281+ let fI = dd(fC, fD, fG, dh, di, dj, dk, dl, dm, dn)
1282+ let cr = (fH - fD)
1283+ let fJ = if ((cr > 0))
1284+ then [IntegerEntry((aD + O), (cr + valueOrElse(getInteger(this, (aD + O)), 0)))]
12851285 else nil
1286- (dy(aD, aA, fB, fH) ++ fI)
1286+ (dz(aD, aA, fC, fI) ++ fJ)
12871287 })
12881288
12891289
12901290
12911291 @Callable(ah)
1292-func capitalizeExPuzzle (aD,aA,fB,fC,fD,dp,dq,dm) = valueOrElse(ag(ah), {
1293- let fJ = if (fD)
1294- then cG(aA, aD)
1292+func capitalizeExPuzzle (aD,aA,fC,fD,fE,dq,dr,dn) = valueOrElse(ag(ah), {
1293+ let fK = if (fE)
1294+ then cH(aA, aD)
12951295 else {
1296- let fF = if ((aA == a))
1296+ let fG = if ((aA == a))
12971297 then ac
12981298 else ad
1299- $Tuple2(fC, fF)
1299+ $Tuple2(fD, fG)
13001300 }
1301- let fG = fJ._1
1302- let fF = fJ._2
1303- let fH = do(fB, fC, fF, dp, dq, dm)
1304- let cq = (fG - fC)
1305- let fI = if ((cq > 0))
1306- then [IntegerEntry((aD + O), (cq + valueOrElse(getInteger(this, (aD + O)), 0)))]
1301+ let fH = fK._1
1302+ let fG = fK._2
1303+ let fI = dp(fC, fD, fG, dq, dr, dn)
1304+ let cr = (fH - fD)
1305+ let fJ = if ((cr > 0))
1306+ then [IntegerEntry((aD + O), (cr + valueOrElse(getInteger(this, (aD + O)), 0)))]
13071307 else nil
1308- (dy(aD, aA, fB, fH) ++ fI)
1308+ (dz(aD, aA, fC, fI) ++ fJ)
13091309 })
13101310
13111311
13121312
13131313 @Callable(ah)
1314-func capitalizeExSwopFi (aD,aA,fB,fC,fD,ds,dt,du,dv,dw,dx,dm) = valueOrElse(ag(ah), {
1315- let fK = if (fD)
1316- then cG(aA, aD)
1314+func capitalizeExSwopFi (aD,aA,fC,fD,fE,dt,du,dv,dw,dx,dy,dn) = valueOrElse(ag(ah), {
1315+ let fL = if (fE)
1316+ then cH(aA, aD)
13171317 else {
1318- let fF = if ((aA == a))
1318+ let fG = if ((aA == a))
13191319 then ac
13201320 else ad
1321- $Tuple2(fC, fF)
1321+ $Tuple2(fD, fG)
13221322 }
1323- let fG = fK._1
1324- let fF = fK._2
1325- let fH = dr(fB, fC, fF, ds, dt, du, dv, dw, dx, dm)
1326- let cq = (fG - fC)
1327- let fI = if ((cq > 0))
1328- then [IntegerEntry((aD + O), (cq + valueOrElse(getInteger(this, (aD + O)), 0)))]
1323+ let fH = fL._1
1324+ let fG = fL._2
1325+ let fI = ds(fC, fD, fG, dt, du, dv, dw, dx, dy, dn)
1326+ let cr = (fH - fD)
1327+ let fJ = if ((cr > 0))
1328+ then [IntegerEntry((aD + O), (cr + valueOrElse(getInteger(this, (aD + O)), 0)))]
13291329 else nil
1330- (dy(aD, aA, fB, fH) ++ fI)
1330+ (dz(aD, aA, fC, fI) ++ fJ)
13311331 })
13321332
13331333
13341334
13351335 @Callable(ah)
1336-func initNewPool (aA,aq,fL,fM,fN,fO,fP,fQ) = valueOrElse(ag(ah), if (if ((aA != a))
1336+func initNewPool (aA,aq,fM,fN,fO,fP,fQ,fR) = valueOrElse(ag(ah), if (if ((aA != a))
13371337 then (aA != b)
13381338 else false)
13391339 then throw("Wrong type")
13401340 else {
1341- let fR = az(Address(fromBase58String(aq)), aA)
1342- let au = fR._1
1343- let av = fR._2
1344- let fS = fR._3
1345- let fT = fR._4
1346- let aw = fR._5
1347-[IntegerEntry((aq + E), fL), IntegerEntry((aq + F), fM), IntegerEntry((aq + G), fN), IntegerEntry((aq + H), fO), IntegerEntry((aq + I), fP), IntegerEntry((aq + J), fQ), IntegerEntry((aq + C), 0), IntegerEntry((aq + D), 0), StringEntry((M + aq), aA), StringEntry((aw + N), aq)]
1341+ let fS = az(Address(fromBase58String(aq)), aA)
1342+ let au = fS._1
1343+ let av = fS._2
1344+ let fT = fS._3
1345+ let fU = fS._4
1346+ let aw = fS._5
1347+[IntegerEntry((aq + E), fM), IntegerEntry((aq + F), fN), IntegerEntry((aq + G), fO), IntegerEntry((aq + H), fP), IntegerEntry((aq + I), fQ), IntegerEntry((aq + J), fR), IntegerEntry((aq + C), 0), IntegerEntry((aq + D), 0), StringEntry((M + aq), aA), StringEntry((aw + N), aq)]
13481348 })
13491349
13501350
1351-@Verifier(fU)
1352-func fV () = sigVerify(fU.bodyBytes, fU.proofs[0], fU.senderPublicKey)
1351+@Verifier(fV)
1352+func fW () = sigVerify(fV.bodyBytes, fV.proofs[0], fV.senderPublicKey)
13531353

github/deemru/w8io/026f985 
354.55 ms