From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=38244 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PeA9s-0003yb-1d for qemu-devel@nongnu.org; Sat, 15 Jan 2011 12:43:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PeA9q-00054p-Be for qemu-devel@nongnu.org; Sat, 15 Jan 2011 12:43:23 -0500 Received: from mail-pv0-f173.google.com ([74.125.83.173]:52439) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PeA9p-00054j-F1 for qemu-devel@nongnu.org; Sat, 15 Jan 2011 12:43:22 -0500 Received: by pvh11 with SMTP id 11so855754pvh.4 for ; Sat, 15 Jan 2011 09:43:20 -0800 (PST) MIME-Version: 1.0 From: Blue Swirl Date: Sat, 15 Jan 2011 17:42:59 +0000 Message-ID: Content-Type: multipart/mixed; boundary=001636e0b3f9210a540499e6166c Subject: [Qemu-devel] [PATCH 1/3] Add scripts directory List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel --001636e0b3f9210a540499e6166c Content-Type: text/plain; charset=UTF-8 Move build and user scripts into scripts directory. Signed-off-by: Blue Swirl --- Makefile | 26 ++++++++++---------- Makefile.target | 10 ++++---- configure | 2 +- gdbstub.h | 2 +- pc-bios/optionrom/Makefile | 2 +- qemu-doc.texi | 2 +- rules.mak | 2 +- create_config => scripts/create_config | 0 feature_to_c.sh => scripts/feature_to_c.sh | 0 hxtool => scripts/hxtool | 0 .../make_device_config.sh | 0 qemu-binfmt-conf.sh => scripts/qemu-binfmt-conf.sh | 0 {pc-bios/optionrom => scripts}/signrom.sh | 0 simpletrace.py => scripts/simpletrace.py | 0 texi2pod.pl => scripts/texi2pod.pl | 0 tracetool => scripts/tracetool | 0 16 files changed, 23 insertions(+), 23 deletions(-) rename create_config => scripts/create_config (100%) rename feature_to_c.sh => scripts/feature_to_c.sh (100%) rename hxtool => scripts/hxtool (100%) rename make_device_config.sh => scripts/make_device_config.sh (100%) rename qemu-binfmt-conf.sh => scripts/qemu-binfmt-conf.sh (100%) rename {pc-bios/optionrom => scripts}/signrom.sh (100%) rename simpletrace.py => scripts/simpletrace.py (100%) rename texi2pod.pl => scripts/texi2pod.pl (100%) rename tracetool => scripts/tracetool (100%) diff --git a/Makefile b/Makefile index 6d601ee..eca4c76 100644 --- a/Makefile +++ b/Makefile @@ -47,7 +47,7 @@ config-all-devices.mak: $(SUBDIR_DEVICES_MAK) -include $(SUBDIR_DEVICES_MAK_DEP) %/config-devices.mak: default-configs/%.mak - $(call quiet-command,$(SHELL) $(SRC_PATH)/make_device_config.sh $@ $<, " GEN $@") + $(call quiet-command,$(SHELL) $(SRC_PATH)/scripts/make_device_config.sh $@ $<, " GEN $@") @if test -f $@; then \ if cmp -s $@.old $@; then \ mv $@.tmp $@; \ @@ -76,7 +76,7 @@ build-all: $(DOCS) $(TOOLS) recurse-all config-host.h: config-host.h-timestamp config-host.h-timestamp: config-host.mak qemu-options.def: $(SRC_PATH)/qemu-options.hx - $(call quiet-command,sh $(SRC_PATH)/hxtool -h < $< > $@," GEN $@") + $(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@," GEN $@") SUBDIR_RULES=$(patsubst %,subdir-%, $(TARGET_DIRS)) @@ -118,12 +118,12 @@ else trace.h: trace.h-timestamp endif trace.h-timestamp: $(SRC_PATH)/trace-events config-host.mak - $(call quiet-command,sh $(SRC_PATH)/tracetool --$(TRACE_BACKEND) -h < $< > $@," GEN trace.h") + $(call quiet-command,sh $(SRC_PATH)/scripts/tracetool --$(TRACE_BACKEND) -h < $< > $@," GEN trace.h") @cmp -s $@ trace.h || cp $@ trace.h trace.c: trace.c-timestamp trace.c-timestamp: $(SRC_PATH)/trace-events config-host.mak - $(call quiet-command,sh $(SRC_PATH)/tracetool --$(TRACE_BACKEND) -c < $< > $@," GEN trace.c") + $(call quiet-command,sh $(SRC_PATH)/scripts/tracetool --$(TRACE_BACKEND) -c < $< > $@," GEN trace.c") @cmp -s $@ trace.c || cp $@ trace.c trace.o: trace.c $(GENERATED_HEADERS) @@ -136,7 +136,7 @@ trace-dtrace.h: trace-dtrace.dtrace # rule file. So we use '.dtrace' instead trace-dtrace.dtrace: trace-dtrace.dtrace-timestamp trace-dtrace.dtrace-timestamp: $(SRC_PATH)/trace-events config-host.mak - $(call quiet-command,sh $(SRC_PATH)/tracetool --$(TRACE_BACKEND) -d < $< > $@," GEN trace-dtrace.dtrace") + $(call quiet-command,sh $(SRC_PATH)/scripts/tracetool --$(TRACE_BACKEND) -d < $< > $@," GEN trace-dtrace.dtrace") @cmp -s $@ trace-dtrace.dtrace || cp $@ trace-dtrace.dtrace trace-dtrace.o: trace-dtrace.dtrace $(GENERATED_HEADERS) @@ -160,7 +160,7 @@ qemu-nbd$(EXESUF): qemu-nbd.o qemu-tool.o qemu-error.o $(oslib-obj-y) $(trace-ob qemu-io$(EXESUF): qemu-io.o cmd.o qemu-tool.o qemu-error.o $(oslib-obj-y) $(trace-obj-y) $(block-obj-y) $(qobject-obj-y) $(version-obj-y) qemu-timer-common.o qemu-img-cmds.h: $(SRC_PATH)/qemu-img-cmds.hx - $(call quiet-command,sh $(SRC_PATH)/hxtool -h < $< > $@," GEN $@") + $(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@," GEN $@") check-qint.o check-qstring.o check-qdict.o check-qlist.o check-qfloat.o check-qjson.o: $(GENERATED_HEADERS) @@ -282,32 +282,32 @@ TEXIFLAG=$(if $(V),,--quiet) $(call quiet-command,texi2pdf $(TEXIFLAG) -I . $<," GEN $@") qemu-options.texi: $(SRC_PATH)/qemu-options.hx - $(call quiet-command,sh $(SRC_PATH)/hxtool -t < $< > $@," GEN $@") + $(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -t < $< > $@," GEN $@") qemu-monitor.texi: $(SRC_PATH)/hmp-commands.hx - $(call quiet-command,sh $(SRC_PATH)/hxtool -t < $< > $@," GEN $@") + $(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -t < $< > $@," GEN $@") QMP/qmp-commands.txt: $(SRC_PATH)/qmp-commands.hx - $(call quiet-command,sh $(SRC_PATH)/hxtool -q < $< > $@," GEN $@") + $(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -q < $< > $@," GEN $@") qemu-img-cmds.texi: $(SRC_PATH)/qemu-img-cmds.hx - $(call quiet-command,sh $(SRC_PATH)/hxtool -t < $< > $@," GEN $@") + $(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -t < $< > $@," GEN $@") qemu.1: qemu-doc.texi qemu-options.texi qemu-monitor.texi $(call quiet-command, \ - perl -Ww -- $(SRC_PATH)/texi2pod.pl $< qemu.pod && \ + perl -Ww -- $(SRC_PATH)/scripts/texi2pod.pl $< qemu.pod && \ pod2man --section=1 --center=" " --release=" " qemu.pod > $@, \ " GEN $@") qemu-img.1: qemu-img.texi qemu-img-cmds.texi $(call quiet-command, \ - perl -Ww -- $(SRC_PATH)/texi2pod.pl $< qemu-img.pod && \ + perl -Ww -- $(SRC_PATH)/scripts/texi2pod.pl $< qemu-img.pod && \ pod2man --section=1 --center=" " --release=" " qemu-img.pod > $@, \ " GEN $@") qemu-nbd.8: qemu-nbd.texi $(call quiet-command, \ - perl -Ww -- $(SRC_PATH)/texi2pod.pl $< qemu-nbd.pod && \ + perl -Ww -- $(SRC_PATH)/scripts/texi2pod.pl $< qemu-nbd.pod && \ pod2man --section=8 --center=" " --release=" " qemu-nbd.pod > $@, \ " GEN $@") diff --git a/Makefile.target b/Makefile.target index e15b1c4..cd2abde 100644 --- a/Makefile.target +++ b/Makefile.target @@ -52,7 +52,7 @@ TARGET_TYPE=system endif $(QEMU_PROG).stp: - $(call quiet-command,sh $(SRC_PATH)/tracetool \ + $(call quiet-command,sh $(SRC_PATH)/scripts/tracetool \ --$(TRACE_BACKEND) \ --binary $(bindir)/$(QEMU_PROG) \ --target-arch $(TARGET_ARCH) \ @@ -344,14 +344,14 @@ $(QEMU_PROG): $(obj-y) $(obj-$(TARGET_BASE_ARCH)-y) $(call LINK,$(obj-y) $(obj-$(TARGET_BASE_ARCH)-y)) -gdbstub-xml.c: $(TARGET_XML_FILES) $(SRC_PATH)/feature_to_c.sh - $(call quiet-command,rm -f $@ && $(SHELL) $(SRC_PATH)/feature_to_c.sh $@ $(TARGET_XML_FILES)," GEN $(TARGET_DIR)$@") +gdbstub-xml.c: $(TARGET_XML_FILES) $(SRC_PATH)/scripts/feature_to_c.sh + $(call quiet-command,rm -f $@ && $(SHELL) $(SRC_PATH)/scripts/feature_to_c.sh $@ $(TARGET_XML_FILES)," GEN $(TARGET_DIR)$@") hmp-commands.h: $(SRC_PATH)/hmp-commands.hx - $(call quiet-command,sh $(SRC_PATH)/hxtool -h < $< > $@," GEN $(TARGET_DIR)$@") + $(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@," GEN $(TARGET_DIR)$@") qmp-commands.h: $(SRC_PATH)/qmp-commands.hx - $(call quiet-command,sh $(SRC_PATH)/hxtool -h < $< > $@," GEN $(TARGET_DIR)$@") + $(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@," GEN $(TARGET_DIR)$@") clean: rm -f *.o *.a *~ $(PROGS) nwfpe/*.o fpu/*.o diff --git a/configure b/configure index d68f862..210670c 100755 --- a/configure +++ b/configure @@ -2266,7 +2266,7 @@ fi ########################################## # check if trace backend exists -sh "$source_path/tracetool" "--$trace_backend" --check-backend > /dev/null 2> /dev/null +sh "$source_path/scripts/tracetool" "--$trace_backend" --check-backend > /dev/null 2> /dev/null if test "$?" -ne 0 ; then echo echo "Error: invalid trace backend" diff --git a/gdbstub.h b/gdbstub.h index ce5fdcc..d82334f 100644 --- a/gdbstub.h +++ b/gdbstub.h @@ -38,7 +38,7 @@ int gdbserver_start(int); int gdbserver_start(const char *port); #endif -/* in gdbstub-xml.c, generated by feature_to_c.sh */ +/* in gdbstub-xml.c, generated by scripts/feature_to_c.sh */ extern const char *const xml_builtin[][2]; #endif diff --git a/pc-bios/optionrom/Makefile b/pc-bios/optionrom/Makefile index b4be31e..51da288 100644 --- a/pc-bios/optionrom/Makefile +++ b/pc-bios/optionrom/Makefile @@ -23,7 +23,7 @@ build-all: multiboot.bin linuxboot.bin $(call quiet-command,$(OBJCOPY) -O binary -j .text $< $@," Building $(TARGET_DIR)$@") %.bin: %.raw - $(call quiet-command,$(SHELL) $(SRC_PATH)/pc-bios/optionrom/signrom.sh $< $@," Signing $(TARGET_DIR)$@") + $(call quiet-command,$(SHELL) $(SRC_PATH)/scripts/signrom.sh $< $@," Signing $(TARGET_DIR)$@") clean: rm -f *.o *.d *.raw *.img *.bin *~ diff --git a/qemu-doc.texi b/qemu-doc.texi index 45190f6..22a8663 100644 --- a/qemu-doc.texi +++ b/qemu-doc.texi @@ -2132,7 +2132,7 @@ Then you can launch the precompiled @file{ls} x86 executable: @example qemu-i386 tests/i386/ls @end example -You can look at @file{qemu-binfmt-conf.sh} so that +You can look at @file{scripts/qemu-binfmt-conf.sh} so that QEMU is automatically launched by the Linux kernel when you try to launch x86 executables. It requires the @code{binfmt_misc} module in the Linux kernel. diff --git a/rules.mak b/rules.mak index 738eec3..ed59c9e 100644 --- a/rules.mak +++ b/rules.mak @@ -57,7 +57,7 @@ find-in-path = $(if $(find-string /, $1), \ @test -f $@ || cp $< $@ %.h-timestamp: %.mak - $(call quiet-command, sh $(SRC_PATH)/create_config < $< > $@, " GEN $*.h") + $(call quiet-command, sh $(SRC_PATH)/scripts/create_config < $< > $@, " GEN $*.h") @cmp $@ $*.h >/dev/null 2>&1 || cp $@ $*.h # will delete the target of a rule if commands exit with a nonzero exit status diff --git a/create_config b/scripts/create_config similarity index 100% rename from create_config rename to scripts/create_config diff --git a/feature_to_c.sh b/scripts/feature_to_c.sh similarity index 100% rename from feature_to_c.sh rename to scripts/feature_to_c.sh diff --git a/hxtool b/scripts/hxtool similarity index 100% rename from hxtool rename to scripts/hxtool diff --git a/make_device_config.sh b/scripts/make_device_config.sh similarity index 100% rename from make_device_config.sh rename to scripts/make_device_config.sh diff --git a/qemu-binfmt-conf.sh b/scripts/qemu-binfmt-conf.sh similarity index 100% rename from qemu-binfmt-conf.sh rename to scripts/qemu-binfmt-conf.sh diff --git a/pc-bios/optionrom/signrom.sh b/scripts/signrom.sh similarity index 100% rename from pc-bios/optionrom/signrom.sh rename to scripts/signrom.sh diff --git a/simpletrace.py b/scripts/simpletrace.py similarity index 100% rename from simpletrace.py rename to scripts/simpletrace.py diff --git a/texi2pod.pl b/scripts/texi2pod.pl similarity index 100% rename from texi2pod.pl rename to scripts/texi2pod.pl diff --git a/tracetool b/scripts/tracetool similarity index 100% rename from tracetool rename to scripts/tracetool -- 1.6.2.4 --001636e0b3f9210a540499e6166c Content-Type: application/mbox; name="0001-Add-scripts-directory.patch" Content-Disposition: attachment; filename="0001-Add-scripts-directory.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_giyt1oij0 RnJvbSA0MmIxYzIzMTc4NTllYzgzZjJlODAyY2M5ZGFkM2ZmMzkxYjk3YTRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCbHVlIFN3aXJsIDxibGF1d2lyYmVsQGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAxNSBKYW4gMjAxMSAxMTo0NjoxMSArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBz Y3JpcHRzIGRpcmVjdG9yeQoKTW92ZSBidWlsZCBhbmQgdXNlciBzY3JpcHRzIGludG8gc2NyaXB0 cyBkaXJlY3RvcnkuCgpTaWduZWQtb2ZmLWJ5OiBCbHVlIFN3aXJsIDxibGF1d2lyYmVsQGdtYWls LmNvbT4KLS0tCiBNYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICB8ICAgMjYgKy0KIE1ha2Vm aWxlLnRhcmdldCAgICAgICAgICAgICAgIHwgICAxMCArLQogY29uZmlndXJlICAgICAgICAgICAg ICAgICAgICAgfCAgICAyICstCiBjcmVhdGVfY29uZmlnICAgICAgICAgICAgICAgICB8ICAxMDMg LS0tLS0tLS0KIGZlYXR1cmVfdG9fYy5zaCAgICAgICAgICAgICAgIHwgICA3NSAtLS0tLS0KIGdk YnN0dWIuaCAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogaHh0b29sICAgICAgICAgICAg ICAgICAgICAgICAgfCAgMTAyIC0tLS0tLS0tCiBtYWtlX2RldmljZV9jb25maWcuc2ggICAgICAg ICB8ICAgMjggLS0KIHBjLWJpb3Mvb3B0aW9ucm9tL01ha2VmaWxlICAgIHwgICAgMiArLQogcGMt Ymlvcy9vcHRpb25yb20vc2lnbnJvbS5zaCAgfCAgIDQ1IC0tLS0KIHFlbXUtYmluZm10LWNvbmYu c2ggICAgICAgICAgIHwgICA2NiAtLS0tLQogcWVtdS1kb2MudGV4aSAgICAgICAgICAgICAgICAg fCAgICAyICstCiBydWxlcy5tYWsgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIHNjcmlw dHMvY3JlYXRlX2NvbmZpZyAgICAgICAgIHwgIDEwMyArKysrKysrKwogc2NyaXB0cy9mZWF0dXJl X3RvX2Muc2ggICAgICAgfCAgIDc1ICsrKysrKwogc2NyaXB0cy9oeHRvb2wgICAgICAgICAgICAg ICAgfCAgMTAyICsrKysrKysrCiBzY3JpcHRzL21ha2VfZGV2aWNlX2NvbmZpZy5zaCB8ICAgMjgg KysKIHNjcmlwdHMvcWVtdS1iaW5mbXQtY29uZi5zaCAgIHwgICA2NiArKysrKwogc2NyaXB0cy9z aWducm9tLnNoICAgICAgICAgICAgfCAgIDQ1ICsrKysKIHNjcmlwdHMvc2ltcGxldHJhY2UucHkg ICAgICAgIHwgICA5MyArKysrKysrCiBzY3JpcHRzL3RleGkycG9kLnBsICAgICAgICAgICB8ICA0 NzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc2NyaXB0cy90cmFjZXRvb2wg ICAgICAgICAgICAgfCAgNTczICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCiBzaW1wbGV0cmFjZS5weSAgICAgICAgICAgICAgICB8ICAgOTMgLS0tLS0tLQogdGV4aTJw b2QucGwgICAgICAgICAgICAgICAgICAgfCAgNDc3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIHRyYWNldG9vbCAgICAgICAgICAgICAgICAgICAgIHwgIDU3MyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMjUgZmlsZXMgY2hhbmdlZCwgMTU4NSBp bnNlcnRpb25zKCspLCAxNTg1IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNzU1IGNyZWF0 ZV9jb25maWcKIGRlbGV0ZSBtb2RlIDEwMDY0NCBmZWF0dXJlX3RvX2Muc2gKIGRlbGV0ZSBtb2Rl IDEwMDY0NCBoeHRvb2wKIGRlbGV0ZSBtb2RlIDEwMDY0NCBtYWtlX2RldmljZV9jb25maWcuc2gK IGRlbGV0ZSBtb2RlIDEwMDc1NSBwYy1iaW9zL29wdGlvbnJvbS9zaWducm9tLnNoCiBkZWxldGUg bW9kZSAxMDA2NDQgcWVtdS1iaW5mbXQtY29uZi5zaAogY3JlYXRlIG1vZGUgMTAwNzU1IHNjcmlw dHMvY3JlYXRlX2NvbmZpZwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNjcmlwdHMvZmVhdHVyZV90b19j LnNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc2NyaXB0cy9oeHRvb2wKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzY3JpcHRzL21ha2VfZGV2aWNlX2NvbmZpZy5zaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNjcmlw dHMvcWVtdS1iaW5mbXQtY29uZi5zaAogY3JlYXRlIG1vZGUgMTAwNzU1IHNjcmlwdHMvc2lnbnJv bS5zaAogY3JlYXRlIG1vZGUgMTAwNzU1IHNjcmlwdHMvc2ltcGxldHJhY2UucHkKIGNyZWF0ZSBt b2RlIDEwMDc1NSBzY3JpcHRzL3RleGkycG9kLnBsCiBjcmVhdGUgbW9kZSAxMDA3NTUgc2NyaXB0 cy90cmFjZXRvb2wKIGRlbGV0ZSBtb2RlIDEwMDc1NSBzaW1wbGV0cmFjZS5weQogZGVsZXRlIG1v ZGUgMTAwNzU1IHRleGkycG9kLnBsCiBkZWxldGUgbW9kZSAxMDA3NTUgdHJhY2V0b29sCgpkaWZm IC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQppbmRleCA2ZDYwMWVlLi5lY2E0Yzc2IDEwMDY0 NAotLS0gYS9NYWtlZmlsZQorKysgYi9NYWtlZmlsZQpAQCAtNDcsNyArNDcsNyBAQCBjb25maWct YWxsLWRldmljZXMubWFrOiAkKFNVQkRJUl9ERVZJQ0VTX01BSykKIC1pbmNsdWRlICQoU1VCRElS X0RFVklDRVNfTUFLX0RFUCkKIAogJS9jb25maWctZGV2aWNlcy5tYWs6IGRlZmF1bHQtY29uZmln cy8lLm1hawotCSQoY2FsbCBxdWlldC1jb21tYW5kLCQoU0hFTEwpICQoU1JDX1BBVEgpL21ha2Vf ZGV2aWNlX2NvbmZpZy5zaCAkQCAkPCwgIiAgR0VOICAgJEAiKQorCSQoY2FsbCBxdWlldC1jb21t YW5kLCQoU0hFTEwpICQoU1JDX1BBVEgpL3NjcmlwdHMvbWFrZV9kZXZpY2VfY29uZmlnLnNoICRA ICQ8LCAiICBHRU4gICAkQCIpCiAJQGlmIHRlc3QgLWYgJEA7IHRoZW4gXAogCSAgaWYgY21wIC1z ICRALm9sZCAkQDsgdGhlbiBcCiAJICAgIG12ICRALnRtcCAkQDsgXApAQCAtNzYsNyArNzYsNyBA QCBidWlsZC1hbGw6ICQoRE9DUykgJChUT09MUykgcmVjdXJzZS1hbGwKIGNvbmZpZy1ob3N0Lmg6 IGNvbmZpZy1ob3N0LmgtdGltZXN0YW1wCiBjb25maWctaG9zdC5oLXRpbWVzdGFtcDogY29uZmln LWhvc3QubWFrCiBxZW11LW9wdGlvbnMuZGVmOiAkKFNSQ19QQVRIKS9xZW11LW9wdGlvbnMuaHgK LQkkKGNhbGwgcXVpZXQtY29tbWFuZCxzaCAkKFNSQ19QQVRIKS9oeHRvb2wgLWggPCAkPCA+ICRA LCIgIEdFTiAgICRAIikKKwkkKGNhbGwgcXVpZXQtY29tbWFuZCxzaCAkKFNSQ19QQVRIKS9zY3Jp cHRzL2h4dG9vbCAtaCA8ICQ8ID4gJEAsIiAgR0VOICAgJEAiKQogCiBTVUJESVJfUlVMRVM9JChw YXRzdWJzdCAlLHN1YmRpci0lLCAkKFRBUkdFVF9ESVJTKSkKIApAQCAtMTE4LDEyICsxMTgsMTIg QEAgZWxzZQogdHJhY2UuaDogdHJhY2UuaC10aW1lc3RhbXAKIGVuZGlmCiB0cmFjZS5oLXRpbWVz dGFtcDogJChTUkNfUEFUSCkvdHJhY2UtZXZlbnRzIGNvbmZpZy1ob3N0Lm1hawotCSQoY2FsbCBx dWlldC1jb21tYW5kLHNoICQoU1JDX1BBVEgpL3RyYWNldG9vbCAtLSQoVFJBQ0VfQkFDS0VORCkg LWggPCAkPCA+ICRALCIgIEdFTiAgIHRyYWNlLmgiKQorCSQoY2FsbCBxdWlldC1jb21tYW5kLHNo ICQoU1JDX1BBVEgpL3NjcmlwdHMvdHJhY2V0b29sIC0tJChUUkFDRV9CQUNLRU5EKSAtaCA8ICQ8 ID4gJEAsIiAgR0VOICAgdHJhY2UuaCIpCiAJQGNtcCAtcyAkQCB0cmFjZS5oIHx8IGNwICRAIHRy YWNlLmgKIAogdHJhY2UuYzogdHJhY2UuYy10aW1lc3RhbXAKIHRyYWNlLmMtdGltZXN0YW1wOiAk KFNSQ19QQVRIKS90cmFjZS1ldmVudHMgY29uZmlnLWhvc3QubWFrCi0JJChjYWxsIHF1aWV0LWNv bW1hbmQsc2ggJChTUkNfUEFUSCkvdHJhY2V0b29sIC0tJChUUkFDRV9CQUNLRU5EKSAtYyA8ICQ8 ID4gJEAsIiAgR0VOICAgdHJhY2UuYyIpCisJJChjYWxsIHF1aWV0LWNvbW1hbmQsc2ggJChTUkNf UEFUSCkvc2NyaXB0cy90cmFjZXRvb2wgLS0kKFRSQUNFX0JBQ0tFTkQpIC1jIDwgJDwgPiAkQCwi ICBHRU4gICB0cmFjZS5jIikKIAlAY21wIC1zICRAIHRyYWNlLmMgfHwgY3AgJEAgdHJhY2UuYwog CiB0cmFjZS5vOiB0cmFjZS5jICQoR0VORVJBVEVEX0hFQURFUlMpCkBAIC0xMzYsNyArMTM2LDcg QEAgdHJhY2UtZHRyYWNlLmg6IHRyYWNlLWR0cmFjZS5kdHJhY2UKICMgcnVsZSBmaWxlLiBTbyB3 ZSB1c2UgJy5kdHJhY2UnIGluc3RlYWQKIHRyYWNlLWR0cmFjZS5kdHJhY2U6IHRyYWNlLWR0cmFj ZS5kdHJhY2UtdGltZXN0YW1wCiB0cmFjZS1kdHJhY2UuZHRyYWNlLXRpbWVzdGFtcDogJChTUkNf UEFUSCkvdHJhY2UtZXZlbnRzIGNvbmZpZy1ob3N0Lm1hawotCSQoY2FsbCBxdWlldC1jb21tYW5k LHNoICQoU1JDX1BBVEgpL3RyYWNldG9vbCAtLSQoVFJBQ0VfQkFDS0VORCkgLWQgPCAkPCA+ICRA LCIgIEdFTiAgIHRyYWNlLWR0cmFjZS5kdHJhY2UiKQorCSQoY2FsbCBxdWlldC1jb21tYW5kLHNo ICQoU1JDX1BBVEgpL3NjcmlwdHMvdHJhY2V0b29sIC0tJChUUkFDRV9CQUNLRU5EKSAtZCA8ICQ8 ID4gJEAsIiAgR0VOICAgdHJhY2UtZHRyYWNlLmR0cmFjZSIpCiAJQGNtcCAtcyAkQCB0cmFjZS1k dHJhY2UuZHRyYWNlIHx8IGNwICRAIHRyYWNlLWR0cmFjZS5kdHJhY2UKIAogdHJhY2UtZHRyYWNl Lm86IHRyYWNlLWR0cmFjZS5kdHJhY2UgJChHRU5FUkFURURfSEVBREVSUykKQEAgLTE2MCw3ICsx NjAsNyBAQCBxZW11LW5iZCQoRVhFU1VGKTogcWVtdS1uYmQubyBxZW11LXRvb2wubyBxZW11LWVy cm9yLm8gJChvc2xpYi1vYmoteSkgJCh0cmFjZS1vYgogcWVtdS1pbyQoRVhFU1VGKTogcWVtdS1p by5vIGNtZC5vIHFlbXUtdG9vbC5vIHFlbXUtZXJyb3IubyAkKG9zbGliLW9iai15KSAkKHRyYWNl LW9iai15KSAkKGJsb2NrLW9iai15KSAkKHFvYmplY3Qtb2JqLXkpICQodmVyc2lvbi1vYmoteSkg cWVtdS10aW1lci1jb21tb24ubwogCiBxZW11LWltZy1jbWRzLmg6ICQoU1JDX1BBVEgpL3FlbXUt aW1nLWNtZHMuaHgKLQkkKGNhbGwgcXVpZXQtY29tbWFuZCxzaCAkKFNSQ19QQVRIKS9oeHRvb2wg LWggPCAkPCA+ICRALCIgIEdFTiAgICRAIikKKwkkKGNhbGwgcXVpZXQtY29tbWFuZCxzaCAkKFNS Q19QQVRIKS9zY3JpcHRzL2h4dG9vbCAtaCA8ICQ8ID4gJEAsIiAgR0VOICAgJEAiKQogCiBjaGVj ay1xaW50Lm8gY2hlY2stcXN0cmluZy5vIGNoZWNrLXFkaWN0Lm8gY2hlY2stcWxpc3QubyBjaGVj ay1xZmxvYXQubyBjaGVjay1xanNvbi5vOiAkKEdFTkVSQVRFRF9IRUFERVJTKQogCkBAIC0yODIs MzIgKzI4MiwzMiBAQCBURVhJRkxBRz0kKGlmICQoViksLC0tcXVpZXQpCiAJJChjYWxsIHF1aWV0 LWNvbW1hbmQsdGV4aTJwZGYgJChURVhJRkxBRykgLUkgLiAkPCwiICBHRU4gICAkQCIpCiAKIHFl bXUtb3B0aW9ucy50ZXhpOiAkKFNSQ19QQVRIKS9xZW11LW9wdGlvbnMuaHgKLQkkKGNhbGwgcXVp ZXQtY29tbWFuZCxzaCAkKFNSQ19QQVRIKS9oeHRvb2wgLXQgPCAkPCA+ICRALCIgIEdFTiAgICRA IikKKwkkKGNhbGwgcXVpZXQtY29tbWFuZCxzaCAkKFNSQ19QQVRIKS9zY3JpcHRzL2h4dG9vbCAt dCA8ICQ8ID4gJEAsIiAgR0VOICAgJEAiKQogCiBxZW11LW1vbml0b3IudGV4aTogJChTUkNfUEFU SCkvaG1wLWNvbW1hbmRzLmh4Ci0JJChjYWxsIHF1aWV0LWNvbW1hbmQsc2ggJChTUkNfUEFUSCkv aHh0b29sIC10IDwgJDwgPiAkQCwiICBHRU4gICAkQCIpCisJJChjYWxsIHF1aWV0LWNvbW1hbmQs c2ggJChTUkNfUEFUSCkvc2NyaXB0cy9oeHRvb2wgLXQgPCAkPCA+ICRALCIgIEdFTiAgICRAIikK IAogUU1QL3FtcC1jb21tYW5kcy50eHQ6ICQoU1JDX1BBVEgpL3FtcC1jb21tYW5kcy5oeAotCSQo Y2FsbCBxdWlldC1jb21tYW5kLHNoICQoU1JDX1BBVEgpL2h4dG9vbCAtcSA8ICQ8ID4gJEAsIiAg R0VOICAgJEAiKQorCSQoY2FsbCBxdWlldC1jb21tYW5kLHNoICQoU1JDX1BBVEgpL3NjcmlwdHMv aHh0b29sIC1xIDwgJDwgPiAkQCwiICBHRU4gICAkQCIpCiAKIHFlbXUtaW1nLWNtZHMudGV4aTog JChTUkNfUEFUSCkvcWVtdS1pbWctY21kcy5oeAotCSQoY2FsbCBxdWlldC1jb21tYW5kLHNoICQo U1JDX1BBVEgpL2h4dG9vbCAtdCA8ICQ8ID4gJEAsIiAgR0VOICAgJEAiKQorCSQoY2FsbCBxdWll dC1jb21tYW5kLHNoICQoU1JDX1BBVEgpL3NjcmlwdHMvaHh0b29sIC10IDwgJDwgPiAkQCwiICBH RU4gICAkQCIpCiAKIHFlbXUuMTogcWVtdS1kb2MudGV4aSBxZW11LW9wdGlvbnMudGV4aSBxZW11 LW1vbml0b3IudGV4aQogCSQoY2FsbCBxdWlldC1jb21tYW5kLCBcCi0JICBwZXJsIC1XdyAtLSAk KFNSQ19QQVRIKS90ZXhpMnBvZC5wbCAkPCBxZW11LnBvZCAmJiBcCisJICBwZXJsIC1XdyAtLSAk KFNSQ19QQVRIKS9zY3JpcHRzL3RleGkycG9kLnBsICQ8IHFlbXUucG9kICYmIFwKIAkgIHBvZDJt YW4gLS1zZWN0aW9uPTEgLS1jZW50ZXI9IiAiIC0tcmVsZWFzZT0iICIgcWVtdS5wb2QgPiAkQCwg XAogCSAgIiAgR0VOICAgJEAiKQogCiBxZW11LWltZy4xOiBxZW11LWltZy50ZXhpIHFlbXUtaW1n LWNtZHMudGV4aQogCSQoY2FsbCBxdWlldC1jb21tYW5kLCBcCi0JICBwZXJsIC1XdyAtLSAkKFNS Q19QQVRIKS90ZXhpMnBvZC5wbCAkPCBxZW11LWltZy5wb2QgJiYgXAorCSAgcGVybCAtV3cgLS0g JChTUkNfUEFUSCkvc2NyaXB0cy90ZXhpMnBvZC5wbCAkPCBxZW11LWltZy5wb2QgJiYgXAogCSAg cG9kMm1hbiAtLXNlY3Rpb249MSAtLWNlbnRlcj0iICIgLS1yZWxlYXNlPSIgIiBxZW11LWltZy5w b2QgPiAkQCwgXAogCSAgIiAgR0VOICAgJEAiKQogCiBxZW11LW5iZC44OiBxZW11LW5iZC50ZXhp CiAJJChjYWxsIHF1aWV0LWNvbW1hbmQsIFwKLQkgIHBlcmwgLVd3IC0tICQoU1JDX1BBVEgpL3Rl eGkycG9kLnBsICQ8IHFlbXUtbmJkLnBvZCAmJiBcCisJICBwZXJsIC1XdyAtLSAkKFNSQ19QQVRI KS9zY3JpcHRzL3RleGkycG9kLnBsICQ8IHFlbXUtbmJkLnBvZCAmJiBcCiAJICBwb2QybWFuIC0t c2VjdGlvbj04IC0tY2VudGVyPSIgIiAtLXJlbGVhc2U9IiAiIHFlbXUtbmJkLnBvZCA+ICRALCBc CiAJICAiICBHRU4gICAkQCIpCiAKZGlmZiAtLWdpdCBhL01ha2VmaWxlLnRhcmdldCBiL01ha2Vm aWxlLnRhcmdldAppbmRleCBlMTViMWM0Li5jZDJhYmRlIDEwMDY0NAotLS0gYS9NYWtlZmlsZS50 YXJnZXQKKysrIGIvTWFrZWZpbGUudGFyZ2V0CkBAIC01Miw3ICs1Miw3IEBAIFRBUkdFVF9UWVBF PXN5c3RlbQogZW5kaWYKIAogJChRRU1VX1BST0cpLnN0cDoKLQkkKGNhbGwgcXVpZXQtY29tbWFu ZCxzaCAkKFNSQ19QQVRIKS90cmFjZXRvb2wgXAorCSQoY2FsbCBxdWlldC1jb21tYW5kLHNoICQo U1JDX1BBVEgpL3NjcmlwdHMvdHJhY2V0b29sIFwKIAkJLS0kKFRSQUNFX0JBQ0tFTkQpIFwKIAkJ LS1iaW5hcnkgJChiaW5kaXIpLyQoUUVNVV9QUk9HKSBcCiAJCS0tdGFyZ2V0LWFyY2ggJChUQVJH RVRfQVJDSCkgXApAQCAtMzQ0LDE0ICszNDQsMTQgQEAgJChRRU1VX1BST0cpOiAkKG9iai15KSAk KG9iai0kKFRBUkdFVF9CQVNFX0FSQ0gpLXkpCiAJJChjYWxsIExJTkssJChvYmoteSkgJChvYmot JChUQVJHRVRfQkFTRV9BUkNIKS15KSkKIAogCi1nZGJzdHViLXhtbC5jOiAkKFRBUkdFVF9YTUxf RklMRVMpICQoU1JDX1BBVEgpL2ZlYXR1cmVfdG9fYy5zaAotCSQoY2FsbCBxdWlldC1jb21tYW5k LHJtIC1mICRAICYmICQoU0hFTEwpICQoU1JDX1BBVEgpL2ZlYXR1cmVfdG9fYy5zaCAkQCAkKFRB UkdFVF9YTUxfRklMRVMpLCIgIEdFTiAgICQoVEFSR0VUX0RJUikkQCIpCitnZGJzdHViLXhtbC5j OiAkKFRBUkdFVF9YTUxfRklMRVMpICQoU1JDX1BBVEgpL3NjcmlwdHMvZmVhdHVyZV90b19jLnNo CisJJChjYWxsIHF1aWV0LWNvbW1hbmQscm0gLWYgJEAgJiYgJChTSEVMTCkgJChTUkNfUEFUSCkv c2NyaXB0cy9mZWF0dXJlX3RvX2Muc2ggJEAgJChUQVJHRVRfWE1MX0ZJTEVTKSwiICBHRU4gICAk KFRBUkdFVF9ESVIpJEAiKQogCiBobXAtY29tbWFuZHMuaDogJChTUkNfUEFUSCkvaG1wLWNvbW1h bmRzLmh4Ci0JJChjYWxsIHF1aWV0LWNvbW1hbmQsc2ggJChTUkNfUEFUSCkvaHh0b29sIC1oIDwg JDwgPiAkQCwiICBHRU4gICAkKFRBUkdFVF9ESVIpJEAiKQorCSQoY2FsbCBxdWlldC1jb21tYW5k LHNoICQoU1JDX1BBVEgpL3NjcmlwdHMvaHh0b29sIC1oIDwgJDwgPiAkQCwiICBHRU4gICAkKFRB UkdFVF9ESVIpJEAiKQogCiBxbXAtY29tbWFuZHMuaDogJChTUkNfUEFUSCkvcW1wLWNvbW1hbmRz Lmh4Ci0JJChjYWxsIHF1aWV0LWNvbW1hbmQsc2ggJChTUkNfUEFUSCkvaHh0b29sIC1oIDwgJDwg PiAkQCwiICBHRU4gICAkKFRBUkdFVF9ESVIpJEAiKQorCSQoY2FsbCBxdWlldC1jb21tYW5kLHNo ICQoU1JDX1BBVEgpL3NjcmlwdHMvaHh0b29sIC1oIDwgJDwgPiAkQCwiICBHRU4gICAkKFRBUkdF VF9ESVIpJEAiKQogCiBjbGVhbjoKIAlybSAtZiAqLm8gKi5hICp+ICQoUFJPR1MpIG53ZnBlLyou byBmcHUvKi5vCmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKaW5kZXggZDY4Zjg2 Mi4uMjEwNjcwYyAxMDA3NTUKLS0tIGEvY29uZmlndXJlCisrKyBiL2NvbmZpZ3VyZQpAQCAtMjI2 Niw3ICsyMjY2LDcgQEAgZmkKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogIyBjaGVjayBpZiB0cmFjZSBiYWNrZW5kIGV4aXN0cwogCi1zaCAiJHNvdXJjZV9wYXRo L3RyYWNldG9vbCIgIi0tJHRyYWNlX2JhY2tlbmQiIC0tY2hlY2stYmFja2VuZCA+IC9kZXYvbnVs bCAyPiAvZGV2L251bGwKK3NoICIkc291cmNlX3BhdGgvc2NyaXB0cy90cmFjZXRvb2wiICItLSR0 cmFjZV9iYWNrZW5kIiAtLWNoZWNrLWJhY2tlbmQgPiAvZGV2L251bGwgMj4gL2Rldi9udWxsCiBp ZiB0ZXN0ICIkPyIgLW5lIDAgOyB0aGVuCiAgIGVjaG8KICAgZWNobyAiRXJyb3I6IGludmFsaWQg dHJhY2UgYmFja2VuZCIKZGlmZiAtLWdpdCBhL2NyZWF0ZV9jb25maWcgYi9jcmVhdGVfY29uZmln CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDk4ZTY4Li4wMDAwMDAwCi0tLSBhL2Ny ZWF0ZV9jb25maWcKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotIyEvYmluL3NoCi0K LWVjaG8gIi8qIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGNyZWF0ZV9jb25maWcgLSBkbyBu b3QgbW9kaWZ5ICovIgotCi13aGlsZSByZWFkIGxpbmU7IGRvCi0KLWNhc2UgJGxpbmUgaW4KLSBW RVJTSU9OPSopICMgY29uZmlndXJhdGlvbgotICAgIHZlcnNpb249JHtsaW5lIyo9fQotICAgIGVj aG8gIiNkZWZpbmUgUUVNVV9WRVJTSU9OIFwiJHZlcnNpb25cIiIKLSAgICA7OwotIFBLR1ZFUlNJ T049KikgIyBjb25maWd1cmF0aW9uCi0gICAgcGtndmVyc2lvbj0ke2xpbmUjKj19Ci0gICAgZWNo byAiI2RlZmluZSBRRU1VX1BLR1ZFUlNJT04gXCIkcGtndmVyc2lvblwiIgotICAgIDs7Ci0gcHJl Zml4PSogfCBbYS16XSpkaXI9KikgIyBkaXJlY3RvcnkgY29uZmlndXJhdGlvbgotICAgIG5hbWU9 JHtsaW5lJT0qfQotICAgIHZhbHVlPSR7bGluZSMqPX0KLSAgICBkZWZpbmVfbmFtZT1gZWNobyAk bmFtZSB8IHRyICdbOmxvd2VyOl0nICdbOnVwcGVyOl0nYAotICAgIGV2YWwgImRlZmluZV92YWx1 ZT1cIiR2YWx1ZVwiIgotICAgIGVjaG8gIiNkZWZpbmUgQ09ORklHX1FFTVVfJGRlZmluZV9uYW1l IFwiJGRlZmluZV92YWx1ZVwiIgotICAgICMgc2F2ZSBmb3IgdGhlIG5leHQgZGVmaW5pdGlvbnMK LSAgICBldmFsICIkbmFtZT1cJGRlZmluZV92YWx1ZSIKLSAgICA7OwotIENPTkZJR19BVURJT19E UklWRVJTPSopCi0gICAgZHJpdmVycz0ke2xpbmUjKj19Ci0gICAgZWNobyAiI2RlZmluZSBDT05G SUdfQVVESU9fRFJJVkVSUyBcXCIKLSAgICBmb3IgZHJ2IGluICRkcml2ZXJzOyBkbwotICAgICAg ZWNobyAiICAgICYke2Rydn1fYXVkaW9fZHJpdmVyLFxcIgotICAgIGRvbmUKLSAgICBlY2hvICIi Ci0gICAgOzsKLSBDT05GSUdfQkRSVl9XSElURUxJU1Q9KikKLSAgICBlY2hvICIjZGVmaW5lIENP TkZJR19CRFJWX1dISVRFTElTVCBcXCIKLSAgICBmb3IgZHJ2IGluICR7bGluZSMqPX07IGRvCi0g ICAgICBlY2hvICIgICAgXCIke2Rydn1cIixcXCIKLSAgICBkb25lCi0gICAgZWNobyAiICAgIE5V TEwiCi0gICAgOzsKLSBDT05GSUdfKj15KSAjIGNvbmZpZ3VyYXRpb24KLSAgICBuYW1lPSR7bGlu ZSU9Kn0KLSAgICBlY2hvICIjZGVmaW5lICRuYW1lIDEiCi0gICAgOzsKLSBDT05GSUdfKj0qKSAj IGNvbmZpZ3VyYXRpb24KLSAgICBuYW1lPSR7bGluZSU9Kn0KLSAgICB2YWx1ZT0ke2xpbmUjKj19 Ci0gICAgZWNobyAiI2RlZmluZSAkbmFtZSAkdmFsdWUiCi0gICAgOzsKLSBBUkNIPSopICMgY29u ZmlndXJhdGlvbgotICAgIGFyY2g9JHtsaW5lIyo9fQotICAgIGFyY2hfbmFtZT1gZWNobyAkYXJj aCB8IHRyICdbOmxvd2VyOl0nICdbOnVwcGVyOl0nYAotICAgIGVjaG8gIiNkZWZpbmUgSE9TVF8k YXJjaF9uYW1lIDEiCi0gICAgOzsKLSBIT1NUX1VTQj0qKQotICAgICMgZG8gbm90aGluZwotICAg IDs7Ci0gSE9TVF9DQz0qKQotICAgICMgZG8gbm90aGluZwotICAgIDs7Ci0gSE9TVF8qPXkpICMg Y29uZmlndXJhdGlvbgotICAgIG5hbWU9JHtsaW5lJT0qfQotICAgIGVjaG8gIiNkZWZpbmUgJG5h bWUgMSIKLSAgICA7OwotIEhPU1RfKj0qKSAjIGNvbmZpZ3VyYXRpb24KLSAgICBuYW1lPSR7bGlu ZSU9Kn0KLSAgICB2YWx1ZT0ke2xpbmUjKj19Ci0gICAgZWNobyAiI2RlZmluZSAkbmFtZSAkdmFs dWUiCi0gICAgOzsKLSBUQVJHRVRfQVJDSD0qKSAjIGNvbmZpZ3VyYXRpb24KLSAgICB0YXJnZXRf YXJjaD0ke2xpbmUjKj19Ci0gICAgZWNobyAiI2RlZmluZSBUQVJHRVRfQVJDSCBcIiR0YXJnZXRf YXJjaFwiIgotICAgIDs7Ci0gVEFSR0VUX0JBU0VfQVJDSD0qKSAjIGNvbmZpZ3VyYXRpb24KLSAg ICB0YXJnZXRfYmFzZV9hcmNoPSR7bGluZSMqPX0KLSAgICBpZiBbICIkdGFyZ2V0X2Jhc2VfYXJj aCIgIT0gIiR0YXJnZXRfYXJjaCIgXTsgdGhlbgotICAgICAgYmFzZV9hcmNoX25hbWU9YGVjaG8g JHRhcmdldF9iYXNlX2FyY2ggfCB0ciAnWzpsb3dlcjpdJyAnWzp1cHBlcjpdJ2AKLSAgICAgIGVj aG8gIiNkZWZpbmUgVEFSR0VUXyRiYXNlX2FyY2hfbmFtZSAxIgotICAgIGZpCi0gICAgOzsKLSBU QVJHRVRfWE1MX0ZJTEVTPSopCi0gICAgIyBkbyBub3RoaW5nCi0gICAgOzsKLSBUQVJHRVRfQUJJ X0RJUj0qKQotICAgICMgZG8gbm90aGluZwotICAgIDs7Ci0gVEFSR0VUX0FSQ0gyPSopCi0gICAg IyBkbyBub3RoaW5nCi0gICAgOzsKLSBUQVJHRVRfRElSUz0qKQotICAgICMgZG8gbm90aGluZwot ICAgIDs7Ci0gVEFSR0VUXyo9eSkgIyBjb25maWd1cmF0aW9uCi0gICAgbmFtZT0ke2xpbmUlPSp9 Ci0gICAgZWNobyAiI2RlZmluZSAkbmFtZSAxIgotICAgIDs7Ci0gVEFSR0VUXyo9KikgIyBjb25m aWd1cmF0aW9uCi0gICAgbmFtZT0ke2xpbmUlPSp9Ci0gICAgdmFsdWU9JHtsaW5lIyo9fQotICAg IGVjaG8gIiNkZWZpbmUgJG5hbWUgJHZhbHVlIgotICAgIDs7Ci1lc2FjCi0KLWRvbmUgIyByZWFk CmRpZmYgLS1naXQgYS9mZWF0dXJlX3RvX2Muc2ggYi9mZWF0dXJlX3RvX2Muc2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5OTRkOTUuLjAwMDAwMDAKLS0tIGEvZmVhdHVyZV90b19j LnNoCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotIyEvYmluL3NoCi0KLSMgQ29udmVy dCB0ZXh0IGZpbGVzIHRvIGNvbXBpbGFibGUgQyBhcnJheXMuCi0jCi0jIENvcHlyaWdodCAoQykg MjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSMKLSMgVGhpcyBmaWxlIGlzIHBh cnQgb2YgR0RCLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotIyB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgot IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIwotIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQotIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotCi1vdXRwdXQ9JDEKLXNoaWZ0Ci0KLWlm IHRlc3QgLXogIiRvdXRwdXQiIHx8IHRlc3QgLXogIiQxIjsgdGhlbgotICBlY2hvICJVc2FnZTog JDAgT1VUUFVURklMRSBJTlBVVEZJTEUuLi4iCi0gIGV4aXQgMQotZmkKLQotaWYgdGVzdCAtZSAi JG91dHB1dCI7IHRoZW4KLSAgZWNobyAiT3V0cHV0IGZpbGUgXCIkb3V0cHV0XCIgYWxyZWFkeSBl eGlzdHM7IHJlZnVzaW5nIHRvIG92ZXJ3cml0ZS4iCi0gIGV4aXQgMQotZmkKLQotZm9yIGlucHV0 OyBkbwotICBhcnJheW5hbWU9eG1sX2ZlYXR1cmVfYGVjaG8gJGlucHV0IHwgc2VkICdzLC4qLyws OyBzL1stLl0vXy9nJ2AKLQotICAke0FXSzotYXdrfSAnQkVHSU4geyBuID0gMAotICAgICAgcHJp bnQgInN0YXRpYyBjb25zdCBjaGFyICckYXJyYXluYW1lJ1tdID0geyIKLSAgICAgIGZvciAoaSA9 IDA7IGkgPCAyNTU7IGkrKykKLSAgICAgICAgX29yZF9bc3ByaW50ZigiJWMiLCBpKV0gPSBpCi0g ICAgfSB7Ci0gICAgICBzcGxpdCgkMCwgbGluZSwgIiIpOwotICAgICAgcHJpbnRmICIgICIKLSAg ICAgIGZvciAoaSA9IDE7IGkgPD0gbGVuZ3RoKCQwKTsgaSsrKSB7Ci0gICAgICAgIGMgPSBsaW5l W2ldCi0gICAgICAgIGlmIChjID09ICInXCcnIikgewotICAgICAgICAgIHByaW50ZiAiJ1wnJ1xc J1wnJydcJycsICIKLSAgICAgICAgfSBlbHNlIGlmIChjID09ICJcXCIpIHsKLSAgICAgICAgICBw cmludGYgIidcJydcXFxcJ1wnJywgIgotICAgICAgICB9IGVsc2UgaWYgKF9vcmRfW2NdID49IDMy ICYmIF9vcmRfW2NdIDwgMTI3KSB7Ci0JICBwcmludGYgIidcJyclcydcJycsICIsIGMKLSAgICAg ICAgfSBlbHNlIHsKLSAgICAgICAgICBwcmludGYgIidcJydcXCUwM28nXCcnLCAiLCBfb3JkX1tj XQotICAgICAgICB9Ci0gICAgICAgIGlmIChpICUgMTAgPT0gMCkKLSAgICAgICAgICBwcmludGYg IlxuICAgIgotICAgICAgfQotICAgICAgcHJpbnRmICInXCcnXFxuJ1wnJywgXG4iCi0gICAgfSBF TkQgewotICAgICAgcHJpbnQgIiAgMCB9OyIKLSAgICB9JyA8ICRpbnB1dCA+PiAkb3V0cHV0Ci1k b25lCi0KLWVjaG8gPj4gJG91dHB1dAotZWNobyAiY29uc3QgY2hhciAqY29uc3QgeG1sX2J1aWx0 aW5bXVsyXSA9IHsiID4+ICRvdXRwdXQKLQotZm9yIGlucHV0OyBkbwotICBiYXNlbmFtZT1gZWNo byAkaW5wdXQgfCBzZWQgJ3MsLiovLCwnYAotICBhcnJheW5hbWU9eG1sX2ZlYXR1cmVfYGVjaG8g JGlucHV0IHwgc2VkICdzLC4qLywsOyBzL1stLl0vXy9nJ2AKLSAgZWNobyAiICB7IFwiJGJhc2Vu YW1lXCIsICRhcnJheW5hbWUgfSwiID4+ICRvdXRwdXQKLWRvbmUKLQotZWNobyAiICB7IChjaGFy ICopMCwgKGNoYXIgKikwIH0iID4+ICRvdXRwdXQKLWVjaG8gIn07IiA+PiAkb3V0cHV0CmRpZmYg LS1naXQgYS9nZGJzdHViLmggYi9nZGJzdHViLmgKaW5kZXggY2U1ZmRjYy4uZDgyMzM0ZiAxMDA2 NDQKLS0tIGEvZ2Ric3R1Yi5oCisrKyBiL2dkYnN0dWIuaApAQCAtMzgsNyArMzgsNyBAQCBpbnQg Z2Ric2VydmVyX3N0YXJ0KGludCk7CiBpbnQgZ2Ric2VydmVyX3N0YXJ0KGNvbnN0IGNoYXIgKnBv cnQpOwogI2VuZGlmCiAKLS8qIGluIGdkYnN0dWIteG1sLmMsIGdlbmVyYXRlZCBieSBmZWF0dXJl X3RvX2Muc2ggKi8KKy8qIGluIGdkYnN0dWIteG1sLmMsIGdlbmVyYXRlZCBieSBzY3JpcHRzL2Zl YXR1cmVfdG9fYy5zaCAqLwogZXh0ZXJuIGNvbnN0IGNoYXIgKmNvbnN0IHhtbF9idWlsdGluW11b Ml07CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvaHh0b29sIGIvaHh0b29sCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCA3Y2E4M2VkLi4wMDAwMDAwCi0tLSBhL2h4dG9vbAorKysgL2Rldi9u dWxsCkBAIC0xLDEwMiArMCwwIEBACi0jIS9iaW4vc2gKLQotaHh0b2goKQotewotICAgIGZsYWc9 MQotICAgIHdoaWxlIHJlYWQgLXIgc3RyOyBkbwotICAgICAgICBjYXNlICRzdHIgaW4KLSAgICAg ICAgICAgIEhYQ09NTSopCi0gICAgICAgICAgICA7OwotICAgICAgICAgICAgU1RFWEkqfEVURVhJ KnxTUU1QKnxFUU1QKikgZmxhZz0kKCgkZmxhZ14xKSkKLSAgICAgICAgICAgIDs7Ci0gICAgICAg ICAgICAqKQotICAgICAgICAgICAgdGVzdCAkZmxhZyAtZXEgMSAmJiBwcmludGYgIiVzXG4iICIk c3RyIgotICAgICAgICAgICAgOzsKLSAgICAgICAgZXNhYwotICAgIGRvbmUKLX0KLQotaHh0b3Rl eGkoKQotewotICAgIGZsYWc9MAotICAgIGxpbmU9MQotICAgIHdoaWxlIHJlYWQgLXIgc3RyOyBk bwotICAgICAgICBjYXNlICIkc3RyIiBpbgotICAgICAgICAgICAgSFhDT01NKikKLSAgICAgICAg ICAgIDs7Ci0gICAgICAgICAgICBTVEVYSSopCi0gICAgICAgICAgICBpZiB0ZXN0ICRmbGFnIC1l cSAxIDsgdGhlbgotICAgICAgICAgICAgICAgIGVjaG8gImxpbmUgJGxpbmU6IHN5bnRheCBlcnJv cjogZXhwZWN0ZWQgRVRFWEksIGZvdW5kICRzdHIiID4mMgotICAgICAgICAgICAgICAgIGV4aXQg MQotICAgICAgICAgICAgZmkKLSAgICAgICAgICAgIGZsYWc9MQotICAgICAgICAgICAgOzsKLSAg ICAgICAgICAgIEVURVhJKikKLSAgICAgICAgICAgIGlmIHRlc3QgJGZsYWcgLW5lIDEgOyB0aGVu Ci0gICAgICAgICAgICAgICAgZWNobyAibGluZSAkbGluZTogc3ludGF4IGVycm9yOiBleHBlY3Rl ZCBTVEVYSSwgZm91bmQgJHN0ciIgPiYyCi0gICAgICAgICAgICAgICAgZXhpdCAxCi0gICAgICAg ICAgICBmaQotICAgICAgICAgICAgZmxhZz0wCi0gICAgICAgICAgICA7OwotICAgICAgICAgICAg U1FNUCp8RVFNUCopCi0gICAgICAgICAgICBpZiB0ZXN0ICRmbGFnIC1lcSAxIDsgdGhlbgotICAg ICAgICAgICAgICAgIGVjaG8gImxpbmUgJGxpbmU6IHN5bnRheCBlcnJvcjogZXhwZWN0ZWQgRVRF WEksIGZvdW5kICRzdHIiID4mMgotICAgICAgICAgICAgICAgIGV4aXQgMQotICAgICAgICAgICAg ZmkKLSAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICBERUZIRUFESU5HKikKLSAgICAgICAgICAg IGVjaG8gIiQoZXhwciAiJHN0ciIgOiAiREVGSEVBRElORyhcKC4qXCkpIikiCi0gICAgICAgICAg ICA7OwotICAgICAgICAgICAgKikKLSAgICAgICAgICAgIHRlc3QgJGZsYWcgLWVxIDEgJiYgZWNo byAiJHN0ciIKLSAgICAgICAgICAgIDs7Ci0gICAgICAgIGVzYWMKLSAgICAgICAgbGluZT0kKChs aW5lKzEpKQotICAgIGRvbmUKLX0KLQotaHh0b3FtcCgpCi17Ci0gICAgSUZTPQotICAgIGZsYWc9 MAotICAgIGxpbmU9MQotICAgIHdoaWxlIHJlYWQgLXIgc3RyOyBkbwotICAgICAgICBjYXNlICIk c3RyIiBpbgotICAgICAgICAgICAgSFhDT01NKikKLSAgICAgICAgICAgIDs7Ci0gICAgICAgICAg ICBTUU1QKikKLSAgICAgICAgICAgIGlmIHRlc3QgJGZsYWcgLWVxIDEgOyB0aGVuCi0gICAgICAg ICAgICAgICAgZWNobyAibGluZSAkbGluZTogc3ludGF4IGVycm9yOiBleHBlY3RlZCBFUU1QLCBm b3VuZCAkc3RyIiA+JjIKLSAgICAgICAgICAgICAgICBleGl0IDEKLSAgICAgICAgICAgIGZpCi0g ICAgICAgICAgICBmbGFnPTEKLSAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICBFUU1QKikKLSAg ICAgICAgICAgIGlmIHRlc3QgJGZsYWcgLW5lIDEgOyB0aGVuCi0gICAgICAgICAgICAgICAgZWNo byAibGluZSAkbGluZTogc3ludGF4IGVycm9yOiBleHBlY3RlZCBTUU1QLCBmb3VuZCAkc3RyIiA+ JjIKLSAgICAgICAgICAgICAgICBleGl0IDEKLSAgICAgICAgICAgIGZpCi0gICAgICAgICAgICBm bGFnPTAKLSAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICBTVEVYSSp8RVRFWEkqKQotICAgICAg ICAgICAgaWYgdGVzdCAkZmxhZyAtZXEgMSA7IHRoZW4KLSAgICAgICAgICAgICAgICBlY2hvICJs aW5lICRsaW5lOiBzeW50YXggZXJyb3I6IGV4cGVjdGVkIEVRTVAsIGZvdW5kICRzdHIiID4mMgot ICAgICAgICAgICAgICAgIGV4aXQgMQotICAgICAgICAgICAgZmkKLSAgICAgICAgICAgIDs7Ci0g ICAgICAgICAgICAqKQotICAgICAgICAgICAgdGVzdCAkZmxhZyAtZXEgMSAmJiBlY2hvICIkc3Ry IgotICAgICAgICAgICAgOzsKLSAgICAgICAgZXNhYwotICAgICAgICBsaW5lPSQoKGxpbmUrMSkp Ci0gICAgZG9uZQotfQotCi1jYXNlICIkMSIgaW4KLSItaCIpIGh4dG9oIDs7Ci0iLXQiKSBoeHRv dGV4aSA7OwotIi1xIikgaHh0b3FtcCA7OwotKikgZXhpdCAxIDs7Ci1lc2FjCi0KLWV4aXQgMApk aWZmIC0tZ2l0IGEvbWFrZV9kZXZpY2VfY29uZmlnLnNoIGIvbWFrZV9kZXZpY2VfY29uZmlnLnNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDE0ODg1Li4wMDAwMDAwCi0tLSBhL21h a2VfZGV2aWNlX2NvbmZpZy5zaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLSMhIC9i aW4vc2gKLSMgQ29uc3RydWN0IGEgdGFyZ2V0IGRldmljZSBjb25maWcgZmlsZSBmcm9tIGEgZGVm YXVsdCwgcHVsbGluZyBpbiBhbnkKLSMgZmlsZXMgZnJvbSBpbmNsdWRlIGRpcmVjdGl2ZXMuCi0K LWRlc3Q9JDEudG1wCi1kZXA9JDEuZAotc3JjPSQyCi1zcmNfZGlyPWBkaXJuYW1lICRzcmNgCi1h bGxfaW5jbHVkZXM9Ci0KLXByb2Nlc3NfaW5jbHVkZXMgKCkgewotICBjYXQgJDEgfCBncmVwICde aW5jbHVkZScgfCBcCi0gIHdoaWxlIHJlYWQgaW5jbHVkZSBmaWxlIDsgZG8KLSAgICBhbGxfaW5j bHVkZXM9IiRhbGxfaW5jbHVkZXMgJHNyY19kaXIvJGZpbGUiCi0gICAgcHJvY2Vzc19pbmNsdWRl cyAkc3JjX2Rpci8kZmlsZQotICBkb25lCi19Ci0KLWY9JHNyYwotd2hpbGUgWyAtbiAiJGYiIF0g OyBkbwotICBmPWB0ciAtZCAnXHInIDwgJGYgfCBhd2sgJy9eaW5jbHVkZSAvIHtwcmludGYgIick c3JjX2RpcicvJXMiLCAkMn0nYAotICBbICQ/ID0gMCBdIHx8IGV4aXQgMQotICBhbGxfaW5jbHVk ZXM9IiRhbGxfaW5jbHVkZXMgJGYiCi1kb25lCi1wcm9jZXNzX2luY2x1ZGVzICRzcmMgPiAkZGVz dAotCi1jYXQgJHNyYyAkYWxsX2luY2x1ZGVzIHwgZ3JlcCAtdiAnXmluY2x1ZGUnID4gJGRlc3QK LWVjaG8gIiQxOiAkYWxsX2luY2x1ZGVzIiA+ICRkZXAKZGlmZiAtLWdpdCBhL3BjLWJpb3Mvb3B0 aW9ucm9tL01ha2VmaWxlIGIvcGMtYmlvcy9vcHRpb25yb20vTWFrZWZpbGUKaW5kZXggYjRiZTMx ZS4uNTFkYTI4OCAxMDA2NDQKLS0tIGEvcGMtYmlvcy9vcHRpb25yb20vTWFrZWZpbGUKKysrIGIv cGMtYmlvcy9vcHRpb25yb20vTWFrZWZpbGUKQEAgLTIzLDcgKzIzLDcgQEAgYnVpbGQtYWxsOiBt dWx0aWJvb3QuYmluIGxpbnV4Ym9vdC5iaW4KIAkkKGNhbGwgcXVpZXQtY29tbWFuZCwkKE9CSkNP UFkpIC1PIGJpbmFyeSAtaiAudGV4dCAkPCAkQCwiICBCdWlsZGluZyAkKFRBUkdFVF9ESVIpJEAi KQogCiAlLmJpbjogJS5yYXcKLQkkKGNhbGwgcXVpZXQtY29tbWFuZCwkKFNIRUxMKSAkKFNSQ19Q QVRIKS9wYy1iaW9zL29wdGlvbnJvbS9zaWducm9tLnNoICQ8ICRALCIgIFNpZ25pbmcgJChUQVJH RVRfRElSKSRAIikKKwkkKGNhbGwgcXVpZXQtY29tbWFuZCwkKFNIRUxMKSAkKFNSQ19QQVRIKS9z Y3JpcHRzL3NpZ25yb20uc2ggJDwgJEAsIiAgU2lnbmluZyAkKFRBUkdFVF9ESVIpJEAiKQogCiBj bGVhbjoKIAlybSAtZiAqLm8gKi5kICoucmF3ICouaW1nICouYmluICp+CmRpZmYgLS1naXQgYS9w Yy1iaW9zL29wdGlvbnJvbS9zaWducm9tLnNoIGIvcGMtYmlvcy9vcHRpb25yb20vc2lnbnJvbS5z aApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOWRjNWM2My4uMDAwMDAwMAotLS0gYS9w Yy1iaW9zL29wdGlvbnJvbS9zaWducm9tLnNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBA QAotIyEvYmluL3NoCi0KLSMgT3B0aW9uIFJPTSBTaWduaW5nIHV0aWxpdHkKLSMKLSMgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSMgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQotIyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIyBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgotIwotIyBDb3B5cmlnaHQgTm92ZWxsIEluYywgMjAwOQotIyAgIEF1dGhvcnM6IEFs ZXhhbmRlciBHcmFmIDxhZ3JhZkBzdXNlLmRlPgotIwotIyBTeW50YXg6IHNpZ25yb20uc2ggPGlu cHV0PiA8b3V0cHV0PgotCi0jIGRpZCB3ZSBnZXQgcHJvcGVyIGFyZ3VtZW50cz8KLXRlc3QgIiQx IiAtYSAiJDIiIHx8IGV4aXQgMQotCi1zdW09MAotCi0jIGZpbmQgb3V0IHRoZSBmaWxlIHNpemUK LXg9YGRkIGlmPSIkMSIgYnM9MSBjb3VudD0xIHNraXA9MiAyPi9kZXYvbnVsbCB8IG9kIC10IHUx IC1BIG5gCi0jc2l6ZT1gZXhwciAkeCBcKiA1MTIgLSAxYAotc2l6ZT0kKCggJHggKiA1MTIgLSAx ICkpCi0KLSMgbm93IGdldCB0aGUgY2hlY2tzdW0KLW51bXM9YG9kIC1BIG4gLXQgdTEgLXYgLU4g JHNpemUgIiQxImAKLWZvciBpIGluICR7bnVtc307IGRvCi0gICAgIyBhZGQgZWFjaCBieXRlJ3Mg dmFsdWUgdG8gc3VtCi0gICAgc3VtPWBleHByIFwoICRzdW0gKyAkaSBcKSAlIDI1NmAKLWRvbmUK LQotc3VtPSQoKCAoMjU2IC0gJHN1bSkgJSAyNTYgKSkKLXN1bV9vY3RhbD0kKCBwcmludGYgIiVv IiAkc3VtICkKLQotIyBhbmQgd3JpdGUgdGhlIG91dHB1dCBmaWxlCi1jcCAiJDEiICIkMiIKLXBy aW50ZiAiXFwkc3VtX29jdGFsIiB8IGRkIG9mPSIkMiIgYnM9MSBjb3VudD0xIHNlZWs9JHNpemUg Y29udj1ub3RydW5jIDI+L2Rldi9udWxsCmRpZmYgLS1naXQgYS9xZW11LWJpbmZtdC1jb25mLnNo IGIvcWVtdS1iaW5mbXQtY29uZi5zaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzUw YmViNy4uMDAwMDAwMAotLS0gYS9xZW11LWJpbmZtdC1jb25mLnNoCisrKyAvZGV2L251bGwKQEAg LTEsNjYgKzAsMCBAQAotIyEvYmluL3NoCi0jIGVuYWJsZSBhdXRvbWF0aWMgaTM4Ni9BUk0vTTY4 Sy9NSVBTL1NQQVJDL1BQQyBwcm9ncmFtIGV4ZWN1dGlvbiBieSB0aGUga2VybmVsCi0KLSMgbG9h ZCB0aGUgYmluZm10X21pc2MgbW9kdWxlCi1pZiBbICEgLWQgL3Byb2Mvc3lzL2ZzL2JpbmZtdF9t aXNjIF07IHRoZW4KLSAgL3NiaW4vbW9kcHJvYmUgYmluZm10X21pc2MKLWZpCi1pZiBbICEgLWYg L3Byb2Mvc3lzL2ZzL2JpbmZtdF9taXNjL3JlZ2lzdGVyIF07IHRoZW4KLSAgbW91bnQgYmluZm10 X21pc2MgLXQgYmluZm10X21pc2MgL3Byb2Mvc3lzL2ZzL2JpbmZtdF9taXNjCi1maQotCi0jIHBy b2JlIGNwdSB0eXBlCi1jcHU9YHVuYW1lIC1tYAotY2FzZSAiJGNwdSIgaW4KLSAgaTM4NnxpNDg2 fGk1ODZ8aTY4NnxpODZwY3xCZVBDfHg4Nl82NCkKLSAgICBjcHU9ImkzODYiCi0gIDs7Ci0gIG02 OGspCi0gICAgY3B1PSJtNjhrIgotICA7OwotICBtaXBzKikKLSAgICBjcHU9Im1pcHMiCi0gIDs7 Ci0gICJQb3dlciBNYWNpbnRvc2gifHBwY3xwcGM2NCkKLSAgICBjcHU9InBwYyIKLSAgOzsKLSAg YXJtdls0LTldKikKLSAgICBjcHU9ImFybSIKLSAgOzsKLWVzYWMKLQotIyByZWdpc3RlciB0aGUg aW50ZXJwcmV0ZXIgZm9yIGVhY2ggY3B1IGV4Y2VwdCBmb3IgdGhlIG5hdGl2ZSBvbmUKLWlmIFsg JGNwdSAhPSAiaTM4NiIgXSA7IHRoZW4KLSAgICBlY2hvICc6aTM4NjpNOjpceDdmRUxGXHgwMVx4 MDFceDAxXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMlx4MDBceDAzXHgw MDpceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmVceGZlXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm Zlx4ZmZceGZmXHhmZVx4ZmZceGZmXHhmZjovdXNyL2xvY2FsL2Jpbi9xZW11LWkzODY6JyA+IC9w cm9jL3N5cy9mcy9iaW5mbXRfbWlzYy9yZWdpc3RlcgotICAgIGVjaG8gJzppNDg2Ok06Olx4N2ZF TEZceDAxXHgwMVx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAyXHgw MFx4MDZceDAwOlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZVx4ZmVceGZmXHhmZlx4ZmZceGZmXHhm Zlx4ZmZceGZmXHhmZlx4ZmZceGZlXHhmZlx4ZmZceGZmOi91c3IvbG9jYWwvYmluL3FlbXUtaTM4 NjonID4gL3Byb2Mvc3lzL2ZzL2JpbmZtdF9taXNjL3JlZ2lzdGVyCi1maQotaWYgWyAkY3B1ICE9 ICJhbHBoYSIgXSA7IHRoZW4KLSAgICBlY2hvICc6YWxwaGE6TTo6XHg3ZkVMRlx4MDJceDAxXHgw MVx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDJceDAwXHgyNlx4OTA6XHhm Zlx4ZmZceGZmXHhmZlx4ZmZceGZlXHhmZVx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm XHhmZlx4ZmVceGZmXHhmZlx4ZmY6L3Vzci9sb2NhbC9iaW4vcWVtdS1hbHBoYTonID4gL3Byb2Mv c3lzL2ZzL2JpbmZtdF9taXNjL3JlZ2lzdGVyCi1maQotaWYgWyAkY3B1ICE9ICJhcm0iIF0gOyB0 aGVuCi0gICAgZWNobyAgICc6YXJtOk06Olx4N2ZFTEZceDAxXHgwMVx4MDFceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAyXHgwMFx4MjhceDAwOlx4ZmZceGZmXHhmZlx4ZmZc eGZmXHhmZlx4ZmZceDAwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZlXHhmZlx4 ZmZceGZmOi91c3IvbG9jYWwvYmluL3FlbXUtYXJtOicgPiAvcHJvYy9zeXMvZnMvYmluZm10X21p c2MvcmVnaXN0ZXIKLSAgICBlY2hvICAgJzphcm1lYjpNOjpceDdmRUxGXHgwMVx4MDJceDAxXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDJceDAwXHgyODpceGZmXHhm Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHgwMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm XHhmZlx4ZmVceGZmXHhmZjovdXNyL2xvY2FsL2Jpbi9xZW11LWFybWViOicgPiAvcHJvYy9zeXMv ZnMvYmluZm10X21pc2MvcmVnaXN0ZXIKLWZpCi1pZiBbICRjcHUgIT0gInNwYXJjIiBdIDsgdGhl bgotICAgIGVjaG8gICAnOnNwYXJjOk06Olx4N2ZFTEZceDAxXHgwMlx4MDFceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMlx4MDBceDAyOlx4ZmZceGZmXHhmZlx4ZmZc eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZVx4 ZmZceGZmOi91c3IvbG9jYWwvYmluL3FlbXUtc3BhcmM6JyA+IC9wcm9jL3N5cy9mcy9iaW5mbXRf bWlzYy9yZWdpc3RlcgotZmkKLWlmIFsgJGNwdSAhPSAicHBjIiBdIDsgdGhlbgotICAgIGVjaG8g ICAnOnBwYzpNOjpceDdmRUxGXHgwMVx4MDJceDAxXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDJceDAwXHgxNDpceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmVceGZmXHhmZjovdXNyL2xv Y2FsL2Jpbi9xZW11LXBwYzonID4gL3Byb2Mvc3lzL2ZzL2JpbmZtdF9taXNjL3JlZ2lzdGVyCi1m aQotaWYgWyAkY3B1ICE9ICJtNjhrIiBdIDsgdGhlbgotICAgIGVjaG8gICAnUGxlYXNlIGNoZWNr IGNwdSB2YWx1ZSBhbmQgaGVhZGVyIGluZm9ybWF0aW9uIGZvciBtNjhrIScKLSAgICBlY2hvICAg JzptNjhrOk06Olx4N2ZFTEZceDAxXHgwMlx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMlx4MDBceDA0Olx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDAw XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZVx4ZmZceGZmOi91c3IvbG9j YWwvYmluL3FlbXUtbTY4azonID4gL3Byb2Mvc3lzL2ZzL2JpbmZtdF9taXNjL3JlZ2lzdGVyCi1m aQotaWYgWyAkY3B1ICE9ICJtaXBzIiBdIDsgdGhlbgotICAgICMgRklYTUU6IFdlIGNvdWxkIHVz ZSB0aGUgb3RoZXIgZW5kaWFubmVzcyBvbiBhIE1JUFMgaG9zdC4KLSAgICBlY2hvICAgJzptaXBz Ok06Olx4N2ZFTEZceDAxXHgwMlx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMlx4MDBceDA4Olx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDAwXHhmZlx4 ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZVx4ZmZceGZmOi91c3IvbG9jYWwvYmlu L3FlbXUtbWlwczonID4gL3Byb2Mvc3lzL2ZzL2JpbmZtdF9taXNjL3JlZ2lzdGVyCi0gICAgZWNo byAgICc6bWlwc2VsOk06Olx4N2ZFTEZceDAxXHgwMVx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAyXHgwMFx4MDhceDAwOlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4 ZmZceDAwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZlXHhmZlx4ZmZceGZmOi91 c3IvbG9jYWwvYmluL3FlbXUtbWlwc2VsOicgPiAvcHJvYy9zeXMvZnMvYmluZm10X21pc2MvcmVn aXN0ZXIKLSAgICBlY2hvICAgJzptaXBzbjMyOk06Olx4N2ZFTEZceDAxXHgwMlx4MDFceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMlx4MDBceDA4Olx4ZmZceGZmXHhm Zlx4ZmZceGZmXHhmZlx4ZmZceDAwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm XHhmZVx4ZmZceGZmOi91c3IvbG9jYWwvYmluL3FlbXUtbWlwc24zMjonID4gL3Byb2Mvc3lzL2Zz L2JpbmZtdF9taXNjL3JlZ2lzdGVyCi0gICAgZWNobyAgICc6bWlwc24zMmVsOk06Olx4N2ZFTEZc eDAxXHgwMVx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAyXHgwMFx4 MDhceDAwOlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDAwXHhmZlx4ZmZceGZmXHhmZlx4 ZmZceGZmXHhmZlx4ZmZceGZlXHhmZlx4ZmZceGZmOi91c3IvbG9jYWwvYmluL3FlbXUtbWlwc24z MmVsOicgPiAvcHJvYy9zeXMvZnMvYmluZm10X21pc2MvcmVnaXN0ZXIKLSAgICBlY2hvICAgJzpt aXBzNjQ6TTo6XHg3ZkVMRlx4MDJceDAyXHgwMVx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAyXHgwMFx4MDg6XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4MDBc eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZlXHhmZlx4ZmY6L3Vzci9sb2Nh bC9iaW4vcWVtdS1taXBzNjQ6JyA+IC9wcm9jL3N5cy9mcy9iaW5mbXRfbWlzYy9yZWdpc3Rlcgot ICAgIGVjaG8gICAnOm1pcHM2NGVsOk06Olx4N2ZFTEZceDAyXHgwMVx4MDFceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAyXHgwMFx4MDhceDAwOlx4ZmZceGZmXHhmZlx4ZmZc eGZmXHhmZlx4ZmZceDAwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZlXHhmZlx4 ZmZceGZmOi91c3IvbG9jYWwvYmluL3FlbXUtbWlwczY0ZWw6JyA+IC9wcm9jL3N5cy9mcy9iaW5m bXRfbWlzYy9yZWdpc3RlcgotZmkKLWlmIFsgJGNwdSAhPSAic2giIF0gOyB0aGVuCi0gICAgZWNo byAgICAnOnNoNDpNOjpceDdmRUxGXHgwMVx4MDFceDAxXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMlx4MDBceDJhXHgwMDpceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZVx4ZmZceGZmXHhmZjovdXNy L2xvY2FsL2Jpbi9xZW11LXNoNDonID4gL3Byb2Mvc3lzL2ZzL2JpbmZtdF9taXNjL3JlZ2lzdGVy Ci0gICAgZWNobyAgICAnOnNoNGViOk06Olx4N2ZFTEZceDAxXHgwMlx4MDFceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMlx4MDBceDJhOlx4ZmZceGZmXHhmZlx4ZmZc eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZVx4 ZmZceGZmOi91c3IvbG9jYWwvYmluL3FlbXUtc2g0ZWI6JyA+IC9wcm9jL3N5cy9mcy9iaW5mbXRf bWlzYy9yZWdpc3RlcgotZmkKZGlmZiAtLWdpdCBhL3FlbXUtZG9jLnRleGkgYi9xZW11LWRvYy50 ZXhpCmluZGV4IDQ1MTkwZjYuLjIyYTg2NjMgMTAwNjQ0Ci0tLSBhL3FlbXUtZG9jLnRleGkKKysr IGIvcWVtdS1kb2MudGV4aQpAQCAtMjEzMiw3ICsyMTMyLDcgQEAgVGhlbiB5b3UgY2FuIGxhdW5j aCB0aGUgcHJlY29tcGlsZWQgQGZpbGV7bHN9IHg4NiBleGVjdXRhYmxlOgogQGV4YW1wbGUKIHFl bXUtaTM4NiB0ZXN0cy9pMzg2L2xzCiBAZW5kIGV4YW1wbGUKLVlvdSBjYW4gbG9vayBhdCBAZmls ZXtxZW11LWJpbmZtdC1jb25mLnNofSBzbyB0aGF0CitZb3UgY2FuIGxvb2sgYXQgQGZpbGV7c2Ny aXB0cy9xZW11LWJpbmZtdC1jb25mLnNofSBzbyB0aGF0CiBRRU1VIGlzIGF1dG9tYXRpY2FsbHkg bGF1bmNoZWQgYnkgdGhlIExpbnV4IGtlcm5lbCB3aGVuIHlvdSB0cnkgdG8KIGxhdW5jaCB4ODYg ZXhlY3V0YWJsZXMuIEl0IHJlcXVpcmVzIHRoZSBAY29kZXtiaW5mbXRfbWlzY30gbW9kdWxlIGlu IHRoZQogTGludXgga2VybmVsLgpkaWZmIC0tZ2l0IGEvcnVsZXMubWFrIGIvcnVsZXMubWFrCmlu ZGV4IDczOGVlYzMuLmVkNTljOWUgMTAwNjQ0Ci0tLSBhL3J1bGVzLm1haworKysgYi9ydWxlcy5t YWsKQEAgLTU3LDcgKzU3LDcgQEAgZmluZC1pbi1wYXRoID0gJChpZiAkKGZpbmQtc3RyaW5nIC8s ICQxKSwgXAogCUB0ZXN0IC1mICRAIHx8IGNwICQ8ICRACiAKICUuaC10aW1lc3RhbXA6ICUubWFr Ci0JJChjYWxsIHF1aWV0LWNvbW1hbmQsIHNoICQoU1JDX1BBVEgpL2NyZWF0ZV9jb25maWcgPCAk PCA+ICRALCAiICBHRU4gICAkKi5oIikKKwkkKGNhbGwgcXVpZXQtY29tbWFuZCwgc2ggJChTUkNf UEFUSCkvc2NyaXB0cy9jcmVhdGVfY29uZmlnIDwgJDwgPiAkQCwgIiAgR0VOICAgJCouaCIpCiAJ QGNtcCAkQCAkKi5oID4vZGV2L251bGwgMj4mMSB8fCBjcCAkQCAkKi5oCiAKICMgd2lsbCBkZWxl dGUgdGhlIHRhcmdldCBvZiBhIHJ1bGUgaWYgY29tbWFuZHMgZXhpdCB3aXRoIGEgbm9uemVybyBl eGl0IHN0YXR1cwpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9jcmVhdGVfY29uZmlnIGIvc2NyaXB0cy9j cmVhdGVfY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjAwOThlNjgK LS0tIC9kZXYvbnVsbAorKysgYi9zY3JpcHRzL2NyZWF0ZV9jb25maWcKQEAgLTAsMCArMSwxMDMg QEAKKyMhL2Jpbi9zaAorCitlY2hvICIvKiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBjcmVh dGVfY29uZmlnIC0gZG8gbm90IG1vZGlmeSAqLyIKKword2hpbGUgcmVhZCBsaW5lOyBkbworCitj YXNlICRsaW5lIGluCisgVkVSU0lPTj0qKSAjIGNvbmZpZ3VyYXRpb24KKyAgICB2ZXJzaW9uPSR7 bGluZSMqPX0KKyAgICBlY2hvICIjZGVmaW5lIFFFTVVfVkVSU0lPTiBcIiR2ZXJzaW9uXCIiCisg ICAgOzsKKyBQS0dWRVJTSU9OPSopICMgY29uZmlndXJhdGlvbgorICAgIHBrZ3ZlcnNpb249JHts aW5lIyo9fQorICAgIGVjaG8gIiNkZWZpbmUgUUVNVV9QS0dWRVJTSU9OIFwiJHBrZ3ZlcnNpb25c IiIKKyAgICA7OworIHByZWZpeD0qIHwgW2Etel0qZGlyPSopICMgZGlyZWN0b3J5IGNvbmZpZ3Vy YXRpb24KKyAgICBuYW1lPSR7bGluZSU9Kn0KKyAgICB2YWx1ZT0ke2xpbmUjKj19CisgICAgZGVm aW5lX25hbWU9YGVjaG8gJG5hbWUgfCB0ciAnWzpsb3dlcjpdJyAnWzp1cHBlcjpdJ2AKKyAgICBl dmFsICJkZWZpbmVfdmFsdWU9XCIkdmFsdWVcIiIKKyAgICBlY2hvICIjZGVmaW5lIENPTkZJR19R RU1VXyRkZWZpbmVfbmFtZSBcIiRkZWZpbmVfdmFsdWVcIiIKKyAgICAjIHNhdmUgZm9yIHRoZSBu ZXh0IGRlZmluaXRpb25zCisgICAgZXZhbCAiJG5hbWU9XCRkZWZpbmVfdmFsdWUiCisgICAgOzsK KyBDT05GSUdfQVVESU9fRFJJVkVSUz0qKQorICAgIGRyaXZlcnM9JHtsaW5lIyo9fQorICAgIGVj aG8gIiNkZWZpbmUgQ09ORklHX0FVRElPX0RSSVZFUlMgXFwiCisgICAgZm9yIGRydiBpbiAkZHJp dmVyczsgZG8KKyAgICAgIGVjaG8gIiAgICAmJHtkcnZ9X2F1ZGlvX2RyaXZlcixcXCIKKyAgICBk b25lCisgICAgZWNobyAiIgorICAgIDs7CisgQ09ORklHX0JEUlZfV0hJVEVMSVNUPSopCisgICAg ZWNobyAiI2RlZmluZSBDT05GSUdfQkRSVl9XSElURUxJU1QgXFwiCisgICAgZm9yIGRydiBpbiAk e2xpbmUjKj19OyBkbworICAgICAgZWNobyAiICAgIFwiJHtkcnZ9XCIsXFwiCisgICAgZG9uZQor ICAgIGVjaG8gIiAgICBOVUxMIgorICAgIDs7CisgQ09ORklHXyo9eSkgIyBjb25maWd1cmF0aW9u CisgICAgbmFtZT0ke2xpbmUlPSp9CisgICAgZWNobyAiI2RlZmluZSAkbmFtZSAxIgorICAgIDs7 CisgQ09ORklHXyo9KikgIyBjb25maWd1cmF0aW9uCisgICAgbmFtZT0ke2xpbmUlPSp9CisgICAg dmFsdWU9JHtsaW5lIyo9fQorICAgIGVjaG8gIiNkZWZpbmUgJG5hbWUgJHZhbHVlIgorICAgIDs7 CisgQVJDSD0qKSAjIGNvbmZpZ3VyYXRpb24KKyAgICBhcmNoPSR7bGluZSMqPX0KKyAgICBhcmNo X25hbWU9YGVjaG8gJGFyY2ggfCB0ciAnWzpsb3dlcjpdJyAnWzp1cHBlcjpdJ2AKKyAgICBlY2hv ICIjZGVmaW5lIEhPU1RfJGFyY2hfbmFtZSAxIgorICAgIDs7CisgSE9TVF9VU0I9KikKKyAgICAj IGRvIG5vdGhpbmcKKyAgICA7OworIEhPU1RfQ0M9KikKKyAgICAjIGRvIG5vdGhpbmcKKyAgICA7 OworIEhPU1RfKj15KSAjIGNvbmZpZ3VyYXRpb24KKyAgICBuYW1lPSR7bGluZSU9Kn0KKyAgICBl Y2hvICIjZGVmaW5lICRuYW1lIDEiCisgICAgOzsKKyBIT1NUXyo9KikgIyBjb25maWd1cmF0aW9u CisgICAgbmFtZT0ke2xpbmUlPSp9CisgICAgdmFsdWU9JHtsaW5lIyo9fQorICAgIGVjaG8gIiNk ZWZpbmUgJG5hbWUgJHZhbHVlIgorICAgIDs7CisgVEFSR0VUX0FSQ0g9KikgIyBjb25maWd1cmF0 aW9uCisgICAgdGFyZ2V0X2FyY2g9JHtsaW5lIyo9fQorICAgIGVjaG8gIiNkZWZpbmUgVEFSR0VU X0FSQ0ggXCIkdGFyZ2V0X2FyY2hcIiIKKyAgICA7OworIFRBUkdFVF9CQVNFX0FSQ0g9KikgIyBj b25maWd1cmF0aW9uCisgICAgdGFyZ2V0X2Jhc2VfYXJjaD0ke2xpbmUjKj19CisgICAgaWYgWyAi JHRhcmdldF9iYXNlX2FyY2giICE9ICIkdGFyZ2V0X2FyY2giIF07IHRoZW4KKyAgICAgIGJhc2Vf YXJjaF9uYW1lPWBlY2hvICR0YXJnZXRfYmFzZV9hcmNoIHwgdHIgJ1s6bG93ZXI6XScgJ1s6dXBw ZXI6XSdgCisgICAgICBlY2hvICIjZGVmaW5lIFRBUkdFVF8kYmFzZV9hcmNoX25hbWUgMSIKKyAg ICBmaQorICAgIDs7CisgVEFSR0VUX1hNTF9GSUxFUz0qKQorICAgICMgZG8gbm90aGluZworICAg IDs7CisgVEFSR0VUX0FCSV9ESVI9KikKKyAgICAjIGRvIG5vdGhpbmcKKyAgICA7OworIFRBUkdF VF9BUkNIMj0qKQorICAgICMgZG8gbm90aGluZworICAgIDs7CisgVEFSR0VUX0RJUlM9KikKKyAg ICAjIGRvIG5vdGhpbmcKKyAgICA7OworIFRBUkdFVF8qPXkpICMgY29uZmlndXJhdGlvbgorICAg IG5hbWU9JHtsaW5lJT0qfQorICAgIGVjaG8gIiNkZWZpbmUgJG5hbWUgMSIKKyAgICA7OworIFRB UkdFVF8qPSopICMgY29uZmlndXJhdGlvbgorICAgIG5hbWU9JHtsaW5lJT0qfQorICAgIHZhbHVl PSR7bGluZSMqPX0KKyAgICBlY2hvICIjZGVmaW5lICRuYW1lICR2YWx1ZSIKKyAgICA7OworZXNh YworCitkb25lICMgcmVhZApkaWZmIC0tZ2l0IGEvc2NyaXB0cy9mZWF0dXJlX3RvX2Muc2ggYi9z Y3JpcHRzL2ZlYXR1cmVfdG9fYy5zaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4wOTk0ZDk1Ci0tLSAvZGV2L251bGwKKysrIGIvc2NyaXB0cy9mZWF0dXJlX3RvX2Muc2gKQEAg LTAsMCArMSw3NSBAQAorIyEvYmluL3NoCisKKyMgQ29udmVydCB0ZXh0IGZpbGVzIHRvIGNvbXBp bGFibGUgQyBhcnJheXMuCisjCisjIENvcHlyaWdodCAoQykgMjAwNyBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorIworIyBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgorCitvdXRwdXQ9JDEKK3NoaWZ0CisKK2lmIHRlc3QgLXogIiRvdXRwdXQiIHx8 IHRlc3QgLXogIiQxIjsgdGhlbgorICBlY2hvICJVc2FnZTogJDAgT1VUUFVURklMRSBJTlBVVEZJ TEUuLi4iCisgIGV4aXQgMQorZmkKKworaWYgdGVzdCAtZSAiJG91dHB1dCI7IHRoZW4KKyAgZWNo byAiT3V0cHV0IGZpbGUgXCIkb3V0cHV0XCIgYWxyZWFkeSBleGlzdHM7IHJlZnVzaW5nIHRvIG92 ZXJ3cml0ZS4iCisgIGV4aXQgMQorZmkKKworZm9yIGlucHV0OyBkbworICBhcnJheW5hbWU9eG1s X2ZlYXR1cmVfYGVjaG8gJGlucHV0IHwgc2VkICdzLC4qLywsOyBzL1stLl0vXy9nJ2AKKworICAk e0FXSzotYXdrfSAnQkVHSU4geyBuID0gMAorICAgICAgcHJpbnQgInN0YXRpYyBjb25zdCBjaGFy ICckYXJyYXluYW1lJ1tdID0geyIKKyAgICAgIGZvciAoaSA9IDA7IGkgPCAyNTU7IGkrKykKKyAg ICAgICAgX29yZF9bc3ByaW50ZigiJWMiLCBpKV0gPSBpCisgICAgfSB7CisgICAgICBzcGxpdCgk MCwgbGluZSwgIiIpOworICAgICAgcHJpbnRmICIgICIKKyAgICAgIGZvciAoaSA9IDE7IGkgPD0g bGVuZ3RoKCQwKTsgaSsrKSB7CisgICAgICAgIGMgPSBsaW5lW2ldCisgICAgICAgIGlmIChjID09 ICInXCcnIikgeworICAgICAgICAgIHByaW50ZiAiJ1wnJ1xcJ1wnJydcJycsICIKKyAgICAgICAg fSBlbHNlIGlmIChjID09ICJcXCIpIHsKKyAgICAgICAgICBwcmludGYgIidcJydcXFxcJ1wnJywg IgorICAgICAgICB9IGVsc2UgaWYgKF9vcmRfW2NdID49IDMyICYmIF9vcmRfW2NdIDwgMTI3KSB7 CisJICBwcmludGYgIidcJyclcydcJycsICIsIGMKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg ICBwcmludGYgIidcJydcXCUwM28nXCcnLCAiLCBfb3JkX1tjXQorICAgICAgICB9CisgICAgICAg IGlmIChpICUgMTAgPT0gMCkKKyAgICAgICAgICBwcmludGYgIlxuICAgIgorICAgICAgfQorICAg ICAgcHJpbnRmICInXCcnXFxuJ1wnJywgXG4iCisgICAgfSBFTkQgeworICAgICAgcHJpbnQgIiAg MCB9OyIKKyAgICB9JyA8ICRpbnB1dCA+PiAkb3V0cHV0Citkb25lCisKK2VjaG8gPj4gJG91dHB1 dAorZWNobyAiY29uc3QgY2hhciAqY29uc3QgeG1sX2J1aWx0aW5bXVsyXSA9IHsiID4+ICRvdXRw dXQKKworZm9yIGlucHV0OyBkbworICBiYXNlbmFtZT1gZWNobyAkaW5wdXQgfCBzZWQgJ3MsLiov LCwnYAorICBhcnJheW5hbWU9eG1sX2ZlYXR1cmVfYGVjaG8gJGlucHV0IHwgc2VkICdzLC4qLyws OyBzL1stLl0vXy9nJ2AKKyAgZWNobyAiICB7IFwiJGJhc2VuYW1lXCIsICRhcnJheW5hbWUgfSwi ID4+ICRvdXRwdXQKK2RvbmUKKworZWNobyAiICB7IChjaGFyICopMCwgKGNoYXIgKikwIH0iID4+ ICRvdXRwdXQKK2VjaG8gIn07IiA+PiAkb3V0cHV0CmRpZmYgLS1naXQgYS9zY3JpcHRzL2h4dG9v bCBiL3NjcmlwdHMvaHh0b29sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdj YTgzZWQKLS0tIC9kZXYvbnVsbAorKysgYi9zY3JpcHRzL2h4dG9vbApAQCAtMCwwICsxLDEwMiBA QAorIyEvYmluL3NoCisKK2h4dG9oKCkKK3sKKyAgICBmbGFnPTEKKyAgICB3aGlsZSByZWFkIC1y IHN0cjsgZG8KKyAgICAgICAgY2FzZSAkc3RyIGluCisgICAgICAgICAgICBIWENPTU0qKQorICAg ICAgICAgICAgOzsKKyAgICAgICAgICAgIFNURVhJKnxFVEVYSSp8U1FNUCp8RVFNUCopIGZsYWc9 JCgoJGZsYWdeMSkpCisgICAgICAgICAgICA7OworICAgICAgICAgICAgKikKKyAgICAgICAgICAg IHRlc3QgJGZsYWcgLWVxIDEgJiYgcHJpbnRmICIlc1xuIiAiJHN0ciIKKyAgICAgICAgICAgIDs7 CisgICAgICAgIGVzYWMKKyAgICBkb25lCit9CisKK2h4dG90ZXhpKCkKK3sKKyAgICBmbGFnPTAK KyAgICBsaW5lPTEKKyAgICB3aGlsZSByZWFkIC1yIHN0cjsgZG8KKyAgICAgICAgY2FzZSAiJHN0 ciIgaW4KKyAgICAgICAgICAgIEhYQ09NTSopCisgICAgICAgICAgICA7OworICAgICAgICAgICAg U1RFWEkqKQorICAgICAgICAgICAgaWYgdGVzdCAkZmxhZyAtZXEgMSA7IHRoZW4KKyAgICAgICAg ICAgICAgICBlY2hvICJsaW5lICRsaW5lOiBzeW50YXggZXJyb3I6IGV4cGVjdGVkIEVURVhJLCBm b3VuZCAkc3RyIiA+JjIKKyAgICAgICAgICAgICAgICBleGl0IDEKKyAgICAgICAgICAgIGZpCisg ICAgICAgICAgICBmbGFnPTEKKyAgICAgICAgICAgIDs7CisgICAgICAgICAgICBFVEVYSSopCisg ICAgICAgICAgICBpZiB0ZXN0ICRmbGFnIC1uZSAxIDsgdGhlbgorICAgICAgICAgICAgICAgIGVj aG8gImxpbmUgJGxpbmU6IHN5bnRheCBlcnJvcjogZXhwZWN0ZWQgU1RFWEksIGZvdW5kICRzdHIi ID4mMgorICAgICAgICAgICAgICAgIGV4aXQgMQorICAgICAgICAgICAgZmkKKyAgICAgICAgICAg IGZsYWc9MAorICAgICAgICAgICAgOzsKKyAgICAgICAgICAgIFNRTVAqfEVRTVAqKQorICAgICAg ICAgICAgaWYgdGVzdCAkZmxhZyAtZXEgMSA7IHRoZW4KKyAgICAgICAgICAgICAgICBlY2hvICJs aW5lICRsaW5lOiBzeW50YXggZXJyb3I6IGV4cGVjdGVkIEVURVhJLCBmb3VuZCAkc3RyIiA+JjIK KyAgICAgICAgICAgICAgICBleGl0IDEKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgICA7Owor ICAgICAgICAgICAgREVGSEVBRElORyopCisgICAgICAgICAgICBlY2hvICIkKGV4cHIgIiRzdHIi IDogIkRFRkhFQURJTkcoXCguKlwpKSIpIgorICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICop CisgICAgICAgICAgICB0ZXN0ICRmbGFnIC1lcSAxICYmIGVjaG8gIiRzdHIiCisgICAgICAgICAg ICA7OworICAgICAgICBlc2FjCisgICAgICAgIGxpbmU9JCgobGluZSsxKSkKKyAgICBkb25lCit9 CisKK2h4dG9xbXAoKQoreworICAgIElGUz0KKyAgICBmbGFnPTAKKyAgICBsaW5lPTEKKyAgICB3 aGlsZSByZWFkIC1yIHN0cjsgZG8KKyAgICAgICAgY2FzZSAiJHN0ciIgaW4KKyAgICAgICAgICAg IEhYQ09NTSopCisgICAgICAgICAgICA7OworICAgICAgICAgICAgU1FNUCopCisgICAgICAgICAg ICBpZiB0ZXN0ICRmbGFnIC1lcSAxIDsgdGhlbgorICAgICAgICAgICAgICAgIGVjaG8gImxpbmUg JGxpbmU6IHN5bnRheCBlcnJvcjogZXhwZWN0ZWQgRVFNUCwgZm91bmQgJHN0ciIgPiYyCisgICAg ICAgICAgICAgICAgZXhpdCAxCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgZmxhZz0xCisg ICAgICAgICAgICA7OworICAgICAgICAgICAgRVFNUCopCisgICAgICAgICAgICBpZiB0ZXN0ICRm bGFnIC1uZSAxIDsgdGhlbgorICAgICAgICAgICAgICAgIGVjaG8gImxpbmUgJGxpbmU6IHN5bnRh eCBlcnJvcjogZXhwZWN0ZWQgU1FNUCwgZm91bmQgJHN0ciIgPiYyCisgICAgICAgICAgICAgICAg ZXhpdCAxCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgZmxhZz0wCisgICAgICAgICAgICA7 OworICAgICAgICAgICAgU1RFWEkqfEVURVhJKikKKyAgICAgICAgICAgIGlmIHRlc3QgJGZsYWcg LWVxIDEgOyB0aGVuCisgICAgICAgICAgICAgICAgZWNobyAibGluZSAkbGluZTogc3ludGF4IGVy cm9yOiBleHBlY3RlZCBFUU1QLCBmb3VuZCAkc3RyIiA+JjIKKyAgICAgICAgICAgICAgICBleGl0 IDEKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgICA7OworICAgICAgICAgICAgKikKKyAgICAg ICAgICAgIHRlc3QgJGZsYWcgLWVxIDEgJiYgZWNobyAiJHN0ciIKKyAgICAgICAgICAgIDs7Cisg ICAgICAgIGVzYWMKKyAgICAgICAgbGluZT0kKChsaW5lKzEpKQorICAgIGRvbmUKK30KKworY2Fz ZSAiJDEiIGluCisiLWgiKSBoeHRvaCA7OworIi10IikgaHh0b3RleGkgOzsKKyItcSIpIGh4dG9x bXAgOzsKKyopIGV4aXQgMSA7OworZXNhYworCitleGl0IDAKZGlmZiAtLWdpdCBhL3NjcmlwdHMv bWFrZV9kZXZpY2VfY29uZmlnLnNoIGIvc2NyaXB0cy9tYWtlX2RldmljZV9jb25maWcuc2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQxNDg4NQotLS0gL2Rldi9udWxsCisr KyBiL3NjcmlwdHMvbWFrZV9kZXZpY2VfY29uZmlnLnNoCkBAIC0wLDAgKzEsMjggQEAKKyMhIC9i aW4vc2gKKyMgQ29uc3RydWN0IGEgdGFyZ2V0IGRldmljZSBjb25maWcgZmlsZSBmcm9tIGEgZGVm YXVsdCwgcHVsbGluZyBpbiBhbnkKKyMgZmlsZXMgZnJvbSBpbmNsdWRlIGRpcmVjdGl2ZXMuCisK K2Rlc3Q9JDEudG1wCitkZXA9JDEuZAorc3JjPSQyCitzcmNfZGlyPWBkaXJuYW1lICRzcmNgCith bGxfaW5jbHVkZXM9CisKK3Byb2Nlc3NfaW5jbHVkZXMgKCkgeworICBjYXQgJDEgfCBncmVwICde aW5jbHVkZScgfCBcCisgIHdoaWxlIHJlYWQgaW5jbHVkZSBmaWxlIDsgZG8KKyAgICBhbGxfaW5j bHVkZXM9IiRhbGxfaW5jbHVkZXMgJHNyY19kaXIvJGZpbGUiCisgICAgcHJvY2Vzc19pbmNsdWRl cyAkc3JjX2Rpci8kZmlsZQorICBkb25lCit9CisKK2Y9JHNyYword2hpbGUgWyAtbiAiJGYiIF0g OyBkbworICBmPWB0ciAtZCAnXHInIDwgJGYgfCBhd2sgJy9eaW5jbHVkZSAvIHtwcmludGYgIick c3JjX2RpcicvJXMiLCAkMn0nYAorICBbICQ/ID0gMCBdIHx8IGV4aXQgMQorICBhbGxfaW5jbHVk ZXM9IiRhbGxfaW5jbHVkZXMgJGYiCitkb25lCitwcm9jZXNzX2luY2x1ZGVzICRzcmMgPiAkZGVz dAorCitjYXQgJHNyYyAkYWxsX2luY2x1ZGVzIHwgZ3JlcCAtdiAnXmluY2x1ZGUnID4gJGRlc3QK K2VjaG8gIiQxOiAkYWxsX2luY2x1ZGVzIiA+ICRkZXAKZGlmZiAtLWdpdCBhL3NjcmlwdHMvcWVt dS1iaW5mbXQtY29uZi5zaCBiL3NjcmlwdHMvcWVtdS1iaW5mbXQtY29uZi5zaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTBiZWI3Ci0tLSAvZGV2L251bGwKKysrIGIvc2Ny aXB0cy9xZW11LWJpbmZtdC1jb25mLnNoCkBAIC0wLDAgKzEsNjYgQEAKKyMhL2Jpbi9zaAorIyBl bmFibGUgYXV0b21hdGljIGkzODYvQVJNL002OEsvTUlQUy9TUEFSQy9QUEMgcHJvZ3JhbSBleGVj dXRpb24gYnkgdGhlIGtlcm5lbAorCisjIGxvYWQgdGhlIGJpbmZtdF9taXNjIG1vZHVsZQoraWYg WyAhIC1kIC9wcm9jL3N5cy9mcy9iaW5mbXRfbWlzYyBdOyB0aGVuCisgIC9zYmluL21vZHByb2Jl IGJpbmZtdF9taXNjCitmaQoraWYgWyAhIC1mIC9wcm9jL3N5cy9mcy9iaW5mbXRfbWlzYy9yZWdp c3RlciBdOyB0aGVuCisgIG1vdW50IGJpbmZtdF9taXNjIC10IGJpbmZtdF9taXNjIC9wcm9jL3N5 cy9mcy9iaW5mbXRfbWlzYworZmkKKworIyBwcm9iZSBjcHUgdHlwZQorY3B1PWB1bmFtZSAtbWAK K2Nhc2UgIiRjcHUiIGluCisgIGkzODZ8aTQ4NnxpNTg2fGk2ODZ8aTg2cGN8QmVQQ3x4ODZfNjQp CisgICAgY3B1PSJpMzg2IgorICA7OworICBtNjhrKQorICAgIGNwdT0ibTY4ayIKKyAgOzsKKyAg bWlwcyopCisgICAgY3B1PSJtaXBzIgorICA7OworICAiUG93ZXIgTWFjaW50b3NoInxwcGN8cHBj NjQpCisgICAgY3B1PSJwcGMiCisgIDs7CisgIGFybXZbNC05XSopCisgICAgY3B1PSJhcm0iCisg IDs7Citlc2FjCisKKyMgcmVnaXN0ZXIgdGhlIGludGVycHJldGVyIGZvciBlYWNoIGNwdSBleGNl cHQgZm9yIHRoZSBuYXRpdmUgb25lCitpZiBbICRjcHUgIT0gImkzODYiIF0gOyB0aGVuCisgICAg ZWNobyAnOmkzODY6TTo6XHg3ZkVMRlx4MDFceDAxXHgwMVx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDJceDAwXHgwM1x4MDA6XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZlXHhm ZVx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmVceGZmXHhmZlx4ZmY6L3Vz ci9sb2NhbC9iaW4vcWVtdS1pMzg2OicgPiAvcHJvYy9zeXMvZnMvYmluZm10X21pc2MvcmVnaXN0 ZXIKKyAgICBlY2hvICc6aTQ4NjpNOjpceDdmRUxGXHgwMVx4MDFceDAxXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMlx4MDBceDA2XHgwMDpceGZmXHhmZlx4ZmZceGZmXHhm Zlx4ZmVceGZlXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZVx4ZmZceGZm XHhmZjovdXNyL2xvY2FsL2Jpbi9xZW11LWkzODY6JyA+IC9wcm9jL3N5cy9mcy9iaW5mbXRfbWlz Yy9yZWdpc3RlcgorZmkKK2lmIFsgJGNwdSAhPSAiYWxwaGEiIF0gOyB0aGVuCisgICAgZWNobyAn OmFscGhhOk06Olx4N2ZFTEZceDAyXHgwMVx4MDFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAyXHgwMFx4MjZceDkwOlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZVx4ZmVceGZm XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZlXHhmZlx4ZmZceGZmOi91c3IvbG9j YWwvYmluL3FlbXUtYWxwaGE6JyA+IC9wcm9jL3N5cy9mcy9iaW5mbXRfbWlzYy9yZWdpc3Rlcgor ZmkKK2lmIFsgJGNwdSAhPSAiYXJtIiBdIDsgdGhlbgorICAgIGVjaG8gICAnOmFybTpNOjpceDdm RUxGXHgwMVx4MDFceDAxXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMlx4 MDBceDI4XHgwMDpceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHgwMFx4ZmZceGZmXHhmZlx4 ZmZceGZmXHhmZlx4ZmZceGZmXHhmZVx4ZmZceGZmXHhmZjovdXNyL2xvY2FsL2Jpbi9xZW11LWFy bTonID4gL3Byb2Mvc3lzL2ZzL2JpbmZtdF9taXNjL3JlZ2lzdGVyCisgICAgZWNobyAgICc6YXJt ZWI6TTo6XHg3ZkVMRlx4MDFceDAyXHgwMVx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAyXHgwMFx4Mjg6XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4MDBceGZm XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZlXHhmZlx4ZmY6L3Vzci9sb2NhbC9i aW4vcWVtdS1hcm1lYjonID4gL3Byb2Mvc3lzL2ZzL2JpbmZtdF9taXNjL3JlZ2lzdGVyCitmaQor aWYgWyAkY3B1ICE9ICJzcGFyYyIgXSA7IHRoZW4KKyAgICBlY2hvICAgJzpzcGFyYzpNOjpceDdm RUxGXHgwMVx4MDJceDAxXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDJceDAwXHgwMjpceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4 ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmVceGZmXHhmZjovdXNyL2xvY2FsL2Jpbi9xZW11LXNw YXJjOicgPiAvcHJvYy9zeXMvZnMvYmluZm10X21pc2MvcmVnaXN0ZXIKK2ZpCitpZiBbICRjcHUg IT0gInBwYyIgXSA7IHRoZW4KKyAgICBlY2hvICAgJzpwcGM6TTo6XHg3ZkVMRlx4MDFceDAyXHgw MVx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAyXHgwMFx4MTQ6XHhm Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm XHhmZlx4ZmZceGZlXHhmZlx4ZmY6L3Vzci9sb2NhbC9iaW4vcWVtdS1wcGM6JyA+IC9wcm9jL3N5 cy9mcy9iaW5mbXRfbWlzYy9yZWdpc3RlcgorZmkKK2lmIFsgJGNwdSAhPSAibTY4ayIgXSA7IHRo ZW4KKyAgICBlY2hvICAgJ1BsZWFzZSBjaGVjayBjcHUgdmFsdWUgYW5kIGhlYWRlciBpbmZvcm1h dGlvbiBmb3IgbTY4ayEnCisgICAgZWNobyAgICc6bTY4azpNOjpceDdmRUxGXHgwMVx4MDJceDAx XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDJceDAwXHgwNDpceGZm XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHgwMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc eGZmXHhmZlx4ZmVceGZmXHhmZjovdXNyL2xvY2FsL2Jpbi9xZW11LW02OGs6JyA+IC9wcm9jL3N5 cy9mcy9iaW5mbXRfbWlzYy9yZWdpc3RlcgorZmkKK2lmIFsgJGNwdSAhPSAibWlwcyIgXSA7IHRo ZW4KKyAgICAjIEZJWE1FOiBXZSBjb3VsZCB1c2UgdGhlIG90aGVyIGVuZGlhbm5lc3Mgb24gYSBN SVBTIGhvc3QuCisgICAgZWNobyAgICc6bWlwczpNOjpceDdmRUxGXHgwMVx4MDJceDAxXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDJceDAwXHgwODpceGZmXHhmZlx4 ZmZceGZmXHhmZlx4ZmZceGZmXHgwMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm Zlx4ZmVceGZmXHhmZjovdXNyL2xvY2FsL2Jpbi9xZW11LW1pcHM6JyA+IC9wcm9jL3N5cy9mcy9i aW5mbXRfbWlzYy9yZWdpc3RlcgorICAgIGVjaG8gICAnOm1pcHNlbDpNOjpceDdmRUxGXHgwMVx4 MDFceDAxXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMlx4MDBceDA4XHgw MDpceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHgwMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm Zlx4ZmZceGZmXHhmZVx4ZmZceGZmXHhmZjovdXNyL2xvY2FsL2Jpbi9xZW11LW1pcHNlbDonID4g L3Byb2Mvc3lzL2ZzL2JpbmZtdF9taXNjL3JlZ2lzdGVyCisgICAgZWNobyAgICc6bWlwc24zMjpN OjpceDdmRUxGXHgwMVx4MDJceDAxXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDJceDAwXHgwODpceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHgwMFx4ZmZceGZm XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmVceGZmXHhmZjovdXNyL2xvY2FsL2Jpbi9x ZW11LW1pcHNuMzI6JyA+IC9wcm9jL3N5cy9mcy9iaW5mbXRfbWlzYy9yZWdpc3RlcgorICAgIGVj aG8gICAnOm1pcHNuMzJlbDpNOjpceDdmRUxGXHgwMVx4MDFceDAxXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMlx4MDBceDA4XHgwMDpceGZmXHhmZlx4ZmZceGZmXHhmZlx4 ZmZceGZmXHgwMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZVx4ZmZceGZmXHhm ZjovdXNyL2xvY2FsL2Jpbi9xZW11LW1pcHNuMzJlbDonID4gL3Byb2Mvc3lzL2ZzL2JpbmZtdF9t aXNjL3JlZ2lzdGVyCisgICAgZWNobyAgICc6bWlwczY0Ok06Olx4N2ZFTEZceDAyXHgwMlx4MDFc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMlx4MDBceDA4Olx4ZmZc eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDAwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4 ZmZceGZmXHhmZVx4ZmZceGZmOi91c3IvbG9jYWwvYmluL3FlbXUtbWlwczY0OicgPiAvcHJvYy9z eXMvZnMvYmluZm10X21pc2MvcmVnaXN0ZXIKKyAgICBlY2hvICAgJzptaXBzNjRlbDpNOjpceDdm RUxGXHgwMlx4MDFceDAxXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMlx4 MDBceDA4XHgwMDpceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHgwMFx4ZmZceGZmXHhmZlx4 ZmZceGZmXHhmZlx4ZmZceGZmXHhmZVx4ZmZceGZmXHhmZjovdXNyL2xvY2FsL2Jpbi9xZW11LW1p cHM2NGVsOicgPiAvcHJvYy9zeXMvZnMvYmluZm10X21pc2MvcmVnaXN0ZXIKK2ZpCitpZiBbICRj cHUgIT0gInNoIiBdIDsgdGhlbgorICAgIGVjaG8gICAgJzpzaDQ6TTo6XHg3ZkVMRlx4MDFceDAx XHgwMVx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDJceDAwXHgyYVx4MDA6 XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc eGZmXHhmZlx4ZmVceGZmXHhmZlx4ZmY6L3Vzci9sb2NhbC9iaW4vcWVtdS1zaDQ6JyA+IC9wcm9j L3N5cy9mcy9iaW5mbXRfbWlzYy9yZWdpc3RlcgorICAgIGVjaG8gICAgJzpzaDRlYjpNOjpceDdm RUxGXHgwMVx4MDJceDAxXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDJceDAwXHgyYTpceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4 ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmVceGZmXHhmZjovdXNyL2xvY2FsL2Jpbi9xZW11LXNo NGViOicgPiAvcHJvYy9zeXMvZnMvYmluZm10X21pc2MvcmVnaXN0ZXIKK2ZpCmRpZmYgLS1naXQg YS9zY3JpcHRzL3NpZ25yb20uc2ggYi9zY3JpcHRzL3NpZ25yb20uc2gKbmV3IGZpbGUgbW9kZSAx MDA3NTUKaW5kZXggMDAwMDAwMC4uOWRjNWM2MwotLS0gL2Rldi9udWxsCisrKyBiL3NjcmlwdHMv c2lnbnJvbS5zaApAQCAtMCwwICsxLDQ1IEBACisjIS9iaW4vc2gKKworIyBPcHRpb24gUk9NIFNp Z25pbmcgdXRpbGl0eQorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv cgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisjCisjIENvcHlyaWdodCBOb3ZlbGwg SW5jLCAyMDA5CisjICAgQXV0aG9yczogQWxleGFuZGVyIEdyYWYgPGFncmFmQHN1c2UuZGU+Cisj CisjIFN5bnRheDogc2lnbnJvbS5zaCA8aW5wdXQ+IDxvdXRwdXQ+CisKKyMgZGlkIHdlIGdldCBw cm9wZXIgYXJndW1lbnRzPwordGVzdCAiJDEiIC1hICIkMiIgfHwgZXhpdCAxCisKK3N1bT0wCisK KyMgZmluZCBvdXQgdGhlIGZpbGUgc2l6ZQoreD1gZGQgaWY9IiQxIiBicz0xIGNvdW50PTEgc2tp cD0yIDI+L2Rldi9udWxsIHwgb2QgLXQgdTEgLUEgbmAKKyNzaXplPWBleHByICR4IFwqIDUxMiAt IDFgCitzaXplPSQoKCAkeCAqIDUxMiAtIDEgKSkKKworIyBub3cgZ2V0IHRoZSBjaGVja3N1bQor bnVtcz1gb2QgLUEgbiAtdCB1MSAtdiAtTiAkc2l6ZSAiJDEiYAorZm9yIGkgaW4gJHtudW1zfTsg ZG8KKyAgICAjIGFkZCBlYWNoIGJ5dGUncyB2YWx1ZSB0byBzdW0KKyAgICBzdW09YGV4cHIgXCgg JHN1bSArICRpIFwpICUgMjU2YAorZG9uZQorCitzdW09JCgoICgyNTYgLSAkc3VtKSAlIDI1NiAp KQorc3VtX29jdGFsPSQoIHByaW50ZiAiJW8iICRzdW0gKQorCisjIGFuZCB3cml0ZSB0aGUgb3V0 cHV0IGZpbGUKK2NwICIkMSIgIiQyIgorcHJpbnRmICJcXCRzdW1fb2N0YWwiIHwgZGQgb2Y9IiQy IiBicz0xIGNvdW50PTEgc2Vlaz0kc2l6ZSBjb252PW5vdHJ1bmMgMj4vZGV2L251bGwKZGlmZiAt LWdpdCBhL3NjcmlwdHMvc2ltcGxldHJhY2UucHkgYi9zY3JpcHRzL3NpbXBsZXRyYWNlLnB5Cm5l dyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjU1M2E3MjcKLS0tIC9kZXYvbnVsbAor KysgYi9zY3JpcHRzL3NpbXBsZXRyYWNlLnB5CkBAIC0wLDAgKzEsOTMgQEAKKyMhL3Vzci9iaW4v ZW52IHB5dGhvbgorIworIyBQcmV0dHktcHJpbnRlciBmb3Igc2ltcGxlIHRyYWNlIGJhY2tlbmQg YmluYXJ5IHRyYWNlIGZpbGVzCisjCisjIENvcHlyaWdodCBJQk0sIENvcnAuIDIwMTAKKyMKKyMg VGhpcyB3b3JrIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdQTCwgdmVy c2lvbiAyLiAgU2VlCisjIHRoZSBDT1BZSU5HIGZpbGUgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3Rv cnkuCisjCisjIEZvciBoZWxwIHNlZSBkb2NzL3RyYWNpbmcudHh0CisKK2ltcG9ydCBzeXMKK2lt cG9ydCBzdHJ1Y3QKK2ltcG9ydCByZQorCitoZWFkZXJfZXZlbnRfaWQgPSAweGZmZmZmZmZmZmZm ZmZmZmYKK2hlYWRlcl9tYWdpYyAgICA9IDB4ZjJiMTc3Y2IwYWE0MjliNAoraGVhZGVyX3ZlcnNp b24gID0gMAorCit0cmFjZV9mbXQgPSAnPVFRUVFRUVFRJwordHJhY2VfbGVuID0gc3RydWN0LmNh bGNzaXplKHRyYWNlX2ZtdCkKK2V2ZW50X3JlICA9IHJlLmNvbXBpbGUocicoZGlzYWJsZVxzKyk/ KFthLXpBLVowLTlfXSspXCgoW14pXSopXCkuKicpCisKK2RlZiBlcnIobXNnKToKKyAgICBzeXMu c3RkZXJyLndyaXRlKG1zZyArICdcbicpCisgICAgc3lzLmV4aXQoMSkKKworZGVmIHBhcnNlX2V2 ZW50cyhmb2JqKToKKyAgICAiIiJQYXJzZSBhIHRyYWNlLWV2ZW50cyBmaWxlLiIiIgorCisgICAg ZGVmIGdldF9hcmduYW1lcyhhcmdzKToKKyAgICAgICAgIiIiRXh0cmFjdCBhcmd1bWVudCBuYW1l cyBmcm9tIGEgcGFyYW1ldGVyIGxpc3QuIiIiCisgICAgICAgIHJldHVybiB0dXBsZShhcmcuc3Bs aXQoKVstMV0ubHN0cmlwKCcqJykgZm9yIGFyZyBpbiBhcmdzLnNwbGl0KCcsJykpCisKKyAgICBl dmVudHMgPSB7fQorICAgIGV2ZW50X251bSA9IDAKKyAgICBmb3IgbGluZSBpbiBmb2JqOgorICAg ICAgICBtID0gZXZlbnRfcmUubWF0Y2gobGluZS5zdHJpcCgpKQorICAgICAgICBpZiBtIGlzIE5v bmU6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGRpc2FibGUsIG5hbWUsIGFyZ3Mg PSBtLmdyb3VwcygpCisgICAgICAgIGV2ZW50c1tldmVudF9udW1dID0gKG5hbWUsKSArIGdldF9h cmduYW1lcyhhcmdzKQorICAgICAgICBldmVudF9udW0gKz0gMQorICAgIHJldHVybiBldmVudHMK KworZGVmIHJlYWRfcmVjb3JkKGZvYmopOgorICAgICIiIkRlc2VyaWFsaXplIGEgdHJhY2UgcmVj b3JkIGZyb20gYSBmaWxlLiIiIgorICAgIHMgPSBmb2JqLnJlYWQodHJhY2VfbGVuKQorICAgIGlm IGxlbihzKSAhPSB0cmFjZV9sZW46CisgICAgICAgIHJldHVybiBOb25lCisgICAgcmV0dXJuIHN0 cnVjdC51bnBhY2sodHJhY2VfZm10LCBzKQorCitkZWYgcmVhZF90cmFjZV9maWxlKGZvYmopOgor ICAgICIiIkRlc2VyaWFsaXplIHRyYWNlIHJlY29yZHMgZnJvbSBhIGZpbGUuIiIiCisgICAgaGVh ZGVyID0gcmVhZF9yZWNvcmQoZm9iaikKKyAgICBpZiBoZWFkZXIgaXMgTm9uZSBvciBcCisgICAg ICAgaGVhZGVyWzBdICE9IGhlYWRlcl9ldmVudF9pZCBvciBcCisgICAgICAgaGVhZGVyWzFdICE9 IGhlYWRlcl9tYWdpYyBvciBcCisgICAgICAgaGVhZGVyWzJdICE9IGhlYWRlcl92ZXJzaW9uOgor ICAgICAgICBlcnIoJ25vdCBhIHRyYWNlIGZpbGUgb3IgaW5jb21wYXRpYmxlIHZlcnNpb24nKQor CisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgcmVjID0gcmVhZF9yZWNvcmQoZm9iaikKKyAgICAg ICAgaWYgcmVjIGlzIE5vbmU6CisgICAgICAgICAgICBicmVhaworCisgICAgICAgIHlpZWxkIHJl YworCitjbGFzcyBGb3JtYXR0ZXIob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZXZl bnRzKToKKyAgICAgICAgc2VsZi5ldmVudHMgPSBldmVudHMKKyAgICAgICAgc2VsZi5sYXN0X3Rp bWVzdGFtcCA9IE5vbmUKKworICAgIGRlZiBmb3JtYXRfcmVjb3JkKHNlbGYsIHJlYyk6CisgICAg ICAgIGlmIHNlbGYubGFzdF90aW1lc3RhbXAgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYubGFz dF90aW1lc3RhbXAgPSByZWNbMV0KKyAgICAgICAgZGVsdGFfbnMgPSByZWNbMV0gLSBzZWxmLmxh c3RfdGltZXN0YW1wCisgICAgICAgIHNlbGYubGFzdF90aW1lc3RhbXAgPSByZWNbMV0KKworICAg ICAgICBldmVudCA9IHNlbGYuZXZlbnRzW3JlY1swXV0KKyAgICAgICAgZmllbGRzID0gW2V2ZW50 WzBdLCAnJTAuM2YnICUgKGRlbHRhX25zIC8gMTAwMC4wKV0KKyAgICAgICAgZm9yIGkgaW4geHJh bmdlKDEsIGxlbihldmVudCkpOgorICAgICAgICAgICAgZmllbGRzLmFwcGVuZCgnJXM9MHgleCcg JSAoZXZlbnRbaV0sIHJlY1tpICsgMV0pKQorICAgICAgICByZXR1cm4gJyAnLmpvaW4oZmllbGRz KQorCitpZiBsZW4oc3lzLmFyZ3YpICE9IDM6CisgICAgZXJyKCd1c2FnZTogJXMgPHRyYWNlLWV2 ZW50cz4gPHRyYWNlLWZpbGU+JyAlIHN5cy5hcmd2WzBdKQorCitldmVudHMgPSBwYXJzZV9ldmVu dHMob3BlbihzeXMuYXJndlsxXSwgJ3InKSkKK2Zvcm1hdHRlciA9IEZvcm1hdHRlcihldmVudHMp Citmb3IgcmVjIGluIHJlYWRfdHJhY2VfZmlsZShvcGVuKHN5cy5hcmd2WzJdLCAncmInKSk6Cisg ICAgcHJpbnQgZm9ybWF0dGVyLmZvcm1hdF9yZWNvcmQocmVjKQpkaWZmIC0tZ2l0IGEvc2NyaXB0 cy90ZXhpMnBvZC5wbCBiL3NjcmlwdHMvdGV4aTJwb2QucGwKbmV3IGZpbGUgbW9kZSAxMDA3NTUK aW5kZXggMDAwMDAwMC4uOWVkMDU2YQotLS0gL2Rldi9udWxsCisrKyBiL3NjcmlwdHMvdGV4aTJw b2QucGwKQEAgLTAsMCArMSw0NzcgQEAKKyMhIC91c3IvYmluL3BlcmwgLXcKKworIyAgIENvcHly aWdodCAoQykgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KKworIyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHQ0MuCisKKyMgR0NDIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3Ig KGF0IHlvdXIgb3B0aW9uKQorIyBhbnkgbGF0ZXIgdmVyc2lvbi4KKworIyBHQ0MgaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisjIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCisjIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwK KyMgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworIyBUaGlzIGRvZXMgdHJp dmlhbCAoYW5kIEkgbWVhbiBfdHJpdmlhbF8pIGNvbnZlcnNpb24gb2YgVGV4aW5mbworIyBtYXJr dXAgdG8gUGVybCBQT0QgZm9ybWF0LiAgSXQncyBpbnRlbmRlZCB0byBiZSB1c2VkIHRvIGV4dHJh Y3QKKyMgc29tZXRoaW5nIHN1aXRhYmxlIGZvciBhIG1hbnBhZ2UgZnJvbSBhIFRleGluZm8gZG9j dW1lbnQuCisKKyRvdXRwdXQgPSAwOworJHNraXBwaW5nID0gMDsKKyVzZWN0cyA9ICgpOworJHNl Y3Rpb24gPSAiIjsKK0BpY3N0YWNrID0gKCk7CitAZW5kd3N0YWNrID0gKCk7CitAc2tzdGFjayA9 ICgpOworQGluc3RhY2sgPSAoKTsKKyRzaGlmdCA9ICIiOworJWRlZnMgPSAoKTsKKyRmbm5vID0g MTsKKyRpbmYgPSAiIjsKKyRpYmFzZSA9ICIiOworQGlwYXRoID0gKCk7CisKK3doaWxlICgkXyA9 IHNoaWZ0KSB7CisgICAgaWYgKC9eLUQoLiopJC8pIHsKKwlpZiAoJDEgbmUgIiIpIHsKKwkgICAg JGZsYWcgPSAkMTsKKwl9IGVsc2UgeworCSAgICAkZmxhZyA9IHNoaWZ0OworCX0KKwkkdmFsdWUg PSAiIjsKKwkoJGZsYWcsICR2YWx1ZSkgPSAoJGZsYWcgPX4gL14oW149XSspKD86PSguKykpPy8p OworCWRpZSAibm8gZmxhZyBzcGVjaWZpZWQgZm9yIC1EXG4iCisJICAgIHVubGVzcyAkZmxhZyBu ZSAiIjsKKwlkaWUgImZsYWdzIG1heSBvbmx5IGNvbnRhaW4gbGV0dGVycywgZGlnaXRzLCBoeXBo ZW5zLCBkYXNoZXMgYW5kIHVuZGVyc2NvcmVzXG4iCisJICAgIHVubGVzcyAkZmxhZyA9fiAvXlth LXpBLVowLTlfLV0rJC87CisJJGRlZnN7JGZsYWd9ID0gJHZhbHVlOworICAgIH0gZWxzaWYgKC9e LUkoLiopJC8pIHsKKwlpZiAoJDEgbmUgIiIpIHsKKwkgICAgJGZsYWcgPSAkMTsKKwl9IGVsc2Ug eworCSAgICAkZmxhZyA9IHNoaWZ0OworCX0KKyAgICAgICAgcHVzaCAoQGlwYXRoLCAkZmxhZyk7 CisgICAgfSBlbHNpZiAoL14tLykgeworCXVzYWdlKCk7CisgICAgfSBlbHNlIHsKKwkkaW4gPSAk XywgbmV4dCB1bmxlc3MgZGVmaW5lZCAkaW47CisJJG91dCA9ICRfLCBuZXh0IHVubGVzcyBkZWZp bmVkICRvdXQ7CisJdXNhZ2UoKTsKKyAgICB9Cit9CisKK2lmIChkZWZpbmVkICRpbikgeworICAg ICRpbmYgPSBnZW5zeW0oKTsKKyAgICBvcGVuKCRpbmYsICI8JGluIikgb3IgZGllICJvcGVuaW5n IFwiJGluXCI6ICQhXG4iOworICAgICRpYmFzZSA9ICQxIGlmICRpbiA9fiBtfF4oLispL1teL10r JHw7Cit9IGVsc2UgeworICAgICRpbmYgPSBcKlNURElOOworfQorCitpZiAoZGVmaW5lZCAkb3V0 KSB7CisgICAgb3BlbihTVERPVVQsICI+JG91dCIpIG9yIGRpZSAib3BlbmluZyBcIiRvdXRcIjog JCFcbiI7Cit9CisKK3doaWxlKGRlZmluZWQgJGluZikgeword2hpbGUoPCRpbmY+KSB7CisgICAg IyBDZXJ0YWluIGNvbW1hbmRzIGFyZSBkaXNjYXJkZWQgd2l0aG91dCBmdXJ0aGVyIHByb2Nlc3Np bmcuCisgICAgL15cQCg/OgorCSBbYS16XStpbmRleAkJIyBAKmluZGV4OiB1c2VmdWwgb25seSBp biBjb21wbGV0ZSBtYW51YWwKKwkgfG5lZWQJCQkjIEBuZWVkOiB1c2VmdWwgb25seSBpbiBwcmlu dGVkIG1hbnVhbAorCSB8KD86ZW5kXHMrKT9ncm91cAkjIEBncm91cCAuLiBAZW5kIGdyb3VwOiBk aXR0bworCSB8cGFnZQkJCSMgQHBhZ2U6IGRpdHRvCisJIHxub2RlCQkJIyBAbm9kZTogdXNlZnVs IG9ubHkgaW4gLmluZm8gZmlsZQorCSB8KD86ZW5kXHMrKT9pZm5vdHRleCAgICMgQGlmbm90dGV4 IC4uIEBlbmQgaWZub3R0ZXg6IHVzZSBjb250ZW50cworCSlcYi94IGFuZCBuZXh0OworCisgICAg Y2hvbXA7CisKKyAgICAjIExvb2sgZm9yIGZpbGVuYW1lIGFuZCB0aXRsZSBtYXJrZXJzLgorICAg IC9eXEBzZXRmaWxlbmFtZVxzKyhbXi5dKykvIGFuZCAkZm4gPSAkMSwgbmV4dDsKKyAgICAvXlxA c2V0dGl0bGVccysoW14uXSspLyBhbmQgJHRsID0gcG9zdHByb2Nlc3MoJDEpLCBuZXh0OworCisg ICAgIyBJZGVudGlmeSBhIG1hbiB0aXRsZSBidXQga2VlcCBvbmx5IHRoZSBvbmUgd2UgYXJlIGlu dGVyZXN0ZWQgaW4uCisgICAgL15cQGNccyttYW5ccyt0aXRsZVxzKyhbQS1aYS16MC05LV0rKVxz KyguKykvIGFuZCBkbyB7CisJaWYgKGV4aXN0cyAkZGVmc3skMX0pIHsKKwkgICAgJGZuID0gJDE7 CisJICAgICR0bCA9IHBvc3Rwcm9jZXNzKCQyKTsKKwl9CisJbmV4dDsKKyAgICB9OworCisgICAg IyBMb29rIGZvciBibG9ja3Mgc3Vycm91bmRlZCBieSBAYyBtYW4gYmVnaW4gU0VDVElPTiAuLi4g QGMgbWFuIGVuZC4KKyAgICAjIFRoaXMgcmVhbGx5IG91Z2h0YSBiZSBAaWZtYW4gLi4uIEBlbmQg aWZtYW4gYW5kIHRoZSBsaWtlLCBidXQgc3VjaAorICAgICMgd291bGQgcmVxdWlyZSByZXYnaW5n IGFsbCBvdGhlciBUZXhpbmZvIHRyYW5zbGF0b3JzLgorICAgIC9eXEBjXHMrbWFuXHMrYmVnaW5c cysoW0EtWl0rKVxzKyhbQS1aYS16MC05LV0rKS8gYW5kIGRvIHsKKwkkb3V0cHV0ID0gMSBpZiBl eGlzdHMgJGRlZnN7JDJ9OworICAgICAgICAkc2VjdCA9ICQxOworCW5leHQ7CisgICAgfTsKKyAg ICAvXlxAY1xzK21hblxzK2JlZ2luXHMrKFtBLVpdKykvIGFuZCAkc2VjdCA9ICQxLCAkb3V0cHV0 ID0gMSwgbmV4dDsKKyAgICAvXlxAY1xzK21hblxzK2VuZC8gYW5kIGRvIHsKKwkkc2VjdHN7JHNl Y3R9ID0gIiIgdW5sZXNzIGV4aXN0cyAkc2VjdHN7JHNlY3R9OworCSRzZWN0c3skc2VjdH0gLj0g cG9zdHByb2Nlc3MoJHNlY3Rpb24pOworCSRzZWN0aW9uID0gIiI7CisJJG91dHB1dCA9IDA7CisJ bmV4dDsKKyAgICB9OworCisgICAgIyBoYW5kbGUgdmFyaWFibGVzCisgICAgL15cQHNldFxzKyhb YS16QS1aMC05Xy1dKylccyooLiopJC8gYW5kIGRvIHsKKwkkZGVmc3skMX0gPSAkMjsKKwluZXh0 OworICAgIH07CisgICAgL15cQGNsZWFyXHMrKFthLXpBLVowLTlfLV0rKS8gYW5kIGRvIHsKKwlk ZWxldGUgJGRlZnN7JDF9OworCW5leHQ7CisgICAgfTsKKworICAgIG5leHQgdW5sZXNzICRvdXRw dXQ7CisKKyAgICAjIERpc2NhcmQgY29tbWVudHMuICAoQ2FuJ3QgZG8gaXQgYWJvdmUsIGJlY2F1 c2UgdGhlbiB3ZSdkIG5ldmVyIHNlZQorICAgICMgQGMgbWFuIGxpbmVzLikKKyAgICAvXlxAY1xi LyBhbmQgbmV4dDsKKworICAgICMgRW5kLWJsb2NrIGhhbmRsZXIgZ29lcyB1cCBoZXJlIGJlY2F1 c2UgaXQgbmVlZHMgdG8gb3BlcmF0ZSBldmVuCisgICAgIyBpZiB3ZSBhcmUgc2tpcHBpbmcuCisg ICAgL15cQGVuZFxzKyhbYS16XSspLyBhbmQgZG8geworCSMgSWdub3JlIEBlbmQgZm9vLCB3aGVy ZSBmb28gaXMgbm90IGFuIG9wZXJhdGlvbiB3aGljaCBtYXkKKwkjIGNhdXNlIHVzIHRvIHNraXAs IGlmIHdlIGFyZSBwcmVzZW50bHkgc2tpcHBpbmcuCisJbXkgJGVuZGVkID0gJDE7CisJbmV4dCBp ZiAkc2tpcHBpbmcgJiYgJGVuZGVkICF+IC9eKD86aWZzZXR8aWZjbGVhcnxpZ25vcmV8bWVudXxp ZnRleHxjb3B5aW5nKSQvOworCisJZGllICJcQGVuZCAkZW5kZWQgd2l0aG91dCBcQCRlbmRlZCBh dCBsaW5lICQuXG4iIHVubGVzcyBkZWZpbmVkICRlbmR3OworCWRpZSAiXEAkZW5kdyBlbmRlZCBi eSBcQGVuZCAkZW5kZWQgYXQgbGluZSAkLlxuIiB1bmxlc3MgJGVuZGVkIGVxICRlbmR3OworCisJ JGVuZHcgPSBwb3AgQGVuZHdzdGFjazsKKworCWlmICgkZW5kZWQgPX4gL14oPzppZnNldHxpZmNs ZWFyfGlnbm9yZXxtZW51fGlmdGV4KSQvKSB7CisJICAgICRza2lwcGluZyA9IHBvcCBAc2tzdGFj azsKKwkgICAgbmV4dDsKKwl9IGVsc2lmICgkZW5kZWQgPX4gL14oPzpleGFtcGxlfHNtYWxsZXhh bXBsZXxkaXNwbGF5KSQvKSB7CisJICAgICRzaGlmdCA9ICIiOworCSAgICAkXyA9ICIiOwkjIG5l ZWQgYSBwYXJhZ3JhcGggYnJlYWsKKwl9IGVsc2lmICgkZW5kZWQgPX4gL14oPzppdGVtaXplfGVu dW1lcmF0ZXxbZnZdP3RhYmxlKSQvKSB7CisJICAgICRfID0gIlxuPWJhY2tcbiI7CisJICAgICRp YyA9IHBvcCBAaWNzdGFjazsKKwl9IGVsc2lmICgkZW5kZWQgZXEgIm11bHRpdGFibGUiKSB7CisJ ICAgICRfID0gIlxuPWJhY2tcbiI7CisJfSBlbHNlIHsKKwkgICAgZGllICJ1bmtub3duIGNvbW1h bmQgXEBlbmQgJGVuZGVkIGF0IGxpbmUgJC5cbiI7CisJfQorICAgIH07CisKKyAgICAjIFdlIG11 c3QgaGFuZGxlIGNvbW1hbmRzIHdoaWNoIGNhbiBjYXVzZSBza2lwcGluZyBldmVuIHdoaWxlIHdl CisgICAgIyBhcmUgc2tpcHBpbmcsIG90aGVyd2lzZSB3ZSB3aWxsIG5vdCBwcm9jZXNzIG5lc3Rl ZCBjb25kaXRpb25hbHMKKyAgICAjIGNvcnJlY3RseS4KKyAgICAvXlxAaWZzZXRccysoW2EtekEt WjAtOV8tXSspLyBhbmQgZG8geworCXB1c2ggQGVuZHdzdGFjaywgJGVuZHc7CisJcHVzaCBAc2tz dGFjaywgJHNraXBwaW5nOworCSRlbmR3ID0gImlmc2V0IjsKKwkkc2tpcHBpbmcgPSAxIHVubGVz cyBleGlzdHMgJGRlZnN7JDF9OworCW5leHQ7CisgICAgfTsKKworICAgIC9eXEBpZmNsZWFyXHMr KFthLXpBLVowLTlfLV0rKS8gYW5kIGRvIHsKKwlwdXNoIEBlbmR3c3RhY2ssICRlbmR3OworCXB1 c2ggQHNrc3RhY2ssICRza2lwcGluZzsKKwkkZW5kdyA9ICJpZmNsZWFyIjsKKwkkc2tpcHBpbmcg PSAxIGlmIGV4aXN0cyAkZGVmc3skMX07CisJbmV4dDsKKyAgICB9OworCisgICAgL15cQChpZ25v cmV8bWVudXxpZnRleHxjb3B5aW5nKVxiLyBhbmQgZG8geworCXB1c2ggQGVuZHdzdGFjaywgJGVu ZHc7CisJcHVzaCBAc2tzdGFjaywgJHNraXBwaW5nOworCSRlbmR3ID0gJDE7CisJJHNraXBwaW5n ID0gMTsKKwluZXh0OworICAgIH07CisKKyAgICBuZXh0IGlmICRza2lwcGluZzsKKworICAgICMg Q2hhcmFjdGVyIGVudGl0aWVzLiAgRmlyc3QgdGhlIG9uZXMgdGhhdCBjYW4gYmUgcmVwbGFjZWQg YnkgcmF3IHRleHQKKyAgICAjIG9yIGRpc2NhcmRlZCBvdXRyaWdodDoKKyAgICBzL1xAY29weXJp Z2h0XHtcfS8oYykvZzsKKyAgICBzL1xAZG90c1x7XH0vLi4uL2c7CisgICAgcy9cQGVuZGRvdHNc e1x9Ly4uLi4vZzsKKyAgICBzL1xAKFsuIT8gXSkvJDEvZzsKKyAgICBzL1xAWzotXS8vZzsKKyAg ICBzL1xAYnVsbGV0KD86XHtcfSk/LyovZzsKKyAgICBzL1xAVGVYXHtcfS9UZVgvZzsKKyAgICBz L1xAcG91bmRzXHtcfS9cIy9nOworICAgIHMvXEBtaW51cyg/Olx7XH0pPy8tL2c7CisgICAgcy9c XCwvLC9nOworCisgICAgIyBOb3cgdGhlIG9uZXMgdGhhdCBoYXZlIHRvIGJlIHJlcGxhY2VkIGJ5 IHNwZWNpYWwgZXNjYXBlcworICAgICMgKHdoaWNoIHdpbGwgYmUgdHVybmVkIGJhY2sgaW50byB0 ZXh0IGJ5IHVubXVuZ2UoKSkKKyAgICBzLyYvJmFtcDsvZzsKKyAgICBzL1xAXHsvJmxicmFjZTsv ZzsKKyAgICBzL1xAXH0vJnJicmFjZTsvZzsKKyAgICBzL1xAXEAvJmF0Oy9nOworCisgICAgIyBJ bnNpZGUgYSB2ZXJiYXRpbSBibG9jaywgaGFuZGxlIEB2YXIgc3BlY2lhbGx5LgorICAgIGlmICgk c2hpZnQgbmUgIiIpIHsKKwlzL1xAdmFyXHsoW15cfV0qKVx9LzwkMT4vZzsKKyAgICB9CisKKyAg ICAjIFBPRCBkb2Vzbid0IGludGVycHJldCBFPD4gaW5zaWRlIGEgdmVyYmF0aW0gYmxvY2suCisg ICAgaWYgKCRzaGlmdCBlcSAiIikgeworCXMvPC8mbHQ7L2c7CisJcy8+LyZndDsvZzsKKyAgICB9 IGVsc2UgeworCXMvPC8mTFQ7L2c7CisJcy8+LyZHVDsvZzsKKyAgICB9CisKKyAgICAjIFNpbmds ZSBsaW5lIGNvbW1hbmQgaGFuZGxlcnMuCisKKyAgICAvXlxAaW5jbHVkZVxzKyguKykkLyBhbmQg ZG8geworCXB1c2ggQGluc3RhY2ssICRpbmY7CisJJGluZiA9IGdlbnN5bSgpOworCSRmaWxlID0g cG9zdHByb2Nlc3MoJDEpOworCisJIyBUcnkgY3dkIGFuZCAkaWJhc2UsIHRoZW4gZXhwbGljaXQg LUkgcGF0aHMuCisJJGRvbmUgPSAwOworCWZvcmVhY2ggJHBhdGggKCIiLCAkaWJhc2UsIEBpcGF0 aCkgeworCSAgICAkbXlwYXRoID0gJGZpbGU7CisJICAgICRteXBhdGggPSAkcGF0aCAuICIvIiAu ICRteXBhdGggaWYgKCRwYXRoIG5lICIiKTsKKwkgICAgb3BlbigkaW5mLCAiPCIgLiAkbXlwYXRo KSBhbmQgKCRkb25lID0gMSwgbGFzdCk7CisJfQorCWRpZSAiY2Fubm90IGZpbmQgJGZpbGUiIGlm ICEkZG9uZTsKKwluZXh0OworICAgIH07CisKKyAgICAvXlxAKD86c2VjdGlvbnx1bm51bWJlcmVk fHVubnVtYmVyZWRzZWN8Y2VudGVyKVxzKyguKykkLworCWFuZCAkXyA9ICJcbj1oZWFkMiAkMVxu IjsKKyAgICAvXlxAc3Vic2VjdGlvblxzKyguKykkLworCWFuZCAkXyA9ICJcbj1oZWFkMyAkMVxu IjsKKyAgICAvXlxAc3Vic3Vic2VjdGlvblxzKyguKykkLworCWFuZCAkXyA9ICJcbj1oZWFkNCAk MVxuIjsKKworICAgICMgQmxvY2sgY29tbWFuZCBoYW5kbGVyczoKKyAgICAvXlxAaXRlbWl6ZSg/ OlxzKyhcQFthLXpdK3xcKnwtKSk/LyBhbmQgZG8geworCXB1c2ggQGVuZHdzdGFjaywgJGVuZHc7 CisJcHVzaCBAaWNzdGFjaywgJGljOworCWlmIChkZWZpbmVkICQxKSB7CisJICAgICRpYyA9ICQx OworCX0gZWxzZSB7CisJICAgICRpYyA9ICcqJzsKKwl9CisJJF8gPSAiXG49b3ZlciA0XG4iOwor CSRlbmR3ID0gIml0ZW1pemUiOworICAgIH07CisKKyAgICAvXlxAZW51bWVyYXRlKD86XHMrKFth LXpBLVowLTldKykpPy8gYW5kIGRvIHsKKwlwdXNoIEBlbmR3c3RhY2ssICRlbmR3OworCXB1c2gg QGljc3RhY2ssICRpYzsKKwlpZiAoZGVmaW5lZCAkMSkgeworCSAgICAkaWMgPSAkMSAuICIuIjsK Kwl9IGVsc2UgeworCSAgICAkaWMgPSAiMS4iOworCX0KKwkkXyA9ICJcbj1vdmVyIDRcbiI7CisJ JGVuZHcgPSAiZW51bWVyYXRlIjsKKyAgICB9OworCisgICAgL15cQG11bHRpdGFibGVccy4qLyBh bmQgZG8geworCXB1c2ggQGVuZHdzdGFjaywgJGVuZHc7CisJJGVuZHcgPSAibXVsdGl0YWJsZSI7 CisJJF8gPSAiXG49b3ZlciA0XG4iOworICAgIH07CisKKyAgICAvXlxAKFtmdl0/dGFibGUpXHMr KFxAW2Etel0rKS8gYW5kIGRvIHsKKwlwdXNoIEBlbmR3c3RhY2ssICRlbmR3OworCXB1c2ggQGlj c3RhY2ssICRpYzsKKwkkZW5kdyA9ICQxOworCSRpYyA9ICQyOworCSRpYyA9fiBzL1xAKD86c2Ft cHxzdHJvbmd8a2V5fGdjY3RhYm9wdHxvcHRpb258ZW52KS9CLzsKKwkkaWMgPX4gcy9cQCg/OmNv ZGV8a2JkKS9DLzsKKwkkaWMgPX4gcy9cQCg/OmRmbnx2YXJ8ZW1waHxjaXRlfGkpL0kvOworCSRp YyA9fiBzL1xAKD86ZmlsZSkvRi87CisJJF8gPSAiXG49b3ZlciA0XG4iOworICAgIH07CisKKyAg ICAvXlxAKCg/OnNtYWxsKT9leGFtcGxlfGRpc3BsYXkpLyBhbmQgZG8geworCXB1c2ggQGVuZHdz dGFjaywgJGVuZHc7CisJJGVuZHcgPSAkMTsKKwkkc2hpZnQgPSAiXHQiOworCSRfID0gIiI7CSMg bmVlZCBhIHBhcmFncmFwaCBicmVhaworICAgIH07CisKKyAgICAvXlxAaXRlbVxzKyguKlxTKVxz KiQvIGFuZCAkZW5kdyBlcSAibXVsdGl0YWJsZSIgYW5kIGRvIHsKKwlAY29sdW1ucyA9ICgpOwor CWZvciAkY29sdW1uIChzcGxpdCAoL1xzKlxAdGFiXHMqLywgJDEpKSB7CisJICAgICMgQHN0cm9u Z3suLi59IGlzIHVzZWQgYSBAaGVhZGl0ZW0gd29yay1hbGlrZQorCSAgICAkY29sdW1uID1+IHMv XlxAc3Ryb25neyguKil9JC8kMS87CisJICAgIHB1c2ggQGNvbHVtbnMsICRjb2x1bW47CisJfQor CSRfID0gIlxuPWl0ZW0gIi5qb2luICgiIDogIiwgQGNvbHVtbnMpLiJcbiI7CisgICAgfTsKKwor ICAgIC9eXEBpdGVteD9ccyooLispPyQvIGFuZCBkbyB7CisJaWYgKGRlZmluZWQgJDEpIHsKKwkg ICAgIyBFbnRpdHkgZXNjYXBlcyBwcmV2ZW50IG11bmdpbmcgYnkgdGhlIDw+IHByb2Nlc3Npbmcg YmVsb3cuCisJICAgICRfID0gIlxuPWl0ZW0gJGljXCZMVDskMVwmR1Q7XG4iOworCX0gZWxzZSB7 CisJICAgICRfID0gIlxuPWl0ZW0gJGljXG4iOworCSAgICAkaWMgPX4geS9BLVlhLXkvQi1aYi16 LzsKKwkgICAgJGljID1+IHMvKFxkKykvJDEgKyAxL2VnOworCX0KKyAgICB9OworCisgICAgJHNl Y3Rpb24gLj0gJHNoaWZ0LiRfLiJcbiI7Cit9CisjIEVuZCBvZiBjdXJyZW50IGZpbGUuCitjbG9z ZSgkaW5mKTsKKyRpbmYgPSBwb3AgQGluc3RhY2s7Cit9CisKK2RpZSAiTm8gZmlsZW5hbWUgb3Ig dGl0bGVcbiIgdW5sZXNzIGRlZmluZWQgJGZuICYmIGRlZmluZWQgJHRsOworCiskc2VjdHN7TkFN RX0gPSAiJGZuIFwtICR0bFxuIjsKKyRzZWN0c3tGT09UTk9URVN9IC49ICI9YmFja1xuIiBpZiBl eGlzdHMgJHNlY3Rze0ZPT1ROT1RFU307CisKK2ZvciAkc2VjdCAocXcoTkFNRSBTWU5PUFNJUyBE RVNDUklQVElPTiBPUFRJT05TIEVOVklST05NRU5UIEZJTEVTCisJICAgICAgQlVHUyBOT1RFUyBG T09UTk9URVMgU0VFQUxTTyBBVVRIT1IgQ09QWVJJR0hUKSkgeworICAgIGlmKGV4aXN0cyAkc2Vj dHN7JHNlY3R9KSB7CisJJGhlYWQgPSAkc2VjdDsKKwkkaGVhZCA9fiBzL1NFRUFMU08vU0VFIEFM U08vOworCXByaW50ICI9aGVhZDEgJGhlYWRcblxuIjsKKwlwcmludCBzY2FsYXIgdW5tdW5nZSAo JHNlY3RzeyRzZWN0fSk7CisJcHJpbnQgIlxuIjsKKyAgICB9Cit9CisKK3N1YiB1c2FnZQorewor ICAgIGRpZSAidXNhZ2U6ICQwIFstRCB0b2dnbGUuLi5dIFtpbmZpbGUgW291dGZpbGVdXVxuIjsK K30KKworc3ViIHBvc3Rwcm9jZXNzCit7CisgICAgbG9jYWwgJF8gPSAkX1swXTsKKworICAgICMg QHZhbHVle2Zvb30gaXMgcmVwbGFjZWQgYnkgd2hhdGV2ZXIgJ2ZvbycgaXMgZGVmaW5lZCBhcy4K KyAgICB3aGlsZSAobS8oXEB2YWx1ZVx7KFthLXpBLVowLTlfLV0rKVx9KS9nKSB7CisJaWYgKCEg ZXhpc3RzICRkZWZzeyQyfSkgeworCSAgICBwcmludCBTVERFUlIgIk9wdGlvbiAkMiBub3QgZGVm aW5lZFxuIjsKKwkgICAgcy9cUSQxXEUvLzsKKwl9IGVsc2UgeworCSAgICAkdmFsdWUgPSAkZGVm c3skMn07CisJICAgIHMvXFEkMVxFLyR2YWx1ZS87CisJfQorICAgIH0KKworICAgICMgRm9ybWF0 dGluZyBjb21tYW5kcy4KKyAgICAjIFRlbXBvcmFyeSBlc2NhcGUgZm9yIEByLgorICAgIHMvXEBy XHsoW15cfV0qKVx9L1I8JDE+L2c7CisgICAgcy9cQCg/OmRmbnx2YXJ8ZW1waHxjaXRlfGkpXHso W15cfV0qKVx9L0k8JDE+L2c7CisgICAgcy9cQCg/OmNvZGV8a2JkKVx7KFteXH1dKilcfS9DPCQx Pi9nOworICAgIHMvXEAoPzpnY2NvcHRsaXN0fHNhbXB8c3Ryb25nfGtleXxvcHRpb258ZW52fGNv bW1hbmR8YilceyhbXlx9XSopXH0vQjwkMT4vZzsKKyAgICBzL1xAc2NceyhbXlx9XSopXH0vXFUk MS9nOworICAgIHMvXEBmaWxlXHsoW15cfV0qKVx9L0Y8JDE+L2c7CisgICAgcy9cQHdceyhbXlx9 XSopXH0vUzwkMT4vZzsKKyAgICBzL1xAKD86ZG1ufG1hdGgpXHsoW15cfV0qKVx9LyQxL2c7CisK KyAgICAjIGtlZXAgcmVmZXJlbmNlcyBvZiB0aGUgZm9ybSBAcmVmey4uLn0sIHByaW50IHRoZW0g Ym9sZAorICAgIHMvXEAoPzpyZWYpXHsoW15cfV0qKVx9L0I8JDE+L2c7CisKKyAgICAjIENoYW5n ZSBkb3VibGUgc2luZ2xlIHF1b3RlcyB0byBkb3VibGUgcXVvdGVzLgorICAgIHMvJycvIi9nOwor ICAgIHMvYGAvIi9nOworCisgICAgIyBDcm9zcyByZWZlcmVuY2VzIGFyZSB0aHJvd24gYXdheSwg YXMgYXJlIEBub2luZGVudCBhbmQgQHJlZmlsbC4KKyAgICAjIChAbm9pbmRlbnQgaXMgaW1wb3Nz aWJsZSBpbiAucG9kLCBhbmQgQHJlZmlsbCBpcyB1bm5lY2Vzc2FyeS4pCisgICAgIyBAKiBpcyBh bHNvIGltcG9zc2libGUgaW4gLnBvZDsgd2UgZGlzY2FyZCBpdCBhbmQgYW55IG5ld2xpbmUgdGhh dAorICAgICMgZm9sbG93cyBpdC4gIFNpbWlsYXJseSwgb3VyIG1hY3JvIEBnb2wgbXVzdCBiZSBk aXNjYXJkZWQuCisKKyAgICBzL1woP1xAeHJlZlx7KD86W15cfV0qKVx9KD86W14uPF18KD86PFte PD5dKj4pKSpcLlwpPy8vZzsKKyAgICBzL1xzK1woXEBweHJlZlx7KD86W15cfV0qKVx9XCkvL2c7 CisgICAgcy87XHMrXEBweHJlZlx7KD86W15cfV0qKVx9Ly9nOworICAgIHMvXEBub2luZGVudFxz Ki8vZzsKKyAgICBzL1xAcmVmaWxsLy9nOworICAgIHMvXEBnb2wvL2c7CisgICAgcy9cQFwqXHMq XG4/Ly9nOworCisgICAgIyBBbmNob3JzIGFyZSB0aHJvd24gYXdheQorICAgIHMvXEBhbmNob3Jc eyg/OlteXH1dKilcfS8vZzsKKworICAgICMgQHVyZWYgY2FuIHRha2Ugb25lLCB0d28sIG9yIHRo cmVlIGFyZ3VtZW50cywgd2l0aCBkaWZmZXJlbnQKKyAgICAjIHNlbWFudGljcyBlYWNoIHRpbWUu ICBAdXJsIGFuZCBAZW1haWwgYXJlIGp1c3QgbGlrZSBAdXJlZiB3aXRoCisgICAgIyBvbmUgYXJn dW1lbnQsIGZvciBvdXIgcHVycG9zZXMuCisgICAgcy9cQCg/OnVyZWZ8dXJsfGVtYWlsKVx7KFte XH0sXSopXH0vJmx0O0I8JDE+Jmd0Oy9nOworICAgIHMvXEB1cmVmXHsoW15cfSxdKiksKFteXH0s XSopXH0vJDIgKEM8JDE+KS9nOworICAgIHMvXEB1cmVmXHsoW15cfSxdKiksKFteXH0sXSopLChb Xlx9LF0qKVx9LyQzL2c7CisKKyAgICAjIFVuLWVzY2FwZSA8PiBhdCB0aGlzIHBvaW50LgorICAg IHMvJkxUOy88L2c7CisgICAgcy8mR1Q7Lz4vZzsKKworICAgICMgTm93IHVuLW5lc3QgYWxsIEI8 PiwgSTw+LCBSPD4uICBUaGVvcmV0aWNhbGx5IHdlIGNvdWxkIGhhdmUKKyAgICAjIGluZGVmaW5p dGVseSBkZWVwIG5lc3Rpbmc7IGluIHByYWN0aWNlLCBvbmUgbGV2ZWwgc3VmZmljZXMuCisgICAg MSB3aGlsZSBzLyhbQklSXSk8KFtePD5dKikoW0JJUl0pPChbXjw+XSopPi8kMTwkMj4kMzwkND4k MTwvZzsKKworICAgICMgUmVwbGFjZSBSPC4uLj4gd2l0aCBiYXJlIC4uLjsgZWxpbWluYXRlIGVt cHR5IG1hcmt1cCwgQjw+OworICAgICMgc2hpZnQgd2hpdGUgc3BhY2UgYXQgdGhlIGVuZHMgb2Yg W0JJXTwuLi4+IGV4cHJlc3Npb25zIG91dHNpZGUKKyAgICAjIHRoZSBleHByZXNzaW9uLgorICAg IHMvUjwoW148Pl0qKT4vJDEvZzsKKyAgICBzL1tCSV08Pi8vZzsKKyAgICBzLyhbQkldKTwoXHMr KShbXj5dKyk+LyQyJDE8JDM+L2c7CisgICAgcy8oW0JJXSk8KFtePl0rPykoXHMrKT4vJDE8JDI+ JDMvZzsKKworICAgICMgRXh0cmFjdCBmb290bm90ZXMuICBUaGlzIGhhcyB0byBiZSBkb25lIGFm dGVyIGFsbCBvdGhlcgorICAgICMgcHJvY2Vzc2luZyBiZWNhdXNlIG90aGVyd2lzZSB0aGUgcmVn ZXhwIHdpbGwgY2hva2Ugb24gZm9ybWF0dGluZworICAgICMgaW5zaWRlIEBmb290bm90ZS4KKyAg ICB3aGlsZSAoL1xAZm9vdG5vdGUvZykgeworCXMvXEBmb290bm90ZVx7KFteXH1dKylcfS9bJGZu bm9dLzsKKwlhZGRfZm9vdG5vdGUoJDEsICRmbm5vKTsKKwkkZm5ubysrOworICAgIH0KKworICAg IHJldHVybiAkXzsKK30KKworc3ViIHVubXVuZ2UKK3sKKyAgICAjIFJlcGxhY2UgZXNjYXBlZCBz eW1ib2xzIHdpdGggdGhlaXIgZXF1aXZhbGVudHMuCisgICAgbG9jYWwgJF8gPSAkX1swXTsKKwor ICAgIHMvJmx0Oy9FPGx0Pi9nOworICAgIHMvJmd0Oy9FPGd0Pi9nOworICAgIHMvJmxicmFjZTsv XHsvZzsKKyAgICBzLyZyYnJhY2U7L1x9L2c7CisgICAgcy8mYXQ7L1xAL2c7CisgICAgcy8mYW1w Oy8mL2c7CisgICAgcmV0dXJuICRfOworfQorCitzdWIgYWRkX2Zvb3Rub3RlCit7CisgICAgdW5s ZXNzIChleGlzdHMgJHNlY3Rze0ZPT1ROT1RFU30pIHsKKwkkc2VjdHN7Rk9PVE5PVEVTfSA9ICJc bj1vdmVyIDRcblxuIjsKKyAgICB9CisKKyAgICAkc2VjdHN7Rk9PVE5PVEVTfSAuPSAiPWl0ZW0g JGZubm8uXG5cbiI7ICRmbm5vKys7CisgICAgJHNlY3Rze0ZPT1ROT1RFU30gLj0gJF9bMF07Cisg ICAgJHNlY3Rze0ZPT1ROT1RFU30gLj0gIlxuXG4iOworfQorCisjIHN0b2xlbiBmcm9tIFN5bWJv bC5wbQoreworICAgIG15ICRnZW5zZXEgPSAwOworICAgIHN1YiBnZW5zeW0KKyAgICB7CisJbXkg JG5hbWUgPSAiR0VOIiAuICRnZW5zZXErKzsKKwlteSAkcmVmID0gXCp7JG5hbWV9OworCWRlbGV0 ZSAkOjp7JG5hbWV9OworCXJldHVybiAkcmVmOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3Njcmlw dHMvdHJhY2V0b29sIGIvc2NyaXB0cy90cmFjZXRvb2wKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5k ZXggMDAwMDAwMC4uZmNlNDkxYwotLS0gL2Rldi9udWxsCisrKyBiL3NjcmlwdHMvdHJhY2V0b29s CkBAIC0wLDAgKzEsNTczIEBACisjIS9iaW4vc2gKKyMKKyMgQ29kZSBnZW5lcmF0b3IgZm9yIHRy YWNlIGV2ZW50cworIworIyBDb3B5cmlnaHQgSUJNLCBDb3JwLiAyMDEwCisjCisjIFRoaXMgd29y ayBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHUEwsIHZlcnNpb24gMi4g IFNlZQorIyB0aGUgQ09QWUlORyBmaWxlIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LgorCisj IERpc2FibGUgcGF0aG5hbWUgZXhwYW5zaW9uLCBtYWtlcyBwcm9jZXNzaW5nIHRleHQgd2l0aCAn KicgY2hhcmFjdGVycyBzaW1wbGVyCitzZXQgLWYKKwordXNhZ2UoKQoreworICAgIGNhdCA+JjIg PDxFT0YKK3VzYWdlOiAkMCBbLS1ub3AgfCAtLXNpbXBsZSB8IC0tdXN0XSBbLWggfCAtY10KK0dl bmVyYXRlIHRyYWNpbmcgY29kZSBmb3IgYSBmaWxlIG9uIHN0ZGluLgorCitCYWNrZW5kczoKKyAg LS1ub3AgICAgIFRyYWNpbmcgZGlzYWJsZWQKKyAgLS1zaW1wbGUgIFNpbXBsZSBidWlsdC1pbiBi YWNrZW5kCisgIC0tdXN0ICAgICBMVFRuZyBVc2VyIFNwYWNlIFRyYWNpbmcgYmFja2VuZAorICAt LWR0cmFjZSAgRFRyYWNlL1N5c3RlbVRBUCBiYWNrZW5kCisKK091dHB1dCBmb3JtYXRzOgorICAt aCAgICAgR2VuZXJhdGUgLmggZmlsZQorICAtYyAgICAgR2VuZXJhdGUgLmMgZmlsZQorICAtZCAg ICAgR2VuZXJhdGUgLmQgZmlsZSAoRFRyYWNlIG9ubHkpCisgIC0tc3RhcCBHZW5lcmF0ZSAuc3Rw IGZpbGUgKERUcmFjZSB3aXRoIFN5c3RlbVRBUCBvbmx5KQorCitPcHRpb25zOgorICAtLWJpbmFy eSAgICAgIFtwYXRoXSAgRnVsbCBwYXRoIHRvIFFFTVUgYmluYXJ5CisgIC0tdGFyZ2V0LWFyY2gg W2FyY2hdICBRRU1VIGVtdWxhdG9yIHRhcmdldCBhcmNoCisgIC0tdGFyZ2V0LXR5cGUgW3R5cGVd ICBRRU1VIGVtdWxhdG9yIHRhcmdldCB0eXBlICgnc3lzdGVtJyBvciAndXNlcicpCisKK0VPRgor ICAgIGV4aXQgMQorfQorCisjIEdldCB0aGUgbmFtZSBvZiBhIHRyYWNlIGV2ZW50CitnZXRfbmFt ZSgpCit7CisgICAgZWNobyAkezElJVwoKn0KK30KKworIyBHZXQgdGhlIGFyZ3VtZW50IGxpc3Qg b2YgYSB0cmFjZSBldmVudCwgaW5jbHVkaW5nIHR5cGVzIGFuZCBuYW1lcworZ2V0X2FyZ3MoKQor eworICAgIGxvY2FsIGFyZ3MKKyAgICBhcmdzPSR7MSMqXCh9CisgICAgYXJncz0ke2FyZ3MlXCkq fQorICAgIGVjaG8gIiRhcmdzIgorfQorCisjIEdldCB0aGUgYXJndW1lbnQgbmFtZSBsaXN0IG9m IGEgdHJhY2UgZXZlbnQKK2dldF9hcmduYW1lcygpCit7CisgICAgbG9jYWwgbmZpZWxkcyBmaWVs ZCBuYW1lIHNlcAorICAgIG5maWVsZHM9MAorICAgIHNlcD0iJDIiCisgICAgZm9yIGZpZWxkIGlu ICQoZ2V0X2FyZ3MgIiQxIik7IGRvCisgICAgICAgIG5maWVsZHM9JCgobmZpZWxkcyArIDEpKQor CisgICAgICAgICMgRHJvcCBwb2ludGVyIHN0YXIKKyAgICAgICAgZmllbGQ9JHtmaWVsZCNcKn0K KworICAgICAgICAjIE9ubHkgYXJndW1lbnQgbmFtZXMgaGF2ZSBjb21tYXMgYXQgdGhlIGVuZAor ICAgICAgICBuYW1lPSR7ZmllbGQlLH0KKyAgICAgICAgdGVzdCAiJGZpZWxkIiA9ICIkbmFtZSIg JiYgY29udGludWUKKworICAgICAgICBwcmludGYgIiVzJXMgIiAkbmFtZSAkc2VwCisgICAgZG9u ZQorCisgICAgIyBMYXN0IGFyZ3VtZW50IG5hbWUKKyAgICBpZiBbICIkbmZpZWxkcyIgLWd0IDEg XQorICAgIHRoZW4KKyAgICAgICAgcHJpbnRmICIlcyIgIiRuYW1lIgorICAgIGZpCit9CisKKyMg R2V0IHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHRvIGEgdHJhY2UgZXZlbnQKK2dldF9hcmdjKCkK K3sKKyAgICBsb2NhbCBuYW1lIGFyZ2MKKyAgICBhcmdjPTAKKyAgICBmb3IgbmFtZSBpbiAkKGdl dF9hcmduYW1lcyAiJDEiLCAiLCIpOyBkbworICAgICAgICBhcmdjPSQoKGFyZ2MgKyAxKSkKKyAg ICBkb25lCisgICAgZWNobyAkYXJnYworfQorCisjIEdldCB0aGUgZm9ybWF0IHN0cmluZyBmb3Ig YSB0cmFjZSBldmVudAorZ2V0X2ZtdCgpCit7CisgICAgbG9jYWwgZm10CisgICAgZm10PSR7MSMq XCJ9CisgICAgZm10PSR7Zm10JVwiKn0KKyAgICBlY2hvICIkZm10IgorfQorCisjIEdldCB0aGUg c3RhdGUgb2YgYSB0cmFjZSBldmVudAorZ2V0X3N0YXRlKCkKK3sKKyAgICBsb2NhbCBzdHIgZGlz YWJsZSBzdGF0ZQorICAgIHN0cj0kKGdldF9uYW1lICIkMSIpCisgICAgZGlzYWJsZT0ke3N0ciMj ZGlzYWJsZSB9CisgICAgaWYgWyAiJGRpc2FibGUiID0gIiRzdHIiIF0gOyB0aGVuCisgICAgICAg IHN0YXRlPTEKKyAgICBlbHNlCisgICAgICAgIHN0YXRlPTAKKyAgICBmaQorICAgIGVjaG8gIiRz dGF0ZSIKK30KKworbGluZXRvaF9iZWdpbl9ub3AoKQoreworICAgIHJldHVybgorfQorCitsaW5l dG9oX25vcCgpCit7CisgICAgbG9jYWwgbmFtZSBhcmdzCisgICAgbmFtZT0kKGdldF9uYW1lICIk MSIpCisgICAgYXJncz0kKGdldF9hcmdzICIkMSIpCisKKyAgICAjIERlZmluZSBhbiBlbXB0eSBm dW5jdGlvbiBmb3IgdGhlIHRyYWNlIGV2ZW50CisgICAgY2F0IDw8RU9GCitzdGF0aWMgaW5saW5l IHZvaWQgdHJhY2VfJG5hbWUoJGFyZ3MpCit7Cit9CitFT0YKK30KKworbGluZXRvaF9lbmRfbm9w KCkKK3sKKyAgICByZXR1cm4KK30KKworbGluZXRvY19iZWdpbl9ub3AoKQoreworICAgIHJldHVy bgorfQorCitsaW5ldG9jX25vcCgpCit7CisgICAgIyBObyBuZWVkIGZvciBmdW5jdGlvbiBkZWZp bml0aW9ucyBpbiBub3AgYmFja2VuZAorICAgIHJldHVybgorfQorCitsaW5ldG9jX2VuZF9ub3Ao KQoreworICAgIHJldHVybgorfQorCitsaW5ldG9oX2JlZ2luX3NpbXBsZSgpCit7CisgICAgY2F0 IDw8RU9GCisjaW5jbHVkZSAic2ltcGxldHJhY2UuaCIKK0VPRgorCisgICAgc2ltcGxlX2V2ZW50 X251bT0wCit9CisKK2Nhc3RfYXJnc190b191aW50NjRfdCgpCit7CisgICAgbG9jYWwgYXJnCisg ICAgZm9yIGFyZyBpbiAkKGdldF9hcmduYW1lcyAiJDEiLCAiLCIpOyBkbworICAgICAgICBwcmlu dGYgIiVzIiAiKHVpbnQ2NF90KSh1aW50cHRyX3QpJGFyZyIKKyAgICBkb25lCit9CisKK2xpbmV0 b2hfc2ltcGxlKCkKK3sKKyAgICBsb2NhbCBuYW1lIGFyZ3MgYXJnYyB0cmFjZV9hcmdzIHN0YXRl CisgICAgbmFtZT0kKGdldF9uYW1lICIkMSIpCisgICAgYXJncz0kKGdldF9hcmdzICIkMSIpCisg ICAgYXJnYz0kKGdldF9hcmdjICIkMSIpCisgICAgc3RhdGU9JChnZXRfc3RhdGUgIiQxIikKKyAg ICBpZiBbICIkc3RhdGUiID0gIjAiIF07IHRoZW4KKyAgICAgICAgbmFtZT0ke25hbWUjI2Rpc2Fi bGUgfQorICAgIGZpCisKKyAgICB0cmFjZV9hcmdzPSIkc2ltcGxlX2V2ZW50X251bSIKKyAgICBp ZiBbICIkYXJnYyIgLWd0IDAgXQorICAgIHRoZW4KKyAgICAgICAgdHJhY2VfYXJncz0iJHRyYWNl X2FyZ3MsICQoY2FzdF9hcmdzX3RvX3VpbnQ2NF90ICIkMSIpIgorICAgIGZpCisKKyAgICBjYXQg PDxFT0YKK3N0YXRpYyBpbmxpbmUgdm9pZCB0cmFjZV8kbmFtZSgkYXJncykKK3sKKyAgICB0cmFj ZSRhcmdjKCR0cmFjZV9hcmdzKTsKK30KK0VPRgorCisgICAgc2ltcGxlX2V2ZW50X251bT0kKChz aW1wbGVfZXZlbnRfbnVtICsgMSkpCit9CisKK2xpbmV0b2hfZW5kX3NpbXBsZSgpCit7CisgICAg Y2F0IDw8RU9GCisjZGVmaW5lIE5SX1RSQUNFX0VWRU5UUyAkc2ltcGxlX2V2ZW50X251bQorZXh0 ZXJuIFRyYWNlRXZlbnQgdHJhY2VfbGlzdFtOUl9UUkFDRV9FVkVOVFNdOworRU9GCit9CisKK2xp bmV0b2NfYmVnaW5fc2ltcGxlKCkKK3sKKyAgICBjYXQgPDxFT0YKKyNpbmNsdWRlICJ0cmFjZS5o IgorCitUcmFjZUV2ZW50IHRyYWNlX2xpc3RbXSA9IHsKK0VPRgorICAgIHNpbXBsZV9ldmVudF9u dW09MAorCit9CisKK2xpbmV0b2Nfc2ltcGxlKCkKK3sKKyAgICBsb2NhbCBuYW1lIHN0YXRlCisg ICAgbmFtZT0kKGdldF9uYW1lICIkMSIpCisgICAgc3RhdGU9JChnZXRfc3RhdGUgIiQxIikKKyAg ICBpZiBbICIkc3RhdGUiID0gIjAiIF0gOyB0aGVuCisgICAgICAgIG5hbWU9JHtuYW1lIyNkaXNh YmxlIH0KKyAgICBmaQorICAgIGNhdCA8PEVPRgorey50cF9uYW1lID0gIiRuYW1lIiwgLnN0YXRl PSRzdGF0ZX0sCitFT0YKKyAgICBzaW1wbGVfZXZlbnRfbnVtPSQoKHNpbXBsZV9ldmVudF9udW0g KyAxKSkKK30KKworbGluZXRvY19lbmRfc2ltcGxlKCkKK3sKKyAgICBjYXQgPDxFT0YKK307CitF T0YKK30KKworIyBDbGVhbiB1cCBhZnRlciBVU1QgaGVhZGVycyB3aGljaCBwb2xsdXRlIHRoZSBu YW1lc3BhY2UKK3VzdF9jbGVhbl9uYW1lc3BhY2UoKSB7CisgICAgY2F0IDw8RU9GCisjdW5kZWYg bXV0ZXhfbG9jaworI3VuZGVmIG11dGV4X3VubG9jaworI3VuZGVmIGlubGluZQorI3VuZGVmIHdt YgorRU9GCit9CisKK2xpbmV0b2hfYmVnaW5fdXN0KCkKK3sKKyAgICBlY2hvICIjaW5jbHVkZSA8 dXN0L3RyYWNlcG9pbnQuaD4iCisgICAgdXN0X2NsZWFuX25hbWVzcGFjZQorfQorCitsaW5ldG9o X3VzdCgpCit7CisgICAgbG9jYWwgbmFtZSBhcmdzIGFyZ25hbWVzCisgICAgbmFtZT0kKGdldF9u YW1lICIkMSIpCisgICAgYXJncz0kKGdldF9hcmdzICIkMSIpCisgICAgYXJnbmFtZXM9JChnZXRf YXJnbmFtZXMgIiQxIiwgIiwiKQorCisgICAgY2F0IDw8RU9GCitERUNMQVJFX1RSQUNFKHVzdF8k bmFtZSwgVFBfUFJPVE8oJGFyZ3MpLCBUUF9BUkdTKCRhcmduYW1lcykpOworI2RlZmluZSB0cmFj ZV8kbmFtZSB0cmFjZV91c3RfJG5hbWUKK0VPRgorfQorCitsaW5ldG9oX2VuZF91c3QoKQorewor ICAgIHJldHVybgorfQorCitsaW5ldG9jX2JlZ2luX3VzdCgpCit7CisgICAgY2F0IDw8RU9GCisj aW5jbHVkZSA8dXN0L21hcmtlci5oPgorJCh1c3RfY2xlYW5fbmFtZXNwYWNlKQorI2luY2x1ZGUg InRyYWNlLmgiCitFT0YKK30KKworbGluZXRvY191c3QoKQoreworICAgIGxvY2FsIG5hbWUgYXJn cyBhcmduYW1lcyBmbXQKKyAgICBuYW1lPSQoZ2V0X25hbWUgIiQxIikKKyAgICBhcmdzPSQoZ2V0 X2FyZ3MgIiQxIikKKyAgICBhcmduYW1lcz0kKGdldF9hcmduYW1lcyAiJDEiLCAiLCIpCisgICAg Zm10PSQoZ2V0X2ZtdCAiJDEiKQorCisgICAgY2F0IDw8RU9GCitERUZJTkVfVFJBQ0UodXN0XyRu YW1lKTsKKworc3RhdGljIHZvaWQgdXN0XyR7bmFtZX1fcHJvYmUoJGFyZ3MpCit7CisgICAgdHJh Y2VfbWFyayh1c3QsICRuYW1lLCAiJGZtdCIsICRhcmduYW1lcyk7Cit9CitFT0YKKworICAgICMg Q29sbGVjdCBuYW1lcyBmb3IgbGF0ZXIKKyAgICBuYW1lcz0iJG5hbWVzICRuYW1lIgorfQorCits aW5ldG9jX2VuZF91c3QoKQoreworICAgIGNhdCA8PEVPRgorc3RhdGljIHZvaWQgX19hdHRyaWJ1 dGVfXygoY29uc3RydWN0b3IpKSB0cmFjZV9pbml0KHZvaWQpCit7CitFT0YKKworICAgIGZvciBu YW1lIGluICRuYW1lczsgZG8KKyAgICAgICAgY2F0IDw8RU9GCisgICAgcmVnaXN0ZXJfdHJhY2Vf dXN0XyRuYW1lKHVzdF8ke25hbWV9X3Byb2JlKTsKK0VPRgorICAgIGRvbmUKKworICAgIGVjaG8g In0iCit9CisKK2xpbmV0b2hfYmVnaW5fZHRyYWNlKCkKK3sKKyAgICBjYXQgPDxFT0YKKyNpbmNs dWRlICJ0cmFjZS1kdHJhY2UuaCIKK0VPRgorfQorCitsaW5ldG9oX2R0cmFjZSgpCit7CisgICAg bG9jYWwgbmFtZSBhcmdzIGFyZ25hbWVzIHN0YXRlIG5hbWV1cHBlcgorICAgIG5hbWU9JChnZXRf bmFtZSAiJDEiKQorICAgIGFyZ3M9JChnZXRfYXJncyAiJDEiKQorICAgIGFyZ25hbWVzPSQoZ2V0 X2FyZ25hbWVzICIkMSIsICIsIikKKyAgICBzdGF0ZT0kKGdldF9zdGF0ZSAiJDEiKQorICAgIGlm IFsgIiRzdGF0ZSIgPSAiMCIgXSA7IHRoZW4KKyAgICAgICAgbmFtZT0ke25hbWUjI2Rpc2FibGUg fQorICAgIGZpCisKKyAgICBuYW1ldXBwZXI9YGVjaG8gJG5hbWUgfCB0ciAnWzpsb3dlcjpdJyAn Wzp1cHBlcjpdJ2AKKworICAgICMgRGVmaW5lIGFuIGVtcHR5IGZ1bmN0aW9uIGZvciB0aGUgdHJh Y2UgZXZlbnQKKyAgICBjYXQgPDxFT0YKK3N0YXRpYyBpbmxpbmUgdm9pZCB0cmFjZV8kbmFtZSgk YXJncykgeworICAgIGlmIChRRU1VXyR7bmFtZXVwcGVyfV9FTkFCTEVEKCkpIHsKKyAgICAgICAg UUVNVV8ke25hbWV1cHBlcn0oJGFyZ25hbWVzKTsKKyAgICB9Cit9CitFT0YKK30KKworbGluZXRv aF9lbmRfZHRyYWNlKCkKK3sKKyAgICByZXR1cm4KK30KKworbGluZXRvY19iZWdpbl9kdHJhY2Uo KQoreworICAgIHJldHVybgorfQorCitsaW5ldG9jX2R0cmFjZSgpCit7CisgICAgIyBObyBuZWVk IGZvciBmdW5jdGlvbiBkZWZpbml0aW9ucyBpbiBkdHJhY2UgYmFja2VuZAorICAgIHJldHVybgor fQorCitsaW5ldG9jX2VuZF9kdHJhY2UoKQoreworICAgIHJldHVybgorfQorCitsaW5ldG9kX2Jl Z2luX2R0cmFjZSgpCit7CisgICAgY2F0IDw8RU9GCitwcm92aWRlciBxZW11IHsKK0VPRgorfQor CitsaW5ldG9kX2R0cmFjZSgpCit7CisgICAgbG9jYWwgbmFtZSBhcmdzIHN0YXRlCisgICAgbmFt ZT0kKGdldF9uYW1lICIkMSIpCisgICAgYXJncz0kKGdldF9hcmdzICIkMSIpCisgICAgc3RhdGU9 JChnZXRfc3RhdGUgIiQxIikKKyAgICBpZiBbICIkc3RhdGUiID0gIjAiIF0gOyB0aGVuCisgICAg ICAgIG5hbWU9JHtuYW1lIyNkaXNhYmxlIH0KKyAgICBmaQorCisgICAgIyBEVHJhY2UgcHJvdmlk ZXIgc3ludGF4IGV4cGVjdHMgZm9vKCkgZm9yIGVtcHR5CisgICAgIyBwYXJhbXMsIG5vdCBmb28o dm9pZCkKKyAgICBpZiBbICIkYXJncyIgPSAidm9pZCIgXTsgdGhlbgorICAgICAgIGFyZ3M9IiIK KyAgICBmaQorCisgICAgIyBEZWZpbmUgcHJvdG90eXBlIGZvciBwcm9iZSBhcmd1bWVudHMKKyAg ICBjYXQgPDxFT0YKKyAgICAgICAgcHJvYmUgJG5hbWUoJGFyZ3MpOworRU9GCit9CisKK2xpbmV0 b2RfZW5kX2R0cmFjZSgpCit7CisgICAgY2F0IDw8RU9GCit9OworRU9GCit9CisKK2xpbmV0b3N0 YXBfYmVnaW5fZHRyYWNlKCkKK3sKKyAgICByZXR1cm4KK30KKworbGluZXRvc3RhcF9kdHJhY2Uo KQoreworICAgIGxvY2FsIGkgYXJnIG5hbWUgYXJncyBhcmdsaXN0IHN0YXRlCisgICAgbmFtZT0k KGdldF9uYW1lICIkMSIpCisgICAgYXJncz0kKGdldF9hcmdzICIkMSIpCisgICAgYXJnbGlzdD0k KGdldF9hcmduYW1lcyAiJDEiLCAiIikKKyAgICBzdGF0ZT0kKGdldF9zdGF0ZSAiJDEiKQorICAg IGlmIFsgIiRzdGF0ZSIgPSAiMCIgXSA7IHRoZW4KKyAgICAgICAgbmFtZT0ke25hbWUjI2Rpc2Fi bGUgfQorICAgIGZpCisKKyAgICAjIERlZmluZSBwcm90b3R5cGUgZm9yIHByb2JlIGFyZ3VtZW50 cworICAgIGNhdCA8PEVPRgorcHJvYmUgcWVtdS4kdGFyZ2V0dHlwZS4kdGFyZ2V0YXJjaC4kbmFt ZSA9IHByb2Nlc3MoIiRiaW5hcnkiKS5tYXJrKCIkbmFtZSIpCit7CitFT0YKKworICAgIGk9MQor ICAgIGZvciBhcmcgaW4gJGFyZ2xpc3QKKyAgICBkbworICAgICAgICAjICdsaW1pdCcgaXMgYSBy ZXNlcnZlZCBrZXl3b3JkCisgICAgICAgIGlmIFsgIiRhcmciID0gImxpbWl0IiBdOyB0aGVuCisg ICAgICAgICAgYXJnPSJfbGltaXQiCisgICAgICAgIGZpCisgICAgICAgIGNhdCA8PEVPRgorICAk YXJnID0gXCRhcmckaTsKK0VPRgorCWk9IiQoKGkrMSkpIgorICAgIGRvbmUKKworICAgIGNhdCA8 PEVPRgorfQorRU9GCit9CisKK2xpbmV0b3N0YXBfZW5kX2R0cmFjZSgpCit7CisgICAgcmV0dXJu Cit9CisKKyMgUHJvY2VzcyBzdGRpbiBieSBjYWxsaW5nIGJlZ2luLCBsaW5lLCBhbmQgZW5kIGZ1 bmN0aW9ucyBmb3IgdGhlIGJhY2tlbmQKK2NvbnZlcnQoKQoreworICAgIGxvY2FsIGJlZ2luIHBy b2Nlc3NfbGluZSBlbmQgc3RyIGRpc2FibGUKKyAgICBiZWdpbj0ibGluZXRvJDFfYmVnaW5fJGJh Y2tlbmQiCisgICAgcHJvY2Vzc19saW5lPSJsaW5ldG8kMV8kYmFja2VuZCIKKyAgICBlbmQ9Imxp bmV0byQxX2VuZF8kYmFja2VuZCIKKworICAgICIkYmVnaW4iCisKKyAgICB3aGlsZSByZWFkIC1y IHN0cjsgZG8KKyAgICAgICAgIyBTa2lwIGNvbW1lbnRzIGFuZCBlbXB0eSBsaW5lcworICAgICAg ICB0ZXN0IC16ICIke3N0ciUlIyp9IiAmJiBjb250aW51ZQorCisgICAgICAgICMgUHJvY2VzcyB0 aGUgbGluZS4gIFRoZSBub3AgYmFja2VuZCBoYW5kbGVzIGRpc2FibGVkIGxpbmVzLgorICAgICAg ICBkaXNhYmxlPSR7c3RyJSVkaXNhYmxlICp9CisgICAgICAgIGVjaG8KKyAgICAgICAgaWYgdGVz dCAteiAiJGRpc2FibGUiOyB0aGVuCisgICAgICAgICAgICAjIFBhc3MgdGhlIGRpc2FibGVkIHN0 YXRlIGFzIGFuIGFyZyBmb3IgdGhlIHNpbXBsZQorICAgICAgICAgICAgIyBvciBEVHJhY2UgYmFj a2VuZHMgd2hpY2ggaGFuZGxlIGl0IGR5bmFtaWNhbGx5LgorICAgICAgICAgICAgIyBGb3IgYWxs IG90aGVyIGJhY2tlbmRzLCBjYWxsIGxpbmV0byQxX25vcCgpCisgICAgICAgICAgICBpZiBbICRi YWNrZW5kID0gInNpbXBsZSIgLW8gIiRiYWNrZW5kIiA9ICJkdHJhY2UiIF07IHRoZW4KKyAgICAg ICAgICAgICAgICAiJHByb2Nlc3NfbGluZSIgIiRzdHIiCisgICAgICAgICAgICBlbHNlCisgICAg ICAgICAgICAgICAgImxpbmV0byQxX25vcCIgIiR7c3RyIyNkaXNhYmxlIH0iCisgICAgICAgICAg ICBmaQorICAgICAgICBlbHNlCisgICAgICAgICAgICAiJHByb2Nlc3NfbGluZSIgIiRzdHIiCisg ICAgICAgIGZpCisgICAgZG9uZQorCisgICAgZWNobworICAgICIkZW5kIgorfQorCit0cmFjZXRv aCgpCit7CisgICAgY2F0IDw8RU9GCisjaWZuZGVmIFRSQUNFX0gKKyNkZWZpbmUgVFJBQ0VfSAor CisvKiBUaGlzIGZpbGUgaXMgYXV0b2dlbmVyYXRlZCBieSB0cmFjZXRvb2wsIGRvIG5vdCBlZGl0 LiAqLworCisjaW5jbHVkZSAicWVtdS1jb21tb24uaCIKK0VPRgorICAgIGNvbnZlcnQgaAorICAg IGVjaG8gIiNlbmRpZiAvKiBUUkFDRV9IICovIgorfQorCit0cmFjZXRvYygpCit7CisgICAgZWNo byAiLyogVGhpcyBmaWxlIGlzIGF1dG9nZW5lcmF0ZWQgYnkgdHJhY2V0b29sLCBkbyBub3QgZWRp dC4gKi8iCisgICAgY29udmVydCBjCit9CisKK3RyYWNldG9kKCkKK3sKKyAgICBpZiBbICRiYWNr ZW5kICE9ICJkdHJhY2UiIF07IHRoZW4KKyAgICAgICBlY2hvICJEVHJhY2UgcHJvYmUgZ2VuZXJh dG9yIG5vdCBhcHBsaWNhYmxlIHRvICRiYWNrZW5kIGJhY2tlbmQiCisgICAgICAgZXhpdCAxCisg ICAgZmkKKyAgICBlY2hvICIvKiBUaGlzIGZpbGUgaXMgYXV0b2dlbmVyYXRlZCBieSB0cmFjZXRv b2wsIGRvIG5vdCBlZGl0LiAqLyIKKyAgICBjb252ZXJ0IGQKK30KKwordHJhY2V0b3N0YXAoKQor eworICAgIGlmIFsgJGJhY2tlbmQgIT0gImR0cmFjZSIgXTsgdGhlbgorICAgICAgIGVjaG8gIlN5 c3RlbVRBUCB0YXBzZXQgZ2VuZXJhdG9yIG5vdCBhcHBsaWNhYmxlIHRvICRiYWNrZW5kIGJhY2tl bmQiCisgICAgICAgZXhpdCAxCisgICAgZmkKKyAgICBpZiBbIC16ICIkYmluYXJ5IiBdOyB0aGVu CisgICAgICAgZWNobyAiLS1iaW5hcnkgaXMgcmVxdWlyZWQgZm9yIFN5c3RlbVRBUCB0YXBzZXQg Z2VuZXJhdG9yIgorICAgICAgIGV4aXQgMQorICAgIGZpCisgICAgaWYgWyAteiAiJHRhcmdldHR5 cGUiIF07IHRoZW4KKyAgICAgICBlY2hvICItLXRhcmdldC10eXBlIGlzIHJlcXVpcmVkIGZvciBT eXN0ZW1UQVAgdGFwc2V0IGdlbmVyYXRvciIKKyAgICAgICBleGl0IDEKKyAgICBmaQorICAgIGlm IFsgLXogIiR0YXJnZXRhcmNoIiBdOyB0aGVuCisgICAgICAgZWNobyAiLS10YXJnZXQtYXJjaCBp cyByZXF1aXJlZCBmb3IgU3lzdGVtVEFQIHRhcHNldCBnZW5lcmF0b3IiCisgICAgICAgZXhpdCAx CisgICAgZmkKKyAgICBlY2hvICIvKiBUaGlzIGZpbGUgaXMgYXV0b2dlbmVyYXRlZCBieSB0cmFj ZXRvb2wsIGRvIG5vdCBlZGl0LiAqLyIKKyAgICBjb252ZXJ0IHN0YXAKK30KKworCitiYWNrZW5k PQorb3V0cHV0PQorYmluYXJ5PQordGFyZ2V0dHlwZT0KK3RhcmdldGFyY2g9CisKKwordW50aWwg WyAteiAiJDEiIF0KK2RvCisgIGNhc2UgIiQxIiBpbgorICAgICItLW5vcCIgfCAiLS1zaW1wbGUi IHwgIi0tdXN0IiB8ICItLWR0cmFjZSIpIGJhY2tlbmQ9IiR7MSMtLX0iIDs7CisKKyAgICAiLS1i aW5hcnkiKSBzaGlmdCA7IGJpbmFyeT0iJDEiIDs7CisgICAgIi0tdGFyZ2V0LWFyY2giKSBzaGlm dCA7IHRhcmdldGFyY2g9IiQxIiA7OworICAgICItLXRhcmdldC10eXBlIikgc2hpZnQgOyB0YXJn ZXR0eXBlPSIkMSIgOzsKKworICAgICItaCIgfCAiLWMiIHwgIi1kIikgb3V0cHV0PSIkezEjLX0i IDs7CisgICAgIi0tc3RhcCIpIG91dHB1dD0iJHsxIy0tfSIgOzsKKworICAgICItLWNoZWNrLWJh Y2tlbmQiKSBleGl0IDAgOzsgIyB1c2VkIGJ5IC4vY29uZmlndXJlIHRvIHRlc3QgZm9yIGJhY2tl bmQKKworICAgICopCisgICAgICB1c2FnZTs7CisgIGVzYWMKKyAgc2hpZnQKK2RvbmUKKworaWYg WyAiJGJhY2tlbmQiID0gIiIgLW8gIiRvdXRwdXQiID0gIiIgXTsgdGhlbgorICB1c2FnZQorZmkK KworZ2VuPSJ0cmFjZXRvJG91dHB1dCIKKyIkZ2VuIgorCitleGl0IDAKZGlmZiAtLWdpdCBhL3Np bXBsZXRyYWNlLnB5IGIvc2ltcGxldHJhY2UucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1Cmlu ZGV4IDU1M2E3MjcuLjAwMDAwMDAKLS0tIGEvc2ltcGxldHJhY2UucHkKKysrIC9kZXYvbnVsbApA QCAtMSw5MyArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgUHJldHR5LXByaW50 ZXIgZm9yIHNpbXBsZSB0cmFjZSBiYWNrZW5kIGJpbmFyeSB0cmFjZSBmaWxlcwotIwotIyBDb3B5 cmlnaHQgSUJNLCBDb3JwLiAyMDEwCi0jCi0jIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHUEwsIHZlcnNpb24gMi4gIFNlZQotIyB0aGUgQ09QWUlORyBm aWxlIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LgotIwotIyBGb3IgaGVscCBzZWUgZG9jcy90 cmFjaW5nLnR4dAotCi1pbXBvcnQgc3lzCi1pbXBvcnQgc3RydWN0Ci1pbXBvcnQgcmUKLQotaGVh ZGVyX2V2ZW50X2lkID0gMHhmZmZmZmZmZmZmZmZmZmZmCi1oZWFkZXJfbWFnaWMgICAgPSAweGYy YjE3N2NiMGFhNDI5YjQKLWhlYWRlcl92ZXJzaW9uICA9IDAKLQotdHJhY2VfZm10ID0gJz1RUVFR UVFRUScKLXRyYWNlX2xlbiA9IHN0cnVjdC5jYWxjc2l6ZSh0cmFjZV9mbXQpCi1ldmVudF9yZSAg PSByZS5jb21waWxlKHInKGRpc2FibGVccyspPyhbYS16QS1aMC05X10rKVwoKFteKV0qKVwpLion KQotCi1kZWYgZXJyKG1zZyk6Ci0gICAgc3lzLnN0ZGVyci53cml0ZShtc2cgKyAnXG4nKQotICAg IHN5cy5leGl0KDEpCi0KLWRlZiBwYXJzZV9ldmVudHMoZm9iaik6Ci0gICAgIiIiUGFyc2UgYSB0 cmFjZS1ldmVudHMgZmlsZS4iIiIKLQotICAgIGRlZiBnZXRfYXJnbmFtZXMoYXJncyk6Ci0gICAg ICAgICIiIkV4dHJhY3QgYXJndW1lbnQgbmFtZXMgZnJvbSBhIHBhcmFtZXRlciBsaXN0LiIiIgot ICAgICAgICByZXR1cm4gdHVwbGUoYXJnLnNwbGl0KClbLTFdLmxzdHJpcCgnKicpIGZvciBhcmcg aW4gYXJncy5zcGxpdCgnLCcpKQotCi0gICAgZXZlbnRzID0ge30KLSAgICBldmVudF9udW0gPSAw Ci0gICAgZm9yIGxpbmUgaW4gZm9iajoKLSAgICAgICAgbSA9IGV2ZW50X3JlLm1hdGNoKGxpbmUu c3RyaXAoKSkKLSAgICAgICAgaWYgbSBpcyBOb25lOgotICAgICAgICAgICAgY29udGludWUKLQot ICAgICAgICBkaXNhYmxlLCBuYW1lLCBhcmdzID0gbS5ncm91cHMoKQotICAgICAgICBldmVudHNb ZXZlbnRfbnVtXSA9IChuYW1lLCkgKyBnZXRfYXJnbmFtZXMoYXJncykKLSAgICAgICAgZXZlbnRf bnVtICs9IDEKLSAgICByZXR1cm4gZXZlbnRzCi0KLWRlZiByZWFkX3JlY29yZChmb2JqKToKLSAg ICAiIiJEZXNlcmlhbGl6ZSBhIHRyYWNlIHJlY29yZCBmcm9tIGEgZmlsZS4iIiIKLSAgICBzID0g Zm9iai5yZWFkKHRyYWNlX2xlbikKLSAgICBpZiBsZW4ocykgIT0gdHJhY2VfbGVuOgotICAgICAg ICByZXR1cm4gTm9uZQotICAgIHJldHVybiBzdHJ1Y3QudW5wYWNrKHRyYWNlX2ZtdCwgcykKLQot ZGVmIHJlYWRfdHJhY2VfZmlsZShmb2JqKToKLSAgICAiIiJEZXNlcmlhbGl6ZSB0cmFjZSByZWNv cmRzIGZyb20gYSBmaWxlLiIiIgotICAgIGhlYWRlciA9IHJlYWRfcmVjb3JkKGZvYmopCi0gICAg aWYgaGVhZGVyIGlzIE5vbmUgb3IgXAotICAgICAgIGhlYWRlclswXSAhPSBoZWFkZXJfZXZlbnRf aWQgb3IgXAotICAgICAgIGhlYWRlclsxXSAhPSBoZWFkZXJfbWFnaWMgb3IgXAotICAgICAgIGhl YWRlclsyXSAhPSBoZWFkZXJfdmVyc2lvbjoKLSAgICAgICAgZXJyKCdub3QgYSB0cmFjZSBmaWxl IG9yIGluY29tcGF0aWJsZSB2ZXJzaW9uJykKLQotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIHJl YyA9IHJlYWRfcmVjb3JkKGZvYmopCi0gICAgICAgIGlmIHJlYyBpcyBOb25lOgotICAgICAgICAg ICAgYnJlYWsKLQotICAgICAgICB5aWVsZCByZWMKLQotY2xhc3MgRm9ybWF0dGVyKG9iamVjdCk6 Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGV2ZW50cyk6Ci0gICAgICAgIHNlbGYuZXZlbnRzID0g ZXZlbnRzCi0gICAgICAgIHNlbGYubGFzdF90aW1lc3RhbXAgPSBOb25lCi0KLSAgICBkZWYgZm9y bWF0X3JlY29yZChzZWxmLCByZWMpOgotICAgICAgICBpZiBzZWxmLmxhc3RfdGltZXN0YW1wIGlz IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLmxhc3RfdGltZXN0YW1wID0gcmVjWzFdCi0gICAgICAg IGRlbHRhX25zID0gcmVjWzFdIC0gc2VsZi5sYXN0X3RpbWVzdGFtcAotICAgICAgICBzZWxmLmxh c3RfdGltZXN0YW1wID0gcmVjWzFdCi0KLSAgICAgICAgZXZlbnQgPSBzZWxmLmV2ZW50c1tyZWNb MF1dCi0gICAgICAgIGZpZWxkcyA9IFtldmVudFswXSwgJyUwLjNmJyAlIChkZWx0YV9ucyAvIDEw MDAuMCldCi0gICAgICAgIGZvciBpIGluIHhyYW5nZSgxLCBsZW4oZXZlbnQpKToKLSAgICAgICAg ICAgIGZpZWxkcy5hcHBlbmQoJyVzPTB4JXgnICUgKGV2ZW50W2ldLCByZWNbaSArIDFdKSkKLSAg ICAgICAgcmV0dXJuICcgJy5qb2luKGZpZWxkcykKLQotaWYgbGVuKHN5cy5hcmd2KSAhPSAzOgot ICAgIGVycigndXNhZ2U6ICVzIDx0cmFjZS1ldmVudHM+IDx0cmFjZS1maWxlPicgJSBzeXMuYXJn dlswXSkKLQotZXZlbnRzID0gcGFyc2VfZXZlbnRzKG9wZW4oc3lzLmFyZ3ZbMV0sICdyJykpCi1m b3JtYXR0ZXIgPSBGb3JtYXR0ZXIoZXZlbnRzKQotZm9yIHJlYyBpbiByZWFkX3RyYWNlX2ZpbGUo b3BlbihzeXMuYXJndlsyXSwgJ3JiJykpOgotICAgIHByaW50IGZvcm1hdHRlci5mb3JtYXRfcmVj b3JkKHJlYykKZGlmZiAtLWdpdCBhL3RleGkycG9kLnBsIGIvdGV4aTJwb2QucGwKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNzU1CmluZGV4IDllZDA1NmEuLjAwMDAwMDAKLS0tIGEvdGV4aTJwb2QucGwK KysrIC9kZXYvbnVsbApAQCAtMSw0NzcgKzAsMCBAQAotIyEgL3Vzci9iaW4vcGVybCAtdwotCi0j ICAgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotCi0jIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdDQy4KLQotIyBHQ0MgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotIyBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQotIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0jIGFueSBsYXRlciB2ZXJzaW9uLgotCi0jIEdDQyBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCi0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu Ci0KLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLSMgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAg SWYgbm90LAotIyBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotCi0jIFRoaXMg ZG9lcyB0cml2aWFsIChhbmQgSSBtZWFuIF90cml2aWFsXykgY29udmVyc2lvbiBvZiBUZXhpbmZv Ci0jIG1hcmt1cCB0byBQZXJsIFBPRCBmb3JtYXQuICBJdCdzIGludGVuZGVkIHRvIGJlIHVzZWQg dG8gZXh0cmFjdAotIyBzb21ldGhpbmcgc3VpdGFibGUgZm9yIGEgbWFucGFnZSBmcm9tIGEgVGV4 aW5mbyBkb2N1bWVudC4KLQotJG91dHB1dCA9IDA7Ci0kc2tpcHBpbmcgPSAwOwotJXNlY3RzID0g KCk7Ci0kc2VjdGlvbiA9ICIiOwotQGljc3RhY2sgPSAoKTsKLUBlbmR3c3RhY2sgPSAoKTsKLUBz a3N0YWNrID0gKCk7Ci1AaW5zdGFjayA9ICgpOwotJHNoaWZ0ID0gIiI7Ci0lZGVmcyA9ICgpOwot JGZubm8gPSAxOwotJGluZiA9ICIiOwotJGliYXNlID0gIiI7Ci1AaXBhdGggPSAoKTsKLQotd2hp bGUgKCRfID0gc2hpZnQpIHsKLSAgICBpZiAoL14tRCguKikkLykgewotCWlmICgkMSBuZSAiIikg ewotCSAgICAkZmxhZyA9ICQxOwotCX0gZWxzZSB7Ci0JICAgICRmbGFnID0gc2hpZnQ7Ci0JfQot CSR2YWx1ZSA9ICIiOwotCSgkZmxhZywgJHZhbHVlKSA9ICgkZmxhZyA9fiAvXihbXj1dKykoPzo9 KC4rKSk/Lyk7Ci0JZGllICJubyBmbGFnIHNwZWNpZmllZCBmb3IgLURcbiIKLQkgICAgdW5sZXNz ICRmbGFnIG5lICIiOwotCWRpZSAiZmxhZ3MgbWF5IG9ubHkgY29udGFpbiBsZXR0ZXJzLCBkaWdp dHMsIGh5cGhlbnMsIGRhc2hlcyBhbmQgdW5kZXJzY29yZXNcbiIKLQkgICAgdW5sZXNzICRmbGFn ID1+IC9eW2EtekEtWjAtOV8tXSskLzsKLQkkZGVmc3skZmxhZ30gPSAkdmFsdWU7Ci0gICAgfSBl bHNpZiAoL14tSSguKikkLykgewotCWlmICgkMSBuZSAiIikgewotCSAgICAkZmxhZyA9ICQxOwot CX0gZWxzZSB7Ci0JICAgICRmbGFnID0gc2hpZnQ7Ci0JfQotICAgICAgICBwdXNoIChAaXBhdGgs ICRmbGFnKTsKLSAgICB9IGVsc2lmICgvXi0vKSB7Ci0JdXNhZ2UoKTsKLSAgICB9IGVsc2Ugewot CSRpbiA9ICRfLCBuZXh0IHVubGVzcyBkZWZpbmVkICRpbjsKLQkkb3V0ID0gJF8sIG5leHQgdW5s ZXNzIGRlZmluZWQgJG91dDsKLQl1c2FnZSgpOwotICAgIH0KLX0KLQotaWYgKGRlZmluZWQgJGlu KSB7Ci0gICAgJGluZiA9IGdlbnN5bSgpOwotICAgIG9wZW4oJGluZiwgIjwkaW4iKSBvciBkaWUg Im9wZW5pbmcgXCIkaW5cIjogJCFcbiI7Ci0gICAgJGliYXNlID0gJDEgaWYgJGluID1+IG18Xigu KykvW14vXSskfDsKLX0gZWxzZSB7Ci0gICAgJGluZiA9IFwqU1RESU47Ci19Ci0KLWlmIChkZWZp bmVkICRvdXQpIHsKLSAgICBvcGVuKFNURE9VVCwgIj4kb3V0Iikgb3IgZGllICJvcGVuaW5nIFwi JG91dFwiOiAkIVxuIjsKLX0KLQotd2hpbGUoZGVmaW5lZCAkaW5mKSB7Ci13aGlsZSg8JGluZj4p IHsKLSAgICAjIENlcnRhaW4gY29tbWFuZHMgYXJlIGRpc2NhcmRlZCB3aXRob3V0IGZ1cnRoZXIg cHJvY2Vzc2luZy4KLSAgICAvXlxAKD86Ci0JIFthLXpdK2luZGV4CQkjIEAqaW5kZXg6IHVzZWZ1 bCBvbmx5IGluIGNvbXBsZXRlIG1hbnVhbAotCSB8bmVlZAkJCSMgQG5lZWQ6IHVzZWZ1bCBvbmx5 IGluIHByaW50ZWQgbWFudWFsCi0JIHwoPzplbmRccyspP2dyb3VwCSMgQGdyb3VwIC4uIEBlbmQg Z3JvdXA6IGRpdHRvCi0JIHxwYWdlCQkJIyBAcGFnZTogZGl0dG8KLQkgfG5vZGUJCQkjIEBub2Rl OiB1c2VmdWwgb25seSBpbiAuaW5mbyBmaWxlCi0JIHwoPzplbmRccyspP2lmbm90dGV4ICAgIyBA aWZub3R0ZXggLi4gQGVuZCBpZm5vdHRleDogdXNlIGNvbnRlbnRzCi0JKVxiL3ggYW5kIG5leHQ7 Ci0KLSAgICBjaG9tcDsKLQotICAgICMgTG9vayBmb3IgZmlsZW5hbWUgYW5kIHRpdGxlIG1hcmtl cnMuCi0gICAgL15cQHNldGZpbGVuYW1lXHMrKFteLl0rKS8gYW5kICRmbiA9ICQxLCBuZXh0Owot ICAgIC9eXEBzZXR0aXRsZVxzKyhbXi5dKykvIGFuZCAkdGwgPSBwb3N0cHJvY2VzcygkMSksIG5l eHQ7Ci0KLSAgICAjIElkZW50aWZ5IGEgbWFuIHRpdGxlIGJ1dCBrZWVwIG9ubHkgdGhlIG9uZSB3 ZSBhcmUgaW50ZXJlc3RlZCBpbi4KLSAgICAvXlxAY1xzK21hblxzK3RpdGxlXHMrKFtBLVphLXow LTktXSspXHMrKC4rKS8gYW5kIGRvIHsKLQlpZiAoZXhpc3RzICRkZWZzeyQxfSkgewotCSAgICAk Zm4gPSAkMTsKLQkgICAgJHRsID0gcG9zdHByb2Nlc3MoJDIpOwotCX0KLQluZXh0OwotICAgIH07 Ci0KLSAgICAjIExvb2sgZm9yIGJsb2NrcyBzdXJyb3VuZGVkIGJ5IEBjIG1hbiBiZWdpbiBTRUNU SU9OIC4uLiBAYyBtYW4gZW5kLgotICAgICMgVGhpcyByZWFsbHkgb3VnaHRhIGJlIEBpZm1hbiAu Li4gQGVuZCBpZm1hbiBhbmQgdGhlIGxpa2UsIGJ1dCBzdWNoCi0gICAgIyB3b3VsZCByZXF1aXJl IHJldidpbmcgYWxsIG90aGVyIFRleGluZm8gdHJhbnNsYXRvcnMuCi0gICAgL15cQGNccyttYW5c cytiZWdpblxzKyhbQS1aXSspXHMrKFtBLVphLXowLTktXSspLyBhbmQgZG8gewotCSRvdXRwdXQg PSAxIGlmIGV4aXN0cyAkZGVmc3skMn07Ci0gICAgICAgICRzZWN0ID0gJDE7Ci0JbmV4dDsKLSAg ICB9OwotICAgIC9eXEBjXHMrbWFuXHMrYmVnaW5ccysoW0EtWl0rKS8gYW5kICRzZWN0ID0gJDEs ICRvdXRwdXQgPSAxLCBuZXh0OwotICAgIC9eXEBjXHMrbWFuXHMrZW5kLyBhbmQgZG8gewotCSRz ZWN0c3skc2VjdH0gPSAiIiB1bmxlc3MgZXhpc3RzICRzZWN0c3skc2VjdH07Ci0JJHNlY3RzeyRz ZWN0fSAuPSBwb3N0cHJvY2Vzcygkc2VjdGlvbik7Ci0JJHNlY3Rpb24gPSAiIjsKLQkkb3V0cHV0 ID0gMDsKLQluZXh0OwotICAgIH07Ci0KLSAgICAjIGhhbmRsZSB2YXJpYWJsZXMKLSAgICAvXlxA c2V0XHMrKFthLXpBLVowLTlfLV0rKVxzKiguKikkLyBhbmQgZG8gewotCSRkZWZzeyQxfSA9ICQy OwotCW5leHQ7Ci0gICAgfTsKLSAgICAvXlxAY2xlYXJccysoW2EtekEtWjAtOV8tXSspLyBhbmQg ZG8gewotCWRlbGV0ZSAkZGVmc3skMX07Ci0JbmV4dDsKLSAgICB9OwotCi0gICAgbmV4dCB1bmxl c3MgJG91dHB1dDsKLQotICAgICMgRGlzY2FyZCBjb21tZW50cy4gIChDYW4ndCBkbyBpdCBhYm92 ZSwgYmVjYXVzZSB0aGVuIHdlJ2QgbmV2ZXIgc2VlCi0gICAgIyBAYyBtYW4gbGluZXMuKQotICAg IC9eXEBjXGIvIGFuZCBuZXh0OwotCi0gICAgIyBFbmQtYmxvY2sgaGFuZGxlciBnb2VzIHVwIGhl cmUgYmVjYXVzZSBpdCBuZWVkcyB0byBvcGVyYXRlIGV2ZW4KLSAgICAjIGlmIHdlIGFyZSBza2lw cGluZy4KLSAgICAvXlxAZW5kXHMrKFthLXpdKykvIGFuZCBkbyB7Ci0JIyBJZ25vcmUgQGVuZCBm b28sIHdoZXJlIGZvbyBpcyBub3QgYW4gb3BlcmF0aW9uIHdoaWNoIG1heQotCSMgY2F1c2UgdXMg dG8gc2tpcCwgaWYgd2UgYXJlIHByZXNlbnRseSBza2lwcGluZy4KLQlteSAkZW5kZWQgPSAkMTsK LQluZXh0IGlmICRza2lwcGluZyAmJiAkZW5kZWQgIX4gL14oPzppZnNldHxpZmNsZWFyfGlnbm9y ZXxtZW51fGlmdGV4fGNvcHlpbmcpJC87Ci0KLQlkaWUgIlxAZW5kICRlbmRlZCB3aXRob3V0IFxA JGVuZGVkIGF0IGxpbmUgJC5cbiIgdW5sZXNzIGRlZmluZWQgJGVuZHc7Ci0JZGllICJcQCRlbmR3 IGVuZGVkIGJ5IFxAZW5kICRlbmRlZCBhdCBsaW5lICQuXG4iIHVubGVzcyAkZW5kZWQgZXEgJGVu ZHc7Ci0KLQkkZW5kdyA9IHBvcCBAZW5kd3N0YWNrOwotCi0JaWYgKCRlbmRlZCA9fiAvXig/Omlm c2V0fGlmY2xlYXJ8aWdub3JlfG1lbnV8aWZ0ZXgpJC8pIHsKLQkgICAgJHNraXBwaW5nID0gcG9w IEBza3N0YWNrOwotCSAgICBuZXh0OwotCX0gZWxzaWYgKCRlbmRlZCA9fiAvXig/OmV4YW1wbGV8 c21hbGxleGFtcGxlfGRpc3BsYXkpJC8pIHsKLQkgICAgJHNoaWZ0ID0gIiI7Ci0JICAgICRfID0g IiI7CSMgbmVlZCBhIHBhcmFncmFwaCBicmVhawotCX0gZWxzaWYgKCRlbmRlZCA9fiAvXig/Oml0 ZW1pemV8ZW51bWVyYXRlfFtmdl0/dGFibGUpJC8pIHsKLQkgICAgJF8gPSAiXG49YmFja1xuIjsK LQkgICAgJGljID0gcG9wIEBpY3N0YWNrOwotCX0gZWxzaWYgKCRlbmRlZCBlcSAibXVsdGl0YWJs ZSIpIHsKLQkgICAgJF8gPSAiXG49YmFja1xuIjsKLQl9IGVsc2UgewotCSAgICBkaWUgInVua25v d24gY29tbWFuZCBcQGVuZCAkZW5kZWQgYXQgbGluZSAkLlxuIjsKLQl9Ci0gICAgfTsKLQotICAg ICMgV2UgbXVzdCBoYW5kbGUgY29tbWFuZHMgd2hpY2ggY2FuIGNhdXNlIHNraXBwaW5nIGV2ZW4g d2hpbGUgd2UKLSAgICAjIGFyZSBza2lwcGluZywgb3RoZXJ3aXNlIHdlIHdpbGwgbm90IHByb2Nl c3MgbmVzdGVkIGNvbmRpdGlvbmFscwotICAgICMgY29ycmVjdGx5LgotICAgIC9eXEBpZnNldFxz KyhbYS16QS1aMC05Xy1dKykvIGFuZCBkbyB7Ci0JcHVzaCBAZW5kd3N0YWNrLCAkZW5kdzsKLQlw dXNoIEBza3N0YWNrLCAkc2tpcHBpbmc7Ci0JJGVuZHcgPSAiaWZzZXQiOwotCSRza2lwcGluZyA9 IDEgdW5sZXNzIGV4aXN0cyAkZGVmc3skMX07Ci0JbmV4dDsKLSAgICB9OwotCi0gICAgL15cQGlm Y2xlYXJccysoW2EtekEtWjAtOV8tXSspLyBhbmQgZG8gewotCXB1c2ggQGVuZHdzdGFjaywgJGVu ZHc7Ci0JcHVzaCBAc2tzdGFjaywgJHNraXBwaW5nOwotCSRlbmR3ID0gImlmY2xlYXIiOwotCSRz a2lwcGluZyA9IDEgaWYgZXhpc3RzICRkZWZzeyQxfTsKLQluZXh0OwotICAgIH07Ci0KLSAgICAv XlxAKGlnbm9yZXxtZW51fGlmdGV4fGNvcHlpbmcpXGIvIGFuZCBkbyB7Ci0JcHVzaCBAZW5kd3N0 YWNrLCAkZW5kdzsKLQlwdXNoIEBza3N0YWNrLCAkc2tpcHBpbmc7Ci0JJGVuZHcgPSAkMTsKLQkk c2tpcHBpbmcgPSAxOwotCW5leHQ7Ci0gICAgfTsKLQotICAgIG5leHQgaWYgJHNraXBwaW5nOwot Ci0gICAgIyBDaGFyYWN0ZXIgZW50aXRpZXMuICBGaXJzdCB0aGUgb25lcyB0aGF0IGNhbiBiZSBy ZXBsYWNlZCBieSByYXcgdGV4dAotICAgICMgb3IgZGlzY2FyZGVkIG91dHJpZ2h0OgotICAgIHMv XEBjb3B5cmlnaHRce1x9LyhjKS9nOwotICAgIHMvXEBkb3RzXHtcfS8uLi4vZzsKLSAgICBzL1xA ZW5kZG90c1x7XH0vLi4uLi9nOwotICAgIHMvXEAoWy4hPyBdKS8kMS9nOwotICAgIHMvXEBbOi1d Ly9nOwotICAgIHMvXEBidWxsZXQoPzpce1x9KT8vKi9nOwotICAgIHMvXEBUZVhce1x9L1RlWC9n OwotICAgIHMvXEBwb3VuZHNce1x9L1wjL2c7Ci0gICAgcy9cQG1pbnVzKD86XHtcfSk/Ly0vZzsK LSAgICBzL1xcLC8sL2c7Ci0KLSAgICAjIE5vdyB0aGUgb25lcyB0aGF0IGhhdmUgdG8gYmUgcmVw bGFjZWQgYnkgc3BlY2lhbCBlc2NhcGVzCi0gICAgIyAod2hpY2ggd2lsbCBiZSB0dXJuZWQgYmFj ayBpbnRvIHRleHQgYnkgdW5tdW5nZSgpKQotICAgIHMvJi8mYW1wOy9nOwotICAgIHMvXEBcey8m bGJyYWNlOy9nOwotICAgIHMvXEBcfS8mcmJyYWNlOy9nOwotICAgIHMvXEBcQC8mYXQ7L2c7Ci0K LSAgICAjIEluc2lkZSBhIHZlcmJhdGltIGJsb2NrLCBoYW5kbGUgQHZhciBzcGVjaWFsbHkuCi0g ICAgaWYgKCRzaGlmdCBuZSAiIikgewotCXMvXEB2YXJceyhbXlx9XSopXH0vPCQxPi9nOwotICAg IH0KLQotICAgICMgUE9EIGRvZXNuJ3QgaW50ZXJwcmV0IEU8PiBpbnNpZGUgYSB2ZXJiYXRpbSBi bG9jay4KLSAgICBpZiAoJHNoaWZ0IGVxICIiKSB7Ci0Jcy88LyZsdDsvZzsKLQlzLz4vJmd0Oy9n OwotICAgIH0gZWxzZSB7Ci0Jcy88LyZMVDsvZzsKLQlzLz4vJkdUOy9nOwotICAgIH0KLQotICAg ICMgU2luZ2xlIGxpbmUgY29tbWFuZCBoYW5kbGVycy4KLQotICAgIC9eXEBpbmNsdWRlXHMrKC4r KSQvIGFuZCBkbyB7Ci0JcHVzaCBAaW5zdGFjaywgJGluZjsKLQkkaW5mID0gZ2Vuc3ltKCk7Ci0J JGZpbGUgPSBwb3N0cHJvY2VzcygkMSk7Ci0KLQkjIFRyeSBjd2QgYW5kICRpYmFzZSwgdGhlbiBl eHBsaWNpdCAtSSBwYXRocy4KLQkkZG9uZSA9IDA7Ci0JZm9yZWFjaCAkcGF0aCAoIiIsICRpYmFz ZSwgQGlwYXRoKSB7Ci0JICAgICRteXBhdGggPSAkZmlsZTsKLQkgICAgJG15cGF0aCA9ICRwYXRo IC4gIi8iIC4gJG15cGF0aCBpZiAoJHBhdGggbmUgIiIpOwotCSAgICBvcGVuKCRpbmYsICI8IiAu ICRteXBhdGgpIGFuZCAoJGRvbmUgPSAxLCBsYXN0KTsKLQl9Ci0JZGllICJjYW5ub3QgZmluZCAk ZmlsZSIgaWYgISRkb25lOwotCW5leHQ7Ci0gICAgfTsKLQotICAgIC9eXEAoPzpzZWN0aW9ufHVu bnVtYmVyZWR8dW5udW1iZXJlZHNlY3xjZW50ZXIpXHMrKC4rKSQvCi0JYW5kICRfID0gIlxuPWhl YWQyICQxXG4iOwotICAgIC9eXEBzdWJzZWN0aW9uXHMrKC4rKSQvCi0JYW5kICRfID0gIlxuPWhl YWQzICQxXG4iOwotICAgIC9eXEBzdWJzdWJzZWN0aW9uXHMrKC4rKSQvCi0JYW5kICRfID0gIlxu PWhlYWQ0ICQxXG4iOwotCi0gICAgIyBCbG9jayBjb21tYW5kIGhhbmRsZXJzOgotICAgIC9eXEBp dGVtaXplKD86XHMrKFxAW2Etel0rfFwqfC0pKT8vIGFuZCBkbyB7Ci0JcHVzaCBAZW5kd3N0YWNr LCAkZW5kdzsKLQlwdXNoIEBpY3N0YWNrLCAkaWM7Ci0JaWYgKGRlZmluZWQgJDEpIHsKLQkgICAg JGljID0gJDE7Ci0JfSBlbHNlIHsKLQkgICAgJGljID0gJyonOwotCX0KLQkkXyA9ICJcbj1vdmVy IDRcbiI7Ci0JJGVuZHcgPSAiaXRlbWl6ZSI7Ci0gICAgfTsKLQotICAgIC9eXEBlbnVtZXJhdGUo PzpccysoW2EtekEtWjAtOV0rKSk/LyBhbmQgZG8gewotCXB1c2ggQGVuZHdzdGFjaywgJGVuZHc7 Ci0JcHVzaCBAaWNzdGFjaywgJGljOwotCWlmIChkZWZpbmVkICQxKSB7Ci0JICAgICRpYyA9ICQx IC4gIi4iOwotCX0gZWxzZSB7Ci0JICAgICRpYyA9ICIxLiI7Ci0JfQotCSRfID0gIlxuPW92ZXIg NFxuIjsKLQkkZW5kdyA9ICJlbnVtZXJhdGUiOwotICAgIH07Ci0KLSAgICAvXlxAbXVsdGl0YWJs ZVxzLiovIGFuZCBkbyB7Ci0JcHVzaCBAZW5kd3N0YWNrLCAkZW5kdzsKLQkkZW5kdyA9ICJtdWx0 aXRhYmxlIjsKLQkkXyA9ICJcbj1vdmVyIDRcbiI7Ci0gICAgfTsKLQotICAgIC9eXEAoW2Z2XT90 YWJsZSlccysoXEBbYS16XSspLyBhbmQgZG8gewotCXB1c2ggQGVuZHdzdGFjaywgJGVuZHc7Ci0J cHVzaCBAaWNzdGFjaywgJGljOwotCSRlbmR3ID0gJDE7Ci0JJGljID0gJDI7Ci0JJGljID1+IHMv XEAoPzpzYW1wfHN0cm9uZ3xrZXl8Z2NjdGFib3B0fG9wdGlvbnxlbnYpL0IvOwotCSRpYyA9fiBz L1xAKD86Y29kZXxrYmQpL0MvOwotCSRpYyA9fiBzL1xAKD86ZGZufHZhcnxlbXBofGNpdGV8aSkv SS87Ci0JJGljID1+IHMvXEAoPzpmaWxlKS9GLzsKLQkkXyA9ICJcbj1vdmVyIDRcbiI7Ci0gICAg fTsKLQotICAgIC9eXEAoKD86c21hbGwpP2V4YW1wbGV8ZGlzcGxheSkvIGFuZCBkbyB7Ci0JcHVz aCBAZW5kd3N0YWNrLCAkZW5kdzsKLQkkZW5kdyA9ICQxOwotCSRzaGlmdCA9ICJcdCI7Ci0JJF8g PSAiIjsJIyBuZWVkIGEgcGFyYWdyYXBoIGJyZWFrCi0gICAgfTsKLQotICAgIC9eXEBpdGVtXHMr KC4qXFMpXHMqJC8gYW5kICRlbmR3IGVxICJtdWx0aXRhYmxlIiBhbmQgZG8gewotCUBjb2x1bW5z ID0gKCk7Ci0JZm9yICRjb2x1bW4gKHNwbGl0ICgvXHMqXEB0YWJccyovLCAkMSkpIHsKLQkgICAg IyBAc3Ryb25ney4uLn0gaXMgdXNlZCBhIEBoZWFkaXRlbSB3b3JrLWFsaWtlCi0JICAgICRjb2x1 bW4gPX4gcy9eXEBzdHJvbmd7KC4qKX0kLyQxLzsKLQkgICAgcHVzaCBAY29sdW1ucywgJGNvbHVt bjsKLQl9Ci0JJF8gPSAiXG49aXRlbSAiLmpvaW4gKCIgOiAiLCBAY29sdW1ucykuIlxuIjsKLSAg ICB9OwotCi0gICAgL15cQGl0ZW14P1xzKiguKyk/JC8gYW5kIGRvIHsKLQlpZiAoZGVmaW5lZCAk MSkgewotCSAgICAjIEVudGl0eSBlc2NhcGVzIHByZXZlbnQgbXVuZ2luZyBieSB0aGUgPD4gcHJv Y2Vzc2luZyBiZWxvdy4KLQkgICAgJF8gPSAiXG49aXRlbSAkaWNcJkxUOyQxXCZHVDtcbiI7Ci0J fSBlbHNlIHsKLQkgICAgJF8gPSAiXG49aXRlbSAkaWNcbiI7Ci0JICAgICRpYyA9fiB5L0EtWWEt eS9CLVpiLXovOwotCSAgICAkaWMgPX4gcy8oXGQrKS8kMSArIDEvZWc7Ci0JfQotICAgIH07Ci0K LSAgICAkc2VjdGlvbiAuPSAkc2hpZnQuJF8uIlxuIjsKLX0KLSMgRW5kIG9mIGN1cnJlbnQgZmls ZS4KLWNsb3NlKCRpbmYpOwotJGluZiA9IHBvcCBAaW5zdGFjazsKLX0KLQotZGllICJObyBmaWxl bmFtZSBvciB0aXRsZVxuIiB1bmxlc3MgZGVmaW5lZCAkZm4gJiYgZGVmaW5lZCAkdGw7Ci0KLSRz ZWN0c3tOQU1FfSA9ICIkZm4gXC0gJHRsXG4iOwotJHNlY3Rze0ZPT1ROT1RFU30gLj0gIj1iYWNr XG4iIGlmIGV4aXN0cyAkc2VjdHN7Rk9PVE5PVEVTfTsKLQotZm9yICRzZWN0IChxdyhOQU1FIFNZ Tk9QU0lTIERFU0NSSVBUSU9OIE9QVElPTlMgRU5WSVJPTk1FTlQgRklMRVMKLQkgICAgICBCVUdT IE5PVEVTIEZPT1ROT1RFUyBTRUVBTFNPIEFVVEhPUiBDT1BZUklHSFQpKSB7Ci0gICAgaWYoZXhp c3RzICRzZWN0c3skc2VjdH0pIHsKLQkkaGVhZCA9ICRzZWN0OwotCSRoZWFkID1+IHMvU0VFQUxT Ty9TRUUgQUxTTy87Ci0JcHJpbnQgIj1oZWFkMSAkaGVhZFxuXG4iOwotCXByaW50IHNjYWxhciB1 bm11bmdlICgkc2VjdHN7JHNlY3R9KTsKLQlwcmludCAiXG4iOwotICAgIH0KLX0KLQotc3ViIHVz YWdlCi17Ci0gICAgZGllICJ1c2FnZTogJDAgWy1EIHRvZ2dsZS4uLl0gW2luZmlsZSBbb3V0Zmls ZV1dXG4iOwotfQotCi1zdWIgcG9zdHByb2Nlc3MKLXsKLSAgICBsb2NhbCAkXyA9ICRfWzBdOwot Ci0gICAgIyBAdmFsdWV7Zm9vfSBpcyByZXBsYWNlZCBieSB3aGF0ZXZlciAnZm9vJyBpcyBkZWZp bmVkIGFzLgotICAgIHdoaWxlIChtLyhcQHZhbHVlXHsoW2EtekEtWjAtOV8tXSspXH0pL2cpIHsK LQlpZiAoISBleGlzdHMgJGRlZnN7JDJ9KSB7Ci0JICAgIHByaW50IFNUREVSUiAiT3B0aW9uICQy IG5vdCBkZWZpbmVkXG4iOwotCSAgICBzL1xRJDFcRS8vOwotCX0gZWxzZSB7Ci0JICAgICR2YWx1 ZSA9ICRkZWZzeyQyfTsKLQkgICAgcy9cUSQxXEUvJHZhbHVlLzsKLQl9Ci0gICAgfQotCi0gICAg IyBGb3JtYXR0aW5nIGNvbW1hbmRzLgotICAgICMgVGVtcG9yYXJ5IGVzY2FwZSBmb3IgQHIuCi0g ICAgcy9cQHJceyhbXlx9XSopXH0vUjwkMT4vZzsKLSAgICBzL1xAKD86ZGZufHZhcnxlbXBofGNp dGV8aSlceyhbXlx9XSopXH0vSTwkMT4vZzsKLSAgICBzL1xAKD86Y29kZXxrYmQpXHsoW15cfV0q KVx9L0M8JDE+L2c7Ci0gICAgcy9cQCg/OmdjY29wdGxpc3R8c2FtcHxzdHJvbmd8a2V5fG9wdGlv bnxlbnZ8Y29tbWFuZHxiKVx7KFteXH1dKilcfS9CPCQxPi9nOwotICAgIHMvXEBzY1x7KFteXH1d KilcfS9cVSQxL2c7Ci0gICAgcy9cQGZpbGVceyhbXlx9XSopXH0vRjwkMT4vZzsKLSAgICBzL1xA d1x7KFteXH1dKilcfS9TPCQxPi9nOwotICAgIHMvXEAoPzpkbW58bWF0aClceyhbXlx9XSopXH0v JDEvZzsKLQotICAgICMga2VlcCByZWZlcmVuY2VzIG9mIHRoZSBmb3JtIEByZWZ7Li4ufSwgcHJp bnQgdGhlbSBib2xkCi0gICAgcy9cQCg/OnJlZilceyhbXlx9XSopXH0vQjwkMT4vZzsKLQotICAg ICMgQ2hhbmdlIGRvdWJsZSBzaW5nbGUgcXVvdGVzIHRvIGRvdWJsZSBxdW90ZXMuCi0gICAgcy8n Jy8iL2c7Ci0gICAgcy9gYC8iL2c7Ci0KLSAgICAjIENyb3NzIHJlZmVyZW5jZXMgYXJlIHRocm93 biBhd2F5LCBhcyBhcmUgQG5vaW5kZW50IGFuZCBAcmVmaWxsLgotICAgICMgKEBub2luZGVudCBp cyBpbXBvc3NpYmxlIGluIC5wb2QsIGFuZCBAcmVmaWxsIGlzIHVubmVjZXNzYXJ5LikKLSAgICAj IEAqIGlzIGFsc28gaW1wb3NzaWJsZSBpbiAucG9kOyB3ZSBkaXNjYXJkIGl0IGFuZCBhbnkgbmV3 bGluZSB0aGF0Ci0gICAgIyBmb2xsb3dzIGl0LiAgU2ltaWxhcmx5LCBvdXIgbWFjcm8gQGdvbCBt dXN0IGJlIGRpc2NhcmRlZC4KLQotICAgIHMvXCg/XEB4cmVmXHsoPzpbXlx9XSopXH0oPzpbXi48 XXwoPzo8W148Pl0qPikpKlwuXCk/Ly9nOwotICAgIHMvXHMrXChcQHB4cmVmXHsoPzpbXlx9XSop XH1cKS8vZzsKLSAgICBzLztccytcQHB4cmVmXHsoPzpbXlx9XSopXH0vL2c7Ci0gICAgcy9cQG5v aW5kZW50XHMqLy9nOwotICAgIHMvXEByZWZpbGwvL2c7Ci0gICAgcy9cQGdvbC8vZzsKLSAgICBz L1xAXCpccypcbj8vL2c7Ci0KLSAgICAjIEFuY2hvcnMgYXJlIHRocm93biBhd2F5Ci0gICAgcy9c QGFuY2hvclx7KD86W15cfV0qKVx9Ly9nOwotCi0gICAgIyBAdXJlZiBjYW4gdGFrZSBvbmUsIHR3 bywgb3IgdGhyZWUgYXJndW1lbnRzLCB3aXRoIGRpZmZlcmVudAotICAgICMgc2VtYW50aWNzIGVh Y2ggdGltZS4gIEB1cmwgYW5kIEBlbWFpbCBhcmUganVzdCBsaWtlIEB1cmVmIHdpdGgKLSAgICAj IG9uZSBhcmd1bWVudCwgZm9yIG91ciBwdXJwb3Nlcy4KLSAgICBzL1xAKD86dXJlZnx1cmx8ZW1h aWwpXHsoW15cfSxdKilcfS8mbHQ7QjwkMT4mZ3Q7L2c7Ci0gICAgcy9cQHVyZWZceyhbXlx9LF0q KSwoW15cfSxdKilcfS8kMiAoQzwkMT4pL2c7Ci0gICAgcy9cQHVyZWZceyhbXlx9LF0qKSwoW15c fSxdKiksKFteXH0sXSopXH0vJDMvZzsKLQotICAgICMgVW4tZXNjYXBlIDw+IGF0IHRoaXMgcG9p bnQuCi0gICAgcy8mTFQ7LzwvZzsKLSAgICBzLyZHVDsvPi9nOwotCi0gICAgIyBOb3cgdW4tbmVz dCBhbGwgQjw+LCBJPD4sIFI8Pi4gIFRoZW9yZXRpY2FsbHkgd2UgY291bGQgaGF2ZQotICAgICMg aW5kZWZpbml0ZWx5IGRlZXAgbmVzdGluZzsgaW4gcHJhY3RpY2UsIG9uZSBsZXZlbCBzdWZmaWNl cy4KLSAgICAxIHdoaWxlIHMvKFtCSVJdKTwoW148Pl0qKShbQklSXSk8KFtePD5dKik+LyQxPCQy PiQzPCQ0PiQxPC9nOwotCi0gICAgIyBSZXBsYWNlIFI8Li4uPiB3aXRoIGJhcmUgLi4uOyBlbGlt aW5hdGUgZW1wdHkgbWFya3VwLCBCPD47Ci0gICAgIyBzaGlmdCB3aGl0ZSBzcGFjZSBhdCB0aGUg ZW5kcyBvZiBbQkldPC4uLj4gZXhwcmVzc2lvbnMgb3V0c2lkZQotICAgICMgdGhlIGV4cHJlc3Np b24uCi0gICAgcy9SPChbXjw+XSopPi8kMS9nOwotICAgIHMvW0JJXTw+Ly9nOwotICAgIHMvKFtC SV0pPChccyspKFtePl0rKT4vJDIkMTwkMz4vZzsKLSAgICBzLyhbQkldKTwoW14+XSs/KShccysp Pi8kMTwkMj4kMy9nOwotCi0gICAgIyBFeHRyYWN0IGZvb3Rub3Rlcy4gIFRoaXMgaGFzIHRvIGJl IGRvbmUgYWZ0ZXIgYWxsIG90aGVyCi0gICAgIyBwcm9jZXNzaW5nIGJlY2F1c2Ugb3RoZXJ3aXNl IHRoZSByZWdleHAgd2lsbCBjaG9rZSBvbiBmb3JtYXR0aW5nCi0gICAgIyBpbnNpZGUgQGZvb3Ru b3RlLgotICAgIHdoaWxlICgvXEBmb290bm90ZS9nKSB7Ci0Jcy9cQGZvb3Rub3RlXHsoW15cfV0r KVx9L1skZm5ub10vOwotCWFkZF9mb290bm90ZSgkMSwgJGZubm8pOwotCSRmbm5vKys7Ci0gICAg fQotCi0gICAgcmV0dXJuICRfOwotfQotCi1zdWIgdW5tdW5nZQotewotICAgICMgUmVwbGFjZSBl c2NhcGVkIHN5bWJvbHMgd2l0aCB0aGVpciBlcXVpdmFsZW50cy4KLSAgICBsb2NhbCAkXyA9ICRf WzBdOwotCi0gICAgcy8mbHQ7L0U8bHQ+L2c7Ci0gICAgcy8mZ3Q7L0U8Z3Q+L2c7Ci0gICAgcy8m bGJyYWNlOy9cey9nOwotICAgIHMvJnJicmFjZTsvXH0vZzsKLSAgICBzLyZhdDsvXEAvZzsKLSAg ICBzLyZhbXA7LyYvZzsKLSAgICByZXR1cm4gJF87Ci19Ci0KLXN1YiBhZGRfZm9vdG5vdGUKLXsK LSAgICB1bmxlc3MgKGV4aXN0cyAkc2VjdHN7Rk9PVE5PVEVTfSkgewotCSRzZWN0c3tGT09UTk9U RVN9ID0gIlxuPW92ZXIgNFxuXG4iOwotICAgIH0KLQotICAgICRzZWN0c3tGT09UTk9URVN9IC49 ICI9aXRlbSAkZm5uby5cblxuIjsgJGZubm8rKzsKLSAgICAkc2VjdHN7Rk9PVE5PVEVTfSAuPSAk X1swXTsKLSAgICAkc2VjdHN7Rk9PVE5PVEVTfSAuPSAiXG5cbiI7Ci19Ci0KLSMgc3RvbGVuIGZy b20gU3ltYm9sLnBtCi17Ci0gICAgbXkgJGdlbnNlcSA9IDA7Ci0gICAgc3ViIGdlbnN5bQotICAg IHsKLQlteSAkbmFtZSA9ICJHRU4iIC4gJGdlbnNlcSsrOwotCW15ICRyZWYgPSBcKnskbmFtZX07 Ci0JZGVsZXRlICQ6OnskbmFtZX07Ci0JcmV0dXJuICRyZWY7Ci0gICAgfQotfQpkaWZmIC0tZ2l0 IGEvdHJhY2V0b29sIGIvdHJhY2V0b29sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBm Y2U0OTFjLi4wMDAwMDAwCi0tLSBhL3RyYWNldG9vbAorKysgL2Rldi9udWxsCkBAIC0xLDU3MyAr MCwwIEBACi0jIS9iaW4vc2gKLSMKLSMgQ29kZSBnZW5lcmF0b3IgZm9yIHRyYWNlIGV2ZW50cwot IwotIyBDb3B5cmlnaHQgSUJNLCBDb3JwLiAyMDEwCi0jCi0jIFRoaXMgd29yayBpcyBsaWNlbnNl ZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHUEwsIHZlcnNpb24gMi4gIFNlZQotIyB0aGUg Q09QWUlORyBmaWxlIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LgotCi0jIERpc2FibGUgcGF0 aG5hbWUgZXhwYW5zaW9uLCBtYWtlcyBwcm9jZXNzaW5nIHRleHQgd2l0aCAnKicgY2hhcmFjdGVy cyBzaW1wbGVyCi1zZXQgLWYKLQotdXNhZ2UoKQotewotICAgIGNhdCA+JjIgPDxFT0YKLXVzYWdl OiAkMCBbLS1ub3AgfCAtLXNpbXBsZSB8IC0tdXN0XSBbLWggfCAtY10KLUdlbmVyYXRlIHRyYWNp bmcgY29kZSBmb3IgYSBmaWxlIG9uIHN0ZGluLgotCi1CYWNrZW5kczoKLSAgLS1ub3AgICAgIFRy YWNpbmcgZGlzYWJsZWQKLSAgLS1zaW1wbGUgIFNpbXBsZSBidWlsdC1pbiBiYWNrZW5kCi0gIC0t dXN0ICAgICBMVFRuZyBVc2VyIFNwYWNlIFRyYWNpbmcgYmFja2VuZAotICAtLWR0cmFjZSAgRFRy YWNlL1N5c3RlbVRBUCBiYWNrZW5kCi0KLU91dHB1dCBmb3JtYXRzOgotICAtaCAgICAgR2VuZXJh dGUgLmggZmlsZQotICAtYyAgICAgR2VuZXJhdGUgLmMgZmlsZQotICAtZCAgICAgR2VuZXJhdGUg LmQgZmlsZSAoRFRyYWNlIG9ubHkpCi0gIC0tc3RhcCBHZW5lcmF0ZSAuc3RwIGZpbGUgKERUcmFj ZSB3aXRoIFN5c3RlbVRBUCBvbmx5KQotCi1PcHRpb25zOgotICAtLWJpbmFyeSAgICAgIFtwYXRo XSAgRnVsbCBwYXRoIHRvIFFFTVUgYmluYXJ5Ci0gIC0tdGFyZ2V0LWFyY2ggW2FyY2hdICBRRU1V IGVtdWxhdG9yIHRhcmdldCBhcmNoCi0gIC0tdGFyZ2V0LXR5cGUgW3R5cGVdICBRRU1VIGVtdWxh dG9yIHRhcmdldCB0eXBlICgnc3lzdGVtJyBvciAndXNlcicpCi0KLUVPRgotICAgIGV4aXQgMQot fQotCi0jIEdldCB0aGUgbmFtZSBvZiBhIHRyYWNlIGV2ZW50Ci1nZXRfbmFtZSgpCi17Ci0gICAg ZWNobyAkezElJVwoKn0KLX0KLQotIyBHZXQgdGhlIGFyZ3VtZW50IGxpc3Qgb2YgYSB0cmFjZSBl dmVudCwgaW5jbHVkaW5nIHR5cGVzIGFuZCBuYW1lcwotZ2V0X2FyZ3MoKQotewotICAgIGxvY2Fs IGFyZ3MKLSAgICBhcmdzPSR7MSMqXCh9Ci0gICAgYXJncz0ke2FyZ3MlXCkqfQotICAgIGVjaG8g IiRhcmdzIgotfQotCi0jIEdldCB0aGUgYXJndW1lbnQgbmFtZSBsaXN0IG9mIGEgdHJhY2UgZXZl bnQKLWdldF9hcmduYW1lcygpCi17Ci0gICAgbG9jYWwgbmZpZWxkcyBmaWVsZCBuYW1lIHNlcAot ICAgIG5maWVsZHM9MAotICAgIHNlcD0iJDIiCi0gICAgZm9yIGZpZWxkIGluICQoZ2V0X2FyZ3Mg IiQxIik7IGRvCi0gICAgICAgIG5maWVsZHM9JCgobmZpZWxkcyArIDEpKQotCi0gICAgICAgICMg RHJvcCBwb2ludGVyIHN0YXIKLSAgICAgICAgZmllbGQ9JHtmaWVsZCNcKn0KLQotICAgICAgICAj IE9ubHkgYXJndW1lbnQgbmFtZXMgaGF2ZSBjb21tYXMgYXQgdGhlIGVuZAotICAgICAgICBuYW1l PSR7ZmllbGQlLH0KLSAgICAgICAgdGVzdCAiJGZpZWxkIiA9ICIkbmFtZSIgJiYgY29udGludWUK LQotICAgICAgICBwcmludGYgIiVzJXMgIiAkbmFtZSAkc2VwCi0gICAgZG9uZQotCi0gICAgIyBM YXN0IGFyZ3VtZW50IG5hbWUKLSAgICBpZiBbICIkbmZpZWxkcyIgLWd0IDEgXQotICAgIHRoZW4K LSAgICAgICAgcHJpbnRmICIlcyIgIiRuYW1lIgotICAgIGZpCi19Ci0KLSMgR2V0IHRoZSBudW1i ZXIgb2YgYXJndW1lbnRzIHRvIGEgdHJhY2UgZXZlbnQKLWdldF9hcmdjKCkKLXsKLSAgICBsb2Nh bCBuYW1lIGFyZ2MKLSAgICBhcmdjPTAKLSAgICBmb3IgbmFtZSBpbiAkKGdldF9hcmduYW1lcyAi JDEiLCAiLCIpOyBkbwotICAgICAgICBhcmdjPSQoKGFyZ2MgKyAxKSkKLSAgICBkb25lCi0gICAg ZWNobyAkYXJnYwotfQotCi0jIEdldCB0aGUgZm9ybWF0IHN0cmluZyBmb3IgYSB0cmFjZSBldmVu dAotZ2V0X2ZtdCgpCi17Ci0gICAgbG9jYWwgZm10Ci0gICAgZm10PSR7MSMqXCJ9Ci0gICAgZm10 PSR7Zm10JVwiKn0KLSAgICBlY2hvICIkZm10IgotfQotCi0jIEdldCB0aGUgc3RhdGUgb2YgYSB0 cmFjZSBldmVudAotZ2V0X3N0YXRlKCkKLXsKLSAgICBsb2NhbCBzdHIgZGlzYWJsZSBzdGF0ZQot ICAgIHN0cj0kKGdldF9uYW1lICIkMSIpCi0gICAgZGlzYWJsZT0ke3N0ciMjZGlzYWJsZSB9Ci0g ICAgaWYgWyAiJGRpc2FibGUiID0gIiRzdHIiIF0gOyB0aGVuCi0gICAgICAgIHN0YXRlPTEKLSAg ICBlbHNlCi0gICAgICAgIHN0YXRlPTAKLSAgICBmaQotICAgIGVjaG8gIiRzdGF0ZSIKLX0KLQot bGluZXRvaF9iZWdpbl9ub3AoKQotewotICAgIHJldHVybgotfQotCi1saW5ldG9oX25vcCgpCi17 Ci0gICAgbG9jYWwgbmFtZSBhcmdzCi0gICAgbmFtZT0kKGdldF9uYW1lICIkMSIpCi0gICAgYXJn cz0kKGdldF9hcmdzICIkMSIpCi0KLSAgICAjIERlZmluZSBhbiBlbXB0eSBmdW5jdGlvbiBmb3Ig dGhlIHRyYWNlIGV2ZW50Ci0gICAgY2F0IDw8RU9GCi1zdGF0aWMgaW5saW5lIHZvaWQgdHJhY2Vf JG5hbWUoJGFyZ3MpCi17Ci19Ci1FT0YKLX0KLQotbGluZXRvaF9lbmRfbm9wKCkKLXsKLSAgICBy ZXR1cm4KLX0KLQotbGluZXRvY19iZWdpbl9ub3AoKQotewotICAgIHJldHVybgotfQotCi1saW5l dG9jX25vcCgpCi17Ci0gICAgIyBObyBuZWVkIGZvciBmdW5jdGlvbiBkZWZpbml0aW9ucyBpbiBu b3AgYmFja2VuZAotICAgIHJldHVybgotfQotCi1saW5ldG9jX2VuZF9ub3AoKQotewotICAgIHJl dHVybgotfQotCi1saW5ldG9oX2JlZ2luX3NpbXBsZSgpCi17Ci0gICAgY2F0IDw8RU9GCi0jaW5j bHVkZSAic2ltcGxldHJhY2UuaCIKLUVPRgotCi0gICAgc2ltcGxlX2V2ZW50X251bT0wCi19Ci0K LWNhc3RfYXJnc190b191aW50NjRfdCgpCi17Ci0gICAgbG9jYWwgYXJnCi0gICAgZm9yIGFyZyBp biAkKGdldF9hcmduYW1lcyAiJDEiLCAiLCIpOyBkbwotICAgICAgICBwcmludGYgIiVzIiAiKHVp bnQ2NF90KSh1aW50cHRyX3QpJGFyZyIKLSAgICBkb25lCi19Ci0KLWxpbmV0b2hfc2ltcGxlKCkK LXsKLSAgICBsb2NhbCBuYW1lIGFyZ3MgYXJnYyB0cmFjZV9hcmdzIHN0YXRlCi0gICAgbmFtZT0k KGdldF9uYW1lICIkMSIpCi0gICAgYXJncz0kKGdldF9hcmdzICIkMSIpCi0gICAgYXJnYz0kKGdl dF9hcmdjICIkMSIpCi0gICAgc3RhdGU9JChnZXRfc3RhdGUgIiQxIikKLSAgICBpZiBbICIkc3Rh dGUiID0gIjAiIF07IHRoZW4KLSAgICAgICAgbmFtZT0ke25hbWUjI2Rpc2FibGUgfQotICAgIGZp Ci0KLSAgICB0cmFjZV9hcmdzPSIkc2ltcGxlX2V2ZW50X251bSIKLSAgICBpZiBbICIkYXJnYyIg LWd0IDAgXQotICAgIHRoZW4KLSAgICAgICAgdHJhY2VfYXJncz0iJHRyYWNlX2FyZ3MsICQoY2Fz dF9hcmdzX3RvX3VpbnQ2NF90ICIkMSIpIgotICAgIGZpCi0KLSAgICBjYXQgPDxFT0YKLXN0YXRp YyBpbmxpbmUgdm9pZCB0cmFjZV8kbmFtZSgkYXJncykKLXsKLSAgICB0cmFjZSRhcmdjKCR0cmFj ZV9hcmdzKTsKLX0KLUVPRgotCi0gICAgc2ltcGxlX2V2ZW50X251bT0kKChzaW1wbGVfZXZlbnRf bnVtICsgMSkpCi19Ci0KLWxpbmV0b2hfZW5kX3NpbXBsZSgpCi17Ci0gICAgY2F0IDw8RU9GCi0j ZGVmaW5lIE5SX1RSQUNFX0VWRU5UUyAkc2ltcGxlX2V2ZW50X251bQotZXh0ZXJuIFRyYWNlRXZl bnQgdHJhY2VfbGlzdFtOUl9UUkFDRV9FVkVOVFNdOwotRU9GCi19Ci0KLWxpbmV0b2NfYmVnaW5f c2ltcGxlKCkKLXsKLSAgICBjYXQgPDxFT0YKLSNpbmNsdWRlICJ0cmFjZS5oIgotCi1UcmFjZUV2 ZW50IHRyYWNlX2xpc3RbXSA9IHsKLUVPRgotICAgIHNpbXBsZV9ldmVudF9udW09MAotCi19Ci0K LWxpbmV0b2Nfc2ltcGxlKCkKLXsKLSAgICBsb2NhbCBuYW1lIHN0YXRlCi0gICAgbmFtZT0kKGdl dF9uYW1lICIkMSIpCi0gICAgc3RhdGU9JChnZXRfc3RhdGUgIiQxIikKLSAgICBpZiBbICIkc3Rh dGUiID0gIjAiIF0gOyB0aGVuCi0gICAgICAgIG5hbWU9JHtuYW1lIyNkaXNhYmxlIH0KLSAgICBm aQotICAgIGNhdCA8PEVPRgotey50cF9uYW1lID0gIiRuYW1lIiwgLnN0YXRlPSRzdGF0ZX0sCi1F T0YKLSAgICBzaW1wbGVfZXZlbnRfbnVtPSQoKHNpbXBsZV9ldmVudF9udW0gKyAxKSkKLX0KLQot bGluZXRvY19lbmRfc2ltcGxlKCkKLXsKLSAgICBjYXQgPDxFT0YKLX07Ci1FT0YKLX0KLQotIyBD bGVhbiB1cCBhZnRlciBVU1QgaGVhZGVycyB3aGljaCBwb2xsdXRlIHRoZSBuYW1lc3BhY2UKLXVz dF9jbGVhbl9uYW1lc3BhY2UoKSB7Ci0gICAgY2F0IDw8RU9GCi0jdW5kZWYgbXV0ZXhfbG9jawot I3VuZGVmIG11dGV4X3VubG9jawotI3VuZGVmIGlubGluZQotI3VuZGVmIHdtYgotRU9GCi19Ci0K LWxpbmV0b2hfYmVnaW5fdXN0KCkKLXsKLSAgICBlY2hvICIjaW5jbHVkZSA8dXN0L3RyYWNlcG9p bnQuaD4iCi0gICAgdXN0X2NsZWFuX25hbWVzcGFjZQotfQotCi1saW5ldG9oX3VzdCgpCi17Ci0g ICAgbG9jYWwgbmFtZSBhcmdzIGFyZ25hbWVzCi0gICAgbmFtZT0kKGdldF9uYW1lICIkMSIpCi0g ICAgYXJncz0kKGdldF9hcmdzICIkMSIpCi0gICAgYXJnbmFtZXM9JChnZXRfYXJnbmFtZXMgIiQx IiwgIiwiKQotCi0gICAgY2F0IDw8RU9GCi1ERUNMQVJFX1RSQUNFKHVzdF8kbmFtZSwgVFBfUFJP VE8oJGFyZ3MpLCBUUF9BUkdTKCRhcmduYW1lcykpOwotI2RlZmluZSB0cmFjZV8kbmFtZSB0cmFj ZV91c3RfJG5hbWUKLUVPRgotfQotCi1saW5ldG9oX2VuZF91c3QoKQotewotICAgIHJldHVybgot fQotCi1saW5ldG9jX2JlZ2luX3VzdCgpCi17Ci0gICAgY2F0IDw8RU9GCi0jaW5jbHVkZSA8dXN0 L21hcmtlci5oPgotJCh1c3RfY2xlYW5fbmFtZXNwYWNlKQotI2luY2x1ZGUgInRyYWNlLmgiCi1F T0YKLX0KLQotbGluZXRvY191c3QoKQotewotICAgIGxvY2FsIG5hbWUgYXJncyBhcmduYW1lcyBm bXQKLSAgICBuYW1lPSQoZ2V0X25hbWUgIiQxIikKLSAgICBhcmdzPSQoZ2V0X2FyZ3MgIiQxIikK LSAgICBhcmduYW1lcz0kKGdldF9hcmduYW1lcyAiJDEiLCAiLCIpCi0gICAgZm10PSQoZ2V0X2Zt dCAiJDEiKQotCi0gICAgY2F0IDw8RU9GCi1ERUZJTkVfVFJBQ0UodXN0XyRuYW1lKTsKLQotc3Rh dGljIHZvaWQgdXN0XyR7bmFtZX1fcHJvYmUoJGFyZ3MpCi17Ci0gICAgdHJhY2VfbWFyayh1c3Qs ICRuYW1lLCAiJGZtdCIsICRhcmduYW1lcyk7Ci19Ci1FT0YKLQotICAgICMgQ29sbGVjdCBuYW1l cyBmb3IgbGF0ZXIKLSAgICBuYW1lcz0iJG5hbWVzICRuYW1lIgotfQotCi1saW5ldG9jX2VuZF91 c3QoKQotewotICAgIGNhdCA8PEVPRgotc3RhdGljIHZvaWQgX19hdHRyaWJ1dGVfXygoY29uc3Ry dWN0b3IpKSB0cmFjZV9pbml0KHZvaWQpCi17Ci1FT0YKLQotICAgIGZvciBuYW1lIGluICRuYW1l czsgZG8KLSAgICAgICAgY2F0IDw8RU9GCi0gICAgcmVnaXN0ZXJfdHJhY2VfdXN0XyRuYW1lKHVz dF8ke25hbWV9X3Byb2JlKTsKLUVPRgotICAgIGRvbmUKLQotICAgIGVjaG8gIn0iCi19Ci0KLWxp bmV0b2hfYmVnaW5fZHRyYWNlKCkKLXsKLSAgICBjYXQgPDxFT0YKLSNpbmNsdWRlICJ0cmFjZS1k dHJhY2UuaCIKLUVPRgotfQotCi1saW5ldG9oX2R0cmFjZSgpCi17Ci0gICAgbG9jYWwgbmFtZSBh cmdzIGFyZ25hbWVzIHN0YXRlIG5hbWV1cHBlcgotICAgIG5hbWU9JChnZXRfbmFtZSAiJDEiKQot ICAgIGFyZ3M9JChnZXRfYXJncyAiJDEiKQotICAgIGFyZ25hbWVzPSQoZ2V0X2FyZ25hbWVzICIk MSIsICIsIikKLSAgICBzdGF0ZT0kKGdldF9zdGF0ZSAiJDEiKQotICAgIGlmIFsgIiRzdGF0ZSIg PSAiMCIgXSA7IHRoZW4KLSAgICAgICAgbmFtZT0ke25hbWUjI2Rpc2FibGUgfQotICAgIGZpCi0K LSAgICBuYW1ldXBwZXI9YGVjaG8gJG5hbWUgfCB0ciAnWzpsb3dlcjpdJyAnWzp1cHBlcjpdJ2AK LQotICAgICMgRGVmaW5lIGFuIGVtcHR5IGZ1bmN0aW9uIGZvciB0aGUgdHJhY2UgZXZlbnQKLSAg ICBjYXQgPDxFT0YKLXN0YXRpYyBpbmxpbmUgdm9pZCB0cmFjZV8kbmFtZSgkYXJncykgewotICAg IGlmIChRRU1VXyR7bmFtZXVwcGVyfV9FTkFCTEVEKCkpIHsKLSAgICAgICAgUUVNVV8ke25hbWV1 cHBlcn0oJGFyZ25hbWVzKTsKLSAgICB9Ci19Ci1FT0YKLX0KLQotbGluZXRvaF9lbmRfZHRyYWNl KCkKLXsKLSAgICByZXR1cm4KLX0KLQotbGluZXRvY19iZWdpbl9kdHJhY2UoKQotewotICAgIHJl dHVybgotfQotCi1saW5ldG9jX2R0cmFjZSgpCi17Ci0gICAgIyBObyBuZWVkIGZvciBmdW5jdGlv biBkZWZpbml0aW9ucyBpbiBkdHJhY2UgYmFja2VuZAotICAgIHJldHVybgotfQotCi1saW5ldG9j X2VuZF9kdHJhY2UoKQotewotICAgIHJldHVybgotfQotCi1saW5ldG9kX2JlZ2luX2R0cmFjZSgp Ci17Ci0gICAgY2F0IDw8RU9GCi1wcm92aWRlciBxZW11IHsKLUVPRgotfQotCi1saW5ldG9kX2R0 cmFjZSgpCi17Ci0gICAgbG9jYWwgbmFtZSBhcmdzIHN0YXRlCi0gICAgbmFtZT0kKGdldF9uYW1l ICIkMSIpCi0gICAgYXJncz0kKGdldF9hcmdzICIkMSIpCi0gICAgc3RhdGU9JChnZXRfc3RhdGUg IiQxIikKLSAgICBpZiBbICIkc3RhdGUiID0gIjAiIF0gOyB0aGVuCi0gICAgICAgIG5hbWU9JHtu YW1lIyNkaXNhYmxlIH0KLSAgICBmaQotCi0gICAgIyBEVHJhY2UgcHJvdmlkZXIgc3ludGF4IGV4 cGVjdHMgZm9vKCkgZm9yIGVtcHR5Ci0gICAgIyBwYXJhbXMsIG5vdCBmb28odm9pZCkKLSAgICBp ZiBbICIkYXJncyIgPSAidm9pZCIgXTsgdGhlbgotICAgICAgIGFyZ3M9IiIKLSAgICBmaQotCi0g ICAgIyBEZWZpbmUgcHJvdG90eXBlIGZvciBwcm9iZSBhcmd1bWVudHMKLSAgICBjYXQgPDxFT0YK LSAgICAgICAgcHJvYmUgJG5hbWUoJGFyZ3MpOwotRU9GCi19Ci0KLWxpbmV0b2RfZW5kX2R0cmFj ZSgpCi17Ci0gICAgY2F0IDw8RU9GCi19OwotRU9GCi19Ci0KLWxpbmV0b3N0YXBfYmVnaW5fZHRy YWNlKCkKLXsKLSAgICByZXR1cm4KLX0KLQotbGluZXRvc3RhcF9kdHJhY2UoKQotewotICAgIGxv Y2FsIGkgYXJnIG5hbWUgYXJncyBhcmdsaXN0IHN0YXRlCi0gICAgbmFtZT0kKGdldF9uYW1lICIk MSIpCi0gICAgYXJncz0kKGdldF9hcmdzICIkMSIpCi0gICAgYXJnbGlzdD0kKGdldF9hcmduYW1l cyAiJDEiLCAiIikKLSAgICBzdGF0ZT0kKGdldF9zdGF0ZSAiJDEiKQotICAgIGlmIFsgIiRzdGF0 ZSIgPSAiMCIgXSA7IHRoZW4KLSAgICAgICAgbmFtZT0ke25hbWUjI2Rpc2FibGUgfQotICAgIGZp Ci0KLSAgICAjIERlZmluZSBwcm90b3R5cGUgZm9yIHByb2JlIGFyZ3VtZW50cwotICAgIGNhdCA8 PEVPRgotcHJvYmUgcWVtdS4kdGFyZ2V0dHlwZS4kdGFyZ2V0YXJjaC4kbmFtZSA9IHByb2Nlc3Mo IiRiaW5hcnkiKS5tYXJrKCIkbmFtZSIpCi17Ci1FT0YKLQotICAgIGk9MQotICAgIGZvciBhcmcg aW4gJGFyZ2xpc3QKLSAgICBkbwotICAgICAgICAjICdsaW1pdCcgaXMgYSByZXNlcnZlZCBrZXl3 b3JkCi0gICAgICAgIGlmIFsgIiRhcmciID0gImxpbWl0IiBdOyB0aGVuCi0gICAgICAgICAgYXJn PSJfbGltaXQiCi0gICAgICAgIGZpCi0gICAgICAgIGNhdCA8PEVPRgotICAkYXJnID0gXCRhcmck aTsKLUVPRgotCWk9IiQoKGkrMSkpIgotICAgIGRvbmUKLQotICAgIGNhdCA8PEVPRgotfQotRU9G Ci19Ci0KLWxpbmV0b3N0YXBfZW5kX2R0cmFjZSgpCi17Ci0gICAgcmV0dXJuCi19Ci0KLSMgUHJv Y2VzcyBzdGRpbiBieSBjYWxsaW5nIGJlZ2luLCBsaW5lLCBhbmQgZW5kIGZ1bmN0aW9ucyBmb3Ig dGhlIGJhY2tlbmQKLWNvbnZlcnQoKQotewotICAgIGxvY2FsIGJlZ2luIHByb2Nlc3NfbGluZSBl bmQgc3RyIGRpc2FibGUKLSAgICBiZWdpbj0ibGluZXRvJDFfYmVnaW5fJGJhY2tlbmQiCi0gICAg cHJvY2Vzc19saW5lPSJsaW5ldG8kMV8kYmFja2VuZCIKLSAgICBlbmQ9ImxpbmV0byQxX2VuZF8k YmFja2VuZCIKLQotICAgICIkYmVnaW4iCi0KLSAgICB3aGlsZSByZWFkIC1yIHN0cjsgZG8KLSAg ICAgICAgIyBTa2lwIGNvbW1lbnRzIGFuZCBlbXB0eSBsaW5lcwotICAgICAgICB0ZXN0IC16ICIk e3N0ciUlIyp9IiAmJiBjb250aW51ZQotCi0gICAgICAgICMgUHJvY2VzcyB0aGUgbGluZS4gIFRo ZSBub3AgYmFja2VuZCBoYW5kbGVzIGRpc2FibGVkIGxpbmVzLgotICAgICAgICBkaXNhYmxlPSR7 c3RyJSVkaXNhYmxlICp9Ci0gICAgICAgIGVjaG8KLSAgICAgICAgaWYgdGVzdCAteiAiJGRpc2Fi bGUiOyB0aGVuCi0gICAgICAgICAgICAjIFBhc3MgdGhlIGRpc2FibGVkIHN0YXRlIGFzIGFuIGFy ZyBmb3IgdGhlIHNpbXBsZQotICAgICAgICAgICAgIyBvciBEVHJhY2UgYmFja2VuZHMgd2hpY2gg aGFuZGxlIGl0IGR5bmFtaWNhbGx5LgotICAgICAgICAgICAgIyBGb3IgYWxsIG90aGVyIGJhY2tl bmRzLCBjYWxsIGxpbmV0byQxX25vcCgpCi0gICAgICAgICAgICBpZiBbICRiYWNrZW5kID0gInNp bXBsZSIgLW8gIiRiYWNrZW5kIiA9ICJkdHJhY2UiIF07IHRoZW4KLSAgICAgICAgICAgICAgICAi JHByb2Nlc3NfbGluZSIgIiRzdHIiCi0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg ImxpbmV0byQxX25vcCIgIiR7c3RyIyNkaXNhYmxlIH0iCi0gICAgICAgICAgICBmaQotICAgICAg ICBlbHNlCi0gICAgICAgICAgICAiJHByb2Nlc3NfbGluZSIgIiRzdHIiCi0gICAgICAgIGZpCi0g ICAgZG9uZQotCi0gICAgZWNobwotICAgICIkZW5kIgotfQotCi10cmFjZXRvaCgpCi17Ci0gICAg Y2F0IDw8RU9GCi0jaWZuZGVmIFRSQUNFX0gKLSNkZWZpbmUgVFJBQ0VfSAotCi0vKiBUaGlzIGZp bGUgaXMgYXV0b2dlbmVyYXRlZCBieSB0cmFjZXRvb2wsIGRvIG5vdCBlZGl0LiAqLwotCi0jaW5j bHVkZSAicWVtdS1jb21tb24uaCIKLUVPRgotICAgIGNvbnZlcnQgaAotICAgIGVjaG8gIiNlbmRp ZiAvKiBUUkFDRV9IICovIgotfQotCi10cmFjZXRvYygpCi17Ci0gICAgZWNobyAiLyogVGhpcyBm aWxlIGlzIGF1dG9nZW5lcmF0ZWQgYnkgdHJhY2V0b29sLCBkbyBub3QgZWRpdC4gKi8iCi0gICAg Y29udmVydCBjCi19Ci0KLXRyYWNldG9kKCkKLXsKLSAgICBpZiBbICRiYWNrZW5kICE9ICJkdHJh Y2UiIF07IHRoZW4KLSAgICAgICBlY2hvICJEVHJhY2UgcHJvYmUgZ2VuZXJhdG9yIG5vdCBhcHBs aWNhYmxlIHRvICRiYWNrZW5kIGJhY2tlbmQiCi0gICAgICAgZXhpdCAxCi0gICAgZmkKLSAgICBl Y2hvICIvKiBUaGlzIGZpbGUgaXMgYXV0b2dlbmVyYXRlZCBieSB0cmFjZXRvb2wsIGRvIG5vdCBl ZGl0LiAqLyIKLSAgICBjb252ZXJ0IGQKLX0KLQotdHJhY2V0b3N0YXAoKQotewotICAgIGlmIFsg JGJhY2tlbmQgIT0gImR0cmFjZSIgXTsgdGhlbgotICAgICAgIGVjaG8gIlN5c3RlbVRBUCB0YXBz ZXQgZ2VuZXJhdG9yIG5vdCBhcHBsaWNhYmxlIHRvICRiYWNrZW5kIGJhY2tlbmQiCi0gICAgICAg ZXhpdCAxCi0gICAgZmkKLSAgICBpZiBbIC16ICIkYmluYXJ5IiBdOyB0aGVuCi0gICAgICAgZWNo byAiLS1iaW5hcnkgaXMgcmVxdWlyZWQgZm9yIFN5c3RlbVRBUCB0YXBzZXQgZ2VuZXJhdG9yIgot ICAgICAgIGV4aXQgMQotICAgIGZpCi0gICAgaWYgWyAteiAiJHRhcmdldHR5cGUiIF07IHRoZW4K LSAgICAgICBlY2hvICItLXRhcmdldC10eXBlIGlzIHJlcXVpcmVkIGZvciBTeXN0ZW1UQVAgdGFw c2V0IGdlbmVyYXRvciIKLSAgICAgICBleGl0IDEKLSAgICBmaQotICAgIGlmIFsgLXogIiR0YXJn ZXRhcmNoIiBdOyB0aGVuCi0gICAgICAgZWNobyAiLS10YXJnZXQtYXJjaCBpcyByZXF1aXJlZCBm b3IgU3lzdGVtVEFQIHRhcHNldCBnZW5lcmF0b3IiCi0gICAgICAgZXhpdCAxCi0gICAgZmkKLSAg ICBlY2hvICIvKiBUaGlzIGZpbGUgaXMgYXV0b2dlbmVyYXRlZCBieSB0cmFjZXRvb2wsIGRvIG5v dCBlZGl0LiAqLyIKLSAgICBjb252ZXJ0IHN0YXAKLX0KLQotCi1iYWNrZW5kPQotb3V0cHV0PQot YmluYXJ5PQotdGFyZ2V0dHlwZT0KLXRhcmdldGFyY2g9Ci0KLQotdW50aWwgWyAteiAiJDEiIF0K LWRvCi0gIGNhc2UgIiQxIiBpbgotICAgICItLW5vcCIgfCAiLS1zaW1wbGUiIHwgIi0tdXN0IiB8 ICItLWR0cmFjZSIpIGJhY2tlbmQ9IiR7MSMtLX0iIDs7Ci0KLSAgICAiLS1iaW5hcnkiKSBzaGlm dCA7IGJpbmFyeT0iJDEiIDs7Ci0gICAgIi0tdGFyZ2V0LWFyY2giKSBzaGlmdCA7IHRhcmdldGFy Y2g9IiQxIiA7OwotICAgICItLXRhcmdldC10eXBlIikgc2hpZnQgOyB0YXJnZXR0eXBlPSIkMSIg OzsKLQotICAgICItaCIgfCAiLWMiIHwgIi1kIikgb3V0cHV0PSIkezEjLX0iIDs7Ci0gICAgIi0t c3RhcCIpIG91dHB1dD0iJHsxIy0tfSIgOzsKLQotICAgICItLWNoZWNrLWJhY2tlbmQiKSBleGl0 IDAgOzsgIyB1c2VkIGJ5IC4vY29uZmlndXJlIHRvIHRlc3QgZm9yIGJhY2tlbmQKLQotICAgICop Ci0gICAgICB1c2FnZTs7Ci0gIGVzYWMKLSAgc2hpZnQKLWRvbmUKLQotaWYgWyAiJGJhY2tlbmQi ID0gIiIgLW8gIiRvdXRwdXQiID0gIiIgXTsgdGhlbgotICB1c2FnZQotZmkKLQotZ2VuPSJ0cmFj ZXRvJG91dHB1dCIKLSIkZ2VuIgotCi1leGl0IDAKLS0gCjEuNS42LjUKCg== --001636e0b3f9210a540499e6166c--