<?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>209894</bug_id>
          
          <creation_ts>2020-04-01 22:08:23 -0700</creation_ts>
          <short_desc>HTMLFormElement should use WeakPtr to keep track of its associated elements</short_desc>
          <delta_ts>2020-04-02 11:08:22 -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>Forms</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>koivisto</cc>
    
    <cc>mifenton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1636804</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-04-01 22:08:23 -0700</bug_when>
    <thetext>HTMLFormElement currently has raw pointers to FormAssociatedElement. Replace them with WeakPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636807</commentid>
    <comment_count>1</comment_count>
      <attachid>395244</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-04-01 22:19:50 -0700</bug_when>
    <thetext>Created attachment 395244
Uses WeakPtr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636923</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-04-02 09:50:23 -0700</bug_when>
    <thetext>Ping reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636927</commentid>
    <comment_count>3</comment_count>
      <attachid>395244</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-04-02 09:55:44 -0700</bug_when>
    <thetext>Comment on attachment 395244
Uses WeakPtr

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

&gt; Source/WebCore/html/HTMLFormElement.cpp:890
&gt; +        

Nit - extra newline here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636952</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-04-02 11:04:14 -0700</bug_when>
    <thetext>Committed r259393: &lt;https://trac.webkit.org/changeset/259393&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636954</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-02 11:05:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/61216706&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636955</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-04-02 11:07:29 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #3)
&gt; Comment on attachment 395244 [details]
&gt; Uses WeakPtr
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=395244&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLFormElement.cpp:890
&gt; &gt; +        
&gt; 
&gt; Nit - extra newline here.

Oh oops, I missed that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636956</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-04-02 11:08:22 -0700</bug_when>
    <thetext>Fixed that in https://trac.webkit.org/changeset/259394</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395244</attachid>
            <date>2020-04-01 22:19:50 -0700</date>
            <delta_ts>2020-04-02 09:55:44 -0700</delta_ts>
            <desc>Uses WeakPtr</desc>
            <filename>bug-209894-20200401221949.patch</filename>
            <type>text/plain</type>
            <size>23163</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTM3NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDIwLTA0LTAxICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEhUTUxGb3JtRWxlbWVudCBzaG91
bGQgdXNlIFdlYWtQdHIgdG8ga2VlcCB0cmFjayBvZiBpdHMgYXNzb2NpYXRlZCBlbGVtZW50cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5ODk0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZWQg
dGhlIHZlY3RvciBvZiByYXcgcG9pbnRlcnMgdG8gRm9ybUFzc29jaWF0ZWRFbGVtZW50IGluIEhU
TUxGb3JtRWxlbWVudCBieSBhIHZlY3RvcgorICAgICAgICBvZiBXZWFrUHRyIHRvIHRoZSBlcXVp
dmFsZW50IEhUTUxFbGVtZW50LiBNb3N0IG9mIGNvZGUgY2hhbmdlcyBiZWxvdyBhcmUgZHVlIHRv
IHR5cGUgb2YgZWxlbWVudHMKKyAgICAgICAgaW4gdGhlIHZlY3RvciBjaGFuZ2luZyBmcm9tIEZv
cm1Bc3NvY2lhdGVkRWxlbWVudCB0byBIVE1MRWxlbWVudCBhbmQgbmVlZGluZyBjb252ZXJzaW9u
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtb3ZlcyBjbGVhcmluZyBvZiBtX2Zvcm0gZnJv
bSB+Rm9ybUFzc29jaWF0ZWRFbGVtZW50IHRvIGl0cyBzdWJjbGFzc2VzJworICAgICAgICBkZXN0
cnVjdG9ycyBzaW5jZSB3ZSBuZWVkIHRvIG1ha2UgYSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwgdG8g
Z2V0IEhUTUxFbGVtZW50KiBvdXQgb2YKKyAgICAgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50LCB3
aGljaCB3b3VsZCBiZSB0b28gbGF0ZSBpbnNpZGUgfkZvcm1Bc3NvY2lhdGVkRWxlbWVudC4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgdGhlcmUgc2hvdWxkIGJlIG5vIGJlaGF2aW9yYWwg
Y2hhbmdlLgorCisgICAgICAgICogaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50Ojp+Rm9ybUFzc29jaWF0ZWRFbGVt
ZW50KTogQXNzZXJ0IHRoYXQgbV9mb3JtIGhhZCBiZWVuIGNsZWFyZWQKKyAgICAgICAgaW5zdGVh
ZCBvZiBjbGVhcmluZyBpdCBoZXJlLgorICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVt
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmNsZWFyRm9y
bSk6IEFkZGVkLgorICAgICAgICAqIGh0bWwvRm9ybUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cmVjb3JkRm9ybVN0cnVjdHVyZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6On5IVE1MRm9ybUNvbnRyb2xFbGVtZW50KTogTm93IGNhbGxzIGNsZWFyRm9ybS4gQWxzbyBy
ZW1vdmVkCisgICAgICAgIHRoZSByZWR1bmRhbnQgY29tbWVudC4KKyAgICAgICAgKiBodG1sL0hU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb246OnVuc2FmZUZvcm1Db250cm9sRWxlbWVudHMgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmNvcHlGb3JtQ29udHJv
bEVsZW1lbnRzVmVjdG9yIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uOjpjdXN0b21FbGVtZW50QWZ0ZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVu
dENhY2hlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
Lmg6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZvcm1FbGVtZW50Ojp+SFRNTEZvcm1FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGb3JtRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MRm9ybUVsZW1lbnQ6Omxlbmd0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Rm9ybUVsZW1lbnQ6OnRleHRGaWVsZFZhbHVlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRm9ybUVsZW1lbnQ6OnJlc2V0QXNzb2NpYXRlZEZvcm1Db250cm9sRWxlbWVudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxlbWVudEluZGV4V2l0aEZvcm1B
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpyZWdpc3RlckZv
cm1FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6cmVtb3ZlRm9y
bUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpjaGVja0ludmFs
aWRDb250cm9sc0FuZENvbGxlY3RVbmhhbmRsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZv
cm1FbGVtZW50Ojphc3NlcnRJdGVtQ2FuQmVJblBhc3ROYW1lc01hcCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnVuc2FmZUFzc29jaWF0ZWRFbGVtZW50cyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmNvcHlBc3NvY2lhdGVkRWxl
bWVudHNWZWN0b3IgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MT2JqZWN0RWxlbWVudDo6fkhUTUxPYmplY3RFbGVtZW50KTogQWRkZWQuIENhbGxzIGNsZWFy
Rm9ybS4KKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50Lmg6CisKIDIwMjAtMDQtMDEg
IEphY2sgTGVlICA8c2hpaGNoaWVoX2xlZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRo
ZSB1bm5lY2Vzc2FyeSBudWxsIGNoZWNrIGZvciBkb2N1bWVudApJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAkocmV2aXNpb24gMjU5Mzc2KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Rm9ybUFzc29j
aWF0ZWRFbGUKIAogRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojp+Rm9ybUFzc29jaWF0ZWRFbGVtZW50
KCkKIHsKLSAgICBzZXRGb3JtKG51bGxwdHIpOworICAgIFJFTEVBU0VfQVNTRVJUKCFtX2Zvcm0p
OwogfQogCiB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQo
RG9jdW1lbnQmKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxl
bWVudC5oCShyZXZpc2lvbiAyNTkzNzYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3Nv
Y2lhdGVkRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5Nyw3IEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoTm9kZTo6UmVtb3ZhbFR5cGUsIENvbnRh
aW5lck5vZGUmKTsKICAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGRE
b2N1bWVudCk7CiAKKyAgICB2b2lkIGNsZWFyRm9ybSgpIHsgc2V0Rm9ybShudWxscHRyKTsgfQog
ICAgIHZvaWQgc2V0Rm9ybShIVE1MRm9ybUVsZW1lbnQqKTsKICAgICB2b2lkIGZvcm1BdHRyaWJ1
dGVDaGFuZ2VkKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3Bw
CShyZXZpc2lvbiAyNTkzNzYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg2LDkgKzI4NiwxMCBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgcmVjb3JkRm9ybVN0cnVjdHVyZShjCiAgICAgYXV0byYgY29udHJvbHMgPSBmb3JtLnVuc2Fm
ZUFzc29jaWF0ZWRFbGVtZW50cygpOwogICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIFsiKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMCwgbmFtZWRDb250cm9scyA9IDA7IGkgPCBjb250cm9scy5z
aXplKCkgJiYgbmFtZWRDb250cm9scyA8IG5hbWVkQ29udHJvbHNUb0JlUmVjb3JkZWQ7ICsraSkg
ewotICAgICAgICBpZiAoIWNvbnRyb2xzW2ldLT5pc0Zvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0
ZSgpKQorICAgICAgICBhdXRvKiBmb3JtQXNzb2NpYXRlZEVsZW1lbnQgPSBjb250cm9sc1tpXS0+
YXNGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKTsKKyAgICAgICAgaWYgKCFmb3JtQXNzb2NpYXRlZEVs
ZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlKCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgUmVmUHRyPEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU+IGNv
bnRyb2wgPSBzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlKj4oY29u
dHJvbHNbaV0pOworICAgICAgICBSZWZQdHI8SFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0
ZT4gY29udHJvbCA9IHN0YXRpY19jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUq
Pihmb3JtQXNzb2NpYXRlZEVsZW1lbnQpOwogICAgICAgICBpZiAoIW93bmVyRm9ybUZvclN0YXRl
KCpjb250cm9sKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBBdG9tU3RyaW5nIG5h
bWUgPSBjb250cm9sLT5uYW1lKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDI1OTM3NikKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2
LDkgKzc2LDcgQEAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6SFRNTEZvcm1Db250cm9sRQogCiBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp+SFRNTEZvcm1Db250cm9sRWxlbWVudCgpCiB7Ci0gICAg
Ly8gVGhlIGNhbGxzIHdpbGxDaGFuZ2VGb3JtKCkgYW5kIGRpZENoYW5nZUZvcm0oKSBhcmUgdmly
dHVhbCwgd2Ugd2FudCB0aGUKLSAgICAvLyBmb3JtIHRvIGJlIHJlc2V0IHdoaWxlIHRoaXMgb2Jq
ZWN0IHN0aWxsIGV4aXN0cy4KLSAgICBzZXRGb3JtKG51bGxwdHIpOworICAgIGNsZWFyRm9ybSgp
OwogfQogCiBTdHJpbmcgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Zm9ybUVuY3R5cGUoKSBjb25z
dApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbi5jcHAJKHJldmlzaW9uIDI1OTM3NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwyMSArNjYs
MTQgQEAgT3B0aW9uYWw8VmFyaWFudDxSZWZQdHI8UmFkaW9Ob2RlTGlzdD4sIAogICAgIHJldHVy
biBWYXJpYW50PFJlZlB0cjxSYWRpb05vZGVMaXN0PiwgUmVmUHRyPEVsZW1lbnQ+PiB7IFJlZlB0
cjxSYWRpb05vZGVMaXN0PiB7IG93bmVyTm9kZSgpLnJhZGlvTm9kZUxpc3QobmFtZSkgfSB9Owog
fQogCi1jb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIEhUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uOjp1bnNhZmVGb3JtQ29udHJvbEVsZW1lbnRzKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gb3duZXJOb2RlKCkudW5zYWZlQXNzb2NpYXRlZEVsZW1lbnRzKCk7Ci19Ci0KLVZlY3Rv
cjxSZWY8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Pj4gSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246
OmNvcHlGb3JtQ29udHJvbEVsZW1lbnRzVmVjdG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gb3du
ZXJOb2RlKCkuY29weUFzc29jaWF0ZWRFbGVtZW50c1ZlY3RvcigpOwotfQotCi1zdGF0aWMgdW5z
aWduZWQgZmluZEZvcm1Bc3NvY2lhdGVkRWxlbWVudChjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0
ZWRFbGVtZW50Kj4mIGVsZW1lbnRzLCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQorc3RhdGljIHVu
c2lnbmVkIGZpbmRGb3JtQXNzb2NpYXRlZEVsZW1lbnQoY29uc3QgVmVjdG9yPFdlYWtQdHI8SFRN
TEVsZW1lbnQ+PiYgZWxlbWVudHMsIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGVsZW1lbnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1
dG8mIGFzc29jaWF0ZWRFbGVtZW50ID0gKmVsZW1lbnRzW2ldOwotICAgICAgICBpZiAoYXNzb2Np
YXRlZEVsZW1lbnQuaXNFbnVtZXJhdGFibGUoKSAmJiAmYXNzb2NpYXRlZEVsZW1lbnQuYXNIVE1M
RWxlbWVudCgpID09ICZlbGVtZW50KQorICAgICAgICBhdXRvIGN1cnJlbnRFbGVtZW50ID0gbWFr
ZVJlZlB0cihlbGVtZW50c1tpXS5nZXQoKSk7CisgICAgICAgIEFTU0VSVChjdXJyZW50RWxlbWVu
dCk7CisgICAgICAgIGF1dG8qIGFzc29jaWF0ZWRFbGVtZW50ID0gY3VycmVudEVsZW1lbnQtPmFz
Rm9ybUFzc29jaWF0ZWRFbGVtZW50KCk7CisgICAgICAgIEFTU0VSVChhc3NvY2lhdGVkRWxlbWVu
dCk7CisgICAgICAgIGlmIChhc3NvY2lhdGVkRWxlbWVudC0+aXNFbnVtZXJhdGFibGUoKSAmJiBj
dXJyZW50RWxlbWVudCA9PSAmZWxlbWVudCkKICAgICAgICAgICAgIHJldHVybiBpOwogICAgIH0K
ICAgICByZXR1cm4gZWxlbWVudHMuc2l6ZSgpOwpAQCAtODksNyArODIsNyBAQCBzdGF0aWMgdW5z
aWduZWQgZmluZEZvcm1Bc3NvY2lhdGVkRWxlbWVuCiBIVE1MRWxlbWVudCogSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb246OmN1c3RvbUVsZW1lbnRBZnRlcihFbGVtZW50KiBjdXJyZW50KSBjb25z
dAogewogICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2Fs
bG93ZWRTY29wZTsKLSAgICBhdXRvJiBlbGVtZW50cyA9IHVuc2FmZUZvcm1Db250cm9sRWxlbWVu
dHMoKTsKKyAgICBhdXRvJiBlbGVtZW50cyA9IG93bmVyTm9kZSgpLnVuc2FmZUFzc29jaWF0ZWRF
bGVtZW50cygpOwogICAgIHVuc2lnbmVkIHN0YXJ0OwogICAgIGlmICghY3VycmVudCkKICAgICAg
ICAgc3RhcnQgPSAwOwpAQCAtOTksMTEgKzkyLDEzIEBAIEhUTUxFbGVtZW50KiBIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbjoKICAgICAgICAgc3RhcnQgPSBmaW5kRm9ybUFzc29jaWF0ZWRFbGVt
ZW50KGVsZW1lbnRzLCAqY3VycmVudCkgKyAxOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gc3Rh
cnQ7IGkgPCBlbGVtZW50cy5zaXplKCk7ICsraSkgewotICAgICAgICBGb3JtQXNzb2NpYXRlZEVs
ZW1lbnQmIGVsZW1lbnQgPSAqZWxlbWVudHNbaV07Ci0gICAgICAgIGlmIChlbGVtZW50LmlzRW51
bWVyYXRhYmxlKCkpIHsKLSAgICAgICAgICAgIG1fY2FjaGVkRWxlbWVudCA9ICZlbGVtZW50LmFz
SFRNTEVsZW1lbnQoKTsKKyAgICAgICAgYXV0byBlbGVtZW50ID0gbWFrZVJlZlB0cihlbGVtZW50
c1tpXS5nZXQoKSk7CisgICAgICAgIEFTU0VSVChlbGVtZW50KTsKKyAgICAgICAgQVNTRVJUKGVs
ZW1lbnQtPmFzRm9ybUFzc29jaWF0ZWRFbGVtZW50KCkpOworICAgICAgICBpZiAoZWxlbWVudC0+
YXNGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKS0+aXNFbnVtZXJhdGFibGUoKSkgeworICAgICAgICAg
ICAgbV9jYWNoZWRFbGVtZW50ID0gZWxlbWVudC5nZXQoKTsKICAgICAgICAgICAgIG1fY2FjaGVk
RWxlbWVudE9mZnNldEluQXJyYXkgPSBpOwotICAgICAgICAgICAgcmV0dXJuICZlbGVtZW50LmFz
SFRNTEVsZW1lbnQoKTsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50LmdldCgpOwogICAgICAg
ICB9CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTI0LDE4ICsxMTksMjAgQEAgdm9p
ZCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dXBkYXRlTgogICAgIEhhc2hTZXQ8QXRvbVN0
cmluZ0ltcGwqPiBmb3VuZElucHV0RWxlbWVudHM7CiAKICAgICBTY3JpcHREaXNhbGxvd2VkU2Nv
cGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7Ci0gICAgZm9yIChhdXRvJiBl
bGVtZW50UHRyIDogdW5zYWZlRm9ybUNvbnRyb2xFbGVtZW50cygpKSB7Ci0gICAgICAgIEZvcm1B
c3NvY2lhdGVkRWxlbWVudCYgYXNzb2NpYXRlZEVsZW1lbnQgPSAqZWxlbWVudFB0cjsKLSAgICAg
ICAgaWYgKGFzc29jaWF0ZWRFbGVtZW50LmlzRW51bWVyYXRhYmxlKCkpIHsKLSAgICAgICAgICAg
IEhUTUxFbGVtZW50JiBlbGVtZW50ID0gYXNzb2NpYXRlZEVsZW1lbnQuYXNIVE1MRWxlbWVudCgp
OwotICAgICAgICAgICAgY29uc3QgQXRvbVN0cmluZyYgaWQgPSBlbGVtZW50LmdldElkQXR0cmli
dXRlKCk7CisgICAgZm9yIChhdXRvJiB3ZWFrRWxlbWVudCA6IG93bmVyTm9kZSgpLnVuc2FmZUFz
c29jaWF0ZWRFbGVtZW50cygpKSB7CisgICAgICAgIGF1dG8gZWxlbWVudCA9IG1ha2VSZWZQdHIo
d2Vha0VsZW1lbnQuZ2V0KCkpOworICAgICAgICBBU1NFUlQoZWxlbWVudCk7CisgICAgICAgIGF1
dG8qIGFzc29jaWF0ZWRFbGVtZW50ID0gZWxlbWVudC0+YXNGb3JtQXNzb2NpYXRlZEVsZW1lbnQo
KTsKKyAgICAgICAgQVNTRVJUKGFzc29jaWF0ZWRFbGVtZW50KTsKKyAgICAgICAgaWYgKGFzc29j
aWF0ZWRFbGVtZW50LT5pc0VudW1lcmF0YWJsZSgpKSB7CisgICAgICAgICAgICBjb25zdCBBdG9t
U3RyaW5nJiBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCk7CiAgICAgICAgICAgICBpZiAo
IWlkLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIGNhY2hlLT5hcHBlbmRUb0lkQ2FjaGUo
aWQsIGVsZW1lbnQpOworICAgICAgICAgICAgICAgIGNhY2hlLT5hcHBlbmRUb0lkQ2FjaGUoaWQs
ICplbGVtZW50KTsKICAgICAgICAgICAgICAgICBmb3VuZElucHV0RWxlbWVudHMuYWRkKGlkLmlt
cGwoKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb25zdCBBdG9tU3RyaW5nJiBuYW1l
ID0gZWxlbWVudC5nZXROYW1lQXR0cmlidXRlKCk7CisgICAgICAgICAgICBjb25zdCBBdG9tU3Ry
aW5nJiBuYW1lID0gZWxlbWVudC0+Z2V0TmFtZUF0dHJpYnV0ZSgpOwogICAgICAgICAgICAgaWYg
KCFuYW1lLmlzRW1wdHkoKSAmJiBpZCAhPSBuYW1lKSB7Ci0gICAgICAgICAgICAgICAgY2FjaGUt
PmFwcGVuZFRvTmFtZUNhY2hlKG5hbWUsIGVsZW1lbnQpOworICAgICAgICAgICAgICAgIGNhY2hl
LT5hcHBlbmRUb05hbWVDYWNoZShuYW1lLCAqZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgZm91
bmRJbnB1dEVsZW1lbnRzLmFkZChuYW1lLmltcGwoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uLmgJKHJldmlzaW9uIDI1OTM3NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTQsOSArNTQsNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlRm9yRG9jdW1lbnQoRG9jdW1lbnQmKSBv
dmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZU5hbWVkRWxlbWVudENhY2hlKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKLSAgICBjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIHVuc2FmZUZv
cm1Db250cm9sRWxlbWVudHMoKSBjb25zdDsKLSAgICBWZWN0b3I8UmVmPEZvcm1Bc3NvY2lhdGVk
RWxlbWVudD4+IGNvcHlGb3JtQ29udHJvbEVsZW1lbnRzVmVjdG9yKCkgY29uc3Q7Ci0KICAgICBt
dXRhYmxlIEVsZW1lbnQqIG1fY2FjaGVkRWxlbWVudDsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1f
Y2FjaGVkRWxlbWVudE9mZnNldEluQXJyYXk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmNwcAkocmV2aXNpb24gMjU5Mzc2KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw4ICs4NCwxMyBA
QCBIVE1MRm9ybUVsZW1lbnQ6On5IVE1MRm9ybUVsZW1lbnQoKQogICAgICAgICBkb2N1bWVudCgp
LnVucmVnaXN0ZXJGb3JEb2N1bWVudFN1c3BlbnNpb25DYWxsYmFja3MoKnRoaXMpOwogCiAgICAg
bV9kZWZhdWx0QnV0dG9uID0gbnVsbHB0cjsKLSAgICBmb3IgKGF1dG8mIGFzc29jaWF0ZWRFbGVt
ZW50IDogbV9hc3NvY2lhdGVkRWxlbWVudHMpCisgICAgZm9yIChhdXRvJiB3ZWFrRWxlbWVudCA6
IG1fYXNzb2NpYXRlZEVsZW1lbnRzKSB7CisgICAgICAgIGF1dG8gZWxlbWVudCA9IG1ha2VSZWZQ
dHIod2Vha0VsZW1lbnQuZ2V0KCkpOworICAgICAgICBBU1NFUlQoZWxlbWVudCk7CisgICAgICAg
IGF1dG8qIGFzc29jaWF0ZWRFbGVtZW50ID0gZWxlbWVudC0+YXNGb3JtQXNzb2NpYXRlZEVsZW1l
bnQoKTsKKyAgICAgICAgQVNTRVJUKGFzc29jaWF0ZWRFbGVtZW50KTsKICAgICAgICAgYXNzb2Np
YXRlZEVsZW1lbnQtPmZvcm1XaWxsQmVEZXN0cm95ZWQoKTsKKyAgICB9CiAgICAgZm9yIChhdXRv
JiBpbWFnZUVsZW1lbnQgOiBtX2ltYWdlRWxlbWVudHMpCiAgICAgICAgIGltYWdlRWxlbWVudC0+
bV9mb3JtID0gbnVsbHB0cjsKIH0KQEAgLTEzNiw3ICsxNDEsNyBAQCBOb2RlOjpJbnNlcnRlZElu
dG9BbmNlc3RvclJlc3VsdCBIVE1MRm9yCiB2b2lkIEhUTUxGb3JtRWxlbWVudDo6cmVtb3ZlZEZy
b21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYgb2xkUGFy
ZW50T2ZSZW1vdmVkVHJlZSkKIHsKICAgICBOb2RlJiByb290ID0gdHJhdmVyc2VUb1Jvb3ROb2Rl
KCk7IC8vIERvIG5vdCByZWx5IG9uIHJvb3ROb2RlKCkgYmVjYXVzZSBvdXIgSXNJblRyZWVTY29w
ZSBpcyBvdXRkYXRlZC4KLSAgICBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4gYXNzb2Np
YXRlZEVsZW1lbnRzKG1fYXNzb2NpYXRlZEVsZW1lbnRzKTsKKyAgICBhdXRvIGFzc29jaWF0ZWRF
bGVtZW50cyA9IGNvcHlBc3NvY2lhdGVkRWxlbWVudHNWZWN0b3IoKTsKICAgICBmb3IgKGF1dG8m
IGFzc29jaWF0ZWRFbGVtZW50IDogYXNzb2NpYXRlZEVsZW1lbnRzKQogICAgICAgICBhc3NvY2lh
dGVkRWxlbWVudC0+Zm9ybU93bmVyUmVtb3ZlZEZyb21UcmVlKHJvb3QpOwogICAgIEhUTUxFbGVt
ZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKHJlbW92YWxUeXBlLCBvbGRQYXJlbnRPZlJlbW92ZWRU
cmVlKTsKQEAgLTE1NCw3ICsxNTksMTEgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmhhbmRsZUxv
Y2FsRXZlbnRzKAogdW5zaWduZWQgSFRNTEZvcm1FbGVtZW50OjpsZW5ndGgoKSBjb25zdAogewog
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7Ci0gICAgZm9yIChhdXRvJiBhc3NvY2lhdGVkRWxlbWVu
dCA6IG1fYXNzb2NpYXRlZEVsZW1lbnRzKSB7CisgICAgZm9yIChhdXRvJiB3ZWFrRWxlbWVudCA6
IG1fYXNzb2NpYXRlZEVsZW1lbnRzKSB7CisgICAgICAgIGF1dG8gZWxlbWVudCA9IG1ha2VSZWZQ
dHIod2Vha0VsZW1lbnQuZ2V0KCkpOworICAgICAgICBBU1NFUlQoZWxlbWVudCk7CisgICAgICAg
IGF1dG8qIGFzc29jaWF0ZWRFbGVtZW50ID0gZWxlbWVudC0+YXNGb3JtQXNzb2NpYXRlZEVsZW1l
bnQoKTsKKyAgICAgICAgQVNTRVJUKGFzc29jaWF0ZWRFbGVtZW50KTsKICAgICAgICAgaWYgKGFz
c29jaWF0ZWRFbGVtZW50LT5pc0VudW1lcmF0YWJsZSgpKQogICAgICAgICAgICAgKytsZW5ndGg7
CiAgICAgfQpAQCAtMzEwLDExICszMTksMTEgQEAgU3RyaW5nUGFpclZlY3RvciBIVE1MRm9ybUVs
ZW1lbnQ6OnRleHRGaQogewogICAgIFN0cmluZ1BhaXJWZWN0b3IgcmVzdWx0OwogICAgIHJlc3Vs
dC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fYXNzb2NpYXRlZEVsZW1lbnRzLnNpemUoKSk7Ci0g
ICAgZm9yIChhdXRvJiBhc3NvY2lhdGVkRWxlbWVudCA6IG1fYXNzb2NpYXRlZEVsZW1lbnRzKSB7
Ci0gICAgICAgIGF1dG8mIGVsZW1lbnQgPSBhc3NvY2lhdGVkRWxlbWVudC0+YXNIVE1MRWxlbWVu
dCgpOworICAgIGZvciAoYXV0byYgd2Vha0VsZW1lbnQgOiBtX2Fzc29jaWF0ZWRFbGVtZW50cykg
eworICAgICAgICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVmUHRyKHdlYWtFbGVtZW50LmdldCgpKTsK
ICAgICAgICAgaWYgKCFpczxIVE1MSW5wdXRFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICBhdXRvJiBpbnB1dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1l
bnQ+KGVsZW1lbnQpOworICAgICAgICBhdXRvJiBpbnB1dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVs
ZW1lbnQ+KCplbGVtZW50KTsKICAgICAgICAgaWYgKCFpbnB1dC5pc1RleHRGaWVsZCgpKQogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoeyBpbnB1
dC5uYW1lKCkuc3RyaW5nKCksIGlucHV0LnZhbHVlKCkgfSk7CkBAIC0zOTcsOSArNDA2LDExIEBA
IHZvaWQgSFRNTEZvcm1FbGVtZW50OjpyZXNldEFzc29jaWF0ZWRGb3IKICAgICAvLyB0aGUgcmVz
ZXQgb3BlcmF0aW9uLgogICAgIFZlY3RvcjxSZWY8SFRNTEZvcm1Db250cm9sRWxlbWVudD4+IGFz
c29jaWF0ZWRGb3JtQ29udHJvbEVsZW1lbnRzOwogICAgIGFzc29jaWF0ZWRGb3JtQ29udHJvbEVs
ZW1lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9hc3NvY2lhdGVkRWxlbWVudHMuc2l6ZSgp
KTsKLSAgICBmb3IgKGF1dG8qIGVsZW1lbnQgOiBtX2Fzc29jaWF0ZWRFbGVtZW50cykgeworICAg
IGZvciAoYXV0byYgd2Vha0VsZW1lbnQgOiBtX2Fzc29jaWF0ZWRFbGVtZW50cykgeworICAgICAg
ICBhdXRvKiBlbGVtZW50ID0gd2Vha0VsZW1lbnQuZ2V0KCk7CisgICAgICAgIEFTU0VSVChlbGVt
ZW50KTsKICAgICAgICAgaWYgKGlzPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KGVsZW1lbnQpKQot
ICAgICAgICAgICAgYXNzb2NpYXRlZEZvcm1Db250cm9sRWxlbWVudHMudW5jaGVja2VkQXBwZW5k
KCpkb3duY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PihlbGVtZW50KSk7CisgICAgICAgICAg
ICBhc3NvY2lhdGVkRm9ybUNvbnRyb2xFbGVtZW50cy51bmNoZWNrZWRBcHBlbmQoZG93bmNhc3Q8
SFRNTEZvcm1Db250cm9sRWxlbWVudD4oKmVsZW1lbnQpKTsKICAgICB9CiAgICAgCiAgICAgZm9y
IChhdXRvJiBhc3NvY2lhdGVkRm9ybUNvbnRyb2xFbGVtZW50IDogYXNzb2NpYXRlZEZvcm1Db250
cm9sRWxlbWVudHMpCkBAIC00NjksNyArNDgwLDcgQEAgdW5zaWduZWQgSFRNTEZvcm1FbGVtZW50
Ojpmb3JtRWxlbWVudEluZAogICAgIHdoaWxlIChsZWZ0ICE9IHJpZ2h0KSB7CiAgICAgICAgIHVu
c2lnbmVkIG1pZGRsZSA9IGxlZnQgKyAoKHJpZ2h0IC0gbGVmdCkgLyAyKTsKICAgICAgICAgQVNT
RVJUKG1pZGRsZSA8IG1fYXNzb2NpYXRlZEVsZW1lbnRzQmVmb3JlSW5kZXggfHwgbWlkZGxlID49
IG1fYXNzb2NpYXRlZEVsZW1lbnRzQWZ0ZXJJbmRleCk7Ci0gICAgICAgIHBvc2l0aW9uID0gZWxl
bWVudC0+Y29tcGFyZURvY3VtZW50UG9zaXRpb24obV9hc3NvY2lhdGVkRWxlbWVudHNbbWlkZGxl
XS0+YXNIVE1MRWxlbWVudCgpKTsKKyAgICAgICAgcG9zaXRpb24gPSBlbGVtZW50LT5jb21wYXJl
RG9jdW1lbnRQb3NpdGlvbigqbV9hc3NvY2lhdGVkRWxlbWVudHNbbWlkZGxlXSk7CiAgICAgICAg
IGlmIChwb3NpdGlvbiAmIERPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORykKICAgICAgICAgICAg
IHJpZ2h0ID0gbWlkZGxlOwogICAgICAgICBlbHNlCkBAIC00NzcsNyArNDg4LDcgQEAgdW5zaWdu
ZWQgSFRNTEZvcm1FbGVtZW50Ojpmb3JtRWxlbWVudEluZAogICAgIH0KICAgICAKICAgICBBU1NF
UlQobGVmdCA8IG1fYXNzb2NpYXRlZEVsZW1lbnRzQmVmb3JlSW5kZXggfHwgbGVmdCA+PSBtX2Fz
c29jaWF0ZWRFbGVtZW50c0FmdGVySW5kZXgpOwotICAgIHBvc2l0aW9uID0gZWxlbWVudC0+Y29t
cGFyZURvY3VtZW50UG9zaXRpb24obV9hc3NvY2lhdGVkRWxlbWVudHNbbGVmdF0tPmFzSFRNTEVs
ZW1lbnQoKSk7CisgICAgcG9zaXRpb24gPSBlbGVtZW50LT5jb21wYXJlRG9jdW1lbnRQb3NpdGlv
bigqbV9hc3NvY2lhdGVkRWxlbWVudHNbbGVmdF0pOwogICAgIGlmIChwb3NpdGlvbiAmIERPQ1VN
RU5UX1BPU0lUSU9OX0ZPTExPV0lORykKICAgICAgICAgcmV0dXJuIGxlZnQ7CiAgICAgcmV0dXJu
IGxlZnQgKyAxOwpAQCAtNTMzLDcgKzU0NCw3IEBAIHVuc2lnbmVkIEhUTUxGb3JtRWxlbWVudDo6
Zm9ybUVsZW1lbnRJbmQKIAogdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlZ2lzdGVyRm9ybUVsZW1l
bnQoRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBlKQogewotICAgIG1fYXNzb2NpYXRlZEVsZW1lbnRz
Lmluc2VydChmb3JtRWxlbWVudEluZGV4KGUpLCBlKTsKKyAgICBtX2Fzc29jaWF0ZWRFbGVtZW50
cy5pbnNlcnQoZm9ybUVsZW1lbnRJbmRleChlKSwgbWFrZVdlYWtQdHIoZS0+YXNIVE1MRWxlbWVu
dCgpKSk7CiAKICAgICBpZiAoaXM8SFRNTEZvcm1Db250cm9sRWxlbWVudD4oZSkpIHsKICAgICAg
ICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCYgY29udHJvbCA9IGRvd25jYXN0PEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ+KCplKTsKQEAgLTU0OCw3ICs1NTksNyBAQCB2b2lkIEhUTUxGb3JtRWxlbWVu
dDo6cmVnaXN0ZXJGb3JtRWxlbWVuCiAKIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpyZW1vdmVGb3Jt
RWxlbWVudChGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGUpCiB7Ci0gICAgdW5zaWduZWQgaW5kZXgg
PSBtX2Fzc29jaWF0ZWRFbGVtZW50cy5maW5kKGUpOworICAgIHVuc2lnbmVkIGluZGV4ID0gbV9h
c3NvY2lhdGVkRWxlbWVudHMuZmluZCgmZS0+YXNIVE1MRWxlbWVudCgpKTsKICAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IG1fYXNzb2NpYXRlZEVsZW1lbnRzLnNp
emUoKSk7CiAgICAgaWYgKGluZGV4IDwgbV9hc3NvY2lhdGVkRWxlbWVudHNCZWZvcmVJbmRleCkK
ICAgICAgICAgLS1tX2Fzc29jaWF0ZWRFbGVtZW50c0JlZm9yZUluZGV4OwpAQCAtNzMwLDE0ICs3
NDEsMTEgQEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OmNoZWNrSW52YWxpZENvbnRybwogICAgIFJl
ZjxIVE1MRm9ybUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIC8vIENvcHkgbV9h
c3NvY2lhdGVkRWxlbWVudHMgYmVjYXVzZSBldmVudCBoYW5kbGVycyBjYWxsZWQgZnJvbQogICAg
IC8vIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmNoZWNrVmFsaWRpdHkoKSBtaWdodCBjaGFuZ2Ug
bV9hc3NvY2lhdGVkRWxlbWVudHMuCi0gICAgVmVjdG9yPFJlZlB0cjxGb3JtQXNzb2NpYXRlZEVs
ZW1lbnQ+PiBlbGVtZW50czsKLSAgICBlbGVtZW50cy5yZXNlcnZlQ2FwYWNpdHkobV9hc3NvY2lh
dGVkRWxlbWVudHMuc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIGFzc29jaWF0ZWRFbGVtZW50IDog
bV9hc3NvY2lhdGVkRWxlbWVudHMpCi0gICAgICAgIGVsZW1lbnRzLmFwcGVuZChhc3NvY2lhdGVk
RWxlbWVudCk7CisgICAgYXV0byBlbGVtZW50cyA9IGNvcHlBc3NvY2lhdGVkRWxlbWVudHNWZWN0
b3IoKTsKICAgICBib29sIGhhc0ludmFsaWRDb250cm9scyA9IGZhbHNlOwogICAgIGZvciAoYXV0
byYgZWxlbWVudCA6IGVsZW1lbnRzKSB7Ci0gICAgICAgIGlmIChlbGVtZW50LT5mb3JtKCkgPT0g
dGhpcyAmJiBpczxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PigqZWxlbWVudCkpIHsKLSAgICAgICAg
ICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQmIGNvbnRyb2wgPSBkb3duY2FzdDxIVE1MRm9ybUNv
bnRyb2xFbGVtZW50PigqZWxlbWVudCk7CisgICAgICAgIGlmIChlbGVtZW50LT5mb3JtKCkgPT0g
dGhpcyAmJiBpczxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PihlbGVtZW50LmdldCgpKSkgeworICAg
ICAgICAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCYgY29udHJvbCA9IGRvd25jYXN0PEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ+KGVsZW1lbnQuZ2V0KCkpOwogICAgICAgICAgICAgaWYgKCFjb250
cm9sLmNoZWNrVmFsaWRpdHkoJnVuaGFuZGxlZEludmFsaWRDb250cm9scykgJiYgY29udHJvbC5m
b3JtKCkgPT0gdGhpcykKICAgICAgICAgICAgICAgICBoYXNJbnZhbGlkQ29udHJvbHMgPSB0cnVl
OwogICAgICAgICB9CkBAIC03NjQsNyArNzcyLDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OmFz
c2VydEl0ZW1DYW5CZUluUAogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGVs
ZW1lbnQuZm9ybSgpID09IHRoaXMpOwogCiAgICAgaWYgKGl0ZW0tPmlzRm9ybUFzc29jaWF0ZWRF
bGVtZW50KCkpIHsKLSAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04obV9h
c3NvY2lhdGVkRWxlbWVudHMuZmluZChzdGF0aWNfY2FzdDxGb3JtQXNzb2NpYXRlZEVsZW1lbnQq
PihpdGVtKSkgIT0gbm90Rm91bmQpOworICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTihtX2Fzc29jaWF0ZWRFbGVtZW50cy5maW5kKCZlbGVtZW50KSAhPSBub3RGb3VuZCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg2NSw3ICs4NzMsNyBAQCB2b2lkIEhUTUxG
b3JtRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkCiAgICAgZG9jdW1lbnQoKS5mb3JtQ29udHJv
bGxlcigpLnJlc3RvcmVDb250cm9sU3RhdGVJbigqdGhpcyk7CiB9CiAKLWNvbnN0IFZlY3RvcjxG
b3JtQXNzb2NpYXRlZEVsZW1lbnQqPiYgSFRNTEZvcm1FbGVtZW50Ojp1bnNhZmVBc3NvY2lhdGVk
RWxlbWVudHMoKSBjb25zdAorY29uc3QgVmVjdG9yPFdlYWtQdHI8SFRNTEVsZW1lbnQ+PiYgSFRN
TEZvcm1FbGVtZW50Ojp1bnNhZmVBc3NvY2lhdGVkRWxlbWVudHMoKSBjb25zdAogewogICAgIEFT
U0VSVChTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZDo6aGFzRGlzYWxsb3dlZFNj
b3BlKCkpOwogICAgIHJldHVybiBtX2Fzc29jaWF0ZWRFbGVtZW50czsKQEAgLTg3Myw4ICs4ODEs
MTMgQEAgY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBIVAogCiBWZWN0b3I8
UmVmPEZvcm1Bc3NvY2lhdGVkRWxlbWVudD4+IEhUTUxGb3JtRWxlbWVudDo6Y29weUFzc29jaWF0
ZWRFbGVtZW50c1ZlY3RvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6bWFwKG1fYXNzb2Np
YXRlZEVsZW1lbnRzLCBbXSAoYXV0byogcmF3RWxlbWVudCkgewotICAgICAgICByZXR1cm4gUmVm
PEZvcm1Bc3NvY2lhdGVkRWxlbWVudD4oKnJhd0VsZW1lbnQpOworICAgIHJldHVybiBXVEY6Om1h
cChtX2Fzc29jaWF0ZWRFbGVtZW50cywgW10gKGF1dG8mIHdlYWtFbGVtZW50KSB7CisgICAgICAg
IGF1dG8gZWxlbWVudCA9IG1ha2VSZWZQdHIod2Vha0VsZW1lbnQuZ2V0KCkpOworICAgICAgICBB
U1NFUlQoZWxlbWVudCk7CisgICAgICAgIGF1dG8qIGZvcm1Bc3NvY2lhdGVkRWxlbWVudCA9IGVs
ZW1lbnQtPmFzRm9ybUFzc29jaWF0ZWRFbGVtZW50KCk7CisgICAgICAgIEFTU0VSVChmb3JtQXNz
b2NpYXRlZEVsZW1lbnQpOworICAgICAgICByZXR1cm4gUmVmPEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dD4oKmZvcm1Bc3NvY2lhdGVkRWxlbWVudCk7CisgICAgICAgIAogICAgIH0pOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgJKHJldmlzaW9uIDI1OTM3NikKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAKICAgICBSYWRpb0J1dHRvbkdyb3VwcyYgcmFkaW9C
dXR0b25Hcm91cHMoKSB7IHJldHVybiBtX3JhZGlvQnV0dG9uR3JvdXBzOyB9CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCBjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIHVuc2FmZUFz
c29jaWF0ZWRFbGVtZW50cygpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFZlY3Rv
cjxXZWFrUHRyPEhUTUxFbGVtZW50Pj4mIHVuc2FmZUFzc29jaWF0ZWRFbGVtZW50cygpIGNvbnN0
OwogICAgIFZlY3RvcjxSZWY8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Pj4gY29weUFzc29jaWF0ZWRF
bGVtZW50c1ZlY3RvcigpIGNvbnN0OwogICAgIGNvbnN0IFZlY3RvcjxXZWFrUHRyPEhUTUxJbWFn
ZUVsZW1lbnQ+PiYgaW1hZ2VFbGVtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VFbGVtZW50
czsgfQogCkBAIC0xNzQsNyArMTc0LDcgQEAgcHJpdmF0ZToKIAogICAgIHVuc2lnbmVkIG1fYXNz
b2NpYXRlZEVsZW1lbnRzQmVmb3JlSW5kZXggeyAwIH07CiAgICAgdW5zaWduZWQgbV9hc3NvY2lh
dGVkRWxlbWVudHNBZnRlckluZGV4IHsgMCB9OwotICAgIFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVs
ZW1lbnQqPiBtX2Fzc29jaWF0ZWRFbGVtZW50czsKKyAgICBWZWN0b3I8V2Vha1B0cjxIVE1MRWxl
bWVudD4+IG1fYXNzb2NpYXRlZEVsZW1lbnRzOwogICAgIFZlY3RvcjxXZWFrUHRyPEhUTUxJbWFn
ZUVsZW1lbnQ+PiBtX2ltYWdlRWxlbWVudHM7CiAgICAgV2Vha0hhc2hTZXQ8SFRNTEZvcm1Db250
cm9sRWxlbWVudD4gbV9pbnZhbGlkQXNzb2NpYXRlZEZvcm1Db250cm9sczsKICAgICBXZWFrUHRy
PEZvcm1TdWJtaXNzaW9uPiBtX3BsYW5uZWRGb3JtU3VibWlzc2lvbjsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNTkzNzYpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzYsNiArNzYsMTEgQEAgUmVmPEhUTUxPYmplY3RFbGVtZW50PiBIVE1MT2JqZWN0RWxlbWVu
dAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK0hUTUxPYmplY3RFbGVtZW50Ojp+SFRNTE9iamVj
dEVsZW1lbnQoKQoreworICAgIGNsZWFyRm9ybSgpOworfQorCiBpbnQgSFRNTE9iamVjdEVsZW1l
bnQ6OmRlZmF1bHRUYWJJbmRleCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIDA7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCShyZXZpc2lvbiAyNTkzNzYpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTU4LDYgKzU4LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEhUTUxPYmplY3RFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIEhUTUxGb3JtRWxlbWVudCopOworICAg
IH5IVE1MT2JqZWN0RWxlbWVudCgpOwogCiAgICAgaW50IGRlZmF1bHRUYWJJbmRleCgpIGNvbnN0
IGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTkz
NzcpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNCBAQAorMjAyMC0wNC0wMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KKworICAgICAgICBIVE1MRm9ybUVsZW1lbnQgc2hvdWxkIHVzZSBXZWFrUHRyIHRvIGtl
ZXAgdHJhY2sgb2YgaXRzIGFzc29jaWF0ZWQgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTg5NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRp
b24ubW06CisgICAgICAgICgtW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBlbGVtZW50V2l0aE5hbWU6
aW5Gb3JtOl0pOgorICAgICAgICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gY29udHJvbHNJbkZv
cm06XSk6CisKIDIwMjAtMDMtMzEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CiAKICAgICAgICAgRGF0YWxpc3Qgb3B0aW9uJ3MgbGFiZWwgbm90IHVzZWQKSW5kZXg6IFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJl
c2VudGF0aW9uLm1tCShyZXZpc2lvbiAyNTkzNzYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMjg0
LDEyICsyODQsMTEgQEAgLSAoRE9NRWxlbWVudCAqKWVsZW1lbnRXaXRoTmFtZTooTlNTdHJpbgog
ICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5U
aHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOwotICAgIGF1dG8mIGVsZW1lbnRzID0gZm9ybUVs
ZW1lbnQtPnVuc2FmZUFzc29jaWF0ZWRFbGVtZW50cygpOwogICAgIEF0b21TdHJpbmcgdGFyZ2V0
TmFtZSA9IG5hbWU7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGVsZW1lbnRzLnNpemUo
KTsgaSsrKSB7Ci0gICAgICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCYgZWxlbWVudCA9ICplbGVt
ZW50c1tpXTsKLSAgICAgICAgaWYgKGVsZW1lbnQubmFtZSgpID09IHRhcmdldE5hbWUpCi0gICAg
ICAgICAgICByZXR1cm4ga2l0KCZlbGVtZW50LmFzSFRNTEVsZW1lbnQoKSk7CisgICAgZm9yIChh
dXRvJiB3ZWFrRWxlbWVudCA6IGZvcm1FbGVtZW50LT51bnNhZmVBc3NvY2lhdGVkRWxlbWVudHMo
KSkgeworICAgICAgICBhdXRvIGVsZW1lbnQgPSBtYWtlUmVmUHRyKHdlYWtFbGVtZW50LmdldCgp
KTsKKyAgICAgICAgaWYgKGVsZW1lbnQtPmFzRm9ybUFzc29jaWF0ZWRFbGVtZW50KCktPm5hbWUo
KSA9PSB0YXJnZXROYW1lKQorICAgICAgICAgICAgcmV0dXJuIGtpdChlbGVtZW50LmdldCgpKTsK
ICAgICB9CiAgICAgcmV0dXJuIG5pbDsKIH0KQEAgLTMzNCwxMCArMzMzLDEwIEBAIC0gKE5TQXJy
YXkgKiljb250cm9sc0luRm9ybTooRE9NRWxlbWVudCAKICAgICBOU011dGFibGVBcnJheSAqcmVz
dWx0cyA9IG5pbDsKIAogICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNj
cmlwdERpc2FsbG93ZWRTY29wZTsKLSAgICBhdXRvJiBlbGVtZW50cyA9IGZvcm1FbGVtZW50LT51
bnNhZmVBc3NvY2lhdGVkRWxlbWVudHMoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZWxlbWVudHMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgaWYgKGVsZW1lbnRzW2ldLT5pc0VudW1l
cmF0YWJsZSgpKSB7IC8vIFNraXAgb3B0aW9uIGVsZW1lbnRzLCBvdGhlciBkdWRzCi0gICAgICAg
ICAgICBET01FbGVtZW50ICplbGVtZW50ID0ga2l0KCZlbGVtZW50c1tpXS0+YXNIVE1MRWxlbWVu
dCgpKTsKKyAgICBmb3IgKGF1dG8mIHdlYWtFbGVtZW50IDogZm9ybUVsZW1lbnQtPnVuc2FmZUFz
c29jaWF0ZWRFbGVtZW50cygpKSB7CisgICAgICAgIGF1dG8gY29yZUVsZW1lbnQgPSBtYWtlUmVm
UHRyKHdlYWtFbGVtZW50LmdldCgpKTsKKyAgICAgICAgaWYgKGNvcmVFbGVtZW50LT5hc0Zvcm1B
c3NvY2lhdGVkRWxlbWVudCgpLT5pc0VudW1lcmF0YWJsZSgpKSB7IC8vIFNraXAgb3B0aW9uIGVs
ZW1lbnRzLCBvdGhlciBkdWRzCisgICAgICAgICAgICBET01FbGVtZW50ICplbGVtZW50ID0ga2l0
KGNvcmVFbGVtZW50LmdldCgpKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0cykKICAgICAgICAg
ICAgICAgICByZXN1bHRzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aE9iamVjdDplbGVtZW50
XTsKICAgICAgICAgICAgIGVsc2UK
</data>
<flag name="review"
          id="410649"
          type_id="1"
          status="+"
          setter="wenson_hsieh"
    />
          </attachment>
      

    </bug>

</bugzilla>