<?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>34768</bug_id>
          
          <creation_ts>2010-02-09 11:30:33 -0800</creation_ts>
          <short_desc>[V8] Remove references to V8ClassIndex when possible</short_desc>
          <delta_ts>2010-03-10 14:56:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>33477</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>189087</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-02-09 11:30:33 -0800</bug_when>
    <thetext>There are a bunch of places where we pass around V8ClassIndex::V8WrapperType parameters where we could (and probably should) be passing around other things that don&apos;t require a later lookup.  Usually this means passing a v8::Handle&lt;v8::FunctionTemplate&gt; instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189089</commentid>
    <comment_count>1</comment_count>
      <attachid>48430</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-02-09 11:31:12 -0800</bug_when>
    <thetext>Created attachment 48430
Remove V8ClassIndex from configureTemplate() and lookupDOMWrapper()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189113</commentid>
    <comment_count>2</comment_count>
      <attachid>48430</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-02-09 12:07:18 -0800</bug_when>
    <thetext>Comment on attachment 48430
Remove V8ClassIndex from configureTemplate() and lookupDOMWrapper()

Great.  I&apos;ve never liked V8ClassIndex.  Seemed so wrong to have a global list of classes like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189514</commentid>
    <comment_count>3</comment_count>
      <attachid>48430</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-02-10 16:10:28 -0800</bug_when>
    <thetext>Comment on attachment 48430
Remove V8ClassIndex from configureTemplate() and lookupDOMWrapper()

http://trac.webkit.org/changeset/54629</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198360</commentid>
    <comment_count>4</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-03-10 14:56:49 -0800</bug_when>
    <thetext>I think most of the unnecessary references to V8ClassIndex have been removed, and the rest are feasible to take care of in the patch that deletes V8Index.h.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48430</attachid>
            <date>2010-02-09 11:31:12 -0800</date>
            <delta_ts>2010-02-10 16:10:28 -0800</delta_ts>
            <desc>Remove V8ClassIndex from configureTemplate() and lookupDOMWrapper()</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>21562</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudEltcGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudEltcGwuY3BwCShyZXZpc2lv
biA1NDU2MSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudEltcGwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5Myw3IEBACiAgICAgLy8gU2V0IHVwIHRoZSBET00gd2lu
ZG93IGFzIHRoZSBwcm90b3R5cGUgb2YgdGhlIG5ldyBnbG9iYWwgb2JqZWN0LgogICAgIHY4OjpI
YW5kbGU8djg6OkNvbnRleHQ+IHdpbmRvd0NvbnRleHQgPSBWOFByb3h5Ojpjb250ZXh0KGZyYW1l
KTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvd0dsb2JhbCA9IHdpbmRvd0NvbnRl
eHQtPkdsb2JhbCgpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93V3JhcHBlciA9
IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywg
d2luZG93R2xvYmFsKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvd1dyYXBwZXIg
PSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhET01XaW5kb3c6OkdldFRlbXBsYXRl
KCksIHdpbmRvd0dsb2JhbCk7CiAKICAgICBBU1NFUlQoVjhET01XaW5kb3c6OnRvTmF0aXZlKHdp
bmRvd1dyYXBwZXIpID09IGZyYW1lLT5kb21XaW5kb3coKSk7CiAKSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwko
cmV2aXNpb24gNTQ1NjEpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDItMDkgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVcGRhdGUgY2FsbCB0byBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoKSB0byBt
YXRjaCBuZXcgcGFyYW1ldGVycy4KKworICAgICAgICAqIHNyYy9EZWJ1Z2dlckFnZW50SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkRlYnVnZ2VyQWdlbnRJbXBsOjpjcmVhdGVVdGlsaXR5Q29u
dGV4dCk6CisKIDIwMTAtMDItMDkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRm9sbG93LXVwIGZpeC4KSW5kZXg6IFdlYkNvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NDU2
MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEgQEAK
KzIwMTAtMDItMDkgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgVjhET01XcmFw
cGVyOjpsb29rdXBET01XcmFwcGVyKCkgYW5kIGNvbmZpZ3VyZVRlbXBsYXRlKCkKKyAgICAgICAg
dG8gbm90IHVzZSBWOENsYXNzSW5kZXguCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEp
CisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uZmln
dXJlVGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0VGFyZ2V0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6Y2xl
YXJGb3JOYXZpZ2F0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjpzZXRIaWRkZW5XaW5kb3dSZWZlcmVu
Y2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6VjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9WOFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OnJldHJpZXZlV2lu
ZG93KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5OjpyZXRy
aWV2ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpldmVudEFjY2Vzc29yR2V0dGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpldmVudEFjY2Vzc29yU2V0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93Ojp0b1N0cmluZ0NhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4RE9NV2luZG93OjpuYW1lZFNlY3VyaXR5Q2hlY2spOgorICAgICAgICAoV2Vi
Q29yZTo6VjhET01XaW5kb3c6OmluZGV4ZWRTZWN1cml0eUNoZWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246OnJlbG9hZEFjY2Vzc29yR2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246OnJlcGxhY2VBY2Nlc3NvckdldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjphc3NpZ25BY2Nlc3NvckdldHRlcik6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4TWVzc2FnZUV2ZW50Ojppbml0TWVzc2FnZUV2ZW50Q2FsbGJhY2sp
OgorCiAyMDEwLTAyLTA5ICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJtYW5uLgpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCShyZXZpc2lvbiA1NDU2MSkKKysrIFdlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0JKHdvcmtpbmcgY29weSkKQEAg
LTU0OCw3ICs1NDgsNiBAQAogewogICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OwogICAgIG15ICRk
YXRhTm9kZSA9IHNoaWZ0OwotICAgIG15ICRjbGFzc0luZGV4ID0gc2hpZnQ7CiAgICAgbXkgJGlt
cGxDbGFzc05hbWUgPSBzaGlmdDsKIAogICAgIG15ICRjbGFzc05hbWUgPSAiVjgiIC4gJGRhdGFO
b2RlLT5uYW1lOwpAQCAtNTY2LDcgKzU2NSw3IEBACiAgICAgSU5DX1NUQVRTKFwiRE9NLiRpbXBs
Q2xhc3NOYW1lLiRmdW5jTmFtZS5fZ2V0XCIpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZV90ZW1wbGF0ZSA9CiAgICAgICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KCRuZXdUZW1wbGF0ZVN0cmluZyk7Ci0g
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERP
TVdyYXBwZXIoVjhDbGFzc0luZGV4OjokY2xhc3NJbmRleCwgaW5mby5UaGlzKCkpOworICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFw
cGVyKCR7Y2xhc3NOYW1lfTo6R2V0VGVtcGxhdGUoKSwgaW5mby5UaGlzKCkpOwogICAgIGlmICho
b2xkZXIuSXNFbXB0eSgpKSB7CiAgICAgICAvLyBjYW4gb25seSByZWFjaCBoZXJlIGJ5ICdvYmpl
Y3QuX19wcm90b19fLmZ1bmMnLCBhbmQgaXQgc2hvdWxkIHBhc3NlZAogICAgICAgLy8gZG9tYWlu
IHNlY3VyaXR5IGNoZWNrIGFscmVhZHkKQEAgLTYyNSw3ICs2MjQsNiBAQAogewogICAgIG15ICRh
dHRyaWJ1dGUgPSBzaGlmdDsKICAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKLSAgICBteSAkY2xh
c3NJbmRleCA9IHNoaWZ0OwogICAgIG15ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7CiAgICAgbXkg
JGludGVyZmFjZU5hbWUgPSBzaGlmdDsKIApAQCAtNjgzLDE0ICs2ODEsMTQgQEAKICAgICAgICAg
fQogCiAgICAgfSBlbHNpZiAoJGF0dHJFeHQtPnsidjhPblByb3RvIn0gfHwgJGF0dHJFeHQtPnsi
VjhEaXNhbGxvd1NoYWRvd2luZyJ9KSB7Ci0gICAgICBpZiAoJGNsYXNzSW5kZXggZXEgIkRPTVdJ
TkRPVyIpIHsKKyAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgewogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBob2xkZXIgPSBpbmZvLkhvbGRlcigpOwogRU5ECiAgICAgICB9IGVsc2UgewogICAg
ICAgICAjIHBlcmZvcm0gbG9va3VwIGZpcnN0CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVj
bHMsIDw8RU5EKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9NV3Jh
cHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOENsYXNzSW5kZXg6OiRjbGFzc0luZGV4LCBpbmZvLlRo
aXMoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6
Omxvb2t1cERPTVdyYXBwZXIoVjgke2ludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZSgpLCBpbmZv
LlRoaXMoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHJldHVybiB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4oKTsKIEVORAogICAgICAgfQpAQCAtODU4LDcgKzg1Niw2IEBACiB7CiAgICAgbXkg
JGF0dHJpYnV0ZSA9IHNoaWZ0OwogICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OwotICAgIG15ICRj
bGFzc0luZGV4ID0gc2hpZnQ7CiAgICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsKICAgICBt
eSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0OwogCkBAIC04ODAsMTQgKzg3NywxNCBAQAogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICRpbXBsQ2xhc3NOYW1lKiBpbXAgPSAmaW1w
X2luc3RhbmNlO1xuIik7CiAKICAgICB9IGVsc2lmICgkYXR0ckV4dC0+eyJ2OE9uUHJvdG8ifSkg
ewotICAgICAgaWYgKCRjbGFzc0luZGV4IGVxICJET01XSU5ET1ciKSB7CisgICAgICBpZiAoJGlu
dGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRE
ZWNscywgPDxFTkQpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5I
b2xkZXIoKTsKIEVORAogICAgICAgfSBlbHNlIHsKICAgICAgICAgIyBwZXJmb3JtIGxvb2t1cCBm
aXJzdAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7Ci0gICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIo
VjhDbGFzc0luZGV4OjokY2xhc3NJbmRleCwgaW5mby5UaGlzKCkpOworICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gaG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4JHtp
bnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoKSwgaW5mby5UaGlzKCkpOwogICAgIGlmIChob2xk
ZXIuSXNFbXB0eSgpKSByZXR1cm47CiBFTkQKICAgICAgIH0KQEAgLTE1MjIsNyArMTUxOSw3IEBA
CiAgICAgICAgICMgR2VuZXJhdGUgdGhlIGFjY2Vzc29yLgogICAgICAgICBpZiAoISgkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXR0ZXIifSB8fAog
ICAgICAgICAgICAgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
VjhDdXN0b21HZXR0ZXIifSkpIHsKLSAgICAgICAgICAgIEdlbmVyYXRlTm9ybWFsQXR0ckdldHRl
cigkYXR0cmlidXRlLCAkZGF0YU5vZGUsICRjbGFzc0luZGV4LCAkaW1wbENsYXNzTmFtZSwgJGlu
dGVyZmFjZU5hbWUpOworICAgICAgICAgICAgR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyKCRhdHRy
aWJ1dGUsICRkYXRhTm9kZSwgJGltcGxDbGFzc05hbWUsICRpbnRlcmZhY2VOYW1lKTsKICAgICAg
ICAgfQogICAgICAgICBpZiAoISgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDdXN0b21TZXR0ZXIifSB8fAogICAgICAgICAgICAgJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhDdXN0b21TZXR0ZXIifSkpIHsKQEAgLTE1MzAs
NyArMTUyNyw3IEBACiAgICAgICAgICAgICAgICAgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiRXh0ZW5kc0RPTUdsb2JhbE9iamVjdCJ9IHx8IGRpZSAiUmVwbGFjZWFibGUgYXR0cmli
dXRlIGNhbiBvbmx5IGJlIHVzZWQgaW4gaW50ZXJmYWNlIHRoYXQgZGVmaW5lcyBFeHRlbmRzRE9N
R2xvYmFsT2JqZWN0IGF0dHJpYnV0ZSEiOwogICAgICAgICAgICAgICAgICMgR2VuZXJhdGVSZXBs
YWNlYWJsZUF0dHJTZXR0ZXIoJGltcGxDbGFzc05hbWUpOwogICAgICAgICAgICAgfSBlbHNpZiAo
JGF0dHJpYnV0ZS0+dHlwZSAhfiAvXnJlYWRvbmx5LyAmJiAhJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhSZWFkT25seSJ9KSB7Ci0gICAgICAgICAgICAgICAg
R2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVyKCRhdHRyaWJ1dGUsICRkYXRhTm9kZSwgJGNsYXNzSW5k
ZXgsICRpbXBsQ2xhc3NOYW1lLCAkaW50ZXJmYWNlTmFtZSk7CisgICAgICAgICAgICAgICAgR2Vu
ZXJhdGVOb3JtYWxBdHRyU2V0dGVyKCRhdHRyaWJ1dGUsICRkYXRhTm9kZSwgJGltcGxDbGFzc05h
bWUsICRpbnRlcmZhY2VOYW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAg
LTE1NjEsNyArMTU1OCw3IEBACiAgICAgICAgICMgZ2VuZXJhdGUgYW4gYWNjZXNzIGdldHRlciB0
aGF0IHJldHVybnMgZGlmZmVyZW50IGZ1bmN0aW9uIG9iamVjdHMKICAgICAgICAgIyBmb3IgZGlm
ZmVyZW50IGNhbGxpbmcgY29udGV4dC4KICAgICAgICAgaWYgKCgkZGF0YU5vZGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDaGVja0RvbWFpblNlY3VyaXR5In0gfHwgKCRpbnRlcmZhY2VOYW1lIGVx
ICJET01XaW5kb3ciKSkgJiYgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJEb05vdENoZWNrRG9tYWluU2VjdXJpdHkifSkgewotICAgICAgICAgICAgR2VuZXJhdGVE
b21haW5TYWZlRnVuY3Rpb25HZXR0ZXIoJGZ1bmN0aW9uLCAkZGF0YU5vZGUsICRjbGFzc0luZGV4
LCAkaW1wbENsYXNzTmFtZSk7CisgICAgICAgICAgICBHZW5lcmF0ZURvbWFpblNhZmVGdW5jdGlv
bkdldHRlcigkZnVuY3Rpb24sICRkYXRhTm9kZSwgJGltcGxDbGFzc05hbWUpOwogICAgICAgICB9
CiAgICAgfQogCkBAIC0xNjg5LDIwICsxNjg2LDIzIEBACiAgICAgfQogCiAgICAgIyBmaW5kIHRo
ZSBzdXBlciBkZXNjcmlwdG9yCi0gICAgbXkgJHBhcmVudENsYXNzSW5kZXggPSAiSU5WQUxJRF9D
TEFTU19JTkRFWCI7CisgICAgbXkgJHBhcmVudENsYXNzVGVtcGxhdGUgPSAiIjsKICAgICBmb3Jl
YWNoIChAeyRkYXRhTm9kZS0+cGFyZW50c30pIHsKICAgICAgICAgbXkgJHBhcmVudCA9ICRjb2Rl
R2VuZXJhdG9yLT5TdHJpcE1vZHVsZSgkXyk7CiAgICAgICAgIGlmICgkcGFyZW50IGVxICJFdmVu
dFRhcmdldCIpIHsgbmV4dDsgfQogICAgICAgICAkaW1wbEluY2x1ZGVzeyJWOCR7cGFyZW50fS5o
In0gPSAxOwotICAgICAgICAkcGFyZW50Q2xhc3NJbmRleCA9IHVjKCRjb2RlR2VuZXJhdG9yLT5T
dHJpcE1vZHVsZSgkcGFyZW50KSk7CisgICAgICAgICRwYXJlbnRDbGFzc1RlbXBsYXRlID0gIlY4
IiAuICRwYXJlbnQgLiAiOjpHZXRUZW1wbGF0ZSgpIjsKICAgICAgICAgbGFzdDsKICAgICB9Cisg
ICAgaWYgKCEkcGFyZW50Q2xhc3NUZW1wbGF0ZSkgeworICAgICAgICAkcGFyZW50Q2xhc3NUZW1w
bGF0ZSA9ICJ2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSI7CisgICAgfQog
ICAgIAogICAgICMgR2VuZXJhdGUgdGhlIHRlbXBsYXRlIGNvbmZpZ3VyYXRpb24gbWV0aG9kCiAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICA8PEVORCk7CiBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZSR7Y2xhc3NOYW1lfVRlbXBsYXRlKHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjKSB7CiAgIHY4OjpMb2NhbDx2ODo6U2ln
bmF0dXJlPiBkZWZhdWx0X3NpZ25hdHVyZSA9IGNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsIFwiJHtp
bnRlcmZhY2VOYW1lfVwiLAotICAgICAgVjhDbGFzc0luZGV4OjokcGFyZW50Q2xhc3NJbmRleCwg
Vjgke2ludGVyZmFjZU5hbWV9OjppbnRlcm5hbEZpZWxkQ291bnQsCisgICAgICAkcGFyZW50Q2xh
c3NUZW1wbGF0ZSwgVjgke2ludGVyZmFjZU5hbWV9OjppbnRlcm5hbEZpZWxkQ291bnQsCiBFTkQK
ICAgICAjIFNldCB1cCBvdXIgYXR0cmlidXRlcyBpZiB3ZSBoYXZlIHRoZW0KICAgICBpZiAoJGhh
c19hdHRyaWJ1dGVzKSB7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCShy
ZXZpc2lvbiA1NDU2MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjM3LDcgKzIzNyw3IEBACiAKICAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGdsb2JhbCA9IGNvbnRleHQtPkdsb2JhbCgpOwogICAgIC8vIExvb2sgZm9yIHJlYWwg
RE9NIHdyYXBwZXIuCi0gICAgZ2xvYmFsID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVy
KFY4Q2xhc3NJbmRleDo6RE9NV0lORE9XLCBnbG9iYWwpOworICAgIGdsb2JhbCA9IFY4RE9NV3Jh
cHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoKSwgZ2xvYmFs
KTsKICAgICBBU1NFUlQoIWdsb2JhbC5Jc0VtcHR5KCkpOwogICAgIEFTU0VSVChnbG9iYWwtPkdl
dEludGVybmFsRmllbGQoaW50ZXJuYWxJbmRleCktPklzVW5kZWZpbmVkKCkpOwogICAgIGdsb2Jh
bC0+U2V0SW50ZXJuYWxGaWVsZChpbnRlcm5hbEluZGV4LCBqc09iamVjdCk7CkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvdjgvVjhQcm94eS5jcHAJKHJldmlzaW9uIDU0NTYxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92
OC9WOFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAwLDcgKzUwMCw3IEBACiB7CiAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnbG9iYWwgPSBjb250ZXh0LT5HbG9iYWwoKTsKICAgICBB
U1NFUlQoIWdsb2JhbC5Jc0VtcHR5KCkpOwotICAgIGdsb2JhbCA9IFY4RE9NV3JhcHBlcjo6bG9v
a3VwRE9NV3JhcHBlcihWOENsYXNzSW5kZXg6OkRPTVdJTkRPVywgZ2xvYmFsKTsKKyAgICBnbG9i
YWwgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhET01XaW5kb3c6OkdldFRlbXBs
YXRlKCksIGdsb2JhbCk7CiAgICAgQVNTRVJUKCFnbG9iYWwuSXNFbXB0eSgpKTsKICAgICByZXR1
cm4gVjhET01XaW5kb3c6OnRvTmF0aXZlKGdsb2JhbCk7CiB9CkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NV3JhcHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XcmFwcGVyLmgJKHJldmlzaW9uIDU0NTYxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9W
OERPTVdyYXBwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDkgKzExNyw5IEBACiAgICAgICAg
ICAgICBvYmplY3QtPlNldEludGVybmFsRmllbGQodjhET01XcmFwcGVyVHlwZUluZGV4LCB2ODo6
SW50ZWdlcjo6TmV3KHR5cGUpKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGxvb2t1cERPTVdyYXBwZXIoVjhDbGFzc0luZGV4OjpWOFdyYXBwZXJU
eXBlIHR5cGUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQorICAgICAgICBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBsb29rdXBET01XcmFwcGVyKHY4OjpIYW5kbGU8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IGZ1bmN0aW9uVGVtcGxhdGUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
b2JqZWN0KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gb2JqZWN0LklzRW1wdHkoKSA/
IG9iamVjdCA6IG9iamVjdC0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOENsYXNzSW5k
ZXg6OmdldFRlbXBsYXRlKHR5cGUpKTsKKyAgICAgICAgICAgIHJldHVybiBvYmplY3QuSXNFbXB0
eSgpID8gb2JqZWN0IDogb2JqZWN0LT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKGZ1bmN0
aW9uVGVtcGxhdGUpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIFY4Q2xhc3NJbmRleDo6
VjhXcmFwcGVyVHlwZSBkb21XcmFwcGVyVHlwZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KTsKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAkocmV2aXNpb24gNTQ1
NjEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05NCw3ICs5NCw3IEBACiAgICAgRnJhbWUqIHRhcmdldCA9IDA7CiAgICAgc3dp
dGNoIChWOENsYXNzSW5kZXg6OkZyb21JbnQoZGF0YS0+SW50MzJWYWx1ZSgpKSkgewogICAgIGNh
c2UgVjhDbGFzc0luZGV4OjpET01XSU5ET1c6IHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiB3aW5kb3cgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhDbGFzc0luZGV4
OjpET01XSU5ET1csIGhvc3QpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRv
dyA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOERPTVdpbmRvdzo6R2V0VGVtcGxh
dGUoKSwgaG9zdCk7CiAgICAgICAgIGlmICh3aW5kb3cuSXNFbXB0eSgpKQogICAgICAgICAgICAg
cmV0dXJuIHRhcmdldDsKIApAQCAtMTk2LDcgKzE5Niw3IEBACiAgICAgICAgIGNsZWFyRG9jdW1l
bnRXcmFwcGVyQ2FjaGUoKTsKIAogICAgICAgICAvLyBUdXJuIG9uIGFjY2VzcyBjaGVjayBvbiB0
aGUgb2xkIERPTVdpbmRvdyB3cmFwcGVyLgotICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhDbGFzc0luZGV4OjpE
T01XSU5ET1csIG1fZ2xvYmFsKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFw
cGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4RE9NV2luZG93OjpHZXRUZW1w
bGF0ZSgpLCBtX2dsb2JhbCk7CiAgICAgICAgIEFTU0VSVCghd3JhcHBlci5Jc0VtcHR5KCkpOwog
ICAgICAgICB3cmFwcGVyLT5UdXJuT25BY2Nlc3NDaGVjaygpOwogCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCShyZXZp
c2lvbiA1NDU2MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlv
blByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDcgKzEwNyw3IEBACiAgICAgICAgIHJl
dHVybiAwOwogICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4
dDo6R2V0Q3VycmVudCgpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2xvYmFsID0gY29u
dGV4dC0+R2xvYmFsKCk7Ci0gICAgZ2xvYmFsID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFw
cGVyKFY4Q2xhc3NJbmRleDo6V09SS0VSQ09OVEVYVCwgZ2xvYmFsKTsKKyAgICBnbG9iYWwgPSBW
OERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhXb3JrZXJDb250ZXh0OjpHZXRUZW1wbGF0
ZSgpLCBnbG9iYWwpOwogICAgIC8vIFJldHVybiAwIGlmIHRoZSBjdXJyZW50IGV4ZWN1dGluZyBj
b250ZXh0IGlzIG5vdCB0aGUgd29ya2VyIGNvbnRleHQuCiAgICAgaWYgKGdsb2JhbC5Jc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiAwOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRp
bmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAko
cmV2aXNpb24gNTQ1NjEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQzNyw5ICs0MzcsOSBAQAogICAgIHJldHVybiB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyhyZXN1bHQpOwogfSAgICAgICAgCiAKLXY4OjpM
b2NhbDx2ODo6U2lnbmF0dXJlPiBjb25maWd1cmVUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT5kZXNjLAordjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGNvbmZpZ3Vy
ZVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmludGVy
ZmFjZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVjhD
bGFzc0luZGV4OjpWOFdyYXBwZXJUeXBlIHBhcmVudENsYXNzSW5kZXgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IHBhcmVudENsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBmaWVsZENvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUqIGF0dHJpYnV0ZXMsIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBhdHRyaWJ1dGVDb3Vu
dCwKQEAgLTQ0OSw4ICs0NDksOCBAQAogICAgIGRlc2MtPlNldENsYXNzTmFtZSh2ODo6U3RyaW5n
OjpOZXcoaW50ZXJmYWNlTmFtZSkpOwogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+
IGluc3RhbmNlID0gZGVzYy0+SW5zdGFuY2VUZW1wbGF0ZSgpOwogICAgIGluc3RhbmNlLT5TZXRJ
bnRlcm5hbEZpZWxkQ291bnQoZmllbGRDb3VudCk7Ci0gICAgaWYgKHBhcmVudENsYXNzSW5kZXgp
Ci0gICAgICAgIGRlc2MtPkluaGVyaXQoVjhDbGFzc0luZGV4OjpnZXRUZW1wbGF0ZShwYXJlbnRD
bGFzc0luZGV4KSk7CisgICAgaWYgKCFwYXJlbnRDbGFzcy5Jc0VtcHR5KCkpCisgICAgICAgIGRl
c2MtPkluaGVyaXQocGFyZW50Q2xhc3MpOwogICAgIGlmIChhdHRyaWJ1dGVDb3VudCkKICAgICAg
ICAgYmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVzKGluc3RhbmNlLCBkZXNjLT5Qcm90b3R5cGVUZW1w
bGF0ZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcywgYXR0
cmlidXRlQ291bnQpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5k
b3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNpb24gNTQ1NjEpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw3
ICsxNzIsNyBAQAogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OmV2ZW50QWNj
ZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCiB7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERP
TVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhDbGFzc0luZGV4OjpET01XSU5ET1csIGluZm8u
VGhpcygpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBl
cjo6bG9va3VwRE9NV3JhcHBlcihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoKSwgaW5mby5UaGlz
KCkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOwogCkBAIC0xOTMsNyArMTkzLDcgQEAKIAogdm9pZCBWOERPTVdpbmRvdzo6ZXZlbnRB
Y2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIo
VjhDbGFzc0luZGV4OjpET01XSU5ET1csIGluZm8uVGhpcygpKTsKKyAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOERPTVdp
bmRvdzo6R2V0VGVtcGxhdGUoKSwgaW5mby5UaGlzKCkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTQ4OSw3ICs0ODksNyBAQAogdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4RE9NV2luZG93Ojp0b1N0cmluZ0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uRE9NV2luZG93LnRvU3RyaW5nKCkiKTsK
LSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGRvbVdyYXBwZXIgPSBWOERPTVdyYXBwZXI6Omxv
b2t1cERPTVdyYXBwZXIoVjhDbGFzc0luZGV4OjpET01XSU5ET1csIGFyZ3MuVGhpcygpKTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGRvbVdyYXBwZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1
cERPTVdyYXBwZXIoVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCksIGFyZ3MuVGhpcygpKTsKICAg
ICBpZiAoZG9tV3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBhcmdzLlRoaXMoKS0+
T2JqZWN0UHJvdG9Ub1N0cmluZygpOwogICAgIHJldHVybiBkb21XcmFwcGVyLT5PYmplY3RQcm90
b1RvU3RyaW5nKCk7CkBAIC04ODEsNyArODgxLDcgQEAKIGJvb2wgVjhET01XaW5kb3c6Om5hbWVk
U2VjdXJpdHlDaGVjayh2ODo6TG9jYWw8djg6Ok9iamVjdD4gaG9zdCwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4ga2V5LCB2ODo6QWNjZXNzVHlwZSB0eXBlLCB2ODo6TG9jYWw8djg6OlZhbHVlPiBkYXRh
KQogewogICAgIEFTU0VSVChWOENsYXNzSW5kZXg6OkZyb21JbnQoZGF0YS0+SW50MzJWYWx1ZSgp
KSA9PSBWOENsYXNzSW5kZXg6OkRPTVdJTkRPVyk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiB3aW5kb3cgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhDbGFzc0luZGV4OjpE
T01XSU5ET1csIGhvc3QpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93ID0gVjhE
T01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZSgpLCBo
b3N0KTsKICAgICBpZiAod2luZG93LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOyAg
Ly8gdGhlIGZyYW1lIGlzIGdvbmUuCiAKQEAgLTkwNyw3ICs5MDcsNyBAQAogYm9vbCBWOERPTVdp
bmRvdzo6aW5kZXhlZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3QsIHVp
bnQzMl90IGluZGV4LCB2ODo6QWNjZXNzVHlwZSB0eXBlLCB2ODo6TG9jYWw8djg6OlZhbHVlPiBk
YXRhKQogewogICAgIEFTU0VSVChWOENsYXNzSW5kZXg6OkZyb21JbnQoZGF0YS0+SW50MzJWYWx1
ZSgpKSA9PSBWOENsYXNzSW5kZXg6OkRPTVdJTkRPVyk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiB3aW5kb3cgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhDbGFzc0luZGV4
OjpET01XSU5ET1csIGhvc3QpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93ID0g
VjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZSgp
LCBob3N0KTsKICAgICBpZiAod2luZG93LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkBAIC05NDMsNyArOTQzLDcgQEAKICAgICAvLyBuZWNlc3NhcmlseSB0aGUgZmlyc3QgZ2xv
YmFsIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhhdCBET01XaW5kb3cuCiAgICAgdjg6OkhhbmRs
ZTx2ODo6Q29udGV4dD4gY3VycmVudENvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgp
OwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3VycmVudEdsb2JhbCA9IGN1cnJlbnRDb250
ZXh0LT5HbG9iYWwoKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvd1dyYXBwZXIg
PSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhDbGFzc0luZGV4OjpET01XSU5ET1cs
IGN1cnJlbnRHbG9iYWwpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd2luZG93V3JhcHBl
ciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOERPTVdpbmRvdzo6R2V0VGVtcGxh
dGUoKSwgY3VycmVudEdsb2JhbCk7CiAgICAgaWYgKCF3aW5kb3dXcmFwcGVyLklzRW1wdHkoKSkg
ewogICAgICAgICBpZiAoVjhET01XaW5kb3c6OnRvTmF0aXZlKHdpbmRvd1dyYXBwZXIpID09IHdp
bmRvdykKICAgICAgICAgICAgIHJldHVybiBjdXJyZW50R2xvYmFsOwpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAkocmV2
aXNpb24gNTQ1NjEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVu
dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAKICAgICBET01XaW5k
b3cqIHNvdXJjZUFyZyA9IDA7CiAgICAgaWYgKGFyZ3NbNl0tPklzT2JqZWN0KCkpIHsKICAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdChhcmdzWzZdKTsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3aW5kb3cg
PSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhDbGFzc0luZGV4OjpET01XSU5ET1cs
IHdyYXBwZXIpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdpbmRvdyA9IFY4RE9N
V3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoKSwgd3Jh
cHBlcik7CiAgICAgICAgIGlmICghd2luZG93LklzRW1wdHkoKSkKICAgICAgICAgICAgIHNvdXJj
ZUFyZyA9IFY4RE9NV2luZG93Ojp0b05hdGl2ZSh3aW5kb3cpOwogICAgIH0KSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lv
biA1NDU2MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEsNyArMjExLDcgQEAKIHsKICAgICBJTkNfU1RBVFMo
IkRPTS5Mb2NhdGlvbi5yZWxvYWQuX2dldCIpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0
aW9uOjpyZWxvYWRDYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4OjpTaWduYXR1
cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkpOwotICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gaG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4Q2xh
c3NJbmRleDo6TE9DQVRJT04sIGluZm8uVGhpcygpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOExvY2F0aW9uOjpH
ZXRUZW1wbGF0ZSgpLCBpbmZvLlRoaXMoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsK
ICAgICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9fXy5mdW5j
JywgYW5kIGl0IHNob3VsZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWluIHNlY3VyaXR5IGNoZWNr
IGFscmVhZHkKQEAgLTIyOSw3ICsyMjksNyBAQAogewogICAgIElOQ19TVEFUUygiRE9NLkxvY2F0
aW9uLnJlcGxhY2UuX2dldCIpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZXBs
YWNlQ2FsbGJhY2ssIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCB2ODo6U2lnbmF0dXJlOjpOZXco
VjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoKSkpKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOENsYXNzSW5kZXg6
OkxPQ0FUSU9OLCBpbmZvLlRoaXMoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xk
ZXIgPSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhMb2NhdGlvbjo6R2V0VGVtcGxh
dGUoKSwgaW5mby5UaGlzKCkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CiAgICAgICAg
IC8vIGNhbiBvbmx5IHJlYWNoIGhlcmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVuYycsIGFuZCBp
dCBzaG91bGQgcGFzc2VkCiAgICAgICAgIC8vIGRvbWFpbiBzZWN1cml0eSBjaGVjayBhbHJlYWR5
CkBAIC0yNDgsNyArMjQ4LDcgQEAKICAgICBJTkNfU1RBVFMoIkRPTS5Mb2NhdGlvbi5hc3NpZ24u
X2dldCIpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
cHJpdmF0ZVRlbXBsYXRlID0KICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjphc3NpZ25D
YWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExv
Y2F0aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkpOwotICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
aG9sZGVyID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4Q2xhc3NJbmRleDo6TE9D
QVRJT04sIGluZm8uVGhpcygpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9
IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOExvY2F0aW9uOjpHZXRUZW1wbGF0ZSgp
LCBpbmZvLlRoaXMoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKICAgICAgICAgLy8g
Y2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9fXy5mdW5jJywgYW5kIGl0IHNo
b3VsZCBwYXNzZWQKICAgICAgICAgLy8gZG9tYWluIHNlY3VyaXR5IGNoZWNrIGFscmVhZHkKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAkocmV2aXNpb24gNTQ1NjEpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4QmluZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw2IEBACiAj
aW5jbHVkZSAiTWF0aEV4dHJhcy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5j
bHVkZSAiVjhET01XcmFwcGVyLmgiCi0jaW5jbHVkZSAiVjhJbmRleC5oIgogCiAjaW5jbHVkZSA8
djguaD4KIApAQCAtMTYyLDggKzE2MSw4IEBACiAgICAgc3RydWN0IEJhdGNoZWRDYWxsYmFjazsK
ICAgICAKICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gY29uZmlndXJlVGVtcGxhdGUodjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICppbnRlcmZhY2VOYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWOENsYXNzSW5kZXg6
OlY4V3JhcHBlclR5cGUgcGFyZW50Q2xhc3NJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHBhcmVudENsYXNzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmllbGRDb3VudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSos
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
YXR0cmlidXRlQ291bnQsCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>