<?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>171554</bug_id>
          
          <creation_ts>2017-05-02 10:19:05 -0700</creation_ts>
          <short_desc>JSC C API should expose GC marking constraints and weak references</short_desc>
          <delta_ts>2017-05-03 11:21:10 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1303695</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-05-02 10:19:05 -0700</bug_when>
    <thetext>This lets you *almost* integrate JSC&apos;s GC with a foreign GC. It lets you implement lots of exotic reference types, way beyond weak references.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303698</commentid>
    <comment_count>1</comment_count>
      <attachid>308829</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-05-02 10:21:30 -0700</bug_when>
    <thetext>Created attachment 308829
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303699</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-02 10:24:20 -0700</bug_when>
    <thetext>Attachment 308829 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSMarkingConstraintPrivate.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/JavaScriptCore/API/tests/testapi.c:1167:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/API/JSMarkingConstraintPrivate.cpp:79:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/API/JSWeakPrivate.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
Total errors found: 4 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303714</commentid>
    <comment_count>3</comment_count>
      <attachid>308829</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-05-02 10:44:42 -0700</bug_when>
    <thetext>Comment on attachment 308829
the patch

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

r=me

&gt; Source/JavaScriptCore/API/JSMarkingConstraintPrivate.h:47
&gt; +JS_EXPORT void JSContextGroupRegisterMarkingConstraint(JSContextGroupRef, JSMarkingConstraint, void *userData);

Usually we would do this as a pair of add/remove APIs: JSContextGroupAddMarkingConstraint, JSContextGroupRemoveMarkingConstraint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303722</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-05-02 11:00:50 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/216078/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303751</commentid>
    <comment_count>5</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-05-02 12:03:17 -0700</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #4)
&gt; Landed in https://trac.webkit.org/changeset/216078/webkit

This change broke the Windows build:

https://build.webkit.org/builders/Apple%20Win%20Release%20%28Build%29/builds/1133</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303754</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-05-02 12:13:20 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #5)
&gt; (In reply to Filip Pizlo from comment #4)
&gt; &gt; Landed in https://trac.webkit.org/changeset/216078/webkit
&gt; 
&gt; This change broke the Windows build:
&gt; 
&gt; https://build.webkit.org/builders/Apple%20Win%20Release%20%28Build%29/builds/
&gt; 1133

Hopefully fixed in r216085</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303755</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-05-02 12:15:17 -0700</bug_when>
    <thetext>And fixed for real in https://trac.webkit.org/changeset/216086/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303830</commentid>
    <comment_count>8</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-05-02 14:56:19 -0700</bug_when>
    <thetext>There&apos;s still a problem with the Windows builds. The declaration of JSSynchronousGarbageCollectForDebugging in testapi.c should have an extern &quot;C&quot; in front of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303833</commentid>
    <comment_count>9</comment_count>
      <attachid>308855</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-05-02 15:13:32 -0700</bug_when>
    <thetext>Created attachment 308855
Windows build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303839</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-05-02 15:21:11 -0700</bug_when>
    <thetext>(In reply to Don Olmstead from comment #9)
&gt; Created attachment 308855 [details]
&gt; Windows build fix

That&apos;s weird that you need &quot;extern &quot;C&quot;&quot; in a C file.  It may be that your fix does not work on Mac, in which case the right fix is to #ifdef __cplusplus...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303854</commentid>
    <comment_count>11</comment_count>
      <attachid>308862</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-05-02 15:40:28 -0700</bug_when>
    <thetext>Created attachment 308862
Windows build fix

Add __cplusplus guard</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303878</commentid>
    <comment_count>12</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-05-02 16:17:38 -0700</bug_when>
    <thetext>(In reply to Don Olmstead from comment #11)
&gt; Created attachment 308862 [details]
&gt; Windows build fix
&gt; 
&gt; Add __cplusplus guard

Thank you for doing this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303925</commentid>
    <comment_count>13</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-05-02 19:07:06 -0700</bug_when>
    <thetext>Reopening so hopefully the patch will land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303926</commentid>
    <comment_count>14</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-05-02 19:08:32 -0700</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #12)
&gt; (In reply to Don Olmstead from comment #11)
&gt; &gt; Created attachment 308862 [details]
&gt; &gt; Windows build fix
&gt; &gt; 
&gt; &gt; Add __cplusplus guard
&gt; 
&gt; Thank you for doing this!

No problem!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303934</commentid>
    <comment_count>15</comment_count>
      <attachid>308862</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-02 19:48:52 -0700</bug_when>
    <thetext>Comment on attachment 308862
Windows build fix

Clearing flags on attachment: 308862

Committed r216109: &lt;http://trac.webkit.org/changeset/216109&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308829</attachid>
            <date>2017-05-02 10:21:30 -0700</date>
            <delta_ts>2017-05-02 10:44:42 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>24780</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE2MDczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDE3LTA1LTAyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SlNDIEMgQVBJIHNob3VsZCBleHBvc2UgR0MgbWFya2luZyBjb25zdHJhaW50cyBhbmQgd2VhayBy
ZWZlcmVuY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzE1NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgZXhwb3NlcyBhbiBBUEkgdGhhdCBsZXRzIHlvdSBwYXJ0aWNpcGF0ZSBp
biB0aGUgR0MncyBmaXhwb2ludC4gWW91IGNhbiBhc2sgdGhlIEdDCisgICAgICAgIHdoYXQgaXMg
bWFya2VkIGFuZCB5b3UgY2FuIHRlbGwgdGhlIEdDIHRvIG1hcmsgdGhpbmdzLiBUaGUgY29uc3Ry
YWludCBjYWxsYmFjayBjYW5ub3QKKyAgICAgICAgZG8gYSB3aG9sZSBsb3QsIGJ1dCBpdCBjYW4g
cXVlcnkgbWFya2luZyBzdGF0ZSBhbmQgaXQgY2FuIGRlcmVmZXJlbmNlIHdlYWsgcmVmZXJlbmNl
cy4KKyAgICAgICAgCisgICAgICAgIEFkZGl0aW9uYWxseSwgdGhpcyBleHBvc2VzIGEgdmVyeSBz
aW1wbGUgd2VhayByZWZlcmVuY2UgQVBJIGluIEMuCisKKyAgICAgICAgKiBBUEkvSlNNYXJraW5n
Q29uc3RyYWludFByaXZhdGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6aXNNYXJrZWQpOgor
ICAgICAgICAoSlNDOjptYXJrKToKKyAgICAgICAgKEpTQ29udGV4dEdyb3VwUmVnaXN0ZXJNYXJr
aW5nQ29uc3RyYWludCk6CisgICAgICAgICogQVBJL0pTTWFya2luZ0NvbnN0cmFpbnRQcml2YXRl
Lmg6IEFkZGVkLgorICAgICAgICAqIEFQSS9KU1dlYWtQcml2YXRlLmNwcDogQWRkZWQuCisgICAg
ICAgIChPcGFxdWVKU1dlYWs6Ok9wYXF1ZUpTV2Vhayk6CisgICAgICAgIChKU1dlYWtDcmVhdGUp
OgorICAgICAgICAoSlNXZWFrUmV0YWluKToKKyAgICAgICAgKEpTV2Vha1JlbGVhc2UpOgorICAg
ICAgICAoSlNXZWFrR2V0T2JqZWN0KToKKyAgICAgICAgKiBBUEkvSlNXZWFrUHJpdmF0ZS5oOiBB
ZGRlZC4KKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5jOgorICAgICAgICAobWFya2luZ0Nv
bnN0cmFpbnQpOgorICAgICAgICAodGVzdE1hcmtpbmdDb25zdHJhaW50cyk6CisgICAgICAgICht
YWluKToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGhlYXAvU2xvdFZpc2l0b3IuaDoKKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNp
dG9ySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6YXBwZW5kSGlkZGVuVW5i
YXJyaWVyZWQpOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6YXBwZW5kSGlkZGVuKToKKwog
MjAxNy0wNS0wMSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW2FhcmNoNjRdW0xpbnV4XSBtX2FsbG93U2NyYXRjaFJlZ2lzdGVyIGFzc2VydCBoaXQgaW4g
TWFjcm9Bc3NlbWJsZXJBUk02NCB1bmRlciBCMzo6QWlyOjpDQ2FsbFNwZWNpYWw6OmdlbmVyYXRl
KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYXJraW5nQ29uc3RyYWludFBy
aXZhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYXJr
aW5nQ29uc3RyYWludFByaXZhdGUuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNNYXJraW5nQ29uc3RyYWludFByaXZhdGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU01hcmtpbmdDb25zdHJh
aW50UHJpdmF0ZS5oIgorCisjaW5jbHVkZSAiQVBJQ2FzdC5oIgorI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJNYXJraW5nQ29uc3RyYWludC5oIgorI2luY2x1ZGUgIlZpc2l0aW5n
VGltZW91dC5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgeworCitBdG9t
aWM8dW5zaWduZWQ+IGNvbnN0cmFpbnRDb3VudGVyOworCitzdHJ1Y3QgTWFya2VyIDogSlNNYXJr
ZXIgeworICAgIFNsb3RWaXNpdG9yKiB2aXNpdG9yOworfTsKKworYm9vbCBpc01hcmtlZChKU01h
cmtlclJlZiwgSlNPYmplY3RSZWYgb2JqZWN0UmVmKQoreworICAgIGlmICghb2JqZWN0UmVmKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gTnVsbCBpcyBhbiBpbW1vcnRhbCBvYmplY3QuCisgICAg
CisgICAgcmV0dXJuIEhlYXA6OmlzTWFya2VkKHRvSlMob2JqZWN0UmVmKSk7Cit9CisKK3ZvaWQg
bWFyayhKU01hcmtlclJlZiBtYXJrZXJSZWYsIEpTT2JqZWN0UmVmIG9iamVjdFJlZikKK3sKKyAg
ICBpZiAoIW9iamVjdFJlZikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHN0YXRpY19jYXN0
PE1hcmtlcio+KG1hcmtlclJlZiktPnZpc2l0b3ItPmFwcGVuZEhpZGRlblVuYmFycmllcmVkKHRv
SlMob2JqZWN0UmVmKSk7Cit9CisKK30gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCit2b2lkIEpT
Q29udGV4dEdyb3VwUmVnaXN0ZXJNYXJraW5nQ29uc3RyYWludChKU0NvbnRleHRHcm91cFJlZiBn
cm91cCwgSlNNYXJraW5nQ29uc3RyYWludCBjb25zdHJhaW50Q2FsbGJhY2ssIHZvaWQgKnVzZXJE
YXRhKQoreworICAgIFZNJiB2bSA9ICp0b0pTKGdyb3VwKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9j
a2VyKHZtKTsKKyAgICAKKyAgICB1bnNpZ25lZCBjb25zdHJhaW50SW5kZXggPSBjb25zdHJhaW50
Q291bnRlci5leGNoYW5nZUFkZCgxKTsKKyAgICAKKyAgICAvLyBUaGlzIGlzIGEgZ3Vlc3MuIFRo
ZSBhbGdvcml0aG0gc2hvdWxkIGJlIGNvcnJlY3Qgbm8gbWF0dGVyIHdoYXQgd2UgcGljay4gVGhp
cyBtZWFucworICAgIC8vIHRoYXQgd2UgZXhwZWN0IHRoaXMgY29uc3RyYWludCB0byBtYXJrIHRo
aW5ncyBldmVuIGR1cmluZyBhIHN0b3AtdGhlLXdvcmxkIGZ1bGwgR0MsIGJ1dAorICAgIC8vIHdl
IGRvbid0IGV4cGVjdCBpdCB0byBiZSBhYmxlIHRvIG1hcmsgYW55dGhpbmcgYXQgdGhlIHZlcnkg
c3RhcnQgb2YgYSBHQyBiZWZvcmUgYW55dGhpbmcKKyAgICAvLyBlbHNlIGdldHMgbWFya2VkLgor
ICAgIENvbnN0cmFpbnRWb2xhdGlsaXR5IHZvbGF0aWxpdHkgPSBDb25zdHJhaW50Vm9sYXRpbGl0
eTo6R3JleWVkQnlNYXJraW5nOworICAgIAorICAgIGF1dG8gY29uc3RyYWludCA9IHN0ZDo6bWFr
ZV91bmlxdWU8TWFya2luZ0NvbnN0cmFpbnQ+KAorICAgICAgICB0b0NTdHJpbmcoIkFtYyIsIGNv
bnN0cmFpbnRJbmRleCwgIigiLCBSYXdQb2ludGVyKGJpdHdpc2VfY2FzdDx2b2lkKj4oY29uc3Ry
YWludENhbGxiYWNrKSksICIpIiksCisgICAgICAgIHRvQ1N0cmluZygiQVBJIE1hcmtpbmcgQ29u
c3RyYWludCAjIiwgY29uc3RyYWludEluZGV4LCAiICgiLCBSYXdQb2ludGVyKGJpdHdpc2VfY2Fz
dDx2b2lkKj4oY29uc3RyYWludENhbGxiYWNrKSksICIsICIsIFJhd1BvaW50ZXIodXNlckRhdGEp
LCAiKSIpLAorICAgICAgICBbJnZtLCBjb25zdHJhaW50Q2FsbGJhY2ssIHVzZXJEYXRhXQorICAg
ICAgICAoU2xvdFZpc2l0b3ImIHNsb3RWaXNpdG9yLCBjb25zdCBWaXNpdGluZ1RpbWVvdXQmKSB7
CisgICAgICAgICAgICBNYXJrZXIgbWFya2VyOworICAgICAgICAgICAgbWFya2VyLklzTWFya2Vk
ID0gaXNNYXJrZWQ7CisgICAgICAgICAgICBtYXJrZXIuTWFyayA9IG1hcms7CisgICAgICAgICAg
ICBtYXJrZXIudmlzaXRvciA9ICZzbG90VmlzaXRvcjsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgY29uc3RyYWludENhbGxiYWNrKCZtYXJrZXIsIHVzZXJEYXRhKTsKKyAgICAgICAgfSwKKyAg
ICAgICAgdm9sYXRpbGl0eSk7CisgICAgCisgICAgdm0uaGVhcC5hZGRNYXJraW5nQ29uc3RyYWlu
dChXVEZNb3ZlKGNvbnN0cmFpbnQpKTsKK30KKworCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNNYXJraW5nQ29uc3RyYWludFByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFya2luZ0NvbnN0cmFpbnRQcml2YXRlLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hcmtpbmdDb25zdHJhaW50
UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSlNNYXJraW5nQ29uc3Ry
YWludFByaXZhdGVfaAorI2RlZmluZSBKU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZV9oCisKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NvbnRleHRSZWYuaD4KKyNpbmNsdWRlIDxzdGRib29s
Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworc3RydWN0
IEpTTWFya2VyOwordHlwZWRlZiBzdHJ1Y3QgSlNNYXJrZXIgSlNNYXJrZXI7Cit0eXBlZGVmIEpT
TWFya2VyICpKU01hcmtlclJlZjsKKworc3RydWN0IEpTTWFya2VyIHsKKyAgICBib29sICgqSXNN
YXJrZWQpKEpTTWFya2VyUmVmLCBKU09iamVjdFJlZik7CisgICAgdm9pZCAoKk1hcmspKEpTTWFy
a2VyUmVmLCBKU09iamVjdFJlZik7Cit9OworCit0eXBlZGVmIHZvaWQgKCpKU01hcmtpbmdDb25z
dHJhaW50KShKU01hcmtlclJlZiwgdm9pZCAqdXNlckRhdGEpOworCitKU19FWFBPUlQgdm9pZCBK
U0NvbnRleHRHcm91cFJlZ2lzdGVyTWFya2luZ0NvbnN0cmFpbnQoSlNDb250ZXh0R3JvdXBSZWYs
IEpTTWFya2luZ0NvbnN0cmFpbnQsIHZvaWQgKnVzZXJEYXRhKTsKKworI2lmZGVmIF9fY3BsdXNw
bHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIEpTTWFya2luZ0NvbnN0cmFpbnRQcml2YXRlX2gK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtQcml2YXRlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV2Vha1ByaXZhdGUuY3BwCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrUHJpdmF0ZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkpTV2Vha1ByaXZhdGUuaCIKKworI2luY2x1ZGUgIkFQSUNhc3QuaCIKKyNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiV2Vhay5oIgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCitzdHJ1Y3QgT3BhcXVlSlNXZWFr
IDogVGhyZWFkU2FmZVJlZkNvdW50ZWQ8T3BhcXVlSlNXZWFrPiB7CisgICAgT3BhcXVlSlNXZWFr
KEpTT2JqZWN0KiBvYmplY3QpCisgICAgICAgIDogd2VhayhvYmplY3QpCisgICAgeworICAgIH0K
KyAgICAKKyAgICBXZWFrPEpTT2JqZWN0PiB3ZWFrOworfTsKKworSlNXZWFrUmVmIEpTV2Vha0Ny
ZWF0ZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgb2JqZWN0UmVmKQoreworICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2tl
cihleGVjKTsKKyAgICByZXR1cm4gbmV3IE9wYXF1ZUpTV2Vhayh0b0pTKG9iamVjdFJlZikpOwor
fQorCit2b2lkIEpTV2Vha1JldGFpbihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNXZWFrUmVmIHdl
YWtSZWYpCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKKyAgICBKU0xv
Y2tIb2xkZXIgbG9ja2VyKGV4ZWMpOworICAgIHdlYWtSZWYtPnJlZigpOworfQorCit2b2lkIEpT
V2Vha1JlbGVhc2UoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTV2Vha1JlZiB3ZWFrUmVmKQorewor
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7CisgICAgSlNMb2NrSG9sZGVyIGxv
Y2tlcihleGVjKTsKKyAgICB3ZWFrUmVmLT5kZXJlZigpOworfQorCitKU09iamVjdFJlZiBKU1dl
YWtHZXRPYmplY3QoSlNXZWFrUmVmIHdlYWtSZWYpCit7CisgICAgcmV0dXJuIHRvUmVmKHdlYWtS
ZWYtPndlYWsuZ2V0KCkpOworfQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
V2Vha1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
V2Vha1ByaXZhdGUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTV2Vha1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEpTV2Vha1By
aXZhdGVfaAorI2RlZmluZSBKU1dlYWtQcml2YXRlX2gKKworI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTT2JqZWN0UmVmLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7Cisj
ZW5kaWYKKwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNXZWFrKiBKU1dlYWtSZWY7CisK
K0pTX0VYUE9SVCBKU1dlYWtSZWYgSlNXZWFrQ3JlYXRlKEpTQ29udGV4dFJlZiwgSlNPYmplY3RS
ZWYpOworCitKU19FWFBPUlQgdm9pZCBKU1dlYWtSZXRhaW4oSlNDb250ZXh0UmVmLCBKU1dlYWtS
ZWYpOworSlNfRVhQT1JUIHZvaWQgSlNXZWFrUmVsZWFzZShKU0NvbnRleHRSZWYsIEpTV2Vha1Jl
Zik7CisKK0pTX0VYUE9SVCBKU09iamVjdFJlZiBKU1dlYWtHZXRPYmplY3QoSlNXZWFrUmVmKTsK
KworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIEpTV2Vha1ByaXZh
dGVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwko
cmV2aXNpb24gMjE2MDI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLmMJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA2LCAyMDE1LTIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNi0yMDE3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDkgKzI4LDExIEBACiAjaW5jbHVk
ZSAiSmF2YVNjcmlwdENvcmUuaCIKICNpbmNsdWRlICJKU0Jhc2VQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiSlNDb250ZXh0UmVmUHJpdmF0ZS5oIgorI2luY2x1ZGUgIkpTTWFya2luZ0NvbnN0cmFpbnRQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiSlNPYmplY3RSZWZQcml2YXRlLmgiCiAjaW5jbHVkZSAiSlNT
Y3JpcHRSZWZQcml2YXRlLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdSZWZQcml2YXRlLmgiCisjaW5j
bHVkZSAiSlNXZWFrUHJpdmF0ZS5oIgogI2luY2x1ZGUgPG1hdGguaD4KICNkZWZpbmUgQVNTRVJU
X0RJU0FCTEVEIDAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpAQCAtMTExNSw2ICsxMTE3
LDYzIEBAIHN0YXRpYyB2b2lkIGNoZWNrQ29uc3RuZXNzSW5KU09iamVjdE5hbWUKICAgICB2YWwu
bmFtZSA9ICJzb21ldGhpbmciOwogfQogCit2b2lkIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVj
dEZvckRlYnVnZ2luZyhKU0NvbnRleHRSZWYpOworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVt
V2Vha1JlZnMgPSAxMDAwMDsKKworc3RhdGljIHZvaWQgbWFya2luZ0NvbnN0cmFpbnQoSlNNYXJr
ZXJSZWYgbWFya2VyLCB2b2lkICp1c2VyRGF0YSkKK3sKKyAgICBKU1dlYWtSZWYgKndlYWtSZWZz
OworICAgIHVuc2lnbmVkIGk7CisgICAgCisgICAgd2Vha1JlZnMgPSB1c2VyRGF0YTsKKyAgICAK
KyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtV2Vha1JlZnM7IGkgKz0gMikgeworICAgICAgICBKU09i
amVjdFJlZiBvYmplY3QgPSBKU1dlYWtHZXRPYmplY3Qod2Vha1JlZnNbaV0pOworICAgICAgICBt
YXJrZXItPk1hcmsobWFya2VyLCBvYmplY3QpOworICAgICAgICBhc3NlcnRUcnVlKG1hcmtlci0+
SXNNYXJrZWQobWFya2VyLCBvYmplY3QpLCAiQSBtYXJrZWQgb2JqZWN0IGlzIG1hcmtlZCIpOwor
ICAgIH0KK30KKworc3RhdGljIHZvaWQgdGVzdE1hcmtpbmdDb25zdHJhaW50cyh2b2lkKQorewor
ICAgIEpTQ29udGV4dEdyb3VwUmVmIGdyb3VwOworICAgIEpTQ29udGV4dFJlZiBjb250ZXh0Owor
ICAgIEpTV2Vha1JlZiAqd2Vha1JlZnM7CisgICAgdW5zaWduZWQgaTsKKyAgICB1bnNpZ25lZCBk
ZWFkQ291bnQ7CisgICAgCisgICAgcHJpbnRmKCJUZXN0aW5nIE1hcmtpbmcgQ29uc3RyYWludHMu
XG4iKTsKKyAgICAKKyAgICBncm91cCA9IEpTQ29udGV4dEdyb3VwQ3JlYXRlKCk7CisgICAgY29u
dGV4dCA9IEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAoZ3JvdXAsIE5VTEwpOworCisgICAg
d2Vha1JlZnMgPSBjYWxsb2MobnVtV2Vha1JlZnMsIHNpemVvZihKU1dlYWtSZWYpKTsKKworICAg
IEpTQ29udGV4dEdyb3VwUmVnaXN0ZXJNYXJraW5nQ29uc3RyYWludChncm91cCwgbWFya2luZ0Nv
bnN0cmFpbnQsIHdlYWtSZWZzKTsKKyAgICAKKyAgICBmb3IgKGkgPSBudW1XZWFrUmVmczsgaS0t
OykKKyAgICAgICAgd2Vha1JlZnNbaV0gPSBKU1dlYWtDcmVhdGUoY29udGV4dCwgSlNPYmplY3RN
YWtlQXJyYXkoY29udGV4dCwgMCwgTlVMTCwgTlVMTCkpOworICAgIAorICAgIEpTU3luY2hyb25v
dXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhjb250ZXh0KTsKKyAgICAKKyAgICBkZWFkQ291
bnQgPSAwOworICAgIGZvciAoaSA9IDA7IGkgPCBudW1XZWFrUmVmczsgaSArPSAyKSB7CisgICAg
ICAgIGFzc2VydFRydWUoSlNXZWFrR2V0T2JqZWN0KHdlYWtSZWZzW2ldKSwgIk1hcmtlZCBvYmpl
Y3RzIHN0YXllZCBhbGl2ZSIpOworICAgICAgICBpZiAoIUpTV2Vha0dldE9iamVjdCh3ZWFrUmVm
c1tpICsgMV0pKQorICAgICAgICAgICAgZGVhZENvdW50Kys7CisgICAgfQorICAgIAorICAgIGFz
c2VydFRydWUoZGVhZENvdW50ICE9IDAsICJBdCBsZWFzdCBzb21lIG9iamVjdHMgZGllZCIpOwor
ICAgIAorICAgIGZvciAoaSA9IG51bVdlYWtSZWZzOyBpLS07KQorICAgICAgICBKU1dlYWtSZWxl
YXNlKGNvbnRleHQsIHdlYWtSZWZzW2ldKTsKKyAgICAKKyAgICBKU0NvbnRleHRHcm91cFJlbGVh
c2UoZ3JvdXApOworCisgICAgcHJpbnRmKCJQQVNTOiBNYXJraW5nIENvbnN0cmFpbnRzLlxuIik7
Cit9CisKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiB7CiAjaWYgT1MoV0lORE9X
UykKQEAgLTExNDQsNiArMTIwMyw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10p
CiAKICAgICBBU1NFUlQoQmFzZV9kaWRGaW5hbGl6ZSk7CiAKKyAgICB0ZXN0TWFya2luZ0NvbnN0
cmFpbnRzKCk7CisKICAgICBKU0NsYXNzRGVmaW5pdGlvbiBnbG9iYWxPYmplY3RDbGFzc0RlZmlu
aXRpb24gPSBrSlNDbGFzc0RlZmluaXRpb25FbXB0eTsKICAgICBnbG9iYWxPYmplY3RDbGFzc0Rl
ZmluaXRpb24uaW5pdGlhbGl6ZSA9IGdsb2JhbE9iamVjdF9pbml0aWFsaXplOwogICAgIGdsb2Jh
bE9iamVjdENsYXNzRGVmaW5pdGlvbi5zdGF0aWNWYWx1ZXMgPSBnbG9iYWxPYmplY3Rfc3RhdGlj
VmFsdWVzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIxNjAy
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05NCw2ICs5NCwxMCBAQAogCQkwRjA3NzZC
RjE0RkYwMDJCMDAxMDIzMzIgLyogSklUQ29tcGlsYXRpb25FZmZvcnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMDc3NkJEMTRGRjAwMjgwMDEwMjMz
MiAvKiBKSVRDb21waWxhdGlvbkVmZm9ydC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGMEE3NTIyMUI5NEJGQTkwMDExMDY2MCAvKiBJbmZlcnJl
ZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYwQTc1MjAxQjk0QkZBOTAwMTEwNjYwIC8qIEluZmVycmVkVHlwZS5jcHAgKi87IH07CiAJCTBG
MEE3NTIzMUI5NEJGQTkwMDExMDY2MCAvKiBJbmZlcnJlZFR5cGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEE3NTIxMUI5NEJGQTkwMDExMDY2MCAv
KiBJbmZlcnJlZFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjBCMjg2QjFFQjhFNkNGMDAwRUI1RDIgLyogSlNXZWFrUHJpdmF0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjI4NkExRUI4
RTZDRDAwMEVCNUQyIC8qIEpTV2Vha1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjBCMjg2QzFFQjhFNkQzMDAwRUI1RDIgLyogSlNX
ZWFrUHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjBCMjg2OTFFQjhFNkNEMDAwRUI1RDIgLyogSlNXZWFrUHJpdmF0ZS5jcHAgKi87IH07
CisJCTBGMEIyODZEMUVCOEU2RDUwMDBFQjVEMiAvKiBKU01hcmtpbmdDb25zdHJhaW50UHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjI4
NjgxRUI4RTZDRDAwMEVCNUQyIC8qIEpTTWFya2luZ0NvbnN0cmFpbnRQcml2YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQjI4NkUxRUI4
RTZEQTAwMEVCNUQyIC8qIEpTTWFya2luZ0NvbnN0cmFpbnRQcml2YXRlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEIyODY3MUVCOEU2Q0QwMDBF
QjVEMiAvKiBKU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHAgKi87IH07CiAJCTBGMEI4MzlD
MTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJ
bnRUaHVua3MuY3BwICovOyB9OwogCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJbnRU
aHVua3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0
RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYwQjgzQTUxNEJDRjUwNDAwODg1QjRGIC8qIENvZGVUeXBlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI2NTMsNiArMjY1NywxMCBA
QAogCQkwRjA3NzZCRDE0RkYwMDI4MDAxMDIzMzIgLyogSklUQ29tcGlsYXRpb25FZmZvcnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUQ29tcGlsYXRpb25FZmZvcnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQTc1MjAxQjk0QkZBOTAwMTEwNjYwIC8q
IEluZmVycmVkVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bmZlcnJlZFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBBNzUyMTFC
OTRCRkE5MDAxMTA2NjAgLyogSW5mZXJyZWRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEluZmVycmVkVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjBCMjg2NzFFQjhFNkNEMDAwRUI1RDIgLyogSlNNYXJraW5nQ29uc3RyYWludFByaXZhdGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNYXJraW5nQ29uc3RyYWlu
dFByaXZhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCMjg2ODFFQjhF
NkNEMDAwRUI1RDIgLyogSlNNYXJraW5nQ29uc3RyYWludFByaXZhdGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNYXJraW5nQ29uc3RyYWludFByaXZhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjI4NjkxRUI4RTZDRDAwMEVCNUQyIC8qIEpTV2Vh
a1ByaXZhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWFr
UHJpdmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEIyODZBMUVCOEU2
Q0QwMDBFQjVEMiAvKiBKU1dlYWtQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTV2Vha1ByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYw
QjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50VGh1bmtzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50
VGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzOTgxNEJDRjQ1
QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IExMSW50VGh1bmtzLmg7IHBhdGggPSBsbGludC9MTEludFRodW5rcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBNTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZVR5cGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYxMzAsNiArNjEzOCw4IEBACiAJCQkJQzI1RDcwOUExNkRF
OTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLmggKi8sCiAJCQkJQzI1RDcwOTkxNkRFOTlG
NDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1tICovLAogCQkJCTJBNEJCN0YyMThBNDExNzkw
MDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1ZUludGVybmFsLmggKi8sCisJCQkJMEYwQjI4NjcxRUI4
RTZDRDAwMEVCNUQyIC8qIEpTTWFya2luZ0NvbnN0cmFpbnRQcml2YXRlLmNwcCAqLywKKwkJCQkw
RjBCMjg2ODFFQjhFNkNEMDAwRUI1RDIgLyogSlNNYXJraW5nQ29uc3RyYWludFByaXZhdGUuaCAq
LywKIAkJCQkxNDgyQjdFMjBBNDMwNzYwMDA1MTdDRkMgLyogSlNPYmplY3RSZWYuY3BwICovLAog
CQkJCTE0ODJCN0UxMEE0MzA3NjAwMDUxN0NGQyAvKiBKU09iamVjdFJlZi5oICovLAogCQkJCUE3
OUVEQjA4MTE1MzFDRDYwMDE5RTkxMiAvKiBKU09iamVjdFJlZlByaXZhdGUuaCAqLywKQEAgLTYx
NTYsNiArNjE2Niw4IEBACiAJCQkJQTc0ODJFMzcxMTZBNjk3QjAwM0IwNzEyIC8qIEpTV2Vha09i
amVjdE1hcFJlZkludGVybmFsLmggKi8sCiAJCQkJQTc0ODJCN0ExMTY2Q0RFQTAwM0IwNzEyIC8q
IEpTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3BwICovLAogCQkJCUE3NDgyQjc5MTE2NkNERUEw
MDNCMDcxMiAvKiBKU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmggKi8sCisJCQkJMEYwQjI4Njkx
RUI4RTZDRDAwMEVCNUQyIC8qIEpTV2Vha1ByaXZhdGUuY3BwICovLAorCQkJCTBGMEIyODZBMUVC
OEU2Q0QwMDBFQjVEMiAvKiBKU1dlYWtQcml2YXRlLmggKi8sCiAJCQkJODZFM0M2MEMxNjdCQUI4
NzAwNkQ3NjBBIC8qIEpTV3JhcHBlck1hcC5oICovLAogCQkJCTg2RTNDNjBCMTY3QkFCODcwMDZE
NzYwQSAvKiBKU1dyYXBwZXJNYXAubW0gKi8sCiAJCQkJODZGM0VFQjkxNjhDQ0Y3NTAwNzdCOTJB
IC8qIE9iakNDYWxsYmFja0Z1bmN0aW9uLmggKi8sCkBAIC04NTM4LDYgKzg1NTAsNyBAQAogCQkJ
CTBGMjAxNzgyMURDQURENDIwMEVBNTk1MCAvKiBERkdGbG93TWFwLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJDNjNBQTFFNEZBNDJFMDBDMTM4MzkgLyogUnVubmluZ1Njb3BlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjlEMzM5NzE3RkZDNEU2MDA3M0MyQkMgLyogREZHRmx1c2hlZEF0LmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjBCMjg2QjFFQjhFNkNGMDAwRUI1RDIgLyogSlNXZWFrUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdEODlDRjgxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Zs
dXNoRm9ybWF0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJERDgxNTFBQjNEOEJFMDBCQkI4RTgg
LyogREZHRm9yQWxsS2lsbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjlDQzg5MTkzQUM2MEEw
MDQ1NzU5RSAvKiBERkdGcm96ZW5WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05NTMzLDYgKzk1
NDYsNyBAQAogCQkJCUFEMkZDQzFFMURCNTlDQjIwMEIzRTczNiAvKiBXZWJBc3NlbWJseVJ1bnRp
bWVFcnJvckNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyRkNCRkIxREI1
OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5UnVudGltZUVycm9yUHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBRDJGQ0MxRjFEQjU5Q0IyMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlSdW50
aW1lRXJyb3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCMjg2RDFFQjhF
NkQ1MDAwRUI1RDIgLyogSlNNYXJraW5nQ29uc3RyYWludFByaXZhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUFEMkZDQkZEMURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseVRhYmxlQ29uc3Ry
dWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUFEMkZDQzIwMURCNTlDQjIwMEIzRTczNiAvKiBX
ZWJBc3NlbWJseVRhYmxlQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBRDJG
Q0JGRjFEQjU4REFEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlUYWJsZVByb3RvdHlwZS5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xMDI1OSw2ICsxMDI3Myw3IEBACiAJCQkJMEYyREQ4MTExQUIzRDhCRTAw
QkJCOEU4IC8qIERGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEYyREQ4MTMxQUIzRDhCRTAwQkJCOEU4IC8qIERGR0FyZ3VtZW50c1V0aWxpdGllcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ4NTMyMTE4Nzc1MDU2MDA4M0I2ODcgLyogREZHQXJp
dGhNb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMEIyODZFMUVCOEU2REEwMDBFQjVEMiAv
KiBKU01hcmtpbmdDb25zdHJhaW50UHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjYz
OTQ4NDE1RTQ4MTE4MDA2QTU5N0MgLyogREZHQXJyYXlNb2RlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE3RDlBMjk0MTdBMEJDNzQwMEVFMjYxOCAvKiBERkdBdFRhaWxBYnN0cmFjdFN0YXRlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjY2RUM2MTgzNTY3MkIwMEQwMTdGMSAvKiBERkdBdmFp
bGFiaWxpdHkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDk1Nyw2ICsxMDk3Miw3IEBACiAJCQkJ
QTdDQTNBRUIxN0RBNTE2ODAwNjUzOEFGIC8qIFdlYWtNYXBEYXRhLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE3Q0EzQUU1MTdEQTQxQUUwMDY1MzhBRiAvKiBXZWFrTWFwUHJvdG90eXBlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0RTg0RkEwMTRFRTFBQ0MwMEQ2RDVENCAvKiBXZWFrU2V0LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBGMEIyODZDMUVCOEU2RDMwMDBFQjVEMiAvKiBKU1dlYWtQ
cml2YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcwOUZCODY5MUFFMzM1QzYwMDM5RDA2OSAv
KiBXZWFrU2V0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzA5RkI4NkIxQUUz
MzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QUQyRkNCRUMxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3Ry
dWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9TbG90VmlzaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1Nsb3RWaXNpdG9yLmgJKHJldmlzaW9uIDIxNjAyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1Nsb3RWaXNpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDkgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgV2Vh
azxUPiYgd2Vhayk7CiAgICAgCisgICAgdm9pZCBhcHBlbmRIaWRkZW5VbmJhcnJpZXJlZChKU1Zh
bHVlKTsKKyAgICB2b2lkIGFwcGVuZEhpZGRlblVuYmFycmllcmVkKEpTQ2VsbCopOworCiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRPcGFxdWVSb290KHZvaWQqKTsKICAgICAKICAgICBK
U19FWFBPUlRfUFJJVkFURSBib29sIGNvbnRhaW5zT3BhcXVlUm9vdCh2b2lkKikgY29uc3Q7CkBA
IC0xNzQsOCArMTc3LDYgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUGFyYWxsZWxNb2Rl
RW5hYmxlcjsKICAgICAKICAgICB2b2lkIGFwcGVuZEpTQ2VsbE9yQXV4aWxpYXJ5KEhlYXBDZWxs
Kik7Ci0gICAgdm9pZCBhcHBlbmRIaWRkZW4oSlNWYWx1ZSk7Ci0gICAgdm9pZCBhcHBlbmRIaWRk
ZW4oSlNDZWxsKik7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZFNsb3coSlND
ZWxsKiwgRGVwZW5kZW5jeSk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmRIaWRk
ZW5TbG93KEpTQ2VsbCosIERlcGVuZGVuY3kpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvU2xvdFZpc2l0b3JJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvU2xvdFZpc2l0b3JJbmxpbmVzLmgJKHJldmlzaW9uIDIxNjAyNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC03MCwxMyArNzAsMTMgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNsb3RWaXNpdG9yOjph
cHBlbmRVbgogICAgICAgICBhcHBlbmRVbmJhcnJpZXJlZCh2YWx1ZS5hc0NlbGwoKSk7CiB9CiAK
LUFMV0FZU19JTkxJTkUgdm9pZCBTbG90VmlzaXRvcjo6YXBwZW5kSGlkZGVuKEpTVmFsdWUgdmFs
dWUpCitBTFdBWVNfSU5MSU5FIHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZEhpZGRlblVuYmFycmll
cmVkKEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKQotICAgICAgICBh
cHBlbmRIaWRkZW4odmFsdWUuYXNDZWxsKCkpOworICAgICAgICBhcHBlbmRIaWRkZW5VbmJhcnJp
ZXJlZCh2YWx1ZS5hc0NlbGwoKSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBTbG90VmlzaXRv
cjo6YXBwZW5kSGlkZGVuKEpTQ2VsbCogY2VsbCkKK0FMV0FZU19JTkxJTkUgdm9pZCBTbG90Vmlz
aXRvcjo6YXBwZW5kSGlkZGVuVW5iYXJyaWVyZWQoSlNDZWxsKiBjZWxsKQogewogICAgIC8vIFRo
aXMgbmVlZHMgdG8gYmUgd3JpdHRlbiBpbiBhIHZlcnkgc3BlY2lmaWMgd2F5IHRvIGVuc3VyZSB0
aGF0IGl0IGdldHMgaW5saW5lZAogICAgIC8vIHByb3Blcmx5LiBJbiBwYXJ0aWN1bGFyLCBpdCBh
cHBlYXJzIHRoYXQgdXNpbmcgdGVtcGxhdGVzIGhlcmUgYnJlYWtzIEFMV0FZU19JTkxJTkUuCkBA
IC0xMTQsNyArMTE0LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNsb3RWaXNpdG9yOjphcHBlbmQo
YwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIEFMV0FZU19JTkxJTkUgdm9pZCBTbG90VmlzaXRvcjo6
YXBwZW5kSGlkZGVuKGNvbnN0IFdyaXRlQmFycmllckJhc2U8VD4mIHNsb3QpCiB7Ci0gICAgYXBw
ZW5kSGlkZGVuKHNsb3QuZ2V0KCkpOworICAgIGFwcGVuZEhpZGRlblVuYmFycmllcmVkKHNsb3Qu
Z2V0KCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvcj4K
</data>
<flag name="review"
          id="329986"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308855</attachid>
            <date>2017-05-02 15:13:32 -0700</date>
            <delta_ts>2017-05-02 15:40:28 -0700</delta_ts>
            <desc>Windows build fix</desc>
            <filename>bug-171554.diff</filename>
            <type>text/plain</type>
            <size>1023</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKaW5kZXggZTlhMjI0ZC4u
ZmQzMGFhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLmMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKQEAg
LTExMTcsNyArMTExNyw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrQ29uc3RuZXNzSW5KU09iamVjdE5h
bWVzKCkKICAgICB2YWwubmFtZSA9ICJzb21ldGhpbmciOwogfQogCi12b2lkIEpTU3luY2hyb25v
dXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhKU0NvbnRleHRSZWYpOworZXh0ZXJuICJDIiB2
b2lkIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhKU0NvbnRleHRSZWYp
OwogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtV2Vha1JlZnMgPSAxMDAwMDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKaW5kZXggNmQwNDYzOC4uN2UxNmM3Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE3LTA1LTAyICBEb24gT2xtc3RlYWQgIDxkb24u
b2xtc3RlYWRAYW0uc29ueS5jb20+CisKKyAgICAgICAgQnVpbGQgZml4IGFmdGVyIHIyMTYwNzgK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTU1NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL3Rl
c3RzL3Rlc3RhcGkuYzoKKwogMjAxNy0wNS0wMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBwZWRhbnRpYyBDIGNvbXBpbGVycy4K
</data>
<flag name="review"
          id="330025"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="330026"
          type_id="3"
          status="-"
          setter="don.olmstead"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308862</attachid>
            <date>2017-05-02 15:40:28 -0700</date>
            <delta_ts>2017-05-02 19:48:52 -0700</delta_ts>
            <desc>Windows build fix</desc>
            <filename>bug-171554.diff</filename>
            <type>text/plain</type>
            <size>1025</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKaW5kZXggZTlhMjI0ZC4u
MDU4MTYwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLmMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKQEAg
LTExMTcsNyArMTExNywxMyBAQCBzdGF0aWMgdm9pZCBjaGVja0NvbnN0bmVzc0luSlNPYmplY3RO
YW1lcygpCiAgICAgdmFsLm5hbWUgPSAic29tZXRoaW5nIjsKIH0KIAorI2lmZGVmIF9fY3BsdXNw
bHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgogdm9pZCBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxl
Y3RGb3JEZWJ1Z2dpbmcoSlNDb250ZXh0UmVmKTsKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2Vu
ZGlmCiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1XZWFrUmVmcyA9IDEwMDAwOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwppbmRleCA2ZDA0NjM4Li43ZTE2YzdjYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDUtMDIgIERvbiBPbG1zdGVhZCAgPGRv
bi5vbG1zdGVhZEBhbS5zb255LmNvbT4KKworICAgICAgICBCdWlsZCBmaXggYWZ0ZXIgcjIxNjA3
OAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxNTU0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkv
dGVzdHMvdGVzdGFwaS5jOgorCiAyMDE3LTA1LTAyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IHBlZGFudGljIEMgY29tcGlsZXJzLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>