d .*\r\nDate: .*\r\nContent-Length: \d+\r\nContent-Type: text/html\r\nServer: NetCache appliance \(NetApp/([\d.]+)\)\r\n\r\n| p/NetApp NetCache http proxy/ v/$1/ d/proxy server/ cpe:/a:netapp:netcache:$1/
match http-proxy m|^HTTP/1\.0  500 \r\nProxy-agent: MultiCertify PROXY/([\d.]+)\r\n| p/MultiCertify http proxy/ v/$1/ o/Windows/ cpe:/o:microsoft:windows/a
match http-proxy m|^HTTP/1\.1 \d\d\d .*\r\nDate: .*\r\nServer: HTTP::Proxy/([\d.]+)\r\n| p/Perl HTTP::Proxy/ v/$1/
match http-proxy m|^HTTP/1\.1 407 Proxy Authentication Required\r\nProxy-Authenticate: NTLM\r\nProxy-Authenticate: BASIC realm=\"DOMBUD\"\r\nCache-Control: no-cache\r\nPragma: no-cache\r\n| p/CacheFlow http proxy/ o/CacheOS/ cpe:/o:bluecoat:cacheos/
# Might match WinProxy as well? -Doug
match http-proxy m|^HTTP/1\.1 404 Not found\r\nConnection: close\r\nCache-Control: no-cache\r\nPragma: no-cache\r\nContent-Type: text/html\r\nContent-Length: 48\r\n\r\n<html><body>HTTP/1\.1 404 Not found</body></html>$| p/HTTHost TCP over HTTP tunneling proxy/
match http-proxy m|^HTTP/1\.0 401 Unauthorized\r\nServer: Telkonet Communications\r\n| p/Telkonet Communications http proxy/
match http-proxy m|^HTTP/1\.1 204 No Content\r\n(?:[^\r\n]+\r\n)*?X-Squid-Error: ERR_INVALID_|s p/Squid http proxy/ cpe:/a:squid-cache:squid/
match http-proxy m|^HTTP/1\.[01] 400 Bad Request\r\n(?:[^\r\n]+\r\n)*?X-Squid-Error: ERR_INVALID_|s p/Squid http proxy/ cpe:/a:squid-cache:squid/
match http-proxy m|^HTTP/1\.0 503 Service Unavailable\r\n(?:[^\r\n]+\r\n)*?X-Squid-Error: ERR_CONNECT_FAIL 111\r\n|s p/Squid http proxy/ cpe:/a:squid-cache:squid/
match http-proxy m|^HTTP/1\.1 504 Gateway Time-out\r\n(?:[^\r\n]+\r\n)*?X-Squid-Error: ERR_CONNECT_FAIL 111\r\n|s p/Squid http proxy/ cpe:/a:squid-cache:squid/
match http-proxy m|^HTTP/1\.0 403 Access Forbidden\r\nContent-Type: text/html\r\n\r\n<HTML><HEAD><TITLE>407 Proxy Authentication Required</TITLE></HEAD><BODY><H1>Proxy Authentication Required</H1><H4>Unable to complete request<P>Access denied due to authentication failure\.</H4><HR></BODY></HTML>\n\n\0| p/CA eTrust SCM http proxy/ cpe:/a:ca:etrust_secure_content_manager/
match http-proxy m|^HTTP/1\.1 \d\d\d .*\r\nServer: FreeProxy/([\d.]+)\r\n| p/FreeProxy http proxy/ v/$1/ o/Windows/ cpe:/o:microsoft:windows/a
match http-proxy m|^HTTP/1\.1 403 Forbidden\r\nContent-Type: text/html\r\nContent-Length: \d+\r\nCache-Control: no-cache\r\nPragma: no-cache\r\nConnection: Close\r\n\r\n<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"><TITLE>La solution mat\xc3\xa9rielle-logicielle WebShield&reg;| p/WebShield http proxy/ i/French/ o/Windows/ cpe:/o:microsoft:windows/a
match http-proxy m|^HTTP/1\.1 403 Forbidden\r\nServer: Eplicator/([\d.]+)\r\n| p/Eplicator http proxy/ v/$1/
match http-proxy m|^AdsGone Blocked HTML Ad$| p/AdsGone http proxy/ o/Windows/ cpe:/o:microsoft:windows/a
match http-proxy m|^<font face=verdana size=1>AdsGone (\d+)  Blocked HTML Ad</font>$| p/AdsGone $1 http proxy/ o/Windows/ cpe:/o:microsoft:windows/a
match http-proxy m|^HTTP/1\.0 \d\d\d .*\r\nDate: .*\r\nContent-Type: text/html\r\nPragma: no-cache\r\n\r\n<html>\n<head>\n<title>Proxy\+ WWW Admin interface</title>\n\n| p/Fortech Proxy+ http admin/ o/Windows/ cpe:/o:microsoft:windows/a
match http-proxy m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Cache-Control: no-cache\r\nPragma: no-cache\r\nContent-Type: text/html.*\r\nProxy-Connection: close\r\nConnection: close\r\nContent-Length: \d+\r\n\r\n<HTML><HEAD>\n<TITLE>Access Denied</TITLE>\n</HEAD>.*\n<big>Access Denied \(policy_denied\)</big>\n|s p/BlueCoat SG-400 http proxy/ d/proxy server/
match http-proxy m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Cache-Control: no-cache\r\nPragma: no-cache\r\nContent-Type: text/html.*\r\nProxy-Connection: close\r\nConnection: close\r\nContent-Length: \d+\r\n\r\n<HTML><HEAD>\n<TITLE>Request Error</TITLE>\n</HEAD>.*\n<big>Request Error \(invalid_request\)</big>\n|s p/BlueCoat http proxy/
match http-proxy m|^HTTP/1\.0 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: BlueCoat-Security-Appliance\r\n|s p/BlueCoat http proxy/ d/proxy server/
match http-proxy m|^HTTP/1\.1 302 Found\r\nServer: BlueCoat-Security-Appliance\r\nConnection: close\r\nLocation: /proxyclient/\r\n\r\n$| p/BlueCoat ProxyClient http interface/ d/proxy server/
match http-proxy m|^HTTP/1\.0 \d\d\d .*\r\nProxy-agent: BlueCoat-WinProxy\r\n| p/BlueCoat WinProxy http proxy/ d/proxy server/ o/Windows/ cpe:/a:bluecoat:winproxy/ cpe:/o:microsoft:windows/a
match http-proxy m|^HTTP/1\.0 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: Sawmill/([-\w_.]+)\r\n|s p/BlueCoat Sawmill http proxy config/ v/$1/
match http-proxy m|^HTTP/1\.0 \d\d\d .*\r\nProxy-agent: BlueCoat-ProxyAV\r\n| p/BlueCoat ProxyAV appliance http proxy/ d/proxy server/
match http-proxy m|^HTTP/1\.0 \d\d\d .*\r\nPragma: no-cach\r\nContent-Type: text/html; charset=windows-1251\r\n\r\n| p/UserGate http proxy/ o/Windows/ cpe:/o:microsoft:windows/a
match http-proxy m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: Simple, Secure Web Server ([\d.]+)\r\n|s p/Symantec firewall http proxy/ i/Simple, Secure Web Server $1/ d/firewall/
match http-proxy m|^HTTP/1\.0 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Content-Length: \d+\r\n.*<B>KEN! Proxy</B>|s p/AVM KEN! http proxy/
match http-proxy m|^HTTP/1\.0 400 Bad request\r\nContent-Type: text/html\r\nPragma: no-cache\r\n\r\n<H4><font COLOR=\"#FF0000\">Error parsing http request : </font></H2><p><pre>GET / / HTTP/1\.0\r\n\r\n</pre>| p/Kerio WinRoute Pro http proxy/ o/Windows/ cpe:/o:microsoft:windows/a
match http-proxy m|^HTTP/1\.0 200 OK\r\n.*This request is not allowed\n\n\n by One1Stream Fastlane Acceleration Server\.,  Accelerating Server ([\d.]+)</font></p></body></html>|s p/One1Stream Fastlane accelerating http proxy/ v/$1/
match http-proxy m|^HTTP/1\.0 404 Proxy Error\r\nContent-type: text/html\r\nPragma: no-cache\r\nCache-control: no-cache\r\nContent-length: \d+\r\n\r\n<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2\.0//EN\">\r\n<html><head><title>Proxy Error</title></head>\r\n<body><h1>Proxy Error</h1>\r\nThe proxy server could not handle this request\.\r\n<p>\r\n<b>bad file or wrong URL</b>\r\n</body></html>\r\n| p/Software602 602LAN Suite http proxy/ o/Windows/ cpe:/o:microsoft:windows/a
match http-proxy m|^HTTP/1\.0 \d\d\d .*\r\nProxy-agent: Ositis-WinProxy\r\n| p/Ositis-WinProxy http proxy/ o/Windows/ cpe:/o:microsoft:windows/a
match http-proxy m|^<Html><Body><H1> Unauthorized \.\.\.</H1></Body></Html>$| p/CCProxy http proxy/ o/Windows/ cpe:/o:microsoft:windows/a
match http-proxy m|^<pre>\r\nIP Address: [\d.]+\r\nMAC Address: \r\nServer Time: .*\r\nAuth result: Invalid user\.\r\n</pre>| p/CCProxy http proxy/ o/Windows/ cpe:/o:microsoft:windows/a
match http-proxy m|^HTTP/1\.0 401 Unauthorized\r\nServer: CCProxy\r\nWWW-Authenticate: Basic realm=\"CCProxy Authorization\"\r\n| p/CCProxy http proxy/ i/unauthorized/ o/Windows/ cpe:/o:microsoft:windows/a
match http-proxy m|^HTTP/1\.0 407 Unauthorized\r\nServer: CCProxy\r\nProxy-Authenticate: Basic realm=\"CCProxy Authorization\"\r\n| p/CCProxy http proxy/ i/unauthorized/ o/Windows/ cpe:/o:microsoft:windows/a
match http-proxy m|^HTTP/1\.[01] \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: WebMarshal Proxy\r\n|s p/WebMarshal http proxy/ o/Windows/ cpe:/o:microsoft:windows/a
match http-proxy m|^HTTP/1\.0 400 Bad Request\r\nCache-Control: no-cache\r\nPragma: no-cache\r\n.*<br>Protocol:http\n<br>Host: [N]ULL\n<br>Path:/\n<tr>|s p/Oops! http proxy/
match http-proxy m|^HTTP/1\.0 504 Gateway Timeout\. Or not in cache\r\n\r\n| p/Oops! http proxy/
match http-proxy m|^HTTP/1\.0 407 Proxy Authentication Required\r\nProxy-Authenticate: Basic realm=\"oops\"\r\n| p/Oops! http proxy/ i/Authentication Required/
match http-proxy m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: Polipo\r\n|s p/Polipo http proxy/
match http-proxy m|^HTTP/1\.1 503 ERROR\nConnection: close\nContent-Type: text/html; charset=iso-8859-1\n\n<html>\n<head>\n<title>Error: Unable to resolve IP</title>| p/ffproxy http proxy/
match http-proxy m|^HTTP/1\.1 200 OK\r\ndate: .*\r\nconnection: close\r\n\r\n<html><body><pre><h1>Index of /</h1>\n<b>Name {53}Size {6}Last modified</b>\n\n| p/HTTP Replicator proxy/
match http-proxy m|^HTTP/1\.0 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: BestHop ([\d.]+)\r\n|s p/BestHop CacheFly http proxy/ v/$1/
match http-proxy m|^HTTP/1\.0 407 Authentication failed\r\nConnection: close\r\nProxy-Connection: close\r\nProxy-Authenticate: Basic realm=\"HTTP proxy\"\r\n| p/Astaro Security http proxy/ cpe:/a:astaro:security_gateway_software/
match http-proxy m|^HTTP/1\.0 503 Service unavailable\r\n\r\n\r\n<html>\r\n<head>\r\n<title>Connect server failed</title>\r\n</head>\r\n<body >\r\n<h3>503 Can not connect server</h3>\r\nezProxy meets some difficulties to connect this WWW server\.| p/ezProxy http proxy/ o/Windows/ cpe:/o:microsoft:windows/a
match http-proxy m|^HTTP/1\.1 403 Forbidden\r\nDate: .*\r\nServer: Mystery WebServer\r\nConnection: close\r\nContent-Type: text/html; charset=iso-8859-1\r\n\r\n<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2\.0//EN\">\n<HTML><HEAD>\n<TITLE>403 Forbidden</TITLE>\n</HEAD><BODY>\n<H1>Forbidden</H1>\nYou don't have permission to access /\non this server\.<P>\n<HR>\n<ADDRESS>Mystery WebServer/([\d.]+) Server at ([-\w_.]+) Port \d+</ADDRESS>\n| p/Espion Interceptor http proxy/ v/$1/ h/$2/
match http-proxy m|^HTTP/1\.1 400 Bad Request .*Server: Traffic inspector HTTP/FTP[/ ]Proxy server \(([\w._-]+)\)\r\n|s p/Traffic Inspector http proxy/ v/$1/ o/Windows/ cpe:/o:microsoft:windows/a
match http-proxy m|^HTTP/1\.0 200 OK\r\nCache-Control: no-store\r\nPragma: no-cache\r\nCache-Control: no-cache\r\nX-Bypass-Cache: Application and Content Networking System Software ([\d.]+)\r\n| p/Cisco ACNS outbound proxying/ v/$1/ cpe:/a:cisco:application_and_content_networking_system_software:$1/

match http-proxy m|^<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4\.01 Transitional//EN\" \"http://www\.w3\.org/TR/html4/loose\.dtd\">.*ERROR: The requested URL could not be retrieved|s p/Squid http proxy/ cpe:/a:squid-cache:squid/
match http-proxy m|^<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4\.01 Transitional//EN\" \"http://www\.w3\.org/TR/html4/loose\.dtd\">.*El URL solicitado no se ha podido conseguir|s p/Squid http proxy/ i/Spanish/ cpe:/a:squid-cache:squid::::es/
match http-proxy m|^<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4\.01 Transitional//EN\" \"http://www\.w3\.org/TR/html4/loose\.dtd\">.*A URL solicitada n&atilde;o pode ser recuperada|s p/Squid http proxy/ i/Portuguese/ cpe:/a:squid-cache:squid::::pt/
match http-proxy m|^<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4\.01 Transitional//EN\" \"http://www\.w3\.org/TR/html4/loose\.dtd\">.*La URL richiesta non pu&ograve; essere recuperata</TITLE>|s p/Squid http proxy/ i/Italian/ cpe:/a:squid-cache:squid::::it/
match http-proxy m|^<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4\.01 Transitional//EN\" \"http://www\.w3\.org/TR/html4/loose\.dtd\">.*L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e|s p/Squid http proxy/ i/French/ cpe:/a:squid-cache:squid::::fr/
match http-proxy m|^<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4\.01 Transitional//EN\" \"http://www\.w3\.org/TR/html4/loose\.dtd\">.*FEHLER: Der angeforderte URL konnte nicht geholt werden|s p/Squid http proxy/ i/German/ cpe:/a:squid-cache:squid::::de/

match http-proxy m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: FSAV4IGW\r\n.*<html><head><title>F-Secure Internet Gatekeeper Welcome Page</title>|s p/F-Secure Internet Gatekeeper httpd/
match http-proxy m|^HTTP/1\.[01] \d\d\d .*\r\nServer: twproxy/([-\w_.]+)\r\n| p/ThunderWeb twproxy/ v/$1/
match http-proxy m=^HTTP/1\.0 302 Redirect\r\nPragma: no-cache\r\nCache-Control: no-cache\r\nContent-Length: 0\r\nConnection: close\r\nLocation: http://([\w._-]+):\d+/(?:nohost|nonauth/nohost\.php)\r\n\r\n= p/Kerio WinRoute http proxy/ o/Windows/ h/$1/ cpe:/o:microsoft:windows/a
match http-proxy m|^HTTP/1\.0 407 Proxy Authentication Required.*\r\nServer: HandyCache\r\n| p/HandyCache http caching proxy/ i/Russian/ o/Windows/ cpe:/o:microsoft:windows/a
match http-proxy m|^HTTP/1\.0 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: CF/v([\d.]+)\r\n(?:[^\r\n]+\r\n)*?X-Cache: MISS from CacheFORCE\r\n|s p/CacheForce http proxy/ v/$1/
match http-proxy m|^HTTP/1\.0 302 Found\r\nSet-Cookie:.*<TITLE>Novell Proxy</TITLE></HEAD><BODY><b><p>HTTP request is being redirected to HTTPS\.</b></BODY></HTML>\r\n|s p/Novell iChain http proxy/ o/NetWare/ cpe:/a:novell:ichain/ cpe:/o:novell:netware/a
match http-proxy m|^HTTP/1\.0 400 Bad Request\r\nServer: micro_proxy\r\n.*<ADDRESS><A HREF=\"http://www\.acme\.com/software/micro_proxy/\">micro_proxy</A>|s p/acme.com micro_proxy http proxy/ cpe:/a:acme:micro_proxy/
match http-proxy m|^HTTP/1\.0 403 Forbidden\r\n.*<br><b>Access denied due to Proxy\+'s Security settings!</b>|s p/Fortech Proxy+ http admin/ o/Windows/ cpe:/o:microsoft:windows/a
match http-proxy m|^HTTP/1\.0 200 OK\r\nServer: URL Gateway ([-\w_.]+)\r\n| p/URL Gateway http proxy/ v/$1/ o/Windows/ cpe:/o:microsoft:windows/a
match http-proxy m|^HTTP/1\.[01] \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: SonicWALL SSL-VPN Web Server\.?\r\n|s p/SonicWALL SSL-VPN http proxy/
match http-proxy m|^HTTP/1\.0 504 Web Acceleration Client Error \(400\.3\) - Missing Host Field in Request Header\r\nContent-type: text/html\r\nContent-length: \d+\r\n\r\n| p/HughesNet Web Acceleration http proxy/
match http-proxy m|^HTTP/1\.0 407 Proxy Authentication Required\r\nProxy-Authenticate: Basic realm=.*<h3>Access to requested resource disallowed by administrator or you need valid username/password to use this resource|s p/3Proxy http proxy/
match http-proxy m|^HTTP/1\.1 400 Malformed Request\r\nServer: WinGate ([\d.]+) \(Build (\d+)\)\r\n| p/WinGate httpd/ v/$1 build $2/ o/Windows/ cpe:/o:microsoft:windows/a
match http-proxy m=^HTTP/1\.1 403 (?:Request|Access) [Dd]enied\r\nDate: .*\r\nCache-control: no-store, no-cache\r\nContent-Type: text/html\r\nContent-Length: \d+\r\nServer: WinGate Engine\r\n\r\n= p/WinGate http proxy/ o/Windows/ cpe:/o:microsoft:windows/a
match http-proxy m|^HTTP/1\.0 \d\d\d.*server: CoralWebPrx/([-\w_.]+) \(See http://coralcdn\.org/\)\r\n|s p/Coral Content Distribution Network http proxy/ v/$1/
match http-proxy m|^HTTP/1\.0 400 Bad Request\r\nContent-Type: text/html\r\n\r\nYou are trying to use a node of the CoDeeN CDN Network\.| p/CoDeeN Content Distribution Network http proxy/
match http-proxy m|^HTTP/1\.0 403 Request error by HAVP\r\n.*<title>Yoggie - Unknown Request</title>|s p/Yoggie httpd/ i/HAVP anti-virus web proxy/
match http-proxy m|^HTTP/1\.0 403 Request error by HAVP\r\n| p/HAVP anti-virus web proxy/
match http-proxy m|^HTTP/1\.1 407\r\nProxy-Authenticate: Basic realm=\"Proxy\"\r\nContent-Type: text/plain\r\n\r\nAccess denyed| p/Small HTTP Server http proxy/
match http-proxy m|^HTTP/1\.0 407 Proxy Authentication required\r\nDate: .*\r\nContent-Type: text/html\r\nProxy-Authenticate: Basic realm=\"Proxy\+ HTTP Proxy service\"\r\n| p/Proxy+ http proxy/ o/Windows/ cpe:/o:microsoft:windows/a
match http-proxy m|^HTTP/1\.1 503 Freenet is starting up\r\n| p/Freenet FProxy/
match http-proxy m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Cache-Control: max-age=0, must-revalidate, no-cache, no-store, post-check=0, pre-check=0\r\n.*<title>Freenet FProxy Homepage|s p/Freenet FProxy/
match http-proxy m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Content-Security-Policy: default-src 'self'; script-src 'none'; frame-src 'none'; object-src 'none'; style-src 'self' 'unsafe-inline'\r\n(?:[^\r\n]+\r\n)*?Cache-Control: private, max-age=0, must-revalidate, no-cache, no-store, post-check=0, pre-check=0\r\n|s p/Freenet FProxy/
match http-proxy m=^HTTP/1\.1 200 OK\r\nConnection: close\r\n.*<title>Browse Freenet \(Node id\|([\w._-]+)\) - Freenet</title>=s p/Freenet FProxy/ i/node id $1/
match http-proxy m|^HTTP/1\.1 200 OK\r\nConnection: close\r\n.*<title>Freenet Node of Node id\x7c([\w._-]+) - Freenet</title>|s p/Freenet FProxy/ i/node id $1/
match http-proxy m|^HTTP/1\.1 200 OK\r\nConnection: close\r\n.*<title>Browse Freenet \(([\w._-]+)\) - Freenet</title>|s p/Freenet FProxy/ i/node id $1/
match http-proxy m|^HTTP/1\.1 200 OK\r\nConnection: close\r\n.*<title>Freenet - Freenet</title>|s p/Freenet FProxy/
match http-proxy m|^HTTP/1\.[01] (?:[^\r\n]*\r\n(?!\r\n))*?Server: Mikrotik HttpProxy\r\n|s p/MikroTik http proxy/
match http-proxy m|^HTTP/1\.0 500 Internal Server Error\r\nCache-control: no-cache\r\nContent-type: text/html\r\n\r\n<HTML><HEAD><TITLE>SpoonProxy V([\w._-]+) Error</TITLE>| p/Pi-Soft SpoonProxy http proxy/ v/$1/ o/Windows/ cpe:/o:microsoft:windows/a
match http-proxy m|^HTTP/1\.[01] \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: approx/([\w._~+-]+) Ocamlnet/([\w._-]+)\r\n|s p/Approx http proxy/ v/$1/ i/Ocamlnet $2/
match http-proxy m|^HTTP/1\.1 401 Unauthorized\nWWW-Authenticate: Basic realm=\"Anti-Spam SMTP Proxy \(ASSP\) Configuration\"\nContent-type: text/html\nServer: ASSP/([\w._-]+)\(?\)?\n| p/Anti-Spam SMTP Proxy http config/ v/$1/
match http-proxy m|^HTTP/1\.0 \d\d\d .*<b>Bad request format\.\n\t\t</b><p>Please, check URL\.<p>\t\t<hr>\t\tGenerated by <a href=\"http://www\.kingate\.net\"> kingate\(([\w._-]+)-win32\)</a>\.</body></html>\0\0|s p/kingate http proxy/ v/$1/ o/Windows/ cpe:/o:microsoft:windows/a
match http-proxy m|^\njava\.net\.UnknownHostException: /\r\n\tat java\.net\.PlainSocketImpl\.connect\(Unknown Source\)\r\n| p/Apache JMeter http proxy/
match http-proxy m|^\r\n\r\njava\.net\.UnknownHostException: /\n\tat java\.net\.AbstractPlainSocketImpl\.connect\(AbstractPlainSocketImpl\.java:158\)\n| p/Apache JMeter http proxy/
match http-proxy m|^HTTP/1\.1 403 Bad Protocol\r\n.*<H1>I2P ERROR: NON-HTTP PROTOCOL</H1>The request uses a bad protocol\. The I2P HTTP Proxy supports http:// requests ONLY\. Other protocols such as https:// and ftp:// are not allowed\.<BR>|s p/I2P http proxy/
match http-proxy m|^HTTP/1\.1 405 Bad Method\r\n.*<H1>I2P ERROR: METHOD NOT ALLOWED</H1>The request uses a bad protocol\. The Connect Proxy supports CONNECT requests ONLY\. Other methods such as GET are not allowed - Maybe you wanted the HTTP Proxy\?\.<BR>|s p/I2P https proxy/
match http-proxy m|^HTTP/1\.0 502 Bad Gateway\r\nProxy-Connection: close\r\nContent-type: text/html; charset=us-ascii\r\n\r\n<html><head><title>502 Bad Gateway</title></head>\r\n<body><h2>502 Bad Gateway</h2><h3>Host Not Found or connection failed</h3></body></html>\r\n| p/3proxy http proxy/
match http-proxy m|^HTTP/1\.0 407 Proxy Authentication Required\r\nProxy-Authenticate: NTLM\r\nProxy-Authenticate: basic realm=\"proxy\"\r\nProxy-Connection: close\r\n.*<h2>407 Proxy Authentication Required</h2><h3>Access to requested resource disallowed by administrator or you need valid username/password to use this resource</h3>|s p/3proxy http proxy/ i/authentication required/
match http-proxy m|^HTTP/1\.0 404 Object not found\r\n.*<title>MIMEsweeper for Web :: ACCESS DENIED</title>|s p/Clearswift MIMEsweeper for web http proxy/ d/proxy server/
match http-proxy m|^HTTP/1\.1 200 .*<title>[\n ]*Web Filter Block Override[\n ]*</title>.*/XX/YY/ZZ/|s p/Fortinet FortiGuard http proxy/ d/firewall/
match http-proxy m|^HTTP/1\.1 400 Bad Request\r\nServer: ziproxy\r\n.*\(ziproxy/([\w._-]+)\)</ADDRESS>|s p/ziproxy http proxy/ v/$1/
match http-proxy m|^HTTP/1\.1 400 Bad Request\r\nServer: ziproxy\r\n| p/ziproxy http proxy/
match http-proxy m|^HTTP/1\.0 400 Bad Request\r\n\r\n\0{872}$| p/Ncat http proxy/ v/0.2/ i/before Nmap 4.85BETA1/
match http-proxy m|^HTTP/1\.0 400 Bad Request\r\n\r\n$| p/Ncat http proxy/ i/Nmap 4.85BETA1 or later/
match http-proxy m|^HTTP/1\.1 404 Not found\r\nConnection: close\r\n.*<title>Proxy error: 404 Not found\.</title>\n.*<hr>Generated .* by Polipo on <em>([\w_.-]+):\d+</em>\.\n|s p/Polipo/ h/$1/
match http-proxy m|^HTTP/1\.1 401 Server authentication required\r\nConnection: close\r\n.*<title>Proxy error: 401 Server authentication required\.</title>.*<hr>Generated .*? by Polipo on <em>([\w._-]+):\d+</em>\.|s p/Polipo/ h/$1/
match http-proxy m|^HTTP/1\.0 500 Direct HTTP requests not allowed\nContent-type: text/html\n\n<font face=\"Bitstream Vera Sans Mono,Andale Mono,Lucida Console\">\nThe proxy is unable to process your request\.\n<h1><font color=red><b>Direct HTTP requests not allowed\.</b></font></h1>\n$| p/ratproxy/
match http-proxy m|^HTTP/1\.0 400 Bad Request\r\ncontent-type: text/html\r\n\r\n<h1>400</h1>\n<p>koHttpInspector: Could not understand the query: '/'</p>\n<hr>\n<address>Komodo Http Inspector, Port \d+</address>\n$| p/Komodo HTTP Inspector proxy/
match http-proxy m|^HTTP/1\.1 404 Not Found\r\nContent-Type: text/html\r\nContent-Length: \d+\r\nCache-Control: no-cache\r\nConnection: close\r\nProxy-Connection: close\r\n\r\n<style type=\"text/css\">\nbody{ font-family: Tahoma, Arial, sans-serif, Helvetica, Verdana; font-size: 11px; color: #000000; background-color: #FFFFFF; margin: 2 }\n| p/SafeSquid http proxy/
match http-proxy m|^HTTP/1\.1 401 Unauthorized\r\nContent-Length: 0\r\nWWW-Authenticate: Basic realm=\"proxy1\"\r\nConnection: keep-alive\r\nProxy-Connection: keep-alive\r\n\r\n$| p/SafeSquid http proxy/
match http-proxy m|^HTTP/1\.0 302 Found\r\nServer: Distributed-Net-Proxy/([\d.]+)\r\nLocation: http://www\.distributed\.net/\r\n\r\n$| p/distributed.net personal key proxy httpd/ v/$1/
match http-proxy m|^HTTP/1\.0 200 OK\r\nServer: LastFMProxy/([\w.]+)\r\n| p/LastFMProxy HTTP-to-last.fm proxy/ v/$1/ cpe:/a:last:last.fm/
match http-proxy m|^HTTP/1\.0 403 Forbidden\r\n.*<TITLE>\r\nFEHLER: Der Zugriff auf die angeforderte URL war nicht erfolgreich\r\n</TITLE>.*<B>KEN! DSL Proxy</B>|s p/AVM KEN! DSL http proxy/
match http-proxy m|^HTTP/1\.0 404 Not Found\r\n.*<title>HINWEIS: Der Zugriff auf die angeforderte URL war nicht erfolgreich</title>|s p/AVM FRITZ!Box Fon WAP http proxy/ d/WAP/
match http-proxy m|^HTTP/1\.0 404 Not Found\r\n.*<title>HINWEIS: Die Internetnutzung ist gesperrt\.</title>|s p/AVM FRITZ!Box Fon WLAN 7100-series http proxy/ d/WAP/
match http-proxy m|^HTTP/1\.0 407 Proxy access denied\r\nProxy-Authenticate: NTLM\r\nProxy-Connection: keep-alive\r\nContent-Length: 0\r\n\r\n$| p/ScanSafe http proxy/
match http-proxy m|^HTTP/1\.0 400 Bad Request\r\n(?:[^\r\n]+\r\n)*?Server: BaseHTTP/([\d.]+) Python/([\w._-]+)\r\n.*<head>\n<title>Error response</title>\n</head>\n<body>\n<h1>Error response</h1>\n<p>Error code 400\.\n<p>Message: Bad Request\.\n<p>Error code explanation: 400 = Bad request syntax or unsupported method\.\n</body>\n$|s p/BaseHTTPServer/ v/$1/ i/GAppProxy Google App Engine proxy; Python $2/ cpe:/a:python:basehttpserver:$1/a cpe:/a:python:python:$2/
# Etisalat - United Arab Emirates telecom company.
match http-proxy m|^HTTP/1\.1 501 Not Implemented\r\n.*<title>This site is blocked</title>.*<img border=\"0\" src=\"http://([\w._-]+)/images-ip/ipblocked\.jpg\" \nuseMap=#links2 border=0>.*<area title=\"\" shape=RECT alt=\"\" coords=\"494, 20, 580, 105\" href=\"http://www\.etisalat\.ae\">|s p/Etisalat censorship http proxy/ i/site blocked/ h/$1/
match http-proxy m|^HTTP/1\.1 403 Forbidden\r\n.*<title>This site is blocked</title>.*<img border=\"0\" src=\"http://([\w._-]+)/images-ip/siteblocked\.jpg\" useMap=#links border=0>.*<area title=\"\" shape=RECT alt=\"\" coords=\"154, 449, 254, 463\" href=\"http://www\.etisalat\.ae/proxy\">|s p/Etisalat censorship http proxy/ i/site blocked/ h/$1/
match http-proxy m|^HTTP/1\.0 404 GlimmerBlocked\r\n| p/GlimmerBlocker http proxy/
match http-proxy m|^HTTP/1\.1 400 Bad Request \(Malformed HTTP request\)\r\n.*<HTML><TITLE>Vital Security Proxy Error</TITLE>|s p/Finjan Vital Security http proxy/
match http-proxy m|^HTTP/1\.0 400 Bad Request\r\nConnection: Close\r\n\r\n<HTML><HEAD>\n<TITLE>ERROR: The requested URL could not be retrieved</TITLE>\n</HEAD><BODY>\n<H2>The requested URL could not be retrieved</H2>\n<HR>\n<P>\nWhile trying to retrieve the URL:\n| p/Websense http proxy/
match http-proxy m|^HTTP/1\.0 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Via: HTTP/1\.1 ([\w._-]+) \(Websense_Content_Gateway/([\w._-]+) \[c s f \]\)\r\n|s p/Websense Content Gateway http proxy/ v/$2/ h/$1/ cpe:/a:websense:websense_content_content_gateway:$2/
match http-proxy m|^HTTP/1\.0 504 Gateway Timeout\r\nContent-Length: 237\r\n.*<p>The proxy server did not receive a timely response\nfrom the upstream server\.</p>|s p/Fortinet FortiGate-110c http proxy/ d/firewall/
match http-proxy m|^HTTP/1\.0 302 Moved Temporarily\r\nContent-length: 22\r\nConnection: close\r\nSet-Cookie: sslvpn-authck-orig-url=/; path=/\r\nSet-Cookie: sslvpn-authck-realm-name=Our Users; path=/\r\nLocation: /_formauth/login\.html\r\nContent-Type: text/plain\r\n\r\n302 Moved Temporarily\n$| p/Phion HTTPS VPN gateway/ d/proxy server/

match http-proxy m|^HTTP/1\.0 200 OK\r\nCache-Control: no-cache\r\nConnection: close\r\nContent-Type: text/html\r\n\r\n<html><head><title>Statistics Report for HAProxy</title>| p/HAProxy http proxy/ d/load balancer/ cpe:/a:haproxy:haproxy/
# HAProxy responses are mostly from http_err_msgs, HTTP_401_fmt, and HTTP_407_fmt in
# http://git.haproxy.org/?p=haproxy.git;a=blob;f=src/proto_http.c
# Only statuses 200, 403, and 503 are likely to result from from GetRequest;
# other probes can match via fallbacks.
match http-proxy m|^HTTP/1\.0 200 OK\r\nCache-Control: no-cache\r\nConnection: close\r\nContent-Type: text/html\r\n\r\n<html><body><h1>200 OK</h1>\nHAProxy: service ready\.\n</body></html>\n$| p/HAProxy http proxy/ v/before 1.5.0/ d/load balancer/ cpe:/a:haproxy:haproxy/
match http-proxy m|^HTTP/1\.0 400 Bad request\r\nCache-Control: no-cache\r\nConnection: close\r\n\r\n<html><body><h1>400 Bad request</h1>\nYour browser sent an invalid request\.\n</body></html>\n$| p/HAProxy http proxy/ v/before 1.3.1/ d/load balancer/ cpe:/a:haproxy:haproxy/
match http-proxy m|^HTTP/1\.0 403 Forbidden\r\nCache-Control: no-cache\r\nConnection: close\r\n\r\n<html><body><h1>403 Forbidden</h1>\nRequest forbidden by administrative rules\.\n</body></html>\n$| p/HAProxy http proxy/ v/before 1.3.1/ d/load balancer/ cpe:/a:haproxy:haproxy/
match http-proxy m|^HTTP/1\.0 408 Request Time-out\r\nCache-Control: no-cache\r\nConnection: close\r\n\r\n<html><body><h1>408 Request Time-out</h1>\nYour browser didn't send a complete request in time\.\n</body></html>\n$| p/HAProxy http proxy/ v/before 1.3.1/ d/load balancer/ cpe:/a:haproxy:haproxy/
match http-proxy m|^HTTP/1\.0 500 Server Error\r\nCache-Control: no-cache\r\nConnection: close\r\n\r\n<html><body><h1>500 Server Error</h1>\nAn internal server error occured\.\n</body></html>\n$| p/HAProxy http proxy/ v/before 1.3.1/ d/load balancer/ cpe:/a:haproxy:haproxy/
match http-proxy m|^HTTP/1\.0 502 Bad Gateway\r\nCache-Control: no-cache\r\nConnection: close\r\n\r\n<html><body><h1>502 Bad Gateway</h1>\nThe server returned an invalid or incomplete response\.\n</body></html>\n$| p/HAProxy http proxy/ v/before 1.3.1/ d/load balancer/ cpe:/a:haproxy:haproxy/
match http-proxy m|^HTTP/1\.0 503 Service Unavailable\r\nCache-Control: no-cache\r\nConnection: close\r\n\r\n<html><body><h1>503 Service Unavailable</h1>\nNo server is available to handle this request\.\n</body></html>\n$| p/HAProxy http proxy/ v/before 1.3.1/ d/load balancer/ cpe:/a:haproxy:haproxy/
match http-proxy m|^HTTP/1\.0 504 Gateway Time-out\r\nCache-Control: no-cache\r\nConnection: close\r\n\r\n<html><body><h1>504 Gateway Time-out</h1>\nThe server didn't respond in time\.\n</body></html>\n$| p/HAProxy http proxy/ v/before 1.3.1/ d/load balancer/ cpe:/a:haproxy:haproxy/
match http-proxy m|^HTTP/1.0 401 Unauthorized\r\nCache-Control: no-cache\r\nConnection: close\r\nWWW-Authenticate: Basic realm=".*"\r\n\r\n<html><body><h1>401 Unauthorized</h1>\nYou need a valid user and password to access this content.\n</body></html>\n$| p/HAProxy http proxy/ v/before 1.3.1/ d/load balancer/ cpe:/a:haproxy:haproxy/
# Statuses 400, 401, 403, 408, 500, 502, 503, and 504 gained "Content-Type: text/html" in v1.3.1.
# http://git.haproxy.org/?p=haproxy.git;a=commitdiff;h=791d66d3634dde12339d4294aff55a1aed7518e3;hp=b9e98b683612b29ef939c10d3d00be27de26534a
match http-proxy m|^HTTP/1\.0 400 Bad request\r\nCache-Control: no-cache\r\nConnection: close\r\nContent-Type: text/html\r\n\r\n<html><body><h1>400 Bad request</h1>\nYour browser sent an invalid request\.\n</body></html>\n$| p/HAProxy http proxy/ v/1.3.1 or later/ d/load balancer/ cpe:/a:haproxy:haproxy/
match http-proxy m|^HTTP/1\.0 403 Forbidden\r\nCache-Control: no-cache\r\nConnection: close\r\nContent-Type: text/html\r\n\r\n<html><body><h1>403 Forbidden</h1>\nRequest forbidden by administrative rules\.\n</body></html>\n$| p/HAProxy http proxy/ v/1.3.1 or later/ d/load balancer/ cpe:/a:haproxy:haproxy/
match http-proxy m|^HTTP/1\.0 408 Request Time-out\r\nCache-Control: no-cache\r\nConnection: close\r\nContent-Type: text/html\r\n\r\n<html><body><h1>408 Request Time-out</h1>\nYour browser didn't send a complete request in time\.\n</body></html>\n$| p/HAProxy http proxy/ v/1.3.1 or later/ d/load balancer/ cpe:/a:haproxy:haproxy/
match http-proxy m|^HTTP/1\.0 500 Server Error\r\nCache-Control: no-cache\r\nConnection: close\r\nContent-Type: text/html\r\n\r\n<html><body><h1>500 Server Error</h1>\nAn internal server error occured\.\n</body></html>\n$| p/HAProxy http proxy/ v/1.3.1 or later/ d/load balancer/ cpe:/a:haproxy:haproxy/
match http-proxy m|^HTTP/1\.0 502 Bad Gateway\r\nCache-Control: no-cache\r\nConnection: close\r\nContent-Type: text/html\r\n\r\n<html><body><h1>502 Bad Gateway</h1>\nThe server returned an invalid or incomplete response\.\n</body></html>\n$| p/HAProxy http proxy/ v/1.3.1 or later/ d/load balancer/ cpe:/a:haproxy:haproxy/
match http-proxy m|^HTTP/1\.0 503 Service Unavailable\r\nCache-Control: no-cache\r\nConnection: close\r\nContent-Type: text/html\r\n\r\n<html><body><h1>503 Service Unavailable</h1>\nNo server is available to handle this request\.\n</body></html>\n$| p/HAProxy http proxy/ v/1.3.1 or later/ d/load balancer/ cpe:/a:haproxy:haproxy/
match http-proxy m|^HTTP/1\.0 504 Gateway Time-out\r\nCache-Control: no-cache\r\nConnection: close\r\nContent-Type: text/html\r\n\r\n<html><body><h1>504 Gateway Time-out</h1>\nThe server didn't respond in time\.\n</body></html>\n$| p/HAProxy http proxy/ v/1.3.1 or later/ d/load balancer/ cpe:/a:haproxy:haproxy/
match http-proxy m|^HTTP/1.0 401 Unauthorized\r\nCache-Control: no-cache\r\nConnection: close\r\nContent-Type: text/html\r\nWWW-Authenticate: Basic realm=".*"\r\n\r\n<html><body><h1>401 Unauthorized</h1>\nYou need a valid user and password to access this content.\n</body></html>\n$| p/HAProxy http proxy/ v/1.3.1 or later/ d/load balancer/ cpe:/a:haproxy:haproxy/
# HTTP_407_fmt was added in v1.4-rc1.
# http://git.haproxy.org/?p=haproxy-1.4.git;a=commitdiff;h=844a7e76d2557364e6d34d00027f2fa514b9d855;hp=8c8bd4593c95f54cbe42bf204b943a159810a74e
match http-proxy m|^HTTP/1.0 407 Unauthorized\r\nCache-Control: no-cache\r\nConnection: close\r\nContent-Type: text/html\r\nProxy-Authenticate: Basic realm=".*"\r\n\r\n<html><body><h1>401 Unauthorized</h1>\nYou need a valid user and password to access this content.\n</body></html>\n$| p/HAProxy http proxy/ v/1.4.0 - 1.5.10/ d/load balancer/ cpe:/a:haproxy:haproxy/
# 200 changed in v1.5-dev7.
# http://git.haproxy.org/?p=haproxy-1.5.git;a=commitdiff;h=027a85bb03c5524e62c50e228412d9be403d7f98;hp=7c51a732f701f7d147e7b79d828f80612a0bfcbc
match http-proxy m|^HTTP/1\.0 200 OK\r\nCache-Control: no-cache\r\nConnection: close\r\nContent-Type: text/html\r\n\r\n<html><body><h1>200 OK</h1>\nService ready\.\n</body></html>\n$| p/HAProxy http proxy/ v/1.5.0 or later/ d/load balancer/ cpe:/a:haproxy:haproxy/
# 405 and 429 were added in v1.6-dev2.
# http://git.haproxy.org/?p=haproxy-1.6.git;a=commitdiff;h=108b1dd69d4e26312af465237487bdb855b0de60
match http-proxy m|^HTTP/1\.0 405 Method Not Allowed\r\nCache-Control: no-cache\r\nConnection: close\r\nContent-Type: text/html\r\n\r\n<html><body><h1>405 Method Not Allowed</h1>\nA request was made of a resource using a request method not supported by that resource\n</body></html>\n$| p/HAProxy http proxy/ v/1.6.0 or later/ d/load balancer/ cpe:/a:haproxy:haproxy/
match http-proxy m|^HTTP/1\.0 429 Too Many Requests\r\nCache-Control: no-cache\r\nConnection: close\r\nContent-Type: text/html\r\n\r\n<html><body><h1>429 Too Many Requests</h1>\nYou have sent too many requests in a given amount of time\.\n</body></html>\n$| p/HAProxy http proxy/ v/1.6.0 or later/ d/load balancer/ cpe:/a:haproxy:haproxy/
# HTTP_407_fmt changed in v1.5.10.
# http://git.haproxy.org/?p=haproxy-1.5.git;a=commitdiff;h=b301654e237c358e892db32c4ac449b42550d79b;hp=211c2e901d0b83b6792d5ebdf207f8e70a299361
match http-proxy m|^HTTP/1\.0 407 Unauthorized\r\nCache-Control: no-cache\r\nConnection: close\r\nContent-Type: text/html\r\nProxy-Authenticate: Basic realm=".*"\r\n\r\n<html><body><h1>407 Unauthorized</h1>\nYou need a valid user and password to access this content\.\n</body></html>\n$| p/HAProxy http proxy/ v/1.5.10 or later/ d/load balancer/ cpe:/a:haproxy:haproxy/

match http-proxy m|^HTTP/1\.0 400\r\nContent-Type: text/html\r\n\r\n<html><head><title>Error</title></head><body>\r\n<h2>ERROR: 400</h2>\r\n<br>\r\n</body></html>\r\n$| p/Citrix Application Firewall/ d/firewall/
match http-proxy m|^HTTP/1\.0 200 OK\r\nContent-Type: text/html; charset=utf-8\r\nContent-Length: 3366\r\nPragma: no-cache\r\n\r\n.*<style>\r\n\r\nh1, p, a, body {font-family: Arial;}\r\n\r\nh2\r\n{\r\n\ttext-align: center; \r\n\tfont: bold 20px Verdana, sans-serif; \r\n\tcolor: #00F; \r\n}|s p/Integard filtering http proxy management interface/ d/proxy server/
match http-proxy m|^HTTP/1\.0 502 Bad gateway\r\n\r\nBurp proxy error: invalid client request received: first line of request did not contain an absolute URL - try enabling invisible proxy support\r\n$| p/Burp Suite Pro http proxy/
match http-proxy m|^HTTP/1\.0 502 Bad gateway\r\n\r\nBurp proxy error: Invalid client request received: First line of request did not contain an absolute URL - try enabling invisible proxy support\r\n$| p/Burp Suite Pro http proxy/ v/1.5/
match http-proxy m|^HTTP/1\.1 401 Unauthorized\r\nServer: RabbIT proxy version ([\w._-]+)\r\nContent-type: text/html; charset=utf-8\r\nCache-Control: no-cache\r\nPragma: no-cache\r\nDate: .*\r\nWWW-Authenticate: Basic realm=\"([\w._-]+):\d+\"\r\n| p/RabbIT http proxy/ v/$1/ h/$2/
match http-proxy m|^HTTP/1\.1 403 Forbidden\r\nServer: Lusca/([\w._-]+)\r\n| p/Lusca http proxy/ v/$1/
match http-proxy m|^HTTP/1\.0 403 Access Denied\r\nConnection: close\r\n\r\n<html>The request you issued is not authorized for GoogleSharing\.\n| p/GoogleSharing http proxy/
match http-proxy m|^HTTP/1\.0 503\r\nServer: Charles\r\n| p/Charles http proxy/
match http-proxy m|^HTTP/1\.0 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Via: http/1\.[01] ([\w._-]+) \(ApacheTrafficServer[^)]*\)\r\nServer: ATS/([\w._-]+)\r\n|s p/Apache Traffic Server/ v/$2/ h/$1/ cpe:/a:apache:traffic_server:$2/
match http-proxy m|^HTTP/1\.0 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Via: http/1\.[01] ([\w._-]+) \(ApacheTrafficServer[^)]*\)\r\nServer: ATS\r\n|s p/Apache Traffic Server/ h/$1/ cpe:/a:apache:traffic_server/
match http-proxy m|^HTTP/1\.0 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: ATS/([\w._-]+)\r\n|s p/Apache Traffic Server/ v/$1/ cpe:/a:apache:traffic_server:$1/
match http-proxy m|^HTTP/1\.0 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: ATS\r\n|s p/Apache Traffic Server/ cpe:/a:apache:traffic_server/
match http-proxy m|^HTTP/1\.0 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Via: http/1\.1 ([\w._-]+) \([^\)]+ \[c[M ]s[S ]f \]\)\r\nServer: [^/]+/([\d.]+)\r\n|s p/Apache Traffic Server/ v/$2/ h/$1/ cpe:/a:apache:traffic_server:$2/
match http-proxy m|^HTTP/1\.0 200 OK\r\nACCEPT-RANGES: none\r\n\r\n<html><head><Title>SecTitan&#153; Reverse Proxy</title></head><body><center><h1>Error 107</h1>Invalid Request!<br><b>SecTitan&#153; Reverse Proxy ([\w._-]+)</b><br>Copyright &copy; \d+ Bestellen Software, LLC All rights reserved\.</center></body></html>| p/Bestellen SecTitan reverse http proxy/ v/$1/
match http-proxy m|^HTTP/1\.1 \d\d\d .*\r\nServer: Varnish\r\n| p/Varnish/ cpe:/a:varnish-cache:varnish/
match http-proxy m|^HTTP/1\.0 503 Internal Error\r\nServer: awarrenhttp/([\w._-]+)\r\nContent-Type: text/html\r\nConnection: close\r\n\r\n<HTML><HEAD>\n<TITLE>ERROR: The requested URL could not be retrieved</TITLE>\n</HEAD><BODY>\n<H1>ERROR</H1>\n<H2>The requested URL could not be retrieved</H2>| p/awarrenhttp http proxy/ v/$1/
match http-proxy m|^HTTP/1\.0 404 No service found\r\nDate: .*\r\nServer: ACE XML Gateway\r\nContent-Type: text/plain\r\nConnection: close\r\nContent-Length: 30\r\n\r\nNo service matched the request| p/Cisco Application Control Engine XML gateway/ d/load balancer/ cpe:/a:cisco:application_control_engine_software/
match http-proxy m|^HTTP/1\.0 403 Request error by HTTP PROXY\r\nContent-Type: text/html\r\nProxy-Connection: close\r\nConnection: close\r\n\r\n<html><head><meta http-equiv=\"Content-Language\" content=\"en-us\"><title>Cisco ([\w._-]+)</title>| p/Cisco $1 http proxy/ d/firewall/
match http-proxy m|^HTTP/1\.0 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: PAW Server ([\w._-]+-android) \(Brazil/2\.0\)\r\n|s p/PAW http proxy/ v/$1/ d/phone/ o/Android/ cpe:/o:google:android/
match http-proxy m|^HTTP/1\.1 200 OK\r\nServer: NETLAB/([\w._-]+)\r\n| p/Cisco NETLab http proxy/ v/$1/
match http-proxy m|^HTTP/1\.1 400 Bad Request\r\nCache-Control: no-cache\r\nPragma: no-cache\r\nContent-Type: text/html; charset=utf-8\r\nProxy-Connection: close\r\nConnection: close\r\n.*<TITLE>P\xc3\xa1gina de Error invalid_request</TITLE>|s p/Blue Coat ProxySG firewall/ i/Spanish/ d/firewall/ cpe:/h:bluecoat:proxysg::::es/
match http-proxy m|^HTTP/1\.1 403 Bad Protocol\r\nContent-Type: text/html; charset=UTF-8\r\nCache-control: no-cache\r\nConnection: close\r\nProxy-Connection: close\r\n.*<title>I2P Warning: Non-HTTP Protocol</title>|s p/I2P http proxy/
match http-proxy m|^HTTP/1\.0 301 Moved Permanently\r\nLocation: http:/index\.html\r\nWWW-Authenticate: Basic realm=\"([\w._-]+)\" \r\nServer: Repro Proxy Repro ([\w._-]+)/000000@SC-VPRABHU\r\n| p/Repro http proxy/ v/$2/ h/$1/
match http-proxy m|^HTTP/1\.1 200 OK\r\nDate: .*\r\nAllow: GET, HEAD\r\nServer: Oracle-Web-Cache/11g \(([\w._-]+)\)\r\n| p/Oracle Web Cache http proxy/ v/$1/ cpe:/a:oracle:application_server_web_cache:$1/
match http-proxy m|^HTTP/1\.1 200 I'm sorry, Dave\. I'm afraid I can't work without a host header\.\r.*\nServer: Haste\r\n|s p/Haste http proxy/ v/2.0/
match http-proxy m|^HTTP/1\.1 400 Bad Request\r\nServer: smartcds/([\w.]+)\r\n| p/SmartCDS http proxy/ v/$1/
match http-proxy m|^HTTP/1\.0 400 Bad request: request-line invalid\r\nContent-type: text/html; charset=\"utf-8\"\r\n\r\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1\.0 Strict//EN\" \"http://www\.w3\.org/TR/xhtml1/DTD/xhtml1-strict\.dtd\">\r\n<html lang=\"en\" xml:lang=\"en\" xmlns=\"http://www\.w3\.org/1999/xhtml\">\r\n  <head>\r\n    <title>Request denied by WatchGuard HTTP Proxy</title>| p/WatchGuard http proxy/
match http-proxy m|^HTTP/1\.0 400 Bad request: request-line invalid\r\nContent-type: text/html; charset="iso-8859-1"\r\n\r\n<html>\r\n<body>\r\n<h3> Request denied by WatchGuard HTTP proxy\. </h3>| p/WatchGuard http proxy/
match http-proxy m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?X-Varnish: \d+\r.*\nVia: 1\.1 varnish\r\n|s p/Varnish http accelerator/ cpe:/a:varnish-cache:varnish/
match http-proxy m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: Varnish\r.*\nX-Varnish: \d+\r\n|s p/Varnish http accelerator/ cpe:/a:varnish-cache:varnish/
match http-proxy m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Via: 1\.1 varnish-v(\d)\r\n|s p/Varnish http accelerator/ v/$1/ cpe:/a:varnish-cache:varnish:$1/
match http-proxy m|^HTTP/1\.0 403 Forbidden\r\nDate: .*\r\nServer: Microdasys-SCIP\r\nContent-Type: text/html\r\nContent-Length: 240\r\nConnection: close\r\n\r\n<HTML>.*<ADDRESS><A HREF=\"http://www\.websense\.com/\">Websense Content Gateway Proxy v([\w._-]+)</A>| p/Websense Content Gateway http proxy/ v/$1/ i/Microdasys SCIP ssl proxy/ cpe:/a:websense:websense_content_content_gateway:$1/
match http-proxy m|^HTTP/1\.0 403 Forbidden\r\nDate: .*\r\nServer: Microdasys-SCIP\r\n| p/Microdasys SCIP ssl proxy/
match http-proxy m|^HTTP/1\.1 400 Bad Request\r\nServer: mitmproxy ([\w._-]+)\r\nContent-type: text/html\r\nContent-Length: \d+\r\n| p/mitmproxy/ v/$1/
match http-proxy m|^HTTP/1\.1 302 Found\r\nDate: .*\r\nServer: xxxx\r\nX-Frame-Options: SAMEORIGIN\r\nStrict-Transport-Security: max-age=31536000\r\nLocation: https:///webconsole/webpages/login\.jsp\r\n|
match http-proxy m|^HTTP/1\.1 302 Found\r\nDate: .*\r\nServer: xxxx\r\n(?:X-Frame-Options: SAMEORIGIN\r\n(?:Strict-Transport-Security: max-age=\d+\r\n)?)?Location: https?://[^\r\n]+?/webpages/(?:myaccount/)?login\.jsp\r\nCache-Control: max-age=2592000\r\nExpires: .*\r\n(?:Vary: Accept-Encoding\r\n)?Content-Length: \d+\r\nConnection: close\r\nContent-Type: text/html; charset=iso-8859-1\r\n\r\n| p/Cyberoam captive portal/
match http-proxy m=^HTTP/1\.1 200 OK\r\nConnection: close\r\nCache-control: no-cache\r\nPragma: no-cache\r\nCache-control: no-store\r\n(?:X-Frame-Options: DENY\r\n)?\r\n<html><head><title>Burp Suite (Professional|Free Edition)</title>= p/Burp Suite $1 http proxy/ cpe:/a:portswigger:burp_suite:::$1/
match http-proxy m%^HTTP/1\.1 200 OK\r\nConnection: close\r\nCache-control: no-cache, no-store\r\nPragma: no-cache\r\nX-Frame-Options: DENY\r\nContent-Type: text/html; charset=utf-8\r\nX-Content-Type-Options: nosniff\r\n\r\n<html><head><title>Burp Suite (Professional|Free Edition)% p/Burp Suite $1 http proxy/ cpe:/a:portswigger:burp_suite:::$1/
match http-proxy m|^HTTP/1\.0 400 Bad request received from client\r\nProxy-Agent: Seeks proxy ([\w._-]+)\r\nContent-Type: text/plain\r\nConnection: close\r\n\r\nBad request\. Seeks proxy was unable to extract the destination\.\r\n| p/Seeks websearch proxy/ v/$1/
match http-proxy m|^HTTP/1\.1 500\r\nAlternate-Protocol: 443:quic\r\nVary: Accept-Encoding\r\nServer: Google Frontend\r\nCache-Control: private\r\nDate: Thu, 06 Feb 2014 14:10:57 GMT\r\nContent-Type: text/html\r\n\r\n\n    <html><head>\n    <meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\">\n    <title>502 Urlfetch Error</title>| p/GoAgent http proxy/ i/Google App Engine/
match http-proxy m|^HTTP/1\.1 200 Document follows\r\nServer: IBM-PROXY-WTE/([\w._-]+)\r\n| p/IBM WebSphere Edge caching proxy/ v/$1/
match http-proxy m|^HTTP/1\.0 407 Proxy Authentication Required\r\nConnection: close\r\nProxy-Connection: close\r\nProxy-Authenticate: NTLM\r\nContent-Length: \d+\r\nContent-type: text/html\r\n\r\n<html><head><title>NTLM Authentication Failed</title></head><body><center><table border=0 cellpadding=5 width=65%><tr><td align=middle><!-- \.{525}--><table border=2 cellpadding=20 bgcolor=#C0C0C0><tr><td>NTLM Authentica| p/Smoothwall proxy/ i/NTLM authentication/
match http-proxy m|^HTTP/1\.1 400 Received invalid request from Client\r\nDate: .*\r\nCache-Control: no-cache\r\nPragma: no-cache\r\nContent-Type: text/html; charset=\"UTF-8\"\r\nContent-Length: \d+\r\nAccept-Ranges: none\r\nProxy-Connection: close\r\n\r\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4\.01 Transitional//EN\" \"http://www\.w3\.org/TR/html4/loose\.dtd\">\n<html>\n  <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n    <title>The requested URL could not be retrieved</title>| p|Sophos/Astaro UTM gateway| d/security-misc/ cpe:/a:astaro:security_gateway_software/
match http-proxy m|^HTTP/1\.0 400 Bad Request\r\nContent-Type: application/json; charset=UTF-8\r\nContent-Length: 84\r\n\r\n{\"fault\":{\"faultstring\":\"\\\"Missing Host header\\\"\",\"detail\":{\"code\":\"MISSING_HOST\"}}}| p/Apigee API proxy/
match http-proxy m|^HTTP/1\.0 400 badrequest\r\nVia: 1\.0 ([\w.-]+) \(McAfee Web Gateway ([\w._-]+)\)\r\nConnection: Close\r\n| p/McAfee Web Gateway/ v/$2/ i/Via $1/ cpe:/a:mcafee:web_gateway:$2/
match http-proxy m|^HTTP/1\.0 400 Bad Request\r\nContent-Length: 113\r\nDate: .*\r\nExpires: 0\r\n\r\n<html>\n<head><title>Error 400: Bad Request</title></head>\n<body>\n<h1>Error 400: Bad Request</h1>\n</body>\n</html>\n| p/Mikrotik HotSpot http proxy/
match http-proxy m|^HTTP/1\.0 400 Host Required In Request\r\nDate: .*\r\nConnection: close\r\nCache-Control: no-store\r\nContent-Type: text/html\r\nContent-Language: en\r\nContent-Length: \d+\r\n\r\n<HTML>\n<HEAD>\n<TITLE>Host Header Required</TITLE>\n</HEAD>\n\n<BODY BGCOLOR=\"white\" FGCOLOR=\"black\">\n<H1>Host Header Required</H1>\n<HR>\n\n<FONT FACE=\"Helvetica,Arial\">| p/Cyberoam UTM http proxy/
match http-proxy m|^HTTP/1\.1 504 Gateway Timeout\r\nContent-Length: 15\r\nContent-Type: text/plain;\r\n\r\nZAP Error: null| p/OWASP Zed Attack Proxy/
match http-proxy m|^HTTP/1\.1 502 Bad Gateway\r\nContent-Length: \d+\r\nContent-Type: text/plain; charset=UTF-8\r\n\r\nZAP Error \[java\.net\.UnknownHostException\]: null| p/OWASP Zed Attack Proxy/
match http-proxy m|^HTTP/1\.0 502\r\nContent-type: text/html\r\nContent-length: \d+\r\nproxy-Connection: close\r\n\r\n<html>\r\n<head>\r\n\t<title>Spybot - Connection refused</title>\r\n| p/Spybot Search & Destroy/ o/Windows/ cpe:/a:safer-networking:spybot_search_and_destroy/ cpe:/o:microsoft:windows/a
match http-proxy m|^HTTP/1\.1 407 Proxy Authentication Required\r\nContent-Length: 36\r\nContent-Type: text/html; charset=UTF-8\r\naw-error-code: 1\r\n\r\nMissing \[Proxy-Authorization\] header| p/AirWatch Mobile Access Gateway/ d/proxy server/ cpe:/a:airwatch:mobile_access_gateway/
match http-proxy m|^HTTP/1\.1 407 Proxy Authentication Required\r\naw-error-code: 1\r\n\r\n$| p/AirWatch Mobile Access Gateway/ d/proxy server/ cpe:/a:airwatch:mobile_access_gateway/
match http-proxy m|^HTTP/1\.0 404 Not Found\r\nServer: Traffic Manager ([\w._-]+)\r\nDate: .*\r\nCache-Control: no-store\r\nPragma: no-cache\r\nContent-type: application/x-ns-proxy-autoconfig\r\n| p/Apache Traffic Server/ v/$1/ d/proxy server/ cpe:/a:apache:traffic_server:$1/
# version 10.2.4
match http-proxy m|^HTTP/1\.1 200 OK\r\nCache-Control: no-cache\r\nConnection: close\r\nPragma: no-cache\r\nContent-Length: \d+\r\n\r\n<html><head><title>Request Rejected</title></head><body>The requested URL was rejected\. Please consult with your administrator\.<br><br>Your support ID is: \d+</body></html>| p/F5 BIG-IP Application Security Module/ d/load balancer/
match http-proxy m|^HTTP/1\.0 \d\d\d .*\r\nMime-Version: 1\.0\r\nDate: .*\r\nVia: 1\.0 ([\w.-]+):\d+ \(Cisco-WSA/([\w._-]+)\)\r\n| p/Cisco Web Security Appliance/ i/Gateway Timeout/ o/AsyncOS $2/ h/$1/ cpe:/o:cisco:asyncos:$2/
match http-proxy m|^HTTP/1\.1 \d\d\d [^\r\n]+\r\nDate: [^\r\n]+\r\nCache-Control: no-cache\r\nPragma: no-cache\r\nContent-Type: text/html; charset="UTF-8"\r\nContent-Length: \d+\r\nAccept-Ranges: none\r\nConnection: close\r\n\r\n.*href="http://passthrough\.fw-notify\.net/|s p/Sophos UTM http proxy/ d/security-misc/ cpe:/a:sophos:unified_threat_management/
match http-proxy m|^HTTP/1\.1 302 Found\r\nDate: .*\r\nServer: xxxx\r\nLocation: http:///httpclient\.html\r\nContent-Length: \d+\r\nConnection: close\r\nContent-Type: text/html; charset=iso-8859-1\r\n\r\n| p/Cyberoam captive portal/
match http-proxy m|^HTTP/1\.1 403 No Protocol\r\nX-Hola-Error: No Protocol\r\nDate: .*\r\nConnection: close\r\n\r\n$| p/Hola VPN http-proxy/ cpe:/a:hola:hola/
match http-proxy m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: Traffic Inspector HTTP/FTP/Proxy server \(([\d.]+)\)\r\n|s p/Traffic Inspector http proxy/ v/$1/ o/Windows/ cpe:/a:smart-soft:traffic_inspector:$1/ cpe:/o:microsoft:windows/a
match http-proxy m|^HTTP/1\.1 404 Not Found\r\nServer: Sucuri/Cloudproxy\r\nDate: .* GMT\r\nContent-Type: text/html\r\nContent-Length: \d+\r\nConnection: close\r\nETag: "[a-f\d-]+"\r\n\r\n<!DOCTYPE html>\n\n<html lang="en">\n\n| p/Sucuri CloudProxy/
match http-proxy m|^HTTP/1\.0 30[12] .*\r\nLocation: https?:///[^\r\n]*\r\nServer: LBaaS\r\n| p/OpenStack Neutron LBaaS load balancer/ cpe:/a:openstack:neutron-lbaas/
match http-proxy m|^HTTP/1\.1 200 OK\r\nDate: .*\r\nContent-Length: \d+\r\nEtag: "[a-f\d]{40}"\r\nContent-Type: text/html; charset=UTF-8\r\nServer: Protegrity Cloud Gateway ([\d.]+)\r\n\r\nProtegrity Cloud Gateway ([\w._-]+)<BR>| p/Protegrity Cloud Gateway/ v/$1/ h/$2/ cpe:/a:protegrity:cloud_gateway:$1/
match http-proxy m|^HTTP/1\.1 502 Bad Gateway\r\n(?:[^\r\n]+\r\n)*?\r\n<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2\.0//EN">\r\n<html>\r\n<head><title>502 Bad Gateway</title></head>\r\n<body bgcolor="white">\r\n<h1>502 Bad Gateway</h1>\r\n<p>The proxy server received an invalid response from an upstream server\. Sorry for the inconvenience\.<br/>\r\nPlease report this message and include the following information to us\.<br/>\r\nThank you very much!</p>\r\n<table>\r\n<tr>\r\n<td>URL:</td>\r\n<td>[^<]*</td>\r\n</tr>\r\n<tr>\r\n<td>Server:</td>\r\n<td>([^<]+)</td>\r\n</tr>\r\n<tr>\r\n<td>Date:</td>\r\n<td>[^<]+</td>\r\n</tr>\r\n</table>\r\n<hr/>Powered by Tengine</body>\r\n</html>\r\n$|s p/Tengine http proxy/ h/$1/ cpe:/a:alibaba:tengine/
match http-proxy m|^HTTP/1\.0 404 Not Found\r\nServer: BigIP\r\nConnection: close\r\n| p/F5 BIG-IP load balancer/ d/load balancer/
match http-proxy m|^HTTP/1\.0 503 Service Unavailable\r\nContent-Type: text/html\r\nContent-Length: 5\d\r\nExpires: now\r\nPragma: no-cache\r\nCache-control: no-cache,no-store\r\n\r\nThe service is not available\. Please try again later\.| p/Pound http reverse proxy/ cpe:/a:apsis:pound/
match http-proxy m|^HTTP/1\.0 302 Found\r\nLocation: .*\r\nContent-Type: text/html\r\nContent-Length: \d+\r\n\r\n<html><head><title>Redirect</title></head><body><h1>Redirect</h1><p>You should go to <a href="[^"]+">here</a></p></body></html>| p/Pound http reverse proxy/ cpe:/a:apsis:pound/
match http-proxy m|^HTTP/1\.0 501 Not Implemented\r\nContent-Type: text/html\r\nContent-Length: 2\d\r\nExpires: now\r\nPragma: no-cache\r\nCache-control: no-cache,no-store\r\n\r\nThis method may not be used\.| p/Pound http reverse proxy/ cpe:/a:apsis:pound/
match http-proxy m|^HTTP/1\.0 403 Forbidden\r\nConnection: close\r\nContent-Length: 51\r\nContent-type: text/html\r\n\r\nAccess denied: authentication configuration missing| p/Smoothwall http proxy/ d/firewall/ cpe:/o:smoothwall:smoothwall/
match http-proxy m|^HTTP/1\.1 407 Proxy Authentication Required\r\nProxy-Authenticate: Basic realm="Hola Unblocker"\r\nDate: .*\r\nConnection: close\r\n\r\n| p/Hola Unblocker http proxy/
match http-proxy m|^HTTP/1\.1 400 Bad Request\r\nContent-Length: 21\r\nContent-Type: text/html; charset=utf-8\r\nVia: 1\.1 ([\w.-]+)\r\nDate: .*\r\n\r\nBad Request to URI: /| p/LittleProxy http proxy/ h/$1/ cpe:/a:adamfisk:littleproxy/

match http-proxy m|^HTTP/1\.0 200 OK\r\n\r\n$| p/sslstrip/

# No info on what this is yet
softmatch http-proxy m|^HTTP/1\.1 400 Bad request\r\nContent-Length: 53\r\nContent-Type: text/html\r\n\r\nCan't do transparent proxying without a Host: header\.|

softmatch http-proxy m|^HTTP/1.[01] 407 | i/proxy authentication required/
softmatch http-proxy m|^HTTP/1.[01] 502 | i/bad gateway/

match hnap m|^HTTP/1\.[01] *200 OK.*\r\n\r\n<\?xml.*<soap:Envelope.*<(?:\w+:)?Type>([^<]+)</(?:\w+:)?Type>.*<(?:\w+:)?VendorName>([^<]+)</(?:\w+:)?VendorName>.*<(?:\w+:)?ModelName>([^<]+)</(?:\w+:)?ModelName>.*<(?:\w+:)?FirmwareVersion>([^<]+)</(?:\w+:)?FirmwareVersion>|s p/$2 HNAP/ v/$4/ i/device: $1; model: $3/

# http://www.everyhue.com/vanilla/discussion/112/other-open-ports-on-the-bridge/p1
match hue-link m|^GET  HTTP1\.0\n\n$| p|Philips Hue link/debug|

# http://foolscap.lothar.com/
match foolscap m|^HTTP/1\.1 500 Internal Server Error: internal server error, see logs\r\n\r\n| p/foolscap RPC/

match icontrolav2 m|^E04\r\n$| p/Pioneer iControlAV2 control port/ d/media device/

# Also "Zimbra Network edition 6.0 IMAP server."
match imap-proxy m|^\* OK IMAP4 ready\r\nGET BAD invalid command\r\n| p/nginx imap proxy/
match imap-proxy m|^\* OK IMAP4rev1 proxy server ready\r\nGET BAD invalid command\r\n| p/Zimbra imapd/

match magent m|^Agent Ready\.\.\.\r\n| p/MicroWorld mwagent.exe/ o/Windows/ cpe:/o:microsoft:windows/a
match magent m|^Agent Ready\.\.\.\r\nGET / HTTP/1\.0\r\n\r\nGET 501 command not implemented ERROR\r\n| p/MicroWorld mwagent.exe/ o/Windows/ cpe:/o:microsoft:windows/a
match magent m|^Agent Ready v([\w._]+)+\.\.\.(?:\[[\w._-]+\])\r\nGET / HTTP/1\.0 501 command not implemented ERROR\r\n 501 command not implemented ERROR\r\n| p/MicroWorld mwagent.exe/ v/$1/ i/eScan antivirus management console/ o/Windows/ cpe:/o:microsoft:windows/a

match mapreduce m|name:\x20mapreduce\r\nversion:\x20(.+)\r\n\r\n| p/Hadoop MapReduce/ v/$1/ cpe:/a:hadoop:mapreduce:$1/
match mas-financial m|^409 Invalid Protocol PVXAS/1\.0\r\n| p/MAS200 Financial System/ o/Windows/ cpe:/o:microsoft:windows/a
match mas-financial m|^The Host cannot run the specified program\.$| p/MAS200 Financial System/ o/Windows/ cpe:/o:microsoft:windows/a

match mep m|^\x10\0\0\0\xa5\xa5\0\0.\0`\x01\0\0\0\0|s p/Citrix NetScaler Metric Exchange Protocol/ d/load balancer/

# Expect MassTransit will also match with some variation.
match mtap m|^WATSON!WATSON!\x13Tx\xa3\xfee\xc0\x9b\0\0\0\x01\0\0\0\0\0\0\0\0\0v\0\0\0\0\x84\x84\0\x02\0\x13\0\xd9\0\0\0\x16\x13Virtual Network ([\d.]+)\0| p/Adobe Virtual Network/ v/$1/ cpe:/a:adobe:virtual_network:$1/

# Another implementation (Bukkit?) with the same matchline doesn't respond to GetRequest.
match minecraft m|^\xff\0\x0e\0P\0r\0o\0t\0o\0c\0o\0l\0 \0e\0r\0r\0o\0r$| p/Spigot Minecraft game server/

# http://www.mobilemouse.com/
match mobilemouse m|^HTTP/1\.0 200 OK \r\nServer: Mobile Air Mouse Server\r\n.*>The Mobile Air Mouse server running on \"([\w._-]+)\"|s p/Mobile Air Mouse server/ h/$1/

# https://en.wikipedia.org/wiki/Modbus
match modbus m|^GET [\0/]\x03H\xd4[\x01-\x03]| p/Modbus TCP/
match modbus m|^GET [\0/]\x03H\xd4[\x0a-\x0b]| p/Modbus TCP/ i/gateway/
match modbus m|^GE\0\0\0\x03H\xd4[\x01-\x03]| p/Modbus TCP/
match modbus m|^GE\0\0\0\x03H\xd4[\x0a-\x0b]| p/Modbus TCP/ i/gateway/

# In 2.5.1, the HTTP server was disabled by default
softmatch mongodb m|^HTTP/1\.0 200 OK\r\nConnection: close\r\nContent-Type: text/plain\r\nContent-Length: 116\r\n\r\nYou are trying to access MongoDB on the native driver port\. For http diagnostic access, add 1000 to the port number\n| p/MongoDB/ v/2.5.0 or earlier/ cpe:/a:mongodb:mongodb/
softmatch mongodb m|^HTTP/1\.0 200 OK\r\nConnection: close\r\nContent-Type: text/plain\r\nContent-Length: 84\r\n\r\nIt looks like you are trying to access MongoDB over HTTP on the native driver port\.\n| p/MongoDB/ v/2.5.1 or later/ cpe:/a:mongodb:mongodb/

match motorola-devmgr m|^GET / HT\xff\xff\xff\xff$| p/Motorola Device Manager/ cpe:/a:motorola:device_manager/

match mrtgext-nlm m|^-1\n-1\n-1\n$| p/Novell NetWare MRTGEXT NLM Statistics/ o/NetWare/ cpe:/o:novell:netware/a

match msn m|^{?Syntax Error : GET / HTTP/1\.0}? error\r\n$| p/amsn/
match msn m|^{?Erreur de syntaxe : GET / HTTP/1\.0}? error\r\n$| p/amsn/ i/French/
match msn m|^{? ?Erro de sintaxe : GET / HTTP/1\.0}? error\r\n$| p/amsn/ i/Portugese/
match msn m|^{?Errore di sintassi : GET / HTTP/1\.0}? error\r\n$| p/amsn/ i/Italian/

# http://www.icbevr.com/ibank/ibank2/
# byte 8 is a counter, so \x18 in byte 7 may also increment?
match ibank2 m|^\x02\0\0\x01E\(\x18.{25}$|

match icap m|^ICAP/1\.0 501 Method not implemented.*\r\nServer: IronNet/([\d.]+)\r\n\r\n|s p/IronNet Compliance Application/ v/$1/
match icap m|^ICAP/1\.0 501 Method not implemented.*\r\nService: ProxyAV AV scanner ([^\r\n]+)\r\n|s p/Blue Coat ProxyAV/ v/$1/
match icap m|^ICAP/1\.0 501 Other\r\nServer: Traffic Spicer ([\d.]+)\r\n| p/Traffic Spicer icapd/ v/$1/
match icap m|^ICAP/1\.0 501 Method not implemented\r\nConnection: close\r\n\r\n$| p/Symantec DLP Web Prevent icapd/
match icap m|^ICAP/1\.0 400 Bad request\r\nServer: C-ICAP/([\w._-]+)\r\nConnection: close\r\n\r\n$| p/C-ICAP/ v/$1/
softmatch icap m|^ICAP/1\.0 \d\d\d |

# gidentd 0.4.5 on Linux 2.4.X
match ident m|^0, 0 : ERROR : INVALID-PORT\r\n$| p/gidentd/
match ident m|^GET / HTTP/1\.0 : USERID : UNIX : ([-.\w]+)\r\n : USERID : UNIX : [-.\w]+\r\n| p/Nullidentd/ i/Claimed user: $1/
match ident m|^GET / HTTP/1\.0 : USERID : UNIX : ([-.\w]+)\r\n$| p/Liedentd/ i/Claimed user: $1/
# pidentd 2.81
match ident m|^0 , 0 : ERROR : X-INVALID-REQUEST\r\n$| p/pidentd/
# pidentd 3.1a25 on Linux 2.4.20 (SuSE 8.2)
match ident m|^GET : ERROR : UNKNOWN-ERROR\r\n$| p/pidentd/
match ident m|^0, 0 : ERROR : INVALID-AUTH-REQ-INFO : CAPABILITY=USER-INTERACTION : AUTH-MECH=KEBEROS_V4\r\n$| p/Stanford PC-leland identd/
# fair-identd-20000201
# pidentd-2.8.5-3
match ident m|^0 , 0 : ERROR : UNKNOWN-ERROR\r\n$| p/pidentd/ i/could be fair-identd/
# identd 1.1 on Linux 2.4.21
# linux-identd 1.2 - http://www.fukt.bth.se/~per/identd
match ident m|^GET / HTTP/1\.0 : ERROR : INVALID-PORT\r\n : ERROR : INVALID-PORT\r\n$| p/Linux-identd/ o/Linux/ cpe:/o:linux:linux_kernel/a
# HP-UX ident
match ident m|^0 , 0 : ERROR : INVALID-PORT\r\n| p/HP-UX identd/ o/HP-UX/ cpe:/o:hp:hp-ux/a
match ident m|^GET / HTTP/1\.0 : USERID : UNIX : [^\r\n]+\r\n| p/KVIrc fake identd/

# uw-imap 2003debian0.0304182231-1
match imap m|^\* OK \[CAPABILITY IMAP4REV1 X-NETSCAPE LOGIN-REFERRALS STARTTLS LOGINDISABLED\] \[[-.\w]+\] IMAP4rev1 200[-.\w]+ at .*\r\nGET BAD Command unrecognized/login please: /\r\n\* BAD Null command\r\n| p/UW imapd/ cpe:/a:uw:imap_toolkit/
match imap m|^\* OK \[[-.+\w]+\] IMAP4rev1 v1(\d[-.\w]+) server ready\r\n| p/UW imapd/ v/1$1/ cpe:/a:uw:imap_toolkit:1$1/
match imap m|^\* OK ([-.+\w]+) IMAP4rev1 v1(\d[-.\w]+) server ready\r\n| p/UW imapd/ v/1$2/ h/$1/ cpe:/a:uw:imap_toolkit:1$2/
# gnu/mailutils imap4d 0.3.2 on Linux
match imap m|^\* OK IMAP4rev1\r\nGET BAD  Invalid command\r\n\* BAD  Null command\r\n$| p/GNU Mailutils imapd/ cpe:/a:gnu:mailutils/
# Cyrus IMAP 2.1.14
match ssl/imap m|^\* BYE Fatal error: tls_start_servertls\(\) failed\r\n$| p/Cyrus imapd/ cpe:/a:cmu:cyrus_imap_server/
match imap m|^\* OK ([-\w_.]+)\r\nGET BAD Error in IMAP command received by server\.\r\n\* BAD Error in IMAP command received by server\.\r\n| p/Dovecot imapd/ h/$1/ cpe:/a:dovecot:dovecot/
match imap m|^\* OK .*\r\nGET BAD Error in IMAP command received by server\.\r\n\* BAD Error in IMAP command received by server\.\r\n| p/Dovecot imapd/ cpe:/a:dovecot:dovecot/
# Too general -- also matches Cyrus imapd 2.3.9.
# match imap m|^\* OK .*\r\nGET BAD Please login first\r\n| p/Dovecot imapd/ i/auth required/ cpe:/a:dovecot:dovecot/
match imap m|^\* OK IMAP4 IMAP4rev1 Server\r\nGET BAD Unrecognised Command\r\n| p/Floosietek FTgate imapd/
match imap m|^\* OK IMAP4r1 server \[([-\w_.]+)\] ready\r\nGET BAD Protocol Error: \"Unidentifiable command specified\"\.\r\n\* BAD Protocol Error: \"Tag not found in command\"\.\r\n| p/Microsoft Exchange imapd/ i/Version masked/ o/Windows/ h/$1/ cpe:/a:microsoft:exchange_server/ cpe:/o:microsoft:windows/a
match imap m|^\* OK IMAP4rev1 server ready at \d\d/\d\d/\d\d \d?\d:\d\d:\d\d\r\nGET BAD UNKNOWN Command\r\n\r\n BAD UNKNOWN Command\r\n| p/MailEnable imapd/ o/Windows/ cpe:/a:mailenable:mailenable/ cpe:/o:microsoft:windows/a
match imap m|^\* OK IMAP4rev1 server ready\r\nGET BAD Unknown command '/'\r\n BAD Unknown command ''\r\n| p/Kerio imapd/
match imap m|^\* OK Gimap ready for requests from [\d\.]+ ([\w\d]+)| p/Google Gmail imapd/ i/$1/
match imap m|^\* OK .*IMAP4rev1 Server Completed\r\nGET BAD Protocol Error: Invalid IMAP command specified\r\n| p/Cisco imapd/
# embyte
match imap m|^\* OK  MailSite IMAP4 Server ([-.\w]+) ready| p/MailSite imapd/ v/$1/
match imap m|^\* OK ([\w._-]+) Welcome \(cimap\)\r\nGET BAD Invalid command \(/\)\r\n\* BAD - command line Insufficient tokens \(\)\r\n| p/SurgeMail imapd/ h/$1/ cpe:/a:netwin:surgemail/
match imap m|^GET NO Error in IMAP command received by server\.\r\n| p/cPanel Courier imapd/
match imap m|^\* OK .*\r\nGET BAD Unknown or NULL command\r\n BAD NULL COMMAND\r\n| p/hMailServer imapd/ o/Windows/ cpe:/o:microsoft:windows/a
match imap m|^\* OK ([\w._-]+)\r\nGET BAD Unknown or NULL command\r\n BAD NULL COMMAND\r\n| p/hMailServer imapd/ o/Windows/ h/$1/ cpe:/o:microsoft:windows/a
match imap m|^\* OK \[CAPABILITY IMAP4rev1 [^]]*\]\r\nGET NO Error in IMAP command received by server\.\r\n\* NO Error in IMAP command received by server\.\r\n| p/Plesk Courier imapd/
match imap m|^\* OK \[CAPABILITY IMAP4rev1 [^]]*\] ([\w.-]+) server ready\r\nGET BAD Please login first\r\n\* BAD Invalid tag\r\n| p/Cyrus imapd/ h/$1/ cpe:/a:cmu:cyrus_imap_server/

match http m|^HTTP/1\.1 200 OK\r\nContent-Type: application/xml; charset=utf-8\r\n\r\n<\?xml version=\"1\.0\" encoding=\"UTF-8\"\?><services xmlns:xsi=\"http://www\.w3\.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://www\.intersystems\.com/services/schema/2009\.2\"/>$| p/InterSystems Cache httpd/
match intermec-bri m|^ERR UNAVAILABLE\r\nOK>\r\nOK>\r\n| p/Intermec Basic Reader Interface/

# Server: CUPS/1.1
match ipp m|^HTTP/1\.0 \d\d\d .*<TITLE>Home - CUPS ([\d.]+)</TITLE>.*SUMMARY=\"Common UNIX Printing System|s p/CUPS/ v/$1/ cpe:/a:apple:cups:$1/
match ipp m|^HTTP/1\.0 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: CUPS/([-\w_.]+)|s p/CUPS/ v/$1/ cpe:/a:apple:cups:$1/
match ipp m|^lpd \[@[-.\w]+\]: Host name for your address \([:.\d]+\) is not known\n$| p/CUPS/ cpe:/a:apple:cups/
match ipp m|^HTTP/1\.0 \d\d\d .*\r\nDate: .*\r\nServer: EPSON-IPP/([\d.]+)\r\nContent-Type: application/ipp\r\nContent-Length: \d+\r\n\r\n| p/Epson ippd/ v/$1/ d/print server/
match ipp m|^HTTP/1\.1 411 Length Required\r\nSERVER: EpsonNet IPP-SERVER/([\w._-]+)\r\nCONTENT-LENGTH: 0\r\n\r\n| p/Epson ippd/ v/$1/ i/AL-C2800 printer/ d/printer/
match ipp m|^HTTP/1\.0 404 Not Found\r\nCache-Control: no-cache\r\nDate: .*\r\nPragma: no-cache\r\nContent-Type: text/html\r\nContent-Length: 91\r\nServer: Web-Server/([\d.]+)\r\n\r\n<HTML><HEAD><TITLE>404 Not Found</TITLE></HEAD>\n<BODY><H1>404 Not Found</H1></BODY></HTML>\0| p/Web-Server httpd/ v/$1/ i/NRG copier or Ricoh Aficio printer http config/ d/printer/
match ipp m|^HTTP/1\.1 404 Not Found\r\nConnection: close\r\nContent-Type: text/html\r\nContent-Length: 89\r\nServer: Web-Server/([\d.]+)\r\n\r\n<html><head><title>404 Not Found</title></head><body><h1>404 Not Found</h1></body></html>$| p/Web-Server httpd/ v/$1/ i/NRG copier or Ricoh Aficio printer http config/ d/printer/
match ipp m|^HTTP/1\.1 \d\d\d .*\r\nDate: .*\r\nServer: CANON HTTP Server Ver(\d[-.\w ]+)\r\n| p/Canon printer http config/ v/$1/
match ipp m|^HTTP/1\.1 \d\d\d .*\r\nDate: .*\r\nServer: Canon Http Server (\d[-.\w ]+)\r\n| p/Canon printer http config/ v/$1/
match ipp m|^HTTP/1\.0 200 OK\r\nContent-Type: text/html\r\n\r\n<HTML><HEAD><META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html; charset=iso-8859-1\">\r\n<TITLE>IBM Infoprint Color (\d+)</TITLE>| p/IBM Infoprint Color $1 ippd/ d/printer/ cpe:/h:ibm:infoprint_color_$1/
match ipp m|^HTTP/1\.1 301 Moved Permanently\r\nServer: Virata-EmWeb/R([\w_]+)\r\nLocation: https://[\d.]+/\r\nContent-Type: text/html\r\nContent-Length: 90\r\n\r\nMoved\r\n| p/Virata-EmWeb/ v/$SUBST(1,"_",".")/ i/HP Laserjet 4200TN http config/ d/printer/ cpe:/a:virata:emweb:$SUBST(1,"_",".")/a cpe:/h:hp:laserjet_4200tn/a
match ipp m|^HTTP/1\.0 \d\d\d .*\r\nContent-Type: text/html\r\n\r\n<HTML><HEAD><META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html; charset=iso-8859-1\">\r\n<TITLE>Dell Laser Printer 1700n</TITLE>| p/Dell Laser Printer 1700n ippd/ d/printer/ cpe:/h:dell:1700n/
match ipp m|^HTTP/1\.0 \d\d\d .*<TITLE>Common UNIX Printing System</TITLE>.*HREF=\"http://www\.easysw\.com\" ALT=\"Easy Software Products Home Page\">\n|s p/Easy Software Products CUPS/
match ipp m|^<HEAD><TITLE>Not Found</TITLE></HEAD><BODY><H1><B>Not Found</B></H1><P>The requested URL \"\"was not found on this server\.</BODY>\r\n| p/Epson 980N Printer/ d/printer/ cpe:/h:epson:980n/a
match ipp m|^HTTP/1\.0 400 Bad Request\r\nConnection: close\r\nContent-Type: text/html\r\n(?:; charset=utf-8)?\r\nContent-Length: \d+\r\nCache-Control: (?:max-age=0, no-store, )?no-cache\r\n\r\n<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3\.2//EN">\n<HTML>\n<HEAD>\n<TITLE>Invalid Request</TITLE>\n</HEAD>\n\n<BODY BGCOLOR="#FFFFFF" TEXT="#000000">\n<CENTER>\n<FONT SIZE="\+2" COLOR="#FFFFFF" ALIGN="Center">\n</FONT>\n<B>Invalid Request\. Some Error</B>\n</BODY>\n\n</HTML>\n\n| p/Xerox or Samsung ipp/ d/printer/
match ipp m|^HTTP/1\.0 404 Not found\r\n\r\n404 Not found$| p/Xerox WorkCentre IPP/ d/printer/
match ipp m|^HTTP/1\.0 404 Not Found\r\nDate: .*\r\nContent-Language: C\r\nUpgrade: TLS/1\.0,HTTP/1\.1\r\nConnection: close\r\nContent-Type: text/html\r\nContent-Length: 138\r\n\r\n<HTML><HEAD><TITLE>404 Not Found</TITLE></HEAD><BODY><H1>Not Found</H1>The requested resource was not found on this server\.</BODY></HTML>\n| p/Thecus N5200 IPP/ d/storage-misc/ cpe:/h:thecus:n5200_nas_server/
match ipp m|^HTTP/1\.1 200 OK\r\nPragma: no-cache\r\nConnection: close\r\nContent-Type: text/html\r\n\r\n<HTML><HEAD><META HTTP-EQUIV=\"REFRESH\" CONTENT=\"0; URL=http://[\d.]+/\"></HEAD><BODY><P>For more printserver info please open the <A HREF=\"http://[\d.]+/\">[\d.]+</A> home page</BODY></HTML>$| p/Kyocera Mita KM-1530 IPP/ d/printer/ cpe:/h:kyocera:mita_km-1530/
match ipp m|^HTTP/1\.0 405 Method Not Allowed\r\nContent-Type: text/html\r\nCache-Control: public,max-age=86400\r\nPragma: cache\r\nExpires: .*\r\nDate: .*\r\nLast-Modified: .*\r\nAccept-Ranges: bytes\r\nConnection: close\r\n\r\n| p/Netia Spot ipp/ d/broadband router/
match ipp m|^HTTP/1\.0 200 OK\r\nContent-Type: text/plain; charset=UTF-8\r\n\r\nreturn_code=FCS9015\?error_text=This server does not support this API\.| p/PrinterOn Print Delivery Gateway ipp/ cpe:/a:printeron:print_delivery_gateway/
# Fuji Xerox DocuCentre-V C4475 T2
match ipp m|^HTTP/1\.0 301 Moved Permanently\r\nDate: .*\r\nPragma: no-cache\r\nLocation: http:///\r\nContent-Length: 109\r\nContent-Type: text/html\r\n\r\n<html><head><title>301 Moved Permanently</title></head>\t\t<body><h1>301 Moved Permanently</h1></body></html>\r\n| p/Fuji Xerox DocuCentre-V ipp/ d/printer/
match ipp m|^HTTP/1\.1 403 Forbidden\r\nConnection: close\r\nContent-Type: text/html\r\nContent-Length: 89\r\nServer: Web-Server/3\.0\r\n\r\n<html><head><title>403 Forbidden</title></head><body><h1>403 Forbidden</h1></body></html>| p/Ricoh Aficio printer ipp/ d/printer/
match ipp m|^HTTP/1\.1 400 Bad Request\r\nContent-Length: 29\r\nContent-Type: text/html\r\nConnection: close\r\n\r\n 400 Bad Request from Browser| p/Konica Minolta BizHub C224e printer ipp/ d/printer/ cpe:/h:konicaminolta:bizhub_c224e/a

match irc m|^:Default-Chat-Community 421 \* GET :Unknown command\r\n| p/Microsoft Exchange 2000 Server Chat Service/ o/Windows/ cpe:/a:microsoft:exchange_server:2000/ cpe:/o:microsoft:windows/a
match irc m|^:([-\w_.]+) 451  :You have not registered your connection\r\n$| p/Wircsrv/ o/Windows/ h/$1/ cpe:/o:microsoft:windows/a
match irc m|^ERROR :Closing Link: \[[^]]*\] \(HTTP command from IRC connection \(ATTACK\?\)\)\r\n| p/UnrealIRCd/ cpe:/a:unrealircd:unrealircd/
match irc m|^HTTP/1\.0 400 Wrong Port\r\nServer: ConferenceRoom/IRC (\d[\w._-]+)\r\n| p/WebMaster ConferenceRoom ircd/ v/$1/ cpe:/a:webmaster:conferenceroom:$1/

match ingrian-xml m|^<GenericError><Success>false</Success><FatalError>101</FatalError><ErrorString>Could not parse client request</ErrorString></GenericError>| p/Ingrian NAE XML daemon/ d/security-misc/

# Jabber 1.4.2
match jabber m|^<stream:stream xmlns:stream='http://etherx\.jabber\.org/streams' version='([\d.]+)'>| p/Jabber instant messaging server/ i/Protocol $1/ cpe:/a:jabberd:jabberd/
match jabber m|^<stream:stream version='([\d.]+)' from='[\w._-]+' xmlns:stream='http://etherx\.jabber\.org/streams'>| p/Jabber instant messaging server/ i/Protocol $1/ cpe:/a:jabberd:jabberd/

match jabber m|^<\?xml version='1\.0'\?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx\.jabber\.org/streams' id='none' from='([\w._-]+)' version='([\d.]+)'>| p/ejabberd/ i/Protocol $2/ h/$1/ cpe:/a:process-one:ejabberd/
match jabber m|^<\?xml version='1\.0'\?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx\.jabber\.org/streams' id='\d+' from='([\w._-]+)' version='([\d.]+)'>| p/ejabberd/ i/Protocol $2/ h/$1/ cpe:/a:process-one:ejabberd/
match jabber m|^<\?xml version='1\.0'\?><stream:stream xmlns:stream='http://etherx\.jabber\.org/streams' xmlns='jabber:server' xmlns:db='jabber:server:dialback'| p/ejabberd/ cpe:/a:process-one:ejabberd/
# ejabberd 16.12
match jabber m|^<\?xml version='1\.0'\?><stream:stream id='\d+' version='1\.0' xmlns:db='jabber:server:dialback' xmlns:stream='http://etherx\.jabber\.org/streams' xmlns='jabber:server'>| p/ejabberd/ cpe:/a:process-one:ejabberd/
match jabber m|^<\?xml version='1\.0'\?><stream:stream xmlns:stream='http://etherx\.jabber\.org/streams' xmlns='jabber:component:accept' id='none' from='([-\w_.]+)'><stream:error><xml-not-well-formed xmlns='urn:ietf:params:xml:ns:xmpp-streams'/></stream:error></stream:stream>| p/jit-transport jabber-ICQ transport/ h/$1/
match jabber m|^<stream:error>Invalid XML</stream:error>$| p/Jabber instant messaging server/ cpe:/a:jabberd:jabberd/
match jabber m|^<stream:error>Invalid XML</stream:error></stream:stream>$| p/Jabber instant messaging server/ cpe:/a:jabberd:jabberd/
match jabber m|^<stream:error><invalid-xml xmlns='urn:ietf:params:xml:ns:xmpp-streams'/><text xmlns='urn:ietf:params:xml:ns:xmpp-streams' xml:lang='en'>Invalid XML</text></stream:error>| p/jabberd instant messaging server/ cpe:/a:jabberd:jabberd/
match jabber m|^<\?xml version=\"1\.0\"\?><stream:stream id=\"none\" from=\"([\w._-]+)\" xmlns=\"jabber:client\" xmlns:stream=\"http://etherx\.jabber\.org/streams\" version=\"1\.0\"><stream:error><xml-not-well-formed xmlns=\"urn:ietf:params:xml:ns:xmpp-streams\"/></stream:error></stream:stream>$| p/Facebook Chat XMPP/ h/$1/
match jabber m|^<\?xml version='1\.0'\?><stream:stream id='' xmlns:stream='http://etherx\.jabber\.org/streams' version='1\.0' xmlns='jabber:server'><stream:error><xml-not-well-formed xmlns='urn:ietf:params:xml:ns:xmpp-streams'/></stream:error></stream:stream>$| p/Prosody Jabber server/ v/0.7.0 or older/ cpe:/a:prosody:prosody/
match jabber m|^<\?xml version='1\.0'\?><stream:stream id='' xmlns:stream='http://etherx\.jabber\.org/streams' version='1\.0' xmlns='jabber:client'><stream:error><xml-not-well-formed xmlns='urn:ietf:params:xml:ns:xmpp-streams'/></stream:error></stream:stream>$| p/Prosody Jabber client/ v/0.7.0 or older/ cpe:/a:prosody:prosody/
# 0.8.0 changed "xml-not-well-formed" to "not-well-formed"
match jabber m|^<\?xml version='1\.0'\?><stream:stream id='' xmlns:stream='http://etherx\.jabber\.org/streams' version='1\.0' xmlns='jabber:server'><stream:error><not-well-formed xmlns='urn:ietf:params:xml:ns:xmpp-streams'/></stream:error></stream:stream>$| p/Prosody Jabber server/ v/0.8.0 or newer/ cpe:/a:prosody:prosody/
match jabber m|^<\?xml version='1\.0'\?><stream:stream id='' xmlns:stream='http://etherx\.jabber\.org/streams' version='1\.0' xmlns='jabber:client'><stream:error><not-well-formed xmlns='urn:ietf:params:xml:ns:xmpp-streams'/></stream:error></stream:stream>$| p/Prosody Jabber client/ v/0.8.0 or newer/ cpe:/a:prosody:prosody/
match jabber m|^<\?xml version='1\.0'\?><stream:stream xmlns:stream='http://etherx\.jabber\.org/streams' xmlns='jabber:client' version='1\.0' id=''><stream:error><not-well-formed xmlns='urn:ietf:params:xml:ns:xmpp-streams'/></stream:error></stream:stream>$| p/Prosody Jabber client/ v/0.8.0 or newer/ cpe:/a:prosody:prosody/
match jabber m|^<\?xml version='1\.0'\?><stream:stream xmlns:stream='http://etherx\.jabber\.org/streams' xmlns='jabber:server' version='1\.0' id=''><stream:error><not-well-formed xmlns='urn:ietf:params:xml:ns:xmpp-streams'/></stream:error></stream:stream>$| p/Prosody Jabber server/ v/0.8.0 or newer/ cpe:/a:prosody:prosody/
match jabber m|^<\?xml version='1\.0'\?><stream:stream xmlns:stream='http://etherx\.jabber\.org/streams' xml:lang='en' xmlns:db='jabber:server:dialback' xmlns='jabber:server'><stream:error><not-well-formed xmlns='urn:ietf:params:xml:ns:xmpp-streams'/></stream:error></stream:stream>| p/Prosody Jabber server/ cpe:/a:prosody:prosody/
# 0.10
match jabber m|^<\?xml version='1\.0'\?><stream:stream xmlns:db='jabber:server:dialback' xmlns:stream='http://etherx\.jabber\.org/streams' xml:lang='en' id='' xmlns='jabber:server'><stream:error><not-well-formed xmlns='urn:ietf:params:xml:ns:xmpp-streams'/></stream:error></stream:stream>| p/Prosody Jabber server/ cpe:/a:prosody:prosody/
# empty id removed
match jabber m|^<\?xml version='1\.0'\?><stream:stream xmlns:stream='http://etherx\.jabber\.org/streams' xml:lang='en' xmlns='jabber:client'><stream:error><not-well-formed xmlns='urn:ietf:params:xml:ns:xmpp-streams'/></stream:error></stream:stream>| p/Prosody Jabber client/ cpe:/a:prosody:prosody/
match jabber m|^<\?xml version='1\.0'\?><stream:stream xmlns:stream='http://etherx\.jabber\.org/streams' xml:lang='en' xmlns='jabber:server'><stream:error><not-well-formed xmlns='urn:ietf:params:xml:ns:xmpp-streams'/></stream:error></stream:stream>| p/Prosody Jabber server/ cpe:/a:prosody:prosody/
# empty from and to attributes added
# 0.9.8
match jabber m|^<\?xml version='1\.0'\?><stream:stream xmlns:stream='http://etherx\.jabber\.org/streams' xml:lang='en' from='' xmlns:db='jabber:server:dialback' to='' xmlns='jabber:server'><stream:error><not-well-formed xmlns='urn:ietf:params:xml:ns:xmpp-streams'/></stream:error></stream:stream>| p/Prosody Jabber server/ i/dialback/ cpe:/a:prosody:prosody/
match jabber m|^<\?xml version='1\.0'\?><stream:stream xmlns:db='jabber:server:dialback' xmlns:stream='http://etherx\.jabber\.org/streams' xml:lang='en' from='' to='' xmlns='jabber:server'><stream:error><not-well-formed xmlns='urn:ietf:params:xml:ns:xmpp-streams'/></stream:error></stream:stream>| p/Prosody Jabber server/ i/dialback/ cpe:/a:prosody:prosody/

match jabber m|^<\?xml version='1\.0'\?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx\.jabber\.org/streams' id='error-id'><stream:error><invalid-xml xmlns='urn:ietf:params:xml:ns:xmpp-streams'/></stream:error></stream:stream>| p/Isode M-Link Jabber client/ cpe:/a:isode:m-link/
match jabber m|^<\?xml version='1\.0'\?><stream:stream xmlns='jabber:server' xmlns:db='jabber:server:dialback' xmlns:stream='http://etherx\.jabber\.org/streams' id='error-id'><stream:error><invalid-xml xmlns='urn:ietf:params:xml:ns:xmpp-streams'/></stream:error></stream:stream>| p/Isode M-Link Jabber server/ cpe:/a:isode:m-link/

match jabber m|^<\?xml version='1\.0' encoding='UTF-8'\?>\n<stream:stream xmlns='jabber:client' xmlns:stream='http://etherx\.jabber\.org/streams' from=\"\" version=\"1\.0\">\n<stream:features/>$| p/Empathy Jabber client/
match jabber m|^<\?xml version='1\.0'\?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx\.jabber\.org/streams' id='[0-9A-F]{16}' from='[^']*' version='1\.0'><stream:error><xml-not-well-formed xmlns='urn:ietf:params:xml:ns:xmpp-streams'/></stream:error></stream:stream>| p/MongooseIM/ cpe:/a:erlang-solutions:mongooseim/

match james-admin m|^JAMES Remote Administration Tool ([\d.]+)\nPlease enter your login and password\nLogin id:\n| p/JAMES Remote Admin/ v/$1/

match jicp m|^d\x08\x1c\0\0\0Uncorrect JICP data type: 71$| p/Jade Inter Container Protocol/

match olsrd-jsoninfo m|^{\n\"links\": \[[^]]*\]\n,\n\t\"neighbors\": \[[^]]*\]\n,\n\t| p/olsrd jsoninfo plugin/

match jxta m|^JXTAHELLO tcp://[\d.]+:\d+ tcp://[\d.]+:\d+ | p/JXTA P2P Collaboration daemon/

match kazaa-http m|^HTTP/1\.1 \d\d\d .*\r\nServer: giFT-FastTrack ([\d.]+)\r\nX-Kazaa-Username: giFTed\r\nX-Kazaa-Network: ([-.\w]+)\r\n| p/giFTed FastTrack P2P client/ v/$1/ i/network: $2/
match kazaa-http m|^HTTP/1\.1 \d\d\d .*\r\nServer: giFT-FastTrack ([\d.]+)\r\nX-Kazaa-Username: www\.k-lite\.com\.br\r\nX-Kazaa-Network: ([-.\w]+)\r\n| p/K-Lite FastTrack P2P client/ v/$1/ i/network: $2/

match kazaa-http m|^HTTP/1\.0 404 Not Found\r?\nX-Kazaa-Username: (\S+)\r\nX-Kazaa-Network: ([-.\w]+)\r\n| p/KaZaA P2P client/ i/username: $1; network: $2/
match kazaa-http m|^HTTP/1\.[01] 404 Not Found\r?\nServer: giFT-FastTrack ([\d.]+)\r\nX-Kazaa-Username: (\S+)\r\nX-Kazaa-Network: ([-.\w]+)\r\n| p/KaZaA P2P client/ v/$1/ i/username: $2; network: $3/

match kazaa-peerpoint m|^HTTP/1\.0 404 Not Found\n\r\n$| p/KaZaA P2P client Peer Point Manager/

match kdb m|^HTTP/1\.1 200 OK\r\nContent-Type: text/html\r\nConnection: close\r\nContent-Length: 107\r\n\r\n<html><head><title></title><frameset cols=",\*"><frame src=\?><frame name=v src="\?"></frameset></head></html>| p/kdb+ http interface/ cpe:/a:kx_systems:kdb%2b/

match kerberos-sec m|^\0\0\0.~\x81.0\x81..\x03\x02\x01\x05.\x03\x02\x01\x1e.\x11\x18\x0f|s p/Mac OS X kerberos-sec/ o/Mac OS X/ cpe:/a:apple:kerberos:5/ cpe:/o:apple:mac_os_x/a

match lcdproc m|^huh\? Invalid command \"GET\"\n| p/LCDProc screen interface daemon/

match listserv m|^The file name you specified is invalid\. LISTSERV files have names like\r\n\"BOARD\.MINUTES\" or \"XYZ-L LOG9303\" \(without the quotes\)\.\r\n| p/LISTSERV Administration service/ cpe:/a:lsoft:listserv/

match loadrunner-vts m|^\x02\0\0\0\x84\0\$\0\x03\0\x08 \0\0\x06\0\x05\0\x15Wrong version: 71\x02\0\0\0\x81\0\x07| p/HP LoadRunner Virtual Table Server/ cpe:/a:hp:loadrunner/

softmatch lscp m|^ERR:0:syntax error, unexpected '/' \(line:1,column:5\)\.|

match megafillers m|^400 Unknown command\.\.\. Are you surprised\?\r\n$| p/MegaFillers game server/

match mogilefs m|^ERR unknown_command Unknown\+server\+command\r\n| p/MogileFS distributed filesystem/

match moneyworks m|^This is MoneyWorks; Server is on Windows\n$| p/MoneyWorks accounting software/ o/Windows/ cpe:/o:microsoft:windows/a

match mosmig m|^GET \0\0\0\0TP/1\.0\r\n$| p/OpenMosix Process Migration Service/ o/Linux/ cpe:/o:linux:linux_kernel/a

# MLDonkey 2.5
match napster m|^1INVALID REQUEST$| p/MLDonkey multi-network P2P client/
match napster m|^1$| p/WinMX or Lopster Napster P2P client/
match bittorrent-tracker m|^HTTP/1\.1 404 Not Found\r\nServer: MLdonkey\r\nConnection: close\r\nContent-Type: application/x-bittorrent\r\nContentlength: 0\r\n\r\n| p/MLDonkey multi-network P2P client/
match bittorrent-tracker m|^HTTP/1\.1 200 OK\r\nServer: MLdonkey/([\w._-]+)\r\nConnection: close\r\nContent-length: 53\r\n\r\nd14:failure reason31:Failure\(\"Incorrect filename 1\"\)e| p/MLDonkey multi-network P2P client/ v/$1/
match bittorrent-tracker m|^HTTP/1\.1 200 OK\r\nServer: MLdonkey\r\n| p/MLDonkey P2P client http config/
# Don't know the server name for this one. It's the same as the "your file may
# exist elsewhere in the universe\nbut alas, not here" under FourOhFourRequest.
match bittorrent-tracker m|^HTTP/1\.0 200 OK\r\n.*<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1\.1//EN\" \"http://www\.w3\.org/TR/xhtml11/DTD/xhtml11\.dtd\">\n<html><head><title>BitTorrent download info</title>\n<link rel=\"shortcut icon\" href=\"/favicon\.ico\">\n.*<strong>tracker version:</strong> ([\w._-]+)|s p/BitTornado tracker httpd/ v/$1/

match ndb_mgmd m|^result: Unknown command, 'GET / HTTP/1\.0'\n\n| p/MySQL cluster management server/ v/5.1/ cpe:/a:mysql:mysql:5.1/

# Original path was "/opt/openerp/server/bin/service/netrpc_server\.py\"
match net-rpc m|^     4041\(lp1\ncexceptions\nValueError\np2\n\(S\"invalid literal for int\(\) with base 10: 'GET / HT'\"\np3\ntp4\nRp5\naS'Traceback \(most recent call last\):\\n  File \"([\w._/-]+)/netrpc_server\.py\", line 69, in run\\n| p/OpenERP NET-RPC/ i/path: $1/ o/Unix/
match net-rpc m|^     5051\(lp1\ncexceptions\nException\np2\n\(Vinvalid literal for int\(\) with base 10: 'GET / HT'\np3\ntp4\nRp5\naS'Traceback \(most recent call last\):\\n  File \"([\w._/-]+)/netrpc_server\.py\", line 63, in run\\n| p/OpenERP NET-RPC/ i/path: $1/ o/Unix/

match netbios-ssn m|^\x83\0\0\x01\x82\x7c\x8f$|
match netwareip m|^\xfb\xff\xfe\xff\xfb\xff\xfe\xff\xfb\xff\xfe\xff$| p|Novell NetWare/IP| o/NetWare/ cpe:/o:novell:netware/a

match nimbud-netmon m|^nimbus/([\d.]+) \d+ \d+\r\nmtype| p/Nimsoft Nimbus network monitor/ v/$1/

match ntrip m|^SOURCETABLE 200 OK\r\nServer: NTRIP Caster ([\w._-]+)/([\w._-]+)\r\nContent-Type: text/plain\r\n| p/Ntrip Caster/ v/$1/ i/protocol $2/

match giop m|^GIOP\x01\0\x01\x06\0\0\0\0$| p/omniORB omniNames/ i/Corba naming service/

match obiee m|^\x0c\x01\0\0\x03\0\0\0\x84\0\0\0\[\0n\0Q\0S\0E\0r\0r\0o\0r\0:\0 \x001\x002\x000\x003\x003\0\]\0 \0A\0 \0c\0l\0i\0e\0n\0t\0 \0t\0r\0i\0e\0d\0 \0t\0o\0 \0c\0o\0n\0n\0e\0c\0t\0 \0t\0o\0 \0a\0 \0s\0e\0r\0v\0e\0r\0 \0t\0h\0a\0t\0 \0i\0s\0 \0n\0o\0t\0 \0o\0f\0 \0t\0h\0e\0 \0r\0i\0g\0h\0t\0 \0t\0y\0p\0e\0\.\0\n\0\[\0n\0Q\0S\0E\0r\0r\0o\0r\0:\0 \x004\x003\x001\x001\x003\0\]\0 \0M\0e\0s\0s\0a\0g\0e\0 \0r\0e\0t\0u\0r\0n\0e\0d\0 \0f\0r\0o\0m\0 \0O\0B\0I\0S\0\.\0| p/Oracle BI Server/

match oem-agent m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Connection: Close\r\nX-ORCL-EMSV: ([\d.]+)\r\n|s p/Oracle Enterprise Manager Agent httpd/ v/$1/ cpe:/a:oracle:enterprise_manager:$1/

match openerp m|^[ \d]{8}1\(lp1\ncexceptions\nException\np2\n\(Vinvalid literal for int\(\) with base 10: 'GET / HT'\np3\ntp4\nRp5\naS'Traceback \(most recent call last\):\\n  File \"(.*?)/openerp/service/netrpc_server\.py\", line 63, in run\\n    msg = ts\.myreceive\(\)\\n  File \".*?/openerp/tiny_socket\.py\", line 76, in myreceive\\n    size = int\(buf\)\\nValueError: invalid literal for int\(\) with base 10: \\'GET / HT\\'\\n'\np6\na\.| p/OpenERP/ v/6.1/ i/install path: $1/
match opinionsquare m|^HTTP/1\.0 505 HTTP Version not supported\r\n\r\n$| p/OpinionSquare application/

# http://documents.opto22.com/1465_OptoMMP_Protocol_Guide.pdf
match optommp m|^GET / P\0\0\0\0\0| p/OptoMMP/

# Oracle MTS Recovery Service 9.2.0.1 on Windows 2000 Professional
match oracle-mts m|^HTTP/1\.0 200 OK\r\nContent-length: 7\r\n\r\nunknown$| p/Oracle MTS Recovery Service/
# Windows 2003
match oracle-mts m|^HTTP/1\.0 400 Bad Request\r\nContent-length: 15\r\nContent-type: text/html\r\n\r\n400 Bad Request$| p/Oracle MTS Recovery Service/

match oracle-nm m|^-ERR Invalid command name 'GET'\r\n-ERR Invalid command name ''\r\n| p/Oracle WebLogic Server Node Manager/ cpe:/a:oracle:weblogic_server/

match oracle-vs m|^\(err \(type xen\.xend\.XendError\.XendError\) \(value 'Invalid operation: GET'\)\)\n$| p/Oracle Virtual Service Agent/ i/Xen/
match oracle-vs m|^\(err \(type \"<class 'xen\.xend\.XendError\.XendError'>\"\) \(value 'Invalid operation: GET'\)\)\n$| p/Oracle Virtual Service Agent/ i/Xen/

match ormi m|^\xe3\r\n\r\n\0\x01\0.\0vInvalid protocol verification, illegal ORMI request or request performed with an incompatible version of this protocol|s p/Oracle Remote Method Invocation/
match ormi m|^\xe3\r\n\r\n\0\x01\0\x03\x0b\0vInvalid protocol verification, illegal ORMI request or request performed with an incompatible version of this protocol| p/Oracle Remote Method Invocation/

match pcs-partner m|^notAuthenticated\n| p/SpliceCom PCS Partner Protocol/ d/VoIP phone/

match ssl/pop3 m|^-ERR \[SYS/PERM\] Fatal error: tls_start_servertls\(\) failed\r\n$| p/Cyrus pop3sd/ cpe:/a:cmu:cyrus_imap_server/
match ssl/pop3 m|^-ERR Fatal error: pop3s: required OpenSSL options not present\r\n| p/Cyrus pop3sd/ cpe:/a:cmu:cyrus_imap_server/
# Postgresql-server-7.3.2-3
match postgresql m|^EFATAL:  invalid length of startup packet\n\0$| p/PostgreSQL DB/ cpe:/a:postgresql:postgresql/
# Doesn't look like this line number has changed, but the file name may have.
match pgpool m|^E\0\0\0.S[^\0]+\0CXX000\0M[^\0]*\0D[^\0]*\0Fpcp_worker\.c\0L176\0\0| p/pgpool-II/ cpe:/a:pgpool:pgpool-ii/
match postgrey m|^action=dunno\n\n$| p/Postfix Greylist Daemon/
match powerchute m|^server=&type=0&id=&count=1&oid=[\d.]+&value=&error=4\n| p/APC Powerchute/ d/power-device/

match niprint m|^NIPrint received command: ET / HTTP/1\.0\r\.\r\nThis command is not in LPD specification, ignored\r\nNIPrint received command: \.\r\nThis command is not in LPD specification, ignored\r\n| p/Network Instruments NIPrint network analyzer/

match ratnj m|^0\0$| p/RatNJ C2 server/ i/malware/
match raop m|^RTSP/1\.0 401 Unauthorized\r\nServer: AirTunes/([\w._-]+)\r\nWWW-Authenticate: Digest realm=\"raop\" nonce=\"\w+\"\r\n\r\n$| p/Apple AirTunes RAOP/ v/$1/ i/Apple AirPort Express/ d/WAP/ cpe:/h:apple:airport_express/

match redis m|^-ERR wrong number of arguments for 'get' command\r\n$| p/Redis key-value store/

# Later EMC Retrospect, then Roxio Retrospect, then Retrospect, Inc. Retrospect
match retrospect m|^\0\xca\0\0\0\0\0\x04\0\0\0\0$| p/Dantz Retrospect/ v/6.0/ cpe:/a:dantz:retrospect:6.0/

# http://www.librelp.com/relp.html
match relp m|^0 serverclose 0\n$| p/Reliable Event Logging Protocol/

match rfidquery m|^Error 0 parse error\n\nError 0 parse error\n\nError 0 parse error\n\nError 0 parse error\n\nError 0 parse error\n\nError 0 parse error\n\nError 0 parse error\n\n$| p/Mercury3 RFID Query protocol/

softmatch rotctld m|^RPRT -1\n| p/Hamlib rotctld/

match rtsp m|^RTSP/1.0 400 Bad Request\r\nServer: DSS/([-.\w]+) \[(v\d+)]-(\w+)\r\n| p/DarwinStreamingServer/ v/$1/ i/$2 on $3/
match rtsp m|^RTSP/1\.0 400 Bad Request\r\nServer: QTSS/([\d.]+ \[v\d+\]-Win32)\r\nCseq: \r\n| p/Apple QuickTime Streaming Server/ v/$1/ o/Windows/ cpe:/a:apple:quicktime_streaming_server:$1/ cpe:/o:microsoft:windows/a
match rtsp m|^RTSP/1\.0 400 Bad Request\r\nServer: QTSS/([\d.]+ \[\d+\]-Linux)\r\nCseq: \r\n| p/Apple QuickTime Streaming Server/ v/$1/ o/Linux/ cpe:/a:apple:quicktime_streaming_server:$1/ cpe:/o:linux:linux_kernel/a
match rtsp m|^RTSP/1\.0 400 Bad Request\r\nServer: QTSS/([\d.]+) \(Build/([\d.]+); Platform/MacOSX; ([^)]*); \)\r\n| p/Apple QuickTime Streaming Server/ v/$1 build $2/ i/$3/ o/Mac OS X/ cpe:/a:apple:quicktime_streaming_server:$1/ cpe:/o:apple:mac_os_x/a
match rtsp m|^RTSP/1\.0 400 Bad Request\r\nServer: QTSS/([\d.]+) \(Build/([\d.]+); Platform/MacOSX\)\r\n| p/Apple QuickTime Streaming Server/ v/$1 build $2/ o/Mac OS X/ cpe:/a:apple:quicktime_streaming_server:$1/ cpe:/o:apple:mac_os_x/a
match rtsp m|^RTSP/1\.0 400 Bad Request\r\nServer: QTSS/v([\d.]+)\r\nCseq: \r\nConnection: Close\r\n\r\n| p/Apple QuickTime Streaming Server/ v/$1/ cpe:/a:apple:quicktime_streaming_server:$1/

match rtsp m|^RTSP/1\.0 505 Protocol Version Not Supported\r\nDate: .*\r\nServer: WMServer/([\w._-]+)\r\n\r\n$| p/Microsoft Windows Media Services/ v/$1/ o/Windows/ cpe:/a:microsoft:windows_media_services:$1/a cpe:/o:microsoft:windows/a
match rtsp m|^RTSP/1\.0 505 Vers\xc3\xa3o do Protocolo sem Suporte\r\nDate: .*\r\nServer: WMServer/([\w._-]+)\r\n\r\n$| p/Microsoft Windows Media Services/ v/$1/ i/Portuguese/ o/Windows/ cpe:/a:microsoft:windows_media_services:$1:::pt/ cpe:/o:microsoft:windows/a
match rtsp m|^RTSP/1\.0 505 Vers\xc3\xa3o de protocolo n\xc3\xa3o suportada\r\nDate: .*\r\nServer: WMServer/([\w._-]+)\r\n\r\n$| p/Microsoft Windows Media Services/ v/$1/ i/Portuguese/ o/Windows/ cpe:/a:microsoft:windows_media_services:$1:::pt/ cpe:/o:microsoft:windows/a
match rtsp m|^RTSP/1\.0 505 Versi\xc3\xb3n del protocolo no compatible\r\nDate: .*\r\nServer: WMServer/([\w._-]+)\r\n\r\n$| p/Microsoft Windows Media Services/ v/$1/ i/Spanish/ o/Windows/ cpe:/a:microsoft:windows_media_services:$1:::es/ cpe:/o:microsoft:windows/a

match rtsp m|^RTSP/1\.0 505 RTSP Version not supported\r\nCseq: \d+\r\nServer: fbxrtspd/([\d.]+) Freebox minimal RTSP server\r\n\r\n| p/Freebox minimal rtspd/ v/$1/ d/media device/
match rtsp m|^RTSP/1\.0 400 Bad Request\r\nCseq: \d+\r\nServer: fbxrtspd/([\w._-]+) Freebox RTSP server\r\n| p/Freebox rtspd/ v/$1/ d/media device/
match rtsp m|^RTSP/1\.0 400 Bad Request\r\nDate: .*\r\nAllow: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, STATS\r\n\r\n| p/MediaPortal TV-Server rtspd/ d/media device/
match rtsp m|^HTTP/1\.0 401 Unauthorized\r\nConnection: close\r\nContent-Type: text/html; charset=ISO-8859-1\r\nWWW-Authenticate: Basic realm=\"server\r\nContent-Length: 166\r\n| p/Avtech MPEG4 DVR control rtspd/
match rtsp m|^RTSP/1\.0 400 Bad Request\r\nDate: .*\r\nallow: OPTIONS, DESCRIBE, SETUP, PLAY, TEARDOWN, SET_PARAMETER\r\n\r\n$| p/ACTi E32 webcam rtspd/ d/webcam/ cpe:/h:acti:e32/
match rtsp m|^HTTP/1\.0 503 Service Unavailable\r\nServer: GStreamer RTSP Server\r\nConnection: close\r\nCache-Control: no-store\r\nPragma: no-cache\r\nDate: .*\r\n\r\n$| p/GStreamer rtspd/
# Example i/Win32; Windows NT 6.1/
match rtsp m|^RTSP/1\.0 400 Bad Request\r\nServer: Microsoft Application Virtualization Server/([\w._-]+) \[([^]]+)\]\r\nDate: .*\r\n\r\n| p/Microsoft Application Virtualization Server rtspd/ v/$1/ i/$2/ o/Windows/ cpe:/o:microsoft:windows/a
match rtsp m|^RTSP/1\.0 405 Method Not Allowed\r\nServer: Dahua Rtsp Server\r\nContent-Length: 0\r\nCSeq: 0\r\n\r\n| p/Dahua IP camera rtspd/ d/webcam/
match rtsp m|^RTSP/1\.0 400 Bad Request\r\nSERVER: HDHomeRun/1\.0\r\nCSeq: 0\r\n\r\n| p/SiliconDust HDHomeRun set top box rtspd/ d/media device/ cpe:/h:silicondust:hdhomerun/
match rtsp m|^RTSP/1\.0 400 Bad Request\r\nContent-length: 0\r\n\r\n| p/Weatherbug camera rtspd/ d/webcam/
match rtsp m|^RTSP/1\.0 400 Bad Request\r\nCSeq: 1\r\nServer: Hipcam RealServer/V([\d.]+)\r\n\r\nRTSP/1\.0 400 Bad Request\r\n| p/Hipcam IP camera rtspd/ v/$1/ d/webcam/
match rtsp m|^RTSP/1\.0 505 RTSP Version Not Supported\r\nServer: HIP([\d.]+)\r\n\r\n| p/2N Helios IP intercom rtspd/ v/$1/ cpe:/h:2n:helios_ip/
match rtsp m|^RTSP/1\.0 505 RTSP Version Not Supported\r\nConnection: Keep-Alive\r\n\r\n$| p/Panasonic AW-HE50 camera rtspd/ d/webcam/ cpe:/h:panasonic:aw-he50/
match rtsp m|^HTTP/1\.1 405 Method Not Allowed\r\nDate: .*\r\n\r\n\r\n$| p/DoorBird video doorbell rtspd/ d/webcam/
match rtsp m|^HTTP/1\.1 200 OK\r\nContent-Type: application/x-rtsp-tunnelled\r\nServer: H264DVR ([\d.]+)\r\nConnection: close\r\nCache-Control: private\r\n\r\n| p/H264DVR rtspd/ v/$1/ d/storage-misc/
match rtsp m|^RTSP/1\.0 505 RTSP Version Not Supported\r\nServer: ALi feng/([\w._-]+)\r\nDate: Week \d+, .* GMT\r\n\r\n| p/feng rtspd/ v/$1/ cpe:/a:lscube:feng:$1/
match rtsp m|^RTSP/1\.0 400 Bad Request\r\nCSeq: 0\r\nServer: Hipcam RealServer/V([\d.]+)\r\n\r\n| p/Hipcam RealServer rtspd/ v/$1/ d/webcam/
# draft-gentric-avt-rtsp-http-00
softmatch rtsp m|^HTTP/1\.[01] \d\d\d(?:[^\r\n]*\r\n(?!\r\n))*?Content-Type: application/x-rtsp-tunnelled|s

match sassafras m|^/0 0 ([-\w_.]+)\r\n/0 0 HUH\r\n| p/Sassafras Key Server/ h/$1/

match seti-proxy m|^HTTP/1\.0 200 OK\r\nServer: SetiQueue/(\d+)\r\n| p/SetiQueue SETI@Home proxy/ v/$1/
match shell m|^\x01INTERnet ACP Error  Status = %SYSTEM-F-TOOMUCHDATA\r\n\0$| p/OpenVMS shelld/ o/OpenVMS/ cpe:/o:hp:openvms/a

# SHOUTcast Distributed Network Audio: www.shoutcast.com
match icy m|^ICY 200 OK\r\n.*SHOUTcast Distributed Network Audio Server/posix\(linux x[86][64]\) v([\w._-]+)<BR>\r\n.*icy-name:([^\r\n]*)\r\n.*icy-genre:([^\r\n]*)\r\n.*icy-url:([^\r\n]*)\r\n.*icy-br:(\d+)\r\n|s p/SHOUTcast server/ v/$1/ i/stream name: $2; genre: $3; URL: $4; bitrate: $5/ o/Linux/ cpe:/a:shoutcast:dnas:$1/a cpe:/o:linux:linux_kernel/a

match icy m|^ICY 200 OK\r\n.*SHOUTcast Distributed Network Audio Server/Linux.v([\d.]+).*icy-name:(.*?)\r\n|s p/SHOUTcast server/ v/$1/ i/Name: $2/ o/Linux/ cpe:/a:shoutcast:dnas:$1/ cpe:/o:linux:linux_kernel/a
match icy m|^ICY 200 OK\r\n.*SHOUTcast Distributed Network Audio Server/win[36][24].v([\d.]+).*icy-name:(.*?)\r\n|s p/SHOUTcast server/ v/$1/ i/Name: $2/ o/Windows/ cpe:/a:shoutcast:dnas:$1/ cpe:/o:microsoft:windows/a
match icy m|^ICY 200 OK\r\n.*SHOUTcast Distributed Network Audio Server/SolarisSparc.v([\d.]+).*icy-name:(.*?)\r\n|s p/SHOUTcast server/ v/$1/ i/Name: $2/ o/Solaris/ cpe:/a:shoutcast:dnas:$1/ cpe:/o:sun:sunos/a
match icy m|^ICY 200 OK\r\n.*SHOUTcast Distributed Network Audio Server/FreeBSD.v([\d.]+).*icy-name:(.*?)\r\n|s p/SHOUTcast server/ v/$1/ i/Name: $2/ o/FreeBSD/ cpe:/a:shoutcast:dnas:$1/ cpe:/o:freebsd:freebsd/a
match icy m|^ICY 200 OK\r\n.*SHOUTcast Distributed Network Audio Server/posix.v([\d.]+).*icy-name:(.*?)\r\n|s p/SHOUTcast server/ v/$1/ i/Name: $2/ o/Unix/ cpe:/a:shoutcast:dnas:$1/
match icy m|^ICY 200 OK\r\n.*SHOUTcast Distributed Network Audio Server/MacOS_X.v([\d.]+).*icy-name:(.*?)\r\n|s p/SHOUTcast server/ v/$1/ i/Name: $2/ o/Mac OS X/ cpe:/a:shoutcast:dnas:$1/ cpe:/o:apple:mac_os_x/a
match icy m|^ICY 401 Service Unavailable\r\n.*SHOUTcast Distributed Network Audio Server/UNIX OS-3 v([\d.]+)| p/SHOUTcast server/ v/$1/ o/Unix/ cpe:/a:shoutcast:dnas:$1/

match icy m|^ICY 200 OK\r\n.*SHOUTcast Distributed Network Audio Server/Linux.v([\d.]+)|s p/SHOUTcast server/ v/$1/ o/Linux/ cpe:/a:shoutcast:dnas:$1/ cpe:/o:linux:linux_kernel/a
match icy m|^ICY 200 OK\r\n.*SHOUTcast Distributed Network Audio Server/win[36][24].v([\d.]+)|s p/SHOUTcast server/ v/$1/ o/Windows/ cpe:/a:shoutcast:dnas:$1/ cpe:/o:microsoft:windows/a
match icy m|^ICY 200 OK\r\n.*SHOUTcast Distributed Network Audio Server/SolarisSparc.v([\d.]+)|s p/SHOUTcast server/ v/$1/ o/Solaris/ cpe:/a:shoutcast:dnas:$1/ cpe:/o:sun:sunos/a
match icy m|^ICY 200 OK\r\n.*SHOUTcast Distributed Network Audio Server/FreeBSD.v([\d.]+)|s p/SHOUTcast server/ v/$1/ o/FreeBSD/ cpe:/a:shoutcast:dnas:$1/ cpe:/o:freebsd:freebsd/a
match icy m|^ICY 200 OK\r\n.*SHOUTcast Distributed Network Audio Server/posix.v([\d.]+)|s p/SHOUTcast server/ v/$1/ o/Unix/ cpe:/a:shoutcast:dnas:$1/

match icy m|^ICY \d\d\d .*SHOUTcast Distributed Network Audio Server/Linux.v([\d.]+)|s p/SHOUTcast server/ v/$1/ o/Linux/ cpe:/a:shoutcast:dnas:$1/ cpe:/o:linux:linux_kernel/a
match icy m|^ICY \d\d\d .*SHOUTcast Distributed Network Audio Server/win[36][24].v([\d.]+)|s p/SHOUTcast server/ v/$1/ o/Windows/ cpe:/a:shoutcast:dnas:$1/ cpe:/o:microsoft:windows/a
match icy m|^ICY \d\d\d .*SHOUTcast Distributed Network Audio Server/SolarisSparc.v([\d.]+)|s p/SHOUTcast server/ v/$1/ o/Solaris/ cpe:/a:shoutcast:dnas:$1/ cpe:/o:sun:sunos/a
match icy m|^ICY \d\d\d .*SHOUTcast Distributed Network Audio Server/FreeBSD.v([\d.]+)|s p/SHOUTcast server/ v/$1/ o/FreeBSD/ cpe:/a:shoutcast:dnas:$1/ cpe:/o:freebsd:freebsd/a
match icy m|^ICY \d\d\d .*SHOUTcast Distributed Network Audio Server/posix.v([\d.]+)|s p/SHOUTcast server/ v/$1/ o/Unix/ cpe:/a:shoutcast:dnas:$1/

match icy m=^(?:HTTP/1\.0|ICY) \d\d\d .*\r\nicy-notice2:SHOUTcast DNAS/win[36][24] v([\d.]+)<BR>\r\n.*icy-name:(.*?)=s p/SHOUTcast Distributed Network Audio Server/ v/$1/ i/Name: $2/ o/Windows/ cpe:/a:shoutcast:dnas:$1/ cpe:/o:microsoft:windows/a
match icy m=^(?:HTTP/1\.0|ICY) \d\d\d .*\r\nicy-notice2:SHOUTcast DNAS/posix\(linux x[86][64]\) v([\d.]+)<BR>\r\n.*icy-name:(.*?)=s p/SHOUTcast Distributed Network Audio Server/ v/$1/ i/Name: $2/ o/Linux/ cpe:/a:shoutcast:dnas:$1/ cpe:/o:linux:linux_kernel/a
match icy m=^(?:HTTP/1\.0|ICY) \d\d\d .*\r\nicy-notice2:SHOUTcast DNAS/posix\(bsd\) v([\d.]+)<BR>\r\n.*icy-name:(.*?)=s p/SHOUTcast Distributed Network Audio Server/ v/$1/ i/Name: $2/ o/BSD/ cpe:/a:shoutcast:dnas:$1/
match icy m=^(?:HTTP/1\.0|ICY) \d\d\d .*\r\nicy-notice2:SHOUTcast DNAS/armv6\(rpi\) v([\d.]+)<BR>\r\n.*icy-name:(.*?)=s p/SHOUTcast Distributed Network Audio Server/ v/$1/ i/Raspberry Pi; Name: $2/ cpe:/a:shoutcast:dnas:$1/

match icy m=^(?:HTTP/1\.0|ICY) \d\d\d .*\r\nicy-notice1:<BR>SHOUTcast DNAS/win[36][24] v([\d.]+)<BR>\r\n=s p/SHOUTcast Distributed Network Audio Server/ v/$1/ o/Windows/ cpe:/a:shoutcast:dnas:$1/ cpe:/o:microsoft:windows/a
match icy m=^(?:HTTP/1\.0|ICY) \d\d\d .*\r\nicy-notice1:<BR>SHOUTcast DNAS/posix\(linux x[86][64]\) v([\d.]+)<BR>\r\n=s p/SHOUTcast Distributed Network Audio Server/ v/$1/ o/Linux/ cpe:/a:shoutcast:dnas:$1/ cpe:/o:linux:linux_kernel/a
match icy m=^(?:HTTP/1\.0|ICY) \d\d\d .*\r\nicy-notice1:<BR>SHOUTcast DNAS/posix\(bsd\) v([\d.]+)<BR>\r\n=s p/SHOUTcast Distributed Network Audio Server/ v/$1/ o/BSD/ cpe:/a:shoutcast:dnas:$1/
match icy m=^(?:HTTP/1\.0|ICY) \d\d\d .*\r\nicy-notice1:<BR>SHOUTcast DNAS/armv6\(rpi\) v([\d.]+)<BR>\r\n=s p/SHOUTcast Distributed Network Audio Server/ v/$1/ i/Raspberry Pi/ cpe:/a:shoutcast:dnas:$1/

match icy m|^HTTP/1\.0 200 OK\r\nContent-Type: audio/mpeg\r\nicy-br:([\d.]+)\r\n.*icy-name:([^\r\n]+)\r\n(?:[^\r\n]+\r\n)*?Server: Icecast ([\d.]+)\r\n\r\n|s p/Icecast streaming media server/ v/$3/ i/Name $2; Bitrate $1/ cpe:/a:xiph:icecast:$3/
match icy m|^HTTP/1\.0 200 OK\r\nContent-Type: audio/mpeg\r\nicy-br:([\d.]+)\r\n(?:[^\r\n]+\r\n)*?Server: Icecast ([\d.]+)\r\n|s p/Icecast streaming media server/ v/$2/ i/Bitrate $1/ cpe:/a:xiph:icecast:$2/

match shoutcast m|^invalid password\r\n$| p/SHOUTcast server/ cpe:/a:shoutcast:dnas/a

match shoutirc m|^HTTP/1\.0 200 OK\r\nConnection: close\r\n\r\n<h1>ShoutIRC Bot ([\w._-]+)</h1>This is not a web server port, it is for use only by clients supporting the <a href=\"http://wiki\.shoutirc\.com/index\.php/Remote_Commands\">Remote Protocol</a>!| p/ShoutIRC Bot/ v/$1/

match sip m|^SIP/2\.0 400 Illegal request line\r\nFrom: <sip:missing>\r\nTo: <sip:missing>;tag=badrequest\r\nUser-Agent: AVM FRITZ!Box Fon WLAN ([\d.]+) ([^\r\n]+)\r\n| p/AVM FRITZ!Box WLAN $1/ v/$2/ d/VoIP adapter/
match sip m|^SIP/2\.0 400 Illegal request line\r\nFrom: <sip:missing>\r\nTo: <sip:missing>;tag=badrequest\r\nUser-Agent: AVM FRITZ!Box Fon (\w+) \(UI\) ([^\r\n]+)\r\n| p/AVM FRITZ!Box $1/ v/$2/ d/VoIP adapter/
match sip m|^SIP/2\.0 400 Illegal request line\r\nFrom: <sip:missing>\r\nTo: <sip:missing>;tag=badrequest\r\nUser-Agent: AVM FRITZ!Box Fon ([^\r\n]+)\r\n|s p/AVM FRITZ!Box/ v/$1/ d/VoIP adapter/
match sip m|^SIP/2\.0 400 Illegal request line\r\nFrom: <sip:missing>\r\nTo: <sip:missing>;tag=badrequest\r\nUser-Agent: AVM FRITZ!Box WLAN ([\d.]+) ([^\r\n]+)\r\n| p/AVM FRITZ!Box WLAN $1/ v/$2/ d/VoIP adapter/
match sip m|^SIP/2\.0 400 Illegal request line\r\nFrom: <sip:missing>\r\nTo: <sip:missing>;tag=badrequest\r\nUser-Agent: AVM FRITZ!Fon ([\w_-]+) ([^\r\n]+)\r\n| p/AVM FRITZ!Fon $1/ v/$2/ d/VoIP adapter/
match sip m|^SIP/2\.0 400 Illegal request line\r\nFrom: <sip:missing>\r\nTo: <sip:missing>;tag=badrequest\r\nUser-Agent: FRITZ!OS\r\nContent-Length: 0\r\n\r\n| p/AVM FRITZ!OS SIP/ d/VoIP adapter/
match sip m|^SIP/2\.0 400 Illegal request line\r\nFrom: <sip:missing>\r\nTo: <sip:missing>;tag=badrequest\r\nUser-Agent: AVM Speedport (W \w+) ([^\r\n]+)\r\n| p/Speedport $1/ v/$2/ d/VoIP adapter/
match sip m|^SIP/2\.0 400 Illegal request line\r\nFrom: <sip:missing>\r\nTo: <sip:missing>;tag=badrequest\r\nUser-Agent: AVM Sinus (W \w+) ([^\r\n]+)\r\n| p/AVM Sinus $1/ v/$2/ d/VoIP adapter/
match sip m|^SIP/2\.0 400 Illegal request line\r\nFrom: <sip:missing>\r\nTo: <sip:missing>;tag=badrequest\r\nUser-Agent: Speedport (W \w+) ([^\r\n]+)\r\n| p/T-Com Speedport $1/ v/$2/ d/VoIP adapter/

match slimp3 m|^GET %2[Ff] HTTP%2[Ff]1\.0\n$| p/SliMP3 MP3 player/ i|http://www.slimdevices.com|

match soap m|^HTTP/1\.1 401 Unauthorized\r\nWWW-Authenticate: Digest realm=\"gSOAP_Web_Service\",.*Server: gSOAP/([\d.]+)\r\n.*<SOAP-ENV:Fault><faultcode>Client</faultcode><faultstring>HTTP Error: 401 Unauthorized</faultstring></SOAP-ENV:Fault>|s p/gSOAP/ v/$1/ i/Sagem F@st 3464 WAP soap/ d/WAP/ cpe:/a:genivia:gsoap:$1/
match soap m|^HTTP/1\.1 401 Unauthorized\r\nWWW-Authenticate: Digest realm=\"realtek\.com\.tw\", qop=\"auth\", nonce=\"[0-9a-f]+\", opaque=\"[0-9a-f]+\"\r\nServer: gSOAP/([\w._-]+)\r\n| p/gSOAP/ v/$1/ cpe:/a:genivia:gsoap:$1/
match soap m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: gSOAP/([\d.]+)\r\n|s p/gSOAP/ v/$1/ cpe:/a:genivia:gsoap:$1/
match soap m|^HTTP/1\.1 200 OK\r\nServer: SCS\r\nContent-Type: text/html; charset=utf-8\r\n.*<h2 style=\"color:darkcyan\">ServerView Remote Connector - Provider V([\w._-]+)</h2>|s p/Fujitsu ServerView Remote Connector soap/ v/$1/ cpe:/a:fujitsu:serverview_operations_manager:$1/
match http m|^HTTP/1\.1 200 OK\r\nServer: SCS\r\nContent-Type: text/html; charset=utf-8\r\n.*<h2 style=\"color:darkcyan\">ServerView Remote Connector Service V([\w._-]+)</h2>|s p/Fujitsu ServerView Remote Connector soap/ v/$1/ cpe:/a:fujitsu:serverview_operations_manager:$1/
match soap m|^HTTP/1\.0 500 Internal Server Error\r\nServer: gSOAP/([\w._-]+)\r\n.* xmlns:gmmiws=\"https://([\w._-]+):\d+/glsinternal\.wsdl\" .*<faultstring>HTTP GET method not implemented</faultstring>|s p/gSOAP/ v/$1/ i/Good Messaging Server gddomsyncsrv/ h/$2/ cpe:/a:genivia:gsoap:$1/
match soap m|^HTTP/1\.0 500 Internal Server Error\r\nServer: gSOAP/([\w._-]+)\r\n.* xmlns:pushws=\"https://([\w._-]+):\d+/pushws\">.*<faultstring>HTTP GET method not implemented</faultstring>|s p/gSOAP/ v/$1/ i/Good Messaging Server gdpushproc/ h/$2/ cpe:/a:genivia:gsoap:$1/
match soap m|^HTTP/1\.1 405 Method Not Allowed\r\nDate:\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d\r\nContent-Type: application/soap\+xml; charset=\"utf-8\"\r\n\r\n$| p/Dell 1130n printer soap/ d/printer/ cpe:/h:dell:1130n/
match soap m|^HTTP/1\.1  200 OK\r\nContent-Type: text/xml; charset=utf-8: \r\nConnection: close\r\n\r\n<\?xml version=\"1\.0\" encoding=\"UTF-8\" standalone=\"yes\"\?>.*<ModelDescription>Xtreme N GIGABIT Router</ModelDescription><ModelName>(DIR-655) \w+</ModelName><FirmwareVersion>([^<]+)</FirmwareVersion>|s p/D-Link $1 soap/ v/$2/ d/WAP/ cpe:/h:dlink:$1/
match soap m|^HTTP/1\.1 200 OK\r\nContent-Type: text/xml; charset=utf-8\r\nConnection: close\r\nContent-Length: \d+\r\n\r\n<\?xml version=\"1\.0\" encoding=\"utf-8\"\?>.*<ModelName>(SMC\w+)</ModelName>\n<FirmwareVersion>V([\w._-]+)</FirmwareVersion>|s p/SMC $1 Barricade WAP soap/ v/$2/ d/WAP/ cpe:/h:smc:$1:$2/
match soap m|^HTTP/1\.1 \d\d\d .*\r\nServer: gSOAP\r\n| p/gSOAP/ cpe:/a:genivia:gsoap/

match smtp m|^220 ([\w._-]+)\r\n500 5\.5\.1 Unrecognized command\r\n| p/SoftStack Free SMTP Server/ o/Windows/ h/$1/ cpe:/o:microsoft:windows/
match smtp m|^220[ -]([\w._-]+) ESMTP\r.*\n521 5\.7\.0 Error: I can break rules, too\. Goodbye\.\r\n|s p/Postfix smtpd/ h/$1/ cpe:/a:postfix:postfix/a

# spamd 2.20-1woody
match spamassassin m|^SPAMD/1\.0 76 Bad header line: GET / HTTP/1\.0\r\r?\n| p/SpamAssassin spamd/ cpe:/a:apache:spamassassin/

# TLS 1.0 Alert (0x21), Fatal (0x02), Unexpected message (0x0a)
match ssl m|^\x15\x03\x01\0\x02\x02\x0a$| p/TLS/ v/1.0/

match http m|^HTTP/1\.1 405 Method Not Allowed\r\nDate:0000-01-01T18:54:43\r\nContent-Type: application/soap\+xml; charset=\"utf-8\"\r\n\r\n$| p/Samsung CLX-3175FW printer SOAP over HTTP/ d/printer/ cpe:/h:samsung:clx-3175fw/a

match speech m|^ER\nLP\n#<SUBR\(6\) />\nft_StUfF_keyOK\nER\n$| p/Festival Speech Synthesis System/

match sphinx-search m|^\x01\0\0\0\0\x01\0\0\0\0\0 \0\0\0\x1cunknown command \(code=\d+\)| p/Sphinx Search daemon/

# No idea if this is general enough
match sopcast m|^HTTP/1\.0 200 OK\r\n\r\n0&\xb2u\x8ef\xcf\x11\xa6\xd9\0| p/SopCast P2P/

match syncplay-json m|^\{"Error": \{"message": "Not a json encoded string GET / HTTP/1\.0"\}\}\r\n| p/Syncplay JSON server/ cpe:/a:syncplay:syncplay/

match tcpmux m|^-Service not available\r\n$|

match telnet m|^\xff\xfb\x01\xff\xfe\"\n\r\tNetDSL Copyright by ARESCOM 2003\n\r\n\r\n\rUsername:GET / HTTP/1\.0\r\n\n\rPassword:\r\n\n\rUsername:| p/ARESCOM NetDSL 1000 router/ d/router/
match telnet m|^\xff\xfb\x03\xff\xfb\x01\xff\xfbi\r\n\tWelcome to Magicunix's TCP Server\.\r\n\r\n\r\nLogin: P/1\.0\r\nPassword: \r\nLogin incorrect\r\nLogin: | p/MagicUnix telnetd/
match telnet m|^\xff\xfb\x03\xff\xfb\x01\r\n\r\n\x07HP ([\w+]+) AdvanceStack 10BT Switching Hub Management Module\r\n| p/HP $1 switch telnetd/ d/switch/ cpe:/h:hp:$1/a
match telnet m|^\xff\xfb\x01\r\n-> GET / HTTP/1\.0\r\nGET / HTTP/1\.0\r\nundefined symbol: GET\r\n-> \r\n-> | p/Konica Minolta Magicolor 2300 DL printer telnetd/ d/printer/
match telnet m|^\xff\xfe\x01Login to server\. \r\nUsername: ET / HTTP/1\.0\r\nPassword: \r\nLogin to server\. \r\nUsername:| p/EFCMService telnetd/ o/Windows/ cpe:/o:microsoft:windows/a
match telnet m|^\xff\xfc\"\xff\xfb\x03\xff\xfb\x01\r\n\r\nWelcome to  C A N O P Y  CMM Micro\.\r\n\r\nPress Enter to Continue\.\.\.\r\n\r\nLogin: \r\nPassword: | p/Motorola Canopy cluster management module telnetd/ o/eCos/ cpe:/o:ecos:ecos/
match telnet m|^\xff\xfb\x01\xff\xfb\x03telnet@CER(\w+)>GET / HTTP/1\.0\r\nInvalid input -> GET / HTTP/1\.0\r\nType \? for a list\r\n| p/NetIron CER $1 switch telnetd/ d/switch/
match telnet m|^BAD_COMMAND\n| p/Lotus Domino Console/ cpe:/a:ibm:lotus_domino/
match telnet m|^\xff\xfb\x01\xff\xfb\x03$| p/Pocket CMD telnetd/
match telnet m|^\xff\xfe\x01\r\n\r\n\+============================================================================\+\r\n\x7c             \[ Rack Monitor Configuration Utility Main Menu \]               \x7c\r\n\+============================================================================\+\r\n\r\nEnter Password: | p/Eaton Powerware Environmental Rack Monitor telnetd/ d/power-misc/
match telnet m|^\xff\xfb\x01\r\nMGI Login: GET / HTTP/1\.0\r\n\r\nPassword: \r\nLogin incorrect\r\n\r\nMGI Login: | p/Samsung PBX telnetd/ d/PBX/
match telnet m|^\xff\xfb\0\*\*\*\*\*\*\*\*\*\*\*\*\*\*\r\n\r\nD-Link Access Point login: | p/D-Link DWL-3200AP WAP telnetd/ d/WAP/ cpe:/h:dlink:dwl-3200ap/
match telnet m|^\r\n\xff\xfb\x01\xff\xfb\x03\r\nUser:GET / HTTP/1\.0\r\nPassword:\r\nUser:| p/Dell OpenManage telnetd/ cpe:/a:dell:openmanage_baseboard_management_controller_utilities/
match telnet m|^\n\rError 0xf802: Command not recognized\.\r\n| p/Quatech Airborne CLI server/ d/bridge/
match telnet m|^Please enter password:\r\nPassword incorrect, please enter password:\r\nPassword incorrect, please enter password:\r\n| p/7 Days to Die game Telnet config/ cpe:/a:the_fun_pimps:7_days_to_die/
# Probably BusyBox
match telnet m|^\xff\xfd\x01\xff\xfd\x1f\xff\xfb\x01\xff\xfb\x03\r\r\nGET / HTTP/1\.0\r\n\r\nSICUNET login: | p/Sicunet access control system telnetd/ d/security-misc/

# https://www.reddit.com/r/telnet/comments/4i3w20/found_vizio_m55c3_telnet_access/
match textui m|^cannot find method GET\n\n$| p/Vizio television textui/ d/media device/

# The Onion Router
match tor-socks m|^HTTP/1\.0 501 Tor is not an HTTP Proxy\r\n| p/Tor SOCKS proxy/ cpe:/a:torproject:tor/
match tor-info m|^HTTP/1\.0 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Content-Encoding: identity\r\n.*signed-directory\npublished .*\nrecommended-software|s p/Tor nodes info httpd/ cpe:/a:torproject:tor/
match tor-info m|^HTTP/1\.0 503 Directory busy, try again later\r\n\r\n$| p/Tor nodes info httpd/ cpe:/a:torproject:tor/
match tor-info m|^HTTP/1\.0 404 Not found\r\nDate: \w\w\w, \d\d? \w\w\w \d\d\d\d \d\d:\d\d:\d\d GMT\r\n\r\n$| p/Tor nodes info httpd/ cpe:/a:torproject:tor/

softmatch uptime-agent m|ERR - Command 'GET' not found\n$| p/Idera Uptime Infrastructure Monitor/ cpe:/a:idera:uptime_infrastructure_monitor/

match utsessiond m|^ERR/InvalidCommand\n$| p/Sun Ray utsessiond/ cpe:/a:sun:ray_server_software/
match utsvc m|^protocolErrorInf error=Missing\\040hw\\040string\\040from\\040:\\040null\.\\040Check\\040hardware state=disconnected\n| p/Sun Ray utsvcd/ cpe:/a:sun:ray_server_software/
match utsvc m|^protocolErrorInf error=invalid\\040command\\040or\\040parameter state=disconnected\n| p/Sun Ray utsvcd/ cpe:/a:sun:ray_server_software/

match upnp m|^HTTP/1\.1 403 Forbidden\r\n.*SERVER: LG-BDP DLNADOC/([\w._-]+)\r\n| p/LG BP730 Blu-ray player upnp/ i/DLNADOC $1/ d/media device/ cpe:/h:lg:bp730/
match upnp m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: (UPnP/[\d.]+ DLNADOC/[\d.]+) Platinum/([\d.]+)\r\n\r\n|s p/Platinum UPnP/ v/$2/ i/$1/
match upnp m|^HTTP/1\.[01] 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: Linux-amd64-([\w._-]+), UPnP/([\d.]+), PMS/(.*?)\r\n|s p/PS3 Media Server UPnP/ v/$3/ i/Linux $1; UPnP $2/ d/media device/ o/Linux/ cpe:/o:linux:linux_kernel:$1/
match upnp m|^HTTP/1\.[01] 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: Linux-([\w_.-]+), UPnP/([\d.]+), PMS/(.*?)\r\n|s p/PS3 Media Server UPnP/ v/$3/ i/Linux $1; UPnP $2/ d/media device/ o/Linux/ cpe:/o:linux:linux_kernel:$1/
match upnp m|^HTTP/1\.[01] 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: Windows_XP-([\w_.-]+), UPnP/([\d.]+), PMS/(.*?)\r\n|s p/PS3 Media Server UPnP/ v/$3/ i/Windows XP $1; UPnP $2/ d/media device/ o/Windows XP/ cpe:/o:microsoft:windows_xp:$1/
match upnp m|^HTTP/1\.[01] 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: Windows_Vista-x86-([\w._-]+), UPnP/([\d.]+), PMS/(.*?)\r\n|s p/PS3 Media Server UPnP/ v/$3/ i/Windows Vista $1; UPnP $2/ d/media device/ o/Windows Vista/ cpe:/o:microsoft:windows_vista:$1::x32/
match upnp m|^HTTP/1\.[01] 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: Windows_Vista-x86_64-([\w._-]+), UPnP/([\d.]+), PMS/(.*?)\r\n|s p/PS3 Media Server UPnP/ v/$3/ i/Windows Vista $1; UPnP $2/ d/media device/ o/Windows Vista/ cpe:/o:microsoft:windows_vista:$1::x64/
match upnp m|^HTTP/1\.[01] 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: Windows_7-x86-([\w._-]+), UPnP/([\d.]+), PMS/(.*?)\r\n|s p/PS3 Media Server UPnP/ v/$3/ i/Windows 7 $1; UPnP $2/ d/media device/ o/Windows 7/ cpe:/o:microsoft:windows_7:$1::x32/
match upnp m|^HTTP/1\.[01] 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: Windows_7-x86_64-([\w._-]+), UPnP/([\d.]+), PMS/(.*?)\r\n|s p/PS3 Media Server UPnP/ v/$3/ i/Windows 7 $1; UPnP $2/ d/media device/ o/Windows 7/ cpe:/o:microsoft:windows_7:$1::x64/
match upnp m|^HTTP/1\.[01] 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: Mac_OS_X-x86_64-([\w_.-]+), UPnP/([\d.]+), PMS/(.*?)\r\n|s p/PS3 Media Server UPnP/ v/$3/ i/Mac OS X $1; UPnP $2/ d/media device/ o/Mac OS X/ cpe:/o:apple:mac_os_x/a

match upnp m|^HTTP/1\.0 200 (?:[^\r\n]*\r\n(?!\r\n))*?Server: Linux/([\w_.-]+), UPnP/([\w_.-]+), Free UPnP Entertainment Service/ReadyNAS\r\n|s p/FUPPES UPnP media server/ i/Linux $1; UPnP $2/ o/Linux/ cpe:/o:linux:linux_kernel:$1/
match upnp m|^HTTP/1\.0 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: Linux/([\w_.-]+), UPnP/([\w_.-]+), Free UPnP Entertainment Service/([^\r\n]+)\r\n|s p/FUPPES UPnP media server/ v/$3/ i/Linux $1; UPnP $2/ o/Linux/ cpe:/o:linux:linux_kernel:$1/
match upnp m|^HTTP/1\.0 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: FreeBSD/([\w_.-]+), UPnP/([\w_.-]+), Free UPnP Entertainment Service/([^\r\n]+)\r\n|s p/FUPPES UPnP media server/ v/$3/ i/FreeBSD $1; UPnP $2/ o/FreeBSD/ cpe:/o:freebsd:freebsd:$1/

match upnp m|^HTTP/1\.1 500 Internal Server Error\r\nSERVER: ipOS/([\d.]+) UPnP/([\d.]+) ipUPnP/([\d.]+)\r\n| p/ipOS upnpd/ i/D-Link WAP dynamic DNS; UPnP $2; ipUPnP $3/ d/WAP/ o/ipOS $1/ cpe:/o:ubicom:ipos:$1/
match upnp m|^HTTP/1\.1 400 Bad Request\r\nSERVER: ipOS/([\d.]+) UPnP/([\d.]+) ipGENADevice/([\d.]+)\r\n| p/ipOS upnpd/ i/D-Link DGL-4300 gaming router; UPnP $2; ipGENADevice $3/ d/broadband router/ o/ipOS $1/ cpe:/h:d-link:dgl-4300/ cpe:/o:ubicom:ipos:$1/
match upnp m|^HTTP/1\.0 \d\d\d .*\r\nSERVER: ipos/([\w._-]+) +UPnP/([\d.]+) (?:ADSL2\+ (?:Modem )?Router )?(T[DL]-\w+)/([\w._/-]+)\r\n| p/ipOS upnpd/ i/TP-LINK $3 WAP $4; UPnP $2/ d/WAP/ o/ipOS $1/ cpe:/h:tp-link:$3/ cpe:/o:ubicom:ipos:$1/
match upnp m|^HTTP/1\.0 \d\d\d .*\r\nSERVER: ipos/([\w._-]+) +UPnP/([\d.]+) (RNX-\w+)/([\w._/-]+)\r\n| p/ipOS upnpd/ i/Rosewill $3 WAP $4; UPnP $2/ d/WAP/ o/ipOS $1/ cpe:/h:rosewill:$3/ cpe:/o:ubicom:ipos:$1/
match upnp m|^HTTP/1\.0 \d\d\d .*\r\nSERVER: ipos/([\w._-]+) UPnP/([\d.]+) Archer[ _]([^/]+)/([\w._/-]+)\r\n| p/ipOS upnpd/ i/TP-Link Archer $3 WAP $4; UPnP $2/ d/WAP/ o/ipOS $1/ cpe:/h:tp-link:a$3/ cpe:/o:ubicom:ipos:$1/

match upnp m|^HTTP/1\.[01] \d\d\d .*\r\nSERVER: Linux/([\w._+-]+), UPnP/([\d.]+), Portable SDK for UPnP devices/([\w._~-]+)\r\n| p/Portable SDK for UPnP devices/ v/$3/ i/Linux $1; UPnP $2/ o/Linux/ cpe:/o:linux:linux_kernel:$1/
match upnp m|^HTTP/1\.[01] \d\d\d .*\r\nSERVER: Linux, UPnP/([\d.]+), Portable SDK for UPnP devices/([\w._~-]+)\r\n| p/Portable SDK for UPnP devices/ v/$2/ i/UPnP $1/ o/Linux/ cpe:/o:linux:linux_kernel/
match upnp m|^HTTP/1\.[01] \d\d\d .*\r\nSERVER: Linux/([\w._+-]+) UPnP/([\d.]+) DLNADOC/([\d.]+) Portable SDK for UPnP devices/([\w._~-]+)\r\n| p/Portable SDK for UPnP devices/ v/$4/ i/Linux $1; DLNADOC $3; UPnP $2/ o/Linux/ cpe:/o:linux:linux_kernel:$1/
match upnp m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: Linux/([\w._+-]+) DLNADOC/([\d.]+) UPnP/([\d.]+) MiniDLNA/([\w._-]+)\r\n|s p/MiniDLNA/ v/$4/ i/Linux $1; DLNADOC $2; UPnP $3/ o/Linux/ cpe:/a:minidlna:minidlna:$4/a cpe:/o:linux:linux_kernel:$1/
match upnp m|^HTTP/1\.0 500 Internal Server Error\r\nSERVER: ([\w._-]+\.7601) 2/Service Pack (\d+), UPnP/([\w._-]+), Portable SDK for UPnP devices/([\w._~-]+)\r\n| p/Portable SDK for UPnP devices/ v/$4/ i/UPnP $3/ o/Windows 7 SP$2 build $1/ cpe:/o:microsoft:windows_7/a
match upnp m|^HTTP/1\.0 \d\d\d .*\r\nSERVER: ([56]\.[\d. ]+)/, UPnP/([\d.]+), Portable SDK for UPnP devices/([\w._~-]+)\r\n| p/Portable SDK for UPnP devices/ v/$3/ i/Windows $1; UPnP $2/ o/Windows/ cpe:/o:microsoft:windows/a
match upnp m|^HTTP/1\.0 \d\d\d .*\r\nSERVER: ([56]\.[\d. ]+)/Service Pack (\d+), UPnP/([\d.]+), Portable SDK for UPnP devices/([\w._~-]+)\r\n| p/Portable SDK for UPnP devices/ v/$4/ i/Windows $1 (SP$2); UPnP $3/ o/Windows/ cpe:/o:microsoft:windows/a

match upnp m|^HTTP/1\.[01] \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?SERVER: Linux/([-+\w_.]+), UPnP/([\d.]+), Intel SDK for UPnP devices ?/([\w._~-]+)\r\n|s p/Intel UPnP reference SDK/ v/$3/ i/Linux $1; UPnP $2/ o/Linux/ cpe:/o:linux:linux_kernel:$1/
match upnp m|^HTTP/1\.[01] \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?SERVER: Linux/([-+\w_.]+) UPnP/([\d.]+) DLNADOC/([\w._-]+) Intel_SDK_for_UPnP_devices/([\w._~-]+)\r\n|s p/Intel UPnP reference SDK/ v/$4/ i/Linux $1; UPnP $2; DLNADOC $3/ o/Linux/ cpe:/o:linux:linux_kernel:$1/
match upnp m|^HTTP/1\.[01] \d\d\d .*\r\nSERVER: Linux, UPnP/([\d.]+), Intel SDK for UPnP devices ?/([\w._~-]+)\r\n| p/Intel UPnP reference SDK/ v/$2/ i/UPnP $1/ o/Linux/ cpe:/o:linux:linux_kernel/a
match upnp m|^HTTP/1\.[01] \d\d\d .*\r\nSERVER: Darwin/([\w._+-]+), UPnP/([\w._-]+), Portable SDK for UPnP devices/([\w._~-]+)\r\n| p/Intel UPnP reference SDK/ v/$3/ i/Mac OS X $1; UPnP $2/ o/Mac OS X/ cpe:/o:apple:mac_os_x/a
match upnp m|^HTTP/1\.[01] \d\d\d .*\r\nSERVER: Windows2000/0\.0 UPnP/([\w._+-]+) PhilipsIntelSDK/([\w._-]+) DLNADOC/([\w._-]+)\r\n| p/Philips Intel UPnP SDK/ v/$2/ i/Philips Smart TV; UPnP $1; DLNADOC $3/ d/media device/
match upnp m|^HTTP/1\.[01] \d\d\d .*\r\nSERVER: Linux([\d.]+)/0\.0 UPnP/([\w._+-]+) PhilipsIntelSDK/([\w._-]+) DLNADOC/([\w._-]+)\r\n| p/Philips Intel UPnP SDK/ v/$3/ i/Philips Smart TV; UPnP $2; DLNADOC $4/ d/media device/ o/Linux $1/ cpe:/o:linux:linux_kernel:$1/a
match upnp m|^HTTP/1\.[01] \d\d\d .*\r\nSERVER: Windows2000/0\.0 UPnP/([\w._+-]+) PhilipsIntelSDK/([\w._-]+) \r\n| p/Philips Intel UPnP SDK/ v/$2/ i/Philips Smart TV; UPnP $1/ d/media device/
match upnp m|^HTTP/1\.[01] \d\d\d .*\r\nSERVER: Linux([\d.]+)/0\.0 UPnP/([\w._+-]+) PhilipsIntelSDK/([\w._-]+) \r\n| p/Philips Intel UPnP SDK/ v/$3/ i/Philips Smart TV; UPnP $2/ d/media device/ o/Linux $1/ cpe:/o:linux:linux_kernel:$1/a

match upnp m|^HTTP/1\.[01] \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?CONTENT-TYPE: text/xml\r\nContent-Length: .*<modelName>Xbox 360</modelName>.*<serialNumber>(\w+)</serialNumber>|s p/Xbox 360 XML UPnP/ i/Serial number $1/ d/game console/ o/Xbox 360/ cpe:/h:microsoft:xbox_360_kernel/
match upnp m|^HTTP/1\.0 \d\d\d .*\r\nDate: .*\r\nConnection: close\r\nServer: Microsoft-Windows-NT/(\d[-.\w]+) UPnP/(\d[-.\w]+) UPnP-Device-Host/(\d[-.\w]+)\r\n| p/Microsoft Windows UPnP/ v/$2/ i/UPnP Device Host: $3/ o/Windows NT $1/ cpe:/o:microsoft:windows_nt:$1/
match upnp m=^HTTP/1\.1 200 .*\r\nSERVER: Linux/((2\.[46]\.\d+|\d\.\d+)\S*), UPnP/([\d.]+), MediaTomb/([\w._-]+)\r\n=s p/MediaTomb UPnP/ v/$4/ i/Linux $1; UPnP $3/ o/Linux/ cpe:/o:linux:linux_kernel:$2/
match upnp m|^HTTP/1\.1 200 (?:[^\r\n]*\r\n(?!\r\n))*?SERVER: Darwin/([\w._-]+), UPnP/([\d.]+), MediaTomb/([\w._-]+)\r\n|s p/MediaTomb UPnP/ v/$3/ i/Darwin $1; UPnP $2/ o/Mac OS X/ cpe:/o:apple:mac_os_x/a
match upnp m|^HTTP/1\.1 200 OK\r\n(?:[^\r\n]+\r\n)*?SERVER: FreeBSD/([\w._-]+), UPnP/([\d.]+), MediaTomb/([\w._-]+)\r\n|s p/MediaTomb UPnP/ v/$3/ i/FreeBSD $1; UPnP $2/ o/FreeBSD/ cpe:/o:freebsd:freebsd:$1/
match upnp m|^HTTP/1\.1 200 OK\r\n(?:[^\r\n]+\r\n)*?SERVER: OpenBSD/([\w._-]+), UPnP/([\d.]+), MediaTomb/([\w._-]+)\r\n|s p/MediaTomb UPnP/ v/$3/ i/OpenBSD $1; UPnP $2/ o/OpenBSD/ cpe:/o:openbsd:openbsd:$1/
match upnp m|^HTTP/1\.1 200 OK\r\n(?:[^\r\n]+\r\n)*?SERVER: SunOS/([\w._-]+), UPnP/([\d.]+), MediaTomb/([\w._-]+)\r\n|s p/MediaTomb UPnP/ v/$3/ i/SunOS $1; UPnP $2/ o/Solaris/ cpe:/o:sun:sunos:$1/
#TODO make sure the * version doesn't come after \r\n

match upnp m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: UPnP/([\w._-]+), pvConnect UPnP SDK/([\w._-]+),  Twonky UPnP SDK/([\w._-]+)\r\n|s p/TwonkyMedia UPnP/ i/UPnP $1; pvConnect SDK $2; SDK $3/ cpe:/a:packetvideo:twonky/
match upnp m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: UPnP/([\w._-]+), pvConnect UPnP SDK/([\w._-]+),  TwonkyMedia UPnP SDK/([\w._-]+)\r\n|s p/TwonkyMedia UPnP/ i/UPnP $1; pvConnect SDK $2; SDK $3/ cpe:/a:packetvideo:twonky/
match upnp m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: *Linux/([\w._-]+), UPnP/([\w._-]+), TwonkyVision UPnP SDK/([\w._-]+)\r\n|s p/TwonkyMedia UPnP/ i/Linux $1; UPnP $2; SDK $3/ o/Linux/ cpe:/a:packetvideo:twonky/ cpe:/o:linux:linux_kernel:$1/
match upnp m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: *Linux/2\.x\.x, UPnP/([\w._-]+), pvConnect UPnP SDK/([\w._-]+), Twonky UPnP SDK/([\w._-]+)\r\n|s p/TwonkyMedia UPnP/ i/UPnP $1; pvConnect SDK $2; Twonky SDK $3/ o/Linux/ cpe:/a:packetvideo:twonky/ cpe:/o:linux:linux_kernel:2/
match upnp m=^HTTP/1\.1 \d\d\d .*Server: *Linux/([\w._-]+), UPnP/([\w._-]+), pvConnect UPnP SDK/([\w._-]+)\r\n.*<title>(?:TwonkyMedia|TwonkyMedia server media browser|TwonkyVision Configuration)</title>=s p/TwonkyMedia UPnP/ i/Linux $1; UPnP $2; pvConnect SDK $3/ o/Linux/ cpe:/a:packetvideo:twonky/ cpe:/o:linux:linux_kernel:$1/
match upnp m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: *Linux/([\w._-]+), UPnP/([\w._-]+), pvConnect UPnP SDK/([\w._-]+)\r\n.*<title>MediaServer Restriced Access</title>|s p/TwonkyMedia UPnP/ i/Iomega Home Media NAS device; Linux $1; UPnP $2; pvConnect SDK $3/ o/Linux/ cpe:/a:packetvideo:twonky/ cpe:/o:linux:linux_kernel:$1/
match upnp m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: *Linux/2\.x\.x, UPnP/([\w._-]+), pvConnect UPnP SDK/([\w._-]+), TwonkyMedia UPnP SDK/([\w._-]+)\r\n\r\n|s p/TwonkyMedia UPnP/ i/Linux 2.X.X; UPnP $1; pvConnect SDK $2; SDK $3/ o/Linux/ cpe:/a:packetvideo:twonky/ cpe:/o:linux:linux_kernel:2/
match upnp m|^HTTP/1\.1 401 Unauthorised\r\n(?:[^\r\n]+\r\n)*?WWW-Authenticate: Digest realm=\"([\w._-]+)\", nonce=\"\w+\", algorigthm=MD5, qop=\"auth\" \n.*Server: *Linux/2\.x\.x, UPnP/([\d.]+), pvConnect UPnP SDK/([\w._-]+), Twonky UPnP SDK/([\w._-]+)\r\n|s p/TwonkyMedia UPnP/ i/Linux; UPnP $2; pvConnect SDK $3; SDK $4/ o/Linux/ h/$1/ cpe:/a:packetvideo:twonky/ cpe:/o:linux:linux_kernel:2/
match upnp m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: *Linux/2\.x\.x, UPnP/([\w._-]+), pvConnect UPnP SDK/([\w._-]+)\r\n\r\n|s p/TwonkyMedia UPnP/ i/Linux 2.X.X; UPnP $1; pvConnect SDK $2/ o/Linux/ cpe:/a:packetvideo:twonky/ cpe:/o:linux:linux_kernel:2/
match upnp m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: Windows NT/[\w._-]+, UPnP/([\w._-]+), pvConnect UPnP SDK/([\w._-]+),  TwonkyMedia UPnP SDK/([\w._-]+)\r\n|s p/TwonkyMedia UPnP/ i/UPnP $1; pvConnect SDK $2; SDK $3/ o/Windows NT/ cpe:/a:packetvideo:twonky/ cpe:/o:microsoft:windows_nt/
match upnp m|^HTTP/1\.1 401 Unauthorised\r\n(?:[^\r\n]+\r\n)*?WWW-Authenticate: Basic realm=\"([\w._-]+)\"\n.*Server: *Linux/2\.x\.x, UPnP/([\w._-]+), pvConnect UPnP SDK/([\w._-]+), Twonky UPnP SDK/([\w._-]+)\r\n|s p/TwonkyMedia UPnP/ i/Linux 2.X; UPnP $2; pvConnect SDK $3; SDK $4/ o/Linux/ h/$1/ cpe:/a:packetvideo:twonky/ cpe:/o:linux:linux_kernel:2/
match upnp m|^HTTP/1\.1 401 Unauthorised\r\n(?:[^\r\n]+\r\n)*?WWW-Authenticate: Basic realm=\"([\w._-]+)\"\n.*Server: *Linux/([\w._-]+), UPnP/([\w._-]+), pvConnect UPnP SDK/([\w._-]+)\r\n|s p/TwonkyMedia UPnP/ i/Linux $2; UPnP $3; pvConnect SDK $4/ o/Linux/ h/$1/ cpe:/a:packetvideo:twonky/ cpe:/o:linux:linux_kernel:$2/a

match upnp m|^HTTP/1\.1 \d\d\d .*\r\nContent-Type:  text/xml; charset=\"UTF-8\"\r\nServer: Orb Media Server, WINDOWS, UPnP/([\w._-]+), Intel MicroStack/([\w._-]+)\r\n| p/Orb Media Server UPnP/ i/UPnP $1; Intel MicroStack $2/ o/Windows/ cpe:/o:microsoft:windows/a
match upnp m|^HTTP/1\.1 200 OK\r\nCONTENT-TYPE:  text/xml;charset="utf-8"\r\nServer: WINDOWS, UPnP/([\d.]+), Intel MicroStack/([\w._-]+)\r\n| p/Intel MicroStack upnpd/ v/$2/ i/UPnP $1/ o/Windows/ cpe:/o:microsoft:windows/a
match upnp m|^HTTP/1\.0 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: OpenWRT/kamikaze UPnP/([\w._-]+) miniupnpd/([\w._-]+)\r\n|s p/MiniUPnP/ v/$2/ i/OpenWrt Kamikaze; UPnP $1/ d/broadband router/ o/Linux/ cpe:/a:miniupnp_project:miniupnpd:$2/a cpe:/o:linux:linux_kernel/a
match upnp m|^HTTP/1\.0 404 Not Found\r\n(?:[^\r\n]+\r\n)*?Server: neufbox UPnP/([\w._-]+) MiniUPnPd/([\w._-]+)\r\n|s p/MiniUPnP/ v/$2/ i/Neuf Box router; UPnP $1/ d/router/ cpe:/a:miniupnp_project:miniupnpd:$2/a
match upnp m|^HTTP/1\.0 404 Not Found\r\n(?:[^\r\n]+\r\n)*?Server: DrayTek/Vigor(\w+) UPnP/([\w._-]+) MiniUPnPd/([\w._-]+)\r\n|s p/MiniUPnP/ v/$3/ i/DrayTek Vigor $1 router; UPnP $2/ d/router/ cpe:/a:miniupnp_project:miniupnpd:$3/a cpe:/h:draytek:vigor_$1/a
match upnp m|^HTTP/1\.0 404 Not Found\r\n(?:[^\r\n]+\r\n)*?Server: OpenWRT/OpenWrt UPnP/([\w._-]+) MiniUPnPd/([\w._-]+)\r\n|s p/MiniUPnP/ v/$2/ i/OpenWrt; UPnP $1/ d/broadband router/ cpe:/a:miniupnp_project:miniupnpd:$2/a
match upnp m|^HTTP/1\.1 200 OK\r\nServer: Roku UPnP/([\d.]+) MiniUPnPd/([\d.]+)\r\n| p/MiniUPnP/ v/$2/ i/Roku; UPnP $1/ d/media device/ cpe:/a:miniupnp_project:miniupnpd:$2/a
match upnp m|^HTTP/1\.0 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: Linux,([\w._-]+),UPnP/([\w._-]+),Coherence UPnP framework,([\w._-]+)\r\n|s p/Coherence UPnP framework/ v/$3/ i/Linux $1; UPnP $2/ o/Linux/ cpe:/o:linux:linux_kernel:$1/a
match upnp m|^HTTP/1\.[01] 404 Not Found\r\n(?:[^\r\n]+\r\n)*?Server: Netgem/([\d.]+) \(NeufboxTV UPnPServer\)\r\n|s p/Netgem UPnP/ v/$1/ i/Neuf Box TV/ d/media device/
match upnp m|^HTTP/1\.1 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: WINDOWS, UPnP/([\d.]+), Intel MicroStack/([\d.]+)\r\n.*<dlna:X_DLNADOC xmlns:dlna=\"urn:schemas-dlna-org:device-1-0\">(DMS-[\d.]+)</dlna:X_DLNADOC>.*<friendlyName>([\w._-]+): MediaServer</friendlyName>.*<manufacturer>Wistron</manufacturer>.*<modelDescription>WiDMS</modelDescription>|s p/Intel MicroStack UPnP/ v/$2/ i/Wistron Digital Media Server $3; UPnP $1/ o/Windows/ h/$4/ cpe:/o:microsoft:windows/a
match upnp m|^HTTP/1\.1 40[04] .*\r\nServer: Linux, UPnP/([\d.]+), (DIR-[\w+]+) Ver ([\w._-]+)\r\n| p/D-Link $2 WAP UPnP/ v/$3/ i/UPnP $1/ d/WAP/ o/Linux/ cpe:/h:d-link:$2/ cpe:/o:linux:linux_kernel/a
match upnp m|^HTTP/1\.0 404 Not Found\r\nSERVER: FAST Router (\w+) Router, UPnP/([\w.]+)\r\n| p/FAST $1 router UPnP $2/ d/router/
match upnp m|^HTTP/1\.0 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?SERVER: Linux/([\w._-]+) UPnP/([\w._-]+) myigd/([\w._-]+)\r\n|s p/myigd/ v/$3/ i/Linksys WAG354G router; Linux $1; UPnP $2/ d/WAP/ o/Linux/ cpe:/h:linksys:wag354g/a cpe:/o:linux:linux_kernel:$1/
match upnp m|^HTTP/1\.0 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?SERVER: Linux/([\w._-]+), UPnP/([\w._-]+), Everest/([\w._-]+)\r\n|s p/Everest/ v/$3/ i/Pelco Spectra Mini IP webcam; Linux $1; UPnP $2/ d/webcam/ o/Linux/ cpe:/o:linux:linux_kernel:$1/
match upnp m|^HTTP/1\.1 404 Bad Request\r\nCONTENT-LENGTH: 0\r\nCONTENT-TYPE: text/html\r\n\r\n$| p/SuperMicro IPMI UPnP/ cpe:/o:supermicro:intelligent_platform_management_firmware/
match upnp m|^HTTP/1\.1 404 Not Found\r\nDate: .*\r\nServer: Unknown/0\.0 UPnP/([\d.]+) Virata-EmWeb/([-.\w]+)\r\n| p/Virata-EmWeb/ v/$SUBST(2,"_",".")/ i/ReplayTV UPnP; UPnP $1/ cpe:/a:virata:emweb:$SUBST(2,"_",".")/a
match upnp m|^HTTP/1\.1 200 OK\r\nContent-Type: text/html\r\n(?:[^\r\n]+\r\n)*?Server: RomPager/([\w.]+) UPnP/([\w.]+)\r\n\r\n\n<html><head>.*<title>ZyXEL Prestige Router</title>|s p/Allegro RomPager/ v/$1/ i/ZyXEL Prestige router UPnP; UPnP $2/ d/router/ cpe:/a:allegro:rompager:$1/
match upnp m|^HTTP/1\.1 \d\d\d .*\r\nServer: NT/([\d.]+) UPnP/([\d.]+)\r\nDate: .*\r\nContent-type: text/html\r\n\r\n<html>\r\n<head>\r\n<title>HotBrick Load Balancer ([-\w_.]+)</title>\r\n| p/NT httpd/ v/$1/ i/HotBrick Load Balancer $3 UPnP; UPnP $2/ d/load balancer/
match upnp m|^HTTP/1\.1 \d\d\d .*\r\nServer: NT/([\d.]+) UPnP/([\d.]+)\r\nDate: .*\r\nContent-type: text/html\r\n\r\n<html>\r\n<head>\r\n<title>HotBrick Firewall VPN ([-\w_./]+)</title>| p/NT httpd/ v/$1/ i/HotBrick Firewall VPN $3 UPnP; UPnP $2/ d/firewall/
match upnp m|^HTTP/1\.1 200 OK\r\nServer: Unknown/[\d.]+ UPnP/([\d.]+) Virata-EmWeb/R([\d_]+)\r\nContent-Length: .*\r\n\r\n<HTML><HEAD><TITLE>Actiontec</TITLE>\n|s p/Virata-EmWeb/ v/$SUBST(2,"_",".")/ i/ActionTec DSL UPnP; UPnP $1/ d/broadband router/ cpe:/a:virata:emweb:$SUBST(2,"_",".")/a
match upnp m|^HTTP/1\.1 \d\d\d .*\r\nServer: Unknown/[\d.]+ UPnP/([\d.]+) GlobespanVirata-EmWeb/R([\d_]+)\r\nContent-Type: text/html\r\nExpires: .*\r\nCache-Control: no-cache\r\nPragma: no-cache\r\n\r\n<html>\n<head>\n<title>ADSL VPN Firewall Router</title>| p/Virata-EmWeb/ v/$SUBST(2,"_",".")/ i/Billion 741GE ADSL router UPnP; UPnP $1/ d/router/ cpe:/a:virata:emweb:$SUBST(2,"_",".")/a cpe:/h:billion:741ge/a
match upnp m|^HTTP/1\.1 \d\d\d .*\r\nServer: Unknown/[\d.]+ UPnP/([\d.]+) Virata-EmWeb/R([\d_]+)\r\nContent-Type: text/html\r\nExpires: .*\r\nCache-Control: no-cache\r\nPragma: no-cache\r\n\r\n\n<html>\n<head>\n<title>ADSL Configuration Page\n</title>| p/Virata-EmWeb/ v/$SUBST(2,"_",".")/ i/Telewell 715 DSL router UPnP; UPnP $1/ d/router/ cpe:/a:virata:emweb:$SUBST(2,"_",".")/a cpe:/h:telewell:715/a
match upnp m|^HTTP/1\.1 \d\d\d .*\r\nDATE: .*\r\nConnection: Keep-Alive\r\nServer: LINUX/([\d.]+) UPnP/([\d.]+) BRCM400/([\d.]+)\r\n| p|Belkin/Linksys wireless router UPnP| i/UPnP $2; BRCM400 $3/ d/router/ o/Linux $1/ cpe:/o:linux:linux_kernel:$1/a
match upnp m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: Unknown/[\d.]+ UPnP/([\d.]+) GlobespanVirata-EmWeb/R([\d_]+)\r\nContent-Type: text/html\r\n.*<title>CopperJet ([-\w+/.]+) Router VoATM</title>|s p/Virata-EmWeb/ v/$SUBST(2,"_",".")/ i/CopperJet $3 VoATM router UPnP; UPnP $1/ d/router/ cpe:/a:virata:emweb:$SUBST(2,"_",".")/a
match upnp m|^HTTP/1\.1 200 OK\r\nServer: Unknown/[\d.]+ UPnP/([\d.]+) GlobespanVirata-EmWeb/R([\d_]+)\r\nContent-Type: text/html\r\n.*<head>\n<title>Wireless ADSL VPN Firewall Router</title>\n|s p/GlobespanVirata-EmWeb/ v/$SUBST(2,"_",".")/ i/Billion BIPAC-743GE V1 ADSL WAP UPnP; UPnP $1/ d/WAP/
match upnp m|^HTTP/1\.1 301 Moved Permanently\r\nServer: Nucleus/([\d.]+) UPnP/([\d.]+) Virata-EmWeb/R([\d_]+)\r\nLocation: http://[\d.]+/hag/pages/home\.htm\r\n| p/Virata-EmWeb/ v/$SUBST(3,"_",".")/ i|Huawei/Intracom ADSL router UPnP; UPnP $2; Nucleus $1| d/broadband router/ cpe:/a:virata:emweb:$SUBST(3,"_",".")/a
match upnp m|^HTTP/1\.1 \d\d\d .*\r\nServer: Unknown/0\.0 UPnP/([\d.]+) GlobespanVirata-EmWeb/R([\d_]+)\r\nContent-Type: text/html\r\nExpires: .*\r\nCache-Control: no-cache\r\nPragma: no-cache\r\n\r\n<html>\n<head>\n<title>ADSL -modem/firewall/switch/WLAN -AP</title>\n| p/GlobespanVirata-EmWeb/ v/$SUBST(2,"_",".")/ i/Telewell TW-EA2000 ADSL modem UPnP; UPnP $1/ d/WAP/
match upnp m|^HTTP/1\.1 \d\d\d Server: Unknown/0\.0 UPnP/([\d.]+) Conexant-EmWeb/R([\d_]+)\r\n.*<TITLE>Siemens ([\w._ -]+) Router</TITLE>|s p/Conexant-EmWeb/ v/$SUBST(2,"_",".")/ i/Siemens $3 router UPnP; UPnP $1/ d/router/ cpe:/a:conexant:emweb:$SUBST(2,"_",".")/a cpe:/h:siemens:$3/a
match upnp m|^HTTP/1\.1 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: Unknown/0\.0 UPnP/([\d.]+) Conexant-EmWeb/R([\d_]+)\r\n.*<TITLE>Zoom - USB Endpoint</TITLE>.*<TITLE>Zoom DSL Modem Web-Console</TITLE>|s p/Conexant-EmWeb/ v/$SUBST(2,"_",".")/ i/Zoom A6 ADSL modem UPnP; UPnP $1/ d/broadband router/ cpe:/a:conexant:emweb:$SUBST(2,"_",".")/a cpe:/h:zoom:a6/a
match upnp m|^HTTP/1\.1 401 Unauthorized\r\nServer: Unknown/0\.0 UPnP/([\d.]+) GlobespanVirata-EmWeb/R([\d_]+)\r\nContent-Type: text/html\r\nExpires: .*\r\nCache-Control: no-cache\r\nPragma: no-cache\r\nWWW-Authenticate: Basic realm=\"WebAdmin\"\r\n\r\n\n\n<html>\n<head>\n\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/styles/default\.css\">\n\n<title>Authentication failed</title>\n\n</head>\n<body bgcolor=\"#ffffff\" link=\"#3300cc\" alink=\"#ff0000\" vlink=\"#990066\">\n\n| p/GlobespanVirata-EmWeb/ v/$SUBST(2,"_",".")/ i/Xavi 7768r WAP UPnP; UPnP $1/ d/WAP/
match upnp m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: Unknown/0\.0 UPnP/([\d.]+) Web Server\r\n.*<title>MT882 ADSL Router</title>|s p/Huawei SmartAX MT882 ADSL router UPnP/ i/UPnP $1/ d/broadband router/ cpe:/h:huawei:smartax_mt882/a
match upnp m|^HTTP/1\.1 \d\d\d .*\r\nServer: Nucleus/([-\w_.]+) UPnP/([\d.]+) Virata-EmWeb/R([\d_]+)\r\nWWW-Authenticate: Basic realm=\"MT882\"\r\n| p/Virata-EmWeb/ v/$SUBST(3,"_",".")/ i/Huawei SmartAX MT882 ADSL router UPnP; UPnP $2; Nucleus $1/ d/broadband router/ cpe:/a:virata:emweb:$SUBST(3,"_",".")/a cpe:/h:huawei:smartax_mt882/a
match upnp m|^HTTP/1\.1 \d\d\d .*\r\nServer: Nucleus/([\d.]+) UPnP/([\d.]+) Virata-EmWeb/R([\d_]+)\r\nWWW-Authenticate: Basic realm=\"Viking\"\r\n\r\n401 Unauthorized\r\n| p/Virata-EmWeb/ v/$SUBST(3,"_",".")/ i/Viking router UPnP; UPnP $2; Nucleus $1/ d/router/ cpe:/a:virata:emweb:$SUBST(3,"_",".")/a
match upnp m|^HTTP/1\.1 200 OK\r\nServer: Unknown/0\.0 UPnP/([\d.]+) Conexant-EmWeb/R([\d_]+)\r\nContent-Type: text/html\r\nExpires: .*<title>VoIP/802\.11g ADSL2\+ Firewall Router</title>\n|s p/Conexant-EmWeb/ v/$SUBST(2,"_",".")/ i|Billion ADSL/WAP/VoIP router UPnP; UPnP $1| d/router/ cpe:/a:conexant:emweb:$SUBST(2,"_",".")/a
match upnp m|^HTTP/1\.1 200 OK\r\nServer: Unknown/0\.0 UPnP/([\d.]+) Conexant-EmWeb/R([\d_]+)\r\nContent-Type: text/html\r\nExpires: .*<head>\n<title>Huawei xDSL\r\n</title>|s p/Conexant-EmWeb/ v/$SUBST(2,"_",".")/ i|Huawei ADSL/WAP/VoIP router UPnP; UPnP $1| d/router/ cpe:/a:conexant:emweb:$SUBST(2,"_",".")/a
match upnp m|^HTTP/1\.1 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: Unknown/0\.0 UPnP/([\d.]+) Conexant-EmWeb/R([\d_]+)\r\n.*<title>VoIP/802\.11g ADSL2\+ Firewall Router</title>|s p/Conexant-EmWeb/ v/$SUBST(2,"_",".")/ i/Billion 800VGT ADSL router UPnP; UPnP $1/ d/broadband router/ cpe:/a:conexant:emweb:$SUBST(2,"_",".")/a cpe:/h:billion:800vgt/a
match upnp m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: Unknown/0\.0 UPnP/([\d.]+) Virata-EmWeb/R([\d_]+)\r\n.*<title>Wireless ADSL Router Control Panel</title>|s p/Virata-EmWeb/ v/$SUBST(2,"_",".")/ i/Eminent EM4104 WAP UPnP; UPnP $1/ d/WAP/ cpe:/a:virata:emweb:$SUBST(2,"_",".")/a
match upnp m|^HTTP/1\.1 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: ISOS/([-\w_.]+) UPnP/([\d.]+) Conexant-EmWeb/R([\d_]+)\r\n.*<title>Scarlet One</title>|s p/Conexant-EmWeb/ v/$SUBST(3,"_",".")/ i/Scarlet One UPnP; UPnP $2; ISOS $1/ d/VoIP adapter/ cpe:/a:conexant:emweb:$SUBST(3,"_",".")/a
match upnp m|^HTTP/1\.1 401 Unauthorized\r\nServer: ISOS/([-\w_.]+) UPnP/([\d.]+) Conexant-EmWeb/R([\d_]+)\r\n| p/Conexant-EmWeb/ v/$SUBST(3,"_",".")/ i/ISOS $1; UPnP $2/ d/broadband router/ cpe:/a:conexant:emweb:$SUBST(3,"_",".")/a
match upnp m|^HTTP/1\.1 404 Not Found\r\nCONTENT-LENGTH: 48\r\nDATE: .*\r\nSERVER: Linux/6\.0 UPnP/([\d.]+) Intel UPnP/([\d.]+)\r\n\r\n<html><body><h1>404 Not Found</h1></body></html>$| p/Linksys WVC54GC webcam UPnP/ i/UPnP $1; Intel UPnP $2/ d/webcam/ o/Linux/ cpe:/h:linksys:wvc54gc/ cpe:/o:linux:linux_kernel/a
match upnp m|^HTTP/1\.1 200 OK\r\nServer: Unknown/0\.0 UPnP/([\w._-]+) GlobespanVirata-EmWeb/R([\w._-]+)\r\n.*<title>JetSpeed 500 i</title>|s p/GlobespanVirata-EmWeb/ v/$SUBST(2,"_",".")/ i/Intracom JetSpeed 500i UPnP; UPnP $1/ d/broadband router/
match upnp m|^HTTP/1\.1 401 Unauthorized\r\nServer: Nucleus/([\w._-]+) UPnP/([\w._-]+) Virata-EmWeb/R([\w._-]+)\r\nWWW-Authenticate: Basic realm=\"MT880\"\r\n\r\n\r\n| p/Virata-EmWeb/ v/$SUBST(3,"_",".")/ i/Huawei SmartAX MT880 DSL modem UPnP; UPnP $2; Nucleus $1/ d/broadband router/ cpe:/a:virata:emweb:$SUBST(3,"_",".")/a cpe:/h:huawei:smartax_mt880/a
match upnp m|^HTTP/1\.1 400 Bad Request\r\nServer: Linux, UPnP/([\d.]+), (AR\w+) Ver ([\d.]+)\r\n| p/Airlink 101 $2 WAP UPnP/ v/$3/ i/UPnP $1/ o/Linux/ cpe:/o:linux:linux_kernel/a
match upnp m|^HTTP/1\.1 200 OK\r\n(?:[^\r\n]+\r\n)*?SERVER: EPSON_Linux UPnP/([\d.]+) Epson UPnP SDK/([\d.]+)\r\n.*<title>WorkForce ([\w+]+)</title>|s p/Epson WorkForce $3 printer UPnP/ i/UPnP $1; Epson UPnP SDK $2/ d/printer/ o/Linux/ cpe:/h:epson:workforce_$3/ cpe:/o:linux:linux_kernel/a
match upnp m|^HTTP/1\.1 200 OK\r\n(?:[^\r\n]+\r\n)*?SERVER: EPSON_Linux UPnP/([\d.]+) Epson UPnP SDK/([\d.]+)\r\n.*<title>Artisan ([\w+]+)</title>|s p/Epson Artisan $3 printer UPnP/ i/UPnP $1; Epson UPnP SDK $2/ d/printer/ o/Linux/ cpe:/h:epson:artisan_$3/ cpe:/o:linux:linux_kernel/a
match upnp m=^HTTP/1\.1 200 OK\r\n.*SERVER: EPSON_Linux UPnP/([\d.]+) Epson UPnP SDK/([\d.]+)\r\n.*<title>(?:Epson )?(Stylus (?:Office |Photo )?\w+)</title>=s p/Epson $3 printer UPnP/ i/UPnP $1; Epson UPnP SDK $2/ d/printer/ o/Linux/ cpe:/h:epson:$3/ cpe:/o:linux:linux_kernel/
match upnp m|^HTTP/1\.1 200 OK\r\n(?:[^\r\n]+\r\n)*?SERVER: EPSON_Linux UPnP/([\d.]+) Epson UPnP SDK/([\d.]+)\r\n.*<meta name=\"Author\" content=\"SEIKO EPSON\">.*path\.indexOf\(\"/PRESENTATION/HTML/TOP/INDEX\.HTML\", 0\);|s p/Epson Stylus NX230 printer UPnP/ i/UPnP $1; Epson UPnP SDK $2/ d/printer/ o/Linux/ cpe:/h:epson:stylus_nx230/ cpe:/o:linux:linux_kernel/
match upnp m|^HTTP/1\.1 200 OK\r\n(?:[^\r\n]+\r\n)*?SERVER: EPSON_Linux UPnP/([\d.]+) Epson UPnP SDK/([\d.]+)\r\n\r\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4\.01//EN \"\r\n\"http://www\.w3\.org/TR/html4/strict\.dtd\">\r\n<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n<meta name=\"Author\" content=\"SEIKO EPSON\">|s p/Epson WorkForce WF-2540 printer UPnP/ i/UPnP $1; Epson UPnP SDK $2/ d/printer/ o/Linux/ cpe:/h:epson:wf-2540/ cpe:/o:linux:linux_kernel/
match upnp m|^HTTP/1\.1 401 Unauthorized\r\nServer: Unknown/0\.0 UPnP/([\d.]+) Conexant-EmWeb/R([\d_]+)\r\nContent-Type: text/html\r\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\r\n(?:[^\r\n]+\r\n)*?WWW-Authenticate: Basic realm=\"WebAdmin\"\r\n|s p/Conexant-EmWeb/ v/$SUBST(2,"_",".")/ i/Billion 740- or 7400-series ADSL router UPnP; UPnP $1/ d/WAP/ cpe:/a:conexant:emweb:$SUBST(2,"_",".")/a
match upnp m|^HTTP/1\.1 \d\d\d.*Server: Unknown/0\.0 UPnP/([\d.]+) Conexant-EmWeb/R([\d_]+)\r\n|s p/Conexant-EmWeb/ v/$SUBST(2,"_",".")/ i/UPnP $1/ cpe:/a:conexant:emweb:$SUBST(2,"_",".")/a
match upnp m|^HTTP/1\.1 511 Not Implemented\r\n\r\n$| p/Netgear WGU624 WAP UPnP/ d/WAP/ cpe:/h:netgear:wgu624/
match upnp m|^HTTP/1\.0 404 Not Found\r\nSERVER: PRONET (PN-\w+), UPnP/([\d.]+)\r\nCONTENT-LENGTH: 48\r\nCONTENT-TYPE: text/html\r\n\r\n<html><body><h1>404 Not Found</h1></body></html>$| p/Pronet $1 WAP UPnP/ i/UPnP $2/ d/WAP/ cpe:/h:pronet:$1/
match upnp m|^HTTP/1\.1 200 OK\r\nDate: .*\r\nServer: Linux/2\.x UPnP/([\w._-]+) Avtech/([\w._-]+)\r\nConnection: close\r\nLast-Modified: .*..\xbe\x40..\xbe..\x03\r\n|s p/Avtech surveillance camera http config/ v/$2/ i/Linux 2.X; UPnP $1/ o/Linux/ cpe:/o:linux:linux_kernel:2/
match upnp m|^HTTP/1\.1 200 OK\r\nDate: .*\r\nServer: Linux/2\.x UPnP/([\w._-]+) Avtech/([\w._-]+)\r\nConnection: close\r\nLast-Modified: .*\xb2\xe8\xbe\x1c\xb2\xe8\xbe\x38\x62\x03\r\n| p/Avtech CPCAM surveillance camera http config/ v/$2/ i/Linux 2.X; UPnP $1/ o/Linux/ cpe:/o:linux:linux_kernel:2/
match upnp m|^HTTP/1\.1 404 Not Found\r\nConnection: close\r\nDate: .* GMT\r\nServer: RTOS/([\w._-]+) UPnP/([\w._]+) ([\w._-]+)\s*/([\w._-]+)\r\nX-AV-Server-Info: av=5\.0; cn=\"Sony Corporation\"; mn=\"BRAVIA | p/Sony Bravia $3 TV DLNA/ v/$4/ i/UPnP $2/ d/media device/ o/RTOS $1/ cpe:/h:sony:bravia_$3:$4/ cpe:/o:greenhills:rtos:$1/
match upnp m|^HTTP/1\.1 400 Bad Request\r\nConnection: close\r\nDate: .*\r\nX-AV-Client-Info: av=5\.0; cn="Sony Corporation"; mn="BRAVIA (KD-[^"]+)";| p/Sony Bravia $1 TV DLNA/ cpe:/h:sony:bravia_$1/
match upnp m|^HTTP/1\.1 400 Bad Request\r\nContent-Type: \r\nContent-Length: 0\r\nConnection: close\r\n\r\n| p/AllShare UPnP/ o/Bada/ cpe:/o:samsung:bada:1.2/
match upnp m|^HTTP/1\.1 \d\d\d .*\r\nDate: .*\r\nServer: Linux/i686 UPnP/([\d.]+) DLNADOC/([\d.]+) LGE_DLNA_SDK/([\d.]+)\r\n| p/LG TV upnp/ i/UPnP $1; DLNADOC $2; LGE_DLNA_SDK $3/ o/Linux/ cpe:/o:linux:linux_kernel/a
match upnp m|^HTTP/1\.1 \d\d\d .*\r\nSERVER: Linux/([\w._-]+) UPnP/([\w._-]+) DLNADOC/([\w._-]+) INTEL_NMPR/([\w._-]+) LGE_DLNA_SDK/([\w._-]+)\r\n| p/LG LW5700 TV upnp/ i/UPnP $2; DLNADOC $3; INTEL_NMPR $4; LGE_DLNA_SDK $5/ d/media device/ o/Linux $1/ cpe:/h:lg:lw5700/ cpe:/o:linux:linux_kernel:$1/
match upnp m|^HTTP/1\.1 500 Internal server error\r\nDATE: .* GMT\r\nSERVER: OpenRG/([\w._-]+) UPnP/([\w._-]+) Actiontec/RG_VERSION\r\nCONNECTION: close\r\n\r\n$| p/Jungo OpenRG upnp/ v/$1/ i/UPnP $2/
# E303s-2, K4201
match upnp m|^HTTP/1\.0 404 Not Found\r\nSERVER: PACKAGE_VERSION HUAWEI, UPnP, HUAWEI SDK for UPnP devices/  \r\nCONTENT-LENGTH: 48\r\nCONTENT-TYPE: text/html\r\n\r\n<html><body><h1>404 Not Found</h1></body></html>$| p/Huawei broadband router upnp/ d/broadband router/ o/VxWorks/ cpe:/o:huawei:vxworks/
match upnp m|^HTTP/1\.1 400 Bad Request\r\nContent-Type: text/html; charset=\"utf-8\"\r\nServer: Linux/([\w._-]+) CyberHTTP/([\d.]+)\r\nContent-Length: 0\r\nDate: .*\r\n\r\n| p/CyberLink upnp/ v/$2/ o/Linux $1/ cpe:/o:linux:linux_kernel:$1/
match upnp m|^HTTP/1\.1 404 Not Found\r\nDATE: .*\r\nConnection: Keep-Alive\r\nServer: LINUX/([\w._-]+) UPnP/([\d.]+) BRCM400-UPnP/([\d.]+)\r\n| p/Broadcom upnpd/ v/$3/ i/UPnP $2/ o/Linux $1/ cpe:/o:linux:linux_kernel:$1/
match upnp m|^HTTP/1\.1 404 Not Found\r\nServer: NFLC/([\w._-]+) UPnP/([\w._-]+) DLNADOC/([\w._-]+)\r\n| p/NetFront Living Connect upnpd/ v/$1/ i/UPnP $2; DLNADOC $3/
match upnp m|^HTTP/1\.1 200 OK\r\n(?:[^\r\n]+\r\n)*?SERVER: XboxUpnp/([\w._-]+) UPnP/([\w._-]+) Xbox/2\.0\.(\d+)\.0\r\n|s p/Microsoft Xbox 360 upnpd/ v/$1/ i/UPnP $2; Xbox Dashboard 2.0.$3.0/ o/Xbox 360/ cpe:/h:microsoft:xbox_360_kernel:$3/
match upnp m|^HTTP/1\.1 404 Not Found\r\nSERVER: Linux/([\w._-]+) UPnP/([\w._-]+) Motorola-DLNA-Stack-DLNADOC/([\w._-]+)\r\n| p/Motorola DLNA Stack upnpd/ i/UPnP $2; DLNA $3/ o/Linux $1/ cpe:/o:linux:linux_kernel:$1/
match upnp m|^HTTP/1\.0 404 Not Found\r\nSERVER: ipos/([\w._-]+) UPnP/([\w._-]+) (RNX-[\w._-]+)/1\.0\r\n| p/ipOS upnpd/ i/Rosewill $3; UPnP $2/ d/broadband router/ o/ipOS $1/ cpe:/h:rosewill:$3/ cpe:/o:ubicom:ipos:$1/
match upnp m|^HTTP/1\.0 404 Not Found\r\nSERVER: ipos/([\w._-]+) UPnP/([\w._-]+) (TL-[\w._-]+)/1\.0\r\n| p/ipOS upnpd/ i/TP-LINK $3; UPnP $2/ d/broadband router/ o/ipOS $1/ cpe:/h:tp-link:$3/ cpe:/o:ubicom:ipos:$1/
match upnp m|^HTTP/1\.1 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: UPnP/([\w._-]+) DLNADOC/([\w._-]+) Allwinnertech/([\w._-]+)\r\n\r\n|s p/AllWinner upnpd/ v/$3/ i/UPnP $1; DLNADOC $2/
match upnp m|^HTTP/1\.1 200 OK\r\nContent-Type: text/html\r\nConnection: close\r\nContent-Length: \d+\r\nServer: Linux (([234]\.[\d.]+)[\w._-]+) DLNADOC/([\w._-]+) UPnP/([\w._-]+) ReadyDLNA/([\w._-]+)\r\n| p/ReadyDLNA/ v/$5/ i/Linux $1; DLNADOC $3; UPnP $4/ o/Linux/ cpe:/o:linux:linux_kernel:$2/
match upnp m|^HTTP/1\.0 404 Not Found\r\nSERVER: Roteador Wireless (WR\w+), UPnP/([\d.]+)\r\n| p/Intelbras $1 upnpd/ i/UPnP $2/ d/WAP/
match upnp m|^HTTP/1\.0 500 Internal Server Error\r\nContent-Type: text/xml\r\nContent-Language: en\r\nServer: WinRoute ([\w._-]+) UPnP/([\w._-]+) module\r\n| p/Kerio WinRoute UPnP module/ v/$1/ i/UPnP $2/ o/Windows/ cpe:/o:microsoft:windows/a
match upnp m|^HTTP/1\.1 (?:[^\r\n]*\r\n(?!\r\n))*?SERVER: IPI/([\w._-]+) UPnP/([\w._-]+) DLNADOC/([\w._-]+)\r\n|s p/IPI Media Renderer upnpd/ v/$1/ i/UPnP $2; DLNADOC $3/ cpe:/a:ip_infusion:media_renderer:$1/
match upnp m|^HTTP/1\.1 400 Bad Request\r\nConnection: close\r\nDate: .*\r\nX-AV-Client-Info: av=5\.0; cn=\"Sony Ericsson\"; mn=\"([^"]+)\"; mv=\"2\.0\";\r\n\r\n| p/Sony Ericsson $1 UPnP AV client/ d/phone/
match upnp m|^HTTP/1\.0 404 Not Found\r\nSERVER: Wireless [\w+] Router ([\w._-]+), UPnP/1\.0\r\n| p/TP-LINK $1 upnpd/ d/WAP/ cpe:/h:tp-link:$1/
match upnp m|^HTTP/1\.1 200 OK\r\nContent-Length: \d+\r\nContent-Type: text/html\r\nDate: .* GMT\r\nRealTimeInfo\.dlna\.org: DLNA\.ORG_TLAG=\*\r\nSERVER: BH\r\n\r\n| p|Osmosys BH/DLNA Media Server| d/media device/ cpe:/a:osmosys:bh_dlna_media_server/
match upnp m|^HTTP/1\.0 404 Not Found\r\nContent-Type: text/xml\r\nConnection: close\r\nContent-Length: 127\r\nServer: \w+ Wireless [\w/] Router ([\w-]+), UPnP/1\.0\r\n\r\n<HTML><HEAD><TITLE>404 Not Found</TITLE></HEAD><BODY><H1>Not Found</H1>Invalid device or service descriptor !\r\n</BODY></HTML>\r\n| p/Fast $1 WAP upnpd/ d/WAP/ cpe:/h:fast:$1/
match upnp m=^HTTP/1\.1 400 Bad Request\r\nS(?:ERVER|erver): HDHomeRun/([\w._-]+) UPnP/([\w._-]+)\r\n= p/SiliconDust HDHomeRun set top box upnpd/ v/$1/ i/UPnP $2/ d/media device/ cpe:/h:silicondust:hdhomerun/
match upnp m|^HTTP/1\.0 404 Not Found\r\nSERVER: Linux/([\w._-]+) UPnP/([\d.]+) NDS_MHF DLNADOC/([\d.]+)\r\n\r\n| p/Samsung UPC Horizon TV upnpd/ i/Linux $1; UPnP $2; DLNADOC $3/ d/media device/ o/Linux/ cpe:/o:linux:linux_kernel:$1/a
match upnp m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Content-type: text/html\r\nServer: Linux UPnP/([\d.]+) Sonos/([\w._-]+) \(([^)]+)\)\r\nConnection: close\r\n\r\n|s p/Sonos upnpd/ v/$2/ i/UPnP $1; model $3/ o/Linux/ cpe:/o:linux:linux_kernel/a
# formerly XBMC
match upnp m|^HTTP/1\.1 (?:[^\r\n]*\r\n(?!\r\n))*?Server: UPnP/([\d.]+) DLNADOC/([\d.]+) Kodi\r\n|s p/Kodi upnpd/ i/UPnP $1; DLNADOC $2/
match upnp m=^HTTP/1\.1 404 Not Found\r\nSERVER: Linux/((2\.[46]\.\d+|\d\.\d+)\S*) UPnP/([\d.]+) DiXiM/([\d.]+)\r\n= p/DiXiM upnpd/ v/$4/ i/UPnP $3; Linux $1/ o/Linux/ cpe:/a:digion:dixim_media_player:$4/ cpe:/o:linux:linux_kernel:$2/
match upnp m=HTTP/1\.0 404 Not Found\r\nSERVER: TP-LINK (?:Portable )?Wireless (?:(?:Lite )?(?:N|G) (?:3G(?:/4G)? )?)?(?:Dual Band |Nano )?(?:Gigabit )?(?:AP|Router|Access Point|Range Extender) ([\w /+-]+), UPnP/([\d.]+)\r\n= p/TP-LINK $1 WAP upnpd/ i/UPnP $2/ d/WAP/ cpe:/h:tp-link:$1/a
match upnp m|^HTTP/1\.1 400 Bad Request\r\nServer: Linux, UPnP/([\d.]+), (DAP-\d+) Ver ([\d.]+)\r\n| p/D-Link $2 WAP upnpd/ v/$3/ i/UPnP $1/ cpe:/h:dlink:$2/a
match upnp m|^HTTP/1\.1 412 Precondition Failed\r\nDate: .*\r\nContent-Length: 0\r\nConnection: close\r\nServer: ([^,]+), UPnP/([\d.]+) DLNADOC/([\d.]+), KooRaRoo Media Server/([\d.]+)\r\n\r\n| p/KooRaRoo upnpd/ v/$4/ i/UPnP $2; DLNADOC $3/ o/$1/ cpe:/a:shv-tal:kooraroo:$4/
# Unsure of device type, have seen this one on P6 phone.
match upnp m|^HTTP/1\.1 400 Bad Request\r\nSERVER: Linux/([\d.]+)-\w+-\w+ UPnP/([\d.]+) HUAWEI_iCOS/iCOS V1R1C00\r\nCONNECTION: close\r\nCONTENT-LENGTH: 50\r\nCONTENT-TYPE: text/html\r\n\r\n<html><body><h1>400 Bad Request</h1></body></html>| p/Huawei iCOS upnpd/ i/UPnP $2/ o/Linux $1/ cpe:/o:linux:linux_kernel:$1/a
match upnp m|^HTTP/1\.0 400 Bad Request \r\nCONTENT-TYPE: text/xml; charset="utf-8" \r\nSERVER: UPnP/([\d.]+) Samsung AllShare Server/([\d.]+) \r\nCONTENT-LENGTH: \d+ \r\n\r\n| p/Samsung AllShare upnpd/ v/$2/ i/UPnP $1/ cpe:/a:samsung:allshare_server:$2/
match upnp m|^HTTP/1\.1 \d\d\d .*\r\nCONTENT-TYPE: text/xml; charset="utf-8"\r\nDATE: .*\r\nEXT: \r\nSERVER: UPnP/([\d.]+) AwoX/([\d.]+)\r\nCONTENT-LENGTH: 0\r\n| p/AwoX upnpd/ v/$2/ i/UPnP $1/
match upnp m|^HTTP/1\.0 \d\d\d .*\r\nSERVER: TP-LINK SMB (TL-[\w]+), UPnP/([\d.]+)\r\nCONTENT-LENGTH: \d+\r\nCONTENT-TYPE: text/html\r\n\r\n| p/TP-LINK upnpd/ i/model: $1; UPnP $2/ cpe:/h:tp-link:$1/
match upnp m|^HTTP/1\.0 \d\d\d .*\r\nSERVER: AIT Multimedia Network Solution, UPnP/([\d.]+) devices/([\d.]+)\r\n| p/AIT Multimedia Network Solution/ v/$2/ i/UPnP $1; Polaroid Cube camera/
match upnp m=^HTTP/1\.1 200 OK\r.*\nS(?:erver|ERVER): (Windows_[^-]+)_(R\d+)-([^-]+)-[\d.]+, UPnP/([\d.]+), UMS/([\d.]+)\r\n=s p/Universal Media Server/ v/$5/ i/arch: $3; UPnP $4/ o/$SUBST(1,"_"," ") $2/ cpe:/a:universal_media_server:universal_media_server:$5/ cpe:/o:microsoft:$1:$2/
match upnp m=^HTTP/1\.1 200 OK\r.*\nS(?:erver|ERVER): (Windows_[^-]+)-([^-]+)-[\d.]+, UPnP/([\d.]+), UMS/([\d.]+)\r\n=s p/Universal Media Server/ v/$4/ i/arch: $2; UPnP $3/ o/$SUBST(1,"_"," ")/ cpe:/a:universal_media_server:universal_media_server:$4/ cpe:/o:microsoft:$1/
match upnp m=^HTTP/1\.1 200 OK\r.*\nS(?:erver|ERVER): Linux-([^-]+)-(\d.[\w._-]+), UPnP/([\d.]+), UMS/([\d.]+)\r\n=s p/Universal Media Server/ v/$4/ i/arch: $1; UPnP $3/ o/Linux $2/ cpe:/a:universal_media_server:universal_media_server:$4/ cpe:/o:linux:linux_kernel:$2/a
match upnp m=^HTTP/1\.1 200 OK\r.*\nS(?:erver|ERVER): Linux-([^-]+)-(\d.[\w._-]+), UPnP/([\d.]+) DLNADOC/([\d.]+), UMS/([\d.]+)\r\n=s p/Universal Media Server/ v/$5/ i/arch: $1; UPnP $3; DLNADOC $4/ o/Linux $2/ cpe:/a:universal_media_server:universal_media_server:$4/ cpe:/o:linux:linux_kernel:$2/a
match upnp m=^HTTP/1\.1 200 OK\r.*\nS(?:erver|ERVER): Mac_OS_X-([^-]+)-(\d.[\w._-]+), UPnP/([\d.]+), UMS/([\d.]+)\r\n=s p/Universal Media Server/ v/$4/ i/arch: $1; UPnP $3/ o/Mac OS X $2/ cpe:/a:universal_media_server:universal_media_server:$4/ cpe:/o:apple:mac_os_x:$2/
match upnp m|^HTTP/1\.1 412 Failed\r\nServer: WINDOWS UPnP/([\d.]+) Intel MicroStack/([\d.]+)\r\nContent-Length: 0\r\n\r\n| p/Intel Developer Tools for UPnP upnpd/ v/$2/ i/UPnP $1/ o/Windows/ cpe:/a:intel:developer_tools_for_upnp:$2/ cpe:/o:microsoft:windows/a
match upnp m|^HTTP/1\.1 200 OK\r\nDate: Sun, 31 Jul 2016 13:02:01 GMT\r\nServer: Linux/([ix][\w_]+) UPnP/([\d.]+) SST/1\.0 /\r\n| p/LG SST Device upnpd/ i/UPnP $2; arch: $1/
match upnp m|^HTTP/1\.1 \d\d\d .*\r\nDLNADeviceName\.lge\.com: %5bLG%5d%20webOS%20TV%20([\w-]+)\r\nDate: .*\r\nServer: Linux/i686 UPnP/([\d,.]+) DLNADOC/([\d.]+) LGE WebOS TV/Version ([\d.]+)\r\n| p/LG WebOS TV upnpd/ i/model: $1; WebOS $4; UPnP $SUBST(2,",","."); DLNADOC $3/ d/media device/ o/Linux/ cpe:/h:lg:$1/ cpe:/o:linux:linux_kernel/a
match upnp m|^HTTP/1\.1 \d\d\d .*\r\nDate: .*\r\nServer: Neptune/([\d.]+)\r\nDLNADeviceName\.lge\.com: %5bTV%5d%5bLG%5d([\w-]+)\r\n| p/Platinum upnpd/ i/LG TV model: $2; Neptune $1/ d/media device/ o/Linux/ cpe:/a:plutinosoft:neptune:$1/ cpe:/a:plutinosoft:platinum/ cpe:/h:lg:$2/ cpe:/o:linux:linux_kernel/a
match upnp m|^HTTP/1\.1 200 OK\r\nCONTENT-TYPE:  text/xml; charset="utf-8"\r\nServer: Mac OS X, UPnP/([\d.]+), Elgato EyeConnect/([\d.]+)\r\n\r\n<\?xml version="1\.0" encoding="utf-8"\?>\n.*<friendlyName>EyeConnect \(([\w._-]+)\)</friendlyName>|s p/Elgato EyeConnect media server upnpd/ v/$2/ i/UPnP $1/ o/OS X/ h/$3/ cpe:/a:elgato:eyeconnect:$2/ cpe:/o:apple:mac_os_x/a
match upnp m|^HTTP/1\.1 200 OK\r\nContent-Type: text/xml\r\nDate: [^\r\n]*\r\nExpires: [^\r\n]*\r\nLast-Modified: [^\r\n]*\r\nPragma: no-cache\r\nServer: WebServer/1\.0 UPnP/([\d.]+)\r\n\r\n<\?xml version="1\.0"\?>\n.*<manufacturer>ZTE</manufacturer>\n.*<modelName>([^<]+)</modelName>|s p/ZTE $2 router upnpd/ i/UPnP $1/ d/broadband router/ cpe:/h:zte:$2/a
match upnp m|^HTTP/1\.0 500 Internal Server Error\r\nSERVER: Unspecified, UPnP/([\d.]+), SoftAtHome\r\n| p/SoftAtHome upnpd/ i/UPnP $1/
match upnp m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: Linux_Android_ARM/4\.0 UPnP/([\d.]+) DLNADOC/([\d.]+) EShare/([\d.]+)\r\n|s p/EShare upnpd/ v/$3/ i/UPnP $1; DLNADOC $2/ o/Android/ cpe:/o:google:android/a cpe:/o:linux:linux_kernel/a
match upnp m|^HTTP/1\.1 200 OK\r\nDate: .*\r\nServer: WebOS/([\d.]+) UPnP/([\d.]+)\r\n.*<manufacturer>LG Electronics</manufacturer>|s p/LG WebOS upnpd/ i/WebOS $1; UPnP $2/ d/media device/
# Several internet radios
match upnp m|^HTTP/1\.1 412 Failed\r\nServer: FSL DLNADOC/([\d.]+) UPnP Stack/1\.0\r\nContent-Length: 0\r\n\r\n| p/FSL upnpd/ i/DLNADOC $1/ d/media device/
match upnp m|^HTTP/1\.1 412 Precondition Failed\r\nDate: .*\r\nContent-Length: 0\r\nConnection: close\r\nServer: Audi-MIB2HIGH-(G\d+)/([\d.]+) DLNADOC/([\d.]+)/1\r\n\r\n| p/Audi MIB High $1 entertainment system/ v/$2/ i/DLNADOC $3/
match upnp m|^HTTP/1\.1 200 OK\r\nCONTENT-TYPE: text/xml\r\nContent-Length: \d+\r\n\r\n<\?xml version="1\.0" encoding="utf-8"\?>\r\n<root xmlns="urn:schemas-upnp-org:device-1-0">\r\n.*<friendlyName>Stream What You Hear \(([^)]+)\):|s p/Stream What You Hear unpnd/ o/Windows/ h/$1/ cpe:/a:sebastian_warin:streamwhatyouhear/ cpe:/o:microsoft:windows/a
match upnp m|^HTTP/1\.0 200 OK\r\nContent-Type: text/html\r\nContent-Length: \d+\r\nAccept-Ranges: bytes\r\nConnection: close\r\nDATE: .*\r\ncontentFeatures\.dlna\.org: \r\ntransferMode\.dlna\.org: \r\nEXT:\r\nServer: Linux/(\d[\d.]+)SR[\d_]+, UPnP/([\d.]+), SmartStor Media Server/([\d.]+)\r\n\r\n<\?xml version="1\.0" encoding="UTF-8"\?>\n<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1\.0 Strict//EN" \nhttp://www\.w3\.org/TR/xhtml1/DTD/xhtml1-strict\.dtd">\n<html>\n<script :language="javascript">\nthis\.location = "http://[^"]*"\n</script>\n<h1>system information</h1>\n<p>\nVersion: [\d.]+<br />\nHostname: ([\w.-]+)<br />\nOS: Linux [^<]*<br />\nSQLite: ([\d.]+)\n</p>| p/Promise SmartStor Media Server/ v/$3/ i/UPnP $2; SQLite $5/ d/storage-misc/ o/Linux $1/ h/$4/ cpe:/a:promise:smartstor_media_server:$3/ cpe:/a:sqlite:sqlite:$5/ cpe:/o:linux:linux_kernel:$1/a

softmatch upnp m|^HTTP/1.[01] \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server:[^\r\n]*UPnP/1.0|si

match upnp m|^HTTP/1\.1 200 OK\r\ncontent-length: \d+\r\nDate: .*\r\nConnection: close\r\n\r\n<\?xml version="1\.0"\?>\n<root xmlns="urn:schemas-wink-com:device-1-0">\n<specVersion>\n<major>1</major>\n<minor>0</minor>\n</specVersion>\n<URLBase>https://[^<]+</URLBase>\n<device>\n<deviceType>urn:wink-com:device:hub:([^<:]+)</deviceType>\n| p/Wink Hub $1 API httpd/ d/specialized/ cpe:/h:wink:hub_$1/
match upnp m|^HTTP/1\.0 200 OK\nCache-Control: no-cache\nExpires: -1\nDate: \d\d\d\d/\d\d/\d\d \d\d:\d\d:\d\d\.\d+\n.*<deviceType>urn:domotz:fingbox:([\d.]+)<|s p/Domotz Fingbox upnpd/ v/$1/ cpe:/a:domotz:fingbox_agent:$1/
softmatch upnp m|^HTTP/1\.[01].*xmlns=["']urn:schemas-upnp-org:device-1-0["']|s

# UUCP 1.06.2 on Linux 2.4.X
# Taylor UUCP 1.06.2 on Slackware
match uucp m|^login: Password:$| p/Taylor uucpd/
# uucico prompt does not have space after "Password:",
# but Debian-contributed in.uucpd calls pam_authenticate, which does.
match uucp m|^login: Password: $| p/Debian in.uucpd, probably Taylor uucpd/ i/PAM auth/ o/Linux/ cpe:/o:debian:debian_linux/ cpe:/o:linux:linux_kernel/
match uucp m|^login: Login incorrect\.$| p/Solaris uucpd/ o/Solaris/ cpe:/o:sun:sunos/a

# Veritas Netbackup client v.3.4
# Veritas Netbackup 4.5 Java listener
match netbackup m|^1000      2\n43\nunexpected message received\n$| p/Veritas Netbackup java listener/ cpe:/a:symantec:veritas_netbackup/

# Veritas Backup Exec 9.0 on Windows
match ndmp m|^\x80\0\0\$\0\0\0\x01....\0\0\0\0\0\0\x05\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0|s p/Veritas Backup Exec ndmp/ v/9.0/ cpe:/a:symantec:veritas_backup_exec:9.0/
# Possibly a different version? -Doug
match ndmp m|^\x80\0\0\$\0\0\0\x01....\0\0\0\0\0\0\x05\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\0\0\0|s p/Veritas Backup Exec ndmp/ cpe:/a:symantec:veritas_backup_exec/

# DAZ Studio 4.5, port 27997
match valentinadb m|^dddd\0\0\0\0\0\0\0\x0b\xf2\xf2\xf2\xf2\0\0\0_\0\0\0\0\0\0\0\0\0\0\0\0\0F\0\0\0\x02\0\0\0=\0\x08%\x15\0\0\0\x1a\0R\0e\0c\0e\0i\0v\0e\0d\0 \0p\0a\0c\0k\0e\0t\0 \0i\0s\0 \0b\0r\0o\0k\0e\0n\0\.\0\xf4\xf4\xf4\xf4| p/Valentina DB/

match vnc-http m|^HTTP/1\.1 200 OK\r\nServer: RealVNC/([-.\w]+)\r\n.*<APPLET CODE="?vncviewer/VNCViewer\.class"? ARCHIVE="?vncviewer\.jar"?\r?\n *WIDTH="?(\d+)"? HEIGHT="?(\d+)"?>\r?\n<PARAM name=\"port\" value=\"(\d+)\">\r?\n</APPLET>|si p/RealVNC/ v/$1/ i/resolution: $2x$3; VNC TCP port: $4/ cpe:/a:realvnc:realvnc:$1/
# Sometimes extra HTTP crap pushes the extra info out of the header we capture:
match vnc-http m|^HTTP/1\.1 200 OK\r\nServer: RealVNC/([-.\w]+)\r\n| p/RealVNC/ v/$1/ cpe:/a:realvnc:realvnc:$1/
match vnc-http m|^HTTP/1\.1 200 OK\r\nServer: RealVNC-x0vncserver/([\w._ ()-]+)\r\n.*<applet code=\"vncviewer/VNCViewer\.class\" archive=\"vncviewer\.jar\"\n        width=\"(\d+)\" height=\"(\d+)\">\n<param name=\"port\" value=\"(\d+)\">|s p/RealVNC x0vncserver/ v/$1/ i/resolution: $2x$3; VNC TCP port $4/ cpe:/a:realvnc:realvnc:$1/

match vnc-http m|^HTTP/1\.1 200 OK\r\nServer: VNC Server Enterprise Edition/E([\w._-]+) \(r(\d+)\)\r\n.*<applet code=\"vncviewer/VNCViewer\.class\" archive=\"vncviewer\.jar\"\r\n        width=\"(\d+)\" height=\"(\d+)\">\r\n<param name=\"port\" value=\"(\d+)\">|s p/VNC Server Enterprise Edition httpd/ v/$1 r$2/ i/resolution: $3x$4; VNC port $5/ cpe:/a:realvnc:realvnc:$1::enterprise/
match vnc-http m|^HTTP/1\.1 200 OK\r\nServer: VNC Server Personal Edition/P([\w._-]+) \(r(\d+)\)\r\n.*<applet code=\"vncviewer/VNCViewer\.class\" archive=\"vncviewer\.jar\"\r\n        width=\"(\d+)\" height=\"(\d+)\">\r\n<param name=\"port\" value=\"(\d+)\">|s p/VNC Server Personal Edition httpd/ v/$1 r$2/ i/resolution: $3x$4; VNC port $5/ cpe:/a:realvnc:realvnc:$1::personal/

# RealVNC Unknown Version
match vnc-http m|^HTTP/1\.0 200 OK\n\n<HTML><TITLE>VNC desktop</TITLE>\n<APPLET CODE=vncviewer\.class ARCHIVE=vncviewer\.jar WIDTH=(\d+) HEIGHT=(\d+)>\n<param name=PORT value=(\d+)></APPLET></HTML>\n| p/RealVNC/ i/resolution: $1x$2; VNC TCP port: $3/ cpe:/a:realvnc:realvnc/

# TightVNC Server version 1.2.2 HTTP on Windows 2000 SP2
match vnc-http m|^HTTP/1\.0 200 OK\n\n<HTML><TITLE>TightVNC desktop \[([-.\w]+)\]</TITLE>\n<APPLET CODE=vncviewer\.class ARCHIVE=vncviewer\.jar WIDTH=(\d+) HEIGHT=(\d+)>\n<param name=PORT value=(\d+)>| p/TightVNC/ v/1.2.2/ i/resolution: $2x$3; VNC TCP port: $4/ h/$1/ cpe:/a:tightvnc:tightvnc:1.2.2/a
# Tightvnc-1.2.3
match vnc-http m|^HTTP/1\.0 404 Not found\n\n<HEAD><TITLE>File Not Found</TITLE></HEAD>\n<BODY><H1>File Not Found</H1></BODY>\n$| p/TightVNC/ cpe:/a:tightvnc:tightvnc/a
# Tightvnc 1.2.3
match vnc-http m|^HTTP/1\.0 200 OK\n\n<HTML><TITLE>TightVNC desktop \[([-.\w]+)\]</TITLE>\n<APPLET CODE=VncViewer\.class ARCHIVE=VncViewer\.jar WIDTH=(\d+) HEIGHT=(\d+)>\n<param name=PORT value=(\d+)>| p/TightVNC/ v/1.2.3/ i/user: $1; resolution: $2x$3; VNC TCP port: $4/ cpe:/a:tightvnc:tightvnc:1.2.3/a
# TightVNC 1.2.6
match vnc-http m|^HTTP/1\.0 200 OK\n\n<HTML>\n  <HEAD><TITLE>TightVNC desktop \[[-.\w]+\]| p/TightVNC/ cpe:/a:tightvnc:tightvnc/a
# TightVNC 1.2.8
match vnc-http m|^HTTP/1\.0 200 OK[\r\n]*.*<!-- \n     index\.vnc - default HTML page for TightVNC Java viewer applet, to be\n     used with Xvnc\. On any file ending in \.vnc, the HTTP server embedded in\n     Xvnc will substitute the following variables when preceded by a dollar:\n     USER, DESKTOP, DISPLAY, APPLETWIDTH, APPLETHEIGHT, WIDTH, HEIGHT, PORT,\n.*<TITLE>\n(\w+)'s X desktop.*<APPLET CODE=VncViewer\.class ARCHIVE=VncViewer\.jar\n        WIDTH=(\d+) HEIGHT=(\d+)>\n<param name=PORT value=(\d+)>\n\n</APPLET>|s p/TightVNC/ v/1.2.8/ i/user: $1; resolution: $2x$3; VNC TCP port: $4/ cpe:/a:tightvnc:tightvnc:1.2.8/a
# TightVNC 1.2.8 - I guess it gets cut off sometimes?
match vnc-http m|^HTTP/1\.0 200 OK[\r\n]*.*<!-- \n     index\.vnc - default HTML page for TightVNC Java viewer applet, to be\n     used with Xvnc\. On any file ending in \.vnc, the HTTP server embedded in\n     Xvnc will substitute the following variables when preceded by a dollar:\n     USER, DESKTOP, DISPLAY, APPLETWIDTH, APPLETHEIGHT, WIDTH, HEIGHT, PORT,\n|s p/TightVNC/ v/1.2.8/ cpe:/a:tightvnc:tightvnc:1.2.8/a
# TightVNC 1.2.9
match vnc-http m|^HTTP/1\.0 200 OK\n.*<HTML><HEAD><TITLE>Remote Desktop</TITLE></HEAD>\n<BODY>\n<APPLET CODE=VncViewer\.class ARCHIVE=VncViewer\.jar WIDTH=(\d+) HEIGHT=(\d+)>\n\t<param name=PORT value=(\d+)>\n</APPLET>\n</BODY></HTML>\n|s p/TightVNC/ v/1.2.9/ i/resolution: $1x$2; VNC TCP port $3/ cpe:/a:tightvnc:tightvnc:1.2.9/a
# NetWare VNCServer
match vnc-http m|^HTTP/1\.0 200 OK\n.*<!-- \r\n     index\.vnc - default HTML page for TightVNC Java viewer applet, to be.*<TITLE>\r\n([\d\w]+) - NetWare VNCServer desktop.*<APPLET CODE=VncViewer\.class ARCHIVE=VncViewer\.jar\r\n *WIDTH=(\d+) HEIGHT=(\d+)>\r\n<param name=PORT value=(\d+)>|s p/NetWare VNC Desktop/ i/user: $1; resolution: $2x$3; VNC TCP port: $4/
# WinVNC 3.3.7 Build Mar 5 2003
match vnc-http m|^HTTP/1\.0 200 OK\r\n\r\n<HTML><TITLE>VNC desktop \[([-.\w]+)\]</TITLE>\n<APPLET CODE=vncviewer\.class ARCHIVE=vncviewer\.jar WIDTH=(\d+) HEIGHT=(\d+)>\n<param name=PORT value=(\d+)| p/WinVNC/ v/3.3.7/ i/Server: $1; resolution: $2x$3; VNC TCP port: $4/
# WinVNC 3.3.3
# Tight VNC 1.5.2
match vnc-http m|^HTTP/1\.0 200 OK\n\n<HTML><TITLE>VNC desktop \[([-.\w]+)\]</TITLE>\n<APPLET CODE=vncviewer\.class ARCHIVE=vncviewer\.jar WIDTH=(\d+) HEIGHT=(\d+)>\n<param name=PORT value=(\d+)></APPLET></HTML>\n$| p/WinVNC/ i/Server: $1; resolution: $2x$3; VNC TCP port: $4; May be standard or TightVNC/
match vnc-http m|^HTTP/1\.1 200 OK\r\nConnection: close\r\n\r\n<HTML>\r\n  <HEAD><TITLE>Siemens Sm@rtClient Desktop \[WinVNC\]</TITLE></HEAD>\r\n  <BODY>\r\n<APPLET CODE=VncViewer\.class ARCHIVE=VncViewer\.jar WIDTH=(\d+) HEIGHT=(\d+)>\r\n           <PARAM NAME=\"PORT\" VALUE=\"(\d+)\">\r\n    </APPLET><BR>\r\n  </BODY>\r\n</HTML>\r\n| p/WinVNC/ i/Siemens Sm@rtClient Desktop; resolution $1x$2; VNC TCP port: $3/
# Ultr@VNC Win32 v1.0.9 - HTTP
match vnc-http m|^HTTP/1\.0 200 OK\n\n<HTML>\n  <HEAD><TITLE>Ultr@VNC Desktop \[[-. \w]+\] ------- Ultr@VNC Home Page is  http://ultravnc\.sf\.net -------</TITLE></HEAD>\n  <BODY>\n  <SPAN style='position: absolute; top:0px;left:0px'>\n    <APPLET CODE=VncViewer\.class ARCHIVE=VncViewer\.jar WIDTH=(\d+) HEIGHT=(\d+)>\n      <PARAM NAME=PORT VALUE=(\d+)>\n      <PARAM NAME=ENCODING VALUE=Tight>\n    </APPLET>  </SPAN>\n  </BODY>\n| p/Ultr@VNC/ i/resolution: $1x$2; VNC TCP port: $3/ cpe:/a:ultravnc:ultravnc/
match vnc-http m|^HTTP/1\.0 200 OK\n\n<HTML>\n  <HEAD><TITLE> \[([-. \w]+)\] </TITLE></HEAD>\n  <BODY>\n  <SPAN style='position: absolute; top:0px;left:0px'>\n    <APPLET CODE=VncViewer\.class ARCHIVE=VncViewer\.jar WIDTH=(\d+) HEIGHT=(\d+)>\n      <PARAM NAME=PORT VALUE=(\d+)>\n      <PARAM NAME=ENCODING VALUE=Tight>\n    </APPLET>  </SPAN>\n  </BODY>\n</HTML>\n| p/Ultr@VNC/ i/Name $1; resolution: $2x$3; VNC TCP port: $4/ cpe:/a:ultravnc:ultravnc/
match vnc-http m|^HTTP/1\.0 200 OK\n\n<HTML>\n  <HEAD><TITLE> \[([-. \w]+)\] </TITLE></HEAD>\n  <BODY>\n  <SPAN style='position: absolute; top:0px;left:0px'>\n<OBJECT \n    ID='VncViewer'\n.*WIDTH = (\d+) HEIGHT = (\d+) >.*<PARAM NAME = PORT VALUE=(\d+)>|s p/Ultr@VNC/ i/Name $1; resolution: $2x$3; VNC TCP port: $4/ cpe:/a:ultravnc:ultravnc/
# VNC to java display applet over http. Final AT&T release
match vnc-http m|^HTTP/1\.0 200 .*<!-- index\.vnc - default html page for Java VNC viewer applet.*<TITLE>\n([\w._-]+)'s .*<APPLET CODE=vncviewer\.class ARCHIVE=vncviewer\.jar.*WIDTH=(\d+).*HEIGHT=(\d+).*name=PORT value=(\d+)|s p/AT&T VNC/ i/user: $1; resolution: $2x$3; VNC TCP port $4/
match vnc-http m|^HTTP/1\.0 200 OK\r\n.*<!-- index\.vnc - default html page for Java VNC viewer applet\..*<TITLE>\n\?'s Android desktop \(([\w._-]+):1\)\n</TITLE>\n<APPLET CODE=VncViewer\.class ARCHIVE=VncViewer\.jar\n        WIDTH=(\d+) HEIGHT=(\d+)>\n<param name=PORT value=(\d+)>.*Further help: <BR>\n<A href=\"http://onaips\.blogspot\.com/\">oNaiPs Blog</A><BR>\n<A href=\"http://www\.tightvnc\.com/\">www\.TightVNC\.com</A>\n</HTML>\n$|s p/Android VNC Server/ i/resolution: $2x$3; VNC TCP port $4/ h/$1/
# KDE Built-in VNC Server
match vnc-http m|^HTTP/1\.0 200 OK\n.*<HTML><HEAD><TITLE>(.*)'s desktop</TITLE></HEAD>\n<BODY>\n<APPLET CODE=(?:vncviewer/)?[vV][nN][cC][vV]iewer\.class ARCHIVE=[vV]nc[vV]iewer\.jar WIDTH=(\d+) HEIGHT=(\d+)>\n\t<param name=PORT value=(\d+)>\n</APPLET>\n</BODY></HTML>\n|s p/Synergy VNC/ i/user: $1; resolution: $2x$3; VNC TCP port: $4/
match vnc-http m|^HTTP/1\.0 200 OK\n\n.*<TITLE>eSVNC Desktop \[([\w._-]+)\]</TITLE>.*<APPLET CODE=VncViewer\.class ARCHIVE=VncViewer\.jar WIDTH=(\d+) HEIGHT=(\d+)>.*<PARAM NAME=PORT VALUE=(\d+)>|s p/eSVNC/ i/resolution: $2x$3; VNC TCP port $4/ h/$1/
match vnc-http m|^HTTP/1\.0 200 OK\r\n.*<TITLE>\n([\w._-]+)'s [\w._:-]+ desktop \([\w._:-]+\)\n</TITLE>\n<APPLET CODE=VncViewer\.class ARCHIVE=VncViewer\.jar\n        WIDTH=(\d+) HEIGHT=(\d+)>\n<param name=PORT value=(\d+)>\n<param name=\"Open New Window\" value=yes>\n</APPLET>\n<BR>\n<A href=\"http://www\.tightvnc\.com/\">|s p/X11VNC/ i/user: $1; Resolution $2x$3; VNC TCP port: $4/
match vnc-http m|^HTTP/1\.0 200 OK\r\n.*<TITLE>TightVNC desktop \[([\w._-]+)\]</TITLE>.*<APPLET ARCHIVE=\"VncViewer\.jar\" CODE=VncViewer WIDTH=1 HEIGHT=1>\n      <PARAM NAME=\"PORT\" VALUE=\"(\d+)\">\n      <PARAM NAME=\"Open new window\" VALUE=\"YES\">\n\n    </APPLET><BR>\n    <A HREF=\"http://www\.tightvnc\.com/\">|s p/TightVNC/ i/user: $1; VNC TCP port: $2/ cpe:/a:tightvnc:tightvnc/a
match vnc-http m|^HTTP/1\.0 200 OK\r\n.*<TITLE>TightVNC desktop \[([\w._-]+)\]</TITLE>.*<APPLET ARCHIVE=\"tightvnc-jviewer\.jar\" CODE=\"com\.glavsoft\.viewer\.Viewer\" WIDTH=1 HEIGHT=1>\n      <PARAM NAME=\"PORT\" VALUE=\"(\d+)\">\n      <PARAM NAME=\"OpenNewWindow\" VALUE=\"YES\">\n\n    </APPLET><BR>\n    <A HREF=\"http://www\.tightvnc\.com/\">|s p/TightVNC/ i/user: $1; VNC TCP port: $2/ cpe:/a:tightvnc:tightvnc/a
# match vnc-http m|^HTTP/1\.0 200 OK\r\n.*<TITLE>TightVNC desktop \[([\w._-]+)\]</TITLE>.*<APPLET ARCHIVE=\"tightvnc-jviewer\.jar\" CODE=\"com\.glavsoft\.viewer\.Viewer\" WIDTH=1 HEIGHT=1>\n      <PARAM NAME=\"PORT\" VALUE=\"(\d+)\">\n      <PARAM NAME=\"OpenNewWindow\" VALUE=\"YES\">\n\n    </APPLET><BR>\n    <A HREF=\"http://www\.tightvnc\.com/\">www\.TightVNC\.com</A>\n  </BODY>\n</HTML>\n| p/xxx/
match vnc-http m|^HTTP/1\.0 200 OK\r\n.*<TITLE>GeekBuddyRSP desktop \[([^]]+)\]</TITLE>.*<APPLET ARCHIVE=\"tightvnc-jviewer\.jar\" CODE=\"com\.glavsoft\.viewer\.Viewer\" WIDTH=1 HEIGHT=1>\n      <PARAM NAME=\"PORT\" VALUE=\"(\d+)\">\n|s p/TightVNC/ i/Comodo GeekBuddy; user: $1; VNC TCP port: $2/ cpe:/a:tightvnc:tightvnc/a
match vnc-http m|^HTTP/1\.0 200 OK\n\n<HTML>\n<TITLE>VNC desktop \[[\d.]+\]</TITLE>\n<APPLET CODE=vncviewer\.class ARCHIVE=vncviewer\.jar WIDTH=(\d+) HEIGHT=(\d+)>\n<param name=PORT value=(\d+)>\n</APPLET>\n</HTML>\n| p/Wyse Winterm 1200 LE terminal/ i/resolution: $1x$2; VNC TCP port $3/ d/terminal/
match vnc-http m|^HTTP/1\.1 \d\d\d .*\r\nServer: TigerVNC/([\w._-]+)\r\n| p/TigerVNC/ v/$1/ cpe:/a:tigervnc:tigervnc:$1/
match vnc-http m|^HTTP/1\.0 404 Not found\r\n\r\n<html><head><title>File Not Found</title></head>\n<body><h1>File Not Found</h1></body></html\n$| p/x11vnc/
match vnc-http m|^HTTP/1\.0 200 OK\n\n<HTML>\n  <HEAD><TITLE> \[[\w._-]+\] </TITLE></HEAD>\n  <BODY>\n  <SPAN style='position: absolute; top:0px;left:0px'>\n<OBJECT \n    ID='AxedaDesktopViewer'\n    classid = 'clsid:8AD9C840-044E-11D1-B3E9-00805F499D93'\n    codebase = 'http://java\.sun\.com/update/1\.4\.2/jinstall-1_4-windows-i586\.cab#Version=1,4,0,0'\n    WIDTH = (\d+) HEIGHT = (\d+) >\n| p/Axeda Desktop Viewer/ i/Resolution $1x$2/
# looks like rebranded TightVNC
match vnc-http m|^HTTP/1\.0 200 OK.*<!-- index\.vnc - default html page for Java VNC viewer applet\.  On any file\n     ending in \.vnc, the HTTP server embedded in Xvnc will substitute the\n     following variables when preceded by a dollar: USER, DESKTOP, DISPLAY,.*<TITLE>\n(\w+)'s Android desktop.*<APPLET CODE=VncViewer\.class ARCHIVE=java-applet/VncViewer\.jar\n        WIDTH=(\d+) HEIGHT=(\d+)>\n<param name=PORT value=(\d+)>|s p/Droid VNC Server/ v/1.1RC0/ i/user: $1; resolution: $2x$3; VNC TCP port: $4/
match vnc-http m|^HTTP/1\.0 200 OK\nContent-Type: text/html\nContent-Length: \d+\nConnection: close\n\n\n<HTML><HEAD><TITLE>Remote Desktop</TITLE></HEAD>\n<BODY>\n<APPLET CODE="com\.tigervnc\.vncviewer\.VncViewer" ARCHIVE="VncViewer\.jar"| p/TigerVNC/ cpe:/a:tigervnc:tigervnc/

match vzagent m|^<packet xmlns:xsi=\"http://www\.w3\.org/2001/XMLSchema-instance\" id=\"0\" priority=\"0\" version=\"([\d.]+)\">\n<origin>[\w._-]+</origin>\n<target>agent</target>\n<data>\n<ok/>\n<eid>[\w._-]+</eid>\n</data>\n</packet>\n\0| p/Parallels Virtuozzo Agent/ i/protocol $1/

match ripbot m|^200 Welcome\r\n400-Unknown Command\r\n400 GET / HTTP/1\.0\r\n$| p/RipBot video encoding server/

match xml-rpc m|^HTTP/1\.0 400 Bad Request\r\nServer: Apache XML-RPC (\d[-.\w ]+)\r\n\r\nMethod GET not implemented \(try POST\)$| p/Apache XML-RPC/ v/$1/
match xml-rpc m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: XMLRPC_ABYSS/Xmlrpc-c ([\w._-]+)\r\n|s p/ABYSS httpd/ i/Xmlrpc-c $1/
match xml-rpc m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: XMLRPC_ABYSS/([\w._-]+)\r\n|s p/ABYSS httpd/ i/Xmlrpc-c $1/
match xml-rpc m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: Xmlrpc-c_Abyss/([\w._-]+)\r\n|s p/ABYSS httpd/ i/Xmlrpc-c $1/
match xml-rpc m|^HTTP/1\.1 404 Not Found\r\nServer: Atheme/([\w._-]+)\r\nContent-Type: text/plain\r\nContent-Length: 24\r\n\r\nHTTP/1\.1 404 Not Found\r\n| p/Atheme IRC Services/ v/$1/ cpe:/a:atheme:atheme:$1/

# Kerio MailServer
match http m|^HTTP/1\.[01] 302 Redirected\r\nConnection: close\r\nContent-Length: 0\r\nLocation: /login\r\n\r\n$| p/Kerio MailServer Webmail/
match http m|^HTTP/1\.1 302 Found\r\nConnection: Close\r\nContent-Length: 0\r\nContent-type: text/html\r\nDate: .*\r\nLocation: https?:///webmail/login/\r\nX-UA-Compatible: IE=8\r\n\r\n| p/Kerio MailServer Webmail/
match http m|^HTTP/1\.[01] (?:[^\r\n]*\r\n(?!\r\n))*?Server: Kerio MailServer ([\d.]+)\r\n(?:[^\r\n]+\r\n)*?X-Powered-By: PHP/([\d.]+)\r\n|s p/Kerio MailServer Webmail/ v/$1/ i/PHP $2/ cpe:/a:php:php:$2/
match http m|^HTTP/1\.[01] (?:[^\r\n]*\r\n(?!\r\n))*?Server: Kerio MailServer ([\d.]+)\r\n|s p/Kerio MailServer Webmail/ v/$1/
match http m|^HTTP/1\.1 302 Found\r\nConnection: Close\r\nContent-Length: 0\r\n(?:[^\r\n]+\r\n)*?Location: https?:///([\w._-]+)/login\.php\r\nServer: Kerio MailServer ([^\r\n]+)\r\n\r\n$|s p/Kerio MailServer Webmail/ v/$2/ h/$1/
match http m|^HTTP/1\.1 302 Redirected\r\nConnection: close\r\nContent-Length: 0\r\nLocation: /login\r\n\r\n$| p/Kerio MailServer Webmail/

match http m|^HTTP/1\.0\x20250\x20Ok\r\n.*<title>PowerMTA monitoring</title>|s p/Port25 PowerMTA web monitor/

# Dell OpenManage Version 3.5.0 on MS Windows 2000 server / PowerEdge 6400/700
match http m|^HTTP/1\.1 200 OK\r\nConnection: Close\r\nContent-Type: text/html; charset=UTF-8\r\n\r\n<html>\r\n    <head>\r\n        <script language=\"javascript\">\r\n\t\t\t\t\tif| p/Dell PowerEdge OpenManage Server Administrator httpd admin/ o/Windows/ cpe:/a:dell:openmanage_server_administrator/ cpe:/o:microsoft:windows/a
match http m|^HTTP/1\.0 200 OK\r\n(?:[^\r\n]+\r\n)*?Content-Type: text/html; charset=UTF-8\r\n(?:[^\r\n]+\r\n)*?\r\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1\.0 Strict//EN\" \"http://www\.w3\.org/TR/xhtml1/DTD/xhtml1-strict\.dtd\">\n<html>\n<head>\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n<title>Open Manage&trade;</title>\n|s p/Dell PowerEdge OpenManage Server Administrator httpd admin/ o/Windows/ cpe:/a:dell:openmanage_server_administrator/ cpe:/o:microsoft:windows/a
match http m|^HTTP/1\.0 200 OK\r\n(?:[^\r\n]+\r\n)*?Content-Type: text/html; charset=UTF-8\r\n(?:[^\r\n]+\r\n)*?\r\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1\.0 Strict//EN\" \"http://www\.w3\.org/TR/xhtml1/DTD/xhtml1-strict\.dtd\">\r\n<html>\r\n<head>\r\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n<title>Open Manage&trade;</title>\r\n|s p/Dell PowerEdge OpenManage Server Administrator httpd admin/ o/Windows/ cpe:/a:dell:openmanage_server_administrator/ cpe:/o:microsoft:windows/a
# OpenManage version 5.2; these have to match on Javascript which kinda sucks...
match http m|^HTTP/1\.0 200 OK\r\nConnection: Close\r\nContent-Type: text/html; charset=UTF-8\r\n\r\n<html>.*QueryString\.keys\[QueryString\.keys\.length\] = argname;|s p/Dell PowerEdge OpenManage Server Administrator httpd/ o/Windows/ cpe:/a:dell:openmanage_server_administrator/ cpe:/o:microsoft:windows/a
match http m|HTTP/1\.0 200 OK\r\nConnection: Close\r\nContent-Type: text/html; charset=UTF-8\r\n\r\n<html>.*for \(var i = 0; i < QueryString\.keys\.length; i\+\+\) {\n|s p/Dell PowerEdge OpenManage Server Administrator httpd/ o/Windows/ cpe:/a:dell:openmanage_server_administrator/ cpe:/o:microsoft:windows/a

# ASPI server (www.aspi.cz) on Solaris 6666/tcp
match aspi m|^HTTP/1\.0 404 Not Found\r\nDate: .*\r\nServer: ByllSoftware Gurda/([\d.]+)\r\n| p/ASPI server/ v/$1/ o/Solaris/ cpe:/o:sun:sunos/a
match sunscreen-adm m|^\x01\0\0\0\0\0\0\0T\x03\0\0\0\0\0\x01\x1e\0\0\0\0\0\0;\0\0\0\0\0\0\0\0Error: incompatible with administration server \(version (\d[-.\w ]*)\)\nc\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0$| p/SunScreen Remote Administration server/ v/$1/

# PopChartServer
match http m|^HTTP/1\.0 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: PopChartServer ([\d.]+)\r\n|s p/PopChart Pro/ v/$1/
match http m|^HTTP/1\.0 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: CordaServer \(PopChartServer compatible\) ([\d.]+)\r\n|s p/CordaServer/ v/$1/

match http m|^HTTP/1\.0 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: WebSTAR/([\d.]+) ID/\d+\r\n|s p/WebSTAR/ v/$1/
match http m|^HTTP/1\.1 200 OK\r\nServer: INEOQUEST/([\d.]+)\r\nConnection: close\r\nSet-Cookie:|s p/IneoQuest Video Diagnostic HTTP/ v/$1/

match honeypot m|^HTTP/1\.0 401 Unauthorized\r\n\r\n<BODY><HTML><H1>401 - Authorization Failed</H1></HTML></BODY>\0| p/Network Flight Recorder BackOfficer Friendly http honeypot/
match honeypot m|^\r\nHTTP/1\.1 404 Not Found\r\nConnection: close\r\nContent-Type: text/html\r\nContent-Length: 36\r\nServer: IIS 5\.0\r\n\r\nErro\. URL n\xe3o encontrada no servidor| p/Valhalla honeypot/

# Maybe too specific?
match ilo-vm m|^#\0\x04\0$| p/HP Integrated Lights-Out Virtual Media/ cpe:/h:hp:integrated_lights-out/

# curl -k -H "X-Iota-API-Version: 1" -d '{"command":"getNodeInfo"}'
match iota-api m|^HTTP/1\.0 400 Bad Request\r\nConnection: close\r\nAccess-Control-Allow-Origin: \*\r\nKeep-Alive: timeout=500, max=100\r\nContent-Type: application/json\r\nContent-Length: 44\r\nDate: .*\r\n\r\n\{"error":"Invalid API Version","duration":0\}| p/IOTA Node API/

match remoting m|^\.NET\x01\0\x02\0\0\0\0\0\0\0\x02\0\x03\x01\0\x03\0\x01\x01..\0\0Server encountered an internal error\. To get more info turn on customErrors in the server's config file\.\x05\0\0\0\0|s p/MS .NET Remoting services/ cpe:/a:microsoft:.net_framework/
match remoting m|^\.NET\x01\0\x02\0\0\0\0\0\0\0\x02\0\x03\x01\0\x03\0\x01\x01..\0\0System\.Runtime\.Remoting\.RemotingException: Tcp channel protocol violation: expecting preamble\.\r\n|s p/MS .NET Remoting services/ cpe:/a:microsoft:.net_framework/

# Version 3.2.0
match wbem m|^HTTP/1\.0 405 Method not allowed: Method not allowed by server: GET\r\nDate: .*\r\nCache-Control: no-cache\r\nServer: / \(CIMOM\)\r\nContent-Length: 0\r\n\r\n| p/OpenWBEM/

match webdav m|^HTTP/1\.0 302 Found\r\nConnection: Close\r\nDate: .*\r\nLocation: /ui/core/index\.html\r\n\r\n$| p/Tonido WebDAV/
match webdav m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?nEtag: -?\d+_-?\d+\r\nContent-Length: \d+\r\nDate: [^\r\n]+ GMT\+00:00\r\n\r\n<html><head><script type=\"text/javascript\" language=\"javascript1\.1\">\n    var fNewDoc = false;\n  </script>\n  <script LANGUAGE=\"VBSCRIPT\">\n|s p/The Olive Tree WebDAV Server/ o/Android/ cpe:/a:theolivetree:webdavserver/ cpe:/o:google:android/a cpe:/o:linux:linux_kernel/a
match webdav m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: WsgiDAV/(\d[\w._-]*) CherryPy/(\d[\w._-]+) Python/(\d[\w._-]+)\r\n|s p/WsgiDAV/ v/$1/ i/CherryPy $2; Python $3/ cpe:/a:cherrypy:cherrypy:$2/ cpe:/a:martin_wendt:wsgidav:$1/ cpe:/a:python:python:$3/

match websocket m|^HTTP/1\.1 200 OK\r\n(?:Date: .*\r\n)?Connection: close\r\n\r\nWelcome to socket\.io\.| p/socket.io/
match websocket m|^HTTP/1\.1 200 OK\r\ncontent-type: text/plain; charset=UTF-8\r\nDate: .*\r\nConnection: close\r\n\r\nWelcome to SockJS!\n| p/SockJS/
match websocket m|^HTTP/1\.0 426 Upgrade Required\r\nX-Supported-WebSocket-Versions: ([\d, ]+)\r\nServer: OverSIP/([\w._-]+)\r\n\r\n| p/OverSIP/ v/$2/ i/WebSocket versions: $1/
# Version: 10.0.5.7
match websocket m|^HTTP/1\.1 400 Bad Request\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Version: 8, 13\r\n\r\n$| p/DeskCenter WorkerService/ i/WebSocket versions: 8, 13/ cpe:/a:deskcenter:deskcenter_management_suite/
match websocket m|^HTTP/1\.1 426 Upgrade Required\r\nContent-Length: 16\r\nContent-Type: text/plain\r\nDate: .* GMT\r\nConnection: close\r\n\r\nUpgrade Required$| p/Ogar agar.io server/ cpe:/a:devin_ryan:ogar/
match websocket m|^HTTP/1\.0 404 Not Found\r\nserver: libwebsockets\r\ncontent-type: text/html\r\n\r\n<html><body><h1>404</h1></body></html>| p/libwebsockets/ cpe:/a:lws-team:libwebsockets/
match websocket m|^HTTP/1\.0 200 \r\nserver: libwebsockets\r\ncontent-type| p/libwebsockets/ cpe:/a:lws-team:libwebsockets/
match websocket m|^HTTP/1\.1 400 Bad Request\r\n\r\nnot a WebSocket handshake request: missing upgrade| p/Neo4j Bolt protocol/ cpe:/a:neo4j:neo4j/
match websocket m|^HTTP/1\.1 [24]00(?: OK)?\r\n.* GMT\r\nUser-Agent: LOOLWSD WOPI Agent\r\n| p/LibreOffice Online WebSocket server/ cpe:/a:libreoffice:libreoffice/
match websocket m|^HTTP/1\.1 400 HTTP Host header missing in opening handshake request\r\n\r\n| p/Autobahn WAMP server/ cpe:/a:crossbario:autobahn/
match websocket m|^HTTP/1\.1 404 WebSocket Upgrade Failure\r\nContent-Type: text/html\nServer: TooTallNate Java-WebSocket\r\n| p/Java-WebSocket/ cpe:/a:tootallnate:java-websocket/
softmatch websocket m|^HTTP/1\.1 101 Web Socket Protocol Handshake\r\n|
softmatch websocket m|^HTTP/1\.1 400 Bad Request\r\n(?:[^\r\n]+\r\n)*?Sec-WebSocket-Version: (\d+)\r\n|s i/WebSocket version: $1/

match whois m|^Process query: 'GET  HTTP1\.0'\n\n\nNo lookup service available for your query 'GET  HTTP1\.0'\.\ngwhois remarks: If this is a valid domainname or handle, please file a bug report\.\n\n\n\n\n-- \n  To resolve one of the above handles:   OTOH offical handles should be recognised directly\.\n  Please report errors or misfits via the debian bug tracking system\.\n$| p/gwhois/
match whois m|^\n\r\nJava Whois Server ([\w._-]+)    \(c\) \d+ - \d+ Klaus Zerwes zero-sys\.net\r\n\n| p/Java Whois Server/ v/$1/
match whois m|^This is JWhoisServer serving ccTLD ([\w._-]+)\r\nJava Whois Server ([\w._-]+)    \(c\) \d+ - \d+ Klaus Zerwes zero-sys\.net\r\n| p/Java Whois Server/ v/$2/ i/serving ccTLD $1/

match winagents-hyperconf m|^ROSC: Invalid connection string$| p/WinAgents HyperConf configuration management/ o/Windows/ cpe:/o:microsoft:windows/a

# Also callbook?
match winbox m|^\x01\0\0\0\x02\0\0| p/MikroTik WinBox management console/

# Version 2.1.0
match wsman m|^HTTP/1\.1 501 Method Not Implemented\r\n\r\n501 Method Not Implemented| p/Openwsman/
match ws-discovery m|^HTTP/1\.1 400 Bad Request$| p/Ricoh WS Discovery/ d/printer/

match xmpp m|^</stream:stream>$| p/Wildfire XMPP Client/
match xmpp m|^Use XMPP$| p/Trixbox HUD xmpp/ cpe:/a:fonality:hud/

match printer m|^An lpd test connection was completed successfully\r\n|s p/Lexmark lpd service/ d/printer/
match printer m|^Invalid protocol request \(71\): GGET / HTTP/1\.0\r\n\n$| p/Sun Solaris lpd/ o/Solaris/ cpe:/o:sun:sunos/a

# Västgöta-Data, but not sure how to encode those characters for CPE.
match zftp-admin m|^220 \.\r\n500 ' / HTTP/1\.0': command not understood\.\r\n| p/zFTPServer admin/ o/Windows/ cpe:/a:vaestgoeta-data:zftpserver/ cpe:/o:microsoft:windows/a
match zftp-admin m|^220 \.\r\n500 'GET / HTTP/1\.0': command not understood\.\r\n| p/zFTPServer admin/ o/Windows/ cpe:/a:vaestgoeta-data:zftpserver/ cpe:/o:microsoft:windows/a


match mmouse m|^HTTP/1\.0\x20200\x20OK\x20\n\x20Server:\x20Mobile\x20Air\x20Mouse\x20Server\x20\n\x20Content-Type:\x20text/html\x20\n\x20Content-Length:\x20344\n\n<HTML><HEAD><TITLE>Success!</TITLE><meta\x20name=\"viewport\"\x20content=\"width=device-width,user-scalable=no\"\x20/></HEAD><BODY\x20BGCOLOR=#000000><br><br><p\x20style=\"font:12pt\x20arial,geneva,sans-serif;\x20text-align:center;\x20color:green;\x20font-weight:bold;\"\x20>The\x20Mobile\x20Air\x20Mouse\x20server\x20running\x20on\x20\"([^\"]*)\"\x20was\x20able\x20to\x20receive\x20your\x20request\.</p></BODY></HTML>$| p/Mobile Air Mouse/ i/server name: $1/

softmatch rtsp m|^RTSP/1.0 .*\r\n|

# Know the device, but not the service. Port 515.
# match unknown m|^\x02| p/Conceptronics CPSERVU print server/ d/print server/

# Alert (Level: Fatal, Description: Protocol Version|Handshake Failure)
match ssl m|^\x15\x03[\x00-\x04]\0\x02\x02[F\x28]|

# These are pretty general, so keep at the end.
# "bad" values chosen to avoid matching SSL
match msdtc m|^[^\x15\x16][^\x03].\0..$|s p/Microsoft Distributed Transaction Coordinator/ o/Windows/ cpe:/o:microsoft:windows/a
match msdtc m|^..\x0a\0x\x01$|s p/Microsoft Distributed Transaction Coordinator/ o/Windows/ cpe:/o:microsoft:windows/a
match msdtc m|^ERROR\n$|s p/Microsoft Distributed Transaction Coordinator/ i/error/ o/Windows/ cpe:/o:microsoft:windows/a

# Place hard matched Apache banners above this line
# (?!400) prevents matching 400 error, which can be result of SSL-only listener
softmatch http m|^HTTP/1\.[01] (?!400)\d\d\d.*\r\nDate: .*\r\nServer: Apache ([^\r\n]+)\r\n| p/Apache httpd/ i/$1/ cpe:/a:apache:http_server/

match http m|^HTTP/1\.1 \d\d\d \w+\r\ncontent-type: application/json\r\ncontent-length: \d+\r\n\r\n{\n  \"ok\" : \w+,\n  \"status\" : \d+,\n  \"name\" : \"[^\"]+\",\n  \"cluster_name\" : \"([^\"]+)\",\n  \"version\" : {\n    \"number\" : \"([\d.]+)\",\n    \"build_hash\" : \"[^\"]+\",\n    \"build_timestamp\" : \"[^\"]+\",\n    \"build_snapshot\" : \w+,\n    \"lucene_version\" : \"([\d.]+)\"\n  }\n}\n$|s p/Crate.io CrateDB/ v/$2/ i/Cluster name: $1, Lucene version: $3/

##############################NEXT PROBE##############################
Probe TCP HTTPOptions q|OPTIONS / HTTP/1.0\r\n\r\n|
rarity 4
ports 80-85,2301,631,641,3128,5232,6000,8080,8888,9999,10000,10031,37435,49400
sslports 443,4443,8443
fallback GetRequest

match apollo-server m=^0000000001(?:3C|C0)0000$= p/Apollo Server database access/

match caldav m|^HTTP/1\.1 200 OK\r\nServer: DavMail Gateway ([\w._-]+)\r\nDAV: 1, calendar-access, calendar-schedule, calendarserver-private-events, addressbook\r\n| p/DavMail CalDAV http gateway/ v/$1/ d/proxy server/

# IRIX 6.5.18f Distributed GL Daemon dgld
match dgld m|^OPTI$| p/IRIX Distributed GL Daemon/ o/IRIX/ cpe:/o:sgi:irix/a

match docker m|^HTTP/1\.0 200 OK\r\nApi-Version: ([\d.]+)\r\nDocker-Experimental: false\r\nOstype: (.+)\r\nServer: Docker/(\d[\w.-]*) \(.*\)\r\nDate: .*\r\nContent-Length: 0\r\n\r\n| p/Docker remote API/ v/$3/ i/API $1/ o/$2/ cpe:/a:docker:docker:$3/
match ets2 m|^\xff\xfe\\\0n\0e\0w\0f\0r\0e\0i\0g\0h\0t\0 \0E\0u\0r\0o\0 \0T\0r\0u\0c\0k\0 \0S\0i\0m\0u\0l\0a\0t\0o\0r\0 \x002\0;([^;]+);| p/newfreight Euro Truck Simulator 2/ i/level: $P(1)/ cpe:/a:scs_software:euro_truck_simulator_2/
# Webmaster Conferenceroom 1.8.9.1 IRC Server
match irc m|(^:[-.\w]+) 421 \* OPTIONS :Unknown command\r\n| p/Webmaster Conferenceroom IRC server/ h/$1/

# Seems sometimes CUPS doesn't respond to GET
match ipp m|^HTTP/1\.0 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: CUPS/([-\w_.]+)|s p/CUPS/ v/$1/ cpe:/a:apple:cups:$1/

#  cgi-httpd from shttpd-0.53 on FreeBSD
match http m|^HTTP/1\.0 501 method not implemented\r\nServer: cgi-httpd\r\n| p/shttpd cgi-httpd/

match http m|^HTTP/1\.1 \d\d\d .*\r\nServer: WebSphere Application Server/(.+)\r\n| p/IBM WebSphere Application Server/ v/$1/ cpe:/a:ibm:websphere_application_server:$1/
match http m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: Oracle HTTP Server Powered by Apache\r\n|s p/Oracle HTTP Server Powered by Apache/ cpe:/a:oracle:http_server/
match http m|^HTTP/1\.1 \d\d\d .*\r\nServer: webfs/(\d[-.\w]+)\r\n| p/WebFS httpd/ v/$1/

match http m|^HTTP/1\.1 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: Microsoft-IIS/([\d.]+)\r\n|s p/Microsoft IIS httpd/ v/$1/ o/Windows/ cpe:/a:microsoft:internet_information_services:$1/ cpe:/o:microsoft:windows/a
match http m|^HTTP/1\.1 503 Service Unavailable\r\nContent-Type: text/html\r\nDate: .*\r\nConnection: close\r\nContent-Length: 28\r\n\r\n<h1>Service Unavailable</h1>| p/Microsoft IIS httpd/ o/Windows/ cpe:/a:microsoft:internet_information_services/ cpe:/o:microsoft:windows/a

# A whole bunch of these.. All on win32
match http m|^HTTP/1\.0 510 Not Extended\r\nDate: .*\r\nServer: CompaqHTTPServer/([\d.]+)\r\n| p/Compaq Diagnostics httpd/ i/CompaqHTTPServer $1/ cpe:/a:hp:compaqhttpserver:$1/
# HP Linux System Management, PSP 7.30 on Linux 2.4
match http m|^HTTP/1\.1 302 Found\r\nDate: .*\r\nServer: CompaqHTTPServer/([\d.]+) HP System Management Homepage/([\d.]+)\r\n| p/HP System Management Homepage/ v/$2/ i/CompaqHTTPServer $1/ cpe:/a:hp:compaqhttpserver:$1/ cpe:/a:hp:system_management_homepage:$2/
match http m|^HTTP/1\.0 400 Ungueltige Anfrage\r\nServer: Web Sharing\r\n| p/Mac OS Personal Web Sharing/ i/German/ o/Mac OS/ cpe:/o:apple:mac_os/a
match http m|^HTTP/1\.1 405 Method Not Allowed\r\nContent-Type:text/html\r\n\r\n<HTML><HEAD><TITLE>Remote Insight</TITLE></HEAD><BODY>\r\n<H1>Request Error</H1>\r\nHTTP/1\.1 405 Method Not Allowed\r\n</BODY></HTML>\r\n| p|HP/Compaq Integrated Lights-Out http config| d/remote management/ cpe:/h:hp:integrated_lights-out/
match http m|^HTTP/1\.0 400 Bad Request\r\nServer: Web Sharing\r\nContent-type: text/html\r\n\r\n<HTML><TITLE>400 Bad Request</TITLE>The URL you requested could not be understood by the server\.  Do not include double slashes or colon characters in the URL\.</HTML>\r\n\r\n| p/Apple Personal Websharing httpd/ o/Mac OS/ cpe:/o:apple:mac_os/a
match http m|^Command Not Reconized\r\n$| p/Microsiga httpd/
match http m|^HTTP/1\.0 405 Method Not Allowed\r\nAllow: GET, HEAD, POST, PUT\r\n\r\n$| p/Lexmark printer http config/ d/printer/
match http m|^HTTP/1\.0 405-metode ikke tillatt\r\nTillatt: GET, HEAD, POST, PUT\r\n\r\n$| p/Lexmark printer http config/ i/Norwegian/ d/printer/
match http m|^HTTP/1\.1 500 \( Die Anforderung wurde vom HTTP-Filter zur\xc3\xbcckgewiesen\. Wenden Sie sich an den ISA Server-Administrator\.  \)\r\n| p/Microsoft ISA server httpd/ i/German/ o/Windows/ cpe:/a:microsoft:isa_server::::de/ cpe:/o:microsoft:windows/a
match http m|^HTTP/1\.0 \d\d\d .*\nServer: GemtekBalticHTTPD/(.*)\n| p/Gemtek Systems GemtekBalticHTTPD/ v/$1/
match http m|^HTTP/1\.0 401 Authorization Required\r\nWWW-Authenticate: Basic realm=\"TiVo-web\"\r\nConnection: close\r\n\r\n| p/TiVoWebPlus Project httpd/ d/media device/
match http m|^HTTP/1\.0 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: ELMO Web Server\r\n.*<TITLE>HV-([\w+/-]+)</TITLE>\r\n|s p/ELMO $1 Visual Presenter http config/ d/media device/
match http m|^HTTP/1\.0 501 Not Implemented\r\nServer: HTTPD/[\d.]+\r\n.*<a href=\"/\">Return to Web Management</a>.*<A HREF=\"http://www\.juniper\.net/support/\">HTTPD release ([-\w_.]+) built by|s p/Juniper router http config/ i/HTTPD $1/ d/router/
match http m|^HTTP/1\.1 404 Not found\r\nServer: BadBlue/([\d.]+)\r\n| p/BadBlue httpd/ v/$1/ o/Windows/ cpe:/o:microsoft:windows/a
match http m|^HTTP/1\.0 501 Not Implemented\r\nServer: httpd/1\.00\r\nCache-Control: no-cache\r\nExpires: 0\r\nContent-Type: text/html\r\n\r\n<HTML><HEAD><TITLE>501 Not Implemented</TITLE></HEAD>\n<BODY><H2>501 Not Implemented</H2>\nThe requested method 'OPTIONS' is not implemented by this server\.\n<HR>\n<I>httpd/1\.00</I></BODY></HTML>\n$| p|Packeteer PacketShaper 4500/ISP httpd|
match http m|^HTTP/1\.0 \d\d\d .*\r\nServer: SkyX HTTPS ([^\r\n]+)\r\n| p/Packeteer SkyX Accellerator/ v/$1/
match http m|^HTTP/1\.0 501 Not Implemented\r\nDate: .*<H1>501 Not Implemented</H1>\nPOST to non-script is not supported in Boa\.\n</BODY></HTML>\n|s p/Boa httpd/ cpe:/a:boa:boa/
match http m|^HTTP/1\.1 501 Not Implemented\r\nDate: .*\r\nServer: HTTPsrv\r\nConnection: close\r\nContent-Type: text/html; charset=ISO-8859-1\r\n\r\n<HTML><HEAD><TITLE>501 Not Implemented</TITLE></HEAD>\n<BODY><H1>501 Not Implemented</H1>\nPOST to non-script is not supported\.\n</BODY></HTML>\n$| p/Boa httpd/ i/Mega System Technologies NetProbe Lite environmental sensor/ d/specialized/ cpe:/a:boa:boa/
match http m|^HTTP/1\.1 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: Oracle-Application-Server-11g\r\nAllow: GET,HEAD,POST,OPTIONS\r\nContent-Length: 0\r\n|s p/Oracle Application Server 11g httpd/ cpe:/a:oracle:application_server:11g/

# HP JetDirect Card in a LaserJet printer
match http m|^HTTP/1\.1 501 Unknown or unimplemented http action\r\nMIME-Version: 1\.0\r\nServer: HP-ChaiServer/([\d.]+)\r\nContent-length: \d+\r\nContent-Type: text/html\r\n\r\n<TITLE>Request Not Implemented</TITLE><P><B>Cannot process request, not implemented at server\.</B></P><P>Unknown or unimplemented http action| p/HP JetDirect Card in a LaserJet printer/ i/HP-ChaiServer Embedded VM $1/ d/printer/
match http m|^HTTP/1\.0 501 Not Implemented\r\nServer: Waveplus HTTPD\r\n|s p/Waveplus HTTPD/ i/Thomson TG508 DSL router/ d/broadband router/ cpe:/h:thomson:tg508/a

# Zero One Technology ( http://www.01tech.com/ ) print servers embedded HTTP service
match http m|^HTTP/1\.0 501 Not Implemented\r\nDate: .*\r\nMIME-version: 1\.0\r?\nServer: ZOT-PS-(\d+)/([\w._-]+)\r?\n| p/Zero One Technology $1 httpd/ v/$2/ d/print server/ cpe:/h:zero_one_tech:$1/

match http m|^HTTP/1\.[01] \d\d\d .*\r\nServer: micro_httpd\r\n| p/micro_httpd/ cpe:/a:acme:micro_httpd/
# github.com/xen-org/xen-api-libs.git
match http m|^HTTP/1\.0 500 Internal Error\r\nConnection: close\r\nCache-Control: no-cache, no-store\r\n\r\n<html><body><h1>Internal Server Error</h1>Failure\(&quot;No handler table for HTTP method Unknown OPTIONS&quot;\)</body></html>$| p/Citrix Xen Simple HTTP Server/
match http m|^HTTP/1\.1 302 Found\r\nDate: \w\w\w \w\w\w \d\d \d\d:\d\d:\d\d \d\d\d\d\n GMT\r\nServer: VCS-VideoJet-Webserver\r\nLocation: http://[\w._-]+/xampp/\r\nKeep-Alive: timeout=5, max=100\r\nConnection: Keep-Alive\r\n\r\n|s p/VCS-VideoJet-Webserver httpd/ i/Bosch VIP X1 video encoder http config/ d/webcam/
match http m|^HTTP/1\.0 501 Not Implemented\r\nServer: mini_httpd ([^\r\n]+)\r\n(?:[^\r\n]+\r\n)*?Cache-Control: no-cache,no-store\r\nContent-Type: text/html; charset=%s\r\nConnection: close\r\n|s p/mini_httpd/ v/$1/ cpe:/a:acme:mini_httpd:$1/
match http m|^HTTP/1\.1 501 Not Implemented\r\nServer: mini_httpd/([^\r\n]+)\r\nDate: .*\r\nCache-Control: no-cache,no-store\r\nContent-Type: text/html; charset=[\w_-]+\r\nContent-Length: \d+\r\nConnection: close\r\n\r\n| p/mini_httpd/ v/$1/ cpe:/a:acme:mini_httpd:$1/
match http m|^HTTP/1\.1 400 Bad Request\r\nServer: keyreporter/([\w._-]+)\r\nConnection: Close\r\nContent-Type: text/plain\r\nContent-Length: 20\r\n.*URL is malformatted\n$|s p/Sassafras KeyReporter http interface/ v/$1/
match http m|^HTTP/1\.1 403 Forbidden\r\n(?:[^\r\n]+\r\n)*?Content-Type: text/html;charset=[\w._-]+\r\nContent-Language: ([\w._-]+)\r\n(?:[^\r\n]+\r\n)*?Server: Hidden\r\n\r\n<html><head><title>Apache Tomcat/([\w._-]+) - Error report</title>|s p/Symantec Endpoint Protection Manager http config/ i/Apache Tomcat $2; $1/ d/firewall/ cpe:/a:apache:tomcat:$2/ cpe:/a:symantec:endpoint_protection_manager/
match http m|^HTTP/1\.1 403 Forbidden\r\n(?:[^\r\n]+\r\n)*?Content-Type: text/html;charset=[\w._-]+\r\n(?:[^\r\n]+\r\n)*?Server: Hidden\r\n\r\n<html><head><title>Apache Tomcat/([\w._-]+) - Error report</title>|s p/Symantec Endpoint Protection Manager http config/ i/Apache Tomcat $1/ d/firewall/ cpe:/a:apache:tomcat:$1/
match http m|^HTTP/1\.1 400 Bad Request\r\nDate: .*\r\nConnection: close\r\nContent-Type: text/html\r\nContent-Length: 50\r\n\r\n<HTML><BODY><H1>400 Bad Request</H1></BODY></HTML>$| p/VMware Server http config/ cpe:/a:vmware:server/
match http m|^HTTP/1\.1 200 OK\r\n(?:[^\r\n]+\r\n)*?X-Runtime: 2\r\n.*<title>Metasploit Framework Web Console ([\w._-]+)</title>\n|s p/Metasploit Framework web console/ v/$1/
match http m|^HTTP/1\.1 400 Bad Request\r\nContent-Type: text/plain\r\nContent-Length: 59\r\nConnection: close\r\n\r\nError 400: Bad Request\nCannot parse HTTP request: \[OPTIONS\]$| p/Mongoose httpd/ cpe:/a:cesanta:mongoose/
match http m|^HTTP/1\.1 200 OK\r\nAllow: GET, POST, HEAD, CONNECT, PUT, DELETE, OPTIONS\r\nDAV: 1\r\n\r\n$| p/Mongoose httpd/ v/3.7/ cpe:/a:cesanta:mongoose:3.7/
match http m|^HTTP/1\.0 501 Not Implemented\r\nConnection: close\r\nServer: Android Webcam Server v([\w._-]+)\r\n| p/IP Webcam/ v/$1/ i/Android phone/ d/phone/ o/Android/ cpe:/o:google:android/
match http m|^HTTP/1\.1 404 OK\r\nContent-Length: 0\r\nConnection: Keep-Alive\r\nWWW-Authenticate: Basic realm=\"/\"\r\nContent-Type: text/html; charset=UTF-8\r\nCache-Control: max-age=3600, must-revalidate\r\nEXT: UCoS, UPnP/1\.0, UDI/1\.0\r\nLast-Modified: .*\r\n\r\n| p/Universal Devices Insteon home automation http config/ d/specialized/ o/uCOS/ cpe:/o:universal_devices:ucos/
match http m|^HTTP/1\.0 404 Not Found\r\nContent-Type: text/html; charset=utf-8\r\nContent-Length: \d+\r\n\r\n\n\n<!DOCTYPE html>\n<html>\n\t<head>\n\t\t<title>Action not found</title>\n\t\t<link rel=\"shortcut icon\" href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAlFJREFUeNqUU8tOFEEUPVVdNV3dPe8xYRBnjGhmBgKjKzCIiQvBoIaNbly5Z\+PSv3Aj7DSiP2B0rwkLGVdGgxITSCRIJGSMEQWZR3eVt5sEFBgTb/dN1yvnnHtPNTPG4PqdHgCMXnPRSZrpSuH8vUJu4DE4rYHDGAZDX62BZttHqTiIayM3gGiXQsgYLEvATaqxU\+| p/Graylog2 httpd/ cpe:/a:graylog:graylog2/
match http m|^HTTP/1\.1 405 Method Not Allowed\r\nServer: NetQoS-HTTPd/1\r\nContent-Type: text/plain\r\nConnection: close\r\n\r\n| p/CA NetQoS ReporterAnalyzer/
match http m|^HTTP/1\.1 501 Not Implemented\r\n\r\nHTTP method/URL unsupported: OPTIONS| p/DirecTV Genie/

match kmldonkey m|^HTTP/1\.1 400 Bad Request\r\nServer: KMLDonkey/(\d\S+)| p/KMLDonkey/ v/$1/

# webmin version 1.090 on Mandrake 8.2 - not sure why it's not picked up by the getreq probe
match http m|^HTTP/1\.0 400 Bad Request\r\nServer: MiniServ/([\d.]+)\r\n.*\r\n<h1>Error - Bad Request</h1>\n|s p/MiniServ/ v/$1/ i/Webmin httpd/
match http m|^HTTP/1\.1 400 Page not found\r\nServer: GoAhead-Webs\r\nDate: .*\r\nPragma: no-cache\r\nCache-Control: no-cache\r\nContent-Type: text/html\r\n\r\n<html><head><title>Document Error: Page not found</title></head>| p/GoAhead WebServer/ i/WAP http config/ d/WAP/ cpe:/a:goahead:goahead_webserver/

match http m|^HTTP/1\.0 200 Ok\r\nCseq: 0\r\nServer: VLC Server\r\nPublic: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE\r\nContent-Length: 0\r\n\r\n| p/VLC HTTP streamer/ cpe:/a:videolan:vlc_media_player/

match http m|^ 200 OK\r\nConnection: close\r\nContent-Type: text/html\r\n.*<B>The request is not Implemented\.</B>|s p/Dell 1815dn printer http config/ d/printer/ cpe:/h:dell:1815dn/a
match http m|^HTTP/1\.0 404 Not Found\r\nConnection: close\r\n\r\n<html><head><title>404 Not Found</title></head>\r\n<body><h1>Not Found</h1>The requested URL / was not found on this server\.<p>\r\n</body></html>\r\n$| p/Mono XSP httpd/ cpe:/a:mono:xsp/
match http m|^HTTP/1\.1 302 Found\r\nLocation: https?:///home\.htm\r\nContent-Length: 0\r\nWebServer:\r\n\r\n$| p/APC SmartUPS http config/ d/power-device/
match http m|^HTTP/1\.0 400\r\nContent-Type: text/html\r\n\r\n<hr><pre><font size=\+2><b>\nError\. Unsupported method\.\n</b></font>| p/Small Home Server httpd/ o/Windows/ cpe:/o:microsoft:windows/a
match http m|^HTTP/1\.0 400 Bad Request\r\nContent-Length: \d+\r\nContent-Type: text/html\r\n\r\n<HTML><HEAD><TITLE>400 Bad Request \(ERR_INVALID_REQ\)</TITLE></HEAD><BODY><H1>400 Bad Request</H1><BR>ERR_INVALID_REQ<HR><B>AR7 Webserver</B>| p/AR7 embedded httpd/
match http m|^HTTP/1\.0 400 Bad Request\r\nContent-Length: \d+\r\nContent-Type: text/html\r\n\r\n<HTML><HEAD><TITLE>400 Bad Request \(ERR_INVALID_REQ\)</TITLE></HEAD><BODY><H1>400 Bad Request</H1><BR>ERR_INVALID_REQ<HR><B>Webserver</B>| p/AVM FRITZ!Box WLAN 7170 WAP http config/ d/WAP/
match http m|^HTTP/[10]\.0 200 OK\nPragma: no-cache\nContent-Type: text/html; charset=iso-8859-1\nContent-Length: 63\n\n<html><body>ERROR ERR_INVALID_REQ<hr>Bad Request</body></html>\n| p/AVM FRITZ!Box 7300-series WAP http config/ d/WAP/

match http m|^HTTP/1\.1 404 Not Found\r\nServer: Cisco AWARE ([\w._-]+)\r\n| p/Cisco ASA AWARE http config/ v/$1/ d/firewall/
match http m|^HTTP/1\.1 200 OK\r\nPragma: no-cache\r\nx-responding-server: ([\w._-]+)\r\nX-dmUser: (.*)\r\nMS-Author-Via: DAV\r\n| p/CrushFTP DAV httpd/ i/User $2/ h/$1/ cpe:/a:crushftp:crushftp/
match http m|^HTTP/1\.1 302 Moved Temporarily\r\nLocation: /login\r\n\r\n$| p/Bizanga IMP Email http config/
match http m|^HTTP/1\.0 501 Not Implemented\t\r\nContent-Type: text/html\r\n\r\n<HTML><HEAD><TITLE>Not Implemented</TITLE></HEAD><BODY><h3>Error: HTTP Method Not Implemented</h3></BODY></HTML>$| p/Check Point UTM-1 Edge X firewall or Zonealarm Z100G WAP http config/
match http m|^HTTP/1\.1 405 Method Not Allowed\r\nServer: Cassini/([\w._-]+)\r\n(?:[^\r\n]+\r\n)*?X-AspNet-Version: ([\w._-]+)\r\n.*<title>Runtime Error</title>\r\n        <style>\r\n         body {font-family:\"Verdana\";font-weight:normal;font-size: \.7em;color:black;}|s p/Cassini httpd/ v/$1/ i/Ateas Security webcam management httpd; ASP.NET $2/ o/Windows/ cpe:/a:microsoft:asp.net:$2/ cpe:/a:microsoft:cassini:$1/ cpe:/o:microsoft:windows/a
match http m|^HTTP/1\.0 302 \r\nLocation: ,\r\n\r\n$| p/BlackBox LWU0200-POE-M ethernet-optical bridge http config/ d/bridge/
match http m|^HTTP/1\.0 400 Bad Request \r\nContent-Type: text/plain\r\nContent-Length: \d+\r\n\r\n400 Bad Request Cannot parse request\r\n| p/GotoMeeting httpd/
match http m|^HTTP/1\.0 405 Method Not Allowed\r\nAllow: GET, HEAD, POST\r\nContent-Length: 0\r\nServer: Allegro-Software-RomPager/([\d.]+)\r\n\r\n$| p/Allegro RomPager/ v/$1/ cpe:/a:allegro:rompager:$1/
match http m|^HTTP/1\.0 501 Not Implemented\r\nContent-type: text/html\r\nDate: .*\r\nConnection: close\r\n\r\n<HTML><HEAD><TITLE>501 Not Implemented</TITLE></HEAD>\n<BODY><H1>501 Not Implemented</H1>\nThe requested method is not recognized\n</BODY></HTML>\n$| p/BusyBox httpd/ v/1.13/ o/Linux/ cpe:/a:busybox:busybox:1.13/ cpe:/o:linux:linux_kernel/a
match http m|^HTTP/1\.0 501 Not Implemented\r\nContent-type: text/html\r\nDate: .*\r\nConnection: close\r\n\r\n<HEAD><TITLE>501 Not Implemented</TITLE></HEAD>\n<BODY><H1>501 Not Implemented</H1>\nThe requested method is not recognized by this server\.\n</BODY>\n$| p/BusyBox httpd/ d/media device/ o/Linux/ cpe:/a:busybox:busybox/ cpe:/o:linux:linux_kernel/a
match http m|^HTTP/1\.0 501 Not Implemented\r\nDate: .*\r\nConnection: close\r\nContent-type: text/html\r\n\r\n<HTML><HEAD><TITLE>501 Not Implemented</TITLE></HEAD>\n<BODY><H1>501 Not Implemented</H1>\nThe requested method is not recognized\n</BODY></HTML>\n$| p/BusyBox httpd/ o/Linux/ cpe:/a:busybox:busybox/ cpe:/o:linux:linux_kernel/a
match http m|^HTTP/1\.0 501 Not Implemented\nContent-type: text/html\r\nDate: Wed, 01 Jul 2009 09:22:30 GMT\r\nConnection: close\r\n\r\n<HEAD><TITLE>501 Not Implemented</TITLE></HEAD>\n<BODY><H1>501 Not Implemented</H1>\nThe requested method is not recognized by this server\.\n</BODY>\n$| p/BusyBox http/ v/1.01/ o/Linux/ cpe:/a:busybox:busybox:1.01/ cpe:/o:linux:linux_kernel/a
match http m|^HTTP/1\.1 400 Bad Request\r\nConnection: close\r\nContent-Type: text/plain\r\nTransfer-Encoding: chunked\r\n\r\nB\r\nBad Request\r\n0\r\n\r\n$| p/BusyBox http/ v/1.19.4/ o/Linux/ cpe:/a:busybox:busybox:1.19.4/ cpe:/o:linux:linux_kernel/a
match http m|^HTTP/1\.0 404 Not Found\r\nContent-Length: 0\r\n\r\n$| p/Octoshape P2P streaming web service/
match http m|^UNKNOWN 501 Not Implemented\r\nServer: \r\n.*<BODY BGCOLOR=\"#cc9999\" TEXT=\"#000000\" LINK=\"#2020ff\" VLINK=\"#4040cc\">\n<H2>501 Not Implemented</H2>\nThe requested method 'OPTIONS' is not implemented by this server\.|s p/i3 micro or Linksys SPA400 VoIP gateway http config/ d/VoIP adapter/ cpe:/h:linksys:spa400/a
match http m|^HTTP/1\.1 501 Method Not Implemented\r\nServer: qhttpd\r\n| p/qhttpd/
match http m|^HTTP/1\.0 200 OK \r\nContent-Type: text/html\r\nDate: .*\r\n\r\n<html><head><meta http-equiv=\"content-type\" content=\"text/html; charset=ISO-8859-1\"><title>DIRECTV HTTP server available options</title>| p/DirecTV satellite receiver http interface/ d/media device/
match http m|^HTTP/1\.1 405 Method Not Allowed\.\r\nContent-Type: application/json; charset=ISO-8859-1\r\nDate: .* GMT\r\nContent-Length: 142\r\nReason: Only HTTP GET or POST methods are supported\.\r\n\r\n{\"status\": {\n  \"code\": 405,\n  \"commandResult\": 1,\n  \"msg\": \"Method Not Allowed\.Only HTTP GET or POST methods are supported\.\",\n  \"query\": \"\"\n}}| p/DirecTV satellite receiver http interface/ d/media device/
match http m|^HTTP/1\.1 400 Page not found\r\nServer: GoAhead-Webs\r\nDate: .*\r\nPragma: no-cache\r\nCache-Control: no-cache\r\nContent-Type: text/html; charset=iso-8859-1;\r\n\r\n<html><head><title>Document Error: Page not found</title></head>\r\n        <body><h2>Access Error: Page not found</h2>\r\n        <p>Bad request type</p></body></html>\r\n\r\n$| p/GoAhead WebServer/ i/Auerswald COMpact 5020 VoIP PBX/ d/PBX/ cpe:/a:goahead:goahead_webserver/
match http m|^HTTP/1\.1 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: Apache/x\.x\.x \(Unix\) mod_ssl/x\.x\.x OpenSSL/([\w._-]+)\r\nContent-Length: 0\r\nAllow: GET, HEAD, POST, OPTIONS, TRACE\r\nConnection: close\r\n\r\n$|s p/Apache httpd/ i/Fastora NAS T2 NAS device; OpenSSL $1/ d/storage-misc/ o/FreeBSD/ cpe:/a:apache:http_server/ cpe:/a:openssl:openssl:$1/ cpe:/o:freebsd:freebsd/a
match http m|^HTTP/1\.1 200 OK\r\nServer: Virata-EmWeb/R([\d_]+)\r\nContent-Length: 0\r\nAllow: HEAD, GET, OPTIONS\r\n\r\n$| p/Virata-EmWeb/ v/$SUBST(1,"_",".")/ i/HP LaserJet 2430 printer http config/ d/printer/ cpe:/a:virata:emweb:$SUBST(1,"_",".")/a cpe:/h:hp:laserjet_2430/a
match http m|^HTTP/1\.0 200 OK\r\nContent-Length: 111\r\nContent-Type: text/xml\r\n.*<error xmlns=\"http://www\.slingbox\.com\"><code>ObjectNotFound</code><message>Resource Not Found</message></error>$|s p/Slingbox remote streaming httpd/
match http m|^HTTP/1\.1 405 Not Allowed\r\nContent-Type: text/html; charset=utf-8\r\n.*<head><title>405 Not Allowed</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>405 Not Allowed</h1></center>\r\n<hr><center>nginx</center>\r\n</body>\r\n</html>\r\n|s p/nginx/ cpe:/a:igor_sysoev:nginx/
match http m|^HTTP/1\.1 405 Method Not Allowed\r\nPragma: no-cache\r\nConnection: close\r\nCache-Control: no-cache\r\n\r\n<html><head><title>Error</title></head><body>Error: 405 METHOD NOT ALLOWED</body></html>$| p/Canon imageRUNNER 1025i printer http config/ d/printer/ cpe:/h:canon:imagerunner_1025i/
match http m|^HTTP/1\.0 405 Method Not Allowed\r\nContent-Length: 87\r\nContent-Type: text/html; charset=UTF-8\r\nServer: TornadoServer/([\w._-]+)\r\n\r\n<html><title>405: Method Not Allowed</title><body>405: Method Not Allowed</body></html>$| p/Tornado httpd/ v/$1/ cpe:/a:tornadoweb:tornado:$1/a
# http://www.ibm.com/developerworks/systems/library/es-nweb/index.html
match http m|^<HTML><BODY><H1>nweb Web Server Sorry: Only simple GET operation supported OPTIONS / HTTP/1\.0\*\*\*\*</H1></BODY></HTML>\r\n| p/IBM nweb/ cpe:/a:ibm:nweb/
match http m|^HTTP/1\.0 501 Not Implemented\r\nServer: httpd_gargoyle/([\w._ -]+)\r\n| p/httpd_gargoyle/ v/$1/ i/Gargoyle WAP firmware/ d/WAP/ o/Linux/ cpe:/o:linux:linux_kernel/a
match http m|^HTTP/1\.1 200 OK\r\nDate: .* GMT\r\nServer:  \r\nAllow: GET,HEAD,POST,OPTIONS\r\nVary: Accept-Encoding\r\nContent-Length: 0\r\nConnection: close\r\nContent-Type: text/html\r\n\r\n$| p/Apache httpd/ v/2.2.9/ cpe:/a:apache:http_server:2.2.9/
match http m|^HTTP/1\.0 405 Method Not Allowed\r\nContent-Length: 0\r\nConnection: close\r\nAllow: GET, POST\r\nContent-Type: text/html\r\n\r\n$| p|Siemens 315-2PN/DP programmable logic controller http admin| d/specialized/ cpe:|h:siemens:315-2pn/dp|
match http m|^HTTP/1\.0 401 Unauthorized\r\nWWW-Authenticate: Basic realm=\"Arecont Vision\"\r\n\r\n| p/Arecont Vision surveillance camera httpd/ d/webcam/
match http m|^HTTP/1\.0 400 Bad Request\r\nServer: \r\nContent-Type: text/html\r\nContent-Length: 57\r\n\r\nHTTP/1\.0 400 Bad Request: Invalid or unsupported method\r\n\r\n\r\n$| p|Alcatel/Thomson SpeedTouch ADSL http config| d/broadband router/
match http m|^HTTP/1\.1 501 Not Implemented\r\nDate: .* GMT\r\nConnection: close\r\nContent-Type: text/html\r\nContent-Length: 54\r\n\r\n<HTML><BODY><H1>501 Not Implemented</H1></BODY></HTML>$| p/VMware ESXi 4.1 Server httpd/ cpe:/o:vmware:esxi:4.1/
match http m|^HTTP/1\.0 405 Method Not Allowed\r\nServer: Membase Server ([\w.-]+)\r\nPragma:| p/Membase Admin httpd/ v/$1/
match http m|^HTTP/1\.0 405 Method Not Allowed\r\nServer: Couchbase Server ([\w.-]+)\r\nPragma:| p/Couchbase Admin httpd/ v/$1/
match http m|^HTTP/1\.0 501 Unsupported method \('OPTIONS'\)\r\nServer: BaseHTTP/([\w._-]+) Python/([\w._+-]+)\r\n| p/BaseHTTPServer/ v/$1/ i/Python $2/ cpe:/a:python:basehttpserver:$1/a cpe:/a:python:python:$2/
match http m|^HTTP/1\.0 500 Internal Server Error\r\nContent-Type: text/html; charset=UTF-8\r\nContent-Length: 148\r\nDate: .* GMT\r\nConnection: close\r\n\r\n500 Internal Server Error\n\nThe server has either erred or is incapable of performing the requested operation\. \n\n 'NoneType' object is not iterable  $| p/Nicira bridge http admin/ d/bridge/
match http m|^HTTP/1\.0 404 Not Found\r\nContent-Type: text/html\r\nContent-Length: \d+\r\nServer: \r\n\r\n<html><head><title>404 Not Found</title></head>\n<body><h1>404 Not Found</h1>\n/: <pre>This item has not been found</pre>\n<hr><address><a href=\"http://(BLACKBERRY-[\w._-]+):\d+/\">[\w._-]+:\d+</a></address>\n</body></html>\n$| p/BlackBerry PlayBook QConnDoor httpd/ h/$1/ cpe:/h:rim:blackberry_playbook_tablet/ cpe:/o:rim:blackberry_playbook_os:2.0/
match http m|^HTTP/1\.1 401 Unauthorized\r\nServer: Router\r\nConnection: close\r\nWWW-Authenticate: Basic realm=\"Roteador Intelbras Wireless N 150Mbps\"\r\n| p/Intelbras router httpd/ d/WAP/
match http m|^HTTP/1\.0 404 Not Found\r\nDate: .*\r\nAccept-Ranges: bytes\r\nConnection: close\r\nAllow: GET, HEAD, OPTIONS\r\nContent-Length: 0\r\n\r\n| p/Hiawatha httpd/
match http m|^HTTP/1\.1 404 Not Found\nDate: .*\nServer: Webserver \(Windows\)\nConnection: close\nContent-Type: text/html; charset=ISO-8859-1\nContent-Length: 79\n\n<h1>Wrong URL</h1><h3>The webpage your are trying to access does not exist</h3>| p/American Dynamics IP camera httpd/ d/webcam/
# Responds with this to anything containing "\r\n"
match http m|^HTTP/1\.0 401 Unauthorized\r\nWWW-Authenticate: Basic realm=\"DMP\"\r\n\r\n| p/Cisco Digital Media Player/ d/media device/
# too general?
match http m|^HTTP/1\.1 405 Method Not Allowed\r\nContent-Type: text/html; charset=utf-8\r\nContent-Length: 124\r\nConnection: close\r\n\r\n<html><head><title>405 Method Not Allowed</title></head><body><center><h1>405 Method Not Allowed</h1></center></body></html>| p/TP-LINK TD-W8968 http admin/ d/WAP/ cpe:/h:tp-link:td-w8968/a
match http m|^HTTP/1\.1 403 Forbidden\r\nPragma: No-cache\r\nCache-Control: no-cache\r\nExpires: .*? ([A-Z]+)\r\nContent-Type: text/html;charset=utf-8\r\nContent-Length: \d+\r\nDate: .*\r\nConnection: close\r\nServer:  \r\n\r\n<html><head><title>Apache Tomcat/([\w._-]+) - Error report</title>| p/Apache Tomcat httpd/ v/$2/ i/timezone: $1/ cpe:/a:apache:tomcat:$2/
match http m|^HTTP/1\.0 501 Not Implemented\r\nDate: .*? UTC\r\nContent-type: text/html\r\nExpires: Thu, 16 Feb 1989 00:00:00 GMT\r\n\r\n<H1>501 Not Implemented</H1>\r\n\r\n\r\n| p/Cisco IOS httpd/ o/IOS/ cpe:/o:cisco:ios/a
match http m|^HTTP/1\.1 200 OK\r\nConnection: close\r\nAccess-Control-Allow-Methods: GET, POST, OPTIONS\r\nAccess-Control-Allow-Origin: \r\nAccess-Control-Allow-Credentials: true\r\nAccess-Control-Max-Age: 86400\r\nAccess-Control-Allow-Headers: Content-Type, Authorization\r\nServer: nzbget-([\w._-]+)\r\n\r\n| p/NZBGet httpd/ v/$1/
match http m|^HTTP/1\.1 501 Not Implemented\r\nContent-Length: 0\r\nConnection: close\r\n\r\nHTTP/1\.0 401 Unauthorized\r\nWWW-Authenticate: Basic realm=\"Securesphere Gateway Authentication\"\r\nContent-Length: 0\r\nConnection: close\r\nSet-Cookie: session_id=\d+; Path=/\r\n\r\n| p/Imperva SecureSphere WAF http admin/
match http m|^HTTP/1\.0 501 Unsupported method \('OPTIONS'\)\r\nServer: JiffyServer/([\w._-]+) Python/([\w._-]+)\r\nDate: .*\r\nContent-Type: text/html;charset=utf-8\r\nConnection: close\r\n\r\n| p/Jiffy secure messaging httpd/ v/$1/ i/Python $2/ cpe:/a:python:python:$2/
match http m|^HTTP/1\.1 405 Method not allowed\r\nCache-Control: no-cache\r\nConnection: close\r\nPragma: no-cache\r\nContent-Length: 8\r\nContent-Type: text/html\r\nAccept-Ranges: bytes\r\n\r\nERROR=0\n| p/ACTi NVR3 httpd/
match http m|^HTTP/1\.0 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: GateOne\r\nX-Ua-Compatible: IE=edge\r\nAllow: HEAD,GET,POST,OPTIONS\r\nDate: .*\r\nAccess-Control-Allow-Origin: \*\r\nContent-Type: application/json; charset=UTF-8\r\n\r\n{\"applications\": \[([^]]+)\]|s p/Gate One http terminal emulator/ i/apps: $1/
match http m|^HTTP/1\.1 404 Not Found\r\nContent-Type: text/plain\r\nDate: .*\r\nConnection: close\r\n\r\nCannot OPTIONS /$| p/Express.js httpd/
match http m|^HTTP/1\.0 501 not implemented\r\nConnection: close\r\nContent-Length: 20\r\nAllow: GET,HEAD,POST\r\nCache-Control: max-age=0\r\nContent-Type: text/plain\r\nDate: .*\r\nExpires: .*\r\n\r\n501 not implemented\n| p/Bluesound Node http config/ d/media device/
match http m|^HTTP/1\.1 501 Not Implemented\r\nServer: WindWeb/([\w._-]+)\r\nConnection: close\r\nContent-Type: text/html\r\n\r\n<H1>Wind Manage Web Server Error Report:</H1>| p/Wind Manage httpd/ v/$1/ cpe:/a:windriver:wind_manage:$1/
match http m%^HTTP/1\.0 40(?:6 Not Acceptable|5 Method Not Allowed)\r\nContent-Length: 51\r\nContent-Security-Policy: default-src 'self' 'unsafe-inline'; img-src 'self' blob:; frame-ancestors 'self'\r\nX-Frame-Options: SAMEORIGIN\r\nContent-Type: text/html; charset=utf-8\r\nDate: .*\r\n\r\n<html><body>HTTP Method not supported</body></html>% p/Greenbone Security Assistant/ cpe:/a:greenbone:greenbone_security_assistant/
match http m|^<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4\.01 Transitional//EN" "http://www\.w3\.org/TR/html4/loose\.dtd">\r\n<html>\r\n<head>\r\n<link rel="shortcut icon" href="/images/favicon\.ico" type="image/x-icon">\r\n<title>WLC_Control - Error - 400</title>\r\n<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\r\n\r\n<link rel="stylesheet" type="text/css" href="/css/login\.css">\r\n    </head><body  ><div class="header">\r\n<a href="http://www\.lancom-systems\.de"><img class="headerimg" src="/images/productsvg\.svg" alt="LANCOM Systems Homepage"></a><p class="headerp">LANCOM WLC-([\w._+-]+)</p>| p/Lancom WLAN Controller httpd/ i/model: WLC-$1/ cpe:/h:lancom:wlc-$1/
# ASUS RT-AC66U firmware uses the "httpd/2.0" SERVER_NAME
match http m|^HTTP/1\.0 501 Not Implemented\r\nServer: httpd/2\.0\r\nDate: .* GMT\r\nContent-Type: text/html\r\nConnection: close\r\n\r\n<HTML><HEAD><TITLE>501 Not Implemented</TITLE></HEAD>\n<BODY BGCOLOR="#cc9999"><H4>501 Not Implemented</H4>\nThat method is not implemented\.\n</BODY></HTML>\n| p/Acme milli_httpd/ v/2.0/ i/ASUS RT-AC-series router/ d/broadband router/ cpe:/a:acme:milli_httpd:2.0/
match http m|^HTTP/1\.1 501 Not Implemented\r\nConnection: close\r\n\r\n501 Not Implemented: Only GET and POST supported\r\n| p|Microchip Libraries of Applications TCP/IP Stack httpd| cpe:/a:microchip_technology_inc:mla/
match http m|^HTTP/1\.1 400 Page not found\r\nServer: Go[aA]head(?:-Webs)?/([\d.]+) PeerSec-MatrixSSL/(\d[\w.]+)-OPEN\r\n| p/GoAhead WebServer/ v/$1/ i/PeerSec MatrixSSL $2/ cpe:/a:goahead:goahead_webserver:$1/ cpe:/a:peersec:matrixssl:$2/
# Also works for GetRequest but may be too general there.
match http m|^HTTP/1\.1 200 OK\r\n(?:connection: .*\r\n)?(?:content-length: \d+\r\n)?content-type: text/html(?:; charset=UTF-8)?\r\n(?:transfer-encoding: .*\r\n)?\r\n| p/ocaml-cohttp/ cpe:/a:mirageos:ocaml-cohttp/
match http m|^HTTP/1\.1 200 OK\r\nServer: AvigilonOnvifNvt/([\d.]+)\r\n| p/Avigilon webcam ONVIF NVT/ v/$1/ d/webcam/
match http m|^HTTP/1\.1 200 OK\r\nHTTP/1\.1\r\nServer: Loxone Miniserver ([\w._-]+)/([\d.]+) UPnP/([\d.]+)\r\n| p/Loxone Miniserver home automation httpd/ v/$2/ i/name: $1; UPnP $3/ d/specialized/
match http m|^HTTP/1\.0 204 \r\ncontent-type: text/html\r\ncontent-length: 0\r\n\r\n| p/Tablo Network TV tuner/ d/media device/
match http m|^HTTP/1\.1 501 Method Not Implemented\r\nContent-Type: text/plain\r\nContent-Length: 12\r\n\r\nError: 501\r\n| p/Televes CoaxData coax-to-Ethernet bridge/ d/bridge/

match http-proxy m|^HTTP/1\.1 503 Service Unavailable\r\ndate: .*\r\nconnection: close\r\n\r\n<html><body><pre><h1>Service unavailable</h1></pre></body></html>\n| p/HTTP Replicator proxy/
match http-proxy m|^HTTP/1\.1 400 Bad Request\r\n.*This is a WebSEAL error message template file\.|s p/IBM WebSEAL reverse http proxy/ d/proxy server/
match http-proxy m|^HTTP/1\.0 \d\d\d.*\r\nServer: B[iI][gG]-?IP\r\n|s p/F5 BIG-IP load balancer http proxy/ d/load balancer/
match http-proxy m|^HTTP/1\.1 200 OK\r.*\nAllow: GET,HEAD,POST,OPTIONS\r.*\nServer: Oracle-Application-Server-(\w+) Oracle-Web-Cache \(|s p/Oracle Web Cache http proxy/ v/$1/ cpe:/a:oracle:application_server_web_cache:$1/
match http-proxy m|^HTTP/1\.1 405 Method Not Allowed\r\nContent-Length: 1059\r\nContent-Type: text/html; charset=utf-8\r\n\r\n$| p/XX-Net web proxy tool/
match http-proxy m|^HTTP/1\.1 200 OK\r\nCache-Control: no-cache\r\nConnection: close\r\nContent-Type: text/html; charset=utf-8\r\nPragma: no-cache\r\nContent-Length: \d+\r\nSet-Cookie: f5[a-z]+=[A-Z]+; HttpOnly; secure\r\n\r\n<html><head><title>Request Rejected</title>| p/F5 BIG-IP load balancer http-proxy/ d/load balancer/

match kerberos-sec m|^\0\0\0[\x50-\x90]~[\x4e-\x8e]0[\x4c-\x8c]\xa0\x03\x02\x01\x05\xa1\x03\x02\x01\x1e\xa4\x11\x18\x0f(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)Z\xa5\x05\x02\x03...\xa6\x03\x02\x01=\xa9.\x1b.([\w.-]+)\xaa\x1d0\x1b\xa0\x03\x02\x01\0\xa1\x140\x12\x1b\x06kadmin\x1b\x08changepw|s p/MIT Kerberos/ i/server time: $1-$2-$3 $4:$5:$6Z/ h/$7/

match monsoon m|^\0\x14\0\x01\xff\xff\xff\xfd\0\0\0\0\0\0\0\0\0\0\0\0$| p/Monsoon HAVA media streaming/ d/media device/

match msdtc m|^\x10\x1a\x0b\x00\x60\x4d$| p/Microsoft Distributed Transaction Coordinator/ o/Windows/ cpe:/o:microsoft:windows/a

match policy m|^action=defer_if_permit Policy Rejection: Invalid data\n\n$| p/Postfix mail policyd/

match pop3 m|^\+OK Citadel POP3 server <\d+@([-\w_.]+)>\r\n-ERR Not logged in\.\r\n-ERR Not logged in\.\r\n| p/Citadel pop3d/ h/$1/ cpe:/a:citadel:ux/

match rtsp m|^HTTP/1\.0 501 Not Implemented\r\nAllow: DESCRIBE, GET_PARAMETER, PAUSE, PLAY, SETUP, SET_PARAMETER, TEARDOWN\r\n| p/Axis M1054 or P3364 Network Camera rtspd/ d/webcam/
match rtsp m|^RTSP/1\.0 200 OK\r\nCSeq: 0\r\nPublic: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY\r\nBoard: MIPS\r\nDevCaps: VideoColor,IRLed,LightMode,\r\n\r\n| p/Maygion IPCamera rtspd/ d/webcam/

match sand-db m|^\xff\x02\x04\0\x03\0r\n\x08\0@L\x01\0\x01\x01\0\0\0\0[A-Z]{16}$| p/SAND database/

# www.hermstedtstingray.com/user_guides/stingray_security_white_paper.pdf
match stingray m|^\x02\x004ComDU2\0\0\0\0\0\0\0\0\0ON\0\x08OPTIONS \0\0\0\0<\x9e\x0e\x08!\x8a6@@\xb2W@\0\0\0\00\xd8\xdd\xbf\xbe\x99\r9@\x0c\xe0\x0b\x08\xb5\xd6\x0f@\xe8\xdd\xbf\xbeh\xa6>@0O\x18\x08\xd4\xb4U@| p/StingRay file transfer/

match tgcmd m|^\d+ \d+ \d+,Invalid command\.\n$| p/tgcmd.exe support daemon/ o/Windows/ cpe:/o:microsoft:windows/a

match upnp m|^HTTP/1\.1 405 METHOD NOT ALLOWED\r\nCache-Control: no-cache\r\nLast-Modified: .*\r\nX-User-Agent: DVArchive\r\nServer: Unknown/0\.0 UPnP/([\d.]+) Virata-EmWeb/R([\d_]+)\r\n| p/Virata-EmWeb/ v/$SUBST(1,"_",".")/ i/DVArchive UPnP; UPnP $2/ o/Linux/ cpe:/a:virata:emweb:$SUBST(1,"_",".")/a cpe:/o:linux:linux_kernel/a
match upnp m|^HTTP/1\.1 501 Not Implemented\r\nContent-Type: text/html\r\nConnection: close\r\nContent-Length: 149\r\nServer: Debian/([\w._-]+) DLNADOC/([\w._-]+) UPnP/([\w._-]+) MiniDLNA/([\w._-]+)\r\n| p/MiniDLNA/ v/$4/ i/Debian $1; DLNADOC $2; UPnP $3/ o/Linux/ cpe:/a:minidlna:minidlna:$4/a cpe:/o:debian:debian_linux:$1/ cpe:/o:linux:linux_kernel/a

match vnc-http m|^HTTP/1\.1 200\r\nContent-Type: text/html\r\nContent-Length: \d+\r\nSet-Cookie: UBRWID=[A-F0-9]+\r\nAccess-Control-Allow-Origin: \*\r\nConnection: Keep-Alive\r\n\r\n\xef\xbb\xbf<!DOCTYPE html>\r\n<html>\r\n<head>\r\n<title>ThinVNC</title>\r\n| p/ThinVNC/

match webdav m|^HTTP/1\.1 200 OK\r\nSet-Cookie: mainServerInstance=; path=/(?:; secure)?\r\n(?:Set-Cookie: currentAuth=[^;]*; path=/(?:; secure)?\r\n)?Set-Cookie: CrushAuth=[^;]+; path=/(?:; secure; HttpOnly)?\r\nPragma: no-cache\r\nx-responding-server: ([\w._-]+)\r\nX-dmUser: username\r\nMS-Author-Via: DAV\r\nAllow: | p/CrushFTP httpd/ h/$1/ cpe:/a:crushftp:crushftp/
match webdav m|^HTTP/1\.1 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: cPanel\r\nPersistent-Auth: false\r\nCache-Control: no-cache[^\r\n]*\r\nConnection: Keep-Alive\r\nVary: Accept-Encoding\r\nAllow: [A-Z, ]+\r\nContent-Length: 0\r\nContent-Type: text/plain\r\nExpires: Fri, 01 Jan 1990 00:00:00 GMT\r\nDAV: 1, 2\r\nKeep-Alive: timeout=15, max=96\r\nMS-Author-Via: DAV\r\n\r\n|s p/cPanel webdav/ o/Linux/ cpe:/o:linux:linux_kernel/a

softmatch caldav m|^HTTP/1\.[01] 200 OK\r\n.*DAV: [^\r\n]*calendar.*\r\nAllow:|s
softmatch webdav m|^HTTP/1\.[01] 200 OK.*\r\nDAV: *1.*\r\nAllow:[^\r\n]* PROPFIND|s
softmatch webdav m|^HTTP/1\.[01] 200 OK.*\r\nAllow:[^\r\n]* PROPFIND.*\r\nDAV: *1|s

# https://github.com/kanaka/websockify
match websocket m|^HTTP/1\.0 501 Unsupported method \('OPTIONS'\)\r\nServer: SimpleHTTP/([\w._-]+) Python/([\w._+-]+)\r\nDate: .* GMT\r\nContent-Type: text/html\r\nConnection: close\r\n\r\n<head>\n<title>Error response</title>\n</head>\n<body>\n<h1>Error response</h1>\n<p>Error code 501\.\n<p>Message: Unsupported method \('OPTIONS'\)\.\n<p>Error code explanation: 501 = Server does not support this operation\.\n</body>\n$| p/websockify/ i/SimpleHTTP $1; Python $2/ cpe:/a:python:python:$2/ cpe:/a:python:simplehttpserver:$1/

##############################NEXT PROBE##############################
Probe TCP RTSPRequest q|OPTIONS / RTSP/1.0\r\n\r\n|
rarity 5
ports 80,554,3052,3372,5000,7070,8080,10000
sslports 322
fallback GetRequest

match raop m|^RTSP/1\.0 401 Unauthorized\r\nWWW-Authenticate: Digest realm=\"raop\", nonce=\"[0-9A-F]{40}\"\r\nContent-Length: 0\r\n\r\n$| p/Remote Audio Output Protocol/ i/Rogue Amoeba Airfoil speakers/ d/media device/

match rtsp m|^RTSP/1\.0 200 OK\r\nCSeq: 0\r\nDate: .*\r\nServer: RealServer Version (\d[-.\w]+) \(win32\)\r\n| p/Realserver RTSP/ v/$1/ o/Windows/ cpe:/o:microsoft:windows/a
match rtsp m|^RTSP/1\.0 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: RealMedia EncoderServer Version (\d[-.\w]+) \(win32\)\r\n|s p/RealMedia EncoderServer/ v/$1/ o/Windows/ cpe:/o:microsoft:windows/a
match rtsp m|^RTSP/1\.0 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: RealServer Version (\d[-.\w]+) \(([-.+\w]+)\)\r\n|s p/RealOne Server/ v/$1/ i/$2/
match rtsp m|^RTSP/1\.0 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: Helix [\w ]*Server Version ([\d.]+) \(win32\)\r\n|s p/Helix DNA Server/ v/$1/ o/Windows/ cpe:/o:microsoft:windows/a
match rtsp m|^RTSP/1\.0 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: Helix [\w ]*Server Plus Version ([\d.]+) \(win32\)|s p/Helix DNA Server Plus/ v/$1/ o/Windows/ cpe:/o:microsoft:windows/a
match rtsp m|^RTSP/1\.0 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: Helix [\w ]*Server Version ([\d.]+) \((linux-[^)\r\n]+)\)|s p/Helix DNA Server/ v/$1/ i/$2/ o/Linux/ cpe:/o:linux:linux_kernel/a
match rtsp m|^RTSP/1\.0 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: Helix [\w ]*Server Version ([\d.]+) \(sunos-([\d.]+)-sparc-server\)|s p/Helix DNA Server/ v/$1/ i/SunOS $2 sparc/ o/SunOS/ cpe:/o:sun:sunos:$2/
match rtsp m|^RTSP/1\.0 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: Helix Server Version ([\d.]+) \(sunos-([\d.]+)-sparc-server\)|s p/Helix DNA Server/ v/$1/ i/SunOS $2 sparc/ o/SunOS/ cpe:/o:sun:sunos:$2/
match rtsp m|^RTSP/1\.0 \d\d\d (?:[^\r\n]*\r\n(?!\r\n))*?Server: Helix Server Version ([\d.]+) \(win32\)|s p/Helix DNA Server/ v/$1/ o/Windows/ cpe:/o:microsoft:windows/a

match rtsp m|^RTSP/1\.0 \d\d\d .*\r\nServer: DSS/([\d.]+) \(Build/[\d.]+; Platform/Win32| p/Darwin Streaming Server/ v/$1/ o/Windows/ cpe:/o:microsoft:windows/a
match rtsp m|^RTSP/1\.0 \d\d\d .*\r\nServer: DSS/([\d.]+) \(Build/[\d.]+; Platform/Solaris| p/Darwin Streaming Server/ v/$1/ o/Solaris/ cpe:/o:sun:sunos/a
match rtsp m|^RTSP/1\.0 \d\d\d .*\r\nServer: DSS/([\d.]+) \(Build/[\d.]+; Platform/Linux| p/Darwin Streaming Server/ v/$1/ o/Linux/ cpe:/o:linux:linux_kernel/a
match rtsp m|^RTSP/1\.0 \d\d\d .*\r\nServer: DSS/([\d.]+) \(Build/[\d.]+; Platform/FreeBSD| p/Darwin Streaming Server/ v/$1/ o/FreeBSD/ cpe:/o:freebsd:freebsd/a
match rtsp m|^RTSP/1\.0 \d\d\d .*\r\nPublic: DESCRIBE, GET_PARAMETER, PAUSE, PLAY, SETUP, TEARDOWN\r\n\r\n| p/Axis 207W Webcam rtspd/
match rtsp m|^RTSP/1\.0 200 OK\r\nAudio-Jack-Status: connected; type=digital\r\n| p/RogueAmoeba Airfoil rtspd/ o/Mac OS X/ cpe:/o:apple:mac_os_x/a
match rtsp m|^RTSP/1\.0 200 OK\r\nServer: AirTunes/([\w._-]+)\r\nAudio-Jack-Status: connected; type=analog\r\nPublic: ANNOUNCE, SETUP, RECORD, PAUSE, FLUSH, TEARDOWN, OPTIONS, GET_PARAMETER, SET_PARAMETER, POST, GET\r\n\r\n| p/RogueAmoeba Airfoil rtspd/ v/$1/ o/Mac OS X/ cpe:/o:apple:mac_os_x/a
match rtsp m|^RTSP/1\.0 200 OK\r\nAudio-Jack-Status: connected; type=analog\r\nCSeq: \r\nPublic: ANNOUNCE, SETUP, RECORD, PAUSE, FLUSH, TEARDOWN, OPTIONS, GET_PARAMETER, SET_PARAMETER\r\n\r\n| p/Boxee rtspd/ d/media device/
match rtsp m|^RTSP/1\.0 200 OK\r\nServer: vlc ([\w._-]+)\r\n| p/VideoLAN/ v/$1/ cpe:/a:videolan:vlc_media_player:$1/
match rtsp m|^RTSP/1\.0 200 OK\r\nPublic: ANNOUNCE, SETUP, RECORD, PAUSE, FLUSH, TEARDOWN, OPTIONS, GET_PARAMETER, SET_PARAMETER, POST, GET\r\nServer: AirTunes/([\w._-]+)\r\n\r\n| p/Apple AirTunes rtspd/ v/$1/ i/Apple TV/ d/media device/ o/Mac OS X/ cpe:/a:apple:apple_tv/ cpe:/o:apple:mac_os_x/a
match rtsp m|^RTSP/1\.0 400 Bad Request\r\n\r\n$| p/Apple AirTunes rtspd/ o/Mac OS X/ cpe:/o:apple:mac_os_x/a
match rtsp m|^RTSP/1\.0 400 Bad Request\r\nServer: AirTunes/([\w._-]+)\r\n\r\n| p/Apple AirTunes rtspd/ v/$1/
match rtsp m|^RTSP/1\.0 453 Not Enough Bandwidth\r\nServer: AirTunes/([\w._-]+)\r\n\r\n| p/Apple AirTunes rtspd/ v/$1/ i/bandwidth maxed out/
match rtsp m|^RTSP/1\.0 200 OK\r\nServer: VLC/([\w._-]+)\r\nContent-Length: 0\r\nPublic: DESCRIBE,SETUP,TEARDOWN,PLAY,PAUSE,GET_PARAMETER\r\n\r\n| p/VLC rtspd/ v/$1/ cpe:/a:videolan:vlc_media_player:$1/

match rtsp m|^RTSP/2\.0 200 OK\r\nCSeq: 0\r\nPublic: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE\r\n\r\n$| p/TwonkyMedia rtspd/
match rtsp m|^RTSP/1\.0 200 OK\r\nServer: iCanSystem/([\w._-]+)\r\nCseq: \r\nPublic: DESCRIBE, SETUP, PLAY, PAUSE, TEARDOWN, OPTIONS\r\n\r\n$| p/iCanSystem rtspd/ v/$1/ d/webcam/
match rtsp m|^RTSP/1\.0 200 OK\r\nPublic: DESCRIBE, GET_PARAMETER, PAUSE, PLAY, SETUP, SET_PARAMETER, TEARDOWN\r\n\r\n$| p/AXIS 207W or 212 PTZ network camera rtspd/ d/webcam/
match rtsp m|^RTSP/1\.0 200 OK\r\nPublic: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, SET_PARAMETER\r\n\r\n$| p/Avtech MPEG4 DVR control rtspd/
match rtsp m|^RTSP/1\.0 200 OK\r\nSupported: play\.basic, con\.persistent\r\nCseq: 0\r\nServer: Wowza Media Server ([\w._-]+) build(\d+)\r\nPublic: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, OPTIONS, ANNOUNCE, RECORD, GET_PARAMETER\r\n\r\n$| p/Wowza Media Server rtspd/ v/$1 build $2/ cpe:/a:wowza:wowza_media_server:$1/
match rtsp m|^RTSP/1\.0 200 OK\r\nSupported: play\.basic, con\.persistent\r\nCseq: 0\r\nServer: Wowza Streaming Engine ([\w._-]+) build(\d+)\r\nPublic: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, OPTIONS, ANNOUNCE, RECORD, GET_PARAMETER\r\nCache-Control: no-cache\r\n\r\n$| p/Wowza Streaming Engine rtspd/ v/$1 build $2/ cpe:/a:wowza:wowza_streaming_engine:$1/
match rtsp m|^RTSP/1\.0 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: Helix Mobile Server Version ([\w._-]+) \(win32\) \(RealServer compatible\)\r\nPublic: OPTIONS, DESCRIBE, PLAY, PAUSE, SETUP, GET_PARAMETER, SET_PARAMETER, TEARDOWN\r\nTurboPlay: 1\r\nRealChallenge1: [0-9a-f]+\r\nStatsMask: 8\r\n\r\n$|s p/Helix Mobile Server rtspd/ v/$1/
match rtsp m|^RTSP/1\.0 200 OK\r\n(?:[^\r\n]+\r\n)*?Server: Helix Mobile Server Version ([\w._-]+) \(win32\) \(RealServer compatible\)\r\nPublic: OPTIONS, DESCRIBE, ANNOUNCE, PLAY, PAUSE, SETUP, GET_PARAMETER, SET_PARAMETER, TEARDOWN\r\nTurboPlay: 1\r\nRealChallenge1: [0-9a-f]+\r\nStatsMask: 8\r\n\r\n$|s p/Helix Mobile Server rtspd/ v/$1/
match rtsp m|^RTSP/1\.0 200 OK\r\nCseq: 0\r\nPublic: OPTIONS,DESCRIBE,SETUP,PLAY,PING,PAUSE,TEARDOWN\r\n\r\n$| p/Cisco WVC54GCA webcam rtspd/ d/webcam/ cpe:/h:cisco:wvc54gca/
match rtsp m|^RTSP/1\.0 400 Bad Request\r\nDate: .*\r\nallow: OPTIONS, DESCRIBE, SETUP, PLAY, TEARDOWN\r\n\r\n$| p/ACTi surveillance camera rtspd/ d/webcam/
match rtsp m|^RTSP/1\.0 400 Bad Request\r\nServer: Mango DSP RTSP Stack\r\n\r\n| p/Mango DSP AVS Raven-M video server rtspd/ d/media device/
match rtsp m|^RTSP/1\.0 200 OK\r\nCSeq: -1\r\nDate: .* GMT\r\nPublic: OPTIONS, DESCRIBE, PLAY, SETUP, TEARDOWN\r\n\r\n$| p/Vivotek IP7131 or IP7138 webcam rtspd/ d/webcam/ cpe:/h:vivotek:ip7131/ cpe:/h:vivotek:ip7138/
match rtsp m|^RTSP/1\.0 200 OK\r\nCSeq: -1\r\nDate: .* GMT\r\nPublic: OPTIONS, DESCRIBE, PLAY, SETUP, GET_PARAMETER, SET_PARAMETER, TEARDOWN\r\n\r\n| p/Vivotek FD8134V webcam rtspd/ d/webcam/ cpe:/h:vivotek:fd8134v/
match rtsp m|^RTSP/1\.0 200 OK\r\nPublic: OPTIONS, ANNOUNCE, SETUP, RECORD, SET_PARAMETER, GET_PARAMETER, FLUSH, TEARDOWN, POST\r\n\r\n| p/Freebox rtspd/ d/media device/
match rtsp m|^RTSP/1\.0 401 Unauthorized\r\nCSeq: 0\r\nDate: .*\r\nExpires: .*\r\nCache-Control: must-revalidate\r\nWWW-Authenticate: Digest realm=\"NET-i\", nonce=\"000000000000000000000000[0-9A-F]{8}\"\r\n\r\n| p/Samsung SNB-2000 webcam rtspd/ d/webcam/ cpe:/h:samsung:snb-2000/
match rtsp m|^RTSP/1\.0 200 OK 200\r\n(?:[^\r\n]+\r\n)*?Server: Amino streamer\r\n|s p/Amino AmiNET set-top box rtspd/ d/media device/
match rtsp m|^RTSP/1\.0 200 OK\r\nServer: GM Streaming Server v([\w._-]+)\r\nPublic: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE\r\n\r\n$| p/GM Streaming Server rtspd/ v/$1/ d/webcam/
match rtsp m|^RTSP/1\.0 400 Bad Request\r\nCSeq: 0\r\n\r\n| p/Sanyo VCC-HD2300 webcam rtspd/ d/webcam/ cpe:/h:sanyo:vcc-hd2300/
match rtsp m|^RTSP/1\.0 401 Unauthorized\r\nCSeq: 0\r\nWWW-Authenticate: Basic realm=\"Arecont Vision\"\r\n\r\n| p/Arecont Vision surveillance camera rtspd/ d/webcam/
match rtsp m|^RTSP/1\.0 400 Bad Request\r\nDate: .* GMT\r\nAllow: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER\r\n\r\n| p/D-Link DCS-2130 or Pelco IDE10DN webcam rtspd/ d/webcam/ cpe:/h:dlink:dcs-2130/ cpe:/h:pelco:ide10dn/
match rtsp m|^RTSP/1\.0 200 OK\r\nCSeq: 0\r\nDate: .*\r\nServer: RealMedia Server Version ([\d.]+) \(([^)]+)\)\r\nPublic: OPTIONS, DESCRIBE, ANNOUNCE, SETUP, GET_PARAMETER, SET_PARAMETER, TEARDOWN\r\nRealChallenge1: | p/RealMedia Server/ v/$1/ o/$2/
match rtsp m|^RTSP/1\.0 400 Bad Request\r\nDate: .*\r\nAllow: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE\r\n\r\n| p/NUUO IP Surveillance rtpsd/ d/webcam/
match rtsp m|^RTSP/1\.0 400 Bad Request\r\nDate: .*\r\nAllow: OPTIONS, DESCRIBE, SETUP, TEARDOWN, SET_PARAMETER, PLAY\r\n\r\n| p/Planet ICA-HM132 or TRENDnet TV IP302PI rtspd/ d/webcam/ cpe:/h:planet:ica-hm132/ cpe:/h:trendnet:tv_ip302pi/
match rtsp m|^RTSP/1\.0 400 Bad Request\r\nDate: .*\r\nAllow: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, SET_PARAMETER\r\n\r\n| p/Live555 Streaming Server rtspd/
match rtsp m|^RTSP/1\.0 200 OK\r\nAudio-Jack-Status: .*\r\nPublic: ANNOUNCE, SETUP, RECORD, PAUSE, FLUSH, TEARDOWN, OPTIONS, GET_PARAMETER, SET_PARAMETER\r\n\r\n| p/Shairport rtspd/
match rtsp m|^RTSP/1\.0 400 Bad Request\r\nServer: Optelecom-NKF RTSPServer/([\w._-]+)\r\n\r\n| p/Optelecom-NKF rtspd/ v/$1/ d/webcam/
match rtsp m|^RTSP/1\.0 200 OK\r\nServer: HiIpcam/([\w._-]+) VodServer/([\w._-]+)\r\nPublic: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY,SET_PARAMETER,GET_PARAMETER\r\n\r\n| p/VODServer rtspd/ v/$2/ i/HiIpcam $1/
match rtsp m|^RTSP/1\.0 401 Unauthorized\r\nWWW-Authenticate: Digest realm=\"Hikvision\", nonce=\"[\da-f]{32}\", stale=\"FALSE\"\r\nWWW-Authenticate: Basic realm=\"/\"\r\n\r\n| p/Hikvision DVR rtspd/ d/media device/
match rtsp m|^RTSP/1\.0 200 OK\r\nPublic: ANNOUNCE, SETUP, RECORD, PAUSE, FLUSH, TEARDOWN, OPTIONS, GET_PARAMETER, SET_PARAMETER, POST, GET, PUT\r\nServer: AirTunes/([\w._-]+)\r\n\r\n| p/AirTunes rtspd/ v/$1/ cpe:/a:apple:airtunes:$1/
# TP-LINK Wireless N Gigabit Router WR1043ND
match rtsp m|^RTSP/1\.0 200 OK\r\nCSeq: 0\r\nDate: .*\r\nPublic: OPTIONS, DESCRIBE, SETUP, PLAY, PAUSE, TEARDOWN, GET_PARAMETER, SET_PARAMETER\r\n\r\n$| p/TP-LINK WAP rtspd/ d/WAP/
match rtsp m|^RTSP/1\.0 400 Bad Request\r\nDate: \d\d\d\d/\d\d?/\d\d?\r\nAllow: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER\r\n\r\n| p/Monster Digital Villain or Denver AC-5000W MK2 rtspd/ d/webcam/
match rtsp m|^RTSP/1\.0 200 OK\r\nServer: HiIpcam/(V\d+R\d+) VodServer/([\d.]+)\r\nPublic: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY\r\n\r\n| p/HiLinux IP camera rtspd/ v/$1/ i/VodServer $2/ d/webcam/
match rtsp m|^RTSP/1\.0 401 Unauthorized\r\nWWW-Authenticate: Basic realm="device"\r\nServer: Dahua Rtsp Server\r\nContent-Length: 0\r\n\r\n| p/Dahua IP camera rtspd/
match rtsp m|^RTSP/1\.0 404 Not Found\r\nServer: AvigilonOnvifNvt/([\d.]+)\r\n| p/Avigilon ONVIF camera rtspd/ v/$1/ d/webcam/

# IQinVision IQeye3 RTSP, this is pretty generic, leaving in (Brandon)
match rtsp m|^RTSP/1\.0 200 OK\r\nServer: Gordian Embedded([\d\.]+)\r\n(?:[^\r\n]+\r\n)*?Public: OPTIONS, DESCRIBE, SETUP, PLAY, TEARDOWN\r\n|s p/Gordian httpd/ v/$1/ i/IQinVision IQeye3 webcam rtspd/ d/webcam/
match rtsp m|^RTSP/1\.0 200 OK\r\nServer: H264DVR ([\d.]+)\r\nPublic: OPTIONS, DESCRIBE, SETUP, TEARDOWN, GET_PARAMETER,(?: SET_PARAMETER,) PLAY, PAUSE\r\n\r\n| p/H264DVR rtspd/ v/$1/
match rtsp m|^RTSP/1\.0 403 Forbidden\r\nContent-Length: 0\r\nServer: AirTunes/([\d.]+)\r\n\r\n| p/AirTunes rtspd/ v/$1/ cpe:/a:apple:airtunes:$1/
match rtsp m|^RTSP/1\.0 200 OK\r\nPublic: OPTIONS, DESCRIBE, SETUP, PLAY, TEARDOWN, PAUSE\r\n\r\n$| p/Hikvision DVR rtspd/
match rtsp m|^RTSP/1\.0 200 OK\r\nCSeq: 0\r\nPublic: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE,GET_PARAMETER\r\n\r\n$| p/Kodi OSMC rtspd/
match rtsp m|^RTSP/1\.0 200 OK\r\nCSeq: \r\nPublic: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE\r\nServer: HomeMonitor HD Pro\r\n\r\n| p/Y-cam HomeMonitor HD Pro rtspd/ d/webcam/ cpe:/h:y-cam:homemonitor_hd_pro/
match rtsp m|^RTSP/1\.0 200 OK\r\nServer: AirTunes/([\d.]+)\r\nPublic: ANNOUNCE, SETUP, RECORD, PAUSE, FLUSH, TEARDOWN, OPTIONS, GET_PARAMETER, SET_PARAMETER\r\n\r\n| p/Apple AirTunes rtspd/ v/$1/ cpe:/a:apple:airtunes:$1/
match rtsp m|^RTSP/1\.0 200 OK\r\nCSeq: 0\r\nServer: Wowza Streaming Engine ([\d.]+) build ?(\d+)\r\nCache-Control: no-cache\r\nPublic: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, OPTIONS, ANNOUNCE, RECORD, GET_PARAMETER\r\n| p/Wowza Streaming Engine rtspd/ v/$1 build $2/ cpe:/a:wowza:wowza_streaming_engine:$1/

match http m|^HTTP/1\.1 403 Forbidden\r\nContent-Type: text/html\r\nServer: Allegro-Software-RomPager/([\d.]+).*This object on the APC Management Web Server is protected and requires a secure socket connection\.|s p/Allegro RomPager/ v/$1/ i/APC http config/ d/power-device/ cpe:/a:allegro:rompager:$1/
match http m|^HTTP/1\.1 405 Method Not Allowed\r\nAllow: GET, HEAD, POST, PUT\r\nContent-Length: 0\r\nServer: Allegro-Software-RomPager/([\d.]+)\r\n\r\n$| p/Allegro RomPager/ v/$1/ cpe:/a:allegro:rompager:$1/

match http m|^HTTP/1\.1 400 Bad Request\r\nDate: .*\r\nServer: FineGround Performance Server\r\n| p/Fineground performance httpd/
match http m|^RTSP/1\.0 501 Not Implemented\r\nServer: Embedded HTTP Server ([\d.]+)\r\n| p/Embedded HTTP Server/ v/$1/

match http m|^HTTP/1\.1 400 Bad Request\r\nServer: Virata-EmWeb/R([\d_]+)\r\nContent-Length: 0\r\n\r\n400 Bad Request\r\n$| p/Virata-EmWeb/ v/$SUBST(1,"_",".")/ i/HP printer http config/ d/printer/ cpe:/a:virata:emweb:$SUBST(1,"_",".")/a

match http m|^HTTP/1\.1 505 HTTP Version Not Supported\r\nContent-Length: 0\r\n\r\n| p/EMC Navisphere CIM Object Manager httpd/
match http m|^HTTP/1\.0 200 OK\r\nPragma: no-cache\r\nCache-Control: no-store\r\nContent-Type: text/html\r\nContent-Length: 229\r\n\r\n<html>\r\n<head>\r\n<title> Error </title>\r\n</head>\r\n<body>\r\n<!-- user defined strings -->\r\nAccess denied due to security policy violation<br><br><!-- reject ID -->\r\nReject ID: [0-9a-f-]+\r\n<br>\r\n<br>\r\n</body>\r\n</html>$| p/Check Point R65 firewall http config/ d/firewall/ cpe:/h:checkpoint:r65/a
match http m|^HTTP/1\.1 406 Not Acceptable\r\nCache-Control: no-cache\r\nPragma: no-cache\r\nContent-Type: text/html; charset=utf-8\r\nConnection: close\r\nContent-Length: 616\r\n\r\n<HTML><HEAD>\n<TITLE>Request Error</TITLE>| p/Blue Coat proxy server/ d/proxy server/
match http m|^<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>400 Bad Request</h1></center>\r\n<hr><center>nginx</center>\r\n</body>\r\n</html>\r\n$| p/nginx/ cpe:/a:igor_sysoev:nginx/
match http m|^<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>400 Bad Request</h1></center>\r\n<hr><center>nginx/([\w._-]+)</center>\r\n</body>\r\n</html>\r\n$| p/nginx/ v/$1/ cpe:/a:igor_sysoev:nginx:$1/
match http m|^<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body bgcolor=\"white\">\r\n<center><h1>400 Bad Request</h1></center>\r\n<hr><center>cloudflare-nginx</center>\r\n</body>\r\n</html>\r\n$| p/cloudflare-nginx/
match http m|^<head><title>400 Bad Request</title></head>\r\n<h1>400 Bad Request</h1>\r\n\r\n| p/nginx/ cpe:/a:igor_sysoev:nginx/
# Counting on this 404 being unique enough here in RTSPRequest.
match http m|^HTTP/1\.0 404 Not Found\r\n\r\n$| p/XBT BitTorrent tracker http interface/
match http m|^HTTP/1\.1 400 Bad Request\n\n$| p/Adaptec Storage Manager Agent httpd/
match http m|^HTTP/1\.1 406 Not Acceptable\r\n.*<blockquote>\n<TABLE border=0 cellPadding=1 width=\"80%\">\n<TR><TD>\n<FONT face=\"Helvetica\">\n<big>Request Error \(unsupported_protocol\)</big>\n<BR>\n<BR>\n</FONT>|s p/Dreambox httpd/ d/media device/
match http-proxy m|^HTTP/1\.1 400 Bad Request \( The data is invalid\.  \)\r\n| p/Microsoft ISA Server http proxy/ o/Windows/ cpe:/a:microsoft:isa_server/ cpe:/o:microsoft:windows/a
match http m|^HTTP/1\.0 400 Bad Request\r\nContent-Type: text/html; charset=UTF-8\r\nPragma: no-cache\r\nConnection: close\r\nDate: .*\r\n\r\n<HTML><HEAD><TITLE>400 Bad Request</TITLE></HEAD>\r\n<BODY><H1>400 Bad Request</H1>\r\nThe request could not be understood by the server due to malformed syntax\r\n</BODY></HTML>$| p/Trend Micro CSC module for Cisco ASA 5510 firewall httpd/ cpe:/h:cisco:asa_5510/a
match http m|^HTTP/1\.1 400 Bad Request\r\nContent-Type: text/plain\r\nConnection: close\r\n\r\nError 400: Bad Request\nCan not parse request: \[OPTIONS\]| p/TomTom httpd/
match http m|^HTTP/1\.1 505 HTTP Version Not Supported\r\nDate: .*\r\nConnection: close\r\nServer: Apache\r\n\r\n| p/Apache Tomcat httpd/ cpe:/a:apache:tomcat/
match http m|^HTTP/1\.1 400 Bad Request\r\nDate: .*\r\nContent-Length: 0\r\n\r\n400 Bad Request\r\n| p/Cisco Wireless LAN Controller httpd/ d/remote management/ cpe:/o:cisco:wireless_lan_controller_software/
match http m|^HTTP/1\.1 505 HTTP Version Not Supported\r\nContent-Type: text/html\r\nContent-Length: 166\r\n\r\n<html><head><title>505 HTTP Version Not Supported</title></head><body><h1>HTTP Version Not Supported</h1><p>HTTP versions 1\.0 and 1\.1 are supported\.</p></body></html>| p/Mitel SIP DEC VoIP phone http config/ d/VoIP phone/
#match http m|^<head>\n<title>Error response</title>\n</head>\n<body>\n<h1>Error response</h1>\n<p>Error code 400\.\n<p>Message: Bad request version \('RTSP/1\.0'\)\.\n<p>Error code explanation: 400 = Bad request syntax or unsupported method\.\n</body>\n| p/BaseHTTPServer/ cpe:/a:python:basehttpserver/a
match http m|^HTTP/1\.1 400 Bad Request\r\nContent-Type: text/plain\r\nContent-Length: 59\r\nConnection: close\r\n\r\nError 400: Bad Request\nCannot parse HTTP request: \[OPTIONS\]$| p/Mongoose httpd/ cpe:/a:cesanta:mongoose/
match http m|^HTTP/1\.1 505 HTTP Version not supported\r\nContent-Length: 0\r\nDate: .* GMT\r\nConnection: close\r\n\r\n| p/Konica Minolta bizhub C452 OpenAPI/ d/printer/ cpe:/h:konicaminolta:bizhub_c452/
match http m|^HTTP/1\.0 500\r\nContent-Type: text/html; charset=UTF-8\r\nCache-Control: no-cache\r\nPragma: no-cache\r\nExpires: 0\r\nConnection: close\r\n\r\n<!DOCTYPE html>\n<html>\n<head>\n  <title>Application Firewall Error</title>\n  <style type="text/css" media="screen">\n    body \{ font-family: Arial, Garamond, sans-serif; padding: 40px; background-color: #333333; \}\n| p/Imperva WAF/
match http m|^HTTP/1\.1 400 Bad Request\r\nConnection: close\r\nContent-Type: text/html; charset=UTF-8\r\nCache-Control: no-cache\r\nDate: .*\r\n\r\n<HTML><HEAD><TITLE>400 Bad Request</TITLE></HEAD>\r\n<BODY><H1>400 Bad Request</H1>\r\n</BODY></HTML>\r\n| p/Trend Micro OfficeScan/ cpe:/a:trend_micro:officescan/
match http m|^<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body bgcolor="white">\r\n<center><h1>400 Bad Request</h1></center>\r\n<hr><center></center>\r\n</body>\r\n</html>\r\n| p/Palo Alto GlobalProtect Gateway httpd/ cpe:/a:paloaltonetworks:globalprotect/

match http-proxy m|^HTTP/1\.1 503 Service Unavailable\r\ndate: .*\r\nconnection: close\r\n\r\n<html><body><pre><h1>Service unavailable</h1></pre></body></html>\n| p/HTTP Replicator proxy/
match http-proxy m|^HTTP/1\.0 400 Bad Request\r\nContent-Length: 103\r\nConnection: close\r\n\r\n<html><body> <h2>Mikrotik HttpProxy</h2>\n\r<hr>\n\r<h2>\n\rError: 400 Bad Request\r\n\r\n</h2>\n\r</body></html>\n\r$| p/MikroTik HttpProxy/ d/router/
match http-proxy m|^RTSP/1\.0 400 Bad Request\r\nServer: PanWeb Server/([\w._-]+)\r\n(?:[^\r\n]+\r\n)*?Keep-Alive: timeout=60, max=2000\r\nContent-Type: text/html\r\nContent-length: 130\r\n\r\n<HTML><HEAD><TITLE>Document Error: Bad Request</TITLE>|s p/Palo Alto PanWeb httpd/ v/$1/ d/proxy server/ cpe:/a:paloaltonetworks:panweb:$1/

match remote-control m|^\x01\0\0\0\0\0\0$| p/Alchemy Lab Remote Control PRO remote management/ d/remote management/

match rtsp-proxy m|^RTSP/1\.0 200 OK\r\n(?:[^\r\n]+\r\n)*?Via: [\d.]+ ([-\w_.]+) \(NetCache NetApp/([\w.]+)\)\r\n\r\n|s p/NetApp NetCache rtsp proxy/ v/$2/ h/$1/ cpe:/a:netapp:netcache:$2/
match rtsp-proxy m|^RTSP/1\.0 451 Parameter Not Understood\r\n\r\n$| p/RTSP Proxy Reference Implementation/
match rtsp-proxy m|^RTSP/1\.0 403 Forbidden: Proxy not licensed\r\nSession: \w+\r\n\r\n| p/Blue Coat rtsp proxy/ i/Unlicensed/

match sonicmq m|^\x1a\xff\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x08\xff\xff\xff\xf1\0\0\0O$| p/Novell Sentinel SonicMQ broker/

match powerchute m|^RTSP/1\.0 400 Bad request\r\nContent-type: text/html\r\n\r\n| p/APC PowerChute Agent/ v/6.x|7.x/ d/power-device/
match powerchute m|^RTSP/1\.0 400 Bad request\nContent-type: text/html\n\n| p/APC PowerChute Agent/ v/7.X/ d/power-device/
match msdtc m|^ERROR\n$|s p/Microsoft Distributed Transaction Coordinator/ i/error/ o/Windows/ cpe:/o:microsoft:windows/a

match upnp m|^HTTP/1\.1 400 Bad Request\r\nDate: .*\r\nServer: Unknown/0\.0 UPnP/([\d.]+) Virata-EmWeb/([-.\w]+)\r\n| p/Virata-EmWeb/ v/$SUBST(2,"_",".")/ i/ReplayTV UPnP; UPnP $1/ cpe:/a:virata:emweb:$SUBST(2,"_",".")/a
# Xbox One UPnP unicast eventing listener or IIS 8.5 on Windows 2012
match upnp m|^HTTP/1\.1 400 Bad Request\r\nContent-Type: text/html; charset=us-ascii\r\nDate: .*\r\nConnection: close\r\nContent-Length: \d+\r\n\r\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4\.01//EN\"\"http://www\.w3\.org/TR/html4/strict\.dtd\">| p/Microsoft IIS httpd/ cpe:/a:microsoft:internet_information_services/

# This probe sends an RPC "Null command" to the port for service
# 100000 (portmapper).
# Some of these numbers are abitrary (such as ID).  I could consider
# adding an \R escape in the string logic to provide a random byte.
# This would make IDS detection and such a bit harder.  On the other
# hand, that would make the response a little harder to recognize too.
##############################NEXT PROBE##############################
Probe TCP RPCCheck q|\x80\0\0\x28\x72\xFE\x1D\x13\0\0\0\0\0\0\0\x02\0\x01\x86\xA0\0\x01\x97\x7C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0|
rarity 4
ports 81,111,199,514,544,710,711,1433,2049,4045,4999,7000,8307,8333,17007,32750-32810,38978

match unicorn-ils m|^\xb5q\x83\x02\x05\xe0\x84\x03\x01\xe1\x82\x85\x03\x04\x93\xe0\x86\x03\x04\x93\xe0\x8c\x01\0\x9fn\x16Unicorn ([\w._-]+) Standard\x9fo\x11SIRSI Corporation\x9fp\x033\.0\xab&\(\$\x81\"Expected CONSTRUCTED PDU not found$| p/SirsiDynix Unicorn Integrated Library System/ v/$1/

match afp m|^\x01\x01\x86\xa0\xff\xff\xecj\0\0\0\0\0\0\0\0| p/Mac OS 9 AFP/ o/Mac OS 9/ cpe:/o:apple:mac_os:9/

match consul m|^\x82\xa5Error\xb2Handshake required\xa3Seq\0| p/HashiCorp Consul RPC/ cpe:/a:hashicorp:consul/

match airmedia-audio m|^AudioPro\x14\x10\x02\0\0\xacD \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0| p/Crestron AirMedia audio data channel/

match exportfs m|^(?:p9sk1@[\w._-]+ )*p9sk1@([\w._-]+)\0/bin/exportfs: auth_proxy: auth_proxy rpc write: : invalid argument\n| p/Plan 9 exportfs/ o/Plan 9/ h/$1/ cpe:/o:belllabs:plan_9/a

match goldengate m|^\0\+  ERROR\tMGR did not recognize the command\.\0| p/Oracle GoldenGate/ cpe:/a:oracle:goldengate/

match honeywell-confd m|^\0\0\0\0\0\0\+\xc1$| p/Honeywell confd/

match http m|^HTTP/1\.1 400 Bad Request\r\nServer: micro_httpd\r\nCache-Control: no-cache\r\nDate: .*\r\nContent-Type: text/html\r\nConnection: close\r\n\r\n<HTML><HEAD><TITLE>400 Bad Request</TITLE></HEAD>\n<BODY BGCOLOR=\"#cc9999\"><H4>400 Bad Request</H4>\nNo request found\.\n<HR>\n<ADDRESS><A HREF=\"http://www\.acme\.com/software/micro_httpd/\">micro_httpd</A></ADDRESS>\n</BODY></HTML>\n$| p/micro_httpd/ cpe:/a:acme:micro_httpd/

# reported for 3.8.1, 3.9.3
match jabber m|^<stream:error xmlns:stream="http://etherx\.jabber\.org/streams"><xml-not-well-formed xmlns="urn:ietf:params:xml:ns:xmpp-streams"/></stream:error>$| p/Ignite Realtime Openfire Jabber server/ v/3.9.3 or earlier/ cpe:/a:igniterealtime:openfire/
# https://issues.igniterealtime.org/browse/OF-811
match jabber m|^<stream:error xmlns:stream="http://etherx\.jabber\.org/streams"><not-well-formed xmlns="urn:ietf:params:xml:ns:xmpp-streams"/></stream:error>$| p/Ignite Realtime Openfire Jabber server/ v/3.10.0 or later/ cpe:/a:igniterealtime:openfire/
softmatch jabber m|^<stream:error |

match kdb m|^'char$| p/kdb+/ cpe:/a:kx_systems:kdb%2b/

match kerberos m|^\0\0\0Q~O0M\xa0\x03\x02\x01\x05\xa1\x03\x02\x01\x1e\xa4\x11\x18\x0f(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)Z\xa5\x05\x02\x03...\xa6\x03\x02\x01=\xa9\x15\x1b\x13<unspecified realm>\xaa\x0b0\t\xa0\x03\x02\x01\0\xa1\x020\0$|s p/Heimdal Kerberos/ i/server time: $1-$2-$3 $4:$5:$6Z/

match kapow-robot m|^<\?xml version=\"1\.0\" encoding=\"UTF-8\"\?>\n<!DOCTYPE rql PUBLIC \"-//Kapow Technologies//DTD RoboSuite Robot Query Language ([\w._-]+)//EN\" \"http://www\.kapowtech\.com/robosuite/rql/dtd/robot-query-language_[\w._-]+\.dtd\">\n<rql>\n  <server-error>\n    <message>com\.kapowtech\.robosuite\.api\.java\.rql\.RQLProtocolException: Invalid byte 1 of 1-byte UTF-8 sequence\.</message>| p/Kapow Robot Query Language/ v/$1/

match kvm m|^\0\0\0\0\0\x84\0\x10\x7c\x9f\xfb\0\0\0\0\0$| p/KVM daemon/

match lanrev-agent m|^\x01\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01| p/LANrev remote administration/

match mxie m|^\x80\x00\x00\x0c\x72\xfe\x1d\x13\x00\x00\x00\x01\x00\x00\x00\x02$| p/Zultys MXIE VoIP presence server/

# tcp/5000: Adaptive Server
# tcp/5001: Backup Server
# tcp/5002: Monitor Server
match sybase-adaptive m|^\0\x01\0\x08\0\0\x00\0$| p/Sybase Adaptive Server/ o/Windows/ cpe:/a:sybase:adaptive_server/ cpe:/o:microsoft:windows/a
match sybase-backup m|^\0\x01\0\x08\0\0\x01\0$| p/Sybase Backup Server/ o/Windows/ cpe:/a:sybase:backup_server/ cpe:/o:microsoft:windows/a

match syncsort-cmagent m|^\x80\0\0.\x0f\x02\x02\x06\t\x1d\x02\x11m\x04\x15\x17\x01\x06c\x7csww{t\x1b...On\x04\x0f\x1d\x19wE\x0f\x13\x15\x08\x13g\x06\x03\x15\x04\x08\x0f\x13e\x18fm.ug| p/Syncsort Backup Express cmagent/

# port 5566: https://www.synology.com/en-us/knowledgebase/DSM/tutorial/General/What_network_ports_are_used_by_Synology_services
match synobtrfsreplicad m|^\x80\0\0\(r\xfe\x1d\x13\0\0\0\x19| p/Synology Snapshot Replication shared folder/ d/storage-misc/

match tandem-print m|^\x01$| p/Sharp printer tandem printing/ d/printer/

# Distributed Relational Database Architecture (DRDA) OS/400 V5R2
# PRCCNVRM conversational protocol error.
match drda m|^\0\x15\xd0\x02\xff\xff\0\x0f\x12E\0\x06\x11I\0\x08\0\x05\x11\?\x06$| p/IBM DRDA/

# Microsoft SQLServer 6.5 on WinNT 4.0 SP6a
# Microsoft SQL Server 6.5 on WinNT 4.0
match ms-sql-s m|^\x04\x01\0C..\0\0\xaa\0\0\0/\x0f\xa2\x01\x0e.. Login failed\r\n\x14Microsoft SQL Server\0\0\0\xfd\0\xfd\0\0\0\0\0\x02$|s p/Microsoft SQL Server/ v/6.5/ o/Windows/ cpe:/a:microsoft:sql_server:6.5/ cpe:/o:microsoft:windows/a

match netman m|^\0\0\0 \0\0\0\x01\xd5\x1f\x0fK\0\0\0\0\x18\?c\0\0\0\0\0\x01\0\0\x00([\w._-]+)   $| p/Tivoli Workload Scheduler Netman/ v/$1/

match nim m|^\0$| p/IBM AIX Network Installation Management/ o/AIX/ cpe:/o:ibm:aix/a

match ossec-agent m=^\xdf\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x97\|\0\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x10\0\0\0$= p/OSSEC Agent/ cpe:/a:ossec:ossec/

match riverbed-stats m|^a\x0f\x02\x04fiji\x02\x01\0\x02\x01\0\x02\x01\0$| p/Riverbed Steelhead Mobile caching proxy statistics/ d/proxy server/

#RPC Response, MSG_ACCEPTED, any AUTH type
match rpcbind m|^\x80\0\0.\x72\xfe\x1d\x13\0\0\0\x01\0\0\0\0\0\0\0[\x00-\x03\x06]|
# RPC Response, MSG_DENIED, RPC_MISMATCH
match rpcbind m|^\x80\0\0.\x72\xfe\x1d\x13\0\0\0\x01\0\0\0\x01\0\0\0\x00\0\0\0[\x00-\x02]\0\0\0[\x00-\x02]|
# RPC Response, MSG_DENIED, AUTH_ERROR, any status
match rpcbind m|^\x80\0\0.\x72\xfe\x1d\x13\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0[\x00-\x07]|

match rtdscchcch m|^\x03\x11\0\x02V1\xec\xe7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xdd\0\x04\0\0| p/SIX Market Data Feed (MDF)/ cpe:/a:six_group:market_data_feed/

# The following matchline commented out as it is actually a match for a TLS
# negotiation error message (15 03 01 00 02 02 0a) - http://seclists.org/nmap-dev/2010/q2/465
# match raid-mgt m|^\x15\x03\x01\0\x02\x02\n$| p/Promise Array Manager RAID management/
match raid-mon m|^\0 \0.{5}\x04\0\0\0\x02\\@|s p/Promise RAID message agent/
match raid-mon m|^\x02 \0.{5}\x04\0\0\0\x02\\@|s p/Promise RAID message agent/

match solidworks-remotesolve m|^\0\0\0\0\0\0\0\0T\x01\x04\x80| p/SolidWorks Remote Solver for Flow Simulation/ v/2009/

match telnet m=^\xff\xfb\x01\xff\xfb\x03\xff\xfb\0\xff\xfd\0Username: data_error\r\r\n\(rdata_error\r\r\ndata_error\r\r\ndata_error\r\r\ndata_error\r\r\ndata_error\r\r\ndata_error\r\r\ndata_error\r\r\ndata_error\r\r\ndata_error\r\r\n\|= p/Jungo OpenRG telnetd/ i/Actiontec MI424-WR/ d/WAP/ o/Linux/ cpe:/o:linux:linux_kernel/a
match telnet m=^\xff\xfb\x01\xff\xfb\x03\xff\xfb\0\xff\xfd\0Username: data_error\r\n\(rdata_error\r\ndata_error\r\ndata_error\r\ndata_error\r\ndata_error\r\ndata_error\r\ndata_error\r\ndata_error\r\ndata_error\r\n\|= p/Jungo OpenRG telnetd/ i/Linksys RV082 WAP/ d/WAP/ o/Linux 2.4/ cpe:/h:linksys:rv082/a cpe:/o:linux:linux_kernel:2.4/
match telnet m=^\xff\xfb\x01\xff\xfb\x03\xff\xfb\0\xff\xfd\0Log level 3\r\r\nUsername: data_error\r\r\n\(rdata_error\r\r\ndata_error\r\r\ndata_error\r\r\ndata_error\r\r\ndata_error\r\r\ndata_error\r\r\ndata_error\r\r\ndata_error\r\r\ndata_error\r\r\n\|= p/Jungo OpenRG telnetd/ i/Pirelli A125G wireless DSL router/ d/WAP/ o/Linux/ cpe:/o:linux:linux_kernel/a

# Version 4.2.4
match tina m|^\x80\0\0\x0c\0\0\0\x01\0\0\0\x11%\xf5:\0| p/Atempo Time Navigator/

# Vmware ESX 1.5.x Client Agent for Linux -- WAIT - I think this is erronous and is actually smux
# HP-UX 11 SNMP Unix Multiplexer (smux)
match smux m|^A\x01\x02$| p/HP-UX smux/ i/SNMP Unix Multiplexer/ o/HP-UX/ cpe:/o:hp:hp-ux/a
# Network Appliance ONTAP 6.3.3 shell
match shell m|^\x01Permission denied\.\n$| p/Netapp ONTAP rshd/ cpe:/a:netapp:data_ontap/
# HP-UX 11 Kerberized 'rsh' (v5)
match kshell m|^\x01remshd: connect: Connection refused\n$| p/HP-UX kerberized rsh/ o/HP-UX/ cpe:/o:hp:hp-ux/a
# Tumbleweed SecureTransport 4.1.1 Transaction Manager Non-Secure Port on Solaris
match securetransport m|^\xde\xad\xbe\xef\x04\0\xff\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1fem\.requestparserparser\.InvError| p/Tumbleweed SecureTransport Transaction Manager Non-Secure Port/
# ED2KLink Server v1.12 (Build 1014 or later)
match ed2klink m|^\x16\x15\x16\x16\x16\x12XW\]$| p/ED2KLink Server/
match sarad m|^NO LOGIN\0$| p/British National Corpud sarad/

match http m|^HTTP/1\.1 400 Bad Request\r\nDate: .*\r\nConnection: close\r\nContent-Type: text; charset=plain\r\nContent-Length: 16\r\n\r\ninvalid value 0 $| p/VMware hostd httpd/
match http m|^HTTP/1\.0 400 Bad Request\r\nContent-Length: \d+\r\nContent-Type: text/html\r\n\r\n<HTML><HEAD><TITLE>400 Bad Request \(ERR_INVALID_REQ\)</TITLE></HEAD><BODY><H1>400 Bad Request</H1><BR>ERR_INVALID_REQ<HR><B>Webserver</B>| p/AVM FRITZ!Box WLAN 7170 WAP http config/ d/WAP/

match upnp m|^HTTP/0\.0 400 Bad Request\r\nSERVER: Linux/([\w._+-]+), UPnP/([\w.]+), Intel SDK for UPnP devices ?/([\w._~-]+)\r\n| p/Intel UPnP reference SDK/ v/$3/ i/Linux $1; UPnP $2/ o/Linux/ cpe:/o:linux:linux_kernel:$1/
match upnp m|^HTTP/0\.0 400 Bad Request\r\nSERVER: Linux/([\w._+-]+), UPnP/([\w.]+), Portable SDK for UPnP devices ?/([\w._~-]+)\r\n| p/Portable SDK for UPnP/ v/$3/ i/Linux $1; UPnP $2/ o/Linux/ cpe:/o:linux:linux_kernel:$1/
match upnp m|^HTTP/1\.1 400 Bad Request\r\nSERVER: Linux/([\w._+-]+), UPnP/([\w.]+), Portable SDK for UPnP devices ?/([\w._~-]+)\r\n| p/Portable SDK for UPnP/ v/$3/ i/Linux $1; UPnP $2/ o/Linux/ cpe:/o:linux:linux_kernel:$1/

match virtualgl m|^VGL\x02\x01$| p/VirtualGL/

#Fortinet Firewall SSL VPN on port 10433 V5.0,build3608 GA Patch 7
match http m|^<HTML>\n<HEAD>\n<META http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n.*HTTP_NOT_IMPLEMENTED<br>|s p/Fortinet Firewall SSL VPN/

# Alert (Level: Fatal, Description: Unexpected Message|Protocol Version|Handshake Failure)
match ssl m|^\x15\x03[\x00-\x04]\0\x02\x02[\nF\x28]|

# Some HP printer service? Port 9110.
# match jetdirect m|^\0\0\(r\xfe\x1d\x13\0\0\0\0\0\0\0\x02\0\x01\x86\xa0\0\x01\x97\x7c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0$| d/HP printer/

##############################NEXT PROBE##############################
Probe UDP RPCCheck q|\x72\xFE\x1D\x13\0\0\0\0\0\0\0\x02\0\x01\x86\xA0\0\x01\x97\x7C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0|
rarity 1
ports 17,88,111,407,500,517,518,1419,2427,4045,10000,10080,12203,27960,32750-32810,38978

match amanda m|^Amanda ([\d.]+) NAK HANDLE  SEQ 0\nERROR expected \"Amanda\", got \"r\xfe\x1d\x13\"\n| p/Amanda backup service/ v/$1/ o/Unix/

# http://xbtt.sourceforge.net/udp_tracker_protocol.html ("scrape output")
match bittorrent-udp-tracker m|^\0\0\0\x02....\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0$|s p/BitTorrent UDP tracker/
match bittorrent-udp-tracker m|^\x03\0\0\0\0\x01\x86\xa0Connection ID missmatch\.\0| p/opentracker UDP tracker/ cpe:/a:dirk_engling:opentracker/

# http://bittorrent.org/beps/bep_0029.html
match bittorrent-utp m|^r\xfe\x1d\x13\0\0\0\0\0\0\0\0\0\0\0\0\xff\0\x03....$|s p/uTorrent uTP/ o/Windows/ cpe:/a:utorrent:utorrent/ cpe:/o:microsoft:windows/a
# Seems to be a bug here, with a time_t timestamp (0x4B......, ca. Dec 2009) instead of a microsecond count.
match bittorrent-utp m|^r\xfe\x1d\x13........\x7f\xff\xff\xff\xff\x02\x02..\0\x01\0\x08\0\0\0\0\0\0\0\0$|s

match brio m|^\0\0\x01\(\x16\x85..$|s p/Brio 8 business intelligence/

match dnastar m|^....\0{7}.,PSH,[\x21-\x7e]{55}\0{800}|s p/Dnastar Lasergene/ cpe:/a:dnastar:lasergene/

match slp-srvreg m|^\x02\x05\0\0\x12\0\0\0\0\0\0\x02\0\x02en\0\x0e$| p/IBM Director SLP Service Registration/ i/slp_srvreg.exe/ cpe:/a:ibm:director/

match radius m|^\x03\xfe\0\x14................$|s p/Juniper Steel-Belted Radius radiusd/

match rpcbind m|^\x72\xFE\x1D\x13\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01|
match rpcbind m|^\x72\xFE\x1D\x13\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02|
# OpenAFS 1.2.10 on Linux 2.4.22
match kerberos-sec m|^\x04\n\0\0\0\0\0\0\0\0\0\0\x04code = 4: packet version number unknown\0| p/OpenAFS/ cpe:/a:openafs:openafs/
# talk-server-0.17 (linux), ports 517-518/udp
match talk m|^\x01\xfe\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0| p/Talk server/
# Mandrake Linux 9.2, xinetd 2.3.11 chargen
match chargen m|NOPQRSTUVWXYZ\[\\\]\^_`abcdefghijklm|
match chargen m|^ !\"#\$%&'\(\)\*\+| p/SunOS chargen/ o/SunOS/ cpe:/o:sun:sunos/a

match isakmp m|^r\xfe\x1d\x13\0\0\0\0\0\0\0\x02\0\x01\x86\xa0\x0b\x10\x05\0\0\0\0\0\0\0\0| p/Openswan ISAKMP/ cpe:/a:openswan:openswan/
match isakmp m|^r\xfe\x1d\x13\0\0\0\0\0\0\0\x02\0\x01\x86\xa0\) % \0\0\0\0\0\0\0\$\0\0\0\x08\0\0\0\x05| p/StrongSwan ISAKMP/ cpe:/a:strongswan:strongswan/

match jetadmin m|^2;http://[\d.]+:\d+/;[\d.]+;\d+:\d+;\w+,[\d.]+,PLUGIN_LOADED| p/HP Jetadmin/

# http://staff.science.uva.nl/~arnoud/activities/NaoIntro/ConnectLantronix.c
match lantronix-config m|^\xff$| p/Lantronix DSTni networking chip configuration/

# https://github.com/cobyism/edimax-br-6528n/blob/master/AP/RTL8196C_1200/mp-daemon/UDPserver.c
match mp-automation m|^r\xfe\x1d\x13 ok| p/Realtek MP Automation daemon/ d/WAP/

match nameserver m|^help\r\n\r\n\xff\xbf\xf8\xb0\xff7\0\x18\0\0\0\x01\0\0\0\0| p/Solaris Internet Name Server/ o/Solaris/ cpe:/o:sun:sunos/a

match ppp m|^\x7e\xff\x7d\x23\xc0!}!#} }8}\"}&} } } } }#}\$\xc2'}%}&Q\x93\xee,}'}\"}\(}\"}\(D~| p/pppd/ v/2.4.5/

# Windows qotd service. Same as the TCP version. It's only in this
# Probe because this is the first UDP Probe that nmap tries.
match qotd m=^"(?:My spelling is Wobbly\.|Man can climb to the highest summits,|In Heaven an angel is nobody in particular\.|Assassination is the extreme form of censorship\.|When a stupid man is doing|We have no more right to consume happiness without|We want a few mad people now.|The secret of being miserable is to have leisure to|Here's the rule for bargains:|Oh the nerves, the nerves; the mysteries of this machine called man|A wonderful fact to reflect upon,|It was as true as taxes is\.)= p/Windows qotd/ i/English/ o/Windows/ cpe:/a:microsoft:qotd::::en/ cpe:/o:microsoft:windows/a
match qotd m=^"(?:Mi ortograf\xeda tiembla\. Es bueno revisarla,|un hombre puede escalar a las m\xe1s altas cumbre|Algo maravilloso a poner de manifiesto:|Cuando un necio hace algo de lo que se aveg\xfcenza,|En el cielo, un \xe1ngel no es nadie en concreto|Traigamos unos cuantos locos ahora\.|Era tan verdad como los impuestos\. Y no|Hay libros cortos que, para entenderlos como se merecen,|Quedarse en lo conocido por miedo a lo desconocido,|La prosperidad hace amistades, y la adversidad las|El uso principal de un PC es confirmar la ley de|Quedarse en lo conocido por miedo a lo desconocido,|Cuando las leyes son injustas, no obligan en el fuero|Magia equivale a cualquier avance en la ciencia\.|Vale mejor consumir vanidades de la vida,)= p/Windows qotd/ i/Spanish/ o/Windows/ cpe:/a:microsoft:qotd::::es/ cpe:/o:microsoft:windows/a
# Some Italian qotds start with a space instead of a "
match qotd m=^.(?:Voce dal sen fuggita|Semel in anno licet insanire|Cosa bella e mortal passa e non dura|Quando uno stupido compie qualcosa di cui si vergogna,|Se tu pagare come dici tu,|Fatti non foste a viver come bruti,|Sperare senza far niente e` come)= p/Windows qotd/ i/Italian/ o/Windows/ cpe:/a:microsoft:qotd::::it/ cpe:/o:microsoft:windows/a
match qotd m=^"(?:Prazos longos sao f\xa0ceis de subscrever\.|Deus, para a felicidade do homem, inventou a f\x82 e o amor\.|Ao vencido, \xa2dio ou compaixao, ao vencedor, as batatas\.|Quem nao sabe que ao p\x82 de cada bandeira p\xa3blica,|Nao te irrites se te pagarem mal um benef\xa1cio; antes cair|A vida, como a antiga Tebas, tem cem portas\.)= p/Windows qotd/ i/Portuguese/ cpe:/a:microsoft:qotd::::pt/
# The German version doesn't start with "
match qotd m=^(?:Wer wirklich Autorit\xe4t hat, wird sich nicht scheuen,|Moral ist immer die Zuflucht der Leute,|Beharrlichkeit wird zuweilen mit Eigensinn|Wer den Tag mit Lachen beginnt, hat ihn|Wenn uns keine Ausweg mehr bleibt,|Gesichter sind die Leseb\xfccher des Lebens|Grosse Ereignisse werfen mitunter ihre Schatten|Dichtung ist verpflichtet, sich nach den|Ohne Freihet geht das Leben|Liebe ist wie ein Verkehrsunfall\. Man wird angefahren)= p/Windows qotd/ i/German/ cpe:/a:microsoft:qotd::::de/
match qotd m=^"(?:Clovek ma tri cesty, jak moudre jednat\. Nejprve premyslenim|Co je vubec hodno toho, aby to bylo vykonano,|Fantazie je dulezitejsi nez vedeni\.|Potize narustaji, cim vice se clovek blizi|Kdo nezna pristav, do ktereho se chce plavit,|Lidske mysleni ztraci smysl,|Nikdo nevi, co muze vykonat,|Nic neprekvapi lidi vice nez zdravy rozum|Zadny cil neni tak vysoky,)= p/Windows qotd/ i/Czech/ o/Windows/ cpe:/a:microsoft:qotd::::cs/ cpe:/o:microsoft:windows/a
match qotd m=^"(?:L'art de persuader consiste autant|Le peu que je sais, c'est \x85 mon ignorance|Certaines \x83mes vont \x85 l'absolu comme l'eau|Le m\x82rite a sa pudeur comme la chastet|Rien de plus futile, de plus faux, de plus|\xb7 vaincre sans p\x82ril, on triomphe|Le comble de l'orgueil, c'est de se)= p/Windows qotd/ i/French/ o/Windows/ cpe:/a:microsoft:qotd::::fr/ cpe:/o:microsoft:windows/a

match mohaa m|\xff\xff\xff\xff\x01disconnect| p/Medal Of Honor Allied Assault game server/
match mohaa-gamespy m|^\\final\\\\queryid\\\d+\.1| p/Medal Of Honor Allied Assault gamespy query port/
match ericssontimestep m|^.{8}\0\0\0\0\0\0\0\0\x0b\x10\x05\0\0\0\0\0\0\0\0\(\0\0\0\x0c\0\0\0\0\x01\0\0\x1e$|s p/Ericsson Timestep Permit VPN/
match rtp m|^501 0 Endpoint is not ready - Unrecognized command verb\n|

match sauerbraten m|^r\xfe\x1d\x13\0\0\0\0\0\0\0\x02\0\x01\x86\xa0\0\x01\x97\x7c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x80\x02\x01\0\0\x0c\0\0([\w._ -]+)\0$| p/Sauerbraten game server/ i/server name: $1/

match sentinel-lm m|^r\xfe\x1d\x13\0\0\0\0\0\0\0\x02,PSH,'A{\^QOHpe\]\)\]\\\^cRH>%gNQX$| p/SafeNet Sentinel License Manager/

match ssdp m|^HTTP/1\.1 200 OK\r\nST:upnp:rootdevice\r\nUSN:uuid:11111111-0000-c0a8-0101-efefefef8035::upnp:rootdevice\r\nLocation:http://[\d.]+:\d+/DeviceDescription\.xml\r\nCache-Control:max-age=480\r\nServer:Allegro-Software-RomUpnp/([\w._-]+) UPnP/([\w._-]+) IGD/1\.00\r\nExt:\r\n\r\n|s p/Allegro RomUPnP/ v/$1/ i/UPnP $2/

# Timbuktu 8.7.1
match timbuktu m|^\0#\xd1\x1f$| p/Timbuktu remote desktop/

match utorrent-udp m|^\x72\xfe\x1d\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03....$|s p/uTorrent UDP listener/ o/Windows/ cpe:/a:utorrent:utorrent/ cpe:/o:microsoft:windows/a

# This protocol is defined by miniserv.pl to let Webmin servers to find each
# other's HTTP port. The response format is
# $address:$port:$ssl:$hostname
match webmin m|^0\.0\.0\.0:(\d+):0:?$| i/http on TCP port $1/
match webmin m|^([^:]*):(\d+):0:?$| i/http on TCP $1:$2/
match webmin m|^0\.0\.0\.0:(\d+):0:(.+)$| i/http on TCP port $1 ($2)/
match webmin m|^([^:]*):(\d+):0:(.+)$| i/http on $1:$2 ($3)/
match webmin m|^0\.0\.0\.0:(\d+):1:?$| i/https on TCP port $1/
match webmin m|^([^:]*):(\d+):1:?$| i/https on TCP $1:$2/
match webmin m|^0\.0\.0\.0:(\d+):1:(.+)$| i/https on TCP port $1 ($2)/
match webmin m|^([^:]*):(\d+):1:(.+)$| i/https on $1:$2 ($3)/

softmatch quake3 m|^\xff\xff\xff\xffdisconnect$| p/Quake 3 game server/

# Know the device, but not the service. Port 19541.
# match unknown m|^\xfer\0\0\0\0\0\x12ERR\(NOT SUPPORTED\)$| p/OKI ES3640e GA printer/ d/printer/

match apple-sasl m|How was your weekend\?;[0-9A-F]*\0| p/Mac OS X Server Password Server/ o/Mac OS X/ cpe:/o:apple:mac_os_x/a

match nat-pmp m|^\0\xfe\0\x01\0\0..$|s p/natpmp daemon/ d/router/
match nat-pmp m|^\0\0\0\x01...\0$|s p/Apple Time Capsule/ d/router/

match xdmcp m|^\0\x01\0\x05..\0\0\0.(.+)\0.(.+)|s p/XDMCP/ i/willing; status: $2/ o/Unix/ h/$1/
#DTLS 1.0/1.2 alert (there was no DTLS 1.1)
softmatch dtls m|^\x15\xfe[\xfd\xff]\0\0\0\0\0\0\0\0..\x02.\0\0\0\0\0|

##############################NEXT PROBE##############################
Probe UDP DNSVersionBindReq q|\0\x06\x01\0\0\x01\0\0\0\0\0\0\x07version\x04bind\0\0\x10\0\x03|
rarity 1
ports 53,1967,2967

# Matches here have been grouped by product and roughly ordered based on prevalence
# on the Internet
# Note when generating match lines - TCP responses have two bytes at the beginning
# of the response that the UDP doesn't, otherwise they are the same. Account for this
# in the regex so that a matchline will work for both.

# ISC BIND - RedHat / Fedora
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}(\d[-\w.+]*?)-RedHat-[-\w._+]+.fc(\d+)|s p/ISC BIND/ v/$1/ i/Fedora Core $2/ o/Linux/ cpe:/a:isc:bind:$1/ cpe:/o:fedoraproject:fedora_core:$2/
# 9.9.3-rpz2+rl.13208.13-P2-RedHat-9.9.3-4.P2.el6
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}(\d[-\w.+]*?)-RedHat-[-\w._+]+.el(\d+)|s p/ISC BIND/ v/$1/ i/RedHat Enterprise Linux $2/ o/Linux/ cpe:/a:isc:bind:$1/ cpe:/o:redhat:enterprise_linux:$2/
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}(\d[-\w.+]*?)-RedHat-|s p/ISC BIND/ v/$1/ i/RedHat Linux/ o/Linux/ cpe:/a:isc:bind:$1/ cpe:/o:linux:linux_kernel/a


# ISC BIND - Ubuntu
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}(\d[-\w.+]*?)-[Uu]buntu|s p/ISC BIND/ v/$1/ i/Ubuntu Linux/ o/Linux/ cpe:/a:isc:bind:$1/ cpe:/o:linux:linux_kernel/a

# ISC BIND - Debian
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}(\d[-\w.+~]*?)-9\+deb8u[-\w._+~]*?[Dd]ebian|s p/ISC BIND/ v/$1/ i/Debian Linux 8.0 (Jessie)/ o/Linux/ cpe:/a:isc:bind:$1/ cpe:/o:linux:linux_kernel/a
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}(\d[-\w.+~]*?)-9wheezy\w+-[Dd]ebian|s p/ISC BIND/ v/$1/ i/Debian Linux 7.0 (Wheezy)/ o/Linux/ cpe:/a:isc:bind:$1/ cpe:/o:linux:linux_kernel/a
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}(\d[-\w.+~]*?)-[Dd]ebian|s p/ISC BIND/ v/$1/ i/Debian Linux/ o/Linux/ cpe:/a:isc:bind:$1/ cpe:/o:linux:linux_kernel/a

match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}(?:BIND )?(\d[-\w.+~]*?)-9\+deb8u[-\w._+~]*?Raspbian|s p/ISC BIND/ v/$1/ i/Raspbian Linux 8.0 (Jessie based)/ o/Linux/ cpe:/a:isc:bind:$1/ cpe:/o:linux:linux_kernel/a
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}(?:BIND )?(\d[-\w.+~]*?)-Raspbian|s p/ISC BIND/ v/$1/ i/Raspbian Linux/ o/Linux/ cpe:/a:isc:bind:$1/ cpe:/o:linux:linux_kernel/a

match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}([89][.\d]+-APPLE(?:-[SPW]\d+)?)|s p/ISC BIND/ v/$1/ i/Mac OS X/ o/Mac OS X/ cpe:/a:isc:bind/ cpe:/o:apple:mac_os_x/a

# ISC BIND - Release numbers w/o OS info - may be dragons here
# rpz = response policy zone patch     rl = rate liming patch
# 9.8.4-rpz2+rl005.12-P1   9.6-ESV-R11-P2  9.5.0b2  8.3.7-REL 9.4.2-P2-W2
match domain m=\x07version\x04bind\0\0\x10\0\x03(?:\xc0\x0c|\x07VERSION\x04BIND\0)\0\x10\0\x03.{7}(?:BIND )?([89][.\d]+(?:[ab]\d+)?(?:rc\d)?(?:-REL)?(?:-rpz[\d.]+)?(?:[-+]rl[\d.]+)?(?:-ESV(?:-R\d+)?)?(?:-[SPW][W\d.-]+)?(?:-NOESW)?)(?:\0|\xc0|$)=s p/ISC BIND/ v/$1/ cpe:/a:isc:bind:$1/

match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}Served by Bind - www\.isc\.org/software/bind|s p/ISC BIND/ cpe:/a:isc:bind/
# Likely ISC bind w/o version string but w/ Responsible authority mailbox set to "hostmaster.version.bind"
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x06\0\x03.{6}\xc0\x0c\nhostmaster\xc0\x0c|s p/ISC BIND/ cpe:/a:isc:bind/

# dnsmasq
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}dnsmasq-([-\w. +]+)$|s p/dnsmasq/ v/$1/ cpe:/a:thekelleys:dnsmasq:$1/
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}dnsmasq-ubnt/([\w.-]+)|s p/dnsmasq/ v/$1/ i/Ubiquiti build/ d/WAP/ cpe:/a:thekelleys:dnsmasq:$1/
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03\0\0\0\0\0\x08\x07dnsmasq| p/dnsmasq/ cpe:/a:thekelleys:dnsmasq/

# Microsoft DNS - assumes hosts running DNS service are the server version of a given kernel
# Microsoft has 3 configuration states that govern how the version is reported:
# 0 = Off, no version response, 1 = Full version (6.3.9600 and often build), 2 = minimal (6.3)
# Ref:  dnscmd /config /EnableVersionQuery <value> - https://msdn.microsoft.com/en-us/library/cc422472.aspx

# match full response
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x01.{7}Microsoft DNS (10\.0\..+)|s p/Microsoft DNS/ v/$1/ i/Windows Server 2016/ o/Windows/ cpe:/a:microsoft:dns/ cpe:/o:microsoft:windows_server_2016/a
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x01.{7}Microsoft DNS (6\.3\.9600.+)|s p/Microsoft DNS/ v/$1/ i/Windows Server 2012 R2/ o/Windows/ cpe:/a:microsoft:dns/ cpe:/o:microsoft:windows_server_2012:r2/a
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x01.{7}Microsoft DNS (6\.2\.9200.+)|s p/Microsoft DNS/ v/$1/ i/Windows Server 2012/ o/Windows/ cpe:/a:microsoft:dns/ cpe:/o:microsoft:windows_server_2012/a
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x01.{7}Microsoft DNS (6\.1\.7601.+)|s p/Microsoft DNS/ v/$1/ i/Windows Server 2008 R2 SP1/ o/Windows/ cpe:/a:microsoft:dns/ cpe:/o:microsoft:windows_server_2008:r2:sp1/a
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x01.{7}Microsoft DNS (6\.1\.7600.+)|s p/Microsoft DNS/ v/$1/ i/Windows Server 2008 R2/ o/Windows/ cpe:/a:microsoft:dns/ cpe:/o:microsoft:windows_server_2008:r2/a
# Windows 2008 and earlier CAN respond with answer class \x00\x03  = 3 (CHAOS), instead of \x00\x01 = 1 (Internet) like more modern versions do
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0[\x01\x03].{7}Microsoft DNS (6\.0\.6002.+)|s p/Microsoft DNS/ v/$1/ i/Windows Server 2008 SP2/ o/Windows/ cpe:/a:microsoft:dns/ cpe:/o:microsoft:windows_server_2008::sp2/a
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0[\x01\x03].{7}Microsoft DNS (6\.0\.6001.+)|s p/Microsoft DNS/ v/$1/ i/Windows Server 2008 SP1/ o/Windows/ cpe:/a:microsoft:dns/ cpe:/o:microsoft:windows_server_2008::sp1/a

match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0[\x01\x03].{7}Microsoft DNS (5\.2\.3790.+)|s p/Microsoft DNS/ v/$1/ i/Windows Server 2003 SP2/ o/Windows/ cpe:/a:microsoft:dns/ cpe:/o:microsoft:windows_server_2003::sp2/a

# Match Windows minimal response - dnscmd /config /EnableVersionQuery 2
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x01.{7}Microsoft DNS (10\.0$)|s p/Microsoft DNS/ v/$1/ i/Windows Server 2016/ o/Windows/ cpe:/a:microsoft:dns/ cpe:/o:microsoft:windows_server_2016/a
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x01.{7}Microsoft DNS (6\.3)$|s p/Microsoft DNS/ v/$1/ i/Windows Server 2012 R2/ o/Windows/ cpe:/a:microsoft:dns/ cpe:/o:microsoft:windows_server_2012:r2/a
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x01.{7}Microsoft DNS (6\.2)$|s p/Microsoft DNS/ v/$1/ i/Windows Server 2012/ o/Windows/ cpe:/a:microsoft:dns/ cpe:/o:microsoft:windows_server_2012/a
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x01.{7}Microsoft DNS (6\.1)$|s p/Microsoft DNS/ v/$1/ i/Windows Server 2008 R2/ o/Windows/ cpe:/a:microsoft:dns/ cpe:/o:microsoft:windows_server_2008:r2/a
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0[\x01\x03].{7}Microsoft DNS (6\.0)$|s p/Microsoft DNS/ v/$1/ i/Windows Server 2008/ o/Windows/ cpe:/a:microsoft:dns/ cpe:/o:microsoft:windows_server_2008/a
# Generic Windows DNS match
softmatch domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0[\x01\x03].{7}Microsoft DNS (.+)|s p/Microsoft DNS/ v/$1/ o/Windows/ cpe:/a:microsoft:dns/ cpe:/o:microsoft:windows/a


# PowerDNS
match domain m|\x07version\x04bind\0\0\x10\0[\x01\x03]\xc0\x0c\0\x10\0[\x01\x03].{7}PowerDNS.Authoritative.Server.(\d[\w.-]+)| p/PowerDNS Authoritative Server/ v/$1/ cpe:/a:powerdns:authoritative:$1/
match domain m|\x07version\x04bind\0\0\x10\0[\x01\x03]\xc0\x0c\0\x10\0[\x01\x03].{7}PowerDNS Recursor (\d[\w.-]+)|s p/PowerDNS Recursor/ v/$1/ cpe:/a:powerdns:recursor:$1/
match domain m|\x07version\x04bind\0\0\x10\0[\x01\x03]\xc0\x0c\0\x10\0[\x01\x03].{7}PowerDNS Recursor$|s p/PowerDNS Recursor/ cpe:/a:powerdns:recursor/
match domain m|\x07version\x04bind\0\0\x10\0[\x01\x03]\xc0\x0c\0\x10\0[\x01\x03].{7}Served by PowerDNS - https?://www\.powerdns\.com/?|s p/PowerDNS/ v/3.3 or later/ cpe:/a:powerdns:powerdns/
match domain m|\x07version\x04bind\0\0\x10\0[\x01\x03]\xc0\x0c\0\x10\0[\x01\x03].{7}Served by POWERDNS (\d[-.\w]+)|s p/PowerDNS/ v/$1/ cpe:/a:powerdns:powerdns:$1/

# Nonimum
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}Nominum Vantio (\w+) ([\d\.]+)$|s p/Nominum Vantio $1/ v/$2/
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}Nominum Vantio ([\d\.]+)|s p/Nominum Vantio/ v/$1/
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}Nominum ANS(?:Premier)? ([\d\.]+)|s p/Nominum Vantio AuthServ/ v/$1/

# NLNet Labs products - unbound / nsd
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}unbound ([\w.-]+)$| p/Unbound/ v/$1/ cpe:/a:nlnetlabs:unbound:$1/
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}unbound$|i p/Unbound/ cpe:/a:nlnetlabs:unbound/
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}NSD ([-\w.]+)|s p/NLnet Labs NSD/ v/$1/ cpe:/a:nlnetlabs:nsd:$1/

# UltraDNS
# Unable to locate cpe info for Neustar UltraDNS
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}UltraDNS Resolver|s p/UltraDNS Resolver/
match domain m|\x07version\x04bind\0\0\x10\0\x03\x07VERSION\x04BIND\0\0\x10\0\x03.{7}UltraDNS Resolver|s p/UltraDNS Resolver/
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}UltraDNS TLD Platform|s p/UltraDNS Resolver/

# Misc
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}ZyWALL DNS|s p/Zyxel ZyWALL dnsd/
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}DNSServer\xc0\x0c|s p/Synology DNS Server/ cpe:/a:synology:dns/ cpe:/h:synology/
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}Array SmartDNS\xc0|s p/Array SmartDNS/
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}DraytekDNS-v([\d\.]+)|s p/Draytek DNS/ v/$1/
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}ALU DNS ([\d\.]+) Build (\d+)|s p/Draytek DNS/ v/$1 build $2/
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}gdnsd$|s p/Brandon Black gdnsd/
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}Knot DNS ([\d.]+(?:-dev)?)|s p/cz.nic Knot DNS/ v/$1/
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}rbldnsd (\d[\w.\/-]+) |s p/Michael Tokarev rbldnsd/ v/$1/
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}djbdns[\s-](\d.\d+)|s p/D J Bernstein djbdns/ v/$1/
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}djbdns|i p/D J Bernstein djbdns/
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}Atlas Anchor ([\d\.]+)|s p/RIPE Atlas Anchor/ v/$1/
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}Incognito DNS Commander ([\d.]+) \((built \w{3} \d+ \d{4})\)|s p/Incognito DNS Commander/ v/$1/ i/$2/
match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}Incognito DNS Service ([\d.]+) \((built \w{3} \d+ \d{4})\)|s p/Incognito DNS Service/ v/$1/ i/$2/

match domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}Hi:[\w\.=: ]+\d{4}$| p/OzymanDNS DNS tunnel/

# *Probably* Check Point's Meta IP - ~8 seen during Internet survey
match domain m|n\x04bind\0\0\x10\0\x03\x07VERSION\x04BIND\0\0\x10\0\x03.{7}Meta IP DNS - BIND V([\d.]+)-REL \(Build (\d+)\)| p/Check Point Meta IP ISC BIND/ v/$1 build $2/ cpe:/a:isc:bind:$1/


# Not seen in Project Sonar version.bind survey 2017.08.18 and not tested
# during 2017.08.19 DNS version.bind fingerprint/matchline review
match domain m|\x07version\x04bind\0\0\x10\0\x03\x07VERSION\x04BIND\0\0\x10\0\x03.{7}Peticion no permitida/Query not allowed| p/ZyXEL Prestige 643 dns cache/ d/switch/
match domain m|^\0\x06\x81\x80\0\x01\0\x01\0\0\0\0\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x01\0\x01\0\0\0\x05\0\x04\xa3\xc0\x08\x06$| p/ArubaOS 3.3 named/ o/ArubaOS/ cpe:/o:arubanetworks:arubaos:3.3/

# These may be too generic, but unique so far unless corrected.
match domain m|^(?:..)?\0\x06\x81\x85\0\x01\0\0\0\0\0\0\x07version\x04bind\0\0\x10\0\x03| p/Unbound/ cpe:/a:nlnetlabs:unbound/
match domain m|^(?:..)?\0\x06\x81\x04\0\x01\0\0\0\0\0\0\x07version\x04bind\0\0\x10\0\x03| p/Simple DNS Plus/ o/Windows/ cpe:/a:jh_software:simple_dns_plus/ cpe:/o:microsoft:windows/a
match domain m|^(?:..)?\0\x06\x81\x84\0\x01\0\0\0\0\0\0\x07version\x04bind\0\0\x10\0\x03| p/Cloudflare public DNS/
match domain m|^(?:..)?\0\x06\x81\x84\0\x01\0\0\0\0\0\x01\x07version\x04bind\0\0\x10\0\x03\0\0\)\x06\0\0\0\0\0\0\0| p/dnscrypt-proxy/ cpe:/a:dnscrypt:dnscrypt-proxy/
match domain m|^(?:..)?\0\x06\x85\x02\0\x01\0\0\0\0\0\0\x07version\x04bind\0\0\x10\0\x03| p/PowerDNS/ cpe:/a:powerdns:powerdns/
match domain m|^(?:..)?\0\x06\x81\x05\0\x01\0\0\0\0\0\0\x07version\x04bind\0\0\x10\0\x03| p/NLnet Labs NSD/ cpe:/a:nlnetlabs:nsd/
match domain m|^(?:..)?\0\x06\x81\x83\0\x01\0\0\0\0\0\0\x07version\x04bind\0\0\x10\0\x03| p/dnsmasq/ cpe:/a:thekelleys:dnsmasq/

# Softmatch section
softmatch domain m|\x07version\x04bind\0\0\x10\0\x03\xc0\x0c\0\x10\0\x03.{7}([^\0\xc0\x0c]+)|s i/unknown banner: $1/
softmatch domain m|\x07version\x04bind\0\0\x10\0\x03\x07VERSION\x04BIND\0\0\x10\0\x03.{7}([^\0\xc0\x0c]+)|s i/unknown banner: $1/

# the \x0_, \x8_, \x9_ below accounts for recursion / authenticated data flags
softmatch domain m|^(?:..)?\0\x06[\x80-\x90][\x01\x81\x91]\0\0\0\0\0\0\0\0$| i/generic dns response: FORMERR/
softmatch domain m|^(?:..)?\0\x06[\x80-\x90][\x02\x82\x92]\0\0\0\0\0\0\0\0$| i/generic dns response: SERVFAIL/
softmatch domain m|^(?:..)?\0\x06[\x80-\x90][\x04\x84\x94]\0\0\0\0\0\0\0\0$| i/generic dns response: NOTIMP/
softmatch domain m|^(?:..)?\0\x06[\x80-\x90][\x05\x85\x95]\0\0\0\0\0\0\0\0$| i/generic dns response: REFUSED/
# These echo the question back:
softmatch domain m|^(?:..)?\0\x06[\x80-\x90][\x01\x81\x91]\0\x01\0\0\0\0\0\0| i/generic dns response: FORMERR/
softmatch domain m|^(?:..)?\0\x06[\x80-\x90][\x02\x82\x92]\0\x01\0\0\0\0\0\0| i/generic dns response: SERVFAIL/
softmatch domain m|^(?:..)?\0\x06[\x80-\x90][\x04\x84\x94]\0\x01\0\0\0\0\0\0| i/generic dns response: NOTIMP/
softmatch domain m|^(?:..)?\0\x06[\x80-\x90][\x05\x85\x95]\0\x01\0\0\0\0\0\0| i/generic dns response: REFUSED/
# End of domain matchlines

# http://packetstormsecurity.com/files/91243/D-Link-DAP-1160-Unauthenticated-Remote-Configuration.html
match dcc m|^(?:..)?\0\x06\xf5\xff\0\0\x01\0| p/D-Link Click 'n Connect/ d/broadband router/


# INVALID-MAJOR-VERSION notification
softmatch isakmp m|^\0\x06\x01\0\0\x01\0\0\0\0\0\0\x07ver\x0b\x10\x05\0\0\0\0\0\0\0\0\(\0\0\0\x0c\0\0\0\x01\x01\0\0\x05|

match kerberos-sec m=^~[\x60-\x62]\x30[\x5e-\x60]\xa0\x03\x02\x01\x05\xa1\x03\x02\x01\x1e\xa4\x11\x18\x0f(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)Z\xa5[\x03-\x05]\x02(?:\x03...|\x02..|\x01.)\xa6\x03\x02\x01\x3c\xa9\x04\x1b\x02NM\xaa\x170\x15\xa0\x03\x02\x01\0\xa1\x0e0\x0c\x1b\x06krbtgt\x1b\x02NM\xab\x16\x1b\x14No client in request=s p/MIT Kerberos/ i/server time: $1-$2-$3 $4:$5:$6Z/ cpe:/a:mit:kerberos/

# Symantec Antivirus (rtvscan.exe)
match symantec-av m|^\0\x06\x01\x01\0\x10..........$|s p/Symantec rtvscan antivirus/ cpe:/a:symantec:antivirus/

match tunnel-test m|^\0\x06\x01\0\0\x02\0\0\0\0\0\0$| p/Check Point tunnel_test/

match unreal m|^.[\x40\xc0].[\x20\x23\x32\x38].[\x40\xc0].[\x20\x23\x32\x38]|s p/Unreal Tournament 2004 game server/

match cisco-sla-responder m|^..\0\x08\0\x03[\0\r][\0\n]$|s p/Cisco SLA Responder/ d/router/ o/IOS/ cpe:/o:cisco:ios/a

match statd m|^r\xfe\x1d\x13\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01$| p/NFS statd/

#DTLS 1.0/1.2 alert (there was no DTLS 1.1)
softmatch dtls m|^\x15\xfe[\xfd\xff]\0\0\0\0\0\0\0\0..\x02.\0\0\0\0\0|

match chargen m|^ !\"#\$%&'\(\)\*\+,-\./0123456789:;<=>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_`abcdefg\r\n!\"#\$%&'\(\)\*\+,-\./0123456789| p/Windows Vista chargen/ o/Windows Vista/ cpe:/o:microsoft:windows_vista/a


##############################NEXT PROBE##############################
Probe TCP DNSVersionBindReqTCP q|\0\x1E\0\x06\x01\0\0\x01\0\0\0\0\0\0\x07version\x04bind\0\0\x10\0\x03|
rarity 3
ports 53,135,512-514,543,544,628,1029,13783,2068,2105,2967,5000,5323,5520,5530,5555,5556,6543,7000,7008
sslports 853
fallback DNSVersionBindReq

# All legitimate 'domain' matchlines for this probe should be placed in the the
# UDP DNSVersionBindReq probe section.

# https://github.com/haiwen/ccnet
match ccnet m|^\x01\x01\0\(\0\0\0\0([0-9a-f]{40})| i/peer ID $1/

# https://github.com/clementine-player/Android-Remote/wiki/Developer-Documentation
match clementine-remote m|^\0\0\0\x04\x08\x15\x10-| p/Clementine Music Player remote control/ cpe:/a:clementine:clementine/

match exec m|^\x01Login incorrect\.\n$|
# HP-UX B.11.00 A
match exec m|^\x01rexecd: Login incorrect.?\n$| p/HP-UX rexecd/ o/HP-UX/ cpe:/o:hp:hp-ux/a
match exec m|^\x01rexecd: Couldn't look up address for your host\n$| p/HP-UX rexecd/ o/HP-UX/ cpe:/o:hp:hp-ux/a
match exec m|^\x01rexecd: [-\d]+ The login is not correct\.\n| p/AIX rexecd/ o/AIX/ cpe:/o:ibm:aix/a
match exec m|^\x01rexecd: [-\d]+ Connexion incorrecte\.\n| p/AIX rexecd/ i/French/ o/AIX/ cpe:/o:ibm:aix/a
match exec m|^\x01INTERnet ACP AUXS failure  Status = %LOGIN-F-NOSUCHUSER\r\n\0$| p/OpenVMS execd/ o/OpenVMS/ cpe:/o:hp:openvms/a


# Last 8 bytes are little-endian NTFS timestamp. Date range here covers 1986-04-30 to 2056-10-16
match domaintime m|^\0\x1e\0\x06\x01\0\0\x01......[\xb0-\xff]\x01$| p/Greyware Domain Time II/

match goldengate m|^\0&  ERROR\tMGR Did Not Recognize Command\0| p/Oracle GoldenGate/ cpe:/a:oracle:goldengate/

match http m|^HTTP/1\.1 506 \r\nContent-Type: text/html\r\nServer: JavaWeb/0\r\n\r\n<html><body><h1>506 - IO Error</h1></body></html>$| p/AirDroid httpd/ d/phone/ o/Android/ cpe:/a:airdroid:airdroid/ cpe:/o:google:android/ cpe:/o:linux:linux_kernel/

match iscsi m|^\0\x1e\0\x02\0\0\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0| p/Synology DSM Snapshot Replication iSCSI LUN/

match ixia m=^\0.\x05\x02....\0\x01\x01@\0\0\0\0\0\0\0\0\0.\$Id: //ral_depot/products/IxChariot([\w._-]+)/(?:ENDPOINT|endpoint)/CODE/client\.c#\d+ \$\0\0\0..\0\x02\0\x0ce1_thread\0\0\x18main_process_incoming\0$= p/IxChariot/ v/$1/ i/Ixia XR100 performance monitor/

# Digital UNIX V4.0F login
match login m|^\x01Permission denied: Error 0$| p/Digital UNIX login/ o/Digital UNIX/ cpe:/o:dec:digital_unix/a
match login m|^\0\^A\^@\^@\^@\^@\^@\^@\^Gversion\^Dbind\^@\^@\^P\^@\n\r\n\r\n\r\n\r#################################################\n\r###                                           ###\n\r###  LSI Logic Series 4 SCSI RAID Controller  ###\n\r###      Copyright \d+, LSI Logic Inc\.       ###\n\r###                                           ###\n\r###      Series 4 Disk Array Controller       ###\n\r###        Serial number:  (\w+)         ###\n\r###        Network name:  ([-\w_.]+) *###| p/LSI Logic Series SCSI RAID rlogin/ i/Serial $1; Network name $2/
match login m|^\0\^A\^@\^@\^@\^@\^@\^@\^Gversion\^Dbind\^@\^@\^P\^@\n\r\n\r\n\r\n\r#####################################################################\n\r###                                                               ###\n\r###               Engenio Series 4, RAID Controller               ###\n\r###  Copyright 2003-2004, Engenio Information Technologies, Inc\.  ###\n\r###                                                               ###\n\r###                Series 4 Disk Array Controller                 ###\n\r###                  Serial number:  (\w+)                   ###\n\r###                     Network name:  ([\w._-]+) *###\n\r| p/IBM DS4400 NAS device rlogin/ i/Serial $1; Network name $2/ d/storage-misc/ cpe:/h:ibm:ds4400/a
match login m|^\0\r\nSorry, shell is locked\.\r\n$| p/FabricOS switch logind/ d/switch/ cpe:/o:brocade:fabric_os/
match login m|^\0\r\n\nLantronix MSS100 Version V([\d.]+)/\d+\(\d+\)\n\r\nType HELP at the 'Local_\d+> ' prompt for assistance\.\n\r\n\r\n\nUsername> | p/Lantronix MSS100 serial interface logind/ v/$1/ d/specialized/
match login m|^\[Thread \d+\(INITIAL\)\] at 0x\w+: Segmentation fault \(Stack bottom 0x0\)\n| p|Aficio/NRG/Ricoh printer logind| d/printer/
match login m|^\x01Winsock RSHD/NT: Protocol negotiation error\.\n\0$| p/Winsock RSHD/ o/Windows/ cpe:/o:microsoft:windows/a
# We've seen this on Cisco routers and also NetApp filers
match login m|^\x01Permission denied\.\n$| p|Cisco/NetApp logind|
match login m=^\x01Permission denied ?: Error (?:35|0|1)\r?\n?$= p/Tru64 Unix logind/ o/Tru64 UNIX/ cpe:/o:compaq:tru64/a
match login m|^\x01permission denied\.\n| p/Solaris logind/ o/Solaris/ cpe:/o:sun:sunos/a
match login m|^\x01UX:in\.rlogind: Permission denied\.\r\n| p/Siemens HiPath logind/
match login m|^\x01Permission denied : Error \d+\r\n|
match login m|^\x01rlogind: Acc\xe8s refus\xe9\.\r\n| p/AIX rlogind/ i/French/ o/AIX/ cpe:/o:ibm:aix/a
match login m|^\0\^A\^@\^@\^@\^@\^@\^@\^Gversion\^Dbind\^@\^@\^P\^@\n\r\n\r\n\r\n\r#+\n\r### +###\n\r###  LSI Logic Series 4 SCSI RAID Controller  ###.*Serial number:  1T84210104 |s p/LSI Series 4 RAID controller logind/ d/storage-misc/
match login m|^\0\r\nEL-(\d+) RealPort Server - US Patent No\. 6,047,319\r\n| p/Digi EtherLite $1 RealPort logind/ d/terminal server/
match login m|^\0\n\rSelect access level \(read, write, administer\): \w+ _vxTaskEntry| p/3Com LANplex switch logind/ d/switch/
match login m|^\0\^A\^@\^@\^@\^@\^@\^@\^Gversion\^Dbind\^@\^@\^P\^@\r\n-> shell restarted\.\r\n\r\n-> | p/ShoreTel VoIP phone logind/ d/VoIP phone/
match login m|^\x01TCPIP RLOGIN Connection refused\0\0$| p/OpenVMS logind/ o/OpenVMS/ cpe:/o:hp:openvms/a
match login m|^\0\r\n-> trcStack aborted: error in top frame\r\ntShell restarted\.\r\n\r\n-> !1 echo_recv: -1\.\r\n| p/ACT VoIP wifi phone logind/ d/VoIP phone/
match login m|^\0\r\nEL-32 EtherLite module\r\n\r\n| p/Digi EtherLite32 logind/
match login m|^\x01in\.rlogind: Permission denied\.\r\n| p/Microsoft Windows Services for Unix logind/ o/Windows/ cpe:/a:microsoft:windows_services_for_unix/ cpe:/o:microsoft:windows/a
match login m|^\x01rlogind: Host name for your address \([\d.]+\) unknown\.\r\n| p|A/UX logind| o|A/UX| cpe:/o:apple:a_ux/
# OpenBSD 2.3
# Solaris 9
match login m|^\x01rlogind: Permission denied\.\r\n$|
match login m|^\0\r\nlogin: | p/Airspan MiMAX WiMAX WAP logind/ d/WAP/

# HP-UX 11 Kerberized rlogin
match klogin m|^\x01rlogind: Login Incorrect\.\r\n$| p/HP-UX kerberized rlogin/ o/HP-UX/ cpe:/o:hp:hp-ux/a
match klogin m|^\x01rlogind: Kerberos Authentication not enabled\.\.\r\n| p/HP-UX kerberized rlogin/ i/disabled/ o/HP-UX/ cpe:/o:hp:hp-ux/a
# Solaris Kerberos authenticated login
match klogin m|^\x01rlogind: Kerberos authentication failed\.\r\n| p/Solaris kerberized rlogin/ o/Solaris/ cpe:/o:sun:sunos/a
match klogin m|^\x01rlogind: Kerberos authentication failed, exiting\.\r\n| p/Solaris kerberized rlogin/ o/Solaris/ cpe:/o:sun:sunos/a
match klogin m|^\x01klogind: Kerberos authentication failed\.\r\n| p/Kerberized rlogin/
match klogin m|^\x01eklogin: Kerberos authentication failed\.\r\n| p/Encrypted Kerberized rlogin/
match klogin m|^\x01eklogind: Kerberos authentication failed\.\r\n| p/Encrypted Kerberized rlogin/

# Solaris Kerberos authenticated remote shell
match kshell m|^\x01[kr]shd: Authentication failed: Bad sendauth version was sent\n| p/Solaris kerberised rsh/ o/Solaris/ cpe:/o:sun:sunos/a
match kshell m|^\x01krshd: Kerberos Authentication Failed\.\r\n| p/AIX kerberised rsh/ o/AIX/ cpe:/o:ibm:aix/a
match kshell m|^\x01krshd: Echec de l'authentification Kerberos\.\r\n\0| p/AIX kerberised rsh/ i/French/ o/AIX/ cpe:/o:ibm:aix/a
match kshell m|^\x01kshd: Authentication failed: | p/Kerberized rsh/ o/Unix/

match ssc-agent m|^\0\x1e\0\x06\0\t\0\0$| p/Novell NetWare ssc-agent/ o/NetWare/ cpe:/o:novell:netware/a
# http://www.apcupsd.com/ - apcupsd 3.8.5-1.3 on Linux 2.4.X
match apcupsd m|^\0\x11Invalid command\n\0\0\0$| p/apcupsd/

# Avocent AutoView 1000R KVM or HP 3x1x16 KVM or Dell IP KVM model 2161DS Console Switch
match kvm m|^BEEF\x83\0\0| p/KVM daemon/

match klogin m|^\x01krlogind: Kerberos Authentication Failed\.\r\n\0| p/AIX kerberized rlogin/ o/AIX/ cpe:/o:ibm:aix/a
match klogin m|^\x01krlogind: Echec de l'authentification Kerberos\.\r\n\0| p/AIX kerberized rlogin/ i/French/ o/AIX/ cpe:/o:ibm:aix/a
match klogin m|^\0\0's Password: $| p/AIX kerberized rlogin/ o/AIX/ cpe:/o:ibm:aix/a
match kshell m|^\x01rshd ?: [-\d]+ The host name for your address is not known\.\n| p/AIX (kerberized?) rshd/ o/AIX/ cpe:/o:ibm:aix/a
match kshell m|^\x01rshd ?: [-\d]+ Le nom d'h\xf4te correspondant \xe0 l'adresse est inconnu\.\n| p/AIX (kerberized?) rshd/ i/French/ o/AIX/ cpe:/o:ibm:aix/a
match kshell m|^\x01rshd: [-\d]+ The remote user login is not correct\.\n| p/AIX (kerberized?) rshd/ o/AIX/ cpe:/o:ibm:aix/a

match minecraft m|^\xff\0\x0eProtocol error| p/Minecraft game server/

match modbus m|^\0\x1e\0\x06\0\x03\0\x01\0| p/Modbus TCP/
match modbus m|^\0\x1e\0\x06\0\x03\0\x80\x01| p/Modbus TCP/

match pafserver m|^\0&\xa2\xf4\x04\x97\xbcNp\xe4\xc1\x7cI\xff\xf9\xe8\x0c\xd9\xac\xf1_u\xa0\x1d\x82X\0\xde\xd5\xdd\x19\xce\xc2\xe0\x92yD\xde|

match utrmcd m|^\x01in\.utrcmdd \(remote\): protocol error \(1\)\n\0| p/Sun Ray utrmcdd/ cpe:/a:sun:ray_server_software/

# 13724/tcp
match vnetd m|^1\0$| p/Veritas Netbackup Network Utility/ cpe:/a:symantec:veritas_netbackup/

# Sun Cobalt Adaptive Firewall 1.7-0
match pafserver m|^\0&\xeb\xefTQM\xee\[B| p/Sun Cobalt Adaptive Firewall/ o/Linux/ cpe:/o:linux:linux_kernel/a

match progress m|^\0\0\0\x01\0\x17\0\x14\0\x06\0\0\0.\0\0\0\0\0\0|s p/Progress Database/ cpe:/a:progress:database/

# RSA SecureID Ace Server 5
match sdlog m|^\0\0\0\x01\0\x17\0\x14\0\x06\0\0\0\x01\0\0\0\0\0\0$| p/RSA SecureID Ace Server/ cpe:/h:rsa:securid/

match freeciv m|^\0\x03\x02\0\.\x01\0\0\0\0Invalid name ''\0\+1\.14\.0 conn_info team\0\0\x03\x03$| p/Freeciv/ v/1.X/ cpe:/a:freeciv:freeciv:1/
match freeciv m|^\0\x03X\0.\x01\0\0\0\0Your client is too old\. To use this server please upgrade your client to a CVS version later than 2003-11-28 or Freeciv 1\.15\.0 or later\.\0\0\0\x03\0\0\x03\x01$| p/Freeciv/ v/2.X/ cpe:/a:freeciv:freeciv:2/
match freeciv m|^\0\x03X\0.\x01\0\0\0\0Tw\xc3\xb3j klient jest zbyt stary\. Aby wej\xc5\x9b\xc4\x87 na ten serwer musisz u\xc5\xbcywa\xc4\x87 klienta w wersji co najmniej 1\.15\.0\. \(Lub z CVS'a po 18\.11\.2003\)\.\0\0\0\x03\0\0\x03\x01$| p/Freeciv/ v/2.X/ i/Polish/ cpe:/a:freeciv:freeciv:2:::pl/
match freeciv m|^\0\x03X\0.\x01\0\0\0\0Votre client est trop vieux\. Pour utiliser ce serveur veuillez mettre votre client \xc3\xa0 jour avec une version Freeciv 2\.2 ou ult\xc3\xa9rieure\.\0\0\0\x03\0\0\x03\x01$| p/Freeciv/ v/2.X/ i/French/ cpe:/a:freeciv:freeciv:2:::fr/
match freeciv m|^\0(?:\x03\x58\0)?\x6a\x01\0\0\0\0Your client is too old\. To use this server, please upgrade your client to a Freeciv 2\.2 or later\.\0\0\0\x03\0\0\x03\x01$| p/Freeciv/ v/2.X/ cpe:/a:freeciv:freeciv:2/
match freeciv m|^\0\x03\x58\0\x16\x01\0\0\0\0Freeciv ([\d.]+)\0\0\0\x03\0\0\x03\x01$| p/Freeciv/ v/$1/ cpe:/a:freeciv:freeciv:$1/

match imaze-game m|^\0\x18\x82iMaze server JC/HUK ([\d.]+)$| p/iMaze game server/ v/$1/

match msrpc m|^\x05\0\r\x03\x10\0\0\0\x18\0\0\0v\x07\0\0\x04\0\x01\x05\0\0.\0$|s p/Microsoft RPC/ o/Windows/ cpe:/o:microsoft:windows/a

# http://msdn.microsoft.com/en-us/library/cc219293.aspx
# SPM 2015, Version: 2015.3.3
match mc-nmf m|^\x08Ihttp://schemas\.microsoft\.com/ws/2006/05/framing/faults/UnsupportedVersion| p/.NET Message Framing/ o/Windows/ cpe:/o:microsoft:windows/a

match ormi m|^\xe3\r\n\r\n\0\x01\0.\0vInvalid protocol verification, illegal ORMI request or request performed with an incompatible version of this protocol|s p/Oracle Remote Method Invocation/

match arkeia m|^\0\x05\0\0\0\0\0\0$| p/Arkeia Network Backup/

match qcheck m|^.*\$Id: //ral_depot/products/current/ENDPOINT/CODE/client\.c|s p/Ixia Q-Check network performance tester/

match qmqp m|^58:Dnetstring format error while receiving QMQP packet header,| p/Postfix qmqpd/

match sip m|^\x01\x11\0\x18\x01\0\0\x01\0\0\0\0\0\0\x07versi\0\t\0\x12\0\0\x06\0Global Failure\0\0| p/Kamailio sipd/ cpe:/a:kamailio:kamailio/

match sybase-adaptive m|^\x04\x01\0\(\0\0\0\0\xaa\0\x14\0\0\x0f\xa2\x01\x0eLogin failed\.\n\xfd\0\x02\0\x02\0\0\0\0$| p/Sybase Adaptive Server/ o/Windows/ cpe:/a:sybase:adaptive_server/ cpe:/o:microsoft:windows/a

match telecom-misc m|^\0\x1e\x02\x06\x01\0\0\0\0\0\0\xf1\0| p/Radio IP MTG gateway/ d/telecom-misc/

match warcraft m|^\0\0\x09$| p/World of Warcraft game server/

match upnp m|^HTTP/1\.0 414 Request-URI Too Long\r\nServer: Linux/([\w._-]+) UPnP/([\w._-]+) fbxigdd/([\w._-]+)\r\nConnection: close\r\n\r\n$| p/fbxigdd/ v/$3/ i/AliceBox PM203 UPnP; UPnP $2/ d/WAP/ o/Linux $1/ cpe:/o:linux:linux_kernel:$1/

match xtunnels m|^\0\x03\x04\0\x04$| p/XTunnels proxy server/

# Alert (Level: Fatal, Description: Unexpected Message|Protocol Version|Handshake Failure)
match ssl m|^\x15\x03[\x00-\x04]\0\x02\x02[\nF\x28]|

# DNS Server status request: http://www.rfc-editor.org/rfc/rfc1035.txt
##############################NEXT PROBE##############################
Probe UDP DNSStatusRequest q|\0\0\x10\0\0\0\0\0\0\0\0\0|
rarity 5
ports 53,69,135,1761

# Note when generating match lines - TCP DNS responses have two bytes at the beginning
# of the response that the UDP doesn't, otherwise they are the same. Account for this
# in the regex so that a matchline will work for both.

# Matches weird txids in bytes 0,1 (UDP) or 2,3 (TCP), we sent txid 0
# the \x0_, \x8_, \x9_ below accounts for recursion / authenticated data flags
softmatch domain m|^(?:..)?..\x90[\x01\x81\x91]\0\0\0\0\0\0\0\0$| i/generic dns response: FORMERR/
softmatch domain m|^(?:..)?..\x90[\x04\x84\x94]\0\0\0\0\0\0\0\0$| i/generic dns response: NOTIMP/
softmatch domain m|^(?:..)?..\x90[\x05\x85\x95]\0\0\0\0\0\0\0\0$| i/generic dns response: REFUSED/

# Responds with an A record for itself?
match domain m|^.{4,6}\x84\0\0\x01\0\x01\0\0\0\0[^\0]+\0\0\x01\0\x01[^\0]+\0\0\x01\0\x01\0\0\0\x1e\0\x04....$|s p/Incapsula WAF DNS/

match iodine m|^\x80\xa7\x84\0\0\x01\0\x01\0\0\0\0.*\0\0\x0a\0\x01\xc0\x0c\0\n\0\x01\0\0\0\0\0\x05BADIP$| p/iodine IP-over-DNS tunnel/ cpe:/a:kryo:iodine/


# This one below came from 2 tested Windows XP boxes
match msrpc m|^\x04\x06\0\0\x10\0\0\0\0\0\0\0|

match netprobe m|^\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0$| p/Mega System Technologies NetProbe Lite environmental sensor/ d/specialized/

match tftp m|^\0\x05\0\x02\0The IP address is not in the range of allowable addresses\.\0| p/SolarWinds tftpd/ i/IP disallowed/ o/Windows/ cpe:/a:solarwinds:tftp_server/ cpe:/o:microsoft:windows/a
match tftp m|^\0\x05\0\0Invalid TFTP Opcode| p/Cisco tftpd/ cpe:/a:cisco:tftp_server/
match tftp m|^\0\x05\0\x04Illegal TFTP operation\0| p/Plan 9 tftpd/ o/Plan 9/ cpe:/o:belllabs:plan_9/a
match tftp m|^\0\x05\0\x04Error: Illegal TFTP Operation\0\0\0\0\0| p/Zoom X5 ADSL modem tftpd/ d/broadband router/ cpe:/h:zoom:x5/a
match tftp m|^\0\x05\0\x04Illegal operation\0$| p/Cisco router tftpd/ d/router/ o/IOS/ cpe:/a:cisco:tftp_server/ cpe:/o:cisco:ios/a
match tftp m|^\0\x05\0\x04Illegal operation error\.\0$| p/Microsoft Windows Deployment Services tftpd/ o/Windows/ cpe:/o:microsoft:windows/
# version 10.9.0.25
match tftp m|^\0\x05\0\x04Unknown operatation code: 0 received from [\d.]+:\d+\0| p/SolarWinds Free tftpd/ cpe:/a:solarwinds:tftp_server/
# Brother MFC-9340CDW
match tftp m|^\0\x05\0\x04illegal \(unrecognized\) tftp operation\0$| p/Brother printer tftpd/ d/printer/
# HP IMC 7.1
match tftp m|^\0\x05\0\0Not defined, see error message\(if any\)\.\0| p/HP Intelligent Management Center tftpd/ cpe:/a:hp:intelligent_management_center/
match tftp m|^\0\x05\0\x05Unknown transfer ID\0| p/TFTP Server SP/ o/Windows/ cpe:/a:tftp:tftp_server_sp/ cpe:/o:microsoft:windows/a

# TFTP error
softmatch tftp m|^\0\x05\0[\0-\x07][^\0]+\0$|

match landesk-rc m|^\0\0\0\0USER\x01\0\x10\0\x08\0:\xd0\x08\0:\xd0\x01\x01\.\0O\0\x03\0T\0\xff\xff\0\0\0\xfd\0\0\0\0\0\0\x02\0\0\0LANDeskWorkgroup Manager ver ([\d.]+)\0| p/LANDesk Workgroup Manager/ v/$1/ o/Windows/ cpe:/o:microsoft:windows/a


# DNS Server status request: http://www.crynwr.com/crynwr/rfc1035/rfc1035.html
##############################NEXT PROBE##############################
Probe TCP DNSStatusRequestTCP q|\0\x0C\0\0\x10\0\0\0\0\0\0\0\0\0|
rarity 7
ports 53,513,514,6050,41523
sslports 853
fallback DNSStatusRequest

# All legitimate 'domain' matchlines for this probe should be placed in the the
# DNSStatusRequest probe section.


# ARCserve Client Agent v4.0d for Solaris 2.x(Running on SunOS 5.8Generic_108528-13 sun4u)
match arcserve m|^\0\0s\0\0\0\0\0$| p/ARCserve Client Agent/ i/backup software/ cpe:/a:ca:arcserve_client_agent/
# ARCServe Win32 Client Agent v4.0
match arcserve m|^h\0\0\0\0\0\0\0$| p/ARCserve Client Agent/ i/backup software/ cpe:/a:ca:arcserve_client_agent/
# ARCserver Client Agent Discovery service on W2K3
match arcserve m|^([\w\d_-]+)\0$| p/ARCserve Discovery/ h/$1/ cpe:/a:ca:arcserve_client_agent/
match login m|^\0\r\n\nIQinVision IQeye3 Version ([vV].*)\n\r\nType HELP| p/IQinVision IQeye3 logind/ v/version $1/ d/webcam/
match login m|^\0\r\n\nLantronix ETS16 Version V([\d.]+)/\d+\(\d+\)\n\r\nType HELP at the 'BRTR-ETS16>' prompt for assistance\.\n\r\nUsername> | p/Lantronix ETS16 logind/ v/$1/ d/terminal server/ cpe:/h:lantronix:ets16:$1/
# Craftbukkit server build 860 (Minecraft v 1.6.6) http://bukkit.org
match minecraft m|^\xff\0\x0e\0P\0r\0o\0t\0o\0c\0o\0l\0 \0e\0r\0r\0o\0r$| p/Minecraft game server/
match shell m|^\0rsh: \x10: Command not supported\n| p/Ricoh rshd/ d/printer/

# TrinityCore
match wow m|^\0\0\t.{32}\x01.*?\0\x10..\0\0\0\0......([^\0]+)\x00([\d.]{7,15}:\d+)\0| p/World of Warcraft authserver/ i/realm: $1 on $2/

# Know the device but not the service.
# match unknown m|^\0\0\0\0\0\x03\0\x80\x01$| p/Weintek MT8000 touch screen/ d/media device/

##############################NEXT PROBE##############################
Probe UDP NBTStat q|\x80\xf0\0\x10\0\x01\0\0\0\0\0\0\x20\x43\x4bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0\x21\0\x01|
rarity 4
ports 137

# NBTStat queries use DNS query packet format and so will trigger responses from DNS services
# the \x0_, \x8_, \x9_ below accounts for recursion / authenticated data flags
softmatch domain m|^\x80\xf0[\x80\x81][\x02\x82\x92]\0\x01\0\0\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01$| i/generic dns response: SERVFAIL/
softmatch domain m|^\x80\xf0[\x80\x81][\x03\x83\x93]\0\x01\0\0\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01$| i/generic dns response: NXDOMAIN/

match domain m|^\x80\xf0\x81\x83\0\x01\0\0\0\0\0\0 ckaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\0\0!\0\x01| p/Mikrotik DNS/ d/router/

# NBT Response starts with a header:
# The following fields are each 2 bytes: transaction ID; Flags; question count; answer count; name service count; additional record count
# Next comes 34 bytes NUL-terminaed name
# then comes 2 byte fields: question type; question clss
# 4 byte TTL
# 2 byte rdata length
# 1 byte number of names
### -- End of header
# Next comes the given number of nbnames - each are a 15 byte name (space padded) followed by a one byte service type, and then 16 BIT flags
### -- End of name table - finally comes the footer:
# 48 - Adapter address (eg MAC addy)
# 8 bit fields: major version; minor version
# 16 bit fields: duration; frmps received; frmps transmitted; iframe receive errors; transmit aborts
# 32 bit fields: trasnmitted; received
# The remaining fields are all 16-bits: iframe transmit errors; number of receive buffers; tl_timeouts; tl_timeouts; free ncbs; ncbs;
#                                       max_ncbs; number of transmit buffers; max datagram; pending sessions; max sessions; packet_sessions

# I'm not convinced that these next 4 work on a very wide variety of
# machines.  I think most of the real matching comes in the next block.
match netbios-ns m|^\x80\xf0\x84\0\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0...(\w{1,15}) *\0\x04\0(\w{1,15}) *\0\x84\0\w{1,15} *\x03\x04\0\w{1,15} *\x04\0\w{1,15} *\x1e\x84\0\w{1,15} *\x1d\x04\0\x01\x02__MSBROWSE__\x02\x01\x84\0(\w{1,15}) *\x03|s p/Microsoft Windows XP netbios-ssn/ i/workgroup: $2 user: $3/ o/Windows XP/ h/$1/ cpe:/o:microsoft:windows_xp/
match netbios-ns m|^\x80\xf0\x84\0\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0...(\w{1,15}) *\0\x04\0(\w{1,15}) *\0\x84\0\w{1,15} *\x03\x04\0\w{1,15} *\x04\0\w{1,15} *\x1e\x84\0\w{1,15} *\x1d\x04\0\x01\x02__MSBROWSE__\x02\x01\x84\0\0|s p/Microsoft Windows XP netbios-ssn/ i/workgroup: $2/ o/Windows XP/ h/$1/ cpe:/o:microsoft:windows_xp/
match netbios-ns m|^\x80\xf0\x84\0\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0...(\w{1,15}) *\0\x04\0(\w{1,15}) *\0\x84\0\w{1,15} *\x03\x04\0\w{1,15} *\x04\0(\w{1,15}) *\x03\x04\0\w{1,15} *\x1e\x84\0|s p/Microsoft Windows XP netbios-ssn/ i/workgroup: $2 user: $3/ o/Windows XP/ h/$1/ cpe:/o:microsoft:windows_xp/
match netbios-ns m|^\x80\xf0\x84\0\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0...(\w{1,15}) *\0\x04\0(\w{1,15}) *\0\x84\0\w{1,15} *\x03\x04\0\w{1,15} *\x04\0\w{1,15} *\x1e\x84\0|s p/Microsoft Windows XP netbios-ssn/ i/workgroup: $2/ o/Windows XP/ h/$1/ cpe:/o:microsoft:windows_xp/

# It would be really nice if we could get username and/or OS
# information from this.  But it is quite hard to parse out the proper
# information unambiguously, especially with just regular expressions.
# But it certainly would be nice to get more info:
#
# nbtstat
#
match netbios-ns m|^\x80\xf0\x84\0\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0\0..([\w\-]{1,15}) *\0D\0.*\0([\w\-]{1,15}) *\0\xc4\0|s p/Microsoft Windows netbios-ssn/ i/workgroup: $2/ o/Windows/ h/$1/ cpe:/o:microsoft:windows/a
match netbios-ns m|^\x80\xf0\x84\0\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0\0..([\w\-]{1,15}) *\0D\0([\w\-]{1,15}) *\0\xc4\0|s p/Microsoft Windows netbios-ssn/ i/workgroup: $2/ o/Windows/ h/$1/ cpe:/o:microsoft:windows/a
match netbios-ns m|^\x80\xf0\x84\0\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0\0...*\0([\w\-]{1,15}) *\0D\0.*\0([\w\-]{1,15}) *\0\xc4\0|s p/Microsoft Windows netbios-ssn/ i/workgroup: $2/ o/Windows/ h/$1/ cpe:/o:microsoft:windows/a
match netbios-ns m|^\x80\xf0\x84\0\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0\0...*\0([\w\-]{1,15}) *\0D\0([\w\-]{1,15}) *\0\xc4\0|s p/Microsoft Windows netbios-ssn/ i/workgroup: $2/ o/Windows/ h/$1/ cpe:/o:microsoft:windows/a

# Samba
match netbios-ns m|^\x80\xf0\x84\0\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0...([\w\-]{1,15})[\s]{0,14}\x20\x04\0.*?([\w\-]{1,15})[\s]{0,14}\0\x84\0\0\0\0\0\0\0|s p/Samba nmbd netbios-ns/ i/workgroup: $2/ h/$1/ cpe:/a:samba:samba/
match netbios-ns m|^\x80\xf0\x84\0\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0...([\w\-]{1,15})[\s]{0,14}\0\x04\0.*?([\w\-]{1,15})[\s]{0,14}\x1e\x84\0\0\0\0\0\0\0|s p/Samba nmbd netbios-ns/ i/workgroup: $2/ h/$1/ cpe:/a:samba:samba/

# The following lines contain very similar matches but allow for variations in ordering of Workstation (\0\x04\0) and Workgroup (\0\x84\0)
# Active Directory Controllers - service \x1c
match netbios-ns m|^\x80\xf0\x84\0\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0...([\w\-]{1,15})[\s]{0,14}\0\x04\0.*?[\w\-]{1,15}[\s]{0,14}\0\x84\0.*?([\w\-]{1,15})[\s]{0,14}\x1c\x84\0|s p/Microsoft Windows netbios-ns/ i/Domain controller: $2/ o/Windows/ h/$1/ cpe:/o:microsoft:windows/a
match netbios-ns m|^\x80\xf0\x84\0\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0...[\w\-]{1,15}[\s]{0,14}\0\x84\0.*?([\w\-]{1,15})[\s]{0,14}\0\x04\0.*?([\w\-]{1,15})[\s]{0,14}\x1c\x84\0|s p/Microsoft Windows netbios-ns/ i/Domain controller: $2/ o/Windows/ h/$1/ cpe:/o:microsoft:windows/a
match netbios-ns m|^\x80\xf0\x84\0\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0...[\w\-]{1,15}[\s]{0,14}\0\xc4\0.*?([\w\-]{1,15})[\s]{0,14}\0D\0.*?([\w\-]{1,15})[\s]{0,14}\x1c\xc4\0|s p/Microsoft Windows 2012 R2 netbios-ns/ i/Domain controller: $2/ o/Windows/ h/$1/ cpe:/o:microsoft:windows_server_2012:r2/a

# Member servers, workgroup, etc
match netbios-ns m|^\x80\xf0\x84\0\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0...([\w\-]{1,15})[\s]{0,14}\0\x04\0.*?([\w\-]{1,15})[\s]{0,14}\0\x84\0|s p/Microsoft Windows netbios-ns/ i/workgroup: $2/ o/Windows/ h/$1/ cpe:/o:microsoft:windows/a
match netbios-ns m|^\x80\xf0\x84\0\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0...([\w\-]{1,15})[\s]{0,14}\0\x84\0.*?([\w\-]{1,15})[\s]{0,14}\0\x04\0|s p/Microsoft Windows netbios-ns/ i/workgroup: $1/ o/Windows/ h/$2/ cpe:/o:microsoft:windows/a
match netbios-ns m|^\x80\xf0\x84\0\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0...([\w\-]{1,15})[\s]{0,14}\x20\x04\0.*?([\w\-]{1,15})[\s]{0,14}\x1e\x84\0|s p/Microsoft Windows 10 netbios-ns/ i/workgroup: $2/ o/Windows/ h/$1/ cpe:/o:microsoft:windows_10/

# The following allow more flexible ordering of Workstation (\0\x04\0) and Workgroup (\0\x84\0) and the number of other NetBIOS services between
match netbios-ns m|^\x80\xf0\x84\0\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0...([\w\-]{1,15})[\s]{0,14}.*\0([\w\-]{1,15})[\s]{0,14}\0\x84\0|s p/Microsoft Windows or Samba netbios-ns/ i/workgroup: $2/ h/$1/

# Apple seems to just include the Workstation service, with the permanent flag. Second matchline accounts for MAC address included in packet
match netbios-ns m|^\x80\xf0\x84\0\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0\0A\x01([\w\-]{1,15})[\s]{0,14}\0d\0\0\0\0\0\0\0\0\0| p/Apple Mac OS X netbios-ns/ o/Mac OS X/ h/$1/ cpe:/o:apple:mac_os_x/a
match netbios-ns m|^\x80\xf0\x84\0\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0\0A\x01([\w\-]{1,15})[\s]{0,14}\0d\0[^\0]{6}\0\0\0\0\0\0\0\0\0| p/Apple Mac OS X netbios-ns/ o/Mac OS X/ h/$1/ cpe:/o:apple:mac_os_x/a
match netbios-ns m|^\x80\xf0\x84\0\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0\0A\x01([\w\-]{1,15})[\s]{0,14}\0\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0| p/Apple Mac OS X netbios-ns/ o/Mac OS X/ h/$1/ cpe:/o:apple:mac_os_x/a

match netbios-ns m|^\x80\xf0\x84\0\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0...([\w\-]{1,15})[\s]{0,14}\0d\0.*\0([\w\-]{1,15})[\s]{0,14}\0\xe4\0|s p/Samba nmbd netbios-ns/ i/workgroup: $2/ h/$1/ cpe:/a:samba:samba/

match netbios-ns m|^\x80\xf0\x84\0\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0\0/\x00......\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0|s p/Microsoft Windows Mobile netbios-ns/ o/Windows/ cpe:/o:microsoft:windows/a

match netbios-ns m|^\x80\xf0\x85\0\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0...([\w\-]{1,15}).*\04\0([\w\-]{1,15}) *\x1e\x84\0|s p/Novell NetWare netbios-ns/ i/workgroup: $2/ o/NetWare/ h/$1/ cpe:/o:novell:netware/a


#
# Samba has a version too
# nmbd version 2.2.7 on Linux 2.4.20
match netbios-ns m|^\x80\xf0\x84\0\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0...([\w\-]{1,15}).*\0([\w\-]{1,15}) *|s p/Samba nmbd netbios-ns/ i/workgroup: $2/ h/$1/ cpe:/a:samba:samba/

# From an acer PDA
match netbios-ns m|^\x80\xf0\x84\0\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0...\0\x80H'y\x86\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0| p/WinCE netbios-ns/ o/Windows CE/ cpe:/o:microsoft:windows_ce/a

# From a mikrotik router
match netbios-ns m|^\x80\xf0\x85\x80\0\x01\0\0\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0...\d+\.\d+ \0D\0\0\0| p/MikroTik router netbios-ns/ d/router/

match netbios-ns m|^\x80\xf0\x84\x00\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0...\x01\x02__MSBROWSE__\x02\x01\x84\0(MACBOOKPRO-[0-9A-F]{4})\0.*\0([\w._ -]+)\x1d|s p/Apple Mac OS X netbios-ns/ i/workgroup: $2/ o/Mac OS X/ h/$1/ cpe:/o:apple:mac_os_x/

match netbios-ns m|^\x80\xf0\x85\x80\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0...([\w\-]+) *\0\x04\0|s p/Xerox WorkCentre netbios-ns/ d/printer/ h/$1/
# Brother MFC-9340CDW
match netbios-ns m|^\x80\xf0\x84\0\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\x04\x93\xe0...([\w-]+)\0D\0......\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0|s p/Brother printer netbios-ns/ d/printer/ h/$1/


softmatch netbios-ns m|^\x80\xf0\x84\0\0\0\0\x01\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01\0\0\0\0...([\w\-]{1,15})[\s]{0,14}| p/Unknown netbios-ns/ h/$1/
softmatch netbios-ns m|^\x80\xf0[\x80-\x8f].\0\0\0.\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01|

match ntp m|^\x04\x01\0\0\0\0\0\0\0\0\0\0LOCL....\0\0\0\0AAAAA\0\0!....\0\0\0\0....\0\0\0\0| p/Actiontec ntpd/ d/broadband router/

# Apparently used on OS X: http://support.apple.com/kb/ts1629
match osu-nms m|^\x08\x02\0\x03\x03\x11\0\0\x03\x03\x12\0\0\x03\x03\x13\0\0\x03\x03\x14\0\0\x06\x03\x15\0\0\0\0\0\x06\x03\x16\0\0\0\0\0\x03\x03\x18\0\0\x04\x03\x19\0\0\0\x06\x03!\0\0\0\0\0\x06\x03\"\0\0\0\0\0\x06\x03#\0\0\0\0\0\x06\x03\$\0\0\0\0\0\x06\x03%\0\0\0\0\0\x06\x03&\0\0\0\0$| p/OSU Network Monitoring System/

##############################NEXT PROBE##############################
Probe UDP Help q|help\r\n\r\n|
rarity 3
ports 7,13,37,42
match chargen m|@ABCDEFGHIJKLMNOPQRSTUVWXYZ|
match echo m|^help\r\n\r\n$|
# Solaris 8, 9
match daytime m=^[A-Z][a-z]{2} [A-Z][a-z]{2} +\d{1,2} +\d\d:\d\d:\d\d (?:19|20)\d\d\n\r$= p/Sun Solaris daytime/ o/Solaris/ cpe:/o:sun:sunos/a
# Mandrake Linux 9.2, xinetd daytime
match daytime m|^[0-3]\d [A-Z][A-Z][A-Z] 20\d\d \d\d:\d\d:\d\d \S+\r\n|
# Windows small services daytime
match daytime m|^\d{1,2}:\d\d:\d\d [AP]M \d{1,2}/\d\d/\d{4}\n$| p/Windows small service daytime/ o/Windows/ cpe:/o:microsoft:windows/a
match daytime m|^\d{1,2}:\d\d:\d\d \d{1,2}/\d\d/\d{4}\n$| p/Windows daytime/ o/Windows/ cpe:/o:microsoft:windows/a
match daytime m|^\d\d:\d\d:\d\d \d\d.\d\d.20\d\d\n$| p/Microsoft Windows International daytime/ o/Windows/ cpe:/o:microsoft:windows/a
match daytime m|^\w\w\w \w\w\w \d\d \d\d:\d\d:\d\d \d\d\d\d\r\n$| p/AIX daytime/ o/AIX/ cpe:/o:ibm:aix/a
match daytime m|^(\w\w\w \w\w\w \d\d \d\d:\d\d:\d\d \w+ \d\d\d\d)\r\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\x7f\xff\xec0\0\0\0\0\0\0\0\0\0\0\0\0\x04\x01Q\xa0\0\0\0\0\0\x01\0\x15\x90-d\0\0\0\0\0\0\0\0\x1c\0\0\xff\xfe\xff\xff\xff\xff\xc5:H\0\0\x16\xc3\xd8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xac\x10\x0b\x05\0\xff\0\x06T\xa3\0\0 !\"#\$%&'\(\)\*\+,-\./0123456789:;<=>\?@ABCDEFGHIJKLMNO\xd3\$\x12\xccTUVWOy\x94L\0\r\xd1z\0\0\0\0\x04\x02\x1b`\0\0\0\0\x04\x02\x1b`| i/time: $1/

match drweb m|^\x7csrv_realm=([^\x7c]+)\x7csrv_Uuid=[-\da-f]{36}\x7cdws9=\d+\x7cMajorVer=(\d+)\x7cMinorVer=(\d+)\x7c| p/DrWeb/ v/$2.$3/ i/realm: $1/ cpe:/a:drweb:drweb:$2.$3/
# TIME
match time m|^[\xd5-\xef]...$|s i/32 bits/
match time m|^[\xd5-\xef]....\0\0\0$|s i/64 bits/
# Solaris Internet Name Server (42/udp), see ien116.txt
match nameserver m|^help\r\n\r\n\0\0\0\0\x20CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\x01| p/Solaris Internet Name Server/ i/IEN 116/ o/Solaris/ cpe:/o:sun:sunos/a
match nameserver m|^\x03\x03\x02$| p/Solaris Internet Name Server/ i/IEN 116/ o/Solaris/ cpe:/o:sun:sunos/a
match nameserver m|^\0\x06\x01\0\0\x01\0\0\x03\x03\x02$| p/Solaris Internet Name Server/ i/IEN 116/ o/Solaris/ cpe:/o:sun:sunos/a

match valve-steam m|^\xff\xff\xff\xff!L_\xa0.{28}\0\0\0\x08\x06\x10\x06\x18\x9c\xd3\x01\".([\w.-]+)0\x028| p/Valve Steam In-Home Streaming service/ h/$1/
match valve-steam m|^\xff\xff\xff\xff!L_\xa0| p/Valve Steam In-Home Streaming service/

##############################NEXT PROBE##############################
Probe TCP Hello q|EHLO\r\n|
rarity 8
ports 25,587,3025
sslports 465
totalwaitms 7500

match exalead m|^\? 1 illegal command\n\0| p/Exalead search appliance/

match smtp m|^220\s+(DP-\d+)\r\n250-Hello\r\n250-DSN\r\n| p/Panasonic smtpd/ v/$1/ i/Panasonic printer/ d/printer/
match smtp m|^220 ESMTP service ready\r\n250\x20ok\r\n| p/Rustock smtp backdoor/ i/**BACKDOOR**/ o/Windows/ cpe:/o:microsoft:windows/a
match smtp m|^220 Hello [A-Z][a-z]{2}, .*\r\n501 Command \"EHLO\" requires an argument\r\n| p/Lotus Notes smtpd/ cpe:/a:ibm:lotus_notes/
match smtp m|^220 ([\w_.-]+) ESMTP\r\n250-[-\w_.]+\r\n250-AUTH LOGIN CRAM-MD5 PLAIN\r\n250-AUTH=LOGIN CRAM-MD5 PLAIN\r\n250-PIPELINING\r\n250 8BITMIME\r\n| p/Access Remote PC smtpd/ o/Windows/ h/$1/ cpe:/o:microsoft:windows/a
match smtp m|^220 \[[\w_.-]+\] FTGate Server Ready\r\n250-([\w._-]+)\r\n| p/Floosietek FTGate smtpd/ o/Windows/ h/$1/ cpe:/o:microsoft:windows/a
# NetWare GroupWise Internet Agent 7 SP3 beta
match smtp m|^220 ([\w_.-]+) Ready\r\n250-.*\r\n250-AUTH LOGIN\r\n(?:250-8BITMIME\r\n)?250-SIZE\r\n250 DSN\r\n| p/Novell NetWare GroupWise Internet Agent smtpd/ o/NetWare/ h/$1/ cpe:/a:novell:groupwise/ cpe:/o:novell:netware/a
match smtp m|^220 .* Ready\r\n250-.*\r\n250-AUTH LOGIN\r\n(?:250-8BITMIME\r\n)?250-SIZE\r\n250 DSN\r\n| p/Novell NetWare GroupWise Internet Agent smtpd/ o/NetWare/ cpe:/a:novell:groupwise/ cpe:/o:novell:netware/a
match smtp m|^220 \[[\w_.-]+\] ESMTP Ready\r\n501 HELO requires domain address\r\n| p/Canon imageRUNNER C5185 smtpd/ d/printer/ cpe:/h:canon:imagerunner_c5185/
match smtp m|^220 .* SMTP ready at .*\r\n501 Command \"EHLO\" requires an argument\r\n| p/Lotus Domino smtpd/ cpe:/a:ibm:lotus_domino/
match smtp m|^220 Hello\r\n501 Command \"EHLO\" requires an argument\r\n| p/Lotus Domino smtpd/ cpe:/a:ibm:lotus_domino/
match smtp m|^220 ([\w_.-]+)\r\n250-[\w._-]+ Axigen ESMTP hello\r\n| p/Axigen smtpd/ h/$1/ cpe:/a:gecad:axigen_mail_server/
match smtp m|^220 [^\r\n]*ESMTP[^\r\n]*\r\n501 ehlo requires domain/address - see RFC-2821 4\.1\.1\.1\r\n| p/qpsmtpd/ cpe:/a:ask_bjorn_hansen:qpsmtpd/
match smtp m|^220 ([\w_.-]+) ESMTP Service ready\r\n250-[\w_.-]+ Missing required domain name in EHLO, defaulted to your IP address \[[\d.]+\]\r\n| p/Critical Path smtpd/ h/$1/
match smtp m|^220 \r\n501 \r\n| p/Konica Minolta bizhub 350 printer smtpd/ d/printer/ cpe:/h:konicaminolta:bizhub_350/
match smtp m|^220 ([\w_.-]+) ESMTP SonicWALL \(([\d.]+)\)\r\n| p/SonicWALL Email Security smtpd/ v/$2/ d/security-misc/ h/$1/
match smtp m|^220 ([\w_.-]+) ready\r\n250-[\w_.-]+\r\n250 AUTH LOGIN PLAIN \r\n$| p/Freemail smtpd/ h/$1/
match smtp m|^554 SMTP synchronization error\r\n| p/Exim smtpd/ cpe:/a:exim:exim/
match smtp m|^220 ([\w._-]+)  ESMTP\r\n501 Syntax: EHLO hostname\r\n| p/Postfix smtpd/ h/$1/ cpe:/a:postfix:postfix/a
match smtp m|^220 ESMTP Postfix\r\n501 Syntax: EHLO hostname\r\n| p/Postfix smtpd/ cpe:/a:postfix:postfix/a
match smtp m|^220-\*{89}\r\n220 \*{32}\r\n250-Welcome [\w._-]+, nice to meet you\.\.\.\r\n250-AUTH=(?:\w+ ?)+\r\n250-AUTH(?: \w+)+\r\n250-SIZE \d+\r\n250-DSN\r\n250-ETRN\r\n250 XXXA\r\n| p/ArGoSoft smtpd/ o/Windows/ cpe:/o:microsoft:windows/a
match smtp m|^220 ESMTP Ready\r\n250-([\w._-]+) Hello \[[\d.]+\]\r\n250-SIZE\r\n250-PIPELINING\r\n250-DSN\r\n250-ENHANCEDSTATUSCODES\r\n250-STARTTLS\r\n250-X-ANONYMOUSTLS\r\n250-AUTH NTLM\r\n250-X-EXPS GSSAPI NTLM\r\n250-8BITMIME\r\n250-BINARYMIME\r\n250-CHUNKING\r\n250-XEXCH50\r\n250 XRDST\r\n| p/Microsoft Outlook Web Access smtpd/ h/$1/
match smtp m|^220 ([\w._-]+) ESMTP\r\n250-\1\r\n250-STARTTLS\r\n250-SIZE 50000000\r\n250-PIPELINING\r\n250 8BITMIME\r\n| p/qmail smtpd/ h/$1/ cpe:/a:djb:qmail/
match smtp m|^220  ESMTP\r\n501 5\.0\.0 EHLO requires domain address\r\n| p/Sendmail/ cpe:/a:sendmail:sendmail/a
match smtp m|^552 Invalid domain name in HELO command \(DLH use case\)\.\r\n| p/Lotus Notes smtpd/ cpe:/a:ibm:lotus_domino/
match smtp m|^220 ([\w.-]+) ESMTP \w\w\w, \d\d \w\w\w \d\d\d\d [\d:]{8} ([-+]?\d\d\d\d)\r\n550 Invalid or missing command argument\(s\)\r\n| p/MDaemon smtpd/ i/timezone: $2/ h/$1/ cpe:/a:alt-n:mdaemon/
match smtp m|^220 ([\w.-]+) Ready\r\n250-Requested mail action okay, completed\.\r\n250 STARTTLS\r\n| p/McAfee Email Gateway/ h/$1/ cpe:/a:mcafee:email_gateway/
match smtp m|^220 \S*[^\w.-]\S* ESMTP CommuniGate Pro [^\d].*\r\n250-([\w.-]+) domain name should be qualified \r\n| p/CommuniGate Pro SMTP/ h/$1/ cpe:/a:stalker:communigate_pro/
match smtp m|^220 (\w[\w.-]+) ESMTP\r\n501 Syntactically invalid EHLO argument\(s\)\r\n| p/Exim smtpd/ h/$1/ cpe:/a:exim:exim/
match smtp m|^220 ESMTP (?:\(NO U[BC]E\))* ?server ready at \w\w\w, \d\d \w\w\w \d\d\d\d [\d:]{8} ([-+]?\d\d\d\d)\r\n501 Command "EHLO" requires an argument\r\n| p/Lotus Notes smtpd/ i/timezone: $1/ cpe:/a:ibm:lotus_notes/
match smtp m|^220 ([\w._-]+) Mail ESMTP ready\r\n250-\1 Axigen ESMTP hello\r\n| p/Axigen smtpd/ h/$1/ cpe:/a:gecad:axigen_mail_server/
# Sometimes the hostnames don't match!
match smtp m|^220 ([\w._-]+) Mail ESMTP ready\r\n250-([\w._-]+) Axigen ESMTP hello\r\n| p/Axigen smtpd/ i/alt hostname: $2/ h/$1/ cpe:/a:gecad:axigen_mail_server/
match smtp m|^220 ([\w._-]+)[^\r\n]*\r\n250-[^ ]* \[[^]]+\], this server offers \d+ extensions\r\n250| p/MailEnable smtpd/ o/Windows/ h/$1/ cpe:/a:mailenable:mailenable/ cpe:/o:microsoft:windows/a

match smtp m|^220 $| p/OpenBSD spamd/

match smtp-proxy m|^220 ([-\w_.]+) .*\r\n250-[-\w_.]+ supports the following ESMTP extensions:\r\n250-SIZE \d+\r\n250-DSN\r\n250-8bitmime\r\n250 OK\r\n| p/Trend Micro IMSS smtp proxy/ o/Windows/ h/$1/ cpe:/o:microsoft:windows/a
match smtp-proxy m|^220 ([\w._-]+) ESMTP [\w._-]+\r\n501 5\.5\.2 HELO requires domain address\r\n| p/SonicWALL Email Security Appliance smtp proxy/ d/proxy server/ h/$1/
match smtp-proxy m|^220 Ready to receive mail -=- ESMTP\r\n250-Ready to receive mail -=-\r\n250-AUTH LOGIN PLAIN\r\n250-AUTH=LOGIN PLAIN\r\n250-PIPELINING\r\n250 8BITMIME\r\n| p/PineApp Mail-SeCure smtp proxy/ cpe:/a:pineapp:mail-secure/
match smtp-proxy m|^220 MailStore SMTP Proxy Server\r\n250-([\w._-]+)\r\n250-STARTTLS\r\n250 MAILSTORE\r\n| p/MailStore smtp proxy/ h/$1/
match smtp-proxy m|^220 OutgoingFilter SMTP\r\n502 OutgoingFilter Command not implemented\r\n| p/Dr.Web SMTP-proxy/ cpe:/a:drweb:smtp-proxy/

##############################NEXT PROBE##############################
Probe TCP Help q|HELP\r\n|
rarity 3
ports 1,7,21,25,79,113,119,515,587,1111,1311,12345,2401,2627,3000,3493,6560,6666-6670,14690,22490
sslports 465,990
totalwaitms 7500

# http://www.computerpokercompetition.org/
match acpc m|^Usage: Valid commands are\nLIST\nCLEAR\nSTATUS\nKILL\nNEW\nCONFIG\nAUTONCONNECT\nGETINFO\nHELP\nFor specific help on each command, type HELP:COMMAND\r\r\n\n| p/Glassfrog computer poker server/

match aleph m|^96\r$| p/Aleph Integrated Library System/
match bitkeeper m|^@SERVER INFO@\nPROTOCOL=([\d.]+)\nVERSION=bk-([\w._-]+)\nUTC=\d+\nTIME_T=\d+\nROOT=([^\n]+)\nUSER=(?:[^\n]+)\nHOST=(?:[^\n]+)\nREALUSER=(?:[^\n]+)\nREALHOST=([^\n]+)\nPLATFORM=([^\n]+)\n| p/BitKeeper distributed VCS/ v/$2/ i/protocol $1; root $3; $5/ h/$4/ cpe:/a:bitmover:bitkeeper:$2/

match caldav m|^<head>\n<title>Error response</title>\n</head>\n<body>\n<h1>Error response</h1>\n<p>Error code 400\.\n<p>Message: Bad request syntax \('HELP'\)\.\n<p>Error code explanation: 400 = Bad request syntax or unsupported method\.\n</body>\n| p/Radicale calendar and contacts server/ i/Python BaseHTTPServer/ cpe:/a:kozea:radicale/ cpe:/a:python:python/

match chat m|^\r\n>STATUS\tset status\r\nINVISIBLE\tset invisible mode\r\nMAINWINDOW\tshow/hide main window\r\n| p/Simple Instant Messenger control plugin/

# CVSD (cvs chrooting service for pserver) cvsd 0.9.18
# CVS 1.11.5 pserver
match cvspserver m|^cvs \[pserver aborted\]: bad auth protocol start: HELP\r\n\n?$| p/cvs pserver/
# CVSNT pserver
match cvspserver m|^cvs \[server aborted\]: bad auth protocol start: HELP\r\n$| p/CVSNT cvs pserver/ cpe:/a:march-hare:cvsnt/
match cvspserver m|^cvs \[server aborted\]: bad auth protocol start: HELP\r\nerror  \n$| p/CVSNT cvs pserver/ cpe:/a:march-hare:cvsnt/
match cvspserver m|^cvsnt \[server aborted\]: bad auth protocol start: HELP\r\nerror  \n$| p/CVSNT cvs pserver/ cpe:/a:march-hare:cvsnt/
match cvspserver m|^cvsntsrv \[server aborted\]: bad auth protocol start: HELP\r\nerror  \n$| p/CVSNT cvs pserver/ cpe:/a:march-hare:cvsnt/
# Concurrent Versions System (CVS) 1.10.7 (client/server)
match cvspserver m|^cvs-pserver \[pserver aborted\]: bad auth protocol start: HELP\r\n\n| p/cvs pserver/

match cvspserver m|^-f \[pserver aborted\]: bad auth protocol start: HELP\r\n\n| p/SunOS cvs pserver/ o/SunOS/ cpe:/o:sun:sunos/a
match echo m|^HELP\r\n$|
match irc-proxy m|^:ezbounce!srv NOTICE \(unknown\) :\x02| p/ezbounce irc proxy/ o/Unix/
# ProFTPD 1.2.0
match ftp m|^220 FTP Server[^[]* \[([\w.-]+)\]\r\n214-The following commands are recognized \(\* =>'s unimplemented\)\.\r\n USER    PASS    ACCT\*   CWD     XCWD    CDUP    XCUP    SMNT\*   \r\n QUIT    REIN\*   PORT    PASV    TYPE    STRU\*   MODE\*   RETR    \r\n STOR    STOU\*   APPE    ALLO\*   REST    RNFR    RNTO    ABOR    \r\n DELE    MDTM    RMD     XRMD    MKD     XMKD    PWD     XPWD    \r\n SIZE    LIST    NLST    SITE    SYST    STAT    HELP    NOOP    \r\n214 Direct comments to | p/ProFTPD/ v/1.2.0/ o/Unix/ h/$1/ cpe:/a:proftpd:proftpd:1.2.0/a
# ProFTPD 1.2.5
match ftp m|^220 ([-.\w]+) FTP server ready\.\r\n214-The following commands are recognized \(\* =>'s unimplemented\)\.\r\n USER    PASS    ACCT\*   CWD     XCWD    CDUP    XCUP    SMNT\*   \r\n QUIT    REIN\*   PORT    PASV    TYPE    STRU    MODE    RETR    \r\n STOR    STOU\*   APPE    ALLO\*   REST    RNFR    RNTO    ABOR    \r\n DELE    MDTM    RMD     XRMD    MKD     XMKD    PWD     XPWD    \r\n SIZE    LIST    | p/ProFTPD/ v/1.2.5/ o/Unix/ h/$1/ cpe:/a:proftpd:proftpd:1.2.5/a
match ftp m|^220 FTP-Server on \[([-\w_.]+)\]\r\n214-The following commands are recognized \(\* =>'s unimplemented\)\.\r\n214-USER    PASS    ACCT\*   CWD     XCWD    CDUP    XCUP    SMNT\*   \r\n214-QUIT    REIN\*   PORT    PASV    TYPE    STRU    MODE    RETR    \r\n214-STOR    STOU\*   APPE    ALLO\*   REST    RNFR    RNTO    ABOR    \r\n214-DELE    MDTM    RMD     XRMD    MKD     XMKD    PWD     XPWD    \r\n214-SIZE    LIST| p/ProFTPD/ v/1.2.Caml1999T030   R   4 (TypedeclР$Misc$Misc2typing/typedecl.mlR_dR_h@@  0 @@@@@@*floatarrayQ  8 @@@A@@@@@&_none_@@ A@@@5extension_constructorP  8 @@@A@@@@@@@@#intA  8 @@@A@@@@@@A@$charB  8 @@@A@@@@@@A@&stringO  8 @@@A@@@@@@@@%floatD  8 @@@A@@@@@@@@$boolE  8 @@%false^@@!@$true_@@'@@@A@@@@@(@A@$unitF  8 @@"()`@@2@@@A@@@@@3@A@
#exnG  8 @@AA@@@@@7@@@%arrayH  8 @ @O@A@A@ @@@@@@@@@$listI  8 @ @P@A"[]a@@M@"::b@@ @Q@@Z@
@@A@Y@@@@@]@@@&optionJ  8 @ @S@A$Nonec@@j@$Somed@@q@@@A@Y@@@@@t@@@&lazy_tN  8 @ @U@A@A@Y@@@@@}@@@)nativeintK  8 @@@A@@@@@@@@%int32L  8 @@@A@@@@@@@@%int64M  8 @@@A@@@@@@@@:Undefined_recursive_module]    Z@@@ @J@@ @@@ @V@@A=ocaml.warn_on_literal_pattern@@.Assert_failure\    @@ @X@@A@
0Division_by_zeroY    '@@@A@+End_of_fileX    /@@@A @)Sys_errorW    7@3@@AƠ)(@.Sys_blocked_io[    @@@@AΠ10@)Not_foundV    H@@@A֠98@'FailureU    P@L@@AߠBA@0Invalid_argumentT    Y@U@@A蠰KJ@.Stack_overflowZ    b@@@A𠰠SR@-Out_of_memoryS    j@@@A[Z@-Match_failureR    r@qmn@ @c@@Ai	h	@
%bytesC  8 @@@A@@@@@
@@@&Stdlib@@@@A  0 54455555@4C@@=R__<@@=@  0 :99:::::@8@@Р(Asttypes(AsttypesMSinNSiv@@  0 LKKLLLLL@@@@@A  0 MLLMMMMM@@@USii@@	@  0 RQQRRRRR@@@Р)Parsetree)ParsetreeeTw|fTw@@  0 dccddddd@@@@@A  0 eddeeeee@@@mTww@@	@  0 jiijjjjj@@@Р)Primitive)Primitive}U~U@@  0 |{{|||||@@@@@A  0 }||}}}}}@@@U@@	@  0 @@@Р%Types%TypesVV@@  0 @@@@@A  0 @@@V@@	@  0 @@@Р(Typetexp(TypetexpWW@@  0 @@@@@A  0 @@@W@@	@  0 @@@&String AYY@AР&Stdlib&String$MiscYY@@  0 @#@@@@Y@@A  ( 0native_repr_kind B[[@@  8 @@'Unboxed @@[[@@B(Untagged @@[[@@C@@A@@@@@[@@A@A@@@@@[@@@@@A@@@@  0 @WMA7@5@@@A  ( %error C]]	@@  8 @@2Repeated_parameter @@^ ^"@@2E5Duplicate_constructor @@ @@@-_#%._#F@@@F5Too_many_constructors @@6`GI7`G`@@IG/Duplicate_label 	@@ @@@DaacEaa~@@WH0Recursive_abbrev @@ @@@RbSb@@eI,Cycle_in_def %@@ @)type_expr@@ @@@fcgc@@yJ3Definition_mismatch )type_expr@@ @+Includecore-type_mismatch@@ @
@@ @
@@dd@@K1Constraint_failed#Env!t@@ @*Errortrace!t+unification@@ @@A$listI*Errortrace#elt$desc@ @ X,! @ X)@ @ X+@ @ X* @ X(@ @@@e
e
Q@@M7Inconsistent_constraint @!t@@ @>!tD+unification@@ @@A<94@ @ X6 @ X3@ @ X5@ @ X4 @ X2@ @@@fRTfR@@N*Type_clash!r!t@@ @p!tv+unification@@ @@Ankf@ @ X@ @ X=@ @ X?@ @ X> @ X<@ @@@'g(g@@:O+Non_regular"*definition'@$Path!t@@ @<i=i	@@OP'used_as(@)type_expr@@ @Ij
Jj
#@@\Q*defined_as)@)type_expr@@ @Vk$*Wk$@@@iR*expansions*@)type_expr@@ @)type_expr@@ @@ @@@ @qlAGrlAp@@S@@uhvmqv@@T3Null_arity_external+@@~nwynw@@U7Missing_native_external,@@oo@@V0Unbound_type_var-)type_expr@@ @0type_declaration@@ @@@pp@@W:Cannot_extend_private_type.r!t@@ @@@qq@@X3Not_extensible_type/!t@@ @@@r	r	*@@Y2Extension_mismatch0!t@@ @S-type_mismatch@@ @@@s+-s+g@@Z1Rebind_wrong_type1)Longident!t@@ @"Y!t@@ @#W!t]+unification@@ @$@AURM@ @ XJ @ XG@ @ XI@ @ XH @ XF@ @&@@thju@@![/Rebind_mismatch3;!t@@ @'!t@@ @(!t@@ @)@@,v-v@@?\.Rebind_private4Y!t@@ @*@@<w=w	@@O](Variance51Typedecl_variance%error@@ @@@Nx		Ox		?@@a^<Unavailable_type_constructor<$!t@@ @@@^y	@	B_y	@	j@@q_4Unbound_type_var_ext=)type_expr@@ @5extension_constructor@@ @@@sz	k	mtz	k	@@`0Val_in_structure>@@|{		}{		@@a?Multiple_native_repr_attributes?@@|		|		@@b:Cannot_unbox_or_untag_type@@@ @@@}		}	
@@c=Deep_unbox_or_untag_attributeA@@ @@@~

~

J@@d)ImmediacyB2Typedecl_immediacy%error@@ @@@
K
M
K
t@@e,SeparabilityE5Typedecl_separability%error@@ @@@ @
u
w @
u
@@f5Bad_unboxed_attributeJ@@ @@@ A

 A

@@g1Boxed_and_unboxedK@@ B

 B

@@h+Nonrec_gadtL@@ C

 C

@@i?Invalid_private_row_declarationMc)type_expr@@ @@@ D

 D
@@j@@A@@@@@]@@@@
D@@@@@ޠް_#'_#<@гࠐ&string_#@@@  0 
		




@	4.  8 @@@A@@@@@@@@@@@@@@@`GK@@@@aaeaat@г㠐&string(aax@@@@@@@.b/b@г堐&string8b@@*@@@@@>c?c@г砐&stringHcIc@@;@@г점Qc@@C@@@@@WdXd@г점`dad@@S@@г&optionjd@г󠡐+Includecoresdtd@@f@@@g@@@@@{e
|e
"@г󠡐#Enve
&e
+@@y@@г*Errortracee
E@г*Errortracee
.e
D@@@@@@@@@@ؠذfRVfRm@гڠ#EnvܰfRqfRv@@@@гޠ*ErrortracefR@гᠡ*ErrortracefRyfR@@@@@@@@@@͠Ͱgg@гϠ#EnvѰgg@@ǰ@@гӠ*Errortraceհg@г֠*Errortraceذgg@@۰@@@ܰ@@@@@ °hh@Ġİi @@Ш@гǠ$Pathǰii@@@@@E@@@Ǡǰ
j
@@Ш@гʠ˰j
j
"@@@@@E@@@ˠ˰k$4@@Ш@гΠϰ#k$6$k$?@@@@@E@@@Ϡϰ,lAQ@@Ш@гҠ$list5lAk6lAo@Вгנذ@lATAlA]@@3@@гڠ۰IlA`JlAi@@<@@@=
@@@>NlAS@@@E@ B@@@@@٠ٰUnw{@@@@֠ְ[o@@@@ӠӰapbp@гՠְjpkp@@]@@гؠٰsp@@e@@@@@֠ְyqzq@гؠ$Pathڰq@@v@@@@@נװr	
r	 @г٠$Path۰r	$@@@@@@@ؠذs+/s+A@гڠ$Pathܰs+Es+K@@@@гޠ+Includecores+N@@@@@@@ݠݰthlth}@гߠ)Longident߰uu@@@@гᠡ#Envuu@@@@г堡*Errortraceu@г蠡*Errortraceuu@@԰@@@հ@@@@@Ԡ԰vv@г֠)Longidentذvv@@@@гڠ$Pathܰv v@@@@гޠ$Path
v@@@@@@@ݠݰww	@гߠ)Longidentw	@@
@@@@@ޠް!x		"x		$@гࠡ1Typedecl_variance,x		(@@@@@@@ݠݰ2y	@	D3y	@	`@гߠ$Path=y	@	d@@/@@@@@ޠްCz	k	oDz	k	@гࠐLz	k	Mz	k	@@?@@г㠐Uz	k	@@G@@@@@[{		@@@@ޠްa|		@@@@۠۰g}		h}	
 @гݠ0native_repr_kindq}	
@@c@@@@@ݠݰw~

x~

6@гߠ0native_repr_kind~

:@@s@@@@@ߠ߰
K
O
K
X@гᠡ2Typedecl_immediacy
K
\@@@@@@@ޠް @
u
y @
u
@гࠡ5Typedecl_separability @
u
@@@@@@@ݠݰ A

 A

@гߠ&string A

@@@@@@@ߠ߰ B

@@@@ܠܰ C

@@@@٠ٰ D

 D
@г۠ܰ D
@@@@@@@@A@@@@  0 @@@Р)Typedtree)Typedtree F!& F!/@@  0 @@@@@A  0 @@@ F!!	@@
@  0 @@@%ErrorD H1; H1@@    A@(Location!t@@ @@@ @@@A H11 H1V@@sг(Location H1D H1N@@  0 @1@@@@г%error H1Q@@
@@@@@@@@ࠠ;get_unboxed_from_attributes- JX\. JXw@@@@)Parsetree0type_declaration@@ @E@@@ @E@@@ @E@@ @E@  0 FEEFFFFF@g]W@@@@%sdeclW JXxX JX}@@@&  0 UTTUUUUU@2^ JXX_ Q@@@@@@ࠠ'unboxedj Kk K@@@$boolE@@ @F@  0 pooppppp@(D@@u@@@డ2Builtin_attributes+has_unboxed2Builtin_attributes K K@@)Parsetree*attributes@@ @s%@@ @r@ @q@>parsing/builtin_attributes.mli S S
@@2Builtin_attributesO@@@@@F@y4@@F@x@F@w1@@ఐ_%sdecl K K@=@@E@E@E@E@G@0ptype_attributes K K@  , 0ptype_attributes@@ @*attributes@@ @@F      , *ptype_name(Asttypes#loc&stringO@@ @@@ @@@@A5parsing/parsetree.mli3333-@@   , ,ptype_params!$listI)core_type@@ @ܠ((variance@@ @ޠ.+injectivity@@ @@ @@ @@@ @@A7@A%3.33&3.3m@@   , +ptype_cstrsE$"@@ @&@@ @(Location!t@@ @@ @@@ @@BU@AC33D33@@   , *ptype_kindc)type_kind@@ @@C`@AN44!O447@@   , -ptype_privatenc,private_flag@@ @@Dk@AY484=Z484Y@@    , .ptype_manifesty&optionJU@@ @@@ @@E{@Ai4p4uj4p4@@   , )ptype_loc5!t@@ @@G@Au44v44@@ @Ay44z44@@  @@@@G@G@G@@@@@@@	e K@@@ࠠ%boxed	p L	q L@@@@@ @F@  0 	t	s	s	t	t	t	t	t@@@	v@@@డ)has_boxed2Builtin_attributes	 L	 L@@*attributes@@ @v@@ @u@ @t@  T

 T

3@@P@@@@@F@,@@F@@F@+@@ఐ]%sdecl	 L	 L@;@@:@0ptype_attributes	 L	 L
@
@@0@@G@G@G@H@@9
@@MI@@	 L@@ఐ`%boxed	 M	 M@`@a@	w@@`@@ @  0 								@`n@@@ఐx'unboxed	 M	 M$@i@@v@@ @@@@@@ @@Ġ$true	 N*.	 N*2@  < 	@@ @M@@@AB@B@A	@@	@@@@@@H@-@Ġ
 N*4
 N*8@@@@@@@H@9@@@@@H@>@@>@@డ%raise
 N*<
  N*A@@#exnG@@ @j!a @i@ @h&%raiseAA @@@*stdlib.mli^BB^Bg@@&Stdlib@@@@@@F@E@E@F@@F@m@@ภ%Error
N N*C
O N*H@  < `	@@ @@\Bf@   @AP@@Mఐ
%sdecl
` N*I
a N*N@@@@)ptype_loc
g N*O
h N*X@
@@u@@G@G@G@@ภ1Boxed_and_unboxed
x N*Z
y N*k@  < m@@ @k@@@FHYa@A@@@	@@@@G@G@@@
 N*B
 N*m@@g@@G@G@@@p@@N@Ġ
 Onr
 Onv@@@@@)@@H@@Ġ%false
 Onx
 On}@  < 
c@@@@B@B@A
@@
b@@@@>@@H@@@@@@H@@@@@ภ$Some
 On
 On@  < 
'~
6@ @T@
(A@AAB@A
@@
(ภ!
 On
 On@ @@@F@@@@@@Ġ3
 P
 P@2@@@@h@@H@@Ġ
 P
 P@@@@@z@@H@@@@@@H@@@@@ภ$Some
 P
 P@<ภ
 P  P@@@@E@ F@ .@@@@E@  1@Ġn Q Q@m@@@@@@H@C@Ġz! Q" Q@y@@@@@@H@O@@@@@H@T@@T@@ภ$None2 Q@  < 
v@@@@AAB@A@@
@@@E@ 	`@@A9 M@@b@x@@@@@@@AA@@	@ @ 4  0 :99:::::@@@@@@@@ࠠ(add_typeL U

M U

@@@%check$boolE@@ @ E@ 6@%Ident!t@@ @ E@ =@%Types0type_declaration@@ @ E@ D@#Env!t@@ @ E@ K
@@ @ E@ L@ @ ME@ E@ @ FE@ >@ @ ?E@ 7@ @ 8E@ 5  0 @Be_@`@t@@@??D U

 U

@@@G  0 @U U

 W
s
@@@@@@"id U

 U

@@@N  0 @]@@y@@@@@$decl U

 U

#@@@Q  0 @b@@z@@@@@#env U

$ U

'@@@T  0 @e@@{@@@@డ\-warning_scope2Builtin_attributes V
*
, V
*
L@)ppwarning&optionJ@@ @d@@ @c@i*attributes@@ @b@@$unitF@@ @a!a @_@ @`@ @^@ @]@ @\@r
>
>s A
f
@@qJ-,@@*(%@@E@ [@@E@ Z@$@@E@ Y@@!@@E@ XE@ V@E@ W@E@ U@E@ T@E@ S  0       @Ua@X@9|@@@Eภ$Sometภ7 V
*
X8 V
*
]@@@@N@@F@ nF@ r@@@	@@F@ s@@ఐ$declP V
*
^Q V
*
b@@@E@!:E@ yE@ wE@ G5@/type_attributes^ V
*
c_ V
*
r@  , /type_attributes%Types0type_declaration@@ @
)Parsetree*attributes@@ @
@J  8   , +type_params$listI)type_expr@@ @
@@ @
@@@A0typing/types.mlih33h33@@   , *type_arity&#intA@@ @
@A@A
i33i33@@+   , )type_kind22.type_decl_kind@@ @
@B'@Aj33j34@@6   , ,type_private=(Asttypes,private_flag@@ @
@C5@A&k44'k44+@@D   , -type_manifestK&optionJ8@@ @
@@ @
@DE@A6l4,407l4,4P@@T   , -type_variance[H`(Variance!t@@ @
@@ @
@EW@AHm4Q4UIm4Q4t@@f   , 1type_separabilitymZr,Separability!t@@ @
@@ @
@Fi@AZo44[o44@@x   , /type_is_newtype$boolE@@ @
@Gu@Afp44gp44@@   , 4type_expansion_scopee@@ @
@H@Apq5 5qq5 5@@   , (type_loc(Location!t@@ @
@I@A~r55#r558@@   , .type_immediate.Type_immediacy!t@@ @
@K@At5d5ht5d5@@   , 4type_unboxed_default2@@ @
@L@Au55u55@@   , (type_uid#Uid!t@@ @
@M@Aw55w56@@ @As595=s595c@@ @@<@@F@ lF@ zF@ x@@@%param Ġ"()
C W
s
|
D W
s
~@  < @@ @N@@@@A@A@A
"@@@@	@@M@@I@ *@@డ
(add_type#Env
[ W
s

\ W
s
@%check@@ @k@@@ @j@@@ @i@@@ @h@@ @g@ @f@ @e@ @d@ @c@.typing/env.mli&&&&@@ "!@@(@@G@ @!@@G@ @@@G@ @@@G@ @@G@ @G@ @G@ @G@ @G@ o@6ఐ%check
 W
s

 W
s
@@@NE@ E@ 9@@ఐ"id
 W
s

 W
s
@@@RE@!9E@ @@@ఐ$decl
 W
s

 W
s
@@@j@@ఐ#env
 W
s

 W
s
@@@SE@!;E@ N@@w@@I@@A
 W
s
w3@@@@@F@ k@F@ jF@!?@@;@@S@@A<A@b  0 







@@@@@A">A@r  0 







@@@@@A5@A@  0 







@2@@@@A
 U

CA@@ @!I  0 







@J@@@@H@HG@\@ࠠ*enter_typeà
 Y


 Y

@@@@(Asttypes(rec_flag@@ @!nE@!K@@@ @2E@!R@@@ @.E@!Y@@@ @2E@!c
@@ @.E@!d@ @!eE@!`"E@!a@ @!bE@!Z@ @![E@!S@ @!TE@!L@ @!ME@!J  0 '&&'''''@@@@x@@@@(rec_flagŠ: Y

; Y

@@@C  0 87788888@OA Y

B }@@@@@@#envƠM Y

N Y

@@@H  0 KJJKKKKK@ Y@@d~@@@@@%sdeclǠ^ Y

_ Y

@@@P  0 \[[\\\\\@\@@u@@@@@.ࠠ"idȠs Y

t Y

@@@W  0 qppqqqqq@"h@@ @@@@ࠠ#uidɠ Y

 Y

@@@_@@ Y

 Y

@@kf@G@!f@@@ࠠ&neededʠ Z

 Z

@@@$boolE@@ @'6F@!l  0 @,4@/@ A(@#@ B@@@ఐz(rec_flag [

 [

@`@@E@!N  0 @@@@Ġ(Asttypes,Nonrecursive \

 \
@  < ,Nonrecursive@@ @@@@@B@B@A4parsing/asttypes.mli``@@@I@@
@@@@@@ఐ%sdecl ], ]1@f@@E@.E@'E@'E@'E@'eE@!wE@!uE@!\:@*ptype_kind ]2 ]<@ϰ@@@@ @!vD@Ġ-Ptype_variant ^BL ^BY@  < -Ptype_variant@@ @@%7constructor_declaration@@ @@@ @@A@BBD@A766866@@@ ࠠ$scdsˠ  ^BZ! ^B^@@@@@ @!~@@ @!}v@@@)
@@@@K@!z@@z@@డ
$List$iter: _bn; _bw@@@!a @"$unitF@@ @#@ @#@$listI@@ @#@@ @#@ @#@ @#@(list.mli EE Eo@@,Stdlib__ListS%$@@@@W@@I@%I@$#@@I@$@I@$@ 
@@I@$@@I@$@I@$@I@$  0 onnooooo@ZT@U@ D@@@@@"cd _b} _b@@@%@@డX"<> ` `@@!a @ W@$boolE@@ @ V@ @ U@ @ T)%notequalBAv@@@@v w @@uR@@@u@@J@$@@J@$J@$@@@J@$@J@$@J@$  0 @LD_@;@ E@@@@ఐN"cd ` `@@@sI@$I@$I@$@'pcd_res ` `@  , 'pcd_res@@ @0@@ @
@@ @@B  , (pcd_name
#loc@@ @
@@ @	@@
@A8888@@   , (pcd_args5constructor_arguments@@ @@A@A#88$88@@ (  , 'pcd_loc(!t@@ @@C$@A/990992@@   , .pcd_attributes4L@@ @@D-@A893989939S@@ @A<88=89@@ ʰPC@@m`@@ภ$None( `) `@@@@{J@%n@@_@@@@J@%K@$u@డ%raise= `> `@@@@@@J@%@@J@%"J@%!J@%@J@%@@ภ%ErrorU `V `@ఐࠐ"cda `b `@@@@'pcd_loch `i `@e
@@v@@K@%K@%K@%@ภ+Nonrec_gadty `z `@  < @@@GHYa@A@@@@@~@@K@%K@%@@ ` `@@d@@K@%
K@%@@O@@G@@ `	@@K@@J@%$J@%#@@A _bx `@@@7U@@J@$@J@$J@%&  0 @)@@@@ఐ$scds a a@4@@bO@@J@$J@%*J@%(?@@z@@g@@G@%6H@$@@ b b@@@@K@!@@@@ภ b b@@@@H@%/@@A ]  c@@2@డ%Btype+is_row_name%Btype d d@@&stringO@@ @%Q@@ @%@ @%@0typing/btype.mli dVV dVu@@%Btype^@@@@@G@'0`@@G@'/@G@'.]@@డ%Ident$name%Ident d! d+@@%Ident!t@@ @ &stringO@@ @ @ @ @0typing/ident.mlij77j7L@@H@@@@@H@';@@H@':@H@'9@@ఐƠ"id9 d,: d.@@@@@= d > d/@@^@@H@'7H@'EI@'A@@g	@@@x
@@@Ġ(Asttypes)RecursiveT e06U e0H@  < )Recursive@@@AB@B@A``@@@\J@@
	@@b@@b@@ภjc e0Ld e0P@i@@@F@'J@@Ai [

@@@@k Z

@@@ࠠ%arityv gV\w gVa@@@#intA@@ @'\F@'Q  0 |{{|||||@@@ C@@@డT$List&length gVd gVo@@I!a @#W@@ @#b$@@ @#a@ @#`@JkKk@@IC@@@@@F@'a@@F@'c@@F@'d@F@'b@F@'`F@'V@@F@'UE@@F@'T@F@'SB@@ఐu%sdecl gVp gVu@Y@@Q@,ptype_params gVv gV@
@@G4@@G@']G@'fG@'_`@@Q@@ga@@ gVX
@@డ#not h h@@V@@ @ |Z@@ @ {@ @ z(%boolnotAAΠ@@@ "" ""@@\@@@@@E@'l@@E@'k@E@'j  0 @@@! F@@@@ఐ&needed h h@@@.@@F@'sF@'uF@'t@@7
@@@@E@'wF@'r@ఐ預#env2 h3 h@Ѱ@@-E@!U)@@ࠠ$declA iB i@@@@@ @'}F@'x  0 DCCDDDDD@<@@@  8 ۡ+type_paramsS jT j@డ$$List#mapa kb k@@@!a @"!b @"@ @#@%@@ @#*@@ @#@ @#@ @#@$ % @@#U @@@@	@@G@'	@@G@'	@@G@'@G@'@G@'G@'#@@G@'G@'G@'G@'@G@'@1!@@G@'0@@G@'@G@'@G@'b@@@w@ k k@@2n@@డ)newgenvar%Btype k k@$name&optionJ@@ @%F@@ @%E@$unitF@@ @%D%Types)type_expr@@ @%C@ @%B@ @%A@cc-@@I'&@@$"@@H@'@@H@'@@@H@'@@H@'@H@'@H@'@5ภ$None@@96@@I@'@@I@'@@ภа k k@@@@@@@I@'I@'@@X@@@@A k k@@@@H@'H@'@@ఐԠ%sdecl. k/ k@@@L@,ptype_params5 k6 k@
T
@@ʠ@@H@'H@'H@'@@@@Р@@G@'G@'G@' @ġ*type_arityO lP l@ఐ⠐%arityX lY l @K@@@@G@'G@'G@'@ѡ)type_kindh m"(i m"1@ภ-Type_abstractp m"4q m"A@  < -Type_abstract)type_kind#lbl @
$cstr @
@@ @
@@@@BBD@A}6}6}6}6@@@! @@@@@G@'G@'E@򡠐,type_private nCI nCU@ఐE%sdecl nCX nC]@)@@Y@-ptype_private nC^ nCk@
x
@@@@G@'G@'G@'g@-type_manifest oms om@ఐi%sdecl p p@M@@}@.ptype_manifest p p@

@@

@@ @'@@ @'@Ġ$None p p@@@@@

@@J@( @@J@'@@@@ภ$None p p@@@@F{@@H@+@@H@+H@(@Ġ$Some q q@	I@	 q
 q@@@@J@(@@@@@
Ҡ$@@J@(	@@J@(@@@@ภ$Some q q@	aడ%Ctype&newvar%Ctype- q. q@$name&optionJ&stringO@@ @(s@@ @(r@$unitF@@ @(q%Types)type_expr@@ @(p@ @(o@ @(n@0typing/ctype.mli{
'
'{
'
T@@%Ctype^+*@@(&#@@H@+@@H@+@ @@H@+@@H@+@H@+@H@+ @9ภnF	<@F@;8@@I@+@@I@+-@@ภ<~ q q@;@@@@@@I@+I@+=@@j q@@@@H@(H@+I@+F@@t	@@H@+I@@A p q@@@@G@'@@G@'G@-U@䡠-type_variance r r @డ(Variance1unknown_signature r r@)injective@@ @.*%arity9@@ @.)P!t@@ @.(@@ @.'@ @.&@ @.%@NA..OA..@@l h"!@@@@G@.0@@G@./@@G@..@@G@.-@G@.,@G@.+@0ภ
F r) r.@
E@@@9@@H@.>H@.B@8ఐ%arity r0  r5@@@E@@H@.=H@.DH@.C@@X
@@QP@@G@-@@G@-G@.FG@.;@I1type_separability s7= s7N@డ,Separability1default_signature%Types, s7Q- s7u@%arity@@ @.td)signature@@ @.s@ @.r@a33	a337@@ u@@@@G@.w@@G@.v@G@.u @ఐݠ%arityS s7wT s7|@F@@'@@H@.H@.H@.@@2
@@'@@G@.@/type_is_newtypeg t~h t~@ภ
ǰn t~o t~@
@@@@@G@.G@.-@4type_expansion_scope| u} u@డ,lowest_level%Btype u u@#intA@@ @&t@  @@ A
@@@@G@.G@.G@.T@(type_loc v v@ఐT%sdecl v v@8@@h@)ptype_loc v v@l
@@@@G@.G@.G@.v@	`/type_attributes w w@ఐv%sdecl w w
@Z@@@0ptype_attributes w w@

@@	t@@G@.G@.G@.@ߡ.type_immediate x & x 4@ภ'Unknown x 7 x >@  < 'Unknown.Type_immediacy!t@@ @.@@@@C@C@A9typing/type_immediacy.mliRR!@@@	A@@@@@G@.G@.@4type_unboxed_default
 y@F y@Z@ภm y@] y@b@l@@@	@@G@.G@.@	(type_uid" zdj# zdr@ఐ#uid+ zdu, zdx@@@	@@@/ j0 {z@@@@2 i@@ఐ
(add_type< }= }@@@

@@E@2{@
@@E@2z@
@@E@2y@
@@E@2x
@@E@2w@E@2v@E@2u@E@2t@E@2s  0 QPPQQQQQ@J@@j G@@@	ภib }c }@h@@@@@F@2F@2@@ఐ"idt }u }@Ӱ@@ZE@2E@'B$@@ఐC$decl } }@.@@@@F@2F@2F@28@@ఐO#env }W@6X@@E@!jE@@`Z@@F@2H@m]@@V@ h_@@lX@`@@m!@8a@@@@AbA@  0 @.@@@@AHdA@  0 @E@@@@A[fA@  0 @X@@@@AphA@@@ @2  0 @o@@@@m@ml@@ࠠ+update_type  @@@@C@@ @2E@2@@@ @3E@2@%Ident!t@@ @2E@2@@@ @3E@2	@@ @2E@2@ @2E@2@ @2E@2@ @2E@2@ @2E@2  0 @@@}@@@@(temp_env  @@@;  0 @G   -@@@@@@#env  @@@E  0 						@ Q@@" I@@@@@"id  @@@M  0 @Y@@3 J@@@@@#loc- . @@@P  0 +**+++++@a@@D K@@@@@ࠠ$path> ? @@@$Path!t@@ @2F@2  0 FEEFFFFF@(n@@_ L@@@ภ$Path&PidentW X @  < &Pident@@ @@@@ @@A@@CC@A/typing/path.mliSTXSTi@@@ AఐX"idp q @@@@E@2E@2+@@ @@4@@ @2/@@{ @@@ࠠ$decl  @@@0type_declaration@@ @2F@2  0 @FXR@S@ M@@@డ
)find_type#Env  @@$Path!t@@ @a@0@@ @`'@@ @_@ @^@ @]@
> RHH
? RHv@@5i@@@@@F@2@B@@F@29@@F@2@F@2@F@27@@ఐ$path 	 
@A@@3@@G@2G@2G@2K@@ఐ(temp_env  @װ@@*E@2E@2[@@L@@a\@@ @@ఐs$decl " &@s@t@
 N@@@@F@2 @2  0 @t
@@@-type_manifest	 '
 4@`@@_@@ @2@@ @2@Ġ$None : >@@@@@s@@H@2@@H@2  0 "!!"""""@$@@@	@@@ภ
- B. D@
@@@I	@Ġ$Some: EI; EM@
ࠠ"tyC END EP@@@@@ @2F@@@@@@@H@2@@H@2N@@N@@@ࠠ&params[ T^\ Td@@@@@ @3+G@3@@ @3G@3   0 dccddddd@g,&@'@} O@@@డ<$List#mapy Tgz To@@@@@@@G@3;G@3"@G@3@
@@G@3+@@G@3@G@3@G@3&@@@[@ Tu Tv@@2@@డ|&newvar%Ctype Tz T@z@@zxu@@H@3 @@H@3@r@@H@3o@@H@3@H@3@H@3R@ภ
@@@@I@30@@I@3/_@@ภ T T@@@@@@I@3,I@34o@@2@@tp@@A Tp T@@@`}@H@3H@37w@@ఐf$decl T T@@@@@H@3< @39@+type_params T T@@@@@H@3H@3=H@3:@@@@@@ TZ
@@డ%unify%Ctype  @@#Env!t@@ @)@)type_expr@@ @)@)type_expr@@ @)@@ @)@ @)@ @)@ @)@ #g#g #g#@@ P$#@@@!@@F@3G@@@F@3F@@@F@3E@@F@3D@F@3C@F@3B@F@3A  0 EDDEEEEE@@@^ P@@@@ఐQ#envX Y @9@@E@3E@3XE@3YE@2@@డF)newconstr%Ctypeq r @@$Path!t@@ @(@$listI=)type_expr@@ @(@@ @(C)type_expr@@ @(@ @(@ @(@@ BttA Bt@@?b%$@@@"@@G@3`@@@G@3_@@G@3^@@G@3]@G@3\@G@3[]@@ఐs$path  @!@@B@@H@3nH@3pH@3oq@@ఐj&params  @{@@LI@@H@3m@@H@3lH@3sH@3q@@  @@@@G@3WG@3vH@3k@@ఐ"ty  @~@@@@G@3VG@3xG@3w@@
@@
E@3U@Ġ%Ctype%Unify  @  < %Unify#exnG@@ @(#@*Errortrace!t+unification@@ @("@@ @(!@A@   @A&_none_@@ A@@Cࠠ%trace' ( @@@!@@ @3@@ @3@@@4
@@~@@I@3@@డ%raise> ? @@@@@@G@3XE@3G@3@G@3  0 EDDEEEEE@)#@$@^ Q@@@@ภ%ErrorW 	X @	ఐ8#loca b @@@E@3E@2@ภ*Type_clashn o @  < v@tBGHYa@AL@@Iఐs#envz  { #@[@@3@ఐ^%trace % *@;@@@@H@3H@3H@3@@H@3I@@& +@@@@H@3H@3P@@ @@z@@H@3H@3W@@d@@ZX@@ @@  0 @Z@@@@@=@@A @@@@@@/@@_@@A~A@  0 @{@@@@AA@  0 @@@@@AA@  0 @@@@@AA@@@ @3  0 @@@@@@@ˠ@ࠠ?get_unboxed_type_representation /3 /R@@@@#Env!t@@ @4E@3@%Types)type_expr@@ @4E@3)type_expr@@ @4 E@4@@ @4E@3@ @3E@3@ @3E@3  0 @93@4@  H@@@@#env /S /V@@@6  0 @B // @@@@@@"ty
 /W /Y@@@;  0 

@ L@@$ S@@@@డ0Typedecl_unboxed?get_unboxed_type_representation0Typedecl_unboxed$ \d% \@@`@@ @3@W@@ @30Typedecl_unboxed!t@@ @3@ @3@ @3@;typing/typedecl_unboxed.mliYY2@@D@@@x@@F@4 @o@@F@3@@F@3@F@3@F@3  0 GFFGGGGG@=Iz@@@` T@@@@ఐd#envZ \[ \@J@@E@4
E@3@@ఐa"tyj \k \@@@E@4E@3$@@M@@@@@ @4
(@Ġ0Typedecl_unboxed$This  @  < $ThisS@@ @3@@@ @3@A@ABC@ASUTU@@@ZBࠠ!x   @@@@@ @4Q@@@@@m@@H@4U@@U@@ภ$Some  @ఐ!x  @@@ U@@  0 @k%@@@@@@@@  @@@@H@4x@@x@@ภ$None @@@@E@4%@@A \^@@  0 @@@@@AA@  0 @@@@@AA@@
@ @4.  0 @@@@@@@젰@ࠠ(is_float  $  ,@@@@#@@ @4SE@40@@@ @4RE@47$boolE@@ @4E@48@ @49E@41@ @42E@4/  0 @F@@A@ R@@@@#env  -  0@@@'  0 @3    @@@@@@"ty!  1"  3@@@1  0 @ =@@8 W@@@@ఐs?get_unboxed_type_representation3 6>4 6]@3@@@o@@F@4E@f@@F@4D ]@@F@4C@@F@4B@F@4A@F@4@  0 BAABBBBB@$0W@'@[ X@@@@ఐK#envU 6^V 6a@1@@pE@4TE@43@@ఐH"tye 6bf 6d@@@wE@4UE@4:$@@9@@,@@ @4Q@@ @4P,@Ġ$Some} jn~ jr@ ঠ$desc jt jx@  , $desc@@ @	-)type_desc@@ @	A@  , %level@@ @	AA@@|$(|$;@@8I  , %scope@@ @	AB@@$}<@%}<S@@BJ  , "id#@@ @	@C@@.~TX/~T_@@LK@@2{3{#@@PHĠ'Tconstr j{ j@  < 'Tconstr2@@ @
A@$Path!t@@ @
"YW@@ @
$@@ @
#&Stdlib#ref}+abbrev_memo@@ @
&@@ @
%@CCALM@Ae O
N
Pf O
N
@@@Oࠠ!p j j@@@/@@ @4h@@ j j@@.@@H@4j@@H@4i@@ j j@@1,@@H@4l@@H@4k@@@S j@@@@H@4m@@A js j@@3@@H@4oH@4n@@@@@ݠ:@@H@4q@@H@4p@@@@డ$same$Path0 j1 j@@@@ @@@@ @C@@ @@ @@ @@WW@@D@@@@@F@4@	@@F@4~U@@F@4}@F@4|@F@4{  0 MLLMMMMM@ga@b@f Y@@@@ఐo!p` ja j@@@$@@G@4G@4G@4@@డ&Predef*path_float&Predefy jz j@$Path!t@@ @4@1typing/predef.mlijj @@&PredefU@@L@@G@4G@4G@4@@@c@@A@@  @@[@@H@4u@@H@4t[@
@[@@ภ  @@@@E@4d@@A 68@@  0 @f@@@@AA@  0 @@@@@AA@@@ @4  0 @@@@@@@@ࠠ-is_fixed_type  @@@@@@ @6ME@4@@ @6E@4@ @4E@4  0 @@@ V@@@@"sd  @@@  0 @'  @@@@@Aࠠ+has_row_var	 " -@@@@@@ @5F@4@@ @5`F@4@F@4  0 @ ,=@#@ [@@@@#sty
 . 1@@@  0 





@&@"@ @4G@4@%@* \@@@@ఐ#sty% 4>& 4A@1@@9 ]@@5F@5F@4  0 (''(((((@(@@@)ptyp_desc3 4B4 4K@  , )ptyp_descI@@ @.core_type_desc@@ @@@  , (ptyp_loc*!t@@ @@A	@Aj U
A
Fk U
A
[@@ P  , .ptyp_loc_stack.location_stack@@ @@B@Au V
\
av V
\
@@ Q  , /ptyp_attributes"@@ @@C@A~ W

 W

@@% R@A T
!
& T
!
@@@) O@1@@+@@ @5;@Ġ*Ptyp_aliasr QWs Qa@  < *Ptyp_alias<@@ @*@@@ @@@ @@BFAKL@A w

 w
@@@L Zࠠ#sty Qc Qf@@@@@ @5
g@@ Qh Qi@@@@I@5o@@@+ Qj@@d@@I@5t@@t@@ఐ+has_row_var Qn Qy@@@@@G@5W  0 @'!@"@ ^@@@@ఐ/#sty Qz Q}@@@H@5[@@@@F@4F@5T@Ġ*Ptyp_class ~ ~@  < *Ptyp_classd@#loc)Longident!t@@ @@@ @ @@ @@@ @@BEAKL@A r
W
Y r
W
@@@ Y@ ~ ~@@!@@L@5@@L@5@@@@@L@5@@L@5@@@7@@@@L@5@@@Ġ+Ptyp_object  @  < +Ptyp_object@8,object_field@@ @@@ @Y+closed_flag@@ @@BDAKL@AP nQ n@@@ X@5 6 @@@@L@5@@L@5@Ġ$OpenE F @  < $OpenM+closed_flag@@ @@@@AB@B@Amm@@@R\@@@@,@@L@5"*@@@@X @@@@L@5#/@@/@@@@#@@K@5$3@Ġ,Ptyp_varianth i @  < ,Ptyp_variant@;)row_field@@ @@@ @+closed_flag@@ @ A%label@@ @#@@ @"@@ @!@CGAKL@A y ya@@@W [@  @@*)@@K@5.@@K@5-q@Ġ$Open  @`@@@@0@@K@51~@@  @@210@@K@54@@K@53@@K@52@@@T @@@@K@55@@@@@@@@J@56@Ġ,Ptyp_variant  @d@  @@fe@@J@5@@@J@5?@Ġ&Closed  @  < &Closed@@@@B@B@Amm@@@[@@
	@@s@@J@5C@Ġ$Some  @:@  @@zy@@J@5J@@J@5I@@@	@@@@J@5M@@J@5L@@J@5K@@@D  @@@@J@5N@@@@?@@@@I@5O@@ภ$    @#@@@"@@ &  ' @@@@I@5Q@@@@ภ 0  1 @@@@7F@5e@@A 6 48@@9  0  2 1 1 2 2 2 2 2@
@@@@A*A@@B=@ @5  0  6 5 5 6 6 6 6 6@)@@@@ = 
@@ఐn"sd I  J @H@@E@6&E@5E@5E@4  0  N M M N N N N N@A@@@.ptype_manifest X  Y +@@@p@@ @5@@ @5@Ġ$None l 15 m 19@;@@@@2@@H@5@@H@5d@@d@@ภ԰ { 1= | 1B@@@@l@Ġ$Some  CG  CK@ࠠ͠#sty  CL  CO@@@@@ @5D@@@@@[@@H@5@@H@5L@@L@@డm"&&  Sx  Sz@@@@ @ @@@ @ @@ @ @ @ ~@ @ }(%sequandBA@@@@ # #  # #3@@]@@@@@F@6
@@@F@6	@@F@6@F@6@F@6  0         @GA@B@  _@@@@డ!=  Sg  Sh@@!a @ S@O@@ @ R@ @ Q@ @ P&%equalBAà@@@@ y y@@Q@@@@@G@6%G@6@@@G@6@G@6@G@65@@ఐ8"sd! SY! S[@@@D@*ptype_kind! S\! Sf@
@@K@@ภ.Ptype_abstract!& Si!' Sw@  < .Ptype_abstract$@@@@BBD@AM66N66@@@ @
	@@3H@6)`@@ @@@@G@6G@6+H@6#h@@డ !E {!F {@@@@@@G@61@@@G@60@@G@6/@G@6.@G@6-@@డ &!` {!a {@~@@@5@@H@6LH@6B@@@H@6A@H@6@@H@6?@@ఐ"sd!{ {!| {@z@@,@-ptype_private! {! {@T
@@@@ภ'Private! {! {@  < 'Private,private_flag@@ @@@@@B@B@Ae1Ee1L@@@O@@@8I@6P@@%@@@@H@6=H@6RI@6J@@ఐ+has_row_var! ! @@@@@@H@6Vu@@H@6U@H@6T@@ఐ7#sty! @@@@@I@6]I@6_I@6^@@@@#@@H@6<H@6aI@6\@@_@@+@@G@6G@6cH@6;@@@@E@6@@A! @@@ @@@@A	A@@!@ @6  0 !!!!!!!!@@@@@@@@ࠠ/set_private_row
! ! @@@@!t@@ @7$E@6@@@ @8gE@6@P@@ @8E@6@@@ @8E@6L@@ @8E@6@ @6E@6@ @6E@6@ @6E@6@ @6E@6  0 """!"!""""""""""@Wmg@h@"; Z@@@@#env"5 "6 @@@:  0 "3"2"2"3"3"3"3"3@F"< "= 5w@@@@@@#loc"H "I @@@A  0 "F"E"E"F"F"F"F"F@ P@@"_ a@@@@@!p"Y "Z @@@I  0 "W"V"V"W"W"W"W"W@U@@"p b@@@@@$decl"j "k @@@Q  0 "h"g"g"h"h"h"h"h@]@@" c@@@@@ࠠ"tm"{ "| @@@7)type_expr@@ @7"F@6  0 """"""""@%l@@" d@@@ఐ.$decl" " @@@E@6E@6E@6  0 """"""""@@@@-type_manifest" " @@@,@@ @6@@ @6@Ġ$None" " @@@@@@@@I@6@@I@6:@@:@@  ภ" " @@@@@@G@7G@" @@RF@7K@Ġ$Some" " @ࠠ!t" " @@@k@@ @7M@@@@@=r@@I@7@@I@7U@@U@@డ+expand_head%Ctype" " @@@@ @)@)type_expr@@ @)@@ @)@ @)@ @)@ !2!2 !2!b@@ L@@@@@G@7@@@G@7@@G@7@G@7@G@7  0 ########@D>@?@#5 f@@@@ఐ#env#/ #0 @@@6E@7%E@6@@ఐ\!t#? #@ @@@?@@H@7#H@7'H@7&(@@M
@@)@@A#K @@@@#M @@@ࠠ"rv#X  #Y "@@@@@ @8	F@7D  0 #[#Z#Z#[#[#[#[#[@@@#t e@@@ఐ"tm#o %/#p %1@@@@@G@7I @7G  0 #r#q#q#r#r#r#r#r@@@@$desc#| %2#} %6@@@@@ @7H@Ġ(Tvariant# <B# <J@  < (Tvariant@/(row_desc@@ @
6@AHALM@A x x@@@4Uࠠ#row# <K# <N@@@@@ @7N  0 ########@H@@@@@@@@@I@7O@@@@@ࠠ#row# R^# Ra@@@(row_desc@@ @7sH@7i  0 ########@b%@ @# h@@@డ(row_repr%Btype# Rd# Rr@@(row_desc@@ @%\@@ @%[@ @%Z@ @	*	* @	*	L@@Q@@@@@H@7m,@@H@7l@H@7k*@@ఐS#row# Rs# Rv@4@@&@@I@7tI@7vI@7u>@@/
@@D?@@$ RZ@@డ2-set_type_desc%Btype$ z$ z@@8)type_expr@@ @&@?)type_desc@@ @&@@ @&@ @&@ @&@6 'P'P7 'P'@@5 [@@@@@H@7@@@H@7~@@H@7}@H@7|@H@7{  0 $1$0$0$1$1$1$1$1@v@@$J i@@@@ఐɠ"tm$D z$E z@@@6@@I@7I@7I@7@@ภ(Tvariant$W $X @ˠ  , *row_fields@@ @
^%label@@ @
R)row_field@@ @
S@ @
Q@@ @
P@@  , (row_more@@ @
T@A@A } }@@Z  , )row_bound"$unitF@@ @
U@B@A  @@%[  , *row_closed.@@ @
V@C@A  @@/\  , )row_fixed8:1fixed_explanation@@ @
X@@ @
W@D,@A! " @@?]  , (row_nameH!t@@ @
[A?@@ @
]@@ @
\@ @
Z@@ @
Y@EI@A> ? ?@@\^@AB QWC Q|@@`Ygf@@I@7d@@I@7@I@7@@I@7I@7ba@@I@7I@7`a@@I@7I@7[\@@I@7I@7 X)row_fixed$ $ @ภ$Some$ $ @@ภ-Fixed_private% % @  < -Fixed_privatel@@ @
c@@@@BBD@A  @@@`@
@@y@@J@7J@7J@7@@@@	@@J@7J@7@z{z@@I@7Ҡw@@I@7@@I@7@I@7@@I@7I@7@ఐ#row%= %> @@@@@I@7I@7I@7@%H %I @@@@I@7I@7@@%P %Q @@8@@I@7I@7!@@H@@@@G@7H@7'@డ*static_row%Btype%k %l @@(row_desc@@ @%|@@ @%{@ @%z@ X X@@Y@@@@@G@7@@G@7@G@7P@@ఐ٠#row% % @Z@@'@@H@7H@7H@7d@@0
@@m@@G@7H@7j@డ$n%raise% % @@@@@@G@7VG@7@G@7}@@ภ%Error% % @nఐ#loc% % @j@@E@8kE@7E@7E@6@ภ?Invalid_private_row_declaration% % @  <  _@ AXHYa@A @@ ఐh"tm% % @@@ @@H@8H@8H@8@@
@@@@H@7H@8@@% % @@@@H@7H@7@@S@@K@ఐO#row& & @а@@z@@G@8
 @8@(row_more& & @@@@& @@f@@@g@@@X@Ġ'Tobject&# &$ "@  < 'Tobject	f@@@ @
'	U#ref	s!t@@ @
+ʠ@@ @
-@@ @
,@ @
*@@ @
)@@ @
(@BDALM@A S SY@@@Pࠠ"ty&U $&V &@@@@@ @7Z@@&^ (&_ )@@421@@I@7^.@@I@7`@@I@7_@I@7]@@I@7\@@I@7[@@@T&w *@@	@@I@7a@@@@@ࠠ!r& .:& .;@@@A)type_expr@@ @83H@8
  0 &&&&&&&&@0@:@;@& j@@@డ%a#snd& .>& .A@@!a @ʠ!b @@ @@ @ǐ'%field1AA@@@~.veve.vev@@} @@@
=@@H@80*field_kind@@H@81)type_expr@@H@82@H@8/@@H@8.H@8NH@8@H@8@H@8I@@డ.flatten_fields%Ctype& .C& .W@@)type_expr@@ @(76@@ @(5@@ @(3@@ @(@ @(@@ @(}@@ @(@ @(@ @(@ Jmm K@@f('@@@%@@I@8!ZY@@I@8X@@I@8V@@I@8@I@8@@I@8@@I@8 @I@8@I@8@@ఐ⠐"ty'7 .X'8 .Z@@@R@@J@84J@86J@85@@'B .B'C .[@@v@I@8I@88I@8-@@
@@@@'N .6@@డ&!#not'\ _j'] _m@m@@@m@@H@8?l@@H@8>@H@8=  0 'b'a'a'b'b'b'b'b@@@'{ k@@@@డ'is_Tvar%Btype'z _o'{ _|@@)type_expr@@ @%I@@ @%H@ @%G@o66o6T@@J@@@@@I@8J@@I@8I@I@8H.@@ఐ!r' _}' _~@8@@'@@J@8QJ@8SJ@8RB@@' _n' _@@@@I@8FI@8UJ@8PL@@X	@@@@H@8WI@8ER@డ&%raise' ' @@@@@@H@8[@@G@8wH@8uH@8Z@H@8Yj@@ภ%Error' ' @ఐ#loc' ' @@@@ภ?Invalid_private_row_declaration' ' @ఐ}"tm' ' 
@@@#@@I@8qI@8sI@8r@@
@@ @@I@8hI@8p@@(	 (
 @@@@I@8`I@8f@@O@@G@@( _g	@@I@ఐ!r( ( @@@F@8x@@@@@@@@(' (( @@@@I@7c@@@@  ภ(3 *(4 /@@@@@@G@8~@(: #@@F@8y@@A(> %)@@@@(@ 
@@డo-set_type_desc%Btype(M 57(N 5J@=@@@=@@E@8@;@@E@87@@E@8@E@8@E@8  0 (X(W(W(X(X(X(X(X@@@(q g@@@@ఐ"rv(k 5K(l 5M@@@]@@F@8F@8F@8@@ภ'Tconstr(~ 5O( 5V@ఐ3!p( 5X( 5Y@@@zE@8E@61@ఐ2$decl( 5[( 5_@@@ >@+type_params( 5`( 5k@.
@@ؠ.@@F@8@@F@8F@8F@8P@డ'|#ref( 5m( 5p@@!a @#ref@@ @@ @,%makemutableAA@@@  g  g  g  @@ Ұ@@@@@F@8F@8F@8F@8@@F@8@F@8@@ภ$Mnil( 5q( 5u@  < $Mnil@@ @
@@@@ABC@Ap q @@@f@
@@#G@8@@B@@&'@@F@8F@8F@8@@) 5N@@@@F@8F@8@@@@@@@@@@@@AA@  0 ))))))))@@@@@AA@  0 )	)))	)	)	)	)	@@@@@AA@  0 ))
)
)))))@@@@@AA@@@ @9   0 ))))))))@@@@@@@@ࠠ+make_params)! )" @@@@#Env!t@@ @91E@9@Ơ R@@ @9@ @9u@ @9E@9c@@ @9oE@9	Ҡ)Typedtree)core_type@@ @9@ @9~E@9a@@ @9nE@9
@ @9E@9@ @9E@9  0 )V)U)U)V)V)V)V)V@5jd@e@)o `@@@@#env)i )j @@@D  0 )g)f)f)g)g)g)g)g@P)p )q Yw@@@@@@&params)| )} @@@I  0 )z)y)y)z)z)z)z)z@ Z@@) m@@@@@ࠠ*make_param) ) @@@@ @@ @9RF@9@ @9F@9@ @9F@9Y@@ @9/F@9
@ @9F@9@ @9F@9  0 ))))))))@0<{@3@) n@@@@{"ࠠ#sty ) ) @@@*  0 ))))))))@;) ) S@@@@ࠠ!v!) ) @@@4@@) ) @@@;@H@9@@డ(>1transl_type_param) ) @@@@ @~@)Parsetree)core_type@@ @}@@ @|@ @{@ @z@3typing/typetexp.mlieLLfc@@(TypetexpJ@@@@@F@9%@@@F@9$@@F@9#@F@9"@F@9!  0 ********@PX|@S@*& pJx@E@*( q@@@@ఐ#env*" *# @@@E@92E@9@@ఐr#sty*2 *3  @ @@$@@N@@%@ఐn!v*> *? @*@@0@@*B *C @@@F@957@Ġ-Already_bound*P *Q @  < -Already_bound#exnG@@ @@@@\A   @A&_none_@@ A@@`N@@@@)@@I@99U@@డ)4%raise*o %*p *@ P@@@ P@@G@9@F@9;G@9?@G@9>j@@ภ%Error* +* 0@ 6ఐР#sty* 1* 4@~@@F@90@(ptyp_loc* 5* =@Z@@"@@H@9LH@9SH@9Q@ภ2Repeated_parameter* ?* Q@  < ( 1@@@@HYa@A(@@(@@@"@@H@9MH@9W@@D@@ @@H@9EH@9K@@K@@A@@* @@@@AA@@)@ @9[  0 ********@@@@@@డ)$List#map* Y]* Ye@k@@@@@E@9d@c@@E@9bb@@E@9`@E@9_@E@9^  0 ********@0VP@Q@* o@@@@ఐ^*make_param* Yf* Yp@@@@"@@F@9|@F@9{@@F@9z@F@9y@F@9x!@@ఐ&params+ Yq@Y@@E@9E@90@@B@@1@H@@a@@AA@  0 ++
+
+++++@@@@@AA@@@ @9  0 ++++++++@@@@@@@@ࠠ-transl_labels#+! y}+" y@@@@ !t@@ @J7E@9@$boolE@@ @J6E@9@Р#1label_declaration@@ @JF@J@@ @JE@9ݠ)Typedtree1label_declaration@@ @WJ@@ @WIE@WF1label_declaration@@ @WL@@ @WKE@WG@ @WHE@9@ @9E@9@ @9E@9@ @9E@9  0 +g+f+f+g+g+g+g+g@QK@L@+ l@@@@#env%+z y+{ y@@@U  0 +x+w+w+x+x+x+x+x@a+ yy+ ","9@@@@@@&closed&+ y+ y@@@\  0 ++++++++@ k@@+ s@@@@@$lbls'+ y+ y@@@a  0 ++++++++@p@@+ t@@@@  డ*w"<>+ + @@@@E@JE@BE@HE@9E@9@$@@F@9@F@9@F@9  0 ++++++++@%1@(@+ u@@@@ఐ9$lbls+ + @@@!E@9@@ภ"[]+ + @  < +p+}+z@ @R@@@@AAB@A+@@+s@	@@3E@9'@@+ + @@@@F@9G@9/@+ @@B@@E@9F@96@@ࠠ*all_labels(, , @@@J*W#Set!t@@ @BF@9@@ @9F@9  0 ,,,,,,,,@S@@@డ*#ref," ,# @k@@@g@@F@9@F@9@@డ*v#Set%empty&String,; ,< @/@@ @A@'set.mli Jcg Jcs@@+Stdlib__SetE
@@90@@'
@@?1@@,J @@డ+$List$iter,Y ,Z @@@@@E@BF@B@@F@B@F@B@@@F@B@@F@B@F@B@F@B  0 ,k,j,j,k,k,k,k,k@qk@l@, v@@@@@@⠰ঠ(pld_name, , @  , (pld_nameA@@ @##loc#@@ @@@ @@@  , +pld_mutable#,mutable_flag@@ @@A@A#7o7t#7o7@@$f   , (pld_type#@@ @@B@A#77#77@@$o   , 'pld_loc$#!t@@ @@C@A#77#77@@${   , .pld_attributes0#@@ @ @D&@A#77#77@@$ @A#7T7Y#7T7n@@$ ঠ#txt, , @  , #txt#loc!a @@@ @@@
  , #loc
(Location!t@@ @@A@Axx@@d@Aw w@@cࠠ$name, , 	@@@e@@ @B@#loc, , A&ࠠ@@)@@ @B@@@-	  -
 @@@@I@BI@B@@I@B@@@- - @@@@డ+e#Set#mem&String-* -+ ,@@ #elt@@ @A@'@@ @A$boolE@@ @A@ @A@ @A@ P P@@G@@@@@H@B@<@@H@B@@H@B@H@B@H@B  0 -L-K-K-L-L-L-L-L@f`@a@-f wTR@S@-h x@@@@ఐp$name-b --c 1@@@8@@I@CI@C@@డ,;!!-v 2-w 3@@!a @@@ @@ @'%field0AA#U@@@#T    #U    @@#S Ӱ@@@Π@@I@C I@HI@HI@H@@I@H
@I@HJ@@ఐ*all_labels.- =@40@@@@J@HJ@HJ@H^@@:@@_@@@@@@H@HI@Be@డ,%raise- CL- CQ@#@@@#@@H@H@@G@HH@HH@H@H@H}@@ภ%Error- CR- CW@#ఐ۠#loc- CX- C[@@@%@@I@HI@HI@H@ภ/Duplicate_label- C]- Cl@  < +#z@+AAHYa@A+@@+ఐ$name- Cm- Cq@@@+@@I@HI@HI@H@@
@@&	@@I@HI@H@@O. Cs@@#@@I@HI@H@@W@@O@@. 	@@Q@డ,":=.! u." u@@f!a @@@ @@$unitF@@ @@ @@ @*%setfield0BA$@@@@$    $	    @@$ ԰@@@8@@G@HG@H@@G@H@@@G@H@G@H@G@H@@ఐU*all_labels.Z u|.[ u@@@@@H@HH@HH@H@@డ,#Set#add&String.w u.x u@@M@@ @A@r@@ @Au@@ @A@ @A@ @A@F S9=G S9S@@EH@@@_@@H@H@@@H@H@@H@H@H@H@H@HH@@ఐ$name. u. u@Q@@y@@I@HI@HZ@@డ-|AC. u. u@@@@@@@I@HI@HI@HI@H@@I@H
@I@Hw@@ఐ͠*all_labels. u@a@@@@J@HJ@HJ@H@@'@@@@g@@@@G@H@@@@@@G@HH@H@@@@@G@HG@H@@A. . u@@@@@G@B@G@BG@H  0 ........@@@@@ఐh$lbls/ / @=@@L@@@@R@@E@HF@B@@ࠠ"mk/ / @@@@@@ @IF@I@@ @JAF@I@ @IF@I   0 /!/ / /!/!/!/!/!@@@@@!ঠ(pld_name/4 /5 @ࠠ$name/< /= @@@@@ @I	@@ @I  0 /A/@/@/A/A/A/A/A@6/J /K  Z a@@@@+pld_mutable/R /S @ࠠ#mut/Z /[ @@@@@ @I@(pld_type/f /g @ࠠ#arg/n /o @@@&@@ @I.@'pld_loc/z /{ @ࠠ#loc/ / @@@@@ @IB@.pld_attributes/ / @ࠠ%attrs/ / @@@&@@ @IV@@@/ / @@Y@@డ'&-warning_scope2Builtin_attributes/ / =@#ʰ@@##Ƞ#@@F@I'@@F@I&@#@@F@I%@@#@@F@I$F@I"@F@I#@F@I!@F@I @F@I  0 ////////@@@/ zwq@r@/ {e_@`@/ |SM@N@/ }A;@<@/ ~@@@#ภ/$@/@##@@G@I<@@G@I;  0 ////////@@@@@ఐW%attrs/ >/ C@@@#@@G@I8G@IAG@I@@@@"Ġ"°0 DO0 DQ@"@@@@$@@J@IIE@@@ࠠ#arg0 Ub0 Ue@@@)Parsetree)core_type@@ @JI@IM?@డ*Ast_helper#Typ*force_poly*Ast_helper02 Uh03 U@@)core_type@@ @J	#@@ @J@ @J@6parsing/ast_helper.mli X

 X

@@*Ast_helpera@@@@@I@J2@@I@J@I@Jl@@ఐꠐ#arg0X U0Y U@@@(@@J@JJ@JJ@J@@1
@@J@@0d U^@@@ࠠ#cty
0o 0p @@@#)core_type@@ @J4I@J  0 0u0t0t0u0u0u0u0u@lf@g@0 @@@డ.2transl_simple_type0 0 @@b@@ @]@[@@ @\@)core_type@@ @[(@@ @Z@ @Y@ @X@ @W@VW@@D@@@|@@I@J&@u@@I@J%@@@I@J$?@@I@J#@I@J"@I@J!@I@J <@@ఐJ#env0 0 @0@@E@J8E@9L@@ఐG&closed0 0 @/@@E@J9E@9\@@ఐ̠#arg0 0 @f@@Q@@J@J5J@J;J@J:p@@d
@@wq@@0 @@  , %ld_id@@ @%Ident!t@@ @@@  , 'ld_name(Asttypes#loc&stringO@@ @@@ @@A@A4typing/typedtree.mliP5P:P5PN@@t  , *ld_mutable$,mutable_flag@@ @@B@APOPT
POPm@@u  , 'ld_type/)core_type@@ @@C)@APnPsPnP@@v  , &ld_loc:(Location!t@@ @@D7@A%PP&PP@@w  , -ld_attributesH*attributes@@ @@EB@A0PP1PP@@x@A4P P%5P P4@@s%ld_id1M 1N @డ O,create_local%Ident1[ 1\ @@ E@@ @  Q@@ @ @ @ @ Fa Ga%@@ SD@@@@@I@JG ^@@I@JF@I@JE  0 1o1n1n1o1o1o1o1o@@@1 @@@@ఐH$name1 1 @@@.@@J@JNJ@JZJ@JQ@@J@JP@#txt1 1 @˰@@J@JR&@@@@@@@I@JCI@J\J@JM.@'ld_name1 1  @ఐu$name1  1  @@@)@@I@JdI@JkI@Ji@@I@JhK@*ld_mutable1  
1  @ఐt#mut1  1  @@@@@I@JyI@J{I@Jzd@'ld_type1   &1   -@ఐx#cty1   01   3@s@@@@I@JI@JI@J}@ǡ&ld_loc1   51   ;@ఐ~#loc2    >2   A@1@@@@I@JI@JI@J@ҡ-ld_attributes2   C2   P@ఐ%attrs2   S2   X@H@@)U@@I@J@@@2  2!   Y@@@7@@ @@@B@@A2% DJ@@@&+@@G@I7j@G@I6G@JK@@@@L@@AA@@@ @J  0 2,2+2+2,2,2,2,2,@@@@@@@ࠠ$lbls2<  g m2=  g q@@@ʠ@@ @JF@J@@ @JF@J  0 2E2D2D2E2E2E2E2E@;5@6@2^ y@@@డ1$List#map2Z  g t2[  g |@@@@@@F@J@!@@F@J&@@F@J@F@J@F@J!@@ఐ`"mk2u  g }2v  g @+@@@3@@G@J&@@G@J@G@J6@@ఐ$lbls2  g 2  g @Ű@@C@@4@@MD@@2  g i@@@ࠠ%lbls'2   2   @@@ (>@@ @VF@J@@ @JF@J  0 22222222@_rl@m@2 @@@డ1{$List#map2   2   @ W@@@@j@@F@WF@J"@F@J@ T
@@F@J S+@@F@J@F@J@F@J  0 22222222@&@@@@@"ld2   2   @@@ @@@ࠠ"ty2   2   @@@%Types)type_expr@@ @VH@J  0 22222222@O$:@@3
 @@@ఐ-"ld3   3   @@@SF@WF@VF@VF@VF@JF@J@'ld_type3   3   @@@@@H@V @V)@)ctyp_type3#   3$   @  , )ctyp_type@@ @<@@ @AA  , )ctyp_desc	.core_type_desc@@ @A@@A%9GG&9GG@@@  , (ctyp_env#Env!t@@ @@B@A3=HH4=HH@@B  , (ctyp_loc"!t@@ @@C"@A?>HH@>HH@@C  , /ctyp_attributes.@@ @@D+@AH?HHI?HH@@ D@AL;H%H)M;H%HM@@A\=@@sk@@3b   ?@@@ࠠ"ty3m   3n   @@@&@@ @VH@V  0 3p3o3o3p3p3p3p3p@@@3 @@@ఐ"ty3   3   @@@'@@I@V @V  0 33333333@@@@$desc3   3   @	@@@@ @V@Ġ%Tpoly3  !3  !@  < %Tpoly@'+@@ @
9'5'3@@ @
;@@ @
:@BJALM@A'2 '3 @@@'PWࠠ!t3  !	3  !
@@@'F@@ @V8@Ġ3  !3  !
@@@@@#'U@@K@V@@K@VH@@@43  !@@G@@K@VM@@M@@ఐ"!t3  !3  !@"@#@3 @@s  0 33333333@q-@@@@3  !3  !@@`@@K@Vf@@f@@ఐ"ty3  !3  !@@@H@Vr@@A3   @@@@4   @@  , %ld_id@@ @%Ident!t@@ @@@  , *ld_mutable'w,mutable_flag@@ @@A@A'9k9o'9k9@@'   , 'ld_type'@@ @@B@A'99'99@@'   , &ld_loc"'3!t@@ @@C@A'99'99@@'   , -ld_attributes.'*attributes@@ @@D)@A'99'99@@'   , &ld_uid:'%!t@@ @@E4@A'99'99@@' @A'9W9['9W9j@@' %Types%ld_id4V !!!+4W !!!6@ఐ"ld4a !!!94b !!!;@k@@X  0 4_4^4^4_4_4_4_4_@@@4x @@@%ld_id4l !!!<4m !!!A@}@@h@@H@VH@VH@V@c(*ld_mutable4| !C!M4} !C!W@ఐ"ld4 !C!Z4 !C!\@@@|&@*ld_mutable4 !C!]4 !C!g@{
@@@@H@VH@VH@V4@zJ'ld_type4 !i!s4 !i!z@ఐ:"ty4 !i!}4 !i!@C@@(3@@H@VH@VH@VM@c&ld_loc4 !!4 !!@ఐꠐ"ld4 !!4 !!@̰@@a@&ld_loc4 !!4 !!@
@@@@H@VH@WH@Wo@-ld_attributes4 !!4 !!@ఐ"ld4 !!4 !!@@@@-ld_attributes4 !!4 !!@
@@@@H@W@&ld_uid4 !!4 !!@డ3q#Uid"mk5 !!5 !!@,current_unit&stringO@@ @.'!t@@ @.@ @.@(%r%t(%r%@@({@@@@H@W$@@H@W#@H@W"@డ2-get_unit_name#Env53 !!54 !"@@$unitF@@ @q&stringO@@ @p@ @o@'h33'h33@@) @@@@@I@W/@@I@W.@I@W-@@ภ(5Y !"5Z !"@(@@@&@@J@W6J@W:@@5b !!5c !"	@@\@@I@W+I@W<J@W5@@g	@@.@@H@W H@W>I@W*@@@5t !!!*5u ""@@@v@@@@@@@A5y   5z ""@@@@G@JG@W@@@ఐM$lbls5 ""$5 ""(@@@#@@G@JG@WCG@WA@@@@@@5   
@@ఐe$lbls5 ",".5 ","2@@@
P  0 55555555@
@@5 @@@ఐ%lbls'5 ","4
/@
0@@
O@@
1@@
b
T@E@WM@"
6@@@*
7@@o@p
8@@@	b
9@@@	r
:@@		@	
;@@
n	@@A
 
<A@
  0 55555555@
@@@@A
3
>A@
  0 55555555@
0@@@@A
H
@A@@

@ @WS  0 55555555@
G@@@@
E@
E
D@
Z@ࠠ<transl_constructor_arguments5 ";"?5 ";"[@@@@
@@ @XE@WU@
@@ @XE@W\@%@@ @WfE@Wc)5constructor_arguments@@ @WE@W
5constructor_arguments@@ @WE@W@ @WE@Wd@ @WeE@W]@ @W^E@WV@ @WWE@WT  0 55555555@


@
@6 r@@@@#env栰6 ";"\6 ";"_@@@<  0 66666666@H6 ";";6 #}#@@@@@@&closed砰6$ ";"`6% ";"f@@@F  0 6"6!6!6"6"6"6"6"@ R@@6; @@@@@(Ġ+Pcstr_tuple66 "r"v67 "r"@  < +Pcstr_tuple&>@@ @@-Y-T@@ @@@ @@A@@BB@A-i99-j99@@@. ࠠ͠!l6R "r"6S "r"@@@-j@@ @Wj@@ @Wi  0 6W6V6V6W6W6W6W6W@6B~@9@6p @@@@@+@@u@@@ࠠ!l6k ""6l ""@@@#@@ @WG@Wz@@ @WG@Wu  0 6t6s6s6t6t6t6t6t@-'@(@6 @@@డ5L$List#map6 ""6 ""@$(@@@@@@G@WG@W|"@G@W}@$%
@@G@W{$$+@@G@Wy@G@Wx@G@Ww&@@డ52transl_simple_type6 ""6 ""@$@@@@@I@W@@@I@W@$@@I@WI@@I@W@I@W@I@W@I@WG@@ఐ#env6 ""6 ""@@@E@XE@WE@WE@WX[@@ఐ&closed6 ""6 ""@@@E@XE@WE@WE@W_o@@6 ""6 ""@@@W@@H@W|@@H@W@H@Wz@@ఐ!l6 ""6 ""@@@$w@@H@WH@WH@W@@@@@@7
 ""
@@ภ%Types*Cstr_tuple7 ""7 ""@  < *Cstr_tuple$@@ @,@**@@ @)@@ @(@A@@BB@A*::*:;@@@* డ5$List#map78 ""79 ""@$װ@@@@@@F@WF@W*@@F@WF@WF@WF@W@F@W@$ݠ@@F@W$ܠ@@F@W@F@W@F@W  0 7R7Q7Q7R7R7R7R7R@@@7k @@@@@!t렰7h ""7i ""@@@,@@ఐ!t7t ""7u ""@8@
@7 @@<F@WF@W  0 7w7v7v7w7w7w7w7w@&@@@)ctyp_type7 ""7 ""@_@@?	@@A7 ""7 ""@@@MH@G@WG@W  0 77777777@5@@@@ఐ,!l7 ""7 ""@@@@%,b@@G@WG@WG@WK@@7 ""7 ""@@b@@F@WF@WF@W!@@
@@@@F@W%@ภ*Cstr_tuple7 "#7 "#@  < *Cstr_tuple@@ @@$listI@@ @@@ @@A@@BB@AQQQQ@@@sఐl!l7 "#7 "#@@@@@F@W@@F@WF@WF@W@@.@@@@F@W@@@@?@F@Wb@@@v@Ġ,Pcstr_record7 ##7 ##"@  < ,Pcstr_record@/@@ @@@ @@AA@BB@A/'99/(99@@@/ Πࠠ!l8 ###8 ##$@@@@@ @Wo@@ @Wn  0 88888888@@@@@@%@@0@@@ࠠ$lbls8) #(#28* #(#6@@@%@@ @X@@ @XG@W  0 808/8/8080808080@+%@&@8I @@@ࠠ%lbls'8@ #(#88A #(#=@@@%Π@@ @X@@ @XG@W@@$@@$@ @W@ఐ
9-transl_labels8Z #(#@8[ #(#M@W@@@
5@@G@X@
.@@G@X @%
%@@G@W@@G@W%
@@G@W@@G@W&
@@G@W@@G@W@G@W@G@W@G@W@G@WM@@ఐ#env8 #(#N8 #(#Q@e@@Z@@ఐy&closed8 #(#R8 #(#X@=@@g@@ఐ!l8 #(#Y8 #(#Z@q@@&;
i@@H@X@@H@XH@X!H@X@@[@@jG@X@@8 #(#.@@ภ%Types+Cstr_record8 #^#d8 #^#u@  < +Cstr_record@,T
g@@ @+@@ @*@AA@BB@A,Q;;
,R;;1@@@,o ఐ%lbls'8 #^#v8 #^#{@@@8 @@
@@F@X.@@F@X-F@X1F@X/  0 88888888@@@9 @@@@0@@@@F@X,	@ภ+Cstr_record8 #}#8 #}#@  < +Cstr_recordF@C
@@ @@@ @@AA@BB@AQQQR@@@
ఐ$lbls9 #}# @(@@
@@F@X9@@F@X8F@X<F@X:7@@(
@@(@@F@X7;@@f@@9@F@X>@@w@@@E@X'@@A92 ";"i@@K  0 9.9-9-9.9.9.9.9.@@@@@AA@V  0 909/9/9090909090@@@@@A&A@@_Z@ @XL  0 9493939494949494@%@@@@#@#"@8@ࠠ0make_constructor9F ##9G ##@@@@6@@ @YE@XN@@@ @YE@XU@@@ @Y@@ @YE@X\@)r@@ @Y E@Xc@170@@ @YE@Xs@@ @XrE@Xj@@ @XE@X1M	@@ @ZE@X@@ @XE@X@@ @XE@X1_@@ @ZE@X@@ @XE@X@ @XE@Xk@ @XlE@Xd@ @XeE@X]@ @X^E@XV@ @XWE@XO@ @XPE@XM  0 99999999@@@9 @@@@#env9 ##9 ##@@@l  0 99999999@x9 ##9'(@@@@@@)type_path9 ##9 ##@@@v  0 99999999@ @@9 @@@@@+type_params9 ##9 ##@@@~  0 99999999@@@9 @@@@@%sargs9 ##9 ##@@@  0 99999999@@@: @@@@@)sret_type9 ##9 ##@@@  0 99999999@@@: @@@@ఐ)sret_type:##:
##@@@:  @@E@Xm  0 :
:::
:
:
:
:
@ @@@Ġ$None:##:##@.@@@@  0 ::::::::@@@@@@@@ࠠ$args:/#$:0#$@@@>@@ @XG@X{  0 :2:1:1:2:2:2:2:2@%@@@ࠠ%targs:?#$	:@#$@@@F@@ @XG@X|@@@@
@ @X@ఐ<transl_constructor_arguments:U$$:V$$5@@@@0@@G@X@)@@G@X@*h@@G@Xt@@G@Xp@@G@X@G@X@G@X@G@X@G@X:@@ఐɠ#env:{$$6:|$$9@@@?E@YE@Y$E@Y%E@YE@YE@XE@XE@XQV@@ภ0:$$::$$>@0@@@d@@H@XH@Xf@@ఐ%sargs:$$?:$$D@@@DE@YE@XE@XE@Xfz@@]
@@lG@X}@@:##@@ఐ%targs:$N$V:$N$[@@@: @@>  0 ::::::::@@@: @@@ภ$None:$N$]:$N$a@/@@@2G@@F@X@ఐ$args:$N$c:$N$g@@@J@ภ$None:$N$i:$N$m@/@@@2N@@F@X,@@2@@n"^@F@X3@D@@w@Ġ$Some;$n$r;$n$v@0Hࠠ)sret_type;$n$w;
$n$@@@@@@
@@@@@@@ࠠ!z;
%
%;
%
%@@@0variable_context@@ @XG@X  0 ;;;;;;;;@@@;8 @@@డ9&narrow;1
%
%;2
%
%@@$unitF@@ @@@ @@ @@BiCi@@AL@@@@@G@X*@@G@X@G@X(@@ภ.;T
%
%;U
%
%!@.@@@#@@H@XH@X8@@,@@>9@@;^
%
%
@@డ94reset_type_variables;j%%%+;k%%%?@@9@@ @t=@@ @s@ @r@zc{c@@yH@@@@@G@X@@G@X@G@X  0 ;;~;~;;;;;@apj@k@; @@@@ภ.N;%%%@;%%%B@.M@@@&@@H@XH@X@@/@@*@@F@XG@X@@ࠠ$args;%D%N;%D%R@@@@@ @XG@X  0 ;;;;;;;;@/@@@ࠠ%targs;%D%T;%D%Y@@@@@ @XG@X@@@@
@ @X@ఐ <transl_constructor_arguments;
%\%d;
%\%@)@@@@@G@X@@@G@X@+@@G@X@@G@X@@G@X@G@X@G@X@G@X@G@X:@@ఐE#env;
%\%;
%\%@+@@xG@@ภ1[<
%\%<
%\%@1Z@@@@@H@YH@YW@@ఐ-%sargs<
%\%<
%\%@@@id@@G@@VG@Xg@@<%D%J@@@ࠠ)tret_type<&%%<'%%@@@@@ @Y!G@Y  0 <)<(<(<)<)<)<)<)@@@<C |v@w@<E @@@డ:2transl_simple_type<>%%<?%%@@@@@@G@Y@@@G@Y@@@G@Y@@G@Y@G@Y@G@Y@G@Y
%@@ఐ#env<]%%<^%%@@@2@@ภ1<h%%<i%%@1@@@7@@H@Y#H@Y)B@@ఐn)sret_type<z%%<{%%@V@@O@@@@@SP@@<%%@@@ࠠ(ret_type<%%<%%@@@	@@ @Y0G@Y-  0 <<<<<<<<@erl@m@< @@@ఐy)tret_type<%%<%%@
@@@@G@Y1 @Y/@)ctyp_type<%%<%&@	@@@@<%%@@డ($repr%Ctype<&;&N<&;&X@@(~)type_expr@@ @(()type_expr@@ @(@ @(@( F( F@@(d@@@@@I@Y9@@I@Y8@I@Y7  0 <<<<<<<<@MZT@U@< @@@@ఐb(ret_type<&;&Y<&;&a@@@,@@J@Y@J@YBJ@YA@@<&;&M<&;&b@@0@@H@YE @Y? @$desc=&;&c=&;&g@ z@@ v@@ @YD*@Ġ'Tconstr=&m&w=&m&~@ Uࠠ"p'=&m&=&m&@@@ Y@@ @YNC@@=$&m&=%&m&@@ X0@@J@YP@@J@YOO@@=0&m&=1&m&@@ [ V@@J@YR@@J@YQ[@@@(=:&m&@@ @@J@YS`@@`@డ:$same$Path=K&m&=L&m&@ @@@&
@@H@Y_@&@@H@Y^!^@@H@Y]@H@Y\@H@Y[  0 =V=U=U=V=V=V=V=V@~F@@A@=o @@@@ఐ)type_path=i&m&=j&m&@@@E@YE@YkE@YlE@XX@@ఐb"p'=}&m&=~&m&@"@@&A@@I@YjI@YnI@Ym,@@=
@@-Z@@H@YpI@Yi2@ภ0P=&m&=&m&@0O@@@,@@F@YG@Ys?@@=&&=&&@@!@@J@YU@@@@డ<s%raise=&&=&&@3@@@3@@H@Yz%G@YuH@Yy@H@Yx@@ภ%Error=&&=&&@3uఐà)sret_type=&&=&&@@@XE@Y"@(ptyp_loc=&&=&&@@@5@@I@YI@YI@Y@ภ1Constraint_failed=&&=&'@  < ;b3p@;`BEHYa@A;*@@;'ఐB#env='',=''/@(@@m@ภ"::=''2='n'A  < =@=B@AAB@A=@@=డ;p$diff*Errortrace>''A@@%Types)type_expr@@ @j@
)type_expr@@ @i;u;p@@ @g@ @h@@ @f@ @e@ @d@5typing/errortrace.mli [ [
(@@;y4#@@@!@@I@Y@@@I@Y;;@@I@Y;@@I@YI@YI@YI@Y@@I@Y@I@Y@I@Yo@@ఐ͠(ret_type>W'B'e>X'B'm@y@@K@@J@YJ@YJ@Y@@డ*E)newconstr%Ctype>p'n'>q'n'@$@@@$@@J@Y@$$@@J@Y@@J@Y$@@J@Y@J@Y@J@Y@@ఐɠ)type_path>'n'>'n'@@@!@@ఐŠ+type_params>'n'>'n'@@@AE@YE@X_@@>'n'>'n'@@@@J@YJ@YK@Y@@	@@<< @@I@YtI@Y@I@YI@YI@YI@Y@ภ"[]#A@$A@>K@@I@YI@Y@@>''1@@<<@I@YI@Y@@>'n'@@6@@I@YI@Y@@>&&>'n'@@4@@I@YI@Y@@6@@,@@A>&;&A>''@@R  0 >>>>>>>>@	@@@డ=I%widen>''>''@@@@ @@@ @@ @@jj@@M@@@@@G@Y@@G@Y@G@Y%@@ఐ!z?''?''@@@@@H@Z H@ZH@Z9@@.
@@.m@@F@ZG@Y?@ఐu%targs?0''?1''@@@E@ZN@ภ$Some?<''?=''@4ఐ )tret_type?F''?G''@@@b@@@@7
E@Z
@@F@Zi@ఐ$args?X''?Y''@)@@E@Zv@ภ$Some?d''?e''@4ఐ䠐(ret_type?n''@@@@@
@@71E@Z@@F@Z@@H@@H2"
@F@Z@@@@@@@@@	@@@
T@h@@@@@@'@@E@Z
c@@A?##@@R@@AA@  0 ????????@@@@@AA@"  0 ????????@@@@@AA@1  0 ????????@@@@@AA@<  0 ????????@@@@@AA@@E@@ @Z  0 ????????@@@@@@@@ࠠ2transl_declaration?(	(
?(	(@@@@@@ @tE@Z@7}@@ @u:E@Z@!t@@ @tE@Z2@@ @sTE@Z@ @ZE@Zx0type_declaration@@ @tE@Z@ @ZE@Z@ @ZE@Z@ @ZE@Z  0 ????????@-@@? @@@@#env?(	( ?(	(#@@@=  0 ????????@I?(	(	?AA@@@@@@%sdecl?(	($?(	()@@@G  0 ????????@ S@@@ @@@@@2[ࠠ"id@
(	(+@(	(-@@@N  0 @@@@@@@@@"_@@@! @@@ࠠ#uid@(	(/@(	(2@@@S@@@(	(*@(	(3@@bZ@G@Z@@డ>4reset_type_variables@- (S(U@. (S(i@ð@@@@@F@Z@@F@Z@F@Z  0 @3@2@2@3@3@3@3@3@-5}@0@@M )v@$@@O @@@@ภ3@G (S(k@3@@@@@G@ZG@Z@@"@@/@@E@ZF@Z@డ,7)begin_def%Ctype@b!(m(o@c!(m(~@@,$@@ @(@,(@@ @(?@ @(>@,g)),g)D@@,N@@@@@F@Z@@F@Z@F@ZD@@ภ3B@!(m(@!(m(@3A@@@"@@G@ZG@ZT@@+@@/@@E@ZF@ZZ@@ࠠ'tparams@"((@"((@@@.*V@@ @Z7@@ @Z7@@ @Z@ @ZF@Z@ @Z@@ @ZF@Z  0 @@@@@@@@@@@@ఐ+make_params@"((@"((@V@@@@@F@Z@.Z7@@F@Z۠+@F@Z@@F@Z.`@@F@Zנ6@F@Z@@F@Z@F@Z@F@Z*@@ఐ#env@"((@"((@@@qE@tE@t<E@thE@sE@sE@sE@sE@qE@qE@q?E@q@E@pE@pE@o2E@o3E@[E@[E@[jE@[kE@ZE@ZE@Zb@@ఐ5%sdeclA&"((A'"((@@@E@u.E@uE@tE@tE@tE@tE@s>E@s2E@rE@qE@qE@qE@nE@mE@jE@gE@\E@[E@[E@[E@[E@ZE@ZE@Z@,ptype_paramsA\"((A]"((@8{9@@.8{@@G@Z@G@Z@@G@ZG@ZG@Z@@@@@@Ap"((@@@ࠠ&paramsA{#((A|#((@@@/	@@ @[F@[@@ @[F@Z  0 AAAAAAAA@R@@A @@@డ@\$List#mapA#((A#((@/8@@@@@@F@[ F@[8@@F@['8@@F@[(@F@[&F@[@F@[F@[4@F@[@/G@@F@[/F=@@F@[@F@[@F@[  0 AAAAAAAA@8@@@@@4ࠠ#ctyA#((A#((@@@1@@A#((A#((@@0@@A#((A#((@@<7@I@[!@@ఐ#ctyA#((A#((@I@@A @@K  0 AAAAAAAA@h#@@@)ctyp_typeA#((A#((@Ӱ@@t	@@AA#((A#((@@@`}@G@[G@["w@@ఐn'tparamsB
#((B#((@@@/t@@G@[G@[)G@[#T@@}@@@@B#((
@@@ࠠ%cstrs	B"$()B#$()@@@/@@ @[gF@[N@@ @[F@[O9%@@ @[F@[P@ @[QF@[1@@ @[>F@[,  0 B<B;B;B<B<B<B<B<@@@BU @@@డA$List#mapBQ$()
BR$()@/@@@@@@F@[hF@[C@@F@[F@[D.F@[E@F@[FF@[3@@F@[4@/@@F@[2/I@@F@[0@F@[/@F@[.  0 BoBnBnBoBoBoBoBo@3@@@@@5A
ࠠ#sty
B%))B%)) @@@,@ࠠ$sty'B%))"B%))&@@@0@ࠠ#locB%))(B%))+@@@4)@@B%))B%)),@@FA<@I@[G1@@డA2transl_simple_typeB&)0)6B&)0)H@*@@@@@G@[Y@@@G@[X@*@@G@[WO@@G@[V@G@[U@G@[T@G@[S  0 BBBBBBBB@Hn@C@B @j@;@B 8f@3@B @@@@ఐ#envB&)0)IB&)0)L@@@@@ภ8>B&)0)MB&)0)R@8=@@@@@H@[iH@[o'@@ఐq#styB&)0)SB&)0)V@/@@4@@J@@5@డA[2transl_simple_typeC')X)^C')X)p@~@@@@@G@[y@@@G@[x@~@@G@[w@@G@[v@G@[u@G@[t@G@[sT@@ఐF#envC$')X)qC%')X)t@,@@0a@@ภ8C/')X)uC0')X)z@8@@@@@H@[H@[q@@ఐ$sty'CA')X){CB')X)@w@@~@@@@@@ఐ#locCM')X)CN')X)@@@@@@@%@@ACR%))CS')X)@@@ .@G@[@G@[@@ఐs%sdeclCd())Ce())@W@@:@+ptype_cstrsCk())Cl())@:f
@@1 @@G@[?G@[G@[@@&@@P6@@Cx$((
@@@ࠠ,unboxed_attrC*))C*))@@@;H;E@@ @[@@ @[F@[  0 CCCCCCCC@Osm@n@C @@@ఐ;o;get_unboxed_from_attributesC*))C*))@8@@@;k@@F@[;d;a@@F@[@@F@[@F@[@@ఐĠ%sdeclC*))C*))@@@)@@@@1*@@C*))@@ఐC,unboxed_attrC+))C+))@C@D@C @@;;@@ @[@@ @[  0 CCCCCCCC@DU@@@Ġ$NoneC,)* C,)*@8@@@@;;@@J@[@@J@[  0 CCCCCCCC@@@@	@@Ġ$SomeC,)*C,)*@98Ġ9TC,)*C,)*@9S@@@@;@@J@[@@@@@; ;@@J@[@@J@[@@@@D
,))D,)*@@;̠;@@I@[@@I@[)@@ภ6ְD,)*D,)*@6@@@3g@@E@gF@[6@Ġ$SomeD*-**D+-**!@9oĠ:9D2-**"D3-**&@:8@@@@;@@I@[f@@@@@;;@@I@[@@I@[n@@n@@@ࠠ#badDJ.***2DK.***5@@@@?@@ @[H@[@ @[@ @[H@[n@@#msgDb.***6Dc.***9@@@  0 D`D_D_D`D`D`D`D`@ Di.***.Dj.***t@@@@@డC9%raiseDt.***<Du.***A@:U@@@:U@@H@[*H@[H@[@H@[  0 D{DzDzD{D{D{D{D{@(2@@D @@@@ภ%ErrorD.***BD.***G@:?ఐ%sdeclD.***HD.***M@@@i@)ptype_locD.***ND.***W@;W
@@<@@I@[I@[I@[*@ภ5Bad_unboxed_attributeD.***YD.***n@  < ?:9@?AWHYa@A?@@?ఐ_#msgD.***oD.***r@=@@qH@\ H@[C@@@@<@@I@[I@[I@@U`@@:@@I@[I@[O@@\f@@RP@@AogA@@}@ @\  0 DDDDDDDD@n@@@@l@ఐ%sdeclD/*x*D/*x*@Ұ@@  0 DDDDDDDD@@@D @@@*ptype_kindD/*x*D/*x*@;ǰ@@;@@ @\@Ġ.Ptype_abstractD0**D0**@#@@@@;@@J@\  0 DDDDDDDD@@@@@@@ఐ#badE
0**E0**@(@@@@A@@H@\)F@\F@[F@\$H@\(@H@\'@@.it is abstractE"0**E#0**@@E%0**E&0**@@@]@@I@\.I@\0I@\/.@@%	@@/@Ġ*Ptype_openE91**E:1**@  < *Ptype_open67@@@ABBD@A<`7&7(<a7&74@@@= @@
	@@<@@J@\F@@F@@ఐ#badEO1**EP1**@m@@@@@@H@\7EF@\2H@\6@H@\5[@@	*extensible variant types cannot be unboxedEc1**Ed1*+@@Ef1**Eg1*+@@@@@I@\<I@\>I@\=o@@!	@@p@Ġ,Ptype_recordEz2++E{2++&@  < ,Ptype_record6x@<<@@ @@@ @@AABBD@A<66<66@@@=Q ࠠ&fieldsE2++'E2++-@@@R@@ @\@@ @\  0 EEEEEEEE@@@@@@%@@<x@@J@\@@@@ఐ&fieldsE2++=E2++C@@@E @@1l@@ @\D@@ @\C  0 EEEEEEEE@*@@@ĠE3+I+SE3+I+U@@@@@F@@K@\L@@K@\K@@@@ఐ#badE3+I+YE3+I+\@@@@A@@I@\F@\@F@\I@\@I@\,@@0it has no fieldsE3+I+^E3+I+n@@E3+I+]E3+I+o@@A&@@J@\J@\J@\@@@#	@@A@Ġ"::F4+p+{F4+p+}@@F4+p+z@@@@K@\TT@ĠF4+p+~F4+p+@@@@@@K@\Za@@
F4+p+@@E@@K@\\@@K@\[l@@@!	@@E@@K@\^@@K@\]t@@@%@@@@K@\`@@K@\_|@@|@@ఐ#badF<4+p+F=4+p+@Z@@@As@@I@\gF@\I@\@I@\@@:it has more than one fieldFP4+p+FQ4+p+@@FS4+p+FT4+p+@@A@@J@\J@\J@\@@!	@@@Ġ"::Fg5++Fh5++Aiঠ+pld_mutableFr5++Fs5++@Ġ'MutableFz5++F{5++@  < 'Mutable8,mutable_flag@@ @@@@AB@B@A7gWu7gW~@@@8S@@@@@@K@\n@@@&F5++@@I@@K@\pK@\o@Ġ"[]
2A@@3A@FW@@K@\v@@K@\u@@@F5++<@@%`@@K@\x@@K@\w@	@@@ఐj#badF5++F5++@Ұ@@@A@@I@\F@\I@\@I@\	@@-it is mutableF5++F5++@@F5++F5++@@B@@J@\J@\J@\@@!	@@@ĠxF6++F6+,Aߠঠ+pld_mutableF6++F6++@TĠ)ImmutableF6++F6+,@  < )Immutablev@@@@B@B@A8,gWk8-gWt@@@8R@@
	@@b@@K@\F@@@!F6+,@@@@K@\K@\M@Ġq+A&@@,A@F@@K@\@@K@\Z@@@G6++5@@@@K@\@@K@\c@	@c@@ภ9ݰG6+,
G 6+,@9@@@
k@@AG#2++1G$7,
,@@
n@Ġ-Ptype_variantG/8,,G08,,*@8-ࠠ,constructorsG88,,+G98,,7@@@8180@@ @\@@ @\`@@@
@@>@@J@\ d@@d@@ఐ,constructorsGO8,,GGP8,,S@@@Gc @@8J8I@@ @_z@@ @_y  0 GVGUGUGVGVGVGVGV@z)@@@ĠGf9,Y,cGg9,Y,e@@@@@8_8^@@K@_@@K@_  0 GkGjGjGkGkGkGkGk@@@@	@@@ఐ0#badGz9,Y,iG{9,Y,l@@@@B@@I@_rF@`F@_vF@_I@_@I@_@@5it has no constructorG9,Y,nG9,Y,@@G9,Y,mG9,Y,@@B@@J@_J@_J@_.@@%	@@/@ĠG:,,G:,,@	@G:,,@@8@@K@_@@ĠG:,,G:,,@	@@@8@@K@_M@@
G:,,@@GC8@@K@_@@K@_X@@@!	@@GK8@@K@_@@K@_`@@@G:,,G:,,@@8ɠ8@@K@_@@K@_j@
@j@@ఐ#badG:,,G:,,@@@@C@@I@_iF@_I@_@I@_@@	 it has more than one constructorG:,,G:,,@@G:,,G:,,@@C2@@J@_J@_J@_@@!	@@@ĠH;,,H
;,,A
ࠠ!c	H;,,@@@9	@@ @_@Ġ
A<@@A@G9@@K@_@@K@_@@@H(;,,@@99@@K@_@@K@_@	@@@ఐ&!cH;;,,H<;,,@'@(@HO @@94@@J@_ @_  0 H@H?H?H@H@H@H@H@@6
@@@(pcd_argsHK;,,HL;,,@8S@@8R@@ @_@Ġ+Pcstr_tupleH[<,,H\<,-	@%ĠHc<,-
Hd<,-@@@@@(?{@@L@_@@L@_(@@@
@@8r@@L@_,@@,@@ఐ0#badHz=-- H{=--#@@@@C@@J@`f F@_F@`aJ@`e@J@`dC@@?its constructor has no argumentH=--%H=--D@@H=--$H=--E@@C@@K@`kK@`mK@`lW@@#	@@X@Ġ+Pcstr_tupleH>-F-TH>-F-_@qĠH>-F-bH>-F-d@
@H>-F-a@@?@@L@_r@ĠH>-F-eH>-F-g@
@@@?@@L@_@@
H>-F-h@@HJ?@@L@_@@L@_@@@!	@@HR?@@L@_@@L@_@@@H>-F-`H>-F-i@@?@@L@_@@L@_@@@;	@@8@@L@_@@@@ఐ#badH?-m-}H?-m-@@@@D%@@J@`ttF@`oJ@`s@J@`r@@	*its constructor has more than one argumentI?-m-I?-m-@@I?-m-I?-m-@@D=@@K@`yK@`{K@`z@@!	@@@Ġ+Pcstr_tupleI@--I@--@ĠI @--I!@--A"@I%@--@@@8@@L@_@Ġ	
AK@@
A@H@D@@L@` @@L@_@@@I7@--@@@M@@L@`@@L@`@@@'@@9D@@L@`@@@@ภ<IHA--IIA--@<@@@@Ġ,Pcstr_recordIUB--IVB--@^Ġ}I]B--I^B-. @|@@@@d@@L@`@@L@`
"@@@
@@9l@@L@`&@@&@@ఐ*#badItC..IuC..@@@@D@@J@`F@`J@`@J@`;@@=its constructor has no fieldsIC..IC..6@@IC..IC..7@@D@@K@`K@`K@`O@@!	@@P@Ġ,Pcstr_recordID.8.FID.8.R@ĠID.8.UID.8.W@@ID.8.T@@e@@L@`j@ĠID.8.XID.8.Z@@@@r@@L@` w@@
ID.8.[@@IB|@@L@`"@@L@`!@@@!	@@IJ@@L@`$@@L@`#@@@ID.8.SID.8.\@@֠@@L@`&@@L@`%@@@;	@@9@@L@`'@@@@ఐ#badIE.`.pIE.`.s@@@@E@@J@`jF@`J@`@J@`@@	'its constructor has more than one fieldIE.`.uIE.`.@@IE.`.tIE.`.@@E5@@K@`K@`K@`@@!	@@@Ġ,Pcstr_recordJF..JF..@ĠJF..JF..Aঠ+pld_mutableJ#F..J$F..@Ġ'MutableJ+F..J,F..@@@@@@@L@`8@@@J2F..@@@@L@`:L@`9@Ġ$AZ@@%A@I@@L@`@@@L@`? @@@JFF...@@K@@L@`B@@L@`A	@@@>6@@:S@@L@`C
@@
@@ఐ#badJ[G..J\G..@y@@@E@@J@`F@`J@`@J@`"@@-it is mutableJoG..JpG..@@JrG..JsG..@@E@@K@`K@`K@`6@@!	@@7@Ġ,Pcstr_recordJH./JH./@Ġ(JH./JH./0Aঠ+pld_mutableJH./JH./"@Ġ)ImmutableJH./%JH./.@@@@@@@L@`Ta@@@JH.//@@c@@L@`VL@`Uh@Ġ$A@@%A@J5o@@L@`\@@L@`[u@@@JH./.@@x@@L@`^@@L@`]~@@@>6@@:@@L@`_@@@@ภ=JI/4/DJI/4/F@=@@@IF@`@@AJ;,,JJ/G/T@@L@@AJ8,,;JK/U/^@@Og@@AJ/*x*|@@@q@@@@AJ+))JL/_/d@@@@ࠠ%unboxJM/f/lJM/f/q@@@B@@ @hF@g  0 JJJJJJJJ@ @@@ࠠ/unboxed_defaultJM/f/sJM/f/@@@$boolE@@ @jF@g@@@@
@ @g@ఐ$%sdeclKN//KN//@@@	&@*ptype_kindKN//KN//@A
@@A@@ @g0@Ġ-Ptype_variantK0O//K1O//@<.ĠҰK7O//K8O//A
9ঠ(pcd_argsKBO//KCO//@;JĠ+Pcstr_tupleKJO//KKO//@ĠKQO//KRO//A
S@KVO//@@Bi@@K@gh@Ġǰ	
A|@@
A@JBu@@K@g@@K@gu@@@KhO//@@+B~@@K@g@@K@g~@@@'@@;u@@K@g@@A>KuO//@@<j@@K@gK@g@ĠHA@@IA@K<v@@K@g@@K@g@@@KO//R@@<<@@K@g@@K@g@@@bZ@@Bk@@K@g@@@Ġ-Ptype_variantKP//KP//@<Ġ?KP//KP/0*A
ঠ(pcd_argsKP//KP//@;Ġ,Pcstr_recordKP//KP/0@ĠYKP/0
KP/0%A
ঠ+pld_mutableKP/0KP/0@5Ġ)ImmutableKP/0KP/0 @@@@@<@@K@g@@AKP/0$@@ @@K@gK@g@ĠK$A  @@%A@Kf @@K@g@@K@g@@@KP/0	.@@ @@K@g@@K@g@@@>6@@;@@K@g@@AUKP/0)@@<@@K@gK@g
@Ġl_A !@@`A@K<@@K@h@@K@h@@@L
P//i@@==@@K@h@@K@h#@@@yq@@B@@K@h'@@'@@u@@B@@J@h	+@Ġ,Ptype_recordL%Q0+01L&Q0+0=@ĠǰL,Q0+0?L-Q0+0ZA.ঠ+pld_mutableL7Q0+0@L8Q0+0K@Ġ)ImmutableL?Q0+0LL@Q0+0U@O@@@@@@J@hS@@ALFQ0+0Y@@!@@J@hJ@hZ@Ġ$A n@@%A@KԠ!@@J@h!@@J@h g@@@LZQ0+0>.@@ܠ!@@J@h#@@J@h"p@@@>6@@C<@@J@h$t@@t@@7:@@C@@@I@h%x@@డK<&Option%valueLyR0^0dLzR0^0p@@&optionJ!a @h@@ @h'default		@ @h@ @h@*option.mliaa@@.Stdlib__OptionE@@@G@h@@G@h@G@h@G@h@@ఐ	%,unboxed_attrLR0^0qLR0^0}@@@1@@H@hH@hH@h@*డKIKLR0^0LR0^0@H@@@$H@jH@h@@H@h@H@h@@డ'Clflags-unboxed_types'ClflagsLR0^0@&Stdlib#ref$boolE@@ @jk@@ @jj@1utils/clflags.mli  @@'Clflags 3@@$63@@I@hI@jI@j@@=!@@3	@@"@@

@డK&Option'is_noneM	S00M
S00@@!a @hX@@ @h@@ @h@ @h@y	6	6y	6	U@@L@@@D@@G@jG@j@@G@j+@@G@j@G@j;@@ఐ	,unboxed_attrM7S00M8S00@	q@@0@@H@jH@jH@jP@@:@@DQ@@@@@F@h-T@@MLT00MMT00@@D'@@I@h'_@@_@@ภBMYT00MZT00@B@@@E@@G@jm@ภBMeT00MfT00@B@@@E"@@G@jy@@@@hF@j|@@AMoN//
@@j~@@MqM/f/h@@@ࠠ%tkind.MV11MV11
@@@"-)type_kind@@ @jF@j  0 MMMMMMMM@	@@M @@M @@@ࠠ$kind/MV11MV11@@@:(";@@ @qpF@jAE7constructor_declaration@@ @pF@j@@ @jF@j$@@MV11MV11@@1@ @j+@ఐ
Π%sdeclMW11!MW11&@
@@  0 MMMMMMMM@9@@@*ptype_kindMW11'MW111@D@@D@@ @j@Ġ.Ptype_abstractMX171?MX171M@,@@@@D@@I@jT@@T@@ภ.Ttype_abstractMX171QMX171_@  < .Ttype_abstractf@@ @@@@@BBD@AOOOO@@@"o@
@@o@@G@jm@ภ-Type_abstractMX171aMX171n@:@@@:d_@@G@j|@@ @@XF@j@Ġ-Ptype_variantNY1o1wNY1o1@?ࠠ&scstrs0NY1o1NY1o1@@@??@@ @j@@ @j  0 N NNN N N N N @@@@@@@@E @@I@j@@@@డL$List&existsN:Z11N;Z11@@@!a @"e$boolE@@ @$"@ @$!@? @@ @$ 
@@ @$@ @$@ @$@>$8$8>$8$d@@>c! @@@@?S@@H@k H@j@@H@j@H@j@
@@H@j@@H@j@H@j@H@j  0 NkNjNjNkNkNkNkNk@[U@V@N @@@@@$cstr2NZ11NZ11@@@%@@డMR"<>NZ11NZ11@>@@@>E@@I@k@@I@kI@k@>@@I@k@I@k@I@k  0 NNNNNNNN@1)D@ @N @@@@ఐ3$cstrNZ11NZ11@@@VH@kH@k@'pcd_resNZ11NZ11@>߰
@@)@@ภ$NoneNZ11NZ11@C@@@7I@k$+@@@@@@I@k(I@k'1@@ANZ11NZ11@@@y@@I@k@I@kI@k*  0 NNNNNNNN@k@@@@ఐˠ&scstrsNZ11NZ11@v@@@@I@kI@k.I@k,@@@@>@@H@k0I@k@ఐޠ%cstrsO [11O[11@q@@<@@ @k4@@ @k5E@@ @k6@ @k3@@ @k2:@Ġ#>O\12O\12@#=@@@@<@@K@kE@@K@kFF@@K@kG@K@kD@@K@kC  0 O.O-O-O.O.O.O.O.@@@@@@@ภAO9\12O:\12
@A@@@>@@I@kI@ks@Ġ	IOI]22 OJ]22"@K@OQ]22OR]22@@@@K@k]{@@OY]22OZ]22@@@@K@k^@ࠠ#loc3Oe]22Of]22@@@FP@@ @k_@@Ol]22$@@
@K@k`@@+Ou]22#@@N@@K@kc@@K@kdFl@@K@ke@K@kb@@K@ka@@@@@=@@K@kh@@K@kiF@@K@kj@K@kg@@K@kf@@@@డG-prerr_warning(LocationO^2'25O^2'2K@@(Location!t@@ @@(Warnings!t@@ @$unitF@@ @@ @@ @@4parsing/location.mli  @@#"@@@ @@I@k{@@@I@kz@@I@ky@I@kx@I@kw  0 OOOOOOOO@hxr@s@O @@@@ఐ#locO^2'2LO^2'2O@@@@@@J@kJ@kJ@k@@ภ(Warnings2Constraint_on_gadtO^2'2PO^2'2k@  < 2Constraint_on_gadt(Warnings!t@@ @@@@RVo E@A2utils/warnings.mli e e@@@	 I@@@Y@@J@kJ@k;@@l@@I@k>@@APZ11P_2l2w@@?d@@G@lH@l@@PZ11@@@@ࠠ+all_constrs4P)`2y2P*`2y2@@@'n$$@@ @mH@l@@ @m H@l  0 P2P1P1P2P2P2P2P2@@@@డO#refPA`2y2PB`2y2@'@@@'@@H@l@H@l@@డN#Set%empty&StringPZ`2y2P[`2y2@$@@*&@@@@0'@@P_`2y2@@డO1$List$iterPna22Poa22@A4@@@@Ai@@H@m"H@m
A5@@H@m@H@m@A2
@@H@m	A/@@H@m@H@m@H@m  0 PPPPPPPP@c]@^@P @@@@@CV6ঠ(pcd_namePb22Pb22@@ঠ#txtPb22Pb22@#ࠠ$name5Pb22Pb22@@@@@@ @m/,@@@Pb22Pb22@@@ɠ@@@K@m3K@m1@@K@m08@@@Pb22Pb22@@J;@@డO#Set#mem&StringPc22Pc23@#@@@#@@J@mD@$@@J@mC#@@J@mB@J@mA@J@m@  0 PPPPPPPP@_>8@9@P @@@@ఐF$namePc23Pc23@@@#@@K@mTK@mS@@డO##Qc23Qc23
@#@@@(J%@@K@mOK@mhK@meK@m]@@K@m^
@K@m\3@@ఐ+all_constrsQ!c23@@@(g@@L@mcL@mfL@mdG@@'@@H@@Y@@@@@J@mjK@mNN@డP %raiseQ;d33,Q<d331@G@@@G@@J@mn@@@I@mJ@mJ@mm@J@mlf@@ภ%ErrorQSd332QTd337@Gఐn%sdeclQ_d338Q`d33=@R@@'~@)ptype_locQfd33>Qgd33G@H
@@It@@K@mzK@mK@m@ภ5Duplicate_constructorQwd33IQxd33^@  < OUF@OSA@HYa@AOO@@OLఐנ$nameQd33_Qd33c@@@Ob@@K@mK@mK@m@@
@@I@@K@m{K@m@@XQd33e@@Gs@@K@msK@my@@`@@X@@Qc22	@@Z@డPk##Qe3g3Qe3g3@#@@@(%@@I@mI@m@@I@m@#@@I@m@I@m@I@m@@ఐ+all_constrsQe3g3sQe3g3~@<@@)	@@J@mJ@mJ@m@@డP#Set#add&StringQe3g3Qe3g3@#h@@@$@@J@m@%@@J@m%@@J@m@J@m@J@m@@ఐM$nameQe3g3Qe3g3@@@$@@K@mK@m@@డP$$Re3g3R
e3g3@$@@@)Q&@@K@mK@mK@mK@m@@K@m
@K@m:@@ఐ+all_constrsR(e3g3@@@)n@@L@mL@mL@mN@@'@@O@@U@@&%@@I@mS@@v@@B@@I@mJ@mY@@@B@@I@mI@m_@@ARDb22REe3g3@@@C@@I@m@I@mI@m  0 RHRGRGRHRHRHRHRH@@@@@ఐ=&scstrsRXf33RYf33@@@C@@I@mI@mI@m@@@@A@@G@mH@m@డQ;!>Rvi44#Rwi44$@@!a @ _@B@@ @ ^@ @ ]@ @ \,%greaterthanBAHW@@@@HW HX %@@HVT@@@A@@H@mH@m@@@H@m@H@m@H@mN@@డQm$List&lengthRg33Rg33@A@@@AC@@I@n(I@m@@I@mA=@@I@m@I@mn@@డQ$List&filterRh33Rh33@@@!a @"(@@ @$S@ @$R@C@@ @$QC@@ @$P@ @$O@ @$N@CG**CG**@@Ck @@@@<J@m@@J@n@J@n@
@@J@n @@J@m@J@m@J@m@@@"cd7S
h33Sh33@@@@@డQ"<>Sh33Sh33@C@@@C!@@K@n'K@n@C@@K@n@K@n@K@n  0 S SSS S S S S @%:@@S9 @@@@ఐ/"cdS5h33S6h33@@@LJ@n&J@n@(pcd_argsS?h33S@h33@CG
@@%@@ภ+Pcstr_tupleSKh34 SLh34@ภ'sSSh34STh34@'r@@@Jm@@L@n/@@L@n.L@n5:@@@@EL@n-=@@.@@@@K@n9K@n8C@@ASih33Sjh34@@@@@K@n@K@nK@n;  0 SmSlSlSmSmSmSmSm@@@@@ఐb&scstrsS}h34S~h34@
@@@@K@nK@n?K@n=;@@Sh33Sh34@@A@@J@mJ@nAJ@n
!@@
@@"@@డRe!+Si445Si446@@#intA@@ @ @@@ @ @@ @ @ @ @ @ '%addintBAI@@@@I[5:5:I[5:5h@@Ip@@@@@I@nH@@@I@nG@@I@nF@I@nE@I@nD@@డ&Config'max_tag&ConfigSi44&Si444@#intA@@ @nx@0utils/config.mli  @@&Configb@@J@@J@nTJ@nJ@n@@ASi447Si448@@R@@J@nSJ@nJ@n@@Ti44%Ti449@@tJ@nR@@^@@C@@H@nI@m@డR%raiseTj4?4ITj4?4N@I@@@I@@H@nCl@@G@nH@nH@n@H@n@@ภ%ErrorT.j4?4OT/j4?4T@IఐI%sdeclT:j4?4UT;j4?4Z@-@@ @)ptype_locTAj4?4[TBj4?4d@J
@@LO@@I@nI@nI@n@ภ5Too_many_constructorsTRj4?4fTSj4?4{@  < R"I@@@AHYa@AR!@@R@@@LW@@I@nI@n@@FT]j4?4}@@J<@@I@nI@n@@N@@F@@Teg33	@@H@@ࠠ)make_cstr8Tpk44Tqk44@@@@Ek@@ @oH@n),7constructor_declaration@@ @p H@o@@ @pH@o@ @oH@n@ @nH@n  0 TTTTTTTT@@@@@%scstr:Tk44Tk44@@@%  0 TTTTTTTT@1Tk44T77@@@@@@ࠠ$name;Tl44Tl44@@@C@@ @nI@n  0 TTTTTTTT@%@@@T @@@డC,create_local%IdentTl44Tl44@#i@@@#i@@I@nC@@I@n@I@n@@ఐH%scstrTl44Tl44@)@@yH@oH@oH@oH@obH@oFH@oAH@nH@nH@n=@(pcd_nameTl44Tl44@E
@@E#@@J@nJ@nJ@n@@J@nO@#txtUl44Ul44@(<-@@J@nW@@H@@[X@@U
l44@@@ࠠ%targs<Um44Um44@@@"@@ @o&I@n  0 UUUUUUUU@p}w@x@U7 @@@ࠠ)tret_type=U.m44U/m44@@@L$@@ @o(@@ @o'I@n@ࠠ$args>UAm44UBm44@@@P@@ @o)I@n&@ࠠ(ret_type?UPm45UQm45	@@@M"j@@ @o+@@ @o*I@n9@@B@@B0@ @n@@ఐ&0make_constructorUln55Umn55(@@@@R@@I@o@< @@I@o@;;@@I@o@@I@o@E@@I@o@MIL@@I@o@@I@o@@I@nMW%&@@I@n@@I@n@@I@nMc"@@I@o @@I@n@I@n@I@n@I@n@I@n@I@n@I@n@@ఐ֠#envUn55)Un55,@@@@@ภ$Path&PidentUn55.Un559@>kఐ "idUn55:Un55<@@@@@Un55-Un55=@@<^@@J@o1J@o8@@ఐf&paramsUn55>Un55D@@@<h<e@@J@o0@@J@o/J@o=J@o;@@ఐf%scstrUo5E5bUo5E5g@G@@@(pcd_argsVo5E5hVo5E5p@F

@@F
@@J@o.J@oBJ@o@@@ఐ%scstrVo5E5qVo5E5v@d@@5@'pcd_resVo5E5wV o5E5~@FD
@@MM;@@J@o-@@J@o,J@oGJ@oD
@@@@I@o%
@@V1m44@@@ࠠ%tcstr@V<q55V=q55@@@@@ @oOI@oK  0 V?V>V>V?V?V?V?V?@%2,@-@V[ !@@V] 
@@V_ @@Va @@@  , %cd_id@@ @%d!t@@ @@@  , 'cd_name%b#loc%_@@ @@@ @@A
@A%]Q Q%^Q Q@@+z  , 'cd_args u@@ @@B@A%fQQ%gQQ>@@+{  , &cd_res%&optionJ%`@@ @@@ @@C&@A%vQ?QD%wQ?Q]@@+.|  , &cd_loc5%_!t@@ @@D2@A%Q^Qc%Q^Qv@@+:}  , -cd_attributesA%]@@ @@E;@A%QwQ|%QwQ@@+C~@A%PP%PP@@+Gy%cd_idVr55Vr55@ఐ$nameVr55Vr55@@@^@@J@oQJ@oSJ@oRw@['cd_nameVs55Vs55@ఐ7%scstrVs55Vs55@@@@(pcd_nameVs55Vs55@F
@@Fu@@J@o[J@odJ@oa@@J@o`@q'cd_argsVt55Vt55@ఐՠ%targsVt55Vt56@@@ @@J@orJ@otJ@os@&cd_resW u66Wu66@ఐ۠)tret_typeW	u66W
u66%@@@%@@J@o|@@J@o{J@oJ@o}@&cd_locWv6'65Wv6'6;@ఐ%scstrW(v6'6>W)v6'6C@t@@A@'pcd_locW/v6'6DW0v6'6K@G,
@@@@J@oJ@oJ@o@-cd_attributesW?w6M6[W@w6M6h@ఐ%scstrWJw6M6kWKw6M6p@@@a	@.pcd_attributesWQw6M6qWRw6M6@GB
@@N@@J@o@@@WXr55WYw6M6@@@@W[q55@@@ࠠ$cstrAWfy66Wgy66@@@	@@ @oI@o  0 WiWhWhWiWiWiWiWi@+82@3@W @@@  , %cd_id	@@ @##p!t@@ @@@  , 'cd_args!@@ @@A@AK:0:4K:0:S@@K$   , &cd_resJK@@ @@@ @@B@AK:T:XK:T:q@@K2   , &cd_loc#J!t@@ @ @C @AK :r:vK!:r:@@K>   , -cd_attributes/K=*attributes@@ @!@D,@AK,::K-::@@KJ   , &cd_uid;J!t@@ @"@E7@AK7::K8::@@KU @AK;:: K<::/@@KY %Types%cd_idWz66Wz66@ఐ$$nameWz66Wz66@@@\@@J@oJ@oJ@ol@Y'cd_argsW{66W{66@ఐ$argsW{66W{66@@@!@@J@oJ@oJ@o@i4&cd_resW|66W|66@ఐ(ret_typeX|66X|67@@@|K@@J@o@@J@oJ@oJ@o@xQ&cd_locX}77X}77@ఐ%scstrX!}77X"}77!@m@@6@'pcd_locX(}77"X)}77)@H%
@@@@J@oJ@oJ@o@s-cd_attributesX8~7+79X9~7+7F@ఐ%scstrXC~7+7IXD~7+7N@@@V@.pcd_attributesXJ~7+7OXK~7+7]@H;
@@@@J@oJ@oJ@o@&cd_uidXZ7_7mX[7_7s@డV#Uid"mkXh7_7vXi7_7|@#c@@#c#a@@J@o#^@@J@o@J@o@#kడU-get_unit_name#EnvX7_7X7_7@#O@@@#O@@K@o#L@@K@o@K@o@@ภKSX7_7X7_7@KR@@@#b@@L@oL@o/@@X7_7X7_7@@#@@K@oK@oL@o9@@@	@@@@J@oJ@oK@oA@@@Xz66X7_7@@GD@@Xy66@@ఐ%tcstrX77X77@P@@>  0 XXXXXXXX@Ta[@\@X @@@ఐg$cstrX77-@.@@D@@/@@PI@H@p@"4@@g@{5@@@6@@@7@@Z$@@A@8A@@b]@ @p  0 XXXXXXXX@?@@@@=@@ࠠ)make_cstrBX77X77@@@@I@@ @pOH@pt@@ @pMT@@ @pN@ @pLH@p@ @p	H@p  0 XXXXXXXX@y@@Y @@@@%scstrCY77Y
77@@@"  0 Y
Y	Y	Y
Y
Y
Y
Y
@@@@@డP-warning_scope2Builtin_attributesY77Y78@M;@@M;M9M6@@H@p@@H@p@M5@@H@p@@M2@@H@pBH@p@H@p@H@p@H@p@H@p  0 Y1Y0Y0Y1Y1Y1Y1Y1@94L@+@YJ @@@MVภF?YN
@Y@MXMU@@I@p,@@I@p+@@ఐK%scstrYS78YT78"@@@oH@pPH@p2H@p0H@p
'@.pcd_attributesYa78#Yb781@IR@@Ms@@I@p(I@p3I@p15@@@L7DĠL6Yx828CYy828E@L5@@@@M|@@L@p;H@@ఐ)make_cstrY828IY828R@@@@J~@@J@pD@@J@pB@@J@pC@J@pA@J@p@c@@ఐ%scstrY828SY828X@m@@Lp@@ @@q@@AY828>Y828Y@@@M@@I@p'}@I@p&I@pT{@@	@@|@@A
A@@@ @pX@@Y77@@@ࠠ#repEY8e8qY8e8t@@@Md6variant_representation@@ @p^H@pZ  0 YYYYYYYY@@@Y @@@ఐ%unboxY8e8zY8e8@N@@I@@H@p\H@p[@ภ/Variant_unboxedY8e8Y8e8@  < /Variant_unboxed$@@ @@@@AB@B@AMm88Mn89@@@M @
@@-@@ @p_+@ภ/Variant_regularY8e8Y8e8@  < /Variant_regular@@@@B@B@AM88M88@@@M @
	@@H@pb>@Z
8e8w
@@@@@Z8e8m@@@ࠠ&tcstrsFZ88Z88@@@JҠ@@ @pH@pn@@ @p|H@pe  0 Z$Z#Z#Z$Z$Z$Z$Z$@_nh@i@Z= @@@ࠠ%cstrsGZ488Z588@@@J@@ @pH@pp@@ @p}H@pf@@*@@*@ @pi@డY$List%splitZT88ZU88@@K!a @!Ġ!b @!@ @$@@ @$N@@ @$9@@ @$@ @$@ @$@K7e7eK7e7@@Kx'&@@@$`G@H@pr@@H@pqih@@H@pmTS@@H@po@H@pl@H@pkh@@డYc$List#mapZ88Z88@H?@@@@K@@I@pI@py@I@pI@pI@pI@p@I@p@HF@@I@pHE@@I@p@I@p@I@p@@ఐ䠐)make_cstrZ88Z88@@@@K@@J@pR@@J@p
2@@J@p@J@p@J@p@@ఐˠ&scstrsZ88Z88@v@@H{I@@J@pJ@pJ@p@@Z88Z88@@I@@I@p~I@pI@p@@
@@H@p{@@[ 88@@ภ-Ttype_variant[
88[89
@  < -Ttype_variant
$@#O@@ @@@ @@A@BBD@A*OO*	OO@@@/pఐ
&tcstrs[$89[%89@
@@[8 ǰ@@@@G@p@@G@pG@pG@p  0 [/[.[.[/[/[/[/[/@
!@@[I @@@@0@@
@@G@p	@ภ,Type_variant[D89[E89@  < ,Type_variantG@NԠG@@ @
@@ @
@BABBD@AN66N66@@@N ఐ+%cstrs[_89![`89&@*@@
F@p@@G@pG@pG@p8@ఐ#rep[t89([u89+@K@@@@G@pG@pG@pJ@@;[89,@@H
F@p@@G@pS@@~	@@Q@G@pX@@@d@@@@@@@@@@,@@	@$@@
@4@@\@v@@
F@p_@Ġ,Ptype_record[9-95[9-9A@&ࠠ$lbls1[9-9B[9-9F@@@-0h@@ @j@@ @j
@@@
@@R@@I@j
@@
@@@ࠠ$lblsH[9J9X[9J9\@@@IR0u@@ @p@@ @pH@p  0 [[[[[[[[@H-'@(@[ @@@ࠠ%lbls'I[9J9^[9J9c@@@Ii0}@@ @p@@ @pH@p@@$@@$@ @p@ఐ0Ԡ-transl_labels[9J9f[9J9s@%@@@0@@H@p@0@@H@p@I0@@H@p@@H@pI0@@H@p@@H@p֠I0@@H@p@@H@p@H@p@H@p@H@p@H@pM@@ఐI#env\'9J9t\(9J9w@/@@+Z@@ภR9\29J9x\39J9|@R8@@@1@@I@pI@pj@@ఐ$lbls\D9J9}\E9J9@t@@I٠1@@I@p@@I@pI@q I@p@@^@@mH@p@@\V9J9T@@@ࠠ#repJ\a99\b99@@@P5record_representation@@ @q	H@q  0 \f\e\e\f\f\f\f\f@@@\ @@\ @@@ఐ%unbox\{99\|99@@@LP@@H@qH@q  0 \~\}\}\~\~\~\~\~@@@@ภ.Record_unboxed\99\99@  < .Record_unboxed(@@ @@O@@ @@A@BCE@AP77P77@@@P4 ภQ\99\99@Q@@@@@H@qH@q&@@ @@D@@ @q
*@డ[$List'for_all\99\99@@@!a @"l@@ @$@ @$@M@@ @$@@ @$@ @$@ @$@M~	#2#2M	#2#_@@M}b@@@@1{@@H@qCH@q@@H@q@H@q@
@@H@q@@H@q@H@q@H@qm@@@!lK\99\99@@@!}@@ఐA&(is_float]	99]
99@?8@@@BE@@I@q3@B<@@I@q2A@@I@q1@I@q0@I@q/  0 ]]]]]]]]@&=@@]- @@@@ఐI#env]'99](99@/@@'@@ఐ=!l]69: ]79:@@@\H@qAH@q*#@%Types'ld_type]B9:]C9:@)%@@Br@@J@q>J@qDJ@qB3@@D
@@@@I@qHI@qG9@@A]S99]T9:@@@z@@I@q%@I@q$I@qJ@@ఐ%lbls']f9:]g9:@@@@@I@q#I@qNI@qL@@@@MD@@H@qPI@q"@ภ,Record_float]}::(]~::4@  < ,Record_float@@@ABCE@AQ7t7vQ7t7@@@Q @
	@@H@qS@ภ.Record_regular]:5:F]:5:T@  < .Record_regular@@@@BCE@AQ7(7,Q7(7:@@@Q2 @
	@@H@qV1@]99
@@3@]99@@5@@]99@@ภ,Ttype_record]:b:l]:b:x@  < ,Ttype_record@%2]@@ @@@ @@AABBD@A,OO,OO@@@2aqఐ$lbls]:b:y]:b:}@Y@@2x@@G@qa@@G@q`G@qdG@qb  0 ]]]]]]]]@ixr@s@] @@@@-@@T@@G@q_@ภ+Type_record]:b:]:b:@  < +Type_recordJr@QrJr@@ @
@@ @
@B@BBD@AQp~66Qq~66@@@Q ఐ"%lbls']:b:]:b:@@@hF@qg@@G@qmG@qqG@qo7@ఐ#rep^:b:^:b:@?@@@@G@qnG@qsG@qrI@@;^:b:@@J}F@qh@@G@qlR@@{	@@Q@G@qtW@@@@@@~F@qZ^@Ġ*Ptype_open^8::^9::@@@@@U@@I@j|@@|@@ภ*Ttype_open^G::^H::@  < *Ttype_opena@@@ABBD@A-<OO-=OP @@@2r@
	@@@@G@q|@ภ)Type_open^[::^\::@  < )Type_openJ@@@ABBD@AQ66Q67
@@@Q @
	@@JF@q~F@q@@G@q@@(@@F@qy@@A^rW11@@@@^tV11@@@ࠠ$tmanL^::^::@@@VG.@@ @rF@q@@ @qF@q  0 ^^^^^^^^@	@@^ @@^ @@@ࠠ#manM^::^::@@@Vc+@@ @rF@q@@ @qF@q@@^::^::@@-@ @q#@ఐ͠%sdecl^::^::@@@  0 ^^^^^^^^@1@@@.ptype_manifest^::^::@U@@UU@@ @q@@ @q@Ġ$None^;;
^;;@S@@@@UU@@I@q@@I@qT@@T@@ภ$None^;;^;;@S@@@Vi@@G@qd@ภ$None^;;^;;@S@@@V[@@G@qr@@@@VF@qu@Ġ$Some_;;%_;;)@TTࠠ#styN_;;*_;;-@@@V-@@ @q]@@@@@UV4@@I@q@@I@qe@@e@@@ࠠ&no_rowO_0;1;=_1;1;C@@@M=@@ @qH@q  0 _3_2_2_3_3_3_3_3@& @!@_L @@@డ^
#not_E;1;F_F;1;I@MV@@@MV@@H@qMU@@H@q@H@q@@ఐA-is_fixed_type_\;1;K_];1;X@=5@@@W+@@I@qW@@I@q@I@q/@@ఐ%sdecl_q;1;Y_r;1;^@d@@3<@@_u;1;J_v;1;_@@M@@I@qI@qJ@qF@@:	@@JG@@_;1;9@@@ࠠ#ctyP_;c;o_;c;r@@@/@@ @qH@q  0 ________@\ic@d@_ @@@డ]2transl_simple_type_;c;u_;c;@/@@@4{@@H@q@4t@@H@q@/@@H@q/>@@H@q@H@q@H@q@H@q"@@ఐ᠐#env_;c;_;c;@ǰ@@/@@ఐ&no_row_;c;_;c;@9@@4@@I@qI@qI@qC@@ఐȠ#sty_;c;_;c;@@@/Q@@I@qI@qI@qW@@K
@@[X@@_;c;k@@ภ$Some_;;_;;@U;ఐu#cty` ;;`;;@u@v@` Ұ@@y  0 ` __` ` ` ` ` @s@@@@@@WȠF@r@@G@r	@ภ$Some`;;`;;@UZఐ#cty`!;;`";;@!@@/@@G@r @r$@)ctyp_type`-;;`.;;@-
@@+@@@@WF@r
@@G@r2@@B
@@3@G@r7@Q@@@@@F@r@@A`A::@@@@`C::@@@ࠠ%arityQ`N;;`O;;@@@N@@ @rF@r  0 `Q`P`P`Q`Q`Q`Q`Q@@@`k @@`m @@@డ_,$List&length`i;;`j;;@Nذ@@@Nؠ-@@F@rF@r@@F@rN@@F@r@F@r$@@ఐ	&params`;;`;;@C@@N@@G@rG@rG@r9@@'@@=:@@`;;
@@@ࠠ$declR`;;`;;@@@T?@@ @rF@r  0 ````````@O\V@W@` @@@  8 T9+type_params`;<`;<@ఐ?&params`;<`;<@y@@TLTI@@G@r@@G@rG@rG@r$@TC*type_arity`<<!`<<+@ఐ%arity`<<.`<<3@3@@TV@@G@rG@rG@r=@TP)type_kind`<5<=`<5<F@ఐY$kind`<5<I`<5<M@]@@Ta@@G@rG@rT@T\,type_private`<O<W`<O<c@ఐ!%sdecla	<O<fa
<O<k@ @@h@-ptype_privatea<O<la<O<y@W
@@Tx@@G@rG@rG@rv@Tp-type_manifesta <{<a!<{<@ఐ#mana)<{<a*<{<@а@@TT@@G@r@@G@rG@rG@r@T}-type_variancea=<<a><<@డ_(Variance1unknown_signatureaK<<aL<<@L@@LL@@G@rLL@@G@rLL@@G@r@@G@r@G@r@G@r@LภVag<<ah<<@V@@@L@@H@rH@r@Lఐ+%arityay<<az<<@հ@@L@@H@rH@rH@r@@9
@@TˠT@@G@r@@G@rG@rG@r@Tá1type_separabilitya<<a<<@డ`,Separability1default_signature%Typesa<= a<=$@Lz@@LzLx@@G@sLw@@G@s@G@s
@Lఐm%aritya<=&a<=+@@@L@@H@sH@sH@s!@@ 
@@L@@G@s%@T론/type_is_newtypea=-=5a=-=D@ภW/a=-=Ga=-=L@W.@@@T@@G@sG@s!:@T4type_expansion_scopea=N=Va=N=j@డQ,lowest_level%Btypea=N=ma=N=@Lh@@U
@@G@s&G@s(G@s'V@U(type_locb ==b==@ఐ"%sdeclb==b==@!@@ j@)ptype_locb==b==@Xɰ
@@U"@@G@s-G@s3G@s1x@U/type_attributesb"==b#==@ఐ"<%sdeclb-==b.==@" @@ @0ptype_attributesb4==b5==@Yt
@@U@@G@s8G@s?G@s=@U<.type_immediatebD==bE==@ภ'UnknownbL==bM==@L]@@@UL@@G@sDG@sH@UD4type_unboxed_defaultbZ=>b[=>@ఐi/unboxed_defaultbc=>bd=>'@װ@@UW@@G@sMG@sOG@sN@US(type_uidbs>)>1bt>)>9@ఐ"d#uidb|>)><b}>)>?@"A@@"@@@b;<b>A>H@@@@b;;@@డaU$List$iterb>g>kb>g>t@SX@@@@1~@@F@sF@sr1@@F@sF@ssZ@@F@sF@st@F@suF@s]Sj@@F@s_@F@s^@Sg@@F@s\Sd@@F@s[@F@sZ@F@sY  0 bbbbbbbb@%@ @b @@@@@UYࠠ#ctySb>u>b>u>@@@5@ࠠ$cty'Tb>u>b>u>@@@9"@ࠠ#locUb>u>b>u>@@@=,@@b>u>b>u>@@OJE@I@sv4@@@ࠠ"tyVb>>b>>@@@0@@ @sH@s}  0 bbbbbbbb@I9h@4@c 1d@,@c )`@$@c @@@ఐD#ctyc>>c>>@@@y@)ctyp_typec>>c>>@/
@@ @@c>>@@@ࠠ#ty'Wc*>>c+>>@@@0A@@ @sH@s  0 c-c,c,c-c-c-c-c-@2?9@:@cF @@@ఐe$cty'c?>>c@>>@:@@@)ctyp_typecF>>cG>>@0#
@@@@cJ>>@@డO.%unify%CtypecY>>cZ>>@JE@@@JE@@G@s@J@@@G@s@J>@@G@sJ<@@G@s@G@s@G@s@G@s  0 cichchcicicicici@=JD@E@c @@@@ఐ##envc|>>c}>>@#@@"t@@ఐ"tyc>>c>>@W@@Jm@@H@sH@sH@s%@@ఐs#ty'c>>c>>@/@@Jz@@H@sH@sH@s9@@O
@@Te@@G@sH@s?@Ġ%Ctype%Unifyc>?c>?
@Iࠠ"trXc>?c>?@@@II@@ @s@@ @s\@@@
@@c@@J@s`@@డb%raisec??c??#@Y@@@Y@@H@sT@@H@sH@s@H@s  0 cccccccc@w*$@%@c @@@@ภ%Errorc??$c??)@Yఐ#locc??*c??-@@@T@ภ7Inconsistent_constraintd??/d??F@  < a?Y@a=BFHYa@Aa@@aఐ$3#envd??Hd??K@$@@#0@ఐ\"trd??Md??O@8@@JaM@@I@sI@sI@s@@I@sF@@&d+??P@@\,@@I@sI@sM@@Zd2??R@@Z@@I@sI@sT@@b@@T@@H@sH@sZ@@d?>>@@  0 d;d:d:d;d;d;d;d;@@@@@@@$@@U @@G@sG@sG@@AdI>u>{dJ??S@@@U
@@G@sm@G@slG@s  0 dMdLdLdMdMdMdMdM@@@@@ఐ";%cstrsd]?T?Zd^?T?_@ ΰ@@U@@G@skG@sG@s@@@@S@@E@sF@sj@డPQ'end_def%Ctyped|?a?ed}?a?r@@P>@@ @(CPB@@ @(B@ @(A@P8iP9i@@P7O@@@@@F@t@@F@t@F@t D@@ภW\d?a?sd?a?u@W[@@@"@@G@t	G@t
T@@+@@S@@E@tF@tZ@ఐF-is_fixed_typed??d??@B@@@\@@F@t\{@@F@t@F@tr@@ఐ$ݠ%sdecld??d??@$@@#@@@@T@@F@tG@t@@ࠠ!pZd??d??@@@MD!t@@ @t:G@t!  0 dddddddd@4@@@@d??d??@@Y0type_declaration@@ @t;G@t"
@@	@@@ @t%@డby1find_type_by_name#Enve??e??@@)Longident!t@@ @
@Y@@ @;@@ @
1@@ @@ @	@ @@ @@W ##W #-#\@@Y |! @@@@@G@t-@Y@@G@t,T@@G@t*J@@G@t+@G@t)@G@t(@G@t'U@@ภ)Longident&LidenteO??eP?@@  < &Lident)Longident!t@@ @@&stringO@@ @
@A@@CC@A5parsing/longident.mli[/3[/C@@@Aడd7!^er?@es?@@@&stringO@@ @@@@ @@@ @@ @@ @@[Tgg[Ugg;@@[S s@@@@@H@tI@@@H@tH@@H@tG@H@tF@H@tE@@డT$name%Idente?@	e?@@T@@@T@@I@tYT@@I@tX@I@tW@@ఐ%"ide?@e?@@%@@&E@tE@t`E@taE@o9@@ 
@@U@@I@tUI@tcJ@t_@@$#rowe?@e?@@@e?@e?@@@a@@I@tTI@teI@td@@e?@ @@@@H@tCH@tgI@tS@@e??e?@!@@@@H@t=H@tB@@ఐ& #enve?@"e?@%@&@@$@@@@G@t9@Ġ)Not_foundf@&@3f
@&@<@  < )Not_found[@@ @ C@@@=SA   @A&_none_@@ A@@[I@@@@eg@@J@tm/@@  ภ[~f%@&@Gf&@&@L@[}@@@]@@H@tt<@f,@&@@@@2G@to@@@f0??@@/B@@f2??
@@ఐDE/set_private_rowf<@V@\f=@V@k@<@@@DA@@F@t@^M@@F@t@I@@F@t~@Y@@F@t}D0@@F@t|@F@t{@F@tz@F@ty@F@tx  0 fQfPfPfQfQfQfQfQ@xr@s@fj @@@@ఐ&#envfd@V@lfe@V@o@&l@@%P@@ఐ&%sdeclfs@V@pft@V@u@&f@@%' @)ptype_locfz@V@vf{@V@@]1
@@^@@G@tG@tG@t.@@ఐ!pf@V@f@V@@8@@I@@G@tG@tG@tB@@ఐ$declf@V@f@V@@@@ZG@@G@tG@tG@tV@@q
@@U@@E@tF@tG@t^@f??f@@@@
@@f??@@@  (   , &typ_id&@@ @'@@ @@@  ( 	  , (typ_name	5#loc5@@ @@@ @@A
@A5wN N$5wN N9@@;zf  , *typ_params/5@@ @5(variance@@ @5+injectivity@@ @@ @@ @@@ @@B-@A5xN:N>5xN:Nv@@;g  , (typ_type94
0type_declaration@@ @@C9@A5yNwN{5yNwN@@;h  , )typ_cstrsE/D5@@ @5@@ @5!t@@ @@ @@@ @@DU@A6
zNN6zNN@@;i  , (typ_kinda@@ @@E^@A6{NN6{NN@@;j  , +typ_privatej6(,private_flag@@ @@Fi@A6|NN6|NO@@;k  , ,typ_manifestu6@@ @@@ @@Gw@A6,}OO6-}OO2@@;l  , 'typ_loc6!t@@ @@H@A68~O3O769~O3OK@@;m  , .typ_attributes6@@ @@I@A6AOLOP6BOLOk@@;n@A6EvNN6FvNN@@;e&typ_idg^@@g_@@@ఐ']"idgg@@gh@@@'.@@{@(typ_namegp@@gq@@@ఐ'%sdeclg{@@g|@@@'n@@&-@*ptype_nameg@@g@@@^
@@^@@F@tF@tF@t@@F@t@*typ_paramsg@@g@@@ఐ''tparamsg@@g@@@&@@Π6@@F@tנ@@F@t٠@@F@t@F@t@F@t@@F@tF@tF@t@ơ(typ_typeg@@g@@@ఐ.$declg@@g@@@@@@@F@tF@tF@t@ӡ)typ_cstrsg@Ag@A@ఐ%%cstrsg@Ag@A@$T@@6@@F@t6@@F@t@@F@t@F@t@@F@tF@uF@t
@ߡ(typ_kindhATAZhATAb@ఐ%tkindhATAehATAj@	z@@@@F@u
F@uF@u&@+typ_privatehAlArhAlA}@ఐ(5%sdeclh&AlAh'AlA@(@@&:@-ptype_privateh-AlAh.AlA@^
@@@@F@uF@uF@uH@,typ_manifesth=A9A?h>A9AK@ఐ	Ġ$tmanhFA9ANhGA9AR@@@7.@@F@u @@F@uF@u#F@u!e@'typ_lochZAAh[AA%@ఐ(t%sdeclheAA(hfAA-@(X@@'y@)ptype_lochlAA.hmAA7@_#
@@1@@F@u)F@u/F@u-@+.typ_attributesh|AAh}AA@ఐ(%sdeclhAAhAA@(z@@'3@0ptype_attributeshAAhAA@_ΰ
@@_@@F@u9@@@h@@(@@(@(@@(@(@@(@(@@(@(@@(@
(@@(E@Y(@@(
@
)(@@(@-(@@(@(@@(@$(@@(%@%)(@@(&`@&(@@('@'3(@@('@(B(@@('@(x(@@('@@A((A@(  0 hhhhhhhh@(@@@@A((A@(  0 hhhhhhhh@(@@@@A((A@@)(@ @uN  0 hhhhhhhh@(@@@@(@((@(ڠ@ࠠ/generalize_decl\hAAhAB@@@@\`@@ @uE@uP[@@ @uE@uQ@ @uRE@uO  0 hhhhhhhh@()/))@)*@h @@@@$decl^hABhAB@@@  0 hhhhhhhh@'hAAhBB@@@@@డg$List$iterhBB
hBB@Y@@@@T)type_expr@@F@uwF@u]Y@@F@u_@F@u^@Y@@F@u\Y@@F@u[@F@uZ@F@uY  0 iiiiiiii@/;L@2@i @@@@డT*generalize%CtypeiBBiBB'@@'@@ @)T@@ @)@ @)@T vT v@@Tr@@@5@@G@ut@@G@us@G@ur*@@ఐk$decli?BB(i@BB,@6@@E@uE@u{E@uxE@uS@@+type_paramsiMBB-iNBB8@\ܰ@@Za@@G@ukG@u|G@uyO@@j@@X@@E@uF@ujU@డX3iter_type_expr_kind%BtypeilB:B<imB:BU@@@V)type_expr@@ @'V@@ @'@ @'@V.type_decl_kind@@ @'V@@ @'@ @'@ @'@X))X)*3@@X d @@@@@@F@u@@F@u@F@u@@@F@u@@F@u@F@u@F@u@@డU*generalize%CtypeiB:BViB:Bf@@@@@@G@u@@G@u@G@u@@ఐ$decliB:BgiB:Bk@@@@)type_kindiB:BliB:Bu@]9
@@R@@G@uG@uG@u@@h
@@Y @@E@uF@u@ఐ$decliBwBiBwB@۰@@@-type_manifestiBwBiBwB@]B
@@]A]v@@ @u@@ @u@Ġ$NoneiBBj BB@^@@@@]U]@@H@u@@H@u  0 jjjjjjjj@ @@@	@@@ภ\ͰjBBjBB@\@@@K	@Ġ$SomejBBjBB@_aࠠ"ty_j%BBj&BB@@@]@@ @u"@@@@@]]@@H@u@@H@u*@@*@@డV*generalize%Ctypej?BBj@BB@%@@@L@@F@u%@@F@u@F@u  0 jEjDjDjEjEjEjEjE@B+%@&@j^ @@@@ఐ3"tyjXBBjYBB@@@g@@G@uG@uG@u@@$
@@E@u@@AjfBwBy@@^@@@_@z@@`@@AA@@@ @u  0 jgjfjfjgjgjgjgjg@@@@@@@'TypeSet`EjxCCjyCC@AРY'TypeSet%BtypejCCjCC&@@  0 jjjjjjjj@@@j @@@@jCC	@
@'TypeMapaFjC'C.jC'C5@AРY'TypeMap%BtypejC'C8jC'CE@@  0 jjjjjjjj@"8A%@ j @@@@jC'C'	@
@Aࠠ5check_constraints_recbjCGCOjCGCd@@@@Q!t@@ @yG@u@b@@ @zG@u@Bi!t@@ @wG@y2@@ @y8G@u@X)type_expr@@ @zG@u]@@ @xG@u@ @v@ @v@ @v@G@v  0 jjjjjjjj@E[AH@Ck @@@@#envcjCGCejCGCh@@@>  0 jjjjjjjj@I@E@=@8@*#@ @u@ @u@ @u@ @v H@u@N@k @@@@@#locdkCGCikCGCl@@@OG@v
  0 kkkkkkkk@*^@!@k/ @@@@@'visitedek)CGCmk*CGCt@@@[G@v  0 k)k(k(k)k)k)k)k)@"@@kB @@@@@"tyfk<CGCuk=CGCw@@@`G@v*G@v  0 k>k=k=k>k>k>k>k>@$@@kW @@@@@ࠠ"tygkQCzCkRCzC@@@.@@ @v)H@v  0 kTkSkSkTkTkTkTkT@'@@km @@@డW>$repr%CtypekiCzCkjCzC@.@@@.@@H@v#.@@H@v"@H@v!@@ఐF"tyk~CzCkCzC@%@@DG@v+G@v+@@@@/,@@kCzC|@@డ#mem'TypeSetkCCkCC@@#elt@@ @w@@@ @w$boolE@@ @w@ @w@ @w@'set.mli P P@@+Stdlib__SetG@@@@@G@w@@@G@w@@G@w@G@w@G@w  0 kkkkkkkk@fsm@n@k @@@@ఐ{"tykCCkCC@@@7@@H@xH@x@@డj>j>lkCCkCC@>i@@@C$G@x@@H@x@H@x,@@ఐϠ'visitedkCC@@@G@y9G@y
G@yG@xG@xG@vC@@#@@D@@n@@[@@G@xH@wJ@ภ^˰l
CClCC@^@@@&R@డj==lCClCC@=@@@C`MG@x@@H@y @=@@H@x@H@x@H@xm@@ఐ'visitedl5CCl6CC@@@>z@@డ#add'TypeSetlGCClHCC@@@@ @w@y@@ @w|@@ @w@ @w@ @w@ S9= S9S@@H@@@@@I@y@@@I@y@@I@y@I@y@I@y@@ఐ""tylsCCltCC@@@@@J@y)J@y(@@డkL??lCClCC@?@@@Cˠ@@J@y3@J@y1@@ఐt'visitedlCC@U@@@@@@@@V@@@@G@y!@@l@@[@@G@yCH@y	@ఐ`"tylCClCC@@@`;@@H@yH @yF@$desclCClCC@P5@@P1@@ @yG@Ġ'TconstrlDDlDD@Pࠠ$pathlDDlDD@@@P@@ @yQ  0 llllllll@@@@ࠠ$argslDDlDD@@@P`o@@ @yS@@ @yR@@lDDlDD@@PP@@J@yU@@J@yT@@@.lDD@@Pm@@J@yV#@@#@@@ࠠ$declm	D D*m
D D.@@@U@@ @yzI@yj  0 mmmmmmmm@UB<@=@m& 60@1@m( @@@డj)find_type#Envm&D1D=m'D1DJ@U@@@U@@I@yp@a@@I@yoU@@I@yn@I@ym@I@yl%@@ఐj$pathm@D1DKmAD1DO@.@@U@@J@y|J@y~J@y}9@@ఐ]#envmTD1DPmUD1DS@9@@G@yG@y{G@yG@vM@@9
@@QN@Ġ)Not_foundmgDTDamhDTDj@[@@@@l@@L@y\@@డl;%raisemvDnDxmwDnD}@cW@@@cW@@J@ytI@yJ@y@J@yq@@ภ%ErrormDnDmDnD@c=ఐ#locmDnDmDnD@g@@G@zG@yG@yG@v
@ภ<Unavailable_type_constructormDnDmDnD@  < iUc.@iSAQHYa@AiM@@iJఐܠ$pathmDnDmDnD@@@ib@@K@yK@yK@y@@
@@e@@K@yK@y@@mDnD~mDnD@@c@@K@yK@y@@U@@K@@mD1D9	@@@@mD D&@@@ࠠ#ty'mDDmDD@@@TR@@ @yI@y  0 mmmmmmmm@@@m @@@డY)newconstr%CtypemDDmDD@T@@@T@@I@y@T{Tx@@I@y@@I@yTv@@I@y@I@y@I@y$@@ఐ9$pathnDDnDD@@@T@@J@yJ@yJ@y8@@డY-instance_list%Ctypen(DDn)DD@@TY)type_expr@@ @)0@@ @)/TY)type_expr@@ @).@@ @)-@ @),@Y Y @@Y|@@@@@J@y@@J@y@@J@y@@J@y@J@yu@@ఐY$declnbDDncDD@@@b@@K@y @y@+type_paramsnnDDnoDD@a@@HG@@K@y@@K@yK@yK@y@@n}DDn~DD@@UU @@J@y@@J@yJ@yJ@y@@
@@@@nDD@@డZr'matches%CtypenEEnEE%@@@@ @*A@Z^)type_expr@@ @*@@Ze)type_expr@@ @*?Zp@@ @*>@ @*=@ @*<@ @*;@Zf *&*&Zg *&*Z@@Ze ]@@@@@I@y@@@I@y@@@I@y@@I@y@I@y@I@y@I@y  0 nnnnnnnn@@@n @@@@ఐ堐#envnEE&nEE)@@@@@ఐ"tynEE*nEE,@+@@I@@J@yJ@yJ@y%@@ఐ$#ty'nEE-nEE0@/@@V@@J@yJ@yJ@y9@@k
@@^T@@H@zFI@y?@Ġ%Ctype/Matches_failureoE1E>oE1ES@  < /Matches_failureU@@ @(9@V!t@@ @(6U!tU#+unification@@ @(8@@ @(7@BU@   @AU@@ZKࠠ#envo=E1EUo>E1EX@@@!@@ @zu@ࠠ%traceoJE1EZoKE1E_@@@'$@@ @z@@ @z@@@>oUE1E`@@n@@L@z@@డn'%raiseobEdEnocEdEs@eC@@@eC@@J@zfI@z	J@z
@J@z  0 oiohohoioioioioi@82@3@o -'@(@o @@@@ภ%Erroro~EdEuoEdEz@e0ఐv#locoEdE{oEdE~@Z@@@ภ1Constraint_failedoEdEoEdE@1ఐ_#envoEdEoEdE@-@@m@@K@z&K@z*K@z)8@ఐd%traceoEdEoEdE@=@@m@@K@z(K@z3K@z1@@K@z0N@@+oEdE@@g@@K@zK@z%U@@oEdEtoEdE@@e@@K@zK@z]@@j@@`^@@oE EoEE@@  0 oooooooo@@@@డn$List$iteroEEoEE@`@@@@G@zsG@zL`@@H@zN@H@zM@`@@H@zK`@@H@zJ@H@zI@H@zH#@@ఐC5check_constraints_recoEEoEE@ @@@A@;@6@(!@J@zb@J@za@J@z`@J@z_:@@ఐ#envpEEpEE@@@TG@@ఐ#locp EEp!EE@@@WT@@ఐ'visitedp-EEp.EE@@@]a@@p1EEp2EE@@@TM@I@zpf@@ఐ[$argsp?EEp@EE@+@@`f@@I@zZI@ztI@zr{@@o@@eG@xG@zY@@@@@@o@@@@@Ġ%Tpolyp[EEp\EE@<ࠠ"typdEEpeEE@@@c@@ @y]@ࠠ"tlpqEEprEE@@@<ʠc@@ @y_@@ @y^@@@!p|EE@@S@@J@y`@@@@@@pEF	pEF
@@W
\H)type_expr@@ @z@@ @zI@zy  0 pppppppp@:4@5@p /)@*@p @@@ࠠ"typEFpEF@@@\a)type_expr@@ @zI@zz@@'
@@(@ @z}@డ\-instance_poly%CtypepEFpEF$@*keep_names\$boolE@@ @)@@ @)@	@@ @)@WY\)type_expr@@ @)@@ @)@\)type_expr@@ @)`_@@ @)~@@ @)}K@@ @)@ @)|@ @){@ @)z@ @)y@ @)x@\ \ Q@@\ E=<@@:\ˠ8@@I@z@@I@z@5@@I@z@43@@I@z@@I@z@1@@I@z@@I@z@@I@zz@@I@z@I@z@I@z@I@z@I@z@I@z@dภ^,qe@q@\f@@J@z@@J@z@@ภfq<EF%q=EF*@f@@@n@@J@zJ@z@@ఐݠ"tlqNEF+qOEF-@@@|{@@J@z@@J@zJ@zJ@z@@ఐ"tyqfEF.qgEF0@ΰ@@@@J@zJ@zJ@z@@
@@I@z@@qtEF@@ఐà5check_constraints_recq~F4F:qF4FO@@@@@@@@G@zG@z\@H@z@H@z@H@z@H@z  0 qqqqqqqq@@@q @@@@ఐ#envqF4FPqF4FS@@@@@ఐ#locqF4FTqF4FW@z@@@@ఐ'visitedqF4FXqF4F_@r@@+@@ఐ"tyqF4F`qF4Fb@5@@I@z:@@J@@?;@U@@@2@@qFcFgqFcFh@@UB@@J@yb@@@@డa.iter_type_expr%BtypeqFlFrqFlF@@@@@ @%_@@ @%@ @%@_)type_expr@@ @%_@@ @%@ @%@ @%@a lBBa lB~@@a
a@@@@@@H@z@@H@z@H@z@@@H@z@@H@z@H@z@H@zR@@ఐa5check_constraints_recrFlFrFlF@@@@_@W@R@B@J@z@J@z@J@z@J@zi@@ఐ:#envr1FlFr2FlF@@@rv@@ఐ,#locr>FlFr?FlF@@@u@@ఐ&'visitedrKFlFrLFlF@@@{@@rOFlFrPFlF@@@n@I@z@@ఐ"tyr]FlFr^FlF@@@t@@I@zI@{I@{@@
@@G@z@@ArkCC@@  0 rgrfrfrgrgrgrgrg@@@@rnCCroFF@@#@rqCC@@@@@@@A8A@G@v  0 rqrprprqrqrqrqrq@3@@@@AO	A@G@v  0 rurtrtrururururu@L@@@@Af
A@G@v  0 ryrxrxryryryryry@c@@@@AA@@@ @{*  0 r}r|r|r}r}r}r}r}@@@@@rCGCG@@@@ࠠ8check_constraints_labelsrFFrFF@@@@@@ @}/G@{0@I@@ @}-@@ @},G@{7@ccGO@@ @}G@|@@ @|G@{>@rAG{@@ @}J@@ @}IG@{Ect@@ @|G@{F@ @{GG@{?@ @{@G@{8@ @{9G@{1@ @{2G@{/@@#envrFFrFF@@@@  0 rrrrrrrr@LrFFrHH@@@@@@'visitedrFFrFF@@@J  0 rrrrrrrr@ V@@r @@@@@!lrFFrFF@@@N  0 rrrrrrrr@^@@s @@@@@"pls
FFsFF@@@P  0 ssssssss@b@@s! @@@@Aࠠ'get_locsFFsFF@@@@F@@ @{}H@{M@rG@@ @{@@ @{H@{OT@@ @{H@{N@ @{S@H@{R  0 s0s/s/s0s0s0s0s0@)5{@,@sI @@@@$namesCFFsDFF@@@&  0 sAs@s@sAsAsAsAsA@1@-@(@ @{P@ @{QI@{L@2@s` @@@@@fĠGzsZGGs[GG@Gy@@@@6H@{\  0 sZsYsYsZsZsZsZsZ@&B@@ss @@@@  ภhðsjGGskGG#@h@@@k'@@I@{j@sqGG@@DH@{ZH@{e@Ġ-|s|G$G.s}G$G0@5~ࠠ#pldsG$G*sG$G-@@@^H@{]  0 ssssssss@+@@@ࠠ"tlsG$G1sG$G3@@@s@@ @{a@@@@@=@@డrjRàRŰsG7GGsG7GH@R°@@@H@{q@R@@I@{p@I@{o@I@{n  0 ssssssss@R1+@,@s & @!@s @@@@ఐ$namesG7GBsG7GF@a@@H@{U@@ఐN#pldsG7GIsG7GL@#@@N'@(pld_namesG7GMsG7GU@GV
@@GR@@J@{|2@#txtsG7GVsG7GY@G@@J@{;@@+@@c@@I@{J@{yA@ఐv#pldsG7G_sG7Gb@K@@vH@{~P@(pld_typetG7GctG7Gk@Gd@@k@@I@{ @{\@(ptyp_loctG7GltG7Gt@UѰ@@c@ఐ'get_loctGuGtGuG@ְ@@@@@I@{@I@{t@@ఐ$namet-GuGt.GuG@ΰ@@@@ఐ"tlt:GuGt;GuG@@@@@"@@@t?G7G?@@@@AtAFG@@H@{[@@A
A@@%"@ @|  0 tBtAtAtBtBtBtBtB@@@@@tIFF@@డs$List$itertVGGtWGG@e@@@@e@@G@|@G@|@e@@G@|e@@G@|@G@|@G@|  0 tdtctctdtdtdtdtd@#@@@@@g6ঠ%Types%ld_idt|GGt}GG@@xࠠ$nametGGtGG@@@@|@@ @}!@'ld_typetGGtGG@@sࠠ"tytGGtGG@@@h @@ @}5@@@tGGtGG@@8@@ఐ	5check_constraints_rectGGtGG@	@@@	@@H@}@l@@H@}@K	@@H@}@@H@}@	@@H@}g@@H@}@H@}@H@}@H@}@H@}  0 tttttttt@KE@F@t 93@4@t @@@@ఐ#envtGGtGG@@@FG@}0G@{3@@ఐР'get_loctGGtGG@@@@H`@@I@}9@twI@@I@}8@@I@}7V@@I@}6@I@}5@I@}47@@డd$name%IdentuGGuGH@d @@@d @@J@}Qc@@J@}P@J@}OQ@@ఐ$nameu#GHu$GH@Z@@d@@K@}XK@}ZK@}Ye@@u.GGu/GH	@@H@@J@}KJ@}\K@}Wo@@ఐ;"pluAGH
uBGH@@@G@}]G@{H@@uHGGuIGH
@@W@@I@}H@@ఐs'visiteduWGHuXGH@[@@G@}eG@{:@@ఐϠ"tyugGHuhGH@@@
@@I@}+I@}hI@}g@@
@@f/@@H@}lH@}k@@AuxGGuyGH@@@f9@@H@|@H@|H@}n;@@ఐ!luHH@}@@G@}pG@{A'@@;@@K@I@@]@@AA@  0 uuuuuuuu@@@@@AA@  0 uuuuuuuu@@@@@AA@  0 uuuuuuuu@@@@@AA@@@ @}y  0 uuuuuuuu@@@@@@@
@ࠠ1check_constraintsu H!H%u H!H6@@@@
@@ @  G@}{@m@@ @  G@}@@ @}ii@@ @  G@}@ @}G@}h@@ @  G@}@ @}G@}@ @}G@}|@ @}}G@}z  0 uuuuuuuu@
HB@C@u @@@@#envu H!H7u H!H:@@@5  0 uuuuuuuu@Au H!H!u8OO@@@@@@%sdeclu H!H;u H!H@@@@?  0 uuuuuuuu@ K@@v @@@@@h@v H!HBv H!HC@@A  0 vvvvvvvv@R@@v @@@ࠠ$declv H!HEv H!HI@@@L@@v H!HAv H!HJ@@US@I@}@@@ࠠ'visitedv&HMHSv'HMHZ@@@MkX@@ @}H@}@@ @}H@}  0 v/v.v.v/v/v/v/v/@.(n@#@vH @@@డu#refvAHMH]vBHMH`@M@@@M@@H@}@H@}@@డ%empty'TypeSetvWHMHavXHMHn@@@ @w@
 Jcg
 Jcs@@
E
@@2.@@"@@8/@@vdHMHO
@@డu6$List%iter2vsHrHtvtHrH~@@@!a @"@!b @"g?@@ @#@ @#@ @#@g=@@ @#@gD@@ @#gQ@@ @#@ @#@ @#@ @#@gB 00gC 0l@@gA],+@@@@m@@H@~H@}ɠm@@H@~m@@H@~@H@~H@}@H@}H@}@@@H@}H@}=@@H@}@H@}@H@}@<&@@H@}@;@@H@}:@@H@}@H@}@H@}@H@}  0 vvvvvvvv@@@v @@@@@iࠠ#styvHHvHH@@@C@@vHHvHH@@B@@vHHvHH@@NI@K@}$@@@"tywHHwHH@@@HH@}  0 ww w wwwww@4$a@@w @@@@ఐX5check_constraints_recwHHwHH@@@@V@@I@}@o$@@I@}@NbM@@I@}@@I@}@H@@I@}i@@I@}@I@}@I@}@I@}@I@}  0 w,w+w+w,w,w,w,w,@,:0@1@wE@@@@ఐb#envw?HHw@HH@H@@G@   G@  PG@  QG@  G@  G@  G@  G@  G@  G@}G@}G@}~(@@ఐ}#styweHHwfHH@_@@7@(ptyp_locwlHHwmHH@Y.
@@oz@@J@}J@~J@~ E@@ఐZ'visitedwHHwHH@@@NǠ@@J@}@@J@}J@~J@~]@@ఐ"tywHHwHH@g@@H@~H@}m@@@@@@I@~I@~
s@@AA@@%@@I@~@I@~I@~  0 wwwwwwww@@@@@AwHHwHH@@@@2@@I@}@I@}@I@}I@~  0 wwwwwwww@@@@@ఐ֠%sdeclwHHwHH@@@G@  $G@~G@~G@~G@}@,ptype_paramswHHwHH@n@@S=@@I@}I@~I@~@@ఐ۠$declwHHwHH@@@'@+type_paramswHHwHH@k
@@jB@@I@}I@~$I@~!,@@@@gL@@G@~'H@}L@ఐ $declxHIxHI@ް@@NG@~,G@~#_@)type_kindxHIxHI@k
@@k@@ @~+i@Ġ-Type_abstractx,IIx-II&@d@@@@k@@K@~:  0 x-x,x,x-x-x-x-x-@_@@@@@@ภjx8II*x9II,@j@@@g@@G@  H@~v@Ġ,Type_variantxJI-I1xKI-I=@ࠠ!lxSI-I?xTI-I@@@@
*@@ @~K@@ @~J  0 xXxWxWxXxXxXxXxX@@@@ࠠ$_repxeI-IBxfI-IF@@@@@ @~L@@@"xlI-IG@@k@@K@~M@@@@@ࠠ'find_plxzIKIUx{IKI\@@@@o\@@ @~~J@~{i~i}@@ @~@@ @~J@~|@ @~}J@~z  0 xxxxxxxx@C=@>@x3-@.@x@@@@k_Ġ-Ptype_variantx	IhIrx	IhI@iࠠ"plx	IhIx	IhI@@@ii@@ @~@@ @~  0 xxxxxxxx@&?xIKIQx
II@@@@@@@@8@@ఐ"plx	IhIx	IhI@@@x@@?  0 xxxxxxxx@#@@@Ġ,Ptype_recordx
IIx
II@3[@x
IIx
II@@3]M@@O@~@@O@~/@@@	@@a0@Ġ.Ptype_abstractx
IIx
II@W@@@@j9@@@@k:@Ġ*Ptype_openx
IIx
II@3@@@@tC@@#@@uD@@  ภnXx
IIG@nV@H@@p@@K@~P@y
IIM@@J@~T@@Ay	IKI_Q@@@@ @~  0 yyyyyyyy@X@@@@V@@ࠠ"plyIIyII@@@jj@@ @~@@ @~J@~  0 yyyyyyyy@@@y7@@@ఐ'find_ply0IIy1II@
@@@p@@J@~j.j-@@J@~@@J@~@J@~@@ఐ[%sdeclyKIIyLII@D@@+@*ptype_kindyRIIySIJ @p/
@@p2@@K@~K@~K@~9@@-
@@A:@@y^II@@@ࠠ(pl_indexyi
JJyj
JJ@@@M_#Map!tjg@@ @  @@ @  J@~  0 ytysysytytytytyt@Whb@c@y@@@@ࠠ%foldfyJJ%yJJ*@@@@"j@@ @  \@@ @  mK@~@
K@~1K@  @@ @  PK@~@ @~K@~@ @~K@~,@@#accyJJ+yJJ.@@@$  0 yyyyyyyy@:0yJJ!yJ3J`@@@@@@!x yJJ/yJJ0@@@*  0 yyyyyyyy@ :@@y	@@@@డx#Map#add&StringyJ3J=yJ3JK@@o#key@@ @  @!a @@|	@@ @  
@@ @  
@ @  	@ @  @ @  @'map.mli S S@@+Stdlib__MapH! @@@@@K@  @^@c@@K@  g@@K@  @K@  @K@  @K@    0 zzzzzzzz@FRr@I@z
@@@@ఐ^!xzJ3JLzJ3JM@@@K@  YK@~@(pcd_namez&J3JNz'J3JV@j>
@@j=Q@@L@  eL@  [@@L@  Z(@#txtz6J3JWz7J3JZ@Mk@@
L@  ]0@@ఐ!xzDJ3J[zEJ3J\@:@@=@@ఐ#acczQJ3J]@@@K@~J@@}@@K@@AA@  0 zQzPzPzQzQzQzQzQ@@@@@AA@@@ @  x  0 zUzTzTzUzUzUzUzU@@@@@@డy*$List)fold_leftzgJlJtzhJlJ@@@!a @"@!b @"
@ @#@ @#@@k/@@ @#@ @#@ @#@ @#@k) k* @@k([@@@@J@  ~@J@  @J@  @J@  @@	@@J@  @J@  }@J@  |@J@  {  0 zzzzzzzz@ @@z@@@@ఐ%foldfzJlJzJlJ@@@@=k@@K@  @@K@  @F	@@K@  @K@  @K@   @@డy#Map%empty&StringzJlJzJlJ@]!a @@@ @@ I I@@E@@jhJ@  @@J@  F@@ఐѠ"plzJlJzJlJ@o@@sd@@K@  K@  K@  [@@@@\@?@@|@@z
JJ
@@డy$List$iter{JJ{JJ@kɰ@@@@-e@@I@  I@  k@@I@  @I@  @kǠ
@@I@  k@@I@  @I@  @I@    0 {{{{{{{{@@@{/@@@@@mঠ%Types%cd_id{1JJ{2JJ@#ࠠ$name{9JJ{:JJ@@@#@@ @  $@'cd_args{EJJ{FJJA#ࠠ@@EV@@ @  4@&&cd_res{UJJ{VJJA#ࠠ@@#Ϡn@@ @  @@ @  H@@@{dJJ{eJJ@@ZK@@@ঠ(pcd_args{rJJ{sJKAkzࠠ@@k}@@ @    0 {w{v{v{w{w{w{w{w@dKE@F@{97@8@{+)@*@{
@@@'pcd_res{JK{JK
Akࠠ@@kr@@ @  @@ @  @@A{JJ{JK@@l@@ @  $@డy#Map$find&String{KK!{KK0@@@@ @  @M!a @'@@ @  @ @  @ @  @++++@@`@@@@@K@  @a9K@  K@  @@K@  @K@  @K@  [@@డj$name%Ident{KK2{KK<@jذ@@@j@@L@  j@@L@  @L@  u@@ఐ $name{KK={KKA@}@@j@@M@  M@  
M@  @@|KK1|KKB@@-@@L@  L@  
@@ఐ(pl_index|KKC|KKK@@@I@@L@  @@n@@K@Ġ)Not_found|'KLK]|(KLKf@@@@@{v@@N@  '@@  ภq|4KLKq|5KLKv@q@@@s@@L@  .@|;KLKj@@K@  )@@|?KK@@l@@|AJJ
@@ఐ'cd_args|PKzK|QKzK@а@@F]@@ @  9  0 |Q|P|P|Q|Q|Q|Q|Q@@@|k@@|m@@@ఐ렐(pcd_args|eKzK|fKzK@@@ll@@ @  :@@@@@ @  ;@Ġ*Cstr_tuple|}KK|~KK@Egࠠ#tyl|KK|KK@@@Ekp@@ @  J@@ @  I  0 ||||||||@:@@@@@@@F@@N@  K@Ġ+Pcstr_tuple|KK|KK@Ffࠠ$styl|KK|KK@@@Fjs@@ @  Q@@ @  P@@@
@@l@@N@  R#@@7@@%@N@  S(@@(@@డ{$List%iter2|KK|KK@Q@@@@s@@L@  L@  @@@L@  L@  S@@L@  @L@  @L@  @R@@L@  @Q@@L@  ~P@@L@  }@L@  |@L@  {@L@  z  0 ||||||||@jd@e@|MG@H@} @@@@@#sty|KL|KL@@@5@@@"ty}
KL	}KL@@@;L@    0 }
}	}	}
}
}
}
}
@'G@@}#@@@@ఐa5check_constraints_rec}LL"}LL7@@@@_@@M@  @u-@@M@  @TkV@@M@  @@M@  @Q@@M@  o@@M@  @M@  @M@  @M@  @M@    0 }5}4}4}5}5}5}5}5@,:0@1@}N@@@@ఐk#env}HLL8}ILL;@Q@@@@ఐ^#sty}WLL<}XLL?@H@@L@  L@  #@(ptyp_loc}aLL@}bLLH@_#
@@uo@@N@  N@  N@  1@@ఐO'visited}uLLI}vLLP@@@T@@N@  @@N@  N@  N@  I@@ఐ"ty}LLQ}LLS@S@@L@  L@  Y@@x@@@@M@  M@  _@@AA@@@@M@  @M@  M@    0 }}}}}}}}@@@@@A}KL }LLT@@@@'@@M@  @M@  @M@  M@    0 }}}}}}}}@@@@@ఐ$styl}LULe}LULi@Ͱ@@6@@M@  M@  M@  @@ఐH#tyl}LULj}LULm@@@D@@M@  M@  M@  @@@@m&@@J@  \K@  1@Ġ+Cstr_record}LnLz}LnL@E(ࠠ#tyl}LnL}LnL@@@E/R@@ @  b@@ @  a@@@
@@H
@@N@  c@Ġ,Pcstr_record~
LnL~LnL@Fࠠ$styl~LnL~LnL@@@FR@@ @  i@@ @  h@@@
@@n"@@N@  j@@6@@%@N@  k@@@@ఐ8check_constraints_labels~/LL~0LL@\@@@r@@L@  @Uyd@@L@  @@L@  @nR@@L@  @@L@  @}͠S@@L@  @@L@  n@@L@  @L@  @L@  @L@  @L@    0 ~P~O~O~P~P~P~P~P@ga@b@~jKE@F@~l@@@@ఐ#env~fLL~gLL@o@@@@ఐM'visited~sLL~tLL@@@U@@M@  @@M@  M@  M@  ,@@ఐ#tyl~LL~LL@5@@oES/@@M@  @@M@  M@  #M@  !D@@ఐ$styl~LL~LL@K@@~,Sf@@M@  @@M@  M@  'M@  %\@@@@K@  _@@~ LL~ LL@@H@@N@  pn@@N@  q@N@  op@
@
p@@  ภt&~ LL~ LL@t%@@@v@@L@  /}@~ LL@@K@  *@@A~KzK~!LM@@   0 ~~~~~~~~@@@@ఐS'pcd_res~"M	M~"M	M @@@o8u@@ @  b@@ @  a@ఐ&cd_res~"M	M"~"M	M(@w@@'or@@ @  d@@ @  c)@@
@@@ @  e.@Ġ$Some#M.M:#M.M>@tZࠠ"sr#M.M?#M.MA@@@v3@@ @  wJ@@@@@osv:@@M@  y@@M@  xR@Ġ$Some3#M.MC4#M.MG@txࠠ!r<#M.MH=#M.MI@@@r@@ @  ~h@@@@@'r@@M@  @@M@  p@@6@@)@M@  u@@u@@ఐ5check_constraints_recX$MMM[Y$MMMp@Z@@@@@K@  @wi@@K@  @V@@K@  @@K@  @@@K@  r-@@K@  @K@  @K@  @K@  @K@    0 qppqqqqq@"_Y@Z@C=@>@@@@@ఐ	#env$MMMq$MMMt@	@@<@@ఐx"sr$MMMu$MMMw@@@v@@L@   @  (@(ptyp_loc$MMMx$MMM@ad@@w@@L@  L@  L@  6@@ఐ	'visited$MMM$MMM@@@V@@L@  @@L@  L@  L@  N@@ఐ!r$MMM$MMM@U@@@@L@  L@  L@  b@@
@@p@@K@  K@  h@@%MM%MM@@p7v@@M@  @@M@  (dsy@@M@  @@M@  @M@  @@@@ภr&MM&MM@r@@@'K@  (@@A"M	M@@p@@J@    0 @@@@1@@@@@p@@J@  J@  @@AJJ&MM@@@p@@J@  @J@  J@    0 @@@@@ఐѠ!l$'MM%'MM@@@pޠ$@@J@  J@  J@  @@-@@H@  @=@@@@@@}@@@Ġ+Type_record?(MM@(MM@"]ࠠ!lH(MMI(MM@@@"dT@@ @~^@@ @~]@@U(MMV(MM@@#@@K@~_@@@[(MM@@s@@K@~`@@@@@ࠠ'find_pli)MMj)MM@@@@wK@@ @  J@  :U3@@ @  @@ @   J@  @ @  J@    0 yxxyyyyy@	<6@7@@@@@sK Ġ,Ptype_record*MM*MN@;ࠠ"pl*MN*MN	@@@;UU@@ @  @@ @    0 @#<)MM+NNW@@@@@@@@5@@ఐ"pl*MN
*MN@@@@@<  0 @#@@@Ġ-Ptype_variant+NN+NN'@q@+NN(+NN)@@qq@@O@  @@O@  /@@@	@@^0@Ġ.Ptype_abstract+NN,+NN:@_@@@@g9@@@@h:@Ġ*Ptype_open+NN=+NNG@;@@@@qC@@#@@rD@@  ภvD+NNRG@vB@H@@x@@K@  P@+NNKM@@}J@  T@@A)MMQ@@@@ @    0 @X@@@@V@@ࠠ"pl-NaNk-NaNm@@@;U@@ @   @@ @  J@    0 
		




@@@#@@@ఐ'find_pl-NaNp-NaNw@
@@@w@@J@  ;U@@J@  @@J@  @J@  @@ఐG%sdecl7-NaNx8-NaN}@0@@	k+@*ptype_kind>-NaN~?-NaN@x
@@x@@K@  !K@  %K@  #9@@-
@@A:@@J-NaNg@@ఐà8check_constraints_labelsT.NNU.NN@@@@@@I@  4@X@@I@  3@@I@  2@rV@@I@  1@@I@  0@V,@@I@  /@@I@  .r#@@I@  -@I@  ,@I@  +@I@  *@I@  )  0 uttuuuuu@l}w@x@@@@@ఐ#env.NN.NN@@@
9@@ఐo'visited.NN.NN@
°@@Xܠ@@J@  O@@J@  NJ@  TJ@  R)@@ఐe!l.NN.NN@/@@rgVQ@@J@  M@@J@  LJ@  XJ@  VA@@ఐ "pl.NN.NN@K@@NV@@J@  K@@J@  JJ@  \J@  ZY@@@@	H@  I\@@@@4@@Z@Ġ)Type_open/NN/NN@#@@@@uQ@@K@~n
/@@
/@@ภt/NN/NN@t@@@	H@  b
9@@AHH0NN@@		@ఐ$decl 1NN1NN@̰@@		@-type_manifest1NN1NN@u^
@@u]u@@ @  @@ @  	@Ġ$None2NO2NO@v@@@@uqu@@J@  @@J@    0       @R@@@	@@@ภt+2NO	,2NO@t@@@^	@Ġ$Some83OO93OO@w}ࠠ"tyA3OOB3OO@@@u@@ @  
@@@@@uu@@J@  @@J@  
@@
@@@ࠠ#styY4OO%Z4OO(@@@yp@@ @  I@    0 \[[\\\\\@& @!@u@@@ఐ%sdeclp5O+O9q5O+O>@i@@
  0 nmmnnnnn@@@@.ptype_manifestx5O+O?y5O+OM@y?@@y>y@@ @  @@ @  @Ġ$Some5O+OS5O+OW@wѠࠠ#sty5O+OX5O+O[@@@y@@ @  (@@@@@y_y@@L@  @@L@  0@@0@@ఐ#sty5O+O_5O+Ob@@@@@Q  0 @O @@@@5O+Oe5O+Of@@y|y@@L@  @@L@  M@
@M@@  ภx 5O+Oq5O+Ov@x@@@z@@J@  Z@5O+Oj@@sI@  ^@@A5O+O3@@ur@@4OO!
@@ఐ#5check_constraints_rec7OO7OO@@@@!@@H@  @z@@H@  @Z-@@H@  @@H@  @@@H@  u@@H@  @H@  @H@  @H@  @H@    0 @@@@@@@ఐ
-#env
7OO7OO@
@@@@ఐ#sty7OO7OO@@@z0@@I@   @  %@(ptyp_loc%7OO&7OO@d@@{3@@I@  I@  I@  3@@ఐ
'visited97OO:7OO@f@@Zk@@I@  @@I@  I@  
I@  K@@ఐ"tyQ7OOR7OO@@@u@@I@  I@  
I@  _@@~
@@
G@  b@
@@@@A`1NN
x@@
<@o
y@@
=@
z@@
>@
 
{@@

0@@A
O
|A@
  0 `__`````@
^@@@@A
s
~A@
  0 baabbbbb@
p@@@@A

A@@

@ @  .  0 feefffff@
@@@@
@

@
@ࠠ/check_coherencex?PzP~y?PzP@@@@#Env!t@@ @  3G@  0@{@@ @  G@  7@$Path!t@@ @  'G@  >@%Types0type_declaration@@ @  
G@  Er@@ @  oG@  F@ @  GG@  ?@ @  @G@  8@ @  9G@  1@ @  2G@  /  0 @
@@ @@@@#env?PzP?PzP@@@E  0 @Q?PzPz_UU@@@@@@#loc	?PzP?PzP@@@J  0 @ [@@ @@@@@%dpath
?PzP?PzP@@@R  0 @^@@!@@@@@$decl?PzP?PzP@@@U  0 @f@@
"@@@@ఐ$decl@PP@PP@e@@#@@oG@  /G@  G@  G@  OG@  H  0 @(@@@ঠ)type_kind"APP#APP@wĠ,Type_variant.APP/APP@(@3APP4APP@@(6@@L@  _@@L@  ^(@@@*x@@L@  `-@@@@@w@@L@  a1@Ġ+Type_recordKAPPLAPP@&i@PAPPQAPP@@&kX@@L@  m@@L@  lE@@@'@@L@  nJ@@@@@w@@L@  oN@@5@@w@@K@  pR@Ġ)Type_openlAPPmAPP@&@@@@w@@K@  y^@@sAPPtAPP@@w@@J@  zd@-type_manifest~BPPBPQ@wĠ$SomeBPQ
BPQ@yˠࠠ"tyBPQBPQ@@@x@@ @  @@@@@wx@@J@  @@J@  @@@APPBPQ@@@@@@డp$repr%CtypeCQQ*CQQ4@G@@@G@@J@  G@@J@  @J@    0 @2,@-@$@@@@ఐ:"tyCQQ5CQQ7@@@H	@@K@  K@  K@  @@CQQ)CQQ8@@x]@@I@   @   @$descCQQ9CQQ=@hW@@hS@@ @  *@Ġ'TconstrDQCQKDQCQR@h2ࠠ$path
DQCQSDQCQW@@@h6@@ @  C@ࠠ$argsDQCQYDQCQ]@@@h:x@@ @  @@ @  T@@DQCQ_DQCQ`@@h=h8@@K@  @@K@  `@@@-DQCQa@@h@@K@  e@@e@@@ࠠ%decl',FQyQ-FQyQ@@@m@@ @  J@    0 /../////@{C=@>@I%82@3@K&@@@డ)find_type#EnvGFQyQHFQyQ@m@@@m@@J@  @y@@J@  m@@J@  @J@  @J@  #@@ఐi$pathaFQyQbFQyQ@,@@m@@K@  K@  K@  7@@ఐ#envuFQyQvFQyQ@@@G@  ?G@  G@  G@  G@  G@  G@  G@  3S@@A@@WT@@FQyQ@@@ࠠ#errGQQGQQ@@@}Y+Includecore-type_mismatch@@ @  J@  @@ @  J@    0 @t{@|@'@@@డ{"<>HQQHQQ@v#@@@tB@@J@  J@  @v$@@J@  @J@  @J@    0 @@@@@డ$List&lengthHQQHQQ@tD@@@tDyd@@K@  K@  @@K@  th@@K@  @K@  !@@ఐ렐$argsHQQHQQ@@@ta@@L@  L@  L@  6@@'@@?7@@డ$List&lengthHQQHQQ@tz@@@tzy@@K@  K@  @@K@  t@@K@  @K@  W@@ఐ6$decl(HQQ)HQQ@"@@f@+type_params/HQQ0HQR@y
@@t&@@L@  L@  L@  u@@0@@L@  x@@i@@v@@J@  K@  ~@ภ$SomeIIRRJIRR@{ภ+Includecore%ArityTIRRUIRR,@  < %Arity@@ @
@@@@DHL@A6typing/includecore.mli QQS QQZ@@@r@
@@J@  @@@@@డrI%equal%CtypetKRFR\uKRFRg@@m`!t@@ @*@@@ @*@mrB)type_expr@@ @*@@ @*@mrN)type_expr@@ @*@@ @*rZ@@ @*@ @*@ @*@ @*@ @*@rP	00rQ	00^@@rO u21@@@/@@K@  @,@@K@  @+*@@K@  @@K@  @('@@K@  @@K@  %@@K@  @K@  @K@  @K@  @K@   @@ఐ#envKRFRhKRFRk@@@V
@@ภ|3KRFRlKRFRq@|2@@@^@@L@  L@  @@ఐ砐$argsKRFRrKRFRv@@@lk@@L@  @@L@  L@  L@  5@@ఐ$declKRFRwKRFR{@ @@D@+type_params
KRFR|KRFR@z
@@@@L@  @@L@  L@  L@  V@@@@@@ @  Z@Ġ%Ctype(Equality+LRR,LRR@  < (Equalitym-@@ @(&@m*!tm0*comparison@@ @(%@@ @($@Am(@   @Am&@@rDࠠ%trace"JLRRKLRR@@@@@ @  @@ @  @@@*
@@@@M@  @YLRR@@@@L@  @@ภ$SomecMRRdMRR@|ภ+Includecore*ConstraintnMRRoMRR@  < *Constraint@!t@@ @
t*Errortrace!t*comparison@@ @
v@@ @
u@B@DHL@A. Tpr/ Tp@@@uఐ٠#envMRRMRR@@@  0 @UO@P@)@@@ఐ[%traceMRRMRR@@@u-@@K@  K@  K@  @@K@  @@MRRMRR@@J@  K@  !@@X@@&J@  J@  %@ĠzNS SNS S@z@@@@-@@M@  @@@@డV1type_declarations+IncludecoreOSS,OSSI@(equality&optionJ$boolE@@ @
@@ @
#loc(Location!t@@ @
@z@@ @
$mark@@ @
@&stringO@@ @
@%Types0type_declaration@@ @
@$Path!t@@ @
@0type_declaration@@ @
I@@ @
@@ @
@ @
@ @
@ @
@ @
@ @
@ @
@ @
@ @
@ b

 fL@@]\@@ZXU@@K@  @@K@  RP@@K@  @@@K@  KI@@K@  @H@@K@  @E@@K@  @@@@K@  @;@@K@   9@@K@  @@K@  @K@  @K@  @K@  @K@  @K@  @K@  @K@  @K@  @ภ|@F}ภ~|uOSSYvOSS]@~{@@@@@L@  6L@  :@@@|>@@L@  ;@ఐ#locOSSKOSSN@@@G@  G@  G@  G@  YG@  ]G@  4G@  >G@  :@@ఐꠐ#envOSS^OSSa@а@@&@ภ~PSbS~PSbS@~@@@@@L@  2L@  C@@డ$last$PathQSSQSS@@q@@ @&stringO@@ @@ @@qtfXXqufXm@@qN@@@q@@L@  G@@L@  F@L@  E@@ఐ$pathQSSQSS@@@q@@M@  NM@  PM@  O3@@QSSQSS@@@@L@  1L@  RM@  M=@@ఐࠐ%decl'RSS
RSS@e@@@@L@  0L@  TL@  SQ@@ఐ?%dpath SSS!SSS@'@@G@  (G@  /G@  UG@  Ae@@డ%Subst0type_declaration%Subst;TSS<TST@@%Subst!t@@ @  @@@ @  0type_declaration@@ @  @ @  @ @  @0typing/subst.mlix	t	tx	t	@@R@@@@@L@  @@@L@  @@L@   @L@  @L@  @@డ;-add_type_path%SubsttUTT*uUTT=@@@@ @  e@!t@@ @  d@F@@ @  cI@@ @  b@ @  a@ @  `@ @  _@:e;e@@KC@@@@@M@  @@@M@  @]@@M@  `@@M@  @M@  @M@  @M@  @@ఐ̠%dpathUTT>UTTC@@@@@ఐ $pathUTTDUTTH@@@C@@N@  &N@  *N@  )@@డ(identity%SubstUTTIUTTW@@@ @  W@bb@@A
@@@@N@  %N@  ,N@  +@@UTT)UTTX@@@@M@  M@  .N@  $(@@ఐ$declUTTYUTT]@@@5@@TSSUTT^@@@@L@  .L@  1M@  ?@@,	@@JJ@  ,B@@AJR-R@	VT_Tp@@Mc@HQQ@@se@@
GQQ@@డ"<>XTTXTT@z@@@@@I@  C@@I@  BI@  9@z@@I@  8@I@  7@I@  6  0 '&&'''''@@@@(@@@@ఐ#err:XTT;XTT@@@@@ภ$NoneFXTTGXTT@@@@+I@  G@@@@z@@I@  IJ@  A%@డ%raiseZYTT[YTT@;@@@;@@I@  MI@  L@I@  K8@@ภ%ErrormYTTnYTT@ఐ#locwYTTxYTT@@@N@ภ3Definition_mismatchYTTYTT@  < 	@BDHYa@A@@ ఐ"tyYTTYTT@Ұ@@%@@J@  eJ@  iJ@  hk@ఐ#errYTTYTT@s@@10@@J@  g@@J@  fJ@  lJ@  j@@-YTT@@@@J@  ZJ@  d@@ZYTT@@@@J@  RJ@  X@@b@@Z@@XTT	@@\@
@@]@7@@^@Ġ)Not_foundZTTZTT@$@@@@@@L@  s@@డ%raise[TU[TU@@@@@@J@  z3G@  uJ@  y@J@  x@@ภ%Error[TU
[TU@ఐ&#loc[TU[TU@@@c@ภ<Unavailable_type_constructor [TU[TU4@Zఐ$path
[TU5[TU9@հ@@@@K@  K@  K@  @@
@@@@K@  K@  @@C[TU;@@@@K@  K@  @@K@@A@@#EQeQo$\U<UI@@u@@+]UJUR,]UJUS@@n@@K@  u@@u@@డ%raise9]UJUW:]UJU\@@@@@@I@  G@  I@  @I@  @@ภ%ErrorN]UJU]O]UJUb@ ఐ#locX]UJUcY]UJUf@p@@@ภ3Definition_mismatchb]UJUhc]UJU{@ఐݠ"tyl]UJU}m]UJU@@@@@J@  J@  J@  @ภ$None}]UJU~]UJU@L@@@
@@J@  @@J@  J@  @@(]UJU@@@@J@  J@  @@W]UJU@@p@@J@  J@  @@_@@U@@ACQQ^UU@@  0 @@@@@_UU_UU@@@@@@ภ~g_UU@~e@@@G@  @@A@PP@@  0 @@@@@AA@  0 @@@@@AA@  0 @@@@@AA@*  0 @@@@@AA@@8.@ @    0 @@@@@@@@ࠠ,check_abbrev%aUUaUU@@@@N@@ @  #G@  @@@ @  )G@  @u@@ @  0G@  F@@ @   G@  @ @  G@  {;@@ @  G@  @ @  G@  @ @  G@  @ @  G@    0 @B|@}@@@@@#env'aUUaUU@@@8  0       @D	aUU
bUV@@@@@@%sdecl(aUUaUU@@@B  0 @ N@@,+@@@@@~+ࠠ"id)*aUU+aUU@@@I  0 (''(((((@"Z@@A,@@@ࠠ$decl*8aUU9aUU@@@Q@@<aUU=aUU@@]X@I@  @@ఐӠ/check_coherenceKbUULbUU@W@@@@@G@  
@\@@G@  @@@G@  @@@G@  
{@@G@  	@G@  @G@  @G@  @G@    0 `__`````@:B@=@z-6@1@|.@@@@ఐx#envvbUUwbUU@^@@G@  $G@  @@ఐw%sdeclbUUbUU@[@@G@  'G@  )@)ptype_locbUUbUU@I
@@@@H@  "H@  *H@  (7@@ภ$Path&PidentbUUbUU@uPఐ"idbUUbUU@K@@O@@bUUbUU@@	!@@H@  !H@  /W@@ఐ$declbUU@]@@c@@~@@d@@AA@  0 @@@@@AA@  0 @@@@@AA@@@ @  9  0 @@@@@@@ޠ@ࠠ2check_well_founded,fV1V5fV1VG@@@@s!t@@ @  G@  ;@@@ @  G@  B@u@@ @  G@  I@@pC@@ @  uG@  r|@@ @  G@  sA @  tG@  P@"5@@ @  G@  W@@ @  G@  X@ @  YG@  Q@ @  RG@  J@ @  KG@  C@ @  DG@  <@ @  =G@  :  0 @-`Z@[@4*@@@@#env..fV1VH/fV1VK@@@M  0 ,++,,,,,@Y5fV1V16^^@@@@@@#loc/AfV1VLBfV1VO@@@T  0 ?>>?????@ c@@X0@@@@@$path0RfV1VPSfV1VT@@@\  0 POOPPPPP@h@@i1@@@@@(to_check1cfV1VUdfV1V]@@@d  0 a``aaaaa@p@@z2@@@@@"ty2tfV1V^ufV1V`@@@a  0 rqqrrrrr@x@@3@@@@@ࠠ'visited3gVcVigVcVp@@@dʠ"!t"@@G@  G@  $G@  2G@  G@  G@  G@  @@ @  H@  b@@ @  gH@  ^  0 @0<@3@4@@@డx#refgVcVsgVcVv@d@@@+d.@@H@  a@H@  `@@డ#/%empty'TypeMapgVcVwgVcV@=!a @  @@ @  @'map.mli I I@@+Stdlib__MapE@@L5@@)@@R6@@gVcVe@@Aࠠ%check`hVVhVV@@@@{)type_expr@@ @  H@  @WH@  @#@@ @  H@  @@ @  H@  @ @  @ @  @H@    0 @_@@5@@@@#ty0ahVVhVV@@@(  0 @3@/@(@&!@ @  @ @  @ @  I@  @6@16@@@@@'parentsb+hVV,hVV@@@H@    0 *))*****@'E@@C7@@@@@"tyc=hVV>hVV@@@HH@  H@    0 ?>>?????@#@@X8@@@@@ࠠ"tydRiVVSiVV@@@h@@ @  I@    0 UTTUUUUU@'@@n9@@@డ}$repr%BtypejiVVkiVV@@{)type_expr@@ @%S@@ @%R@ @%Q@}t}t@@}N@@@@@I@  @@I@   @I@  *@@ఐU"tyiVViVV@4@@SH@  	H@  :@@+@@>;@@iVV@@డ$.#mem'TypeSetjVVjVV@#@@@#@@I@  @#@@I@  #@@I@  @I@  @I@    0 @^ke@f@:@@@@ఐs"tyjVVjVV@@@#0@@J@  "J@  !@@ఐ'parentsjVVjVV@@@QG@  G@  bH@  7H@  :H@  H@  )H@  0@@A@@~@@I@  +J@  6@ఐ점#ty0lW/W>lW/WA@˰@@H@  H@  H@  /H@  -H@  O@$desc
lW/WBlW/WF@r@@r~@@ @  .Y@Ġ'TconstrmWLWTmWLW[@r]ࠠ!pe#mWLW]$mWLW^@@@ra@@ @  8r@@,mWLW`-mWLWa@@r`@@L@  :@@L@  9~@@8mWLWc9mWLWd@@rcr^@@L@  <@@L@  ;@@@(BmWLWe@@r@@L@  =@@@@డ$same$PathRmWLWiSmWLWr@r"@@@x@@J@  I@x@@J@  Hse@@J@  G@J@  F@J@  E  0 ]\\]]]]]@E?@@@v;@@@@ఐM!ppmWLWsqmWLWt@@@x4@@K@  UK@  WK@  V@@ఐ6$pathmWLWumWLWy@@@G@  G@  G@  G@  TG@  XG@  L0@@A@@e@@J@  cJ@  [6@@nWzWnWzW@@s@@L@  ?@@@@ภnWzWnWzW@ @@@J@  b@@AlW/W8@@@@I@  i  0 @@@@డ%raiseoWWoWW@@@@@@I@  m@@H@  I@  I@  l@I@  k@@ภ%ErroroWWoWW@ఐ#locoWWoWW@@@G@  G@  yG@  }G@  E6@ภ0Recursive_abbrevoWWoWW@  < w@ABHYa@A@@డ$name$Path oWWoWW@%paren&optionJ@>@@ @t@@ @@ @@@ @@x@@ @L@@ @@ @@ @@x^x^@@xJ&%@@#!@@@J@  @@J@  @J@  @@J@  @x@@J@  @@J@  @J@  @J@  @9ภ}A@@;@8@@K@  7@@K@  @K@  @@K@  @@ఐ
$pathXoWWYoWW@@@@@\oWW]oWW@@@@J@  J@  K@  @@w	@@f@@J@  zJ@  @@loWWmoWW@@L@@J@  rJ@  x@@@@@డC%raise~pWWpWW@_@@@_@@I@  I@  I@  @I@  @@ภ%ErrorpWWpWW@Eఐ`#locpWWpWW@H@@@ภ,Cycle_in_defpWWpWW@  < R/@PBCHYa@AF@@Cడ{$name$PathpWWpWX@@@@@@J@  @@J@  @J@  @@J@  @y@@J@  @@J@  @J@  @J@  @ΐภ}@@Р@@@K@  @@K@  @K@  @@K@  1@@ఐ$pathpWXpWX	@@@a>@@9@@@@J@  J@  K@  F@ఐ#ty0 pWXpWX@Ѱ@@Q@@]pWX@@@@J@  J@  X@@pWWpWX@@@@J@  J@  `@@@@a@jVVqXX@@Rd@@jVV@@Tf@@ࠠ$finif%rXX$&rXX(@@@@@ @  DI@    0 (''(((((@v@@@ࠠ'parentsg5rXX*6rXX1@@@I@  @@:rXX#;rXX2@@@I@  @@ࠠ$prevhLtX?XKMtX?XO@@@sG@  aG@  jG@  6G@  *@డ&$find'TypeMapctX?XRdtX?X^@@#key@@ @  R@!a @  @@ @  Q@ @  P@ @  O@++++@@`@@@@@J@  @9G@  @@J@  @J@  @J@  \@@ఐA"tytX?X_tX?Xa@ܰ@@0@@K@  K@  n@@డld1d3tX?XbtX?Xc@d0@@@h!@@K@  K@  @@K@  @K@  @@ఐ:'visitedtX?Xj@@@i@@L@  L@  L@  @@$@@@@h@@E@@tX?XG@@డ'b&subset'TypeSetuXnXyuXnX@@'@@ @wI@'
@@ @wH&D@@ @wG@ @wF@ @wE@&B xMQ&C xMk@@&AQ@@@'@@I@  +@' @@I@  *@@I@  )@I@  (@I@  '  0 @H@@>@@@@ఐ堐'parentsuXnX
uXnX@Ȱ@@1@@ఐ͠$prevuXnXuXnX@@@@@B@@@@I@  ?J@  5$@ภ1*uXnX+uXnX@0@@@@@ @  E2@ఐ'parents8uXnX9uXnX@@@Y=@@<uXnX=uXnX@@`@ @  FD@ภKvXXLvXX@@@@#I@  LR@డ'%union'TypeSet]vXX^vXX@@'@@ @w+@'@@ @w*'@@ @w)@ @w(@ @w'@& b& b @@&K@@@'@@I@  R@'@@I@  Q'@@I@  P@I@  O@I@  N@@ఐb'parentsvXXvXX@E@@@@ఐJ$prevvXXvXX@@@H@@=@@'@@H@  `@@vXXvXX@@dI@  n@uXnXv@@f@@@gx@Ġ)Not_foundwXXwXX@,@@@@@@L@  r@@ภxXXxXY@@@@x@@J@  {@ఐ'parentsxXYxXY
@@@@@xXXxXY@@I@  x@@sX5X;@@@@rXX@@ఐ$finizYYzYY@@@<@@@@H@  H@    0 @3@@=@@@ภzYY$zYY&@@@@
@@ࠠ&rec_oki {Y,Y4{Y,Y:@@@rN@@ @  I@    0 @ @@@ఐ "ty|Y=YI|Y=YK@]@@@@J@   @    0 @4@@@$desc!|Y=YL"|Y=YP@v@@v@@ @  @Ġ'Tconstr1}YVY^2}YVYe@vtࠠ!pj:}YVYf;}YVYg@@@vx@@ @  $@@C}YVYhD}YVYi@@vw@@L@  @@L@  0@@O}YVYjP}YVYk@@vzvu@@L@  @@L@  <@@@(Y}YVYl@@v@@L@  A@@A@@డ+rre~YpYf~YpY@r@@@r@@J@  @r@@J@  r@@J@  @J@  @J@    0 pooppppp@A;@<@@@@@@డJff~YpYz~YpY{@f@@@jɠr@@K@  K@  K@  K@  @@K@  
@K@  !@@డF/recursive_types'Clflags~YpY@F#refF@@ @i@@ @i@F rF r@@F L/@@j/@@L@  L@  L@  G@@9@@/H@@డ.is_contractive%Ctype~YpY~YpY@@z!t@@ @+
@zc!t@@ @+	#@@ @+@ @+@ @+@79
9
79
95@@ @@@@@K@  @@@K@  @@K@  @K@  @K@  @@ఐՠ#env~YpY ~YpY@@@(G@  G@  G@  G@  G@  G@  >@@ఐݠ!p~YpY~YpY@@@E@@L@  L@  L@  @@V
@@ss@@K@  K@  L@  @@@@%@Ġ'Tobject6YY7YY@n@;YY<YY@@@@M@  $@@@nnn@@M@  n@@M@  @@M@  @M@  @@M@  @@M@  <@@@#@@w@@M@  @@@@@Ġ(TvariantdYYeYY@pؠ@iYYjYY@@p@@M@  R@@@@@w@@M@  V@@V@@=	@@w@@L@  Z@@ภ{YY|YY@@@@{I@  d@@YYYY@@w@@L@  o@@o@@డYgg YYYY@g@@@kؠI@  J@  @@J@  @J@  @@డG/recursive_types'ClflagsYY@
@@k@@K@  K@   K@  @@%@@@@A|Y=YC
@@@@{Y,Y0@@@ࠠ(visited'kZZ
ZZ@@@<9I@  I@@ @  ^I@  C  0 @@@?@@@డ*F#add'TypeMapZZZZ#@@}@@ @  @!a @  @a	@@ @  e
@@ @  @ @  @ @  @ @  @$ S% S@@#H@@@@@I@  K@6@w;@@I@  J{?@@I@  H@I@  G@I@  F@I@  E>@@ఐƠ"tyZZ$ZZ&@a@@@@J@  gJ@  fP@@ఐ'parents*ZZ'+ZZ.@A@@I]@@డgàgŰ8ZZ/9ZZ0@g°@@@l}@@J@  yJ@  q@@J@  r@J@  pw@@ఐ̠'visitedQZZ7@L@@l@@K@  wK@  zK@  x@@$@@@@}@@@@^ZZ	@@@ࠠ'arg_exnliZ;ZCjZ;ZJ@@@.@@ @  /I@  @@ @  I@    0 rqqrrrrr@@@A@@@డMgggiZWZgZWZi@gf@@@l̠@@J@  J@  @@J@  @	gh@@J@  @J@  @J@    0 @$@@@@ఐ!'visitedZWZ_ZWZf@@@l!@@K@  K@  K@  @@ఐ(visited'ZWZjZWZr@D@@/@@J@  '@@@@@@I@  J@  -@@ࠠ'parentsmZtZZtZ@@@*@@ @  J@    0 @c@@@ఐ䠐&rec_okZZZZ@@@@@J@  J@  @డ+}%empty'TypeSetZZZZ@@@"@డ+#add'TypeSetZZZZ@)@@@*q@@J@  @+8@@J@  +;@@J@  @J@  @J@  <@@ఐΠ"ty ZZ!ZZ@i@@*@@K@  K@  N@@ఐ'parents2ZZ3ZZ@I@@Q[@@0@@+^@@J@  _@:ZZ@@da@@<ZtZ|
@@డm.iter_type_expr%BtypeKZZLZZ@$k@@@@+o@@J@  $k@@J@  @J@  @$j@@J@  $h@@J@  @J@  @J@    0 [ZZ[[[[[@@@tC@@@@ఐ%checkpZZqZZ@[@@@p@@z@L@  @L@  @L@  @@ఐu#ty0ZZZZ@T@@&@@ఐ'parentsZZZZ@0@@3@@ZZZ[ @@@@K@  8@@ఐP"tyZ[Z[@@@$@@K@  K@  K@  L@@b
@@@@I@  J@  R@ภ$None[[
[[@@@@{M@@ @  _@u@@`@@@@	@@@ࠠ!en[[[[@@@@@J@  @@డhh["[2["[4@h@@@n	U	P@@J@  J@  @@J@  @	h@@J@  @J@  @J@    0 @x*=@@ @  @(@D@@@@ఐ	z'visited["[* ["[1@@@nF'@@K@  K@   K@  @@ఐN(visited'["[5["[=@@@		@@J@  $-@@@@h@@I@  *J@  3@ภ$Some'["[?(["[C@lఐg!e1["[D2["[E@C@@F@@@@I@  ,@@I@  .M@=
@@I@  -P@@?ZMZS@@@@AZ;Z?@@ఐ"tyM[M[WN[M[Y@@@@@I@  5 @  3  0 POOPPPPP@@@iB@@@$desc][M[Z^[M[^@zհ@@z@@ @  4@Ġ'Tconstrm[d[jn[d[q@zࠠ!pov[d[rw[d[s@@@z@@ @  >'@@[d[u[d[v@@z	@@K@  @@@K@  ?3@@[d[x[d[y@@zz@@K@  B@@K@  A?@@@([d[z@@{@@K@  CD@@D@డh"||[d[[d[@@
@@ @ @@@ @ @@ @ @ @ @ @ '%sequorBA@@@@ %% %%F@@_@@@@@I@  O@@@I@  N@@I@  M@I@  L@I@  K  0 @y]W@X@E@@@@డ"<>[d[[d[@J@@@3@@J@  j@@J@  iJ@  `@O@@J@  _@J@  ^@J@  ]#@@ఐ'arg_exn[d[[d[@@@0@@ภ$None[d[[d[@@@@'J@  n>@@@@h@@J@  [J@  pK@  hF@@ఐ
(to_check[d[ [d[@
@@ G@  SV@@ఐ!p-[d[.[d[@`@@(c@@@@&d@@8@@@@I@  yJ@  Yj@ఐ
堐(to_checkD[[E[[@
Ͱ@@Cz@@ఐ۠!pQ[[R[[@@@NK@  ~@@@@LG@  Z@డ'&Option$iterd[[e[[@@@!a @h]$unitF@@ @h@ @h@K@@ @h
@@ @h@ @h@ @h@KtKt@@KK! @@@@g@@J@  J@  @@J@  @J@  @
@@J@  @@J@  @J@  @J@  @@డi%raise[[[[@@@@@@K@  ?@@K@  K@  @K@  @@ఐR'arg_exn[[[[@f@@K<@@K@  K@  K@  @@c@@@@I@  J@  @డ.iter_type_expr%Btype[[[[@&@@@@-@@J@  &@@J@  @J@  @&@@J@  &@@J@  @J@  @J@  !@@ఐ%check[[[[@
@@@	@`@	H@  	H@  H@  H@  @L@  @L@  @L@  <@@ఐ#ty0[[[\@
@@
I@@డ.%empty'TypeSet#[\$[\@"̰@@.N@@H@  \@@*[[+[\@@@+*@K@  a@@ఐ
栐"ty8[\9[\@
@@'O@@K@  K@  K@  u@@j
@@~K@  x@F[[@@z@@ࠠ#ty'pS\(\6T\(\9@@@)type_expr@@ @  J@    0 XWWXXXXX@@@@డ?3try_expand_once_opt%Ctypej\(\<k\(\U@@V!t@@ @)@.)type_expr@@ @)$@@ @)@ @)@ @)@.   /   @@- I@@@@@J@  @@@J@  6@@J@  @J@  @J@  4@@ఐq#env\(\V\(\Y@W@@A@@ఐV"ty\(\Z\(\\@
@@8@@K@  K@  K@  U@@I
@@[V@@\(\2@@@ࠠ#ty0q\`\n\`\q@@@J@    0 @wq@r@F@@@డ/](is_empty'TypeSet\`\w\`\@@/@@ @w.:@@ @w@ @w@.8 M.9 M@@.7F@@@/@@J@  @@J@  @J@  +@@ఐĠ'parents\`\\`\@@@e8@@'@@@@J@  K@  >@ఐ"ty	\`\
\`\@R@@H@ఐ#ty0\`\\`\@@@S@\`\t@@*U@@\`\j@@ఐ<%check$\\%\\@@@@:@@1'@I@  @I@  @I@    0 (''(((((@jtn@o@AG@@@@ఐ|#ty0;\\<\\@@@O@@డ/#add'TypeSetM\\N\\@.@@@.@@J@  @/@@J@  /@@J@  @J@  @J@  0@@ఐ"tyg\\h\\@@@.@@K@  +K@  *B@@ఐ	D'parentsy\\z\\@@@O@@}\\~\\@@/@@H@  #U@@ఐ9#ty'\\\\@Ȱ@@J@  4d@@n@@e@y@@@@@7@Ġ%Ctype-Cannot_expand\\\\@  < -Cannot_expand@@ @(4@@@A   @A@@RI@@
@@@@L@  9O@@డ{&Option$iter\]\]@T@@@@@@J@  ZJ@  BU@@J@  D@J@  C@R
@@J@  AQ@@J@  @@J@  ?@J@  >s@@డ%raise\]\]@@@@@@K@  Xu@@K@  RK@  U@K@  W@@ఐ'arg_exn\]\]@@@<@@K@  PK@  ]K@  [@@E@@H@  O@@ \\]](@@@@@@@	])]/
])]0@@~|@@K@  E@@@@డ&Option$iter])]4])]?@@@@@@@I@  I@  g@@I@  i@I@  h@
@@I@  f@@I@  e@I@  d@I@  c@@డ%raise<])]@=])]E@@@@@@J@  }@@J@  wJ@  z@J@  |@@ఐꠐ'arg_exnS])]FT])]M@@@<@@J@  uJ@  J@  	@@E@@YH@  t@@Ab[M[Q@@[  0 ^]]^^^^^@@@@$@@]@@@^@@@__@hzYY@@
ha@@@
i
=@
T@@
j
>@@@
k
@@A
0A@
wH@    0 jiijjjjj@
+@@@@A
FA@
H@    0 nmmnnnnn@
D@@@@A
c!A@@

@ @    0 rqqrrrrr@
b@@@@yhVV&@@@ࠠ$snapr]S]Y]S]]@@@(snapshot@@ @  H@  
{@డ(snapshot%Btype]S]`]S]n@@@@ @&@@ @&@ @&@ $h$h $h$@@ W@@@@@H@  )@@H@  @H@  
@@ภ{]S]o]S]q@z@@@!@@I@  I@  
@@*@@=
@@]S]U
@@డ9wrap_trace_gadt_instances%Ctype]u]{]u]@@@@ @+X@@!a @+V!b @+U@ @+W@
@ @+T@ @+S@ @+R@T==T=>@@ @@@
@@G@  @@G@  G@  @G@  @@G@  @G@  @G@    0 @
|@}@H@@@@ఐ䠐#env]u]]u]@ʰ@@@@ఐ5%check]u]]u]@@@@3@@I@  @@1F@@I@  @@I@  @I@  @I@  @I@  /@@ఐɠ"ty9]u]:]u]@@@*G@  G@  G@  ZA@@డ1%empty'TypeSetN]u]O]u]@%@@1y@@G@  T@@U]u]V]u]@@@1v@@H@  @@H@  @H@  _@@ఐ"tyi]u]j]u]@ð@@,l@@@@Pm@Ġ%Ctype&Escapew]]x]]@  < &Escapey@@ @(0@v&escape|$desc@@ @(/@@ @(.@At@   @Ar@@9G@]]]]@@@@J@  @@J@  @@@%	@@@@J@  @@డ)backtrack%Btype^^^^@@'@@ @&@@ @&@ @&@ $$ $$@@ X@@@5@@H@  @@H@  @H@  @@ఐJ$snap^^@Ͱ@@K@@I@  I@  I@  @@-@@G@  @@]u]w@@@@@@e@@@@@9@@AlA@  0 @i@@@@AA@  0 @|@@@@AA@  0 @@@@@AA@  0 @@@@@AA@@@ @    0 @@@@@@@̠@ࠠ;check_well_founded_manifests^^ ^^;@@@@@@ @  G@  @@@ @  G@  @@@ @  G@  @@@ @  rG@  @@ @  6G@  @ @  G@  @ @  G@  	@ @  
G@  @ @  G@     0 @LF@G@7/@@@@#envu1^^<2^^?@@@6  0 /../////@B8^^9^_@@@@@@#locvD^^@E^^C@@@@  0 BAABBBBB@ L@@[J@@@@@$pathwU^^DV^^H@@@H  0 SRRSSSSS@T@@lK@@@@@$declxf^^Ig^^M@@@P  0 dccddddd@\@@}L@@@@డ=||w^P^hx^P^i@|@@@Ѡ@@G@  ,@@G@  +G@  !@|@@G@   @G@  @G@    0 @".t@%@M@@@@ఐ8$decl^P^U^P^Y@@@G@  -G@  *G@  @-type_manifest^P^Z^P^g@@@+@@ภ$None^P^j^P^n@@@@9G@  1-@@@@@@G@  3H@  )3@ภ^P^t^P^v@@@@;@@ࠠ$argsy^|^^|^@@@^@@ @  bH@  <@@ @  IH@  7  0 @T@@@డ$List#map^|^^|^@@@@@y@@H@  qH@  >@H@  ?@
@@H@  =(@@H@  ;@H@  :@H@  9#@@@z@^|^^|^@@/@@డ&newvar%Ctype^|^^|^@@@@@I@  W@@I@  V@@@I@  U@@I@  T@I@  S@I@  RO@ภ2
 @
@@@J@  g@@J@  f\@@ภ (B^|^@@*@@@@J@  cJ@  kk@@1@@pl@@AK^|^L^|^@@@_y@I@  KI@  ns@@ఐ$decl]^|^^^|^@Ӱ@@@+type_paramsd^|^e^|^@
@@|@@I@  JI@  sI@  p@@@@@@q^|^~
@@ఐ2check_well_founded{^^|^^@X@@@@@G@  @@@G@  @G@@G@  @@@@G@  d@@G@  AG@  ~@3@@G@  }X@@G@  |@G@  {@G@  z@G@  y@G@  x@G@  w  0 @@@N@@@@ఐ#env^^^^@h@@G@  G@  @@ఐ#loc^^^^@g@@G@  G@  $@@ఐ~$path^^^^@f@@G@  G@  G@  G@  G@  G@  <@@డ$same$Path^^^^@@@@@@I@  @@@I@  @@I@  @I@  @I@  [@@ఐ$path^^^^@@@3h@@
^^^^@@@@@H@  @@H@  @H@  s@@డ)newconstr%Ctype#^^$^_@@@@@@H@  @@@H@  @@H@  @@H@  @H@  @H@  @@ఐ$pathA^_B^_@ذ@@j@@ఐ~$argsN^_	O^_
@@@ՠ@@I@  @@I@  I@  I@  @@]^^%@@4@@H@  H@  I@  @@-@@JG@  5H@  @2@@@l^P^R4@@M@@A5A@W  0 ihhiiiii@@@@@A7A@b  0 kjjkkkkk@@@@@A.9A@m  0 mllmmmmm@+@@@@AC;A@@vq@ @    0 qppqqqqq@B@@@@@@@?@U@ࠠ7check_well_founded_decl{____+@@@@@@ @  aG@  @@@ @  `G@  @[@@ @  _G@  @^0type_declaration@@ @  RG@  @@@@ @  ^@@ @  ]A @  \G@  @@ @  CG@  @ @  G@  @ @   G@  @ @  G@  @ @  G@  @ @  G@    0 @@@I@@@@#env}__,__/@@@I  0 @U___`@@@@@@#loc~__0__3@@@S  0 @ _@@P@@@@@$path__4__8@@@[  0 @g@@Q@@@@@$decl__9__=@@@c  0 @o@@R@@@@@(to_check__>__F@@@i  0 @w@@-S@@@@  РK%Btype'_I_T(_I_Y@@	  0 &%%&&&&&@~@@?T@@@@A  0 *))*****@@@2_I_O@@@ࠠ"it=_]_c>_]_e@@@.type_iterators@@ @  /H@  
  0 BAABBBBB@@@@  @   , ,it_signature@@ @&W@@@ @&
@{)signature@@ @&@@ @&@ @&
@ @&	@@  @   , 1it_signature_item@$@@ @&@.signature_item@@ @&@@ @&@ @&@ @&@A@A wFJ wF@@h  , 4it_value_description,@:@@ @&@1value_description@@ @&@@ @&@ @&@ @&@B)@A x x@@i  , 3it_type_declarationB@P@@ @&@0type_declaration@@ @&@@ @&@ @&@ @&@C>@A y y@@j  , 8it_extension_constructorW@e@@ @&!@5extension_constructor@@ @& @@ @&@ @&@ @&@DT@A z za@@k  , 5it_module_declarationm@{@@ @&&@2module_declaration@@ @&%@@ @&$@ @&#@ @&"@Ej@A {bf {b@@l  , 6it_modtype_declaration@@@ @&+@3modtype_declaration@@ @&*@@ @&)@ @&(@ @&'@F@A | |@@m  , 4it_class_declaration@@@ @&0@1class_declaration@@ @&/@@ @&.@ @&-@ @&,@G@A	 }
 }<@@n  , 9it_class_type_declaration@@@ @&5@'6class_type_declaration@@ @&42@@ @&3@ @&2@ @&1@H@A ~=A  ~=@@o  , 0it_functor_param@@@ @&:@=1functor_parameter@@ @&9H@@ @&8@ @&7@ @&6@I@A5 6 @@4p  , .it_module_type@@@ @&?@S+module_type@@ @&>^@@ @&=@ @&<@ @&;@J@AK L @@Jq  , -it_class_type@@@ @&D@i*class_type@@ @&Ct@@ @&B@ @&A@ @&@@K@Aa b D@@`r  , ,it_type_kind@@@ @&I@.type_decl_kind@@ @&H@@ @&G@ @&F@ @&E@L@Aw EIx E@@vs  , /it_do_type_expr@+@@ @&N@)type_expr@@ @&M@@ @&L@ @&K@ @&J@M@A  @@t  , ,it_type_expr3@A@@ @&S@)type_expr@@ @&R@@ @&Q@ @&P@ @&O@N0@A  @@u  , 'it_pathI@$Path!t@@ @&V@@ @&U@ @&T@OD@A  @@v@A v vE@@g@p@@H@  @_@@H@  ]@@H@  @H@  @H@  H@  z\@@@H@  @]@@H@  [@@H@  @H@  @H@  H@  W@@@H@  @X@@H@  V@@H@  @H@  @H@  H@  R@@@H@  @S@@H@  /@@H@  @H@  @H@  H@  N@@@H@  @O@@H@  M@@H@  @H@  @H@  H@  I@@@H@  @J@@H@  H@@H@  @H@  @H@  H@  D@@@H@  @E@@H@  C@@H@  @H@  @H@  H@   ?@@@H@  @@@@H@  >@@H@  @H@  @H@  H@  Π:@@@H@  @;@@H@  9@@H@  @H@  @H@  H@  ڠ5@	@@H@  @6@@H@  4@@H@  @H@  @H@  H@  0@@@H@  @1@@H@  /@@H@  @H@  @H@  H@  +@+@@H@  @,@@H@  *@@H@  @H@  @H@  H@  &@<@@H@  @'@@H@  %@@H@  @H@  @H@  H@  
!@M@@H@   @"@@H@   @@H@  @H@  @H@  H@  ,it_type_expr____@@k@____@@i@@K@  /g@@ఐڠ2check_well_founded____@@@@@@I@  B@@@I@  A@@@I@  @@@@@I@  ?@@I@  >AI@  =@7@@I@  <@@I@  ;@I@  :@I@  9@I@  8@I@  7@I@  6@@ఐ#env____@@@bG@  bG@  @@ఐ#loc____@ @@iG@  eG@  @@ఐ$path____@@@pG@  fG@  @@ఐ(to_check____@@@jG@  g@@e@@@@@I@  q@@I@  p@I@  oI@  l@@A'__(__@@@@@I@  #@@@I@  "@@I@  !@I@   @I@  I@  s@@@@H@  .@@H@  -@H@  ,H@  (@డ&.type_iteratorsL_h_mM_h_{@
@@ @&X@d e 3@@cw
@@@@H@  +H@  'H@  y@__h_l`__@@@@b_]__@@ఐ1"itn__o__@1@2@U@@3@@I@  9 @  3  0 srrsssss@JA
@@@3it_type_declaration~____@@@@A@@G@  8@@@G@  7@@G@  6@G@  5@G@  4@@ఐ["it____@*@@]@@H@  EH@  GH@  F*@@డ<generic_instance_declaration%Ctype___`@@@@ @)np0type_declaration@@ @)m@ @)l@m n 5@@l C@@@@@H@  K@@H@  J@H@  IS@@ఐԠ$decl_`
_`@@@5G@  SG@  c@@__@@J@@H@  DH@  UI@  Ql@@w
@@'m@@@(@_I_K@@*  0 @@@@@AA@<  0 @@@@@AA@I  0 @@@@@AA@T  0 @@@@@A
A@_  0 @
@@@@A"A@@hc@ @  `  0 @!@@@@@@4@ࠠ/check_recursion`9`=`9`L@@@(orig_env@@ @  [G@  b@@@ @  G@  i@%@@ @  OG@  p@b@@ @  G@  w@@@ @  G@  ~@@x@@ @  ]G@  Z@@ @  XG@  [A @  \G@  @@ @  G@  @ @  G@  @ @  G@  x@ @  yG@  q@ @  rG@  j@ @  kG@  c@ @  dG@  a  0 GFFGGGGG@@@`O@@@JJOY`9`NZ`9`V@@@R  0 WVVWWWWW@```9`9aj9jO@@@@@@#envl`9`Wm`9`Z@@@\  0 jiijjjjj@h@@W@@@@@#loc}`9`[~`9`^@@@d  0 {zz{{{{{@p@@X@@@@@$path`9`_`9`c@@@l  0 @x@@Y@@@@@$decl`9`d`9`h@@@t  0 @@@Z@@@@@(to_check`9`i`9`q@@@|  0 @@@[@@@@డࠐ`a`a@߰@@@SP@@G@  @@G@  G@  @@@G@  @G@  @G@    0 @".@%@\@@@@ఐI$decl````@1@@G@  G@  G@  G@  @+type_params```a@@@-!@@ภy`a	`a@y@@@:G@  .@@@@@@G@  H@  4@ภ˰
`a`a@@@@<@@ࠠ'visitedaa aa'@@@|`yAh^@@G@  G@  @@ @  H@  @@ @  H@    0 *))*****@[@@@డ#ref9aa*:aa-@|@@@|~@@H@  @H@  @@ภyjJaa.Kaa0@yi@@@*H@   @@@@0!@@Qaa@@Aࠠ-check_regular\a5a?]a5aL@@@@@@ @  H@  @@@ @  @@ @  H@  @y@@ @  H@  @@ @  H@  @yh@@ @  H@  I)type_expr@@ @  H@  @ @  H@  @@ @  H@  @:@@ @  iH@  3@@ @  hH@  @ @  @ @  @ @  @ @  @H@    0 @@@]@@@@%cpatha5aMa5aR@@@T  0 @_@[@V@M@B@*%@ @  @ @  @ @  @ @  @ @  I@  @f@^@@@@@$argsa5aSa5aW@@@jH@    0 @ ,v@#@_@@@@@(prev_expa5aXa5a`@@@rH@    0 @"@@`@@@@@/prev_expansionsa5aaa5ap@@@xH@    0 @"@@a@@@@@"tya5aq	a5as@@@sH@  H@    0 
		




@$@@#b@@@@@ࠠ"tyava~ava@@@iV@@ @  I@    0       @'@@9c@@@డ
$repr%Ctype5ava6ava@is@@@is@@I@  iq@@I@  @I@  @@ఐF"tyJavaKava@%@@DH@  H@  +@@@@/,@@Ravaz@@డ##not^aa_aa@o@@@o@@H@  n@@H@  @H@    0 dccddddd@ERL@M@}d@@@@డ?$List$memq|aa}aa@@!a @"E@:
@@ @$<XG@@ @$;@ @$:@ @$9@8('i'i9('i'@@7g@@@oI@  @@@I@  @@I@  @I@  @I@  9@@ఐ"tyaaaa@C@@F@@డyEyGaaaa@yD@@@}A4@@J@  J@   J@  J@  @@J@  @J@  d@@ఐ'visitedaa@2@@~@@K@  K@  K@  x@@(@@y@@aaaa@@@@I@  I@  "J@  @@	@@@@H@  $I@   @డxܠxްaaaa@x۰@@@~A{"@@I@  7I@  *@@I@  +@	x@@I@  )@I@  (@I@  '@@ఐ'visitedaaaa@v@@~a @@J@  5J@  8J@  6@@ภ"::.aa/aa@i0ఐ"ty8aa9aa@ϰ@@J@  ?@డyѠyӰFaaGaa@yа@@@~֠-@@J@  >J@  MJ@  JJ@  B@@J@  C@J@  A@@ఐH'visitedcaa@@@~@@K@  HK@  KK@  I@@(@@@@7@@kI@  =@@X@@@@H@  PI@  4@ఐe"tyaaaa@@@@@I@  U @  S!@$descaaaa@@@@@ @  T+@Ġ'Tconstrabab@ࠠ%path'abab@@@@@ @  ^  0 @D@@@ࠠ%args'abab@@@@@@ @  `@@ @  _@@abab@@@@K@  b@@K@  a@@@.ab@@>@@K@  c#@@#@@డ$same$Pathb b-b b6@@@@@@J@  }@@@J@  |@@J@  {@J@  z@J@  y  0 @PJ@K@eD>@?@f@@@@ఐw$pathb b7b b;@_@@G@  G@  aG@  bG@  G@  G@  G@  G@  G@  G@  z'@@ఐz%path'!b b<"b bA@0@@@@K@  K@  K@  ;@@L
@@@@J@  K@  A@డ#not<bMb\=bMb_@M@@@M@@J@  L@@J@  @J@  W@@డ+(is_equal%CtypeVbMbaWbMbo@@B!t@@ @*@7@@ @*@$)type_expr@@ @*@@ @*@0)type_expr@@ @*@@ @*7@@ @*@ @*@ @*@ @*@ @*@2
113
11V@@1 v21@@@/@@K@  @,@@K@  @+*@@K@  @@K@  @('@@K@  @@K@  %@@K@  @K@  @K@  @K@  @K@  @@ఐ[(orig_envbMbpbMbx@B@@G@  ^G@   G@  !G@  G@  G@  e@@ภ bMbybMb~@@@@i@@L@  L@  @@ఐ$argsbMbbMb@@@H@  H@  H@  H@  @@ఐ8%args'bMbbMb@@@~@@L@  @@L@  L@  L@  @@bMb`bMb@@@@K@  K@  L@  @@	@@@@J@  K@  @డ%raisebbbb@@@@@@J@  H@  NH@  H@  H@  FJ@  @J@  5@@ภ%Error.bb/bb@ఐ#loc8bb9bb@@@%G@  SG@  G@  G@  sR@ภ+Non_regularIbbJbb@  < @#@@ @m@AHHYa@A@  8 @@&HA@@@@@-@@@go  , +@@ @  -@@  ,  @A
A@  , @BA@  , @CA@A)@&*definitionibbjbb@ఐ蠐$pathrbbsbb@а@@m@'used_as{bc|bc@ఐg"tybcbc@@@H@@L@  L@   L@  @-*defined_ascc5cc?@డw)newconstr%Ctypecc@ccO@1@@@1@@L@  
@,)@@L@  @@L@  '@@L@  
@L@  	@L@  @@ఐ6$pathccPccT@@@@@ఐ$argsccUccY@@@@@/@@@@L@  L@   M@  @v*expansionsc[crc[c|@డ$List#revc[c}c[c@@!a @#.@@ @#	@@ @#@ @#@ Z

 Z

@@K@@@H@  -H@  3@@L@  4@@L@  2@L@  1"@@ఐ+/prev_expansionsc[cc[c@
@@/H@  H@  H@  ;H@  <H@  8@@=@@Р%@@L@  ,L@  >L@  :A@@2bb3cc@@@@K@  K@  DI@@@@:@@K@  K@  O@@@bbAcc@@ @@K@  K@  W@@4@@,X@@Ib bGJcc@@/[@డVee2Wee4@@@@@@J@  L@@@J@  K@@J@  J@J@  I@J@  Hv@@ఐƠ(to_checkree#see+@@@>G@  @@ఐ٠%path'ee,ee1@@@F@@@@D@@డU#notee5ee8@@@@@@K@  c@@K@  b@K@  a@@డm$List#memee:eeB@@!a @"J@h
@@ @$8\u@@ @$7@ @$6@ @$5@f#&&g#&'@@ef@@@OH@  {L@  p@	@@L@  o@@L@  n@L@  m@L@  l@@ఐ5%path'eeCeeH@@@@@ఐ(prev_expeeIeeQ@@@H@  H@  H@  zH@  |H@  @@ee9eeR@@@@L@  jL@  ~M@  y@@p	@@Q@@K@  WK@  L@  i@@@@@@J@  K@  V@@ࠠ'params0eeee@@@$listI)type_expr@@ @  @@ @  K@    0 (''(((((@=@@@ࠠ%body05ee6ee@@@)type_expr@@ @  K@  @@BeeCee@@#intA@@ @  K@  @@MeeNee@@3@ @  '@డ3find_type_expansion#Env`eeaee@@!t@@ @@@@ @RO@@ @@@ @A@@ @9@@ @@ @@ @@ @@ \

 ]H@@q'&@@@$@@K@  @@@K@  sp@@K@  @@K@  b@@K@  Z@@K@  @K@  @K@  @K@  v@@ఐ%path'eeee@@@O@@L@  L@  L@  @@ఐY#enveeee@A@@G@  G@  l@@h@@{K@  @@ee
@@@ࠠ&paramseeee@@@^)type_expr@@ @  @@ @  K@    0 @@@g@@h@@@ࠠ$bodyeeef @@@i@@ @  K@  @@ee ef@@(@ @  @డ;instance_parameterized_type%Ctypeffff5@*keep_names;Q@@ @)Z@@ @)Y@)type_expr@@ @)X@@ @)W@)type_expr@@ @)VXW@@ @)T@@ @)S@@ @)U@ @)R@ @)Q@ @)P@ @)O@  @@ @54@@20@@K@  @@K@  @/.@@K@  @@K@  @,@@K@  @@K@  @@K@  @@K@  @K@  @K@  @K@  @K@  @WภpH>@H@=Y@@L@  @@L@  @@ఐf'params0ff6ff=@@@gf@@L@  @@L@  L@  L@  @@ఐe%body0ff>ffC@@@s@@L@  L@  L@  @@
@@K@  @@ee@@డ|$List%iter2f[fof[fy@6F@@@@@@K@  ,K@  @@@K@  +K@  6H@@K@  @K@  @K@  @6G@@K@  @6F@@K@  6E@@K@  @K@  @K@  @K@    0 @@@i@@j@@@@డ%unify%Ctypef[f{f[f@@@@@@M@  @@@M@  @@@M@  
@@M@  @M@  @M@  
@M@  	+@@ఐ(orig_envf[ff[f@@@^8@@f[fzf[f@@@@@L@  '@@@L@  &@@L@  %@L@  $@L@  #H@@ఐW&params0f[f1f[f@Q@@6z@@L@  L@  /L@  -]@@ఐ%args'Ef[fFf[f@R@@6@@L@  L@  2L@  0r@@@@@@J@  zK@  x@Ġ%Ctype%Unify`ffaff@bࠠ%traceiffjff@@@c^@@ @  :@@ @  9@@@
@@@@N@  ;@@డE%raiseffff@a@@@a@@L@  C;K@  >L@  B@L@  A  0 @)#@$@k@@@@ภ%Errorffff@Kఐ	*#locffff@	@@g@ภ1Constraint_failedffff@oŠఐ	a(orig_envfffg@	H@@.@ఐY%tracefg	fg@6@@/@@M@  ]M@  gM@  e@@M@  dD@@$fg@@@@M@  PM@  ZK@@fffg@@@@M@  HM@  NS@@`@@VT@@fGfUgg$@@  0 @@@@ఐ-check_regularg&g4g&gA@8@@@H@  @@@y@a\@J@  @J@  @J@  ~@J@  }@J@  |@@ఐ^%path'g&gBg&gG@@@%@@ఐG$argsg&gHg&gL@+@@2@@ภgMgdgMgf@pఐ%path'&gMg^'gMgc@5@@F@ఐS(prev_exp1gMgg2gMgo@7@@DQ@@5gMg]6gMgp@@H@  V@@ภ@gMg|AgMg~@pBఐ0"tyMgMgsNgMgu@@@m@ఐb$bodyXgMgvYgMgz@w@@x@@\gMgr]gMg{@@H@  }@ఐw/prev_expansionshgMgigMg@Y@@H@@lgMgqmgMg@@H@  @@ఐ$bodyzgg{gg@@@H@  @@@@@@@@@@@@@U@Ġ)Not_foundgggg@H~@@@@@@M@  c@@ภSgggg@R@@@@@K@  K@  p@@eeXgg@@	s@@ee @@	u@b b*@@w@డs$List$itergggg@v@@@@<I@  t@@I@  @I@  @q
@@I@  n@@I@  @I@  @I@  @@ఐ	u-check_regulargggg@	@@@	s@	n@	e@	Z@a@K@  @K@  @K@  @K@  @K@  @@ఐ	:%cpathgggg@	@@	@@ఐ	*$argsgggh@	@@	@@ఐ	$(prev_expghgh@	@@@@ఐ	/prev_expansionsghgh@	 @@@@gggh@@@@J@  @@ఐl%args'!gh"gh"@.@@۠t@@J@  J@  J@  @@}@@y@@I@  J@  @@@@@I@  I@  @Ġ%TpolyBh#h+Ch#h0@{ࠠ"tyKh#h2Lh#h4@@@@@ @  j@ࠠ"tlXh#h6Yh#h8@@@{@@ @  l@@ @  k@@@!ch#h9@@@@K@  m@@@@@@ph=hLqh=hM@@>>@@ @  @@ @  J@    0 vuuvvvvv@	71@2@l,&@'@m@@@ࠠ"tyh=hOh=hQ@@@>@@ @  J@  @@h=hKh=hR@@%@ @  @డy-instance_poly%Ctypeh=hUh=hh@>@@>u>@@J@  @@J@  @>@@J@  @>ޠ>@@J@  @@J@  @>@@J@   ?9?8@@J@  @@J@  ?$@@J@  @J@  @J@  @J@  @J@  @J@  V@?ภภh=huh=hy@@@@?@@K@  %K@  )j@@@@@K@  *n@@ภJh=hzh=h@I@@@?#@@K@  #K@  .~@@ఐ"tlh=hh=h@@@?1?0@@K@  "@@K@  !K@  1K@  /@@ఐР"tyh=hh=h@@@?=@@K@   K@  4K@  3@@
@@J@  @@)h=hG@@ఐ
נ-check_regular3hh4hh@
~@@@
@
@
@
@@I@  <@I@  ;@I@  :@I@  9@I@  8  0 ;::;;;;;@@@Tn@@@@ఐ
%cpathNhhOhh@
z@@
@@ఐ
$args[hh\hh@
t@@
@@ఐ
(prev_exphhhihh@
n@@
+@@ఐ
/prev_expansionsuhhvhh@
f@@
8@@ఐ"tyhhhh@B@@
J@  LG@@U@@fH@`@@VI@  O@@hhhh@@@@K@  o
-@@
-@@డ.iter_type_expr%Btypehhhh@>°@@@@E@@I@  Y>@@I@  X@I@  W@>@@I@  V>@@I@  U@I@  T@I@  S
N@@ఐg-check_regularhihi@@@@e@`@W@L@S@K@  p@K@  o@K@  n@K@  m@K@  l
g@@ఐ,%cpathhihi@@@z
t@@ఐ$argshihi@ @@
@@ఐ(prev_exphihi"@
@@
@@ఐ/prev_expansionshi#hi2@
@@
@@hi hi3@@@@J@  
@@ఐ
"tyhi4hi6@
@@?*@@J@  fJ@  J@  
@@|
@@I@  
@@A!aa@@H@    0 @
@@@&aa'i7i>@@@@)aa@@@
@@	@@A$A@H@    0 )(()))))@@@@@A;	A@H@    0 -,,-----@8@@@@AR
A@H@    0 10011111@O@@@@AiA@H@    0 54455555@f@@@@AA@@@ @    0 98899999@@@@@@a5a7@@డ&Option$iterMiCiENiCiP@@@@@(@@G@  G@  @@G@  @G@  @
@@G@  @@G@  @G@  @G@    0 `__`````@@@@@@$bodysiQiZtiQi^@@@"@@@ࠠ$argsibimibiq@@@@@ @  @@ @  I@    0 @&>@@o@@@ࠠ$bodyibisibiw@@@
@@ @   I@  @@ibilibix@@"@ @  @డ;instance_parameterized_type%Ctypei{ii{i@@@@@I@  @@I@  @@@I@  @@I@  @@@I@  @@I@  @@I@  H@@I@  @I@  @I@  @I@  @I@  N@ɐภ&ภiiii@@@@@@J@  J@  	b@@@@@J@  
f@@ఐ
f$decliiii@
N@@
u@+type_paramsii	ii@
@@@@J@  @@J@  J@  J@  @@ఐ$body ii!ii@@@G@  G@  @@r@@I@  @@*ibih
@@డ$List$iter9ii:ii@@@@@G_@@I@  {I@   @@I@  @I@  @
@@I@  @@I@  @I@  @I@    0 LKKLLLLL@@@fp@@hq@@@@ఐ
-check_regulardiieii@@@@@@K@  <@@@K@  ;@@K@  :@@@K@  9@@K@  8@u@@K@  6@@K@  7@K@  5@@K@  4@G@@K@  3@@@K@  2@K@  1@K@  0@K@  /@K@  .@K@  -E@@ఐ$pathiiii@
@@
R@@ఐ*$argsiiij@[@@41@@L@  `@@L@  _L@  eL@  cj@@ภijij@@@@@@L@  ^@@L@  ]L@  l~@@ภijij@@@@v@@L@  [
T@@L@  \@L@  Z@@L@  YL@  t@@iiij@@@H@@J@  xA@@J@  w@J@  v@@ఐ|$argsij	 ij
@@@@@J@  (J@  ~J@  |@@@@W@@H@  I@  '@ఐ
-check_regularjjjj"@
d@@@Y@@H@  @@@H@  @@H@  @Hj@@H@  @@H@  @Qvo@@H@  
@@H@  @H@  @@H@  @Hb@@H@  A^@@H@  @H@  @H@  @H@  @H@  @H@  @@ఐˠ$pathUjj#Vjj'@@@D@@ఐߠ$argsbjj(cjj,@@@@@I@  @@I@  I@  I@  @@ภxjj-yjj/@@@@@@I@  @@I@  I@  3@@ภjj0jj2@@@@v@@I@  	@@I@  @I@  @@I@  I@  N@@ఐ$bodyjj3jj7@U@@H@@I@  I@  I@  b@@
@@G@@H@  I@  h@@@i@@@N@@H@  H@  1@@AiQiUjj8@@@sX@@H@  @H@  H@  @@ఐ;$declj9j=j9jA@#@@t@-type_manifestj9jB}@3	~@@l@@H@  H@  H@  @@@@G@  H@  7@@@I@@@@``@@@@AAA@  0 @>@@@@ATA@  0 @Q@@@@AgA@  0 @d@@@@AzA@  0 @w@@@@AA@  0 @@@@@A`9`MA@@ @    0 @@@@@@@@ࠠ6check_abbrev_recursionjQjUjQjk@@@(orig_env@@ @  GG@  @@@ @  FG@  @۠tp@@ @  ]H@  R>@@ @  EG@  O@ @  \@@ @  [G@  @@~@@ @  B@@ @  AA @  @G@  @t@@ @  G@  @@ @  ?G@  @ @  G@  @ @  G@  @ @  G@  @ @  G@  @ @  G@    0 TSSTTTTT@^X@Y@mV@@@MMRfjQjmgjQju@@@U  0 dccddddd@cmjQjQnkk/@@@@@@#envyjQjvzjQjy@@@_  0 wvvwwwww@k@@s@@@@@+id_loc_listjQjzjQj@@@g  0 @s@@t@@@@@(to_checkjQjjQj@@@_  0 @{@@u@@@@@%tdecljQjjQj@@@`  0 @s@@v@@@@@ࠠ$decljjjj@@@M@@ @  H@  
  0 @#y@@w@@@ఐ*%tdecljjjj@
@@G@  
G@  G@  @(typ_typejjjj@M@@@@jj@@@ࠠ"idjjjj@@@u1@@ @  H@    0 @1>8@9@	x@@@ఐZ%tdecljjjj@=@@,@&typ_id	jj
jj@NN
@@@@
jj@@ఐ/check_recursionjjjj@@@@@G@  #@@@G@  "@-@@G@  !@f@@G@   @@@G@  @@r@@G@  @@G@  AG@  @@G@  @G@  @G@  @G@  @G@  @G@  @G@    0 =<<=====@N[U@V@Vy@@@@ఐ(orig_envPjjQjj@԰@@AG@  HG@  @@ఐ렐#env`jjajj@Ӱ@@HG@  IG@  $@@డ8$List%assocujjvjj@@!a @" @X!b @!@ @$u@@ @$t@ @$s@ @$r@4s005s00@@3p@@@d@mlg@H@  Q@@H@  Ph@H@  N@H@  M[@@ఐ"idjjjj@e@@yh@@ఐ.+id_loc_listjk jk@@@G@  ^G@  x@@jjjk@@{@@ภ$Path&Pidentjkjk@qఐ堐"idjkjk@@@@@H@  gH@  iH@  h@@jk
jk@@@@H@  DH@  f@@ఐ1$declkk"kk&@@@@@H@  CH@  kH@  j@@ఐk(to_checkkk'@R@@G@  l@@@@@@@@&@@C@@A]A@  0 @Z@@@@ApA@  0 @m@@@@AA@  0 @@@@@AA@  0 
		




@@@@@AjQjlA@@ @  w  0 @@@@@@@@ࠠ0check_duplicates!k1k5"k1kE@@@@ݠ@@ @  G@   @@ @  G@  y@@ @  
G@  z@ @  {G@  x  0 32233333@3-@.@Lr@@@@*sdecl_listFk1kFGk1kP@@@!  0 DCCDDDDD@-Mk1k1Nouo@@@@@@ࠠ&labelsYkSkYZkSk_@@@'Hashtbl!t@@G@  sG@  ߠ&stringO@@G@  G@  @@ @  H@    0 onnooooo@,8O@/@{@@@డG'Hashtbl&createkSkbkSkp@&random&optionJ$boolE@@ @  u@@ @  t@#intA@@ @  sB!a @  e!b @  f@@ @  r@ @  q@ @  p@+hashtbl.mli_`@@/Stdlib__HashtblA0/@@-+(@@H@  @@H@  @%@@H@  d`[@@H@  @H@  @H@  S@@ภ@@B?@@I@  @@I@  `@@GkSkqkSkr@@G@@I@  I@  I@  p@@a	@@q@@kSkU@ࠠ'constrskSkwkSk~@@@@@G@  |G@  ֠@@G@  G@  @@ @  H@  @డ'Hashtbl&createkSkkSk@@@@@H@  @@H@  @@@H@   ,'@@H@  @H@  @H@  @ภ*@@@@I@  @@I@  @@G9kSk:kSk@@@@I@  I@  I@  @@4	@@O@@DkSks@@డ$List$iterQkkRkk@@@@@+@@G@  @G@  @3@@G@  
@@G@  @G@  @G@    0 _^^_____@@
@y|~x@y@{}@@@@@%sdecl
$xkkykk@@@N@@ఐ%sdeclkkkk@\@@~@@hG@  G@  G@  G@  G@  G@    0 @3(@@@*ptype_kindkkkk@y@@x@@ @  @Ġ-Ptype_variantkkkk@ࠠ"cl
%kkkk@@@@@ @  #@@ @  "  0 @)@@@@@@@@@K@  $@@@@డ$List$iterkkkk@@@@@@@I@  I@  ?@@I@  A@I@  @@
@@I@  >@@I@  =@I@  <@I@  ;  0 @S93@4@@@@@@#pcd
'kl
kl
@@@%@@@ࠠ%name'
(l!l3	l!l8@@@G@  G@  X  0 						@':@@"@@@డ'Hashtbl$findl!l;l!lG@@Š!a @  J!b @  I@@ @  @@ @  @ @  @ Z Z@@F@@@۠EG@  ]5G@  \@@K@  ^@@K@  [@K@  Z5@@ఐ^'constrsMl!lHNl!lO@@@\W@@L@  kG@@ఐn#pcdcl!lPdl!lS@U@@I@  I@  I@  }I@  zI@  Ta@(pcd_namesl!lTtl!l\@@@@@L@  {l@#txt~l!l]l!l`@@@L@  ~u@@f@@Fv@@l!l/@@డ-prerr_warning(Locationldlrldl@h@@@h@@J@  @h@@J@  h@@J@  @J@  @J@    0 @@@@@@@ఐ#pcdldlldl@@@K@'pcd_locldlldl@
@@i@@K@  K@  K@  !@@ภ(Warnings5Duplicate_definitionsllll@  < 5Duplicate_definitionsh@f@@ @ck@@ @dp@@ @et@@ @f@DNVo E@Ah Eh E@@@hi+constructorllll@@llll@@&@@K@  K@  K@  Z@ఐ#pcdll	ll@@@i@(pcd_namellll@'
@@&A@@K@  K@  K@  @@K@  {@#txt!ll"ll@V@@K@  @ఐ%%name'-ll.ll@@@%@ఐȠ%sdecl< mm= mm@@@@*ptype_nameC mmD mm%@x
@@wl@@K@  K@  K@  @@K@  @#txtU mm&V mm)@@@K@  @@Zll[ mm+@@i@@K@  K@  @@@@@@J@  K@  @
@@Z@Ġ)Not_foundpm,m=qm,mF@Sd@@@@@@M@  h@@డE'Hashtbl#addmJmXmJmc@@)!a @  Q!b @  P@@ @  @@	$unitF@@ @  @ @  @ @  @ @  @ RNN RNv@@E! @@@GK@  ڠK@  @@K@  @@@@K@  @K@  @K@  @K@  @@ఐР'constrsmJmdmJmk@X@@d̠@@L@  @@ఐࠐ#pcdmJmlmJmo@ǰ@@j@(pcd_namemJmpmJmx@
@@L@  @@L@  @#txtmJmymJm|@@@
L@   @@ఐ%sdeclmJm}mJm@u@@m@*ptype_namemJmmJm@7
@@6L@  @@L@  
@#txtmJmmJm@D@@
L@  
@@@@@@K@  K@  @@ll@@@@J@  J@  @@A!kl"mJm@@@P@@J@  O@J@  NJ@    0 %$$%%%%%@B@@@@ఐ"cl5mm6mm@M@@h@@J@  MJ@  "J@   X@@q@@@@I@  $I@  %@Ġ,Ptype_recordPmmQmm@t֠ࠠ"fl
&YmmZmm@@@tݠ@@ @  +@@ @  *@@@
@@=@@K@  ,@@@@డ6$List$itersmmtmm@9@@@@5@@I@  EI@  -:@@I@  /@I@  .@7
@@I@  ,4@@I@  +@I@  *@I@  )  0 @82@3@@@@@@[
,ঠ(pld_namemmmm@ࠠ%cname
)mmmm@@@@@ @  G@@ @  F&@'pld_locmmmm@ࠠ#loc
*mmmm@@@@@ @  J:@@@mmmm@@L=@@@ࠠ%name'
+n
nn
n!@@@nG@  G@  P  0 @Q:4@5@$@@@@@డ'Hashtbl$findn
n$n
n0@ϰ@@@G@  U"G@  T@@K@  V@@K@  S@K@  R"@@ఐ&labelsn
n1n
n7@@@@@L@  c4@@ఐs%cnamen
n8n
n=@?@@@@L@  rG@#txt%n
n>&n
nA@Z@@L@  tP@@>@@4Q@@,n
n@@డ6-prerr_warning(Location9	nEnS:	nEni@k@@@k@@J@  @k@@J@  k@@J@  @J@  @J@    0 DCCDDDDD@p{u@v@]@@@@ఐ#locW	nEnjX	nEnm@z@@k@@K@  K@  K@  @@ภ(Warnings5Duplicate_definitionsl
nnnm
nnn@%labeltnnunn@@wnnxnn@@@@K@  K@  K@  7@ఐ㠐%cnamennnn@@@@@K@  K@  K@  @@K@  O@#txtnnnn@Ѱ@@K@  W@ఐԠ%name'nnnn@_@@b@ఐC%sdeclnnnn@1@@'q@*ptype_namennnn@
@@@@K@  K@  K@  @@K@  @#txtnnnn@@@K@  @@
nnn~nn@@l#@@K@  K@  @@@@@@J@  K@  @
@@	@Ġ)Not_foundnnnn@U@@@@:@@M@  @@డ'Hashtbl#addnono
@{@@@K@  ̠K@  @@K@  @@w@@K@  @K@  @K@  @K@  8@@ఐà&labelsnono@@@@@L@  J@@ఐ%cname0no1no@U@@L@  @@L@  _@#txt=no>no@r@@
L@  g@@ఐ۠%sdeclOnoPno$@ɰ@@x@*ptype_nameVno%Wno/@
@@L@  @@L@  @#txtcno0dno3@@@
L@  @@k@@%@@K@  K@  @@nmn@@,@@J@  J@  @@Aummvno4@@@6@@J@  =@J@  <J@    0 yxxyyyyy@@@@@ఐ0"fl
o5o?
o5oA@@@C@@J@  ;J@  J@  	@@"@@TI@  @Ġ.Ptype_abstractoBoHoBoV@{@@@@}@@K@  0@@@@ภjoBoZoBo\@i@@@nI@  @Ġ*Ptype_openo]oco]om@w@@@@@@K@  4+@@+@@ภo]oqo]os@@@@I@  #5@@Akk@@@@H@  6H@  5  0 @<@@@@Akko]ot@@@@@H@  @H@  H@  8  0 @y@@@@ఐ*sdecl_listouoy@s@@G@  :G@  |@@@@@	@@{@@AA@@@ @  =  0 @@@@@@@@ࠠ.name_recursion
-oo oo@@@@@@ @  G@  ?@=@@ @  G@  F@@@ @  ~G@  MG@  N@ @  OG@  G@ @  HG@  @@ @  AG@  >  0 @@@3z@@@@%sdecl
/-oo.oo@@@*  0 +**+++++@64oo5qq@@@@@@"id
0@ooAoo@@@4  0 >==>>>>>@ @@@W@@@@@$decl
1QooRoo@@@<  0 ONNOOOOO@H@@h@@@@ఐ$declaooboo@L@@u@@VG@  |G@  xG@  G@  WG@  P  0 jiijjjjj@(@@@ঠ)type_kind}oo~op@Ġ-Type_abstractopop@@@@@@@J@  d@,type_privatep2p8p2pD@Ġ'Privatep2pGp2pN@@@@@@@J@  i0@-type_manifestpppp&@Ġ$Somepp)pp-@ࠠ"ty
2pp.pp0@@@>@@ @  qM@@@@@E@@J@  s@@J@  rU@@@oop2pQ@@_X@@_X@ఐ-is_fixed_typep2pWp2pd@@@@@@H@  {@@H@  z@H@  y  0 @n,&@'@@@@@ఐ%sdeclp2pep2pj@@@G@  G@  B@@ @@@@H@  I@  @@ࠠ"ty
3 pnpvpnpx@@@9@@ @  I@    0 @,@@@డ$repr%Ctypepnp{pnp@S@@@S@@I@  Q@@I@  @I@  @@ఐt"ty*pnp+pnp@N@@j@@J@  J@  J@  ,@@ 
@@0-@@6pnpr@@@ࠠ#ty'
4AppBpp@@@i)type_expr@@ @  I@    0 FEEFFFFF@pQK@L@_@@@డ}&newty2%Btype[pp\pp@@@@ @%=@)type_desc@@ @%<%@@ @%;@ @%:@ @%9@_nn_n@@G@@@@@I@  @@@I@  7@@I@  @I@  @I@  5@@ఐ"typppp@A@@@@J@   @  I@%levelpppp@@@?@@J@  J@  J@  W@@ఐ"typppp@c@@8@@J@   @  k@$descpppp@2@@[@@J@  J@  J@  y@@j
@@z@@pp@@డ*deep_occur%Ctypepppp@@)type_expr@@ @*
@)type_expr@@ @*N@@ @*@ @*
@ @*	@ '' ''@@ W@@@@@H@  @@@H@  @@H@  @H@  @H@    0 @@@@@@@ఐ
"ty
pppp@@@7@@I@  I@  I@  @@ఐݠ#ty'pppp@"@@D@@I@  I@  I@  ,@@T
@@@@H@  I@  2@@ࠠ"td
58pp9pp@@@@@ @  I@    0 ;::;;;;;@D@@@ภ'TconstrGppHpp@ภ$Path&PidentRppSpq@ఐ "id\pq]pq@@@RG@  G@  I"@@@@@@I@  I@  (@ఐ%$declrpqspq
@@@
5@+type_paramsypqzpq@
@@@@I@  @@I@  I@  I@  G@డV#refpqpq@ڰ@@@@@I@  I@  I@  I@  ߠ@@I@  @I@  c@@ภ$Mnilpqpq @@@@J@  q@@!@@ߠ@@I@  I@  I@  z@@tpq!@@-@@ @  @@pp@@డ)link_type%Btypeq%q+q%q:@@)type_expr@@ @&@)type_expr@@ @&	@@ @&@ @&@ @&@ && &&@@ Z@@@@@I@  @@@I@  @@I@  @I@  @I@    0 @@@
@@@@ఐ"tyq%q;q%q=@@@7@@J@  J@  
J@  @@డ?&newty2%Btypeq%q?q%qK@°@@@@@J@  @@@J@  @@J@  @J@  @J@  7@@ఐ9"ty9q%qL:q%qN@@@@@K@  # @  !K@%levelEq%qOFq%qT@@@@@K@  K@  $K@  "Y@@ఐ!"tdYq%qUZq%qW@c@@@@K@  K@  &K@  %m@@dq%q>eq%qX@@@@J@  
J@  (K@  w@@	@@@@H@  +I@  	}@  8 @@H@  F@@H@  EH@  B@@H@  JH@  H@@H@  NH@  L@@H@  RH@  P졠-type_manifestqZqkqZqx@ภ$SomeqZq{qZq@ఐm#ty'qZqqZq@@@<@@I@  7I@  >I@  @I@  ?@@@@	@@I@  6I@  =@@@H@  [@@H@  ZH@  W  @@H@  a@@H@  `H@  ]@@H@  eH@  c@@H@  iH@  g@@H@  mH@  k@@H@  qH@  o@@H@  uH@  s@@H@  yH@  w@@H@  }H@  {@ఐà$declqZqaqZqe@@@@qZq`qZq@@ @H@@!@X@@@ఐӠ$decl qq!qq@@@@$pp@@@`@@@@@
@@-qq.qq@@@@@@ఐ預$decl6qq@԰@@@@A9oo@@   0 54455555@@@@@AA@&  0 76677777@@@@@A	A@1  0 98899999@@@@@AA@@:5@ @    0 =<<=====@@@@@@@%@ࠠ4name_recursion_decls
6O!qqP!qq@@@@(@@ @  G@  @@ @  G@  @@@ @  G@  @@ @  G@  @ @  G@  @@ @  G@  2G@  ʠG@  @ @  G@  @@ @  G@  @ @  G@  @ @  G@    0 @o@@@@@@&sdecls
8!qq!qq@@@H  0 @T!qq#rr#@@@@@@%decls
9!qq!qq@@@K  0 @ ^@@@@@@డ$List$map2"qq"qq@@@!a @"@!b @"!c @"@ @#@ @#@@@ @#@v@@ @#c@@ @#@ @#@ @#@ @#@  [@@^*)@@@@@n@G@  @G@  @@@G@  @@@G@  ~}@@G@  @G@  @G@  @G@    0 @Q]@T@@@@@@%sdecl
:"qq"qq@@@@@@
=ࠠ"id
;#"qq$"qq@@@  0 !  !!!!!@&@@:@@@ࠠ$decl
<1"qq2"qq@@@@@5"qq6"qq@@ɠ@J@  @@ఐ""idE"qqF"qq@@#@Y@@  0 EDDEEEEE@&. @@_@@@ఐZ.name_recursionY"qqZ"qr@̰@@@(@@H@  @@@H@  @@@H@  @H@  @H@  @H@  !@@ఐg%sdeclu"qrv"qr@O@@G@  G@  1@@ఐb"id"qr	"qr@@@@ >@@ఐa$decl"qr"qr@G@@K@@=@@L@@"qq"qr@@O@@AeA@@2@H@  H@    0 @x@@@@A "qq¡"qr@@@J@<%@H@  @H@  H@    0 £¢¢£££££@@@@@ఐ&sdecls³#rr´#rr@@@bG@  G@  @@ఐ%decls#rr!@"@@aG@  G@  @@&@@J!@@A'A@f  0 @@@@@A1)A@@vj@ @    0 @0@@@@.@.-@C@ࠠ4check_redefined_unit
>'rr'rr@@@@0type_declaration@@ @  G@  s.@@ @  G@  @ @  G@    0 @c@@@@@@"td
@@'rr'rr@@@@ @    0 @,'rr1tt@@@@
@г))Parsetree+'rr'rr@@2@@ @  @@'rr'rr@@@9@@  РĠ)Parsetree'(rr((rr@@	  0 &%%&&&&&@*8/@2@?@@@@A  0 *))*****@@@2(rr@@@ࠠ3is_unit_constructor
A=)rr>)rs@@@@8@@ @  H@  ^@@ @  H@  @ @  H@    0 IHHIIIII@@@@@"cd
CY)rsZ)rs	@@@  0 WVVWWWWW@.$`)rra)rs"@@@@@డ0j)rsk)rs@@@@@@H@  H@  @@@H@  @H@  
@H@    0 tssttttt@*8@!@Í@@@@ఐ6"cdË)rsÌ)rs@@@LH@  H@  @(pcd_nameÕ)rsÖ)rs@
@@*@@I@  #@#txtà)rsá)rs@հ@@4I@  ,@@"()í)rsî)rs!@@ð)rsP@@BI@  %:@@)S@@i;@@A\TA@@ql@ @  (  0 òññòòòòò@[@@@@Y@ఐȠ"td*s&s.*s&s0@@@@@ @  +  0 @@@@@@ঠ*ptype_name+s6s<+s6sF@ঠ#txt+s6sK+s6sN@ࠠ$name
D+s6sQ+s6sU@@@@@ @  >(@@@+s6sI+s6sW@@# @@J@  BJ@  @@@J@  ?4@*ptype_kind-svs|-svs@Ġ-Ptype_variant	-svs
-svs@Ġ}-svs-svsAࠠ"cd
E	-svs@@@
@@ @  UW@Ġ}#-svsAA@@A@ç@@J@  [@@J@  Ze@@@--svs@@$#@@J@  ]@@J@  \n@@@-%@@@@J@  ^r@.ptype_manifest?,sYs_@,sYsm@Ġ$NoneG,sYspH,sYst@@@@@
_@@J@  h@@J@  g@@@R+s6s:S-svs@@r@@J@  jJ@  i@@@ఐ&3is_unit_constructorc.ssd.ss@@@@Z@@H@  u~@@H@  t@H@  s  0 ihhiiiii@@@ă^Y@Z@ą@@@@ఐf"cd.ssĀ.ss@@@x@@I@  |I@  ~I@  }@@'
@@\@@H@  I@  {!@డ-prerr_warning(Locationě/ssĜ/ss@t@@@t@@H@  @t@@H@  t@@H@  @H@  @H@  =@@ఐ"tdķ/ssĸ/ss@@@@@I@   @  Q@)ptype_loc/ss/ss@z@@u@@I@  I@  I@  _@@ภ(Warnings/Redefining_unit/ss/st@  < /Redefining_unitt@p@@ @@AkVo E@At hwyt hw@@@t Lఐ$name/st/st@@@@@I@  I@  I@  @@/ss/st@@uG@@I@  I@  @@f@@@@0t
t0t
t@@%@@J@  lE@@E@@ภϰ1tt@@@@)G@  N@@A*s&s(@@+  0 @P@@@@@-@(rr@@/  0 @@@@@AA@@;3@ @    0 @@@@@@@2@ࠠ0add_types_to_env
F,3t t$-3t t4@@@@@@ @  G@  נ@@ @  G@  @ @  G@  @@ @  G@  @@@ @  G@  G@  @ @  G@  @ @  G@    0 POOPPPPP@gz@{@i@@@@%decls
Hc3t t5d3t t:@@@3  0 a``aaaaa@?j3t t k6tt@@@@@@#env
Iv3t t;w3t t>@@@+  0 tssttttt@ I@@ō@@@@డL$List*fold_rightŉ4tAtCŊ4tAtR@@@!a @"@!b @"@ @#@ @#@g@@ @#@@ @#@ @#@ @#@J hhK h@@I\@@@@r@_G@  @G@  @G@  @|{@@G@  @

@G@  @G@  @G@    0 ŲűűŲŲŲŲŲ@?Kl@B@@@@@@
Mࠠ"id
J5tSt]5tSt_@@@@ࠠ$decl
K5tSta5tSte@@@"@@5tSt\5tStf@@@J@  )@@@#env
L5tStg5tStj@@@G@    0 @:*@%@"@@@@@@ఐ(add_type5tStn 5tStv@Ӱ@@@@H@  @@@H@  @@@H@  @@@H@  @@H@  @H@  @H@  @H@  @H@    0 @+9/@0@-@@@̐ภ,%5tSt~&5tSt@+@@@@@I@  I@  
@@ఐk"id75tSt85tSt@G@@!@@ఐn$declD5tStE5tSt@R@@.@@ఐk#envQ5tStR5tSt@8@@iG@  
G@  >@@Y@@
G@  A@@Aq	A@@@H@  H@    0 ZYYZZZZZ@p@@@@Aa5tStWb5tSt@@@.@@H@  @H@  H@    0 dccddddd@@@@@ఐ%declst6ttu6tt@@@FG@  G@  @@ఐ#envƄ6tt@̰@@8G@  @@@@8@@AA@=  0 ƄƃƃƄƄƄƄƄ@@@@@A( A@@XA@ @    0 ƈƇƇƈƈƈƈƈ@'@@@@%@%$@:@ࠠ0transl_type_decl
Nƚ9ttƛ9tt@@@@C"@@ @  G@  @@@ @  G@  $@$listI@@ @  H@  @@ @  G@  +I@@ @  9@@ @  8G@  5/G@  6@ @  7G@  ,@ @  -G@  %@ @  &G@  @ @  G@    0 @~@@@@@@#env
P9tt9tt@@@B  0 @N9tt    @@@@@@(rec_flag
Q9tt9tu@@@L  0 @ X@@
@@@@@*sdecl_list
R9tu9tu@@@T  0 @`@@@@@@డ$List$iter:uu:uu@߰@@@@G@  eG@  hG@  G@  $G@  QG@  G@  G@  G@  ^G@  aG@  G@  G@  G@  G@  G@  wG@  RH@  8@@H@  :@H@  9@+@@H@  7@@H@  6@H@  5@H@  4  0 JIIJJJJJ@IU@L@c@@@@ఐ4check_redefined_unit]:uu ^:uu4@@@@~@@I@  Ow@@I@  N@I@  M@@ఐr*sdecl_listr:uu5s:uu?@#@@G@  G@  kG@  xG@  FG@  SG@  .1@@h@@@@G@  VH@  E7@@ࠠ+fixed_types
Sǐ<uhunǑ<uhuy@@@ttH@  \@@ @  jH@  W  0 ǕǔǔǕǕǕǕǕ@K@@@డj$List&filterǧ<uhu|Ǩ<uhu@tݰ@@@@t@@H@  _@H@  ^@tؠ@@H@  ]tנ"@@H@  [@H@  Z@H@  Y!@@ఐ-is_fixed_type<uhu<uhu@@@@@@I@  t@@I@  s@I@  r6@@ఐڠ*sdecl_list<uhu<uhu@@@dC@@7@@ID@@<uhuj@@@ࠠ*sdecl_list
T=uu=uu@@@:8@@ @  H@  {  0 @jd@e@@@@డ!@JwwJww@@Q!a @@@ @@\
@@ @&@@ @@ @@ @@7ww7ww<@@ @@@h@@H@  @qn@@H@  ;r@@H@  @H@  ~@H@  }  0 )(()))))@:@@@@డ$List#map>>uu?>uu@ݰ@@@@!I@  !I@  @I@  @٠	@@I@  ؠ@@I@  @I@  @I@  %@@@%sdecl
U`?uua?uu@@@5@@@ࠠ*ptype_name
Vm@uun@uu@@@q#locb@@ @  K@  @@ @  K@    0 yxxyyyyy@(<@@Ȓ@@@@ࠠ#loc
WȌAuvȍAuv@@@x@@ @  L@  @ະ  , )loc_startx@@ @=&Stdlib&Lexing(position@@ @:@@  , 'loc_end
&Lexing(position@@ @;@A
@Ax[x[7@@yB  , )loc_ghost$boolE@@ @<@B@Ax\8:x\8J@@yC@AxZ xZ@@yA+@@L@  L@  Ƞ$%@@L@  L@  ̠(Location)loc_ghostAuv#Auv5@ภAuv8Auv<@@@@/@@M@  M@  k@@ఐ%sdeclAuv	Auv@w@@I@  I@  $I@  I@  I@  I@  @*ptype_nameAuvAuv@<@@;6@@M@  @@M@  @#locAuvAuv@=#@@yp@@L@  L@  L@  @ Auv!Auv>@@@@#Auu@@డQ%mkloc-BvBvM.BvBvR@@!a @@!t@@ @̠@@ @@ @@ @@2.bb3.bb@@@@@@@@K@  ܠ@@K@  @K@  @K@    0 MLLMMMMM@@@f@@@@డ'!^bBvBvicBvBvj@c@@@c@@L@  @c@@L@  c@@L@  @L@  @L@   @@ఐ$%sdeclɀBvBvTɁBvBvY@@@1@*ptype_nameɇBvBvZɈBvBvd@
@@d@@M@  M@  M@  @@M@   C@#txtəBvBveɚBvBvh@ΰ@@M@  K@@$#rowɥBvBvkɦBvBvo@@EɨBvBvp@@d.@@M@  M@  
M@  ^@@ɱBvBvSɲBvBvq@@9a@@ఐ1#locɽBvBvrɾBvBvu@k@@@@L@  L@  L@  u@@
@@Vv@@@WK@@@uu
@@@ࠠ*ptype_kind
XDvvDvv@@@@@ @  K@    0 @`vp@q@@@@ภ.Ptype_abstractDvvDvv@@@@@@ @  @@Dvv@@@ࠠ.ptype_manifest
YEvvEvv@@@ @  @@ @  K@    0 @'4.@/@@@@ภ$None
EvvEvv@@@@Р@@ @  @@Evv@@@ࠠ)ptype_loc
Z Fvv!Fvv@@@zy@@ @  :K@     0 #""#####@&5/@0@<@@@ະ@@K@  5K@  3@@K@  9K@  7(Location)loc_ghostEFvwFFvw@ภSLFvwMFvw@R@@@@@L@  ,L@  0,@@ఐ%sdecl^Fvv_Fvv@@@c9@)ptype_loceFvvfFvv@
@@z@@K@  <K@  8K@  2G@pFvvqFvw@@MJ@@sFvv@@    *ptype_name}Hw7wB~Hw7wL@ఐ	A	A@@@K@  IK@  PK@  N@@K@  M  0 ʌʋʋʌʌʌʌʌ@jwq@r@ʥ@@@@@J@  @@J@  @@J@  @J@  @J@  @@J@  J@  }@@J@  @@J@  @@J@  @J@  @@J@  J@  *ptype_kindHw7wNHw7wX@ఐ	AͰ	A@@@K@  _K@  aK@  `I@@@J@  J@  .ptype_manifestHw7wZHw7wh@ఐ	AŰ	A@	@@K@  j@@K@  iK@  mK@  kj@:8@@J@  J@  )ptype_locHw7wj	Hw7ws@ఐ	A}	A@@@K@  tK@  xK@  w@@ఐĠ%sdecl Gw#w,!Gw#w1@@@#@$Gw#w+%Hw7wu@@@@@@@@ %@;@@L@`@@@@A+?uu,Hw7wv@@@@J@  J@  =@@ఐ+fixed_types;Iwww}<Iwww@G@@Р @@J@  J@  J@  @@	@@E@@I@  I@  I@  [@@ఐY*sdecl_listYJwwZJww@
@@.@@@@ni@@^=uu@@@ࠠ%scope
[iNwwjNww@@@#intA@@ @  H@    0 onnooooo@@@ˈ@@@డY,create_scope%Ctype˄Nww˅Nww@@F@@ @(j@@ @(i@ @(h@?x		@x	
@@>\@@@@@H@  ,@@H@  @H@  )@@ภc˥Nww˦Nww@b@@@!@@I@  I@  9@@*@@@:@@˯Nww
@@@ࠠ(ids_list
\˺Oww˻Oww@@@H@@ @  H@  ܠ@@ @  H@  @ @  H@  @@ @  H@    0 @`pj@k@@@@డʦ$List#mapPwwPwx @@@@@H@  *@H@  @|@@H@  {3@@H@  @H@  @H@    0 @#@@@@@%sdecl
]PwxPwx@@@@@డ
-create_scoped%IdentQxxQxx(@%scope#intA@@ @ @
@@ @ @@ @ @ @ @ @ @``@@C@@@@I@  @@@I@  (@@I@  @I@  @I@    0 98899999@lDW@;@R@@@)ఐ㠐%scopeLQxx*MQxx/@y@@6@@J@  J@  J@  @@ఐd%sdecldQxx0eQxx5@&@@H@  H@  ,@*ptype_namenQxx6oQxx@@ã
@@âS@@J@  J@   J@  @@J@  >@#txt̀QxxA́QxxD@@@J@  F@@o@@G@డ#Uid"mk̒RxFxL̓RxFxR@@@@@I@  @@I@  @I@  _@డ-get_unit_name#Env̬RxFxb̭RxFxs@y@@@y@@J@  v@@J@  @J@  y@@ภ}̿RxFxtRxFxv@|@@@@@K@  K@  @@RxFxaRxFxw@@@@J@  J@  K@  @@@	@@@@
@@@@APwxSxxx}@@@@I@  I@  !@@ఐ*sdecl_listSxxx~Sxxx@p@@y@@I@  I@  #I@  "@@
@@1@@Oww
@@డ)begin_def%Ctype UxxUxx@@@@@@H@  *@@H@  )@H@  (  0 @9WQ@R@@@@@ภհUxx@@@@@@I@  1I@  5@@@@k@@G@  8H@  0@@ࠠ(temp_env
^.Wxx/Wxx@@@G@  G@  4G@  CG@   G@  !G@  G@  G@  G@  G@  CG@  DG@  5G@  8G@  6G@  7G@  G@  G@  G@  G@  G@  G@  G@  G@  yH@  9  0 ]\\]]]]]@W@@@డ2$List*fold_left2oXxxpXxx@@@!a @"@!b @"@!c @"@ @$
@ @$@ @$@@=@@ @$
@D@@ @$	 @ @$@ @$@ @$@ @$@>   ?  !'@@=`,+@@@@zG@  G@  G@  G@  G@  G@  H@  ?@H@  C@T@@H@  @@H@  @H@  H@  A@H@  F@H@  E@H@  D@!@8@@H@  B@7@@H@  @-@H@  >@H@  =@H@  <@H@  ;j@@ఐ堐*enter_typeXxxXxx@@@@@@J@  h@c@@J@  c@ű@@J@  g@@@J@  e@@J@  f@J@  d@J@  b@J@  a@J@  `@J@  _@@ఐ(rec_flag XxxXxx@@@[G@  G@  '@@XxxXxx@@@@@I@  @@@I@  @µ@@I@  @@I@  @I@  @I@  @I@  @I@  @@ఐM#env)Xxx*Xxx@3@@G@   @@ఐN*sdecl_list8Xxx9Xxy@İ@@@@I@  YI@  I@  @@ఐ(ids_listMXxyNXxy
@B@@à@@I@  XI@  I@  @@@@@@ZWxx
@@@ࠠ,current_slot
_eZy2y8fZy2yD@@@/a@@G@  uG@  n@@G@  rG@  y@@G@  G@  @@ @  H@  @@ @  H@    0 ΀΀΀΀΀΀@{]W@X@Ι@@@డW#refΒZy2yGΓZy2yJ@۰@@@*נ-@@H@  @H@  @@ภ$NoneΤZy2yKΥZy2yO@s@@@:H@  $@@@@@%@@ΫZy2y4@@@ࠠ+warn_unused
`ζ[ySyYη[ySyd@@@$boolE@@ @  H@    0 μλλμμμμμ@=b\@]@@@@డ(Warnings)is_active(Warnings[ySyg[ySyy@@~@@ @ @@ @@ @@~ }hh~ }h@@~ Z@@@~@@H@  -@@H@  @H@  *@@ภ(Warnings7Unused_type_declaration[ySy{[ySy@  < 7Unused_type_declaration~@@@ @l@ARVo E@A~ I~ I@@@m 
[ySy@@[ySy
[ySy@@@@I@  I@  I@  T@@[ySyz[ySy@@@@I@  I@  \@@K@@c]@@[ySyU	@@@ࠠ)ids_slots
a*\yy+\yy@@@@d@@ @  H@  Ơ@ @  @ @  H@  
@ @  H@  p#Uid!t@@ @  @@ @  @@ @  H@  @@ @  H@  @ @  H@  @ @  H@    0 \[[\\\\\@@@u@@@@#ids
eࠠ"id
cv\yyw\yy@@@C  0 tssttttt@T}\yy~n|u|@@@@ࠠ$_uid
dφ\yyχ\yy@@@M@@@@WR@J@  @''ϐ\yyϑ\yy@ϓ\yyϔ\yy@@@@ఐ(rec_flagϞ]yyϟ]yy@@@  0 ϜϛϛϜϜϜϜϜ@+3p@.@Ϸ%l@ @ϹBwr@ @  @@Ͽ@@@Ġ(Asttypes)Recursiveϻ^yyϼ^yy@g@@@@	@@	@ఐ+warn_unused^yy^yz@e@@@@I@  I@  -@@ࠠ$slot
fazzazz@@@I@  @@ @  J@  @@ @  J@    0 @H@@@డθ#refazzazz@<@@@8@@J@  @J@  @@ภ$azzazz@#@@@'J@   @@@@-!@@azz@@@ࠠ"td
gbzzbzz@@@@@ @  J@    0 @~LF@G@2@@@డ͘)find_type#Env.bzz/bzz@@@@@@J@  @Ĺ@@J@  @@J@  @J@  @J@   @@ภ$Path&PidentIbzzJbzz@ఐݠ"idSbzzTbzz@@@ 8@@WbzzXbzz@@@@K@  K@  @@@ఐ:(temp_envhbzzibzz@@@M@@>@@QN@@mbzz@@డ6set_type_used_callback#Env|cz{}cz{@@0type_declaration@@ @@@@T@@ @X@@ @@ @\@@ @@ @`@@ @@ @@ @@%;;&;;@@ %$@@@"@@J@  @@@ @@J@  @@J@  @J@  @@J@  @J@  
@@J@  @J@  @J@  
  0 гввггггг@@@@@@@ఐ"tdd{{&d{{(@@@L@@K@  &K@  (K@  '  0 @@@@@@,old_callback
he{){8e{){D@@@@W@@L@  ;V@@L@  :@L@  91@@డϹ~f{H{[f{H{\@}@@@8Ƚ@@ @  KL@  C@@L@  D@L@  B  0 @K.@{@@ @  8z@@ @  7@ @  6@-@@@@@ఐ,current_slot$f{H{h@V&@@^&@@M@  IM@  LM@  J @@0@@&!@Ġ$Some-g{n{}.g{n{@rࠠ$slot
i6g{n{7g{n{@@@7@@@
@@@@N@  R<@@<@@డ&(Fg{n{Gg{n{@%@@@G@  `@@L@  a@"@@L@  _@L@  ^@L@  ]  0 POOPPPPP@T%@ @i@@@@ఐ-$slotcg{n{dg{n{@@@@@ภ*Amg{n{ng{n{@oఐc"tdyg{n{zg{n{@@@@@M@  v @  t,@(type_uidхg{n{цg{n{@l@@
3@డWёg{n{ђg{n{@@@@֠"@@M@  z#@M@  xE@@ఐn$slotѤg{n{@N@@6G@  G@  kT@@@@5G@  G@  pX@@5
@@7G@  q[@@N
@@@@L@  L@  a@Ġ$Noneh{{h{{@Ə@@@@ɃT@@N@  W@@@@డИ$List$iteri{{i{{@@@@@M@  @@M@  @M@  @
@@M@  @@M@  @M@  @M@  @@డa.mark_type_used#Envi{{i{{@@@@ @@@ @@ @@Č BBč Bc@@ƃ E@@@@@N@  @@N@  @N@  @@డ'get_refi{{i{{@@&Stdlib#ref$listI!a @@@ @@@ @
@@ @@ @@.utils/misc.mli.../
@@$Misc H%$@@@"dI@  @@N@  @@N@  @@N@  @N@  N@@ఐ$slotZi{{[i{{@<@@@;@@O@  @@O@  O@  O@  g@@ji{{ki{{@@#@@N@  N@  N@  r@@
@@@@L@  M@  x@ఐ,old_callback҃j{|
҄j{|@@@@@@L@  @@L@  @L@  @@ภTҖj{|җj{|@S@@@@@M@  M@  @@@@
@@L@  M@  @@@L@  @@AҨf{H{U@@@@K@  K@    0 ҩҨҨҩҩҩҩҩ@@@@@AҰe{){3ұk||(@@@@,@@K@  %+@@K@  $@K@  #*@@K@  "@K@  !K@  @@F@@@@I@  J@   @ఐf#idsl|*|2l|*|5@*@@@ภ$Somel|*|7l|*|;@ ఐ
$slotl|*|<l|*|@@ǰ@@@@@@ʩ@@I@  @@@@	@I@  "@w
@@#@@@@@@@Ġ(Asttypes)Recursivem|A|Gm|A|Y@@@@@Ze@@Ze@Ġ(Asttypes,Nonrecursivem|A|\m|A|q@O@@@@gr@@gr@@@@hs@@ఐ#idsn|u|}n|u|@w@@H@  @ภ$None*n|u|@@@@H@  @@I@   @@@@H@  @@A6]yy@@N@@AA@@@ @    0 54455555@@@@@@@ࠠ2transl_declaration
jEp||Fp||@@@@@@ @  H@  @@@ @  }F@@ @  ~@ @  |H@  )@@ @  ,H@  @ @  H@  @@ @  {H@  @ @  H@  @ @  	H@    0 mllmmmmm@NH@I@ӆ@@@@*name_sdecl
kӀp||Ӂp||@@@7  0 ~}}~~~~~@@@@@@M
oࠠ"id
lӒp||ӓp||@@@;  0 ӐӏӏӐӐӐӐӐ@$L@@ө@@@ࠠ$slot
mӠp||ӡp||@@@<@@Ӥp||ӥp||@@OC@J@  @@డzӴq||ӵq||@@@@UI@  @@I@   @@@I@  @I@  @I@    0 ӿӾӾӿӿӿӿӿ@19n@4@-c@(@@@@@ఐp,current_slotq||q||@@@#@@J@  *J@  -J@  +@@ఐJ$slotq||q||@#@@)@@@@:@@H@  0I@  )/@డz-warning_scope2Builtin_attributesr|| r||@@@@@H@  :@@H@  9@@@H@  8@@@@H@  7H@  5@H@  6@H@  4@H@  3@H@  2U@5ภ@@74@@I@  O@@I@  Nb@@ఐ*name_sdecl2s|}3s|}@@@H@  H@  UH@  SH@  
x@0ptype_attributes@s|}
As|}@ˀ@@R@@I@  KI@  VI@  T@@@
nĠWt}})Xt}}+@@@@@[@@L@  ^@@ఐŠ2transl_declarationft}}/gt}}A@k@@@k@@J@  k@:@@J@  j@@@J@  h_@@J@  i@J@  g@@J@  f@J@  e@J@  d@J@  c@@ఐ^(temp_envԌt}}Bԍt}}J@@@@@ఐ*name_sdeclԙt}}KԚt}}U@@@c@@ఐ"idԦt}}Vԧt}}X@@@O@@D@@;@@Aԫt}}$Ԭt}}Y@@@Ȳ@@I@  J@I@  II@  @@	@@F@
@@G@@AA@d  0 ԲԱԱԲԲԲԲԲ@"@@@@A9
A@@mh@ @  I@@Լp||@@@ࠠ&tdecls
pv}_}ev}_}k@@@M@@ @  H@  @@ @  H@    0 @d@@@@@డӨ$List$map2w}n}rw}n}{@$@@@@
H@  @7@@H@  ɠ@@H@  @H@  Ƞ@@H@  @H@  H@  5@H@  @H@  @@@H@  @@@H@  D@@H@  @H@  @H@  @H@  ?@@ఐ٠2transl_declarationw}n}|w}n}@I@@@@@I@  @m@@I@  @@I@  @I@  @@I@  @I@  k@@I@  @I@  @I@  h@@ఐ
]*sdecl_listGw}n}Hw}n}@	Ӱ@@e@@I@  I@  I@  }@@డ$$List#mapaw}n}bw}n}@ @@@@wH@  xH@  I@  @I@  I@  H@  I@  @I@  @@@I@  
@@I@  @I@  @I@  @@ఐb)ids_slotsՌw}n}Սw}n}@@@@@@J@  (@J@  
/@J@  ` R@@J@  @@J@  @@J@  @@J@  @J@  @J@  @@ఐ	(ids_listչw}n}պw}n}@@@N[@@J@  J@  J@   @@w}n}w}n}@@c@@I@  I@  I@  @@
@@@@v}_}a@@@ࠠ%decls
qx}}x}}@@@j*@@ @  (H@  $n@@ @  +H@  %@ @  &H@  @@ @  H@  	  0 @!4.@/@	@@@డ$List#mapy}}y}}@ä@@@@?@@H@  ,H@  -@H@  @á
@@H@  à6@@H@  
@H@  @H@    0 @&@@@@@%tdecl
r)y}}*y}}@@@ @@ఐ%tdecl8y}}9y}}@/@@L@@5H@  )H@  'H@     0 =<<=====@N#
@@@&typ_idHy}}Iy}}@o@@`	@ఐ0%tdeclUy}}Vy}}@@@@(typ_type\y}}]y}~@oh
@@n@@`y}}ay}~@@| @@Acy}}dy}~@@@]@I@  I@  /t@@ఐ&tdeclssy}~ty}~
@~@@q@@I@  I@  2I@  0c@@z@@@@րx}}
@@డQkm֋z~~֌z~~@j@@@РU$@@H@  GH@  :@@H@  ;@	l@@H@  9@H@  8@H@  7  0 ֚֙֙֚֚֚֚֚@@@ֳ@@@@ఐH,current_slot֭z~~֮z~~@@@$@@I@  EI@  HI@  F@@ภ$Nonez~~ z~~$@ː@@@1H@  L'@@@@@@G@  OH@  D-@ఐ 0check_duplicates|~C~E|~C~U@@@@ǏΩ@@H@  U@@H@  TǏ@@H@  S@H@  RG@@ఐ*sdecl_list|~C~V|~C~`@|@@Ǫ@@I@  ]I@  `I@  _\@@%@@H@@G@  dH@  \b@@ࠠ'new_env
s~~~~~~@@@	H@  e  0 
		




@p@@@ఐ0add_types_to_env~~~~~~@G@@@@@H@  l˷@@H@  m@H@  k@@H@  j@˯@@H@  i@H@  h@H@  g"@@ఐ_%decls;~~~<~~~@@@
@@I@  |@@I@  }@I@  {@@I@  zI@  I@  ~A@@ఐ~#envZ~~~[~~~@d@@	N@@E@@
+O@@_~~~@@ఐ|(rec_flagk~~l~~@d@@  0 ihhiiiii@ic@d@ׂ@@@Ġ(Asttypes,Nonrecursive~~~~~@Ƚ@@@@  0 |{{|||||@@@@@@@ภEׇ~~׈~~@D@@@@@G@  H@  @Ġ(Asttypes)Recursiveכ ל @G@@@@0@@0@@డm$List%iter2ת"׫,@a7@@@@@@I@  I@  @@I@  I@  @I@  I@  @I@  aA@@I@  @I@  @I@  @a@@@I@  @a?@@I@  a>@@I@  @I@  @I@  @I@  i@@@ʣ
vࠠ"id
t-;-=@@@5}@@-?-@@@4@@-:-A@@@;@L@  @@@%sdecl
u-B-G@@@I@    0   @$S@@@@@@ఐZ+update_type-K-V@'@@@̙@@J@  @@@J@  @N@@J@  @.@@J@  @@J@  @J@  @J@  @J@  @J@    0 (''(((((@(6,@-@A@@@@ఐ
(temp_env;-W<-_@	@@@@ఐ='new_envH-`I-g@ڰ@@@@ఐm"idU-hV-j@O@@+@@ఐg%sdecld-ke-p@7@@eI@  I@  =@)ptype_locn-qo-z@%
@@|@@K@  K@  K@  K@@f
@@a@@J@  J@  Q@@A~A@@a@@J@  @J@  J@    0 ؁؀؀؁؁؁؁؁@@@@@A؈-5؉-{@@@@b@@J@  @J@  @J@  J@  @@ఐ㠐(ids_list؝|؞|@@@b@@J@  J@  J@  :@@ఐȠ*sdecl_listز|س|@
>@@b(@@J@  J@  
J@  	O@@@@6H@  ?@@A~~@@9B@డĦ'end_def%Ctype@tU@@@tU@@H@  tT@@H@  @H@  [@@ภˢ@ˠ@@@tg@@I@  I@  !j@@@@8@@G@  $H@  p@డ$List$iter @Ű@@@@L@@H@  ]H@  @̱@@H@  RH@  A@H@  BH@  +@@H@  -@H@  ,@Π@@H@  *@@H@  )@H@  (@H@  '@@@
x@/0@@&@ࠠ$decl
w89@@@*@@<=@@61@K@  C@@ఐp/generalize_declKL  @nð@@@@@I@  K
@@I@  J@I@  I  0 QPPQQQQQ@$H@@j@@@@ఐ,$decld  e  
@@@V@@@@%@@I@  WI@  V@@Ano  @@@n/@@I@  ;@I@  :I@  Y  0 rqqrrrrr@	@@@@ఐ%declsق  ك  @@@<@@I@  9I@  _I@  [@@@@@@G@  bH@  8@@ࠠ+id_loc_list
yٝ  8  >ٞ  8  I@@@#ș@@ @  H@  e@@ @  H@  @ @  H@  i@@ @  ~H@  c  0 ٱٰٰٱٱٱٱٱ@H@@@డ؆$List$map2  L  P  L  Y@@@@@%H@  @@H@  H@  @H@  H@  m@H@  k5@H@  o@H@  n@@@H@  l@z
@@H@  jgD@@H@  h@H@  g@H@  f@H@  e  0 @|@@@@@̷
|ࠠ"id
z  L  `  L  b@@@0@@  L  d  L  e@@3@@  L  _  L  f@@;:@K@  !@@@%sdecl
{  L  g  L  l@@@H@    0 @$N@@.@@@@ఐ,"id(  L  q)  L  s@@@\  0 &%%&&&&&@ @@?@@@ఐ(%sdecl9  L  u:  L  z@@@&H@  H@  @)ptype_locC  L  {D  L  @
@@@@G  L  pH  L  @@@@A5A@@v@I@  I@    0 IHHIIIII@4@@@@AP  L  ZQ  L  @@@@@I@  @I@  I@  @@ఐ(ids_listb    c    @
W@@@@I@  I@  I@  @@ఐ*sdecl_listw    x    @@@@@I@  I@  I@  @@@@@@ڄ  8  :
@@డV$List$iterړ    ڔ    @Y@@@@@@H@  H@  ȠE@@H@  H@  @H@  H@  e@@H@  @H@  @b@@H@  _@@H@  @H@  @H@    0 ڱڰڰڱڱڱڱڱ@I@@@@@@@͆
ࠠ"id
}        @@@/@ࠠ$decl
~        @@@3"@@        @@?:@K@  )@@ఐ=;check_well_founded_manifest        @;&@@@N@@I@  @@@I@  @@@I@  @Κ@@I@  ͹@@I@  @I@  @I@  @I@  @I@    0 @N>g@9@6c@1@@@@@ఐ'new_env        @@@
@@డ$List%assoc%    &    @%@@@H@  H@  H@  @'	
E@@J@  J@  J@  J@  @J@  @@J@  
@J@  @J@  @@@ఐ"idL    M    @I@@M@@ఐ+id_loc_listY    Z    @@@'8</@K@  @@K@  K@  	K@  f@@i    j    @@1i@@ภ$Path&Pidentv  	  w  	  @ఐ"idۀ  	  ہ  	  @}@@W@@ۄ  	  ۅ  	  @@@@J@  J@  @@ఐ$declە  	   ۖ  	  $@@@@@@@V@@I@  I@  @@A۟    ۠  	  %@@@`@@I@  @I@  I@    0 ۣۢۢۣۣۣۣۣ@@@@@ఐנ%decls۳  &  *۴  &  /@@@m#@@I@  I@   I@  @@,@@@@G@  #H@  @@ࠠ(to_check
  1  7  1  ?@@@@Ĕ@@ @  (H@  %@@ @  @H@  &@ @  'H@  $  0 @*@@@@Ϊ
Ġ$Path&Pident  B  O  B  Z@ėࠠ"id
  B  [  B  ]@@@&@@ @  *  0 @H4  1  3  B  @@@@@@@@-@@డ$List)mem_assoc  B  a  B  o@@!a @!@Π
!b @!@ @$@@ @$L@@ @$@ @$@ @$@4444@@t @@@`@@I@  CI@  5@
@@I@  GI@  6@I@  4@@I@  3j@@I@  2@I@  1@I@  0  0 DCCDDDDD@MXR@S@]@@@@ఐ`"idW  B  pX  B  r@@@&@@ఐǠ+id_loc_listd  B  se  B  ~@@@P?2@J@  B@@J@  AJ@  HJ@  D*@@d@@+@@x  B  y  B  @@}@@ภذ  B  ~@@@@H@  N@@A܄  B  F@@@@ @  Y  0 ܂܁܁܂܂܂܂܂@@@@@@డY$List$iterܖ    ܗ    @\@@@@@@H@  H@  v=@@H@  H@  w@H@  xH@  ah@@H@  c@H@  b@e@@H@  `b@@H@  _@H@  ^@H@  ]  0 ܴܳܳܴܴܴܴܴ@@@@@@@@ω
ࠠ"id
        @@@/@ࠠ$decl
        @@@3"@@        @@?:@K@  y)@@ఐ=h7check_well_founded_decl        @8@@@P
@@I@  @@@I@  @ŷ@@I@  @=X@@I@  @@A@@I@  @@I@  AI@  =P@@I@  @I@  @I@  @I@  @I@  @I@    0 @ZJs@E@&Bo@=@(@@@@ఐ'new_env"    #    @@@@@డ$List%assoc4    5    @'@@@H@  H@  H@  @)
T@@J@  J@  J@  J@  @J@  @@J@  
@J@  @J@  @@@ఐ"id[    \    @I@@M@@ఐˠ+id_loc_listh    i    @@@)G</@K@  @@K@  K@  K@  f@@x    y    @@1i@@ภ$Path&Pident݅    ݆    @.ఐ"idݏ    ݐ    @}@@W@@ݓ    ݔ    @@T@@J@  J@  @@ఐ̠$declݤ    ݥ    	@@@@@ఐ㠐(to_checkݱ    
ݲ    @@@@s@@J@  @@J@  @J@  @@@@z@@I@  I@  @@A        @@@,΄@@I@  q@I@  pI@    0 @@@@@ఐ%decls        @8@@ΑD@@I@  oI@  I@  )@@M@@/@@G@  H@  n@డܹ$List$iter    !    *@μ@@@@0@@H@  QH@  ν@@H@  @H@  @κ
@@H@  η@@H@  @H@  @H@  B@@ఐ*6check_abbrev_recursion  +  0  +  F@'@@*
ۓ@@J@  @ҥ@@J@  @*n@@J@  :@@J@  @J@  
@@J@  @@v@@J@  @@J@  
AJ@  	@v@@J@  @@J@  @J@  @J@  @J@  @J@  @J@  @*;ఐy#envU  +  QV  +  T@_@@@@ఐW'new_envb  +  Uc  +  \@@@@@ఐҠ+id_loc_listo  +  ]p  +  h@@@*N@@K@  3և@@K@  4@K@  2@@K@  1K@  =K@  9@@ఐ(to_checkގ  +  iޏ  +  q@հ@@@P@@K@  G@@K@  F@K@  E@@ޚ  +  /ޛ  +  r@@@@@I@  N[@@I@  M@I@  L@@ఐ	砐&tdeclsޮ  +  sޯ  +  y@@@h@@I@  I@  TI@  R@@@@@@G@  WH@  @డݐ$List%iter2        @hZ@@@@H@  a@@@H@  H@  _hY@@H@  d@H@  c@H@  b@hX@@H@  `@hW@@H@  ^hV@@H@  ]@H@  \@H@  [@H@  Z#@@@%sdecl
        @@@+3@@@%tdecl
	    
    @@@4H@    0 						@V=@@"@@@@@ࠠ$decl
        @@@x)@@ @  J@    0 @%@@8@@@ఐ,%tdecl1    2    @
@@*H@  H@  @(typ_type;    <    @xG
@@@@?    @@డ#0closed_type_decl%CtypeN    O    @@
0type_declaration@@ @+$)type_expr@@ @+@@ @+@ @+@@:v:v@:v:@@ @@@@@J@  @@J@  @@J@  @J@    0 nmmnnnnn@P]W@X@߇@@@@ఐe$decl߁    ߂    @@@5@@K@  K@  K@  @@>
@@43@@ @  @@ @   @Ġ$Someߝ  "  +ߞ  "  /@ࠠ"ty
ߦ  "  0ߧ  "  2@@@M@@ @  9@@@@@UT@@L@  @@L@  A@@A@@డނ%raise߽  "  6߾  "  ;@՞@@@՞@@J@  iC@@J@  J@  @J@    0 @X*$@%@@@@@ภ%Error  "  <  "  A@Չఐ렐%sdecl  "  B  "  G@հ@@H@  H@  @)ptype_loc  "  H  "  Q@֤
@@@@K@  K@  K@  -@ภ0Unbound_type_var  "  S  "  c@  < tՆ@rBIHYa@Ag@@dఐd"ty
  "  d  "  f@@@@܁@@K@  K@  K@  J@ఐ $decl  "  g  "  k@@@܍@@K@  K@  K@  \@@)'  "  l@@(@@K@  K@  c@@p.  "  n@@
@@K@  K@  j@@x@@i@@J@  J@  p@Ġ$NoneD  o  xE  o  |@@@@@@@L@  @@L@  @@@@ภS  o  T  o  @@@@!J@  @@AY    @@i@@I@    0 XWWXXXXX@@@@ @@i@@I@  I@  @@@A\A@@i@@I@  @I@  I@    0 gffggggg@^@@@@An    o  o  @@@@i@@I@  y@I@  x@I@  wI@    0 tssttttt@@@@@ఐ*sdecl_list        @@@j@@I@  vI@  I@  @@ఐҠ&tdecls        @
@@j@@I@  uI@   I@  @@@@@@G@  H@  t1@డ{$List%iter2        @jE@@@@H@  
@	@@H@  VH@  -l@@H@  P@H@  OH@  jM@@H@  @H@  @H@  @jL@@H@  @jK@@H@  
jJ@@H@  	@H@  @H@  @H@  j@@ఐkG1check_constraints        @]<@@@v2@@J@  0@@@J@  /@9Ԡ@@J@  .@J@  ,ӿ@@J@  +@J@  *@J@  )@J@  (@@ఐ
'new_env        @	@@@@        @@@@@I@  K@Z@@I@  J@I@  I@@I@  H@I@  G@I@  F@@ఐI*sdecl_list3    4    @@@j~@@I@  "I@  SI@  R@@ఐl%declsH    I    @
@@j@@I@  !I@  XI@  T@@@@Р@@G@  [H@   @@ࠠ%decls
c  0  6d  0  ;@@@$listI%Ident!t@@ @  3Typedecl_properties$decl@@ @  @ @  @@ @  H@  \  0 ~}}~~~~~@@@@డ,update_decls5Typedecl_separability        
@@#Env!t@@ @@;9!t@@ @ˠ7$decl@@ @@ @@@ @PM@@ @ǠH@@ @@ @@@ @@ @@ @@	 typing/typedecl_separability.mli  
5@@5Typedecl_separabilityJ98@@@6@@J@  t@10@@J@  r-@@J@  s@J@  q@@J@  pzw@@J@  nr@@J@  o@J@  m@@J@  l@J@  k@J@  j  0 @7@@@@ఐ#env        @@@@@k@@@^]@@H@  Z@@H@  @H@  @@H@  @@H@  @@H@  @H@  @@H@  @H@  -@@డz,update_decls2Typedecl_immediacy.    /    @@#Env!t@@ @@$listI%Ident!t@@ @3Typedecl_properties$decl@@ @@ @@@ @!t@@ @$decl@@ @@ @@@ @@ @@ @@=typing/typedecl_immediacy.mliX||[@@2Typedecl_immediacyEFE@@@C@@K@  @>;@@K@  6@@K@  @K@  @@K@  10@@K@  -@@K@  @K@  @@K@  @K@  @K@  @@ఐŠ#env        @@@Q@@w@@@jg@@I@  Ϡb@@I@  @I@  @@I@  ]\@@I@  ˠY@@I@  @I@  @@I@  @I@  @@డޅ,update_decls1Typedecl_variance  {    {  @@#Env!t@@ @z@$listI)Parsetree0type_declaration@@ @y@@ @x@%Ident!t@@ @v%Types0type_declaration@@ @w@ @u@@ @t*!t@@ @r0type_declaration@@ @s@ @q@@ @p@ @o@ @n@ @m@<typing/typedecl_variance.mlisvHk@@1Typedecl_varianceTTS@@@Q@@L@  @LI@@L@   @@L@  @DC@@L@  >@@L@  @L@  @@L@  98@@L@  5@@L@  @L@  @@L@  @L@  @L@  @L@  d@@ఐ#env^  {  _  {  @h@@
q@@ఐ*sdecl_listk  {  l  {  @@@7@@M@  M@  #M@  "@@@@@@@J@  @@J@  @J@  @@J@  zy@@J@  v@@J@  @J@  @@J@  @J@  @@ఐ"T4name_recursion_decls  R  [  R  o@ @@@"Pu@@M@  O@@M@  N@"I@@M@  JY@@M@  K@M@  M@@M@  L"@@M@  I@@M@  H@M@  G@M@  F@@ఐ砐*sdecl_list  R  p  R  z@]@@"@@N@  dN@  gN@  f@@:@@@"w@@K@  `ׇ@@K@  a@K@  c@@K@  b"n@K@  _@@K@  ^@K@  ]@@ఐ#%decls  F  L   F  Q@
`@@"@@K@  7K@  K@  u@@K@  8K@  K@  v@L@  x@@L@  wL@  }L@  y,@@K@@-@K@  6@@K@  5K@  K@  s9@@+@@@@J@  @@J@  @J@  @@J@  J@  J@  1L@@>@@@@I@  @@I@  @I@  @@I@  I@  I@  _@@QT@@`@Ġ1Typedecl_variance%ErrorZ    [    5@  < %Error#exnG@@ @X@(Location!t@@ @VM%error@@ @W@B@   @A&_none_@@ A@@UNࠠ#loc
    7    :@@@ @@ @    0 @@@@ࠠ#err
    <    ?@@@%@@ @  @@@=    @@@@@K@  @@డi%raise  D  L  D  Q@څ@@@څ@@I@  HH@  	I@  
@I@    0 @5/@0@)#@$@@@@@ภ%Error  D  S  D  X@rఐH#loc  D  Z  D  ]@@@@@J@  J@  J@  $@ภ(Variance  D  _  D  g@  < c@APHYa@A@@ఐW#err  D  h  D  k@4@@@@J@  %J@  'J@  &A@@
@@@@J@  J@  $G@@  D  R  D  m@@@@J@  J@  O@@\@@RP@Ġ2Typedecl_immediacy%Error
  n  t  n  @  < %Error#exnG@@ @@(Location!t@@ @%error@@ @@B@   @A&_none_@@ A@@Bࠠ#loc
2  n  3  n  @@@ @@ @    0 32233333@@@@ࠠ#err
@  n  A  n  @@@%@@ @  @@@=G  n  @@@@K@  @@డ%raiseT    U    @5@@@5@@I@  .H@  )I@  -@I@  ,  0 [ZZ[[[[[@5/@0@u)#@$@w@@@@ภ%Errorp    q    @"ఐH#locz    {    @@@݈@@J@  :J@  ?J@  >$@ภ)Immediacy        @  < @AUHYa@A@@ڠఐW#err        @4@@@@J@  EJ@  GJ@  FA@@
@@ݢ@@J@  ;J@  DG@@        @@ۈ@@J@  3J@  9O@@\@@RP@Ġ5Typedecl_separability%Error        @  < %Error#exnG@@ @@(Location!t@@ @%error@@ @@B@   @A&_none_@@ A@@Bࠠ#loc
        @@@ @@ @  @ࠠ#err
        @@@$@@ @   @@@<    @@C@@K@  
@@డ%raise        @@@@@@I@  NH@  II@  M@I@  L  0 
		




@	X4.@/@$)#@$@&@@@@ภ%Error         
@ѠఐG#loc)    *    @@@7@@J@  ZJ@  _J@  ^$@ภ,Separability:    ;    @  < @AVHYa@Az@@wఐW#errF    G    !@4@@@@J@  eJ@  gJ@  fA@@
@@Q@@J@  [J@  dG@@W    X    #@@7@@J@  SJ@  YO@@\@@RP@@`  >  B	@@@@b  0  2@@@ࠠ)final_env
m  k  qn  k  z@@@H@     0 lkklllll@	@@@@@ఐ!R0add_types_to_env~  k  }  k  @@@@!N&@@H@  '@@H@  (@H@  &@@H@  %@@@H@  $@H@  #@H@  "%@@ఐ=%decls  k    k  @/@@!rJ@@I@  79@@I@  <I@  8@I@  6@@I@  5I@  =I@  9F@@ఐ堐#env  k    k  @˰@@iS@@G@@fT@@  k  m@@డ$List%iter2        @pb@@@@ !H@  O@@@H@  q@@H@  H@  @H@  H@  Mpj@@H@  R@H@  Q@H@  P@pi@@H@  N@ph@@H@  Lpg@@H@  K@H@  J@H@  I@H@  H  0 @@@@@@@ఐ[J,check_abbrev        @Y@@@c@@J@  r@@@J@  q@N@@J@  oc@@J@  p@J@  ns@@J@  m@J@  l@J@  k@J@  j,@@ఐɠ)final_env6    7    @6@@9@@:    ;    @@@@@I@  @r@@I@  c@@I@  @I@  ֗@@I@  @I@  @I@  P@@ఐp*sdecl_listZ    [    @@@pנ@@I@  dI@  I@  e@@ఐ%declso    p    @@@p@@I@  cI@  I@  z@@@@@@G@  H@  b@@ࠠ+final_decls
        #@@@&@@ @  !H@  @@ @  H@    0 @@@@డh$List$map2  &  *  &  3@%@@@@@@H@  H@  @I@@H@  .H@  ϠF@@H@  /H@  @H@  H@  1@H@  @H@  @&m@@H@  @&c@@H@  &P@@@H@  @H@  @H@  @H@    0 @@@@@@%tdecl
  4  ?  4  D@@@8@@@ڭ
ࠠ$_id2
  4  F  4  J@@@=  0 @L@@	@@@ࠠ$decl
   4  L  4  P@@@E@@  4  E  4  Q@@QL@K@  @@  ( QP@@I@  I@  ONN@@I@  I@  @@I@  JK@@I@  J@@I@  H@@I@  @I@  @I@  @@I@  I@  C(typ_type>  U  j?  U  r@ఐG$declG  U  uH  U  y@@H@[ݰ@@  0 GFFGGGGG@Ya@\@aU@@@PQ9@@I@  =@@I@  	P@@I@  
@I@  @@I@  I@   J@@I@  I@  HI@@I@  I@  DEZ@@I@  @@I@  I@  AB@@I@  I@  <P@@I@   I@  @ఐ%tdecl  U  _  U  d@@@H@  H@  P@  U  ]  U  {@@S@@AA@@@I@  %I@  $  0 @@@@@A  4  :  |  @@@ @@I@  @I@  I@  '@@ఐ&tdecls  |    |  @ð@@'g@@I@  I@  +I@  )@@ఐj%decls  |    |  @\@@'l$@@I@  I@  0I@  ,@@4@@JA@@    
@@ఐ[+final_decls        @[@\@ڰ@@""  0 @f@@@ఐ)final_env        @@@"T
@@    "@@"4"Z@G@  :@$"@@f@*"@@g@:"@@@"@@~@J"@@	@
6"@@
@"@@@o"@@@
"@@

&@t"@@
'@" @@R@
"!@@S@9""@@T@J"#@@U@"$@@@6"%@@@a"&@@@"'@@@?"(@@;@U")@@@"*@@@"+@@R@i",@@@"-@@@".@@@&"/@@D@i"0@@@"1@@ !%@!;"2@@!!@""3@@"X!@@A""4A@"k  0 @"@@@@A"+"6A@"v  0 @"(@@@@A"@"8A@@""z@ @  @  0 @"?@@@@"=@"="<@"R@ࠠ<transl_extension_constructor
/    0    @@@%scope@@ @  G@  B@*@@ @  OG@  I@̇!t@@ @  G@  P@ڠ@@@ @  J@  2@@ @  6G@  W@@@ @  @@ @  G@  ^@,private_flag@@ @  G@  e@J5extension_constructor@@ @  G@  l05extension_constructor@@ @  NG@  m@ @  nG@  f@ @  gG@  _@ @  `G@  X@ @  YG@  Q@ @  RG@  J@ @  KG@  C@ @  DG@  A  0 @"""@"@@@@\\
a        	@@@d  0 @r    8    @@@@@@#env
    
    
@@@n  0 @z@@@@@@@)type_path
        @@@v  0 @@@@@@@@+type_params
        #@@@{  0 @@@@@@@@-typext_params
  $  E  $  R@@@}  0 @@@@@@@@$priv
  $  S  $  W@@@  0 @@@@@@@@$sext
  $  X  $  \@@@  0 @@@@@@@@ࠠ"id
  _  e  _  g@@@@@ @  H@  s  0 @#@@.@@@డ-create_scoped%Ident*  _  j+  _  }@@@@@H@  y@@@H@  x$@@H@  w@H@  v@H@  u @!ఐ%scopeD  _  E  _  @@@G@  G@  E0@@ఐ[$sextX  _  Y  _  @>@@G@  G@  aG@  %G@  G@  G@  G@  G@  oP@)pext_namen  _  o  _  @  , )pext_name@@ @?#loc@@ @;@@ @:@@  , )pext_kindL:extension_constructor_kind@@ @<@A@A<<<=@@P   , (pext_locu!t@@ @=@B@A=="==8@@\   , /pext_attributes'@@ @>@C@A=9=>=9=Z@@e @A<<<<@@i հM6@@0@@I@  I@  I@  @@I@  @#txt  _    _  @_@@I@  @@@@@@  _  a@@@ࠠ$args
        @@@@@ @  H@    0 @@@@@@ࠠ(ret_type
        @@@⠠@@ @  @@ @  H@  @ࠠ$kind
        @@@:extension_constructor_kind@@ @  H@  (@@1
@@1
@ @  .@ఐ$sext	    
    @@@  0 @<@@@)pext_kind        @@@@@ @  @Ġ)Pext_decl!    "    @  < )Pext_decl@@ @Q@-@@ @LC@@ @N@@ @M@B@@BB@AX>W>[Y>W>@@@ ܠࠠ%sargs
A    B    @@@H@@ @    0 BAABBBBB@w@@@ࠠ)sret_type
O    P    @@@%g@@ @  @@ @  @@@9Z    @@@@K@  @@@@@ࠠ%targs
k    l    @@@r@@ @  J@    0 nmmnnnnn@93@4@-'@(@@@@ࠠ)tret_type
        @@@F@@ @  @@ @  J@  @ࠠ$args
        @@@@@ @  J@  )@ࠠ(ret_type
        '@@@h@@ @  @@ @  J@  <@@E@@E0@ @  C@ఐy0make_constructor  *  4  *  D@@@@8@@J@  @S@@J@  @NK@@J@  @@J@  @@@J@  @㜠@@J@  @@J@  @@J@  ɠ㪠y@@J@  @@J@  ʠ@@J@  ̠㶠@@J@  @@J@  @J@  @J@  @J@  @J@  @J@  @J@  @@ఐ_#env  *  E  *  H@G@@G@  PG@  G@  G@  G@  G@  G@  G@  |G@  }G@  vG@  G@   G@  G@  L@@ఐv)type_path/  *  I0  *  R@^@@G@  G@  G@  G@  KG@  PG@  XG@  YG@  2G@  3G@  G@  G@  G@  G@  S@@ఐ|-typext_paramsW  *  SX  *  `@d@@G@  G@  @G@  G@  VG@  ZG@  G@  G@  a@@ఐ2%sargss  a  mt  a  r@@@~@@K@  K@  K@  
@@ఐ8)sret_type  a  s  a  |@@@N@@K@  @@K@  K@  	K@  "@@@@J@  %@@    @@ఐ$args        @@@@@  0 @:GA@B@3-@.@"
@@@@@ఐ(ret_type        @@@@ภ)Text_decl        @  < )Text_decl@@ @'@@@ @!V@@ @#@@ @"@B@@BB@ATTTT@@@ఐ|%targs        @;@@@@I@  I@  I@  H@ఐx)tret_type        @K@@.@@I@  @@I@  I@  !I@  ^@@B    @@@@I@  c@@i@@C1	@I@  #i@z@@H@  @Ġ+Pext_rebind         @  < +Pext_rebind@U#locI!t@@ @P@@ @O@AA@BB@AS?G?IT?G?i@@@ ݠࠠ#lid
<    =    @@@@@ @  @@ @  :@@@(
@@@@K@  >@@>@@@ࠠ%usage
T    U    @@Ш@г1constructor_usage#Envf    g     @@@@ @  '  0 feefffff@5/@0@@@
	@@
@ @  (
A@ 
A@@@@ @  -@ @  ,@డI̢̤        @̡@@@G@  G@  ?G@  5@̢@@J@  4@J@  3@J@  2'@@ఐ$priv        @@@G@  h6@@ภ&Public        @  < &Public@@@AB@B@Ae1Me1U@@@߲P@
	@@,K@  @K@@@@݉@@J@  BK@  =Q@ภ#Env(Exported    #    /@  < (ExportedI1constructor_usage@@ @@@@CD@D@AW eX e@@@N J@@@Iy@@J@  0J@  Fo@ภ#Env0Exported_private    5    I@  < 0Exported_private@@@BD@D@Aq er e@@@h I@
	@@J@  J@    

@г@!@@ @  .@A@@J@  /@@    @@@ࠠ&cdescr
  U  a	  U  g@@@7constructor_description@@ @  uJ@  Q  0 





@@@ @  +@@)@@@డ2lookup_constructor#Env%  U  j&  U  @#use&optionJ@@ @@@ @#loc(Location!t@@ @@}@@ @@6!t@@ @@@@ @H@@ @@ @@ @@ @@ @@ @@  ";@@ t87@@530@@J@  ^@@J@  ]/-@@J@  \@@@J@  [@(@@J@  Z@@@J@  Ym@@J@  X@J@  W@J@  V@J@  U@J@  T@J@  Sk@UภۂZP@Z@WT@@K@  }@@K@  |x@SఐZ#lid  U    U  @+@@us@@K@  @@K@  @#loc  U    U  @̰@@p@@K@  yK@  K@  @@ఐd%usage  U    U  @@@@@K@  xK@  K@  @@ఐ#lid  U    U  @c@@@@K@  wK@  K@  @@K@  @#txt  U    U  @@@K@  @@ఐF#env  U    U  @.@@@@@@@@  U  ]@@@ࠠ$args
        @@@Ն)type_expr@@ @  @@ @  J@    0 

@@	@$@@@ࠠ(cstr_res
        @@@)type_expr@@ @  J@  @ࠠ#_ex
,    -    @@@ձ)type_expr@@ @  @@ @  J@  +@@<    =    @@=$@ @  3@డ$4instance_constructor%CtypeO    P    @*in_pattern"&Stdlib#refK!t@@ @)M@@ @)L#@@ @)N@ @)K@@ @)J@*7constructor_description@@ @)Iut@@ @)E@@ @)Dc@@ @)FVU@@ @)H@@ @)G@ @)C@ @)B@ @)A@= > ^@@<DC@@Aa?:@@J@  @@J@  7@@J@  @J@  @@J@  @6@@J@  @@J@  @@J@  @@J@  @@J@  @@J@  @J@  @J@  @J@  @pภ@@۔rm@@K@  @@K@  Ԡj@@K@  @K@  @@K@  @@ఐܠ&cdescr        @԰@@x@@K@  K@  K@  @@
@@J@  @@    @@@ࠠ#res
         @@@y@@ @  =J@    0 @	@
@@@ @@"@@@ࠠ(ret_type
        @@@ޠ֕@@ @  ?@@ @  >J@  @@&@@&@J@  "@ఐ-&cdescr5    6    @%@@7constructor_description@@J@   @    0 :99:::::@7@@@0cstr_generalizedD    E    ,@  , 0cstr_generalized@@ @ j@@ @@I  <   , )cstr_name
F@@ @@@@AGGGG@@   , (cstr_res@@ @@A@AHHHH,@@   , 1cstr_existentials@@ @@@ @@B@AHUHYHUH{@@
   , )cstr_args+@@ @@@ @@C,@AHHHH@@   , *cstr_arity9@@ @@D6@AHHHH@@"   , (cstr_tagC)/constructor_tag@@ @@EA@AII"II<@@-   , +cstr_constsN@@ @@FK@A I`Id I`Iu@@7   , .cstr_nonconstsX@@ @@GU@A#!II$!II@@A  , +cstr_normalb"@@ @@H_@A-"IJ."IJ@@Kl  , ,cstr_privatel,private_flag@@ @@Jj@A8$JJ9$JJ@@V  , (cstr_locw!t@@ @@Kv@AD%JJE%JJ@@b  , /cstr_attributesa*attributes@@ @@L@AP&JJQ&JK@@n  , ,cstr_inlined*y@@ @@@ @@M@A^'KK"_'KKH@@|  , (cstr_uid!t@@ @@N@Ai(KIKMj(KIK]@@@Am#JMJQn#JMJh@@@@@@J@  J@  @@ࠠ&params
  2  B  2  H@@@Р@@ @  @@ @  K@  @డ-instance_list%Ctype  2  K  2  ^@@@@@@K@  @@K@  @@K@  @@K@  @K@  %@@ఐm+type_params7  2  _8  2  j@U@@G@  cG@  LG@  QG@  G@  G@  Z=@@,@@?>@@G  2  >@@@ࠠ#res
R  n  ~S  n  @@@@@ @  K@    0 UTTUUUUU@S^X@Y@n@@@డ?)newconstr%Ctypej  n  k  n  @@@@@@K@  @@@K@  @@K@  @@K@   @K@  @K@  $@@ఐϠ)type_path  n    n  @@@U1@@ఐ&params  n    n  @;@@@@L@  @@L@  L@  L@  I@@:@@MJ@@  n  z@@@ࠠ(ret_type
        @@@u.@@ @  /K@  @@ @  K@    0 @erl@m@@@@ภ$Some        @
డݬ)newconstr%Ctype        @f@@@f@@K@  $@a^@@K@  #@@K@  "\@@K@  !@K@   @K@  -@@ఐ<)type_path        @$@@:@@ఐ &params        @@@؉؆@@L@  1@@L@  0L@  6L@  4R@@        @@YU@@L@@Ԡ_@@ @  Z@@    @@ఐҠ#res$    %    @f@@"  0 "!!"""""@j}w@x@;@@@ఐ(ret_type3    4    	@@@@@@@5@ @  @@#@@~@	@@@
@@6@డ#)newconstr%CtypeN  
  O  
  )@ݰ@@@@@J@  J@ؠ@@J@  I@@J@  H@@J@  G@J@  F@J@  EZ@@ఐ)type_pathl  
  *m  
  3@@@1g@@ఐ-typext_paramsy  
  4z  
  A@@@t@@}  
  ~  
  B@@|K@  Uy@ภ$None  
  D  
  H@W@@@oJ@  `@@@@YJ@  a@    	@@[@@    @@డy%unify%Ctype  p  |  p  @ِ@@@ِ@@J@  k@ً@@J@  j@ى@@J@  iه@@J@  h@J@  g@J@  f@J@  e  0 @@@@@@@@@ఐ	"#env  p    p  @	
@@@@ఐ(cstr_res  p    p  @˰@@ٻ@@K@  {K@  K@  ~(@@ఐ렐#res  p    p  @1@@@@K@  zK@  K@  <@@R
@@B@@I@  J@  yB@Ġ%Ctype%Unify        @ࠠ%trace
        @@@@@ @  @@ @  _@@@
@@e@@M@  c@@డ%raise%    &    @@@@@@K@  ;J@  K@  @K@    0 ,++,,,,,@y)#@$@E@@@@ภ%Error>    ?    @ఐ#lidJ    K    @߰@@)'@@L@  @@L@  #@#locX    Y    @ƀ@@f@@L@  L@  L@  1@ภ1Rebind_wrong_typei    j    @  < @CMHYa@A`@@]ఐ;#lidw    x    	@@@V@@L@  L@  L@  @@L@  T@#txt    
    
@ƾ@@L@  \@ఐ	#env        @	հ@@g@ఐ%trace        @o@@ٚ@@L@  L@  L@  @@L@  }@@F    @@@@L@  L@  @@        @@@@L@  L@  @@@@@@  T  \    (@@  0 @@@@డ#not  q  |  q  @@@@@@J@  @@J@  @J@  @@ఐޠ&cdescr  q    q  @ְ@@@@K@   @  -@0cstr_generalized  q    q  @@@@@K@  K@  K@  ;@@.
@@@@J@  K@  A@@ࠠ$vars
    
    @@@ڑ)type_expr@@ @  @@ @  K@    0 @b@@@డ.free_variables%Ctype(    )    @#env!t@@ @+@@ @+@)type_expr@@ @+/.@@ @+@@ @+@ @+@ @+@>99>9:-@@ $#@@!@@K@  @@K@  @@@K@  IH@@K@  @@K@  @K@  @K@  F@6ภf>4@>@38@@L@  @@L@  S@@డ(newgenty%Btype}    ~    @@)type_desc@@ @%@)type_expr@@ @%?@ @%>@aa@@H@@@@@L@  @@L@  @L@  ~@@ภ&Ttuple        @  < &Ttuple@20@@ @
!@@ @
 @ABALM@A/ L0 L
@@@MNఐ$args        @@@K@@M@  $@@M@  #M@  'M@  %@@        @@M@@M@  M@  "@@        @@@@L@  
L@  *M@  @@	@@@@    @@డ$List$iter        @屰@@@@G@  G@  J@  2@@J@  4@J@  3@尠@@J@  1@@J@  0@J@  /@J@  .  0 @L@@@@@@@"ty
ঠ$desc    4    8@ؓĠ$Tvar#    ;$    ?@  < $Tvarf@{ @@ @
@@ @
@A@ALM@A Asu As@@@LĠ$Some=    A>    E@ꂠ!_E    GF    H@@H    FI    I@@ @@N@  SN@  RK@@@P    @Q    J@@*)@@N@  U@@N@  TU@@@7	@@@@N@  VY@@@^    3_    K@@pJ@  J@  I_@VVe    Of    Q@
@@d@డ8$List$memqu  R  iv  R  r@N@@@L@  `@N@@L@  _N@@L@  ^@L@  ]@L@  \  0 @z(@!@@@@@ఐ"ty  R  s  R  u@@@6@@ఐ$vars  R  v  R  z@@@O 0@@M@  jM@  mM@  k&@@7@@~@@L@  oM@  i,@డ-set_type_desc%Btype  ~    ~  @ѭ@@@ѭ@@L@  v@ѫ@@L@  uӧ@@L@  t@L@  s@L@  rH@@ఐƠ"ty  ~    ~  @R@@zU@@ภ$Tvar  ~    ~  @ภ$None  ~    ~  @@@@ɠ@@M@  @@M@  M@  s@@  ~    ~  @@@@M@  M@  {@@D@@@@L@  L@  @@
        @@@@ภϰ        @@@@L@  @@A    )    @@@+@@K@  B@K@  AK@    0 @@@@@ఐP-typext_params+    ,    @8@@	*@@D@@}@@I@  J@  K@  ?@7  q  8    @@
@@:  q  y@@ @@ࠠ.cstr_type_path
H  F  RI  F  `@@@و@@ @  J@    0 KJJKKKKK@@@@ࠠ0cstr_type_params
X  F  bY  F  r@@@@@ @  @@ @  J@  @@@@@ @  @ఐn&cdescrv  u  w  u  @f@@A@@L@   @    0 yxxyyyyy@@@@(cstr_res  u    u  @+@@
@@K@   @  
@$desc  u    u  @@@@@ @  @Ġ'Tconstr        @ࠠ!p
        @@@@@ @  0@@        @@;@@M@  @@M@  <@@        @@@@M@  @@M@  H@@@(    @@9@@M@  M@@M@@@ࠠ$decl
        @@@O@@ @  L@    0 @%;5@6@ @@@డW)find_type#Env        @M@@@M@@L@  @x@@L@  o@@L@  @L@  @L@   @@ఐ_!p        @*@@i@@M@  M@  M@  4@@ఐ
s#env        @
[@@A@@2@@EB@@     @@ఐ!p+     ,    @N@@  0 )(()))))@R_Y@Z@B@@@ఐg$decl<    =    @@@@@K@   @  @+type_paramsH    I    @װ@@@@!@@@K@  "@1@@J@  v@@Y     Z    !@@@@M@  @@@@  ภ쾰e    ,f    1@@@@"@@K@  @l    %@@
J@  @@Ap  u  @@!@@r  F  N
@@@ࠠ*cstr_types
}  =  I~  =  S@@@˞ @@ @  J@  @@ @  J@    0 @JD@E@<6@7@@@@ภPj        @డ(newgenty%Btype  V  a  V  o@(@@@(@@J@   &@@J@  @J@  %@@ภ'Tconstr  p  ~  p  @ఐ{.cstr_type_path  p    p  @7@@@@K@  K@  K@  B@ఐ}0cstr_type_params  p    p  @G@@d@@K@  @@K@  K@  K@  X@డ#ref  p    p  @6@@@@@K@  K@  *K@  &K@  ;@@K@  @K@  t@@ภ$Mnil  p  	  p  @@@@L@  '@@!@@;@@K@  K@  )K@  $@@  p  }  p  @@@@K@  K@  @@  V  `   p  @@@ఐѠ0cstr_type_params)    *    @@@@@J@  J@  .J@  ,@@@@Q@@ @  @@:  =  E@@@ࠠ)ext_types
 E    F    @@@f@@ @  4J@  0  0 IHHIIIII@@@b@@@ภQ*V  I  SW  I  U@Xడ(newgenty%Btypee     f    @@@@@@J@  :@@J@  9@J@  8"@@ภ'Tconstry     z     $@ۼఐʠ)type_path     %     .@@@D8@ఐĠ+type_params     0     ;@@@SC@డ`#ref     =     @@@@@@@K@  OK@  aK@  ]K@  V@@K@  U@K@  T_@@ภ$Mnil     A     E@@@@L@  ^m@@!@@@@K@  NK@  `K@  [v@@          G@@G@@K@  AK@  J~@@         H@@vG@  G@  @@ఐ+type_params  I  V  I  a@@@@@@@@@ @  5@@    	@@డ#not  m  x  m  {@@@@@@J@  i@@J@  h@J@  g  0 @@@@@@@డ(is_equal%Ctype  m  }  m  @P@@@P@@K@  |@P@@K@  {@PP@@K@  z@@K@  y@PP@@K@  x@@K@  wP@@K@  v@K@  u@K@  t@K@  s@K@  r5@@ఐ#env;  m  <  m  @{@@
 B@@ภMF  m  G  m  @L@@@P@@L@  L@  R@@ఐ۠*cstr_typesX  m  Y  m  @
@@PP@@L@  @@L@  L@  L@  j@@ఐ+)ext_typesp  m  q  m  @t@@Q@@L@  L@  L@  @@|  m  |}  m  @@@@K@  pK@  L@  @@	@@X@@J@  K@  o@డY%raise        @u@@@u@@J@  @@I@  J@  J@  @J@  @@ภ%Error        @^ఐ|#lid        @M@@@@K@  @@K@  @#loc        @@@@@K@  K@  K@  @ภ/Rebind_mismatch        @  < _@CNHYa@A@@ఐ#lid        @z@@Ġ@@K@  K@  K@  @@K@  @#txt        @,@@K@  @ఐ.cstr_type_path         @w@@@@K@  K@  K@  @ఐ\)type_path        @D@@
@@B    @@@@K@  K@  #@@     !    @@ @@K@  K@  +@@@@,@@)  m  u	@@.@ఐ2&cdescr:  q  ;  q  @*@@
@@K@   @  F@,cstr_privateF  q  G  q  @	@@	@@ @  P@ఐh$privT  q  U  q  @P@@[@@@@@ @  `@Ġ'Privatei	    j	    @@@@@	@@M@  s@Ġ&Publicv	    w	    @@@@@}@@@@@M@  @@@@డL%raise
    
    @h@@@h@@K@  @@I@  FJ@  7J@  J@  K@  @K@  @@ภ%Error
    
    @Uఐ
s#lid
    
    @
D@@

@@L@  @@L@  @#loc
    
    @@@@@L@  L@   L@  @ภ.Rebind_private
    
    @  < V@AOHYa@A@@ఐ
#lid
    
    @
q@@
@@L@  &L@  2L@  )@@L@  (@#txt
    
    @#@@L@  *@@%@@@@L@  L@  %@@
    
    @@@@L@  	L@  @@z@@p@@        	@@
X@@M@  
@M@  @
@@@ภӰ    
    @@@@@@A  c  k    @@@@ࠠ$path
à%
    )&
    -@@@e!t@@ @  [J@  G  0 +**+++++@4@@@ఐ
4&cdescr<  0  @=  0  F@,@@@@K@  L @  J  0 ?>>?????@H@@@(cstr_tagI  0  GJ  0  O@
°@@
@@ @  K@Ġ.Cstr_extensionY  U  aZ  U  o@  < .Cstr_extension
@@ @)@7@@ @'@@ @(@BBACD@A/L_La/L_L@@@ࠠ$path
Ġu  U  pv  U  t@@@N@@ @  R7@@~  U  v  U  w@@@@M@  S?@@@+  U  x@@
@@M@  TD@@D@@ఐ$path  U  |  U  @@@@@j  0 @%@@@@        @@@@M@  V]@@]@@  ภ        @ @@@e@@K@  aj@    @@J@  \n@@A  0  :@@@@
    %
@@@ࠠ$args
Š        @@@@@ @  J@  g  0 @@@@@@ఐ
Ϡ&cdescr        @ǰ@@@@K@  m @  j  0 @@@@,cstr_inlined        @@@@@ @  l@@ @  k@Ġ$None        @@@@@$@@M@  u@@M@  t:@@:@@ภ%Types*Cstr_tuple
        @ఐ
$args        @
@@@@K@  @@K@  K@  K@  Z@@@@^[@Ġ$Some-    *.    .@rࠠ$decl
Ơ6    /7    3@@@@@ @  |]@@@@@f@@M@  ~@@M@  }e@@e@@@ࠠ"tl
ǠN  7  IO  7  K@@@߅@@ @  @@ @  L@    0 UTTUUUUU@*$@%@n@@@ఐ
f$argsg  N  dh  N  h@]@@
d
c@@ @  @@ @    0 lkklllll@@@@Ġz  n  {  n  A|ঠ$desc  n    n  @Ġ'Tconstr  n    n  @Р@  n    n  @@@@O@  &@ࠠ"tl
Ƞ  n    n  @@@Ӡ)@@ @  @@ @  7@@  n    n  @@֠@@O@  @@O@  C@@@(  n  @@'@@O@  H@@@@  n  @@
@@O@  O@  O@Ġ-  n  KA@@LA@I
@@O@  @@O@  ]@@@  n  U@@
ʠ
@@O@  @@O@  f@	@f@@ఐ@"tl  n    n  @@@A@	@@  0 @K@@@@        @@

@@O@  @@O@  @
@@@  ภT        @S@@@@@M@  @    @@L@  @@A  N  ^@@@@  7  E
@@@ࠠ$decl
ɠ        @@@0type_declaration@@ @  L@    0 @@@1@@@డ4instance_declaration%Ctype-    .    @@0type_declaration@@ @)k@@ @)j@ @)i@  @@ B@@@@@L@  ,@@L@  @L@  *@@ఐ$declQ    R    @@@&@@M@  M@  M@  >@@/
@@D?@@]    @@  డ0܉܋j    Gk    H@܈@@@@@L@  L@  @܉@@L@  @L@  @L@    0 tssttttt@]lf@g@
@@@@డO$List&length    *    5@@@@@@M@  M@  @@M@  @@M@  @M@  $@@ఐ$decl    6    :@0@@L@@N@   @  8@+type_params    ;    F@D@@&+@@N@  N@  N@  G@@5@@PH@@డ$List&length    I    T@?@@@?_@@M@  M@  @@M@  c@@M@  @M@   h@@ఐ"tl    U    W@ΰ@@\@@N@  
N@  
N@  }@@'@@N@  	@@    )    X@@@@L@  M@  @    "@@O@@K@  L@  @డ$List%iter2  Z  h  Z  r@@@@@@@L@  [L@  @@@L@  ZL@  @@L@   @L@  @L@  @@@L@  @@@L@  @@L@  @L@  @L@  @L@  @@డ%unify%CtypeJ  Z  tK  Z  @6@@@6@@N@  >@1@@N@  =@/@@N@  <-@@N@  ;@N@  :@N@  9@N@  8@@ఐ#envi  Z  j  Z  @@@J@@m  Z  sn  Z  @@@N@@M@  V@L@@M@  UJ@@M@  T@M@  S@M@  R@@ఐu$decl  Z    Z  @@@+@@M@  ` @  ]@+type_params  Z    Z  @#@@@@M@  2M@  aM@  ^&@@ఐ["tl  Z    Z  @@@@@M@  1M@  dM@  b;@@@@@@K@  gL@  0A@@ࠠ$lbls
ʠ        @@@f@@ @  @@ @  L@  h  0 @W@@@ఐɠ$decl          @c@@@@M@  m @  k  0 @k@@@)type_kind          @Y@@X@@ @  l@Ġ+Type_record!    !    @ࠠ$lbls
ˠ!    !     @@@Ӣ@@ @  ~@@ @  }(@Ġ0Record_extension!    !    @  < 0Record_extension@S!t@@ @@ABBCE@A8E8G8E8c@@@ @&!    '!    @@@@O@  G@@@@@@@O@  K@@@70!    @@@@O@  P@@P@@ఐ9$lbls;!    <!    @9@:@O@@w  0 ;::;;;;;@D@@@@H"    0I"    1@@@@O@  i@@i@@  ภT"    <U"    A@@@@@@M@  v@["    5@@L@  z@@A_     @@@@a    
@@ภ%Types+Cstr_recordj$  S  ak$  S  r@Ʀఐ$lblst$  S  su$  S  w@@@@@ƴ@@K@  @@K@  K@  K@    0 ~~@@@@@@@ɑ@@K@  @*@@@v@@@@@@1@@q@@@J@  7@@A    @@@@     @@ఐߠ$args&    &    @@@@@H@  Q  0 @@@@ఐ(ret_type&    &    @@@H@  R@ภ+Text_rebind&    &    @  < +Text_rebind@$Path!t@@ @$#loc)Longident!t@@ @&@@ @%@BA@BB@ATTTU%@@@ԁఐ$path&    &    @@@+@@I@  ZI@  ^I@  ]I@ఐ#lid&    &    @@@֠2@@I@  \I@  eI@  c@@I@  b_@@J  &    @@@@I@  Yd@@l@@j\	@I@  oj@}@@I@]@@@
@@@@@	@2@@
@@@@@@	@	@@
	@Z@@	@
@@@)@@@)@@
@ @@&H@  P@@A       @@(Q@@  "    @@@ࠠ#ext
̠  -(      .(    @@@5extension_constructor@@ @  H@    0   2  1  1  2  2  2  2  2@jwq@r@  Mf`@a@  OUO@P@  Q@@@      , -ext_type_path@@ @A@@ @7@@    	  , /ext_type_params	@@ @9@@ @8@A
@A;o;s;o;@@   , (ext_argsg@@ @:@B@A;;;;@@   , ,ext_ret_type@@ @<@@ @;@C!@A;;;;@@   , +ext_private-@@ @=@D*@A;;;;@@   , 'ext_loc6!t@@ @>@E6@A;< ;<@@    , .ext_attributesB*attributes@@ @?@FB@A<<<<>@@,   , 'ext_uidNx!t@@ @@@GM@A<?<C<?<R@@7 @A;T;X;T;n@@; %Types-ext_type_path  )      )    @ఐ)type_path  )      )    @@@k~@h/ext_type_params  *      *    @ఐ預-typext_params  *      *    	@Ѱ@@a@m&(ext_args  +      +    @ఐ$args  +      +     @@@@@I@  I@  I@  @}?,ext_ret_type  ,  "  (  ,  "  4@ఐ(ret_type  ,  "  7  ,  "  ?@@@~@@I@  @@I@  I@  I@  @\+ext_private -  A  G -  A  R@ఐ $priv -  A  U 
-  A  Y@@@@n'ext_loc .  [  a .  [  n@ఐ#$sext  .  [  q !.  [  u@@@@(pext_loc '.  [  v (.  [  ~@
@@@@I@  I@  I@  @%Types.ext_attributes 9/     :/    @ఐG$sext D/     E/    @*@@@/pext_attributes K/     L/    @
@@@@I@  I@  &I@  $@á'ext_uid [0     \0    @డ#Uid"mk i0     j0    @d@@db@@I@  /_@@I@  .@I@  -=@lడ-get_unit_name#Env 0     0    @P@@@P@@J@  :M@@J@  9@J@  8W@@ภT 0     0    @S@@@c@@K@  AK@  Eg@@ 0     0    @@̙@@J@  6J@  GK@  @q@@@	@@@@I@  +I@  IJ@  5y@@@ )     1    @@|@@ (    @@  , &ext_id4@@ @!t@@ @@@  , (ext_name#loc@@ @@@ @@A
@ASSST@@y  , (ext_type5extension_constructor@@ @@B@AT	T
T	T4@@օ  , (ext_kind(@@ @@C"@AT5T9T5T_@@֎  , 'ext_loc1п!t@@ @@D.@AT`TdT`Ty@@֚  , .ext_attributes=н@@ @@E7@ATzT~TzT@@֣@ASSSS@@֧)Typedtree&ext_id 
3     3    @ఐ"id 3    
 3    @C@@\@@H@  PH@  RH@  Q  0         @@@ 1
@@@](ext_name '4     (4    @ఐ5$sext 24     34    #@@@@)pext_name 94    $ :4    -@˰
@@Ǡw@@H@  ZH@  cH@  `@@H@  _*@sE(ext_type M5  /  5 N5  /  =@ఐ)#ext V5  /  @ W5  /  C@9@@@@H@  qH@  sH@  rC@^(ext_kind f6  E  K g6  E  S@ఐ$kind o6  E  V p6  E  Z@2@@@@H@  xH@  zH@  y\@w'ext_loc 7  \  b 7  \  s@ఐ$sext 7  \  v 7  \  z@p@@&p@(pext_loc 7  \  { 7  \  @
@@@@H@  H@  H@  ~@)Typedtree.ext_attributes 8     8    @ఐ$sext 8     8    @@@H@/pext_attributes 8     8    @ 
@@@@H@  @@@ 3    @@6@
@@7@@@8@@@9@@A A@E  0         @@@@@A"A@R  0         @@@@@A$A@b  0         @@@@@A&A@s  0         @@@@@A(A@  0         @	@@@@A*A@  0         @@@@@A     -A@@ @    0         @4@@@@2@21@F@ࠠ<transl_extension_constructor
͠ :     :    @@@%scope6@@ @  JG@  @@@ @  IG@  @@@ @  HG@  @ Z@@ @  G@@ @  FG@  @@@ @  E@@ @  DG@  @@@ @  CG@  @@@ @  BG@  @@ @  AG@  @ @  G@  @ @  G@  @ @  G@  @ @  G@  @ @  G@  @ @  G@  @ @  G@    0  ) ( ( ) ) ) ) )@@ @ B@@@PP
ΠU ;:     <:    @@@X  0  9 8 8 9 9 9 9 9@@@@@@#env
Ϡ I:     J:    @@@]  0  G F F G G G G G@i@@ `@@@@@)type_path
Р Z:     [:    @@@e  0  X W W X X X X X@q@@ q@@@@@+type_params
Ѡ k:     l:     @@@m  0  i h h i i i i i@y@@ @@@@@-typext_params
Ҡ |;     };    @@@q  0  z y y z z z z z@@@ @@@@@$priv
Ӡ ;     ;    @@@u  0         @@@ @@@@@$sext
Ԡ ;     ;    @@@}  0         @@@ @@@@డ,-warning_scope2Builtin_attributes <    ! <    A@а@@Π@@G@  @@G@  @@@G@  @@@@G@  G@  @G@  @G@  @G@  @G@    0         @+7@.@ @@@ภ @ @@@H@  @@H@  @@ఐN$sext <    B <    F@@@G@  SG@  G@  G@  '@/pext_attributes <    G <    V@a@@@@H@  H@  H@  5@@@
ՠĠ˰ 
=  W  ` =  W  b@@@@@@@K@  H@@ఐ<transl_extension_constructor =  W  f =  W  @@@8@@I@  !@
@@I@   @@@I@  @ [@@I@  @@I@  @Ҡ@@I@  @@I@  @@@I@  @@@I@  @@I@  @I@  @I@  @I@  @I@  @I@  @I@  @I@  @ఐ%scope W=  W   X=  W  @@@vG@  KG@  @@ఐ"#env g=  W   h=  W  @
@@}G@  LG@  @@ఐ!)type_path w=  W   x=  W  @	@@G@  MG@  @@ఐ +type_params =  W   =  W  @@@G@  NG@  @@ఐ-typext_params >     >    @@@G@  PG@  @@ఐ$priv >     >    @@@G@  RG@  @@ఐ$sext >     >    @@@@@@@@@A =  W  [ >    @@@@@H@  @H@  H@  W@@	@@@@A)
A@  0         @&@@@@A<A@  0         @9@@@@AOA@  0         @L@@@@AbA@  0         @_@@@@AuA@  0         @r@@@@AA@  0         @@@@@A :    A@@ @  g@@ :    @@@@ࠠ)is_rebind
֠ @     @    @@@@f@@ @  sG@  i@@ @  G@  j@ @  kG@  h  0         @@@ 	@@@@#ext
ؠ @     @    @@@  0           @' 
@     C    &@@@@@ఐ#ext A     A    @/@@ +@@3G@  qG@  l  0         @&@@@(ext_kind %A     &A    @F@@5@@ @  r@Ġ+Text_rebind 5B     6B    @y@ :B     ;B    @@{@@J@  z @@@wu@@J@  |@@J@  {)@@@@@V@@J@  }-@@-@@ภX QB    	 RB    
@W@@@b5@Ġ)Text_decl ^C     _C    @@ cC     dC    @@g@@J@  I@@@K@@J@  @@J@  R@@@@@@@J@  V@@V@@ภӰ zC    !p@@q@@G@  _@@A A    u@@a@@A~vA@@@ @    0  ~ } } ~ ~ ~ ~ ~@}@@@@{@{z@@ࠠ5transl_type_extension
٠ E  (  , E  (  A@@@@i@@ @  pG@  @#@@ @  G@  @!F!t@@ @  ]G@  @.type_extension@@ @  ǧG@  l.type_extension@@ @  ǺG@  Ƿ)G@  Ǹ@ @  ǹG@  @ @  G@  @ @  G@  @ @  G@  @ @  G@    0         @@@ @@@@&extend
۠ E  (  B E  (  H@@@E  0         @Q E  (  (     @@@@@@#env
ܠ E  (  I E  (  L@@@O  0         @ [@@ @@@@@#loc
ݠ E  (  M E  (  P@@@W  0         @c@@ @@@@@&styext
ޠ E  (  Q E  (  W@@@\  0         @k@@ %@@@@@ࠠ%scope
ߠ H      H    @@@:@@ @  H@    0  " ! ! " " " " "@#u@@ ;@@@డ,create_scope%Ctype 7H     8H    @:@@@:@@H@  :@@H@  @H@  @@ภ JH     KH    @@@@:@@I@  I@  +@@@@/,@@ TH    
@@డ 4reset_type_variables `I     aI    @@@@@@H@  @@H@  @H@    0  f e e f f f f f@ERL@M@ @@@@ภ5 wI    @3@@@@@I@  I@  @@@@@@G@  H@  @డg)begin_def%Ctype J     J    .@0@@@0@@H@  /@@H@  @H@  2@@ภc J    0@a@@@B@@I@  I@  A@@@@@@G@  H@  G@@ࠠ)type_path
 K  2  8 K  2  A@@@!t@@ @  "H@    0         @_@@@ࠠ)type_decl
 K  2  C K  2  L@@@f0type_declaration@@ @  #H@  @@
@@@ @  @@ࠠ#lid
 L  O  W L  O  Z@@@!#loc!t@@ @  @@ @  I@  2@ఐ&styext L  O  ] L  O  c@ް@@iG@  ǛG@  ǐG@  QG@  G@  G@  G@  :G@  ^G@  0G@  G@  G@  U@+ptyext_path #L  O  d $L  O  o@  , +ptyext_pathp@@ @4:8@@ @(@@ @'@@
  , -ptyext_params
OM@@ @+s(variance@@ @-y+injectivity@@ @.@ @,@ @*@@ @)@A@Ap;;q;;@@   , 3ptyext_constructors-o@@ @0@@ @/@B+@A~;;;<@@%   , .ptyext_private;,private_flag@@ @1@C6@A<<<<7@@0   , *ptyext_locFU!t@@ @2@DB@A<8<=<8<T@@<   , 1ptyext_attributesR@@ @3@EK@A<U<Z<U<x@@E @A;{;;{;@@I ϰa@@@@ L  O  Sc@@డ +lookup_type#Env M  s  w M  s  @#usenF@@ @O@@ @N#lock!t@@ @M@!t@@ @L@7@@ @K@@ @I@@ @J@ @H@ @G@ @F@ @E@ @D@L __M @@C n54@@20@@H@  @@H@  /-@@H@  
@*@@H@  	@^@@H@  @@H@  @@H@  @H@  @H@  @H@  @H@  @H@    0         @@ @  @@@Xภ @ @ȠZ@@I@  *@@I@  )@Yఐ#lid M  s   M  s  @@@@@I@  /@@I@  .'@#loc M  s   M  s  @=@@v@@I@  &I@  9I@  05@@ఐ@#lid +M  s   ,M  s  @A@@>@@I@  %I@  EI@  <@@I@  ;O@#txt =M  s   >M  s  @r@@I@  =W@@ఐc#env KM  s   LM  s  @K@@G@  `G@  aG@  ıG@  ĵG@  5G@  6G@  þG@  ÿG@  $G@  FG@  y@@@@H@  !|@@@@@ hK  2  4@@ఐ)type_decl vP     wP    @@@ @@@@I@  N @  L  0  { z z { { { { {@@@ 
@@@)type_kind P     P    @@@@@ @  M@Ġ)Type_open Q     Q    @>@@@@@@K@  \@@@@ఐؠ)type_decl R     R     @4@@M@@J@  f @  d2@,type_private R     R    
@@@@@ @  e<@Ġ'Private S     S    $@8@@@@*@@L@  jL@@L@ఐ&extend S    * S    0@@@@G@  X@డ $List$find U  L  Z U  L  c@@@!a @"=@@ @$A@ @$@@@@ @$?@ @$>@ @$=@1((1((?@@h@@@@@@ @  K@  v@@K@  y@K@  x@
@@K@  w@K@  u@K@  t@@@
㠰ঠ)pext_kind 	#V  d   	$V  d  @Ġ)Pext_decl 	+V  d   	,V  d  @
@ 	0V  d   	1V  d  @@6@@O@  @@@
  L@@O@  @@O@  @@@@@@@O@  @@@ 	CV  d  ~ 	DV  d  @@>@@ภQ 	JV  d   	KV  d  @P@@@^@@M@  M@  @ঠ)pext_kind 	\W     	]W    @Ġ+Pext_rebind 	dW     	eW    @E@ 	iW     	jW    @@GE@@O@  @@O@  @@@	@@@@O@  @@@ 	wW     	xW    @@r@@ภװ 	~W     	W    @@@@4M@  @@A 	V  d  t 	W    @@@@@L@  @L@  L@  +
@@ఐ&styext 	X     	X    @r@@@3ptyext_constructors 	X     	X    
@P
@@@@L@  L@  1L@  .+@@@@,@ঠ(pext_loc 	Z    + 	Z    3A/ࠠ
@@2@@ @  8B@@@ 	Z    * 	Z    4@@ G@@M@  :M@  9J@@J@@డ %raise 	[  8  H 	[  8  M@@@@@@K@  G-@@G@  H@  eH@  nH@  BK@  F@K@  E  0  	 	 	 	 	 	 	 	@g,*@+@ 	!@@@@ภ%Error 	[  8  O 	[  8  T@ఐ=(pext_loc 	[  8  U 	[  8  ]@@@ @@L@  SL@  XL@  W!@ภ:Cannot_extend_private_type 
[  8  _ 
[  8  y@  <  o@ mAJHYa@A g@@ dఐ[)type_path 
[  8  z 
[  8  @@@ |@@L@  ^L@  `L@  _>@@
@@ %@@L@  TL@  ]D@@ 
+[  8  N 
,[  8  @@  @@L@  LL@  RL@@`@@VM@Ġ)Not_found 
=\     
>\    @1@@@@ 	@@M@  >@ 
D\    @@ @@L@  ?@@ภ 
M\     
N\    @
@@@o@@A 
QS    4 
R]    @@r  0  
N 
M 
M 
N 
N 
N 
N 
N@@@@@ 
Z^     
[^    @@@@L@  l@@@@ภ" 
d^     
e^    @!@@@H@  k@@A 
jQ     
k_    @@@@ 
r`     
s`    @@@@K@  ^@@@@డ 	E%raise 
a     
a    @  a@@@  a@@I@  sH@  nI@  r@I@  q@@ภ%Error 
a     
a    @  Gఐ#loc 
a     
a    @@@G@  yG@  ÃG@  ÇG@  G@  G@  -@ภ3Not_extensible_type 
a     
a    @  <    <@ AKHYa@A @@ ఐ)type_path 
a     
a    @?@@ @@J@  J@  J@  J@@
@@ @@J@  J@  P@@ 
a     
a    @@  @@J@  xJ@  ~X@@Y@@OY@@A 
O     
b    "@@@@ࠠ-type_variance
 
c  $  * 
c  $  7@@@t@@ @  H@  @@ @  &H@   @@ @  ,H@  
@ @  H@  @@ @  H@    0    
 
          @@@@డ 	$List#map d  :  > d  :  F@@@@@R@@H@  H@  0@H@  @
@@H@  9@@H@  @H@  @H@    0  # " " # # # # #@@@@@@!v
栰 6d  :  L 7d  :  M@@@ @@@ࠠ"co
 Fe  Q  f Ge  Q  h@@@j@@ @  J@    0  J I I J J J J J@#9@@ c#@@@ࠠ"cn
 Ze  Q  j [e  Q  l@@@~@@ @  J@  @@ de  Q  e ee  Q  m@@ 
@ @  @డ 	(Variance)get_upper ve  Q  p we  Q  @@@@ @.6@@ @.&@@ @.@ @.@ @.@?. .?. ."@@% f@@@@@J@  J@@J@  :@@J@  @J@  @J@  M@@ఐt!v e  Q   e  Q  @W@@H@  H@  ]@@7@@IJ@  `@@ e  Q  a
@@డ 
#not f     f    @ΰ@@@@@I@  @@I@  @I@    0         @{@@ $wq@r@ %@@@@ఐ"cn f     f    @@@@@J@  J@  J@  @@'
@@@డ 
#not f     f    @@@@@@I@   @@I@  @I@  1@@ఐ"co f     f    @:@@@@J@  'J@  )J@  (E@@ 
@@F@ภ m f     f    @ l@@@ @@I@  -R@@ f     f    @@+&@I@  .Z@s@@3@@A $d  :  G %f    @@@<@I@  I@  0%@@ఐd)type_decl 6g     7g    @@@@@I@  5 @  2@-type_variance Bg     Cg    @@@נ3@@I@  I@  6I@  3%@@<@@cI@@ Oc  $  &
@@@ࠠ#err
 Zi     [i    @@@ @@ @  hH@  d@@ @  eH@  9  0  c b b c c c c c@@@ |"@@@డ <"<> wj     xj    @@@@@@H@  IH@  >@@@H@  =@H@  <@H@  ;  0         @@@@@ఐ)type_decl j     j    @@@  6@@I@  J @  H@*type_arity j     j    @  @@$@@డ t$List&length j     j    @ @@@  @@I@  Z@@I@  \@@I@  ]@I@  [@I@  YI@  O@@I@  NR@@I@  M@I@  LJ@@ఐҠ&styext j     j    @@@Y@-ptyext_params j     j    (@
@@T4@@J@  VJ@  _J@  Xh@@>@@sJ@  Uk@@_@@@@H@  bI@  Fq@ภ$Some k  .  4 k  .  8@ Bภ+Includecore%Arity 
k  .  9 
	k  .  J@@@@H@  i@@@@ Π@@ @  f@డ $List(for_all2 
!m  T  ] 
"m  T  j@@@!a @"]@!b @"[@@ @$+@ @$*@ @$)@@@ @$(@@@ @$'@@ @$&@ @$%@ @$$@ @$#@%G%G%G%@@d,+@@@@u@@H@  H@  u@@H@  H@   @@H@  H@  @H@  H@  r@(0surface_variance@@H@  ,H@  p>@@H@  u@H@  t@H@  s@='@@H@  q@<@@H@  o;@@H@  n@H@  m@H@  l@H@  k@@@  N
ࠠ"c1
 
n  k  | 
n  k  ~@@@@@ࠠ"n1
 
n  k   
n  k  @@@D@@ 
n  k   
n  k  @@C@@ 
n  k  { 
n  k  @@UPK@K@  '@@@  v
ࠠ"c2
 
n  k   
n  k  @@@$boolE@ZH@  EH@  H@    0  
 
 
 
 
 
 
 
@c=w@8@ 
'5s@0@ 
(@@@ࠠ"n2
 
n  k   
n  k  @@@@tH@  FH@  H@   @@ 
n  k   
n  k  @@(@H@  GH@  ¡&@@ 
n  k   
n  k  @@7@K@  £.@@డ XZ 
n  k    n  k  @W@@@W@@I@  ®@V@@I@  ­U@@I@  ¬@I@  «@I@  ª  0  
 	 	 
 
 
 
 
@H[U@V@ $)A;@<@ &*@@@@డ vv !n  k   "n  k  @v~@@@v~@@J@  @v}@@J@  ¿v|@@J@  ¾@J@  ½@J@  ¼"@@డ 
#not =n  k   >n  k  @N@@@N@@K@  M@@K@  @K@  9@@ఐ"c2 Rn  k   Sn  k  @B@@F@@@@v@@K@  K@  L@  N@@ఐԠ"c1 gn  k   hn  k  @@@[@@ kn  k   ln  k  @@@@J@  ºJ@  K@  e@@డ 
Evݠv߰ n  k   n  k  @vܰ@@@v@@J@  @v@@J@  v@@J@  @J@  @J@  @@డ 
`#not n  k   n  k  @@@@@@K@  @@K@  @K@  @@ఐ٠"n2 n  k   n  k  @@@@@@@w@@K@  K@  L@  @@ఐ("n1 n  k   n  k  @@@l@@ n  k   n  k  @@@@J@  ¹J@   K@  @@h	@@@@I@  I@  @@AA@@t@@I@  @I@  
I@    0         @@@@@A n  k  v n  k  @@@@@@I@  @I@  @I@  I@  
@@ఐ-type_variance o     o    @@@Ơ@@I@  I@  I@  |@@డ 
2variance_of_params1Typedecl_variance p     p    @@,3,4)core_type@@ @8(Asttypes(variance@@ @:	+injectivity@@ @;@ @9@ @7@@ @6,T@@ @5@@ @4@ @3@,V,X;R@@,A32@@@0/@@I@  ,@@I@  '@@I@  @I@  @I@  @@I@  $@@I@  @@I@  @I@  @@ఐ	d&styext np     op    @	G@@a@-ptyext_params up    	 vp    @E
@@fe@@J@  /b@@J@  1]@@J@  2@J@  0@J@  .@@J@  -J@  ;J@  4@@ p     p    @@Y2@@I@  I@  BI@  +@@|
@@o@@H@  II@  :@ภ$None q    # q    '@ w@@@H@  ME@ภ$Some q    - q    1@ ภ+Includecore(Variance q    2 q    F@  < (Variancek@@@CDHL@Ah Xvxi Xv@@@%y@
	@@gH@  Tc@@@@#H@  Qf@ m  T  Z@@%h@ j    @@j@@ i    @@ఐ#err s  L  Z s  L  ]@@@ &@@ I@@ @  Y@@ @  X  0         @@@@Ġ$None t  c  g t  c  k@ @@@@ _@@K@  a@@K@  `  0         @@@@	@@@ภ Ű t  c  o t  c  q@ @@@V@@G@  ÞH@  p@Ġ$Some u  r  v u  r  z@ ^ࠠ#err  "u  r  { #u  r  ~@@@@@ @  h=@@@@@ @@K@  j@@K@  iE@@E@@డ %raise 9u  r   :u  r  @ @@@ @@I@  w;H@  rI@  v@I@  u  0  @ ? ? @ @ @ @ @@[)#@$@ Y+@@@@ภ%Error Ru  r   Su  r  @ ఐ
c#loc \u  r   ]u  r  @
K@@@ภ2Extension_mismatch fu  r   gu  r  @  <   @ BLHYa@A @@ ఐ	)type_path ru  r   su  r  @@@ @@J@  ÎJ@  ÑJ@  Ð7@ఐb#err u  r   u  r  @?@@ @@J@  ÏJ@  ÓJ@  ÒI@@) u  r  @@ @@J@  ÄJ@  ÍP@@ u  r   u  r  @@ v@@J@  |J@  ÂX@@e@@[Y@@A s  L  N v    @@@@ࠠ,ttype_params w     w    @@@9e@@ @  ú	}@@ @  Š	{@@ @  @ @  H@  æ@ @  ù@@ @  øH@  ß  0         @@@@ఐ簠+make_params w     w    @e@@@@@H@  ê@i @@H@  é+@H@  è@@H@  ço@@H@  å6@H@  ä@@H@  ã@H@  â@H@  á*@@ఐ#env w     w    @
@@7@@ఐ &styext 
w     w    @
@@	F@-ptyext_params w     w    @	
@@ 0@@I@  ýh@I@  ü@@I@  ûI@  I@  \@@S@@t]@@ %w    @@@ࠠ+type_params 0x     1x    @@@L@@ @  H@  @@ @  H@    0  9 8 8 9 9 9 9 9@T@@ R,@@@డ $List#map Nx     Ox    @@@@@:@@H@  H@  
#@@H@  
!@@H@  @H@  H@  @H@  H@  4@H@  @@@H@  =@@H@  @H@  @H@    0  q p p q q q q q@8@@@@@ Cࠠ#cty x    ! x    $@@@1@@ x    & x    '@@0@@ x      x    (@@<7@K@  !@@ఐ#cty x    , x    /@I@@ .@@K  0         @h#@@@)ctyp_type x    0 x    9@ވ@@t	@@A x     x    :@@@`}@I@  I@  w@@ఐ,ttype_params x    ; x    G@@@Tt@@I@  I@  I@  T@@}@@@@ x     
@@డ $List%iter2 y  K  M y  K  W@h@@@@)type_expr@@H@  AH@  @)type_expr@@H@  @H@  n@@H@  @H@  @H@  @m@@H@  @l@@H@   k@@H@  @H@  @H@  @H@    0         @@@ -@@@@డ)unify_var%Ctype y  K  Y y  K  h@@!t@@ @)@@@@ @)@<@@ @)@@ @)@ @)@ @)@ @)@ %1%1 %1%g@@ R@@@@@J@  $@X@@J@  #@T@@J@  "@@J@  !@J@   @J@  @J@  C@@ఐi#env Qy  K  i Ry  K  l@Q@@	P@@ Uy  K  X Vy  K  m@@@u@@I@  <@q@@I@  ;5@@I@  :@I@  9@I@  8`@@డH-instance_list%Ctype sz  n  s tz  n  @K@@@KJ@@I@  G@@I@  FHG@@I@  E@@I@  D@I@  C@@ఐ)type_decl z  n   z  n  @
@@ 5@@J@  W @  T@+type_params z  n   z  n  @ -@@xw@@J@  R@@J@  QJ@  XJ@  U@@ z  n  r z  n  @@)@@I@  I@  [I@  O@@ఐ+type_params {     {    @@@7@@I@  I@  ^I@  \@@@@ @@G@  aH@  @@ࠠ,constructors |     |    @@@  j)_@@ @  H@  g@@ @  tH@  b  0         @@@@డ $List#map }     }    @  @@@@)@@H@  H@  i@H@  j@  
@@H@  h  (@@H@  f@H@  e@H@  d#@@ఐ<<transl_extension_constructor }     }    @$@@:G@@J@  ĉ@
@@J@  Ĉ@)@@J@  ć@ j@@J@  Ć@@J@  ą@)Ϡ @@J@  Ą@@J@  ă@)@@J@  Ă@)@@J@  ā)@@J@  Ā@J@  @J@  ~@J@  }@J@  |@J@  {@J@  z@J@  y`@hఐ
5%scope T}     U}    @@@G>@@K@  ĲK@  ĴK@  ĳt@@ఐ
#env h}     i}    @
h@@@@ఐ)type_path u}     v}    @
@@*0@@K@  İK@  ķK@  Ķ@@ఐ)type_decl ~     ~    @@@ .@@K@  ļ @  Ĺ@+type_params ~     ~    (@ &@@  k(@@K@  į@@K@  ĮK@  ĽK@  ĺ@@ఐ+type_params ~    ) ~    4@@@*O >@@K@  ĭ@@K@  ĬK@  K@  Ŀ@@ఐ
&styext ~    5 ~    ;@
@@@.ptyext_private ~    < ~    J@r
@@*b@@K@  īK@  K@  @@ }     ~    K@@@*_@@I@  *[@@I@  @I@  @@ఐ
砐&styext   L  R   L  X@
ʰ@@
@3ptyext_constructors   L  Y   L  l@
@@ @@I@  uI@  I@  @@
@@#@@ |    
@@డ'end_def%Ctype   r  t   r  @@@@@@H@  @@H@  @H@    0         @IC@D@ 3/@@@@ภ  +  r  @ @@@@@I@  I@  @@@@ @@G@  H@  @డ 	$List$iter F     G    @ @@@@W@@H@  H@   
@@H@  @H@  @ 

@@H@   @@H@  @H@  @H@  ?@@డ  @*generalize%Ctype k     l    @Q@@@x@@I@  Q@@I@  @I@  W@@ఐP+type_params          @|@@ :=@@I@  I@  I@  	l@@F@@ @@G@  H@  r@డ b$List$iter          @ e@@@@+!@@H@  ~H@   f@@H@  @H@  @ c
@@H@   `@@H@  @H@  @H@  @@@#ext          @@@!@@డ 8iter_type_expr_cstr_args%Btype          	@@@ )type_expr@@ @'& 
@@ @'%@ @'$@ 
5constructor_arguments@@ @'# @@ @'"@ @'!@ @' @ *5*5 *j*@@  e @@@@@@J@  6@@J@  5@J@  4@@@J@  3@@J@  2@J@  1@J@  0  0         @Md@D@ 0@@@@డ  *generalize%Ctype     
     @@@@%@@K@  M@@K@  L@K@  K@@ఐq#ext 1     2    @*@@H@  TH@  RH@  *2@(ext_type =     >    '@j@@@@K@  V @  S>@(ext_args I    ( J    0@@@i@@K@  CK@  WK@  UL@@
@@ @@I@  ZJ@  BR@డ (&Option$iter e  2  9 f  2  D@}@@@@v@@I@  zI@  `}@@I@  b@I@  a@|
@@I@  _|@@I@  ^@I@  ]@I@  \v@@డ _*generalize%Ctype   2  E   2  U@p@@@@@J@  wp@@J@  v@J@  u@@ఐ㠐#ext   2  V   2  Y@@@n@(ext_type   2  Z   2  b@װ
@@}@@J@  Ł @  }@,ext_ret_type   2  c   2  o@T@@}FT@@J@  nJ@  łJ@  @@]@@ @@I@  ńJ@  m@@@ @@I@  ņI@  Ņ@@A        2  p@@@. @@I@  %@I@  $I@  ň  0         @@@@@ఐ,constructors   q  u   q  @ð@@ F@@I@  #I@  ŌI@  Ŋ@@O@@ :@@G@  ŏH@  "@డ $List$iter          @ ǰ@@@@,@@H@  H@  Ŗ @@H@  Ř@H@  ŗ@ Š
@@H@  ŕ @@H@  Ŕ@H@  œ@H@  ŒB@@@#ext &     '    @@@!R@@డ <closed_extension_constructor%Ctype 7     8    @@ 5extension_constructor@@ @+! 
 )type_expr@@ @+ @@ @+@ @+@ A:: A::@@  @@@@@J@  Ŵ@@J@  ų@@J@  Ų@J@  ű  0  W V V W W W W W@>@W@7@ p1@@@@ఐJ#ext l      m    @@@mH@  H@  H@  žH@  ū@(ext_type z     {    @@@E@@K@  ŽK@  K@  ſ(@@N
@@DC@@ @  ż@@ @  Ż0@Ġ$Some          @ ۠ࠠ"ty           "@@@]@@ @  I@@@@@ed@@L@  @@L@  Q@@Q@@డ {%raise   &  1   &  6@ @@@ @@J@   {@@J@  J@  @J@    0         @h*$@%@ 2@@@@ภ%Error   &  7   &  <@ ఐ#ext   &  =   &  @@@@l@'ext_loc   &  A   &  H@
@@ @@K@  K@  K@  *@ภ4Unbound_type_var_ext   &  J   &  ^@  <   |@ BRHYa@A @@ ఐa"ty    &  _   &  a@=@@ @@K@  K@  K@  G@ఐ#ext   &  c   &  f@@@T@(ext_type   &  g   &  o@H
@@ @@K@  K@  K@  b@@2 &  &  p@@ '@@K@  K@  i@@v -  &  r@@ 
@@K@  K@  p@@~@@ @@J@  J@  v@Ġ$None C  s  | D  s  @ @@@@@@L@  @@L@  @@@@ภ 
 R  s   S  s  @ 
@@@!J@  @@A X    @@ @@I@  I@    0  Y X X Y Y Y Y Y@@@@@A `     a  s  @@@^ !@@I@  Ŧ@I@  ťI@    0  d c c d d d d d@J@@@@ఐ,constructors t     u    @U@@ .v@@I@  ŤI@  I@  @@@@ @@G@  H@  ţ@డ V$List$iter          @ Y@@@@)Typedtree5extension_constructor@@H@  ^H@  " _@@H@  $@H@  #@ \@@H@  ! Y@@H@   @H@  @H@  G@@@#ext	          @@@&W@@డ 8check_variance_extension1Typedecl_variance           @@4!t@@ @c@40type_declaration@@ @b@F@@ @a@3|#req@@ @_E@@ @`@ @^$unitF@@ @]@ @\@ @[@ @Z@ @Y@4l4nT@@4R0/@@@-@@I@  F@*@@I@  E@n@@I@  D@(@@I@  Bk@@I@  C@I@  A&@@I@  @@I@  ?@I@  >@I@  =@I@  <  0         @i@`@ 03@@@@ఐB#env *  !  . +  !  1@*@@@@ఐe)type_decl 7  !  2 8  !  ;@@@c@@J@  _J@  cJ@  b%@@ఐ#ext K  !  < L  !  ?@/@@H@  dH@  75@@ఐ
x-type_variance ^  !  A _  !  N@@@y@@J@  pJ@  kJ@ఐu#loc n  !  P o  !  S@]@@
U@@ r  !  @ s  !  T@@@@J@  \@J@  [J@  za@@@@ 	;@@I@  ƄJ@  Zg@Ġ1Typedecl_variance%Error   U  a   U  x@43ࠠ#loc
   U  z   U  }@@@44@@ @  Ɗ@ࠠ#err   U     U  @@@48@@ @  Ƌ@@@   U  @@ @@L@  ƌ@@డ |%raise          @ @@@ @@J@  ƕ 	|@@J@  ưJ@  Ɣ@J@  Ɠ  0         @5/@0@ 4*$@%@ 5@@@@ภ%Error          @ ఐH#loc          @@@ @@K@  ơK@  ƦK@  ƥ$@ภ(Variance          @4ఐV#err          @2@@ @@K@  ƬK@  ƮK@  ƭ?@@
@@ @@K@  ƢK@  ƫE@@ 
         @@ @@K@  ƚK@  ƠM@@[@@ 	@@J@  ƲJ@  ƱS@@     @@ 	@@I@  ƶI@  Ƶ  0         @@@@@A       !    @@@ 	@@I@  2@I@  1I@  Ƹ  0  $ # # $ $ $ $ $@
@@@@ఐX,constructors 4     5    @@@ 	@@I@  0I@  ƼI@  ƺ@@@@ @@G@  ƿH@  /@@ࠠ&newenv O     P    @@@H@    0  O N N O O O O O@5@@@డ $$List)fold_left a  
   b  
  @@@@@H@  @/@@H@  *H@  	@H@  @H@  @@@@H@  @H@  @H@  @H@    0  t s s t t t t t@Z@@@@@#env
     (     +@@@"@@@#ext     ,     /@@@+H@    0         @{4@@ 7@@@@@ࠠ&rebind   3  @   3  F@@@ f@@ @  J@    0         @%@@ 8@@@ఐؠ)is_rebind   3  I   3  R@@@@0:@@J@   ~@@J@  @J@  @@ఐA#ext   3  S   3  V@"@@CH@  &H@  H@  H@  ,@@ 
@@0-@@   3  <@@డ T-add_extension#Env   Z  c   Z  t@%check @@ @v&rebind @@ @u@ !t@@ @t@ 5extension_constructor@@ @s@ @@ @r @@ @q@ @p@ @o@ @n@ @m@ @l@ ' '  ''\@@  /.@@,*@@I@  )'@@I@  @&@@I@   @#@@I@  @ @@I@   @@I@  @I@  @I@  @I@  @I@  @I@    0  0 / / 0 0 0 0 0@@@ I9@@@Lภ H A  Z  | B  Z  @ G@@@U@@J@  J@  !@Tఐ&rebind S  Z   T  Z  @@@a@@J@  J@  #J@  "(@@ఐ٠#ext i  Z   j  Z  @@@7@&ext_id p  Z   q  Z  @
@@x@@J@  J@  'J@  %E@@ఐ#ext   Z     Z  @װ@@T@(ext_type   Z     Z  @
@@@@J@  J@  +J@  )b@@ఐ#env   Z     Z  @@@>H@  ,H@  r@@@@H@  u@	@@@@A
A@@D@I@  1I@  0  0         @@@@@A     #   Z  @@@P@NR@I@  @I@  I@  3f@@ఐܠ#env          @İ@@eN@@ఐ,constructors          @@@\o@@I@  I@  7I@  5c@@|@@;@@     
@@@ࠠ%tyext          @@@+@@ @  >H@  :  0         @@@ 6@@@  , *tyext_path8@@ @=!t@@ @@@  , )tyext_txt#loc=!t@@ @@@ @@A@AR7R;R7RV@@  , ,tyext_paramsY@@ @&(variance@@ @,+injectivity@@ @@ @@ @@@ @@B/@A#RWR[$RWR@@  , 2tyext_constructors>y1@@ @@@ @@C=@A1RR2RR@@  , -tyext_privateLF,private_flag@@ @@DH@A<RR=RR@@  , )tyext_locW%!t@@ @ @ET@AHRRIRS@@   , 0tyext_attributesc#@@ @@F]@AQSS
RSS'@@	@AURR#VRR6@@
*tyext_path n     o    @ఐ)type_path w     x    @@@@@I@  @I@  BI@  A@})tyext_txt          @ఐ&styext           @k@@}@+ptyext_path          @v
@@@@I@  JI@  SI@  P@@I@  O@,tyext_params          &@ఐ,ttype_params     )     5@
x@@@@I@  m@@I@  o@@I@  p@I@  n@I@  l@@I@  kI@  wI@  q@2tyext_constructors   7  =   7  O@ఐ	,constructors   7  R   7  ^@°@@2d@@I@  Ǆ@@I@  ǃI@  ǇI@  ǅ@-tyext_private   `  f   `  s@ఐ&styext    `  v   `  |@ٰ@@@.ptyext_private   `  }   `  @
@@@@I@  ǍI@  ǑI@  Ǐ @¡)tyext_loc          @ఐ&styext "     #    @@@	4@*ptyext_loc )     *    @
@@@@I@  ǖI@  ǜI@  ǚB@ء0tyext_attributes 9     :    @ఐ:&styext D     E    @@@)V@1ptyext_attributes K     L    @ְ
@@ @@I@  Ǧ`@@@ R     S    @@fc@@ U    @@ఐw%tyext `     a    @w@x@ t:@@  0  ` _ _ ` ` ` ` `@u@@@ఐ &newenv o     p    @~@@
@@ s    @@@G@  ǻ@$@@@@@&@@@'@{@@(@@@	)@8@@
*@k@@+@{@@	@
@@
	@
@@D@^@@@@@@@@@7@@@@@@ @@@@@@*@@@7@@d@@A~A@  0         @{@@@@AA@  0         @@@@@AA@  0         @@@@@AA@@@ @    0         @@@@@@@ˠ@ࠠ5transl_type_extension          @@@@ z@@ @  4G@  @ 4@@ @  1G@  @@@ @  3G@  @@@ @  2G@  
@@ @  0@ @  /G@  @ @  G@  @ @  G@  @ @  G@  @ @  G@    0         @GA@B@ @@@@&extend          !@@@:  0         @@@@@@#env     "     %@@@?  0         @ K@@ <@@@@@#loc     &     )@@@G  0         @S@@ =@@@@@&styext     *     0@@@O  0  
   
 
 
 
 
@[@@ &>@@@@డ -warning_scope2Builtin_attributes "  3  5 #  3  U@ A@@ A ? <@@G@  @@G@  @ ;@@G@  @@ 8@@G@  rG@  @G@  @G@  @G@  @G@    0  7 6 6 7 7 7 7 7@+7|@.@ P?@@@ \ภ 
E  @ @ ^ [@@H@  @@H@  @@ఐN&styext Y  3  V Z  3  \@@@G@  :G@  G@  G@  '@1ptyext_attributes g  3  ] h  3  n@@@ y@@H@  H@  H@  5@@@ =Ġ < ~  o  x   o  z@ ;@@@@ @@K@  H@@ఐ5transl_type_extension   o  ~   o  @@@@ 
b@@I@  @ @@I@  @@@I@  @@@I@  @@I@  @I@  @I@  @I@  @I@  @I@  o@@ఐڠ&extend   o     o  @Ű@@G@  5G@  @@ఐܠ#env   o     o  @İ@@G@  6G@  @@ఐ۠#loc   o     o  @ð@@ G@  9G@  @@ఐڠ&styext   o     o  @@@@@\@@@@A   o  s   o  @@@ @@H@  @H@  H@  >@@	@@*@@A
A@4  0         @@@@@AA@?  0         @@@@@AA@J  0         @	@@@@AA@@SN@ @  H,@@     @@@/@ࠠ0transl_exception          @@@@ @@ @  G@  J@4@@ @  G@  Q4@@ @  G@   @@ @  G@  @ @   G@  R@ @  SG@  K@ @  LG@  I  0  + * * + + + + +@`@@ D;@@@@#env >     ?    @@@/  0  < ; ; < < < < <@; E     F    @@@@@@$sext Q     R    @@@9  0  O N N O O O O O@ E@@ hA@@@@@ࠠ%scope b     c    @@@R@@ @  bH@  X  0  e d d e e e e e@#R@@ ~B@@@డ 
O,create_scope%Ctype z     {    @R@@@R@@H@  \S@@H@  [@H@  Z@@ภ K          @ J@@@S	@@I@  cI@  g+@@@@/,@@     
@@డ 4reset_type_variables          	@9@@@9@@H@  n8@@H@  m@H@  l  0         @ERL@M@ C@@@@ภ x     @ v@@@O@@I@  uI@  y@@@@ @@G@  |H@  t@డ 
)begin_def%Ctype   
     
  @s@@@s@@H@  ȁr@@H@  Ȁ@H@  2@@ภ    
   @ @@@ޅ@@I@  ȈI@  ȌA@@@@ <@@G@  ȏH@  ȇG@@ࠠ#ext   "  (    "  +@@@5}@@ @  H@  Ȑ  0         @Y@@@ఐ4<transl_extension_constructor   .  2   .  N@@@2R@@H@  Ȣ@ @@H@  ȡ@5@@H@  Ƞ@ v@@H@  ȟ@@H@  Ȟ@5Ǡ @@H@  ȝ@@H@  Ȝ@5@@H@  ț@5@@H@  Ț5@@H@  ș@H@  Ș@H@  ȗ@H@  Ȗ@H@  ȕ@H@  Ȕ@H@  ȓ@H@  Ȓ;@`ఐꠐ%scope L  .  P M  .  U@@@S6@@I@  I@  I@  O@@ఐ&#env `  .  V a  .  Y@@@WG@  G@  G@  G@  Mc@@డ  (path_exn&Predef w  Z  ` x  Z  o@ !t@@ @4@ m-- m-A@@ X
@@6=@@I@  I@  I@  @@ภ   Z  p   Z  r@@@@ w#@@I@  @@I@  I@  @@ภȰ   Z  s   Z  u@@@@6F 5@@I@  @@I@  I@  @@ภ(Asttypes&Public   Z  v   Z  @2@@@6O@@I@  I@  @@ఐ$sext   Z     Z  @g@@G@  G@  T@@@@@@   "  $@@డ 'end_def%Ctype          @l@@@l@@H@  k@@H@  @H@    0         @F@@  D@@@@ภ      @ @@@@@I@  I@  @@@@ S@@G@  H@  @డ <8iter_type_expr_cstr_args%Btype            @E@@@@E@@H@  C@@H@  @H@  @B@@H@  @@@H@  @H@  @H@  <@@డ *generalize%Ctype  <      =    @"@@@I@@I@  "@@I@  @I@  T@@ఐV#ext  U      V    @b@@6@@J@   @  j@(ext_type  a      b    @@@ 4@@I@    @  v@(ext_args  m      n    @ @@@@I@  I@  !I@  @@^
@@ @@G@  $H@  @డ N&Option$iter            @'@@@@@@H@  EH@  +(@@H@  -@H@  ,@%
@@H@  *$@@H@  )@H@  (@H@  '@@డ *generalize%Ctype            #@@@@@@I@  B@@I@  A@I@  @@@ఐʠ#ext      $      '@ְ@@7G@@J@  J @  H@(ext_type      (      0@@@ @@I@  M @  I@,ext_ret_type      1      =@ @@qY@@I@  9I@  NI@  K@@b@@ 9@@G@  QH@  8@డ <closed_extension_constructor%Ctype !  p  ~ !  p  @
˰@@@
@@I@  X
ɠ
@@I@  W@@I@  V@I@  U@@ఐ#ext !  p   !  p  @*@@7@@J@  e @  c2@(ext_type !)  p   !*  p  @V@@
@@J@  aJ@  fJ@  d@@@2
@@

@@ @  `@@ @  _H@Ġ$Some !E     !F    @ ࠠ"ty !N     !O    @@@@@ @  na@@@@@@@K@  p@@K@  oi@@i@@డ  *%raise !e     !f    @ F@@@ F@@I@  ɀ @@G@  ɲH@  ɨH@  RH@  {I@  @I@  ~  0  !s !r !r !s !s !s !s !s@0*@+@ !E@@@@ภ%Error !     !    @ 7ఐ#ext !     !    @@@8@@J@  ɓ @  ɑ!@'ext_loc !     !    @@@ @@J@  ɌJ@  ɔJ@  ɒ/@ภ4Unbound_type_var_ext !     !    @
ఐj"ty !     !    @@@@ X@@J@  ɛJ@  ɞJ@  ɝJ@ఐ͠#ext !     !    @ٰ@@8J@@J@  ɢ @  ɠ\@(ext_type !     !    @ @@ r@@J@  ɜJ@  ɣJ@  ɡj@@5 !    @@ @@J@  ɍJ@  ɚq@@ !     !    
@@ @@J@  ɅJ@  ɋy@@@@z@Ġ$None !     !    @ @@@@@@K@  x@@K@  w@@@@ภ ɰ "     "    @ @@@@@A "  p  r "    @@  0  " " " " " " " "@@@@@ࠠ&rebind "  !  ' "  !  -@@@ @@ @  ɽH@  ɳ  0  " " " " " " " "@1@@@ఐJ)is_rebind ".  !  0 "/  !  9@c@@@8@@H@  ɷ @@H@  ɶ@H@  ɵ@@ఐD#ext "C  !  : "D  !  =@P@@8@@I@  ɾI@  I@  ɿ)@@ 
@@-*@@ "O  !  #@@@ࠠ&newenv "Z  A  G "[  A  M@@@ @@ @  H@    0  "] "\ "\ "] "] "] "] "]@pLF@G@ "vF@@@డ -add_extension#Env "r  P  T "s  P  e@@@@@H@  @@H@  @@@H@  @@@H@  @ @@H@   @@H@  @H@  @H@  @H@  @H@  @H@  /@ภ  "  P  m "  P  q@ @@@@@I@  I@  ?@ఐ&rebind "  P  s "  P  y@I@@@@I@  I@  I@  S@@ఐ #ext "  P  z "  P  }@ΰ@@9?@@I@   @  g@&ext_id "  P  ~ "  P  @!@@@@I@  I@  I@  u@@ఐ䠐#ext "  P   "  P  @@@9a@@I@   @  @(ext_type "  P   "  P  @!@@@@I@  I@  I@  @@ఐɠ#env #  P   #  P  @@@@@@@@@ #  A  C@@ఐ#ext #     #    @ @@  0  # # # # # # # #@@@ #*G@@@ఐȠ&newenv #"    @@@@@@@@G@  @"@@@@@@@@@@@	@@@	
@G@@
@W@@)@\@@*@@@
+@@@@@AA@  0  #/ #. #. #/ #/ #/ #/ #/@@@@@AA@@$@ @    0  #3 #2 #2 #3 #3 #3 #3 #3@@@@@@@
@ࠠ5transl_type_exception  #E     #F    @@@@ @@ @  {G@  	@ !.type_exception@@ @  ʨG@  .type_exception@@ @  ʎG@  ʈ @@ @  ʲG@  ʉ@ @  ʊG@  @ @  G@  
@ @  G@    0  #i #h #h #i #i #i #i #i@?ic@d@ #@@@@@#env" #|     #}    @@@3  0  #z #y #y #z #z #z #z #z@? #     #    @@@@@@!t# #     #    @@@=  0  # # # # # # # #@ I@@ #I@@@@డ .check_no_alert2Builtin_attributes #     #    @@ *attributes@@ @R @@ @Q@ @P@ ruu ru@@ G@@@@@H@  @@H@  @H@    0  # # # # # # # #@/;n@2@ #J@@@@ఐE!t #     #    @@@G@  ʜG@  G@  WG@  (G@  &G@  @1ptyexn_attributes #     #    @  , 1ptyexn_attributes@@ @F "@@ @E@B  , 2ptyexn_constructor	:o@@ @C@@@A == ==@@    , *ptyexn_loc !t@@ @D@A@A  == !==@@  @A $
== %
=>@@  ۰7$@@b@@I@  "I@  )I@  'N@@k,@@ [@@G@  ,H@  !T@@ࠠ*contructor$ $!     $"    @@@:@@ @  xH@  .  0  $$ $# $# $$ $$ $$ $$ $$@i@@@ࠠ&newenv% $1     $2    @@@ @@ @  yH@  /@@@@
@ @  2@డ -warning_scope2Builtin_attributes $J     $ $K     D@ i@@ i g d@@H@  <@@H@  ;@ c@@H@  :@@ `@@H@  9,H@  wH@  7@H@  8@H@  6@H@  5@H@  4=@ ภ k $C 9@ $C@  @@I@  Q@@I@  PJ@@ఐ!t $     E $     F@@@Y@1ptyexn_attributes $     G $     X@
@@ @@I@  MI@  XI@  Vg@@@ \&Ġ [ $  Y  d $  Y  f@ Z@@@@ @@L@  `z@@ఐ0transl_exception $  j  s $  j  @>@@@ 2@@J@  k@;6@@J@  j;5@@J@  h A@@J@  i@J@  g@J@  f@J@  e@@ఐU#env $  j   $  j  @;@@G@  |G@  @@ఐT!t $  j   $  j  @@@	@2ptyexn_constructor $  j   $  j  @
@@;m@@K@  zK@  ʀK@  ~@@E
@@@@A $  Y  _ $    @@@ @@I@  L@I@  KI@  ʄ@@	@@@@ $    @@ະ  , 1tyexn_constructor@@ @;@@ @@@	  , )tyexn_loc	!t@@ @@A	@AStSxStS@@  , 0tyexn_attributes\)attribute@@ @
@@ @	@B@ASSSS@@@ASFSJSFSs@@1tyexn_constructor %3     %4    @ఐ*contructor %<     %=    @@@ %PK@@;@@H@  ʐH@  ʒH@  ʑ  0  %C %B %B %C %C %C %C %C@.
@@ %]L@@@@)tyexn_loc %S     %T    @ఐӠ!t %^     %_    @@@@*ptyexn_loc %e     %f    @q
@@\@@H@  ʗH@  ʝH@  ʛ'@V0tyexn_attributes %u     %v    @ఐ!t %      %    @@@;@1ptyexn_attributes %     %    @
@@ @@H@  ʧE@@@ %     %    @@-H@ఐg&newenv %    @N@@/R@@
@@;4@G@  ʳW@@@w@@@Cx@@AA@O  0  % % % % % % % %@@@@@A( A@@XS@ @  ʷ  0  % % % % % % % %@'@@@@%@%$@:A  ( 5native_repr_attribute'G %    $ %    9@@  8 @@7Native_repr_attr_absent(@@ %  <  > %  <  W@@ %N8Native_repr_attr_present) #@@ @  ʸ@@ %  X  Z %  X  @@ %O@@A@@@@@ %    @@@@ %M@ %  <  @@@@@ %  X  \ %  X  t@г0native_repr_kind %  X  x@@!  0  % % % % % % % %@y@@ %H=  8 @@@A@@@@@@@@@@"@@@@$@@A@ @@ #@  0  % % % % % % % %@@@@ࠠ9get_native_repr_attribute* %     %    @@@@)Parsetree*attributes@@ @  DH@  +global_repr ҠS@@ @  ̔H@  ˌ@@ @  ˋH@  s@@ @  ̌H@  @ @  H@  @ @  H@    0  & & & & & & & &@<vp@@@@%attrs, &-     &.    @@@0  0  &+ &* &* &+ &+ &+ &+ &+@< &4     &5    @@@@@**-/ &?     &@    @@@2  0  &= &< &< &= &= &= &= &=@E@@ &VQ@@@@డ+Attr_helper8get_no_payload_attribute+Attr_helper &Y     &Z    @@$listI&stringO@@ @  @@ @  @k@@ @  &optionJ(Asttypes#loc@@ @  @@ @  @@ @  @ @  @ @  @7parsing/attr_helper.mlidd)@@+Attr_helperC21@@@/,@@I@  @@I@  @@@I@  )&!@@I@  @@I@  @@I@  @I@  @I@    0  & & & & & & & &@cn@f@ &R@@@@ภ賰 &     &    
A豠'unboxed &     &    @@ &    @@]@@J@  
J@  J@  J@   @ภͰ &    Aʠ-ocaml.unboxed &     &    @@
 &    	@@J@  J@   J@  6@ภ/A@
0A@ &d
@@J@  J@  &B@@7A@ &k-@@J@  J@  I@@ &    ?@@3@@J@  	J@  Q@@ఐ֠%attrs &     '     @@@H@  fH@  H@  *H@  e@@
@@@@ @  @@ @  @@ @  q@డ8get_no_payload_attribute+Attr_helper '"     '#    ;@ɰ@@@ɠ@@I@  4@@I@  3@.@@I@  2à@@I@  1@@I@  0@@I@  /@I@  .@I@  -@@ภI 'E    = 'F    ZAG(untagged 'M    > 'N    F@@ 'P    G@@@@J@  FJ@  NJ@  QJ@  P@ภc '_    IA`.ocaml.untagged 'f    J 'g    X@@
 'i    Y@@J@  YJ@  \J@  [@ภ豰/A@
0A@ &
@@J@  ZJ@  b@@7A@ '-@@J@  OJ@  X@@ '    <?@@)3@@J@  EJ@  M@@ఐl%attrs '    [ '    `@S@@@@w@@)&!@@ @  C@@ @  B@@ @  A @ఐp+global_repr '  b  f '  b  q@@@H@  @@X@@@ @  h@Ġ$None '  y  } '  y  @ @@@@VSN@@K@  ˂@@K@  ˁ@@K@  ˀ  0  ' ' ' ' ' ' ' '@-@@@Ġ$None '  y   '  y  @ @@@@lid@@K@  ˊ@@K@  ˉ@@K@  ˈ@Ġ$None '  y   '  y  @ @@@@ @@/@@/@K@  ˍ&@@&@@ภ7Native_repr_attr_absent '  y   '  y  @  < H@@ @  @@@@AAB@AJ@@G@@@4@Ġ$None (     (    @ @@@@@@K@  ˧@@K@  ˦@@K@  ˥  0  ( ( ( ( ( ( ( (@|@@@Ġ$None ((     ()    @ @@@@@@K@  ˯@@K@  ˮ@@K@  ˭@Ġ$Some (=     (>    @ ࠠ$repr0 (F     (G    @@@4)@@@
@@8*@@9@@9$>@K@  ˲0@@0@@ภ8Native_repr_attr_present (V     (W    @  < Y@A@AAB@A@@ఐ$repr (b     (c    @P@@ (vS@@R  0  (b (a (a (b (b (b (b (b@'@@@@@@OH@  ̒@Ġ$Some (y     (z    @ @ (~     (    @@
@@K@  @@K@  g@@@	@@@@K@  @@K@  @@K@  s@Ġ$None (     (    @ i@@@@-*%@@K@  @@K@  @@K@  @Ġ$None (     (    @ ~@@@@@@:@@.@K@  @@@@ภ8Native_repr_attr_present (     (    @hภ'Unboxed (     (    @  <  & &@@ @@@@@B@B@A &@@ &@	@@@@I@  ̜I@  ̠@@@@H@  ̚@Ġ$None (    # (    '@ @@@@xup@@K@  @@K@  @@K@  @Ġ$Some (    ) (    -@ ?@ (    . )     /@@@@K@  @@K@  @@@	@@@@K@  @@K@  @@K@  @Ġ$None )    1 )    5@ @@@@@@:@@:@K@   @@@@ภ8Native_repr_attr_present )*    9 )+    Q@Ԡภ(Untagged )3    R )4    Z@  <  'Dl@@@AB@B@A 'C@@ '@@@@v@@I@  ̧I@  ̫@@
@@#H@  ̥ @Ġ$Some )O  [  _ )P  [  c@ ঠ(Location#loc )\  [  f )]  [  rA  , #locٴ#loc!a @a@@ @dپ@@ @c@A  , #txt@@@A٬ C		٭ C		@@O@Aٰ D		ٱ D		@@Pࠠ!1"! @@@@ @  QK@  "@@@ )  [  d )  [  t@@@@L@  &L@  $@@L@  #@@@@@@@@L@  /@@L@  .@@L@  -@@ )  [  v )  [  w@@/,'@@L@  2@@L@  1@@L@  0@@ )  [  y )  [  z@@@@a@@$@L@  3@@@@ )  {   )  {  @@NKF@@L@  A@@L@  @@@L@  ?%@Ġ$Some )  {   )  {  @ ঠ(Location#loc )  {   )  {  Ag@@d?@@@ )  {   )  {  @@pm@@L@  UL@  S@@L@  RK@@@ @@}x@@L@  ^@@L@  ]@@L@  \W@@ )  {   )  {  @@\@@E@@F@L@  _b@@b@@@@@@K@  d@@K@  c@@K@  b@@K@  g@@K@  f@@K@  e@K@  a~@@డ (%raise *+     *,    @  @@@  @@I@  ̱H@  ̬I@  ̰@I@  ̯  0  *2 *1 *1 *2 *2 *2 *2 *2@@@ *KT@@@@ภ%Error *D     *E    @ ఐР#loc *N     *O    @@@ "\@@J@  ̽J@  J@  !@ภ?Multiple_native_repr_attributes *_     *`    @  <  % @@@EHYa@A %@@ %@@@ "d@@J@  ̾J@  2@@ *j    6@@  I@@J@  ̶J@  ̼9@@F<@@<:@@A *r    >@@V@@A *t    @A@i  0  *p *o *o *p *p *p *p *p@3@@@@AJBA@@wm@ @    0  *t *s *s *t *t *t *t *t@I@@@@G@GF@Z@ࠠ3native_repr_of_type3 *     *    @@@@ v!t@@ @  3H@  @@@ @  AH@  @ [)type_expr@@ @  2H@   "k)Primitive+native_repr@@ @  H@  @@ @  H@  @ @  H@  @ @  H@  	@ @  
H@    0  * * * * * * * *@@@ *P@@@@#env5 *     *    @@@=  0  * * * * * * * *@I *     *  O  W@@@@@@$kind6 *     *    @@@D  0  * * * * * * * *@ S@@ *V@@@@@"ty7 *     *    @@@L  0  * * * * * * * *@X@@ +W@@@@ఐ($kind *     *    
@@@hH@    0  * * * * * * * *@!c@@ +X@@@డ /expand_head_opt%Ctype +    
 +    "@@@@ @)@{@@ @) )type_expr@@ @)@ @)@ @)@  !c!c  !c!@@  M@@@@@J@  '@@@J@  &@@J@  %@J@  $@J@  #7@@ఐ#env +C    # +D    &@f@@H@  4H@  G@@ఐl"ty +S    ' +T    )@Q@@H@  5H@  W@@ +Z     +[    *@@ @@I@  8 @  1_@$desc +e    + +f    /@ ݰ@@ @@ @  7i@@n@@n@ @  9n@Ġ(Untagged +}  5  9 +~  5  A@J@@@@  0  +{ +z +z +{ +{ +{ +{ +{@~@@@Ġ'Tconstr +  5  C +  5  J@ ˠࠠ$path8 +  5  L +  5  P@@@ @@ @  I@@ +  5  R +  5  S@@ Π $@@K@  K@@K@  J#@@ +  5  U +  5  V@@ Ѡ @@K@  M@@K@  L/@@@( +  5  W@@ "@@K@  N4@@8@@@K@  O9@@9@డ ($same$Path +  5  ] +  5  f@ @@@ @@I@  Ϲ@ @@I@  ϸ @@I@  Ϸ@I@  ϶@I@  ϵ  0  + + + + + + + +@KE@F@ +Y@@@@ఐS$path +  5  g +  5  k@@@ @@J@  J@  J@  @@డ (path_int&Predef +  5  l +  5  {@ !t@@ @4@ f f@@ Q
@@ @@J@  J@  J@  :@@K@@ @@I@  J@  @@ภ$Some ,     ,    @ !aภ,Untagged_int ,%     ,&    @  < ,Untagged_inty@@ @	@@@BCAD@A4typing/primitive.mliZLNZL\@@@}H@
@@I@  _@@@@`@Ġ'Unboxed ,C     ,D    @|@@@@  0  ,A ,@ ,@ ,A ,A ,A ,A ,A@D@@@Ġ'Tconstr ,N     ,O    @ ࠠ$path9 ,W     ,X    @@@ @@ @  _@@ ,`     ,a    @@  @@K@  a@@K@  `#@@ ,l     ,m    @@  @@K@  c@@K@  b/@@@( ,v    @@ @@K@  d4@@8@@@K@  e9@@9@డ )O$same$Path ,     ,    @ \@@@ N@@I@  @ S@@I@   @@I@  @I@  @I@    0  , , , , , , , ,@KE@F@ ,Z@@@@ఐS$path ,     ,    @@@ n@@J@  J@  J@  @@డ J*path_float&Predef ,     ,    @ H@@ @@J@  J@  J@  /@@@
@@ @@I@  J@  5@ภ$Some ,     ,    @ "ภ-Unboxed_float ,     ,    @  < -Unboxed_float@@@ACAD@AXX&@@@4F@
	@@>H@  I@  R@@@@FH@  U@Ġ'Unboxed ,     ,    @7@@@@f  0  , , , , , , , ,@@@@Ġ'Tconstr -	     -
    @ Lࠠ$path: -    
 -    @@@ P@@ @  u@@ -     -    @@ O  @@K@  w@@K@  v#@@ -'     -(    @@ R M@@K@  y@@K@  x/@@@( -1    @@ @@K@  z4@@8@@@K@  {9@@9@డ *
$same$Path -G     -H    '@ @@@ 	@@I@  @ @@I@   Z@@I@  @I@  @I@    0  -R -Q -Q -R -R -R -R -R@VKE@F@ -k[@@@@ఐS$path -e    ( -f    ,@@@ )@@J@  	J@  J@  
@@డ *path_int32&Predef -|    - -}    >@ !t@@ @4@ r r@@  ]
@@ K@@J@  J@  
J@  :@@K@@ d@@I@  J@  @@ภ$Some -  B  F -  B  J@ "ภ/Unboxed_integer -  B  L -  B  [@  < /Unboxed_integer@-boxed_integer@@ @	@A@CAD@AY')Y'K@@@ Gภ&Pint32 -  B  \ -  B  b@  < &Pint32@@ @	@@@AC@C@ARaRa@@@B@
@@ @@I@  I@  w@@ -  B  K -  B  c@@%H@  I@  ~@@9@@-H@  @Ġ'Unboxed -  d  h -  d  o@@@@@M  0  - - - - - - - -@@@@Ġ'Tconstr -  d  q -  d  x@ 3ࠠ$path; -  d  z -  d  ~@@@ 7@@ @  ϋ@@ .  d   .  d  @@ 6 !@@K@  ύ@@K@  ό#@@ .  d   .  d  @@ 9 4@@K@  Ϗ@@K@  ώ/@@@( .  d  @@ @@K@  ϐ4@@8@@@K@  ϑ9@@9@డ *$same$Path ..  d   ./  d  @ @@@ @@I@  %@ @@I@  $ A@@I@  #@I@  "@I@  !  0  .9 .8 .8 .9 .9 .9 .9 .9@=KE@F@ .R\@@@@ఐS$path .L  d   .M  d  @@@ @@J@  1J@  3J@  2@@డ *path_int64&Predef .c  d   .d  d  @ !t@@ @4@ s s@@ ^
@@ 2@@J@  0J@  5J@  4:@@K@@ K@@I@  7J@  /@@ภ$Some .     .    @ #ɠภ/Unboxed_integer .     .    @ภ&Pint64 .     .    @  < &Pint64@@@BC@C@AnRaoRa@@@C@
	@@@@I@  AI@  Eg@@ .     .    @@H@  ?I@  @n@@)@@H@  ;q@Ġ'Unboxed .     .    @@@@@$@Ġ'Tconstr .     .    @ 	ࠠ$path< .     .    @@@ 
@@ @  ϡ@@ .     .    @@  "b@@K@  ϣ@@K@  Ϣ@@ .     .    @@  
@@K@  ϥ@@K@  Ϥ@@@( .    @@ `@@K@  Ϧ@@7@@[@K@  ϧ@@@డ +$same$Path /     /    @ ԰@@@ @@I@  M@ @@I@  L @@I@  K@I@  J@I@  I  0  / / / / / / / /@KE@F@ /(]@@@@ఐS$path /"     /#    @@@ @@J@  YJ@  [J@  Z@@డ .path_nativeint&Predef /9     /:    @ !t@@ @4@ q q@@ \
@@ @@J@  XJ@  ]J@  \:@@K@@ !@@I@  _J@  W@@ภ$Some /Z     $ /[     (@ $ภ/Unboxed_integer /c     * /d     9@ภ*Pnativeint /l     : /m     D@  < *Pnativeint@@@@C@C@ADRavERa@@@A@
	@@@@I@  iI@  mg@@ /|     ) /}     E@@H@  gI@  hn@@)@@H@  cq@@ /  F  J /  F  K@@ @@K@  ϫ@K@  Ϫ@
@@@ภ$None /  O  S@ $h@@@H@  r@@A /     @@  0  / / / / / / / /@@@@@AA@  0  / / / / / / / /@@@@@AA@
  0  / / / / / / / /@@@@@AA@@@ @  z  0  / / / / / / / /@@@@@@@񠰡@ࠠ	(error_if_has_deep_native_repr_attributes= /     /    @@@@)Parsetree)core_type@@ @  SH@  |$unitF@@ @  RH@  }@ @  ~H@  {  0  / / / / / / / /@NH@I@ /U@@@@)core_type? /     /    @@@#  0  / / / / / / / /@/ /     /    @@@@@  Р,Ast_iterator,Ast_iterator /    
 /    @@  0  / / / / / / / /@#<@@ 0	_@@@@A  0  / / / / / / / /@@@ /    @@@ࠠ-this_iteratorA 0    # 0    0@@@,Ast_iterator(iterator@@ @  >I@  V  0  0 0 0 0 0 0 0 0@@@@     , )attribute@@ @  T@@@ @  p@g)attribute@@ @  ob@@ @  n@ @  m@ @  l@@     , *attributes@'@@ @  v@$listI)attribute@@ @  u@@ @  t|@@ @  s@ @  r@ @  q@A@A8parsing/ast_iterator.mli__@@<B  , *binding_op4@E@@ @  {@*binding_op@@ @  z@@ @  y@ @  x@ @  w@B1@A``@@@RC  , $caseJ@[@@ @  р@$case@@ @  @@ @  ~@ @  }@ @  |@CG@A-aAC.aAb@@hD  , %cases`@q@@ @  ц@J$case@@ @  х@@ @  ф@@ @  у@ @  т@ @  с@Db@AHbceIbc@@E  , 1class_declaration{@@@ @  ы@1class_declaration@@ @  ъ@@ @  щ@ @  ш@ @  ч@Ex@A^c_c@@F  , 1class_description@@@ @  ѐ@1class_description@@ @  я@@ @  ю@ @  э@ @  ь@F@Atdud@@G  , *class_expr@@@ @  ѕ@*class_expr@@ @  є@@ @  ѓ@ @  ђ@ @  ё@G@Aee0@@H  , +class_field@@@ @  њ@!+class_field@@ @  љ@@ @  ј@ @  ї@ @  і@H@Af13f1`@@I  , /class_signature@@@ @  џ@7/class_signature@@ @  ў2@@ @  ѝ@ @  ќ@ @  ћ@I@Agacga@@J  , /class_structure@@@ @  Ѥ@M/class_structure@@ @  ѣH@@ @  Ѣ@ @  ѡ@ @  Ѡ@J@Ahh@@K  , *class_type@@@ @  ѩ@c*class_type@@ @  Ѩ^@@ @  ѧ@ @  Ѧ@ @  ѥ@K@Aii@@L  , 6class_type_declaration@&@@ @  Ѯ@y6class_type_declaration@@ @  ѭt@@ @  Ѭ@ @  ѫ@ @  Ѫ@L@AjjD@@3M  , 0class_type_field+@<@@ @  ѳ@0class_type_field@@ @  Ѳ@@ @  ѱ@ @  Ѱ@ @  ѯ@M(@AkEGkE~@@IN  , 7constructor_declarationA@R@@ @  Ѹ@7constructor_declaration@@ @  ѷ@@ @  Ѷ@ @  ѵ@ @  Ѵ@N>@A$l%l@@_O  , $exprW@h@@ @  ѽ@*expression@@ @  Ѽ@@ @  ѻ@ @  Ѻ@ @  ѹ@OT@A:m;m@@uP  , )extensionm@~@@ @  @)extension@@ @  @@ @  @ @  ѿ@ @  Ѿ@Pj@APnQn	@@Q  , 5extension_constructor@@@ @  @5extension_constructor@@ @  @@ @  @ @  @ @  @Q@Afo		go		^@@R  , 3include_declaration@@@ @  @3include_declaration@@ @  @@ @  @ @  @ @  @R@A|p	_	a}p	_	@@S  , 3include_description@@@ @  @3include_description@@ @  @@ @  @ @  @ @  @S@Aq		q		@@T  , 1label_declaration@@@ @  @)1label_declaration@@ @  $@@ @  @ @  @ @  @T@Ar		r	
@@U  , (location@@@ @  @(Location!t@@ @  =@@ @  @ @  @ @  @U@As

s

F@@V  , .module_binding@@@ @  @X.module_binding@@ @  S@@ @  @ @  @ @  @V@At
G
It
G
|@@W  , 2module_declaration
@@@ @  @n2module_declaration@@ @  i@@ @  @ @  @ @  @W@Au
}
u
}
@@(X  , 3module_substitution @1@@ @  @3module_substitution@@ @  @@ @  @ @  @ @  @X@Av

v

@@>Y  , +module_expr6@G@@ @  @+module_expr@@ @  @@ @  @ @  @ @  @Y3@Aw

w
*@@TZ  , +module_typeL@]@@ @  @+module_type@@ @  @@ @  @ @  @ @  @ZI@A/x+-0x+Z@@j[  , 7module_type_declarationb@s@@ @  @7module_type_declaration@@ @  @@ @  @ @  @ @  @[_@AEy[]Fy[@@\  , 0open_declarationx@@@ @  @0open_declaration@@ @  @@ @  @ @  @ @  @\u@A[z\z@@]  , 0open_description@@@ @  @0open_description@@ @  @@ @  @ @   @ @  @]@Aq{r{@@^  , #pat@@@ @  @'pattern@@ @  @@ @  @ @  @ @  @^@A||:@@_  , 'payload@@@ @  
@'payload@@ @  @@ @  @ @  
@ @  	@_@A};=};b@@`  , )signature@@@ @  @4)signature@@ @  /@@ @  @ @  @ @  @`@A~ce~c@@a  , .signature_item@@@ @  @J.signature_item@@ @  E@@ @  @ @  @ @  @a@A@@b  , )structure@
@@ @  @`)structure@@ @  [@@ @  @ @  @ @  @b@A @ @@@c  , .structure_item@#@@ @  !@v.structure_item@@ @   q@@ @  @ @  @ @  @c@A A A
&@@0d  , #typ(@9@@ @  &@@@ @  %@@ @  $@ @  #@ @  "@d"@A B
'
)	 B
'
L@@Ce  , )row_field;@L@@ @  +@)row_field@@ @  *@@ @  )@ @  (@ @  '@e8@A C
M
O C
M
x@@Yf  , ,object_fieldQ@b@@ @  0@,object_field@@ @  /@@ @  .@ @  -@ @  ,@fN@A4 D
y
{5 D
y
@@og  , 0type_declarationg@x@@ @  5@0type_declaration@@ @  4@@ @  3@ @  2@ @  1@gd@AJ E

K E

@@h  , .type_extension}@@@ @  :@.type_extension@@ @  9@@ @  8@ @  7@ @  6@hz@A` F

a F
@@i  , .type_exception@@@ @  ?@.type_exception@@ @  >@@ @  =@ @  <@ @  ;@i@Av Gw GP@@j  , )type_kind@@@ @  D@
)type_kind@@ @  C@@ @  B@ @  A@ @  @@j@A HQS HQ|@@k  , -value_binding@@@ @  I@#-value_binding@@ @  H@@ @  G@ @  F@ @  E@k@A I} I}@@l  , 1value_description@@@ @  N@91value_description@@ @  M4@@ @  L@ @  K@ @  J@l@A J J@@m  , /with_constraint@@@ @  S@O/with_constraint@@ @  RJ@@ @  Q@ @  P@ @  O@m@A K K$@@	n@A^^@@
A@@@I@  #@@@I@  "@@I@  !@I@   @I@  I@   @(@@I@  1@@@I@  0@@I@  /@@I@  .@I@  -@I@  ,I@  %@=@@I@  =@@@I@  <@@I@  ;@I@  :@I@  9I@  3@N@@I@  I@@@I@  H@@I@  G@I@  F@I@  EI@  ?@_@@I@  W@@@I@  V@@I@  U@@I@  T@I@  S@I@  RI@  K@t@@I@  c@@@I@  b@@I@  a@I@  `@I@  _I@  Y@@@I@  o@@@I@  n@@I@  m@I@  l@I@  kI@  eݐ@@@I@  {@@@I@  z@@I@  y@I@  x@I@  wI@  qؐ@@@I@  Ӈ@@@I@  ӆ@@I@  Ӆ@I@  ӄ@I@  ӃI@  }Ӑ@@@I@  ӓ@@@I@  Ӓ@@I@  ӑ@I@  Ӑ@I@  ӏI@  Ӊΐ@@@I@  ӟ@@@I@  Ӟ@@I@  ӝ@I@  Ӝ@I@  ӛI@  ӕɐ@@@I@  ӫ@@@I@  Ӫ@@I@  ө@I@  Ө@I@  ӧI@  ӡĐ@@@I@  ӷ@@@I@  Ӷ@@I@  ӵ@I@  Ӵ@I@  ӳI@  ӭ@@@I@  @@@I@  @@I@  @I@  @I@  ӿI@  ӹ@
@@I@  @@@I@  @@I@  @I@  @I@  I@  Š@@@I@  @@@I@  @@I@  @I@  @I@  I@  Ѡ@/@@I@  @@@I@  @@I@  @I@  @I@  I@  ݠ@@@@I@  @@@I@  @@I@  @I@  @I@  I@  @Q@@I@  @@@I@  @@I@  @I@  @I@  I@  @b@@I@  @@@I@  
@@I@  	@I@  @I@  I@  @s@@I@  @@@I@  @@I@  @I@  @I@  I@  
@@@I@  #@@@I@  "@@I@  !@I@   @I@  I@  @@@I@  /@@@I@  .@@I@  -@I@  ,@I@  +I@  %@@@I@  ;@@@I@  :@@I@  9@I@  8@I@  7I@  1@@@I@  G@@@I@  F@@I@  E@I@  D@I@  CI@  =@@@I@  S@@@I@  R@@I@  Q@I@  P@I@  OI@  I{@@@I@  _@|@@I@  ^z@@I@  ]@I@  \@I@  [I@  Uv@@@I@  k@w@@I@  ju@@I@  i@I@  h@I@  gI@  aq@@@I@  w@r@@I@  vp@@I@  u@I@  t@I@  sI@  ml@@@I@  ԃ@m@@I@  Ԃk@@I@  ԁ@I@  Ԁ@I@  I@  yg@@@I@  ԏ@h@@I@  Ԏf@@I@  ԍ@I@  Ԍ@I@  ԋI@  ԅb@.@@I@  ԛ@c@@I@  Ԛa@@I@  ԙ@I@  Ԙ@I@  ԗI@  ԑ]@?@@I@  ԧ@^@@I@  Ԧ\@@I@  ԥ@I@  Ԥ@I@  ԣI@  ԝX@P@@I@  Գ@Y@@I@  ԲW@@I@  Ա@I@  ԰@I@  ԯI@  ԩS@a@@I@  Կ@T@@I@  ԾR@@I@  Խ@I@  Լ@I@  ԻI@  ԵN@r@@I@  @O@@I@  M@@I@  @I@  @I@  I@  I#typ 6  3  O 6  3  R@@(iteratorB 6  3  Y 6  3  a@@@@@K@  y  0  6 6 6 6 6 6 6 6@@@@@@)core_typeC 6  3  b 6  3  k@@@@@K@  ҅  0  6 6 6 6 6 6 6 6@!@@ @  x@@ 6a@@@@ఐ͠9get_native_repr_attribute 6     6    @
@@@@@L@  Ғ .@@L@  ґ@@L@  Ґ@@L@  ҏ@L@  Ҏ@L@  ҍ  0  6 6 6 6 6 6 6 6@)8@@ @  ҄@2@ 6b@@@@ఐE)core_type 6     6    @@@ .@@M@  ҧ @  ҥ@/ptyp_attributes 6     6    @ @@@@M@  ҠM@  ҨM@  Ҧ)@ภ$None 7     7
    @ +@@@ .ѠP@@M@  ҟ@@M@  ҞM@  Ү>@@S@@@@ @  ҝB@Ġ8Native_repr_attr_present 7&     7'    @Рࠠ$kindD 7/    	 70    
@@@n@@ @  Ҵ[@@@@@@@N@  ҵ_@@_@@డ 6%raise 7B     7C    !@ -#@@@ -#@@L@   &@@J@  K@  K@  ҊK@  ҼL@  @L@  ҿ  0  7P 7O 7O 7P 7P 7P 7P 7P@|,&@'@ 7ic@@@@ภ%Error 7b    # 7c    (@ -ఐƠ)core_type 7n    * 7o    3@@@ .@@M@   @  !@(ptyp_loc 7z    4 7{    <@ <@@ /@@M@  M@  M@  /@ภ=Deep_unbox_or_untag_attribute 7  >  W 7  >  t@  <  2 -@ 2ATHYa@A 2@@ 2ఐh$kind 7  >  u 7  >  y@B@@ 3@@M@  M@  M@  L@@
@@ /@@M@  M@  R@@ 7    " 7  >  {@@ -@@M@  M@  Z@@n@@d[@Ġ7Native_repr_attr_absent 7  |   7  |  @@@@@@@N@  ҹ@@@@ภ * 7  |   7  |  @ *@@@x@@A 7   o  u 7    @@{  0  7 7 7 7 7 7 7 7@@@@డ0default_iterator 7	     7	    @@@ @  U@ R R@@o
@@@@L@   @  @#typ 7	     7	    @@@@@@J@  @7@@J@  0@@J@  @J@  @J@  0@@ఐn(iterator 8	     8	    @S@@ @@K@  K@   K@  D@@ఐq)core_type 8	     8	    @?@@b@@K@  K@  K@  X@@M
@@^@@J@  K@  ^@a@@d@@J@  J@  d@@AA@@v@@J@  o@@J@  @J@  J@    0  85 84 84 85 85 85 85 85@@@@@A 8<  3  U#@@@5@@J@  l@@@J@  k@@J@  j@J@  i@J@  hJ@  8@@F@@I@  @@@I@  @@I@  @I@  @I@  I@  Ӡ@W@@I@  @@@I@  @@I@  @I@  @I@  I@  ߠ@h@@I@  @@@I@  @@I@  @I@  @I@  I@  @y@@I@  @@@I@   @@I@  @I@  @I@  I@  @@@I@  
@@@I@  @@I@  @I@  
@I@  	I@  @@@I@  @@@I@  @@I@  @I@  @I@  I@  ې@@@I@  %@@@I@  $@@I@  #@I@  "@I@  !I@  ֐@@@I@  1@@@I@  0@@I@  /@I@  .@I@  -I@  'ѐ@@@I@  =@@@I@  <@@I@  ;@I@  :@I@  9I@  3@డ0default_iterator 8  3  9 8  3  I@@@@@I@  8I@  ,I@  V@ 8  3  7 8	    @@@@ 8    @@డ	0default_iterator 9     9    @0@@	 @@J@  H @  B  0  9
 9	 9	 9
 9
 9
 9
 9
@			@		@ 9#`@@@#typ 9     9    @ذ@@@	@@H@  G@	c@@H@  F	\@@H@  E@H@  D@H@  C@@ఐ	*-this_iterator 91     92    @"@@	,@@I@  TI@  VI@  U,@@ఐ	m)core_type 9E    		b@	O	c@@	H@  WH@  ;@@D	g@@	<@Q	h@@		8@ 9M    	j@@	  0  9I 9H 9H 9I 9I 9I 9I 9I@	Y@@@@A	t	lA@@		@ @  Z  0  9M 9L 9L 9M 9M 9M 9M 9M@	s@@@@	q@	q	p@	@ࠠ0make_native_reprE 9_
     9`
    (@@@@@@ @  H@  \@ 0@@ @  H@  c@@@ @  H@  j+global_repr 1E@@ @  ՜@@ @  ՛H@  q@@ @  շH@  r@ @  sH@  k@ @  lH@  d@ @  eH@  ]@ @  ^H@  [  0  9 9 9 9 9 9 9 9@			@	@ 9^@@@@#envG 9
    ) 9
    ,@@@<  0  9 9 9 9 9 9 9 9@H 9
     9    @@@@@@)core_typeH 9
    - 9
    6@@@F  0  9 9 9 9 9 9 9 9@ R@@ 9e@@@@@"tyI 9
    7 9
    9@@@N  0  9 9 9 9 9 9 9 9@Z@@ 9f@@@@KKJP 9
    ; 9
    F@@@S  0  9 9 9 9 9 9 9 9@a@@ 9g@@@@ఐ
0	(error_if_has_deep_native_repr_attributes 9  I  K 9  I  s@T@@@
,@@I@  |
%@@I@  {@I@  z  0  9 9 9 9 9 9 9 9@&p@@ :h@@@@ఐP)core_type 9  I  t 9  I  }@8@@H@  գH@  ՃH@  ՄH@  f@@$
@@ )U@@H@  ՇI@  Ղ@ఐ 9get_native_repr_attribute :     :    @`@@@@@I@  Տ 1b@@I@  Վ@@I@  Ս
@@I@  Ռ@I@  Ջ@I@  Պ=@@ఐ)core_type :9     ::    @s@@7L@/ptyp_attributes :@     :A    @ 
@@E@@J@  ՝J@  դJ@  բZ@>ఐ+global_repr :T     :U    @d@@H@  եH@  tj@@B@@>@@ @  ՚n@Ġ7Native_repr_attr_absent :h     :i    @k@@@@N@@K@  ի  0  :i :h :h :i :i :i :i :i@~@@@@@@ภ2Same_as_ocaml_repr :u     :v    @  < 2Same_as_ocaml_reprP@@@@CAD@AMW NW@@@E@
	@@@Ġ8Native_repr_attr_present :     :    @3ࠠ$kindK :      :    $@@@@@ @  հ@@@@@|@@K@  ձ@@@@ఐ!3native_repr_of_type :  (  8 :  (  K@
ٰ@@@@@J@  @@@J@  @@@J@   2y@@J@  @@J@  @J@  տ@J@  վ@J@  ս  0  : : : : : : : :@4.@/@ :i@@@@ఐ3#env :  (  L :  (  O@@@mH@  H@  _@@ఐL$kind :  (  P :  (  T@@@@@K@  K@  K@  (@@ఐ3"ty :  (  U :  (  W@@@H@  H@  m8@@R@@ 2L@@ @  @@ @  @@Ġ$None ;
  ]  c ;  ]  g@ /@@@@ 2͠`@@L@  @@L@    0  ; ; ; ; ; ; ; ;@T@@@	@@@డ 9%raise ;  k  q ;  k  v@ 0@@@ 0@@J@  H@  H@  չH@  J@  @J@  @@ภ%Error ;7  k  x ;8  k  }@ 0ఐ)core_type ;C  k   ;D  k  @}@@?2@(ptyp_loc ;J  k   ;K  k  @ 
@@ 3X@@K@  K@  K@  @@ภ:Cannot_unbox_or_untag_type ;[  k   ;\  k  @  <  6 0@ 6ASHYa@A 6@@ 6ʠఐՠ$kind ;g  k   ;h  k  @@@ 6@@K@  K@  K@  ]@@
@@ 3r@@K@  K@  
c@@ ;x  k  w ;y  k  @@ 1X@@K@  K@   k@@b@@Xl@Ġ$Some ;     ;    @ 0Ϡࠠ$reprL ;     ;    @@@@@ @  @@@@@ 3Z@@L@  @@L@  @@@@ఐ$repr ;     ;    @@@ ;j@@  0  ; ; ; ; ; ; ; ;@ @@@@A ;  (  ,
@@@@A ;    @@%E@
@@&F@@A ;
    :A@7  0  ; ; ; ; ; ; ; ;@@@@@AA@B  0  ; ; ; ; ; ; ; ;@@@@@AA@M  0  ; ; ; ; ; ; ; ;@@@@@AA@@VQ@ @  *  0  ; ; ; ; ; ; ; ;@@@@@@@/Aࠠ<parse_native_repr_attributesM ;     ;    @@@@C@@ @  H@  ,@ 2@@ @  H@  -@ /e@@ @  ׀H@  .+global_repr 3(@@ @  ׽@@ @  ׼H@  / ;yL@@ @  ׌H@  ׇ@@ @  ׋H@  iS@@ @  ׻H@  j@ @  mH@  0@ @  8@ @  7@ @  6@H@  5  0  < <  <  < < < < <@v@@ <d@@@@#envN <     <    @@@G  0  < < < < < < < <@R@N@I@D?=4@ @  1@ @  2@ @  3@ @  4I@  +@W@ <5k@@@@@)core_typeO </     <0    @@@]H@  ׿H@  >  0  <1 <0 <0 <1 <1 <1 <1 <1@ ,i@#@ <Jl@@@@@"tyP <D    	 <E    @@@kH@  ׾H@  E  0  <F <E <E <F <F <F <F <F@&@@ <_m@@@@llQq <X    
 <Y    @@@tH@  L  0  <W <V <V <W <W <W <W <W@"@@ <pn@@@@ఐC)core_type <n    # <o    ,@#@@IH@  H@  .H@  օH@  ZH@  XH@  A  0  <w <v <v <w <w <w <w <w@!-$@%@ <o@@@)ptyp_desc <    - <    6@ Q@@ M@@ @  Y@డ (n$repr%Ctype <    9 <    C@װ@@@@@J@  _@@J@  ^@J@  ](@@ఐn"ty <    D <    F@R@@pH@  H@  fH@  gH@  H<@@ <    8 <    G@@ 0B@@I@  j @  eD@$desc <    H <    L@  <@@  8@@ @  iN@ఐ۠9get_native_repr_attribute <  N  R <  N  k@@@@@@I@  q 4@@I@  p@@I@  o@@I@  n@I@  m@I@  ll@@ఐɠ)core_type <  N  l <  N  u@@@{@/ptyp_attributes <  N  v <  N  @ 
@@ @@J@  J@  ֆJ@  ք@ภ$None =  N   =  N  @ 1@@@ 4ӠR@@J@  ~@@J@  }J@  ֌@@G@@@@ @  |@@@@\	@ @  ֎@Ġ*Ptyp_arrow =1     =2    @  < *Ptyp_arrow @ 4g)arg_label@@ @ 4N@@ @
 4R@@ @@CAAKL@A 4f _ 4g _P@@@ 5
 U@ =K     =L    @@@@K@  ֠  0  =K =J =J =K =K =K =K =K@@@@@	@ 4e@@K@  ֡@@@ 4j@@K@  ֢@@@+@@ "@@K@  ֣@Ġ&Tarrow =f     =g    @  < &Tarrow  @ 0)arg_label@@ @
 0@@ @
 0@@ @
 1*commutable@@ @
@DAALM@A 0 E 0 E@@@ 1M@ =     =    @@@@K@  ֪;@@@ 1@@K@  ֫@@@
@ 1@@K@  ֬E@@@@@K@  ֭J@@@5@@ !@@K@  ֮N@Ġ8Native_repr_attr_present =     =    @Oࠠ$kindR =     =    @@@@@ @  ֲd@@@@@@@K@  ֳh@@
@@`"	@K@  ִn@@n@@డ <%raise =     =    @ 3@@@ 3@@I@  H@  ׅH@  QH@  I@  @I@    0  = = = = = = = =@\/)@*@ =p@@@@ภ%Error =     =    @ 3ఐŠ)core_type =     =    @@@|@(ptyp_loc =     =    @ 
@@ 6@@J@  (J@  /J@  -*@ภ:Cannot_unbox_or_untag_type >     >	    @ఐd$kind >     >    "@;@@ 9@@J@  5J@  7J@  6E@@
@@ 6@@J@  )J@  4K@@ >#     >$    $@@ 4@@J@  !J@  'S@@d@@ZT@Ġ*Ptyp_arrow >8  %  ) >9  %  3@@ >=  %  5 >>  %  6@@	@@K@  @ࠠ#ct1S >I  %  8 >J  %  ;@@@ 5^@@ @  @ࠠ#ct2T >V  %  = >W  %  @@@@ 5k@@ @  @@@% >]  %  A@@  $@@K@  @Ġ&Tarrow >h  %  C >i  %  I@@ >m  %  K >n  %  L@@@@K@  @ࠠ"t1U >y  %  N >z  %  P@@@ 2@@ @  @ࠠ"t2V >  %  R >  %  T@@@ 2@@ @  @@ >  %  V >  %  W@@@@K@  @@@- >  %  X@@ "@@K@  @@ >  %  Z >  %  [@@@@K@  %@@j@@G	@K@  +@@+@@@ࠠ(repr_argW >   _  g >   _  o@@@@@ @  YJ@  ;  0  > > > > > > > >@Ays@t@ >qnh@i@ >rMG@H@ >sB<@=@ >t@@@ఐp0make_native_repr >   _  r >   _  @ɰ@@@E@@J@  F@ 5@@J@  E@:@@J@  Db 6"@@J@  C@@J@  B:@@J@  A@J@  @@J@  ?@J@  >@J@  =4@@ఐ砐#env >   _   >   _  @@@0H@  H@  ^H@  _H@  :H@@ఐ #ct1 ?   _   ?   _  @O@@ 6$@@K@  ]K@  aK@  `\@@ఐ"t1 ?   _   ?    _  @_@@@@K@  \K@  cK@  bp@ఐޠ+global_repr ?3   _   ?4   _  @@@UH@  H@  ZH@  dH@  O@@o
@@@@ ??   _  c@@@ࠠ)repr_argsX ?M!     ?N!    @@@[  0  ?K ?J ?J ?K ?K ?K ?K ?K@@@ ?du@@@ࠠ(repr_resY ?[!     ?\!    @@@]@@@@m@ఐ<parse_native_repr_attributes ?h"     ?i"    @Q@@@o@@@J@  r@J@  q@J@  p@J@  o#@@ఐm#env ?}"     ?~"    @G@@0@@ఐ4#ct2 ?"     ?"    @̰@@=@@ఐ"t2 ?"     ?"    @հ@@J@ఐO+global_repr ?"     ?"    @(@@mW@@@@@X@@ ?!    @@ภ ?$     ?$    @ ఐ
(repr_arg ?$     ?$    @k@@  0  ? ? ? ? ? ? ? ?@px@s@ ?vl@g@ ?w@@@ఐ)repr_args ?$     ?$    @@@@@@@ @@I@  ׊@ఐ(repr_res ?$     ?$    "@@@"@@ ?$     ?$    #@@@I@  ׎)@?@@@@@0@Ġ*Ptyp_arrow ?%  $  ( ?%  $  2@Ǡ@ ?%  $  3 ?%  $  4@@@@L@  @@@ 7@@L@  @@
@ 7@@L@  @@@@@ !@@L@  @@ @%  $  6 @%  $  7@@ #@@L@  @@ @%  $  9 @%  $  :@@ @@L@  @@)@@	@L@  @@@@ @-%  $  = @.%  $  >@@ !@@L@  @Ġ&Tarrow @9%  $  @ @:%  $  F@Ӡ@ @>%  $  G @?%  $  H@@@@L@  @@@ 3@@L@  @@
@ 3@@L@   @@@@@L@  @@@@@ #@@L@  @@ @Y%  $  J @Z%  $  K@@>@@L@  @@2@@3	@L@  @@@@m@@ ".@@K@   #@@K@  S@@K@  @K@  @@  ภ 5Ӱ @z%  $  V @{%  $  [@ 5@@@ 87@@I@  ה@ @%  $  O@@H@  ׏@@ @&  \  ` @&  \  a@@ "U@@K@   $@@K@  z@@K@  @K@  
@@@@ภ ° @&  \  f @&  \  h@ @@@ H@  כ@@I@  ם/@ఐV0make_native_repr @&  \  j @&  \  z@@@@+@@I@  ר@ 7@@I@  ק@ @@I@  צH 8@@I@  ץ@@I@  פ @@I@  ף@I@  ע@I@  ס@I@  נ@I@  ןW@@ఐ͠#env @&  \  { @&  \  ~@@@d@@ఐ)core_type @&  \   @&  \  @@@tq@@ఐ"ty @&  \   @&  \  @@@E~@{ఐ+global_repr A&  \   A&  \  @@@@@S@@@@ A	&  \  e A
&  \  @@8H@  י@@A A    @@:  0  A
 A	 A	 A
 A
 A
 A
 A
@@@@@A A    A@1H@  N  0  A A A A A A A A@@@@@AA@<H@  G  0  A A A A A A A A@@@@@AA@GH@  @  0  A A A A A A A A@@@@@A
A@@NK@ @    0  A A A A A A A A@	@@@@ A"    @@@@ࠠ/check_unboxableZ A/)     A0)    @@@@ 5@@ @  -H@  @@@ @  H@  @ .m)type_expr@@ @  jH@   4@@ @  ܬH@  @ @  H@  @ @  H@  @ @  H@  =@@#env\ A^)     A_)    @@@+  0  A\ A[ A[ A\ A\ A\ A\ A\@K7 Ae)     Af<    @@@@@@#loc] Aq)     Ar)    @@@5  0  Ao An An Ao Ao Ao Ao Ao@ A@@ Ay@@@@@"ty^ A)     A)    @@@=  0  A A A A A A A A@I@@ Az@@@@@ࠠ*check_type_ A*     A*    @@@@ >j#Set!t@@ @  II@  @@@ @  I@  @@ @  I@  @ @  I@  @ @  I@    0  A A A A A A A A@.:m@1@ A{@@@@#acca A*     A*    @@@)  0  A A A A A A A A@5 A*     A3    @@@@@@"tyb A*     A*    @@@.  0  A A A A A A A A@ ?@@ A}@@@@@ࠠ"tye A+     A+    @@@ @@ @  J@    0  A A A A A A A A@#G@@ B ~@@@డ -$repr%Ctype A+     A+    @ :@@@ :@@J@   8@@J@  @J@  @@డ -/expand_head_opt%Ctype B+     B+    @@@@@@K@  @|@@K@  @@K@  @K@  @K@  :@@ఐ֠#env B0+     B1+    @@@H@  1H@  H@  H@  N@@ఐu"ty BD+     BE+    @X@@I@  I@  ^@@ BK+     BL+    @@ @@K@  K@   L@  h@@Y	@@li@@ BV+    @@ఐ"ty Bd,    , Be,    .@@@ Bx@@ 5@@J@   @    0  Bi Bh Bh Bi Bi Bi Bi Bi@
@@@$desc Bt,    / Bu,    3@ %@@ %@@ @  @Ġ'Tconstr B-  9  A B-  9  H@ %Ǡࠠ!pf B-  9  J B-  9  K@@@ %@@ @  %@@ B-  9  M B-  9  N@@ %ʠ 6 @@L@  @@L@  1@@ B-  9  P B-  9  Q@@ %͠ %@@L@  @@L@  =@@@( B-  9  R@@ &@@L@  B@@B@@@ࠠ&tydeclg B.  V  b B.  V  h@@@ +4@@ @  ,K@    0  B B B B B B B B@U;5@6@ B@@@డ @<)find_type#Env B.  V  k B.  V  x@ +2@@@ +2@@K@  "@ 7]@@K@  ! +T@@K@   @K@  @K@   @@ఐ_!p B.  V  y B.  V  z@*@@ +N@@L@  .L@  0L@  /4@@ఐ#env C .  V  { C.  V  ~@@@A@@2@@EB@@ C.  V  ^@@ఐW&tydecl C/     C/    @W@X@ C%@@ 6@@J@  7 @  5  0  C C C C C C C C@Zg
@@@4type_unboxed_default C!/     C"/    @ 6@@ 2@@J@  8J@  6@డ ?#Set#add$Path C80     C90    @@ +#Set#elt@@ @  @	!t@@ @  
@@ @  	@ @  @ @  @'set.mli S9= S9S@@+Stdlib__SetH@@@@@J@  >@@@J@  =@@J@  <@J@  ;@J@  :G@@ఐߠ!p Cl0     Cm0    @@@4@@K@  -K@  ,Y@@ఐ #acc C~0     C0    @@@I@  9I@  4I@  5I@  (I@  2I@  q@@U@@K@  't@ఐ۠#acc C1     C1    @@@@ C/    @@@@@@@J@  ;J@  6@@ C2     C2    @@ '@@L@  ?@@?@@ఐ#acc C2     C2    @ް@@J@  :K@@A C,    &@@!@@I@  I@  A  0  C C C C C C C C@R@@@Ġ)Not_found C3     C3    @ݽ@@@@ C@@L@  E@@ఐ#acc C3    @@@>@@J@  KJ@  J@@ C,    "@@$@@гG$PathIH C*     C*    @@Q@@ @  @@ C*    +A@@D@@A!,A@N  0  C C C C C C C C@@@@@A6.A@@\R@ @  Q  0  C C C C C C C C@5@@@@3@@ࠠ3all_unboxable_types D5     D5    %@@@l@@ @  }I@  S  0  D D D D D D D D@Z~x@y@ D|@@@డ 3=.fold_type_expr%Btype D5    ( D5    <@@@!a @%@ 1K)type_expr@@ @%@ @%@ @%@
@@@ @%@ @%@ @%@ @%@ 3F n 3G n@@ 3Eb@@@@7I@  X@@@I@  \@I@  [@I@  Z@	@@@I@  Y@I@  W@I@  V@I@  U@@@ఐ *check_type DU5    = DV5    G@J@@@@@J@  x@@@J@  w@@J@  v@J@  u@J@  tZ@@డ A6#Set%empty$Path Du5    H Dv5    V@2@@ @  @- Jcg. Jcs@@,E
@@zJ@  ~w@@ఐ"ty D5    W D5    Y@ڰ@@IH@  H@  @@x@@@@ D5    @@డ Ae#Set$fold$Path D6  ]  _ D6  ]  l@@@n@@ @  L@!a @  H@ @  K@ @  J@p@@ @  I@@ @  G@ @  F@ @  E@m n @@lT@@@@@@H@  ܊@zH@  ܆@H@  ܉@H@  ܈@@@H@  ܇@		@H@  ܅@H@  ܄@H@  ܃  0  D D D D D D D D@@@ D@@@@@!p D7  m  v D7  m  w@@@@@J@  ܤ@@@ 7Ġ 7 D7  m  x D7  m  z@ 7@@@@  0  D D D D D D D D@%@@ @  ܣ@@ E
@@@@డ =-prerr_warning(Location E	8  ~   E
8  ~  @b@@@b@@J@  ܵ@]@@J@  ܴX@@J@  ܳ@J@  ܲ@J@  ܱ#@@ఐ#loc E#8  ~   E$8  ~  @@@H@  H@  3@@ภ(Warnings;Unboxable_type_in_prim_decl E49     E59    @  < ;Unboxable_type_in_prim_decl:@@@ @@AiVo E@A7 d8 d@@@? Hడ B$name$Path EO9     EP9    @O@@OM@J@@K@  I@@K@  @K@  @@K@  @ .@@K@  H@@K@  @K@  @K@  r@eภ 2m EE :;@ EE@g@d@@L@  c@@L@  @L@  @@L@  @@ఐ!p E9     E9    @@@J@@L@  @@ E9     E9    @@X@@K@  K@  L@  @@ E9     E9    @@@@K@  K@  @@@@NH@  ܿ@@A
A@@@I@  I@  @@A E7  m  q E:    @@@n@@I@  ܛ@@I@  ܚ@I@  ܙI@    0  E E E E E E E E@@@@@ఐ3all_unboxable_types E;     E;    @@@|@@I@  ܘI@  I@  @@ภ 8 E<     h@ 8@i@@I@  @@.l@@"@?m@@@
n@@"@@ASoA@  0  E E E E E E E E@P@@@@AfqA@  0  E E E E E E E E@c@@@@A{sA@@@ @    0  E E E E E E E E@z@@@@x@xw@	Ơ@ࠠ1transl_value_decl E?  (  , E?  (  =@@@@ :r@@ @  ?H@  @ 9!t@@ @  H@  @ =1value_description@@ @  H@   1value_description@@ @  H@  ٠ :@@ @  H@  @ @  H@  @ @  H@  @ @  H@  @ @  	H@    0  F F F F F F F F@
@@ F1x@@@@#env F+?  (  > F,?  (  A@@@?  0  F) F( F( F) F) F) F) F)@K F2?  (  ( F3v  Ē  Ġ@@@@@@#loc F>?  (  B F??  (  E@@@I  0  F< F; F; F< F< F< F< F<@ U@@ FU@@@@@'valdecl FO?  (  F FP?  (  M@@@N  0  FM FL FL FM FM FM FM FM@]@@ Ff@@@@@ࠠ#cty F`@  P  V Fa@  P  Y@@@ )core_type@@ @  ,I@    0  Ff Fe Fe Ff Ff Ff Ff Ff@&j@@ F@@@డ D2transl_type_scheme(Typetexp F{@  P  \ F|@  P  w@@ V!t@@ @q@ )core_type@@ @p)@@ @o@ @n@ @m@ a b@@ G@@@@@I@  "@@@I@  !;@@I@   @I@  @I@  8@@ఐ#env F@  P  x F@  P  {@l@@H@  rH@  ߯H@  ߰H@  DH@  EH@  cH@  dH@  .H@  /H@  
X@@ఐ'valdecl F@  P  | F@  P  @d@@H@  H@  H@  H@  fH@  H@  ߊH@  	H@  nH@  oH@  HH@  H@  H@  ݋H@  AH@  2H@  0H@  @)pval_type F@  P   F@  P  @  , )pval_type@@ @ >@@ @@A  , )pval_name	 >5#loc >2@@ @@@ @@@
@A >011 >111@@ >   , )pval_prim >/ >A@@ @@@ @@B@A >?11 >@12@@ >   , /pval_attributes( >\@@ @@C%@A >H22
 >I22&@@ >   , (pval_loc1 >!t@@ @@D1@A >T2B2G >U2B2\@@ > @A >X11 >Y11@@ > lC@@@@J@  -J@  3J@  1@@K@@@@ GD@  P  RM@@@ࠠ"ty GOA     GPA    @@@ f@@ @  9I@  6  0  GR GQ GQ GR GR GR GR GR@@@ Gk@@@ఐ#cty GdA     GeA    @
@@ G@@I@  : @  8@)ctyp_type GpA     GqA    @ M@@@@ GtA    @@@ࠠ!v GB     GB    @@@ ;"1value_description@@ @  kI@  <  0  G G G G G G G G@3@:@;@ G@@@ఐM'valdecl GC     GC    @-@@  0  G G G G G G G G@@@@)pval_prim GC     GC    @@@@@ @  @@@ @  ?@Ġ Ӱ GD     GD    @ @@@@@@L@  I@@L@  H4@@4@డ E4/is_in_signature#Env GD     GD    @@ <P@@ @ <{@@ @@ @@ :_;);) :`;);G@@ <V @@@ <^@@J@  \@@J@  [@J@  ZZ@@ఐƠ#env GD     GD    @@@<g@@'@@ 7@@J@  fK@  bm@Р  , (val_typex@@ @
 ;@@ @
@@	  , (val_kind	 ;*value_kind@@ @
@A@A ;'_'c ;'_'x@@ ; I  , 'val_loc@@ @
@B@A ;'y'} ;'y'@@ ; J  , .val_attributes ;*attributes@@ @
@C@A ;'' ;''@@ ; K  , 'val_uid) ;!t@@ @
@D(@A ;'' ;''@@ ; L@A ;''# ;''7@@ ; H%Types(val_type H9E     H:E    
@ఐ"ty HBE     HCE    @@@ ;@@K@  mK@  oK@  n@J(val_kind HRE     HSE    @ภ'Val_reg HZE     H[E    &@  < 'Val_regY@@ @
@@@@ADE@A ;'' ;''@@@ ; M@
@@d@@K@  tK@  x@_;'val_loc HrE    ( HsE    5@ఐA#loc H{E    8 H|E    ;@)@@H@  H@  ߮H@  ߳H@  }H@  ݀H@   @sX.val_attributes HF  =  E HF  =  S@ఐO'valdecl HF  =  V HF  =  ]@/@@@/pval_attributes HF  =  ^ HF  =  m@
@@@@K@  ݅K@  ݌K@  ݊"@z'val_uid HG  o  w HG  o  ~@డ G+#Uid"mk HG  o   HG  o  @ @@  @@K@  ݕ @@K@  ݔ@K@  ݓA@ డ FC-get_unit_name#Env HG  o   HG  o  @ @@@ @@L@  ݠ @@L@  ݟ@L@  ݞ[@@ภ ; HG  o   HG  o  @ ;@@@ @@M@  ݧM@  ݫk@@ HG  o   HG  o  @@ @@L@  ݜL@  ݭM@  ݦu@@@	@@@@K@  ݑK@  ݯL@  ݛ}@@@ IE     IH    @@@Ġ 2 II     II    @ 1@@@@ @@L@  Q@@L@  P@@@@డ G%raise I%J     I&J    @ ?@@@ ?@@J@  ݵI@  ݰJ@  ݴ@J@  ݳ@@ภ%Error I:J     I;J    @ >ఐ'valdecl IFJ     IGJ    @۰@@o@(pval_loc IMJ     INJ    @%
@@ A[@@K@  K@  K@  @ภ0Val_in_structure I^J     I_J    @  <  D >@@@DHYa@A D@@ D@@@ Ac@@K@  K@  @@ IiJ     IjJ    @@ ?I@@K@  ݺK@  @@L@@B@@ IwK     IxK    @@ed@@L@  U@@L@  T@
@@@@ࠠ+global_repr IL     IL    @@@ AO#@@ @  K@  @@ @  K@  @ఐ#9get_native_repr_attribute IN  '  1 IN  '  J@@@@#@@L@  # Am#@@L@  @@L@  #@@L@  @L@  @L@    0  I I I I I I I I@.@@@@ఐy'valdecl IN  '  K IN  '  R@Y@@@/pval_attributes IN  '  S IN  '  b@
@@#@@M@  M@  M@  @#ɐภ$None IN  '  p IN  '  t@ >@@@ A$"@@M@  @@M@  M@  3@@H@@#@@ @  7@Ġ8Native_repr_attr_present IP     IP    @!ࠠ$repr JP     JP    @@@$@@@ @  P@@@@@#@@N@  T@@T@@ภ$Some JP     JP    @ ?Vఐ$repr JP     JP    @@@ J/@@  0  J J J J J J J J@%@@@@@@@Ġ7Native_repr_attr_absent J-Q     J.Q    @"0@@@@$@@N@  |@@|@@ภ$None J9Q     J:Q    @ ?@@@K@  @@A J?M    !@@@@ JAL    @@@ࠠ0native_repr_args JOS     JPS    @@@ I֠@@ @  >@@ @  =K@    0  JV JU JU JV JV JV JV JV@@@ Jo@@@ࠠ/native_repr_res JfS     JgS    @@@@@ @  ?K@  @@ @@ 
@ @  @ఐ<parse_native_repr_attributes J|T      J}T    <@e@@@@@K@  &@ A@@K@  %@ >@@K@  $ BP$@@K@  #@@K@  " J@@K@   @@K@  @@K@  !@K@  @K@  @K@  @K@  @K@  J@@ఐ#env JT    = JT    @@n@@W@@ఐs'valdecl JT    A JT    H@S@@f@)pval_type JT    I JT    R@ΰ
@@ A@@L@  CL@  IL@  Gt@@ఐ"ty JT    S JT    U@P@@ >e@@L@  BL@  KL@  J@ ఐc+global_repr JT    W JT    b@@@ B%3@@L@  A@@L@  @L@  NL@  L@@@@K@  <@@ JS    @@@ࠠ$prim K
V  l  v KV  l  z@@@ _+description@@ @  jK@  R  0  K K K K K K K K@@@ K)@@ K+@@@డ I1parse_declaration)Primitive K'W  }   K(W  }  @@)Parsetree1value_description@@ @	0native_repr_args$listI @@ @	@@ @	/native_repr_res @@ @	:@@ @	@ @	@ @	@ @	@t x@@ R*)@@@'@@K@  ["  @@K@  Z@@K@  Y @@K@  XU@@K@  W@K@  V@K@  U@K@  TS@@ఐ&'valdecl KqW  }   KrW  }  @@@`@@ఐ/0native_repr_args K~X     KX    @i@@M @@L@  m@@L@  lL@  rL@  px@Jఐ0/native_repr_res KY     KY    @@@ @@L@  kL@  uL@  t@@z
@@@@ KV  l  r@@డ Ju + +
 K[     K[    @ +@@@ +@@K@  ~@ +@@K@  } +@@K@  |@K@  {@K@  z  0  K K K K K K K K@@@ K@@@@డ J * * K[     K[    @ *@@@#intA@@L@  ޚL@  ޏ@
 *@@L@  ގ@L@  ލ@L@  ތ!@@ఐ⠐$prim K[     K[    @-@@@@M@  ޛ @  ޙ5@*prim_arity K[     K[    @  , *prim_arity@@ @	*@@ @	@A  , )prim_name	&stringO@@ @	@@	@@]y}]y@@!ZJ  , *prim_alloc$boolE@@ @	@B@@__
@@!fL  , 0prim_native_name!@@ @	@C@@`9=`9V@@!pM  , 5prim_native_repr_args+!{@@ @	@@ @	@D-@@ a a@@!~N  , 4prim_native_repr_res9!@@ @	@E6@@ b b@@!O@@ ^ ^@@!KUH@@l@@@ LH[     LI[    @@wM@  ޜ@@a@@ +@@L@  ފL@  ޞM@  ޗ@@డ K% L_\  	  ' L`\  	  )@@@@@@L@  ޤ@@@L@  ޣ@@L@  ޢ@L@  ޡ@L@  ޠ@@డ K@ + + Lz\  	  " L{\  	  #@ +@@@|@@M@  M@  ޵@ +@@M@  ޴@M@  ޳@M@  ޲@@ఐ$prim L\  	   L\  	  @ְ@@@@N@   @  ޿@)prim_name L\  	   L\  	  !@@@#@@  L\  	  %@@ L\  	  $ L\  	  &@@1N@  @@@@@@M@  ްM@  N@  ޽@@డ K"<> L\  	  = L\  	  ?@ =3@@@$charB@@M@  M@  @
 =7@@M@  @M@  @M@  @@డ K$#get&String L\  	  * L\  	  <A@&stringO@@ @=@#intA@@ @=-@@ @=@ @=@ @=0%string_safe_getBA @@@@*string.mli yRR yR@@.Stdlib__StringG#"A@@ @@N@  @@@N@  G@@N@  @N@  @N@  X@@ఐ$prim< M#\  	  .@c>@@@@O@   @  k@)prim_name M.\  	  / M/\  	  8@-J@@I@@O@  O@  O@  y@@@ M?\  	  : M@\  	  ;@@Q@@O@  O@  O@  @@ba@@|@@e MP\  	  @ MQ\  	  C@@N@  @@n@@@@M@  ޯM@  N@  @@ M]\  	   M^\  	  D@@ ,@@L@  މL@  M@  ޮ@@{	@@ =9@@K@  L@  ވ@డ L:%raise Mu]  J  R Mv]  J  W@ CV@@@ CV@@K@   <@@J@  K@  K@  @K@  @@ภ%Error M]  J  X M]  J  ]@ C?ఐP'valdecl M]  J  ^ M]  J  e@0@@@)pval_type M]  J  f M]  J  o@
@@ D@@L@   @  @(ptyp_loc M]  J  p M]  J  x@ /p@@ E@@L@  L@  L@  
@ภ3Null_arity_external M]  J  z M]  J  @  <  JG CG@@@BHYa@A JF@@ JC@@@ E@@L@  L@  
@@T M]  J  @@ C@@L@  L@  @@\@@T@@ M[    	@@V@డ L -8 -: M_     M_    @ -7@@@ -7@@K@  @ -6@@K@   -5@@K@  @K@  @K@  0@@డ L     M^     M^    @  @@@ %? -[@@L@  'L@  5L@  2L@  *@@L@  +
@L@  )M@@డ A+native_code'Clflags N^    @ ?#ref <@@ @i@@ @i@ :  ; @@ 9 x/@@ %n/@@M@  0M@  3M@  1s@@9@@/t@@డ M - - N>`     N?`    @ -@@@ -@@L@  ;@ -@@L@  : -@@L@  9@L@  8@L@  7@@డ M䠐 NY_     NZ_    @@@@@@M@  WM@  L@@@M@  K@M@  J@M@  I@@ఐj$prim Nt_     Nu_    @@@j@@N@  X @  V@*prim_arity N_     N_    @@@#@@E N_     N_    @@.N@  Y@@@@ -@@M@  GM@  [N@  T@@డ Mg - -° N`     N`    @ -@@@@@M@  kM@  `@ -@@M@  _@M@  ^@M@  ]@@ఐ$prim N`     N`    @@@@@N@  l @  j@0prim_native_name N`     N`    @@@#@@  N`    @@ N`     N`    @@1N@  m@@@@ .+@@M@  FM@  oN@  h"@@n@@ .3@@L@  &L@  qM@  E*@@@@ >@@K@  sL@  %0@డ M%raise Na     Na     @ Dٰ@@@ D@@K@  w >N@@J@  ߕK@  ߓK@  v@K@  uH@@ภ%Error Oa     Oa    @ D ఐӠ'valdecl Oa     Oa    @@@;b@)pval_type O%a     O&a    @.
@@ F<@@L@  ߌ @  ߉n@(ptyp_loc O1a     O2a    !@ 0@@ G?@@L@  ߃L@  ߍL@  ߋ|@ภ7Missing_native_external OBa    # OCa    :@  <  K D@@@CHYa@A K@@ K@@@ GG@@L@  ߄L@  ߑ@@T OMa    <@@ E,@@L@  |L@  ߂@@\@@T@@ OU^    	@@V@ఐ2/check_unboxable Oab  >  D Obb  >  S@	D@@@ C@@K@  ߞ@@@K@  ߝ@&@@K@  ߜ B-@@K@  ߛ@K@  ߚ@K@  ߙ@K@  ߘ@@ఐ	Y#env Ob  >  T Ob  >  W@	?@@@@ఐ	S#loc Ob  >  X Ob  >  [@	;@@@@ఐK"ty Ob  >  \ Ob  >  ^@@@W@@L@  ߭L@  ߵL@  ߴ@@D
@@ >@@J@  ߸K@  ߬@Р%Types(val_type Oc  `  h Oc  `  p@ఐo"ty Oc  `  s Oc  `  u@5@@ CJ@@K@  ߾K@  K@  ߿	@ơ(val_kind Oc  `  w Oc  `  @ภ(Val_prim Oc  `   Oc  `  @  < (Val_prim|@)Primitive+description@@ @
@A@ADE@A Cc("($ Cd("(G@@@ C Nఐ栐$prim Oc  `   Oc  `  @1@@@@K@  K@  K@  ;@@%
@@@@K@  K@  A@󡠡S'val_loc Pc  `   Pc  `  @ఐ	ՠ#loc Pc  `  ¡ Pc  `  ¤@	@@S@e.val_attributes Pd  ¦  ® Pd  ¦  ¼@ఐ	ؠ'valdecl P#d  ¦  ¿ P$d  ¦  @	@@	>g@/pval_attributes P*d  ¦   P+d  ¦  @	
@@@@K@  K@  K@  u@'val_uid P:e     P;e    @డ N#Uid"mk PHe     PIe    @ C@@ C A@@K@   >@@K@  @K@  @ Kడ M-get_unit_name#Env Pbe      Pce    @ /@@@ /@@L@   ,@@L@  @L@  @@ภ C3 Pue     Pve    @ C2@@@ B@@M@  M@   @@ P~e     Pe    @@ x@@L@  L@  M@  @@@	@@g@@K@  K@  L@  @@@ Pc  `  f Pf    @@	I@  ߼@4@@@A@@@@@@@@@@@>@Y	@@	@@A PC    @@		@@ PB    
@@@ࠠ"id Ph  $  + Ph  $  -@@@ EM!t@@ @  =I@    0  P P P P P P P P@	.	=	7@	8@ P@@@ࠠ&newenv Ph  $  / Ph  $  5@@@ EG@@ @  >I@  @@ Ph  $  * Ph  $  6@@!@ @  @డ NF+enter_value#Env Pi  9  = Pi  9  L@%checkb@ @@ @(Warnings!t@@ @@ @@@ @@ @@ @@ E1value_description@@ @@ E@@ @Z@@ @ E@@ @@ @@ @@ @@ @@ @@ CE.[.[ CG..@@ E :9@@7b@5@@I@  %4@@I@  $@I@  #@@I@  "@/@@I@  !@.@@I@   @ E@@I@  @@I@   E@@I@  @I@  @I@  @I@  @I@  @I@    0  Q8 Q7 Q7 Q8 Q8 Q8 Q8 Q8@@@@_ภ E Q F@!s QOj  i  { QPj  i  |@@@j@@K@  N@@ภ(Warnings8Unused_value_declaration Q]j  i  À Q^j  i  á@  < 8Unused_value_declaration c@@@ @j@APVo E@A ` GFH a GFl@@@ hkఐ(!s Qsj  i  â Qtj  i  ã@@@ @  M@(@ Q@@@@J@  XJ@  ZJ@  Y  0  Q} Q| Q| Q} Q} Q} Q} Q}@=@@@@(@@@@J@  \J@  [@@A Qj  i  v Qj  i  ä@@@@@J@  E@@J@  D@J@  CJ@  ^@@
@ EX
@@J@  a@@ఐ^'valdecl Qi  9  M Qi  9  T@>@@
o@)pval_name Qi  9  U Qi  9  ^@

@@
@@J@  AJ@  oJ@  e@@J@  d@#txt Qi  9  _ Qi  9  b@ $@@J@  g@@ఐ
Q!v Qi  9  c Qi  9  d@@@@@J@  @J@  qJ@  p@@ఐ#env Qi  9  e Qi  9  h@@@'@@\@@I@  <4@@ Qh  $  &`@@@ࠠ$desc Ql  ê  ð Ql  ê  ô@@@@@ @  yI@  u  0  Q Q Q Q Q Q Q Q@JZT@U@ RF@@A@ R@@@  , &val_id@@ @ !!t@@ @@@  , (val_name !#loc !@@ @@@ @@A
@A !lM<M@ !lM<MU@@ &_  , (val_desc !@@ @@B@A !mMVMZ !mMVMn@@ &`  , 'val_val% B1value_description@@ @@C"@A !&nMoMs !'nMoM@@ &a  , (val_prim1 | !7@@ @@@ @@D1@A !5oMM !6oMM@@ &b  , 'val_loc@ !!t@@ @@E=@A !ApMM !BpMM@@ &c  , .val_attributesL !@@ @@FF@A !JqMM !KqMM@@ 'd@A !NkM'M+ !OkM'M;@@ '^&val_id Rgn  ý   Rhn  ý  @ఐŠ"id Rpn  ý   Rqn  ý  @q@@i@@J@  {J@  }J@  ||@f(val_name Ro     Ro    @ఐ@'valdecl Ro     Ro    @ @@@)pval_name Ro     Ro    @
@@@@J@  J@  J@  @@J@  @|(val_desc Rp     Rp    @ఐO#cty Rp     Rp    @X@@ !@@J@  J@  J@  @'val_val Rp     Rp    @ఐI!v Rp     Rp    @@@@@J@  J@  J@  @(val_prim Rq     Rq    !@ఐ'valdecl Rq    $ Rq    +@x@@@)pval_prim Rq    , Rq    5@ڰ
@@@@J@  @@J@  J@  J@  @'val_loc Rr  7  < Rr  7  C@ఐ'valdecl S	r  7  F S
r  7  M@@@@(pval_loc Sr  7  N Sr  7  V@
@@@@J@  J@  J@  @ơ.val_attributes S s  X  ] S!s  X  k@ఐࠐ'valdecl S+s  X  n S,s  X  u@@@<0@/pval_attributes S2s  X  v S3s  X  ą@
@@ Jn@@J@  :@@@ S9m  ÷  û S:t  ć  Č@@@=@@ S<l  ê  ì@@ఐQ$desc SGv  Ē  Ĕ SHv  Ē  Ę@Q@R@ S[@@
:  0  SG SF SF SG SG SG SG SG@O\@@@ఐ&newenv SVv  Ē  Ě
$@T
%@@
>@@
&@@
J
C@H@  @"
+@@`@t
,@@@
-@@@
.@@
@
/@@
U@@A

0A@
a  0  S^ S] S] S^ S^ S^ S^ S^@
@@@@A
'
2A@
o  0  S` S_ S_ S` S` S` S` S`@
$@@@@A
<
4A@@
x
s@ @    0  Sd Sc Sc Sd Sd Sd Sd Sd@
;@@@@
9@
9
8@
N@ࠠ1transl_value_decl Svx  Ģ  Ħ Swx  Ģ  ķ@@@@ H @@ @  JH@  @
@@ @  IH@  @
@@ @  HH@  
@@ @  F H@@ @  G@ @  EH@  @ @  H@  @ @  H@  @ @  H@    0  S S S S S S S S@


@
@ S@@@@#env Sx  Ģ  ĸ Sx  Ģ  Ļ@@@4  0  S S S S S S S S@@@@@@#loc Sx  Ģ  ļ Sx  Ģ  Ŀ@@@9  0  S S S S S S S S@ E@@ S@@@@@'valdecl Sx  Ģ   Sx  Ģ  @@@A  0  S S S S S S S S@M@@ S@@@@డ K[-warning_scope2Builtin_attributes Sy     Sy    @ G@@ G G G@@H@  @@H@  @ G@@H@  @@ G@@H@  dH@  @H@   @H@  @H@  @H@    0  S S S S S S S S@+7n@.@ T@@@ Hภ A S H@ S@ H H@@I@  @@I@  @@ఐN'valdecl Ty     Ty    @@@H@  OH@  H@  H@  '@/pval_attributes T%y     T&y    @
@@ H7@@I@  I@   I@  5@@@ FĠ F T<z     T=z    @ F@@@@ H@@@L@  (H@@ఐc1transl_value_decl TKz     TLz    %@@@@ H@@J@  5@[@@J@  4@T@@J@  3N@@J@  1 H@@J@  2@J@  0@J@  /@J@  .@J@  -m@@ఐǠ#env Tqz    & Trz    )@@@H@  KH@  }@@ఐɠ#loc Tz    * Tz    -@@@ H@  NH@  @@ఐȠ'valdecl Tz    . Tz    5@@@v@@J@@@@A Tz    	 Tz    6@@@ H@@I@  @I@  I@  S@@	@@
@@A
A@  0  T T T T T T T T@@@@@AA@  0  T T T T T T T T@@@@@AA@@(#@ @  [@@ Tx  Ģ  Ģ@@@
@ࠠ6transl_with_constraint T  A  E T  A  [@@@@ @@ @  H@  ].fixed_row_path H 8	@@ @  RH@  g@@ @  hH@  d'sig_envsA!t@@ @  H@  q(sig_declW@@ @  H@  x)outer_env )@@ @  H@  @ L@@ @  OH@   2@@ @  H@  @ @  H@  @ @  H@  y@ @  zH@  r@ @  sH@  e@ @  fH@  ^@ @  _H@  \  0  T T T T T T T T@e@@ U@@@@"id U  A  \ U  A  ^@@@Y  0  U U U U U U U U@e U  A  A U  ܬ  ܯ@@@@@XX] U$  A  ` U%  A  n@@@ H^@@I@  l  0  U& U% U% U& U& U& U& U&@#r@@ U?@@@@[[` U8  A  p U9  A  w@@@c  0  U6 U5 U5 U6 U6 U6 U6 U6@  Hu@@ @  k@@ US@@@@aaf UL  A  y UM  A  ǁ@@@i  0  UJ UI UI UJ UJ UJ UJ UJ@ z@@ Uc@@@@ffk U\  A  ǃ U]  A  ǌ@@@n  0  UZ UY UY UZ UZ UZ UZ UZ@|@@ Us@@@@@%sdecl Um  Ǎ  Ǒ Un  Ǎ  ǖ@@@v  0  Uk Uj Uj Uk Uk Uk Uk Uk@@@ U@@@@డ R.mark_type_used#Env U  Ǚ  Ǜ U  Ǚ  ǭ@@@@0@@I@  @@I@  @I@    0  U U U U U U U U@*@!@ U@@@@ఐT(sig_decl U  Ǚ  Ǯ U  Ǚ  Ƕ@>@@H@  H@  H@  H@  {@(type_uid U  Ǚ  Ƿ U  Ǚ  ǿ@ H@@[@@J@  J@  J@  (@@4
@@ E@@H@  I@  .@డ T4reset_type_variables U     U    @ \@@@ \@@I@   [@@I@  @I@  D@@ภ H U    @ H@@@ n@@J@  J@  S@@@@ E-@@H@  I@  Y@డ A)begin_def%Ctype U     U    @ @@@ @@I@   @@I@  @I@  r@@ภ HŰ V    @ H@@@ @@J@  J@  @@@@ E[@@H@  I@  @@ࠠ#env V  v  | V  v  @@@4H@  H@  H@    0  V! V  V  V! V! V! V! V!@@@@ఐՠ)outer_env V.  v  Ȃ V/  v  ȋ@@@H@  
@@ V4  v  x@@@ࠠ#loc V?  ȏ  ȕ V@  ȏ  Ș@@@ L@@ @  I@    0  VB VA VA VB VB VB VB VB@/)@*@ V[@@@ఐ렐%sdecl VT  ȏ  ț VU  ȏ  Ƞ@ǰ@@H@  .H@  H@  H@  H@  H@  H@  ZH@  H@  H@  {H@  :H@  H@  H@  H@  H@  H@  H@  H@  5@)ptype_loc V  ȏ  ȡ V  ȏ  Ȫ@ M7/@@?<@@ V  ȏ  ȑ@@@ࠠ'tparams V  Ȯ  ȴ V  Ȯ  Ȼ@@@ D -I@@ @   M@@ @   M@@ @  @ @  I@  @ @  @@ @  I@    0  V V V V V V V V@erl@m@ V@@@ఐ -+make_params V  Ȯ  Ⱦ V  Ȯ  @ +L@@@ -@@I@  @ DP M@@I@  נ.@I@  @@I@   DV -@@I@  Ӡ9@I@  @@I@  @I@  @I@  -@@ఐĠ#env V  Ȯ   V  Ȯ  @@@:@@ఐ%sdecl V  Ȯ   V  Ȯ  @d@@I@,ptype_params V  Ȯ   V  Ȯ  @ N
@@ D N@@J@  k@J@  @@J@  J@  J@  _@@S@@w`@@ W  Ȯ  Ȱ@@@ࠠ&params W     W    @@@ D $3@@ @  I@   @@ @  
I@    0  W  W W W  W  W  W  W @{@@ W9@@@డ U$List#map W5     W6    @ D԰@@@@ &!@@I@  I@   NU@@I@  # NS@@I@  $@I@  "I@  @I@  I@  4@I@  @ D@@I@   D=@@I@  @I@  @I@    0  WX WW WW WX WX WX WX WX@8@@@@@ J*ࠠ#cty Wo     Wp    @@@1@@ Wu     Wv    @@0@@ Wx     Wy    	@@<7@L@  !@@ఐ#cty W    
 W    @I@@ W@@K  0  W W W W W W W W@h#@@@)ctyp_type W     W    @ $o@@t	@@A W     W    @@@`}@J@  J@  w@@ఐ'tparams W     W    #@@@ E;t@@J@  J@  %J@  T@@}@@@@ W    
@@@ࠠ%arity W  '  - W  '  2@@@ FH@@ @  3I@  (  0  W W W W W W W W@@@ W@@@డ V$List&length W  '  5 W  '  @@ FE@@@ FE $@@I@  6I@  -@@I@  , Fi@@I@  +@I@  *!@@ఐڠ&params W  '  A W  '  G@+@@ Fb@@J@  4J@  7J@  56@@'@@:7@@ W  '  )
@@@ࠠ+constraints X	  K  Q X
  K  \@@@ E '@@ @  I@  ⠠ '@@ @  I@  ⡠ O@@ @  I@  @ @  I@  ?@@ @  LI@  :  0  X# X" X" X# X# X# X# X#@cpj@k@ X<@@@డ V$List#map X8  _  c X9  _  k@ Eװ@@@@ '@@I@  sI@  Q '@@I@  I@  R.I@  S@I@  TI@  A@@I@  B@ E@@I@  @ EI@@I@  >@I@  =@I@  <  0  XV XU XU XV XV XV XV XV@3@@@@@ K( ࠠ"ty Xm  _  r Xn  _  t@@@,@ࠠ#ty' Xw  _  v Xx  _  y@@@0@ࠠ#loc X  _  { X  _  ~@@@4)@@ X  _  q X  _  @@FA<@L@  U1@@@ࠠ#cty X  Ƀ  ɍ X  Ƀ  ɐ@@@ ('@@ @  rK@  \  0  X X X X X X X X@y9_@4@ X1[@,@ X)W@$@ X@@@డ W2transl_simple_type X  Ƀ  ɓ X  Ƀ  ɥ@ (*@@@ -@@K@  d@ -@@K@  c@ (*@@K@  b (O@@K@  a@K@  `@K@  _@K@  ^(@@ఐ#env X  Ƀ  ɦ X  Ƀ  ɩ@@@H@  H@  uH@  vH@  <@@ภ N; X  Ƀ  ɪ X  Ƀ  ɯ@ N:@@@ -@@L@  tL@  zL@@ఐ"ty X  Ƀ  ɰ X  Ƀ  ɲ@T@@Y@@G@@]Z@@ X  Ƀ  ɉ@@@ࠠ$cty' Y  ɶ   Y  ɶ  @@@ (@@ @  K@  ~  0  Y Y Y Y Y Y Y Y@o|v@w@ Y @@@డ Wo2transl_simple_type Y  ɶ   Y  ɶ  @ (@@@ -@@K@  @ -@@K@  @ (@@K@   (@@K@  @K@  @K@  @K@  "@@ఐ#env Y8  ɶ   Y9  ɶ  @@@d/@@ภ N YC  ɶ   YD  ɶ  @ N@@@ .@@L@  L@  ?@@ఐޠ#ty' YU  ɶ   YV  ɶ  @@@L@@@@@PM@@ YZ  ɶ  ɼ@@ఐϠ#cty Ye     Yf    @Y@@P  0  Yc Yb Yb Yc Yc Yc Yc Yc@]jd@e@ Y|@@@ఐp$cty' Yt     Yu    @@@Y@ఐ#loc Y     Y    @۰@@2@@ Y     Y    @@pk:@J@  "@1@@@@@y@@A Y  _  l Y    @@@T@J@  NJ@  k@@ఐ6%sdecl Y     Y    @@@EG@+ptype_cstrs Y     Y    @ P
@@ G;q@@J@  MJ@  J@  V@@z@@@@ Y  K  M
@@@ࠠ&no_rowà Y     Y    @@@ G@@ @  I@    0  Y Y Y Y Y Y Y Y@@@ Y@@@డ X#not Y     Y    @ G@@@ G@@I@   G@@I@  @I@  @@ఐ <*-is_fixed_type Y     Y    ,@ 7ð@@@ Q@@J@   Q@@J@  @J@  /@@ఐ%sdecl Y    - Z     2@r@@<@@ Z     Z    3@@ H@@J@  J@  K@  F@@:	@@JG@@ Z    
@@@ࠠ$tmanĠ Z  7  > Z  7  B@@@ Q )@@ @  %I@  @@ @  I@    0  Z% Z$ Z$ Z% Z% Z% Z% Z%@erl@m@ Z>@@@ࠠ#manŠ Z5  7  D Z6  7  G@@@ Q 'Q@@ @  ,I@  @@ @  I@  @@ ZD  7  = ZE  7  H@@*@ @   @ఐ점%sdecl ZU  7  R ZV  7  W@Ȱ@@  0  ZS ZR ZR ZS ZS ZS ZS ZS@.@@@.ptype_manifest Z]  7  X Z^  7  f@ Q$@@ Q# Qu@@ @  @@ @  @Ġ$None Zq  l  r Zr  l  v@ O@@@@@ Q7 Q@@L@  @@L@  Q@@Q@@ภ$None Z  l  z Z  l  ~@ OS@@@ RGf@@J@  a@ภ$None Z  l  ˀ Z  l  ˄@ Oa@@@ RU[@@J@  o@@@@VI@  r@Ġ$Some Z  ˅  ˋ Z  ˅  ˏ@ Oࠠ#styƠ Z  ˅  ː Z  ˅  ˓@@@ Q@@ @  ]@@@@@ Qy Q@@L@  @@L@  e@@e@@@ࠠ#ctyǠ Z  ˗  ˣ Z  ˗  ˦@@@ *X@@ @  K@    0  Z Z Z Z Z Z Z Z@& @!@ Z@@@డ Y22transl_simple_type Z  ˗  ˩ Z  ˗  ˻@ *U@@@ /@@K@  @ /@@K@  @ *U@@K@   *z@@K@  @K@  @K@   @K@  "@@ఐݠ#env Z  ˗  ˼ Z  ˗  ˿@@@/@@ఐJ&no_row [  ˗   [	  ˗  @ް@@ /@@L@  L@  L@  C@@ఐm#sty [  ˗   [  ˗  @M@@ *@@L@  L@  L@  W@@K
@@[X@@ [(  ˗  ˟@@ภ$Some [2     [3    @ Pwఐu#cty [<     [=    @u@v@ [P@@  0  [< [; [; [< [< [< [< [<@s@@@@@@ S#I@  "@@J@  $	@ภ$Some [Q     [R    @ Pఐ#cty []     [^    @!@@ *@@@J@  - @  +$@)ctyp_type [i     [j    @ (F@@-+@@@@ S-3I@  '@@J@  )2@@B
@@3@J@  .7@Q@@5I@   @@A [|  7  L@@7S@@ [~  7  9@@@ࠠ#envȠ [     [    @@@H@  H@  H@    0  [ [ [ [ [ [ [ [@i|v@w@ [e_@`@ [@@@ఐj'sig_env [     [    &@P@@H@  t@@ [    @@@ࠠ(sig_declɠ [  *  0 [  *  8@@@^@@ @  I@    0  [ [ [ [ [ [ [ [@(5/@0@ [@@@డ G4instance_declaration%Ctype [  *  ; [  *  U@^@@@^@@I@  ^@@I@  @I@  @@ఐ(sig_decl [  *  V [  *  ^@~@@<(@@@@,)@@ [  *  ,@@@ࠠ(arity_okʠ [  b  h [  b  p@@@ ;@@ @  I@    0  [ [ [ [ [ [ [ [@>KE@F@ \	@@@డ Z ;  ;" \  b  y \  b  z@ ;@@@ J@@I@  I@  @ ; @@I@  @I@  @I@  @@ఐ\%arity \  b  s \  b  x@@@(@@ఐy(sig_decl \)  b  { \*  b  ̓@4@@ O@@J@   @  <@*type_arity \5  b  ̈́ \6  b  ͎@ O@@2J@  E@@!@@IF@@ \<  b  d@@ఐ[(arity_ok \H  ͒  ͗ \I  ͒  ͟@[@\@ \\@@ L@@I@  I@    0  \M \L \L \M \M \M \M \M@^k
@@@డ [#$List%iter2 \`  ͥ  ͩ \a  ͥ  ͳ@@@@@ +L@@I@  @I@   S@@I@  | S~@@I@  }@I@  {I@  @I@  I@  @J@@I@  I@  @@I@  @I@  @I@  @ &@@I@  @@@I@  @@I@  @I@  @I@  @I@  E@@@ OcΠࠠ#ctyˠ \  ͥ  ͺ \  ͥ  ͽ@@@?Y@@ \  ͥ  Ϳ \  ͥ  @@>^@@ \  ͥ  ͹ \  ͥ  @@JE@L@  e@@@&tparam̠ \  ͥ   \  ͥ  @@@DI@    0  \ \ \ \ \ \ \ \@u$]@@ \@@@@డ H)unify_var%Ctype \     \    @J@@@J@@J@  @J@@J@  @J@@J@  J@@J@  @J@  @J@   @J@    0  \ \ \ \ \ \ \ \@(6,@-@ ]@@@@ఐr#env \     \    @C@@r@@ఐb#cty ]
     ]    @D@@ @)ctyp_type ]     ]    @ )
@@K4@@K@  K@  K@  .@@ఐh&tparam ]%     ]&    @8@@fI@  I@  >@@T@@@@J@  K@  D@Ġ%Ctype%Unify ];    
 ]<    @ C=ࠠ"tr͠ ]D     ]E    @@@ C> C9@@ @  %@@ @  $a@@@
@@ \@@M@  &e@@డ \ %raise ][    $ ]\    )@ S<@@@ S<@@K@  .@@K@  fK@  -@K@  ,  0  ]c ]b ]b ]c ]c ]c ]c ]c@|*$@%@ ]|@@@@ภ%Error ]u    * ]v    /@ S'ఐ٠#cty ]    0 ]    3@@@I@  @(ctyp_loc ]    4 ]    <@ *D@@ U@@L@  :L@  AL@  ?+@ภ7Inconsistent_constraint ]    > ]    U@ఐ#env ]    W ]    Z@@@1H@  H@  +H@  /H@  TH@  UH@  H@  H@  H@  H@  IH@  LH@  V@ఐ"tr ]    \ ]    ^@^@@ C Z@@L@  KL@  UL@  S@@L@  Rl@@; ]    _@@ U@@L@  ;L@  Hs@@ ]    a@@ S@@L@  3L@  9z@@@@a@@K@  hK@  g@@ ]    @@h@@J@  lJ@  k  0  ] ] ] ] ] ] ] ]@@@@@A0A@@uq@@J@  s@J@  rJ@  p  0  ] ] ] ] ] ] ] ]@2@@@@A ]  ͥ  ʹ ]  b  g@@@@~@@J@  @J@  @J@  J@  u  0  ^  ] ] ^  ^  ^  ^  ^ @@@@@ఐ'tparams ^  b  h ^  b  o@@@獠@@J@  J@  ~J@  x@@ఐw(sig_decl ^'  b  p ^(  b  x@2@@ Q@@J@   @  @+type_params ^3  b  y ^4  b  ΄@ Q°@@穠@@J@  J@  J@  @@@@ M@@H@  I@  J@  A@@ ^G  ͒  ͔@@	C@డ ]$List$iter ^V  Ά  Έ ^W  Ά  Α@ O@@@@ -B@@I@  I@  䤠 -H@@I@  I@  䥠 Vw@@I@  I@  @I@  I@   O.@@I@  @I@  @ O+@@I@   O(@@I@  @I@  @I@  z@@@ QKӠࠠ#ctyϠ ^  Ά  Θ ^  Ά  Λ@@@1@ࠠ$cty'Р ^  Ά  Ν ^  Ά  Ρ@@@5@ࠠ#locѠ ^  Ά  Σ ^  Ά  Φ@@@9@@ ^  Ά  Η ^  Ά  Χ@@KFA@L@  @@డ J%unify%Ctype ^  [  c ^  [  n@ E@@@ E@@J@  @ E@@J@  @ E@@J@   E@@J@  @J@  @J@  @J@    0  ^ ^ ^ ^ ^ ^ ^ ^@Ju@E@ ^Bq@=@ ^:m@5@ ^@@@@ఐ]#env ^  [  o ^  [  r@.@@>@@ఐe#cty ^  [  s ^  [  v@!@@&@)ctyp_type ^  [  w ^  [  π@ +ٰ
@@ E@@K@  K@  K@  4@@ఐx$cty' _  [  ρ _  [  υ@<@@C@)ctyp_type _  [  φ _  [  Ϗ@ +
@@ E@@K@  K@  K@  Q@@g
@@ O@@J@  K@  W@Ġ%Ctype%Unify _3  ϐ  ϙ _4  ϐ  Ϥ@ E5ࠠ"trҠ _<  ϐ  ϥ _=  ϐ  ϧ@@@ E6 E1@@ @  @@ @  t@@@
@@ ^@@M@  x@@డ ^%raise _S  ϫ  ϱ _T  ϫ  ϶@ U4@@@ U4@@K@   P@@K@  K@  @K@    0  _[ _Z _Z _[ _[ _[ _[ _[@*$@%@ _t@@@@ภ%Error _m  ϫ  Ϸ _n  ϫ  ϼ@ UఐӠ#loc _w  ϫ  Ͻ _x  ϫ  @@@@ภ7Inconsistent_constraint _  ϫ   _  ϫ  @|ఐ#env _  ϫ   _  ϫ  @Ӱ@@.@ఐZ"tr _  ϫ   _  ϫ  @6@@ E \@@L@  L@  L@  @@L@  D@@$ _  ϫ  @@ W@@L@  L@  K@@X _  ϫ  @@ U@@L@  L@  R@@`@@ Pp@@K@  K@  X@@ _  [  _@@ Pw@@J@  J@    0  _ _ _ _ _ _ _ _@@@@@A _  Ά  Β _    @@@j P@@J@  @J@  J@    0  _ _ _ _ _ _ _ _@x@@@@ఐ̠+constraints _     _    @@@ P@@J@  J@  &J@  !@@@@ O-@@H@  )I@  @@ࠠ$privԠ _     _    @@@ >c@@ @  BI@  *  0  _ _ _ _ _ _ _ _@@@@డ ^ ?" ?$ `     `     @ ?!@@@ V@@I@  9I@  /@ ?"@@I@  .@I@  -@I@  ,@@ఐ
%sdecl `     `    @
@@	)@-ptype_private `%     `&    @ V
@@0@@ภ'Private `1    ! `2    (@ >@@@,J@  =>@@@@ P	@@I@  ?J@  7D@ภ'Private `B    . `C    5@ >@@@PM@డ _ ? ? `P  ;  K `Q  ;  M@ ?@@@ ?@@I@  H@ ?@@I@  G ?@@I@  F@I@  E@I@  Dh@@ఐ}(arity_ok `j  ;  B `k  ;  J@"@@ ?@@J@  TJ@  VJ@  U|@@డ _E"<> `  ;  a `  ;  c@ P@@@ S@@J@  fJ@  [@ P@@J@  Z@J@  Y@J@  X@@ఐ렐(sig_decl `  ;  N `  ;  V@@@ T>@@K@  g @  e@)type_kind `  ;  W `  ;  `@ T@@#@@ภ-Type_abstract `  ;  d `  ;  q@ MC@@@1J@  p@@@@ @
@@J@  SJ@  rK@  c@@W
@@ P@@I@  tJ@  R@ఐ(sig_decl `  r  { `  r  Ѓ@ڰ@@ Tr@@I@  x @  v@,type_private `  r  Є `  r  А@ T@@@I@  AI@  w@ఐ%sdecl `  r  Ж `  r  Л@^@@
@-ptype_private `  r  М `  r  Щ@ Wİ
@@I@  z@ `  ;  ?@@@ `    @@@@ `    
@@డ _ @b @d a	  Я  н a
  Я  п@ @a@@@ @a@@I@  @ @`@@I@   @_@@I@  @I@  @I@    0  a a a a a a a a@/)@*@ a-@@@@ఐ:(arity_ok a'  Я  д a(  Я  м@߰@@ @@@J@  J@  J@  @@డ ` @ @ a<     a=    @ @@@@ @@@J@  @ @@@J@   @@@J@  @J@  @J@  3@@డ `"<> aX  Я   aY  Я  @ QŰ@@@ T@@K@  K@  @ Q@@K@  @K@  @K@  N@@ఐà(sig_decl as  Я   at  Я  @~@@ U@@L@   @  b@)type_kind a  Я   a  Я  @ T@@#i@@ภ-Type_abstract a  Я   a  Я  @ N@@@1K@  w@@@@ @@@K@  K@  L@  @@డ `i @  @İ a     a    @ @@@@ Xx@@K@  K@  @ @@@K@  @K@  @K@  @@ఐU%sdecl a     a    @1@@X@-ptype_private a     a    @ X
@@@@ภ'Private a     a    @ @C@@@,L@  @@@@ A(@@K@  K@  L@  @@l
@@ A0@@J@  J@  K@  @@@@ Q@@I@  J@  @డ Y*deprecated(Location a     a    #@#def&optionJ Y@@ @@@ @#use d@@ @@@ @@ j@@ @@&stringO@@ @ c@@ @@ @@ @@ @@ @@ a LL b L@@ x E21@@/- @@I@  @@I@  *6 @@I@  @@I@  @ @@I@  @(@@I@  %@@I@  @I@  @I@  @I@  @I@  0@Nภ ON b& W@ b&@P @@J@   @@J@  =@Mภ O[ b3 W)@ b3@] @@J@  @@J@  J@@ఐ.#loc bm    $ bn    '@°@@ @@J@  J@  J@  ^@@7spurious use of private b    ) b    @@@ b    ( b    A@@m@@J@  J@  J@  r@@	@@ Q@@H@  I@  
J@  z@@ b  Я  б@@	|@@ࠠ)type_kindՠ b  C  I b  C  R@@@ V@@ @  CI@    0  b b b b b b b b@@@@ࠠ4type_unboxed_default֠ b  C  T b  C  h@@@ U@@ @  GI@  @@@@
@I@  @డ a B" B$ b  k  { b  k  }@ B!@@@ B!@@I@  @ B @@I@   B@@I@  @I@  @I@  /@@ఐ(arity_ok b  k  r b  k  z@@@ B=@@J@  $J@  &J@  %C@@డ a"<> b  k  т b  k  ф@ Sf@@@ Z 0@@J@  5@@J@  4J@  +@ Sk@@J@  *@J@  )@J@  (b@@ఐ᠐#man c  k  ~ c  k  с@@@o@@ภ$None c"  k  х c#  k  щ@ W@@@'J@  9}@@@@ By@@J@  #J@  ;K@  3@@M
@@ S@@I@  =J@  "@ఐ(sig_decl cA  я  ѕ cB  я  ѝ@L@@ V@@I@  D @  B@)type_kind cM  я  ў cN  я  ѧ@ V@@@ఐ(sig_decl cZ  я  ѩ c[  я  ѱ@e@@ V@@I@  H @  F@4type_unboxed_default cf  я  Ѳ cg  я  @ VW@@@@)@@Ơ@ @  I@ภ-Type_abstract cx     cy    @ P@@@I@  U@ภ Xܰ c     c    @ X@@@I@  X@@@@!I@  Y@ c  k  o	@@#@@ c  C  E@@@ࠠ,new_sig_declנ c     c    @@@ W<@@ @  `I@  [  0  c c c c c c c c@ @@ c@@ c@@@  8  W9+type_params c     c    @ఐ&params c     c    @@@ WL WI@@J@  d@@J@  cJ@  gJ@  e'@ WC*type_arity c  !  ' c  !  1@ఐ%arity c  !  4 c  !  9@@@ WV@@J@  mJ@  oJ@  n@@ WP)type_kind c  ;  A c  ;  J@ఐN	AK	A@ W`@@J@  tJ@  zJ@  yV@ W[,type_private c  L  R c  L  ^@ఐ$priv d  L  a d  L  e@@@ Wn@@J@  J@  J@  o@ Wf-type_manifest d  g  m d  g  z@ఐ	ꠐ#man d  g  } d   g  Ҁ@@@ Wy W@@J@  @@J@  J@  J@  @ Ws-type_variance d3  ҂  ҈ d4  ҂  ҕ@ภ 8Z d:  ҂  Ҙ d;  ҂  Қ@ 8Y@@@ W W@@J@  @@J@  J@  @ Wz1type_separability dL  Ҝ  Ң dM  Ҝ  ҳ@డ b,Separability1default_signature%Types d]  Ҝ  Ҷ d^  Ҝ  @ O1@@ O1 O/@@J@   O.@@J@  @J@  @ O9ఐ%arity dr  Ҝ   ds  Ҝ  @J@@ OF@@K@  K@  K@  @@ 
@@ OF@@J@  @ W/type_is_newtype d     d    @ภ Y d     d     @ Y@@@ W@@J@  J@  @ W4type_expansion_scope d     d    @డ S,lowest_level%Btype d     d    1@ O@@ W@@J@  J@  J@  @ W(type_loc d  3  9 d  3  A@ఐ#loc d  3  D d  3  G@@@ W@@J@  J@  J@  )@ Xk/type_attributes d  I  O d  I  ^@ఐr%sdecl d  I  a d  I  f@N@@s=@0ptype_attributes d  I  g d  I  w@ \"
@@ X@@J@  J@  J@  K@ Wꡠ.type_immediate d  y   d  y  Ӎ@ภ'Unknown d  y  Ӑ d  y  ӗ@ O@@@ W@@J@  J@  a@ W򡠐4type_unboxed_default e  ә  ӟ e	  ә  ӳ@ఐ_	Aj	A@ X@@J@  J@  J@  w@ W(type_uid e  ӵ  ӻ e  ӵ  @డ c#Uid"mk e,  ӵ   e-  ӵ  @ 0'@@ 0' 0%@@J@   0"@@J@  @J@  @ 0/డ b-get_unit_name#Env eF  ӵ   eG  ӵ  @ 0@@@ 0@@K@   0@@K@  @K@  @@ภ X eY  ӵ   eZ  ӵ  @ X@@@ 0&@@L@  L@  @@ eb  ӵ   ec  ӵ  @@ 0\@@K@  K@  L@  @@@	@@ XS@@J@  J@  K@   @@@ et    	 eu    @@@@ ew    @@డ dI&Option$iter e      e    @"@@@@I@   @@I@  @I@  @
@@I@  @@I@  @I@  @I@    0  e e e e e e e e@@@ e@@@@@!pؠ e     e    @@@"@@ఐ C/set_private_row e     e    %@ <]@@@ C@@J@  >@ ]@@J@  =@ I@@J@  <@ Yj@@J@  ; C@@J@  :@J@  9@J@  8@J@  7@J@  6  0  e e e e e e e e@80H@'@ e@@@@ఐ
W#env e    & e    )@
(@@0@@ఐ%sdecl e    * e    /@b@@ @)ptype_loc e    0 e    9@ \
@@ ^@@K@  SK@  [K@  Y.@@ఐb!p f
    : f    ;@8@@I@  \I@  1>@@ఐ,new_sig_decl f    < f    H@@@ Y@@K@  QK@  ^K@  ]R@@m
@@͸@@J@  bJ@  aX@@A f+     f,    I@@@@@J@  ,@J@  +J@  d  0  f/ f. f. f/ f/ f/ f/ f/@@@@@ఐ.fixed_row_path f?  J  N f@  J  \@@@Ϡ@@J@  *J@  gJ@  f@@@@ U@@H@  jI@  )@డ R50closed_type_decl%Ctype f`  ^  l fa  ^  Ԃ@@@@@@J@  q@@J@  p@@J@  o@J@  n;@@ఐࠐ,new_sig_decl fy  ^  ԃ fz  ^  ԏ@ް@@-@@K@  zK@  |K@  {O@@$
@@,+@@ @  y@@ @  xW@Ġ$None f  ^  ԕ f  ^  ԙ@ [d@@@@@?@@L@  @@L@    0  f f f f f f f f@@@@	@@@ภ Yc f  ^  ԝ f  ^  ԟ@ Yb@@@ U@@H@  I@  @Ġ$Some f  Ԡ  Ԥ f  Ԡ  Ԩ@ [ࠠ"ty٠ f  Ԡ  ԩ f  Ԡ  ԫ@@@g@@ @  @@@@@on@@L@  @@L@  @@@@డ e%raise f  Ԡ  ԯ f  Ԡ  Դ@ \@@@ \@@J@  ;I@  J@  @J@    0  f f f f f f f f@I)#@$@ f@@@@ภ%Error f  Ԡ  Ե f  Ԡ  Ժ@ \ఐ#loc f  Ԡ  Ի f  Ԡ  Ծ@O@@ _@@K@  K@  K@  !@ภ0Unbound_type_var g  Ԡ   g  Ԡ  @
ఐU"ty g  Ԡ   g  Ԡ  @2@@ c@@K@  K@  K@  <@ఐ,new_sig_decl g'  Ԡ   g(  Ԡ  @@@ c@@K@  K@  K@  N@@' g2  Ԡ  @@ _3@@K@  K@  U@@a g9  Ԡ  @@ ]@@K@  K@  \@@i@@_]@@A gA  ^  ` gB    @@@@ࠠ,new_sig_declڠ gM     gN    @@@ Z@@ @  I@    0  gP gO gO gP gP gP gP gP@@@@ఐ`.name_recursion g_     g`    @Ұ@@@ _.@@I@  @ P@@I@  @ [@@I@  @I@  @I@  @I@  @@ఐ%sdecl g{     g|    @@@)@@ఐz"id g     g    @]@@H@  H@  H@  H@  `=@@ఐ,new_sig_decl g     g    %@@@QJ@  J@  N@@E@@RO@@ g    	@@@ࠠ1new_type_variance۠ g  )  / g  )  @@@@G$prop@@ @  'I@    0  g g g g g g g g@ sm@n@ g@@@@ࠠ(requiredܠ g  C  K g  C  S@@@Zf@@ @  @@ @   J@  @డ c1variance_of_sdecl1Typedecl_variance g  C  V g  C  y@@0type_declaration@@ @?Z@@ @>@@ @=@ @<@YSSZk@@B@@@@@J@  0Z@@J@  @@J@  @J@  J@@ఐ%sdecl h  C  z h  C  @@@W@@1@@EX@@ h  C  G@@డ c,compute_decl1Typedecl_variance h"  Ջ  Ց h#  Ջ  կ@@N!t@@ @l%checkZo@@ @k@30type_declaration@@ @j@PT@@ @i@@ @h@ @g@ @f@ @e@ @d@#p$q@@"S'&@@@$@@I@  !@@I@  @@@I@  
@Pp@@I@  @@I@  @I@  
@I@  	@I@  @I@    0  h[ hZ hZ h[ h[ h[ h[ h[@@@ ht@@@@ఐ堐#env hn  Ջ  հ ho  Ջ  ճ@@@
@Dภ ^ hy  Ջ  ջ hz  Ջ  տ@ ^@@@M@@J@  *J@  3!@@ఐ>,new_sig_decl h  Ջ   h  Ջ  @Ѱ@@[@@J@  )J@  5J@  45@@ఐנ(required h  Ջ   h  Ջ  @?@@P@@J@  ;J@  9G@@@@H@Ġ1Typedecl_variance%Error h     h    @Xࠠ#locݠ h     h    @@@Y@@ @  Ha@ࠠ#errޠ h     h     @@@]@@ @  In@@@ h    @@ h@@L@  Js@@డ g%raise h     h    @ ^@@@ ^@@J@  S3I@  NJ@  R@J@  Q  0  h h h h h h h h@4.@/@ h)#@$@ h@@@@ภ%Error h     h    @ ^ఐG#loc i     i    @@@ a@@K@  _K@  dK@  c$@ภ(Variance i     i    &@8ఐU#err i    ' i    *@2@@ d@@K@  jK@  lK@  k?@@
@@ a(@@K@  `K@  iE@@ i.     i/    ,@@ _@@K@  XK@  ^M@@Z@@PN@@ i7  Ճ  Շ	@@  0  i3 i2 i2 i3 i3 i3 i3 i3@@@@'@@@@ i;  )  +
@@@ࠠ2new_type_immediateߠ iF  0  6 iG  0  H@@@.Type_immediacy!t@@ @  I@  p  0  iN iM iM iN iN iN iN iN@@@ ig@@@డ d,compute_decl2Typedecl_immediacy ic  ւ  ֆ id  ւ  ֥@@5!t@@ @@%Types0type_declaration@@ @-@@ @@ @@ @@TT4@@
C@@@@@I@  v@@@I@  u?@@I@  t@I@  s@I@  r:@@ఐ#env i  ւ  ֦ i  ւ  ֩@
߰@@G@@ఐW,new_sig_decl i  ւ  ֪ i  ւ  ֶ@@@;@@J@  J@  J@  [@@L
@@d\@@ i  0  2@@@ࠠ5new_type_separability i  ֺ   i  ֺ  @@@X$mode@@ @  @@ @  I@    0  i i i i i i i i@x@@ i@@@డ e,compute_decl5Typedecl_separability i     i    @@@@ @@%Types0type_declaration@@ @.-@@ @@@ @@ @@ @@/ jEE0 jE@@.G@@@"@@I@  @@@I@  DC@@I@  @@I@  @I@  @I@    0  j j j j j j j j@A@@@@ఐ#env j     j    @^@@@@ఐ֠,new_sig_decl j#     j$    @i@@D@@J@  J@  J@  "@@R
@@n#@Ġ5Typedecl_separability%Error j8     j9    8@~ࠠ#loc jA    : jB    =@@@@@ @  <@ࠠ#err jN    ? jO    B@@@@@ @  I@@@ jU    C@@ i@@L@  N@@డ i'%raise jb  G  M jc  G  R@ `C@@@ `C@@J@  I@  J@  @J@    0  ji jh jh ji ji ji ji ji@4.@/@ j)#@$@ j@@@@ภ%Error j~  G  T j  G  Y@ `0ఐG#loc j  G  [ j  G  ^@@@ b@@K@  K@  K@  $@ภ,Separability j  G  ` j  G  l@_ఐU#err j  G  m j  G  p@2@@ e@@K@  K@  K@  ?@@
@@ b@@K@  K@  E@@ j  G  S j  G  r@@ `@@K@  K@  M@@Z@@PN@@ j    	@@@@ j  ֺ  ּ@@@ࠠ,new_sig_decl j  v  | j  v  ׈@@@ ^m@@ @  I@    0  j j j j j j j j@	@@ j@@@  8  ^g+type_params j  ؟  إ j  ؟  ذ@ఐ,new_sig_decl j  ؟  س j  ؟  ؿ@0@@ ^@@J@   @   @+type_params j  ؟   j  ؟  @ ^@@ ^ ^@@J@  @@J@  J@  J@  2@ ^*type_arity k
     k    @ఐȠ,new_sig_decl k     k    @[@@ ^@@J@   @  K@*type_arity k!     k"    @ ^@@ ^@@J@  J@  J@  Y@ ^)type_kind k1     k2    @ఐ,new_sig_decl k<     k=    @@@ ^@@J@   @  r@)type_kind kH     kI    !@ ^@@ ^@@J@  J@  J@  @ ^,type_private kX  #  ) kY  #  5@ఐ,new_sig_decl kc  #  8 kd  #  D@@@ _@@J@    @  @,type_private ko  #  E kp  #  Q@ ^԰@@ ^@@J@  J@  J@  @ ^ϡ-type_manifest k  S  Y k  S  f@ఐ=,new_sig_decl k  S  i k  S  u@а@@ _-@@J@   @  @-type_manifest k  S  v k  S  ك@ ^@@ ^ _%@@J@  	@@J@  J@  J@  @ ^ꡠ-type_variance k      k     @ఐ1new_type_variance k      k     @`@@@@J@  @ ^1type_separability k     k    -@ఐ
5new_type_separability k    0 k    E@@@ _ @@J@  (J@  &@@J@  %J@  )J@  '@ ^/type_is_newtype k     k    @ఐ,new_sig_decl k     k    @/@@ _@@J@  V @  T@/type_is_newtype k     k    @ _@@ _@@J@  RJ@  WJ@  U-@ _4type_expansion_scope l     l    @ఐà,new_sig_decl l     l    $@V@@ _@@J@  ` @  ^F@4type_expansion_scope l    % l    9@ _3@@ _6@@J@  \J@  aJ@  _T@ _2(type_loc l,  ;  A l-  ;  I@ఐꠐ,new_sig_decl l7  ;  L l8  ;  X@}@@ _@@J@  l @  jm@(type_loc lC  ;  Y lD  ;  a@ _P@@ _S@@J@  fJ@  mJ@  k{@ _/type_attributes lS  c  i lT  c  x@ఐ,new_sig_decl l^  c  { l_  c  ڇ@@@ `@@J@  y @  w@/type_attributes lj  c  ڈ lk  c  ڗ@ `@@ `@@J@  rJ@  zJ@  x@ _r.type_immediate lz     l{    @ఐ=2new_type_immediate l     l    @@@ _@@J@  J@  J@  @ _}4type_unboxed_default l  م  ً l  م  ٟ@ఐQ,new_sig_decl l  م  ٢ l  م  ٮ@@@ `A@@J@   @  @4type_unboxed_default l  م  ٯ l  م  @ _@@ _@@J@  J@  J@  @ _(type_uid l  ڙ  ڟ l  ڙ  ڧ@ఐx,new_sig_decl l  ڙ  ڪ l  ڙ  ڶ@@@ `h@@J@   @  @(type_uid l  ڙ  ڷ l  ڙ  ڿ@ _@@ _@@J@  J@  J@  	@@@ l  ؙ  ؝ l  G  L@@@@ l  v  x@@డ X'end_def%Ctype l  P  R l  P  _@ r@@@ r@@I@   q@@I@  @I@    0  l l l l l l l l@(5/@0@ m
@@@@ภ _ð m  P  a@ _@@@ @@J@  J@  @@@@ \Y@@H@  I@  @ఐ d/generalize_decl m  c  e m  c  t@ @@@ `@@I@   _@@I@  @I@  /@@ఐh,new_sig_decl m2  c  u m3  c  ہ@9@@ `@@J@  J@  J@  C@@ 
@@ \@@H@  I@  I@  (  &typ_id mK  ۇ  ۋ mL  ۇ  ۑ@ఐF"id mT  ۇ  ۔ mU  ۇ  ۖ@)@@^@ (typ_name m]  ۘ  ۜ m^  ۘ  ۤ@ఐ%sdecl mh  ۘ  ۧ mi  ۘ  ۬@۰@@r@*ptype_name mo  ۘ  ۭ mp  ۘ  ۷@ d
@@ d @@I@  I@  I@  @@I@  @ *typ_params m	  ۹  ۽ m	  ۹  @ఐ'tparams m	  ۹   m	  ۹  @g@@  <w@@I@   @@I@   @@I@  @I@  @I@  @@I@  I@  I@  @ (typ_type m
     m
    @ఐ,new_sig_decl m
     m
    @@@ @@I@   I@  I@  @ )typ_cstrs m     m    @ఐǠ+constraints m      m    @
@@ Ӡ <@@I@   <@@I@   @@I@  @I@  @@I@  I@  I@  @ ̡(typ_kind m  9  = m  9  E@ภ.Ttype_abstract m  9  H m  9  V@  @@@  x@@I@  "I@  &@ ١+typ_private n  X  \ n  X  g@ఐ%sdecl n  X  j n  X  o@@@@-ptype_private n  X  p n  X  }@ d
@@ @@I@  +I@  /I@  -(@ 𡠐,typ_manifest n'
     $ n(
     0@ఐ$tman n0
     3 n1
     7@@@  =@@I@  7@@I@  6I@  :I@  8E@ 'typ_loc nD  
   nE  
  @ఐ#loc nM  
   nN  
  @@@ @@I@  @I@  DI@  C^@ .typ_attributes n]    ܃ n^    ܑ@ఐ%sdecl nh    ܔ ni    ܙ@۰@@r@0ptype_attributes no    ܚ np    ܪ@ e
@@ e@@I@  N|@@@ nv  ۃ  ۅ]@@v~@[^@@w@_@@x@`@@y@a@@z@b@@{)@Bc@@|@d@@})@>e@@~*@f@@+@	
g@@
@
h@@@i@@@
j@@@/k@@@?l@@@Km@@@n@@@o@@@p@@`@}q@@@r@@d@s@@@t@@i@u@@@v@@I@]w@@k@x@@l@y@@m@z@@n@@A({A@  0  n n n n n n n n@%@@@@A n  A  ǂ~A@  0  n n n n n n n n@9@@@@A n  A  xA@  0  n n n n n n n n@L@@@@A n  A  oA@  0  n n n n n n n n@c@@@@A n  A  _A@  0  n n n n n n n n@v@@@@AA@@@ @  j  0  n n n n n n n n@@@@@@@@ࠠ2abstract_type_decl n     n    @@@)injective Z@@ @  ZH@  l@ Y@@ @  xH@  s bi@@ @  H@  t@ @  uH@  m@ @  nH@  k  0  n n n n n n n n@@@ n@@@  n    
 n    @@@#  0  n n n n n n n n@1 n     n+    @@@@@@%arity n     n    @@@-  0  n n n n n n n n@9@@ o@@@@Aࠠ+make_params n    ) o     4@@@@ a@@ @  I@  { n Z@@ @  I@  @@ @  I@  |@I@  ~  0  o o o o o o o o@%1T@(@ o)@@@@!n o#    5 o$    6@@@"  0  o! o  o  o! o! o! o! o!@-@)#@ @  }J@  z@,@ o>@@@@డ m"<= o9  9  B o:  9  D@@!a @ c@ _@@ @ b@ @ a@ @ `*%lessequalBA e@@@@ e  e @@ eU@@@RI@  I@  @@@I@  @I@  @I@    0  oW oV oV oW oW oW oW oW@7C[@:@ op@@@@ఐK!n oj  9  @ ok  9  A@@@I@  @@@ ov  9  E ow  9  F@@"@@@@ _K@@I@  J@  "@ภ C o  9  L o  9  N@ C@@@ Cz@@I@  .@ภc o  9  c o  9  e@ 1డ [s&newvar%Ctype o  9  T o  9  `@ [q@@ [q [o [l@@I@  @@I@  @ [i@@I@   [f@@I@  @I@  @I@  V@ [ภ \ o d@ o@ [ [@@J@  @@J@  c@@ภ b( o  9  b@ b@*@@ [@@J@  J@  r@@1@@s@ఐڠ+make_params o  9  f o  9  q@@@@@I@  @@డ n!- o  9  t o  9  u@@@@ @ @ O@@ @  S@@ @ @ @ @ @ Ɛ'%subintBA eΠ@@@@ e`55 e`55@@ eq@@@@@J@  @@@J@  @@J@  @J@  @J@  @@ఐ!n p  9  s4@5@@@@A; p&  9  v@@7@@K@  K@  K@  @@ p/  9  r p0  9  w@@-K@  @@[@@*@@@@I@  @ p8  9  =	@@/I@  @@AA@@82@ @    0  p9 p8 p8 p9 p9 p9 p9 p9@@@@@ p@    !@@డ \$)begin_def%Ctype pO  {  } pP  {  ݌@ /@@@ /@@I@   /@@I@  @I@    0  pU pT pT pU pU pU pU pU@4@@@@ภ c! pc  {  ݎ@ c@@@ 0 @@J@  J@  @@@@ _@@H@  I@  @@ࠠ$decl pz  ݐ  ݖ p{  ݐ  ݚ@@@ d@@ @  I@  \@  8  d+type_params p  ݝ  ݣ p  ݝ  ݮ@ఐ+make_params p  ݝ  ݱ p  ݝ  ݼ@p@@@@@J@   p  \X@@J@  @@J@  @J@  @@ఐŠ%arity p  ݝ  ݽ p  ݝ  @@@H@  |H@  YH@  \H@  H@  H@  H@  H@  v@@,@@ dQ dN@@J@  @@J@  J@  J@  @ dH*type_arity p     p    @ఐ%arity p     p    @ǰ@@)@ dN)type_kind p     p    @ภ-Type_abstract p     p    @ ]}@@@ d^@@J@  J@  "@ dY,type_private p     p    @ภ&Public q     q    @Y@@@ di@@J@  +J@  /@ da-type_manifest q    " q    /@ภ$None q    2 q    6@ e@@@ dq d@@J@  7@@J@  6J@  =@ dk-type_variance q+  8  > q,  8  K@డ o(Variance1unknown_signature q9  8  N q:  8  h@ \@@ \ \@@J@  L \ \@@J@  K \ \@@J@  J@@J@  I@J@  H@J@  G'@ \ఐ)injective qW  8  j qX  8  s@f@@H@  [H@  o7@ \ఐ}%arity qg  8  u qh  8  z@R@@D@@2@@ d d@@J@  E@@J@  DJ@  ^J@  WP@ d1type_separability q|   |  ނ q}   |  ޓ@డ o,Separability1default_signature%Types q   |  ޖ q   |  ޺@ \a@@ \a \_@@J@  k \^@@J@  j@J@  ir@ \iఐ%arity q   |  ޼ q   |  @@@@@@@ \o@@J@  w@ dˡ/type_is_newtype q!     q!    @ภ g q!     q!    @ g@@@ d@@J@  J@  @ dԡ4type_expansion_scope q"     q"    @డ `,lowest_level%Btype q"     q"    @ \H@@ d@@J@  J@  J@  @ d桠(type_loc q#     q#    !@డ i$none(Location q#    $ q#    1@ "C@@ @>@ ".f]] "/f]i@@ "ED
@@ e@@J@  J@  J@  @ e/type_attributes r$  3  9 r$  3  H@ภ F+ r$  3  K r$  3  M@ F*@@@ e@@J@  J@  @ e.type_immediate r%  O  U r%  O  c@ภ'Unknown r!%  O  f r"%  O  m@ \2@@@ e!@@J@  J@  @ e4type_unboxed_default r/&  o  u r0&  o  ߉@ภ g r6&  o  ߌ r7&  o  ߑ@ g@@@ e(@@J@  J@  @ e$(type_uid rD'  ߓ  ߙ rE'  ߓ  ߡ@డ p#Uid<internal_not_actually_unique rP'  ߓ  ߤ rQ'  ߓ  @ =A@@ @.@ e%% e%&
@@ e~
@@ eB@@J@  J@  J@  <@@@ rc  ݝ  ݡ rd(    @@?@@ rf  ݐ  ݒ@@డ ^J'end_def%Ctype ru)     rv)    @ 
@@@ 
@@I@   
@@I@  @I@    0  r{ rz rz r{ r{ r{ r{ r{@[@@ r@@@@ภ eJ r)    @ eH@@@ @@J@  J@  @@@@ a@@H@  I@  @ఐ 	렐/generalize_decl r*     r*    @ @@@ fG@@I@   ef@@I@  @I@  /@@ఐ?$decl r*     r*    @9@@ f^@@J@  J@  J@  C@@ 
@@ b@@H@  I@  I@ఐV$decl r+    @O@@R@/@@S@_@@	T@o@@
@@@@@@@@AA@  0  r r r r r r r r@@@@@A r    A@$ @ @    0  r r r r r r r r@@@@@@@@ࠠ0approx_type_decl r-     r-    @@@@ ` j@@ @  H@  @@ @  H@   ` a@@ @  KH@  9 f@@ @  nH@  :@ @  ;H@  
@@ @  H@  @ @  H@    0  s
 s s s
 s
 s
 s
 s
@Ef`@a@ s&@@@@*sdecl_list s -     s!-    "@@@2  0  s s s s s s s s@> s'-     s(4  %  3@@@@@@ࠠ%scope s3.  %  + s4.  %  0@@@@@ @  I@    0  s6 s5 s5 s6 s6 s6 s6 s6@%M@@ sO@@@డ _ ,create_scope%Ctype sK.  %  3 sL.  %  E@ǰ@@@@@I@  @@I@  @I@  @@ภ f s^.  %  F s_.  %  H@ f@@@@@J@  J@  +@@@@/,@@ sh.  %  '
@@డ r8$List#map su/  L  N sv/  L  V@ a@@@@{@H@  @ a@@H@   a@@H@  @H@  @H@  
  0  s s s s s s s s@LYS@T@ s@@@@@%sdecl s0  W  ` s0  W  e@@@@@@ࠠ)injective s1  i  s s1  i  |@@@ d@@ @  0J@  #  0  s s s s s s s s@'@@ s@@@డ r~"<> s1  i   s1  i  @ d&@@@ j@@J@  2J@  (@ d'@@J@  '@J@  &@J@  %@@ఐA%sdecl s1  i   s1  i  @(@@H@  TH@  3H@  1H@  2@*ptype_kind s1  i   s1  i  @ j@@%9@@ภ.Ptype_abstract s1  i   s1  i  @ R@@@3K@  6G@@ @@KH@@ s1  i  o@@డ b-create_scoped%Ident t2     t2    @@@@@I@  A@@@I@  @ b@@I@  ?@I@  >@I@  =  0  t t t t t t t t@jwq@r@ t)@@@ ఐ%scope t#2     t$2    @@@
@@J@  MJ@  OJ@  N@@ఐ%sdecl t;2     t<2    @@@c)@*ptype_name tB2     tC2    @ kw
@@ kv'@@J@  LJ@  ]J@  S@@J@  R;@#txt tT2     tU2    @ G@@J@  UC@@T@@QD@ఐ2abstract_type_decl tc3     td3    @Q@@ _@@I@  d@ _:@@I@  c h@@I@  b@I@  a@I@  `^@ఐ٠)injective t}3     t~3    @h@@ _@@J@  pJ@  rJ@  qr@@డ sY$List&length t3     t3    @ c@@@ c k@@J@  삠 k@@J@  선 k@@J@  @J@  @J@  J@  w@@J@  v c7@@J@  u@J@  t@@ఐ.%sdecl t3     t3    @@@@,ptype_params t3     t3    !@ k
@@ c94@@K@  ~K@  K@  @@ t3     t3    "@@ _@@J@  oJ@  K@  }@@{	@@@@ t2     t3    #@@ܠ@I@  @@@:@@A t0  W  [ t3    $@@@@I@  I@    0  t t t t t t t t@g@@@@ఐܠ*sdecl_list t4  %  )@@@H@  H@  w@@@@ @@@@@AA@@@ @    0  t t t t t t t t@@@@@@@򠰡@ࠠ5check_recmod_typedecl u9     u9    @@@@@@ @  H@  @ m(@@ @  H@  @$listI ^\!t@@ @  @@ @  H@  @@@ @  H@  @@@ @  H@   d@@ @  H@  @ @  H@  @ @  H@  @ @  H@  @ @  H@  @ @  H@    0  uI uH uH uI uI uI uI uI@=jd@e@ ub@@@@#env u\9     u]9    @@@I  0  uZ uY uY uZ uZ uZ uZ uZ@U uc9     udA    @@@@@@#loc uo9     up9    @@@S  0  um ul ul um um um um um@ _@@ u@@@@@*recmod_ids u9     u9    @@@[  0  u~ u} u} u~ u~ u~ u~ u~@g@@ u@@@@@$path u9     u9    @@@Y  0  u u u u u u u u@o@@ u@@@@@$decl  u9     u9    @@@a  0  u u u u u u u u@m@@ u@@@@@ࠠ(to_check u<  x  ~ u<  x  @@@@ ^y@@ @  I@   Y@@ @  I@  @ @  I@    0  u u u u u u u u@!-@$@ u@@@@$path u<  x   u<  x  @@@  0  u u u u u u u u@( u<  x  z u<  x  @@@@@డ r+exists_free$Path u<  x   u<  x  @@à@@ @@@ @@ ^@@ @8@@ @@ @@ @@ ^Z ^Z+@@ ^G@@@٠@@I@  @@I@  @ ^@@I@  N@@I@  @I@  @I@    0  v
 v v v
 v
 v
 v
 v
@=I[@@@ v&@@@@ఐ*recmod_ids v <  x   v!<  x  @@@H@  H@  @@ఐa$path v0<  x  V@W@@zI@  I@  #@@N[@@u$@@Ad\A@@}x@ @    0  v4 v3 v3 v4 v4 v4 v4 v4@c@@@@a@ఐ 7check_well_founded_decl vE=     vF=    @@@@d@@I@  @ nV@@I@  @ _@@I@  @ֲ@@I@  @@ Y@@I@   f3@@I@  㐐AI@  ֪@@I@  @I@  @I@  @I@  @I@  @I@    0  vf ve ve vf vf vf vf vf@@@ v@@@@ఐ!#env vy=     vz=    @@@tH@  H@  NH@  QH@  OH@  PH@  H@  H@   @@ఐ*#loc v=     v=    @@@H@  H@  MH@  TH@  H@  H@  8@@ఐ $path v=     v=    @@@H@  H@  LH@  UH@  H@  H@  P@@ఐ'$decl v=     v=    @ @@H@  H@  KH@  VH@  H@  
H@  h@@ఐ*(to_check v=     v=    @r@@@ _@@J@  $@@J@  @J@  }@@@@ f5@@H@  I@   @ఐ/check_recursion v>     v>    @ @@ tr@@I@  +@ k@@I@  *@ o@@I@  )@ ZH@@I@  (@ j@@I@  '@@ ZT@@I@  & Vo@@I@  %AI@  $ i@@I@  #@I@  "@I@  !@I@   @I@  @I@  @I@  @ఐ֠#env w.>     w/>    @@@@@ఐ㠐#env w;>     w<>    @ɰ@@@@ఐݠ#loc wH>     wI>    @Ű@@@@ఐȠ$path wU>     wV>    @@@@@ఐĠ$decl wb>     wc>    @@@@@ఐ(to_check wo>     wp>    "@@@@ `1@@J@  ]@@J@  \@J@  [@@@@ f@@H@  cI@  G@ఐ/check_coherence wA     wA    @땰@@@
@@H@  m@ o@@H@  l@ @@H@  k@@@H@  j f@@H@  i@H@  h@H@  g@H@  f@H@  e8@@ఐU#env wA     wA    @;@@(E@@ఐO#loc wA     wA    @7@@R@@ఐ:$path wA     wA    @"@@_@@ఐ6$decl wA    q@r@@k@@Ns@@l@t@@m@u@@n@ v@@@@A9wA@  0  w w w w w w w w@6@@@@ALyA@  0  w w w w w w w w@I@@@@A_{A@  0  w w w w w w w w@\@@@@Ar}A@  0  w w w w w w w w@o@@@@AA@@@ @    0  w w w w w w w w@@@@@@@Р v&Format wF     wF    @@	  0  w w w w w w w w@@@ x
@@@@A  0  w w w w w w w w@@@ wF    @@@  0  w w w w w w w w@	@@@ࠠ3explain_unbound_gen xH     xH    @@@@ OU&Format)formatter@@ @  NH@  @%Types)type_expr@@ @ H@  @o8@ @  UI@   @@ @  -H@   @@
H@  L!)type_expr@@ @  H@  MA @  NH@  @&stringO@@ @ H@  @@K@@ @  LH@ F@2H@ B$unitF@@ @  MH@ E@ @ R@ @ QH@  H@  @ @  H@  @ @  H@  @ @  	H@  @ @  H@  @ @  H@  @ @  H@    0  xk xj xj xk xk xk xk xk@v@@@@#ppf x{H     x|H    @@@l  0  xy xx xx xy xy xy xy xy@x xH     xQ    @@@@@@"tv xH     xH    @@@r  0  x x x x x x x x@ @@ x@@@@@"tl xH     xH    @@@u  0  x x x x x x x x@@@ x@@@@@#typ xH     xH     @@@x  0  x x x x x x x x@@@ x@@@@@#kwd xH    ! xH    $@@@w  0  x x x x x x x x@@@ x@@@@@"pr xH    % xH    '@@@|  0  x x x x x x x x@@@ x@@@@@ࠠ"ti xJ  0  8 xJ  0  :@@@H@    0  x x x x x x x x@!@@ x@@@డ w$List$find xJ  0  = xJ  0  F@p@@@@p@@I@  #@I@  "@p@@I@  !@I@  @I@    0  y y y y y y y y@ @@@@@"ti yJ  0  L yJ  0  N@@@@@డ d*deep_occur%Ctype y&J  0  R y'J  0  b@Q@@@Q@@J@  =@O@@J@  <M@@J@  ;@J@  :@J@  9  0  y1 y0 y0 y1 y1 y1 y1 y1@N)@ @ yJ@@@@ఐ"tv yDJ  0  c yEJ  0  e@@@0H@  rH@  yH@  IH@  JH@  @@ఐ#typ y\J  0  g y]J  0  j@@@$H@  
*@@ఐW"ti yjJ  0  k ykJ  0  m@4@@0I@  49@@ ypJ  0  f yqJ  0  n@@2<@@M@@p@@J@  TJ@  SB@@A yyJ  0  G yzJ  0  o@@@Mp@@J@  /@J@  .J@  V@@ఐ"tl yJ  0  p yJ  0  r@ٰ@@dH@  XH@  @@@@T@@ yJ  0  4@@@ࠠ#ty0 yK  v  ~ yK  v  @@@@@ @  eI@  [  0  y y y y y y y y@@@ y@@@డ h(newgenty%Btype yL     yL    @:@@@:@@I@  _8@@I@  ^@I@  ]@@ภ'Tobject yL     yL    @ SఐK"tv yL     yL    @3@@1@డ x#ref yL     yL    @ Q+@@@ S S@@J@  v S m@@J@  x@@J@  w@J@  u@@J@  tJ@  J@  J@  } Q?@@J@  |@J@  {\@@ภ$None zL     z
L    @ n@@@(J@  j@@0@@ S,@@J@  sJ@  J@  s@@ zL     zL    @@@@J@  fJ@  q{@@l@@|@@ z$K  v  z	@@డ(Printtyp9reset_and_mark_loops_list(Printtyp z5M     z6M    @@$listI@@ @  @@ @  $unitF@@ @  @ @  @3typing/printtyp.mli b

 b
@@(Printtype@@@@@I@  @@I@  
@@I@  @I@    0  zX zW zW zX zX zX zX zX@@@ zq@@@@ภ <l zhM     ziM    A <jఐȠ#typ ztM    @@@9@@ఐ"ti zM    	 zM    @ٰ@@&@@@@HH@  H@  $H@  H,@ภ < zM    
&A <ఐ#ty0	 zM    @9@@J@  ,J@  /J@  .B@ภ ;
;A N@<A@ z)
@@J@  -J@  5N@@CA@ z0)@@J@   J@  +U@@ zM    K@@|w@@J@  J@  ]@@R@@ j@@H@  8I@  c@డ'fprintf zN     zN    @@@@ @  
@&Stdlib&format!a @  ~@@ @  |@@ @  @@ @  

@ @  	@ @  @*format.mli        W@@.Stdlib__Format &%@@@@@H@  @@#@@H@  R@@@H@ @H@  [H@ H@ @H@ @H@ H@  X@H@  \@H@  ]H@  Y@H@  ZH@  V@H@  WH@  S@H@  TH@ @H@ H@  <@@H@  >@@H@  ?@@H@  =4@H@  ;@H@  :@@ఐ#ppf {7N     {8N    "@@@*H@  +H@  @@ภ8CamlinternalFormatBasics&Format {HO  #  ) {IO  #  cA  < &Format8CamlinternalFormatBasics'format6!a @  !b @  !c @   !d @  !e @  !f @  @@ @  @'#fmt$ @@ @  0@@ @  @B@@AA@A<camlinternalFormatBasics.mli644644@@@8 ภJ,Char_literalH  < ,Char_literal!a @  !b @  !c @  !d @  !e @  !f @  @@ @  @$charB@@ @  G)%!@@ @  @BLAY@AA@ %%A %%@@@w ln@@@I@  nI@  qI@  pv@ภ.Formatting_lit  < .Formatting_lith!a @  X!b @  Y!c @  Z!d @  [!e @  \!f @  ]@@ @  @.formatting_lit@@ @  ($ @@ @  @BQAY@AA )()( ))@@@ qภ%Break  < %Break@@ @  @@@ @  #intA@@ @  @@ @  @C@GCJ@A|		|		9@@@ @"@ @@@@I@  I@  I@  @A@$@@I@  I@  I@  @@@(@@I@  I@  I@  @@
@Y@@I@  I@  @ภ.Formatting_gen  < .Formatting_gen"a1 @  a!b @  b!c @  c"d1 @  d"e2 @  e"f2 @  f@@ @  "e1 @  h"f1 @  i@A.formatting_gen.*&"@@ @  &40($@@ @  @BRAY@AA ))  *>*@@@V rภh(Open_boxf  < (Open_box"!a @  !b @  !c @  !d @  !e @  !f @  @@ @  @"@@ @  @AA@B@AAW H
Q
SX I

@@@ Oภ&Formatภ.String_literal  < .String_literalz!a @  	!b @  
!c @  !d @  !e @  
!f @  @@ @  @@@ @  '#@@ @  @BKAY@AA $}$} $%@@@ k&<hov2>@@@@I@  I@  I@  @ภ-End_of_format  < -End_of_formatà!f @  !b @  !c @  !e @  @@ @  5@@@@AY@AA.../!@@@ y@
@`H@  Q
H@  ZH@  lH@  H@  I@  I@  I@  ؠH@  [H@  mH@  I@  I@  I@  I@  ٠H@  I@  I@  @@I@  I@  !@@7@
*'@@I@  I@  ,@&<hov2>G@G@@@I@  I@  I@  8@@N@KA</0&#@@I@  I@  C@@Y@LE891.@@I@  I@  N@ภliŠ#In n@n@@@I@  I@  I@  _@ภ}&String{  < &StringQ!x @  !b @  !c @  !d @  !e @  !f @  @@ @  à!a @  @'padding)@@@ @  @ @  @@ @  Ġ0,($ @@ @  @BBAY@AA~  Z|@@@ bภ*No_padding  < *No_padding#!a @  M@@ @  Y@@@@AB@AAee@@@j@@3Ƞ'@@I@ I@ @ภPOภ@@@@I@ 5I@ 9I@ 8@A@@@I@ 6I@ ;I@ :@@ @"@@I@ 7I@ =I@ <@@@S@@I@ ,I@ 4@ภ%Alpha  < %Alpha@@!b @  H@!x @  D!c @  G@ @  
@ @  @
!a @  C@ @  @ @  
!d @  I!e @  J!f @  K@@ @  	@+"@@ @  @AOAY@AA '' (.(j@@@F oภXUàภ]Z(@;<1 -2>_@_@@@I@ nI@ rI@ qP@Aj@@@I@ oI@ tI@ s[@ u@@@I@ pI@ vI@ uf@@|@@@I@ eI@ mk@ภ-the variable @@@@I@ I@ I@ |@ภภ+ is unbound@@@@I@ I@ I@ @ภภ)Close_box  < )Close_box@@@@GCJ@Ayz	 zz	@@@~@@@@I@ I@ @ภ@@H@  H@ H@ *H@ LH@ H@ +H@ M@@I@ I@ @@@
@@I@ I@ @@@#Ǡ@@I@ I@ @@@Ƞ5.&Ҡ()@@I@ I@ @@@Ӡ@91ݠ34@@I@ fI@ @@@ޠKD<>?@@I@ XI@ d@@@`MEGH@@I@ -I@ S@@@mVNPQ@@I@ I@ )@@)@_	 @@I@  I@ @@4@
 @@I@  I@  )@@?@2)@@I@  I@  4@@J@ =2%&'(@@I@  oI@  ?@@U@+H;./01@@I@  \I@  kJ@	8.@ @[<hov2>In %s@ %a@;<1 -2>the variable %a is unbound@]e@e@1@@I@  ]I@ I@ V@@lk@@[S@@I@  KI@  Y_@@ఐ	#kwd P  d  j P  d  m@@@|H@  m@@ఐ"pr P  d  n P  d  p@@@~H@  {@@ఐ"ti P  d  q P  d  s@;@@@@డ0marked_type_expr(Printtyp P  d  t P  d  @@&Stdlib&Format)formatter@@ @  @@@ @  @@ @  @ @  @ @  @ e22 e2f@@g@@H@ @@ఐ"tv P  d   P  d  @y@@@@V@@@@@@@@z@@@9@Ġ)Not_found *Q     +Q    @ @@@@ y@@K@ G@@ภ r 5Q    @ r@@@H@ P@@ :I  *  ,@@R@@AjA@  0  7 6 6 7 7 7 7 7@g@@@@A}A@  0  9 8 8 9 9 9 9 9@z@@@@AA@  0  ; : : ; ; ; ; ;@@@@@AA@  0  = < < = = = = =@@@@@AA@'  0  ? > > ? ? ? ? ?@@@@@AA@@4+@ @   0  C B B C C C C C@@@@@@@ڠ@ࠠ/explain_unboundߠ US     VS    @@@@J@@ @ ^H@ @F@@ @ ]H@ @wy W/ @ 1@@ @ \H@ @@
^@@ @ 6H@ [A @ ZH@ @;@@ @ YH@ @@$H@ /J@@ @ H@ 0A @ 1H@  8@@ @ UH@ !@ @ "H@ @ @ H@ @ @ H@ @ @ 
H@ @ @ H@ @ @ H@   0         @@@ @@@@#ppfᠰ S     S    @@@X  0         @d S     W  V  [@@@@@@"tv⠰ S     S    @@@b  0         @ n@@ @@@@@"tl㠰 S     S    @@@j  0         @v@@ @@@@@#typ䠰 S     S    @@@p  0         @~@@ @@@@@#kwd堰 S     S    @@@r  0         @@@ @@@@@#lab栰 S     	S    @@@z  0         @@@ @@@@ఐ	
3explain_unbound_gen T     T    @u@@@		@@H@ 8@	@@H@ 7@x0@@H@ 6@@@@H@ 5AH@ 4@@@H@ 3@@	)@@H@ 2@@@H@ .@H@ 0@H@ /@H@ -@H@ ,@H@ +@H@ *@H@ )@H@ (  0  @ ? ? @ @ @ @ @@;G@>@ Y@@@@ఐ#ppf ST     TT    @@@H@ aH@    0  T S S T T T T T@@@@@ఐ"tv dT     eT    @@@H@ bH@ @@ఐ"tl tT     uT    @@@H@ cH@ !@@ఐ#typ T     T    @@@H@ d/@@ఐ#kwd T     T    @@@H@ eH@ ?@@@#ppf砰 U     U    	@@@	@@J@ pf@@@"ti蠰 U    
 U    @@@#H@ u  0         @u	@@ @ o@@ @@@@డ	'fprintf V     V    @ @@@	@@I@ @ @A@@	@@I@ I@ @nI@ I@ 	@@I@ <I@ I@ @I@ 
@I@ 	I@ @
I@ @I@ I@ @I@ I@ @I@ I@ 	@@I@ 	@@I@ @@I@ 0@I@ @I@ ~  0           @N[Q@R@ @@@@ఐs#ppf V     V    "@[@@
@@J@ J@ J@ @@ภ߰ &V    # 'V    )Aޠภlkภ'
&@
@IaI@ a@@J@ J@ 4@ภภ @@ӠQlI@ I@ I@ gI@ I@ I@ @@J@ J@ S@@4@@@J@ J@ ^@@?@2@@J@ J@ i@$%s%aO@O@@@J@ J@ J@ u@@VU@@@@J@ J@ ~@@ఐ#lab V    + V    .@K@@H@ #@@ఐ"ti V    / V    1@@@H@ y@@ V    * V    2@@@@డ0marked_type_expr(Printtyp V    3 V    L@@@I@ 3@@ఐ⠐#typ V    N V    Q@ʰ@@L@@ఐ "ti V    R V    T@˰@@?@@ V    M V    U@@Z@@@@
r@@I@ >I@ =@@A)A@@o
z@@I@ E@I@ DI@ B  0         @,@@@@A U    /@@@
@@I@ X@~Q@I@ W@I@ VI@ G@@9@@R@@A:A@d  0         @@@@@A<A@o  0         @@@@@A>A@  0         @@@@@A$@A@  0         @!@@@@A7BA@  0         @4@@@@ALDA@@@ @ W  0         @K@@@@I@IH@^@ࠠ6explain_unbound_single Y  ]  a 
Y  ]  w@@@@@@ @ 5H@ Y@
@@ @ 4H@ `@@@ @ H@ g
@@ @ MH@ h@ @ iH@ a@ @ bH@ Z@ @ [H@ X  0  * ) ) * * * * *@@@ C@@@@#ppf렰 =Y  ]  x >Y  ]  {@@@-  0  ; : : ; ; ; ; ;@9 DY  ]  ] El  x  @@@@@@"tv젰 PY  ]  | QY  ]  ~@@@7  0  N M M N N N N N@ C@@ g@@@@@"ty aY  ]   bY  ]  @@@?  0  _ ^ ^ _ _ _ _ _@K@@ x@@@@@ࠠ'trivial rZ     sZ    @@@@Z@@ @ I@ o@@ @ I@ p@ @ qI@ n  0  ~ } } ~ ~ ~ ~ ~@ ,a@#@ @@@@"ty Z     Z    @@@  0         @' Z     [    @@@@@ఐN/explain_unbound [     [    @t@@@@@I@ @@@I@ @z<I@ @@I@ @@@@I@ AI@ @s@@I@ @@z@@I@ AI@ ~f@@I@ }@I@ |@I@ {@I@ z@I@ y@I@ x@I@ w  0         @>J[@A@ @@@@ఐ#ppf [     [    @@@H@ 8H@ H@ H@ H@ H@ \  0         @@@@@ఐ"tv [     [    @@@H@ 9H@ H@ H@ H@ AH@ H@ H@ c@@ภ F [     [    A Fఐ"ty
 [    @I@@jI@ r2@ภ E`	A XA@
A@ u@@J@ J@ >@@ ,[    @@{8}@@J@ J@ F@@@!t @[     A[    @@@r@@ఐ!t J[     K[    @@@ ^@@0@@J@ J@   0  O N N O O O O O@
@@@@A W[     X[    @@@<@@J@ @J@ J@ u@@$type j[     k[    @@ m[     n[    @@$@@J@ J@ J@ @@@ wB@ [     [    @@@@  [    @@ [     [    @@>@@J@ J@ @@A [    @@@G@@J@ @J@ J@ @@@@@@AA@@$@ @   0         @@@@@	@డ p$repr%Ctype \     \    @ G@@@ G@@J@  G@@J@ @J@   0         @9OI@J@ @@@@ఐl"ty \     \    @F@@H@ H@ H@ H@ NH@ OH@ H@ H@ j @@ \     \    @@ xe@@I@  @ (@$desc \     \    @ h_@@ h[@@ @ 2@Ġ'Tobject ]     ]    	@ ^Ԡࠠ"fi  ]    
 ]    @@@ x@@ @   0           @K@@@@ 
]    
 ]    @@ ^ ^ޠ ^@@K@  ^ڠ x@@K@ @@K@ @K@ @@K@ @@K@ @@@, #]    @@ h@@K@ !@@!@@@ࠠ"tl 4^     5^     @@@ ^| ^{@@ @ + ^z@@ @ , ^x@@ @ -@ @ *@@ @ )J@   0  F E E F F F F F@QK@L@ _@@@ࠠ"rv V^    " W^    $@@@ ^@@ @ .J@ @@ _^     `^    %@@-@ @ @డ qF.flatten_fields%Ctype q^    ( r^    <@ ^@@@ ^@@J@  ^ ^@@J@  ^@@J@  ^@@J@ @J@ @@J@  _@@J@ @J@ @J@ G@@ఐ"fi ^    = ^    ?@Q@@ ^@@K@ /K@ 1K@ 0[@@6
@@HJ@ (^@@ ^    @@డ {"== _  C  O _  C  Q@@!a @ u@ v#@@ @ t@ @ s@ @ r#%eqBA {@@@@ {  { @@ {Z@@@I@ 8@@@I@ 7@I@ 6@I@ 5  0         @@@ @@ @@@@ఐ"rv _  C  L _  C  N@@@@@ఐ"tv _  C  R _  C  T@@@!@@@@ u@@I@ CJ@ @'@ఐ'trivial _  C  Z 	_  C  a@M@@@
@@I@ G
@@I@ F@I@ E;@@ఐ"ty _  C  b _  C  d@@@PH@@@@I@ఐ֠/explain_unbound +`  j  p ,`  j  @@@@@@I@ a@@@I@ `@}C  @@I@ I@  _@@I@ -@@I@ I@ @I@ I@ [@@I@ _@@5@@I@ ^AI@ ]@@@I@ \@@'@@I@ ZAI@ Y@@I@ X@I@ W@I@ V@I@ U@I@ T@I@ S@I@ R@@ఐ=#ppf v`  j   w`  j  @#@@  0  t s s t t t t t@@@@@ఐ8"tv `  j   `  j  @ @@@@ఐ]"tl `  j   `  j  @@@}^@@J@ J@ J@ #@@@ yh@ `  j   `  j  @@i  0         @@@@@ `  j   `  j  @@i@ࠠ!t `  j   `  j  @@@o@@ `  j   `  j  @@zw@L@ @@ఐ!t `  j   `  j  @@@ @@@@J@ J@   0         @"
@@@@A `  j   `  j  @@@@@J@ @J@ J@ i@@&method a     a    @@ a     a    @@@@J@ J@ J@ K@@@ yࠠ#lab a     a    @@@2@@ 
a     a    @@7@@ a     a    @@<@@ a     a    @@ؠӠ@L@ D@@డ !^ %a     &a    @ !@@@ !@@J@ @ !@@J@  !@@J@ @J@ @J@   0  0 / / 0 0 0 0 0@^4@/@ I@@@@ఐ<#lab Ca     Da    @@@@@":  Na     Oa    @@ Qa     Ra    @@ !@@K@ K@ K@ %@@	@@@@J@ J@ +@@A aa     ba    @@@*@@J@ @J@ ~J@ @@B@@CJ@ }@ p_  C  I@@E@@@F'@Ġ(Tvariant |b     }b    @ cࠠ#row b     b    @@@ c@@ @ @@@@@ j@@K@ @@@@@ࠠ#row c     c    @@@ c@@ @ J@   0         @"@@ @@@డ v(row_repr%Btype c     c    @ c@@@ c@@J@  c@@J@ @J@ @@ఐA#row c     c    @%@@ c@@K@ K@ K@ /@@ 
@@30@@ c    @@డ "== d     d    @(@@@I@ @&@@I@ @I@ @I@   0         @JWQ@R@ @@@@ఐa#row d     d    @@@ dn@@J@  @ @(row_more d     d    @ c@@@@ఐǠ"tv d     d    !@@@,@@@@ w@@I@ J@ 2@ఐ'trivial %d    ' &d    .@j@@@	@@I@ @@I@ @I@ F@@ఐݠ"ty :d    / ;d    1@@@iS@@@@H@ V@ఐ/explain_unbound Je  7  = Ke  7  L@@@@;@@I@ @3@@I@ @b c@@I@ > u)row_field@@I@ ZI@ ?@I@ =I@ @@I@ @@P@@I@ AI@ 
@)@@I@ @@#0@@I@ 
AI@ 	@@I@ @I@ @I@ @I@ @I@ @I@ @I@ @@ఐX#ppf e  7  M e  7  P@>@@  0         @@@@@ఐS"tv e  7  Q e  7  S@;@@@@ఐ#row e  7  T e  7  W@İ@@ e"@@J@ @ @ ;"@*row_fields e  7  X e  7  b@ d^@@ʠh@@J@ 3J@ AJ@ <1@@@ {
ࠠ"_l f  c  q f  c  s@@@x  0         @@@@ࠠ!f f  c  t f  c  u@@@@@ f  c  p f  c  v@@@L@ I@@డ x.row_field_repr%Btype f  c   f  c  @@@@ @%_ v$)row_field@@ @%^@ @%]@ x B		 x B		@@ xR@@@@@K@ S@@K@ R@K@ Q  0   
 
     @+D@?@ (;@6@ *@@@@ఐC!f $f  c   %f  c  @@@@@/@@'@@ @ Y@Ġ(Rpresent 5g     6g    @  < (Rpresent d@@ @
v@ | |@@ @
n@@ @
m@A@ABC@A | [_ | [{@@@ |cĠ$Some Qg     Rg    @ ~ࠠ!t Zg     [g    @@@ |@@ @ f  0  [ Z Z [ [ [ [ [@M@@@@@ bg     cg    @@' |@@M@ h@@M@ g@@@7	@@k@@M@ i@@@@ఐ!t vg     wg    @@@  @@\@@K@ K@   0  { z z { { { { {@n,
@@@Ġ'Reither h     h    @  < 'ReitherW@ |@@ @
o }! }@@ @
q@@ @
p |@@ @
r l#ref | e=@@ @
u@@ @
t@@ @
s@DAABC@A }2 |~ }3 |@@@ }Pd@ h     h    @@+@@M@ t  0         @@@@Ġ C` h     h    A KǠࠠ!t	 h    @@@ }U@@ @ z@Ġ C@
A ]@@A@ [ }a@@M@ @@M@ !@@@ h    @@L }j@@M@ @@M@ *@@ h     h    @@O@@M@ 2@@ h     h    @@RP e@@M@ @@M@ @@M@ B@@@v h    @@@@M@ G@@G@@ఐ?!t 
h     h    @@@A@ !@@K@   0         @L@@@Ġ'Reither  i     !i    @@ %i     &i    @@@@M@ @ࠠ"tl
  1i     2i    @@@ }@@ @ @@ @ (@@ >i     ?i    @@@@M@ 0@@ Fi     Gi    @@ e@@M@ @@M@ @@M@ @@@@4 Ti    @@T@@M@ E@@E@@డ y(newgenty%Btype di      ei    @@@@@@K@ @@K@ @K@   0  j i i j j j j j@]D>@?@ @@@@ภ&Ttuple |i     }i    @ڠఐU"tl i     i    @@@ ~@@L@ @@L@ L@ L@ %@@ i     i    @@@@L@ L@ -@@9@@"K@ 0@@ j    % j    &@@@@M@ @@@@డ y(newgenty%Btype j    * j    8@9@@@9@@K@ 7@@K@ @K@ @@ภ&Ttuple j    : j    @@(ภ ^ j    B@ ^@	@@/ ~^@@L@ @@L@ L@ @@ j    9 j    C@@`@@L@ L@ @@0@@kK@ @@A f  c  z@@@@J@ JJ@ I  0         @@@@@A f  c  k j    D@@@@@J@ 2@J@ 1J@ Lh@@$case k  E  N k  E  R@@ k  E  M k  E  S@@@@J@ 0J@ OJ@ N7@@@ }
ࠠ#lab
 !k  E  Z "k  E  ]@@@:@@ 'k  E  ^ (k  E  _@@?@@ *k  E  Y +k  E  `@@Π@L@ WF@@డ !^ 9k  E  h :k  E  i@ %ǰ@@@ %@@J@ a@ %@@J@ ` %@@J@ _@J@ ^@J@ ]  0  D C C D D D D D@`.@)@ ]@@@@!` Uk  E  e Vk  E  f@@ Xk  E  d Yk  E  g@@ %@@K@ mK@ oK@ n@@డ 2!^ mk  E  n nk  E  o@ %@@@ %@@K@ u@ %@@K@ t %@@K@ s@K@ r@K@ q4@@ఐf#lab k  E  j k  E  m@>@@)A@@$ of  k  E  q k  E  u@@ k  E  p k  E  v@@ &@@L@ L@ L@ U@@	@@ &$@@K@ lK@ L@ ]@@O@@Z@@J@ J@ c@@A k  E  T k  E  w@@@Wd@@J@ /@J@ .J@ @@o@@}J@ -'@ d    @@)@@@@@ l  x  | l  x  }@@ o7@@K@ @@@@ఐ`'trivial l  x   l  x  @@@@@@I@ r@@I@ @I@ "@@ఐ"ty l  x  @c@@.@@@@H@ 1@@A \    @@  0         @3@@@X@@m@@AA@  0         @@@@@AA@  0         @@@@@AA@@@ @   0         @@@@@@@ʠ@ࠠ2tys_of_constr_args
 o     o    @@@@ V@@ @ H@  T @@ @ @@ @  H@ @ @ H@   0         @		
@	@ -@@@@ ~
	Ġ%Types*Cstr_tuple *p     +p    @ Uࠠ"tl
 3p     4p    @@@ U @@ @ @@ @   0  8 7 7 8 8 8 8 8@%> Ao     Bq    @@@@@@@@7@@ఐ"tl Kp     Lp    @@@ _@@>  0  K J J K K K K K@#@@@Ġ%Types+Cstr_record \q     ]q    @ Sࠠ$lbls
 eq     fq    @@@ S a@@ @ @@ @   0  j i i j j j j j@2@@@@@@@d@@డ @$List#map }q     ~q    @ z@@@@ a @@I@  I@ 
xH@ I@ @I@ @ z@@I@ 	 z
@@I@ @I@ @I@   0         @[82@3@ @@@@@!l
 q     q    @@@'@@ఐ!l q     q     @3@
@ @@7I@ I@   0         @&@@@%Types'ld_type q     q    @ X@@<@@A q     q    @@@JE@J@ J@ "  0         @7@@@@ఐt$lbls q    @A@@ zm^@@J@ J@ %J@ #L@@g@@H@ @@A o    @@@@ @ 0  0         @@@@@@@Ӡ@ࠠ,report_error
 s     s    &@@@@@@ @ OtH@ 2@ @@ @ <H@ 9@@ @ AH@ :@ @ ;H@ 3@ @ 4H@ 1  0         @
@@ %@@@@#ppf
 s    '  s    *@@@$  0         @@@@@@ 
Ġ2Repeated_parameter .t  6  : /t  6  L@ b@@@@(  0  , + + , , , , ,@!6@@ E	@@@@డM'fprintf >u  P  V ?u  P  ]@u@@@/@@I@ 4@u?I@ 0:@@I@ 2@@I@ 3@@I@ 1@I@ /@I@ .%@@ఐE#ppf `u  P  ^ au  P  a@/@@/H@ OH@ NH@ NH@ MH@ MH@ KH@ KH@ IH@ IH@ HH@ HH@ F~H@ FH@ EiH@ ElH@ DTH@ DWH@ CyH@ C|H@ BH@ BH@ A}H@ AH@ @H@ @H@ ?$H@ ?-H@ =DH@ =SH@ ;H@ ;H@ :H@ :H@ 9qH@ 9zH@ 6-H@ 6<H@ 3H@ 3H@ 1H@ 1H@ />H@ /PH@ -H@ -H@ ,H@ ,H@ ,H@ ,H@ +H@ +H@ *H@ *H@ *QH@ *TH@ )H@ )H@ )_H@ )bH@ 'H@ 'H@ &sH@ &vH@ %IH@ %LH@ $H@ $H@ #TH@ #WH@ "H@ "H@ !-H@ !0H@ H@   H@ H@ H@ H@ H@ H@ H@ 4H@ 7H@ H@ H@ H@ H@ 
H@ 
H@ iH@ uH@ H@ H@ H@ 	H@ 	rH@ 	{H@ H@ H@ BH@ EH@ 5@@ภ 6u  P  b 7u  P  AภSR	%A type parameter occurs several times
@
@7@@J@ J@ J@ @ภ
@@ݠD@@J@ @J@ zJ@ I@ {I@ @@J@ J@ 2@@.@
@@J@ |J@ =@	%A type parameter occurs several times>@>@@@J@ }J@ J@ I@@ED@@5)t@@J@ ?J@ yR@@FM@@vS@Ġ5Duplicate_constructor v     v    @ =ࠠ!s
 v     v    @@@ p@@ @ ?  0         @j@@@@@@@@@డ'fprintf w     w    @ݰ@@@@@I@ @ݠ@h@@I@ 	1H@ I@ 	I@ 	%@I@ 	0I@ @@I@ ]@@I@ @@I@ @I@ @I@   0         @:4@5@ 
@@@@ఐ#ppf w     w    @@@s@@ภ w     w    Aภ;Two constructors are named 
@
@@@J@ 	J@ 	J@ 	,@ภ98ภ@@QI@ ̠Q@@J@ 	/J@ 	9>@ภ+@+@W@@J@ J@ 	J@ 	J@ 	-dI@ 	I@ 	.@@J@ 	2J@ 	CZ@@B@$
@@J@ 	J@ 	,e@@M@/yz{|@@J@ 	J@ 	p@=Two constructors are named %s]@]@@@J@ 	J@ 	EJ@ 	D|@@dc@@u4@@J@ J@ 	@@ఐà!s Xw     Yw    @@@J@ 	Y@@@@@Ġ5Too_many_constructors fx     gx    @ ;@@@@`@@డ'fprintf ry      sy    @@@@c@@I@ 	d@@a@@I@ 
Z@<@@I@ 
H@ 	qI@ 	I@ 
@I@ 
I@ 
L@I@ 
YI@ 	`@@I@ 	b1@@I@ 	c@@I@ 	a@I@ 	_@I@ 	^@@ఐ#ppf y     y    @v@@?@@ภmk z     z    QAjภu[Zภz
ภyภ@@WNI@ 	u@@J@ 	pJ@ 	J@ 	J@ 	J@ 	QJ@ 	J@ 	J@ 	VI@ 
J@ 	gJ@ 	@@J@ 	J@ 	M@ <@<@r@@J@ 	J@ 	J@ 	Y@@C@,)@@J@ 	J@ 	d@@N@t72'(&#@@J@ 	J@ 	o@ภ%^$	"Too many non-constant constructorsc@c@	@@J@ 
J@ 
	J@ 
@ภHoGภtx@x@@@J@ 
#J@ 
'J@ 
&@A@@@J@ 
$J@ 
)J@ 
(@@@@@J@ 
%J@ 
+J@ 
*@@@K@@J@ 
J@ 
"@ภfe.-- maximum is @@J@@J@ 
<J@ 
?J@ 
>@ภ#Int  < #Int!x @  !b @  !c @  !d @  !e @  !f @  @@ @  ͠!y @  !a @  @D(int_conv@@ @  Π2@@ @  ϠP)precision@!@@ @  @ @  @@ @  Р6!A=951@@ @  @DDAY@AA/ %%0 @@@f dภx%Int_i  < %Int_i/@@ @  @@@@CP@P@A?U@U@@@vH@@9@@J@ 
VJ@ 
_1@ภ @ @	ZI@ 
hJ@ 
I@@J@ 
WJ@ 
d@@ภ,No_precision0  < ,No_precisionG!a @  j@@ @  t@@@@BA@AAilLNjlLq@@@o@@@Wv@@J@ 
XJ@ 
k]@ภoLn`P@R@@J@ 
|J@ 
J@ 
~m@ภL\Kภa@a@)I@ 	x@@J@ 
J@ 
@ภGnFภ+s*@s@)@@J@ 
J@ 
@ภ}@}@oJ@ 
J@ 
J@ 
:J@ 
TJ@ 
zJ@ 
J@ 
kI@ 
I@ 
;I@ 
UI@ 
{I@ 
I@ 
p
@@J@ 
J@ 
@@@ɠ"{@@J@ 
J@ 
@@@K+ @@J@ 
}J@ 
@@@4&()@@J@ 
[J@ 
y@@@=/12@@J@ 
=J@ 
S@@@
F8:;@@J@ 
J@ 
9@@@O@@J@ 
J@ 
@@@#Ǡ@@J@ 	J@ 
@@@.נР@@J@ 	J@ 	@	;@[Too many non-constant constructors@ -- maximum is %i %s@]@@4@@J@ 	J@ 
J@ 
@@@@=,@@J@ 	oJ@ 	$@@డ  >+ >- {  R  j {  R  k@ >*@@@ >*@@J@ 
@ >'@@J@ 
 >&@@J@ 
@J@ 
@J@ 
?@@డ >'max_tag&Config {  R  [ {  R  i@ >@@ >I@@K@ 
K@ 
K@ 
V@@A {  R  l {  R  m@@ >Q@@K@ 
K@ 
K@ 
f@@ {  R  Z {  R  n@@K@ 
k@@9non-constant constructors {  R  p {  R  @@ {  R  o {  R  @@J@ 
z@@@@{@Ġ/Duplicate_label |     |    @ d,ࠠ!s

 '|     (|    @@@ @@ @ C  0  ( ' ' ( ( ( ( (@@@@@@@@&@@డG'fprintf 8}     9}    @o@@@)@@I@ 
@o@@@I@ kDH@ I@ ?I@ _@I@ jI@ 
?@@I@ 
@@I@ 
@@I@ 
@I@ 
@I@ 
  0  V U U V V V V V@+:4@5@ o@@@@ఐN#ppf i}     j}    @8@@@@ภ/- t}     u}    A,ภ75Two labels are named 
@
@u@@J@ RJ@ UJ@ T,@ภHʠภM@@QI@ Q@@J@ iJ@ s>@ภZk+j@+@-W@@J@ J@ >J@ PJ@ gdI@ QI@ h@@J@ lJ@ }Z@@B@D$
@@J@ SJ@ fe@@M@O/yz{|@@J@ @J@ Op@7Two labels are named %s]@]@U@@J@ AJ@ J@ ~|@@dc@@4@@J@  J@ =@@ఐà!s }     }    @@@J@ @@@@@Ġ0Recursive_abbrev ~     ~    @ 	ࠠ!s
 ~     ~    @@@ @@ @ F  0         @@@@@@@@ @@డ!'fprintf          @I@@@@@I@ @I@@@I@ H@ I@ I@ @I@ I@ @@I@ @@I@ @@I@ @I@ @I@   0  0 / / 0 0 0 0 0@:4@5@ I@@@@ఐ(#ppf C     D    @@@@@ภ	 N     O    "Aภkj6The type abbreviation 
@
@O@@J@ J@ J@ ,@ภ"ภ'`_@@QI@ Q@@J@ J@ >@ภ4+* is cyclic0@0@r@@J@ -J@ 0J@ /O@ภEV<U@<@h@@J@ J@ J@ J@ J@ +yI@ I@ I@ ,@@J@ .J@ :o@@W@3@@J@ J@ *z@@b@>D"@@J@ J@ @@m@IO+@@J@ J@ @	"The type abbreviation %s is cyclic}@}@O@@J@ J@ <J@ ;@@@@A@@J@ J@ @@ఐ㠐!s     #     $@@@J@ P@@@@@Ġ,Cycle_in_def   %  )   %  5@ Kࠠ!s
   %  7   %  8@@@ @@ @ J  0         @@@@ࠠ"ty
 	  %  : 
  %  <@@@ @@ @ K@@@   %  =@@@@డ)'fprintf   A  G   A  N@Q@@@@@I@ [@Q@@@I@ 
-@@$@@I@ gI@ 
t@ )type_expr@@I@ 
I@ pI@ 
p<H@ hI@ 
s@I@ 
@I@ 
I@ m@I@ q@I@ rI@ n@I@ oI@ 
!@I@ 
,I@ W@@@I@ Y@@I@ Z@@I@ X5@I@ V@I@ U  0  W V V W W W W W@-hb@c@ q
\V@W@ s@@@@ఐR#ppf m  A  O n  A  R@<@@@@ภ31 x  A  S y  A  A0ภ;! ภ@
נภE?ภJ#<v>@@@@J@ J@ J@ >@ภ[l(k@(@.}I@ lxI@ I@ J@ J@ J@ rI@ J@ J@ J@ J@ 
I@ 
J@ J@ @@J@ J@ 
e@@J@P"@@J@ J@ p@#<v>Z@Z@V@@J@ J@ 
J@ 
|@@a@94+,&#@@J@ J@ @@l@XD=451.@@J@ J@ @ภ	|2The definition of @@@@J@ 
J@ 
J@ 
@ภCBภ@@ j@@J@ 
+J@ 
5@ภ+*2 contains a cycle:@@@@J@ 
FJ@ 
IJ@ 
H@ภNMภ@@@@J@ 
cJ@ 
gJ@ 
f@A@@@J@ 
dJ@ 
iJ@ 
h@@@ @@J@ 
eJ@ 
kJ@ 
j@@@Q@@J@ 
ZJ@ 
b@ภภภgf@@e@@J@ 
J@ 
	@ภ&76@@!I@ 
I@ 
)I@ 
DI@ 
XI@ 
zI@ 
*I@ 
EI@ 
YI@ 
{͠	
@@J@ 
J@ 
*@@@=ؠ@@J@ 
J@ 
5@@@ f%@@J@ 
[J@ 
@@@%@+q.$&'@@J@ 
GJ@ 
WK@@0@6~7-/0@@J@ 
.J@ 
CV@@;@A@@@J@ 
J@ 
(a@@F@L
@@J@ J@ 
l@@Q@W) @@J@ J@ w@	1@[<v>The definition of %s contains a cycle:@ %a@]a@a@]@@J@ J@ 
J@ 
@@hg@@@@J@ fJ@ @@ఐ!s          @@@J@ 
@@డ)type_expr(Printtyp          @@)formatter@@ @  @@@ @  @@ @  @ @  @ @  @ d d1@@f@@I@ 
@@ఐ "ty )     *    @ʰ@@J@ 
@@@@@Ġ3Definition_mismatch 7     8    @ ࠠ"ty
 @     A    @@@ @@ @ P  0  A @ @ A A A A A@	@@@Ġ$None N     O    @ @@@@ ܠ @@K@ V@@K@ U@@@" Y    @@	Q@@డr'fprintf c     d    @@@@T@@I@ 
@@%@@I@ @,@@I@ @@t@@I@ 
I@ Q@P@@I@ I@ 
I@ M	H@ 
I@ P@I@ ]@I@ \I@ 
@
I@ 
@I@ 
I@ 
ݐ@I@ 
I@ @I@ I@ @I@ I@ 
à@@I@ 
Š>@@I@ 
@@I@ 
:@I@ 
@I@ 
  0         @	zpj@k@ @@@@ఐ	#ppf          @	@@	@@@ภ~|           A{ภlkภ#
"ภภ#<v>@@@@J@ cJ@ fJ@ e;@ภ(@(@yI@ 
ؠsI@ I@ -J@ >J@ OJ@ aoI@ J@ .J@ ?J@ PJ@ b
I@ J@ %J@ &@@J@ dJ@ pb@@J@"@@J@ QJ@ `m@#<v>Z@Z@@@J@ RJ@ rJ@ qy@@a@٠94+,&#@@J@ @J@ N@@l@D=451.@@J@ /J@ =@ภ|ߠภภdภ	cb%<hov>@@G@@J@ J@ J@ @ภ+*@@tuI@ J@ J@ J@ kJ@ J@ J@ soJ@ {J@ |@@J@ J@ @@@
@@J@ J@ @%<hov>@@@@J@ J@ J@ @@@F.&$#@@J@ J@ @@@7/.@@J@ J@ @ภgภl@@ǠƠD@@J@ J@ 
@ภxภ}@@@@J@  J@ J@ "@A@@@J@ J@ J@ -@@@@@J@ J@ J@ 8@@ @@@J@ J@ =@ภ+**ภ/@/@I@ 
۠@@J@ J@ &O@ภ&<%ภA'@;<1 2>F@F@@@J@ @J@ DJ@ Ce@AQ@@@J@ AJ@ FJ@ Ep@B\@@@J@ BJ@ HJ@ G{@@c@*@@J@ 7J@ ?@ภm֠ภ\r[ภ@w?@w@>@@J@ pJ@ u@ภkjภON@@M@@J@ J@ @ภ@@I@ I@ I@ I@ 5I@ WeI@ I@ I@ I@ 6I@ Xl@@J@ J@ @@@٠w@@J@ qJ@ @@@
)!"@@J@ cJ@ o@@@2(*+@@J@ 8J@ ^@@@ ;134@@J@ J@ 4@@@+D:<=@@J@ J@ @@@65MCEF@@J@ J@ @@@A@NE@@J@ J@ @@@L̠àŠ@@J@ 0J@ @@@Wޠՠ̠͠Π@@J@ J@ ,)@?@[<v>@[<hov>%s@ %s@;<1 2>%a@]@]@@]@@J@ J@ J@ 5@@@@u^Q@@J@ 
J@ >@@	!This variant or record definition     
     +@@     	     ,@@J@ M@@;does not match that of type     .      I@@     -     J@@J@ \@@డ)type_expr(Printtyp   K  S   K  e@@@I@ n@@ఐ⠐"ty "  K  f #  K  h@x@@J@ }@@@@~@Ġ3Definition_mismatch 0  i  m 1  i  @ ࠠ"ty
 9  i   :  i  @@@ @@ @ [  0  : 9 9 : : : : :@@@@Ġ$Some G  i   H  i  @ ࠠ#err
 P  i   Q  i  @@@ @@ @ `@@@@@  @@K@ b@@K@ a@@@/ _  i  @@W!@@డ!x'fprintf i     j    @@@@!Z@@I@ @@!+@@I@ @!2@@I@ @@!z@@I@ I@ G@V@@I@ I@ I@ CH@ I@ F@I@ S@I@ RI@ @
@@I@ t@ @@I@ I@ I@ pI@ s@I@ ~@I@ }I@ @
I@ ֐@I@ I@ Ӑ@I@ I@ А@I@ I@ ͐@I@ I@ @I@ I@ @I@ I@ !@@I@ !_@@I@ @@I@ U@I@ @I@   0         @@@ ~@@ @@@@ఐ#ppf          @@@`@@ภ          AภภG
Fภภ#<v>@@@@J@ YJ@ \J@ [>@ภ(@(@I@ ȠI@ I@ #J@ 4J@ EJ@ WI@ J@ $J@ 5J@ FJ@ X
I@ zJ@ J@ @@J@ ZJ@ fe@@J@"@@J@ GJ@ Vp@#<v>Z@Z@@@J@ HJ@ hJ@ g|@@a@94+,&#@@J@ 6J@ D@@l@ǠD=451.@@J@ %J@ 3@ภ|ภ#ภ("ภ-%<hov>@@k@@J@ J@ J@ @ภ>ON@@tuI@ yJ@ J@ J@ kJ@ J@ J@ soJ@ q%J@ r@@J@ J@ @@@,
@@J@ J@ @%<hov>@@2@@J@ J@ J@ @@@j.&$#@@J@ J@ @@@47/.@@J@ {J@ @ภ
ภ@@Ơb@@J@ J@ @ภภΠ@@@@J@ J@ J@ %@A@@@J@ J@ J@ 0@@@@@J@ J@ J@ ;@@ @@@J@ J@ @@ภO*Nภ
/	@/@,I@ ˠ@@J@ J@ R@ภJ<IภA'@;<1 2>F@F@@@J@ 6J@ :J@ 9h@AQ@@@J@ 7J@ <J@ ;s@B\@@@J@ 8J@ >J@ =~@@c@N@@J@ -J@ 5@ภ mภ rภ dwc@w@b@@J@ fJ@ k@ภ #ภ (ภ -xw@@v@@J@ J@ @ภ 7HG@@ 
ǠI@ I@ I@ I@ +I@ MjI@ I@ I@ I@ ,I@ Nq@@J@ J@ @@@ (|@@J@ J@ @@@ 3)!"@@J@ gJ@ @@@ >4*,-@@J@ YJ@ e@@@ I9=356@@J@ .J@ T@@@ TFF<>?@@J@ J@ *@@@ _OEGH@@J@ J@ @@@ jcXNPQ@@J@ J@ @@ @ uP^Uà@@J@ |J@ &@@@ ȠܠӠϠՠ@@J@ &J@ x1@@@ ܠݠޠ@@J@ J@ "<@	!@[<v>@[<hov>%s@ %s@;<1 2>%a@]%a@]&@&@ @@J@ J@ J@ H@@-,@@!C@@J@ J@ Q@@	!This variant or record definition $     %    @@ '     (    @@J@ `@@;does not match that of type 3     4    @@ 6     7    @@J@ o@@డ")type_expr(Printtyp G     H    -@C@@I@ @@ఐ"ty V    . W    0@@@J@ @@డ 4report_type_mismatch+Includecore j  1  : k  1  Z@@ g@@ @
@ m@@ @
@ s@@ @
@&Stdlib&Format)formatter@@ @
@ @@ @
$unitF@@ @
@ @
@ @
@ @
@ @
@ @
@ : qEE ; r_@@  A10@@@.@@J@ @-@@J@ @,@@J@ @+@@J@ @ @@J@ $@@J@ @J@ @J@ @J@ @J@ @J@ @@,the original   1  \   1  h@@   1  [   1  i@@Y@@K@ K@ K@  @@$this   1  k   1  o@@   1  j   1  p@@g@@K@ K@ K@ @@*definition   1  r   1  |@@   1  q   1  }@@u@@K@ K@ K@ (@@   1  9   1  ~@@PI@ -@@ఐ#err          @4@@VJ@ <@@@@l=@Ġ1Constraint_failed          @ _(ࠠ#env
          @@@ @@ @ g  0         @@@@ࠠ%trace
 '     (    @@@  @@ @ i@@ @ h@@@" 2    @@*@@డ%M'fprintf >     ?    @"u@@@%/@@J@ @"u @@I@ J@ J@ %?@@J@ $@@J@ @@J@ @J@ @J@   0  V U U V V V V V@,IC@D@ p=7@8@ r@@@@ఐQ#ppf l     m    @;@@@@ภ"2"0 w     x    A"/ภ":! !ภ"? 
 ֠ภ"D ">ภ"I  #<v>@@ @@K@ K@ K@ >@ภ"Z k( j@(@"-X%@@K@ K@ <K@ PK@ aK@ rK@ oJ@ =K@ QK@ bK@ sK@ 
J@ K@ HJ@ I@@K@ K@ h@@M@"R}#@@K@ tK@ s@#<v>]@]@"X@@K@ uK@ K@ @@d@"8+,&#@@K@ cK@ q@@o@!ZA451.@@K@ RK@ `@ภ"!!
	+Constraints are not satisfied in this type.@@ @@K@ K@ K@ @ภ""."-ภ"!!!@@!@@K@ K@ K@ @A@!@@K@ K@ K@ @@@" @@K@ K@ K@ @@@"1@@K@ K@ @ภ"!!@@"ŠzK@ K@ J@ @@K@ K@ @@@"ՠ@@K@ K@ @@@"@@K@ SK@ @@@"@@K@ >K@ O@	2@[<v>Constraints are not satisfied in this type.@ @@"@@K@ ?K@ K@ @@@@#.̠.@@K@ K@ ;!@@?@@0"@డ$X8report_unification_error(Printtyp           @@)formatter@@ @  @#Env!t@@ @  @*Errortrace!t+unification@@ @  @@ @  9type_expected_explanation&optionJ@)formatter@@ @  $@@ @  @ @  @@ @  @@)formatter@@ @  $@@ @  @ @  @@)formatter@@ @  $@@ @  @ @  $@@ @  @ @  @ @  @ @  @ @  @ @  @ @  @$ $ @@$ Iba@@@_@@J@ @\@@J@ @WR@@J@ @@J@ OM@J@@J@  G@@J@ @J@ @@J@ @@F@@J@ C@@J@ @J@ @@B@@J@ ?@@J@ @J@ >@@J@ @J@ @J@ @J@ @J@ @J@ @J@ @@ఐ#ppf /    ! 0    $@@@  0  - , , - - - - -@@@@@ఐ$#env =    % >    (@@@@@K@ 3K@ 9K@ 8@@ఐ*%trace Q    ) R    .@@@ @@K@ 2K@ BK@ @@@K@ ?-@ภ d < 2@ <@@@@K@ U@@K@ T@K@ S@@K@ R?@@@#ppf
6 ~  /  <   /  ?@@@@@L@ ^  0   ~ ~     @)@@@@డ''fprintf   /  C   /  J@$Ű@@@'@@K@ j@$Š@@K@ K@ wK@ f'@@K@ h'?@@K@ i@@K@ g@K@ e@K@ d  0         @Q7@@ @ ]@1@ @@@@ఐB#ppf   /  K   /  N@@@'@@L@ xL@ |L@ {@@ภ$$   /  O   /  UA$ภ$""$Type
@
@"@@L@ L@ L@ 6@ภ$""@@$uP'@@L@ vL@ L@ à[K@ K@ Ġ@@L@ L@ P@@.@$e
@@L@ L@ [@$Type>@>@$@@L@ L@ L@ g@@ED@@%B})}@@L@ uL@ p@@M@@L@@K@ K@ v@@A "  /  7 #  /  V@@@\@@K@ ,Y@@K@ +@K@ *K@ @@@#ppf
7 ;  W  d <  W  g@@@d@@L@ @@డ(Y'fprintf J  W  k K  W  r@%@@@(;@@K@ @%{@@K@ K@ K@  (K@@K@ '@@K@ @@K@ @K@ @K@   0  b a a b b b b b@
6@@ @ @0@ ~@@@@ఐA#ppf x  W  s y  W  v@@@(k@@L@ L@ L@ @@ภ%E%C   W  w   W  A%Bภ%M##8should be an instance of
@
@#@@L@ _L@ bL@ a6@ภ%^#o#n@@%1P(@@L@ L@ KL@ ][K@ LK@ ^@@L@ `L@ lP@@.@%Fe
@@L@ ML@ \[@8should be an instance of>@>@%L@@L@ NL@ nL@ mg@@ED@@%})}@@L@ L@ Jp@@M@@@@K@ K@ v@@A   W  _   W  @@@
@@K@ )@@K@ (@K@ 'K@ f@@`@@ 7@@I@ J@ &@డ)'fprintf          @&0@@@(@@I@ @&0H@ I@ (@@I@ (@@I@ @@I@ 
@I@ @I@ @@ఐ#ppf          @@@@@ภ%% (     )    A%ภ%%W%Vภ%";
":@
@%9@@J@ J@ @ภ%$$
@@%͠=)4@@J@ J@ J@ HI@ I@ @@J@ J@ !@@,@%R
@@J@ J@ ,@"@]<@<@%@@J@ J@ J@ 8@@CB@@&j)j@@J@ J@ A@@{K@@lB@L@@mC@8M@@nD@Ġ+Non_regular ~         @5ঠ*definition          A  ,  Z?@@ @ n \@@  ,  O N@A<A I@ F  ,  C B@B=A =@ :  ,  7 6@C>A #@  >A X@ Uࠠ
@@ e@@ @ y  0         @j@@@'used_as          A  ,  cX@@ @ p e@A  ,  x w@@UA o@ l  ,  \ [@BVA V@ S  ,  P O@CWA <@ 9WA d@ aࠠ
@@ n@@ @ }@*defined_as          A  ,  np@@ @ r p@B  ,   @@mA @   ,   @AnA {@ x  ,  h g@CoA T@ QoA o@ lࠠ
@@ y@@ @ 1@*expansions          A  ,  y@@ @ t {@C  ,   @@A @   ,   @AA @   ,   @BA @ A l@ iࠠ
@@  @@ @  @@ @ @ @ @@ @ T@@@          @@@@K@ K@ \@@@z@@]@@@ࠠ,pp_expansion
8          @@@@)@@ @ ?J@ @
@@ @ J@ !
@@ @ J@ "@ @ #J@ )@@ @ >J@ @ @  J@ @ @ J@   0  " ! ! " " " " "@@@ >~@@ @jh@i@ BTR@S@ D@@@@#ppf
: >     ?    @@@8  0  < ; ; < < < < <@D E     F  Z  {@@@@@@ 
=ࠠ"ty
; U    
 V    @@@A  0  S R R S S S S S@$R@@ l@@@ࠠ$body
< c    
 d    @@@I@@ g    	 h    @@UP@L@ $@@డ <&Format'fprintf y     z    +@'@@@*j@@J@ 1@'@@*|@@J@ =J@ @J@ CJ@ wJ@ @J@ @J@ J@ @@@@J@ @J@ IJ@ J@ @J@ @J@ J@ F@J@ J@J@ KJ@ G@J@ HJ@ D@J@ EJ@ A@J@ BJ@ -*@@J@ /*Y@@J@ 0@@J@ .?@J@ ,@J@ +  0         @ow@r@ k@f@ @@@@ఐ#ppf     ,     /@~@@J@ NJ@ @@ภ''     0     9A'ภ'$$ภ'&
&# = @@%@@K@ K@ K@ 7@ภ'$$ภ'%#%@#@'XJ@ J@ yJ@ J@ @@K@ K@ R@@4@'{@@K@ K@ ]@@?@'@@K@ K@ h@@J@'%"#$%@@K@ K@ s@'%a = %aZ@Z@'@@K@ K@ K@ @@a`@@(tĠ(@@K@ <K@ @@డ)')type_expr(Printtyp Z  :  D [  :  V@
V@@J@ @@ఐ"ty i  :  W j  :  Y@@@U@@డ)F)type_expr(Printtyp y  Z  d z  Z  v@
u@@J@ @@ఐ%$body   Z  wC@D@@m@@E@@g@@A%FA@|  0         @4@@@@APHA@@@ @   0         @O@@@@M@@ࠠ%comma
>          @@@@+@@ @ J@ @ g@@ @ J@  +J@@ @ J@ @ @ J@ @ @ J@   0         @@@ @@@@#ppf
@          @@@$  0         @0          @@@@@@ 
AĠ           @ @@@@,  0         @ :@@ @@@@డ &Format'fprintf          @) @@@+@@K@ @) FK@ 
+@@K@ +@@K@ 
@@K@ @K@ 	@K@ (@@ఐL#ppf          @2@@nJ@ J@ 8@@ภ((Ұ     OA(Рภ(((l@(t@@L@ hL@ kL@ jQ@ภ((W(Vภ((('@;<1 2>!@!@( @@L@ L@ L@ g@A,@(&@@L@ L@ L@ r@B7@(*@@L@ L@ L@ }@@>@([@@L@ |L@ @ภ)'-H',@H@(o,X@@L@ L@ TL@ fL@ z~K@ UK@ gK@ {@@L@ }L@ @@a@)@@L@ iL@ y@@l@) @@L@ VL@ e@(,@;<1 2>|@|@)@@L@ WL@ L@ @@@@)ˠ6@@L@ L@ S@@@@@@AA@@@AA@@ @ @   0         @@@@@@@ࠠ-pp_expansions
B          @@@@,@@ @ 7J@ @$listI@@ @ 5@@ @ 6@ @ 4@@ @ 3J@ ,q@@ @ 2J@ @ @ J@ @ @ J@   0         @)HB@C@ @@@@#ppf
D          @@@3  0         @?          *@@@@@@*expansions
E          @@@=  0         @ I@@ !@@@@  Р &Format          @@	  0         @!T@@ )"@@@@A  0         @@@@డ-pp_print_list $     %    @&pp_sep&optionJ@-@@ @  @,@@ @  ,@@ @  @ @  @ @  @@ @  @@-1@@ @  @!a @  ,@@ @  @ @  @ @  @-@@@ @  @@@ @  @@ @  @ @  @ @  @ @  @ @  @*xG    *yI  #  `@@*w A@@@><@-X@@L@ @9@@L@ 8@@L@ @L@ @L@ @@L@ @@-h@@L@ @E@@J@ "I@@J@ #@J@ !L@ ?@@L@ @L@ @L@ @-~@@L@ @Ѡ@@L@ @@L@ @L@ @L@ @L@ @L@ @wภ u { ఐ%comma          
@ϰ@@@-@@M@ @ p@@M@ -Q@@M@ @M@ @M@ @@@ }@@M@ @@ఐȠ,pp_expansion          @@@@-@@M@ @@@M@ @@M@ @M@ -v@@M@ @M@ @M@ @@@@@-@@J@ @#k@@J@ @@J@ @J@ @J@ @     @@  0         @@@@@ఐ#ppf          @@@GJ@ :J@ @@ఐ*expansions 
     @@@MJ@ ;J@  @@ @@:!@@A!A@R  0         @@@@@A+#A@@[V@ @ C  0         @*@@@@(@డ+4reset_and_mark_loops(Printtyp '  .  4 (  .  Q@@.)type_expr@@ @  +@@ @  @ @  @+ a

+ a

@@+d@@@@@J@ I@@J@ H@J@ G  0  = < < = = = = =@f@@ V @@@@ఐ'used_as P  .  R Q  .  Y@$@@+@@K@ PK@ RK@ Q@@4
@@ @@I@ UJ@ O@డ,;*mark_loops(Printtyp n  [  a o  [  t@@.R)type_expr@@ @  ,4@@ @  @ @  @,2 `

,3 `

@@,1c@@@@@J@ Z@@J@ Y@J@ XG@@ఐɠ*defined_as   [  u   [  @e@@'@@K@ aK@ cK@ b[@@0
@@ @@I@ fJ@ `a@డ,.Naming_context%reset(Printtyp          @@,u@@ @ n,y@@ @ m@ @ l@,w~		,x~		@@,vU@@@@@J@ q@@J@ p@J@ o@@ภ           @ @@@"@@K@ xK@ |@@+@@ +@@I@ J@ w@ఐ*expansions          @@@  @@ @  @@ @ @ @ @@ @ @Ġ {'          @ {&@@@@  @@L@  @@L@ @L@ @@L@ @@@@డ/0'fprintf !     "    @,X@@@/@@J@ @,X@.@@J@ @@/+@@J@ J@ @+Outcometree(out_type@@J@ J@ J@ FH@ J@ @J@ (@J@ 'J@ @@@#J@ @@@J@ UJ@ J@ J@ @J@ @J@ J@ @
J@ ϐ@J@ J@ ̐@J@ J@ ɐ@J@ J@ Ɛ@J@ J@ @J@ J@ /e@@J@ /@@J@ @@J@ S@J@ @J@ ?@@ఐp#ppf          @Z@@L@@ภ,Q,O          A,Nภ,Y+?+>ภ,^*
*ภ,c*,]ภ,h**$<hv>@@*@@K@ RK@ UK@ Tv@ภ,y*(*@(@,LJ@ ĠJ@ J@ K@ -K@ >K@ PJ@ 	K@ K@ .K@ ?K@ Q
J@ qK@ K@ @@K@ SK@ _@@J@,n"@@K@ @K@ O@$<hv>Z@Z@,t@@K@ AK@ aK@ `@@a@,94+,&#@@K@ /K@ =@@l@+vD=451.@@K@ K@ ,@ภ,+'|+&	#This recursive type is not regular.@@+@@K@ rK@ uK@ t@ภ,,J,Iภ,,,+@@,@@K@ K@ K@ @A@,@@K@ K@ K@ @@@,@@K@ K@ K@ @@@,M@@K@ K@ @ภ-+h+g5The type constructor @@+L@@K@ K@ K@ @ภ-**ภ-$*]*\@@*>@@K@ K@ -@ภ-0++. is defined as@@+n@@K@ K@ K@ >@ภ-A,,ภ-F,t,s'@;<1 2>@@,v@@K@ K@ K@ T@A@,|@@K@ K@ K@ _@B@,@@K@ K@ K@ j@@@,@@K@ K@ o@ภ-r+!+ˠ%type &@&@+@@K@ K@ K@ @ภ-*o2*nภ-,7,ภ-,<,,@@@@,@@K@ DK@ HK@ G@AK@,@@K@ EK@ JK@ I@@V@,@@K@ FK@ LK@ K@@]@,@@K@ ;K@ C@ภ-,g,1but it is used asl@l@+@@K@ YK@ \K@ [@ภ--5x-4ภ-,},'@;<1 2>@@,@@K@ rK@ vK@ u@A@-@@K@ sK@ xK@ w@B@-@@K@ tK@ zK@ y@@@-9@@K@ iK@ q@ภ-**ภ---n@-@@K@ K@ K@ @ภ.-{-zภ.-B-A-&@@-C@@K@ K@ K@ !@A@-I@@K@ K@ K@ ,@@@-M@@K@ K@ K@ 7@@@-~@@K@ K@ <@ภ.?,,	KAll uses need to match the definition for the recursive type to be regular.@@,}@@K@ K@ K@ M@ภ.P--ภ.U**@@-@@K@ K@ \@ภ._,p,o@@.29J@ pJ@ J@ J@ J@ J@ J@ J@ "J@ J@ J@ J@ J@ J@ J@ #@@K@ K@ @@6@.Za(@@K@ K@ @@A@.el3#
%&@@K@ K@ @@L@.pw>.01@@K@ K@ @@W@.{I9 ;<@@K@ K@ @@b@.TD+FG@@K@ jK@ @@m@._O6QR@@K@ ZK@ h@@x@.jZA\]@@K@ <K@ X@@@.àueLgh@@K@ .K@ :@@@.~nWpq@@K@ K@ )@@@.wbyz@@K@ K@ 
@@@.Ƞm@@K@ K@ @@@.Ӡx@@K@ K@ 
@@@.ޠ@@K@ K@ @@@.@@K@ K@ #@@@.@@K@ sK@ .@@@.@@K@ K@ o9@@@/
@@K@ 
K@ D@	@[<hv>This recursive type is not regular.@ The type constructor %s is defined as@;<1 2>type %a@ but it is used as@;<1 2>%a.@ All uses need to match the definition for the recursive type to be regular.@]@@/@@K@ K@ K@ P@@@@/ jZH@@K@ K@ Y@@డ m$name$Path          @ @@  @ @@K@ 	 @@K@ @K@ @@K@ @ z@@K@  @@K@ @K@ @K@ @ ภ   @ @  @ @@L@  @@L@ @L@ @@L@ @@ఐ	F*definition          %@@@ @@L@ L@ !L@  @@          &@@L@ @@డ  } }   '  3   '  4@ }@@@ >J@ K@ %@@K@ &@K@ $@@డ&Oprint(out_type&Oprint   '  C@&Stdlib#ref@&Format)formatter@@ @ F@@@ @ E$unitF@@ @ D@ @ C@ @ B@@ @ A@1typing/oprint.mliVV5@@&OprintCA&@@ A@@L@ +L@ L@ @@K/@@A@@డ1 .tree_of_typexp(Printtyp S  '  E T  '  \@@$boolE@@ @  i@3?)type_expr@@ @  h+Outcometree(out_type@@ @  g@ @  f@ @  e@1# 1$ @@1"~@@@@@K@ @@@K@ @@K@ @K@ @K@ =@@ภ    '  ]   '  b@ @@@4@@L@ @L@ DM@@ఐ	Ϡ*defined_as   '  c   '  m@	k@@@@@L@ ?L@ FL@ Ea@@   '  D   '  n@@`L@ >f@@డ y ~> ~@   o  {   o  |@ ~=@@@ aJ@ RK@ J@@K@ K@K@ I~@@డ(out_type&Oprint   o  @@@ @@L@ PL@ WL@ Q@@%@@@@డ1.tree_of_typexp(Printtyp   o     o  @@@@@@K@ ^@@@K@ ]@@K@ \@K@ [@K@ Z@@ภ X   o      o  @ W@@@@@L@ jL@ n@@ఐ
_'used_as   o     o  @	@@@@L@ iL@ pL@ o@@   o     o  @@L@ h@@ @@@Ġ f) )     *    @ n+@ .     /    @@ @@L@  @@L@ @L@ @@ =     >    @@  @@L@  @@L@ @L@ @@L@ @@@ @@  @@L@  @@L@ @L@ @@L@ @@@@డ4t'fprintf e     f    @1@@@4V@@J@ |@1@4'@@J@ @@4o@@J@ J@ @D@@J@ TJ@ J@ AH@ J@ @J@ @J@ J@ @
@@J@ R@^@@J@ ~J@ J@ NJ@ Q@J@ \@J@ [J@ @
@@5J@ @@@J@ @@J@ @J@ @@J@ J@ J@ <J@ @J@ @J@ J@ @AJ@ @J@ J@ @J@ J@ @J@ J@ @J@ J@ @J@ J@ @J@ J@ @J@ J@ x4@@J@ z4z@@J@ {@@J@ yt@J@ w@J@ v@@ఐՠ#ppf          @@@`@@ภ11          *A1ภ100ภ10[
0Zภ10(1 ภ10'0&$<hv>@@0@@K@ !K@ $K@ #@ภ1/(/@(@1J@ J@ J@ K@ K@ 
K@ J@ K@ K@ K@ K@  
J@ @K@ K@ @@K@ "K@ .@@J@1Ӡ"@@K@ K@ 
@$<hv>Z@Z@1@@K@ K@ 0K@ /@@a@294+,&#@@K@ K@ $@@l@0۠D=451.@@K@ K@ /@ภ220|0	#This recursive type is not regular.@@0p@@K@ AK@ DK@ C@@ภ2C11ภ2H1v1u1Z@@1w@@K@ ^K@ bK@ aU@A@1}@@K@ _K@ dK@ c`@@@1@@K@ `K@ fK@ ek@@@1@@K@ UK@ ]p@ภ2s00̠5The type constructor @@0@@K@ wK@ zK@ y@ภ200ภ2//@@/_@@K@ K@ @ภ200. is defined as@@0@@K@ K@ K@ @ภ222ภ211ؠ'@;<1 2>@@1@@K@ K@ K@ @A@1@@K@ K@ K@ @B@1@@K@ K@ K@ @@@2@@K@ K@ @ภ211!10%type &@&@1@@K@ K@ K@ @ภ2/2/Ӡภ22Y72Xภ22 <22@@@@2!@@K@ K@ K@ @AK@2'@@K@ K@ K@ 
@@V@2+@@K@ K@ K@ @@]@2\@@K@ 
K@ @ภ31wg1v1but it is used asl@l@1[@@K@ (K@ +K@ *+@ภ3.2x2ภ332a}2`'@;<1 2>@@2c@@K@ AK@ EK@ DA@A@2i@@K@ BK@ GK@ FL@B@2m@@K@ CK@ IK@ HW@@@2@@K@ 8K@ @\@ภ3_0K0Jภ3d22Ϡภ3i222{@@2@@K@ xK@ |K@ {v@A@2@@K@ yK@ ~K@ }@@@2@@K@ zK@ K@ @@@2@@K@ oK@ w@ภ311	!after the following expansion(s):@@1@@K@ K@ K@ @ภ333ภ322נ'@;<1 2>@@2@@K@ K@ K@ @A@2@@K@ K@ K@ @B@2@@K@ K@ K@ @@@3@@K@ K@ @ภ30 0ภ33G%3Fภ33*3
2.@.@3@@K@ K@ K@ @A9@3@@K@ K@ K@ @@D@3@@K@ K@ K@ 	@@K@3J@@K@ K@ 	@ภ42eU2d	KAll uses need to match the definition for the recursive type to be regular.Z@Z@2I@@K@ K@ K@ 	@ภ43f3ภ4!0lk0k@k@3j@@K@ K@ 	(@ภ4+2<u2;@u@3VJ@ ?J@ SJ@ uJ@ J@ J@ J@ J@ TJ@ TJ@ vJ@ J@ J@ J@ J@ [@@K@ K@ 	U@@@4&̠(f@@K@ K@ 	`@@@41נ3#q%&@@K@ K@ 	k@@@4<>.|01@@K@ K@ 	v@@@4G
I9;<@@K@ K@ 	@@@4RTDFG@@K@ K@ 	@@@4]#_OQR@@K@ pK@ 	@@@4h.jZ\]@@K@ bK@ n	@@@4sPuegh@@K@ 9K@ ]	@@@4~[prs@@K@ )K@ 7	@@ @4f{ɠ}~@@K@ K@ '	@@@4qԠ@@K@ K@ 		@@@4ߠ@@K@ K@ 	@@!@4@@K@ K@ 	@@,@4@@K@ K@ 	@@7@4 @@K@ K@ 	@@B@4ˠà@@K@ xK@ 
@@M@4֠%̠@@K@ VK@ t
@@X@40ՠ!@@K@ BK@ R
@@c@4 4+'-.@@K@ K@ >
&@@n@4F=4567@@K@ K@ 
1@	@[<hv>This recursive type is not regular.@ The type constructor %s is defined as@;<1 2>type %a@ but it is used as@;<1 2>%a@ after the following expansion(s):@;<1 2>%a@ All uses need to match the definition for the recursive type to be regular.@]~@~@4@@K@ K@ K@ 
=@@@@5@@K@ K@ 
F@@డ Z$name$Path   +  8   +  A@  @@    @  @@K@ -  @@K@ ,@K@ +@@K@ *@ g@@K@ )  @@K@ (@K@ '@K@ &
n@  ภ   @ @  @  @@L@ C  @@L@ B@L@ A@@L@ @
@@ఐ3*definition   +  B   +  L@@@ @@L@ ;L@ EL@ D
@@   +  7   +  M@@eL@ :
@@డ  q s   N  Z   N  [@ p@@@ +sJ@ QK@ I@@K@ J@K@ H
@@డ(out_type&Oprint    N  j@@@ F@@L@ OL@ VL@ P
@@%@@
@@డ6.tree_of_typexp(Printtyp   N  l   N  @ǰ@@@@@K@ ]@@@K@ \@@K@ [@K@ Z@K@ Y
@@ภ  2  N   3  N  @ @@@@@L@ iL@ m
@@ఐz*defined_as D  N   E  N  @@@@@L@ hL@ oL@ n@@ O  N  k P  N  @@L@ g@@డ $ 預  ^     _    @ @@@ J@ {K@ s@@K@ t@K@ r)@@డe(out_type&Oprint x    @c@@ @@L@ yL@ L@ z@@@%@@A@@డ7_.tree_of_typexp(Printtyp          @?@@@?@@K@ @<@@K@ :@@K@ @K@ @K@ `@@ภ           @ @@@W@@L@ L@ p@@ఐ
'used_as          @@@c@@L@ L@ L@ @@          @@%L@ @@ఐ
!-pp_expansions          @@@&J@ @@ఐ*expansions          @@@,J@ @@@@Y@@A           	@@
@:@@
@@@
@@@
@@@

@(@@
=@@@
@Ġ7Inconsistent_constraint   
     
  %@ Mࠠ#env
   
  '   
  *@@@ ;@@ @   0         @$@@@ࠠ%trace
   
  ,   
  1@@@ B ?@@ @ @@ @ @@@"   
  2@@%@@డ:8'fprintf )  6  < *  6  C@7`@@@:@@J@ @7` @@I@  J@ J@ :*@@J@ 9@@J@ @@J@ @J@ @J@   0  A @ @ A A A A A@%IC@D@ [#=7@8@ ]$@@@@ఐ%<#ppf W  6  D X  6  G@%&@@$@@ภ77 b  6  H c  6  yA7ภ7%66
ภ7*5
5ภ7/57)ภ7455#<v>@@5r@@K@  K@  K@  >@ภ7E5V(5U@(@7X:@@K@ K@  5K@  IK@  ZK@  kK@  }oJ@  6K@  JK@  [K@  lK@  ~
J@  K@  AJ@  B@@K@  K@  h@@M@7=}#@@K@  mK@  |s@#<v>]@]@7C@@K@  nK@  K@  @@d@7{8+,&#@@K@  \K@  j@@o@6EA451.@@K@  KK@  Y@ภ755	(The type constraints are not consistent.@@5@@K@  K@  K@  @ภ777ภ766ߠ6@@6@@K@  K@  K@  @A@6@@K@  K@  K@  @@@6@@K@  K@  K@  @@@7@@K@  K@  @ภ755@@7zK@  K@  J@  @@K@  K@  @@@7@@K@  K@  @@@7ˠ@@K@  LK@  @@@7֠@@K@  7K@  H@	/@[<v>The type constraints are not consistent.@ @@7@@K@  8K@  K@  @@@@8.̠.@@K@ K@  4!@@?@@0"@డ9C8report_unification_error(Printtyp v  {   w  {  @@@@@@J@  @@@J@  @@@J@  @@J@  ٠@@@J@  @@J@  @J@  @@J@  @@@@J@  @@J@  @J@  @@@@J@  @@J@  @J@  @@J@  @J@  @J@  @J@  @J@  @J@  @J@  k@@ఐ&#ppf   {     {  @&@@&#  0         @x@@@@ఐŠ#env   {     {  @@@8@@K@ !,K@ !2K@ !1@@ఐˠ%trace   {     {  @@@ 
=@@K@ !+K@ !;K@ !9@@K@ !8-@:ภ   @ @<@9@@K@ !N6@@K@ !M@K@ !L@@K@ !K?@@@#ppf
Y 
         @@@A@@L@ !W  0   
 
     @@@@@డ<)'fprintf          @9Q@@@<@@K@ !c@9QY@@K@ !K@ !pK@ !_<@@K@ !a;@@K@ !b@@K@ !`@K@ !^@K@ !]  0  2 1 1 2 2 2 2 2@7n@@ @ !V@1@ N%@@@@ఐB#ppf H     I    @@@<;@@L@ !qL@ !uL@ !t@@ภ99 Z     [    A9ภ97w7v$Type
@
@7[@@L@ !L@ !L@ !6@ภ9.7?7>@@9P<h@@L@ !oL@ !L@ ![K@ !K@ !@@L@ !L@ !P@@.@9e
@@L@ !L@ ![@$Type>@>@9@@L@ !L@ !L@ !g@@ED@@9Π})}@@L@ !nL@ !p@@M@@@@K@ !K@ !v@@A          @@@@@K@ !%@@K@ !$@K@ !#K@ !@@@#ppf
Z          @@@@@L@ !@@డ<'fprintf          @:
@@@<@@K@ !@:
@@K@ "|K@ "
K@ !<@@K@ !<@@K@ !@@K@ !@K@ !@K@ !  0         @6@@ @ !@0@ 
&@@@@ఐA#ppf          @@@<@@L@ "L@ "L@ "@@ภ99ϰ          A9Πภ98382;is not compatible with type
@
@8@@L@ "XL@ "[L@ "Z6@ภ977@@9P=$@@L@ "	L@ "DL@ "V[K@ "EK@ "W@@L@ "YL@ "eP@@.@9Ҡe
@@L@ "FL@ "U[@;is not compatible with type>@>@9@@L@ "GL@ "gL@ "fg@@ED@@:})}@@L@ "L@ "Cp@@M@@@@K@ "~K@ "}v@@A j     k    @@@@@K@ !"@@K@ !!@K@ ! K@ "f@@@@ @@I@ "J@ !@డ='fprintf          &@:@@@=v@@I@ "@:(H@ "I@ "=@@I@ "=3@@I@ "@@I@ "
@I@ "@I@ "@@ఐ(#ppf     '     *@(x@@(
@@ภ:o:m     +     /A:lภ:w99ภ:|6
6@
@9@@J@ "J@ "@ภ:88@@:Y==@@J@ "J@ "J@ "HI@ "I@ "@@J@ "J@ "!@@,@:nR
@@J@ "J@ ",@"@]<@<@:t@@J@ "J@ "J@ "8@@CB@@;&j)j@@J@ "J@ "A@@{K@@lB@L@@mC@M@@nD@Ġ*Type_clash 
  0  4   0  >@ ࠠ#env
   0  @   0  C@@@ @@ @   0         @(@@@ࠠ%trace
 !  0  E "  0  J@@@  @@ @ @@ @ @@@" ,  0  K@@)$@@డ<8report_unification_error(Printtyp 9  O  U :  O  v@@@@@@I@ #$@@@I@ ##@@@I@ #"@@I@ #!@@@I@ # @@I@ #@I@ #@@I@ #@@@@I@ #@@I@ #@I@ #@@@@I@ #@@I@ #@I@ #@@I@ #@I@ #@I@ #@I@ #@I@ #@I@ #@I@ #  0  o n n o o o o o@)Ehb@c@ '\V@W@ (@@@@ఐ)j#ppf   O  w   O  z@)T@@(  0         @@@@@ఐ#env   O  {   O  ~@@@@@J@ #SJ@ #YJ@ #X@@ఐ%trace   O     O  @0@@ @@J@ #RJ@ #bJ@ #`@@J@ #_-@ภ   @ @@@@J@ #u @@J@ #t@J@ #s@@J@ #r?@@@#ppf
[          @@@@@K@ #~  0         @f@@@@డ>'fprintf          @<@@@>@@J@ #@<#@@J@ $	J@ #J@ #>@@J@ #>@@J@ #@@J@ #@J@ #@J@ #  0         @78@@ @ #}@1@ )@@@@ఐB#ppf          @@@?@@K@ #K@ #K@ #@@ภ;;ݰ $     %    A;ܠภ;:A:@	%This type constructor expands to type
@
@:%@@K@ #K@ #K@ #6@ภ;:	:@@;ˠP?2@@K@ #K@ #K@ #[J@ #J@ #@@K@ #K@ #P@@.@;e
@@K@ #K@ #[@	%This type constructor expands to type>@>@;@@K@ #K@ #K@ #g@@ED@@<})}@@K@ #K@ #p@@M@@@@J@ $J@ $
v@@A x     y    @@@@@J@ #L@@J@ #K@J@ #JJ@ $
@@@#ppf
\          @@@@@K@ $#@@డ?'fprintf          	@<װ@@@?@@J@ $$@<נ@@J@ $J@ $1J@ $ ?@@J@ $"?Q@@J@ $#@@J@ $!@J@ $@J@ $  0         @J6@@ @ $@0@ *@@@@ఐA#ppf     
     
@@@?@@K@ $2K@ $6K@ $5@@ภ<<          *A<ภ<:::but is used here with type
@
@:@@K@ $K@ $K@ $6@ภ<::@@<P?@@K@ $0K@ $kK@ $}[J@ $lJ@ $~@@K@ $K@ $P@@.@<e
@@K@ $mK@ $|[@:but is used here with type>@>@<@@K@ $nK@ $K@ $g@@ED@@=T})}@@K@ $/K@ $jp@@M@@P@@J@ $J@ $v@@A 4     5    +@@@`@@J@ #I]@@J@ #H@J@ #GJ@ $f@@@@+5H@ #F@Ġ3Null_arity_external K  ,  0 L  ,  C@j@@@@+E5@@డ@f'fprintf W  G  M X  G  T@=@@@@H@@I@ $@=+ZH@ $I@ $@U@@I@ $@@@I@ $@@I@ $
@I@ $@I@ $X@@ఐ+`#ppf {  G  U |  G  X@+J@@*e@@ภ=A=?   G  Y   G  A=>ภ=I;;	&External identifiers must be functions
@
@;@@J@ %J@ %J@ %@ภ=Z;k;j@@=-?@@@J@ $J@ $J@ %JI@ $I@ %
@@J@ %J@ %@@.@=BT
@@J@ $J@ %@	&External identifiers must be functions>@>@=H@@J@ $J@ %J@ %@@ED@@=l)l@@J@ $J@ $@@}M@@n@Ġ7Missing_native_external          @i@@@@+@@డ@'fprintf          @>@@@@@@I@ %;@>+H@ %HI@ %7@@@I@ %9@@@I@ %:@@I@ %8
@I@ %6@I@ %5@@ఐ+#ppf      
    @+۰@@+d@@ภ==а        "  SA=Ϡภ=<<ภ=<w
<vภ=<D=ޠภ=<C<B$<hv>@@<'@@J@ %J@ %J@ % @ภ=<(<
@(@=͠NA:@@J@ %GJ@ %J@ %J@ %J@ %J@ %ɠeI@ %J@ %J@ %J@ %J@ %ʠ
I@ %J@ %I@ %@@J@ %J@ %J@@M@=s#@@J@ %J@ %U@$<hv>]@]@=@@J@ %J@ %J@ %a@@d@>08+,&#@@J@ %J@ %l@@o@<A451.@@J@ %J@ %w@ภ>Q<<	OAn external function with more than 5 arguments requires a second stub function@@<@@J@ %J@ %J@ %@ภ>b==͠ภ>g===y@@=@@J@ &J@ &J@ &@A@=@@J@ &	J@ &J@ &
@@@=@@J@ &
J@ &J@ &@@@=@@J@ %J@ &@ภ><<;for native-code compilation@@<@@J@ &!J@ &$J@ &#@ภ>>>ภ>::@@=@@J@ &5J@ &:@ภ><<@@>J@ %J@ %J@ &J@ &3I@ %I@ & I@ &4@@J@ &6J@ &D@@@>@@J@ &"J@ &2 @@@>ɠ@@J@ & J@ &@@@>Ƞ(̠ԠΠ@@J@ %J@ %@@@>Ӡޠڠ@@J@ %J@ %!@@$@>ɠJ@@J@ %J@ %,@	t@[<hv>An external function with more than 5 arguments requires a second stub function@ for native-code compilation@]4@4@>@@J@ %J@ &FJ@ &E8@@;:@@?b
b@@J@ %FJ@ %A@@sC@@dB@Ġ0Unbound_type_var c  T  X d  T  h@eࠠ"ty
 l  T  j m  T  l@@@ @@ @   0  m l l m m m m m@-A@@@ࠠ$decl
 z  T  n {  T  r@@@ @@ @ @@@   T  s@@-y@@డB'fprintf   w  }   w  @?İ@@@B~@@J@ &e@?Ġ @@I@ '&J@ &rJ@ &aB@@J@ &cB>@@J@ &d@@J@ &b@J@ &`@J@ &_  0         @-{E?@@@ +93@4@ ,@@@@ఐ-#ppf   w     w  @-@@-@@ภ??   w     w  A?~ภ?>o>nภ?>&
>%ภ?=?ภ?==@@?kGB@@K@ &qK@ &K@ &K@ &K@ &ZJ@ &K@ &K@ &K@ &J@ ' K@ &J@ &@@K@ &K@ &S@+<@<@?@@K@ &K@ &K@ &^@@C@?s* @@K@ &K@ &i@@N@>~3()%"@@K@ &K@ &t@ภ?>9^>8	3A type variable is unbound in this type declarationc@c@>@@K@ 'K@ 'K@ '@ภ?>o> @o@?à>VK@ &DLFG@@K@ 'K@ '@@|@?РKaVRXY@@K@ &K@ &@@@?۠j_`ab@@K@ &K@ &@	5@[A type variable is unbound in this type declaration@@?@@K@ &K@ 'K@ '@@@@@Ϡ@@K@ &pK@ &@@@@@@ࠠ"ty
] w     x    @@@ ~@@ @ '1J@ ''  0  z y y z z z z z@@@@డ a$repr%Ctype          @ ~ʰ@@@ ~@@J@ '+ ~@@J@ '*@J@ ')@@ఐ5"ty          @@@ ~@@K@ '2K@ '4K@ '3,@@ 
@@0-@@     @@ఐD$decl          @@@ a@@K@ '? @ '=  0         @UO@P@ -@@@)type_kind          @ >@@ =@@ @ '>@ఐd$decl          @1@@ @@K@ 'D @ 'A @-type_manifest     	     @ A@@ @ u@@ @ 'C@@ @ 'B.@@7
@@'@ @ 'E3@Ġ,Type_variant     $     0@ ` ࠠ"tl
^     2     4@@@ `ɠ nn@@ @ '`@@ @ '_  0         @S@@@ࠠ$_rep
_ !    6 "    :@@@ b^@@ @ 'a@@@" (    ;@@ @@M@ 'b@@ /    = 0    >@@  @@M@ 'd@@M@ 'c@@3	@@@M@ 'e$@@$@@ఐD;3explain_unbound_gen F  B  L G  B  _@;@@@D7@@K@ '@D/@@K@ '@^ n@@K@ (K@ '@@K@ '@@
D @@K@ 'ÐAK@ '@D@@K@ '@@D\@@K@ '@D
@@K@ '@K@ '@K@ '@K@ '@K@ '@K@ '@K@ '@K@ '@K@ '  0  s r r s s s s s@pj@k@ .`Z@[@ /@@@@ఐ/n#ppf   B  `   B  c@/X@@.  0         @@@@@ఐ "ty   B  d   B  f@Ѱ@@D}@@L@ 'L@ 'L@ '@@ఐ"tl   B  g   B  i@2@@]@@L@ 'L@ 'L@ '*@@@!c
b   B  o   B  p@@@nK@ '  0         @O@@@@@ࠠ"tl
c   t     t  @@@  _@@ @ (
@@ @ (	M@ '  0         @g%@@ 0@@@ఐ0砐2tys_of_constr_args   t     t  @/ڰ@@@ @@M@ ( ՠ {@@M@ (@@M@ ( @M@ '@@ఐG!c   t     t  @(@@C+@%Types'cd_args   t     t  @ e@@  @@N@ (N@ (N@ (
;@@/
@@C<@@   t  @@డ J(newgenty%Btype (     )    @ȫ@@@ȫ@@L@ (ȩ@@L@ (@L@ (  0  . - - . . . . .@Vga@b@ G1@@@@ภ&Ttuple @     A    @Ȟఐx"tl J     K    @@@Ȫ @@M@ ($@@M@ (#M@ ('M@ (%%@@ Y     Z    @@@@M@ (M@ ("-@@9@@E!@@L@ (*M@ (3@L
@@E'@@L@ (,L@ (+@@A m  B  j n    @@@E1@@L@ '鐐@L@ 'L@ (.@@$case          @@          @@E:@@L@ 'L@ (1L@ (0@@@#ppf
d           @@@E@@M@ (<'@@@!c
e          @@@VK@ )K@ (A  0         @9!E@@ @ (;@@ 2@@@@డE'fprintf   	     	   @B@@@E@@L@ (P@B@@E@@L@ (\L@ (@%Ident!t@@L@ )L@ (bL@ (E@@L@ )L@ (]L@ (@L@ (@L@ (L@ (_@@@&L@ (@E5constructor_arguments@@L@ )L@ (hL@ (L@ (@L@ (@L@ (L@ (e@$L@ (i@L@ (jL@ (f@L@ (gL@ (c@L@ (dL@ (`@L@ (aL@ (LF@@L@ (NE@@L@ (O@@L@ (MQ@L@ (K@L@ (J  0         @ou@v@ 23@@@@ఐ#ppf ,  	  ! -  	  $@|@@F@@M@ (^M@ (nM@ (m@@ภBB >  %  7 ?  %  AABภC??ภCA`
A_$ of @@AD@@M@ (M@ (M@ (8@ภC@@ภCA-#A,@#@BYL@ (L@ (L@ (L@ (@@M@ (M@ (S@@4@C @@M@ (M@ (^@@?@C@@M@ (M@ (i@@J@C%"#$%@@M@ (M@ (t@(%a of %aZ@Z@C@@M@ (M@ (M@ (@@a`@@CΠנΠ@@M@ ([M@ (@@డD%ident(Printtyp   %  B   %  P@@>>)formatter@@ @  @@@ @  D@@ @  @ @  @ @  @D~WDW@@D}A@@L@ )@@ఐ6!c   %  Q   %  R@@@6K@ )K@ )
K@ (E@%Types%cd_id   %  S   %  ^@ gu@@M@ )@@డD5constructor_arguments(Printtyp   _  q   _  @@?	?)formatter@@ @  @@@ @  D@@ @  @ @  @ @  @D oD o8@@Dh@@L@ )@@ఐ}!c "  _   #  _  @@@C@%Types'cd_args +  _   ,  _  @ g@@.M@ )@@q@@F@@L@ )L@ )@@AA@@F@@L@ )"@L@ )!L@ )  0  9 8 8 9 9 9 9 9@@@@@A @     A  _  @@@G2@@L@ '@ @@I@ *;J@ '@L@ '@L@ 'L@ )$@@@@@Ġ+Type_record ^     _    @ a|ࠠ"tl
` g     h    @@@ a @@ @ '@@ @ '  0  l k k l l l l l@@@@@ u     v    @@ c@@M@ '	@@@ {    @@ @@M@ '@@          @@ נ @@M@ '@@M@ '@@.	@@@M@ '@@@@ఐ?D/explain_unbound          @<j@@@G@@K@ );@G@@K@ ):@ G@@K@ )K@ )5@@K@ )9@@
G@@K@ )8AK@ )7@Gm@@K@ )6@@Gt@@K@ )4AK@ )3G`@@K@ )2@K@ )1@K@ )0@K@ )/@K@ ).@K@ )-@K@ ),  0         @jd@e@ 4@@@@ఐ2#ppf          @2@@2%  0         @@@@@ఐp"ty          @!@@G@@L@ )^L@ )dL@ )c@@ఐ"tl          @0@@Z@@L@ )]L@ )gL@ )e*@@@!l
f          @@@mK@ )rK@ )f  0         @N@@@@ఐ!l #     $    @@@ 75@@  0  # " " # # # # #@^@@@%Types'ld_type 0     1     @ @@H@@L@ )uL@ )t@@A 9     :    @@@H@@L@ )\@L@ )[L@ )wh@@%field L     M    @@ O     P    @@H@@L@ )ZL@ )zL@ )y?@@@!l
g e     f    @@@P@@డ 6!^ q    9 r    :@ Z@@@ Z@@L@ )@ Z@@L@ ) Z@@L@ )@L@ )@L@ )  0  | { { | | | | |@&l@@ 6@@@@డ $name%Ident           *@ @@@ @@M@ ) @@M@ )@M@ )@@ఐJ!l     +     ,@*@@-@%Types%ld_id     -     8@ @@ @@N@ )N@ )N@ )=@@+
@@ [L@@M@ )M@ )N@ )E@@":      <     >@@     ;     ?@@ [X@@M@ )M@ )M@ )Y@@G	@@H@@L@ )L@ )_@@A          @@@@<H@@L@ )Y@L@ )XL@ )@@T@@J@ )W@Ġ-Type_abstract   A  I   A  V@ @@@@ k@@M@ '<@Ġ$Some 	  A  X 
  A  \@ Nࠠ#ty'
a   A  ]   A  `@@@ @@ @ 'R@@@@@ l @@M@ '@@M@ 'Z@@%@@%@M@ '_@@_@@ఐ>"6explain_unbound_single .  d  n /  d  @5@@@I@@K@ )@I@@K@ )@I@@K@ )H@@K@ )@K@ )@K@ )@K@ )  0  > = = > > > > >@~71@2@ W7@@@@ఐ46#ppf Q  d   R  d  @4 @@3@@ఐ砐"ty ^  d   _  d  @@@ID@@L@ )L@ )L@ )%@@ఐ`#ty' r  d   s  d  @/@@IX@@L@ )L@ )L@ )9@@O
@@4J@ )<@@          @@ @@M@ '  @@M@ '@@M@ '@M@ '@@@@ภ X          @ W@@@TJ@ )@@A          @@W  0         @@@@డI'fprintf          @F@@@I@@I@ *C@F4H@ *PI@ *?I@@I@ *AIZ@@I@ *B@@I@ *@
@I@ *>@I@ *=$@@ఐ4#ppf          @4@@41@@ภFF          AFภFF
F	ภFB
B@
@E@@J@ *J@ *J@ภFDD@@F=I@@J@ *OJ@ *J@ *HI@ *I@ *@@J@ *J@ *d@@,@FR
@@J@ *J@ *o@"@]<@<@F@@J@ *J@ *J@ *{@@CB@@GMj)j@@J@ *NJ@ *@@{K@@l@L@@m@|M@@n@N@@o@Ġ4Unbound_type_var_ext 2     3    @>ࠠ"ty
  ;     <    @@@ @@ @   0  < ; ; < < < < <@5@@@ࠠ#ext
! I     J    @@@ @@ @ @@@ P    @@5H@@డJk'fprintf \     ]    @G@@@JM@@J@ *@G @@I@ +J@ *J@ *ɠJ]@@J@ *ˠJ
@@J@ *@@J@ *@J@ *@J@ *  0  t s s t t t t t@5JE?@@@ 893@4@ 9@@@@ఐ5o#ppf          @5Y@@4@@ภGPGN          6AGMภGXF>F=ภG]E
EภGbEG\ภGgExEw@@G:GJ@@K@ *K@ +K@ +'K@ +8K@ +IZJ@ +K@ +(K@ +9K@ +JJ@ +hK@ +J@ + @@K@ +KK@ +VS@2<@<@GU@@K@ +LK@ +XK@ +W^@@C@Gs* @@K@ +:K@ +Hi@@N@FW~3()%"@@K@ +)K@ +7t@ภGF^F	8A type variable is unbound in this extension constructorc@c@E@@K@ +iK@ +lK@ +k@ภGEoE@o@G>VK@ +gDLFG@@K@ +jK@ +v@@|@GKaVRXY@@K@ +*K@ +f@@@Gj_`ab@@K@ +K@ +&@	:@[A type variable is unbound in this extension constructor@@G@@K@ +K@ +xK@ +w@@@@HbϠ@@K@ *K@ +@@@@@@ࠠ$args
h F  8  B G  8  F@@@ - @@ @ +@@ @ +J@ +  0  M L L M M M M M@@@@ఐ7X2tys_of_constr_args \  8  I ]  8  [@6K@@@ k@@J@ + F @@J@ +@@J@ +@J@ +@@ఐ.#ext w  8  \ x  8  _@@@J@@K@ + @ +-@(ext_args Ã  8  ` Ä  8  h@*@@ @@K@ +K@ +K@ +;@@2
@@C<@@ Ï  8  >@@ఐCF/explain_unbound Û  l  r Ü  l  @@l@@@K@@J@ +@K@@J@ +@K@@J@ +J@ +@@J@ +@@
K@@J@ +AJ@ +@Ko@@J@ +@@Kv@@J@ +AJ@ +Kb@@J@ +@J@ +@J@ +@J@ +@J@ +@J@ +@J@ +  0         @U@@ :@@@@ఐ6#ppf   l     l  @6@@6  0         @@@@@ఐ"ty   l     l  @o@@K@@K@ +K@ +K@ +@@ఐ$args   l     l  @0@@
Z@@K@ +K@ +K@ +*@@@!c
i   l     l  @@@kJ@ +L@@ఐ!c    l   !  l  @@@ 4;@@L@@K@ +K@ +  0  % $ $ % % % % %@^
@@@@A -  l   .  l  @@@L@@K@ +א@K@ +K@ +Z@@$type @  l   A  l  @@ C  l   D  l  @@K@@K@ +K@ +K@ +@@@ 
j@ V  l   W  l  @@@@  ]  l  @@ _  l   `  l  @@L@@K@ +K@ +@@A g  l   h  l  @@@L@@K@ +Ԑ@K@ +K@ +@@@@ @@I@ ,J@ +@డL'fprintf ā     Ă    @I@@@Lr@@I@ ,@I7H@ ,I@ ,L@@I@ ,	L/@@I@ ,
@@I@ ,
@I@ ,@I@ ,@@ఐ7#ppf ĥ     Ħ    @7t@@6@@ภIkIi İ     ı    AIhภIsHHޠภIxE
E@
@H@@J@ ,eJ@ ,j@ภIGG@@IU=L@@J@ ,J@ ,QJ@ ,cHI@ ,RI@ ,d@@J@ ,fJ@ ,t@@,@IjR
@@J@ ,SJ@ ,b@"@]<@<@Ip@@J@ ,TJ@ ,vJ@ ,u@@CB@@J"j)j@@J@ ,J@ ,P@@{K@@l@bL@@m@oM@@n@N@@o@Ġ:Cannot_extend_private_type          @ࠠ$path
"          @@@ n@@ @   0         @7@@@@@@@8@@డM0'fprintf !     "    @JX@@@M@@I@ ,@JX@L@@I@ ->@@M+@@I@ ,I@ -q@$Path!t@@I@ -I@ ,I@ -m8FH@ ,I@ -p@I@ -}@I@ -|I@ ,@I@ ,@I@ ,I@ ,@I@ ,I@ -2@I@ -=I@ ,MJ@@I@ ,L@@I@ ,@@I@ ,8@I@ ,@I@ ,  0  a ` ` a a a a a@86\V@W@ z<@@@@ఐ8Y#ppf t     u     @8C@@7@@ภJ:J8      ŀ    
AJ7ภJBI(I'ภJGH
HޠภJLHJFภJQHbHa@@J$lI@ ,eI@ ,I@ ,J@ -J@ -ZI@ ,J@ ,J@ -	J@ -I@ -;J@ ,J@ ,@@J@ -J@ -&M@59@9@J<@@J@ -J@ -(J@ -'X@@@@Jt)& @@J@ -
J@ -c@@K@I>4/()%"@@J@ ,J@ -n@ภJH[HภJG`G@`@GI@@J@ -<J@ -F@ภJJlJภJIqIؠIu@u@I@@J@ -`J@ -dJ@ -c@A@I@@J@ -aJ@ -fJ@ -e@@@I@@J@ -bJ@ -hJ@ -g@@@J@@J@ -WJ@ -_@ภJGGภJJGJFภJG+G*@@J)@@J@ -J@ -@ภJHH@@J۠I@ -:I@ -UI@ -wI@ -VI@ -x@@J@ -J@ -@@@JѠ@@J@ -J@ -@@@Jܠ@@J@ -XJ@ -~@@@J(&@@J@ -?J@ -T@@@Jɠ Ġ@@J@ ,J@ -9@@@J٠Ҡˠ̠͠@@J@ ,J@ ,@*@[%s@ %a@] @ @K@@J@ ,J@ -J@ -@@@@K]M;@@J@ ,J@ ,(@@	%Cannot extend private type definition Ɩ     Ɨ    <@@ ƙ     ƚ    =@@kJ@ -7@@డLw$path(Printtyp ƪ  >  F ƫ  >  S@@FF)formatter@@ @  @o@@ @  Lv@@ @  @ @  @ @  @LtYLuY@@LsC@@I@ -_@@ఐ$path   >  T   >  X@i@@J@ -n@@@@o@Ġ3Not_extensible_type   Y  ]   Y  p@)ࠠ$path
#   Y  q   Y  u@@@ 4@@ @   0         @9@@@@@@@9@@డO'fprintf   y     y  @L.@@@N@@I@ -@L.@N@@I@ .q@@O@@I@ -I@ .@@@I@ /"I@ -I@ .:H@ -I@ .@I@ .@I@ .I@ -@
@N@@I@ .I@ .I@ .@I@ .I@ -ڐ@I@ -I@ -א@I@ -I@ .e@I@ .pI@ -O$@@I@ - N@@I@ -@@I@ -<@I@ -@I@ -  0  ; : : ; ; ; ; ;@:`Z@[@ T=@@@@ఐ:3#ppf N  y   O  y  @:@@9~@@ภLL Y  y   Z  y  ALภLKKภL!J
JภL&JL ภL+J<J;@@KpI@ -ՠiI@ .I@ .*J@ .;J@ .LRJ@ .+J@ .<J@ .MWI@ .nJ@ ."J@ .#@@J@ .NJ@ .YK@77@7@L@@J@ .OJ@ .[J@ .ZV@@>@LL'$@@J@ .=J@ .Ka@@I@K2-&'%"@@J@ .,J@ .:l@ภLmIYIภLrI^I@^@I͠G@@J@ .oJ@ .y}@ภL~KjKภLKoKKs@s@K@@J@ .J@ .J@ .@A~@K@@J@ .J@ .J@ .@@@K@@J@ .J@ .J@ .@@@K@@J@ .J@ .@ภLIIภLLLภLKKK@@K@@J@ .J@ .J@ .@A@K@@J@ .J@ .J@ .@@@K@@J@ .J@ .J@ .@@@L"@@J@ .J@ .@ภLJfJeภLJ!J @@JCI@ -ޠ@@J@ .J@ .@ภLLaL`ภLIEID@@LC@@J@ .J@ / @ภMKK@@LנI@ .mI@ .I@ .I@ .I@ .נ@@J@ .J@ /@@@L1@@J@ .J@ .'@@@L;@@J@ .J@ .2@@@MF*$&'@@J@ .J@ .=@@%@Mu3-/0@@J@ .J@ .H@@0@M<
@@J@ .rJ@ .S@@;@M"@@J@ .-J@ .l^@@F@M-/(stuv@@J@ .J@ .)i@.@[%s@ %a@ %s@]V@V@M3@@J@ .J@ /
J@ /	u@@]\@@M@@J@ -J@ .~@@/Type definition          @@          @@J@ /@@డN$path(Printtyp          @0@@I@ /@@ఐ$path          @@@J@ /$@@1is not extensible          @@          @@J@ /%@@@@@Ġ2Extension_mismatch          @ࠠ$path
$          	@@@ M@@ @   0         @;@@@ࠠ#err
%          @@@ T@@ @ @@@ $    @@<@@డQ='fprintf .     /     @Ne@@@Q@@I@ /0@Ne@P@@I@ 0J@P@@I@ 0@P@@I@ 0@@QF@@I@ /<I@ 0@ C@@I@ 1yI@ /KI@ 0<\H@ /=I@ 0@I@ 0@I@ 0I@ /H@
I@ /L@I@ /MI@ /I@I@ /JI@ 0@I@ 0I@ 0~@I@ 0I@ 0>@I@ 0II@ /,Q`@@I@ /.Q@@I@ //@@I@ /-A@I@ /+@I@ /*  0  w v v w w w w w@<Mtn@o@ ɑ>hb@c@ ɓ?@@@@ఐ<r#ppf ɍ    ! Ɏ    $@<\@@;@@ภNSNQ ɘ    % ə    HANPภN[MAM@ภN`L
LภNeLN_ภNjLLà#<v>@@L@@J@ /J@ /J@ />@ภN{L(L@(@NNI@ /AvI@ /I@ /J@ /J@ /J@ /͠rI@ /J@ /J@ /J@ /J@ /Π
I@ /J@ /J@ /@@J@ /J@ /e@@J@Np"@@J@ /J@ /p@#<v>Z@Z@Nv@@J@ /J@ /J@ /|@@a@N94+,&#@@J@ /J@ /@@l@MxD=451.@@J@ /J@ /@ภNM|MภNMlMkภNM9NӠภNM8M7%<hov>@@M@@J@ 0%J@ 0(J@ 0'@ภNM L@@N tuI@ /J@ 0 J@ 0J@ 0#kJ@ 0J@ 0J@ 0$soJ@ /J@ /@@J@ 0&J@ 02@@@Nݠ
@@J@ 0J@ 0"@%<hov>@@N@@J@ 0J@ 04J@ 03@@@O.&$#@@J@ 0J@ 0@@@M7/.@@J@ /J@ /@ภO<LLภOALzLy@@LƠN@@J@ 0HJ@ 0R@ภOMNNภORNNNd@@N@@J@ 0lJ@ 0pJ@ 0o%@A@N@@J@ 0mJ@ 0rJ@ 0q0@@@N@@J@ 0nJ@ 0tJ@ 0s;@@ @N@@J@ 0cJ@ 0k@@ภO}M *LภOL/L@/@LݠI@ /D@@J@ 0J@ 0R@ภON<NภONAN'@;<1 2>F@F@N@@J@ 0J@ 0J@ 0h@AQ@N@@J@ 0J@ 0J@ 0s@B\@N@@J@ 0J@ 0J@ 0~@@c@N@@J@ 0J@ 0@ภOMCmMBภOLrL@r@M I@ /G@@J@ 0J@ 0@ภOO>O=ภOL"L!@@O @@J@ 0J@ 0@ภOLL̠ภOOROQภOL6L5@@O4@@J@ 1J@ 1@ภONN@@OȠРI@ 0FI@ 0aI@ 0I@ 0I@ 0I@ 0I@ 0I@ 0GI@ 0bI@ 0I@ 0I@ 0I@ 0I@ 0@@J@ 1J@ 1@@@O&@@J@ 1J@ 1@@@O/!#$@@J@ 0J@ 0@@@P*8*,-@@J@ 0J@ 0@@@PwA356@@J@ 0J@ 0@@@PGJ<>?@@J@ 0J@ 0@@@P%РSEȠGH@@J@ 0dJ@ 0%@@
@P0d\NӠPQ@@J@ 0KJ@ 0`0@@@P;es֠jؠ@@J@ /J@ 0E;@@ @PFݠ@@J@ /J@ /F@@+@PQ@@J@ /J@ /Q@	!@[<v>@[<hov>%s@ %s@;<1 2>%s@]%a@];@;@PW@@J@ /J@ 1J@ 1]@@BA@@Q	y@@J@ /;J@ /f@@.This extension   I  R   I  `@@   I  Q   I  a@@J@ 13u@@	%does not match the definition of type   I  c   I  @@   I  b   I  @@J@ 14@@డ $name$Path          @ <@@ < <
@ <
@@J@ 1= <	@@J@ 1<@J@ 1;@@J@ 1:@ @@J@ 19 <@@J@ 18@J@ 17@J@ 16@ <%ภ -  @ @ <'@ <$@@K@ 1S <#@@K@ 1R@K@ 1Q@@K@ 1P@@ఐ5$path D     E    @ǰ@@ @@K@ 1KK@ 1UK@ 1T@@ O     P    @@K@ 1J@@డ 4report_type_mismatch+Includecore b     c    @/@@@/@@J@ 1b@/@@J@ 1a@/@@J@ 1`@/@@J@ 1_@ F@@J@ 1^/@@J@ 1]@J@ 1\@J@ 1[@J@ 1Z@J@ 1Y@J@ 1X@@(the type ̉     ̊    @@ ̌     ̍    @@0#@@K@ 1}K@ 1K@ 1~@@.this extension ̝     ̞    @@ ̠     ̡    @@01@@K@ 1|K@ 1K@ 1-@@*definition ̱     ̲    @@ ̴     ̵     @@0?@@K@ 1{K@ 1K@ 1A@@ ̾     ̿    @@lI@ 1vF@@ఐ#err     
     
@M@@nJ@ 1U@@@@jV@Ġ1Rebind_wrong_type          #@qࠠ#lid
&     %     (@@@ 
@@ @   0         @?@@@ࠠ#env
'     *     -@@@ @@ @ @ࠠ%trace
(     /     4@@@  @@ @ @@ @ @@@/ 	    5@@@!@@డR8report_unification_error(Printtyp   9  ?   9  `@.@@@.@@I@ 1@.@@I@ 1@..~@@I@ 1@@I@ 1.{.y@.v@@I@ 1.s@@I@ 1@I@ 1@@I@ 1@@.r@@I@ 1.o@@I@ 1@I@ 1@@.n@@I@ 1.k@@I@ 1@I@ 1.j@@I@ 1@I@ 1@I@ 1@I@ 1@I@ 1@I@ 1@I@ 1  0  L K K L L L L L@@#vp@q@ g@jd@e@ iA_Y@Z@ kB@@@@ఐ@J#ppf e  9  a f  9  d@@4@@?  0  c b b c c c c c@@@@@ఐ#env s  9  e t  9  h@@@.@@J@ 1J@ 1J@ 1@@ఐ%trace ͇  9  i ͈  9  n@0@@ ɞ.@@J@ 1J@ 1J@ 1@@J@ 1-@.ภ  r h@ r@.@.@@J@ 1.@@J@ 1@J@ 1@@J@ 1?@@@#ppf
k ʹ  o   ͵  o  @@@.@@K@ 1  0  ͵ ʹ ʹ ͵ ͵ ͵ ͵ ͵@i@@@@డU'fprintf          @R@@@U@@J@ 2@R@@U@@J@ 2J@ 2q@)Longident!t@@J@ 2J@ 2J@ 2m/@@J@ 2J@ 2J@ 2p@J@ 2}@J@ 2|J@ 2@J@ 2@J@ 2J@ 2@J@ 2J@ 2 U@@J@ 2U@@J@ 2@@J@ 24@J@ 1@J@ 1  0               @[/<@@ @ 1@U@ C@@@@ఐf#ppf          @@@V	@@K@ 2K@ 2K@ 2@@ภRR (     )    ARภRQEQD0The constructor 
@
@Q)@@K@ 2eK@ 2hK@ 2g6@ภROOภSRmRlภSR4#R3R'@'@R5@@K@ 2K@ 2K@ 2P@A2@R;@@K@ 2K@ 2K@ 2[@@=@R?@@K@ 2K@ 2K@ 2f@@D@Rp@@K@ 2K@ 2k@ภS1QNQ(has typeS@S@Qo@@K@ 2K@ 2K@ 2|@ภSBQS_QR@_@SJ@ 2QJ@ 2cJ@ 2wJ@ 2RJ@ 2dJ@ 2x@@K@ 2K@ 2@@t@S*@@K@ 2K@ 2@@@S5 @@K@ 2K@ 2@@@S@)$%&'@@K@ 2fK@ 2~@@@SK2-./0@@K@ 2SK@ 2b@<The constructor %a@ has type@@SQ@@K@ 2TK@ 2K@ 2@@@@T@@K@ 2K@ 2P@@డT)longident(Printtyp          @@NN)formatter@@ @  @@@ @  T@@ @  @ @  @ @  @TVzzTVz@@T@@@-J@ 2@@ఐ+#lid          @@@/K@ 2@@P@@0D@@J@ 2J@ 2@@A   o  w     @@@0T@@J@ 10Q@@J@ 1@J@ 1J@ 2@@@#ppf
l 3     4    @@@0\@@K@ 2@@డWQ'fprintf B    C   @Ty@@@W3@@J@ 2@Ty0s@@J@ 3pJ@ 2J@ 2WC@@J@ 2V@@J@ 2@@J@ 2@J@ 2@J@ 2  0  Z Y Y Z Z Z Z Z@60@@ @ 2@0@ vD@@@@ఐA#ppf p    q   @@@Wc@@K@ 2K@ 3K@ 3@@ภT=T; ς    σ   3AT:ภTERR>but was expected to be of type
@
@R@@K@ 3LK@ 3OK@ 3N6@ภTVRgRf@@T)PW@@K@ 2K@ 38K@ 3J[J@ 39J@ 3K@@K@ 3MK@ 3YP@@.@T>e
@@K@ 3:K@ 3I[@>but was expected to be of type>@>@TD@@K@ 3;K@ 3[K@ 3Zg@@ED@@T})}@@K@ 2K@ 37p@@M@@0@@J@ 3rJ@ 3qv@@A         4@@@1@@J@ 10@@J@ 1@J@ 1J@ 3t(@@@@BH@ 1}@Ġ/Rebind_mismatch  5 9  5 H@ࠠ#lid
)  5 J  5 M@@@ @@ @   0         @B@@@ࠠ!p
*  5 O  5 P@@@ @@ @ @ࠠ"p'
+  5 R  5 T@@@ @@ @ @@@+  5 U@@C@@డX1'fprintf " Y _ # Y f@UY@@@X@@I@ 3@UY@W@@I@ 4:@@X,@@I@ 3I@ 4m@e@@I@ 5I@ 3I@ 4iCBH@ 3I@ 4l@I@ 4y@I@ 4xI@ 3@
@X	@@I@ 4@X@@I@ 4@X@@I@ 5@X@@I@ 5W@X%@@I@ 5-I@ 3I@ 5@I@ 5I@ 5O@I@ 5VI@ 5@I@ 5I@ 4@I@ 4I@ 4@I@ 4I@ 3@I@ 3I@ 3@I@ 3I@ 4.@I@ 49I@ 3}Xk@@I@ 3X@@I@ 3@@I@ 3~X@I@ 3|@I@ 3{  0  Ђ Ё Ё Ђ Ђ Ђ Ђ Ђ@CY@@ НE@@ ПF|@}@ СG@@@@ఐC#ppf Л Y g М Y j@Cj@@B@@ภUaU_ Ц k s Ч k AU^ภUiTOTNภUnT
TภUsSUmภUxSS@@UKI@ 3I@ 3I@ 3J@ 4J@ 4XJ@ 3J@ 4J@ 4]I@ 47J@ 3J@ 3@@J@ 4J@ 4"Q@@7@7@Ua@@J@ 4J@ 4$J@ 4#\@@>@U'$@@J@ 4J@ 4g@@I@Tc2-&'%"@@J@ 3J@ 4r@ภUS=YS<ภUR^R@^@SG@@J@ 48J@ 4B@ภUU7jU6ภUToTTs@s@T@@J@ 4\J@ 4`J@ 4_@A~@U@@J@ 4]J@ 4bJ@ 4a@@@U	@@J@ 4^J@ 4dJ@ 4c@@@U:@@J@ 4SJ@ 4[@ภURRภV UlUkภVU3U2U@@U4@@J@ 4J@ 4J@ 4@A@U:@@J@ 4J@ 4J@ 4@@@U>@@J@ 4J@ 4J@ 4@@@Uo@@J@ 4J@ 4@ภV0SSภV5SnSm@@S*I@ 3*@@J@ 4J@ 4@ภVBUUภVGUuUtUY@@Uv@@J@ 4J@ 4J@ 4@A@U|@@J@ 4J@ 4J@ 4@@ @U@@J@ 4J@ 4J@ 4%@@@U@@J@ 4J@ 4*@ภVrSSภVwSS@@SҠeI@ 3e@@J@ 4J@ 4<@ภVU#UภVU(UU,@,@U@@J@ 5J@ 5	J@ 5Q@A7@U@@J@ 5J@ 5J@ 5
\@@B@U@@J@ 5J@ 5
J@ 5g@@I@U@@J@ 4J@ 5l@ภVT7ST6ภVSXS@X@TI@ 3@@J@ 5J@ 5'~@ภVV2eV1ภVUjUUn@n@U@@J@ 5=J@ 5AJ@ 5@@Ay@V @@J@ 5>J@ 5CJ@ 5B@@@V@@J@ 5?J@ 5EJ@ 5D@@@V5@@J@ 54J@ 5<@ภVTyTxภVT4T3@@TVI@ 3@@J@ 5UJ@ 5_@ภWVtVsภW
V;V:V@@V<@@J@ 5uJ@ 5yJ@ 5x@A@VB@@J@ 5vJ@ 5{J@ 5z@@@VF@@J@ 5wJ@ 5}J@ 5|@@@Vw@@J@ 5lJ@ 5t@ภW8TTภW=TvTu@@TI@ 3@@J@ 5J@ 5@ภWJVVภWOSS@@V@@J@ 5J@ 5@ภWYUjUi@@W,+I@ 46I@ 4QI@ 4sI@ 4RI@ 4tߠ@@J@ 5J@ 5*@@@W@?@@J@ 5J@ 55@@@WK;@@J@ 5mJ@ 5@@@"@WV\*$ &'@@J@ 5XJ@ 5kK@@-@Wa5/12@@J@ 55J@ 5TV@@8@Wly@:<=@@J@ 5 J@ 53a@@C@WwKE!GH@@J@ 4J@ 5l@@N@WVP,RS@@J@ 4J@ 4w@@Y@WCa[7]^@@J@ 4J@ 4@@d@WlfBhi@@J@ 4J@ 4@@o@WwqMst@@J@ 4J@ 4@@z@W|X~@@J@ 4J@ 4@@@Wc@@J@ 4TJ@ 4z@@@WĠhnjk@@J@ 4;J@ 4P@@@WϠoxvz{@@J@ 3J@ 45@@@Wڠ٠ڠ۠@@J@ 3J@ 3@>@[%s@ %a@ %s@ %s@ %s@ %s@ %s@]@@W@@J@ 3J@ 5J@ 5@@@@X9)@@J@ 3J@ 3@@/The constructor s   t  @@ v   w  @@GJ@ 5@@డYT)longident(Printtyp Ӈ   ӈ  @@@PI@ 5@@ఐ#lid Ӗ   ӗ  @
@@RJ@ 5@@,extends type ӣ   Ӥ  @@ Ӧ   ӧ  @@RJ@ 5#@@డ |$name$Path ӹ   Ӻ  @ C@@ C C@ C@@J@ 5 C@@J@ 5@J@ 5@@J@ 5@ @@J@ 5 C@@J@ 5@J@ 5@J@ 5K@ Cϐภ  ӯ ȥ@ ӯ@ CѠ@ C@@K@ 5 C@@K@ 5@K@ 5@@K@ 5]@@ఐꠐ!p      @c@@ @@K@ 5K@ 5K@ 5q@@      @@K@ 5v@@	 whose declaration does not match      @@    	  @@J@ 5@@7the declaration of type      5@@      6@@J@ 5@@డ $name$Path *  8 +  A@ D*@@ D* D(@ D%@@J@ 5 D$@@J@ 5@J@ 5@@J@ 5@ @@J@ 5 D#@@J@ 5@J@ 5@J@ 5@ D@ภ H   @  @ DB@ D?@@K@ 6 D>@@K@ 6@K@ 6@@K@ 6@@ఐN"p' _  B `  D@Ұ@@ #@@K@ 6	K@ 6K@ 6@@ j  7 k  E@@K@ 6@@M@@!@Ġ.Rebind_private w  F J x  F X@٩ࠠ#lid
, Ԁ  F Y ԁ  F \@@@ N@@ @   0  ԁ Ԁ Ԁ ԁ ԁ ԁ ԁ ԁ@GU@@@@@@@G@@డ\'fprintf ԑ ` f Ԓ ` m@YȰ@@@\@@I@ 6@YȠ@\S@@I@ 6@@\@@I@ 6+I@ 6@@@I@ 7}I@ 64I@ 6GH@ 6,I@ 6@I@ 7@I@ 7
I@ 61@
@\x@@I@ 7AI@ 6rI@ 79@I@ 7@I@ 65@I@ 66I@ 62@I@ 63I@ 6@I@ 6I@ 6\@@I@ 6\n@@I@ 6@@I@ 6<@I@ 6@I@ 6  0         @G`Z@[@ H@@@@ఐG͠#ppf  ` n  ` q@G@@G@@ภYY  ` r  ` AYภYXXภYXS
XRภYX YภYWW@@YpI@ 60iI@ 6qI@ 6J@ 6J@ 6RJ@ 6J@ 6J@ 6WI@ 6J@ 6}J@ 6~@@J@ 6J@ 6K@E=7@7@Y@@J@ 6J@ 6J@ 6V@@>@Y'$@@J@ 6J@ 6a@@I@X2-&'%"@@J@ 6J@ 6l@ภZWYWภZWE^WD@^@WgG@@J@ 6J@ 6}@ภZYjYภZYKoYJY/s@s@YL@@J@ 6J@ 6J@ 6@A~@YR@@J@ 6J@ 6J@ 6@@@YV@@J@ 6J@ 6J@ 6@@@Y@@J@ 6J@ 6@ภZHW4W3ภZMYYภZRYYYd@@Y@@J@ 7'J@ 7+J@ 7*@A@Y@@J@ 7(J@ 7-J@ 7,@@@Y@@J@ 7)J@ 7/J@ 7.@@@Y@@J@ 7J@ 7&@ภZ}X WภZWW@@WݠI@ 69@@J@ 7?J@ 7I@ภZYYภZVV@@Y@@J@ 7VJ@ 7[@ภZXX@@ZqI@ 6I@ 6I@ 7I@ 6I@ 7נ@@J@ 7WJ@ 7c@@@Z1@@J@ 7BJ@ 7U'@@@Z;@@J@ 7J@ 7>2@@@ZF*$&'@@J@ 7J@ 7=@@%@Zu3-/0@@J@ 6J@ 7H@@0@Z<
@@J@ 6J@ 6S@@;@Z@@J@ 6J@ 6^@@F@ZǠ/(stuv@@J@ 6sJ@ 6i@.@[%s@ %a@ %s@]V@V@Z@@J@ 6tJ@ 7eJ@ 7du@@]\@@[@@J@ 6*J@ 6p~@@/The constructor `   a  @@ c   d  @@J@ 7y@@డ\A)longident(Printtyp t   u  @@@I@ 7z@@ఐ#lid փ   ք  @@@J@ 7@@*is private ֐   ֑  @@ ֓   ֔  @@J@ 7@@@@@Ġ(Variance ֠   ֡  @ŠĠ1Typedecl_variance,Bad_variance ֫   ֬  @  < ,Bad_varianceA@@ @U@E.variance_error@@ @RN@@ @SR@@ @T@C@AAB@Agg@@@Lࠠ!n
-       @@@@@ @   0         @I@@@ࠠ"v1
.      @@@r@@ @ @ࠠ"v2
/      @@@@@ @ @@@      
@@ ҫ@@K@ !@@@T@@I"@@@ࠠ(variance
m       @@@@ @@ @ 7J@ 7 @@ @ 7J@ 7 @@ @ 7J@ 7@ @ 7J@ 7 q@@ @ 7J@ 7@ @ 7J@ 7  0         @I\V@W@ 6IPJ@K@ 8JE?@@@ :K@@@@ 
sࠠ!p
o 8  " 9  #@@@1  0  6 5 5 6 6 6 6 6@B ?   @  A@@@@ࠠ!n
p H  $ I  %@@@;@ࠠ!i
q R  & S  '@@@?@@ V  ! W  (@@QLG@L@ 7"@@@ࠠ#inj
r g + 7 h + :@@@ ְ@@ @ 7K@ 7  0  j i i j j j j j@7?j@:@ ׅM1f@,@ ׇN)b@$@ ׉O@@@ఐ0!i ׂ + @ ׃ + A@
@@o@*injective  ׊ + H ׋ + R@@ ׍ + G ׎ + S@@# @  ו + Z@@ ח + Y ט + [@@/K@ 7,@ ל + =@@1.@@ מ + 3@@ఐs!p ׫ _ m ׬ _ n@:@@  0  ש ר ר ש ש ש ש ש@@MG@H@ P@@@ఐr!n ׺ _ p ׻ _ q@G@@@@@@@ @ 7@Ġ հ 	 w  	 w @ @@@@#@Ġ ް 	 w  	 w @ @@@@,@@
@@Ҡ@M@ 71@@1@@డ ֭!^ 	 w  	 w @ rv@@@ rv@@K@ 7@ rs@@K@ 7 rr@@K@ 7@K@ 7@K@ 7J@@ఐ#inj 	 w  	 w @T@@ r@@L@ 7L@ 7L@ 7^@@)invariant 	 w  	 w @@ 	 w  	 w @@ r@@L@ 7L@ 7L@ 7r@@	@@s@Ġ 4 -
   .
  @ 3@@@@$@Ġ ͏ 6
   7
  @ ͎@@@@'@@
@@1,@M@ 7@@@@డ !^ G
   H
  @ rհ@@@ r@@K@ 7@ r@@K@ 7 r@@K@ 7@K@ 7@K@ 7@@ఐ#inj a
   b
  @@@ r@@L@ 7L@ 7L@ 7@@)covariant s
   t
  @@ v
   w
  @@ r@@L@ 7L@ 7L@ 7@@	@@eJ@ 7@Ġ  ؎   ؏  @ @@@@@Ġ Ξ ؗ   ؘ  @ Ν@@@@@@
@@@M@ 7@@@@డ m!^ ب   ة  @ s6@@@ s6@@K@ 7@ s3@@K@ 7 s2@@K@ 7@K@ 7@K@ 7
@@ఐ[#inj      @@@ sR@@L@ 8L@ 8L@ 8@@-contravariant      @@      @@ s^@@L@ 8L@ 8L@ 82@@	@@J@ 85@Ġ H   	   @ G@@@@D@Ġ Q      @ P@@@@M@@
@@@M@ 7R@@R@@డ  ) + 
      !@ (@@@ U@@K@ 8K@ 8@ )@@K@ 8@K@ 8
@K@ 8k@@ఐ#inj #   $  @u@@x@@  .  #@@ 0  " 1  $@@#L@ 8@@@@ @@K@ 8L@ 8@,unrestricted ?  + @  7@@ B  * C  8@@)J@ 8@ఐ砐#inj N  >@@@K@ 8@ S  @@@@A U _ g@@9@@@:@@AA@@S=@ @ 8G  0  U T T U U U U U@@@@@@@ࠠ&suffix
t e K U f K [@@@@ @@ @ 8J@ 8J ظ@@ @ 8J@ 8K@ @ 8LJ@ 8I  0  r q q r r r r r@Xy@z@ ًL@@@@!n
v م K \ ن K ]@@@  0  ك ق ق ك ك ك ك ك@( ٌ K Q ٍ  @@@@@@ࠠ$teen
w ٘ ` l ٙ ` p@@@ @@ @ 8^K@ 8Q  0  ٛ ٚ ٚ ٛ ٛ ٛ ٛ ٛ@%7@@ ٴR@@@డ r ˠ Ͱ ٬ `  ٭ ` @ ʰ@@@ @@K@ 8nK@ 8V@ @@K@ 8U@K@ 8T@K@ 8S@@డ ؍!/  ` ~  ` @@ (@@ @ @ .@@ @ $@@ @ @ @ @ @ А'%divintBA Ϭ@@@@ Ϭj77 ϭj772@@ ϫs@@@@@L@ 8d@@@L@ 8c;@@L@ 8b@L@ 8a@L@ 8`Q@@డ #mod  ` v  ` y@@@@ @ @ b@@ @  f@@ @ @ @ @ @ Ր'%modintBA @@@@ u88 u89@@ t@@@@@M@ 8v@@@M@ 8u@@M@ 8t@M@ 8s@M@ 8r@@ఐ!n 0 ` t 1 ` u@@@J@ 8J@ 8J@ 8J@ 8M@@ d A ` z B ` }@@@@@N@ 8N@ 8N@ 8@@ K ` s@@@@M@ 8pM@ 8N@ 8@@J Z ` @@@@M@ 8oM@ 8M@ 8@@	@@@@A j `  k ` @@L@ 8@@$@@@@ p ` h@@డ A {   |  @~@@@@@K@ 8@~@@K@ 8}@@K@ 8@K@ 8@K@ 8  0  چ څ څ چ چ چ چ چ@@@ ڟS@@@@ఐ!n ڙ   ښ  @@@e@@J ڣ   ڤ  @@@@L@ 8L@ 8L@ 8!@@	@@@@ @ 8%@A ڸ   ڹ  @@@@L@ 8L@ 84@@4@డ َ#not      @ ڰ@@@ @@J@ 8 @@J@ 8@J@ 8I@@ఐF$teen      @S@@ @@K@ 8K@ 8K@ 8]@@ 
@@ ʻ@@J@ 8K@ 8c@"st      @@      @@m@B       @@@@L@ 8L@ 8|@@|@డ #not      @ "@@@ "@@J@ 8 !@@J@ 8@J@ 8@@ఐ$teen &   '  @@@ 9@@K@ 8K@ 8K@ 8@@ 
@@ @@J@ 8K@ 8@"nd ;   <  @@ >   ?  @@J@ 8@C J   K  @@C@@L@ 8L@ 8@@@డ  #not [   \  @ l@@@ l@@J@ 8 k@@J@ 8@J@ 8@@ఐؠ$teen p   q  @@@ Ƀ@@K@ 8K@ 8K@ 8@@ 
@@ M@@J@ 8K@ 8@"rd ۅ   ۆ  	@@ ۈ   ۉ  
@@J@ 8@@ ے   ۓ  @@@@L@ 8@@@@"th ۜ   ۝  @@ ۟  @@.J@ 8@@A ۣ  @@0@5@@1@@A!A@@:4@ @ 8  0  ۣ ۢ ۢ ۣ ۣ ۣ ۣ ۣ@ @@@@@ఐ蠐!n ۴ ( 5 ۵ ( 6@@@@@ @ 8  0  ۵ ۴ ۴ ۵ ۵ ۵ ۵ ۵@D[U@V@ Q@@@Ġ6Variance_not_reflected  < E  < [@  < 6Variance_not_reflected@@ @N@@@ACAD@AcSScSk@@@I@@
@@"@@M@ 9I  0         @@@@@@@డc'fprintf  _ j  _ q@a@@@c@@K@ 9c@a@c@@K@ :
@c@@K@ :J M@@I@ >J@ 9pK@ 9K@ :>@K@ :IK@ 9@K@ :	K@ 9_c@@K@ 9ac@@K@ 9b@@K@ 9` @K@ 9^@K@ 9]7@@ఐN#ppf  _ r  _ u@N@@N5D@@ภ``ݰ $ _ v % _ A`ܠภ`__̠ภ`_
_ภ`_Q`ภ`__@@`ɠPK@ 9td5@@L@ 9oL@ 9L@ 9L@ 9L@ 9TL@ 9L@ 9L@ 9YK@ :L@ 9iL@ 9@@L@ 9L@ 9@Lr;@;@`@@L@ 9L@ 9L@ 9@@B@a+(@@L@ 9L@ 9@@M@_61&'%"@@L@ 9L@ 9@ภa<^]^ภaA^zb^y@b@^K@@L@ :L@ :@ภaM`n`ภaR`s``dw@w@`@@L@ :,L@ :0L@ :/@A@`@@L@ :-L@ :2L@ :1@@@`@@L@ :.L@ :4L@ :3@@@`@@L@ :#L@ :+@ภa}_ ^ภa^^@@^ݠK@ 9w@@L@ :HL@ :R@ภa``ภa```@@`@@L@ :lL@ :pL@ :o@A@`@@L@ :mL@ :rL@ :q@@@`@@L@ :nL@ :tL@ :s!@@@`@@L@ :cL@ :k&@ภa``"It@@_@@L@ :L@ :L@ :7@ภa__@@aL@ :L@ :!L@ :FL@ :aL@ :K@ :"K@ :GK@ :bK@ :ܠ	
@@L@ :L@ :X@@
@a8@@L@ :dL@ :c@@@aʠC#@@L@ :KL@ :`n@@#@aՠ,"$%@@L@ :$L@ :Ey@@.@a`5@@L@ :L@ : @@9@a	@@L@ 9L@ :@@D@a-&opqr@@L@ 9L@ 9@,@[%s@ %s@ ItT@T@a@@L@ 9L@ :L@ :@@[Z@@b<@@L@ 9nL@ 9@@	7In this definition, a type variable has a variance that ݏ   ݐ  @@ ݒ   ݓ  @@L@ :@@	6is not reflected by its occurrence in type parameters. ݞ   ݟ  @@ ݡ   ݢ  @@L@ :@@@@@Ġ+No_variable ݰ   ݱ  &@  < +No_variable@@@@CAD@AbEEbER@@@H@@
	@@@@M@ 9M@@@@డe'fprintf  * 5  * <@b@@@e@@K@ :@b@e@@K@ ;[@e@@K@ ;J@ :K@ ;K@ ;@K@ ;K@ ;O@K@ ;ZK@ :e@@K@ :e@@K@ :@@K@ :@K@ :@K@ :@@ఐPߠ#ppf  * =  * @@Pɰ@@P%@@ภbb  * A  * MAbภbaaภbae
adภba2b̠ภb``@@bMK@ :Šf@@L@ :L@ ; L@ ;L@ ;%L@ ;6QL@ ;L@ ;&L@ ;7VK@ ;XL@ ;fL@ ;
@@L@ ;8L@ ;Cc@NS;@;@b@@L@ ;9L@ ;EL@ ;Dn@@B@b+(@@L@ ;'L@ ;5y@@M@aƠ61&'%"@@L@ ;L@ ;$@ภc`]`ภc"`[b`Z@b@`}K@@L@ ;YL@ ;c@ภc.bnbภc3basb`bEw@w@bb@@L@ ;}L@ ;L@ ;@A@bh@@L@ ;~L@ ;L@ ;@@@bl@@L@ ;L@ ;L@ ;@@@b@@L@ ;tL@ ;|@ภc^``ภcc``@@`K@ :Ƞ@@L@ ;L@ ;@ภcpbb۠ภcu__@@b@@L@ ;L@ ;@ภcaa@@cRL@ ;WL@ ;rL@ ;L@ ;K@ ;sK@ ;K@ ;@@L@ ;L@ ;@@@cj@@L@ ;L@ ;@@@cu?@@L@ ;uL@ ;@@@c(Ǡà@@L@ ;\L@ ;q$@@@cȠܠѠϠӠ@@L@ ;L@ ;V/@@@c+,-.@@L@ ;L@ ;:@*@[%s@ %s@]@@c@@L@ ;L@ ;L@ ;F@@@@dNQA@@L@ :L@ :O@@	5In this definition, a type variable cannot be deduced / N \ 0 N @@ 2 N [ 3 N @@_L@ ;^@@9from the type parameters. >   ?  @@ A   B  @@gL@ ;m@@@@an@Ġ6Variance_not_deducible P   Q  @  < 6Variance_not_deducible@@@BCAD@A4dll5dl@@@3J@@
	@@@@M@ 9Q@@@@డgu'fprintf f    g   @d@@@gW@@K@ ;@d@g(@@K@ <@g/@@K@ <J@ ;K@ <2K@ <@K@ <K@ <@K@ <K@ ;gt@@K@ ;g$@@K@ ;@@K@ ;@K@ ;@K@ ;@@ఐR#ppf ߚ    ߛ   @Ri@@Q@@ภd`d^ ߥ    ߦ   Ad]ภdhcNcMภdmc
cภdrbdlภdwbb@@dJMK@ ;g@@L@ ;L@ <1L@ <EL@ <VL@ <gQL@ <FL@ <WL@ <hVK@ <L@ <=fL@ <>@@L@ <iL@ <t@O;@;@dd@@L@ <jL@ <vL@ <u@@B@d+(@@L@ <XL@ <f@@M@cf61&'%"@@L@ <GL@ <U$@ภdb@]b?ภdaba@b@bK@@L@ <L@ <5@ภdd:nd9ภddsd cw@w@d@@L@ <L@ <L@ <J@A@d@@L@ <L@ <L@ <U@@@d@@L@ <L@ <L@ <`@@@d=@@L@ <L@ <e@ภdbbภeb<b;@@b^K@ ;@@L@ <L@ <w@ภed|d{ภedCdBd'@@dD@@L@ <L@ <L@ <@A@dJ@@L@ <L@ <L@ <@@@dN@@L@ <L@ <L@ <@@@d@@L@ <L@ <@ภe@cc"It@@c~@@L@ =L@ =
L@ =	@ภeQcbca@@e$L@ <L@ <L@ <L@ <L@ =K@ <K@ <K@ <K@ =ܠ	
@@L@ =L@ =@@
@e@5@@L@ <L@ =@@@eK@#@@L@ <L@ <@@#@eV,"$%@@L@ <L@ <@@.@ea]5@@L@ <L@ <@@9@el	@@L@ <HL@ <@@D@ew-&lmno@@L@ <3L@ <D@,@[%s@ %s@ ItT@T@e}@@L@ <4L@ =L@ ='@@[Z@@f/<@@L@ ;L@ <00@@	7In this definition, a type variable has a variance that !   !  J@@ !   !  K@@L@ =*?@@	+cannot be deduced from the type parameters. " L Z  " L @@ "" L Y #" L @@L@ =+N@@@@O@Ġ6Variance_not_satisfied 1#   2#  @  < 6Variance_not_satisfiedi@#intA@@ @M@A@CAD@Aa%%a%D@@@Gࠠ!n
 H#   I#  @@@@@ @ 9V@@@@@
@@M@ 9W@@@@డij'fprintf [$   \$  @f@@@iL@@K@ =6@f@i@@K@ =@i$@@K@ >#@Q@@K@ >|@i2@@K@ >J@ =CK@ =K@ >@K@ >K@ >n@K@ >{K@ >@K@ >"K@ =@K@ =K@ =2iw@@K@ =4i'@@K@ =5@@K@ =3+@K@ =1@K@ =0  0         @QK@L@ T@@@@ఐT#ppf $   $  @Tp@@S@@ภfgfe $   $  AfdภfoeUeTภfte
eภfydfsภf~dd@@fQ_K@ =Gi@@L@ =BL@ =L@ =L@ =L@ =UL@ =L@ =L@ =ZK@ =L@ =xL@ =@@L@ =L@ =O@Q;@;@fk@@L@ =L@ =L@ =Z@@B@f+(@@L@ =L@ =e@@M@em61&'%"@@L@ =L@ =p@ภfdG]dFภfdbd@b@d$K@@L@ =L@ =@ภffAnf@ภffsfew@w@f	@@L@ >L@ >	L@ >@A@f@@L@ >L@ >L@ >
@@@f@@L@ >L@ >
L@ >@@@fD@@L@ =L@ >@ภgddภg
dCdB@@deK@ =J@@L@ >!L@ >+@ภgffภgfJfIf.@@fK@@L@ >EL@ >IL@ >H@A@fQ@@L@ >FL@ >KL@ >J@@@fU@@L@ >GL@ >ML@ >L@@@f@@L@ ><L@ >D@ภgGee$The @@e@@L@ >^L@ >aL@ >`@ภgXR;R:ภg]%Int_d  < %Int_dQ@@@@P@P@Ag!Ug"U@@@gXE@@R@@L@ >xL@ >@ภgodd@@dʠBK@ =MFK@ >L@ >k@@L@ >yL@ >+@ภgQQ@@R)Q@@L@ >zL@ >7@ภge$e
ภgd)d@)@d\K@ =P\@@L@ >L@ >I@ภge6e/ type parameter;@;@e@@L@ >L@ >L@ >Z@ภgeGe@G@gs;L@ =L@ =L@ >L@ >:L@ >\L@ >vL@ >L@ >9K@ =K@ > K@ >;K@ >]K@ >wK@ >K@ >>@@L@ >L@ >@@o@g&I@@L@ >L@ >@@z@g/T!"@@L@ >}L@ >@@@g}8(_*+@@L@ >_L@ >u@@@gʠA1j34@@L@ >=L@ >[@@@gՠՠJ:u<=@@L@ >$L@ >9@@@gSCEF@@L@ =L@ >@@@g\@@L@ =L@ =@@@g@@L@ =L@ =@@@h@@L@ =L@ =@	!@[%s@ %s@ The %d%s type parameter@@h@@L@ =L@ >L@ >@@@@h'	@@L@ =AL@ =@@	&In this definition, expected parameter %   %  @@ %   %  @@5L@ >@@<variances are not satisfied. &  + &  G@@ &  * &  H@@=L@ >@@ఐr!n ' I V ' I W@'@@EL@ >,@@ఐ
f&suffix ' I Y ' I _@@@@
b@@L@ > @@L@ >@L@ >C@@ఐ!n ' I ` ' I a@M@@
y@@M@ >M@ >M@ >W@@ ' I X ' I b@@nM@ >\@@@@h]@@A  ( . ' I c@@@ఐ
0!n ( e r ( e s@ڰ@@
L@@ @ ? *@Ġ+No_variable ) y  
) y @\@@@@
\@@L@ ?:@@:@@ภ հ ) y  ) y @ @@@WH@ ?D@@ "*   #*  @@
q@@L@ ?O@@O@@డl?'fprintf 0+   1+  @ig@@@l!@@J@ ?@ig@k@@J@ ?@k@@J@ ?7H@ ?#J@ ?cJ@ ?@J@ ?J@ ?@J@ ?J@ ?l>@@J@ ?k@@J@ ?@@J@ ?@J@ ?@J@ ?@@ఐWI#ppf d+   e+  @W3@@Vp@@ภi*i( o+   p+  Ai'ภi2gg4 was expected to be 
@
@gp@@K@ ?vK@ ?yK@ ?x@ภiCffŠภiHff@@fTJ@ ?'T@@K@ ?K@ ?@ภiUi+i
l/@h@@K@ ?K@ ?K@ ?@ภieh;hРภijh@hh|D@D@h@@K@ ?K@ ?K@ ?@AO@h@@K@ ?K@ ?K@ ?@@Z@h@@K@ ?K@ ?K@ ?@@a@h@@K@ ?K@ ?@ภigkg*but it is p@p@g@@K@ ?K@ ?K@ ?	
@ภig)|g(ภiff@@gJ@ ?*@@K@ ?K@ ?	@ภiinimn@iQ@@K@ @K@ @K@ @	/@ภii4i3ภiff@@i@@K@ @$K@ @)	>@ภigg@@iՠm@@K@ ?"K@ ?bK@ ?tK@ ?K@ ?K@ ?K@ ?K@ ?K@ @K@ @"J@ ?uJ@ ?J@ ?J@ ?J@ ?J@ ?J@ @J@ @#@@K@ @%K@ @3	r@@@i٠-@@K@ @K@ @!	}@@@i6!"#$@@K@ ?K@ @
	@@@iq?*+,-@@K@ ?K@ ?	@@@i|H3456@@K@ ?K@ ?	@@@jQ<=>?@@K@ ?K@ ?	@@@jBZEFGH@@K@ ?K@ ?	@@@j cNOPQ@@K@ ?wK@ ?	@@)@j&lQRST@@K@ ?dK@ ?s	@	( was expected to be %s,@ but it is %s.@]9@9@j,@@K@ ?eK@ @5K@ @4	@@@?@@jޠwg@@K@ ?!K@ ?a	@@ఐŠ(variance ,   ,  @L@@@ ݅@@K@ @M ݉@@K@ @N գ@@K@ @O@K@ @L S@@K@ @K@K@ @J
@@ఐ"v2 ,   ,  @@@{@@L@ @]
@@ ,   ,  @@L@ @X
@@ఐ(variance ,  	  ,  	@@@@ ݼ@@K@ @l @@K@ @m @@K@ @n@K@ @k @@K@ @j@K@ @i
8@@ఐ@"v1 ,  		 ,  	@@@ز@@L@ @|
H@@ !,   ",  	@@L@ @w
M@@@@
N@@A '( e k (,  	
@@
Q@9@@
R@@@@@@@Ġ<Unavailable_type_constructor 4- 	 	 5- 	 	.@ xࠠ!p
0 =- 	 	/ >- 	 	0@@@ @@ @   0  > = = > > > > >@Y@@@@@@@Y<@@డn]'fprintf N. 	4 	: O. 	4 	A@k@@@n?@@I@ @@k@@nQ@@I@ @I@ A@!&@@I@ AbI@ @I@ @YgH@ @I@ A @I@ A
@I@ AI@ @@
I@ @@I@ @I@ @@I@ @I@ @nk@@I@ @n@@I@ @@@I@ @,@I@ @@I@ @  0         @YWPJ@K@ U@@@@ఐYz#ppf . 	4 	B . 	4 	E@Yd@@X@@ภk[kY . 	4 	F . 	4 	qAkXภkcii7The definition of type 
@
@i@@J@ @J@ @J@ @,@ภkth`h_ภkyjjภk~j#jj'@'@j@@J@ A)J@ A-J@ A,F@A2@j@@J@ A*J@ A/J@ A.Q@@=@j@@J@ A+J@ A1J@ A0\@@D@j@@J@ A J@ A(a@ภkjNj.is unavailableS@S@i@@J@ A>J@ AAJ@ A@r@ภki_i@_@kI@ @I@ @I@ AI@ @I@ @I@ A@@J@ A?J@ AI@@t@k@@J@ A!J@ A=@@@k @@J@ AJ@ A@@@kѠ)$%&'@@J@ @J@ A@@@kàܠ2-./0@@J@ @J@ @@	)The definition of type %a@ is unavailable@@k@@J@ @J@ AKJ@ AJ@@@@l{@@J@ @J@ @@@డm.$path(Printtyp a. 	4 	r b. 	4 	@ @@I@ A_@@ఐ3!p p. 	4 	 q. 	4 	@@@J@ Ad@@(@@@Ġ(Variance ~/ 	 	 / 	 	@ Ġ1Typedecl_variance1Varying_anonymous / 	 	 / 	 	@  < 1Varying_anonymous@@@@AAB@A mh nh@@@ lM@@
	@@ N@@K@ S@@@
@@ZT@@డo'fprintf 0 	 	 0 	 	@lװ@@@o@@I@ Ao@lנ@ob@@I@ B@oi@@I@ BY@op@@I@ BZH@ A|I@ AI@ B@I@ BI@ BM@I@ BXI@ B
@I@ BI@ Ako@@I@ Amoe@@I@ An@@I@ Al$@I@ Aj@I@ Ai@@ఐZ#ppf 0 	 	 0 	 	@Z@@Y@@ภll 0 	 	 0 	 	AlภlkkภlkF
kEภlklภljj@@lTI@ Ao@@J@ A{J@ AJ@ AJ@ AJ@ AQJ@ AJ@ AJ@ AVI@ BJ@ AʠmJ@ A@@J@ AJ@ B@X4;@;@l@@J@ AJ@ BJ@ B@@B@lݠ+(@@J@ AJ@ A@@M@k61&'%"@@J@ AJ@ A@ภlj]jภmj<bj;@b@j^K@@J@ BJ@ B!@ภml{nlzภmlBslAl&w@w@lC@@J@ B;J@ B?J@ B> @A@lI@@J@ B<J@ BAJ@ B@+@@@lM@@J@ B=J@ BCJ@ BB6@@@l~@@J@ B2J@ B:;@ภm?jjภmDj}j|@@jI@ A@@J@ BWJ@ BaM@ภmQllภmVlllh@@l@@J@ B{J@ BJ@ B~b@A@l@@J@ B|J@ BJ@ Bm@@@l@@J@ B}J@ BJ@ Bx@@@l@@J@ BrJ@ Bz}@ภmkkภmjj@@jI@ A@@J@ BJ@ B@ภmllภmii@@l@@J@ BJ@ B@ภmkk@@mu)J@ BJ@ B0J@ BUJ@ BpJ@ BJ@ BI@ B1I@ BVI@ BqI@ BI@ B@@J@ BJ@ B@@!@mI@@J@ BJ@ B@@,@mG'@@J@ BsJ@ B@@7@mf0$&'@@J@ BZJ@ Bo@@B@m9-/0@@J@ B3J@ BT@@M@mB!'#$@@J@ BJ@ B/@@X@m̠(<1/34@@J@ AJ@ B@@c@mנLE@@J@ AJ@ A@.@[%s@ %s@ %s@]s@s@m@@J@ AJ@ BJ@ B@@zy@@n[@@J@ AzJ@ A%@@8In this GADT definition, p1 	 	 q1 	 	@@ s1 	 	 t1 	 	@@J@ B4@@>the variance of some parameter 1 	 	 1 	 
@@ 1 	 	 1 	 
@@J@ BC@@1cannot be checked 2 
 
& 2 
 
7@@ 2 
 
% 2 
 
8@@J@ BR@@@@S@Ġ0Val_in_structure 3 
9 
= 3 
9 
M@@@@@@\^@@డq'fprintf 4 
Q 
W 4 
Q 
^@n@@@q@@I@ B@n\H@ BI@ Bq@@I@ BqX@@I@ B@@I@ B
@I@ B@I@ B@@ఐ\#ppf 4 
Q 
_ 4 
Q 
b@\@@[@@ภnn 4 
Q 
c 4 
Q 
Anภnll	1Value declarations are only allowed in signatures
@
@l@@J@ C>J@ CAJ@ C@@ภnll@@n?q@@J@ BJ@ C*J@ C<JI@ C+I@ C=@@J@ C?J@ CK@@.@nT
@@J@ C,J@ C;@	1Value declarations are only allowed in signatures>@>@n@@J@ C-J@ CMJ@ CL@@ED@@oMl)l@@J@ BJ@ C)@@}M@@n@Ġ?Multiple_native_repr_attributes /5 
 
 05 
 
@@@@@])@@డrJ'fprintf ;6 
 
 <6 
 
@or@@@r,@@I@ Ck@or]>H@ CxI@ Cgr9@@I@ Ciq@@I@ Cj@@I@ Ch
@I@ Cf@I@ Ce@@ఐ]D#ppf _6 
 
 `6 
 
@].@@\[@@ภo%o# j6 
 
 k6 
 
Ao"ภo-mm*Too many [
@
@mk@@J@ CJ@ CJ@ C:@ภo>nnภoC*Escaped_at  < *Escaped_atnq@@@EGCJ@Ao A		o A		@@@o> E@&@n@@J@ CJ@ CQ@ภoUm0m*unboxed]/[5@5@m@@J@ CJ@ CJ@ Cb@ภofnAnѠภok(F'@F@n@@J@ DJ@ Dq@ภoumPmΠ4untagged] attributesU@U@m@@J@ DJ@ DJ@ D@ภomam@a@oYr@@J@ CwJ@ CJ@ CJ@ CJ@ CJ@ DJ@ DI@ CI@ CI@ CI@ CI@ DI@ D
@@J@ DJ@ D&@@@o~#@@J@ DJ@ D@@@o, @@J@ CJ@ D @@@o 5&'()@@J@ CJ@ C@@@o͠>/012@@J@ CJ@ C@@@oؠG89:;@@J@ CJ@ C@	,Too many [@@unboxed]/[@@untagged] attributes@@o@@J@ CJ@ D(J@ D'@@@@pb]@@J@ CvJ@ C@@@@@Ġ:Cannot_unbox_or_untag_type D7 
  E7 
 @Ġ'Unboxed M7 
  N7 
 %@@@@@ @@K@ @@@@@^K@@డsl'fprintf ]8 ) / ^8 ) 6@p@@@sN@@I@ DF@p^`H@ DSI@ DBs[@@I@ DDs@@I@ DE@@I@ DC
@I@ DA@I@ D@4@@ఐ^f#ppf 8 ) 7 8 ) :@^P@@]yA@@ภpGpE 8 ) ; 9 d ApDภpOo5o4ภpTn
nภpYnpSภp^nonn@@p1=s@@J@ DRJ@ DJ@ DJ@ DJ@ D PI@ DJ@ DJ@ DJ@ DàI@ DJ@ DI@ D@@J@ DJ@ D@[<@<@pL@@J@ DJ@ DJ@ D@@C@pi* @@J@ DJ@ D@@N@oNt3()%"@@J@ DJ@ D@ภpn^n	"Don't know how to unbox this type.c@c@n@@J@ DJ@ DJ@ D@ภpp"op!ภpotoox@x@o@@J@ DJ@ EJ@ E@A@o@@J@ E J@ EJ@ E@@@o@@J@ EJ@ EJ@ E@@@p%@@J@ DJ@ D@ภpo@o?	6Only float, int32, int64 and nativeint can be unboxed.@@o$@@J@ EJ@ EJ@ E@ภppcpbภpmGmF@@pE@@J@ E,J@ E1@ภqoo@@p٠J@ DJ@ DJ@ EJ@ E*I@ DI@ EI@ E+@@J@ E-J@ E;@@@p@@J@ EJ@ E)*@@@p@@J@ DJ@ E5@@@q(Ƞ @@J@ DJ@ D@@@@qǠݠҠΠԠ@@J@ DJ@ DK@@@q)۠ܠݠ@@J@ DJ@ DV@	^@[Don't know how to unbox this type.@ Only float, int32, int64 and nativeint can be unboxed.@]@@q#@@J@ DJ@ E=J@ E<b@@@@qՠAA@@J@ DQJ@ Dk@@R"@@Cl@Ġ:Cannot_unbox_or_untag_type :   : 