<?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>138191</bug_id>
          
          <creation_ts>2014-10-29 15:30:19 -0700</creation_ts>
          <short_desc>Use plain JSArray for RegExp matches instead of a lazily populated custom object.</short_desc>
          <delta_ts>2014-10-30 05:09:53 -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>528+ (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="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>msaboff</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1044870</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-10-29 15:30:19 -0700</bug_when>
    <thetext>We&apos;re already offering two RegExp matching APIs, one that collects subpattern
matches (exec), and one that simply tests for a match (test).
Given that, it was pretty overkill to lazily populate the resulting array of
matches, since the user could simply use test() if they didn&apos;t need them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044873</commentid>
    <comment_count>1</comment_count>
      <attachid>240633</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-10-29 15:36:25 -0700</bug_when>
    <thetext>Created attachment 240633
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044920</commentid>
    <comment_count>2</comment_count>
      <attachid>240633</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-10-29 17:18:36 -0700</bug_when>
    <thetext>Comment on attachment 240633
Patch

Bokay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044969</commentid>
    <comment_count>3</comment_count>
      <attachid>240633</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-29 20:54:21 -0700</bug_when>
    <thetext>Comment on attachment 240633
Patch

Clearing flags on attachment: 240633

Committed r175365: &lt;http://trac.webkit.org/changeset/175365&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044970</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-29 20:54:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045015</commentid>
    <comment_count>5</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-10-30 05:09:53 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 240633 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 240633
&gt; 
&gt; Committed r175365: &lt;http://trac.webkit.org/changeset/175365&gt;

It made 41 JSC test fail on Apple&apos;s debug bots. (32 and 64 bit too)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240633</attachid>
            <date>2014-10-29 15:36:25 -0700</date>
            <delta_ts>2014-10-29 20:54:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138191.diff</filename>
            <type>text/plain</type>
            <size>24433</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGRlMGEyZjYuLmQzNDJkYjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDE0LTEwLTI5ICBBbmRyZWFzIEtsaW5n
ICA8YWtsaW5nQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgcGxhaW4gSlNBcnJheSBmb3IgUmVn
RXhwIG1hdGNoZXMgaW5zdGVhZCBvZiBhIGxhemlseSBwb3B1bGF0ZWQgY3VzdG9tIG9iamVjdC4K
KyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEzODE5MT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSdyZSBhbHJlYWR5IG9mZmVyaW5nIHR3
byBSZWdFeHAgbWF0Y2hpbmcgQVBJcywgb25lIHRoYXQgY29sbGVjdHMgc3VicGF0dGVybgorICAg
ICAgICBtYXRjaGVzIChleGVjKSwgYW5kIG9uZSB0aGF0IHNpbXBseSB0ZXN0cyBmb3IgYSBtYXRj
aCAodGVzdCkuCisgICAgICAgIEdpdmVuIHRoYXQsIGl0IHdhcyBwcmV0dHkgb3ZlcmtpbGwgdG8g
bGF6aWx5IHBvcHVsYXRlIHRoZSByZXN1bHRpbmcgYXJyYXkgb2YKKyAgICAgICAgbWF0Y2hlcywg
c2luY2UgdGhlIHVzZXIgY291bGQgc2ltcGx5IHVzZSB0ZXN0KCkgaWYgdGhleSBkaWRuJ3QgbmVl
ZCB0aGVtLgorCisgICAgICAgIFRoaXMgYWxsb3dzIHRoZSBKSVQgdG8gZ2VuZXJhdGUgYmV0dGVy
IGNvZGUgZm9yIFJlZ0V4cCBtYXRjaCBhcnJheXMsIGFuZCBhbHNvCisgICAgICAgIGVuYWJsZXMg
c29tZSBmYXN0IHBhdGhzIGluIHRoZSBKU0MgcnVudGltZSB0aGF0IGNoZWNrIGlmIGFuIG9iamVj
dCBpc0pTQXJyYXkoKS4KKworICAgICAgICBMb29rcyBsaWtlIH4xLjUlIGltcHJvdmVtZW50IG9u
IE9jdGFuZS9yZWdleHAgYWNjb3JkaW5nIHRvIHJ1bi1qc2MtYmVuY2htYXJrcy4KKworICAgICAg
ICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeUlEKToKKyAg
ICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlQXJyYXlCdXR0
ZXJmbHlXaXRoRXhhY3RMZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAg
ICAgICogcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuY3BwOgorICAgICAgICAoSlNDOjpSZWdF
eHBDYWNoZWRSZXN1bHQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpSZWdFeHBDYWNo
ZWRSZXN1bHQ6Omxhc3RSZXN1bHQpOgorICAgICAgICAoSlNDOjpSZWdFeHBDYWNoZWRSZXN1bHQ6
OmxlZnRDb250ZXh0KToKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2FjaGVkUmVzdWx0OjpyaWdodENv
bnRleHQpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0Lmg6CisgICAgICAg
IChKU0M6OlJlZ0V4cENhY2hlZFJlc3VsdDo6UmVnRXhwQ2FjaGVkUmVzdWx0KToKKyAgICAgICAg
KEpTQzo6UmVnRXhwQ2FjaGVkUmVzdWx0OjpyZWNvcmQpOgorICAgICAgICAoSlNDOjpSZWdFeHBD
YWNoZWRSZXN1bHQ6OmlucHV0KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwQ29uc3RydWN0b3I6OmdldEJhY2tyZWYpOgorICAg
ICAgICAoSlNDOjpSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0TGFzdFBhcmVuKToKKyAgICAgICAgKEpT
Qzo6UmVnRXhwQ29uc3RydWN0b3I6OmdldExlZnRDb250ZXh0KToKKyAgICAgICAgKEpTQzo6UmVn
RXhwQ29uc3RydWN0b3I6OmdldFJpZ2h0Q29udGV4dCk6CisgICAgICAgICogcnVudGltZS9SZWdF
eHBNYXRjaGVzQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVSZWdFeHBNYXRjaGVzQXJy
YXkpOgorICAgICAgICAoSlNDOjpSZWdFeHBNYXRjaGVzQXJyYXk6OlJlZ0V4cE1hdGNoZXNBcnJh
eSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXNBcnJheTo6Y3JlYXRlKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5OjpmaW5pc2hDcmVhdGlv
bik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXNBcnJheTo6dmlzaXRDaGls
ZHJlbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXNBcnJheTo6cmVpZnlB
bGxQcm9wZXJ0aWVzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5
OjpyZWlmeU1hdGNoUHJvcGVydHkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdFeHBNYXRj
aGVzQXJyYXk6OmxlZnRDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0
Y2hlc0FycmF5OjpyaWdodENvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvUmVn
RXhwTWF0Y2hlc0FycmF5Lmg6CisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXNBcnJheTo6Y3Jl
YXRlU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5
OjpyZWlmeUFsbFByb3BlcnRpZXNJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OlJlZ0V4cE1hdGNoZXNBcnJheTo6cmVpZnlNYXRjaFByb3BlcnR5SWZOZWNlc3NhcnkpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpSZWdFeHBNYXRjaGVzQXJyYXk6OmdldE93blByb3BlcnR5U2xv
dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXNBcnJheTo6Z2V0T3duUHJv
cGVydHlTbG90QnlJbmRleCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXNB
cnJheTo6cHV0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5Ojpw
dXRCeUluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnRXhwTWF0Y2hlc0FycmF5Ojpk
ZWxldGVQcm9wZXJ0eSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNoZXNBcnJh
eTo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UmVnRXhw
TWF0Y2hlc0FycmF5OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6UmVnRXhwTWF0Y2hlc0FycmF5OjpkZWZpbmVPd25Qcm9wZXJ0eSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OmlzUmVnRXhwTWF0Y2hlc0FycmF5KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50
aW1lL1JlZ0V4cE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlJlZ0V4cE9iamVjdDo6ZXhlYyk6
CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpz
dHJpbmdQcm90b0Z1bmNNYXRjaCk6CisKIDIwMTQtMTAtMjggIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIx
NzUyNDkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCBkNmU1Y2NhLi5m
YjAwMGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTYzOCw3ICs2
MzgsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeUlEKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbgogICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAKLSAgICBp
ZiAoKGlzSlNBcnJheShiYXNlVmFsdWUpIHx8IGlzUmVnRXhwTWF0Y2hlc0FycmF5KGJhc2VWYWx1
ZSkgfHwgaXNKU1N0cmluZyhiYXNlVmFsdWUpKSAmJiBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJv
cGVydHlOYW1lcygpLmxlbmd0aCkgeworICAgIGlmICgoaXNKU0FycmF5KGJhc2VWYWx1ZSkgfHwg
aXNKU1N0cmluZyhiYXNlVmFsdWUpKSAmJiBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlO
YW1lcygpLmxlbmd0aCkgewogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IHN0YXRpY19jYXN0PEdQ
UlJlZz4oc3R1YkluZm8ucGF0Y2guYmFzZUdQUik7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAg
ICAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8u
cGF0Y2gudmFsdWVUYWdHUFIpOwpAQCAtNjQ3LDcgKzY0Nyw3IEBAIHN0YXRpYyBJbmxpbmVDYWNo
ZUFjdGlvbiB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1
ZSwgY29uCiAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXIgc3R1YkppdDsKIAotICAgICAgICBpZiAo
aXNKU0FycmF5KGJhc2VWYWx1ZSkgfHwgaXNSZWdFeHBNYXRjaGVzQXJyYXkoYmFzZVZhbHVlKSkg
eworICAgICAgICBpZiAoaXNKU0FycmF5KGJhc2VWYWx1ZSkpIHsKICAgICAgICAgICAgIEdQUlJl
ZyBzY3JhdGNoR1BSID0gVGVtcFJlZ2lzdGVyU2V0KHN0dWJJbmZvLnBhdGNoLnVzZWRSZWdpc3Rl
cnMpLmdldEZyZWVHUFIoKTsKICAgICAgICAgICAgIGJvb2wgbmVlZFRvUmVzdG9yZVNjcmF0Y2gg
PSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCmluZGV4IDNl
MmI2NjguLjcwMDI5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgK
QEAgLTE5MCwxOCArMTkwLDYgQEAgaW5saW5lIEJ1dHRlcmZseSogY3JlYXRlQ29udGlndW91c0Fy
cmF5QnV0dGVyZmx5KFZNJiB2bSwgSlNDZWxsKiBpbnRlbmRlZE93bmVyLAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLWlubGluZSBCdXR0ZXJmbHkqIGNyZWF0ZUFycmF5QnV0dGVyZmx5V2l0aEV4
YWN0TGVuZ3RoKFZNJiB2bSwgSlNDZWxsKiBpbnRlbmRlZE93bmVyLCB1bnNpZ25lZCBpbml0aWFs
TGVuZ3RoKQotewotICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGUo
Ci0gICAgICAgIHZtLCBpbnRlbmRlZE93bmVyLCAwLCAwLCB0cnVlLCBpbmRleGluZ0hlYWRlckZv
ckFycmF5KGluaXRpYWxMZW5ndGgsIGluaXRpYWxMZW5ndGgpLAotICAgICAgICBBcnJheVN0b3Jh
Z2U6OnNpemVGb3IoaW5pdGlhbExlbmd0aCkpOwotICAgIEFycmF5U3RvcmFnZSogc3RvcmFnZSA9
IGJ1dHRlcmZseS0+YXJyYXlTdG9yYWdlKCk7Ci0gICAgc3RvcmFnZS0+bV9pbmRleEJpYXMgPSAw
OwotICAgIHN0b3JhZ2UtPm1fc3BhcnNlTWFwLmNsZWFyKCk7Ci0gICAgc3RvcmFnZS0+bV9udW1W
YWx1ZXNJblZlY3RvciA9IDA7Ci0gICAgcmV0dXJuIGJ1dHRlcmZseTsKLX0KLQogaW5saW5lIEJ1
dHRlcmZseSogY3JlYXRlQXJyYXlCdXR0ZXJmbHkoVk0mIHZtLCBKU0NlbGwqIGludGVuZGVkT3du
ZXIsIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgpCiB7CiAgICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkg
PSBCdXR0ZXJmbHk6OmNyZWF0ZSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBhNjhjNzhlLi5mODIzMDYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0yODgsOCAr
Mjg4LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9vcmlnaW5h
bEFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdTaGFwZVtTbG93UHV0QXJyYXlTdG9yYWdlU2hhcGUg
Pj4gSW5kZXhpbmdTaGFwZVNoaWZ0XS5zZXQodm0sIHRoaXMsIEpTQXJyYXk6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgdGhpcywgbV9hcnJheVByb3RvdHlwZS5nZXQoKSwgQXJyYXlXaXRoU2xvd1B1dEFy
cmF5U3RvcmFnZSkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBOdW1iZXJPZkluZGV4
aW5nU2hhcGVzOyArK2kpCiAgICAgICAgIG1fYXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1NoYXBl
RHVyaW5nQWxsb2NhdGlvbltpXSA9IG1fb3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
U2hhcGVbaV07Ci0gICAgCi0gICAgbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUuc2V0KHZt
LCB0aGlzLCBSZWdFeHBNYXRjaGVzQXJyYXk6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9h
cnJheVByb3RvdHlwZS5nZXQoKSkpOworCisgICAgbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1
cmUuc2V0KHZtLCB0aGlzLCBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgdGhpcywgbV9hcnJheVByb3Rv
dHlwZS5nZXQoKSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBKU0FycmF5
OjppbmZvKCksIEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpKTsKICAgICAKICAgICBSZWdF
eHAqIGVtcHR5UmVnZXggPSBSZWdFeHA6OmNyZWF0ZSh2bSwgIiIsIE5vRmxhZ3MpOwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVkUmVz
dWx0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3Vs
dC5jcHAKaW5kZXggMjc2YmEzMy4uNjcxZGU0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuY3BwCkBAIC0zNywxOCArMzcsNDAg
QEAgdm9pZCBSZWdFeHBDYWNoZWRSZXN1bHQ6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJm1fbGFzdFJlZ0V4cCk7CiAgICAgdmlzaXRvci5h
cHBlbmQoJm1fcmVpZmllZElucHV0KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmbV9yZWlmaWVkUmVz
dWx0KTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmbV9yZWlmaWVkTGVmdENvbnRleHQpOworICAgIHZp
c2l0b3IuYXBwZW5kKCZtX3JlaWZpZWRSaWdodENvbnRleHQpOwogfQogCi1SZWdFeHBNYXRjaGVz
QXJyYXkqIFJlZ0V4cENhY2hlZFJlc3VsdDo6bGFzdFJlc3VsdChFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBvd25lcikKK0pTQXJyYXkqIFJlZ0V4cENhY2hlZFJlc3VsdDo6bGFzdFJlc3VsdChF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvd25lcikKIHsKLSAgICBpZiAobV9yZXN1bHQpIHsK
KyAgICBpZiAoIW1fcmVpZmllZCkgewogICAgICAgICBtX3JlaWZpZWRJbnB1dC5zZXQoZXhlYy0+
dm0oKSwgb3duZXIsIG1fbGFzdElucHV0LmdldCgpKTsKLSAgICAgICAgbV9yZWlmaWVkUmVzdWx0
LnNldChleGVjLT52bSgpLCBvd25lciwgUmVnRXhwTWF0Y2hlc0FycmF5OjpjcmVhdGUoZXhlYywg
bV9sYXN0SW5wdXQuZ2V0KCksIG1fbGFzdFJlZ0V4cC5nZXQoKSwgbV9yZXN1bHQpKTsKLSAgICAg
ICAgbV9yZXN1bHQgPSBNYXRjaFJlc3VsdDo6ZmFpbGVkKCk7CisgICAgICAgIG1fcmVpZmllZFJl
c3VsdC5zZXQoZXhlYy0+dm0oKSwgb3duZXIsIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheShleGVj
LCBtX2xhc3RJbnB1dC5nZXQoKSwgbV9sYXN0UmVnRXhwLmdldCgpLCBtX3Jlc3VsdCkpOworICAg
ICAgICBtX3JlaWZpZWQgPSB0cnVlOwogICAgIH0KICAgICByZXR1cm4gbV9yZWlmaWVkUmVzdWx0
LmdldCgpOwogfQogCitKU1N0cmluZyogUmVnRXhwQ2FjaGVkUmVzdWx0OjpsZWZ0Q29udGV4dChF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvd25lcikKK3sKKyAgICAvLyBNYWtlIHN1cmUgd2Un
cmUgcmVpZmllZC4KKyAgICBsYXN0UmVzdWx0KGV4ZWMsIG93bmVyKTsKKyAgICBpZiAoIW1fcmVp
ZmllZExlZnRDb250ZXh0KQorICAgICAgICBtX3JlaWZpZWRMZWZ0Q29udGV4dC5zZXQoZXhlYy0+
dm0oKSwgb3duZXIsIG1fcmVzdWx0LnN0YXJ0ID8ganNTdWJzdHJpbmcoZXhlYywgbV9yZWlmaWVk
SW5wdXQuZ2V0KCksIDAsIG1fcmVzdWx0LnN0YXJ0KSA6IGpzRW1wdHlTdHJpbmcoZXhlYykpOwor
ICAgIHJldHVybiBtX3JlaWZpZWRMZWZ0Q29udGV4dC5nZXQoKTsKK30KKworSlNTdHJpbmcqIFJl
Z0V4cENhY2hlZFJlc3VsdDo6cmlnaHRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IG93bmVyKQoreworICAgIC8vIE1ha2Ugc3VyZSB3ZSdyZSByZWlmaWVkLgorICAgIGxhc3RSZXN1
bHQoZXhlYywgb3duZXIpOworICAgIGlmICghbV9yZWlmaWVkUmlnaHRDb250ZXh0KSB7CisgICAg
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fcmVpZmllZElucHV0LT5sZW5ndGgoKTsKKyAgICAgICAg
bV9yZWlmaWVkUmlnaHRDb250ZXh0LnNldChleGVjLT52bSgpLCBvd25lciwgbV9yZXN1bHQuZW5k
ICE9IGxlbmd0aCA/IGpzU3Vic3RyaW5nKGV4ZWMsIG1fcmVpZmllZElucHV0LmdldCgpLCBtX3Jl
c3VsdC5lbmQsIGxlbmd0aCAtIG1fcmVzdWx0LmVuZCkgOiBqc0VtcHR5U3RyaW5nKGV4ZWMpKTsK
KyAgICB9CisgICAgcmV0dXJuIG1fcmVpZmllZFJpZ2h0Q29udGV4dC5nZXQoKTsKK30KKwogdm9p
ZCBSZWdFeHBDYWNoZWRSZXN1bHQ6OnNldElucHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IG93bmVyLCBKU1N0cmluZyogaW5wdXQpCiB7CiAgICAgLy8gTWFrZSBzdXJlIHdlJ3JlIHJlaWZp
ZWQsIG90aGVyd2lzZSBtX3JlaWZpZWRJbnB1dCB3aWxsIGJlIGlnbm9yZWQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZWRSZXN1bHQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlZFJlc3VsdC5oCmluZGV4IDIw
YTUyNWMuLmJmNmMwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cENhY2hlZFJlc3VsdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cENhY2hlZFJlc3VsdC5oCkBAIC0zMCw4ICszMCw4IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCitjbGFzcyBKU0FycmF5OwogY2xhc3MgSlNTdHJpbmc7Ci1jbGFzcyBSZWdFeHBNYXRjaGVz
QXJyYXk7CiAKIC8vIFJlZ0V4cENhY2hlZFJlc3VsdCBpcyB1c2VkIHRvIHRyYWNrIHRoZSBjYWNo
ZWQgcmVzdWx0cyBvZiB0aGUgbGFzdAogLy8gbWF0Y2gsIHN0b3JlcyBvbiB0aGUgUmVnRXhwIGNv
bnN0cnVjdG9yIChlLmcuICQmLCAkXywgJDEsICQyIC4uLikuCkBAIC00Niw2ICs0Niw3IEBAIGNs
YXNzIFJlZ0V4cENhY2hlZFJlc3VsdCB7CiBwdWJsaWM6CiAgICAgUmVnRXhwQ2FjaGVkUmVzdWx0
KFZNJiB2bSwgSlNPYmplY3QqIG93bmVyLCBSZWdFeHAqIGVtcHR5UmVnRXhwKQogICAgICAgICA6
IG1fcmVzdWx0KDAsIDApCisgICAgICAgICwgbV9yZWlmaWVkKGZhbHNlKQogICAgIHsKICAgICAg
ICAgbV9sYXN0SW5wdXQuc2V0KHZtLCBvd25lciwganNFbXB0eVN0cmluZygmdm0pKTsKICAgICAg
ICAgbV9sYXN0UmVnRXhwLnNldCh2bSwgb3duZXIsIGVtcHR5UmVnRXhwKTsKQEAgLTU1LDI4ICs1
NiwzNCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX2xhc3RSZWdFeHAuc2V0KHZtLCBvd25l
ciwgcmVnRXhwKTsKICAgICAgICAgbV9sYXN0SW5wdXQuc2V0KHZtLCBvd25lciwgaW5wdXQpOwor
ICAgICAgICBtX3JlaWZpZWRMZWZ0Q29udGV4dC5jbGVhcigpOworICAgICAgICBtX3JlaWZpZWRS
aWdodENvbnRleHQuY2xlYXIoKTsKICAgICAgICAgbV9yZXN1bHQgPSByZXN1bHQ7CisgICAgICAg
IG1fcmVpZmllZCA9IGZhbHNlOwogICAgIH0KIAotICAgIFJlZ0V4cE1hdGNoZXNBcnJheSogbGFz
dFJlc3VsdChFeGVjU3RhdGUqLCBKU09iamVjdCogb3duZXIpOworICAgIEpTQXJyYXkqIGxhc3RS
ZXN1bHQoRXhlY1N0YXRlKiwgSlNPYmplY3QqIG93bmVyKTsKICAgICB2b2lkIHNldElucHV0KEV4
ZWNTdGF0ZSosIEpTT2JqZWN0KiBvd25lciwgSlNTdHJpbmcqKTsKIAorICAgIEpTU3RyaW5nKiBs
ZWZ0Q29udGV4dChFeGVjU3RhdGUqLCBKU09iamVjdCogb3duZXIpOworICAgIEpTU3RyaW5nKiBy
aWdodENvbnRleHQoRXhlY1N0YXRlKiwgSlNPYmplY3QqIG93bmVyKTsKKwogICAgIEpTU3RyaW5n
KiBpbnB1dCgpCiAgICAgewotICAgICAgICAvLyBJZiBtX3Jlc3VsdCBzaG93YXMgYSBtYXRjaCB0
aGVuIHdlJ3JlIGluIGEgbGF6eSBzdGF0ZSwgc28gbV9sYXN0SW5wdXQKLSAgICAgICAgLy8gaXMg
dGhlIG1vc3QgcmVjZW50IHZhbHVlIG9mIHRoZSBpbnB1dCBwcm9wZXJ0eS4gSWYgbm90IHRoZW4g
d2UgaGF2ZQotICAgICAgICAvLyByZWlmaWVkLCBpbiB3aGljaCBjYXNlIG1fcmVpZmllZElucHV0
IHdpbGwgY29udGFpbiB0aGUgY29ycmVjdCB2YWx1ZS4KLSAgICAgICAgcmV0dXJuIG1fcmVzdWx0
ID8gbV9sYXN0SW5wdXQuZ2V0KCkgOiBtX3JlaWZpZWRJbnB1dC5nZXQoKTsKKyAgICAgICAgcmV0
dXJuIG1fcmVpZmllZCA/IG1fcmVpZmllZElucHV0LmdldCgpIDogbV9sYXN0SW5wdXQuZ2V0KCk7
CiAgICAgfQogCiAgICAgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAKIHByaXZh
dGU6CiAgICAgTWF0Y2hSZXN1bHQgbV9yZXN1bHQ7CisgICAgYm9vbCBtX3JlaWZpZWQ7CiAgICAg
V3JpdGVCYXJyaWVyPEpTU3RyaW5nPiBtX2xhc3RJbnB1dDsKICAgICBXcml0ZUJhcnJpZXI8UmVn
RXhwPiBtX2xhc3RSZWdFeHA7Ci0gICAgV3JpdGVCYXJyaWVyPFJlZ0V4cE1hdGNoZXNBcnJheT4g
bV9yZWlmaWVkUmVzdWx0OworICAgIFdyaXRlQmFycmllcjxKU0FycmF5PiBtX3JlaWZpZWRSZXN1
bHQ7CiAgICAgV3JpdGVCYXJyaWVyPEpTU3RyaW5nPiBtX3JlaWZpZWRJbnB1dDsKKyAgICBXcml0
ZUJhcnJpZXI8SlNTdHJpbmc+IG1fcmVpZmllZExlZnRDb250ZXh0OworICAgIFdyaXRlQmFycmll
cjxKU1N0cmluZz4gbV9yZWlmaWVkUmlnaHRDb250ZXh0OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5jcHAKaW5kZXggNDZkODUzYi4uNDVlODBmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcApAQCAtMTE2LDcgKzExNiw3
IEBAIHZvaWQgUmVnRXhwQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKIAogSlNWYWx1ZSBSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0QmFj
a3JlZihFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGkpCiB7Ci0gICAgUmVnRXhwTWF0Y2hlc0Fy
cmF5KiBhcnJheSA9IG1fY2FjaGVkUmVzdWx0Lmxhc3RSZXN1bHQoZXhlYywgdGhpcyk7CisgICAg
SlNBcnJheSogYXJyYXkgPSBtX2NhY2hlZFJlc3VsdC5sYXN0UmVzdWx0KGV4ZWMsIHRoaXMpOwog
CiAgICAgaWYgKGkgPCBhcnJheS0+bGVuZ3RoKCkpIHsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQg
PSBKU1ZhbHVlKGFycmF5KS5nZXQoZXhlYywgaSk7CkBAIC0xMjksNyArMTI5LDcgQEAgSlNWYWx1
ZSBSZWdFeHBDb25zdHJ1Y3Rvcjo6Z2V0QmFja3JlZihFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
IGkpCiAKIEpTVmFsdWUgUmVnRXhwQ29uc3RydWN0b3I6OmdldExhc3RQYXJlbihFeGVjU3RhdGUq
IGV4ZWMpCiB7Ci0gICAgUmVnRXhwTWF0Y2hlc0FycmF5KiBhcnJheSA9IG1fY2FjaGVkUmVzdWx0
Lmxhc3RSZXN1bHQoZXhlYywgdGhpcyk7CisgICAgSlNBcnJheSogYXJyYXkgPSBtX2NhY2hlZFJl
c3VsdC5sYXN0UmVzdWx0KGV4ZWMsIHRoaXMpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFycmF5
LT5sZW5ndGgoKTsKICAgICBpZiAobGVuZ3RoID4gMSkgewogICAgICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IEpTVmFsdWUoYXJyYXkpLmdldChleGVjLCBsZW5ndGggLSAxKTsKQEAgLTE0MiwxMiArMTQy
LDEyIEBAIEpTVmFsdWUgUmVnRXhwQ29uc3RydWN0b3I6OmdldExhc3RQYXJlbihFeGVjU3RhdGUq
IGV4ZWMpCiAKIEpTVmFsdWUgUmVnRXhwQ29uc3RydWN0b3I6OmdldExlZnRDb250ZXh0KEV4ZWNT
dGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gbV9jYWNoZWRSZXN1bHQubGFzdFJlc3VsdChleGVj
LCB0aGlzKS0+bGVmdENvbnRleHQoZXhlYyk7CisgICAgcmV0dXJuIG1fY2FjaGVkUmVzdWx0Lmxl
ZnRDb250ZXh0KGV4ZWMsIHRoaXMpOwogfQogCiBKU1ZhbHVlIFJlZ0V4cENvbnN0cnVjdG9yOjpn
ZXRSaWdodENvbnRleHQoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBtX2NhY2hlZFJl
c3VsdC5sYXN0UmVzdWx0KGV4ZWMsIHRoaXMpLT5yaWdodENvbnRleHQoZXhlYyk7CisgICAgcmV0
dXJuIG1fY2FjaGVkUmVzdWx0LnJpZ2h0Q29udGV4dChleGVjLCB0aGlzKTsKIH0KICAgICAKIGJv
b2wgUmVnRXhwQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0
LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cE1hdGNoZXNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBN
YXRjaGVzQXJyYXkuY3BwCmluZGV4IDhjZWM0ZWEuLjM0NjFjZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw5MyAr
MzEsMzcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNvbnN0IENsYXNzSW5mbyBSZWdFeHBNYXRj
aGVzQXJyYXk6OnNfaW5mbyA9IHsiQXJyYXkiLCAmSlNBcnJheTo6c19pbmZvLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKFJlZ0V4cE1hdGNoZXNBcnJheSl9OwotCi1SZWdFeHBNYXRjaGVzQXJyYXk6
OlJlZ0V4cE1hdGNoZXNBcnJheShWTSYgdm0sIEJ1dHRlcmZseSogYnV0dGVyZmx5LCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cmluZyogaW5wdXQsIFJlZ0V4cCogcmVnRXhwLCBN
YXRjaFJlc3VsdCByZXN1bHQpCi0gICAgOiBKU0FycmF5KHZtLCBnbG9iYWxPYmplY3QtPnJlZ0V4
cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpLCBidXR0ZXJmbHkpCi0gICAgLCBtX3Jlc3VsdChyZXN1
bHQpCi0gICAgLCBtX3N0YXRlKFJlaWZpZWROb25lKQotewotICAgIG1faW5wdXQuc2V0KHZtLCB0
aGlzLCBpbnB1dCk7Ci0gICAgbV9yZWdFeHAuc2V0KHZtLCB0aGlzLCByZWdFeHApOwotfQotCi1S
ZWdFeHBNYXRjaGVzQXJyYXkqIFJlZ0V4cE1hdGNoZXNBcnJheTo6Y3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNTdHJpbmcqIGlucHV0LCBSZWdFeHAqIHJlZ0V4cCwgTWF0Y2hSZXN1bHQgcmVzdWx0
KQorSlNBcnJheSogY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5KEV4ZWNTdGF0ZSogZXhlYywgSlNT
dHJpbmcqIGlucHV0LCBSZWdFeHAqIHJlZ0V4cCwgTWF0Y2hSZXN1bHQgcmVzdWx0KQogewogICAg
IEFTU0VSVChyZXN1bHQpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgQnV0dGVyZmx5
KiBidXR0ZXJmbHkgPSBjcmVhdGVBcnJheUJ1dHRlcmZseVdpdGhFeGFjdExlbmd0aCh2bSwgMCwg
cmVnRXhwLT5udW1TdWJwYXR0ZXJucygpICsgMSk7Ci0gICAgUmVnRXhwTWF0Y2hlc0FycmF5KiBh
cnJheSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJlZ0V4cE1hdGNoZXNBcnJheT4odm0u
aGVhcCkpIFJlZ0V4cE1hdGNoZXNBcnJheSh2bSwgYnV0dGVyZmx5LCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCksIGlucHV0LCByZWdFeHAsIHJlc3VsdCk7Ci0gICAgYXJyYXktPmZpbmlzaENy
ZWF0aW9uKHZtKTsKLSAgICByZXR1cm4gYXJyYXk7Ci19Ci0KLXZvaWQgUmVnRXhwTWF0Y2hlc0Fy
cmF5OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOwotfQotCi12b2lkIFJlZ0V4cE1hdGNoZXNBcnJheTo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQotewotICAgIFJlZ0V4cE1hdGNoZXNBcnJheSog
dGhpc09iamVjdCA9IGpzQ2FzdDxSZWdFeHBNYXRjaGVzQXJyYXkqPihjZWxsKTsKLSAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9pbnB1dCk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVn
RXhwKTsKLX0KKyAgICBKU0FycmF5KiBhcnJheSA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlh
bGl6ZWQodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwTWF0Y2hlc0FycmF5
U3RydWN0dXJlKCksIHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSArIDEpOworICAgIFJFTEVBU0Vf
QVNTRVJUKGFycmF5KTsKIAotdm9pZCBSZWdFeHBNYXRjaGVzQXJyYXk6OnJlaWZ5QWxsUHJvcGVy
dGllcyhFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgQVNTRVJUKG1fc3RhdGUgIT0gUmVpZmllZEFs
bCk7Ci0gICAgQVNTRVJUKG1fcmVzdWx0KTsKLSAKICAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGlu
Z1JlZ2lvbigiUmVpZnlpbmcgc3Vic3RyaW5nIHByb3BlcnRpZXMiKTsKLSAgICAKLSAgICByZWlm
eU1hdGNoUHJvcGVydHlJZk5lY2Vzc2FyeShleGVjKTsKIAotICAgIGlmICh1bnNpZ25lZCBudW1T
dWJwYXR0ZXJucyA9IG1fcmVnRXhwLT5udW1TdWJwYXR0ZXJucygpKSB7CisgICAgYXJyYXktPnB1
dERpcmVjdEluZGV4KGV4ZWMsIDAsIGpzU3Vic3RyaW5nKGV4ZWMsIGlucHV0LCByZXN1bHQuc3Rh
cnQsIHJlc3VsdC5lbmQgLSByZXN1bHQuc3RhcnQpKTsKKworICAgIGlmICh1bnNpZ25lZCBudW1T
dWJwYXR0ZXJucyA9IHJlZ0V4cC0+bnVtU3VicGF0dGVybnMoKSkgewogICAgICAgICBWZWN0b3I8
aW50LCAzMj4gc3VicGF0dGVyblJlc3VsdHM7Ci0gICAgICAgIGludCBwb3NpdGlvbiA9IG1fcmVn
RXhwLT5tYXRjaChleGVjLT52bSgpLCBtX2lucHV0LT52YWx1ZShleGVjKSwgbV9yZXN1bHQuc3Rh
cnQsIHN1YnBhdHRlcm5SZXN1bHRzKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChwb3NpdGlvbiwg
cG9zaXRpb24gPj0gMCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KHBvc2l0aW9uKSA9PSBtX3Jlc3Vs
dC5zdGFydCk7Ci0gICAgICAgIEFTU0VSVChtX3Jlc3VsdC5zdGFydCA9PSBzdGF0aWNfY2FzdDxz
aXplX3Q+KHN1YnBhdHRlcm5SZXN1bHRzWzBdKSk7Ci0gICAgICAgIEFTU0VSVChtX3Jlc3VsdC5l
bmQgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdWJwYXR0ZXJuUmVzdWx0c1sxXSkpOworICAgICAg
ICBpbnQgcG9zaXRpb24gPSByZWdFeHAtPm1hdGNoKGV4ZWMtPnZtKCksIGlucHV0LT52YWx1ZShl
eGVjKSwgcmVzdWx0LnN0YXJ0LCBzdWJwYXR0ZXJuUmVzdWx0cyk7CisgICAgICAgIEFTU0VSVF9V
TlVTRUQocG9zaXRpb24sIHBvc2l0aW9uID49IDAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90Pihwb3Np
dGlvbikgPT0gcmVzdWx0LnN0YXJ0KTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5zdGFydCA9PSBz
dGF0aWNfY2FzdDxzaXplX3Q+KHN1YnBhdHRlcm5SZXN1bHRzWzBdKSk7CisgICAgICAgIEFTU0VS
VChyZXN1bHQuZW5kID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3VicGF0dGVyblJlc3VsdHNbMV0p
KTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG51bVN1YnBhdHRlcm5zOyAr
K2kpIHsKICAgICAgICAgICAgIGludCBzdGFydCA9IHN1YnBhdHRlcm5SZXN1bHRzWzIgKiBpXTsK
ICAgICAgICAgICAgIGlmIChzdGFydCA+PSAwKQotICAgICAgICAgICAgICAgIHB1dERpcmVjdElu
ZGV4KGV4ZWMsIGksIGpzU3Vic3RyaW5nKGV4ZWMsIG1faW5wdXQuZ2V0KCksIHN0YXJ0LCBzdWJw
YXR0ZXJuUmVzdWx0c1syICogaSArIDFdIC0gc3RhcnQpKTsKKyAgICAgICAgICAgICAgICBhcnJh
eS0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaSwganNTdWJzdHJpbmcoZXhlYywgaW5wdXQsIHN0YXJ0
LCBzdWJwYXR0ZXJuUmVzdWx0c1syICogaSArIDFdIC0gc3RhcnQpKTsKICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBwdXREaXJlY3RJbmRleChleGVjLCBpLCBqc1VuZGVmaW5lZCgp
KTsKKyAgICAgICAgICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaSwganNVbmRl
ZmluZWQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwdXREaXJlY3QoZXhlYy0+dm0oKSwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmluZGV4LCBqc051bWJlcihtX3Jlc3VsdC5zdGFydCkpOwot
ICAgIHB1dERpcmVjdChleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaW5wdXQsIG1f
aW5wdXQuZ2V0KCkpOwotCi0gICAgbV9zdGF0ZSA9IFJlaWZpZWRBbGw7Ci19Ci0KLXZvaWQgUmVn
RXhwTWF0Y2hlc0FycmF5OjpyZWlmeU1hdGNoUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjKQotewot
ICAgIEFTU0VSVChtX3N0YXRlID09IFJlaWZpZWROb25lKTsKLSAgICBBU1NFUlQobV9yZXN1bHQp
OwotICAgIHB1dERpcmVjdEluZGV4KGV4ZWMsIDAsIGpzU3Vic3RyaW5nKGV4ZWMsIG1faW5wdXQu
Z2V0KCksIG1fcmVzdWx0LnN0YXJ0LCBtX3Jlc3VsdC5lbmQgLSBtX3Jlc3VsdC5zdGFydCkpOwot
ICAgIG1fc3RhdGUgPSBSZWlmaWVkTWF0Y2g7Ci19Ci0KLUpTU3RyaW5nKiBSZWdFeHBNYXRjaGVz
QXJyYXk6OmxlZnRDb250ZXh0KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBpZiAoIW1fcmVzdWx0
LnN0YXJ0KQotICAgICAgICByZXR1cm4ganNFbXB0eVN0cmluZyhleGVjKTsKLSAgICByZXR1cm4g
anNTdWJzdHJpbmcoZXhlYywgbV9pbnB1dC5nZXQoKSwgMCwgbV9yZXN1bHQuc3RhcnQpOwotfQor
ICAgIGFycmF5LT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmlu
ZGV4LCBqc051bWJlcihyZXN1bHQuc3RhcnQpKTsKKyAgICBhcnJheS0+cHV0RGlyZWN0KGV4ZWMt
PnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pbnB1dCwgaW5wdXQpOwogCi1KU1N0cmluZyog
UmVnRXhwTWF0Y2hlc0FycmF5OjpyaWdodENvbnRleHQoRXhlY1N0YXRlKiBleGVjKQotewotICAg
IHVuc2lnbmVkIGxlbmd0aCA9IG1faW5wdXQtPmxlbmd0aCgpOwotICAgIGlmIChtX3Jlc3VsdC5l
bmQgPT0gbGVuZ3RoKQotICAgICAgICByZXR1cm4ganNFbXB0eVN0cmluZyhleGVjKTsKLSAgICBy
ZXR1cm4ganNTdWJzdHJpbmcoZXhlYywgbV9pbnB1dC5nZXQoKSwgbV9yZXN1bHQuZW5kLCBsZW5n
dGggLSBtX3Jlc3VsdC5lbmQpOworICAgIHJldHVybiBhcnJheTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBN
YXRjaGVzQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNo
ZXNBcnJheS5oCmluZGV4IGFjN2Y4OTUuLmRmNzJmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCkBAIC0yNiwxMTkgKzI2LDcg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIFJlZ0V4cE1hdGNoZXNBcnJheSA6IHB1Ymxp
YyBKU0FycmF5IHsKLXByaXZhdGU6Ci0gICAgUmVnRXhwTWF0Y2hlc0FycmF5KFZNJiwgQnV0dGVy
Zmx5KiwgSlNHbG9iYWxPYmplY3QqLCBKU1N0cmluZyosIFJlZ0V4cCosIE1hdGNoUmVzdWx0KTsK
LQotICAgIGVudW0gUmVpZmllZFN0YXRlIHsgUmVpZmllZE5vbmUsIFJlaWZpZWRNYXRjaCwgUmVp
ZmllZEFsbCB9OwotCi1wdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0FycmF5IEJhc2U7Ci0KLSAgICBz
dGF0aWMgUmVnRXhwTWF0Y2hlc0FycmF5KiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNTdHJpbmcqLCBS
ZWdFeHAqLCBNYXRjaFJlc3VsdCk7Ci0KLSAgICBKU1N0cmluZyogbGVmdENvbnRleHQoRXhlY1N0
YXRlKik7Ci0gICAgSlNTdHJpbmcqIHJpZ2h0Q29udGV4dChFeGVjU3RhdGUqKTsKLQotICAgIERF
Q0xBUkVfSU5GTzsKLQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIEFy
cmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKLQotcHJvdGVjdGVkOgotICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKLQotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFBy
b3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQotcHJpdmF0ZToKLSAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmVpZnlBbGxQcm9wZXJ0aWVzSWZOZWNlc3NhcnkoRXhlY1N0YXRlKiBl
eGVjKQotICAgIHsKLSAgICAgICAgaWYgKG1fc3RhdGUgIT0gUmVpZmllZEFsbCkKLSAgICAgICAg
ICAgIHJlaWZ5QWxsUHJvcGVydGllcyhleGVjKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgcmVpZnlNYXRjaFByb3BlcnR5SWZOZWNlc3NhcnkoRXhlY1N0YXRlKiBleGVjKQotICAg
IHsKLSAgICAgICAgaWYgKG1fc3RhdGUgPT0gUmVpZmllZE5vbmUpCi0gICAgICAgICAgICByZWlm
eU1hdGNoUHJvcGVydHkoZXhlYyk7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgZ2V0T3duUHJv
cGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotICAgIHsKLSAgICAgICAgUmVnRXhw
TWF0Y2hlc0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJlZ0V4cE1hdGNoZXNBcnJheSo+KG9i
amVjdCk7Ci0gICAgICAgIHRoaXNPYmplY3QtPnJlaWZ5QWxsUHJvcGVydGllc0lmTmVjZXNzYXJ5
KGV4ZWMpOwotICAgICAgICByZXR1cm4gSlNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgfQotCi0gICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQotICAgIHsK
LSAgICAgICAgUmVnRXhwTWF0Y2hlc0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJlZ0V4cE1h
dGNoZXNBcnJheSo+KG9iamVjdCk7Ci0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUpCi0gICAgICAg
ICAgICB0aGlzT2JqZWN0LT5yZWlmeUFsbFByb3BlcnRpZXNJZk5lY2Vzc2FyeShleGVjKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgdGhpc09iamVjdC0+cmVpZnlNYXRjaFByb3BlcnR5SWZO
ZWNlc3NhcnkoZXhlYyk7Ci0gICAgICAgIHJldHVybiBKU0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci0gICAgfQot
Ci0gICAgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHYsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkK
LSAgICB7Ci0gICAgICAgIFJlZ0V4cE1hdGNoZXNBcnJheSogdGhpc09iamVjdCA9IGpzQ2FzdDxS
ZWdFeHBNYXRjaGVzQXJyYXkqPihjZWxsKTsKLSAgICAgICAgdGhpc09iamVjdC0+cmVpZnlBbGxQ
cm9wZXJ0aWVzSWZOZWNlc3NhcnkoZXhlYyk7Ci0gICAgICAgIEpTQXJyYXk6OnB1dCh0aGlzT2Jq
ZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHYsIHNsb3QpOwotICAgIH0KLQotICAgIHN0YXRpYyB2
b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2LCBib29sIHNob3VsZFRocm93KQotICAgIHsKLSAgICAgICAg
UmVnRXhwTWF0Y2hlc0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJlZ0V4cE1hdGNoZXNBcnJh
eSo+KGNlbGwpOwotICAgICAgICB0aGlzT2JqZWN0LT5yZWlmeUFsbFByb3BlcnRpZXNJZk5lY2Vz
c2FyeShleGVjKTsKLSAgICAgICAgSlNBcnJheTo6cHV0QnlJbmRleCh0aGlzT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHYsIHNob3VsZFRocm93KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYm9v
bCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSkKLSAgICB7Ci0gICAgICAgIFJlZ0V4cE1hdGNoZXNBcnJheSogdGhp
c09iamVjdCA9IGpzQ2FzdDxSZWdFeHBNYXRjaGVzQXJyYXkqPihjZWxsKTsKLSAgICAgICAgdGhp
c09iamVjdC0+cmVpZnlBbGxQcm9wZXJ0aWVzSWZOZWNlc3NhcnkoZXhlYyk7Ci0gICAgICAgIHJl
dHVybiBKU0FycmF5OjpkZWxldGVQcm9wZXJ0eSh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWUpOwotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGRlbGV0ZVByb3BlcnR5QnlJbmRleChKU0Nl
bGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lKQotICAgIHsK
LSAgICAgICAgUmVnRXhwTWF0Y2hlc0FycmF5KiB0aGlzT2JqZWN0ID0ganNDYXN0PFJlZ0V4cE1h
dGNoZXNBcnJheSo+KGNlbGwpOwotICAgICAgICB0aGlzT2JqZWN0LT5yZWlmeUFsbFByb3BlcnRp
ZXNJZk5lY2Vzc2FyeShleGVjKTsKLSAgICAgICAgcmV0dXJuIEpTQXJyYXk6OmRlbGV0ZVByb3Bl
cnR5QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUpOwotICAgIH0KLQotICAg
IHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgYXJyLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSA9
IEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMpCi0gICAgewotICAgICAgICBSZWdFeHBNYXRjaGVz
QXJyYXkqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8UmVnRXhwTWF0Y2hlc0FycmF5Kj4ob2JqZWN0KTsK
LSAgICAgICAgdGhpc09iamVjdC0+cmVpZnlBbGxQcm9wZXJ0aWVzSWZOZWNlc3NhcnkoZXhlYyk7
Ci0gICAgICAgIEpTQXJyYXk6OmdldE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywg
YXJyLCBtb2RlKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgYm9vbCBzaG91bGRUaHJv
dykKLSAgICB7Ci0gICAgICAgIFJlZ0V4cE1hdGNoZXNBcnJheSogdGhpc09iamVjdCA9IGpzQ2Fz
dDxSZWdFeHBNYXRjaGVzQXJyYXkqPihvYmplY3QpOwotICAgICAgICB0aGlzT2JqZWN0LT5yZWlm
eUFsbFByb3BlcnRpZXNJZk5lY2Vzc2FyeShleGVjKTsKLSAgICAgICAgcmV0dXJuIEpTQXJyYXk6
OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9y
LCBzaG91bGRUaHJvdyk7Ci0gICAgfQotCi0gICAgdm9pZCByZWlmeUFsbFByb3BlcnRpZXMoRXhl
Y1N0YXRlKik7Ci0gICAgdm9pZCByZWlmeU1hdGNoUHJvcGVydHkoRXhlY1N0YXRlKik7Ci0KLSAg
ICBXcml0ZUJhcnJpZXI8SlNTdHJpbmc+IG1faW5wdXQ7Ci0gICAgV3JpdGVCYXJyaWVyPFJlZ0V4
cD4gbV9yZWdFeHA7Ci0gICAgTWF0Y2hSZXN1bHQgbV9yZXN1bHQ7Ci0gICAgUmVpZmllZFN0YXRl
IG1fc3RhdGU7Ci19OwotCi1pbmxpbmUgYm9vbCBpc1JlZ0V4cE1hdGNoZXNBcnJheShKU1ZhbHVl
IHZhbHVlKQotewotICAgIHJldHVybiB2YWx1ZS5pc0NlbGwoKSAmJiB2YWx1ZS5hc0NlbGwoKS0+
Y2xhc3NJbmZvKCkgPT0gUmVnRXhwTWF0Y2hlc0FycmF5OjppbmZvKCk7Ci19CitKU0FycmF5KiBj
cmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkoRXhlY1N0YXRlKiwgSlNTdHJpbmcqLCBSZWdFeHAqLCBN
YXRjaFJlc3VsdCk7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cE9iamVjdC5jcHAKaW5kZXggOWIxNzNmYy4uNWI5MWFjMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCkBAIC0zMDIsNyArMzAyLDcgQEAg
dm9pZCBSZWdFeHBPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwKIEpTVmFsdWUgUmVnRXhwT2JqZWN0OjpleGVjKEV4ZWNT
dGF0ZSogZXhlYywgSlNTdHJpbmcqIHN0cmluZykKIHsKICAgICBpZiAoTWF0Y2hSZXN1bHQgcmVz
dWx0ID0gbWF0Y2goZXhlYywgc3RyaW5nKSkKLSAgICAgICAgcmV0dXJuIFJlZ0V4cE1hdGNoZXNB
cnJheTo6Y3JlYXRlKGV4ZWMsIHN0cmluZywgcmVnRXhwKCksIHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkoZXhlYywgc3RyaW5nLCByZWdFeHAoKSwgcmVz
dWx0KTsKICAgICByZXR1cm4ganNOdWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IDBlMzlhMzkuLjA0ZDJiZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBl
LmNwcApAQCAtODY0LDcgKzg2NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jTWF0Y2goRXhlY1N0YXRlKiBleGVjKQogICAgIE1hdGNoUmVzdWx0IHJlc3Vs
dCA9IHJlZ0V4cENvbnN0cnVjdG9yLT5wZXJmb3JtTWF0Y2goKnZtLCByZWdFeHAsIHN0cmluZywg
cywgMCk7CiAgICAgLy8gY2FzZSB3aXRob3V0ICdnJyBmbGFnIGlzIGhhbmRsZWQgbGlrZSBSZWdF
eHAucHJvdG90eXBlLmV4ZWMKICAgICBpZiAoIWdsb2JhbCkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQgPyBSZWdFeHBNYXRjaGVzQXJyYXk6OmNyZWF0ZShleGVjLCBzdHJp
bmcsIHJlZ0V4cCwgcmVzdWx0KSA6IGpzTnVsbCgpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQgPyBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkoZXhlYywgc3RyaW5nLCBy
ZWdFeHAsIHJlc3VsdCkgOiBqc051bGwoKSk7CiAKICAgICAvLyByZXR1cm4gYXJyYXkgb2YgbWF0
Y2hlcwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGxpc3Q7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>