60a060405260405180606001604052806040518060800160405280604d815260200162004643604d91398152602001604051806080016040528060568152602001620046e6605691398152602001604051806080016040528060568152602001620046906056913981525060089060036200007c929190620007db565b503480156200008a57600080fd5b506040516200473c3803806200473c8339818101604052810190620000b0919062000908565b6040518060400160405280601481526020017f466c6f77657220426f6f7463616d7020323032340000000000000000000000008152506040518060400160405280600381526020017f464c4f000000000000000000000000000000000000000000000000000000000081525081600090816200012d919062000baa565b5080600190816200013f919062000baa565b50505080608081815250504260098190555062000162336200016960201b60201c565b5062001122565b60006200017d60076200026b60201b60201c565b90506200019160076200027960201b60201c565b620001a382826200028f60201b60201c565b62000267816008600081548110620001c057620001bf62000c91565b5b906000526020600020018054620001d790620009a3565b80601f01602080910402602001604051908101604052809291908181526020018280546200020590620009a3565b8015620002565780601f106200022a5761010080835404028352916020019162000256565b820191906000526020600020905b8154815290600101906020018083116200023857829003601f168201915b5050505050620002b560201b60201c565b5050565b600081600001549050919050565b6001816000016000828254019250508190555050565b620002b18282604051806020016040528060008152506200032f60201b60201c565b5050565b620002c6826200039d60201b60201c565b62000308576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002ff9062000d47565b60405180910390fd5b806006600084815260200190815260200160002090816200032a919062000baa565b505050565b6200034183836200040960201b60201c565b6200035660008484846200060260201b60201c565b62000398576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200038f9062000ddf565b60405180910390fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200047b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004729062000e51565b60405180910390fd5b6200048c816200039d60201b60201c565b15620004cf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004c69062000ec3565b60405180910390fd5b620004e360008383620007a660201b60201c565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000535919062000f14565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4620005fe60008383620007ab60201b60201c565b5050565b60006200062b8473ffffffffffffffffffffffffffffffffffffffff16620007b060201b60201c565b1562000799578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026200065d620007d360201b60201c565b8786866040518563ffffffff1660e01b81526004016200068194939291906200103f565b6020604051808303816000875af1925050508015620006c057506040513d601f19601f82011682018060405250810190620006bd9190620010f0565b60015b62000748573d8060008114620006f3576040519150601f19603f3d011682016040523d82523d6000602084013e620006f8565b606091505b50600081510362000740576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007379062000ddf565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506200079e565b600190505b949350505050565b505050565b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600033905090565b82805482825590600052602060002090810192821562000828579160200282015b828111156200082757825182908162000816919062000baa565b5091602001919060010190620007fc565b5b5090506200083791906200083b565b5090565b5b808211156200085f576000818162000855919062000863565b506001016200083c565b5090565b5080546200087190620009a3565b6000825580601f10620008855750620008a6565b601f016020900490600052602060002090810190620008a59190620008a9565b5b50565b5b80821115620008c4576000816000905550600101620008aa565b5090565b600080fd5b6000819050919050565b620008e281620008cd565b8114620008ee57600080fd5b50565b6000815190506200090281620008d7565b92915050565b600060208284031215620009215762000920620008c8565b5b60006200093184828501620008f1565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620009bc57607f821691505b602082108103620009d257620009d162000974565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000a3c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620009fd565b62000a488683620009fd565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000a8b62000a8562000a7f84620008cd565b62000a60565b620008cd565b9050919050565b6000819050919050565b62000aa78362000a6a565b62000abf62000ab68262000a92565b84845462000a0a565b825550505050565b600090565b62000ad662000ac7565b62000ae381848462000a9c565b505050565b5b8181101562000b0b5762000aff60008262000acc565b60018101905062000ae9565b5050565b601f82111562000b5a5762000b2481620009d8565b62000b2f84620009ed565b8101602085101562000b3f578190505b62000b5762000b4e85620009ed565b83018262000ae8565b50505b505050565b600082821c905092915050565b600062000b7f6000198460080262000b5f565b1980831691505092915050565b600062000b9a838362000b6c565b9150826002028217905092915050565b62000bb5826200093a565b67ffffffffffffffff81111562000bd15762000bd062000945565b5b62000bdd8254620009a3565b62000bea82828562000b0f565b600060209050601f83116001811462000c22576000841562000c0d578287015190505b62000c19858262000b8c565b86555062000c89565b601f19841662000c3286620009d8565b60005b8281101562000c5c5784890151825560018201915060208501945060208101905062000c35565b8683101562000c7c578489015162000c78601f89168262000b6c565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b600062000d2f602e8362000cc0565b915062000d3c8262000cd1565b604082019050919050565b6000602082019050818103600083015262000d628162000d20565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600062000dc760328362000cc0565b915062000dd48262000d69565b604082019050919050565b6000602082019050818103600083015262000dfa8162000db8565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b600062000e3960208362000cc0565b915062000e468262000e01565b602082019050919050565b6000602082019050818103600083015262000e6c8162000e2a565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600062000eab601c8362000cc0565b915062000eb88262000e73565b602082019050919050565b6000602082019050818103600083015262000ede8162000e9c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000f2182620008cd565b915062000f2e83620008cd565b925082820190508082111562000f495762000f4862000ee5565b5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f7c8262000f4f565b9050919050565b62000f8e8162000f6f565b82525050565b62000f9f81620008cd565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562000fe157808201518184015260208101905062000fc4565b60008484015250505050565b6000601f19601f8301169050919050565b60006200100b8262000fa5565b62001017818562000fb0565b93506200102981856020860162000fc1565b620010348162000fed565b840191505092915050565b600060808201905062001056600083018762000f83565b62001065602083018662000f83565b62001074604083018562000f94565b818103606083015262001088818462000ffe565b905095945050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b620010ca8162001093565b8114620010d657600080fd5b50565b600081519050620010ea81620010bf565b92915050565b600060208284031215620011095762001108620008c8565b5b60006200111984828501620010d9565b91505092915050565b6080516134f76200114c600039600081816109c201528181610aee0152610c1301526134f76000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80636e04ff0d116100b8578063a22cb4651161007c578063a22cb46514610376578063b88d4fde14610392578063bed34bba146103ae578063c87b56dd146103de578063d9f2f7a21461040e578063e985e9c51461043e57610142565b80636e04ff0d146102bb57806370a08231146102ec578063947a36fb1461031c57806395d89b411461033a57806398bdf6f51461035857610142565b80632b98af8d1161010a5780632b98af8d146101fd5780633f3b3b271461021957806340d097c31461023757806342842e0e146102535780634585e33b1461026f5780636352211e1461028b57610142565b806301ffc9a71461014757806306fdde0314610177578063081812fc14610195578063095ea7b3146101c557806323b872dd146101e1575b600080fd5b610161600480360381019061015c9190611ef8565b61046e565b60405161016e9190611f40565b60405180910390f35b61017f610550565b60405161018c9190611feb565b60405180910390f35b6101af60048036038101906101aa9190612043565b6105e2565b6040516101bc91906120b1565b60405180910390f35b6101df60048036038101906101da91906120f8565b610667565b005b6101fb60048036038101906101f69190612138565b61077e565b005b61021760048036038101906102129190612043565b6107de565b005b6102216108c3565b60405161022e919061219a565b60405180910390f35b610251600480360381019061024c91906121b5565b6108c9565b005b61026d60048036038101906102689190612138565b6109a0565b005b61028960048036038101906102849190612247565b6109c0565b005b6102a560048036038101906102a09190612043565b610a37565b6040516102b291906120b1565b60405180910390f35b6102d560048036038101906102d09190612247565b610ae8565b6040516102e39291906122e9565b60405180910390f35b610306600480360381019061030191906121b5565b610b5a565b604051610313919061219a565b60405180910390f35b610324610c11565b604051610331919061219a565b60405180910390f35b610342610c35565b60405161034f9190611feb565b60405180910390f35b610360610cc7565b60405161036d919061219a565b60405180910390f35b610390600480360381019061038b9190612345565b610cd3565b005b6103ac60048036038101906103a791906124b5565b610ce9565b005b6103c860048036038101906103c391906125d9565b610d4b565b6040516103d59190611f40565b60405180910390f35b6103f860048036038101906103f39190612043565b610da4565b6040516104059190611feb565b60405180910390f35b61042860048036038101906104239190612043565b610db6565b604051610435919061219a565b60405180910390f35b61045860048036038101906104539190612651565b610f4f565b6040516104659190611f40565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061053957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610549575061054882610fe3565b5b9050919050565b60606000805461055f906126c0565b80601f016020809104026020016040519081016040528092919081815260200182805461058b906126c0565b80156105d85780601f106105ad576101008083540402835291602001916105d8565b820191906000526020600020905b8154815290600101906020018083116105bb57829003601f168201915b5050505050905090565b60006105ed8261104d565b61062c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062390612763565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061067282610a37565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d9906127f5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107016110b9565b73ffffffffffffffffffffffffffffffffffffffff161480610730575061072f8161072a6110b9565b610f4f565b5b61076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076690612887565b60405180910390fd5b61077983836110c1565b505050565b61078f6107896110b9565b8261117a565b6107ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c590612919565b60405180910390fd5b6107d9838383611258565b505050565b60026107e982610db6565b10156108c057600060016107fc83610db6565b6108069190612968565b905060006008828154811061081e5761081d61299c565b5b906000526020600020018054610833906126c0565b80601f016020809104026020016040519081016040528092919081815260200182805461085f906126c0565b80156108ac5780601f10610881576101008083540402835291602001916108ac565b820191906000526020600020905b81548152906001019060200180831161088f57829003601f168201915b505050505090506108bd83826114be565b50505b50565b60095481565b60006108d5600761152b565b90506108e16007611539565b6108eb828261154f565b61099c8160086000815481106109045761090361299c565b5b906000526020600020018054610919906126c0565b80601f0160208091040260200160405190810160405280929190818152602001828054610945906126c0565b80156109925780601f1061096757610100808354040283529160200191610992565b820191906000526020600020905b81548152906001019060200180831161097557829003601f168201915b50505050506114be565b5050565b6109bb83838360405180602001604052806000815250610ce9565b505050565b7f0000000000000000000000000000000000000000000000000000000000000000600954426109ef91906129cb565b1115610a335760006001610a03600761152b565b610a0d91906129cb565b90506002610a1a82610db6565b1015610a315742600981905550610a30816107de565b5b505b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad690612a71565b60405180910390fd5b80915050919050565b600060607f000000000000000000000000000000000000000000000000000000000000000060095442610b1b91906129cb565b1115610b535760006001610b2f600761152b565b610b3991906129cb565b90506002610b4682610db6565b1015610b5157600192505b505b9250929050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc190612b03565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b606060018054610c44906126c0565b80601f0160208091040260200160405190810160405280929190818152602001828054610c70906126c0565b8015610cbd5780601f10610c9257610100808354040283529160200191610cbd565b820191906000526020600020905b815481529060010190602001808311610ca057829003601f168201915b5050505050905090565b60078060000154905081565b610ce5610cde6110b9565b838361156d565b5050565b610cfa610cf46110b9565b8361117a565b610d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3090612919565b60405180910390fd5b610d45848484846116d9565b50505050565b600081604051602001610d5e9190612b5f565b6040516020818303038152906040528051906020012083604051602001610d859190612b5f565b6040516020818303038152906040528051906020012014905092915050565b6060610daf82611735565b9050919050565b600080610dc283610da4565b9050610e75816008600081548110610ddd57610ddc61299c565b5b906000526020600020018054610df2906126c0565b80601f0160208091040260200160405190810160405280929190818152602001828054610e1e906126c0565b8015610e6b5780601f10610e4057610100808354040283529160200191610e6b565b820191906000526020600020905b815481529060010190602001808311610e4e57829003601f168201915b5050505050610d4b565b15610e84576000915050610f4a565b610f35816008600181548110610e9d57610e9c61299c565b5b906000526020600020018054610eb2906126c0565b80601f0160208091040260200160405190810160405280929190818152602001828054610ede906126c0565b8015610f2b5780601f10610f0057610100808354040283529160200191610f2b565b820191906000526020600020905b815481529060010190602001808311610f0e57829003601f168201915b5050505050610d4b565b15610f44576001915050610f4a565b60029150505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661113483610a37565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006111858261104d565b6111c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bb90612be8565b60405180910390fd5b60006111cf83610a37565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061121157506112108185610f4f565b5b8061124f57508373ffffffffffffffffffffffffffffffffffffffff16611237846105e2565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661127882610a37565b73ffffffffffffffffffffffffffffffffffffffff16146112ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c590612c7a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361133d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133490612d0c565b60405180910390fd5b611348838383611886565b6113536000826110c1565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113a391906129cb565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113fa9190612968565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46114b983838361188b565b505050565b6114c78261104d565b611506576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fd90612d9e565b60405180910390fd5b806006600084815260200190815260200160002090816115269190612f6a565b505050565b600081600001549050919050565b6001816000016000828254019250508190555050565b611569828260405180602001604052806000815250611890565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d290613088565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516116cc9190611f40565b60405180910390a3505050565b6116e4848484611258565b6116f0848484846118eb565b61172f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117269061311a565b60405180910390fd5b50505050565b60606117408261104d565b61177f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611776906131ac565b60405180910390fd5b600060066000848152602001908152602001600020805461179f906126c0565b80601f01602080910402602001604051908101604052809291908181526020018280546117cb906126c0565b80156118185780601f106117ed57610100808354040283529160200191611818565b820191906000526020600020905b8154815290600101906020018083116117fb57829003601f168201915b505050505090506000611829611a72565b9050600081510361183e578192505050611881565b60008251111561187357808260405160200161185b9291906131cc565b60405160208183030381529060405292505050611881565b61187c84611a89565b925050505b919050565b505050565b505050565b61189a8383611b30565b6118a760008484846118eb565b6118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd9061311a565b60405180910390fd5b505050565b600061190c8473ffffffffffffffffffffffffffffffffffffffff16611d09565b15611a65578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026119356110b9565b8786866040518563ffffffff1660e01b815260040161195794939291906131f0565b6020604051808303816000875af192505050801561199357506040513d601f19601f820116820180604052508101906119909190613251565b60015b611a15573d80600081146119c3576040519150601f19603f3d011682016040523d82523d6000602084013e6119c8565b606091505b506000815103611a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a049061311a565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611a6a565b600190505b949350505050565b606060405180602001604052806000815250905090565b6060611a948261104d565b611ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aca906132f0565b60405180910390fd5b6000611add611a72565b90506000815111611afd5760405180602001604052806000815250611b28565b80611b0784611d2c565b604051602001611b189291906131cc565b6040516020818303038152906040525b915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b969061335c565b60405180910390fd5b611ba88161104d565b15611be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdf906133c8565b60405180910390fd5b611bf460008383611886565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c449190612968565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611d056000838361188b565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b606060008203611d73576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611e87565b600082905060005b60008214611da5578080611d8e906133e8565b915050600a82611d9e919061345f565b9150611d7b565b60008167ffffffffffffffff811115611dc157611dc061238a565b5b6040519080825280601f01601f191660200182016040528015611df35781602001600182028036833780820191505090505b5090505b60008514611e8057600182611e0c91906129cb565b9150600a85611e1b9190613490565b6030611e279190612968565b60f81b818381518110611e3d57611e3c61299c565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611e79919061345f565b9450611df7565b8093505050505b919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611ed581611ea0565b8114611ee057600080fd5b50565b600081359050611ef281611ecc565b92915050565b600060208284031215611f0e57611f0d611e96565b5b6000611f1c84828501611ee3565b91505092915050565b60008115159050919050565b611f3a81611f25565b82525050565b6000602082019050611f556000830184611f31565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611f95578082015181840152602081019050611f7a565b60008484015250505050565b6000601f19601f8301169050919050565b6000611fbd82611f5b565b611fc78185611f66565b9350611fd7818560208601611f77565b611fe081611fa1565b840191505092915050565b600060208201905081810360008301526120058184611fb2565b905092915050565b6000819050919050565b6120208161200d565b811461202b57600080fd5b50565b60008135905061203d81612017565b92915050565b60006020828403121561205957612058611e96565b5b60006120678482850161202e565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061209b82612070565b9050919050565b6120ab81612090565b82525050565b60006020820190506120c660008301846120a2565b92915050565b6120d581612090565b81146120e057600080fd5b50565b6000813590506120f2816120cc565b92915050565b6000806040838503121561210f5761210e611e96565b5b600061211d858286016120e3565b925050602061212e8582860161202e565b9150509250929050565b60008060006060848603121561215157612150611e96565b5b600061215f868287016120e3565b9350506020612170868287016120e3565b92505060406121818682870161202e565b9150509250925092565b6121948161200d565b82525050565b60006020820190506121af600083018461218b565b92915050565b6000602082840312156121cb576121ca611e96565b5b60006121d9848285016120e3565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612207576122066121e2565b5b8235905067ffffffffffffffff811115612224576122236121e7565b5b6020830191508360018202830111156122405761223f6121ec565b5b9250929050565b6000806020838503121561225e5761225d611e96565b5b600083013567ffffffffffffffff81111561227c5761227b611e9b565b5b612288858286016121f1565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b60006122bb82612294565b6122c5818561229f565b93506122d5818560208601611f77565b6122de81611fa1565b840191505092915050565b60006040820190506122fe6000830185611f31565b818103602083015261231081846122b0565b90509392505050565b61232281611f25565b811461232d57600080fd5b50565b60008135905061233f81612319565b92915050565b6000806040838503121561235c5761235b611e96565b5b600061236a858286016120e3565b925050602061237b85828601612330565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6123c282611fa1565b810181811067ffffffffffffffff821117156123e1576123e061238a565b5b80604052505050565b60006123f4611e8c565b905061240082826123b9565b919050565b600067ffffffffffffffff8211156124205761241f61238a565b5b61242982611fa1565b9050602081019050919050565b82818337600083830152505050565b600061245861245384612405565b6123ea565b90508281526020810184848401111561247457612473612385565b5b61247f848285612436565b509392505050565b600082601f83011261249c5761249b6121e2565b5b81356124ac848260208601612445565b91505092915050565b600080600080608085870312156124cf576124ce611e96565b5b60006124dd878288016120e3565b94505060206124ee878288016120e3565b93505060406124ff8782880161202e565b925050606085013567ffffffffffffffff8111156125205761251f611e9b565b5b61252c87828801612487565b91505092959194509250565b600067ffffffffffffffff8211156125535761255261238a565b5b61255c82611fa1565b9050602081019050919050565b600061257c61257784612538565b6123ea565b90508281526020810184848401111561259857612597612385565b5b6125a3848285612436565b509392505050565b600082601f8301126125c0576125bf6121e2565b5b81356125d0848260208601612569565b91505092915050565b600080604083850312156125f0576125ef611e96565b5b600083013567ffffffffffffffff81111561260e5761260d611e9b565b5b61261a858286016125ab565b925050602083013567ffffffffffffffff81111561263b5761263a611e9b565b5b612647858286016125ab565b9150509250929050565b6000806040838503121561266857612667611e96565b5b6000612676858286016120e3565b9250506020612687858286016120e3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806126d857607f821691505b6020821081036126eb576126ea612691565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b600061274d602c83611f66565b9150612758826126f1565b604082019050919050565b6000602082019050818103600083015261277c81612740565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006127df602183611f66565b91506127ea82612783565b604082019050919050565b6000602082019050818103600083015261280e816127d2565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b6000612871603883611f66565b915061287c82612815565b604082019050919050565b600060208201905081810360008301526128a081612864565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000612903603183611f66565b915061290e826128a7565b604082019050919050565b60006020820190508181036000830152612932816128f6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129738261200d565b915061297e8361200d565b925082820190508082111561299657612995612939565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006129d68261200d565b91506129e18361200d565b92508282039050818111156129f9576129f8612939565b5b92915050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b6000612a5b602983611f66565b9150612a66826129ff565b604082019050919050565b60006020820190508181036000830152612a8a81612a4e565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000612aed602a83611f66565b9150612af882612a91565b604082019050919050565b60006020820190508181036000830152612b1c81612ae0565b9050919050565b600081905092915050565b6000612b3982611f5b565b612b438185612b23565b9350612b53818560208601611f77565b80840191505092915050565b6000612b6b8284612b2e565b915081905092915050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000612bd2602c83611f66565b9150612bdd82612b76565b604082019050919050565b60006020820190508181036000830152612c0181612bc5565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000612c64602583611f66565b9150612c6f82612c08565b604082019050919050565b60006020820190508181036000830152612c9381612c57565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612cf6602483611f66565b9150612d0182612c9a565b604082019050919050565b60006020820190508181036000830152612d2581612ce9565b9050919050565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b6000612d88602e83611f66565b9150612d9382612d2c565b604082019050919050565b60006020820190508181036000830152612db781612d7b565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612e207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612de3565b612e2a8683612de3565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612e67612e62612e5d8461200d565b612e42565b61200d565b9050919050565b6000819050919050565b612e8183612e4c565b612e95612e8d82612e6e565b848454612df0565b825550505050565b600090565b612eaa612e9d565b612eb5818484612e78565b505050565b5b81811015612ed957612ece600082612ea2565b600181019050612ebb565b5050565b601f821115612f1e57612eef81612dbe565b612ef884612dd3565b81016020851015612f07578190505b612f1b612f1385612dd3565b830182612eba565b50505b505050565b600082821c905092915050565b6000612f4160001984600802612f23565b1980831691505092915050565b6000612f5a8383612f30565b9150826002028217905092915050565b612f7382611f5b565b67ffffffffffffffff811115612f8c57612f8b61238a565b5b612f9682546126c0565b612fa1828285612edd565b600060209050601f831160018114612fd45760008415612fc2578287015190505b612fcc8582612f4e565b865550613034565b601f198416612fe286612dbe565b60005b8281101561300a57848901518255600182019150602085019450602081019050612fe5565b868310156130275784890151613023601f891682612f30565b8355505b6001600288020188555050505b505050505050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613072601983611f66565b915061307d8261303c565b602082019050919050565b600060208201905081810360008301526130a181613065565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613104603283611f66565b915061310f826130a8565b604082019050919050565b60006020820190508181036000830152613133816130f7565b9050919050565b7f45524337323155524953746f726167653a2055524920717565727920666f722060008201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000602082015250565b6000613196603183611f66565b91506131a18261313a565b604082019050919050565b600060208201905081810360008301526131c581613189565b9050919050565b60006131d88285612b2e565b91506131e48284612b2e565b91508190509392505050565b600060808201905061320560008301876120a2565b61321260208301866120a2565b61321f604083018561218b565b818103606083015261323181846122b0565b905095945050505050565b60008151905061324b81611ecc565b92915050565b60006020828403121561326757613266611e96565b5b60006132758482850161323c565b91505092915050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006132da602f83611f66565b91506132e58261327e565b604082019050919050565b60006020820190508181036000830152613309816132cd565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613346602083611f66565b915061335182613310565b602082019050919050565b6000602082019050818103600083015261337581613339565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b60006133b2601c83611f66565b91506133bd8261337c565b602082019050919050565b600060208201905081810360008301526133e1816133a5565b9050919050565b60006133f38261200d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361342557613424612939565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061346a8261200d565b91506134758361200d565b92508261348557613484613430565b5b828204905092915050565b600061349b8261200d565b91506134a68361200d565b9250826134b6576134b5613430565b5b82820690509291505056fea26469706673582212202012b47ac4b65022b033bd83c0387411bd6588e7e45c0683fcd21a2fbdfd34ae64736f6c6343000813003368747470733a2f2f697066732e696f2f697066732f516d56435a366856454e6a6b6443444c4d6f6f764e43523553366253697355516e424b50696262385858534a71462f736565642e6a736f6e68747470733a2f2f697066732e696f2f697066732f516d56435a366856454e6a6b6443444c4d6f6f764e43523553366253697355516e424b50696262385858534a71462f707572706c652d626c6f6f6d732e6a736f6e68747470733a2f2f697066732e696f2f697066732f516d56435a366856454e6a6b6443444c4d6f6f764e43523553366253697355516e424b50696262385858534a71462f707572706c652d7370726f75742e6a736f6e0000000000000000000000000000000000000000000000000000000000000168