From 9ca4bf8afc1934a19b33cdf101740c17d360d280 Mon Sep 17 00:00:00 2001 From: benbierens Date: Mon, 7 Oct 2024 15:59:05 +0200 Subject: [PATCH] Updates marketplace plugin --- .../Marketplace/Marketplace.cs | 50 ++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/ProjectPlugins/CodexContractsPlugin/Marketplace/Marketplace.cs b/ProjectPlugins/CodexContractsPlugin/Marketplace/Marketplace.cs index 32e4cdad..3bce486b 100644 --- a/ProjectPlugins/CodexContractsPlugin/Marketplace/Marketplace.cs +++ b/ProjectPlugins/CodexContractsPlugin/Marketplace/Marketplace.cs @@ -15,7 +15,7 @@ namespace CodexContractsPlugin.Marketplace public class MarketplaceDeploymentBase : ContractDeploymentMessage { - public static string BYTECODE = "0x60c06040523480156200001157600080fd5b50604051620040ef380380620040ef8339810160408190526200003491620004f1565b60208301518051608052816101004311620000965760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e7420626c6f636b206865696768740000000000000060448201526064015b60405180910390fd5b81516000908155602083015160015560408301516002805460ff191660ff9092169190911790556060830151839190600390620000d4908262000691565b50608091909101516004909101805460ff191660ff928316179055600580546001600160a01b0319166001600160a01b0393841617905590841660a05284515160649116111590506200016a5760405162461bcd60e51b815260206004820152601560248201527f4d757374206265206c657373207468616e20313030000000000000000000000060448201526064016200008d565b606483600001516060015160ff161115620001c85760405162461bcd60e51b815260206004820152601560248201527f4d757374206265206c657373207468616e20313030000000000000000000000060448201526064016200008d565b82516060810151602090910151606491620001e3916200075d565b60ff161115620002365760405162461bcd60e51b815260206004820152601d60248201527f4d6178696d756d20736c617368696e672065786365656473203130302500000060448201526064016200008d565b82518051600d805460208085015160408087015160609788015160ff9081166401000000000260ff60201b1961ffff90931662010000029290921664ffffff0000199482166101000261ffff1990971698821698909817959095179290921695909517178355808801518051600e90815591810151600f5593840151601080549190931660ff19919091161790915592820151869391929190601190620002de908262000691565b50608091909101516004909101805460ff191660ff909216919091179055506200078f9350505050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b038111828210171562000343576200034362000308565b60405290565b604080519081016001600160401b038111828210171562000343576200034362000308565b604051608081016001600160401b038111828210171562000343576200034362000308565b604051601f8201601f191681016001600160401b0381118282101715620003be57620003be62000308565b604052919050565b805160ff81168114620003d857600080fd5b919050565b600060a08284031215620003f057600080fd5b620003fa6200031e565b905081518152602080830151818301526200041860408401620003c6565b604083015260608301516001600160401b03808211156200043857600080fd5b818501915085601f8301126200044d57600080fd5b81518181111562000462576200046262000308565b62000476601f8201601f1916850162000393565b915080825286848285010111156200048d57600080fd5b60005b81811015620004ad57838101850151838201860152840162000490565b50600084828401015250806060850152505050620004ce60808301620003c6565b608082015292915050565b80516001600160a01b0381168114620003d857600080fd5b6000806000606084860312156200050757600080fd5b83516001600160401b03808211156200051f57600080fd5b9085019081870360a08112156200053557600080fd5b6200053f62000349565b60808212156200054e57600080fd5b620005586200036e565b91506200056584620003c6565b82526200057560208501620003c6565b6020830152604084015161ffff811681146200059057600080fd5b6040830152620005a360608501620003c6565b606083015290815260808301519082821115620005bf57600080fd5b620005cd89838601620003dd565b602082015280965050505050620005e760208501620004d9565b9150620005f760408501620004d9565b90509250925092565b600181811c908216806200061557607f821691505b6020821081036200063657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200068c576000816000526020600020601f850160051c81016020861015620006675750805b601f850160051c820191505b81811015620006885782815560010162000673565b5050505b505050565b81516001600160401b03811115620006ad57620006ad62000308565b620006c581620006be845462000600565b846200063c565b602080601f831160018114620006fd5760008415620006e45750858301515b600019600386901b1c1916600185901b17855562000688565b600085815260208120601f198616915b828110156200072e578886015182559484019460019091019084016200070d565b50858210156200074d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60ff81811683821602908116908181146200078857634e487b7160e01b600052601160045260246000fd5b5092915050565b60805160a051613909620007e6600039600081816104060152818161167c0152818161203a015281816120d90152818161224e015281816122ed015261250f0152600081816129c60152612b3d01526139096000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c80639777b72c116100e3578063c0cc4add1161008c578063f752196b11610066578063f752196b146103c4578063fb1e61ca146103e4578063fc0c546a1461040457600080fd5b8063c0cc4add1461038b578063c5d433511461039e578063e8aa0a07146103b157600080fd5b8063a6af384b116100bd578063a6af384b14610338578063b396dc791461034b578063be5cdc481461036b57600080fd5b80639777b72c146102fa578063a29c29a414610302578063a3a0807e1461031557600080fd5b80634641dce6116101455780636b00c8cf1161011f5780636b00c8cf1461028e5780636e2b54ee146102d257806379502c55146102e557600080fd5b80634641dce61461024157806359cc89ed146102665780635da738351461027957600080fd5b80630aefaabe116101765780630aefaabe146101f8578063329b5a0b1461020b578063458d2bf11461022e57600080fd5b806302fa8e651461019d57806305b90773146101c357806308695fcd146101e3575b600080fd5b6101b06101ab366004612d73565b61042a565b6040519081526020015b60405180910390f35b6101d66101d1366004612d73565b6104a1565b6040516101ba9190612da2565b6101f66101f1366004612dbc565b6105b3565b005b6101f6610206366004612df3565b610709565b6101b0610219366004612d73565b60009081526014602052604090206005015490565b6101b061023c366004612d73565b6108e6565b61025461024f366004612d73565b6108ff565b60405160ff90911681526020016101ba565b6101f6610274366004612e48565b610912565b610281610c16565b6040516101ba9190612e7f565b6102ba61029c366004612d73565b6000908152601560205260409020600501546001600160a01b031690565b6040516001600160a01b0390911681526020016101ba565b6101f66102e0366004612d73565b610c3d565b6102ed610c4a565b6040516101ba9190612f09565b610281610dd3565b6101f6610310366004612d73565b610df2565b610328610323366004612d73565b610e62565b60405190151581526020016101ba565b6101f6610346366004612fa4565b610e97565b61035e610359366004612d73565b6111ec565b6040516101ba91906130ad565b61037e610379366004612d73565b6113d5565b6040516101ba91906130df565b610328610399366004612d73565b6114a3565b6101f66103ac3660046130f3565b6114b6565b6101f66103bf366004613123565b6116f5565b6101b06103d2366004612d73565b60009081526008602052604090205490565b6103f76103f2366004612d73565b61182a565b6040516101ba9190613151565b7f00000000000000000000000000000000000000000000000000000000000000006102ba565b60008181526014602052604081206004015481610446846104a1565b9050600081600481111561045c5761045c612d8c565b14806104795750600181600481111561047757610477612d8c565b145b15610485575092915050565b6104998261049460014261317a565b6119e1565b949350505050565b60008181526013602052604081205482906001600160a01b03166104fe5760405162461bcd60e51b815260206004820152600f60248201526e155b9adb9bdddb881c995c5d595cdd608a1b60448201526064015b60405180910390fd5b600083815260146020526040812090815460ff16600481111561052357610523612d8c565b148015610540575060008481526014602052604090206005015442115b1561054f5760029250506105ad565b6001815460ff16600481111561056757610567612d8c565b148061058857506000815460ff16600481111561058657610586612d8c565b145b80156105975750806004015442115b156105a65760039250506105ad565b5460ff1691505b50919050565b60016105be836113d5565b60058111156105cf576105cf612d8c565b1461061c5760405162461bcd60e51b815260206004820152601960248201527f536c6f74206e6f7420616363657074696e672070726f6f66730000000000000060448201526064016104f5565b61062682826119f9565b6000828152601560209081526040808320600181015484526013909252909120600d5461ffff620100009091041661066a8560009081526008602052604090205490565b61067491906131a3565b60000361070357600d54600682015460009160649161069e91640100000000900460ff16906131b7565b6106a891906131ce565b9050808360040160008282546106be919061317a565b9091555050600d54600086815260086020526040902054610100820460ff169162010000900461ffff16906106f391906131ce565b106107015761070185611c26565b505b50505050565b826000808281526015602052604090205460ff16600581111561072e5761072e612d8c565b0361076a5760405162461bcd60e51b815260206004820152600c60248201526b536c6f74206973206672656560a01b60448201526064016104f5565b600084815260156020526040902060058101546001600160a01b031633146107d45760405162461bcd60e51b815260206004820152601960248201527f536c6f742066696c6c6564206279206f7468657220686f73740000000000000060448201526064016104f5565b60006107df866113d5565b905060048160058111156107f5576107f5612d8c565b036108425760405162461bcd60e51b815260206004820152600c60248201527f416c72656164792070616964000000000000000000000000000000000000000060448201526064016104f5565b600281600581111561085657610856612d8c565b036108705761086b8260010154878787611dcc565b6108de565b600581600581111561088457610884612d8c565b036108995761086b826001015487878761215e565b60038160058111156108ad576108ad612d8c565b036108bc5761086b3387612370565b60018160058111156108d0576108d0612d8c565b036108de576108de86611c26565b505050505050565b60006108f9826108f4612397565b6123a2565b92915050565b60006108f98261090d612397565b6123b6565b60008381526013602052604090205483906001600160a01b031661096a5760405162461bcd60e51b815260206004820152600f60248201526e155b9adb9bdddb881c995c5d595cdd608a1b60448201526064016104f5565b6000848152601360205260409020600181015467ffffffffffffffff1684106109d55760405162461bcd60e51b815260206004820152600c60248201527f496e76616c696420736c6f74000000000000000000000000000000000000000060448201526064016104f5565b6040805160208082018890528183018790528251808303840181526060909201909252805191012060009060008181526015602052604081206001810189905560038101889055919250610a28836113d5565b6005811115610a3957610a39612d8c565b14610a865760405162461bcd60e51b815260206004820152601060248201527f536c6f74206973206e6f7420667265650000000000000000000000000000000060448201526064016104f5565b600483015460008381526006602090815260408083204290556007909152902055610ab182866116f5565b60058101805473ffffffffffffffffffffffffffffffffffffffff191633179055805460ff191660019081178255426002830155600088815260146020526040812080830180549193929091610b089084906131e2565b90915550610b189050884261242a565b816002016000828254610b2b919061317a565b90915550506006840154610b3f33826124c7565b8060166000016000828254610b5491906131e2565b9091555050600483018190556005830154610b78906001600160a01b0316856125ca565b887ff530852268993f91008f1a1e0b09b5c813acd4188481f1fa83c33c7182e814b489604051610baa91815260200190565b60405180910390a26001808601549083015467ffffffffffffffff9091169003610c0b57815460ff1916600117825542600383015560405189907f85e1543bf2f84fe80c6badbce3648c8539ad1df4d2b3d822938ca0538be727e690600090a25b505050505050505050565b336000908152600c60205260409020606090610c3890610c35906125ec565b90565b905090565b610c4781336114b6565b50565b610ca86040805160c0810182526000918101828152606082018390526080820183905260a082019290925290819081526040805160a08101825260008082526020828101829052928201819052606080830152608082015291015290565b6040805160c081018252600d805460ff8082168486019081526101008304821660608087019190915261ffff620100008504166080870152640100000000909304821660a08087019190915290855285519081018652600e80548252600f54602083810191909152601054909316968201969096526011805495969495928701949193919291840191610d3a906131f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610d66906131f5565b8015610db35780601f10610d8857610100808354040283529160200191610db3565b820191906000526020600020905b815481529060010190602001808311610d9657829003601f168201915b50505091835250506004919091015460ff16602090910152905250919050565b336000908152600b60205260409020606090610c3890610c35906125ec565b806000808281526015602052604090205460ff166005811115610e1757610e17612d8c565b03610e535760405162461bcd60e51b815260206004820152600c60248201526b536c6f74206973206672656560a01b60448201526064016104f5565b610e5e823333610709565b5050565b6000806000610e7884610e73612397565b6125f9565b9092509050818015610499575060025460ff9081169116109392505050565b33610ea56020830183613229565b6001600160a01b031614610efb5760405162461bcd60e51b815260206004820152601660248201527f496e76616c696420636c69656e7420616464726573730000000000000000000060448201526064016104f5565b6000610f0e610f09836133bb565b6126dc565b6000818152601360205260409020549091506001600160a01b031615610f765760405162461bcd60e51b815260206004820152601660248201527f5265717565737420616c7265616479206578697374730000000000000000000060448201526064016104f5565b6000826101200135118015610f9357506060820135610120830135105b610fdf5760405162461bcd60e51b815260206004820152601360248201527f457870697279206e6f7420696e2072616e67650000000000000000000000000060448201526064016104f5565b6000610ff160408401602085016134aa565b67ffffffffffffffff16116110485760405162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e7420736c6f7473000000000000000000000000000060448201526064016104f5565b61105860408301602084016134aa565b67ffffffffffffffff16611073610100840160e085016134aa565b67ffffffffffffffff1611156110cb5760405162461bcd60e51b815260206004820152601960248201527f6d6178536c6f744c6f7373206578636565647320736c6f74730000000000000060448201526064016104f5565b600081815260136020526040902082906110e58282613635565b506110f690506060830135426131e2565b600082815260146020526040902060040155611117610120830135426131e2565b6000828152601460209081526040909120600501919091556111459061113f90840184613229565b8261270c565b6000611158611153846133bb565b61272e565b60008381526014602052604081206002018290556016805492935083929091906111839084906131e2565b90915550611193905033826124c7565b7f5fdb86c365a247a4d97dcbcc5c3abde9d6e3e2de26273f3fda8eef5073b9a96c828460200160146000868152602001908152602001600020600501546040516111df9392919061372d565b60405180910390a1505050565b6111f4612cab565b816000808281526015602052604090205460ff16600581111561121957611219612d8c565b036112555760405162461bcd60e51b815260206004820152600c60248201526b536c6f74206973206672656560a01b60448201526064016104f5565b600083815260156020526040902061126b612cab565b600180830154600090815260136020908152604091829020825160a0808201855282546001600160a01b03168252845160e0810186529583015467ffffffffffffffff9081168752600284015487860152600384015487870152600484015460608801526005840154608088015260068401549187019190915260078301541660c0860152918201939093528151808301835260088401805492949385019282908290611317906131f5565b80601f0160208091040260200160405190810160405280929190818152602001828054611343906131f5565b80156113905780601f1061136557610100808354040283529160200191611390565b820191906000526020600020905b81548152906001019060200180831161137357829003601f168201915b505050918352505060019190910154602091820152908252600a83015482820152600b9092015460409091015290825260039092015491810191909152915050919050565b6000818152601560205260408120600181015482036113f75750600092915050565b600061140682600101546104a1565b90506004825460ff16600581111561142057611420612d8c565b0361142f575060049392505050565b600281600481111561144357611443612d8c565b03611452575060059392505050565b600381600481111561146657611466612d8c565b03611475575060029392505050565b600481600481111561148957611489612d8c565b03611498575060039392505050565b505460ff1692915050565b60006108f9826114b1612397565b612753565b600082815260136020908152604080832060149092529091206005015442116115215760405162461bcd60e51b815260206004820152601960248201527f52657175657374206e6f74207965742074696d6564206f75740000000000000060448201526064016104f5565b80546001600160a01b0316331461157a5760405162461bcd60e51b815260206004820152601660248201527f496e76616c696420636c69656e7420616464726573730000000000000000000060448201526064016104f5565b600083815260146020526040812090815460ff16600481111561159f5761159f612d8c565b146115ec5760405162461bcd60e51b815260206004820152600d60248201527f496e76616c69642073746174650000000000000000000000000000000000000060448201526064016104f5565b805460ff19166002178155815461160c906001600160a01b031685612786565b60405184907ff903f4774c7bd27355f9d7fcbc382b079b164a697a44ac5d95267a4c3cb3bb2290600090a26002810154601780548291906000906116519084906131e2565b909155505060405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af11580156116c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e991906137a9565b610701576107016137cb565b6000828152601560209081526040808320600101548084526013909252909120546001600160a01b031661175d5760405162461bcd60e51b815260206004820152600f60248201526e155b9adb9bdddb881c995c5d595cdd608a1b60448201526064016104f5565b6000838152601560209081526040808320600181015484526013835281842082516003808252608082019094529194909390929082016060803683370190505090506117b06117ab876108e6565b6127a8565b816000815181106117c3576117c36137e1565b602090810291909101015260098201546117dc906127b9565b816001815181106117ef576117ef6137e1565b602002602001018181525050826003015481600281518110611813576118136137e1565b6020026020010181815250506108de8686836127c5565b611832612ccb565b60008281526013602052604090205482906001600160a01b031661188a5760405162461bcd60e51b815260206004820152600f60248201526e155b9adb9bdddb881c995c5d595cdd608a1b60448201526064016104f5565b600083815260136020908152604091829020825160a0808201855282546001600160a01b03168252845160e081018652600184015467ffffffffffffffff90811682526002850154828701526003850154828801526004850154606083015260058501546080830152600685015492820192909252600784015490911660c08201529281019290925282518084018452600882018054939492939285019282908290611935906131f5565b80601f0160208091040260200160405190810160405280929190818152602001828054611961906131f5565b80156119ae5780601f10611983576101008083540402835291602001916119ae565b820191906000526020600020905b81548152906001019060200180831161199157829003601f168201915b505050505081526020016001820154815250508152602001600a8201548152602001600b82015481525050915050919050565b60008183106119f057816119f2565b825b9392505050565b6000611a0482612984565b9050428110611a555760405162461bcd60e51b815260206004820152601860248201527f506572696f6420686173206e6f7420656e64656420796574000000000000000060448201526064016104f5565b600154611a6290826131e2565b4210611ab05760405162461bcd60e51b815260206004820152601460248201527f56616c69646174696f6e2074696d6564206f757400000000000000000000000060448201526064016104f5565b600083815260096020908152604080832085845290915290205460ff1615611b1a5760405162461bcd60e51b815260206004820181905260248201527f50726f6f6620776173207375626d69747465642c206e6f74206d697373696e6760448201526064016104f5565b611b248383612753565b611b705760405162461bcd60e51b815260206004820152601660248201527f50726f6f6620776173206e6f742072657175697265640000000000000000000060448201526064016104f5565b6000838152600a6020908152604080832085845290915290205460ff1615611bda5760405162461bcd60e51b815260206004820152601f60248201527f50726f6f6620616c7265616479206d61726b6564206173206d697373696e670060448201526064016104f5565b6000838152600a602090815260408083208584528252808320805460ff1916600190811790915586845260089092528220805491929091611c1c9084906131e2565b9091555050505050565b60008181526015602090815260408083206001810154808552601490935292206005830154611c5e906001600160a01b031685612370565b6003808401546000868152601560205260408120805460ff1916815560018082018390556002820183905593810182905560048101829055600501805473ffffffffffffffffffffffffffffffffffffffff191690558383018054929392909190611cca90849061317a565b909155505060405181815283907f1d31c9f8dea6e179f6a050db117595feea8937029ea51f5168a4780be7e8f5529060200160405180910390a2600085815260086020526040812055600083815260136020526040812060018085015490820154919291611d42919067ffffffffffffffff1661317a565b600783015490915067ffffffffffffffff1681118015611d7757506001845460ff166004811115611d7557611d75612d8c565b145b15611dc357835460ff19166004178455611d9260014261317a565b600485015560405185907f4769361a442504ecaf038f35e119bcccdd5e42096b24c09e3c17fd17c6684c0290600090a25b50505050505050565b60008481526013602052604090205484906001600160a01b0316611e245760405162461bcd60e51b815260206004820152600f60248201526e155b9adb9bdddb881c995c5d595cdd608a1b60448201526064016104f5565b60008581526014602090815260408083206013909252909120815460ff191660031782558054611e5d906001600160a01b031688612786565b60008681526015602052604090206005810154611e83906001600160a01b031688612370565b6000888152601360209081526040808320815160a0808201845282546001600160a01b03168252835160e081018552600184015467ffffffffffffffff90811682526002850154828801526003850154828701526004850154606083015260058501546080830152600685015492820192909252600784015490911660c08201529381019390935281518083018352600882018054611fd89594850192919082908290611f2f906131f5565b80601f0160208091040260200160405190810160405280929190818152602001828054611f5b906131f5565b8015611fa85780601f10611f7d57610100808354040283529160200191611fa8565b820191906000526020600020905b815481529060010190602001808311611f8b57829003601f168201915b505050505081526020016001820154815250508152602001600a8201548152602001600b82015481525050612997565b6004830154909150611fea81836131e2565b60178054600090611ffc9084906131e2565b90915550508254600490849060ff1916600183021790555060405163a9059cbb60e01b81526001600160a01b038981166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015612083573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a791906137a9565b6120b3576120b36137cb565b60405163a9059cbb60e01b81526001600160a01b038881166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015612122573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214691906137a9565b612152576121526137cb565b50505050505050505050565b60008481526013602052604090205484906001600160a01b03166121b65760405162461bcd60e51b815260206004820152600f60248201526e155b9adb9bdddb881c995c5d595cdd608a1b60448201526064016104f5565b600084815260156020526040902060058101546121dc906001600160a01b031686612370565b60006121ec87836002015461242a565b60048301549091506121fe81836131e2565b601780546000906122109084906131e2565b90915550508254600490849060ff1916600183021790555060405163a9059cbb60e01b81526001600160a01b038781166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015612297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122bb91906137a9565b6122c7576122c76137cb565b60405163a9059cbb60e01b81526001600160a01b038681166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015612336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235a91906137a9565b612366576123666137cb565b5050505050505050565b6001600160a01b0382166000908152600c6020526040902061239290826129b3565b505050565b6000610c38426129bf565b60006119f26123b184846123b6565b6129eb565b6000806123c5610100436131a3565b600454909150600090610100906123df9060ff16866131b7565b6123e991906131a3565b905060006123f9610100876131a3565b905060006101008261240b85876131e2565b61241591906131e2565b61241f91906131a3565b979650505050505050565b6000828152601360209081526040808320601490925282206005015483106124945760405162461bcd60e51b815260206004820152601760248201527f5374617274206e6f74206265666f72652065787069727900000000000000000060448201526064016104f5565b6005810154836124b38660009081526014602052604090206005015490565b6124bd919061317a565b61049991906131b7565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152306024830181905260448301849052917f0000000000000000000000000000000000000000000000000000000000000000909116906323b872dd906064016020604051808303816000875af115801561255a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257e91906137a9565b6123925760405162461bcd60e51b815260206004820152600f60248201527f5472616e73666572206661696c6564000000000000000000000000000000000060448201526064016104f5565b6001600160a01b0382166000908152600c602052604090206123929082612a45565b606060006119f283612a51565b6000806000612607856113d5565b60008681526006602052604081205491925090612623906129bf565b9050600182600581111561263957612639612d8c565b14158061264d575061264b8582612aad565b155b15612660576000809350935050506126d5565b61266a86866123b6565b92506000612677846129eb565b600254909150600090610100906126919060ff16826137f7565b60008a8152600760205260409020546126ae9161ffff16906131b7565b6126b891906131ce565b90508015806126ce57506126cc81836131a3565b155b9550505050505b9250929050565b6000816040516020016126ef9190613151565b604051602081830303815290604052805190602001209050919050565b6001600160a01b0382166000908152600b602052604090206123929082612a45565b600061273982612997565b6020830151516108f9919067ffffffffffffffff166131b7565b600080600061276285856125f9565b909250905081801561277d575060025460ff90811690821610155b95945050505050565b6001600160a01b0382166000908152600b6020526040902061239290826129b3565b600060ff1982168161049982612ab7565b6000806119f283612ab7565b6000838152600960205260408120906127dc612397565b815260208101919091526040016000205460ff161561283d5760405162461bcd60e51b815260206004820152601760248201527f50726f6f6620616c7265616479207375626d697474656400000000000000000060448201526064016104f5565b6005546040517f94c8919d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906394c8919d906128889085908590600401613812565b602060405180830381865afa1580156128a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c991906137a9565b6129155760405162461bcd60e51b815260206004820152600d60248201527f496e76616c69642070726f6f660000000000000000000000000000000000000060448201526064016104f5565b600083815260096020526040812060019161292e612397565b815260200190815260200160002060006101000a81548160ff0219169083151502179055507f3b989d183b84b02259d7c14b34a9c9eb0fccb4c355a920d25e581e25aef4993d836040516111df91815260200190565b60006108f961299283612b29565b612b36565b602081015160808101516040909101516000916108f9916131b7565b60006119f28383612b62565b60006108f97f0000000000000000000000000000000000000000000000000000000000000000836131ce565b60008060ff83166129fd60014361317a565b612a07919061317a565b4090506000819003612a1b57612a1b6137cb565b60408051602081018390520160405160208183030381529060405280519060200120915050919050565b60006119f28383612c5c565b606081600001805480602002602001604051908101604052809291908181526020018280548015612aa157602002820191906000526020600020905b815481526020019060010190808311612a8d575b50505050509050919050565b60008183116119f2565b7fff00000000000000000000000000000000000000000000000000000000000000811660015b60208110156105ad57600891821c91612af79082906131b7565b83901b7fff00000000000000000000000000000000000000000000000000000000000000169190911790600101612add565b60006108f98260016131e2565b60006108f97f0000000000000000000000000000000000000000000000000000000000000000836131b7565b60008181526001830160205260408120548015612c4b576000612b8660018361317a565b8554909150600090612b9a9060019061317a565b9050818114612bff576000866000018281548110612bba57612bba6137e1565b9060005260206000200154905080876000018481548110612bdd57612bdd6137e1565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612c1057612c106138bd565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506108f9565b60009150506108f9565b5092915050565b6000818152600183016020526040812054612ca3575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556108f9565b5060006108f9565b6040518060400160405280612cbe612ccb565b8152602001600081525090565b6040518060a0016040528060006001600160a01b03168152602001612d3a6040518060e00160405280600067ffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600067ffffffffffffffff1681525090565b8152602001612d5f604051806040016040528060608152602001600080191681525090565b815260006020820181905260409091015290565b600060208284031215612d8557600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6020810160058310612db657612db6612d8c565b91905290565b60008060408385031215612dcf57600080fd5b50508035926020909101359150565b6001600160a01b0381168114610c4757600080fd5b600080600060608486031215612e0857600080fd5b833592506020840135612e1a81612dde565b91506040840135612e2a81612dde565b809150509250925092565b600061010082840312156105ad57600080fd5b60008060006101408486031215612e5e57600080fd5b8335925060208401359150612e768560408601612e35565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015612eb757835183529284019291840191600101612e9b565b50909695505050505050565b6000815180845260005b81811015612ee957602081850181015186830182015201612ecd565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000825160ff815116602084015260ff602082015116604084015261ffff604082015116606084015260ff606082015116608084015250602083015160a080840152805160c0840152602081015160e084015260ff604082015116610100840152606081015160a0610120850152612f89610160850182612ec3565b905060ff608083015116610140850152809250505092915050565b600060208284031215612fb657600080fd5b813567ffffffffffffffff811115612fcd57600080fd5b820161016081850312156119f257600080fd5b6000815160408452612ff56040850182612ec3565b602093840151949093019390935250919050565b60006101606001600160a01b038351168452602083015167ffffffffffffffff808251166020870152602082015160408701526040820151606087015260608201516080870152608082015160a087015260a082015160c08701528060c08301511660e0870152505060408301518161010086015261308a82860182612fe0565b915050606083015161012085015260808301516101408501528091505092915050565b6020815260008251604060208401526130c96060840182613009565b9050602084015160408401528091505092915050565b6020810160068310612db657612db6612d8c565b6000806040838503121561310657600080fd5b82359150602083013561311881612dde565b809150509250929050565b600080610120838503121561313757600080fd5b823591506131488460208501612e35565b90509250929050565b6020815260006119f26020830184613009565b634e487b7160e01b600052601160045260246000fd5b818103818111156108f9576108f9613164565b634e487b7160e01b600052601260045260246000fd5b6000826131b2576131b261318d565b500690565b80820281158282048414176108f9576108f9613164565b6000826131dd576131dd61318d565b500490565b808201808211156108f9576108f9613164565b600181811c9082168061320957607f821691505b6020821081036105ad57634e487b7160e01b600052602260045260246000fd5b60006020828403121561323b57600080fd5b81356119f281612dde565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561327f5761327f613246565b60405290565b60405160a0810167ffffffffffffffff8111828210171561327f5761327f613246565b60405160e0810167ffffffffffffffff8111828210171561327f5761327f613246565b604051601f8201601f1916810167ffffffffffffffff811182821017156132f4576132f4613246565b604052919050565b67ffffffffffffffff81168114610c4757600080fd5b60006040828403121561332457600080fd5b61332c61325c565b9050813567ffffffffffffffff8082111561334657600080fd5b818401915084601f83011261335a57600080fd5b813560208282111561336e5761336e613246565b613380601f8301601f191682016132cb565b9250818352868183860101111561339657600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b60008136036101608112156133cf57600080fd5b6133d7613285565b83356133e281612dde565b815260e0601f19830112156133f657600080fd5b6133fe6132a8565b9150602084013561340e816132fc565b8083525060408401356020830152606084013560408301526080840135606083015260a0840135608083015260c084013560a083015260e0840135613452816132fc565b60c083015260208101919091526101008301359067ffffffffffffffff82111561347b57600080fd5b61348736838601613312565b604082015261012084013560608201526101409093013560808401525090919050565b6000602082840312156134bc57600080fd5b81356119f2816132fc565b600081356108f9816132fc565b60008235603e198336030181126134ea57600080fd5b9190910192915050565b601f821115612392576000816000526020600020601f850160051c8101602086101561351d5750805b601f850160051c820191505b818110156108de57828155600101613529565b8135601e1983360301811261355057600080fd5b8201803567ffffffffffffffff81111561356957600080fd5b6020813603818401131561357c57600080fd5b6135908261358a86546131f5565b866134f4565b6000601f8311600181146135c657600084156135ae57508482018301355b600019600386901b1c1916600185901b178655613623565b600086815260209020601f19851690835b828110156135f85787850186013582559385019360019091019085016135d7565b50858210156136175760001960f88760031b161c198585890101351681555b505060018460011b0186555b50508085013560018501555050505050565b813561364081612dde565b6001600160a01b03811673ffffffffffffffffffffffffffffffffffffffff19835416178255506020820135613675816132fc565b60018201805467ffffffffffffffff191667ffffffffffffffff83161790555060408201356002820155606082013560038201556080820135600482015560a0820135600582015560c082013560068201556136f96136d660e084016134c7565b6007830167ffffffffffffffff821667ffffffffffffffff198254161781555050565b61371361370a6101008401846134d4565b6008830161353c565b610120820135600a820155610140820135600b8201555050565b83815261012081018335613740816132fc565b67ffffffffffffffff8082166020850152602086013560408501526040860135606085015260608601356080850152608086013560a085015260a086013560c085015260c08601359150613793826132fc565b1660e08301526101009091019190915292915050565b6000602082840312156137bb57600080fd5b815180151581146119f257600080fd5b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b61ffff828116828216039080821115612c5557612c55613164565b82358152602080840135908201526000610120828101613842604085016040880180358252602090810135910152565b61385c608085016080880180358252602090810135910152565b61387660c0850160c0880180358252602090810135910152565b61010084019190915283519081905261014083019060209081860160005b828110156138b057815185529383019390830190600101613894565b5092979650505050505050565b634e487b7160e01b600052603160045260246000fdfea264697066735822122015a141e4ecbbd0c6915752ab63ac2324215c9e96212cb8d31d2fe04dcc8546af64736f6c63430008170033"; + public static string BYTECODE = "0x60c06040523480156200001157600080fd5b50604051620043a8380380620043a8833981016040819052620000349162000571565b602083015180516040850151516001805460ff191660ff909216919091179055608052816101004311620000af5760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e7420626c6f636b206865696768740000000000000060448201526064015b60405180910390fd5b81516002908155602083015160035560408301516004805460ff191660ff9092169190911790556060830151839190600590620000ed908262000724565b50608091909101516004909101805460ff191660ff928316179055600780546001600160a01b0319166001600160a01b0393841617905590841660a0528451516064911611159050620001835760405162461bcd60e51b815260206004820152601560248201527f4d757374206265206c657373207468616e2031303000000000000000000000006044820152606401620000a6565b606483600001516060015160ff161115620001e15760405162461bcd60e51b815260206004820152601560248201527f4d757374206265206c657373207468616e2031303000000000000000000000006044820152606401620000a6565b82516060810151602090910151606491620001fc91620007f0565b60ff1611156200024f5760405162461bcd60e51b815260206004820152601d60248201527f4d6178696d756d20736c617368696e67206578636565647320313030250000006044820152606401620000a6565b82518051600f805460208085015160408087015160609788015160ff9081166401000000000260ff60201b1961ffff90931662010000029290921664ffffff0000199482166101000261ffff199097169882169890981795909517929092169590951717835580880151805160109081559181015160115593840151601280549190931660ff19919091161790915592820151869391929190601390620002f7908262000724565b50608091909101516004909101805460ff1990811660ff938416179091556040939093015151600692909201805490931691161790555062000822915050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b038111828210171562000372576200037262000337565b60405290565b604051606081016001600160401b038111828210171562000372576200037262000337565b604051608081016001600160401b038111828210171562000372576200037262000337565b604051601f8201601f191681016001600160401b0381118282101715620003ed57620003ed62000337565b604052919050565b805160ff811681146200040757600080fd5b919050565b600060a082840312156200041f57600080fd5b620004296200034d565b905081518152602080830151818301526200044760408401620003f5565b604083015260608301516001600160401b03808211156200046757600080fd5b818501915085601f8301126200047c57600080fd5b81518181111562000491576200049162000337565b620004a5601f8201601f19168501620003c2565b91508082528684828501011115620004bc57600080fd5b60005b81811015620004dc578381018501518382018601528401620004bf565b50600084828401015250806060850152505050620004fd60808301620003f5565b608082015292915050565b6000602082840312156200051b57600080fd5b604051602081016001600160401b038111828210171562000540576200054062000337565b6040529050806200055183620003f5565b905292915050565b80516001600160a01b03811681146200040757600080fd5b6000806000606084860312156200058757600080fd5b83516001600160401b03808211156200059f57600080fd5b9085019081870360c0811215620005b557600080fd5b620005bf62000378565b6080821215620005ce57600080fd5b620005d86200039d565b9150620005e584620003f5565b8252620005f560208501620003f5565b6020830152604084015161ffff811681146200061057600080fd5b60408301526200062360608501620003f5565b6060830152908152608083015190828211156200063f57600080fd5b6200064d898386016200040c565b6020820152620006618960a0860162000508565b604082015295506200067a925050506020850162000559565b91506200068a6040850162000559565b90509250925092565b600181811c90821680620006a857607f821691505b602082108103620006c957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200071f576000816000526020600020601f850160051c81016020861015620006fa5750805b601f850160051c820191505b818110156200071b5782815560010162000706565b5050505b505050565b81516001600160401b0381111562000740576200074062000337565b620007588162000751845462000693565b84620006cf565b602080601f831160018114620007905760008415620007775750858301515b600019600386901b1c1916600185901b1785556200071b565b600085815260208120601f198616915b82811015620007c157888601518255948401946001909101908401620007a0565b5085821015620007e05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60ff81811683821602908116908181146200081b57634e487b7160e01b600052601160045260246000fd5b5092915050565b60805160a051613b2f62000879600039600081816104420152818161185b01528181612219015281816122b80152818161242d015281816124cc0152612715015260008181612bde0152612da40152613b2f6000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c806379502c55116100ee578063be5cdc4811610097578063e8aa0a0711610071578063e8aa0a07146103ed578063f752196b14610400578063fb1e61ca14610420578063fc0c546a1461044057600080fd5b8063be5cdc48146103a7578063c0cc4add146103c7578063c5d43351146103da57600080fd5b8063a3a0807e116100c8578063a3a0807e14610361578063a6af384b14610374578063b396dc791461038757600080fd5b806379502c55146103315780639777b72c14610346578063a29c29a41461034e57600080fd5b80634641dce61161015b5780635da73835116101355780635da73835146102b257806362d48e13146102c75780636b00c8cf146102da5780636e2b54ee1461031e57600080fd5b80634641dce6146102575780634802f44b1461027c57806359cc89ed1461029f57600080fd5b80630aefaabe1161018c5780630aefaabe1461020e578063329b5a0b14610221578063458d2bf11461024457600080fd5b806302fa8e65146101b357806305b90773146101d957806308695fcd146101f9575b600080fd5b6101c66101c1366004612f8b565b610466565b6040519081526020015b60405180910390f35b6101ec6101e7366004612f8b565b6104dd565b6040516101d09190612fba565b61020c610207366004612fd4565b6105ef565b005b61020c61021c36600461300b565b610745565b6101c661022f366004612f8b565b60009081526017602052604090206005015490565b6101c6610252366004612f8b565b610922565b61026a610265366004612f8b565b61093b565b60405160ff90911681526020016101d0565b61028f61028a366004612fd4565b61094e565b60405190151581526020016101d0565b61020c6102ad366004613060565b6109c9565b6102ba610ccd565b6040516101d09190613097565b61020c6102d5366004612fd4565b610cf4565b6103066102e8366004612f8b565b6000908152601860205260409020600501546001600160a01b031690565b6040516001600160a01b0390911681526020016101d0565b61020c61032c366004612f8b565b610df1565b610339610dfe565b6040516101d09190613121565b6102ba610fb2565b61020c61035c366004612f8b565b610fd1565b61028f61036f366004612f8b565b611041565b61020c6103823660046131ca565b611076565b61039a610395366004612f8b565b6113cb565b6040516101d091906132d3565b6103ba6103b5366004612f8b565b6115b4565b6040516101d09190613305565b61028f6103d5366004612f8b565b611682565b61020c6103e8366004613319565b611695565b61020c6103fb366004613349565b6118d4565b6101c661040e366004612f8b565b6000908152600a602052604090205490565b61043361042e366004612f8b565b611a09565b6040516101d09190613377565b7f0000000000000000000000000000000000000000000000000000000000000000610306565b60008181526017602052604081206004015481610482846104dd565b9050600081600481111561049857610498612fa4565b14806104b5575060018160048111156104b3576104b3612fa4565b145b156104c1575092915050565b6104d5826104d06001426133a0565b611bc0565b949350505050565b60008181526016602052604081205482906001600160a01b031661053a5760405162461bcd60e51b815260206004820152600f60248201526e155b9adb9bdddb881c995c5d595cdd608a1b60448201526064015b60405180910390fd5b600083815260176020526040812090815460ff16600481111561055f5761055f612fa4565b14801561057c575060008481526017602052604090206005015442115b1561058b5760029250506105e9565b6001815460ff1660048111156105a3576105a3612fa4565b14806105c457506000815460ff1660048111156105c2576105c2612fa4565b145b80156105d35750806004015442115b156105e25760039250506105e9565b5460ff1691505b50919050565b60016105fa836115b4565b600581111561060b5761060b612fa4565b146106585760405162461bcd60e51b815260206004820152601960248201527f536c6f74206e6f7420616363657074696e672070726f6f6673000000000000006044820152606401610531565b6106628282611bd8565b6000828152601860209081526040808320600181015484526016909252909120600f5461ffff62010000909104166106a6856000908152600a602052604090205490565b6106b091906133c9565b60000361073f57600f5460068201546000916064916106da91640100000000900460ff16906133dd565b6106e491906133f4565b9050808360040160008282546106fa91906133a0565b9091555050600f546000868152600a6020526040902054610100820460ff169162010000900461ffff169061072f91906133f4565b1061073d5761073d85611e05565b505b50505050565b826000808281526018602052604090205460ff16600581111561076a5761076a612fa4565b036107a65760405162461bcd60e51b815260206004820152600c60248201526b536c6f74206973206672656560a01b6044820152606401610531565b600084815260186020526040902060058101546001600160a01b031633146108105760405162461bcd60e51b815260206004820152601960248201527f536c6f742066696c6c6564206279206f7468657220686f7374000000000000006044820152606401610531565b600061081b866115b4565b9050600481600581111561083157610831612fa4565b0361087e5760405162461bcd60e51b815260206004820152600c60248201527f416c7265616479207061696400000000000000000000000000000000000000006044820152606401610531565b600281600581111561089257610892612fa4565b036108ac576108a78260010154878787611fab565b61091a565b60058160058111156108c0576108c0612fa4565b036108d5576108a7826001015487878761233d565b60038160058111156108e9576108e9612fa4565b036108f8576108a7338761254f565b600181600581111561090c5761090c612fa4565b0361091a5761091a86611e05565b505050505050565b600061093582610930612571565b61257c565b92915050565b600061093582610949612571565b612590565b6040805160208082018590528183018490528251808303840181526060909201909252805191012060009033908290600154600082815260208190526040902091925060ff169061099e90612604565b1080156109c0575060008181526020819052604090206109be908361260e565b155b95945050505050565b60008381526016602052604090205483906001600160a01b0316610a215760405162461bcd60e51b815260206004820152600f60248201526e155b9adb9bdddb881c995c5d595cdd608a1b6044820152606401610531565b6000848152601660205260409020600181015467ffffffffffffffff168410610a8c5760405162461bcd60e51b815260206004820152600c60248201527f496e76616c696420736c6f7400000000000000000000000000000000000000006044820152606401610531565b6040805160208082018890528183018790528251808303840181526060909201909252805191012060009060008181526018602052604081206001810189905560038101889055919250610adf836115b4565b6005811115610af057610af0612fa4565b14610b3d5760405162461bcd60e51b815260206004820152601060248201527f536c6f74206973206e6f742066726565000000000000000000000000000000006044820152606401610531565b600483015460008381526008602090815260408083204290556009909152902055610b6882866118d4565b60058101805473ffffffffffffffffffffffffffffffffffffffff191633179055805460ff191660019081178255426002830155600088815260176020526040812080830180549193929091610bbf908490613408565b90915550610bcf90508842612630565b816002016000828254610be291906133a0565b90915550506006840154610bf633826126cd565b8060196000016000828254610c0b9190613408565b9091555050600483018190556005830154610c2f906001600160a01b0316856127d0565b887ff530852268993f91008f1a1e0b09b5c813acd4188481f1fa83c33c7182e814b489604051610c6191815260200190565b60405180910390a26001808601549083015467ffffffffffffffff9091169003610cc257815460ff1916600117825542600383015560405189907f85e1543bf2f84fe80c6badbce3648c8539ad1df4d2b3d822938ca0538be727e690600090a25b505050505050505050565b336000908152600e60205260409020606090610cef90610cec906127f2565b90565b905090565b610cfe828261094e565b610d4a5760405162461bcd60e51b815260206004820152601760248201527f5265736572766174696f6e206e6f7420616c6c6f7765640000000000000000006044820152606401610531565b60408051602080820185905281830184905282518083038401815260609092018352815191810191909120600081815291829052919020610d8b90336127ff565b50600154600082815260208190526040902060ff90911690610dac90612604565b03610dec57827f3bef2ebab8cc92e0edda5decf18232f0606a18405ef674b51ea9d1e0e3839b4183604051610de391815260200190565b60405180910390a25b505050565b610dfb8133611695565b50565b610e726040805160e081019091526000606082018181526080830182905260a0830182905260c0830191909152819081526040805160a08101825260008082526020828101829052928201819052606080830152608082015291019081526040805160208181019092526000815291015290565b6040805160e081018252600f805460ff808216606080860191825261010084048316608087015261ffff6201000085041660a080880191909152640100000000909404831660c087015290855285519283018652601080548452601154602085810191909152601254909316968401969096526013805495969495928701949291840191610eff9061341b565b80601f0160208091040260200160405190810160405280929190818152602001828054610f2b9061341b565b8015610f785780601f10610f4d57610100808354040283529160200191610f78565b820191906000526020600020905b815481529060010190602001808311610f5b57829003601f168201915b50505091835250506004919091015460ff908116602092830152918352604080518083019091526006949094015490911683520152919050565b336000908152600d60205260409020606090610cef90610cec906127f2565b806000808281526018602052604090205460ff166005811115610ff657610ff6612fa4565b036110325760405162461bcd60e51b815260206004820152600c60248201526b536c6f74206973206672656560a01b6044820152606401610531565b61103d823333610745565b5050565b600080600061105784611052612571565b612814565b90925090508180156104d5575060045460ff9081169116109392505050565b33611084602083018361344f565b6001600160a01b0316146110da5760405162461bcd60e51b815260206004820152601660248201527f496e76616c696420636c69656e742061646472657373000000000000000000006044820152606401610531565b60006110ed6110e8836135e1565b6128f7565b6000818152601660205260409020549091506001600160a01b0316156111555760405162461bcd60e51b815260206004820152601660248201527f5265717565737420616c726561647920657869737473000000000000000000006044820152606401610531565b600082610120013511801561117257506060820135610120830135105b6111be5760405162461bcd60e51b815260206004820152601360248201527f457870697279206e6f7420696e2072616e6765000000000000000000000000006044820152606401610531565b60006111d060408401602085016136d0565b67ffffffffffffffff16116112275760405162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e7420736c6f747300000000000000000000000000006044820152606401610531565b61123760408301602084016136d0565b67ffffffffffffffff16611252610100840160e085016136d0565b67ffffffffffffffff1611156112aa5760405162461bcd60e51b815260206004820152601960248201527f6d6178536c6f744c6f7373206578636565647320736c6f7473000000000000006044820152606401610531565b600081815260166020526040902082906112c4828261385b565b506112d59050606083013542613408565b6000828152601760205260409020600401556112f661012083013542613408565b6000828152601760209081526040909120600501919091556113249061131e9084018461344f565b82612927565b6000611337611332846135e1565b612949565b6000838152601760205260408120600201829055601980549293508392909190611362908490613408565b90915550611372905033826126cd565b7f5fdb86c365a247a4d97dcbcc5c3abde9d6e3e2de26273f3fda8eef5073b9a96c828460200160176000868152602001908152602001600020600501546040516113be93929190613953565b60405180910390a1505050565b6113d3612ec3565b816000808281526018602052604090205460ff1660058111156113f8576113f8612fa4565b036114345760405162461bcd60e51b815260206004820152600c60248201526b536c6f74206973206672656560a01b6044820152606401610531565b600083815260186020526040902061144a612ec3565b600180830154600090815260166020908152604091829020825160a0808201855282546001600160a01b03168252845160e0810186529583015467ffffffffffffffff9081168752600284015487860152600384015487870152600484015460608801526005840154608088015260068401549187019190915260078301541660c08601529182019390935281518083018352600884018054929493850192829082906114f69061341b565b80601f01602080910402602001604051908101604052809291908181526020018280546115229061341b565b801561156f5780601f106115445761010080835404028352916020019161156f565b820191906000526020600020905b81548152906001019060200180831161155257829003601f168201915b505050918352505060019190910154602091820152908252600a83015482820152600b9092015460409091015290825260039092015491810191909152915050919050565b6000818152601860205260408120600181015482036115d65750600092915050565b60006115e582600101546104dd565b90506004825460ff1660058111156115ff576115ff612fa4565b0361160e575060049392505050565b600281600481111561162257611622612fa4565b03611631575060059392505050565b600381600481111561164557611645612fa4565b03611654575060029392505050565b600481600481111561166857611668612fa4565b03611677575060039392505050565b505460ff1692915050565b600061093582611690612571565b61296e565b600082815260166020908152604080832060179092529091206005015442116117005760405162461bcd60e51b815260206004820152601960248201527f52657175657374206e6f74207965742074696d6564206f7574000000000000006044820152606401610531565b80546001600160a01b031633146117595760405162461bcd60e51b815260206004820152601660248201527f496e76616c696420636c69656e742061646472657373000000000000000000006044820152606401610531565b600083815260176020526040812090815460ff16600481111561177e5761177e612fa4565b146117cb5760405162461bcd60e51b815260206004820152600d60248201527f496e76616c6964207374617465000000000000000000000000000000000000006044820152606401610531565b805460ff1916600217815581546117eb906001600160a01b03168561299e565b60405184907ff903f4774c7bd27355f9d7fcbc382b079b164a697a44ac5d95267a4c3cb3bb2290600090a26002810154601a8054829190600090611830908490613408565b909155505060405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af11580156118a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c891906139cf565b61073d5761073d6139f1565b6000828152601860209081526040808320600101548084526016909252909120546001600160a01b031661193c5760405162461bcd60e51b815260206004820152600f60248201526e155b9adb9bdddb881c995c5d595cdd608a1b6044820152606401610531565b60008381526018602090815260408083206001810154845260168352818420825160038082526080820190945291949093909290820160608036833701905050905061198f61198a87610922565b6129c0565b816000815181106119a2576119a2613a07565b602090810291909101015260098201546119bb906129d1565b816001815181106119ce576119ce613a07565b6020026020010181815250508260030154816002815181106119f2576119f2613a07565b60200260200101818152505061091a8686836129dd565b611a11612ee3565b60008281526016602052604090205482906001600160a01b0316611a695760405162461bcd60e51b815260206004820152600f60248201526e155b9adb9bdddb881c995c5d595cdd608a1b6044820152606401610531565b600083815260166020908152604091829020825160a0808201855282546001600160a01b03168252845160e081018652600184015467ffffffffffffffff90811682526002850154828701526003850154828801526004850154606083015260058501546080830152600685015492820192909252600784015490911660c08201529281019290925282518084018452600882018054939492939285019282908290611b149061341b565b80601f0160208091040260200160405190810160405280929190818152602001828054611b409061341b565b8015611b8d5780601f10611b6257610100808354040283529160200191611b8d565b820191906000526020600020905b815481529060010190602001808311611b7057829003601f168201915b505050505081526020016001820154815250508152602001600a8201548152602001600b82015481525050915050919050565b6000818310611bcf5781611bd1565b825b9392505050565b6000611be382612b9c565b9050428110611c345760405162461bcd60e51b815260206004820152601860248201527f506572696f6420686173206e6f7420656e6465642079657400000000000000006044820152606401610531565b600354611c419082613408565b4210611c8f5760405162461bcd60e51b815260206004820152601460248201527f56616c69646174696f6e2074696d6564206f75740000000000000000000000006044820152606401610531565b6000838152600b6020908152604080832085845290915290205460ff1615611cf95760405162461bcd60e51b815260206004820181905260248201527f50726f6f6620776173207375626d69747465642c206e6f74206d697373696e676044820152606401610531565b611d03838361296e565b611d4f5760405162461bcd60e51b815260206004820152601660248201527f50726f6f6620776173206e6f74207265717569726564000000000000000000006044820152606401610531565b6000838152600c6020908152604080832085845290915290205460ff1615611db95760405162461bcd60e51b815260206004820152601f60248201527f50726f6f6620616c7265616479206d61726b6564206173206d697373696e67006044820152606401610531565b6000838152600c602090815260408083208584528252808320805460ff19166001908117909155868452600a9092528220805491929091611dfb908490613408565b9091555050505050565b60008181526018602090815260408083206001810154808552601790935292206005830154611e3d906001600160a01b03168561254f565b6003808401546000868152601860205260408120805460ff1916815560018082018390556002820183905593810182905560048101829055600501805473ffffffffffffffffffffffffffffffffffffffff191690558383018054929392909190611ea99084906133a0565b909155505060405181815283907f1d31c9f8dea6e179f6a050db117595feea8937029ea51f5168a4780be7e8f5529060200160405180910390a26000858152600a6020526040812055600083815260166020526040812060018085015490820154919291611f21919067ffffffffffffffff166133a0565b600783015490915067ffffffffffffffff1681118015611f5657506001845460ff166004811115611f5457611f54612fa4565b145b15611fa257835460ff19166004178455611f716001426133a0565b600485015560405185907f4769361a442504ecaf038f35e119bcccdd5e42096b24c09e3c17fd17c6684c0290600090a25b50505050505050565b60008481526016602052604090205484906001600160a01b03166120035760405162461bcd60e51b815260206004820152600f60248201526e155b9adb9bdddb881c995c5d595cdd608a1b6044820152606401610531565b60008581526017602090815260408083206016909252909120815460ff19166003178255805461203c906001600160a01b03168861299e565b60008681526018602052604090206005810154612062906001600160a01b03168861254f565b6000888152601660209081526040808320815160a0808201845282546001600160a01b03168252835160e081018552600184015467ffffffffffffffff90811682526002850154828801526003850154828701526004850154606083015260058501546080830152600685015492820192909252600784015490911660c082015293810193909352815180830183526008820180546121b7959485019291908290829061210e9061341b565b80601f016020809104026020016040519081016040528092919081815260200182805461213a9061341b565b80156121875780601f1061215c57610100808354040283529160200191612187565b820191906000526020600020905b81548152906001019060200180831161216a57829003601f168201915b505050505081526020016001820154815250508152602001600a8201548152602001600b82015481525050612baf565b60048301549091506121c98183613408565b601a80546000906121db908490613408565b90915550508254600490849060ff1916600183021790555060405163a9059cbb60e01b81526001600160a01b038981166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015612262573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228691906139cf565b612292576122926139f1565b60405163a9059cbb60e01b81526001600160a01b038881166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015612301573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232591906139cf565b612331576123316139f1565b50505050505050505050565b60008481526016602052604090205484906001600160a01b03166123955760405162461bcd60e51b815260206004820152600f60248201526e155b9adb9bdddb881c995c5d595cdd608a1b6044820152606401610531565b600084815260186020526040902060058101546123bb906001600160a01b03168661254f565b60006123cb878360020154612630565b60048301549091506123dd8183613408565b601a80546000906123ef908490613408565b90915550508254600490849060ff1916600183021790555060405163a9059cbb60e01b81526001600160a01b038781166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015612476573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249a91906139cf565b6124a6576124a66139f1565b60405163a9059cbb60e01b81526001600160a01b038681166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015612515573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253991906139cf565b612545576125456139f1565b5050505050505050565b6001600160a01b0382166000908152600e60205260409020610dec9082612bcb565b6000610cef42612bd7565b6000611bd161258b8484612590565b612c03565b60008061259f610100436133c9565b600654909150600090610100906125b99060ff16866133dd565b6125c391906133c9565b905060006125d3610100876133c9565b90506000610100826125e58587613408565b6125ef9190613408565b6125f991906133c9565b979650505050505050565b6000610935825490565b6001600160a01b03811660009081526001830160205260408120541515611bd1565b60008281526016602090815260408083206017909252822060050154831061269a5760405162461bcd60e51b815260206004820152601760248201527f5374617274206e6f74206265666f7265206578706972790000000000000000006044820152606401610531565b6005810154836126b98660009081526017602052604090206005015490565b6126c391906133a0565b6104d591906133dd565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152306024830181905260448301849052917f0000000000000000000000000000000000000000000000000000000000000000909116906323b872dd906064016020604051808303816000875af1158015612760573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278491906139cf565b610dec5760405162461bcd60e51b815260206004820152600f60248201527f5472616e73666572206661696c656400000000000000000000000000000000006044820152606401610531565b6001600160a01b0382166000908152600e60205260409020610dec9082612c5d565b60606000611bd183612c69565b6000611bd1836001600160a01b038416612cc5565b6000806000612822856115b4565b6000868152600860205260408120549192509061283e90612bd7565b9050600182600581111561285457612854612fa4565b14158061286857506128668582612d14565b155b1561287b576000809350935050506128f0565b6128858686612590565b9250600061289284612c03565b600454909150600090610100906128ac9060ff1682613a1d565b60008a8152600960205260409020546128c99161ffff16906133dd565b6128d391906133f4565b90508015806128e957506128e781836133c9565b155b9550505050505b9250929050565b60008160405160200161290a9190613377565b604051602081830303815290604052805190602001209050919050565b6001600160a01b0382166000908152600d60205260409020610dec9082612c5d565b600061295482612baf565b602083015151610935919067ffffffffffffffff166133dd565b600080600061297d8585612814565b90925090508180156109c0575060045460ff90811691161015949350505050565b6001600160a01b0382166000908152600d60205260409020610dec9082612bcb565b600060ff198216816104d582612d1e565b600080611bd183612d1e565b6000838152600b60205260408120906129f4612571565b815260208101919091526040016000205460ff1615612a555760405162461bcd60e51b815260206004820152601760248201527f50726f6f6620616c7265616479207375626d69747465640000000000000000006044820152606401610531565b6007546040517f94c8919d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906394c8919d90612aa09085908590600401613a38565b602060405180830381865afa158015612abd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae191906139cf565b612b2d5760405162461bcd60e51b815260206004820152600d60248201527f496e76616c69642070726f6f66000000000000000000000000000000000000006044820152606401610531565b6000838152600b60205260408120600191612b46612571565b815260200190815260200160002060006101000a81548160ff0219169083151502179055507f3b989d183b84b02259d7c14b34a9c9eb0fccb4c355a920d25e581e25aef4993d836040516113be91815260200190565b6000610935612baa83612d90565b612d9d565b60208101516080810151604090910151600091610935916133dd565b6000611bd18383612dc9565b60006109357f0000000000000000000000000000000000000000000000000000000000000000836133f4565b60008060ff8316612c156001436133a0565b612c1f91906133a0565b4090506000819003612c3357612c336139f1565b60408051602081018390520160405160208183030381529060405280519060200120915050919050565b6000611bd18383612cc5565b606081600001805480602002602001604051908101604052809291908181526020018280548015612cb957602002820191906000526020600020905b815481526020019060010190808311612ca5575b50505050509050919050565b6000818152600183016020526040812054612d0c57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610935565b506000610935565b6000818311611bd1565b7fff00000000000000000000000000000000000000000000000000000000000000811660015b60208110156105e957600891821c91612d5e9082906133dd565b83901b7fff00000000000000000000000000000000000000000000000000000000000000169190911790600101612d44565b6000610935826001613408565b60006109357f0000000000000000000000000000000000000000000000000000000000000000836133dd565b60008181526001830160205260408120548015612eb2576000612ded6001836133a0565b8554909150600090612e01906001906133a0565b9050818114612e66576000866000018281548110612e2157612e21613a07565b9060005260206000200154905080876000018481548110612e4457612e44613a07565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612e7757612e77613ae3565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610935565b6000915050610935565b5092915050565b6040518060400160405280612ed6612ee3565b8152602001600081525090565b6040518060a0016040528060006001600160a01b03168152602001612f526040518060e00160405280600067ffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600067ffffffffffffffff1681525090565b8152602001612f77604051806040016040528060608152602001600080191681525090565b815260006020820181905260409091015290565b600060208284031215612f9d57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6020810160058310612fce57612fce612fa4565b91905290565b60008060408385031215612fe757600080fd5b50508035926020909101359150565b6001600160a01b0381168114610dfb57600080fd5b60008060006060848603121561302057600080fd5b83359250602084013561303281612ff6565b9150604084013561304281612ff6565b809150509250925092565b600061010082840312156105e957600080fd5b6000806000610140848603121561307657600080fd5b833592506020840135915061308e856040860161304d565b90509250925092565b6020808252825182820181905260009190848201906040850190845b818110156130cf578351835292840192918401916001016130b3565b50909695505050505050565b6000815180845260005b81811015613101576020818501810151868301820152016130e5565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000825160ff815116602084015260ff602082015116604084015261ffff604082015116606084015260ff606082015116608084015250602083015160c060a0840152805160e0840152602081015161010084015260ff604082015116610120840152606081015160a06101408501526131a36101808501826130db565b905060ff608083015116610160850152604085015191506104d560c08501835160ff169052565b6000602082840312156131dc57600080fd5b813567ffffffffffffffff8111156131f357600080fd5b82016101608185031215611bd157600080fd5b600081516040845261321b60408501826130db565b602093840151949093019390935250919050565b60006101606001600160a01b038351168452602083015167ffffffffffffffff808251166020870152602082015160408701526040820151606087015260608201516080870152608082015160a087015260a082015160c08701528060c08301511660e087015250506040830151816101008601526132b082860182613206565b915050606083015161012085015260808301516101408501528091505092915050565b6020815260008251604060208401526132ef606084018261322f565b9050602084015160408401528091505092915050565b6020810160068310612fce57612fce612fa4565b6000806040838503121561332c57600080fd5b82359150602083013561333e81612ff6565b809150509250929050565b600080610120838503121561335d57600080fd5b8235915061336e846020850161304d565b90509250929050565b602081526000611bd1602083018461322f565b634e487b7160e01b600052601160045260246000fd5b818103818111156109355761093561338a565b634e487b7160e01b600052601260045260246000fd5b6000826133d8576133d86133b3565b500690565b80820281158282048414176109355761093561338a565b600082613403576134036133b3565b500490565b808201808211156109355761093561338a565b600181811c9082168061342f57607f821691505b6020821081036105e957634e487b7160e01b600052602260045260246000fd5b60006020828403121561346157600080fd5b8135611bd181612ff6565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156134a5576134a561346c565b60405290565b60405160a0810167ffffffffffffffff811182821017156134a5576134a561346c565b60405160e0810167ffffffffffffffff811182821017156134a5576134a561346c565b604051601f8201601f1916810167ffffffffffffffff8111828210171561351a5761351a61346c565b604052919050565b67ffffffffffffffff81168114610dfb57600080fd5b60006040828403121561354a57600080fd5b613552613482565b9050813567ffffffffffffffff8082111561356c57600080fd5b818401915084601f83011261358057600080fd5b81356020828211156135945761359461346c565b6135a6601f8301601f191682016134f1565b925081835286818386010111156135bc57600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b60008136036101608112156135f557600080fd5b6135fd6134ab565b833561360881612ff6565b815260e0601f198301121561361c57600080fd5b6136246134ce565b9150602084013561363481613522565b8083525060408401356020830152606084013560408301526080840135606083015260a0840135608083015260c084013560a083015260e084013561367881613522565b60c083015260208101919091526101008301359067ffffffffffffffff8211156136a157600080fd5b6136ad36838601613538565b604082015261012084013560608201526101409093013560808401525090919050565b6000602082840312156136e257600080fd5b8135611bd181613522565b6000813561093581613522565b60008235603e1983360301811261371057600080fd5b9190910192915050565b601f821115610dec576000816000526020600020601f850160051c810160208610156137435750805b601f850160051c820191505b8181101561091a5782815560010161374f565b8135601e1983360301811261377657600080fd5b8201803567ffffffffffffffff81111561378f57600080fd5b602081360381840113156137a257600080fd5b6137b6826137b0865461341b565b8661371a565b6000601f8311600181146137ec57600084156137d457508482018301355b600019600386901b1c1916600185901b178655613849565b600086815260209020601f19851690835b8281101561381e5787850186013582559385019360019091019085016137fd565b508582101561383d5760001960f88760031b161c198585890101351681555b505060018460011b0186555b50508085013560018501555050505050565b813561386681612ff6565b6001600160a01b03811673ffffffffffffffffffffffffffffffffffffffff1983541617825550602082013561389b81613522565b60018201805467ffffffffffffffff191667ffffffffffffffff83161790555060408201356002820155606082013560038201556080820135600482015560a0820135600582015560c0820135600682015561391f6138fc60e084016136ed565b6007830167ffffffffffffffff821667ffffffffffffffff198254161781555050565b6139396139306101008401846136fa565b60088301613762565b610120820135600a820155610140820135600b8201555050565b8381526101208101833561396681613522565b67ffffffffffffffff8082166020850152602086013560408501526040860135606085015260608601356080850152608086013560a085015260a086013560c085015260c086013591506139b982613522565b1660e08301526101009091019190915292915050565b6000602082840312156139e157600080fd5b81518015158114611bd157600080fd5b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b61ffff828116828216039080821115612ebc57612ebc61338a565b82358152602080840135908201526000610120828101613a68604085016040880180358252602090810135910152565b613a82608085016080880180358252602090810135910152565b613a9c60c0850160c0880180358252602090810135910152565b61010084019190915283519081905261014083019060209081860160005b82811015613ad657815185529383019390830190600101613aba565b5092979650505050505050565b634e487b7160e01b600052603160045260246000fdfea26469706673582212201ba21efda4fce1ed7b3990b94dd29e667ca238fbd4d0f83d310d1cdd9ff5dd1a64736f6c63430008170033"; public MarketplaceDeploymentBase() : base(BYTECODE) { } public MarketplaceDeploymentBase(string byteCode) : base(byteCode) { } [Parameter("tuple", "configuration", 1)] @@ -77,6 +77,16 @@ namespace CodexContractsPlugin.Marketplace [Parameter("uint256", "slotIndex", 2, false )] public virtual BigInteger SlotIndex { get; set; } } + public partial class SlotReservationsFullEventDTO : SlotReservationsFullEventDTOBase { } + + [Event("SlotReservationsFull")] + public class SlotReservationsFullEventDTOBase : IEventDTO + { + [Parameter("bytes32", "requestId", 1, true )] + public virtual byte[] RequestId { get; set; } + [Parameter("uint256", "slotIndex", 2, false )] + public virtual BigInteger SlotIndex { get; set; } + } public partial class StorageRequestedEventDTO : StorageRequestedEventDTOBase { } [Event("StorageRequested")] @@ -89,6 +99,24 @@ namespace CodexContractsPlugin.Marketplace [Parameter("uint256", "expiry", 3, false )] public virtual BigInteger Expiry { get; set; } } + public partial class CanReserveSlotOutputDTO : CanReserveSlotOutputDTOBase { } + + [FunctionOutput] + public class CanReserveSlotOutputDTOBase : IFunctionOutputDTO + { + [Parameter("bool", "", 1)] + public virtual bool ReturnValue1 { get; set; } + } + public partial class CanReserveSlotFunction : CanReserveSlotFunctionBase { } + + [Function("canReserveSlot", "bool")] + public class CanReserveSlotFunctionBase : FunctionMessage + { + [Parameter("bytes32", "requestId", 1)] + public virtual byte[] RequestId { get; set; } + [Parameter("uint256", "slotIndex", 2)] + public virtual BigInteger SlotIndex { get; set; } + } public partial class ConfigOutputDTO : ConfigOutputDTOBase { } [FunctionOutput] @@ -349,6 +377,17 @@ namespace CodexContractsPlugin.Marketplace [Parameter("tuple", "request", 1)] public virtual Request Request { get; set; } } + + public partial class ReserveSlotFunction : ReserveSlotFunctionBase { } + + [Function("reserveSlot")] + public class ReserveSlotFunctionBase : FunctionMessage + { + [Parameter("bytes32", "requestId", 1)] + public virtual byte[] RequestId { get; set; } + [Parameter("uint256", "slotIndex", 2)] + public virtual BigInteger SlotIndex { get; set; } + } public partial class SlotStateOutputDTO : SlotStateOutputDTOBase { } [FunctionOutput] @@ -455,6 +494,13 @@ namespace CodexContractsPlugin.Marketplace [Parameter("uint8", "downtimeProduct", 5)] public virtual byte DowntimeProduct { get; set; } } + public partial class SlotReservationsConfig : SlotReservationsConfigBase { } + + public class SlotReservationsConfigBase + { + [Parameter("uint8", "maxReservations", 1)] + public virtual byte MaxReservations { get; set; } + } public partial class MarketplaceConfig : MarketplaceConfigBase { } public class MarketplaceConfigBase @@ -463,6 +509,8 @@ namespace CodexContractsPlugin.Marketplace public virtual CollateralConfig Collateral { get; set; } [Parameter("tuple", "proofs", 2)] public virtual ProofConfig Proofs { get; set; } + [Parameter("tuple", "reservations", 3)] + public virtual SlotReservationsConfig Reservations { get; set; } } public partial class Ask : AskBase { }