Loading
60806040523480156200001157600080fd5b50604051620035be380380620035be833981810160405281019062000037919062000e4c565b33858581600090816200004b919062001153565b5080600190816200005d919062001153565b5050506000600660006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000f05760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000e791906200124b565b60405180910390fd5b62000101816200024660201b60201c565b506200011433846200030c60201b60201c565b8173ffffffffffffffffffffffffffffffffffffffff16634420e486336040518263ffffffff1660e01b81526004016200014f91906200124b565b600060405180830381600087803b1580156200016a57600080fd5b505af11580156200017f573d6000803e3d6000fd5b50505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146200023b578073ffffffffffffffffffffffffffffffffffffffff16634420e486336040518263ffffffff1660e01b8152600401620001f391906200124b565b6020604051808303816000875af115801562000213573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000239919062001268565b505b5050505050620012f5565b6000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620003815760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016200037891906200124b565b60405180910390fd5b600062000397838360006200041360201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146200040e5760006040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016200040591906200124b565b60405180910390fd5b505050565b6000620004288484846200043160201b60201c565b90509392505050565b6000620004436200045f60201b60201c565b62000456848484620004a960201b60201c565b90509392505050565b6200046f620006de60201b60201c565b15620004a7576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600080620004bd84620006f560201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146200050857620005078184866200073260201b60201c565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614620005a257620005536000856000806200080460201b60201c565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161462000626576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b6000600660009054906101000a900460ff16905090565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b62000745838383620009e160201b60201c565b620007ff57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620007be57806040517f7e273289000000000000000000000000000000000000000000000000000000008152600401620007b59190620012ab565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401620007f6929190620012c8565b60405180910390fd5b505050565b80806200083e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1562000989576000620008578462000ab560201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015620008c357508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015620008df5750620008dd818462000b4860201b60201c565b155b156200092457826040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526004016200091b91906200124b565b60405180910390fd5b81156200098757838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801562000aac57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148062000a64575062000a63848462000b4860201b60201c565b5b8062000aab57508273ffffffffffffffffffffffffffffffffffffffff1662000a938362000bdc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b60008062000ac983620006f560201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000b3f57826040517f7e27328900000000000000000000000000000000000000000000000000000000815260040162000b369190620012ab565b60405180910390fd5b80915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000c828262000c37565b810181811067ffffffffffffffff8211171562000ca45762000ca362000c48565b5b80604052505050565b600062000cb962000c19565b905062000cc7828262000c77565b919050565b600067ffffffffffffffff82111562000cea5762000ce962000c48565b5b62000cf58262000c37565b9050602081019050919050565b60005b8381101562000d2257808201518184015260208101905062000d05565b60008484015250505050565b600062000d4562000d3f8462000ccc565b62000cad565b90508281526020810184848401111562000d645762000d6362000c32565b5b62000d7184828562000d02565b509392505050565b600082601f83011262000d915762000d9062000c2d565b5b815162000da384826020860162000d2e565b91505092915050565b6000819050919050565b62000dc18162000dac565b811462000dcd57600080fd5b50565b60008151905062000de18162000db6565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e148262000de7565b9050919050565b62000e268162000e07565b811462000e3257600080fd5b50565b60008151905062000e468162000e1b565b92915050565b600080600080600060a0868803121562000e6b5762000e6a62000c23565b5b600086015167ffffffffffffffff81111562000e8c5762000e8b62000c28565b5b62000e9a8882890162000d79565b955050602086015167ffffffffffffffff81111562000ebe5762000ebd62000c28565b5b62000ecc8882890162000d79565b945050604062000edf8882890162000dd0565b935050606062000ef28882890162000e35565b925050608062000f058882890162000e35565b9150509295509295909350565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000f6557607f821691505b60208210810362000f7b5762000f7a62000f1d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000fe57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000fa6565b62000ff1868362000fa6565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620010346200102e620010288462000dac565b62001009565b62000dac565b9050919050565b6000819050919050565b620010508362001013565b620010686200105f826200103b565b84845462000fb3565b825550505050565b600090565b6200107f62001070565b6200108c81848462001045565b505050565b5b81811015620010b457620010a860008262001075565b60018101905062001092565b5050565b601f8211156200110357620010cd8162000f81565b620010d88462000f96565b81016020851015620010e8578190505b62001100620010f78562000f96565b83018262001091565b50505b505050565b600082821c905092915050565b6000620011286000198460080262001108565b1980831691505092915050565b600062001143838362001115565b9150826002028217905092915050565b6200115e8262000f12565b67ffffffffffffffff8111156200117a576200117962000c48565b5b62001186825462000f4c565b62001193828285620010b8565b600060209050601f831160018114620011cb5760008415620011b6578287015190505b620011c2858262001135565b86555062001232565b601f198416620011db8662000f81565b60005b828110156200120557848901518255600182019150602085019450602081019050620011de565b8683101562001225578489015162001221601f89168262001115565b8355505b6001600288020188555050505b505050505050565b620012458162000e07565b82525050565b60006020820190506200126260008301846200123a565b92915050565b60006020828403121562001281576200128062000c23565b5b6000620012918482850162000dd0565b91505092915050565b620012a58162000dac565b82525050565b6000602082019050620012c260008301846200129a565b92915050565b6000604082019050620012df60008301856200123a565b620012ee60208301846200129a565b9392505050565b6122b980620013056000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a14481941161007c578063a144819414610302578063a22cb4651461031e578063b88d4fde1461033a578063c87b56dd14610356578063e985e9c514610386578063f2fde38b146103b657610137565b806370a0823114610282578063715018a6146102b25780638456cb59146102bc5780638da5cb5b146102c657806395d89b41146102e457610137565b80633f4ba83a116100ff5780633f4ba83a146101f257806342842e0e146101fc57806342966c68146102185780635c975abb146102345780636352211e1461025257610137565b806301ffc9a71461013c57806306fdde031461016c578063081812fc1461018a578063095ea7b3146101ba57806323b872dd146101d6575b600080fd5b61015660048036038101906101519190611b03565b6103d2565b6040516101639190611b4b565b60405180910390f35b6101746104b4565b6040516101819190611bf6565b60405180910390f35b6101a4600480360381019061019f9190611c4e565b610546565b6040516101b19190611cbc565b60405180910390f35b6101d460048036038101906101cf9190611d03565b610562565b005b6101f060048036038101906101eb9190611d43565b610578565b005b6101fa61067a565b005b61021660048036038101906102119190611d43565b61068c565b005b610232600480360381019061022d9190611c4e565b6106ac565b005b61023c6106c3565b6040516102499190611b4b565b60405180910390f35b61026c60048036038101906102679190611c4e565b6106da565b6040516102799190611cbc565b60405180910390f35b61029c60048036038101906102979190611d96565b6106ec565b6040516102a99190611dd2565b60405180910390f35b6102ba6107a6565b005b6102c46107ba565b005b6102ce6107cc565b6040516102db9190611cbc565b60405180910390f35b6102ec6107f6565b6040516102f99190611bf6565b60405180910390f35b61031c60048036038101906103179190611d03565b610888565b005b61033860048036038101906103339190611e19565b61089e565b005b610354600480360381019061034f9190611f8e565b6108b4565b005b610370600480360381019061036b9190611c4e565b6108d1565b60405161037d9190611bf6565b60405180910390f35b6103a0600480360381019061039b9190612011565b61093a565b6040516103ad9190611b4b565b60405180910390f35b6103d060048036038101906103cb9190611d96565b6109ce565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061049d57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104ad57506104ac82610a54565b5b9050919050565b6060600080546104c390612080565b80601f01602080910402602001604051908101604052809291908181526020018280546104ef90612080565b801561053c5780601f106105115761010080835404028352916020019161053c565b820191906000526020600020905b81548152906001019060200180831161051f57829003601f168201915b5050505050905090565b600061055182610abe565b5061055b82610b46565b9050919050565b610574828261056f610b83565b610b8b565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036105ea5760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016105e19190611cbc565b60405180910390fd5b60006105fe83836105f9610b83565b610b9d565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610674578382826040517f64283d7b00000000000000000000000000000000000000000000000000000000815260040161066b939291906120b1565b60405180910390fd5b50505050565b610682610bb3565b61068a610c3a565b565b6106a7838383604051806020016040528060008152506108b4565b505050565b6106bf6000826106ba610b83565b610b9d565b5050565b6000600660009054906101000a900460ff16905090565b60006106e582610abe565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361075f5760006040517f89c62b640000000000000000000000000000000000000000000000000000000081526004016107569190611cbc565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107ae610bb3565b6107b86000610c9d565b565b6107c2610bb3565b6107ca610d63565b565b6000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461080590612080565b80601f016020809104026020016040519081016040528092919081815260200182805461083190612080565b801561087e5780601f106108535761010080835404028352916020019161087e565b820191906000526020600020905b81548152906001019060200180831161086157829003601f168201915b5050505050905090565b610890610bb3565b61089a8282610dc6565b5050565b6108b06108a9610b83565b8383610de4565b5050565b6108bf848484610578565b6108cb84848484610f53565b50505050565b60606108dc82610abe565b5060006108e761110a565b905060008151116109075760405180602001604052806000815250610932565b8061091184611121565b604051602001610922929190612124565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6109d6610bb3565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a485760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610a3f9190611cbc565b60405180910390fd5b610a5181610c9d565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600080610aca836111ef565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b3d57826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401610b349190611dd2565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b610b98838383600161122c565b505050565b6000610baa8484846113f1565b90509392505050565b610bbb610b83565b73ffffffffffffffffffffffffffffffffffffffff16610bd96107cc565b73ffffffffffffffffffffffffffffffffffffffff1614610c3857610bfc610b83565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610c2f9190611cbc565b60405180910390fd5b565b610c4261140f565b6000600660006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610c86610b83565b604051610c939190611cbc565b60405180910390a1565b6000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b610d6b61144f565b6001600660006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610daf610b83565b604051610dbc9190611cbc565b60405180910390a1565b610de0828260405180602001604052806000815250611490565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e5557816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401610e4c9190611cbc565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610f469190611b4b565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b1115611104578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02610f97610b83565b8685856040518563ffffffff1660e01b8152600401610fb9949392919061219d565b6020604051808303816000875af1925050508015610ff557506040513d601f19601f82011682018060405250810190610ff291906121fe565b60015b611079573d8060008114611025576040519150601f19603f3d011682016040523d82523d6000602084013e61102a565b606091505b50600081510361107157836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016110689190611cbc565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461110257836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016110f99190611cbc565b60405180910390fd5b505b50505050565b606060405180602001604052806000815250905090565b606060006001611130846114ac565b01905060008167ffffffffffffffff81111561114f5761114e611e63565b5b6040519080825280601f01601f1916602001820160405280156111815781602001600182028036833780820191505090505b509050600082602001820190505b6001156111e4578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816111d8576111d761222b565b5b0494506000850361118f575b819350505050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b80806112655750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561139957600061127584610abe565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156112e057508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156112f357506112f1818461093a565b155b1561133557826040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815260040161132c9190611cbc565b60405180910390fd5b811561139757838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60006113fb61144f565b6114068484846115ff565b90509392505050565b6114176106c3565b61144d576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6114576106c3565b1561148e576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b61149a8383611819565b6114a76000848484610f53565b505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061150a577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611500576114ff61222b565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611547576d04ee2d6d415b85acef8100000000838161153d5761153c61222b565b5b0492506020810190505b662386f26fc10000831061157657662386f26fc10000838161156c5761156b61222b565b5b0492506010810190505b6305f5e100831061159f576305f5e10083816115955761159461222b565b5b0492506008810190505b61271083106115c45761271083816115ba576115b961222b565b5b0492506004810190505b606483106115e757606483816115dd576115dc61222b565b5b0492506002810190505b600a83106115f6576001810190505b80915050919050565b60008061160b846111ef565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461164d5761164c818486611912565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146116de5761168f60008560008061122c565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611761576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361188b5760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016118829190611cbc565b60405180910390fd5b600061189983836000610b9d565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461190d5760006040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016119049190611cbc565b60405180910390fd5b505050565b61191d8383836119d6565b6119d157600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361199257806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016119899190611dd2565b60405180910390fd5b81816040517f177e802f0000000000000000000000000000000000000000000000000000000081526004016119c892919061225a565b60405180910390fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a8e57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611a4f5750611a4e848461093a565b5b80611a8d57508273ffffffffffffffffffffffffffffffffffffffff16611a7583610b46565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611ae081611aab565b8114611aeb57600080fd5b50565b600081359050611afd81611ad7565b92915050565b600060208284031215611b1957611b18611aa1565b5b6000611b2784828501611aee565b91505092915050565b60008115159050919050565b611b4581611b30565b82525050565b6000602082019050611b606000830184611b3c565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611ba0578082015181840152602081019050611b85565b60008484015250505050565b6000601f19601f8301169050919050565b6000611bc882611b66565b611bd28185611b71565b9350611be2818560208601611b82565b611beb81611bac565b840191505092915050565b60006020820190508181036000830152611c108184611bbd565b905092915050565b6000819050919050565b611c2b81611c18565b8114611c3657600080fd5b50565b600081359050611c4881611c22565b92915050565b600060208284031215611c6457611c63611aa1565b5b6000611c7284828501611c39565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611ca682611c7b565b9050919050565b611cb681611c9b565b82525050565b6000602082019050611cd16000830184611cad565b92915050565b611ce081611c9b565b8114611ceb57600080fd5b50565b600081359050611cfd81611cd7565b92915050565b60008060408385031215611d1a57611d19611aa1565b5b6000611d2885828601611cee565b9250506020611d3985828601611c39565b9150509250929050565b600080600060608486031215611d5c57611d5b611aa1565b5b6000611d6a86828701611cee565b9350506020611d7b86828701611cee565b9250506040611d8c86828701611c39565b9150509250925092565b600060208284031215611dac57611dab611aa1565b5b6000611dba84828501611cee565b91505092915050565b611dcc81611c18565b82525050565b6000602082019050611de76000830184611dc3565b92915050565b611df681611b30565b8114611e0157600080fd5b50565b600081359050611e1381611ded565b92915050565b60008060408385031215611e3057611e2f611aa1565b5b6000611e3e85828601611cee565b9250506020611e4f85828601611e04565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611e9b82611bac565b810181811067ffffffffffffffff82111715611eba57611eb9611e63565b5b80604052505050565b6000611ecd611a97565b9050611ed98282611e92565b919050565b600067ffffffffffffffff821115611ef957611ef8611e63565b5b611f0282611bac565b9050602081019050919050565b82818337600083830152505050565b6000611f31611f2c84611ede565b611ec3565b905082815260208101848484011115611f4d57611f4c611e5e565b5b611f58848285611f0f565b509392505050565b600082601f830112611f7557611f74611e59565b5b8135611f85848260208601611f1e565b91505092915050565b60008060008060808587031215611fa857611fa7611aa1565b5b6000611fb687828801611cee565b9450506020611fc787828801611cee565b9350506040611fd887828801611c39565b925050606085013567ffffffffffffffff811115611ff957611ff8611aa6565b5b61200587828801611f60565b91505092959194509250565b6000806040838503121561202857612027611aa1565b5b600061203685828601611cee565b925050602061204785828601611cee565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061209857607f821691505b6020821081036120ab576120aa612051565b5b50919050565b60006060820190506120c66000830186611cad565b6120d36020830185611dc3565b6120e06040830184611cad565b949350505050565b600081905092915050565b60006120fe82611b66565b61210881856120e8565b9350612118818560208601611b82565b80840191505092915050565b600061213082856120f3565b915061213c82846120f3565b91508190509392505050565b600081519050919050565b600082825260208201905092915050565b600061216f82612148565b6121798185612153565b9350612189818560208601611b82565b61219281611bac565b840191505092915050565b60006080820190506121b26000830187611cad565b6121bf6020830186611cad565b6121cc6040830185611dc3565b81810360608301526121de8184612164565b905095945050505050565b6000815190506121f881611ad7565b92915050565b60006020828403121561221457612213611aa1565b5b6000612222848285016121e9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600060408201905061226f6000830185611cad565b61227c6020830184611dc3565b939250505056fea264697066735822122067f8081b7e89d00eb94867186986d5c8014eca554998f90933047386417096ce64736f6c6343000814003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000029a2241af62c0000000000000000000000000000d9feabe16bab684b5537eb6cbb43c8a4e6a90f47000000000000000000000000bbd707815a7f7eb6897c7686274afabd7b579ff6000000000000000000000000000000000000000000000000000000000000000d54657374546f6b656e466976650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035454460000000000000000000000000000000000000000000000000000000000