import java.io.BufferedReader ;
import java.io.File ;
import java.io.IOException ;
import java.io.InputStreamReader ;
import java.io.PrintStream ;
import java.net.Socket ;
import java.util.ArrayList ;
import java.util.Scanner ;
class Server {
public static ArrayList< ArrayList< Object>> connectedServers = new ArrayList< ArrayList< Object>> ( ) ;
String host
= takeInput
( "Host" ) ; int port = takeInputInt( "Port" ) ;
Socket a
= connectToServer
( host, port
) ; }
System .
out .
print ( inputName
+ ": " ) ; return input;
}
System .
out .
print ( inputName
+ ": " ) ; int input = 0 ;
Scanner inputInt
= new Scanner
( System .
in ) ; input = inputInt.nextInt ( ) ;
return input;
}
ArrayList< Object> element = new ArrayList<> ( ) ;
element.add ( host) ;
element.add ( port) ;
if ( connectedServers.contains ( element) != true ) {
fellowServer
= new Socket ( host, port
) ; connectedServers.add ( element) ;
element.remove ( host) ;
element.remove ( 0 ) ;
return fellowServer;
}
else {
return null ;
}
}
}
aW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7CmltcG9ydCBqYXZhLmlvLkZpbGU7CmltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwppbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlcjsKaW1wb3J0IGphdmEuaW8uUHJpbnRTdHJlYW07CmltcG9ydCBqYXZhLm5ldC5Tb2NrZXQ7CmltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwppbXBvcnQgamF2YS51dGlsLlNjYW5uZXI7CgpjbGFzcyBTZXJ2ZXIgewoJcHVibGljIHN0YXRpYyBBcnJheUxpc3Q8QXJyYXlMaXN0PE9iamVjdD4+IGNvbm5lY3RlZFNlcnZlcnMgPSBuZXcgQXJyYXlMaXN0PEFycmF5TGlzdDxPYmplY3Q+PigpOwoJCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgSU9FeGNlcHRpb24gewoJCVN0cmluZyBob3N0ID0gdGFrZUlucHV0KCJIb3N0Iik7CgkJaW50IHBvcnQgPSB0YWtlSW5wdXRJbnQoIlBvcnQiKTsKCgkJU29ja2V0IGEgPSBjb25uZWN0VG9TZXJ2ZXIoaG9zdCwgcG9ydCk7CgkJfQoJCglwdWJsaWMgc3RhdGljIFN0cmluZyB0YWtlSW5wdXQoU3RyaW5nIGlucHV0TmFtZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKCQlTeXN0ZW0ub3V0LnByaW50KGlucHV0TmFtZSsiOiAiKTsKCQlCdWZmZXJlZFJlYWRlciBiciA9IG5ldyBCdWZmZXJlZFJlYWRlcihuZXcgSW5wdXRTdHJlYW1SZWFkZXIoU3lzdGVtLmluKSk7CgkJU3RyaW5nIGlucHV0ID0gYnIucmVhZExpbmUoKTsKCQlyZXR1cm4gaW5wdXQ7Cgl9CgkKCXB1YmxpYyBzdGF0aWMgaW50IHRha2VJbnB1dEludChTdHJpbmcgaW5wdXROYW1lKSB0aHJvd3MgSU9FeGNlcHRpb24gewoJCVN5c3RlbS5vdXQucHJpbnQoaW5wdXROYW1lKyI6ICIpOwoJCWludCBpbnB1dCA9IDA7CgkKCQlTY2FubmVyIGlucHV0SW50ID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKCQlpbnB1dCA9IGlucHV0SW50Lm5leHRJbnQoKTsKCQlyZXR1cm4gaW5wdXQ7Cgl9CgkKCXB1YmxpYyBzdGF0aWMgU29ja2V0IGNvbm5lY3RUb1NlcnZlcihTdHJpbmcgaG9zdCwgaW50IHBvcnQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CgkJQXJyYXlMaXN0PE9iamVjdD4gZWxlbWVudCA9IG5ldyBBcnJheUxpc3Q8PigpOwoJCWVsZW1lbnQuYWRkKGhvc3QpOwoJCWVsZW1lbnQuYWRkKHBvcnQpOwoJCQoJCVNvY2tldCBmZWxsb3dTZXJ2ZXIgPSBudWxsOwoJCWlmIChjb25uZWN0ZWRTZXJ2ZXJzLmNvbnRhaW5zKGVsZW1lbnQpICE9IHRydWUpIHsKCQkJZmVsbG93U2VydmVyID0gbmV3IFNvY2tldChob3N0LCBwb3J0KTsKCQkJY29ubmVjdGVkU2VydmVycy5hZGQoZWxlbWVudCk7CgkJCWVsZW1lbnQucmVtb3ZlKGhvc3QpOwoJCQllbGVtZW50LnJlbW92ZSgwKTsKCQkJcmV0dXJuIGZlbGxvd1NlcnZlcjsKCQl9CgkJZWxzZXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKfQo=