시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 44 36 25 78.125%

문제

스타일리시는 프로그래밍 언어이다.

스타일리시의 문법은 알파벳으로 이루어진 이름과 세 가지 유형의 괄호, 마침표 ('.'), 새 줄로 이루어져 있다.

괄호는 소괄호 ('('와 ')'), 중괄호 ('{'와 '}'), 대괄호 ('['와 ']')로 총 세 가지이며, 항상 쌍을 이루도록 사용해야 한다. 또, 중첩될 수도 있다. 다른 프로그래밍 언어와 다르게, 스타일리시는 공백 대신에 마침표('.')를 사용한다. 다음은 스타일리시 프로그램의 예이다.

(Welcome.to
.........Stylish)
{Stylish.is
.....[.(a.programming.language.fun.to.learn)
.......]
.....Maybe.[
.......It.will.be.an.official.ICPC.language
.......]
.....}

위의 예제에서 볼 수 있듯이, 스타일리시 프로그램은 마침표를 사용해서 인덴트를 한다. 각 줄의 인덴트의 양이란, 줄의 앞에 있는 연속되는 마침표의 개수이다.

잘 인덴트된 스타일리시 프로그램의 인덴트 양은 인덴트 스타일 (R,C,S)를 이용해서 결정한다. (1 ≤ R,C,S ≤ 20) 여기서 R은 소괄호, C는 중괄호, S는 대괄호에 해당하는 인덴트의 양이다.

잘 인덴트된 프로그램의 각 줄의 인덴트의 양은 R(ro - rc) + C(co - cc) + S(so - sc)로 결정할 수 있다. 여기서 ro, co, so은 이전 줄까지 나온 여는 소괄호, 중괄호, 대괄호의 개수이고, rc, cc, sc는 닫는 소괄호, 중괄호, 대괄호의 개수이다. 잘 인덴트된 스타일리시 프로그램의 첫 줄에는 항상 인덴트가 없다.

위에 나와있는 예제의 인덴트 스타일은 (R,C,S) = (9,5,2) 이다. 첫째 줄에는 소괄호만 하나 있다. 따라서, 두 번째 줄의 인덴트의 양은 9(1 - 0) + 5(0 - 0) + 2(0 - 0) = 9이다. 처음 네 줄에는 여는 소괄호가 두 개, 여는 중괄호와 대괄호가 각각 한 개, 닫는 소괄호가 두 개 있다. 따라서, 다섯번째 줄의 인덴트의 양은 9(2 - 2) + 5(1 - 0) + 2(1 - 0) = 7이다.

잘 인덴트된 스타일리시 프로그램 P와 그렇지 않은 프로그램 Q가 주어졌을 때, P의 인덴트 스타일을 구해 Q에 적용하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 p와 q가 주어진다. (1 ≤ p, q ≤ 10)

다음 p개 줄에는 스타일리시 마스터가 작성한 잘 인덴트된 프로그램 P가 주어지며, 그 다음 q개 줄에는 다른 프로그램 Q가 주어진다. 두 프로그램의 각 줄은 적어도 1글자 이상이며, 80글자를 넘지 않는다. Q의 모든 줄은 마침표로 시작하지 않는다.

마지막 줄에는 0이 두 개 주어진다.

출력

각 테스트 케이스에 대해서, P의 인덴트 스타일을 구해 Q에 적용한 뒤, 각 줄의 인덴트의 양을 공백으로 구분해 출력한다. 만약, 인덴트의 양을 유일하게 결정할 수 없는 줄이 있다면, 그 줄은 -1을 출력한다.

예제 입력 1

5 4
(Follow.my.style
.........starting.from.round.brackets)
{then.curly.brackets
.....[.and.finally
.......square.brackets.]}
(Thank.you
{for.showing.me
[all
the.secrets]})
4 2
(This.time.I.will.show.you
.........(how.to.use.round.brackets)
.........[but.not.about.square.brackets]
.........{nor.curly.brackets})
(I.learned
how.to.use.round.brackets)
4 2
(This.time.I.will.show.you
.........(how.to.use.round.brackets)
.........[but.not.about.square.brackets]
.........{nor.curly.brackets})
[I.have.not.learned
how.to.use.square.brackets]
2 2
(Be.smart.and.let.fear.of
..(closed.brackets).go)
(A.pair.of.round.brackets.enclosing
[A.line.enclosed.in.square.brackets])
1 2
Telling.you.nothing.but.you.can.make.it
[One.liner.(is).(never.indented)]
[One.liner.(is).(never.indented)]
2 4
([{Learn.from.my.KungFu
...}])
((
{{
[[
]]}}))
1 2
Do.not.waste.your.time.trying.to.read.from.emptiness
(
)
2 3
({Quite.interesting.art.of.ambiguity
....})
{
(
)}
2 4
({[
............................................................]})
(
{
[
]})
0 0

예제 출력 1

0 9 14 16
0 9
0 -1
0 2
0 0
0 2 4 6
0 -1
0 -1 4
0 20 40 60
W3sicHJvYmxlbV9pZCI6IjM4MjYiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWMyYTRcdWQwYzBcdWM3N2NcdWI5YWNcdWMyZGMiLCJkZXNjcmlwdGlvbiI6IjxwPlx1YzJhNFx1ZDBjMFx1Yzc3Y1x1YjlhY1x1YzJkY1x1YjI5NCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3OThcdWJjMGQgXHVjNWI4XHVjNWI0XHVjNzc0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWMyYTRcdWQwYzBcdWM3N2NcdWI5YWNcdWMyZGNcdWM3NTggXHViYjM4XHViYzk1XHVjNzQwIFx1YzU0Y1x1ZDMwY1x1YmNiM1x1YzczY1x1Yjg1YyBcdWM3NzRcdWI4ZThcdWM1YjRcdWM5YzQgXHVjNzc0XHViOTg0XHVhY2ZjIFx1YzEzOCBcdWFjMDBcdWM5YzAgXHVjNzIwXHVkNjE1XHVjNzU4IFx1YWQwNFx1ZDYzOCwgXHViOWM4XHVjZTY4XHVkNDVjICgmIzM5Oy4mIzM5OyksIFx1YzBjOCBcdWM5MDRcdWI4NWMgXHVjNzc0XHViOGU4XHVjNWI0XHVjODM4IFx1Yzc4OFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVhZDA0XHVkNjM4XHViMjk0IFx1YzE4Y1x1YWQwNFx1ZDYzOCAoJiMzOTsoJiMzOTtcdWM2NDAgJiMzOTspJiMzOTspLCBcdWM5MTFcdWFkMDRcdWQ2MzggKCYjMzk7eyYjMzk7XHVjNjQwICYjMzk7fSYjMzk7KSwgXHViMzAwXHVhZDA0XHVkNjM4ICgmIzM5O1smIzM5O1x1YzY0MCAmIzM5O10mIzM5OylcdWI4NWMgXHVjZDFkIFx1YzEzOCBcdWFjMDBcdWM5YzBcdWM3NzRcdWJhNzAsIFx1ZDU2ZFx1YzBjMSBcdWMzMGRcdWM3NDQgXHVjNzc0XHViOGU4XHViM2M0XHViODVkIFx1YzBhY1x1YzZhOVx1ZDU3NFx1YzU3YyBcdWQ1NWNcdWIyZTQuIFx1YjYxMCwgXHVjOTExXHVjY2E5XHViNDIwIFx1YzIxOFx1YjNjNCBcdWM3ODhcdWIyZTQuIFx1YjJlNFx1Yjk3OCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3OThcdWJjMGQgXHVjNWI4XHVjNWI0XHVjNjQwIFx1YjJlNFx1Yjk3NFx1YWM4YywgXHVjMmE0XHVkMGMwXHVjNzdjXHViOWFjXHVjMmRjXHViMjk0IFx1YWNmNVx1YmMzMSBcdWIzMDBcdWMyZTBcdWM1ZDAgXHViOWM4XHVjZTY4XHVkNDVjKCYjMzk7LiYjMzk7KVx1Yjk3YyBcdWMwYWNcdWM2YTlcdWQ1NWNcdWIyZTQuIFx1YjJlNFx1Yzc0Y1x1Yzc0MCBcdWMyYTRcdWQwYzBcdWM3N2NcdWI5YWNcdWMyZGMgXHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVjNzU4IFx1YzYwOFx1Yzc3NFx1YjJlNC48XC9wPlxyXG5cclxuPHByZT5cclxuKFdlbGNvbWUudG9cclxuLi4uLi4uLi4uU3R5bGlzaClcclxue1N0eWxpc2guaXNcclxuLi4uLi5bLihhLnByb2dyYW1taW5nLmxhbmd1YWdlLmZ1bi50by5sZWFybilcclxuLi4uLi4uLl1cclxuLi4uLi5NYXliZS5bXHJcbi4uLi4uLi5JdC53aWxsLmJlLmFuLm9mZmljaWFsLklDUEMubGFuZ3VhZ2VcclxuLi4uLi4uLl1cclxuLi4uLi59PFwvcHJlPlxyXG5cclxuPHA+XHVjNzA0XHVjNzU4IFx1YzYwOFx1YzgxY1x1YzVkMFx1YzExYyBcdWJjZmMgXHVjMjE4IFx1Yzc4OFx1YjRlZlx1Yzc3NCwgXHVjMmE0XHVkMGMwXHVjNzdjXHViOWFjXHVjMmRjIFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOFx1Yzc0MCBcdWI5YzhcdWNlNjhcdWQ0NWNcdWI5N2MgXHVjMGFjXHVjNmE5XHVkNTc0XHVjMTFjIFx1Yzc3OFx1YjM3NFx1ZDJiOFx1Yjk3YyBcdWQ1NWNcdWIyZTQuIFx1YWMwMSBcdWM5MDRcdWM3NTggXHVjNzc4XHViMzc0XHVkMmI4XHVjNzU4IFx1YzU5MVx1Yzc3NFx1Yjc4MCwgXHVjOTA0XHVjNzU4IFx1YzU1ZVx1YzVkMCBcdWM3ODhcdWIyOTQgXHVjNWYwXHVjMThkXHViNDE4XHViMjk0IFx1YjljOFx1Y2U2OFx1ZDQ1Y1x1Yzc1OCBcdWFjMWNcdWMyMThcdWM3NzRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1Yzc5OCBcdWM3NzhcdWIzNzRcdWQyYjhcdWI0MWMgXHVjMmE0XHVkMGMwXHVjNzdjXHViOWFjXHVjMmRjIFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOFx1Yzc1OCBcdWM3NzhcdWIzNzRcdWQyYjggXHVjNTkxXHVjNzQwIFx1Yzc3OFx1YjM3NFx1ZDJiOCBcdWMyYTRcdWQwYzBcdWM3N2MgKFIsQyxTKVx1Yjk3YyBcdWM3NzRcdWM2YTlcdWQ1NzRcdWMxMWMgXHVhY2IwXHVjODE1XHVkNTVjXHViMmU0LiAoMSAmbGU7IFIsQyxTICZsZTsgMjApIFx1YzVlY1x1YWUzMFx1YzExYyBSXHVjNzQwIFx1YzE4Y1x1YWQwNFx1ZDYzOCwgQ1x1YjI5NCBcdWM5MTFcdWFkMDRcdWQ2MzgsIFNcdWIyOTQgXHViMzAwXHVhZDA0XHVkNjM4XHVjNWQwIFx1ZDU3NFx1YjJmOVx1ZDU1OFx1YjI5NCBcdWM3NzhcdWIzNzRcdWQyYjhcdWM3NTggXHVjNTkxXHVjNzc0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM3OTggXHVjNzc4XHViMzc0XHVkMmI4XHViNDFjIFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOFx1Yzc1OCBcdWFjMDEgXHVjOTA0XHVjNzU4IFx1Yzc3OFx1YjM3NFx1ZDJiOFx1Yzc1OCBcdWM1OTFcdWM3NDAgUihyPHN1Yj5vPFwvc3ViPiAtIHI8c3ViPmM8XC9zdWI+KSArIEMoYzxzdWI+bzxcL3N1Yj4gLSBjPHN1Yj5jPFwvc3ViPikgKyBTKHM8c3ViPm88XC9zdWI+IC0gczxzdWI+YzxcL3N1Yj4pXHViODVjIFx1YWNiMFx1YzgxNVx1ZDU2MCBcdWMyMTggXHVjNzg4XHViMmU0LiBcdWM1ZWNcdWFlMzBcdWMxMWMgcjxzdWI+bzxcL3N1Yj4sIGM8c3ViPm88XC9zdWI+LCBzPHN1Yj5vPFwvc3ViPlx1Yzc0MCBcdWM3NzRcdWM4MDQgXHVjOTA0XHVhZTRjXHVjOWMwIFx1YjA5OFx1YzYyOCBcdWM1ZWNcdWIyOTQgXHVjMThjXHVhZDA0XHVkNjM4LCBcdWM5MTFcdWFkMDRcdWQ2MzgsIFx1YjMwMFx1YWQwNFx1ZDYzOFx1Yzc1OCBcdWFjMWNcdWMyMThcdWM3NzRcdWFjZTAsIHI8c3ViPmM8XC9zdWI+LCBjPHN1Yj5jPFwvc3ViPiwgczxzdWI+YzxcL3N1Yj5cdWIyOTQgXHViMmViXHViMjk0IFx1YzE4Y1x1YWQwNFx1ZDYzOCwgXHVjOTExXHVhZDA0XHVkNjM4LCBcdWIzMDBcdWFkMDRcdWQ2MzhcdWM3NTggXHVhYzFjXHVjMjE4XHVjNzc0XHViMmU0LiBcdWM3OTggXHVjNzc4XHViMzc0XHVkMmI4XHViNDFjIFx1YzJhNFx1ZDBjMFx1Yzc3Y1x1YjlhY1x1YzJkYyBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YThcdWM3NTggXHVjY2FiIFx1YzkwNFx1YzVkMFx1YjI5NCBcdWQ1NmRcdWMwYzEgXHVjNzc4XHViMzc0XHVkMmI4XHVhYzAwIFx1YzVjNlx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjNzA0XHVjNWQwIFx1YjA5OFx1YzY0MFx1Yzc4OFx1YjI5NCBcdWM2MDhcdWM4MWNcdWM3NTggXHVjNzc4XHViMzc0XHVkMmI4IFx1YzJhNFx1ZDBjMFx1Yzc3Y1x1Yzc0MCAoUixDLFMpID0gKDksNSwyKSBcdWM3NzRcdWIyZTQuIFx1Y2NhYlx1YzlmOCBcdWM5MDRcdWM1ZDBcdWIyOTQgXHVjMThjXHVhZDA0XHVkNjM4XHViOWNjIFx1ZDU1OFx1YjA5OCBcdWM3ODhcdWIyZTQuIFx1YjUzMFx1Yjc3Y1x1YzExYywgXHViNDUwIFx1YmM4OFx1YzlmOCBcdWM5MDRcdWM3NTggXHVjNzc4XHViMzc0XHVkMmI4XHVjNzU4IFx1YzU5MVx1Yzc0MCA5KDEgLSAwKSArIDUoMCAtIDApICsgMigwIC0gMCkgPSA5XHVjNzc0XHViMmU0LiBcdWNjOThcdWM3NGMgXHViMTI0IFx1YzkwNFx1YzVkMFx1YjI5NCBcdWM1ZWNcdWIyOTQgXHVjMThjXHVhZDA0XHVkNjM4XHVhYzAwIFx1YjQ1MCBcdWFjMWMsIFx1YzVlY1x1YjI5NCBcdWM5MTFcdWFkMDRcdWQ2MzhcdWM2NDAgXHViMzAwXHVhZDA0XHVkNjM4XHVhYzAwIFx1YWMwMVx1YWMwMSBcdWQ1NWMgXHVhYzFjLCBcdWIyZWJcdWIyOTQgXHVjMThjXHVhZDA0XHVkNjM4XHVhYzAwIFx1YjQ1MCBcdWFjMWMgXHVjNzg4XHViMmU0LiBcdWI1MzBcdWI3N2NcdWMxMWMsIFx1YjJlNFx1YzEyZlx1YmM4OFx1YzlmOCBcdWM5MDRcdWM3NTggXHVjNzc4XHViMzc0XHVkMmI4XHVjNzU4IFx1YzU5MVx1Yzc0MCA5KDIgLSAyKSArIDUoMSAtIDApICsgMigxIC0gMCkgPSA3XHVjNzc0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM3OTggXHVjNzc4XHViMzc0XHVkMmI4XHViNDFjIFx1YzJhNFx1ZDBjMFx1Yzc3Y1x1YjlhY1x1YzJkYyBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YTggUFx1YzY0MCBcdWFkZjhcdWI4MDdcdWM5YzAgXHVjNTRhXHVjNzQwIFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOCBRXHVhYzAwIFx1YzhmY1x1YzViNFx1Yzg0Y1x1Yzc0NCBcdWI1NGMsIFBcdWM3NTggXHVjNzc4XHViMzc0XHVkMmI4IFx1YzJhNFx1ZDBjMFx1Yzc3Y1x1Yzc0NCBcdWFkNmNcdWQ1NzQgUVx1YzVkMCBcdWM4MDFcdWM2YTlcdWQ1NThcdWIyOTQgXHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVjNzQ0IFx1Yzc5MVx1YzEzMVx1ZDU1OFx1YzJkY1x1YzYyNC48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlx1Yzc4NVx1YjgyNVx1Yzc0MCBcdWM1ZWNcdWI3ZWMgXHVhYzFjXHVjNzU4IFx1ZDE0Y1x1YzJhNFx1ZDJiOCBcdWNmMDBcdWM3NzRcdWMyYTRcdWI4NWMgXHVjNzc0XHViOGU4XHVjNWI0XHVjODM4IFx1Yzc4OFx1YjJlNC4gXHVhYzAxIFx1ZDE0Y1x1YzJhNFx1ZDJiOCBcdWNmMDBcdWM3NzRcdWMyYTRcdWM3NTggXHVjY2FiXHVjOWY4IFx1YzkwNFx1YzVkMFx1YjI5NCBwXHVjNjQwIHFcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiAoMSAmbGU7IHAsIHEgJmxlOyAxMCk8XC9wPlxyXG5cclxuPHA+XHViMmU0XHVjNzRjIHBcdWFjMWMgXHVjOTA0XHVjNWQwXHViMjk0IFx1YzJhNFx1ZDBjMFx1Yzc3Y1x1YjlhY1x1YzJkYyBcdWI5YzhcdWMyYTRcdWQxMzBcdWFjMDAgXHVjNzkxXHVjMTMxXHVkNTVjIFx1Yzc5OCBcdWM3NzhcdWIzNzRcdWQyYjhcdWI0MWMgXHVkNTA0XHViODVjXHVhZGY4XHViN2E4IFBcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWMwXHViYTcwLCBcdWFkZjggXHViMmU0XHVjNzRjIHFcdWFjMWMgXHVjOTA0XHVjNWQwXHViMjk0IFx1YjJlNFx1Yjk3OCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YTggUVx1YWMwMCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuIFx1YjQ1MCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YThcdWM3NTggXHVhYzAxIFx1YzkwNFx1Yzc0MCBcdWM4MDFcdWM1YjRcdWIzYzQgMVx1YWUwMFx1Yzc5MCBcdWM3NzRcdWMwYzFcdWM3NzRcdWJhNzAsIDgwXHVhZTAwXHVjNzkwXHViOTdjIFx1YjExOFx1YzljMCBcdWM1NGFcdWIyOTRcdWIyZTQuIFFcdWM3NTggXHViYWE4XHViNGUwIFx1YzkwNFx1Yzc0MCBcdWI5YzhcdWNlNjhcdWQ0NWNcdWI4NWMgXHVjMmRjXHVjNzkxXHVkNTU4XHVjOWMwIFx1YzU0YVx1YjI5NFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHViOWM4XHVjOWMwXHViOWM5IFx1YzkwNFx1YzVkMFx1YjI5NCAwXHVjNzc0IFx1YjQ1MCBcdWFjMWMgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPlx1YWMwMSBcdWQxNGNcdWMyYTRcdWQyYjggXHVjZjAwXHVjNzc0XHVjMmE0XHVjNWQwIFx1YjMwMFx1ZDU3NFx1YzExYywgUFx1Yzc1OCBcdWM3NzhcdWIzNzRcdWQyYjggXHVjMmE0XHVkMGMwXHVjNzdjXHVjNzQ0IFx1YWQ2Y1x1ZDU3NCBRXHVjNWQwIFx1YzgwMVx1YzZhOVx1ZDU1YyBcdWI0YTQsIFx1YWMwMSBcdWM5MDRcdWM3NTggXHVjNzc4XHViMzc0XHVkMmI4XHVjNzU4IFx1YzU5MVx1Yzc0NCBcdWFjZjVcdWJjMzFcdWM3M2NcdWI4NWMgXHVhZDZjXHViZDg0XHVkNTc0IFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC4gXHViOWNjXHVjNTdkLCBcdWM3NzhcdWIzNzRcdWQyYjhcdWM3NTggXHVjNTkxXHVjNzQ0IFx1YzcyMFx1Yzc3Y1x1ZDU1OFx1YWM4YyBcdWFjYjBcdWM4MTVcdWQ1NjAgXHVjMjE4IFx1YzVjNlx1YjI5NCBcdWM5MDRcdWM3NzQgXHVjNzg4XHViMmU0XHViYTc0LCBcdWFkZjggXHVjOTA0XHVjNzQwIC0xXHVjNzQ0IFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC48XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIwIiwicHJvYmxlbV9sYW5nX2NvZGUiOiJcdWQ1NWNcdWFkNmRcdWM1YjQifSx7InByb2JsZW1faWQiOiIzODI2IiwicHJvYmxlbV9sYW5nIjoiMSIsInRpdGxlIjoiU3R5bGlzaCIsImRlc2NyaXB0aW9uIjoiPHA+U3R5bGlzaCBpcyBhIHByb2dyYW1taW5nIGxhbmd1YWdlIHdob3NlIHN5bnRheCBjb21wcmlzZXMgbmFtZXMsIHRoYXQgYXJlIHNlcXVlbmNlcyBvZiBMYXRpbiBhbHBoYWJldCBsZXR0ZXJzLCB0aHJlZSB0eXBlcyBvZiBncm91cGluZyBzeW1ib2xzLCBwZXJpb2RzIChgLiYjMzk7KSwgYW5kIG5ld2xpbmVzLiBHcm91cGluZyBzeW1ib2xzLCBuYW1lbHkgcm91bmQgYnJhY2tldHMgKGAoJiMzOTsgYW5kIGApJiMzOTspLCBjdXJseSBicmFja2V0cyAoYHsmIzM5OyBhbmQgYH0mIzM5OyksIGFuZCBzcXVhcmUgYnJhY2tldHMgKGBbJiMzOTsgYW5kIGBdJiMzOTspLCBtdXN0IG1hdGNoIGFuZCBiZSBuZXN0ZWQgcHJvcGVybHkuIFVubGlrZSBtb3N0IG90aGVyIHByb2dyYW1taW5nIGxhbmd1YWdlcywgU3R5bGlzaCB1c2VzIHBlcmlvZHMgaW5zdGVhZCBvZiB3aGl0ZXNwYWNlcyBmb3IgdGhlIHB1cnBvc2Ugb2YgdGVybSBzZXBhcmF0aW9uLiBUaGUgZm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgb2YgYSBTdHlsaXNoIHByb2dyYW0uPFwvcD5cclxuXHJcbjxwcmU+XHJcbihXZWxjb21lLnRvXHJcbi4uLi4uLi4uLlN0eWxpc2gpXHJcbntTdHlsaXNoLmlzXHJcbi4uLi4uWy4oYS5wcm9ncmFtbWluZy5sYW5ndWFnZS5mdW4udG8ubGVhcm4pXHJcbi4uLi4uLi5dXHJcbi4uLi4uTWF5YmUuW1xyXG4uLi4uLi4uSXQud2lsbC5iZS5hbi5vZmZpY2lhbC5JQ1BDLmxhbmd1YWdlXHJcbi4uLi4uLi5dXHJcbi4uLi4ufTxcL3ByZT5cclxuXHJcbjxwPkFzIHlvdSBzZWUgaW4gdGhlIGV4YW1wbGUsIGEgU3R5bGlzaCBwcm9ncmFtIGlzIGluZGVudGVkIGJ5IHBlcmlvZHMuIFRoZSBhbW91bnQgb2YgaW5kZW50YXRpb24gb2YgYSBsaW5lIGlzIHRoZSBudW1iZXIgb2YgbGVhZGluZyBwZXJpb2RzIG9mIGl0LjxcL3A+XHJcblxyXG48cD5Zb3VyIG1pc3Npb24gaXMgdG8gdmlzaXQgU3R5bGlzaCBtYXN0ZXJzLCBsZWFybiB0aGVpciBpbmRlbnRhdGlvbiBzdHlsZXMsIGFuZCBiZWNvbWUgdGhlIHlvdW5nZXN0IFN0eWxpc2ggbWFzdGVyLiBBbiBpbmRlbnRhdGlvbiBzdHlsZSBmb3Igd2VsbC1pbmRlbnRlZCBTdHlsaXNoIHByb2dyYW1zIGlzIGRlIG5lZCBieSBhIHRyaXBsZSBvZiBpbnRlZ2VycywgKFIsIEMsIFMpLCBzYXRpc2Z5aW5nIDEgJmxlOyBSLCBDLCBTICZsZTsgMjAuIFIsIEMgYW5kIFMgYXJlIGFtb3VudHMgb2YgaW5kZW50YXRpb24gaW50cm9kdWNlZCBieSBhbiBvcGVuIHJvdW5kIGJyYWNrZXQsIGFuIG9wZW4gY3VybHkgYnJhY2tldCwgYW5kIGFuIG9wZW4gc3F1YXJlIGJyYWNrZXQsIHJlc3BlY3RpdmVseS48XC9wPlxyXG5cclxuPHA+SW4gYSB3ZWxsLWluZGVudGVkIHByb2dyYW0sIHRoZSBhbW91bnQgb2YgaW5kZW50YXRpb24gb2YgYSBsaW5lIGlzIGdpdmVuIGJ5IFIocm8gLSByYykgKyBDKGNvIC0gY2MpICsgUyhzbyAtIHNjKSwgd2hlcmUgcm8sIGNvLCBhbmQgc28gYXJlIHRoZSBudW1iZXJzIG9mIG9jY3VycmVuY2VzIG9mIG9wZW4gcm91bmQsIGN1cmx5LCBhbmQgc3F1YXJlIGJyYWNrZXRzIGluIGFsbCBwcmVjZWRpbmcgbGluZXMsIHJlc3BlY3RpdmVseSwgYW5kIHJjLCBjYywgYW5kIHNjIGFyZSB0aG9zZSBvZiBjbG9zZSBicmFja2V0cy4gVGhlIGZpcnN0IGxpbmUgaGFzIG5vIGluZGVudGF0aW9uIGluIGFueSB3ZWxsLWluZGVudGVkIHByb2dyYW0uPFwvcD5cclxuXHJcbjxwPlRoZSBhYm92ZSBleGFtcGxlIGlzIGZvcm1hdHRlZCBpbiB0aGUgaW5kZW50YXRpb24gc3R5bGUgKFIsIEMsIFMpID0gKDksIDUsIDIpLiBUaGUgb25seSBncm91cGluZyBzeW1ib2wgb2NjdXJyaW5nIGluIHRoZSBmaSByc3QgbGluZSBvZiB0aGUgYWJvdmUgcHJvZ3JhbSBpcyBhbiBvcGVuIHJvdW5kIGJyYWNrZXQuIFRoZXJlZm9yZSB0aGUgYW1vdW50IG9mIGluZGVudGF0aW9uIGZvciB0aGUgc2Vjb25kIGxpbmUgaXMgOSAmbWlkZG90OyAoMSAtIDApICsgNSAmbmJzcDsmbWlkZG90OyAoMCAtIDApICsgMiAmbWlkZG90OyAoMCAtIDApID0gOS4gVGhlIGZpcnN0IGZvdXIgbGluZXMgY29udGFpbiB0d28gb3BlbiByb3VuZCBicmFja2V0cywgb25lIG9wZW4gY3VybHkgYnJhY2tldCwgb25lIG9wZW4gc3F1YXJlIGJyYWNrZXQsIHR3byBjbG9zZSByb3VuZCBicmFja2V0cywgYnV0IG5vIGNsb3NlIGN1cmx5IG5vciBzcXVhcmUgYnJhY2tldC4gVGhlcmVmb3JlIHRoZSBhbW91bnQgb2YgaW5kZW50YXRpb24gZm9yIHRoZSBmdGggbGluZSBpcyA5ICZtaWRkb3Q7ICgyIC0gMikgKyA1ICZtaWRkb3Q7ICgxIC0gMCkgKyAyICZtaWRkb3Q7ICgxIC0gMCkgPSA3LjxcL3A+XHJcblxyXG48cD5TdHlsaXNoIG1hc3RlcnMgd3JpdGUgb25seSB3ZWxsLWluZGVudGVkIFN0eWxpc2ggcHJvZ3JhbXMuIEV2ZXJ5IG1hc3RlciBoYXMgaGlzXC9oZXIgb3duIGluZGVudGF0aW9uIHN0eWxlLjxcL3A+XHJcblxyXG48cD5Xcml0ZSBhIHByb2dyYW0gdGhhdCBpbWl0YXRlcyBpbmRlbnRhdGlvbiBzdHlsZXMgb2YgU3R5bGlzaCBtYXN0ZXJzLjxcL3A+IiwiaW5wdXQiOiI8cD5UaGUgaW5wdXQgY29uc2lzdHMgb2YgbXVsdGlwbGUgZGF0YXNldHMuIFRoZSBmaSByc3QgbGluZSBvZiBhIGRhdGFzZXQgY29udGFpbnMgdHdvIGludGVnZXJzIHAgKDEgXHUwMDE0JmxlOyBwICZsZTsgMTApIGFuZCBxICgxICZsZTsgcSAmbGU7IDEwKS4gVGhlIG5leHQgcCBsaW5lcyBmb3JtIGEgd2VsbC1pbmRlbnRlZCBwcm9ncmFtIFAgd3JpdHRlbiBieSBhIFN0eWxpc2ggbWFzdGVyIGFuZCB0aGUgZm9sbG93aW5nIHEgbGluZXMgZm9ybSBhbm90aGVyIHByb2dyYW0gUS4gWW91IG1heSBhc3N1bWUgdGhhdCBldmVyeSBsaW5lIG9mIGJvdGggcHJvZ3JhbXMgaGFzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgYW5kIGF0IG1vc3QgODAgY2hhcmFjdGVycy4gQWxzbywgeW91IG1heSBhc3N1bWUgdGhhdCBubyBsaW5lIG9mIFEgc3RhcnRzIHdpdGggYSBwZXJpb2QuPFwvcD5cclxuXHJcbjxwPlRoZSBsYXN0IGRhdGFzZXQgaXMgZm9sbG93ZWQgYnkgYSBsaW5lIGNvbnRhaW5pbmcgdHdvIHplcm9zLjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPkFwcGx5IHRoZSBpbmRlbnRhdGlvbiBzdHlsZSBvZiBQIHRvIFEgYW5kIG91dHB1dCB0aGUgYXBwcm9wcmlhdGUgYW1vdW50IG9mIGluZGVudGF0aW9uIGZvciBlYWNoIGxpbmUgb2YgUS4gVGhlIGFtb3VudHMgbXVzdCBiZSBvdXRwdXQgaW4gYSBsaW5lIGluIHRoZSBvcmRlciBvZiBjb3JyZXNwb25kaW5nIGxpbmVzIG9mIFEgYW5kIHRoZXkgbXVzdCBiZSBzZXBhcmF0ZWQgYnkgYSBzaW5nbGUgc3BhY2UuIFRoZSBsYXN0IG9uZSBzaG91bGQgbm90IGJlIGZvbGxvd2VkIGJ5IHRyYWlsaW5nIHNwYWNlcy4gSWYgdGhlIGFwcHJvcHJpYXRlIGFtb3VudCBvZiBpbmRlbnRhdGlvbiBvZiBhIGxpbmUgb2YgUSBjYW5ub3QgYmUgZGV0ZXJtaW5lZCB1bmlxdWVseSB0aHJvdWdoIGFuYWx5c2lzIG9mIFAsIHRoZW4gb3V0cHV0IC0xIGZvciB0aGF0IGxpbmUuPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMSIsInByb2JsZW1fbGFuZ19jb2RlIjoiXHVjNjAxXHVjNWI0In1d