Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
PunkBlocks
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-23 */ // SPDX-License-Identifier: MIT // Author: tycoon.eth, thanks to @geraldb & @samwilsn on Github for inspiration! // Version: v0.1.3 // Note: The MIT license is for the source code only. Images registered through // this contract retain all of their owner's rights. This contract // is a non-profit "library" project and intended to archive & preserve punk // images, so that they can become widely accessible for decentralized // applications, including marketplaces, wallets, galleries, etc. pragma solidity ^0.8.19; /** ███████████ █████ ░░███░░░░░███ ░░███ ░███ ░███ █████ ████ ████████ ░███ █████ ░██████████ ░░███ ░███ ░░███░░███ ░███░░███ ░███░░░░░░ ░███ ░███ ░███ ░███ ░██████░ ░███ ░███ ░███ ░███ ░███ ░███░░███ █████ ░░████████ ████ █████ ████ █████ ░░░░░ ░░░░░░░░ ░░░░ ░░░░░ ░░░░ ░░░░░ ███████████ ████ █████ ░░███░░░░░███░░███ ░░███ ░███ ░███ ░███ ██████ ██████ ░███ █████ █████ ░██████████ ░███ ███░░███ ███░░███ ░███░░███ ███░░ ░███░░░░░███ ░███ ░███ ░███░███ ░░░ ░██████░ ░░█████ ░███ ░███ ░███ ░███ ░███░███ ███ ░███░░███ ░░░░███ ███████████ █████░░██████ ░░██████ ████ █████ ██████ ░░░░░░░░░░░ ░░░░░ ░░░░░░ ░░░░░░ ░░░░ ░░░░░ ░░░░░░ A Registry of 24x24 png images This contract: 1. Stores all the classic traits of the CryptoPunks in individual png files, 100% on-chain. These are then used as blocks to construct CryptoPunk images. Outputted as SVGs. 2. Any of the 10,000 "classic" CryptoPunks can be generated by supplying desired arguments to a function, such as the id of a punk, or a list of the traits. 3. An unlimited number of new punk images can be generated from the existing classic set of traits, or even from new traits! 4. New traits (blocks) can be added to the contract by registering them with the `registerBlock` function. Further documentation: https://github.com/0xTycoon/punk-blocks */ //import "hardhat/console.sol"; contract PunkBlocks { using DynamicBufferLib for DynamicBufferLib.DynamicBuffer; address admin; // Layer is in the order of rendering enum Layer { Base, //0 Base is the face. Determines if m or f version will be used to render the remaining layers Mouth, //1 (Hot Lipstick, Smile, Buck Teeth, ...) Cheeks, //2 (Rosy Cheeks) Blemish, //3 (Mole, Spots) Eyes, //4 (Clown Eyes Green, Green Eye Shadow, ...) Neck, //5 (Choker, Silver Chain, Gold Chain) Beard, //6 (Big Beard, Front Beard, Goat, ...) Ears, //7 (Earring) HeadTop1, //8 (Purple Hair, Shaved Head, Beanie, Fedora,Hoodie) HeadTop2, //9 eg. sometimes an additional hat over hair Eyewear, //10 (VR, 3D Glass, Eye Mask, Regular Shades, Welding Glasses, ...) MouthProp, //11 (Medical Mask, Cigarette, ...) Nose //12 (Clown Nose) } struct Block { Layer layer; // 13 possible layers bytes blockL;// male version of this attribute bytes blockS;// female version of this attribute } mapping(bytes32 => bytes) public blockS; // small attributes as png mapping(bytes32 => bytes) public blockL; // large attributes as png mapping(bytes32 => uint256) public blocksInfo;// byte 0: layer, byte 1-2: blockL.length, byte 3-5: blockS.length mapping (uint32 => mapping(Layer => uint16)) public orderConfig; // layer => seq uint32 public nextConfigId; uint32 public nextId; // next id to use when adding a block mapping(uint32 => bytes32) public index; // index of each block by its sequence mapping(uint256 => Layer) public blockToLayer; event NewBlock(address, uint32, string); uint256 constant private bit1byte = 0xFF; // bit mask 1 uint256 constant private bit2byte = 0xFFFF00; // bit mask 2 uint256 constant private bit3byte = 0xFFFF000000; // bit mask 3 /** * @dev getBlocks returns a sequential list of blocks in a single call * @param _fromID is which id to begin from * @param _count how many items to retrieve. * @return Block[] list of blocks, uint256 next id */ function getBlocks( uint _fromID, uint _count) external view returns(Block[] memory, uint32) { Block[] memory ret = new Block[](_count); while (_count != 0) { bytes32 i = index[uint32(_fromID + _count - 1)]; uint256 info = blocksInfo[i]; if (info > 0) { (Layer l,,) = _unpackInfo(info); ret[_count-1].blockS = blockS[i]; ret[_count-1].blockL = blockL[i]; ret[_count-1].layer = l; } _count--; } return (ret, nextId); } /** * registerOrderConfig */ function registerOrderConfig( Layer[] calldata _order ) external { mapping(Layer => uint16) storage c = orderConfig[nextConfigId]; for (uint16 i = 0; i < _order.length; i++) { require(c[Layer(i)] == 0, "storage must be empty"); c[Layer(i)] = uint16(i); } nextConfigId++; } function _packInfo(uint8 _layer, uint16 _l, uint16 _s) pure internal returns (uint256) { uint256 scratch; scratch = uint256(_layer); scratch = (uint256(_l) << 8) | scratch; // 16 bit uint, m length scratch = (uint256(_s) << 24) | scratch;// 16 bit uint, f length return scratch; } /** * _unpackInfo extracts block information */ function _unpackInfo(uint256 _info) pure internal returns(Layer, uint16, uint16) { Layer layer = Layer(uint8(_info)); uint16 l = uint16((_info & bit2byte) >> 8); uint16 s = uint16((_info & bit3byte) >> 24); return (layer, l, s); } /** * get info about a block */ function info(bytes32 _id) view public returns(Layer, uint16, uint16) { uint256 info = blocksInfo[_id]; if (info == 0) { return (Layer.Base, 0, 0); } return _unpackInfo(info); } /** * @dev registerBlock allows anybody to add a new block to the contract. * Either _dataL or _dataF, or both, must contain a byte stream of a png file. * It's best if the png is using an 'index palette' and the lowest bit depth possible, * while keeping the highest compression setting. * @param _dataL png data for the larger male version, 24x24 * @param _dataS png data for the smaller female version, 24x24 * @param _layer 0 to 12, corresponding to the Layer enum type. * @param _name the name of the trait, Camel Case. e.g. "Luxurious Beard" */ function registerBlock( bytes calldata _dataL, bytes calldata _dataS, uint8 _layer, string memory _name) external { bytes32 key = keccak256(abi.encodePacked(_name)); uint256 info = blocksInfo[key]; require (info == 0, "slot taken"); require (_layer < 13, "invalid _layer"); require (_dataL.length + _dataS.length > 0, "no data"); require (_dataL.length <= type(uint16).max, "L too big"); require (_dataS.length <= type(uint16).max, "S too big"); if (_layer==0 && _dataL.length > 0 && _dataS.length > 0) { revert("layer0 cannot have both versions"); } if (_dataL.length > 0) { require (_validatePng(_dataL), "invalid L png"); blockL[key] = _dataL; } if (_dataS.length > 0) { require (_validatePng(_dataS), "invalid S png"); blockS[key] = _dataS; } blocksInfo[key] = _packInfo(_layer, uint16(_dataL.length), uint16(_dataS.length)); index[nextId] = key; unchecked{nextId++;} emit NewBlock(msg.sender, nextId, _name); } /** * @dev Just a limited png validation. Only verifies that the png is 24x24 and has a png structure, * but doesn't validate any checksums or any other validation */ function _validatePng(bytes calldata _data) pure internal returns (bool) { unchecked { if (_data.length < 8) { return false; } bytes memory pngHeader = bytes("\x89PNG\r\n\x1a\n"); // first 8 bytes uint pos; while (pos < 8) { if (_data[pos] != pngHeader[pos]) { return false; } pos++; } int32 chunkLen; while (true) { // next 4 bytes represent a big-endian int32, the chunk length chunkLen = int32(uint32(uint8(_data[pos+3])) | uint32(uint8(_data[pos+2]))<<8 | uint32(uint8(_data[pos+1]))<<16 | uint32(uint8(_data[pos]))<<24); pos += 4; if ( _data[pos] == bytes1("I") && _data[pos+1] == bytes1("H") && _data[pos+2] == bytes1("D") && _data[pos+3] == bytes1("R")) { // IHDR if (24 != int32(uint32(uint8(_data[pos+7])) | uint32(uint8(_data[pos+6]))<<8 | uint32(uint8(_data[pos+5]))<<16 | uint32(uint8(_data[pos+4]))<<24)) { // width needs to be 24 return false; } if (24 != int32(uint32(uint8(_data[pos+11])) | uint32(uint8(_data[pos+10]))<<8 | uint32(uint8(_data[pos+9]))<<16 | uint32(uint8(_data[pos+8]))<<24)) { // height needs to be 24 return false; } } else if ( _data[pos] == bytes1("P") && _data[pos+1] == bytes1("L") && _data[pos+2] == bytes1("T") && _data[pos+3] == bytes1("E")) { // PLTE } else if ( _data[pos] == bytes1("t") && _data[pos+1] == bytes1("R") && _data[pos+2] == bytes1("N") && _data[pos+3] == bytes1("S")) { // tRNS } else if ( _data[pos] == bytes1("I") && _data[pos+1] == bytes1("D") && _data[pos+2] == bytes1("A") && _data[pos+3] == bytes1("T")) { // IDAT } else if ( _data[pos] == bytes1("I") && _data[pos+1] == bytes1("E") && _data[pos+2] == bytes1("N") && _data[pos+3] == bytes1("D")) { // IEND return true; // png is valid (without checking the CRC) } else { return false; } pos += 4 + uint(int(chunkLen)) + 4; // skip the payload, ignore CRC } } //unchecked return true; } /** * @dev svgFromNames returns the svg data as a string * @param _attributeNames a list of attribute names, eg "Male 1", "Goat" * must have at least 1 layer 0 attribute (eg. Male, Female, Alien, Ape, Zombie) * e.g. ["Male 1","Goat"] * Where "Male 1" is a layer 0 attribute, that decides what version of * image to use for the higher * layers (dataMale or dataFemale) * @param _size the width and height of generated svg, eg. 24 * @param _orderID which order config to use when rendering, 0 is the default */ function svgFromNames( string[] memory _attributeNames, uint16 _x, uint16 _y, uint16 _size, uint32 _orderID) external view returns (string memory){ bool isLarge; bytes32[] memory layerKeys = new bytes32[](13); for (uint16 i = 0; i < _attributeNames.length; i++) { bytes32 hash = keccak256( abi.encodePacked(_attributeNames[i])); uint256 fo = blocksInfo[hash]; if (fo == 0) { break; } (Layer l, uint16 sL,) = _unpackInfo(fo); layerKeys[uint256(orderConfig[_orderID][l])] = hash; if (l == Layer.Base) { // base later if (sL > 0) { isLarge = true; } } } return _svg(layerKeys, _x, _y, _size, isLarge); } /** * @dev svgFromKeys returns the svg data as a string * @param _attributeKeys a list of attribute names that have been hashed, * eg keccak256("Male 1"), keccak256("Goat") * must have at least 1 layer 0 attribute (eg. keccak256("Male 1")) which * decides what version of image to use for the higher layers * (dataMale or dataFemale) * e.g. ["0x9039da071f773e85254cbd0f99efa70230c4c11d63fce84323db9eca8e8ef283", * "0xd5de5c20969a9e22f93842ca4d65bac0c0387225cee45a944a14f03f9221fd4a"] * @param _size the width and height of generated svg, eg. 24 * @param _orderID which order config to use when rendering, 0 is the default */ function svgFromKeys( bytes32[] memory _attributeKeys, uint16 _x, uint16 _y, uint16 _size, uint32 _orderID) external view returns (string memory) { bool isLarge; bytes32[] memory layerKeys = new bytes32[](13); for (uint16 i = 0; i < _attributeKeys.length; i++) { uint256 fo = blocksInfo[_attributeKeys[i]]; if (fo == 0) { break; } (Layer l, uint16 sL,) = _unpackInfo(fo); layerKeys[uint256(orderConfig[_orderID][l])] = _attributeKeys[i]; if (l == Layer.Base) { // base later if (sL > 0) { isLarge = true; } } } return _svg(layerKeys, _x, _y, _size, isLarge); } /** * @dev svgFromIDs returns the svg data as a string * e.g. [9,55,99] * One of the elements must be must be a layer 0 block. * This element decides what version of image to use for the higher layers * (dataMale or dataFemale) * @param _ids uint256 ids of an attribute, by it's index of creation * @param _size the width and height of generated svg, eg. 24 * @param _orderID which order config to use when rendering, 0 is the default */ function svgFromIDs( uint32[] calldata _ids, uint16 _x, uint16 _y, uint16 _size, uint32 _orderID) external view returns (string memory) { bool isLarge; bytes32[] memory layerKeys = new bytes32[](13); for (uint16 i = 0; i < _ids.length; i++) { bytes32 hash = index[_ids[i]]; uint256 fo = blocksInfo[hash]; if (fo == 0) { break; } (Layer l, uint16 sL,) = _unpackInfo(fo); layerKeys[uint256(orderConfig[_orderID][l])] = hash; if (l == Layer.Base) { // base later if (sL > 0) { isLarge = true; } } } return _svg(layerKeys, _x, _y, _size, isLarge); } /** * @dev svgFromPunkID returns the svg data as a string given a punk id * @param _tokenID uint256 IDs a punk id, 0-9999 * @param _size the width and height of generated svg, eg. 24 * @param _orderID which order config to use when rendering, 0 is the default */ function svgFromPunkID( uint256 _tokenID, uint16 _x, uint16 _y, uint16 _size, uint32 _orderID ) external view returns (string memory) { // Get the attributes first, using https://github.com/0xTycoon/punks-token-uri IAttrParser p = IAttrParser(0xD8E916C3016bE144eb2907778cf972C4b01645fC); string[8] memory _attributeNames = p.parseAttributes(_tokenID); bool isLarge; bytes32[] memory layerKeys = new bytes32[](13); for (uint16 i = 0; i < 8; i++) { if (bytes(_attributeNames[i]).length == 0) { break; } bytes32 hash = keccak256( abi.encodePacked(_attributeNames[i])); uint256 fo = blocksInfo[hash]; if (fo == 0) { break; } (Layer l, uint16 sL,) = _unpackInfo(fo); layerKeys[uint256(orderConfig[_orderID][l])] = hash; if (l == Layer.Base) { // base later if (sL > 0) { isLarge = true; } } } return _svg(layerKeys, _x, _y, _size, isLarge); } bytes constant header1 = '<svg class="punkblock" width="'; bytes constant header2 = '" height="'; bytes constant header3 = '" x="'; bytes constant header4 = '" y="'; bytes constant header5 = '" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" > <style> .pix {image-rendering:pixelated;-ms-interpolation-mode: nearest-neighbor;image-rendering: -moz-crisp-edges;} </style>'; bytes constant end = '</svg>'; bytes constant imgStart = '<foreignObject x="0" y="0" width="24" height="24"> <img xmlns="http://www.w3.org/1999/xhtml" width="100%" class="pix" src="data:image/png;base64,'; bytes constant imgEnd = '"/></foreignObject>'; /** * @dev _svg build the svg, layer by layer. * @return string of the svg image */ function _svg( bytes32[] memory _keys, uint16 _x, uint16 _y, uint16 _size, bool isLarge ) internal view returns (string memory) { bytes memory s = bytes(toString(_size)); DynamicBufferLib.DynamicBuffer memory result; result.append(header1, s, header2); result.append(s, header3, bytes(toString(_x))); result.append(header4, bytes(toString(_y)), header5); for (uint256 i = 0; i < 13; i++) { if (_keys[i] == 0x0) { continue; } (, uint16 s1, uint16 s2) = info(_keys[i]); if (isLarge) { if (s1 == 0) { continue; // no data } result.append(imgStart, bytes(Base64.encode(blockL[_keys[i]])), imgEnd); } else { if (s2 == 0) { continue; // no data } result.append(imgStart, bytes(Base64.encode(blockS[_keys[i]])), imgEnd); } } result.append(end); return string(result.data); } /** * Here we initialize `blocks` storage with the entire set of original CryptoPunk attributes */ constructor() { // Initial blocks that were sourced from https://github.com/cryptopunksnotdead/punks.js/blob/master/yeoldepunks/yeoldepunks-24x24.png bytes32 hash; hash = hex"9039da071f773e85254cbd0f99efa70230c4c11d63fce84323db9eca8e8ef283"; blocksInfo[hash] = 45824; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb00000012504c5445000000000000713f1d8b532c5626007237092b4acd040000000174524e530040e6d8660000004f4944415478da62a00a1014141480b11995949414611c2165252525989490113247092747c549c945006698629092a800c264b8324674030489315a49118f3284ab9590fc23045783cc01040000ffffd8690b6ca3604b190000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"dfcbad4edd134a08c17026fc7af40e146af242a3412600cee7c0719d0ac42d53"; blocksInfo[hash] = 45824; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb00000012504c5445000000000000ae8b61b69f8286581ea77c470e17bdef0000000174524e530040e6d8660000004f4944415478da62a00a1014141480b11995949414611c2165252525989490113247092747c549c945006698629092a800c264b8324674030489315a49118f3284ab9590fc23045783cc01040000ffffd8690b6ca3604b190000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"ed94d667f893279240c415151388f335b32027819fa6a4661afaacce342f4c54"; blocksInfo[hash] = 45824; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb00000012504c5445000000000000dbb180e7cba9a66e2cd29d601a5e5ef40000000174524e530040e6d8660000004f4944415478da62a00a1014141480b11995949414611c2165252525989490113247092747c549c945006698629092a800c264b8324674030489315a49118f3284ab9590fc23045783cc01040000ffffd8690b6ca3604b190000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"1323f587f8837b162082b8d221e381c5e015d390305ce6be8ade3ff70e70446e"; blocksInfo[hash] = 45824; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb00000012504c5445000000000000ead9d9ffffffa58d8dc9b2b21adbe9c60000000174524e530040e6d8660000004f4944415478da62a00a1014141480b11995949414611c2165252525989490113247092747c549c945006698629092a800c264b8324674030489315a49118f3284ab9590fc23045783cc01040000ffffd8690b6ca3604b190000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"1bb61a688fea4953cb586baa1eadb220020829a1e284be38d2ea8fb996dd7286"; blocksInfo[hash] = 3003121664; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb00000015504c5445000000000000713f1d8b532c5626007237094a120162eb383b0000000174524e530040e6d8660000004c4944415478da62a03160141414807384949414e112ca4a4a4a302946255c1c2115272517384731484914c61154c26380102e19b5343807c5390c42082d208b0419905c2d80c901040000ffff2f3c090f8ffce8ac0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"47cc6a8e17679da04a479e5d29625d737670c27b21f8ccfb334e6af61bf6885a"; blocksInfo[hash] = 3003121664; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb00000015504c5445000000000000ae8b61b69f8286581ea77c475f1d096e17a6860000000174524e530040e6d8660000004c4944415478da62a03160141414807384949414e112ca4a4a4a302946255c1c2115272517384731484914c61154c26380102e19b5343807c5390c42082d208b0419905c2d80c901040000ffff2f3c090f8ffce8ac0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"80547b534287b04dc7e9afb751db65a7515fde92b8c2394ae341e3ae0955d519"; blocksInfo[hash] = 3003121664; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb00000015504c5445000000000000dbb180e7cba9a66e2cd29d60711010e7210e7f0000000174524e530040e6d8660000004c4944415478da62a03160141414807384949414e112ca4a4a4a302946255c1c2115272517384731484914c61154c26380102e19b5343807c5390c42082d208b0419905c2d80c901040000ffff2f3c090f8ffce8ac0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"c0c9e42e9d271c94b57d055fc963197e4c62d5933e371a7449ef5d59f26be00a"; blocksInfo[hash] = 3003121664; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb00000015504c5445000000000000ead9d9ffffffa58d8dc9b2b2711010f69870510000000174524e530040e6d8660000004c4944415478da62a03160141414807384949414e112ca4a4a4a302946255c1c2115272517384731484914c61154c26380102e19b5343807c5390c42082d208b0419905c2d80c901040000ffff2f3c090f8ffce8ac0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"f41cb73ce9ba5c1f594bcdfd56e2d14e42d2ecc23f0a4863835bdd4baacd8b72"; blocksInfo[hash] = 46848; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb00000012504c54450000000000007da2699bbc885e7253ff00007efb409c0000000174524e530040e6d866000000534944415478da62a00a1014141480b11995949414611c2165252525989490113247092747c549c945006698aa9052209ca3a2a4e404e3a01b20488cd14a8ac8ca545095215cad84e41f21b81a640e200000ffffea5f0b90848c25f90000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"b1ea1507d58429e4dfa3f444cd2e584ba8909c931969bbfb5f1e21e2ac8b758d"; blocksInfo[hash] = 50176; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb00000012504c5445000000000000352410856f566a563fa98c6b35cdf9490000000174524e530040e6d866000000604944415478daaccfd11180200c0350d980c0390071821a37d00ddc7f17bf68eb9d9ff2c5bb062e5d7e3900eabc179263a29164fdc4009a43921cc7a9abcecfecd6ea48b1f27eb3990528ed31c9b10ef4409e0cc9a275daa779e58c270000ffff866f0d065247e95a0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"62223f0b03d25507f52a69efbbdbcfdc7579756a7a08a95a2f0e72ada31e32b8"; blocksInfo[hash] = 47616; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb00000012504c5445000000000000c8fbfb9be0e0f1ffff75bdbd4053c1210000000174524e530040e6d866000000564944415478daac8fb11180300c03c906b198207fb040466003f65f86061335ee70e53feb6469fb6522a2e7de8091a003c8932e070a683ac5fd82e698ec7d399b0ca61bd4e07f22542658a9b13efa340e4f000000ffffe3a70b7c1e9e0e0b0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"047228ad95cec16eb926f7cd21ac9cc9a3288d911a6c2917a24555eac7a2c0e2"; blocksInfo[hash] = 1744859138; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df8000000374944415478da6262a03118b560d482510b462d18b5806e165c62603006616ce254f3811e03c35986c1084653d1a805940340000000ffff94c80439947873b80000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df80000002f4944415478da6262a03118b560d482510b462d18b5806e164c916250036142620302462379d482216001200000ffff8e55037f0295ca130000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"ce1f93a7afe9aad7ebb13c0add89c79d42b5e9b1272fdd1573aac99fe5d860d0"; blocksInfo[hash] = 33542; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000000000692f08d8a2a9300000000174524e530040e6d866000000284944415478da62a01f608452018c0e202a34144c852d45e2318486322051a22170cd80000000ffffb3a4056366b432730000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"bfac272e71cad64427175cd77d774a7884f98c7901ebc4909ada29d464c8981e"; blocksInfo[hash] = 2717948168; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c544500000028b143000000cc9ab8ec0000000174524e530040e6d8660000003e4944415478da62c00b181d5841142b03a3030303832803630003034308184129d6100686500718c508a218181802204a04c008041418280480000000ffff40c405ad8a2523500000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c544500000028b143000000cc9ab8ec0000000174524e530040e6d866000000474944415478da94c7b10d80300c05d18b447a0ad880411821856fff55906d898e825ff8f9f8d8bcf30eadd0cc5317a0c6cb704d1348a2604134477351ef0e6ccdcf3d010000ffffff6c099ea706747f0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"a71068a671b554f75b7cc31ce4f8d63c377f276333d11989e77bc4a9205b5e42"; blocksInfo[hash] = 2164293896; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d866000000294944415478daa4c0211100300800c097130b30b1280443109e3b2af0c6c547a0907838b63a0000ffff7250017908940adc0000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d866000000294944415478da9cc0310d00300800b01ecbae65125042f02f8b9b971a2e3e0285c4c3b1d5010000ffff337800bd4717cafb0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"9a132de8409f80845eaec43154ff43d7bd61df75e52d96b4ded0b64626e4c88a"; blocksInfo[hash] = 34056; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000794b11502f0566020e390000000174524e530040e6d8660000002a4944415478da62c0010244402463682806c5c2b56a558303036b686868a803480c22496300080000ffff65920776511a3f8f0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"fca4c5f86ef326916536dfdae74031d6960e41e10d38c624294334c3833974e2"; blocksInfo[hash] = 26630; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df80000002f4944415478da6262a03118b560d482510b462d18b560d40210602141ed4c2c62e90c030d462379045800080000ffff60530131658c7b950000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"4483a654781ca58fa6ba3590c74c005bce612263e17c70445d6cd167e55e900b"; blocksInfo[hash] = 1795189516; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000d600002c63f04d0000000174524e530040e6d866000000134944415478da62201bf040317e00080000ffff03c000197c38ad200000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000d600002c63f04d0000000174524e530040e6d866000000134944415478da62a008f040316e00080000ffff0360001902542c490000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"1885fe71e225eade934ab7040d533bd49efc5d66e8f2d4b5aa42477ae9892ec9"; blocksInfo[hash] = 2214626315; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df80000004b4944415478da6262a03118b560d482510b869a0577efde6d180da2116801cd010b057affe31067c4c921c5f063c78e6108ca4c4d60905b7a0bc55c465afb806134990eb80580000000ffff78ff0b44c51816510000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df80000004b4944415478da6262a03118b560d482510b869a0577efde6d180da2116801cd010b057affe31067c4c921c5f063c78e6108ca4c4d60905b7a0bc55c465afb806134990eb80580000000ffff78ff0b44c51816510000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"7411db1fe7a50d41767858710dc8b8432ac0c4fd26503ba78d2ed17789ce4f72"; blocksInfo[hash] = 2113961226; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c544500000000000080dbda669cd55e0000000174524e530040e6d866000000224944415478da62a01608157560606060cc8c02510c99520e08416a0040000000ffff0567031c1296b7680000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c544500000000000080dbda669cd55e0000000174524e530040e6d866000000234944415478da62a03208157560606060cc8c02510c9952604a8495627301010000ffffca38028b89ad68880000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"dd7231e98344a83b64e1ac7a07b39d2ecc2b21128681123a9030e17a12422527"; blocksInfo[hash] = 1946187018; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d8660000001d4944415478da622005b0ff3fc0c0f0f90003436203b15a00010000ffffca27045b28df4bb90000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d8660000001c4944415478da62200530ff6f6060f8dec0c0904cb41640000000ffff9e67035db5442bc60000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"24dd0364c2b2d0e6540c7deb5a0acf9177d47737a2bf41ca29b553eb69558ef9"; blocksInfo[hash] = 2281735176; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c5445000000000000933709ca4e11586029880000000174524e530040e6d866000000264944415478da622005fcff032299ffff075152ab564d60606090debd7b0203ed01200000ffff89c6081c0afc0fac0000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c5445000000000000933709ca4e11586029880000000174524e530040e6d8660000002a4944415478da62200a888680a9fabf2092f1ff7f07060606b655ab2680a877ef2e30d01e00020000ffffcdba08c1f8ca1c3c0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"ea5efa009543229e434689349c866e4d254811928ae8a1320abb82a36d3be53f"; blocksInfo[hash] = 33542; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df80000004a4944415478da6262a03118b560d482510b462d18b5801e16f8d2c307be94388085488790ed13165214b784c9c2d935ab1e13a587910aaedf4c691c6c26d770ba80a19fd100010000ffff17b506cc6c8ffcb10000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"2df03e79022dc10f7539f01da354ffe10da3ef91f1e18bc7fd096db00c381de8"; blocksInfo[hash] = 27137; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d866000000124944415478da62a02a50c01001040000ffff02a00021e29936ae0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"f0ac7cf8c022008e16b983f22d22dae3a15b9b5abcc635bc5c20beb4d7c91800"; blocksInfo[hash] = 36616; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c54450000000000003535355151511dd8d71d0000000174524e530040e6d866000000314944415478da62c00f42434024e3febf208aedff7f07060606f6afa10120ead6aa250c0c0caca11035340680000000ffff5f8a097e7a97a9b90000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"8580e735d58252637afd6fef159c826c5e7e6a5dcf1fe2d8398b3bf92c376d42"; blocksInfo[hash] = 29958; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000a66e2c00000080c0c2990000000174524e530040e6d8660000001a4944415478da62185c80310099624a808836303000020000ffff12f9018505211f590000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"041bf83549434251cc54c0632896c8d3176b48d06150048c1bce6b6102c4e90c"; blocksInfo[hash] = 1694524675; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df80000002c4944415478da6262a03118b560d482510b462d18b5607858a0202796c63098c168248f5a403900040000ffff01a900e96b1795ed0000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df80000002c4944415478da6262a03118b560d482510b462d18b560f858a0202796c63058c168248f5a403900040000fffffeb200e9e342816b0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"591f84c8a41edd0013624b89d5e6b96cd3b0c6f1e214d4ea13a35639412f07e6"; blocksInfo[hash] = 38664; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000710cc759e1a3b70000000174524e530040e6d8660000003f4944415478da6cc6b10d40501000d017f989465cab905843c50a463a7b8bd368245ef57c1c741771d3174ba538d32e8dd83061c58019ed7df3eb090000fffff8b007a7fc0c1ce10000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"54917cb8cff2411930ac1b1d36a674f855c6b16c8662806266734b5f718a9890"; blocksInfo[hash] = 29450; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d8660000001b4944415478da62200530fe6760604a66606048265a0b200000ffff54c701c9074dcd420000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"274ae610f9d7dec1e425c54ad990e7d265ba95c4f84683be4333542088ecb8e7"; blocksInfo[hash] = 28936; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df8000000384944415478da6262a03118b5600458c042849a8978e4f229f5c1440ae5074710e553e20386d1643a6ac1a805a3168c5a400500080000ffff2ea40355b76925600000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"6a400b1508bfd84ab2f4cb067d6d74dc46f74cdae7efd8b2a2d990c9f037e426"; blocksInfo[hash] = 2113961738; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c54450000000000005c390fc775146685ecb00000000174524e530040e6d866000000214944415478da62a012600c0d7500d1995260aa561e4c89b052cb7c40000000ffffe5a902a473b175720000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c54450000000000005c390fc775146685ecb00000000174524e530040e6d866000000204944415478da62a02e600c0d7500d1995260aa561e4c89b0526c30200000ffffd33402a4b41fa11a0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"3e6bc8fc06a569840c9490f8122e6b7f08a7598486649b64477b548602362516"; blocksInfo[hash] = 2030074123; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c54450000000000005959590040ff401523b30000000174524e530040e6d8660000001b4944415478da621838c01aea00a2a4563b20f1700140000000ffff5249023a69668c5f0000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c54450000000000005959590040ff401523b30000000174524e530040e6d8660000001b4944415478da621838c01aea00a2a4563b20f1700140000000ffff5249023a69668c5f0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"2c382a7f1f32a6a2d0e9b0d378cb95e3dad70fe6909ff13888fe2a250bd10bb0"; blocksInfo[hash] = 1778412293; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000dfdfdf337edd570000000174524e530040e6d866000000134944415478da62a015603c00a600010000ffff04e700c22f5ee81e0000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000dfdfdf337edd570000000174524e530040e6d866000000124944415478da62a01928009380000000ffff0300007135fa2b640000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"8968ce85cb55abb5d9f6f678baeeb565638b6bad5d9be0ea2e703a34f4593566"; blocksInfo[hash] = 27137; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d866000000124944415478da62a00a50c02903080000ffff03a0002126a77fa30000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"c3075202748482832362d1b854d8274a38bf56c5ad38d418e590f46113ff10b1"; blocksInfo[hash] = 2466288394; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb0000000f504c5445000000000000690c458c0d5bad21606331bdda0000000174524e530040e6d866000000324944415478da621828c02828c8282808e328290a2a29423982c6868cc6863019174746174798264101101a0c00100000ffffe5da0307c5d3f79f0000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb0000000f504c5445000000000000690c458c0d5bad21606331bdda0000000174524e530040e6d866000000324944415478da62187c80515090515010c651521454528472048d0d198d0d61322e8e8c2e8e304d820220443f00080000ffff973e030740dbe40c0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"971f7c3d5d14436a3b5ef2d658445ea527464a6409bd5f9a44f3d72e30d1eba8"; blocksInfo[hash] = 1979741448; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c544500000000000055555535d909f10000000174524e530040e6d8660000001a4944415478da6280034608c5e680856242911b0800080000ffff990c011c0109f9070000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c544500000000000055555535d909f10000000174524e530040e6d8660000001b4944415478da62c0051cc024e3042c1443030a8f2e00100000ffff765a0305a5b614880000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"1f7b5107846b1e32944ccf8aedeaa871fc859506f51e7d12d6e9ad594a4d7619"; blocksInfo[hash] = 38664; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb00000012504c54450000000060c3e4eb173cc300000000d604049007f3910000000174524e530040e6d866000000334944415478da622001300a0a22f15890d8824aaa0108554aaaa170092125a5d000b82a252475c6c6c6060c431600020000ffff8e2f043f67fbc8370000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"d35b2735e5fcc86991c8501996742b3b8c35772d92b69859de58ddd3559be46c"; blocksInfo[hash] = 2147516424; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c54450000008119b7b261dc8e83430a0000000174524e530040e6d866000000254944415478da62c00f4243402463682a88620d8d84506051d6d0d05006ba0140000000fffff131041f8da125b90000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c54450000008119b7b261dc8e83430a0000000174524e530040e6d866000000254944415478da62200a888682a9d04807060606c6d03008151a0aa51c18680e00010000fffffb9604856eb921470000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"2004722753f61acb2cefde9b14d2c01c6bcb589d749b4ea616b4e47d83fdb056"; blocksInfo[hash] = 2214623748; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c544500000028b1432c95412964343ee6dbfc0000000174524e530040e6d8660000001c4944415478da62a016106001531a5c608a871959900a00100000ffff23b6006aaf575b4b0000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb0000000f504c544500000028b1432c95410000002964344cdbc5fd0000000174524e530040e6d866000000234944415478da6218848091814100ce615260508273981d184cb02ba33700040000ffff7ae900dec03f69060000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"05a5afe13f23e20e6cebabae910a492c91f4b862c2e1a5822914be79ab519bd8"; blocksInfo[hash] = 32518; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c544500000000000086581eeeb664cd0000000174524e530040e6d866000000244944415478da62a01f6084520e6006636828980a5b0a1685f0184443706806040000ffff718d02fe68c219c00000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"ac5194b2986dd9939aedf83029a6e0a1d7d482eb00a5dafa05fc0aaa9b616582"; blocksInfo[hash] = 2181072139; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000c9c9c9b1b1b1dfe0055e0000000174524e530040e6d8660000002a4944415478da62a0096081508c50ae0384213a0542858029d508b092d0506441d6001c2602020000ffff944e033f6ebf94330000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000c9c9c9b1b1b1dfe0055e0000000174524e530040e6d866000000274944415478da62a0256084d20e1086e814081502a65423c0546828b2206b000ea300010000ffff92de033acd8c71070000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"f94798c1aedb2dce1990e0dae94c15178ddd4229aff8031c9a5b7a77743a34d4"; blocksInfo[hash] = 32518; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000a66e2c00000080c0c2990000000174524e530040e6d866000000244944415478da62a01f6084520e6006636828980a5b0a1685f0184443706806040000ffff718d02fe68c219c00000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"15854f7a2b735373aa76722c01e2f289d8b18cb1a70575796be435e4ce55e57a"; blocksInfo[hash] = 2248181258; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c54450000000000008d8d8db4b4b44f7060b00000000174524e530040e6d866000000284944415478da62a01884863a30303030eeff3f81818181ed6ae805040515842aa10800020000ffff69b20a7394f432b40000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c54450000000000008d8d8db4b4b44f7060b00000000174524e530040e6d866000000284944415478da62a032080d7560606060dcff7f02030303dbd5d00b080a2a0855422200040000ffffd7670a737ec363890000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"d91f640608a7c1b2b750276d97d603512a02f4b84ca13c875a585b12a24320c2"; blocksInfo[hash] = 1912631818; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d8660000001a4944415478da62201630fe676060f800c509446b03040000ffffa0210341317dad5b0000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d8660000001a4944415478da62200530fe676060f800c509446901040000ffff932103411ff574e90000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"6bb15b5e619a28950bae0eb6a03f13daea1b430ef5ded0c5606b335f5b077cda"; blocksInfo[hash] = 2751501576; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d8660000003d4944415478da624006ccfc0d0cc2ff0d18e4ff3f6090ffff81811f447f7ec0603ff300033fc303067986070ce20c20f601060e0607062200200000ffffb9320f35dcea59b30000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d8660000004c4944415478da62800326060626970606d6fc090ce2ff1730f0ff7fc020ffff0384fe7c80c17ee603067e860f0cf20c0f18c419206c2e0607062606070616060706060605062c00100000ffff1b1511db1ceba4170000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"7a8b4abb14bfe7b505902c23a9c4e59e5a70c7daf6e28a5f83049c13142cde5e"; blocksInfo[hash] = 35080; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000000000dc1d1d9b9a25510000000174524e530040e6d8660000002e4944415478da628001c6d05010c51a1aea808be25ab5aa818181413434348081812134343484816e00100000ffff612d08a80a65c2450000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"72efa89c7645580b2d0d03f51f1a2b64a425844a5cd69f1b3bb6609a4a06e47f"; blocksInfo[hash] = 2399178504; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c54450000001a43c81637a4142c7c2bcdbdcc0000000174524e530040e6d866000000314944415478da62200aac5a05229942431b18181838c1145beeaa30060606c60d0c2b40d401b03a46065a0140000000ffff35c90742649028070000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c54450000001a43c81637a4142c7c2bcdbdcc0000000174524e530040e6d866000000314944415478da622005ac5a05229942431b18181838c1145beeaa30060606c60d0c2b40d401b03a4606aa0340000000ffff03020742f02d25cf0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"fc1c0134d4441a1d7c81368f23d7dfcdeab3776687073c12af9d268e00d6c0a8"; blocksInfo[hash] = 29446; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000c28946a66e2cc99988650000000174524e530040e6d866000000184944415478da621830c0b6044c717020533801200000ffff22f000cb47eae9030000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"6ced067c29d04b367c1f3cb5e7721ad5a662f5e338ee3e10c7d64d9d109ed606"; blocksInfo[hash] = 2533396488; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c54450000000000002a2a2a02692f080000000174524e530040e6d866000000354944415478da62c00142434024636a2888629d1aeac0c0c0201a1a1a80490542284710c920cae000d600318495816a00100000ffff912107d1f05714420000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c54450000000000002a2a2a02692f080000000174524e530040e6d8660000003c4944415478da62c00f42434024636a2888629d1aeac0c0c0201a1a1a8049054228c70001903606071130c58044854028113825c0403c00040000ffffd90d09b1ff89a89f0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"66a6c35fd6db8b93449f29befe26e2e4bcb09799d56216ada0ef901c53cf439f"; blocksInfo[hash] = 2634063368; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000e226260000001337790f0000000174524e530040e6d866000000434944415478da6240038c0c0e208ad5350044b386ba82a8d0d0d000060616d1d0d05090586868084830c005240756c7c01800d19d0031054a39408da40200040000ffff0b6408c6ffc386f40000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000e226261ed2bbd80000000174524e530040e6d866000000454944415478da6240011a0c0c4c2b191898ea0b1858ff3730b0fd7fc020dedcc0c0cff081819de101031bc307061e86040616060730cdc6e0c0c0c4e0c0800700020000ffff86820ac86b32f7cc0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"85c5daead3bc85feb0d62d1f185f82fdc2627bdbc7f1f2ffed1c721c6fcc4b4d"; blocksInfo[hash] = 38664; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb0000000f504c544500000000000026314affffffffd8001025743b0000000174524e530040e6d866000000364944415478da622005080a2098824a8a302ea392928a9292229ca304e7300883004c97a010920c03a3a0a0a020c3500580000000ffff347603a082b51cae0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"3d1f5637dfc56d4147818053fdcc0c0a35886121b7e4fc1a7cff584e4bb6414f"; blocksInfo[hash] = 27137; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000ffffffa5d99fdd0000000174524e530040e6d866000000124944415478da62a01a10c12a0a080000ffff02180015518fefb80000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"64b53b34ebe074820dbda2f80085c52f209d5eba6c783abdae0a19950f0787ec"; blocksInfo[hash] = 31240; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c54450000004c4c4c63636367c20ce50000000174524e530040e6d8660000001f4944415478da62200584868048c6d45030351542858632d00100020000ffff4d8702fb0f1c34300000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"833ca1b7f8f2ce28f7003fb78b72e259d5a484b13477ad8212edb844217225ac"; blocksInfo[hash] = 31238; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000a66e2c00000080c0c2990000000174524e530040e6d8660000001f4944415478da621830c01a02a6585890798c01c814d302b86a40000000ffff2fa301ff0f47294e0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"44c2482a71c9d39dac1cf9a7daf6de80db79735c0042846cb9d47f85ccc3ba9b"; blocksInfo[hash] = 1979739907; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df8000000364944415478da6262a03118b560d4826166810301fec080d148a6d882018dc8a1958a1c466e300d8a7c3038cba0e1535400020000ffff98f50225e7db2e020000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df80000003d4944415478da6262a03118b560d482510b28b0a027ca7e26d55d43134387761c0c68900c9af8601ad4ae1d14c134f88a8a41979b877e710d080000fffff2580c5583685c2e0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"4acd7797c5821ccc56add3739a55bcfd4e4cfd72b30274ec6c156b6c1d9185eb"; blocksInfo[hash] = 35334; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000000000a66e2c9730e2d80000000174524e530040e6d8660000002f4944415478da62a03fd05a05229956ad9ac0c0c020b5820b4c4179108a11423184ad7200518ca10c0c80000000ffff51890b8e68fe91ee0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"c0ac7bb45040825a6d9a997dc99a6ec94027d27133145018c0561b880ecdb389"; blocksInfo[hash] = 30984; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d866000000214944415478da62c009fe313030ce656060e480605c8011861bb04a03020000ffff7e1c023207c1f3860000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"a756817780c8e400f79cdd974270d70e0cd172aa662d7cf7c9fe0b63a4a71d95"; blocksInfo[hash] = 32264; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d866000000264944415478da620083100606867f10ccf89f8181f1230303b3650303830003a500100000ffff8fa8050f2a3982bb0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"71c5ce05a579f7a6bbc9fb7517851ae9394c8cb6e4fcad99245ce296b6a3c541"; blocksInfo[hash] = 32518; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000a66e2c00000080c0c2990000000174524e530040e6d866000000244944415478da62a01f6084520e8c481443000a251a02511300a69816c03503020000ffff46850284e24691b90000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"283597377fbec1d21fb9d58af5fa0c43990b1f7c2fc6168412ceb4837d9bf86c"; blocksInfo[hash] = 34312; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c54450000003d2f1e000000c8d065ca0000000174524e530040e6d8660000002b4944415478da62c0014403c054680812c5181a0aa2b856ad6a008985824419434321a2340680000000ffff28a206e959ceed270000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"bb1f372f67259011c2e9e7346c8a03a11f260853a1fe248ddd29540219788747"; blocksInfo[hash] = 1879076871; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000000000ffd926bf0c26860000000174524e530040e6d866000000154944415478da62a00348805002949801080000ffff1df8007172dffd610000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000000000ffd926bf0c26860000000174524e530040e6d866000000154944415478da62a0039080502c949801080000ffff07fc001da05932af0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"d5de5c20969a9e22f93842ca4d65bac0c0387225cee45a944a14f03f9221fd4a"; blocksInfo[hash] = 2164294666; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df80000004b4944415478da6262a03118b560d482510be860010b01f9ff2498c5488e050ca79ffd2d84b14da598fbb1884dc0e71026125dc588c3a58c0316070ca3c974d482510b86810580000000ffffcf460a37173d31500000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df8000000484944415478da6262a03118b560d482510b8683052c04e4ff13690e23b916309c7ef6b710c6369562eec725466e103162e13312eb7abac401c368321db560d402da5b00080000ffffbe8c09370dfcbb5e0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"b040fea53c68833d052aa3e7c8552b04390371501b9976c938d3bd8ec66e4734"; blocksInfo[hash] = 2684384520; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000ffffff1a6ed56fb0c5a50000000174524e530040e6d8660000001a4944415478da62201d3086868228a655ab18e80700010000ffffdec602021e01f4d60000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c5445000000000000ffffff1a6ed5d93a1bf30000000174524e530040e6d866000000424944415478da6220033830824846d110070606069655ab0418181844feff17015160c420808d0a61600845a14419c04c08c518c20062b242a900343b01010000ffff7f5108b501fb5fc90000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"74ca947c09f7b62348c4f3c81b91973356ec81529d6220ff891012154ce517c7"; blocksInfo[hash] = 2835392779; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df8000000704944415478da6262a03118b560d482510b462dc00276eedcd940330b6086235b42f3206218f27130b27df09f963ef8df1a28826ec97f2c988191121f802ca95eff06660ecc523080895312078c2043907df2f8f51706649a521fa00717dcf019477ec0cd66a45184c3cd05040000ffffe2512fe56a94b4330000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df8000000704944415478da6262a03118b560d482510b462dc00276eedcd940330b6086235b42f3206218f27130b27df09f963ef8df1a28826ec97f2c988191121f802ca95eff06660ecc523080895312078c2043907df2f8f51706649a521fa00717dcf019477ec0cd66a45184c3cd05040000ffffe2512fe56a94b4330000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"30146eda149865d57c6ae9dac707d809120563fadb039d7bca3231041bea6b2e"; blocksInfo[hash] = 2197848840; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d8660000002b4944415478da62c0007f191818ff333030ff3fc0c0febf8181f9770303bbe70106860e067200200000ffff2b95085cdd2d2f2d0000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d8660000002b4944415478da62c0007f191818ff333030ff3fc0c0febf8181f9770303bbe70106860e067200200000ffff2b95085cdd2d2f2d0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"8394d1b7af0d52a25908dc9123cc00aa0670debcac95a76c3e9a20dd6c7e7c23"; blocksInfo[hash] = 31238; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c544500000068461f000000b80d8ed70000000174524e530040e6d8660000001f4944415478da621830c01a02a6585890798c01c814d302b86a40000000ffff2fa301ff0f47294e0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"eb787e7727b2d8d912a02d9ad4c30c964b40f4cebe754bb4d3bfb09959565c91"; blocksInfo[hash] = 47880; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c544500000000000055555535d909f10000000174524e530040e6d866000000604944415478da7ccdb10dc4200c85e1df050c71d330c4817457d3c03414648334f194d12352bac4b2fc59966cf310212dfe53d5fc10d15dd38ffb007a2e3bd0305157aa6d60037e37f10b25bd62f35a9858d531cbfa50434f8b0dce000000ffffa30d1684d4b69ae10000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"6a36bcf4268827203e8a3f374b49c1ff69b62623e234e96858ff0f2d32fbf268"; blocksInfo[hash] = 1778413573; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000ffc926d3ca64d80000000174524e530040e6d866000000184944415478da62a0366004110d0c0c0c0e602e200000ffff06ef00c28387215b0000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000ffc926d3ca64d80000000174524e530040e6d866000000124944415478da62a01928009380000000ffff0300007135fa2b640000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"2f237bd68c6e318a6d0aa26172032a8a73a5e0e968ad3d74ef1178e64d209b48"; blocksInfo[hash] = 29958; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000a66e2cb134b2d70000000174524e530040e6d8660000001d4944415478da62a004308270230303e34106068683589500020000ffff340b0207ed983fca0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"ad07511765ae4becdc5300c486c7806cd661840b0670d0f6670e8c4014de37b0"; blocksInfo[hash] = 1929409800; blockL[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d8660000001d4944415478da62c00a0418181842a078110303c324067201200000ffff79f001ed2e0ca9360000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d8660000001b4944415478da622008b4181818421918185631900300010000ffff41aa012a18d810ed0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"49e0947b696384a658eeca7f5746ffbdd90a5f5526f8d15e6396056b7a0dc8af"; blocksInfo[hash] = 2080406538; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000000000d7d7d7dd6bdeda0000000174524e530040e6d866000000214944415478da62a012600c0d7500518e01208a3531024c4104a90100010000ffff324a03ab83e6711a0000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000000000d7d7d7dd6bdeda0000000174524e530040e6d866000000214944415478da62a02e600c0d7500518e01208a3531024c4104290280000000ffff18a403ab4ed4e1740000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"c1695b389d89c71dc7afd5111f17f6540b3a28261e4d2bf5631c1484f322fc68"; blocksInfo[hash] = 2097184522; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c5445000000f0f0f0328dfdfd3232d47923120000000174524e530040e6d866000000214944415478da62a012600d0d7560606060ccaa07510c500a22480d00080000ffff5dd3042db0f16dd40000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c5445000000f0f0f0328dfdfd3232d47923120000000174524e530040e6d8660000001f4944415478da62a02e600c0d75005159f5208a014a4104290280000000ffff3f3b04294160e2b30000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"09c36cad1064f6107d2e3bef439f87a16c8ef2e95905a827b2ce7f111dd801d7"; blocksInfo[hash] = 2214623748; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c54450000002858b12c5195293e64cf044ab90000000174524e530040e6d8660000001c4944415478da62a016106001531a5c608a871959900a00100000ffff23b6006aaf575b4b0000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb0000000f504c54450000002858b12c5195000000293e648e458eca0000000174524e530040e6d866000000234944415478da6218848091814100ce615260508273981d184cb02ba33700040000ffff7ae900dec03f69060000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"eb92e34266f6fa01c275db8379f6a521f15ab6f96297fe3266df2fe6b0e1422e"; blocksInfo[hash] = 2181071880; blockL[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c544500000000000085561ea66e2c6852a3220000000174524e530040e6d866000000264944415478da6240800030c978014cb143286908a57f004c31432886030c740780000000ffffcd2f05565fc3044d0000000049454e44ae426082"; blockS[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c544500000000000085561ea66e2c6852a3220000000174524e530040e6d866000000244944415478da62c005442054099864fc02a6d82014f707881c943260a00300040000ffff252e04932174d5ed0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"1892c4c9cf47baf2c613f184114519fe8208c2bebabb732405aeac1c3031dc2b"; blocksInfo[hash] = 2466250760; blockS[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c54450000002d6b6200000080dbda32008fdd0000000174524e530040e6d866000000354944415478da62200a888680a955ab4024d3bffd0d20ead77a30b5320b443186863a303030b03230e0a41889a6b00040000000ffff4bc30b42e46330a00000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"250be814c80d8ca10bbef531b679392db8221a6fab289a6b5e637df663f48699"; blocksInfo[hash] = 2868903944; blockS[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c544500000000000022900000558084ff9e8a0000000174524e530040e6d8660000004d4944415478da6240078c0e608a7d0298927b02a6a4b780a9bcb76015bb7783d430be7b07a2d857ad0629656b6002530c0c208a098562234c4935302d01f318413c46060607346701020000ffff3d76119d224fcf200000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"cd87356aa78c4fcb95e51f57578570d377440e347e0869cf1b4749d5a26340b5"; blocksInfo[hash] = 1778384897; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000c42110a2e982d40000000174524e530040e6d866000000124944415478da62a01a90c12a0a080000ffff02c8001d72b777ad0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"4fa682c6066fcc513a0511418aa85a0037ac59a899e9491c512b63e253697a8c"; blocksInfo[hash] = 1895825412; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df8000000384944415478da6262a03118b560d482510b462da09605da65536682302131b22db8da95934e8cd88080d154346ac1a80574b000100000ffffc4410bcb596becd80000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"36f07f03014f047728880d9f390629140a5e7c44477290695c4c1ddda356d365"; blocksInfo[hash] = 2264924168; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d8660000002f4944415478da62c00bea181818fe333030fe6f60603ed8c0c0dc00c1ec0c58302312666e606067079b00080000ffffd1030b1b1e3ca1240000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"68107f52c261820bd73e4046eb3fb5d5a1e0926611562c07054a3b89334cef34"; blocksInfo[hash] = 1912602629; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d8660000001a4944415478da62a03a70606060486060603000f300010000ffff08c000d178549d360000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"d395cf4acda004fbc9963f85c65bf3f190c2aceb0744a535d543bc261caf6ff0"; blocksInfo[hash] = 2801795080; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000fff68e5319653e0000000174524e530040e6d8660000004f4944415478da624001c20c0c0ce71d1898df3730b0d7fd60e0fdff8041feff0106f6c31f18f8955e30c8b31430f0305430c8305430f0301430c831043070332c60e06330606061c00a00010000ffff3f7f0e31b0bc620f0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"bad0fc475e9d35de67c426fc37eebb7fa38141bc2135fabd5504a911e1b05540"; blocksInfo[hash] = 2634022920; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000ffffffa5d99fdd0000000174524e530040e6d866000000454944415478da62c00a6c191818eb181818ff3b30b0ff5fc0c07cff0103fbca030cdc1d0f18d8390218b8581218e4181218d8180a18d8181c1838181418700040000000ffff367b0a7764b3c52f0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"d10bc0475e2a0eea9f6aca91e6e82c6416f894f27fc26bb0735f29b84c54a3e6"; blocksInfo[hash] = 1979711496; blockS[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000ffba00ff2a00ec23aa7c0000000174524e530040e6d8660000001b4944415478da62201f888a40680730c9380199477500080000ffff7648013b91a176490000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"a0a2010e841ab7b343263c98f47a16b88656913e1353d96914f5fe492511893f"; blocksInfo[hash] = 2315255816; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000e65700fdf2de4e0000000174524e530040e6d866000000324944415478da62c0096c181818fe333030fe6f80e0d6030ccc0c10cc04c50c0c0f3031e303060666106e009902080000ffff4fd30f33b75f06fe0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"0e6769a10f786458ca82b57684746fe8899e35f7772543acb6a8869c4ac780cd"; blocksInfo[hash] = 1929379848; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000e226261ed2bbd80000000174524e530040e6d8660000001b4944415478da62c0001c0c0c0c120c0c0c16509a3200080000ffff1f400071228f4c0b0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"1004d2d00ccf8794739c7b7cbbe6048841f4c8af046b37d59e9a801a167544e2"; blocksInfo[hash] = 1895825412; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df8000000384944415478da6262a03118b560d482510b462da09605db18d6cf04614262645be0c510984e8cd88080d154346ac1a80574b000100000ffff94270a2bdc4a43550000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"629e82a55845ea763431647fcaecfb232e275a36d8427f2568377864193801cb"; blocksInfo[hash] = 2449473544; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d8660000003a4944415478da62c009ea181818fe333030fe6f6060fe7f0082273c60606780603686070c7c50cccff08141bef1030373e301745300010000ffffc5ab1058fff3c7650000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"cd3633a5e96d615b834e90e67029f7f9f507b832e1cb263a29685b8e25f678cf"; blocksInfo[hash] = 2231369736; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000fff68e5319653e0000000174524e530040e6d8660000002d4944415478da62c00a6a181818fe313030fe07e1060666106e696060e66860606280604646066200200000ffffdcdb0815f637cf1a0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"e81a9c78c0ec4339dc6772f1b9bbf406b53063f8408a91fe29f63ba1c2bc7b5a"; blocksInfo[hash] = 1778384897; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000cd00cb30a6a7e40000000174524e530040e6d866000000124944415478da62a01a90c12a0a080000ffff02c8001d72b777ad0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"e11278d6c191c8199a5b8bb49be7f806b837a9811195c903d844a74c4c4a704e"; blocksInfo[hash] = 2600468488; blockS[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000000000ffd926bf0c26860000000174524e530040e6d866000000404944415478da62200a888680c880d050560606c6b0d0d0a90e0caca1a1a1a1010cac81018cae010cac8e0e0c8c010cac0e0c208a11a4da81819a00100000ffff496407d2e13d1cb20000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"411ec1566affa22bd67b13a7c49ac060c018e1c806cd314cd2186118dd55e129"; blocksInfo[hash] = 2281701384; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000fff68e5319653e0000000174524e530040e6d866000000304944415478da7cccb10900300c03c1372ab475d06a99cc81b8f7c3b5cfda011aaa836e50865954b082fd0f2f0000ffffd0db0b19f8088baf0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"1868a04ecae06e10c5b6dcbbed4befac1ed03dda2cf86ddbd855466cc588809f"; blocksInfo[hash] = 2197815306; blockS[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c54450000001c1a00534c0080dbda6080589f0000000174524e530040e6d866000000254944415478da62200364463930303030eecb6f40a232a5c0820c0c0e0cb40080000000ffff32d20565dbf243f00000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"3511b04ac6a3d46305172269904dc469a40f380a4e7afa8742ce6e6a44825c4a"; blocksInfo[hash] = 2785017864; blockS[hash] = hex"89504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c5445000000ff8ebe000000ffffff4ae3beda0000000174524e530040e6d866000000484944415478da62200568ad0053ab578148a655af1ac0d42a10c5181aeac0c0c0c0ea181000a2181c409408034308030383281e8a958101acc1811144313a303a60b71a100000ffff0f6e0bf3e2fa2eec0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"2857e47dcac3b744dd7d41617ce362f1dd3ae8eb836685cc18338714205b036c"; blocksInfo[hash] = 2432696328; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000fff68e5319653e0000000174524e530040e6d866000000394944415478da62c00aea181818ff83700303f3df030ccc15071898050e30b0331c6060836276307e00c6fc0d1f18980f36603309100000ffffaa950e78c9a6ec2c0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"2e9a5434da70e5ea2ed439b3a33aac60bd252c92698c1ba37e9ed77f975c6cab"; blocksInfo[hash] = 1895825412; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df8000000384944415478da6262a03118b560d482510b462da09605da531c6782302131b22db89ab33f9d18b10101a3a968d482510be86001200000ffffd02f0b616aa9c37e0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"8c0e60b85ff0f8be1a87b28ae066a63dcc3c02589a213b0856321a73882515f9"; blocksInfo[hash] = 2264924168; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c544500000051360c48b320160000000174524e530040e6d8660000002f4944415478da62c00bea181818fe333030fe6f60603ed8c0c0dc00c1ec0c58302312666e606067079b00080000ffffd1030b1b1e3ca1240000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"e651be5dd43261e6e9c1098ec114ab5c44e7cb07377dc674336f1b3d34428fe4"; blocksInfo[hash] = 2382364680; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d866000000364944415478da62c00a0a1818187f303030bf6060607fc0c0c07e808181bd8181811f861920980f19373030c83320301400020000ffff746d06dbf514328c0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; hash = hex"1cd064e6db4e7c5180ccf5f2afe1370c6539b525fe3bea9c358f24a7cbdb50ad"; blocksInfo[hash] = 1778384897; blockS[hash] = hex"89504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d866000000124944415478da62a01a90c12a0a080000ffff02c8001d72b777ad0000000049454e44ae426082"; index[nextId] = bytes32(hash); nextId++; // default config mapping(Layer => uint16) storage c = orderConfig[0]; for (uint8 i = 0; i < 13; i++) { c[Layer(i)] = i; } nextConfigId++; admin = msg.sender; } function abort() external payable { require (msg.sender == admin, "nope"); selfdestruct(payable(admin)); } function seal() external { require (msg.sender == admin, "nope"); admin = address(0); } function toString(uint256 value) public pure returns (string memory) { // Inspired by openzeppelin's implementation - MIT licence // https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Strings.sol#L15 // this version removes the decimals counting uint8 count; if (value == 0) { return "0"; } uint256 digits = 31; // bytes and strings are big endian, so working on the buffer from right to left // this means we won't need to reverse the string later bytes memory buffer = new bytes(32); while (value != 0) { buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; digits -= 1; count++; } uint256 temp; assembly { temp := mload(add(buffer, 32)) temp := shl(mul(sub(32,count),8), temp) mstore(add(buffer, 32), temp) mstore(buffer, count) } return string(buffer); } } // IAttrParser implemented by 0x4e776fCbb241a0e0Ea2904d642baa4c7E171a1E9 interface IAttrParser { function parseAttributes(uint256 _tokenId) external view returns (string[8] memory); } library Base64 { /** * @dev Base64 Encoding/Decoding Table */ string internal constant _TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; /** * @dev Converts a `bytes` to its Bytes64 `string` representation. */ function encode(bytes memory data) internal pure returns (string memory) { /** * Inspired by Brecht Devos (Brechtpd) implementation - MIT licence * https://github.com/Brechtpd/base64/blob/e78d9fd951e7b0977ddca77d92dc85183770daf4/base64.sol */ if (data.length == 0) return ""; // Loads the table into memory string memory table = _TABLE; // Encoding takes 3 bytes chunks of binary data from `bytes` data parameter // and split into 4 numbers of 6 bits. // The final Base64 length should be `bytes` data length multiplied by 4/3 rounded up // - `data.length + 2` -> Round up // - `/ 3` -> Number of 3-bytes chunks // - `4 *` -> 4 characters for each chunk string memory result = new string(4 * ((data.length + 2) / 3)); /// @solidity memory-safe-assembly assembly { // Prepare the lookup table (skip the first "length" byte) let tablePtr := add(table, 1) // Prepare result pointer, jump over length let resultPtr := add(result, 32) // Run over the input, 3 bytes at a time for { let dataPtr := data let endPtr := add(data, mload(data)) } lt(dataPtr, endPtr) { } { // Advance 3 bytes dataPtr := add(dataPtr, 3) let input := mload(dataPtr) // To write each character, shift the 3 bytes (18 bits) chunk // 4 times in blocks of 6 bits for each character (18, 12, 6, 0) // and apply logical AND with 0x3F which is the number of // the previous character in the ASCII table prior to the Base64 Table // The result is then added to the table to get the character to write, // and finally write it in the result pointer but with a left shift // of 256 (1 byte) - 8 (1 ASCII char) = 248 bits mstore8(resultPtr, mload(add(tablePtr, and(shr(18, input), 0x3F)))) resultPtr := add(resultPtr, 1) // Advance mstore8(resultPtr, mload(add(tablePtr, and(shr(12, input), 0x3F)))) resultPtr := add(resultPtr, 1) // Advance mstore8(resultPtr, mload(add(tablePtr, and(shr(6, input), 0x3F)))) resultPtr := add(resultPtr, 1) // Advance mstore8(resultPtr, mload(add(tablePtr, and(input, 0x3F)))) resultPtr := add(resultPtr, 1) // Advance } // When data `bytes` is not exactly 3 bytes long // it is padded with `=` characters at the end switch mod(mload(data), 3) case 1 { mstore8(sub(resultPtr, 1), 0x3d) mstore8(sub(resultPtr, 2), 0x3d) } case 2 { mstore8(sub(resultPtr, 1), 0x3d) } } return result; } } /** * DynamicBufferLib adapted from * https://github.com/Vectorized/solady/blob/main/src/utils/DynamicBufferLib.sol */ library DynamicBufferLib { /// @dev Type to represent a dynamic buffer in memory. /// You can directly assign to `data`, and the `append` function will /// take care of the memory allocation. struct DynamicBuffer { bytes data; } /// @dev Appends `data` to `buffer`. /// Returns the same buffer, so that it can be used for function chaining. function append(DynamicBuffer memory buffer, bytes memory data) internal pure returns (DynamicBuffer memory) { /// @solidity memory-safe-assembly assembly { if mload(data) { let w := not(31) let bufferData := mload(buffer) let bufferDataLength := mload(bufferData) let newBufferDataLength := add(mload(data), bufferDataLength) // Some random prime number to multiply `capacity`, so that // we know that the `capacity` is for a dynamic buffer. // Selected to be larger than any memory pointer realistically. let prime := 1621250193422201 let capacity := mload(add(bufferData, w)) // Extract `capacity`, and set it to 0, if it is not a multiple of `prime`. capacity := mul(div(capacity, prime), iszero(mod(capacity, prime))) // Expand / Reallocate memory if required. // Note that we need to allocate an exta word for the length, and // and another extra word as a safety word (giving a total of 0x40 bytes). // Without the safety word, the data at the next free memory word can be overwritten, // because the backwards copying can exceed the buffer space used for storage. for {} iszero(lt(newBufferDataLength, capacity)) {} { // Approximately double the memory with a heuristic, // ensuring more than enough space for the combined data, // rounding up to the next multiple of 32. let newCapacity := and(add(capacity, add(or(capacity, newBufferDataLength), 32)), w) // If next word after current buffer is not eligible for use. if iszero(eq(mload(0x40), add(bufferData, add(0x40, capacity)))) { // Set the `newBufferData` to point to the word after capacity. let newBufferData := add(mload(0x40), 0x20) // Reallocate the memory. mstore(0x40, add(newBufferData, add(0x40, newCapacity))) // Store the `newBufferData`. mstore(buffer, newBufferData) // Copy `bufferData` one word at a time, backwards. for { let o := and(add(bufferDataLength, 32), w) } 1 {} { mstore(add(newBufferData, o), mload(add(bufferData, o))) o := add(o, w) // `sub(o, 0x20)`. if iszero(o) { break } } // Store the `capacity` multiplied by `prime` in the word before the `length`. mstore(add(newBufferData, w), mul(prime, newCapacity)) // Assign `newBufferData` to `bufferData`. bufferData := newBufferData break } // Expand the memory. mstore(0x40, add(bufferData, add(0x40, newCapacity))) // Store the `capacity` multiplied by `prime` in the word before the `length`. mstore(add(bufferData, w), mul(prime, newCapacity)) break } // Initalize `output` to the next empty position in `bufferData`. let output := add(bufferData, bufferDataLength) // Copy `data` one word at a time, backwards. for { let o := and(add(mload(data), 32), w) } 1 {} { mstore(add(output, o), mload(add(data, o))) o := add(o, w) // `sub(o, 0x20)`. if iszero(o) { break } } // Zeroize the word after the buffer. mstore(add(add(bufferData, 0x20), newBufferDataLength), 0) // Store the `newBufferDataLength`. mstore(bufferData, newBufferDataLength) } } return buffer; } /* /// @dev Appends `data0`, `data1` to `buffer`. /// Returns the same buffer, so that it can be used for function chaining. function append(DynamicBuffer memory buffer, bytes memory data0, bytes memory data1) internal pure returns (DynamicBuffer memory) { return append(append(buffer, data0), data1); } */ /// @dev Appends `data0`, `data1`, `data2` to `buffer`. /// Returns the same buffer, so that it can be used for function chaining. function append( DynamicBuffer memory buffer, bytes memory data0, bytes memory data1, bytes memory data2 ) internal pure returns (DynamicBuffer memory) { return append(append(append(buffer, data0), data1), data2); } /* /// @dev Appends `data0`, `data1`, `data2`, `data3` to `buffer`. /// Returns the same buffer, so that it can be used for function chaining. function append( DynamicBuffer memory buffer, bytes memory data0, bytes memory data1, bytes memory data2, bytes memory data3 ) internal pure returns (DynamicBuffer memory) { return append(append(append(append(buffer, data0), data1), data2), data3); } /// @dev Appends `data0`, `data1`, `data2`, `data3`, `data4` to `buffer`. /// Returns the same buffer, so that it can be used for function chaining. function append( DynamicBuffer memory buffer, bytes memory data0, bytes memory data1, bytes memory data2, bytes memory data3, bytes memory data4 ) internal pure returns (DynamicBuffer memory) { append(append(append(append(buffer, data0), data1), data2), data3); return append(buffer, data4); } /// @dev Appends `data0`, `data1`, `data2`, `data3`, `data4`, `data5` to `buffer`. /// Returns the same buffer, so that it can be used for function chaining. function append( DynamicBuffer memory buffer, bytes memory data0, bytes memory data1, bytes memory data2, bytes memory data3, bytes memory data4, bytes memory data5 ) internal pure returns (DynamicBuffer memory) { append(append(append(append(buffer, data0), data1), data2), data3); return append(append(buffer, data4), data5); } /// @dev Appends `data0`, `data1`, `data2`, `data3`, `data4`, `data5`, `data6` to `buffer`. /// Returns the same buffer, so that it can be used for function chaining. function append( DynamicBuffer memory buffer, bytes memory data0, bytes memory data1, bytes memory data2, bytes memory data3, bytes memory data4, bytes memory data5, bytes memory data6 ) internal pure returns (DynamicBuffer memory) { append(append(append(append(buffer, data0), data1), data2), data3); return append(append(append(buffer, data4), data5), data6); } */ }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint32","name":"","type":"uint32"},{"indexed":false,"internalType":"string","name":"","type":"string"}],"name":"NewBlock","type":"event"},{"inputs":[],"name":"abort","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"blockL","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"blockS","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"blockToLayer","outputs":[{"internalType":"enum PunkBlocks.Layer","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"blocksInfo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fromID","type":"uint256"},{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"getBlocks","outputs":[{"components":[{"internalType":"enum PunkBlocks.Layer","name":"layer","type":"uint8"},{"internalType":"bytes","name":"blockL","type":"bytes"},{"internalType":"bytes","name":"blockS","type":"bytes"}],"internalType":"struct PunkBlocks.Block[]","name":"","type":"tuple[]"},{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"","type":"uint32"}],"name":"index","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_id","type":"bytes32"}],"name":"info","outputs":[{"internalType":"enum PunkBlocks.Layer","name":"","type":"uint8"},{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextConfigId","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextId","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"enum PunkBlocks.Layer","name":"","type":"uint8"}],"name":"orderConfig","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_dataL","type":"bytes"},{"internalType":"bytes","name":"_dataS","type":"bytes"},{"internalType":"uint8","name":"_layer","type":"uint8"},{"internalType":"string","name":"_name","type":"string"}],"name":"registerBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum PunkBlocks.Layer[]","name":"_order","type":"uint8[]"}],"name":"registerOrderConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"seal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32[]","name":"_ids","type":"uint32[]"},{"internalType":"uint16","name":"_x","type":"uint16"},{"internalType":"uint16","name":"_y","type":"uint16"},{"internalType":"uint16","name":"_size","type":"uint16"},{"internalType":"uint32","name":"_orderID","type":"uint32"}],"name":"svgFromIDs","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"_attributeKeys","type":"bytes32[]"},{"internalType":"uint16","name":"_x","type":"uint16"},{"internalType":"uint16","name":"_y","type":"uint16"},{"internalType":"uint16","name":"_size","type":"uint16"},{"internalType":"uint32","name":"_orderID","type":"uint32"}],"name":"svgFromKeys","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string[]","name":"_attributeNames","type":"string[]"},{"internalType":"uint16","name":"_x","type":"uint16"},{"internalType":"uint16","name":"_y","type":"uint16"},{"internalType":"uint16","name":"_size","type":"uint16"},{"internalType":"uint32","name":"_orderID","type":"uint32"}],"name":"svgFromNames","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenID","type":"uint256"},{"internalType":"uint16","name":"_x","type":"uint16"},{"internalType":"uint16","name":"_y","type":"uint16"},{"internalType":"uint16","name":"_size","type":"uint16"},{"internalType":"uint32","name":"_orderID","type":"uint32"}],"name":"svgFromPunkID","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"toString","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b507f9039da071f773e85254cbd0f99efa70230c4c11d63fce84323db9eca8e8ef28360008190526003602090815261b3007fb48237bc4ba3d933826e9c4d2266321880bf4fb50697c288aee3ed0690e3d6dc556040805160e0810190915260b380825290916200b5329083013960008281526002602052604090209062000099908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620000d58362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fdfcbad4edd134a08c17026fc7af40e146af242a3412600cee7c0719d0ac42d53905061b30060036000838152602001908152602001600020819055506040518060e0016040528060b38152602001620095f460b3913960008281526002602052604090209062000166908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620001a28362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fed94d667f893279240c415151388f335b32027819fa6a4661afaacce342f4c54905061b30060036000838152602001908152602001600020819055506040518060e0016040528060b381526020016200c81360b3913960008281526002602052604090209062000233908262005845565b506005805463ffffffff6401000000009182900481166000908152600660205260409020849055825491909104169060046200026f8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f1323f587f8837b162082b8d221e381c5e015d390305ce6be8ade3ff70e70446e905061b30060036000838152602001908152602001600020819055506040518060e0016040528060b38152602001620096a760b3913960008281526002602052604090209062000300908262005845565b506005805463ffffffff6401000000009182900481166000908152600660205260409020849055825491909104169060046200033c8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f1bb61a688fea4953cb586baa1eadb220020829a1e284be38d2ea8fb996dd7286905063b300000060036000838152602001908152602001600020819055506040518060e0016040528060b381526020016200919d60b39139600082815260016020526040902090620003cf908262005845565b506005805463ffffffff6401000000009182900481166000908152600660205260409020849055825491909104169060046200040b8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f47cc6a8e17679da04a479e5d29625d737670c27b21f8ccfb334e6af61bf6885a905063b300000060036000838152602001908152602001600020819055506040518060e0016040528060b3815260200162009c3a60b391396000828152600160205260409020906200049e908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620004da8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f80547b534287b04dc7e9afb751db65a7515fde92b8c2394ae341e3ae0955d519905063b300000060036000838152602001908152602001600020819055506040518060e0016040528060b381526020016200a62f60b391396000828152600160205260409020906200056d908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620005a98362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fc0c9e42e9d271c94b57d055fc963197e4c62d5933e371a7449ef5d59f26be00a905063b300000060036000838152602001908152602001600020819055506040518060e0016040528060b381526020016200bcbe60b391396000828152600160205260409020906200063c908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620006788362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507ff41cb73ce9ba5c1f594bcdfd56e2d14e42d2ecc23f0a4863835bdd4baacd8b72905061b70060036000838152602001908152602001600020819055506040518060e0016040528060b781526020016200c38260b7913960008281526002602052604090209062000709908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620007458362005927565b825463ffffffff91821661010093840a90810292021916179091557fb1ea1507d58429e4dfa3f444cd2e584ba8909c931969bbfb5f1e21e2ac8b758d60008190526003602090815261c4007f845df21fa754d483903c0d1ff2ac69000d679a78ad6c7e791cc958ae2144d5e55560408051938401905260c4808452919450919250906200c57b90830139600082815260026020526040902090620007ea908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620008268362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f62223f0b03d25507f52a69efbbdbcfdc7579756a7a08a95a2f0e72ada31e32b8905061ba0060036000838152602001908152602001600020819055506040518060e0016040528060ba815260200162008f7c60ba9139600082815260026020526040902090620008b7908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620008f38362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f047228ad95cec16eb926f7cd21ac9cc9a3288d911a6c2917a24555eac7a2c0e29050636800700260036000838152602001908152602001600020819055506040518060a00160405280607081526020016200ae686070913960008281526002602052604090209062000986908262005845565b506040518060a00160405280606881526020016200a7c460689139600082815260016020526040902090620009bc908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620009f88362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fce1f93a7afe9aad7ebb13c0add89c79d42b5e9b1272fdd1573aac99fe5d860d0905061830660036000838152602001908152602001600020819055506040518060c0016040528060838152602001620088fd6083913960008281526002602052604090209062000a89908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462000ac58362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fbfac272e71cad64427175cd77d774a7884f98c7901ebc4909ada29d464c8981e905063a200990860036000838152602001908152602001600020819055506040518060c00160405280609981526020016200aa5b6099913960008281526002602052604090209062000b58908262005845565b506040518060e0016040528060a281526020016200c1dc60a2913960008281526001602052604090209062000b8e908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462000bca8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fa71068a671b554f75b7cc31ce4f8d63c377f276333d11989e77bc4a9205b5e429050638100810860036000838152602001908152602001600020819055506040518060c00160405280608181526020016200a8966081913960008281526002602052604090209062000c5d908262005845565b506040518060c00160405280608181526020016200c0716081913960008281526001602052604090209062000c93908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462000ccf8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f9a132de8409f80845eaec43154ff43d7bd61df75e52d96b4ded0b64626e4c88a905061850860036000838152602001908152602001600020819055506040518060c0016040528060858152602001620094526085913960008281526002602052604090209062000d60908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462000d9c8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507ffca4c5f86ef326916536dfdae74031d6960e41e10d38c624294334c3833974e2905061680660036000838152602001908152602001600020819055506040518060a00160405280606881526020016200a5376068913960008281526002602052604090209062000e2d908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462000e698362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f4483a654781ca58fa6ba3590c74c005bce612263e17c70445d6cd167e55e900b9050636b006b0c60036000838152602001908152602001600020819055506040518060a00160405280606b81526020016200c0f2606b913960008281526002602052604090209062000efc908262005845565b506040518060a00160405280606b815260200162008980606b913960008281526001602052604090209062000f32908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462000f6e8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f1885fe71e225eade934ab7040d533bd49efc5d66e8f2d4b5aa42477ae9892ec99050638400840b60036000838152602001908152602001600020819055506040518060c00160405280608481526020016200ade46084913960008281526002602052604090209062001001908262005845565b506040518060c00160405280608481526020016200ade46084913960008281526001602052604090209062001037908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620010738362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f7411db1fe7a50d41767858710dc8b8432ac0c4fd26503ba78d2ed17789ce4f729050637e007d0a60036000838152602001908152602001600020819055506040518060a00160405280607d8152602001620090b0607d913960008281526002602052604090209062001106908262005845565b506040518060a00160405280607e81526020016200b1cf607e91396000828152600160205260409020906200113c908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620011788362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fdd7231e98344a83b64e1ac7a07b39d2ecc2b21128681123a9030e17a124225279050637400750a60036000838152602001908152602001600020819055506040518060a001604052806075815260200162009944607591396000828152600260205260409020906200120b908262005845565b506040518060a00160405280607481526020016200a2c36074913960008281526001602052604090209062001241908262005845565b506005805463ffffffff6401000000009182900481166000908152600660205260409020849055825491909104169060046200127d8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f24dd0364c2b2d0e6540c7deb5a0acf9177d47737a2bf41ca29b553eb69558ef99050638800840860036000838152602001908152602001600020819055506040518060c00160405280608481526020016200b8da6084913960008281526002602052604090209062001310908262005845565b506040518060c001604052806088815260200162008df46088913960008281526001602052604090209062001346908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620013828362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fea5efa009543229e434689349c866e4d254811928ae8a1320abb82a36d3be53f905061830660036000838152602001908152602001600020819055506040518060c0016040528060838152602001620098c16083913960008281526002602052604090209062001413908262005845565b506005805463ffffffff6401000000009182900481166000908152600660205260409020849055825491909104169060046200144f8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f2df03e79022dc10f7539f01da354ffe10da3ef91f1e18bc7fd096db00c381de89050616a0160036000838152602001908152602001600020819055506040518060a00160405280606a81526020016200a82c606a9139600082815260026020526040902090620014e0908262005845565b506005805463ffffffff6401000000009182900481166000908152600660205260409020849055825491909104169060046200151c8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507ff0ac7cf8c022008e16b983f22d22dae3a15b9b5abcc635bc5c20beb4d7c918009050618f0860036000838152602001908152602001600020819055506040518060c00160405280608f81526020016200c8c6608f9139600082815260026020526040902090620015ad908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620015e98362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f8580e735d58252637afd6fef159c826c5e7e6a5dcf1fe2d8398b3bf92c376d42905061750660036000838152602001908152602001600020819055506040518060a00160405280607581526020016200b0d4607591396000828152600260205260409020906200167a908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620016b68362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f041bf83549434251cc54c0632896c8d3176b48d06150048c1bce6b6102c4e90c9050636500650360036000838152602001908152602001600020819055506040518060a00160405280606581526020016200a9876065913960008281526002602052604090209062001749908262005845565b506040518060a001604052806065815260200162008b44606591396000828152600160205260409020906200177f908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620017bb8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f591f84c8a41edd0013624b89d5e6b96cd3b0c6f1e214d4ea13a35639412f07e6905061970860036000838152602001908152602001600020819055506040518060c00160405280609781526020016200b95e609791396000828152600260205260409020906200184c908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620018888362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f54917cb8cff2411930ac1b1d36a674f855c6b16c8662806266734b5f718a9890905061730a60036000838152602001908152602001600020819055506040518060a00160405280607381526020016200bd716073913960008281526002602052604090209062001919908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620019558362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f274ae610f9d7dec1e425c54ad990e7d265ba95c4f84683be4333542088ecb8e7905061710860036000838152602001908152602001600020819055506040518060a00160405280607181526020016200a75360719139600082815260026020526040902090620019e6908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462001a228362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f6a400b1508bfd84ab2f4cb067d6d74dc46f74cdae7efd8b2a2d990c9f037e4269050637e007f0a60036000838152602001908152602001600020819055506040518060a00160405280607f81526020016200bf5d607f913960008281526002602052604090209062001ab5908262005845565b506040518060a00160405280607e8152602001620092e3607e913960008281526001602052604090209062001aeb908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462001b278362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f3e6bc8fc06a569840c9490f8122e6b7f08a7598486649b64477b5486023625169050637900790b60036000838152602001908152602001600020819055506040518060a0016040528060798152602001620087986079913960008281526002602052604090209062001bba908262005845565b506040518060a0016040528060798152602001620087986079913960008281526001602052604090209062001bf0908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462001c2c8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f2c382a7f1f32a6a2d0e9b0d378cb95e3dad70fe6909ff13888fe2a250bd10bb09050636a006b0560036000838152602001908152602001600020819055506040518060a00160405280606b81526020016200ac72606b913960008281526002602052604090209062001cbf908262005845565b506040518060a00160405280606a81526020016200afe7606a913960008281526001602052604090209062001cf5908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462001d318362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f8968ce85cb55abb5d9f6f678baeeb565638b6bad5d9be0ea2e703a34f45935669050616a0160036000838152602001908152602001600020819055506040518060a00160405280606a81526020016200a3bb606a913960008281526002602052604090209062001dc2908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462001dfe8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fc3075202748482832362d1b854d8274a38bf56c5ad38d418e590f46113ff10b19050639300930a60036000838152602001908152602001600020819055506040518060c001604052806093815260200162008cca6093913960008281526002602052604090209062001e91908262005845565b506040518060c00160405280609381526020016200c9556093913960008281526001602052604090209062001ec7908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462001f038362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f971f7c3d5d14436a3b5ef2d658445ea527464a6409bd5f9a44f3d72e30d1eba89050637600750860036000838152602001908152602001600020819055506040518060a00160405280607581526020016200a4256075913960008281526002602052604090209062001f96908262005845565b506040518060a0016040528060768152602001620094d76076913960008281526001602052604090209062001fcc908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620020088362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f1f7b5107846b1e32944ccf8aedeaa871fc859506f51e7d12d6e9ad594a4d7619905061970860036000838152602001908152602001600020819055506040518060c001604052806097815260200162008c336097913960008281526002602052604090209062002099908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620020d58362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fd35b2735e5fcc86991c8501996742b3b8c35772d92b69859de58ddd3559be46c9050638000800860036000838152602001908152602001600020819055506040518060a00160405280608081526020016200a1986080913960008281526002602052604090209062002168908262005845565b506040518060a00160405280608081526020016200aed8608091396000828152600160205260409020906200219e908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620021da8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f2004722753f61acb2cefde9b14d2c01c6bcb589d749b4ea616b4e47d83fdb05690506384007a0460036000838152602001908152602001600020819055506040518060a00160405280607a81526020016200b33b607a91396000828152600260205260409020906200226d908262005845565b506040518060c001604052806084815260200162009abf60849139600082815260016020526040902090620022a3908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620022df8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f05a5afe13f23e20e6cebabae910a492c91f4b862c2e1a5822914be79ab519bd89050617f0660036000838152602001908152602001600020819055506040518060a00160405280607f81526020016200b5e5607f913960008281526002602052604090209062002370908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620023ac8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fac5194b2986dd9939aedf83029a6e0a1d7d482eb00a5dafa05fc0aaa9b6165829050638200850b60036000838152602001908152602001600020819055506040518060c00160405280608581526020016200aaf4608591396000828152600260205260409020906200243f908262005845565b506040518060c001604052806082815260200162009f016082913960008281526001602052604090209062002475908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620024b18362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507ff94798c1aedb2dce1990e0dae94c15178ddd4229aff8031c9a5b7a77743a34d49050617f0660036000838152602001908152602001600020819055506040518060a00160405280607f81526020016200975a607f913960008281526002602052604090209062002542908262005845565b506005805463ffffffff6401000000009182900481166000908152600660205260409020849055825491909104169060046200257e8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f15854f7a2b735373aa76722c01e2f289d8b18cb1a70575796be435e4ce55e57a9050638600860a60036000838152602001908152602001600020819055506040518060c00160405280608681526020016200c7236086913960008281526002602052604090209062002611908262005845565b506040518060c001604052806086815260200162008e7c6086913960008281526001602052604090209062002647908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620026838362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fd91f640608a7c1b2b750276d97d603512a02f4b84ca13c875a585b12a24320c29050637200720a60036000838152602001908152602001600020819055506040518060a00160405280607281526020016200bde46072913960008281526002602052604090209062002716908262005845565b506040518060a0016040528060728152602001620093e0607291396000828152600160205260409020906200274c908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620027888362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f6bb15b5e619a28950bae0eb6a03f13daea1b430ef5ded0c5606b335f5b077cda905063a400950860036000838152602001908152602001600020819055506040518060c00160405280609581526020016200bfdc609591396000828152600260205260409020906200281b908262005845565b506040518060e0016040528060a481526020016200c4d760a4913960008281526001602052604090209062002851908262005845565b506005805463ffffffff6401000000009182900481166000908152600660205260409020849055825491909104169060046200288d8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f7a8b4abb14bfe7b505902c23a9c4e59e5a70c7daf6e28a5f83049c13142cde5e905061890860036000838152602001908152602001600020819055506040518060c001604052806089815260200162009dfc608991396000828152600260205260409020906200291e908262005845565b506005805463ffffffff6401000000009182900481166000908152600660205260409020849055825491909104169060046200295a8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f72efa89c7645580b2d0d03f51f1a2b64a425844a5cd69f1b3bb6609a4a06e47f9050638f008f0860036000838152602001908152602001600020819055506040518060c00160405280608f81526020016200c9e8608f9139600082815260026020526040902090620029ed908262005845565b506040518060c00160405280608f81526020016200af58608f913960008281526001602052604090209062002a23908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462002a5f8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507ffc1c0134d4441a1d7c81368f23d7dfcdeab3776687073c12af9d268e00d6c0a8905061730660036000838152602001908152602001600020819055506040518060a00160405280607381526020016200bb0c6073913960008281526002602052604090209062002af0908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462002b2c8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f6ced067c29d04b367c1f3cb5e7721ad5a662f5e338ee3e10c7d64d9d109ed6069050639700900860036000838152602001908152602001600020819055506040518060c00160405280609081526020016200a59f6090913960008281526002602052604090209062002bbf908262005845565b506040518060c00160405280609781526020016200b49b6097913960008281526001602052604090209062002bf5908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462002c318362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f66a6c35fd6db8b93449f29befe26e2e4bcb09799d56216ada0ef901c53cf439f9050639d009e0860036000838152602001908152602001600020819055506040518060c00160405280609e81526020016200c439609e913960008281526002602052604090209062002cc4908262005845565b506040518060c00160405280609d81526020016200a00a609d913960008281526001602052604090209062002cfa908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462002d368362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f85c5daead3bc85feb0d62d1f185f82fdc2627bdbc7f1f2ffed1c721c6fcc4b4d905061970860036000838152602001908152602001600020819055506040518060c001604052806097815260200162008d5d6097913960008281526002602052604090209062002dc7908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462002e038362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f3d1f5637dfc56d4147818053fdcc0c0a35886121b7e4fc1a7cff584e4bb6414f9050616a0160036000838152602001908152602001600020819055506040518060a00160405280606a8152602001620097d9606a913960008281526002602052604090209062002e94908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462002ed08362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f64b53b34ebe074820dbda2f80085c52f209d5eba6c783abdae0a19950f0787ec9050617a0860036000838152602001908152602001600020819055506040518060a00160405280607a815260200162008f02607a913960008281526002602052604090209062002f61908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462002f9d8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f833ca1b7f8f2ce28f7003fb78b72e259d5a484b13477ad8212edb844217225ac9050617a0660036000838152602001908152602001600020819055506040518060a00160405280607a815260200162008a55607a91396000828152600260205260409020906200302e908262005845565b506005805463ffffffff6401000000009182900481166000908152600660205260409020849055825491909104169060046200306a8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f44c2482a71c9d39dac1cf9a7daf6de80db79735c0042846cb9d47f85ccc3ba9b90506376006f0360036000838152602001908152602001600020819055506040518060a00160405280606f81526020016200a9ec606f9139600082815260026020526040902090620030fd908262005845565b506040518060a00160405280607681526020016200c30c6076913960008281526001602052604090209062003133908262005845565b506005805463ffffffff6401000000009182900481166000908152600660205260409020849055825491909104169060046200316f8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f4acd7797c5821ccc56add3739a55bcfd4e4cfd72b30274ec6c156b6c1d9185eb9050618a0660036000838152602001908152602001600020819055506040518060c00160405280608a815260200162008ba9608a913960008281526002602052604090209062003200908262005845565b506005805463ffffffff6401000000009182900481166000908152600660205260409020849055825491909104169060046200323c8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fc0ac7bb45040825a6d9a997dc99a6ec94027d27133145018c0561b880ecdb389905061790860036000838152602001908152602001600020819055506040518060a00160405280607981526020016200881160799139600082815260026020526040902090620032cd908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620033098362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fa756817780c8e400f79cdd974270d70e0cd172aa662d7cf7c9fe0b63a4a71d959050617e0860036000838152602001908152602001600020819055506040518060a00160405280607e815260200162009843607e91396000828152600260205260409020906200339a908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620033d68362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f71c5ce05a579f7a6bbc9fb7517851ae9394c8cb6e4fcad99245ce296b6a3c5419050617f0660036000838152602001908152602001600020819055506040518060a00160405280607f81526020016200c15d607f913960008281526002602052604090209062003467908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620034a38362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f283597377fbec1d21fb9d58af5fa0c43990b1f7c2fc6168412ceb4837d9bf86c905061860860036000838152602001908152602001600020819055506040518060c00160405280608681526020016200b1496086913960008281526002602052604090209062003534908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620035708362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fbb1f372f67259011c2e9e7346c8a03a11f260853a1fe248ddd295402197887479050637000700760036000838152602001908152602001600020819055506040518060a00160405280607081526020016200a0a76070913960008281526002602052604090209062003603908262005845565b506040518060a00160405280607081526020016200a9176070913960008281526001602052604090209062003639908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620036758362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fd5de5c20969a9e22f93842ca4d65bac0c0387225cee45a944a14f03f9221fd4a9050638100840a60036000838152602001908152602001600020819055506040518060c00160405280608481526020016200bb7f6084913960008281526002602052604090209062003708908262005845565b506040518060c00160405280608181526020016200a117608191396000828152600160205260409020906200373e908262005845565b506005805463ffffffff6401000000009182900481166000908152600660205260409020849055825491909104169060046200377a8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fb040fea53c68833d052aa3e7c8552b04390371501b9976c938d3bd8ec66e4734905063a000750860036000838152602001908152602001600020819055506040518060a001604052806075815260200162008acf607591396000828152600260205260409020906200380d908262005845565b506040518060c0016040528060a081526020016200b66460a0913960008281526001602052604090209062003843908262005845565b506005805463ffffffff6401000000009182900481166000908152600660205260409020849055825491909104169060046200387f8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f74ca947c09f7b62348c4f3c81b91973356ec81529d6220ff891012154ce517c7905063a900a90b60036000838152602001908152602001600020819055506040518060e0016040528060a981526020016200b79f60a9913960008281526002602052604090209062003912908262005845565b506040518060e0016040528060a981526020016200b79f60a9913960008281526001602052604090209062003948908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620039848362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f30146eda149865d57c6ae9dac707d809120563fadb039d7bca3231041bea6b2e9050638300830860036000838152602001908152602001600020819055506040518060c00160405280608381526020016200b0516083913960008281526002602052604090209062003a17908262005845565b506040518060c00160405280608381526020016200b0516083913960008281526001602052604090209062003a4d908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462003a898362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f8394d1b7af0d52a25908dc9123cc00aa0670debcac95a76c3e9a20dd6c7e7c239050617a0660036000838152602001908152602001600020819055506040518060a00160405280607a815260200162009036607a913960008281526002602052604090209062003b1a908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462003b568362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507feb787e7727b2d8d912a02d9ad4c30c964b40f4cebe754bb4d3bfb09959565c91905061bb0860036000838152602001908152602001600020819055506040518060e0016040528060bb81526020016200bc0360bb913960008281526002602052604090209062003be7908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462003c238362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f6a36bcf4268827203e8a3f374b49c1ff69b62623e234e96858ff0f2d32fbf2689050636a00700560036000838152602001908152602001600020819055506040518060a00160405280607081526020016200912d6070913960008281526002602052604090209062003cb6908262005845565b506040518060a00160405280606a81526020016200c6b9606a913960008281526001602052604090209062003cec908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462003d288362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f2f237bd68c6e318a6d0aa26172032a8a73a5e0e968ad3d74ef1178e64d209b48905061750660036000838152602001908152602001600020819055506040518060a00160405280607581526020016200b4266075913960008281526002602052604090209062003db9908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462003df58362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fad07511765ae4becdc5300c486c7806cd661840b0670d0f6670e8c4014de37b09050637300750860036000838152602001908152602001600020819055506040518060a0016040528060758152602001620099b96075913960008281526002602052604090209062003e88908262005845565b506040518060a00160405280607381526020016200888a6073913960008281526001602052604090209062003ebe908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462003efa8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f49e0947b696384a658eeca7f5746ffbdd90a5f5526f8d15e6396056b7a0dc8af9050637c007c0a60036000838152602001908152602001600020819055506040518060a00160405280607c81526020016200b24d607c913960008281526002602052604090209062003f8d908262005845565b506040518060a00160405280607c815260200162009e85607c913960008281526001602052604090209062003fc3908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462003fff8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fc1695b389d89c71dc7afd5111f17f6540b3a28261e4d2bf5631c1484f322fc689050637d007f0a60036000838152602001908152602001600020819055506040518060a00160405280607f815260200162009361607f913960008281526002602052604090209062004092908262005845565b506040518060a00160405280607d81526020016200acdd607d9139600082815260016020526040902090620040c8908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620041048362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f09c36cad1064f6107d2e3bef439f87a16c8ef2e95905a827b2ce7f111dd801d790506384007a0460036000838152602001908152602001600020819055506040518060a00160405280607a81526020016200c63f607a913960008281526002602052604090209062004197908262005845565b506040518060c001604052806084815260200162009bb660849139600082815260016020526040902090620041cd908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620042098362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507feb92e34266f6fa01c275db8379f6a521f15ab6f96297fe3266df2fe6b0e1422e9050638200840860036000838152602001908152602001600020819055506040518060c00160405280608481526020016200a337608491396000828152600260205260409020906200429c908262005845565b506040518060c00160405280608281526020016200be5660829139600082815260016020526040902090620042d2908262005845565b506005805463ffffffff6401000000009182900481166000908152600660205260409020849055825491909104169060046200430e8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f1892c4c9cf47baf2c613f184114519fe8208c2bebabb732405aeac1c3031dc2b9050639300000860036000838152602001908152602001600020819055506040518060c00160405280609381526020016200925060939139600082815260016020526040902090620043a1908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620043dd8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f250be814c80d8ca10bbef531b679392db8221a6fab289a6b5e637df663f48699905063ab00000860036000838152602001908152602001600020819055506040518060e0016040528060ab81526020016200a21860ab913960008281526001602052604090209062004470908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620044ac8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fcd87356aa78c4fcb95e51f57578570d377440e347e0869cf1b4749d5a26340b59050636a00000160036000838152602001908152602001600020819055506040518060a00160405280606a8152602001620089eb606a91396000828152600160205260409020906200453f908262005845565b506005805463ffffffff6401000000009182900481166000908152600660205260409020849055825491909104169060046200457b8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f4fa682c6066fcc513a0511418aa85a0037ac59a899e9491c512b63e253697a8c9050637100000460036000838152602001908152602001600020819055506040518060a00160405280607181526020016200b9f5607191396000828152600160205260409020906200460e908262005845565b506005805463ffffffff6401000000009182900481166000908152600660205260409020849055825491909104169060046200464a8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f36f07f03014f047728880d9f390629140a5e7c44477290695c4c1ddda356d3659050638700000860036000838152602001908152602001600020819055506040518060c001604052806087815260200162009ced60879139600082815260016020526040902090620046dd908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620047198362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f68107f52c261820bd73e4046eb3fb5d5a1e0926611562c07054a3b89334cef349050637200000560036000838152602001908152602001600020819055506040518060a00160405280607281526020016200b2c960729139600082815260016020526040902090620047ac908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620047e88362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fd395cf4acda004fbc9963f85c65bf3f190c2aceb0744a535d543bc261caf6ff0905063a700000860036000838152602001908152602001600020819055506040518060e0016040528060a781526020016200954d60a791396000828152600160205260409020906200487b908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620048b78362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fbad0fc475e9d35de67c426fc37eebb7fa38141bc2135fabd5504a911e1b055409050639d00000860036000838152602001908152602001600020819055506040518060c00160405280609d81526020016200a49a609d91396000828152600160205260409020906200494a908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620049868362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fd10bc0475e2a0eea9f6aca91e6e82c6416f894f27fc26bb0735f29b84c54a3e69050637600000860036000838152602001908152602001600020819055506040518060a00160405280607681526020016200abfc6076913960008281526001602052604090209062004a19908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462004a558362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fa0a2010e841ab7b343263c98f47a16b88656913e1353d96914f5fe492511893f9050638a00000860036000838152602001908152602001600020819055506040518060c00160405280608a81526020016200ad5a608a913960008281526001602052604090209062004ae8908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462004b248362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f0e6769a10f786458ca82b57684746fe8899e35f7772543acb6a8869c4ac780cd9050637300000860036000838152602001908152602001600020819055506040518060a001604052806073815260200162009b436073913960008281526001602052604090209062004bb7908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462004bf38362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f1004d2d00ccf8794739c7b7cbbe6048841f4c8af046b37d59e9a801a167544e29050637100000460036000838152602001908152602001600020819055506040518060a00160405280607181526020016200b3b56071913960008281526001602052604090209062004c86908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462004cc28362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f629e82a55845ea763431647fcaecfb232e275a36d8427f2568377864193801cb9050639200000860036000838152602001908152602001600020819055506040518060c00160405280609281526020016200b8486092913960008281526001602052604090209062004d55908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462004d918362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fcd3633a5e96d615b834e90e67029f7f9f507b832e1cb263a29685b8e25f678cf9050638500000860036000838152602001908152602001600020819055506040518060c00160405280608581526020016200bed86085913960008281526001602052604090209062004e24908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462004e608362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fe81a9c78c0ec4339dc6772f1b9bbf406b53063f8408a91fe29f63ba1c2bc7b5a9050636a00000160036000838152602001908152602001600020819055506040518060a00160405280606a81526020016200ca77606a913960008281526001602052604090209062004ef3908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462004f2f8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fe11278d6c191c8199a5b8bb49be7f806b837a9811195c903d844a74c4c4a704e9050639b00000860036000838152602001908152602001600020819055506040518060c00160405280609b81526020016200b704609b913960008281526001602052604090209062004fc2908262005845565b506005805463ffffffff64010000000091829004811660009081526006602052604090208490558254919091041690600462004ffe8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f411ec1566affa22bd67b13a7c49ac060c018e1c806cd314cd2186118dd55e1299050638800000860036000838152602001908152602001600020819055506040518060c001604052806088815260200162009d746088913960008281526001602052604090209062005091908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620050cd8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f1868a04ecae06e10c5b6dcbbed4befac1ed03dda2cf86ddbd855466cc588809f9050638300000a60036000838152602001908152602001600020819055506040518060c00160405280608381526020016200ab796083913960008281526001602052604090209062005160908262005845565b506005805463ffffffff6401000000009182900481166000908152600660205260409020849055825491909104169060046200519c8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f3511b04ac6a3d46305172269904dc469a40f380a4e7afa8742ce6e6a44825c4a905063a600000860036000838152602001908152602001600020819055506040518060e0016040528060a681526020016200ba6660a691396000828152600160205260409020906200522f908262005845565b506005805463ffffffff6401000000009182900481166000908152600660205260409020849055825491909104169060046200526b8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f2857e47dcac3b744dd7d41617ce362f1dd3ae8eb836685cc18338714205b036c9050639100000860036000838152602001908152602001600020819055506040518060c001604052806091815260200162009a2e60919139600082815260016020526040902090620052fe908262005845565b506005805463ffffffff6401000000009182900481166000908152600660205260409020849055825491909104169060046200533a8362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f2e9a5434da70e5ea2ed439b3a33aac60bd252c92698c1ba37e9ed77f975c6cab9050637100000460036000838152602001908152602001600020819055506040518060a00160405280607181526020016200a6e260719139600082815260016020526040902090620053cd908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620054098362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f8c0e60b85ff0f8be1a87b28ae066a63dcc3c02589a213b0856321a73882515f99050638700000860036000838152602001908152602001600020819055506040518060c001604052806087815260200162009f83608791396000828152600160205260409020906200549c908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620054d88362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507fe651be5dd43261e6e9c1098ec114ab5c44e7cb07377dc674336f1b3d34428fe49050638e00000860036000838152602001908152602001600020819055506040518060c00160405280608e81526020016200c27e608e91396000828152600160205260409020906200556b908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620055a78362005927565b91906101000a81548163ffffffff021916908363ffffffff160217905550507f1cd064e6db4e7c5180ccf5f2afe1370c6539b525fe3bea9c358f24a7cbdb50ad9050636a00000160036000838152602001908152602001600020819055506040518060a00160405280606a81526020016200c7a9606a91396000828152600160205260409020906200563a908262005845565b506005805463ffffffff640100000000918290048116600090815260066020526040902084905582549190910416906004620056768362005927565b825463ffffffff9182166101009390930a928302919092021990911617905550600080805260046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec905b600d8160ff1610156200574d5760ff811682600082600c811115620056ec57620056ec6200594d565b600c8111156200570057620057006200594d565b600c8111156200571457620057146200594d565b81526020810191909152604001600020805461ffff191661ffff9290921691909117905580620057448162005963565b915050620056c3565b506005805463ffffffff16906000620057668362005927565b825463ffffffff9182166101009390930a92830291909202199091161790555050600080546001600160a01b031916331790555062005985565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620057cb57607f821691505b602082108103620057ec57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200584057600081815260208120601f850160051c810160208610156200581b5750805b601f850160051c820191505b818110156200583c5782815560010162005827565b5050505b505050565b81516001600160401b03811115620058615762005861620057a0565b6200587981620058728454620057b6565b84620057f2565b602080601f831160018114620058b15760008415620058985750858301515b600019600386901b1c1916600185901b1785556200583c565b600085815260208120601f198616915b82811015620058e257888601518255948401946001909101908401620058c1565b5085821015620059015787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff80831681810362005943576200594362005911565b6001019392505050565b634e487b7160e01b600052602160045260246000fd5b600060ff821660ff81036200597c576200597c62005911565b60010192915050565b612e0380620059956000396000f3fe6080604052600436106101145760003560e01c80637847d745116100a0578063c03701a311610064578063c03701a31461035b578063c694f2571461037b578063c8d7eae7146103a8578063db714efe146103c8578063e81a4f92146103f657600080fd5b80637847d7451461026557806397bec1851461028557806399d726c7146102d45780639b739b50146102f1578063b64a097e1461032c57600080fd5b806334b28e7b116100e757806334b28e7b146101ce57806335a063b4146101ee5780633fb27b85146101f657806361b8ce8c1461020b5780636900a3ae1461024557600080fd5b806303a37316146101195780630b463e461461013b5780631764a79c1461017157806334b0f8a9146101ae575b600080fd5b34801561012557600080fd5b506101396101343660046121d1565b610416565b005b34801561014757600080fd5b5061015b610156366004612212565b610582565b604051610168919061227b565b60405180910390f35b34801561017d57600080fd5b506101a161018c366004612212565b60076020526000908152604090205460ff1681565b60405161016891906122cd565b3480156101ba57600080fd5b5061015b6101c9366004612306565b61061c565b3480156101da57600080fd5b5061015b6101e9366004612212565b61079b565b6101396107b4565b34801561020257600080fd5b50610139610805565b34801561021757600080fd5b5060055461023090640100000000900463ffffffff1681565b60405163ffffffff9091168152602001610168565b34801561025157600080fd5b5061015b610260366004612212565b61085a565b34801561027157600080fd5b5061015b610280366004612499565b61093d565b34801561029157600080fd5b506102c16102a036600461258d565b600460209081526000928352604080842090915290825290205461ffff1681565b60405161ffff9091168152602001610168565b3480156102e057600080fd5b506005546102309063ffffffff1681565b3480156102fd57600080fd5b5061031e61030c366004612212565b60036020526000908152604090205481565b604051908152602001610168565b34801561033857600080fd5b5061034c610347366004612212565b610aba565b604051610168939291906125c8565b34801561036757600080fd5b5061015b6103763660046125f2565b610afd565b34801561038757600080fd5b5061031e61039636600461269e565b60066020526000908152604090205481565b3480156103b457600080fd5b506101396103c33660046126fa565b610c5f565b3480156103d457600080fd5b506103e86103e33660046127a6565b610fc8565b6040516101689291906127c8565b34801561040257600080fd5b5061015b610411366004612873565b6112b0565b60055463ffffffff166000908152600460205260408120905b61ffff8116831115610547578160008261ffff16600c81111561045457610454612295565b600c81111561046557610465612295565b600c81111561047657610476612295565b815260208101919091526040016000205461ffff16156104d55760405162461bcd60e51b815260206004820152601560248201527473746f72616765206d75737420626520656d70747960581b60448201526064015b60405180910390fd5b808260008361ffff16600c8111156104ef576104ef612295565b600c81111561050057610500612295565b600c81111561051157610511612295565b81526020810191909152604001600020805461ffff191661ffff929092169190911790558061053f816128bf565b91505061042f565b506005805463ffffffff1690600061055e836128e0565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050565b6002602052600090815260409020805461059b906128f9565b80601f01602080910402602001604051908101604052809291908181526020018280546105c7906128f9565b80156106145780601f106105e957610100808354040283529160200191610614565b820191906000526020600020905b8154815290600101906020018083116105f757829003601f168201915b505050505081565b60408051600d8082526101c082019092526060916000918291602082016101a08036833701905050905060005b61ffff8116891115610780576000600660008c8c8561ffff1681811061067157610671612933565b9050602002016020810190610686919061269e565b63ffffffff16815260208082019290925260409081016000908120548082526003909352908120549192508190036106bf575050610780565b6000806106cb836114cd565b5063ffffffff8b1660009081526004602052604081209294509092508591889185600c8111156106fd576106fd612295565b600c81111561070e5761070e612295565b8152602081019190915260400160002054815161ffff90911690811061073657610736612933565b6020908102919091010152600082600c81111561075557610755612295565b036107695761ffff81161561076957600196505b505050508080610778906128bf565b915050610649565b5061078e8188888886611500565b9998505050505050505050565b6001602052600090815260409020805461059b906128f9565b6000546001600160a01b031633146107f75760405162461bcd60e51b81526004016104cc906020808252600490820152636e6f706560e01b604082015260600190565b6000546001600160a01b0316ff5b6000546001600160a01b031633146108485760405162461bcd60e51b81526004016104cc906020808252600490820152636e6f706560e01b604082015260600190565b600080546001600160a01b0319169055565b60606000826000036108855750506040805180820190915260018152600360fc1b6020820152919050565b604080516020808252818301909252601f91600091906020820181803683370190505090505b841561091f576108bc600a8661295f565b6108c7906030612973565b60f81b8183815181106108dc576108dc612933565b60200101906001600160f81b031916908160001a9053506108fe600a86612986565b945061090b60018361299a565b915082610917816129ad565b9350506108ab565b60208181018051918590036008029190911b90529182525092915050565b60408051600d8082526101c082019092526060916000918291602082016101a08036833701905050905060005b88518161ffff161015610aa0576000898261ffff168151811061098f5761098f612933565b60200260200101516040516020016109a791906129cc565b60408051601f1981840301815291815281516020928301206000818152600390935290822054909250908190036109df575050610aa0565b6000806109eb836114cd565b5063ffffffff8b1660009081526004602052604081209294509092508591889185600c811115610a1d57610a1d612295565b600c811115610a2e57610a2e612295565b8152602081019190915260400160002054815161ffff909116908110610a5657610a56612933565b6020908102919091010152600082600c811115610a7557610a75612295565b03610a895761ffff811615610a8957600196505b505050508080610a98906128bf565b91505061096a565b50610aae8188888886611500565b98975050505050505050565b60008181526003602052604081205481908190808203610ae557600080600093509350935050610af6565b610aee816114cd565b935093509350505b9193909250565b60408051600d8082526101c082019092526060916000918291602082016101a08036833701905050905060005b88518161ffff161015610aa0576000600360008b8461ffff1681518110610b5357610b53612933565b6020026020010151815260200190815260200160002054905080600003610b7a5750610aa0565b600080610b86836114cd565b50915091508b8461ffff1681518110610ba157610ba1612933565b602002602001015185600460008b63ffffffff1663ffffffff168152602001908152602001600020600085600c811115610bdd57610bdd612295565b600c811115610bee57610bee612295565b8152602081019190915260400160002054815161ffff909116908110610c1657610c16612933565b6020908102919091010152600082600c811115610c3557610c35612295565b03610c495761ffff811615610c4957600195505b5050508080610c57906128bf565b915050610b2a565b600081604051602001610c7291906129cc565b60408051601f198184030181529181528151602092830120600081815260039093529120549091508015610cd55760405162461bcd60e51b815260206004820152600a60248201526939b637ba103a30b5b2b760b11b60448201526064016104cc565b600d8460ff1610610d195760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b2102fb630bcb2b960911b60448201526064016104cc565b6000610d258689612973565b11610d5c5760405162461bcd60e51b81526020600482015260076024820152666e6f206461746160c81b60448201526064016104cc565b61ffff871115610d9a5760405162461bcd60e51b81526020600482015260096024820152684c20746f6f2062696760b81b60448201526064016104cc565b61ffff851115610dd85760405162461bcd60e51b81526020600482015260096024820152685320746f6f2062696760b81b60448201526064016104cc565b60ff8416158015610de857508615155b8015610df357508415155b15610e405760405162461bcd60e51b815260206004820181905260248201527f6c61796572302063616e6e6f74206861766520626f74682076657273696f6e7360448201526064016104cc565b8615610ea757610e50888861183c565b610e8c5760405162461bcd60e51b815260206004820152600d60248201526c696e76616c6964204c20706e6760981b60448201526064016104cc565b6000828152600260205260409020610ea5888a83612a37565b505b8415610f0e57610eb7868661183c565b610ef35760405162461bcd60e51b815260206004820152600d60248201526c696e76616c6964205320706e6760981b60448201526064016104cc565b6000828152600160205260409020610f0c868883612a37565b505b60ff8416600888901b62ffff001617601886901b64ffff00000016176000838152600360209081526040808320939093556005805463ffffffff6401000000009182900481168552600690935292849020869055805460018482048416018316840267ffffffff0000000019909116179081905592517e2608a26743ece36b229b6d50704b35d12f50d23f05f584c8f8ae7d3227daf193610fb6933393910416908790612af7565b60405180910390a15050505050505050565b6060600080836001600160401b03811115610fe557610fe561238a565b60405190808252806020026020018201604052801561103b57816020015b6110286040805160608101909152806000815260200160608152602001606081525090565b8152602001906001900390816110035790505b5090505b83156112925760006006816001611056888a612973565b611060919061299a565b63ffffffff168152602080820192909252604090810160009081205480825260039093522054909150801561127e57600061109a826114cd565b505060008481526001602052604090208054919250906110b9906128f9565b80601f01602080910402602001604051908101604052809291908181526020018280546110e5906128f9565b80156111325780601f1061110757610100808354040283529160200191611132565b820191906000526020600020905b81548152906001019060200180831161111557829003601f168201915b505050505084600189611145919061299a565b8151811061115557611155612933565b602002602001015160400181905250600260008481526020019081526020016000208054611182906128f9565b80601f01602080910402602001604051908101604052809291908181526020018280546111ae906128f9565b80156111fb5780601f106111d0576101008083540402835291602001916111fb565b820191906000526020600020905b8154815290600101906020018083116111de57829003601f168201915b50505050508460018961120e919061299a565b8151811061121e5761121e612933565b6020908102919091018101510152808461123960018a61299a565b8151811061124957611249612933565b602002602001015160000190600c81111561126657611266612295565b9081600c81111561127957611279612295565b905250505b8561128881612b27565b965050505061103f565b600554909250640100000000900463ffffffff1690505b9250929050565b60405163658ab47160e11b81526004810186905260609073d8e916c3016be144eb2907778cf972c4b01645fc90600090829063cb1568e290602401600060405180830381865afa158015611308573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113309190810190612b3e565b60408051600d8082526101c082019092529192506000918291602082016101a08036833701905050905060005b60088161ffff1610156114b157838161ffff166008811061138057611380612933565b602002015151156114b1576000848261ffff16600881106113a3576113a3612933565b60200201516040516020016113b891906129cc565b60408051601f1981840301815291815281516020928301206000818152600390935290822054909250908190036113f05750506114b1565b6000806113fc836114cd565b5063ffffffff8d1660009081526004602052604081209294509092508591889185600c81111561142e5761142e612295565b600c81111561143f5761143f612295565b8152602081019190915260400160002054815161ffff90911690811061146757611467612933565b6020908102919091010152600082600c81111561148657611486612295565b0361149a5761ffff81161561149a57600196505b5050505080806114a9906128bf565b91505061135d565b506114bf818a8a8a86611500565b9a9950505050505050505050565b6000806000808460ff16600c8111156114e8576114e8612295565b9561ffff600887901c81169660181c16945092505050565b606060006115118461ffff1661085a565b90506115296040518060200160405280606081525090565b6115976040518060400160405280601e81526020017f3c73766720636c6173733d2270756e6b626c6f636b222077696474683d220000815250836040518060400160405280600a81526020016911103432b4b3b43a1e9160b11b81525084611f34909392919063ffffffff16565b506115d0826040518060400160405280600581526020016411103c1e9160d91b8152506115c78a61ffff1661085a565b84929190611f34565b506116216040518060400160405280600581526020016411103c9e9160d91b8152506115ff8861ffff1661085a565b6040518060e0016040528060b88152602001612cd660b8913984929190611f34565b5060005b600d8110156118065788818151811061164057611640612933565b60200260200101516000801b03156117f4576000806116778b848151811061166a5761166a612933565b6020026020010151610aba565b925092505086156117a7578161ffff166000036116955750506117f4565b6117a16040518060c0016040528060928152602001612c446092913961176e600260008f88815181106116ca576116ca612933565b6020026020010151815260200190815260200160002080546116eb906128f9565b80601f0160208091040260200160405190810160405280929190818152602001828054611717906128f9565b80156117645780601f1061173957610100808354040283529160200191611764565b820191906000526020600020905b81548152906001019060200180831161174757829003601f168201915b5050505050611f68565b60408051808201909152601381527211179f1e17b337b932b4b3b727b13532b1ba1f60691b602082015287929190611f34565b506117f1565b8061ffff166000036117ba5750506117f4565b6117ef6040518060c0016040528060928152602001612c446092913961176e600160008f88815181106116ca576116ca612933565b505b50505b806117fe81612c13565b915050611625565b506040805180820190915260068152651e17b9bb339f60d11b602082015261182f9082906120ba565b5051979650505050505050565b6000600882101561184f57506000611f2e565b60408051808201909152600881526744a8272386850d0560c11b602082015260005b60088110156118d95781818151811061188c5761188c612933565b01602001516001600160f81b0319168585838181106118ad576118ad612933565b9050013560f81c60f81b6001600160f81b031916146118d157600092505050611f2e565b600101611871565b60005b60188686848181106118f0576118f0612933565b919091013560f81c90911b9050601087876001860181811061191457611914612933565b919091013560f81c90911b9050600888886002870181811061193857611938612933565b919091013560f81c90911b905088886003870181811061195a5761195a612933565b9050013560f81c60f81b60f81c60ff161717179050600482019150604960f81b6001600160f81b03191686868481811061199657611996612933565b9050013560f81c60f81b6001600160f81b0319161480156119e25750600960fb1b8686600185018181106119cc576119cc612933565b9050013560f81c60f81b6001600160f81b031916145b8015611a195750601160fa1b868660028501818110611a0357611a03612933565b9050013560f81c60f81b6001600160f81b031916145b8015611a505750602960f91b868660038501818110611a3a57611a3a612933565b9050013560f81c60f81b6001600160f81b031916145b15611bae576018868684600401818110611a6c57611a6c612933565b919091013560f81c90911b90506010878760058601818110611a9057611a90612933565b919091013560f81c90911b90506008888860068701818110611ab457611ab4612933565b919091013560f81c90911b9050888860078701818110611ad657611ad6612933565b9050013560f81c60f81b60f81c60ff1617171760030b601814611aff5760009350505050611f2e565b6018868684600801818110611b1657611b16612933565b919091013560f81c90911b90506010878760098601818110611b3a57611b3a612933565b919091013560f81c90911b905060088888600a8701818110611b5e57611b5e612933565b919091013560f81c90911b90508888600b8701818110611b8057611b80612933565b9050013560f81c60f81b60f81c60ff1617171760030b601814611ba95760009350505050611f2e565b611f1b565b600560fc1b868684818110611bc557611bc5612933565b9050013560f81c60f81b6001600160f81b031916148015611c115750601360fa1b868660018501818110611bfb57611bfb612933565b9050013560f81c60f81b6001600160f81b031916145b8015611c485750601560fa1b868660028501818110611c3257611c32612933565b9050013560f81c60f81b6001600160f81b031916145b8015611c7f5750604560f81b868660038501818110611c6957611c69612933565b9050013560f81c60f81b6001600160f81b031916145b611f1b57601d60fa1b868684818110611c9a57611c9a612933565b9050013560f81c60f81b6001600160f81b031916148015611ce65750602960f91b868660018501818110611cd057611cd0612933565b9050013560f81c60f81b6001600160f81b031916145b8015611d1d5750602760f91b868660028501818110611d0757611d07612933565b9050013560f81c60f81b6001600160f81b031916145b8015611d545750605360f81b868660038501818110611d3e57611d3e612933565b9050013560f81c60f81b6001600160f81b031916145b611f1b57604960f81b868684818110611d6f57611d6f612933565b9050013560f81c60f81b6001600160f81b031916148015611dbb5750601160fa1b868660018501818110611da557611da5612933565b9050013560f81c60f81b6001600160f81b031916145b8015611df25750604160f81b868660028501818110611ddc57611ddc612933565b9050013560f81c60f81b6001600160f81b031916145b8015611e295750601560fa1b868660038501818110611e1357611e13612933565b9050013560f81c60f81b6001600160f81b031916145b611f1b57604960f81b868684818110611e4457611e44612933565b9050013560f81c60f81b6001600160f81b031916148015611e905750604560f81b868660018501818110611e7a57611e7a612933565b9050013560f81c60f81b6001600160f81b031916145b8015611ec75750602760f91b868660028501818110611eb157611eb1612933565b9050013560f81c60f81b6001600160f81b031916145b8015611efe5750601160fa1b868660038501818110611ee857611ee8612933565b9050013560f81c60f81b6001600160f81b031916145b15611f0f5760019350505050611f2e565b60009350505050611f2e565b8060030b600401600401820191506118dc565b92915050565b604080516020810190915260608152611f5f611f59611f5387876120ba565b856120ba565b836120ba565b95945050505050565b60608151600003611f8757505060408051602081019091526000815290565b6000604051806060016040528060408152602001612d8e6040913990506000600384516002611fb69190612973565b611fc09190612986565b611fcb906004612c2c565b6001600160401b03811115611fe257611fe261238a565b6040519080825280601f01601f19166020018201604052801561200c576020820181803683370190505b509050600182016020820185865187015b80821015612078576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f811685015184535060018301925061201d565b505060038651066001811461209457600281146120a7576120af565b603d6001830353603d60028303536120af565b603d60018303535b509195945050505050565b60408051602081019091526060815281511561218657601f1983518051808551016605c284b9def779848401518181061582820402905080831061215957856020848317018201168160400186016040511461214757602060405101816040018101604052808b528760208701165b87810151828201528801806121295750908302818801529450612159565b80604001860160405280830287870152505b505085519183019160200184165b8681015183820152840180612167575060008382016020015290915250505b5090919050565b60008083601f84011261219f57600080fd5b5081356001600160401b038111156121b657600080fd5b6020830191508360208260051b85010111156112a957600080fd5b600080602083850312156121e457600080fd5b82356001600160401b038111156121fa57600080fd5b6122068582860161218d565b90969095509350505050565b60006020828403121561222457600080fd5b5035919050565b60005b8381101561224657818101518382015260200161222e565b50506000910152565b6000815180845261226781602086016020860161222b565b601f01601f19169290920160200192915050565b60208152600061228e602083018461224f565b9392505050565b634e487b7160e01b600052602160045260246000fd5b600d81106122c957634e487b7160e01b600052602160045260246000fd5b9052565b60208101611f2e82846122ab565b803561ffff811681146122ed57600080fd5b919050565b803563ffffffff811681146122ed57600080fd5b60008060008060008060a0878903121561231f57600080fd5b86356001600160401b0381111561233557600080fd5b61234189828a0161218d565b90975095506123549050602088016122db565b9350612362604088016122db565b9250612370606088016122db565b915061237e608088016122f2565b90509295509295509295565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b03811182821017156123c3576123c361238a565b60405290565b604051601f8201601f191681016001600160401b03811182821017156123f1576123f161238a565b604052919050565b60006001600160401b038211156124125761241261238a565b5060051b60200190565b60006001600160401b038211156124355761243561238a565b50601f01601f191660200190565b600082601f83011261245457600080fd5b81356124676124628261241c565b6123c9565b81815284602083860101111561247c57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156124b157600080fd5b85356001600160401b03808211156124c857600080fd5b818801915088601f8301126124dc57600080fd5b813560206124ec612462836123f9565b82815260059290921b8401810191818101908c84111561250b57600080fd5b8286015b84811015612543578035868111156125275760008081fd5b6125358f86838b0101612443565b84525091830191830161250f565b50995061255390508a82016122db565b975050505050612565604087016122db565b9250612573606087016122db565b9150612581608087016122f2565b90509295509295909350565b600080604083850312156125a057600080fd5b6125a9836122f2565b91506020830135600d81106125bd57600080fd5b809150509250929050565b606081016125d682866122ab565b61ffff8085166020840152808416604084015250949350505050565b600080600080600060a0868803121561260a57600080fd5b85356001600160401b0381111561262057600080fd5b8601601f8101881361263157600080fd5b80356020612641612462836123f9565b82815260059290921b8301810191818101908b84111561266057600080fd5b938201935b8385101561267e57843582529382019390820190612665565b985061268d90508982016122db565b9650505050612565604087016122db565b6000602082840312156126b057600080fd5b61228e826122f2565b60008083601f8401126126cb57600080fd5b5081356001600160401b038111156126e257600080fd5b6020830191508360208285010111156112a957600080fd5b6000806000806000806080878903121561271357600080fd5b86356001600160401b038082111561272a57600080fd5b6127368a838b016126b9565b9098509650602089013591508082111561274f57600080fd5b61275b8a838b016126b9565b90965094506040890135915060ff8216821461277657600080fd5b9092506060880135908082111561278c57600080fd5b5061279989828a01612443565b9150509295509295509295565b600080604083850312156127b957600080fd5b50508035926020909101359150565b60006040808301818452808651808352606092508286019150828160051b8701016020808a0160005b8481101561285057605f198a8503018652815161280f8582516122ab565b8381015188858701526128248987018261224f565b918a0151868303878c015291905061283c818361224f565b9785019795505050908201906001016127f1565b50508196506128668189018a63ffffffff169052565b5050505050509392505050565b600080600080600060a0868803121561288b57600080fd5b8535945061289b602087016122db565b9350612565604087016122db565b634e487b7160e01b600052601160045260246000fd5b600061ffff8083168181036128d6576128d66128a9565b6001019392505050565b600063ffffffff8083168181036128d6576128d66128a9565b600181811c9082168061290d57607f821691505b60208210810361292d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60008261296e5761296e612949565b500690565b80820180821115611f2e57611f2e6128a9565b60008261299557612995612949565b500490565b81810381811115611f2e57611f2e6128a9565b600060ff821660ff81036129c3576129c36128a9565b60010192915050565b600082516129de81846020870161222b565b9190910192915050565b601f821115612a3257600081815260208120601f850160051c81016020861015612a0f5750805b601f850160051c820191505b81811015612a2e57828155600101612a1b565b5050505b505050565b6001600160401b03831115612a4e57612a4e61238a565b612a6283612a5c83546128f9565b836129e8565b6000601f841160018114612a965760008515612a7e5750838201355b600019600387901b1c1916600186901b178355612af0565b600083815260209020601f19861690835b82811015612ac75786850135825560209485019460019092019101612aa7565b5086821015612ae45760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6001600160a01b038416815263ffffffff83166020820152606060408201819052600090611f5f9083018461224f565b600081612b3657612b366128a9565b506000190190565b60006020808385031215612b5157600080fd5b82516001600160401b0380821115612b6857600080fd5b8185019150601f8681840112612b7d57600080fd5b612b856123a0565b80610100850189811115612b9857600080fd5b855b81811015612c0457805186811115612bb25760008081fd5b87018581018c13612bc35760008081fd5b8051612bd16124628261241c565b8181528d8b838501011115612be65760008081fd5b612bf5828c83018d860161222b565b86525050928701928701612b9a565b50909998505050505050505050565b600060018201612c2557612c256128a9565b5060010190565b8082028115828204841417611f2e57611f2e6128a956fe3c666f726569676e4f626a65637420783d22302220793d2230222077696474683d22323422206865696768743d223234223e203c696d6720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c22202077696474683d22313030252220636c6173733d2270697822207372633d22646174613a696d6167652f706e673b6261736536342c222076696577426f783d223020302032342032342220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f73766722203e203c7374796c653e202e706978207b696d6167652d72656e646572696e673a706978656c617465643b2d6d732d696e746572706f6c6174696f6e2d6d6f64653a206e6561726573742d6e65696768626f723b696d6167652d72656e646572696e673a202d6d6f7a2d63726973702d65646765733b7d203c2f7374796c653e4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa264697066735822122016f1a95a3d6dcf7232d3ba5131f5e5907663602b79a83ca5d5d2510836c4e29f64736f6c6343000813003389504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c54450000000000005959590040ff401523b30000000174524e530040e6d8660000001b4944415478da621838c01aea00a2a4563b20f1700140000000ffff5249023a69668c5f0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d866000000214944415478da62c009fe313030ce656060e480605c8011861bb04a03020000ffff7e1c023207c1f3860000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d8660000001b4944415478da622008b4181818421918185631900300010000ffff41aa012a18d810ed0000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000000000692f08d8a2a9300000000174524e530040e6d866000000284944415478da62a01f608452018c0e202a34144c852d45e2318486322051a22170cd80000000ffffb3a4056366b432730000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000d600002c63f04d0000000174524e530040e6d866000000134944415478da62a008f040316e00080000ffff0360001902542c490000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000c42110a2e982d40000000174524e530040e6d866000000124944415478da62a01a90c12a0a080000ffff02c8001d72b777ad0000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000a66e2c00000080c0c2990000000174524e530040e6d8660000001f4944415478da621830c01a02a6585890798c01c814d302b86a40000000ffff2fa301ff0f47294e0000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000ffffff1a6ed56fb0c5a50000000174524e530040e6d8660000001a4944415478da62201d3086868228a655ab18e80700010000ffffdec602021e01f4d60000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df80000002c4944415478da6262a03118b560d482510b462d18b560f858a0202796c63058c168248f5a403900040000fffffeb200e9e342816b0000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000000000a66e2c9730e2d80000000174524e530040e6d8660000002f4944415478da62a03fd05a05229956ad9ac0c0c020b5820b4c4179108a11423184ad7200518ca10c0c80000000ffff51890b8e68fe91ee0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb00000012504c54450000000060c3e4eb173cc300000000d604049007f3910000000174524e530040e6d866000000334944415478da622001300a0a22f15890d8824aaa0108554aaaa170092125a5d000b82a252475c6c6c6060c431600020000ffff8e2f043f67fbc8370000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb0000000f504c5445000000000000690c458c0d5bad21606331bdda0000000174524e530040e6d866000000324944415478da621828c02828c8282808e328290a2a29423982c6868cc6863019174746174798264101101a0c00100000ffffe5da0307c5d3f79f0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb0000000f504c544500000000000026314affffffffd8001025743b0000000174524e530040e6d866000000364944415478da622005080a2098824a8a302ea392928a9292229ca304e7300883004c97a010920c03a3a0a0a020c3500580000000ffff347603a082b51cae0000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c5445000000000000933709ca4e11586029880000000174524e530040e6d8660000002a4944415478da62200a888680a9fabf2092f1ff7f07060606b655ab2680a877ef2e30d01e00020000ffffcdba08c1f8ca1c3c0000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c54450000000000008d8d8db4b4b44f7060b00000000174524e530040e6d866000000284944415478da62a032080d7560606060dcff7f02030303dbd5d00b080a2a0855422200040000ffffd7670a737ec363890000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c54450000004c4c4c63636367c20ce50000000174524e530040e6d8660000001f4944415478da62200584868048c6d45030351542858632d00100020000ffff4d8702fb0f1c34300000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb00000012504c5445000000000000c8fbfb9be0e0f1ffff75bdbd4053c1210000000174524e530040e6d866000000564944415478daac8fb11180300c03c906b198207fb040466003f65f86061335ee70e53feb6469fb6522a2e7de8091a003c8932e070a683ac5fd82e698ec7d399b0ca61bd4e07f22542658a9b13efa340e4f000000ffffe3a70b7c1e9e0e0b0000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c544500000068461f000000b80d8ed70000000174524e530040e6d8660000001f4944415478da621830c01a02a6585890798c01c814d302b86a40000000ffff2fa301ff0f47294e0000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c544500000000000080dbda669cd55e0000000174524e530040e6d866000000224944415478da62a01608157560606060cc8c02510c99520e08416a0040000000ffff0567031c1296b7680000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000ffc926d3ca64d80000000174524e530040e6d866000000184944415478da62a0366004110d0c0c0c0e602e200000ffff06ef00c28387215b0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb00000015504c5445000000000000713f1d8b532c5626007237094a120162eb383b0000000174524e530040e6d8660000004c4944415478da62a03160141414807384949414e112ca4a4a4a302946255c1c2115272517384731484914c61154c26380102e19b5343807c5390c42082d208b0419905c2d80c901040000ffff2f3c090f8ffce8ac0000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c54450000002d6b6200000080dbda32008fdd0000000174524e530040e6d866000000354944415478da62200a888680a955ab4024d3bffd0d20ead77a30b5320b443186863a303030b03230e0a41889a6b00040000000ffff4bc30b42e46330a00000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c54450000000000005c390fc775146685ecb00000000174524e530040e6d866000000204944415478da62a02e600c0d7500d1995260aa561e4c89b0526c30200000ffffd33402a4b41fa11a0000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c5445000000f0f0f0328dfdfd3232d47923120000000174524e530040e6d866000000214944415478da62a012600d0d7560606060ccaa07510c500a22480d00080000ffff5dd3042db0f16dd40000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d8660000001a4944415478da62200530fe676060f800c509446901040000ffff932103411ff574e90000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000794b11502f0566020e390000000174524e530040e6d8660000002a4944415478da62c0010244402463682806c5c2b56a558303036b686868a803480c22496300080000ffff65920776511a3f8f0000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c544500000000000055555535d909f10000000174524e530040e6d8660000001b4944415478da62c0051cc024e3042c1443030a8f2e00100000ffff765a0305a5b614880000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000fff68e5319653e0000000174524e530040e6d8660000004f4944415478da624001c20c0c0ce71d1898df3730b0d7fd60e0fdff8041feff0106f6c31f18f8955e30c8b31430f0305430c8305430f0301430c831043070332c60e06330606061c00a00010000ffff3f7f0e31b0bc620f0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb00000012504c5445000000000000ae8b61b69f8286581ea77c470e17bdef0000000174524e530040e6d8660000004f4944415478da62a00a1014141480b11995949414611c2165252525989490113247092747c549c945006698629092a800c264b8324674030489315a49118f3284ab9590fc23045783cc01040000ffffd8690b6ca3604b190000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb00000012504c5445000000000000ead9d9ffffffa58d8dc9b2b21adbe9c60000000174524e530040e6d8660000004f4944415478da62a00a1014141480b11995949414611c2165252525989490113247092747c549c945006698629092a800c264b8324674030489315a49118f3284ab9590fc23045783cc01040000ffffd8690b6ca3604b190000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000a66e2c00000080c0c2990000000174524e530040e6d866000000244944415478da62a01f6084520e6006636828980a5b0a1685f0184443706806040000ffff718d02fe68c219c00000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000ffffffa5d99fdd0000000174524e530040e6d866000000124944415478da62a01a10c12a0a080000ffff02180015518fefb80000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d866000000264944415478da620083100606867f10ccf89f8181f1230303b3650303830003a500100000ffff8fa8050f2a3982bb0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df80000004a4944415478da6262a03118b560d482510b462d18b5801e16f8d2c307be94388085488790ed13165214b784c9c2d935ab1e13a587910aaedf4c691c6c26d770ba80a19fd100010000ffff17b506cc6c8ffcb10000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d8660000001d4944415478da622005b0ff3fc0c0f0f90003436203b15a00010000ffffca27045b28df4bb90000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d8660000001d4944415478da62c00a0418181842a078110303c324067201200000ffff79f001ed2e0ca9360000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000fff68e5319653e0000000174524e530040e6d866000000394944415478da62c00aea181818ff83700303f3df030ccc15071898050e30b0331c6060836276307e00c6fc0d1f18980f36603309100000ffffaa950e78c9a6ec2c0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb0000000f504c544500000028b1432c95410000002964344cdbc5fd0000000174524e530040e6d866000000234944415478da6218848091814100ce615260508273981d184cb02ba33700040000ffff7ae900dec03f69060000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000e226261ed2bbd80000000174524e530040e6d8660000001b4944415478da62c0001c0c0c0c120c0c0c16509a3200080000ffff1f400071228f4c0b0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb0000000f504c54450000002858b12c5195000000293e648e458eca0000000174524e530040e6d866000000234944415478da6218848091814100ce615260508273981d184cb02ba33700040000ffff7ae900dec03f69060000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb00000015504c5445000000000000ae8b61b69f8286581ea77c475f1d096e17a6860000000174524e530040e6d8660000004c4944415478da62a03160141414807384949414e112ca4a4a4a302946255c1c2115272517384731484914c61154c26380102e19b5343807c5390c42082d208b0419905c2d80c901040000ffff2f3c090f8ffce8ac0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d8660000002f4944415478da62c00bea181818fe333030fe6f60603ed8c0c0dc00c1ec0c58302312666e606067079b00080000ffffd1030b1b1e3ca1240000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000fff68e5319653e0000000174524e530040e6d866000000304944415478da7cccb10900300c03c1372ab475d06a99cc81b8f7c3b5cfda011aaa836e50865954b082fd0f2f0000ffffd0db0b19f8088baf0000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000000000dc1d1d9b9a25510000000174524e530040e6d8660000002e4944415478da628001c6d05010c51a1aea808be25ab5aa818181413434348081812134343484816e00100000ffff612d08a80a65c2450000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000000000d7d7d7dd6bdeda0000000174524e530040e6d866000000214944415478da62a02e600c0d7500518e01208a3531024c4104290280000000ffff18a403ab4ed4e1740000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000c9c9c9b1b1b1dfe0055e0000000174524e530040e6d866000000274944415478da62a0256084d20e1086e814081502a65423c0546828b2206b000ea300010000ffff92de033acd8c71070000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c544500000051360c48b320160000000174524e530040e6d8660000002f4944415478da62c00bea181818fe333030fe6f60603ed8c0c0dc00c1ec0c58302312666e606067079b00080000ffffd1030b1b1e3ca1240000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000e226261ed2bbd80000000174524e530040e6d866000000454944415478da6240011a0c0c4c2b191898ea0b1858ff3730b0fd7fc020dedcc0c0cff081819de101031bc307061e86040616060730cdc6e0c0c0c4e0c0800700020000ffff86820ac86b32f7cc0000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000000000ffd926bf0c26860000000174524e530040e6d866000000154944415478da62a00348805002949801080000ffff1df8007172dffd610000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df8000000484944415478da6262a03118b560d482510b8683052c04e4ff13690e23b916309c7ef6b710c6369562eec725466e103162e13312eb7abac401c368321db560d402da5b00080000ffffbe8c09370dfcbb5e0000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c54450000008119b7b261dc8e83430a0000000174524e530040e6d866000000254944415478da62c00f4243402463682a88620d8d84506051d6d0d05006ba0140000000fffff131041f8da125b90000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c544500000000000022900000558084ff9e8a0000000174524e530040e6d8660000004d4944415478da6240078c0e608a7d0298927b02a6a4b780a9bcb76015bb7783d430be7b07a2d857ad0629656b6002530c0c208a098562234c4935302d01f318413c46060607346701020000ffff3d76119d224fcf200000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d8660000001c4944415478da62200530ff6f6060f8dec0c0904cb41640000000ffff9e67035db5442bc60000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c544500000000000085561ea66e2c6852a3220000000174524e530040e6d866000000264944415478da6240800030c978014cb143286908a57f004c31432886030c740780000000ffffcd2f05565fc3044d0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d866000000124944415478da62a00a50c02903080000ffff03a0002126a77fa30000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c544500000000000055555535d909f10000000174524e530040e6d8660000001a4944415478da6280034608c5e680856242911b0800080000ffff990c011c0109f9070000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000ffffffa5d99fdd0000000174524e530040e6d866000000454944415478da62c00a6c191818eb181818ff3b30b0ff5fc0c07cff0103fbca030cdc1d0f18d8390218b8581218e4181218d8180a18d8181c1838181418700040000000ffff367b0a7764b3c52f0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df80000002f4944415478da6262a03118b560d482510b462d18b560d40210602141ed4c2c62e90c030d462379045800080000ffff60530131658c7b950000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c54450000000000002a2a2a02692f080000000174524e530040e6d866000000354944415478da62c00142434024636a2888629d1aeac0c0c0201a1a1a80490542284710c920cae000d600318495816a00100000ffff912107d1f05714420000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb00000015504c5445000000000000dbb180e7cba9a66e2cd29d60711010e7210e7f0000000174524e530040e6d8660000004c4944415478da62a03160141414807384949414e112ca4a4a4a302946255c1c2115272517384731484914c61154c26380102e19b5343807c5390c42082d208b0419905c2d80c901040000ffff2f3c090f8ffce8ac0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df8000000384944415478da6262a03118b560d482510b462da09605da531c6782302131b22db89ab33f9d18b10101a3a968d482510be86001200000ffffd02f0b616aa9c37e0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df8000000384944415478da6262a03118b5600458c042849a8978e4f229f5c1440ae5074710e553e20386d1643a6ac1a805a3168c5a400500080000ffff2ea40355b76925600000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df80000002f4944415478da6262a03118b560d482510b462d18b5806e164c916250036142620302462379d482216001200000ffff8e55037f0295ca130000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d866000000124944415478da62a02a50c01001040000ffff02a00021e29936ae0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d866000000294944415478daa4c0211100300800c097130b30b1280443109e3b2af0c6c547a0907838b63a0000ffff7250017908940adc0000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000000000ffd926bf0c26860000000174524e530040e6d866000000154944415478da62a0039080502c949801080000ffff07fc001da05932af0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df80000002c4944415478da6262a03118b560d482510b462d18b5607858a0202796c63098c168248f5a403900040000ffff01a900e96b1795ed0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df8000000364944415478da6262a03118b560d4826166810301fec080d148a6d882018dc8a1958a1c466e300d8a7c3038cba0e1535400020000ffff98f50225e7db2e020000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c544500000028b143000000cc9ab8ec0000000174524e530040e6d8660000003e4944415478da62c00b181d5841142b03a3030303832803630003034308184129d6100686500718c508a218181802204a04c008041418280480000000ffff40c405ad8a2523500000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000c9c9c9b1b1b1dfe0055e0000000174524e530040e6d8660000002a4944415478da62a0096081508c50ae0384213a0542858029d508b092d0506441d6001c2602020000ffff944e033f6ebf94330000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c54450000001c1a00534c0080dbda6080589f0000000174524e530040e6d866000000254944415478da62200364463930303030eecb6f40a232a5c0820c0c0e0cb40080000000ffff32d20565dbf243f00000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000ffba00ff2a00ec23aa7c0000000174524e530040e6d8660000001b4944415478da62201f888a40680730c9380199477500080000ffff7648013b91a176490000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000dfdfdf337edd570000000174524e530040e6d866000000134944415478da62a015603c00a600010000ffff04e700c22f5ee81e0000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c5445000000f0f0f0328dfdfd3232d47923120000000174524e530040e6d8660000001f4944415478da62a02e600c0d75005159f5208a014a4104290280000000ffff3f3b04294160e2b30000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000e65700fdf2de4e0000000174524e530040e6d866000000324944415478da62c0096c181818fe333030fe6f80e0d6030ccc0c10cc04c50c0c0f3031e303060666106e009902080000ffff4fd30f33b75f06fe0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df80000004b4944415478da6262a03118b560d482510b869a0577efde6d180da2116801cd010b057affe31067c4c921c5f063c78e6108ca4c4d60905b7a0bc55c465afb806134990eb80580000000ffff78ff0b44c51816510000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df8000000374944415478da6262a03118b560d482510b462d18b5806e165c62603006616ce254f3811e03c35986c1084653d1a805940340000000ffff94c80439947873b80000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c54450000008119b7b261dc8e83430a0000000174524e530040e6d866000000254944415478da62200a888682a9d04807060606c6d03008151a0aa51c18680e00010000fffffb9604856eb921470000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c54450000001a43c81637a4142c7c2bcdbdcc0000000174524e530040e6d866000000314944415478da622005ac5a05229942431b18181838c1145beeaa30060606c60d0c2b40d401b03a4606aa0340000000ffff03020742f02d25cf0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000dfdfdf337edd570000000174524e530040e6d866000000124944415478da62a01928009380000000ffff0300007135fa2b640000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d8660000002b4944415478da62c0007f191818ff333030ff3fc0c0febf8181f9770303bbe70106860e067200200000ffff2b95085cdd2d2f2d0000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000a66e2c00000080c0c2990000000174524e530040e6d8660000001a4944415478da62185c80310099624a808836303000020000ffff12f9018505211f590000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c54450000003d2f1e000000c8d065ca0000000174524e530040e6d8660000002b4944415478da62c0014403c054680812c5181a0aa2b856ad6a008985824419434321a2340680000000ffff28a206e959ceed270000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c544500000000000080dbda669cd55e0000000174524e530040e6d866000000234944415478da62a03208157560606060cc8c02510c9952604a8495627301010000ffffca38028b89ad68880000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000000000d7d7d7dd6bdeda0000000174524e530040e6d866000000214944415478da62a012600c0d7500518e01208a3531024c4104a90100010000ffff324a03ab83e6711a0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d8660000001a4944415478da62a03a70606060486060603000f300010000ffff08c000d178549d360000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c544500000028b1432c95412964343ee6dbfc0000000174524e530040e6d8660000001c4944415478da62a016106001531a5c608a871959900a00100000ffff23b6006aaf575b4b0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df8000000384944415478da6262a03118b560d482510b462da09605db18d6cf04614262645be0c510984e8cd88080d154346ac1a80574b000100000ffff94270a2bdc4a43550000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000a66e2cb134b2d70000000174524e530040e6d8660000001d4944415478da62a004308270230303e34106068683589500020000ffff340b0207ed983fca0000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c54450000000000002a2a2a02692f080000000174524e530040e6d8660000003c4944415478da62c00f42434024636a2888629d1aeac0c0c0201a1a1a8049054228c70001903606071130c58044854028113825c0403c00040000ffffd90d09b1ff89a89f0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb00000012504c5445000000000000713f1d8b532c5626007237092b4acd040000000174524e530040e6d8660000004f4944415478da62a00a1014141480b11995949414611c2165252525989490113247092747c549c945006698629092a800c264b8324674030489315a49118f3284ab9590fc23045783cc01040000ffffd8690b6ca3604b190000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c544500000000000086581eeeb664cd0000000174524e530040e6d866000000244944415478da62a01f6084520e6006636828980a5b0a1685f0184443706806040000ffff718d02fe68c219c00000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c5445000000000000ffffff1a6ed5d93a1bf30000000174524e530040e6d866000000424944415478da6220033830824846d110070606069655ab0418181844feff17015160c420808d0a61600845a14419c04c08c518c20062b242a900343b01010000ffff7f5108b501fb5fc90000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000000000ffd926bf0c26860000000174524e530040e6d866000000404944415478da62200a888680c880d050560606c6b0d0d0a90e0caca1a1a1a1010cac81018cae010cac8e0e0c8c010cac0e0c208a11a4da81819a00100000ffff496407d2e13d1cb20000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df8000000704944415478da6262a03118b560d482510b462dc00276eedcd940330b6086235b42f3206218f27130b27df09f963ef8df1a28826ec97f2c988191121f802ca95eff06660ecc523080895312078c2043907df2f8f51706649a521fa00717dcf019477ec0cd66a45184c3cd05040000ffffe2512fe56a94b4330000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d8660000003a4944415478da62c009ea181818fe333030fe6f6060fe7f0082273c60606780603686070c7c50cccff08141bef1030373e301745300010000ffffc5ab1058fff3c7650000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c5445000000000000933709ca4e11586029880000000174524e530040e6d866000000264944415478da622005fcff032299ffff075152ab564d60606090debd7b0203ed01200000ffff89c6081c0afc0fac0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000710cc759e1a3b70000000174524e530040e6d8660000003f4944415478da6cc6b10d40501000d017f989465cab905843c50a463a7b8bd368245ef57c1c741771d3174ba538d32e8dd83061c58019ed7df3eb090000fffff8b007a7fc0c1ce10000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df8000000384944415478da6262a03118b560d482510b462da09605da65536682302131b22db8da95934e8cd88080d154346ac1a80574b000100000ffffc4410bcb596becd80000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c5445000000ff8ebe000000ffffff4ae3beda0000000174524e530040e6d866000000484944415478da62200568ad0053ab578148a655af1ac0d42a10c5181aeac0c0c0c0ea181000a2181c409408034308030383281e8a958101acc1811144313a303a60b71a100000ffff0f6e0bf3e2fa2eec0000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000c28946a66e2cc99988650000000174524e530040e6d866000000184944415478da621830c0b6044c717020533801200000ffff22f000cb47eae9030000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df80000004b4944415478da6262a03118b560d482510be860010b01f9ff2498c5488e050ca79ffd2d84b14da598fbb1884dc0e71026125dc588c3a58c0316070ca3c974d482510b86810580000000ffffcf460a37173d31500000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c544500000000000055555535d909f10000000174524e530040e6d866000000604944415478da7ccdb10dc4200c85e1df050c71d330c4817457d3c03414648334f194d12352bac4b2fc59966cf310212dfe53d5fc10d15dd38ffb007a2e3bd0305157aa6d60037e37f10b25bd62f35a9858d531cbfa50434f8b0dce000000ffffa30d1684d4b69ae10000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb00000015504c5445000000000000ead9d9ffffffa58d8dc9b2b2711010f69870510000000174524e530040e6d8660000004c4944415478da62a03160141414807384949414e112ca4a4a4a302946255c1c2115272517384731484914c61154c26380102e19b5343807c5390c42082d208b0419905c2d80c901040000ffff2f3c090f8ffce8ac0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d8660000001b4944415478da62200530fe6760604a66606048265a0b200000ffff54c701c9074dcd420000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d8660000001a4944415478da62201630fe676060f800c509446b03040000ffffa0210341317dad5b0000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c544500000000000085561ea66e2c6852a3220000000174524e530040e6d866000000244944415478da62c005442054099864fc02a6d82014f707881c943260a00300040000ffff252e04932174d5ed0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000fff68e5319653e0000000174524e530040e6d8660000002d4944415478da62c00a6a181818fe313030fe07e1060666106e696060e66860606280604646066200200000ffffdcdb0815f637cf1a0000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c54450000000000005c390fc775146685ecb00000000174524e530040e6d866000000214944415478da62a012600c0d7500d1995260aa561e4c89b052cb7c40000000ffffe5a902a473b175720000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d8660000003d4944415478da624006ccfc0d0cc2ff0d18e4ff3f6090ffff81811f447f7ec0603ff300033fc303067986070ce20c20f601060e0607062200200000ffffb9320f35dcea59b30000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d866000000294944415478da9cc0310d00300800b01ecbae65125042f02f8b9b971a2e3e0285c4c3b1d5010000ffff337800bd4717cafb0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000d600002c63f04d0000000174524e530040e6d866000000134944415478da62201bf040317e00080000ffff03c000197c38ad200000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000a66e2c00000080c0c2990000000174524e530040e6d866000000244944415478da62a01f6084520e8c481443000a251a02511300a69816c03503020000ffff46850284e24691b90000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c544500000028b143000000cc9ab8ec0000000174524e530040e6d866000000474944415478da94c7b10d80300c05d18b447a0ad880411821856fff55906d898e825ff8f9f8d8bcf30eadd0cc5317a0c6cb704d1348a2604134477351ef0e6ccdcf3d010000ffffff6c099ea706747f0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d866000000364944415478da62c00a0a1818187f303030bf6060607fc0c0c07e808181bd8181811f861920980f19373030c83320301400020000ffff746d06dbf514328c0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180806000000e0773df80000003d4944415478da6262a03118b560d482510b28b0a027ca7e26d55d43134387761c0c68900c9af8601ad4ae1d14c134f88a8a41979b877e710d080000fffff2580c5583685c2e0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb00000012504c54450000000000007da2699bbc885e7253ff00007efb409c0000000174524e530040e6d866000000534944415478da62a00a1014141480b11995949414611c2165252525989490113247092747c549c945006698aa9052209ca3a2a4e404e3a01b20488cd14a8ac8ca545095215cad84e41f21b81a640e200000ffffea5f0b90848c25f90000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b00000009504c5445000000e226260000001337790f0000000174524e530040e6d866000000434944415478da6240038c0c0e208ad5350044b386ba82a8d0d0d000060616d1d0d05090586868084830c005240756c7c01800d19d0031054a39408da40200040000ffff0b6408c6ffc386f40000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d8660000004c4944415478da62800326060626970606d6fc090ce2ff1730f0ff7fc020ffff0384fe7c80c17ee603067e860f0cf20c0f18c419206c2e0607062606070616060706060605062c00100000ffff1b1511db1ceba4170000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb00000012504c5445000000000000352410856f566a563fa98c6b35cdf9490000000174524e530040e6d866000000604944415478daaccfd11180200c0350d980c0390071821a37d00ddc7f17bf68eb9d9ff2c5bb062e5d7e3900eabc179263a29164fdc4009a43921cc7a9abcecfecd6ea48b1f27eb3990528ed31c9b10ef4409e0cc9a275daa779e58c270000ffff866f0d065247e95a0000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c54450000002858b12c5195293e64cf044ab90000000174524e530040e6d8660000001c4944415478da62a016106001531a5c608a871959900a00100000ffff23b6006aaf575b4b0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000ffc926d3ca64d80000000174524e530040e6d866000000124944415478da62a01928009380000000ffff0300007135fa2b640000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c54450000000000008d8d8db4b4b44f7060b00000000174524e530040e6d866000000284944415478da62a01884863a30303030eeff3f81818181ed6ae805040515842aa10800020000ffff69b20a7394f432b40000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000000000a567b9cf0000000174524e530040e6d866000000124944415478da62a01a90c12a0a080000ffff02c8001d72b777ad0000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb00000012504c5445000000000000dbb180e7cba9a66e2cd29d601a5e5ef40000000174524e530040e6d8660000004f4944415478da62a00a1014141480b11995949414611c2165252525989490113247092747c549c945006698629092a800c264b8324674030489315a49118f3284ab9590fc23045783cc01040000ffffd8690b6ca3604b190000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c54450000000000003535355151511dd8d71d0000000174524e530040e6d866000000314944415478da62c00f42434024e3febf208aedff7f07060606f6afa10120ead6aa250c0c0caca11035340680000000ffff5f8a097e7a97a9b90000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180403000000125920cb0000000f504c5445000000000000690c458c0d5bad21606331bdda0000000174524e530040e6d866000000324944415478da62187c80515090515010c651521454528472048d0d198d0d61322e8e8c2e8e304d820220443f00080000ffff973e030740dbe40c0000000049454e44ae42608289504e470d0a1a0a0000000d49484452000000180000001802030000009d19d56b0000000c504c54450000001a43c81637a4142c7c2bcdbdcc0000000174524e530040e6d866000000314944415478da62200aac5a05229942431b18181838c1145beeaa30060606c60d0c2b40d401b03a46065a0140000000ffff35c90742649028070000000049454e44ae42608289504e470d0a1a0a0000000d4948445200000018000000180103000000dab9afbb00000006504c5445000000cd00cb30a6a7e40000000174524e530040e6d866000000124944415478da62a01a90c12a0a080000ffff02c8001d72b777ad0000000049454e44ae426082
Deployed Bytecode
0x6080604052600436106101145760003560e01c80637847d745116100a0578063c03701a311610064578063c03701a31461035b578063c694f2571461037b578063c8d7eae7146103a8578063db714efe146103c8578063e81a4f92146103f657600080fd5b80637847d7451461026557806397bec1851461028557806399d726c7146102d45780639b739b50146102f1578063b64a097e1461032c57600080fd5b806334b28e7b116100e757806334b28e7b146101ce57806335a063b4146101ee5780633fb27b85146101f657806361b8ce8c1461020b5780636900a3ae1461024557600080fd5b806303a37316146101195780630b463e461461013b5780631764a79c1461017157806334b0f8a9146101ae575b600080fd5b34801561012557600080fd5b506101396101343660046121d1565b610416565b005b34801561014757600080fd5b5061015b610156366004612212565b610582565b604051610168919061227b565b60405180910390f35b34801561017d57600080fd5b506101a161018c366004612212565b60076020526000908152604090205460ff1681565b60405161016891906122cd565b3480156101ba57600080fd5b5061015b6101c9366004612306565b61061c565b3480156101da57600080fd5b5061015b6101e9366004612212565b61079b565b6101396107b4565b34801561020257600080fd5b50610139610805565b34801561021757600080fd5b5060055461023090640100000000900463ffffffff1681565b60405163ffffffff9091168152602001610168565b34801561025157600080fd5b5061015b610260366004612212565b61085a565b34801561027157600080fd5b5061015b610280366004612499565b61093d565b34801561029157600080fd5b506102c16102a036600461258d565b600460209081526000928352604080842090915290825290205461ffff1681565b60405161ffff9091168152602001610168565b3480156102e057600080fd5b506005546102309063ffffffff1681565b3480156102fd57600080fd5b5061031e61030c366004612212565b60036020526000908152604090205481565b604051908152602001610168565b34801561033857600080fd5b5061034c610347366004612212565b610aba565b604051610168939291906125c8565b34801561036757600080fd5b5061015b6103763660046125f2565b610afd565b34801561038757600080fd5b5061031e61039636600461269e565b60066020526000908152604090205481565b3480156103b457600080fd5b506101396103c33660046126fa565b610c5f565b3480156103d457600080fd5b506103e86103e33660046127a6565b610fc8565b6040516101689291906127c8565b34801561040257600080fd5b5061015b610411366004612873565b6112b0565b60055463ffffffff166000908152600460205260408120905b61ffff8116831115610547578160008261ffff16600c81111561045457610454612295565b600c81111561046557610465612295565b600c81111561047657610476612295565b815260208101919091526040016000205461ffff16156104d55760405162461bcd60e51b815260206004820152601560248201527473746f72616765206d75737420626520656d70747960581b60448201526064015b60405180910390fd5b808260008361ffff16600c8111156104ef576104ef612295565b600c81111561050057610500612295565b600c81111561051157610511612295565b81526020810191909152604001600020805461ffff191661ffff929092169190911790558061053f816128bf565b91505061042f565b506005805463ffffffff1690600061055e836128e0565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050565b6002602052600090815260409020805461059b906128f9565b80601f01602080910402602001604051908101604052809291908181526020018280546105c7906128f9565b80156106145780601f106105e957610100808354040283529160200191610614565b820191906000526020600020905b8154815290600101906020018083116105f757829003601f168201915b505050505081565b60408051600d8082526101c082019092526060916000918291602082016101a08036833701905050905060005b61ffff8116891115610780576000600660008c8c8561ffff1681811061067157610671612933565b9050602002016020810190610686919061269e565b63ffffffff16815260208082019290925260409081016000908120548082526003909352908120549192508190036106bf575050610780565b6000806106cb836114cd565b5063ffffffff8b1660009081526004602052604081209294509092508591889185600c8111156106fd576106fd612295565b600c81111561070e5761070e612295565b8152602081019190915260400160002054815161ffff90911690811061073657610736612933565b6020908102919091010152600082600c81111561075557610755612295565b036107695761ffff81161561076957600196505b505050508080610778906128bf565b915050610649565b5061078e8188888886611500565b9998505050505050505050565b6001602052600090815260409020805461059b906128f9565b6000546001600160a01b031633146107f75760405162461bcd60e51b81526004016104cc906020808252600490820152636e6f706560e01b604082015260600190565b6000546001600160a01b0316ff5b6000546001600160a01b031633146108485760405162461bcd60e51b81526004016104cc906020808252600490820152636e6f706560e01b604082015260600190565b600080546001600160a01b0319169055565b60606000826000036108855750506040805180820190915260018152600360fc1b6020820152919050565b604080516020808252818301909252601f91600091906020820181803683370190505090505b841561091f576108bc600a8661295f565b6108c7906030612973565b60f81b8183815181106108dc576108dc612933565b60200101906001600160f81b031916908160001a9053506108fe600a86612986565b945061090b60018361299a565b915082610917816129ad565b9350506108ab565b60208181018051918590036008029190911b90529182525092915050565b60408051600d8082526101c082019092526060916000918291602082016101a08036833701905050905060005b88518161ffff161015610aa0576000898261ffff168151811061098f5761098f612933565b60200260200101516040516020016109a791906129cc565b60408051601f1981840301815291815281516020928301206000818152600390935290822054909250908190036109df575050610aa0565b6000806109eb836114cd565b5063ffffffff8b1660009081526004602052604081209294509092508591889185600c811115610a1d57610a1d612295565b600c811115610a2e57610a2e612295565b8152602081019190915260400160002054815161ffff909116908110610a5657610a56612933565b6020908102919091010152600082600c811115610a7557610a75612295565b03610a895761ffff811615610a8957600196505b505050508080610a98906128bf565b91505061096a565b50610aae8188888886611500565b98975050505050505050565b60008181526003602052604081205481908190808203610ae557600080600093509350935050610af6565b610aee816114cd565b935093509350505b9193909250565b60408051600d8082526101c082019092526060916000918291602082016101a08036833701905050905060005b88518161ffff161015610aa0576000600360008b8461ffff1681518110610b5357610b53612933565b6020026020010151815260200190815260200160002054905080600003610b7a5750610aa0565b600080610b86836114cd565b50915091508b8461ffff1681518110610ba157610ba1612933565b602002602001015185600460008b63ffffffff1663ffffffff168152602001908152602001600020600085600c811115610bdd57610bdd612295565b600c811115610bee57610bee612295565b8152602081019190915260400160002054815161ffff909116908110610c1657610c16612933565b6020908102919091010152600082600c811115610c3557610c35612295565b03610c495761ffff811615610c4957600195505b5050508080610c57906128bf565b915050610b2a565b600081604051602001610c7291906129cc565b60408051601f198184030181529181528151602092830120600081815260039093529120549091508015610cd55760405162461bcd60e51b815260206004820152600a60248201526939b637ba103a30b5b2b760b11b60448201526064016104cc565b600d8460ff1610610d195760405162461bcd60e51b815260206004820152600e60248201526d34b73b30b634b2102fb630bcb2b960911b60448201526064016104cc565b6000610d258689612973565b11610d5c5760405162461bcd60e51b81526020600482015260076024820152666e6f206461746160c81b60448201526064016104cc565b61ffff871115610d9a5760405162461bcd60e51b81526020600482015260096024820152684c20746f6f2062696760b81b60448201526064016104cc565b61ffff851115610dd85760405162461bcd60e51b81526020600482015260096024820152685320746f6f2062696760b81b60448201526064016104cc565b60ff8416158015610de857508615155b8015610df357508415155b15610e405760405162461bcd60e51b815260206004820181905260248201527f6c61796572302063616e6e6f74206861766520626f74682076657273696f6e7360448201526064016104cc565b8615610ea757610e50888861183c565b610e8c5760405162461bcd60e51b815260206004820152600d60248201526c696e76616c6964204c20706e6760981b60448201526064016104cc565b6000828152600260205260409020610ea5888a83612a37565b505b8415610f0e57610eb7868661183c565b610ef35760405162461bcd60e51b815260206004820152600d60248201526c696e76616c6964205320706e6760981b60448201526064016104cc565b6000828152600160205260409020610f0c868883612a37565b505b60ff8416600888901b62ffff001617601886901b64ffff00000016176000838152600360209081526040808320939093556005805463ffffffff6401000000009182900481168552600690935292849020869055805460018482048416018316840267ffffffff0000000019909116179081905592517e2608a26743ece36b229b6d50704b35d12f50d23f05f584c8f8ae7d3227daf193610fb6933393910416908790612af7565b60405180910390a15050505050505050565b6060600080836001600160401b03811115610fe557610fe561238a565b60405190808252806020026020018201604052801561103b57816020015b6110286040805160608101909152806000815260200160608152602001606081525090565b8152602001906001900390816110035790505b5090505b83156112925760006006816001611056888a612973565b611060919061299a565b63ffffffff168152602080820192909252604090810160009081205480825260039093522054909150801561127e57600061109a826114cd565b505060008481526001602052604090208054919250906110b9906128f9565b80601f01602080910402602001604051908101604052809291908181526020018280546110e5906128f9565b80156111325780601f1061110757610100808354040283529160200191611132565b820191906000526020600020905b81548152906001019060200180831161111557829003601f168201915b505050505084600189611145919061299a565b8151811061115557611155612933565b602002602001015160400181905250600260008481526020019081526020016000208054611182906128f9565b80601f01602080910402602001604051908101604052809291908181526020018280546111ae906128f9565b80156111fb5780601f106111d0576101008083540402835291602001916111fb565b820191906000526020600020905b8154815290600101906020018083116111de57829003601f168201915b50505050508460018961120e919061299a565b8151811061121e5761121e612933565b6020908102919091018101510152808461123960018a61299a565b8151811061124957611249612933565b602002602001015160000190600c81111561126657611266612295565b9081600c81111561127957611279612295565b905250505b8561128881612b27565b965050505061103f565b600554909250640100000000900463ffffffff1690505b9250929050565b60405163658ab47160e11b81526004810186905260609073d8e916c3016be144eb2907778cf972c4b01645fc90600090829063cb1568e290602401600060405180830381865afa158015611308573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113309190810190612b3e565b60408051600d8082526101c082019092529192506000918291602082016101a08036833701905050905060005b60088161ffff1610156114b157838161ffff166008811061138057611380612933565b602002015151156114b1576000848261ffff16600881106113a3576113a3612933565b60200201516040516020016113b891906129cc565b60408051601f1981840301815291815281516020928301206000818152600390935290822054909250908190036113f05750506114b1565b6000806113fc836114cd565b5063ffffffff8d1660009081526004602052604081209294509092508591889185600c81111561142e5761142e612295565b600c81111561143f5761143f612295565b8152602081019190915260400160002054815161ffff90911690811061146757611467612933565b6020908102919091010152600082600c81111561148657611486612295565b0361149a5761ffff81161561149a57600196505b5050505080806114a9906128bf565b91505061135d565b506114bf818a8a8a86611500565b9a9950505050505050505050565b6000806000808460ff16600c8111156114e8576114e8612295565b9561ffff600887901c81169660181c16945092505050565b606060006115118461ffff1661085a565b90506115296040518060200160405280606081525090565b6115976040518060400160405280601e81526020017f3c73766720636c6173733d2270756e6b626c6f636b222077696474683d220000815250836040518060400160405280600a81526020016911103432b4b3b43a1e9160b11b81525084611f34909392919063ffffffff16565b506115d0826040518060400160405280600581526020016411103c1e9160d91b8152506115c78a61ffff1661085a565b84929190611f34565b506116216040518060400160405280600581526020016411103c9e9160d91b8152506115ff8861ffff1661085a565b6040518060e0016040528060b88152602001612cd660b8913984929190611f34565b5060005b600d8110156118065788818151811061164057611640612933565b60200260200101516000801b03156117f4576000806116778b848151811061166a5761166a612933565b6020026020010151610aba565b925092505086156117a7578161ffff166000036116955750506117f4565b6117a16040518060c0016040528060928152602001612c446092913961176e600260008f88815181106116ca576116ca612933565b6020026020010151815260200190815260200160002080546116eb906128f9565b80601f0160208091040260200160405190810160405280929190818152602001828054611717906128f9565b80156117645780601f1061173957610100808354040283529160200191611764565b820191906000526020600020905b81548152906001019060200180831161174757829003601f168201915b5050505050611f68565b60408051808201909152601381527211179f1e17b337b932b4b3b727b13532b1ba1f60691b602082015287929190611f34565b506117f1565b8061ffff166000036117ba5750506117f4565b6117ef6040518060c0016040528060928152602001612c446092913961176e600160008f88815181106116ca576116ca612933565b505b50505b806117fe81612c13565b915050611625565b506040805180820190915260068152651e17b9bb339f60d11b602082015261182f9082906120ba565b5051979650505050505050565b6000600882101561184f57506000611f2e565b60408051808201909152600881526744a8272386850d0560c11b602082015260005b60088110156118d95781818151811061188c5761188c612933565b01602001516001600160f81b0319168585838181106118ad576118ad612933565b9050013560f81c60f81b6001600160f81b031916146118d157600092505050611f2e565b600101611871565b60005b60188686848181106118f0576118f0612933565b919091013560f81c90911b9050601087876001860181811061191457611914612933565b919091013560f81c90911b9050600888886002870181811061193857611938612933565b919091013560f81c90911b905088886003870181811061195a5761195a612933565b9050013560f81c60f81b60f81c60ff161717179050600482019150604960f81b6001600160f81b03191686868481811061199657611996612933565b9050013560f81c60f81b6001600160f81b0319161480156119e25750600960fb1b8686600185018181106119cc576119cc612933565b9050013560f81c60f81b6001600160f81b031916145b8015611a195750601160fa1b868660028501818110611a0357611a03612933565b9050013560f81c60f81b6001600160f81b031916145b8015611a505750602960f91b868660038501818110611a3a57611a3a612933565b9050013560f81c60f81b6001600160f81b031916145b15611bae576018868684600401818110611a6c57611a6c612933565b919091013560f81c90911b90506010878760058601818110611a9057611a90612933565b919091013560f81c90911b90506008888860068701818110611ab457611ab4612933565b919091013560f81c90911b9050888860078701818110611ad657611ad6612933565b9050013560f81c60f81b60f81c60ff1617171760030b601814611aff5760009350505050611f2e565b6018868684600801818110611b1657611b16612933565b919091013560f81c90911b90506010878760098601818110611b3a57611b3a612933565b919091013560f81c90911b905060088888600a8701818110611b5e57611b5e612933565b919091013560f81c90911b90508888600b8701818110611b8057611b80612933565b9050013560f81c60f81b60f81c60ff1617171760030b601814611ba95760009350505050611f2e565b611f1b565b600560fc1b868684818110611bc557611bc5612933565b9050013560f81c60f81b6001600160f81b031916148015611c115750601360fa1b868660018501818110611bfb57611bfb612933565b9050013560f81c60f81b6001600160f81b031916145b8015611c485750601560fa1b868660028501818110611c3257611c32612933565b9050013560f81c60f81b6001600160f81b031916145b8015611c7f5750604560f81b868660038501818110611c6957611c69612933565b9050013560f81c60f81b6001600160f81b031916145b611f1b57601d60fa1b868684818110611c9a57611c9a612933565b9050013560f81c60f81b6001600160f81b031916148015611ce65750602960f91b868660018501818110611cd057611cd0612933565b9050013560f81c60f81b6001600160f81b031916145b8015611d1d5750602760f91b868660028501818110611d0757611d07612933565b9050013560f81c60f81b6001600160f81b031916145b8015611d545750605360f81b868660038501818110611d3e57611d3e612933565b9050013560f81c60f81b6001600160f81b031916145b611f1b57604960f81b868684818110611d6f57611d6f612933565b9050013560f81c60f81b6001600160f81b031916148015611dbb5750601160fa1b868660018501818110611da557611da5612933565b9050013560f81c60f81b6001600160f81b031916145b8015611df25750604160f81b868660028501818110611ddc57611ddc612933565b9050013560f81c60f81b6001600160f81b031916145b8015611e295750601560fa1b868660038501818110611e1357611e13612933565b9050013560f81c60f81b6001600160f81b031916145b611f1b57604960f81b868684818110611e4457611e44612933565b9050013560f81c60f81b6001600160f81b031916148015611e905750604560f81b868660018501818110611e7a57611e7a612933565b9050013560f81c60f81b6001600160f81b031916145b8015611ec75750602760f91b868660028501818110611eb157611eb1612933565b9050013560f81c60f81b6001600160f81b031916145b8015611efe5750601160fa1b868660038501818110611ee857611ee8612933565b9050013560f81c60f81b6001600160f81b031916145b15611f0f5760019350505050611f2e565b60009350505050611f2e565b8060030b600401600401820191506118dc565b92915050565b604080516020810190915260608152611f5f611f59611f5387876120ba565b856120ba565b836120ba565b95945050505050565b60608151600003611f8757505060408051602081019091526000815290565b6000604051806060016040528060408152602001612d8e6040913990506000600384516002611fb69190612973565b611fc09190612986565b611fcb906004612c2c565b6001600160401b03811115611fe257611fe261238a565b6040519080825280601f01601f19166020018201604052801561200c576020820181803683370190505b509050600182016020820185865187015b80821015612078576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f811685015184535060018301925061201d565b505060038651066001811461209457600281146120a7576120af565b603d6001830353603d60028303536120af565b603d60018303535b509195945050505050565b60408051602081019091526060815281511561218657601f1983518051808551016605c284b9def779848401518181061582820402905080831061215957856020848317018201168160400186016040511461214757602060405101816040018101604052808b528760208701165b87810151828201528801806121295750908302818801529450612159565b80604001860160405280830287870152505b505085519183019160200184165b8681015183820152840180612167575060008382016020015290915250505b5090919050565b60008083601f84011261219f57600080fd5b5081356001600160401b038111156121b657600080fd5b6020830191508360208260051b85010111156112a957600080fd5b600080602083850312156121e457600080fd5b82356001600160401b038111156121fa57600080fd5b6122068582860161218d565b90969095509350505050565b60006020828403121561222457600080fd5b5035919050565b60005b8381101561224657818101518382015260200161222e565b50506000910152565b6000815180845261226781602086016020860161222b565b601f01601f19169290920160200192915050565b60208152600061228e602083018461224f565b9392505050565b634e487b7160e01b600052602160045260246000fd5b600d81106122c957634e487b7160e01b600052602160045260246000fd5b9052565b60208101611f2e82846122ab565b803561ffff811681146122ed57600080fd5b919050565b803563ffffffff811681146122ed57600080fd5b60008060008060008060a0878903121561231f57600080fd5b86356001600160401b0381111561233557600080fd5b61234189828a0161218d565b90975095506123549050602088016122db565b9350612362604088016122db565b9250612370606088016122db565b915061237e608088016122f2565b90509295509295509295565b634e487b7160e01b600052604160045260246000fd5b60405161010081016001600160401b03811182821017156123c3576123c361238a565b60405290565b604051601f8201601f191681016001600160401b03811182821017156123f1576123f161238a565b604052919050565b60006001600160401b038211156124125761241261238a565b5060051b60200190565b60006001600160401b038211156124355761243561238a565b50601f01601f191660200190565b600082601f83011261245457600080fd5b81356124676124628261241c565b6123c9565b81815284602083860101111561247c57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156124b157600080fd5b85356001600160401b03808211156124c857600080fd5b818801915088601f8301126124dc57600080fd5b813560206124ec612462836123f9565b82815260059290921b8401810191818101908c84111561250b57600080fd5b8286015b84811015612543578035868111156125275760008081fd5b6125358f86838b0101612443565b84525091830191830161250f565b50995061255390508a82016122db565b975050505050612565604087016122db565b9250612573606087016122db565b9150612581608087016122f2565b90509295509295909350565b600080604083850312156125a057600080fd5b6125a9836122f2565b91506020830135600d81106125bd57600080fd5b809150509250929050565b606081016125d682866122ab565b61ffff8085166020840152808416604084015250949350505050565b600080600080600060a0868803121561260a57600080fd5b85356001600160401b0381111561262057600080fd5b8601601f8101881361263157600080fd5b80356020612641612462836123f9565b82815260059290921b8301810191818101908b84111561266057600080fd5b938201935b8385101561267e57843582529382019390820190612665565b985061268d90508982016122db565b9650505050612565604087016122db565b6000602082840312156126b057600080fd5b61228e826122f2565b60008083601f8401126126cb57600080fd5b5081356001600160401b038111156126e257600080fd5b6020830191508360208285010111156112a957600080fd5b6000806000806000806080878903121561271357600080fd5b86356001600160401b038082111561272a57600080fd5b6127368a838b016126b9565b9098509650602089013591508082111561274f57600080fd5b61275b8a838b016126b9565b90965094506040890135915060ff8216821461277657600080fd5b9092506060880135908082111561278c57600080fd5b5061279989828a01612443565b9150509295509295509295565b600080604083850312156127b957600080fd5b50508035926020909101359150565b60006040808301818452808651808352606092508286019150828160051b8701016020808a0160005b8481101561285057605f198a8503018652815161280f8582516122ab565b8381015188858701526128248987018261224f565b918a0151868303878c015291905061283c818361224f565b9785019795505050908201906001016127f1565b50508196506128668189018a63ffffffff169052565b5050505050509392505050565b600080600080600060a0868803121561288b57600080fd5b8535945061289b602087016122db565b9350612565604087016122db565b634e487b7160e01b600052601160045260246000fd5b600061ffff8083168181036128d6576128d66128a9565b6001019392505050565b600063ffffffff8083168181036128d6576128d66128a9565b600181811c9082168061290d57607f821691505b60208210810361292d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b60008261296e5761296e612949565b500690565b80820180821115611f2e57611f2e6128a9565b60008261299557612995612949565b500490565b81810381811115611f2e57611f2e6128a9565b600060ff821660ff81036129c3576129c36128a9565b60010192915050565b600082516129de81846020870161222b565b9190910192915050565b601f821115612a3257600081815260208120601f850160051c81016020861015612a0f5750805b601f850160051c820191505b81811015612a2e57828155600101612a1b565b5050505b505050565b6001600160401b03831115612a4e57612a4e61238a565b612a6283612a5c83546128f9565b836129e8565b6000601f841160018114612a965760008515612a7e5750838201355b600019600387901b1c1916600186901b178355612af0565b600083815260209020601f19861690835b82811015612ac75786850135825560209485019460019092019101612aa7565b5086821015612ae45760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6001600160a01b038416815263ffffffff83166020820152606060408201819052600090611f5f9083018461224f565b600081612b3657612b366128a9565b506000190190565b60006020808385031215612b5157600080fd5b82516001600160401b0380821115612b6857600080fd5b8185019150601f8681840112612b7d57600080fd5b612b856123a0565b80610100850189811115612b9857600080fd5b855b81811015612c0457805186811115612bb25760008081fd5b87018581018c13612bc35760008081fd5b8051612bd16124628261241c565b8181528d8b838501011115612be65760008081fd5b612bf5828c83018d860161222b565b86525050928701928701612b9a565b50909998505050505050505050565b600060018201612c2557612c256128a9565b5060010190565b8082028115828204841417611f2e57611f2e6128a956fe3c666f726569676e4f626a65637420783d22302220793d2230222077696474683d22323422206865696768743d223234223e203c696d6720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f313939392f7868746d6c22202077696474683d22313030252220636c6173733d2270697822207372633d22646174613a696d6167652f706e673b6261736536342c222076696577426f783d223020302032342032342220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f73766722203e203c7374796c653e202e706978207b696d6167652d72656e646572696e673a706978656c617465643b2d6d732d696e746572706f6c6174696f6e2d6d6f64653a206e6561726573742d6e65696768626f723b696d6167652d72656e646572696e673a202d6d6f7a2d63726973702d65646765733b7d203c2f7374796c653e4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa264697066735822122016f1a95a3d6dcf7232d3ba5131f5e5907663602b79a83ca5d5d2510836c4e29f64736f6c63430008130033
Deployed Bytecode Sourcemap
3170:76660:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6111:353;;;;;;;;;;-1:-1:-1;6111:353:0;;;;;:::i;:::-;;:::i;:::-;;4407:39;;;;;;;;;;-1:-1:-1;4407:39:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4891:45;;;;;;;;;;-1:-1:-1;4891:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;15734:833::-;;;;;;;;;;-1:-1:-1;15734:833:0;;;;;:::i;:::-;;:::i;4329:39::-;;;;;;;;;;-1:-1:-1;4329:39:0;;;;;:::i;:::-;;:::i;78496:129::-;;;:::i;78633:110::-;;;;;;;;;;;;;:::i;4722:20::-;;;;;;;;;;-1:-1:-1;4722:20:0;;;;;;;;;;;;;;4101:10:1;4089:23;;;4071:42;;4059:2;4044:18;4722:20:0;3927:192:1;78751:1074:0;;;;;;;;;;-1:-1:-1;78751:1074:0;;;;;:::i;:::-;;:::i;12779:905::-;;;;;;;;;;-1:-1:-1;12779:905:0;;;;;:::i;:::-;;:::i;4603:63::-;;;;;;;;;;-1:-1:-1;4603:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7586:6:1;7574:19;;;7556:38;;7544:2;7529:18;4603:63:0;7412:188:1;4689:26:0;;;;;;;;;;-1:-1:-1;4689:26:0;;;;;;;;4485:45;;;;;;;;;;-1:-1:-1;4485:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;7751:25:1;;;7739:2;7724:18;4485:45:0;7605:177:1;7199:231:0;;;;;;;;;;-1:-1:-1;7199:231:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;14395:835::-;;;;;;;;;;-1:-1:-1;14395:835:0;;;;;:::i;:::-;;:::i;4806:39::-;;;;;;;;;;-1:-1:-1;4806:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;8045:1179;;;;;;;;;;-1:-1:-1;8045:1179:0;;;;;:::i;:::-;;:::i;5450:609::-;;;;;;;;;;-1:-1:-1;5450:609:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;16868:1217::-;;;;;;;;;;-1:-1:-1;16868:1217:0;;;;;:::i;:::-;;:::i;6111:353::-;6250:12;;;;6201:34;6238:25;;;:11;:25;;;;;;6274:158;6293:17;;;;-1:-1:-1;6274:158:0;;;6340:1;:11;6348:1;6342:8;;;;;;;;;;:::i;:::-;6340:11;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;6340:11:0;;;;:16;6332:50;;;;-1:-1:-1;;;6332:50:0;;13409:2:1;6332:50:0;;;13391:21:1;13448:2;13428:18;;;13421:30;-1:-1:-1;;;13467:18:1;;;13460:51;13528:18;;6332:50:0;;;;;;;;;6418:1;6397;:11;6405:1;6399:8;;;;;;;;;;:::i;:::-;6397:11;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;6397:11:0;:23;;-1:-1:-1;;6397:23:0;;;;;;;;;;;;6312:3;;;;:::i;:::-;;;;6274:158;;;-1:-1:-1;6442:12:0;:14;;;;;:12;:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;6190:274;6111:353;;:::o;4407:39::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15734:833::-;15978:17;;;15992:2;15978:17;;;;;;;;;15900:13;;15926:12;;;;15978:17;;;;;;;;;;-1:-1:-1;15978:17:0;15949:46;;16011:8;16006:497;16025:15;;;;-1:-1:-1;16006:497:0;;;16062:12;16077:5;:14;16083:4;;16088:1;16083:7;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;16077:14;;;;;;;;;;;;;;;;-1:-1:-1;16077:14:0;;;;16119:16;;;:10;:16;;;;;;;16077:14;;-1:-1:-1;16154:7:0;;;16150:53;;16182:5;;;;16150:53;16218:7;16227:9;16241:15;16253:2;16241:11;:15::i;:::-;-1:-1:-1;16289:21:0;;;;;;;:11;:21;;;;;16217:39;;-1:-1:-1;16217:39:0;;-1:-1:-1;16318:4:0;;16271:9;;16217:39;16289:24;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;16289:24:0;;16271:44;;16289:24;;;;;16271:44;;;;;;:::i;:::-;;;;;;;;;;:51;16346:10;16341:1;:15;;;;;;;;:::i;:::-;;16337:155;;16412:6;;;;16408:69;;16453:4;16443:14;;16408:69;16047:456;;;;16042:3;;;;;:::i;:::-;;;;16006:497;;;;16520:39;16525:9;16536:2;16540;16544:5;16551:7;16520:4;:39::i;:::-;16513:46;15734:833;-1:-1:-1;;;;;;;;;15734:833:0:o;4329:39::-;;;;;;;;;;;;;;;;:::i;78496:129::-;78564:5;;-1:-1:-1;;;;;78564:5:0;78550:10;:19;78541:37;;;;-1:-1:-1;;;78541:37:0;;;;;;14816:2:1;14798:21;;;14855:1;14835:18;;;14828:29;-1:-1:-1;;;14888:2:1;14873:18;;14866:34;14932:2;14917:18;;14614:327;78541:37:0;78610:5;;-1:-1:-1;;;;;78610:5:0;78589:28;78633:110;78692:5;;-1:-1:-1;;;;;78692:5:0;78678:10;:19;78669:37;;;;-1:-1:-1;;;78669:37:0;;;;;;14816:2:1;14798:21;;;14855:1;14835:18;;;14828:29;-1:-1:-1;;;14888:2:1;14873:18;;14866:34;14932:2;14917:18;;14614:327;78669:37:0;78733:1;78717:18;;-1:-1:-1;;;;;;78717:18:0;;;78633:110::o;78751:1074::-;78805:13;79065:11;79091:5;79100:1;79091:10;79087:53;;-1:-1:-1;;79118:10:0;;;;;;;;;;;;-1:-1:-1;;;79118:10:0;;;;;78751:1074;-1:-1:-1;78751:1074:0:o;79087:53::-;79357:13;;;79367:2;79357:13;;;;;;;;;79167:2;;79150:14;;79357:13;;;;;;;;;;;-1:-1:-1;79357:13:0;79335:35;;79381:176;79388:10;;79381:176;;79458:10;79466:2;79458:5;:10;:::i;:::-;79445:24;;:2;:24;:::i;:::-;79432:39;;79415:6;79422;79415:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;79415:56:0;;;;;;;;-1:-1:-1;79486:11:0;79495:2;79486:11;;:::i;:::-;;-1:-1:-1;79512:11:0;79522:1;79512:11;;:::i;:::-;;-1:-1:-1;79538:7:0;;;;:::i;:::-;;;;79381:176;;;79640:2;79628:15;;;79622:22;;79674:13;;;;79688:1;79670:20;79666:31;;;;79711:29;;79754:21;;;-1:-1:-1;79632:6:0;78751:1074;-1:-1:-1;;78751:1074:0:o;12779:905::-;13033:17;;;13047:2;13033:17;;;;;;;;;12956:13;;12981:12;;;;13033:17;;;;;;;;;;-1:-1:-1;13033:17:0;13004:46;;13066:8;13061:559;13084:15;:22;13080:1;:26;;;13061:559;;;13128:12;13188:15;13204:1;13188:18;;;;;;;;;;:::i;:::-;;;;;;;13171:36;;;;;;;;:::i;:::-;;;;-1:-1:-1;;13171:36:0;;;;;;;;;13143:65;;13171:36;13143:65;;;;13223:10;13236:16;;;:10;:16;;;;;;;13143:65;;-1:-1:-1;13236:16:0;13271:7;;;13267:53;;13299:5;;;;13267:53;13335:7;13344:9;13358:15;13370:2;13358:11;:15::i;:::-;-1:-1:-1;13406:21:0;;;;;;;:11;:21;;;;;13334:39;;-1:-1:-1;13334:39:0;;-1:-1:-1;13435:4:0;;13388:9;;13334:39;13406:24;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;13406:24:0;;13388:44;;13406:24;;;;;13388:44;;;;;;:::i;:::-;;;;;;;;;;:51;13463:10;13458:1;:15;;;;;;;;:::i;:::-;;13454:155;;13529:6;;;;13525:69;;13570:4;13560:14;;13525:69;13113:507;;;;13108:3;;;;;:::i;:::-;;;;13061:559;;;;13637:39;13642:9;13653:2;13657;13661:5;13668:7;13637:4;:39::i;:::-;13630:46;12779:905;-1:-1:-1;;;;;;;;12779:905:0:o;7199:231::-;7246:5;7295:15;;;:10;:15;;;;;;7246:5;;;;7325:9;;;7321:67;;7359:10;7371:1;7374;7351:25;;;;;;;;;7321:67;7405:17;7417:4;7405:11;:17::i;:::-;7398:24;;;;;;;7199:231;;;;;;:::o;14395:835::-;14649:17;;;14663:2;14649:17;;;;;;;;;14571:13;;14597:12;;;;14649:17;;;;;;;;;;-1:-1:-1;14649:17:0;14620:46;;14682:8;14677:489;14700:14;:21;14696:1;:25;;;14677:489;;;14743:10;14756;:29;14767:14;14782:1;14767:17;;;;;;;;;;:::i;:::-;;;;;;;14756:29;;;;;;;;;;;;14743:42;;14804:2;14810:1;14804:7;14800:53;;14832:5;;;14800:53;14868:7;14877:9;14891:15;14903:2;14891:11;:15::i;:::-;14867:39;;;;;14968:14;14983:1;14968:17;;;;;;;;;;:::i;:::-;;;;;;;14921:9;14939:11;:21;14951:8;14939:21;;;;;;;;;;;;;;;:24;14961:1;14939:24;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;14939:24:0;;14921:44;;14939:24;;;;;14921:44;;;;;;:::i;:::-;;;;;;;;;;:64;15009:10;15004:1;:15;;;;;;;;:::i;:::-;;15000:155;;15075:6;;;;15071:69;;15116:4;15106:14;;15071:69;14728:438;;;14723:3;;;;;:::i;:::-;;;;14677:489;;8045:1179;8211:11;8252:5;8235:23;;;;;;;;:::i;:::-;;;;-1:-1:-1;;8235:23:0;;;;;;;;;8225:34;;8235:23;8225:34;;;;8270:12;8285:15;;;:10;:15;;;;;;8225:34;;-1:-1:-1;8320:9:0;;8311:33;;;;-1:-1:-1;;;8311:33:0;;16259:2:1;8311:33:0;;;16241:21:1;16298:2;16278:18;;;16271:30;-1:-1:-1;;;16317:18:1;;;16310:40;16367:18;;8311:33:0;16057:334:1;8311:33:0;8373:2;8364:6;:11;;;8355:39;;;;-1:-1:-1;;;8355:39:0;;16598:2:1;8355:39:0;;;16580:21:1;16637:2;16617:18;;;16610:30;-1:-1:-1;;;16656:18:1;;;16649:44;16710:18;;8355:39:0;16396:338:1;8355:39:0;8446:1;8414:29;8430:6;8414;:29;:::i;:::-;:33;8405:54;;;;-1:-1:-1;;;8405:54:0;;16941:2:1;8405:54:0;;;16923:21:1;16980:1;16960:18;;;16953:29;-1:-1:-1;;;16998:18:1;;;16991:37;17045:18;;8405:54:0;16739:330:1;8405:54:0;8496:16;8479:33;;;8470:56;;;;-1:-1:-1;;;8470:56:0;;17276:2:1;8470:56:0;;;17258:21:1;17315:1;17295:18;;;17288:29;-1:-1:-1;;;17333:18:1;;;17326:39;17382:18;;8470:56:0;17074:332:1;8470:56:0;8563:16;8546:33;;;8537:56;;;;-1:-1:-1;;;8537:56:0;;17613:2:1;8537:56:0;;;17595:21:1;17652:1;17632:18;;;17625:29;-1:-1:-1;;;17670:18:1;;;17663:39;17719:18;;8537:56:0;17411:332:1;8537:56:0;8608:9;;;;:30;;;;-1:-1:-1;8621:17:0;;;8608:30;:51;;;;-1:-1:-1;8642:17:0;;;8608:51;8604:126;;;8676:42;;-1:-1:-1;;;8676:42:0;;17950:2:1;8676:42:0;;;17932:21:1;;;17969:18;;;17962:30;18028:34;18008:18;;;18001:62;18080:18;;8676:42:0;17748:356:1;8604:126:0;8744:17;;8740:132;;8787:20;8800:6;;8787:12;:20::i;:::-;8778:47;;;;-1:-1:-1;;;8778:47:0;;18311:2:1;8778:47:0;;;18293:21:1;18350:2;18330:18;;;18323:30;-1:-1:-1;;;18369:18:1;;;18362:43;18422:18;;8778:47:0;18109:337:1;8778:47:0;8840:11;;;;:6;:11;;;;;:20;8854:6;;8840:11;:20;:::i;:::-;;8740:132;8886:17;;8882:132;;8929:20;8942:6;;8929:12;:20::i;:::-;8920:47;;;;-1:-1:-1;;;8920:47:0;;20705:2:1;8920:47:0;;;20687:21:1;20744:2;20724:18;;;20717:30;-1:-1:-1;;;20763:18:1;;;20756:43;20816:18;;8920:47:0;20503:337:1;8920:47:0;8982:11;;;;:6;:11;;;;;:20;8996:6;;8982:11;:20;:::i;:::-;;8882:132;6606:15;;;6658:1;6643:16;;;;;6642:28;6732:2;6717:17;;;;;6716:29;9024:15;;;;:10;:15;;;;;;;;:81;;;;9122:6;;;;;;;;;;;9116:13;;:5;:13;;;;;;;:19;;;9156:8;;;;;;;;;;;;;-1:-1:-1;;9156:8:0;;;;;;;;9181:35;;;;;;9190:10;;9202:6;;;;9210:5;;9181:35;:::i;:::-;;;;;;;;8200:1024;;8045:1179;;;;;;:::o;5450:609::-;5537:14;5553:6;5572:18;5605:6;-1:-1:-1;;;;;5593:19:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;5593:19:0;;;;;;;;;;;;;;;;;5572:40;;5623:398;5630:11;;5623:398;;5658:9;5670:5;5658:9;5702:1;5683:16;5693:6;5683:7;:16;:::i;:::-;:20;;;;:::i;:::-;5670:35;;;;;;;;;;;;;;;;-1:-1:-1;5670:35:0;;;;5735:13;;;:10;:13;;;;;5670:35;;-1:-1:-1;5767:8:0;;5763:224;;5797:7;5810:17;5822:4;5810:11;:17::i;:::-;-1:-1:-1;;5869:9:0;;;;:6;:9;;;;;5846:32;;5796:31;;-1:-1:-1;5869:9:0;5846:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:3;5857:1;5850:6;:8;;;;:::i;:::-;5846:13;;;;;;;;:::i;:::-;;;;;;;:20;;:32;;;;5920:6;:9;5927:1;5920:9;;;;;;;;;;;5897:32;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:3;5908:1;5901:6;:8;;;;:::i;:::-;5897:13;;;;;;;;:::i;:::-;;;;;;;;;;;;:20;:32;5970:1;5948:3;5952:8;5959:1;5952:6;:8;:::i;:::-;5948:13;;;;;;;;:::i;:::-;;;;;;;:19;;:23;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;5763:224:0;6001:8;;;;:::i;:::-;;;;5643:378;;5623:398;;;6044:6;;6039:3;;-1:-1:-1;6044:6:0;;;;;;-1:-1:-1;5450:609:0;;;;;;:::o;16868:1217::-;17268:27;;-1:-1:-1;;;17268:27:0;;;;;7751:25:1;;;17037:13:0;;17179:42;;17151:13;;17179:42;;17268:17;;7724:18:1;;17268:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17268:27:0;;;;;;;;;;;;:::i;:::-;17358:17;;;17372:2;17358:17;;;;;;;;;17233:62;;-1:-1:-1;17306:12:0;;;;17358:17;;;;;;;;;;-1:-1:-1;17358:17:0;17329:46;;17391:8;17386:635;17409:1;17405;:5;;;17386:635;;;17442:15;17458:1;17442:18;;;;;;;;;:::i;:::-;;;;;17436:32;17432:83;17494:5;17432:83;17529:12;17589:15;17605:1;17589:18;;;;;;;;;:::i;:::-;;;;;17572:36;;;;;;;;:::i;:::-;;;;-1:-1:-1;;17572:36:0;;;;;;;;;17544:65;;17572:36;17544:65;;;;17624:10;17637:16;;;:10;:16;;;;;;;17544:65;;-1:-1:-1;17637:16:0;17672:7;;;17668:53;;17700:5;;;;17668:53;17736:7;17745:9;17759:15;17771:2;17759:11;:15::i;:::-;-1:-1:-1;17807:21:0;;;;;;;:11;:21;;;;;17735:39;;-1:-1:-1;17735:39:0;;-1:-1:-1;17836:4:0;;17789:9;;17735:39;17807:24;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;17807:24:0;;17789:44;;17807:24;;;;;17789:44;;;;;;:::i;:::-;;;;;;;;;;:51;17864:10;17859:1;:15;;;;;;;;:::i;:::-;;17855:155;;17930:6;;;;17926:69;;17971:4;17961:14;;17926:69;17417:604;;;;17412:3;;;;;:::i;:::-;;;;17386:635;;;;18038:39;18043:9;18054:2;18058;18062:5;18069:7;18038:4;:39::i;:::-;18031:46;16868:1217;-1:-1:-1;;;;;;;;;;16868:1217:0:o;6873:271::-;6931:5;6938:6;6946;6965:11;6991:5;6979:19;;;;;;;;;;:::i;:::-;6965:33;7027:23;7049:1;7027:23;;;;;;7102:2;7080:24;;;-1:-1:-1;6965:33:0;-1:-1:-1;;;6873:271:0:o;18872:1142::-;19035:13;19061:14;19084:15;19093:5;19084:15;;:8;:15::i;:::-;19061:39;;19111:44;-1:-1:-1;;;;;;;;;;;;;;19111:44:0;19166:34;19180:7;;;;;;;;;;;;;;;;;19189:1;19192:7;;;;;;;;;;;;;-1:-1:-1;;;19192:7:0;;;19166:6;:13;;:34;;;;;;:::i;:::-;;19211:46;19225:1;19228:7;;;;;;;;;;;;;-1:-1:-1;;;19228:7:0;;;19243:12;19252:2;19243:12;;:8;:12::i;:::-;19211:6;;:46;;:13;:46::i;:::-;;19268:52;19282:7;;;;;;;;;;;;;-1:-1:-1;;;19282:7:0;;;19297:12;19306:2;19297:12;;:8;:12::i;:::-;19312:7;;;;;;;;;;;;;;;;;19268:6;;:52;;:13;:52::i;:::-;;19336:9;19331:610;19355:2;19351:1;:6;19331:610;;;19383:5;19389:1;19383:8;;;;;;;;:::i;:::-;;;;;;;19395:3;19383:15;;;19379:64;19419:8;19379:64;19460:9;19471;19484:14;19489:5;19495:1;19489:8;;;;;;;;:::i;:::-;;;;;;;19484:4;:14::i;:::-;19457:41;;;;;19517:7;19513:417;;;19549:2;:7;;19555:1;19549:7;19545:75;;19581:8;;;;19545:75;19638:71;19652:8;;;;;;;;;;;;;;;;;19668:31;19682:6;:16;19689:5;19695:1;19689:8;;;;;;;;:::i;:::-;;;;;;;19682:16;;;;;;;;;;;19668:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:13;:31::i;:::-;19702:6;;;;;;;;;;;;-1:-1:-1;;;19702:6:0;;;;19638;;:71;;:13;:71::i;:::-;;19513:417;;;19754:2;:7;;19760:1;19754:7;19750:75;;19786:8;;;;19750:75;19843:71;19857:8;;;;;;;;;;;;;;;;;19873:31;19887:6;:16;19894:5;19900:1;19894:8;;;;;;;;:::i;19843:71::-;;19513:417;19364:577;;19331:610;19359:3;;;;:::i;:::-;;;;19331:610;;;-1:-1:-1;19965:3:0;;;;;;;;;;;;-1:-1:-1;;;19965:3:0;;;;19951:18;;:6;;:13;:18::i;:::-;-1:-1:-1;19994:11:0;;18872:1142;-1:-1:-1;;;;;;;18872:1142:0:o;9421:2776::-;9488:4;9541:1;9526:16;;9522:61;;;-1:-1:-1;9566:5:0;9559:12;;9522:61;9618:26;;;;;;;;;;;;-1:-1:-1;;;9618:26:0;;;;9593:22;9691:143;9704:1;9698:3;:7;9691:143;;;9740:9;9750:3;9740:14;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;9740:14:0;9726:5;;9732:3;9726:10;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;9726:28:0;;;9722:81;;9782:5;9775:12;;;;;;9722:81;9817:5;;9691:143;;;9844:14;9869:2280;10157:2;10143:5;;10149:3;10143:10;;;;;;;:::i;:::-;;;;;;;;10130:29;;;;-1:-1:-1;10108:2:0;10092:5;;10102:1;10098:5;;10092:12;;;;;;;:::i;:::-;;;;;;;;10079:31;;;;-1:-1:-1;10062:1:0;10046:5;;10056:1;10052:5;;10046:12;;;;;;;:::i;:::-;;;;;;;;10033:30;;;;-1:-1:-1;10003:5:0;;10013:1;10009:5;;10003:12;;;;;;;:::i;:::-;;;;;;;;;9997:19;;9990:27;;:73;:120;:169;9973:187;;10182:1;10175:8;;;;-1:-1:-1;;;;;;;;10220:25:0;;:5;;10226:3;10220:10;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;10220:25:0;;;:73;;;;-1:-1:-1;;;;10266:5:0;;10276:1;10272:5;;10266:12;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;10266:27:0;;;10220:73;:121;;;;-1:-1:-1;;;;10314:5:0;;10324:1;10320:5;;10314:12;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;10314:27:0;;;10220:121;:169;;;;-1:-1:-1;;;;10362:5:0;;10372:1;10368:5;;10362:12;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;10362:27:0;;;10220:169;10198:1859;;;10615:2;10599:5;;10605:3;10609:1;10605:5;10599:12;;;;;;;:::i;:::-;;;;;;;;10586:31;;;;-1:-1:-1;10560:2:0;10544:5;;10554:1;10550:5;;10544:12;;;;;;;:::i;:::-;;;;;;;;10531:31;;;;-1:-1:-1;10510:1:0;10494:5;;10504:1;10500:5;;10494:12;;;;;;;:::i;:::-;;;;;;;;10481:30;;;;-1:-1:-1;10447:5:0;;10457:1;10453:5;;10447:12;;;;;;;:::i;:::-;;;;;;;;;10441:19;;10434:27;;:77;:128;:183;10422:196;;:2;:196;10418:281;;10674:5;10667:12;;;;;;;10418:281;10916:2;10900:5;;10906:3;10910:1;10906:5;10900:12;;;;;;;:::i;:::-;;;;;;;;10887:31;;;;-1:-1:-1;10861:2:0;10845:5;;10855:1;10851:5;;10845:12;;;;;;;:::i;:::-;;;;;;;;10832:31;;;;-1:-1:-1;10811:1:0;10794:5;;10804:2;10800:6;;10794:13;;;;;;;:::i;:::-;;;;;;;;10781:31;;;;-1:-1:-1;10746:5:0;;10756:2;10752:6;;10746:13;;;;;;;:::i;:::-;;;;;;;;;10740:20;;10733:28;;:79;:130;:185;10721:198;;:2;:198;10717:284;;10976:5;10969:12;;;;;;;10717:284;10198:1859;;;-1:-1:-1;;;11044:5:0;;11050:3;11044:10;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11044:25:0;;;:73;;;;-1:-1:-1;;;;11090:5:0;;11100:1;11096:5;;11090:12;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11090:27:0;;;11044:73;:121;;;;-1:-1:-1;;;;11138:5:0;;11148:1;11144:5;;11138:12;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11138:27:0;;;11044:121;:169;;;;-1:-1:-1;;;;11186:5:0;;11196:1;11192:5;;11186:12;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11186:27:0;;;11044:169;11022:1035;;-1:-1:-1;;;11268:5:0;;11274:3;11268:10;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11268:25:0;;;:73;;;;-1:-1:-1;;;;11314:5:0;;11324:1;11320:5;;11314:12;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11314:27:0;;;11268:73;:121;;;;-1:-1:-1;;;;11362:5:0;;11372:1;11368:5;;11362:12;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11362:27:0;;;11268:121;:169;;;;-1:-1:-1;;;;11410:5:0;;11420:1;11416:5;;11410:12;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11410:27:0;;;11268:169;11246:811;;-1:-1:-1;;;11492:5:0;;11498:3;11492:10;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11492:25:0;;;:73;;;;-1:-1:-1;;;;11538:5:0;;11548:1;11544:5;;11538:12;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11538:27:0;;;11492:73;:121;;;;-1:-1:-1;;;;11586:5:0;;11596:1;11592:5;;11586:12;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11586:27:0;;;11492:121;:169;;;;-1:-1:-1;;;;11634:5:0;;11644:1;11640:5;;11634:12;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11634:27:0;;;11492:169;11470:587;;-1:-1:-1;;;11716:5:0;;11722:3;11716:10;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11716:25:0;;;:73;;;;-1:-1:-1;;;;11762:5:0;;11772:1;11768:5;;11762:12;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11762:27:0;;;11716:73;:121;;;;-1:-1:-1;;;;11810:5:0;;11820:1;11816:5;;11810:12;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11810:27:0;;;11716:121;:169;;;;-1:-1:-1;;;;11858:5:0;;11868:1;11864:5;;11858:12;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11858:27:0;;;11716:169;11694:363;;;11922:4;11915:11;;;;;;;11694:363;12036:5;12029:12;;;;;;;11694:363;12091:8;12087:13;;12078:1;:23;12104:1;12078:27;12071:34;;;;9869:2280;;9421:2776;;;;;:::o;88512:270::-;-1:-1:-1;;;;;;;;;;;;88723:51:0;88730:36;88737:21;88744:6;88752:5;88737:6;:21::i;:::-;88760:5;88730:6;:36::i;:::-;88768:5;88723:6;:51::i;:::-;88716:58;88512:270;-1:-1:-1;;;;;88512:270:0:o;80309:3043::-;80367:13;80604:4;:11;80619:1;80604:16;80600:31;;-1:-1:-1;;80622:9:0;;;;;;;;;-1:-1:-1;80622:9:0;;;80309:3043::o;80600:31::-;80684:19;80706:6;;;;;;;;;;;;;;;;;80684:28;;81123:20;81182:1;81163:4;:11;81177:1;81163:15;;;;:::i;:::-;81162:21;;;;:::i;:::-;81157:27;;:1;:27;:::i;:::-;-1:-1:-1;;;;;81146:39:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;81146:39:0;;81123:62;;81361:1;81354:5;81350:13;81461:2;81453:6;81449:15;81568:4;81620;81614:11;81608:4;81604:22;81530:1400;81654:6;81645:7;81642:19;81530:1400;;;81756:1;81747:7;81743:15;81732:26;;81795:7;81789:14;82420:4;82412:5;82408:2;82404:14;82400:25;82390:8;82386:40;82380:47;82369:9;82361:67;82474:1;82463:9;82459:17;82446:30;;82566:4;82558:5;82554:2;82550:14;82546:25;82536:8;82532:40;82526:47;82515:9;82507:67;82620:1;82609:9;82605:17;82592:30;;82711:4;82703:5;82700:1;82696:13;82692:24;82682:8;82678:39;82672:46;82661:9;82653:66;82765:1;82754:9;82750:17;82737:30;;82848:4;82841:5;82837:16;82827:8;82823:31;82817:38;82806:9;82798:58;;82902:1;82891:9;82887:17;82874:30;;81530:1400;;;81534:107;;83084:1;83077:4;83071:11;83067:19;83105:1;83100:123;;;;83242:1;83237:73;;;;83060:250;;83100:123;83153:4;83149:1;83138:9;83134:17;83126:32;83203:4;83199:1;83188:9;83184:17;83176:32;83100:123;;83237:73;83290:4;83286:1;83275:9;83271:17;83263:32;83060:250;-1:-1:-1;83338:6:0;;80309:3043;-1:-1:-1;;;;;80309:3043:0:o;83874:4133::-;-1:-1:-1;;;;;;;;;;;;84091:4:0;84085:11;84082:3883;;;84129:2;84125:7;84174:6;84168:13;84229:10;84223:17;84302:16;84295:4;84289:11;84285:34;84569:16;84641:1;84629:10;84625:18;84619:25;84812:5;84802:8;84798:20;84791:28;84783:5;84773:8;84769:20;84765:55;84753:67;;85292:8;85271:19;85268:33;85254:2007;;85637:1;85631:2;85609:19;85599:8;85596:33;85592:42;85582:8;85578:57;85574:65;85794:8;85788:4;85784:19;85772:10;85768:36;85761:4;85755:11;85752:53;85742:1190;;85957:4;85950;85944:11;85940:22;86077:11;86071:4;86067:22;86052:13;86048:42;86042:4;86035:56;86183:13;86175:6;86168:29;86342:1;86337:2;86319:16;86315:25;86311:33;86296:285;86419:18;;;86413:25;86390:21;;;86383:56;86474:9;;86532:22;86296:285;86532:22;-1:-1:-1;86737:23:0;;;86714:21;;;86707:54;86718:13;-1:-1:-1;86904:5:0;;85742:1190;87032:11;87026:4;87022:22;87010:10;87006:39;87000:4;86993:53;87202:11;87195:5;87191:23;87187:1;87175:10;87171:18;87164:51;;85254:2007;-1:-1:-1;;87505:11:0;;87372:33;;;;87518:2;87501:20;87497:28;;87482:235;87585:12;;;87579:19;87563:14;;;87556:43;87626:9;;87676:22;87482:235;87676:22;-1:-1:-1;87842:1:0;87793:47;;;87813:4;87793:47;87786:58;87911:39;;;-1:-1:-1;;84082:3883:0;-1:-1:-1;87993:6:0;;83874:4133;-1:-1:-1;83874:4133:0:o;14:370:1:-;80:8;90:6;144:3;137:4;129:6;125:17;121:27;111:55;;162:1;159;152:12;111:55;-1:-1:-1;185:20:1;;-1:-1:-1;;;;;217:30:1;;214:50;;;260:1;257;250:12;214:50;297:4;289:6;285:17;273:29;;357:3;350:4;340:6;337:1;333:14;325:6;321:27;317:38;314:47;311:67;;;374:1;371;364:12;389:448;483:6;491;544:2;532:9;523:7;519:23;515:32;512:52;;;560:1;557;550:12;512:52;600:9;587:23;-1:-1:-1;;;;;625:6:1;622:30;619:50;;;665:1;662;655:12;619:50;704:73;769:7;760:6;749:9;745:22;704:73;:::i;:::-;796:8;;678:99;;-1:-1:-1;389:448:1;-1:-1:-1;;;;389:448:1:o;842:180::-;901:6;954:2;942:9;933:7;929:23;925:32;922:52;;;970:1;967;960:12;922:52;-1:-1:-1;993:23:1;;842:180;-1:-1:-1;842:180:1:o;1027:250::-;1112:1;1122:113;1136:6;1133:1;1130:13;1122:113;;;1212:11;;;1206:18;1193:11;;;1186:39;1158:2;1151:10;1122:113;;;-1:-1:-1;;1269:1:1;1251:16;;1244:27;1027:250::o;1282:270::-;1323:3;1361:5;1355:12;1388:6;1383:3;1376:19;1404:76;1473:6;1466:4;1461:3;1457:14;1450:4;1443:5;1439:16;1404:76;:::i;:::-;1534:2;1513:15;-1:-1:-1;;1509:29:1;1500:39;;;;1541:4;1496:50;;1282:270;-1:-1:-1;;1282:270:1:o;1557:217::-;1704:2;1693:9;1686:21;1667:4;1724:44;1764:2;1753:9;1749:18;1741:6;1724:44;:::i;:::-;1716:52;1557:217;-1:-1:-1;;;1557:217:1:o;1964:127::-;2025:10;2020:3;2016:20;2013:1;2006:31;2056:4;2053:1;2046:15;2080:4;2077:1;2070:15;2096:234;2173:2;2166:5;2163:13;2153:144;;2219:10;2214:3;2210:20;2207:1;2200:31;2254:4;2251:1;2244:15;2282:4;2279:1;2272:15;2153:144;2306:18;;2096:234::o;2335:198::-;2475:2;2460:18;;2487:40;2464:9;2509:6;2487:40;:::i;2538:159::-;2605:20;;2665:6;2654:18;;2644:29;;2634:57;;2687:1;2684;2677:12;2634:57;2538:159;;;:::o;2702:163::-;2769:20;;2829:10;2818:22;;2808:33;;2798:61;;2855:1;2852;2845:12;2870:729;2987:6;2995;3003;3011;3019;3027;3080:3;3068:9;3059:7;3055:23;3051:33;3048:53;;;3097:1;3094;3087:12;3048:53;3137:9;3124:23;-1:-1:-1;;;;;3162:6:1;3159:30;3156:50;;;3202:1;3199;3192:12;3156:50;3241:73;3306:7;3297:6;3286:9;3282:22;3241:73;:::i;:::-;3333:8;;-1:-1:-1;3215:99:1;-1:-1:-1;3387:37:1;;-1:-1:-1;3420:2:1;3405:18;;3387:37;:::i;:::-;3377:47;;3443:37;3476:2;3465:9;3461:18;3443:37;:::i;:::-;3433:47;;3499:37;3532:2;3521:9;3517:18;3499:37;:::i;:::-;3489:47;;3555:38;3588:3;3577:9;3573:19;3555:38;:::i;:::-;3545:48;;2870:729;;;;;;;;:::o;4124:127::-;4185:10;4180:3;4176:20;4173:1;4166:31;4216:4;4213:1;4206:15;4240:4;4237:1;4230:15;4256:252;4328:2;4322:9;4370:3;4358:16;;-1:-1:-1;;;;;4389:34:1;;4425:22;;;4386:62;4383:88;;;4451:18;;:::i;:::-;4487:2;4480:22;4256:252;:::o;4513:275::-;4584:2;4578:9;4649:2;4630:13;;-1:-1:-1;;4626:27:1;4614:40;;-1:-1:-1;;;;;4669:34:1;;4705:22;;;4666:62;4663:88;;;4731:18;;:::i;:::-;4767:2;4760:22;4513:275;;-1:-1:-1;4513:275:1:o;4793:182::-;4852:4;-1:-1:-1;;;;;4877:6:1;4874:30;4871:56;;;4907:18;;:::i;:::-;-1:-1:-1;4952:1:1;4948:14;4964:4;4944:25;;4793:182::o;4980:187::-;5029:4;-1:-1:-1;;;;;5054:6:1;5051:30;5048:56;;;5084:18;;:::i;:::-;-1:-1:-1;5150:2:1;5129:15;-1:-1:-1;;5125:29:1;5156:4;5121:40;;4980:187::o;5172:464::-;5215:5;5268:3;5261:4;5253:6;5249:17;5245:27;5235:55;;5286:1;5283;5276:12;5235:55;5322:6;5309:20;5353:49;5369:32;5398:2;5369:32;:::i;:::-;5353:49;:::i;:::-;5427:2;5418:7;5411:19;5473:3;5466:4;5461:2;5453:6;5449:15;5445:26;5442:35;5439:55;;;5490:1;5487;5480:12;5439:55;5555:2;5548:4;5540:6;5536:17;5529:4;5520:7;5516:18;5503:55;5603:1;5578:16;;;5596:4;5574:27;5567:38;;;;5582:7;5172:464;-1:-1:-1;;;5172:464:1:o;5641:1424::-;5767:6;5775;5783;5791;5799;5852:3;5840:9;5831:7;5827:23;5823:33;5820:53;;;5869:1;5866;5859:12;5820:53;5909:9;5896:23;-1:-1:-1;;;;;5979:2:1;5971:6;5968:14;5965:34;;;5995:1;5992;5985:12;5965:34;6033:6;6022:9;6018:22;6008:32;;6078:7;6071:4;6067:2;6063:13;6059:27;6049:55;;6100:1;6097;6090:12;6049:55;6136:2;6123:16;6158:4;6182:59;6198:42;6237:2;6198:42;:::i;6182:59::-;6275:15;;;6357:1;6353:10;;;;6345:19;;6341:28;;;6306:12;;;;6381:19;;;6378:39;;;6413:1;6410;6403:12;6378:39;6445:2;6441;6437:11;6457:353;6473:6;6468:3;6465:15;6457:353;;;6559:3;6546:17;6595:2;6582:11;6579:19;6576:109;;;6639:1;6668:2;6664;6657:14;6576:109;6710:57;6759:7;6754:2;6740:11;6736:2;6732:20;6728:29;6710:57;:::i;:::-;6698:70;;-1:-1:-1;6788:12:1;;;;6490;;6457:353;;;-1:-1:-1;6829:5:1;-1:-1:-1;6853:37:1;;-1:-1:-1;6871:18:1;;;6853:37;:::i;:::-;6843:47;;;;;;6909:37;6942:2;6931:9;6927:18;6909:37;:::i;:::-;6899:47;;6965:37;6998:2;6987:9;6983:18;6965:37;:::i;:::-;6955:47;;7021:38;7054:3;7043:9;7039:19;7021:38;:::i;:::-;7011:48;;5641:1424;;;;;;;;:::o;7070:337::-;7145:6;7153;7206:2;7194:9;7185:7;7181:23;7177:32;7174:52;;;7222:1;7219;7212:12;7174:52;7245:28;7263:9;7245:28;:::i;:::-;7235:38;;7323:2;7312:9;7308:18;7295:32;7356:2;7349:5;7346:13;7336:41;;7373:1;7370;7363:12;7336:41;7396:5;7386:15;;;7070:337;;;;;:::o;7787:379::-;7979:2;7964:18;;7991:40;7968:9;8013:6;7991:40;:::i;:::-;8050:6;8104:2;8096:6;8092:15;8087:2;8076:9;8072:18;8065:43;8156:2;8148:6;8144:15;8139:2;8128:9;8124:18;8117:43;;7787:379;;;;;;:::o;8171:1182::-;8287:6;8295;8303;8311;8319;8372:3;8360:9;8351:7;8347:23;8343:33;8340:53;;;8389:1;8386;8379:12;8340:53;8429:9;8416:23;-1:-1:-1;;;;;8454:6:1;8451:30;8448:50;;;8494:1;8491;8484:12;8448:50;8517:22;;8570:4;8562:13;;8558:27;-1:-1:-1;8548:55:1;;8599:1;8596;8589:12;8548:55;8635:2;8622:16;8657:4;8681:59;8697:42;8736:2;8697:42;:::i;8681:59::-;8774:15;;;8856:1;8852:10;;;;8844:19;;8840:28;;;8805:12;;;;8880:19;;;8877:39;;;8912:1;8909;8902:12;8877:39;8936:11;;;;8956:142;8972:6;8967:3;8964:15;8956:142;;;9038:17;;9026:30;;8989:12;;;;9076;;;;8956:142;;;9117:5;-1:-1:-1;9141:37:1;;-1:-1:-1;9159:18:1;;;9141:37;:::i;:::-;9131:47;;;;;9197:37;9230:2;9219:9;9215:18;9197:37;:::i;9358:184::-;9416:6;9469:2;9457:9;9448:7;9444:23;9440:32;9437:52;;;9485:1;9482;9475:12;9437:52;9508:28;9526:9;9508:28;:::i;9729:347::-;9780:8;9790:6;9844:3;9837:4;9829:6;9825:17;9821:27;9811:55;;9862:1;9859;9852:12;9811:55;-1:-1:-1;9885:20:1;;-1:-1:-1;;;;;9917:30:1;;9914:50;;;9960:1;9957;9950:12;9914:50;9997:4;9989:6;9985:17;9973:29;;10049:3;10042:4;10033:6;10025;10021:19;10017:30;10014:39;10011:59;;;10066:1;10063;10056:12;10081:1075;10197:6;10205;10213;10221;10229;10237;10290:3;10278:9;10269:7;10265:23;10261:33;10258:53;;;10307:1;10304;10297:12;10258:53;10347:9;10334:23;-1:-1:-1;;;;;10417:2:1;10409:6;10406:14;10403:34;;;10433:1;10430;10423:12;10403:34;10472:58;10522:7;10513:6;10502:9;10498:22;10472:58;:::i;:::-;10549:8;;-1:-1:-1;10446:84:1;-1:-1:-1;10637:2:1;10622:18;;10609:32;;-1:-1:-1;10653:16:1;;;10650:36;;;10682:1;10679;10672:12;10650:36;10721:60;10773:7;10762:8;10751:9;10747:24;10721:60;:::i;:::-;10800:8;;-1:-1:-1;10695:86:1;-1:-1:-1;10885:2:1;10870:18;;10857:32;;-1:-1:-1;10929:4:1;10918:16;;10908:27;;10898:55;;10949:1;10946;10939:12;10898:55;10972:5;;-1:-1:-1;11030:2:1;11015:18;;11002:32;;11046:16;;;11043:36;;;11075:1;11072;11065:12;11043:36;;11098:52;11142:7;11131:8;11120:9;11116:24;11098:52;:::i;:::-;11088:62;;;10081:1075;;;;;;;;:::o;11161:248::-;11229:6;11237;11290:2;11278:9;11269:7;11265:23;11261:32;11258:52;;;11306:1;11303;11296:12;11258:52;-1:-1:-1;;11329:23:1;;;11399:2;11384:18;;;11371:32;;-1:-1:-1;11161:248:1:o;11414:1313::-;11624:4;11653:2;11693;11682:9;11678:18;11723:2;11712:9;11705:21;11746:6;11781;11775:13;11812:6;11804;11797:22;11838:2;11828:12;;11871:2;11860:9;11856:18;11849:25;;11933:2;11923:6;11920:1;11916:14;11905:9;11901:30;11897:39;11955:4;11994:2;11986:6;11982:15;12015:1;12025:619;12039:6;12036:1;12033:13;12025:619;;;12132:2;12128:7;12116:9;12108:6;12104:22;12100:36;12095:3;12088:49;12166:6;12160:13;12186:40;12219:6;12214:2;12208:9;12186:40;:::i;:::-;12273:2;12269;12265:11;12259:18;12314:2;12309;12301:6;12297:15;12290:27;12344:47;12387:2;12379:6;12375:15;12361:12;12344:47;:::i;:::-;12432:11;;;12426:18;12481:19;;;12464:15;;;12457:44;12426:18;12330:61;-1:-1:-1;12524:40:1;12330:61;12426:18;12524:40;:::i;:::-;12622:12;;;;12514:50;-1:-1:-1;;;12587:15:1;;;;12061:1;12054:9;12025:619;;;12029:3;;12661:6;12653:14;;12676:45;12717:2;12706:9;12702:18;12694:6;3904:10;3893:22;3881:35;;3828:94;12676:45;;;;;;;11414:1313;;;;;:::o;12732:470::-;12823:6;12831;12839;12847;12855;12908:3;12896:9;12887:7;12883:23;12879:33;12876:53;;;12925:1;12922;12915:12;12876:53;12961:9;12948:23;12938:33;;12990:37;13023:2;13012:9;13008:18;12990:37;:::i;:::-;12980:47;;13046:37;13079:2;13068:9;13064:18;13046:37;:::i;13557:127::-;13618:10;13613:3;13609:20;13606:1;13599:31;13649:4;13646:1;13639:15;13673:4;13670:1;13663:15;13689:197;13727:3;13755:6;13796:2;13789:5;13785:14;13823:2;13814:7;13811:15;13808:41;;13829:18;;:::i;:::-;13878:1;13865:15;;13689:197;-1:-1:-1;;;13689:197:1:o;13891:201::-;13929:3;13957:10;14002:2;13995:5;13991:14;14029:2;14020:7;14017:15;14014:41;;14035:18;;:::i;14097:380::-;14176:1;14172:12;;;;14219;;;14240:61;;14294:4;14286:6;14282:17;14272:27;;14240:61;14347:2;14339:6;14336:14;14316:18;14313:38;14310:161;;14393:10;14388:3;14384:20;14381:1;14374:31;14428:4;14425:1;14418:15;14456:4;14453:1;14446:15;14310:161;;14097:380;;;:::o;14482:127::-;14543:10;14538:3;14534:20;14531:1;14524:31;14574:4;14571:1;14564:15;14598:4;14595:1;14588:15;14946:127;15007:10;15002:3;14998:20;14995:1;14988:31;15038:4;15035:1;15028:15;15062:4;15059:1;15052:15;15078:112;15110:1;15136;15126:35;;15141:18;;:::i;:::-;-1:-1:-1;15175:9:1;;15078:112::o;15195:125::-;15260:9;;;15281:10;;;15278:36;;;15294:18;;:::i;15325:120::-;15365:1;15391;15381:35;;15396:18;;:::i;:::-;-1:-1:-1;15430:9:1;;15325:120::o;15450:128::-;15517:9;;;15538:11;;;15535:37;;;15552:18;;:::i;15583:175::-;15620:3;15664:4;15657:5;15653:16;15693:4;15684:7;15681:17;15678:43;;15701:18;;:::i;:::-;15750:1;15737:15;;15583:175;-1:-1:-1;;15583:175:1:o;15763:289::-;15894:3;15932:6;15926:13;15948:66;16007:6;16002:3;15995:4;15987:6;15983:17;15948:66;:::i;:::-;16030:16;;;;;15763:289;-1:-1:-1;;15763:289:1:o;18576:544::-;18677:2;18672:3;18669:11;18666:448;;;18713:1;18738:5;18734:2;18727:17;18783:4;18779:2;18769:19;18853:2;18841:10;18837:19;18834:1;18830:27;18824:4;18820:38;18889:4;18877:10;18874:20;18871:47;;;-1:-1:-1;18912:4:1;18871:47;18967:2;18962:3;18958:12;18955:1;18951:20;18945:4;18941:31;18931:41;;19022:82;19040:2;19033:5;19030:13;19022:82;;;19085:17;;;19066:1;19055:13;19022:82;;;19026:3;;;18666:448;18576:544;;;:::o;19296:1202::-;-1:-1:-1;;;;;19413:3:1;19410:27;19407:53;;;19440:18;;:::i;:::-;19469:93;19558:3;19518:38;19550:4;19544:11;19518:38;:::i;:::-;19512:4;19469:93;:::i;:::-;19588:1;19613:2;19608:3;19605:11;19630:1;19625:615;;;;20284:1;20301:3;20298:93;;;-1:-1:-1;20357:19:1;;;20344:33;20298:93;-1:-1:-1;;19253:1:1;19249:11;;;19245:24;19241:29;19231:40;19277:1;19273:11;;;19228:57;20404:78;;19598:894;;19625:615;18523:1;18516:14;;;18560:4;18547:18;;-1:-1:-1;;19661:17:1;;;19761:9;19783:229;19797:7;19794:1;19791:14;19783:229;;;19886:19;;;19873:33;19858:49;;19993:4;19978:20;;;;19946:1;19934:14;;;;19813:12;19783:229;;;19787:3;20040;20031:7;20028:16;20025:159;;;20164:1;20160:6;20154:3;20148;20145:1;20141:11;20137:21;20133:34;20129:39;20116:9;20111:3;20107:19;20094:33;20090:79;20082:6;20075:95;20025:159;;;20227:1;20221:3;20218:1;20214:11;20210:19;20204:4;20197:33;19598:894;;;19296:1202;;;:::o;20845:402::-;-1:-1:-1;;;;;21048:32:1;;21030:51;;21129:10;21117:23;;21112:2;21097:18;;21090:51;21177:2;21172;21157:18;;21150:30;;;-1:-1:-1;;21197:44:1;;21222:18;;21214:6;21197:44;:::i;21252:136::-;21291:3;21319:5;21309:39;;21328:18;;:::i;:::-;-1:-1:-1;;;21364:18:1;;21252:136::o;21393:1479::-;21496:6;21527:2;21570;21558:9;21549:7;21545:23;21541:32;21538:52;;;21586:1;21583;21576:12;21538:52;21619:9;21613:16;-1:-1:-1;;;;;21689:2:1;21681:6;21678:14;21675:34;;;21705:1;21702;21695:12;21675:34;21743:6;21732:9;21728:22;21718:32;;21769:4;21809:7;21804:2;21800;21796:11;21792:25;21782:53;;21831:1;21828;21821:12;21782:53;21855:22;;:::i;:::-;21899:3;21933;21929:2;21925:12;21960:7;21952:6;21949:19;21946:39;;;21981:1;21978;21971:12;21946:39;22005:2;22016:826;22032:6;22027:3;22024:15;22016:826;;;22111:3;22105:10;22147:2;22134:11;22131:19;22128:109;;;22191:1;22220:2;22216;22209:14;22128:109;22260:20;;22307:11;;;22303:25;-1:-1:-1;22293:123:1;;22370:1;22399:2;22395;22388:14;22293:123;22445:2;22439:9;22474:49;22490:32;22519:2;22490:32;:::i;22474:49::-;22550:2;22543:5;22536:17;22594:7;22589:2;22584;22580;22576:11;22572:20;22569:33;22566:123;;;22643:1;22672:2;22668;22661:14;22566:123;22702:67;22766:2;22761;22754:5;22750:14;22745:2;22741;22737:11;22702:67;:::i;:::-;22782:18;;-1:-1:-1;;22820:12:1;;;;22049;;22016:826;;;-1:-1:-1;22861:5:1;;21393:1479;-1:-1:-1;;;;;;;;;21393:1479:1:o;22877:135::-;22916:3;22937:17;;;22934:43;;22957:18;;:::i;:::-;-1:-1:-1;23004:1:1;22993:13;;22877:135::o;23017:168::-;23090:9;;;23121;;23138:15;;;23132:22;;23118:37;23108:71;;23159:18;;:::i
Swarm Source
ipfs://16f1a95a3d6dcf7232d3ba5131f5e5907663602b79a83ca5d5d2510836c4e29f
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.