CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1nYjIzMTIiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoKCgogIC8qIGRlZmF1bHQgY3NzICovCiAgCiAgdGFibGUgewogICAgZm9udC1zaXplOiAxZW07CiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDsKICB9CgogIAogIGRpdiwgYWRkcmVzcywgb2wsIHVsLCBsaSwgb3B0aW9uLCBzZWxlY3QgeyAKICAgIG1hcmdpbi10b3A6IDBweDsKICAgIG1hcmdpbi1ib3R0b206IDBweDsKICB9CgogIHAgewogICAgbWFyZ2luOiAwcHg7CiAgfQoKICBib2R5IHsKICAgIAogICAgCiAgICAgIG1hcmdpbjogMHB4OwogICAgCiAgICAKICAgIAogICAgICBwYWRkaW5nLWxlZnQ6IDUwcHg7CiAgICAgIHBhZGRpbmctcmlnaHQ6IDUwcHg7CiAgICAgIHBhZGRpbmctdG9wOiA0MHB4OwogICAgICAKICAgIAogIH0KCiAgaDYgeyBmb250LXNpemU6IDEwcHQgfQogIGg1IHsgZm9udC1zaXplOiAxMXB0IH0KICBoNCB7IGZvbnQtc2l6ZTogMTJwdCB9CiAgaDMgeyBmb250LXNpemU6IDEzcHQgfQogIGgyIHsgZm9udC1zaXplOiAxNHB0IH0KICBoMSB7IGZvbnQtc2l6ZTogMTZwdCB9CgogIGJsb2NrcXVvdGUge3BhZGRpbmc6IDEwcHg7IGJvcmRlcjogMXB4ICNEREQgZGFzaGVkIH0KCiAgYSBpbWcge2JvcmRlcjogMH0KCiAgZGl2Lmdvb2dsZV9oZWFkZXIsIGRpdi5nb29nbGVfZm9vdGVyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG1hcmdpbi10b3A6IDFlbTsKICAgIG1hcmdpbi1ib3R0b206IDFlbTsKICB9CiAgLyogZW5kIGRlZmF1bHQgY3NzICovCgogIAogICAgLyogZGVmYXVsdCBwcmludCBjc3MgKi8KICAgIAogICAgQG1lZGlhIHByaW50IHsKICAgICAgYm9keSB7IAogICAgICAgIHBhZGRpbmc6IDA7IAogICAgICAgIG1hcmdpbjogMDsgCiAgICAgIH0KCiAgICAgIGRpdi5nb29nbGVfaGVhZGVyLCBkaXYuZ29vZ2xlX2Zvb3RlciB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgbWluLWhlaWdodDogMDsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgIH0KCiAgICAgIGRpdi5nb29nbGVfaGVhZGVyIHsKICAgICAgICBmbG93OiBzdGF0aWMoaGVhZGVyKTsKICAgICAgfQoKICAgICAgLyogdXNlZCB0byBpbnNlcnQgcGFnZSBudW1iZXJzICovCiAgICAgIGRpdi5nb29nbGVfaGVhZGVyOjpiZWZvcmUsIGRpdi5nb29nbGVfZm9vdGVyOjpiZWZvcmUgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgIH0KCiAgICAgIGRpdi5nb29nbGVfZm9vdGVyIHsKICAgICAgICBmbG93OiBzdGF0aWMoZm9vdGVyKTsKICAgICAgfQoKICAgICAgLyogYWx3YXlzIGNvbnNpZGVyIHRoaXMgZWxlbWVudCBhdCB0aGUgc3RhcnQgb2YgdGhlIGRvYyAqLwogICAgICBkaXYjZ29vZ2xlX2Zvb3RlciB7CiAgICAgICAgZmxvdzogc3RhdGljKGZvb3Rlciwgc3RhcnQpOwogICAgICB9CgogICAgICBzcGFuLmdvb2dsZV9wYWdlbnVtYmVyIHsKICAgICAgICBjb250ZW50OiBjb3VudGVyKHBhZ2UpOwogICAgICB9CgogICAgICBzcGFuLmdvb2dsZV9wYWdlY291bnQgewogICAgICAgIGNvbnRlbnQ6IGNvdW50ZXIocGFnZXMpOwogICAgICB9CiAgICB9CgogICAgQHBhZ2UgewogICAgICBAdG9wIHsKICAgICAgICBjb250ZW50OiBmbG93KGhlYWRlcik7CiAgICAgIH0KICAgICAgQGJvdHRvbSB7CiAgICAgICAgY29udGVudDogZmxvdyhmb290ZXIpOwogICAgICB9CiAgICB9CiAgICAvKiBlbmQgZGVmYXVsdCBwcmludCBjc3MgKi8KICAgCiAgCiAgLyogY3VzdG9tIGNzcyAqLwogIAogIAogIC8qIGVuZCBjdXN0b20gY3NzICovCgogIC8qIHVpIGVkaXRlZCBjc3MgKi8KICAKICBib2R5IHsKICAgIGZvbnQtZmFtaWx5OiBWZXJkYW5hOwogICAgCiAgICBmb250LXNpemU6IDEwLjBwdDsKICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwogIH0KICAvKiBlbmQgdWkgZWRpdGVkIGNzcyAqLwoKCgoKPC9zdHlsZT4KCgo8L2hlYWQ+Cgo8Ym9keSByZXZpc2lvbj0iY2N6djY1d2JfNTRmNjJjYzlmMjozIj4KCjxkaXYgaWQ9InJlc3VsdCI+CjwvZGl2PgogICAgCiAgICAKPGgxPtW5zfsyMDA4ysC957TzysajurfnxvDUxtO/ILyktbTIy9DEPC9oMT48YnI+Cjxicj4KICA41MI4yNXN7aOssbG+qTIwMDjE6rDC1Mu74bW5vMbKsdK71tzE6sfs16O77rav1NrM7LCyw8W547OhvtnQ0KGjzbzOqsfs16O77rav1tC1xM7E0tXR3bP2oaMg0MK7qsnnvMfV38H1zsCx+MnjCgogICAgo7KjsKOwo7jE6srAvee358bw1MbTv6OsvKS1tMjL0MSho7Wr0qrX97P20ru49tSksuKjrMrXz8jSqrbUvfHM7Mv5tKa1xMrAvefT0NK7uPa7+bG+ubLKtqGjPGJyPgo8YnI+CjxhIGhyZWY9c2ltcGxlVGVzdC5odG1sIGlkPWI3djkgdGl0bGU91tC5+tauyfk+1tC5+tauyfk8L2E+PGJyPgo8YnI+Cjxicj4KCjxmb3JtIGFjdGlvbj0ic2ltcGxlVGVzdC5odG1sIj4KICA8aW5wdXQgbmFtZT0iaTE4biIgb25jaGFuZ2U9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAnPHA+JyArIHRoaXMudmFsdWUgKyAnPC9wPic7IiAvPgo8L2Zvcm0+Cgo8L2JvZHk+CjwvaHRtbD4K