úÎw/qÒ;      !"#$%&'()*+,-./0123456789:None-Language used in submission. C. Java. C++. A Kattis problem.  Associated name of the problem. Problem ID, unique. +Global configuration, initialized from the  .kattisrc file.  Username. API token (hash). "Host to be considered as service. URL to login page, relative  . URL to submit page, relative  . +Project-specific state, optionally loaded. 5Project-specific state consists of the problem name. 4Problem sessions are identified with an integer id. /Submissions are identified with an integer id. Error description alias. ESubmissions consist of a problem identifier and a set of file paths. :Authentication layer with token state and error handling, " wrapping the connection layer. .Connection layer wrapped with error handling. KConnection layer with connection state layered on the configuration layer. 1Configuration layer wrapped with error handling. 7Configuration layer consisting of configuration state. -Server response indicating successful login. Extension of input test files. )Extension of reference ouput test files. Name of this program. ;Relative path to project-specific configuration directory. *Relative path to folder containing tests. 2URL to page with problem information, relative to  . !Lift some error monad one layer. !/Execute an IO action and catch any exceptions. "HExecute an IO action and catch any exceptions, tagged with description. #=Evaluate an error action and terminate process upon failure. $6Sign an existing HTTP request with a temporary token. %Default HTTP request. &$Reestablish an existing connection. < Useful in order to avoid timeouts related to keep-alive. '6Retrieve a publically available page, using HTTP GET. (:Retrieve a page requiring authentication, using HTTP GET. );Make a HTTP request and retrieve the server response body. *;Extract correct temporary token from cookie header string. +@Authenticate an existing connection, returns a temporary token. H Basically the API token is used to acquire a session-specific token. ,)Retrieve problem ID of a Kattis problem. -+Retrieve problem name of a Kattis problem. .  !"#$%&'()*+,-.  !"#$%&'()*+,-.  !"#$%&'()*+,-"  !"#$%&'()*+,-None;4All supported source file extensions, per language. .9Parse an argument list from the +file1 -file2 style into 9 two lists of file paths (included and ignored files). /@Locate all source files recursively from the current directory. 0<Determine source code language by studying file extensions. G There is an implicit priority ordering, since C is a subset of C++. 11Locate main class based on source file contents. M C++ and C solutions do not need to be specified, returns an empty string. 2In the Java case all souce code files are parsed.  All occurences of a main method defined with public static void are located.  Will return  if result is ambiguous. 2/Determine content type of submission language. 3-Determine Kattis language string identifier. ;./0123./0123./0132;./0123None<<Path to global configuration file, relative home directory. =5Path to project-specific (local) configuration file. >-Serialize error description into bytestring. ?GRetrieve a field from the configuration state using a key and section,  possibly failing. 4BLoad global configuration file and parse the configuration state. ? Ensures that all fields are present and validates the URLs. 5GCheck if a project-specific configuration file exists and can be read. 6FLoad a project-specific configuration based on the current directory. 74Save a project-specific configuration file to disk. <=>?456745674567<=>?4567None@Possible test case scenarios. AEmbedded test content. B2Test content available in zip file, given as URL. CNo tests available. D-Parsed test cases associated with a problem. EFParse the possible different test file cases, given the problem page. A Any zip download links are preferred over embedded test data. F9Try to parse a download URL from the supplied page data. G1Try to parse test cases embedded into HTML data. E Currently only table-style test cases are supported (e.g. problem friends). HNRetrieve the zip archive located at the specified URL and unzip the contents. D Matches input and output file pairs, producing a list of tuples. IIRetrieve test cases, which fall into either one of the three categories. JFPage listing all problems associated with a problem session, relative  . KIParse a problem session page, locating all the associated problem names. 8GGiven a problem session id, initialize all the corresponding problems. 9;Given a problem identifier, setup directory structures and # optionally download test cases. @ABCDEFGHIJK898998 @CBADEFGHIJK89NoneLJPossible states of a single test case, i.e. an (input, output) data pair. M!Test case has not been executed. NTest case failed (state / = Accepted) OTest case passed. PBPossible states of a submission, with unknowns being grouped into Q. Q@Some other, unmatched error code. Only used when parsing fails. RRun time error. SCompile error. T.Submission was accepted (only success state). UTime limit exceeded. VWrong answer. WSubmission is running. XSubmission is compiling. YSubmission is queued. Z1Multipart field consisting of an option or file. [File to submitted, path given. \8Option built using a list of assignments and a payload. ]&Line separator used in HTTP headers. ^3Serialize a chunk based on a file to be submitted. _Submission page URL, relative  3, from which specific submission can be requested. `)Check if a given state is final, i.e. won't transition into some other.  Note that Q is listed as final. :;Make a submission of the project in the working directory. ) Accepts a list of filters on the form +file1 -file2 .. , which are : taken into account when locating all the source files.  +file$ implies adding the specified file.  -file& implies removing the specified file. DIn addition to the filters, all recursively found source code files ' will be included in the submission. a)Poll kattis for updates on a submission. Q This function returns when the submission has reached one of the final states. 2 TODO: Consider exponential back-off and timeout b)Parse the supplied submission page into:  (1) Current submission state  (2) Status of all test cases cString separator parser. dHEnd-of-tag parser, ignores everything up to the end of the current tag. eOParse the submission status field, beginning from any offset in the page data. fPParse the status of all test cases, beginning from any offset in the page data. 6 May return zero test cases when a submission fails $ with certain status values, e.g.  Compile Error. g"Print the result of a submission. K Will also take care of the special case when no test cases were parsed. h=Submit a solution, given problem name and source code files. LMNOPQRSTUVWXYZ[\]^_`:abcdefgh::LONMP YXWVUTSRQZ\[]^_`:abcdefghi      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq katt-0.2.0.1Utils.Katt.UtilsUtils.Katt.SourceHandlerUtils.Katt.ConfigurationUtils.Katt.InitUtils.Katt.Upload Data.MaybeNothingUtilshostKattisLanguageLangCLangJava LangCplusplus KattisProblem ProblemName ProblemId ConfigStateuserapiKey loginPage submitPageproject ProjectStateProblemSession SubmissionId ErrorDesc SubmissionAuthEnvConnEnvConnEnvInternal ConfigEnvConfigEnvInternal loginSuccessinputTestExtensionoutputTestExtension programName configDir testFolderproblemAddress unWrapTranstryIOtryIOMsgterminateOnFailuremakeSignedRequestdefaultRequestreestablishConnectionretrievePublicPageretrievePrivatePage makeRequestextractSessionHeader authenticateretrieveProblemIdretrieveProblemName parseFilter findFilesdetermineLanguage findMainClasslanguageContentTypelanguageKattisNameloadGlobalConfigprojectConfigExistsloadProjectConfigsaveProjectConfiginitializeSessioninitializeProblemmakeSubmission supportedglobalConfigFileprojectConfigFileconvertErrorDescget' TestParser TestContents TestAddressNoTestsAvailable TestContentparseProblemPage parseAddress parseEmbeddeddownloadTestArchiveretrieveTestFiles sessionPageparseProblemListTestCase NotTested TestFailed TestPassedSubmissionStateOther RunTimeError CompileErrorAcceptedTimeLimitExceeded WrongAnswerRunning CompilingQueuedMultiPartFieldFileOptioncrlf buildChunksubmissionPagefinalSubmissionStatecheckSubmissionparseSubmissionstrSependTag parseStatusparseTestCases printResultsubmitSolution