<?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>161363</bug_id>
          
          <creation_ts>2016-08-29 17:06:22 -0700</creation_ts>
          <short_desc>Add runtime flag for using URLParser</short_desc>
          <delta_ts>2016-09-01 11:40:20 -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>New Bugs</component>
          <version>WebKit Nightly 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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>mcatanzaro</cc>
    
    <cc>ossy</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1224450</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-08-29 17:06:22 -0700</bug_when>
    <thetext>Add compile flag for using URLParser</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224453</commentid>
    <comment_count>1</comment_count>
      <attachid>287355</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-08-29 17:14:37 -0700</bug_when>
    <thetext>Created attachment 287355
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224502</commentid>
    <comment_count>2</comment_count>
      <attachid>287370</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-08-29 21:03:06 -0700</bug_when>
    <thetext>Created attachment 287370
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224597</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-08-30 10:12:16 -0700</bug_when>
    <thetext>Is there anyway to do this without using a compile time flag? I would really like this to be runtime switchable for testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224678</commentid>
    <comment_count>4</comment_count>
      <attachid>287424</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-08-30 13:45:09 -0700</bug_when>
    <thetext>Created attachment 287424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224708</commentid>
    <comment_count>5</comment_count>
      <attachid>287431</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-08-30 14:26:33 -0700</bug_when>
    <thetext>Created attachment 287431
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224737</commentid>
    <comment_count>6</comment_count>
      <attachid>287431</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-08-30 15:10:10 -0700</bug_when>
    <thetext>Comment on attachment 287431
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=287431&amp;action=review

&gt; Source/WebCore/platform/cocoa/URLParserCocoa.mm:35
&gt; +bool URLParser::URLParserEnabled()
&gt; +{
&gt; +    static bool use = [[NSUserDefaults standardUserDefaults] boolForKey:@&quot;URLParserEnabled&quot;];
&gt; +    return use;
&gt; +}

Doesn&apos;t this already happen in your WK2 code? Should it happen? (I thought common wisdom was NO)

&gt; Source/WebKit2/Shared/Cocoa/WebKit2InitializeCocoa.mm:40
&gt; +        WTFLogAlways(&quot;ENABLED %d&quot;, getpid());

NOPE

&gt; Source/WebKit2/Shared/Cocoa/WebKit2InitializeCocoa.mm:41
&gt; +        URLParser::setEnabled([[NSUserDefaults standardUserDefaults] boolForKey:@&quot;URLParserEnabled&quot;]);

I thought nope...?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224754</commentid>
    <comment_count>7</comment_count>
      <attachid>287443</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-08-30 15:54:29 -0700</bug_when>
    <thetext>Created attachment 287443
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1224972</commentid>
    <comment_count>8</comment_count>
      <attachid>287515</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-08-31 09:39:04 -0700</bug_when>
    <thetext>Created attachment 287515
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225041</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-08-31 12:46:20 -0700</bug_when>
    <thetext>I don&apos;t know why efl builds and gtk doesn&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225052</commentid>
    <comment_count>10</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-08-31 12:58:47 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; I don&apos;t know why efl builds and gtk doesn&apos;t.

The new file needs to be added to PluginProcessGTK2_SOURCES in WebKit2/PlatformGTK.cmake. It has to be built twice, unfortunately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225055</commentid>
    <comment_count>11</comment_count>
      <attachid>287533</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-08-31 13:18:38 -0700</bug_when>
    <thetext>Created attachment 287533
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225059</commentid>
    <comment_count>12</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-08-31 13:21:47 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/205266</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225327</commentid>
    <comment_count>13</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-09-01 08:49:01 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; http://trac.webkit.org/changeset/205266

The build is broken on Apple Mac cmake bot:

/Volumes/Data/slave/elcapitan-cmake-debug/build/Source/WebCore/platform/cocoa/URLParserCocoa.mm:31:17: error: out-of-line definition of &apos;URLParserEnabled&apos; does not match any declaration in &apos;WebCore::URLParser&apos;
bool URLParser::URLParserEnabled()
                ^~~~~~~~~~~~~~~~</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1225426</commentid>
    <comment_count>14</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-09-01 11:40:20 -0700</bug_when>
    <thetext>r205302</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287355</attachid>
            <date>2016-08-29 17:14:37 -0700</date>
            <delta_ts>2016-08-29 21:01:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161363-20160829171227.patch</filename>
            <type>text/plain</type>
            <size>12448</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTE2MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE2LTA4LTI5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGNvbXBp
bGUgZmxhZyBmb3IgdXNpbmcgVVJMUGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEzNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuICBObyBjaGFuZ2UgaW4gYmVoYXZpb3Iu
CisgICAgICAgIFVTRShVUkxfUEFSU0VSKSBpcyBvZmYgYnkgZGVmYXVsdC4KKyAgICAgICAgVGhp
cyBqdXN0IGFsbG93cyBtZSB0byB0ZXN0IHVzaW5nIHRoZSBuZXcgVVJMUGFyc2VyIGVhc2llci4K
KworICAgICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6CisgICAgICAgIElnbm9yZSBzb21lIHdhcm5p
bmdzIGlmIHdlJ3JlIHVzaW5nIHRoZSBVUkxQYXJzZXIuICBUaGlzIGlzIGNsZWFuZXIgdGhhbiBw
dXR0aW5nICNpZiBVU0UoVVJMX1BBUlNFUikgCisgICAgICAgIGFyb3VuZCBldmVyeSBsaXR0bGUg
ZnVuY3Rpb24gdGhhdCBpcyBvbmx5IHVzZWQgZm9yIHRoZSBleGlzdGluZyBVUkw6OnBhcnNlLiAg
VGhlIGlnbm9yaW5nIG9mIAorICAgICAgICAtV21pc3Npbmctbm9yZXR1cm4gaXMgbmVlZGVkIGZv
ciB0aGUgQVNTRVJUX05PVF9SRUFDSEVEKClzLiAgSXQncyBraW5kIG9mIGEgbWVzcyByaWdodCBu
b3csIGJ1dCBpdCdsbAorICAgICAgICBhbGwgYmUgY2xlYW5lZCB1cCBvbmNlIHdlIHN3aXRjaCB0
byB0aGUgVVJMUGFyc2VyLgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpVUkwpOgorICAgICAgICAo
V2ViQ29yZTo6VVJMOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6c2V0UHJvdG9jb2wp
OgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpzZXRIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OlVS
TDo6cmVtb3ZlUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OnNldFBvcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6VVJMOjpzZXRIb3N0QW5kUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpVUkw6
OnNldFVzZXIpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpzZXRQYXNzKToKKyAgICAgICAgKFdl
YkNvcmU6OlVSTDo6c2V0RnJhZ21lbnRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlVS
TDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6c2V0
UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OnBhcnNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9VUkxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpwYXJzZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vVVJMUGFyc2VyLmg6CisgICAgICAgIEFkZCBzb21lIHVzZWZ1bCBs
b2dnaW5nLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9VUkxNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpVUkw6OlVSTCk6CisgICAgICAgIFVzZSB0aGUgbmV3IFVSTFBhcnNlciBpZiBpdCBpcyBl
bmFibGVkLgorCiAyMDE2LTA4LTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVncmVzc2lvbihyMjA0OTIzKTogSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHNl
dCAnTG9jYXRpb24uaHJlZicgY3Jvc3Mgb3JpZ2luCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9VUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5j
cHAJKHJldmlzaW9uIDIwNTA5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJEZWNvZGVFc2NhcGVT
ZXF1ZW5jZXMuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiVGV4
dEVuY29kaW5nLmgiCisjaW5jbHVkZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSAiVVVJRC5oIgog
I2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91aWRuYS5oPgpAQCAtNDEsNiAr
NDIsMTMgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCisjaWYgQ09NUElMRVIoR0NDX09SX0NMQU5HKSAmJiBV
U0UoVVJMX1BBUlNFUikKKy8vIEZJWE1FOiBHZXQgcmlkIG9mIG1hbnkgdW51c2VkIGZ1bmN0aW9u
cyBvbmNlIHdlIHN3aXRjaCB0byB1c2luZyB0aGUgVVJMUGFyc2VyLgorI3ByYWdtYSBHQ0MgZGlh
Z25vc3RpYyBwdXNoCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLWZ1
bmN0aW9uIgorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV21pc3Npbmctbm9yZXR1
cm4iCisjZW5kaWYKKwogLy8gRklYTUU6IFRoaXMgZmlsZSBtYWtlcyB0b28gbXVjaCB1c2Ugb2Yg
dGhlICsgb3BlcmF0b3Igb24gU3RyaW5nLgogLy8gV2UgZWl0aGVyIGhhdmUgdG8gb3B0aW1pemUg
dGhhdCBvcGVyYXRvciBzbyBpdCBkb2Vzbid0IGludm9sdmUKIC8vIHNvIG1hbnkgYWxsb2NhdGlv
bnMsIG9yIGNoYW5nZSB0aGlzIHRvIHVzZSBTdHJpbmdCdWZmZXIgaW5zdGVhZC4KQEAgLTQzOCwy
NyArNDQ2LDQ3IEBAIHZvaWQgVVJMOjppbnZhbGlkYXRlKCkKIAogVVJMOjpVUkwoUGFyc2VkVVJM
U3RyaW5nVGFnLCBjb25zdCBTdHJpbmcmIHVybCkKIHsKKyNpZiBVU0UoVVJMX1BBUlNFUikKKyAg
ICBVUkxQYXJzZXIgcGFyc2VyOworICAgICp0aGlzID0gcGFyc2VyLnBhcnNlKHVybCk7CisjZWxz
ZQogICAgIHBhcnNlKHVybCk7CisjZW5kaWYKKworI2lmIFVTRShVUkxfUEFSU0VSKQorICAgIEFT
U0VSVCh1cmwuaXNFbXB0eSgpICYmIG1fc3RyaW5nLmlzRW1wdHkoKSB8fCB1cmwgPT0gbV9zdHJp
bmcpOyAvLyBGSVhNRTogSW52ZXN0aWdhdGUgcGFyc2luZyBub24tbnVsbCBlbXB0eSBQYXJzZWRV
UkxTdHJpbmdzLgorI2Vsc2UKICNpZiBPUyhXSU5ET1dTKQogICAgIC8vIEZJWE1FKDE0ODU5OCk6
IFdvcmsgYXJvdW5kIFdpbmRvd3MgbG9jYWwgZmlsZSBoYW5kbGluZyBidWcgaW4gQ0ZOZXR3b3Jr
CiAgICAgQVNTRVJUKGlzTG9jYWxGaWxlKCkgfHwgdXJsID09IG1fc3RyaW5nKTsKICNlbHNlCiAg
ICAgQVNTRVJUKHVybCA9PSBtX3N0cmluZyk7CiAjZW5kaWYKKyNlbmRpZgogfQogCiBVUkw6OlVS
TChjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmUpCiB7CisjaWYgVVNFKFVS
TF9QQVJTRVIpCisgICAgVVJMUGFyc2VyIHBhcnNlcjsKKyAgICAqdGhpcyA9IHBhcnNlci5wYXJz
ZShyZWxhdGl2ZSwgYmFzZSk7CisjZWxzZQogICAgIGluaXQoYmFzZSwgcmVsYXRpdmUsIFVURjhF
bmNvZGluZygpKTsKKyNlbmRpZgogfQogCiBVUkw6OlVSTChjb25zdCBVUkwmIGJhc2UsIGNvbnN0
IFN0cmluZyYgcmVsYXRpdmUsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcpCiB7Ci0gICAg
Ly8gRm9yIFVURi17NywxNiwzMn0sIHdlIHdhbnQgdG8gdXNlIFVURi04IGZvciB0aGUgcXVlcnkg
cGFydCBhcyAKKyNpZiBVU0UoVVJMX1BBUlNFUikKKyAgICBVUkxQYXJzZXIgcGFyc2VyOworICAg
ICp0aGlzID0gcGFyc2VyLnBhcnNlKHJlbGF0aXZlLCBiYXNlLCBlbmNvZGluZyk7CisjZWxzZQor
ICAgIC8vIEZvciBVVEYtezcsMTYsMzJ9LCB3ZSB3YW50IHRvIHVzZSBVVEYtOCBmb3IgdGhlIHF1
ZXJ5IHBhcnQgYXMKICAgICAvLyB3ZSBkbyB3aGVuIHN1Ym1pdHRpbmcgYSBmb3JtLiBBIGZvcm0g
d2l0aCBHRVQgbWV0aG9kCiAgICAgLy8gaGFzIGl0cyBjb250ZW50cyBhZGRlZCB0byBhIFVSTCBh
cyBxdWVyeSBwYXJhbXMgYW5kIGl0IG1ha2VzIHNlbnNlCiAgICAgLy8gdG8gYmUgY29uc2lzdGVu
dC4KICAgICBpbml0KGJhc2UsIHJlbGF0aXZlLCBlbmNvZGluZy5lbmNvZGluZ0ZvckZvcm1TdWJt
aXNzaW9uKCkpOworI2VuZGlmCiB9CiAKIHN0YXRpYyBib29sIHNob3VsZFRyaW1Gcm9tVVJMKFVD
aGFyIGMpCkBAIC00NzEsNiArNDk5LDkgQEAgc3RhdGljIGJvb2wgc2hvdWxkVHJpbUZyb21VUkwo
VUNoYXIgYykKIAogdm9pZCBVUkw6OmluaXQoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcm
IHJlbGF0aXZlLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKQogeworI2lmIFVTRShVUkxf
UEFSU0VSKQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCiAgICAgLy8gQWxsb3cg
cmVzb2x1dGlvbnMgd2l0aCBhIG51bGwgb3IgZW1wdHkgYmFzZSBVUkwsIGJ1dCBub3Qgd2l0aCBh
bnkgb3RoZXIgaW52YWxpZCBvbmUuCiAgICAgLy8gRklYTUU6IElzIHRoaXMgYSBnb29kIHJ1bGU/
CiAgICAgaWYgKCFiYXNlLm1faXNWYWxpZCAmJiAhYmFzZS5pc0VtcHR5KCkpIHsKQEAgLTgyOSwx
MSArODYwLDIxIEBAIGJvb2wgVVJMOjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHMpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV9pc1ZhbGlkKSB7CisjaWYgVVNFKFVSTF9Q
QVJTRVIpCisgICAgICAgIFVSTFBhcnNlciBwYXJzZXI7CisgICAgICAgICp0aGlzID0gcGFyc2Vy
LnBhcnNlKG1ha2VTdHJpbmcobmV3UHJvdG9jb2wsICI6IiwgbV9zdHJpbmcpKTsKKyNlbHNlCiAg
ICAgICAgIHBhcnNlKG5ld1Byb3RvY29sICsgJzonICsgbV9zdHJpbmcpOworI2VuZGlmCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorI2lmIFVTRShVUkxfUEFSU0VSKQorICAgIFVSTFBh
cnNlciBwYXJzZXI7CisgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobWFrZVN0cmluZyhuZXdQcm90
b2NvbCwgbV9zdHJpbmcuc3Vic3RyaW5nKG1fc2NoZW1lRW5kKSkpOworI2Vsc2UKICAgICBwYXJz
ZShuZXdQcm90b2NvbCArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3NjaGVtZUVuZCkpOworI2VuZGlm
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTkwMCwxNCArOTQxLDI0IEBAIHZvaWQgVVJMOjpz
ZXRIb3N0KGNvbnN0IFN0cmluZyYgcykKICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KGVu
Y29kZWRIb3N0TmFtZS5kYXRhKCksIGVuY29kZWRIb3N0TmFtZS5zaXplKCkpKTsKICAgICBidWls
ZGVyLmFwcGVuZChtX3N0cmluZy5zdWJzdHJpbmcobV9ob3N0RW5kKSk7CiAgICAgCisjaWYgVVNF
KFVSTF9QQVJTRVIpCisgICAgVVJMUGFyc2VyIHBhcnNlcjsKKyAgICAqdGhpcyA9IHBhcnNlci5w
YXJzZShidWlsZGVyLnRvU3RyaW5nKCkpOworI2Vsc2UKICAgICBwYXJzZShidWlsZGVyLnRvU3Ry
aW5nKCkpOworI2VuZGlmCiB9CiAKIHZvaWQgVVJMOjpyZW1vdmVQb3J0KCkKIHsKICAgICBpZiAo
bV9ob3N0RW5kID09IG1fcG9ydEVuZCkKICAgICAgICAgcmV0dXJuOworI2lmIFVTRShVUkxfUEFS
U0VSKQorICAgIFVSTFBhcnNlciBwYXJzZXI7CisgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobV9z
dHJpbmcubGVmdChtX2hvc3RFbmQpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOwor
I2Vsc2UKICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1faG9zdEVuZCkgKyBtX3N0cmluZy5zdWJz
dHJpbmcobV9wb3J0RW5kKSk7CisjZW5kaWYKIH0KIAogdm9pZCBVUkw6OnNldFBvcnQodW5zaWdu
ZWQgc2hvcnQgaSkKQEAgLTkxOCw3ICs5NjksMTEgQEAgdm9pZCBVUkw6OnNldFBvcnQodW5zaWdu
ZWQgc2hvcnQgaSkKICAgICBib29sIGNvbG9uTmVlZGVkID0gbV9wb3J0RW5kID09IG1faG9zdEVu
ZDsKICAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBtX2hvc3RFbmQgOiBt
X2hvc3RFbmQgKyAxKTsKIAorI2lmIFVTRShVUkxfUEFSU0VSKQorICAgIHBhcnNlKG1ha2VTdHJp
bmcobV9zdHJpbmcubGVmdChwb3J0U3RhcnQpLCAoY29sb25OZWVkZWQgPyAiOiIgOiAiIiksIFN0
cmluZzo6bnVtYmVyKGkpLCBtX3N0cmluZy5zdWJzdHJpbmcobV9wb3J0RW5kKSkpOworI2Vsc2UK
ICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KHBvcnRTdGFydCkgKyAoY29sb25OZWVkZWQgPyAiOiIg
OiAiIikgKyBTdHJpbmc6Om51bWJlcihpKSArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQp
KTsKKyNlbmRpZgogfQogCiB2b2lkIFVSTDo6c2V0SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJiBo
b3N0QW5kUG9ydCkKQEAgLTk1OSw3ICsxMDE0LDEyIEBAIHZvaWQgVVJMOjpzZXRIb3N0QW5kUG9y
dChjb25zdCBTdHJpbmcmIGgKICAgICB9CiAgICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcuc3Vi
c3RyaW5nKG1fcG9ydEVuZCkpOwogCisjaWYgVVNFKFVSTF9QQVJTRVIpCisgICAgVVJMUGFyc2Vy
IHBhcnNlcjsKKyAgICAqdGhpcyA9IHBhcnNlci5wYXJzZShidWlsZGVyLnRvU3RyaW5nKCkpOwor
I2Vsc2UKICAgICBwYXJzZShidWlsZGVyLnRvU3RyaW5nKCkpOworI2VuZGlmCiB9CiAKIHZvaWQg
VVJMOjpzZXRVc2VyKGNvbnN0IFN0cmluZyYgdXNlcikKQEAgLTk3OCwxNCArMTAzOCwyNSBAQCB2
b2lkIFVSTDo6c2V0VXNlcihjb25zdCBTdHJpbmcmIHVzZXIpCiAgICAgICAgIC8vIEFkZCAnQCcg
aWYgd2UgZGlkbid0IGhhdmUgb25lIGJlZm9yZS4KICAgICAgICAgaWYgKGVuZCA9PSBtX2hvc3RF
bmQgfHwgKGVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0gIT0gJ0AnKSkKICAg
ICAgICAgICAgIHUuYXBwZW5kKCdAJyk7CisjaWYgVVNFKFVSTF9QQVJTRVIpCisgICAgICAgIFVS
TFBhcnNlciBwYXJzZXI7CisgICAgICAgICp0aGlzID0gcGFyc2VyLnBhcnNlKG1ha2VTdHJpbmco
bV9zdHJpbmcubGVmdChtX3VzZXJTdGFydCksIHUsIG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKSk7
CisjZWxzZQogICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fdXNlclN0YXJ0KSArIHUgKyBt
X3N0cmluZy5zdWJzdHJpbmcoZW5kKSk7CisjZW5kaWYKICAgICB9IGVsc2UgewogICAgICAgICAv
LyBSZW1vdmUgJ0AnIGlmIHdlIG5vdyBoYXZlIG5laXRoZXIgdXNlciBub3IgcGFzc3dvcmQuCiAg
ICAgICAgIGlmIChtX3VzZXJFbmQgPT0gbV9wYXNzd29yZEVuZCAmJiBlbmQgIT0gbV9ob3N0RW5k
ICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0AnKQogICAgICAgICAgICAgZW5kICs9IDE7CiAgICAgICAg
IC8vIFdlIGRvbid0IHdhbnQgdG8gcGFyc2UgaW4gdGhlIGV4dHJlbWVseSBjb21tb24gY2FzZSB3
aGVyZSB3ZSBhcmUgbm90IGdvaW5nIHRvIG1ha2UgYSBjaGFuZ2UuCi0gICAgICAgIGlmIChtX3Vz
ZXJTdGFydCAhPSBlbmQpCisgICAgICAgIGlmIChtX3VzZXJTdGFydCAhPSBlbmQpIHsKKyNpZiBV
U0UoVVJMX1BBUlNFUikKKyAgICAgICAgICAgIFVSTFBhcnNlciBwYXJzZXI7CisgICAgICAgICAg
ICAqdGhpcyA9IHBhcnNlci5wYXJzZShtYWtlU3RyaW5nKG1fc3RyaW5nLmxlZnQobV91c2VyU3Rh
cnQpLCBtX3N0cmluZy5zdWJzdHJpbmcoZW5kKSkpOworI2Vsc2UKICAgICAgICAgICAgIHBhcnNl
KG1fc3RyaW5nLmxlZnQobV91c2VyU3RhcnQpICsgbV9zdHJpbmcuc3Vic3RyaW5nKGVuZCkpOwor
I2VuZGlmCisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTEwMDIsMTQgKzEwNzMsMjUgQEAgdm9p
ZCBVUkw6OnNldFBhc3MoY29uc3QgU3RyaW5nJiBwYXNzd29yZAogICAgICAgICAvLyBFYXQgdGhl
IGV4aXN0aW5nICdAJyBzaW5jZSB3ZSBhcmUgZ29pbmcgdG8gYWRkIG91ciBvd24uCiAgICAgICAg
IGlmIChlbmQgIT0gbV9ob3N0RW5kICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0AnKQogICAgICAgICAg
ICAgZW5kICs9IDE7CisjaWYgVVNFKFVSTF9QQVJTRVIpCisgICAgICAgIFVSTFBhcnNlciBwYXJz
ZXI7CisgICAgICAgICp0aGlzID0gcGFyc2VyLnBhcnNlKG1ha2VTdHJpbmcobV9zdHJpbmcubGVm
dChtX3VzZXJFbmQpLCBwLCBtX3N0cmluZy5zdWJzdHJpbmcoZW5kKSkpOworI2Vsc2UKICAgICAg
ICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3VzZXJFbmQpICsgcCArIG1fc3RyaW5nLnN1YnN0cmlu
ZyhlbmQpKTsKKyNlbmRpZgogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFJlbW92ZSAnQCcgaWYg
d2Ugbm93IGhhdmUgbmVpdGhlciB1c2VyIG5vciBwYXNzd29yZC4KICAgICAgICAgaWYgKG1fdXNl
clN0YXJ0ID09IG1fdXNlckVuZCAmJiBlbmQgIT0gbV9ob3N0RW5kICYmIG1fc3RyaW5nW2VuZF0g
PT0gJ0AnKQogICAgICAgICAgICAgZW5kICs9IDE7CiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQg
dG8gcGFyc2UgaW4gdGhlIGV4dHJlbWVseSBjb21tb24gY2FzZSB3aGVyZSB3ZSBhcmUgbm90IGdv
aW5nIHRvIG1ha2UgYSBjaGFuZ2UuCi0gICAgICAgIGlmIChtX3VzZXJFbmQgIT0gZW5kKQorICAg
ICAgICBpZiAobV91c2VyRW5kICE9IGVuZCkgeworI2lmIFVTRShVUkxfUEFSU0VSKQorICAgICAg
ICAgICAgVVJMUGFyc2VyIHBhcnNlcjsKKyAgICAgICAgICAgICp0aGlzID0gcGFyc2VyLnBhcnNl
KG1ha2VTdHJpbmcobV9zdHJpbmcubGVmdChtX3VzZXJFbmQpLCBtX3N0cmluZy5zdWJzdHJpbmco
ZW5kKSkpOworI2Vsc2UKICAgICAgICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV91c2VyRW5k
KSArIG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKTsKKyNlbmRpZgorICAgICAgICB9CiAgICAgfQog
fQogCkBAIC0xMDE5LDE0ICsxMTAxLDI1IEBAIHZvaWQgVVJMOjpzZXRGcmFnbWVudElkZW50aWZp
ZXIoY29uc3QgU3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IE5vbi1BU0NJSSBj
aGFyYWN0ZXJzIG11c3QgYmUgZW5jb2RlZCBhbmQgZXNjYXBlZCB0byBtYXRjaCBwYXJzZSgpIGV4
cGVjdGF0aW9ucy4KKyNpZiBVU0UoVVJMX1BBUlNFUikKKyAgICBVUkxQYXJzZXIgcGFyc2VyOwor
ICAgICp0aGlzID0gcGFyc2VyLnBhcnNlKG1ha2VTdHJpbmcobV9zdHJpbmcubGVmdChtX3F1ZXJ5
RW5kKSwgIiMiLCBzKSk7CisjZWxzZQogICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9xdWVyeUVu
ZCkgKyAiIyIgKyBzKTsKKyNlbmRpZgogfQogCiB2b2lkIFVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVu
dGlmaWVyKCkKIHsKICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJuOworI2lmIFVT
RShVUkxfUEFSU0VSKQorICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgbmVlZCB0byBwYXJzZSBo
ZXJlLgorICAgIFVSTFBhcnNlciBwYXJzZXI7CisgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobV9z
dHJpbmcubGVmdChtX3F1ZXJ5RW5kKSk7CisjZWxzZQogICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQo
bV9xdWVyeUVuZCkpOworI2VuZGlmCiB9CiAgICAgCiB2b2lkIFVSTDo6c2V0UXVlcnkoY29uc3Qg
U3RyaW5nJiBxdWVyeSkKQEAgLTEwNTYsNyArMTE0OSwxMiBAQCB2b2lkIFVSTDo6c2V0UGF0aChj
b25zdCBTdHJpbmcmIHMpCiAgICAgaWYgKHBhdGguaXNFbXB0eSgpIHx8IHBhdGhbMF0gIT0gJy8n
KQogICAgICAgICBwYXRoID0gIi8iICsgcGF0aDsKIAorI2lmIFVTRShVUkxfUEFSU0VSKQorICAg
IFVSTFBhcnNlciBwYXJzZXI7CisgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobWFrZVN0cmluZyht
X3N0cmluZy5sZWZ0KG1fcG9ydEVuZCksIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMocGF0
aCksIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BhdGhFbmQpKSk7CisjZWxzZQogICAgIHBhcnNlKG1f
c3RyaW5nLmxlZnQobV9wb3J0RW5kKSArIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMocGF0
aCkgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9wYXRoRW5kKSk7CisjZW5kaWYKIH0KIAogU3RyaW5n
IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmIHN0cmluZykKQEAgLTExODcs
NiArMTI4NSw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBoYXNTbGFzaERvdE9yRG90RG90KGMKIAog
dm9pZCBVUkw6OnBhcnNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogeworI2lmIFVTRShVUkxfUEFS
U0VSKQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCiAgICAgY2hlY2tFbmNvZGVk
U3RyaW5nKHN0cmluZyk7CiAKICAgICBDaGFyQnVmZmVyIGJ1ZmZlcihzdHJpbmcubGVuZ3RoKCkg
KyAxKTsKQEAgLTEzNTQsNiArMTQ1NSw5IEBAIHN0YXRpYyBib29sIGlzQ2Fub25pY2FsSG9zdG5h
bWVMb3dlcmNhc2UKIAogdm9pZCBVUkw6OnBhcnNlKGNvbnN0IGNoYXIqIHVybCwgY29uc3QgU3Ry
aW5nKiBvcmlnaW5hbFN0cmluZykKIHsKKyNpZiBVU0UoVVJMX1BBUlNFUikKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyNlbmRpZgogICAgIGlmICghdXJsIHx8IHVybFswXSA9PSAnXDAnKSB7
CiAgICAgICAgIC8vIHZhbGlkIFVSTCBtdXN0IGJlIG5vbi1lbXB0eQogICAgICAgICBtX3N0cmlu
ZyA9IG9yaWdpbmFsU3RyaW5nID8gKm9yaWdpbmFsU3RyaW5nIDogdXJsOwpAQCAtMjMwMSw0ICsy
NDA1LDggQEAgVVJMIFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChjb25zdAogICAgIHJl
dHVybiBVUkwoVVJMKCksICJmaWxlOi8vLyIgKyBmaWxlUGF0aCk7CiB9CiAKKyNpZiBDT01QSUxF
UihHQ0NfT1JfQ0xBTkcpICYmIFVTRShVUkxfUEFSU0VSKQorI3ByYWdtYSBHQ0MgZGlhZ25vc3Rp
YyBwb3AKKyNlbmRpZgorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJz
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5j
cHAJKHJldmlzaW9uIDIwNTE0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw2ICsxMzAsNyBAQCB2b2lkIFVSTFBhcnNlcjo6
Y29weVVSTFBhcnRzVW50aWwoY29uc3QgCiAgICAgCiBVUkwgVVJMUGFyc2VyOjpwYXJzZShjb25z
dCBTdHJpbmcmIGlucHV0LCBjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFRleHRFbmNvZGluZyYpCiB7
CisgICAgTE9HKFVSTFBhcnNlciwgIlBhcnNpbmcgVVJMIDwlcz4gYmFzZSA8JXM+IiwgaW5wdXQu
dXRmOCgpLmRhdGEoKSwgYmFzZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBtX3VybCA9
IHsgfTsKICAgICBtX2J1ZmZlci5jbGVhcigpOwogICAgIG1fYXV0aG9yaXR5T3JIb3N0QnVmZmVy
LmNsZWFyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuaAkocmV2aXNpb24g
MjA1MDk3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDYgKzMyLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjZGVmaW5l
IFVTRV9VUkxfUEFSU0VSIDAKKwogY2xhc3MgVVJMUGFyc2VyIHsKIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBVUkwgcGFyc2UoY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJiA9IHsgfSwgY29u
c3QgVGV4dEVuY29kaW5nJiA9IFVURjhFbmNvZGluZygpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9VUkxNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1VSTE1hYy5tbQkocmV2aXNpb24gMjA1MDk3KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1VSTE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAog
I2ltcG9ydCAiVVJMLmgiCiAKICNpbXBvcnQgIkNGVVJMRXh0cmFzLmgiCisjaW1wb3J0ICJVUkxQ
YXJzZXIuaCIKICNpbXBvcnQgPHd0Zi9PYmpjUnVudGltZUV4dHJhcy5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogCkBAIC00Miw3ICs0MywxMiBAQCBVUkw6OlVSTChOU1VSTCAqdXJs
KQogICAgIC8vIEZJWE1FOiBXaHkgaXMgaXQgT0sgdG8gaWdub3JlIGJhc2UgVVJMIGhlcmU/CiAg
ICAgQ1N0cmluZyB1cmxCeXRlczsKICAgICBnZXRVUkxCeXRlcyhyZWludGVycHJldF9jYXN0PENG
VVJMUmVmPih1cmwpLCB1cmxCeXRlcyk7CisjaWYgVVNFKFVSTF9QQVJTRVIpCisgICAgVVJMUGFy
c2VyIHBhcnNlcjsKKyAgICAqdGhpcyA9IHBhcnNlci5wYXJzZSh1cmxCeXRlcy5kYXRhKCkpOwor
I2Vsc2UKICAgICBwYXJzZSh1cmxCeXRlcy5kYXRhKCkpOworI2VuZGlmCiB9CiAKIFVSTDo6b3Bl
cmF0b3IgTlNVUkwgKigpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287370</attachid>
            <date>2016-08-29 21:03:06 -0700</date>
            <delta_ts>2016-08-30 13:45:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161363-20160829210055.patch</filename>
            <type>text/plain</type>
            <size>12486</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTE2MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE2LTA4LTI5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGNvbXBp
bGUgZmxhZyBmb3IgdXNpbmcgVVJMUGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEzNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuICBObyBjaGFuZ2UgaW4gYmVoYXZpb3Iu
CisgICAgICAgIFVTRShVUkxfUEFSU0VSKSBpcyBvZmYgYnkgZGVmYXVsdC4KKyAgICAgICAgVGhp
cyBqdXN0IGFsbG93cyBtZSB0byB0ZXN0IHVzaW5nIHRoZSBuZXcgVVJMUGFyc2VyIGVhc2llci4K
KworICAgICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6CisgICAgICAgIElnbm9yZSBzb21lIHdhcm5p
bmdzIGlmIHdlJ3JlIHVzaW5nIHRoZSBVUkxQYXJzZXIuICBUaGlzIGlzIGNsZWFuZXIgdGhhbiBw
dXR0aW5nICNpZiBVU0UoVVJMX1BBUlNFUikgCisgICAgICAgIGFyb3VuZCBldmVyeSBsaXR0bGUg
ZnVuY3Rpb24gdGhhdCBpcyBvbmx5IHVzZWQgZm9yIHRoZSBleGlzdGluZyBVUkw6OnBhcnNlLiAg
VGhlIGlnbm9yaW5nIG9mIAorICAgICAgICAtV21pc3Npbmctbm9yZXR1cm4gaXMgbmVlZGVkIGZv
ciB0aGUgQVNTRVJUX05PVF9SRUFDSEVEKClzLiAgSXQncyBraW5kIG9mIGEgbWVzcyByaWdodCBu
b3csIGJ1dCBpdCdsbAorICAgICAgICBhbGwgYmUgY2xlYW5lZCB1cCBvbmNlIHdlIHN3aXRjaCB0
byB0aGUgVVJMUGFyc2VyLgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpVUkwpOgorICAgICAgICAo
V2ViQ29yZTo6VVJMOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6c2V0UHJvdG9jb2wp
OgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpzZXRIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OlVS
TDo6cmVtb3ZlUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OnNldFBvcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6VVJMOjpzZXRIb3N0QW5kUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpVUkw6
OnNldFVzZXIpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpzZXRQYXNzKToKKyAgICAgICAgKFdl
YkNvcmU6OlVSTDo6c2V0RnJhZ21lbnRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlVS
TDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6c2V0
UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OnBhcnNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9VUkxQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjpwYXJzZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vVVJMUGFyc2VyLmg6CisgICAgICAgIEFkZCBzb21lIHVzZWZ1bCBs
b2dnaW5nLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9VUkxNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpVUkw6OlVSTCk6CisgICAgICAgIFVzZSB0aGUgbmV3IFVSTFBhcnNlciBpZiBpdCBpcyBl
bmFibGVkLgorCiAyMDE2LTA4LTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVncmVzc2lvbihyMjA0OTIzKTogSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHNl
dCAnTG9jYXRpb24uaHJlZicgY3Jvc3Mgb3JpZ2luCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9VUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5j
cHAJKHJldmlzaW9uIDIwNTA5NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJEZWNvZGVFc2NhcGVT
ZXF1ZW5jZXMuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiVGV4
dEVuY29kaW5nLmgiCisjaW5jbHVkZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSAiVVVJRC5oIgog
I2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91aWRuYS5oPgpAQCAtNDEsNiAr
NDIsMTMgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCisjaWYgQ09NUElMRVIoR0NDX09SX0NMQU5HKSAmJiBV
U0UoVVJMX1BBUlNFUikKKy8vIEZJWE1FOiBHZXQgcmlkIG9mIG1hbnkgdW51c2VkIGZ1bmN0aW9u
cyBvbmNlIHdlIHN3aXRjaCB0byB1c2luZyB0aGUgVVJMUGFyc2VyLgorI3ByYWdtYSBHQ0MgZGlh
Z25vc3RpYyBwdXNoCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLWZ1
bmN0aW9uIgorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV21pc3Npbmctbm9yZXR1
cm4iCisjZW5kaWYKKwogLy8gRklYTUU6IFRoaXMgZmlsZSBtYWtlcyB0b28gbXVjaCB1c2Ugb2Yg
dGhlICsgb3BlcmF0b3Igb24gU3RyaW5nLgogLy8gV2UgZWl0aGVyIGhhdmUgdG8gb3B0aW1pemUg
dGhhdCBvcGVyYXRvciBzbyBpdCBkb2Vzbid0IGludm9sdmUKIC8vIHNvIG1hbnkgYWxsb2NhdGlv
bnMsIG9yIGNoYW5nZSB0aGlzIHRvIHVzZSBTdHJpbmdCdWZmZXIgaW5zdGVhZC4KQEAgLTQzOCwy
NyArNDQ2LDQ3IEBAIHZvaWQgVVJMOjppbnZhbGlkYXRlKCkKIAogVVJMOjpVUkwoUGFyc2VkVVJM
U3RyaW5nVGFnLCBjb25zdCBTdHJpbmcmIHVybCkKIHsKKyNpZiBVU0UoVVJMX1BBUlNFUikKKyAg
ICBVUkxQYXJzZXIgcGFyc2VyOworICAgICp0aGlzID0gcGFyc2VyLnBhcnNlKHVybCk7CisjZWxz
ZQogICAgIHBhcnNlKHVybCk7CisjZW5kaWYKKworI2lmIFVTRShVUkxfUEFSU0VSKQorICAgIEFT
U0VSVCh1cmwuaXNFbXB0eSgpICYmIG1fc3RyaW5nLmlzRW1wdHkoKSB8fCB1cmwgPT0gbV9zdHJp
bmcpOyAvLyBGSVhNRTogSW52ZXN0aWdhdGUgcGFyc2luZyBub24tbnVsbCBlbXB0eSBQYXJzZWRV
UkxTdHJpbmdzLgorI2Vsc2UKICNpZiBPUyhXSU5ET1dTKQogICAgIC8vIEZJWE1FKDE0ODU5OCk6
IFdvcmsgYXJvdW5kIFdpbmRvd3MgbG9jYWwgZmlsZSBoYW5kbGluZyBidWcgaW4gQ0ZOZXR3b3Jr
CiAgICAgQVNTRVJUKGlzTG9jYWxGaWxlKCkgfHwgdXJsID09IG1fc3RyaW5nKTsKICNlbHNlCiAg
ICAgQVNTRVJUKHVybCA9PSBtX3N0cmluZyk7CiAjZW5kaWYKKyNlbmRpZgogfQogCiBVUkw6OlVS
TChjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmUpCiB7CisjaWYgVVNFKFVS
TF9QQVJTRVIpCisgICAgVVJMUGFyc2VyIHBhcnNlcjsKKyAgICAqdGhpcyA9IHBhcnNlci5wYXJz
ZShyZWxhdGl2ZSwgYmFzZSk7CisjZWxzZQogICAgIGluaXQoYmFzZSwgcmVsYXRpdmUsIFVURjhF
bmNvZGluZygpKTsKKyNlbmRpZgogfQogCiBVUkw6OlVSTChjb25zdCBVUkwmIGJhc2UsIGNvbnN0
IFN0cmluZyYgcmVsYXRpdmUsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcpCiB7Ci0gICAg
Ly8gRm9yIFVURi17NywxNiwzMn0sIHdlIHdhbnQgdG8gdXNlIFVURi04IGZvciB0aGUgcXVlcnkg
cGFydCBhcyAKKyNpZiBVU0UoVVJMX1BBUlNFUikKKyAgICBVUkxQYXJzZXIgcGFyc2VyOworICAg
ICp0aGlzID0gcGFyc2VyLnBhcnNlKHJlbGF0aXZlLCBiYXNlLCBlbmNvZGluZyk7CisjZWxzZQor
ICAgIC8vIEZvciBVVEYtezcsMTYsMzJ9LCB3ZSB3YW50IHRvIHVzZSBVVEYtOCBmb3IgdGhlIHF1
ZXJ5IHBhcnQgYXMKICAgICAvLyB3ZSBkbyB3aGVuIHN1Ym1pdHRpbmcgYSBmb3JtLiBBIGZvcm0g
d2l0aCBHRVQgbWV0aG9kCiAgICAgLy8gaGFzIGl0cyBjb250ZW50cyBhZGRlZCB0byBhIFVSTCBh
cyBxdWVyeSBwYXJhbXMgYW5kIGl0IG1ha2VzIHNlbnNlCiAgICAgLy8gdG8gYmUgY29uc2lzdGVu
dC4KICAgICBpbml0KGJhc2UsIHJlbGF0aXZlLCBlbmNvZGluZy5lbmNvZGluZ0ZvckZvcm1TdWJt
aXNzaW9uKCkpOworI2VuZGlmCiB9CiAKIHN0YXRpYyBib29sIHNob3VsZFRyaW1Gcm9tVVJMKFVD
aGFyIGMpCkBAIC00NzEsNiArNDk5LDkgQEAgc3RhdGljIGJvb2wgc2hvdWxkVHJpbUZyb21VUkwo
VUNoYXIgYykKIAogdm9pZCBVUkw6OmluaXQoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcm
IHJlbGF0aXZlLCBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKQogeworI2lmIFVTRShVUkxf
UEFSU0VSKQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCiAgICAgLy8gQWxsb3cg
cmVzb2x1dGlvbnMgd2l0aCBhIG51bGwgb3IgZW1wdHkgYmFzZSBVUkwsIGJ1dCBub3Qgd2l0aCBh
bnkgb3RoZXIgaW52YWxpZCBvbmUuCiAgICAgLy8gRklYTUU6IElzIHRoaXMgYSBnb29kIHJ1bGU/
CiAgICAgaWYgKCFiYXNlLm1faXNWYWxpZCAmJiAhYmFzZS5pc0VtcHR5KCkpIHsKQEAgLTgyOSwx
MSArODYwLDIxIEBAIGJvb2wgVVJMOjpzZXRQcm90b2NvbChjb25zdCBTdHJpbmcmIHMpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV9pc1ZhbGlkKSB7CisjaWYgVVNFKFVSTF9Q
QVJTRVIpCisgICAgICAgIFVSTFBhcnNlciBwYXJzZXI7CisgICAgICAgICp0aGlzID0gcGFyc2Vy
LnBhcnNlKG1ha2VTdHJpbmcobmV3UHJvdG9jb2wsICI6IiwgbV9zdHJpbmcpKTsKKyNlbHNlCiAg
ICAgICAgIHBhcnNlKG5ld1Byb3RvY29sICsgJzonICsgbV9zdHJpbmcpOworI2VuZGlmCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorI2lmIFVTRShVUkxfUEFSU0VSKQorICAgIFVSTFBh
cnNlciBwYXJzZXI7CisgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobWFrZVN0cmluZyhuZXdQcm90
b2NvbCwgbV9zdHJpbmcuc3Vic3RyaW5nKG1fc2NoZW1lRW5kKSkpOworI2Vsc2UKICAgICBwYXJz
ZShuZXdQcm90b2NvbCArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3NjaGVtZUVuZCkpOworI2VuZGlm
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTkwMCwxNCArOTQxLDI0IEBAIHZvaWQgVVJMOjpz
ZXRIb3N0KGNvbnN0IFN0cmluZyYgcykKICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KGVu
Y29kZWRIb3N0TmFtZS5kYXRhKCksIGVuY29kZWRIb3N0TmFtZS5zaXplKCkpKTsKICAgICBidWls
ZGVyLmFwcGVuZChtX3N0cmluZy5zdWJzdHJpbmcobV9ob3N0RW5kKSk7CiAgICAgCisjaWYgVVNF
KFVSTF9QQVJTRVIpCisgICAgVVJMUGFyc2VyIHBhcnNlcjsKKyAgICAqdGhpcyA9IHBhcnNlci5w
YXJzZShidWlsZGVyLnRvU3RyaW5nKCkpOworI2Vsc2UKICAgICBwYXJzZShidWlsZGVyLnRvU3Ry
aW5nKCkpOworI2VuZGlmCiB9CiAKIHZvaWQgVVJMOjpyZW1vdmVQb3J0KCkKIHsKICAgICBpZiAo
bV9ob3N0RW5kID09IG1fcG9ydEVuZCkKICAgICAgICAgcmV0dXJuOworI2lmIFVTRShVUkxfUEFS
U0VSKQorICAgIFVSTFBhcnNlciBwYXJzZXI7CisgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobV9z
dHJpbmcubGVmdChtX2hvc3RFbmQpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOwor
I2Vsc2UKICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1faG9zdEVuZCkgKyBtX3N0cmluZy5zdWJz
dHJpbmcobV9wb3J0RW5kKSk7CisjZW5kaWYKIH0KIAogdm9pZCBVUkw6OnNldFBvcnQodW5zaWdu
ZWQgc2hvcnQgaSkKQEAgLTkxOCw3ICs5NjksMTIgQEAgdm9pZCBVUkw6OnNldFBvcnQodW5zaWdu
ZWQgc2hvcnQgaSkKICAgICBib29sIGNvbG9uTmVlZGVkID0gbV9wb3J0RW5kID09IG1faG9zdEVu
ZDsKICAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBtX2hvc3RFbmQgOiBt
X2hvc3RFbmQgKyAxKTsKIAorI2lmIFVTRShVUkxfUEFSU0VSKQorICAgIFVSTFBhcnNlciBwYXJz
ZXI7CisgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobWFrZVN0cmluZyhtX3N0cmluZy5sZWZ0KHBv
cnRTdGFydCksIChjb2xvbk5lZWRlZCA/ICI6IiA6ICIiKSwgU3RyaW5nOjpudW1iZXIoaSksIG1f
c3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQpKSk7CisjZWxzZQogICAgIHBhcnNlKG1fc3RyaW5n
LmxlZnQocG9ydFN0YXJ0KSArIChjb2xvbk5lZWRlZCA/ICI6IiA6ICIiKSArIFN0cmluZzo6bnVt
YmVyKGkpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOworI2VuZGlmCiB9CiAKIHZv
aWQgVVJMOjpzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmIGhvc3RBbmRQb3J0KQpAQCAtOTU5
LDcgKzEwMTUsMTIgQEAgdm9pZCBVUkw6OnNldEhvc3RBbmRQb3J0KGNvbnN0IFN0cmluZyYgaAog
ICAgIH0KICAgICBidWlsZGVyLmFwcGVuZChtX3N0cmluZy5zdWJzdHJpbmcobV9wb3J0RW5kKSk7
CiAKKyNpZiBVU0UoVVJMX1BBUlNFUikKKyAgICBVUkxQYXJzZXIgcGFyc2VyOworICAgICp0aGlz
ID0gcGFyc2VyLnBhcnNlKGJ1aWxkZXIudG9TdHJpbmcoKSk7CisjZWxzZQogICAgIHBhcnNlKGJ1
aWxkZXIudG9TdHJpbmcoKSk7CisjZW5kaWYKIH0KIAogdm9pZCBVUkw6OnNldFVzZXIoY29uc3Qg
U3RyaW5nJiB1c2VyKQpAQCAtOTc4LDE0ICsxMDM5LDI1IEBAIHZvaWQgVVJMOjpzZXRVc2VyKGNv
bnN0IFN0cmluZyYgdXNlcikKICAgICAgICAgLy8gQWRkICdAJyBpZiB3ZSBkaWRuJ3QgaGF2ZSBv
bmUgYmVmb3JlLgogICAgICAgICBpZiAoZW5kID09IG1faG9zdEVuZCB8fCAoZW5kID09IG1fcGFz
c3dvcmRFbmQgJiYgbV9zdHJpbmdbZW5kXSAhPSAnQCcpKQogICAgICAgICAgICAgdS5hcHBlbmQo
J0AnKTsKKyNpZiBVU0UoVVJMX1BBUlNFUikKKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcjsKKyAg
ICAgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobWFrZVN0cmluZyhtX3N0cmluZy5sZWZ0KG1fdXNl
clN0YXJ0KSwgdSwgbV9zdHJpbmcuc3Vic3RyaW5nKGVuZCkpKTsKKyNlbHNlCiAgICAgICAgIHBh
cnNlKG1fc3RyaW5nLmxlZnQobV91c2VyU3RhcnQpICsgdSArIG1fc3RyaW5nLnN1YnN0cmluZyhl
bmQpKTsKKyNlbmRpZgogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFJlbW92ZSAnQCcgaWYgd2Ug
bm93IGhhdmUgbmVpdGhlciB1c2VyIG5vciBwYXNzd29yZC4KICAgICAgICAgaWYgKG1fdXNlckVu
ZCA9PSBtX3Bhc3N3b3JkRW5kICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9
PSAnQCcpCiAgICAgICAgICAgICBlbmQgKz0gMTsKICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0
byBwYXJzZSBpbiB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBub3QgZ29p
bmcgdG8gbWFrZSBhIGNoYW5nZS4KLSAgICAgICAgaWYgKG1fdXNlclN0YXJ0ICE9IGVuZCkKKyAg
ICAgICAgaWYgKG1fdXNlclN0YXJ0ICE9IGVuZCkgeworI2lmIFVTRShVUkxfUEFSU0VSKQorICAg
ICAgICAgICAgVVJMUGFyc2VyIHBhcnNlcjsKKyAgICAgICAgICAgICp0aGlzID0gcGFyc2VyLnBh
cnNlKG1ha2VTdHJpbmcobV9zdHJpbmcubGVmdChtX3VzZXJTdGFydCksIG1fc3RyaW5nLnN1YnN0
cmluZyhlbmQpKSk7CisjZWxzZQogICAgICAgICAgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3Vz
ZXJTdGFydCkgKyBtX3N0cmluZy5zdWJzdHJpbmcoZW5kKSk7CisjZW5kaWYKKyAgICAgICAgfQog
ICAgIH0KIH0KIApAQCAtMTAwMiwxNCArMTA3NCwyNSBAQCB2b2lkIFVSTDo6c2V0UGFzcyhjb25z
dCBTdHJpbmcmIHBhc3N3b3JkCiAgICAgICAgIC8vIEVhdCB0aGUgZXhpc3RpbmcgJ0AnIHNpbmNl
IHdlIGFyZSBnb2luZyB0byBhZGQgb3VyIG93bi4KICAgICAgICAgaWYgKGVuZCAhPSBtX2hvc3RF
bmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCiAgICAgICAgICAgICBlbmQgKz0gMTsKKyNpZiBV
U0UoVVJMX1BBUlNFUikKKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcjsKKyAgICAgICAgKnRoaXMg
PSBwYXJzZXIucGFyc2UobWFrZVN0cmluZyhtX3N0cmluZy5sZWZ0KG1fdXNlckVuZCksIHAsIG1f
c3RyaW5nLnN1YnN0cmluZyhlbmQpKSk7CisjZWxzZQogICAgICAgICBwYXJzZShtX3N0cmluZy5s
ZWZ0KG1fdXNlckVuZCkgKyBwICsgbV9zdHJpbmcuc3Vic3RyaW5nKGVuZCkpOworI2VuZGlmCiAg
ICAgfSBlbHNlIHsKICAgICAgICAgLy8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVy
IHVzZXIgbm9yIHBhc3N3b3JkLgogICAgICAgICBpZiAobV91c2VyU3RhcnQgPT0gbV91c2VyRW5k
ICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCiAgICAgICAgICAg
ICBlbmQgKz0gMTsKICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYXJzZSBpbiB0aGUgZXh0
cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBub3QgZ29pbmcgdG8gbWFrZSBhIGNoYW5n
ZS4KLSAgICAgICAgaWYgKG1fdXNlckVuZCAhPSBlbmQpCisgICAgICAgIGlmIChtX3VzZXJFbmQg
IT0gZW5kKSB7CisjaWYgVVNFKFVSTF9QQVJTRVIpCisgICAgICAgICAgICBVUkxQYXJzZXIgcGFy
c2VyOworICAgICAgICAgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobWFrZVN0cmluZyhtX3N0cmlu
Zy5sZWZ0KG1fdXNlckVuZCksIG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKSk7CisjZWxzZQogICAg
ICAgICAgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3VzZXJFbmQpICsgbV9zdHJpbmcuc3Vic3Ry
aW5nKGVuZCkpOworI2VuZGlmCisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTEwMTksMTQgKzEx
MDIsMjUgQEAgdm9pZCBVUkw6OnNldEZyYWdtZW50SWRlbnRpZmllcihjb25zdCBTdAogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogTm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBl
bmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNoIHBhcnNlKCkgZXhwZWN0YXRpb25zLgorI2lmIFVT
RShVUkxfUEFSU0VSKQorICAgIFVSTFBhcnNlciBwYXJzZXI7CisgICAgKnRoaXMgPSBwYXJzZXIu
cGFyc2UobWFrZVN0cmluZyhtX3N0cmluZy5sZWZ0KG1fcXVlcnlFbmQpLCAiIyIsIHMpKTsKKyNl
bHNlCiAgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3F1ZXJ5RW5kKSArICIjIiArIHMpOworI2Vu
ZGlmCiB9CiAKIHZvaWQgVVJMOjpyZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKQogewogICAgIGlm
ICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47CisjaWYgVVNFKFVSTF9QQVJTRVIpCisgICAg
Ly8gRklYTUU6IFdlIHNob3VsZG4ndCBuZWVkIHRvIHBhcnNlIGhlcmUuCisgICAgVVJMUGFyc2Vy
IHBhcnNlcjsKKyAgICAqdGhpcyA9IHBhcnNlci5wYXJzZShtX3N0cmluZy5sZWZ0KG1fcXVlcnlF
bmQpKTsKKyNlbHNlCiAgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3F1ZXJ5RW5kKSk7CisjZW5k
aWYKIH0KICAgICAKIHZvaWQgVVJMOjpzZXRRdWVyeShjb25zdCBTdHJpbmcmIHF1ZXJ5KQpAQCAt
MTA1Niw3ICsxMTUwLDEyIEBAIHZvaWQgVVJMOjpzZXRQYXRoKGNvbnN0IFN0cmluZyYgcykKICAg
ICBpZiAocGF0aC5pc0VtcHR5KCkgfHwgcGF0aFswXSAhPSAnLycpCiAgICAgICAgIHBhdGggPSAi
LyIgKyBwYXRoOwogCisjaWYgVVNFKFVSTF9QQVJTRVIpCisgICAgVVJMUGFyc2VyIHBhcnNlcjsK
KyAgICAqdGhpcyA9IHBhcnNlci5wYXJzZShtYWtlU3RyaW5nKG1fc3RyaW5nLmxlZnQobV9wb3J0
RW5kKSwgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhwYXRoKSwgbV9zdHJpbmcuc3Vic3Ry
aW5nKG1fcGF0aEVuZCkpKTsKKyNlbHNlCiAgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3BvcnRF
bmQpICsgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhwYXRoKSArIG1fc3RyaW5nLnN1YnN0
cmluZyhtX3BhdGhFbmQpKTsKKyNlbmRpZgogfQogCiBTdHJpbmcgZGVjb2RlVVJMRXNjYXBlU2Vx
dWVuY2VzKGNvbnN0IFN0cmluZyYgc3RyaW5nKQpAQCAtMTE4Nyw2ICsxMjg2LDkgQEAgc3RhdGlj
IGlubGluZSBib29sIGhhc1NsYXNoRG90T3JEb3REb3QoYwogCiB2b2lkIFVSTDo6cGFyc2UoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCiB7CisjaWYgVVNFKFVSTF9QQVJTRVIpCisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisjZW5kaWYKICAgICBjaGVja0VuY29kZWRTdHJpbmcoc3RyaW5nKTsKIAog
ICAgIENoYXJCdWZmZXIgYnVmZmVyKHN0cmluZy5sZW5ndGgoKSArIDEpOwpAQCAtMTM1NCw2ICsx
NDU2LDkgQEAgc3RhdGljIGJvb2wgaXNDYW5vbmljYWxIb3N0bmFtZUxvd2VyY2FzZQogCiB2b2lk
IFVSTDo6cGFyc2UoY29uc3QgY2hhciogdXJsLCBjb25zdCBTdHJpbmcqIG9yaWdpbmFsU3RyaW5n
KQogeworI2lmIFVTRShVUkxfUEFSU0VSKQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2Vu
ZGlmCiAgICAgaWYgKCF1cmwgfHwgdXJsWzBdID09ICdcMCcpIHsKICAgICAgICAgLy8gdmFsaWQg
VVJMIG11c3QgYmUgbm9uLWVtcHR5CiAgICAgICAgIG1fc3RyaW5nID0gb3JpZ2luYWxTdHJpbmcg
PyAqb3JpZ2luYWxTdHJpbmcgOiB1cmw7CkBAIC0yMzAxLDQgKzI0MDYsOCBAQCBVUkwgVVJMOjpm
aWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKGNvbnN0CiAgICAgcmV0dXJuIFVSTChVUkwoKSwgImZp
bGU6Ly8vIiArIGZpbGVQYXRoKTsKIH0KIAorI2lmIENPTVBJTEVSKEdDQ19PUl9DTEFORykgJiYg
VVNFKFVSTF9QQVJTRVIpCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcAkocmV2aXNpb24gMjA1MTQ3
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTMwLDYgKzEzMCw3IEBAIHZvaWQgVVJMUGFyc2VyOjpjb3B5VVJMUGFydHNVbnRpbChj
b25zdCAKICAgICAKIFVSTCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IFN0cmluZyYgaW5wdXQsIGNv
bnN0IFVSTCYgYmFzZSwgY29uc3QgVGV4dEVuY29kaW5nJikKIHsKKyAgICBMT0coVVJMUGFyc2Vy
LCAiUGFyc2luZyBVUkwgPCVzPiBiYXNlIDwlcz4iLCBpbnB1dC51dGY4KCkuZGF0YSgpLCBiYXNl
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIG1fdXJsID0geyB9OwogICAgIG1fYnVmZmVy
LmNsZWFyKCk7CiAgICAgbV9hdXRob3JpdHlPckhvc3RCdWZmZXIuY2xlYXIoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCShyZXZpc2lvbiAyMDUwOTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIs
OCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNkZWZpbmUgVVNFX1VSTF9QQVJTRVIgMAor
CiBjbGFzcyBVUkxQYXJzZXIgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCBwYXJz
ZShjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmID0geyB9LCBjb25zdCBUZXh0RW5jb2RpbmcmID0g
VVRGOEVuY29kaW5nKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1VSTE1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVVJMTWFjLm1t
CShyZXZpc2lvbiAyMDUwOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVVJMTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJVUkwuaCIKIAog
I2ltcG9ydCAiQ0ZVUkxFeHRyYXMuaCIKKyNpbXBvcnQgIlVSTFBhcnNlci5oIgogI2ltcG9ydCA8
d3RmL09iamNSdW50aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
QEAgLTQyLDcgKzQzLDEyIEBAIFVSTDo6VVJMKE5TVVJMICp1cmwpCiAgICAgLy8gRklYTUU6IFdo
eSBpcyBpdCBPSyB0byBpZ25vcmUgYmFzZSBVUkwgaGVyZT8KICAgICBDU3RyaW5nIHVybEJ5dGVz
OwogICAgIGdldFVSTEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KHVybCksIHVybEJ5
dGVzKTsKKyNpZiBVU0UoVVJMX1BBUlNFUikKKyAgICBVUkxQYXJzZXIgcGFyc2VyOworICAgICp0
aGlzID0gcGFyc2VyLnBhcnNlKHVybEJ5dGVzLmRhdGEoKSk7CisjZWxzZQogICAgIHBhcnNlKHVy
bEJ5dGVzLmRhdGEoKSk7CisjZW5kaWYKIH0KIAogVVJMOjpvcGVyYXRvciBOU1VSTCAqKCkgY29u
c3QK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287424</attachid>
            <date>2016-08-30 13:45:09 -0700</date>
            <delta_ts>2016-08-30 14:26:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161363-20160830134258.patch</filename>
            <type>text/plain</type>
            <size>19763</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTE5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDE2LTA4LTMwICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHJ1bnRp
bWUgZmxhZyBmb3IgdXNpbmcgVVJMUGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEzNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuICBObyBjaGFuZ2UgaW4gYmVoYXZpb3Iu
IFRoZSBVUkxQYXJzZXIgaXMgb2ZmIGJ5IGRlZmF1bHQuCisgICAgICAgIFRoaXMganVzdCBhbGxv
d3MgbWUgdG8gdGVzdCB1c2luZyB0aGUgbmV3IFVSTFBhcnNlciBlYXNpZXIuCisKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0v
VVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6VVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OlVSTDo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OnNldFByb3RvY29sKToKKyAgICAg
ICAgKFdlYkNvcmU6OlVSTDo6c2V0SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OnJlbW92
ZVBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpzZXRQb3J0KToKKyAgICAgICAgKFdlYkNv
cmU6OlVSTDo6c2V0SG9zdEFuZFBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpzZXRVc2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6c2V0UGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpV
Ukw6OnNldEZyYWdtZW50SWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OnJlbW92
ZUZyYWdtZW50SWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OnNldFBhdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6VVJMOjpwYXJzZSk6CisgICAgICAgICogcGxhdGZvcm0vVVJMUGFy
c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6cGFyc2UpOgorICAgICAgICAo
V2ViQ29yZTo6VVJMUGFyc2VyOjpVUkxQYXJzZXJFbmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9VUkxQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9VUkxQYXJzZXJDb2NvYS5t
bTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OlVSTFBhcnNlckVuYWJsZWQp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9VUkxNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpV
Ukw6OlVSTCk6CisgICAgICAgIFVzZSB0aGUgbmV3IFVSTFBhcnNlciBpZiBpdCBpcyBlbmFibGVk
LgorCiAyMDE2LTA4LTMwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIFVzZSBvZiB1bmluaXRpYWxpc2VkIG1lbW9yeSBpbiBUcmFuc2Zvcm1hdGlvbk1hdHJ4
OjpibGVuZDQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UJKHJldmlzaW9uIDIwNTE3
MSkKKysrIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBA
IC0zMjksNiArMzI5LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vY29jb2EvU3lzdGVtVmVyc2lvbi5tbQogICAgIHBsYXRmb3JtL2NvY29hL1RlbGVwaG9uZU51
bWJlckRldGVjdG9yQ29jb2EuY3BwCiAgICAgcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5tbQor
ICAgIHBsYXRmb3JtL2NvY29hL1VSTFBhcnNlckNvY29hLm1tCiAgICAgcGxhdGZvcm0vY29jb2Ev
Vk5vZGVUcmFja2VyQ29jb2EuY3BwCiAgICAgcGxhdGZvcm0vY29jb2EvV2ViQ29yZU5TRXJyb3JF
eHRyYXMubW0KIApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA1MTcxKQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMzQzLDYg
KzIzNDMsNyBAQAogCQk1QzY4OEFBMzFEMzgxNEJGMDAwQjU0RkEgLyogU29ja2V0UHJvdmlkZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM2ODhB
QTIxRDM4MTI2RjAwMEI1NEZBIC8qIFNvY2tldFByb3ZpZGVyLmNwcCAqLzsgfTsKIAkJNUM2RTY1
NDIxRDVDRUZCOTAwRjc4NjJFIC8qIFVSTFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzZFNjUzRjFENUNFREM5MDBGNzg2MkUgLyogVVJM
UGFyc2VyLmNwcCAqLzsgfTsKIAkJNUM2RTY1NDMxRDVDRUZCRjAwRjc4NjJFIC8qIFVSTFBhcnNl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM2RTY1
NDAxRDVDRURDOTAwRjc4NjJFIC8qIFVSTFBhcnNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTVDNzk0Mzk5MUQ3NjI0QzkwMDMxMDJENCAvKiBV
UkxQYXJzZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDNzk0Mzk4MUQ3NjIyREEwMDMxMDJENCAvKiBVUkxQYXJzZXJDb2NvYS5tbSAqLzsg
fTsKIAkJNUM3Qzg4RDgxRDBGMUY0QTAwOUQyRjZEIC8qIFNvY2tldFByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzdDODhENzFEMEYxRjJC
MDA5RDJGNkQgLyogU29ja2V0UHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1QzlBN0E3NTFBQTBGNkVBMDA5NThBQ0YgLyogREZBQnl0
ZWNvZGVDb21waWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1QzM5MzA1RTFBQTBGNkE5MDAyOUM4MTYgLyogREZBQnl0ZWNvZGVDb21waWxlci5j
cHAgKi87IH07CiAJCTVDOUE3QTc2MUFBMEY2RUQwMDk1OEFDRiAvKiBERkFCeXRlY29kZUludGVy
cHJldGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDMzkzMDYwMUFBMEY2QTkwMDI5QzgxNiAvKiBERkFCeXRlY29kZUludGVycHJldGVyLmNwcCAq
LzsgfTsKQEAgLTkzNDYsNiArOTM0Nyw3IEBACiAJCTVDNjg4QUEyMUQzODEyNkYwMDBCNTRGQSAv
KiBTb2NrZXRQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTb2NrZXRQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNkU2
NTNGMUQ1Q0VEQzkwMEY3ODYyRSAvKiBVUkxQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVVJMUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUM2RTY1NDAxRDVDRURDOTAwRjc4NjJFIC8qIFVSTFBhcnNlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBVUkxQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUM3OTQzOTgxRDc2MjJEQTAwMzEwMkQ0IC8qIFVSTFBhcnNlckNvY29hLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVVJMUGFyc2VyQ29jb2EubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDN0M4OEQ3MUQwRjFGMkIwMDlEMkY2RCAv
KiBTb2NrZXRQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2Nr
ZXRQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzlCODYwQjFDMjFF
M0M2MDAxMTBGMzYgLyogTmV0d29ya0xvYWRUaW1pbmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBOZXR3b3JrTG9hZFRpbWluZy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUNCMzdGRkMxQzYyRDI3ODAwRjIwMTg4IC8qIFNjcm9sbEFuaW1hdG9y
TW9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxBbmlt
YXRvck1vY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg2NTAsNiArMTg2
NTIsNyBAQAogCQlBNUM5NzRDRTExNDg1RkRBMDA2NkYyQUIgLyogY29jb2EgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTVDNzk0Mzk4MUQ3NjIyREEwMDMx
MDJENCAvKiBVUkxQYXJzZXJDb2NvYS5tbSAqLywKIAkJCQlBMTQwOTBGQTFBQTUxRTFEMDA5MTE5
MUEgLyogQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0gKi8sCiAJCQkJQ0Q3RDMz
NDUxQzdBMTZCRjAwMDQxMjkzIC8qIENvcmVWaWRlb1NvZnRMaW5rLmNwcCAqLywKIAkJCQlDRDdE
MzM0NjFDN0ExNkJGMDAwNDEyOTMgLyogQ29yZVZpZGVvU29mdExpbmsuaCAqLywKQEAgLTMwNDE5
LDYgKzMwNDIyLDcgQEAKIAkJCQk5NzhEMDdDQzE0NUExMDJFMDA5NjkwOEQgLyogWFBhdGhFeGNl
cHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCN0ZDNkIwQThCOTJFQzAwRDlEMzdCIC8q
IFhQYXRoRXhwcmVzc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUI3RkM2RTBBOEI5MkVD
MDBEOUQzN0IgLyogWFBhdGhFeHByZXNzaW9uTm9kZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
Qzc5NDM5OTFENzYyNEM5MDAzMTAyRDQgLyogVVJMUGFyc2VyQ29jb2EubW0gaW4gU291cmNlcyAq
LywKIAkJCQkxQUI3RkM3MDBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhGdW5jdGlvbnMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUE3NjI5RDUwQTA3NDI1MTAwOTg5RjVCIC8qIFhQYXRoR3JhbW1h
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUVDMjk5RjBCQjA0QzZCMDBFQTE4N0IgLyogWFBh
dGhOb2RlU2V0LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVVJMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3Bw
CShyZXZpc2lvbiAyMDUxNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRGVjb2RlRXNjYXBlU2Vx
dWVuY2VzLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlRleHRF
bmNvZGluZy5oIgorI2luY2x1ZGUgIlVSTFBhcnNlci5oIgogI2luY2x1ZGUgIlVVSUQuaCIKICNp
bmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdWlkbmEuaD4KQEAgLTQzOCwyNyAr
NDM5LDQyIEBAIHZvaWQgVVJMOjppbnZhbGlkYXRlKCkKIAogVVJMOjpVUkwoUGFyc2VkVVJMU3Ry
aW5nVGFnLCBjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBwYXJzZSh1cmwpOworICAgIGlmIChV
UkxQYXJzZXI6OlVSTFBhcnNlckVuYWJsZWQoKSkgeworICAgICAgICBVUkxQYXJzZXIgcGFyc2Vy
OworICAgICAgICAqdGhpcyA9IHBhcnNlci5wYXJzZSh1cmwpOworICAgICAgICBBU1NFUlQodXJs
LmlzRW1wdHkoKSAmJiBtX3N0cmluZy5pc0VtcHR5KCkgfHwgdXJsID09IG1fc3RyaW5nKTsgLy8g
RklYTUU6IEludmVzdGlnYXRlIHBhcnNpbmcgbm9uLW51bGwgZW1wdHkgUGFyc2VkVVJMU3RyaW5n
cy4KKyAgICB9IGVsc2UgeworICAgICAgICBwYXJzZSh1cmwpOwogI2lmIE9TKFdJTkRPV1MpCi0g
ICAgLy8gRklYTUUoMTQ4NTk4KTogV29yayBhcm91bmQgV2luZG93cyBsb2NhbCBmaWxlIGhhbmRs
aW5nIGJ1ZyBpbiBDRk5ldHdvcmsKLSAgICBBU1NFUlQoaXNMb2NhbEZpbGUoKSB8fCB1cmwgPT0g
bV9zdHJpbmcpOworICAgICAgICAvLyBGSVhNRSgxNDg1OTgpOiBXb3JrIGFyb3VuZCBXaW5kb3dz
IGxvY2FsIGZpbGUgaGFuZGxpbmcgYnVnIGluIENGTmV0d29yaworICAgICAgICBBU1NFUlQoaXNM
b2NhbEZpbGUoKSB8fCB1cmwgPT0gbV9zdHJpbmcpOwogI2Vsc2UKLSAgICBBU1NFUlQodXJsID09
IG1fc3RyaW5nKTsKKyAgICAgICAgQVNTRVJUKHVybCA9PSBtX3N0cmluZyk7CiAjZW5kaWYKKyAg
ICB9CiB9CiAKIFVSTDo6VVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2
ZSkKIHsKLSAgICBpbml0KGJhc2UsIHJlbGF0aXZlLCBVVEY4RW5jb2RpbmcoKSk7CisgICAgaWYg
KFVSTFBhcnNlcjo6VVJMUGFyc2VyRW5hYmxlZCgpKSB7CisgICAgICAgIFVSTFBhcnNlciBwYXJz
ZXI7CisgICAgICAgICp0aGlzID0gcGFyc2VyLnBhcnNlKHJlbGF0aXZlLCBiYXNlKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgaW5pdChiYXNlLCByZWxhdGl2ZSwgVVRGOEVuY29kaW5nKCkpOwogfQog
CiBVUkw6OlVSTChjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmUsIGNvbnN0
IFRleHRFbmNvZGluZyYgZW5jb2RpbmcpCiB7Ci0gICAgLy8gRm9yIFVURi17NywxNiwzMn0sIHdl
IHdhbnQgdG8gdXNlIFVURi04IGZvciB0aGUgcXVlcnkgcGFydCBhcyAKLSAgICAvLyB3ZSBkbyB3
aGVuIHN1Ym1pdHRpbmcgYSBmb3JtLiBBIGZvcm0gd2l0aCBHRVQgbWV0aG9kCi0gICAgLy8gaGFz
IGl0cyBjb250ZW50cyBhZGRlZCB0byBhIFVSTCBhcyBxdWVyeSBwYXJhbXMgYW5kIGl0IG1ha2Vz
IHNlbnNlCi0gICAgLy8gdG8gYmUgY29uc2lzdGVudC4KLSAgICBpbml0KGJhc2UsIHJlbGF0aXZl
LCBlbmNvZGluZy5lbmNvZGluZ0ZvckZvcm1TdWJtaXNzaW9uKCkpOworICAgIGlmIChVUkxQYXJz
ZXI6OlVSTFBhcnNlckVuYWJsZWQoKSkgeworICAgICAgICBVUkxQYXJzZXIgcGFyc2VyOworICAg
ICAgICAqdGhpcyA9IHBhcnNlci5wYXJzZShyZWxhdGl2ZSwgYmFzZSwgZW5jb2RpbmcpOworICAg
IH0gZWxzZSB7CisgICAgICAgIC8vIEZvciBVVEYtezcsMTYsMzJ9LCB3ZSB3YW50IHRvIHVzZSBV
VEYtOCBmb3IgdGhlIHF1ZXJ5IHBhcnQgYXMKKyAgICAgICAgLy8gd2UgZG8gd2hlbiBzdWJtaXR0
aW5nIGEgZm9ybS4gQSBmb3JtIHdpdGggR0VUIG1ldGhvZAorICAgICAgICAvLyBoYXMgaXRzIGNv
bnRlbnRzIGFkZGVkIHRvIGEgVVJMIGFzIHF1ZXJ5IHBhcmFtcyBhbmQgaXQgbWFrZXMgc2Vuc2UK
KyAgICAgICAgLy8gdG8gYmUgY29uc2lzdGVudC4KKyAgICAgICAgaW5pdChiYXNlLCByZWxhdGl2
ZSwgZW5jb2RpbmcuZW5jb2RpbmdGb3JGb3JtU3VibWlzc2lvbigpKTsKKyAgICB9CiB9CiAKIHN0
YXRpYyBib29sIHNob3VsZFRyaW1Gcm9tVVJMKFVDaGFyIGMpCkBAIC00NzEsNiArNDg3LDkgQEAg
c3RhdGljIGJvb2wgc2hvdWxkVHJpbUZyb21VUkwoVUNoYXIgYykKIAogdm9pZCBVUkw6OmluaXQo
Y29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBUZXh0RW5jb2Rp
bmcmIGVuY29kaW5nKQogeworICAgIGlmIChVUkxQYXJzZXI6OlVSTFBhcnNlckVuYWJsZWQoKSkK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKICAgICAvLyBBbGxvdyByZXNvbHV0aW9u
cyB3aXRoIGEgbnVsbCBvciBlbXB0eSBiYXNlIFVSTCwgYnV0IG5vdCB3aXRoIGFueSBvdGhlciBp
bnZhbGlkIG9uZS4KICAgICAvLyBGSVhNRTogSXMgdGhpcyBhIGdvb2QgcnVsZT8KICAgICBpZiAo
IWJhc2UubV9pc1ZhbGlkICYmICFiYXNlLmlzRW1wdHkoKSkgewpAQCAtODI5LDExICs4NDgsMjAg
QEAgYm9vbCBVUkw6OnNldFByb3RvY29sKGNvbnN0IFN0cmluZyYgcykKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgaWYgKCFtX2lzVmFsaWQpIHsKLSAgICAgICAgcGFyc2UobmV3UHJvdG9j
b2wgKyAnOicgKyBtX3N0cmluZyk7CisgICAgICAgIGlmIChVUkxQYXJzZXI6OlVSTFBhcnNlckVu
YWJsZWQoKSkgeworICAgICAgICAgICAgVVJMUGFyc2VyIHBhcnNlcjsKKyAgICAgICAgICAgICp0
aGlzID0gcGFyc2VyLnBhcnNlKG1ha2VTdHJpbmcobmV3UHJvdG9jb2wsICI6IiwgbV9zdHJpbmcp
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBwYXJzZShuZXdQcm90b2NvbCArICc6JyAr
IG1fc3RyaW5nKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgcGFyc2UobmV3
UHJvdG9jb2wgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9zY2hlbWVFbmQpKTsKKyAgICBpZiAoVVJM
UGFyc2VyOjpVUkxQYXJzZXJFbmFibGVkKCkpIHsKKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcjsK
KyAgICAgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobWFrZVN0cmluZyhuZXdQcm90b2NvbCwgbV9z
dHJpbmcuc3Vic3RyaW5nKG1fc2NoZW1lRW5kKSkpOworICAgIH0gZWxzZQorICAgICAgICBwYXJz
ZShuZXdQcm90b2NvbCArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3NjaGVtZUVuZCkpOworCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTkwMCwxNCArOTI4LDIyIEBAIHZvaWQgVVJMOjpzZXRIb3N0
KGNvbnN0IFN0cmluZyYgcykKICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KGVuY29kZWRI
b3N0TmFtZS5kYXRhKCksIGVuY29kZWRIb3N0TmFtZS5zaXplKCkpKTsKICAgICBidWlsZGVyLmFw
cGVuZChtX3N0cmluZy5zdWJzdHJpbmcobV9ob3N0RW5kKSk7CiAgICAgCi0gICAgcGFyc2UoYnVp
bGRlci50b1N0cmluZygpKTsKKyAgICBpZiAoVVJMUGFyc2VyOjpVUkxQYXJzZXJFbmFibGVkKCkp
IHsKKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcjsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucGFy
c2UoYnVpbGRlci50b1N0cmluZygpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcGFyc2UoYnVpbGRl
ci50b1N0cmluZygpKTsKIH0KIAogdm9pZCBVUkw6OnJlbW92ZVBvcnQoKQogewogICAgIGlmICht
X2hvc3RFbmQgPT0gbV9wb3J0RW5kKQogICAgICAgICByZXR1cm47Ci0gICAgcGFyc2UobV9zdHJp
bmcubGVmdChtX2hvc3RFbmQpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOworICAg
IGlmIChVUkxQYXJzZXI6OlVSTFBhcnNlckVuYWJsZWQoKSkgeworICAgICAgICBVUkxQYXJzZXIg
cGFyc2VyOworICAgICAgICAqdGhpcyA9IHBhcnNlci5wYXJzZShtX3N0cmluZy5sZWZ0KG1faG9z
dEVuZCkgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9wb3J0RW5kKSk7CisgICAgfSBlbHNlCisgICAg
ICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9ob3N0RW5kKSArIG1fc3RyaW5nLnN1YnN0cmluZyht
X3BvcnRFbmQpKTsKIH0KIAogdm9pZCBVUkw6OnNldFBvcnQodW5zaWduZWQgc2hvcnQgaSkKQEAg
LTkxOCw3ICs5NTQsMTEgQEAgdm9pZCBVUkw6OnNldFBvcnQodW5zaWduZWQgc2hvcnQgaSkKICAg
ICBib29sIGNvbG9uTmVlZGVkID0gbV9wb3J0RW5kID09IG1faG9zdEVuZDsKICAgICB1bnNpZ25l
ZCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBtX2hvc3RFbmQgOiBtX2hvc3RFbmQgKyAxKTsK
IAotICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQocG9ydFN0YXJ0KSArIChjb2xvbk5lZWRlZCA/ICI6
IiA6ICIiKSArIFN0cmluZzo6bnVtYmVyKGkpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVu
ZCkpOworICAgIGlmIChVUkxQYXJzZXI6OlVSTFBhcnNlckVuYWJsZWQoKSkgeworICAgICAgICBV
UkxQYXJzZXIgcGFyc2VyOworICAgICAgICAqdGhpcyA9IHBhcnNlci5wYXJzZShtYWtlU3RyaW5n
KG1fc3RyaW5nLmxlZnQocG9ydFN0YXJ0KSwgKGNvbG9uTmVlZGVkID8gIjoiIDogIiIpLCBTdHJp
bmc6Om51bWJlcihpKSwgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgcGFyc2UobV9zdHJpbmcubGVmdChwb3J0U3RhcnQpICsgKGNvbG9uTmVlZGVk
ID8gIjoiIDogIiIpICsgU3RyaW5nOjpudW1iZXIoaSkgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9w
b3J0RW5kKSk7CiB9CiAKIHZvaWQgVVJMOjpzZXRIb3N0QW5kUG9ydChjb25zdCBTdHJpbmcmIGhv
c3RBbmRQb3J0KQpAQCAtOTU5LDcgKzk5OSwxMSBAQCB2b2lkIFVSTDo6c2V0SG9zdEFuZFBvcnQo
Y29uc3QgU3RyaW5nJiBoCiAgICAgfQogICAgIGJ1aWxkZXIuYXBwZW5kKG1fc3RyaW5nLnN1YnN0
cmluZyhtX3BvcnRFbmQpKTsKIAotICAgIHBhcnNlKGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAg
aWYgKFVSTFBhcnNlcjo6VVJMUGFyc2VyRW5hYmxlZCgpKSB7CisgICAgICAgIFVSTFBhcnNlciBw
YXJzZXI7CisgICAgICAgICp0aGlzID0gcGFyc2VyLnBhcnNlKGJ1aWxkZXIudG9TdHJpbmcoKSk7
CisgICAgfSBlbHNlCisgICAgICAgIHBhcnNlKGJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAKIHZv
aWQgVVJMOjpzZXRVc2VyKGNvbnN0IFN0cmluZyYgdXNlcikKQEAgLTk3OCwxNCArMTAyMiwyMyBA
QCB2b2lkIFVSTDo6c2V0VXNlcihjb25zdCBTdHJpbmcmIHVzZXIpCiAgICAgICAgIC8vIEFkZCAn
QCcgaWYgd2UgZGlkbid0IGhhdmUgb25lIGJlZm9yZS4KICAgICAgICAgaWYgKGVuZCA9PSBtX2hv
c3RFbmQgfHwgKGVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0gIT0gJ0AnKSkK
ICAgICAgICAgICAgIHUuYXBwZW5kKCdAJyk7Ci0gICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQo
bV91c2VyU3RhcnQpICsgdSArIG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKTsKKyAgICAgICAgaWYg
KFVSTFBhcnNlcjo6VVJMUGFyc2VyRW5hYmxlZCgpKSB7CisgICAgICAgICAgICBVUkxQYXJzZXIg
cGFyc2VyOworICAgICAgICAgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobWFrZVN0cmluZyhtX3N0
cmluZy5sZWZ0KG1fdXNlclN0YXJ0KSwgdSwgbV9zdHJpbmcuc3Vic3RyaW5nKGVuZCkpKTsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fdXNlclN0YXJ0
KSArIHUgKyBtX3N0cmluZy5zdWJzdHJpbmcoZW5kKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
Ly8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgog
ICAgICAgICBpZiAobV91c2VyRW5kID09IG1fcGFzc3dvcmRFbmQgJiYgZW5kICE9IG1faG9zdEVu
ZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykKICAgICAgICAgICAgIGVuZCArPSAxOwogICAgICAg
ICAvLyBXZSBkb24ndCB3YW50IHRvIHBhcnNlIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ug
d2hlcmUgd2UgYXJlIG5vdCBnb2luZyB0byBtYWtlIGEgY2hhbmdlLgotICAgICAgICBpZiAobV91
c2VyU3RhcnQgIT0gZW5kKQotICAgICAgICAgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3VzZXJT
dGFydCkgKyBtX3N0cmluZy5zdWJzdHJpbmcoZW5kKSk7CisgICAgICAgIGlmIChtX3VzZXJTdGFy
dCAhPSBlbmQpIHsKKyAgICAgICAgICAgIGlmIChVUkxQYXJzZXI6OlVSTFBhcnNlckVuYWJsZWQo
KSkgeworICAgICAgICAgICAgICAgIFVSTFBhcnNlciBwYXJzZXI7CisgICAgICAgICAgICAgICAg
KnRoaXMgPSBwYXJzZXIucGFyc2UobWFrZVN0cmluZyhtX3N0cmluZy5sZWZ0KG1fdXNlclN0YXJ0
KSwgbV9zdHJpbmcuc3Vic3RyaW5nKGVuZCkpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV91c2VyU3RhcnQpICsgbV9zdHJpbmcuc3Vi
c3RyaW5nKGVuZCkpOworICAgICAgICB9CiAgICAgfQogfQogCkBAIC0xMDAyLDE0ICsxMDU1LDIz
IEBAIHZvaWQgVVJMOjpzZXRQYXNzKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQKICAgICAgICAgLy8g
RWF0IHRoZSBleGlzdGluZyAnQCcgc2luY2Ugd2UgYXJlIGdvaW5nIHRvIGFkZCBvdXIgb3duLgog
ICAgICAgICBpZiAoZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykKICAg
ICAgICAgICAgIGVuZCArPSAxOwotICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fdXNlckVu
ZCkgKyBwICsgbV9zdHJpbmcuc3Vic3RyaW5nKGVuZCkpOworICAgICAgICBpZiAoVVJMUGFyc2Vy
OjpVUkxQYXJzZXJFbmFibGVkKCkpIHsKKyAgICAgICAgICAgIFVSTFBhcnNlciBwYXJzZXI7Cisg
ICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5wYXJzZShtYWtlU3RyaW5nKG1fc3RyaW5nLmxlZnQo
bV91c2VyRW5kKSwgcCwgbV9zdHJpbmcuc3Vic3RyaW5nKGVuZCkpKTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fdXNlckVuZCkgKyBwICsgbV9zdHJp
bmcuc3Vic3RyaW5nKGVuZCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFJlbW92ZSAnQCcg
aWYgd2Ugbm93IGhhdmUgbmVpdGhlciB1c2VyIG5vciBwYXNzd29yZC4KICAgICAgICAgaWYgKG1f
dXNlclN0YXJ0ID09IG1fdXNlckVuZCAmJiBlbmQgIT0gbV9ob3N0RW5kICYmIG1fc3RyaW5nW2Vu
ZF0gPT0gJ0AnKQogICAgICAgICAgICAgZW5kICs9IDE7CiAgICAgICAgIC8vIFdlIGRvbid0IHdh
bnQgdG8gcGFyc2UgaW4gdGhlIGV4dHJlbWVseSBjb21tb24gY2FzZSB3aGVyZSB3ZSBhcmUgbm90
IGdvaW5nIHRvIG1ha2UgYSBjaGFuZ2UuCi0gICAgICAgIGlmIChtX3VzZXJFbmQgIT0gZW5kKQot
ICAgICAgICAgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3VzZXJFbmQpICsgbV9zdHJpbmcuc3Vi
c3RyaW5nKGVuZCkpOworICAgICAgICBpZiAobV91c2VyRW5kICE9IGVuZCkgeworICAgICAgICAg
ICAgaWYgKFVSTFBhcnNlcjo6VVJMUGFyc2VyRW5hYmxlZCgpKSB7CisgICAgICAgICAgICAgICAg
VVJMUGFyc2VyIHBhcnNlcjsKKyAgICAgICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5wYXJzZSht
YWtlU3RyaW5nKG1fc3RyaW5nLmxlZnQobV91c2VyRW5kKSwgbV9zdHJpbmcuc3Vic3RyaW5nKGVu
ZCkpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHBhcnNlKG1fc3RyaW5n
LmxlZnQobV91c2VyRW5kKSArIG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKTsKKyAgICAgICAgfQog
ICAgIH0KIH0KIApAQCAtMTAxOSwxNCArMTA4MSwyMyBAQCB2b2lkIFVSTDo6c2V0RnJhZ21lbnRJ
ZGVudGlmaWVyKGNvbnN0IFN0CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBOb24t
QVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVuY29kZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFy
c2UoKSBleHBlY3RhdGlvbnMuCi0gICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3F1ZXJ5RW5kKSAr
ICIjIiArIHMpOworICAgIGlmIChVUkxQYXJzZXI6OlVSTFBhcnNlckVuYWJsZWQoKSkgeworICAg
ICAgICBVUkxQYXJzZXIgcGFyc2VyOworICAgICAgICAqdGhpcyA9IHBhcnNlci5wYXJzZShtYWtl
U3RyaW5nKG1fc3RyaW5nLmxlZnQobV9xdWVyeUVuZCksICIjIiwgcykpOworICAgIH0gZWxzZQor
ICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fcXVlcnlFbmQpICsgIiMiICsgcyk7CiB9CiAK
IHZvaWQgVVJMOjpyZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKQogewogICAgIGlmICghbV9pc1Zh
bGlkKQogICAgICAgICByZXR1cm47Ci0gICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3F1ZXJ5RW5k
KSk7CisgICAgaWYgKFVSTFBhcnNlcjo6VVJMUGFyc2VyRW5hYmxlZCgpKSB7CisgICAgICAgIC8v
IEZJWE1FOiBXZSBzaG91bGRuJ3QgbmVlZCB0byBwYXJzZSBoZXJlLgorICAgICAgICBVUkxQYXJz
ZXIgcGFyc2VyOworICAgICAgICAqdGhpcyA9IHBhcnNlci5wYXJzZShtX3N0cmluZy5sZWZ0KG1f
cXVlcnlFbmQpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3F1
ZXJ5RW5kKSk7CiB9CiAgICAgCiB2b2lkIFVSTDo6c2V0UXVlcnkoY29uc3QgU3RyaW5nJiBxdWVy
eSkKQEAgLTEwNTYsNyArMTEyNywxMSBAQCB2b2lkIFVSTDo6c2V0UGF0aChjb25zdCBTdHJpbmcm
IHMpCiAgICAgaWYgKHBhdGguaXNFbXB0eSgpIHx8IHBhdGhbMF0gIT0gJy8nKQogICAgICAgICBw
YXRoID0gIi8iICsgcGF0aDsKIAotICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9wb3J0RW5kKSAr
IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMocGF0aCkgKyBtX3N0cmluZy5zdWJzdHJpbmco
bV9wYXRoRW5kKSk7CisgICAgaWYgKFVSTFBhcnNlcjo6VVJMUGFyc2VyRW5hYmxlZCgpKSB7Cisg
ICAgICAgIFVSTFBhcnNlciBwYXJzZXI7CisgICAgICAgICp0aGlzID0gcGFyc2VyLnBhcnNlKG1h
a2VTdHJpbmcobV9zdHJpbmcubGVmdChtX3BvcnRFbmQpLCBlbmNvZGVXaXRoVVJMRXNjYXBlU2Vx
dWVuY2VzKHBhdGgpLCBtX3N0cmluZy5zdWJzdHJpbmcobV9wYXRoRW5kKSkpOworICAgIH0gZWxz
ZQorICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fcG9ydEVuZCkgKyBlbmNvZGVXaXRoVVJM
RXNjYXBlU2VxdWVuY2VzKHBhdGgpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcGF0aEVuZCkpOwog
fQogCiBTdHJpbmcgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQpAQCAtMTE4Nyw2ICsxMjYyLDggQEAgc3RhdGljIGlubGluZSBib29sIGhhc1NsYXNoRG90T3JE
b3REb3QoYwogCiB2b2lkIFVSTDo6cGFyc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CisgICAg
aWYgKFVSTFBhcnNlcjo6VVJMUGFyc2VyRW5hYmxlZCgpKQorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICBjaGVja0VuY29kZWRTdHJpbmcoc3RyaW5nKTsKIAogICAgIENoYXJCdWZm
ZXIgYnVmZmVyKHN0cmluZy5sZW5ndGgoKSArIDEpOwpAQCAtMTM1NCw2ICsxNDMxLDggQEAgc3Rh
dGljIGJvb2wgaXNDYW5vbmljYWxIb3N0bmFtZUxvd2VyY2FzZQogCiB2b2lkIFVSTDo6cGFyc2Uo
Y29uc3QgY2hhciogdXJsLCBjb25zdCBTdHJpbmcqIG9yaWdpbmFsU3RyaW5nKQogeworICAgIGlm
IChVUkxQYXJzZXI6OlVSTFBhcnNlckVuYWJsZWQoKSkKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgaWYgKCF1cmwgfHwgdXJsWzBdID09ICdcMCcpIHsKICAgICAgICAgLy8gdmFs
aWQgVVJMIG11c3QgYmUgbm9uLWVtcHR5CiAgICAgICAgIG1fc3RyaW5nID0gb3JpZ2luYWxTdHJp
bmcgPyAqb3JpZ2luYWxTdHJpbmcgOiB1cmw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9VUkxQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VS
TFBhcnNlci5jcHAJKHJldmlzaW9uIDIwNTE5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw2ICsxMzAsNyBAQCB2b2lkIFVS
TFBhcnNlcjo6Y29weVVSTFBhcnRzVW50aWwoY29uc3QgCiAgICAgCiBVUkwgVVJMUGFyc2VyOjpw
YXJzZShjb25zdCBTdHJpbmcmIGlucHV0LCBjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFRleHRFbmNv
ZGluZyYpCiB7CisgICAgTE9HKFVSTFBhcnNlciwgIlBhcnNpbmcgVVJMIDwlcz4gYmFzZSA8JXM+
IiwgaW5wdXQudXRmOCgpLmRhdGEoKSwgYmFzZS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAg
ICBtX3VybCA9IHsgfTsKICAgICBtX2J1ZmZlci5jbGVhcigpOwogICAgIG1fYXV0aG9yaXR5T3JI
b3N0QnVmZmVyLmNsZWFyKCk7CkBAIC03NDUsNCArNzQ2LDExIEBAIGJvb2wgVVJMUGFyc2VyOjph
bGxWYWx1ZXNFcXVhbChjb25zdCBVUkwKICAgICAgICAgJiYgYS5tX2ZyYWdtZW50RW5kID09IGIu
bV9mcmFnbWVudEVuZDsKIH0KIAorI2lmICFQTEFURk9STShDT0NPQSkKK2Jvb2wgVVJMUGFyc2Vy
OjpVUkxQYXJzZXJFbmFibGVkKCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJM
UGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2Vy
LmgJKHJldmlzaW9uIDIwNTE3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw4IEBAIGNsYXNzIFVSTFBhcnNlciB7CiBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHBhcnNlKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFVSTCYgPSB7IH0sIGNvbnN0IFRleHRFbmNvZGluZyYgPSBVVEY4RW5jb2RpbmcoKSk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgYWxsVmFsdWVzRXF1YWwoY29uc3QgVVJMJiwgY29u
c3QgVVJMJik7CisKKyAgICBzdGF0aWMgYm9vbCBVUkxQYXJzZXJFbmFibGVkKCk7CiBwcml2YXRl
OgogICAgIFVSTCBtX3VybDsKICAgICBTdHJpbmdCdWlsZGVyIG1fYnVmZmVyOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVVJMUGFyc2VyQ29jb2EubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVVJMUGFyc2VyQ29jb2EubW0JKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVVJMUGFyc2VyQ29jb2Eu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiVVJMUGFyc2VyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KyAgICAKK2Jvb2wgVVJMUGFyc2VyOjpVUkxQYXJzZXJFbmFibGVkKCkKK3sKKyAgICBzdGF0aWMg
Ym9vbCB1c2UgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9y
S2V5OkAiVVJMUGFyc2VyRW5hYmxlZCJdOworICAgIHJldHVybiB1c2U7Cit9CisKK30KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9VUkxNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1VSTE1hYy5tbQkocmV2aXNpb24gMjA1MTcxKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1VSTE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjcsNiArMjcsNyBAQAogI2ltcG9ydCAiVVJMLmgiCiAKICNpbXBvcnQgIkNGVVJMRXh0cmFzLmgi
CisjaW1wb3J0ICJVUkxQYXJzZXIuaCIKICNpbXBvcnQgPHd0Zi9PYmpjUnVudGltZUV4dHJhcy5o
PgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC00Miw3ICs0MywxMiBAQCBVUkw6
OlVSTChOU1VSTCAqdXJsKQogICAgIC8vIEZJWE1FOiBXaHkgaXMgaXQgT0sgdG8gaWdub3JlIGJh
c2UgVVJMIGhlcmU/CiAgICAgQ1N0cmluZyB1cmxCeXRlczsKICAgICBnZXRVUkxCeXRlcyhyZWlu
dGVycHJldF9jYXN0PENGVVJMUmVmPih1cmwpLCB1cmxCeXRlcyk7Ci0gICAgcGFyc2UodXJsQnl0
ZXMuZGF0YSgpKTsKKworICAgIGlmIChVUkxQYXJzZXI6OlVSTFBhcnNlckVuYWJsZWQoKSkgewor
ICAgICAgICBVUkxQYXJzZXIgcGFyc2VyOworICAgICAgICAqdGhpcyA9IHBhcnNlci5wYXJzZSh1
cmxCeXRlcy5kYXRhKCkpOworICAgIH0gZWxzZQorICAgICAgICBwYXJzZSh1cmxCeXRlcy5kYXRh
KCkpOwogfQogCiBVUkw6Om9wZXJhdG9yIE5TVVJMICooKSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287431</attachid>
            <date>2016-08-30 14:26:33 -0700</date>
            <delta_ts>2016-08-30 15:54:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161363-20160830142422.patch</filename>
            <type>text/plain</type>
            <size>29247</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTE5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDE2LTA4LTMwICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHJ1bnRp
bWUgZmxhZyBmb3IgdXNpbmcgVVJMUGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEzNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IgYnkgZGVmYXVsdC4KKwor
ICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpVUkw6OlVSTCk6CisgICAgICAgIChXZWJDb3JlOjpVUkw6Omlu
aXQpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpzZXRQcm90b2NvbCk6CisgICAgICAgIChXZWJD
b3JlOjpVUkw6OnNldEhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpyZW1vdmVQb3J0KToK
KyAgICAgICAgKFdlYkNvcmU6OlVSTDo6c2V0UG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpVUkw6
OnNldEhvc3RBbmRQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6c2V0VXNlcik6CisgICAg
ICAgIChXZWJDb3JlOjpVUkw6OnNldFBhc3MpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpzZXRG
cmFnbWVudElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpyZW1vdmVGcmFnbWVu
dElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpzZXRQYXRoKToKKyAgICAgICAg
KFdlYkNvcmU6OlVSTDo6cGFyc2UpOgorICAgICAgICAqIHBsYXRmb3JtL1VSTFBhcnNlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlVSTFBhcnNlcjo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmVu
YWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL1VSTFBhcnNlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2NvY29hL1VSTFBhcnNlckNvY29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVS
TFBhcnNlcjo6VVJMUGFyc2VyRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1VSTE1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6VVJMKToKKwogMjAxNi0wOC0zMCAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2Ugb2YgdW5pbml0aWFs
aXNlZCBtZW1vcnkgaW4gVHJhbnNmb3JtYXRpb25NYXRyeDo6YmxlbmQ0KCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAyMDUxNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybU1hYy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMzI5LDYgKzMyOSw3IEBAIGxpc3Qo
QVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2NvY29hL1N5c3RlbVZlcnNpb24u
bW0KICAgICBwbGF0Zm9ybS9jb2NvYS9UZWxlcGhvbmVOdW1iZXJEZXRlY3RvckNvY29hLmNwcAog
ICAgIHBsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EubW0KKyAgICBwbGF0Zm9ybS9jb2NvYS9VUkxQ
YXJzZXJDb2NvYS5tbQogICAgIHBsYXRmb3JtL2NvY29hL1ZOb2RlVHJhY2tlckNvY29hLmNwcAog
ICAgIHBsYXRmb3JtL2NvY29hL1dlYkNvcmVOU0Vycm9yRXh0cmFzLm1tCiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVVJMLmNwcAkocmV2aXNpb24gMjA1MTcxKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVVJMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
IkRlY29kZUVzY2FwZVNlcXVlbmNlcy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIK
ICNpbmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKKyNpbmNsdWRlICJVUkxQYXJzZXIuaCIKICNpbmNs
dWRlICJVVUlELmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx1bmljb2RlL3VpZG5h
Lmg+CkBAIC00MzgsMjcgKzQzOSw0MiBAQCB2b2lkIFVSTDo6aW52YWxpZGF0ZSgpCiAKIFVSTDo6
VVJMKFBhcnNlZFVSTFN0cmluZ1RhZywgY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgcGFyc2Uo
dXJsKTsKKyAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpIHsKKyAgICAgICAgVVJMUGFyc2Vy
IHBhcnNlcjsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UodXJsKTsKKyAgICAgICAgQVNT
RVJUKHVybC5pc0VtcHR5KCkgJiYgbV9zdHJpbmcuaXNFbXB0eSgpIHx8IHVybCA9PSBtX3N0cmlu
Zyk7IC8vIEZJWE1FOiBJbnZlc3RpZ2F0ZSBwYXJzaW5nIG5vbi1udWxsIGVtcHR5IFBhcnNlZFVS
TFN0cmluZ3MuCisgICAgfSBlbHNlIHsKKyAgICAgICAgcGFyc2UodXJsKTsKICNpZiBPUyhXSU5E
T1dTKQotICAgIC8vIEZJWE1FKDE0ODU5OCk6IFdvcmsgYXJvdW5kIFdpbmRvd3MgbG9jYWwgZmls
ZSBoYW5kbGluZyBidWcgaW4gQ0ZOZXR3b3JrCi0gICAgQVNTRVJUKGlzTG9jYWxGaWxlKCkgfHwg
dXJsID09IG1fc3RyaW5nKTsKKyAgICAgICAgLy8gRklYTUUoMTQ4NTk4KTogV29yayBhcm91bmQg
V2luZG93cyBsb2NhbCBmaWxlIGhhbmRsaW5nIGJ1ZyBpbiBDRk5ldHdvcmsKKyAgICAgICAgQVNT
RVJUKGlzTG9jYWxGaWxlKCkgfHwgdXJsID09IG1fc3RyaW5nKTsKICNlbHNlCi0gICAgQVNTRVJU
KHVybCA9PSBtX3N0cmluZyk7CisgICAgICAgIEFTU0VSVCh1cmwgPT0gbV9zdHJpbmcpOwogI2Vu
ZGlmCisgICAgfQogfQogCiBVUkw6OlVSTChjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYg
cmVsYXRpdmUpCiB7Ci0gICAgaW5pdChiYXNlLCByZWxhdGl2ZSwgVVRGOEVuY29kaW5nKCkpOwor
ICAgIGlmIChVUkxQYXJzZXI6OmVuYWJsZWQoKSkgeworICAgICAgICBVUkxQYXJzZXIgcGFyc2Vy
OworICAgICAgICAqdGhpcyA9IHBhcnNlci5wYXJzZShyZWxhdGl2ZSwgYmFzZSk7CisgICAgfSBl
bHNlCisgICAgICAgIGluaXQoYmFzZSwgcmVsYXRpdmUsIFVURjhFbmNvZGluZygpKTsKIH0KIAog
VVJMOjpVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBU
ZXh0RW5jb2RpbmcmIGVuY29kaW5nKQogewotICAgIC8vIEZvciBVVEYtezcsMTYsMzJ9LCB3ZSB3
YW50IHRvIHVzZSBVVEYtOCBmb3IgdGhlIHF1ZXJ5IHBhcnQgYXMgCi0gICAgLy8gd2UgZG8gd2hl
biBzdWJtaXR0aW5nIGEgZm9ybS4gQSBmb3JtIHdpdGggR0VUIG1ldGhvZAotICAgIC8vIGhhcyBp
dHMgY29udGVudHMgYWRkZWQgdG8gYSBVUkwgYXMgcXVlcnkgcGFyYW1zIGFuZCBpdCBtYWtlcyBz
ZW5zZQotICAgIC8vIHRvIGJlIGNvbnNpc3RlbnQuCi0gICAgaW5pdChiYXNlLCByZWxhdGl2ZSwg
ZW5jb2RpbmcuZW5jb2RpbmdGb3JGb3JtU3VibWlzc2lvbigpKTsKKyAgICBpZiAoVVJMUGFyc2Vy
OjplbmFibGVkKCkpIHsKKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcjsKKyAgICAgICAgKnRoaXMg
PSBwYXJzZXIucGFyc2UocmVsYXRpdmUsIGJhc2UsIGVuY29kaW5nKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICAvLyBGb3IgVVRGLXs3LDE2LDMyfSwgd2Ugd2FudCB0byB1c2UgVVRGLTggZm9yIHRo
ZSBxdWVyeSBwYXJ0IGFzCisgICAgICAgIC8vIHdlIGRvIHdoZW4gc3VibWl0dGluZyBhIGZvcm0u
IEEgZm9ybSB3aXRoIEdFVCBtZXRob2QKKyAgICAgICAgLy8gaGFzIGl0cyBjb250ZW50cyBhZGRl
ZCB0byBhIFVSTCBhcyBxdWVyeSBwYXJhbXMgYW5kIGl0IG1ha2VzIHNlbnNlCisgICAgICAgIC8v
IHRvIGJlIGNvbnNpc3RlbnQuCisgICAgICAgIGluaXQoYmFzZSwgcmVsYXRpdmUsIGVuY29kaW5n
LmVuY29kaW5nRm9yRm9ybVN1Ym1pc3Npb24oKSk7CisgICAgfQogfQogCiBzdGF0aWMgYm9vbCBz
aG91bGRUcmltRnJvbVVSTChVQ2hhciBjKQpAQCAtNDcxLDYgKzQ4Nyw5IEBAIHN0YXRpYyBib29s
IHNob3VsZFRyaW1Gcm9tVVJMKFVDaGFyIGMpCiAKIHZvaWQgVVJMOjppbml0KGNvbnN0IFVSTCYg
YmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGlu
ZykKIHsKKyAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpCisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworCiAgICAgLy8gQWxsb3cgcmVzb2x1dGlvbnMgd2l0aCBhIG51bGwgb3IgZW1w
dHkgYmFzZSBVUkwsIGJ1dCBub3Qgd2l0aCBhbnkgb3RoZXIgaW52YWxpZCBvbmUuCiAgICAgLy8g
RklYTUU6IElzIHRoaXMgYSBnb29kIHJ1bGU/CiAgICAgaWYgKCFiYXNlLm1faXNWYWxpZCAmJiAh
YmFzZS5pc0VtcHR5KCkpIHsKQEAgLTgyOSwxMSArODQ4LDIwIEBAIGJvb2wgVVJMOjpzZXRQcm90
b2NvbChjb25zdCBTdHJpbmcmIHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICgh
bV9pc1ZhbGlkKSB7Ci0gICAgICAgIHBhcnNlKG5ld1Byb3RvY29sICsgJzonICsgbV9zdHJpbmcp
OworICAgICAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpIHsKKyAgICAgICAgICAgIFVSTFBh
cnNlciBwYXJzZXI7CisgICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5wYXJzZShtYWtlU3RyaW5n
KG5ld1Byb3RvY29sLCAiOiIsIG1fc3RyaW5nKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgcGFyc2UobmV3UHJvdG9jb2wgKyAnOicgKyBtX3N0cmluZyk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAotICAgIHBhcnNlKG5ld1Byb3RvY29sICsgbV9zdHJpbmcuc3Vic3RyaW5n
KG1fc2NoZW1lRW5kKSk7CisgICAgaWYgKFVSTFBhcnNlcjo6ZW5hYmxlZCgpKSB7CisgICAgICAg
IFVSTFBhcnNlciBwYXJzZXI7CisgICAgICAgICp0aGlzID0gcGFyc2VyLnBhcnNlKG1ha2VTdHJp
bmcobmV3UHJvdG9jb2wsIG1fc3RyaW5nLnN1YnN0cmluZyhtX3NjaGVtZUVuZCkpKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgcGFyc2UobmV3UHJvdG9jb2wgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9z
Y2hlbWVFbmQpKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC05MDAsMTQgKzkyOCwyMiBA
QCB2b2lkIFVSTDo6c2V0SG9zdChjb25zdCBTdHJpbmcmIHMpCiAgICAgYnVpbGRlci5hcHBlbmQo
U3RyaW5nVmlldyhlbmNvZGVkSG9zdE5hbWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgp
KSk7CiAgICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCkpOwog
ICAgIAotICAgIHBhcnNlKGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgaWYgKFVSTFBhcnNlcjo6
ZW5hYmxlZCgpKSB7CisgICAgICAgIFVSTFBhcnNlciBwYXJzZXI7CisgICAgICAgICp0aGlzID0g
cGFyc2VyLnBhcnNlKGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgfSBlbHNlCisgICAgICAgIHBh
cnNlKGJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAKIHZvaWQgVVJMOjpyZW1vdmVQb3J0KCkKIHsK
ICAgICBpZiAobV9ob3N0RW5kID09IG1fcG9ydEVuZCkKICAgICAgICAgcmV0dXJuOwotICAgIHBh
cnNlKG1fc3RyaW5nLmxlZnQobV9ob3N0RW5kKSArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRF
bmQpKTsKKyAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpIHsKKyAgICAgICAgVVJMUGFyc2Vy
IHBhcnNlcjsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobV9zdHJpbmcubGVmdChtX2hv
c3RFbmQpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOworICAgIH0gZWxzZQorICAg
ICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1faG9zdEVuZCkgKyBtX3N0cmluZy5zdWJzdHJpbmco
bV9wb3J0RW5kKSk7CiB9CiAKIHZvaWQgVVJMOjpzZXRQb3J0KHVuc2lnbmVkIHNob3J0IGkpCkBA
IC05MTgsNyArOTU0LDExIEBAIHZvaWQgVVJMOjpzZXRQb3J0KHVuc2lnbmVkIHNob3J0IGkpCiAg
ICAgYm9vbCBjb2xvbk5lZWRlZCA9IG1fcG9ydEVuZCA9PSBtX2hvc3RFbmQ7CiAgICAgdW5zaWdu
ZWQgcG9ydFN0YXJ0ID0gKGNvbG9uTmVlZGVkID8gbV9ob3N0RW5kIDogbV9ob3N0RW5kICsgMSk7
CiAKLSAgICBwYXJzZShtX3N0cmluZy5sZWZ0KHBvcnRTdGFydCkgKyAoY29sb25OZWVkZWQgPyAi
OiIgOiAiIikgKyBTdHJpbmc6Om51bWJlcihpKSArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRF
bmQpKTsKKyAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpIHsKKyAgICAgICAgVVJMUGFyc2Vy
IHBhcnNlcjsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobWFrZVN0cmluZyhtX3N0cmlu
Zy5sZWZ0KHBvcnRTdGFydCksIChjb2xvbk5lZWRlZCA/ICI6IiA6ICIiKSwgU3RyaW5nOjpudW1i
ZXIoaSksIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQpKSk7CisgICAgfSBlbHNlCisgICAg
ICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQocG9ydFN0YXJ0KSArIChjb2xvbk5lZWRlZCA/ICI6IiA6
ICIiKSArIFN0cmluZzo6bnVtYmVyKGkpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkp
OwogfQogCiB2b2lkIFVSTDo6c2V0SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJiBob3N0QW5kUG9y
dCkKQEAgLTk1OSw3ICs5OTksMTEgQEAgdm9pZCBVUkw6OnNldEhvc3RBbmRQb3J0KGNvbnN0IFN0
cmluZyYgaAogICAgIH0KICAgICBidWlsZGVyLmFwcGVuZChtX3N0cmluZy5zdWJzdHJpbmcobV9w
b3J0RW5kKSk7CiAKLSAgICBwYXJzZShidWlsZGVyLnRvU3RyaW5nKCkpOworICAgIGlmIChVUkxQ
YXJzZXI6OmVuYWJsZWQoKSkgeworICAgICAgICBVUkxQYXJzZXIgcGFyc2VyOworICAgICAgICAq
dGhpcyA9IHBhcnNlci5wYXJzZShidWlsZGVyLnRvU3RyaW5nKCkpOworICAgIH0gZWxzZQorICAg
ICAgICBwYXJzZShidWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCiB2b2lkIFVSTDo6c2V0VXNlcihj
b25zdCBTdHJpbmcmIHVzZXIpCkBAIC05NzgsMTQgKzEwMjIsMjMgQEAgdm9pZCBVUkw6OnNldFVz
ZXIoY29uc3QgU3RyaW5nJiB1c2VyKQogICAgICAgICAvLyBBZGQgJ0AnIGlmIHdlIGRpZG4ndCBo
YXZlIG9uZSBiZWZvcmUuCiAgICAgICAgIGlmIChlbmQgPT0gbV9ob3N0RW5kIHx8IChlbmQgPT0g
bV9wYXNzd29yZEVuZCAmJiBtX3N0cmluZ1tlbmRdICE9ICdAJykpCiAgICAgICAgICAgICB1LmFw
cGVuZCgnQCcpOwotICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fdXNlclN0YXJ0KSArIHUg
KyBtX3N0cmluZy5zdWJzdHJpbmcoZW5kKSk7CisgICAgICAgIGlmIChVUkxQYXJzZXI6OmVuYWJs
ZWQoKSkgeworICAgICAgICAgICAgVVJMUGFyc2VyIHBhcnNlcjsKKyAgICAgICAgICAgICp0aGlz
ID0gcGFyc2VyLnBhcnNlKG1ha2VTdHJpbmcobV9zdHJpbmcubGVmdChtX3VzZXJTdGFydCksIHUs
IG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
cGFyc2UobV9zdHJpbmcubGVmdChtX3VzZXJTdGFydCkgKyB1ICsgbV9zdHJpbmcuc3Vic3RyaW5n
KGVuZCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFJlbW92ZSAnQCcgaWYgd2Ugbm93IGhh
dmUgbmVpdGhlciB1c2VyIG5vciBwYXNzd29yZC4KICAgICAgICAgaWYgKG1fdXNlckVuZCA9PSBt
X3Bhc3N3b3JkRW5kICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcp
CiAgICAgICAgICAgICBlbmQgKz0gMTsKICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYXJz
ZSBpbiB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBub3QgZ29pbmcgdG8g
bWFrZSBhIGNoYW5nZS4KLSAgICAgICAgaWYgKG1fdXNlclN0YXJ0ICE9IGVuZCkKLSAgICAgICAg
ICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV91c2VyU3RhcnQpICsgbV9zdHJpbmcuc3Vic3RyaW5n
KGVuZCkpOworICAgICAgICBpZiAobV91c2VyU3RhcnQgIT0gZW5kKSB7CisgICAgICAgICAgICBp
ZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpIHsKKyAgICAgICAgICAgICAgICBVUkxQYXJzZXIgcGFy
c2VyOworICAgICAgICAgICAgICAgICp0aGlzID0gcGFyc2VyLnBhcnNlKG1ha2VTdHJpbmcobV9z
dHJpbmcubGVmdChtX3VzZXJTdGFydCksIG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKSk7CisgICAg
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fdXNl
clN0YXJ0KSArIG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKTsKKyAgICAgICAgfQogICAgIH0KIH0K
IApAQCAtMTAwMiwxNCArMTA1NSwyMyBAQCB2b2lkIFVSTDo6c2V0UGFzcyhjb25zdCBTdHJpbmcm
IHBhc3N3b3JkCiAgICAgICAgIC8vIEVhdCB0aGUgZXhpc3RpbmcgJ0AnIHNpbmNlIHdlIGFyZSBn
b2luZyB0byBhZGQgb3VyIG93bi4KICAgICAgICAgaWYgKGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9z
dHJpbmdbZW5kXSA9PSAnQCcpCiAgICAgICAgICAgICBlbmQgKz0gMTsKLSAgICAgICAgcGFyc2Uo
bV9zdHJpbmcubGVmdChtX3VzZXJFbmQpICsgcCArIG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKTsK
KyAgICAgICAgaWYgKFVSTFBhcnNlcjo6ZW5hYmxlZCgpKSB7CisgICAgICAgICAgICBVUkxQYXJz
ZXIgcGFyc2VyOworICAgICAgICAgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobWFrZVN0cmluZyht
X3N0cmluZy5sZWZ0KG1fdXNlckVuZCksIHAsIG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKSk7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3VzZXJFbmQp
ICsgcCArIG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKTsKICAgICB9IGVsc2UgewogICAgICAgICAv
LyBSZW1vdmUgJ0AnIGlmIHdlIG5vdyBoYXZlIG5laXRoZXIgdXNlciBub3IgcGFzc3dvcmQuCiAg
ICAgICAgIGlmIChtX3VzZXJTdGFydCA9PSBtX3VzZXJFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAm
JiBtX3N0cmluZ1tlbmRdID09ICdAJykKICAgICAgICAgICAgIGVuZCArPSAxOwogICAgICAgICAv
LyBXZSBkb24ndCB3YW50IHRvIHBhcnNlIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hl
cmUgd2UgYXJlIG5vdCBnb2luZyB0byBtYWtlIGEgY2hhbmdlLgotICAgICAgICBpZiAobV91c2Vy
RW5kICE9IGVuZCkKLSAgICAgICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV91c2VyRW5kKSAr
IG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKTsKKyAgICAgICAgaWYgKG1fdXNlckVuZCAhPSBlbmQp
IHsKKyAgICAgICAgICAgIGlmIChVUkxQYXJzZXI6OmVuYWJsZWQoKSkgeworICAgICAgICAgICAg
ICAgIFVSTFBhcnNlciBwYXJzZXI7CisgICAgICAgICAgICAgICAgKnRoaXMgPSBwYXJzZXIucGFy
c2UobWFrZVN0cmluZyhtX3N0cmluZy5sZWZ0KG1fdXNlckVuZCksIG1fc3RyaW5nLnN1YnN0cmlu
ZyhlbmQpKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBwYXJzZShtX3N0
cmluZy5sZWZ0KG1fdXNlckVuZCkgKyBtX3N0cmluZy5zdWJzdHJpbmcoZW5kKSk7CisgICAgICAg
IH0KICAgICB9CiB9CiAKQEAgLTEwMTksMTQgKzEwODEsMjMgQEAgdm9pZCBVUkw6OnNldEZyYWdt
ZW50SWRlbnRpZmllcihjb25zdCBTdAogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTog
Tm9uLUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNo
IHBhcnNlKCkgZXhwZWN0YXRpb25zLgotICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9xdWVyeUVu
ZCkgKyAiIyIgKyBzKTsKKyAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpIHsKKyAgICAgICAg
VVJMUGFyc2VyIHBhcnNlcjsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobWFrZVN0cmlu
ZyhtX3N0cmluZy5sZWZ0KG1fcXVlcnlFbmQpLCAiIyIsIHMpKTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3F1ZXJ5RW5kKSArICIjIiArIHMpOwogfQogCiB2b2lk
IFVSTDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCkKIHsKICAgICBpZiAoIW1faXNWYWxpZCkK
ICAgICAgICAgcmV0dXJuOwotICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9xdWVyeUVuZCkpOwor
ICAgIGlmIChVUkxQYXJzZXI6OmVuYWJsZWQoKSkgeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkbid0IG5lZWQgdG8gcGFyc2UgaGVyZS4KKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcjsKKyAg
ICAgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobV9zdHJpbmcubGVmdChtX3F1ZXJ5RW5kKSk7Cisg
ICAgfSBlbHNlCisgICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9xdWVyeUVuZCkpOwogfQog
ICAgIAogdm9pZCBVUkw6OnNldFF1ZXJ5KGNvbnN0IFN0cmluZyYgcXVlcnkpCkBAIC0xMDU2LDcg
KzExMjcsMTEgQEAgdm9pZCBVUkw6OnNldFBhdGgoY29uc3QgU3RyaW5nJiBzKQogICAgIGlmIChw
YXRoLmlzRW1wdHkoKSB8fCBwYXRoWzBdICE9ICcvJykKICAgICAgICAgcGF0aCA9ICIvIiArIHBh
dGg7CiAKLSAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fcG9ydEVuZCkgKyBlbmNvZGVXaXRoVVJM
RXNjYXBlU2VxdWVuY2VzKHBhdGgpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcGF0aEVuZCkpOwor
ICAgIGlmIChVUkxQYXJzZXI6OmVuYWJsZWQoKSkgeworICAgICAgICBVUkxQYXJzZXIgcGFyc2Vy
OworICAgICAgICAqdGhpcyA9IHBhcnNlci5wYXJzZShtYWtlU3RyaW5nKG1fc3RyaW5nLmxlZnQo
bV9wb3J0RW5kKSwgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhwYXRoKSwgbV9zdHJpbmcu
c3Vic3RyaW5nKG1fcGF0aEVuZCkpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcGFyc2UobV9zdHJp
bmcubGVmdChtX3BvcnRFbmQpICsgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhwYXRoKSAr
IG1fc3RyaW5nLnN1YnN0cmluZyhtX3BhdGhFbmQpKTsKIH0KIAogU3RyaW5nIGRlY29kZVVSTEVz
Y2FwZVNlcXVlbmNlcyhjb25zdCBTdHJpbmcmIHN0cmluZykKQEAgLTExODcsNiArMTI2Miw4IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBoYXNTbGFzaERvdE9yRG90RG90KGMKIAogdm9pZCBVUkw6OnBh
cnNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogeworICAgIGlmIChVUkxQYXJzZXI6OmVuYWJsZWQo
KSkKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgY2hlY2tFbmNvZGVkU3RyaW5n
KHN0cmluZyk7CiAKICAgICBDaGFyQnVmZmVyIGJ1ZmZlcihzdHJpbmcubGVuZ3RoKCkgKyAxKTsK
QEAgLTEzNTQsNiArMTQzMSw4IEBAIHN0YXRpYyBib29sIGlzQ2Fub25pY2FsSG9zdG5hbWVMb3dl
cmNhc2UKIAogdm9pZCBVUkw6OnBhcnNlKGNvbnN0IGNoYXIqIHVybCwgY29uc3QgU3RyaW5nKiBv
cmlnaW5hbFN0cmluZykKIHsKKyAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpCisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIGlmICghdXJsIHx8IHVybFswXSA9PSAnXDAnKSB7
CiAgICAgICAgIC8vIHZhbGlkIFVSTCBtdXN0IGJlIG5vbi1lbXB0eQogICAgICAgICBtX3N0cmlu
ZyA9IG9yaWdpbmFsU3RyaW5nID8gKm9yaWdpbmFsU3RyaW5nIDogdXJsOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuY3BwCShyZXZpc2lvbiAyMDUxOTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNiAr
MTMwLDcgQEAgdm9pZCBVUkxQYXJzZXI6OmNvcHlVUkxQYXJ0c1VudGlsKGNvbnN0IAogICAgIAog
VVJMIFVSTFBhcnNlcjo6cGFyc2UoY29uc3QgU3RyaW5nJiBpbnB1dCwgY29uc3QgVVJMJiBiYXNl
LCBjb25zdCBUZXh0RW5jb2RpbmcmKQogeworICAgIExPRyhVUkxQYXJzZXIsICJQYXJzaW5nIFVS
TCA8JXM+IGJhc2UgPCVzPiIsIGlucHV0LnV0ZjgoKS5kYXRhKCksIGJhc2Uuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgbV91cmwgPSB7IH07CiAgICAgbV9idWZmZXIuY2xlYXIoKTsKICAg
ICBtX2F1dGhvcml0eU9ySG9zdEJ1ZmZlci5jbGVhcigpOwpAQCAtNzQ1LDQgKzc0NiwxNiBAQCBi
b29sIFVSTFBhcnNlcjo6YWxsVmFsdWVzRXF1YWwoY29uc3QgVVJMCiAgICAgICAgICYmIGEubV9m
cmFnbWVudEVuZCA9PSBiLm1fZnJhZ21lbnRFbmQ7CiB9CiAKK3N0YXRpYyBib29sIHVybFBhcnNl
ckVuYWJsZWQgPSBmYWxzZTsKKwordm9pZCBVUkxQYXJzZXI6OnNldEVuYWJsZWQoYm9vbCBlbmFi
bGVkKQoreworICAgIHVybFBhcnNlckVuYWJsZWQgPSBlbmFibGVkOworfQorCitib29sIFVSTFBh
cnNlcjo6ZW5hYmxlZCgpCit7CisgICAgcmV0dXJuIHVybFBhcnNlckVuYWJsZWQ7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBh
cnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5o
CShyZXZpc2lvbiAyMDUxNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsOSBAQCBjbGFzcyBVUkxQYXJzZXIgewogcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCBwYXJzZShjb25zdCBTdHJpbmcmLCBjb25zdCBV
UkwmID0geyB9LCBjb25zdCBUZXh0RW5jb2RpbmcmID0gVVRGOEVuY29kaW5nKCkpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGFsbFZhbHVlc0VxdWFsKGNvbnN0IFVSTCYsIGNvbnN0
IFVSTCYpOworCisgICAgc3RhdGljIGJvb2wgZW5hYmxlZCgpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CiBwcml2YXRlOgogICAgIFVSTCBtX3VybDsK
ICAgICBTdHJpbmdCdWlsZGVyIG1fYnVmZmVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvVVJMUGFyc2VyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvVVJMUGFyc2VyQ29jb2EubW0JKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVVJMUGFyc2VyQ29jb2EubW0JKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiVVJMUGFyc2VyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2Jvb2wgVVJMUGFy
c2VyOjpVUkxQYXJzZXJFbmFibGVkKCkKK3sKKyAgICBzdGF0aWMgYm9vbCB1c2UgPSBbW05TVXNl
ckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OkAiVVJMUGFyc2VyRW5h
YmxlZCJdOworICAgIHJldHVybiB1c2U7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9VUkxNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1VSTE1hYy5tbQkocmV2aXNpb24gMjA1MTcxKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1VSTE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2lt
cG9ydCAiVVJMLmgiCiAKICNpbXBvcnQgIkNGVVJMRXh0cmFzLmgiCisjaW1wb3J0ICJVUkxQYXJz
ZXIuaCIKICNpbXBvcnQgPHd0Zi9PYmpjUnVudGltZUV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogCkBAIC00Miw3ICs0MywxMSBAQCBVUkw6OlVSTChOU1VSTCAqdXJsKQog
ICAgIC8vIEZJWE1FOiBXaHkgaXMgaXQgT0sgdG8gaWdub3JlIGJhc2UgVVJMIGhlcmU/CiAgICAg
Q1N0cmluZyB1cmxCeXRlczsKICAgICBnZXRVUkxCeXRlcyhyZWludGVycHJldF9jYXN0PENGVVJM
UmVmPih1cmwpLCB1cmxCeXRlcyk7Ci0gICAgcGFyc2UodXJsQnl0ZXMuZGF0YSgpKTsKKyAgICBp
ZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpIHsKKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcjsKKyAg
ICAgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UodXJsQnl0ZXMuZGF0YSgpKTsKKyAgICB9IGVsc2UK
KyAgICAgICAgcGFyc2UodXJsQnl0ZXMuZGF0YSgpKTsKIH0KIAogVVJMOjpvcGVyYXRvciBOU1VS
TCAqKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTE5OCkKKysrIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE2LTA4
LTMwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgQWRkIHJ1bnRpbWUgZmxhZyBmb3IgdXNpbmcgVVJMUGFyc2VyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEzNjMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAg
ICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgor
ICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViS2l0Mik6CisgICAgICAgICog
U2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5pdGlhbGl6
ZVdlYktpdDIpOgorICAgICAgICAqIFNoYXJlZC9XZWJLaXQySW5pdGlhbGl6ZS5oOgorICAgICAg
ICAqIFNoYXJlZC9lZmwvV2ViS2l0MkluaXRpYWxpemVFRkwuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViS2l0Mik6CisgICAgICAgICogU2hhcmVkL2d0
ay9XZWJLaXQySW5pdGlhbGl6ZUdUSy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpwbGF0
Zm9ybUluaXRpYWxpemVXZWJLaXQyKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisKIDIwMTYtMDgtMzAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIEludHJvZHVjZSB0aGUgVGhyb3dTY29wZSBhbmQgZm9yY2UgZXZlcnkgdGhy
b3cgc2l0ZSB0byBpbnN0YW50aWF0ZSBhIFRocm93U2NvcGUuCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZQkocmV2aXNpb24gMjA1MTcxKQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm1F
ZmwuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgbGlzdChBUFBFTkQgV2Vi
S2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVkL2VmbC9OYXRpdmVXZWJXaGVlbEV2ZW50RWZsLmNwcAog
ICAgIFNoYXJlZC9lZmwvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoRWZsLmNwcAogICAgIFNoYXJlZC9l
ZmwvV2ViRXZlbnRGYWN0b3J5LmNwcAorICAgIFNoYXJlZC9lZmwvV2ViS2l0MkluaXRpYWxpemVF
RkwuY3BwCiAKICAgICBTaGFyZWQvbGludXgvV2ViTWVtb3J5U2FtcGxlckxpbnV4LmNwcAogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQkocmV2aXNpb24gMjA1MTcxKQorKysgU291cmNl
L1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcg
QEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVkL2d0ay9Qcm9jZXNzRXhl
Y3V0YWJsZVBhdGhHdGsuY3BwCiAgICAgU2hhcmVkL2d0ay9XZWJDb250ZXh0TWVudUl0ZW1HdGsu
Y3BwCiAgICAgU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCisgICAgU2hhcmVkL2d0ay9X
ZWJLaXQySW5pdGlhbGl6ZUdUSy5jcHAKIAogICAgIFNoYXJlZC9saW51eC9XZWJNZW1vcnlTYW1w
bGVyTGludXguY3BwCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAy
MDUxNzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQkod29ya2luZyBjb3B5
KQpAQCAtOTksNiArOTksNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBTaGFy
ZWQvQ29jb2EvQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5tbQogICAgIFNoYXJlZC9Db2Nv
YS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCiAgICAgU2hhcmVkL0NvY29hL0xvYWRQYXJhbWV0ZXJz
Q29jb2EubW0KKyAgICBTaGFyZWQvQ29jb2EvV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbQogICAg
IFNoYXJlZC9Db2NvYS9XS05TQXJyYXkubW0KICAgICBTaGFyZWQvQ29jb2EvV0tOU0RhdGEubW0K
ICAgICBTaGFyZWQvQ29jb2EvV0tOU0RpY3Rpb25hcnkubW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJLaXQySW5pdGlhbGl6ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNwcAkocmV2aXNpb24gMjA1MTcxKQorKysgU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiTG9nSW5pdGlhbGl6YXRpb24uaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0xvZ0luaXRpYWxpemF0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkxQ
YXJzZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC00Niw2
ICs0Nyw3IEBAIHZvaWQgSW5pdGlhbGl6ZVdlYktpdDIoKQogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKCk7CiAjZW5kaWYKKyAgICBwbGF0Zm9ybUlu
aXRpYWxpemVXZWJLaXQyKCk7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIEluaXRXZWJDb3JlVGhy
ZWFkU3lzdGVtSW50ZXJmYWNlKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJLaXQySW5pdGlhbGl6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJLaXQySW5pdGlhbGl6ZS5oCShyZXZpc2lvbiAyMDUxNzEpCisrKyBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViS2l0MkluaXRpYWxpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTMgKzIz
LDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBXZWJLaXQySW5pdGlhbGl6ZV9oCi0jZGVmaW5lIFdlYktpdDJJbml0aWFsaXplX2gKKyNwcmFn
bWEgb25jZQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBJbml0aWFsaXplV2ViS2l0Migp
Owordm9pZCBwbGF0Zm9ybUluaXRpYWxpemVXZWJLaXQyKCk7CiAKIH07Ci0KLSNlbmRpZiAvLyBX
ZWJLaXQySW5pdGlhbGl6ZV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvV2Vi
S2l0MkluaXRpYWxpemVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQ29jb2EvV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJXZWJLaXQySW5pdGlhbGl6ZS5oIgorCisjaW1wb3J0IDxXZWJDb3JlL1VSTFBh
cnNlci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3ZvaWQgcGxhdGZvcm1Jbml0aWFsaXplV2ViS2l0MigpCit7CisgICAgc3RhdGljIGRpc3Bh
dGNoX29uY2VfdCBpbml0T25jZTsKKyAgICAKKyAgICBkaXNwYXRjaF9vbmNlKCZpbml0T25jZSwg
XiB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRU5BQkxFRCAlZCIsIGdldHBpZCgpKTsKKyAgICAg
ICAgVVJMUGFyc2VyOjpzZXRFbmFibGVkKFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVm
YXVsdHNdIGJvb2xGb3JLZXk6QCJVUkxQYXJzZXJFbmFibGVkIl0pOworICAgIH0pOworfQorCit9
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYktpdDJJbml0aWFsaXplRUZMLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYktpdDJJbml0aWFs
aXplRUZMLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dl
YktpdDJJbml0aWFsaXplRUZMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdDJJbml0aWFs
aXplLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZVdl
YktpdDIoKQoreworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYktp
dDJJbml0aWFsaXplR1RLLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Z3RrL1dlYktpdDJJbml0aWFsaXplR1RLLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvZ3RrL1dlYktpdDJJbml0aWFsaXplR1RLLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldlYktpdDJJbml0aWFsaXplLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIHBs
YXRmb3JtSW5pdGlhbGl6ZVdlYktpdDIoKQoreworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDUx
NzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNTUsNiArMTA1NSw3IEBACiAJCTVDMjBDQkEwMUJCMUVDRDgw
MDg5NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUMyMENCOUUxQkIwREQxODAwODk1QkIxIC8qIE5ldHdvcmtTZXNz
aW9uLmggKi87IH07CiAJCTVDMjk4REEwMUMzREYwMjEwMDQ3MEFGRSAvKiBQZW5kaW5nRG93bmxv
YWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMjk4
RDlFMUMzREVGMjkwMDQ3MEFGRSAvKiBQZW5kaW5nRG93bmxvYWQuaCAqLzsgfTsKIAkJNUM3NzA2
NzQxRDExMzgzODAwMTI3MDBGIC8qIFdlYlNvY2tldFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNzcwNjczMUQxMTFEOEIwMDEyNzAw
RiAvKiBXZWJTb2NrZXRQcm92aWRlci5jcHAgKi87IH07CisJCTVDNzk0MzlCMUQ3NjJENjIwMDMx
MDJENCAvKiBXZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM3OTQzOUExRDc2MkNERjAwMzEwMkQ0IC8qIFdlYktp
dDJJbml0aWFsaXplQ29jb2EubW0gKi87IH07CiAJCTVDODVDNzg4MUMzRjIzQ0UwMDYxQTRGQSAv
KiBQZW5kaW5nRG93bmxvYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUM4NUM3ODYxQzNGMjNDNTAwNjFBNEZBIC8qIFBlbmRpbmdEb3dubG9hZC5j
cHAgKi87IH07CiAJCTVDQkM5QjhEMUM2NTI3OUMwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2tD
b2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
QkM5QjhCMUM2NTI1NzMwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSAqLzsgfTsK
IAkJNUNCQzlCOEUxQzY1MkNBMDAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFzay5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCQzlCODkxQzY1MjRBNTAw
QThGRENGIC8qIE5ldHdvcmtEYXRhVGFzay5oICovOyB9OwpAQCAtMzExOSw2ICszMTIwLDcgQEAK
IAkJNUMyMENCOUUxQkIwREQxODAwODk1QkIxIC8qIE5ldHdvcmtTZXNzaW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtTZXNzaW9uLmg7IHBhdGggPSBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
QzI5OEQ5RTFDM0RFRjI5MDA0NzBBRkUgLyogUGVuZGluZ0Rvd25sb2FkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBlbmRpbmdEb3dubG9hZC5oOyBwYXRoID0gTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1Qzc3MDY3MzFEMTExRDhCMDAxMjcwMEYgLyogV2ViU29ja2V0UHJvdmlkZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViU29ja2V0UHJvdmlkZXIu
Y3BwOyBwYXRoID0gTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTVDNzk0MzlBMUQ3NjJDREYwMDMxMDJENCAvKiBXZWJLaXQySW5pdGlh
bGl6ZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
S2l0MkluaXRpYWxpemVDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3
Qzg4REMxRDBGNDFBMDAwOUQyRjZEIC8qIFdlYlNvY2tldFByb3ZpZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlNvY2tldFByb3ZpZGVyLmg7IHBhdGggPSBOZXR3b3Jr
L1dlYlNvY2tldFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDODVD
Nzg2MUMzRjIzQzUwMDYxQTRGQSAvKiBQZW5kaW5nRG93bmxvYWQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUGVuZGluZ0Rvd25sb2FkLmNwcDsgcGF0aCA9IE5ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1Q0JDOUI4OTFDNjUyNEE1MDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtEYXRhVGFzay5oOyBw
YXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC01MjY4LDYgKzUyNzAsNyBAQAogCQkzN0M0QzA5MDE4MTRCMzdCMDAzNjg4
QjkgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTVDNzk0MzlBMUQ3NjJDREYwMDMxMDJENCAvKiBXZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1t
ICovLAogCQkJCTFBMUVGMTk3MUExRDVCNDIwMDIzMjAwQSAvKiBBUElEYXRhQ29jb2EubW0gKi8s
CiAJCQkJMzc4RTFBM0IxODFFRDZGRjAwMzEwMDdBIC8qIEFQSU9iamVjdC5tbSAqLywKIAkJCQkz
N0JFQzRERjE5NDkxNDg2MDA4QjQyODYgLyogQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5o
ICovLApAQCAtOTY3Niw2ICs5Njc5LDcgQEAKIAkJCQlCQzQwNzYwNTEyNEZGMDI3MDA2OEYyMEEg
LyogV0tTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0MDc2MTkxMjRGRjAzNzAwNjhG
MjBBIC8qIFdLU3RyaW5nQ0YubW0gaW4gU291cmNlcyAqLywKIAkJCQkyNkYxMEJFOTE5MTg3RTJF
MDAxRDBFNjggLyogV0tTeW50aGV0aWNDbGlja1RhcEdlc3R1cmVSZWNvZ25pemVyLm0gaW4gU291
cmNlcyAqLywKKwkJCQk1Qzc5NDM5QjFENzYyRDYyMDAzMTAyRDQgLyogV2ViS2l0MkluaXRpYWxp
emVDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJERDY3QTM2MUJEODYxMDYwMDUzQjI1MSAv
KiBXS1RleHRGaW5kZXJDbGllbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRkNCNEU2OTE4QkJF
M0Q5MDAwRkNGQzkgLyogV0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkM0MDc2MDcxMjRGRjAyNzAwNjhGMjBBIC8qIFdLVHlwZS5jcHAgaW4gU291cmNl
cyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287443</attachid>
            <date>2016-08-30 15:54:29 -0700</date>
            <delta_ts>2016-08-31 09:38:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161363-20160830155218.patch</filename>
            <type>text/plain</type>
            <size>39657</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTE5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE2LTA4LTMwICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHJ1bnRp
bWUgZmxhZyBmb3IgdXNpbmcgVVJMUGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEzNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuICBObyBjaGFuZ2UgaW4gZGVmYXVsdCBi
ZWhhdmlvci4KKworICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIHBsYXRm
b3JtL1VSTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OlVSTCk6CisgICAgICAgIChXZWJD
b3JlOjpVUkw6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpzZXRQcm90b2NvbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpVUkw6OnNldEhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpy
ZW1vdmVQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6c2V0UG9ydCk6CisgICAgICAgIChX
ZWJDb3JlOjpVUkw6OnNldEhvc3RBbmRQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6c2V0
VXNlcik6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OnNldFBhc3MpOgorICAgICAgICAoV2ViQ29y
ZTo6VVJMOjpzZXRGcmFnbWVudElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpy
ZW1vdmVGcmFnbWVudElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpzZXRRdWVy
eSk6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OnNldFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6
VVJMOjpwYXJzZSk6CisgICAgICAgICogcGxhdGZvcm0vVVJMUGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlVSTFBhcnNlcjo6cGFyc2UpOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2Vy
OjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6ZW5hYmxlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vVVJMUGFyc2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvVVJM
Q0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpVUkwpOgorICAgICAgICAqIHBsYXRmb3Jt
L2NvY29hL1VSTFBhcnNlckNvY29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTFBh
cnNlcjo6VVJMUGFyc2VyRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1VSTE1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6VVJMKToKKwogMjAxNi0wOC0zMCAgQnJlbnQgRnVs
Z2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2Ugb2YgdW5pbml0aWFsaXNl
ZCBtZW1vcnkgaW4gVHJhbnNmb3JtYXRpb25NYXRyeDo6YmxlbmQ0KCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAyMDUxNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybU1hYy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMzI5LDYgKzMyOSw3IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2NvY29hL1N5c3RlbVZlcnNpb24ubW0K
ICAgICBwbGF0Zm9ybS9jb2NvYS9UZWxlcGhvbmVOdW1iZXJEZXRlY3RvckNvY29hLmNwcAogICAg
IHBsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EubW0KKyAgICBwbGF0Zm9ybS9jb2NvYS9VUkxQYXJz
ZXJDb2NvYS5tbQogICAgIHBsYXRmb3JtL2NvY29hL1ZOb2RlVHJhY2tlckNvY29hLmNwcAogICAg
IHBsYXRmb3JtL2NvY29hL1dlYkNvcmVOU0Vycm9yRXh0cmFzLm1tCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVVJMLmNwcAkocmV2aXNpb24gMjA1MTcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVVJMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkRl
Y29kZUVzY2FwZVNlcXVlbmNlcy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNp
bmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKKyNpbmNsdWRlICJVUkxQYXJzZXIuaCIKICNpbmNsdWRl
ICJVVUlELmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx1bmljb2RlL3VpZG5hLmg+
CkBAIC00MzgsMjcgKzQzOSw0MiBAQCB2b2lkIFVSTDo6aW52YWxpZGF0ZSgpCiAKIFVSTDo6VVJM
KFBhcnNlZFVSTFN0cmluZ1RhZywgY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgcGFyc2UodXJs
KTsKKyAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpIHsKKyAgICAgICAgVVJMUGFyc2VyIHBh
cnNlcjsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UodXJsKTsKKyAgICAgICAgQVNTRVJU
KHVybC5pc0VtcHR5KCkgJiYgbV9zdHJpbmcuaXNFbXB0eSgpIHx8IHVybCA9PSBtX3N0cmluZyk7
IC8vIEZJWE1FOiBJbnZlc3RpZ2F0ZSBwYXJzaW5nIG5vbi1udWxsIGVtcHR5IFBhcnNlZFVSTFN0
cmluZ3MuCisgICAgfSBlbHNlIHsKKyAgICAgICAgcGFyc2UodXJsKTsKICNpZiBPUyhXSU5ET1dT
KQotICAgIC8vIEZJWE1FKDE0ODU5OCk6IFdvcmsgYXJvdW5kIFdpbmRvd3MgbG9jYWwgZmlsZSBo
YW5kbGluZyBidWcgaW4gQ0ZOZXR3b3JrCi0gICAgQVNTRVJUKGlzTG9jYWxGaWxlKCkgfHwgdXJs
ID09IG1fc3RyaW5nKTsKKyAgICAgICAgLy8gRklYTUUoMTQ4NTk4KTogV29yayBhcm91bmQgV2lu
ZG93cyBsb2NhbCBmaWxlIGhhbmRsaW5nIGJ1ZyBpbiBDRk5ldHdvcmsKKyAgICAgICAgQVNTRVJU
KGlzTG9jYWxGaWxlKCkgfHwgdXJsID09IG1fc3RyaW5nKTsKICNlbHNlCi0gICAgQVNTRVJUKHVy
bCA9PSBtX3N0cmluZyk7CisgICAgICAgIEFTU0VSVCh1cmwgPT0gbV9zdHJpbmcpOwogI2VuZGlm
CisgICAgfQogfQogCiBVUkw6OlVSTChjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgcmVs
YXRpdmUpCiB7Ci0gICAgaW5pdChiYXNlLCByZWxhdGl2ZSwgVVRGOEVuY29kaW5nKCkpOworICAg
IGlmIChVUkxQYXJzZXI6OmVuYWJsZWQoKSkgeworICAgICAgICBVUkxQYXJzZXIgcGFyc2VyOwor
ICAgICAgICAqdGhpcyA9IHBhcnNlci5wYXJzZShyZWxhdGl2ZSwgYmFzZSk7CisgICAgfSBlbHNl
CisgICAgICAgIGluaXQoYmFzZSwgcmVsYXRpdmUsIFVURjhFbmNvZGluZygpKTsKIH0KIAogVVJM
OjpVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBUZXh0
RW5jb2RpbmcmIGVuY29kaW5nKQogewotICAgIC8vIEZvciBVVEYtezcsMTYsMzJ9LCB3ZSB3YW50
IHRvIHVzZSBVVEYtOCBmb3IgdGhlIHF1ZXJ5IHBhcnQgYXMgCi0gICAgLy8gd2UgZG8gd2hlbiBz
dWJtaXR0aW5nIGEgZm9ybS4gQSBmb3JtIHdpdGggR0VUIG1ldGhvZAotICAgIC8vIGhhcyBpdHMg
Y29udGVudHMgYWRkZWQgdG8gYSBVUkwgYXMgcXVlcnkgcGFyYW1zIGFuZCBpdCBtYWtlcyBzZW5z
ZQotICAgIC8vIHRvIGJlIGNvbnNpc3RlbnQuCi0gICAgaW5pdChiYXNlLCByZWxhdGl2ZSwgZW5j
b2RpbmcuZW5jb2RpbmdGb3JGb3JtU3VibWlzc2lvbigpKTsKKyAgICBpZiAoVVJMUGFyc2VyOjpl
bmFibGVkKCkpIHsKKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcjsKKyAgICAgICAgKnRoaXMgPSBw
YXJzZXIucGFyc2UocmVsYXRpdmUsIGJhc2UsIGVuY29kaW5nKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICAvLyBGb3IgVVRGLXs3LDE2LDMyfSwgd2Ugd2FudCB0byB1c2UgVVRGLTggZm9yIHRoZSBx
dWVyeSBwYXJ0IGFzCisgICAgICAgIC8vIHdlIGRvIHdoZW4gc3VibWl0dGluZyBhIGZvcm0uIEEg
Zm9ybSB3aXRoIEdFVCBtZXRob2QKKyAgICAgICAgLy8gaGFzIGl0cyBjb250ZW50cyBhZGRlZCB0
byBhIFVSTCBhcyBxdWVyeSBwYXJhbXMgYW5kIGl0IG1ha2VzIHNlbnNlCisgICAgICAgIC8vIHRv
IGJlIGNvbnNpc3RlbnQuCisgICAgICAgIGluaXQoYmFzZSwgcmVsYXRpdmUsIGVuY29kaW5nLmVu
Y29kaW5nRm9yRm9ybVN1Ym1pc3Npb24oKSk7CisgICAgfQogfQogCiBzdGF0aWMgYm9vbCBzaG91
bGRUcmltRnJvbVVSTChVQ2hhciBjKQpAQCAtNDcxLDYgKzQ4Nyw5IEBAIHN0YXRpYyBib29sIHNo
b3VsZFRyaW1Gcm9tVVJMKFVDaGFyIGMpCiAKIHZvaWQgVVJMOjppbml0KGNvbnN0IFVSTCYgYmFz
ZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZykK
IHsKKyAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpCisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworCiAgICAgLy8gQWxsb3cgcmVzb2x1dGlvbnMgd2l0aCBhIG51bGwgb3IgZW1wdHkg
YmFzZSBVUkwsIGJ1dCBub3Qgd2l0aCBhbnkgb3RoZXIgaW52YWxpZCBvbmUuCiAgICAgLy8gRklY
TUU6IElzIHRoaXMgYSBnb29kIHJ1bGU/CiAgICAgaWYgKCFiYXNlLm1faXNWYWxpZCAmJiAhYmFz
ZS5pc0VtcHR5KCkpIHsKQEAgLTgyOSwxMSArODQ4LDIwIEBAIGJvb2wgVVJMOjpzZXRQcm90b2Nv
bChjb25zdCBTdHJpbmcmIHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV9p
c1ZhbGlkKSB7Ci0gICAgICAgIHBhcnNlKG5ld1Byb3RvY29sICsgJzonICsgbV9zdHJpbmcpOwor
ICAgICAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpIHsKKyAgICAgICAgICAgIFVSTFBhcnNl
ciBwYXJzZXI7CisgICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5wYXJzZShtYWtlU3RyaW5nKG5l
d1Byb3RvY29sLCAiOiIsIG1fc3RyaW5nKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
cGFyc2UobmV3UHJvdG9jb2wgKyAnOicgKyBtX3N0cmluZyk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAotICAgIHBhcnNlKG5ld1Byb3RvY29sICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1f
c2NoZW1lRW5kKSk7CisgICAgaWYgKFVSTFBhcnNlcjo6ZW5hYmxlZCgpKSB7CisgICAgICAgIFVS
TFBhcnNlciBwYXJzZXI7CisgICAgICAgICp0aGlzID0gcGFyc2VyLnBhcnNlKG1ha2VTdHJpbmco
bmV3UHJvdG9jb2wsIG1fc3RyaW5nLnN1YnN0cmluZyhtX3NjaGVtZUVuZCkpKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgcGFyc2UobmV3UHJvdG9jb2wgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9zY2hl
bWVFbmQpKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC05MDAsMTQgKzkyOCwyMiBAQCB2
b2lkIFVSTDo6c2V0SG9zdChjb25zdCBTdHJpbmcmIHMpCiAgICAgYnVpbGRlci5hcHBlbmQoU3Ry
aW5nVmlldyhlbmNvZGVkSG9zdE5hbWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7
CiAgICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCkpOwogICAg
IAotICAgIHBhcnNlKGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgaWYgKFVSTFBhcnNlcjo6ZW5h
YmxlZCgpKSB7CisgICAgICAgIFVSTFBhcnNlciBwYXJzZXI7CisgICAgICAgICp0aGlzID0gcGFy
c2VyLnBhcnNlKGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgfSBlbHNlCisgICAgICAgIHBhcnNl
KGJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAKIHZvaWQgVVJMOjpyZW1vdmVQb3J0KCkKIHsKICAg
ICBpZiAobV9ob3N0RW5kID09IG1fcG9ydEVuZCkKICAgICAgICAgcmV0dXJuOwotICAgIHBhcnNl
KG1fc3RyaW5nLmxlZnQobV9ob3N0RW5kKSArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQp
KTsKKyAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpIHsKKyAgICAgICAgVVJMUGFyc2VyIHBh
cnNlcjsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobV9zdHJpbmcubGVmdChtX2hvc3RF
bmQpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOworICAgIH0gZWxzZQorICAgICAg
ICBwYXJzZShtX3N0cmluZy5sZWZ0KG1faG9zdEVuZCkgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9w
b3J0RW5kKSk7CiB9CiAKIHZvaWQgVVJMOjpzZXRQb3J0KHVuc2lnbmVkIHNob3J0IGkpCkBAIC05
MTgsNyArOTU0LDExIEBAIHZvaWQgVVJMOjpzZXRQb3J0KHVuc2lnbmVkIHNob3J0IGkpCiAgICAg
Ym9vbCBjb2xvbk5lZWRlZCA9IG1fcG9ydEVuZCA9PSBtX2hvc3RFbmQ7CiAgICAgdW5zaWduZWQg
cG9ydFN0YXJ0ID0gKGNvbG9uTmVlZGVkID8gbV9ob3N0RW5kIDogbV9ob3N0RW5kICsgMSk7CiAK
LSAgICBwYXJzZShtX3N0cmluZy5sZWZ0KHBvcnRTdGFydCkgKyAoY29sb25OZWVkZWQgPyAiOiIg
OiAiIikgKyBTdHJpbmc6Om51bWJlcihpKSArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQp
KTsKKyAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpIHsKKyAgICAgICAgVVJMUGFyc2VyIHBh
cnNlcjsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobWFrZVN0cmluZyhtX3N0cmluZy5s
ZWZ0KHBvcnRTdGFydCksIChjb2xvbk5lZWRlZCA/ICI6IiA6ICIiKSwgU3RyaW5nOjpudW1iZXIo
aSksIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQpKSk7CisgICAgfSBlbHNlCisgICAgICAg
IHBhcnNlKG1fc3RyaW5nLmxlZnQocG9ydFN0YXJ0KSArIChjb2xvbk5lZWRlZCA/ICI6IiA6ICIi
KSArIFN0cmluZzo6bnVtYmVyKGkpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOwog
fQogCiB2b2lkIFVSTDo6c2V0SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJiBob3N0QW5kUG9ydCkK
QEAgLTk1OSw3ICs5OTksMTEgQEAgdm9pZCBVUkw6OnNldEhvc3RBbmRQb3J0KGNvbnN0IFN0cmlu
ZyYgaAogICAgIH0KICAgICBidWlsZGVyLmFwcGVuZChtX3N0cmluZy5zdWJzdHJpbmcobV9wb3J0
RW5kKSk7CiAKLSAgICBwYXJzZShidWlsZGVyLnRvU3RyaW5nKCkpOworICAgIGlmIChVUkxQYXJz
ZXI6OmVuYWJsZWQoKSkgeworICAgICAgICBVUkxQYXJzZXIgcGFyc2VyOworICAgICAgICAqdGhp
cyA9IHBhcnNlci5wYXJzZShidWlsZGVyLnRvU3RyaW5nKCkpOworICAgIH0gZWxzZQorICAgICAg
ICBwYXJzZShidWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCiB2b2lkIFVSTDo6c2V0VXNlcihjb25z
dCBTdHJpbmcmIHVzZXIpCkBAIC05NzgsMTQgKzEwMjIsMjMgQEAgdm9pZCBVUkw6OnNldFVzZXIo
Y29uc3QgU3RyaW5nJiB1c2VyKQogICAgICAgICAvLyBBZGQgJ0AnIGlmIHdlIGRpZG4ndCBoYXZl
IG9uZSBiZWZvcmUuCiAgICAgICAgIGlmIChlbmQgPT0gbV9ob3N0RW5kIHx8IChlbmQgPT0gbV9w
YXNzd29yZEVuZCAmJiBtX3N0cmluZ1tlbmRdICE9ICdAJykpCiAgICAgICAgICAgICB1LmFwcGVu
ZCgnQCcpOwotICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fdXNlclN0YXJ0KSArIHUgKyBt
X3N0cmluZy5zdWJzdHJpbmcoZW5kKSk7CisgICAgICAgIGlmIChVUkxQYXJzZXI6OmVuYWJsZWQo
KSkgeworICAgICAgICAgICAgVVJMUGFyc2VyIHBhcnNlcjsKKyAgICAgICAgICAgICp0aGlzID0g
cGFyc2VyLnBhcnNlKG1ha2VTdHJpbmcobV9zdHJpbmcubGVmdChtX3VzZXJTdGFydCksIHUsIG1f
c3RyaW5nLnN1YnN0cmluZyhlbmQpKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcGFy
c2UobV9zdHJpbmcubGVmdChtX3VzZXJTdGFydCkgKyB1ICsgbV9zdHJpbmcuc3Vic3RyaW5nKGVu
ZCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFJlbW92ZSAnQCcgaWYgd2Ugbm93IGhhdmUg
bmVpdGhlciB1c2VyIG5vciBwYXNzd29yZC4KICAgICAgICAgaWYgKG1fdXNlckVuZCA9PSBtX3Bh
c3N3b3JkRW5kICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCiAg
ICAgICAgICAgICBlbmQgKz0gMTsKICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYXJzZSBp
biB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBub3QgZ29pbmcgdG8gbWFr
ZSBhIGNoYW5nZS4KLSAgICAgICAgaWYgKG1fdXNlclN0YXJ0ICE9IGVuZCkKLSAgICAgICAgICAg
IHBhcnNlKG1fc3RyaW5nLmxlZnQobV91c2VyU3RhcnQpICsgbV9zdHJpbmcuc3Vic3RyaW5nKGVu
ZCkpOworICAgICAgICBpZiAobV91c2VyU3RhcnQgIT0gZW5kKSB7CisgICAgICAgICAgICBpZiAo
VVJMUGFyc2VyOjplbmFibGVkKCkpIHsKKyAgICAgICAgICAgICAgICBVUkxQYXJzZXIgcGFyc2Vy
OworICAgICAgICAgICAgICAgICp0aGlzID0gcGFyc2VyLnBhcnNlKG1ha2VTdHJpbmcobV9zdHJp
bmcubGVmdChtX3VzZXJTdGFydCksIG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKSk7CisgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fdXNlclN0
YXJ0KSArIG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApA
QCAtMTAwMiwxNCArMTA1NSwyMyBAQCB2b2lkIFVSTDo6c2V0UGFzcyhjb25zdCBTdHJpbmcmIHBh
c3N3b3JkCiAgICAgICAgIC8vIEVhdCB0aGUgZXhpc3RpbmcgJ0AnIHNpbmNlIHdlIGFyZSBnb2lu
ZyB0byBhZGQgb3VyIG93bi4KICAgICAgICAgaWYgKGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJp
bmdbZW5kXSA9PSAnQCcpCiAgICAgICAgICAgICBlbmQgKz0gMTsKLSAgICAgICAgcGFyc2UobV9z
dHJpbmcubGVmdChtX3VzZXJFbmQpICsgcCArIG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKTsKKyAg
ICAgICAgaWYgKFVSTFBhcnNlcjo6ZW5hYmxlZCgpKSB7CisgICAgICAgICAgICBVUkxQYXJzZXIg
cGFyc2VyOworICAgICAgICAgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobWFrZVN0cmluZyhtX3N0
cmluZy5sZWZ0KG1fdXNlckVuZCksIHAsIG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKSk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3VzZXJFbmQpICsg
cCArIG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBS
ZW1vdmUgJ0AnIGlmIHdlIG5vdyBoYXZlIG5laXRoZXIgdXNlciBub3IgcGFzc3dvcmQuCiAgICAg
ICAgIGlmIChtX3VzZXJTdGFydCA9PSBtX3VzZXJFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAmJiBt
X3N0cmluZ1tlbmRdID09ICdAJykKICAgICAgICAgICAgIGVuZCArPSAxOwogICAgICAgICAvLyBX
ZSBkb24ndCB3YW50IHRvIHBhcnNlIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUg
d2UgYXJlIG5vdCBnb2luZyB0byBtYWtlIGEgY2hhbmdlLgotICAgICAgICBpZiAobV91c2VyRW5k
ICE9IGVuZCkKLSAgICAgICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV91c2VyRW5kKSArIG1f
c3RyaW5nLnN1YnN0cmluZyhlbmQpKTsKKyAgICAgICAgaWYgKG1fdXNlckVuZCAhPSBlbmQpIHsK
KyAgICAgICAgICAgIGlmIChVUkxQYXJzZXI6OmVuYWJsZWQoKSkgeworICAgICAgICAgICAgICAg
IFVSTFBhcnNlciBwYXJzZXI7CisgICAgICAgICAgICAgICAgKnRoaXMgPSBwYXJzZXIucGFyc2Uo
bWFrZVN0cmluZyhtX3N0cmluZy5sZWZ0KG1fdXNlckVuZCksIG1fc3RyaW5nLnN1YnN0cmluZyhl
bmQpKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBwYXJzZShtX3N0cmlu
Zy5sZWZ0KG1fdXNlckVuZCkgKyBtX3N0cmluZy5zdWJzdHJpbmcoZW5kKSk7CisgICAgICAgIH0K
ICAgICB9CiB9CiAKQEAgLTEwMTksMTQgKzEwODEsMjMgQEAgdm9pZCBVUkw6OnNldEZyYWdtZW50
SWRlbnRpZmllcihjb25zdCBTdAogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogTm9u
LUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNoIHBh
cnNlKCkgZXhwZWN0YXRpb25zLgotICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9xdWVyeUVuZCkg
KyAiIyIgKyBzKTsKKyAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpIHsKKyAgICAgICAgVVJM
UGFyc2VyIHBhcnNlcjsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobWFrZVN0cmluZyht
X3N0cmluZy5sZWZ0KG1fcXVlcnlFbmQpLCAiIyIsIHMpKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
cGFyc2UobV9zdHJpbmcubGVmdChtX3F1ZXJ5RW5kKSArICIjIiArIHMpOwogfQogCiB2b2lkIFVS
TDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCkKIHsKICAgICBpZiAoIW1faXNWYWxpZCkKICAg
ICAgICAgcmV0dXJuOwotICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9xdWVyeUVuZCkpOworICAg
IGlmIChVUkxQYXJzZXI6OmVuYWJsZWQoKSkgeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
bid0IG5lZWQgdG8gcGFyc2UgaGVyZS4KKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcjsKKyAgICAg
ICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobV9zdHJpbmcubGVmdChtX3F1ZXJ5RW5kKSk7CisgICAg
fSBlbHNlCisgICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9xdWVyeUVuZCkpOwogfQogICAg
IAogdm9pZCBVUkw6OnNldFF1ZXJ5KGNvbnN0IFN0cmluZyYgcXVlcnkpCkBAIC0xMDM4LDEwICsx
MTA5LDE5IEBAIHZvaWQgVVJMOjpzZXRRdWVyeShjb25zdCBTdHJpbmcmIHF1ZXJ5KQogICAgIC8v
IFVzdWFsbHksIHRoZSBxdWVyeSBpcyBlbmNvZGVkIHVzaW5nIGRvY3VtZW50IGVuY29kaW5nLCBu
b3QgVVRGLTgsIGJ1dCB3ZSBkb24ndCBoYXZlCiAgICAgLy8gYWNjZXNzIHRvIHRoZSBkb2N1bWVu
dCBpbiB0aGlzIGZ1bmN0aW9uLgogICAgIC8vIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2MTE3Ngot
ICAgIGlmICgocXVlcnkuaXNFbXB0eSgpIHx8IHF1ZXJ5WzBdICE9ICc/JykgJiYgIXF1ZXJ5Lmlz
TnVsbCgpKQotICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fcGF0aEVuZCkgKyAiPyIgKyBx
dWVyeSArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3F1ZXJ5RW5kKSk7Ci0gICAgZWxzZQotICAgICAg
ICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fcGF0aEVuZCkgKyBxdWVyeSArIG1fc3RyaW5nLnN1YnN0
cmluZyhtX3F1ZXJ5RW5kKSk7CisgICAgaWYgKChxdWVyeS5pc0VtcHR5KCkgfHwgcXVlcnlbMF0g
IT0gJz8nKSAmJiAhcXVlcnkuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKFVSTFBhcnNlcjo6ZW5h
YmxlZCgpKSB7CisgICAgICAgICAgICBVUkxQYXJzZXIgcGFyc2VyOworICAgICAgICAgICAgKnRo
aXMgPSBwYXJzZXIucGFyc2UobWFrZVN0cmluZyhtX3N0cmluZy5sZWZ0KG1fcGF0aEVuZCksICI/
IiwgcXVlcnksIG1fc3RyaW5nLnN1YnN0cmluZyhtX3F1ZXJ5RW5kKSkpOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9wYXRoRW5kKSArICI/IiArIHF1
ZXJ5ICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcXVlcnlFbmQpKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpIHsKKyAgICAgICAgICAgIFVSTFBhcnNlciBw
YXJzZXI7CisgICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5wYXJzZShtYWtlU3RyaW5nKG1fc3Ry
aW5nLmxlZnQobV9wYXRoRW5kKSwgcXVlcnksIG1fc3RyaW5nLnN1YnN0cmluZyhtX3F1ZXJ5RW5k
KSkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9w
YXRoRW5kKSArIHF1ZXJ5ICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcXVlcnlFbmQpKTsKKyAgICB9
CiAKIH0KIApAQCAtMTA1Niw3ICsxMTM2LDExIEBAIHZvaWQgVVJMOjpzZXRQYXRoKGNvbnN0IFN0
cmluZyYgcykKICAgICBpZiAocGF0aC5pc0VtcHR5KCkgfHwgcGF0aFswXSAhPSAnLycpCiAgICAg
ICAgIHBhdGggPSAiLyIgKyBwYXRoOwogCi0gICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3BvcnRF
bmQpICsgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhwYXRoKSArIG1fc3RyaW5nLnN1YnN0
cmluZyhtX3BhdGhFbmQpKTsKKyAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpIHsKKyAgICAg
ICAgVVJMUGFyc2VyIHBhcnNlcjsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobWFrZVN0
cmluZyhtX3N0cmluZy5sZWZ0KG1fcG9ydEVuZCksIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5j
ZXMocGF0aCksIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BhdGhFbmQpKSk7CisgICAgfSBlbHNlCisg
ICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9wb3J0RW5kKSArIGVuY29kZVdpdGhVUkxFc2Nh
cGVTZXF1ZW5jZXMocGF0aCkgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9wYXRoRW5kKSk7CiB9CiAK
IFN0cmluZyBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcpCkBA
IC0xMTg3LDYgKzEyNzEsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaGFzU2xhc2hEb3RPckRvdERv
dChjCiAKIHZvaWQgVVJMOjpwYXJzZShjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKKyAgICBpZiAo
VVJMUGFyc2VyOjplbmFibGVkKCkpCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IGNoZWNrRW5jb2RlZFN0cmluZyhzdHJpbmcpOwogCiAgICAgQ2hhckJ1ZmZlciBidWZmZXIoc3Ry
aW5nLmxlbmd0aCgpICsgMSk7CkBAIC0xMzU0LDYgKzE0NDAsOCBAQCBzdGF0aWMgYm9vbCBpc0Nh
bm9uaWNhbEhvc3RuYW1lTG93ZXJjYXNlCiAKIHZvaWQgVVJMOjpwYXJzZShjb25zdCBjaGFyKiB1
cmwsIGNvbnN0IFN0cmluZyogb3JpZ2luYWxTdHJpbmcpCiB7CisgICAgaWYgKFVSTFBhcnNlcjo6
ZW5hYmxlZCgpKQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBpZiAoIXVybCB8
fCB1cmxbMF0gPT0gJ1wwJykgewogICAgICAgICAvLyB2YWxpZCBVUkwgbXVzdCBiZSBub24tZW1w
dHkKICAgICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0cmluZyA/ICpvcmlnaW5hbFN0cmluZyA6
IHVybDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcAkocmV2aXNpb24g
MjA1MTk0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMwLDYgKzEzMCw3IEBAIHZvaWQgVVJMUGFyc2VyOjpjb3B5VVJMUGFydHNV
bnRpbChjb25zdCAKICAgICAKIFVSTCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IFN0cmluZyYgaW5w
dXQsIGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgVGV4dEVuY29kaW5nJikKIHsKKyAgICBMT0coVVJM
UGFyc2VyLCAiUGFyc2luZyBVUkwgPCVzPiBiYXNlIDwlcz4iLCBpbnB1dC51dGY4KCkuZGF0YSgp
LCBiYXNlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIG1fdXJsID0geyB9OwogICAgIG1f
YnVmZmVyLmNsZWFyKCk7CiAgICAgbV9hdXRob3JpdHlPckhvc3RCdWZmZXIuY2xlYXIoKTsKQEAg
LTUyNyw2ICs1MjgsNyBAQCBVUkwgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBTdHJpbmcmIGlucHV0
CiAKICAgICBtX3VybC5tX3N0cmluZyA9IG1fYnVmZmVyLnRvU3RyaW5nKCk7CiAgICAgbV91cmwu
bV9pc1ZhbGlkID0gdHJ1ZTsKKyAgICBMT0coVVJMUGFyc2VyLCAiUGFyc2VkIFVSTCA8JXM+Iiwg
bV91cmwubV9zdHJpbmcudXRmOCgpLmRhdGEoKSk7CiAgICAgcmV0dXJuIG1fdXJsOwogfQogCkBA
IC03NDUsNCArNzQ3LDE2IEBAIGJvb2wgVVJMUGFyc2VyOjphbGxWYWx1ZXNFcXVhbChjb25zdCBV
UkwKICAgICAgICAgJiYgYS5tX2ZyYWdtZW50RW5kID09IGIubV9mcmFnbWVudEVuZDsKIH0KIAor
c3RhdGljIGJvb2wgdXJsUGFyc2VyRW5hYmxlZCA9IGZhbHNlOworCit2b2lkIFVSTFBhcnNlcjo6
c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgdXJsUGFyc2VyRW5hYmxlZCA9IGVuYWJs
ZWQ7Cit9CisKK2Jvb2wgVVJMUGFyc2VyOjplbmFibGVkKCkKK3sKKyAgICByZXR1cm4gdXJsUGFy
c2VyRW5hYmxlZDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVVJMUGFyc2VyLmgJKHJldmlzaW9uIDIwNTE3MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VSTFBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw5IEBAIGNs
YXNzIFVSTFBhcnNlciB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHBhcnNlKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFVSTCYgPSB7IH0sIGNvbnN0IFRleHRFbmNvZGluZyYgPSBVVEY4
RW5jb2RpbmcoKSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgYWxsVmFsdWVzRXF1
YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
Ym9vbCBlbmFibGVkKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0RW5hYmxl
ZChib29sKTsKIHByaXZhdGU6CiAgICAgVVJMIG1fdXJsOwogICAgIFN0cmluZ0J1aWxkZXIgbV9i
dWZmZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvVVJMQ0YuY3BwCShyZXZpc2lvbiAy
MDUxNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJVUkwuaCIKIAogI2luY2x1ZGUgIkNG
VVJMRXh0cmFzLmgiCisjaW5jbHVkZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSA8Q29yZUZvdW5k
YXRpb24vQ0ZVUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTQ2LDcg
KzQ3LDExIEBAIFVSTDo6VVJMKENGVVJMUmVmIHVybCkKICAgICAvLyBGSVhNRTogV2h5IGlzIGl0
IE9LIHRvIGlnbm9yZSBiYXNlIFVSTCBoZXJlPwogICAgIENTdHJpbmcgdXJsQnl0ZXM7CiAgICAg
Z2V0VVJMQnl0ZXModXJsLCB1cmxCeXRlcyk7Ci0gICAgcGFyc2UodXJsQnl0ZXMuZGF0YSgpKTsK
KyAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpIHsKKyAgICAgICAgVVJMUGFyc2VyIHBhcnNl
cjsKKyAgICAgICAgcGFyc2VyLnBhcnNlKHVybEJ5dGVzLmRhdGEoKSk7CisgICAgfSBlbHNlCisg
ICAgICAgIHBhcnNlKHVybEJ5dGVzLmRhdGEoKSk7CiB9CiAKICNpZiAhVVNFKEZPVU5EQVRJT04p
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9VUkxQYXJzZXJDb2NvYS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9VUkxQYXJzZXJDb2Nv
YS5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9VUkxQ
YXJzZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJVUkxQYXJzZXIuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworICAgIAorYm9vbCBVUkxQYXJzZXI6OlVSTFBhcnNlckVuYWJsZWQoKQorewor
ICAgIHN0YXRpYyBib29sIHVzZSA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVs
dHNdIGJvb2xGb3JLZXk6QCJVUkxQYXJzZXJFbmFibGVkIl07CisgICAgcmV0dXJuIHVzZTsKK30K
KworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1VSTE1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVVJMTWFjLm1tCShyZXZpc2lvbiAy
MDUxNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVVJMTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJVUkwuaCIKIAogI2ltcG9ydCAiQ0ZV
UkxFeHRyYXMuaCIKKyNpbXBvcnQgIlVSTFBhcnNlci5oIgogI2ltcG9ydCA8d3RmL09iamNSdW50
aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTQyLDcgKzQz
LDExIEBAIFVSTDo6VVJMKE5TVVJMICp1cmwpCiAgICAgLy8gRklYTUU6IFdoeSBpcyBpdCBPSyB0
byBpZ25vcmUgYmFzZSBVUkwgaGVyZT8KICAgICBDU3RyaW5nIHVybEJ5dGVzOwogICAgIGdldFVS
TEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KHVybCksIHVybEJ5dGVzKTsKLSAgICBw
YXJzZSh1cmxCeXRlcy5kYXRhKCkpOworICAgIGlmIChVUkxQYXJzZXI6OmVuYWJsZWQoKSkgewor
ICAgICAgICBVUkxQYXJzZXIgcGFyc2VyOworICAgICAgICAqdGhpcyA9IHBhcnNlci5wYXJzZSh1
cmxCeXRlcy5kYXRhKCkpOworICAgIH0gZWxzZQorICAgICAgICBwYXJzZSh1cmxCeXRlcy5kYXRh
KCkpOwogfQogCiBVUkw6Om9wZXJhdG9yIE5TVVJMICooKSBjb25zdApJbmRleDogU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
cmV2aXNpb24gMjA1MjA1KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTYtMDgtMzAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgcnVudGltZSBmbGFnIGZvciB1c2lu
ZyBVUkxQYXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MTM2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2Rl
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oOgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3Jt
R1RLLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIFNoYXJl
ZC9Db2NvYS9XZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViS2l0Mik6CisgICAgICAgICogU2hhcmVkL0VudHJ5UG9p
bnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQuaDoKKyAgICAg
ICAgKFdlYktpdDo6WFBDU2VydmljZUluaXRpYWxpemVyKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
S2l0MkluaXRpYWxpemUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0Mik6
CisgICAgICAgICogU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmg6CisgICAgICAgICogU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hhcmVkL2VmbC9XZWJLaXQy
SW5pdGlhbGl6ZUVGTC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpwbGF0Zm9ybUluaXRp
YWxpemVXZWJLaXQyKToKKyAgICAgICAgKiBTaGFyZWQvZ3RrL1dlYktpdDJJbml0aWFsaXplR1RL
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYktpdDIp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlBy
b2Nlc3MpOgorCiAyMDE2LTA4LTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
IAogICAgICAgICBGaXggcnVudGltZSBlcnJvciBjYXVzZWQgYnkgbWlzc2luZyBleHBvcnQgYWZ0
ZXIgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDg0NgpJbmRleDog
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvUGxhdGZvcm1FZmwuY21ha2UJKHJldmlzaW9uIDIwNTE3MSkKKysrIFNvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBAIGxp
c3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9lZmwvTmF0aXZlV2ViV2hlZWxF
dmVudEVmbC5jcHAKICAgICBTaGFyZWQvZWZsL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEVmbC5jcHAK
ICAgICBTaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5jcHAKKyAgICBTaGFyZWQvZWZsL1dlYktp
dDJJbml0aWFsaXplRUZMLmNwcAogCiAgICAgU2hhcmVkL2xpbnV4L1dlYk1lbW9yeVNhbXBsZXJM
aW51eC5jcHAKIApJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UJKHJldmlzaW9uIDIwNTE3
MSkKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBA
IC03NCw2ICs3NCw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9n
dGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcAogICAgIFNoYXJlZC9ndGsvV2ViQ29udGV4
dE1lbnVJdGVtR3RrLmNwcAogICAgIFNoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcAorICAg
IFNoYXJlZC9ndGsvV2ViS2l0MkluaXRpYWxpemVHVEsuY3BwCiAKICAgICBTaGFyZWQvbGludXgv
V2ViTWVtb3J5U2FtcGxlckxpbnV4LmNwcAogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bU1hYy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFr
ZQkocmV2aXNpb24gMjA1MTcxKQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTk5LDYgKzk5LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VS
Q0VTCiAgICAgU2hhcmVkL0NvY29hL0NvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIubW0KICAg
ICBTaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5tbQogICAgIFNoYXJlZC9Db2NvYS9M
b2FkUGFyYW1ldGVyc0NvY29hLm1tCisgICAgU2hhcmVkL0NvY29hL1dlYktpdDJJbml0aWFsaXpl
Q29jb2EubW0KICAgICBTaGFyZWQvQ29jb2EvV0tOU0FycmF5Lm1tCiAgICAgU2hhcmVkL0NvY29h
L1dLTlNEYXRhLm1tCiAgICAgU2hhcmVkL0NvY29hL1dLTlNEaWN0aW9uYXJ5Lm1tCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShy
ZXZpc2lvbiAyMDUxNzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW5IYXNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRl
IDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTE5Niw2
ICsxOTcsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb3dNZW1vcnlIYW5kbGVyKENyCiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CisgICAgVVJMUGFyc2VyOjpzZXRF
bmFibGVkKHBhcmFtZXRlcnMudXJsUGFyc2VyRW5hYmxlZCk7CisKICAgICBwbGF0Zm9ybUluaXRp
YWxpemVOZXR3b3JrUHJvY2VzcyhwYXJhbWV0ZXJzKTsKIAogICAgIFdURjo6c2V0Q3VycmVudFRo
cmVhZElzVXNlckluaXRpYXRlZCgpOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAkocmV2aXNpb24gMjA1MTcxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Myw2ICs2Myw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmUK
ICNlbmRpZgogICAgIGVuY29kZXIgPDwgc2hvdWxkU3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRs
ZXI7CiAgICAgZW5jb2RlciA8PCBzaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb247CisgICAg
ZW5jb2RlciA8PCB1cmxQYXJzZXJFbmFibGVkOwogICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1Jl
Z2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHM7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW5j
b2RlciA8PCBwYXJlbnRQcm9jZXNzTmFtZTsKQEAgLTEyOCw2ICsxMjksOCBAQCBib29sIE5ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Np
b24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQudXJsUGFyc2VyRW5hYmxlZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29s
cykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNpZiBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjA1MTcxKQorKysgU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMgCiAjZW5kaWYKICAgICBib29sIHNob3VsZFN1cHByZXNzTWVtb3J5
UHJlc3N1cmVIYW5kbGVyIHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZFVzZVRlc3RpbmdOZXR3
b3JrU2Vzc2lvbjsKKyAgICBib29sIHVybFBhcnNlckVuYWJsZWQgeyBmYWxzZSB9OwogCiAgICAg
VmVjdG9yPFN0cmluZz4gdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHM7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJLaXQySW5pdGlhbGl6ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNwcAkocmV2
aXNpb24gMjA1MTcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYktpdDJJbml0aWFsaXpl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiTG9nSW5p
dGlhbGl6YXRpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0xvZ0luaXRpYWxpemF0aW9uLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxp
emVUaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CkBAIC00MSwxMSArNDIsMTIgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LXZvaWQgSW5pdGlhbGl6ZVdlYktpdDIoKQordm9pZCBJbml0aWFsaXplV2ViS2l0MihQcm9jZXNz
VHlwZSBwcm9jZXNzVHlwZSkKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBJbml0V2ViQ29y
ZVN5c3RlbUludGVyZmFjZSgpOwogI2VuZGlmCisgICAgcGxhdGZvcm1Jbml0aWFsaXplV2ViS2l0
Mihwcm9jZXNzVHlwZSk7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIEluaXRXZWJDb3JlVGhyZWFk
U3lzdGVtSW50ZXJmYWNlKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJLaXQySW5pdGlhbGl6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJLaXQySW5pdGlhbGl6ZS5oCShyZXZpc2lvbiAyMDUxNzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViS2l0MkluaXRpYWxpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTMgKzIzLDE2
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBX
ZWJLaXQySW5pdGlhbGl6ZV9oCi0jZGVmaW5lIFdlYktpdDJJbml0aWFsaXplX2gKKyNwcmFnbWEg
b25jZQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBJbml0aWFsaXplV2ViS2l0MigpOwot
CitlbnVtIFByb2Nlc3NUeXBlIHsKKyAgICBDaGlsZFByb2Nlc3MsCisgICAgVUlQcm9jZXNzLAog
fTsKIAotI2VuZGlmIC8vIFdlYktpdDJJbml0aWFsaXplX2gKK3ZvaWQgSW5pdGlhbGl6ZVdlYktp
dDIoUHJvY2Vzc1R5cGUgPSBVSVByb2Nlc3MpOwordm9pZCBwbGF0Zm9ybUluaXRpYWxpemVXZWJL
aXQyKFByb2Nlc3NUeXBlKTsKKworfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDIwNTE3
MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDYgKzExNSw3IEBAIHZvaWQgV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2QKICAgICBlbmNvZGVyIDw8IHVpUHJvY2Vzc0J1bmRsZVJl
c291cmNlUGF0aEV4dGVuc2lvbkhhbmRsZTsKICAgICBlbmNvZGVyIDw8IHNob3VsZEVuYWJsZUpJ
VDsKICAgICBlbmNvZGVyIDw8IHNob3VsZEVuYWJsZUZUTEpJVDsKKyAgICBlbmNvZGVyIDw8IHVy
bFBhcnNlckVuYWJsZWQ7CiAgICAgZW5jb2RlciA8PCAhIWJ1bmRsZVBhcmFtZXRlckRhdGE7CiAg
ICAgaWYgKGJ1bmRsZVBhcmFtZXRlckRhdGEpCiAgICAgICAgIGVuY29kZXIgPDwgYnVuZGxlUGFy
YW1ldGVyRGF0YS0+ZGF0YVJlZmVyZW5jZSgpOwpAQCAtMjU5LDYgKzI2MCw4IEBAIGJvb2wgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2QKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRFbmFibGVGVExKSVQpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJz
LnVybFBhcnNlckVuYWJsZWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBib29sIGhh
c0J1bmRsZVBhcmFtZXRlckRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNCdW5kbGVQ
YXJhbWV0ZXJEYXRhKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjA1MTcxKQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyc19oCi0jZGVmaW5l
IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnNfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJDYWNoZU1vZGVsLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgpAQCAtMTM5LDYg
KzEzOCw3IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAgIGJv
b2wgc2hvdWxkRW5hYmxlSklUOwogICAgIGJvb2wgc2hvdWxkRW5hYmxlRlRMSklUOworICAgIGJv
b2wgdXJsUGFyc2VyRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgCiAgICAgUmVmUHRyPEFQSTo6RGF0
YT4gYnVuZGxlUGFyYW1ldGVyRGF0YTsKIApAQCAtMTc3LDUgKzE3NywzIEBAIHN0cnVjdCBXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyc19oCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29jb2EvV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvV2ViS2l0MkluaXRpYWxpemVDb2NvYS5t
bQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvV2ViS2l0Mklu
aXRpYWxpemVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJLaXQySW5pdGlhbGl6ZS5oIgor
CisjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgorI2ltcG9ydCA8
V2ViQ29yZS9VUkxQYXJzZXIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCit2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZVdlYktpdDIoUHJvY2Vzc1R5
cGUgcHJvY2Vzc1R5cGUpCit7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBpbml0T25jZTsK
KyAgICAKKyAgICAvLyBXZSBkb24ndCB3YW50IHRvIHVzZSBOU1VzZXJEZWZhdWx0cyBpbiB0aGUg
Y2hpbGQgcHJvY2Vzc2VzLgorICAgIGlmIChwcm9jZXNzVHlwZSA9PSBVSVByb2Nlc3MpIHsKKyAg
ICAgICAgZGlzcGF0Y2hfb25jZSgmaW5pdE9uY2UsIF4geworICAgICAgICAgICAgVVJMUGFyc2Vy
OjpzZXRFbmFibGVkKFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xG
b3JLZXk6QCJVUkxQYXJzZXJFbmFibGVkIl0pOworICAgICAgICB9KTsKKyAgICB9Cit9CisKK30K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENT
ZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVu
dHJ5UG9pbnQuaAkocmV2aXNpb24gMjA1MTcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0Vu
dHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFhQQ1NlcnZpY2VJbml0aWFsaXpl
cihPU09iamVjdFB0cjx4CiAgICAgLy8gc28gZW5zdXJlIHRoYXQgd2UgaGF2ZSBhbiBvdXRzdGFu
ZGluZyB0cmFuc2FjdGlvbiBoZXJlLgogICAgIHhwY190cmFuc2FjdGlvbl9iZWdpbigpOwogCi0g
ICAgSW5pdGlhbGl6ZVdlYktpdDIoKTsKKyAgICBJbml0aWFsaXplV2ViS2l0MihDaGlsZFByb2Nl
c3MpOwogCiAgICAgaWYgKCFkZWxlZ2F0ZS5jaGVja0VudGl0bGVtZW50cygpKQogICAgICAgICBl
eGl0KEVYSVRfRkFJTFVSRSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYktp
dDJJbml0aWFsaXplRUZMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
ZWZsL1dlYktpdDJJbml0aWFsaXplRUZMLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvZWZsL1dlYktpdDJJbml0aWFsaXplRUZMLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldlYktpdDJJbml0aWFsaXplLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIHBs
YXRmb3JtSW5pdGlhbGl6ZVdlYktpdDIoUHJvY2Vzc1R5cGUpCit7Cit9CisKK30KSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViS2l0MkluaXRpYWxpemVHVEsuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViS2l0MkluaXRpYWxpemVHVEsuY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViS2l0MkluaXRp
YWxpemVHVEsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0MkluaXRpYWxpemUuaCIKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgcGxhdGZvcm1Jbml0aWFsaXplV2ViS2l0MihQcm9j
ZXNzVHlwZSkKK3sKK30KKworfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAyMDUxNzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2dJbml0aWFsaXphdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSW5saW5l
cy5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CkBAIC0zODYsNiArMzg3LDggQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJvY2Vz
c1Bvb2w6OmVucwogCiAgICAgcGFyYW1ldGVycy5zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Np
b24gPSBtX3Nob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbjsKIAorICAgIHBhcmFtZXRlcnMu
dXJsUGFyc2VyRW5hYmxlZCA9IFVSTFBhcnNlcjo6ZW5hYmxlZCgpOworICAgIAogICAgIC8vIEFk
ZCBhbnkgcGxhdGZvcm0gc3BlY2lmaWMgcGFyYW1ldGVycwogICAgIHBsYXRmb3JtSW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzKHBhcmFtZXRlcnMpOwogCkBAIC01NDcsNiArNTUwLDggQEAgV2ViUHJv
Y2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTgogCiAgICAgV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogCisgICAgcGFyYW1ldGVycy51cmxQYXJzZXJFbmFi
bGVkID0gVVJMUGFyc2VyOjplbmFibGVkKCk7CisgICAgCiAgICAgcGFyYW1ldGVycy5pbmplY3Rl
ZEJ1bmRsZVBhdGggPSBpbmplY3RlZEJ1bmRsZVBhdGgoKTsKICAgICBpZiAoIXBhcmFtZXRlcnMu
aW5qZWN0ZWRCdW5kbGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlKHBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQYXRoLCBTYW5kYm94RXh0ZW5z
aW9uOjpSZWFkT25seSwgcGFyYW1ldGVycy5pbmplY3RlZEJ1bmRsZVBhdGhFeHRlbnNpb25IYW5k
bGUpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMjA1MTcxKQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDU1LDYgKzEwNTUs
NyBAQAogCQk1QzIwQ0JBMDFCQjFFQ0Q4MDA4OTVCQjEgLyogTmV0d29ya1Nlc3Npb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMjBDQjlFMUJCMERE
MTgwMDg5NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbi5oICovOyB9OwogCQk1QzI5OERBMDFDM0RGMDIx
MDA0NzBBRkUgLyogUGVuZGluZ0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1QzI5OEQ5RTFDM0RFRjI5MDA0NzBBRkUgLyogUGVuZGluZ0Rv
d25sb2FkLmggKi87IH07CiAJCTVDNzcwNjc0MUQxMTM4MzgwMDEyNzAwRiAvKiBXZWJTb2NrZXRQ
cm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1Qzc3MDY3MzFEMTExRDhCMDAxMjcwMEYgLyogV2ViU29ja2V0UHJvdmlkZXIuY3BwICovOyB9
OworCQk1Qzc5NDM5QjFENzYyRDYyMDAzMTAyRDQgLyogV2ViS2l0MkluaXRpYWxpemVDb2NvYS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNzk0MzlB
MUQ3NjJDREYwMDMxMDJENCAvKiBXZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tICovOyB9OwogCQk1
Qzg1Qzc4ODFDM0YyM0NFMDA2MUE0RkEgLyogUGVuZGluZ0Rvd25sb2FkLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDODVDNzg2MUMzRjIzQzUwMDYx
QTRGQSAvKiBQZW5kaW5nRG93bmxvYWQuY3BwICovOyB9OwogCQk1Q0JDOUI4RDFDNjUyNzlDMDBB
OEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0JDOUI4QjFDNjUyNTczMDBBOEZEQ0YgLyogTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0gKi87IH07CiAJCTVDQkM5QjhFMUM2NTJDQTAwMEE4RkRDRiAvKiBO
ZXR3b3JrRGF0YVRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDQkM5Qjg5MUM2NTI0QTUwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2suaCAqLzsg
fTsKQEAgLTMxMTksNiArMzEyMCw3IEBACiAJCTVDMjBDQjlFMUJCMEREMTgwMDg5NUJCMSAvKiBO
ZXR3b3JrU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3Jr
U2Vzc2lvbi5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMyOThEOUUxQzNERUYyOTAwNDcwQUZFIC8qIFBlbmRp
bmdEb3dubG9hZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQZW5kaW5nRG93
bmxvYWQuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3NzA2NzMxRDExMUQ4QjAwMTI3MDBG
IC8qIFdlYlNvY2tldFByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFdlYlNvY2tldFByb3ZpZGVyLmNwcDsgcGF0aCA9IE5ldHdvcmsvV2ViU29ja2V0UHJv
dmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Qzc5NDM5QTFENzYyQ0RG
MDAzMTAyRDQgLyogV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYktpdDJJbml0aWFsaXplQ29jb2EubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDN0M4OERDMUQwRjQxQTAwMDlEMkY2RCAvKiBXZWJTb2Nr
ZXRQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTb2NrZXRQ
cm92aWRlci5oOyBwYXRoID0gTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1Qzg1Qzc4NjFDM0YyM0M1MDA2MUE0RkEgLyogUGVuZGluZ0Rv
d25sb2FkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFBlbmRpbmdE
b3dubG9hZC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25s
b2FkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCQzlCODkxQzY1MjRBNTAw
QThGRENGIC8qIE5ldHdvcmtEYXRhVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBOZXR3b3JrRGF0YVRhc2suaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTI2OCw2ICs1MjcwLDcgQEAK
IAkJMzdDNEMwOTAxODE0QjM3QjAwMzY4OEI5IC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1Qzc5NDM5QTFENzYyQ0RGMDAzMTAyRDQgLyog
V2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbSAqLywKIAkJCQkxQTFFRjE5NzFBMUQ1QjQyMDAyMzIw
MEEgLyogQVBJRGF0YUNvY29hLm1tICovLAogCQkJCTM3OEUxQTNCMTgxRUQ2RkYwMDMxMDA3QSAv
KiBBUElPYmplY3QubW0gKi8sCiAJCQkJMzdCRUM0REYxOTQ5MTQ4NjAwOEI0Mjg2IC8qIENvbXBs
ZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCAqLywKQEAgLTk2NzYsNiArOTY3OSw3IEBACiAJCQkJ
QkM0MDc2MDUxMjRGRjAyNzAwNjhGMjBBIC8qIFdLU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDNDA3NjE5MTI0RkYwMzcwMDY4RjIwQSAvKiBXS1N0cmluZ0NGLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMjZGMTBCRTkxOTE4N0UyRTAwMUQwRTY4IC8qIFdLU3ludGhldGljQ2xpY2tUYXBH
ZXN0dXJlUmVjb2duaXplci5tIGluIFNvdXJjZXMgKi8sCisJCQkJNUM3OTQzOUIxRDc2MkQ2MjAw
MzEwMkQ0IC8qIFdlYktpdDJJbml0aWFsaXplQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQky
REQ2N0EzNjFCRDg2MTA2MDA1M0IyNTEgLyogV0tUZXh0RmluZGVyQ2xpZW50Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZDQjRFNjkxOEJCRTNEOTAwMEZDRkM5IC8qIFdLVGV4dElucHV0V2luZG93
Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NjA3MTI0RkYwMjcwMDY4RjIw
QSAvKiBXS1R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIwNTE3MSkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw2ICsxMDAs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyR2VzdHVy
ZUluZGljYXRvci5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgpAQCAtMjY0LDYgKzI2NSw4IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZUNv
bm5lY3Rpb24oSVAKIAogdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKKyAgICBVUkxQYXJzZXI6
OnNldEVuYWJsZWQocGFyYW1ldGVycy51cmxQYXJzZXJFbmFibGVkKTsKKyAgICAKICAgICBBU1NF
UlQobV9wYWdlTWFwLmlzRW1wdHkoKSk7CiAKICNpZiBPUyhMSU5VWCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287515</attachid>
            <date>2016-08-31 09:39:04 -0700</date>
            <delta_ts>2016-08-31 13:18:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161363-20160831093652.patch</filename>
            <type>text/plain</type>
            <size>39727</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTE5NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE2LTA4LTMxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHJ1bnRp
bWUgZmxhZyBmb3IgdXNpbmcgVVJMUGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEzNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuICBObyBjaGFuZ2UgaW4gZGVmYXVsdCBi
ZWhhdmlvci4KKworICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIHBsYXRm
b3JtL1VSTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OlVSTCk6CisgICAgICAgIChXZWJD
b3JlOjpVUkw6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpzZXRQcm90b2NvbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpVUkw6OnNldEhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpy
ZW1vdmVQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6c2V0UG9ydCk6CisgICAgICAgIChX
ZWJDb3JlOjpVUkw6OnNldEhvc3RBbmRQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6c2V0
VXNlcik6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OnNldFBhc3MpOgorICAgICAgICAoV2ViQ29y
ZTo6VVJMOjpzZXRGcmFnbWVudElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpy
ZW1vdmVGcmFnbWVudElkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpzZXRRdWVy
eSk6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OnNldFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6
VVJMOjpwYXJzZSk6CisgICAgICAgICogcGxhdGZvcm0vVVJMUGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlVSTFBhcnNlcjo6cGFyc2UpOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2Vy
OjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6ZW5hYmxlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vVVJMUGFyc2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvVVJM
Q0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpVUkwpOgorICAgICAgICAqIHBsYXRmb3Jt
L2NvY29hL1VSTFBhcnNlckNvY29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlVSTFBh
cnNlcjo6VVJMUGFyc2VyRW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1VSTE1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6VVJMKToKKwogMjAxNi0wOC0zMCAgQnJlbnQgRnVs
Z2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2Ugb2YgdW5pbml0aWFsaXNl
ZCBtZW1vcnkgaW4gVHJhbnNmb3JtYXRpb25NYXRyeDo6YmxlbmQ0KCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAyMDUxNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybU1hYy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMzI5LDYgKzMyOSw3IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2NvY29hL1N5c3RlbVZlcnNpb24ubW0K
ICAgICBwbGF0Zm9ybS9jb2NvYS9UZWxlcGhvbmVOdW1iZXJEZXRlY3RvckNvY29hLmNwcAogICAg
IHBsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EubW0KKyAgICBwbGF0Zm9ybS9jb2NvYS9VUkxQYXJz
ZXJDb2NvYS5tbQogICAgIHBsYXRmb3JtL2NvY29hL1ZOb2RlVHJhY2tlckNvY29hLmNwcAogICAg
IHBsYXRmb3JtL2NvY29hL1dlYkNvcmVOU0Vycm9yRXh0cmFzLm1tCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVVJMLmNwcAkocmV2aXNpb24gMjA1MTcxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVVJMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkRl
Y29kZUVzY2FwZVNlcXVlbmNlcy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNp
bmNsdWRlICJUZXh0RW5jb2RpbmcuaCIKKyNpbmNsdWRlICJVUkxQYXJzZXIuaCIKICNpbmNsdWRl
ICJVVUlELmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx1bmljb2RlL3VpZG5hLmg+
CkBAIC00MzgsMjcgKzQzOSw0MiBAQCB2b2lkIFVSTDo6aW52YWxpZGF0ZSgpCiAKIFVSTDo6VVJM
KFBhcnNlZFVSTFN0cmluZ1RhZywgY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgcGFyc2UodXJs
KTsKKyAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpIHsKKyAgICAgICAgVVJMUGFyc2VyIHBh
cnNlcjsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UodXJsKTsKKyAgICAgICAgQVNTRVJU
KHVybC5pc0VtcHR5KCkgJiYgbV9zdHJpbmcuaXNFbXB0eSgpIHx8IHVybCA9PSBtX3N0cmluZyk7
IC8vIEZJWE1FOiBJbnZlc3RpZ2F0ZSBwYXJzaW5nIG5vbi1udWxsIGVtcHR5IFBhcnNlZFVSTFN0
cmluZ3MuCisgICAgfSBlbHNlIHsKKyAgICAgICAgcGFyc2UodXJsKTsKICNpZiBPUyhXSU5ET1dT
KQotICAgIC8vIEZJWE1FKDE0ODU5OCk6IFdvcmsgYXJvdW5kIFdpbmRvd3MgbG9jYWwgZmlsZSBo
YW5kbGluZyBidWcgaW4gQ0ZOZXR3b3JrCi0gICAgQVNTRVJUKGlzTG9jYWxGaWxlKCkgfHwgdXJs
ID09IG1fc3RyaW5nKTsKKyAgICAgICAgLy8gRklYTUUoMTQ4NTk4KTogV29yayBhcm91bmQgV2lu
ZG93cyBsb2NhbCBmaWxlIGhhbmRsaW5nIGJ1ZyBpbiBDRk5ldHdvcmsKKyAgICAgICAgQVNTRVJU
KGlzTG9jYWxGaWxlKCkgfHwgdXJsID09IG1fc3RyaW5nKTsKICNlbHNlCi0gICAgQVNTRVJUKHVy
bCA9PSBtX3N0cmluZyk7CisgICAgICAgIEFTU0VSVCh1cmwgPT0gbV9zdHJpbmcpOwogI2VuZGlm
CisgICAgfQogfQogCiBVUkw6OlVSTChjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgcmVs
YXRpdmUpCiB7Ci0gICAgaW5pdChiYXNlLCByZWxhdGl2ZSwgVVRGOEVuY29kaW5nKCkpOworICAg
IGlmIChVUkxQYXJzZXI6OmVuYWJsZWQoKSkgeworICAgICAgICBVUkxQYXJzZXIgcGFyc2VyOwor
ICAgICAgICAqdGhpcyA9IHBhcnNlci5wYXJzZShyZWxhdGl2ZSwgYmFzZSk7CisgICAgfSBlbHNl
CisgICAgICAgIGluaXQoYmFzZSwgcmVsYXRpdmUsIFVURjhFbmNvZGluZygpKTsKIH0KIAogVVJM
OjpVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBUZXh0
RW5jb2RpbmcmIGVuY29kaW5nKQogewotICAgIC8vIEZvciBVVEYtezcsMTYsMzJ9LCB3ZSB3YW50
IHRvIHVzZSBVVEYtOCBmb3IgdGhlIHF1ZXJ5IHBhcnQgYXMgCi0gICAgLy8gd2UgZG8gd2hlbiBz
dWJtaXR0aW5nIGEgZm9ybS4gQSBmb3JtIHdpdGggR0VUIG1ldGhvZAotICAgIC8vIGhhcyBpdHMg
Y29udGVudHMgYWRkZWQgdG8gYSBVUkwgYXMgcXVlcnkgcGFyYW1zIGFuZCBpdCBtYWtlcyBzZW5z
ZQotICAgIC8vIHRvIGJlIGNvbnNpc3RlbnQuCi0gICAgaW5pdChiYXNlLCByZWxhdGl2ZSwgZW5j
b2RpbmcuZW5jb2RpbmdGb3JGb3JtU3VibWlzc2lvbigpKTsKKyAgICBpZiAoVVJMUGFyc2VyOjpl
bmFibGVkKCkpIHsKKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcjsKKyAgICAgICAgKnRoaXMgPSBw
YXJzZXIucGFyc2UocmVsYXRpdmUsIGJhc2UsIGVuY29kaW5nKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICAvLyBGb3IgVVRGLXs3LDE2LDMyfSwgd2Ugd2FudCB0byB1c2UgVVRGLTggZm9yIHRoZSBx
dWVyeSBwYXJ0IGFzCisgICAgICAgIC8vIHdlIGRvIHdoZW4gc3VibWl0dGluZyBhIGZvcm0uIEEg
Zm9ybSB3aXRoIEdFVCBtZXRob2QKKyAgICAgICAgLy8gaGFzIGl0cyBjb250ZW50cyBhZGRlZCB0
byBhIFVSTCBhcyBxdWVyeSBwYXJhbXMgYW5kIGl0IG1ha2VzIHNlbnNlCisgICAgICAgIC8vIHRv
IGJlIGNvbnNpc3RlbnQuCisgICAgICAgIGluaXQoYmFzZSwgcmVsYXRpdmUsIGVuY29kaW5nLmVu
Y29kaW5nRm9yRm9ybVN1Ym1pc3Npb24oKSk7CisgICAgfQogfQogCiBzdGF0aWMgYm9vbCBzaG91
bGRUcmltRnJvbVVSTChVQ2hhciBjKQpAQCAtNDcxLDYgKzQ4Nyw5IEBAIHN0YXRpYyBib29sIHNo
b3VsZFRyaW1Gcm9tVVJMKFVDaGFyIGMpCiAKIHZvaWQgVVJMOjppbml0KGNvbnN0IFVSTCYgYmFz
ZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZykK
IHsKKyAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpCisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworCiAgICAgLy8gQWxsb3cgcmVzb2x1dGlvbnMgd2l0aCBhIG51bGwgb3IgZW1wdHkg
YmFzZSBVUkwsIGJ1dCBub3Qgd2l0aCBhbnkgb3RoZXIgaW52YWxpZCBvbmUuCiAgICAgLy8gRklY
TUU6IElzIHRoaXMgYSBnb29kIHJ1bGU/CiAgICAgaWYgKCFiYXNlLm1faXNWYWxpZCAmJiAhYmFz
ZS5pc0VtcHR5KCkpIHsKQEAgLTgyOSwxMSArODQ4LDIwIEBAIGJvb2wgVVJMOjpzZXRQcm90b2Nv
bChjb25zdCBTdHJpbmcmIHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV9p
c1ZhbGlkKSB7Ci0gICAgICAgIHBhcnNlKG5ld1Byb3RvY29sICsgJzonICsgbV9zdHJpbmcpOwor
ICAgICAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpIHsKKyAgICAgICAgICAgIFVSTFBhcnNl
ciBwYXJzZXI7CisgICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5wYXJzZShtYWtlU3RyaW5nKG5l
d1Byb3RvY29sLCAiOiIsIG1fc3RyaW5nKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
cGFyc2UobmV3UHJvdG9jb2wgKyAnOicgKyBtX3N0cmluZyk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAotICAgIHBhcnNlKG5ld1Byb3RvY29sICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1f
c2NoZW1lRW5kKSk7CisgICAgaWYgKFVSTFBhcnNlcjo6ZW5hYmxlZCgpKSB7CisgICAgICAgIFVS
TFBhcnNlciBwYXJzZXI7CisgICAgICAgICp0aGlzID0gcGFyc2VyLnBhcnNlKG1ha2VTdHJpbmco
bmV3UHJvdG9jb2wsIG1fc3RyaW5nLnN1YnN0cmluZyhtX3NjaGVtZUVuZCkpKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgcGFyc2UobmV3UHJvdG9jb2wgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9zY2hl
bWVFbmQpKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC05MDAsMTQgKzkyOCwyMiBAQCB2
b2lkIFVSTDo6c2V0SG9zdChjb25zdCBTdHJpbmcmIHMpCiAgICAgYnVpbGRlci5hcHBlbmQoU3Ry
aW5nVmlldyhlbmNvZGVkSG9zdE5hbWUuZGF0YSgpLCBlbmNvZGVkSG9zdE5hbWUuc2l6ZSgpKSk7
CiAgICAgYnVpbGRlci5hcHBlbmQobV9zdHJpbmcuc3Vic3RyaW5nKG1faG9zdEVuZCkpOwogICAg
IAotICAgIHBhcnNlKGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgaWYgKFVSTFBhcnNlcjo6ZW5h
YmxlZCgpKSB7CisgICAgICAgIFVSTFBhcnNlciBwYXJzZXI7CisgICAgICAgICp0aGlzID0gcGFy
c2VyLnBhcnNlKGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgfSBlbHNlCisgICAgICAgIHBhcnNl
KGJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAKIHZvaWQgVVJMOjpyZW1vdmVQb3J0KCkKIHsKICAg
ICBpZiAobV9ob3N0RW5kID09IG1fcG9ydEVuZCkKICAgICAgICAgcmV0dXJuOwotICAgIHBhcnNl
KG1fc3RyaW5nLmxlZnQobV9ob3N0RW5kKSArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQp
KTsKKyAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpIHsKKyAgICAgICAgVVJMUGFyc2VyIHBh
cnNlcjsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobV9zdHJpbmcubGVmdChtX2hvc3RF
bmQpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOworICAgIH0gZWxzZQorICAgICAg
ICBwYXJzZShtX3N0cmluZy5sZWZ0KG1faG9zdEVuZCkgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9w
b3J0RW5kKSk7CiB9CiAKIHZvaWQgVVJMOjpzZXRQb3J0KHVuc2lnbmVkIHNob3J0IGkpCkBAIC05
MTgsNyArOTU0LDExIEBAIHZvaWQgVVJMOjpzZXRQb3J0KHVuc2lnbmVkIHNob3J0IGkpCiAgICAg
Ym9vbCBjb2xvbk5lZWRlZCA9IG1fcG9ydEVuZCA9PSBtX2hvc3RFbmQ7CiAgICAgdW5zaWduZWQg
cG9ydFN0YXJ0ID0gKGNvbG9uTmVlZGVkID8gbV9ob3N0RW5kIDogbV9ob3N0RW5kICsgMSk7CiAK
LSAgICBwYXJzZShtX3N0cmluZy5sZWZ0KHBvcnRTdGFydCkgKyAoY29sb25OZWVkZWQgPyAiOiIg
OiAiIikgKyBTdHJpbmc6Om51bWJlcihpKSArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQp
KTsKKyAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpIHsKKyAgICAgICAgVVJMUGFyc2VyIHBh
cnNlcjsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobWFrZVN0cmluZyhtX3N0cmluZy5s
ZWZ0KHBvcnRTdGFydCksIChjb2xvbk5lZWRlZCA/ICI6IiA6ICIiKSwgU3RyaW5nOjpudW1iZXIo
aSksIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQpKSk7CisgICAgfSBlbHNlCisgICAgICAg
IHBhcnNlKG1fc3RyaW5nLmxlZnQocG9ydFN0YXJ0KSArIChjb2xvbk5lZWRlZCA/ICI6IiA6ICIi
KSArIFN0cmluZzo6bnVtYmVyKGkpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOwog
fQogCiB2b2lkIFVSTDo6c2V0SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJiBob3N0QW5kUG9ydCkK
QEAgLTk1OSw3ICs5OTksMTEgQEAgdm9pZCBVUkw6OnNldEhvc3RBbmRQb3J0KGNvbnN0IFN0cmlu
ZyYgaAogICAgIH0KICAgICBidWlsZGVyLmFwcGVuZChtX3N0cmluZy5zdWJzdHJpbmcobV9wb3J0
RW5kKSk7CiAKLSAgICBwYXJzZShidWlsZGVyLnRvU3RyaW5nKCkpOworICAgIGlmIChVUkxQYXJz
ZXI6OmVuYWJsZWQoKSkgeworICAgICAgICBVUkxQYXJzZXIgcGFyc2VyOworICAgICAgICAqdGhp
cyA9IHBhcnNlci5wYXJzZShidWlsZGVyLnRvU3RyaW5nKCkpOworICAgIH0gZWxzZQorICAgICAg
ICBwYXJzZShidWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCiB2b2lkIFVSTDo6c2V0VXNlcihjb25z
dCBTdHJpbmcmIHVzZXIpCkBAIC05NzgsMTQgKzEwMjIsMjMgQEAgdm9pZCBVUkw6OnNldFVzZXIo
Y29uc3QgU3RyaW5nJiB1c2VyKQogICAgICAgICAvLyBBZGQgJ0AnIGlmIHdlIGRpZG4ndCBoYXZl
IG9uZSBiZWZvcmUuCiAgICAgICAgIGlmIChlbmQgPT0gbV9ob3N0RW5kIHx8IChlbmQgPT0gbV9w
YXNzd29yZEVuZCAmJiBtX3N0cmluZ1tlbmRdICE9ICdAJykpCiAgICAgICAgICAgICB1LmFwcGVu
ZCgnQCcpOwotICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fdXNlclN0YXJ0KSArIHUgKyBt
X3N0cmluZy5zdWJzdHJpbmcoZW5kKSk7CisgICAgICAgIGlmIChVUkxQYXJzZXI6OmVuYWJsZWQo
KSkgeworICAgICAgICAgICAgVVJMUGFyc2VyIHBhcnNlcjsKKyAgICAgICAgICAgICp0aGlzID0g
cGFyc2VyLnBhcnNlKG1ha2VTdHJpbmcobV9zdHJpbmcubGVmdChtX3VzZXJTdGFydCksIHUsIG1f
c3RyaW5nLnN1YnN0cmluZyhlbmQpKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcGFy
c2UobV9zdHJpbmcubGVmdChtX3VzZXJTdGFydCkgKyB1ICsgbV9zdHJpbmcuc3Vic3RyaW5nKGVu
ZCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFJlbW92ZSAnQCcgaWYgd2Ugbm93IGhhdmUg
bmVpdGhlciB1c2VyIG5vciBwYXNzd29yZC4KICAgICAgICAgaWYgKG1fdXNlckVuZCA9PSBtX3Bh
c3N3b3JkRW5kICYmIGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJpbmdbZW5kXSA9PSAnQCcpCiAg
ICAgICAgICAgICBlbmQgKz0gMTsKICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYXJzZSBp
biB0aGUgZXh0cmVtZWx5IGNvbW1vbiBjYXNlIHdoZXJlIHdlIGFyZSBub3QgZ29pbmcgdG8gbWFr
ZSBhIGNoYW5nZS4KLSAgICAgICAgaWYgKG1fdXNlclN0YXJ0ICE9IGVuZCkKLSAgICAgICAgICAg
IHBhcnNlKG1fc3RyaW5nLmxlZnQobV91c2VyU3RhcnQpICsgbV9zdHJpbmcuc3Vic3RyaW5nKGVu
ZCkpOworICAgICAgICBpZiAobV91c2VyU3RhcnQgIT0gZW5kKSB7CisgICAgICAgICAgICBpZiAo
VVJMUGFyc2VyOjplbmFibGVkKCkpIHsKKyAgICAgICAgICAgICAgICBVUkxQYXJzZXIgcGFyc2Vy
OworICAgICAgICAgICAgICAgICp0aGlzID0gcGFyc2VyLnBhcnNlKG1ha2VTdHJpbmcobV9zdHJp
bmcubGVmdChtX3VzZXJTdGFydCksIG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKSk7CisgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fdXNlclN0
YXJ0KSArIG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApA
QCAtMTAwMiwxNCArMTA1NSwyMyBAQCB2b2lkIFVSTDo6c2V0UGFzcyhjb25zdCBTdHJpbmcmIHBh
c3N3b3JkCiAgICAgICAgIC8vIEVhdCB0aGUgZXhpc3RpbmcgJ0AnIHNpbmNlIHdlIGFyZSBnb2lu
ZyB0byBhZGQgb3VyIG93bi4KICAgICAgICAgaWYgKGVuZCAhPSBtX2hvc3RFbmQgJiYgbV9zdHJp
bmdbZW5kXSA9PSAnQCcpCiAgICAgICAgICAgICBlbmQgKz0gMTsKLSAgICAgICAgcGFyc2UobV9z
dHJpbmcubGVmdChtX3VzZXJFbmQpICsgcCArIG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKTsKKyAg
ICAgICAgaWYgKFVSTFBhcnNlcjo6ZW5hYmxlZCgpKSB7CisgICAgICAgICAgICBVUkxQYXJzZXIg
cGFyc2VyOworICAgICAgICAgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobWFrZVN0cmluZyhtX3N0
cmluZy5sZWZ0KG1fdXNlckVuZCksIHAsIG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKSk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3VzZXJFbmQpICsg
cCArIG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBS
ZW1vdmUgJ0AnIGlmIHdlIG5vdyBoYXZlIG5laXRoZXIgdXNlciBub3IgcGFzc3dvcmQuCiAgICAg
ICAgIGlmIChtX3VzZXJTdGFydCA9PSBtX3VzZXJFbmQgJiYgZW5kICE9IG1faG9zdEVuZCAmJiBt
X3N0cmluZ1tlbmRdID09ICdAJykKICAgICAgICAgICAgIGVuZCArPSAxOwogICAgICAgICAvLyBX
ZSBkb24ndCB3YW50IHRvIHBhcnNlIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugd2hlcmUg
d2UgYXJlIG5vdCBnb2luZyB0byBtYWtlIGEgY2hhbmdlLgotICAgICAgICBpZiAobV91c2VyRW5k
ICE9IGVuZCkKLSAgICAgICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV91c2VyRW5kKSArIG1f
c3RyaW5nLnN1YnN0cmluZyhlbmQpKTsKKyAgICAgICAgaWYgKG1fdXNlckVuZCAhPSBlbmQpIHsK
KyAgICAgICAgICAgIGlmIChVUkxQYXJzZXI6OmVuYWJsZWQoKSkgeworICAgICAgICAgICAgICAg
IFVSTFBhcnNlciBwYXJzZXI7CisgICAgICAgICAgICAgICAgKnRoaXMgPSBwYXJzZXIucGFyc2Uo
bWFrZVN0cmluZyhtX3N0cmluZy5sZWZ0KG1fdXNlckVuZCksIG1fc3RyaW5nLnN1YnN0cmluZyhl
bmQpKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBwYXJzZShtX3N0cmlu
Zy5sZWZ0KG1fdXNlckVuZCkgKyBtX3N0cmluZy5zdWJzdHJpbmcoZW5kKSk7CisgICAgICAgIH0K
ICAgICB9CiB9CiAKQEAgLTEwMTksMTQgKzEwODEsMjMgQEAgdm9pZCBVUkw6OnNldEZyYWdtZW50
SWRlbnRpZmllcihjb25zdCBTdAogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogTm9u
LUFTQ0lJIGNoYXJhY3RlcnMgbXVzdCBiZSBlbmNvZGVkIGFuZCBlc2NhcGVkIHRvIG1hdGNoIHBh
cnNlKCkgZXhwZWN0YXRpb25zLgotICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9xdWVyeUVuZCkg
KyAiIyIgKyBzKTsKKyAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpIHsKKyAgICAgICAgVVJM
UGFyc2VyIHBhcnNlcjsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobWFrZVN0cmluZyht
X3N0cmluZy5sZWZ0KG1fcXVlcnlFbmQpLCAiIyIsIHMpKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
cGFyc2UobV9zdHJpbmcubGVmdChtX3F1ZXJ5RW5kKSArICIjIiArIHMpOwogfQogCiB2b2lkIFVS
TDo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCkKIHsKICAgICBpZiAoIW1faXNWYWxpZCkKICAg
ICAgICAgcmV0dXJuOwotICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9xdWVyeUVuZCkpOworICAg
IGlmIChVUkxQYXJzZXI6OmVuYWJsZWQoKSkgeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
bid0IG5lZWQgdG8gcGFyc2UgaGVyZS4KKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcjsKKyAgICAg
ICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobV9zdHJpbmcubGVmdChtX3F1ZXJ5RW5kKSk7CisgICAg
fSBlbHNlCisgICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9xdWVyeUVuZCkpOwogfQogICAg
IAogdm9pZCBVUkw6OnNldFF1ZXJ5KGNvbnN0IFN0cmluZyYgcXVlcnkpCkBAIC0xMDM4LDEwICsx
MTA5LDE5IEBAIHZvaWQgVVJMOjpzZXRRdWVyeShjb25zdCBTdHJpbmcmIHF1ZXJ5KQogICAgIC8v
IFVzdWFsbHksIHRoZSBxdWVyeSBpcyBlbmNvZGVkIHVzaW5nIGRvY3VtZW50IGVuY29kaW5nLCBu
b3QgVVRGLTgsIGJ1dCB3ZSBkb24ndCBoYXZlCiAgICAgLy8gYWNjZXNzIHRvIHRoZSBkb2N1bWVu
dCBpbiB0aGlzIGZ1bmN0aW9uLgogICAgIC8vIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2MTE3Ngot
ICAgIGlmICgocXVlcnkuaXNFbXB0eSgpIHx8IHF1ZXJ5WzBdICE9ICc/JykgJiYgIXF1ZXJ5Lmlz
TnVsbCgpKQotICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fcGF0aEVuZCkgKyAiPyIgKyBx
dWVyeSArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3F1ZXJ5RW5kKSk7Ci0gICAgZWxzZQotICAgICAg
ICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fcGF0aEVuZCkgKyBxdWVyeSArIG1fc3RyaW5nLnN1YnN0
cmluZyhtX3F1ZXJ5RW5kKSk7CisgICAgaWYgKChxdWVyeS5pc0VtcHR5KCkgfHwgcXVlcnlbMF0g
IT0gJz8nKSAmJiAhcXVlcnkuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKFVSTFBhcnNlcjo6ZW5h
YmxlZCgpKSB7CisgICAgICAgICAgICBVUkxQYXJzZXIgcGFyc2VyOworICAgICAgICAgICAgKnRo
aXMgPSBwYXJzZXIucGFyc2UobWFrZVN0cmluZyhtX3N0cmluZy5sZWZ0KG1fcGF0aEVuZCksICI/
IiwgcXVlcnksIG1fc3RyaW5nLnN1YnN0cmluZyhtX3F1ZXJ5RW5kKSkpOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9wYXRoRW5kKSArICI/IiArIHF1
ZXJ5ICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcXVlcnlFbmQpKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpIHsKKyAgICAgICAgICAgIFVSTFBhcnNlciBw
YXJzZXI7CisgICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5wYXJzZShtYWtlU3RyaW5nKG1fc3Ry
aW5nLmxlZnQobV9wYXRoRW5kKSwgcXVlcnksIG1fc3RyaW5nLnN1YnN0cmluZyhtX3F1ZXJ5RW5k
KSkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9w
YXRoRW5kKSArIHF1ZXJ5ICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcXVlcnlFbmQpKTsKKyAgICB9
CiAKIH0KIApAQCAtMTA1Niw3ICsxMTM2LDExIEBAIHZvaWQgVVJMOjpzZXRQYXRoKGNvbnN0IFN0
cmluZyYgcykKICAgICBpZiAocGF0aC5pc0VtcHR5KCkgfHwgcGF0aFswXSAhPSAnLycpCiAgICAg
ICAgIHBhdGggPSAiLyIgKyBwYXRoOwogCi0gICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3BvcnRF
bmQpICsgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhwYXRoKSArIG1fc3RyaW5nLnN1YnN0
cmluZyhtX3BhdGhFbmQpKTsKKyAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpIHsKKyAgICAg
ICAgVVJMUGFyc2VyIHBhcnNlcjsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobWFrZVN0
cmluZyhtX3N0cmluZy5sZWZ0KG1fcG9ydEVuZCksIGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5j
ZXMocGF0aCksIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BhdGhFbmQpKSk7CisgICAgfSBlbHNlCisg
ICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9wb3J0RW5kKSArIGVuY29kZVdpdGhVUkxFc2Nh
cGVTZXF1ZW5jZXMocGF0aCkgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9wYXRoRW5kKSk7CiB9CiAK
IFN0cmluZyBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcpCkBA
IC0xMTg3LDYgKzEyNzEsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaGFzU2xhc2hEb3RPckRvdERv
dChjCiAKIHZvaWQgVVJMOjpwYXJzZShjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKKyAgICBpZiAo
VVJMUGFyc2VyOjplbmFibGVkKCkpCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IGNoZWNrRW5jb2RlZFN0cmluZyhzdHJpbmcpOwogCiAgICAgQ2hhckJ1ZmZlciBidWZmZXIoc3Ry
aW5nLmxlbmd0aCgpICsgMSk7CkBAIC0xMzU0LDYgKzE0NDAsOCBAQCBzdGF0aWMgYm9vbCBpc0Nh
bm9uaWNhbEhvc3RuYW1lTG93ZXJjYXNlCiAKIHZvaWQgVVJMOjpwYXJzZShjb25zdCBjaGFyKiB1
cmwsIGNvbnN0IFN0cmluZyogb3JpZ2luYWxTdHJpbmcpCiB7CisgICAgaWYgKFVSTFBhcnNlcjo6
ZW5hYmxlZCgpKQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBpZiAoIXVybCB8
fCB1cmxbMF0gPT0gJ1wwJykgewogICAgICAgICAvLyB2YWxpZCBVUkwgbXVzdCBiZSBub24tZW1w
dHkKICAgICAgICAgbV9zdHJpbmcgPSBvcmlnaW5hbFN0cmluZyA/ICpvcmlnaW5hbFN0cmluZyA6
IHVybDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcAkocmV2aXNpb24g
MjA1MTk0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMwLDYgKzEzMCw3IEBAIHZvaWQgVVJMUGFyc2VyOjpjb3B5VVJMUGFydHNV
bnRpbChjb25zdCAKICAgICAKIFVSTCBVUkxQYXJzZXI6OnBhcnNlKGNvbnN0IFN0cmluZyYgaW5w
dXQsIGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgVGV4dEVuY29kaW5nJikKIHsKKyAgICBMT0coVVJM
UGFyc2VyLCAiUGFyc2luZyBVUkwgPCVzPiBiYXNlIDwlcz4iLCBpbnB1dC51dGY4KCkuZGF0YSgp
LCBiYXNlLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIG1fdXJsID0geyB9OwogICAgIG1f
YnVmZmVyLmNsZWFyKCk7CiAgICAgbV9hdXRob3JpdHlPckhvc3RCdWZmZXIuY2xlYXIoKTsKQEAg
LTUyNyw2ICs1MjgsNyBAQCBVUkwgVVJMUGFyc2VyOjpwYXJzZShjb25zdCBTdHJpbmcmIGlucHV0
CiAKICAgICBtX3VybC5tX3N0cmluZyA9IG1fYnVmZmVyLnRvU3RyaW5nKCk7CiAgICAgbV91cmwu
bV9pc1ZhbGlkID0gdHJ1ZTsKKyAgICBMT0coVVJMUGFyc2VyLCAiUGFyc2VkIFVSTCA8JXM+Iiwg
bV91cmwubV9zdHJpbmcudXRmOCgpLmRhdGEoKSk7CiAgICAgcmV0dXJuIG1fdXJsOwogfQogCkBA
IC03NDUsNCArNzQ3LDE2IEBAIGJvb2wgVVJMUGFyc2VyOjphbGxWYWx1ZXNFcXVhbChjb25zdCBV
UkwKICAgICAgICAgJiYgYS5tX2ZyYWdtZW50RW5kID09IGIubV9mcmFnbWVudEVuZDsKIH0KIAor
c3RhdGljIGJvb2wgdXJsUGFyc2VyRW5hYmxlZCA9IGZhbHNlOworCit2b2lkIFVSTFBhcnNlcjo6
c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgdXJsUGFyc2VyRW5hYmxlZCA9IGVuYWJs
ZWQ7Cit9CisKK2Jvb2wgVVJMUGFyc2VyOjplbmFibGVkKCkKK3sKKyAgICByZXR1cm4gdXJsUGFy
c2VyRW5hYmxlZDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVVJMUGFyc2VyLmgJKHJldmlzaW9uIDIwNTE3MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VSTFBhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw5IEBAIGNs
YXNzIFVSTFBhcnNlciB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIHBhcnNlKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFVSTCYgPSB7IH0sIGNvbnN0IFRleHRFbmNvZGluZyYgPSBVVEY4
RW5jb2RpbmcoKSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgYWxsVmFsdWVzRXF1
YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
Ym9vbCBlbmFibGVkKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0RW5hYmxl
ZChib29sKTsKIHByaXZhdGU6CiAgICAgVVJMIG1fdXJsOwogICAgIFN0cmluZ0J1aWxkZXIgbV9i
dWZmZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvVVJMQ0YuY3BwCShyZXZpc2lvbiAy
MDUxNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9VUkxDRi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJVUkwuaCIKIAogI2luY2x1ZGUgIkNG
VVJMRXh0cmFzLmgiCisjaW5jbHVkZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSA8Q29yZUZvdW5k
YXRpb24vQ0ZVUkwuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTQ2LDcg
KzQ3LDExIEBAIFVSTDo6VVJMKENGVVJMUmVmIHVybCkKICAgICAvLyBGSVhNRTogV2h5IGlzIGl0
IE9LIHRvIGlnbm9yZSBiYXNlIFVSTCBoZXJlPwogICAgIENTdHJpbmcgdXJsQnl0ZXM7CiAgICAg
Z2V0VVJMQnl0ZXModXJsLCB1cmxCeXRlcyk7Ci0gICAgcGFyc2UodXJsQnl0ZXMuZGF0YSgpKTsK
KyAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpIHsKKyAgICAgICAgVVJMUGFyc2VyIHBhcnNl
cjsKKyAgICAgICAgcGFyc2VyLnBhcnNlKHVybEJ5dGVzLmRhdGEoKSk7CisgICAgfSBlbHNlCisg
ICAgICAgIHBhcnNlKHVybEJ5dGVzLmRhdGEoKSk7CiB9CiAKICNpZiAhVVNFKEZPVU5EQVRJT04p
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9VUkxQYXJzZXJDb2NvYS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9VUkxQYXJzZXJDb2Nv
YS5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9VUkxQ
YXJzZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJVUkxQYXJzZXIuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworICAgIAorYm9vbCBVUkxQYXJzZXI6OlVSTFBhcnNlckVuYWJsZWQoKQorewor
ICAgIHN0YXRpYyBib29sIHVzZSA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVs
dHNdIGJvb2xGb3JLZXk6QCJVUkxQYXJzZXJFbmFibGVkIl07CisgICAgcmV0dXJuIHVzZTsKK30K
KworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1VSTE1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVVJMTWFjLm1tCShyZXZpc2lvbiAy
MDUxNzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVVJMTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJVUkwuaCIKIAogI2ltcG9ydCAiQ0ZV
UkxFeHRyYXMuaCIKKyNpbXBvcnQgIlVSTFBhcnNlci5oIgogI2ltcG9ydCA8d3RmL09iamNSdW50
aW1lRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTQyLDcgKzQz
LDExIEBAIFVSTDo6VVJMKE5TVVJMICp1cmwpCiAgICAgLy8gRklYTUU6IFdoeSBpcyBpdCBPSyB0
byBpZ25vcmUgYmFzZSBVUkwgaGVyZT8KICAgICBDU3RyaW5nIHVybEJ5dGVzOwogICAgIGdldFVS
TEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZVUkxSZWY+KHVybCksIHVybEJ5dGVzKTsKLSAgICBw
YXJzZSh1cmxCeXRlcy5kYXRhKCkpOworICAgIGlmIChVUkxQYXJzZXI6OmVuYWJsZWQoKSkgewor
ICAgICAgICBVUkxQYXJzZXIgcGFyc2VyOworICAgICAgICAqdGhpcyA9IHBhcnNlci5wYXJzZSh1
cmxCeXRlcy5kYXRhKCkpOworICAgIH0gZWxzZQorICAgICAgICBwYXJzZSh1cmxCeXRlcy5kYXRh
KCkpOwogfQogCiBVUkw6Om9wZXJhdG9yIE5TVVJMICooKSBjb25zdApJbmRleDogU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
cmV2aXNpb24gMjA1MjA1KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTYtMDgtMzEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgcnVudGltZSBmbGFnIGZvciB1c2lu
ZyBVUkxQYXJzZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MTM2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2Rl
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oOgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3Jt
R1RLLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIFNoYXJl
ZC9Db2NvYS9XZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViS2l0Mik6CisgICAgICAgICogU2hhcmVkL0VudHJ5UG9p
bnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQuaDoKKyAgICAg
ICAgKFdlYktpdDo6WFBDU2VydmljZUluaXRpYWxpemVyKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
S2l0MkluaXRpYWxpemUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0Mik6
CisgICAgICAgICogU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmg6CisgICAgICAgICogU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hhcmVkL2VmbC9XZWJLaXQy
SW5pdGlhbGl6ZUVGTC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpwbGF0Zm9ybUluaXRp
YWxpemVXZWJLaXQyKToKKyAgICAgICAgKiBTaGFyZWQvZ3RrL1dlYktpdDJJbml0aWFsaXplR1RL
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYktpdDIp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlBy
b2Nlc3MpOgorCiAyMDE2LTA4LTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
IAogICAgICAgICBGaXggcnVudGltZSBlcnJvciBjYXVzZWQgYnkgbWlzc2luZyBleHBvcnQgYWZ0
ZXIgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDg0NgpJbmRleDog
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvUGxhdGZvcm1FZmwuY21ha2UJKHJldmlzaW9uIDIwNTE3MSkKKysrIFNvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBAIGxp
c3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9lZmwvTmF0aXZlV2ViV2hlZWxF
dmVudEVmbC5jcHAKICAgICBTaGFyZWQvZWZsL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEVmbC5jcHAK
ICAgICBTaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5jcHAKKyAgICBTaGFyZWQvZWZsL1dlYktp
dDJJbml0aWFsaXplRUZMLmNwcAogCiAgICAgU2hhcmVkL2xpbnV4L1dlYk1lbW9yeVNhbXBsZXJM
aW51eC5jcHAKIApJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UJKHJldmlzaW9uIDIwNTE3
MSkKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBA
IC03NCw2ICs3NCw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9n
dGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcAogICAgIFNoYXJlZC9ndGsvV2ViQ29udGV4
dE1lbnVJdGVtR3RrLmNwcAogICAgIFNoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcAorICAg
IFNoYXJlZC9ndGsvV2ViS2l0MkluaXRpYWxpemVHVEsuY3BwCiAKICAgICBTaGFyZWQvbGludXgv
V2ViTWVtb3J5U2FtcGxlckxpbnV4LmNwcAogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bU1hYy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFr
ZQkocmV2aXNpb24gMjA1MTcxKQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UJ
KHdvcmtpbmcgY29weSkKQEAgLTk5LDYgKzk5LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VS
Q0VTCiAgICAgU2hhcmVkL0NvY29hL0NvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIubW0KICAg
ICBTaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5tbQogICAgIFNoYXJlZC9Db2NvYS9M
b2FkUGFyYW1ldGVyc0NvY29hLm1tCisgICAgU2hhcmVkL0NvY29hL1dlYktpdDJJbml0aWFsaXpl
Q29jb2EubW0KICAgICBTaGFyZWQvQ29jb2EvV0tOU0FycmF5Lm1tCiAgICAgU2hhcmVkL0NvY29h
L1dLTlNEYXRhLm1tCiAgICAgU2hhcmVkL0NvY29hL1dLTlNEaWN0aW9uYXJ5Lm1tCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShy
ZXZpc2lvbiAyMDUxNzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW5IYXNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRl
IDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTE5Niw2
ICsxOTcsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb3dNZW1vcnlIYW5kbGVyKENyCiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CisgICAgVVJMUGFyc2VyOjpzZXRF
bmFibGVkKHBhcmFtZXRlcnMudXJsUGFyc2VyRW5hYmxlZCk7CisKICAgICBwbGF0Zm9ybUluaXRp
YWxpemVOZXR3b3JrUHJvY2VzcyhwYXJhbWV0ZXJzKTsKIAogICAgIFdURjo6c2V0Q3VycmVudFRo
cmVhZElzVXNlckluaXRpYXRlZCgpOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAkocmV2aXNpb24gMjA1MTcxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Myw2ICs2Myw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmUK
ICNlbmRpZgogICAgIGVuY29kZXIgPDwgc2hvdWxkU3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRs
ZXI7CiAgICAgZW5jb2RlciA8PCBzaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb247CisgICAg
ZW5jb2RlciA8PCB1cmxQYXJzZXJFbmFibGVkOwogICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1Jl
Z2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHM7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW5j
b2RlciA8PCBwYXJlbnRQcm9jZXNzTmFtZTsKQEAgLTEyOCw2ICsxMjksOCBAQCBib29sIE5ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Np
b24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQudXJsUGFyc2VyRW5hYmxlZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29s
cykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNpZiBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjA1MTcxKQorKysgU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMgCiAjZW5kaWYKICAgICBib29sIHNob3VsZFN1cHByZXNzTWVtb3J5
UHJlc3N1cmVIYW5kbGVyIHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZFVzZVRlc3RpbmdOZXR3
b3JrU2Vzc2lvbjsKKyAgICBib29sIHVybFBhcnNlckVuYWJsZWQgeyBmYWxzZSB9OwogCiAgICAg
VmVjdG9yPFN0cmluZz4gdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHM7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJLaXQySW5pdGlhbGl6ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNwcAkocmV2
aXNpb24gMjA1MTcxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYktpdDJJbml0aWFsaXpl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiTG9nSW5p
dGlhbGl6YXRpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0xvZ0luaXRpYWxpemF0aW9uLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0luaXRpYWxp
emVUaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CkBAIC00MSwxMSArNDIsMTIgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LXZvaWQgSW5pdGlhbGl6ZVdlYktpdDIoKQordm9pZCBJbml0aWFsaXplV2ViS2l0MihQcm9jZXNz
VHlwZSBwcm9jZXNzVHlwZSkKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBJbml0V2ViQ29y
ZVN5c3RlbUludGVyZmFjZSgpOwogI2VuZGlmCisgICAgcGxhdGZvcm1Jbml0aWFsaXplV2ViS2l0
Mihwcm9jZXNzVHlwZSk7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIEluaXRXZWJDb3JlVGhyZWFk
U3lzdGVtSW50ZXJmYWNlKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJLaXQySW5pdGlhbGl6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJLaXQySW5pdGlhbGl6ZS5oCShyZXZpc2lvbiAyMDUxNzEpCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViS2l0MkluaXRpYWxpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTMgKzIzLDE2
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBX
ZWJLaXQySW5pdGlhbGl6ZV9oCi0jZGVmaW5lIFdlYktpdDJJbml0aWFsaXplX2gKKyNwcmFnbWEg
b25jZQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBJbml0aWFsaXplV2ViS2l0MigpOwot
CitlbnVtIFByb2Nlc3NUeXBlIHsKKyAgICBDaGlsZFByb2Nlc3MsCisgICAgVUlQcm9jZXNzLAog
fTsKIAotI2VuZGlmIC8vIFdlYktpdDJJbml0aWFsaXplX2gKK3ZvaWQgSW5pdGlhbGl6ZVdlYktp
dDIoUHJvY2Vzc1R5cGUgPSBVSVByb2Nlc3MpOwordm9pZCBwbGF0Zm9ybUluaXRpYWxpemVXZWJL
aXQyKFByb2Nlc3NUeXBlKTsKKworfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDIwNTE3
MSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDYgKzExNSw3IEBAIHZvaWQgV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2QKICAgICBlbmNvZGVyIDw8IHVpUHJvY2Vzc0J1bmRsZVJl
c291cmNlUGF0aEV4dGVuc2lvbkhhbmRsZTsKICAgICBlbmNvZGVyIDw8IHNob3VsZEVuYWJsZUpJ
VDsKICAgICBlbmNvZGVyIDw8IHNob3VsZEVuYWJsZUZUTEpJVDsKKyAgICBlbmNvZGVyIDw8IHVy
bFBhcnNlckVuYWJsZWQ7CiAgICAgZW5jb2RlciA8PCAhIWJ1bmRsZVBhcmFtZXRlckRhdGE7CiAg
ICAgaWYgKGJ1bmRsZVBhcmFtZXRlckRhdGEpCiAgICAgICAgIGVuY29kZXIgPDwgYnVuZGxlUGFy
YW1ldGVyRGF0YS0+ZGF0YVJlZmVyZW5jZSgpOwpAQCAtMjU5LDYgKzI2MCw4IEBAIGJvb2wgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2QKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5zaG91bGRFbmFibGVGVExKSVQpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJz
LnVybFBhcnNlckVuYWJsZWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBib29sIGhh
c0J1bmRsZVBhcmFtZXRlckRhdGE7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNCdW5kbGVQ
YXJhbWV0ZXJEYXRhKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjA1MTcxKQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyc19oCi0jZGVmaW5l
IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnNfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJDYWNoZU1vZGVsLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgpAQCAtMTA4LDYg
KzEwNyw3IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBib29s
IHNob3VsZFN1cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyIHsgZmFsc2UgfTsKICAgICBib29s
IHNob3VsZFVzZUZvbnRTbW9vdGhpbmc7CiAgICAgYm9vbCByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZCB7IGZhbHNlIH07CisgICAgYm9vbCB1cmxQYXJzZXJFbmFibGVkIHsgZmFsc2UgfTsK
IAogICAgIFZlY3RvcjxTdHJpbmc+IGZvbnRXaGl0ZWxpc3Q7CiAKQEAgLTE3Nyw1ICsxNzcsMyBA
QCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnNfaApJ
bmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL1dlYktpdDJJbml0aWFsaXplQ29jb2Eu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL1dlYktpdDJJbml0
aWFsaXplQ29jb2EubW0JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
Y29hL1dlYktpdDJJbml0aWFsaXplQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViS2l0Mklu
aXRpYWxpemUuaCIKKworI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBwbGF0Zm9ybUluaXRpYWxpemVXZWJL
aXQyKFByb2Nlc3NUeXBlIHByb2Nlc3NUeXBlKQoreworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNl
X3QgaW5pdE9uY2U7CisgICAgCisgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byB1c2UgTlNVc2VyRGVm
YXVsdHMgaW4gdGhlIGNoaWxkIHByb2Nlc3Nlcy4KKyAgICBpZiAocHJvY2Vzc1R5cGUgPT0gVUlQ
cm9jZXNzKSB7CisgICAgICAgIGRpc3BhdGNoX29uY2UoJmluaXRPbmNlLCBeIHsKKyAgICAgICAg
ICAgIFVSTFBhcnNlcjo6c2V0RW5hYmxlZChbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRl
ZmF1bHRzXSBib29sRm9yS2V5OkAiVVJMUGFyc2VyRW5hYmxlZCJdKTsKKyAgICAgICAgfSk7Cisg
ICAgfQorfQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRW50cnlQb2ludFV0aWxp
dGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNl
L1hQQ1NlcnZpY2VFbnRyeVBvaW50LmgJKHJldmlzaW9uIDIwNTE3MSkKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VF
bnRyeVBvaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBYUENTZXJ2
aWNlSW5pdGlhbGl6ZXIoT1NPYmplY3RQdHI8eAogICAgIC8vIHNvIGVuc3VyZSB0aGF0IHdlIGhh
dmUgYW4gb3V0c3RhbmRpbmcgdHJhbnNhY3Rpb24gaGVyZS4KICAgICB4cGNfdHJhbnNhY3Rpb25f
YmVnaW4oKTsKIAotICAgIEluaXRpYWxpemVXZWJLaXQyKCk7CisgICAgSW5pdGlhbGl6ZVdlYktp
dDIoQ2hpbGRQcm9jZXNzKTsKIAogICAgIGlmICghZGVsZWdhdGUuY2hlY2tFbnRpdGxlbWVudHMo
KSkKICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkL2VmbC9XZWJLaXQySW5pdGlhbGl6ZUVGTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL2VmbC9XZWJLaXQySW5pdGlhbGl6ZUVGTC5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJLaXQySW5pdGlhbGl6ZUVGTC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJLaXQySW5pdGlhbGl6ZS5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKwordm9pZCBwbGF0Zm9ybUluaXRpYWxpemVXZWJLaXQyKFByb2Nlc3NUeXBlKQoreworfQor
Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYktpdDJJbml0aWFsaXplR1RL
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYktpdDJJbml0
aWFsaXplR1RLLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3Rr
L1dlYktpdDJJbml0aWFsaXplR1RLLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdDJJbml0
aWFsaXplLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIHBsYXRmb3JtSW5pdGlhbGl6
ZVdlYktpdDIoUHJvY2Vzc1R5cGUpCit7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMjA1MTcxKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjksNiArNjksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTG9nSW5pdGlhbGl6YXRpb24uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vz
c2lvbklELmg+CisjaW5jbHVkZSA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDxydW50
aW1lL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgpAQCAtMzg2LDYgKzM4Nyw4IEBAIE5ldHdvcmtQcm9jZXNzUHJv
eHkmIFdlYlByb2Nlc3NQb29sOjplbnMKIAogICAgIHBhcmFtZXRlcnMuc2hvdWxkVXNlVGVzdGlu
Z05ldHdvcmtTZXNzaW9uID0gbV9zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb247CiAKKyAg
ICBwYXJhbWV0ZXJzLnVybFBhcnNlckVuYWJsZWQgPSBVUkxQYXJzZXI6OmVuYWJsZWQoKTsKKyAg
ICAKICAgICAvLyBBZGQgYW55IHBsYXRmb3JtIHNwZWNpZmljIHBhcmFtZXRlcnMKICAgICBwbGF0
Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhwYXJhbWV0ZXJzKTsKIApAQCAtNTQ3LDYgKzU1
MCw4IEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU4KIAogICAgIFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKIAorICAgIHBhcmFtZXRlcnMu
dXJsUGFyc2VyRW5hYmxlZCA9IFVSTFBhcnNlcjo6ZW5hYmxlZCgpOworICAgIAogICAgIHBhcmFt
ZXRlcnMuaW5qZWN0ZWRCdW5kbGVQYXRoID0gaW5qZWN0ZWRCdW5kbGVQYXRoKCk7CiAgICAgaWYg
KCFwYXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXJhbWV0ZXJzLmluamVjdGVkQnVuZGxlUGF0aCwg
U2FuZGJveEV4dGVuc2lvbjo6UmVhZE9ubHksIHBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQYXRo
RXh0ZW5zaW9uSGFuZGxlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwNTE3MSkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MTA1NSw2ICsxMDU1LDcgQEAKIAkJNUMyMENCQTAxQkIxRUNEODAwODk1QkIxIC8qIE5ldHdvcmtT
ZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QzIwQ0I5RTFCQjBERDE4MDA4OTVCQjEgLyogTmV0d29ya1Nlc3Npb24uaCAqLzsgfTsKIAkJNUMy
OThEQTAxQzNERjAyMTAwNDcwQUZFIC8qIFBlbmRpbmdEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyOThEOUUxQzNERUYyOTAwNDcwQUZF
IC8qIFBlbmRpbmdEb3dubG9hZC5oICovOyB9OwogCQk1Qzc3MDY3NDFEMTEzODM4MDAxMjcwMEYg
LyogV2ViU29ja2V0UHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUM3NzA2NzMxRDExMUQ4QjAwMTI3MDBGIC8qIFdlYlNvY2tldFByb3Zp
ZGVyLmNwcCAqLzsgfTsKKwkJNUM3OTQzOUIxRDc2MkQ2MjAwMzEwMkQ0IC8qIFdlYktpdDJJbml0
aWFsaXplQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Qzc5NDM5QTFENzYyQ0RGMDAzMTAyRDQgLyogV2ViS2l0MkluaXRpYWxpemVDb2NvYS5t
bSAqLzsgfTsKIAkJNUM4NUM3ODgxQzNGMjNDRTAwNjFBNEZBIC8qIFBlbmRpbmdEb3dubG9hZC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Qzg1Qzc4
NjFDM0YyM0M1MDA2MUE0RkEgLyogUGVuZGluZ0Rvd25sb2FkLmNwcCAqLzsgfTsKIAkJNUNCQzlC
OEQxQzY1Mjc5QzAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFza0NvY29hLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCQzlCOEIxQzY1MjU3MzAwQThG
RENGIC8qIE5ldHdvcmtEYXRhVGFza0NvY29hLm1tICovOyB9OwogCQk1Q0JDOUI4RTFDNjUyQ0Ew
MDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0JDOUI4OTFDNjUyNEE1MDBBOEZEQ0YgLyogTmV0d29ya0Rh
dGFUYXNrLmggKi87IH07CkBAIC0zMTE5LDYgKzMxMjAsNyBAQAogCQk1QzIwQ0I5RTFCQjBERDE4
MDA4OTVCQjEgLyogTmV0d29ya1Nlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gTmV0d29ya1Nlc3Npb24uaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMjk4RDlFMUMzREVGMjkwMDQ3
MEFGRSAvKiBQZW5kaW5nRG93bmxvYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gUGVuZGluZ0Rvd25sb2FkLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVu
ZGluZ0Rvd25sb2FkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNzcwNjczMUQx
MTFEOEIwMDEyNzAwRiAvKiBXZWJTb2NrZXRQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJTb2NrZXRQcm92aWRlci5jcHA7IHBhdGggPSBOZXR3b3Jr
L1dlYlNvY2tldFByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM3
OTQzOUExRDc2MkNERjAwMzEwMkQ0IC8qIFdlYktpdDJJbml0aWFsaXplQ29jb2EubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJLaXQySW5pdGlhbGl6ZUNvY29h
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzdDODhEQzFEMEY0MUEwMDA5RDJG
NkQgLyogV2ViU29ja2V0UHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gV2ViU29ja2V0UHJvdmlkZXIuaDsgcGF0aCA9IE5ldHdvcmsvV2ViU29ja2V0UHJvdmlkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM4NUM3ODYxQzNGMjNDNTAwNjFBNEZB
IC8qIFBlbmRpbmdEb3dubG9hZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBQZW5kaW5nRG93bmxvYWQuY3BwOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L1BlbmRpbmdEb3dubG9hZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQkM5
Qjg5MUM2NTI0QTUwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2suaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya0RhdGFUYXNrLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyNjgs
NiArNTI3MCw3IEBACiAJCTM3QzRDMDkwMTgxNEIzN0IwMDM2ODhCOSAvKiBjb2NvYSAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNUM3OTQzOUExRDc2MkNE
RjAwMzEwMkQ0IC8qIFdlYktpdDJJbml0aWFsaXplQ29jb2EubW0gKi8sCiAJCQkJMUExRUYxOTcx
QTFENUI0MjAwMjMyMDBBIC8qIEFQSURhdGFDb2NvYS5tbSAqLywKIAkJCQkzNzhFMUEzQjE4MUVE
NkZGMDAzMTAwN0EgLyogQVBJT2JqZWN0Lm1tICovLAogCQkJCTM3QkVDNERGMTk0OTE0ODYwMDhC
NDI4NiAvKiBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLmggKi8sCkBAIC05Njc2LDYgKzk2
NzksNyBAQAogCQkJCUJDNDA3NjA1MTI0RkYwMjcwMDY4RjIwQSAvKiBXS1N0cmluZy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQzQwNzYxOTEyNEZGMDM3MDA2OEYyMEEgLyogV0tTdHJpbmdDRi5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTI2RjEwQkU5MTkxODdFMkUwMDFEMEU2OCAvKiBXS1N5bnRo
ZXRpY0NsaWNrVGFwR2VzdHVyZVJlY29nbml6ZXIubSBpbiBTb3VyY2VzICovLAorCQkJCTVDNzk0
MzlCMUQ3NjJENjIwMDMxMDJENCAvKiBXZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMkRENjdBMzYxQkQ4NjEwNjAwNTNCMjUxIC8qIFdLVGV4dEZpbmRlckNsaWVu
dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQ0I0RTY5MThCQkUzRDkwMDBGQ0ZDOSAvKiBXS1Rl
eHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzQwNzYwNzEy
NEZGMDI3MDA2OEYyMEEgLyogV0tUeXBlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMDUxNzEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDAsNiArMTAwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0
dGluZ3MuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvVXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KQEAgLTI2NCw2ICsyNjUsOCBAQCB2b2lkIFdlYlByb2Nlc3M6
OmluaXRpYWxpemVDb25uZWN0aW9uKElQCiAKIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdl
YlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7Cisg
ICAgVVJMUGFyc2VyOjpzZXRFbmFibGVkKHBhcmFtZXRlcnMudXJsUGFyc2VyRW5hYmxlZCk7Cisg
ICAgCiAgICAgQVNTRVJUKG1fcGFnZU1hcC5pc0VtcHR5KCkpOwogCiAjaWYgT1MoTElOVVgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287533</attachid>
            <date>2016-08-31 13:18:38 -0700</date>
            <delta_ts>2016-08-31 13:21:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161363-20160831131628.patch</filename>
            <type>text/plain</type>
            <size>39945</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTI2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE2LTA4LTMxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHJ1bnRp
bWUgZmxhZyBmb3IgdXNpbmcgVVJMUGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEzNjMKKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vp
bmlnLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gIE5vIGNoYW5nZSBpbiBkZWZhdWx0IGJlaGF2
aW9yLgorCisgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0v
VVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6VVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OlVSTDo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OnNldFByb3RvY29sKToKKyAgICAg
ICAgKFdlYkNvcmU6OlVSTDo6c2V0SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OnJlbW92
ZVBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpzZXRQb3J0KToKKyAgICAgICAgKFdlYkNv
cmU6OlVSTDo6c2V0SG9zdEFuZFBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpzZXRVc2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6c2V0UGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpV
Ukw6OnNldEZyYWdtZW50SWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OnJlbW92
ZUZyYWdtZW50SWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OnNldFF1ZXJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OlVSTDo6c2V0UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpVUkw6
OnBhcnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9VUkxQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VVJMUGFyc2VyOjpwYXJzZSk6CisgICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OnNl
dEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjplbmFibGVkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9VUkxQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9VUkxDRi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpVUkw6OlVSTCk6CisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvVVJMUGFyc2VyQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2Vy
OjpVUkxQYXJzZXJFbmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVVJMTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6VVJMOjpVUkwpOgorCiAyMDE2LTA4LTMxICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlYmFzZWxpbmUgYmluZGluZyB0ZXN0cyBh
ZnRlciByMjA1MjU3LgpJbmRleDogU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UJKHJldmlzaW9uIDIw
NTI2MikKKysrIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCSh3b3JraW5nIGNvcHkp
CkBAIC0zMjksNiArMzI5LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxh
dGZvcm0vY29jb2EvU3lzdGVtVmVyc2lvbi5tbQogICAgIHBsYXRmb3JtL2NvY29hL1RlbGVwaG9u
ZU51bWJlckRldGVjdG9yQ29jb2EuY3BwCiAgICAgcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5t
bQorICAgIHBsYXRmb3JtL2NvY29hL1VSTFBhcnNlckNvY29hLm1tCiAgICAgcGxhdGZvcm0vY29j
b2EvVk5vZGVUcmFja2VyQ29jb2EuY3BwCiAgICAgcGxhdGZvcm0vY29jb2EvV2ViQ29yZU5TRXJy
b3JFeHRyYXMubW0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCShyZXZpc2lvbiAyMDUy
NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmgiCiAjaW5j
bHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgorI2lu
Y2x1ZGUgIlVSTFBhcnNlci5oIgogI2luY2x1ZGUgIlVVSUQuaCIKICNpbmNsdWRlIDxzdGRpby5o
PgogI2luY2x1ZGUgPHVuaWNvZGUvdWlkbmEuaD4KQEAgLTQzOCwyNyArNDM5LDQyIEBAIHZvaWQg
VVJMOjppbnZhbGlkYXRlKCkKIAogVVJMOjpVUkwoUGFyc2VkVVJMU3RyaW5nVGFnLCBjb25zdCBT
dHJpbmcmIHVybCkKIHsKLSAgICBwYXJzZSh1cmwpOworICAgIGlmIChVUkxQYXJzZXI6OmVuYWJs
ZWQoKSkgeworICAgICAgICBVUkxQYXJzZXIgcGFyc2VyOworICAgICAgICAqdGhpcyA9IHBhcnNl
ci5wYXJzZSh1cmwpOworICAgICAgICBBU1NFUlQodXJsLmlzRW1wdHkoKSAmJiBtX3N0cmluZy5p
c0VtcHR5KCkgfHwgdXJsID09IG1fc3RyaW5nKTsgLy8gRklYTUU6IEludmVzdGlnYXRlIHBhcnNp
bmcgbm9uLW51bGwgZW1wdHkgUGFyc2VkVVJMU3RyaW5ncy4KKyAgICB9IGVsc2UgeworICAgICAg
ICBwYXJzZSh1cmwpOwogI2lmIE9TKFdJTkRPV1MpCi0gICAgLy8gRklYTUUoMTQ4NTk4KTogV29y
ayBhcm91bmQgV2luZG93cyBsb2NhbCBmaWxlIGhhbmRsaW5nIGJ1ZyBpbiBDRk5ldHdvcmsKLSAg
ICBBU1NFUlQoaXNMb2NhbEZpbGUoKSB8fCB1cmwgPT0gbV9zdHJpbmcpOworICAgICAgICAvLyBG
SVhNRSgxNDg1OTgpOiBXb3JrIGFyb3VuZCBXaW5kb3dzIGxvY2FsIGZpbGUgaGFuZGxpbmcgYnVn
IGluIENGTmV0d29yaworICAgICAgICBBU1NFUlQoaXNMb2NhbEZpbGUoKSB8fCB1cmwgPT0gbV9z
dHJpbmcpOwogI2Vsc2UKLSAgICBBU1NFUlQodXJsID09IG1fc3RyaW5nKTsKKyAgICAgICAgQVNT
RVJUKHVybCA9PSBtX3N0cmluZyk7CiAjZW5kaWYKKyAgICB9CiB9CiAKIFVSTDo6VVJMKGNvbnN0
IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSkKIHsKLSAgICBpbml0KGJhc2UsIHJl
bGF0aXZlLCBVVEY4RW5jb2RpbmcoKSk7CisgICAgaWYgKFVSTFBhcnNlcjo6ZW5hYmxlZCgpKSB7
CisgICAgICAgIFVSTFBhcnNlciBwYXJzZXI7CisgICAgICAgICp0aGlzID0gcGFyc2VyLnBhcnNl
KHJlbGF0aXZlLCBiYXNlKTsKKyAgICB9IGVsc2UKKyAgICAgICAgaW5pdChiYXNlLCByZWxhdGl2
ZSwgVVRGOEVuY29kaW5nKCkpOwogfQogCiBVUkw6OlVSTChjb25zdCBVUkwmIGJhc2UsIGNvbnN0
IFN0cmluZyYgcmVsYXRpdmUsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcpCiB7Ci0gICAg
Ly8gRm9yIFVURi17NywxNiwzMn0sIHdlIHdhbnQgdG8gdXNlIFVURi04IGZvciB0aGUgcXVlcnkg
cGFydCBhcyAKLSAgICAvLyB3ZSBkbyB3aGVuIHN1Ym1pdHRpbmcgYSBmb3JtLiBBIGZvcm0gd2l0
aCBHRVQgbWV0aG9kCi0gICAgLy8gaGFzIGl0cyBjb250ZW50cyBhZGRlZCB0byBhIFVSTCBhcyBx
dWVyeSBwYXJhbXMgYW5kIGl0IG1ha2VzIHNlbnNlCi0gICAgLy8gdG8gYmUgY29uc2lzdGVudC4K
LSAgICBpbml0KGJhc2UsIHJlbGF0aXZlLCBlbmNvZGluZy5lbmNvZGluZ0ZvckZvcm1TdWJtaXNz
aW9uKCkpOworICAgIGlmIChVUkxQYXJzZXI6OmVuYWJsZWQoKSkgeworICAgICAgICBVUkxQYXJz
ZXIgcGFyc2VyOworICAgICAgICAqdGhpcyA9IHBhcnNlci5wYXJzZShyZWxhdGl2ZSwgYmFzZSwg
ZW5jb2RpbmcpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEZvciBVVEYtezcsMTYsMzJ9LCB3
ZSB3YW50IHRvIHVzZSBVVEYtOCBmb3IgdGhlIHF1ZXJ5IHBhcnQgYXMKKyAgICAgICAgLy8gd2Ug
ZG8gd2hlbiBzdWJtaXR0aW5nIGEgZm9ybS4gQSBmb3JtIHdpdGggR0VUIG1ldGhvZAorICAgICAg
ICAvLyBoYXMgaXRzIGNvbnRlbnRzIGFkZGVkIHRvIGEgVVJMIGFzIHF1ZXJ5IHBhcmFtcyBhbmQg
aXQgbWFrZXMgc2Vuc2UKKyAgICAgICAgLy8gdG8gYmUgY29uc2lzdGVudC4KKyAgICAgICAgaW5p
dChiYXNlLCByZWxhdGl2ZSwgZW5jb2RpbmcuZW5jb2RpbmdGb3JGb3JtU3VibWlzc2lvbigpKTsK
KyAgICB9CiB9CiAKIHN0YXRpYyBib29sIHNob3VsZFRyaW1Gcm9tVVJMKFVDaGFyIGMpCkBAIC00
NzEsNiArNDg3LDkgQEAgc3RhdGljIGJvb2wgc2hvdWxkVHJpbUZyb21VUkwoVUNoYXIgYykKIAog
dm9pZCBVUkw6OmluaXQoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBj
b25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nKQogeworICAgIGlmIChVUkxQYXJzZXI6OmVuYWJs
ZWQoKSkKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKICAgICAvLyBBbGxvdyByZXNv
bHV0aW9ucyB3aXRoIGEgbnVsbCBvciBlbXB0eSBiYXNlIFVSTCwgYnV0IG5vdCB3aXRoIGFueSBv
dGhlciBpbnZhbGlkIG9uZS4KICAgICAvLyBGSVhNRTogSXMgdGhpcyBhIGdvb2QgcnVsZT8KICAg
ICBpZiAoIWJhc2UubV9pc1ZhbGlkICYmICFiYXNlLmlzRW1wdHkoKSkgewpAQCAtODI5LDExICs4
NDgsMjAgQEAgYm9vbCBVUkw6OnNldFByb3RvY29sKGNvbnN0IFN0cmluZyYgcykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFtX2lzVmFsaWQpIHsKLSAgICAgICAgcGFyc2UobmV3
UHJvdG9jb2wgKyAnOicgKyBtX3N0cmluZyk7CisgICAgICAgIGlmIChVUkxQYXJzZXI6OmVuYWJs
ZWQoKSkgeworICAgICAgICAgICAgVVJMUGFyc2VyIHBhcnNlcjsKKyAgICAgICAgICAgICp0aGlz
ID0gcGFyc2VyLnBhcnNlKG1ha2VTdHJpbmcobmV3UHJvdG9jb2wsICI6IiwgbV9zdHJpbmcpKTsK
KyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBwYXJzZShuZXdQcm90b2NvbCArICc6JyArIG1f
c3RyaW5nKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgcGFyc2UobmV3UHJv
dG9jb2wgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9zY2hlbWVFbmQpKTsKKyAgICBpZiAoVVJMUGFy
c2VyOjplbmFibGVkKCkpIHsKKyAgICAgICAgVVJMUGFyc2VyIHBhcnNlcjsKKyAgICAgICAgKnRo
aXMgPSBwYXJzZXIucGFyc2UobWFrZVN0cmluZyhuZXdQcm90b2NvbCwgbV9zdHJpbmcuc3Vic3Ry
aW5nKG1fc2NoZW1lRW5kKSkpOworICAgIH0gZWxzZQorICAgICAgICBwYXJzZShuZXdQcm90b2Nv
bCArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3NjaGVtZUVuZCkpOworCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTkwMCwxNCArOTI4LDIyIEBAIHZvaWQgVVJMOjpzZXRIb3N0KGNvbnN0IFN0cmlu
ZyYgcykKICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KGVuY29kZWRIb3N0TmFtZS5kYXRh
KCksIGVuY29kZWRIb3N0TmFtZS5zaXplKCkpKTsKICAgICBidWlsZGVyLmFwcGVuZChtX3N0cmlu
Zy5zdWJzdHJpbmcobV9ob3N0RW5kKSk7CiAgICAgCi0gICAgcGFyc2UoYnVpbGRlci50b1N0cmlu
ZygpKTsKKyAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpIHsKKyAgICAgICAgVVJMUGFyc2Vy
IHBhcnNlcjsKKyAgICAgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UoYnVpbGRlci50b1N0cmluZygp
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcGFyc2UoYnVpbGRlci50b1N0cmluZygpKTsKIH0KIAog
dm9pZCBVUkw6OnJlbW92ZVBvcnQoKQogewogICAgIGlmIChtX2hvc3RFbmQgPT0gbV9wb3J0RW5k
KQogICAgICAgICByZXR1cm47Ci0gICAgcGFyc2UobV9zdHJpbmcubGVmdChtX2hvc3RFbmQpICsg
bV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOworICAgIGlmIChVUkxQYXJzZXI6OmVuYWJs
ZWQoKSkgeworICAgICAgICBVUkxQYXJzZXIgcGFyc2VyOworICAgICAgICAqdGhpcyA9IHBhcnNl
ci5wYXJzZShtX3N0cmluZy5sZWZ0KG1faG9zdEVuZCkgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9w
b3J0RW5kKSk7CisgICAgfSBlbHNlCisgICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9ob3N0
RW5kKSArIG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQpKTsKIH0KIAogdm9pZCBVUkw6OnNl
dFBvcnQodW5zaWduZWQgc2hvcnQgaSkKQEAgLTkxOCw3ICs5NTQsMTEgQEAgdm9pZCBVUkw6OnNl
dFBvcnQodW5zaWduZWQgc2hvcnQgaSkKICAgICBib29sIGNvbG9uTmVlZGVkID0gbV9wb3J0RW5k
ID09IG1faG9zdEVuZDsKICAgICB1bnNpZ25lZCBwb3J0U3RhcnQgPSAoY29sb25OZWVkZWQgPyBt
X2hvc3RFbmQgOiBtX2hvc3RFbmQgKyAxKTsKIAotICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQocG9y
dFN0YXJ0KSArIChjb2xvbk5lZWRlZCA/ICI6IiA6ICIiKSArIFN0cmluZzo6bnVtYmVyKGkpICsg
bV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9ydEVuZCkpOworICAgIGlmIChVUkxQYXJzZXI6OmVuYWJs
ZWQoKSkgeworICAgICAgICBVUkxQYXJzZXIgcGFyc2VyOworICAgICAgICAqdGhpcyA9IHBhcnNl
ci5wYXJzZShtYWtlU3RyaW5nKG1fc3RyaW5nLmxlZnQocG9ydFN0YXJ0KSwgKGNvbG9uTmVlZGVk
ID8gIjoiIDogIiIpLCBTdHJpbmc6Om51bWJlcihpKSwgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcG9y
dEVuZCkpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcGFyc2UobV9zdHJpbmcubGVmdChwb3J0U3Rh
cnQpICsgKGNvbG9uTmVlZGVkID8gIjoiIDogIiIpICsgU3RyaW5nOjpudW1iZXIoaSkgKyBtX3N0
cmluZy5zdWJzdHJpbmcobV9wb3J0RW5kKSk7CiB9CiAKIHZvaWQgVVJMOjpzZXRIb3N0QW5kUG9y
dChjb25zdCBTdHJpbmcmIGhvc3RBbmRQb3J0KQpAQCAtOTU5LDcgKzk5OSwxMSBAQCB2b2lkIFVS
TDo6c2V0SG9zdEFuZFBvcnQoY29uc3QgU3RyaW5nJiBoCiAgICAgfQogICAgIGJ1aWxkZXIuYXBw
ZW5kKG1fc3RyaW5nLnN1YnN0cmluZyhtX3BvcnRFbmQpKTsKIAotICAgIHBhcnNlKGJ1aWxkZXIu
dG9TdHJpbmcoKSk7CisgICAgaWYgKFVSTFBhcnNlcjo6ZW5hYmxlZCgpKSB7CisgICAgICAgIFVS
TFBhcnNlciBwYXJzZXI7CisgICAgICAgICp0aGlzID0gcGFyc2VyLnBhcnNlKGJ1aWxkZXIudG9T
dHJpbmcoKSk7CisgICAgfSBlbHNlCisgICAgICAgIHBhcnNlKGJ1aWxkZXIudG9TdHJpbmcoKSk7
CiB9CiAKIHZvaWQgVVJMOjpzZXRVc2VyKGNvbnN0IFN0cmluZyYgdXNlcikKQEAgLTk3OCwxNCAr
MTAyMiwyMyBAQCB2b2lkIFVSTDo6c2V0VXNlcihjb25zdCBTdHJpbmcmIHVzZXIpCiAgICAgICAg
IC8vIEFkZCAnQCcgaWYgd2UgZGlkbid0IGhhdmUgb25lIGJlZm9yZS4KICAgICAgICAgaWYgKGVu
ZCA9PSBtX2hvc3RFbmQgfHwgKGVuZCA9PSBtX3Bhc3N3b3JkRW5kICYmIG1fc3RyaW5nW2VuZF0g
IT0gJ0AnKSkKICAgICAgICAgICAgIHUuYXBwZW5kKCdAJyk7Ci0gICAgICAgIHBhcnNlKG1fc3Ry
aW5nLmxlZnQobV91c2VyU3RhcnQpICsgdSArIG1fc3RyaW5nLnN1YnN0cmluZyhlbmQpKTsKKyAg
ICAgICAgaWYgKFVSTFBhcnNlcjo6ZW5hYmxlZCgpKSB7CisgICAgICAgICAgICBVUkxQYXJzZXIg
cGFyc2VyOworICAgICAgICAgICAgKnRoaXMgPSBwYXJzZXIucGFyc2UobWFrZVN0cmluZyhtX3N0
cmluZy5sZWZ0KG1fdXNlclN0YXJ0KSwgdSwgbV9zdHJpbmcuc3Vic3RyaW5nKGVuZCkpKTsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fdXNlclN0YXJ0
KSArIHUgKyBtX3N0cmluZy5zdWJzdHJpbmcoZW5kKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
Ly8gUmVtb3ZlICdAJyBpZiB3ZSBub3cgaGF2ZSBuZWl0aGVyIHVzZXIgbm9yIHBhc3N3b3JkLgog
ICAgICAgICBpZiAobV91c2VyRW5kID09IG1fcGFzc3dvcmRFbmQgJiYgZW5kICE9IG1faG9zdEVu
ZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykKICAgICAgICAgICAgIGVuZCArPSAxOwogICAgICAg
ICAvLyBXZSBkb24ndCB3YW50IHRvIHBhcnNlIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ug
d2hlcmUgd2UgYXJlIG5vdCBnb2luZyB0byBtYWtlIGEgY2hhbmdlLgotICAgICAgICBpZiAobV91
c2VyU3RhcnQgIT0gZW5kKQotICAgICAgICAgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3VzZXJT
dGFydCkgKyBtX3N0cmluZy5zdWJzdHJpbmcoZW5kKSk7CisgICAgICAgIGlmIChtX3VzZXJTdGFy
dCAhPSBlbmQpIHsKKyAgICAgICAgICAgIGlmIChVUkxQYXJzZXI6OmVuYWJsZWQoKSkgeworICAg
ICAgICAgICAgICAgIFVSTFBhcnNlciBwYXJzZXI7CisgICAgICAgICAgICAgICAgKnRoaXMgPSBw
YXJzZXIucGFyc2UobWFrZVN0cmluZyhtX3N0cmluZy5sZWZ0KG1fdXNlclN0YXJ0KSwgbV9zdHJp
bmcuc3Vic3RyaW5nKGVuZCkpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
IHBhcnNlKG1fc3RyaW5nLmxlZnQobV91c2VyU3RhcnQpICsgbV9zdHJpbmcuc3Vic3RyaW5nKGVu
ZCkpOworICAgICAgICB9CiAgICAgfQogfQogCkBAIC0xMDAyLDE0ICsxMDU1LDIzIEBAIHZvaWQg
VVJMOjpzZXRQYXNzKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQKICAgICAgICAgLy8gRWF0IHRoZSBl
eGlzdGluZyAnQCcgc2luY2Ugd2UgYXJlIGdvaW5nIHRvIGFkZCBvdXIgb3duLgogICAgICAgICBp
ZiAoZW5kICE9IG1faG9zdEVuZCAmJiBtX3N0cmluZ1tlbmRdID09ICdAJykKICAgICAgICAgICAg
IGVuZCArPSAxOwotICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fdXNlckVuZCkgKyBwICsg
bV9zdHJpbmcuc3Vic3RyaW5nKGVuZCkpOworICAgICAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVk
KCkpIHsKKyAgICAgICAgICAgIFVSTFBhcnNlciBwYXJzZXI7CisgICAgICAgICAgICAqdGhpcyA9
IHBhcnNlci5wYXJzZShtYWtlU3RyaW5nKG1fc3RyaW5nLmxlZnQobV91c2VyRW5kKSwgcCwgbV9z
dHJpbmcuc3Vic3RyaW5nKGVuZCkpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBwYXJz
ZShtX3N0cmluZy5sZWZ0KG1fdXNlckVuZCkgKyBwICsgbV9zdHJpbmcuc3Vic3RyaW5nKGVuZCkp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFJlbW92ZSAnQCcgaWYgd2Ugbm93IGhhdmUgbmVp
dGhlciB1c2VyIG5vciBwYXNzd29yZC4KICAgICAgICAgaWYgKG1fdXNlclN0YXJ0ID09IG1fdXNl
ckVuZCAmJiBlbmQgIT0gbV9ob3N0RW5kICYmIG1fc3RyaW5nW2VuZF0gPT0gJ0AnKQogICAgICAg
ICAgICAgZW5kICs9IDE7CiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcGFyc2UgaW4gdGhl
IGV4dHJlbWVseSBjb21tb24gY2FzZSB3aGVyZSB3ZSBhcmUgbm90IGdvaW5nIHRvIG1ha2UgYSBj
aGFuZ2UuCi0gICAgICAgIGlmIChtX3VzZXJFbmQgIT0gZW5kKQotICAgICAgICAgICAgcGFyc2Uo
bV9zdHJpbmcubGVmdChtX3VzZXJFbmQpICsgbV9zdHJpbmcuc3Vic3RyaW5nKGVuZCkpOworICAg
ICAgICBpZiAobV91c2VyRW5kICE9IGVuZCkgeworICAgICAgICAgICAgaWYgKFVSTFBhcnNlcjo6
ZW5hYmxlZCgpKSB7CisgICAgICAgICAgICAgICAgVVJMUGFyc2VyIHBhcnNlcjsKKyAgICAgICAg
ICAgICAgICAqdGhpcyA9IHBhcnNlci5wYXJzZShtYWtlU3RyaW5nKG1fc3RyaW5nLmxlZnQobV91
c2VyRW5kKSwgbV9zdHJpbmcuc3Vic3RyaW5nKGVuZCkpKTsKKyAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV91c2VyRW5kKSArIG1fc3RyaW5n
LnN1YnN0cmluZyhlbmQpKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtMTAxOSwxNCArMTA4
MSwyMyBAQCB2b2lkIFVSTDo6c2V0RnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0IFN0CiAgICAgICAg
IHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBOb24tQVNDSUkgY2hhcmFjdGVycyBtdXN0IGJlIGVu
Y29kZWQgYW5kIGVzY2FwZWQgdG8gbWF0Y2ggcGFyc2UoKSBleHBlY3RhdGlvbnMuCi0gICAgcGFy
c2UobV9zdHJpbmcubGVmdChtX3F1ZXJ5RW5kKSArICIjIiArIHMpOworICAgIGlmIChVUkxQYXJz
ZXI6OmVuYWJsZWQoKSkgeworICAgICAgICBVUkxQYXJzZXIgcGFyc2VyOworICAgICAgICAqdGhp
cyA9IHBhcnNlci5wYXJzZShtYWtlU3RyaW5nKG1fc3RyaW5nLmxlZnQobV9xdWVyeUVuZCksICIj
IiwgcykpOworICAgIH0gZWxzZQorICAgICAgICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fcXVlcnlF
bmQpICsgIiMiICsgcyk7CiB9CiAKIHZvaWQgVVJMOjpyZW1vdmVGcmFnbWVudElkZW50aWZpZXIo
KQogewogICAgIGlmICghbV9pc1ZhbGlkKQogICAgICAgICByZXR1cm47Ci0gICAgcGFyc2UobV9z
dHJpbmcubGVmdChtX3F1ZXJ5RW5kKSk7CisgICAgaWYgKFVSTFBhcnNlcjo6ZW5hYmxlZCgpKSB7
CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgbmVlZCB0byBwYXJzZSBoZXJlLgorICAg
ICAgICBVUkxQYXJzZXIgcGFyc2VyOworICAgICAgICAqdGhpcyA9IHBhcnNlci5wYXJzZShtX3N0
cmluZy5sZWZ0KG1fcXVlcnlFbmQpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcGFyc2UobV9zdHJp
bmcubGVmdChtX3F1ZXJ5RW5kKSk7CiB9CiAgICAgCiB2b2lkIFVSTDo6c2V0UXVlcnkoY29uc3Qg
U3RyaW5nJiBxdWVyeSkKQEAgLTEwMzgsMTAgKzExMDksMTkgQEAgdm9pZCBVUkw6OnNldFF1ZXJ5
KGNvbnN0IFN0cmluZyYgcXVlcnkpCiAgICAgLy8gVXN1YWxseSwgdGhlIHF1ZXJ5IGlzIGVuY29k
ZWQgdXNpbmcgZG9jdW1lbnQgZW5jb2RpbmcsIG5vdCBVVEYtOCwgYnV0IHdlIGRvbid0IGhhdmUK
ICAgICAvLyBhY2Nlc3MgdG8gdGhlIGRvY3VtZW50IGluIHRoaXMgZnVuY3Rpb24uCiAgICAgLy8g
aHR0cHM6Ly93ZWJraXQub3JnL2IvMTYxMTc2Ci0gICAgaWYgKChxdWVyeS5pc0VtcHR5KCkgfHwg
cXVlcnlbMF0gIT0gJz8nKSAmJiAhcXVlcnkuaXNOdWxsKCkpCi0gICAgICAgIHBhcnNlKG1fc3Ry
aW5nLmxlZnQobV9wYXRoRW5kKSArICI/IiArIHF1ZXJ5ICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1f
cXVlcnlFbmQpKTsKLSAgICBlbHNlCi0gICAgICAgIHBhcnNlKG1fc3RyaW5nLmxlZnQobV9wYXRo
RW5kKSArIHF1ZXJ5ICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcXVlcnlFbmQpKTsKKyAgICBpZiAo
KHF1ZXJ5LmlzRW1wdHkoKSB8fCBxdWVyeVswXSAhPSAnPycpICYmICFxdWVyeS5pc051bGwoKSkg
eworICAgICAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpIHsKKyAgICAgICAgICAgIFVSTFBh
cnNlciBwYXJzZXI7CisgICAgICAgICAgICAqdGhpcyA9IHBhcnNlci5wYXJzZShtYWtlU3RyaW5n
KG1fc3RyaW5nLmxlZnQobV9wYXRoRW5kKSwgIj8iLCBxdWVyeSwgbV9zdHJpbmcuc3Vic3RyaW5n
KG1fcXVlcnlFbmQpKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcGFyc2UobV9zdHJp
bmcubGVmdChtX3BhdGhFbmQpICsgIj8iICsgcXVlcnkgKyBtX3N0cmluZy5zdWJzdHJpbmcobV9x
dWVyeUVuZCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChVUkxQYXJzZXI6OmVuYWJsZWQo
KSkgeworICAgICAgICAgICAgVVJMUGFyc2VyIHBhcnNlcjsKKyAgICAgICAgICAgICp0aGlzID0g
cGFyc2VyLnBhcnNlKG1ha2VTdHJpbmcobV9zdHJpbmcubGVmdChtX3BhdGhFbmQpLCBxdWVyeSwg
bV9zdHJpbmcuc3Vic3RyaW5nKG1fcXVlcnlFbmQpKSk7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgcGFyc2UobV9zdHJpbmcubGVmdChtX3BhdGhFbmQpICsgcXVlcnkgKyBtX3N0cmluZy5z
dWJzdHJpbmcobV9xdWVyeUVuZCkpOworICAgIH0KIAogfQogCkBAIC0xMDU2LDcgKzExMzYsMTEg
QEAgdm9pZCBVUkw6OnNldFBhdGgoY29uc3QgU3RyaW5nJiBzKQogICAgIGlmIChwYXRoLmlzRW1w
dHkoKSB8fCBwYXRoWzBdICE9ICcvJykKICAgICAgICAgcGF0aCA9ICIvIiArIHBhdGg7CiAKLSAg
ICBwYXJzZShtX3N0cmluZy5sZWZ0KG1fcG9ydEVuZCkgKyBlbmNvZGVXaXRoVVJMRXNjYXBlU2Vx
dWVuY2VzKHBhdGgpICsgbV9zdHJpbmcuc3Vic3RyaW5nKG1fcGF0aEVuZCkpOworICAgIGlmIChV
UkxQYXJzZXI6OmVuYWJsZWQoKSkgeworICAgICAgICBVUkxQYXJzZXIgcGFyc2VyOworICAgICAg
ICAqdGhpcyA9IHBhcnNlci5wYXJzZShtYWtlU3RyaW5nKG1fc3RyaW5nLmxlZnQobV9wb3J0RW5k
KSwgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhwYXRoKSwgbV9zdHJpbmcuc3Vic3RyaW5n
KG1fcGF0aEVuZCkpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcGFyc2UobV9zdHJpbmcubGVmdCht
X3BvcnRFbmQpICsgZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVlbmNlcyhwYXRoKSArIG1fc3RyaW5n
LnN1YnN0cmluZyhtX3BhdGhFbmQpKTsKIH0KIAogU3RyaW5nIGRlY29kZVVSTEVzY2FwZVNlcXVl
bmNlcyhjb25zdCBTdHJpbmcmIHN0cmluZykKQEAgLTExODcsNiArMTI3MSw4IEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCBoYXNTbGFzaERvdE9yRG90RG90KGMKIAogdm9pZCBVUkw6OnBhcnNlKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogeworICAgIGlmIChVUkxQYXJzZXI6OmVuYWJsZWQoKSkKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgY2hlY2tFbmNvZGVkU3RyaW5nKHN0cmluZyk7
CiAKICAgICBDaGFyQnVmZmVyIGJ1ZmZlcihzdHJpbmcubGVuZ3RoKCkgKyAxKTsKQEAgLTEzNTQs
NiArMTQ0MCw4IEBAIHN0YXRpYyBib29sIGlzQ2Fub25pY2FsSG9zdG5hbWVMb3dlcmNhc2UKIAog
dm9pZCBVUkw6OnBhcnNlKGNvbnN0IGNoYXIqIHVybCwgY29uc3QgU3RyaW5nKiBvcmlnaW5hbFN0
cmluZykKIHsKKyAgICBpZiAoVVJMUGFyc2VyOjplbmFibGVkKCkpCisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIGlmICghdXJsIHx8IHVybFswXSA9PSAnXDAnKSB7CiAgICAgICAg
IC8vIHZhbGlkIFVSTCBtdXN0IGJlIG5vbi1lbXB0eQogICAgICAgICBtX3N0cmluZyA9IG9yaWdp
bmFsU3RyaW5nID8gKm9yaWdpbmFsU3RyaW5nIDogdXJsOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVVJMUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9VUkxQYXJzZXIuY3BwCShyZXZpc2lvbiAyMDUyNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9VUkxQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNiArMTMwLDcgQEAg
dm9pZCBVUkxQYXJzZXI6OmNvcHlVUkxQYXJ0c1VudGlsKGNvbnN0IAogICAgIAogVVJMIFVSTFBh
cnNlcjo6cGFyc2UoY29uc3QgU3RyaW5nJiBpbnB1dCwgY29uc3QgVVJMJiBiYXNlLCBjb25zdCBU
ZXh0RW5jb2RpbmcmKQogeworICAgIExPRyhVUkxQYXJzZXIsICJQYXJzaW5nIFVSTCA8JXM+IGJh
c2UgPCVzPiIsIGlucHV0LnV0ZjgoKS5kYXRhKCksIGJhc2Uuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgbV91cmwgPSB7IH07CiAgICAgbV9idWZmZXIuY2xlYXIoKTsKICAgICBtX2F1dGhv
cml0eU9ySG9zdEJ1ZmZlci5jbGVhcigpOwpAQCAtNTI3LDYgKzUyOCw3IEBAIFVSTCBVUkxQYXJz
ZXI6OnBhcnNlKGNvbnN0IFN0cmluZyYgaW5wdXQKIAogICAgIG1fdXJsLm1fc3RyaW5nID0gbV9i
dWZmZXIudG9TdHJpbmcoKTsKICAgICBtX3VybC5tX2lzVmFsaWQgPSB0cnVlOworICAgIExPRyhV
UkxQYXJzZXIsICJQYXJzZWQgVVJMIDwlcz4iLCBtX3VybC5tX3N0cmluZy51dGY4KCkuZGF0YSgp
KTsKICAgICByZXR1cm4gbV91cmw7CiB9CiAKQEAgLTc0NSw0ICs3NDcsMTYgQEAgYm9vbCBVUkxQ
YXJzZXI6OmFsbFZhbHVlc0VxdWFsKGNvbnN0IFVSTAogICAgICAgICAmJiBhLm1fZnJhZ21lbnRF
bmQgPT0gYi5tX2ZyYWdtZW50RW5kOwogfQogCitzdGF0aWMgYm9vbCB1cmxQYXJzZXJFbmFibGVk
ID0gZmFsc2U7CisKK3ZvaWQgVVJMUGFyc2VyOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sK
KyAgICB1cmxQYXJzZXJFbmFibGVkID0gZW5hYmxlZDsKK30KKworYm9vbCBVUkxQYXJzZXI6OmVu
YWJsZWQoKQoreworICAgIHJldHVybiB1cmxQYXJzZXJFbmFibGVkOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuaAkocmV2aXNp
b24gMjA1MjYyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDYgKzM2LDkgQEAgY2xhc3MgVVJMUGFyc2VyIHsKIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBVUkwgcGFyc2UoY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJiA9IHsg
fSwgY29uc3QgVGV4dEVuY29kaW5nJiA9IFVURjhFbmNvZGluZygpKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgYm9vbCBhbGxWYWx1ZXNFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsK
KworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGVuYWJsZWQoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRFbmFibGVkKGJvb2wpOwogcHJpdmF0ZToKICAgICBVUkwg
bV91cmw7CiAgICAgU3RyaW5nQnVpbGRlciBtX2J1ZmZlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL1VSTENGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9VUkxDRi5jcHAJKHJldmlzaW9uIDIwNTI2MikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NmL1VSTENGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2lu
Y2x1ZGUgIlVSTC5oIgogCiAjaW5jbHVkZSAiQ0ZVUkxFeHRyYXMuaCIKKyNpbmNsdWRlICJVUkxQ
YXJzZXIuaCIKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlVSTC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtNDYsNyArNDcsMTEgQEAgVVJMOjpVUkwoQ0ZVUkxSZWYg
dXJsKQogICAgIC8vIEZJWE1FOiBXaHkgaXMgaXQgT0sgdG8gaWdub3JlIGJhc2UgVVJMIGhlcmU/
CiAgICAgQ1N0cmluZyB1cmxCeXRlczsKICAgICBnZXRVUkxCeXRlcyh1cmwsIHVybEJ5dGVzKTsK
LSAgICBwYXJzZSh1cmxCeXRlcy5kYXRhKCkpOworICAgIGlmIChVUkxQYXJzZXI6OmVuYWJsZWQo
KSkgeworICAgICAgICBVUkxQYXJzZXIgcGFyc2VyOworICAgICAgICBwYXJzZXIucGFyc2UodXJs
Qnl0ZXMuZGF0YSgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcGFyc2UodXJsQnl0ZXMuZGF0YSgp
KTsKIH0KIAogI2lmICFVU0UoRk9VTkRBVElPTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1VSTFBhcnNlckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1VSTFBhcnNlckNvY29hLm1tCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1VSTFBhcnNlckNvY29hLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIlVSTFBhcnNlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitib29sIFVSTFBh
cnNlcjo6VVJMUGFyc2VyRW5hYmxlZCgpCit7CisgICAgc3RhdGljIGJvb2wgdXNlID0gW1tOU1Vz
ZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpAIlVSTFBhcnNlckVu
YWJsZWQiXTsKKyAgICByZXR1cm4gdXNlOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvVVJMTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9VUkxNYWMubW0JKHJldmlzaW9uIDIwNTI2MikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9VUkxNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNp
bXBvcnQgIlVSTC5oIgogCiAjaW1wb3J0ICJDRlVSTEV4dHJhcy5oIgorI2ltcG9ydCAiVVJMUGFy
c2VyLmgiCiAjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90
ZXh0L0NTdHJpbmcuaD4KIApAQCAtNDIsNyArNDMsMTEgQEAgVVJMOjpVUkwoTlNVUkwgKnVybCkK
ICAgICAvLyBGSVhNRTogV2h5IGlzIGl0IE9LIHRvIGlnbm9yZSBiYXNlIFVSTCBoZXJlPwogICAg
IENTdHJpbmcgdXJsQnl0ZXM7CiAgICAgZ2V0VVJMQnl0ZXMocmVpbnRlcnByZXRfY2FzdDxDRlVS
TFJlZj4odXJsKSwgdXJsQnl0ZXMpOwotICAgIHBhcnNlKHVybEJ5dGVzLmRhdGEoKSk7CisgICAg
aWYgKFVSTFBhcnNlcjo6ZW5hYmxlZCgpKSB7CisgICAgICAgIFVSTFBhcnNlciBwYXJzZXI7Cisg
ICAgICAgICp0aGlzID0gcGFyc2VyLnBhcnNlKHVybEJ5dGVzLmRhdGEoKSk7CisgICAgfSBlbHNl
CisgICAgICAgIHBhcnNlKHVybEJ5dGVzLmRhdGEoKSk7CiB9CiAKIFVSTDo6b3BlcmF0b3IgTlNV
UkwgKigpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDUyNjIpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MSBAQAorMjAxNi0w
OC0zMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAg
ICAgIEFkZCBydW50aW1lIGZsYWcgZm9yIHVzaW5nIFVSTFBhcnNlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxMzYzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3
b3JrUHJvY2Vzcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5j
bWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1h
Yy5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvV2ViS2l0MkluaXRpYWxpemVDb2NvYS5t
bTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYktpdDIpOgor
ICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1Nl
cnZpY2VFbnRyeVBvaW50Lmg6CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VJbml0aWFsaXpl
cik6CisgICAgICAgICogU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6SW5pdGlhbGl6ZVdlYktpdDIpOgorICAgICAgICAqIFNoYXJlZC9XZWJLaXQySW5pdGlh
bGl6ZS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2Rl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAg
ICAgICAqIFNoYXJlZC9lZmwvV2ViS2l0MkluaXRpYWxpemVFRkwuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViS2l0Mik6CisgICAgICAgICogU2hhcmVk
L2d0ay9XZWJLaXQySW5pdGlhbGl6ZUdUSy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0Ojpw
bGF0Zm9ybUluaXRpYWxpemVXZWJLaXQyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZW5zdXJlTmV0d29y
a1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2Vi
UHJvY2Vzcyk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKToKKwogMjAxNi0wOC0zMSAgQW5kcmVhcyBL
bGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgRE9NIGV2ZW50IGhhbmRsaW5nIHNo
b3VsZCBwYXNzIEV2ZW50IGFyb3VuZCBieSByZWZlcmVuY2UuCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUVmbC5jbWFrZQkocmV2aXNpb24gMjA1MjYyKQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm1F
ZmwuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgbGlzdChBUFBFTkQgV2Vi
S2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVkL2VmbC9OYXRpdmVXZWJXaGVlbEV2ZW50RWZsLmNwcAog
ICAgIFNoYXJlZC9lZmwvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoRWZsLmNwcAogICAgIFNoYXJlZC9l
ZmwvV2ViRXZlbnRGYWN0b3J5LmNwcAorICAgIFNoYXJlZC9lZmwvV2ViS2l0MkluaXRpYWxpemVF
RkwuY3BwCiAKICAgICBTaGFyZWQvbGludXgvV2ViTWVtb3J5U2FtcGxlckxpbnV4LmNwcAogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQkocmV2aXNpb24gMjA1MjYyKQorKysgU291cmNl
L1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcg
QEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVkL2d0ay9Qcm9jZXNzRXhl
Y3V0YWJsZVBhdGhHdGsuY3BwCiAgICAgU2hhcmVkL2d0ay9XZWJDb250ZXh0TWVudUl0ZW1HdGsu
Y3BwCiAgICAgU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCisgICAgU2hhcmVkL2d0ay9X
ZWJLaXQySW5pdGlhbGl6ZUdUSy5jcHAKIAogICAgIFNoYXJlZC9saW51eC9XZWJNZW1vcnlTYW1w
bGVyTGludXguY3BwCiAKQEAgLTc3Myw2ICs3NzQsNyBAQCBpZiAoRU5BQkxFX1BMVUdJTl9QUk9D
RVNTX0dUSzIpCiAgICAgICAgIFNoYXJlZC9ndGsvTmF0aXZlV2ViV2hlZWxFdmVudEd0ay5jcHAK
ICAgICAgICAgU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwCiAgICAgICAg
IFNoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcAorICAgICAgICBTaGFyZWQvZ3RrL1dlYktp
dDJJbml0aWFsaXplR1RLLmNwcAogCiAgICAgICAgIFNoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVu
dENvZGVyc1NvdXAuY3BwCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lv
biAyMDUyNjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQkod29ya2luZyBj
b3B5KQpAQCAtOTksNiArOTksNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBT
aGFyZWQvQ29jb2EvQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5tbQogICAgIFNoYXJlZC9D
b2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tCiAgICAgU2hhcmVkL0NvY29hL0xvYWRQYXJhbWV0
ZXJzQ29jb2EubW0KKyAgICBTaGFyZWQvQ29jb2EvV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbQog
ICAgIFNoYXJlZC9Db2NvYS9XS05TQXJyYXkubW0KICAgICBTaGFyZWQvQ29jb2EvV0tOU0RhdGEu
bW0KICAgICBTaGFyZWQvQ29jb2EvV0tOU0RpY3Rpb25hcnkubW0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIw
NTI2MikKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2Vj
dXJpdHlPcmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkhhc2gu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJM
UGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5M
b29wLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMTk2LDYgKzE5Nyw4IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6Omxvd01lbW9yeUhhbmRsZXIoQ3IKIAogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKKyAgICBVUkxQYXJzZXI6OnNldEVuYWJsZWQocGFy
YW1ldGVycy51cmxQYXJzZXJFbmFibGVkKTsKKwogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzKHBhcmFtZXRlcnMpOwogCiAgICAgV1RGOjpzZXRDdXJyZW50VGhyZWFkSXNVc2Vy
SW5pdGlhdGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShy
ZXZpc2lvbiAyMDUyNjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYz
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZQogI2VuZGlmCiAg
ICAgZW5jb2RlciA8PCBzaG91bGRTdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlcjsKICAgICBl
bmNvZGVyIDw8IHNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbjsKKyAgICBlbmNvZGVyIDw8
IHVybFBhcnNlckVuYWJsZWQ7CiAgICAgZW5jb2RlciA8PCB1cmxTY2hlbWVzUmVnaXN0ZXJlZEZv
ckN1c3RvbVByb3RvY29sczsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBlbmNvZGVyIDw8IHBh
cmVudFByb2Nlc3NOYW1lOwpAQCAtMTI4LDYgKzEyOSw4IEBAIGJvb2wgTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbikpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC51cmxQYXJz
ZXJFbmFibGVkKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogI2lmIFBMQVRGT1JNKENPQ09BKQpJbmRleDogU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyMDUyNjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5n
IGNvcHkpCkBAIC03Miw2ICs3Miw3IEBAIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycyAKICNlbmRpZgogICAgIGJvb2wgc2hvdWxkU3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhh
bmRsZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9u
OworICAgIGJvb2wgdXJsUGFyc2VyRW5hYmxlZCB7IGZhbHNlIH07CiAKICAgICBWZWN0b3I8U3Ry
aW5nPiB1cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29sczsKIApJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYktpdDJJbml0aWFsaXplLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViS2l0MkluaXRpYWxpemUuY3BwCShyZXZpc2lvbiAyMDUy
NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViS2l0MkluaXRpYWxpemUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJMb2dJbml0aWFsaXphdGlv
bi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTG9nSW5pdGlhbGl6YXRpb24uaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KQEAgLTQxLDExICs0MiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBJbml0
aWFsaXplV2ViS2l0MigpCit2b2lkIEluaXRpYWxpemVXZWJLaXQyKFByb2Nlc3NUeXBlIHByb2Nl
c3NUeXBlKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIEluaXRXZWJDb3JlU3lzdGVtSW50
ZXJmYWNlKCk7CiAjZW5kaWYKKyAgICBwbGF0Zm9ybUluaXRpYWxpemVXZWJLaXQyKHByb2Nlc3NU
eXBlKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgSW5pdFdlYkNvcmVUaHJlYWRTeXN0ZW1JbnRl
cmZhY2UoKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYktpdDJJbml0
aWFsaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYktpdDJJbml0
aWFsaXplLmgJKHJldmlzaW9uIDIwNTI2MikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJL
aXQySW5pdGlhbGl6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMyArMjMsMTYgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYktpdDJJbml0
aWFsaXplX2gKLSNkZWZpbmUgV2ViS2l0MkluaXRpYWxpemVfaAorI3ByYWdtYSBvbmNlCiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi12b2lkIEluaXRpYWxpemVXZWJLaXQyKCk7Ci0KK2VudW0gUHJv
Y2Vzc1R5cGUgeworICAgIENoaWxkUHJvY2VzcywKKyAgICBVSVByb2Nlc3MsCiB9OwogCi0jZW5k
aWYgLy8gV2ViS2l0MkluaXRpYWxpemVfaAordm9pZCBJbml0aWFsaXplV2ViS2l0MihQcm9jZXNz
VHlwZSA9IFVJUHJvY2Vzcyk7Cit2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZVdlYktpdDIoUHJvY2Vz
c1R5cGUpOworCit9OwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjA1MjYyKQorKysgU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTUsNiArMTE1LDcgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOjplbmNvZAogICAgIGVuY29kZXIgPDwgdWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRo
RXh0ZW5zaW9uSGFuZGxlOwogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlSklUOwogICAgIGVu
Y29kZXIgPDwgc2hvdWxkRW5hYmxlRlRMSklUOworICAgIGVuY29kZXIgPDwgdXJsUGFyc2VyRW5h
YmxlZDsKICAgICBlbmNvZGVyIDw8ICEhYnVuZGxlUGFyYW1ldGVyRGF0YTsKICAgICBpZiAoYnVu
ZGxlUGFyYW1ldGVyRGF0YSkKICAgICAgICAgZW5jb2RlciA8PCBidW5kbGVQYXJhbWV0ZXJEYXRh
LT5kYXRhUmVmZXJlbmNlKCk7CkBAIC0yNTksNiArMjYwLDggQEAgYm9vbCBXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkZWNvZAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZUZUTEpJVCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXJsUGFyc2Vy
RW5hYmxlZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgaGFzQnVuZGxlUGFy
YW1ldGVyRGF0YTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0J1bmRsZVBhcmFtZXRlckRh
dGEpKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyMDUyNjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Myw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2lmbmRlZiBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzX2gKLSNkZWZpbmUgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyc19oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNhY2hlTW9k
ZWwuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCkBAIC0xMDgsNiArMTA3LDcgQEAg
c3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wgc2hvdWxkU3Vw
cHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hvdWxkVXNl
Rm9udFNtb290aGluZzsKICAgICBib29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIHsg
ZmFsc2UgfTsKKyAgICBib29sIHVybFBhcnNlckVuYWJsZWQgeyBmYWxzZSB9OwogCiAgICAgVmVj
dG9yPFN0cmluZz4gZm9udFdoaXRlbGlzdDsKIApAQCAtMTc3LDUgKzE3NywzIEBAIHN0cnVjdCBX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCi0jZW5kaWYgLy8gV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyc19oCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvV2ViS2l0MkluaXRpYWxpemVDb2Nv
YS5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvV2ViS2l0
MkluaXRpYWxpemVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJLaXQySW5pdGlhbGl6ZS5o
IgorCisjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgorI2ltcG9y
dCA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCit2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZVdlYktpdDIoUHJvY2Vz
c1R5cGUgcHJvY2Vzc1R5cGUpCit7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBpbml0T25j
ZTsKKyAgICAKKyAgICAvLyBXZSBkb24ndCB3YW50IHRvIHVzZSBOU1VzZXJEZWZhdWx0cyBpbiB0
aGUgY2hpbGQgcHJvY2Vzc2VzLgorICAgIGlmIChwcm9jZXNzVHlwZSA9PSBVSVByb2Nlc3MpIHsK
KyAgICAgICAgZGlzcGF0Y2hfb25jZSgmaW5pdE9uY2UsIF4geworICAgICAgICAgICAgVVJMUGFy
c2VyOjpzZXRFbmFibGVkKFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJv
b2xGb3JLZXk6QCJVUkxQYXJzZXJFbmFibGVkIl0pOworICAgICAgICB9KTsKKyAgICB9Cit9CisK
K30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9Y
UENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2Vydmlj
ZUVudHJ5UG9pbnQuaAkocmV2aXNpb24gMjA1MjYyKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVk
L0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFhQQ1NlcnZpY2VJbml0aWFs
aXplcihPU09iamVjdFB0cjx4CiAgICAgLy8gc28gZW5zdXJlIHRoYXQgd2UgaGF2ZSBhbiBvdXRz
dGFuZGluZyB0cmFuc2FjdGlvbiBoZXJlLgogICAgIHhwY190cmFuc2FjdGlvbl9iZWdpbigpOwog
Ci0gICAgSW5pdGlhbGl6ZVdlYktpdDIoKTsKKyAgICBJbml0aWFsaXplV2ViS2l0MihDaGlsZFBy
b2Nlc3MpOwogCiAgICAgaWYgKCFkZWxlZ2F0ZS5jaGVja0VudGl0bGVtZW50cygpKQogICAgICAg
ICBleGl0KEVYSVRfRkFJTFVSRSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dl
YktpdDJJbml0aWFsaXplRUZMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZWZsL1dlYktpdDJJbml0aWFsaXplRUZMLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvZWZsL1dlYktpdDJJbml0aWFsaXplRUZMLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldlYktpdDJJbml0aWFsaXplLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lk
IHBsYXRmb3JtSW5pdGlhbGl6ZVdlYktpdDIoUHJvY2Vzc1R5cGUpCit7Cit9CisKK30KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViS2l0MkluaXRpYWxpemVHVEsuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViS2l0MkluaXRpYWxpemVHVEsu
Y3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViS2l0Mklu
aXRpYWxpemVHVEsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0MkluaXRpYWxpemUuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgcGxhdGZvcm1Jbml0aWFsaXplV2ViS2l0MihQ
cm9jZXNzVHlwZSkKK3sKK30KKworfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAyMDUyNjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2dJbml0aWFsaXphdGlvbi5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSW5s
aW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CkBAIC0zODYsNiArMzg3LDggQEAgTmV0d29ya1Byb2Nlc3NQcm94eSYgV2ViUHJv
Y2Vzc1Bvb2w6OmVucwogCiAgICAgcGFyYW1ldGVycy5zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nl
c3Npb24gPSBtX3Nob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbjsKIAorICAgIHBhcmFtZXRl
cnMudXJsUGFyc2VyRW5hYmxlZCA9IFVSTFBhcnNlcjo6ZW5hYmxlZCgpOworICAgIAogICAgIC8v
IEFkZCBhbnkgcGxhdGZvcm0gc3BlY2lmaWMgcGFyYW1ldGVycwogICAgIHBsYXRmb3JtSW5pdGlh
bGl6ZU5ldHdvcmtQcm9jZXNzKHBhcmFtZXRlcnMpOwogCkBAIC01NDcsNiArNTUwLDggQEAgV2Vi
UHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTgogCiAgICAgV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogCisgICAgcGFyYW1ldGVycy51cmxQYXJzZXJF
bmFibGVkID0gVVJMUGFyc2VyOjplbmFibGVkKCk7CisgICAgCiAgICAgcGFyYW1ldGVycy5pbmpl
Y3RlZEJ1bmRsZVBhdGggPSBpbmplY3RlZEJ1bmRsZVBhdGgoKTsKICAgICBpZiAoIXBhcmFtZXRl
cnMuaW5qZWN0ZWRCdW5kbGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlKHBhcmFtZXRlcnMuaW5qZWN0ZWRCdW5kbGVQYXRoLCBTYW5kYm94RXh0
ZW5zaW9uOjpSZWFkT25seSwgcGFyYW1ldGVycy5pbmplY3RlZEJ1bmRsZVBhdGhFeHRlbnNpb25I
YW5kbGUpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA1MjYyKQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDU2LDYgKzEw
NTYsNyBAQAogCQk1QzIwQ0JBMDFCQjFFQ0Q4MDA4OTVCQjEgLyogTmV0d29ya1Nlc3Npb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMjBDQjlFMUJC
MEREMTgwMDg5NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbi5oICovOyB9OwogCQk1QzI5OERBMDFDM0RG
MDIxMDA0NzBBRkUgLyogUGVuZGluZ0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzI5OEQ5RTFDM0RFRjI5MDA0NzBBRkUgLyogUGVuZGlu
Z0Rvd25sb2FkLmggKi87IH07CiAJCTVDNzcwNjc0MUQxMTM4MzgwMDEyNzAwRiAvKiBXZWJTb2Nr
ZXRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Qzc3MDY3MzFEMTExRDhCMDAxMjcwMEYgLyogV2ViU29ja2V0UHJvdmlkZXIuY3BwICov
OyB9OworCQk1Qzc5NDM5QjFENzYyRDYyMDAzMTAyRDQgLyogV2ViS2l0MkluaXRpYWxpemVDb2Nv
YS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNzk0
MzlBMUQ3NjJDREYwMDMxMDJENCAvKiBXZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tICovOyB9Owog
CQk1Qzg1Qzc4ODFDM0YyM0NFMDA2MUE0RkEgLyogUGVuZGluZ0Rvd25sb2FkLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDODVDNzg2MUMzRjIzQzUw
MDYxQTRGQSAvKiBQZW5kaW5nRG93bmxvYWQuY3BwICovOyB9OwogCQk1Q0JDOUI4RDFDNjUyNzlD
MDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0JDOUI4QjFDNjUyNTczMDBBOEZEQ0YgLyogTmV0
d29ya0RhdGFUYXNrQ29jb2EubW0gKi87IH07CiAJCTVDQkM5QjhFMUM2NTJDQTAwMEE4RkRDRiAv
KiBOZXR3b3JrRGF0YVRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDQkM5Qjg5MUM2NTI0QTUwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2suaCAq
LzsgfTsKQEAgLTMxMjEsNiArMzEyMiw3IEBACiAJCTVDMjBDQjlFMUJCMEREMTgwMDg5NUJCMSAv
KiBOZXR3b3JrU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3
b3JrU2Vzc2lvbi5oOyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMyOThEOUUxQzNERUYyOTAwNDcwQUZFIC8qIFBl
bmRpbmdEb3dubG9hZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQZW5kaW5n
RG93bmxvYWQuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxv
YWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3NzA2NzMxRDExMUQ4QjAwMTI3
MDBGIC8qIFdlYlNvY2tldFByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFdlYlNvY2tldFByb3ZpZGVyLmNwcDsgcGF0aCA9IE5ldHdvcmsvV2ViU29ja2V0
UHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Qzc5NDM5QTFENzYy
Q0RGMDAzMTAyRDQgLyogV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYktpdDJJbml0aWFsaXplQ29jb2EubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDN0M4OERDMUQwRjQxQTAwMDlEMkY2RCAvKiBXZWJT
b2NrZXRQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTb2Nr
ZXRQcm92aWRlci5oOyBwYXRoID0gTmV0d29yay9XZWJTb2NrZXRQcm92aWRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1Qzg1Qzc4NjFDM0YyM0M1MDA2MUE0RkEgLyogUGVuZGlu
Z0Rvd25sb2FkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFBlbmRp
bmdEb3dubG9hZC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rv
d25sb2FkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCQzlCODkxQzY1MjRB
NTAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBOZXR3b3JrRGF0YVRhc2suaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTI3MCw2ICs1MjcyLDcg
QEAKIAkJMzdDNEMwOTAxODE0QjM3QjAwMzY4OEI5IC8qIGNvY29hICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1Qzc5NDM5QTFENzYyQ0RGMDAzMTAyRDQg
LyogV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbSAqLywKIAkJCQkxQTFFRjE5NzFBMUQ1QjQyMDAy
MzIwMEEgLyogQVBJRGF0YUNvY29hLm1tICovLAogCQkJCTM3OEUxQTNCMTgxRUQ2RkYwMDMxMDA3
QSAvKiBBUElPYmplY3QubW0gKi8sCiAJCQkJMzdCRUM0REYxOTQ5MTQ4NjAwOEI0Mjg2IC8qIENv
bXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCAqLywKQEAgLTk2OTUsNiArOTY5OCw3IEBACiAJ
CQkJQkM0MDc2MDUxMjRGRjAyNzAwNjhGMjBBIC8qIFdLU3RyaW5nLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDNDA3NjE5MTI0RkYwMzcwMDY4RjIwQSAvKiBXS1N0cmluZ0NGLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMjZGMTBCRTkxOTE4N0UyRTAwMUQwRTY4IC8qIFdLU3ludGhldGljQ2xpY2tU
YXBHZXN0dXJlUmVjb2duaXplci5tIGluIFNvdXJjZXMgKi8sCisJCQkJNUM3OTQzOUIxRDc2MkQ2
MjAwMzEwMkQ0IC8qIFdlYktpdDJJbml0aWFsaXplQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkyREQ2N0EzNjFCRDg2MTA2MDA1M0IyNTEgLyogV0tUZXh0RmluZGVyQ2xpZW50Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZDQjRFNjkxOEJCRTNEOTAwMEZDRkM5IC8qIFdLVGV4dElucHV0V2lu
ZG93Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NjA3MTI0RkYwMjcwMDY4
RjIwQSAvKiBXS1R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIwNTI2MikKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw2ICsx
MDAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyR2Vz
dHVyZUluZGljYXRvci5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgpAQCAtMjY0LDYgKzI2NSw4IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6
ZUNvbm5lY3Rpb24oSVAKIAogdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKKyAgICBVUkxQYXJz
ZXI6OnNldEVuYWJsZWQocGFyYW1ldGVycy51cmxQYXJzZXJFbmFibGVkKTsKKyAgICAKICAgICBB
U1NFUlQobV9wYWdlTWFwLmlzRW1wdHkoKSk7CiAKICNpZiBPUyhMSU5VWCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>