<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>28379</bug_id>
          
          <creation_ts>2009-08-16 22:30:07 -0700</creation_ts>
          <short_desc>Script to create element factory needs changes to accommodate calling create</short_desc>
          <delta_ts>2019-02-06 09:03:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>cdumez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>140665</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-16 22:30:07 -0700</bug_when>
    <thetext>The make_names.pl needs to be changed so it understands how to call create functions rather than calling &quot;new&quot; directly. And it can be cleaned up quite a bit while doing so. Later, I will change the default setting on this and use it to start making constructors private and use create functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140666</commentid>
    <comment_count>1</comment_count>
      <attachid>34952</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-16 22:44:30 -0700</bug_when>
    <thetext>Created attachment 34952
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140667</commentid>
    <comment_count>2</comment_count>
      <attachid>34953</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-16 22:51:56 -0700</bug_when>
    <thetext>Created attachment 34953
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140681</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-17 00:10:54 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/47351</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502893</commentid>
    <comment_count>4</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:03:03 -0800</bug_when>
    <thetext>Mass moving XML DOM bugs to the &quot;DOM&quot; Component.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34952</attachid>
            <date>2009-08-16 22:44:30 -0700</date>
            <delta_ts>2009-08-16 22:51:56 -0700</delta_ts>
            <desc>patch</desc>
            <filename>FactoryPatch.txt</filename>
            <type>text/plain</type>
            <size>37426</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NzM1MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMDktMDgtMTYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNjcmlw
dCB0byBjcmVhdGUgZWxlbWVudCBmYWN0b3J5IG5lZWRzIGNoYW5nZXMgdG8gYWNjb21tb2RhdGUg
Y2FsbGluZyBjcmVhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI4Mzc5CisKKyAgICAgICAgKiBkb20vbWFrZV9uYW1lcy5wbDogVHdlYWsgZm9ybWF0
dGluZy4gUmVtb3ZlIGxvdHMgb2YgdW5uZWVkZWQgcXVvdGVzCisgICAgICAgIGFyb3VuZCBuYW1l
cyB1c2VkIGluc2lkZSB7fS4gQWRkZWQgbmV3IGNyZWF0ZVdpdGhOZXcgcHJvcGVydHkgZm9yIHRh
Z3MKKyAgICAgICAgdGhhdCBtYWtlcyB0aGUgZmFjdG9yeSB1c2UgYSBjcmVhdGUgZnVuY3Rpb24g
aW5zdGVhZCBvZiBjYWxsaW5nIG5ldy4KKyAgICAgICAgUmVuYW1lZCBmdW5jdGlvbnMgd2l0aCBp
bml0aWFsaXplIGluIHRoZWlyIG5hbWUgdG8gaGF2ZSBkZWZhdWx0IGluIHRoZWlyCisgICAgICAg
IG5hbWUsIHNpbmNlIHRoZXkgcmV0dXJuIGFuIGFycmF5IGZ1bGwgb2YgZGVmYXVsdCB2YWx1ZXMg
YW5kIGRvbid0IHRoZW1zZWx2ZXMKKyAgICAgICAgaW5pdGlhbGl6ZSBhbnl0aGluZy4KKwogMjAw
OS0wOC0xNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFuIEJlcm5zdGVpbi4KSW5kZXg6IFdlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAkocmV2aXNpb24gNDczMTIpCisr
KyBXZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCSh3b3JraW5nIGNvcHkpCkBAIC00OCwyOCArNDgs
MzAgQEAgbXkgJXBhcmFtZXRlcnMgPSAoKTsKIG15ICRleHRyYURlZmluZXMgPSAwOwogbXkgJHBy
ZXByb2Nlc3NvciA9ICIvdXNyL2Jpbi9nY2MgLUUgLVAgLXggYysrIjsKIAotR2V0T3B0aW9ucygn
dGFncz1zJyA9PiBcJHRhZ3NGaWxlLCAKK0dldE9wdGlvbnMoCisgICAgJ3RhZ3M9cycgPT4gXCR0
YWdzRmlsZSwgCiAgICAgJ2F0dHJzPXMnID0+IFwkYXR0cnNGaWxlLAogICAgICdmYWN0b3J5JyA9
PiBcJHByaW50RmFjdG9yeSwKICAgICAnb3V0cHV0RGlyPXMnID0+IFwkb3V0cHV0RGlyLAogICAg
ICdleHRyYURlZmluZXM9cycgPT4gXCRleHRyYURlZmluZXMsCiAgICAgJ3ByZXByb2Nlc3Nvcj1z
JyA9PiBcJHByZXByb2Nlc3NvciwKLSAgICAnd3JhcHBlckZhY3RvcnknID0+IFwkcHJpbnRXcmFw
cGVyRmFjdG9yeSk7CisgICAgJ3dyYXBwZXJGYWN0b3J5JyA9PiBcJHByaW50V3JhcHBlckZhY3Rv
cnkKKyk7CiAKIGRpZSAiWW91IG11c3Qgc3BlY2lmeSBhdCBsZWFzdCBvbmUgb2YgLS10YWdzIDxm
aWxlPiBvciAtLWF0dHJzIDxmaWxlPiIgdW5sZXNzIChsZW5ndGgoJHRhZ3NGaWxlKSB8fCBsZW5n
dGgoJGF0dHJzRmlsZSkpOwogCiByZWFkTmFtZXMoJHRhZ3NGaWxlLCAidGFncyIpIGlmIGxlbmd0
aCgkdGFnc0ZpbGUpOwogcmVhZE5hbWVzKCRhdHRyc0ZpbGUsICJhdHRycyIpIGlmIGxlbmd0aCgk
YXR0cnNGaWxlKTsKIAotZGllICJZb3UgbXVzdCBzcGVjaWZ5IGEgbmFtZXNwYWNlIChlLmcuIFNW
RykgZm9yIDxuYW1lc3BhY2U+TmFtZXMuaCIgdW5sZXNzICRwYXJhbWV0ZXJzeyduYW1lc3BhY2Un
fTsKLWRpZSAiWW91IG11c3Qgc3BlY2lmeSBhIG5hbWVzcGFjZVVSSSAoZS5nLiBodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZykiIHVubGVzcyAkcGFyYW1ldGVyc3snbmFtZXNwYWNlVVJJJ307Citk
aWUgIllvdSBtdXN0IHNwZWNpZnkgYSBuYW1lc3BhY2UgKGUuZy4gU1ZHKSBmb3IgPG5hbWVzcGFj
ZT5OYW1lcy5oIiB1bmxlc3MgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfTsKK2RpZSAiWW91IG11c3Qg
c3BlY2lmeSBhIG5hbWVzcGFjZVVSSSAoZS5nLiBodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyki
IHVubGVzcyAkcGFyYW1ldGVyc3tuYW1lc3BhY2VVUkl9OwogCi0kcGFyYW1ldGVyc3snbmFtZXNw
YWNlUHJlZml4J30gPSAkcGFyYW1ldGVyc3snbmFtZXNwYWNlJ30gdW5sZXNzICRwYXJhbWV0ZXJz
eyduYW1lc3BhY2VQcmVmaXgnfTsKKyRwYXJhbWV0ZXJze25hbWVzcGFjZVByZWZpeH0gPSAkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9IHVubGVzcyAkcGFyYW1ldGVyc3tuYW1lc3BhY2VQcmVmaXh9Owog
CiBta3BhdGgoJG91dHB1dERpcik7Ci1teSAkbmFtZXNCYXNlUGF0aCA9ICIkb3V0cHV0RGlyLyRw
YXJhbWV0ZXJzeyduYW1lc3BhY2UnfU5hbWVzIjsKLW15ICRmYWN0b3J5QmFzZVBhdGggPSAiJG91
dHB1dERpci8kcGFyYW1ldGVyc3snbmFtZXNwYWNlJ31FbGVtZW50RmFjdG9yeSI7Ci1teSAkd3Jh
cHBlckZhY3RvcnlCYXNlUGF0aCA9ICIkb3V0cHV0RGlyL0pTJHBhcmFtZXRlcnN7J25hbWVzcGFj
ZSd9RWxlbWVudFdyYXBwZXJGYWN0b3J5IjsKK215ICRuYW1lc0Jhc2VQYXRoID0gIiRvdXRwdXRE
aXIvJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVzIjsKK215ICRmYWN0b3J5QmFzZVBhdGggPSAi
JG91dHB1dERpci8kcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudEZhY3RvcnkiOworbXkgJHdy
YXBwZXJGYWN0b3J5QmFzZVBhdGggPSAiJG91dHB1dERpci9KUyRwYXJhbWV0ZXJze25hbWVzcGFj
ZX1FbGVtZW50V3JhcHBlckZhY3RvcnkiOwogCiBwcmludE5hbWVzSGVhZGVyRmlsZSgiJG5hbWVz
QmFzZVBhdGguaCIpOwogcHJpbnROYW1lc0NwcEZpbGUoIiRuYW1lc0Jhc2VQYXRoLmNwcCIpOwpA
QCAtODYsMzkgKzg4LDQ0IEBAIGlmICgkcHJpbnRXcmFwcGVyRmFjdG9yeSkgewogCiAjIyMgSGFz
aCBpbml0aWFsaXphdGlvbgogCi1zdWIgaW5pdGlhbGl6ZVRhZ1Byb3BlcnR5SGFzaAorc3ViIGRl
ZmF1bHRUYWdQcm9wZXJ0eUhhc2gKIHsKLSAgICByZXR1cm4gKCdjb25zdHJ1Y3Rvck5lZWRzQ3Jl
YXRlZEJ5UGFyc2VyJyA9PiAwLAotICAgICAgICAgICAgJ2NvbnN0cnVjdG9yTmVlZHNGb3JtRWxl
bWVudCcgPT4gMCwKLSAgICAgICAgICAgICdleHBvcnRTdHJpbmcnID0+IDAsCi0gICAgICAgICAg
ICAnaW50ZXJmYWNlTmFtZScgPT4gZGVmYXVsdEludGVyZmFjZU5hbWUoJF9bMF0pLAotICAgICAg
ICAgICAgIyBCeSBkZWZhdWx0LCB0aGUgSlNJbnRlcmZhY2VOYW1lIGlzIHRoZSBzYW1lIGFzIHRo
ZSBpbnRlcmZhY2VOYW1lLgotICAgICAgICAgICAgJ0pTSW50ZXJmYWNlTmFtZScgPT4gZGVmYXVs
dEludGVyZmFjZU5hbWUoJF9bMF0pLAotICAgICAgICAgICAgJ21hcFRvVGFnTmFtZScgPT4gJycs
Ci0gICAgICAgICAgICAnd3JhcHBlck9ubHlJZk1lZGlhSXNBdmFpbGFibGUnID0+IDAsCi0gICAg
ICAgICAgICAnY29uZGl0aW9uYWwnID0+IDApOworICAgIHJldHVybiAoCisgICAgICAgICdjb25z
dHJ1Y3Rvck5lZWRzQ3JlYXRlZEJ5UGFyc2VyJyA9PiAwLAorICAgICAgICAnY29uc3RydWN0b3JO
ZWVkc0Zvcm1FbGVtZW50JyA9PiAwLAorICAgICAgICAnY3JlYXRlV2l0aE5ldycgPT4gMSwKKyAg
ICAgICAgJ2V4cG9ydFN0cmluZycgPT4gMCwKKyAgICAgICAgJ2ludGVyZmFjZU5hbWUnID0+IGRl
ZmF1bHRJbnRlcmZhY2VOYW1lKCRfWzBdKSwKKyAgICAgICAgIyBCeSBkZWZhdWx0LCB0aGUgSlNJ
bnRlcmZhY2VOYW1lIGlzIHRoZSBzYW1lIGFzIHRoZSBpbnRlcmZhY2VOYW1lLgorICAgICAgICAn
SlNJbnRlcmZhY2VOYW1lJyA9PiBkZWZhdWx0SW50ZXJmYWNlTmFtZSgkX1swXSksCisgICAgICAg
ICdtYXBUb1RhZ05hbWUnID0+ICcnLAorICAgICAgICAnd3JhcHBlck9ubHlJZk1lZGlhSXNBdmFp
bGFibGUnID0+IDAsCisgICAgICAgICdjb25kaXRpb25hbCcgPT4gMAorICAgICk7CiB9CiAKLXN1
YiBpbml0aWFsaXplQXR0clByb3BlcnR5SGFzaAorc3ViIGRlZmF1bHRBdHRyUHJvcGVydHlIYXNo
CiB7CiAgICAgcmV0dXJuICgnZXhwb3J0U3RyaW5nJyA9PiAwKTsKIH0KIAotc3ViIGluaXRpYWxp
emVQYXJhbWV0ZXJzSGFzaAorc3ViIGRlZmF1bHRQYXJhbWV0ZXJzSGFzaAogewotICAgIHJldHVy
biAoJ25hbWVzcGFjZScgPT4gJycsCi0gICAgICAgICAgICAnbmFtZXNwYWNlUHJlZml4JyA9PiAn
JywKLSAgICAgICAgICAgICduYW1lc3BhY2VVUkknID0+ICcnLAotICAgICAgICAgICAgJ2d1YXJk
RmFjdG9yeVdpdGgnID0+ICcnLAotICAgICAgICAgICAgJ3RhZ3NOdWxsTmFtZXNwYWNlJyA9PiAw
LAotICAgICAgICAgICAgJ2F0dHJzTnVsbE5hbWVzcGFjZScgPT4gMCwKLSAgICAgICAgICAgICdl
eHBvcnRTdHJpbmdzJyA9PiAwKTsKKyAgICByZXR1cm4gKAorICAgICAgICAnbmFtZXNwYWNlJyA9
PiAnJywKKyAgICAgICAgJ25hbWVzcGFjZVByZWZpeCcgPT4gJycsCisgICAgICAgICduYW1lc3Bh
Y2VVUkknID0+ICcnLAorICAgICAgICAnZ3VhcmRGYWN0b3J5V2l0aCcgPT4gJycsCisgICAgICAg
ICd0YWdzTnVsbE5hbWVzcGFjZScgPT4gMCwKKyAgICAgICAgJ2F0dHJzTnVsbE5hbWVzcGFjZScg
PT4gMCwKKyAgICAgICAgJ2V4cG9ydFN0cmluZ3MnID0+IDAKKyAgICApOwogfQogCiBzdWIgZGVm
YXVsdEludGVyZmFjZU5hbWUKIHsKLSAgICBkaWUgIk5vIG5hbWVzcGFjZSBmb3VuZCIgaWYgISRw
YXJhbWV0ZXJzeyduYW1lc3BhY2UnfTsKLSAgICByZXR1cm4gJHBhcmFtZXRlcnN7J25hbWVzcGFj
ZSd9IC4gdXBwZXJDYXNlTmFtZSgkX1swXSkgLiAiRWxlbWVudCIKKyAgICBkaWUgIk5vIG5hbWVz
cGFjZSBmb3VuZCIgaWYgISRwYXJhbWV0ZXJze25hbWVzcGFjZX07CisgICAgcmV0dXJuICRwYXJh
bWV0ZXJze25hbWVzcGFjZX0gLiB1cHBlckNhc2VOYW1lKCRfWzBdKSAuICJFbGVtZW50IgogfQog
CiAjIyMgUGFyc2luZyBoYW5kbGVycwpAQCAtMTI5LDE3ICsxMzYsMTYgQEAgc3ViIHRhZ3NIYW5k
bGVyCiAKICAgICAkdGFnID1+IHMvLS9fL2c7CiAKLSAgICAjIEluaXRpYWxpemUgZGVmYXVsdCBw
cm9wZXJ0aWVzJyB2YWx1ZXMuCi0gICAgJHRhZ3N7JHRhZ30gPSB7IGluaXRpYWxpemVUYWdQcm9w
ZXJ0eUhhc2goJHRhZykgfSBpZiAhZGVmaW5lZCgkdGFnc3skdGFnfSk7CisgICAgIyBJbml0aWFs
aXplIGRlZmF1bHQgcHJvcGVydHkgdmFsdWVzLgorICAgICR0YWdzeyR0YWd9ID0geyBkZWZhdWx0
VGFnUHJvcGVydHlIYXNoKCR0YWcpIH0gaWYgIWRlZmluZWQoJHRhZ3N7JHRhZ30pOwogCiAgICAg
aWYgKCRwcm9wZXJ0eSkgewogICAgICAgICBkaWUgIlVua25vd24gcHJvcGVydHkgJHByb3BlcnR5
IGZvciB0YWcgJHRhZ1xuIiBpZiAhZGVmaW5lZCgkdGFnc3skdGFnfXskcHJvcGVydHl9KTsKLSAg
ICAgICAgIyBUaGUgY29kZSByZWx5IG9uIEpTSW50ZXJmYWNlTmFtZSBkZXJpdmluZyBmcm9tIGlu
dGVyZmFjZU5hbWUgdG8gY2hlY2sgZm9yIGN1c3RvbSBKU0ludGVyZmFjZU5hbWUuCi0gICAgICAg
ICMgU28ganVzdCBvdmVycmlkZSBKU0ludGVyZmFjZU5hbWUgaWYgaXQgd2FzIG5vdCBhbHJlYWR5
IHNldC4KLSAgICAgICAgaWYgKCRwcm9wZXJ0eSBlcSAiaW50ZXJmYWNlTmFtZSIgJiYgJHRhZ3N7
JHRhZ317J0pTSW50ZXJmYWNlTmFtZSd9IGVxICR0YWdzeyR0YWd9eydpbnRlcmZhY2VOYW1lJ30p
IHsKLSAgICAgICAgICAgICAgICAkdGFnc3skdGFnfXsnSlNJbnRlcmZhY2VOYW1lJ30gPSAkdmFs
dWU7Ci0gICAgICAgIH0KICAgICAgICAgJHRhZ3N7JHRhZ317JHByb3BlcnR5fSA9ICR2YWx1ZTsK
KworICAgICAgICAjIFRoZSBjb2RlIHJlbGllcyBvbiBKU0ludGVyZmFjZU5hbWUgZGVyaXZpbmcg
ZnJvbSBpbnRlcmZhY2VOYW1lIHRvIGNoZWNrIGZvciBjdXN0b20gSlNJbnRlcmZhY2VOYW1lLgor
ICAgICAgICAjIFNvIG92ZXJyaWRlIEpTSW50ZXJmYWNlTmFtZSBpZiBpdCB3YXMgbm90IGFscmVh
ZHkgc2V0LgorICAgICAgICAkdGFnc3skdGFnfXtKU0ludGVyZmFjZU5hbWV9ID0gJHZhbHVlIGlm
ICRwcm9wZXJ0eSBlcSAiaW50ZXJmYWNlTmFtZSIgJiYgJHRhZ3N7JHRhZ317SlNJbnRlcmZhY2VO
YW1lfSBlcSAkdGFnc3skdGFnfXtpbnRlcmZhY2VOYW1lfTsKICAgICB9CiB9CiAKQEAgLTE1MCw3
ICsxNTYsNyBAQCBzdWIgYXR0cnNIYW5kbGVyCiAgICAgJGF0dHIgPX4gcy8tL18vZzsKIAogICAg
ICMgSW5pdGlhbGl6ZSBkZWZhdWx0IHByb3BlcnRpZXMnIHZhbHVlcy4KLSAgICAkYXR0cnN7JGF0
dHJ9ID0geyBpbml0aWFsaXplQXR0clByb3BlcnR5SGFzaCgkYXR0cikgfSBpZiAhZGVmaW5lZCgk
YXR0cnN7JGF0dHJ9KTsKKyAgICAkYXR0cnN7JGF0dHJ9ID0geyBkZWZhdWx0QXR0clByb3BlcnR5
SGFzaCgkYXR0cikgfSBpZiAhZGVmaW5lZCgkYXR0cnN7JGF0dHJ9KTsKIAogICAgIGlmICgkcHJv
cGVydHkpIHsKICAgICAgICAgZGllICJVbmtub3duIHByb3BlcnR5ICRwcm9wZXJ0eSBmb3IgYXR0
cmlidXRlICRhdHRyXG4iIGlmICFkZWZpbmVkKCRhdHRyc3skYXR0cn17JHByb3BlcnR5fSk7CkBA
IC0xNjMsNyArMTY5LDcgQEAgc3ViIHBhcmFtZXRlcnNIYW5kbGVyCiAgICAgbXkgKCRwYXJhbWV0
ZXIsICR2YWx1ZSkgPSBAXzsKIAogICAgICMgSW5pdGlhbGl6ZSBkZWZhdWx0IHByb3BlcnRpZXMn
IHZhbHVlcy4KLSAgICAlcGFyYW1ldGVycyA9IGluaXRpYWxpemVQYXJhbWV0ZXJzSGFzaCgpIGlm
ICEoa2V5cyAlcGFyYW1ldGVycyk7CisgICAgJXBhcmFtZXRlcnMgPSBkZWZhdWx0UGFyYW1ldGVy
c0hhc2goKSBpZiAhKGtleXMgJXBhcmFtZXRlcnMpOwogCiAgICAgZGllICJVbmtub3duIHBhcmFt
ZXRlciAkcGFyYW1ldGVyIGZvciB0YWdzL2F0dHJzXG4iIGlmICFkZWZpbmVkKCRwYXJhbWV0ZXJz
eyRwYXJhbWV0ZXJ9KTsKICAgICAkcGFyYW1ldGVyc3skcGFyYW1ldGVyfSA9ICR2YWx1ZTsKQEAg
LTIxNCw3ICsyMjAsNyBAQCBzdWIgcHJpbnRNYWNyb3MKICAgICBmb3IgbXkgJG5hbWUgKHNvcnQg
a2V5cyAlJG5hbWVzUmVmKSB7CiAgICAgICAgIHByaW50IEYgIiRtYWNybyAkbmFtZSIsIiRzdWZm
aXg7XG4iOwogCi0gICAgICAgIGlmICgkcGFyYW1ldGVyc3snZXhwb3J0U3RyaW5ncyd9IG9yICRu
YW1lc3skbmFtZX17ImV4cG9ydFN0cmluZyJ9KSB7IAorICAgICAgICBpZiAoJHBhcmFtZXRlcnN7
ZXhwb3J0U3RyaW5nc30gb3IgJG5hbWVzeyRuYW1lfXtleHBvcnRTdHJpbmd9KSB7IAogICAgICAg
ICAgICAgcHJpbnQgRiAiZXh0ZXJuIGNoYXIgJG5hbWUiLCAiJHtzdWZmaXh9U3RyaW5nW107XG4i
OwogICAgICAgICB9CiAgICAgfQpAQCAtMjIzLDcgKzIyOSw3IEBAIHN1YiBwcmludE1hY3Jvcwog
c3ViIHVzZXNEZWZhdWx0V3JhcHBlcgogewogICAgIG15ICR0YWdOYW1lID0gc2hpZnQ7Ci0gICAg
cmV0dXJuICR0YWdOYW1lIGVxICRwYXJhbWV0ZXJzeyduYW1lc3BhY2UnfSAuICJFbGVtZW50IjsK
KyAgICByZXR1cm4gJHRhZ05hbWUgZXEgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSAuICJFbGVtZW50
IjsKIH0KIAogIyBCdWlsZCBhIGRpcmVjdCBtYXBwaW5nIGZyb20gdGhlIHRhZ3MgdG8gdGhlIEVs
ZW1lbnQgdG8gY3JlYXRlLCBleGNsdWRpbmcKQEAgLTIzMiwxNiArMjM4LDE2IEBAIHN1YiBidWls
ZENvbnN0cnVjdG9yTWFwCiB7CiAgICAgbXkgJXRhZ0NvbnN0cnVjdG9yTWFwID0gKCk7CiAgICAg
Zm9yIG15ICR0YWdOYW1lIChrZXlzICV0YWdzKSB7Ci0gICAgICAgIG15ICRpbnRlcmZhY2VOYW1l
ID0gJHRhZ3N7JHRhZ05hbWV9eydpbnRlcmZhY2VOYW1lJ307CisgICAgICAgIG15ICRpbnRlcmZh
Y2VOYW1lID0gJHRhZ3N7JHRhZ05hbWV9e2ludGVyZmFjZU5hbWV9OwogICAgICAgICBuZXh0IGlm
ICh1c2VzRGVmYXVsdFdyYXBwZXIoJGludGVyZmFjZU5hbWUpKTsKIAotICAgICAgICBpZiAoJHRh
Z3N7JHRhZ05hbWV9eydtYXBUb1RhZ05hbWUnfSkgewotICAgICAgICAgICAgZGllICJDYW5ub3Qg
aGFuZGxlIG11bHRpcGxlIG1hcFRvVGFnTmFtZSBmb3IgJHRhZ05hbWVcbiIgaWYgJHRhZ3N7JHRh
Z3N7JHRhZ05hbWV9eydtYXBUb1RhZ05hbWUnfX17J21hcFRvVGFnTmFtZSd9OwotICAgICAgICAg
ICAgJGludGVyZmFjZU5hbWUgPSAkdGFnc3sgJHRhZ3N7JHRhZ05hbWV9eydtYXBUb1RhZ05hbWUn
fSB9eydpbnRlcmZhY2VOYW1lJ307CisgICAgICAgIGlmICgkdGFnc3skdGFnTmFtZX17bWFwVG9U
YWdOYW1lfSkgeworICAgICAgICAgICAgZGllICJDYW5ub3QgaGFuZGxlIG11bHRpcGxlIG1hcFRv
VGFnTmFtZSBmb3IgJHRhZ05hbWVcbiIgaWYgJHRhZ3N7JHRhZ3N7JHRhZ05hbWV9e21hcFRvVGFn
TmFtZX19e21hcFRvVGFnTmFtZX07CisgICAgICAgICAgICAkaW50ZXJmYWNlTmFtZSA9ICR0YWdz
eyAkdGFnc3skdGFnTmFtZX17bWFwVG9UYWdOYW1lfSB9e2ludGVyZmFjZU5hbWV9OwogICAgICAg
ICB9CiAKICAgICAgICAgIyBDaG9wIHRoZSBzdHJpbmcgdG8ga2VlcCB0aGUgaW50ZXJlc3Rpbmcg
cGFydC4KLSAgICAgICAgJGludGVyZmFjZU5hbWUgPX4gcy8kcGFyYW1ldGVyc3snbmFtZXNwYWNl
J30oLiopRWxlbWVudC8kMS87CisgICAgICAgICRpbnRlcmZhY2VOYW1lID1+IHMvJHBhcmFtZXRl
cnN7bmFtZXNwYWNlfSguKilFbGVtZW50LyQxLzsKICAgICAgICAgJHRhZ0NvbnN0cnVjdG9yTWFw
eyR0YWdOYW1lfSA9IGxjKCRpbnRlcmZhY2VOYW1lKTsKICAgICB9CiAKQEAgLTI1NCwxNyArMjYw
LDEzIEBAIHN1YiBwcmludENvbnN0cnVjdG9yU2lnbmF0dXJlCiB7CiAgICAgbXkgKCRGLCAkdGFn
TmFtZSwgJGNvbnN0cnVjdG9yTmFtZSwgJGNvbnN0cnVjdG9yVGFnTmFtZSkgPSBAXzsKIAotICAg
IHByaW50IEYgInN0YXRpYyBQYXNzUmVmUHRyPCRwYXJhbWV0ZXJzeyduYW1lc3BhY2UnfUVsZW1l
bnQ+ICR7Y29uc3RydWN0b3JOYW1lfUNvbnN0cnVjdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmICRj
b25zdHJ1Y3RvclRhZ05hbWUsIERvY3VtZW50KiBkb2MiOwotICAgIGlmICgkcGFyYW1ldGVyc3sn
bmFtZXNwYWNlJ30gZXEgIkhUTUwiKSB7CisgICAgcHJpbnQgRiAic3RhdGljIFBhc3NSZWZQdHI8
JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+ICR7Y29uc3RydWN0b3JOYW1lfUNvbnN0cnVj
dG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmICRjb25zdHJ1Y3RvclRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCI7CisgICAgaWYgKCRwYXJhbWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwiKSB7CiAg
ICAgICAgIHByaW50IEYgIiwgSFRNTEZvcm1FbGVtZW50KiI7Ci0gICAgICAgIGlmICgkdGFnc3sk
dGFnTmFtZX17J2NvbnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudCd9KSB7Ci0gICAgICAgICAgICBw
cmludCBGICIgZm9ybUVsZW1lbnQiOwotICAgICAgICB9CisgICAgICAgIHByaW50IEYgIiBmb3Jt
RWxlbWVudCIgaWYgJHRhZ3N7JHRhZ05hbWV9e2NvbnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudH07
CiAgICAgfQogICAgIHByaW50IEYgIiwgYm9vbCI7Ci0gICAgaWYgKCR0YWdzeyR0YWdOYW1lfXsn
Y29uc3RydWN0b3JOZWVkc0NyZWF0ZWRCeVBhcnNlcid9KSB7Ci0gICAgICAgIHByaW50IEYgIiBj
cmVhdGVkQnlQYXJzZXIiOyAKLSAgICB9CisgICAgcHJpbnQgRiAiIGNyZWF0ZWRCeVBhcnNlciIg
aWYgJHRhZ3N7JHRhZ05hbWV9e2NvbnN0cnVjdG9yTmVlZHNDcmVhdGVkQnlQYXJzZXJ9OwogICAg
IHByaW50IEYgIilcbntcbiI7CiB9CiAKQEAgLTI3NiwyMiArMjc4LDI2IEBAIHN1YiBwcmludENv
bnN0cnVjdG9ySW50ZXJpb3IKICAgICBteSAoJEYsICR0YWdOYW1lLCAkaW50ZXJmYWNlTmFtZSwg
JGNvbnN0cnVjdG9yVGFnTmFtZSkgPSBAXzsKIAogICAgICMgSGFuZGxlIG1lZGlhIGVsZW1lbnRz
LgotICAgIGlmICgkdGFnc3skdGFnTmFtZX17J3dyYXBwZXJPbmx5SWZNZWRpYUlzQXZhaWxhYmxl
J30pIHsKKyAgICBpZiAoJHRhZ3N7JHRhZ05hbWV9e3dyYXBwZXJPbmx5SWZNZWRpYUlzQXZhaWxh
YmxlfSkgewogICAgICAgICBwcmludCBGIDw8RU5ECiAgICAgaWYgKCFNZWRpYVBsYXllcjo6aXNB
dmFpbGFibGUoKSkKLSAgICAgICAgcmV0dXJuIG5ldyBIVE1MRWxlbWVudCgkY29uc3RydWN0b3JU
YWdOYW1lLCBkb2MpOworICAgICAgICByZXR1cm4gbmV3IEhUTUxFbGVtZW50KCRjb25zdHJ1Y3Rv
clRhZ05hbWUsIGRvY3VtZW50KTsKIEVORAogOwogICAgIH0KIAotICAgICMgTm93IGNhbGwgdGhl
IGNvbnN0cnVjdG9yIHdpdGggdGhlIHJpZ2h0IHBhcmFtZXRlcnMuCi0gICAgcHJpbnQgRiAiICAg
IHJldHVybiBuZXcgJHtpbnRlcmZhY2VOYW1lfSgkY29uc3RydWN0b3JUYWdOYW1lLCBkb2MiOwot
ICAgIGlmICgkdGFnc3skdGFnTmFtZX17J2NvbnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudCd9KSB7
Ci0gICAgICAgIHByaW50IEYgIiwgZm9ybUVsZW1lbnQiOwotICAgIH0KLSAgICBpZiAoJHRhZ3N7
JHRhZ05hbWV9eydjb25zdHJ1Y3Rvck5lZWRzQ3JlYXRlZEJ5UGFyc2VyJ30pIHsKLSAgICAgICAg
cHJpbnQgRiAiLCBjcmVhdGVkQnlQYXJzZXIiOworICAgIG15ICRuZXdQcmVmaXggPSAiIjsKKyAg
ICBteSAkY3JlYXRlU3VmZml4ID0gIjo6Y3JlYXRlIjsKKworICAgIGlmICgkdGFnc3skdGFnTmFt
ZX17Y3JlYXRlV2l0aE5ld30pIHsKKyAgICAgICAgJG5ld1ByZWZpeCA9ICJuZXcgIjsKKyAgICAg
ICAgJGNyZWF0ZVN1ZmZpeCA9ICIiOwogICAgIH0KKworICAgICMgQ2FsbCB0aGUgY29uc3RydWN0
b3Igd2l0aCB0aGUgcmlnaHQgcGFyYW1ldGVycy4KKyAgICBwcmludCBGICIgICAgcmV0dXJuICRu
ZXdQcmVmaXgkaW50ZXJmYWNlTmFtZSR7Y3JlYXRlU3VmZml4fSgkY29uc3RydWN0b3JUYWdOYW1l
LCBkb2N1bWVudCI7CisgICAgcHJpbnQgRiAiLCBmb3JtRWxlbWVudCIgaWYgJHRhZ3N7JHRhZ05h
bWV9e2NvbnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudH07CisgICAgcHJpbnQgRiAiLCBjcmVhdGVk
QnlQYXJzZXIiIGlmICR0YWdzeyR0YWdOYW1lfXtjb25zdHJ1Y3Rvck5lZWRzQ3JlYXRlZEJ5UGFy
c2VyfTsKICAgICBwcmludCBGICIpO1xufVxuXG4iOwogfQogCkBAIC0zMDAsMjAgKzMwNiwyMCBA
QCBzdWIgcHJpbnRDb25zdHJ1Y3RvcnMKICAgICBteSAoJEYsICR0YWdDb25zdHJ1Y3Rvck1hcFJl
ZikgPSBAXzsKICAgICBteSAldGFnQ29uc3RydWN0b3JNYXAgPSAlJHRhZ0NvbnN0cnVjdG9yTWFw
UmVmOwogCi0gICAgcHJpbnQgRiAiI2lmICRwYXJhbWV0ZXJzeydndWFyZEZhY3RvcnlXaXRoJ31c
biIgaWYgJHBhcmFtZXRlcnN7J2d1YXJkRmFjdG9yeVdpdGgnfTsKKyAgICBwcmludCBGICIjaWYg
JHBhcmFtZXRlcnN7Z3VhcmRGYWN0b3J5V2l0aH1cbiIgaWYgJHBhcmFtZXRlcnN7Z3VhcmRGYWN0
b3J5V2l0aH07CiAKICAgICAjIFRoaXMgaXMgdG8gYXZvaWQgZ2VuZXJhdGluZyB0aGUgc2FtZSBj
b25zdHJ1Y3RvciBzZXZlcmFsIHRpbWVzLgogICAgIG15ICV1bmlxdWVUYWdzID0gKCk7CiAgICAg
Zm9yIG15ICR0YWdOYW1lIChzb3J0IGtleXMgJXRhZ0NvbnN0cnVjdG9yTWFwKSB7Ci0gICAgICAg
IG15ICRpbnRlcmZhY2VOYW1lID0gJHRhZ3N7JHRhZ05hbWV9eydpbnRlcmZhY2VOYW1lJ307Cisg
ICAgICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJHRhZ3N7JHRhZ05hbWV9e2ludGVyZmFjZU5hbWV9
OwogCiAgICAgICAgICMgSWdub3JlIHRoZSBtYXBwZWQgdGFnCiAgICAgICAgICMgRklYTUU6IEl0
IGNvdWxkIGJlIG1vdmVkIGluc2lkZSB0aGlzIGxvb3AgYnV0IHdhcyBzcGxpdCBmb3IgcmVhZGli
aWxpdHkuCi0gICAgICAgIG5leHQgaWYgKGRlZmluZWQoJHVuaXF1ZVRhZ3N7JGludGVyZmFjZU5h
bWV9KSB8fCAkdGFnc3skdGFnTmFtZX17J21hcFRvVGFnTmFtZSd9KTsKKyAgICAgICAgbmV4dCBp
ZiAoZGVmaW5lZCgkdW5pcXVlVGFnc3skaW50ZXJmYWNlTmFtZX0pIHx8ICR0YWdzeyR0YWdOYW1l
fXttYXBUb1RhZ05hbWV9KTsKIAogICAgICAgICAkdW5pcXVlVGFnc3skaW50ZXJmYWNlTmFtZX0g
PSAnMSc7CiAKLSAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0gJHRhZ3N7JHRhZ05hbWV9eyJjb25k
aXRpb25hbCJ9OworICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAkdGFnc3skdGFnTmFtZX17Y29u
ZGl0aW9uYWx9OwogICAgICAgICBpZiAoJGNvbmRpdGlvbmFsKSB7CiAgICAgICAgICAgICBteSAk
Y29uZGl0aW9uYWxTdHJpbmcgPSAiRU5BQkxFKCIgLiBqb2luKCIpICYmIEVOQUJMRSgiLCBzcGxp
dCgvJi8sICRjb25kaXRpb25hbCkpIC4gIikiOwogICAgICAgICAgICAgcHJpbnQgRiAiI2lmICR7
Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiI7CkBAIC0zMjMsMjAgKzMyOSwyMCBAQCBzdWIgcHJpbnRD
b25zdHJ1Y3RvcnMKICAgICAgICAgcHJpbnRDb25zdHJ1Y3RvckludGVyaW9yKCRGLCAkdGFnTmFt
ZSwgJGludGVyZmFjZU5hbWUsICJ0YWdOYW1lIik7CiAKICAgICAgICAgaWYgKCRjb25kaXRpb25h
bCkgewotICAgICAgICAgICAgcHJpbnQgRiAiI2VuZGlmXG5cbiI7CisgICAgICAgICAgICBwcmlu
dCBGICIjZW5kaWZcbiI7CiAgICAgICAgIH0KICAgICB9CiAKICAgICAjIE1hcHBlZCB0YWcgbmFt
ZSB1c2VzIGEgc3BlY2lhbCB3cmFwcGVyIHRvIGtlZXAgdGhlaXIgcHJlZml4IGFuZCBuYW1lc3Bh
Y2VVUkkgd2hpbGUgdXNpbmcgdGhlIG1hcHBlZCBsb2NhbG5hbWUuCiAgICAgZm9yIG15ICR0YWdO
YW1lIChzb3J0IGtleXMgJXRhZ0NvbnN0cnVjdG9yTWFwKSB7Ci0gICAgICAgIGlmICgkdGFnc3sk
dGFnTmFtZX17J21hcFRvVGFnTmFtZSd9KSB7Ci0gICAgICAgICAgICBteSAkbWFwcGVkTmFtZSA9
ICR0YWdzeyR0YWdOYW1lfXsnbWFwVG9UYWdOYW1lJ307CisgICAgICAgIGlmICgkdGFnc3skdGFn
TmFtZX17bWFwVG9UYWdOYW1lfSkgeworICAgICAgICAgICAgbXkgJG1hcHBlZE5hbWUgPSAkdGFn
c3skdGFnTmFtZX17bWFwVG9UYWdOYW1lfTsKICAgICAgICAgICAgIHByaW50Q29uc3RydWN0b3JT
aWduYXR1cmUoJEYsICRtYXBwZWROYW1lLCAkbWFwcGVkTmFtZSAuICJUbyIgLiAkdGFnTmFtZSwg
InRhZ05hbWUiKTsKLSAgICAgICAgICAgIHByaW50Q29uc3RydWN0b3JJbnRlcmlvcigkRiwgJG1h
cHBlZE5hbWUsICR0YWdzeyRtYXBwZWROYW1lfXsnaW50ZXJmYWNlTmFtZSd9LCAiUXVhbGlmaWVk
TmFtZSh0YWdOYW1lLnByZWZpeCgpLCAke21hcHBlZE5hbWV9VGFnLmxvY2FsTmFtZSgpLCB0YWdO
YW1lLm5hbWVzcGFjZVVSSSgpKSIpOworICAgICAgICAgICAgcHJpbnRDb25zdHJ1Y3RvckludGVy
aW9yKCRGLCAkbWFwcGVkTmFtZSwgJHRhZ3N7JG1hcHBlZE5hbWV9e2ludGVyZmFjZU5hbWV9LCAi
UXVhbGlmaWVkTmFtZSh0YWdOYW1lLnByZWZpeCgpLCAke21hcHBlZE5hbWV9VGFnLmxvY2FsTmFt
ZSgpLCB0YWdOYW1lLm5hbWVzcGFjZVVSSSgpKSIpOwogICAgICAgICB9CiAgICAgfQogCi0gICAg
cHJpbnQgRiAiI2VuZGlmXG4iIGlmICRwYXJhbWV0ZXJzeydndWFyZEZhY3RvcnlXaXRoJ307Cisg
ICAgcHJpbnQgRiAiI2VuZGlmXG4iIGlmICRwYXJhbWV0ZXJze2d1YXJkRmFjdG9yeVdpdGh9Owog
fQogCiBzdWIgcHJpbnRGdW5jdGlvbkluaXRzCkBAIC0zNDYsMTQgKzM1MiwxNCBAQCBzdWIgcHJp
bnRGdW5jdGlvbkluaXRzCiAKICAgICBmb3IgbXkgJHRhZ05hbWUgKHNvcnQga2V5cyAldGFnQ29u
c3RydWN0b3JNYXApIHsKIAotICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAkdGFnc3skdGFnTmFt
ZX17ImNvbmRpdGlvbmFsIn07CisgICAgICAgIG15ICRjb25kaXRpb25hbCA9ICR0YWdzeyR0YWdO
YW1lfXtjb25kaXRpb25hbH07CiAgICAgICAgIGlmICgkY29uZGl0aW9uYWwpIHsKICAgICAgICAg
ICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICJFTkFCTEUoIiAuIGpvaW4oIikgJiYgRU5BQkxF
KCIsIHNwbGl0KC8mLywgJGNvbmRpdGlvbmFsKSkgLiAiKSI7CiAgICAgICAgICAgICBwcmludCBG
ICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiI7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
JHRhZ3N7JHRhZ05hbWV9eydtYXBUb1RhZ05hbWUnfSkgewotICAgICAgICAgICAgcHJpbnQgRiAi
ICAgIGFkZFRhZygke3RhZ05hbWV9VGFnLCAkdGFnc3skdGFnTmFtZX17J21hcFRvVGFnTmFtZSd9
VG8ke3RhZ05hbWV9Q29uc3RydWN0b3IpO1xuIjsKKyAgICAgICAgaWYgKCR0YWdzeyR0YWdOYW1l
fXttYXBUb1RhZ05hbWV9KSB7CisgICAgICAgICAgICBwcmludCBGICIgICAgYWRkVGFnKCR7dGFn
TmFtZX1UYWcsICR0YWdzeyR0YWdOYW1lfXttYXBUb1RhZ05hbWV9VG8ke3RhZ05hbWV9Q29uc3Ry
dWN0b3IpO1xuIjsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHByaW50IEYgIiAgICBh
ZGRUYWcoJHt0YWdOYW1lfVRhZywgJHRhZ0NvbnN0cnVjdG9yTWFweyR0YWdOYW1lfUNvbnN0cnVj
dG9yKTtcbiI7CiAgICAgICAgIH0KQEAgLTM2OCw5ICszNzQsNyBAQCBzdWIgc3ZnQ2FwaXRhbGl6
YXRpb25IYWNrcwogewogICAgIG15ICRuYW1lID0gc2hpZnQ7CiAKLSAgICBpZiAoJG5hbWUgPX4g
L15mZSguKykkLykgewotICAgICAgICAkbmFtZSA9ICJGRSIgLiB1Y2ZpcnN0ICQxOwotICAgIH0K
KyAgICAkbmFtZSA9ICJGRSIgLiB1Y2ZpcnN0ICQxIGlmICRuYW1lID1+IC9eZmUoLispJC87CiAK
ICAgICByZXR1cm4gJG5hbWU7CiB9CkBAIC0zNzksNyArMzgzLDcgQEAgc3ViIHVwcGVyQ2FzZU5h
bWUKIHsKICAgICBteSAkbmFtZSA9IHNoaWZ0OwogICAgIAotICAgICRuYW1lID0gc3ZnQ2FwaXRh
bGl6YXRpb25IYWNrcygkbmFtZSkgaWYgKCRwYXJhbWV0ZXJzeyduYW1lc3BhY2UnfSBlcSAiU1ZH
Iik7CisgICAgJG5hbWUgPSBzdmdDYXBpdGFsaXphdGlvbkhhY2tzKCRuYW1lKSBpZiAoJHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfSBlcSAiU1ZHIik7CiAKICAgICB3aGlsZSAoJG5hbWUgPX4gL14oLio/
KV8oLiopLykgewogICAgICAgICAkbmFtZSA9ICQxIC4gdWNmaXJzdCAkMjsKQEAgLTM5MiwxMCAr
Mzk2LDExIEBAIHN1YiBwcmludExpY2Vuc2VIZWFkZXIKIHsKICAgICBteSAkRiA9IHNoaWZ0Owog
ICAgIHByaW50IEYgIi8qCi0gKiBUSElTIEZJTEUgSVMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQs
IERPIE5PVCBFRElULgorICogVEhJUyBGSUxFIFdBUyBBVVRPTUFUSUNBTExZIEdFTkVSQVRFRCwg
RE8gTk9UIEVESVQuCiAgKgorICogVGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgdGhlIGRvbS9t
YWtlX25hbWVzLnBsIHNjcmlwdC4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUs
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDE2LDEwICs0MjEsOSBAQCBzdWIg
cHJpbnRMaWNlbnNlSGVhZGVyCiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLQogIjsKIH0KIApAQCAt
NDI4LDE2ICs0MzIsMTYgQEAgc3ViIHByaW50TmFtZXNIZWFkZXJGaWxlCiAgICAgbXkgKCRoZWFk
ZXJQYXRoKSA9IHNoaWZ0OwogICAgIG15ICRGOwogICAgIG9wZW4gRiwgIj4kaGVhZGVyUGF0aCI7
Ci0gICAgCisKICAgICBwcmludExpY2Vuc2VIZWFkZXIoJEYpOwotICAgIHByaW50IEYgIiNpZm5k
ZWYgRE9NXyRwYXJhbWV0ZXJzeyduYW1lc3BhY2UnfU5BTUVTX0hcbiI7Ci0gICAgcHJpbnQgRiAi
I2RlZmluZSBET01fJHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9TkFNRVNfSFxuXG4iOworICAgIHBy
aW50IEYgIiNpZm5kZWYgRE9NXyRwYXJhbWV0ZXJze25hbWVzcGFjZX1OQU1FU19IXG4iOworICAg
IHByaW50IEYgIiNkZWZpbmUgRE9NXyRwYXJhbWV0ZXJze25hbWVzcGFjZX1OQU1FU19IXG5cbiI7
CiAgICAgcHJpbnQgRiAiI2luY2x1ZGUgXCJRdWFsaWZpZWROYW1lLmhcIlxuXG4iOwotICAgIAot
ICAgIHByaW50IEYgIm5hbWVzcGFjZSBXZWJDb3JlIHtcblxuIG5hbWVzcGFjZSAkcGFyYW1ldGVy
c3snbmFtZXNwYWNlJ31OYW1lcyB7XG5cbiI7Ci0gICAgCi0gICAgbXkgJGxvd2VyTmFtZXNwYWNl
ID0gbGMoJHBhcmFtZXRlcnN7J25hbWVzcGFjZVByZWZpeCd9KTsKLSAgICBwcmludCBGICIjaWZu
ZGVmIERPTV8kcGFyYW1ldGVyc3snbmFtZXNwYWNlJ31OQU1FU19ISURFX0dMT0JBTFNcbiI7CisK
KyAgICBwcmludCBGICJuYW1lc3BhY2UgV2ViQ29yZSB7XG5cbiBuYW1lc3BhY2UgJHBhcmFtZXRl
cnN7bmFtZXNwYWNlfU5hbWVzIHtcblxuIjsKKworICAgIG15ICRsb3dlck5hbWVzcGFjZSA9IGxj
KCRwYXJhbWV0ZXJze25hbWVzcGFjZVByZWZpeH0pOworICAgIHByaW50IEYgIiNpZm5kZWYgRE9N
XyRwYXJhbWV0ZXJze25hbWVzcGFjZX1OQU1FU19ISURFX0dMT0JBTFNcbiI7CiAgICAgcHJpbnQg
RiAiLy8gTmFtZXNwYWNlXG4iOwogICAgIHByaW50IEYgImV4dGVybiBjb25zdCBXZWJDb3JlOjpB
dG9taWNTdHJpbmcgJHtsb3dlck5hbWVzcGFjZX1OYW1lc3BhY2VVUkk7XG5cbiI7CiAKQEAgLTQ1
MSwxOSArNDU1LDE5IEBAIHN1YiBwcmludE5hbWVzSGVhZGVyRmlsZQogICAgICAgICBwcmludE1h
Y3JvcygkRiwgImV4dGVybiBjb25zdCBXZWJDb3JlOjpRdWFsaWZpZWROYW1lIiwgIkF0dHIiLCBc
JWF0dHJzKTsKICAgICB9CiAgICAgcHJpbnQgRiAiI2VuZGlmXG5cbiI7Ci0gICAgCisKICAgICBp
ZiAoa2V5cyAldGFncykgewotICAgICAgICBwcmludCBGICJXZWJDb3JlOjpRdWFsaWZpZWROYW1l
KiogZ2V0JHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9VGFncyhzaXplX3QqIHNpemUpO1xuIjsKKyAg
ICAgICAgcHJpbnQgRiAiV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSoqIGdldCRwYXJhbWV0ZXJze25h
bWVzcGFjZX1UYWdzKHNpemVfdCogc2l6ZSk7XG4iOwogICAgIH0KIAogICAgIGlmIChrZXlzICVh
dHRycykgewotICAgICAgICBwcmludCBGICJXZWJDb3JlOjpRdWFsaWZpZWROYW1lKiogZ2V0JHBh
cmFtZXRlcnN7J25hbWVzcGFjZSd9QXR0cnMoc2l6ZV90KiBzaXplKTtcbiI7CisgICAgICAgIHBy
aW50IEYgIldlYkNvcmU6OlF1YWxpZmllZE5hbWUqKiBnZXQkcGFyYW1ldGVyc3tuYW1lc3BhY2V9
QXR0cnMoc2l6ZV90KiBzaXplKTtcbiI7CiAgICAgfQotICAgIAorCiAgICAgcHJpbnQgRiAiXG52
b2lkIGluaXQoKTtcblxuIjsKICAgICBwcmludCBGICJ9IH1cblxuIjsKICAgICBwcmludCBGICIj
ZW5kaWZcblxuIjsKLSAgICAKKwogICAgIGNsb3NlIEY7CiB9CiAKQEAgLTQ3NSwyNSArNDc5LDI1
IEBAIHN1YiBwcmludE5hbWVzQ3BwRmlsZQogICAgIAogICAgIHByaW50TGljZW5zZUhlYWRlcigk
Rik7CiAgICAgCi0gICAgbXkgJGxvd2VyTmFtZXNwYWNlID0gbGMoJHBhcmFtZXRlcnN7J25hbWVz
cGFjZVByZWZpeCd9KTsKKyAgICBteSAkbG93ZXJOYW1lc3BhY2UgPSBsYygkcGFyYW1ldGVyc3tu
YW1lc3BhY2VQcmVmaXh9KTsKIAogcHJpbnQgRiAiI2luY2x1ZGUgXCJjb25maWcuaFwiXG4iOwog
CiBwcmludCBGICIjaWZkZWYgU0tJUF9TVEFUSUNfQ09OU1RSVUNUT1JTX09OX0dDQ1xuIjsKLXBy
aW50IEYgIiNkZWZpbmUgRE9NXyRwYXJhbWV0ZXJzeyduYW1lc3BhY2UnfU5BTUVTX0hJREVfR0xP
QkFMUyAxXG4iOworcHJpbnQgRiAiI2RlZmluZSBET01fJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5B
TUVTX0hJREVfR0xPQkFMUyAxXG4iOwogcHJpbnQgRiAiI2Vsc2VcbiI7CiBwcmludCBGICIjZGVm
aW5lIFFOQU1FX0RFRkFVTFRfQ09OU1RSVUNUT1IgMVxuIjsKIHByaW50IEYgIiNlbmRpZlxuXG4i
OwogCiAKLXByaW50IEYgIiNpbmNsdWRlIFwiJHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9TmFtZXMu
aFwiXG5cbiI7CitwcmludCBGICIjaW5jbHVkZSBcIiRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1l
cy5oXCJcblxuIjsKIHByaW50IEYgIiNpbmNsdWRlIFwiU3RhdGljQ29uc3RydWN0b3JzLmhcIlxu
IjsKIAotcHJpbnQgRiAibmFtZXNwYWNlIFdlYkNvcmUge1xuXG4gbmFtZXNwYWNlICRwYXJhbWV0
ZXJzeyduYW1lc3BhY2UnfU5hbWVzIHsKK3ByaW50IEYgIm5hbWVzcGFjZSBXZWJDb3JlIHtcblxu
IG5hbWVzcGFjZSAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFtZXMgewogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAotREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsICR7bG93ZXJOYW1lc3Bh
Y2V9TmFtZXNwYWNlVVJJLCBcIiRwYXJhbWV0ZXJzeyduYW1lc3BhY2VVUkknfVwiKQorREVGSU5F
X0dMT0JBTChBdG9taWNTdHJpbmcsICR7bG93ZXJOYW1lc3BhY2V9TmFtZXNwYWNlVVJJLCBcIiRw
YXJhbWV0ZXJze25hbWVzcGFjZVVSSX1cIikKICI7CiAKICAgICBpZiAoa2V5cyAldGFncykgewpA
QCAtNTAyLDE0ICs1MDYsMTQgQEAgREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsICR7bG93ZXJO
YW1lcwogICAgICAgICAgICAgcHJpbnQgRiAiREVGSU5FX0dMT0JBTChRdWFsaWZpZWROYW1lLCAi
LCAkbmFtZSwgIlRhZywgbnVsbEF0b20sIFwiJG5hbWVcIiwgJHtsb3dlck5hbWVzcGFjZX1OYW1l
c3BhY2VVUkkpO1xuIjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgcHJpbnQgRiAiXG5c
bldlYkNvcmU6OlF1YWxpZmllZE5hbWUqKiBnZXQkcGFyYW1ldGVyc3snbmFtZXNwYWNlJ31UYWdz
KHNpemVfdCogc2l6ZSlcbiI7Ci0gICAgICAgIHByaW50IEYgIntcbiAgICBzdGF0aWMgV2ViQ29y
ZTo6UXVhbGlmaWVkTmFtZSogJHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9VGFnc1tdID0ge1xuIjsK
KyAgICAgICAgcHJpbnQgRiAiXG5cbldlYkNvcmU6OlF1YWxpZmllZE5hbWUqKiBnZXQkcGFyYW1l
dGVyc3tuYW1lc3BhY2V9VGFncyhzaXplX3QqIHNpemUpXG4iOworICAgICAgICBwcmludCBGICJ7
XG4gICAgc3RhdGljIFdlYkNvcmU6OlF1YWxpZmllZE5hbWUqICRwYXJhbWV0ZXJze25hbWVzcGFj
ZX1UYWdzW10gPSB7XG4iOwogICAgICAgICBmb3IgbXkgJG5hbWUgKHNvcnQga2V5cyAldGFncykg
ewogICAgICAgICAgICAgcHJpbnQgRiAiICAgICAgICAoV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSop
JiR7bmFtZX1UYWcsXG4iOwogICAgICAgICB9CiAgICAgICAgIHByaW50IEYgIiAgICB9O1xuIjsK
ICAgICAgICAgcHJpbnQgRiAiICAgICpzaXplID0gIiwgc2NhbGFyKGtleXMgJXRhZ3MpLCAiO1xu
IjsKLSAgICAgICAgcHJpbnQgRiAiICAgIHJldHVybiAkcGFyYW1ldGVyc3snbmFtZXNwYWNlJ31U
YWdzO1xuIjsKKyAgICAgICAgcHJpbnQgRiAiICAgIHJldHVybiAkcGFyYW1ldGVyc3tuYW1lc3Bh
Y2V9VGFncztcbiI7CiAgICAgICAgIHByaW50IEYgIn1cbiI7CiAgICAgfQogCkBAIC01MTgsMTQg
KzUyMiwxNCBAQCBERUZJTkVfR0xPQkFMKEF0b21pY1N0cmluZywgJHtsb3dlck5hbWVzCiAgICAg
ICAgIGZvciBteSAkbmFtZSAoc29ydCBrZXlzICVhdHRycykgewogICAgICAgICAgICAgcHJpbnQg
RiAiREVGSU5FX0dMT0JBTChRdWFsaWZpZWROYW1lLCAiLCAkbmFtZSwgIkF0dHIsIG51bGxBdG9t
LCBcIiRuYW1lXCIsICR7bG93ZXJOYW1lc3BhY2V9TmFtZXNwYWNlVVJJKTtcbiI7CiAgICAgICAg
IH0KLSAgICAgICAgcHJpbnQgRiAiXG5cbldlYkNvcmU6OlF1YWxpZmllZE5hbWUqKiBnZXQkcGFy
YW1ldGVyc3snbmFtZXNwYWNlJ31BdHRycyhzaXplX3QqIHNpemUpXG4iOwotICAgICAgICBwcmlu
dCBGICJ7XG4gICAgc3RhdGljIFdlYkNvcmU6OlF1YWxpZmllZE5hbWUqICRwYXJhbWV0ZXJzeydu
YW1lc3BhY2UnfUF0dHJbXSA9IHtcbiI7CisgICAgICAgIHByaW50IEYgIlxuXG5XZWJDb3JlOjpR
dWFsaWZpZWROYW1lKiogZ2V0JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUF0dHJzKHNpemVfdCogc2l6
ZSlcbiI7CisgICAgICAgIHByaW50IEYgIntcbiAgICBzdGF0aWMgV2ViQ29yZTo6UXVhbGlmaWVk
TmFtZSogJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUF0dHJbXSA9IHtcbiI7CiAgICAgICAgIGZvciBt
eSAkbmFtZSAoc29ydCBrZXlzICVhdHRycykgewogICAgICAgICAgICAgcHJpbnQgRiAiICAgICAg
ICAoV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSopJiR7bmFtZX1BdHRyLFxuIjsKICAgICAgICAgfQog
ICAgICAgICBwcmludCBGICIgICAgfTtcbiI7CiAgICAgICAgIHByaW50IEYgIiAgICAqc2l6ZSA9
ICIsIHNjYWxhcihrZXlzICVhdHRycyksICI7XG4iOwotICAgICAgICBwcmludCBGICIgICAgcmV0
dXJuICRwYXJhbWV0ZXJzeyduYW1lc3BhY2UnfUF0dHI7XG4iOworICAgICAgICBwcmludCBGICIg
ICAgcmV0dXJuICRwYXJhbWV0ZXJze25hbWVzcGFjZX1BdHRyO1xuIjsKICAgICAgICAgcHJpbnQg
RiAifVxuIjsKICAgICB9CiAKQEAgLTU0OSwxNiArNTUzLDE2IEBAIHByaW50IEYgIlxudm9pZCBp
bml0KCkKICAgICBBdG9taWNTdHJpbmc6OmluaXQoKTsKICI7CiAgICAgCi0gICAgcHJpbnQoRiAi
ICAgIEF0b21pY1N0cmluZyAke2xvd2VyTmFtZXNwYWNlfU5TKFwiJHBhcmFtZXRlcnN7J25hbWVz
cGFjZVVSSSd9XCIpO1xuXG4iKTsKKyAgICBwcmludChGICIgICAgQXRvbWljU3RyaW5nICR7bG93
ZXJOYW1lc3BhY2V9TlMoXCIkcGFyYW1ldGVyc3tuYW1lc3BhY2VVUkl9XCIpO1xuXG4iKTsKIAog
ICAgIHByaW50KEYgIiAgICAvLyBOYW1lc3BhY2VcbiIpOwogICAgIHByaW50KEYgIiAgICBuZXcg
KCh2b2lkKikmJHtsb3dlck5hbWVzcGFjZX1OYW1lc3BhY2VVUkkpIEF0b21pY1N0cmluZygke2xv
d2VyTmFtZXNwYWNlfU5TKTtcblxuIik7CiAgICAgaWYgKGtleXMgJXRhZ3MpIHsKLSAgICAgICAg
bXkgJHRhZ3NOYW1lc3BhY2UgPSAkcGFyYW1ldGVyc3sndGFnc051bGxOYW1lc3BhY2UnfSA/ICJu
dWxsQXRvbSIgOiAiJHtsb3dlck5hbWVzcGFjZX1OUyI7CisgICAgICAgIG15ICR0YWdzTmFtZXNw
YWNlID0gJHBhcmFtZXRlcnN7dGFnc051bGxOYW1lc3BhY2V9ID8gIm51bGxBdG9tIiA6ICIke2xv
d2VyTmFtZXNwYWNlfU5TIjsKICAgICAgICAgcHJpbnREZWZpbml0aW9ucygkRiwgXCV0YWdzLCAi
dGFncyIsICR0YWdzTmFtZXNwYWNlKTsKICAgICB9CiAgICAgaWYgKGtleXMgJWF0dHJzKSB7Ci0g
ICAgICAgIG15ICRhdHRyc05hbWVzcGFjZSA9ICRwYXJhbWV0ZXJzeydhdHRyc051bGxOYW1lc3Bh
Y2UnfSA/ICJudWxsQXRvbSIgOiAiJHtsb3dlck5hbWVzcGFjZX1OUyI7CisgICAgICAgIG15ICRh
dHRyc05hbWVzcGFjZSA9ICRwYXJhbWV0ZXJze2F0dHJzTnVsbE5hbWVzcGFjZX0gPyAibnVsbEF0
b20iIDogIiR7bG93ZXJOYW1lc3BhY2V9TlMiOwogICAgICAgICBwcmludERlZmluaXRpb25zKCRG
LCBcJWF0dHJzLCAiYXR0cmlidXRlcyIsICRhdHRyc05hbWVzcGFjZSk7CiAgICAgfQogCkBAIC01
NzIsNyArNTc2LDcgQEAgc3ViIHByaW50SlNFbGVtZW50SW5jbHVkZXMKIAogICAgIG15ICV0YWdz
U2VlbjsKICAgICBmb3IgbXkgJHRhZ05hbWUgKHNvcnQga2V5cyAldGFncykgewotICAgICAgICBt
eSAkSlNJbnRlcmZhY2VOYW1lID0gJHRhZ3N7JHRhZ05hbWV9eyJKU0ludGVyZmFjZU5hbWUifTsK
KyAgICAgICAgbXkgJEpTSW50ZXJmYWNlTmFtZSA9ICR0YWdzeyR0YWdOYW1lfXtKU0ludGVyZmFj
ZU5hbWV9OwogICAgICAgICBuZXh0IGlmIGRlZmluZWQoJHRhZ3NTZWVueyRKU0ludGVyZmFjZU5h
bWV9KSB8fCB1c2VzRGVmYXVsdEpTV3JhcHBlcigkdGFnTmFtZSk7CiAgICAgICAgICR0YWdzU2Vl
bnskSlNJbnRlcmZhY2VOYW1lfSA9IDE7CiAKQEAgLTU4Niw3ICs1OTAsNyBAQCBzdWIgcHJpbnRF
bGVtZW50SW5jbHVkZXMKIAogICAgIG15ICV0YWdzU2VlbjsKICAgICBmb3IgbXkgJHRhZ05hbWUg
KHNvcnQga2V5cyAldGFncykgewotICAgICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICR0YWdzeyR0
YWdOYW1lfXsiaW50ZXJmYWNlTmFtZSJ9OworICAgICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICR0
YWdzeyR0YWdOYW1lfXtpbnRlcmZhY2VOYW1lfTsKICAgICAgICAgbmV4dCBpZiBkZWZpbmVkKCR0
YWdzU2VlbnskaW50ZXJmYWNlTmFtZX0pOwogICAgICAgICAkdGFnc1NlZW57JGludGVyZmFjZU5h
bWV9ID0gMTsKIApAQCAtNjA0LDcgKzYwOCw3IEBAIHN1YiBwcmludERlZmluaXRpb25TdHJpbmdz
CiAKICAgICBteSAlbmFtZXMgPSAlJG5hbWVzUmVmOwogICAgIGZvciBteSAkbmFtZSAoc29ydCBr
ZXlzICUkbmFtZXNSZWYpIHsKLSAgICAgICAgbmV4dCBpZiAoISRwYXJhbWV0ZXJzeydleHBvcnRT
dHJpbmdzJ30gYW5kICEkbmFtZXN7JG5hbWV9eyJleHBvcnRTdHJpbmcifSk7CisgICAgICAgIG5l
eHQgaWYgKCEkcGFyYW1ldGVyc3tleHBvcnRTdHJpbmdzfSBhbmQgISRuYW1lc3skbmFtZX17ZXhw
b3J0U3RyaW5nfSk7CiAKICAgICAgICAgbXkgJHJlYWxOYW1lID0gJG5hbWU7CiAgICAgICAgICRy
ZWFsTmFtZSA9fiBzL18vLS9nOwpAQCAtNjI1LDcgKzYyOSw3IEBAIHN1YiBwcmludERlZmluaXRp
b25zCiAKICAgICBteSAlbmFtZXMgPSAlJG5hbWVzUmVmOwogICAgIGZvciBteSAkbmFtZSAoc29y
dCBrZXlzICUkbmFtZXNSZWYpIHsKLSAgICAgICAgbmV4dCBpZiAoJHBhcmFtZXRlcnN7J2V4cG9y
dFN0cmluZ3MnfSBvciAkbmFtZXN7JG5hbWV9eyJleHBvcnRTdHJpbmcifSk7CisgICAgICAgIG5l
eHQgaWYgKCRwYXJhbWV0ZXJze2V4cG9ydFN0cmluZ3N9IG9yICRuYW1lc3skbmFtZX17ZXhwb3J0
U3RyaW5nfSk7CiAKICAgICAgICAgbXkgJHJlYWxOYW1lID0gJG5hbWU7CiAgICAgICAgICRyZWFs
TmFtZSA9fiBzL18vLS9nOwpAQCAtNjM1LDcgKzYzOSw3IEBAIHN1YiBwcmludERlZmluaXRpb25z
CiAgICAgcHJpbnQgIlxuIjsKIAogICAgIGZvciBteSAkbmFtZSAoc29ydCBrZXlzICUkbmFtZXNS
ZWYpIHsKLSAgICAgICAgcHJpbnQgRiAiICAgIG5ldyAoKHZvaWQqKSYkbmFtZSIsIiR7c2hvcnRD
YW1lbFR5cGV9KSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkbmFtZSIsIiR7c2hvcnRDYW1lbFR5
cGV9U3RyaW5nLCAkbmFtZXNwYWNlVVJJKTtcbiI7CisgICAgICAgIHByaW50IEYgIiAgICBuZXcg
KCYkbmFtZSIsIiR7c2hvcnRDYW1lbFR5cGV9KSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkbmFt
ZSIsIiR7c2hvcnRDYW1lbFR5cGV9U3RyaW5nLCAkbmFtZXNwYWNlVVJJKTtcbiI7CiAgICAgfQog
fQogCkBAIC02NTEsMzkgKzY1NSwzMSBAQCBwcmludExpY2Vuc2VIZWFkZXIoJEYpOwogCiBwcmlu
dCBGIDw8RU5ECiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiJHBhcmFtZXRlcnN7J25h
bWVzcGFjZSd9RWxlbWVudEZhY3RvcnkuaCIKLQotI2luY2x1ZGUgIiRwYXJhbWV0ZXJzeyduYW1l
c3BhY2UnfU5hbWVzLmgiCi0jaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQotI2luY2x1ZGUg
IkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNlbmRpZgorI2luY2x1ZGUgIiRw
YXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50RmFjdG9yeS5oIgogCisjaW5jbHVkZSAiJHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfU5hbWVzLmgiCiBFTkQKIDsKIAotaWYgKCRwYXJhbWV0ZXJzeyduYW1l
c3BhY2UnfSBlcSAiSFRNTCIpIHsKLSAgICBwcmludCBGICIjaW5jbHVkZSBcIkhUTUxGb3JtRWxl
bWVudC5oXCJcbiI7Ci19Ci0KIHByaW50RWxlbWVudEluY2x1ZGVzKCRGKTsKIAogcHJpbnQgRiA8
PEVORAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NV
UFBPUlQpCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdXNpbmcgbmFtZXNwYWNlICRwYXJhbWV0ZXJz
eyduYW1lc3BhY2UnfU5hbWVzOwordXNpbmcgbmFtZXNwYWNlICRwYXJhbWV0ZXJze25hbWVzcGFj
ZX1OYW1lczsKIAogRU5ECiA7CiAKLXByaW50IEYgInR5cGVkZWYgUGFzc1JlZlB0cjwkcGFyYW1l
dGVyc3snbmFtZXNwYWNlJ31FbGVtZW50PiAoKkNvbnN0cnVjdG9yRnVuY3Rpb24pKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCoiOwotCi1pZiAoJHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9
IGVxICJIVE1MIikgewotICAgIHByaW50IEYgIiwgSFRNTEZvcm1FbGVtZW50KiI7Ci19Ci0KK3By
aW50IEYgInR5cGVkZWYgUGFzc1JlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4g
KCpDb25zdHJ1Y3RvckZ1bmN0aW9uKShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqIjsK
K3ByaW50IEYgIiwgSFRNTEZvcm1FbGVtZW50KiIgaWYgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBl
cSAiSFRNTCI7CiBwcmludCBGICIsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTtcbiI7CiBwcmludCBG
IDw8RU5ECiB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENvbnN0cnVjdG9yRnVu
Y3Rpb24+IEZ1bmN0aW9uTWFwOwpAQCAtNjk3LDcgKzY5Myw3IEBAIG15ICV0YWdDb25zdHJ1Y3Rv
ck1hcCA9IGJ1aWxkQ29uc3RydWN0b3IKIAogcHJpbnRDb25zdHJ1Y3RvcnMoJEYsIFwldGFnQ29u
c3RydWN0b3JNYXApOwogCi1wcmludCBGICIjaWYgJHBhcmFtZXRlcnN7J2d1YXJkRmFjdG9yeVdp
dGgnfVxuIiBpZiAkcGFyYW1ldGVyc3snZ3VhcmRGYWN0b3J5V2l0aCd9OworcHJpbnQgRiAiI2lm
ICRwYXJhbWV0ZXJze2d1YXJkRmFjdG9yeVdpdGh9XG4iIGlmICRwYXJhbWV0ZXJze2d1YXJkRmFj
dG9yeVdpdGh9OwogCiBwcmludCBGIDw8RU5ECiBzdGF0aWMgdm9pZCBhZGRUYWcoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnLCBDb25zdHJ1Y3RvckZ1bmN0aW9uIGZ1bmMpCkBAIC03MDUsMTAgKzcw
MSwxMCBAQCBzdGF0aWMgdm9pZCBhZGRUYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYgCiAgICAgZ0Z1
bmN0aW9uTWFwLT5zZXQodGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgZnVuYyk7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgdm9pZCBjcmVhdGVGdW5jdGlvbk1hcElmTmVjZXNzYXJ5KCkKK3N0YXRpYyB2b2lk
IGNyZWF0ZUZ1bmN0aW9uTWFwKCkKIHsKLSAgICBpZiAoZ0Z1bmN0aW9uTWFwKQotICAgICAgICBy
ZXR1cm47CisgICAgQVNTRVJUKCFnRnVuY3Rpb25NYXApOworCiAgICAgLy8gQ3JlYXRlIHRoZSB0
YWJsZS4KICAgICBnRnVuY3Rpb25NYXAgPSBuZXcgRnVuY3Rpb25NYXA7CiAgICAgCkBAIC03MTks
MzAgKzcxNSwyNSBAQCBFTkQKIHByaW50RnVuY3Rpb25Jbml0cygkRiwgXCV0YWdDb25zdHJ1Y3Rv
ck1hcCk7CiAKIHByaW50IEYgIn1cbiI7Ci1wcmludCBGICIjZW5kaWZcbiIgaWYgJHBhcmFtZXRl
cnN7J2d1YXJkRmFjdG9yeVdpdGgnfTsKLQotcHJpbnQgRiAiXG5QYXNzUmVmUHRyPCRwYXJhbWV0
ZXJzeyduYW1lc3BhY2UnfUVsZW1lbnQ+ICRwYXJhbWV0ZXJzeyduYW1lc3BhY2UnfUVsZW1lbnRG
YWN0b3J5OjpjcmVhdGUkcGFyYW1ldGVyc3snbmFtZXNwYWNlJ31FbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHFOYW1lLCBEb2N1bWVudCogZG9jIjsKLQotaWYgKCRwYXJhbWV0ZXJzeyJuYW1l
c3BhY2UifSBlcSAiSFRNTCIpIHsKLSAgICBwcmludCBGICIsIEhUTUxGb3JtRWxlbWVudCogZm9y
bUVsZW1lbnQiOwotfQorcHJpbnQgRiAiI2VuZGlmXG4iIGlmICRwYXJhbWV0ZXJze2d1YXJkRmFj
dG9yeVdpdGh9OwogCitwcmludCBGICJcblBhc3NSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNl
fUVsZW1lbnQ+ICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50RmFjdG9yeTo6Y3JlYXRlJHBh
cmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCI7CitwcmludCBGICIsIEhUTUxGb3JtRWxlbWVudCogZm9ybUVsZW1l
bnQiIGlmICRwYXJhbWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwiOwogcHJpbnQgRiAiLCBib29s
IGNyZWF0ZWRCeVBhcnNlcilcbntcbiI7CiAKLXByaW50IEYgIiNpZiAkcGFyYW1ldGVyc3snZ3Vh
cmRGYWN0b3J5V2l0aCd9XG4iIGlmICRwYXJhbWV0ZXJzeydndWFyZEZhY3RvcnlXaXRoJ307Citw
cmludCBGICIjaWYgJHBhcmFtZXRlcnN7Z3VhcmRGYWN0b3J5V2l0aH1cbiIgaWYgJHBhcmFtZXRl
cnN7Z3VhcmRGYWN0b3J5V2l0aH07CiAKIHByaW50IEYgPDxFTkQKLSAgICAvLyBEb24ndCBtYWtl
IGVsZW1lbnRzIHdpdGhvdXQgYSBkb2N1bWVudAotICAgIGlmICghZG9jKQorICAgIGlmICghZG9j
dW1lbnQpCiAgICAgICAgIHJldHVybiAwOwogCiBFTkQKIDsKIAotaWYgKCRwYXJhbWV0ZXJzeydu
YW1lc3BhY2UnfSBuZSAiSFRNTCIpIHsKK2lmICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IG5lICJI
VE1MIikgewogcHJpbnQgRiA8PEVORAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKLSAg
ICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2MtPnNldHRpbmdzKCk7CisgICAgU2V0dGluZ3MqIHNl
dHRpbmdzID0gZG9jdW1lbnQtPnNldHRpbmdzKCk7CiAgICAgaWYgKHNldHRpbmdzICYmIHNldHRp
bmdzLT51c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgpKQogICAgICAgICBy
ZXR1cm4gMDsKICNlbmRpZgpAQCAtNzUyLDIxICs3NDMsMjEgQEAgRU5ECiB9CiAKIHByaW50IEYg
PDxFTkQKLSAgICBjcmVhdGVGdW5jdGlvbk1hcElmTmVjZXNzYXJ5KCk7Ci0gICAgQ29uc3RydWN0
b3JGdW5jdGlvbiBmdW5jID0gZ0Z1bmN0aW9uTWFwLT5nZXQocU5hbWUubG9jYWxOYW1lKCkuaW1w
bCgpKTsKLSAgICBpZiAoZnVuYykKKyAgICBpZiAoIWdGdW5jdGlvbk1hcCkKKyAgICAgICAgY3Jl
YXRlRnVuY3Rpb25NYXAoKTsKKyAgICBpZiAoQ29uc3RydWN0b3JGdW5jdGlvbiBmdW5jdGlvbiA9
IGdGdW5jdGlvbk1hcC0+Z2V0KHFOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSkpCiBFTkQKIDsKIAot
aWYgKCRwYXJhbWV0ZXJzeyJuYW1lc3BhY2UifSBlcSAiSFRNTCIpIHsKLSAgICBwcmludCBGICIg
ICAgICAgIHJldHVybiBmdW5jKHFOYW1lLCBkb2MsIGZvcm1FbGVtZW50LCBjcmVhdGVkQnlQYXJz
ZXIpO1xuIjsKK2lmICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVxICJIVE1MIikgeworICAgIHBy
aW50IEYgIiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHFOYW1lLCBkb2N1bWVudCwgZm9ybUVsZW1l
bnQsIGNyZWF0ZWRCeVBhcnNlcik7XG4iOwogfSBlbHNlIHsKLSAgICBwcmludCBGICIgICAgICAg
IHJldHVybiBmdW5jKHFOYW1lLCBkb2MsIGNyZWF0ZWRCeVBhcnNlcik7XG4iOworICAgIHByaW50
IEYgIiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHFOYW1lLCBkb2N1bWVudCwgY3JlYXRlZEJ5UGFy
c2VyKTtcbiI7CiB9CiAKLXByaW50IEYgIiAgICByZXR1cm4gbmV3ICRwYXJhbWV0ZXJzeyduYW1l
c3BhY2UnfUVsZW1lbnQocU5hbWUsIGRvYyk7XG4iOworcHJpbnQgRiAiICAgIHJldHVybiBuZXcg
JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQocU5hbWUsIGRvY3VtZW50KTtcbiI7CiAKLWlm
ICgkcGFyYW1ldGVyc3snZ3VhcmRGYWN0b3J5V2l0aCd9KSB7CitpZiAoJHBhcmFtZXRlcnN7Z3Vh
cmRGYWN0b3J5V2l0aH0pIHsKIAogcHJpbnQgRiA8PEVORAogI2Vsc2UKQEAgLTc5Nyw4ICs3ODgs
OCBAQCBzdWIgcHJpbnRGYWN0b3J5SGVhZGVyRmlsZQogICAgIHByaW50TGljZW5zZUhlYWRlcigk
Rik7CiAKICAgICBwcmludCBGPDxFTkQKLSNpZm5kZWYgJHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9
RWxlbWVudEZhY3RvcnlfaAotI2RlZmluZSAkcGFyYW1ldGVyc3snbmFtZXNwYWNlJ31FbGVtZW50
RmFjdG9yeV9oCisjaWZuZGVmICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50RmFjdG9yeV9o
CisjZGVmaW5lICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50RmFjdG9yeV9oCiAKICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCkBAIC04MTEsMzUgKzgwMiwyOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzICRwYXJhbWV0ZXJz
eyduYW1lc3BhY2UnfUVsZW1lbnQ7CisgICAgY2xhc3MgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVs
ZW1lbnQ7CiBFTkQKIDsKIAotaWYgKCRwYXJhbWV0ZXJzeyduYW1lc3BhY2UnfSBlcSAiSFRNTCIp
IHsKLSAgICBwcmludCBGICIgICAgIGNsYXNzIEhUTUxGb3JtRWxlbWVudDtcbiI7Ci19Citwcmlu
dCBGICIgICAgIGNsYXNzIEhUTUxGb3JtRWxlbWVudDtcbiIgaWYgJHBhcmFtZXRlcnN7bmFtZXNw
YWNlfSBlcSAiSFRNTCI7CiAKIHByaW50IEY8PEVORAogICAgIC8vIFRoZSBpZGVhIGJlaGluZCB0
aGlzIGNsYXNzIGlzIHRoYXQgdGhlcmUgd2lsbCBldmVudHVhbGx5IGJlIGEgbWFwcGluZyBmcm9t
IG5hbWVzcGFjZSBVUklzIHRvIEVsZW1lbnRGYWN0b3JpZXMgdGhhdCBjYW4gZGlzcGVuc2UKICAg
ICAvLyBlbGVtZW50cy4gSW4gYSBjb21wb3VuZCBkb2N1bWVudCB3b3JsZCwgdGhlIGdlbmVyaWMg
Y3JlYXRlRWxlbWVudCBmdW5jdGlvbiAod2lsbCBlbmQgdXAgYmVpbmcgdmlydHVhbCkgd2lsbCBi
ZSBjYWxsZWQuCi0gICAgY2xhc3MgJHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9RWxlbWVudEZhY3Rv
cnkgeworICAgIGNsYXNzICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50RmFjdG9yeSB7CiAg
ICAgcHVibGljOgogICAgICAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29u
c3QgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSYsIFdlYkNvcmU6OkRvY3VtZW50KiwgYm9vbCBjcmVh
dGVkQnlQYXJzZXIgPSB0cnVlKTsKIEVORAogOwotcHJpbnQgRiAiICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjwkcGFyYW1ldGVyc3snbmFtZXNwYWNlJ31FbGVtZW50PiBjcmVhdGUkcGFyYW1ldGVy
c3snbmFtZXNwYWNlJ31FbGVtZW50KGNvbnN0IFdlYkNvcmU6OlF1YWxpZmllZE5hbWUmLCBXZWJD
b3JlOjpEb2N1bWVudCoiOwotCi1pZiAoJHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9IGVxICJIVE1M
IikgewotICAgIHByaW50IEYgIiwgSFRNTEZvcm1FbGVtZW50KiA9IDAiOwotfQotCitwcmludCBG
ICIgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50
PiBjcmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudChjb25zdCBXZWJDb3JlOjpRdWFs
aWZpZWROYW1lJiwgV2ViQ29yZTo6RG9jdW1lbnQqIjsKK3ByaW50IEYgIiwgSFRNTEZvcm1FbGVt
ZW50KiA9IDAiIGlmICRwYXJhbWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwiOwogcHJpbnQgRiAi
LCBib29sIC8qY3JlYXRlZEJ5UGFyc2VyKi8gPSB0cnVlKTtcbiI7CiAKIHByaW50ZiBGPDxFTkQK
ICAgICB9OwogfQogCi0jZW5kaWYgLy8gJHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9RWxlbWVudEZh
Y3RvcnlfaAorI2VuZGlmIC8vICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50RmFjdG9yeV9o
CiAKIEVORAogOwpAQCAtODU0LDcgKzgzOSw3IEBAIHN1YiB1c2VzRGVmYXVsdEpTV3JhcHBlcgog
ICAgIG15ICRuYW1lID0gc2hpZnQ7CiAKICAgICAjIEEgdGFnIHJldXNlcyB0aGUgZGVmYXVsdCB3
cmFwcGVyIGlmIGl0cyBKU0ludGVyZmFjZU5hbWUgbWF0Y2hlcyB0aGUgZGVmYXVsdCBuYW1lc3Bh
Y2UgRWxlbWVudC4KLSAgICByZXR1cm4gJHRhZ3N7JG5hbWV9eydKU0ludGVyZmFjZU5hbWUnfSBl
cSAkcGFyYW1ldGVyc3sibmFtZXNwYWNlIn0gLiAiRWxlbWVudCIgfHwgJHRhZ3N7JG5hbWV9eydK
U0ludGVyZmFjZU5hbWUnfSBlcSAiSFRNTE5vU2NyaXB0RWxlbWVudCI7CisgICAgcmV0dXJuICR0
YWdzeyRuYW1lfXtKU0ludGVyZmFjZU5hbWV9IGVxICRwYXJhbWV0ZXJze25hbWVzcGFjZX0gLiAi
RWxlbWVudCIgfHwgJHRhZ3N7JG5hbWV9e0pTSW50ZXJmYWNlTmFtZX0gZXEgIkhUTUxOb1Njcmlw
dEVsZW1lbnQiOwogfQogCiBzdWIgcHJpbnRXcmFwcGVyRnVuY3Rpb25zCkBAIC04NjQsMTEgKzg0
OSwxMSBAQCBzdWIgcHJpbnRXcmFwcGVyRnVuY3Rpb25zCiAgICAgbXkgJXRhZ3NTZWVuOwogICAg
IGZvciBteSAkdGFnTmFtZSAoc29ydCBrZXlzICV0YWdzKSB7CiAgICAgICAgICMgQXZvaWQgZGVm
aW5pbmcgdGhlIHNhbWUgd3JhcHBlciBtZXRob2QgdHdpY2UuCi0gICAgICAgIG15ICRKU0ludGVy
ZmFjZU5hbWUgPSAkdGFnc3skdGFnTmFtZX17IkpTSW50ZXJmYWNlTmFtZSJ9OworICAgICAgICBt
eSAkSlNJbnRlcmZhY2VOYW1lID0gJHRhZ3N7JHRhZ05hbWV9e0pTSW50ZXJmYWNlTmFtZX07CiAg
ICAgICAgIG5leHQgaWYgZGVmaW5lZCgkdGFnc1NlZW57JEpTSW50ZXJmYWNlTmFtZX0pIHx8IHVz
ZXNEZWZhdWx0SlNXcmFwcGVyKCR0YWdOYW1lKTsKICAgICAgICAgJHRhZ3NTZWVueyRKU0ludGVy
ZmFjZU5hbWV9ID0gMTsKIAotICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAkdGFnc3skdGFnTmFt
ZX17ImNvbmRpdGlvbmFsIn07CisgICAgICAgIG15ICRjb25kaXRpb25hbCA9ICR0YWdzeyR0YWdO
YW1lfXtjb25kaXRpb25hbH07CiAgICAgICAgIGlmICgkY29uZGl0aW9uYWwpIHsKICAgICAgICAg
ICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICJFTkFCTEUoIiAuIGpvaW4oIikgJiYgRU5BQkxF
KCIsIHNwbGl0KC8mLywgJGNvbmRpdGlvbmFsKSkgLiAiKSI7CiAgICAgICAgICAgICBwcmludCBG
ICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxuIjsKQEAgLTg3NiwxMiArODYxLDEyIEBAIHN1
YiBwcmludFdyYXBwZXJGdW5jdGlvbnMKIAogICAgICAgICAjIEhhY2sgZm9yIHRoZSBtZWRpYSB0
YWdzCiAgICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGhhdmUgYmVlbiBkb25lIHZpYSBhIEN1
c3RvbVdyYXBwZXIgYXR0cmlidXRlIGFuZCBhIHNlcGFyYXRlICpDdXN0b20gZmlsZS4KLSAgICAg
ICAgaWYgKCR0YWdzeyR0YWdOYW1lfXsid3JhcHBlck9ubHlJZk1lZGlhSXNBdmFpbGFibGUifSkg
eworICAgICAgICBpZiAoJHRhZ3N7JHRhZ05hbWV9e3dyYXBwZXJPbmx5SWZNZWRpYUlzQXZhaWxh
YmxlfSkgewogICAgICAgICAgICAgcHJpbnQgRiA8PEVORAotc3RhdGljIEpTTm9kZSogY3JlYXRl
JHtKU0ludGVyZmFjZU5hbWV9V3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8JHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9RWxl
bWVudD4gZWxlbWVudCkKK3N0YXRpYyBKU05vZGUqIGNyZWF0ZSR7SlNJbnRlcmZhY2VOYW1lfVdy
YXBwZXIoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
YXNzUmVmUHRyPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiBlbGVtZW50KQogewogICAg
IGlmICghTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJldHVybiBDUkVBVEVf
RE9NX05PREVfV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsICRwYXJhbWV0ZXJzeyduYW1lc3Bh
Y2UnfUVsZW1lbnQsIGVsZW1lbnQuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9O
T0RFX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxl
bWVudCwgZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIENSRUFURV9ET01fTk9ERV9XUkFQUEVS
KGV4ZWMsIGdsb2JhbE9iamVjdCwgJHtKU0ludGVyZmFjZU5hbWV9LCBlbGVtZW50LmdldCgpKTsK
IH0KIApAQCAtODg5LDcgKzg3NCw3IEBAIEVORAogOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgcHJpbnQgRiA8PEVORAotc3RhdGljIEpTTm9kZSogY3JlYXRlJHtKU0ludGVyZmFjZU5h
bWV9V3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFBhc3NSZWZQdHI8JHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9RWxlbWVudD4gZWxlbWVudCkK
K3N0YXRpYyBKU05vZGUqIGNyZWF0ZSR7SlNJbnRlcmZhY2VOYW1lfVdyYXBwZXIoRXhlY1N0YXRl
KiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPCRwYXJh
bWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiBlbGVtZW50KQogewogICAgIHJldHVybiBDUkVBVEVf
RE9NX05PREVfV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsICR7SlNJbnRlcmZhY2VOYW1lfSwg
ZWxlbWVudC5nZXQoKSk7CiB9CkBAIC04OTcsNiArODgyLDcgQEAgc3RhdGljIEpTTm9kZSogY3Jl
YXRlJHtKU0ludGVyZmFjZU5hbWV9VwogRU5ECiA7CiAgICAgICAgIH0KKwogICAgICAgICBpZiAo
JGNvbmRpdGlvbmFsKSB7CiAgICAgICAgICAgICBwcmludCBGICIjZW5kaWZcblxuIjsKICAgICAg
ICAgfQpAQCAtOTEzLDEzICs4OTksMTMgQEAgc3ViIHByaW50V3JhcHBlckZhY3RvcnlDcHBGaWxl
CiAKICAgICBwcmludCBGICIjaW5jbHVkZSBcImNvbmZpZy5oXCJcblxuIjsKIAotICAgIHByaW50
IEYgIiNpZiAkcGFyYW1ldGVyc3snZ3VhcmRGYWN0b3J5V2l0aCd9XG5cbiIgaWYgJHBhcmFtZXRl
cnN7J2d1YXJkRmFjdG9yeVdpdGgnfTsKKyAgICBwcmludCBGICIjaWYgJHBhcmFtZXRlcnN7Z3Vh
cmRGYWN0b3J5V2l0aH1cblxuIiBpZiAkcGFyYW1ldGVyc3tndWFyZEZhY3RvcnlXaXRofTsKIAot
ICAgIHByaW50IEYgIiNpbmNsdWRlIFwiSlMkcGFyYW1ldGVyc3snbmFtZXNwYWNlJ31FbGVtZW50
V3JhcHBlckZhY3RvcnkuaFwiXG4iOworICAgIHByaW50IEYgIiNpbmNsdWRlIFwiSlMkcGFyYW1l
dGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJGYWN0b3J5LmhcIlxuIjsKIAogICAgIHByaW50
SlNFbGVtZW50SW5jbHVkZXMoJEYpOwogCi0gICAgcHJpbnQgRiAiXG4jaW5jbHVkZSBcIiRwYXJh
bWV0ZXJzeyduYW1lc3BhY2UnfU5hbWVzLmhcIlxuXG4iOworICAgIHByaW50IEYgIlxuI2luY2x1
ZGUgXCIkcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFtZXMuaFwiXG5cbiI7CiAKICAgICBwcmludEVs
ZW1lbnRJbmNsdWRlcygkRik7CiAKQEAgLTkzMCw5ICs5MTYsOSBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5nIG5hbWVzcGFjZSAkcGFyYW1ldGVy
c3snbmFtZXNwYWNlJ31OYW1lczsKK3VzaW5nIG5hbWVzcGFjZSAkcGFyYW1ldGVyc3tuYW1lc3Bh
Y2V9TmFtZXM7CiAKLXR5cGVkZWYgSlNOb2RlKiAoKkNyZWF0ZSRwYXJhbWV0ZXJzeyduYW1lc3Bh
Y2UnfUVsZW1lbnRXcmFwcGVyRnVuY3Rpb24pKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0
KiwgUGFzc1JlZlB0cjwkcGFyYW1ldGVyc3snbmFtZXNwYWNlJ31FbGVtZW50Pik7Cit0eXBlZGVm
IEpTTm9kZSogKCpDcmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJGdW5j
dGlvbikoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRyPCRwYXJhbWV0
ZXJze25hbWVzcGFjZX1FbGVtZW50Pik7CiAKIEVORAogOwpAQCAtOTQwLDkgKzkyNiw5IEBAIEVO
RAogICAgIHByaW50V3JhcHBlckZ1bmN0aW9ucygkRik7CiAKICAgICBwcmludCBGIDw8RU5ECi1K
U05vZGUqIGNyZWF0ZUpTJHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9V3JhcHBlcihFeGVjU3RhdGUq
IGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8JHBhcmFt
ZXRlcnN7J25hbWVzcGFjZSd9RWxlbWVudD4gZWxlbWVudCkKK0pTTm9kZSogY3JlYXRlSlMkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9V3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1l
bnQ+IGVsZW1lbnQpCiB7ICAgCi0gICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OkF0b21pY1N0
cmluZ0ltcGwqLCBDcmVhdGUkcGFyYW1ldGVyc3snbmFtZXNwYWNlJ31FbGVtZW50V3JhcHBlckZ1
bmN0aW9uPiBGdW5jdGlvbk1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6QXRvbWlj
U3RyaW5nSW1wbCosIENyZWF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBlckZ1
bmN0aW9uPiBGdW5jdGlvbk1hcDsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEZ1bmN0aW9uTWFw
LCBtYXAsICgpKTsKICAgICBpZiAobWFwLmlzRW1wdHkoKSkgewogRU5ECkBAIC05NTIsMTMgKzkz
OCwxMyBAQCBFTkQKICAgICAgICAgIyBEbyBub3QgYWRkIHRoZSBuYW1lIHRvIHRoZSBtYXAgaWYg
aXQgZG9lcyBub3QgaGF2ZSBhIEpTIHdyYXBwZXIgY29uc3RydWN0b3Igb3IgdXNlcyB0aGUgZGVm
YXVsdCB3cmFwcGVyLgogICAgICAgICBuZXh0IGlmIHVzZXNEZWZhdWx0SlNXcmFwcGVyKCR0YWcs
IFwldGFncyk7CiAKLSAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0gJHRhZ3N7JHRhZ317ImNvbmRp
dGlvbmFsIn07CisgICAgICAgIG15ICRjb25kaXRpb25hbCA9ICR0YWdzeyR0YWd9e2NvbmRpdGlv
bmFsfTsKICAgICAgICAgaWYgKCRjb25kaXRpb25hbCkgewogICAgICAgICAgICAgbXkgJGNvbmRp
dGlvbmFsU3RyaW5nID0gIkVOQUJMRSgiIC4gam9pbigiKSAmJiBFTkFCTEUoIiwgc3BsaXQoLyYv
LCAkY29uZGl0aW9uYWwpKSAuICIpIjsKICAgICAgICAgICAgIHByaW50IEYgIiNpZiAke2NvbmRp
dGlvbmFsU3RyaW5nfVxuIjsKICAgICAgICAgfQogCi0gICAgICAgIG15ICR1Y1RhZyA9ICR0YWdz
eyR0YWd9eyJKU0ludGVyZmFjZU5hbWUifTsKKyAgICAgICAgbXkgJHVjVGFnID0gJHRhZ3N7JHRh
Z317SlNJbnRlcmZhY2VOYW1lfTsKICAgICAgICAgcHJpbnQgRiAiICAgICAgIG1hcC5zZXQoJHt0
YWd9VGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlJHt1Y1RhZ31XcmFwcGVyKTtcbiI7CiAK
ICAgICAgICAgaWYgKCRjb25kaXRpb25hbCkgewpAQCAtOTY4LDEwICs5NTQsMTAgQEAgRU5ECiAK
ICAgICBwcmludCBGIDw8RU5ECiAgICAgfQotICAgIENyZWF0ZSRwYXJhbWV0ZXJzeyduYW1lc3Bh
Y2UnfUVsZW1lbnRXcmFwcGVyRnVuY3Rpb24gY3JlYXRlV3JhcHBlckZ1bmN0aW9uID0gbWFwLmdl
dChlbGVtZW50LT5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgIENyZWF0ZSRwYXJhbWV0ZXJze25h
bWVzcGFjZX1FbGVtZW50V3JhcHBlckZ1bmN0aW9uIGNyZWF0ZVdyYXBwZXJGdW5jdGlvbiA9IG1h
cC5nZXQoZWxlbWVudC0+bG9jYWxOYW1lKCkuaW1wbCgpKTsKICAgICBpZiAoY3JlYXRlV3JhcHBl
ckZ1bmN0aW9uKQogICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlckZ1bmN0aW9uKGV4ZWMsIGds
b2JhbE9iamVjdCwgZWxlbWVudCk7Ci0gICAgcmV0dXJuIENSRUFURV9ET01fTk9ERV9XUkFQUEVS
KGV4ZWMsIGdsb2JhbE9iamVjdCwgJHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9RWxlbWVudCwgZWxl
bWVudC5nZXQoKSk7CisgICAgcmV0dXJuIENSRUFURV9ET01fTk9ERV9XUkFQUEVSKGV4ZWMsIGds
b2JhbE9iamVjdCwgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQsIGVsZW1lbnQuZ2V0KCkp
OwogfQogCiB9CkBAIC05NzksNyArOTY1LDcgQEAgRU5ECiBFTkQKIDsKIAotICAgIHByaW50IEYg
IiNlbmRpZlxuIiBpZiAkcGFyYW1ldGVyc3snZ3VhcmRGYWN0b3J5V2l0aCd9OworICAgIHByaW50
IEYgIiNlbmRpZlxuIiBpZiAkcGFyYW1ldGVyc3tndWFyZEZhY3RvcnlXaXRofTsKIAogICAgIGNs
b3NlIEY7CiB9CkBAIC05OTIsMTAgKzk3OCwxMCBAQCBzdWIgcHJpbnRXcmFwcGVyRmFjdG9yeUhl
YWRlckZpbGUKIAogICAgIHByaW50TGljZW5zZUhlYWRlcigkRik7CiAKLSAgICBwcmludCBGICIj
aWZuZGVmIEpTJHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9RWxlbWVudFdyYXBwZXJGYWN0b3J5X2hc
biI7Ci0gICAgcHJpbnQgRiAiI2RlZmluZSBKUyRwYXJhbWV0ZXJzeyduYW1lc3BhY2UnfUVsZW1l
bnRXcmFwcGVyRmFjdG9yeV9oXG5cbiI7CisgICAgcHJpbnQgRiAiI2lmbmRlZiBKUyRwYXJhbWV0
ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBlckZhY3RvcnlfaFxuIjsKKyAgICBwcmludCBGICIj
ZGVmaW5lIEpTJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRXcmFwcGVyRmFjdG9yeV9oXG5c
biI7CiAKLSAgICBwcmludCBGICIjaWYgJHBhcmFtZXRlcnN7J2d1YXJkRmFjdG9yeVdpdGgnfVxu
IiBpZiAkcGFyYW1ldGVyc3snZ3VhcmRGYWN0b3J5V2l0aCd9OworICAgIHByaW50IEYgIiNpZiAk
cGFyYW1ldGVyc3tndWFyZEZhY3RvcnlXaXRofVxuIiBpZiAkcGFyYW1ldGVyc3tndWFyZEZhY3Rv
cnlXaXRofTsKIAogICAgIHByaW50IEYgPDxFTkQKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpA
QCAtMTAwOCwxOCArOTk0LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEpT
Tm9kZTsKICAgICBjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKLSAgICBjbGFzcyAkcGFyYW1ldGVy
c3snbmFtZXNwYWNlJ31FbGVtZW50OworICAgIGNsYXNzICRwYXJhbWV0ZXJze25hbWVzcGFjZX1F
bGVtZW50OwogCi0gICAgSlNOb2RlKiBjcmVhdGVKUyRwYXJhbWV0ZXJzeyduYW1lc3BhY2UnfVdy
YXBwZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8JHBh
cmFtZXRlcnN7J25hbWVzcGFjZSd9RWxlbWVudD4pOworICAgIEpTTm9kZSogY3JlYXRlSlMkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9V3JhcHBlcihKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0KiwgUGFzc1JlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4pOwogCiB9CiAg
CiBFTkQKIDsKIAotICAgIHByaW50IEYgIiNlbmRpZiAvLyAkcGFyYW1ldGVyc3snZ3VhcmRGYWN0
b3J5V2l0aCd9XG5cbiIgaWYgJHBhcmFtZXRlcnN7J2d1YXJkRmFjdG9yeVdpdGgnfTsKKyAgICBw
cmludCBGICIjZW5kaWYgLy8gJHBhcmFtZXRlcnN7Z3VhcmRGYWN0b3J5V2l0aH1cblxuIiBpZiAk
cGFyYW1ldGVyc3tndWFyZEZhY3RvcnlXaXRofTsKIAotICAgIHByaW50IEYgIiNlbmRpZiAvLyBK
UyRwYXJhbWV0ZXJzeyduYW1lc3BhY2UnfUVsZW1lbnRXcmFwcGVyRmFjdG9yeV9oXG4iOworICAg
IHByaW50IEYgIiNlbmRpZiAvLyBKUyRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBl
ckZhY3RvcnlfaFxuIjsKIAogICAgIGNsb3NlIEY7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34953</attachid>
            <date>2009-08-16 22:51:56 -0700</date>
            <delta_ts>2009-08-16 23:03:42 -0700</delta_ts>
            <desc>patch</desc>
            <filename>FactoryPatch.txt</filename>
            <type>text/plain</type>
            <size>37426</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NzM1MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMDktMDgtMTYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNjcmlw
dCB0byBjcmVhdGUgZWxlbWVudCBmYWN0b3J5IG5lZWRzIGNoYW5nZXMgdG8gYWNjb21tb2RhdGUg
Y2FsbGluZyBjcmVhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI4Mzc5CisKKyAgICAgICAgKiBkb20vbWFrZV9uYW1lcy5wbDogVHdlYWsgZm9ybWF0
dGluZy4gUmVtb3ZlIGxvdHMgb2YgdW5uZWVkZWQgcXVvdGVzCisgICAgICAgIGFyb3VuZCBuYW1l
cyB1c2VkIGluc2lkZSB7fS4gQWRkZWQgbmV3IGNyZWF0ZVdpdGhOZXcgcHJvcGVydHkgZm9yIHRh
Z3MKKyAgICAgICAgdGhhdCBtYWtlcyB0aGUgZmFjdG9yeSB1c2UgYSBjcmVhdGUgZnVuY3Rpb24g
aW5zdGVhZCBvZiBjYWxsaW5nIG5ldy4KKyAgICAgICAgUmVuYW1lZCBmdW5jdGlvbnMgd2l0aCBp
bml0aWFsaXplIGluIHRoZWlyIG5hbWUgdG8gaGF2ZSBkZWZhdWx0IGluIHRoZWlyCisgICAgICAg
IG5hbWUsIHNpbmNlIHRoZXkgcmV0dXJuIGFuIGFycmF5IGZ1bGwgb2YgZGVmYXVsdCB2YWx1ZXMg
YW5kIGRvbid0IHRoZW1zZWx2ZXMKKyAgICAgICAgaW5pdGlhbGl6ZSBhbnl0aGluZy4KKwogMjAw
OS0wOC0xNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFuIEJlcm5zdGVpbi4KSW5kZXg6IFdlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAkocmV2aXNpb24gNDczMTIpCisr
KyBXZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCSh3b3JraW5nIGNvcHkpCkBAIC00OCwyOCArNDgs
MzAgQEAgbXkgJXBhcmFtZXRlcnMgPSAoKTsKIG15ICRleHRyYURlZmluZXMgPSAwOwogbXkgJHBy
ZXByb2Nlc3NvciA9ICIvdXNyL2Jpbi9nY2MgLUUgLVAgLXggYysrIjsKIAotR2V0T3B0aW9ucygn
dGFncz1zJyA9PiBcJHRhZ3NGaWxlLCAKK0dldE9wdGlvbnMoCisgICAgJ3RhZ3M9cycgPT4gXCR0
YWdzRmlsZSwgCiAgICAgJ2F0dHJzPXMnID0+IFwkYXR0cnNGaWxlLAogICAgICdmYWN0b3J5JyA9
PiBcJHByaW50RmFjdG9yeSwKICAgICAnb3V0cHV0RGlyPXMnID0+IFwkb3V0cHV0RGlyLAogICAg
ICdleHRyYURlZmluZXM9cycgPT4gXCRleHRyYURlZmluZXMsCiAgICAgJ3ByZXByb2Nlc3Nvcj1z
JyA9PiBcJHByZXByb2Nlc3NvciwKLSAgICAnd3JhcHBlckZhY3RvcnknID0+IFwkcHJpbnRXcmFw
cGVyRmFjdG9yeSk7CisgICAgJ3dyYXBwZXJGYWN0b3J5JyA9PiBcJHByaW50V3JhcHBlckZhY3Rv
cnkKKyk7CiAKIGRpZSAiWW91IG11c3Qgc3BlY2lmeSBhdCBsZWFzdCBvbmUgb2YgLS10YWdzIDxm
aWxlPiBvciAtLWF0dHJzIDxmaWxlPiIgdW5sZXNzIChsZW5ndGgoJHRhZ3NGaWxlKSB8fCBsZW5n
dGgoJGF0dHJzRmlsZSkpOwogCiByZWFkTmFtZXMoJHRhZ3NGaWxlLCAidGFncyIpIGlmIGxlbmd0
aCgkdGFnc0ZpbGUpOwogcmVhZE5hbWVzKCRhdHRyc0ZpbGUsICJhdHRycyIpIGlmIGxlbmd0aCgk
YXR0cnNGaWxlKTsKIAotZGllICJZb3UgbXVzdCBzcGVjaWZ5IGEgbmFtZXNwYWNlIChlLmcuIFNW
RykgZm9yIDxuYW1lc3BhY2U+TmFtZXMuaCIgdW5sZXNzICRwYXJhbWV0ZXJzeyduYW1lc3BhY2Un
fTsKLWRpZSAiWW91IG11c3Qgc3BlY2lmeSBhIG5hbWVzcGFjZVVSSSAoZS5nLiBodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZykiIHVubGVzcyAkcGFyYW1ldGVyc3snbmFtZXNwYWNlVVJJJ307Citk
aWUgIllvdSBtdXN0IHNwZWNpZnkgYSBuYW1lc3BhY2UgKGUuZy4gU1ZHKSBmb3IgPG5hbWVzcGFj
ZT5OYW1lcy5oIiB1bmxlc3MgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfTsKK2RpZSAiWW91IG11c3Qg
c3BlY2lmeSBhIG5hbWVzcGFjZVVSSSAoZS5nLiBodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyki
IHVubGVzcyAkcGFyYW1ldGVyc3tuYW1lc3BhY2VVUkl9OwogCi0kcGFyYW1ldGVyc3snbmFtZXNw
YWNlUHJlZml4J30gPSAkcGFyYW1ldGVyc3snbmFtZXNwYWNlJ30gdW5sZXNzICRwYXJhbWV0ZXJz
eyduYW1lc3BhY2VQcmVmaXgnfTsKKyRwYXJhbWV0ZXJze25hbWVzcGFjZVByZWZpeH0gPSAkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9IHVubGVzcyAkcGFyYW1ldGVyc3tuYW1lc3BhY2VQcmVmaXh9Owog
CiBta3BhdGgoJG91dHB1dERpcik7Ci1teSAkbmFtZXNCYXNlUGF0aCA9ICIkb3V0cHV0RGlyLyRw
YXJhbWV0ZXJzeyduYW1lc3BhY2UnfU5hbWVzIjsKLW15ICRmYWN0b3J5QmFzZVBhdGggPSAiJG91
dHB1dERpci8kcGFyYW1ldGVyc3snbmFtZXNwYWNlJ31FbGVtZW50RmFjdG9yeSI7Ci1teSAkd3Jh
cHBlckZhY3RvcnlCYXNlUGF0aCA9ICIkb3V0cHV0RGlyL0pTJHBhcmFtZXRlcnN7J25hbWVzcGFj
ZSd9RWxlbWVudFdyYXBwZXJGYWN0b3J5IjsKK215ICRuYW1lc0Jhc2VQYXRoID0gIiRvdXRwdXRE
aXIvJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVzIjsKK215ICRmYWN0b3J5QmFzZVBhdGggPSAi
JG91dHB1dERpci8kcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudEZhY3RvcnkiOworbXkgJHdy
YXBwZXJGYWN0b3J5QmFzZVBhdGggPSAiJG91dHB1dERpci9KUyRwYXJhbWV0ZXJze25hbWVzcGFj
ZX1FbGVtZW50V3JhcHBlckZhY3RvcnkiOwogCiBwcmludE5hbWVzSGVhZGVyRmlsZSgiJG5hbWVz
QmFzZVBhdGguaCIpOwogcHJpbnROYW1lc0NwcEZpbGUoIiRuYW1lc0Jhc2VQYXRoLmNwcCIpOwpA
QCAtODYsMzkgKzg4LDQ0IEBAIGlmICgkcHJpbnRXcmFwcGVyRmFjdG9yeSkgewogCiAjIyMgSGFz
aCBpbml0aWFsaXphdGlvbgogCi1zdWIgaW5pdGlhbGl6ZVRhZ1Byb3BlcnR5SGFzaAorc3ViIGRl
ZmF1bHRUYWdQcm9wZXJ0eUhhc2gKIHsKLSAgICByZXR1cm4gKCdjb25zdHJ1Y3Rvck5lZWRzQ3Jl
YXRlZEJ5UGFyc2VyJyA9PiAwLAotICAgICAgICAgICAgJ2NvbnN0cnVjdG9yTmVlZHNGb3JtRWxl
bWVudCcgPT4gMCwKLSAgICAgICAgICAgICdleHBvcnRTdHJpbmcnID0+IDAsCi0gICAgICAgICAg
ICAnaW50ZXJmYWNlTmFtZScgPT4gZGVmYXVsdEludGVyZmFjZU5hbWUoJF9bMF0pLAotICAgICAg
ICAgICAgIyBCeSBkZWZhdWx0LCB0aGUgSlNJbnRlcmZhY2VOYW1lIGlzIHRoZSBzYW1lIGFzIHRo
ZSBpbnRlcmZhY2VOYW1lLgotICAgICAgICAgICAgJ0pTSW50ZXJmYWNlTmFtZScgPT4gZGVmYXVs
dEludGVyZmFjZU5hbWUoJF9bMF0pLAotICAgICAgICAgICAgJ21hcFRvVGFnTmFtZScgPT4gJycs
Ci0gICAgICAgICAgICAnd3JhcHBlck9ubHlJZk1lZGlhSXNBdmFpbGFibGUnID0+IDAsCi0gICAg
ICAgICAgICAnY29uZGl0aW9uYWwnID0+IDApOworICAgIHJldHVybiAoCisgICAgICAgICdjb25z
dHJ1Y3Rvck5lZWRzQ3JlYXRlZEJ5UGFyc2VyJyA9PiAwLAorICAgICAgICAnY29uc3RydWN0b3JO
ZWVkc0Zvcm1FbGVtZW50JyA9PiAwLAorICAgICAgICAnY3JlYXRlV2l0aE5ldycgPT4gMSwKKyAg
ICAgICAgJ2V4cG9ydFN0cmluZycgPT4gMCwKKyAgICAgICAgJ2ludGVyZmFjZU5hbWUnID0+IGRl
ZmF1bHRJbnRlcmZhY2VOYW1lKCRfWzBdKSwKKyAgICAgICAgIyBCeSBkZWZhdWx0LCB0aGUgSlNJ
bnRlcmZhY2VOYW1lIGlzIHRoZSBzYW1lIGFzIHRoZSBpbnRlcmZhY2VOYW1lLgorICAgICAgICAn
SlNJbnRlcmZhY2VOYW1lJyA9PiBkZWZhdWx0SW50ZXJmYWNlTmFtZSgkX1swXSksCisgICAgICAg
ICdtYXBUb1RhZ05hbWUnID0+ICcnLAorICAgICAgICAnd3JhcHBlck9ubHlJZk1lZGlhSXNBdmFp
bGFibGUnID0+IDAsCisgICAgICAgICdjb25kaXRpb25hbCcgPT4gMAorICAgICk7CiB9CiAKLXN1
YiBpbml0aWFsaXplQXR0clByb3BlcnR5SGFzaAorc3ViIGRlZmF1bHRBdHRyUHJvcGVydHlIYXNo
CiB7CiAgICAgcmV0dXJuICgnZXhwb3J0U3RyaW5nJyA9PiAwKTsKIH0KIAotc3ViIGluaXRpYWxp
emVQYXJhbWV0ZXJzSGFzaAorc3ViIGRlZmF1bHRQYXJhbWV0ZXJzSGFzaAogewotICAgIHJldHVy
biAoJ25hbWVzcGFjZScgPT4gJycsCi0gICAgICAgICAgICAnbmFtZXNwYWNlUHJlZml4JyA9PiAn
JywKLSAgICAgICAgICAgICduYW1lc3BhY2VVUkknID0+ICcnLAotICAgICAgICAgICAgJ2d1YXJk
RmFjdG9yeVdpdGgnID0+ICcnLAotICAgICAgICAgICAgJ3RhZ3NOdWxsTmFtZXNwYWNlJyA9PiAw
LAotICAgICAgICAgICAgJ2F0dHJzTnVsbE5hbWVzcGFjZScgPT4gMCwKLSAgICAgICAgICAgICdl
eHBvcnRTdHJpbmdzJyA9PiAwKTsKKyAgICByZXR1cm4gKAorICAgICAgICAnbmFtZXNwYWNlJyA9
PiAnJywKKyAgICAgICAgJ25hbWVzcGFjZVByZWZpeCcgPT4gJycsCisgICAgICAgICduYW1lc3Bh
Y2VVUkknID0+ICcnLAorICAgICAgICAnZ3VhcmRGYWN0b3J5V2l0aCcgPT4gJycsCisgICAgICAg
ICd0YWdzTnVsbE5hbWVzcGFjZScgPT4gMCwKKyAgICAgICAgJ2F0dHJzTnVsbE5hbWVzcGFjZScg
PT4gMCwKKyAgICAgICAgJ2V4cG9ydFN0cmluZ3MnID0+IDAKKyAgICApOwogfQogCiBzdWIgZGVm
YXVsdEludGVyZmFjZU5hbWUKIHsKLSAgICBkaWUgIk5vIG5hbWVzcGFjZSBmb3VuZCIgaWYgISRw
YXJhbWV0ZXJzeyduYW1lc3BhY2UnfTsKLSAgICByZXR1cm4gJHBhcmFtZXRlcnN7J25hbWVzcGFj
ZSd9IC4gdXBwZXJDYXNlTmFtZSgkX1swXSkgLiAiRWxlbWVudCIKKyAgICBkaWUgIk5vIG5hbWVz
cGFjZSBmb3VuZCIgaWYgISRwYXJhbWV0ZXJze25hbWVzcGFjZX07CisgICAgcmV0dXJuICRwYXJh
bWV0ZXJze25hbWVzcGFjZX0gLiB1cHBlckNhc2VOYW1lKCRfWzBdKSAuICJFbGVtZW50IgogfQog
CiAjIyMgUGFyc2luZyBoYW5kbGVycwpAQCAtMTI5LDE2ICsxMzYsMTYgQEAgc3ViIHRhZ3NIYW5k
bGVyCiAKICAgICAkdGFnID1+IHMvLS9fL2c7CiAKLSAgICAjIEluaXRpYWxpemUgZGVmYXVsdCBw
cm9wZXJ0aWVzJyB2YWx1ZXMuCi0gICAgJHRhZ3N7JHRhZ30gPSB7IGluaXRpYWxpemVUYWdQcm9w
ZXJ0eUhhc2goJHRhZykgfSBpZiAhZGVmaW5lZCgkdGFnc3skdGFnfSk7CisgICAgIyBJbml0aWFs
aXplIGRlZmF1bHQgcHJvcGVydHkgdmFsdWVzLgorICAgICR0YWdzeyR0YWd9ID0geyBkZWZhdWx0
VGFnUHJvcGVydHlIYXNoKCR0YWcpIH0gaWYgIWRlZmluZWQoJHRhZ3N7JHRhZ30pOwogCiAgICAg
aWYgKCRwcm9wZXJ0eSkgewogICAgICAgICBkaWUgIlVua25vd24gcHJvcGVydHkgJHByb3BlcnR5
IGZvciB0YWcgJHRhZ1xuIiBpZiAhZGVmaW5lZCgkdGFnc3skdGFnfXskcHJvcGVydHl9KTsKLSAg
ICAgICAgIyBUaGUgY29kZSByZWx5IG9uIEpTSW50ZXJmYWNlTmFtZSBkZXJpdmluZyBmcm9tIGlu
dGVyZmFjZU5hbWUgdG8gY2hlY2sgZm9yIGN1c3RvbSBKU0ludGVyZmFjZU5hbWUuCi0gICAgICAg
ICMgU28ganVzdCBvdmVycmlkZSBKU0ludGVyZmFjZU5hbWUgaWYgaXQgd2FzIG5vdCBhbHJlYWR5
IHNldC4KLSAgICAgICAgaWYgKCRwcm9wZXJ0eSBlcSAiaW50ZXJmYWNlTmFtZSIgJiYgJHRhZ3N7
JHRhZ317J0pTSW50ZXJmYWNlTmFtZSd9IGVxICR0YWdzeyR0YWd9eydpbnRlcmZhY2VOYW1lJ30p
IHsKLSAgICAgICAgICAgICAgICAkdGFnc3skdGFnfXsnSlNJbnRlcmZhY2VOYW1lJ30gPSAkdmFs
dWU7Ci0gICAgICAgIH0KKworICAgICAgICAjIFRoZSBjb2RlIHJlbGllcyBvbiBKU0ludGVyZmFj
ZU5hbWUgZGVyaXZpbmcgZnJvbSBpbnRlcmZhY2VOYW1lIHRvIGNoZWNrIGZvciBjdXN0b20gSlNJ
bnRlcmZhY2VOYW1lLgorICAgICAgICAjIFNvIG92ZXJyaWRlIEpTSW50ZXJmYWNlTmFtZSBpZiBp
dCB3YXMgbm90IGFscmVhZHkgc2V0LgorICAgICAgICAkdGFnc3skdGFnfXtKU0ludGVyZmFjZU5h
bWV9ID0gJHZhbHVlIGlmICRwcm9wZXJ0eSBlcSAiaW50ZXJmYWNlTmFtZSIgJiYgJHRhZ3N7JHRh
Z317SlNJbnRlcmZhY2VOYW1lfSBlcSAkdGFnc3skdGFnfXtpbnRlcmZhY2VOYW1lfTsKKwogICAg
ICAgICAkdGFnc3skdGFnfXskcHJvcGVydHl9ID0gJHZhbHVlOwogICAgIH0KIH0KQEAgLTE1MCw3
ICsxNTcsNyBAQCBzdWIgYXR0cnNIYW5kbGVyCiAgICAgJGF0dHIgPX4gcy8tL18vZzsKIAogICAg
ICMgSW5pdGlhbGl6ZSBkZWZhdWx0IHByb3BlcnRpZXMnIHZhbHVlcy4KLSAgICAkYXR0cnN7JGF0
dHJ9ID0geyBpbml0aWFsaXplQXR0clByb3BlcnR5SGFzaCgkYXR0cikgfSBpZiAhZGVmaW5lZCgk
YXR0cnN7JGF0dHJ9KTsKKyAgICAkYXR0cnN7JGF0dHJ9ID0geyBkZWZhdWx0QXR0clByb3BlcnR5
SGFzaCgkYXR0cikgfSBpZiAhZGVmaW5lZCgkYXR0cnN7JGF0dHJ9KTsKIAogICAgIGlmICgkcHJv
cGVydHkpIHsKICAgICAgICAgZGllICJVbmtub3duIHByb3BlcnR5ICRwcm9wZXJ0eSBmb3IgYXR0
cmlidXRlICRhdHRyXG4iIGlmICFkZWZpbmVkKCRhdHRyc3skYXR0cn17JHByb3BlcnR5fSk7CkBA
IC0xNjMsNyArMTcwLDcgQEAgc3ViIHBhcmFtZXRlcnNIYW5kbGVyCiAgICAgbXkgKCRwYXJhbWV0
ZXIsICR2YWx1ZSkgPSBAXzsKIAogICAgICMgSW5pdGlhbGl6ZSBkZWZhdWx0IHByb3BlcnRpZXMn
IHZhbHVlcy4KLSAgICAlcGFyYW1ldGVycyA9IGluaXRpYWxpemVQYXJhbWV0ZXJzSGFzaCgpIGlm
ICEoa2V5cyAlcGFyYW1ldGVycyk7CisgICAgJXBhcmFtZXRlcnMgPSBkZWZhdWx0UGFyYW1ldGVy
c0hhc2goKSBpZiAhKGtleXMgJXBhcmFtZXRlcnMpOwogCiAgICAgZGllICJVbmtub3duIHBhcmFt
ZXRlciAkcGFyYW1ldGVyIGZvciB0YWdzL2F0dHJzXG4iIGlmICFkZWZpbmVkKCRwYXJhbWV0ZXJz
eyRwYXJhbWV0ZXJ9KTsKICAgICAkcGFyYW1ldGVyc3skcGFyYW1ldGVyfSA9ICR2YWx1ZTsKQEAg
LTIxNCw3ICsyMjEsNyBAQCBzdWIgcHJpbnRNYWNyb3MKICAgICBmb3IgbXkgJG5hbWUgKHNvcnQg
a2V5cyAlJG5hbWVzUmVmKSB7CiAgICAgICAgIHByaW50IEYgIiRtYWNybyAkbmFtZSIsIiRzdWZm
aXg7XG4iOwogCi0gICAgICAgIGlmICgkcGFyYW1ldGVyc3snZXhwb3J0U3RyaW5ncyd9IG9yICRu
YW1lc3skbmFtZX17ImV4cG9ydFN0cmluZyJ9KSB7IAorICAgICAgICBpZiAoJHBhcmFtZXRlcnN7
ZXhwb3J0U3RyaW5nc30gb3IgJG5hbWVzeyRuYW1lfXtleHBvcnRTdHJpbmd9KSB7IAogICAgICAg
ICAgICAgcHJpbnQgRiAiZXh0ZXJuIGNoYXIgJG5hbWUiLCAiJHtzdWZmaXh9U3RyaW5nW107XG4i
OwogICAgICAgICB9CiAgICAgfQpAQCAtMjIzLDcgKzIzMCw3IEBAIHN1YiBwcmludE1hY3Jvcwog
c3ViIHVzZXNEZWZhdWx0V3JhcHBlcgogewogICAgIG15ICR0YWdOYW1lID0gc2hpZnQ7Ci0gICAg
cmV0dXJuICR0YWdOYW1lIGVxICRwYXJhbWV0ZXJzeyduYW1lc3BhY2UnfSAuICJFbGVtZW50IjsK
KyAgICByZXR1cm4gJHRhZ05hbWUgZXEgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSAuICJFbGVtZW50
IjsKIH0KIAogIyBCdWlsZCBhIGRpcmVjdCBtYXBwaW5nIGZyb20gdGhlIHRhZ3MgdG8gdGhlIEVs
ZW1lbnQgdG8gY3JlYXRlLCBleGNsdWRpbmcKQEAgLTIzMiwxNiArMjM5LDE2IEBAIHN1YiBidWls
ZENvbnN0cnVjdG9yTWFwCiB7CiAgICAgbXkgJXRhZ0NvbnN0cnVjdG9yTWFwID0gKCk7CiAgICAg
Zm9yIG15ICR0YWdOYW1lIChrZXlzICV0YWdzKSB7Ci0gICAgICAgIG15ICRpbnRlcmZhY2VOYW1l
ID0gJHRhZ3N7JHRhZ05hbWV9eydpbnRlcmZhY2VOYW1lJ307CisgICAgICAgIG15ICRpbnRlcmZh
Y2VOYW1lID0gJHRhZ3N7JHRhZ05hbWV9e2ludGVyZmFjZU5hbWV9OwogICAgICAgICBuZXh0IGlm
ICh1c2VzRGVmYXVsdFdyYXBwZXIoJGludGVyZmFjZU5hbWUpKTsKIAotICAgICAgICBpZiAoJHRh
Z3N7JHRhZ05hbWV9eydtYXBUb1RhZ05hbWUnfSkgewotICAgICAgICAgICAgZGllICJDYW5ub3Qg
aGFuZGxlIG11bHRpcGxlIG1hcFRvVGFnTmFtZSBmb3IgJHRhZ05hbWVcbiIgaWYgJHRhZ3N7JHRh
Z3N7JHRhZ05hbWV9eydtYXBUb1RhZ05hbWUnfX17J21hcFRvVGFnTmFtZSd9OwotICAgICAgICAg
ICAgJGludGVyZmFjZU5hbWUgPSAkdGFnc3sgJHRhZ3N7JHRhZ05hbWV9eydtYXBUb1RhZ05hbWUn
fSB9eydpbnRlcmZhY2VOYW1lJ307CisgICAgICAgIGlmICgkdGFnc3skdGFnTmFtZX17bWFwVG9U
YWdOYW1lfSkgeworICAgICAgICAgICAgZGllICJDYW5ub3QgaGFuZGxlIG11bHRpcGxlIG1hcFRv
VGFnTmFtZSBmb3IgJHRhZ05hbWVcbiIgaWYgJHRhZ3N7JHRhZ3N7JHRhZ05hbWV9e21hcFRvVGFn
TmFtZX19e21hcFRvVGFnTmFtZX07CisgICAgICAgICAgICAkaW50ZXJmYWNlTmFtZSA9ICR0YWdz
eyAkdGFnc3skdGFnTmFtZX17bWFwVG9UYWdOYW1lfSB9e2ludGVyZmFjZU5hbWV9OwogICAgICAg
ICB9CiAKICAgICAgICAgIyBDaG9wIHRoZSBzdHJpbmcgdG8ga2VlcCB0aGUgaW50ZXJlc3Rpbmcg
cGFydC4KLSAgICAgICAgJGludGVyZmFjZU5hbWUgPX4gcy8kcGFyYW1ldGVyc3snbmFtZXNwYWNl
J30oLiopRWxlbWVudC8kMS87CisgICAgICAgICRpbnRlcmZhY2VOYW1lID1+IHMvJHBhcmFtZXRl
cnN7bmFtZXNwYWNlfSguKilFbGVtZW50LyQxLzsKICAgICAgICAgJHRhZ0NvbnN0cnVjdG9yTWFw
eyR0YWdOYW1lfSA9IGxjKCRpbnRlcmZhY2VOYW1lKTsKICAgICB9CiAKQEAgLTI1NCwxNyArMjYx
LDEzIEBAIHN1YiBwcmludENvbnN0cnVjdG9yU2lnbmF0dXJlCiB7CiAgICAgbXkgKCRGLCAkdGFn
TmFtZSwgJGNvbnN0cnVjdG9yTmFtZSwgJGNvbnN0cnVjdG9yVGFnTmFtZSkgPSBAXzsKIAotICAg
IHByaW50IEYgInN0YXRpYyBQYXNzUmVmUHRyPCRwYXJhbWV0ZXJzeyduYW1lc3BhY2UnfUVsZW1l
bnQ+ICR7Y29uc3RydWN0b3JOYW1lfUNvbnN0cnVjdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmICRj
b25zdHJ1Y3RvclRhZ05hbWUsIERvY3VtZW50KiBkb2MiOwotICAgIGlmICgkcGFyYW1ldGVyc3sn
bmFtZXNwYWNlJ30gZXEgIkhUTUwiKSB7CisgICAgcHJpbnQgRiAic3RhdGljIFBhc3NSZWZQdHI8
JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+ICR7Y29uc3RydWN0b3JOYW1lfUNvbnN0cnVj
dG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmICRjb25zdHJ1Y3RvclRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCI7CisgICAgaWYgKCRwYXJhbWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwiKSB7CiAg
ICAgICAgIHByaW50IEYgIiwgSFRNTEZvcm1FbGVtZW50KiI7Ci0gICAgICAgIGlmICgkdGFnc3sk
dGFnTmFtZX17J2NvbnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudCd9KSB7Ci0gICAgICAgICAgICBw
cmludCBGICIgZm9ybUVsZW1lbnQiOwotICAgICAgICB9CisgICAgICAgIHByaW50IEYgIiBmb3Jt
RWxlbWVudCIgaWYgJHRhZ3N7JHRhZ05hbWV9e2NvbnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudH07
CiAgICAgfQogICAgIHByaW50IEYgIiwgYm9vbCI7Ci0gICAgaWYgKCR0YWdzeyR0YWdOYW1lfXsn
Y29uc3RydWN0b3JOZWVkc0NyZWF0ZWRCeVBhcnNlcid9KSB7Ci0gICAgICAgIHByaW50IEYgIiBj
cmVhdGVkQnlQYXJzZXIiOyAKLSAgICB9CisgICAgcHJpbnQgRiAiIGNyZWF0ZWRCeVBhcnNlciIg
aWYgJHRhZ3N7JHRhZ05hbWV9e2NvbnN0cnVjdG9yTmVlZHNDcmVhdGVkQnlQYXJzZXJ9OwogICAg
IHByaW50IEYgIilcbntcbiI7CiB9CiAKQEAgLTI3NiwyMiArMjc5LDI2IEBAIHN1YiBwcmludENv
bnN0cnVjdG9ySW50ZXJpb3IKICAgICBteSAoJEYsICR0YWdOYW1lLCAkaW50ZXJmYWNlTmFtZSwg
JGNvbnN0cnVjdG9yVGFnTmFtZSkgPSBAXzsKIAogICAgICMgSGFuZGxlIG1lZGlhIGVsZW1lbnRz
LgotICAgIGlmICgkdGFnc3skdGFnTmFtZX17J3dyYXBwZXJPbmx5SWZNZWRpYUlzQXZhaWxhYmxl
J30pIHsKKyAgICBpZiAoJHRhZ3N7JHRhZ05hbWV9e3dyYXBwZXJPbmx5SWZNZWRpYUlzQXZhaWxh
YmxlfSkgewogICAgICAgICBwcmludCBGIDw8RU5ECiAgICAgaWYgKCFNZWRpYVBsYXllcjo6aXNB
dmFpbGFibGUoKSkKLSAgICAgICAgcmV0dXJuIG5ldyBIVE1MRWxlbWVudCgkY29uc3RydWN0b3JU
YWdOYW1lLCBkb2MpOworICAgICAgICByZXR1cm4gbmV3IEhUTUxFbGVtZW50KCRjb25zdHJ1Y3Rv
clRhZ05hbWUsIGRvY3VtZW50KTsKIEVORAogOwogICAgIH0KIAotICAgICMgTm93IGNhbGwgdGhl
IGNvbnN0cnVjdG9yIHdpdGggdGhlIHJpZ2h0IHBhcmFtZXRlcnMuCi0gICAgcHJpbnQgRiAiICAg
IHJldHVybiBuZXcgJHtpbnRlcmZhY2VOYW1lfSgkY29uc3RydWN0b3JUYWdOYW1lLCBkb2MiOwot
ICAgIGlmICgkdGFnc3skdGFnTmFtZX17J2NvbnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudCd9KSB7
Ci0gICAgICAgIHByaW50IEYgIiwgZm9ybUVsZW1lbnQiOwotICAgIH0KLSAgICBpZiAoJHRhZ3N7
JHRhZ05hbWV9eydjb25zdHJ1Y3Rvck5lZWRzQ3JlYXRlZEJ5UGFyc2VyJ30pIHsKLSAgICAgICAg
cHJpbnQgRiAiLCBjcmVhdGVkQnlQYXJzZXIiOworICAgIG15ICRuZXdQcmVmaXggPSAiIjsKKyAg
ICBteSAkY3JlYXRlU3VmZml4ID0gIjo6Y3JlYXRlIjsKKworICAgIGlmICgkdGFnc3skdGFnTmFt
ZX17Y3JlYXRlV2l0aE5ld30pIHsKKyAgICAgICAgJG5ld1ByZWZpeCA9ICJuZXcgIjsKKyAgICAg
ICAgJGNyZWF0ZVN1ZmZpeCA9ICIiOwogICAgIH0KKworICAgICMgQ2FsbCB0aGUgY29uc3RydWN0
b3Igd2l0aCB0aGUgcmlnaHQgcGFyYW1ldGVycy4KKyAgICBwcmludCBGICIgICAgcmV0dXJuICRu
ZXdQcmVmaXgkaW50ZXJmYWNlTmFtZSR7Y3JlYXRlU3VmZml4fSgkY29uc3RydWN0b3JUYWdOYW1l
LCBkb2N1bWVudCI7CisgICAgcHJpbnQgRiAiLCBmb3JtRWxlbWVudCIgaWYgJHRhZ3N7JHRhZ05h
bWV9e2NvbnN0cnVjdG9yTmVlZHNGb3JtRWxlbWVudH07CisgICAgcHJpbnQgRiAiLCBjcmVhdGVk
QnlQYXJzZXIiIGlmICR0YWdzeyR0YWdOYW1lfXtjb25zdHJ1Y3Rvck5lZWRzQ3JlYXRlZEJ5UGFy
c2VyfTsKICAgICBwcmludCBGICIpO1xufVxuXG4iOwogfQogCkBAIC0zMDAsMjAgKzMwNywyMCBA
QCBzdWIgcHJpbnRDb25zdHJ1Y3RvcnMKICAgICBteSAoJEYsICR0YWdDb25zdHJ1Y3Rvck1hcFJl
ZikgPSBAXzsKICAgICBteSAldGFnQ29uc3RydWN0b3JNYXAgPSAlJHRhZ0NvbnN0cnVjdG9yTWFw
UmVmOwogCi0gICAgcHJpbnQgRiAiI2lmICRwYXJhbWV0ZXJzeydndWFyZEZhY3RvcnlXaXRoJ31c
biIgaWYgJHBhcmFtZXRlcnN7J2d1YXJkRmFjdG9yeVdpdGgnfTsKKyAgICBwcmludCBGICIjaWYg
JHBhcmFtZXRlcnN7Z3VhcmRGYWN0b3J5V2l0aH1cbiIgaWYgJHBhcmFtZXRlcnN7Z3VhcmRGYWN0
b3J5V2l0aH07CiAKICAgICAjIFRoaXMgaXMgdG8gYXZvaWQgZ2VuZXJhdGluZyB0aGUgc2FtZSBj
b25zdHJ1Y3RvciBzZXZlcmFsIHRpbWVzLgogICAgIG15ICV1bmlxdWVUYWdzID0gKCk7CiAgICAg
Zm9yIG15ICR0YWdOYW1lIChzb3J0IGtleXMgJXRhZ0NvbnN0cnVjdG9yTWFwKSB7Ci0gICAgICAg
IG15ICRpbnRlcmZhY2VOYW1lID0gJHRhZ3N7JHRhZ05hbWV9eydpbnRlcmZhY2VOYW1lJ307Cisg
ICAgICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJHRhZ3N7JHRhZ05hbWV9e2ludGVyZmFjZU5hbWV9
OwogCiAgICAgICAgICMgSWdub3JlIHRoZSBtYXBwZWQgdGFnCiAgICAgICAgICMgRklYTUU6IEl0
IGNvdWxkIGJlIG1vdmVkIGluc2lkZSB0aGlzIGxvb3AgYnV0IHdhcyBzcGxpdCBmb3IgcmVhZGli
aWxpdHkuCi0gICAgICAgIG5leHQgaWYgKGRlZmluZWQoJHVuaXF1ZVRhZ3N7JGludGVyZmFjZU5h
bWV9KSB8fCAkdGFnc3skdGFnTmFtZX17J21hcFRvVGFnTmFtZSd9KTsKKyAgICAgICAgbmV4dCBp
ZiAoZGVmaW5lZCgkdW5pcXVlVGFnc3skaW50ZXJmYWNlTmFtZX0pIHx8ICR0YWdzeyR0YWdOYW1l
fXttYXBUb1RhZ05hbWV9KTsKIAogICAgICAgICAkdW5pcXVlVGFnc3skaW50ZXJmYWNlTmFtZX0g
PSAnMSc7CiAKLSAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0gJHRhZ3N7JHRhZ05hbWV9eyJjb25k
aXRpb25hbCJ9OworICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAkdGFnc3skdGFnTmFtZX17Y29u
ZGl0aW9uYWx9OwogICAgICAgICBpZiAoJGNvbmRpdGlvbmFsKSB7CiAgICAgICAgICAgICBteSAk
Y29uZGl0aW9uYWxTdHJpbmcgPSAiRU5BQkxFKCIgLiBqb2luKCIpICYmIEVOQUJMRSgiLCBzcGxp
dCgvJi8sICRjb25kaXRpb25hbCkpIC4gIikiOwogICAgICAgICAgICAgcHJpbnQgRiAiI2lmICR7
Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiI7CkBAIC0zMjMsMjAgKzMzMCwyMCBAQCBzdWIgcHJpbnRD
b25zdHJ1Y3RvcnMKICAgICAgICAgcHJpbnRDb25zdHJ1Y3RvckludGVyaW9yKCRGLCAkdGFnTmFt
ZSwgJGludGVyZmFjZU5hbWUsICJ0YWdOYW1lIik7CiAKICAgICAgICAgaWYgKCRjb25kaXRpb25h
bCkgewotICAgICAgICAgICAgcHJpbnQgRiAiI2VuZGlmXG5cbiI7CisgICAgICAgICAgICBwcmlu
dCBGICIjZW5kaWZcbiI7CiAgICAgICAgIH0KICAgICB9CiAKICAgICAjIE1hcHBlZCB0YWcgbmFt
ZSB1c2VzIGEgc3BlY2lhbCB3cmFwcGVyIHRvIGtlZXAgdGhlaXIgcHJlZml4IGFuZCBuYW1lc3Bh
Y2VVUkkgd2hpbGUgdXNpbmcgdGhlIG1hcHBlZCBsb2NhbG5hbWUuCiAgICAgZm9yIG15ICR0YWdO
YW1lIChzb3J0IGtleXMgJXRhZ0NvbnN0cnVjdG9yTWFwKSB7Ci0gICAgICAgIGlmICgkdGFnc3sk
dGFnTmFtZX17J21hcFRvVGFnTmFtZSd9KSB7Ci0gICAgICAgICAgICBteSAkbWFwcGVkTmFtZSA9
ICR0YWdzeyR0YWdOYW1lfXsnbWFwVG9UYWdOYW1lJ307CisgICAgICAgIGlmICgkdGFnc3skdGFn
TmFtZX17bWFwVG9UYWdOYW1lfSkgeworICAgICAgICAgICAgbXkgJG1hcHBlZE5hbWUgPSAkdGFn
c3skdGFnTmFtZX17bWFwVG9UYWdOYW1lfTsKICAgICAgICAgICAgIHByaW50Q29uc3RydWN0b3JT
aWduYXR1cmUoJEYsICRtYXBwZWROYW1lLCAkbWFwcGVkTmFtZSAuICJUbyIgLiAkdGFnTmFtZSwg
InRhZ05hbWUiKTsKLSAgICAgICAgICAgIHByaW50Q29uc3RydWN0b3JJbnRlcmlvcigkRiwgJG1h
cHBlZE5hbWUsICR0YWdzeyRtYXBwZWROYW1lfXsnaW50ZXJmYWNlTmFtZSd9LCAiUXVhbGlmaWVk
TmFtZSh0YWdOYW1lLnByZWZpeCgpLCAke21hcHBlZE5hbWV9VGFnLmxvY2FsTmFtZSgpLCB0YWdO
YW1lLm5hbWVzcGFjZVVSSSgpKSIpOworICAgICAgICAgICAgcHJpbnRDb25zdHJ1Y3RvckludGVy
aW9yKCRGLCAkbWFwcGVkTmFtZSwgJHRhZ3N7JG1hcHBlZE5hbWV9e2ludGVyZmFjZU5hbWV9LCAi
UXVhbGlmaWVkTmFtZSh0YWdOYW1lLnByZWZpeCgpLCAke21hcHBlZE5hbWV9VGFnLmxvY2FsTmFt
ZSgpLCB0YWdOYW1lLm5hbWVzcGFjZVVSSSgpKSIpOwogICAgICAgICB9CiAgICAgfQogCi0gICAg
cHJpbnQgRiAiI2VuZGlmXG4iIGlmICRwYXJhbWV0ZXJzeydndWFyZEZhY3RvcnlXaXRoJ307Cisg
ICAgcHJpbnQgRiAiI2VuZGlmXG4iIGlmICRwYXJhbWV0ZXJze2d1YXJkRmFjdG9yeVdpdGh9Owog
fQogCiBzdWIgcHJpbnRGdW5jdGlvbkluaXRzCkBAIC0zNDYsMTQgKzM1MywxNCBAQCBzdWIgcHJp
bnRGdW5jdGlvbkluaXRzCiAKICAgICBmb3IgbXkgJHRhZ05hbWUgKHNvcnQga2V5cyAldGFnQ29u
c3RydWN0b3JNYXApIHsKIAotICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAkdGFnc3skdGFnTmFt
ZX17ImNvbmRpdGlvbmFsIn07CisgICAgICAgIG15ICRjb25kaXRpb25hbCA9ICR0YWdzeyR0YWdO
YW1lfXtjb25kaXRpb25hbH07CiAgICAgICAgIGlmICgkY29uZGl0aW9uYWwpIHsKICAgICAgICAg
ICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICJFTkFCTEUoIiAuIGpvaW4oIikgJiYgRU5BQkxF
KCIsIHNwbGl0KC8mLywgJGNvbmRpdGlvbmFsKSkgLiAiKSI7CiAgICAgICAgICAgICBwcmludCBG
ICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiI7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
JHRhZ3N7JHRhZ05hbWV9eydtYXBUb1RhZ05hbWUnfSkgewotICAgICAgICAgICAgcHJpbnQgRiAi
ICAgIGFkZFRhZygke3RhZ05hbWV9VGFnLCAkdGFnc3skdGFnTmFtZX17J21hcFRvVGFnTmFtZSd9
VG8ke3RhZ05hbWV9Q29uc3RydWN0b3IpO1xuIjsKKyAgICAgICAgaWYgKCR0YWdzeyR0YWdOYW1l
fXttYXBUb1RhZ05hbWV9KSB7CisgICAgICAgICAgICBwcmludCBGICIgICAgYWRkVGFnKCR7dGFn
TmFtZX1UYWcsICR0YWdzeyR0YWdOYW1lfXttYXBUb1RhZ05hbWV9VG8ke3RhZ05hbWV9Q29uc3Ry
dWN0b3IpO1xuIjsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHByaW50IEYgIiAgICBh
ZGRUYWcoJHt0YWdOYW1lfVRhZywgJHRhZ0NvbnN0cnVjdG9yTWFweyR0YWdOYW1lfUNvbnN0cnVj
dG9yKTtcbiI7CiAgICAgICAgIH0KQEAgLTM2OCw5ICszNzUsNyBAQCBzdWIgc3ZnQ2FwaXRhbGl6
YXRpb25IYWNrcwogewogICAgIG15ICRuYW1lID0gc2hpZnQ7CiAKLSAgICBpZiAoJG5hbWUgPX4g
L15mZSguKykkLykgewotICAgICAgICAkbmFtZSA9ICJGRSIgLiB1Y2ZpcnN0ICQxOwotICAgIH0K
KyAgICAkbmFtZSA9ICJGRSIgLiB1Y2ZpcnN0ICQxIGlmICRuYW1lID1+IC9eZmUoLispJC87CiAK
ICAgICByZXR1cm4gJG5hbWU7CiB9CkBAIC0zNzksNyArMzg0LDcgQEAgc3ViIHVwcGVyQ2FzZU5h
bWUKIHsKICAgICBteSAkbmFtZSA9IHNoaWZ0OwogICAgIAotICAgICRuYW1lID0gc3ZnQ2FwaXRh
bGl6YXRpb25IYWNrcygkbmFtZSkgaWYgKCRwYXJhbWV0ZXJzeyduYW1lc3BhY2UnfSBlcSAiU1ZH
Iik7CisgICAgJG5hbWUgPSBzdmdDYXBpdGFsaXphdGlvbkhhY2tzKCRuYW1lKSBpZiAoJHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfSBlcSAiU1ZHIik7CiAKICAgICB3aGlsZSAoJG5hbWUgPX4gL14oLio/
KV8oLiopLykgewogICAgICAgICAkbmFtZSA9ICQxIC4gdWNmaXJzdCAkMjsKQEAgLTM5MiwxMCAr
Mzk3LDExIEBAIHN1YiBwcmludExpY2Vuc2VIZWFkZXIKIHsKICAgICBteSAkRiA9IHNoaWZ0Owog
ICAgIHByaW50IEYgIi8qCi0gKiBUSElTIEZJTEUgSVMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQs
IERPIE5PVCBFRElULgorICogVEhJUyBGSUxFIFdBUyBBVVRPTUFUSUNBTExZIEdFTkVSQVRFRCwg
RE8gTk9UIEVESVQuCiAgKgorICogVGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgdGhlIGRvbS9t
YWtlX25hbWVzLnBsIHNjcmlwdC4KICAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUs
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDE2LDEwICs0MjIsOSBAQCBzdWIg
cHJpbnRMaWNlbnNlSGVhZGVyCiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLQogIjsKIH0KIApAQCAt
NDI4LDE2ICs0MzMsMTYgQEAgc3ViIHByaW50TmFtZXNIZWFkZXJGaWxlCiAgICAgbXkgKCRoZWFk
ZXJQYXRoKSA9IHNoaWZ0OwogICAgIG15ICRGOwogICAgIG9wZW4gRiwgIj4kaGVhZGVyUGF0aCI7
Ci0gICAgCisKICAgICBwcmludExpY2Vuc2VIZWFkZXIoJEYpOwotICAgIHByaW50IEYgIiNpZm5k
ZWYgRE9NXyRwYXJhbWV0ZXJzeyduYW1lc3BhY2UnfU5BTUVTX0hcbiI7Ci0gICAgcHJpbnQgRiAi
I2RlZmluZSBET01fJHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9TkFNRVNfSFxuXG4iOworICAgIHBy
aW50IEYgIiNpZm5kZWYgRE9NXyRwYXJhbWV0ZXJze25hbWVzcGFjZX1OQU1FU19IXG4iOworICAg
IHByaW50IEYgIiNkZWZpbmUgRE9NXyRwYXJhbWV0ZXJze25hbWVzcGFjZX1OQU1FU19IXG5cbiI7
CiAgICAgcHJpbnQgRiAiI2luY2x1ZGUgXCJRdWFsaWZpZWROYW1lLmhcIlxuXG4iOwotICAgIAot
ICAgIHByaW50IEYgIm5hbWVzcGFjZSBXZWJDb3JlIHtcblxuIG5hbWVzcGFjZSAkcGFyYW1ldGVy
c3snbmFtZXNwYWNlJ31OYW1lcyB7XG5cbiI7Ci0gICAgCi0gICAgbXkgJGxvd2VyTmFtZXNwYWNl
ID0gbGMoJHBhcmFtZXRlcnN7J25hbWVzcGFjZVByZWZpeCd9KTsKLSAgICBwcmludCBGICIjaWZu
ZGVmIERPTV8kcGFyYW1ldGVyc3snbmFtZXNwYWNlJ31OQU1FU19ISURFX0dMT0JBTFNcbiI7CisK
KyAgICBwcmludCBGICJuYW1lc3BhY2UgV2ViQ29yZSB7XG5cbiBuYW1lc3BhY2UgJHBhcmFtZXRl
cnN7bmFtZXNwYWNlfU5hbWVzIHtcblxuIjsKKworICAgIG15ICRsb3dlck5hbWVzcGFjZSA9IGxj
KCRwYXJhbWV0ZXJze25hbWVzcGFjZVByZWZpeH0pOworICAgIHByaW50IEYgIiNpZm5kZWYgRE9N
XyRwYXJhbWV0ZXJze25hbWVzcGFjZX1OQU1FU19ISURFX0dMT0JBTFNcbiI7CiAgICAgcHJpbnQg
RiAiLy8gTmFtZXNwYWNlXG4iOwogICAgIHByaW50IEYgImV4dGVybiBjb25zdCBXZWJDb3JlOjpB
dG9taWNTdHJpbmcgJHtsb3dlck5hbWVzcGFjZX1OYW1lc3BhY2VVUkk7XG5cbiI7CiAKQEAgLTQ1
MSwxOSArNDU2LDE5IEBAIHN1YiBwcmludE5hbWVzSGVhZGVyRmlsZQogICAgICAgICBwcmludE1h
Y3JvcygkRiwgImV4dGVybiBjb25zdCBXZWJDb3JlOjpRdWFsaWZpZWROYW1lIiwgIkF0dHIiLCBc
JWF0dHJzKTsKICAgICB9CiAgICAgcHJpbnQgRiAiI2VuZGlmXG5cbiI7Ci0gICAgCisKICAgICBp
ZiAoa2V5cyAldGFncykgewotICAgICAgICBwcmludCBGICJXZWJDb3JlOjpRdWFsaWZpZWROYW1l
KiogZ2V0JHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9VGFncyhzaXplX3QqIHNpemUpO1xuIjsKKyAg
ICAgICAgcHJpbnQgRiAiV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSoqIGdldCRwYXJhbWV0ZXJze25h
bWVzcGFjZX1UYWdzKHNpemVfdCogc2l6ZSk7XG4iOwogICAgIH0KIAogICAgIGlmIChrZXlzICVh
dHRycykgewotICAgICAgICBwcmludCBGICJXZWJDb3JlOjpRdWFsaWZpZWROYW1lKiogZ2V0JHBh
cmFtZXRlcnN7J25hbWVzcGFjZSd9QXR0cnMoc2l6ZV90KiBzaXplKTtcbiI7CisgICAgICAgIHBy
aW50IEYgIldlYkNvcmU6OlF1YWxpZmllZE5hbWUqKiBnZXQkcGFyYW1ldGVyc3tuYW1lc3BhY2V9
QXR0cnMoc2l6ZV90KiBzaXplKTtcbiI7CiAgICAgfQotICAgIAorCiAgICAgcHJpbnQgRiAiXG52
b2lkIGluaXQoKTtcblxuIjsKICAgICBwcmludCBGICJ9IH1cblxuIjsKICAgICBwcmludCBGICIj
ZW5kaWZcblxuIjsKLSAgICAKKwogICAgIGNsb3NlIEY7CiB9CiAKQEAgLTQ3NSwyNSArNDgwLDI1
IEBAIHN1YiBwcmludE5hbWVzQ3BwRmlsZQogICAgIAogICAgIHByaW50TGljZW5zZUhlYWRlcigk
Rik7CiAgICAgCi0gICAgbXkgJGxvd2VyTmFtZXNwYWNlID0gbGMoJHBhcmFtZXRlcnN7J25hbWVz
cGFjZVByZWZpeCd9KTsKKyAgICBteSAkbG93ZXJOYW1lc3BhY2UgPSBsYygkcGFyYW1ldGVyc3tu
YW1lc3BhY2VQcmVmaXh9KTsKIAogcHJpbnQgRiAiI2luY2x1ZGUgXCJjb25maWcuaFwiXG4iOwog
CiBwcmludCBGICIjaWZkZWYgU0tJUF9TVEFUSUNfQ09OU1RSVUNUT1JTX09OX0dDQ1xuIjsKLXBy
aW50IEYgIiNkZWZpbmUgRE9NXyRwYXJhbWV0ZXJzeyduYW1lc3BhY2UnfU5BTUVTX0hJREVfR0xP
QkFMUyAxXG4iOworcHJpbnQgRiAiI2RlZmluZSBET01fJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5B
TUVTX0hJREVfR0xPQkFMUyAxXG4iOwogcHJpbnQgRiAiI2Vsc2VcbiI7CiBwcmludCBGICIjZGVm
aW5lIFFOQU1FX0RFRkFVTFRfQ09OU1RSVUNUT1IgMVxuIjsKIHByaW50IEYgIiNlbmRpZlxuXG4i
OwogCiAKLXByaW50IEYgIiNpbmNsdWRlIFwiJHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9TmFtZXMu
aFwiXG5cbiI7CitwcmludCBGICIjaW5jbHVkZSBcIiRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1l
cy5oXCJcblxuIjsKIHByaW50IEYgIiNpbmNsdWRlIFwiU3RhdGljQ29uc3RydWN0b3JzLmhcIlxu
IjsKIAotcHJpbnQgRiAibmFtZXNwYWNlIFdlYkNvcmUge1xuXG4gbmFtZXNwYWNlICRwYXJhbWV0
ZXJzeyduYW1lc3BhY2UnfU5hbWVzIHsKK3ByaW50IEYgIm5hbWVzcGFjZSBXZWJDb3JlIHtcblxu
IG5hbWVzcGFjZSAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFtZXMgewogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAotREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsICR7bG93ZXJOYW1lc3Bh
Y2V9TmFtZXNwYWNlVVJJLCBcIiRwYXJhbWV0ZXJzeyduYW1lc3BhY2VVUkknfVwiKQorREVGSU5F
X0dMT0JBTChBdG9taWNTdHJpbmcsICR7bG93ZXJOYW1lc3BhY2V9TmFtZXNwYWNlVVJJLCBcIiRw
YXJhbWV0ZXJze25hbWVzcGFjZVVSSX1cIikKICI7CiAKICAgICBpZiAoa2V5cyAldGFncykgewpA
QCAtNTAyLDE0ICs1MDcsMTQgQEAgREVGSU5FX0dMT0JBTChBdG9taWNTdHJpbmcsICR7bG93ZXJO
YW1lcwogICAgICAgICAgICAgcHJpbnQgRiAiREVGSU5FX0dMT0JBTChRdWFsaWZpZWROYW1lLCAi
LCAkbmFtZSwgIlRhZywgbnVsbEF0b20sIFwiJG5hbWVcIiwgJHtsb3dlck5hbWVzcGFjZX1OYW1l
c3BhY2VVUkkpO1xuIjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgcHJpbnQgRiAiXG5c
bldlYkNvcmU6OlF1YWxpZmllZE5hbWUqKiBnZXQkcGFyYW1ldGVyc3snbmFtZXNwYWNlJ31UYWdz
KHNpemVfdCogc2l6ZSlcbiI7Ci0gICAgICAgIHByaW50IEYgIntcbiAgICBzdGF0aWMgV2ViQ29y
ZTo6UXVhbGlmaWVkTmFtZSogJHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9VGFnc1tdID0ge1xuIjsK
KyAgICAgICAgcHJpbnQgRiAiXG5cbldlYkNvcmU6OlF1YWxpZmllZE5hbWUqKiBnZXQkcGFyYW1l
dGVyc3tuYW1lc3BhY2V9VGFncyhzaXplX3QqIHNpemUpXG4iOworICAgICAgICBwcmludCBGICJ7
XG4gICAgc3RhdGljIFdlYkNvcmU6OlF1YWxpZmllZE5hbWUqICRwYXJhbWV0ZXJze25hbWVzcGFj
ZX1UYWdzW10gPSB7XG4iOwogICAgICAgICBmb3IgbXkgJG5hbWUgKHNvcnQga2V5cyAldGFncykg
ewogICAgICAgICAgICAgcHJpbnQgRiAiICAgICAgICAoV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSop
JiR7bmFtZX1UYWcsXG4iOwogICAgICAgICB9CiAgICAgICAgIHByaW50IEYgIiAgICB9O1xuIjsK
ICAgICAgICAgcHJpbnQgRiAiICAgICpzaXplID0gIiwgc2NhbGFyKGtleXMgJXRhZ3MpLCAiO1xu
IjsKLSAgICAgICAgcHJpbnQgRiAiICAgIHJldHVybiAkcGFyYW1ldGVyc3snbmFtZXNwYWNlJ31U
YWdzO1xuIjsKKyAgICAgICAgcHJpbnQgRiAiICAgIHJldHVybiAkcGFyYW1ldGVyc3tuYW1lc3Bh
Y2V9VGFncztcbiI7CiAgICAgICAgIHByaW50IEYgIn1cbiI7CiAgICAgfQogCkBAIC01MTgsMTQg
KzUyMywxNCBAQCBERUZJTkVfR0xPQkFMKEF0b21pY1N0cmluZywgJHtsb3dlck5hbWVzCiAgICAg
ICAgIGZvciBteSAkbmFtZSAoc29ydCBrZXlzICVhdHRycykgewogICAgICAgICAgICAgcHJpbnQg
RiAiREVGSU5FX0dMT0JBTChRdWFsaWZpZWROYW1lLCAiLCAkbmFtZSwgIkF0dHIsIG51bGxBdG9t
LCBcIiRuYW1lXCIsICR7bG93ZXJOYW1lc3BhY2V9TmFtZXNwYWNlVVJJKTtcbiI7CiAgICAgICAg
IH0KLSAgICAgICAgcHJpbnQgRiAiXG5cbldlYkNvcmU6OlF1YWxpZmllZE5hbWUqKiBnZXQkcGFy
YW1ldGVyc3snbmFtZXNwYWNlJ31BdHRycyhzaXplX3QqIHNpemUpXG4iOwotICAgICAgICBwcmlu
dCBGICJ7XG4gICAgc3RhdGljIFdlYkNvcmU6OlF1YWxpZmllZE5hbWUqICRwYXJhbWV0ZXJzeydu
YW1lc3BhY2UnfUF0dHJbXSA9IHtcbiI7CisgICAgICAgIHByaW50IEYgIlxuXG5XZWJDb3JlOjpR
dWFsaWZpZWROYW1lKiogZ2V0JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUF0dHJzKHNpemVfdCogc2l6
ZSlcbiI7CisgICAgICAgIHByaW50IEYgIntcbiAgICBzdGF0aWMgV2ViQ29yZTo6UXVhbGlmaWVk
TmFtZSogJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUF0dHJbXSA9IHtcbiI7CiAgICAgICAgIGZvciBt
eSAkbmFtZSAoc29ydCBrZXlzICVhdHRycykgewogICAgICAgICAgICAgcHJpbnQgRiAiICAgICAg
ICAoV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSopJiR7bmFtZX1BdHRyLFxuIjsKICAgICAgICAgfQog
ICAgICAgICBwcmludCBGICIgICAgfTtcbiI7CiAgICAgICAgIHByaW50IEYgIiAgICAqc2l6ZSA9
ICIsIHNjYWxhcihrZXlzICVhdHRycyksICI7XG4iOwotICAgICAgICBwcmludCBGICIgICAgcmV0
dXJuICRwYXJhbWV0ZXJzeyduYW1lc3BhY2UnfUF0dHI7XG4iOworICAgICAgICBwcmludCBGICIg
ICAgcmV0dXJuICRwYXJhbWV0ZXJze25hbWVzcGFjZX1BdHRyO1xuIjsKICAgICAgICAgcHJpbnQg
RiAifVxuIjsKICAgICB9CiAKQEAgLTU0OSwxNiArNTU0LDE2IEBAIHByaW50IEYgIlxudm9pZCBp
bml0KCkKICAgICBBdG9taWNTdHJpbmc6OmluaXQoKTsKICI7CiAgICAgCi0gICAgcHJpbnQoRiAi
ICAgIEF0b21pY1N0cmluZyAke2xvd2VyTmFtZXNwYWNlfU5TKFwiJHBhcmFtZXRlcnN7J25hbWVz
cGFjZVVSSSd9XCIpO1xuXG4iKTsKKyAgICBwcmludChGICIgICAgQXRvbWljU3RyaW5nICR7bG93
ZXJOYW1lc3BhY2V9TlMoXCIkcGFyYW1ldGVyc3tuYW1lc3BhY2VVUkl9XCIpO1xuXG4iKTsKIAog
ICAgIHByaW50KEYgIiAgICAvLyBOYW1lc3BhY2VcbiIpOwogICAgIHByaW50KEYgIiAgICBuZXcg
KCh2b2lkKikmJHtsb3dlck5hbWVzcGFjZX1OYW1lc3BhY2VVUkkpIEF0b21pY1N0cmluZygke2xv
d2VyTmFtZXNwYWNlfU5TKTtcblxuIik7CiAgICAgaWYgKGtleXMgJXRhZ3MpIHsKLSAgICAgICAg
bXkgJHRhZ3NOYW1lc3BhY2UgPSAkcGFyYW1ldGVyc3sndGFnc051bGxOYW1lc3BhY2UnfSA/ICJu
dWxsQXRvbSIgOiAiJHtsb3dlck5hbWVzcGFjZX1OUyI7CisgICAgICAgIG15ICR0YWdzTmFtZXNw
YWNlID0gJHBhcmFtZXRlcnN7dGFnc051bGxOYW1lc3BhY2V9ID8gIm51bGxBdG9tIiA6ICIke2xv
d2VyTmFtZXNwYWNlfU5TIjsKICAgICAgICAgcHJpbnREZWZpbml0aW9ucygkRiwgXCV0YWdzLCAi
dGFncyIsICR0YWdzTmFtZXNwYWNlKTsKICAgICB9CiAgICAgaWYgKGtleXMgJWF0dHJzKSB7Ci0g
ICAgICAgIG15ICRhdHRyc05hbWVzcGFjZSA9ICRwYXJhbWV0ZXJzeydhdHRyc051bGxOYW1lc3Bh
Y2UnfSA/ICJudWxsQXRvbSIgOiAiJHtsb3dlck5hbWVzcGFjZX1OUyI7CisgICAgICAgIG15ICRh
dHRyc05hbWVzcGFjZSA9ICRwYXJhbWV0ZXJze2F0dHJzTnVsbE5hbWVzcGFjZX0gPyAibnVsbEF0
b20iIDogIiR7bG93ZXJOYW1lc3BhY2V9TlMiOwogICAgICAgICBwcmludERlZmluaXRpb25zKCRG
LCBcJWF0dHJzLCAiYXR0cmlidXRlcyIsICRhdHRyc05hbWVzcGFjZSk7CiAgICAgfQogCkBAIC01
NzIsNyArNTc3LDcgQEAgc3ViIHByaW50SlNFbGVtZW50SW5jbHVkZXMKIAogICAgIG15ICV0YWdz
U2VlbjsKICAgICBmb3IgbXkgJHRhZ05hbWUgKHNvcnQga2V5cyAldGFncykgewotICAgICAgICBt
eSAkSlNJbnRlcmZhY2VOYW1lID0gJHRhZ3N7JHRhZ05hbWV9eyJKU0ludGVyZmFjZU5hbWUifTsK
KyAgICAgICAgbXkgJEpTSW50ZXJmYWNlTmFtZSA9ICR0YWdzeyR0YWdOYW1lfXtKU0ludGVyZmFj
ZU5hbWV9OwogICAgICAgICBuZXh0IGlmIGRlZmluZWQoJHRhZ3NTZWVueyRKU0ludGVyZmFjZU5h
bWV9KSB8fCB1c2VzRGVmYXVsdEpTV3JhcHBlcigkdGFnTmFtZSk7CiAgICAgICAgICR0YWdzU2Vl
bnskSlNJbnRlcmZhY2VOYW1lfSA9IDE7CiAKQEAgLTU4Niw3ICs1OTEsNyBAQCBzdWIgcHJpbnRF
bGVtZW50SW5jbHVkZXMKIAogICAgIG15ICV0YWdzU2VlbjsKICAgICBmb3IgbXkgJHRhZ05hbWUg
KHNvcnQga2V5cyAldGFncykgewotICAgICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICR0YWdzeyR0
YWdOYW1lfXsiaW50ZXJmYWNlTmFtZSJ9OworICAgICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICR0
YWdzeyR0YWdOYW1lfXtpbnRlcmZhY2VOYW1lfTsKICAgICAgICAgbmV4dCBpZiBkZWZpbmVkKCR0
YWdzU2VlbnskaW50ZXJmYWNlTmFtZX0pOwogICAgICAgICAkdGFnc1NlZW57JGludGVyZmFjZU5h
bWV9ID0gMTsKIApAQCAtNjA0LDcgKzYwOSw3IEBAIHN1YiBwcmludERlZmluaXRpb25TdHJpbmdz
CiAKICAgICBteSAlbmFtZXMgPSAlJG5hbWVzUmVmOwogICAgIGZvciBteSAkbmFtZSAoc29ydCBr
ZXlzICUkbmFtZXNSZWYpIHsKLSAgICAgICAgbmV4dCBpZiAoISRwYXJhbWV0ZXJzeydleHBvcnRT
dHJpbmdzJ30gYW5kICEkbmFtZXN7JG5hbWV9eyJleHBvcnRTdHJpbmcifSk7CisgICAgICAgIG5l
eHQgaWYgKCEkcGFyYW1ldGVyc3tleHBvcnRTdHJpbmdzfSBhbmQgISRuYW1lc3skbmFtZX17ZXhw
b3J0U3RyaW5nfSk7CiAKICAgICAgICAgbXkgJHJlYWxOYW1lID0gJG5hbWU7CiAgICAgICAgICRy
ZWFsTmFtZSA9fiBzL18vLS9nOwpAQCAtNjI1LDcgKzYzMCw3IEBAIHN1YiBwcmludERlZmluaXRp
b25zCiAKICAgICBteSAlbmFtZXMgPSAlJG5hbWVzUmVmOwogICAgIGZvciBteSAkbmFtZSAoc29y
dCBrZXlzICUkbmFtZXNSZWYpIHsKLSAgICAgICAgbmV4dCBpZiAoJHBhcmFtZXRlcnN7J2V4cG9y
dFN0cmluZ3MnfSBvciAkbmFtZXN7JG5hbWV9eyJleHBvcnRTdHJpbmcifSk7CisgICAgICAgIG5l
eHQgaWYgKCRwYXJhbWV0ZXJze2V4cG9ydFN0cmluZ3N9IG9yICRuYW1lc3skbmFtZX17ZXhwb3J0
U3RyaW5nfSk7CiAKICAgICAgICAgbXkgJHJlYWxOYW1lID0gJG5hbWU7CiAgICAgICAgICRyZWFs
TmFtZSA9fiBzL18vLS9nOwpAQCAtNjM1LDcgKzY0MCw3IEBAIHN1YiBwcmludERlZmluaXRpb25z
CiAgICAgcHJpbnQgIlxuIjsKIAogICAgIGZvciBteSAkbmFtZSAoc29ydCBrZXlzICUkbmFtZXNS
ZWYpIHsKLSAgICAgICAgcHJpbnQgRiAiICAgIG5ldyAoKHZvaWQqKSYkbmFtZSIsIiR7c2hvcnRD
YW1lbFR5cGV9KSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkbmFtZSIsIiR7c2hvcnRDYW1lbFR5
cGV9U3RyaW5nLCAkbmFtZXNwYWNlVVJJKTtcbiI7CisgICAgICAgIHByaW50IEYgIiAgICBuZXcg
KCYkbmFtZSIsIiR7c2hvcnRDYW1lbFR5cGV9KSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkbmFt
ZSIsIiR7c2hvcnRDYW1lbFR5cGV9U3RyaW5nLCAkbmFtZXNwYWNlVVJJKTtcbiI7CiAgICAgfQog
fQogCkBAIC02NTEsMzkgKzY1NiwzMSBAQCBwcmludExpY2Vuc2VIZWFkZXIoJEYpOwogCiBwcmlu
dCBGIDw8RU5ECiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiJHBhcmFtZXRlcnN7J25h
bWVzcGFjZSd9RWxlbWVudEZhY3RvcnkuaCIKLQotI2luY2x1ZGUgIiRwYXJhbWV0ZXJzeyduYW1l
c3BhY2UnfU5hbWVzLmgiCi0jaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQotI2luY2x1ZGUg
IkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNlbmRpZgorI2luY2x1ZGUgIiRw
YXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50RmFjdG9yeS5oIgogCisjaW5jbHVkZSAiJHBhcmFt
ZXRlcnN7bmFtZXNwYWNlfU5hbWVzLmgiCiBFTkQKIDsKIAotaWYgKCRwYXJhbWV0ZXJzeyduYW1l
c3BhY2UnfSBlcSAiSFRNTCIpIHsKLSAgICBwcmludCBGICIjaW5jbHVkZSBcIkhUTUxGb3JtRWxl
bWVudC5oXCJcbiI7Ci19Ci0KIHByaW50RWxlbWVudEluY2x1ZGVzKCRGKTsKIAogcHJpbnQgRiA8
PEVORAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NV
UFBPUlQpCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdXNpbmcgbmFtZXNwYWNlICRwYXJhbWV0ZXJz
eyduYW1lc3BhY2UnfU5hbWVzOwordXNpbmcgbmFtZXNwYWNlICRwYXJhbWV0ZXJze25hbWVzcGFj
ZX1OYW1lczsKIAogRU5ECiA7CiAKLXByaW50IEYgInR5cGVkZWYgUGFzc1JlZlB0cjwkcGFyYW1l
dGVyc3snbmFtZXNwYWNlJ31FbGVtZW50PiAoKkNvbnN0cnVjdG9yRnVuY3Rpb24pKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCoiOwotCi1pZiAoJHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9
IGVxICJIVE1MIikgewotICAgIHByaW50IEYgIiwgSFRNTEZvcm1FbGVtZW50KiI7Ci19Ci0KK3By
aW50IEYgInR5cGVkZWYgUGFzc1JlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4g
KCpDb25zdHJ1Y3RvckZ1bmN0aW9uKShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqIjsK
K3ByaW50IEYgIiwgSFRNTEZvcm1FbGVtZW50KiIgaWYgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBl
cSAiSFRNTCI7CiBwcmludCBGICIsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTtcbiI7CiBwcmludCBG
IDw8RU5ECiB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENvbnN0cnVjdG9yRnVu
Y3Rpb24+IEZ1bmN0aW9uTWFwOwpAQCAtNjk3LDcgKzY5NCw3IEBAIG15ICV0YWdDb25zdHJ1Y3Rv
ck1hcCA9IGJ1aWxkQ29uc3RydWN0b3IKIAogcHJpbnRDb25zdHJ1Y3RvcnMoJEYsIFwldGFnQ29u
c3RydWN0b3JNYXApOwogCi1wcmludCBGICIjaWYgJHBhcmFtZXRlcnN7J2d1YXJkRmFjdG9yeVdp
dGgnfVxuIiBpZiAkcGFyYW1ldGVyc3snZ3VhcmRGYWN0b3J5V2l0aCd9OworcHJpbnQgRiAiI2lm
ICRwYXJhbWV0ZXJze2d1YXJkRmFjdG9yeVdpdGh9XG4iIGlmICRwYXJhbWV0ZXJze2d1YXJkRmFj
dG9yeVdpdGh9OwogCiBwcmludCBGIDw8RU5ECiBzdGF0aWMgdm9pZCBhZGRUYWcoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnLCBDb25zdHJ1Y3RvckZ1bmN0aW9uIGZ1bmMpCkBAIC03MDUsMTAgKzcw
MiwxMCBAQCBzdGF0aWMgdm9pZCBhZGRUYWcoY29uc3QgUXVhbGlmaWVkTmFtZSYgCiAgICAgZ0Z1
bmN0aW9uTWFwLT5zZXQodGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgZnVuYyk7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgdm9pZCBjcmVhdGVGdW5jdGlvbk1hcElmTmVjZXNzYXJ5KCkKK3N0YXRpYyB2b2lk
IGNyZWF0ZUZ1bmN0aW9uTWFwKCkKIHsKLSAgICBpZiAoZ0Z1bmN0aW9uTWFwKQotICAgICAgICBy
ZXR1cm47CisgICAgQVNTRVJUKCFnRnVuY3Rpb25NYXApOworCiAgICAgLy8gQ3JlYXRlIHRoZSB0
YWJsZS4KICAgICBnRnVuY3Rpb25NYXAgPSBuZXcgRnVuY3Rpb25NYXA7CiAgICAgCkBAIC03MTks
MzAgKzcxNiwyNSBAQCBFTkQKIHByaW50RnVuY3Rpb25Jbml0cygkRiwgXCV0YWdDb25zdHJ1Y3Rv
ck1hcCk7CiAKIHByaW50IEYgIn1cbiI7Ci1wcmludCBGICIjZW5kaWZcbiIgaWYgJHBhcmFtZXRl
cnN7J2d1YXJkRmFjdG9yeVdpdGgnfTsKLQotcHJpbnQgRiAiXG5QYXNzUmVmUHRyPCRwYXJhbWV0
ZXJzeyduYW1lc3BhY2UnfUVsZW1lbnQ+ICRwYXJhbWV0ZXJzeyduYW1lc3BhY2UnfUVsZW1lbnRG
YWN0b3J5OjpjcmVhdGUkcGFyYW1ldGVyc3snbmFtZXNwYWNlJ31FbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHFOYW1lLCBEb2N1bWVudCogZG9jIjsKLQotaWYgKCRwYXJhbWV0ZXJzeyJuYW1l
c3BhY2UifSBlcSAiSFRNTCIpIHsKLSAgICBwcmludCBGICIsIEhUTUxGb3JtRWxlbWVudCogZm9y
bUVsZW1lbnQiOwotfQorcHJpbnQgRiAiI2VuZGlmXG4iIGlmICRwYXJhbWV0ZXJze2d1YXJkRmFj
dG9yeVdpdGh9OwogCitwcmludCBGICJcblBhc3NSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNl
fUVsZW1lbnQ+ICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50RmFjdG9yeTo6Y3JlYXRlJHBh
cmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCI7CitwcmludCBGICIsIEhUTUxGb3JtRWxlbWVudCogZm9ybUVsZW1l
bnQiIGlmICRwYXJhbWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwiOwogcHJpbnQgRiAiLCBib29s
IGNyZWF0ZWRCeVBhcnNlcilcbntcbiI7CiAKLXByaW50IEYgIiNpZiAkcGFyYW1ldGVyc3snZ3Vh
cmRGYWN0b3J5V2l0aCd9XG4iIGlmICRwYXJhbWV0ZXJzeydndWFyZEZhY3RvcnlXaXRoJ307Citw
cmludCBGICIjaWYgJHBhcmFtZXRlcnN7Z3VhcmRGYWN0b3J5V2l0aH1cbiIgaWYgJHBhcmFtZXRl
cnN7Z3VhcmRGYWN0b3J5V2l0aH07CiAKIHByaW50IEYgPDxFTkQKLSAgICAvLyBEb24ndCBtYWtl
IGVsZW1lbnRzIHdpdGhvdXQgYSBkb2N1bWVudAotICAgIGlmICghZG9jKQorICAgIGlmICghZG9j
dW1lbnQpCiAgICAgICAgIHJldHVybiAwOwogCiBFTkQKIDsKIAotaWYgKCRwYXJhbWV0ZXJzeydu
YW1lc3BhY2UnfSBuZSAiSFRNTCIpIHsKK2lmICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IG5lICJI
VE1MIikgewogcHJpbnQgRiA8PEVORAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKLSAg
ICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2MtPnNldHRpbmdzKCk7CisgICAgU2V0dGluZ3MqIHNl
dHRpbmdzID0gZG9jdW1lbnQtPnNldHRpbmdzKCk7CiAgICAgaWYgKHNldHRpbmdzICYmIHNldHRp
bmdzLT51c2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgpKQogICAgICAgICBy
ZXR1cm4gMDsKICNlbmRpZgpAQCAtNzUyLDIxICs3NDQsMjEgQEAgRU5ECiB9CiAKIHByaW50IEYg
PDxFTkQKLSAgICBjcmVhdGVGdW5jdGlvbk1hcElmTmVjZXNzYXJ5KCk7Ci0gICAgQ29uc3RydWN0
b3JGdW5jdGlvbiBmdW5jID0gZ0Z1bmN0aW9uTWFwLT5nZXQocU5hbWUubG9jYWxOYW1lKCkuaW1w
bCgpKTsKLSAgICBpZiAoZnVuYykKKyAgICBpZiAoIWdGdW5jdGlvbk1hcCkKKyAgICAgICAgY3Jl
YXRlRnVuY3Rpb25NYXAoKTsKKyAgICBpZiAoQ29uc3RydWN0b3JGdW5jdGlvbiBmdW5jdGlvbiA9
IGdGdW5jdGlvbk1hcC0+Z2V0KHFOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSkpCiBFTkQKIDsKIAot
aWYgKCRwYXJhbWV0ZXJzeyJuYW1lc3BhY2UifSBlcSAiSFRNTCIpIHsKLSAgICBwcmludCBGICIg
ICAgICAgIHJldHVybiBmdW5jKHFOYW1lLCBkb2MsIGZvcm1FbGVtZW50LCBjcmVhdGVkQnlQYXJz
ZXIpO1xuIjsKK2lmICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVxICJIVE1MIikgeworICAgIHBy
aW50IEYgIiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHFOYW1lLCBkb2N1bWVudCwgZm9ybUVsZW1l
bnQsIGNyZWF0ZWRCeVBhcnNlcik7XG4iOwogfSBlbHNlIHsKLSAgICBwcmludCBGICIgICAgICAg
IHJldHVybiBmdW5jKHFOYW1lLCBkb2MsIGNyZWF0ZWRCeVBhcnNlcik7XG4iOworICAgIHByaW50
IEYgIiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHFOYW1lLCBkb2N1bWVudCwgY3JlYXRlZEJ5UGFy
c2VyKTtcbiI7CiB9CiAKLXByaW50IEYgIiAgICByZXR1cm4gbmV3ICRwYXJhbWV0ZXJzeyduYW1l
c3BhY2UnfUVsZW1lbnQocU5hbWUsIGRvYyk7XG4iOworcHJpbnQgRiAiICAgIHJldHVybiBuZXcg
JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQocU5hbWUsIGRvY3VtZW50KTtcbiI7CiAKLWlm
ICgkcGFyYW1ldGVyc3snZ3VhcmRGYWN0b3J5V2l0aCd9KSB7CitpZiAoJHBhcmFtZXRlcnN7Z3Vh
cmRGYWN0b3J5V2l0aH0pIHsKIAogcHJpbnQgRiA8PEVORAogI2Vsc2UKQEAgLTc5Nyw4ICs3ODks
OCBAQCBzdWIgcHJpbnRGYWN0b3J5SGVhZGVyRmlsZQogICAgIHByaW50TGljZW5zZUhlYWRlcigk
Rik7CiAKICAgICBwcmludCBGPDxFTkQKLSNpZm5kZWYgJHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9
RWxlbWVudEZhY3RvcnlfaAotI2RlZmluZSAkcGFyYW1ldGVyc3snbmFtZXNwYWNlJ31FbGVtZW50
RmFjdG9yeV9oCisjaWZuZGVmICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50RmFjdG9yeV9o
CisjZGVmaW5lICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50RmFjdG9yeV9oCiAKICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCkBAIC04MTEsMzUgKzgwMywyOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzICRwYXJhbWV0ZXJz
eyduYW1lc3BhY2UnfUVsZW1lbnQ7CisgICAgY2xhc3MgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVs
ZW1lbnQ7CiBFTkQKIDsKIAotaWYgKCRwYXJhbWV0ZXJzeyduYW1lc3BhY2UnfSBlcSAiSFRNTCIp
IHsKLSAgICBwcmludCBGICIgICAgIGNsYXNzIEhUTUxGb3JtRWxlbWVudDtcbiI7Ci19Citwcmlu
dCBGICIgICAgIGNsYXNzIEhUTUxGb3JtRWxlbWVudDtcbiIgaWYgJHBhcmFtZXRlcnN7bmFtZXNw
YWNlfSBlcSAiSFRNTCI7CiAKIHByaW50IEY8PEVORAogICAgIC8vIFRoZSBpZGVhIGJlaGluZCB0
aGlzIGNsYXNzIGlzIHRoYXQgdGhlcmUgd2lsbCBldmVudHVhbGx5IGJlIGEgbWFwcGluZyBmcm9t
IG5hbWVzcGFjZSBVUklzIHRvIEVsZW1lbnRGYWN0b3JpZXMgdGhhdCBjYW4gZGlzcGVuc2UKICAg
ICAvLyBlbGVtZW50cy4gSW4gYSBjb21wb3VuZCBkb2N1bWVudCB3b3JsZCwgdGhlIGdlbmVyaWMg
Y3JlYXRlRWxlbWVudCBmdW5jdGlvbiAod2lsbCBlbmQgdXAgYmVpbmcgdmlydHVhbCkgd2lsbCBi
ZSBjYWxsZWQuCi0gICAgY2xhc3MgJHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9RWxlbWVudEZhY3Rv
cnkgeworICAgIGNsYXNzICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50RmFjdG9yeSB7CiAg
ICAgcHVibGljOgogICAgICAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoY29u
c3QgV2ViQ29yZTo6UXVhbGlmaWVkTmFtZSYsIFdlYkNvcmU6OkRvY3VtZW50KiwgYm9vbCBjcmVh
dGVkQnlQYXJzZXIgPSB0cnVlKTsKIEVORAogOwotcHJpbnQgRiAiICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjwkcGFyYW1ldGVyc3snbmFtZXNwYWNlJ31FbGVtZW50PiBjcmVhdGUkcGFyYW1ldGVy
c3snbmFtZXNwYWNlJ31FbGVtZW50KGNvbnN0IFdlYkNvcmU6OlF1YWxpZmllZE5hbWUmLCBXZWJD
b3JlOjpEb2N1bWVudCoiOwotCi1pZiAoJHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9IGVxICJIVE1M
IikgewotICAgIHByaW50IEYgIiwgSFRNTEZvcm1FbGVtZW50KiA9IDAiOwotfQotCitwcmludCBG
ICIgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50
PiBjcmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudChjb25zdCBXZWJDb3JlOjpRdWFs
aWZpZWROYW1lJiwgV2ViQ29yZTo6RG9jdW1lbnQqIjsKK3ByaW50IEYgIiwgSFRNTEZvcm1FbGVt
ZW50KiA9IDAiIGlmICRwYXJhbWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwiOwogcHJpbnQgRiAi
LCBib29sIC8qY3JlYXRlZEJ5UGFyc2VyKi8gPSB0cnVlKTtcbiI7CiAKIHByaW50ZiBGPDxFTkQK
ICAgICB9OwogfQogCi0jZW5kaWYgLy8gJHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9RWxlbWVudEZh
Y3RvcnlfaAorI2VuZGlmIC8vICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50RmFjdG9yeV9o
CiAKIEVORAogOwpAQCAtODU0LDcgKzg0MCw3IEBAIHN1YiB1c2VzRGVmYXVsdEpTV3JhcHBlcgog
ICAgIG15ICRuYW1lID0gc2hpZnQ7CiAKICAgICAjIEEgdGFnIHJldXNlcyB0aGUgZGVmYXVsdCB3
cmFwcGVyIGlmIGl0cyBKU0ludGVyZmFjZU5hbWUgbWF0Y2hlcyB0aGUgZGVmYXVsdCBuYW1lc3Bh
Y2UgRWxlbWVudC4KLSAgICByZXR1cm4gJHRhZ3N7JG5hbWV9eydKU0ludGVyZmFjZU5hbWUnfSBl
cSAkcGFyYW1ldGVyc3sibmFtZXNwYWNlIn0gLiAiRWxlbWVudCIgfHwgJHRhZ3N7JG5hbWV9eydK
U0ludGVyZmFjZU5hbWUnfSBlcSAiSFRNTE5vU2NyaXB0RWxlbWVudCI7CisgICAgcmV0dXJuICR0
YWdzeyRuYW1lfXtKU0ludGVyZmFjZU5hbWV9IGVxICRwYXJhbWV0ZXJze25hbWVzcGFjZX0gLiAi
RWxlbWVudCIgfHwgJHRhZ3N7JG5hbWV9e0pTSW50ZXJmYWNlTmFtZX0gZXEgIkhUTUxOb1Njcmlw
dEVsZW1lbnQiOwogfQogCiBzdWIgcHJpbnRXcmFwcGVyRnVuY3Rpb25zCkBAIC04NjQsMTEgKzg1
MCwxMSBAQCBzdWIgcHJpbnRXcmFwcGVyRnVuY3Rpb25zCiAgICAgbXkgJXRhZ3NTZWVuOwogICAg
IGZvciBteSAkdGFnTmFtZSAoc29ydCBrZXlzICV0YWdzKSB7CiAgICAgICAgICMgQXZvaWQgZGVm
aW5pbmcgdGhlIHNhbWUgd3JhcHBlciBtZXRob2QgdHdpY2UuCi0gICAgICAgIG15ICRKU0ludGVy
ZmFjZU5hbWUgPSAkdGFnc3skdGFnTmFtZX17IkpTSW50ZXJmYWNlTmFtZSJ9OworICAgICAgICBt
eSAkSlNJbnRlcmZhY2VOYW1lID0gJHRhZ3N7JHRhZ05hbWV9e0pTSW50ZXJmYWNlTmFtZX07CiAg
ICAgICAgIG5leHQgaWYgZGVmaW5lZCgkdGFnc1NlZW57JEpTSW50ZXJmYWNlTmFtZX0pIHx8IHVz
ZXNEZWZhdWx0SlNXcmFwcGVyKCR0YWdOYW1lKTsKICAgICAgICAgJHRhZ3NTZWVueyRKU0ludGVy
ZmFjZU5hbWV9ID0gMTsKIAotICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAkdGFnc3skdGFnTmFt
ZX17ImNvbmRpdGlvbmFsIn07CisgICAgICAgIG15ICRjb25kaXRpb25hbCA9ICR0YWdzeyR0YWdO
YW1lfXtjb25kaXRpb25hbH07CiAgICAgICAgIGlmICgkY29uZGl0aW9uYWwpIHsKICAgICAgICAg
ICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICJFTkFCTEUoIiAuIGpvaW4oIikgJiYgRU5BQkxF
KCIsIHNwbGl0KC8mLywgJGNvbmRpdGlvbmFsKSkgLiAiKSI7CiAgICAgICAgICAgICBwcmludCBG
ICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxuIjsKQEAgLTg3NiwxMiArODYyLDEyIEBAIHN1
YiBwcmludFdyYXBwZXJGdW5jdGlvbnMKIAogICAgICAgICAjIEhhY2sgZm9yIHRoZSBtZWRpYSB0
YWdzCiAgICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGhhdmUgYmVlbiBkb25lIHZpYSBhIEN1
c3RvbVdyYXBwZXIgYXR0cmlidXRlIGFuZCBhIHNlcGFyYXRlICpDdXN0b20gZmlsZS4KLSAgICAg
ICAgaWYgKCR0YWdzeyR0YWdOYW1lfXsid3JhcHBlck9ubHlJZk1lZGlhSXNBdmFpbGFibGUifSkg
eworICAgICAgICBpZiAoJHRhZ3N7JHRhZ05hbWV9e3dyYXBwZXJPbmx5SWZNZWRpYUlzQXZhaWxh
YmxlfSkgewogICAgICAgICAgICAgcHJpbnQgRiA8PEVORAotc3RhdGljIEpTTm9kZSogY3JlYXRl
JHtKU0ludGVyZmFjZU5hbWV9V3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8JHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9RWxl
bWVudD4gZWxlbWVudCkKK3N0YXRpYyBKU05vZGUqIGNyZWF0ZSR7SlNJbnRlcmZhY2VOYW1lfVdy
YXBwZXIoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
YXNzUmVmUHRyPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiBlbGVtZW50KQogewogICAg
IGlmICghTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCkpCi0gICAgICAgIHJldHVybiBDUkVBVEVf
RE9NX05PREVfV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsICRwYXJhbWV0ZXJzeyduYW1lc3Bh
Y2UnfUVsZW1lbnQsIGVsZW1lbnQuZ2V0KCkpOworICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9O
T0RFX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxl
bWVudCwgZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIENSRUFURV9ET01fTk9ERV9XUkFQUEVS
KGV4ZWMsIGdsb2JhbE9iamVjdCwgJHtKU0ludGVyZmFjZU5hbWV9LCBlbGVtZW50LmdldCgpKTsK
IH0KIApAQCAtODg5LDcgKzg3NSw3IEBAIEVORAogOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgcHJpbnQgRiA8PEVORAotc3RhdGljIEpTTm9kZSogY3JlYXRlJHtKU0ludGVyZmFjZU5h
bWV9V3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFBhc3NSZWZQdHI8JHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9RWxlbWVudD4gZWxlbWVudCkK
K3N0YXRpYyBKU05vZGUqIGNyZWF0ZSR7SlNJbnRlcmZhY2VOYW1lfVdyYXBwZXIoRXhlY1N0YXRl
KiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPCRwYXJh
bWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiBlbGVtZW50KQogewogICAgIHJldHVybiBDUkVBVEVf
RE9NX05PREVfV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsICR7SlNJbnRlcmZhY2VOYW1lfSwg
ZWxlbWVudC5nZXQoKSk7CiB9CkBAIC04OTcsNiArODgzLDcgQEAgc3RhdGljIEpTTm9kZSogY3Jl
YXRlJHtKU0ludGVyZmFjZU5hbWV9VwogRU5ECiA7CiAgICAgICAgIH0KKwogICAgICAgICBpZiAo
JGNvbmRpdGlvbmFsKSB7CiAgICAgICAgICAgICBwcmludCBGICIjZW5kaWZcblxuIjsKICAgICAg
ICAgfQpAQCAtOTEzLDEzICs5MDAsMTMgQEAgc3ViIHByaW50V3JhcHBlckZhY3RvcnlDcHBGaWxl
CiAKICAgICBwcmludCBGICIjaW5jbHVkZSBcImNvbmZpZy5oXCJcblxuIjsKIAotICAgIHByaW50
IEYgIiNpZiAkcGFyYW1ldGVyc3snZ3VhcmRGYWN0b3J5V2l0aCd9XG5cbiIgaWYgJHBhcmFtZXRl
cnN7J2d1YXJkRmFjdG9yeVdpdGgnfTsKKyAgICBwcmludCBGICIjaWYgJHBhcmFtZXRlcnN7Z3Vh
cmRGYWN0b3J5V2l0aH1cblxuIiBpZiAkcGFyYW1ldGVyc3tndWFyZEZhY3RvcnlXaXRofTsKIAot
ICAgIHByaW50IEYgIiNpbmNsdWRlIFwiSlMkcGFyYW1ldGVyc3snbmFtZXNwYWNlJ31FbGVtZW50
V3JhcHBlckZhY3RvcnkuaFwiXG4iOworICAgIHByaW50IEYgIiNpbmNsdWRlIFwiSlMkcGFyYW1l
dGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJGYWN0b3J5LmhcIlxuIjsKIAogICAgIHByaW50
SlNFbGVtZW50SW5jbHVkZXMoJEYpOwogCi0gICAgcHJpbnQgRiAiXG4jaW5jbHVkZSBcIiRwYXJh
bWV0ZXJzeyduYW1lc3BhY2UnfU5hbWVzLmhcIlxuXG4iOworICAgIHByaW50IEYgIlxuI2luY2x1
ZGUgXCIkcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFtZXMuaFwiXG5cbiI7CiAKICAgICBwcmludEVs
ZW1lbnRJbmNsdWRlcygkRik7CiAKQEAgLTkzMCw5ICs5MTcsOSBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5nIG5hbWVzcGFjZSAkcGFyYW1ldGVy
c3snbmFtZXNwYWNlJ31OYW1lczsKK3VzaW5nIG5hbWVzcGFjZSAkcGFyYW1ldGVyc3tuYW1lc3Bh
Y2V9TmFtZXM7CiAKLXR5cGVkZWYgSlNOb2RlKiAoKkNyZWF0ZSRwYXJhbWV0ZXJzeyduYW1lc3Bh
Y2UnfUVsZW1lbnRXcmFwcGVyRnVuY3Rpb24pKEV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0
KiwgUGFzc1JlZlB0cjwkcGFyYW1ldGVyc3snbmFtZXNwYWNlJ31FbGVtZW50Pik7Cit0eXBlZGVm
IEpTTm9kZSogKCpDcmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJGdW5j
dGlvbikoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRyPCRwYXJhbWV0
ZXJze25hbWVzcGFjZX1FbGVtZW50Pik7CiAKIEVORAogOwpAQCAtOTQwLDkgKzkyNyw5IEBAIEVO
RAogICAgIHByaW50V3JhcHBlckZ1bmN0aW9ucygkRik7CiAKICAgICBwcmludCBGIDw8RU5ECi1K
U05vZGUqIGNyZWF0ZUpTJHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9V3JhcHBlcihFeGVjU3RhdGUq
IGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8JHBhcmFt
ZXRlcnN7J25hbWVzcGFjZSd9RWxlbWVudD4gZWxlbWVudCkKK0pTTm9kZSogY3JlYXRlSlMkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9V3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1l
bnQ+IGVsZW1lbnQpCiB7ICAgCi0gICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OkF0b21pY1N0
cmluZ0ltcGwqLCBDcmVhdGUkcGFyYW1ldGVyc3snbmFtZXNwYWNlJ31FbGVtZW50V3JhcHBlckZ1
bmN0aW9uPiBGdW5jdGlvbk1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6QXRvbWlj
U3RyaW5nSW1wbCosIENyZWF0ZSRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBlckZ1
bmN0aW9uPiBGdW5jdGlvbk1hcDsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEZ1bmN0aW9uTWFw
LCBtYXAsICgpKTsKICAgICBpZiAobWFwLmlzRW1wdHkoKSkgewogRU5ECkBAIC05NTIsMTMgKzkz
OSwxMyBAQCBFTkQKICAgICAgICAgIyBEbyBub3QgYWRkIHRoZSBuYW1lIHRvIHRoZSBtYXAgaWYg
aXQgZG9lcyBub3QgaGF2ZSBhIEpTIHdyYXBwZXIgY29uc3RydWN0b3Igb3IgdXNlcyB0aGUgZGVm
YXVsdCB3cmFwcGVyLgogICAgICAgICBuZXh0IGlmIHVzZXNEZWZhdWx0SlNXcmFwcGVyKCR0YWcs
IFwldGFncyk7CiAKLSAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0gJHRhZ3N7JHRhZ317ImNvbmRp
dGlvbmFsIn07CisgICAgICAgIG15ICRjb25kaXRpb25hbCA9ICR0YWdzeyR0YWd9e2NvbmRpdGlv
bmFsfTsKICAgICAgICAgaWYgKCRjb25kaXRpb25hbCkgewogICAgICAgICAgICAgbXkgJGNvbmRp
dGlvbmFsU3RyaW5nID0gIkVOQUJMRSgiIC4gam9pbigiKSAmJiBFTkFCTEUoIiwgc3BsaXQoLyYv
LCAkY29uZGl0aW9uYWwpKSAuICIpIjsKICAgICAgICAgICAgIHByaW50IEYgIiNpZiAke2NvbmRp
dGlvbmFsU3RyaW5nfVxuIjsKICAgICAgICAgfQogCi0gICAgICAgIG15ICR1Y1RhZyA9ICR0YWdz
eyR0YWd9eyJKU0ludGVyZmFjZU5hbWUifTsKKyAgICAgICAgbXkgJHVjVGFnID0gJHRhZ3N7JHRh
Z317SlNJbnRlcmZhY2VOYW1lfTsKICAgICAgICAgcHJpbnQgRiAiICAgICAgIG1hcC5zZXQoJHt0
YWd9VGFnLmxvY2FsTmFtZSgpLmltcGwoKSwgY3JlYXRlJHt1Y1RhZ31XcmFwcGVyKTtcbiI7CiAK
ICAgICAgICAgaWYgKCRjb25kaXRpb25hbCkgewpAQCAtOTY4LDEwICs5NTUsMTAgQEAgRU5ECiAK
ICAgICBwcmludCBGIDw8RU5ECiAgICAgfQotICAgIENyZWF0ZSRwYXJhbWV0ZXJzeyduYW1lc3Bh
Y2UnfUVsZW1lbnRXcmFwcGVyRnVuY3Rpb24gY3JlYXRlV3JhcHBlckZ1bmN0aW9uID0gbWFwLmdl
dChlbGVtZW50LT5sb2NhbE5hbWUoKS5pbXBsKCkpOworICAgIENyZWF0ZSRwYXJhbWV0ZXJze25h
bWVzcGFjZX1FbGVtZW50V3JhcHBlckZ1bmN0aW9uIGNyZWF0ZVdyYXBwZXJGdW5jdGlvbiA9IG1h
cC5nZXQoZWxlbWVudC0+bG9jYWxOYW1lKCkuaW1wbCgpKTsKICAgICBpZiAoY3JlYXRlV3JhcHBl
ckZ1bmN0aW9uKQogICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlckZ1bmN0aW9uKGV4ZWMsIGds
b2JhbE9iamVjdCwgZWxlbWVudCk7Ci0gICAgcmV0dXJuIENSRUFURV9ET01fTk9ERV9XUkFQUEVS
KGV4ZWMsIGdsb2JhbE9iamVjdCwgJHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9RWxlbWVudCwgZWxl
bWVudC5nZXQoKSk7CisgICAgcmV0dXJuIENSRUFURV9ET01fTk9ERV9XUkFQUEVSKGV4ZWMsIGds
b2JhbE9iamVjdCwgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQsIGVsZW1lbnQuZ2V0KCkp
OwogfQogCiB9CkBAIC05NzksNyArOTY2LDcgQEAgRU5ECiBFTkQKIDsKIAotICAgIHByaW50IEYg
IiNlbmRpZlxuIiBpZiAkcGFyYW1ldGVyc3snZ3VhcmRGYWN0b3J5V2l0aCd9OworICAgIHByaW50
IEYgIiNlbmRpZlxuIiBpZiAkcGFyYW1ldGVyc3tndWFyZEZhY3RvcnlXaXRofTsKIAogICAgIGNs
b3NlIEY7CiB9CkBAIC05OTIsMTAgKzk3OSwxMCBAQCBzdWIgcHJpbnRXcmFwcGVyRmFjdG9yeUhl
YWRlckZpbGUKIAogICAgIHByaW50TGljZW5zZUhlYWRlcigkRik7CiAKLSAgICBwcmludCBGICIj
aWZuZGVmIEpTJHBhcmFtZXRlcnN7J25hbWVzcGFjZSd9RWxlbWVudFdyYXBwZXJGYWN0b3J5X2hc
biI7Ci0gICAgcHJpbnQgRiAiI2RlZmluZSBKUyRwYXJhbWV0ZXJzeyduYW1lc3BhY2UnfUVsZW1l
bnRXcmFwcGVyRmFjdG9yeV9oXG5cbiI7CisgICAgcHJpbnQgRiAiI2lmbmRlZiBKUyRwYXJhbWV0
ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBlckZhY3RvcnlfaFxuIjsKKyAgICBwcmludCBGICIj
ZGVmaW5lIEpTJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnRXcmFwcGVyRmFjdG9yeV9oXG5c
biI7CiAKLSAgICBwcmludCBGICIjaWYgJHBhcmFtZXRlcnN7J2d1YXJkRmFjdG9yeVdpdGgnfVxu
IiBpZiAkcGFyYW1ldGVyc3snZ3VhcmRGYWN0b3J5V2l0aCd9OworICAgIHByaW50IEYgIiNpZiAk
cGFyYW1ldGVyc3tndWFyZEZhY3RvcnlXaXRofVxuIiBpZiAkcGFyYW1ldGVyc3tndWFyZEZhY3Rv
cnlXaXRofTsKIAogICAgIHByaW50IEYgPDxFTkQKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpA
QCAtMTAwOCwxOCArOTk1LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEpT
Tm9kZTsKICAgICBjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKLSAgICBjbGFzcyAkcGFyYW1ldGVy
c3snbmFtZXNwYWNlJ31FbGVtZW50OworICAgIGNsYXNzICRwYXJhbWV0ZXJze25hbWVzcGFjZX1F
bGVtZW50OwogCi0gICAgSlNOb2RlKiBjcmVhdGVKUyRwYXJhbWV0ZXJzeyduYW1lc3BhY2UnfVdy
YXBwZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFBhc3NSZWZQdHI8JHBh
cmFtZXRlcnN7J25hbWVzcGFjZSd9RWxlbWVudD4pOworICAgIEpTTm9kZSogY3JlYXRlSlMkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9V3JhcHBlcihKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0KiwgUGFzc1JlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4pOwogCiB9CiAg
CiBFTkQKIDsKIAotICAgIHByaW50IEYgIiNlbmRpZiAvLyAkcGFyYW1ldGVyc3snZ3VhcmRGYWN0
b3J5V2l0aCd9XG5cbiIgaWYgJHBhcmFtZXRlcnN7J2d1YXJkRmFjdG9yeVdpdGgnfTsKKyAgICBw
cmludCBGICIjZW5kaWYgLy8gJHBhcmFtZXRlcnN7Z3VhcmRGYWN0b3J5V2l0aH1cblxuIiBpZiAk
cGFyYW1ldGVyc3tndWFyZEZhY3RvcnlXaXRofTsKIAotICAgIHByaW50IEYgIiNlbmRpZiAvLyBK
UyRwYXJhbWV0ZXJzeyduYW1lc3BhY2UnfUVsZW1lbnRXcmFwcGVyRmFjdG9yeV9oXG4iOworICAg
IHByaW50IEYgIiNlbmRpZiAvLyBKUyRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50V3JhcHBl
ckZhY3RvcnlfaFxuIjsKIAogICAgIGNsb3NlIEY7CiB9Cg==
</data>
<flag name="review"
          id="19133"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>