import java.util.Scanner ;
import java.io.* ;
/**
*
* @Author Khoa Le
*/
public class Assignment2_KhoaLe_2135506_le0148 {
/**
*/
public static int [ ] [ ] seats = {
{ 1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,1 } ,
{ 1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,1 } ,
{ 1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,1 } ,
{ 1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 } ,
{ 1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 } ,
{ 1 ,1 ,1 ,1 ,2 ,2 ,2 ,2 ,2 ,0 ,0 ,0 ,0 ,0 ,2 ,2 ,2 ,2 ,2 ,1 ,1 ,1 ,1 } ,
{ 1 ,1 ,1 ,1 ,2 ,2 ,2 ,2 ,2 ,3 ,3 ,3 ,3 ,3 ,2 ,2 ,2 ,2 ,2 ,1 ,1 ,1 ,1 } ,
{ 1 ,1 ,1 ,1 ,2 ,2 ,2 ,2 ,2 ,3 ,3 ,3 ,3 ,3 ,2 ,2 ,2 ,2 ,2 ,1 ,1 ,1 ,1 } ,
{ 2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,3 ,3 ,3 ,3 ,3 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 } ,
{ 2 ,2 ,2 ,2 ,2 ,2 ,2 ,3 ,3 ,3 ,3 ,3 ,3 ,3 ,3 ,3 ,2 ,2 ,2 ,2 ,2 ,2 ,2 } ,
{ 2 ,2 ,2 ,2 ,2 ,2 ,2 ,3 ,3 ,3 ,3 ,3 ,3 ,3 ,3 ,3 ,2 ,2 ,2 ,2 ,2 ,2 ,2 } ,
{ 2 ,2 ,2 ,2 ,2 ,2 ,2 ,3 ,3 ,3 ,3 ,3 ,3 ,3 ,3 ,3 ,2 ,2 ,2 ,2 ,2 ,2 ,2 }
} ;
public static Scanner scan
= new Scanner
( System .
in ) ; //----------------------------main method-----------------------------------
/**
* @param args the command line arguments
*/
public static void main
( String [ ] args
) {
work( ) ;
}
//-------------------------operational methods------------------------------
/**
* Prints messages to the console and prints to an output file
*/
private static void printOutput
( String str
) {
}
private static void displayWelcome( )
{
printOutput( "Welcome to the Cinema Booking System." ) ;
printOutput( "=================================================" ) ;
}
private static void ticket( )
{
printOutput( "Indicate the category of tickets and number you require from the list below: " ) ;
printOutput( "1. Gold" ) ;
printOutput( "2. Silver" ) ;
printOutput( "3. Bronze" ) ;
}
private static void age( )
{
printOutput( "Indicate the type of tickets required from the list below: " ) ;
printOutput( "1. Adult" ) ;
printOutput( "2. Child" ) ;
printOutput( "3. Concession" ) ;
}
private static void help( ) {
//DIY
}
private static void bill( ) {
//row = column = ticket's type, row = age, price[1][1] = gold, adult, price[1][2] = gold,children
double [ ] [ ] price = {
{ 18.72 ,9.36 ,14.04 } ,
{ 17.16 ,8.58 ,12.87 } ,
{ 15.6 ,7.8 ,11.7 }
} ;
}
private static String re
( int a,
int b
) { switch ( b) {
case 1 : switch ( a) {
case 1 : s= "Adult" ; break ;
case 2 : s= "Children" ; break ;
case 3 : s= "Concession" ; break ;
}
case 0 : switch ( a) {
case 1 : s= "Gold" ; break ;
case 2 : s= "Silver" ; break ;
case 3 : s= "Brozen" ; break ;
}
}
return s;
}
private static void purchase( ) {
int [ ] tick = new int [ 9 ] ;
int [ ] age = new int [ 9 ] ;
int [ ] numt = new int [ 3 ] ;
int [ ] numa = new int [ 3 ] ;
int i,j;
int su= 0 , mark= 1 ;
for ( i= 0 ; i< 3 ; i++ ) {
numt[ i] = numa[ i] = 0 ;
}
do {
ticket( ) ;
tmp = scan.nextLine ( ) ;
for ( String tmps
: tmp.
split ( " " ) ) { for ( i= 0 ; i< tmps.length ( ) ; i++ )
{
if ( i
% 2
== 0 ) tick
[ i
] = Integer .
parseInt ( n
[ i
] ) ; else {
numt
[ tick
[ i
- 1 ] ] = Integer .
parseInt ( n
[ i
] ) ; su += numt[ tick[ i- 1 ] ] ;
}
}
}
age( ) ;
tmp = scan.nextLine ( ) ;
for ( String tmps
: tmp.
split ( " " ) ) { for ( i= 0 ; i< tmps.length ( ) ; i++ )
{
if ( i
% 2
== 0 ) age
[ i
] = Integer .
parseInt ( n
[ i
] ) ; else {
numa
[ age
[ i
- 1 ] ] = Integer .
parseInt ( n
[ i
] ) ; su -= numa[ age[ i- 1 ] ] ;
}
}
}
if ( su
> 0 ) System .
out .
println ( "Oops! It seem like you haven't ordered any tickets " ) ; if ( su
< 0 ) System .
out .
println ( "Oops! It seem like you have ordered too much tickets " ) ; int [ ] [ ] used = new int [ 2 ] [ 2 ] ;
for ( i= 0 ; i< 3 ; i++ )
for ( j= 0 ; j< 3 ; j++ ) {
if ( numt[ i] <= 0 ) break ;
if ( numa[ j] <= 0 ) continue ;
if ( numt[ i] >= numa[ j] ) {
used[ i] [ j] = numt[ i] - numa[ j] ;
numt[ i] = numt[ i] - numa[ j] ;
numa[ j] = 0 ;
}
if ( numt[ i] < numa[ j] ) {
used[ i] [ j] = numa[ j] - numt[ i] ;
numt[ i] = 0 ;
numa[ j] = numa[ j] - numt[ i] ;
}
}
for ( i= 0 ; i< 3 ; i++ ) {
int m= 0 ;
for ( j= 0 ; j< 3 ; j++ ) {
if ( used[ i] [ j] != 0 ) {
t = re( j,1 ) ;
s = s + " " + used[ i] [ j] + " " + t + ", " ;
m= 1 ;
}
}
if ( m== 1 ) {
t = re( 1 ,0 ) ;
s = "You have ordered" + s + "ticket(s) at the " + t + "price, " ;
}
}
System .
out .
println ( "Would you like to purcharse more? (Y/N" ) ; tmp = scan.nextLine ( ) ;
if ( tmp.toUpperCase ( ) == "N" ) {
bill( ) ;
break ;
}
} while ( mark== 1 ) ;
}
private static void list( ) {
//DIY
int i,j,c;
for ( i= 0 ; i< 23 ; i++ )
{
for ( j= 0 ; j< 12 ; j++ )
{
if ( seats
[ i
] [ j
] == 1 ) System .
out .
print ( "B " ) ; if ( seats
[ i
] [ j
] == 2 ) System .
out .
print ( "S " ) ; if ( seats
[ i
] [ j
] == 3 ) System .
out .
print ( "G " ) ; if ( seats
[ i
] [ j
] == 0 ) System .
out .
print ( " " ) ; if ( seats
[ i
] [ j
] == 4 ) System .
out .
print ( "X " ) ; }
}
}
public static void work( )
{
int [ ] tick = new int [ 9 ] ;
int [ ] ages = new int [ 9 ] ;
int [ ] tmp = new int [ 18 ] ;
int mark = 1 ;
displayWelcome( ) ;
System .
out .
print ( "Would you like to purchase tickets or list available seats? (Help/PURCHASE/LIST): " ) ; do {
conf = scan.nextLine ( ) ;
if ( conf.toUpperCase ( ) == "HELP" ) help( ) ;
if ( conf.toUpperCase ( ) == "PURCHARSE" ) purchase( ) ;
if ( conf.toUpperCase ( ) == "LIST" ) list( ) ;
System .
out .
print ( "Do you want to continue? (y/n)" ) ; conf = scan.nextLine ( ) ;
if ( conf.toUpperCase ( ) == "N" ) mark= 0 ;
} while ( mark!= 0 ) ;
}
}
aW1wb3J0IGphdmEudXRpbC5TY2FubmVyOwppbXBvcnQgamF2YS5pby4qOwoKCgovKioKKgoqIEBBdXRob3IgS2hvYSBMZQoqLwpwdWJsaWMgY2xhc3MgQXNzaWdubWVudDJfS2hvYUxlXzIxMzU1MDZfbGUwMTQ4IHsKCi8qKgoqLwoKcHVibGljIHN0YXRpYyBpbnQgW11bXSBzZWF0cyA9IHsKCQkJCQkJCQl7MSwxLDEsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDEsMSwxfSwKCQkJCQkJCQl7MSwxLDEsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDEsMSwxfSwKCQkJCQkJCQl7MSwxLDEsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDEsMSwxfSwKCQkJCQkJCQl7MSwxLDEsMSwxLDEsMSwxLDEsMCwwLDAsMCwwLDEsMSwxLDEsMSwxLDEsMSwxfSwKCQkJCQkJCQl7MSwxLDEsMSwxLDEsMSwxLDEsMCwwLDAsMCwwLDEsMSwxLDEsMSwxLDEsMSwxfSwKCQkJCQkJCQl7MSwxLDEsMSwyLDIsMiwyLDIsMCwwLDAsMCwwLDIsMiwyLDIsMiwxLDEsMSwxfSwKCQkJCQkJCQl7MSwxLDEsMSwyLDIsMiwyLDIsMywzLDMsMywzLDIsMiwyLDIsMiwxLDEsMSwxfSwKCQkJCQkJCQl7MSwxLDEsMSwyLDIsMiwyLDIsMywzLDMsMywzLDIsMiwyLDIsMiwxLDEsMSwxfSwKCQkJCQkJCQl7MiwyLDIsMiwyLDIsMiwyLDIsMywzLDMsMywzLDIsMiwyLDIsMiwyLDIsMiwyfSwKCQkJCQkJCQl7MiwyLDIsMiwyLDIsMiwzLDMsMywzLDMsMywzLDMsMywyLDIsMiwyLDIsMiwyfSwKCQkJCQkJCQl7MiwyLDIsMiwyLDIsMiwzLDMsMywzLDMsMywzLDMsMywyLDIsMiwyLDIsMiwyfSwKCQkJCQkJCQl7MiwyLDIsMiwyLDIsMiwzLDMsMywzLDMsMywzLDMsMywyLDIsMiwyLDIsMiwyfQoJCQkJCQkJfTsKCQkJCQkJCQpwdWJsaWMgc3RhdGljIFNjYW5uZXIgc2NhbiA9IG5ldyBTY2FubmVyKFN5c3RlbS5pbik7Ci8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLW1haW4gbWV0aG9kLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLyoqCiogQHBhcmFtIGFyZ3MgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMKKi8gCnB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIAp7Cgl3b3JrKCk7Cn0KCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLW9wZXJhdGlvbmFsIG1ldGhvZHMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLyoqCiogUHJpbnRzIG1lc3NhZ2VzIHRvIHRoZSBjb25zb2xlIGFuZCBwcmludHMgdG8gYW4gb3V0cHV0IGZpbGUKKi8KCnByaXZhdGUgc3RhdGljIHZvaWQgcHJpbnRPdXRwdXQoU3RyaW5nIHN0cikKewpTeXN0ZW0ub3V0LnByaW50bG4oc3RyKTsKfQoKcHJpdmF0ZSBzdGF0aWMgdm9pZCBkaXNwbGF5V2VsY29tZSgpIAp7CnByaW50T3V0cHV0KCJXZWxjb21lIHRvIHRoZSBDaW5lbWEgQm9va2luZyBTeXN0ZW0uIik7CnByaW50T3V0cHV0KCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Iik7Cn0KCgpwcml2YXRlIHN0YXRpYyB2b2lkIHRpY2tldCgpIAp7CnByaW50T3V0cHV0KCJJbmRpY2F0ZSB0aGUgY2F0ZWdvcnkgb2YgdGlja2V0cyBhbmQgbnVtYmVyIHlvdSByZXF1aXJlIGZyb20gdGhlIGxpc3QgYmVsb3c6ICIpOwpwcmludE91dHB1dCgiMS4gR29sZCIpOwpwcmludE91dHB1dCgiMi4gU2lsdmVyIik7CnByaW50T3V0cHV0KCIzLiBCcm9uemUiKTsKfQoKCnByaXZhdGUgc3RhdGljIHZvaWQgYWdlKCkgCnsKcHJpbnRPdXRwdXQoIkluZGljYXRlIHRoZSB0eXBlIG9mIHRpY2tldHMgcmVxdWlyZWQgZnJvbSB0aGUgbGlzdCBiZWxvdzogIik7CnByaW50T3V0cHV0KCIxLiBBZHVsdCIpOwpwcmludE91dHB1dCgiMi4gQ2hpbGQiKTsKcHJpbnRPdXRwdXQoIjMuIENvbmNlc3Npb24iKTsKfSAKCnByaXZhdGUgc3RhdGljIHZvaWQgaGVscCgpIHsKLy9ESVkKfQoKcHJpdmF0ZSBzdGF0aWMgdm9pZCBiaWxsKCkgewovL3JvdyA9IGNvbHVtbiA9IHRpY2tldCdzIHR5cGUsIHJvdyA9IGFnZSwgcHJpY2VbMV1bMV0gPSBnb2xkLCBhZHVsdCwgcHJpY2VbMV1bMl0gPSBnb2xkLGNoaWxkcmVuCmRvdWJsZSBbXVtdIHByaWNlID0gCXsKCQkJCQl7MTguNzIsOS4zNiwxNC4wNH0sCgkJCQkJezE3LjE2LDguNTgsMTIuODd9LAoJCQkJCXsxNS42LDcuOCwxMS43fQoJCQkJCX07Cn0KCnByaXZhdGUgc3RhdGljIFN0cmluZyByZShpbnQgYSwgaW50IGIpIHsKCVN0cmluZyBzID0gbmV3IFN0cmluZygiIik7Cglzd2l0Y2goYikgewoJCWNhc2UgMTogc3dpdGNoKGEpIHsKCQkJCQljYXNlIDE6IHM9IkFkdWx0IjsgYnJlYWs7CgkJCQkJY2FzZSAyOiBzPSJDaGlsZHJlbiI7IGJyZWFrOwoJCQkJCWNhc2UgMzogcz0iQ29uY2Vzc2lvbiI7IGJyZWFrOwoJCQkJfQoJCWNhc2UgMDogc3dpdGNoKGEpIHsKCQkJCQljYXNlIDE6IHM9IkdvbGQiOyBicmVhazsKCQkJCQljYXNlIDI6IHM9IlNpbHZlciI7IGJyZWFrOwoJCQkJCWNhc2UgMzogcz0iQnJvemVuIjsgYnJlYWs7CgkJCQl9Cgl9CglyZXR1cm4gczsKfQoKcHJpdmF0ZSBzdGF0aWMgdm9pZCBwdXJjaGFzZSgpIHsKCWludFtdIHRpY2sgPSBuZXcgaW50WzldOwoJaW50W10gYWdlID0gbmV3IGludFs5XTsKCWludFtdIG51bXQgPSBuZXcgaW50WzNdOwoJaW50W10gbnVtYSA9IG5ldyBpbnRbM107CglpbnQgaSxqOwoJaW50IHN1PTAsIG1hcms9MTsKCVN0cmluZyB0bXA7Cglmb3IgKGk9MDtpPDM7aSsrKSB7CgkJbnVtdFtpXT1udW1hW2ldPTA7Cgl9Cglkb3sKCQl0aWNrZXQoKTsKCQl0bXAgPSBzY2FuLm5leHRMaW5lKCk7CgkJZm9yKFN0cmluZyB0bXBzIDogdG1wLnNwbGl0KCIgIikpewoJCVN0cmluZ1tdIG4gPSB0bXAuc3BsaXQoIiAiKTsKCQlmb3IoaT0wO2k8dG1wcy5sZW5ndGgoKTtpKyspCgkJewoJCQlpZihpJTI9PTApIHRpY2tbaV0gPSBJbnRlZ2VyLnBhcnNlSW50KG5baV0pOyAKCQkJZWxzZSAJewoJCQkJCQludW10W3RpY2tbaS0xXV0gPSBJbnRlZ2VyLnBhcnNlSW50KG5baV0pOwoJCQkJCQlzdSArPSBudW10W3RpY2tbaS0xXV07CgkJCQkJfQoJCX0KCQl9CgkJYWdlKCk7CgkJdG1wID0gc2Nhbi5uZXh0TGluZSgpOwoJCWZvcihTdHJpbmcgdG1wcyA6IHRtcC5zcGxpdCgiICIpKSB7CgkJU3RyaW5nW10gbiA9IHRtcC5zcGxpdCgiICIpOwoJCWZvcihpPTA7aTx0bXBzLmxlbmd0aCgpO2krKykKCQl7CgkJCWlmKGklMj09MCkgYWdlW2ldID0gSW50ZWdlci5wYXJzZUludChuW2ldKTsgCgkJCWVsc2UgCXsKCQkJCQludW1hW2FnZVtpLTFdXSA9IEludGVnZXIucGFyc2VJbnQobltpXSk7CgkJCQkJc3UgLT0gbnVtYVthZ2VbaS0xXV07CgkJCQkJfQoJCX0KCQl9CgkJaWYgKHN1PjApIFN5c3RlbS5vdXQucHJpbnRsbigiT29wcyEgSXQgc2VlbSBsaWtlIHlvdSBoYXZlbid0IG9yZGVyZWQgYW55IHRpY2tldHMgIik7CgkJaWYgKHN1PDApIFN5c3RlbS5vdXQucHJpbnRsbigiT29wcyEgSXQgc2VlbSBsaWtlIHlvdSBoYXZlIG9yZGVyZWQgdG9vIG11Y2ggdGlja2V0cyAiKTsKCQlpbnRbXVtdIHVzZWQgPSBuZXcgaW50WzJdWzJdOwoJCWZvcihpPTA7aTwzO2krKykKCQkJZm9yKGo9MDtqPDM7aisrKSB7CgkJCQlpZihudW10W2ldPD0wKSBicmVhazsKCQkJCWlmKG51bWFbal08PTApIGNvbnRpbnVlOwoJCQkJaWYobnVtdFtpXSA+PSBudW1hW2pdKSB7CgkJCQkJdXNlZFtpXVtqXSA9IG51bXRbaV0gLSBudW1hW2pdOwoJCQkJCW51bXRbaV0gPSBudW10W2ldIC0gbnVtYVtqXTsKCQkJCQludW1hW2pdID0gMDsKCQkJCX0KCQkJCWlmKG51bXRbaV0gPCBudW1hW2pdKSB7CgkJCQkJdXNlZFtpXVtqXSA9IG51bWFbal0gLSBudW10W2ldOwoJCQkJCW51bXRbaV0gPSAwOwoJCQkJCW51bWFbal0gPSBudW1hW2pdIC0gbnVtdFtpXTsKCQkJCX0KCQkJfQoJCWZvcihpPTA7aTwzO2krKykgewoJCVN0cmluZyBzID0gbmV3IFN0cmluZygiIik7CgkJU3RyaW5nIHQ7CgkJaW50IG09MDsKCQkJZm9yKGo9MDtqPDM7aisrKSB7CgkJCWlmKHVzZWRbaV1bal0hPTApIHsKCQkJCXQgPSByZShqLDEpOwoJCQkJcyA9IHMgKyAiICIgKyB1c2VkW2ldW2pdICsgIiAiICsgdCArICIsICI7CgkJCQltPTE7CgkJCX0KCQkJfQoJCQlpZihtPT0xKSB7CgkJCQl0ID0gcmUoMSwwKTsKCQkJCXMgPSAiWW91IGhhdmUgb3JkZXJlZCIgKyBzICsgInRpY2tldChzKSBhdCB0aGUgIiArIHQgKyAicHJpY2UsICI7CgkJCX0KCQl9CgkJU3lzdGVtLm91dC5wcmludGxuKCJXb3VsZCB5b3UgbGlrZSB0byBwdXJjaGFyc2UgbW9yZT8gKFkvTiIpOwoJCXRtcCA9IHNjYW4ubmV4dExpbmUoKTsKCQlpZih0bXAudG9VcHBlckNhc2UoKSA9PSAiTiIpIHsKCQkJYmlsbCgpOwoJCQlicmVhazsKCQl9Cgl9IHdoaWxlKG1hcms9PTEpOwoJCQp9Cgpwcml2YXRlIHN0YXRpYyB2b2lkIGxpc3QoKSB7CgkvL0RJWQoJaW50IGksaixjOwoJZm9yKGk9MDtpPDIzO2krKykKCXsKCQlmb3Ioaj0wO2o8MTI7aisrKQoJCXsKCQkJaWYoc2VhdHNbaV1bal09PTEpIFN5c3RlbS5vdXQucHJpbnQoIkIgIik7CgkJCWlmKHNlYXRzW2ldW2pdPT0yKSBTeXN0ZW0ub3V0LnByaW50KCJTICIpOwoJCQlpZihzZWF0c1tpXVtqXT09MykgU3lzdGVtLm91dC5wcmludCgiRyAiKTsKCQkJaWYoc2VhdHNbaV1bal09PTApIFN5c3RlbS5vdXQucHJpbnQoIiAgIik7CgkJCWlmKHNlYXRzW2ldW2pdPT00KSBTeXN0ZW0ub3V0LnByaW50KCJYICIpOwoJCX0KCVN5c3RlbS5vdXQucHJpbnRsbigpOwoJfQp9CgpwdWJsaWMgc3RhdGljIHZvaWQgd29yaygpCQoJewoJU3RyaW5nIGNvbmY7CglpbnRbXSB0aWNrID0gbmV3IGludFs5XTsKCWludFtdIGFnZXMgPSBuZXcgaW50WzldOwoJaW50W10gdG1wID0gbmV3IGludFsxOF07CglpbnQgbWFyayA9IDE7CgoJZGlzcGxheVdlbGNvbWUoKTsKCVN5c3RlbS5vdXQucHJpbnQoIldvdWxkIHlvdSBsaWtlIHRvIHB1cmNoYXNlIHRpY2tldHMgb3IgbGlzdCBhdmFpbGFibGUgc2VhdHM/IChIZWxwL1BVUkNIQVNFL0xJU1QpOiAiICk7CglkbyB7CgkJY29uZiA9IHNjYW4ubmV4dExpbmUoKTsKCQlpZihjb25mLnRvVXBwZXJDYXNlKCkgPT0gIkhFTFAiKSBoZWxwKCk7CgkJaWYoY29uZi50b1VwcGVyQ2FzZSgpID09ICJQVVJDSEFSU0UiKSBwdXJjaGFzZSgpOwoJCWlmKGNvbmYudG9VcHBlckNhc2UoKSA9PSAiTElTVCIpIGxpc3QoKTsKCQlTeXN0ZW0ub3V0LnByaW50KCJEbyB5b3Ugd2FudCB0byBjb250aW51ZT8gKHkvbikiICk7CgkJY29uZiA9IHNjYW4ubmV4dExpbmUoKTsKCQlpZihjb25mLnRvVXBwZXJDYXNlKCkgPT0gIk4iKSBtYXJrPTA7Cgl9IHdoaWxlKG1hcmshPTApOwp9Cgp9