f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAAAoJAAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIHJhbmQ7CnBrZ3BhdGggY3J5cHRvL3JhbmQ7CnByaW9yaXR5IDg7CmltcG9ydCBidWZpbyBidWZpbyAiYnVmaW8iOwppbXBvcnQgYWVzIGNyeXB0by9hZXMgImNyeXB0by9hZXMiOwppbXBvcnQgY2lwaGVyIGNyeXB0by9jaXBoZXIgImNyeXB0by9jaXBoZXIiOwppbXBvcnQgZXJyb3JzIGVycm9ycyAiZXJyb3JzIjsKaW1wb3J0IHN5c2NhbGwgaW50ZXJuYWwvc3lzY2FsbCAiaW50ZXJuYWwvc3lzY2FsbCI7CmltcG9ydCBpbyBpbyAiaW8iOwppbXBvcnQgYmlnIG1hdGgvYmlnICJtYXRoL2JpZyI7CmltcG9ydCBvcyBvcyAib3MiOwppbXBvcnQgcnVudGltZSBydW50aW1lICJydW50aW1lIjsKaW1wb3J0IHN5bmMgc3luYyAic3luYyI7CmltcG9ydCB0aW1lIHRpbWUgInRpbWUiOwppbml0IHJhbmQgY3J5cHRvX3JhbmQuLmltcG9ydCA4IG1hdGggbWF0aC4uaW1wb3J0IDEgcnVudGltZSBydW50aW1lLi5pbXBvcnQgMSB1bmljb2RlIHVuaWNvZGUuLmltcG9ydCAxIHN0cmNvbnYgc3RyY29udi4uaW1wb3J0IDIgc3luYyBzeW5jLi5pbXBvcnQgMiBpbyBpby4uaW1wb3J0IDMgcmFuZCBtYXRoX3JhbmQuLmltcG9ydCAzIHJlZmxlY3QgcmVmbGVjdC4uaW1wb3J0IDMgc3lzY2FsbCBzeXNjYWxsLi5pbXBvcnQgMyBiaW5hcnkgZW5jb2RpbmdfYmluYXJ5Li5pbXBvcnQgNCBieXRlcyBieXRlcy4uaW1wb3J0IDQgY2lwaGVyIGNyeXB0b19jaXBoZXIuLmltcG9ydCA0IHN5c2NhbGwgaW50ZXJuYWxfc3lzY2FsbC4uaW1wb3J0IDQgdGltZSB0aW1lLi5pbXBvcnQgNCBidWZpbyBidWZpby4uaW1wb3J0IDUgb3Mgb3MuLmltcG9ydCA1IGZtdCBmbXQuLmltcG9ydCA2IGJpZyBtYXRoX2JpZy4uaW1wb3J0IDc7CmZ1bmMgSW50IChyYW5kIDx0eXBlIDEgImlvLlJlYWRlciIgPHR5cGUgMiBpbnRlcmZhY2UgeyBSZWFkIChwIDx0eXBlIDMgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+LCBtYXggPHR5cGUgNCAqPHR5cGUgNSAibWF0aC9iaWcuSW50IiA8dHlwZSA2IHN0cnVjdCB7IC5tYXRoL2JpZy5uZWcgPHR5cGUgLTE1PjsgLm1hdGgvYmlnLmFicyA8dHlwZSA3ICIubWF0aC9iaWcubmF0IiA8dHlwZSA4IFtdIDx0eXBlIDkgIm1hdGgvYmlnLldvcmQiIDx0eXBlIC0xMz4+PgogZnVuYyAoeiA8dHlwZSA3PikgLm1hdGgvYmlnLm11bCAoeCA8dHlwZSA3PiwgeSA8dHlwZSA3PikgPHR5cGUgNz47CiBmdW5jICh6IDx0eXBlIDc+KSAubWF0aC9iaWcuc2NhbiAociA8dHlwZSAxMCAiaW8uUnVuZVNjYW5uZXIiIDx0eXBlIDExIGludGVyZmFjZSB7ID8gPHR5cGUgMTIgImlvLlJ1bmVSZWFkZXIiIDx0eXBlIDEzIGludGVyZmFjZSB7IFJlYWRSdW5lICgpIChyIDx0eXBlIC0yMT4sIHNpemUgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj47IFVucmVhZFJ1bmUgKCkgPHR5cGUgLTE5PjsgfT4+LCBiYXNlIDx0eXBlIC0xMT4pICg/IDx0eXBlIDc+LCA/IDx0eXBlIC0xMT4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh6IDx0eXBlIDc+KSAubWF0aC9iaWcuYWRkICh4IDx0eXBlIDc+LCB5IDx0eXBlIDc+KSA8dHlwZSA3PjsKIGZ1bmMgKHogPHR5cGUgNz4pIC5tYXRoL2JpZy5hbmROb3QgKHggPHR5cGUgNz4sIHkgPHR5cGUgNz4pIDx0eXBlIDc+OwogZnVuYyAoeiA8dHlwZSA3PikgLm1hdGgvYmlnLnNldEJpdCAoeCA8dHlwZSA3PiwgaSA8dHlwZSAtMTI+LCBiIDx0eXBlIC0xMj4pIDx0eXBlIDc+OwogZnVuYyAoeiA8dHlwZSA3PikgLm1hdGgvYmlnLnN1YiAoeCA8dHlwZSA3PiwgeSA8dHlwZSA3PikgPHR5cGUgNz47CiBmdW5jICh4IDx0eXBlIDc+KSAubWF0aC9iaWcubW9kVyAoZCA8dHlwZSA5PikgKHIgPHR5cGUgOT4pOwogZnVuYyAobiA8dHlwZSA3PikgLm1hdGgvYmlnLnByb2JhYmx5UHJpbWUgKHJlcHMgPHR5cGUgLTExPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHEgPHR5cGUgNz4pIC5tYXRoL2JpZy5jb252ZXJ0V29yZHMgKHMgPHR5cGUgMTQgW10gPHR5cGUgLTIwPj4sIGNoYXJzZXQgPHR5cGUgLTE2PiwgYiA8dHlwZSA5PiwgbmRpZ2l0cyA8dHlwZSAtMTE+LCBiYiA8dHlwZSA5PiwgdGFibGUgPHR5cGUgMTUgW10gPHR5cGUgMTYgIi5tYXRoL2JpZy5kaXZpc29yIiA8dHlwZSAxNyBzdHJ1Y3QgeyAubWF0aC9iaWcuYmJiIDx0eXBlIDc+OyAubWF0aC9iaWcubmJpdHMgPHR5cGUgLTExPjsgLm1hdGgvYmlnLm5kaWdpdHMgPHR5cGUgLTExPjsgfT4+Pik7CiBmdW5jICh4IDx0eXBlIDc+KSAubWF0aC9iaWcuc3RyaW5nIChjaGFyc2V0IDx0eXBlIC0xNj4pIDx0eXBlIC0xNj47CiBmdW5jICh6IDx0eXBlIDc+KSAubWF0aC9iaWcuZGl2VyAoeCA8dHlwZSA3PiwgeSA8dHlwZSA5PikgKHEgPHR5cGUgNz4sIHIgPHR5cGUgOT4pOwogZnVuYyAoeiA8dHlwZSA3PikgLm1hdGgvYmlnLnNociAoeCA8dHlwZSA3PiwgcyA8dHlwZSAtMTI+KSA8dHlwZSA3PjsKIGZ1bmMgKHogPHR5cGUgNz4pIC5tYXRoL2JpZy5tdWxSYW5nZSAoYSA8dHlwZSAtOD4sIGIgPHR5cGUgLTg+KSA8dHlwZSA3PjsKIGZ1bmMgKHogPHR5cGUgNz4pIC5tYXRoL2JpZy5tdWxBZGRXVyAoeCA8dHlwZSA3PiwgeSA8dHlwZSA5PiwgciA8dHlwZSA5PikgPHR5cGUgNz47CiBmdW5jICh6IDx0eXBlIDc+KSAubWF0aC9iaWcuYW5kICh4IDx0eXBlIDc+LCB5IDx0eXBlIDc+KSA8dHlwZSA3PjsKIGZ1bmMgKHggPHR5cGUgNz4pIC5tYXRoL2JpZy5kZWNpbWFsU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jICh6IDx0eXBlIDc+KSAubWF0aC9iaWcueG9yICh4IDx0eXBlIDc+LCB5IDx0eXBlIDc+KSA8dHlwZSA3PjsKIGZ1bmMgKHogPHR5cGUgNz4pIC5tYXRoL2JpZy5iaXQgKGkgPHR5cGUgLTEyPikgPHR5cGUgLTEyPjsKIGZ1bmMgKHogPHR5cGUgNz4pIC5tYXRoL2JpZy5zZXQgKHggPHR5cGUgNz4pIDx0eXBlIDc+OwogZnVuYyAoeiA8dHlwZSA3PikgLm1hdGgvYmlnLnJhbmRvbSAocmFuZCA8dHlwZSAxOCAqPHR5cGUgMTkgIm1hdGgvcmFuZC5SYW5kIiAicmFuZCIgPHR5cGUgMjAgc3RydWN0IHsgLm1hdGgvcmFuZC5zcmMgPHR5cGUgMjEgIm1hdGgvcmFuZC5Tb3VyY2UiIDx0eXBlIDIyIGludGVyZmFjZSB7IEludDYzICgpIDx0eXBlIC00PjsgU2VlZCAoc2VlZCA8dHlwZSAtND4pOyB9Pj47IH0+CiBmdW5jIChyIDx0eXBlIDIzICo8dHlwZSAxOT4+KSBFeHBGbG9hdDY0ICgpIDx0eXBlIC0xMD47CiBmdW5jIChyIDx0eXBlIDIzPikgSW50MzFuIChuIDx0eXBlIC0zPikgPHR5cGUgLTM+OwogZnVuYyAociA8dHlwZSAyMz4pIFVpbnQzMiAoKSA8dHlwZSAtNz47CiBmdW5jIChyIDx0eXBlIDIzPikgSW50biAobiA8dHlwZSAtMTE+KSA8dHlwZSAtMTE+OwogZnVuYyAociA8dHlwZSAyMz4pIFBlcm0gKG4gPHR5cGUgLTExPikgPHR5cGUgMjQgW10gPHR5cGUgLTExPj47CiBmdW5jIChyIDx0eXBlIDIzPikgTm9ybUZsb2F0NjQgKCkgPHR5cGUgLTEwPjsKIGZ1bmMgKHIgPHR5cGUgMjM+KSBJbnQzMSAoKSA8dHlwZSAtMz47CiBmdW5jIChyIDx0eXBlIDIzPikgRmxvYXQ2NCAoKSA8dHlwZSAtMTA+OwogZnVuYyAociA8dHlwZSAyMz4pIFNlZWQgKHNlZWQgPHR5cGUgLTQ+KTsKIGZ1bmMgKHIgPHR5cGUgMjM+KSBJbnQgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHIgPHR5cGUgMjM+KSBJbnQ2MyAoKSA8dHlwZSAtND47CiBmdW5jIChyIDx0eXBlIDIzPikgSW50NjNuIChuIDx0eXBlIC00PikgPHR5cGUgLTQ+OwogZnVuYyAociA8dHlwZSAyMz4pIEZsb2F0MzIgKCkgPHR5cGUgLTk+Owo+PiwgbGltaXQgPHR5cGUgNz4sIG4gPHR5cGUgLTExPikgPHR5cGUgNz47CiBmdW5jICh6IDx0eXBlIDc+KSAubWF0aC9iaWcub3IgKHggPHR5cGUgNz4sIHkgPHR5cGUgNz4pIDx0eXBlIDc+OwogZnVuYyAoeCA8dHlwZSA3PikgLm1hdGgvYmlnLmNtcCAoeSA8dHlwZSA3PikgKHIgPHR5cGUgLTExPik7CiBmdW5jICh4IDx0eXBlIDc+KSAubWF0aC9iaWcuYml0TGVuICgpIDx0eXBlIC0xMT47CiBmdW5jICh6IDx0eXBlIDc+KSAubWF0aC9iaWcuc2V0V29yZCAoeCA8dHlwZSA5PikgPHR5cGUgNz47CiBmdW5jICh6IDx0eXBlIDc+KSAubWF0aC9iaWcuc2V0VWludDY0ICh4IDx0eXBlIC04PikgPHR5cGUgNz47CiBmdW5jICh6IDx0eXBlIDc+KSAubWF0aC9iaWcuZGl2ICh6MiA8dHlwZSA3PiwgdSA8dHlwZSA3PiwgdiA8dHlwZSA3PikgKHEgPHR5cGUgNz4sIHIgPHR5cGUgNz4pOwogZnVuYyAoeCA8dHlwZSA3PikgLm1hdGgvYmlnLnRyYWlsaW5nWmVyb0JpdHMgKCkgPHR5cGUgLTEyPjsKIGZ1bmMgKHogPHR5cGUgNz4pIC5tYXRoL2JpZy5leHBOTldpbmRvd2VkICh4IDx0eXBlIDc+LCB5IDx0eXBlIDc+LCBtIDx0eXBlIDc+KSA8dHlwZSA3PjsKIGZ1bmMgKHogPHR5cGUgNz4pIC5tYXRoL2JpZy5kaXZMYXJnZSAodSA8dHlwZSA3PiwgdUluIDx0eXBlIDc+LCB2IDx0eXBlIDc+KSAocSA8dHlwZSA3PiwgciA8dHlwZSA3Pik7CiBmdW5jICh6IDx0eXBlIDc+KSAubWF0aC9iaWcubm9ybSAoKSA8dHlwZSA3PjsKIGZ1bmMgKHogPHR5cGUgNz4pIC5tYXRoL2JpZy5zZXRCeXRlcyAoYnVmIDx0eXBlIDI1IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSA3PjsKIGZ1bmMgKHogPHR5cGUgNz4pIC5tYXRoL2JpZy5tYWtlIChuIDx0eXBlIC0xMT4pIDx0eXBlIDc+OwogZnVuYyAoeiA8dHlwZSA3PikgLm1hdGgvYmlnLnNobCAoeCA8dHlwZSA3PiwgcyA8dHlwZSAtMTI+KSA8dHlwZSA3PjsKIGZ1bmMgKHogPHR5cGUgNz4pIC5tYXRoL2JpZy5ieXRlcyAoYnVmIDx0eXBlIDI2IFtdIDx0eXBlIC0yMD4+KSAoaSA8dHlwZSAtMTE+KTsKIGZ1bmMgKHogPHR5cGUgNz4pIC5tYXRoL2JpZy5jbGVhciAoKTsKIGZ1bmMgKHogPHR5cGUgNz4pIC5tYXRoL2JpZy5leHBXVyAoeCA8dHlwZSA5PiwgeSA8dHlwZSA5PikgPHR5cGUgNz47CiBmdW5jICh6IDx0eXBlIDc+KSAubWF0aC9iaWcuZXhwTk4gKHggPHR5cGUgNz4sIHkgPHR5cGUgNz4sIG0gPHR5cGUgNz4pIDx0eXBlIDc+Owo+OyB9PgogZnVuYyAoeiA8dHlwZSAyNyAqPHR5cGUgNT4+KSBOZWcgKHggPHR5cGUgMjc+KSA8dHlwZSAyNz47CiBmdW5jICh6IDx0eXBlIDI3PikgUXVvUmVtICh4IDx0eXBlIDI3PiwgeSA8dHlwZSAyNz4sIHIgPHR5cGUgMjc+KSAoPyA8dHlwZSAyNz4sID8gPHR5cGUgMjc+KTsKIGZ1bmMgKHggPHR5cGUgMjc+KSBCeXRlcyAoKSA8dHlwZSAyOCBbXSA8dHlwZSAtMjA+PjsKIGZ1bmMgKHogPHR5cGUgMjc+KSBTZXRCaXRzIChhYnMgPHR5cGUgMjkgW10gPHR5cGUgOT4+KSA8dHlwZSAyNz47CiBmdW5jICh6IDx0eXBlIDI3PikgU2V0Qml0ICh4IDx0eXBlIDI3PiwgaSA8dHlwZSAtMTE+LCBiIDx0eXBlIC0xMj4pIDx0eXBlIDI3PjsKIGZ1bmMgKHogPHR5cGUgMjc+KSBYb3IgKHggPHR5cGUgMjc+LCB5IDx0eXBlIDI3PikgPHR5cGUgMjc+OwogZnVuYyAoeiA8dHlwZSAyNz4pIFNldEludDY0ICh4IDx0eXBlIC00PikgPHR5cGUgMjc+OwogZnVuYyAoeiA8dHlwZSAyNz4pIE5vdCAoeCA8dHlwZSAyNz4pIDx0eXBlIDI3PjsKIGZ1bmMgKHogPHR5cGUgMjc+KSBVbm1hcnNoYWxKU09OICh0ZXh0IDx0eXBlIDMwIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAoeiA8dHlwZSAyNz4pIE9yICh4IDx0eXBlIDI3PiwgeSA8dHlwZSAyNz4pIDx0eXBlIDI3PjsKIGZ1bmMgKHogPHR5cGUgMjc+KSBTZXRVaW50NjQgKHggPHR5cGUgLTg+KSA8dHlwZSAyNz47CiBmdW5jICh4IDx0eXBlIDI3PikgSW50NjQgKCkgPHR5cGUgLTQ+OwogZnVuYyAoeiA8dHlwZSAyNz4pIC5tYXRoL2JpZy5zY2FuIChyIDx0eXBlIDEwPiwgYmFzZSA8dHlwZSAtMTE+KSAoPyA8dHlwZSAyNz4sID8gPHR5cGUgLTExPiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHogPHR5cGUgMjc+KSBHQ0QgKHggPHR5cGUgMjc+LCB5IDx0eXBlIDI3PiwgYSA8dHlwZSAyNz4sIGIgPHR5cGUgMjc+KSA8dHlwZSAyNz47CiBmdW5jICh6IDx0eXBlIDI3PikgUmVtICh4IDx0eXBlIDI3PiwgeSA8dHlwZSAyNz4pIDx0eXBlIDI3PjsKIGZ1bmMgKHggPHR5cGUgMjc+KSBCaXQgKGkgPHR5cGUgLTExPikgPHR5cGUgLTEyPjsKIGZ1bmMgKHggPHR5cGUgMjc+KSBCaXRzICgpIDx0eXBlIDMxIFtdIDx0eXBlIDk+PjsKIGZ1bmMgKHogPHR5cGUgMjc+KSBTZXRCeXRlcyAoYnVmIDx0eXBlIDMyIFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAyNz47CiBmdW5jICh6IDx0eXBlIDI3PikgRGl2TW9kICh4IDx0eXBlIDI3PiwgeSA8dHlwZSAyNz4sIG0gPHR5cGUgMjc+KSAoPyA8dHlwZSAyNz4sID8gPHR5cGUgMjc+KTsKIGZ1bmMgKHogPHR5cGUgMjc+KSBSc2ggKHggPHR5cGUgMjc+LCBuIDx0eXBlIC0xMj4pIDx0eXBlIDI3PjsKIGZ1bmMgKHggPHR5cGUgMjc+KSBDbXAgKHkgPHR5cGUgMjc+KSAociA8dHlwZSAtMTE+KTsKIGZ1bmMgKHogPHR5cGUgMjc+KSBTY2FuIChzIDx0eXBlIDMzICJmbXQuU2NhblN0YXRlIiAiZm10IiA8dHlwZSAzNCBpbnRlcmZhY2UgeyBSZWFkUnVuZSAoKSAociA8dHlwZSAtMjE+LCBzaXplIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgVW5yZWFkUnVuZSAoKSA8dHlwZSAtMTk+OyBTa2lwU3BhY2UgKCk7IFRva2VuIChza2lwU3BhY2UgPHR5cGUgLTE1PiwgZiA8dHlwZSAzNSAoPyA8dHlwZSAtMjE+KSA8dHlwZSAtMTU+PikgKHRva2VuIDx0eXBlIDM2IFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7IFdpZHRoICgpICh3aWQgPHR5cGUgLTExPiwgb2sgPHR5cGUgLTE1Pik7IFJlYWQgKGJ1ZiA8dHlwZSAzNyBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyB9Pj4sIGNoIDx0eXBlIC0yMT4pIDx0eXBlIC0xOT47CiBmdW5jICh4IDx0eXBlIDI3PikgR29iRW5jb2RlICgpICg/IDx0eXBlIDM4IFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAoeCA8dHlwZSAyNz4pIFByb2JhYmx5UHJpbWUgKG4gPHR5cGUgLTExPikgPHR5cGUgLTE1PjsKIGZ1bmMgKHggPHR5cGUgMjc+KSBTaWduICgpIDx0eXBlIC0xMT47CiBmdW5jICh6IDx0eXBlIDI3PikgTW9kICh4IDx0eXBlIDI3PiwgeSA8dHlwZSAyNz4pIDx0eXBlIDI3PjsKIGZ1bmMgKHogPHR5cGUgMjc+KSBFeHAgKHggPHR5cGUgMjc+LCB5IDx0eXBlIDI3PiwgbSA8dHlwZSAyNz4pIDx0eXBlIDI3PjsKIGZ1bmMgKHggPHR5cGUgMjc+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKHogPHR5cGUgMjc+KSBBYnMgKHggPHR5cGUgMjc+KSA8dHlwZSAyNz47CiBmdW5jICh6IDx0eXBlIDI3PikgVW5tYXJzaGFsVGV4dCAodGV4dCA8dHlwZSAzOSBbXSA8dHlwZSAtMjA+PikgPHR5cGUgLTE5PjsKIGZ1bmMgKHogPHR5cGUgMjc+KSBSYW5kIChybmQgPHR5cGUgMTg+LCBuIDx0eXBlIDI3PikgPHR5cGUgMjc+OwogZnVuYyAoeiA8dHlwZSAyNz4pIEFuZCAoeCA8dHlwZSAyNz4sIHkgPHR5cGUgMjc+KSA8dHlwZSAyNz47CiBmdW5jICh6IDx0eXBlIDI3PikgTW9kSW52ZXJzZSAoZyA8dHlwZSAyNz4sIG4gPHR5cGUgMjc+KSA8dHlwZSAyNz47CiBmdW5jICh6IDx0eXBlIDI3PikgUXVvICh4IDx0eXBlIDI3PiwgeSA8dHlwZSAyNz4pIDx0eXBlIDI3PjsKIGZ1bmMgKHogPHR5cGUgMjc+KSBBZGQgKHggPHR5cGUgMjc+LCB5IDx0eXBlIDI3PikgPHR5cGUgMjc+OwogZnVuYyAoeiA8dHlwZSAyNz4pIExzaCAoeCA8dHlwZSAyNz4sIG4gPHR5cGUgLTEyPikgPHR5cGUgMjc+OwogZnVuYyAoeiA8dHlwZSAyNz4pIEFuZE5vdCAoeCA8dHlwZSAyNz4sIHkgPHR5cGUgMjc+KSA8dHlwZSAyNz47CiBmdW5jICh6IDx0eXBlIDI3PikgU2V0ICh4IDx0eXBlIDI3PikgPHR5cGUgMjc+OwogZnVuYyAoeiA8dHlwZSAyNz4pIE1hcnNoYWxUZXh0ICgpICh0ZXh0IDx0eXBlIDQwIFtdIDx0eXBlIC0yMD4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jICh6IDx0eXBlIDI3PikgTXVsICh4IDx0eXBlIDI3PiwgeSA8dHlwZSAyNz4pIDx0eXBlIDI3PjsKIGZ1bmMgKHogPHR5cGUgMjc+KSBEaXYgKHggPHR5cGUgMjc+LCB5IDx0eXBlIDI3PikgPHR5cGUgMjc+OwogZnVuYyAoeiA8dHlwZSAyNz4pIEJpbm9taWFsIChuIDx0eXBlIC00PiwgayA8dHlwZSAtND4pIDx0eXBlIDI3PjsKIGZ1bmMgKHggPHR5cGUgMjc+KSBGb3JtYXQgKHMgPHR5cGUgNDEgImZtdC5TdGF0ZSIgPHR5cGUgNDIgaW50ZXJmYWNlIHsgV3JpdGUgKGIgPHR5cGUgNDMgW10gPHR5cGUgLTIwPj4pIChyZXQgPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOyBXaWR0aCAoKSAod2lkIDx0eXBlIC0xMT4sIG9rIDx0eXBlIC0xNT4pOyBQcmVjaXNpb24gKCkgKHByZWMgPHR5cGUgLTExPiwgb2sgPHR5cGUgLTE1Pik7IEZsYWcgKGMgPHR5cGUgLTExPikgPHR5cGUgLTE1PjsgfT4+LCBjaCA8dHlwZSAtMjE+KTsKIGZ1bmMgKHogPHR5cGUgMjc+KSBNdWxSYW5nZSAoYSA8dHlwZSAtND4sIGIgPHR5cGUgLTQ+KSA8dHlwZSAyNz47CiBmdW5jICh6IDx0eXBlIDI3PikgU2V0U3RyaW5nIChzIDx0eXBlIC0xNj4sIGJhc2UgPHR5cGUgLTExPikgKD8gPHR5cGUgMjc+LCA/IDx0eXBlIC0xNT4pOwogZnVuYyAoeCA8dHlwZSAyNz4pIFVpbnQ2NCAoKSA8dHlwZSAtOD47CiBmdW5jICh6IDx0eXBlIDI3PikgTWFyc2hhbEpTT04gKCkgKD8gPHR5cGUgNDQgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh4IDx0eXBlIDI3PikgQml0TGVuICgpIDx0eXBlIC0xMT47CiBmdW5jICh6IDx0eXBlIDI3PikgR29iRGVjb2RlIChidWYgPHR5cGUgNDUgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xOT47CiBmdW5jICh6IDx0eXBlIDI3PikgLm1hdGgvYmlnLmJpbmFyeUdDRCAoYSA8dHlwZSAyNz4sIGIgPHR5cGUgMjc+KSA8dHlwZSAyNz47CiBmdW5jICh6IDx0eXBlIDI3PikgU3ViICh4IDx0eXBlIDI3PiwgeSA8dHlwZSAyNz4pIDx0eXBlIDI3PjsKPj4pIChuIDx0eXBlIDQ+LCBlcnIgPHR5cGUgLTE5Pik7CmZ1bmMgUHJpbWUgKHJhbmQgPHR5cGUgMT4sIGJpdHMgPHR5cGUgLTExPikgKHAgPHR5cGUgND4sIGVyciA8dHlwZSAtMTk+KTsKZnVuYyBSZWFkIChiIDx0eXBlIDQ2IFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CnZhciBSZWFkZXIgPHR5cGUgMT47CmNoZWNrc3VtIDlGQjBDNDRGQjU2QkMwRjZEQTJGM0FDRTE1MjhGRTJGMDM3QTA0NEY7CgAuc3ltdGFiAC5zdHJ0YWIALnNoc3RydGFiAC5nb19leHBvcnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAQAAAAAAAAAAAAAANAAAAKkjAAAAAAAAAAAAAAEAAAAAAAAAEQAAAAMAAAAAAAAAAAAAAN0jAAAmAAAAAAAAAAAAAAABAAAAAAAAAAEAAAACAAAAAAAAAAAAAAAEJAAAIAAAAAQAAAACAAAABAAAABAAAAAJAAAAAwAAAAAAAAAAAAAAJCQAAAEAAAAAAAAAAAAAAAEAAAAAAAAA