tx · H8QS7WuXCCBSPQEDeZny5ZY2Uow37YWgaL9F2inrjudx

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.03600000 Waves

2022.09.14 15:29 [2228767] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

{ "type": 13, "id": "H8QS7WuXCCBSPQEDeZny5ZY2Uow37YWgaL9F2inrjudx", "fee": 3600000, "feeAssetId": null, "timestamp": 1663158550036, "version": 2, "chainId": 84, "sender": "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA", "senderPublicKey": "35yd3qw1gxKDxKwGAykHN9fANbXNWwseaUwbWDj24o3x", "proofs": [ "398R4d5yvT9nV1DmJngFmMfbPzw4aHTBXGX1FMVmnZxbM6CuKHLvMw4ieaffoZosTgyAr1FbRHgCt1k8HE8b8yi2" ], "script": "base64:BgKfAQgCEgMKAQgSAwoBCBIAEgQKAgEEEgcKBQEBAQEEEgQKAgEEEgQKAgEIEgMKAQESABIHCgUBAQEIARIECgIIARIECgIIARIECgIBARIDCgEBEgYKBAEBCAESBAoCCAgSBAoCCAgSBAoCCAESABIDCgEIEgUKAwEBARIECgIIARIECgIBARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCFMABnNjYWxlOACAwtcvAAxzY2FsZThCaWdJbnQJALYCAQCAwtcvAAdzY2FsZTE4CQC2AgEAgICQu7rWrfANAAp6ZXJvQmlnSW50CQC2AgEAAAAJb25lQmlnSW50CQC2AgEAAQAKc2xpcHBhZ2U0RAkAtgIBCQBlAgUGc2NhbGU4CQBpAgkAaAIFBnNjYWxlOAABBQZzY2FsZTgABUFtdWx0AgMxMDAABURjb252AgExAANTRVACAl9fAAVFTVBUWQIAAApQb29sQWN0aXZlAAEAClBvb2xQdXREaXMAAgAOUG9vbE1hdGNoZXJEaXMAAwAMUG9vbFNodXRkb3duAAQADmlkeFBvb2xBZGRyZXNzAAEACWlkeFBvb2xTdAACAAlpZHhMUEFzSWQAAwAJaWR4QW1Bc0lkAAQACWlkeFByQXNJZAAFAAtpZHhBbXRBc0RjbQAGAA1pZHhQcmljZUFzRGNtAAcAC2lkeElBbXRBc0lkAAgADWlkeElQcmljZUFzSWQACQAPaWR4RmFjdFN0YWtDbnRyAAEAEGlkeEZhY3RTbGlwcENudHIABwARaWR4RmFjdEd3eFJld0NudHIACgAFZGVsYXkCCSVzX19kZWxheQECdDECB29yaWdWYWwNb3JpZ1NjYWxlTXVsdAkAvAIDCQC2AgEFB29yaWdWYWwFB3NjYWxlMTgJALYCAQUNb3JpZ1NjYWxlTXVsdAECZjECA3ZhbA9yZXN1bHRTY2FsZU11bHQJAKADAQkAvAIDBQN2YWwJALYCAQUPcmVzdWx0U2NhbGVNdWx0BQdzY2FsZTE4AQJ0cwMDYW10CHJlc1NjYWxlCGN1clNjYWxlCQBrAwUDYW10BQhyZXNTY2FsZQUIY3VyU2NhbGUBA2FicwEDdmFsAwkAvwICBQp6ZXJvQmlnSW50BQN2YWwJAL4CAQUDdmFsBQN2YWwBAmZjAAITJXNfX2ZhY3RvcnlDb250cmFjdAEDbXBrAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBBHBtcGsAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAnBsAAIRJXMlc19fcHJpY2VfX2xhc3QBAnBoAgFoAXQJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFoCQDMCAIJAKQDAQUBdAUDbmlsBQNTRVABA3BhdQICdWEEdHhJZAkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAnVhAgJfXwUEdHhJZAEDZ2F1AgJ1YQR0eElkCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUCdWECAl9fBQR0eElkAQJhYQACDyVzX19hbW91bnRBc3NldAECcGEAAg4lc19fcHJpY2VBc3NldAEDYW1wAAIHJXNfX2FtcAEDYWRhAAINJXNfX2FkZG9uQWRkcgEFbGdvdGMBBmNhbGxlcgkAuQkCCQDMCAICFyVzJXNfX2xhc3RHZXRPbmVUa25DYWxsCQDMCAIFBmNhbGxlcgUDbmlsBQNTRVABBWxzb3RjAQZjYWxsZXIJALkJAgkAzAgCAhclcyVzX19sYXN0UHV0T25lVGtuQ2FsbAkAzAgCBQZjYWxsZXIFA25pbAUDU0VQAQRmY2ZnAAIRJXNfX2ZhY3RvcnlDb25maWcBBG10cGsAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAnBjAgZpQW10QXMFaVByQXMJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FBmlBbXRBcwICX18FBWlQckFzAghfX2NvbmZpZwEDbWJhAQViQVN0cgkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQViQVN0cgEDYXBzAAIMJXNfX3NodXRkb3duARxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAAIdJXNfX2FsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gBA3RvZQMDb3JWBnNlbmRyVgZtYXRjaFYJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIRRmFpbGVkOiBvcmRWYWxpZD0JAKUDAQUDb3JWAgsgc25kclZhbGlkPQkApQMBBQZzZW5kclYCDCBtdGNoclZhbGlkPQkApQMBBQZtYXRjaFYBA3N0cgEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAZ2YWxTdHIFByRtYXRjaDAFBnZhbFN0cgkAAgECE2ZhaWwgY2FzdCB0byBTdHJpbmcBBHN0cmYCBGFkZHIDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEYWRkcgUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFBGFkZHIJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAEEaW50ZgIEYWRkcgNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQRhZGRyBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUEYWRkcgkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAANmY2EJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQRzdHJmAgUEdGhpcwkBAmZjAAABQQkBBHN0cmYCBQR0aGlzCQEDYW1wAAEDaWdzAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQNmY2EJAQNhcHMABwECbXAACQDZBAEJAQRzdHJmAgUDZmNhCQEEbXRwawABA2dwYwAEBWFtdEFzCQEEc3RyZgIFBHRoaXMJAQJhYQAEB3ByaWNlQXMJAQRzdHJmAgUEdGhpcwkBAnBhAAQIaVByaWNlQXMJAQRpbnRmAgUDZmNhCQEDbWJhAQUHcHJpY2VBcwQGaUFtdEFzCQEEaW50ZgIFA2ZjYQkBA21iYQEFBWFtdEFzCQC1CQIJAQRzdHJmAgUDZmNhCQECcGMCCQCkAwEFBmlBbXRBcwkApAMBBQhpUHJpY2VBcwUDU0VQAQNnZmMACQC1CQIJAQRzdHJmAgUDZmNhCQEEZmNmZwAFA1NFUAANZmFjdG9yeUNvbmZpZwkBA2dmYwAAD3N0YWtpbmdDb250cmFjdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUNZmFjdG9yeUNvbmZpZwUPaWR4RmFjdFN0YWtDbnRyAiBJbnZhbGlkIHN0YWtpbmcgY29udHJhY3QgYWRkcmVzcwAPc2xpcGFnZUNvbnRyYWN0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQ1mYWN0b3J5Q29uZmlnBRBpZHhGYWN0U2xpcHBDbnRyAiBJbnZhbGlkIHNsaXBhZ2UgY29udHJhY3QgYWRkcmVzcwALZ3d4Q29udHJhY3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFDWZhY3RvcnlDb25maWcFEWlkeEZhY3RHd3hSZXdDbnRyAhxJbnZhbGlkIGd3eCBjb250cmFjdCBhZGRyZXNzARFkYXRhUHV0QWN0aW9uSW5mbwoNaW5BbXRBc3NldEFtdA9pblByaWNlQXNzZXRBbXQIb3V0THBBbXQFcHJpY2UKc2xpcEJ5VXNlcgxzbGlwcGFnZVJlYWwIdHhIZWlnaHQLdHhUaW1lc3RhbXAMc2xpcGFnZUFtQW10DHNsaXBhZ2VQckFtdAkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUNaW5BbXRBc3NldEFtdAkAzAgCCQCkAwEFD2luUHJpY2VBc3NldEFtdAkAzAgCCQCkAwEFCG91dExwQW10CQDMCAIJAKQDAQUFcHJpY2UJAMwIAgkApAMBBQpzbGlwQnlVc2VyCQDMCAIJAKQDAQUMc2xpcHBhZ2VSZWFsCQDMCAIJAKQDAQUIdHhIZWlnaHQJAMwIAgkApAMBBQt0eFRpbWVzdGFtcAkAzAgCCQCkAwEFDHNsaXBhZ2VBbUFtdAkAzAgCCQCkAwEFDHNsaXBhZ2VQckFtdAUDbmlsBQNTRVABEWRhdGFHZXRBY3Rpb25JbmZvBg5vdXRBbXRBc3NldEFtdBBvdXRQcmljZUFzc2V0QW10B2luTHBBbXQFcHJpY2UIdHhIZWlnaHQLdHhUaW1lc3RhbXAJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQ5vdXRBbXRBc3NldEFtdAkAzAgCCQCkAwEFEG91dFByaWNlQXNzZXRBbXQJAMwIAgkApAMBBQdpbkxwQW10CQDMCAIJAKQDAQUFcHJpY2UJAMwIAgkApAMBBQh0eEhlaWdodAkAzAgCCQCkAwEFC3R4VGltZXN0YW1wBQNuaWwFA1NFUAENZ2V0QWNjQmFsYW5jZQEHYXNzZXRJZAMJAAACBQdhc3NldElkAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQdhc3NldElkAQRjcGJpAghwckFtdFgxOAhhbUFtdFgxOAkAvAIDBQhwckFtdFgxOAUHc2NhbGUxOAUIYW1BbXRYMTgBA3ZhZAMCQTECQTIIc2xpcHBhZ2UEBGRpZmYJALwCAwkAuAICBQJBMQUCQTIFDHNjYWxlOEJpZ0ludAUCQTIEBHBhc3MJAL8CAgkAuAICBQhzbGlwcGFnZQkBA2FicwEFBGRpZmYFCnplcm9CaWdJbnQDCQEBIQEFBHBhc3MJAAIBCQCsAgICCkJpZyBzbHBnOiAJAKYDAQUEZGlmZgkAlAoCBQRwYXNzCQCZAwEJAMwIAgUCQTEJAMwIAgUCQTIFA25pbAECdmQDAkQxAkQwBHNscGcEBGRpZmYJALwCAwUCRDAFDHNjYWxlOEJpZ0ludAUCRDEEBGZhaWwJAL8CAgUEc2xwZwUEZGlmZgMDBQRmYWlsBgkAvwICBQJEMAUCRDEJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCmAwEFAkQwAgEgCQCmAwEFAkQxAgEgCQCmAwEFBGRpZmYCASAJAKYDAQUEc2xwZwUEZmFpbAEDcGNwBAphbUFzc2V0RGNtCnByQXNzZXREY20FYW1BbXQFcHJBbXQEC2FtdEFzQW10WDE4CQECdDECBQVhbUFtdAUKYW1Bc3NldERjbQQKcHJBc0FtdFgxOAkBAnQxAgUFcHJBbXQFCnByQXNzZXREY20JAQRjcGJpAgUKcHJBc0FtdFgxOAULYW10QXNBbXRYMTgBCmNhbGNQcmljZXMDBWFtQW10BXByQW10BWxwQW10BANjZmcJAQNncGMABAhhbXRBc0RjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwULaWR4QW10QXNEY20EB3ByQXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20ECHByaWNlWDE4CQEDcGNwBAUIYW10QXNEY20FB3ByQXNEY20FBWFtQW10BQVwckFtdAQIYW1BbXRYMTgJAQJ0MQIFBWFtQW10BQhhbXRBc0RjbQQIcHJBbXRYMTgJAQJ0MQIFBXByQW10BQdwckFzRGNtBAhscEFtdFgxOAkBAnQxAgUFbHBBbXQFBnNjYWxlOAQNbHBQckluQW1Bc1gxOAkBBGNwYmkCBQhhbUFtdFgxOAUIbHBBbXRYMTgEDWxwUHJJblByQXNYMTgJAQRjcGJpAgUIcHJBbXRYMTgFCGxwQW10WDE4CQDMCAIFCHByaWNlWDE4CQDMCAIFDWxwUHJJbkFtQXNYMTgJAMwIAgUNbHBQckluUHJBc1gxOAUDbmlsAQ9jYWxjdWxhdGVQcmljZXMDBWFtQW10BXByQW10BWxwQW10BAFwCQEKY2FsY1ByaWNlcwMFBWFtQW10BQVwckFtdAUFbHBBbXQJAMwIAgkBAmYxAgkAkQMCBQFwAAAFBnNjYWxlOAkAzAgCCQECZjECCQCRAwIFAXAAAQUGc2NhbGU4CQDMCAIJAQJmMQIJAJEDAgUBcAACBQZzY2FsZTgFA25pbAEDZWdvBAZ0eElkNTgKcG10QXNzZXRJZAhwbXRMcEFtdAt1c2VyQWRkcmVzcwQDY2ZnCQEDZ3BjAAQEbHBJZAkAkQMCBQNjZmcFCWlkeExQQXNJZAQEYW1JZAkAkQMCBQNjZmcFCWlkeEFtQXNJZAQEcHJJZAkAkQMCBQNjZmcFCWlkeFByQXNJZAQFYW1EY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAVwckRjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UHJpY2VBc0RjbQQDc3RzCQCRAwIFA2NmZwUJaWR4UG9vbFN0BAdscEVtaXNzCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUEbHBJZAILV3JvbmcgTFAgaWQIcXVhbnRpdHkDCQECIT0CBQRscElkBQpwbXRBc3NldElkCQACAQIPV3JvbmcgcG10IGFzc2V0BAlhbUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAQMYW1CYWxhbmNlWDE4CQECdDECBQlhbUJhbGFuY2UFBWFtRGNtBAlwckJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAQMcHJCYWxhbmNlWDE4CQECdDECBQlwckJhbGFuY2UFBXByRGNtBAtjdXJQcmljZVgxOAkBBGNwYmkCBQxwckJhbGFuY2VYMTgFDGFtQmFsYW5jZVgxOAQIY3VyUHJpY2UJAQJmMQIFC2N1clByaWNlWDE4BQZzY2FsZTgEC3BtdExwQW10WDE4CQECdDECBQhwbXRMcEFtdAUGc2NhbGU4BApscEVtaXNzWDE4CQECdDECBQdscEVtaXNzBQZzY2FsZTgEC291dEFtQW10WDE4CQC8AgMFDGFtQmFsYW5jZVgxOAULcG10THBBbXRYMTgFCmxwRW1pc3NYMTgEC291dFByQW10WDE4CQC8AgMFDHByQmFsYW5jZVgxOAULcG10THBBbXRYMTgFCmxwRW1pc3NYMTgECG91dEFtQW10CQECZjECBQtvdXRBbUFtdFgxOAUFYW1EY20ECG91dFByQW10CQECZjECBQtvdXRQckFtdFgxOAUFcHJEY20EBXN0YXRlAwkAAAIFBnR4SWQ1OAIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFCG91dEFtQW10AwkAAAIFBGFtSWQCBVdBVkVTBQR1bml0CQDZBAEFBGFtSWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFCG91dFByQW10AwkAAAIFBHBySWQCBVdBVkVTBQR1bml0CQDZBAEFBHBySWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBA2dhdQIJAKUIAQULdXNlckFkZHJlc3MFBnR4SWQ1OAkBEWRhdGFHZXRBY3Rpb25JbmZvBgUIb3V0QW1BbXQFCG91dFByQW10BQhwbXRMcEFtdAUIY3VyUHJpY2UFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwbAAFCGN1clByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQhjdXJQcmljZQUDbmlsCQCcCgoFCG91dEFtQW10BQhvdXRQckFtdAUEYW1JZAUEcHJJZAUJYW1CYWxhbmNlBQlwckJhbGFuY2UFB2xwRW1pc3MFC2N1clByaWNlWDE4BQNzdHMFBXN0YXRlAQNlcG8NBnR4SWQ1OAhzbGlwcGFnZQdpbkFtQW10BmluQW1JZAdpblByQW10BmluUHJJZAt1c2VyQWRkcmVzcwZpc0V2YWwGZW1pdExwCmlzT25lQXNzZXQQdmFsaWRhdGVTbGlwcGFnZQZwbXRBbXQFcG10SWQEA2NmZwkBA2dwYwAEBGxwSWQJANkEAQkAkQMCBQNjZmcFCWlkeExQQXNJZAQHYW1JZFN0cgkAkQMCBQNjZmcFCWlkeEFtQXNJZAQHcHJJZFN0cgkAkQMCBQNjZmcFCWlkeFByQXNJZAQJaW5BbUlkU3RyCQCRAwIFA2NmZwULaWR4SUFtdEFzSWQECWluUHJJZFN0cgkAkQMCBQNjZmcFDWlkeElQcmljZUFzSWQEBmFtdERjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwULaWR4QW10QXNEY20ECHByaWNlRGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ1pZHhQcmljZUFzRGNtBANzdHMJAJEDAgUDY2ZnBQlpZHhQb29sU3QEBGxwRW0ICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUEbHBJZAIIV3IgbHAgYXMIcXVhbnRpdHkECWFtQmFsYW5jZQMFBmlzRXZhbAkBDWdldEFjY0JhbGFuY2UBBQdhbUlkU3RyAwMFCmlzT25lQXNzZXQJAAACBQVwbXRJZAUHYW1JZFN0cgcJAGUCCQENZ2V0QWNjQmFsYW5jZQEFB2FtSWRTdHIFBnBtdEFtdAMFCmlzT25lQXNzZXQJAQ1nZXRBY2NCYWxhbmNlAQUHYW1JZFN0cgkAZQIJAQ1nZXRBY2NCYWxhbmNlAQUHYW1JZFN0cgUHaW5BbUFtdAQJcHJCYWxhbmNlAwUGaXNFdmFsCQENZ2V0QWNjQmFsYW5jZQEFB3BySWRTdHIDAwUKaXNPbmVBc3NldAkAAAIFBXBtdElkBQdwcklkU3RyBwkAZQIJAQ1nZXRBY2NCYWxhbmNlAQUHcHJJZFN0cgUGcG10QW10AwUKaXNPbmVBc3NldAkBDWdldEFjY0JhbGFuY2UBBQdwcklkU3RyCQBlAgkBDWdldEFjY0JhbGFuY2UBBQdwcklkU3RyBQdpblByQW10BA9pbkFtQXNzZXRBbXRYMTgJAQJ0MQIFB2luQW1BbXQFBmFtdERjbQQPaW5QckFzc2V0QW10WDE4CQECdDECBQdpblByQW10BQhwcmljZURjbQQMdXNlclByaWNlWDE4CQEEY3BiaQIFD2luUHJBc3NldEFtdFgxOAUPaW5BbUFzc2V0QW10WDE4BAxhbUJhbGFuY2VYMTgJAQJ0MQIFCWFtQmFsYW5jZQUGYW10RGNtBAxwckJhbGFuY2VYMTgJAQJ0MQIFCXByQmFsYW5jZQUIcHJpY2VEY20EAXIDCQAAAgUEbHBFbQAABAtjdXJQcmljZVgxOAUKemVyb0JpZ0ludAQLc2xpcHBhZ2VYMTgFCnplcm9CaWdJbnQECGxwQW10WDE4CQB2BgkAuQICBQ9pbkFtQXNzZXRBbXRYMTgFD2luUHJBc3NldEFtdFgxOAAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAmYxAgUIbHBBbXRYMTgFBnNjYWxlOAkBAmYxAgUPaW5BbUFzc2V0QW10WDE4BQZhbXREY20JAQJmMQIFD2luUHJBc3NldEFtdFgxOAUIcHJpY2VEY20JAQRjcGJpAgkAtwICBQxwckJhbGFuY2VYMTgFD2luUHJBc3NldEFtdFgxOAkAtwICBQxhbUJhbGFuY2VYMTgFD2luQW1Bc3NldEFtdFgxOAULc2xpcHBhZ2VYMTgEC2N1clByaWNlWDE4CQEEY3BiaQIFDHByQmFsYW5jZVgxOAUMYW1CYWxhbmNlWDE4BA9zbGlwcGFnZVJlYWxYMTgJALwCAwkBA2FicwEJALgCAgULY3VyUHJpY2VYMTgFDHVzZXJQcmljZVgxOAUHc2NhbGUxOAULY3VyUHJpY2VYMTgEC3NsaXBwYWdlWDE4CQECdDECBQhzbGlwcGFnZQUGc2NhbGU4AwMDBRB2YWxpZGF0ZVNsaXBwYWdlCQECIT0CBQtjdXJQcmljZVgxOAUKemVyb0JpZ0ludAcJAL8CAgUPc2xpcHBhZ2VSZWFsWDE4BQtzbGlwcGFnZVgxOAcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUPc2xpcHBhZ2VSZWFsWDE4AgMgPiAJAKYDAQULc2xpcHBhZ2VYMTgEDWxwRW1pc3Npb25YMTgJAQJ0MQIFBGxwRW0FBnNjYWxlOAQKcHJWaWFBbVgxOAkAvAIDBQ9pbkFtQXNzZXRBbXRYMTgFC2N1clByaWNlWDE4BQdzY2FsZTE4BAphbVZpYVByWDE4CQC8AgMFD2luUHJBc3NldEFtdFgxOAUHc2NhbGUxOAULY3VyUHJpY2VYMTgEDGV4cGVjdGVkQW10cwMJAL8CAgUKcHJWaWFBbVgxOAUPaW5QckFzc2V0QW10WDE4CQCUCgIFCmFtVmlhUHJYMTgFD2luUHJBc3NldEFtdFgxOAkAlAoCBQ9pbkFtQXNzZXRBbXRYMTgFCnByVmlhQW1YMTgEEWV4cEFtdEFzc2V0QW10WDE4CAUMZXhwZWN0ZWRBbXRzAl8xBBNleHBQcmljZUFzc2V0QW10WDE4CAUMZXhwZWN0ZWRBbXRzAl8yBAhscEFtdFgxOAkAvAIDBQ1scEVtaXNzaW9uWDE4BRNleHBQcmljZUFzc2V0QW10WDE4BQxwckJhbGFuY2VYMTgJAJcKBQkBAmYxAgUIbHBBbXRYMTgFBnNjYWxlOAkBAmYxAgURZXhwQW10QXNzZXRBbXRYMTgFBmFtdERjbQkBAmYxAgUTZXhwUHJpY2VBc3NldEFtdFgxOAUIcHJpY2VEY20FC2N1clByaWNlWDE4BQtzbGlwcGFnZVgxOAQJY2FsY0xwQW10CAUBcgJfMQQOY2FsY0FtQXNzZXRQbXQIBQFyAl8yBA5jYWxjUHJBc3NldFBtdAgFAXICXzMECGN1clByaWNlCQECZjECCAUBcgJfNAUGc2NhbGU4BAxzbGlwcGFnZUNhbGMJAQJmMQIIBQFyAl81BQZzY2FsZTgDCQBnAgAABQljYWxjTHBBbXQJAAIBAgdMUCA8PSAwBAllbWl0THBBbXQDCQEBIQEFBmVtaXRMcAAABQljYWxjTHBBbXQEBmFtRGlmZgkAZQIFB2luQW1BbXQFDmNhbGNBbUFzc2V0UG10BAZwckRpZmYJAGUCBQdpblByQW10BQ5jYWxjUHJBc3NldFBtdAQNJHQwMTYwODMxNjQyOAMDBQppc09uZUFzc2V0CQAAAgUFcG10SWQFB2FtSWRTdHIHCQCUCgIFBnBtdEFtdAAAAwMFCmlzT25lQXNzZXQJAAACBQVwbXRJZAUHcHJJZFN0cgcJAJQKAgAABQZwbXRBbXQJAJQKAgUOY2FsY0FtQXNzZXRQbXQFDmNhbGNQckFzc2V0UG10BAp3cml0ZUFtQW10CAUNJHQwMTYwODMxNjQyOAJfMQQKd3JpdGVQckFtdAgFDSR0MDE2MDgzMTY0MjgCXzIEC2NvbW1vblN0YXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGwABQhjdXJQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBoAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUIY3VyUHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkBA3BhdQIFC3VzZXJBZGRyZXNzBQZ0eElkNTgJARFkYXRhUHV0QWN0aW9uSW5mbwoFCndyaXRlQW1BbXQFCndyaXRlUHJBbXQFCWVtaXRMcEFtdAUIY3VyUHJpY2UFCHNsaXBwYWdlBQxzbGlwcGFnZUNhbGMFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFBmFtRGlmZgUGcHJEaWZmBQNuaWwJAJ8KDQUJY2FsY0xwQW10BQllbWl0THBBbXQFCGN1clByaWNlBQlhbUJhbGFuY2UFCXByQmFsYW5jZQUEbHBFbQUEbHBJZAUDc3RzBQtjb21tb25TdGF0ZQUGYW1EaWZmBQZwckRpZmYFBmluQW1JZAUGaW5QcklkAQNtb2EBBW9yZGVyBANjZmcJAQNncGMABAdhbXRBc0lkCQCRAwIFA2NmZwUJaWR4QW1Bc0lkBAZwckFzSWQJAJEDAgUDY2ZnBQlpZHhQckFzSWQEA3N0cwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUJaWR4UG9vbFN0BAhhbXRBc0RjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwULaWR4QW10QXNEY20EB3ByQXNEY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDWlkeFByaWNlQXNEY20ED2FjY0FtdEFzQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQdhbXRBc0lkBA5hY2NQckFzQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQZwckFzSWQEC2N1clByaWNlWDE4AwkAAAIIBQVvcmRlcglvcmRlclR5cGUFA0J1eQkBA3BjcAQFCGFtdEFzRGNtBQdwckFzRGNtCQBkAgUPYWNjQW10QXNCYWxhbmNlCAUFb3JkZXIGYW1vdW50BQ5hY2NQckFzQmFsYW5jZQkBA3BjcAQFCGFtdEFzRGNtBQdwckFzRGNtCQBlAgUPYWNjQW10QXNCYWxhbmNlCAUFb3JkZXIGYW1vdW50BQ5hY2NQckFzQmFsYW5jZQQIY3VyUHJpY2UJAQJmMQIFC2N1clByaWNlWDE4BQZzY2FsZTgDAwMJAQNpZ3MABgkAAAIFA3N0cwUOUG9vbE1hdGNoZXJEaXMGCQAAAgUDc3RzBQxQb29sU2h1dGRvd24JAAIBAg1BZG1pbiBibG9ja2VkBApvckFtdEFzc2V0CAgFBW9yZGVyCWFzc2V0UGFpcgthbW91bnRBc3NldAQKb3JBbXRBc1N0cgMJAAACBQpvckFtdEFzc2V0BQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQpvckFtdEFzc2V0BAlvclByQXNzZXQICAUFb3JkZXIJYXNzZXRQYWlyCnByaWNlQXNzZXQECW9yUHJBc1N0cgMJAAACBQlvclByQXNzZXQFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFCW9yUHJBc3NldAMDCQECIT0CBQpvckFtdEFzU3RyBQdhbXRBc0lkBgkBAiE9AgUJb3JQckFzU3RyBQZwckFzSWQJAAIBAglXciBhc3NldHMECm9yZGVyUHJpY2UIBQVvcmRlcgVwcmljZQQIcHJpY2VEY20JAGsDBQZzY2FsZTgFB3ByQXNEY20FCGFtdEFzRGNtBA5jYXN0T3JkZXJQcmljZQkBAnRzAwUKb3JkZXJQcmljZQUGc2NhbGU4BQhwcmljZURjbQQRaXNPcmRlclByaWNlVmFsaWQDCQAAAggFBW9yZGVyCW9yZGVyVHlwZQUDQnV5CQBnAgUIY3VyUHJpY2UFDmNhc3RPcmRlclByaWNlCQBnAgUOY2FzdE9yZGVyUHJpY2UFCGN1clByaWNlBgECY2cBAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAgoxIHBtbnQgZXhwBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQKcG10QXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAZwbXRBbXQIBQNwbXQGYW1vdW50BAFyCQEDZWdvBAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEFCnBtdEFzc2V0SWQFBnBtdEFtdAgFAWkGY2FsbGVyBAhvdXRBbUFtdAgFAXICXzEECG91dFByQW10CAUBcgJfMgQDc3RzCQENcGFyc2VJbnRWYWx1ZQEIBQFyAl85BAVzdGF0ZQgFAXIDXzEwAwMJAQNpZ3MABgkAAAIFA3N0cwUMUG9vbFNodXRkb3duCQACAQkArAICAg9BZG1pbiBibG9ja2VkOiAJAKQDAQUDc3RzCQCXCgUFCG91dEFtQW10BQhvdXRQckFtdAUGcG10QW10BQpwbXRBc3NldElkBQVzdGF0ZQECY3AKBmNhbGxlcgR0eElkB2FtQXNQbXQHcHJBc1BtdAhzbGlwcGFnZQZlbWl0THAKaXNPbmVBc3NldBB2YWxpZGF0ZVNsaXBwYWdlBnBtdEFtdAVwbXRJZAQBcgkBA2Vwbw0FBHR4SWQFCHNsaXBwYWdlCAkBBXZhbHVlAQUHYW1Bc1BtdAZhbW91bnQICQEFdmFsdWUBBQdhbUFzUG10B2Fzc2V0SWQICQEFdmFsdWUBBQdwckFzUG10BmFtb3VudAgJAQV2YWx1ZQEFB3ByQXNQbXQHYXNzZXRJZAUGY2FsbGVyBwUGZW1pdExwBQppc09uZUFzc2V0BRB2YWxpZGF0ZVNsaXBwYWdlBQZwbXRBbXQFBXBtdElkBANzdHMJAQ1wYXJzZUludFZhbHVlAQgFAXICXzgDAwMJAQNpZ3MABgkAAAIFA3N0cwUKUG9vbFB1dERpcwYJAAACBQNzdHMFDFBvb2xTaHV0ZG93bgkAAgEJAKwCAgIIQmxvY2tlZDoJAKQDAQUDc3RzBQFyARNlc3RpbWF0ZVB1dE9uZVRrblYyBAZwbXRBbXQKcG10QXNzZXRJZAt1c2VyQWRkcmVzcwR0eElkBApwb29sQ29uZmlnCQEDZ3BjAAQEYW1JZAkAkQMCBQpwb29sQ29uZmlnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUKcG9vbENvbmZpZwUJaWR4UHJBc0lkBAlhbUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQEDSR0MDIwNzUxMjExMjUDCQAAAgUKcG10QXNzZXRJZAUEYW1JZAMJAGYCBQZwbXRBbXQFCWFtQmFsYW5jZQkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgkAZQIFCWFtQmFsYW5jZQUGcG10QW10BQlwckJhbGFuY2UDCQAAAgUKcG10QXNzZXRJZAUEcHJJZAMJAGYCBQZwbXRBbXQFCXByQmFsYW5jZQkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgUJYW1CYWxhbmNlCQBlAgUJcHJCYWxhbmNlBQZwbXRBbXQJAAIBAhB3cm9uZyBwbXRBc3NldElkBAxhbUJhbGFuY2VOb3cIBQ0kdDAyMDc1MTIxMTI1Al8xBAxwckJhbGFuY2VOb3cIBQ0kdDAyMDc1MTIxMTI1Al8yBA0kdDAyMTEyOTIxMjYzAwkAAAIFCnBtdEFzc2V0SWQFBGFtSWQJAJQKAgUMYW1CYWxhbmNlTm93BQxwckJhbGFuY2VOb3cJAJQKAgUMcHJCYWxhbmNlTm93BQxhbUJhbGFuY2VOb3cEEGFtQmFsYW5jZUZvckNhbGMIBQ0kdDAyMTEyOTIxMjYzAl8xBBBwckJhbGFuY2VGb3JDYWxjCAUNJHQwMjExMjkyMTI2MwJfMgQKeFByZWNpc2lvbgABBAZyZXN1bHQKAAFACQD8BwQFC2d3eENvbnRyYWN0AgxjYWxjUHV0WE9ubHkJAMwIAgkApAMBBQZwbXRBbXQJAMwIAgkApAMBBRBhbUJhbGFuY2VGb3JDYWxjCQDMCAIJAKQDAQUQcHJCYWxhbmNlRm9yQ2FsYwkAzAgCAgAJAMwIAgUBQQkAzAgCBQVBbXVsdAkAzAgCCQCkAwEFCnhQcmVjaXNpb24JAMwIAgUFRGNvbnYFA25pbAUDbmlsAwkAAQIFAUACCihJbnQsIEludCkFAUAJAAIBCQCsAgIJAAMBCQD8BwQFC2d3eENvbnRyYWN0AgxjYWxjUHV0WE9ubHkJAMwIAgkApAMBBQZwbXRBbXQJAMwIAgkApAMBBRBhbUJhbGFuY2VGb3JDYWxjCQDMCAIJAKQDAQUQcHJCYWxhbmNlRm9yQ2FsYwkAzAgCAgAJAMwIAgUBQQkAzAgCBQVBbXVsdAkAzAgCCQCkAwEFCnhQcmVjaXNpb24JAMwIAgUFRGNvbnYFA25pbAUDbmlsAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBA0kdDAyMTczMjIxODI4AwkAAAIFCnBtdEFzc2V0SWQFBGFtSWQFBnJlc3VsdAkAlAoCCAUGcmVzdWx0Al8yCAUGcmVzdWx0Al8xBAthbUFzc2V0UGFydAgFDSR0MDIxNzMyMjE4MjgCXzEEC3ByQXNzZXRQYXJ0CAUNJHQwMjE3MzIyMTgyOAJfMgQGZXN0UHV0CQECY3AKBQt1c2VyQWRkcmVzcwUEdHhJZAkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUEYW1JZAULYW1Bc3NldFBhcnQJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFBHBySWQFC3ByQXNzZXRQYXJ0AAAGBgcFBnBtdEFtdAUKcG10QXNzZXRJZAQHZXN0aW1MUAgFBmVzdFB1dAJfMgQJbHBBc3NldElkCAUGZXN0UHV0Al83BAVzdGF0ZQgFBmVzdFB1dAJfOQQGYW1EaWZmCAUGZXN0UHV0A18xMAQGcHJEaWZmCAUGZXN0UHV0A18xMQkAlwoFBQdlc3RpbUxQBQlscEFzc2V0SWQFBXN0YXRlBQZhbURpZmYFBnByRGlmZgEBbQAEByRtYXRjaDAJAKIIAQkBA21wawADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJwbQAEByRtYXRjaDAJAKIIAQkBBHBtcGsAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACcGQJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECbW0BAWkEByRtYXRjaDAJAQFtAAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkFAnBrBgUCcGQDCQABAgUHJG1hdGNoMAIEVW5pdAMJAAACCAUBaQZjYWxsZXIFBHRoaXMGBQJwZAkAAgECC01hdGNoIGVycm9yGgFpAQtjb25zdHJ1Y3RvcgECZmMEAWMJAQJtbQEFAWkDCQAAAgUBYwUBYwkAzAgCCQELU3RyaW5nRW50cnkCCQECZmMABQJmYwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnNldE1hbmFnZXIBF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BAFjCQECbW0BBQFpAwkAAAIFAWMFAWMEAmNtCQDZBAEFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAIFAmNtBQJjbQkAzAgCCQELU3RyaW5nRW50cnkCCQEEcG1wawAFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOY29uZmlybU1hbmFnZXIABAFwCQECcG0ABANocG0DCQEJaXNEZWZpbmVkAQUBcAYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUDaHBtBQNocG0EA2NwbQMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAXAGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFA2NwbQUDY3BtCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNtcGsACQDYBAEJAQV2YWx1ZQEFAXAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBBHBtcGsABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEDcHV0AgRzbGlwCWF1dG9TdGFrZQQHZmFjdENmZwkBA2dmYwAEC3N0YWtpbmdDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdmYWN0Q2ZnBQ9pZHhGYWN0U3Rha0NudHICCldyIHN0IGFkZHIECHNsaXBDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdmYWN0Q2ZnBRBpZHhGYWN0U2xpcHBDbnRyAgpXciBzbCBhZGRyAwkAZgIAAAUEc2xpcAkAAgECDldyb25nIHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAFlCQECY3AKCQClCAEIBQFpBmNhbGxlcgkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAkQMCCAUBaQhwYXltZW50cwABBQRzbGlwBgcGAAACAAQJZW1pdExwQW10CAUBZQJfMgQJbHBBc3NldElkCAUBZQJfNwQFc3RhdGUIBQFlAl85BAZhbURpZmYIBQFlA18xMAQGcHJEaWZmCAUBZQNfMTEEBGFtSWQIBQFlA18xMgQEcHJJZAgFAWUDXzEzBAFyCQD8BwQFA2ZjYQIEZW1pdAkAzAgCBQllbWl0THBBbXQFA25pbAUDbmlsAwkAAAIFAXIFAXIEAmVsBAckbWF0Y2gwBQFyAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEBmxlZ2FjeQUHJG1hdGNoMAkA/AcEBQZsZWdhY3kCBGVtaXQJAMwIAgUJZW1pdExwQW10BQNuaWwFA25pbAUEdW5pdAMJAAACBQJlbAUCZWwEAnNhAwkAZgIFBmFtRGlmZgAACQD8BwQFCHNsaXBDbnRyAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEYW1JZAUGYW1EaWZmBQNuaWwFA25pbAMJAAACBQJzYQUCc2EEAnNwAwkAZgIFBnByRGlmZgAACQD8BwQFCHNsaXBDbnRyAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEcHJJZAUGcHJEaWZmBQNuaWwFA25pbAMJAAACBQJzcAUCc3AECGxwVHJuc2ZyAwUJYXV0b1N0YWtlBAJzcwkA/AcEBQtzdGFraW5nQ250cgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUJbHBBc3NldElkBQllbWl0THBBbXQFA25pbAMJAAACBQJzcwUCc3MFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCWVtaXRMcEFtdAUJbHBBc3NldElkBQNuaWwJAM4IAgUFc3RhdGUFCGxwVHJuc2ZyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCXB1dE9uZVRrbgULYW1Bc3NldFBhcnQLcHJBc3NldFBhcnQFb3V0THAIc2xpcHBhZ2UJYXV0b1N0YWtlBANjZmcJAQNnZmMABAtzdGFraW5nQ250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUDY2ZnBQ9pZHhGYWN0U3Rha0NudHICCldyIHN0IGFkZHIECHNsaXBDbnRyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQNjZmcFEGlkeEZhY3RTbGlwcENudHICCldyIHNsIGFkZHIEB2d3eENudHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFA2NmZwURaWR4RmFjdEd3eFJld0NudHICC1dyIGd3eCBhZGRyBAdwb29sQ2ZnCQEDZ3BjAAQEYW1JZAkAkQMCBQdwb29sQ2ZnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUHcG9vbENmZwUJaWR4UHJBc0lkBAVhbURjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3Bvb2xDZmcFC2lkeEFtdEFzRGNtBAVwckRjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFB3Bvb2xDZmcFDWlkeFByaWNlQXNEY20EBWFkZG9uCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQNhZGEAAgAEC3VzZXJBZGRyZXNzAwkAAAIFBWFkZG9uCQClCAEIBQFpBmNhbGxlcggFAWkMb3JpZ2luQ2FsbGVyCAUBaQZjYWxsZXIEDWFkZG9uQ29udHJhY3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBA2FkYQACCW5vIGFkZG9ucwIaYWRkb24gYWRkcmVzcyBpbiBub3QgdmFsaWQEBWNoZWNrCQD9BwQFDWFkZG9uQ29udHJhY3QCEmVuc3VyZUNhblB1dE9uZVRrbgkAzAgCCQClCAEFC3VzZXJBZGRyZXNzBQNuaWwFA25pbAMJAAACBQVjaGVjawUFY2hlY2sDAwMDCQBnAgAABQhzbGlwcGFnZQYJAGcCAAAFC2FtQXNzZXRQYXJ0BgkAZwIAAAULcHJBc3NldFBhcnQGCQBnAgAABQVvdXRMcAkAAgECDFdyb25nIHBhcmFtcwMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECCzEgcG1udCBleHBkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQKcG10QXNzZXRJZAkA2AQBCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEBnBtdEFtdAgFA3BtdAZhbW91bnQDCQBmAgCAreIEBQZwbXRBbXQJAAIBAg1Xcm9uZyBwbXQgYW10BAlhbUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQEDSR0MDI3MjM4Mjc4MTQDCQAAAgUKcG10QXNzZXRJZAUEYW1JZAMDCQBmAgUGcG10QW10BQlhbUJhbGFuY2UGCQBmAgULYW1Bc3NldFBhcnQFBnBtdEFtdAkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJgKBgkAZQIFCWFtQmFsYW5jZQUGcG10QW10BQlwckJhbGFuY2UJAGUCBQZwbXRBbXQFC2FtQXNzZXRQYXJ0BQtwckFzc2V0UGFydAAAAAADCQAAAgUKcG10QXNzZXRJZAUEcHJJZAMDCQBmAgUGcG10QW10BQlwckJhbGFuY2UGCQBmAgULcHJBc3NldFBhcnQFBnBtdEFtdAkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJgKBgUJYW1CYWxhbmNlCQBlAgUJcHJCYWxhbmNlBQZwbXRBbXQAAAAACQBlAgUGcG10QW10BQtwckFzc2V0UGFydAULYW1Bc3NldFBhcnQJAAIBAhB3cm9uZyBwbXRBc3NldElkBAxhbUJhbGFuY2VOb3cIBQ0kdDAyNzIzODI3ODE0Al8xBAxwckJhbGFuY2VOb3cIBQ0kdDAyNzIzODI3ODE0Al8yBAx2aXJ0U3dhcEluQW0IBQ0kdDAyNzIzODI3ODE0Al8zBA12aXJ0U3dhcE91dFByCAUNJHQwMjcyMzgyNzgxNAJfNAQMdmlydFN3YXBJblByCAUNJHQwMjcyMzgyNzgxNAJfNQQNdmlydFN3YXBPdXRBbQgFDSR0MDI3MjM4Mjc4MTQCXzYEAkQwCQD8BwQFB2d3eENudHICBWNhbGNECQDMCAIJAKQDAQUMYW1CYWxhbmNlTm93CQDMCAIJAKQDAQUMcHJCYWxhbmNlTm93CQDMCAIFAUEJAMwIAgUFQW11bHQJAMwIAgUFRGNvbnYFA25pbAUDbmlsBAJEMQkA/AcEBQdnd3hDbnRyAgVjYWxjRAkAzAgCCQCmAwEJALYCAQkAZQIJAGQCBQxhbUJhbGFuY2VOb3cFDHZpcnRTd2FwSW5BbQUNdmlydFN3YXBPdXRBbQkAzAgCCQCmAwEJALYCAQkAZQIJAGQCBQxwckJhbGFuY2VOb3cFDHZpcnRTd2FwSW5QcgUNdmlydFN3YXBPdXRQcgkAzAgCBQFBCQDMCAIFBUFtdWx0CQDMCAIFBURjb252BQNuaWwFA25pbAQGRDB2c0QxCQECdmQDCQCnAwEJAQNzdHIBBQJEMQkApwMBCQEDc3RyAQUCRDAFCnNsaXBwYWdlNEQDCQAAAgUGRDB2c0QxBQZEMHZzRDEEBmVzdFB1dAkBAmNwCgkApQgBCAUBaQZjYWxsZXIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUEYW1JZAULYW1Bc3NldFBhcnQJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFBHBySWQFC3ByQXNzZXRQYXJ0BQhzbGlwcGFnZQYGBgUGcG10QW10BQpwbXRBc3NldElkBAdlc3RpbUxQCAUGZXN0UHV0Al8yBAlscEFzc2V0SWQIBQZlc3RQdXQCXzcEBXN0YXRlCAUGZXN0UHV0Al85BAZhbURpZmYIBQZlc3RQdXQDXzEwBAZwckRpZmYIBQZlc3RQdXQDXzExBAlscENhbGNSZXMJAQN2YWQDCQC2AgEFB2VzdGltTFAJALYCAQUFb3V0THAJALYCAQUIc2xpcHBhZ2UECWVtaXRMcEFtdAkAoAMBCAUJbHBDYWxjUmVzAl8yBAFlCQD8BwQFA2ZjYQIEZW1pdAkAzAgCBQllbWl0THBBbXQFA25pbAUDbmlsAwkAAAIFAWUFAWUEAmVsBAckbWF0Y2gwBQFlAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEBmxlZ2FjeQUHJG1hdGNoMAkA/AcEBQZsZWdhY3kCBGVtaXQJAMwIAgUJZW1pdExwQW10BQNuaWwFA25pbAUEdW5pdAMJAAACBQJlbAUCZWwEAnNhAwkAZgIFBmFtRGlmZgAACQD8BwQFCHNsaXBDbnRyAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQRhbUlkBQZhbURpZmYFA25pbAUDbmlsAwkAAAIFAnNhBQJzYQQCc3ADCQBmAgUGcHJEaWZmAAAJAPwHBAUIc2xpcENudHICA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFBHBySWQFBnByRGlmZgUDbmlsBQNuaWwDCQAAAgUCc3AFAnNwBAhscFRybnNmcgMFCWF1dG9TdGFrZQQCc3MJAPwHBAULc3Rha2luZ0NudHICBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCWxwQXNzZXRJZAUJZW1pdExwQW10BQNuaWwDCQAAAgUCc3MFAnNzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQllbWl0THBBbXQFCWxwQXNzZXRJZAUDbmlsCQDOCAIFBXN0YXRlBQhscFRybnNmcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQtwdXRPbmVUa25WMgIMbWluT3V0QW1vdW50CWF1dG9TdGFrZQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECCzEgcG1udCBleHBkBApwb29sQ29uZmlnCQEDZ3BjAAQEYW1JZAkAkQMCBQpwb29sQ29uZmlnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUKcG9vbENvbmZpZwUJaWR4UHJBc0lkBAphbURlY2ltYWxzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbENvbmZpZwULaWR4QW10QXNEY20ECnByRGVjaW1hbHMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBQ1pZHhQcmljZUFzRGNtBAt1c2VyQWRkcmVzcwMJAAACCAUBaQZjYWxsZXIFBHRoaXMIBQFpDG9yaWdpbkNhbGxlcggFAWkGY2FsbGVyBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQKcG10QXNzZXRJZAkA2AQBCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEBnBtdEFtdAgFA3BtdAZhbW91bnQDCQBmAgCAreIEBQZwbXRBbXQJAAIBAg1Xcm9uZyBwbXQgYW10BA0kdDAzMDUyMzMwNjcwCQETZXN0aW1hdGVQdXRPbmVUa25WMgQFBnBtdEFtdAUKcG10QXNzZXRJZAkApQgBBQt1c2VyQWRkcmVzcwkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBAdlc3RpbUxQCAUNJHQwMzA1MjMzMDY3MAJfMQQJbHBBc3NldElkCAUNJHQwMzA1MjMzMDY3MAJfMgQFc3RhdGUIBQ0kdDAzMDUyMzMwNjcwAl8zBAZhbURpZmYIBQ0kdDAzMDUyMzMwNjcwAl80BAZwckRpZmYIBQ0kdDAzMDUyMzMwNjcwAl81BAllbWl0THBBbXQDAwkAZgIFDG1pbk91dEFtb3VudAAACQBmAgUMbWluT3V0QW1vdW50BQdlc3RpbUxQBwkAAgEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUMbWluT3V0QW1vdW50BQNuaWwCAAUHZXN0aW1MUAQBZQkA/AcEBQNmY2ECBGVtaXQJAMwIAgUJZW1pdExwQW10BQNuaWwFA25pbAMJAAACBQFlBQFlBAJlbAQHJG1hdGNoMAUBZQMJAAECBQckbWF0Y2gwAgdBZGRyZXNzBAZsZWdhY3kFByRtYXRjaDAJAPwHBAUGbGVnYWN5AgRlbWl0CQDMCAIFCWVtaXRMcEFtdAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZWwFAmVsBAJzYQMJAGYCBQZhbURpZmYAAAkA/AcEBQ9zbGlwYWdlQ29udHJhY3QCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFBGFtSWQFBmFtRGlmZgUDbmlsBQNuaWwDCQAAAgUCc2EFAnNhBAJzcAMJAGYCBQZwckRpZmYAAAkA/AcEBQ9zbGlwYWdlQ29udHJhY3QCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFBHBySWQFBnByRGlmZgUDbmlsBQNuaWwDCQAAAgUCc3AFAnNwBAhscFRybnNmcgMFCWF1dG9TdGFrZQQCc3MJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQlscEFzc2V0SWQFCWVtaXRMcEFtdAUDbmlsAwkAAAIFAnNzBQJzcwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUJZW1pdExwQW10BQlscEFzc2V0SWQFA25pbAkAlAoCCQDOCAIFBXN0YXRlBQhscFRybnNmcgUJZW1pdExwQW10CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBE3B1dE9uZVRrblYyUkVBRE9OTFkCDXBheW1lbnRBbW91bnQOcGF5bWVudEFzc2V0SWQEDSR0MDMxNzU1MzE4NjMJARNlc3RpbWF0ZVB1dE9uZVRrblYyBAUNcGF5bWVudEFtb3VudAUOcGF5bWVudEFzc2V0SWQCAAIABAdlc3RpbUxQCAUNJHQwMzE3NTUzMTg2MwJfMQQJbHBBc3NldElkCAUNJHQwMzE3NTUzMTg2MwJfMgQFc3RhdGUIBQ0kdDAzMTc1NTMxODYzAl8zBAZhbURpZmYIBQ0kdDAzMTc1NTMxODYzAl80BAZwckRpZmYIBQ0kdDAzMTc1NTMxODYzAl81CQCUCgIFA25pbAUHZXN0aW1MUAFpAQpwdXRGb3JGcmVlAQdtYXhTbHBnAwkAZgIAAAUHbWF4U2xwZwkAAgECCldyb25nIHNscGcDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEBmVzdFB1dAkBAmNwCgkApQgBCAUBaQZjYWxsZXIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAWkIcGF5bWVudHMAAQUHbWF4U2xwZwcHBgAAAgAIBQZlc3RQdXQCXzkBaQEDZ2V0AAQBcgkBAmNnAQUBaQQJb3V0QW10QW10CAUBcgJfMQQIb3V0UHJBbXQIBQFyAl8yBAZwbXRBbXQIBQFyAl8zBApwbXRBc3NldElkCAUBcgJfNAQFc3RhdGUIBQFyAl81BAFiCQD8BwQFA2ZjYQIEYnVybgkAzAgCBQZwbXRBbXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUKcG10QXNzZXRJZAUGcG10QW10BQNuaWwDCQAAAgUBYgUBYgUFc3RhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJZ2V0T25lVGtuBQpleGNoUmVzdWx0B25vdFVzZWQJb3V0QW1vdW50Cm91dEFzc2V0SWQIc2xpcHBhZ2UDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAgsxIHBtbnQgZXhwZAQDY2ZnCQEDZ3BjAAQEbHBJZAkAkQMCBQNjZmcFCWlkeExQQXNJZAQEYW1JZAkAkQMCBQNjZmcFCWlkeEFtQXNJZAQEcHJJZAkAkQMCBQNjZmcFCWlkeFByQXNJZAQFYW1EY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFC2lkeEFtdEFzRGNtBAVwckRjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUNaWR4UHJpY2VBc0RjbQQDc3RzCQCRAwIFA2NmZwUJaWR4UG9vbFN0BAdmYWN0Q2ZnCQEDZ2ZjAAQHZ3d4Q250cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUHZmFjdENmZwURaWR4RmFjdEd3eFJld0NudHICCldyIHNsIGFkZHIEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAVhZGRvbgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEDYWRhAAIABAt1c2VyQWRkcmVzcwMJAAACBQVhZGRvbgkApQgBCAUBaQZjYWxsZXIIBQFpDG9yaWdpbkNhbGxlcggFAWkGY2FsbGVyBAZ0eElkNTgJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAQKcG10QXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAZwbXRBbXQIBQNwbXQGYW1vdW50BA1hZGRvbkNvbnRyYWN0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJAQNhZGEAAglubyBhZGRvbnMCGmFkZG9uIGFkZHJlc3MgaW4gbm90IHZhbGlkBAVjaGVjawkA/QcEBQ1hZGRvbkNvbnRyYWN0AhJlbnN1cmVDYW5HZXRPbmVUa24JAMwIAgkApQgBBQt1c2VyQWRkcmVzcwUDbmlsBQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrAwkAZgIAgJTr3AMFBnBtdEFtdAkAAgECDU1pbiBwbXQgMTAgTFADAwMJAGYCAAAFCHNsaXBwYWdlBgkAZgIAAAUKZXhjaFJlc3VsdAYJAGYCAAAFCW91dEFtb3VudAkAAgECDFdyb25nIHBhcmFtcwMJAQIhPQIFBGxwSWQJANgEAQUKcG10QXNzZXRJZAkAAgECCFdyb25nIExQBAFyCQEDZWdvBAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEFCnBtdEFzc2V0SWQFBnBtdEFtdAgFAWkGY2FsbGVyBAplc3RpbUFtQW10CAUBcgJfMQQKZXN0aW1QckFtdAgFAXICXzIECWFtQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQRhbUlkBAlwckJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAQNJHQwMzQ5MDEzNTM1OAMJAAACBQpvdXRBc3NldElkBQRhbUlkCQCZCgcJAGUCBQlhbUJhbGFuY2UFCmVzdGltQW1BbXQJAGUCBQlwckJhbGFuY2UFCmVzdGltUHJBbXQFCmV4Y2hSZXN1bHQFCmVzdGltUHJBbXQAAAAACQBkAgUKZXN0aW1BbUFtdAUKZXhjaFJlc3VsdAMJAAACBQpvdXRBc3NldElkBQRwcklkCQCZCgcJAGUCBQlhbUJhbGFuY2UFCmVzdGltQW1BbXQJAGUCBQlwckJhbGFuY2UFCmVzdGltUHJBbXQAAAAABQpleGNoUmVzdWx0BQplc3RpbUFtQW10CQBkAgUKZXN0aW1QckFtdAUKZXhjaFJlc3VsdAkAAgECEHdyb25nIG91dEFzc2V0SWQEDGFtQmFsYW5jZU5vdwgFDSR0MDM0OTAxMzUzNTgCXzEEDHByQmFsYW5jZU5vdwgFDSR0MDM0OTAxMzUzNTgCXzIEDHZpcnRTd2FwSW5BbQgFDSR0MDM0OTAxMzUzNTgCXzMEDXZpcnRTd2FwT3V0UHIIBQ0kdDAzNDkwMTM1MzU4Al80BAx2aXJ0U3dhcEluUHIIBQ0kdDAzNDkwMTM1MzU4Al81BA12aXJ0U3dhcE91dEFtCAUNJHQwMzQ5MDEzNTM1OAJfNgQIdG90YWxHZXQIBQ0kdDAzNDkwMTM1MzU4Al83AwMJAGYCAAAFDHZpcnRTd2FwSW5BbQYJAGYCAAAFDHZpcnRTd2FwSW5QcgkAAgECCldyb25nIGNhbGMEAkQwCQD8BwQFB2d3eENudHICBWNhbGNECQDMCAIJAKQDAQUMYW1CYWxhbmNlTm93CQDMCAIJAKQDAQUMcHJCYWxhbmNlTm93CQDMCAIFAUEJAMwIAgUFQW11bHQJAMwIAgUFRGNvbnYFA25pbAUDbmlsBAJEMQkA/AcEBQdnd3hDbnRyAgVjYWxjRAkAzAgCCQCkAwEJAGQCCQBlAgUMYW1CYWxhbmNlTm93BQx2aXJ0U3dhcEluQW0FDXZpcnRTd2FwT3V0QW0JAMwIAgkApAMBCQBlAgkAZAIFDHByQmFsYW5jZU5vdwUNdmlydFN3YXBPdXRQcgUMdmlydFN3YXBJblByCQDMCAIFAUEJAMwIAgUFQW11bHQJAMwIAgUFRGNvbnYFA25pbAUDbmlsBAZEMHZzRDEJAQJ2ZAMJAKcDAQkBA3N0cgEFAkQxCQCnAwEJAQNzdHIBBQJEMAUKc2xpcHBhZ2U0RAMJAAACBQZEMHZzRDEFBkQwdnNEMQQIZmluYWxSZXMJAQN2YWQDCQC2AgEFCHRvdGFsR2V0CQC2AgEFCW91dEFtb3VudAkAtgIBBQhzbGlwcGFnZQMJAAACBQhmaW5hbFJlcwUIZmluYWxSZXMEDSR0MDM2MDYzMzYxNjcDCQAAAgUKb3V0QXNzZXRJZAUEYW1JZAkAlAoCCQCgAwEIBQhmaW5hbFJlcwJfMgAACQCUCgIAAAkAoAMBCAUIZmluYWxSZXMCXzIEBW91dEFtCAUNJHQwMzYwNjMzNjE2NwJfMQQFb3V0UHIIBQ0kdDAzNjA2MzM2MTY3Al8yBAhjdXJQclgxOAkBBGNwYmkCCQECdDECBQlwckJhbGFuY2UFBXByRGNtCQECdDECBQlhbUJhbGFuY2UFBWFtRGNtBAVjdXJQcgkBAmYxAgUIY3VyUHJYMTgFBnNjYWxlOAQFc3RhdGUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MJAGQCBQVvdXRBbQUFb3V0UHIDCQAAAgUKb3V0QXNzZXRJZAIFV0FWRVMFBHVuaXQJANkEAQUKb3V0QXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQEDZ2F1AgkApQgBBQt1c2VyQWRkcmVzcwUGdHhJZDU4CQERZGF0YUdldEFjdGlvbkluZm8GBQVvdXRBbQUFb3V0UHIFBnBtdEFtdAUFY3VyUHIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwbAAFBWN1clByCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQVjdXJQcgUDbmlsAwkAAAIFBXN0YXRlBQVzdGF0ZQQEYnVybgkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGcG10QW10BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCnBtdEFzc2V0SWQFBnBtdEFtdAUDbmlsAwkAAAIFBGJ1cm4FBGJ1cm4FBXN0YXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBC2dldE9uZVRrblYyAgpvdXRBc3NldElkDG1pbk91dEFtb3VudAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECCzEgcG1udCBleHBkBApwb29sQ29uZmlnCQEDZ3BjAAQEbHBJZAkAkQMCBQpwb29sQ29uZmlnBQlpZHhMUEFzSWQEBGFtSWQJAJEDAgUKcG9vbENvbmZpZwUJaWR4QW1Bc0lkBARwcklkCQCRAwIFCnBvb2xDb25maWcFCWlkeFByQXNJZAQKYW1EZWNpbWFscwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xDb25maWcFC2lkeEFtdEFzRGNtBApwckRlY2ltYWxzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKcG9vbENvbmZpZwUNaWR4UHJpY2VBc0RjbQQKcG9vbFN0YXR1cwkAkQMCBQpwb29sQ29uZmlnBQlpZHhQb29sU3QEC3VzZXJBZGRyZXNzAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwgFAWkMb3JpZ2luQ2FsbGVyCAUBaQZjYWxsZXIEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABApwbXRBc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEBnBtdEFtdAgFA3BtdAZhbW91bnQDCQBmAgCAlOvcAwUGcG10QW10CQACAQINTWluIHBtdCAxMCBMUAQGdHhJZDU4CQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQDCQECIT0CBQRscElkCQDYBAEFCnBtdEFzc2V0SWQJAAIBAghXcm9uZyBMUAQBcgkBA2VnbwQFBnR4SWQ1OAkA2AQBBQpwbXRBc3NldElkBQZwbXRBbXQIBQFpBmNhbGxlcgQKZXN0aW1BbUFtdAgFAXICXzEECmVzdGltUHJBbXQIBQFyAl8yBAlhbUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEYW1JZAQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFBHBySWQECHRvdGFsR2V0CgABQAkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFCm91dEFzc2V0SWQJAMwIAgUGcG10QW10BQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUKb3V0QXNzZXRJZAkAzAgCBQZwbXRBbXQFA25pbAUDbmlsAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEC3RvdGFsQW1vdW50AwMJAGYCBQxtaW5PdXRBbW91bnQAAAkAZgIFDG1pbk91dEFtb3VudAUIdG90YWxHZXQHCQACAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQxtaW5PdXRBbW91bnQFA25pbAIABQh0b3RhbEdldAQNJHQwMzgxMTUzODIwMgMJAAACBQpvdXRBc3NldElkBQRhbUlkCQCUCgIFC3RvdGFsQW1vdW50AAAJAJQKAgAABQt0b3RhbEFtb3VudAQFb3V0QW0IBQ0kdDAzODExNTM4MjAyAl8xBAVvdXRQcggFDSR0MDM4MTE1MzgyMDICXzIECGN1clByWDE4CQEEY3BiaQIJAQJ0MQIFCXByQmFsYW5jZQUKcHJEZWNpbWFscwkBAnQxAgUJYW1CYWxhbmNlBQphbURlY2ltYWxzBAVjdXJQcgkBAmYxAgUIY3VyUHJYMTgFBnNjYWxlOAQFc3RhdGUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFC3RvdGFsQW1vdW50AwkAAAIFCm91dEFzc2V0SWQCBVdBVkVTBQR1bml0CQDZBAEFCm91dEFzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBA2dhdQIJAKUIAQULdXNlckFkZHJlc3MFBnR4SWQ1OAkBEWRhdGFHZXRBY3Rpb25JbmZvBgUFb3V0QW0FBW91dFByBQZwbXRBbXQFBWN1clByBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGwABQVjdXJQcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBoAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUFY3VyUHIFA25pbAMJAAACBQVzdGF0ZQUFc3RhdGUEBGJ1cm4JAPwHBAUDZmNhAgRidXJuCQDMCAIFBnBtdEFtdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQpwbXRBc3NldElkBQZwbXRBbXQFA25pbAMJAAACBQRidXJuBQRidXJuCQCUCgIFBXN0YXRlBQt0b3RhbEFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARNnZXRPbmVUa25WMlJFQURPTkxZAgpvdXRBc3NldElkDWxwQXNzZXRBbW91bnQECnBvb2xDb25maWcJAQNncGMABARscElkCQCRAwIFCnBvb2xDb25maWcFCWlkeExQQXNJZAQEYW1JZAkAkQMCBQpwb29sQ29uZmlnBQlpZHhBbUFzSWQEBHBySWQJAJEDAgUKcG9vbENvbmZpZwUJaWR4UHJBc0lkBAFyCQEDZWdvBAIABQRscElkBQ1scEFzc2V0QW1vdW50BQR0aGlzBAplc3RpbUFtQW10CAUBcgJfMQQKZXN0aW1QckFtdAgFAXICXzIECWFtQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQRhbUlkBAlwckJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUEcHJJZAQMYW1CYWxhbmNlTm93CQBlAgUJYW1CYWxhbmNlBQplc3RpbUFtQW10BAxwckJhbGFuY2VOb3cJAGUCBQlwckJhbGFuY2UFCmVzdGltUHJBbXQEDSR0MDM5Mjk2Mzk1NjcDCQAAAgUKb3V0QXNzZXRJZAUEYW1JZAkAlQoDBQxwckJhbGFuY2VOb3cFDGFtQmFsYW5jZU5vdwUKZXN0aW1QckFtdAMJAAACBQpvdXRBc3NldElkBQRwcklkCQCVCgMFDGFtQmFsYW5jZU5vdwUMcHJCYWxhbmNlTm93BQplc3RpbUFtQW10CQACAQIQd3Jvbmcgb3V0QXNzZXRJZAQUYW1vdW50QmFsYW5jZUZvclN3YXAIBQ0kdDAzOTI5NjM5NTY3Al8xBBNwcmljZUJhbGFuY2VGb3JTd2FwCAUNJHQwMzkyOTYzOTU2NwJfMgQMYW1vdW50VG9Td2FwCAUNJHQwMzkyOTYzOTU2NwJfMwQKeVByZWNpc2lvbgABBApleGNoUmVzdWx0CgABQAkA/AcEBQtnd3hDb250cmFjdAIMY2FsY1N3YXBYVG9ZCQDMCAIJAKQDAQUMYW1vdW50VG9Td2FwCQDMCAIJAKQDAQUUYW1vdW50QmFsYW5jZUZvclN3YXAJAMwIAgkApAMBBRNwcmljZUJhbGFuY2VGb3JTd2FwCQDMCAICAAkAzAgCBQFBCQDMCAIFBUFtdWx0CQDMCAIJAKQDAQUKeVByZWNpc2lvbgkAzAgCBQVEY29udgUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQkA/AcEBQtnd3hDb250cmFjdAIMY2FsY1N3YXBYVG9ZCQDMCAIJAKQDAQUMYW1vdW50VG9Td2FwCQDMCAIJAKQDAQUUYW1vdW50QmFsYW5jZUZvclN3YXAJAMwIAgkApAMBBRNwcmljZUJhbGFuY2VGb3JTd2FwCQDMCAICAAkAzAgCBQFBCQDMCAIFBUFtdWx0CQDMCAIJAKQDAQUKeVByZWNpc2lvbgkAzAgCBQVEY29udgUDbmlsBQNuaWwCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQIdG90YWxHZXQJAGQCBQpleGNoUmVzdWx0AwkAAAIFCm91dEFzc2V0SWQFBGFtSWQFCmVzdGltQW1BbXQFCmVzdGltUHJBbXQJAJQKAgUDbmlsBQh0b3RhbEdldAFpAQlnZXROb0xlc3MCEm5vTGVzc1RoZW5BbXRBc3NldBRub0xlc3NUaGVuUHJpY2VBc3NldAQBcgkBAmNnAQUBaQQIb3V0QW1BbXQIBQFyAl8xBAhvdXRQckFtdAgFAXICXzIEBnBtdEFtdAgFAXICXzMECnBtdEFzc2V0SWQIBQFyAl80BAVzdGF0ZQgFAXICXzUDCQBmAgUSbm9MZXNzVGhlbkFtdEFzc2V0BQhvdXRBbUFtdAkAAgEJAKwCAgkArAICCQCsAgICCUZhaWxlZDogIAkApAMBBQhvdXRBbUFtdAIDIDwgCQCkAwEFEm5vTGVzc1RoZW5BbXRBc3NldAMJAGYCBRRub0xlc3NUaGVuUHJpY2VBc3NldAUIb3V0UHJBbXQJAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQhvdXRQckFtdAIDIDwgCQCkAwEFFG5vTGVzc1RoZW5QcmljZUFzc2V0BBRidXJuTFBBc3NldE9uRmFjdG9yeQkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGcG10QW10BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCnBtdEFzc2V0SWQFBnBtdEFtdAUDbmlsAwkAAAIFFGJ1cm5MUEFzc2V0T25GYWN0b3J5BRRidXJuTFBBc3NldE9uRmFjdG9yeQUFc3RhdGUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENdW5zdGFrZUFuZEdldAEGYW1vdW50BA1jaGVja1BheW1lbnRzAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUNY2hlY2tQYXltZW50cwUNY2hlY2tQYXltZW50cwQDY2ZnCQEDZ3BjAAQKZmFjdG9yeUNmZwkBA2dmYwAECWxwQXNzZXRJZAkA2QQBCQCRAwIFA2NmZwUJaWR4TFBBc0lkBAdzdGFraW5nCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQpmYWN0b3J5Q2ZnBQ9pZHhGYWN0U3Rha0NudHICCldyIHN0IGFkZHIECnVuc3Rha2VJbnYJAPwHBAUHc3Rha2luZwIHdW5zdGFrZQkAzAgCCQDYBAEFCWxwQXNzZXRJZAkAzAgCBQZhbW91bnQFA25pbAUDbmlsAwkAAAIFCnVuc3Rha2VJbnYFCnVuc3Rha2VJbnYEAXIJAQNlZ28ECQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQUJbHBBc3NldElkBQZhbW91bnQIBQFpBmNhbGxlcgQDc3RzCQENcGFyc2VJbnRWYWx1ZQEIBQFyAl85BAVzdGF0ZQgFAXIDXzEwBAF2AwMJAQNpZ3MABgkAAAIFA3N0cwUMUG9vbFNodXRkb3duCQACAQkArAICAglCbG9ja2VkOiAJAKQDAQUDc3RzBgMJAAACBQF2BQF2BAVidXJuQQkA/AcEBQNmY2ECBGJ1cm4JAMwIAgUGYW1vdW50BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCWxwQXNzZXRJZAUGYW1vdW50BQNuaWwDCQAAAgUFYnVybkEFBWJ1cm5BBQVzdGF0ZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARN1bnN0YWtlQW5kR2V0T25lVGtuBAZhbW91bnQJb3V0QW1vdW50Cm91dEFzc2V0SWQIc2xpcHBhZ2UEDWNoZWNrUGF5bWVudHMDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAg1ObyBwbW50cyBleHBkBgMJAAACBQ1jaGVja1BheW1lbnRzBQ1jaGVja1BheW1lbnRzBANjZmcJAQNncGMABApmYWN0b3J5Q2ZnCQEDZ2ZjAAQJbHBBc3NldElkCQDZBAEJAJEDAgUDY2ZnBQlpZHhMUEFzSWQEB3N0YWtpbmcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFCmZhY3RvcnlDZmcFD2lkeEZhY3RTdGFrQ250cgIKV3Igc3QgYWRkcgQKdW5zdGFrZUludgkA/AcEBQdzdGFraW5nAgd1bnN0YWtlCQDMCAIJANgEAQUJbHBBc3NldElkCQDMCAIFBmFtb3VudAUDbmlsBQNuaWwDCQAAAgUKdW5zdGFrZUludgUKdW5zdGFrZUludgQPb3V0QW1vdW50UmVzdWx0CgABQAkA/AcEBQR0aGlzAgtnZXRPbmVUa25WMgkAzAgCBQlvdXRBbW91bnQJAMwIAgUKb3V0QXNzZXRJZAkAzAgCBQhzbGlwcGFnZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQlscEFzc2V0SWQFBmFtb3VudAUDbmlsAwkAAQIFAUACA0ludAUBQAUEdW5pdAMJAAACBQ9vdXRBbW91bnRSZXN1bHQFD291dEFtb3VudFJlc3VsdAkAlAoCBQNuaWwFD291dEFtb3VudFJlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhhY3RpdmF0ZQIIYW10QXNTdHIHcHJBc1N0cgMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyCQClCAEFA2ZjYQkAAgECBmRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQAFCGFtdEFzU3RyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJwYQAFB3ByQXNTdHIFA25pbAIHc3VjY2VzcwFpAQRzZXRTAgFrAXYDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkBBHN0cmYCBQR0aGlzCQEDYWRhAAUCcGQJAMwIAgkBC1N0cmluZ0VudHJ5AgUBawUBdgUDbmlsAWkBBHNldEkCAWsBdgMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyCQEEc3RyZgIFBHRoaXMJAQNhZGEABQJwZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBawUBdgUDbmlsAWkBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBA2dwYwABaQEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQEHYXNzZXRJZAkAlAoCBQNuaWwJAQ1nZXRBY2NCYWxhbmNlAQUHYXNzZXRJZAFpARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwVhbUFtdAVwckFtdAVscEFtdAQCcHIJAQpjYWxjUHJpY2VzAwUFYW1BbXQFBXByQW10BQVscEFtdAkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAnByAAAJAMwIAgkApgMBCQCRAwIFAnByAAEJAMwIAgkApgMBCQCRAwIFAnByAAIFA25pbAFpARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgN2YWwMcmVzU2NhbGVNdWx0CQCUCgIFA25pbAkBAmYxAgkApwMBBQN2YWwFDHJlc1NjYWxlTXVsdAFpARR0b1gxOFdyYXBwZXJSRUFET05MWQIHb3JpZ1ZhbA1vcmlnU2NhbGVNdWx0CQCUCgIFA25pbAkApgMBCQECdDECBQdvcmlnVmFsBQ1vcmlnU2NhbGVNdWx0AWkBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQIIcHJBbXRYMTgIYW1BbXRYMTgJAJQKAgUDbmlsCQCmAwEJAQRjcGJpAgkApwMBBQhwckFtdFgxOAkApwMBBQhhbUFtdFgxOAFpASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkGdHhJZDU4CHNsaXBwYWdlB2luQW1BbXQGaW5BbUlkB2luUHJBbXQGaW5QcklkB3VzckFkZHIGaXNFdmFsBmVtaXRMcAkAlAoCBQNuaWwJAQNlcG8NBQZ0eElkNTgFCHNsaXBwYWdlBQdpbkFtQW10BQZpbkFtSWQFB2luUHJBbXQFBmluUHJJZAUHdXNyQWRkcgUGaXNFdmFsBQZlbWl0THAGBwAAAgABaQEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEBnR4SWQ1OAdwbXRBc0lkCHBtdExwQW10B3VzckFkZHIEAXIJAQNlZ28EBQZ0eElkNTgFB3BtdEFzSWQFCHBtdExwQW10CQERQGV4dHJOYXRpdmUoMTA2MikBBQd1c3JBZGRyCQCUCgIFA25pbAkAnAoKCAUBcgJfMQgFAXICXzIIBQFyAl8zCAUBcgJfNAgFAXICXzUIBQFyAl82CAUBcgJfNwkApgMBCAUBcgJfOAgFAXICXzkIBQFyA18xMAECdHgBBnZlcmlmeQAED3RhcmdldFB1YmxpY0tleQQHJG1hdGNoMAkBAW0AAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwBQJwawMJAAECBQckbWF0Y2gwAgRVbml0CAUCdHgPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEByRtYXRjaDAFAnR4AwkAAQIFByRtYXRjaDACBU9yZGVyBAVvcmRlcgUHJG1hdGNoMAQKbWF0Y2hlclB1YgkBAm1wAAQKb3JkZXJWYWxpZAkBA21vYQEFBW9yZGVyBAtzZW5kZXJWYWxpZAkA9AMDCAUFb3JkZXIJYm9keUJ5dGVzCQCRAwIIBQVvcmRlcgZwcm9vZnMAAAgFBW9yZGVyD3NlbmRlclB1YmxpY0tleQQMbWF0Y2hlclZhbGlkCQD0AwMIBQVvcmRlcglib2R5Qnl0ZXMJAJEDAggFBW9yZGVyBnByb29mcwABBQptYXRjaGVyUHViAwMDBQpvcmRlclZhbGlkBQtzZW5kZXJWYWxpZAcFDG1hdGNoZXJWYWxpZAcGCQEDdG9lAwUKb3JkZXJWYWxpZAULc2VuZGVyVmFsaWQFDG1hdGNoZXJWYWxpZAMJAAECBQckbWF0Y2gwAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQBcwUHJG1hdGNoMAQHbmV3SGFzaAkA9gMBCQEFdmFsdWUBCAUBcwZzY3JpcHQEC2FsbG93ZWRIYXNoCQDbBAEJAQV2YWx1ZQEJAJ0IAgUDZmNhCQEca2V5QWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAAEC2N1cnJlbnRIYXNoCQDxBwEFBHRoaXMDAwkAAAIFC2FsbG93ZWRIYXNoBQduZXdIYXNoCQECIT0CBQtjdXJyZW50SGFzaAUHbmV3SGFzaAcGCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXkJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFD3RhcmdldFB1YmxpY0tleWoYM/s=", "height": 2228767, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4uPMBTrqAqHKYpfgc8S9rcFaH9358RsF3e2GMKugp2F6 Next: 5obmnocF7rafTFHbeJ4dvFwQ11FXKjq6AzjzkPj1WHF6 Diff:
OldNewDifferences
844844 let cg = ew._3
845845 let cQ = ew._4
846846 let cR = ew._5
847- $Tuple2(nil, $Tuple5(dE, dF, cg, cQ, cR))
847+ $Tuple2(nil, dE)
848848 }
849849
850850
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(1)
1313
1414 let f = toBigInt((a - ((a * 1) / a)))
1515
1616 let g = "100"
1717
1818 let h = "1"
1919
2020 let i = "__"
2121
2222 let j = ""
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 1
5151
5252 let y = 7
5353
5454 let z = 10
5555
5656 let A = "%s__delay"
5757
5858 func B (C,D) = fraction(toBigInt(C), c, toBigInt(D))
5959
6060
6161 func E (F,G) = toInt(fraction(F, toBigInt(G), c))
6262
6363
6464 func H (I,J,K) = fraction(I, J, K)
6565
6666
6767 func L (F) = if ((d > F))
6868 then -(F)
6969 else F
7070
7171
7272 func M () = "%s__factoryContract"
7373
7474
7575 func N () = "%s__managerPublicKey"
7676
7777
7878 func O () = "%s__pendingManagerPublicKey"
7979
8080
8181 func P () = "%s%s__price__last"
8282
8383
8484 func Q (R,S) = makeString(["%s%s%d%d__price__history", toString(R), toString(S)], i)
8585
8686
8787 func T (U,V) = ((("%s%s%s__P__" + U) + "__") + V)
8888
8989
9090 func W (U,V) = ((("%s%s%s__G__" + U) + "__") + V)
9191
9292
9393 func X () = "%s__amountAsset"
9494
9595
9696 func Y () = "%s__priceAsset"
9797
9898
9999 func Z () = "%s__amp"
100100
101101
102102 func aa () = "%s__addonAddr"
103103
104104
105105 func ab (ac) = makeString(["%s%s__lastGetOneTknCall", ac], i)
106106
107107
108108 func ad (ac) = makeString(["%s%s__lastPutOneTknCall", ac], i)
109109
110110
111111 func ae () = "%s__factoryConfig"
112112
113113
114114 func af () = "%s%s__matcher__publicKey"
115115
116116
117117 func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
118118
119119
120120 func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
121121
122122
123123 func al () = "%s__shutdown"
124124
125125
126126 func am () = "%s__allowedLpStableScriptHash"
127127
128128
129129 func an (ao,ap,aq) = throw(((((("Failed: ordValid=" + toString(ao)) + " sndrValid=") + toString(ap)) + " mtchrValid=") + toString(aq)))
130130
131131
132132 func ar (F) = {
133133 let as = F
134134 if ($isInstanceOf(as, "String"))
135135 then {
136136 let at = as
137137 at
138138 }
139139 else throw("fail cast to String")
140140 }
141141
142142
143143 func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
144144
145145
146146 func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " not defined"], ""))
147147
148148
149149 let ay = addressFromStringValue(au(this, M()))
150150
151151 let az = au(this, Z())
152152
153153 func aA () = valueOrElse(getBoolean(ay, al()), false)
154154
155155
156156 func aB () = fromBase58String(au(ay, af()))
157157
158158
159159 func aC () = {
160160 let aD = au(this, X())
161161 let aE = au(this, Y())
162162 let aF = ax(ay, aj(aE))
163163 let ah = ax(ay, aj(aD))
164164 split(au(ay, ag(toString(ah), toString(aF))), i)
165165 }
166166
167167
168168 func aG () = split(au(ay, ae()), i)
169169
170170
171171 let aH = aG()
172172
173173 let aI = valueOrErrorMessage(addressFromString(aH[x]), "Invalid staking contract address")
174174
175175 let aJ = valueOrErrorMessage(addressFromString(aH[y]), "Invalid slipage contract address")
176176
177177 let aK = valueOrErrorMessage(addressFromString(aH[z]), "Invalid gwx contract address")
178178
179179 func aL (aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU), toString(aV)], i)
180180
181181
182182 func aW (aX,aY,aZ,aP,aS,aT) = makeString(["%d%d%d%d%d%d", toString(aX), toString(aY), toString(aZ), toString(aP), toString(aS), toString(aT)], i)
183183
184184
185185 func ba (bb) = if ((bb == "WAVES"))
186186 then wavesBalance(this).available
187187 else assetBalance(this, fromBase58String(bb))
188188
189189
190190 func bc (bd,be) = fraction(bd, c, be)
191191
192192
193193 func bf (bg,bh,bi) = {
194194 let bj = fraction((bg - bh), b, bh)
195195 let bk = ((bi - L(bj)) > d)
196196 if (!(bk))
197197 then throw(("Big slpg: " + toString(bj)))
198198 else $Tuple2(bk, min([bg, bh]))
199199 }
200200
201201
202202 func bl (bm,bn,bo) = {
203203 let bj = fraction(bn, b, bm)
204204 let bp = (bo > bj)
205205 if (if (bp)
206206 then true
207207 else (bn > bm))
208208 then throw(((((((toString(bn) + " ") + toString(bm)) + " ") + toString(bj)) + " ") + toString(bo)))
209209 else bp
210210 }
211211
212212
213213 func bq (br,bs,bt,bu) = {
214214 let bv = B(bt, br)
215215 let bw = B(bu, bs)
216216 bc(bw, bv)
217217 }
218218
219219
220220 func bx (bt,bu,by) = {
221221 let bz = aC()
222222 let bA = parseIntValue(bz[t])
223223 let bB = parseIntValue(bz[u])
224224 let bC = bq(bA, bB, bt, bu)
225225 let be = B(bt, bA)
226226 let bd = B(bu, bB)
227227 let bD = B(by, a)
228228 let bE = bc(be, bD)
229229 let bF = bc(bd, bD)
230230 [bC, bE, bF]
231231 }
232232
233233
234234 func bG (bt,bu,by) = {
235235 let bH = bx(bt, bu, by)
236236 [E(bH[0], a), E(bH[1], a), E(bH[2], a)]
237237 }
238238
239239
240240 func bI (bJ,bK,bL,bM) = {
241241 let bz = aC()
242242 let bN = bz[q]
243243 let bO = bz[r]
244244 let bP = bz[s]
245245 let bQ = parseIntValue(bz[t])
246246 let bR = parseIntValue(bz[u])
247247 let bS = bz[p]
248248 let bT = valueOrErrorMessage(assetInfo(fromBase58String(bN)), "Wrong LP id").quantity
249249 if ((bN != bK))
250250 then throw("Wrong pmt asset")
251251 else {
252252 let bU = ba(bO)
253253 let bV = B(bU, bQ)
254254 let bW = ba(bP)
255255 let bX = B(bW, bR)
256256 let bY = bc(bX, bV)
257257 let bZ = E(bY, a)
258258 let ca = B(bL, a)
259259 let cb = B(bT, a)
260260 let cc = fraction(bV, ca, cb)
261261 let cd = fraction(bX, ca, cb)
262262 let ce = E(cc, bQ)
263263 let cf = E(cd, bR)
264264 let cg = if ((bJ == ""))
265265 then nil
266266 else [ScriptTransfer(bM, ce, if ((bO == "WAVES"))
267267 then unit
268268 else fromBase58String(bO)), ScriptTransfer(bM, cf, if ((bP == "WAVES"))
269269 then unit
270270 else fromBase58String(bP)), StringEntry(W(toString(bM), bJ), aW(ce, cf, bL, bZ, height, lastBlock.timestamp)), IntegerEntry(P(), bZ), IntegerEntry(Q(height, lastBlock.timestamp), bZ)]
271271 $Tuple10(ce, cf, bO, bP, bU, bW, bT, bY, bS, cg)
272272 }
273273 }
274274
275275
276276 func ch (bJ,bi,ci,cj,ck,cl,bM,cm,cn,co,cp,cq,cr) = {
277277 let bz = aC()
278278 let bN = fromBase58String(bz[q])
279279 let cs = bz[r]
280280 let ct = bz[s]
281281 let cu = bz[v]
282282 let cv = bz[w]
283283 let cw = parseIntValue(bz[t])
284284 let cx = parseIntValue(bz[u])
285285 let bS = bz[p]
286286 let cy = valueOrErrorMessage(assetInfo(bN), "Wr lp as").quantity
287287 let bU = if (cm)
288288 then ba(cs)
289289 else if (if (co)
290290 then (cr == cs)
291291 else false)
292292 then (ba(cs) - cq)
293293 else if (co)
294294 then ba(cs)
295295 else (ba(cs) - ci)
296296 let bW = if (cm)
297297 then ba(ct)
298298 else if (if (co)
299299 then (cr == ct)
300300 else false)
301301 then (ba(ct) - cq)
302302 else if (co)
303303 then ba(ct)
304304 else (ba(ct) - ck)
305305 let cz = B(ci, cw)
306306 let cA = B(ck, cx)
307307 let cB = bc(cA, cz)
308308 let bV = B(bU, cw)
309309 let bX = B(bW, cx)
310310 let cC = if ((cy == 0))
311311 then {
312312 let bY = d
313313 let cD = d
314314 let bD = pow((cz * cA), 0, toBigInt(5), 1, 0, DOWN)
315315 $Tuple5(E(bD, a), E(cz, cw), E(cA, cx), bc((bX + cA), (bV + cz)), cD)
316316 }
317317 else {
318318 let bY = bc(bX, bV)
319319 let cE = fraction(L((bY - cB)), c, bY)
320320 let cD = B(bi, a)
321321 if (if (if (cp)
322322 then (bY != d)
323323 else false)
324324 then (cE > cD)
325325 else false)
326326 then throw(((("Price slippage " + toString(cE)) + " > ") + toString(cD)))
327327 else {
328328 let cF = B(cy, a)
329329 let cG = fraction(cz, bY, c)
330330 let cH = fraction(cA, c, bY)
331331 let cI = if ((cG > cA))
332332 then $Tuple2(cH, cA)
333333 else $Tuple2(cz, cG)
334334 let cJ = cI._1
335335 let cK = cI._2
336336 let bD = fraction(cF, cK, bX)
337337 $Tuple5(E(bD, a), E(cJ, cw), E(cK, cx), bY, cD)
338338 }
339339 }
340340 let cL = cC._1
341341 let cM = cC._2
342342 let cN = cC._3
343343 let bZ = E(cC._4, a)
344344 let cO = E(cC._5, a)
345345 if ((0 >= cL))
346346 then throw("LP <= 0")
347347 else {
348348 let cP = if (!(cn))
349349 then 0
350350 else cL
351351 let cQ = (ci - cM)
352352 let cR = (ck - cN)
353353 let cS = if (if (co)
354354 then (cr == cs)
355355 else false)
356356 then $Tuple2(cq, 0)
357357 else if (if (co)
358358 then (cr == ct)
359359 else false)
360360 then $Tuple2(0, cq)
361361 else $Tuple2(cM, cN)
362362 let cT = cS._1
363363 let cU = cS._2
364364 let cV = [IntegerEntry(P(), bZ), IntegerEntry(Q(height, lastBlock.timestamp), bZ), StringEntry(T(bM, bJ), aL(cT, cU, cP, bZ, bi, cO, height, lastBlock.timestamp, cQ, cR))]
365365 $Tuple13(cL, cP, bZ, bU, bW, cy, bN, bS, cV, cQ, cR, cj, cl)
366366 }
367367 }
368368
369369
370370 func cW (cX) = {
371371 let bz = aC()
372372 let cY = bz[r]
373373 let cZ = bz[s]
374374 let bS = parseIntValue(bz[p])
375375 let bA = parseIntValue(bz[t])
376376 let bB = parseIntValue(bz[u])
377377 let da = ba(cY)
378378 let db = ba(cZ)
379379 let bY = if ((cX.orderType == Buy))
380380 then bq(bA, bB, (da + cX.amount), db)
381381 else bq(bA, bB, (da - cX.amount), db)
382382 let bZ = E(bY, a)
383383 if (if (if (aA())
384384 then true
385385 else (bS == m))
386386 then true
387387 else (bS == n))
388388 then throw("Admin blocked")
389389 else {
390390 let dc = cX.assetPair.amountAsset
391391 let dd = if ((dc == unit))
392392 then "WAVES"
393393 else toBase58String(value(dc))
394394 let de = cX.assetPair.priceAsset
395395 let df = if ((de == unit))
396396 then "WAVES"
397397 else toBase58String(value(de))
398398 if (if ((dd != cY))
399399 then true
400400 else (df != cZ))
401401 then throw("Wr assets")
402402 else {
403403 let dg = cX.price
404404 let cx = fraction(a, bB, bA)
405405 let dh = H(dg, a, cx)
406406 let di = if ((cX.orderType == Buy))
407407 then (bZ >= dh)
408408 else (dh >= bZ)
409409 true
410410 }
411411 }
412412 }
413413
414414
415415 func dj (dk) = if ((size(dk.payments) != 1))
416416 then throw("1 pmnt exp")
417417 else {
418418 let dl = value(dk.payments[0])
419419 let bK = value(dl.assetId)
420420 let cq = dl.amount
421421 let cC = bI(toBase58String(dk.transactionId), toBase58String(bK), cq, dk.caller)
422422 let ce = cC._1
423423 let cf = cC._2
424424 let bS = parseIntValue(cC._9)
425425 let cg = cC._10
426426 if (if (aA())
427427 then true
428428 else (bS == n))
429429 then throw(("Admin blocked: " + toString(bS)))
430430 else $Tuple5(ce, cf, cq, bK, cg)
431431 }
432432
433433
434434 func dm (ac,V,dn,do,bi,cn,co,cp,cq,cr) = {
435435 let cC = ch(V, bi, value(dn).amount, value(dn).assetId, value(do).amount, value(do).assetId, ac, false, cn, co, cp, cq, cr)
436436 let bS = parseIntValue(cC._8)
437437 if (if (if (aA())
438438 then true
439439 else (bS == l))
440440 then true
441441 else (bS == n))
442442 then throw(("Blocked:" + toString(bS)))
443443 else cC
444444 }
445445
446446
447447 func dp (cq,bK,bM,V) = {
448448 let dq = aC()
449449 let bO = dq[r]
450450 let bP = dq[s]
451451 let bU = ba(bO)
452452 let bW = ba(bP)
453453 let dr = if ((bK == bO))
454454 then if ((cq > bU))
455455 then throw("invalid payment amount")
456456 else $Tuple2((bU - cq), bW)
457457 else if ((bK == bP))
458458 then if ((cq > bW))
459459 then throw("invalid payment amount")
460460 else $Tuple2(bU, (bW - cq))
461461 else throw("wrong pmtAssetId")
462462 let ds = dr._1
463463 let dt = dr._2
464464 let du = if ((bK == bO))
465465 then $Tuple2(ds, dt)
466466 else $Tuple2(dt, ds)
467467 let dv = du._1
468468 let dw = du._2
469469 let dx = 1
470470 let dy = {
471471 let dz = invoke(aK, "calcPutXOnly", [toString(cq), toString(dv), toString(dw), "", az, g, toString(dx), h], nil)
472472 if ($isInstanceOf(dz, "(Int, Int)"))
473473 then dz
474474 else throw(($getType(invoke(aK, "calcPutXOnly", [toString(cq), toString(dv), toString(dw), "", az, g, toString(dx), h], nil)) + " couldn't be cast to (Int, Int)"))
475475 }
476476 let dA = if ((bK == bO))
477477 then dy
478478 else $Tuple2(dy._2, dy._1)
479479 let dB = dA._1
480480 let dC = dA._2
481481 let dD = dm(bM, V, AttachedPayment(fromBase58String(bO), dB), AttachedPayment(fromBase58String(bP), dC), 0, true, true, false, cq, bK)
482482 let dE = dD._2
483483 let dF = dD._7
484484 let cg = dD._9
485485 let cQ = dD._10
486486 let cR = dD._11
487487 $Tuple5(dE, dF, cg, cQ, cR)
488488 }
489489
490490
491491 func dG () = {
492492 let as = getString(N())
493493 if ($isInstanceOf(as, "String"))
494494 then {
495495 let dH = as
496496 fromBase58String(dH)
497497 }
498498 else if ($isInstanceOf(as, "Unit"))
499499 then unit
500500 else throw("Match error")
501501 }
502502
503503
504504 func dI () = {
505505 let as = getString(O())
506506 if ($isInstanceOf(as, "String"))
507507 then {
508508 let dH = as
509509 fromBase58String(dH)
510510 }
511511 else if ($isInstanceOf(as, "Unit"))
512512 then unit
513513 else throw("Match error")
514514 }
515515
516516
517517 let dJ = throw("Permission denied")
518518
519519 func dK (dk) = {
520520 let as = dG()
521521 if ($isInstanceOf(as, "ByteVector"))
522522 then {
523523 let dL = as
524524 if ((dk.callerPublicKey == dL))
525525 then true
526526 else dJ
527527 }
528528 else if ($isInstanceOf(as, "Unit"))
529529 then if ((dk.caller == this))
530530 then true
531531 else dJ
532532 else throw("Match error")
533533 }
534534
535535
536536 @Callable(dk)
537537 func constructor (M) = {
538538 let dM = dK(dk)
539539 if ((dM == dM))
540540 then [StringEntry(M(), M)]
541541 else throw("Strict value is not equal to itself.")
542542 }
543543
544544
545545
546546 @Callable(dk)
547547 func setManager (dN) = {
548548 let dM = dK(dk)
549549 if ((dM == dM))
550550 then {
551551 let dO = fromBase58String(dN)
552552 if ((dO == dO))
553553 then [StringEntry(O(), dN)]
554554 else throw("Strict value is not equal to itself.")
555555 }
556556 else throw("Strict value is not equal to itself.")
557557 }
558558
559559
560560
561561 @Callable(dk)
562562 func confirmManager () = {
563563 let bH = dI()
564564 let dP = if (isDefined(bH))
565565 then true
566566 else throw("No pending manager")
567567 if ((dP == dP))
568568 then {
569569 let dQ = if ((dk.callerPublicKey == value(bH)))
570570 then true
571571 else throw("You are not pending manager")
572572 if ((dQ == dQ))
573573 then [StringEntry(N(), toBase58String(value(bH))), DeleteEntry(O())]
574574 else throw("Strict value is not equal to itself.")
575575 }
576576 else throw("Strict value is not equal to itself.")
577577 }
578578
579579
580580
581581 @Callable(dk)
582582 func put (dR,dS) = {
583583 let dT = aG()
584584 let dU = valueOrErrorMessage(addressFromString(dT[x]), "Wr st addr")
585585 let dV = valueOrErrorMessage(addressFromString(dT[y]), "Wr sl addr")
586586 if ((0 > dR))
587587 then throw("Wrong slippage")
588588 else if ((size(dk.payments) != 2))
589589 then throw("2 pmnts expd")
590590 else {
591591 let dW = dm(toString(dk.caller), toBase58String(dk.transactionId), AttachedPayment(value(dk.payments[0]).assetId, value(dk.payments[0]).amount), dk.payments[1], dR, true, false, true, 0, "")
592592 let cP = dW._2
593593 let dF = dW._7
594594 let cg = dW._9
595595 let cQ = dW._10
596596 let cR = dW._11
597597 let bO = dW._12
598598 let bP = dW._13
599599 let cC = invoke(ay, "emit", [cP], nil)
600600 if ((cC == cC))
601601 then {
602602 let dX = {
603603 let as = cC
604604 if ($isInstanceOf(as, "Address"))
605605 then {
606606 let dY = as
607607 invoke(dY, "emit", [cP], nil)
608608 }
609609 else unit
610610 }
611611 if ((dX == dX))
612612 then {
613613 let dZ = if ((cQ > 0))
614614 then invoke(dV, "put", nil, [AttachedPayment(bO, cQ)])
615615 else nil
616616 if ((dZ == dZ))
617617 then {
618618 let ea = if ((cR > 0))
619619 then invoke(dV, "put", nil, [AttachedPayment(bP, cR)])
620620 else nil
621621 if ((ea == ea))
622622 then {
623623 let eb = if (dS)
624624 then {
625625 let ec = invoke(dU, "stake", nil, [AttachedPayment(dF, cP)])
626626 if ((ec == ec))
627627 then nil
628628 else throw("Strict value is not equal to itself.")
629629 }
630630 else [ScriptTransfer(dk.caller, cP, dF)]
631631 (cg ++ eb)
632632 }
633633 else throw("Strict value is not equal to itself.")
634634 }
635635 else throw("Strict value is not equal to itself.")
636636 }
637637 else throw("Strict value is not equal to itself.")
638638 }
639639 else throw("Strict value is not equal to itself.")
640640 }
641641 }
642642
643643
644644
645645 @Callable(dk)
646646 func putOneTkn (dB,dC,ed,bi,dS) = {
647647 let bz = aG()
648648 let dU = valueOrErrorMessage(addressFromString(bz[x]), "Wr st addr")
649649 let dV = valueOrErrorMessage(addressFromString(bz[y]), "Wr sl addr")
650650 let ee = valueOrErrorMessage(addressFromString(bz[z]), "Wr gwx addr")
651651 let ef = aC()
652652 let bO = ef[r]
653653 let bP = ef[s]
654654 let bQ = parseIntValue(ef[t])
655655 let bR = parseIntValue(ef[u])
656656 let eg = valueOrElse(getString(this, aa()), "")
657657 let bM = if ((eg == toString(dk.caller)))
658658 then dk.originCaller
659659 else dk.caller
660660 let eh = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
661661 let ei = reentrantInvoke(eh, "ensureCanPutOneTkn", [toString(bM)], nil)
662662 if ((ei == ei))
663663 then if (if (if (if ((0 >= bi))
664664 then true
665665 else (0 >= dB))
666666 then true
667667 else (0 >= dC))
668668 then true
669669 else (0 >= ed))
670670 then throw("Wrong params")
671671 else if ((size(dk.payments) != 1))
672672 then throw("1 pmnt expd")
673673 else {
674674 let dl = value(dk.payments[0])
675675 let bK = toBase58String(value(dl.assetId))
676676 let cq = dl.amount
677677 if ((10000000 > cq))
678678 then throw("Wrong pmt amt")
679679 else {
680680 let bU = ba(bO)
681681 let bW = ba(bP)
682682 let ej = if ((bK == bO))
683683 then if (if ((cq > bU))
684684 then true
685685 else (dB > cq))
686686 then throw("invalid payment amount")
687687 else $Tuple6((bU - cq), bW, (cq - dB), dC, 0, 0)
688688 else if ((bK == bP))
689689 then if (if ((cq > bW))
690690 then true
691691 else (dC > cq))
692692 then throw("invalid payment amount")
693693 else $Tuple6(bU, (bW - cq), 0, 0, (cq - dC), dB)
694694 else throw("wrong pmtAssetId")
695695 let ds = ej._1
696696 let dt = ej._2
697697 let ek = ej._3
698698 let el = ej._4
699699 let em = ej._5
700700 let en = ej._6
701701 let bn = invoke(ee, "calcD", [toString(ds), toString(dt), az, g, h], nil)
702702 let bm = invoke(ee, "calcD", [toString(toBigInt(((ds + ek) - en))), toString(toBigInt(((dt + em) - el))), az, g, h], nil)
703703 let eo = bl(parseBigIntValue(ar(bm)), parseBigIntValue(ar(bn)), f)
704704 if ((eo == eo))
705705 then {
706706 let dD = dm(toString(dk.caller), toBase58String(dk.transactionId), AttachedPayment(fromBase58String(bO), dB), AttachedPayment(fromBase58String(bP), dC), bi, true, true, true, cq, bK)
707707 let dE = dD._2
708708 let dF = dD._7
709709 let cg = dD._9
710710 let cQ = dD._10
711711 let cR = dD._11
712712 let ep = bf(toBigInt(dE), toBigInt(ed), toBigInt(bi))
713713 let cP = toInt(ep._2)
714714 let dW = invoke(ay, "emit", [cP], nil)
715715 if ((dW == dW))
716716 then {
717717 let dX = {
718718 let as = dW
719719 if ($isInstanceOf(as, "Address"))
720720 then {
721721 let dY = as
722722 invoke(dY, "emit", [cP], nil)
723723 }
724724 else unit
725725 }
726726 if ((dX == dX))
727727 then {
728728 let dZ = if ((cQ > 0))
729729 then invoke(dV, "put", nil, [AttachedPayment(fromBase58String(bO), cQ)])
730730 else nil
731731 if ((dZ == dZ))
732732 then {
733733 let ea = if ((cR > 0))
734734 then invoke(dV, "put", nil, [AttachedPayment(fromBase58String(bP), cR)])
735735 else nil
736736 if ((ea == ea))
737737 then {
738738 let eb = if (dS)
739739 then {
740740 let ec = invoke(dU, "stake", nil, [AttachedPayment(dF, cP)])
741741 if ((ec == ec))
742742 then nil
743743 else throw("Strict value is not equal to itself.")
744744 }
745745 else [ScriptTransfer(dk.caller, cP, dF)]
746746 (cg ++ eb)
747747 }
748748 else throw("Strict value is not equal to itself.")
749749 }
750750 else throw("Strict value is not equal to itself.")
751751 }
752752 else throw("Strict value is not equal to itself.")
753753 }
754754 else throw("Strict value is not equal to itself.")
755755 }
756756 else throw("Strict value is not equal to itself.")
757757 }
758758 }
759759 else throw("Strict value is not equal to itself.")
760760 }
761761
762762
763763
764764 @Callable(dk)
765765 func putOneTknV2 (eq,dS) = if ((size(dk.payments) != 1))
766766 then throw("1 pmnt expd")
767767 else {
768768 let dq = aC()
769769 let bO = dq[r]
770770 let bP = dq[s]
771771 let er = parseIntValue(dq[t])
772772 let es = parseIntValue(dq[u])
773773 let bM = if ((dk.caller == this))
774774 then dk.originCaller
775775 else dk.caller
776776 let dl = value(dk.payments[0])
777777 let bK = toBase58String(value(dl.assetId))
778778 let cq = dl.amount
779779 if ((10000000 > cq))
780780 then throw("Wrong pmt amt")
781781 else {
782782 let et = dp(cq, bK, toString(bM), toBase58String(dk.transactionId))
783783 let dE = et._1
784784 let dF = et._2
785785 let cg = et._3
786786 let cQ = et._4
787787 let cR = et._5
788788 let cP = if (if ((eq > 0))
789789 then (eq > dE)
790790 else false)
791791 then throw(makeString(["amount to receive is less than ", toString(eq)], ""))
792792 else dE
793793 let dW = invoke(ay, "emit", [cP], nil)
794794 if ((dW == dW))
795795 then {
796796 let dX = {
797797 let as = dW
798798 if ($isInstanceOf(as, "Address"))
799799 then {
800800 let dY = as
801801 invoke(dY, "emit", [cP], nil)
802802 }
803803 else unit
804804 }
805805 if ((dX == dX))
806806 then {
807807 let dZ = if ((cQ > 0))
808808 then invoke(aJ, "put", nil, [AttachedPayment(fromBase58String(bO), cQ)])
809809 else nil
810810 if ((dZ == dZ))
811811 then {
812812 let ea = if ((cR > 0))
813813 then invoke(aJ, "put", nil, [AttachedPayment(fromBase58String(bP), cR)])
814814 else nil
815815 if ((ea == ea))
816816 then {
817817 let eb = if (dS)
818818 then {
819819 let ec = invoke(aI, "stake", nil, [AttachedPayment(dF, cP)])
820820 if ((ec == ec))
821821 then nil
822822 else throw("Strict value is not equal to itself.")
823823 }
824824 else [ScriptTransfer(dk.caller, cP, dF)]
825825 $Tuple2((cg ++ eb), cP)
826826 }
827827 else throw("Strict value is not equal to itself.")
828828 }
829829 else throw("Strict value is not equal to itself.")
830830 }
831831 else throw("Strict value is not equal to itself.")
832832 }
833833 else throw("Strict value is not equal to itself.")
834834 }
835835 }
836836
837837
838838
839839 @Callable(dk)
840840 func putOneTknV2READONLY (eu,ev) = {
841841 let ew = dp(eu, ev, "", "")
842842 let dE = ew._1
843843 let dF = ew._2
844844 let cg = ew._3
845845 let cQ = ew._4
846846 let cR = ew._5
847- $Tuple2(nil, $Tuple5(dE, dF, cg, cQ, cR))
847+ $Tuple2(nil, dE)
848848 }
849849
850850
851851
852852 @Callable(dk)
853853 func putForFree (ex) = if ((0 > ex))
854854 then throw("Wrong slpg")
855855 else if ((size(dk.payments) != 2))
856856 then throw("2 pmnts expd")
857857 else {
858858 let dD = dm(toString(dk.caller), toBase58String(dk.transactionId), AttachedPayment(value(dk.payments[0]).assetId, value(dk.payments[0]).amount), dk.payments[1], ex, false, false, true, 0, "")
859859 dD._9
860860 }
861861
862862
863863
864864 @Callable(dk)
865865 func get () = {
866866 let cC = dj(dk)
867867 let ey = cC._1
868868 let cf = cC._2
869869 let cq = cC._3
870870 let bK = cC._4
871871 let cg = cC._5
872872 let ez = invoke(ay, "burn", [cq], [AttachedPayment(bK, cq)])
873873 if ((ez == ez))
874874 then cg
875875 else throw("Strict value is not equal to itself.")
876876 }
877877
878878
879879
880880 @Callable(dk)
881881 func getOneTkn (eA,eB,eC,eD,bi) = if ((size(dk.payments) != 1))
882882 then throw("1 pmnt expd")
883883 else {
884884 let bz = aC()
885885 let bN = bz[q]
886886 let bO = bz[r]
887887 let bP = bz[s]
888888 let bQ = parseIntValue(bz[t])
889889 let bR = parseIntValue(bz[u])
890890 let bS = bz[p]
891891 let dT = aG()
892892 let ee = valueOrErrorMessage(addressFromString(dT[z]), "Wr sl addr")
893893 let dl = value(dk.payments[0])
894894 let eg = valueOrElse(getString(this, aa()), "")
895895 let bM = if ((eg == toString(dk.caller)))
896896 then dk.originCaller
897897 else dk.caller
898898 let bJ = toBase58String(dk.transactionId)
899899 let bK = value(dl.assetId)
900900 let cq = dl.amount
901901 let eh = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(aa()), "no addons")), "addon address in not valid")
902902 let ei = reentrantInvoke(eh, "ensureCanGetOneTkn", [toString(bM)], nil)
903903 if ((ei == ei))
904904 then if ((1000000000 > cq))
905905 then throw("Min pmt 10 LP")
906906 else if (if (if ((0 > bi))
907907 then true
908908 else (0 > eA))
909909 then true
910910 else (0 > eC))
911911 then throw("Wrong params")
912912 else if ((bN != toBase58String(bK)))
913913 then throw("Wrong LP")
914914 else {
915915 let cC = bI(toBase58String(dk.transactionId), toBase58String(bK), cq, dk.caller)
916916 let eE = cC._1
917917 let eF = cC._2
918918 let bU = ba(bO)
919919 let bW = ba(bP)
920920 let eG = if ((eD == bO))
921921 then $Tuple7((bU - eE), (bW - eF), eA, eF, 0, 0, (eE + eA))
922922 else if ((eD == bP))
923923 then $Tuple7((bU - eE), (bW - eF), 0, 0, eA, eE, (eF + eA))
924924 else throw("wrong outAssetId")
925925 let ds = eG._1
926926 let dt = eG._2
927927 let ek = eG._3
928928 let el = eG._4
929929 let em = eG._5
930930 let en = eG._6
931931 let eH = eG._7
932932 if (if ((0 > ek))
933933 then true
934934 else (0 > em))
935935 then throw("Wrong calc")
936936 else {
937937 let bn = invoke(ee, "calcD", [toString(ds), toString(dt), az, g, h], nil)
938938 let bm = invoke(ee, "calcD", [toString(((ds - ek) + en)), toString(((dt + el) - em)), az, g, h], nil)
939939 let eo = bl(parseBigIntValue(ar(bm)), parseBigIntValue(ar(bn)), f)
940940 if ((eo == eo))
941941 then {
942942 let eI = bf(toBigInt(eH), toBigInt(eC), toBigInt(bi))
943943 if ((eI == eI))
944944 then {
945945 let eJ = if ((eD == bO))
946946 then $Tuple2(toInt(eI._2), 0)
947947 else $Tuple2(0, toInt(eI._2))
948948 let eK = eJ._1
949949 let eL = eJ._2
950950 let eM = bc(B(bW, bR), B(bU, bQ))
951951 let eN = E(eM, a)
952952 let cg = [ScriptTransfer(bM, (eK + eL), if ((eD == "WAVES"))
953953 then unit
954954 else fromBase58String(eD)), StringEntry(W(toString(bM), bJ), aW(eK, eL, cq, eN, height, lastBlock.timestamp)), IntegerEntry(P(), eN), IntegerEntry(Q(height, lastBlock.timestamp), eN)]
955955 if ((cg == cg))
956956 then {
957957 let eO = invoke(ay, "burn", [cq], [AttachedPayment(bK, cq)])
958958 if ((eO == eO))
959959 then cg
960960 else throw("Strict value is not equal to itself.")
961961 }
962962 else throw("Strict value is not equal to itself.")
963963 }
964964 else throw("Strict value is not equal to itself.")
965965 }
966966 else throw("Strict value is not equal to itself.")
967967 }
968968 }
969969 else throw("Strict value is not equal to itself.")
970970 }
971971
972972
973973
974974 @Callable(dk)
975975 func getOneTknV2 (eD,eq) = if ((size(dk.payments) != 1))
976976 then throw("1 pmnt expd")
977977 else {
978978 let dq = aC()
979979 let bN = dq[q]
980980 let bO = dq[r]
981981 let bP = dq[s]
982982 let er = parseIntValue(dq[t])
983983 let es = parseIntValue(dq[u])
984984 let eP = dq[p]
985985 let bM = if ((dk.caller == this))
986986 then dk.originCaller
987987 else dk.caller
988988 let dl = value(dk.payments[0])
989989 let bK = value(dl.assetId)
990990 let cq = dl.amount
991991 if ((1000000000 > cq))
992992 then throw("Min pmt 10 LP")
993993 else {
994994 let bJ = toBase58String(dk.transactionId)
995995 if ((bN != toBase58String(bK)))
996996 then throw("Wrong LP")
997997 else {
998998 let cC = bI(bJ, toBase58String(bK), cq, dk.caller)
999999 let eE = cC._1
10001000 let eF = cC._2
10011001 let bU = ba(bO)
10021002 let bW = ba(bP)
10031003 let eH = {
10041004 let dz = invoke(this, "getOneTknV2READONLY", [eD, cq], nil)
10051005 if ($isInstanceOf(dz, "Int"))
10061006 then dz
10071007 else throw(($getType(invoke(this, "getOneTknV2READONLY", [eD, cq], nil)) + " couldn't be cast to Int"))
10081008 }
10091009 let eQ = if (if ((eq > 0))
10101010 then (eq > eH)
10111011 else false)
10121012 then throw(makeString(["amount to receive is less than ", toString(eq)], ""))
10131013 else eH
10141014 let eR = if ((eD == bO))
10151015 then $Tuple2(eQ, 0)
10161016 else $Tuple2(0, eQ)
10171017 let eK = eR._1
10181018 let eL = eR._2
10191019 let eM = bc(B(bW, es), B(bU, er))
10201020 let eN = E(eM, a)
10211021 let cg = [ScriptTransfer(bM, eQ, if ((eD == "WAVES"))
10221022 then unit
10231023 else fromBase58String(eD)), StringEntry(W(toString(bM), bJ), aW(eK, eL, cq, eN, height, lastBlock.timestamp)), IntegerEntry(P(), eN), IntegerEntry(Q(height, lastBlock.timestamp), eN)]
10241024 if ((cg == cg))
10251025 then {
10261026 let eO = invoke(ay, "burn", [cq], [AttachedPayment(bK, cq)])
10271027 if ((eO == eO))
10281028 then $Tuple2(cg, eQ)
10291029 else throw("Strict value is not equal to itself.")
10301030 }
10311031 else throw("Strict value is not equal to itself.")
10321032 }
10331033 }
10341034 }
10351035
10361036
10371037
10381038 @Callable(dk)
10391039 func getOneTknV2READONLY (eD,eS) = {
10401040 let dq = aC()
10411041 let bN = dq[q]
10421042 let bO = dq[r]
10431043 let bP = dq[s]
10441044 let cC = bI("", bN, eS, this)
10451045 let eE = cC._1
10461046 let eF = cC._2
10471047 let bU = ba(bO)
10481048 let bW = ba(bP)
10491049 let ds = (bU - eE)
10501050 let dt = (bW - eF)
10511051 let eT = if ((eD == bO))
10521052 then $Tuple3(dt, ds, eF)
10531053 else if ((eD == bP))
10541054 then $Tuple3(ds, dt, eE)
10551055 else throw("wrong outAssetId")
10561056 let eU = eT._1
10571057 let eV = eT._2
10581058 let eW = eT._3
10591059 let eX = 1
10601060 let eA = {
10611061 let dz = invoke(aK, "calcSwapXToY", [toString(eW), toString(eU), toString(eV), "", az, g, toString(eX), h], nil)
10621062 if ($isInstanceOf(dz, "Int"))
10631063 then dz
10641064 else throw(($getType(invoke(aK, "calcSwapXToY", [toString(eW), toString(eU), toString(eV), "", az, g, toString(eX), h], nil)) + " couldn't be cast to Int"))
10651065 }
10661066 let eH = (eA + (if ((eD == bO))
10671067 then eE
10681068 else eF))
10691069 $Tuple2(nil, eH)
10701070 }
10711071
10721072
10731073
10741074 @Callable(dk)
10751075 func getNoLess (eY,eZ) = {
10761076 let cC = dj(dk)
10771077 let ce = cC._1
10781078 let cf = cC._2
10791079 let cq = cC._3
10801080 let bK = cC._4
10811081 let cg = cC._5
10821082 if ((eY > ce))
10831083 then throw(((("Failed: " + toString(ce)) + " < ") + toString(eY)))
10841084 else if ((eZ > cf))
10851085 then throw(((("Failed: " + toString(cf)) + " < ") + toString(eZ)))
10861086 else {
10871087 let fa = invoke(ay, "burn", [cq], [AttachedPayment(bK, cq)])
10881088 if ((fa == fa))
10891089 then cg
10901090 else throw("Strict value is not equal to itself.")
10911091 }
10921092 }
10931093
10941094
10951095
10961096 @Callable(dk)
10971097 func unstakeAndGet (fb) = {
10981098 let fc = if ((size(dk.payments) != 0))
10991099 then throw("No pmnts expd")
11001100 else true
11011101 if ((fc == fc))
11021102 then {
11031103 let bz = aC()
11041104 let fd = aG()
11051105 let dF = fromBase58String(bz[q])
11061106 let fe = valueOrErrorMessage(addressFromString(fd[x]), "Wr st addr")
11071107 let ff = invoke(fe, "unstake", [toBase58String(dF), fb], nil)
11081108 if ((ff == ff))
11091109 then {
11101110 let cC = bI(toBase58String(dk.transactionId), toBase58String(dF), fb, dk.caller)
11111111 let bS = parseIntValue(cC._9)
11121112 let cg = cC._10
11131113 let fg = if (if (aA())
11141114 then true
11151115 else (bS == n))
11161116 then throw(("Blocked: " + toString(bS)))
11171117 else true
11181118 if ((fg == fg))
11191119 then {
11201120 let fh = invoke(ay, "burn", [fb], [AttachedPayment(dF, fb)])
11211121 if ((fh == fh))
11221122 then cg
11231123 else throw("Strict value is not equal to itself.")
11241124 }
11251125 else throw("Strict value is not equal to itself.")
11261126 }
11271127 else throw("Strict value is not equal to itself.")
11281128 }
11291129 else throw("Strict value is not equal to itself.")
11301130 }
11311131
11321132
11331133
11341134 @Callable(dk)
11351135 func unstakeAndGetOneTkn (fb,eC,eD,bi) = {
11361136 let fc = if ((size(dk.payments) != 0))
11371137 then throw("No pmnts expd")
11381138 else true
11391139 if ((fc == fc))
11401140 then {
11411141 let bz = aC()
11421142 let fd = aG()
11431143 let dF = fromBase58String(bz[q])
11441144 let fe = valueOrErrorMessage(addressFromString(fd[x]), "Wr st addr")
11451145 let ff = invoke(fe, "unstake", [toBase58String(dF), fb], nil)
11461146 if ((ff == ff))
11471147 then {
11481148 let fi = {
11491149 let dz = invoke(this, "getOneTknV2", [eC, eD, bi], [AttachedPayment(dF, fb)])
11501150 if ($isInstanceOf(dz, "Int"))
11511151 then dz
11521152 else unit
11531153 }
11541154 if ((fi == fi))
11551155 then $Tuple2(nil, fi)
11561156 else throw("Strict value is not equal to itself.")
11571157 }
11581158 else throw("Strict value is not equal to itself.")
11591159 }
11601160 else throw("Strict value is not equal to itself.")
11611161 }
11621162
11631163
11641164
11651165 @Callable(dk)
11661166 func activate (fj,fk) = if ((toString(dk.caller) != toString(ay)))
11671167 then throw("denied")
11681168 else $Tuple2([StringEntry(X(), fj), StringEntry(Y(), fk)], "success")
11691169
11701170
11711171
11721172 @Callable(dk)
11731173 func setS (fl,fg) = if ((toString(dk.caller) != au(this, aa())))
11741174 then dJ
11751175 else [StringEntry(fl, fg)]
11761176
11771177
11781178
11791179 @Callable(dk)
11801180 func setI (fl,fg) = if ((toString(dk.caller) != au(this, aa())))
11811181 then dJ
11821182 else [IntegerEntry(fl, fg)]
11831183
11841184
11851185
11861186 @Callable(dk)
11871187 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aC())
11881188
11891189
11901190
11911191 @Callable(dk)
11921192 func getAccBalanceWrapperREADONLY (bb) = $Tuple2(nil, ba(bb))
11931193
11941194
11951195
11961196 @Callable(dk)
11971197 func calcPricesWrapperREADONLY (bt,bu,by) = {
11981198 let fm = bx(bt, bu, by)
11991199 $Tuple2(nil, [toString(fm[0]), toString(fm[1]), toString(fm[2])])
12001200 }
12011201
12021202
12031203
12041204 @Callable(dk)
12051205 func fromX18WrapperREADONLY (F,fn) = $Tuple2(nil, E(parseBigIntValue(F), fn))
12061206
12071207
12081208
12091209 @Callable(dk)
12101210 func toX18WrapperREADONLY (C,D) = $Tuple2(nil, toString(B(C, D)))
12111211
12121212
12131213
12141214 @Callable(dk)
12151215 func calcPriceBigIntWrapperREADONLY (bd,be) = $Tuple2(nil, toString(bc(parseBigIntValue(bd), parseBigIntValue(be))))
12161216
12171217
12181218
12191219 @Callable(dk)
12201220 func estimatePutOperationWrapperREADONLY (bJ,bi,ci,cj,ck,cl,fo,cm,cn) = $Tuple2(nil, ch(bJ, bi, ci, cj, ck, cl, fo, cm, cn, true, false, 0, ""))
12211221
12221222
12231223
12241224 @Callable(dk)
12251225 func estimateGetOperationWrapperREADONLY (bJ,fp,bL,fo) = {
12261226 let cC = bI(bJ, fp, bL, addressFromStringValue(fo))
12271227 $Tuple2(nil, $Tuple10(cC._1, cC._2, cC._3, cC._4, cC._5, cC._6, cC._7, toString(cC._8), cC._9, cC._10))
12281228 }
12291229
12301230
12311231 @Verifier(fq)
12321232 func fr () = {
12331233 let fs = {
12341234 let as = dG()
12351235 if ($isInstanceOf(as, "ByteVector"))
12361236 then {
12371237 let dL = as
12381238 dL
12391239 }
12401240 else if ($isInstanceOf(as, "Unit"))
12411241 then fq.senderPublicKey
12421242 else throw("Match error")
12431243 }
12441244 let as = fq
12451245 if ($isInstanceOf(as, "Order"))
12461246 then {
12471247 let cX = as
12481248 let ft = aB()
12491249 let fu = cW(cX)
12501250 let fv = sigVerify(cX.bodyBytes, cX.proofs[0], cX.senderPublicKey)
12511251 let fw = sigVerify(cX.bodyBytes, cX.proofs[1], ft)
12521252 if (if (if (fu)
12531253 then fv
12541254 else false)
12551255 then fw
12561256 else false)
12571257 then true
12581258 else an(fu, fv, fw)
12591259 }
12601260 else if ($isInstanceOf(as, "SetScriptTransaction"))
12611261 then {
12621262 let dH = as
12631263 let fx = blake2b256(value(dH.script))
12641264 let fy = fromBase64String(value(getString(ay, am())))
12651265 let fz = scriptHash(this)
12661266 if (if ((fy == fx))
12671267 then (fz != fx)
12681268 else false)
12691269 then true
12701270 else sigVerify(fq.bodyBytes, fq.proofs[0], fs)
12711271 }
12721272 else sigVerify(fq.bodyBytes, fq.proofs[0], fs)
12731273 }
12741274

github/deemru/w8io/169f3d6 
131.51 ms