<?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>93915</bug_id>
          
          <creation_ts>2012-08-13 17:33:59 -0700</creation_ts>
          <short_desc>[WK2] Track multiple Web Processes per context</short_desc>
          <delta_ts>2012-08-14 15:58:25 -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>WebKit2</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="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>gustavo</cc>
    
    <cc>philn</cc>
    
    <cc>rafael.lobo</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>694269</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-13 17:33:59 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694287</commentid>
    <comment_count>1</comment_count>
      <attachid>158166</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-13 17:43:33 -0700</bug_when>
    <thetext>Created attachment 158166
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694292</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-13 17:45:24 -0700</bug_when>
    <thetext>Attachment 158166 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/UIProcess/WebContext.cpp:479:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Source/WebKit2/UIProcess/WebContext.cpp:490:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Source/WebKit2/UIProcess/WebContext.cpp:523:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 3 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694337</commentid>
    <comment_count>3</comment_count>
      <attachid>158166</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-08-13 18:14:51 -0700</bug_when>
    <thetext>Comment on attachment 158166
proposed patch

Beautiful. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694338</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-08-13 18:15:08 -0700</bug_when>
    <thetext>Oh, but please fix the builds first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694343</commentid>
    <comment_count>5</comment_count>
      <attachid>158166</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-13 18:18:26 -0700</bug_when>
    <thetext>Comment on attachment 158166
proposed patch

Attachment 158166 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13489431</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694457</commentid>
    <comment_count>6</comment_count>
      <attachid>158166</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-13 20:34:07 -0700</bug_when>
    <thetext>Comment on attachment 158166
proposed patch

Attachment 158166 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13490375</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695331</commentid>
    <comment_count>7</comment_count>
      <attachid>158405</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-14 13:31:07 -0700</bug_when>
    <thetext>Created attachment 158405
For EWS

Checking build fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695335</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-14 13:33:12 -0700</bug_when>
    <thetext>Attachment 158405 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/UIProcess/WebContext.cpp:484:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Source/WebKit2/UIProcess/WebContext.cpp:495:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Source/WebKit2/UIProcess/WebContext.cpp:528:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 3 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695372</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-14 14:07:01 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/125602&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158166</attachid>
            <date>2012-08-13 17:43:33 -0700</date>
            <delta_ts>2012-08-14 13:31:07 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>ProcessVector.txt</filename>
            <type>text/plain</type>
            <size>16630</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNTQ3NCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDEyLTA4LTEzICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFRyYWNrIG11bHRp
cGxlIFdlYiBQcm9jZXNzZXMgcGVyIGNvbnRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkzOTE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpOiBEb3dubG9hZHMgZG9uJ3Qgd29yaworICAgICAgICB5ZXQsIGFkZGVk
IGEgRklYTUUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbnRleHQ6OmRlcHJlY2F0ZWRTaGFyZWRQcm9jZXNzKTogUmVuYW1lZCBm
cm9tIHByb2Nlc3MoKSwgYWRkZWQgYW4KKyAgICAgICAgYXNzZXJ0aW9uIHRoYXQgdGhpcyBpcyBv
bmx5IHVzZWQgaW4gc2luZ2xlIHByb2NlcyBtb2RlLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0OjplbnN1cmVTaGFyZWRXZWJQcm9jZXNzKTogUmVuYW1lZCBlbnN1cmVXZWJQcm9jZXNzKCkg
Zm9yIGNsYXJpdHkuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlBy
b2Nlc3MpOiBFeHRyYWN0ZWQgY29kZSBmb3IgY3JlYXRpbmcgYSBwcm9jZXNzCisgICAgICAgIGZy
b20gZW5zdXJlV2ViUHJvY2VzcygpLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojp3YXJt
SW5pdGlhbFByb2Nlc3MpOiBDcmVhdGUgdGhlIHByb2Nlc3MgbW9yZSBleHBsaWNpdGx5LgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjplbmFibGVQcm9jZXNzVGVybWluYXRpb24pOiBJdGVy
YXRlIG92ZXIgYWxsIHByb2Nlc3Nlcy4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6c2hv
dWxkVGVybWluYXRlKTogVXBkYXRlZCBhc3NlcnRpb24uCisgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRleHQ6OnByb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcpOiBDaGFuZ2VkIHRvIHVzZSBwcm9jZXNz
IGFyZ3VtZW50CisgICAgICAgIGluc3RlYWQgb2YgbV9wcm9jZXNzLgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0OjpkaXNjb25uZWN0UHJvY2Vzcyk6IFVwZGF0ZWQgY29kZSBmb3J0byB1c2Ug
bV9wcm9jZXNzZXMuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmNyZWF0ZVdlYlBhZ2Up
OiBIYW5kbGUgYm90aCBwcm9jZXNzIHBvbGljaWVzIChpbml0aWFsIHN1cHBvcnQKKyAgICAgICAg
Zm9yIG11bHRpLXByb2Nlc3MpLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpyZWxhdW5j
aFByb2Nlc3NJZk5lY2Vzc2FyeSk6IEFkZGVkIGNhc2VzIGZvciBib3RoIHBvbGljaWVzLgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpkb3dubG9hZCk6IERpdHRvLgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb250ZXh0Ojpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKTogRml4ZWQg
d2hpdGVzcGFjZS4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6Z2V0V2ViQ29yZVN0YXRp
c3RpY3MpOiBBZGRlZCBjYXNlcyBmb3IgYm90aCBwb2xpY2llcy4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJDb250ZXh0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNlbmRUb0Fs
bFByb2Nlc3Nlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNlbmRUb0FsbFByb2Nl
c3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KToKKyAgICAgICAgU2VuZCB0byBhbGwgcHJv
Y2Vzc2VzLiBDaGFuZ2VkIHJldHVybiB0eXBlIHRvIHZvaWQsIHNpbmNlIG5vIGNhbGxlciBjaGVj
a2VkIGl0LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6IChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZSk6IFJlbW92ZWQKKyAgICAgICAgYW4g
YXNzZXJ0aW9uIHRoYXQgYXNzdW1lZCBvbmUgcHJvY2VzcyBwZXIgY29udGV4dC4KKwogMjAxMi0w
OC0xMyAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8cmFrdWNvQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgW0VGTF0gVW5yZXZpZXdlZCBib3QgZml4IGFmdGVyIHIxMjU0NjcuCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCShyZXZpc2lvbiAxMjU0NTEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1
NCw3ICsyNTQsMTUgQEAgdm9pZCBXZWJDb250ZXh0Ojppbml0aWFsaXplRG93bmxvYWRDbGllbgog
ewogICAgIG1fZG93bmxvYWRDbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOwogfQotICAgIAorCitX
ZWJQcm9jZXNzUHJveHkqIFdlYkNvbnRleHQ6OmRlcHJlY2F0ZWRTaGFyZWRQcm9jZXNzKCkKK3sK
KyAgICBBU1NFUlQobV9wcm9jZXNzTW9kZWwgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5
UHJvY2Vzcyk7CisgICAgaWYgKG1fcHJvY2Vzc2VzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIG1fcHJvY2Vzc2VzWzBdLmdldCgpOworfQorCiB2b2lkIFdlYkNvbnRl
eHQ6Omxhbmd1YWdlQ2hhbmdlZCh2b2lkKiBjb250ZXh0KQogewogICAgIHN0YXRpY19jYXN0PFdl
YkNvbnRleHQqPihjb250ZXh0KS0+bGFuZ3VhZ2VDaGFuZ2VkKCk7CkBAIC0yNzAsMTIgKzI3OCwx
NSBAQCB2b2lkIFdlYkNvbnRleHQ6OmZ1bGxLZXlib2FyZEFjY2Vzc01vZGVDCiAgICAgc2VuZFRv
QWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpGdWxsS2V5Ym9hcmRBY2Nlc3NNb2Rl
Q2hhbmdlZChmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKSk7CiB9CiAKLXZvaWQgV2ViQ29udGV4
dDo6ZW5zdXJlV2ViUHJvY2VzcygpCit2b2lkIFdlYkNvbnRleHQ6OmVuc3VyZVNoYXJlZFdlYlBy
b2Nlc3MoKQogewotICAgIGlmIChtX3Byb2Nlc3MpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAo
bV9wcm9jZXNzZXMuaXNFbXB0eSgpKQorICAgICAgICBtX3Byb2Nlc3Nlcy5hcHBlbmQoY3JlYXRl
TmV3V2ViUHJvY2VzcygpKTsKK30KIAotICAgIG1fcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6
Y3JlYXRlKHRoaXMpOworUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IFdlYkNvbnRleHQ6OmNy
ZWF0ZU5ld1dlYlByb2Nlc3MoKQoreworICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb2Nl
c3MgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZSh0aGlzKTsKIAogICAgIFdlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKIApAQCAtMzIwLDMxICszMzEsMzcgQEAgdm9pZCBX
ZWJDb250ZXh0OjplbnN1cmVXZWJQcm9jZXNzKCkKICAgICBSZWZQdHI8QVBJT2JqZWN0PiBpbmpl
Y3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEgPSBtX2luamVjdGVkQnVuZGxlQ2xpZW50
LmdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSh0aGlzKTsKICAgICBpZiAo
IWluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkKICAgICAgICAgaW5qZWN0ZWRC
dW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhID0gbV9pbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0
aW9uVXNlckRhdGE7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpJ
bml0aWFsaXplV2ViUHJvY2VzcyhwYXJhbWV0ZXJzLCBXZWJDb250ZXh0VXNlck1lc3NhZ2VFbmNv
ZGVyKGluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YS5nZXQoKSkpLCAwKTsKKyAg
ICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpJbml0aWFsaXplV2ViUHJvY2Vz
cyhwYXJhbWV0ZXJzLCBXZWJDb250ZXh0VXNlck1lc3NhZ2VFbmNvZGVyKGluamVjdGVkQnVuZGxl
SW5pdGlhbGl6YXRpb25Vc2VyRGF0YS5nZXQoKSkpLCAwKTsKIAogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpICE9IG1fcGVuZGluZ01lc3NhZ2VzVG9Qb3N0VG9JbmplY3RlZEJ1bmRsZS5zaXplKCk7
ICsraSkgewogICAgICAgICBwYWlyPFN0cmluZywgUmVmUHRyPEFQSU9iamVjdD4gPiYgbWVzc2Fn
ZSA9IG1fcGVuZGluZ01lc3NhZ2VzVG9Qb3N0VG9JbmplY3RlZEJ1bmRsZVtpXTsKLSAgICAgICAg
bV9wcm9jZXNzLT5kZXByZWNhdGVkU2VuZChJbmplY3RlZEJ1bmRsZU1lc3NhZ2U6OlBvc3RNZXNz
YWdlLCAwLCBDb3JlSVBDOjpJbihtZXNzYWdlLmZpcnN0LCBXZWJDb250ZXh0VXNlck1lc3NhZ2VF
bmNvZGVyKG1lc3NhZ2Uuc2Vjb25kLmdldCgpKSkpOworICAgICAgICBwcm9jZXNzLT5kZXByZWNh
dGVkU2VuZChJbmplY3RlZEJ1bmRsZU1lc3NhZ2U6OlBvc3RNZXNzYWdlLCAwLCBDb3JlSVBDOjpJ
bihtZXNzYWdlLmZpcnN0LCBXZWJDb250ZXh0VXNlck1lc3NhZ2VFbmNvZGVyKG1lc3NhZ2Uuc2Vj
b25kLmdldCgpKSkpOwogICAgIH0KKyAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vzcyk6IFdo
YXQgZG9lcyB0aGlzIG1lYW4gaW4gdGhlIGJyYXZlIG5ldyB3b3JsZD8KICAgICBtX3BlbmRpbmdN
ZXNzYWdlc1RvUG9zdFRvSW5qZWN0ZWRCdW5kbGUuY2xlYXIoKTsKKworICAgIHJldHVybiBwcm9j
ZXNzLnJlbGVhc2UoKTsKIH0KIAogdm9pZCBXZWJDb250ZXh0Ojp3YXJtSW5pdGlhbFByb2Nlc3Mo
KSAgCiB7Ci0gICAgZW5zdXJlV2ViUHJvY2VzcygpOworICAgIEFTU0VSVChtX3Byb2Nlc3Nlcy5p
c0VtcHR5KCkpOworICAgIG1fcHJvY2Vzc2VzLmFwcGVuZChjcmVhdGVOZXdXZWJQcm9jZXNzKCkp
OwogfQogCiB2b2lkIFdlYkNvbnRleHQ6OmVuYWJsZVByb2Nlc3NUZXJtaW5hdGlvbigpCiB7CiAg
ICAgbV9wcm9jZXNzVGVybWluYXRpb25FbmFibGVkID0gdHJ1ZTsKLSAgICBpZiAoc2hvdWxkVGVy
bWluYXRlKG1fcHJvY2Vzcy5nZXQoKSkpCi0gICAgICAgIG1fcHJvY2Vzcy0+dGVybWluYXRlKCk7
CisgICAgVmVjdG9yPFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+ID4gcHJvY2Vzc2VzID0gbV9wcm9j
ZXNzZXM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9jZXNzZXMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgaWYgKHNob3VsZFRlcm1pbmF0ZShwcm9jZXNzZXNbaV0uZ2V0KCkpKQorICAg
ICAgICAgICAgcHJvY2Vzc2VzW2ldLT50ZXJtaW5hdGUoKTsKKyAgICB9CiB9CiAKIGJvb2wgV2Vi
Q29udGV4dDo6c2hvdWxkVGVybWluYXRlKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKIHsKLSAg
ICAvLyBGSVhNRTogT25jZSB3ZSBzdXBwb3J0IG11bHRpcGxlIHByb2Nlc3NlcyBwZXIgY29udGV4
dCwgdGhpcyBhc3NlcnRpb24gd29uJ3QgaG9sZC4KLSAgICBBU1NFUlQocHJvY2VzcyA9PSBtX3By
b2Nlc3MpOworICAgIEFTU0VSVChtX3Byb2Nlc3Nlcy5jb250YWlucyhwcm9jZXNzKSk7CiAKICAg
ICBpZiAoIW1fcHJvY2Vzc1Rlcm1pbmF0aW9uRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMzc0LDggKzM5MSw3IEBAIGJvb2wgV2ViQ29udGV4dDo6c2hvdWxkVGVybWluYXRlKFdl
YlByb2MKIAogdm9pZCBXZWJDb250ZXh0Ojpwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKFdlYlBy
b2Nlc3NQcm94eSogcHJvY2VzcykKIHsKLSAgICAvLyBGSVhNRTogT25jZSB3ZSBzdXBwb3J0IG11
bHRpcGxlIHByb2Nlc3NlcyBwZXIgY29udGV4dCwgdGhpcyBhc3NlcnRpb24gd29uJ3QgaG9sZC4K
LSAgICBBU1NFUlRfVU5VU0VEKHByb2Nlc3MsIHByb2Nlc3MgPT0gbV9wcm9jZXNzKTsKKyAgICBB
U1NFUlQobV9wcm9jZXNzZXMuY29udGFpbnMocHJvY2VzcykpOwogCiAgICAgbV92aXNpdGVkTGlu
a1Byb3ZpZGVyLnByb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcoKTsKIApAQCAtMzg3LDcgKzQwMyw3
IEBAIHZvaWQgV2ViQ29udGV4dDo6cHJvY2Vzc0RpZEZpbmlzaExhdW5jaGkKICAgICAgICAgU3Ry
aW5nIHNhbXBsZUxvZ0ZpbGVQYXRoID0gU3RyaW5nOjpmb3JtYXQoIldlYlByb2Nlc3MlbGx1Iiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihub3cpKTsKICAgICAgICAgc2FtcGxlTG9n
RmlsZVBhdGggPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxl
KHNhbXBsZUxvZ0ZpbGVQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpXcml0ZU9ubHksIHNhbXBsZUxv
Z1NhbmRib3hIYW5kbGUpOwogICAgICAgICAKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzOjpTdGFydE1lbW9yeVNhbXBsZXIoc2FtcGxlTG9nU2FuZGJveEhhbmRs
ZSwgc2FtcGxlTG9nRmlsZVBhdGgsIG1fbWVtb3J5U2FtcGxlckludGVydmFsKSwgMCk7CisgICAg
ICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlN0YXJ0TWVtb3J5U2FtcGxl
cihzYW1wbGVMb2dTYW5kYm94SGFuZGxlLCBzYW1wbGVMb2dGaWxlUGF0aCwgbV9tZW1vcnlTYW1w
bGVySW50ZXJ2YWwpLCAwKTsKICAgICB9CiAKICAgICBtX2Nvbm5lY3Rpb25DbGllbnQuZGlkQ3Jl
YXRlQ29ubmVjdGlvbih0aGlzLCBwcm9jZXNzLT53ZWJDb25uZWN0aW9uKCkpOwpAQCAtMzk1LDgg
KzQxMSw3IEBAIHZvaWQgV2ViQ29udGV4dDo6cHJvY2Vzc0RpZEZpbmlzaExhdW5jaGkKIAogdm9p
ZCBXZWJDb250ZXh0OjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3Mp
CiB7Ci0gICAgLy8gRklYTUU6IE9uY2Ugd2Ugc3VwcG9ydCBtdWx0aXBsZSBwcm9jZXNzZXMgcGVy
IGNvbnRleHQsIHRoaXMgYXNzZXJ0aW9uIHdvbid0IGhvbGQuCi0gICAgQVNTRVJUX1VOVVNFRChw
cm9jZXNzLCBwcm9jZXNzID09IG1fcHJvY2Vzcyk7CisgICAgQVNTRVJUKG1fcHJvY2Vzc2VzLmNv
bnRhaW5zKHByb2Nlc3MpKTsKIAogICAgIG1fdmlzaXRlZExpbmtQcm92aWRlci5wcm9jZXNzRGlk
Q2xvc2UoKTsKIApAQCAtNDM4LDUzICs0NTMsNzQgQEAgdm9pZCBXZWJDb250ZXh0OjpkaXNjb25u
ZWN0UHJvY2VzcyhXZWJQcgogI2VuZGlmCiAKICAgICAvLyBUaGlzIGNhbiBjYXVzZSB0aGUgd2Vi
IGNvbnRleHQgdG8gYmUgZGVzdHJveWVkLgotICAgIG1fcHJvY2VzcyA9IDA7CisgICAgbV9wcm9j
ZXNzZXMucmVtb3ZlKG1fcHJvY2Vzc2VzLmZpbmQocHJvY2VzcykpOwogfQogCiBQYXNzUmVmUHRy
PFdlYlBhZ2VQcm94eT4gV2ViQ29udGV4dDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50KiBwYWdl
Q2xpZW50LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCkKIHsKLSAgICBlbnN1cmVXZWJQcm9jZXNz
KCk7CisgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzczsKKyAgICBpZiAobV9wcm9j
ZXNzTW9kZWwgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcykgeworICAgICAg
ICBlbnN1cmVTaGFyZWRXZWJQcm9jZXNzKCk7CisgICAgICAgIHByb2Nlc3MgPSBtX3Byb2Nlc3Nl
c1swXTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vzcyk6
IEFkZCBsb2dpYyBmb3Igc2hhcmluZyBhIHByb2Nlc3MuCisgICAgICAgIHByb2Nlc3MgPSBjcmVh
dGVOZXdXZWJQcm9jZXNzKCk7CisgICAgICAgIG1fcHJvY2Vzc2VzLmFwcGVuZChwcm9jZXNzKTsK
KyAgICB9CiAKICAgICBpZiAoIXBhZ2VHcm91cCkKICAgICAgICAgcGFnZUdyb3VwID0gbV9kZWZh
dWx0UGFnZUdyb3VwLmdldCgpOwogCi0gICAgcmV0dXJuIG1fcHJvY2Vzcy0+Y3JlYXRlV2ViUGFn
ZShwYWdlQ2xpZW50LCB0aGlzLCBwYWdlR3JvdXApOworICAgIHJldHVybiBwcm9jZXNzLT5jcmVh
dGVXZWJQYWdlKHBhZ2VDbGllbnQsIHRoaXMsIHBhZ2VHcm91cCk7CiB9CiAKIFdlYlByb2Nlc3NQ
cm94eSogV2ViQ29udGV4dDo6cmVsYXVuY2hQcm9jZXNzSWZOZWNlc3NhcnkoKQogewotICAgIGVu
c3VyZVdlYlByb2Nlc3MoKTsKLQotICAgIEFTU0VSVChtX3Byb2Nlc3MpOwotICAgIHJldHVybiBt
X3Byb2Nlc3MuZ2V0KCk7CisgICAgaWYgKG1fcHJvY2Vzc01vZGVsID09IFByb2Nlc3NNb2RlbFNo
YXJlZFNlY29uZGFyeVByb2Nlc3MpIHsKKyAgICAgICAgZW5zdXJlU2hhcmVkV2ViUHJvY2Vzcygp
OworICAgICAgICByZXR1cm4gbV9wcm9jZXNzZXNbMF0uZ2V0KCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiBXaGF0IHNob3VsZCB0aGlzIGRvIGlu
IHRoaXMgbW9kZWw/CisgICAgICAgIHJldHVybiAwOworICAgIH0KIH0KIAogRG93bmxvYWRQcm94
eSogV2ViQ29udGV4dDo6ZG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIGVuc3VyZVdlYlByb2Nlc3MoKTsK
KyAgICBpZiAobV9wcm9jZXNzTW9kZWwgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJv
Y2VzcykgeworICAgICAgICBlbnN1cmVTaGFyZWRXZWJQcm9jZXNzKCk7CiAKLSAgICBEb3dubG9h
ZFByb3h5KiBkb3dubG9hZCA9IGNyZWF0ZURvd25sb2FkUHJveHkoKTsKLSAgICB1aW50NjRfdCBp
bml0aWF0aW5nUGFnZUlEID0gaW5pdGlhdGluZ1BhZ2UgPyBpbml0aWF0aW5nUGFnZS0+cGFnZUlE
KCkgOiAwOworICAgICAgICBEb3dubG9hZFByb3h5KiBkb3dubG9hZCA9IGNyZWF0ZURvd25sb2Fk
UHJveHkoKTsKKyAgICAgICAgdWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCA9IGluaXRpYXRpbmdQ
YWdlID8gaW5pdGlhdGluZ1BhZ2UtPnBhZ2VJRCgpIDogMDsKIAogI2lmIFBMQVRGT1JNKFFUKQot
ICAgIEFTU0VSVChpbml0aWF0aW5nUGFnZSk7IC8vIE91ciBkZXNpZ24gZG9lcyBub3Qgc3VwcHBv
cnQgZG93bmxvYWRzIHdpdGhvdXQgYSBXZWJQYWdlLgotICAgIGluaXRpYXRpbmdQYWdlLT5oYW5k
bGVEb3dubG9hZFJlcXVlc3QoZG93bmxvYWQpOworICAgICAgICBBU1NFUlQoaW5pdGlhdGluZ1Bh
Z2UpOyAvLyBPdXIgZGVzaWduIGRvZXMgbm90IHN1cHBwb3J0IGRvd25sb2FkcyB3aXRob3V0IGEg
V2ViUGFnZS4KKyAgICAgICAgaW5pdGlhdGluZ1BhZ2UtPmhhbmRsZURvd25sb2FkUmVxdWVzdChk
b3dubG9hZCk7CiAjZW5kaWYKIAotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUHJv
Y2Vzczo6RG93bmxvYWRSZXF1ZXN0KGRvd25sb2FkLT5kb3dubG9hZElEKCksIGluaXRpYXRpbmdQ
YWdlSUQsIHJlcXVlc3QpLCAwKTsKLSAgICByZXR1cm4gZG93bmxvYWQ7CisgICAgICAgIG1fcHJv
Y2Vzc2VzWzBdLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEb3dubG9hZFJlcXVlc3QoZG93
bmxvYWQtPmRvd25sb2FkSUQoKSwgaW5pdGlhdGluZ1BhZ2VJRCwgcmVxdWVzdCksIDApOworICAg
ICAgICByZXR1cm4gZG93bmxvYWQ7CisKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBGSVhNRTog
KE11bHRpLVdlYlByb2Nlc3MpOiBJbXBsZW1lbnQuCisgICAgICAgIHJldHVybiAwOworICAgIH0K
IH0KIAogdm9pZCBXZWJDb250ZXh0Ojpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJT2JqZWN0KiBtZXNzYWdlQm9keSkKIHsKLSAgICBpZiAo
IW1fcHJvY2VzcyB8fCAhbV9wcm9jZXNzLT5jYW5TZW5kTWVzc2FnZSgpKSB7Ci0gICAgICAgIG1f
cGVuZGluZ01lc3NhZ2VzVG9Qb3N0VG9JbmplY3RlZEJ1bmRsZS5hcHBlbmQoc3RkOjptYWtlX3Bh
aXIobWVzc2FnZU5hbWUsIG1lc3NhZ2VCb2R5KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Cisg
ICAgaWYgKG1fcHJvY2Vzc01vZGVsID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nl
c3MpIHsKKyAgICAgICAgaWYgKG1fcHJvY2Vzc2VzLmlzRW1wdHkoKSB8fCAhbV9wcm9jZXNzZXNb
MF0tPmNhblNlbmRNZXNzYWdlKCkpIHsKKyAgICAgICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzVG9Q
b3N0VG9JbmplY3RlZEJ1bmRsZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIobWVzc2FnZU5hbWUsIG1l
c3NhZ2VCb2R5KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgY29uc2lkZXIgcmV0dXJuaW5nIGZhbHNlIGZyb20gdGhpcyBmdW5jdGlv
biBpZiB0aGUgbWVzc2FnZUJvZHkgY2Fubm90Ci0gICAgLy8gYmUgZW5jb2RlZC4KLSAgICBtX3By
b2Nlc3MtPmRlcHJlY2F0ZWRTZW5kKEluamVjdGVkQnVuZGxlTWVzc2FnZTo6UG9zdE1lc3NhZ2Us
IDAsIENvcmVJUEM6OkluKG1lc3NhZ2VOYW1lLCBXZWJDb250ZXh0VXNlck1lc3NhZ2VFbmNvZGVy
KG1lc3NhZ2VCb2R5KSkpOworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIHJl
dHVybmluZyBmYWxzZSBmcm9tIHRoaXMgZnVuY3Rpb24gaWYgdGhlIG1lc3NhZ2VCb2R5IGNhbm5v
dAorICAgICAgICAvLyBiZSBlbmNvZGVkLgorICAgICAgICBtX3Byb2Nlc3Nlc1swXS0+ZGVwcmVj
YXRlZFNlbmQoSW5qZWN0ZWRCdW5kbGVNZXNzYWdlOjpQb3N0TWVzc2FnZSwgMCwgQ29yZUlQQzo6
SW4obWVzc2FnZU5hbWUsIFdlYkNvbnRleHRVc2VyTWVzc2FnZUVuY29kZXIobWVzc2FnZUJvZHkp
KSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiBJ
bXBsZW1lbnQuCisgICAgfQogfQogCiAvLyBJbmplY3RlZEJ1bmRsZSBjbGllbnQKQEAgLTcyMCw3
ICs3NTYsNyBAQCB2b2lkIFdlYkNvbnRleHQ6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShXCiAgICAg
ICAgICAgICBkb3dubG9hZFByb3h5LT5kaWRSZWNlaXZlU3luY0Rvd25sb2FkUHJveHlNZXNzYWdl
KHByb2Nlc3MtPmNvbm5lY3Rpb24oKSwgbWVzc2FnZUlELCBhcmd1bWVudHMsIHJlcGx5KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQ
Qzo6TWVzc2FnZUNsYXNzV2ViSWNvbkRhdGFiYXNlPigpKSB7CiAgICAgICAgIG1faWNvbkRhdGFi
YXNlLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UocHJvY2Vzcy0+Y29ubmVjdGlvbigpLCBtZXNzYWdl
SUQsIGFyZ3VtZW50cywgcmVwbHkpOwogICAgICAgICByZXR1cm47CkBAIC04MzksMTQgKzg3NSwy
MCBAQCBib29sIFdlYkNvbnRleHQ6Omh0dHBQaXBlbGluaW5nRW5hYmxlZCgpCiAKIHZvaWQgV2Vi
Q29udGV4dDo6Z2V0V2ViQ29yZVN0YXRpc3RpY3MoUGFzc1JlZlB0cjxEaWN0aW9uYXJ5Q2FsbGJh
Y2s+IGNhbGxiYWNrKQogewotICAgIGlmICghbV9wcm9jZXNzKSB7CisgICAgaWYgKG1fcHJvY2Vz
c01vZGVsID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpIHsKKyAgICAgICAg
aWYgKG1fcHJvY2Vzc2VzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgY2FsbGJhY2stPmludmFs
aWRhdGUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgICAg
IG1fZGljdGlvbmFyeUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2suZ2V0KCkpOwor
ICAgICAgICBtX3Byb2Nlc3Nlc1swXS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6R2V0V2Vi
Q29yZVN0YXRpc3RpY3MoY2FsbGJhY2tJRCksIDApOworCisgICAgfSBlbHNlIHsKKyAgICAgICAg
Ly8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiBJbXBsZW1lbnQuCiAgICAgICAgIGNhbGxiYWNr
LT5pbnZhbGlkYXRlKCk7Ci0gICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgdWludDY0
X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV9kaWN0aW9uYXJ5
Q2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5nZXQoKSk7Ci0gICAgcHJvY2Vzcygp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpHZXRXZWJDb3JlU3RhdGlzdGljcyhjYWxsYmFj
a0lEKSwgMCk7CiB9CiAKIHN0YXRpYyBQYXNzUmVmUHRyPE11dGFibGVEaWN0aW9uYXJ5PiBjcmVh
dGVEaWN0aW9uYXJ5RnJvbUhhc2hNYXAoY29uc3QgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90PiYg
bWFwKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCShyZXZpc2lvbiAx
MjU0NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCSh3b3JraW5n
IGNvcHkpCkBAIC05MCwxMCArOTAsMTIgQEAgcHVibGljOgogICAgIHZvaWQgaW5pdGlhbGl6ZURv
d25sb2FkQ2xpZW50KGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50Kik7CiAKICAgICBQcm9j
ZXNzTW9kZWwgcHJvY2Vzc01vZGVsKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzTW9kZWw7IH0K
LSAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3Mu
Z2V0KCk7IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZFRvQWxsUHJvY2Vz
c2VzKGNvbnN0IFUmIG1lc3NhZ2UpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2Vu
ZFRvQWxsUHJvY2Vzc2VzUmVsYXVuY2hpbmdUaGVtSWZOZWNlc3NhcnkoY29uc3QgVSYgbWVzc2Fn
ZSk7CisgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiBSZW1vdmUuIE5vIGNvZGUgc2hv
dWxkIGFzc3VtZSB0aGF0IHRoZXJlIGlzIGEgc2hhcmVkIHByb2Nlc3MuCisgICAgV2ViUHJvY2Vz
c1Byb3h5KiBkZXByZWNhdGVkU2hhcmVkUHJvY2VzcygpOworCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVT4gdm9pZCBzZW5kVG9BbGxQcm9jZXNzZXMoY29uc3QgVSYgbWVzc2FnZSk7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBzZW5kVG9BbGxQcm9jZXNzZXNSZWxhdW5jaGluZ1RoZW1J
Zk5lY2Vzc2FyeShjb25zdCBVJiBtZXNzYWdlKTsKICAgICAKICAgICB2b2lkIHByb2Nlc3NEaWRG
aW5pc2hMYXVuY2hpbmcoV2ViUHJvY2Vzc1Byb3h5Kik7CiAKQEAgLTE5OCw3ICsyMDAsOCBAQCBw
dWJsaWM6CiAgICAgU3RyaW5nIGljb25EYXRhYmFzZVBhdGgoKSBjb25zdDsKICAgICB2b2lkIHNl
dExvY2FsU3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcikgeyBtX292ZXJyaWRlTG9j
YWxTdG9yYWdlRGlyZWN0b3J5ID0gZGlyOyB9CiAKLSAgICB2b2lkIGVuc3VyZVdlYlByb2Nlc3Mo
KTsKKyAgICB2b2lkIGVuc3VyZVNoYXJlZFdlYlByb2Nlc3MoKTsKKyAgICBQYXNzUmVmUHRyPFdl
YlByb2Nlc3NQcm94eT4gY3JlYXRlTmV3V2ViUHJvY2VzcygpOwogICAgIHZvaWQgd2FybUluaXRp
YWxQcm9jZXNzKCk7CiAKICAgICBib29sIHNob3VsZFRlcm1pbmF0ZShXZWJQcm9jZXNzUHJveHkq
KTsKQEAgLTI2NCw4ICsyNjcsNyBAQCBwcml2YXRlOgogCiAgICAgUHJvY2Vzc01vZGVsIG1fcHJv
Y2Vzc01vZGVsOwogICAgIAotICAgIC8vIEZJWE1FOiBJbiB0aGUgZnV0dXJlLCB0aGlzIHNob3Vs
ZCBiZSBvbmUgb3IgbW9yZSBXZWJQcm9jZXNzUHJveGllcy4KLSAgICBSZWZQdHI8V2ViUHJvY2Vz
c1Byb3h5PiBtX3Byb2Nlc3M7CisgICAgVmVjdG9yPFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+ID4g
bV9wcm9jZXNzZXM7CiAKICAgICBSZWZQdHI8V2ViUGFnZUdyb3VwPiBtX2RlZmF1bHRQYWdlR3Jv
dXA7CiAKQEAgLTM0MCwxOSArMzQyLDIwIEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRf
dCwgUmVmUHRyPERpY3Rpb25hcnlDYWxsYmFjaz4gPiBtX2RpY3Rpb25hcnlDYWxsYmFja3M7CiB9
OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBXZWJDb250ZXh0OjpzZW5kVG9B
bGxQcm9jZXNzZXMoY29uc3QgVSYgbWVzc2FnZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGlu
ZSB2b2lkIFdlYkNvbnRleHQ6OnNlbmRUb0FsbFByb2Nlc3Nlcyhjb25zdCBVJiBtZXNzYWdlKQog
ewotICAgIGlmICghbV9wcm9jZXNzIHx8ICFtX3Byb2Nlc3MtPmNhblNlbmRNZXNzYWdlKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBtX3Byb2Nlc3MtPnNlbmQobWVzc2Fn
ZSwgMCk7CisgICAgc2l6ZV90IHByb2Nlc3NDb3VudCA9IG1fcHJvY2Vzc2VzLnNpemUoKTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2Nlc3NDb3VudDsgKytpKSB7CisgICAgICAgIFdl
YlByb2Nlc3NQcm94eSogcHJvY2VzcyA9IG1fcHJvY2Vzc2VzW2ldLmdldCgpOworICAgICAgICBp
ZiAocHJvY2Vzcy0+Y2FuU2VuZE1lc3NhZ2UoKSkKKyAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQo
bWVzc2FnZSwgMCk7CisgICAgfQogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIFdlYkNv
bnRleHQ6OnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KGNvbnN0
IFUmIG1lc3NhZ2UpCit0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lkIFdlYkNvbnRleHQ6OnNlbmRU
b0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KGNvbnN0IFUmIG1lc3NhZ2Up
CiB7CiAgICAgcmVsYXVuY2hQcm9jZXNzSWZOZWNlc3NhcnkoKTsKLQotICAgIHJldHVybiBtX3By
b2Nlc3MtPnNlbmQobWVzc2FnZSwgMCk7CisgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKG1lc3NhZ2Up
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAxMjU0NTEpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTgzLDggKzE4Myw2IEBAIFdlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHUK
IAogUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFn
ZShQYWdlQ2xpZW50KiBwYWdlQ2xpZW50LCBXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQYWdlR3Jv
dXAqIHBhZ2VHcm91cCkKIHsKLSAgICBBU1NFUlQoY29udGV4dC0+cHJvY2VzcygpID09IHRoaXMp
OwotCiAgICAgdWludDY0X3QgcGFnZUlEID0gZ2VuZXJhdGVQYWdlSUQoKTsKICAgICBSZWZQdHI8
V2ViUGFnZVByb3h5PiB3ZWJQYWdlID0gV2ViUGFnZVByb3h5OjpjcmVhdGUocGFnZUNsaWVudCwg
dGhpcywgcGFnZUdyb3VwLCBwYWdlSUQpOwogICAgIG1fcGFnZU1hcC5zZXQocGFnZUlELCB3ZWJQ
YWdlLmdldCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAkocmV2aXNpb24gMTI1NDUxKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTgsNyArOTgsOCBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50
aWNhCiAgICAgaWYgKCFtX3dlYkNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0
cjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5ID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTo6Y3JlYXRlKGF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCwgbV93ZWJDb250ZXh0LT5wcm9jZXNzKCkpOworICAgIC8v
IEZJWE1FIChNdWx0aS1XZWJQcm9jZXNzKTogR2V0IHJpZCBvZiBkZXByZWNhdGVkU2hhcmVkUHJv
Y2Vzcy4KKyAgICBSZWZQdHI8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4gYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OmNyZWF0
ZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxlbmdlSUQsIG1fd2ViQ29udGV4dC0+ZGVw
cmVjYXRlZFNoYXJlZFByb2Nlc3MoKSk7CiAgICAgbV93ZWJDb250ZXh0LT5kb3dubG9hZENsaWVu
dCgpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX3dlYkNvbnRleHQsIHRoaXMs
IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuZ2V0KCkpOwogfQogCg==
</data>
<flag name="review"
          id="168218"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="168228"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158405</attachid>
            <date>2012-08-14 13:31:07 -0700</date>
            <delta_ts>2012-08-14 13:31:15 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>ProcessVector.txt</filename>
            <type>text/plain</type>
            <size>18612</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNTU5NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTA4LTE0ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFRyYWNrIG11bHRp
cGxlIFdlYiBQcm9jZXNzZXMgcGVyIGNvbnRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkzOTE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdl
aW5pZy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSk6IERvd25sb2FkcyBkb24ndCB3b3JrCisgICAgICAgIHlldCwgYWRkZWQgYSBG
SVhNRS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29udGV4dDo6ZGVwcmVjYXRlZFNoYXJlZFByb2Nlc3MpOiBSZW5hbWVkIGZyb20g
cHJvY2VzcygpLCBhZGRlZCBhbgorICAgICAgICBhc3NlcnRpb24gdGhhdCB0aGlzIGlzIG9ubHkg
dXNlZCBpbiBzaW5nbGUgcHJvY2VzIG1vZGUuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6
OnRleHRDaGVja2VyU3RhdGVDaGFuZ2VkKTogQWJzdHJhY3Qgb3V0IGFjY2VzcyB0byB3ZWIgcHJv
Y2Vzc2VzLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjplbnN1cmVTaGFyZWRXZWJQcm9j
ZXNzKTogUmVuYW1lZCBlbnN1cmVXZWJQcm9jZXNzKCkgZm9yIGNsYXJpdHkuCisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOiBFeHRyYWN0ZWQgY29kZSBm
b3IgY3JlYXRpbmcgYSBwcm9jZXNzCisgICAgICAgIGZyb20gZW5zdXJlV2ViUHJvY2VzcygpLgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojp3YXJtSW5pdGlhbFByb2Nlc3MpOiBDcmVhdGUg
dGhlIHByb2Nlc3MgbW9yZSBleHBsaWNpdGx5LgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
OjplbmFibGVQcm9jZXNzVGVybWluYXRpb24pOiBJdGVyYXRlIG92ZXIgYWxsIHByb2Nlc3Nlcy4K
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6c2hvdWxkVGVybWluYXRlKTogVXBkYXRlZCBh
c3NlcnRpb24uCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnByb2Nlc3NEaWRGaW5pc2hM
YXVuY2hpbmcpOiBDaGFuZ2VkIHRvIHVzZSBwcm9jZXNzIGFyZ3VtZW50CisgICAgICAgIGluc3Rl
YWQgb2YgbV9wcm9jZXNzLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpkaXNjb25uZWN0
UHJvY2Vzcyk6IFVwZGF0ZWQgY29kZSBmb3J0byB1c2UgbV9wcm9jZXNzZXMuCisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHQ6OmNyZWF0ZVdlYlBhZ2UpOiBIYW5kbGUgYm90aCBwcm9jZXNzIHBv
bGljaWVzIChpbml0aWFsIHN1cHBvcnQKKyAgICAgICAgZm9yIG11bHRpLXByb2Nlc3MpLgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpyZWxhdW5jaFByb2Nlc3NJZk5lY2Vzc2FyeSk6IEFk
ZGVkIGNhc2VzIGZvciBib3RoIHBvbGljaWVzLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
Ojpkb3dubG9hZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpwb3N0TWVz
c2FnZVRvSW5qZWN0ZWRCdW5kbGUpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4
dDo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKTogRml4ZWQgd2hpdGVzcGFjZS4KKyAgICAgICAgKFdl
YktpdDo6V2ViQ29udGV4dDo6Z2V0V2ViQ29yZVN0YXRpc3RpY3MpOiBBZGRlZCBjYXNlcyBmb3Ig
Ym90aCBwb2xpY2llcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnNlbmRUb0FsbFByb2Nlc3Nlcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHQ6OnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVj
ZXNzYXJ5KToKKyAgICAgICAgU2VuZCB0byBhbGwgcHJvY2Vzc2VzLiBDaGFuZ2VkIHJldHVybiB0
eXBlIHRvIHZvaWQsIHNpbmNlIG5vIGNhbGxlciBjaGVja2VkIGl0LgorCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Y3Jl
YXRlV2ViUGFnZSk6IFJlbW92ZWQKKyAgICAgICAgYW4gYXNzZXJ0aW9uIHRoYXQgYXNzdW1lZCBv
bmUgcHJvY2VzcyBwZXIgY29udGV4dC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJUZXh0Q2hl
Y2tlci5jcHA6IChXZWJLaXQ6OnVwZGF0ZVN0YXRlRm9yQWxsV2ViUHJvY2Vzc2VzKTogVXBkYXRl
ZAorICAgICAgICB0byB1c2UgYSBXZWJDb250ZXh0IG1ldGhvZC4KKwogMjAxMi0wOC0xNCAgTWlr
aGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KIAogICAgICAg
ICBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBSZXNvdXJj
ZUxvYWRDYWxsYmFja3MKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5j
cHAJKHJldmlzaW9uIDEyNTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU0LDcgKzI1NCwxNSBAQCB2b2lkIFdlYkNvbnRl
eHQ6OmluaXRpYWxpemVEb3dubG9hZENsaWVuCiB7CiAgICAgbV9kb3dubG9hZENsaWVudC5pbml0
aWFsaXplKGNsaWVudCk7CiB9Ci0gICAgCisKK1dlYlByb2Nlc3NQcm94eSogV2ViQ29udGV4dDo6
ZGVwcmVjYXRlZFNoYXJlZFByb2Nlc3MoKQoreworICAgIEFTU0VSVChtX3Byb2Nlc3NNb2RlbCA9
PSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKTsKKyAgICBpZiAobV9wcm9jZXNz
ZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9wcm9jZXNzZXNb
MF0uZ2V0KCk7Cit9CisKIHZvaWQgV2ViQ29udGV4dDo6bGFuZ3VhZ2VDaGFuZ2VkKHZvaWQqIGNv
bnRleHQpCiB7CiAgICAgc3RhdGljX2Nhc3Q8V2ViQ29udGV4dCo+KGNvbnRleHQpLT5sYW5ndWFn
ZUNoYW5nZWQoKTsKQEAgLTI3MCwxMiArMjc4LDIwIEBAIHZvaWQgV2ViQ29udGV4dDo6ZnVsbEtl
eWJvYXJkQWNjZXNzTW9kZUMKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OkZ1bGxLZXlib2FyZEFjY2Vzc01vZGVDaGFuZ2VkKGZ1bGxLZXlib2FyZEFjY2Vzc0Vu
YWJsZWQpKTsKIH0KIAotdm9pZCBXZWJDb250ZXh0OjplbnN1cmVXZWJQcm9jZXNzKCkKK3ZvaWQg
V2ViQ29udGV4dDo6dGV4dENoZWNrZXJTdGF0ZUNoYW5nZWQoKQogewotICAgIGlmIChtX3Byb2Nl
c3MpCi0gICAgICAgIHJldHVybjsKKyAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6Oldl
YlByb2Nlc3M6OlNldFRleHRDaGVja2VyU3RhdGUoVGV4dENoZWNrZXI6OnN0YXRlKCkpKTsKK30K
Kwordm9pZCBXZWJDb250ZXh0OjplbnN1cmVTaGFyZWRXZWJQcm9jZXNzKCkKK3sKKyAgICBpZiAo
bV9wcm9jZXNzZXMuaXNFbXB0eSgpKQorICAgICAgICBtX3Byb2Nlc3Nlcy5hcHBlbmQoY3JlYXRl
TmV3V2ViUHJvY2VzcygpKTsKK30KIAotICAgIG1fcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6
Y3JlYXRlKHRoaXMpOworUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IFdlYkNvbnRleHQ6OmNy
ZWF0ZU5ld1dlYlByb2Nlc3MoKQoreworICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb2Nl
c3MgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZSh0aGlzKTsKIAogICAgIFdlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKIApAQCAtMzIwLDMxICszMzYsMzcgQEAgdm9pZCBX
ZWJDb250ZXh0OjplbnN1cmVXZWJQcm9jZXNzKCkKICAgICBSZWZQdHI8QVBJT2JqZWN0PiBpbmpl
Y3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEgPSBtX2luamVjdGVkQnVuZGxlQ2xpZW50
LmdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSh0aGlzKTsKICAgICBpZiAo
IWluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkKICAgICAgICAgaW5qZWN0ZWRC
dW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhID0gbV9pbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0
aW9uVXNlckRhdGE7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpJ
bml0aWFsaXplV2ViUHJvY2VzcyhwYXJhbWV0ZXJzLCBXZWJDb250ZXh0VXNlck1lc3NhZ2VFbmNv
ZGVyKGluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YS5nZXQoKSkpLCAwKTsKKyAg
ICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpJbml0aWFsaXplV2ViUHJvY2Vz
cyhwYXJhbWV0ZXJzLCBXZWJDb250ZXh0VXNlck1lc3NhZ2VFbmNvZGVyKGluamVjdGVkQnVuZGxl
SW5pdGlhbGl6YXRpb25Vc2VyRGF0YS5nZXQoKSkpLCAwKTsKIAogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpICE9IG1fcGVuZGluZ01lc3NhZ2VzVG9Qb3N0VG9JbmplY3RlZEJ1bmRsZS5zaXplKCk7
ICsraSkgewogICAgICAgICBwYWlyPFN0cmluZywgUmVmUHRyPEFQSU9iamVjdD4gPiYgbWVzc2Fn
ZSA9IG1fcGVuZGluZ01lc3NhZ2VzVG9Qb3N0VG9JbmplY3RlZEJ1bmRsZVtpXTsKLSAgICAgICAg
bV9wcm9jZXNzLT5kZXByZWNhdGVkU2VuZChJbmplY3RlZEJ1bmRsZU1lc3NhZ2U6OlBvc3RNZXNz
YWdlLCAwLCBDb3JlSVBDOjpJbihtZXNzYWdlLmZpcnN0LCBXZWJDb250ZXh0VXNlck1lc3NhZ2VF
bmNvZGVyKG1lc3NhZ2Uuc2Vjb25kLmdldCgpKSkpOworICAgICAgICBwcm9jZXNzLT5kZXByZWNh
dGVkU2VuZChJbmplY3RlZEJ1bmRsZU1lc3NhZ2U6OlBvc3RNZXNzYWdlLCAwLCBDb3JlSVBDOjpJ
bihtZXNzYWdlLmZpcnN0LCBXZWJDb250ZXh0VXNlck1lc3NhZ2VFbmNvZGVyKG1lc3NhZ2Uuc2Vj
b25kLmdldCgpKSkpOwogICAgIH0KKyAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vzcyk6IFdo
YXQgZG9lcyB0aGlzIG1lYW4gaW4gdGhlIGJyYXZlIG5ldyB3b3JsZD8KICAgICBtX3BlbmRpbmdN
ZXNzYWdlc1RvUG9zdFRvSW5qZWN0ZWRCdW5kbGUuY2xlYXIoKTsKKworICAgIHJldHVybiBwcm9j
ZXNzLnJlbGVhc2UoKTsKIH0KIAogdm9pZCBXZWJDb250ZXh0Ojp3YXJtSW5pdGlhbFByb2Nlc3Mo
KSAgCiB7Ci0gICAgZW5zdXJlV2ViUHJvY2VzcygpOworICAgIEFTU0VSVChtX3Byb2Nlc3Nlcy5p
c0VtcHR5KCkpOworICAgIG1fcHJvY2Vzc2VzLmFwcGVuZChjcmVhdGVOZXdXZWJQcm9jZXNzKCkp
OwogfQogCiB2b2lkIFdlYkNvbnRleHQ6OmVuYWJsZVByb2Nlc3NUZXJtaW5hdGlvbigpCiB7CiAg
ICAgbV9wcm9jZXNzVGVybWluYXRpb25FbmFibGVkID0gdHJ1ZTsKLSAgICBpZiAoc2hvdWxkVGVy
bWluYXRlKG1fcHJvY2Vzcy5nZXQoKSkpCi0gICAgICAgIG1fcHJvY2Vzcy0+dGVybWluYXRlKCk7
CisgICAgVmVjdG9yPFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+ID4gcHJvY2Vzc2VzID0gbV9wcm9j
ZXNzZXM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9jZXNzZXMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgaWYgKHNob3VsZFRlcm1pbmF0ZShwcm9jZXNzZXNbaV0uZ2V0KCkpKQorICAg
ICAgICAgICAgcHJvY2Vzc2VzW2ldLT50ZXJtaW5hdGUoKTsKKyAgICB9CiB9CiAKIGJvb2wgV2Vi
Q29udGV4dDo6c2hvdWxkVGVybWluYXRlKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKIHsKLSAg
ICAvLyBGSVhNRTogT25jZSB3ZSBzdXBwb3J0IG11bHRpcGxlIHByb2Nlc3NlcyBwZXIgY29udGV4
dCwgdGhpcyBhc3NlcnRpb24gd29uJ3QgaG9sZC4KLSAgICBBU1NFUlQocHJvY2VzcyA9PSBtX3By
b2Nlc3MpOworICAgIEFTU0VSVChtX3Byb2Nlc3Nlcy5jb250YWlucyhwcm9jZXNzKSk7CiAKICAg
ICBpZiAoIW1fcHJvY2Vzc1Rlcm1pbmF0aW9uRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMzc0LDggKzM5Niw3IEBAIGJvb2wgV2ViQ29udGV4dDo6c2hvdWxkVGVybWluYXRlKFdl
YlByb2MKIAogdm9pZCBXZWJDb250ZXh0Ojpwcm9jZXNzRGlkRmluaXNoTGF1bmNoaW5nKFdlYlBy
b2Nlc3NQcm94eSogcHJvY2VzcykKIHsKLSAgICAvLyBGSVhNRTogT25jZSB3ZSBzdXBwb3J0IG11
bHRpcGxlIHByb2Nlc3NlcyBwZXIgY29udGV4dCwgdGhpcyBhc3NlcnRpb24gd29uJ3QgaG9sZC4K
LSAgICBBU1NFUlRfVU5VU0VEKHByb2Nlc3MsIHByb2Nlc3MgPT0gbV9wcm9jZXNzKTsKKyAgICBB
U1NFUlQobV9wcm9jZXNzZXMuY29udGFpbnMocHJvY2VzcykpOwogCiAgICAgbV92aXNpdGVkTGlu
a1Byb3ZpZGVyLnByb2Nlc3NEaWRGaW5pc2hMYXVuY2hpbmcoKTsKIApAQCAtMzg3LDcgKzQwOCw3
IEBAIHZvaWQgV2ViQ29udGV4dDo6cHJvY2Vzc0RpZEZpbmlzaExhdW5jaGkKICAgICAgICAgU3Ry
aW5nIHNhbXBsZUxvZ0ZpbGVQYXRoID0gU3RyaW5nOjpmb3JtYXQoIldlYlByb2Nlc3MlbGx1Iiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihub3cpKTsKICAgICAgICAgc2FtcGxlTG9n
RmlsZVBhdGggPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxl
KHNhbXBsZUxvZ0ZpbGVQYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpXcml0ZU9ubHksIHNhbXBsZUxv
Z1NhbmRib3hIYW5kbGUpOwogICAgICAgICAKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzOjpTdGFydE1lbW9yeVNhbXBsZXIoc2FtcGxlTG9nU2FuZGJveEhhbmRs
ZSwgc2FtcGxlTG9nRmlsZVBhdGgsIG1fbWVtb3J5U2FtcGxlckludGVydmFsKSwgMCk7CisgICAg
ICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlN0YXJ0TWVtb3J5U2FtcGxl
cihzYW1wbGVMb2dTYW5kYm94SGFuZGxlLCBzYW1wbGVMb2dGaWxlUGF0aCwgbV9tZW1vcnlTYW1w
bGVySW50ZXJ2YWwpLCAwKTsKICAgICB9CiAKICAgICBtX2Nvbm5lY3Rpb25DbGllbnQuZGlkQ3Jl
YXRlQ29ubmVjdGlvbih0aGlzLCBwcm9jZXNzLT53ZWJDb25uZWN0aW9uKCkpOwpAQCAtMzk1LDgg
KzQxNiw3IEBAIHZvaWQgV2ViQ29udGV4dDo6cHJvY2Vzc0RpZEZpbmlzaExhdW5jaGkKIAogdm9p
ZCBXZWJDb250ZXh0OjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3Mp
CiB7Ci0gICAgLy8gRklYTUU6IE9uY2Ugd2Ugc3VwcG9ydCBtdWx0aXBsZSBwcm9jZXNzZXMgcGVy
IGNvbnRleHQsIHRoaXMgYXNzZXJ0aW9uIHdvbid0IGhvbGQuCi0gICAgQVNTRVJUX1VOVVNFRChw
cm9jZXNzLCBwcm9jZXNzID09IG1fcHJvY2Vzcyk7CisgICAgQVNTRVJUKG1fcHJvY2Vzc2VzLmNv
bnRhaW5zKHByb2Nlc3MpKTsKIAogICAgIG1fdmlzaXRlZExpbmtQcm92aWRlci5wcm9jZXNzRGlk
Q2xvc2UoKTsKIApAQCAtNDM4LDUzICs0NTgsNzQgQEAgdm9pZCBXZWJDb250ZXh0OjpkaXNjb25u
ZWN0UHJvY2VzcyhXZWJQcgogI2VuZGlmCiAKICAgICAvLyBUaGlzIGNhbiBjYXVzZSB0aGUgd2Vi
IGNvbnRleHQgdG8gYmUgZGVzdHJveWVkLgotICAgIG1fcHJvY2VzcyA9IDA7CisgICAgbV9wcm9j
ZXNzZXMucmVtb3ZlKG1fcHJvY2Vzc2VzLmZpbmQocHJvY2VzcykpOwogfQogCiBQYXNzUmVmUHRy
PFdlYlBhZ2VQcm94eT4gV2ViQ29udGV4dDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50KiBwYWdl
Q2xpZW50LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCkKIHsKLSAgICBlbnN1cmVXZWJQcm9jZXNz
KCk7CisgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJvY2VzczsKKyAgICBpZiAobV9wcm9j
ZXNzTW9kZWwgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJvY2VzcykgeworICAgICAg
ICBlbnN1cmVTaGFyZWRXZWJQcm9jZXNzKCk7CisgICAgICAgIHByb2Nlc3MgPSBtX3Byb2Nlc3Nl
c1swXTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vzcyk6
IEFkZCBsb2dpYyBmb3Igc2hhcmluZyBhIHByb2Nlc3MuCisgICAgICAgIHByb2Nlc3MgPSBjcmVh
dGVOZXdXZWJQcm9jZXNzKCk7CisgICAgICAgIG1fcHJvY2Vzc2VzLmFwcGVuZChwcm9jZXNzKTsK
KyAgICB9CiAKICAgICBpZiAoIXBhZ2VHcm91cCkKICAgICAgICAgcGFnZUdyb3VwID0gbV9kZWZh
dWx0UGFnZUdyb3VwLmdldCgpOwogCi0gICAgcmV0dXJuIG1fcHJvY2Vzcy0+Y3JlYXRlV2ViUGFn
ZShwYWdlQ2xpZW50LCB0aGlzLCBwYWdlR3JvdXApOworICAgIHJldHVybiBwcm9jZXNzLT5jcmVh
dGVXZWJQYWdlKHBhZ2VDbGllbnQsIHRoaXMsIHBhZ2VHcm91cCk7CiB9CiAKIFdlYlByb2Nlc3NQ
cm94eSogV2ViQ29udGV4dDo6cmVsYXVuY2hQcm9jZXNzSWZOZWNlc3NhcnkoKQogewotICAgIGVu
c3VyZVdlYlByb2Nlc3MoKTsKLQotICAgIEFTU0VSVChtX3Byb2Nlc3MpOwotICAgIHJldHVybiBt
X3Byb2Nlc3MuZ2V0KCk7CisgICAgaWYgKG1fcHJvY2Vzc01vZGVsID09IFByb2Nlc3NNb2RlbFNo
YXJlZFNlY29uZGFyeVByb2Nlc3MpIHsKKyAgICAgICAgZW5zdXJlU2hhcmVkV2ViUHJvY2Vzcygp
OworICAgICAgICByZXR1cm4gbV9wcm9jZXNzZXNbMF0uZ2V0KCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiBXaGF0IHNob3VsZCB0aGlzIGRvIGlu
IHRoaXMgbW9kZWw/CisgICAgICAgIHJldHVybiAwOworICAgIH0KIH0KIAogRG93bmxvYWRQcm94
eSogV2ViQ29udGV4dDo6ZG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIGVuc3VyZVdlYlByb2Nlc3MoKTsK
KyAgICBpZiAobV9wcm9jZXNzTW9kZWwgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25kYXJ5UHJv
Y2VzcykgeworICAgICAgICBlbnN1cmVTaGFyZWRXZWJQcm9jZXNzKCk7CiAKLSAgICBEb3dubG9h
ZFByb3h5KiBkb3dubG9hZCA9IGNyZWF0ZURvd25sb2FkUHJveHkoKTsKLSAgICB1aW50NjRfdCBp
bml0aWF0aW5nUGFnZUlEID0gaW5pdGlhdGluZ1BhZ2UgPyBpbml0aWF0aW5nUGFnZS0+cGFnZUlE
KCkgOiAwOworICAgICAgICBEb3dubG9hZFByb3h5KiBkb3dubG9hZCA9IGNyZWF0ZURvd25sb2Fk
UHJveHkoKTsKKyAgICAgICAgdWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCA9IGluaXRpYXRpbmdQ
YWdlID8gaW5pdGlhdGluZ1BhZ2UtPnBhZ2VJRCgpIDogMDsKIAogI2lmIFBMQVRGT1JNKFFUKQot
ICAgIEFTU0VSVChpbml0aWF0aW5nUGFnZSk7IC8vIE91ciBkZXNpZ24gZG9lcyBub3Qgc3VwcHBv
cnQgZG93bmxvYWRzIHdpdGhvdXQgYSBXZWJQYWdlLgotICAgIGluaXRpYXRpbmdQYWdlLT5oYW5k
bGVEb3dubG9hZFJlcXVlc3QoZG93bmxvYWQpOworICAgICAgICBBU1NFUlQoaW5pdGlhdGluZ1Bh
Z2UpOyAvLyBPdXIgZGVzaWduIGRvZXMgbm90IHN1cHBwb3J0IGRvd25sb2FkcyB3aXRob3V0IGEg
V2ViUGFnZS4KKyAgICAgICAgaW5pdGlhdGluZ1BhZ2UtPmhhbmRsZURvd25sb2FkUmVxdWVzdChk
b3dubG9hZCk7CiAjZW5kaWYKIAotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUHJv
Y2Vzczo6RG93bmxvYWRSZXF1ZXN0KGRvd25sb2FkLT5kb3dubG9hZElEKCksIGluaXRpYXRpbmdQ
YWdlSUQsIHJlcXVlc3QpLCAwKTsKLSAgICByZXR1cm4gZG93bmxvYWQ7CisgICAgICAgIG1fcHJv
Y2Vzc2VzWzBdLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEb3dubG9hZFJlcXVlc3QoZG93
bmxvYWQtPmRvd25sb2FkSUQoKSwgaW5pdGlhdGluZ1BhZ2VJRCwgcmVxdWVzdCksIDApOworICAg
ICAgICByZXR1cm4gZG93bmxvYWQ7CisKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBGSVhNRTog
KE11bHRpLVdlYlByb2Nlc3MpOiBJbXBsZW1lbnQuCisgICAgICAgIHJldHVybiAwOworICAgIH0K
IH0KIAogdm9pZCBXZWJDb250ZXh0Ojpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJT2JqZWN0KiBtZXNzYWdlQm9keSkKIHsKLSAgICBpZiAo
IW1fcHJvY2VzcyB8fCAhbV9wcm9jZXNzLT5jYW5TZW5kTWVzc2FnZSgpKSB7Ci0gICAgICAgIG1f
cGVuZGluZ01lc3NhZ2VzVG9Qb3N0VG9JbmplY3RlZEJ1bmRsZS5hcHBlbmQoc3RkOjptYWtlX3Bh
aXIobWVzc2FnZU5hbWUsIG1lc3NhZ2VCb2R5KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Cisg
ICAgaWYgKG1fcHJvY2Vzc01vZGVsID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nl
c3MpIHsKKyAgICAgICAgaWYgKG1fcHJvY2Vzc2VzLmlzRW1wdHkoKSB8fCAhbV9wcm9jZXNzZXNb
MF0tPmNhblNlbmRNZXNzYWdlKCkpIHsKKyAgICAgICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzVG9Q
b3N0VG9JbmplY3RlZEJ1bmRsZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIobWVzc2FnZU5hbWUsIG1l
c3NhZ2VCb2R5KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgY29uc2lkZXIgcmV0dXJuaW5nIGZhbHNlIGZyb20gdGhpcyBmdW5jdGlv
biBpZiB0aGUgbWVzc2FnZUJvZHkgY2Fubm90Ci0gICAgLy8gYmUgZW5jb2RlZC4KLSAgICBtX3By
b2Nlc3MtPmRlcHJlY2F0ZWRTZW5kKEluamVjdGVkQnVuZGxlTWVzc2FnZTo6UG9zdE1lc3NhZ2Us
IDAsIENvcmVJUEM6OkluKG1lc3NhZ2VOYW1lLCBXZWJDb250ZXh0VXNlck1lc3NhZ2VFbmNvZGVy
KG1lc3NhZ2VCb2R5KSkpOworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNvbnNpZGVyIHJl
dHVybmluZyBmYWxzZSBmcm9tIHRoaXMgZnVuY3Rpb24gaWYgdGhlIG1lc3NhZ2VCb2R5IGNhbm5v
dAorICAgICAgICAvLyBiZSBlbmNvZGVkLgorICAgICAgICBtX3Byb2Nlc3Nlc1swXS0+ZGVwcmVj
YXRlZFNlbmQoSW5qZWN0ZWRCdW5kbGVNZXNzYWdlOjpQb3N0TWVzc2FnZSwgMCwgQ29yZUlQQzo6
SW4obWVzc2FnZU5hbWUsIFdlYkNvbnRleHRVc2VyTWVzc2FnZUVuY29kZXIobWVzc2FnZUJvZHkp
KSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiBJ
bXBsZW1lbnQuCisgICAgfQogfQogCiAvLyBJbmplY3RlZEJ1bmRsZSBjbGllbnQKQEAgLTcyMCw3
ICs3NjEsNyBAQCB2b2lkIFdlYkNvbnRleHQ6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShXCiAgICAg
ICAgICAgICBkb3dubG9hZFByb3h5LT5kaWRSZWNlaXZlU3luY0Rvd25sb2FkUHJveHlNZXNzYWdl
KHByb2Nlc3MtPmNvbm5lY3Rpb24oKSwgbWVzc2FnZUlELCBhcmd1bWVudHMsIHJlcGx5KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQ
Qzo6TWVzc2FnZUNsYXNzV2ViSWNvbkRhdGFiYXNlPigpKSB7CiAgICAgICAgIG1faWNvbkRhdGFi
YXNlLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UocHJvY2Vzcy0+Y29ubmVjdGlvbigpLCBtZXNzYWdl
SUQsIGFyZ3VtZW50cywgcmVwbHkpOwogICAgICAgICByZXR1cm47CkBAIC04MzksMTQgKzg4MCwy
MCBAQCBib29sIFdlYkNvbnRleHQ6Omh0dHBQaXBlbGluaW5nRW5hYmxlZCgpCiAKIHZvaWQgV2Vi
Q29udGV4dDo6Z2V0V2ViQ29yZVN0YXRpc3RpY3MoUGFzc1JlZlB0cjxEaWN0aW9uYXJ5Q2FsbGJh
Y2s+IGNhbGxiYWNrKQogewotICAgIGlmICghbV9wcm9jZXNzKSB7CisgICAgaWYgKG1fcHJvY2Vz
c01vZGVsID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpIHsKKyAgICAgICAg
aWYgKG1fcHJvY2Vzc2VzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgY2FsbGJhY2stPmludmFs
aWRhdGUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgICAg
IG1fZGljdGlvbmFyeUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2suZ2V0KCkpOwor
ICAgICAgICBtX3Byb2Nlc3Nlc1swXS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6R2V0V2Vi
Q29yZVN0YXRpc3RpY3MoY2FsbGJhY2tJRCksIDApOworCisgICAgfSBlbHNlIHsKKyAgICAgICAg
Ly8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiBJbXBsZW1lbnQuCiAgICAgICAgIGNhbGxiYWNr
LT5pbnZhbGlkYXRlKCk7Ci0gICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgdWludDY0
X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV9kaWN0aW9uYXJ5
Q2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5nZXQoKSk7Ci0gICAgcHJvY2Vzcygp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpHZXRXZWJDb3JlU3RhdGlzdGljcyhjYWxsYmFj
a0lEKSwgMCk7CiB9CiAKIHN0YXRpYyBQYXNzUmVmUHRyPE11dGFibGVEaWN0aW9uYXJ5PiBjcmVh
dGVEaWN0aW9uYXJ5RnJvbUhhc2hNYXAoY29uc3QgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90PiYg
bWFwKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCShyZXZpc2lvbiAx
MjU0NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCSh3b3JraW5n
IGNvcHkpCkBAIC05MCwxMCArOTAsMTIgQEAgcHVibGljOgogICAgIHZvaWQgaW5pdGlhbGl6ZURv
d25sb2FkQ2xpZW50KGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50Kik7CiAKICAgICBQcm9j
ZXNzTW9kZWwgcHJvY2Vzc01vZGVsKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzTW9kZWw7IH0K
LSAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3Mu
Z2V0KCk7IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZFRvQWxsUHJvY2Vz
c2VzKGNvbnN0IFUmIG1lc3NhZ2UpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2Vu
ZFRvQWxsUHJvY2Vzc2VzUmVsYXVuY2hpbmdUaGVtSWZOZWNlc3NhcnkoY29uc3QgVSYgbWVzc2Fn
ZSk7CisgICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiBSZW1vdmUuIE5vIGNvZGUgc2hv
dWxkIGFzc3VtZSB0aGF0IHRoZXJlIGlzIGEgc2hhcmVkIHByb2Nlc3MuCisgICAgV2ViUHJvY2Vz
c1Byb3h5KiBkZXByZWNhdGVkU2hhcmVkUHJvY2VzcygpOworCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVT4gdm9pZCBzZW5kVG9BbGxQcm9jZXNzZXMoY29uc3QgVSYgbWVzc2FnZSk7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBzZW5kVG9BbGxQcm9jZXNzZXNSZWxhdW5jaGluZ1RoZW1J
Zk5lY2Vzc2FyeShjb25zdCBVJiBtZXNzYWdlKTsKICAgICAKICAgICB2b2lkIHByb2Nlc3NEaWRG
aW5pc2hMYXVuY2hpbmcoV2ViUHJvY2Vzc1Byb3h5Kik7CiAKQEAgLTE5OCw3ICsyMDAsOCBAQCBw
dWJsaWM6CiAgICAgU3RyaW5nIGljb25EYXRhYmFzZVBhdGgoKSBjb25zdDsKICAgICB2b2lkIHNl
dExvY2FsU3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcikgeyBtX292ZXJyaWRlTG9j
YWxTdG9yYWdlRGlyZWN0b3J5ID0gZGlyOyB9CiAKLSAgICB2b2lkIGVuc3VyZVdlYlByb2Nlc3Mo
KTsKKyAgICB2b2lkIGVuc3VyZVNoYXJlZFdlYlByb2Nlc3MoKTsKKyAgICBQYXNzUmVmUHRyPFdl
YlByb2Nlc3NQcm94eT4gY3JlYXRlTmV3V2ViUHJvY2VzcygpOwogICAgIHZvaWQgd2FybUluaXRp
YWxQcm9jZXNzKCk7CiAKICAgICBib29sIHNob3VsZFRlcm1pbmF0ZShXZWJQcm9jZXNzUHJveHkq
KTsKQEAgLTIyMCw2ICsyMjMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZ1bGxLZXlib2FyZEFj
Y2Vzc01vZGVDaGFuZ2VkKGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCk7CiAKKyAgICB2
b2lkIHRleHRDaGVja2VyU3RhdGVDaGFuZ2VkKCk7CisKIHByaXZhdGU6CiAgICAgV2ViQ29udGV4
dChQcm9jZXNzTW9kZWwsIGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKTsKIApAQCAt
MjY0LDggKzI2OSw3IEBAIHByaXZhdGU6CiAKICAgICBQcm9jZXNzTW9kZWwgbV9wcm9jZXNzTW9k
ZWw7CiAgICAgCi0gICAgLy8gRklYTUU6IEluIHRoZSBmdXR1cmUsIHRoaXMgc2hvdWxkIGJlIG9u
ZSBvciBtb3JlIFdlYlByb2Nlc3NQcm94aWVzLgotICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+
IG1fcHJvY2VzczsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gPiBtX3Byb2Nl
c3NlczsKIAogICAgIFJlZlB0cjxXZWJQYWdlR3JvdXA+IG1fZGVmYXVsdFBhZ2VHcm91cDsKIApA
QCAtMzQwLDE5ICszNDQsMjAgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQ
dHI8RGljdGlvbmFyeUNhbGxiYWNrPiA+IG1fZGljdGlvbmFyeUNhbGxiYWNrczsKIH07CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSBib29sIFdlYkNvbnRleHQ6OnNlbmRUb0FsbFByb2Nl
c3Nlcyhjb25zdCBVJiBtZXNzYWdlKQordGVtcGxhdGU8dHlwZW5hbWUgVT4gaW5saW5lIHZvaWQg
V2ViQ29udGV4dDo6c2VuZFRvQWxsUHJvY2Vzc2VzKGNvbnN0IFUmIG1lc3NhZ2UpCiB7Ci0gICAg
aWYgKCFtX3Byb2Nlc3MgfHwgIW1fcHJvY2Vzcy0+Y2FuU2VuZE1lc3NhZ2UoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIG1fcHJvY2Vzcy0+c2VuZChtZXNzYWdlLCAwKTsK
KyAgICBzaXplX3QgcHJvY2Vzc0NvdW50ID0gbV9wcm9jZXNzZXMuc2l6ZSgpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcHJvY2Vzc0NvdW50OyArK2kpIHsKKyAgICAgICAgV2ViUHJvY2Vz
c1Byb3h5KiBwcm9jZXNzID0gbV9wcm9jZXNzZXNbaV0uZ2V0KCk7CisgICAgICAgIGlmIChwcm9j
ZXNzLT5jYW5TZW5kTWVzc2FnZSgpKQorICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChtZXNzYWdl
LCAwKTsKKyAgICB9CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgV2ViQ29udGV4dDo6
c2VuZFRvQWxsUHJvY2Vzc2VzUmVsYXVuY2hpbmdUaGVtSWZOZWNlc3NhcnkoY29uc3QgVSYgbWVz
c2FnZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgV2ViQ29udGV4dDo6c2VuZFRvQWxsUHJv
Y2Vzc2VzUmVsYXVuY2hpbmdUaGVtSWZOZWNlc3NhcnkoY29uc3QgVSYgbWVzc2FnZSkKIHsKICAg
ICByZWxhdW5jaFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwotCi0gICAgcmV0dXJuIG1fcHJvY2Vzcy0+
c2VuZChtZXNzYWdlLCAwKTsKKyAgICBzZW5kVG9BbGxQcm9jZXNzZXMobWVzc2FnZSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDEyNTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODMsOCAr
MTgzLDYgQEAgV2ViUGFnZVByb3h5KiBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UodQogCiBQYXNz
UmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVXZWJQYWdlKFBhZ2VD
bGllbnQqIHBhZ2VDbGllbnQsIFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYlBhZ2VHcm91cCogcGFn
ZUdyb3VwKQogewotICAgIEFTU0VSVChjb250ZXh0LT5wcm9jZXNzKCkgPT0gdGhpcyk7Ci0KICAg
ICB1aW50NjRfdCBwYWdlSUQgPSBnZW5lcmF0ZVBhZ2VJRCgpOwogICAgIFJlZlB0cjxXZWJQYWdl
UHJveHk+IHdlYlBhZ2UgPSBXZWJQYWdlUHJveHk6OmNyZWF0ZShwYWdlQ2xpZW50LCB0aGlzLCBw
YWdlR3JvdXAsIHBhZ2VJRCk7CiAgICAgbV9wYWdlTWFwLnNldChwYWdlSUQsIHdlYlBhZ2UuZ2V0
KCkpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlRleHRDaGVja2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVGV4dENoZWNrZXIuY3Bw
CShyZXZpc2lvbiAxMjU0NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVGV4dENo
ZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwyNyArNDgsMjMgQEAgdm9pZCBXZWJUZXh0
Q2hlY2tlcjo6c2V0Q2xpZW50KGNvbnN0IFdLVAogICAgIG1fY2xpZW50LmluaXRpYWxpemUoY2xp
ZW50KTsKIH0KIAotc3RhdGljIHZvaWQgdXBkYXRlU3RhdGVGb3JBbGxXZWJQcm9jZXNzZXMoKQor
c3RhdGljIHZvaWQgdXBkYXRlU3RhdGVGb3JBbGxDb250ZXh0cygpCiB7CiAgICAgY29uc3QgVmVj
dG9yPFdlYkNvbnRleHQqPiYgY29udGV4dHMgPSBXZWJDb250ZXh0OjphbGxDb250ZXh0cygpOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29udGV4dHMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgV2ViUHJvY2Vzc1Byb3h5KiB3ZWJQcm9jZXNzID0gY29udGV4dHNbaV0tPnByb2Nlc3MoKTsK
LSAgICAgICAgaWYgKCF3ZWJQcm9jZXNzKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IHdlYlByb2Nlc3MtPnVwZGF0ZVRleHRDaGVja2VyU3RhdGUoKTsKLSAgICB9CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBjb250ZXh0cy5zaXplKCk7ICsraSkKKyAgICAgICAgY29udGV4dHNb
aV0tPnRleHRDaGVja2VyU3RhdGVDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgV2ViVGV4dENoZWNrZXI6
OmNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZFN0YXRlQ2hhbmdlZChib29sIGVuYWJsZWQp
CiB7CiAgICAgVGV4dENoZWNrZXI6OmNvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZFN0YXRl
Q2hhbmdlZChlbmFibGVkKTsKLSAgICB1cGRhdGVTdGF0ZUZvckFsbFdlYlByb2Nlc3NlcygpOwor
ICAgIHVwZGF0ZVN0YXRlRm9yQWxsQ29udGV4dHMoKTsKIH0KIAogdm9pZCBXZWJUZXh0Q2hlY2tl
cjo6Z3JhbW1hckNoZWNraW5nRW5hYmxlZFN0YXRlQ2hhbmdlZChib29sIGVuYWJsZWQpCiB7CiAg
ICAgVGV4dENoZWNrZXI6OmdyYW1tYXJDaGVja2luZ0VuYWJsZWRTdGF0ZUNoYW5nZWQoZW5hYmxl
ZCk7Ci0gICAgdXBkYXRlU3RhdGVGb3JBbGxXZWJQcm9jZXNzZXMoKTsKKyAgICB1cGRhdGVTdGF0
ZUZvckFsbENvbnRleHRzKCk7CiB9CiAKIHZvaWQgV2ViVGV4dENoZWNrZXI6OmNoZWNrU3BlbGxp
bmcoY29uc3QgV2ViUGFnZVByb3h5KiBwYWdlLCBib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHkuY3BwCShyZXZpc2lvbiAxMjU0NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5
OCw4IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2EKICAgICBpZiAo
IW1fd2ViQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHk+IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkgPSBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpjcmVhdGUoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNo
YWxsZW5nZUlELCBtX3dlYkNvbnRleHQtPnByb2Nlc3MoKSk7CisgICAgLy8gRklYTUUgKE11bHRp
LVdlYlByb2Nlc3MpOiBHZXQgcmlkIG9mIGRlcHJlY2F0ZWRTaGFyZWRQcm9jZXNzLgorICAgIFJl
ZlB0cjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVByb3h5ID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTo6Y3JlYXRlKGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCwgbV93ZWJDb250ZXh0LT5kZXByZWNhdGVkU2hhcmVk
UHJvY2VzcygpKTsKICAgICBtX3dlYkNvbnRleHQtPmRvd25sb2FkQ2xpZW50KCkuZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG1fd2ViQ29udGV4dCwgdGhpcywgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eS5nZXQoKSk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>