608060405260405180606001604052806035815260200162004a4760359139600b90805190602001906200003592919062000c71565b5060405180606001604052806035815260200162004a1260359139600c90805190602001906200006792919062000c71565b506001600d556000600e55736398f62980240d098f858584b4148a17c261eb0f601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f12e4af48e45f8c1a3961c094966bdd44a255b34642765b78a1c1f76e439704e660001b6012557f087080cfef5d8a8ae57888c589706de1f456d63e817bb67920f12bb01a3da37f60001b6013553480156200012257600080fd5b506040518060400160405280600f81526020017f496e746f54686557617665334e465400000000000000000000000000000000008152506040518060400160405280600381526020017f49545700000000000000000000000000000000000000000000000000000000008152508160009080519060200190620001a792919062000c71565b508060019080519060200190620001c092919062000c71565b50505033600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060005b60148110156200028a57600981111562000248576001600f600083815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6200025a33826200029160201b60201c565b600e60008154809291906200026f9062000d5a565b91905055508080620002819062000d5a565b91505062000207565b506200130a565b620002b3828260405180602001604052806000815250620002b760201b60201c565b5050565b620002c983836200032560201b60201c565b620002de60008484846200050b60201b60201c565b62000320576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003179062000e2f565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000398576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200038f9062000ea1565b60405180910390fd5b620003a981620006b560201b60201c565b15620003ec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003e39062000f13565b60405180910390fd5b62000400600083836200072160201b60201c565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000452919062000f35565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000620005398473ffffffffffffffffffffffffffffffffffffffff166200086860201b6200135f1760201c565b15620006a8578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026200056b6200087b60201b60201c565b8786866040518563ffffffff1660e01b81526004016200058f94939291906200108c565b6020604051808303816000875af1925050508015620005ce57506040513d601f19601f82011682018060405250810190620005cb919062001142565b60015b62000657573d806000811462000601576040519150601f19603f3d011682016040523d82523d6000602084013e62000606565b606091505b506000815114156200064f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006469062000e2f565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050620006ad565b600190505b949350505050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b620007398383836200088360201b620013721760201c565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620007865762000780816200088860201b60201c565b620007ce565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614620007cd57620007cc8382620008d160201b60201c565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200081b57620008158162000a4e60201b60201c565b62000863565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614620008625762000861828262000b2a60201b60201c565b5b5b505050565b600080823b905060008111915050919050565b600033905090565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001620008eb8462000bb660201b62000c011760201c565b620008f7919062001174565b9050600060076000848152602001908152602001600020549050818114620009dd576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905062000a64919062001174565b905060006009600084815260200190815260200160002054905060006008838154811062000a975762000a96620011af565b5b90600052602060002001549050806008838154811062000abc5762000abb620011af565b5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548062000b0e5762000b0d620011de565b5b6001900381819060005260206000200160009055905550505050565b600062000b428362000bb660201b62000c011760201c565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000c2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c219062001283565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b82805462000c7f90620012d4565b90600052602060002090601f01602090048101928262000ca3576000855562000cef565b82601f1062000cbe57805160ff191683800117855562000cef565b8280016001018555821562000cef579182015b8281111562000cee57825182559160200191906001019062000cd1565b5b50905062000cfe919062000d02565b5090565b5b8082111562000d1d57600081600090555060010162000d03565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b600062000d678262000d50565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000d9d5762000d9c62000d21565b5b600182019050919050565b600082825260208201905092915050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600062000e1760328362000da8565b915062000e248262000db9565b604082019050919050565b6000602082019050818103600083015262000e4a8162000e08565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b600062000e8960208362000da8565b915062000e968262000e51565b602082019050919050565b6000602082019050818103600083015262000ebc8162000e7a565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600062000efb601c8362000da8565b915062000f088262000ec3565b602082019050919050565b6000602082019050818103600083015262000f2e8162000eec565b9050919050565b600062000f428262000d50565b915062000f4f8362000d50565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000f875762000f8662000d21565b5b828201905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000fbf8262000f92565b9050919050565b62000fd18162000fb2565b82525050565b62000fe28162000d50565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b838110156200102457808201518184015260208101905062001007565b8381111562001034576000848401525b50505050565b6000601f19601f8301169050919050565b6000620010588262000fe8565b62001064818562000ff3565b93506200107681856020860162001004565b62001081816200103a565b840191505092915050565b6000608082019050620010a3600083018762000fc6565b620010b2602083018662000fc6565b620010c1604083018562000fd7565b8181036060830152620010d581846200104b565b905095945050505050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6200111c81620010e5565b81146200112857600080fd5b50565b6000815190506200113c8162001111565b92915050565b6000602082840312156200115b576200115a620010e0565b5b60006200116b848285016200112b565b91505092915050565b6000620011818262000d50565b91506200118e8362000d50565b925082821015620011a457620011a362000d21565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b60006200126b602a8362000da8565b915062001278826200120d565b604082019050919050565b600060208201905081810360008301526200129e816200125c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620012ed57607f821691505b60208210811415620013045762001303620012a5565b5b50919050565b6136f8806200131a6000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806355f804b3116100de578063ad238c2f11610097578063c87b56dd11610071578063c87b56dd14610481578063ca246dc6146104b1578063e832a701146104e1578063e985e9c5146104fd5761018e565b8063ad238c2f1461042b578063b2267b9414610447578063b88d4fde146104655761018e565b806355f804b3146103575780636352211e1461037357806370a08231146103a35780638da5cb5b146103d357806395d89b41146103f1578063a22cb4651461040f5761018e565b806318160ddd1161014b5780632f745c59116101255780632f745c59146102d15780633ccfd60b1461030157806342842e0e1461030b5780634f6ccce7146103275761018e565b806318160ddd14610279578063239c70ae1461029757806323b872dd146102b55761018e565b806301ffc9a71461019357806306fdde03146101c3578063081812fc146101e1578063088a4ed014610211578063095ea7b31461022d5780630a7a1c3814610249575b600080fd5b6101ad60048036038101906101a89190612411565b61052d565b6040516101ba9190612459565b60405180910390f35b6101cb6105a7565b6040516101d8919061250d565b60405180910390f35b6101fb60048036038101906101f69190612565565b610639565b60405161020891906125d3565b60405180910390f35b61022b60048036038101906102269190612565565b6106be565b005b6102476004803603810190610242919061261a565b610729565b005b610263600480360381019061025e919061265a565b610841565b6040516102709190612696565b60405180910390f35b610281610859565b60405161028e9190612696565b60405180910390f35b61029f610866565b6040516102ac9190612696565b60405180910390f35b6102cf60048036038101906102ca91906126b1565b61086c565b005b6102eb60048036038101906102e6919061261a565b6108cc565b6040516102f89190612696565b60405180910390f35b610309610971565b005b610325600480360381019061032091906126b1565b610a43565b005b610341600480360381019061033c9190612565565b610a63565b60405161034e9190612696565b60405180910390f35b610371600480360381019061036c9190612839565b610ad4565b005b61038d60048036038101906103889190612565565b610b4f565b60405161039a91906125d3565b60405180910390f35b6103bd60048036038101906103b8919061265a565b610c01565b6040516103ca9190612696565b60405180910390f35b6103db610cb9565b6040516103e891906125d3565b60405180910390f35b6103f9610cdf565b604051610406919061250d565b60405180910390f35b610429600480360381019061042491906128ae565b610d71565b005b61044560048036038101906104409190612839565b610ef2565b005b61044f610f6d565b60405161045c919061250d565b60405180910390f35b61047f600480360381019061047a919061298f565b610fff565b005b61049b60048036038101906104969190612565565b611061565b6040516104a8919061250d565b60405180910390f35b6104cb60048036038101906104c69190612565565b6110a5565b6040516104d89190612459565b60405180910390f35b6104fb60048036038101906104f69190612a72565b6110c5565b005b61051760048036038101906105129190612af3565b6112cb565b6040516105249190612459565b60405180910390f35b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806105a0575061059f82611377565b5b9050919050565b6060600080546105b690612b62565b80601f01602080910402602001604051908101604052809291908181526020018280546105e290612b62565b801561062f5780601f106106045761010080835404028352916020019161062f565b820191906000526020600020905b81548152906001019060200180831161061257829003601f168201915b5050505050905090565b600061064482611459565b610683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067a90612c06565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106ff6114c5565b73ffffffffffffffffffffffffffffffffffffffff161461071f57600080fd5b80600d8190555050565b600061073482610b4f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156107a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079c90612c98565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166107c46114c5565b73ffffffffffffffffffffffffffffffffffffffff1614806107f357506107f2816107ed6114c5565b6112cb565b5b610832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082990612d2a565b60405180910390fd5b61083c83836114cd565b505050565b60106020528060005260406000206000915090505481565b6000600880549050905090565b600d5481565b61087d6108776114c5565b82611586565b6108bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b390612dbc565b60405180910390fd5b6108c7838383611664565b505050565b60006108d783610c01565b8210610918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090f90612e4e565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109b26114c5565b73ffffffffffffffffffffffffffffffffffffffff16146109d257600080fd5b6000479050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610a3f573d6000803e3d6000fd5b5050565b610a5e83838360405180602001604052806000815250610fff565b505050565b6000610a6d610859565b8210610aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa590612ee0565b60405180910390fd5b60088281548110610ac257610ac1612f00565b5b90600052602060002001549050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b156114c5565b73ffffffffffffffffffffffffffffffffffffffff1614610b3557600080fd5b80600c9080519060200190610b4b929190612302565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bef90612fa1565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6990613033565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060018054610cee90612b62565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1a90612b62565b8015610d675780601f10610d3c57610100808354040283529160200191610d67565b820191906000526020600020905b815481529060010190602001808311610d4a57829003601f168201915b5050505050905090565b610d796114c5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dde9061309f565b60405180910390fd5b8060056000610df46114c5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16610ea16114c5565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610ee69190612459565b60405180910390a35050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f336114c5565b73ffffffffffffffffffffffffffffffffffffffff1614610f5357600080fd5b80600b9080519060200190610f69929190612302565b5050565b6060600c8054610f7c90612b62565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa890612b62565b8015610ff55780601f10610fca57610100808354040283529160200191610ff5565b820191906000526020600020905b815481529060010190602001808311610fd857829003601f168201915b5050505050905090565b61101061100a6114c5565b83611586565b61104f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104690612dbc565b60405180910390fd5b61105b848484846118c0565b50505050565b6060600f600083815260200190815260200160002060009054906101000a900460ff1661109557611090610f6d565b61109e565b61109d61191c565b5b9050919050565b600f6020528060005260406000206000915054906101000a900460ff1681565b6103e8600e5411156110d657600080fd5b600d54601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561112457600080fd5b611177611130336119ae565b858580806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050506119de565b6111b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ad9061310b565b60405180910390fd5b60008282905011801561121857506112176111d0336119ae565b838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050506119f5565b5b1561124c576001600f6000600e54815260200190815260200160002060006101000a81548160ff0219169083151502179055505b61125833600e54611a0c565b600e600081548092919061126b9061315a565b9190505550601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906112c09061315a565b919050555050505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600080823b905060008111915050919050565b505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061144257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611452575061145182611a2a565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661154083610b4f565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061159182611459565b6115d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c790613215565b60405180910390fd5b60006115db83610b4f565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061164a57508373ffffffffffffffffffffffffffffffffffffffff1661163284610639565b73ffffffffffffffffffffffffffffffffffffffff16145b8061165b575061165a81856112cb565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661168482610b4f565b73ffffffffffffffffffffffffffffffffffffffff16146116da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d1906132a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561174a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174190613339565b60405180910390fd5b611755838383611a94565b6117606000826114cd565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117b09190613359565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611807919061338d565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6118cb848484611664565b6118d784848484611ba8565b611916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190d90613455565b60405180910390fd5b50505050565b6060600b805461192b90612b62565b80601f016020809104026020016040519081016040528092919081815260200182805461195790612b62565b80156119a45780601f10611979576101008083540402835291602001916119a4565b820191906000526020600020905b81548152906001019060200180831161198757829003601f168201915b5050505050905090565b6000816040516020016119c191906134bd565b604051602081830303815290604052805190602001209050919050565b60006119ed8260125485611d30565b905092915050565b6000611a048260135485611d30565b905092915050565b611a26828260405180602001604052806000815250611d47565b5050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611a9f838383611372565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ae257611add81611da2565b611b21565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b2057611b1f8382611deb565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b6457611b5f81611f58565b611ba3565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ba257611ba18282612029565b5b5b505050565b6000611bc98473ffffffffffffffffffffffffffffffffffffffff1661135f565b15611d23578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611bf26114c5565b8786866040518563ffffffff1660e01b8152600401611c14949392919061352d565b6020604051808303816000875af1925050508015611c5057506040513d601f19601f82011682018060405250810190611c4d919061358e565b60015b611cd3573d8060008114611c80576040519150601f19603f3d011682016040523d82523d6000602084013e611c85565b606091505b50600081511415611ccb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc290613455565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611d28565b600190505b949350505050565b600082611d3d85846120a8565b1490509392505050565b611d51838361211d565b611d5e6000848484611ba8565b611d9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9490613455565b60405180910390fd5b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001611df884610c01565b611e029190613359565b9050600060076000848152602001908152602001600020549050818114611ee7576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050611f6c9190613359565b9050600060096000848152602001908152602001600020549050600060088381548110611f9c57611f9b612f00565b5b906000526020600020015490508060088381548110611fbe57611fbd612f00565b5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061200d5761200c6135bb565b5b6001900381819060005260206000200160009055905550505050565b600061203483610c01565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b60008082905060005b84518110156121125760008582815181106120cf576120ce612f00565b5b602002602001015190508083116120f1576120ea83826122eb565b92506120fe565b6120fb81846122eb565b92505b50808061210a9061315a565b9150506120b1565b508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561218d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218490613636565b60405180910390fd5b61219681611459565b156121d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cd906136a2565b60405180910390fd5b6121e260008383611a94565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612232919061338d565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600082600052816020526040600020905092915050565b82805461230e90612b62565b90600052602060002090601f0160209004810192826123305760008555612377565b82601f1061234957805160ff1916838001178555612377565b82800160010185558215612377579182015b8281111561237657825182559160200191906001019061235b565b5b5090506123849190612388565b5090565b5b808211156123a1576000816000905550600101612389565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6123ee816123b9565b81146123f957600080fd5b50565b60008135905061240b816123e5565b92915050565b600060208284031215612427576124266123af565b5b6000612435848285016123fc565b91505092915050565b60008115159050919050565b6124538161243e565b82525050565b600060208201905061246e600083018461244a565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156124ae578082015181840152602081019050612493565b838111156124bd576000848401525b50505050565b6000601f19601f8301169050919050565b60006124df82612474565b6124e9818561247f565b93506124f9818560208601612490565b612502816124c3565b840191505092915050565b6000602082019050818103600083015261252781846124d4565b905092915050565b6000819050919050565b6125428161252f565b811461254d57600080fd5b50565b60008135905061255f81612539565b92915050565b60006020828403121561257b5761257a6123af565b5b600061258984828501612550565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125bd82612592565b9050919050565b6125cd816125b2565b82525050565b60006020820190506125e860008301846125c4565b92915050565b6125f7816125b2565b811461260257600080fd5b50565b600081359050612614816125ee565b92915050565b60008060408385031215612631576126306123af565b5b600061263f85828601612605565b925050602061265085828601612550565b9150509250929050565b6000602082840312156126705761266f6123af565b5b600061267e84828501612605565b91505092915050565b6126908161252f565b82525050565b60006020820190506126ab6000830184612687565b92915050565b6000806000606084860312156126ca576126c96123af565b5b60006126d886828701612605565b93505060206126e986828701612605565b92505060406126fa86828701612550565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612746826124c3565b810181811067ffffffffffffffff821117156127655761276461270e565b5b80604052505050565b60006127786123a5565b9050612784828261273d565b919050565b600067ffffffffffffffff8211156127a4576127a361270e565b5b6127ad826124c3565b9050602081019050919050565b82818337600083830152505050565b60006127dc6127d784612789565b61276e565b9050828152602081018484840111156127f8576127f7612709565b5b6128038482856127ba565b509392505050565b600082601f8301126128205761281f612704565b5b81356128308482602086016127c9565b91505092915050565b60006020828403121561284f5761284e6123af565b5b600082013567ffffffffffffffff81111561286d5761286c6123b4565b5b6128798482850161280b565b91505092915050565b61288b8161243e565b811461289657600080fd5b50565b6000813590506128a881612882565b92915050565b600080604083850312156128c5576128c46123af565b5b60006128d385828601612605565b92505060206128e485828601612899565b9150509250929050565b600067ffffffffffffffff8211156129095761290861270e565b5b612912826124c3565b9050602081019050919050565b600061293261292d846128ee565b61276e565b90508281526020810184848401111561294e5761294d612709565b5b6129598482856127ba565b509392505050565b600082601f83011261297657612975612704565b5b813561298684826020860161291f565b91505092915050565b600080600080608085870312156129a9576129a86123af565b5b60006129b787828801612605565b94505060206129c887828801612605565b93505060406129d987828801612550565b925050606085013567ffffffffffffffff8111156129fa576129f96123b4565b5b612a0687828801612961565b91505092959194509250565b600080fd5b600080fd5b60008083601f840112612a3257612a31612704565b5b8235905067ffffffffffffffff811115612a4f57612a4e612a12565b5b602083019150836020820283011115612a6b57612a6a612a17565b5b9250929050565b60008060008060408587031215612a8c57612a8b6123af565b5b600085013567ffffffffffffffff811115612aaa57612aa96123b4565b5b612ab687828801612a1c565b9450945050602085013567ffffffffffffffff811115612ad957612ad86123b4565b5b612ae587828801612a1c565b925092505092959194509250565b60008060408385031215612b0a57612b096123af565b5b6000612b1885828601612605565b9250506020612b2985828601612605565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612b7a57607f821691505b60208210811415612b8e57612b8d612b33565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000612bf0602c8361247f565b9150612bfb82612b94565b604082019050919050565b60006020820190508181036000830152612c1f81612be3565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c8260218361247f565b9150612c8d82612c26565b604082019050919050565b60006020820190508181036000830152612cb181612c75565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b6000612d1460388361247f565b9150612d1f82612cb8565b604082019050919050565b60006020820190508181036000830152612d4381612d07565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000612da660318361247f565b9150612db182612d4a565b604082019050919050565b60006020820190508181036000830152612dd581612d99565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000612e38602b8361247f565b9150612e4382612ddc565b604082019050919050565b60006020820190508181036000830152612e6781612e2b565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000612eca602c8361247f565b9150612ed582612e6e565b604082019050919050565b60006020820190508181036000830152612ef981612ebd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b6000612f8b60298361247f565b9150612f9682612f2f565b604082019050919050565b60006020820190508181036000830152612fba81612f7e565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b600061301d602a8361247f565b915061302882612fc1565b604082019050919050565b6000602082019050818103600083015261304c81613010565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061308960198361247f565b915061309482613053565b602082019050919050565b600060208201905081810360008301526130b88161307c565b9050919050565b7f4e6f7420416c6c6f776564000000000000000000000000000000000000000000600082015250565b60006130f5600b8361247f565b9150613100826130bf565b602082019050919050565b60006020820190508181036000830152613124816130e8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006131658261252f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156131985761319761312b565b5b600182019050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b60006131ff602c8361247f565b915061320a826131a3565b604082019050919050565b6000602082019050818103600083015261322e816131f2565b9050919050565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b600061329160298361247f565b915061329c82613235565b604082019050919050565b600060208201905081810360008301526132c081613284565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061332360248361247f565b915061332e826132c7565b604082019050919050565b6000602082019050818103600083015261335281613316565b9050919050565b60006133648261252f565b915061336f8361252f565b9250828210156133825761338161312b565b5b828203905092915050565b60006133988261252f565b91506133a38361252f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156133d8576133d761312b565b5b828201905092915050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600061343f60328361247f565b915061344a826133e3565b604082019050919050565b6000602082019050818103600083015261346e81613432565b9050919050565b60008160601b9050919050565b600061348d82613475565b9050919050565b600061349f82613482565b9050919050565b6134b76134b2826125b2565b613494565b82525050565b60006134c982846134a6565b60148201915081905092915050565b600081519050919050565b600082825260208201905092915050565b60006134ff826134d8565b61350981856134e3565b9350613519818560208601612490565b613522816124c3565b840191505092915050565b600060808201905061354260008301876125c4565b61354f60208301866125c4565b61355c6040830185612687565b818103606083015261356e81846134f4565b905095945050505050565b600081519050613588816123e5565b92915050565b6000602082840312156135a4576135a36123af565b5b60006135b284828501613579565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b600061362060208361247f565b915061362b826135ea565b602082019050919050565b6000602082019050818103600083015261364f81613613565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600061368c601c8361247f565b915061369782613656565b602082019050919050565b600060208201905081810360008301526136bb8161367f565b905091905056fea26469706673582212200372bea07d89fc6bba1a0b8f2fc8a2ade3fbf7dba8ed19cfd796207038c9da0c64736f6c634300080a0033697066733a2f2f516d507345644642456e4d363557545a366366576862633475534662384b3278784856734a59776f3837464c3766697066733a2f2f516d567338436f3775656e6e537338486f79794d7147783847577653426e415562487756346437764b756f347162