<?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>169672</bug_id>
          
          <creation_ts>2017-03-15 07:12:26 -0700</creation_ts>
          <short_desc>Make it possible to use WEB_UI_STRING macros to mark translatable strings in glib based ports</short_desc>
          <delta_ts>2017-03-23 09:23:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>156974</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>darin</cc>
    
    <cc>piotrdrag</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1288047</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-03-15 07:12:26 -0700</bug_when>
    <thetext>WEB_UI_STRING macros are currently used by Cocoa based ports and Windows port. For other ports it simply returns the given string, but it&apos;s not translated. In the GTK+ port we have all translatable strings from LocalizedStrings.cpp copied in LocalizedStringsGtk.cpp to use the glib macros to mark them as translatable. In most of the cases the strings are exactly in the same, in some others (the context menu ones) the string only differs in the mnemonics used by GTK, and only in a few cases the strings are different. We could remove most of that duplication if strings used by WEB_UI_STRING were marked as translatable in glib based ports too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288048</commentid>
    <comment_count>1</comment_count>
      <attachid>304498</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-03-15 07:24:47 -0700</bug_when>
    <thetext>Created attachment 304498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288098</commentid>
    <comment_count>2</comment_count>
      <attachid>304498</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-03-15 10:02:47 -0700</bug_when>
    <thetext>Comment on attachment 304498
Patch

Nice! Let&apos;s try it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290031</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-03-22 02:56:07 -0700</bug_when>
    <thetext>Committed r214244: &lt;http://trac.webkit.org/changeset/214244&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290289</commentid>
    <comment_count>4</comment_count>
    <who name="Piotr Drąg">piotrdrag</who>
    <bug_when>2017-03-22 18:07:12 -0700</bug_when>
    <thetext>A lot of strings disappeared from the .pot file at https://l10n.gnome.org/module/webkit/ — I just want to make sure that’s intended.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290369</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-03-22 23:25:20 -0700</bug_when>
    <thetext>(In reply to Piotr Drąg from comment #4)
&gt; A lot of strings disappeared from the .pot file at
&gt; https://l10n.gnome.org/module/webkit/ — I just want to make sure that’s
&gt; intended.

I would expect more, not less. How is that pot file generated? It&apos;s not from a webkit build for sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290461</commentid>
    <comment_count>6</comment_count>
    <who name="Piotr Drąg">piotrdrag</who>
    <bug_when>2017-03-23 09:23:14 -0700</bug_when>
    <thetext>It’s probably using intltool, but I’m not sure. I’ve files a bug against damned-lies: https://bugzilla.gnome.org/show_bug.cgi?id=780458</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304498</attachid>
            <date>2017-03-15 07:24:47 -0700</date>
            <delta_ts>2017-03-15 10:02:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wplatform-translations.diff</filename>
            <type>text/plain</type>
            <size>79755</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTdjZGE0ODYzZGYuLjFkOWJlMDQ3Y2Y4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMjExMiw2ICsyMTEyLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL0xlbmd0aFBvaW50LmNwcAogICAgIHBsYXRmb3JtL0xlbmd0aFNpemUuY3Bw
CiAgICAgcGxhdGZvcm0vTGlua0hhc2guY3BwCisgICAgcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5n
cy5jcHAKICAgICBwbGF0Zm9ybS9Mb2dnaW5nLmNwcAogICAgIHBsYXRmb3JtL0xvd1Bvd2VyTW9k
ZU5vdGlmaWVyLmNwcAogICAgIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggYjNhYjZhMWFjNTcuLjkwYjY2ZWQ0MDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQw
IEBACisyMDE3LTAzLTE1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHVzZSBXRUJfVUlfU1RSSU5HIG1hY3Jv
cyB0byBtYXJrIHRyYW5zbGF0YWJsZSBzdHJpbmdzIGluIGdsaWIgYmFzZWQgcG9ydHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTY3MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdFQl9VSV9TVFJJTkcg
bWFjcm9zIGFyZSBjdXJyZW50bHkgdXNlZCBieSBDb2NvYSBiYXNlZCBwb3J0cyBhbmQgV2luZG93
cyBwb3J0LiBGb3Igb3RoZXIgcG9ydHMgaXQgc2ltcGx5IHJldHVybnMKKyAgICAgICAgdGhlIGdp
dmVuIHN0cmluZywgYnV0IGl0J3Mgbm90IHRyYW5zbGF0ZWQuIEluIHRoZSBHVEsrIHBvcnQgd2Ug
aGF2ZSBhbGwgdHJhbnNsYXRhYmxlIHN0cmluZ3MgZnJvbQorICAgICAgICBMb2NhbGl6ZWRTdHJp
bmdzLmNwcCBjb3BpZWQgaW4gTG9jYWxpemVkU3RyaW5nc0d0ay5jcHAgdG8gdXNlIHRoZSBnbGli
IG1hY3JvcyB0byBtYXJrIHRoZW0gYXMgdHJhbnNsYXRhYmxlLiBJbgorICAgICAgICBtb3N0IG9m
IHRoZSBjYXNlcyB0aGUgc3RyaW5ncyBhcmUgZXhhY3RseSBpbiB0aGUgc2FtZSwgaW4gc29tZSBv
dGhlcnMgKHRoZSBjb250ZXh0IG1lbnUgb25lcykgdGhlIHN0cmluZyBvbmx5CisgICAgICAgIGRp
ZmZlcnMgaW4gdGhlIG1uZW1vbmljcyB1c2VkIGJ5IEdUSywgYW5kIG9ubHkgaW4gYSBmZXcgY2Fz
ZXMgdGhlIHN0cmluZ3MgYXJlIGRpZmZlcmVudC4gV2UgY291bGQgcmVtb3ZlIG1vc3Qgb2YKKyAg
ICAgICAgdGhhdCBkdXBsaWNhdGlvbiBpZiBzdHJpbmdzIHVzZWQgYnkgV0VCX1VJX1NUUklORyB3
ZXJlIG1hcmtlZCBhcyB0cmFuc2xhdGFibGUgaW4gZ2xpYiBiYXNlZCBwb3J0cyB0b28uCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBtYWtlcyB0aGF0IHBvc3NpYmxlIHdpdGggdGhlIGZvbGxvd2luZyBj
aGFuZ2VzOgorCisgICAgICAgICAgLSBBZGQgV0VCX1VJX1NUUklOR19XSVRIX01ORU1PTklDKCkg
dG8gaGFuZGxlIHRoZSBjYXNlcyB3aGVyZSB0aGUgc3RyaW5ncyBvbmx5IGRpZmZlciBpbiB0aGUg
bW5lbW9uaWNzLiBJdAorICAgICAgICAgICAgcmVjZWl2ZXMgdGhlIHN0cmluZyB3aXRoIG1uZW1v
bmljcyB0aGF0IGlzIGlnbm9yZWQgaW4gYWxsIHBvcnRzIGV4Y2VwdCBHVEsrLgorICAgICAgICAg
IC0gQWxsIHBsYXRmb3JtIHNwZWNpZmljIHN0cmluZ3MgaGF2ZSBiZWVuIG1vdmVkIHRvIHRoZSBw
bGF0Zm9ybSBmaWxlcywgdG8gZW5zdXJlIHNjYW5uZXJzIGRvbid0IGluY2x1ZGUKKyAgICAgICAg
ICAgIHN0cmluZ3MgZnJvbSBvdGhlciBwb3J0cy4KKyAgICAgICAgICAtIEZvciB0aGUgc2FtZSBy
ZWFzb24gYSBuZXcgbWFjcm8gV0VCX1VJX0NGU1RSSU5HIGhhcyBiZWVuIGFsc28gYWRkZWQsIGp1
c3QgdG8gbWFrZSBzdXJlIHRoYXQgQ0Ygc3RyaW5ncyBhcmUKKyAgICAgICAgICAgIG9ubHkgdXNl
ZCBieSBDRiBiYXNlZCBwb3J0cy4gVGhlIGltcGxlbWVudGF0aW9uIGlzIHRoZSBzYW1lIGFzIFdF
Ql9VSV9TVFJJTkcsIGl0IG9ubHkgY2hhbmdlcyB0aGUgbmFtZSB0bworICAgICAgICAgICAgbm90
IGNvbmZ1c2UgdGhlIHNjYW5uZXJzLgorICAgICAgICAgIC0gQW5kIGFnYWluIGZvciB0aGUgc2Ft
ZSByZWFzb24sIGZvciBub24tQ0YgYW5kIG5vbi1HbGliIGNhc2VzIFdFQl9VSV9TVFJJTkcgaXMg
bm90IHVzZWQsIHNpbmNlIGluIHRob3NlIGNhc2VzCisgICAgICAgICAgICBzdHJpbmdzIGFyZSBu
b3QgcmVhbGx5IHRyYW5zbGF0ZWQgYW5kIFN0cmluZzo6ZnJvbVVURjgoKSBpcyBhY3R1YWxseSB1
c2VkLiBTbywgbm93IHdlIHVzZSBTdHJpbmc6OmZyb21VVEY4KCkKKyAgICAgICAgICAgIGRpcmVj
dGx5IGluc3RlYWQgb2YgV0VCX1VJX1NUUklORyB0byBub3QgY29uZnVzZSB0aGUgc2Nhbm5lcnMu
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIExvY2FsaXplZFN0cmluZ3MuY3BwIHRv
IHRoZSBjb21waWxhdGlvbi4KKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogTW92ZSBMb2Nh
bGl6ZWRTdHJpbmdzR3RrLmNwcCB0byB0aGUgbGlzdCBvZiBzb3VyY2VzIG5vdCBkZXBlbmRpbmcg
b24gR1RLKywgc2luY2UgaXQgbm8KKyAgICAgICAgbG9uZ2VyIHVzZXMgR1RLKy4KKyAgICAgICAg
KiBleHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3MucGw6IFVwZGF0ZSBpdCB0byBoYW5kbGUgdGhl
IG5ldyBtYWNyb3MuCisgICAgICAgICogcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpmb3JtYXRMb2NhbGl6ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6Y29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtJbk5ld1dpbmRvdyk6CisgICAgICAgIChXZWJD
b3JlOjpjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2spOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5OZXdXaW5kb3cpOgorICAgICAgICAo
V2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVG9DbGlwYm9hcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnT3BlbkZyYW1lSW5OZXdXaW5kb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnQ29weSk6CisgICAgICAgIChXZWJDb3Jl
Ojpjb250ZXh0TWVudUl0ZW1UYWdHb0JhY2spOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1l
bnVJdGVtVGFnR29Gb3J3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRh
Z1N0b3ApOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnUmVsb2FkKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0N1dCk6CisgICAgICAgIChXZWJDb3Jl
Ojpjb250ZXh0TWVudUl0ZW1UYWdQYXN0ZSk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVu
dUl0ZW1UYWdJZ25vcmVTcGVsbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0
ZW1UYWdMZWFyblNwZWxsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRh
Z0xvb2tVcEluRGljdGlvbmFyeSk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1U
YWdPcGVuTGluayk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVH
cmFtbWFyKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nTWVu
dSk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5l
bCk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5
cGluZyk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJX
aXRoU3BlbGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnRm9udE1l
bnUpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnQm9sZCk6CisgICAgICAg
IChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdJdGFsaWMpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRN
ZW51SXRlbVRhZ091dGxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFn
T3BlblZpZGVvSW5OZXdXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVt
VGFnT3BlbkF1ZGlvSW5OZXdXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJ
dGVtVGFnRG93bmxvYWRWaWRlb1RvRGlzayk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVu
dUl0ZW1UYWdEb3dubG9hZEF1ZGlvVG9EaXNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRN
ZW51SXRlbVRhZ0V4aXRWaWRlb0Z1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4
dE1lbnVJdGVtVGFnTWVkaWFQbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRl
bVRhZ01lZGlhUGF1c2UpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnTWVk
aWFNdXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFYQXV0b0ZpbGxDb250YWN0c0xhYmVsKToKKyAgICAg
ICAgKFdlYkNvcmU6OmltYWdlVGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGlvbk1l
c3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGlvbk1l
c3NhZ2VSYW5nZU92ZXJmbG93VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0VHJhY2tDb3Vu
dHJ5QW5kTGFuZ3VhZ2VNZW51SXRlbVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dFRyYWNr
TGFuZ3VhZ2VNZW51SXRlbVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Y2xvc2VkQ2FwdGlvblRy
YWNrTWVudUl0ZW1UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnNkaFRyYWNrTWVudUl0ZW1UZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OmVhc3lSZWFkZXJUcmFja01lbnVJdGVtVGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpmb3JjZWRUcmFja01lbnVJdGVtVGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjphdWRpb0Rlc2NyaXB0aW9uVHJhY2tTdWZmaXhUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ondl
YkNyeXB0b01hc3RlcktleUtleWNoYWluTGFiZWwpOgorICAgICAgICAqIHBsYXRmb3JtL0xvY2Fs
aXplZFN0cmluZ3MuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdz
Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpjb3B5SW1hZ2VVbmtub3duRmlsZUxhYmVsKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaEluU3BvdGxpZ2h0KToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaFdlYik6CisgICAgICAg
IChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdTaG93Rm9udHMpOgorICAgICAgICAoV2ViQ29y
ZTo6Y29udGV4dE1lbnVJdGVtVGFnU3R5bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRN
ZW51SXRlbVRhZ1Nob3dDb2xvcnMpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVt
VGFnU3BlZWNoTWVudSk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdTdGFy
dFNwZWFraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1N0b3BTcGVh
a2luZyk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxp
bmdBdXRvbWF0aWNhbGx5KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1N1
YnN0aXR1dGlvbnNNZW51KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1No
b3dTdWJzdGl0dXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1Nt
YXJ0Q29weVBhc3RlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0
UXVvdGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0RGFzaGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0TGlua3MpOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnVGV4dFJlcGxhY2VtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnUpOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnTWFrZVVwcGVyQ2FzZSk6CisgICAgICAg
IChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdNYWtlTG93ZXJDYXNlKToKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0NhcGl0YWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udGV4dE1lbnVJdGVtVGFnQ2hhbmdlQmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0
TWVudUl0ZW1UYWdFbnRlclZpZGVvRW5oYW5jZWRGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnRleHRNZW51SXRlbVRhZ0V4aXRWaWRlb0VuaGFuY2VkRnVsbHNjcmVlbik6CisgICAg
ICAgIChXZWJDb3JlOjpBWEFSSUFDb250ZW50R3JvdXBUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFYSG9yaXpvbnRhbFJ1bGVEZXNjcmlwdGlvblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QVhN
YXJrVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBWE1ldGVyR2F1Z2VSZWdpb25PcHRpbXVtVGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpBWE1ldGVyR2F1Z2VSZWdpb25TdWJvcHRpbWFsVGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpBWE1ldGVyR2F1Z2VSZWdpb25MZXNzR29vZFRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6YnVpbHRJblBERlBsdWdpbk5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6
cGRmRG9jdW1lbnRUeXBlRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6cG9zdFNjcmlw
dERvY3VtZW50VHlwZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmtleWdlbk1lbnVJ
dGVtMjA0OCk6CisgICAgICAgIChXZWJDb3JlOjprZXlnZW5LZXljaGFpbkl0ZW1OYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6Omh0bWxTZWxlY3RNdWx0aXBsZUl0ZW1zKToKKyAgICAgICAgKFdlYkNv
cmU6OmZpbGVCdXR0b25DaG9vc2VNZWRpYUZpbGVMYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpm
aWxlQnV0dG9uQ2hvb3NlTXVsdGlwbGVNZWRpYUZpbGVzTGFiZWwpOgorICAgICAgICAoV2ViQ29y
ZTo6ZmlsZUJ1dHRvbk5vTWVkaWFGaWxlU2VsZWN0ZWRMYWJlbCk6CisgICAgICAgIChXZWJDb3Jl
OjpmaWxlQnV0dG9uTm9NZWRpYUZpbGVzU2VsZWN0ZWRMYWJlbCk6CisgICAgICAgIChXZWJDb3Jl
OjppbnNlcnRMaXN0VHlwZU5vbmUpOgorICAgICAgICAoV2ViQ29yZTo6aW5zZXJ0TGlzdFR5cGVC
dWxsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjppbnNlcnRMaXN0VHlwZUJ1bGxldGVkQWNjZXNz
aWJpbGl0eVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6Omluc2VydExpc3RUeXBlTnVtYmVyZWQp
OgorICAgICAgICAoV2ViQ29yZTo6aW5zZXJ0TGlzdFR5cGVOdW1iZXJlZEFjY2Vzc2liaWxpdHlU
aXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGl0RnVsbFNjcmVlbkJ1dHRvbkFjY2Vzc2liaWxp
dHlUaXRsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0xvY2FsaXplZFN0cmluZ3NHdGsuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnRGVsZXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbCk6CisgICAgICAgICogcGxhdGZv
cm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4
dE1lbnVJdGVtVGFnU2VhcmNoV2ViKToKKyAgICAgICAgKFdlYkNvcmU6OnVwbG9hZEZpbGVUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OmFsbEZpbGVzVGV4dCk6CisKIDIwMTctMDMtMTMgIEpvc2Vw
aCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2Vk
IG1ldGhvZHMgb2YgUmVzb3VyY2VSZXF1ZXN0QmFzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpp
bmRleCA2NTc5ZTEyMjE4YS4uYjU4ZTc1Y2E2N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtl
CkBAIC0xMzgsNiArMTM4LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBw
bGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5j
cHAKKyAgICBwbGF0Zm9ybS9ndGsvTG9jYWxpemVkU3RyaW5nc0d0ay5jcHAKICAgICBwbGF0Zm9y
bS9ndGsvTUlNRVR5cGVSZWdpc3RyeUd0ay5jcHAKICAgICBwbGF0Zm9ybS9ndGsvUGFzdGVib2Fy
ZEd0ay5jcHAKICAgICBwbGF0Zm9ybS9ndGsvU2Nyb2xsQW5pbWF0b3JHdGsuY3BwCkBAIC0yMDAs
NyArMjAxLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZVBsYXRmb3JtR1RLX1NPVVJDRVMKICAgICBw
bGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5jcHAKICAgICBwbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVz
LmNwcAogICAgIHBsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmMKLSAgICBwbGF0Zm9ybS9ndGsv
TG9jYWxpemVkU3RyaW5nc0d0ay5jcHAKICAgICBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBl
ci5jcHAKICAgICBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNwcAogICAg
IHBsYXRmb3JtL2d0ay9QbGF0Zm9ybU1vdXNlRXZlbnRHdGsuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9leHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3MucGwgYi9Tb3VyY2UvV2ViQ29y
ZS9leHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3MucGwKaW5kZXggYjJjNjkzOTY4YTguLjgyMmQy
OTNlOGUwIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9leHRyYWN0LWxvY2FsaXphYmxlLXN0
cmluZ3MucGwKKysrIGIvU291cmNlL1dlYkNvcmUvZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdz
LnBsCkBAIC0xMzIsNiArMTMyLDcgQEAgZm9yIG15ICRmaWxlIChzb3J0IEBmaWxlcykgewogICAg
IG15ICRVSVN0cmluZzsKICAgICBteSAka2V5OwogICAgIG15ICRjb21tZW50OworICAgIG15ICRt
bmVtb25pYzsKICAgICAKICAgICBteSAkc3RyaW5nOwogICAgIG15ICRzdHJpbmdMaW5lOwpAQCAt
MTg4LDYgKzE4OSw5IEBAIGhhbmRsZVN0cmluZzoKICAgICAgICAgICAgICAgICAgICAgICAgICMg
RklYTUU6IFZhbGlkYXRlIFVURi04IGhlcmU/CiAgICAgICAgICAgICAgICAgICAgICAgICAka2V5
ID0gJHN0cmluZzsKICAgICAgICAgICAgICAgICAgICAgICAgICRleHBlY3RlZCA9ICIsIjsKKyAg
ICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoKCRtYWNybyA9fiAvV0VCX1VJX1NUUklOR19XSVRI
X01ORU1PTklDJC8pIGFuZCAhZGVmaW5lZCAkbW5lbW9uaWMpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICRtbmVtb25pYyA9ICRzdHJpbmc7CisgICAgICAgICAgICAgICAgICAgICAgICAkZXhw
ZWN0ZWQgPSAiLCI7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCFkZWZpbmVkICRjb21t
ZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBWYWxpZGF0ZSBVVEYtOCBo
ZXJlPwogICAgICAgICAgICAgICAgICAgICAgICAgJGNvbW1lbnQgPSAkc3RyaW5nOwpAQCAtMjQw
LDEyICsyNDQsMTMgQEAgaGFuZGxlU3RyaW5nOgogICAgICAgICAgICAgICAgICAgICBlbWl0RXJy
b3IoJGZpbGUsICQuLCAiZm91bmQgJHRva2VuIGJ1dCBleHBlY3RlZCAkZXhwZWN0ZWQiKTsKICAg
ICAgICAgICAgICAgICAgICAgJGV4cGVjdGVkID0gIiI7CiAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGlmICgoJHRva2VuID1+IC8oV0VCXyk/VUlfU1RSSU5HKF9LRVkpPyhfSU5U
RVJOQUwpPyQvKSB8fCAoJHRva2VuID1+IC9XRUJfVUlfTlNTVFJJTkckLykpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoKCR0b2tlbiA9fiAvKFdFQl8pP1VJX1NUUklORyhfS0VZKT8oX0lOVEVSTkFM
KT8kLykgfHwgKCR0b2tlbiA9fiAvV0VCX1VJX05TU1RSSU5HJC8pIHx8ICgkdG9rZW4gPX4gL1dF
Ql9VSV9TVFJJTkdfV0lUSF9NTkVNT05JQyQvKSB8fCAoJHRva2VuID1+IC9XRUJfVUlfQ0ZTVFJJ
TkckLykpIHsKICAgICAgICAgICAgICAgICAgICAgJGV4cGVjdGVkID0gIigiOwogICAgICAgICAg
ICAgICAgICAgICAkbWFjcm8gPSAkdG9rZW47CiAgICAgICAgICAgICAgICAgICAgICRVSVN0cmlu
ZyA9IHVuZGVmOwogICAgICAgICAgICAgICAgICAgICAka2V5ID0gdW5kZWY7CiAgICAgICAgICAg
ICAgICAgICAgICRjb21tZW50ID0gdW5kZWY7CisgICAgICAgICAgICAgICAgICAgICRtbmVtb25p
YyA9IHVuZGVmOwogICAgICAgICAgICAgICAgICAgICAkbWFjcm9MaW5lID0gJC47CiAgICAgICAg
ICAgICAgICAgfSBlbHNpZiAoJHRva2VuIGVxICIoIiBvciAkdG9rZW4gZXEgIlsiKSB7CiAgICAg
ICAgICAgICAgICAgICAgICsrJG5lc3RpbmdMZXZlbCBpZiBkZWZpbmVkICRuZXN0aW5nTGV2ZWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCmluZGV4IDU4
YTk2OWJmZWU0Li5kN2IyYThmMTRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9j
YWxpemVkU3RyaW5ncy5jcHAKQEAgLTM4LDggKzM4LDggQEAKICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIldlYkNvcmVT
eXN0ZW1JbnRlcmZhY2UuaCIKKyNpZiBVU0UoR0xJQikKKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5p
cXVlUHRyLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDksNyArNDksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyAgMikgSXQgZG9lc24ndCBoYW5kbGUgdGhlICUyJGQg
c3ludGF4LgogLy8gTm90ZSB0aGF0IGJlY2F1c2UgfGZvcm1hdHwgaXMgdXNlZCBhcyB0aGUgc2Vj
b25kIHBhcmFtZXRlciB0byB2YV9zdGFydCwgaXQgY2Fubm90IGJlIGEgcmVmZXJlbmNlCiAvLyB0
eXBlIGFjY29yZGluZyB0byBzZWN0aW9uIDE4LjcvMyBvZiB0aGUgQysrIE4xOTA1IHN0YW5kYXJk
Lgotc3RhdGljIFN0cmluZyBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoU3RyaW5nIGZvcm1hdCwgLi4u
KQorU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmluZyhTdHJpbmcgZm9ybWF0LCAuLi4pCiB7CiAj
aWYgVVNFKENGKQogICAgIHZhX2xpc3QgYXJndW1lbnRzOwpAQCAtNjYsNiArNjYsMTIgQEAgc3Rh
dGljIFN0cmluZyBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoU3RyaW5nIGZvcm1hdCwgLi4uKQogCiAg
ICAgdmFfZW5kKGFyZ3VtZW50cyk7CiAgICAgcmV0dXJuIHJlc3VsdC5nZXQoKTsKKyNlbGlmIFVT
RShHTElCKQorICAgIHZhX2xpc3QgYXJndW1lbnRzOworICAgIHZhX3N0YXJ0KGFyZ3VtZW50cywg
Zm9ybWF0KTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiByZXN1bHQoZ19zdHJkdXBfdnByaW50Zihm
b3JtYXQudXRmOCgpLmRhdGEoKSwgYXJndW1lbnRzKSk7CisgICAgdmFfZW5kKGFyZ3VtZW50cyk7
CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocmVzdWx0LmdldCgpKTsKICNlbHNlCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZm9ybWF0OwpAQCAtMTMyLDg1ICsxMzgsODAg
QEAgU3RyaW5nIGRlZmF1bHREZXRhaWxzU3VtbWFyeVRleHQoKQogICAgIHJldHVybiBXRUJfVUlf
U1RSSU5HKCJEZXRhaWxzIiwgInRleHQgdG8gZGlzcGxheSBpbiA8ZGV0YWlscz4gdGFnIHdoZW4g
aXQgaGFzIG5vIDxzdW1tYXJ5PiBjaGlsZCIpOwogfQogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0K
LVN0cmluZyBjb3B5SW1hZ2VVbmtub3duRmlsZUxhYmVsKCkKLXsKLSAgICByZXR1cm4gV0VCX1VJ
X1NUUklORygidW5rbm93biIsICJVbmtub3duIGZpbGVuYW1lIik7Ci19Ci0KLSNlbmRpZgotCiAj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVu
TGlua0luTmV3V2luZG93KCkKIHsKLSAgICByZXR1cm4gV0VCX1VJX1NUUklORygiT3BlbiBMaW5r
IGluIE5ldyBXaW5kb3ciLCAiT3BlbiBpbiBOZXcgV2luZG93IGNvbnRleHQgbWVudSBpdGVtIik7
CisgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkdfV0lUSF9NTkVNT05JQygiT3BlbiBMaW5rIGluIE5l
dyBXaW5kb3ciLCAiT3BlbiBMaW5rIGluIE5ldyBfV2luZG93IiwgIk9wZW4gaW4gTmV3IFdpbmRv
dyBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRG93
bmxvYWRMaW5rVG9EaXNrKCkKIHsKLSAgICByZXR1cm4gV0VCX1VJX1NUUklORygiRG93bmxvYWQg
TGlua2VkIEZpbGUiLCAiRG93bmxvYWQgTGlua2VkIEZpbGUgY29udGV4dCBtZW51IGl0ZW0iKTsK
KyAgICByZXR1cm4gV0VCX1VJX1NUUklOR19XSVRIX01ORU1PTklDKCJEb3dubG9hZCBMaW5rZWQg
RmlsZSIsICJfRG93bmxvYWQgTGlua2VkIEZpbGUiLCAiRG93bmxvYWQgTGlua2VkIEZpbGUgY29u
dGV4dCBtZW51IGl0ZW0iKTsKIH0KIAorI2lmICFQTEFURk9STShHVEspCiBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2FyZCgpCiB7CiAgICAgcmV0dXJuIFdFQl9VSV9T
VFJJTkcoIkNvcHkgTGluayIsICJDb3B5IExpbmsgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KKyNl
bmRpZgogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5OZXdXaW5kb3coKQog
ewotICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJPcGVuIEltYWdlIGluIE5ldyBXaW5kb3ciLCAi
T3BlbiBJbWFnZSBpbiBOZXcgV2luZG93IGNvbnRleHQgbWVudSBpdGVtIik7CisgICAgcmV0dXJu
IFdFQl9VSV9TVFJJTkdfV0lUSF9NTkVNT05JQygiT3BlbiBJbWFnZSBpbiBOZXcgV2luZG93Iiwg
Ik9wZW4gX0ltYWdlIGluIE5ldyBXaW5kb3ciLCAiT3BlbiBJbWFnZSBpbiBOZXcgV2luZG93IGNv
bnRleHQgbWVudSBpdGVtIik7CiB9CiAKKyNpZiAhUExBVEZPUk0oR1RLKQogU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2soKQogewogICAgIHJldHVybiBXRUJfVUlf
U1RSSU5HKCJEb3dubG9hZCBJbWFnZSIsICJEb3dubG9hZCBJbWFnZSBjb250ZXh0IG1lbnUgaXRl
bSIpOwogfQorI2VuZGlmCiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VUb0Ns
aXBib2FyZCgpCiB7Ci0gICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIkNvcHkgSW1hZ2UiLCAiQ29w
eSBJbWFnZSBjb250ZXh0IG1lbnUgaXRlbSIpOworICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX1dJ
VEhfTU5FTU9OSUMoIkNvcHkgSW1hZ2UiLCAiQ29wX3kgSW1hZ2UiLCAiQ29weSBJbWFnZSBjb250
ZXh0IG1lbnUgaXRlbSIpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkZyYW1l
SW5OZXdXaW5kb3coKQogewotICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJPcGVuIEZyYW1lIGlu
IE5ldyBXaW5kb3ciLCAiT3BlbiBGcmFtZSBpbiBOZXcgV2luZG93IGNvbnRleHQgbWVudSBpdGVt
Iik7CisgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkdfV0lUSF9NTkVNT05JQygiT3BlbiBGcmFtZSBp
biBOZXcgV2luZG93IiwgIk9wZW4gX0ZyYW1lIGluIE5ldyBXaW5kb3ciLCAiT3BlbiBGcmFtZSBp
biBOZXcgV2luZG93IGNvbnRleHQgbWVudSBpdGVtIik7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdDb3B5KCkKIHsKLSAgICByZXR1cm4gV0VCX1VJX1NUUklORygiQ29weSIsICJDb3B5
IGNvbnRleHQgbWVudSBpdGVtIik7CisgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkdfV0lUSF9NTkVN
T05JQygiQ29weSIsICJfQ29weSIsICJDb3B5IGNvbnRleHQgbWVudSBpdGVtIik7CiB9CiAKIFN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdHb0JhY2soKQogewotICAgIHJldHVybiBXRUJfVUlfU1RS
SU5HKCJCYWNrIiwgIkJhY2sgY29udGV4dCBtZW51IGl0ZW0iKTsKKyAgICByZXR1cm4gV0VCX1VJ
X1NUUklOR19XSVRIX01ORU1PTklDKCJCYWNrIiwgIl9CYWNrIiwgIkJhY2sgY29udGV4dCBtZW51
IGl0ZW0iKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0dvRm9yd2FyZCgpCiB7Ci0g
ICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIkZvcndhcmQiLCAiRm9yd2FyZCBjb250ZXh0IG1lbnUg
aXRlbSIpOworICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMoIkZvcndhcmQi
LCAiX0ZvcndhcmQiLCAiRm9yd2FyZCBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQogCiBTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnU3RvcCgpCiB7Ci0gICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIlN0
b3AiLCAiU3RvcCBjb250ZXh0IG1lbnUgaXRlbSIpOworICAgIHJldHVybiBXRUJfVUlfU1RSSU5H
X1dJVEhfTU5FTU9OSUMoIlN0b3AiLCAiX1N0b3AiLCAiU3RvcCBjb250ZXh0IG1lbnUgaXRlbSIp
OwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnUmVsb2FkKCkKIHsKLSAgICByZXR1cm4g
V0VCX1VJX1NUUklORygiUmVsb2FkIiwgIlJlbG9hZCBjb250ZXh0IG1lbnUgaXRlbSIpOworICAg
IHJldHVybiBXRUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMoIlJlbG9hZCIsICJfUmVsb2FkIiwg
IlJlbG9hZCBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnQ3V0KCkKIHsKLSAgICByZXR1cm4gV0VCX1VJX1NUUklORygiQ3V0IiwgIkN1dCBjb250ZXh0
IG1lbnUgaXRlbSIpOworICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMoIkN1
dCIsICJDdV90IiwgIkN1dCBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQogCiBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnUGFzdGUoKQogewotICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJQYXN0ZSIs
ICJQYXN0ZSBjb250ZXh0IG1lbnUgaXRlbSIpOworICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX1dJ
VEhfTU5FTU9OSUMoIlBhc3RlIiwgIl9QYXN0ZSIsICJQYXN0ZSBjb250ZXh0IG1lbnUgaXRlbSIp
OwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTm9HdWVzc2VzRm91bmQoKQpAQCAtMjIw
LDEzOSArMjIxLDg5IEBAIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdOb0d1ZXNzZXNGb3VuZCgp
CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZygpCiB7Ci0gICAgcmV0
dXJuIFdFQl9VSV9TVFJJTkcoIklnbm9yZSBTcGVsbGluZyIsICJJZ25vcmUgU3BlbGxpbmcgY29u
dGV4dCBtZW51IGl0ZW0iKTsKKyAgICByZXR1cm4gV0VCX1VJX1NUUklOR19XSVRIX01ORU1PTklD
KCJJZ25vcmUgU3BlbGxpbmciLCAiX0lnbm9yZSBTcGVsbGluZyIsICJJZ25vcmUgU3BlbGxpbmcg
Y29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xlYXJu
U3BlbGxpbmcoKQogewotICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJMZWFybiBTcGVsbGluZyIs
ICJMZWFybiBTcGVsbGluZyBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi0jaWYgUExBVEZPUk0o
Q09DT0EpCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2VhcmNoSW5TcG90bGlnaHQoKQotewot
ICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJTZWFyY2ggaW4gU3BvdGxpZ2h0IiwgIlNlYXJjaCBp
biBTcG90bGlnaHQgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLSNlbmRpZgotCi1TdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnU2VhcmNoV2ViKCkKLXsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBh
dXRvIHNlYXJjaFByb3ZpZGVyTmFtZSA9IGFkb3B0Q0Yod2tDb3B5RGVmYXVsdFNlYXJjaFByb3Zp
ZGVyRGlzcGxheU5hbWUoKSk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJf
VUlfU1RSSU5HKCJTZWFyY2ggd2l0aCAlQCIsICJTZWFyY2ggd2l0aCBzZWFyY2ggcHJvdmlkZXIg
Y29udGV4dCBtZW51IGl0ZW0gd2l0aCBwcm92aWRlciBuYW1lIGluc2VydGVkIiksIHNlYXJjaFBy
b3ZpZGVyTmFtZS5nZXQoKSk7Ci0jZWxzZQotICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJTZWFy
Y2ggd2l0aCBHb29nbGUiLCAiU2VhcmNoIHdpdGggR29vZ2xlIGNvbnRleHQgbWVudSBpdGVtIik7
Ci0jZW5kaWYKKyAgICByZXR1cm4gV0VCX1VJX1NUUklOR19XSVRIX01ORU1PTklDKCJMZWFybiBT
cGVsbGluZyIsICJfTGVhcm4gU3BlbGxpbmciLCAiTGVhcm4gU3BlbGxpbmcgY29udGV4dCBtZW51
IGl0ZW0iKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFy
eShjb25zdCBTdHJpbmcmIHNlbGVjdGVkU3RyaW5nKQogewogI2lmIFVTRShDRikKICAgICBhdXRv
IHNlbGVjdGVkQ0ZTdHJpbmcgPSB0cnVuY2F0ZWRTdHJpbmdGb3JMb29rdXBNZW51SXRlbShzZWxl
Y3RlZFN0cmluZykuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVk
U3RyaW5nKFdFQl9VSV9TVFJJTkcoIkxvb2sgVXAg4oCcJUDigJ0iLCAiTG9vayBVcCBjb250ZXh0
IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKSwgc2VsZWN0ZWRDRlN0cmluZy5nZXQoKSk7
CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkcoIkxvb2sg
VXAg4oCcJUDigJ0iLCAiTG9vayBVcCBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdv
cmQiKSwgc2VsZWN0ZWRDRlN0cmluZy5nZXQoKSk7CisjZWxpZiBVU0UoR0xJQikKKyAgICByZXR1
cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIkxvb2sgVXAg4oCcJXPigJ0i
LCAiTG9vayBVcCBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKSwgdHJ1bmNh
dGVkU3RyaW5nRm9yTG9va3VwTWVudUl0ZW0oc2VsZWN0ZWRTdHJpbmcpLnV0ZjgoKS5kYXRhKCkp
OwogI2Vsc2UKLSAgICByZXR1cm4gV0VCX1VJX1NUUklORygiTG9vayBVcCDigJw8c2VsZWN0aW9u
PuKAnSIsICJMb29rIFVwIGNvbnRleHQgbWVudSBpdGVtIHdpdGggc2VsZWN0ZWQgd29yZCIpLnJl
cGxhY2UoIjxzZWxlY3Rpb24+IiwgdHJ1bmNhdGVkU3RyaW5nRm9yTG9va3VwTWVudUl0ZW0oc2Vs
ZWN0ZWRTdHJpbmcpKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCgiTG9vayBVcCDigJw8
c2VsZWN0aW9uPuKAnSIsICJMb29rIFVwIGNvbnRleHQgbWVudSBpdGVtIHdpdGggc2VsZWN0ZWQg
d29yZCIpLnJlcGxhY2UoIjxzZWxlY3Rpb24+IiwgdHJ1bmNhdGVkU3RyaW5nRm9yTG9va3VwTWVu
dUl0ZW0oc2VsZWN0ZWRTdHJpbmcpKTsKICNlbmRpZgogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnT3BlbkxpbmsoKQogewotICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJPcGVuIExpbmsi
LCAiT3BlbiBMaW5rIGNvbnRleHQgbWVudSBpdGVtIik7CisgICAgcmV0dXJuIFdFQl9VSV9TVFJJ
TkdfV0lUSF9NTkVNT05JQygiT3BlbiBMaW5rIiwgIl9PcGVuIExpbmsiLCAiT3BlbiBMaW5rIGNv
bnRleHQgbWVudSBpdGVtIik7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVH
cmFtbWFyKCkKIHsKLSAgICByZXR1cm4gV0VCX1VJX1NUUklORygiSWdub3JlIEdyYW1tYXIiLCAi
SWdub3JlIEdyYW1tYXIgY29udGV4dCBtZW51IGl0ZW0iKTsKKyAgICByZXR1cm4gV0VCX1VJX1NU
UklOR19XSVRIX01ORU1PTklDKCJJZ25vcmUgR3JhbW1hciIsICJJZ25vcmUgX0dyYW1tYXIiLCAi
SWdub3JlIEdyYW1tYXIgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAogU3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ1NwZWxsaW5nTWVudSgpCiB7Ci0gICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIlNw
ZWxsaW5nIGFuZCBHcmFtbWFyIiwgIlNwZWxsaW5nIGFuZCBHcmFtbWFyIGNvbnRleHQgc3ViLW1l
bnUgaXRlbSIpOworICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMoIlNwZWxs
aW5nIGFuZCBHcmFtbWFyIiwgIlNwZWxsaW5nIGFuZCBfR3JhbW1hciIsICJTcGVsbGluZyBhbmQg
R3JhbW1hciBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsKGJvb2wgc2hvdykKIHsKICAgICBpZiAoc2hvdykKLSAg
ICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIlNob3cgU3BlbGxpbmcgYW5kIEdyYW1tYXIiLCAi
bWVudSBpdGVtIHRpdGxlIik7Ci0gICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIkhpZGUgU3BlbGxp
bmcgYW5kIEdyYW1tYXIiLCAibWVudSBpdGVtIHRpdGxlIik7CisgICAgICAgIHJldHVybiBXRUJf
VUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMoIlNob3cgU3BlbGxpbmcgYW5kIEdyYW1tYXIiLCAiX1No
b3cgU3BlbGxpbmcgYW5kIEdyYW1tYXIiLCAibWVudSBpdGVtIHRpdGxlIik7CisgICAgcmV0dXJu
IFdFQl9VSV9TVFJJTkdfV0lUSF9NTkVNT05JQygiSGlkZSBTcGVsbGluZyBhbmQgR3JhbW1hciIs
ICJfSGlkZSBTcGVsbGluZyBhbmQgR3JhbW1hciIsICJtZW51IGl0ZW0gdGl0bGUiKTsKIH0KIAog
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmcoKQogewotICAgIHJldHVybiBX
RUJfVUlfU1RSSU5HKCJDaGVjayBEb2N1bWVudCBOb3ciLCAiQ2hlY2sgc3BlbGxpbmcgY29udGV4
dCBtZW51IGl0ZW0iKTsKKyAgICByZXR1cm4gV0VCX1VJX1NUUklOR19XSVRIX01ORU1PTklDKCJD
aGVjayBEb2N1bWVudCBOb3ciLCAiX0NoZWNrIERvY3VtZW50IE5vdyIsICJDaGVjayBzcGVsbGlu
ZyBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hl
Y2tTcGVsbGluZ1doaWxlVHlwaW5nKCkKIHsKLSAgICByZXR1cm4gV0VCX1VJX1NUUklORygiQ2hl
Y2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nIiwgIkNoZWNrIHNwZWxsaW5nIHdoaWxlIHR5cGluZyBj
b250ZXh0IG1lbnUgaXRlbSIpOworICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9O
SUMoIkNoZWNrIFNwZWxsaW5nIFdoaWxlIFR5cGluZyIsICJDaGVjayBTcGVsbGluZyBXaGlsZSBf
VHlwaW5nIiwgIkNoZWNrIHNwZWxsaW5nIHdoaWxlIHR5cGluZyBjb250ZXh0IG1lbnUgaXRlbSIp
OwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5n
KCkKIHsKLSAgICByZXR1cm4gV0VCX1VJX1NUUklORygiQ2hlY2sgR3JhbW1hciBXaXRoIFNwZWxs
aW5nIiwgIkNoZWNrIGdyYW1tYXIgd2l0aCBzcGVsbGluZyBjb250ZXh0IG1lbnUgaXRlbSIpOwor
ICAgIHJldHVybiBXRUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMoIkNoZWNrIEdyYW1tYXIgV2l0
aCBTcGVsbGluZyIsICJDaGVjayBfR3JhbW1hciBXaXRoIFNwZWxsaW5nIiwgIkNoZWNrIGdyYW1t
YXIgd2l0aCBzcGVsbGluZyBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQogCiBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnRm9udE1lbnUoKQogewotICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJGb250
IiwgIkZvbnQgY29udGV4dCBzdWItbWVudSBpdGVtIik7Ci19Ci0KLSNpZiBQTEFURk9STShDT0NP
QSkKLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTaG93Rm9udHMoKQotewotICAgIHJldHVybiBX
RUJfVUlfU1RSSU5HKCJTaG93IEZvbnRzIiwgIlNob3cgZm9udHMgY29udGV4dCBtZW51IGl0ZW0i
KTsKKyAgICByZXR1cm4gV0VCX1VJX1NUUklOR19XSVRIX01ORU1PTklDKCJGb250IiwgIl9Gb250
IiwgIkZvbnQgY29udGV4dCBzdWItbWVudSBpdGVtIik7CiB9Ci0jZW5kaWYKIAogU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ0JvbGQoKQogewotICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJCb2xk
IiwgIkJvbGQgY29udGV4dCBtZW51IGl0ZW0iKTsKKyAgICByZXR1cm4gV0VCX1VJX1NUUklOR19X
SVRIX01ORU1PTklDKCJCb2xkIiwgIl9Cb2xkIiwgIkJvbGQgY29udGV4dCBtZW51IGl0ZW0iKTsK
IH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0l0YWxpYygpCiB7Ci0gICAgcmV0dXJuIFdF
Ql9VSV9TVFJJTkcoIkl0YWxpYyIsICJJdGFsaWMgY29udGV4dCBtZW51IGl0ZW0iKTsKKyAgICBy
ZXR1cm4gV0VCX1VJX1NUUklOR19XSVRIX01ORU1PTklDKCJJdGFsaWMiLCAiX0l0YWxpYyIsICJJ
dGFsaWMgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z1VuZGVybGluZSgpCiB7Ci0gICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIlVuZGVybGluZSIsICJV
bmRlcmxpbmUgY29udGV4dCBtZW51IGl0ZW0iKTsKKyAgICByZXR1cm4gV0VCX1VJX1NUUklOR19X
SVRIX01ORU1PTklDKCJVbmRlcmxpbmUiLCAiX1VuZGVybGluZSIsICJVbmRlcmxpbmUgY29udGV4
dCBtZW51IGl0ZW0iKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ091dGxpbmUoKQog
ewotICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJPdXRsaW5lIiwgIk91dGxpbmUgY29udGV4dCBt
ZW51IGl0ZW0iKTsKLX0KLQotI2lmIFBMQVRGT1JNKENPQ09BKQotCi1TdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnU3R5bGVzKCkKLXsKLSAgICByZXR1cm4gV0VCX1VJX1NUUklORygiU3R5bGVzLi4u
IiwgIlN0eWxlcyBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnU2hvd0NvbG9ycygpCi17Ci0gICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIlNob3cgQ29s
b3JzIiwgIlNob3cgY29sb3JzIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51KCkKLXsKLSAgICByZXR1cm4gV0VCX1VJX1NUUklORygi
U3BlZWNoIiwgIlNwZWVjaCBjb250ZXh0IHN1Yi1tZW51IGl0ZW0iKTsKKyAgICByZXR1cm4gV0VC
X1VJX1NUUklOR19XSVRIX01ORU1PTklDKCJPdXRsaW5lIiwgIl9PdXRsaW5lIiwgIk91dGxpbmUg
Y29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0YXJ0
U3BlYWtpbmcoKQotewotICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJTdGFydCBTcGVha2luZyIs
ICJTdGFydCBzcGVha2luZyBjb250ZXh0IG1lbnUgaXRlbSIpOwotfQotCi1TdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnU3RvcFNwZWFraW5nKCkKLXsKLSAgICByZXR1cm4gV0VCX1VJX1NUUklORygi
U3RvcCBTcGVha2luZyIsICJTdG9wIHNwZWFraW5nIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0K
LSNlbmRpZgotCisjaWYgIVBMQVRGT1JNKEdUSykKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdX
cml0aW5nRGlyZWN0aW9uTWVudSgpCiB7CiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIlBhcmFn
cmFwaCBEaXJlY3Rpb24iLCAiUGFyYWdyYXBoIGRpcmVjdGlvbiBjb250ZXh0IHN1Yi1tZW51IGl0
ZW0iKTsKQEAgLTM3Nyw5OSArMzI4LDI5IEBAIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdSaWdo
dFRvTGVmdCgpCiB7CiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIlJpZ2h0IHRvIExlZnQiLCAi
UmlnaHQgdG8gTGVmdCBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQotCi0jaWYgUExBVEZPUk0oQ09D
T0EpCi0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNh
bGx5KCkKLXsKLSAgICByZXR1cm4gV0VCX1VJX1NUUklORygiQ29ycmVjdCBTcGVsbGluZyBBdXRv
bWF0aWNhbGx5IiwgIkNvcnJlY3QgU3BlbGxpbmcgQXV0b21hdGljYWxseSBjb250ZXh0IG1lbnUg
aXRlbSIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnUo
KQotewotICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJTdWJzdGl0dXRpb25zIiwgIlN1YnN0aXR1
dGlvbnMgY29udGV4dCBzdWItbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdTaG93U3Vic3RpdHV0aW9ucyhib29sIHNob3cpCi17Ci0gICAgaWYgKHNob3cpCi0gICAg
ICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJTaG93IFN1YnN0aXR1dGlvbnMiLCAibWVudSBpdGVt
IHRpdGxlIik7Ci0gICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIkhpZGUgU3Vic3RpdHV0aW9ucyIs
ICJtZW51IGl0ZW0gdGl0bGUiKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0
Q29weVBhc3RlKCkKLXsKLSAgICByZXR1cm4gV0VCX1VJX1NUUklORygiU21hcnQgQ29weS9QYXN0
ZSIsICJTbWFydCBDb3B5L1Bhc3RlIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdTbWFydFF1b3RlcygpCi17Ci0gICAgcmV0dXJuIFdFQl9VSV9TVFJJ
TkcoIlNtYXJ0IFF1b3RlcyIsICJTbWFydCBRdW90ZXMgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0K
LQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0RGFzaGVzKCkKLXsKLSAgICByZXR1cm4g
V0VCX1VJX1NUUklORygiU21hcnQgRGFzaGVzIiwgIlNtYXJ0IERhc2hlcyBjb250ZXh0IG1lbnUg
aXRlbSIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU21hcnRMaW5rcygpCi17Ci0g
ICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIlNtYXJ0IExpbmtzIiwgIlNtYXJ0IExpbmtzIGNvbnRl
eHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUZXh0UmVwbGFj
ZW1lbnQoKQotewotICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJUZXh0IFJlcGxhY2VtZW50Iiwg
IlRleHQgUmVwbGFjZW1lbnQgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ1RyYW5zZm9ybWF0aW9uc01lbnUoKQotewotICAgIHJldHVybiBXRUJfVUlf
U1RSSU5HKCJUcmFuc2Zvcm1hdGlvbnMiLCAiVHJhbnNmb3JtYXRpb25zIGNvbnRleHQgc3ViLW1l
bnUgaXRlbSIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTWFrZVVwcGVyQ2FzZSgp
Ci17Ci0gICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIk1ha2UgVXBwZXIgQ2FzZSIsICJNYWtlIFVw
cGVyIENhc2UgY29udGV4dCBtZW51IGl0ZW0iKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ01ha2VMb3dlckNhc2UoKQotewotICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJNYWtlIExv
d2VyIENhc2UiLCAiTWFrZSBMb3dlciBDYXNlIGNvbnRleHQgbWVudSBpdGVtIik7Ci19Ci0KLVN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDYXBpdGFsaXplKCkKLXsKLSAgICByZXR1cm4gV0VCX1VJ
X1NUUklORygiQ2FwaXRhbGl6ZSIsICJDYXBpdGFsaXplIGNvbnRleHQgbWVudSBpdGVtIik7Ci19
Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDaGFuZ2VCYWNrKGNvbnN0IFN0cmluZyYgcmVw
bGFjZWRTdHJpbmcpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gcmVwbGFj
ZWRTdHJpbmc7Ci19Ci0KLSNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKKyNlbmRpZgogCiBTdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnT3BlblZpZGVvSW5OZXdXaW5kb3coKQogewotICAgIHJldHVy
biBXRUJfVUlfU1RSSU5HKCJPcGVuIFZpZGVvIGluIE5ldyBXaW5kb3ciLCAiT3BlbiBWaWRlbyBp
biBOZXcgV2luZG93IGNvbnRleHQgbWVudSBpdGVtIik7CisgICAgcmV0dXJuIFdFQl9VSV9TVFJJ
TkdfV0lUSF9NTkVNT05JQygiT3BlbiBWaWRlbyBpbiBOZXcgV2luZG93IiwgIk9wZW4gX1ZpZGVv
IGluIE5ldyBXaW5kb3ciLCAiT3BlbiBWaWRlbyBpbiBOZXcgV2luZG93IGNvbnRleHQgbWVudSBp
dGVtIik7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuQXVkaW9Jbk5ld1dpbmRv
dygpCiB7Ci0gICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIk9wZW4gQXVkaW8gaW4gTmV3IFdpbmRv
dyIsICJPcGVuIEF1ZGlvIGluIE5ldyBXaW5kb3cgY29udGV4dCBtZW51IGl0ZW0iKTsKKyAgICBy
ZXR1cm4gV0VCX1VJX1NUUklOR19XSVRIX01ORU1PTklDKCJPcGVuIEF1ZGlvIGluIE5ldyBXaW5k
b3ciLCAiT3BlbiBfVmlkZW8gaW4gTmV3IFdpbmRvdyIsICJPcGVuIEF1ZGlvIGluIE5ldyBXaW5k
b3cgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0Rv
d25sb2FkVmlkZW9Ub0Rpc2soKQogewotICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJEb3dubG9h
ZCBWaWRlbyIsICJEb3dubG9hZCBWaWRlbyBUbyBEaXNrIGNvbnRleHQgbWVudSBpdGVtIik7Cisg
ICAgcmV0dXJuIFdFQl9VSV9TVFJJTkdfV0lUSF9NTkVNT05JQygiRG93bmxvYWQgVmlkZW8iLCAi
RG93bmxvYWQgX1ZpZGVvIiwgIkRvd25sb2FkIFZpZGVvIFRvIERpc2sgY29udGV4dCBtZW51IGl0
ZW0iKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkQXVkaW9Ub0Rpc2so
KQogewotICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJEb3dubG9hZCBBdWRpbyIsICJEb3dubG9h
ZCBBdWRpbyBUbyBEaXNrIGNvbnRleHQgbWVudSBpdGVtIik7CisgICAgcmV0dXJuIFdFQl9VSV9T
VFJJTkdfV0lUSF9NTkVNT05JQygiRG93bmxvYWQgQXVkaW8iLCAiRG93bmxvYWQgX0F1ZGlvIiwg
IkRvd25sb2FkIEF1ZGlvIFRvIERpc2sgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAorI2lmICFQ
TEFURk9STShHVEspCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weVZpZGVvTGlua1RvQ2xp
cGJvYXJkKCkKIHsKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygiQ29weSBWaWRlbyBBZGRyZXNz
IiwgIkNvcHkgVmlkZW8gQWRkcmVzcyBMb2NhdGlvbiBjb250ZXh0IG1lbnUgaXRlbSIpOwpAQCAt
NTA5LDM5ICszOTAsMjYgQEAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0V4aXRWaWRlb0Z1bGxz
Y3JlZW4oKQogewogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJFeGl0IEZ1bGwgU2NyZWVuIiwg
IlZpZGVvIEV4aXQgRnVsbHNjcmVlbiBjb250ZXh0IG1lbnUgaXRlbSIpOwogfQotCi0jaWYgUExB
VEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCi0KLVN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdFbnRlclZpZGVvRW5oYW5jZWRGdWxsc2NyZWVuKCkKLXsKLSAgICBy
ZXR1cm4gV0VCX1VJX1NUUklORygiRW50ZXIgUGljdHVyZSBpbiBQaWN0dXJlIiwgIm1lbnUgaXRl
bSIpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRXhpdFZpZGVvRW5oYW5jZWRGdWxs
c2NyZWVuKCkKLXsKLSAgICByZXR1cm4gV0VCX1VJX1NUUklORygiRXhpdCBQaWN0dXJlIGluIFBp
Y3R1cmUiLCAibWVudSBpdGVtIik7Ci19Ci0KICNlbmRpZgogCiBTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnTWVkaWFQbGF5KCkKIHsKLSAgICByZXR1cm4gV0VCX1VJX1NUUklORygiUGxheSIsICJN
ZWRpYSBQbGF5IGNvbnRleHQgbWVudSBpdGVtIik7CisgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkdf
V0lUSF9NTkVNT05JQygiUGxheSIsICJfUGxheSIsICJNZWRpYSBQbGF5IGNvbnRleHQgbWVudSBp
dGVtIik7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdNZWRpYVBhdXNlKCkKIHsKLSAg
ICByZXR1cm4gV0VCX1VJX1NUUklORygiUGF1c2UiLCAiTWVkaWEgUGF1c2UgY29udGV4dCBtZW51
IGl0ZW0iKTsKKyAgICByZXR1cm4gV0VCX1VJX1NUUklOR19XSVRIX01ORU1PTklDKCJQYXVzZSIs
ICJfUGF1c2UiLCAiTWVkaWEgUGF1c2UgY29udGV4dCBtZW51IGl0ZW0iKTsKIH0KIAogU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ01lZGlhTXV0ZSgpCiB7Ci0gICAgcmV0dXJuIFdFQl9VSV9TVFJJ
TkcoIk11dGUiLCAiTWVkaWEgTXV0ZSBjb250ZXh0IG1lbnUgaXRlbSIpOworICAgIHJldHVybiBX
RUJfVUlfU1RSSU5HX1dJVEhfTU5FTU9OSUMoIk11dGUiLCAiX011dGUiLCAiTWVkaWEgTXV0ZSBj
b250ZXh0IG1lbnUgaXRlbSIpOwogfQotICAgIAorCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
SW5zcGVjdEVsZW1lbnQoKQogewotICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJJbnNwZWN0IEVs
ZW1lbnQiLCAiSW5zcGVjdCBFbGVtZW50IGNvbnRleHQgbWVudSBpdGVtIik7CisgICAgcmV0dXJu
IFdFQl9VSV9TVFJJTkdfV0lUSF9NTkVNT05JQygiSW5zcGVjdCBFbGVtZW50IiwgIkluc3BlY3Qg
X0VsZW1lbnQiLCAiSW5zcGVjdCBFbGVtZW50IGNvbnRleHQgbWVudSBpdGVtIik7CiB9CiAKICNl
bmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9NRU5VUykKQEAgLTc1Miw4MiArNjIwLDYgQEAgU3RyaW5n
IEFYQXV0b0ZpbGxDb250YWN0c0xhYmVsKCkKIHsKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygi
Y29udGFjdCBpbmZvIGF1dG8gZmlsbCIsICJMYWJlbCBmb3IgdGhlIGF1dG8gZmlsbCBjb250YWN0
cyBidXR0b24gaW5zaWRlIGEgdGV4dCBmaWVsZC4iKTsKIH0KLSAgICAKLSNpZiBQTEFURk9STShD
T0NPQSkKLVN0cmluZyBBWEFSSUFDb250ZW50R3JvdXBUZXh0KGNvbnN0IFN0cmluZyYgYXJpYVR5
cGUpCi17Ci0gICAgaWYgKGFyaWFUeXBlID09ICJBUklBQXBwbGljYXRpb25BbGVydCIpCi0gICAg
ICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJhbGVydCIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkg
Z3JvdXAgdGhhdCBhY3RzIGFzIGFuIGFsZXJ0LiIpOwotICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJ
QUFwcGxpY2F0aW9uQWxlcnREaWFsb2ciKQotICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklORygi
d2ViIGFsZXJ0IGRpYWxvZyIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBhY3Rz
IGFzIGFuIGFsZXJ0IGRpYWxvZy4iKTsKLSAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFBcHBsaWNh
dGlvbkRpYWxvZyIpCi0gICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJ3ZWIgZGlhbG9nIiwg
IkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYW4gZGlhbG9nLiIpOwot
ICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQUFwcGxpY2F0aW9uTG9nIikKLSAgICAgICAgcmV0dXJu
IFdFQl9VSV9TVFJJTkcoImxvZyIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBh
Y3RzIGFzIGEgY29uc29sZSBsb2cuIik7Ci0gICAgaWYgKGFyaWFUeXBlID09ICJBUklBQXBwbGlj
YXRpb25NYXJxdWVlIikKLSAgICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIm1hcnF1ZWUiLCAi
QW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgYWN0cyBhcyBhIG1hcnF1ZWUuIik7Ci0g
ICAgaWYgKGFyaWFUeXBlID09ICJBUklBQXBwbGljYXRpb25TdGF0dXMiKQotICAgICAgICByZXR1
cm4gV0VCX1VJX1NUUklORygiYXBwbGljYXRpb24gc3RhdHVzIiwgIkFuIEFSSUEgYWNjZXNzaWJp
bGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYSBzdGF0dXMgdXBkYXRlLiIpOwotICAgIGlmIChhcmlh
VHlwZSA9PSAiQVJJQUFwcGxpY2F0aW9uVGltZXIiKQotICAgICAgICByZXR1cm4gV0VCX1VJX1NU
UklORygidGltZXIiLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgYWN0cyBhcyBh
biB1cGRhdGluZyB0aW1lci4iKTsKLSAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFEb2N1bWVudCIp
Ci0gICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJkb2N1bWVudCIsICJBbiBBUklBIGFjY2Vz
c2liaWxpdHkgZ3JvdXAgdGhhdCBhY3RzIGFzIGEgZG9jdW1lbnQuIik7Ci0gICAgaWYgKGFyaWFU
eXBlID09ICJBUklBRG9jdW1lbnRBcnRpY2xlIikKLSAgICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJ
TkcoImFydGljbGUiLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgYWN0cyBhcyBh
biBhcnRpY2xlLiIpOwotICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQURvY3VtZW50Tm90ZSIpCi0g
ICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJub3RlIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0
eSBncm91cCB0aGF0IGFjdHMgYXMgYSBub3RlIGluIGEgZG9jdW1lbnQuIik7Ci0gICAgaWYgKGFy
aWFUeXBlID09ICJBUklBV2ViQXBwbGljYXRpb24iKQotICAgICAgICByZXR1cm4gV0VCX1VJX1NU
UklORygid2ViIGFwcGxpY2F0aW9uIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0
IGFjdHMgYXMgYW4gYXBwbGljYXRpb24uIik7Ci0gICAgaWYgKGFyaWFUeXBlID09ICJBUklBTGFu
ZG1hcmtCYW5uZXIiKQotICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklORygiYmFubmVyIiwgIkFu
IEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYSBiYW5uZXIuIik7Ci0gICAg
aWYgKGFyaWFUeXBlID09ICJBUklBTGFuZG1hcmtDb21wbGVtZW50YXJ5IikKLSAgICAgICAgcmV0
dXJuIFdFQl9VSV9TVFJJTkcoImNvbXBsZW1lbnRhcnkiLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5
IGdyb3VwIHRoYXQgYWN0cyBhcyBhIHJlZ2lvbiBvZiBjb21wbGVtZW50YXJ5IGluZm9ybWF0aW9u
LiIpOwotICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQUxhbmRtYXJrQ29udGVudEluZm8iKQotICAg
ICAgICByZXR1cm4gV0VCX1VJX1NUUklORygiY29udGVudCBpbmZvcm1hdGlvbiIsICJBbiBBUklB
IGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBjb250YWlucyBjb250ZW50LiIpOwotICAgIGlmIChh
cmlhVHlwZSA9PSAiQVJJQUxhbmRtYXJrTWFpbiIpCi0gICAgICAgIHJldHVybiBXRUJfVUlfU1RS
SU5HKCJtYWluIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGlzIHRoZSBtYWlu
IHBvcnRpb24gb2YgdGhlIHdlYnNpdGUuIik7Ci0gICAgaWYgKGFyaWFUeXBlID09ICJBUklBTGFu
ZG1hcmtOYXZpZ2F0aW9uIikKLSAgICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIm5hdmlnYXRp
b24iLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgY29udGFpbnMgdGhlIG1haW4g
bmF2aWdhdGlvbiBlbGVtZW50cyBvZiBhIHdlYnNpdGUuIik7Ci0gICAgaWYgKGFyaWFUeXBlID09
ICJBUklBTGFuZG1hcmtSZWdpb24iKQotICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklORygicmVn
aW9uIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYSBkaXN0aW5j
dCByZWdpb24gaW4gYSBkb2N1bWVudC4iKTsKLSAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFMYW5k
bWFya1NlYXJjaCIpCi0gICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJzZWFyY2giLCAiQW4g
QVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgY29udGFpbnMgYSBzZWFyY2ggZmVhdHVyZSBv
ZiBhIHdlYnNpdGUuIik7Ci0gICAgaWYgKGFyaWFUeXBlID09ICJBUklBVXNlckludGVyZmFjZVRv
b2x0aXAiKQotICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklORygidG9vbHRpcCIsICJBbiBBUklB
IGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBhY3RzIGFzIGEgdG9vbHRpcC4iKTsKLSAgICBpZiAo
YXJpYVR5cGUgPT0gIkFSSUFUYWJQYW5lbCIpCi0gICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5H
KCJ0YWIgcGFuZWwiLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgY29udGFpbnMg
dGhlIGNvbnRlbnQgb2YgYSB0YWIuIik7Ci0gICAgaWYgKGFyaWFUeXBlID09ICJBUklBRG9jdW1l
bnRNYXRoIikKLSAgICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIm1hdGgiLCAiQW4gQVJJQSBh
Y2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgY29udGFpbnMgbWF0aGVtYXRpY2FsIHN5bWJvbHMuIik7
Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcgQVhIb3Jpem9udGFsUnVsZURlc2Ny
aXB0aW9uVGV4dCgpCi17Ci0gICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoInNlcGFyYXRvciIsICJh
Y2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9yIGEgaG9yaXpvbnRhbCBydWxlIFs8aHI+
XSIpOwotfQotICAgIAotU3RyaW5nIEFYTWFya1RleHQoKQotewotICAgIHJldHVybiBXRUJfVUlf
U1RSSU5HKCJoaWdobGlnaHRlZCIsICJhY2Nlc3NpYmlsaXR5IHJvbGUgZGVzY3JpcHRpb24gZm9y
IGEgbWFyayBlbGVtZW50Iik7Ci19Ci0KLSNpZiBFTkFCTEUoTUVURVJfRUxFTUVOVCkKLVN0cmlu
ZyBBWE1ldGVyR2F1Z2VSZWdpb25PcHRpbXVtVGV4dCgpCi17Ci0gICAgcmV0dXJuIFdFQl9VSV9T
VFJJTkcoIm9wdGltYWwgdmFsdWUiLCAiVGhlIG9wdGltdW0gdmFsdWUgZGVzY3JpcHRpb24gZm9y
IGEgbWV0ZXIgZWxlbWVudC4iKTsKLX0KLQotU3RyaW5nIEFYTWV0ZXJHYXVnZVJlZ2lvblN1Ym9w
dGltYWxUZXh0KCkKLXsKLSAgICByZXR1cm4gV0VCX1VJX1NUUklORygic3Vib3B0aW1hbCB2YWx1
ZSIsICJUaGUgc3Vib3B0aW1hbCB2YWx1ZSBkZXNjcmlwdGlvbiBmb3IgYSBtZXRlciBlbGVtZW50
LiIpOwotfQotCi1TdHJpbmcgQVhNZXRlckdhdWdlUmVnaW9uTGVzc0dvb2RUZXh0KCkKLXsKLSAg
ICByZXR1cm4gV0VCX1VJX1NUUklORygiY3JpdGljYWwgdmFsdWUiLCAiVGhlIGxlc3MgZ29vZCB2
YWx1ZSBkZXNjcmlwdGlvbiBmb3IgYSBtZXRlciBlbGVtZW50LiIpOwotfQotI2VuZGlmIC8vIEVO
QUJMRShNRVRFUl9FTEVNRU5UKQotI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQogCiBTdHJpbmcg
bWlzc2luZ1BsdWdpblRleHQoKQogewpAQCAtODU5LDg3ICs2NTEsNiBAQCBTdHJpbmcgdW5rbm93
bkZpbGVTaXplVGV4dCgpCiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkdfS0VZKCJVbmtub3duIiwg
IlVua25vd24gKGZpbGVzaXplKSIsICJVbmtub3duIGZpbGVzaXplIEZUUCBkaXJlY3RvcnkgbGlz
dGluZyBpdGVtIik7CiB9CiAKLSNpZiBQTEFURk9STShXSU4pCi1TdHJpbmcgdXBsb2FkRmlsZVRl
eHQoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICJ1cGxvYWQiOwotfQot
Ci1TdHJpbmcgYWxsRmlsZXNUZXh0KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiAiYWxsIGZpbGVzIjsKLX0KLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi1TdHJp
bmcgYnVpbHRJblBERlBsdWdpbk5hbWUoKQotewotICAgIC8vIEFsc28gZXhwb3NlZCB0byBET00u
Ci0gICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIldlYktpdCBidWlsdC1pbiBQREYiLCAiUHNldWRv
IHBsdWctaW4gbmFtZSwgdmlzaWJsZSBpbiB0aGUgSW5zdGFsbGVkIFBsdWctaW5zIHBhZ2UgaW4g
U2FmYXJpLiIpOwotfQotCi1TdHJpbmcgcGRmRG9jdW1lbnRUeXBlRGVzY3JpcHRpb24oKQotewot
ICAgIC8vIEFsc28gZXhwb3NlZCB0byBET00uCi0gICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIlBv
cnRhYmxlIERvY3VtZW50IEZvcm1hdCIsICJEZXNjcmlwdGlvbiBvZiB0aGUgcHJpbWFyeSB0eXBl
IHN1cHBvcnRlZCBieSB0aGUgUERGIHBzZXVkbyBwbHVnLWluLiBWaXNpYmxlIGluIHRoZSBJbnN0
YWxsZWQgUGx1Zy1pbnMgcGFnZSBpbiBTYWZhcmkuIik7Ci19Ci0KLVN0cmluZyBwb3N0U2NyaXB0
RG9jdW1lbnRUeXBlRGVzY3JpcHRpb24oKQotewotICAgIC8vIEFsc28gZXhwb3NlZCB0byBET00u
Ci0gICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIlBvc3RTY3JpcHQiLCAiRGVzY3JpcHRpb24gb2Yg
dGhlIFBvc3RTY3JpcHQgdHlwZSBzdXBwb3J0ZWQgYnkgdGhlIFBERiBwc2V1ZG8gcGx1Zy1pbi4g
VmlzaWJsZSBpbiB0aGUgSW5zdGFsbGVkIFBsdWctaW5zIHBhZ2UgaW4gU2FmYXJpLiIpOwotfQot
Ci1TdHJpbmcga2V5Z2VuTWVudUl0ZW0yMDQ4KCkKLXsKLSAgICByZXR1cm4gV0VCX1VJX1NUUklO
RygiMjA0OCAoSGlnaCBHcmFkZSkiLCAiTWVudSBpdGVtIHRpdGxlIGZvciBLRVlHRU4gcG9wLXVw
IG1lbnUiKTsKLX0KLQotU3RyaW5nIGtleWdlbktleWNoYWluSXRlbU5hbWUoY29uc3QgU3RyaW5n
JiBob3N0KQotewotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklO
RygiS2V5IGZyb20gJUAiLCAiTmFtZSBvZiBrZXljaGFpbiBrZXkgZ2VuZXJhdGVkIGJ5IHRoZSBL
RVlHRU4gdGFnIiksIGhvc3QuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7Ci19Ci0KLSNlbmRpZgot
Ci0jaWYgUExBVEZPUk0oSU9TKQotCi1TdHJpbmcgaHRtbFNlbGVjdE11bHRpcGxlSXRlbXMoc2l6
ZV90IGNvdW50KQotewotICAgIHN3aXRjaCAoY291bnQpIHsKLSAgICBjYXNlIDA6Ci0gICAgICAg
IHJldHVybiBXRUJfVUlfU1RSSU5HKCIwIEl0ZW1zIiwgIlByZXNlbnQgdGhlIGVsZW1lbnQgPHNl
bGVjdCBtdWx0aXBsZT4gd2hlbiBubyA8b3B0aW9uPiBpdGVtcyBhcmUgc2VsZWN0ZWQgKGlPUyBv
bmx5KSIpOwotICAgIGNhc2UgMToKLSAgICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIjEgSXRl
bSIsICJQcmVzZW50IHRoZSBlbGVtZW50IDxzZWxlY3QgbXVsdGlwbGU+IHdoZW4gYSBzaW5nbGUg
PG9wdGlvbj4gaXMgc2VsZWN0ZWQgKGlPUyBvbmx5KSIpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJXp1IEl0ZW1zIiwg
IlByZXNlbnQgdGhlIG51bWJlciBvZiBzZWxlY3RlZCA8b3B0aW9uPiBpdGVtcyBpbiBhIDxzZWxl
Y3QgbXVsdGlwbGU+IGVsZW1lbnQgKGlPUyBvbmx5KSIpLCBjb3VudCk7Ci0gICAgfQotfQotCi1T
dHJpbmcgZmlsZUJ1dHRvbkNob29zZU1lZGlhRmlsZUxhYmVsKCkKLXsKLSAgICByZXR1cm4gV0VC
X1VJX1NUUklORygiQ2hvb3NlIE1lZGlhIChTaW5nbGUpIiwgIlRpdGxlIGZvciBmaWxlIGJ1dHRv
biB1c2VkIGluIEhUTUwgZm9ybXMgZm9yIG1lZGlhIGZpbGVzIik7Ci19Ci0KLVN0cmluZyBmaWxl
QnV0dG9uQ2hvb3NlTXVsdGlwbGVNZWRpYUZpbGVzTGFiZWwoKQotewotICAgIHJldHVybiBXRUJf
VUlfU1RSSU5HKCJDaG9vc2UgTWVkaWEgKE11bHRpcGxlKSIsICJUaXRsZSBmb3IgZmlsZSBidXR0
b24gdXNlZCBpbiBIVE1MNSBmb3JtcyBmb3IgbXVsdGlwbGUgbWVkaWEgZmlsZXMiKTsKLX0KLQot
U3RyaW5nIGZpbGVCdXR0b25Ob01lZGlhRmlsZVNlbGVjdGVkTGFiZWwoKQotewotICAgIHJldHVy
biBXRUJfVUlfU1RSSU5HKCJubyBtZWRpYSBzZWxlY3RlZCAoc2luZ2xlKSIsICJUZXh0IHRvIGRp
c3BsYXkgaW4gZmlsZSBidXR0b24gdXNlZCBpbiBIVE1MIGZvcm1zIGZvciBtZWRpYSBmaWxlcyB3
aGVuIG5vIG1lZGlhIGZpbGUgaXMgc2VsZWN0ZWQiKTsKLX0KLQotU3RyaW5nIGZpbGVCdXR0b25O
b01lZGlhRmlsZXNTZWxlY3RlZExhYmVsKCkKLXsKLSAgICByZXR1cm4gV0VCX1VJX1NUUklORygi
bm8gbWVkaWEgc2VsZWN0ZWQgKG11bHRpcGxlKSIsICJUZXh0IHRvIGRpc3BsYXkgaW4gZmlsZSBi
dXR0b24gdXNlZCBpbiBIVE1MIGZvcm1zIGZvciBtZWRpYSBmaWxlcyB3aGVuIG5vIG1lZGlhIGZp
bGVzIGFyZSBzZWxlY3RlZCBhbmQgdGhlIGJ1dHRvbiBhbGxvd3MgbXVsdGlwbGUgZmlsZXMgdG8g
YmUgc2VsZWN0ZWQiKTsKLX0KLQotI2VuZGlmCi0KIFN0cmluZyBpbWFnZVRpdGxlKGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAjaWYgVVNFKENGKQpAQCAt
OTU0LDkgKzY2NSwxMSBAQCBTdHJpbmcgaW1hZ2VUaXRsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBjb25zdCBJbnRTaXplJiBzaXplKQogICAgIGF1dG8gaGVpZ2h0ID0gYWRvcHRDRihDRk51bWJl
ckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmaGVpZ2h0SW50KSk7CiAgICAgYXV0byBoZWln
aHRTdHJpbmcgPSBhZG9wdENGKENGTnVtYmVyRm9ybWF0dGVyQ3JlYXRlU3RyaW5nV2l0aE51bWJl
cigwLCBmb3JtYXR0ZXIuZ2V0KCksIGhlaWdodC5nZXQoKSkpOwogCi0gICAgcmV0dXJuIGZvcm1h
dExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlQCAlQMOXJUAgcGl4ZWxzIiwgIndpbmRv
dyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJv
bCwgbm90IHgpIiksIGZpbGVuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHdpZHRoU3RyaW5n
LmdldCgpLCBoZWlnaHRTdHJpbmcuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRT
dHJpbmcoV0VCX1VJX0NGU1RSSU5HKCIlQCAlQMOXJUAgcGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBm
b3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgp
IiksIGZpbGVuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHdpZHRoU3RyaW5nLmdldCgpLCBo
ZWlnaHRTdHJpbmcuZ2V0KCkpOworI2VsaWYgVVNFKEdMSUIpCisgICAgcmV0dXJuIGZvcm1hdExv
Y2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlcyAlZMOXJWQgcGl4ZWxzIiwgIndpbmRvdyB0
aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwg
bm90IHgpIiksIGZpbGVuYW1lLnV0ZjgoKS5kYXRhKCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSk7CiAjZWxzZQotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NU
UklORygiPGZpbGVuYW1lPiAlZMOXJWQgcGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBmb3IgYSBzdGFu
ZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpIiksIHNpemUu
d2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkucmVwbGFjZSgiPGZpbGVuYW1lPiIsIGZpbGVuYW1lKTsK
KyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFN0cmluZzo6ZnJvbVVURjgoIjxmaWxl
bmFtZT4gJWTDlyVkIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFn
ZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBzaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCkpLnJlcGxhY2UoIjxmaWxlbmFtZT4iLCBmaWxlbmFtZSk7CiAjZW5kaWYKIH0K
IApAQCAtMTE0MSwzNyArODU0LDQxIEBAIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVBhdHRlcm5N
aXNtYXRjaFRleHQoKQogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJNYXRjaCB0aGUgcmVxdWVz
dGVkIGZvcm1hdCIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMg
cmVxdWlyaW5nIGEgY29uc3RyYWluZWQgdmFsdWUgYWNjb3JkaW5nIHRvIHBhdHRlcm4iKTsKIH0K
IAorI2lmICFQTEFURk9STShHVEspCiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUb29TaG9ydFRl
eHQoaW50LCBpbnQgbWluTGVuZ3RoKQogewogICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJp
bmcoV0VCX1VJX1NUUklORygiVXNlIGF0IGxlYXN0ICVkIGNoYXJhY3RlcnMiLCAiVmFsaWRhdGlv
biBtZXNzYWdlIGZvciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgd2l0aCBhIHZhbHVlIHNob3J0ZXIg
dGhhbiBtaW5pbXVtIGFsbG93ZWQgbGVuZ3RoIiksIG1pbkxlbmd0aCk7CiB9CiAKICNpZiAhUExB
VEZPUk0oQ09DT0EpCi0KIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdUZXh0KGludCwg
aW50IG1heExlbmd0aCkKIHsKICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9V
SV9TVFJJTkcoIlVzZSBubyBtb3JlIHRoYW4gJWQgY2hhcmFjdGVycyIsICJWYWxpZGF0aW9uIG1l
c3NhZ2UgZm9yIGZvcm0gY29udHJvbCBlbGVtZW50cyB3aXRoIGEgdmFsdWUgc2hvcnRlciB0aGFu
IG1heGltdW0gYWxsb3dlZCBsZW5ndGgiKSwgbWF4TGVuZ3RoKTsKIH0KLQorI2VuZGlmCiAjZW5k
aWYKIAogU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VVbmRlcmZsb3dUZXh0KGNvbnN0IFN0
cmluZyYgbWluaW11bSkKIHsKICNpZiBVU0UoQ0YpCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXpl
ZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVh
bCB0byAlQCIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0
aCB2YWx1ZSBsb3dlciB0aGFuIGFsbG93ZWQgbWluaW11bSIpLCBtaW5pbXVtLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NG
U1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlQCIsICJWYWxp
ZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBsb3dlciB0
aGFuIGFsbG93ZWQgbWluaW11bSIpLCBtaW5pbXVtLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwor
I2VsaWYgVVNFKEdMSUIpCisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlf
U1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyIsICJWYWxp
ZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBsb3dlciB0
aGFuIGFsbG93ZWQgbWluaW11bSIpLCBtaW5pbXVtLnV0ZjgoKS5kYXRhKCkpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0obWluaW11bSk7Ci0gICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoInJhbmdl
IHVuZGVyZmxvdyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMg
d2l0aCB2YWx1ZSBsb3dlciB0aGFuIGFsbG93ZWQgbWluaW11bSIpOworICAgIHJldHVybiBTdHJp
bmc6OmZyb21VVEY4KCJyYW5nZSB1bmRlcmZsb3ciLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBp
bnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgbG93ZXIgdGhhbiBhbGxvd2VkIG1pbmltdW0i
KTsKICNlbmRpZgogfQogCiBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZU92ZXJmbG93VGV4
dChjb25zdCBTdHJpbmcmIG1heGltdW0pCiB7CiAjaWYgVVNFKENGKQotICAgIHJldHVybiBmb3Jt
YXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiVmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4g
b3IgZXF1YWwgdG8gJUAiLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBpbnB1dCBmb3JtIGNvbnRy
b2xzIHdpdGggdmFsdWUgaGlnaGVyIHRoYW4gYWxsb3dlZCBtYXhpbXVtIiksIG1heGltdW0uY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhX
RUJfVUlfQ0ZTVFJJTkcoIlZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVAIiwg
IlZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyB3aXRoIHZhbHVlIGhp
Z2hlciB0aGFuIGFsbG93ZWQgbWF4aW11bSIpLCBtYXhpbXVtLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpOworI2VsaWYgVVNFKEdMSUIpCisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhX
RUJfVUlfU1RSSU5HKCJWYWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcyIsICJW
YWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJvbHMgd2l0aCB2YWx1ZSBoaWdo
ZXIgdGhhbiBhbGxvd2VkIG1heGltdW0iKSwgbWF4aW11bS51dGY4KCkuZGF0YSgpKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKG1heGltdW0pOwotICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJy
YW5nZSBvdmVyZmxvdyIsICJWYWxpZGF0aW9uIG1lc3NhZ2UgZm9yIGlucHV0IGZvcm0gY29udHJv
bHMgd2l0aCB2YWx1ZSBoaWdoZXIgdGhhbiBhbGxvd2VkIG1heGltdW0iKTsKKyAgICByZXR1cm4g
U3RyaW5nOjpmcm9tVVRGOCgicmFuZ2Ugb3ZlcmZsb3ciLCAiVmFsaWRhdGlvbiBtZXNzYWdlIGZv
ciBpbnB1dCBmb3JtIGNvbnRyb2xzIHdpdGggdmFsdWUgaGlnaGVyIHRoYW4gYWxsb3dlZCBtYXhp
bXVtIik7CiAjZW5kaWYKIH0KIApAQCAtMTIyMywzNyArOTQwLDM3IEBAIFN0cmluZyBhdWRpb1Ry
YWNrTm9MYWJlbFRleHQoKQogCiBTdHJpbmcgdGV4dFRyYWNrQ291bnRyeUFuZExhbmd1YWdlTWVu
dUl0ZW1UZXh0KGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgY291bnRyeSwgY29u
c3QgU3RyaW5nJiBsYW5ndWFnZSkKIHsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5n
KFdFQl9VSV9TVFJJTkcoIiVAICglQC0lQCkiLCAiVGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9y
bWF0IHRoYXQgaW5jbHVkZXMgdGhlIGNvdW50cnkgYW5kIGxhbmd1YWdlIG9mIHRoZSBzdWJ0aXRs
ZSwgaW4gdGhlIGZvcm0gb2YgJ1RpdGxlIChMYW5ndWFnZS1Db3VudHJ5KSciKSwgdGl0bGUuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwgbGFuZ3VhZ2UuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgY291
bnRyeS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVk
U3RyaW5nKFdFQl9VSV9DRlNUUklORygiJUAgKCVALSVAKSIsICJUZXh0IHRyYWNrIGRpc3BsYXkg
bmFtZSBmb3JtYXQgdGhhdCBpbmNsdWRlcyB0aGUgY291bnRyeSBhbmQgbGFuZ3VhZ2Ugb2YgdGhl
IHN1YnRpdGxlLCBpbiB0aGUgZm9ybSBvZiAnVGl0bGUgKExhbmd1YWdlLUNvdW50cnkpJyIpLCB0
aXRsZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBsYW5ndWFnZS5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCBjb3VudHJ5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBTdHJpbmcgdGV4dFRy
YWNrTGFuZ3VhZ2VNZW51SXRlbVRleHQoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5n
JiBsYW5ndWFnZSkKIHsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9T
VFJJTkcoIiVAICglQCkiLCAiVGV4dCB0cmFjayBkaXNwbGF5IG5hbWUgZm9ybWF0IHRoYXQgaW5j
bHVkZXMgdGhlIGxhbmd1YWdlIG9mIHRoZSBzdWJ0aXRsZSwgaW4gdGhlIGZvcm0gb2YgJ1RpdGxl
IChMYW5ndWFnZSknIiksIHRpdGxlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGxhbmd1YWdlLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmco
V0VCX1VJX0NGU1RSSU5HKCIlQCAoJUApIiwgIlRleHQgdHJhY2sgZGlzcGxheSBuYW1lIGZvcm1h
dCB0aGF0IGluY2x1ZGVzIHRoZSBsYW5ndWFnZSBvZiB0aGUgc3VidGl0bGUsIGluIHRoZSBmb3Jt
IG9mICdUaXRsZSAoTGFuZ3VhZ2UpJyIpLCB0aXRsZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBs
YW5ndWFnZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogU3RyaW5nIGNsb3NlZENhcHRp
b25UcmFja01lbnVJdGVtVGV4dChjb25zdCBTdHJpbmcmIHRpdGxlKQogewotICAgIHJldHVybiBm
b3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJUAgQ0MiLCAiVGV4dCB0cmFjayBj
b250YWlucyBjbG9zZWQgY2FwdGlvbnMiKSwgdGl0bGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7
CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkcoIiVAIEND
IiwgIlRleHQgdHJhY2sgY29udGFpbnMgY2xvc2VkIGNhcHRpb25zIiksIHRpdGxlLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpOwogfQogCiBTdHJpbmcgc2RoVHJhY2tNZW51SXRlbVRleHQoY29uc3Qg
U3RyaW5nJiB0aXRsZSkKIHsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9V
SV9TVFJJTkcoIiVAIFNESCIsICJUZXh0IHRyYWNrIGNvbnRhaW5zIHN1YnRpdGxlcyBmb3IgdGhl
IGRlYWYgYW5kIGhhcmQgb2YgaGVhcmluZyIpLCB0aXRsZS5jcmVhdGVDRlN0cmluZygpLmdldCgp
KTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklORygiJUAg
U0RIIiwgIlRleHQgdHJhY2sgY29udGFpbnMgc3VidGl0bGVzIGZvciB0aGUgZGVhZiBhbmQgaGFy
ZCBvZiBoZWFyaW5nIiksIHRpdGxlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBTdHJp
bmcgZWFzeVJlYWRlclRyYWNrTWVudUl0ZW1UZXh0KGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7Ci0g
ICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlQCBFYXN5IFJl
YWRlciIsICJUZXh0IHRyYWNrIGNvbnRhaW5zIHNpbXBsaWZpZWQgKDNyZCBncmFkZSBsZXZlbCkg
c3VidGl0bGVzIiksIHRpdGxlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOworICAgIHJldHVybiBm
b3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX0NGU1RSSU5HKCIlQCBFYXN5IFJlYWRlciIsICJU
ZXh0IHRyYWNrIGNvbnRhaW5zIHNpbXBsaWZpZWQgKDNyZCBncmFkZSBsZXZlbCkgc3VidGl0bGVz
IiksIHRpdGxlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBTdHJpbmcgZm9yY2VkVHJh
Y2tNZW51SXRlbVRleHQoY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKLSAgICByZXR1cm4gZm9ybWF0
TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiVAIEZvcmNlZCIsICJUZXh0IHRyYWNrIGNv
bnRhaW5zIGZvcmNlZCBzdWJ0aXRsZXMiKSwgdGl0bGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7
CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkcoIiVAIEZv
cmNlZCIsICJUZXh0IHRyYWNrIGNvbnRhaW5zIGZvcmNlZCBzdWJ0aXRsZXMiKSwgdGl0bGUuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFN0cmluZyBhdWRpb0Rlc2NyaXB0aW9uVHJhY2tT
dWZmaXhUZXh0KGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2Fs
aXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlQCBBRCIsICJUZXh0IHRyYWNrIGNvbnRhaW5zIEF1
ZGlvIERlc2NyaXB0aW9ucyIpLCB0aXRsZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICBy
ZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9DRlNUUklORygiJUAgQUQiLCAiVGV4
dCB0cmFjayBjb250YWlucyBBdWRpbyBEZXNjcmlwdGlvbnMiKSwgdGl0bGUuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSk7CiB9CiAKICNlbmRpZgpAQCAtMTI3Nyw3ICs5OTQsMTMgQEAgU3RyaW5nIHVz
ZUJsb2NrZWRQbHVnSW5Db250ZXh0TWVudVRpdGxlKCkKIAogU3RyaW5nIHdlYkNyeXB0b01hc3Rl
cktleUtleWNoYWluTGFiZWwoY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWRBcHBsaWNhdGlvbk5hbWUp
CiB7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlQCBX
ZWJDcnlwdG8gTWFzdGVyIEtleSIsICJOYW1lIG9mIGFwcGxpY2F0aW9uJ3Mgc2luZ2xlIFdlYkNy
eXB0byBtYXN0ZXIga2V5IGluIEtleWNoYWluIiksIGxvY2FsaXplZEFwcGxpY2F0aW9uTmFtZS5j
cmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyNpZiBVU0UoQ0YpCisgICAgcmV0dXJuIGZvcm1hdExv
Y2FsaXplZFN0cmluZyhXRUJfVUlfQ0ZTVFJJTkcoIiVAIFdlYkNyeXB0byBNYXN0ZXIgS2V5Iiwg
Ik5hbWUgb2YgYXBwbGljYXRpb24ncyBzaW5nbGUgV2ViQ3J5cHRvIG1hc3RlciBrZXkgaW4gS2V5
Y2hhaW4iKSwgbG9jYWxpemVkQXBwbGljYXRpb25OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
OworI2VsaWYgVVNFKEdMSUIpCisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJf
VUlfU1RSSU5HKCIlcyBXZWJDcnlwdG8gTWFzdGVyIEtleSIsICJOYW1lIG9mIGFwcGxpY2F0aW9u
J3Mgc2luZ2xlIFdlYkNyeXB0byBtYXN0ZXIga2V5IGluIEtleWNoYWluIiksIGxvY2FsaXplZEFw
cGxpY2F0aW9uTmFtZS51dGY4KCkuZGF0YSgpKTsKKyNlbHNlCisgICAgcmV0dXJuIFN0cmluZzo6
ZnJvbVVURjgoIjxhcHBsaWNhdGlvbj4gV2ViQ3J5cHRvIE1hc3RlciBLZXkiLCAiTmFtZSBvZiBh
cHBsaWNhdGlvbidzIHNpbmdsZSBXZWJDcnlwdG8gbWFzdGVyIGtleSBpbiBLZXljaGFpbiIpLnJl
cGxhY2UoIjxhcHBsaWNhdGlvbj4iLCBsb2NhbGl6ZWRBcHBsaWNhdGlvbk5hbWUpOworI2VuZGlm
CiB9CiAKIFN0cmluZyB3ZWJDcnlwdG9NYXN0ZXJLZXlLZXljaGFpbkNvbW1lbnQoKQpAQCAtMTI4
NywzOCArMTAxMCw2IEBAIFN0cmluZyB3ZWJDcnlwdG9NYXN0ZXJLZXlLZXljaGFpbkNvbW1lbnQo
KQogCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKLQotU3RyaW5nIGluc2VydExpc3RUeXBl
Tm9uZSgpCi17Ci0gICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIk5vbmUiLCAiT3B0aW9uIGluIHNl
Z21lbnRlZCBjb250cm9sIGZvciBjaG9vc2luZyBsaXN0IHR5cGUgaW4gdGV4dCBlZGl0aW5nIik7
Ci19Ci0KLVN0cmluZyBpbnNlcnRMaXN0VHlwZUJ1bGxldGVkKCkKLXsKLSAgICByZXR1cm4gV0VC
X1VJX1NUUklORygi4oCiIiwgIk9wdGlvbiBpbiBzZWdtZW50ZWQgY29udHJvbCBmb3IgY2hvb3Np
bmcgbGlzdCB0eXBlIGluIHRleHQgZWRpdGluZyIpOwotfQotCi1TdHJpbmcgaW5zZXJ0TGlzdFR5
cGVCdWxsZXRlZEFjY2Vzc2liaWxpdHlUaXRsZSgpCi17Ci0gICAgcmV0dXJuIFdFQl9VSV9TVFJJ
TkcoIkJ1bGxldGVkIGxpc3QiLCAiT3B0aW9uIGluIHNlZ21lbnRlZCBjb250cm9sIGZvciBpbnNl
cnRpbmcgYSBidWxsZXRlZCBsaXN0IGluIHRleHQgZWRpdGluZyIpOwotfQotCi1TdHJpbmcgaW5z
ZXJ0TGlzdFR5cGVOdW1iZXJlZCgpCi17Ci0gICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIjEuIDIu
IDMuIiwgIk9wdGlvbiBpbiBzZWdtZW50ZWQgY29udHJvbCBmb3IgY2hvb3NpbmcgbGlzdCB0eXBl
IGluIHRleHQgZWRpdGluZyIpOwotfQotCi1TdHJpbmcgaW5zZXJ0TGlzdFR5cGVOdW1iZXJlZEFj
Y2Vzc2liaWxpdHlUaXRsZSgpCi17Ci0gICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIk51bWJlcmVk
IGxpc3QiLCAiT3B0aW9uIGluIHNlZ21lbnRlZCBjb250cm9sIGZvciBpbnNlcnRpbmcgYSBudW1i
ZXJlZCBsaXN0IGluIHRleHQgZWRpdGluZyIpOwotfQotCi1TdHJpbmcgZXhpdEZ1bGxTY3JlZW5C
dXR0b25BY2Nlc3NpYmlsaXR5VGl0bGUoKQotewotICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJF
eGl0IEZ1bGxzY3JlZW4iLCAiQnV0dG9uIGZvciBleGl0aW5nIGZ1bGxzY3JlZW4gd2hlbiBpbiBm
dWxsc2NyZWVuIG1lZGlhIHBsYXliYWNrIik7Ci19CiAKLSNlbmRpZiAvLyBQTEFURk9STShNQUMp
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2Fs
aXplZFN0cmluZ3MuaAppbmRleCBkOTY2MmRjN2U3ZS4uN2FiNmVkNDQwZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKQEAgLTI5LDYgKzI5LDEwIEBACiAK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCisjaWYgVVNFKEdMSUIpICYmIGRlZmluZWQoR0VU
VEVYVF9QQUNLQUdFKQorI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgSW50U2l6ZTsKQEAgLTMwNywxMCArMzExLDIz
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZXhpdEZ1
bGxTY3JlZW5CdXR0b25BY2Nlc3NpYmlsaXR5VGl0bGUoKTsKICNlbmRpZgogCisjaWYgVVNFKEdM
SUIpICYmIGRlZmluZWQoR0VUVEVYVF9QQUNLQUdFKQorI2RlZmluZSBXRUJfVUlfU1RSSU5HKHN0
cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhfKHN0cmluZykpCisj
ZGVmaW5lIFdFQl9VSV9TVFJJTkdfS0VZKHN0cmluZywga2V5LCBkZXNjcmlwdGlvbikgV2ViQ29y
ZTo6bG9jYWxpemVkU3RyaW5nKENfKGtleSwgc3RyaW5nKSkKKyNkZWZpbmUgV0VCX1VJX1NUUklO
R19XSVRIX01ORU1PTklDKHN0cmluZywgbW5lbW9uaWMsIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjps
b2NhbGl6ZWRTdHJpbmcoXyhtbmVtb25pYykpCisjZWxzZQogI2RlZmluZSBXRUJfVUlfU1RSSU5H
KHN0cmluZywgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmluZyhzdHJpbmcpCiAj
ZGVmaW5lIFdFQl9VSV9TVFJJTkdfS0VZKHN0cmluZywga2V5LCBkZXNjcmlwdGlvbikgV2ViQ29y
ZTo6bG9jYWxpemVkU3RyaW5nKGtleSkKKyNkZWZpbmUgV0VCX1VJX1NUUklOR19XSVRIX01ORU1P
TklDKHN0cmluZywgbW5lbW9uaWMsIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJp
bmcoc3RyaW5nKQorI2VuZGlmCisKKyNpZiBVU0UoQ0YpCisvLyBUaGlzIGlzIGV4YWN0bHkgYXMg
V0VCX1VJX1NUUklORywgYnV0IHJlbmFtZWQgdG8gZW5zdXJlIHRoZSBzdHJpbmcgaXMgbm90IHNj
YW5uZWQgYnkgbm9uLUNGIHBvcnRzLgorI2RlZmluZSBXRUJfVUlfQ0ZTVFJJTkcoc3RyaW5nLCBk
ZXNjcmlwdGlvbikgV2ViQ29yZTo6bG9jYWxpemVkU3RyaW5nKHN0cmluZykKKyNlbmRpZgogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGxvY2FsaXplZFN0cmluZyhjb25zdCBjaGFyKiBrZXkp
OworICAgIFN0cmluZyBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoU3RyaW5nIGZvcm1hdCwgLi4uKTsK
IAogI2lmZGVmIF9fT0JKQ19fCiAjZGVmaW5lIFdFQl9VSV9OU1NUUklORyhzdHJpbmcsIGRlc2Ny
aXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWROU1N0cmluZyhzdHJpbmcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0KaW5k
ZXggZmI1OTZmMjM2ZjQuLjQyYTVmY2U5MDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9Mb2NhbGl6ZWRTdHJpbmdzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvTG9jYWxpemVkU3RyaW5nc0NvY29hLm1tCkBAIC0yNiw2ICsyNiw4
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgog
CisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTUxLDkgKzUzLDMwNSBA
QCBTdHJpbmcgbG9jYWxpemVkU3RyaW5nKGNvbnN0IGNoYXIqIGtleSkKICAgICByZXR1cm4gbG9j
YWxpemVkTlNTdHJpbmcoKE5TU3RyaW5nICopa2V5U3RyaW5nLmdldCgpKTsKIH0KIAorU3RyaW5n
IGNvcHlJbWFnZVVua25vd25GaWxlTGFiZWwoKQoreworICAgIHJldHVybiBXRUJfVUlfU1RSSU5H
KCJ1bmtub3duIiwgIlVua25vd24gZmlsZW5hbWUiKTsKK30KKworI2lmIEVOQUJMRShDT05URVhU
X01FTlVTKQorU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NlYXJjaEluU3BvdGxpZ2h0KCkKK3sK
KyAgICByZXR1cm4gV0VCX1VJX1NUUklORygiU2VhcmNoIGluIFNwb3RsaWdodCIsICJTZWFyY2gg
aW4gU3BvdGxpZ2h0IGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdTZWFyY2hXZWIoKQoreworICAgIGF1dG8gc2VhcmNoUHJvdmlkZXJOYW1lID0gYWRv
cHRDRih3a0NvcHlEZWZhdWx0U2VhcmNoUHJvdmlkZXJEaXNwbGF5TmFtZSgpKTsKKyAgICByZXR1
cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIlNlYXJjaCB3aXRoICVAIiwg
IlNlYXJjaCB3aXRoIHNlYXJjaCBwcm92aWRlciBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHByb3Zp
ZGVyIG5hbWUgaW5zZXJ0ZWQiKSwgc2VhcmNoUHJvdmlkZXJOYW1lLmdldCgpKTsKK30KKworU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dGb250cygpCit7CisgICAgcmV0dXJuIFdFQl9VSV9T
VFJJTkcoIlNob3cgRm9udHMiLCAiU2hvdyBmb250cyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQor
CitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3R5bGVzKCkKK3sKKyAgICByZXR1cm4gV0VCX1VJ
X1NUUklORygiU3R5bGVzLi4uIiwgIlN0eWxlcyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hvd0NvbG9ycygpCit7CisgICAgcmV0dXJuIFdFQl9V
SV9TVFJJTkcoIlNob3cgQ29sb3JzIiwgIlNob3cgY29sb3JzIGNvbnRleHQgbWVudSBpdGVtIik7
Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTcGVlY2hNZW51KCkKK3sKKyAgICByZXR1
cm4gV0VCX1VJX1NUUklORygiU3BlZWNoIiwgIlNwZWVjaCBjb250ZXh0IHN1Yi1tZW51IGl0ZW0i
KTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0YXJ0U3BlYWtpbmcoKQoreworICAg
IHJldHVybiBXRUJfVUlfU1RSSU5HKCJTdGFydCBTcGVha2luZyIsICJTdGFydCBzcGVha2luZyBj
b250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3RvcFNw
ZWFraW5nKCkKK3sKKyAgICByZXR1cm4gV0VCX1VJX1NUUklORygiU3RvcCBTcGVha2luZyIsICJT
dG9wIHNwZWFraW5nIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdDb3JyZWN0U3BlbGxpbmdBdXRvbWF0aWNhbGx5KCkKK3sKKyAgICByZXR1cm4gV0VC
X1VJX1NUUklORygiQ29ycmVjdCBTcGVsbGluZyBBdXRvbWF0aWNhbGx5IiwgIkNvcnJlY3QgU3Bl
bGxpbmcgQXV0b21hdGljYWxseSBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnU3Vic3RpdHV0aW9uc01lbnUoKQoreworICAgIHJldHVybiBXRUJfVUlf
U1RSSU5HKCJTdWJzdGl0dXRpb25zIiwgIlN1YnN0aXR1dGlvbnMgY29udGV4dCBzdWItbWVudSBp
dGVtIik7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTaG93U3Vic3RpdHV0aW9ucyhi
b29sIHNob3cpCit7CisgICAgaWYgKHNob3cpCisgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5H
KCJTaG93IFN1YnN0aXR1dGlvbnMiLCAibWVudSBpdGVtIHRpdGxlIik7CisgICAgcmV0dXJuIFdF
Ql9VSV9TVFJJTkcoIkhpZGUgU3Vic3RpdHV0aW9ucyIsICJtZW51IGl0ZW0gdGl0bGUiKTsKK30K
KworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NtYXJ0Q29weVBhc3RlKCkKK3sKKyAgICByZXR1
cm4gV0VCX1VJX1NUUklORygiU21hcnQgQ29weS9QYXN0ZSIsICJTbWFydCBDb3B5L1Bhc3RlIGNv
bnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTbWFydFF1
b3RlcygpCit7CisgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIlNtYXJ0IFF1b3RlcyIsICJTbWFy
dCBRdW90ZXMgY29udGV4dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ1NtYXJ0RGFzaGVzKCkKK3sKKyAgICByZXR1cm4gV0VCX1VJX1NUUklORygiU21hcnQgRGFz
aGVzIiwgIlNtYXJ0IERhc2hlcyBjb250ZXh0IG1lbnUgaXRlbSIpOworfQorCitTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnU21hcnRMaW5rcygpCit7CisgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkco
IlNtYXJ0IExpbmtzIiwgIlNtYXJ0IExpbmtzIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUZXh0UmVwbGFjZW1lbnQoKQoreworICAgIHJldHVybiBX
RUJfVUlfU1RSSU5HKCJUZXh0IFJlcGxhY2VtZW50IiwgIlRleHQgUmVwbGFjZW1lbnQgY29udGV4
dCBtZW51IGl0ZW0iKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1RyYW5zZm9ybWF0
aW9uc01lbnUoKQoreworICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJUcmFuc2Zvcm1hdGlvbnMi
LCAiVHJhbnNmb3JtYXRpb25zIGNvbnRleHQgc3ViLW1lbnUgaXRlbSIpOworfQorCitTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnTWFrZVVwcGVyQ2FzZSgpCit7CisgICAgcmV0dXJuIFdFQl9VSV9T
VFJJTkcoIk1ha2UgVXBwZXIgQ2FzZSIsICJNYWtlIFVwcGVyIENhc2UgY29udGV4dCBtZW51IGl0
ZW0iKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ01ha2VMb3dlckNhc2UoKQorewor
ICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJNYWtlIExvd2VyIENhc2UiLCAiTWFrZSBMb3dlciBD
YXNlIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdD
YXBpdGFsaXplKCkKK3sKKyAgICByZXR1cm4gV0VCX1VJX1NUUklORygiQ2FwaXRhbGl6ZSIsICJD
YXBpdGFsaXplIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdDaGFuZ2VCYWNrKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gcmVwbGFjZWRTdHJpbmc7Cit9CisKKyNpZiBQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKK1N0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdFbnRlclZpZGVvRW5oYW5jZWRGdWxsc2NyZWVuKCkKK3sKKyAgICByZXR1
cm4gV0VCX1VJX1NUUklORygiRW50ZXIgUGljdHVyZSBpbiBQaWN0dXJlIiwgIm1lbnUgaXRlbSIp
OworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRXhpdFZpZGVvRW5oYW5jZWRGdWxsc2Ny
ZWVuKCkKK3sKKyAgICByZXR1cm4gV0VCX1VJX1NUUklORygiRXhpdCBQaWN0dXJlIGluIFBpY3R1
cmUiLCAibWVudSBpdGVtIik7Cit9CisjZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKKworU3RyaW5nIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoY29uc3QgU3RyaW5nJiBhcmlh
VHlwZSkKK3sKKyAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFBcHBsaWNhdGlvbkFsZXJ0IikKKyAg
ICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoImFsZXJ0IiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0
eSBncm91cCB0aGF0IGFjdHMgYXMgYW4gYWxlcnQuIik7CisgICAgaWYgKGFyaWFUeXBlID09ICJB
UklBQXBwbGljYXRpb25BbGVydERpYWxvZyIpCisgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5H
KCJ3ZWIgYWxlcnQgZGlhbG9nIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFj
dHMgYXMgYW4gYWxlcnQgZGlhbG9nLiIpOworICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQUFwcGxp
Y2F0aW9uRGlhbG9nIikKKyAgICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIndlYiBkaWFsb2ci
LCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgYWN0cyBhcyBhbiBkaWFsb2cuIik7
CisgICAgaWYgKGFyaWFUeXBlID09ICJBUklBQXBwbGljYXRpb25Mb2ciKQorICAgICAgICByZXR1
cm4gV0VCX1VJX1NUUklORygibG9nIiwgIkFuIEFSSUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0
IGFjdHMgYXMgYSBjb25zb2xlIGxvZy4iKTsKKyAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFBcHBs
aWNhdGlvbk1hcnF1ZWUiKQorICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklORygibWFycXVlZSIs
ICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBhY3RzIGFzIGEgbWFycXVlZS4iKTsK
KyAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFBcHBsaWNhdGlvblN0YXR1cyIpCisgICAgICAgIHJl
dHVybiBXRUJfVUlfU1RSSU5HKCJhcHBsaWNhdGlvbiBzdGF0dXMiLCAiQW4gQVJJQSBhY2Nlc3Np
YmlsaXR5IGdyb3VwIHRoYXQgYWN0cyBhcyBhIHN0YXR1cyB1cGRhdGUuIik7CisgICAgaWYgKGFy
aWFUeXBlID09ICJBUklBQXBwbGljYXRpb25UaW1lciIpCisgICAgICAgIHJldHVybiBXRUJfVUlf
U1RSSU5HKCJ0aW1lciIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBhY3RzIGFz
IGFuIHVwZGF0aW5nIHRpbWVyLiIpOworICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQURvY3VtZW50
IikKKyAgICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoImRvY3VtZW50IiwgIkFuIEFSSUEgYWNj
ZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYSBkb2N1bWVudC4iKTsKKyAgICBpZiAoYXJp
YVR5cGUgPT0gIkFSSUFEb2N1bWVudEFydGljbGUiKQorICAgICAgICByZXR1cm4gV0VCX1VJX1NU
UklORygiYXJ0aWNsZSIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBhY3RzIGFz
IGFuIGFydGljbGUuIik7CisgICAgaWYgKGFyaWFUeXBlID09ICJBUklBRG9jdW1lbnROb3RlIikK
KyAgICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIm5vdGUiLCAiQW4gQVJJQSBhY2Nlc3NpYmls
aXR5IGdyb3VwIHRoYXQgYWN0cyBhcyBhIG5vdGUgaW4gYSBkb2N1bWVudC4iKTsKKyAgICBpZiAo
YXJpYVR5cGUgPT0gIkFSSUFXZWJBcHBsaWNhdGlvbiIpCisgICAgICAgIHJldHVybiBXRUJfVUlf
U1RSSU5HKCJ3ZWIgYXBwbGljYXRpb24iLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRo
YXQgYWN0cyBhcyBhbiBhcHBsaWNhdGlvbi4iKTsKKyAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFM
YW5kbWFya0Jhbm5lciIpCisgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJiYW5uZXIiLCAi
QW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgYWN0cyBhcyBhIGJhbm5lci4iKTsKKyAg
ICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFMYW5kbWFya0NvbXBsZW1lbnRhcnkiKQorICAgICAgICBy
ZXR1cm4gV0VCX1VJX1NUUklORygiY29tcGxlbWVudGFyeSIsICJBbiBBUklBIGFjY2Vzc2liaWxp
dHkgZ3JvdXAgdGhhdCBhY3RzIGFzIGEgcmVnaW9uIG9mIGNvbXBsZW1lbnRhcnkgaW5mb3JtYXRp
b24uIik7CisgICAgaWYgKGFyaWFUeXBlID09ICJBUklBTGFuZG1hcmtDb250ZW50SW5mbyIpCisg
ICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJjb250ZW50IGluZm9ybWF0aW9uIiwgIkFuIEFS
SUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGNvbnRhaW5zIGNvbnRlbnQuIik7CisgICAgaWYg
KGFyaWFUeXBlID09ICJBUklBTGFuZG1hcmtNYWluIikKKyAgICAgICAgcmV0dXJuIFdFQl9VSV9T
VFJJTkcoIm1haW4iLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgaXMgdGhlIG1h
aW4gcG9ydGlvbiBvZiB0aGUgd2Vic2l0ZS4iKTsKKyAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFM
YW5kbWFya05hdmlnYXRpb24iKQorICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklORygibmF2aWdh
dGlvbiIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBjb250YWlucyB0aGUgbWFp
biBuYXZpZ2F0aW9uIGVsZW1lbnRzIG9mIGEgd2Vic2l0ZS4iKTsKKyAgICBpZiAoYXJpYVR5cGUg
PT0gIkFSSUFMYW5kbWFya1JlZ2lvbiIpCisgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJy
ZWdpb24iLCAiQW4gQVJJQSBhY2Nlc3NpYmlsaXR5IGdyb3VwIHRoYXQgYWN0cyBhcyBhIGRpc3Rp
bmN0IHJlZ2lvbiBpbiBhIGRvY3VtZW50LiIpOworICAgIGlmIChhcmlhVHlwZSA9PSAiQVJJQUxh
bmRtYXJrU2VhcmNoIikKKyAgICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoInNlYXJjaCIsICJB
biBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBjb250YWlucyBhIHNlYXJjaCBmZWF0dXJl
IG9mIGEgd2Vic2l0ZS4iKTsKKyAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFVc2VySW50ZXJmYWNl
VG9vbHRpcCIpCisgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJ0b29sdGlwIiwgIkFuIEFS
SUEgYWNjZXNzaWJpbGl0eSBncm91cCB0aGF0IGFjdHMgYXMgYSB0b29sdGlwLiIpOworICAgIGlm
IChhcmlhVHlwZSA9PSAiQVJJQVRhYlBhbmVsIikKKyAgICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJ
TkcoInRhYiBwYW5lbCIsICJBbiBBUklBIGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBjb250YWlu
cyB0aGUgY29udGVudCBvZiBhIHRhYi4iKTsKKyAgICBpZiAoYXJpYVR5cGUgPT0gIkFSSUFEb2N1
bWVudE1hdGgiKQorICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklORygibWF0aCIsICJBbiBBUklB
IGFjY2Vzc2liaWxpdHkgZ3JvdXAgdGhhdCBjb250YWlucyBtYXRoZW1hdGljYWwgc3ltYm9scy4i
KTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBBWEhvcml6b250YWxSdWxlRGVz
Y3JpcHRpb25UZXh0KCkKK3sKKyAgICByZXR1cm4gV0VCX1VJX1NUUklORygic2VwYXJhdG9yIiwg
ImFjY2Vzc2liaWxpdHkgcm9sZSBkZXNjcmlwdGlvbiBmb3IgYSBob3Jpem9udGFsIHJ1bGUgWzxo
cj5dIik7Cit9CisKK1N0cmluZyBBWE1hcmtUZXh0KCkKK3sKKyAgICByZXR1cm4gV0VCX1VJX1NU
UklORygiaGlnaGxpZ2h0ZWQiLCAiYWNjZXNzaWJpbGl0eSByb2xlIGRlc2NyaXB0aW9uIGZvciBh
IG1hcmsgZWxlbWVudCIpOworfQorCisjaWYgRU5BQkxFKE1FVEVSX0VMRU1FTlQpCitTdHJpbmcg
QVhNZXRlckdhdWdlUmVnaW9uT3B0aW11bVRleHQoKQoreworICAgIHJldHVybiBXRUJfVUlfU1RS
SU5HKCJvcHRpbWFsIHZhbHVlIiwgIlRoZSBvcHRpbXVtIHZhbHVlIGRlc2NyaXB0aW9uIGZvciBh
IG1ldGVyIGVsZW1lbnQuIik7Cit9CisKK1N0cmluZyBBWE1ldGVyR2F1Z2VSZWdpb25TdWJvcHRp
bWFsVGV4dCgpCit7CisgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoInN1Ym9wdGltYWwgdmFsdWUi
LCAiVGhlIHN1Ym9wdGltYWwgdmFsdWUgZGVzY3JpcHRpb24gZm9yIGEgbWV0ZXIgZWxlbWVudC4i
KTsKK30KKworU3RyaW5nIEFYTWV0ZXJHYXVnZVJlZ2lvbkxlc3NHb29kVGV4dCgpCit7CisgICAg
cmV0dXJuIFdFQl9VSV9TVFJJTkcoImNyaXRpY2FsIHZhbHVlIiwgIlRoZSBsZXNzIGdvb2QgdmFs
dWUgZGVzY3JpcHRpb24gZm9yIGEgbWV0ZXIgZWxlbWVudC4iKTsKK30KKyNlbmRpZiAvLyBFTkFC
TEUoTUVURVJfRUxFTUVOVCkKKworU3RyaW5nIGJ1aWx0SW5QREZQbHVnaW5OYW1lKCkKK3sKKyAg
ICAvLyBBbHNvIGV4cG9zZWQgdG8gRE9NLgorICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJXZWJL
aXQgYnVpbHQtaW4gUERGIiwgIlBzZXVkbyBwbHVnLWluIG5hbWUsIHZpc2libGUgaW4gdGhlIElu
c3RhbGxlZCBQbHVnLWlucyBwYWdlIGluIFNhZmFyaS4iKTsKK30KKworU3RyaW5nIHBkZkRvY3Vt
ZW50VHlwZURlc2NyaXB0aW9uKCkKK3sKKyAgICAvLyBBbHNvIGV4cG9zZWQgdG8gRE9NLgorICAg
IHJldHVybiBXRUJfVUlfU1RSSU5HKCJQb3J0YWJsZSBEb2N1bWVudCBGb3JtYXQiLCAiRGVzY3Jp
cHRpb24gb2YgdGhlIHByaW1hcnkgdHlwZSBzdXBwb3J0ZWQgYnkgdGhlIFBERiBwc2V1ZG8gcGx1
Zy1pbi4gVmlzaWJsZSBpbiB0aGUgSW5zdGFsbGVkIFBsdWctaW5zIHBhZ2UgaW4gU2FmYXJpLiIp
OworfQorCitTdHJpbmcgcG9zdFNjcmlwdERvY3VtZW50VHlwZURlc2NyaXB0aW9uKCkKK3sKKyAg
ICAvLyBBbHNvIGV4cG9zZWQgdG8gRE9NLgorICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJQb3N0
U2NyaXB0IiwgIkRlc2NyaXB0aW9uIG9mIHRoZSBQb3N0U2NyaXB0IHR5cGUgc3VwcG9ydGVkIGJ5
IHRoZSBQREYgcHNldWRvIHBsdWctaW4uIFZpc2libGUgaW4gdGhlIEluc3RhbGxlZCBQbHVnLWlu
cyBwYWdlIGluIFNhZmFyaS4iKTsKK30KKworU3RyaW5nIGtleWdlbk1lbnVJdGVtMjA0OCgpCit7
CisgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIjIwNDggKEhpZ2ggR3JhZGUpIiwgIk1lbnUgaXRl
bSB0aXRsZSBmb3IgS0VZR0VOIHBvcC11cCBtZW51Iik7Cit9CisKK1N0cmluZyBrZXlnZW5LZXlj
aGFpbkl0ZW1OYW1lKGNvbnN0IFN0cmluZyYgaG9zdCkKK3sKKyAgICByZXR1cm4gZm9ybWF0TG9j
YWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIktleSBmcm9tICVAIiwgIk5hbWUgb2Yga2V5Y2hh
aW4ga2V5IGdlbmVyYXRlZCBieSB0aGUgS0VZR0VOIHRhZyIpLCBob3N0LmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCkpOworfQorCisjaWYgUExBVEZPUk0oSU9TKQorU3RyaW5nIGh0bWxTZWxlY3RNdWx0
aXBsZUl0ZW1zKHNpemVfdCBjb3VudCkKK3sKKyAgICBzd2l0Y2ggKGNvdW50KSB7CisgICAgY2Fz
ZSAwOgorICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklORygiMCBJdGVtcyIsICJQcmVzZW50IHRo
ZSBlbGVtZW50IDxzZWxlY3QgbXVsdGlwbGU+IHdoZW4gbm8gPG9wdGlvbj4gaXRlbXMgYXJlIHNl
bGVjdGVkIChpT1Mgb25seSkiKTsKKyAgICBjYXNlIDE6CisgICAgICAgIHJldHVybiBXRUJfVUlf
U1RSSU5HKCIxIEl0ZW0iLCAiUHJlc2VudCB0aGUgZWxlbWVudCA8c2VsZWN0IG11bHRpcGxlPiB3
aGVuIGEgc2luZ2xlIDxvcHRpb24+IGlzIHNlbGVjdGVkIChpT1Mgb25seSkiKTsKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkco
IiV6dSBJdGVtcyIsICJQcmVzZW50IHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQgPG9wdGlvbj4gaXRl
bXMgaW4gYSA8c2VsZWN0IG11bHRpcGxlPiBlbGVtZW50IChpT1Mgb25seSkiKSwgY291bnQpOwor
ICAgIH0KK30KKworU3RyaW5nIGZpbGVCdXR0b25DaG9vc2VNZWRpYUZpbGVMYWJlbCgpCit7Cisg
ICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIkNob29zZSBNZWRpYSAoU2luZ2xlKSIsICJUaXRsZSBm
b3IgZmlsZSBidXR0b24gdXNlZCBpbiBIVE1MIGZvcm1zIGZvciBtZWRpYSBmaWxlcyIpOworfQor
CitTdHJpbmcgZmlsZUJ1dHRvbkNob29zZU11bHRpcGxlTWVkaWFGaWxlc0xhYmVsKCkKK3sKKyAg
ICByZXR1cm4gV0VCX1VJX1NUUklORygiQ2hvb3NlIE1lZGlhIChNdWx0aXBsZSkiLCAiVGl0bGUg
Zm9yIGZpbGUgYnV0dG9uIHVzZWQgaW4gSFRNTDUgZm9ybXMgZm9yIG11bHRpcGxlIG1lZGlhIGZp
bGVzIik7Cit9CisKK1N0cmluZyBmaWxlQnV0dG9uTm9NZWRpYUZpbGVTZWxlY3RlZExhYmVsKCkK
K3sKKyAgICByZXR1cm4gV0VCX1VJX1NUUklORygibm8gbWVkaWEgc2VsZWN0ZWQgKHNpbmdsZSki
LCAiVGV4dCB0byBkaXNwbGF5IGluIGZpbGUgYnV0dG9uIHVzZWQgaW4gSFRNTCBmb3JtcyBmb3Ig
bWVkaWEgZmlsZXMgd2hlbiBubyBtZWRpYSBmaWxlIGlzIHNlbGVjdGVkIik7Cit9CisKK1N0cmlu
ZyBmaWxlQnV0dG9uTm9NZWRpYUZpbGVzU2VsZWN0ZWRMYWJlbCgpCit7CisgICAgcmV0dXJuIFdF
Ql9VSV9TVFJJTkcoIm5vIG1lZGlhIHNlbGVjdGVkIChtdWx0aXBsZSkiLCAiVGV4dCB0byBkaXNw
bGF5IGluIGZpbGUgYnV0dG9uIHVzZWQgaW4gSFRNTCBmb3JtcyBmb3IgbWVkaWEgZmlsZXMgd2hl
biBubyBtZWRpYSBmaWxlcyBhcmUgc2VsZWN0ZWQgYW5kIHRoZSBidXR0b24gYWxsb3dzIG11bHRp
cGxlIGZpbGVzIHRvIGJlIHNlbGVjdGVkIik7Cit9CisjZW5kaWYKKwogU3RyaW5nIHZhbGlkYXRp
b25NZXNzYWdlVG9vTG9uZ1RleHQoaW50LCBpbnQgbWF4TGVuZ3RoKQogewogICAgIHJldHVybiBb
TlNTdHJpbmcgbG9jYWxpemVkU3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfTlNTVFJJTkcoQCJVc2Ug
bm8gbW9yZSB0aGFuICVkIGNoYXJhY3RlcihzKSIsIEAiVmFsaWRhdGlvbiBtZXNzYWdlIGZvciBm
b3JtIGNvbnRyb2wgZWxlbWVudHMgd2l0aCBhIHZhbHVlIHNob3J0ZXIgdGhhbiBtYXhpbXVtIGFs
bG93ZWQgbGVuZ3RoIiksIG1heExlbmd0aF07CiB9CiAKKyNpZiBQTEFURk9STShNQUMpCitTdHJp
bmcgaW5zZXJ0TGlzdFR5cGVOb25lKCkKK3sKKyAgICByZXR1cm4gV0VCX1VJX1NUUklORygiTm9u
ZSIsICJPcHRpb24gaW4gc2VnbWVudGVkIGNvbnRyb2wgZm9yIGNob29zaW5nIGxpc3QgdHlwZSBp
biB0ZXh0IGVkaXRpbmciKTsKK30KKworU3RyaW5nIGluc2VydExpc3RUeXBlQnVsbGV0ZWQoKQor
eworICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCLigKIiLCAiT3B0aW9uIGluIHNlZ21lbnRlZCBj
b250cm9sIGZvciBjaG9vc2luZyBsaXN0IHR5cGUgaW4gdGV4dCBlZGl0aW5nIik7Cit9CisKK1N0
cmluZyBpbnNlcnRMaXN0VHlwZUJ1bGxldGVkQWNjZXNzaWJpbGl0eVRpdGxlKCkKK3sKKyAgICBy
ZXR1cm4gV0VCX1VJX1NUUklORygiQnVsbGV0ZWQgbGlzdCIsICJPcHRpb24gaW4gc2VnbWVudGVk
IGNvbnRyb2wgZm9yIGluc2VydGluZyBhIGJ1bGxldGVkIGxpc3QgaW4gdGV4dCBlZGl0aW5nIik7
Cit9CisKK1N0cmluZyBpbnNlcnRMaXN0VHlwZU51bWJlcmVkKCkKK3sKKyAgICByZXR1cm4gV0VC
X1VJX1NUUklORygiMS4gMi4gMy4iLCAiT3B0aW9uIGluIHNlZ21lbnRlZCBjb250cm9sIGZvciBj
aG9vc2luZyBsaXN0IHR5cGUgaW4gdGV4dCBlZGl0aW5nIik7Cit9CisKK1N0cmluZyBpbnNlcnRM
aXN0VHlwZU51bWJlcmVkQWNjZXNzaWJpbGl0eVRpdGxlKCkKK3sKKyAgICByZXR1cm4gV0VCX1VJ
X1NUUklORygiTnVtYmVyZWQgbGlzdCIsICJPcHRpb24gaW4gc2VnbWVudGVkIGNvbnRyb2wgZm9y
IGluc2VydGluZyBhIG51bWJlcmVkIGxpc3QgaW4gdGV4dCBlZGl0aW5nIik7Cit9CisKK1N0cmlu
ZyBleGl0RnVsbFNjcmVlbkJ1dHRvbkFjY2Vzc2liaWxpdHlUaXRsZSgpCit7CisgICAgcmV0dXJu
IFdFQl9VSV9TVFJJTkcoIkV4aXQgRnVsbHNjcmVlbiIsICJCdXR0b24gZm9yIGV4aXRpbmcgZnVs
bHNjcmVlbiB3aGVuIGluIGZ1bGxzY3JlZW4gbWVkaWEgcGxheWJhY2siKTsKK30KKyNlbmRpZiAv
LyBQTEFURk9STShNQUMpCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcAppbmRleCBhZThk
YWRkODk0My4uNzUwZWNlMzk5ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvTG9jYWxpemVkU3RyaW5nc0d0ay5jcHAKQEAgLTMxLDEyNSArMzEsMjggQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAKLSNpbmNsdWRl
ICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlIDxnbGli
L2dpMThuLWxpYi5oPgotI2luY2x1ZGUgPGd0ay9ndGsuaD4KLSNpbmNsdWRlIDx3dGYvTWF0aEV4
dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IGNoYXIqIGd0a1N0b2NrTGFiZWwoY29uc3Qg
Y2hhciogc3RvY2tJRCkKLXsKLSAgICBHdGtTdG9ja0l0ZW0gaXRlbTsKLSAgICBpZiAoIWd0a19z
dG9ja19sb29rdXAoc3RvY2tJRCwgJml0ZW0pKQotICAgICAgICByZXR1cm4gc3RvY2tJRDsKLSAg
ICByZXR1cm4gaXRlbS5sYWJlbDsKLX0KLQotU3RyaW5nIHN1Ym1pdEJ1dHRvbkRlZmF1bHRMYWJl
bCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoXygiU3VibWl0IikpOwotfQotCi1T
dHJpbmcgaW5wdXRFbGVtZW50QWx0VGV4dCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVU
RjgoXygiU3VibWl0IikpOwotfQotCi1TdHJpbmcgcmVzZXRCdXR0b25EZWZhdWx0TGFiZWwoKQot
ewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oIlJlc2V0IikpOwotfQotCi1TdHJpbmcg
ZGVmYXVsdERldGFpbHNTdW1tYXJ5VGV4dCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVU
RjgoXygiRGV0YWlscyIpKTsKLX0KLQotU3RyaW5nIHNlYXJjaGFibGVJbmRleEludHJvZHVjdGlv
bigpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoXygiVGhpcyBpcyBhIHNlYXJjaGFi
bGUgaW5kZXguIEVudGVyIHNlYXJjaCBrZXl3b3JkczogIikpOwotfQotCi1TdHJpbmcgZmlsZUJ1
dHRvbkNob29zZUZpbGVMYWJlbCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoXygi
Q2hvb3NlIEZpbGUiKSk7Ci19Ci0KLVN0cmluZyBmaWxlQnV0dG9uQ2hvb3NlTXVsdGlwbGVGaWxl
c0xhYmVsKCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChfKCJDaG9vc2UgRmlsZXMi
KSk7Ci19Ci0KLVN0cmluZyBmaWxlQnV0dG9uTm9GaWxlU2VsZWN0ZWRMYWJlbCgpCi17Ci0gICAg
cmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoXygiKE5vbmUpIikpOwotfQotCi1TdHJpbmcgZmlsZUJ1
dHRvbk5vRmlsZXNTZWxlY3RlZExhYmVsKCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRG
OChfKCIoTm9uZSkiKSk7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0lu
TmV3V2luZG93KCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChfKCJPcGVuIExpbmsg
aW4gTmV3IF9XaW5kb3ciKSk7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9h
ZExpbmtUb0Rpc2soKQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oIl9Eb3dubG9h
ZCBMaW5rZWQgRmlsZSIpKTsKLX0KLQorI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ0NvcHlMaW5rVG9DbGlwYm9hcmQoKQogewogICAgIHJldHVybiBT
dHJpbmc6OmZyb21VVEY4KF8oIkNvcHkgTGluayBMb2NfYXRpb24iKSk7CiB9CiAKLVN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJbk5ld1dpbmRvdygpCi17Ci0gICAgcmV0dXJuIFN0
cmluZzo6ZnJvbVVURjgoXygiT3BlbiBfSW1hZ2UgaW4gTmV3IFdpbmRvdyIpKTsKLX0KLQogU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2soKQogewogICAgIHJldHVy
biBTdHJpbmc6OmZyb21VVEY4KF8oIlNhX3ZlIEltYWdlIEFzIikpOwogfQogCi1TdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnQ29weUltYWdlVG9DbGlwYm9hcmQoKQotewotICAgIHJldHVybiBTdHJp
bmc6OmZyb21VVEY4KF8oIkNvcF95IEltYWdlIikpOwotfQotCiBTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnQ29weUltYWdlVXJsVG9DbGlwYm9hcmQoKQogewogICAgIHJldHVybiBTdHJpbmc6OmZy
b21VVEY4KF8oIkNvcHkgSW1hZ2UgX0FkZHJlc3MiKSk7CiB9CiAKLVN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdPcGVuVmlkZW9Jbk5ld1dpbmRvdygpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJv
bVVURjgoXygiT3BlbiBfVmlkZW8gaW4gTmV3IFdpbmRvdyIpKTsKLX0KLQotU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ09wZW5BdWRpb0luTmV3V2luZG93KCkKLXsKLSAgICByZXR1cm4gU3RyaW5n
Ojpmcm9tVVRGOChfKCJPcGVuIF9BdWRpbyBpbiBOZXcgV2luZG93IikpOwotfQotCi1TdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRWaWRlb1RvRGlzaygpCi17Ci0gICAgcmV0dXJuIFN0
cmluZzo6ZnJvbVVURjgoXygiRG93bmxvYWQgX1ZpZGVvIikpOwotfQotCi1TdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnRG93bmxvYWRBdWRpb1RvRGlzaygpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6
ZnJvbVVURjgoXygiRG93bmxvYWQgX0F1ZGlvIikpOwotfQotCiBTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnQ29weVZpZGVvTGlua1RvQ2xpcGJvYXJkKCkKIHsKICAgICByZXR1cm4gU3RyaW5nOjpm
cm9tVVRGOChfKCJDb3BfeSBWaWRlbyBMaW5rIExvY2F0aW9uIikpOwpAQCAtMTg1LDQyICs4OCwx
NCBAQCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRW50ZXJWaWRlb0Z1bGxzY3JlZW4oKQogICAg
IHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oIlN3aXRjaCBWaWRlbyB0byBfRnVsbHNjcmVlbiIp
KTsKIH0KIAotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ01lZGlhUGxheSgpCi17Ci0gICAgcmV0
dXJuIFN0cmluZzo6ZnJvbVVURjgoXygiX1BsYXkiKSk7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdNZWRpYVBhdXNlKCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChfKCJf
UGF1c2UiKSk7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdNZWRpYU11dGUoKQotewot
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oIl9NdXRlIikpOwotfQotCi1TdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnT3BlbkZyYW1lSW5OZXdXaW5kb3coKQotewotICAgIHJldHVybiBTdHJp
bmc6OmZyb21VVEY4KF8oIk9wZW4gX0ZyYW1lIGluIE5ldyBXaW5kb3ciKSk7Ci19Ci0KLVN0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5KCkKLXsKLSAgICBzdGF0aWMgU3RyaW5nIHN0b2NrTGFi
ZWwgPSBTdHJpbmc6OmZyb21VVEY4KGd0a1N0b2NrTGFiZWwoR1RLX1NUT0NLX0NPUFkpKTsKLSAg
ICByZXR1cm4gc3RvY2tMYWJlbDsKLX0KLQogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0RlbGV0
ZSgpCiB7Ci0gICAgc3RhdGljIFN0cmluZyBzdG9ja0xhYmVsID0gU3RyaW5nOjpmcm9tVVRGOChn
dGtTdG9ja0xhYmVsKEdUS19TVE9DS19ERUxFVEUpKTsKLSAgICByZXR1cm4gc3RvY2tMYWJlbDsK
KyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChfKCJfRGVsZXRlIikpOwogfQogCiBTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnU2VsZWN0QWxsKCkKIHsKLSAgICBzdGF0aWMgU3RyaW5nIHN0b2Nr
TGFiZWwgPSBTdHJpbmc6OmZyb21VVEY4KGd0a1N0b2NrTGFiZWwoR1RLX1NUT0NLX1NFTEVDVF9B
TEwpKTsKLSAgICByZXR1cm4gc3RvY2tMYWJlbDsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRG
OChfKCJTZWxlY3QgX0FsbCIpKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1VuaWNv
ZGUoKQpAQCAtMjMzLDEzNCArMTA4LDExIEBAIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJbnB1
dE1ldGhvZHMoKQogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oIklucHV0IF9NZXRob2Rz
IikpOwogfQogCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnR29CYWNrKCkKLXsKLSAgICBzdGF0
aWMgU3RyaW5nIHN0b2NrTGFiZWwgPSBTdHJpbmc6OmZyb21VVEY4KGd0a1N0b2NrTGFiZWwoR1RL
X1NUT0NLX0dPX0JBQ0spKTsKLSAgICByZXR1cm4gc3RvY2tMYWJlbDsKLX0KLQotU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ0dvRm9yd2FyZCgpCi17Ci0gICAgc3RhdGljIFN0cmluZyBzdG9ja0xh
YmVsID0gU3RyaW5nOjpmcm9tVVRGOChndGtTdG9ja0xhYmVsKEdUS19TVE9DS19HT19GT1JXQVJE
KSk7Ci0gICAgcmV0dXJuIHN0b2NrTGFiZWw7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdTdG9wKCkKLXsKLSAgICBzdGF0aWMgU3RyaW5nIHN0b2NrTGFiZWwgPSBTdHJpbmc6OmZyb21V
VEY4KGd0a1N0b2NrTGFiZWwoR1RLX1NUT0NLX1NUT1ApKTsKLSAgICByZXR1cm4gc3RvY2tMYWJl
bDsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1JlbG9hZCgpCi17Ci0gICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgoXygiX1JlbG9hZCIpKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ0N1dCgpCi17Ci0gICAgc3RhdGljIFN0cmluZyBzdG9ja0xhYmVsID0gU3RyaW5nOjpm
cm9tVVRGOChndGtTdG9ja0xhYmVsKEdUS19TVE9DS19DVVQpKTsKLSAgICByZXR1cm4gc3RvY2tM
YWJlbDsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Bhc3RlKCkKLXsKLSAgICBzdGF0
aWMgU3RyaW5nIHN0b2NrTGFiZWwgPSBTdHJpbmc6OmZyb21VVEY4KGd0a1N0b2NrTGFiZWwoR1RL
X1NUT0NLX1BBU1RFKSk7Ci0gICAgcmV0dXJuIHN0b2NrTGFiZWw7Ci19Ci0KLVN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdOb0d1ZXNzZXNGb3VuZCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJv
bVVURjgoXygiTm8gR3Vlc3NlcyBGb3VuZCIpKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ0lnbm9yZVNwZWxsaW5nKCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChfKCJf
SWdub3JlIFNwZWxsaW5nIikpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTGVhcm5T
cGVsbGluZygpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoXygiX0xlYXJuIFNwZWxs
aW5nIikpOwotfQotCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2VhcmNoV2ViKCkKIHsKICAg
ICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChfKCJfU2VhcmNoIHRoZSBXZWIiKSk7CiB9CiAKLVN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoY29uc3QgU3RyaW5nJikK
LXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChfKCJfTG9vayBVcCBpbiBEaWN0aW9uYXJ5
IikpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmsoKQotewotICAgIHJl
dHVybiBTdHJpbmc6OmZyb21VVEY4KF8oIl9PcGVuIExpbmsiKSk7Ci19Ci0KLVN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyKCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9t
VVRGOChfKCJJZ25vcmUgX0dyYW1tYXIiKSk7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdTcGVsbGluZ01lbnUoKQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oIlNwZWxs
aW5nIGFuZCBfR3JhbW1hciIpKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dT
cGVsbGluZ1BhbmVsKGJvb2wgc2hvdykKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChz
aG93ID8gXygiX1Nob3cgU3BlbGxpbmcgYW5kIEdyYW1tYXIiKSA6IF8oIl9IaWRlIFNwZWxsaW5n
IGFuZCBHcmFtbWFyIikpOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVs
bGluZygpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoXygiX0NoZWNrIERvY3VtZW50
IE5vdyIpKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGls
ZVR5cGluZygpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoXygiQ2hlY2sgU3BlbGxp
bmcgV2hpbGUgX1R5cGluZyIpKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NoZWNr
R3JhbW1hcldpdGhTcGVsbGluZygpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoXygi
Q2hlY2sgX0dyYW1tYXIgV2l0aCBTcGVsbGluZyIpKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ0ZvbnRNZW51KCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChfKCJfRm9u
dCIpKTsKLX0KLQotU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0JvbGQoKQotewotICAgIHN0YXRp
YyBTdHJpbmcgc3RvY2tMYWJlbCA9IFN0cmluZzo6ZnJvbVVURjgoZ3RrU3RvY2tMYWJlbChHVEtf
U1RPQ0tfQk9MRCkpOwotICAgIHJldHVybiBzdG9ja0xhYmVsOwotfQotCi1TdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnSXRhbGljKCkKLXsKLSAgICBzdGF0aWMgU3RyaW5nIHN0b2NrTGFiZWwgPSBT
dHJpbmc6OmZyb21VVEY4KGd0a1N0b2NrTGFiZWwoR1RLX1NUT0NLX0lUQUxJQykpOwotICAgIHJl
dHVybiBzdG9ja0xhYmVsOwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5l
KCkKLXsKLSAgICBzdGF0aWMgU3RyaW5nIHN0b2NrTGFiZWwgPSBTdHJpbmc6OmZyb21VVEY4KGd0
a1N0b2NrTGFiZWwoR1RLX1NUT0NLX1VOREVSTElORSkpOwotICAgIHJldHVybiBzdG9ja0xhYmVs
OwotfQotCi1TdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3V0bGluZSgpCi17Ci0gICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgoXygiX091dGxpbmUiKSk7Ci19Ci0KLVN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdJbnNwZWN0RWxlbWVudCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgo
XygiSW5zcGVjdCBfRWxlbWVudCIpKTsKLX0KLQogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Vu
aWNvZGVJbnNlcnRMUk1NYXJrKCkKIHsKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChfKCJM
Uk0gX0xlZnQtdG8tcmlnaHQgbWFyayIpKTsKQEAgLTQxMCw0MDQgKzE2Miw3IEBAIFN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdVbmljb2RlSW5zZXJ0WldOSk1hcmsoKQogewogICAgIHJldHVybiBT
dHJpbmc6OmZyb21VVEY4KF8oIlpXTkogWmVybyB3aWR0aCBfbm9uLWpvaW5lciIpKTsKIH0KLQot
U3RyaW5nIHNlYXJjaE1lbnVOb1JlY2VudFNlYXJjaGVzVGV4dCgpCi17Ci0gICAgcmV0dXJuIFN0
cmluZzo6ZnJvbVVURjgoXygiTm8gcmVjZW50IHNlYXJjaGVzIikpOwotfQotCi1TdHJpbmcgc2Vh
cmNoTWVudVJlY2VudFNlYXJjaGVzVGV4dCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVU
RjgoXygiUmVjZW50IHNlYXJjaGVzIikpOwotfQotCi1TdHJpbmcgc2VhcmNoTWVudUNsZWFyUmVj
ZW50U2VhcmNoZXNUZXh0KCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChfKCJfQ2xl
YXIgcmVjZW50IHNlYXJjaGVzIikpOwotfQotCi1TdHJpbmcgQVhEZWZpbml0aW9uVGV4dCgpCi17
Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoXygiZGVmaW5pdGlvbiIpKTsKLX0KLQotU3Ry
aW5nIEFYRGVzY3JpcHRpb25MaXN0VGV4dCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVU
RjgoXygiZGVzY3JpcHRpb24gbGlzdCIpKTsKLX0KLQotU3RyaW5nIEFYRGVzY3JpcHRpb25MaXN0
VGVybVRleHQoKQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oInRlcm0iKSk7Ci19
Ci0KLVN0cmluZyBBWERlc2NyaXB0aW9uTGlzdERldGFpbFRleHQoKQotewotICAgIHJldHVybiBT
dHJpbmc6OmZyb21VVEY4KF8oImRlc2NyaXB0aW9uIikpOwotfQotCi1TdHJpbmcgQVhEZXRhaWxz
VGV4dCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoXygiZGV0YWlscyIpKTsKLX0K
LQotU3RyaW5nIEFYU3VtbWFyeVRleHQoKQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4
KF8oInN1bW1hcnkiKSk7Ci19Ci0KLVN0cmluZyBBWEZpZ3VyZVRleHQoKQotewotICAgIHJldHVy
biBTdHJpbmc6OmZyb21VVEY4KF8oImZpZ3VyZSIpKTsKLX0KLQotU3RyaW5nIEFYT3V0cHV0VGV4
dCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoXygib3V0cHV0IikpOwotfQotCi1T
dHJpbmcgQVhFbWFpbEZpZWxkVGV4dCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgo
XygiZW1haWwgZmllbGQiKSk7Ci19Ci0KLVN0cmluZyBBWFRlbGVwaG9uZUZpZWxkVGV4dCgpCi17
Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoXygidGVsZXBob25lIG51bWJlciBmaWVsZCIp
KTsKLX0KLQotU3RyaW5nIEFYVVJMRmllbGRUZXh0KCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpm
cm9tVVRGOChfKCJVUkwgZmllbGQiKSk7Ci19Ci0KLVN0cmluZyBBWERhdGVGaWVsZFRleHQoKQot
ewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oImRhdGUgZmllbGQiKSk7Ci19Ci0KLVN0
cmluZyBBWFRpbWVGaWVsZFRleHQoKQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8o
InRpbWUgZmllbGQiKSk7Ci19Ci0KLVN0cmluZyBBWERhdGVUaW1lRmllbGRUZXh0KCkKLXsKLSAg
ICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChfKCJkYXRlIGFuZCB0aW1lIGZpZWxkIikpOwotfQot
Ci1TdHJpbmcgQVhNb250aEZpZWxkVGV4dCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVU
RjgoXygibW9udGggYW5kIHllYXIgZmllbGQiKSk7Ci19Ci0KLVN0cmluZyBBWE51bWJlckZpZWxk
VGV4dCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoXygibnVtYmVyIGZpZWxkIikp
OwotfQotCi1TdHJpbmcgQVhXZWVrRmllbGRUZXh0KCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpm
cm9tVVRGOChfKCJ3ZWVrIGFuZCB5ZWFyIGZpZWxkIikpOwotfQotCi1TdHJpbmcgQVhGb290ZXJS
b2xlRGVzY3JpcHRpb25UZXh0KCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChfKCJm
b290ZXIiKSk7Ci19Ci0KLVN0cmluZyBBWFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uVGV4dCgpCi17
Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoXygiY2FuY2VsIikpOwotfQotCi1TdHJpbmcg
QVhBdXRvRmlsbENyZWRlbnRpYWxzTGFiZWwoKQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21V
VEY4KF8oInBhc3N3b3JkIGF1dG8gZmlsbCIpKTsKLX0KLQotU3RyaW5nIEFYQXV0b0ZpbGxDb250
YWN0c0xhYmVsKCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChfKCJjb250YWN0IGlu
Zm8gYXV0byBmaWxsIikpOwotfQotICAgIAotU3RyaW5nIEFYQnV0dG9uQWN0aW9uVmVyYigpCi17
Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoXygicHJlc3MiKSk7Ci19Ci0KLVN0cmluZyBB
WFJhZGlvQnV0dG9uQWN0aW9uVmVyYigpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgo
Xygic2VsZWN0IikpOwotfQotCi1TdHJpbmcgQVhUZXh0RmllbGRBY3Rpb25WZXJiKCkKLXsKLSAg
ICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChfKCJhY3RpdmF0ZSIpKTsKLX0KLQotU3RyaW5nIEFY
Q2hlY2tlZENoZWNrQm94QWN0aW9uVmVyYigpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVU
RjgoXygidW5jaGVjayIpKTsKLX0KLQotU3RyaW5nIEFYVW5jaGVja2VkQ2hlY2tCb3hBY3Rpb25W
ZXJiKCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChfKCJjaGVjayIpKTsKLX0KLQot
U3RyaW5nIEFYTGlua0FjdGlvblZlcmIoKQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4
KF8oImp1bXAiKSk7Ci19Ci0KLVN0cmluZyBBWE1lbnVMaXN0UG9wdXBBY3Rpb25WZXJiKCkKLXsK
LSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBBWE1lbnVMaXN0QWN0aW9uVmVyYigp
Ci17Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcgQVhMaXN0SXRlbUFjdGlvblZl
cmIoKQotewotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLSAgICAKLVN0cmluZyBtaXNzaW5nUGx1
Z2luVGV4dCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoXygiTWlzc2luZyBQbHVn
LWluIikpOwotfQotCi1TdHJpbmcgY3Jhc2hlZFBsdWdpblRleHQoKQotewotICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoXygiUGx1Zy1pbiBGYWlsdXJl
IikpOwotfQotCi1TdHJpbmcgYmxvY2tlZFBsdWdpbkJ5Q29udGVudFNlY3VyaXR5UG9saWN5VGV4
dCgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0K
LVN0cmluZyBpbnNlY3VyZVBsdWdpblZlcnNpb25UZXh0KCkKLXsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIG11bHRpcGxlRmlsZVVwbG9h
ZFRleHQodW5zaWduZWQgbnVtYmVyT2ZGaWxlcykKLXsKLSAgICAvLyBGSVhNRTogSWYgdGhpcyBm
aWxlIGdldHMgbG9jYWxpemVkLCB0aGlzIHNob3VsZCByZWFsbHkgYmUgbG9jYWxpemVkIGFzIG9u
ZSBzdHJpbmcgd2l0aCBhIHdpbGRjYXJkIGZvciB0aGUgbnVtYmVyLgotICAgIHJldHVybiBTdHJp
bmc6Om51bWJlcihudW1iZXJPZkZpbGVzKSArIFN0cmluZzo6ZnJvbVVURjgoXygiIGZpbGVzIikp
OwotfQotCi1TdHJpbmcgdW5rbm93bkZpbGVTaXplVGV4dCgpCi17Ci0gICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgoXygiVW5rbm93biIpKTsKLX0KLQotU3RyaW5nIGltYWdlVGl0bGUoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKLXsKLSAgICBHVW5pcXVlUHRy
PGdjaGFyPiBzdHJpbmcoZ19zdHJkdXBfcHJpbnRmKENfKCJ3aW5kb3cgdGl0bGUgZm9yIGEgc3Rh
bmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIsICIlcyAl
ZMOXJWQgcGl4ZWxzIiksCi0gICAgICAgIGZpbGVuYW1lLnV0ZjgoKS5kYXRhKCksIHNpemUud2lk
dGgoKSwgc2l6ZS5oZWlnaHQoKSkpOwotCi0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoc3Ry
aW5nLmdldCgpKTsKLX0KLQotCi0jaWYgRU5BQkxFKFZJREVPKQotCi1TdHJpbmcgbWVkaWFFbGVt
ZW50TG9hZGluZ1N0YXRlVGV4dCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoXygi
TG9hZGluZy4uLiIpKTsKLX0KLQotU3RyaW5nIG1lZGlhRWxlbWVudExpdmVCcm9hZGNhc3RTdGF0
ZVRleHQoKQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oIkxpdmUgQnJvYWRjYXN0
IikpOwotfQotCi1TdHJpbmcgbG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudFN0cmluZyhjb25z
dCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgaWYgKG5hbWUgPT0gIkF1ZGlvRWxlbWVudCIpCi0gICAg
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oImF1ZGlvIHBsYXliYWNrIikpOwotICAgIGlm
IChuYW1lID09ICJWaWRlb0VsZW1lbnQiKQotICAgICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRG
OChfKCJ2aWRlbyBwbGF5YmFjayIpKTsKLSAgICBpZiAobmFtZSA9PSAiTXV0ZUJ1dHRvbiIpCi0g
ICAgICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oIm11dGUiKSk7Ci0gICAgaWYgKG5hbWUg
PT0gIlVuTXV0ZUJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oInVu
bXV0ZSIpKTsKLSAgICBpZiAobmFtZSA9PSAiUGxheUJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBT
dHJpbmc6OmZyb21VVEY4KF8oInBsYXkiKSk7Ci0gICAgaWYgKG5hbWUgPT0gIlBhdXNlQnV0dG9u
IikKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoXygicGF1c2UiKSk7Ci0gICAgaWYg
KG5hbWUgPT0gIlNsaWRlciIpCi0gICAgICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oIm1v
dmllIHRpbWUiKSk7Ci0gICAgaWYgKG5hbWUgPT0gIlNsaWRlclRodW1iIikKLSAgICAgICAgcmV0
dXJuIFN0cmluZzo6ZnJvbVVURjgoXygidGltZWxpbmUgc2xpZGVyIHRodW1iIikpOwotICAgIGlm
IChuYW1lID09ICJSZXdpbmRCdXR0b24iKQotICAgICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRG
OChfKCJiYWNrIDMwIHNlY29uZHMiKSk7Ci0gICAgaWYgKG5hbWUgPT0gIlJldHVyblRvUmVhbHRp
bWVCdXR0b24iKQotICAgICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChfKCJyZXR1cm4gdG8g
cmVhbHRpbWUiKSk7Ci0gICAgaWYgKG5hbWUgPT0gIkN1cnJlbnRUaW1lRGlzcGxheSIpCi0gICAg
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oImVsYXBzZWQgdGltZSIpKTsKLSAgICBpZiAo
bmFtZSA9PSAiVGltZVJlbWFpbmluZ0Rpc3BsYXkiKQotICAgICAgICByZXR1cm4gU3RyaW5nOjpm
cm9tVVRGOChfKCJyZW1haW5pbmcgdGltZSIpKTsKLSAgICBpZiAobmFtZSA9PSAiU3RhdHVzRGlz
cGxheSIpCi0gICAgICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oInN0YXR1cyIpKTsKLSAg
ICBpZiAobmFtZSA9PSAiRW50ZXJGdWxsc2NyZWVuQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIFN0
cmluZzo6ZnJvbVVURjgoXygiZW50ZXIgZnVsbHNjcmVlbiIpKTsKLSAgICBpZiAobmFtZSA9PSAi
RXhpdEZ1bGxzY3JlZW5CdXR0b24iKQotICAgICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChf
KCJleGl0IGZ1bGxzY3JlZW4iKSk7Ci0gICAgaWYgKG5hbWUgPT0gIlNlZWtGb3J3YXJkQnV0dG9u
IikKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoXygiZmFzdCBmb3J3YXJkIikpOwot
ICAgIGlmIChuYW1lID09ICJTZWVrQmFja0J1dHRvbiIpCi0gICAgICAgIHJldHVybiBTdHJpbmc6
OmZyb21VVEY4KF8oImZhc3QgcmV2ZXJzZSIpKTsKLSAgICBpZiAobmFtZSA9PSAiU2hvd0Nsb3Nl
ZENhcHRpb25zQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoXygic2hv
dyBjbG9zZWQgY2FwdGlvbnMiKSk7Ci0gICAgaWYgKG5hbWUgPT0gIkhpZGVDbG9zZWRDYXB0aW9u
c0J1dHRvbiIpCi0gICAgICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oImhpZGUgY2xvc2Vk
IGNhcHRpb25zIikpOwotICAgIGlmIChuYW1lID09ICJDb250cm9sc1BhbmVsIikKLSAgICAgICAg
cmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoXygibWVkaWEgY29udHJvbHMiKSk7Ci0KLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBsb2Nh
bGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50SGVscFRleHQoY29uc3QgU3RyaW5nJiBuYW1lKQotewot
ICAgIGlmIChuYW1lID09ICJBdWRpb0VsZW1lbnQiKQotICAgICAgICByZXR1cm4gU3RyaW5nOjpm
cm9tVVRGOChfKCJhdWRpbyBlbGVtZW50IHBsYXliYWNrIGNvbnRyb2xzIGFuZCBzdGF0dXMgZGlz
cGxheSIpKTsKLSAgICBpZiAobmFtZSA9PSAiVmlkZW9FbGVtZW50IikKLSAgICAgICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgoXygidmlkZW8gZWxlbWVudCBwbGF5YmFjayBjb250cm9scyBhbmQg
c3RhdHVzIGRpc3BsYXkiKSk7Ci0gICAgaWYgKG5hbWUgPT0gIk11dGVCdXR0b24iKQotICAgICAg
ICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChfKCJtdXRlIGF1ZGlvIHRyYWNrcyIpKTsKLSAgICBp
ZiAobmFtZSA9PSAiVW5NdXRlQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVU
RjgoXygidW5tdXRlIGF1ZGlvIHRyYWNrcyIpKTsKLSAgICBpZiAobmFtZSA9PSAiUGxheUJ1dHRv
biIpCi0gICAgICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oImJlZ2luIHBsYXliYWNrIikp
OwotICAgIGlmIChuYW1lID09ICJQYXVzZUJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBTdHJpbmc6
OmZyb21VVEY4KF8oInBhdXNlIHBsYXliYWNrIikpOwotICAgIGlmIChuYW1lID09ICJTbGlkZXIi
KQotICAgICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChfKCJtb3ZpZSB0aW1lIHNjcnViYmVy
IikpOwotICAgIGlmIChuYW1lID09ICJTbGlkZXJUaHVtYiIpCi0gICAgICAgIHJldHVybiBTdHJp
bmc6OmZyb21VVEY4KF8oIm1vdmllIHRpbWUgc2NydWJiZXIgdGh1bWIiKSk7Ci0gICAgaWYgKG5h
bWUgPT0gIlJld2luZEJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8o
InNlZWsgbW92aWUgYmFjayAzMCBzZWNvbmRzIikpOwotICAgIGlmIChuYW1lID09ICJSZXR1cm5U
b1JlYWx0aW1lQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoXygicmV0
dXJuIHN0cmVhbWluZyBtb3ZpZSB0byByZWFsIHRpbWUiKSk7Ci0gICAgaWYgKG5hbWUgPT0gIkN1
cnJlbnRUaW1lRGlzcGxheSIpCi0gICAgICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oImN1
cnJlbnQgbW92aWUgdGltZSBpbiBzZWNvbmRzIikpOwotICAgIGlmIChuYW1lID09ICJUaW1lUmVt
YWluaW5nRGlzcGxheSIpCi0gICAgICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oIm51bWJl
ciBvZiBzZWNvbmRzIG9mIG1vdmllIHJlbWFpbmluZyIpKTsKLSAgICBpZiAobmFtZSA9PSAiU3Rh
dHVzRGlzcGxheSIpCi0gICAgICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oImN1cnJlbnQg
bW92aWUgc3RhdHVzIikpOwotICAgIGlmIChuYW1lID09ICJTZWVrQmFja0J1dHRvbiIpCi0gICAg
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oInNlZWsgcXVpY2tseSBiYWNrIikpOwotICAg
IGlmIChuYW1lID09ICJTZWVrRm9yd2FyZEJ1dHRvbiIpCi0gICAgICAgIHJldHVybiBTdHJpbmc6
OmZyb21VVEY4KF8oInNlZWsgcXVpY2tseSBmb3J3YXJkIikpOwotICAgIGlmIChuYW1lID09ICJF
bnRlckZ1bGxzY3JlZW5CdXR0b24iKQotICAgICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChf
KCJQbGF5IG1vdmllIGluIGZ1bGxzY3JlZW4gbW9kZSIpKTsKLSAgICBpZiAobmFtZSA9PSAiRW50
ZXJGdWxsc2NyZWVuQnV0dG9uIikKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoXygi
RXhpdCBmdWxsc2NyZWVuIG1vZGUiKSk7Ci0gICAgaWYgKG5hbWUgPT0gIlNob3dDbG9zZWRDYXB0
aW9uc0J1dHRvbiIpCi0gICAgICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oInN0YXJ0IGRp
c3BsYXlpbmcgY2xvc2VkIGNhcHRpb25zIikpOwotICAgIGlmIChuYW1lID09ICJIaWRlQ2xvc2Vk
Q2FwdGlvbnNCdXR0b24iKQotICAgICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChfKCJzdG9w
IGRpc3BsYXlpbmcgY2xvc2VkIGNhcHRpb25zIikpOwotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1TdHJpbmcgbG9jYWxpemVkTWVkaWFUaW1l
RGVzY3JpcHRpb24oZmxvYXQgdGltZSkKLXsKLSAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodGltZSkp
Ci0gICAgICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oImluZGVmaW5pdGUgdGltZSIpKTsK
LQotICAgIGludCBzZWNvbmRzID0gYWJzKHN0YXRpY19jYXN0PGludD4odGltZSkpOwotICAgIGlu
dCBkYXlzID0gc2Vjb25kcyAvICg2MCAqIDYwICogMjQpOwotICAgIGludCBob3VycyA9IHNlY29u
ZHMgLyAoNjAgKiA2MCk7Ci0gICAgaW50IG1pbnV0ZXMgPSAoc2Vjb25kcyAvIDYwKSAlIDYwOwot
ICAgIHNlY29uZHMgJT0gNjA7Ci0KLSAgICBpZiAoZGF5cykgewotICAgICAgICBHVW5pcXVlUHRy
PGdjaGFyPiBzdHJpbmcoZ19zdHJkdXBfcHJpbnRmKCIlZCBkYXlzICVkIGhvdXJzICVkIG1pbnV0
ZXMgJWQgc2Vjb25kcyIsIGRheXMsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzKSk7Ci0gICAgICAg
IHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHN0cmluZy5nZXQoKSk7Ci0gICAgfQotCi0gICAgaWYg
KGhvdXJzKSB7Ci0gICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHN0cmluZyhnX3N0cmR1cF9wcmlu
dGYoIiVkIGhvdXJzICVkIG1pbnV0ZXMgJWQgc2Vjb25kcyIsIGhvdXJzLCBtaW51dGVzLCBzZWNv
bmRzKSk7Ci0gICAgICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHN0cmluZy5nZXQoKSk7Ci0g
ICAgfQotCi0gICAgaWYgKG1pbnV0ZXMpIHsKLSAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gc3Ry
aW5nKGdfc3RyZHVwX3ByaW50ZigiJWQgbWludXRlcyAlZCBzZWNvbmRzIiwgbWludXRlcywgc2Vj
b25kcykpOwotICAgICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcuZ2V0KCkpOwot
ICAgIH0KLQotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHN0cmluZyhnX3N0cmR1cF9wcmludGYoIiVk
IHNlY29uZHMiLCBzZWNvbmRzKSk7Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoc3RyaW5n
LmdldCgpKTsKLX0KLSNlbmRpZiAgLy8gRU5BQkxFKFZJREVPKQotCi1TdHJpbmcgdmFsaWRhdGlv
bk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRG
OChfKCJGaWxsIG91dCB0aGlzIGZpZWxkIikpOwotfQotCi1TdHJpbmcgdmFsaWRhdGlvbk1lc3Nh
Z2VWYWx1ZU1pc3NpbmdGb3JDaGVja2JveFRleHQoKQotewotICAgIHJldHVybiBTdHJpbmc6OmZy
b21VVEY4KF8oIlNlbGVjdCB0aGlzIGNoZWNrYm94IikpOwotfQotCi1TdHJpbmcgdmFsaWRhdGlv
bk1lc3NhZ2VWYWx1ZU1pc3NpbmdGb3JGaWxlVGV4dCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6
ZnJvbVVURjgoXygiU2VsZWN0IGEgZmlsZSIpKTsKLX0KLQotU3RyaW5nIHZhbGlkYXRpb25NZXNz
YWdlVmFsdWVNaXNzaW5nRm9yTXVsdGlwbGVGaWxlVGV4dCgpCi17Ci0gICAgcmV0dXJuIHZhbGlk
YXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nRm9yRmlsZVRleHQoKTsKLX0KLQotU3RyaW5nIHZhbGlk
YXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nRm9yUmFkaW9UZXh0KCkKLXsKLSAgICByZXR1cm4gU3Ry
aW5nOjpmcm9tVVRGOChfKCJTZWxlY3Qgb25lIG9mIHRoZXNlIG9wdGlvbnMiKSk7Ci19Ci0KLVN0
cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ0ZvclNlbGVjdFRleHQoKQotewotICAg
IHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oIlNlbGVjdCBhbiBpdGVtIGluIHRoZSBsaXN0Iikp
OwotfQotCi1TdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hUZXh0KCkKLXsKLSAg
ICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChfKCJJbnZhbGlkIHZhbHVlIikpOwotfQotCi1TdHJp
bmcgdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hGb3JFbWFpbFRleHQoKQotewotICAgIHJl
dHVybiBTdHJpbmc6OmZyb21VVEY4KF8oIkVudGVyIGFuIGVtYWlsIGFkZHJlc3MiKSk7Ci19Ci0K
LVN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaEZvck11bHRpcGxlRW1haWxUZXh0
KCkKLXsKLSAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hGb3JFbWFpbFRl
eHQoKTsKLX0KLQotU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoRm9yVVJMVGV4
dCgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoXygiRW50ZXIgYSBVUkwiKSk7Ci19
Ci0KLVN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVBhdHRlcm5NaXNtYXRjaFRleHQoKQotewotICAg
IHJldHVybiBTdHJpbmc6OmZyb21VVEY4KF8oIk1hdGNoIHRoZSByZXF1ZXN0ZWQgZm9ybWF0Iikp
OwotfQorI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQogCiBTdHJpbmcgdmFsaWRhdGlv
bk1lc3NhZ2VUb29TaG9ydFRleHQoaW50LCBpbnQgbWluTGVuZ3RoKQogewpAQCAtODIxLDI4ICsx
NzYsNiBAQCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dChpbnQsIGludCBtYXhM
ZW5ndGgpCiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nLmdldCgpKTsKIH0KIAot
U3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VVbmRlcmZsb3dUZXh0KGNvbnN0IFN0cmluZyYg
bWluaW11bSkKLXsKLSAgICBHVW5pcXVlUHRyPGNoYXI+IHN0cmluZyhnX3N0cmR1cF9wcmludGYo
XygiVmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMiKSwgbWluaW11bS51
dGY4KCkuZGF0YSgpKSk7Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nLmdldCgp
KTsKLX0KLQotU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VPdmVyZmxvd1RleHQoY29uc3Qg
U3RyaW5nJiBtYXhpbXVtKQotewotICAgIEdVbmlxdWVQdHI8Y2hhcj4gc3RyaW5nKGdfc3RyZHVw
X3ByaW50ZihfKCJWYWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcyIpLCBtYXhp
bXVtLnV0ZjgoKS5kYXRhKCkpKTsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcu
Z2V0KCkpOwotfQotCi1TdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VTdGVwTWlzbWF0Y2hUZXh0KGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVU
RjgoXygiRW50ZXIgYSB2YWxpZCB2YWx1ZSIpKTsKLX0KLQotU3RyaW5nIHZhbGlkYXRpb25NZXNz
YWdlQmFkSW5wdXRGb3JOdW1iZXJUZXh0KCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRG
OChfKCJFbnRlciBhIG51bWJlciIpKTsKLX0KLQogU3RyaW5nIHVuYWNjZXB0YWJsZVRMU0NlcnRp
ZmljYXRlKCkKIHsKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChfKCJVbmFjY2VwdGFibGUg
VExTIGNlcnRpZmljYXRlIikpOwpAQCAtODUzLDQxICsxODYsNCBAQCBTdHJpbmcgbG9jYWxpemVk
U3RyaW5nKGNvbnN0IGNoYXIqIGtleSkKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChrZXks
IHN0cmxlbihrZXkpKTsKIH0KIAotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLVN0cmluZyB0ZXh0
VHJhY2tTdWJ0aXRsZXNUZXh0KCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChDXygi
TWVudSBzZWN0aW9uIGhlYWRpbmcgZm9yIHN1YnRpdGxlcyIsICJTdWJ0aXRsZXMiKSk7Ci19Ci0K
LVN0cmluZyB0ZXh0VHJhY2tPZmZNZW51SXRlbVRleHQoKQotewotICAgIHJldHVybiBTdHJpbmc6
OmZyb21VVEY4KENfKCJNZW51IGl0ZW0gbGFiZWwgZm9yIHRoZSB0cmFjayB0aGF0IHJlcHJlc2Vu
dHMgZGlzYWJsaW5nIGNsb3NlZCBjYXB0aW9ucyIsICJPZmYiKSk7Ci19Ci0KLVN0cmluZyB0ZXh0
VHJhY2tBdXRvbWF0aWNNZW51SXRlbVRleHQoKQotewotICAgIHJldHVybiBTdHJpbmc6OmZyb21V
VEY4KENfKCJNZW51IGl0ZW0gbGFiZWwgZm9yIHRoZSBhdXRvbWF0aWNhbGx5IGNob3NlbiB0cmFj
ayIsICJBdXRvIikpOwotfQotCi1TdHJpbmcgdGV4dFRyYWNrTm9MYWJlbFRleHQoKQotewotICAg
IHJldHVybiBTdHJpbmc6OmZyb21VVEY4KENfKCJNZW51IGl0ZW0gbGFiZWwgZm9yIGEgY2xvc2Vk
IGNhcHRpb25zIHRyYWNrIHRoYXQgaGFzIG5vIG90aGVyIG5hbWUiLCAiTm8gbGFiZWwiKSk7Ci19
Ci0KLVN0cmluZyBhdWRpb1RyYWNrTm9MYWJlbFRleHQoKQotewotICAgIHJldHVybiBTdHJpbmc6
OmZyb21VVEY4KENfKCJNZW51IGl0ZW0gbGFiZWwgZm9yIGFuIGF1ZGlvIHRyYWNrIHRoYXQgaGFz
IG5vIG90aGVyIG5hbWUiLCAiTm8gbGFiZWwiKSk7Ci19Ci0jZW5kaWYKLQotU3RyaW5nIHNuYXBz
aG90dGVkUGx1Z0luTGFiZWxUaXRsZSgpCi17Ci0gICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgo
Q18oIlNuYXBzaG90dGVkIFBsdWctSW4iLCAiVGl0bGUgb2YgdGhlIGxhYmVsIHRvIHNob3cgb24g
YSBzbmFwc2hvdHRlZCBwbHVnLWluIikpOwotfQotCi1TdHJpbmcgc25hcHNob3R0ZWRQbHVnSW5M
YWJlbFN1YnRpdGxlKCkKLXsKLSAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChDXygiQ2xpY2sg
dG8gcmVzdGFydCIsICJTdWJ0aXRsZSBvZiB0aGUgbGFiZWwgdG8gc2hvdyBvbiBhIHNuYXBzaG90
dGVkIHBsdWctaW4iKSk7Ci19Ci0KLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9DTWFrZUxpc3RzLnR4dAppbmRleCBlNDQ5MzRkZDZj
Yi4uYmE4MWMxMmYyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9w
by9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ01h
a2VMaXN0cy50eHQKQEAgLTI1LDYgKzI1LDkgQEAgYWRkX2N1c3RvbV9jb21tYW5kKAogICAgICAg
ICAgICAgLS1wYWNrYWdlLW5hbWU9IndlYmtpdGd0ayIKICAgICAgICAgICAgIC0ta2V5d29yZD1f
CiAgICAgICAgICAgICAtLWtleXdvcmQ9Tl8KKyAgICAgICAgICAgIC0ta2V5d29yZD1XRUJfVUlf
U1RSSU5HOjEKKyAgICAgICAgICAgIC0ta2V5d29yZD1XRUJfVUlfU1RSSU5HX0tFWTozYywxCisg
ICAgICAgICAgICAtLWtleXdvcmQ9V0VCX1VJX1NUUklOR19XSVRIX01ORU1PTklDOjIKICAgICAg
ICAgICAgIC0tZnJvbS1jb2RlPVVURi04CiAgICAgICAgICAgICAtbyAke3BvdF9maWxlfQogICAg
IFdPUktJTkdfRElSRUNUT1JZICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS8uLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL3BvL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9DaGFuZ2VMb2cKaW5kZXggNGJhNjViOTRkOWEuLjY4NzQw
ZGI4MGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxNy0wMy0xNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byB1c2UgV0VCX1VJX1NUUklO
RyBtYWNyb3MgdG8gbWFyayB0cmFuc2xhdGFibGUgc3RyaW5ncyBpbiBnbGliIGJhc2VkIHBvcnRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk2NzIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OiBBZGQga2V5d29yZCBwYXJhbWV0ZXJzIGZvciBXRUJfVUlfU1RSSU5HIG1hY3Jv
cy4KKyAgICAgICAgKiBQT1RGSUxFUy5pbjogQWRkIExvY2FsaXplZFN0cmluZ3MuY3BwIHRvIHRo
ZSBsaXN0LgorCiAyMDE3LTAzLTEzICBKb3NlZiBBbmRlcnNzb24gIDxsMTBubDE4bnN3ZWphQGdt
YWlsLmNvbT4KIAogICAgICAgICBVcGRhdGVkIFN3ZWRpc2ggdHJhbnNsYXRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9QT1RGSUxFUy5pbiBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9QT1RGSUxFUy5pbgppbmRleCA4MTIyMTEyOGIxYy4uODcx
MDEyMDE0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9wby9QT1RG
SUxFUy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvcG8vUE9URklMRVMuaW4K
QEAgLTEsNiArMSw3IEBACiAjIExpc3Qgb2Ygc291cmNlIGZpbGVzIHdoaWNoIGNvbnRhaW4gdHJh
bnNsYXRhYmxlIHN0cmluZ3MuCiBFcnJvcnNHdGsuY3BwCiBMb2NhbGl6ZWRTdHJpbmdzR3RrLmNw
cAorLi4vTG9jYWxpemVkU3RyaW5ncy5jcHAKIC4uLy4uLy4uL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0QXV0aGVudGljYXRpb25EaWFsb2cuY3BwCiAuLi8uLi8uLi9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERvd25sb2FkLmNwcAogLi4vLi4vLi4vV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKaW5kZXggNGRjNjk4
Yjk2YWIuLjRiZWZmMzAxYjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogCisjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJXZWJDb3JlSW5zdGFuY2VIYW5kbGUuaCIKICNpbmNs
dWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KQEAgLTU5LDQgKzYw
LDIzIEBAIFN0cmluZyBsb2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhcioga2V5KQogI2VuZGlmCiB9
CiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdT
ZWFyY2hXZWIoKQoreworICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJTZWFyY2ggd2l0aCBHb29n
bGUiLCAiU2VhcmNoIHdpdGggR29vZ2xlIGNvbnRleHQgbWVudSBpdGVtIik7Cit9CisjZW5kaWYK
KworU3RyaW5nIHVwbG9hZEZpbGVUZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiAidXBsb2FkIjsKK30KKworU3RyaW5nIGFsbEZpbGVzVGV4dCgpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gImFsbCBmaWxlcyI7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUK
</data>
<flag name="review"
          id="326025"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>