시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 128 MB807743.750%

문제

ACM 프로그래밍 대회의 문제 설명을 보면 약자가 ACM인 단어가 많이 등장한다. 최근 몇 년동안 월드 파이널 문제에는 "Apartment Construction Management", "Atheneum of Culture and Movies", "Association of Cover Manufactures", "ACM Airlines", "Association for Computational Marinelife"가 등장했다. 심지어 이름이 "Amelia Cheese Mite"인 곤충도 등장했다. 하지만, A, C, M으로 시작하는 단어의 조합은 한정되어 있고, 점점 이 약자를 이용해서 문제를 만드는 것이 어려워 졌다. (Antidisestablishmentarianistic Chthonian Metalinguistics를 이용한 문제를 만드는 것은 거의 불가능하다)

다행히 요즘에는 약어를 조금 더 유연하게 만들 수 있다. 예를 들면, 다음과 같다.

GDB - Gnu DeBugger

Linux - LINus's UniX, LINUs's miniX, Linux Is Not UniX

SNOBOL - StriNg Oriented symBOlic Language

SPITBOL - Speedy ImplemenTation of snoBOL

위의 약어를 만드는 규칙은 다음과 같다.

1. 의미가 없는 단어(예를 들면 of, a, the, 등등등)는 무시한다.

2. 약어에 등장하는 글자는 순서대로 등장해야 한다.

3. 모든 의미가 있는 단어가 약어에 포함되어야 한다.

물론 실제 약어를 만들 때는 위의 규칙을 지키지 않는 경우도 있다. 예를 들어, RADAR는 "RAdio Detecting And Ranging"의 약자이다. 즉, RADAR는 이 문제에서 올바른 약어가 될 수 없다. 문제의 조건을 지키는 약어를 만든다면 RADR, RADRAN, DODGING이 될 것이다.

의미가 없는 단어의 목록, 약자와 어떤 문장이 주어졌을 때, 그 약자를 만들 수 있는 방법의 수를 구하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 의미가 없는 단어의 개수 n(1 ≤ n ≤ 100)이 주어진다. 다음 n개의 줄에는 의미가 없는 단어가 소문자로 주어진다. 그 다음 줄에는 약자와 문장이 여러개 주어진다. 약자는 대문자로만 이루어져 있고, 문장은 소문자와 공백으로만 이루어져 있다. 약어의 길이는 적어도 1이며, 문장은 적어도 한 개의 의미 없는 단어를 포함하고 있다. 또, 모든 문자은 150자 이내이다. 약자와 문장의 끝에는 "LAST CASE"가 주어진다.

출력

각 테스트 케이스에 대해서, 주어진 약어가 올바른 약어가 아니라면 "is not a valid abbreviation"을 출력하고, 올바른 약어라면 "can be formed in i ways"를 출력한다. 여기서 i는 약어를 구성할 수 있는 경우의 수이다. i는 32비트 정수 범위를 넘지 않는다.

예제 입력 1

2
and
of
ACM academy of computer makers
RADAR radio detection and ranging
LAST CASE
2
a
an
APPLY an apple a day
LAST CASE
0

예제 출력 1

ACM can be formed in 2 ways
RADAR is not a valid abbreviation
APPLY can be formed in 1 ways
W3sicHJvYmxlbV9pZCI6IjQwNzQiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWM1N2RcdWM1YjQiLCJkZXNjcmlwdGlvbiI6IjxwPlxyXG5cdEFDTSBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3OThcdWJjMGQgXHViMzAwXHVkNjhjXHVjNzU4IFx1YmIzOFx1YzgxYyBcdWMxMjRcdWJhODVcdWM3NDQgXHViY2Y0XHViYTc0IFx1YzU3ZFx1Yzc5MFx1YWMwMCBBQ01cdWM3NzggXHViMmU4XHVjNWI0XHVhYzAwIFx1YjljZVx1Yzc3NCBcdWI0ZjFcdWM3YTVcdWQ1NWNcdWIyZTQuIFx1Y2Q1Y1x1YWRmYyBcdWJhODcgXHViMTQ0XHViM2Q5XHVjNTQ4IFx1YzZkNFx1YjRkYyBcdWQzMGNcdWM3NzRcdWIxMTAgXHViYjM4XHVjODFjXHVjNWQwXHViMjk0ICZxdW90O0FwYXJ0bWVudCBDb25zdHJ1Y3Rpb24gTWFuYWdlbWVudCZxdW90OywgJnF1b3Q7QXRoZW5ldW0gb2YgQ3VsdHVyZSBhbmQgTW92aWVzJnF1b3Q7LCAmcXVvdDtBc3NvY2lhdGlvbiBvZiBDb3ZlciBNYW51ZmFjdHVyZXMmcXVvdDssICZxdW90O0FDTSBBaXJsaW5lcyZxdW90OywgJnF1b3Q7QXNzb2NpYXRpb24gZm9yIENvbXB1dGF0aW9uYWwgTWFyaW5lbGlmZSZxdW90O1x1YWMwMCBcdWI0ZjFcdWM3YTVcdWQ1ODhcdWIyZTQuIFx1YzJlY1x1YzljMFx1YzViNCBcdWM3NzRcdWI5ODRcdWM3NzQgJnF1b3Q7QW1lbGlhIENoZWVzZSBNaXRlJnF1b3Q7XHVjNzc4IFx1YWNlNFx1Y2RhOVx1YjNjNCBcdWI0ZjFcdWM3YTVcdWQ1ODhcdWIyZTQuIFx1ZDU1OFx1YzljMFx1YjljYywgQSwgQywgTVx1YzczY1x1Yjg1YyBcdWMyZGNcdWM3OTFcdWQ1NThcdWIyOTQgXHViMmU4XHVjNWI0XHVjNzU4IFx1Yzg3MFx1ZDU2OVx1Yzc0MCBcdWQ1NWNcdWM4MTVcdWI0MThcdWM1YjQgXHVjNzg4XHVhY2UwLCBcdWM4MTBcdWM4MTAgXHVjNzc0IFx1YzU3ZFx1Yzc5MFx1Yjk3YyBcdWM3NzRcdWM2YTlcdWQ1NzRcdWMxMWMgXHViYjM4XHVjODFjXHViOTdjIFx1YjljY1x1YjRkY1x1YjI5NCBcdWFjODNcdWM3NzQgXHVjNWI0XHViODI0XHVjNmNjIFx1Yzg0Y1x1YjJlNC4gKEFudGlkaXNlc3RhYmxpc2htZW50YXJpYW5pc3RpYyBDaHRob25pYW4gTWV0YWxpbmd1aXN0aWNzXHViOTdjIFx1Yzc3NFx1YzZhOVx1ZDU1YyBcdWJiMzhcdWM4MWNcdWI5N2MgXHViOWNjXHViNGRjXHViMjk0IFx1YWM4M1x1Yzc0MCBcdWFjNzBcdWM3NTggXHViZDg4XHVhYzAwXHViMmE1XHVkNTU4XHViMmU0KTxcL3A+XHJcblxyXG48cD5cclxuXHRcdWIyZTRcdWQ1ODlcdWQ3ODggXHVjNjk0XHVjOTk4XHVjNWQwXHViMjk0IFx1YzU3ZFx1YzViNFx1Yjk3YyBcdWM4NzBcdWFlMDggXHViMzU0IFx1YzcyMFx1YzVmMFx1ZDU1OFx1YWM4YyBcdWI5Y2NcdWI0ZTQgXHVjMjE4IFx1Yzc4OFx1YjJlNC4gXHVjNjA4XHViOTdjIFx1YjRlNFx1YmE3NCwgXHViMmU0XHVjNzRjXHVhY2ZjIFx1YWMxOVx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHJcblx0R0RCIC0gR251IERlQnVnZ2VyPFwvcD5cclxuPHA+XHJcblx0TGludXggLSBMSU51cyYjMzk7cyBVbmlYLCBMSU5VcyYjMzk7cyBtaW5pWCwgTGludXggSXMgTm90IFVuaVg8XC9wPlxyXG48cD5cclxuXHRTTk9CT0wgLSBTdHJpTmcgT3JpZW50ZWQgc3ltQk9saWMgTGFuZ3VhZ2U8XC9wPlxyXG48cD5cclxuXHRTUElUQk9MIC0gU3BlZWR5IEltcGxlbWVuVGF0aW9uIG9mIHNub0JPTDxcL3A+XHJcblxyXG48cD5cclxuXHRcdWM3MDRcdWM3NTggXHVjNTdkXHVjNWI0XHViOTdjIFx1YjljY1x1YjRkY1x1YjI5NCBcdWFkZGNcdWNlNTlcdWM3NDAgXHViMmU0XHVjNzRjXHVhY2ZjIFx1YWMxOVx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHJcblx0MS4gXHVjNzU4XHViYmY4XHVhYzAwIFx1YzVjNlx1YjI5NCBcdWIyZThcdWM1YjQoXHVjNjA4XHViOTdjIFx1YjRlNFx1YmE3NCBvZiwgYSwgdGhlLCBcdWI0ZjFcdWI0ZjFcdWI0ZjEpXHViMjk0IFx1YmIzNFx1YzJkY1x1ZDU1Y1x1YjJlNC48XC9wPlxyXG48cD5cclxuXHQyLiBcdWM1N2RcdWM1YjRcdWM1ZDAgXHViNGYxXHVjN2E1XHVkNTU4XHViMjk0IFx1YWUwMFx1Yzc5MFx1YjI5NCBcdWMyMWNcdWMxMWNcdWIzMDBcdWI4NWMgXHViNGYxXHVjN2E1XHVkNTc0XHVjNTdjIFx1ZDU1Y1x1YjJlNC48XC9wPlxyXG48cD5cclxuXHQzLiBcdWJhYThcdWI0ZTAgXHVjNzU4XHViYmY4XHVhYzAwIFx1Yzc4OFx1YjI5NCBcdWIyZThcdWM1YjRcdWFjMDAgXHVjNTdkXHVjNWI0XHVjNWQwIFx1ZDNlY1x1ZDU2OFx1YjQxOFx1YzViNFx1YzU3YyBcdWQ1NWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlxyXG5cdFx1YmIzY1x1Yjg2MCBcdWMyZTRcdWM4MWMgXHVjNTdkXHVjNWI0XHViOTdjIFx1YjljY1x1YjRlNCBcdWI1NGNcdWIyOTQgXHVjNzA0XHVjNzU4IFx1YWRkY1x1Y2U1OVx1Yzc0NCBcdWM5YzBcdWQwYTRcdWM5YzAgXHVjNTRhXHViMjk0IFx1YWNiZFx1YzZiMFx1YjNjNCBcdWM3ODhcdWIyZTQuIFx1YzYwOFx1Yjk3YyBcdWI0ZTRcdWM1YjQsIFJBREFSXHViMjk0ICZxdW90O1JBZGlvIERldGVjdGluZyBBbmQgUmFuZ2luZyZxdW90O1x1Yzc1OCBcdWM1N2RcdWM3OTBcdWM3NzRcdWIyZTQuIFx1Yzk4OSwgUkFEQVJcdWIyOTQgXHVjNzc0IFx1YmIzOFx1YzgxY1x1YzVkMFx1YzExYyBcdWM2MmNcdWJjMTRcdWI5NzggXHVjNTdkXHVjNWI0XHVhYzAwIFx1YjQyMCBcdWMyMTggXHVjNWM2XHViMmU0LiBcdWJiMzhcdWM4MWNcdWM3NTggXHVjODcwXHVhYzc0XHVjNzQ0IFx1YzljMFx1ZDBhNFx1YjI5NCBcdWM1N2RcdWM1YjRcdWI5N2MgXHViOWNjXHViNGUwXHViMmU0XHViYTc0IFJBRFIsIFJBRFJBTiwgRE9ER0lOR1x1Yzc3NCBcdWI0MjAgXHVhYzgzXHVjNzc0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cclxuXHRcdWM3NThcdWJiZjhcdWFjMDAgXHVjNWM2XHViMjk0IFx1YjJlOFx1YzViNFx1Yzc1OCBcdWJhYTlcdWI4NWQsIFx1YzU3ZFx1Yzc5MFx1YzY0MCBcdWM1YjRcdWI1YTQgXHViYjM4XHVjN2E1XHVjNzc0IFx1YzhmY1x1YzViNFx1Yzg0Y1x1Yzc0NCBcdWI1NGMsIFx1YWRmOCBcdWM1N2RcdWM3OTBcdWI5N2MgXHViOWNjXHViNGU0IFx1YzIxOCBcdWM3ODhcdWIyOTQgXHViYzI5XHViYzk1XHVjNzU4IFx1YzIxOFx1Yjk3YyBcdWFkNmNcdWQ1NThcdWIyOTQgXHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVjNzQ0IFx1Yzc5MVx1YzEzMVx1ZDU1OFx1YzJkY1x1YzYyNC48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlxyXG5cdFx1Yzc4NVx1YjgyNVx1Yzc0MCBcdWM1ZWNcdWI3ZWMgXHVhYzFjXHVjNzU4IFx1ZDE0Y1x1YzJhNFx1ZDJiOCBcdWNmMDBcdWM3NzRcdWMyYTRcdWI4NWMgXHVjNzc0XHViOGU4XHVjNWI0XHVjODM4IFx1Yzc4OFx1YjJlNC4gXHVhYzAxIFx1ZDE0Y1x1YzJhNFx1ZDJiOCBcdWNmMDBcdWM3NzRcdWMyYTRcdWM3NTggXHVjY2FiXHVjOWY4IFx1YzkwNFx1YzVkMFx1YjI5NCBcdWM3NThcdWJiZjhcdWFjMDAgXHVjNWM2XHViMjk0IFx1YjJlOFx1YzViNFx1Yzc1OCBcdWFjMWNcdWMyMTggbigxICZsZTsgbiAmbGU7IDEwMClcdWM3NzQgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiBcdWIyZTRcdWM3NGMgblx1YWMxY1x1Yzc1OCBcdWM5MDRcdWM1ZDBcdWIyOTQgXHVjNzU4XHViYmY4XHVhYzAwIFx1YzVjNlx1YjI5NCBcdWIyZThcdWM1YjRcdWFjMDAgXHVjMThjXHViYjM4XHVjNzkwXHViODVjIFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC4gXHVhZGY4IFx1YjJlNFx1Yzc0YyBcdWM5MDRcdWM1ZDBcdWIyOTQgXHVjNTdkXHVjNzkwXHVjNjQwIFx1YmIzOFx1YzdhNVx1Yzc3NCBcdWM1ZWNcdWI3ZWNcdWFjMWMgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiBcdWM1N2RcdWM3OTBcdWIyOTQgXHViMzAwXHViYjM4XHVjNzkwXHViODVjXHViOWNjIFx1Yzc3NFx1YjhlOFx1YzViNFx1YzgzOCBcdWM3ODhcdWFjZTAsIFx1YmIzOFx1YzdhNVx1Yzc0MCBcdWMxOGNcdWJiMzhcdWM3OTBcdWM2NDAgXHVhY2Y1XHViYzMxXHVjNzNjXHViODVjXHViOWNjIFx1Yzc3NFx1YjhlOFx1YzViNFx1YzgzOCBcdWM3ODhcdWIyZTQuIFx1YzU3ZFx1YzViNFx1Yzc1OCBcdWFlMzhcdWM3NzRcdWIyOTQgXHVjODAxXHVjNWI0XHViM2M0IDFcdWM3NzRcdWJhNzAsIFx1YmIzOFx1YzdhNVx1Yzc0MCBcdWM4MDFcdWM1YjRcdWIzYzQgXHVkNTVjIFx1YWMxY1x1Yzc1OCBcdWM3NThcdWJiZjggXHVjNWM2XHViMjk0IFx1YjJlOFx1YzViNFx1Yjk3YyBcdWQzZWNcdWQ1NjhcdWQ1NThcdWFjZTAgXHVjNzg4XHViMmU0LiBcdWI2MTAsIFx1YmFhOFx1YjRlMCBcdWJiMzhcdWM3OTBcdWM3NDAgMTUwXHVjNzkwIFx1Yzc3NFx1YjBiNFx1Yzc3NFx1YjJlNC4gXHVjNTdkXHVjNzkwXHVjNjQwIFx1YmIzOFx1YzdhNVx1Yzc1OCBcdWIwNWRcdWM1ZDBcdWIyOTQgJnF1b3Q7TEFTVCBDQVNFJnF1b3Q7XHVhYzAwIFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5cclxuXHRcdWFjMDEgXHVkMTRjXHVjMmE0XHVkMmI4IFx1Y2YwMFx1Yzc3NFx1YzJhNFx1YzVkMCBcdWIzMDBcdWQ1NzRcdWMxMWMsIFx1YzhmY1x1YzViNFx1YzljNCBcdWM1N2RcdWM1YjRcdWFjMDAgXHVjNjJjXHViYzE0XHViOTc4IFx1YzU3ZFx1YzViNFx1YWMwMCBcdWM1NDRcdWIyYzhcdWI3N2NcdWJhNzQgJnF1b3Q7aXMgbm90IGEgdmFsaWQgYWJicmV2aWF0aW9uJnF1b3Q7XHVjNzQ0IFx1Y2Q5Y1x1YjgyNVx1ZDU1OFx1YWNlMCwgXHVjNjJjXHViYzE0XHViOTc4IFx1YzU3ZFx1YzViNFx1Yjc3Y1x1YmE3NCAmcXVvdDtjYW4gYmUgZm9ybWVkIGluIGkgd2F5cyZxdW90O1x1Yjk3YyBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuIFx1YzVlY1x1YWUzMFx1YzExYyBpXHViMjk0IFx1YzU3ZFx1YzViNFx1Yjk3YyBcdWFkNmNcdWMxMzFcdWQ1NjAgXHVjMjE4IFx1Yzc4OFx1YjI5NCBcdWFjYmRcdWM2YjBcdWM3NTggXHVjMjE4XHVjNzc0XHViMmU0LiBpXHViMjk0IDMyXHViZTQ0XHVkMmI4IFx1YzgxNVx1YzIxOCBcdWJjOTRcdWM3MDRcdWI5N2MgXHViMTE4XHVjOWMwIFx1YzU0YVx1YjI5NFx1YjJlNC48XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIwIiwiaHRtbF90aXRsZSI6IjAiLCJwcm9ibGVtX2xhbmdfdGNvZGUiOiJLb3JlYW4ifSx7InByb2JsZW1faWQiOiI0MDc0IiwicHJvYmxlbV9sYW5nIjoiMSIsInRpdGxlIjoiQUNNIChBQ3JvbnltIE1ha2VyKSIsImRlc2NyaXB0aW9uIjoiPHA+VGhlIHNhZGlzdHMgd2hvIGRlc2lnbiBwcm9ibGVtcyBmb3IgQUNNIHByb2dyYW1taW5nIGNvbnRlc3RzIG9mdGVuIGxpa2UgdG8gaW5jbHVkZSB0aGUgYWJicmV2aWF0aW9uICZsZHF1bztBQ00mcmRxdW87IHNvbWV3aGVyZSBpbiB0aGVpciBwcm9ibGVtIGRlc2NyaXB0aW9ucy4gVGh1cywgaW4geWVhcnMgcGFzdCwgdGhlIFdvcmxkIEZpbmFscyBoYXMgaGFkIHByb2JsZW1zIGludm9sdmluZyAmbGRxdW87QXBhcnRtZW50IENvbnN0cnVjdGlvbiBNYW5hZ2VtZW50LCZyZHF1bzsgdGhlICZsZHF1bztBdGhlbmV1bSBvZiBDdWx0dXJlIGFuZCBNb3ZpZXMsJnJkcXVvOyB0aGUgJmxkcXVvO0Fzc29jaWF0aW9uIG9mIENvdmVyIE1hbnVmYWN0dXJlcnMsJnJkcXVvOyAmbGRxdW87QUNNIEFpcmxpbmVzLCZyZHF1bzsgdGhlICZsZHF1bztBc3NvY2lhdGlvbiBmb3IgQ29tcHV0YXRpb25hbCBNYXJpbmVsaWZlLCZyZHF1bzsgYW5kIGV2ZW4gYW4gaW5zZWN0IG5hbWVkICZsZHF1bztBbWVsaWEgQ2hlZXNlIE1pdGUuJnJkcXVvOyBIb3dldmVyLCB0aGUgbnVtYmVyIG9mIHdvcmQgY29tYmluYXRpb25zIGJlZ2lubmluZyB3aXRoIEEsIEMsIGFuZCBNIHRoYXQgbWFrZSBzZW5zZSBpcyBmaW5pdGUgYW5kIHRoZSBwcm9ibGVtIHdyaXRlcnMgYXJlIHN0YXJ0aW5nIHRvIHJ1biBvdXQgb2YgaWRlYXMgKGl0JnJzcXVvO3MgaGFyZCB0byB0aGluayBvZiBwcm9ibGVtcyBhYm91dCAmbGRxdW87QW50aWRpc2VzdGFibGlzaG1lbnRhcmlhbmlzdGljIENodGhvbmlhbiBNZXRhbGluZ3Vpc3RpY3MmcmRxdW87KS4gRm9ydHVuYXRlbHksIG1vZGVybiBjdWx0dXJlIGFsbG93cyBtb3JlIFx1ZmIwMmV4aWJpbGl0eSBpbiBkZXNpZ25pbmcgYWJicmV2aWF0aW9ucyAmbWRhc2g7IGNvbnNpZGVyLCBmb3IgZXhhbXBsZTo8XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT5HREIgJm1kYXNoOyBHbnUgRGVCdWdnZXI8XC9saT5cclxuXHQ8bGk+TElOVVggJm1kYXNoOyBlaXRoZXIgJmxkcXVvO0xJTnVzJnJzcXVvO3MgVW5pWCZyZHF1bzsgb3IgJmxkcXVvO0xJTlVzJnJzcXVvO3MgbWluaVgmcmRxdW87IG9yICZsZHF1bztMaW51eCBJcyBOb3QgVW5pWCZyZHF1bzs8XC9saT5cclxuXHQ8bGk+U05PQk9MICZtZGFzaDsgU3RyaU5nIE9yaWVudGVkIHN5bUJPbGljIExhbmd1YWdlPFwvbGk+XHJcblx0PGxpPlNQSVRCT0wgJm1kYXNoOyBTUGVlZHkgSW1wbGVtZW5UYXRpb24gb2Ygc25vQk9MPFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHA+VGhlIHJ1bGVzIHVzZWQgaW4gdGhlc2UgZXhhbXBsZXMgc2VlbSB0byBiZTo8XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT5JbnNpZ25pZmljYW50IHdvcmRzIChzdWNoIGFzICZsZHF1bztvZiZyZHF1bzssICZsZHF1bzthJnJkcXVvOywgJmxkcXVvO3RoZSZyZHF1bzssIGV0Yy4pIGFyZSBpZ25vcmVkLjxcL2xpPlxyXG5cdDxsaT5UaGUgbGV0dGVycyBvZiB0aGUgYWJicmV2aWF0aW9uIG11c3QgYXBwZWFyLCBpbiB0aGUgY29ycmVjdCBvcmRlciwgYXMgYW4gb3JkZXJlZCBzdWJsaXN0IG9mIHRoZSBsZXR0ZXJzIGluIHRoZSBzaWduaVx1ZmIwMWNhbnQgd29yZHMgb2YgdGhlIHBocmFzZSB0byBiZSBhYmJyZXZpYXRlZC48XC9saT5cclxuXHQ8bGk+QXQgbGVhc3Qgb25lIGxldHRlciBvZiB0aGUgYWJicmV2aWF0aW9uIG11c3QgY29tZSBmcm9tIGV2ZXJ5IHNpZ25pXHVmYjAxY2FudCB3b3JkIChtdWx0aXBsZSBvY2N1cnJlbmNlcyBvZiBhIGxldHRlciBhcmUsIG9mIGNvdXJzZSwgdHJlYXRlZCBhcyBkaXN0aW5jdCkuPFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHA+T2YgY291cnNlIHRoZXNlIHJ1bGVzIGFyZSBvZnRlbiBicm9rZW4gaW4gcmVhbCBsaWZlLiBGb3IgaW5zdGFuY2UsIFJBREFSIGlzIGFuIGFiYnJldmlhdGlvbiBmb3IgJmxkcXVvO1JBZGlvIERldGVjdGluZyBBbmQgUmFuZ2luZyZyZHF1bzsuIFVuZGVyIG91ciBydWxlcyAoYXNzdW1pbmcgdGhhdCAmbGRxdW87YW5kJnJkcXVvOyBpcyBhbiBpbnNpZ25pXHVmYjAxY2FudCB3b3JkKSwgdGhpcyB3b3VsZCBub3QgYmUgYSB2YWxpZCBhYmJyZXZpYXRpb24gKGhvd2V2ZXIsIFJBRFIgb3IgUkFEUkFOIG9yIERPREdJTkcgd291bGQgYmUgdmFsaWQpLiBZb3UgaGF2ZSBiZWVuIGFza2VkIHRvIHRha2UgYSBsaXN0IG9mIGluc2lnbmlcdWZiMDFjYW50IHdvcmRzIGFuZCBhIGxpc3Qgb2YgYWJicmV2aWF0aW9ucyBhbmQgcGhyYXNlcyBhbmQgdG8gZGV0ZXJtaW5lIGluIGhvdyBtYW55IHdheXMgZWFjaCBhYmJyZXZpYXRpb24gY2FuIGJlIGZvcm1lZCBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIHBocmFzZSBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIGFib3ZlLjxcL3A+XHJcbiIsImlucHV0IjoiPHA+VGhlIGlucHV0IGZpbGUgY29uc2lzdHMgb2YgbXVsdGlwbGUgc2NlbmFyaW9zLiBFYWNoIHNjZW5hcmlvIGJlZ2lucyB3aXRoIGFuIGludGVnZXIgMTAwICZnZTsgbiAmZ2U7IDEgZm9sbG93ZWQgYnkgbiBpbnNpZ25pZmljYW50IHdvcmRzLCBhbGwgaW4gbG93ZXIgY2FzZSwgb25lIHBlciBsaW5lIHdpdGggbm8gZXh0cmEgd2hpdGUgc3BhY2UuIChBIGxpbmUgY29udGFpbmluZyAwIGluZGljYXRlcyBlbmQgb2YgaW5wdXQuKSBGb2xsb3dpbmcgdGhpcyBhcmUgb25lIG9yIG1vcmUgdGVzdCBjYXNlcyBmb3IgdGhpcyBzY2VuYXJpbywgb25lIHBlciBsaW5lLCBmb2xsb3dlZCBieSBhIGxpbmUgY29udGFpbmluZyB0aGUgcGhyYXNlICZsZHF1bztMQVNUIENBU0UmcmRxdW87LiBFYWNoIGxpbmUgY29udGFpbmluZyBhIHRlc3QgY2FzZSBiZWdpbnMgd2l0aCBhbiBhYmJyZXZpYXRpb24gKHVwcGVyY2FzZSBsZXR0ZXJzIG9ubHkpIGZvbGxvd2VkIGJ5IGEgcGhyYXNlIChsb3dlcmNhc2UgbGV0dGVycyBhbmQgc3BhY2VzIG9ubHkpLiBUaGUgYWJicmV2aWF0aW9uIGhhcyBsZW5ndGggYXQgbGVhc3QgMSBhbmQgdGhlIHBocmFzZSBjb250YWlucyBhdCBsZWFzdCBvbmUgc2lnbmlmaWNhbnQgd29yZC4gTm8gaW5wdXQgbGluZSAoaW5jbHVkaW5nIGFiYnJldmlhdGlvbiwgcGhyYXNlLCBhbmQgc3BhY2VzKSB3aWxsIGNvbnRhaW4gbW9yZSB0aGFuIDE1MCBjaGFyYWN0ZXJzLiBXaXRoaW4gdGhlc2UgbGltaXRzLCBob3dldmVyLCBhYmJyZXZpYXRpb25zIGFuZCBwaHJhc2Ugd29yZHMgbWF5IGJlIGFueSBsZW5ndGguPFwvcD5cclxuIiwib3V0cHV0IjoiPHA+Rm9yIGVhY2ggdGVzdCBjYXNlLCBvdXRwdXQgdGhlIGFiYnJldmlhdGlvbiBmb2xsb3dlZCBieSBlaXRoZXI8XC9wPlxyXG5cclxuPHByZT5cclxuaXMgbm90IGEgdmFsaWQgYWJicmV2aWF0aW9uPFwvcHJlPlxyXG5cclxuPHA+b3I8XC9wPlxyXG5cclxuPHByZT5cclxuY2FuIGJlIGZvcm1lZCBpbiBpIHdheXM8XC9wcmU+XHJcblxyXG48cD53aGVyZSBpIGlzIHRoZSBudW1iZXIgb2YgZGlcdWZiMDBlcmVudCB3YXlzIGluIHdoaWNoIHRoZSBsZXR0ZXJzIG9mIHRoZSBhYmJyZXZpYXRpb24gbWF5IGJlIGFzc2lnbmVkIHRvIHRoZSBsZXR0ZXJzIGluIHRoZSBwaHJhc2UgYWNjb3JkaW5nIHRvIHRoZSBydWxlcyBhYm92ZS4gVGhlIHZhbHVlIG9mIGkgd2lsbCBub3QgZXhjZWVkIHRoZSByYW5nZSBvZiBhIDMyLWJpdCBzaWduZWQgaW50ZWdlci48XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIxIiwiaHRtbF90aXRsZSI6IjAiLCJwcm9ibGVtX2xhbmdfdGNvZGUiOiJFbmdsaXNoIn1d