diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,11 +1,20 @@
 # Changelog
 
-`lua` uses [PVP Versioning][1].
+`lpeg` uses [PVP Versioning][1].
 
+## lpeg 1.0.1
+
+Released 2021-11-08.
+
+  - The 're' package is a Lua script that's part of LPeg. It is now
+    included as a byte array in the C sources; a loader function for
+    this library is provided, and 're' is now handled by the lpeg
+    searcher.
+
 ## lpeg 1.0.0
 
-Release pending.
+Released 2021-10-31.
 
-- Initially created.
+- A wild package appears.
 
 [1]: https://pvp.haskell.org
diff --git a/cbits/placeholder.c b/cbits/placeholder.c
--- a/cbits/placeholder.c
+++ b/cbits/placeholder.c
@@ -1,12 +1,18 @@
 #include <string.h>
-
 #include "lua.h"
 
 int luaopen_lpeg (lua_State *L);
 int luaopen_lpeg (lua_State *L)
 {
-  const char *msg =
   lua_pushliteral(L, "Non-functional placeholder. Configuration prevented "
                   "the inclusion of the real LPeg package.");
+  lua_error(L);
+}
+
+int luaopen_re (lua_State *L);
+int luaopen_re (lua_State *L)
+{
+  lua_pushliteral(L, "Non-functional placeholder. Configuration prevented "
+                     "the inclusion of the real 're' package.");
   lua_error(L);
 }
diff --git a/cbits/re.c b/cbits/re.c
new file mode 100644
--- /dev/null
+++ b/cbits/re.c
@@ -0,0 +1,10 @@
+#include "lua.h"
+#include "lauxlib.h"
+#include "re.h"
+
+int luaopen_re(lua_State *L);
+int luaopen_re(lua_State *L) {
+  luaL_loadstring(L, cbits_lpeg_1_0_2_re_lua);
+  lua_call(L, 0, 1);
+  return 1;
+}
diff --git a/cbits/re.h b/cbits/re.h
new file mode 100644
--- /dev/null
+++ b/cbits/re.h
@@ -0,0 +1,541 @@
+unsigned char cbits_lpeg_1_0_2_re_lua[] = {
+  0x2d, 0x2d, 0x20, 0x24, 0x49, 0x64, 0x3a, 0x20, 0x72, 0x65, 0x2e, 0x6c,
+  0x75, 0x61, 0x20, 0x24, 0x0a, 0x0a, 0x2d, 0x2d, 0x20, 0x69, 0x6d, 0x70,
+  0x6f, 0x72, 0x74, 0x65, 0x64, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69,
+  0x6f, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, 0x6f, 0x64, 0x75,
+  0x6c, 0x65, 0x73, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x74, 0x6f,
+  0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65,
+  0x2c, 0x20, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x2c, 0x20, 0x65, 0x72, 0x72,
+  0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6f, 0x6e, 0x75, 0x6d, 0x62, 0x65,
+  0x72, 0x2c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2c, 0x20, 0x70, 0x72, 0x69,
+  0x6e, 0x74, 0x2c, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x0a, 0x6c, 0x6f,
+  0x63, 0x61, 0x6c, 0x20, 0x73, 0x65, 0x74, 0x6d, 0x65, 0x74, 0x61, 0x74,
+  0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x73, 0x65, 0x74, 0x6d, 0x65,
+  0x74, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x6c, 0x6f, 0x63, 0x61,
+  0x6c, 0x20, 0x6d, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72,
+  0x65, 0x22, 0x6c, 0x70, 0x65, 0x67, 0x22, 0x0a, 0x0a, 0x2d, 0x2d, 0x20,
+  0x27, 0x6d, 0x27, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20,
+  0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x61, 0x72, 0x73,
+  0x65, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e,
+  0x73, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x27, 0x6d, 0x6d, 0x27, 0x20,
+  0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64,
+  0x20, 0x74, 0x6f, 0x0a, 0x2d, 0x2d, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74,
+  0x65, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e,
+  0x73, 0x3b, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x2c, 0x20,
+  0x27, 0x72, 0x65, 0x27, 0x20, 0x72, 0x75, 0x6e, 0x73, 0x20, 0x6f, 0x6e,
+  0x20, 0x27, 0x6d, 0x27, 0x2c, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69,
+  0x6e, 0x67, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x0a,
+  0x2d, 0x2d, 0x20, 0x6f, 0x6e, 0x20, 0x27, 0x6d, 0x6d, 0x27, 0x0a, 0x6c,
+  0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6d, 0x6d, 0x20, 0x3d, 0x20, 0x6d, 0x0a,
+  0x0a, 0x2d, 0x2d, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x27,
+  0x73, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x0a,
+  0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6d, 0x74, 0x20, 0x3d, 0x20, 0x67,
+  0x65, 0x74, 0x6d, 0x65, 0x74, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x28,
+  0x6d, 0x6d, 0x2e, 0x50, 0x28, 0x30, 0x29, 0x29, 0x0a, 0x0a, 0x0a, 0x0a,
+  0x2d, 0x2d, 0x20, 0x4e, 0x6f, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x67,
+  0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73,
+  0x65, 0x73, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x69,
+  0x73, 0x20, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x0a, 0x6c, 0x6f, 0x63, 0x61,
+  0x6c, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20,
+  0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x0a, 0x69, 0x66, 0x20,
+  0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x3d, 0x20, 0x22,
+  0x4c, 0x75, 0x61, 0x20, 0x35, 0x2e, 0x32, 0x22, 0x20, 0x74, 0x68, 0x65,
+  0x6e, 0x20, 0x5f, 0x45, 0x4e, 0x56, 0x20, 0x3d, 0x20, 0x6e, 0x69, 0x6c,
+  0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
+  0x20, 0x61, 0x6e, 0x79, 0x20, 0x3d, 0x20, 0x6d, 0x2e, 0x50, 0x28, 0x31,
+  0x29, 0x0a, 0x0a, 0x0a, 0x2d, 0x2d, 0x20, 0x50, 0x72, 0x65, 0x2d, 0x64,
+  0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+  0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x50, 0x72, 0x65, 0x64, 0x65,
+  0x66, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x6e, 0x6c, 0x20, 0x3d, 0x20, 0x6d,
+  0x2e, 0x50, 0x22, 0x5c, 0x6e, 0x22, 0x20, 0x7d, 0x0a, 0x0a, 0x0a, 0x6c,
+  0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6d, 0x65, 0x6d, 0x0a, 0x6c, 0x6f, 0x63,
+  0x61, 0x6c, 0x20, 0x66, 0x6d, 0x65, 0x6d, 0x0a, 0x6c, 0x6f, 0x63, 0x61,
+  0x6c, 0x20, 0x67, 0x6d, 0x65, 0x6d, 0x0a, 0x0a, 0x0a, 0x6c, 0x6f, 0x63,
+  0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20,
+  0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65,
+  0x20, 0x28, 0x29, 0x0a, 0x20, 0x20, 0x6d, 0x6d, 0x2e, 0x6c, 0x6f, 0x63,
+  0x61, 0x6c, 0x65, 0x28, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x29, 0x0a,
+  0x20, 0x20, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x2e, 0x61, 0x20, 0x3d,
+  0x20, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x2e, 0x61, 0x6c, 0x70, 0x68,
+  0x61, 0x0a, 0x20, 0x20, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x2e, 0x63,
+  0x20, 0x3d, 0x20, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x2e, 0x63, 0x6e,
+  0x74, 0x72, 0x6c, 0x0a, 0x20, 0x20, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66,
+  0x2e, 0x64, 0x20, 0x3d, 0x20, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x2e,
+  0x64, 0x69, 0x67, 0x69, 0x74, 0x0a, 0x20, 0x20, 0x50, 0x72, 0x65, 0x64,
+  0x65, 0x66, 0x2e, 0x67, 0x20, 0x3d, 0x20, 0x50, 0x72, 0x65, 0x64, 0x65,
+  0x66, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x0a, 0x20, 0x20, 0x50, 0x72,
+  0x65, 0x64, 0x65, 0x66, 0x2e, 0x6c, 0x20, 0x3d, 0x20, 0x50, 0x72, 0x65,
+  0x64, 0x65, 0x66, 0x2e, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x0a, 0x20, 0x20,
+  0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x2e, 0x70, 0x20, 0x3d, 0x20, 0x50,
+  0x72, 0x65, 0x64, 0x65, 0x66, 0x2e, 0x70, 0x75, 0x6e, 0x63, 0x74, 0x0a,
+  0x20, 0x20, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x2e, 0x73, 0x20, 0x3d,
+  0x20, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x2e, 0x73, 0x70, 0x61, 0x63,
+  0x65, 0x0a, 0x20, 0x20, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x2e, 0x75,
+  0x20, 0x3d, 0x20, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x2e, 0x75, 0x70,
+  0x70, 0x65, 0x72, 0x0a, 0x20, 0x20, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66,
+  0x2e, 0x77, 0x20, 0x3d, 0x20, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x2e,
+  0x61, 0x6c, 0x6e, 0x75, 0x6d, 0x0a, 0x20, 0x20, 0x50, 0x72, 0x65, 0x64,
+  0x65, 0x66, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x50, 0x72, 0x65, 0x64, 0x65,
+  0x66, 0x2e, 0x78, 0x64, 0x69, 0x67, 0x69, 0x74, 0x0a, 0x20, 0x20, 0x50,
+  0x72, 0x65, 0x64, 0x65, 0x66, 0x2e, 0x41, 0x20, 0x3d, 0x20, 0x61, 0x6e,
+  0x79, 0x20, 0x2d, 0x20, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x2e, 0x61,
+  0x0a, 0x20, 0x20, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x2e, 0x43, 0x20,
+  0x3d, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x2d, 0x20, 0x50, 0x72, 0x65, 0x64,
+  0x65, 0x66, 0x2e, 0x63, 0x0a, 0x20, 0x20, 0x50, 0x72, 0x65, 0x64, 0x65,
+  0x66, 0x2e, 0x44, 0x20, 0x3d, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x2d, 0x20,
+  0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x2e, 0x64, 0x0a, 0x20, 0x20, 0x50,
+  0x72, 0x65, 0x64, 0x65, 0x66, 0x2e, 0x47, 0x20, 0x3d, 0x20, 0x61, 0x6e,
+  0x79, 0x20, 0x2d, 0x20, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x2e, 0x67,
+  0x0a, 0x20, 0x20, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x2e, 0x4c, 0x20,
+  0x3d, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x2d, 0x20, 0x50, 0x72, 0x65, 0x64,
+  0x65, 0x66, 0x2e, 0x6c, 0x0a, 0x20, 0x20, 0x50, 0x72, 0x65, 0x64, 0x65,
+  0x66, 0x2e, 0x50, 0x20, 0x3d, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x2d, 0x20,
+  0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x2e, 0x70, 0x0a, 0x20, 0x20, 0x50,
+  0x72, 0x65, 0x64, 0x65, 0x66, 0x2e, 0x53, 0x20, 0x3d, 0x20, 0x61, 0x6e,
+  0x79, 0x20, 0x2d, 0x20, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x2e, 0x73,
+  0x0a, 0x20, 0x20, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x2e, 0x55, 0x20,
+  0x3d, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x2d, 0x20, 0x50, 0x72, 0x65, 0x64,
+  0x65, 0x66, 0x2e, 0x75, 0x0a, 0x20, 0x20, 0x50, 0x72, 0x65, 0x64, 0x65,
+  0x66, 0x2e, 0x57, 0x20, 0x3d, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x2d, 0x20,
+  0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x2e, 0x77, 0x0a, 0x20, 0x20, 0x50,
+  0x72, 0x65, 0x64, 0x65, 0x66, 0x2e, 0x58, 0x20, 0x3d, 0x20, 0x61, 0x6e,
+  0x79, 0x20, 0x2d, 0x20, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x2e, 0x78,
+  0x0a, 0x20, 0x20, 0x6d, 0x65, 0x6d, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x20,
+  0x20, 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72,
+  0x74, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
+  0x6e, 0x0a, 0x20, 0x20, 0x66, 0x6d, 0x65, 0x6d, 0x20, 0x3d, 0x20, 0x7b,
+  0x7d, 0x0a, 0x20, 0x20, 0x67, 0x6d, 0x65, 0x6d, 0x20, 0x3d, 0x20, 0x7b,
+  0x7d, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6d, 0x74,
+  0x20, 0x3d, 0x20, 0x7b, 0x5f, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x3d,
+  0x20, 0x22, 0x76, 0x22, 0x7d, 0x0a, 0x20, 0x20, 0x73, 0x65, 0x74, 0x6d,
+  0x65, 0x74, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x28, 0x6d, 0x65, 0x6d,
+  0x2c, 0x20, 0x6d, 0x74, 0x29, 0x0a, 0x20, 0x20, 0x73, 0x65, 0x74, 0x6d,
+  0x65, 0x74, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x28, 0x66, 0x6d, 0x65,
+  0x6d, 0x2c, 0x20, 0x6d, 0x74, 0x29, 0x0a, 0x20, 0x20, 0x73, 0x65, 0x74,
+  0x6d, 0x65, 0x74, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x28, 0x67, 0x6d,
+  0x65, 0x6d, 0x2c, 0x20, 0x6d, 0x74, 0x29, 0x0a, 0x65, 0x6e, 0x64, 0x0a,
+  0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x6c, 0x6f, 0x63, 0x61,
+  0x6c, 0x65, 0x28, 0x29, 0x0a, 0x0a, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61,
+  0x6c, 0x20, 0x49, 0x20, 0x3d, 0x20, 0x6d, 0x2e, 0x50, 0x28, 0x66, 0x75,
+  0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x73, 0x2c, 0x69, 0x29,
+  0x20, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x28, 0x69, 0x2c, 0x20, 0x73, 0x3a,
+  0x73, 0x75, 0x62, 0x28, 0x31, 0x2c, 0x20, 0x69, 0x2d, 0x31, 0x29, 0x29,
+  0x3b, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x69, 0x20, 0x65,
+  0x6e, 0x64, 0x29, 0x0a, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20,
+  0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x70, 0x61, 0x74,
+  0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x28, 0x73, 0x2c, 0x20,
+  0x69, 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6d,
+  0x73, 0x67, 0x20, 0x3d, 0x20, 0x28, 0x23, 0x73, 0x20, 0x3c, 0x20, 0x69,
+  0x20, 0x2b, 0x20, 0x32, 0x30, 0x29, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x73,
+  0x3a, 0x73, 0x75, 0x62, 0x28, 0x69, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x6f, 0x72, 0x20, 0x73, 0x3a, 0x73, 0x75, 0x62, 0x28, 0x69, 0x2c,
+  0x69, 0x2b, 0x32, 0x30, 0x29, 0x20, 0x2e, 0x2e, 0x20, 0x22, 0x2e, 0x2e,
+  0x2e, 0x22, 0x0a, 0x20, 0x20, 0x6d, 0x73, 0x67, 0x20, 0x3d, 0x20, 0x28,
+  0x22, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x65, 0x72, 0x72,
+  0x6f, 0x72, 0x20, 0x6e, 0x65, 0x61, 0x72, 0x20, 0x27, 0x25, 0x73, 0x27,
+  0x22, 0x29, 0x3a, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x28, 0x6d, 0x73,
+  0x67, 0x29, 0x0a, 0x20, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x28, 0x6d,
+  0x73, 0x67, 0x2c, 0x20, 0x32, 0x29, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a,
+  0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69,
+  0x6f, 0x6e, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x20, 0x28, 0x70, 0x2c, 0x20,
+  0x6e, 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6e,
+  0x70, 0x20, 0x3d, 0x20, 0x6d, 0x6d, 0x2e, 0x50, 0x28, 0x74, 0x72, 0x75,
+  0x65, 0x29, 0x0a, 0x20, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x6e,
+  0x20, 0x3e, 0x3d, 0x20, 0x31, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x69, 0x66, 0x20, 0x6e, 0x25, 0x32, 0x20, 0x3e, 0x3d, 0x20, 0x31,
+  0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x6e, 0x70, 0x20, 0x3d, 0x20, 0x6e,
+  0x70, 0x20, 0x2a, 0x20, 0x70, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x70, 0x20, 0x2a, 0x20, 0x70, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x6e, 0x20, 0x3d, 0x20, 0x6e, 0x2f, 0x32, 0x0a,
+  0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75,
+  0x72, 0x6e, 0x20, 0x6e, 0x70, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x6c,
+  0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f,
+  0x6e, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6c, 0x63, 0x61, 0x70, 0x20, 0x28,
+  0x73, 0x2c, 0x20, 0x69, 0x2c, 0x20, 0x63, 0x29, 0x0a, 0x20, 0x20, 0x69,
+  0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x28, 0x63, 0x29, 0x20, 0x7e, 0x3d,
+  0x20, 0x22, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x20, 0x74, 0x68,
+  0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6e, 0x69,
+  0x6c, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61,
+  0x6c, 0x20, 0x65, 0x20, 0x3d, 0x20, 0x23, 0x63, 0x20, 0x2b, 0x20, 0x69,
+  0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x73, 0x3a, 0x73, 0x75, 0x62, 0x28,
+  0x69, 0x2c, 0x20, 0x65, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x3d, 0x3d,
+  0x20, 0x63, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75,
+  0x72, 0x6e, 0x20, 0x65, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x72, 0x65,
+  0x74, 0x75, 0x72, 0x6e, 0x20, 0x6e, 0x69, 0x6c, 0x20, 0x65, 0x6e, 0x64,
+  0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
+  0x20, 0x53, 0x20, 0x3d, 0x20, 0x28, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66,
+  0x2e, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x2b, 0x20, 0x22, 0x2d, 0x2d,
+  0x22, 0x20, 0x2a, 0x20, 0x28, 0x61, 0x6e, 0x79, 0x20, 0x2d, 0x20, 0x50,
+  0x72, 0x65, 0x64, 0x65, 0x66, 0x2e, 0x6e, 0x6c, 0x29, 0x5e, 0x30, 0x29,
+  0x5e, 0x30, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6e, 0x61,
+  0x6d, 0x65, 0x20, 0x3d, 0x20, 0x6d, 0x2e, 0x52, 0x28, 0x22, 0x41, 0x5a,
+  0x22, 0x2c, 0x20, 0x22, 0x61, 0x7a, 0x22, 0x2c, 0x20, 0x22, 0x5f, 0x5f,
+  0x22, 0x29, 0x20, 0x2a, 0x20, 0x6d, 0x2e, 0x52, 0x28, 0x22, 0x41, 0x5a,
+  0x22, 0x2c, 0x20, 0x22, 0x61, 0x7a, 0x22, 0x2c, 0x20, 0x22, 0x5f, 0x5f,
+  0x22, 0x2c, 0x20, 0x22, 0x30, 0x39, 0x22, 0x29, 0x5e, 0x30, 0x0a, 0x0a,
+  0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x20,
+  0x3d, 0x20, 0x53, 0x20, 0x2a, 0x20, 0x22, 0x3c, 0x2d, 0x22, 0x0a, 0x0a,
+  0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x73, 0x65, 0x71, 0x5f, 0x66, 0x6f,
+  0x6c, 0x6c, 0x6f, 0x77, 0x20, 0x3d, 0x20, 0x6d, 0x2e, 0x50, 0x22, 0x2f,
+  0x22, 0x20, 0x2b, 0x20, 0x22, 0x29, 0x22, 0x20, 0x2b, 0x20, 0x22, 0x7d,
+  0x22, 0x20, 0x2b, 0x20, 0x22, 0x3a, 0x7d, 0x22, 0x20, 0x2b, 0x20, 0x22,
+  0x7e, 0x7d, 0x22, 0x20, 0x2b, 0x20, 0x22, 0x7c, 0x7d, 0x22, 0x20, 0x2b,
+  0x20, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x2a, 0x20, 0x61, 0x72, 0x72,
+  0x6f, 0x77, 0x29, 0x20, 0x2b, 0x20, 0x2d, 0x31, 0x0a, 0x0a, 0x6e, 0x61,
+  0x6d, 0x65, 0x20, 0x3d, 0x20, 0x6d, 0x2e, 0x43, 0x28, 0x6e, 0x61, 0x6d,
+  0x65, 0x29, 0x0a, 0x0a, 0x0a, 0x2d, 0x2d, 0x20, 0x61, 0x20, 0x64, 0x65,
+  0x66, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x6f,
+  0x6e, 0x6c, 0x79, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x6d, 0x65, 0x61,
+  0x6e, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x67, 0x69,
+  0x76, 0x65, 0x6e, 0x20, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d,
+  0x65, 0x6e, 0x74, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x44, 0x65,
+  0x66, 0x20, 0x3d, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x2a, 0x20, 0x6d,
+  0x2e, 0x43, 0x61, 0x72, 0x67, 0x28, 0x31, 0x29, 0x0a, 0x0a, 0x0a, 0x6c,
+  0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f,
+  0x6e, 0x20, 0x67, 0x65, 0x74, 0x64, 0x65, 0x66, 0x20, 0x28, 0x69, 0x64,
+  0x2c, 0x20, 0x64, 0x65, 0x66, 0x73, 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f,
+  0x63, 0x61, 0x6c, 0x20, 0x63, 0x20, 0x3d, 0x20, 0x64, 0x65, 0x66, 0x73,
+  0x20, 0x61, 0x6e, 0x64, 0x20, 0x64, 0x65, 0x66, 0x73, 0x5b, 0x69, 0x64,
+  0x5d, 0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63,
+  0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x28,
+  0x22, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x6e,
+  0x61, 0x6d, 0x65, 0x3a, 0x20, 0x22, 0x20, 0x2e, 0x2e, 0x20, 0x69, 0x64,
+  0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75,
+  0x72, 0x6e, 0x20, 0x63, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x2d, 0x2d,
+  0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x20, 0x61, 0x20, 0x6e, 0x61, 0x6d,
+  0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
+  0x20, 0x61, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, 0x6f, 0x66, 0x20,
+  0x69, 0x74, 0x73, 0x20, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x73, 0x70, 0x6f,
+  0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69,
+  0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x2d, 0x2d, 0x20, 0x61, 0x6e, 0x64, 0x20,
+  0x27, 0x66, 0x27, 0x20, 0x28, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x66,
+  0x6f, 0x6c, 0x64, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x27, 0x53, 0x75,
+  0x66, 0x66, 0x69, 0x78, 0x27, 0x29, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
+  0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x65,
+  0x66, 0x77, 0x69, 0x74, 0x68, 0x66, 0x75, 0x6e, 0x63, 0x20, 0x28, 0x66,
+  0x29, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6d,
+  0x2e, 0x43, 0x67, 0x28, 0x44, 0x65, 0x66, 0x20, 0x2f, 0x20, 0x67, 0x65,
+  0x74, 0x64, 0x65, 0x66, 0x20, 0x2a, 0x20, 0x6d, 0x2e, 0x43, 0x63, 0x28,
+  0x66, 0x29, 0x29, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x0a, 0x6c, 0x6f,
+  0x63, 0x61, 0x6c, 0x20, 0x6e, 0x75, 0x6d, 0x20, 0x3d, 0x20, 0x6d, 0x2e,
+  0x43, 0x28, 0x6d, 0x2e, 0x52, 0x22, 0x30, 0x39, 0x22, 0x5e, 0x31, 0x29,
+  0x20, 0x2a, 0x20, 0x53, 0x20, 0x2f, 0x20, 0x74, 0x6f, 0x6e, 0x75, 0x6d,
+  0x62, 0x65, 0x72, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x53,
+  0x74, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x3d, 0x20, 0x22, 0x27, 0x22, 0x20,
+  0x2a, 0x20, 0x6d, 0x2e, 0x43, 0x28, 0x28, 0x61, 0x6e, 0x79, 0x20, 0x2d,
+  0x20, 0x22, 0x27, 0x22, 0x29, 0x5e, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x22,
+  0x27, 0x22, 0x20, 0x2b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x27, 0x22, 0x27, 0x20,
+  0x2a, 0x20, 0x6d, 0x2e, 0x43, 0x28, 0x28, 0x61, 0x6e, 0x79, 0x20, 0x2d,
+  0x20, 0x27, 0x22, 0x27, 0x29, 0x5e, 0x30, 0x29, 0x20, 0x2a, 0x20, 0x27,
+  0x22, 0x27, 0x0a, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x64,
+  0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x3d, 0x20, 0x22, 0x25, 0x22,
+  0x20, 0x2a, 0x20, 0x44, 0x65, 0x66, 0x20, 0x2f, 0x20, 0x66, 0x75, 0x6e,
+  0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x63, 0x2c, 0x44, 0x65, 0x66,
+  0x73, 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x63,
+  0x61, 0x74, 0x20, 0x3d, 0x20, 0x20, 0x44, 0x65, 0x66, 0x73, 0x20, 0x61,
+  0x6e, 0x64, 0x20, 0x44, 0x65, 0x66, 0x73, 0x5b, 0x63, 0x5d, 0x20, 0x6f,
+  0x72, 0x20, 0x50, 0x72, 0x65, 0x64, 0x65, 0x66, 0x5b, 0x63, 0x5d, 0x0a,
+  0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63, 0x61, 0x74,
+  0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20,
+  0x28, 0x22, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x27, 0x22, 0x20, 0x2e, 0x2e,
+  0x20, 0x63, 0x20, 0x2e, 0x2e, 0x20, 0x22, 0x27, 0x20, 0x75, 0x6e, 0x64,
+  0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x22, 0x29, 0x20, 0x65, 0x6e, 0x64,
+  0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x61,
+  0x74, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
+  0x20, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x3d, 0x20, 0x6d, 0x2e, 0x43,
+  0x73, 0x28, 0x61, 0x6e, 0x79, 0x20, 0x2a, 0x20, 0x28, 0x6d, 0x2e, 0x50,
+  0x22, 0x2d, 0x22, 0x2f, 0x22, 0x22, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x61,
+  0x6e, 0x79, 0x20, 0x2d, 0x20, 0x22, 0x5d, 0x22, 0x29, 0x29, 0x20, 0x2f,
+  0x20, 0x6d, 0x6d, 0x2e, 0x52, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
+  0x20, 0x69, 0x74, 0x65, 0x6d, 0x20, 0x3d, 0x20, 0x28, 0x64, 0x65, 0x66,
+  0x69, 0x6e, 0x65, 0x64, 0x20, 0x2b, 0x20, 0x52, 0x61, 0x6e, 0x67, 0x65,
+  0x20, 0x2b, 0x20, 0x6d, 0x2e, 0x43, 0x28, 0x61, 0x6e, 0x79, 0x29, 0x29,
+  0x20, 0x2f, 0x20, 0x6d, 0x2e, 0x50, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61,
+  0x6c, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x3d, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x22, 0x5b, 0x22, 0x0a, 0x20, 0x20, 0x2a, 0x20, 0x28, 0x6d,
+  0x2e, 0x43, 0x28, 0x6d, 0x2e, 0x50, 0x22, 0x5e, 0x22, 0x5e, 0x2d, 0x31,
+  0x29, 0x29, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x6f, 0x70, 0x74,
+  0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65,
+  0x6d, 0x65, 0x6e, 0x74, 0x20, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x0a,
+  0x20, 0x20, 0x2a, 0x20, 0x6d, 0x2e, 0x43, 0x66, 0x28, 0x69, 0x74, 0x65,
+  0x6d, 0x20, 0x2a, 0x20, 0x28, 0x69, 0x74, 0x65, 0x6d, 0x20, 0x2d, 0x20,
+  0x22, 0x5d, 0x22, 0x29, 0x5e, 0x30, 0x2c, 0x20, 0x6d, 0x74, 0x2e, 0x5f,
+  0x5f, 0x61, 0x64, 0x64, 0x29, 0x20, 0x2f, 0x0a, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x75,
+  0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x63, 0x2c, 0x20, 0x70,
+  0x29, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x20, 0x3d,
+  0x3d, 0x20, 0x22, 0x5e, 0x22, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x6e,
+  0x79, 0x20, 0x2d, 0x20, 0x70, 0x20, 0x6f, 0x72, 0x20, 0x70, 0x20, 0x65,
+  0x6e, 0x64, 0x0a, 0x20, 0x20, 0x2a, 0x20, 0x22, 0x5d, 0x22, 0x0a, 0x0a,
+  0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69,
+  0x6f, 0x6e, 0x20, 0x61, 0x64, 0x64, 0x64, 0x65, 0x66, 0x20, 0x28, 0x74,
+  0x2c, 0x20, 0x6b, 0x2c, 0x20, 0x65, 0x78, 0x70, 0x29, 0x0a, 0x20, 0x20,
+  0x69, 0x66, 0x20, 0x74, 0x5b, 0x6b, 0x5d, 0x20, 0x74, 0x68, 0x65, 0x6e,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x28, 0x22,
+  0x27, 0x22, 0x2e, 0x2e, 0x6b, 0x2e, 0x2e, 0x22, 0x27, 0x20, 0x61, 0x6c,
+  0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65,
+  0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x72, 0x75, 0x6c, 0x65, 0x22,
+  0x29, 0x0a, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x74, 0x5b, 0x6b, 0x5d, 0x20, 0x3d, 0x20, 0x65, 0x78, 0x70, 0x0a,
+  0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75,
+  0x72, 0x6e, 0x20, 0x74, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x6c, 0x6f,
+  0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+  0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x64, 0x65, 0x66, 0x20, 0x28, 0x6e,
+  0x2c, 0x20, 0x72, 0x29, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
+  0x61, 0x64, 0x64, 0x64, 0x65, 0x66, 0x28, 0x7b, 0x6e, 0x7d, 0x2c, 0x20,
+  0x6e, 0x2c, 0x20, 0x72, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x0a,
+  0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69,
+  0x6f, 0x6e, 0x20, 0x4e, 0x54, 0x20, 0x28, 0x6e, 0x2c, 0x20, 0x62, 0x29,
+  0x0a, 0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x20,
+  0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x65, 0x72, 0x72,
+  0x6f, 0x72, 0x28, 0x22, 0x72, 0x75, 0x6c, 0x65, 0x20, 0x27, 0x22, 0x2e,
+  0x2e, 0x6e, 0x2e, 0x2e, 0x22, 0x27, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20,
+  0x6f, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 0x20, 0x61, 0x20, 0x67, 0x72,
+  0x61, 0x6d, 0x6d, 0x61, 0x72, 0x22, 0x29, 0x0a, 0x20, 0x20, 0x65, 0x6c,
+  0x73, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6d, 0x6d,
+  0x2e, 0x56, 0x28, 0x6e, 0x29, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a,
+  0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20,
+  0x65, 0x78, 0x70, 0x20, 0x3d, 0x20, 0x6d, 0x2e, 0x50, 0x7b, 0x20, 0x22,
+  0x45, 0x78, 0x70, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x45, 0x78, 0x70, 0x20,
+  0x3d, 0x20, 0x53, 0x20, 0x2a, 0x20, 0x28, 0x20, 0x6d, 0x2e, 0x56, 0x22,
+  0x47, 0x72, 0x61, 0x6d, 0x6d, 0x61, 0x72, 0x22, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2b, 0x20, 0x6d,
+  0x2e, 0x43, 0x66, 0x28, 0x6d, 0x2e, 0x56, 0x22, 0x53, 0x65, 0x71, 0x22,
+  0x20, 0x2a, 0x20, 0x28, 0x22, 0x2f, 0x22, 0x20, 0x2a, 0x20, 0x53, 0x20,
+  0x2a, 0x20, 0x6d, 0x2e, 0x56, 0x22, 0x53, 0x65, 0x71, 0x22, 0x29, 0x5e,
+  0x30, 0x2c, 0x20, 0x6d, 0x74, 0x2e, 0x5f, 0x5f, 0x61, 0x64, 0x64, 0x29,
+  0x20, 0x29, 0x3b, 0x0a, 0x20, 0x20, 0x53, 0x65, 0x71, 0x20, 0x3d, 0x20,
+  0x6d, 0x2e, 0x43, 0x66, 0x28, 0x6d, 0x2e, 0x43, 0x63, 0x28, 0x6d, 0x2e,
+  0x50, 0x22, 0x22, 0x29, 0x20, 0x2a, 0x20, 0x6d, 0x2e, 0x56, 0x22, 0x50,
+  0x72, 0x65, 0x66, 0x69, 0x78, 0x22, 0x5e, 0x30, 0x20, 0x2c, 0x20, 0x6d,
+  0x74, 0x2e, 0x5f, 0x5f, 0x6d, 0x75, 0x6c, 0x29, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x2a, 0x20, 0x28, 0x23, 0x73, 0x65, 0x71,
+  0x5f, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x20, 0x2b, 0x20, 0x70, 0x61,
+  0x74, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x29, 0x3b, 0x0a, 0x20,
+  0x20, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x20, 0x3d, 0x20, 0x22, 0x26,
+  0x22, 0x20, 0x2a, 0x20, 0x53, 0x20, 0x2a, 0x20, 0x6d, 0x2e, 0x56, 0x22,
+  0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, 0x20, 0x2f, 0x20, 0x6d, 0x74,
+  0x2e, 0x5f, 0x5f, 0x6c, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x2b, 0x20, 0x22, 0x21, 0x22, 0x20, 0x2a, 0x20,
+  0x53, 0x20, 0x2a, 0x20, 0x6d, 0x2e, 0x56, 0x22, 0x50, 0x72, 0x65, 0x66,
+  0x69, 0x78, 0x22, 0x20, 0x2f, 0x20, 0x6d, 0x74, 0x2e, 0x5f, 0x5f, 0x75,
+  0x6e, 0x6d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x2b, 0x20, 0x6d, 0x2e, 0x56, 0x22, 0x53, 0x75, 0x66, 0x66, 0x69, 0x78,
+  0x22, 0x3b, 0x0a, 0x20, 0x20, 0x53, 0x75, 0x66, 0x66, 0x69, 0x78, 0x20,
+  0x3d, 0x20, 0x6d, 0x2e, 0x43, 0x66, 0x28, 0x6d, 0x2e, 0x56, 0x22, 0x50,
+  0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x20, 0x2a, 0x20, 0x53, 0x20,
+  0x2a, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x28, 0x20, 0x28, 0x20, 0x6d, 0x2e, 0x50, 0x22, 0x2b, 0x22, 0x20, 0x2a,
+  0x20, 0x6d, 0x2e, 0x43, 0x63, 0x28, 0x31, 0x2c, 0x20, 0x6d, 0x74, 0x2e,
+  0x5f, 0x5f, 0x70, 0x6f, 0x77, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2b, 0x20, 0x6d, 0x2e, 0x50,
+  0x22, 0x2a, 0x22, 0x20, 0x2a, 0x20, 0x6d, 0x2e, 0x43, 0x63, 0x28, 0x30,
+  0x2c, 0x20, 0x6d, 0x74, 0x2e, 0x5f, 0x5f, 0x70, 0x6f, 0x77, 0x29, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x2b, 0x20, 0x6d, 0x2e, 0x50, 0x22, 0x3f, 0x22, 0x20, 0x2a, 0x20, 0x6d,
+  0x2e, 0x43, 0x63, 0x28, 0x2d, 0x31, 0x2c, 0x20, 0x6d, 0x74, 0x2e, 0x5f,
+  0x5f, 0x70, 0x6f, 0x77, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2b, 0x20, 0x22, 0x5e, 0x22, 0x20,
+  0x2a, 0x20, 0x28, 0x20, 0x6d, 0x2e, 0x43, 0x67, 0x28, 0x6e, 0x75, 0x6d,
+  0x20, 0x2a, 0x20, 0x6d, 0x2e, 0x43, 0x63, 0x28, 0x6d, 0x75, 0x6c, 0x74,
+  0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2b,
+  0x20, 0x6d, 0x2e, 0x43, 0x67, 0x28, 0x6d, 0x2e, 0x43, 0x28, 0x6d, 0x2e,
+  0x53, 0x22, 0x2b, 0x2d, 0x22, 0x20, 0x2a, 0x20, 0x6d, 0x2e, 0x52, 0x22,
+  0x30, 0x39, 0x22, 0x5e, 0x31, 0x29, 0x20, 0x2a, 0x20, 0x6d, 0x2e, 0x43,
+  0x63, 0x28, 0x6d, 0x74, 0x2e, 0x5f, 0x5f, 0x70, 0x6f, 0x77, 0x29, 0x29,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x29, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2b,
+  0x20, 0x22, 0x2d, 0x3e, 0x22, 0x20, 0x2a, 0x20, 0x53, 0x20, 0x2a, 0x20,
+  0x28, 0x20, 0x6d, 0x2e, 0x43, 0x67, 0x28, 0x28, 0x53, 0x74, 0x72, 0x69,
+  0x6e, 0x67, 0x20, 0x2b, 0x20, 0x6e, 0x75, 0x6d, 0x29, 0x20, 0x2a, 0x20,
+  0x6d, 0x2e, 0x43, 0x63, 0x28, 0x6d, 0x74, 0x2e, 0x5f, 0x5f, 0x64, 0x69,
+  0x76, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x2b, 0x20, 0x6d, 0x2e, 0x50, 0x22, 0x7b,
+  0x7d, 0x22, 0x20, 0x2a, 0x20, 0x6d, 0x2e, 0x43, 0x63, 0x28, 0x6e, 0x69,
+  0x6c, 0x2c, 0x20, 0x6d, 0x2e, 0x43, 0x74, 0x29, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2b, 0x20,
+  0x64, 0x65, 0x66, 0x77, 0x69, 0x74, 0x68, 0x66, 0x75, 0x6e, 0x63, 0x28,
+  0x6d, 0x74, 0x2e, 0x5f, 0x5f, 0x64, 0x69, 0x76, 0x29, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x29,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x2b, 0x20, 0x22, 0x3d, 0x3e, 0x22, 0x20, 0x2a, 0x20, 0x53, 0x20,
+  0x2a, 0x20, 0x64, 0x65, 0x66, 0x77, 0x69, 0x74, 0x68, 0x66, 0x75, 0x6e,
+  0x63, 0x28, 0x6d, 0x2e, 0x43, 0x6d, 0x74, 0x29, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2b, 0x20, 0x22,
+  0x7e, 0x3e, 0x22, 0x20, 0x2a, 0x20, 0x53, 0x20, 0x2a, 0x20, 0x64, 0x65,
+  0x66, 0x77, 0x69, 0x74, 0x68, 0x66, 0x75, 0x6e, 0x63, 0x28, 0x6d, 0x2e,
+  0x43, 0x66, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x29, 0x20, 0x2a, 0x20, 0x53, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x29, 0x5e, 0x30, 0x2c,
+  0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x61,
+  0x2c, 0x62, 0x2c, 0x66, 0x29, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
+  0x20, 0x66, 0x28, 0x61, 0x2c, 0x62, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x20,
+  0x29, 0x3b, 0x0a, 0x20, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79,
+  0x20, 0x3d, 0x20, 0x22, 0x28, 0x22, 0x20, 0x2a, 0x20, 0x6d, 0x2e, 0x56,
+  0x22, 0x45, 0x78, 0x70, 0x22, 0x20, 0x2a, 0x20, 0x22, 0x29, 0x22, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x2b, 0x20, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x2f, 0x20, 0x6d,
+  0x6d, 0x2e, 0x50, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x2b, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x2b, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2b, 0x20,
+  0x22, 0x7b, 0x3a, 0x22, 0x20, 0x2a, 0x20, 0x28, 0x6e, 0x61, 0x6d, 0x65,
+  0x20, 0x2a, 0x20, 0x22, 0x3a, 0x22, 0x20, 0x2b, 0x20, 0x6d, 0x2e, 0x43,
+  0x63, 0x28, 0x6e, 0x69, 0x6c, 0x29, 0x29, 0x20, 0x2a, 0x20, 0x6d, 0x2e,
+  0x56, 0x22, 0x45, 0x78, 0x70, 0x22, 0x20, 0x2a, 0x20, 0x22, 0x3a, 0x7d,
+  0x22, 0x20, 0x2f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x6e,
+  0x2c, 0x20, 0x70, 0x29, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
+  0x6d, 0x6d, 0x2e, 0x43, 0x67, 0x28, 0x70, 0x2c, 0x20, 0x6e, 0x29, 0x20,
+  0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x2b, 0x20, 0x22, 0x3d, 0x22, 0x20, 0x2a, 0x20,
+  0x6e, 0x61, 0x6d, 0x65, 0x20, 0x2f, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74,
+  0x69, 0x6f, 0x6e, 0x20, 0x28, 0x6e, 0x29, 0x20, 0x72, 0x65, 0x74, 0x75,
+  0x72, 0x6e, 0x20, 0x6d, 0x6d, 0x2e, 0x43, 0x6d, 0x74, 0x28, 0x6d, 0x6d,
+  0x2e, 0x43, 0x62, 0x28, 0x6e, 0x29, 0x2c, 0x20, 0x65, 0x71, 0x75, 0x61,
+  0x6c, 0x63, 0x61, 0x70, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2b, 0x20,
+  0x6d, 0x2e, 0x50, 0x22, 0x7b, 0x7d, 0x22, 0x20, 0x2f, 0x20, 0x6d, 0x6d,
+  0x2e, 0x43, 0x70, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x2b, 0x20, 0x22, 0x7b, 0x7e, 0x22, 0x20, 0x2a,
+  0x20, 0x6d, 0x2e, 0x56, 0x22, 0x45, 0x78, 0x70, 0x22, 0x20, 0x2a, 0x20,
+  0x22, 0x7e, 0x7d, 0x22, 0x20, 0x2f, 0x20, 0x6d, 0x6d, 0x2e, 0x43, 0x73,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x2b, 0x20, 0x22, 0x7b, 0x7c, 0x22, 0x20, 0x2a, 0x20, 0x6d, 0x2e,
+  0x56, 0x22, 0x45, 0x78, 0x70, 0x22, 0x20, 0x2a, 0x20, 0x22, 0x7c, 0x7d,
+  0x22, 0x20, 0x2f, 0x20, 0x6d, 0x6d, 0x2e, 0x43, 0x74, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2b, 0x20,
+  0x22, 0x7b, 0x22, 0x20, 0x2a, 0x20, 0x6d, 0x2e, 0x56, 0x22, 0x45, 0x78,
+  0x70, 0x22, 0x20, 0x2a, 0x20, 0x22, 0x7d, 0x22, 0x20, 0x2f, 0x20, 0x6d,
+  0x6d, 0x2e, 0x43, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x2b, 0x20, 0x6d, 0x2e, 0x50, 0x22, 0x2e, 0x22,
+  0x20, 0x2a, 0x20, 0x6d, 0x2e, 0x43, 0x63, 0x28, 0x61, 0x6e, 0x79, 0x29,
+  0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x2b, 0x20, 0x28, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x2a, 0x20, 0x2d,
+  0x61, 0x72, 0x72, 0x6f, 0x77, 0x20, 0x2b, 0x20, 0x22, 0x3c, 0x22, 0x20,
+  0x2a, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x2a, 0x20, 0x22, 0x3e, 0x22,
+  0x29, 0x20, 0x2a, 0x20, 0x6d, 0x2e, 0x43, 0x62, 0x28, 0x22, 0x47, 0x22,
+  0x29, 0x20, 0x2f, 0x20, 0x4e, 0x54, 0x3b, 0x0a, 0x20, 0x20, 0x44, 0x65,
+  0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x6e,
+  0x61, 0x6d, 0x65, 0x20, 0x2a, 0x20, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x20,
+  0x2a, 0x20, 0x6d, 0x2e, 0x56, 0x22, 0x45, 0x78, 0x70, 0x22, 0x3b, 0x0a,
+  0x20, 0x20, 0x47, 0x72, 0x61, 0x6d, 0x6d, 0x61, 0x72, 0x20, 0x3d, 0x20,
+  0x6d, 0x2e, 0x43, 0x67, 0x28, 0x6d, 0x2e, 0x43, 0x63, 0x28, 0x74, 0x72,
+  0x75, 0x65, 0x29, 0x2c, 0x20, 0x22, 0x47, 0x22, 0x29, 0x20, 0x2a, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x6d, 0x2e, 0x43, 0x66, 0x28, 0x6d, 0x2e, 0x56, 0x22, 0x44, 0x65, 0x66,
+  0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x20, 0x2f, 0x20, 0x66,
+  0x69, 0x72, 0x73, 0x74, 0x64, 0x65, 0x66, 0x20, 0x2a, 0x20, 0x6d, 0x2e,
+  0x43, 0x67, 0x28, 0x6d, 0x2e, 0x56, 0x22, 0x44, 0x65, 0x66, 0x69, 0x6e,
+  0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x29, 0x5e, 0x30, 0x2c, 0x0a, 0x20,
+  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+  0x20, 0x61, 0x64, 0x64, 0x64, 0x65, 0x66, 0x29, 0x20, 0x2f, 0x20, 0x6d,
+  0x6d, 0x2e, 0x50, 0x0a, 0x7d, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
+  0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x3d, 0x20, 0x53,
+  0x20, 0x2a, 0x20, 0x6d, 0x2e, 0x43, 0x67, 0x28, 0x6d, 0x2e, 0x43, 0x63,
+  0x28, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x2c, 0x20, 0x22, 0x47, 0x22,
+  0x29, 0x20, 0x2a, 0x20, 0x65, 0x78, 0x70, 0x20, 0x2f, 0x20, 0x6d, 0x6d,
+  0x2e, 0x50, 0x20, 0x2a, 0x20, 0x28, 0x2d, 0x61, 0x6e, 0x79, 0x20, 0x2b,
+  0x20, 0x70, 0x61, 0x74, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x29,
+  0x0a, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e,
+  0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c,
+  0x65, 0x20, 0x28, 0x70, 0x2c, 0x20, 0x64, 0x65, 0x66, 0x73, 0x29, 0x0a,
+  0x20, 0x20, 0x69, 0x66, 0x20, 0x6d, 0x6d, 0x2e, 0x74, 0x79, 0x70, 0x65,
+  0x28, 0x70, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x22, 0x70, 0x61, 0x74, 0x74,
+  0x65, 0x72, 0x6e, 0x22, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65,
+  0x74, 0x75, 0x72, 0x6e, 0x20, 0x70, 0x20, 0x65, 0x6e, 0x64, 0x20, 0x20,
+  0x20, 0x2d, 0x2d, 0x20, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20,
+  0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x0a, 0x20, 0x20, 0x6c,
+  0x6f, 0x63, 0x61, 0x6c, 0x20, 0x63, 0x70, 0x20, 0x3d, 0x20, 0x70, 0x61,
+  0x74, 0x74, 0x65, 0x72, 0x6e, 0x3a, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x28,
+  0x70, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x64, 0x65, 0x66, 0x73, 0x29, 0x0a,
+  0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63, 0x70, 0x20,
+  0x74, 0x68, 0x65, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x28, 0x22,
+  0x69, 0x6e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x20, 0x70, 0x61,
+  0x74, 0x74, 0x65, 0x72, 0x6e, 0x22, 0x2c, 0x20, 0x33, 0x29, 0x20, 0x65,
+  0x6e, 0x64, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20,
+  0x63, 0x70, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61,
+  0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d,
+  0x61, 0x74, 0x63, 0x68, 0x20, 0x28, 0x73, 0x2c, 0x20, 0x70, 0x2c, 0x20,
+  0x69, 0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x63,
+  0x70, 0x20, 0x3d, 0x20, 0x6d, 0x65, 0x6d, 0x5b, 0x70, 0x5d, 0x0a, 0x20,
+  0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63, 0x70, 0x20, 0x74,
+  0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x70, 0x20, 0x3d,
+  0x20, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x28, 0x70, 0x29, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x6d, 0x65, 0x6d, 0x5b, 0x70, 0x5d, 0x20, 0x3d,
+  0x20, 0x63, 0x70, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20,
+  0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x70, 0x3a, 0x6d, 0x61,
+  0x74, 0x63, 0x68, 0x28, 0x73, 0x2c, 0x20, 0x69, 0x20, 0x6f, 0x72, 0x20,
+  0x31, 0x29, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61,
+  0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x66,
+  0x69, 0x6e, 0x64, 0x20, 0x28, 0x73, 0x2c, 0x20, 0x70, 0x2c, 0x20, 0x69,
+  0x29, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x63, 0x70,
+  0x20, 0x3d, 0x20, 0x66, 0x6d, 0x65, 0x6d, 0x5b, 0x70, 0x5d, 0x0a, 0x20,
+  0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63, 0x70, 0x20, 0x74,
+  0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x70, 0x20, 0x3d,
+  0x20, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x28, 0x70, 0x29, 0x20,
+  0x2f, 0x20, 0x30, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x70, 0x20, 0x3d,
+  0x20, 0x6d, 0x6d, 0x2e, 0x50, 0x7b, 0x20, 0x6d, 0x6d, 0x2e, 0x43, 0x70,
+  0x28, 0x29, 0x20, 0x2a, 0x20, 0x63, 0x70, 0x20, 0x2a, 0x20, 0x6d, 0x6d,
+  0x2e, 0x43, 0x70, 0x28, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x20, 0x2a, 0x20,
+  0x6d, 0x6d, 0x2e, 0x56, 0x28, 0x31, 0x29, 0x20, 0x7d, 0x0a, 0x20, 0x20,
+  0x20, 0x20, 0x66, 0x6d, 0x65, 0x6d, 0x5b, 0x70, 0x5d, 0x20, 0x3d, 0x20,
+  0x63, 0x70, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x6c,
+  0x6f, 0x63, 0x61, 0x6c, 0x20, 0x69, 0x2c, 0x20, 0x65, 0x20, 0x3d, 0x20,
+  0x63, 0x70, 0x3a, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x28, 0x73, 0x2c, 0x20,
+  0x69, 0x20, 0x6f, 0x72, 0x20, 0x31, 0x29, 0x0a, 0x20, 0x20, 0x69, 0x66,
+  0x20, 0x69, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75,
+  0x72, 0x6e, 0x20, 0x69, 0x2c, 0x20, 0x65, 0x20, 0x2d, 0x20, 0x31, 0x0a,
+  0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72,
+  0x6e, 0x20, 0x69, 0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e,
+  0x64, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e,
+  0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x67, 0x73, 0x75, 0x62, 0x20, 0x28,
+  0x73, 0x2c, 0x20, 0x70, 0x2c, 0x20, 0x72, 0x65, 0x70, 0x29, 0x0a, 0x20,
+  0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x67, 0x20, 0x3d, 0x20, 0x67,
+  0x6d, 0x65, 0x6d, 0x5b, 0x70, 0x5d, 0x20, 0x6f, 0x72, 0x20, 0x7b, 0x7d,
+  0x20, 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x65, 0x6e, 0x73, 0x75, 0x72, 0x65,
+  0x20, 0x67, 0x6d, 0x65, 0x6d, 0x5b, 0x70, 0x5d, 0x20, 0x69, 0x73, 0x20,
+  0x6e, 0x6f, 0x74, 0x20, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x65,
+  0x64, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x68, 0x65, 0x72, 0x65,
+  0x0a, 0x20, 0x20, 0x67, 0x6d, 0x65, 0x6d, 0x5b, 0x70, 0x5d, 0x20, 0x3d,
+  0x20, 0x67, 0x0a, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x63,
+  0x70, 0x20, 0x3d, 0x20, 0x67, 0x5b, 0x72, 0x65, 0x70, 0x5d, 0x0a, 0x20,
+  0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63, 0x70, 0x20, 0x74,
+  0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x70, 0x20, 0x3d,
+  0x20, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x28, 0x70, 0x29, 0x0a,
+  0x20, 0x20, 0x20, 0x20, 0x63, 0x70, 0x20, 0x3d, 0x20, 0x6d, 0x6d, 0x2e,
+  0x43, 0x73, 0x28, 0x28, 0x63, 0x70, 0x20, 0x2f, 0x20, 0x72, 0x65, 0x70,
+  0x20, 0x2b, 0x20, 0x31, 0x29, 0x5e, 0x30, 0x29, 0x0a, 0x20, 0x20, 0x20,
+  0x20, 0x67, 0x5b, 0x72, 0x65, 0x70, 0x5d, 0x20, 0x3d, 0x20, 0x63, 0x70,
+  0x0a, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x72, 0x65, 0x74,
+  0x75, 0x72, 0x6e, 0x20, 0x63, 0x70, 0x3a, 0x6d, 0x61, 0x74, 0x63, 0x68,
+  0x28, 0x73, 0x29, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x0a, 0x2d, 0x2d,
+  0x20, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x20, 0x6e, 0x61,
+  0x6d, 0x65, 0x73, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x72, 0x65,
+  0x20, 0x3d, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x69,
+  0x6c, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65,
+  0x2c, 0x0a, 0x20, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x20, 0x3d, 0x20,
+  0x6d, 0x61, 0x74, 0x63, 0x68, 0x2c, 0x0a, 0x20, 0x20, 0x66, 0x69, 0x6e,
+  0x64, 0x20, 0x3d, 0x20, 0x66, 0x69, 0x6e, 0x64, 0x2c, 0x0a, 0x20, 0x20,
+  0x67, 0x73, 0x75, 0x62, 0x20, 0x3d, 0x20, 0x67, 0x73, 0x75, 0x62, 0x2c,
+  0x0a, 0x20, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x6c, 0x6f, 0x63,
+  0x61, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
+  0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x2c, 0x0a, 0x7d, 0x0a, 0x0a, 0x69,
+  0x66, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x3d,
+  0x20, 0x22, 0x4c, 0x75, 0x61, 0x20, 0x35, 0x2e, 0x31, 0x22, 0x20, 0x74,
+  0x68, 0x65, 0x6e, 0x20, 0x5f, 0x47, 0x2e, 0x72, 0x65, 0x20, 0x3d, 0x20,
+  0x72, 0x65, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x75,
+  0x72, 0x6e, 0x20, 0x72, 0x65, 0x0a
+};
+unsigned int cbits_lpeg_1_0_2_re_lua_len = 6450;
diff --git a/lpeg.cabal b/lpeg.cabal
--- a/lpeg.cabal
+++ b/lpeg.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.2
 name:                lpeg
-version:             1.0.0
+version:             1.0.1
 synopsis:            LPeg – Parsing Expression Grammars For Lua
 description:         This package contains the C sources of LPeg, as well
                      as some tiny Haskell helper to load the package.
@@ -17,6 +17,7 @@
 category:            Foreign
 build-type:          Simple
 extra-source-files:  cbits/lpeg-1.0.2/*.h
+                   , cbits/re.h
                    , README.md
                    , CHANGELOG.md
 tested-with:         GHC == 8.0.2
@@ -69,11 +70,13 @@
   else
     hs-source-dirs:      src
     include-dirs:        cbits/lpeg-1.0.2
+                       , cbits
     c-sources:           cbits/lpeg-1.0.2/lpvm.c
                        , cbits/lpeg-1.0.2/lptree.c
                        , cbits/lpeg-1.0.2/lpprint.c
                        , cbits/lpeg-1.0.2/lpcode.c
                        , cbits/lpeg-1.0.2/lpcap.c
+                       , cbits/re.c
     cc-options:          -std=c99 -fPIC
 
 test-suite test-lpeg
diff --git a/src/Lua/LPeg.hs b/src/Lua/LPeg.hs
--- a/src/Lua/LPeg.hs
+++ b/src/Lua/LPeg.hs
@@ -8,6 +8,7 @@
 -}
 module Lua.LPeg
   ( luaopen_lpeg_ptr
+  , luaopen_re_ptr
   , lpeg_searcher
   ) where
 
@@ -21,9 +22,8 @@
 foreign import ccall unsafe "lptree.c &luaopen_lpeg"
   luaopen_lpeg_ptr :: CFunction
 
--- | Name under which the module is loaded.
-moduleName :: String
-moduleName = "lpeg"
+foreign import ccall unsafe "&luaopen_re"
+  luaopen_re_ptr :: CFunction
 
 -- | A package searcher to be used with @package.searchers@), just for
 -- the "lpeg" module. Returns @nil@ on most inputs, but pushes a
@@ -37,6 +37,7 @@
       else do
         cstrLen <- peek lenPtr
         pkg <- peekCStringLen (cstr, fromIntegral cstrLen)
-        if pkg /= moduleName
-          then lua_pushnil l
-          else lua_pushcclosure l luaopen_lpeg_ptr 0
+        case pkg of
+          "lpeg" -> lua_pushcclosure l luaopen_lpeg_ptr 0
+          "re"   -> lua_pushcclosure l luaopen_re_ptr 0
+          _      -> lua_pushnil l
diff --git a/substitute/Lua/LPeg.hs b/substitute/Lua/LPeg.hs
--- a/substitute/Lua/LPeg.hs
+++ b/substitute/Lua/LPeg.hs
@@ -8,6 +8,7 @@
 -}
 module Lua.LPeg
   ( luaopen_lpeg_ptr
+  , luaopen_re_ptr
   , lpeg_searcher
   ) where
 
@@ -17,11 +18,16 @@
 import Foreign.Marshal (alloca)
 import Lua
 
--- | Pointer to the placeholder library loader. Trying to load the
+-- | Pointer to the placeholder lpeg library loader. Trying to load the
 -- library will result in an error.
 foreign import ccall unsafe "placeholder.c &luaopen_lpeg"
   luaopen_lpeg_ptr :: CFunction
 
+-- | Pointer to the placeholder re library loader. Trying to load the
+-- library will result in an error.
+foreign import ccall unsafe "placeholder.c &luaopen_re"
+  luaopen_re_ptr :: CFunction
+
 -- | Placeholder package searcher to be used with @package.searchers@),
 -- just for the "lpeg" module. Returns @nil@ on most inputs, but pushes
 -- adds a message about the module being unavailable when called on the
@@ -35,12 +41,9 @@
       else do
         cstrLen <- peek lenPtr
         pkg <- peekCStringLen (cstr, fromIntegral cstrLen)
-        if pkg /= moduleName
-          then 1 <$ lua_pushnil l
-          else 1 <$ withCString msg (lua_pushstring l)
+        case pkg of
+          "lpeg" -> 1 <$ withCString msg (lua_pushstring l)
+          "re"   -> 1 <$ withCString msg (lua_pushstring l)
+          _      -> 1 <$ lua_pushnil l
  where
   msg = "\n\tlpeg was configured to be excluded from the binary."
-
--- | Name under which the module is loaded.
-moduleName :: String
-moduleName = "lpeg"
diff --git a/test/test-lpeg.hs b/test/test-lpeg.hs
--- a/test/test-lpeg.hs
+++ b/test/test-lpeg.hs
@@ -10,7 +10,7 @@
 -}
 module Main where
 
-import Control.Monad (void, when)
+import Control.Monad
 import Foreign.C
 import Foreign.Ptr (nullPtr)
 import Lua
@@ -25,12 +25,18 @@
 tests = testGroup "LPeg" $
   -- tests to check the correct types to make sure placeholder and the real
   -- thing don't diverge.
-  [ testCase "can push loader" $ do
+  [ testCase "can push lpeg loader" $ do
       l <- hsluaL_newstate
       lua_pushcclosure l luaopen_lpeg_ptr 0
       assertEqual "loader should be a function"
         LUA_TFUNCTION =<< lua_type l (-1)
       lua_close l
+  , testCase "can push re loader" $ do
+      l <- hsluaL_newstate
+      lua_pushcclosure l luaopen_re_ptr 0
+      assertEqual "loader should be a function"
+        LUA_TFUNCTION =<< lua_type l (-1)
+      lua_close l
   , testCase "can push searcher" $ do
       l <- hsluaL_newstate
       hslua_pushhsfunction l lpeg_searcher
@@ -39,7 +45,7 @@
       lua_close l
   ] ++
 #ifndef RELY_ON_SYSTEM_INSTALL
-  [ testCase "load library via CFunction" $ do
+  [ testCase "load lpeg library via CFunction" $ do
       l <- hsluaL_newstate
       lua_pushcclosure l luaopen_lpeg_ptr 0
       stts <- lua_pcall l 0 1 0
@@ -52,21 +58,45 @@
         LUA_TFUNCTION =<< lua_type l (-1)
       lua_close l
 
-  , testCase "load library manually" $ do
+  , testCase "load libraries manually" $ do
       l <- hsluaL_newstate
       luaL_openlibs l
+
+      -- unset searchers
+      _ <- withCString "package" $ lua_getglobal l
+      pushstring l "searchers"
+      _ <- lua_gettable l (-2)
+      forM_ [1..4] $ \i -> lua_pushnil l *> lua_rawseti l (-2) i
+      lua_pop l 2
+
+      -- ensure that lpeg cannot be found
+      runScript l "assert(not pcall(function() require 'lpeg' end))"
+      -- ensure that re cannot be found
+      runScript l "assert(not pcall(function() require 're' end))"
+
       -- get table "_LOADED" from registry
       _ <- withCString loadedTableRegistryField $ lua_pushstring l
       lua_rawget l LUA_REGISTRYINDEX
 
+      -- load lpeg
       _ <- withCString "lpeg" $ lua_pushstring l  -- key
       lua_pushcclosure l luaopen_lpeg_ptr 0
       stts <- lua_pcall l 0 1 0
-      when (stts /= LUA_OK) $
-        fail =<< peekCString =<< lua_tolstring l (-1) nullPtr
+      if stts == LUA_OK
+        then lua_rawset l (-3)
+        else fail =<< peekCString =<< lua_tolstring l (-1) nullPtr
 
-      runTestScript l
+      -- load re
+      _ <- withCString "re" $ lua_pushstring l  -- key
+      lua_pushcclosure l luaopen_re_ptr 0
+      stts' <- lua_pcall l 0 1 0
+      if stts' == LUA_OK
+        then lua_rawset l (-3)
+        else fail =<< peekCString =<< lua_tolstring l (-1) nullPtr
 
+      runScript l testScript
+      runScript l "re = require 're'; assert(type(re.gsub) == 'function')"
+
       lua_close l
 
   , testCase "use lpeg_searcher as searcher" $ do
@@ -82,29 +112,32 @@
       lua_pushnil l *> lua_rawseti l (-2) 4
       lua_pop l 2
 
-      runTestScript l
+      runScript l testScript
+      runScript l "local re = require 're'\n"
 
       lua_close l
   ]
  where
-  runTestScript l = do
-    stts <- withCStringLen testScript $ \(s, slen) ->
+  runScript l script = do
+    stts <- withCStringLen script $ \(s, slen) ->
       withCString "test script" $ \n ->
       luaL_loadbuffer l s (fromIntegral slen) n
     when (stts /= LUA_OK) $ do
       fail =<< peekCString =<< lua_tolstring l (-1) nullPtr
+    stts' <- lua_pcall l 0 0 0
+    when (stts' /= LUA_OK) $ do
+      fail =<< peekCString =<< lua_tolstring l (-1) nullPtr
 
 testScript :: String
 testScript = unlines
-  [ "local m = require'lpeg'"
+  [ "local m = require 'lpeg'"
   , "assert(type(m.version()) == 'string')"
   , "assert(m.type(m.P'alo') == 'pattern')"
   , "assert(m.match('a' * m.P(true), 'a') == 2)"
-  , "print 'HI MOM'"
   ]
 
 #else
-  [ testCase "loading the placeholder library causes an error" $ do
+  [ testCase "loading the lpeg placeholder library causes an error" $ do
       l <- hsluaL_newstate
       lua_pushcclosure l luaopen_lpeg_ptr 0
       stts <- lua_pcall l 0 1 0
@@ -112,6 +145,14 @@
       when (stts /= LUA_ERRRUN) $
         fail "library loading should have failed with LUA_ERRRUN"
 
+  , testCase "loading the re placeholder library causes an error" $ do
+      l <- hsluaL_newstate
+      lua_pushcclosure l luaopen_re_ptr 0
+      stts <- lua_pcall l 0 1 0
+      stts `seq` lua_close l
+      when (stts /= LUA_ERRRUN) $
+        fail "library loading should have failed with LUA_ERRRUN"
+
   , testCase "searcher returns message" $ do
       l <- hsluaL_newstate
       luaL_openlibs l
@@ -126,17 +167,20 @@
       lua_pushnil l *> lua_rawseti l (-2) 4
       lua_pop l 2  -- tables 'package' and 'searchers'
 
-      stts <- withCStringLen "require 'lpeg'" $ \(s, slen) ->
-        withCString "test script" $ \n ->
-        luaL_loadbuffer l s (fromIntegral slen) n
-      when (stts /= LUA_OK) $ do
-        fail =<< peekCString =<< lua_tolstring l (-1) nullPtr
-      callStatus <- lua_pcall l 0 0 0
-      case callStatus of
-        LUA_OK -> fail "require should have failed"
-        LUA_ERRRUN -> return ()
-        _ -> fail =<< peekCString =<< lua_tolstring l (-1) nullPtr
+      let ensureRequireFails lib = do
+            stts <- withCStringLen ("require '" ++ lib ++ "'") $ \(s, slen) ->
+              withCString "test script" $
+                luaL_loadbuffer l s (fromIntegral slen)
+            when (stts /= LUA_OK) $ do
+              fail =<< peekCString =<< lua_tolstring l (-1) nullPtr
+            callStatus <- lua_pcall l 0 0 0
+            case callStatus of
+              LUA_OK -> fail "require should have failed"
+              LUA_ERRRUN -> return ()
+              _ -> fail =<< peekCString =<< lua_tolstring l (-1) nullPtr
 
+      ensureRequireFails "lpeg"
+      ensureRequireFails "re"
       lua_close l
   ]
 #endif
