<?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>141133</bug_id>
          
          <creation_ts>2015-01-31 21:41:59 -0800</creation_ts>
          <short_desc>Use more references in HistoryItem</short_desc>
          <delta_ts>2015-02-01 16:49:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>japhet</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1065934</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-31 21:41:59 -0800</bug_when>
    <thetext>Use more references in HistoryItem instead of pointers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065937</commentid>
    <comment_count>1</comment_count>
      <attachid>245818</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-31 22:22:15 -0800</bug_when>
    <thetext>Created attachment 245818
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065938</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-31 22:24:44 -0800</bug_when>
    <thetext>Attachment 245818 did not pass style-queue:


ERROR: Source/WebCore/history/HistoryItem.cpp:478:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/history/HistoryItem.cpp:498:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 2 in 20 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>1065939</commentid>
    <comment_count>3</comment_count>
      <attachid>245819</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-31 22:33:09 -0800</bug_when>
    <thetext>Created attachment 245819
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065940</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-31 22:35:53 -0800</bug_when>
    <thetext>Attachment 245819 did not pass style-queue:


ERROR: Source/WebCore/history/HistoryItem.cpp:478:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/history/HistoryItem.cpp:498:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 2 in 22 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>1065941</commentid>
    <comment_count>5</comment_count>
      <attachid>245820</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-31 23:25:12 -0800</bug_when>
    <thetext>Created attachment 245820
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065942</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-31 23:27:23 -0800</bug_when>
    <thetext>Attachment 245820 did not pass style-queue:


ERROR: Source/WebCore/history/HistoryItem.cpp:478:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/history/HistoryItem.cpp:498:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 2 in 22 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>1065943</commentid>
    <comment_count>7</comment_count>
      <attachid>245821</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-31 23:35:06 -0800</bug_when>
    <thetext>Created attachment 245821
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065944</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-31 23:36:39 -0800</bug_when>
    <thetext>Attachment 245821 did not pass style-queue:


ERROR: Source/WebCore/history/HistoryItem.cpp:478:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/history/HistoryItem.cpp:498:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 2 in 22 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>1065947</commentid>
    <comment_count>9</comment_count>
      <attachid>245822</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-02-01 00:15:39 -0800</bug_when>
    <thetext>Created attachment 245822
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065948</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-01 00:18:11 -0800</bug_when>
    <thetext>Attachment 245822 did not pass style-queue:


ERROR: Source/WebCore/history/HistoryItem.cpp:478:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/history/HistoryItem.cpp:498:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 2 in 25 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>1065949</commentid>
    <comment_count>11</comment_count>
      <attachid>245823</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-02-01 00:20:20 -0800</bug_when>
    <thetext>Created attachment 245823
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065950</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-01 00:23:13 -0800</bug_when>
    <thetext>Attachment 245823 did not pass style-queue:


ERROR: Source/WebCore/history/HistoryItem.cpp:478:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/history/HistoryItem.cpp:498:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 2 in 25 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>1065952</commentid>
    <comment_count>13</comment_count>
      <attachid>245825</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-02-01 00:49:21 -0800</bug_when>
    <thetext>Created attachment 245825
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065953</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-01 00:50:49 -0800</bug_when>
    <thetext>Attachment 245825 did not pass style-queue:


ERROR: Source/WebCore/history/HistoryItem.cpp:478:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/history/HistoryItem.cpp:498:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 2 in 25 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>1065991</commentid>
    <comment_count>15</comment_count>
      <attachid>245825</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-02-01 13:31:03 -0800</bug_when>
    <thetext>Comment on attachment 245825
Patch

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

r=me

&gt; Source/WebCore/history/BackForwardList.cpp:68
&gt; -            RefPtr&lt;HistoryItem&gt; item = m_entries.last();
&gt; +            auto&amp; item = m_entries.last();
&gt;              m_entries.removeLast();

I&apos;m a little iffy about using auto&amp; in cases like this.
Since &apos;item&apos; may now be taking over the ownership of the HistoryItem, I&apos;d prefer that we make that explicit in the code.
Maybe I&apos;m overly paranoid, but I&apos;m also imagining a future where we&apos;d do some kind of PeekType optimization for Vector and allow first(), last(), etc for Vector&lt;RefPtr&lt;T&gt;&gt; to just return T*.

&gt; Source/WebCore/history/BackForwardList.cpp:-80
&gt; +        auto&amp; item = m_entries.first();
&gt;          m_entries.remove(0);
&gt; -        m_entryHash.remove(item);

Same comment.

&gt; Source/WebCore/history/BackForwardList.cpp:174
&gt; -    while (size &lt; (int)m_entries.size()) {
&gt; -        RefPtr&lt;HistoryItem&gt; item = m_entries.last();
&gt; +    while (size &lt; static_cast&lt;int&gt;(m_entries.size())) {
&gt; +        auto&amp; item = m_entries.last();

Same comment.

&gt; Source/WebCore/history/BackForwardList.h:39
&gt; -typedef Vector&lt;RefPtr&lt;HistoryItem&gt;&gt; HistoryItemVector;
&gt; +typedef Vector&lt;Ref&lt;HistoryItem&gt;&gt; HistoryItemVector;

Nice :)
Do you think we really need this typedef though?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065995</commentid>
    <comment_count>16</comment_count>
      <attachid>245843</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-02-01 14:02:56 -0800</bug_when>
    <thetext>Created attachment 245843
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065996</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-01 14:05:19 -0800</bug_when>
    <thetext>Attachment 245843 did not pass style-queue:


ERROR: Source/WebCore/history/HistoryItem.cpp:478:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/history/HistoryItem.cpp:498:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 2 in 25 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>1066003</commentid>
    <comment_count>18</comment_count>
      <attachid>245848</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-02-01 15:28:32 -0800</bug_when>
    <thetext>Created attachment 245848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066004</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-01 15:30:27 -0800</bug_when>
    <thetext>Attachment 245848 did not pass style-queue:


ERROR: Source/WebCore/history/HistoryItem.cpp:478:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/history/HistoryItem.cpp:498:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 2 in 26 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>1066015</commentid>
    <comment_count>20</comment_count>
      <attachid>245848</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-01 16:49:33 -0800</bug_when>
    <thetext>Comment on attachment 245848
Patch

Clearing flags on attachment: 245848

Committed r179472: &lt;http://trac.webkit.org/changeset/179472&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066016</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-01 16:49:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245818</attachid>
            <date>2015-01-31 22:22:15 -0800</date>
            <delta_ts>2015-01-31 22:33:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141133-20150131222223.patch</filename>
            <type>text/plain</type>
            <size>43591</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTE3MjM3MDIwMzJlODQx
Y2JjZDVkNGNjNzA1MWJhMWNlYzQwMTQxYi4uZjI4ZmVjYTg3NTg0MGFlMjg1YzQyMGZiYzQ1MDlh
NGI5MGFkNGEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE0IEBACiAyMDE1LTAxLTMxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgVXNlIG1vcmUgcmVmZXJlbmNl
cyBpbiBIaXN0b3J5SXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQxMTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXNlIG1vcmUgcmVmZXJlbmNlcyBpbiBIaXN0b3J5SXRlbSBpbnN0ZWFkIG9mIHBv
aW50ZXJzLgorCisyMDE1LTAxLTMxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisK
ICAgICAgICAgVXNlIHNpbXBsZXIgQ2FjaGVkUmVzb3VyY2VNYXAgc3RydWN0dXJlIGluIE1lbW9y
eUNhY2hlIHdpdGggQ0FDSEVfUEFSVElUSU9OSU5HIGVuYWJsZWQKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTExMAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5k
ZXggYzJiNjgzYzAwZTVhNzY1ODEzNTBhMTQ0YWI1NWI0ZjQxNzI1ZThlZS4uMWViMTlkNjM2MDdj
NWM5MjdkMzdhZjJlMzUzYWM0MDhiYThlOWM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDE1LTAxLTMxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgVXNlIG1vcmUgcmVmZXJlbmNlcyBpbiBIaXN0b3J5SXRlbQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMTMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIG1vcmUgcmVmZXJlbmNlcyBpbiBI
aXN0b3J5SXRlbSBpbnN0ZWFkIG9mIHBvaW50ZXJzLgorCiAyMDE1LTAxLTMxICBTYW0gV2Vpbmln
ICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIGV2ZW4gbW9yZSBNb3VudGFpbiBM
aW9uIHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzM2RjODRkNWZkZTZiZGY3OTRhNjQzNzllMmJhMDZm
YTU3OGNkYjgwLi5lYjVlNTRjYWEyYTBmYzA3ZGRmMWZlNDBiNjBhNTAxN2E3ZDQ2ODIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTUtMDEtMzEgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgbW9yZSByZWZlcmVuY2VzIGluIEhpc3RvcnlJdGVt
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMzMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgbW9y
ZSByZWZlcmVuY2VzIGluIEhpc3RvcnlJdGVtIGluc3RlYWQgb2YgcG9pbnRlcnMuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRM
aXN0SXRlbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRM
aXN0SXRlbTo6Y2hpbGRyZW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
U2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OnRvRnJhbWVTdGF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OmFwcGx5RnJhbWVTdGF0ZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW0pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oOgorCiAyMDE1LTAxLTMxICBTYW0g
V2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIGV2ZW4gbW9yZSBNb3Vu
dGFpbiBMaW9uIHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggY2Y0OWZmODBlZDFjYzk1
NTQ0YzI1NDhlODk5MzA0ZmYwZDQ3NjVhZC4uYThhYzg3YjdlYjMyMGZjODA5YjQ1MTgzOGZlZGY0
NDMxY2RiMDIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTE2Myw3ICsxNjMsNyBAQCBfX1pO
N1dlYkNvcmUxMUZyYW1lTG9hZGVyOXNldE9wZW5lckVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3Jl
MTFIaXN0b3J5SXRlbTEwdGFyZ2V0SXRlbUV2CiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMTFz
ZXRGb3JtRGF0YUVOM1dURjEwUGFzc1JlZlB0cklOU184Rm9ybURhdGFFRUUKIF9fWk43V2ViQ29y
ZTExSGlzdG9yeUl0ZW0xMXNldFJlZmVycmVyRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3Jl
MTFIaXN0b3J5SXRlbTEyYWRkQ2hpbGRJdGVtRU4zV1RGMTBQYXNzUmVmUHRySVMwX0VFCitfX1pO
N1dlYkNvcmUxMUhpc3RvcnlJdGVtMTJhZGRDaGlsZEl0ZW1FT04zV1RGM1JlZklTMF9FRQogX19a
TjdXZWJDb3JlMTFIaXN0b3J5SXRlbTEyc2V0VVJMU3RyaW5nRVJLTjNXVEY2U3RyaW5nRQogX19a
TjdXZWJDb3JlMTFIaXN0b3J5SXRlbTEyc2V0Vmlld1N0YXRlRVAxMW9iamNfb2JqZWN0CiBfX1pO
N1dlYkNvcmUxMUhpc3RvcnlJdGVtMTRhZGRSZWRpcmVjdFVSTEVSS04zV1RGNlN0cmluZ0UKQEAg
LTE3NSw2ICsxNzUsNyBAQCBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMTZzZXREb2N1bWVudFN0
YXRlRVJLTjNXVEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVOUzFfMQogX19aTjdXZWJDb3JlMTFI
aXN0b3J5SXRlbTE3c2V0QWx0ZXJuYXRlVGl0bGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNv
cmUxMUhpc3RvcnlJdGVtMThzZXRGb3JtQ29udGVudFR5cGVFUktOM1dURjZTdHJpbmdFCiBfX1pO
N1dlYkNvcmUxMUhpc3RvcnlJdGVtMThzZXRQYWdlU2NhbGVGYWN0b3JFZgorX19aTjdXZWJDb3Jl
MTFIaXN0b3J5SXRlbTE5Y2hpbGRJdGVtV2l0aFRhcmdldEVSS04zV1RGNlN0cmluZ0UKIF9fWk43
V2ViQ29yZTExSGlzdG9yeUl0ZW0yMHNldE9yaWdpbmFsVVJMU3RyaW5nRVJLTjNXVEY2U3RyaW5n
RQogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTIwc2V0VHJhbnNpZW50UHJvcGVydHlFUktOM1dU
RjZTdHJpbmdFUDExb2JqY19vYmplY3QKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW04Zm9ybURh
dGFFdgpAQCAtNDk4LDggKzQ5OSw4IEBAIF9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTFj
dXJyZW50SXRlbUV2CiBfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDExZm9yd2FyZEl0ZW1F
dgogX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxMXNldENhcGFjaXR5RWkKIF9fWk43V2Vi
Q29yZTE1QmFja0ZvcndhcmRMaXN0MTJjb250YWluc0l0ZW1FUE5TXzExSGlzdG9yeUl0ZW1FCi1f
X1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDE3YmFja0xpc3RXaXRoTGltaXRFaVJOM1dURjZW
ZWN0b3JJTlMxXzZSZWZQdHJJTlNfMTFIaXN0b3J5SXRlbUVFRUxtMEVOUzFfMTVDcmFzaE9uT3Zl
cmZsb3dFRUUKLV9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MjBmb3J3YXJkTGlzdFdpdGhM
aW1pdEVpUk4zV1RGNlZlY3RvcklOUzFfNlJlZlB0cklOU18xMUhpc3RvcnlJdGVtRUVFTG0wRU5T
MV8xNUNyYXNoT25PdmVyZmxvd0VFRQorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxN2Jh
Y2tMaXN0V2l0aExpbWl0RWlSTjNXVEY2VmVjdG9ySU5TMV8zUmVmSU5TXzExSGlzdG9yeUl0ZW1F
RUVMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCitfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJk
TGlzdDIwZm9yd2FyZExpc3RXaXRoTGltaXRFaVJOM1dURjZWZWN0b3JJTlMxXzNSZWZJTlNfMTFI
aXN0b3J5SXRlbUVFRUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTE1
QmFja0ZvcndhcmRMaXN0NmNsb3NlZEV2CiBfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDZn
b0JhY2tFdgogX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q3ZW5hYmxlZEV2CkBAIC0xNjky
LDcgKzE2OTMsNiBAQCBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTE0YWx0ZXJuYXRlVGl0bGVF
dgogX19aTks3V2ViQ29yZTExSGlzdG9yeUl0ZW0xNWZvcm1Db250ZW50VHlwZUV2CiBfX1pOSzdX
ZWJDb3JlMTFIaXN0b3J5SXRlbTE1cGFnZVNjYWxlRmFjdG9yRXYKIF9fWk5LN1dlYkNvcmUxMUhp
c3RvcnlJdGVtMTdvcmlnaW5hbFVSTFN0cmluZ0V2Ci1fX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRl
bTE5Y2hpbGRJdGVtV2l0aFRhcmdldEVSS04zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmUxMUhp
c3RvcnlJdGVtMjBnZXRUcmFuc2llbnRQcm9wZXJ0eUVSS04zV1RGNlN0cmluZ0UKIF9fWk5LN1dl
YkNvcmUxMUhpc3RvcnlJdGVtMjBoYXNDYWNoZWRQYWdlRXhwaXJlZEV2CiBfX1pOSzdXZWJDb3Jl
MTFIaXN0b3J5SXRlbTN1cmxFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9C
YWNrRm9yd2FyZENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENs
aWVudC5oCmluZGV4IDQ3MTg3MzYwMWQ0ZmY5MjlkZDE1MTNhZTA4Y2FlMmMxZDY5Yjk5OTkuLjA4
MjA0MTVmZTgxMGZlZDEzYzVkOWRhMjZhZWJiZmY3NzBiMDliZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgog
ICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkSXRlbShQYXNzUmVmUHRyPEhpc3Rv
cnlJdGVtPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRJdGVtKFJlZjxIaXN0b3J5SXRlbT4m
JikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGdvVG9JdGVtKEhpc3RvcnlJdGVtKikgPSAwOwog
ICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRM
aXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmNwcAppbmRl
eCBlYWU2MmJjNzFmODYzODBjNzI1MTZiN2U3MGQ3MWNlN2FlM2I1MDUzLi45MDFiNWQzMDNkYTlh
NTE0ODZiMTQyZmQwMGYyODUxNDliZjVjZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9C
YWNrRm9yd2FyZExpc3QuY3BwCkBAIC01NSwzNiArNTUsMzUgQEAgQmFja0ZvcndhcmRMaXN0Ojp+
QmFja0ZvcndhcmRMaXN0KCkKICAgICBBU1NFUlQobV9jbG9zZWQpOwogfQogCi12b2lkIEJhY2tG
b3J3YXJkTGlzdDo6YWRkSXRlbShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBwcnBJdGVtKQordm9p
ZCBCYWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0oUmVmPEhpc3RvcnlJdGVtPiYmIG5ld0l0ZW0pCiB7
Ci0gICAgQVNTRVJUKHBycEl0ZW0pOwotICAgIGlmIChtX2NhcGFjaXR5ID09IDAgfHwgIW1fZW5h
YmxlZCkKKyAgICBpZiAoIW1fY2FwYWNpdHkgfHwgIW1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJu
OwogICAgIAogICAgIC8vIFRvc3MgYW55dGhpbmcgaW4gdGhlIGZvcndhcmQgbGlzdCAgICAKICAg
ICBpZiAobV9jdXJyZW50ICE9IE5vQ3VycmVudEl0ZW1JbmRleCkgewogICAgICAgICB1bnNpZ25l
ZCB0YXJnZXRTaXplID0gbV9jdXJyZW50ICsgMTsKICAgICAgICAgd2hpbGUgKG1fZW50cmllcy5z
aXplKCkgPiB0YXJnZXRTaXplKSB7Ci0gICAgICAgICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGl0
ZW0gPSBtX2VudHJpZXMubGFzdCgpOworICAgICAgICAgICAgYXV0byYgaXRlbSA9IG1fZW50cmll
cy5sYXN0KCk7CiAgICAgICAgICAgICBtX2VudHJpZXMucmVtb3ZlTGFzdCgpOwotICAgICAgICAg
ICAgbV9lbnRyeUhhc2gucmVtb3ZlKGl0ZW0pOwotICAgICAgICAgICAgUGFnZUNhY2hlOjpzaW5n
bGV0b24oKS5yZW1vdmUoKml0ZW0pOworICAgICAgICAgICAgbV9lbnRyeUhhc2gucmVtb3ZlKGl0
ZW0ucHRyKCkpOworICAgICAgICAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24oKS5yZW1vdmUoaXRl
bSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBUb3NzIHRoZSBmaXJzdCBpdGVtIGlmIHRo
ZSBsaXN0IGlzIGdldHRpbmcgdG9vIGJpZywgYXMgbG9uZyBhcyB3ZSdyZSBub3QgdXNpbmcgaXQK
ICAgICAvLyAob3IgZXZlbiBpZiB3ZSBhcmUsIGlmIHdlIG9ubHkgd2FudCAxIGVudHJ5KS4KLSAg
ICBpZiAobV9lbnRyaWVzLnNpemUoKSA9PSBtX2NhcGFjaXR5ICYmIChtX2N1cnJlbnQgIT0gMCB8
fCBtX2NhcGFjaXR5ID09IDEpKSB7Ci0gICAgICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gaXRlbSA9
IG1fZW50cmllc1swXTsKKyAgICBpZiAobV9lbnRyaWVzLnNpemUoKSA9PSBtX2NhcGFjaXR5ICYm
IChtX2N1cnJlbnQgfHwgbV9jYXBhY2l0eSA9PSAxKSkgeworICAgICAgICBhdXRvJiBpdGVtID0g
bV9lbnRyaWVzLmZpcnN0KCk7CiAgICAgICAgIG1fZW50cmllcy5yZW1vdmUoMCk7Ci0gICAgICAg
IG1fZW50cnlIYXNoLnJlbW92ZShpdGVtKTsKLSAgICAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24o
KS5yZW1vdmUoKml0ZW0pOwotICAgICAgICBtX2N1cnJlbnQtLTsKKyAgICAgICAgbV9lbnRyeUhh
c2gucmVtb3ZlKGl0ZW0ucHRyKCkpOworICAgICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnJl
bW92ZShpdGVtKTsKKyAgICAgICAgLS1tX2N1cnJlbnQ7CiAgICAgfQogCi0gICAgbV9lbnRyeUhh
c2guYWRkKHBycEl0ZW0uZ2V0KCkpOwotICAgIG1fZW50cmllcy5pbnNlcnQobV9jdXJyZW50ICsg
MSwgcHJwSXRlbSk7Ci0gICAgbV9jdXJyZW50Kys7CisgICAgbV9lbnRyeUhhc2guYWRkKG5ld0l0
ZW0ucHRyKCkpOworICAgIG1fZW50cmllcy5pbnNlcnQobV9jdXJyZW50ICsgMSwgV1RGOjptb3Zl
KG5ld0l0ZW0pKTsKKyAgICArK21fY3VycmVudDsKIH0KIAogdm9pZCBCYWNrRm9yd2FyZExpc3Q6
OmdvQmFjaygpCkBAIC0xMTAsNyArMTA5LDcgQEAgdm9pZCBCYWNrRm9yd2FyZExpc3Q6OmdvVG9J
dGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAgICAgICAKICAgICB1bnNpZ25lZCBpbnQgaW5kZXgg
PSAwOwogICAgIGZvciAoOyBpbmRleCA8IG1fZW50cmllcy5zaXplKCk7ICsraW5kZXgpCi0gICAg
ICAgIGlmIChtX2VudHJpZXNbaW5kZXhdID09IGl0ZW0pCisgICAgICAgIGlmIChtX2VudHJpZXNb
aW5kZXhdLnB0cigpID09IGl0ZW0pCiAgICAgICAgICAgICBicmVhazsKICAgICBpZiAoaW5kZXgg
PCBtX2VudHJpZXMuc2l6ZSgpKSB7CiAgICAgICAgIG1fY3VycmVudCA9IGluZGV4OwpAQCAtMTIw
LDMxICsxMTksMzEgQEAgdm9pZCBCYWNrRm9yd2FyZExpc3Q6OmdvVG9JdGVtKEhpc3RvcnlJdGVt
KiBpdGVtKQogSGlzdG9yeUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6YmFja0l0ZW0oKQogewogICAg
IGlmIChtX2N1cnJlbnQgJiYgbV9jdXJyZW50ICE9IE5vQ3VycmVudEl0ZW1JbmRleCkKLSAgICAg
ICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJlbnQgLSAxXS5nZXQoKTsKLSAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJlbnQgLSAxXS5wdHIoKTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAogSGlzdG9yeUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6Y3VycmVudEl0
ZW0oKQogewogICAgIGlmIChtX2N1cnJlbnQgIT0gTm9DdXJyZW50SXRlbUluZGV4KQotICAgICAg
ICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVudF0uZ2V0KCk7Ci0gICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBtX2VudHJpZXNbbV9jdXJyZW50XS5wdHIoKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAogSGlzdG9yeUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZEl0ZW0oKQogewog
ICAgIGlmIChtX2VudHJpZXMuc2l6ZSgpICYmIG1fY3VycmVudCA8IG1fZW50cmllcy5zaXplKCkg
LSAxKQotICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVudCArIDFdLmdldCgpOwotICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVudCArIDFdLnB0cigp
OworICAgIHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6YmFja0xp
c3RXaXRoTGltaXQoaW50IGxpbWl0LCBIaXN0b3J5SXRlbVZlY3RvciYgbGlzdCkKIHsKICAgICBs
aXN0LmNsZWFyKCk7CiAgICAgaWYgKG1fY3VycmVudCAhPSBOb0N1cnJlbnRJdGVtSW5kZXgpIHsK
LSAgICAgICAgdW5zaWduZWQgZmlyc3QgPSBzdGQ6Om1heCgoaW50KW1fY3VycmVudCAtIGxpbWl0
LCAwKTsKKyAgICAgICAgdW5zaWduZWQgZmlyc3QgPSBzdGQ6Om1heChzdGF0aWNfY2FzdDxpbnQ+
KG1fY3VycmVudCkgLSBsaW1pdCwgMCk7CiAgICAgICAgIGZvciAoOyBmaXJzdCA8IG1fY3VycmVu
dDsgKytmaXJzdCkKLSAgICAgICAgICAgIGxpc3QuYXBwZW5kKG1fZW50cmllc1tmaXJzdF0pOwor
ICAgICAgICAgICAgbGlzdC5hcHBlbmQobV9lbnRyaWVzW2ZpcnN0XS5nZXQoKSk7CiAgICAgfQog
fQogCkBAIC0xNjAsNyArMTU5LDcgQEAgdm9pZCBCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0
V2l0aExpbWl0KGludCBsaW1pdCwgSGlzdG9yeUl0ZW1WZWN0b3ImIGxpc3QpCiAgICAgICAgIGlu
dCBsYXN0ID0gc3RkOjptaW4obV9jdXJyZW50ICsgbGltaXQsIGxhc3RFbnRyeSk7CiAgICAgICAg
IGxpbWl0ID0gbV9jdXJyZW50ICsgMTsKICAgICAgICAgZm9yICg7IGxpbWl0IDw9IGxhc3Q7ICsr
bGltaXQpCi0gICAgICAgICAgICBsaXN0LmFwcGVuZChtX2VudHJpZXNbbGltaXRdKTsKKyAgICAg
ICAgICAgIGxpc3QuYXBwZW5kKG1fZW50cmllc1tsaW1pdF0uZ2V0KCkpOwogICAgIH0KIH0KIApA
QCAtMTcxLDExICsxNzAsMTEgQEAgaW50IEJhY2tGb3J3YXJkTGlzdDo6Y2FwYWNpdHkoKQogCiB2
b2lkIEJhY2tGb3J3YXJkTGlzdDo6c2V0Q2FwYWNpdHkoaW50IHNpemUpCiB7ICAgIAotICAgIHdo
aWxlIChzaXplIDwgKGludCltX2VudHJpZXMuc2l6ZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxIaXN0
b3J5SXRlbT4gaXRlbSA9IG1fZW50cmllcy5sYXN0KCk7CisgICAgd2hpbGUgKHNpemUgPCBzdGF0
aWNfY2FzdDxpbnQ+KG1fZW50cmllcy5zaXplKCkpKSB7CisgICAgICAgIGF1dG8mIGl0ZW0gPSBt
X2VudHJpZXMubGFzdCgpOwogICAgICAgICBtX2VudHJpZXMucmVtb3ZlTGFzdCgpOwotICAgICAg
ICBtX2VudHJ5SGFzaC5yZW1vdmUoaXRlbSk7Ci0gICAgICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9u
KCkucmVtb3ZlKCppdGVtKTsKKyAgICAgICAgbV9lbnRyeUhhc2gucmVtb3ZlKGl0ZW0ucHRyKCkp
OworICAgICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZShpdGVtKTsKICAgICB9CiAK
ICAgICBpZiAoIXNpemUpCkBAIC0yMTQsMTMgKzIxMywxMyBAQCBpbnQgQmFja0ZvcndhcmRMaXN0
Ojpmb3J3YXJkTGlzdENvdW50KCkKIEhpc3RvcnlJdGVtKiBCYWNrRm9yd2FyZExpc3Q6Oml0ZW1B
dEluZGV4KGludCBpbmRleCkKIHsKICAgICAvLyBEbyByYW5nZSBjaGVja3Mgd2l0aG91dCBkb2lu
ZyBtYXRoIG9uIGluZGV4IHRvIGF2b2lkIG92ZXJmbG93LgotICAgIGlmIChpbmRleCA8IC0oaW50
KW1fY3VycmVudCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGluZGV4IDwgLXN0YXRpY19j
YXN0PGludD4obV9jdXJyZW50KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAg
aWYgKGluZGV4ID4gZm9yd2FyZExpc3RDb3VudCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIAotICAgIHJldHVybiBtX2VudHJpZXNbaW5kZXgg
KyBtX2N1cnJlbnRdLmdldCgpOworICAgIHJldHVybiBtX2VudHJpZXNbaW5kZXggKyBtX2N1cnJl
bnRdLnB0cigpOwogfQogCiBIaXN0b3J5SXRlbVZlY3RvciYgQmFja0ZvcndhcmRMaXN0OjplbnRy
aWVzKCkKQEAgLTI1NSw3ICsyNTQsNyBAQCBib29sIEJhY2tGb3J3YXJkTGlzdDo6Y2xlYXJBbGxQ
YWdlQ2FjaGVzKCkKIHZvaWQgQmFja0ZvcndhcmRMaXN0OjpjbG9zZSgpCiB7CiAgICAgZm9yIChh
dXRvJiBpdGVtIDogbV9lbnRyaWVzKQotICAgICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnJl
bW92ZSgqaXRlbSk7CisgICAgICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlKGl0ZW0p
OwogICAgIG1fZW50cmllcy5jbGVhcigpOwogICAgIG1fZW50cnlIYXNoLmNsZWFyKCk7CiAgICAg
bV9wYWdlID0gbnVsbHB0cjsKQEAgLTI3Miw4ICsyNzEsOCBAQCB2b2lkIEJhY2tGb3J3YXJkTGlz
dDo6cmVtb3ZlSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKICAgICBpZiAoIWl0ZW0pCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9lbnRyaWVzLnNp
emUoKTsgKytpKQotICAgICAgICBpZiAobV9lbnRyaWVzW2ldID09IGl0ZW0pIHsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9lbnRyaWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlm
IChtX2VudHJpZXNbaV0ucHRyKCkgPT0gaXRlbSkgewogICAgICAgICAgICAgbV9lbnRyaWVzLnJl
bW92ZShpKTsKICAgICAgICAgICAgIG1fZW50cnlIYXNoLnJlbW92ZShpdGVtKTsKICAgICAgICAg
ICAgIGlmIChtX2N1cnJlbnQgPT0gTm9DdXJyZW50SXRlbUluZGV4IHx8IG1fY3VycmVudCA8IGkp
CkBAIC0yODcsNiArMjg2LDcgQEAgdm9pZCBCYWNrRm9yd2FyZExpc3Q6OnJlbW92ZUl0ZW0oSGlz
dG9yeUl0ZW0qIGl0ZW0pCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQorICAgIH0KIH0KIAogYm9vbCBCYWNrRm9yd2FyZExpc3Q6OmNvbnRhaW5zSXRlbShIaXN0
b3J5SXRlbSogZW50cnkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tG
b3J3YXJkTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaApp
bmRleCBhMzNjOGE2NmMwMDk2NTk0NjYxNmNjNGVkYzQ3ZmNjOGVjYjAyMDY4Li41OTI5Mjc2MGNj
Yzg2Zjc5MmM0NWQ3YzU0YTZmNjllN2UyYzA2M2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
QmFja0ZvcndhcmRMaXN0LmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBQYWdlOwogCi10eXBlZGVmIFZlY3RvcjxSZWZQdHI8SGlzdG9yeUl0ZW0+PiBIaXN0
b3J5SXRlbVZlY3RvcjsKK3R5cGVkZWYgVmVjdG9yPFJlZjxIaXN0b3J5SXRlbT4+IEhpc3RvcnlJ
dGVtVmVjdG9yOwogdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxIaXN0b3J5SXRlbT4+IEhpc3RvcnlJ
dGVtSGFzaFNldDsKIAogY2xhc3MgQmFja0ZvcndhcmRMaXN0IDogcHVibGljIEJhY2tGb3J3YXJk
Q2xpZW50IHsKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgUGFnZSogcGFnZSgpIHsg
cmV0dXJuIG1fcGFnZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFkZEl0ZW0oUGFzc1JlZlB0cjxI
aXN0b3J5SXRlbT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBhZGRJdGVtKFJlZjxIaXN0
b3J5SXRlbT4mJikgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnb0JhY2soKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdvRm9yd2FyZCgpOwogICAgIHZpcnR1YWwgdm9pZCBn
b1RvSXRlbShIaXN0b3J5SXRlbSopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3Rv
cnlJdGVtLmNwcAppbmRleCAzYzUyZmQ2ZTAyNzkxNzhiZjQwYWNmZTRiZDgzMjQ1MTkyY2FhMDJk
Li4yMjliYWI4ZTdhMjNhYzA1YzBhZDA1ZTdlZDQzMTU3ZGNkN2U4YjAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcApAQCAtMTcyLDkgKzE3Miw5IEBAIGlubGluZSBIaXN0
b3J5SXRlbTo6SGlzdG9yeUl0ZW0oY29uc3QgSGlzdG9yeUl0ZW0mIGl0ZW0pCiAgICAgICAgIG1f
cmVkaXJlY3RVUkxzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8U3RyaW5nPj4oKml0ZW0ubV9y
ZWRpcmVjdFVSTHMpOwogfQogCi1QYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBIaXN0b3J5SXRlbTo6
Y29weSgpIGNvbnN0CitSZWY8SGlzdG9yeUl0ZW0+IEhpc3RvcnlJdGVtOjpjb3B5KCkgY29uc3QK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhpc3RvcnlJdGVtKCp0aGlzKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgSGlzdG9yeUl0ZW0oKnRoaXMpKTsKIH0KIAogdm9pZCBIaXN0b3J5
SXRlbTo6cmVzZXQoKQpAQCAtMzY2LDQ0ICszNjYsNDQgQEAgdm9pZCBIaXN0b3J5SXRlbTo6c2V0
U3RhdGVPYmplY3QoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG9iamVjdCkKICAg
ICBtX3N0YXRlT2JqZWN0ID0gb2JqZWN0OwogfQogCi12b2lkIEhpc3RvcnlJdGVtOjphZGRDaGls
ZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gY2hpbGQpCit2b2lkIEhpc3RvcnlJdGVtOjph
ZGRDaGlsZEl0ZW0oUmVmPEhpc3RvcnlJdGVtPiYmIGNoaWxkKQogewogICAgIEFTU0VSVCghY2hp
bGRJdGVtV2l0aFRhcmdldChjaGlsZC0+dGFyZ2V0KCkpKTsKLSAgICBtX2NoaWxkcmVuLmFwcGVu
ZChjaGlsZCk7CisgICAgbV9jaGlsZHJlbi5hcHBlbmQoV1RGOjptb3ZlKGNoaWxkKSk7CiB9CiAK
LXZvaWQgSGlzdG9yeUl0ZW06OnNldENoaWxkSXRlbShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBj
aGlsZCkKK3ZvaWQgSGlzdG9yeUl0ZW06OnNldENoaWxkSXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYg
Y2hpbGQpCiB7CiAgICAgQVNTRVJUKCFjaGlsZC0+aXNUYXJnZXRJdGVtKCkpOwogICAgIHVuc2ln
bmVkIHNpemUgPSBtX2NoaWxkcmVuLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgc2l6ZTsgKytpKSAgewogICAgICAgICBpZiAobV9jaGlsZHJlbltpXS0+dGFyZ2V0KCkgPT0g
Y2hpbGQtPnRhcmdldCgpKSB7CiAgICAgICAgICAgICBjaGlsZC0+c2V0SXNUYXJnZXRJdGVtKG1f
Y2hpbGRyZW5baV0tPmlzVGFyZ2V0SXRlbSgpKTsKLSAgICAgICAgICAgIG1fY2hpbGRyZW5baV0g
PSBjaGlsZDsKKyAgICAgICAgICAgIG1fY2hpbGRyZW5baV0gPSBXVEY6Om1vdmUoY2hpbGQpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIG1fY2hpbGRyZW4uYXBw
ZW5kKGNoaWxkKTsKKyAgICBtX2NoaWxkcmVuLmFwcGVuZChXVEY6Om1vdmUoY2hpbGQpKTsKIH0K
IAotSGlzdG9yeUl0ZW0qIEhpc3RvcnlJdGVtOjpjaGlsZEl0ZW1XaXRoVGFyZ2V0KGNvbnN0IFN0
cmluZyYgdGFyZ2V0KSBjb25zdAorSGlzdG9yeUl0ZW0qIEhpc3RvcnlJdGVtOjpjaGlsZEl0ZW1X
aXRoVGFyZ2V0KGNvbnN0IFN0cmluZyYgdGFyZ2V0KQogewogICAgIHVuc2lnbmVkIHNpemUgPSBt
X2NoaWxkcmVuLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytp
KSB7CiAgICAgICAgIGlmIChtX2NoaWxkcmVuW2ldLT50YXJnZXQoKSA9PSB0YXJnZXQpCi0gICAg
ICAgICAgICByZXR1cm4gbV9jaGlsZHJlbltpXS5nZXQoKTsKKyAgICAgICAgICAgIHJldHVybiBt
X2NoaWxkcmVuW2ldLnB0cigpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotSGlzdG9yeUl0ZW0qIEhpc3RvcnlJdGVtOjpjaGlsZEl0ZW1XaXRoRG9jdW1l
bnRTZXF1ZW5jZU51bWJlcihsb25nIGxvbmcgbnVtYmVyKSBjb25zdAorSGlzdG9yeUl0ZW0qIEhp
c3RvcnlJdGVtOjpjaGlsZEl0ZW1XaXRoRG9jdW1lbnRTZXF1ZW5jZU51bWJlcihsb25nIGxvbmcg
bnVtYmVyKQogewogICAgIHVuc2lnbmVkIHNpemUgPSBtX2NoaWxkcmVuLnNpemUoKTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIGlmIChtX2NoaWxk
cmVuW2ldLT5kb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkgPT0gbnVtYmVyKQotICAgICAgICAgICAg
cmV0dXJuIG1fY2hpbGRyZW5baV0uZ2V0KCk7CisgICAgICAgICAgICByZXR1cm4gbV9jaGlsZHJl
bltpXS5wdHIoKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKIC8vIDxyZGFyOi8vcHJvYmxlbS80ODk1ODQ5PiBIaXN0b3J5SXRlbTo6ZmluZFRhcmdldEl0
ZW0oKSBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBhIG5vbi1yZWN1cnNpdmUgbWV0aG9kLgpAQCAt
NDEzLDE1ICs0MTMsMTcgQEAgSGlzdG9yeUl0ZW0qIEhpc3RvcnlJdGVtOjpmaW5kVGFyZ2V0SXRl
bSgpCiAgICAgICAgIHJldHVybiB0aGlzOwogICAgIHVuc2lnbmVkIHNpemUgPSBtX2NoaWxkcmVu
LnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAg
ICAgIC8vIEZJWE1FOiB0YXJnZXRJdGVtKCkgY2Fubm90IHJldHVybiBudWxsIGN1cnJlbnRseSwg
d2hpY2ggaXMgd3JvbmcuCiAgICAgICAgIGlmIChIaXN0b3J5SXRlbSogbWF0Y2ggPSBtX2NoaWxk
cmVuW2ldLT50YXJnZXRJdGVtKCkpCiAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7CiAgICAgfQot
ICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBIaXN0b3J5SXRlbSogSGlz
dG9yeUl0ZW06OnRhcmdldEl0ZW0oKQogewogICAgIEhpc3RvcnlJdGVtKiBmb3VuZEl0ZW0gPSBm
aW5kVGFyZ2V0SXRlbSgpOworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBub3Qg
ZmFsbCBiYWNrIHRvIHx0aGlzfC4KICAgICByZXR1cm4gZm91bmRJdGVtID8gZm91bmRJdGVtIDog
dGhpczsKIH0KIApAQCAtNDQwLDEzICs0NDIsMTMgQEAgdm9pZCBIaXN0b3J5SXRlbTo6Y2xlYXJD
aGlsZHJlbigpCiAgICAgbV9jaGlsZHJlbi5jbGVhcigpOwogfQogCi1ib29sIEhpc3RvcnlJdGVt
Ojppc0FuY2VzdG9yT2YoY29uc3QgSGlzdG9yeUl0ZW0qIGl0ZW0pIGNvbnN0Citib29sIEhpc3Rv
cnlJdGVtOjppc0FuY2VzdG9yT2YoY29uc3QgSGlzdG9yeUl0ZW0mIGl0ZW0pIGNvbnN0CiB7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NoaWxkcmVuLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIEhpc3RvcnlJdGVtKiBjaGlsZCA9IG1fY2hpbGRyZW5baV0uZ2V0KCk7Ci0gICAgICAgIGlm
IChjaGlsZCA9PSBpdGVtKQorICAgICAgICBhdXRvJiBjaGlsZCA9IG1fY2hpbGRyZW5baV0uZ2V0
KCk7CisgICAgICAgIGlmICgmY2hpbGQgPT0gJml0ZW0pCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgaWYgKGNoaWxkLT5pc0FuY2VzdG9yT2YoaXRlbSkpCisgICAgICAgIGlmIChj
aGlsZC5pc0FuY2VzdG9yT2YoaXRlbSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDU1LDM0ICs0NTcsMzQgQEAgYm9vbCBIaXN0b3J5SXRl
bTo6aXNBbmNlc3Rvck9mKGNvbnN0IEhpc3RvcnlJdGVtKiBpdGVtKSBjb25zdAogLy8gV2UgZG8g
c2FtZS1kb2N1bWVudCBuYXZpZ2F0aW9uIGlmIGdvaW5nIHRvIGEgZGlmZmVyZW50IGl0ZW0gYW5k
IGlmIGVpdGhlciBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWU6CiAvLyAtIFRoZSBvdGhlciBpdGVt
IGNvcnJlc3BvbmRzIHRvIHRoZSBzYW1lIGRvY3VtZW50IChmb3IgaGlzdG9yeSBlbnRyaWVzIGNy
ZWF0ZWQgdmlhIHB1c2hTdGF0ZSBvciBmcmFnbWVudCBjaGFuZ2VzKS4KIC8vIC0gVGhlIG90aGVy
IGl0ZW0gY29ycmVzcG9uZHMgdG8gdGhlIHNhbWUgc2V0IG9mIGRvY3VtZW50cywgaW5jbHVkaW5n
IGZyYW1lcyAoZm9yIGhpc3RvcnkgZW50cmllcyBjcmVhdGVkIHZpYSByZWd1bGFyIG5hdmlnYXRp
b24pCi1ib29sIEhpc3RvcnlJdGVtOjpzaG91bGREb1NhbWVEb2N1bWVudE5hdmlnYXRpb25UbyhI
aXN0b3J5SXRlbSogb3RoZXJJdGVtKSBjb25zdAorYm9vbCBIaXN0b3J5SXRlbTo6c2hvdWxkRG9T
YW1lRG9jdW1lbnROYXZpZ2F0aW9uVG8oSGlzdG9yeUl0ZW0mIG90aGVySXRlbSkgY29uc3QKIHsK
LSAgICBpZiAodGhpcyA9PSBvdGhlckl0ZW0pCisgICAgaWYgKHRoaXMgPT0gJm90aGVySXRlbSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKHN0YXRlT2JqZWN0KCkgfHwgb3RoZXJJ
dGVtLT5zdGF0ZU9iamVjdCgpKQotICAgICAgICByZXR1cm4gZG9jdW1lbnRTZXF1ZW5jZU51bWJl
cigpID09IG90aGVySXRlbS0+ZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpOworICAgIGlmIChzdGF0
ZU9iamVjdCgpIHx8IG90aGVySXRlbS5zdGF0ZU9iamVjdCgpKQorICAgICAgICByZXR1cm4gZG9j
dW1lbnRTZXF1ZW5jZU51bWJlcigpID09IG90aGVySXRlbS5kb2N1bWVudFNlcXVlbmNlTnVtYmVy
KCk7CiAgICAgCi0gICAgaWYgKCh1cmwoKS5oYXNGcmFnbWVudElkZW50aWZpZXIoKSB8fCBvdGhl
ckl0ZW0tPnVybCgpLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKSAmJiBlcXVhbElnbm9yaW5nRnJh
Z21lbnRJZGVudGlmaWVyKHVybCgpLCBvdGhlckl0ZW0tPnVybCgpKSkKLSAgICAgICAgcmV0dXJu
IGRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSA9PSBvdGhlckl0ZW0tPmRvY3VtZW50U2VxdWVuY2VO
dW1iZXIoKTsgICAgICAgIAorICAgIGlmICgodXJsKCkuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkg
fHwgb3RoZXJJdGVtLnVybCgpLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKSAmJiBlcXVhbElnbm9y
aW5nRnJhZ21lbnRJZGVudGlmaWVyKHVybCgpLCBvdGhlckl0ZW0udXJsKCkpKQorICAgICAgICBy
ZXR1cm4gZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpID09IG90aGVySXRlbS5kb2N1bWVudFNlcXVl
bmNlTnVtYmVyKCk7CiAgICAgCiAgICAgcmV0dXJuIGhhc1NhbWVEb2N1bWVudFRyZWUob3RoZXJJ
dGVtKTsKIH0KIAogLy8gRG9lcyBhIHJlY3Vyc2l2ZSBjaGVjayB0aGF0IHRoaXMgaXRlbSBhbmQg
aXRzIGRlc2NlbmRhbnRzIGhhdmUgdGhlIHNhbWUKIC8vIGRvY3VtZW50IHNlcXVlbmNlIG51bWJl
cnMgYXMgdGhlIG90aGVyIGl0ZW0uCi1ib29sIEhpc3RvcnlJdGVtOjpoYXNTYW1lRG9jdW1lbnRU
cmVlKEhpc3RvcnlJdGVtKiBvdGhlckl0ZW0pIGNvbnN0Citib29sIEhpc3RvcnlJdGVtOjpoYXNT
YW1lRG9jdW1lbnRUcmVlKEhpc3RvcnlJdGVtJiBvdGhlckl0ZW0pIGNvbnN0CiB7Ci0gICAgaWYg
KGRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSAhPSBvdGhlckl0ZW0tPmRvY3VtZW50U2VxdWVuY2VO
dW1iZXIoKSkKKyAgICBpZiAoZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpICE9IG90aGVySXRlbS5k
b2N1bWVudFNlcXVlbmNlTnVtYmVyKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
Ci0gICAgaWYgKGNoaWxkcmVuKCkuc2l6ZSgpICE9IG90aGVySXRlbS0+Y2hpbGRyZW4oKS5zaXpl
KCkpCisgICAgaWYgKGNoaWxkcmVuKCkuc2l6ZSgpICE9IG90aGVySXRlbS5jaGlsZHJlbigpLnNp
emUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjaGlsZHJlbigpLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIEhpc3RvcnlJdGVtKiBjaGlsZCA9
IGNoaWxkcmVuKClbaV0uZ2V0KCk7Ci0gICAgICAgIEhpc3RvcnlJdGVtKiBvdGhlckNoaWxkID0g
b3RoZXJJdGVtLT5jaGlsZEl0ZW1XaXRoRG9jdW1lbnRTZXF1ZW5jZU51bWJlcihjaGlsZC0+ZG9j
dW1lbnRTZXF1ZW5jZU51bWJlcigpKTsKLSAgICAgICAgaWYgKCFvdGhlckNoaWxkIHx8ICFjaGls
ZC0+aGFzU2FtZURvY3VtZW50VHJlZShvdGhlckNoaWxkKSkKKyAgICAgICAgYXV0byYgY2hpbGQg
PSBjaGlsZHJlbigpW2ldLmdldCgpOworICAgICAgICBhdXRvKiBvdGhlckNoaWxkID0gb3RoZXJJ
dGVtLmNoaWxkSXRlbVdpdGhEb2N1bWVudFNlcXVlbmNlTnVtYmVyKGNoaWxkLmRvY3VtZW50U2Vx
dWVuY2VOdW1iZXIoKSk7CisgICAgICAgIGlmICghb3RoZXJDaGlsZCB8fCAhY2hpbGQuaGFzU2Ft
ZURvY3VtZW50VHJlZSgqb3RoZXJDaGlsZCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCkBAIC00OTEsMTYgKzQ5MywxNiBAQCBib29sIEhpc3RvcnlJdGVtOjpoYXNTYW1lRG9j
dW1lbnRUcmVlKEhpc3RvcnlJdGVtKiBvdGhlckl0ZW0pIGNvbnN0CiAKIC8vIERvZXMgYSBub24t
cmVjdXJzaXZlIGNoZWNrIHRoYXQgdGhpcyBpdGVtIGFuZCBpdHMgaW1tZWRpYXRlIGNoaWxkcmVu
IGhhdmUgdGhlCiAvLyBzYW1lIGZyYW1lcyBhcyB0aGUgb3RoZXIgaXRlbS4KLWJvb2wgSGlzdG9y
eUl0ZW06Omhhc1NhbWVGcmFtZXMoSGlzdG9yeUl0ZW0qIG90aGVySXRlbSkgY29uc3QKK2Jvb2wg
SGlzdG9yeUl0ZW06Omhhc1NhbWVGcmFtZXMoSGlzdG9yeUl0ZW0mIG90aGVySXRlbSkgY29uc3QK
IHsKLSAgICBpZiAodGFyZ2V0KCkgIT0gb3RoZXJJdGVtLT50YXJnZXQoKSkKKyAgICBpZiAodGFy
Z2V0KCkgIT0gb3RoZXJJdGVtLnRhcmdldCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIAotICAgIGlmIChjaGlsZHJlbigpLnNpemUoKSAhPSBvdGhlckl0ZW0tPmNoaWxkcmVuKCku
c2l6ZSgpKQorICAgIGlmIChjaGlsZHJlbigpLnNpemUoKSAhPSBvdGhlckl0ZW0uY2hpbGRyZW4o
KS5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY2hpbGRyZW4oKS5zaXplKCk7IGkrKykgewotICAgICAgICBpZiAoIW90aGVySXRlbS0+
Y2hpbGRJdGVtV2l0aFRhcmdldChjaGlsZHJlbigpW2ldLT50YXJnZXQoKSkpCisgICAgICAgIGlm
ICghb3RoZXJJdGVtLmNoaWxkSXRlbVdpdGhUYXJnZXQoY2hpbGRyZW4oKVtpXS0+dGFyZ2V0KCkp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNTQyLDEwICs1NDQsMTAg
QEAgRm9ybURhdGEqIEhpc3RvcnlJdGVtOjpmb3JtRGF0YSgpCiAgICAgcmV0dXJuIG1fZm9ybURh
dGEuZ2V0KCk7CiB9CiAKLWJvb2wgSGlzdG9yeUl0ZW06OmlzQ3VycmVudERvY3VtZW50KERvY3Vt
ZW50KiBkb2MpIGNvbnN0Citib29sIEhpc3RvcnlJdGVtOjppc0N1cnJlbnREb2N1bWVudChEb2N1
bWVudCYgZG9jdW1lbnQpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBmaW5kIGEg
YmV0dGVyIHdheSB0byBjaGVjayBpZiB0aGlzIGlzIHRoZSBjdXJyZW50IGRvY3VtZW50LgotICAg
IHJldHVybiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKHVybCgpLCBkb2MtPnVybCgp
KTsKKyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwoKSwgZG9j
dW1lbnQudXJsKCkpOwogfQogCiB2b2lkIEhpc3RvcnlJdGVtOjphZGRSZWRpcmVjdFVSTChjb25z
dCBTdHJpbmcmIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9y
eUl0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAppbmRleCA2NGMw
NGJlZjk0ZWU2MjI0M2FjZjZjOWRjMzc2Njc0NGU3OWFlNjVkLi40ZDg0M2M0OGYyZjU4MmIzZWYx
YTIxYjZkY2NmNTIxZWY4MjFmNzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0hpc3RvcnlJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5o
CkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFVSTDsKIGVu
dW0gY2xhc3MgUHJ1bmluZ1JlYXNvbjsKIAotdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEhpc3RvcnlJ
dGVtPj4gSGlzdG9yeUl0ZW1WZWN0b3I7Cit0eXBlZGVmIFZlY3RvcjxSZWY8SGlzdG9yeUl0ZW0+
PiBIaXN0b3J5SXRlbVZlY3RvcjsKIAogZXh0ZXJuIHZvaWQgKCpub3RpZnlIaXN0b3J5SXRlbUNo
YW5nZWQpKEhpc3RvcnlJdGVtKik7CiAKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIAog
ICAgIFdFQkNPUkVfRVhQT1JUIH5IaXN0b3J5SXRlbSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQg
UGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gY29weSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IFJlZjxIaXN0b3J5SXRlbT4gY29weSgpIGNvbnN0OwogCiAgICAgLy8gUmVzZXRzIHRoZSBIaXN0
b3J5SXRlbSB0byBpdHMgaW5pdGlhbCBzdGF0ZSwgYXMgcmV0dXJuZWQgYnkgY3JlYXRlKCkuCiAg
ICAgdm9pZCByZXNldCgpOwpAQCAtMTQxLDI0ICsxNDEsMjQgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzZXRMYXN0VmlzaXRXYXNGYWlsdXJlKGJvb2wgd2FzRmFpbHVyZSkgeyBtX2xhc3RWaXNpdFdh
c0ZhaWx1cmUgPSB3YXNGYWlsdXJlOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENo
aWxkSXRlbShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPik7Ci0gICAgdm9pZCBzZXRDaGlsZEl0ZW0o
UGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4pOwotICAgIFdFQkNPUkVfRVhQT1JUIEhpc3RvcnlJdGVt
KiBjaGlsZEl0ZW1XaXRoVGFyZ2V0KGNvbnN0IFN0cmluZyYpIGNvbnN0OwotICAgIEhpc3RvcnlJ
dGVtKiBjaGlsZEl0ZW1XaXRoRG9jdW1lbnRTZXF1ZW5jZU51bWJlcihsb25nIGxvbmcgbnVtYmVy
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENoaWxkSXRlbShSZWY8SGlzdG9y
eUl0ZW0+JiYpOworICAgIHZvaWQgc2V0Q2hpbGRJdGVtKFJlZjxIaXN0b3J5SXRlbT4mJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0ZW0qIGNoaWxkSXRlbVdpdGhUYXJnZXQoY29uc3Qg
U3RyaW5nJik7CisgICAgSGlzdG9yeUl0ZW0qIGNoaWxkSXRlbVdpdGhEb2N1bWVudFNlcXVlbmNl
TnVtYmVyKGxvbmcgbG9uZyBudW1iZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIEhpc3RvcnlJdGVt
KiB0YXJnZXRJdGVtKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgSGlzdG9yeUl0ZW1WZWN0
b3ImIGNoaWxkcmVuKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNDaGlsZHJl
bigpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJDaGlsZHJlbigpOwotICAgIGJvb2wgaXNBbmNlc3Rv
ck9mKGNvbnN0IEhpc3RvcnlJdGVtKikgY29uc3Q7CisgICAgYm9vbCBpc0FuY2VzdG9yT2YoY29u
c3QgSGlzdG9yeUl0ZW0mKSBjb25zdDsKICAgICAKLSAgICBib29sIHNob3VsZERvU2FtZURvY3Vt
ZW50TmF2aWdhdGlvblRvKEhpc3RvcnlJdGVtKiBvdGhlckl0ZW0pIGNvbnN0OwotICAgIGJvb2wg
aGFzU2FtZUZyYW1lcyhIaXN0b3J5SXRlbSogb3RoZXJJdGVtKSBjb25zdDsKKyAgICBib29sIHNo
b3VsZERvU2FtZURvY3VtZW50TmF2aWdhdGlvblRvKEhpc3RvcnlJdGVtJiBvdGhlckl0ZW0pIGNv
bnN0OworICAgIGJvb2wgaGFzU2FtZUZyYW1lcyhIaXN0b3J5SXRlbSYgb3RoZXJJdGVtKSBjb25z
dDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkUmVkaXJlY3RVUkwoY29uc3QgU3RyaW5n
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4qIHJlZGlyZWN0VVJMcygpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVkaXJlY3RVUkxzKHN0ZDo6dW5pcXVl
X3B0cjxWZWN0b3I8U3RyaW5nPj4pOwogCi0gICAgYm9vbCBpc0N1cnJlbnREb2N1bWVudChEb2N1
bWVudCopIGNvbnN0OworICAgIGJvb2wgaXNDdXJyZW50RG9jdW1lbnQoRG9jdW1lbnQmKSBjb25z
dDsKICAgICAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJDT1JFX0VYUE9SVCBpZCB2aWV3
U3RhdGUoKSBjb25zdDsKQEAgLTIxMiw5ICsyMTIsOSBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVf
RVhQT1JUIEhpc3RvcnlJdGVtKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBTdHJpbmcmIGFsdGVybmF0ZVRpdGxlKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBIaXN0b3J5SXRlbShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3Qg
U3RyaW5nJiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwogCi0gICAgZXhwbGljaXQgSGlz
dG9yeUl0ZW0oY29uc3QgSGlzdG9yeUl0ZW0mKTsKKyAgICBIaXN0b3J5SXRlbShjb25zdCBIaXN0
b3J5SXRlbSYpOwogCi0gICAgYm9vbCBoYXNTYW1lRG9jdW1lbnRUcmVlKEhpc3RvcnlJdGVtKiBv
dGhlckl0ZW0pIGNvbnN0OworICAgIGJvb2wgaGFzU2FtZURvY3VtZW50VHJlZShIaXN0b3J5SXRl
bSYgb3RoZXJJdGVtKSBjb25zdDsKIAogICAgIEhpc3RvcnlJdGVtKiBmaW5kVGFyZ2V0SXRlbSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCAwNTlmMGZmOGU0ZmMx
NmY2ZjA5M2ExY2QwYWMyNzllMmM0NzA5NzRkLi5mZjFlY2M0ZTJhMTFjYTUwNTlkNTU4YTJiYjI4
ZjY2YThhMDM4YTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTMx
NDMsNyArMzE0Myw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRTYW1lRG9jdW1lbnRJdGVtKEhp
c3RvcnlJdGVtJiBpdGVtKQogICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXco
KSkKICAgICAgICAgdmlldy0+c2V0V2FzU2Nyb2xsZWRCeVVzZXIoZmFsc2UpOwogCi0gICAgaGlz
dG9yeSgpLnNldEN1cnJlbnRJdGVtKCZpdGVtKTsKKyAgICBoaXN0b3J5KCkuc2V0Q3VycmVudEl0
ZW0oaXRlbSk7CiAgICAgICAgIAogICAgIC8vIGxvYWRJblNhbWVEb2N1bWVudCgpIGFjdHVhbGx5
IGNoYW5nZXMgdGhlIFVSTCBhbmQgbm90aWZpZXMgbG9hZCBkZWxlZ2F0ZXMgb2YgYSAiZmFrZSIg
bG9hZAogICAgIGxvYWRJblNhbWVEb2N1bWVudChpdGVtLnVybCgpLCBpdGVtLnN0YXRlT2JqZWN0
KCksIGZhbHNlKTsKQEAgLTMyNDcsNyArMzI0Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRJ
dGVtKEhpc3RvcnlJdGVtJiBpdGVtLCBGcmFtZUxvYWRUeXBlIGxvYWRUeXBlKQogewogICAgIG1f
cmVxdWVzdGVkSGlzdG9yeUl0ZW0gPSAmaXRlbTsKICAgICBIaXN0b3J5SXRlbSogY3VycmVudEl0
ZW0gPSBoaXN0b3J5KCkuY3VycmVudEl0ZW0oKTsKLSAgICBib29sIHNhbWVEb2N1bWVudE5hdmln
YXRpb24gPSBjdXJyZW50SXRlbSAmJiBpdGVtLnNob3VsZERvU2FtZURvY3VtZW50TmF2aWdhdGlv
blRvKGN1cnJlbnRJdGVtKTsKKyAgICBib29sIHNhbWVEb2N1bWVudE5hdmlnYXRpb24gPSBjdXJy
ZW50SXRlbSAmJiBpdGVtLnNob3VsZERvU2FtZURvY3VtZW50TmF2aWdhdGlvblRvKCpjdXJyZW50
SXRlbSk7CiAKICAgICBpZiAoc2FtZURvY3VtZW50TmF2aWdhdGlvbikKICAgICAgICAgbG9hZFNh
bWVEb2N1bWVudEl0ZW0oaXRlbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
SGlzdG9yeUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250
cm9sbGVyLmNwcAppbmRleCBhY2Y5MDkwNmVhZGQyMDlkMGQwNGI0YThkZjg3MGU4MGY1ZTk3ZGU3
Li5jZjYxZjk4NWM5ZWVjN2JkNDU5MzRkODViYzU5MWRhYzAwMGZkNDQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKQEAgLTE4NSwxMiArMTg1LDExIEBA
IHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNhdmVEb2N1bWVudFN0YXRlKCkKICAgICBpZiAoIWl0
ZW0pCiAgICAgICAgIHJldHVybjsKIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUu
ZG9jdW1lbnQoKTsKLSAgICBBU1NFUlQoZG9jdW1lbnQpOwotICAgIAotICAgIGlmIChpdGVtLT5p
c0N1cnJlbnREb2N1bWVudChkb2N1bWVudCkgJiYgZG9jdW1lbnQtPmhhc0xpdmluZ1JlbmRlclRy
ZWUoKSkgeworICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50KCkpOworICAgIERvY3VtZW50JiBk
b2N1bWVudCA9ICptX2ZyYW1lLmRvY3VtZW50KCk7CisgICAgaWYgKGl0ZW0tPmlzQ3VycmVudERv
Y3VtZW50KGRvY3VtZW50KSAmJiBkb2N1bWVudC5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpIHsKICAg
ICAgICAgTE9HKExvYWRpbmcsICJXZWJDb3JlTG9hZGluZyAlczogc2F2aW5nIGZvcm0gc3RhdGUg
dG8gJXAiLCBtX2ZyYW1lLnRyZWUoKS51bmlxdWVOYW1lKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSwgaXRlbSk7Ci0gICAgICAgIGl0ZW0tPnNldERvY3VtZW50U3RhdGUoZG9jdW1lbnQtPmZvcm1F
bGVtZW50c1N0YXRlKCkpOworICAgICAgICBpdGVtLT5zZXREb2N1bWVudFN0YXRlKGRvY3VtZW50
LmZvcm1FbGVtZW50c1N0YXRlKCkpOwogICAgIH0KIH0KIApAQCAtMjUzLDcgKzI1Miw3IEBAIHZv
aWQgSGlzdG9yeUNvbnRyb2xsZXI6OmludmFsaWRhdGVDdXJyZW50SXRlbUNhY2hlZFBhZ2UoKQog
ICAgIH0KIH0KIAotYm9vbCBIaXN0b3J5Q29udHJvbGxlcjo6c2hvdWxkU3RvcExvYWRpbmdGb3JI
aXN0b3J5SXRlbShIaXN0b3J5SXRlbSogdGFyZ2V0SXRlbSkgY29uc3QKK2Jvb2wgSGlzdG9yeUNv
bnRyb2xsZXI6OnNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0mIHRh
cmdldEl0ZW0pIGNvbnN0CiB7CiAgICAgaWYgKCFtX2N1cnJlbnRJdGVtKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC00NjksOCArNDY4LDggQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBk
YXRlRm9yQ29tbWl0KCkKICAgICAgICAgLy8gTm90ZSBwcmV2aW91c0l0ZW0gbXVzdCBiZSBzZXQg
YmVmb3JlIHdlIGNsb3NlIHRoZSBVUkwsIHdoaWNoIHdpbGwKICAgICAgICAgLy8gaGFwcGVuIHdo
ZW4gdGhlIGRhdGEgc291cmNlIGlzIG1hZGUgbm9uLXByb3Zpc2lvbmFsIGJlbG93CiAgICAgICAg
IEFTU0VSVChtX3Byb3Zpc2lvbmFsSXRlbSk7Ci0gICAgICAgIHNldEN1cnJlbnRJdGVtKG1fcHJv
dmlzaW9uYWxJdGVtLmdldCgpKTsKLSAgICAgICAgbV9wcm92aXNpb25hbEl0ZW0gPSAwOworICAg
ICAgICBzZXRDdXJyZW50SXRlbSgqbV9wcm92aXNpb25hbEl0ZW0pOworICAgICAgICBtX3Byb3Zp
c2lvbmFsSXRlbSA9IG51bGxwdHI7CiAKICAgICAgICAgLy8gVGVsbCBhbGwgb3RoZXIgZnJhbWVz
IGluIHRoZSB0cmVlIHRvIGNvbW1pdCB0aGVpciBwcm92aXNpb25hbCBpdGVtcyBhbmQKICAgICAg
ICAgLy8gcmVzdG9yZSB0aGVpciBzY3JvbGwgcG9zaXRpb24uICBXZSdsbCBhdm9pZCB0aGlzIGZy
YW1lICh3aGljaCBoYXMgYWxyZWFkeQpAQCAtNTEwLDggKzUwOSw4IEBAIHZvaWQgSGlzdG9yeUNv
bnRyb2xsZXI6OnJlY3Vyc2l2ZVVwZGF0ZUZvckNvbW1pdCgpCiAgICAgICAgICAgICB2aWV3LT5z
ZXRXYXNTY3JvbGxlZEJ5VXNlcihmYWxzZSk7CiAKICAgICAgICAgLy8gTm93IGNvbW1pdCB0aGUg
cHJvdmlzaW9uYWwgaXRlbQotICAgICAgICBzZXRDdXJyZW50SXRlbShtX3Byb3Zpc2lvbmFsSXRl
bS5nZXQoKSk7Ci0gICAgICAgIG1fcHJvdmlzaW9uYWxJdGVtID0gMDsKKyAgICAgICAgc2V0Q3Vy
cmVudEl0ZW0oKm1fcHJvdmlzaW9uYWxJdGVtKTsKKyAgICAgICAgbV9wcm92aXNpb25hbEl0ZW0g
PSBudWxscHRyOwogCiAgICAgICAgIC8vIFJlc3RvcmUgZm9ybSBzdGF0ZSAod29ya3MgZnJvbSBj
dXJyZW50SXRlbSkKICAgICAgICAgcmVzdG9yZURvY3VtZW50U3RhdGUoKTsKQEAgLTU1NSwxMiAr
NTU0LDEyIEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZVVwZGF0ZUZvclNhbWVE
b2N1bWVudE5hdmlnYXRpb24oKQogCiAgICAgLy8gVGhlIHByb3Zpc2lvbmFsIGl0ZW0gbWF5IHJl
cHJlc2VudCBhIGRpZmZlcmVudCBwZW5kaW5nIG5hdmlnYXRpb24uCiAgICAgLy8gRG9uJ3QgY29t
bWl0IGl0IGlmIGl0IGlzbid0IGEgc2FtZSBkb2N1bWVudCBuYXZpZ2F0aW9uLgotICAgIGlmICht
X2N1cnJlbnRJdGVtICYmICFtX2N1cnJlbnRJdGVtLT5zaG91bGREb1NhbWVEb2N1bWVudE5hdmln
YXRpb25UbyhtX3Byb3Zpc2lvbmFsSXRlbS5nZXQoKSkpCisgICAgaWYgKG1fY3VycmVudEl0ZW0g
JiYgIW1fY3VycmVudEl0ZW0tPnNob3VsZERvU2FtZURvY3VtZW50TmF2aWdhdGlvblRvKCptX3By
b3Zpc2lvbmFsSXRlbSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIENvbW1pdCB0aGUgcHJv
dmlzaW9uYWwgaXRlbS4KLSAgICBzZXRDdXJyZW50SXRlbShtX3Byb3Zpc2lvbmFsSXRlbS5nZXQo
KSk7Ci0gICAgbV9wcm92aXNpb25hbEl0ZW0gPSAwOworICAgIHNldEN1cnJlbnRJdGVtKCptX3By
b3Zpc2lvbmFsSXRlbSk7CisgICAgbV9wcm92aXNpb25hbEl0ZW0gPSBudWxscHRyOwogCiAgICAg
Ly8gSXRlcmF0ZSBvdmVyIHRoZSByZXN0IG9mIHRoZSB0cmVlLgogICAgIGZvciAoRnJhbWUqIGNo
aWxkID0gbV9mcmFtZS50cmVlKCkuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+
dHJlZSgpLm5leHRTaWJsaW5nKCkpCkBAIC01NzUsMTEgKzU3NCwxMSBAQCB2b2lkIEhpc3RvcnlD
b250cm9sbGVyOjp1cGRhdGVGb3JGcmFtZUxvYWRDb21wbGV0ZWQoKQogICAgIG1fZnJhbWVMb2Fk
Q29tcGxldGUgPSB0cnVlOwogfQogCi12b2lkIEhpc3RvcnlDb250cm9sbGVyOjpzZXRDdXJyZW50
SXRlbShIaXN0b3J5SXRlbSogaXRlbSkKK3ZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNldEN1cnJl
bnRJdGVtKEhpc3RvcnlJdGVtJiBpdGVtKQogewogICAgIG1fZnJhbWVMb2FkQ29tcGxldGUgPSBm
YWxzZTsKICAgICBtX3ByZXZpb3VzSXRlbSA9IG1fY3VycmVudEl0ZW07Ci0gICAgbV9jdXJyZW50
SXRlbSA9IGl0ZW07CisgICAgbV9jdXJyZW50SXRlbSA9ICZpdGVtOwogfQogCiB2b2lkIEhpc3Rv
cnlDb250cm9sbGVyOjpzZXRDdXJyZW50SXRlbVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rp
b24mIHRpdGxlKQpAQCAtNjEwLDcgKzYwOSw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNl
dFByb3Zpc2lvbmFsSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKICAgICBtX3Byb3Zpc2lvbmFsSXRl
bSA9IGl0ZW07CiB9CiAKLXZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OmluaXRpYWxpemVJdGVtKEhp
c3RvcnlJdGVtKiBpdGVtKQordm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUl0ZW0o
SGlzdG9yeUl0ZW0mIGl0ZW0pCiB7CiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVy
ID0gbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwogICAgIEFTU0VSVChkb2N1bWVu
dExvYWRlcik7CkBAIC02NDIsMzQgKzY0MSwzNCBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpp
bml0aWFsaXplSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKICAgICBTdHJpbmcgcGFyZW50ID0gcGFy
ZW50RnJhbWUgPyBwYXJlbnRGcmFtZS0+dHJlZSgpLnVuaXF1ZU5hbWUoKSA6ICIiOwogICAgIFN0
cmluZ1dpdGhEaXJlY3Rpb24gdGl0bGUgPSBkb2N1bWVudExvYWRlci0+dGl0bGUoKTsKIAotICAg
IGl0ZW0tPnNldFVSTCh1cmwpOwotICAgIGl0ZW0tPnNldFRhcmdldChtX2ZyYW1lLnRyZWUoKS51
bmlxdWVOYW1lKCkpOwotICAgIGl0ZW0tPnNldFBhcmVudChwYXJlbnQpOworICAgIGl0ZW0uc2V0
VVJMKHVybCk7CisgICAgaXRlbS5zZXRUYXJnZXQobV9mcmFtZS50cmVlKCkudW5pcXVlTmFtZSgp
KTsKKyAgICBpdGVtLnNldFBhcmVudChwYXJlbnQpOwogICAgIC8vIEZJWE1FOiBzaG91bGQgc3Rv
cmUgdGl0bGUgZGlyZWN0aW9uYWxpdHkgaW4gaGlzdG9yeSBhcyB3ZWxsLgotICAgIGl0ZW0tPnNl
dFRpdGxlKHRpdGxlLnN0cmluZygpKTsKLSAgICBpdGVtLT5zZXRPcmlnaW5hbFVSTFN0cmluZyhv
cmlnaW5hbFVSTC5zdHJpbmcoKSk7CisgICAgaXRlbS5zZXRUaXRsZSh0aXRsZS5zdHJpbmcoKSk7
CisgICAgaXRlbS5zZXRPcmlnaW5hbFVSTFN0cmluZyhvcmlnaW5hbFVSTC5zdHJpbmcoKSk7CiAK
ICAgICBpZiAoIXVucmVhY2hhYmxlVVJMLmlzRW1wdHkoKSB8fCBkb2N1bWVudExvYWRlci0+cmVz
cG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID49IDQwMCkKLSAgICAgICAgaXRlbS0+c2V0TGFzdFZp
c2l0V2FzRmFpbHVyZSh0cnVlKTsKKyAgICAgICAgaXRlbS5zZXRMYXN0VmlzaXRXYXNGYWlsdXJl
KHRydWUpOwogCiAgICAgLy8gU2F2ZSBmb3JtIHN0YXRlIGlmIHRoaXMgaXMgYSBQT1NUCi0gICAg
aXRlbS0+c2V0Rm9ybUluZm9Gcm9tUmVxdWVzdChkb2N1bWVudExvYWRlci0+cmVxdWVzdCgpKTsK
KyAgICBpdGVtLnNldEZvcm1JbmZvRnJvbVJlcXVlc3QoZG9jdW1lbnRMb2FkZXItPnJlcXVlc3Qo
KSk7CiB9CiAKLVBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IEhpc3RvcnlDb250cm9sbGVyOjpjcmVh
dGVJdGVtKCkKK1JlZjxIaXN0b3J5SXRlbT4gSGlzdG9yeUNvbnRyb2xsZXI6OmNyZWF0ZUl0ZW0o
KQogewotICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gaXRlbSA9IEhpc3RvcnlJdGVtOjpjcmVhdGUo
KTsKLSAgICBpbml0aWFsaXplSXRlbShpdGVtLmdldCgpKTsKKyAgICBSZWY8SGlzdG9yeUl0ZW0+
IGl0ZW0gPSBIaXN0b3J5SXRlbTo6Y3JlYXRlKCk7CisgICAgaW5pdGlhbGl6ZUl0ZW0oaXRlbSk7
CiAgICAgCiAgICAgLy8gU2V0IHRoZSBpdGVtIGZvciB3aGljaCB3ZSB3aWxsIHNhdmUgZG9jdW1l
bnQgc3RhdGUKLSAgICBzZXRDdXJyZW50SXRlbShpdGVtLmdldCgpKTsKKyAgICBzZXRDdXJyZW50
SXRlbShpdGVtKTsKICAgICAKLSAgICByZXR1cm4gaXRlbS5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IGl0ZW07CiB9CiAKLVBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IEhpc3RvcnlDb250cm9sbGVyOjpj
cmVhdGVJdGVtVHJlZShGcmFtZSYgdGFyZ2V0RnJhbWUsIGJvb2wgY2xpcEF0VGFyZ2V0KQorUmVm
PEhpc3RvcnlJdGVtPiBIaXN0b3J5Q29udHJvbGxlcjo6Y3JlYXRlSXRlbVRyZWUoRnJhbWUmIHRh
cmdldEZyYW1lLCBib29sIGNsaXBBdFRhcmdldCkKIHsKLSAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+
IGJmSXRlbSA9IGNyZWF0ZUl0ZW0oKTsKKyAgICBSZWY8SGlzdG9yeUl0ZW0+IGJmSXRlbSA9IGNy
ZWF0ZUl0ZW0oKTsKICAgICBpZiAoIW1fZnJhbWVMb2FkQ29tcGxldGUpCiAgICAgICAgIHNhdmVT
Y3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZVRvSXRlbShtX3ByZXZpb3VzSXRlbS5nZXQoKSk7CiAK
QEAgLTcxNyw3ICs3MTYsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVTZXRQ
cm92aXNpb25hbEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEhpc3RvcnlJdAogICAgIC8vIFNldCBw
cm92aXNpb25hbCBpdGVtLCB3aGljaCB3aWxsIGJlIGNvbW1pdHRlZCBpbiByZWN1cnNpdmVVcGRh
dGVGb3JDb21taXQuCiAgICAgbV9wcm92aXNpb25hbEl0ZW0gPSAmaXRlbTsKIAotICAgIGZvciAo
Y29uc3QgYXV0byYgY2hpbGRJdGVtIDogaXRlbS5jaGlsZHJlbigpKSB7CisgICAgZm9yIChhdXRv
JiBjaGlsZEl0ZW0gOiBpdGVtLmNoaWxkcmVuKCkpIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiBj
aGlsZEZyYW1lTmFtZSA9IGNoaWxkSXRlbS0+dGFyZ2V0KCk7CiAKICAgICAgICAgSGlzdG9yeUl0
ZW0qIGZyb21DaGlsZEl0ZW0gPSBmcm9tSXRlbS0+Y2hpbGRJdGVtV2l0aFRhcmdldChjaGlsZEZy
YW1lTmFtZSk7CkBAIC03MjUsNyArNzI0LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVj
dXJzaXZlU2V0UHJvdmlzaW9uYWxJdGVtKEhpc3RvcnlJdGVtJiBpdGVtLCBIaXN0b3J5SXQKICAg
ICAgICAgRnJhbWUqIGNoaWxkRnJhbWUgPSBtX2ZyYW1lLnRyZWUoKS5jaGlsZChjaGlsZEZyYW1l
TmFtZSk7CiAgICAgICAgIEFTU0VSVChjaGlsZEZyYW1lKTsKIAotICAgICAgICBjaGlsZEZyYW1l
LT5sb2FkZXIoKS5oaXN0b3J5KCkucmVjdXJzaXZlU2V0UHJvdmlzaW9uYWxJdGVtKCpjaGlsZEl0
ZW0sIGZyb21DaGlsZEl0ZW0pOworICAgICAgICBjaGlsZEZyYW1lLT5sb2FkZXIoKS5oaXN0b3J5
KCkucmVjdXJzaXZlU2V0UHJvdmlzaW9uYWxJdGVtKGNvbnN0X2Nhc3Q8SGlzdG9yeUl0ZW0mPihj
aGlsZEl0ZW0uZ2V0KCkpLCBmcm9tQ2hpbGRJdGVtKTsKICAgICB9CiB9CiAKQEAgLTczOSwxNCAr
NzM4LDE0IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZUdvVG9JdGVtKEhpc3Rv
cnlJdGVtJiBpdGVtLCBIaXN0b3J5SXRlbSogZnJvbUl0CiAgICAgfQogCiAgICAgLy8gSnVzdCBp
dGVyYXRlIG92ZXIgdGhlIHJlc3QsIGxvb2tpbmcgZm9yIGZyYW1lcyB0byBuYXZpZ2F0ZS4KLSAg
ICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkSXRlbSA6IGl0ZW0uY2hpbGRyZW4oKSkgeworICAgIGZv
ciAoYXV0byYgY2hpbGRJdGVtIDogaXRlbS5jaGlsZHJlbigpKSB7CiAgICAgICAgIGNvbnN0IFN0
cmluZyYgY2hpbGRGcmFtZU5hbWUgPSBjaGlsZEl0ZW0tPnRhcmdldCgpOwogCiAgICAgICAgIEhp
c3RvcnlJdGVtKiBmcm9tQ2hpbGRJdGVtID0gZnJvbUl0ZW0tPmNoaWxkSXRlbVdpdGhUYXJnZXQo
Y2hpbGRGcmFtZU5hbWUpOwogICAgICAgICBBU1NFUlQoZnJvbUNoaWxkSXRlbSk7CiAgICAgICAg
IEZyYW1lKiBjaGlsZEZyYW1lID0gbV9mcmFtZS50cmVlKCkuY2hpbGQoY2hpbGRGcmFtZU5hbWUp
OwogICAgICAgICBBU1NFUlQoY2hpbGRGcmFtZSk7Ci0gICAgICAgIGNoaWxkRnJhbWUtPmxvYWRl
cigpLmhpc3RvcnkoKS5yZWN1cnNpdmVHb1RvSXRlbSgqY2hpbGRJdGVtLCBmcm9tQ2hpbGRJdGVt
LCB0eXBlKTsKKyAgICAgICAgY2hpbGRGcmFtZS0+bG9hZGVyKCkuaGlzdG9yeSgpLnJlY3Vyc2l2
ZUdvVG9JdGVtKGNvbnN0X2Nhc3Q8SGlzdG9yeUl0ZW0mPihjaGlsZEl0ZW0uZ2V0KCkpLCBmcm9t
Q2hpbGRJdGVtLCB0eXBlKTsKICAgICB9CiB9CiAKQEAgLTc2Myw3ICs3NjIsNyBAQCBib29sIEhp
c3RvcnlDb250cm9sbGVyOjppdGVtc0FyZUNsb25lcyhIaXN0b3J5SXRlbSYgaXRlbTEsIEhpc3Rv
cnlJdGVtKiBpdGVtMikgYwogICAgICAgICAmJiAmaXRlbTEgIT0gaXRlbTIKICAgICAgICAgJiYg
aXRlbTEuaXRlbVNlcXVlbmNlTnVtYmVyKCkgPT0gaXRlbTItPml0ZW1TZXF1ZW5jZU51bWJlcigp
CiAgICAgICAgICYmIGN1cnJlbnRGcmFtZXNNYXRjaEl0ZW0oJml0ZW0xKQotICAgICAgICAmJiBp
dGVtMi0+aGFzU2FtZUZyYW1lcygmaXRlbTEpOworICAgICAgICAmJiBpdGVtMi0+aGFzU2FtZUZy
YW1lcyhpdGVtMSk7CiB9CiAKIC8vIEhlbHBlciBtZXRob2QgdGhhdCBkZXRlcm1pbmVzIHdoZXRo
ZXIgdGhlIGN1cnJlbnQgZnJhbWUgdHJlZSBtYXRjaGVzIGdpdmVuIGhpc3RvcnkgaXRlbSdzLgpA
QCAtODIzLDcgKzgyMiw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUN1cnJlbnRJ
dGVtKCkKICAgICAgICAgLy8gZGVwZW5kZW50IG9uIHRoZSBkb2N1bWVudC4KICAgICAgICAgYm9v
bCBpc1RhcmdldEl0ZW0gPSBtX2N1cnJlbnRJdGVtLT5pc1RhcmdldEl0ZW0oKTsKICAgICAgICAg
bV9jdXJyZW50SXRlbS0+cmVzZXQoKTsKLSAgICAgICAgaW5pdGlhbGl6ZUl0ZW0obV9jdXJyZW50
SXRlbS5nZXQoKSk7CisgICAgICAgIGluaXRpYWxpemVJdGVtKCptX2N1cnJlbnRJdGVtKTsKICAg
ICAgICAgbV9jdXJyZW50SXRlbS0+c2V0SXNUYXJnZXRJdGVtKGlzVGFyZ2V0SXRlbSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgLy8gRXZlbiBpZiB0aGUgZmluYWwgVVJMIGRpZG4ndCBjaGFuZ2Us
IHRoZSBmb3JtIGRhdGEgbWF5IGhhdmUgY2hhbmdlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hp
c3RvcnlDb250cm9sbGVyLmgKaW5kZXggMWI0MGE4MGIwZTMyNzE4YjMzZWZiNDIyYWFmZTY3NmZi
YzNjN2ZlOC4uZTM5NTJjNjU1OTQzMmU3OGJhOWQ1N2Q2MDA3OTI4MjBhNmYwODc3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmgKQEAgLTc0LDcgKzc0LDcgQEAg
cHVibGljOgogICAgIHZvaWQgdXBkYXRlRm9yRnJhbWVMb2FkQ29tcGxldGVkKCk7CiAKICAgICBI
aXN0b3J5SXRlbSogY3VycmVudEl0ZW0oKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRJdGVtLmdl
dCgpOyB9Ci0gICAgdm9pZCBzZXRDdXJyZW50SXRlbShIaXN0b3J5SXRlbSopOworICAgIHZvaWQg
c2V0Q3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0mKTsKICAgICB2b2lkIHNldEN1cnJlbnRJdGVtVGl0
bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIGJvb2wgY3VycmVudEl0ZW1TaG91
bGRCZVJlcGxhY2VkKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBsYWNlQ3Vy
cmVudEl0ZW0oSGlzdG9yeUl0ZW0qKTsKQEAgLTkyLDEyICs5MiwxMiBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFBhZ2U7Ci0gICAgYm9vbCBzaG91bGRTdG9wTG9hZGlu
Z0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKikgY29uc3Q7CisgICAgYm9vbCBzaG91bGRTdG9w
TG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtJikgY29uc3Q7CiAgICAgdm9pZCBnb1Rv
SXRlbShIaXN0b3J5SXRlbSYsIEZyYW1lTG9hZFR5cGUpOwogCi0gICAgdm9pZCBpbml0aWFsaXpl
SXRlbShIaXN0b3J5SXRlbSopOwotICAgIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGNyZWF0ZUl0
ZW0oKTsKLSAgICBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBjcmVhdGVJdGVtVHJlZShGcmFtZSYg
dGFyZ2V0RnJhbWUsIGJvb2wgY2xpcEF0VGFyZ2V0KTsKKyAgICB2b2lkIGluaXRpYWxpemVJdGVt
KEhpc3RvcnlJdGVtJik7CisgICAgUmVmPEhpc3RvcnlJdGVtPiBjcmVhdGVJdGVtKCk7CisgICAg
UmVmPEhpc3RvcnlJdGVtPiBjcmVhdGVJdGVtVHJlZShGcmFtZSYgdGFyZ2V0RnJhbWUsIGJvb2wg
Y2xpcEF0VGFyZ2V0KTsKIAogICAgIHZvaWQgcmVjdXJzaXZlU2V0UHJvdmlzaW9uYWxJdGVtKEhp
c3RvcnlJdGVtJiwgSGlzdG9yeUl0ZW0qKTsKICAgICB2b2lkIHJlY3Vyc2l2ZUdvVG9JdGVtKEhp
c3RvcnlJdGVtJiwgSGlzdG9yeUl0ZW0qLCBGcmFtZUxvYWRUeXBlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CmluZGV4IDI3YzA0YjU5NThkY2JhZjJkYjU1ZjZmYmUyM2E1MTdiZjZkMjE1NTIuLjA2YjkxYmFm
MGNlODkxNjkxMTZjMjE1YmFjYjRiZDE4ZGI4NTk5NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAt
NDM2LDcgKzQzNiw3IEBAIHZvaWQgUGFnZTo6Z29Ub0l0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEZy
YW1lTG9hZFR5cGUgdHlwZSkKICAgICAvLyBiZWluZyBkZXJlZigpLWVkLiBNYWtlIHN1cmUgd2Ug
Y2FuIHN0aWxsIHVzZSBpdCB3aXRoIEhpc3RvcnlDb250cm9sbGVyOjpnb1RvSXRlbSBsYXRlci4K
ICAgICBSZWY8SGlzdG9yeUl0ZW0+IHByb3RlY3RvcihpdGVtKTsKIAotICAgIGlmIChtX21haW5G
cmFtZS0+bG9hZGVyKCkuaGlzdG9yeSgpLnNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0o
Jml0ZW0pKQorICAgIGlmIChtX21haW5GcmFtZS0+bG9hZGVyKCkuaGlzdG9yeSgpLnNob3VsZFN0
b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oaXRlbSkpCiAgICAgICAgIG1fbWFpbkZyYW1lLT5sb2Fk
ZXIoKS5zdG9wQWxsTG9hZGVycygpOwogCiAgICAgbV9tYWluRnJhbWUtPmxvYWRlcigpLmhpc3Rv
cnkoKS5nb1RvSXRlbShpdGVtLCB0eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvSGlzdG9y
eS9XZWJCYWNrRm9yd2FyZExpc3QubW0KaW5kZXggZWJmYmQ0ZDAwNDEwMjNjMjVjMmM2OWU4NDc5
MDgyYzhjNDI2MzU3Zi4uOTNiZTY4NTUyNDMzMGJhZDM2MmZlYzJhZDcxNzhhMzdiZWI5YmZjNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3Qu
bW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0K
QEAgLTE1Myw3ICsxNTMsOCBAQCAtICh2b2lkKV9jbG9zZQogCiAtICh2b2lkKWFkZEl0ZW06KFdl
Ykhpc3RvcnlJdGVtICopZW50cnkKIHsKLSAgICBjb3JlKHNlbGYpLT5hZGRJdGVtKGNvcmUoZW50
cnkpKTsKKyAgICBBU1NFUlQoZW50cnkpOworICAgIGNvcmUoc2VsZiktPmFkZEl0ZW0oKmNvcmUo
ZW50cnkpKTsKICAgICAKICAgICAvLyBTaW5jZSB0aGUgYXNzdW1lZCBjb250cmFjdCB3aXRoIFdl
YkJhY2tGb3J3YXJkTGlzdCBpcyB0aGF0IGl0IHJldGFpbnMgaXRzIFdlYkhpc3RvcnlJdGVtcywK
ICAgICAvLyB0aGUgZm9sbG93aW5nIGxpbmUgcHJldmVudHMgYSB3aG9sZSBjbGFzcyBvZiBwcm9i
bGVtcyB3aGVyZSBhIGhpc3RvcnkgaXRlbSB3aWxsIGJlIGNyZWF0ZWQgaW4KQEAgLTI1NSw3ICsy
NTYsNyBAQCBzdGF0aWMgTlNBcnJheSogdmVjdG9yVG9OU0FycmF5KEhpc3RvcnlJdGVtVmVjdG9y
JiBsaXN0KQogICAgIHVuc2lnbmVkIHNpemUgPSBsaXN0LnNpemUoKTsKICAgICBOU011dGFibGVB
cnJheSAqcmVzdWx0ID0gW1tbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6
c2l6ZV0gYXV0b3JlbGVhc2VdOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyAr
K2kpCi0gICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0OmtpdChsaXN0W2ldLmdldCgpKV07CisgICAg
ICAgIFtyZXN1bHQgYWRkT2JqZWN0OmtpdChsaXN0W2ldLnB0cigpKV07CiAKICAgICByZXR1cm4g
cmVzdWx0OwogfQpAQCAtMzI3LDE0ICszMjgsMTQgQEAgLShOU1N0cmluZyAqKWRlc2NyaXB0aW9u
CiAgICAgCiAgICAgdW5zaWduZWQgc2l6ZSA9IGVudHJpZXMuc2l6ZSgpOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgaWYgKGVudHJpZXNbaV0gPT0g
YmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpKSB7CisgICAgICAgIGlmIChlbnRyaWVzW2ld
LnB0cigpID09IGJhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSkgewogICAgICAgICAgICAg
W3Jlc3VsdCBhcHBlbmRTdHJpbmc6QCIgPj4+Il07IAogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgW3Jlc3VsdCBhcHBlbmRTdHJpbmc6QCIgICAgIl07IAogICAgICAgICB9ICAgCiAgICAg
ICAgIFtyZXN1bHQgYXBwZW5kRm9ybWF0OkAiJTJkKSAiLCBpXTsKICAgICAgICAgaW50IGN1cnJQ
b3MgPSBbcmVzdWx0IGxlbmd0aF07Ci0gICAgICAgIFtyZXN1bHQgYXBwZW5kU3RyaW5nOltraXQo
ZW50cmllc1tpXS5nZXQoKSkgZGVzY3JpcHRpb25dXTsKKyAgICAgICAgW3Jlc3VsdCBhcHBlbmRT
dHJpbmc6W2tpdChlbnRyaWVzW2ldLnB0cigpKSBkZXNjcmlwdGlvbl1dOwogCiAgICAgICAgIC8v
IHNoaWZ0IGFsbCB0aGUgY29udGVudHMgb3Zlci4gIGEgYml0IHNsb3csIGJ1dCB0aGlzIGlzIGZv
ciBkZWJ1Z2dpbmcKICAgICAgICAgTlNSYW5nZSByZXBsUmFuZ2UgPSB7IHN0YXRpY19jYXN0PE5T
VUludGVnZXI+KGN1cnJQb3MpLCBbcmVzdWx0IGxlbmd0aF0gLSBjdXJyUG9zIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tIGIvU291cmNl
L1dlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQppbmRleCBlNjc3YjAxZTczYmRj
ZjIyN2IyOGY0MWY4OGNhMTYxOTVkOTVkYzNiLi5hZTc2MDFmY2Q3MWQxMzg2MDY5MTUzM2U1NTAy
N2Q0ZWYzYTYyYmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhp
c3RvcnlJdGVtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0
ZW0ubW0KQEAgLTI1OCw3ICsyNTgsNyBAQCAtIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCiAgICAg
ICAgIGludCBjdXJyUG9zID0gW3Jlc3VsdCBsZW5ndGhdOwogICAgICAgICB1bnNpZ25lZCBzaXpl
ID0gY2hpbGRyZW4uc2l6ZSgpOyAgICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgIFdlYkhpc3RvcnlJdGVtICpjaGlsZCA9IGtp
dChjaGlsZHJlbltpXS5nZXQoKSk7CisgICAgICAgICAgICBXZWJIaXN0b3J5SXRlbSAqY2hpbGQg
PSBraXQoY29uc3RfY2FzdDxIaXN0b3J5SXRlbSo+KGNoaWxkcmVuW2ldLnB0cigpKSk7CiAgICAg
ICAgICAgICBbcmVzdWx0IGFwcGVuZFN0cmluZzpAIlxuIl07CiAgICAgICAgICAgICBbcmVzdWx0
IGFwcGVuZFN0cmluZzpbY2hpbGQgZGVzY3JpcHRpb25dXTsKICAgICAgICAgfQpAQCAtMzgwLDcg
KzM4MCw3IEBAIC0gKGlkKWluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOihOU0RpY3Rp
b25hcnkgKilkaWN0CiAgICAgaWYgKGNoaWxkRGljdHMpIHsKICAgICAgICAgZm9yIChpbnQgaSA9
IFtjaGlsZERpY3RzIGNvdW50XSAtIDE7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgICAgICBXZWJI
aXN0b3J5SXRlbSAqY2hpbGQgPSBbW1dlYkhpc3RvcnlJdGVtIGFsbG9jXSBpbml0RnJvbURpY3Rp
b25hcnlSZXByZXNlbnRhdGlvbjpbY2hpbGREaWN0cyBvYmplY3RBdEluZGV4OmldXTsKLSAgICAg
ICAgICAgIGNvcmUoX3ByaXZhdGUpLT5hZGRDaGlsZEl0ZW0oY29yZShjaGlsZC0+X3ByaXZhdGUp
KTsKKyAgICAgICAgICAgIGNvcmUoX3ByaXZhdGUpLT5hZGRDaGlsZEl0ZW0oKmNvcmUoY2hpbGQt
Pl9wcml2YXRlKSk7CiAgICAgICAgICAgICBbY2hpbGQgcmVsZWFzZV07CiAgICAgICAgIH0KICAg
ICB9CkBAIC00ODEsNyArNDgxLDcgQEAgLSAoTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeVJlcHJl
c2VudGF0aW9uCiAgICAgICAgIE5TTXV0YWJsZUFycmF5ICpjaGlsZERpY3RzID0gW05TTXV0YWJs
ZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmNoaWxkcmVuLnNpemUoKV07CiAgICAgICAgIAogICAg
ICAgICBmb3IgKGludCBpID0gY2hpbGRyZW4uc2l6ZSgpIC0gMTsgaSA+PSAwOyBpLS0pCi0gICAg
ICAgICAgICBbY2hpbGREaWN0cyBhZGRPYmplY3Q6W2tpdChjaGlsZHJlbltpXS5nZXQoKSkgZGlj
dGlvbmFyeVJlcHJlc2VudGF0aW9uXV07CisgICAgICAgICAgICBbY2hpbGREaWN0cyBhZGRPYmpl
Y3Q6W2tpdChjb25zdF9jYXN0PEhpc3RvcnlJdGVtKj4oY2hpbGRyZW5baV0ucHRyKCkpKSBkaWN0
aW9uYXJ5UmVwcmVzZW50YXRpb25dXTsKICAgICAgICAgW2RpY3Qgc2V0T2JqZWN0OiBjaGlsZERp
Y3RzIGZvcktleTpjaGlsZHJlbktleV07CiAgICAgfQogCkBAIC01NDEsNyArNTQxLDcgQEAgLSAo
TlNBcnJheSAqKWNoaWxkcmVuCiAgICAgTlNNdXRhYmxlQXJyYXkgKnJlc3VsdCA9IFtbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnNpemVdIGF1dG9yZWxlYXNlXTsKICAg
ICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVz
dWx0IGFkZE9iamVjdDpraXQoY2hpbGRyZW5baV0uZ2V0KCkpXTsKKyAgICAgICAgW3Jlc3VsdCBh
ZGRPYmplY3Q6a2l0KGNvbnN0X2Nhc3Q8SGlzdG9yeUl0ZW0qPihjaGlsZHJlbltpXS5wdHIoKSkp
XTsKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCmluZGV4IDc0YWQ1NWE5NDZlZDhlMzk3MDRhNmRkM2JhODQ4YWJjODgwMTBlYTIuLjQ4
M2NhMGVlMTRmZWM2MDkxYTIzZGZlNmIwZGEyOGQ5MDk3ZTQ5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KQEAgLTIwMDIsMTAgKzIwMDIsMTAgQEAgLSAodm9pZClfbG9hZEJh
Y2tGb3J3YXJkTGlzdEZyb21PdGhlclZpZXc6KFdlYlZpZXcgKilvdGhlclZpZXcKICAgICAgICAg
ICAgIC8vIHVudGlsIHdlIGxlYXZlIHRoYXQgcGFnZS4KICAgICAgICAgICAgIG90aGVyVmlldy0+
X3ByaXZhdGUtPnBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmhpc3RvcnkoKS5zYXZlRG9jdW1l
bnRBbmRTY3JvbGxTdGF0ZSgpOwogICAgICAgICB9Ci0gICAgICAgIFJlZlB0cjxIaXN0b3J5SXRl
bT4gbmV3SXRlbSA9IG90aGVyQmFja0ZvcndhcmRDbGllbnQtPml0ZW1BdEluZGV4KGkpLT5jb3B5
KCk7CisgICAgICAgIFJlZjxIaXN0b3J5SXRlbT4gbmV3SXRlbSA9IG90aGVyQmFja0ZvcndhcmRD
bGllbnQtPml0ZW1BdEluZGV4KGkpLT5jb3B5KCk7CiAgICAgICAgIGlmIChpID09IDApIAotICAg
ICAgICAgICAgbmV3SXRlbVRvR29UbyA9IG5ld0l0ZW0uZ2V0KCk7Ci0gICAgICAgIGJhY2tGb3J3
YXJkQ2xpZW50LT5hZGRJdGVtKG5ld0l0ZW0ucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIG5ld0l0
ZW1Ub0dvVG8gPSBuZXdJdGVtLnB0cigpOworICAgICAgICBiYWNrRm9yd2FyZENsaWVudC0+YWRk
SXRlbShXVEY6Om1vdmUobmV3SXRlbSkpOwogICAgIH0KICAgICAKICAgICBBU1NFUlQobmV3SXRl
bVRvR29Ubyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRM
aXN0SXRlbS5jcHAKaW5kZXggMjg5MTkzNTNlZWUwY2NmNTMwOGY4NTgzMjA2YWE0MDc4MTRhMGJj
MC4uYWFlNmE0NmFlNjMyZjhiNTRjM2Q3MjU3ZjY0Y2YyMDI5MmY2OTAxOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJh
Y2tGb3J3YXJkTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtMzgs
NyArMzgsNyBAQCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IEluamVjdGVkQnVuZGxlQmFja0Zvcndh
cmRMaXN0SXRlbTo6Y2hpbGRyZW4oKSBjb25zdAogICAgIGNoaWxkcmVuLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkobV9pdGVtLT5jaGlsZHJlbigpLnNpemUoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1
dG8mIGNoaWxkIDogbV9pdGVtLT5jaGlsZHJlbigpKQotICAgICAgICBjaGlsZHJlbi51bmNoZWNr
ZWRBcHBlbmQoSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoY2hpbGQp
KTsKKyAgICAgICAgY2hpbGRyZW4udW5jaGVja2VkQXBwZW5kKEluamVjdGVkQnVuZGxlQmFja0Zv
cndhcmRMaXN0SXRlbTo6Y3JlYXRlKGNvbnN0X2Nhc3Q8SGlzdG9yeUl0ZW0qPihjaGlsZC5wdHIo
KSkpKTsKIAogICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGUoV1RGOjptb3ZlKGNoaWxkcmVu
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAppbmRleCBiMDk0MDk5
OGZmMDUwN2QwYTRlM2M0NGQ0YjUyZDQ4MzYxZGZjMGM4Li5mZDBhOThlODQ3NTk0YzM0MjA3YTI4
NWJiNmVjMzA1N2ZkNTgzNDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5j
cHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgRnJhbWVTdGF0ZSB0b0ZyYW1lU3RhdGUoY29u
c3QgSGlzdG9yeUl0ZW0mIGhpc3RvcnlJdGVtKQogI2VuZGlmCiAKICAgICBmb3IgKGF1dG8mIGNo
aWxkSGlzdG9yeUl0ZW0gOiBoaXN0b3J5SXRlbS5jaGlsZHJlbigpKSB7Ci0gICAgICAgIEZyYW1l
U3RhdGUgY2hpbGRGcmFtZVN0YXRlID0gdG9GcmFtZVN0YXRlKCpjaGlsZEhpc3RvcnlJdGVtKTsK
KyAgICAgICAgRnJhbWVTdGF0ZSBjaGlsZEZyYW1lU3RhdGUgPSB0b0ZyYW1lU3RhdGUoY2hpbGRI
aXN0b3J5SXRlbSk7CiAgICAgICAgIGZyYW1lU3RhdGUuY2hpbGRyZW4uYXBwZW5kKFdURjo6bW92
ZShjaGlsZEZyYW1lU3RhdGUpKTsKICAgICB9CiAKQEAgLTE3OCwxMCArMTc4LDEwIEBAIHN0YXRp
YyB2b2lkIGFwcGx5RnJhbWVTdGF0ZShIaXN0b3J5SXRlbSYgaGlzdG9yeUl0ZW0sIGNvbnN0IEZy
YW1lU3RhdGUmIGZyYW1lU3RhCiAjZW5kaWYKIAogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGRG
cmFtZVN0YXRlIDogZnJhbWVTdGF0ZS5jaGlsZHJlbikgewotICAgICAgICBSZWZQdHI8SGlzdG9y
eUl0ZW0+IGNoaWxkSGlzdG9yeUl0ZW0gPSBIaXN0b3J5SXRlbTo6Y3JlYXRlKGNoaWxkRnJhbWVT
dGF0ZS51cmxTdHJpbmcsIFN0cmluZygpKTsKLSAgICAgICAgYXBwbHlGcmFtZVN0YXRlKCpjaGls
ZEhpc3RvcnlJdGVtLCBjaGlsZEZyYW1lU3RhdGUpOworICAgICAgICBSZWY8SGlzdG9yeUl0ZW0+
IGNoaWxkSGlzdG9yeUl0ZW0gPSBIaXN0b3J5SXRlbTo6Y3JlYXRlKGNoaWxkRnJhbWVTdGF0ZS51
cmxTdHJpbmcsIFN0cmluZygpKTsKKyAgICAgICAgYXBwbHlGcmFtZVN0YXRlKGNoaWxkSGlzdG9y
eUl0ZW0sIGNoaWxkRnJhbWVTdGF0ZSk7CiAKLSAgICAgICAgaGlzdG9yeUl0ZW0uYWRkQ2hpbGRJ
dGVtKGNoaWxkSGlzdG9yeUl0ZW0ucmVsZWFzZSgpKTsKKyAgICAgICAgaGlzdG9yeUl0ZW0uYWRk
Q2hpbGRJdGVtKFdURjo6bW92ZShjaGlsZEhpc3RvcnlJdGVtKSk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRM
aXN0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tG
b3J3YXJkTGlzdFByb3h5LmNwcAppbmRleCBhOWM2Nzc5MDU2YjkyZDYwZDQ5NGI1MTU4OWYzNGQ1
MzE0NTg4Y2Y2Li45ZGMyYTYxZDgyYjg4OTE4NGJjMzE2MzUxNWQ0MDBlMzVhZDc0ZWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRM
aXN0UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJC
YWNrRm9yd2FyZExpc3RQcm94eS5jcHAKQEAgLTE0MywxMSArMTQzLDkgQEAgV2ViQmFja0Zvcndh
cmRMaXN0UHJveHk6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5KFdlYlBhZ2UqIHBhZ2UpCiAgICAg
V2ViQ29yZTo6bm90aWZ5SGlzdG9yeUl0ZW1DaGFuZ2VkID0gV0syTm90aWZ5SGlzdG9yeUl0ZW1D
aGFuZ2VkOwogfQogCi12b2lkIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjphZGRJdGVtKFBhc3NS
ZWZQdHI8SGlzdG9yeUl0ZW0+IHBycEl0ZW0pCit2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5
OjphZGRJdGVtKFJlZjxIaXN0b3J5SXRlbT4mJiBpdGVtKQogewotICAgIFJlZlB0cjxIaXN0b3J5
SXRlbT4gaXRlbSA9IHBycEl0ZW07Ci0KLSAgICBBU1NFUlQoIWhpc3RvcnlJdGVtVG9JRE1hcCgp
LmNvbnRhaW5zKGl0ZW0pKTsKKyAgICBBU1NFUlQoIWhpc3RvcnlJdGVtVG9JRE1hcCgpLmNvbnRh
aW5zKGl0ZW0ucHRyKCkpKTsKIAogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CkBA
IC0xNTgsMTAgKzE1NiwxMCBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjphZGRJdGVt
KFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IHBycEl0ZW0pCiAKICAgICBtX2Fzc29jaWF0ZWRJdGVt
SURzLmFkZChpdGVtSUQpOwogCi0gICAgaGlzdG9yeUl0ZW1Ub0lETWFwKCkuc2V0PEl0ZW1BbmRQ
YWdlSUQ+KGl0ZW0sIHsgLml0ZW1JRCA9IGl0ZW1JRCwgLnBhZ2VJRCA9IG1fcGFnZS0+cGFnZUlE
KCkgfSk7Ci0gICAgaWRUb0hpc3RvcnlJdGVtTWFwKCkuc2V0KGl0ZW1JRCwgaXRlbSk7CisgICAg
aGlzdG9yeUl0ZW1Ub0lETWFwKCkuc2V0PEl0ZW1BbmRQYWdlSUQ+KGl0ZW0ucHRyKCksIHsgLml0
ZW1JRCA9IGl0ZW1JRCwgLnBhZ2VJRCA9IG1fcGFnZS0+cGFnZUlEKCkgfSk7CisgICAgaWRUb0hp
c3RvcnlJdGVtTWFwKCkuc2V0KGl0ZW1JRCwgaXRlbS5wdHIoKSk7CiAKLSAgICB1cGRhdGVCYWNr
Rm9yd2FyZEl0ZW0oaXRlbUlELCBtX3BhZ2UtPnBhZ2VJRCgpLCBpdGVtLmdldCgpKTsKKyAgICB1
cGRhdGVCYWNrRm9yd2FyZEl0ZW0oaXRlbUlELCBtX3BhZ2UtPnBhZ2VJRCgpLCBpdGVtLnB0cigp
KTsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRB
ZGRJdGVtKGl0ZW1JRCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCmluZGV4IGFhMTQ3ZTFk
OGEyNTMxMzFmZmFkYTYxZDhlZTIwNWQwYzFiOWVjZTcuLjJjYmRlZDI1YWQ0MmVlOWI5OTJjMzE3
ZDdlMjk1M2Y2YzQ0NWU3ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCkBAIC01MCw3ICs1MCw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViQmFja0ZvcndhcmRMaXN0UHJveHkoV2ViUGFn
ZSopOwogCi0gICAgdmlydHVhbCB2b2lkIGFkZEl0ZW0oUGFzc1JlZlB0cjxXZWJDb3JlOjpIaXN0
b3J5SXRlbT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBhZGRJdGVtKFJlZjxXZWJDb3Jl
OjpIaXN0b3J5SXRlbT4mJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ29Ub0l0ZW0o
V2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBvdmVycmlkZTsKICAgICAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245819</attachid>
            <date>2015-01-31 22:33:09 -0800</date>
            <delta_ts>2015-01-31 23:25:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141133-20150131223317.patch</filename>
            <type>text/plain</type>
            <size>44805</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzgzZWZlYmM0NTU3ZTQ5
YzFhZWE0NWZkYTk5Y2VkZmExZTJmZTgwMy4uOWVkZGM1ZjZiYjFkZWM1MTNiYWM0MDIzMzI0M2Nk
NTE1YjBkMWEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTAxLTMxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIG1vcmUgcmVmZXJlbmNl
cyBpbiBIaXN0b3J5SXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQxMTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXNlIG1vcmUgcmVmZXJlbmNlcyBpbiBIaXN0b3J5SXRlbSBpbnN0ZWFkIG9mIHBv
aW50ZXJzLgorCiAyMDE1LTAxLTMxICBNeWxlcyBDLiBNYXhmaWVsZCAgPGxpdGhlcnVtQGdtYWls
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTc3Njg5KTogRW1vamkgdmFyaWF0aW9uIHNl
cXVlbmNlcyByZW5kZXJlZCBpbmNvcnJlY3RseSAoYXMgY2hhcmFjdGVycyBmcm9tIG90aGVyIG5v
bi1lbW9qaSBmb250KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGMyYjY4M2MwMGU1YTc2NTgxMzUwYTE0
NGFiNTViNGY0MTcyNWU4ZWUuLjFlYjE5ZDYzNjA3YzVjOTI3ZDM3YWYyZTM1M2FjNDA4YmE4ZTlj
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0wMS0zMSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBtb3JlIHJlZmVyZW5jZXMg
aW4gSGlzdG9yeUl0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0MTEzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVzZSBtb3JlIHJlZmVyZW5jZXMgaW4gSGlzdG9yeUl0ZW0gaW5zdGVhZCBvZiBwb2lu
dGVycy4KKwogMjAxNS0wMS0zMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlbW92ZSBldmVuIG1vcmUgTW91bnRhaW4gTGlvbiBzdXBwb3J0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
MzNkYzg0ZDVmZGU2YmRmNzk0YTY0Mzc5ZTJiYTA2ZmE1NzhjZGI4MC4uZWI1ZTU0Y2FhMmEwZmMw
N2RkZjFmZTQwYjYwYTUwMTdhN2Q0NjgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDE1LTAxLTMxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNl
IG1vcmUgcmVmZXJlbmNlcyBpbiBIaXN0b3J5SXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIG1vcmUgcmVmZXJlbmNlcyBpbiBIaXN0b3J5SXRl
bSBpbnN0ZWFkIG9mIHBvaW50ZXJzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW06OmNoaWxkcmVuKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0Ojp0b0ZyYW1lU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjphcHBs
eUZyYW1lU3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5
OjphZGRJdGVtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRM
aXN0UHJveHkuaDoKKwogMjAxNS0wMS0zMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJlbW92ZSBldmVuIG1vcmUgTW91bnRhaW4gTGlvbiBzdXBwb3J0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCmluZGV4IGNmNDlmZjgwZWQxY2M5NTU0NGMyNTQ4ZTg5OTMwNGZmMGQ0NzY1YWQu
LmE4YWM4N2I3ZWIzMjBmYzgwOWI0NTE4MzhmZWRmNDQzMWNkYjAyMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCkBAIC0xNjMsNyArMTYzLDcgQEAgX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjlzZXRP
cGVuZXJFUE5TXzVGcmFtZUUKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xMHRhcmdldEl0ZW1F
dgogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTExc2V0Rm9ybURhdGFFTjNXVEYxMFBhc3NSZWZQ
dHJJTlNfOEZvcm1EYXRhRUVFCiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMTFzZXRSZWZlcnJl
ckVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xMmFkZENoaWxkSXRl
bUVOM1dURjEwUGFzc1JlZlB0cklTMF9FRQorX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTEyYWRk
Q2hpbGRJdGVtRU9OM1dURjNSZWZJUzBfRUUKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xMnNl
dFVSTFN0cmluZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xMnNl
dFZpZXdTdGF0ZUVQMTFvYmpjX29iamVjdAogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTE0YWRk
UmVkaXJlY3RVUkxFUktOM1dURjZTdHJpbmdFCkBAIC0xNzUsNiArMTc1LDcgQEAgX19aTjdXZWJD
b3JlMTFIaXN0b3J5SXRlbTE2c2V0RG9jdW1lbnRTdGF0ZUVSS04zV1RGNlZlY3RvcklOUzFfNlN0
cmluZ0VMbTBFTlMxXzEKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xN3NldEFsdGVybmF0ZVRp
dGxlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTE4c2V0Rm9ybUNv
bnRlbnRUeXBlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTE4c2V0
UGFnZVNjYWxlRmFjdG9yRWYKK19fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xOWNoaWxkSXRlbVdp
dGhUYXJnZXRFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMjBzZXRP
cmlnaW5hbFVSTFN0cmluZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0
ZW0yMHNldFRyYW5zaWVudFByb3BlcnR5RVJLTjNXVEY2U3RyaW5nRVAxMW9iamNfb2JqZWN0CiBf
X1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtOGZvcm1EYXRhRXYKQEAgLTQ5OCw4ICs0OTksOCBAQCBf
X1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDExY3VycmVudEl0ZW1FdgogX19aTjdXZWJDb3Jl
MTVCYWNrRm9yd2FyZExpc3QxMWZvcndhcmRJdGVtRXYKIF9fWk43V2ViQ29yZTE1QmFja0Zvcndh
cmRMaXN0MTFzZXRDYXBhY2l0eUVpCiBfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDEyY29u
dGFpbnNJdGVtRVBOU18xMUhpc3RvcnlJdGVtRQotX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExp
c3QxN2JhY2tMaXN0V2l0aExpbWl0RWlSTjNXVEY2VmVjdG9ySU5TMV82UmVmUHRySU5TXzExSGlz
dG9yeUl0ZW1FRUVMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCi1fX1pON1dlYkNvcmUxNUJh
Y2tGb3J3YXJkTGlzdDIwZm9yd2FyZExpc3RXaXRoTGltaXRFaVJOM1dURjZWZWN0b3JJTlMxXzZS
ZWZQdHJJTlNfMTFIaXN0b3J5SXRlbUVFRUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKK19f
Wk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTdiYWNrTGlzdFdpdGhMaW1pdEVpUk4zV1RGNlZl
Y3RvcklOUzFfM1JlZklOU18xMUhpc3RvcnlJdGVtRUVFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxv
d0VFRQorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QyMGZvcndhcmRMaXN0V2l0aExpbWl0
RWlSTjNXVEY2VmVjdG9ySU5TMV8zUmVmSU5TXzExSGlzdG9yeUl0ZW1FRUVMbTBFTlMxXzE1Q3Jh
c2hPbk92ZXJmbG93RUVFCiBfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDZjbG9zZWRFdgog
X19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q2Z29CYWNrRXYKIF9fWk43V2ViQ29yZTE1QmFj
a0ZvcndhcmRMaXN0N2VuYWJsZWRFdgpAQCAtMTY5Miw3ICsxNjkzLDYgQEAgX19aTks3V2ViQ29y
ZTExSGlzdG9yeUl0ZW0xNGFsdGVybmF0ZVRpdGxlRXYKIF9fWk5LN1dlYkNvcmUxMUhpc3RvcnlJ
dGVtMTVmb3JtQ29udGVudFR5cGVFdgogX19aTks3V2ViQ29yZTExSGlzdG9yeUl0ZW0xNXBhZ2VT
Y2FsZUZhY3RvckV2CiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTE3b3JpZ2luYWxVUkxTdHJp
bmdFdgotX19aTks3V2ViQ29yZTExSGlzdG9yeUl0ZW0xOWNoaWxkSXRlbVdpdGhUYXJnZXRFUktO
M1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTIwZ2V0VHJhbnNpZW50UHJv
cGVydHlFUktOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTIwaGFzQ2Fj
aGVkUGFnZUV4cGlyZWRFdgogX19aTks3V2ViQ29yZTExSGlzdG9yeUl0ZW0zdXJsRXYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDbGllbnQuaAppbmRleCA0NzE4NzM2MDFkNGZm
OTI5ZGQxNTEzYWUwOGNhZTJjMWQ2OWI5OTk5Li4wODIwNDE1ZmU4MTBmZWQxM2M1ZDlkYTI2YWVi
YmZmNzcwYjA5YmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3
YXJkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENsaWVu
dC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVh
bCB2b2lkIGFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4pID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkSXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBnb1RvSXRlbShIaXN0b3J5SXRlbSopID0gMDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAKaW5kZXggNTVjYWYxYzBkNzUx
NjUxNmExZGE4MzMwZjI4MTEyOTk0Y2FiZDc0NS4uMWFlYjYzY2Y1MjkzYzQ2NjhhZjIwZmZjYjEx
NTg1NjkxMGJmMmE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9y
d2FyZENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0Zvcndh
cmRDb250cm9sbGVyLmNwcApAQCAtOTcsOSArOTcsOSBAQCBib29sIEJhY2tGb3J3YXJkQ29udHJv
bGxlcjo6Z29Gb3J3YXJkKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBCYWNrRm9yd2Fy
ZENvbnRyb2xsZXI6OmFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gaXRlbSkKK3ZvaWQg
QmFja0ZvcndhcmRDb250cm9sbGVyOjphZGRJdGVtKFJlZjxIaXN0b3J5SXRlbT4mJiBpdGVtKQog
ewotICAgIG1fY2xpZW50LT5hZGRJdGVtKGl0ZW0pOworICAgIG1fY2xpZW50LT5hZGRJdGVtKFdU
Rjo6bW92ZShpdGVtKSk7CiB9CiAKIHZvaWQgQmFja0ZvcndhcmRDb250cm9sbGVyOjpzZXRDdXJy
ZW50SXRlbShIaXN0b3J5SXRlbSogaXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0Jh
Y2tGb3J3YXJkQ29udHJvbGxlci5oCmluZGV4IGYyM2I3ZTRiZjEwNDQ3Y2IyZjQxZWY3MmU2ZDIz
Y2Q2YmFmMGE5NjMuLjU4OWVlNWVjYTJiZTcwNjZmNjQzYzY1NjcwMDU3MjkzNmY2OWRmMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuaApAQCAt
NTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnb0JhY2soKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGdvRm9yd2FyZCgpOwogCi0gICAgdm9pZCBhZGRJdGVt
KFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+KTsKKyAgICB2b2lkIGFkZEl0ZW0oUmVmPEhpc3RvcnlJ
dGVtPiYmKTsKICAgICB2b2lkIHNldEN1cnJlbnRJdGVtKEhpc3RvcnlJdGVtKik7CiAgICAgICAg
IAogICAgIGludCBjb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9CYWNrRm9yd2FyZExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9y
d2FyZExpc3QuY3BwCmluZGV4IGVhZTYyYmM3MWY4NjM4MGM3MjUxNmI3ZTcwZDcxY2U3YWUzYjUw
NTMuLjkwMWI1ZDMwM2RhOWE1MTQ4NmIxNDJmZDAwZjI4NTE0OWJmNWNmNjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTU1LDM2ICs1NSwzNSBAQCBC
YWNrRm9yd2FyZExpc3Q6On5CYWNrRm9yd2FyZExpc3QoKQogICAgIEFTU0VSVChtX2Nsb3NlZCk7
CiB9CiAKLXZvaWQgQmFja0ZvcndhcmRMaXN0OjphZGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0
ZW0+IHBycEl0ZW0pCit2b2lkIEJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShSZWY8SGlzdG9yeUl0
ZW0+JiYgbmV3SXRlbSkKIHsKLSAgICBBU1NFUlQocHJwSXRlbSk7Ci0gICAgaWYgKG1fY2FwYWNp
dHkgPT0gMCB8fCAhbV9lbmFibGVkKQorICAgIGlmICghbV9jYXBhY2l0eSB8fCAhbV9lbmFibGVk
KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gVG9zcyBhbnl0aGluZyBpbiB0aGUgZm9y
d2FyZCBsaXN0ICAgIAogICAgIGlmIChtX2N1cnJlbnQgIT0gTm9DdXJyZW50SXRlbUluZGV4KSB7
CiAgICAgICAgIHVuc2lnbmVkIHRhcmdldFNpemUgPSBtX2N1cnJlbnQgKyAxOwogICAgICAgICB3
aGlsZSAobV9lbnRyaWVzLnNpemUoKSA+IHRhcmdldFNpemUpIHsKLSAgICAgICAgICAgIFJlZlB0
cjxIaXN0b3J5SXRlbT4gaXRlbSA9IG1fZW50cmllcy5sYXN0KCk7CisgICAgICAgICAgICBhdXRv
JiBpdGVtID0gbV9lbnRyaWVzLmxhc3QoKTsKICAgICAgICAgICAgIG1fZW50cmllcy5yZW1vdmVM
YXN0KCk7Ci0gICAgICAgICAgICBtX2VudHJ5SGFzaC5yZW1vdmUoaXRlbSk7Ci0gICAgICAgICAg
ICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZSgqaXRlbSk7CisgICAgICAgICAgICBtX2Vu
dHJ5SGFzaC5yZW1vdmUoaXRlbS5wdHIoKSk7CisgICAgICAgICAgICBQYWdlQ2FjaGU6OnNpbmds
ZXRvbigpLnJlbW92ZShpdGVtKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIFRvc3MgdGhl
IGZpcnN0IGl0ZW0gaWYgdGhlIGxpc3QgaXMgZ2V0dGluZyB0b28gYmlnLCBhcyBsb25nIGFzIHdl
J3JlIG5vdCB1c2luZyBpdAogICAgIC8vIChvciBldmVuIGlmIHdlIGFyZSwgaWYgd2Ugb25seSB3
YW50IDEgZW50cnkpLgotICAgIGlmIChtX2VudHJpZXMuc2l6ZSgpID09IG1fY2FwYWNpdHkgJiYg
KG1fY3VycmVudCAhPSAwIHx8IG1fY2FwYWNpdHkgPT0gMSkpIHsKLSAgICAgICAgUmVmUHRyPEhp
c3RvcnlJdGVtPiBpdGVtID0gbV9lbnRyaWVzWzBdOworICAgIGlmIChtX2VudHJpZXMuc2l6ZSgp
ID09IG1fY2FwYWNpdHkgJiYgKG1fY3VycmVudCB8fCBtX2NhcGFjaXR5ID09IDEpKSB7CisgICAg
ICAgIGF1dG8mIGl0ZW0gPSBtX2VudHJpZXMuZmlyc3QoKTsKICAgICAgICAgbV9lbnRyaWVzLnJl
bW92ZSgwKTsKLSAgICAgICAgbV9lbnRyeUhhc2gucmVtb3ZlKGl0ZW0pOwotICAgICAgICBQYWdl
Q2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZSgqaXRlbSk7Ci0gICAgICAgIG1fY3VycmVudC0tOwor
ICAgICAgICBtX2VudHJ5SGFzaC5yZW1vdmUoaXRlbS5wdHIoKSk7CisgICAgICAgIFBhZ2VDYWNo
ZTo6c2luZ2xldG9uKCkucmVtb3ZlKGl0ZW0pOworICAgICAgICAtLW1fY3VycmVudDsKICAgICB9
CiAKLSAgICBtX2VudHJ5SGFzaC5hZGQocHJwSXRlbS5nZXQoKSk7Ci0gICAgbV9lbnRyaWVzLmlu
c2VydChtX2N1cnJlbnQgKyAxLCBwcnBJdGVtKTsKLSAgICBtX2N1cnJlbnQrKzsKKyAgICBtX2Vu
dHJ5SGFzaC5hZGQobmV3SXRlbS5wdHIoKSk7CisgICAgbV9lbnRyaWVzLmluc2VydChtX2N1cnJl
bnQgKyAxLCBXVEY6Om1vdmUobmV3SXRlbSkpOworICAgICsrbV9jdXJyZW50OwogfQogCiB2b2lk
IEJhY2tGb3J3YXJkTGlzdDo6Z29CYWNrKCkKQEAgLTExMCw3ICsxMDksNyBAQCB2b2lkIEJhY2tG
b3J3YXJkTGlzdDo6Z29Ub0l0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiAgICAgICAgIAogICAgIHVu
c2lnbmVkIGludCBpbmRleCA9IDA7CiAgICAgZm9yICg7IGluZGV4IDwgbV9lbnRyaWVzLnNpemUo
KTsgKytpbmRleCkKLSAgICAgICAgaWYgKG1fZW50cmllc1tpbmRleF0gPT0gaXRlbSkKKyAgICAg
ICAgaWYgKG1fZW50cmllc1tpbmRleF0ucHRyKCkgPT0gaXRlbSkKICAgICAgICAgICAgIGJyZWFr
OwogICAgIGlmIChpbmRleCA8IG1fZW50cmllcy5zaXplKCkpIHsKICAgICAgICAgbV9jdXJyZW50
ID0gaW5kZXg7CkBAIC0xMjAsMzEgKzExOSwzMSBAQCB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Z29U
b0l0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiBIaXN0b3J5SXRlbSogQmFja0ZvcndhcmRMaXN0Ojpi
YWNrSXRlbSgpCiB7CiAgICAgaWYgKG1fY3VycmVudCAmJiBtX2N1cnJlbnQgIT0gTm9DdXJyZW50
SXRlbUluZGV4KQotICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVudCAtIDFdLmdldCgp
OwotICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVudCAtIDFd
LnB0cigpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBIaXN0b3J5SXRlbSogQmFja0Zvcndh
cmRMaXN0OjpjdXJyZW50SXRlbSgpCiB7CiAgICAgaWYgKG1fY3VycmVudCAhPSBOb0N1cnJlbnRJ
dGVtSW5kZXgpCi0gICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9jdXJyZW50XS5nZXQoKTsKLSAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJlbnRdLnB0cigpOwor
ICAgIHJldHVybiBudWxscHRyOwogfQogCiBIaXN0b3J5SXRlbSogQmFja0ZvcndhcmRMaXN0Ojpm
b3J3YXJkSXRlbSgpCiB7CiAgICAgaWYgKG1fZW50cmllcy5zaXplKCkgJiYgbV9jdXJyZW50IDwg
bV9lbnRyaWVzLnNpemUoKSAtIDEpCi0gICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9jdXJyZW50
ICsgMV0uZ2V0KCk7Ci0gICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9j
dXJyZW50ICsgMV0ucHRyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgQmFja0Zv
cndhcmRMaXN0OjpiYWNrTGlzdFdpdGhMaW1pdChpbnQgbGltaXQsIEhpc3RvcnlJdGVtVmVjdG9y
JiBsaXN0KQogewogICAgIGxpc3QuY2xlYXIoKTsKICAgICBpZiAobV9jdXJyZW50ICE9IE5vQ3Vy
cmVudEl0ZW1JbmRleCkgewotICAgICAgICB1bnNpZ25lZCBmaXJzdCA9IHN0ZDo6bWF4KChpbnQp
bV9jdXJyZW50IC0gbGltaXQsIDApOworICAgICAgICB1bnNpZ25lZCBmaXJzdCA9IHN0ZDo6bWF4
KHN0YXRpY19jYXN0PGludD4obV9jdXJyZW50KSAtIGxpbWl0LCAwKTsKICAgICAgICAgZm9yICg7
IGZpcnN0IDwgbV9jdXJyZW50OyArK2ZpcnN0KQotICAgICAgICAgICAgbGlzdC5hcHBlbmQobV9l
bnRyaWVzW2ZpcnN0XSk7CisgICAgICAgICAgICBsaXN0LmFwcGVuZChtX2VudHJpZXNbZmlyc3Rd
LmdldCgpKTsKICAgICB9CiB9CiAKQEAgLTE2MCw3ICsxNTksNyBAQCB2b2lkIEJhY2tGb3J3YXJk
TGlzdDo6Zm9yd2FyZExpc3RXaXRoTGltaXQoaW50IGxpbWl0LCBIaXN0b3J5SXRlbVZlY3RvciYg
bGlzdCkKICAgICAgICAgaW50IGxhc3QgPSBzdGQ6Om1pbihtX2N1cnJlbnQgKyBsaW1pdCwgbGFz
dEVudHJ5KTsKICAgICAgICAgbGltaXQgPSBtX2N1cnJlbnQgKyAxOwogICAgICAgICBmb3IgKDsg
bGltaXQgPD0gbGFzdDsgKytsaW1pdCkKLSAgICAgICAgICAgIGxpc3QuYXBwZW5kKG1fZW50cmll
c1tsaW1pdF0pOworICAgICAgICAgICAgbGlzdC5hcHBlbmQobV9lbnRyaWVzW2xpbWl0XS5nZXQo
KSk7CiAgICAgfQogfQogCkBAIC0xNzEsMTEgKzE3MCwxMSBAQCBpbnQgQmFja0ZvcndhcmRMaXN0
OjpjYXBhY2l0eSgpCiAKIHZvaWQgQmFja0ZvcndhcmRMaXN0OjpzZXRDYXBhY2l0eShpbnQgc2l6
ZSkKIHsgICAgCi0gICAgd2hpbGUgKHNpemUgPCAoaW50KW1fZW50cmllcy5zaXplKCkpIHsKLSAg
ICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtID0gbV9lbnRyaWVzLmxhc3QoKTsKKyAgICB3
aGlsZSAoc2l6ZSA8IHN0YXRpY19jYXN0PGludD4obV9lbnRyaWVzLnNpemUoKSkpIHsKKyAgICAg
ICAgYXV0byYgaXRlbSA9IG1fZW50cmllcy5sYXN0KCk7CiAgICAgICAgIG1fZW50cmllcy5yZW1v
dmVMYXN0KCk7Ci0gICAgICAgIG1fZW50cnlIYXNoLnJlbW92ZShpdGVtKTsKLSAgICAgICAgUGFn
ZUNhY2hlOjpzaW5nbGV0b24oKS5yZW1vdmUoKml0ZW0pOworICAgICAgICBtX2VudHJ5SGFzaC5y
ZW1vdmUoaXRlbS5wdHIoKSk7CisgICAgICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucmVtb3Zl
KGl0ZW0pOwogICAgIH0KIAogICAgIGlmICghc2l6ZSkKQEAgLTIxNCwxMyArMjEzLDEzIEBAIGlu
dCBCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0Q291bnQoKQogSGlzdG9yeUl0ZW0qIEJhY2tG
b3J3YXJkTGlzdDo6aXRlbUF0SW5kZXgoaW50IGluZGV4KQogewogICAgIC8vIERvIHJhbmdlIGNo
ZWNrcyB3aXRob3V0IGRvaW5nIG1hdGggb24gaW5kZXggdG8gYXZvaWQgb3ZlcmZsb3cuCi0gICAg
aWYgKGluZGV4IDwgLShpbnQpbV9jdXJyZW50KQotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAo
aW5kZXggPCAtc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnQpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAKICAgICBpZiAoaW5kZXggPiBmb3J3YXJkTGlzdENvdW50KCkpCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgCi0gICAgcmV0dXJu
IG1fZW50cmllc1tpbmRleCArIG1fY3VycmVudF0uZ2V0KCk7CisgICAgcmV0dXJuIG1fZW50cmll
c1tpbmRleCArIG1fY3VycmVudF0ucHRyKCk7CiB9CiAKIEhpc3RvcnlJdGVtVmVjdG9yJiBCYWNr
Rm9yd2FyZExpc3Q6OmVudHJpZXMoKQpAQCAtMjU1LDcgKzI1NCw3IEBAIGJvb2wgQmFja0Zvcndh
cmRMaXN0OjpjbGVhckFsbFBhZ2VDYWNoZXMoKQogdm9pZCBCYWNrRm9yd2FyZExpc3Q6OmNsb3Nl
KCkKIHsKICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX2VudHJpZXMpCi0gICAgICAgIFBhZ2VDYWNo
ZTo6c2luZ2xldG9uKCkucmVtb3ZlKCppdGVtKTsKKyAgICAgICAgUGFnZUNhY2hlOjpzaW5nbGV0
b24oKS5yZW1vdmUoaXRlbSk7CiAgICAgbV9lbnRyaWVzLmNsZWFyKCk7CiAgICAgbV9lbnRyeUhh
c2guY2xlYXIoKTsKICAgICBtX3BhZ2UgPSBudWxscHRyOwpAQCAtMjcyLDggKzI3MSw4IEBAIHZv
aWQgQmFja0ZvcndhcmRMaXN0OjpyZW1vdmVJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAgIGlm
ICghaXRlbSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX2VudHJpZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGlmIChtX2VudHJpZXNbaV0gPT0g
aXRlbSkgeworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2VudHJpZXMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgaWYgKG1fZW50cmllc1tpXS5wdHIoKSA9PSBpdGVtKSB7CiAgICAgICAg
ICAgICBtX2VudHJpZXMucmVtb3ZlKGkpOwogICAgICAgICAgICAgbV9lbnRyeUhhc2gucmVtb3Zl
KGl0ZW0pOwogICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSBOb0N1cnJlbnRJdGVtSW5kZXgg
fHwgbV9jdXJyZW50IDwgaSkKQEAgLTI4Nyw2ICsyODYsNyBAQCB2b2lkIEJhY2tGb3J3YXJkTGlz
dDo6cmVtb3ZlSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CisgICAgfQogfQogCiBib29sIEJhY2tGb3J3YXJkTGlzdDo6
Y29udGFpbnNJdGVtKEhpc3RvcnlJdGVtKiBlbnRyeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0Jh
Y2tGb3J3YXJkTGlzdC5oCmluZGV4IGEzM2M4YTY2YzAwOTY1OTQ2NjE2Y2M0ZWRjNDdmY2M4ZWNi
MDIwNjguLjU5MjkyNzYwY2NjODZmNzkyYzQ1ZDdjNTRhNmY2OWU3ZTJjMDYzYzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBhZ2U7CiAKLXR5cGVkZWYgVmVjdG9yPFJlZlB0cjxI
aXN0b3J5SXRlbT4+IEhpc3RvcnlJdGVtVmVjdG9yOwordHlwZWRlZiBWZWN0b3I8UmVmPEhpc3Rv
cnlJdGVtPj4gSGlzdG9yeUl0ZW1WZWN0b3I7CiB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPEhpc3Rv
cnlJdGVtPj4gSGlzdG9yeUl0ZW1IYXNoU2V0OwogCiBjbGFzcyBCYWNrRm9yd2FyZExpc3QgOiBw
dWJsaWMgQmFja0ZvcndhcmRDbGllbnQgewpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAg
ICBQYWdlKiBwYWdlKCkgeyByZXR1cm4gbV9wYWdlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRk
SXRlbShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGFkZEl0ZW0oUmVmPEhpc3RvcnlJdGVtPiYmKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGdvQmFjaygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ29Gb3J3YXJkKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGdvVG9JdGVtKEhpc3RvcnlJdGVtKikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCmluZGV4IDNjNTJmZDZlMDI3OTE3OGJmNDBhY2Zl
NGJkODMyNDUxOTJjYWEwMmQuLjIyOWJhYjhlN2EyM2FjMDVjMGFkMDVlN2VkNDMxNTdkY2Q3ZThi
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCkBAIC0xNzIsOSArMTcy
LDkgQEAgaW5saW5lIEhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShjb25zdCBIaXN0b3J5SXRlbSYg
aXRlbSkKICAgICAgICAgbV9yZWRpcmVjdFVSTHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxT
dHJpbmc+PigqaXRlbS5tX3JlZGlyZWN0VVJMcyk7CiB9CiAKLVBhc3NSZWZQdHI8SGlzdG9yeUl0
ZW0+IEhpc3RvcnlJdGVtOjpjb3B5KCkgY29uc3QKK1JlZjxIaXN0b3J5SXRlbT4gSGlzdG9yeUl0
ZW06OmNvcHkoKSBjb25zdAogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSGlzdG9yeUl0ZW0o
KnRoaXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIaXN0b3J5SXRlbSgqdGhpcykpOwog
fQogCiB2b2lkIEhpc3RvcnlJdGVtOjpyZXNldCgpCkBAIC0zNjYsNDQgKzM2Niw0NCBAQCB2b2lk
IEhpc3RvcnlJdGVtOjpzZXRTdGF0ZU9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gb2JqZWN0KQogICAgIG1fc3RhdGVPYmplY3QgPSBvYmplY3Q7CiB9CiAKLXZvaWQgSGlz
dG9yeUl0ZW06OmFkZENoaWxkSXRlbShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBjaGlsZCkKK3Zv
aWQgSGlzdG9yeUl0ZW06OmFkZENoaWxkSXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYgY2hpbGQpCiB7
CiAgICAgQVNTRVJUKCFjaGlsZEl0ZW1XaXRoVGFyZ2V0KGNoaWxkLT50YXJnZXQoKSkpOwotICAg
IG1fY2hpbGRyZW4uYXBwZW5kKGNoaWxkKTsKKyAgICBtX2NoaWxkcmVuLmFwcGVuZChXVEY6Om1v
dmUoY2hpbGQpKTsKIH0KIAotdm9pZCBIaXN0b3J5SXRlbTo6c2V0Q2hpbGRJdGVtKFBhc3NSZWZQ
dHI8SGlzdG9yeUl0ZW0+IGNoaWxkKQordm9pZCBIaXN0b3J5SXRlbTo6c2V0Q2hpbGRJdGVtKFJl
ZjxIaXN0b3J5SXRlbT4mJiBjaGlsZCkKIHsKICAgICBBU1NFUlQoIWNoaWxkLT5pc1RhcmdldEl0
ZW0oKSk7CiAgICAgdW5zaWduZWQgc2l6ZSA9IG1fY2hpbGRyZW4uc2l6ZSgpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpICB7CiAgICAgICAgIGlmIChtX2NoaWxkcmVu
W2ldLT50YXJnZXQoKSA9PSBjaGlsZC0+dGFyZ2V0KCkpIHsKICAgICAgICAgICAgIGNoaWxkLT5z
ZXRJc1RhcmdldEl0ZW0obV9jaGlsZHJlbltpXS0+aXNUYXJnZXRJdGVtKCkpOwotICAgICAgICAg
ICAgbV9jaGlsZHJlbltpXSA9IGNoaWxkOworICAgICAgICAgICAgbV9jaGlsZHJlbltpXSA9IFdU
Rjo6bW92ZShjaGlsZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgbV9jaGlsZHJlbi5hcHBlbmQoY2hpbGQpOworICAgIG1fY2hpbGRyZW4uYXBwZW5kKFdURjo6
bW92ZShjaGlsZCkpOwogfQogCi1IaXN0b3J5SXRlbSogSGlzdG9yeUl0ZW06OmNoaWxkSXRlbVdp
dGhUYXJnZXQoY29uc3QgU3RyaW5nJiB0YXJnZXQpIGNvbnN0CitIaXN0b3J5SXRlbSogSGlzdG9y
eUl0ZW06OmNoaWxkSXRlbVdpdGhUYXJnZXQoY29uc3QgU3RyaW5nJiB0YXJnZXQpCiB7CiAgICAg
dW5zaWduZWQgc2l6ZSA9IG1fY2hpbGRyZW4uc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgaWYgKG1fY2hpbGRyZW5baV0tPnRhcmdldCgp
ID09IHRhcmdldCkKLSAgICAgICAgICAgIHJldHVybiBtX2NoaWxkcmVuW2ldLmdldCgpOworICAg
ICAgICAgICAgcmV0dXJuIG1fY2hpbGRyZW5baV0ucHRyKCk7CiAgICAgfQotICAgIHJldHVybiAw
OworICAgIHJldHVybiBudWxscHRyOwogfQogCi1IaXN0b3J5SXRlbSogSGlzdG9yeUl0ZW06OmNo
aWxkSXRlbVdpdGhEb2N1bWVudFNlcXVlbmNlTnVtYmVyKGxvbmcgbG9uZyBudW1iZXIpIGNvbnN0
CitIaXN0b3J5SXRlbSogSGlzdG9yeUl0ZW06OmNoaWxkSXRlbVdpdGhEb2N1bWVudFNlcXVlbmNl
TnVtYmVyKGxvbmcgbG9uZyBudW1iZXIpCiB7CiAgICAgdW5zaWduZWQgc2l6ZSA9IG1fY2hpbGRy
ZW4uc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAg
ICAgICAgaWYgKG1fY2hpbGRyZW5baV0tPmRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSA9PSBudW1i
ZXIpCi0gICAgICAgICAgICByZXR1cm4gbV9jaGlsZHJlbltpXS5nZXQoKTsKKyAgICAgICAgICAg
IHJldHVybiBtX2NoaWxkcmVuW2ldLnB0cigpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAogLy8gPHJkYXI6Ly9wcm9ibGVtLzQ4OTU4NDk+IEhpc3RvcnlJ
dGVtOjpmaW5kVGFyZ2V0SXRlbSgpIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIGEgbm9uLXJlY3Vy
c2l2ZSBtZXRob2QuCkBAIC00MTMsMTUgKzQxMywxNyBAQCBIaXN0b3J5SXRlbSogSGlzdG9yeUl0
ZW06OmZpbmRUYXJnZXRJdGVtKCkKICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgdW5zaWduZWQg
c2l6ZSA9IG1fY2hpbGRyZW4uc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
aXplOyArK2kpIHsKKyAgICAgICAgLy8gRklYTUU6IHRhcmdldEl0ZW0oKSBjYW5ub3QgcmV0dXJu
IG51bGwgY3VycmVudGx5LCB3aGljaCBpcyB3cm9uZy4KICAgICAgICAgaWYgKEhpc3RvcnlJdGVt
KiBtYXRjaCA9IG1fY2hpbGRyZW5baV0tPnRhcmdldEl0ZW0oKSkKICAgICAgICAgICAgIHJldHVy
biBtYXRjaDsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
IEhpc3RvcnlJdGVtKiBIaXN0b3J5SXRlbTo6dGFyZ2V0SXRlbSgpCiB7CiAgICAgSGlzdG9yeUl0
ZW0qIGZvdW5kSXRlbSA9IGZpbmRUYXJnZXRJdGVtKCk7CisgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIHByb2JhYmx5IG5vdCBmYWxsIGJhY2sgdG8gfHRoaXN8LgogICAgIHJldHVybiBmb3VuZEl0
ZW0gPyBmb3VuZEl0ZW0gOiB0aGlzOwogfQogCkBAIC00NDAsMTMgKzQ0MiwxMyBAQCB2b2lkIEhp
c3RvcnlJdGVtOjpjbGVhckNoaWxkcmVuKCkKICAgICBtX2NoaWxkcmVuLmNsZWFyKCk7CiB9CiAK
LWJvb2wgSGlzdG9yeUl0ZW06OmlzQW5jZXN0b3JPZihjb25zdCBIaXN0b3J5SXRlbSogaXRlbSkg
Y29uc3QKK2Jvb2wgSGlzdG9yeUl0ZW06OmlzQW5jZXN0b3JPZihjb25zdCBIaXN0b3J5SXRlbSYg
aXRlbSkgY29uc3QKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2hpbGRyZW4uc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgSGlzdG9yeUl0ZW0qIGNoaWxkID0gbV9jaGlsZHJlbltpXS5n
ZXQoKTsKLSAgICAgICAgaWYgKGNoaWxkID09IGl0ZW0pCisgICAgICAgIGF1dG8mIGNoaWxkID0g
bV9jaGlsZHJlbltpXS5nZXQoKTsKKyAgICAgICAgaWYgKCZjaGlsZCA9PSAmaXRlbSkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoY2hpbGQtPmlzQW5jZXN0b3JPZihpdGVt
KSkKKyAgICAgICAgaWYgKGNoaWxkLmlzQW5jZXN0b3JPZihpdGVtKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC00NTUsMzQgKzQ1NywzNCBA
QCBib29sIEhpc3RvcnlJdGVtOjppc0FuY2VzdG9yT2YoY29uc3QgSGlzdG9yeUl0ZW0qIGl0ZW0p
IGNvbnN0CiAvLyBXZSBkbyBzYW1lLWRvY3VtZW50IG5hdmlnYXRpb24gaWYgZ29pbmcgdG8gYSBk
aWZmZXJlbnQgaXRlbSBhbmQgaWYgZWl0aGVyIG9mIHRoZSBmb2xsb3dpbmcgaXMgdHJ1ZToKIC8v
IC0gVGhlIG90aGVyIGl0ZW0gY29ycmVzcG9uZHMgdG8gdGhlIHNhbWUgZG9jdW1lbnQgKGZvciBo
aXN0b3J5IGVudHJpZXMgY3JlYXRlZCB2aWEgcHVzaFN0YXRlIG9yIGZyYWdtZW50IGNoYW5nZXMp
LgogLy8gLSBUaGUgb3RoZXIgaXRlbSBjb3JyZXNwb25kcyB0byB0aGUgc2FtZSBzZXQgb2YgZG9j
dW1lbnRzLCBpbmNsdWRpbmcgZnJhbWVzIChmb3IgaGlzdG9yeSBlbnRyaWVzIGNyZWF0ZWQgdmlh
IHJlZ3VsYXIgbmF2aWdhdGlvbikKLWJvb2wgSGlzdG9yeUl0ZW06OnNob3VsZERvU2FtZURvY3Vt
ZW50TmF2aWdhdGlvblRvKEhpc3RvcnlJdGVtKiBvdGhlckl0ZW0pIGNvbnN0Citib29sIEhpc3Rv
cnlJdGVtOjpzaG91bGREb1NhbWVEb2N1bWVudE5hdmlnYXRpb25UbyhIaXN0b3J5SXRlbSYgb3Ro
ZXJJdGVtKSBjb25zdAogewotICAgIGlmICh0aGlzID09IG90aGVySXRlbSkKKyAgICBpZiAodGhp
cyA9PSAmb3RoZXJJdGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoc3RhdGVP
YmplY3QoKSB8fCBvdGhlckl0ZW0tPnN0YXRlT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBkb2N1
bWVudFNlcXVlbmNlTnVtYmVyKCkgPT0gb3RoZXJJdGVtLT5kb2N1bWVudFNlcXVlbmNlTnVtYmVy
KCk7CisgICAgaWYgKHN0YXRlT2JqZWN0KCkgfHwgb3RoZXJJdGVtLnN0YXRlT2JqZWN0KCkpCisg
ICAgICAgIHJldHVybiBkb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkgPT0gb3RoZXJJdGVtLmRvY3Vt
ZW50U2VxdWVuY2VOdW1iZXIoKTsKICAgICAKLSAgICBpZiAoKHVybCgpLmhhc0ZyYWdtZW50SWRl
bnRpZmllcigpIHx8IG90aGVySXRlbS0+dXJsKCkuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpICYm
IGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJsKCksIG90aGVySXRlbS0+dXJsKCkp
KQotICAgICAgICByZXR1cm4gZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpID09IG90aGVySXRlbS0+
ZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpOyAgICAgICAgCisgICAgaWYgKCh1cmwoKS5oYXNGcmFn
bWVudElkZW50aWZpZXIoKSB8fCBvdGhlckl0ZW0udXJsKCkuaGFzRnJhZ21lbnRJZGVudGlmaWVy
KCkpICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJsKCksIG90aGVySXRlbS51
cmwoKSkpCisgICAgICAgIHJldHVybiBkb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkgPT0gb3RoZXJJ
dGVtLmRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKTsKICAgICAKICAgICByZXR1cm4gaGFzU2FtZURv
Y3VtZW50VHJlZShvdGhlckl0ZW0pOwogfQogCiAvLyBEb2VzIGEgcmVjdXJzaXZlIGNoZWNrIHRo
YXQgdGhpcyBpdGVtIGFuZCBpdHMgZGVzY2VuZGFudHMgaGF2ZSB0aGUgc2FtZQogLy8gZG9jdW1l
bnQgc2VxdWVuY2UgbnVtYmVycyBhcyB0aGUgb3RoZXIgaXRlbS4KLWJvb2wgSGlzdG9yeUl0ZW06
Omhhc1NhbWVEb2N1bWVudFRyZWUoSGlzdG9yeUl0ZW0qIG90aGVySXRlbSkgY29uc3QKK2Jvb2wg
SGlzdG9yeUl0ZW06Omhhc1NhbWVEb2N1bWVudFRyZWUoSGlzdG9yeUl0ZW0mIG90aGVySXRlbSkg
Y29uc3QKIHsKLSAgICBpZiAoZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpICE9IG90aGVySXRlbS0+
ZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpKQorICAgIGlmIChkb2N1bWVudFNlcXVlbmNlTnVtYmVy
KCkgIT0gb3RoZXJJdGVtLmRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAKLSAgICBpZiAoY2hpbGRyZW4oKS5zaXplKCkgIT0gb3RoZXJJdGVt
LT5jaGlsZHJlbigpLnNpemUoKSkKKyAgICBpZiAoY2hpbGRyZW4oKS5zaXplKCkgIT0gb3RoZXJJ
dGVtLmNoaWxkcmVuKCkuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNoaWxkcmVuKCkuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgSGlz
dG9yeUl0ZW0qIGNoaWxkID0gY2hpbGRyZW4oKVtpXS5nZXQoKTsKLSAgICAgICAgSGlzdG9yeUl0
ZW0qIG90aGVyQ2hpbGQgPSBvdGhlckl0ZW0tPmNoaWxkSXRlbVdpdGhEb2N1bWVudFNlcXVlbmNl
TnVtYmVyKGNoaWxkLT5kb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkpOwotICAgICAgICBpZiAoIW90
aGVyQ2hpbGQgfHwgIWNoaWxkLT5oYXNTYW1lRG9jdW1lbnRUcmVlKG90aGVyQ2hpbGQpKQorICAg
ICAgICBhdXRvJiBjaGlsZCA9IGNoaWxkcmVuKClbaV0uZ2V0KCk7CisgICAgICAgIGF1dG8qIG90
aGVyQ2hpbGQgPSBvdGhlckl0ZW0uY2hpbGRJdGVtV2l0aERvY3VtZW50U2VxdWVuY2VOdW1iZXIo
Y2hpbGQuZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpKTsKKyAgICAgICAgaWYgKCFvdGhlckNoaWxk
IHx8ICFjaGlsZC5oYXNTYW1lRG9jdW1lbnRUcmVlKCpvdGhlckNoaWxkKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTQ5MSwxNiArNDkzLDE2IEBAIGJvb2wgSGlzdG9y
eUl0ZW06Omhhc1NhbWVEb2N1bWVudFRyZWUoSGlzdG9yeUl0ZW0qIG90aGVySXRlbSkgY29uc3QK
IAogLy8gRG9lcyBhIG5vbi1yZWN1cnNpdmUgY2hlY2sgdGhhdCB0aGlzIGl0ZW0gYW5kIGl0cyBp
bW1lZGlhdGUgY2hpbGRyZW4gaGF2ZSB0aGUKIC8vIHNhbWUgZnJhbWVzIGFzIHRoZSBvdGhlciBp
dGVtLgotYm9vbCBIaXN0b3J5SXRlbTo6aGFzU2FtZUZyYW1lcyhIaXN0b3J5SXRlbSogb3RoZXJJ
dGVtKSBjb25zdAorYm9vbCBIaXN0b3J5SXRlbTo6aGFzU2FtZUZyYW1lcyhIaXN0b3J5SXRlbSYg
b3RoZXJJdGVtKSBjb25zdAogewotICAgIGlmICh0YXJnZXQoKSAhPSBvdGhlckl0ZW0tPnRhcmdl
dCgpKQorICAgIGlmICh0YXJnZXQoKSAhPSBvdGhlckl0ZW0udGFyZ2V0KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgaWYgKGNoaWxkcmVuKCkuc2l6ZSgpICE9IG90aGVy
SXRlbS0+Y2hpbGRyZW4oKS5zaXplKCkpCisgICAgaWYgKGNoaWxkcmVuKCkuc2l6ZSgpICE9IG90
aGVySXRlbS5jaGlsZHJlbigpLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbigpLnNpemUoKTsgaSsrKSB7Ci0gICAgICAg
IGlmICghb3RoZXJJdGVtLT5jaGlsZEl0ZW1XaXRoVGFyZ2V0KGNoaWxkcmVuKClbaV0tPnRhcmdl
dCgpKSkKKyAgICAgICAgaWYgKCFvdGhlckl0ZW0uY2hpbGRJdGVtV2l0aFRhcmdldChjaGlsZHJl
bigpW2ldLT50YXJnZXQoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBA
IC01NDIsMTAgKzU0NCwxMCBAQCBGb3JtRGF0YSogSGlzdG9yeUl0ZW06OmZvcm1EYXRhKCkKICAg
ICByZXR1cm4gbV9mb3JtRGF0YS5nZXQoKTsKIH0KIAotYm9vbCBIaXN0b3J5SXRlbTo6aXNDdXJy
ZW50RG9jdW1lbnQoRG9jdW1lbnQqIGRvYykgY29uc3QKK2Jvb2wgSGlzdG9yeUl0ZW06OmlzQ3Vy
cmVudERvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGZpbmQgYSBiZXR0ZXIgd2F5IHRvIGNoZWNrIGlmIHRoaXMgaXMgdGhlIGN1cnJl
bnQgZG9jdW1lbnQuCi0gICAgcmV0dXJuIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIo
dXJsKCksIGRvYy0+dXJsKCkpOworICAgIHJldHVybiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVu
dGlmaWVyKHVybCgpLCBkb2N1bWVudC51cmwoKSk7CiB9CiAKIHZvaWQgSGlzdG9yeUl0ZW06OmFk
ZFJlZGlyZWN0VVJMKGNvbnN0IFN0cmluZyYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5
SXRlbS5oCmluZGV4IDY0YzA0YmVmOTRlZTYyMjQzYWNmNmM5ZGMzNzY2NzQ0ZTc5YWU2NWQuLjRk
ODQzYzQ4ZjJmNTgyYjNlZjFhMjFiNmRjY2Y1MjFlZjgyMWY3NDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L0hpc3RvcnlJdGVtLmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwogY2xhc3MgVVJMOwogZW51bSBjbGFzcyBQcnVuaW5nUmVhc29uOwogCi10eXBlZGVmIFZlY3Rv
cjxSZWZQdHI8SGlzdG9yeUl0ZW0+PiBIaXN0b3J5SXRlbVZlY3RvcjsKK3R5cGVkZWYgVmVjdG9y
PFJlZjxIaXN0b3J5SXRlbT4+IEhpc3RvcnlJdGVtVmVjdG9yOwogCiBleHRlcm4gdm9pZCAoKm5v
dGlmeUhpc3RvcnlJdGVtQ2hhbmdlZCkoSGlzdG9yeUl0ZW0qKTsKIApAQCAtNzksNyArNzksNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgfkhpc3RvcnlJdGVtKCk7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBjb3B5KCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgUmVmPEhpc3RvcnlJdGVtPiBjb3B5KCkgY29uc3Q7CiAKICAgICAv
LyBSZXNldHMgdGhlIEhpc3RvcnlJdGVtIHRvIGl0cyBpbml0aWFsIHN0YXRlLCBhcyByZXR1cm5l
ZCBieSBjcmVhdGUoKS4KICAgICB2b2lkIHJlc2V0KCk7CkBAIC0xNDEsMjQgKzE0MSwyNCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHNldExhc3RWaXNpdFdhc0ZhaWx1cmUoYm9vbCB3YXNGYWlsdXJl
KSB7IG1fbGFzdFZpc2l0V2FzRmFpbHVyZSA9IHdhc0ZhaWx1cmU7IH0KIAotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYWRkQ2hpbGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+KTsKLSAgICB2
b2lkIHNldENoaWxkSXRlbShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgSGlzdG9yeUl0ZW0qIGNoaWxkSXRlbVdpdGhUYXJnZXQoY29uc3QgU3RyaW5nJikgY29u
c3Q7Ci0gICAgSGlzdG9yeUl0ZW0qIGNoaWxkSXRlbVdpdGhEb2N1bWVudFNlcXVlbmNlTnVtYmVy
KGxvbmcgbG9uZyBudW1iZXIpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ2hp
bGRJdGVtKFJlZjxIaXN0b3J5SXRlbT4mJik7CisgICAgdm9pZCBzZXRDaGlsZEl0ZW0oUmVmPEhp
c3RvcnlJdGVtPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBIaXN0b3J5SXRlbSogY2hpbGRJdGVt
V2l0aFRhcmdldChjb25zdCBTdHJpbmcmKTsKKyAgICBIaXN0b3J5SXRlbSogY2hpbGRJdGVtV2l0
aERvY3VtZW50U2VxdWVuY2VOdW1iZXIobG9uZyBsb25nIG51bWJlcik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgSGlzdG9yeUl0ZW0qIHRhcmdldEl0ZW0oKTsKICAgICBXRUJDT1JFX0VYUE9SVCBjb25z
dCBIaXN0b3J5SXRlbVZlY3RvciYgY2hpbGRyZW4oKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGhhc0NoaWxkcmVuKCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhckNoaWxkcmVuKCk7Ci0g
ICAgYm9vbCBpc0FuY2VzdG9yT2YoY29uc3QgSGlzdG9yeUl0ZW0qKSBjb25zdDsKKyAgICBib29s
IGlzQW5jZXN0b3JPZihjb25zdCBIaXN0b3J5SXRlbSYpIGNvbnN0OwogICAgIAotICAgIGJvb2wg
c2hvdWxkRG9TYW1lRG9jdW1lbnROYXZpZ2F0aW9uVG8oSGlzdG9yeUl0ZW0qIG90aGVySXRlbSkg
Y29uc3Q7Ci0gICAgYm9vbCBoYXNTYW1lRnJhbWVzKEhpc3RvcnlJdGVtKiBvdGhlckl0ZW0pIGNv
bnN0OworICAgIGJvb2wgc2hvdWxkRG9TYW1lRG9jdW1lbnROYXZpZ2F0aW9uVG8oSGlzdG9yeUl0
ZW0mIG90aGVySXRlbSkgY29uc3Q7CisgICAgYm9vbCBoYXNTYW1lRnJhbWVzKEhpc3RvcnlJdGVt
JiBvdGhlckl0ZW0pIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRSZWRpcmVj
dFVSTChjb25zdCBTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiog
cmVkaXJlY3RVUkxzKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSZWRpcmVj
dFVSTHMoc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+Pik7CiAKLSAgICBib29sIGlzQ3Vy
cmVudERvY3VtZW50KERvY3VtZW50KikgY29uc3Q7CisgICAgYm9vbCBpc0N1cnJlbnREb2N1bWVu
dChEb2N1bWVudCYpIGNvbnN0OwogICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdFQkNP
UkVfRVhQT1JUIGlkIHZpZXdTdGF0ZSgpIGNvbnN0OwpAQCAtMjEyLDkgKzIxMiw5IEBAIHByaXZh
dGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0ZW0oY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRlVGl0bGUpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIEhpc3RvcnlJdGVtKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
ZnJhbWVOYW1lLCBjb25zdCBTdHJpbmcmIHBhcmVudCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAK
LSAgICBleHBsaWNpdCBIaXN0b3J5SXRlbShjb25zdCBIaXN0b3J5SXRlbSYpOworICAgIEhpc3Rv
cnlJdGVtKGNvbnN0IEhpc3RvcnlJdGVtJik7CiAKLSAgICBib29sIGhhc1NhbWVEb2N1bWVudFRy
ZWUoSGlzdG9yeUl0ZW0qIG90aGVySXRlbSkgY29uc3Q7CisgICAgYm9vbCBoYXNTYW1lRG9jdW1l
bnRUcmVlKEhpc3RvcnlJdGVtJiBvdGhlckl0ZW0pIGNvbnN0OwogCiAgICAgSGlzdG9yeUl0ZW0q
IGZpbmRUYXJnZXRJdGVtKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmlu
ZGV4IDA1OWYwZmY4ZTRmYzE2ZjZmMDkzYTFjZDBhYzI3OWUyYzQ3MDk3NGQuLmZmMWVjYzRlMmEx
MWNhNTA1OWQ1NThhMmJiMjhmNjZhOGEwMzhhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcApAQCAtMzE0Myw3ICszMTQzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFNh
bWVEb2N1bWVudEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0pCiAgICAgaWYgKEZyYW1lVmlldyogdmll
dyA9IG1fZnJhbWUudmlldygpKQogICAgICAgICB2aWV3LT5zZXRXYXNTY3JvbGxlZEJ5VXNlcihm
YWxzZSk7CiAKLSAgICBoaXN0b3J5KCkuc2V0Q3VycmVudEl0ZW0oJml0ZW0pOworICAgIGhpc3Rv
cnkoKS5zZXRDdXJyZW50SXRlbShpdGVtKTsKICAgICAgICAgCiAgICAgLy8gbG9hZEluU2FtZURv
Y3VtZW50KCkgYWN0dWFsbHkgY2hhbmdlcyB0aGUgVVJMIGFuZCBub3RpZmllcyBsb2FkIGRlbGVn
YXRlcyBvZiBhICJmYWtlIiBsb2FkCiAgICAgbG9hZEluU2FtZURvY3VtZW50KGl0ZW0udXJsKCks
IGl0ZW0uc3RhdGVPYmplY3QoKSwgZmFsc2UpOwpAQCAtMzI0Nyw3ICszMjQ3LDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9h
ZFR5cGUpCiB7CiAgICAgbV9yZXF1ZXN0ZWRIaXN0b3J5SXRlbSA9ICZpdGVtOwogICAgIEhpc3Rv
cnlJdGVtKiBjdXJyZW50SXRlbSA9IGhpc3RvcnkoKS5jdXJyZW50SXRlbSgpOwotICAgIGJvb2wg
c2FtZURvY3VtZW50TmF2aWdhdGlvbiA9IGN1cnJlbnRJdGVtICYmIGl0ZW0uc2hvdWxkRG9TYW1l
RG9jdW1lbnROYXZpZ2F0aW9uVG8oY3VycmVudEl0ZW0pOworICAgIGJvb2wgc2FtZURvY3VtZW50
TmF2aWdhdGlvbiA9IGN1cnJlbnRJdGVtICYmIGl0ZW0uc2hvdWxkRG9TYW1lRG9jdW1lbnROYXZp
Z2F0aW9uVG8oKmN1cnJlbnRJdGVtKTsKIAogICAgIGlmIChzYW1lRG9jdW1lbnROYXZpZ2F0aW9u
KQogICAgICAgICBsb2FkU2FtZURvY3VtZW50SXRlbShpdGVtKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCmluZGV4IGFjZjkwOTA2ZWFkZDIwOWQwZDA0YjRh
OGRmODcwZTgwZjVlOTdkZTcuLmNmNjFmOTg1YzllZWM3YmQ0NTkzNGQ4NWJjNTkxZGFjMDAwZmQ0
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcApAQCAt
MTg1LDEyICsxODUsMTEgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2F2ZURvY3VtZW50U3Rh
dGUoKQogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpOwotICAgIEFTU0VSVChkb2N1bWVudCk7Ci0gICAg
Ci0gICAgaWYgKGl0ZW0tPmlzQ3VycmVudERvY3VtZW50KGRvY3VtZW50KSAmJiBkb2N1bWVudC0+
aGFzTGl2aW5nUmVuZGVyVHJlZSgpKSB7CisgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7
CisgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gKm1fZnJhbWUuZG9jdW1lbnQoKTsKKyAgICBpZiAo
aXRlbS0+aXNDdXJyZW50RG9jdW1lbnQoZG9jdW1lbnQpICYmIGRvY3VtZW50Lmhhc0xpdmluZ1Jl
bmRlclRyZWUoKSkgewogICAgICAgICBMT0coTG9hZGluZywgIldlYkNvcmVMb2FkaW5nICVzOiBz
YXZpbmcgZm9ybSBzdGF0ZSB0byAlcCIsIG1fZnJhbWUudHJlZSgpLnVuaXF1ZU5hbWUoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpLCBpdGVtKTsKLSAgICAgICAgaXRlbS0+c2V0RG9jdW1lbnRTdGF0
ZShkb2N1bWVudC0+Zm9ybUVsZW1lbnRzU3RhdGUoKSk7CisgICAgICAgIGl0ZW0tPnNldERvY3Vt
ZW50U3RhdGUoZG9jdW1lbnQuZm9ybUVsZW1lbnRzU3RhdGUoKSk7CiAgICAgfQogfQogCkBAIC0y
NTMsNyArMjUyLDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6aW52YWxpZGF0ZUN1cnJlbnRJ
dGVtQ2FjaGVkUGFnZSgpCiAgICAgfQogfQogCi1ib29sIEhpc3RvcnlDb250cm9sbGVyOjpzaG91
bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKiB0YXJnZXRJdGVtKSBjb25z
dAorYm9vbCBIaXN0b3J5Q29udHJvbGxlcjo6c2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRl
bShIaXN0b3J5SXRlbSYgdGFyZ2V0SXRlbSkgY29uc3QKIHsKICAgICBpZiAoIW1fY3VycmVudEl0
ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ2OSw4ICs0NjgsOCBAQCB2b2lkIEhpc3Rv
cnlDb250cm9sbGVyOjp1cGRhdGVGb3JDb21taXQoKQogICAgICAgICAvLyBOb3RlIHByZXZpb3Vz
SXRlbSBtdXN0IGJlIHNldCBiZWZvcmUgd2UgY2xvc2UgdGhlIFVSTCwgd2hpY2ggd2lsbAogICAg
ICAgICAvLyBoYXBwZW4gd2hlbiB0aGUgZGF0YSBzb3VyY2UgaXMgbWFkZSBub24tcHJvdmlzaW9u
YWwgYmVsb3cKICAgICAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxJdGVtKTsKLSAgICAgICAgc2V0
Q3VycmVudEl0ZW0obV9wcm92aXNpb25hbEl0ZW0uZ2V0KCkpOwotICAgICAgICBtX3Byb3Zpc2lv
bmFsSXRlbSA9IDA7CisgICAgICAgIHNldEN1cnJlbnRJdGVtKCptX3Byb3Zpc2lvbmFsSXRlbSk7
CisgICAgICAgIG1fcHJvdmlzaW9uYWxJdGVtID0gbnVsbHB0cjsKIAogICAgICAgICAvLyBUZWxs
IGFsbCBvdGhlciBmcmFtZXMgaW4gdGhlIHRyZWUgdG8gY29tbWl0IHRoZWlyIHByb3Zpc2lvbmFs
IGl0ZW1zIGFuZAogICAgICAgICAvLyByZXN0b3JlIHRoZWlyIHNjcm9sbCBwb3NpdGlvbi4gIFdl
J2xsIGF2b2lkIHRoaXMgZnJhbWUgKHdoaWNoIGhhcyBhbHJlYWR5CkBAIC01MTAsOCArNTA5LDgg
QEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlVXBkYXRlRm9yQ29tbWl0KCkKICAg
ICAgICAgICAgIHZpZXctPnNldFdhc1Njcm9sbGVkQnlVc2VyKGZhbHNlKTsKIAogICAgICAgICAv
LyBOb3cgY29tbWl0IHRoZSBwcm92aXNpb25hbCBpdGVtCi0gICAgICAgIHNldEN1cnJlbnRJdGVt
KG1fcHJvdmlzaW9uYWxJdGVtLmdldCgpKTsKLSAgICAgICAgbV9wcm92aXNpb25hbEl0ZW0gPSAw
OworICAgICAgICBzZXRDdXJyZW50SXRlbSgqbV9wcm92aXNpb25hbEl0ZW0pOworICAgICAgICBt
X3Byb3Zpc2lvbmFsSXRlbSA9IG51bGxwdHI7CiAKICAgICAgICAgLy8gUmVzdG9yZSBmb3JtIHN0
YXRlICh3b3JrcyBmcm9tIGN1cnJlbnRJdGVtKQogICAgICAgICByZXN0b3JlRG9jdW1lbnRTdGF0
ZSgpOwpAQCAtNTU1LDEyICs1NTQsMTIgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJz
aXZlVXBkYXRlRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbigpCiAKICAgICAvLyBUaGUgcHJvdmlz
aW9uYWwgaXRlbSBtYXkgcmVwcmVzZW50IGEgZGlmZmVyZW50IHBlbmRpbmcgbmF2aWdhdGlvbi4K
ICAgICAvLyBEb24ndCBjb21taXQgaXQgaWYgaXQgaXNuJ3QgYSBzYW1lIGRvY3VtZW50IG5hdmln
YXRpb24uCi0gICAgaWYgKG1fY3VycmVudEl0ZW0gJiYgIW1fY3VycmVudEl0ZW0tPnNob3VsZERv
U2FtZURvY3VtZW50TmF2aWdhdGlvblRvKG1fcHJvdmlzaW9uYWxJdGVtLmdldCgpKSkKKyAgICBp
ZiAobV9jdXJyZW50SXRlbSAmJiAhbV9jdXJyZW50SXRlbS0+c2hvdWxkRG9TYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uVG8oKm1fcHJvdmlzaW9uYWxJdGVtKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gQ29tbWl0IHRoZSBwcm92aXNpb25hbCBpdGVtLgotICAgIHNldEN1cnJlbnRJdGVtKG1fcHJv
dmlzaW9uYWxJdGVtLmdldCgpKTsKLSAgICBtX3Byb3Zpc2lvbmFsSXRlbSA9IDA7CisgICAgc2V0
Q3VycmVudEl0ZW0oKm1fcHJvdmlzaW9uYWxJdGVtKTsKKyAgICBtX3Byb3Zpc2lvbmFsSXRlbSA9
IG51bGxwdHI7CiAKICAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIHJlc3Qgb2YgdGhlIHRyZWUuCiAg
ICAgZm9yIChGcmFtZSogY2hpbGQgPSBtX2ZyYW1lLnRyZWUoKS5maXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT50cmVlKCkubmV4dFNpYmxpbmcoKSkKQEAgLTU3NSwxMSArNTc0LDEx
IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckZyYW1lTG9hZENvbXBsZXRlZCgp
CiAgICAgbV9mcmFtZUxvYWRDb21wbGV0ZSA9IHRydWU7CiB9CiAKLXZvaWQgSGlzdG9yeUNvbnRy
b2xsZXI6OnNldEN1cnJlbnRJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQordm9pZCBIaXN0b3J5Q29u
dHJvbGxlcjo6c2V0Q3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0pCiB7CiAgICAgbV9mcmFt
ZUxvYWRDb21wbGV0ZSA9IGZhbHNlOwogICAgIG1fcHJldmlvdXNJdGVtID0gbV9jdXJyZW50SXRl
bTsKLSAgICBtX2N1cnJlbnRJdGVtID0gaXRlbTsKKyAgICBtX2N1cnJlbnRJdGVtID0gJml0ZW07
CiB9CiAKIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNldEN1cnJlbnRJdGVtVGl0bGUoY29uc3Qg
U3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCkBAIC02MTAsNyArNjA5LDcgQEAgdm9pZCBIaXN0
b3J5Q29udHJvbGxlcjo6c2V0UHJvdmlzaW9uYWxJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAg
IG1fcHJvdmlzaW9uYWxJdGVtID0gaXRlbTsKIH0KIAotdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6
aW5pdGlhbGl6ZUl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCit2b2lkIEhpc3RvcnlDb250cm9sbGVy
Ojppbml0aWFsaXplSXRlbShIaXN0b3J5SXRlbSYgaXRlbSkKIHsKICAgICBEb2N1bWVudExvYWRl
ciogZG9jdW1lbnRMb2FkZXIgPSBtX2ZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAg
ICAgQVNTRVJUKGRvY3VtZW50TG9hZGVyKTsKQEAgLTY0MiwzNCArNjQxLDM0IEBAIHZvaWQgSGlz
dG9yeUNvbnRyb2xsZXI6OmluaXRpYWxpemVJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAgIFN0
cmluZyBwYXJlbnQgPSBwYXJlbnRGcmFtZSA/IHBhcmVudEZyYW1lLT50cmVlKCkudW5pcXVlTmFt
ZSgpIDogIiI7CiAgICAgU3RyaW5nV2l0aERpcmVjdGlvbiB0aXRsZSA9IGRvY3VtZW50TG9hZGVy
LT50aXRsZSgpOwogCi0gICAgaXRlbS0+c2V0VVJMKHVybCk7Ci0gICAgaXRlbS0+c2V0VGFyZ2V0
KG1fZnJhbWUudHJlZSgpLnVuaXF1ZU5hbWUoKSk7Ci0gICAgaXRlbS0+c2V0UGFyZW50KHBhcmVu
dCk7CisgICAgaXRlbS5zZXRVUkwodXJsKTsKKyAgICBpdGVtLnNldFRhcmdldChtX2ZyYW1lLnRy
ZWUoKS51bmlxdWVOYW1lKCkpOworICAgIGl0ZW0uc2V0UGFyZW50KHBhcmVudCk7CiAgICAgLy8g
RklYTUU6IHNob3VsZCBzdG9yZSB0aXRsZSBkaXJlY3Rpb25hbGl0eSBpbiBoaXN0b3J5IGFzIHdl
bGwuCi0gICAgaXRlbS0+c2V0VGl0bGUodGl0bGUuc3RyaW5nKCkpOwotICAgIGl0ZW0tPnNldE9y
aWdpbmFsVVJMU3RyaW5nKG9yaWdpbmFsVVJMLnN0cmluZygpKTsKKyAgICBpdGVtLnNldFRpdGxl
KHRpdGxlLnN0cmluZygpKTsKKyAgICBpdGVtLnNldE9yaWdpbmFsVVJMU3RyaW5nKG9yaWdpbmFs
VVJMLnN0cmluZygpKTsKIAogICAgIGlmICghdW5yZWFjaGFibGVVUkwuaXNFbXB0eSgpIHx8IGRv
Y3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwKQotICAgICAg
ICBpdGVtLT5zZXRMYXN0VmlzaXRXYXNGYWlsdXJlKHRydWUpOworICAgICAgICBpdGVtLnNldExh
c3RWaXNpdFdhc0ZhaWx1cmUodHJ1ZSk7CiAKICAgICAvLyBTYXZlIGZvcm0gc3RhdGUgaWYgdGhp
cyBpcyBhIFBPU1QKLSAgICBpdGVtLT5zZXRGb3JtSW5mb0Zyb21SZXF1ZXN0KGRvY3VtZW50TG9h
ZGVyLT5yZXF1ZXN0KCkpOworICAgIGl0ZW0uc2V0Rm9ybUluZm9Gcm9tUmVxdWVzdChkb2N1bWVu
dExvYWRlci0+cmVxdWVzdCgpKTsKIH0KIAotUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gSGlzdG9y
eUNvbnRyb2xsZXI6OmNyZWF0ZUl0ZW0oKQorUmVmPEhpc3RvcnlJdGVtPiBIaXN0b3J5Q29udHJv
bGxlcjo6Y3JlYXRlSXRlbSgpCiB7Ci0gICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtID0gSGlz
dG9yeUl0ZW06OmNyZWF0ZSgpOwotICAgIGluaXRpYWxpemVJdGVtKGl0ZW0uZ2V0KCkpOworICAg
IFJlZjxIaXN0b3J5SXRlbT4gaXRlbSA9IEhpc3RvcnlJdGVtOjpjcmVhdGUoKTsKKyAgICBpbml0
aWFsaXplSXRlbShpdGVtKTsKICAgICAKICAgICAvLyBTZXQgdGhlIGl0ZW0gZm9yIHdoaWNoIHdl
IHdpbGwgc2F2ZSBkb2N1bWVudCBzdGF0ZQotICAgIHNldEN1cnJlbnRJdGVtKGl0ZW0uZ2V0KCkp
OworICAgIHNldEN1cnJlbnRJdGVtKGl0ZW0pOwogICAgIAotICAgIHJldHVybiBpdGVtLnJlbGVh
c2UoKTsKKyAgICByZXR1cm4gaXRlbTsKIH0KIAotUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gSGlz
dG9yeUNvbnRyb2xsZXI6OmNyZWF0ZUl0ZW1UcmVlKEZyYW1lJiB0YXJnZXRGcmFtZSwgYm9vbCBj
bGlwQXRUYXJnZXQpCitSZWY8SGlzdG9yeUl0ZW0+IEhpc3RvcnlDb250cm9sbGVyOjpjcmVhdGVJ
dGVtVHJlZShGcmFtZSYgdGFyZ2V0RnJhbWUsIGJvb2wgY2xpcEF0VGFyZ2V0KQogewotICAgIFJl
ZlB0cjxIaXN0b3J5SXRlbT4gYmZJdGVtID0gY3JlYXRlSXRlbSgpOworICAgIFJlZjxIaXN0b3J5
SXRlbT4gYmZJdGVtID0gY3JlYXRlSXRlbSgpOwogICAgIGlmICghbV9mcmFtZUxvYWRDb21wbGV0
ZSkKICAgICAgICAgc2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlVG9JdGVtKG1fcHJldmlv
dXNJdGVtLmdldCgpKTsKIApAQCAtNzE3LDcgKzcxNiw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xs
ZXI6OnJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFsSXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgSGlzdG9y
eUl0CiAgICAgLy8gU2V0IHByb3Zpc2lvbmFsIGl0ZW0sIHdoaWNoIHdpbGwgYmUgY29tbWl0dGVk
IGluIHJlY3Vyc2l2ZVVwZGF0ZUZvckNvbW1pdC4KICAgICBtX3Byb3Zpc2lvbmFsSXRlbSA9ICZp
dGVtOwogCi0gICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZEl0ZW0gOiBpdGVtLmNoaWxkcmVuKCkp
IHsKKyAgICBmb3IgKGF1dG8mIGNoaWxkSXRlbSA6IGl0ZW0uY2hpbGRyZW4oKSkgewogICAgICAg
ICBjb25zdCBTdHJpbmcmIGNoaWxkRnJhbWVOYW1lID0gY2hpbGRJdGVtLT50YXJnZXQoKTsKIAog
ICAgICAgICBIaXN0b3J5SXRlbSogZnJvbUNoaWxkSXRlbSA9IGZyb21JdGVtLT5jaGlsZEl0ZW1X
aXRoVGFyZ2V0KGNoaWxkRnJhbWVOYW1lKTsKQEAgLTcyNSw3ICs3MjQsNyBAQCB2b2lkIEhpc3Rv
cnlDb250cm9sbGVyOjpyZWN1cnNpdmVTZXRQcm92aXNpb25hbEl0ZW0oSGlzdG9yeUl0ZW0mIGl0
ZW0sIEhpc3RvcnlJdAogICAgICAgICBGcmFtZSogY2hpbGRGcmFtZSA9IG1fZnJhbWUudHJlZSgp
LmNoaWxkKGNoaWxkRnJhbWVOYW1lKTsKICAgICAgICAgQVNTRVJUKGNoaWxkRnJhbWUpOwogCi0g
ICAgICAgIGNoaWxkRnJhbWUtPmxvYWRlcigpLmhpc3RvcnkoKS5yZWN1cnNpdmVTZXRQcm92aXNp
b25hbEl0ZW0oKmNoaWxkSXRlbSwgZnJvbUNoaWxkSXRlbSk7CisgICAgICAgIGNoaWxkRnJhbWUt
PmxvYWRlcigpLmhpc3RvcnkoKS5yZWN1cnNpdmVTZXRQcm92aXNpb25hbEl0ZW0oY29uc3RfY2Fz
dDxIaXN0b3J5SXRlbSY+KGNoaWxkSXRlbS5nZXQoKSksIGZyb21DaGlsZEl0ZW0pOwogICAgIH0K
IH0KIApAQCAtNzM5LDE0ICs3MzgsMTQgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJz
aXZlR29Ub0l0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEhpc3RvcnlJdGVtKiBmcm9tSXQKICAgICB9
CiAKICAgICAvLyBKdXN0IGl0ZXJhdGUgb3ZlciB0aGUgcmVzdCwgbG9va2luZyBmb3IgZnJhbWVz
IHRvIG5hdmlnYXRlLgotICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGRJdGVtIDogaXRlbS5jaGls
ZHJlbigpKSB7CisgICAgZm9yIChhdXRvJiBjaGlsZEl0ZW0gOiBpdGVtLmNoaWxkcmVuKCkpIHsK
ICAgICAgICAgY29uc3QgU3RyaW5nJiBjaGlsZEZyYW1lTmFtZSA9IGNoaWxkSXRlbS0+dGFyZ2V0
KCk7CiAKICAgICAgICAgSGlzdG9yeUl0ZW0qIGZyb21DaGlsZEl0ZW0gPSBmcm9tSXRlbS0+Y2hp
bGRJdGVtV2l0aFRhcmdldChjaGlsZEZyYW1lTmFtZSk7CiAgICAgICAgIEFTU0VSVChmcm9tQ2hp
bGRJdGVtKTsKICAgICAgICAgRnJhbWUqIGNoaWxkRnJhbWUgPSBtX2ZyYW1lLnRyZWUoKS5jaGls
ZChjaGlsZEZyYW1lTmFtZSk7CiAgICAgICAgIEFTU0VSVChjaGlsZEZyYW1lKTsKLSAgICAgICAg
Y2hpbGRGcmFtZS0+bG9hZGVyKCkuaGlzdG9yeSgpLnJlY3Vyc2l2ZUdvVG9JdGVtKCpjaGlsZEl0
ZW0sIGZyb21DaGlsZEl0ZW0sIHR5cGUpOworICAgICAgICBjaGlsZEZyYW1lLT5sb2FkZXIoKS5o
aXN0b3J5KCkucmVjdXJzaXZlR29Ub0l0ZW0oY29uc3RfY2FzdDxIaXN0b3J5SXRlbSY+KGNoaWxk
SXRlbS5nZXQoKSksIGZyb21DaGlsZEl0ZW0sIHR5cGUpOwogICAgIH0KIH0KIApAQCAtNzYzLDcg
Kzc2Miw3IEBAIGJvb2wgSGlzdG9yeUNvbnRyb2xsZXI6Oml0ZW1zQXJlQ2xvbmVzKEhpc3RvcnlJ
dGVtJiBpdGVtMSwgSGlzdG9yeUl0ZW0qIGl0ZW0yKSBjCiAgICAgICAgICYmICZpdGVtMSAhPSBp
dGVtMgogICAgICAgICAmJiBpdGVtMS5pdGVtU2VxdWVuY2VOdW1iZXIoKSA9PSBpdGVtMi0+aXRl
bVNlcXVlbmNlTnVtYmVyKCkKICAgICAgICAgJiYgY3VycmVudEZyYW1lc01hdGNoSXRlbSgmaXRl
bTEpCi0gICAgICAgICYmIGl0ZW0yLT5oYXNTYW1lRnJhbWVzKCZpdGVtMSk7CisgICAgICAgICYm
IGl0ZW0yLT5oYXNTYW1lRnJhbWVzKGl0ZW0xKTsKIH0KIAogLy8gSGVscGVyIG1ldGhvZCB0aGF0
IGRldGVybWluZXMgd2hldGhlciB0aGUgY3VycmVudCBmcmFtZSB0cmVlIG1hdGNoZXMgZ2l2ZW4g
aGlzdG9yeSBpdGVtJ3MuCkBAIC04MjMsNyArODIyLDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxl
cjo6dXBkYXRlQ3VycmVudEl0ZW0oKQogICAgICAgICAvLyBkZXBlbmRlbnQgb24gdGhlIGRvY3Vt
ZW50LgogICAgICAgICBib29sIGlzVGFyZ2V0SXRlbSA9IG1fY3VycmVudEl0ZW0tPmlzVGFyZ2V0
SXRlbSgpOwogICAgICAgICBtX2N1cnJlbnRJdGVtLT5yZXNldCgpOwotICAgICAgICBpbml0aWFs
aXplSXRlbShtX2N1cnJlbnRJdGVtLmdldCgpKTsKKyAgICAgICAgaW5pdGlhbGl6ZUl0ZW0oKm1f
Y3VycmVudEl0ZW0pOwogICAgICAgICBtX2N1cnJlbnRJdGVtLT5zZXRJc1RhcmdldEl0ZW0oaXNU
YXJnZXRJdGVtKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBFdmVuIGlmIHRoZSBmaW5hbCBV
UkwgZGlkbid0IGNoYW5nZSwgdGhlIGZvcm0gZGF0YSBtYXkgaGF2ZSBjaGFuZ2VkLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaAppbmRleCAxYjQwYTgwYjBlMzI3MThi
MzNlZmI0MjJhYWZlNjc2ZmJjM2M3ZmU4Li5lMzk1MmM2NTU5NDMyZTc4YmE5ZDU3ZDYwMDc5Mjgy
MGE2ZjA4NzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaApA
QCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVGb3JGcmFtZUxvYWRDb21w
bGV0ZWQoKTsKIAogICAgIEhpc3RvcnlJdGVtKiBjdXJyZW50SXRlbSgpIGNvbnN0IHsgcmV0dXJu
IG1fY3VycmVudEl0ZW0uZ2V0KCk7IH0KLSAgICB2b2lkIHNldEN1cnJlbnRJdGVtKEhpc3RvcnlJ
dGVtKik7CisgICAgdm9pZCBzZXRDdXJyZW50SXRlbShIaXN0b3J5SXRlbSYpOwogICAgIHZvaWQg
c2V0Q3VycmVudEl0ZW1UaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgYm9v
bCBjdXJyZW50SXRlbVNob3VsZEJlUmVwbGFjZWQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlcGxhY2VDdXJyZW50SXRlbShIaXN0b3J5SXRlbSopOwpAQCAtOTIsMTIgKzkyLDEy
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUGFnZTsKLSAgICBib29s
IHNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdDsKKyAg
ICBib29sIHNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0mKSBjb25z
dDsKICAgICB2b2lkIGdvVG9JdGVtKEhpc3RvcnlJdGVtJiwgRnJhbWVMb2FkVHlwZSk7CiAKLSAg
ICB2b2lkIGluaXRpYWxpemVJdGVtKEhpc3RvcnlJdGVtKik7Ci0gICAgUGFzc1JlZlB0cjxIaXN0
b3J5SXRlbT4gY3JlYXRlSXRlbSgpOwotICAgIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGNyZWF0
ZUl0ZW1UcmVlKEZyYW1lJiB0YXJnZXRGcmFtZSwgYm9vbCBjbGlwQXRUYXJnZXQpOworICAgIHZv
aWQgaW5pdGlhbGl6ZUl0ZW0oSGlzdG9yeUl0ZW0mKTsKKyAgICBSZWY8SGlzdG9yeUl0ZW0+IGNy
ZWF0ZUl0ZW0oKTsKKyAgICBSZWY8SGlzdG9yeUl0ZW0+IGNyZWF0ZUl0ZW1UcmVlKEZyYW1lJiB0
YXJnZXRGcmFtZSwgYm9vbCBjbGlwQXRUYXJnZXQpOwogCiAgICAgdm9pZCByZWN1cnNpdmVTZXRQ
cm92aXNpb25hbEl0ZW0oSGlzdG9yeUl0ZW0mLCBIaXN0b3J5SXRlbSopOwogICAgIHZvaWQgcmVj
dXJzaXZlR29Ub0l0ZW0oSGlzdG9yeUl0ZW0mLCBIaXN0b3J5SXRlbSosIEZyYW1lTG9hZFR5cGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMjdjMDRiNTk1OGRjYmFmMmRiNTVmNmZiZTIzYTUxN2Jm
NmQyMTU1Mi4uMDZiOTFiYWYwY2U4OTE2OTExNmMyMTViYWNiNGJkMThkYjg1OTk0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCkBAIC00MzYsNyArNDM2LDcgQEAgdm9pZCBQYWdlOjpnb1RvSXRlbShIaXN0
b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSB0eXBlKQogICAgIC8vIGJlaW5nIGRlcmVmKCkt
ZWQuIE1ha2Ugc3VyZSB3ZSBjYW4gc3RpbGwgdXNlIGl0IHdpdGggSGlzdG9yeUNvbnRyb2xsZXI6
OmdvVG9JdGVtIGxhdGVyLgogICAgIFJlZjxIaXN0b3J5SXRlbT4gcHJvdGVjdG9yKGl0ZW0pOwog
Ci0gICAgaWYgKG1fbWFpbkZyYW1lLT5sb2FkZXIoKS5oaXN0b3J5KCkuc2hvdWxkU3RvcExvYWRp
bmdGb3JIaXN0b3J5SXRlbSgmaXRlbSkpCisgICAgaWYgKG1fbWFpbkZyYW1lLT5sb2FkZXIoKS5o
aXN0b3J5KCkuc2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbShpdGVtKSkKICAgICAgICAg
bV9tYWluRnJhbWUtPmxvYWRlcigpLnN0b3BBbGxMb2FkZXJzKCk7CiAKICAgICBtX21haW5GcmFt
ZS0+bG9hZGVyKCkuaGlzdG9yeSgpLmdvVG9JdGVtKGl0ZW0sIHR5cGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbQppbmRleCBlYmZiZDRkMDA0
MTAyM2MyNWMyYzY5ZTg0NzkwODJjOGM0MjYzNTdmLi45M2JlNjg1NTI0MzMwYmFkMzYyZmVjMmFk
NzE3OGEzN2JlYjliZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dl
YkJhY2tGb3J3YXJkTGlzdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkJh
Y2tGb3J3YXJkTGlzdC5tbQpAQCAtMTUzLDcgKzE1Myw4IEBAIC0gKHZvaWQpX2Nsb3NlCiAKIC0g
KHZvaWQpYWRkSXRlbTooV2ViSGlzdG9yeUl0ZW0gKillbnRyeQogewotICAgIGNvcmUoc2VsZikt
PmFkZEl0ZW0oY29yZShlbnRyeSkpOworICAgIEFTU0VSVChlbnRyeSk7CisgICAgY29yZShzZWxm
KS0+YWRkSXRlbSgqY29yZShlbnRyeSkpOwogICAgIAogICAgIC8vIFNpbmNlIHRoZSBhc3N1bWVk
IGNvbnRyYWN0IHdpdGggV2ViQmFja0ZvcndhcmRMaXN0IGlzIHRoYXQgaXQgcmV0YWlucyBpdHMg
V2ViSGlzdG9yeUl0ZW1zLAogICAgIC8vIHRoZSBmb2xsb3dpbmcgbGluZSBwcmV2ZW50cyBhIHdo
b2xlIGNsYXNzIG9mIHByb2JsZW1zIHdoZXJlIGEgaGlzdG9yeSBpdGVtIHdpbGwgYmUgY3JlYXRl
ZCBpbgpAQCAtMjU1LDcgKzI1Niw3IEBAIHN0YXRpYyBOU0FycmF5KiB2ZWN0b3JUb05TQXJyYXko
SGlzdG9yeUl0ZW1WZWN0b3ImIGxpc3QpCiAgICAgdW5zaWduZWQgc2l6ZSA9IGxpc3Quc2l6ZSgp
OwogICAgIE5TTXV0YWJsZUFycmF5ICpyZXN1bHQgPSBbW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdFdpdGhDYXBhY2l0eTpzaXplXSBhdXRvcmVsZWFzZV07CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3Jlc3VsdCBhZGRPYmplY3Q6a2l0KGxpc3Rb
aV0uZ2V0KCkpXTsKKyAgICAgICAgW3Jlc3VsdCBhZGRPYmplY3Q6a2l0KGxpc3RbaV0ucHRyKCkp
XTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0zMjcsMTQgKzMyOCwxNCBAQCAtKE5TU3Ry
aW5nICopZGVzY3JpcHRpb24KICAgICAKICAgICB1bnNpZ25lZCBzaXplID0gZW50cmllcy5zaXpl
KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBp
ZiAoZW50cmllc1tpXSA9PSBiYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCkpIHsKKyAgICAg
ICAgaWYgKGVudHJpZXNbaV0ucHRyKCkgPT0gYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgp
KSB7CiAgICAgICAgICAgICBbcmVzdWx0IGFwcGVuZFN0cmluZzpAIiA+Pj4iXTsgCiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBbcmVzdWx0IGFwcGVuZFN0cmluZzpAIiAgICAiXTsgCiAg
ICAgICAgIH0gICAKICAgICAgICAgW3Jlc3VsdCBhcHBlbmRGb3JtYXQ6QCIlMmQpICIsIGldOwog
ICAgICAgICBpbnQgY3VyclBvcyA9IFtyZXN1bHQgbGVuZ3RoXTsKLSAgICAgICAgW3Jlc3VsdCBh
cHBlbmRTdHJpbmc6W2tpdChlbnRyaWVzW2ldLmdldCgpKSBkZXNjcmlwdGlvbl1dOworICAgICAg
ICBbcmVzdWx0IGFwcGVuZFN0cmluZzpba2l0KGVudHJpZXNbaV0ucHRyKCkpIGRlc2NyaXB0aW9u
XV07CiAKICAgICAgICAgLy8gc2hpZnQgYWxsIHRoZSBjb250ZW50cyBvdmVyLiAgYSBiaXQgc2xv
dywgYnV0IHRoaXMgaXMgZm9yIGRlYnVnZ2luZwogICAgICAgICBOU1JhbmdlIHJlcGxSYW5nZSA9
IHsgc3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oY3VyclBvcyksIFtyZXN1bHQgbGVuZ3RoXSAtIGN1
cnJQb3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9y
eUl0ZW0ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCmlu
ZGV4IGU2NzdiMDFlNzNiZGNmMjI3YjI4ZjQxZjg4Y2ExNjE5NWQ5NWRjM2IuLmFlNzYwMWZjZDcx
ZDEzODYwNjkxNTMzZTU1MDI3ZDRlZjNhNjJiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvSGlz
dG9yeS9XZWJIaXN0b3J5SXRlbS5tbQpAQCAtMjU4LDcgKzI1OCw3IEBAIC0gKE5TU3RyaW5nICop
ZGVzY3JpcHRpb24KICAgICAgICAgaW50IGN1cnJQb3MgPSBbcmVzdWx0IGxlbmd0aF07CiAgICAg
ICAgIHVuc2lnbmVkIHNpemUgPSBjaGlsZHJlbi5zaXplKCk7ICAgICAgICAKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAgV2ViSGlzdG9y
eUl0ZW0gKmNoaWxkID0ga2l0KGNoaWxkcmVuW2ldLmdldCgpKTsKKyAgICAgICAgICAgIFdlYkhp
c3RvcnlJdGVtICpjaGlsZCA9IGtpdChjb25zdF9jYXN0PEhpc3RvcnlJdGVtKj4oY2hpbGRyZW5b
aV0ucHRyKCkpKTsKICAgICAgICAgICAgIFtyZXN1bHQgYXBwZW5kU3RyaW5nOkAiXG4iXTsKICAg
ICAgICAgICAgIFtyZXN1bHQgYXBwZW5kU3RyaW5nOltjaGlsZCBkZXNjcmlwdGlvbl1dOwogICAg
ICAgICB9CkBAIC0zODAsNyArMzgwLDcgQEAgLSAoaWQpaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVz
ZW50YXRpb246KE5TRGljdGlvbmFyeSAqKWRpY3QKICAgICBpZiAoY2hpbGREaWN0cykgewogICAg
ICAgICBmb3IgKGludCBpID0gW2NoaWxkRGljdHMgY291bnRdIC0gMTsgaSA+PSAwOyBpLS0pIHsK
ICAgICAgICAgICAgIFdlYkhpc3RvcnlJdGVtICpjaGlsZCA9IFtbV2ViSGlzdG9yeUl0ZW0gYWxs
b2NdIGluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOltjaGlsZERpY3RzIG9iamVjdEF0
SW5kZXg6aV1dOwotICAgICAgICAgICAgY29yZShfcHJpdmF0ZSktPmFkZENoaWxkSXRlbShjb3Jl
KGNoaWxkLT5fcHJpdmF0ZSkpOworICAgICAgICAgICAgY29yZShfcHJpdmF0ZSktPmFkZENoaWxk
SXRlbSgqY29yZShjaGlsZC0+X3ByaXZhdGUpKTsKICAgICAgICAgICAgIFtjaGlsZCByZWxlYXNl
XTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ4MSw3ICs0ODEsNyBAQCAtIChOU0RpY3Rpb25hcnkg
KilkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24KICAgICAgICAgTlNNdXRhYmxlQXJyYXkgKmNoaWxk
RGljdHMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6Y2hpbGRyZW4uc2l6ZSgp
XTsKICAgICAgICAgCiAgICAgICAgIGZvciAoaW50IGkgPSBjaGlsZHJlbi5zaXplKCkgLSAxOyBp
ID49IDA7IGktLSkKLSAgICAgICAgICAgIFtjaGlsZERpY3RzIGFkZE9iamVjdDpba2l0KGNoaWxk
cmVuW2ldLmdldCgpKSBkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb25dXTsKKyAgICAgICAgICAgIFtj
aGlsZERpY3RzIGFkZE9iamVjdDpba2l0KGNvbnN0X2Nhc3Q8SGlzdG9yeUl0ZW0qPihjaGlsZHJl
bltpXS5wdHIoKSkpIGRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbl1dOwogICAgICAgICBbZGljdCBz
ZXRPYmplY3Q6IGNoaWxkRGljdHMgZm9yS2V5OmNoaWxkcmVuS2V5XTsKICAgICB9CiAKQEAgLTU0
MSw3ICs1NDEsNyBAQCAtIChOU0FycmF5ICopY2hpbGRyZW4KICAgICBOU011dGFibGVBcnJheSAq
cmVzdWx0ID0gW1tbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6c2l6ZV0g
YXV0b3JlbGVhc2VdOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyAr
K2kpCi0gICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0OmtpdChjaGlsZHJlbltpXS5nZXQoKSldOwor
ICAgICAgICBbcmVzdWx0IGFkZE9iamVjdDpraXQoY29uc3RfY2FzdDxIaXN0b3J5SXRlbSo+KGNo
aWxkcmVuW2ldLnB0cigpKSldOwogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNzRhZDU1YTk0NmVkOGUzOTcwNGE2ZGQzYmE4
NDhhYmM4ODAxMGVhMi4uNDgzY2EwZWUxNGZlYzYwOTFhMjNkZmU2YjBkYTI4ZDkwOTdlNDlkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjAwMiwxMCArMjAwMiwxMCBA
QCAtICh2b2lkKV9sb2FkQmFja0ZvcndhcmRMaXN0RnJvbU90aGVyVmlldzooV2ViVmlldyAqKW90
aGVyVmlldwogICAgICAgICAgICAgLy8gdW50aWwgd2UgbGVhdmUgdGhhdCBwYWdlLgogICAgICAg
ICAgICAgb3RoZXJWaWV3LT5fcHJpdmF0ZS0+cGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuaGlz
dG9yeSgpLnNhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlKCk7CiAgICAgICAgIH0KLSAgICAgICAg
UmVmUHRyPEhpc3RvcnlJdGVtPiBuZXdJdGVtID0gb3RoZXJCYWNrRm9yd2FyZENsaWVudC0+aXRl
bUF0SW5kZXgoaSktPmNvcHkoKTsKKyAgICAgICAgUmVmPEhpc3RvcnlJdGVtPiBuZXdJdGVtID0g
b3RoZXJCYWNrRm9yd2FyZENsaWVudC0+aXRlbUF0SW5kZXgoaSktPmNvcHkoKTsKICAgICAgICAg
aWYgKGkgPT0gMCkgCi0gICAgICAgICAgICBuZXdJdGVtVG9Hb1RvID0gbmV3SXRlbS5nZXQoKTsK
LSAgICAgICAgYmFja0ZvcndhcmRDbGllbnQtPmFkZEl0ZW0obmV3SXRlbS5yZWxlYXNlKCkpOwor
ICAgICAgICAgICAgbmV3SXRlbVRvR29UbyA9IG5ld0l0ZW0ucHRyKCk7CisgICAgICAgIGJhY2tG
b3J3YXJkQ2xpZW50LT5hZGRJdGVtKFdURjo6bW92ZShuZXdJdGVtKSk7CiAgICAgfQogICAgIAog
ICAgIEFTU0VSVChuZXdJdGVtVG9Hb1RvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVt
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAppbmRleCAyODkxOTM1M2VlZTBjY2Y1MzA4Zjg1
ODMyMDZhYTQwNzgxNGEwYmMwLi5hYWU2YTQ2YWU2MzJmOGI1NGMzZDcyNTdmNjRjZjIwMjkyZjY5
MDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlz
dEl0ZW0uY3BwCkBAIC0zOCw3ICszOCw3IEBAIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gSW5qZWN0
ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtOjpjaGlsZHJlbigpIGNvbnN0CiAgICAgY2hpbGRy
ZW4ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2l0ZW0tPmNoaWxkcmVuKCkuc2l6ZSgpKTsKIAog
ICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBtX2l0ZW0tPmNoaWxkcmVuKCkpCi0gICAgICAg
IGNoaWxkcmVuLnVuY2hlY2tlZEFwcGVuZChJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0
ZW06OmNyZWF0ZShjaGlsZCkpOworICAgICAgICBjaGlsZHJlbi51bmNoZWNrZWRBcHBlbmQoSW5q
ZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoY29uc3RfY2FzdDxIaXN0b3J5
SXRlbSo+KGNoaWxkLnB0cigpKSkpOwogCiAgICAgcmV0dXJuIEFQSTo6QXJyYXk6OmNyZWF0ZShX
VEY6Om1vdmUoY2hpbGRyZW4pKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24u
Y3BwCmluZGV4IGIwOTQwOTk4ZmYwNTA3ZDBhNGUzYzQ0ZDRiNTJkNDgzNjFkZmMwYzguLmZkMGE5
OGU4NDc1OTRjMzQyMDdhMjg1YmI2ZWMzMDU3ZmQ1ODM0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9u
U3RhdGVDb252ZXJzaW9uLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBGcmFtZVN0YXRl
IHRvRnJhbWVTdGF0ZShjb25zdCBIaXN0b3J5SXRlbSYgaGlzdG9yeUl0ZW0pCiAjZW5kaWYKIAog
ICAgIGZvciAoYXV0byYgY2hpbGRIaXN0b3J5SXRlbSA6IGhpc3RvcnlJdGVtLmNoaWxkcmVuKCkp
IHsKLSAgICAgICAgRnJhbWVTdGF0ZSBjaGlsZEZyYW1lU3RhdGUgPSB0b0ZyYW1lU3RhdGUoKmNo
aWxkSGlzdG9yeUl0ZW0pOworICAgICAgICBGcmFtZVN0YXRlIGNoaWxkRnJhbWVTdGF0ZSA9IHRv
RnJhbWVTdGF0ZShjaGlsZEhpc3RvcnlJdGVtKTsKICAgICAgICAgZnJhbWVTdGF0ZS5jaGlsZHJl
bi5hcHBlbmQoV1RGOjptb3ZlKGNoaWxkRnJhbWVTdGF0ZSkpOwogICAgIH0KIApAQCAtMTc4LDEw
ICsxNzgsMTAgQEAgc3RhdGljIHZvaWQgYXBwbHlGcmFtZVN0YXRlKEhpc3RvcnlJdGVtJiBoaXN0
b3J5SXRlbSwgY29uc3QgRnJhbWVTdGF0ZSYgZnJhbWVTdGEKICNlbmRpZgogCiAgICAgZm9yIChj
b25zdCBhdXRvJiBjaGlsZEZyYW1lU3RhdGUgOiBmcmFtZVN0YXRlLmNoaWxkcmVuKSB7Ci0gICAg
ICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gY2hpbGRIaXN0b3J5SXRlbSA9IEhpc3RvcnlJdGVtOjpj
cmVhdGUoY2hpbGRGcmFtZVN0YXRlLnVybFN0cmluZywgU3RyaW5nKCkpOwotICAgICAgICBhcHBs
eUZyYW1lU3RhdGUoKmNoaWxkSGlzdG9yeUl0ZW0sIGNoaWxkRnJhbWVTdGF0ZSk7CisgICAgICAg
IFJlZjxIaXN0b3J5SXRlbT4gY2hpbGRIaXN0b3J5SXRlbSA9IEhpc3RvcnlJdGVtOjpjcmVhdGUo
Y2hpbGRGcmFtZVN0YXRlLnVybFN0cmluZywgU3RyaW5nKCkpOworICAgICAgICBhcHBseUZyYW1l
U3RhdGUoY2hpbGRIaXN0b3J5SXRlbSwgY2hpbGRGcmFtZVN0YXRlKTsKIAotICAgICAgICBoaXN0
b3J5SXRlbS5hZGRDaGlsZEl0ZW0oY2hpbGRIaXN0b3J5SXRlbS5yZWxlYXNlKCkpOworICAgICAg
ICBoaXN0b3J5SXRlbS5hZGRDaGlsZEl0ZW0oV1RGOjptb3ZlKGNoaWxkSGlzdG9yeUl0ZW0pKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCmluZGV4IGE5YzY3NzkwNTZiOTJk
NjBkNDk0YjUxNTg5ZjM0ZDUzMTQ1ODhjZjYuLjlkYzJhNjFkODJiODg5MTg0YmMzMTYzNTE1ZDQw
MGUzNWFkNzRlZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcApAQCAtMTQzLDExICsxNDMs
OSBAQCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHkoV2Vi
UGFnZSogcGFnZSkKICAgICBXZWJDb3JlOjpub3RpZnlIaXN0b3J5SXRlbUNoYW5nZWQgPSBXSzJO
b3RpZnlIaXN0b3J5SXRlbUNoYW5nZWQ7CiB9CiAKLXZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHk6OmFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gcHJwSXRlbSkKK3ZvaWQgV2ViQmFj
a0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW0oUmVmPEhpc3RvcnlJdGVtPiYmIGl0ZW0pCiB7Ci0g
ICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtID0gcHJwSXRlbTsKLQotICAgIEFTU0VSVCghaGlz
dG9yeUl0ZW1Ub0lETWFwKCkuY29udGFpbnMoaXRlbSkpOworICAgIEFTU0VSVCghaGlzdG9yeUl0
ZW1Ub0lETWFwKCkuY29udGFpbnMoaXRlbS5wdHIoKSkpOwogCiAgICAgaWYgKCFtX3BhZ2UpCiAg
ICAgICAgIHJldHVybjsKQEAgLTE1OCwxMCArMTU2LDEwIEBAIHZvaWQgV2ViQmFja0ZvcndhcmRM
aXN0UHJveHk6OmFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gcHJwSXRlbSkKIAogICAg
IG1fYXNzb2NpYXRlZEl0ZW1JRHMuYWRkKGl0ZW1JRCk7CiAKLSAgICBoaXN0b3J5SXRlbVRvSURN
YXAoKS5zZXQ8SXRlbUFuZFBhZ2VJRD4oaXRlbSwgeyAuaXRlbUlEID0gaXRlbUlELCAucGFnZUlE
ID0gbV9wYWdlLT5wYWdlSUQoKSB9KTsKLSAgICBpZFRvSGlzdG9yeUl0ZW1NYXAoKS5zZXQoaXRl
bUlELCBpdGVtKTsKKyAgICBoaXN0b3J5SXRlbVRvSURNYXAoKS5zZXQ8SXRlbUFuZFBhZ2VJRD4o
aXRlbS5wdHIoKSwgeyAuaXRlbUlEID0gaXRlbUlELCAucGFnZUlEID0gbV9wYWdlLT5wYWdlSUQo
KSB9KTsKKyAgICBpZFRvSGlzdG9yeUl0ZW1NYXAoKS5zZXQoaXRlbUlELCBpdGVtLnB0cigpKTsK
IAotICAgIHVwZGF0ZUJhY2tGb3J3YXJkSXRlbShpdGVtSUQsIG1fcGFnZS0+cGFnZUlEKCksIGl0
ZW0uZ2V0KCkpOworICAgIHVwZGF0ZUJhY2tGb3J3YXJkSXRlbShpdGVtSUQsIG1fcGFnZS0+cGFn
ZUlEKCksIGl0ZW0ucHRyKCkpOwogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpCYWNrRm9yd2FyZEFkZEl0ZW0oaXRlbUlEKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5
LmgKaW5kZXggYWExNDdlMWQ4YTI1MzEzMWZmYWRhNjFkOGVlMjA1ZDBjMWI5ZWNlNy4uMmNiZGVk
MjVhZDQyZWU5Yjk5MmMzMTdkN2UyOTUzZjZjNDQ1ZTdmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5
LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eShXZWJQYWdlKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkSXRlbShQYXNzUmVm
UHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGFk
ZEl0ZW0oUmVmPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiYmKSBvdmVycmlkZTsKIAogICAgIHZpcnR1
YWwgdm9pZCBnb1RvSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIG92ZXJyaWRlOwogICAgICAg
ICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245820</attachid>
            <date>2015-01-31 23:25:12 -0800</date>
            <delta_ts>2015-01-31 23:35:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141133-20150131232520.patch</filename>
            <type>text/plain</type>
            <size>46519</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzgzZWZlYmM0NTU3ZTQ5
YzFhZWE0NWZkYTk5Y2VkZmExZTJmZTgwMy4uOWVkZGM1ZjZiYjFkZWM1MTNiYWM0MDIzMzI0M2Nk
NTE1YjBkMWEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTAxLTMxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIG1vcmUgcmVmZXJlbmNl
cyBpbiBIaXN0b3J5SXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQxMTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXNlIG1vcmUgcmVmZXJlbmNlcyBpbiBIaXN0b3J5SXRlbSBpbnN0ZWFkIG9mIHBv
aW50ZXJzLgorCiAyMDE1LTAxLTMxICBNeWxlcyBDLiBNYXhmaWVsZCAgPGxpdGhlcnVtQGdtYWls
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTc3Njg5KTogRW1vamkgdmFyaWF0aW9uIHNl
cXVlbmNlcyByZW5kZXJlZCBpbmNvcnJlY3RseSAoYXMgY2hhcmFjdGVycyBmcm9tIG90aGVyIG5v
bi1lbW9qaSBmb250KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGMyYjY4M2MwMGU1YTc2NTgxMzUwYTE0
NGFiNTViNGY0MTcyNWU4ZWUuLjFlYjE5ZDYzNjA3YzVjOTI3ZDM3YWYyZTM1M2FjNDA4YmE4ZTlj
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0wMS0zMSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBtb3JlIHJlZmVyZW5jZXMg
aW4gSGlzdG9yeUl0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0MTEzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVzZSBtb3JlIHJlZmVyZW5jZXMgaW4gSGlzdG9yeUl0ZW0gaW5zdGVhZCBvZiBwb2lu
dGVycy4KKwogMjAxNS0wMS0zMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlbW92ZSBldmVuIG1vcmUgTW91bnRhaW4gTGlvbiBzdXBwb3J0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
MzNkYzg0ZDVmZGU2YmRmNzk0YTY0Mzc5ZTJiYTA2ZmE1NzhjZGI4MC4uZWI1ZTU0Y2FhMmEwZmMw
N2RkZjFmZTQwYjYwYTUwMTdhN2Q0NjgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDE1LTAxLTMxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNl
IG1vcmUgcmVmZXJlbmNlcyBpbiBIaXN0b3J5SXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIG1vcmUgcmVmZXJlbmNlcyBpbiBIaXN0b3J5SXRl
bSBpbnN0ZWFkIG9mIHBvaW50ZXJzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW06OmNoaWxkcmVuKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0Ojp0b0ZyYW1lU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjphcHBs
eUZyYW1lU3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5
OjphZGRJdGVtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRM
aXN0UHJveHkuaDoKKwogMjAxNS0wMS0zMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJlbW92ZSBldmVuIG1vcmUgTW91bnRhaW4gTGlvbiBzdXBwb3J0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCmluZGV4IGNmNDlmZjgwZWQxY2M5NTU0NGMyNTQ4ZTg5OTMwNGZmMGQ0NzY1YWQu
LmE4YWM4N2I3ZWIzMjBmYzgwOWI0NTE4MzhmZWRmNDQzMWNkYjAyMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCkBAIC0xNjMsNyArMTYzLDcgQEAgX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjlzZXRP
cGVuZXJFUE5TXzVGcmFtZUUKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xMHRhcmdldEl0ZW1F
dgogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTExc2V0Rm9ybURhdGFFTjNXVEYxMFBhc3NSZWZQ
dHJJTlNfOEZvcm1EYXRhRUVFCiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMTFzZXRSZWZlcnJl
ckVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xMmFkZENoaWxkSXRl
bUVOM1dURjEwUGFzc1JlZlB0cklTMF9FRQorX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTEyYWRk
Q2hpbGRJdGVtRU9OM1dURjNSZWZJUzBfRUUKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xMnNl
dFVSTFN0cmluZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xMnNl
dFZpZXdTdGF0ZUVQMTFvYmpjX29iamVjdAogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTE0YWRk
UmVkaXJlY3RVUkxFUktOM1dURjZTdHJpbmdFCkBAIC0xNzUsNiArMTc1LDcgQEAgX19aTjdXZWJD
b3JlMTFIaXN0b3J5SXRlbTE2c2V0RG9jdW1lbnRTdGF0ZUVSS04zV1RGNlZlY3RvcklOUzFfNlN0
cmluZ0VMbTBFTlMxXzEKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xN3NldEFsdGVybmF0ZVRp
dGxlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTE4c2V0Rm9ybUNv
bnRlbnRUeXBlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTE4c2V0
UGFnZVNjYWxlRmFjdG9yRWYKK19fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xOWNoaWxkSXRlbVdp
dGhUYXJnZXRFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMjBzZXRP
cmlnaW5hbFVSTFN0cmluZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0
ZW0yMHNldFRyYW5zaWVudFByb3BlcnR5RVJLTjNXVEY2U3RyaW5nRVAxMW9iamNfb2JqZWN0CiBf
X1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtOGZvcm1EYXRhRXYKQEAgLTQ5OCw4ICs0OTksOCBAQCBf
X1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDExY3VycmVudEl0ZW1FdgogX19aTjdXZWJDb3Jl
MTVCYWNrRm9yd2FyZExpc3QxMWZvcndhcmRJdGVtRXYKIF9fWk43V2ViQ29yZTE1QmFja0Zvcndh
cmRMaXN0MTFzZXRDYXBhY2l0eUVpCiBfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDEyY29u
dGFpbnNJdGVtRVBOU18xMUhpc3RvcnlJdGVtRQotX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExp
c3QxN2JhY2tMaXN0V2l0aExpbWl0RWlSTjNXVEY2VmVjdG9ySU5TMV82UmVmUHRySU5TXzExSGlz
dG9yeUl0ZW1FRUVMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCi1fX1pON1dlYkNvcmUxNUJh
Y2tGb3J3YXJkTGlzdDIwZm9yd2FyZExpc3RXaXRoTGltaXRFaVJOM1dURjZWZWN0b3JJTlMxXzZS
ZWZQdHJJTlNfMTFIaXN0b3J5SXRlbUVFRUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKK19f
Wk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTdiYWNrTGlzdFdpdGhMaW1pdEVpUk4zV1RGNlZl
Y3RvcklOUzFfM1JlZklOU18xMUhpc3RvcnlJdGVtRUVFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxv
d0VFRQorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QyMGZvcndhcmRMaXN0V2l0aExpbWl0
RWlSTjNXVEY2VmVjdG9ySU5TMV8zUmVmSU5TXzExSGlzdG9yeUl0ZW1FRUVMbTBFTlMxXzE1Q3Jh
c2hPbk92ZXJmbG93RUVFCiBfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDZjbG9zZWRFdgog
X19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q2Z29CYWNrRXYKIF9fWk43V2ViQ29yZTE1QmFj
a0ZvcndhcmRMaXN0N2VuYWJsZWRFdgpAQCAtMTY5Miw3ICsxNjkzLDYgQEAgX19aTks3V2ViQ29y
ZTExSGlzdG9yeUl0ZW0xNGFsdGVybmF0ZVRpdGxlRXYKIF9fWk5LN1dlYkNvcmUxMUhpc3RvcnlJ
dGVtMTVmb3JtQ29udGVudFR5cGVFdgogX19aTks3V2ViQ29yZTExSGlzdG9yeUl0ZW0xNXBhZ2VT
Y2FsZUZhY3RvckV2CiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTE3b3JpZ2luYWxVUkxTdHJp
bmdFdgotX19aTks3V2ViQ29yZTExSGlzdG9yeUl0ZW0xOWNoaWxkSXRlbVdpdGhUYXJnZXRFUktO
M1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTIwZ2V0VHJhbnNpZW50UHJv
cGVydHlFUktOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTIwaGFzQ2Fj
aGVkUGFnZUV4cGlyZWRFdgogX19aTks3V2ViQ29yZTExSGlzdG9yeUl0ZW0zdXJsRXYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDbGllbnQuaAppbmRleCA0NzE4NzM2MDFkNGZm
OTI5ZGQxNTEzYWUwOGNhZTJjMWQ2OWI5OTk5Li4wODIwNDE1ZmU4MTBmZWQxM2M1ZDlkYTI2YWVi
YmZmNzcwYjA5YmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3
YXJkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENsaWVu
dC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVh
bCB2b2lkIGFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4pID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkSXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBnb1RvSXRlbShIaXN0b3J5SXRlbSopID0gMDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAKaW5kZXggNTVjYWYxYzBkNzUx
NjUxNmExZGE4MzMwZjI4MTEyOTk0Y2FiZDc0NS4uMWFlYjYzY2Y1MjkzYzQ2NjhhZjIwZmZjYjEx
NTg1NjkxMGJmMmE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9y
d2FyZENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0Zvcndh
cmRDb250cm9sbGVyLmNwcApAQCAtOTcsOSArOTcsOSBAQCBib29sIEJhY2tGb3J3YXJkQ29udHJv
bGxlcjo6Z29Gb3J3YXJkKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBCYWNrRm9yd2Fy
ZENvbnRyb2xsZXI6OmFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gaXRlbSkKK3ZvaWQg
QmFja0ZvcndhcmRDb250cm9sbGVyOjphZGRJdGVtKFJlZjxIaXN0b3J5SXRlbT4mJiBpdGVtKQog
ewotICAgIG1fY2xpZW50LT5hZGRJdGVtKGl0ZW0pOworICAgIG1fY2xpZW50LT5hZGRJdGVtKFdU
Rjo6bW92ZShpdGVtKSk7CiB9CiAKIHZvaWQgQmFja0ZvcndhcmRDb250cm9sbGVyOjpzZXRDdXJy
ZW50SXRlbShIaXN0b3J5SXRlbSogaXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0Jh
Y2tGb3J3YXJkQ29udHJvbGxlci5oCmluZGV4IGYyM2I3ZTRiZjEwNDQ3Y2IyZjQxZWY3MmU2ZDIz
Y2Q2YmFmMGE5NjMuLjU4OWVlNWVjYTJiZTcwNjZmNjQzYzY1NjcwMDU3MjkzNmY2OWRmMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuaApAQCAt
NTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnb0JhY2soKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGdvRm9yd2FyZCgpOwogCi0gICAgdm9pZCBhZGRJdGVt
KFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+KTsKKyAgICB2b2lkIGFkZEl0ZW0oUmVmPEhpc3RvcnlJ
dGVtPiYmKTsKICAgICB2b2lkIHNldEN1cnJlbnRJdGVtKEhpc3RvcnlJdGVtKik7CiAgICAgICAg
IAogICAgIGludCBjb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9CYWNrRm9yd2FyZExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9y
d2FyZExpc3QuY3BwCmluZGV4IGVhZTYyYmM3MWY4NjM4MGM3MjUxNmI3ZTcwZDcxY2U3YWUzYjUw
NTMuLjkwMWI1ZDMwM2RhOWE1MTQ4NmIxNDJmZDAwZjI4NTE0OWJmNWNmNjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTU1LDM2ICs1NSwzNSBAQCBC
YWNrRm9yd2FyZExpc3Q6On5CYWNrRm9yd2FyZExpc3QoKQogICAgIEFTU0VSVChtX2Nsb3NlZCk7
CiB9CiAKLXZvaWQgQmFja0ZvcndhcmRMaXN0OjphZGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0
ZW0+IHBycEl0ZW0pCit2b2lkIEJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShSZWY8SGlzdG9yeUl0
ZW0+JiYgbmV3SXRlbSkKIHsKLSAgICBBU1NFUlQocHJwSXRlbSk7Ci0gICAgaWYgKG1fY2FwYWNp
dHkgPT0gMCB8fCAhbV9lbmFibGVkKQorICAgIGlmICghbV9jYXBhY2l0eSB8fCAhbV9lbmFibGVk
KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gVG9zcyBhbnl0aGluZyBpbiB0aGUgZm9y
d2FyZCBsaXN0ICAgIAogICAgIGlmIChtX2N1cnJlbnQgIT0gTm9DdXJyZW50SXRlbUluZGV4KSB7
CiAgICAgICAgIHVuc2lnbmVkIHRhcmdldFNpemUgPSBtX2N1cnJlbnQgKyAxOwogICAgICAgICB3
aGlsZSAobV9lbnRyaWVzLnNpemUoKSA+IHRhcmdldFNpemUpIHsKLSAgICAgICAgICAgIFJlZlB0
cjxIaXN0b3J5SXRlbT4gaXRlbSA9IG1fZW50cmllcy5sYXN0KCk7CisgICAgICAgICAgICBhdXRv
JiBpdGVtID0gbV9lbnRyaWVzLmxhc3QoKTsKICAgICAgICAgICAgIG1fZW50cmllcy5yZW1vdmVM
YXN0KCk7Ci0gICAgICAgICAgICBtX2VudHJ5SGFzaC5yZW1vdmUoaXRlbSk7Ci0gICAgICAgICAg
ICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZSgqaXRlbSk7CisgICAgICAgICAgICBtX2Vu
dHJ5SGFzaC5yZW1vdmUoaXRlbS5wdHIoKSk7CisgICAgICAgICAgICBQYWdlQ2FjaGU6OnNpbmds
ZXRvbigpLnJlbW92ZShpdGVtKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIFRvc3MgdGhl
IGZpcnN0IGl0ZW0gaWYgdGhlIGxpc3QgaXMgZ2V0dGluZyB0b28gYmlnLCBhcyBsb25nIGFzIHdl
J3JlIG5vdCB1c2luZyBpdAogICAgIC8vIChvciBldmVuIGlmIHdlIGFyZSwgaWYgd2Ugb25seSB3
YW50IDEgZW50cnkpLgotICAgIGlmIChtX2VudHJpZXMuc2l6ZSgpID09IG1fY2FwYWNpdHkgJiYg
KG1fY3VycmVudCAhPSAwIHx8IG1fY2FwYWNpdHkgPT0gMSkpIHsKLSAgICAgICAgUmVmUHRyPEhp
c3RvcnlJdGVtPiBpdGVtID0gbV9lbnRyaWVzWzBdOworICAgIGlmIChtX2VudHJpZXMuc2l6ZSgp
ID09IG1fY2FwYWNpdHkgJiYgKG1fY3VycmVudCB8fCBtX2NhcGFjaXR5ID09IDEpKSB7CisgICAg
ICAgIGF1dG8mIGl0ZW0gPSBtX2VudHJpZXMuZmlyc3QoKTsKICAgICAgICAgbV9lbnRyaWVzLnJl
bW92ZSgwKTsKLSAgICAgICAgbV9lbnRyeUhhc2gucmVtb3ZlKGl0ZW0pOwotICAgICAgICBQYWdl
Q2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZSgqaXRlbSk7Ci0gICAgICAgIG1fY3VycmVudC0tOwor
ICAgICAgICBtX2VudHJ5SGFzaC5yZW1vdmUoaXRlbS5wdHIoKSk7CisgICAgICAgIFBhZ2VDYWNo
ZTo6c2luZ2xldG9uKCkucmVtb3ZlKGl0ZW0pOworICAgICAgICAtLW1fY3VycmVudDsKICAgICB9
CiAKLSAgICBtX2VudHJ5SGFzaC5hZGQocHJwSXRlbS5nZXQoKSk7Ci0gICAgbV9lbnRyaWVzLmlu
c2VydChtX2N1cnJlbnQgKyAxLCBwcnBJdGVtKTsKLSAgICBtX2N1cnJlbnQrKzsKKyAgICBtX2Vu
dHJ5SGFzaC5hZGQobmV3SXRlbS5wdHIoKSk7CisgICAgbV9lbnRyaWVzLmluc2VydChtX2N1cnJl
bnQgKyAxLCBXVEY6Om1vdmUobmV3SXRlbSkpOworICAgICsrbV9jdXJyZW50OwogfQogCiB2b2lk
IEJhY2tGb3J3YXJkTGlzdDo6Z29CYWNrKCkKQEAgLTExMCw3ICsxMDksNyBAQCB2b2lkIEJhY2tG
b3J3YXJkTGlzdDo6Z29Ub0l0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiAgICAgICAgIAogICAgIHVu
c2lnbmVkIGludCBpbmRleCA9IDA7CiAgICAgZm9yICg7IGluZGV4IDwgbV9lbnRyaWVzLnNpemUo
KTsgKytpbmRleCkKLSAgICAgICAgaWYgKG1fZW50cmllc1tpbmRleF0gPT0gaXRlbSkKKyAgICAg
ICAgaWYgKG1fZW50cmllc1tpbmRleF0ucHRyKCkgPT0gaXRlbSkKICAgICAgICAgICAgIGJyZWFr
OwogICAgIGlmIChpbmRleCA8IG1fZW50cmllcy5zaXplKCkpIHsKICAgICAgICAgbV9jdXJyZW50
ID0gaW5kZXg7CkBAIC0xMjAsMzEgKzExOSwzMSBAQCB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Z29U
b0l0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiBIaXN0b3J5SXRlbSogQmFja0ZvcndhcmRMaXN0Ojpi
YWNrSXRlbSgpCiB7CiAgICAgaWYgKG1fY3VycmVudCAmJiBtX2N1cnJlbnQgIT0gTm9DdXJyZW50
SXRlbUluZGV4KQotICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVudCAtIDFdLmdldCgp
OwotICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVudCAtIDFd
LnB0cigpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBIaXN0b3J5SXRlbSogQmFja0Zvcndh
cmRMaXN0OjpjdXJyZW50SXRlbSgpCiB7CiAgICAgaWYgKG1fY3VycmVudCAhPSBOb0N1cnJlbnRJ
dGVtSW5kZXgpCi0gICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9jdXJyZW50XS5nZXQoKTsKLSAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJlbnRdLnB0cigpOwor
ICAgIHJldHVybiBudWxscHRyOwogfQogCiBIaXN0b3J5SXRlbSogQmFja0ZvcndhcmRMaXN0Ojpm
b3J3YXJkSXRlbSgpCiB7CiAgICAgaWYgKG1fZW50cmllcy5zaXplKCkgJiYgbV9jdXJyZW50IDwg
bV9lbnRyaWVzLnNpemUoKSAtIDEpCi0gICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9jdXJyZW50
ICsgMV0uZ2V0KCk7Ci0gICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9j
dXJyZW50ICsgMV0ucHRyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgQmFja0Zv
cndhcmRMaXN0OjpiYWNrTGlzdFdpdGhMaW1pdChpbnQgbGltaXQsIEhpc3RvcnlJdGVtVmVjdG9y
JiBsaXN0KQogewogICAgIGxpc3QuY2xlYXIoKTsKICAgICBpZiAobV9jdXJyZW50ICE9IE5vQ3Vy
cmVudEl0ZW1JbmRleCkgewotICAgICAgICB1bnNpZ25lZCBmaXJzdCA9IHN0ZDo6bWF4KChpbnQp
bV9jdXJyZW50IC0gbGltaXQsIDApOworICAgICAgICB1bnNpZ25lZCBmaXJzdCA9IHN0ZDo6bWF4
KHN0YXRpY19jYXN0PGludD4obV9jdXJyZW50KSAtIGxpbWl0LCAwKTsKICAgICAgICAgZm9yICg7
IGZpcnN0IDwgbV9jdXJyZW50OyArK2ZpcnN0KQotICAgICAgICAgICAgbGlzdC5hcHBlbmQobV9l
bnRyaWVzW2ZpcnN0XSk7CisgICAgICAgICAgICBsaXN0LmFwcGVuZChtX2VudHJpZXNbZmlyc3Rd
LmdldCgpKTsKICAgICB9CiB9CiAKQEAgLTE2MCw3ICsxNTksNyBAQCB2b2lkIEJhY2tGb3J3YXJk
TGlzdDo6Zm9yd2FyZExpc3RXaXRoTGltaXQoaW50IGxpbWl0LCBIaXN0b3J5SXRlbVZlY3RvciYg
bGlzdCkKICAgICAgICAgaW50IGxhc3QgPSBzdGQ6Om1pbihtX2N1cnJlbnQgKyBsaW1pdCwgbGFz
dEVudHJ5KTsKICAgICAgICAgbGltaXQgPSBtX2N1cnJlbnQgKyAxOwogICAgICAgICBmb3IgKDsg
bGltaXQgPD0gbGFzdDsgKytsaW1pdCkKLSAgICAgICAgICAgIGxpc3QuYXBwZW5kKG1fZW50cmll
c1tsaW1pdF0pOworICAgICAgICAgICAgbGlzdC5hcHBlbmQobV9lbnRyaWVzW2xpbWl0XS5nZXQo
KSk7CiAgICAgfQogfQogCkBAIC0xNzEsMTEgKzE3MCwxMSBAQCBpbnQgQmFja0ZvcndhcmRMaXN0
OjpjYXBhY2l0eSgpCiAKIHZvaWQgQmFja0ZvcndhcmRMaXN0OjpzZXRDYXBhY2l0eShpbnQgc2l6
ZSkKIHsgICAgCi0gICAgd2hpbGUgKHNpemUgPCAoaW50KW1fZW50cmllcy5zaXplKCkpIHsKLSAg
ICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtID0gbV9lbnRyaWVzLmxhc3QoKTsKKyAgICB3
aGlsZSAoc2l6ZSA8IHN0YXRpY19jYXN0PGludD4obV9lbnRyaWVzLnNpemUoKSkpIHsKKyAgICAg
ICAgYXV0byYgaXRlbSA9IG1fZW50cmllcy5sYXN0KCk7CiAgICAgICAgIG1fZW50cmllcy5yZW1v
dmVMYXN0KCk7Ci0gICAgICAgIG1fZW50cnlIYXNoLnJlbW92ZShpdGVtKTsKLSAgICAgICAgUGFn
ZUNhY2hlOjpzaW5nbGV0b24oKS5yZW1vdmUoKml0ZW0pOworICAgICAgICBtX2VudHJ5SGFzaC5y
ZW1vdmUoaXRlbS5wdHIoKSk7CisgICAgICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucmVtb3Zl
KGl0ZW0pOwogICAgIH0KIAogICAgIGlmICghc2l6ZSkKQEAgLTIxNCwxMyArMjEzLDEzIEBAIGlu
dCBCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0Q291bnQoKQogSGlzdG9yeUl0ZW0qIEJhY2tG
b3J3YXJkTGlzdDo6aXRlbUF0SW5kZXgoaW50IGluZGV4KQogewogICAgIC8vIERvIHJhbmdlIGNo
ZWNrcyB3aXRob3V0IGRvaW5nIG1hdGggb24gaW5kZXggdG8gYXZvaWQgb3ZlcmZsb3cuCi0gICAg
aWYgKGluZGV4IDwgLShpbnQpbV9jdXJyZW50KQotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAo
aW5kZXggPCAtc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnQpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAKICAgICBpZiAoaW5kZXggPiBmb3J3YXJkTGlzdENvdW50KCkpCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgCi0gICAgcmV0dXJu
IG1fZW50cmllc1tpbmRleCArIG1fY3VycmVudF0uZ2V0KCk7CisgICAgcmV0dXJuIG1fZW50cmll
c1tpbmRleCArIG1fY3VycmVudF0ucHRyKCk7CiB9CiAKIEhpc3RvcnlJdGVtVmVjdG9yJiBCYWNr
Rm9yd2FyZExpc3Q6OmVudHJpZXMoKQpAQCAtMjU1LDcgKzI1NCw3IEBAIGJvb2wgQmFja0Zvcndh
cmRMaXN0OjpjbGVhckFsbFBhZ2VDYWNoZXMoKQogdm9pZCBCYWNrRm9yd2FyZExpc3Q6OmNsb3Nl
KCkKIHsKICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX2VudHJpZXMpCi0gICAgICAgIFBhZ2VDYWNo
ZTo6c2luZ2xldG9uKCkucmVtb3ZlKCppdGVtKTsKKyAgICAgICAgUGFnZUNhY2hlOjpzaW5nbGV0
b24oKS5yZW1vdmUoaXRlbSk7CiAgICAgbV9lbnRyaWVzLmNsZWFyKCk7CiAgICAgbV9lbnRyeUhh
c2guY2xlYXIoKTsKICAgICBtX3BhZ2UgPSBudWxscHRyOwpAQCAtMjcyLDggKzI3MSw4IEBAIHZv
aWQgQmFja0ZvcndhcmRMaXN0OjpyZW1vdmVJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAgIGlm
ICghaXRlbSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX2VudHJpZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGlmIChtX2VudHJpZXNbaV0gPT0g
aXRlbSkgeworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2VudHJpZXMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgaWYgKG1fZW50cmllc1tpXS5wdHIoKSA9PSBpdGVtKSB7CiAgICAgICAg
ICAgICBtX2VudHJpZXMucmVtb3ZlKGkpOwogICAgICAgICAgICAgbV9lbnRyeUhhc2gucmVtb3Zl
KGl0ZW0pOwogICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSBOb0N1cnJlbnRJdGVtSW5kZXgg
fHwgbV9jdXJyZW50IDwgaSkKQEAgLTI4Nyw2ICsyODYsNyBAQCB2b2lkIEJhY2tGb3J3YXJkTGlz
dDo6cmVtb3ZlSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CisgICAgfQogfQogCiBib29sIEJhY2tGb3J3YXJkTGlzdDo6
Y29udGFpbnNJdGVtKEhpc3RvcnlJdGVtKiBlbnRyeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0Jh
Y2tGb3J3YXJkTGlzdC5oCmluZGV4IGEzM2M4YTY2YzAwOTY1OTQ2NjE2Y2M0ZWRjNDdmY2M4ZWNi
MDIwNjguLjU5MjkyNzYwY2NjODZmNzkyYzQ1ZDdjNTRhNmY2OWU3ZTJjMDYzYzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBhZ2U7CiAKLXR5cGVkZWYgVmVjdG9yPFJlZlB0cjxI
aXN0b3J5SXRlbT4+IEhpc3RvcnlJdGVtVmVjdG9yOwordHlwZWRlZiBWZWN0b3I8UmVmPEhpc3Rv
cnlJdGVtPj4gSGlzdG9yeUl0ZW1WZWN0b3I7CiB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPEhpc3Rv
cnlJdGVtPj4gSGlzdG9yeUl0ZW1IYXNoU2V0OwogCiBjbGFzcyBCYWNrRm9yd2FyZExpc3QgOiBw
dWJsaWMgQmFja0ZvcndhcmRDbGllbnQgewpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAg
ICBQYWdlKiBwYWdlKCkgeyByZXR1cm4gbV9wYWdlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRk
SXRlbShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGFkZEl0ZW0oUmVmPEhpc3RvcnlJdGVtPiYmKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGdvQmFjaygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ29Gb3J3YXJkKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGdvVG9JdGVtKEhpc3RvcnlJdGVtKikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCmluZGV4IDNjNTJmZDZlMDI3OTE3OGJmNDBhY2Zl
NGJkODMyNDUxOTJjYWEwMmQuLjIyOWJhYjhlN2EyM2FjMDVjMGFkMDVlN2VkNDMxNTdkY2Q3ZThi
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCkBAIC0xNzIsOSArMTcy
LDkgQEAgaW5saW5lIEhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShjb25zdCBIaXN0b3J5SXRlbSYg
aXRlbSkKICAgICAgICAgbV9yZWRpcmVjdFVSTHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxT
dHJpbmc+PigqaXRlbS5tX3JlZGlyZWN0VVJMcyk7CiB9CiAKLVBhc3NSZWZQdHI8SGlzdG9yeUl0
ZW0+IEhpc3RvcnlJdGVtOjpjb3B5KCkgY29uc3QKK1JlZjxIaXN0b3J5SXRlbT4gSGlzdG9yeUl0
ZW06OmNvcHkoKSBjb25zdAogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSGlzdG9yeUl0ZW0o
KnRoaXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIaXN0b3J5SXRlbSgqdGhpcykpOwog
fQogCiB2b2lkIEhpc3RvcnlJdGVtOjpyZXNldCgpCkBAIC0zNjYsNDQgKzM2Niw0NCBAQCB2b2lk
IEhpc3RvcnlJdGVtOjpzZXRTdGF0ZU9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gb2JqZWN0KQogICAgIG1fc3RhdGVPYmplY3QgPSBvYmplY3Q7CiB9CiAKLXZvaWQgSGlz
dG9yeUl0ZW06OmFkZENoaWxkSXRlbShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBjaGlsZCkKK3Zv
aWQgSGlzdG9yeUl0ZW06OmFkZENoaWxkSXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYgY2hpbGQpCiB7
CiAgICAgQVNTRVJUKCFjaGlsZEl0ZW1XaXRoVGFyZ2V0KGNoaWxkLT50YXJnZXQoKSkpOwotICAg
IG1fY2hpbGRyZW4uYXBwZW5kKGNoaWxkKTsKKyAgICBtX2NoaWxkcmVuLmFwcGVuZChXVEY6Om1v
dmUoY2hpbGQpKTsKIH0KIAotdm9pZCBIaXN0b3J5SXRlbTo6c2V0Q2hpbGRJdGVtKFBhc3NSZWZQ
dHI8SGlzdG9yeUl0ZW0+IGNoaWxkKQordm9pZCBIaXN0b3J5SXRlbTo6c2V0Q2hpbGRJdGVtKFJl
ZjxIaXN0b3J5SXRlbT4mJiBjaGlsZCkKIHsKICAgICBBU1NFUlQoIWNoaWxkLT5pc1RhcmdldEl0
ZW0oKSk7CiAgICAgdW5zaWduZWQgc2l6ZSA9IG1fY2hpbGRyZW4uc2l6ZSgpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpICB7CiAgICAgICAgIGlmIChtX2NoaWxkcmVu
W2ldLT50YXJnZXQoKSA9PSBjaGlsZC0+dGFyZ2V0KCkpIHsKICAgICAgICAgICAgIGNoaWxkLT5z
ZXRJc1RhcmdldEl0ZW0obV9jaGlsZHJlbltpXS0+aXNUYXJnZXRJdGVtKCkpOwotICAgICAgICAg
ICAgbV9jaGlsZHJlbltpXSA9IGNoaWxkOworICAgICAgICAgICAgbV9jaGlsZHJlbltpXSA9IFdU
Rjo6bW92ZShjaGlsZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgbV9jaGlsZHJlbi5hcHBlbmQoY2hpbGQpOworICAgIG1fY2hpbGRyZW4uYXBwZW5kKFdURjo6
bW92ZShjaGlsZCkpOwogfQogCi1IaXN0b3J5SXRlbSogSGlzdG9yeUl0ZW06OmNoaWxkSXRlbVdp
dGhUYXJnZXQoY29uc3QgU3RyaW5nJiB0YXJnZXQpIGNvbnN0CitIaXN0b3J5SXRlbSogSGlzdG9y
eUl0ZW06OmNoaWxkSXRlbVdpdGhUYXJnZXQoY29uc3QgU3RyaW5nJiB0YXJnZXQpCiB7CiAgICAg
dW5zaWduZWQgc2l6ZSA9IG1fY2hpbGRyZW4uc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgaWYgKG1fY2hpbGRyZW5baV0tPnRhcmdldCgp
ID09IHRhcmdldCkKLSAgICAgICAgICAgIHJldHVybiBtX2NoaWxkcmVuW2ldLmdldCgpOworICAg
ICAgICAgICAgcmV0dXJuIG1fY2hpbGRyZW5baV0ucHRyKCk7CiAgICAgfQotICAgIHJldHVybiAw
OworICAgIHJldHVybiBudWxscHRyOwogfQogCi1IaXN0b3J5SXRlbSogSGlzdG9yeUl0ZW06OmNo
aWxkSXRlbVdpdGhEb2N1bWVudFNlcXVlbmNlTnVtYmVyKGxvbmcgbG9uZyBudW1iZXIpIGNvbnN0
CitIaXN0b3J5SXRlbSogSGlzdG9yeUl0ZW06OmNoaWxkSXRlbVdpdGhEb2N1bWVudFNlcXVlbmNl
TnVtYmVyKGxvbmcgbG9uZyBudW1iZXIpCiB7CiAgICAgdW5zaWduZWQgc2l6ZSA9IG1fY2hpbGRy
ZW4uc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAg
ICAgICAgaWYgKG1fY2hpbGRyZW5baV0tPmRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSA9PSBudW1i
ZXIpCi0gICAgICAgICAgICByZXR1cm4gbV9jaGlsZHJlbltpXS5nZXQoKTsKKyAgICAgICAgICAg
IHJldHVybiBtX2NoaWxkcmVuW2ldLnB0cigpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAogLy8gPHJkYXI6Ly9wcm9ibGVtLzQ4OTU4NDk+IEhpc3RvcnlJ
dGVtOjpmaW5kVGFyZ2V0SXRlbSgpIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIGEgbm9uLXJlY3Vy
c2l2ZSBtZXRob2QuCkBAIC00MTMsMTUgKzQxMywxNyBAQCBIaXN0b3J5SXRlbSogSGlzdG9yeUl0
ZW06OmZpbmRUYXJnZXRJdGVtKCkKICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgdW5zaWduZWQg
c2l6ZSA9IG1fY2hpbGRyZW4uc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
aXplOyArK2kpIHsKKyAgICAgICAgLy8gRklYTUU6IHRhcmdldEl0ZW0oKSBjYW5ub3QgcmV0dXJu
IG51bGwgY3VycmVudGx5LCB3aGljaCBpcyB3cm9uZy4KICAgICAgICAgaWYgKEhpc3RvcnlJdGVt
KiBtYXRjaCA9IG1fY2hpbGRyZW5baV0tPnRhcmdldEl0ZW0oKSkKICAgICAgICAgICAgIHJldHVy
biBtYXRjaDsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
IEhpc3RvcnlJdGVtKiBIaXN0b3J5SXRlbTo6dGFyZ2V0SXRlbSgpCiB7CiAgICAgSGlzdG9yeUl0
ZW0qIGZvdW5kSXRlbSA9IGZpbmRUYXJnZXRJdGVtKCk7CisgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIHByb2JhYmx5IG5vdCBmYWxsIGJhY2sgdG8gfHRoaXN8LgogICAgIHJldHVybiBmb3VuZEl0
ZW0gPyBmb3VuZEl0ZW0gOiB0aGlzOwogfQogCkBAIC00NDAsMTMgKzQ0MiwxMyBAQCB2b2lkIEhp
c3RvcnlJdGVtOjpjbGVhckNoaWxkcmVuKCkKICAgICBtX2NoaWxkcmVuLmNsZWFyKCk7CiB9CiAK
LWJvb2wgSGlzdG9yeUl0ZW06OmlzQW5jZXN0b3JPZihjb25zdCBIaXN0b3J5SXRlbSogaXRlbSkg
Y29uc3QKK2Jvb2wgSGlzdG9yeUl0ZW06OmlzQW5jZXN0b3JPZihjb25zdCBIaXN0b3J5SXRlbSYg
aXRlbSkgY29uc3QKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2hpbGRyZW4uc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgSGlzdG9yeUl0ZW0qIGNoaWxkID0gbV9jaGlsZHJlbltpXS5n
ZXQoKTsKLSAgICAgICAgaWYgKGNoaWxkID09IGl0ZW0pCisgICAgICAgIGF1dG8mIGNoaWxkID0g
bV9jaGlsZHJlbltpXS5nZXQoKTsKKyAgICAgICAgaWYgKCZjaGlsZCA9PSAmaXRlbSkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoY2hpbGQtPmlzQW5jZXN0b3JPZihpdGVt
KSkKKyAgICAgICAgaWYgKGNoaWxkLmlzQW5jZXN0b3JPZihpdGVtKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC00NTUsMzQgKzQ1NywzNCBA
QCBib29sIEhpc3RvcnlJdGVtOjppc0FuY2VzdG9yT2YoY29uc3QgSGlzdG9yeUl0ZW0qIGl0ZW0p
IGNvbnN0CiAvLyBXZSBkbyBzYW1lLWRvY3VtZW50IG5hdmlnYXRpb24gaWYgZ29pbmcgdG8gYSBk
aWZmZXJlbnQgaXRlbSBhbmQgaWYgZWl0aGVyIG9mIHRoZSBmb2xsb3dpbmcgaXMgdHJ1ZToKIC8v
IC0gVGhlIG90aGVyIGl0ZW0gY29ycmVzcG9uZHMgdG8gdGhlIHNhbWUgZG9jdW1lbnQgKGZvciBo
aXN0b3J5IGVudHJpZXMgY3JlYXRlZCB2aWEgcHVzaFN0YXRlIG9yIGZyYWdtZW50IGNoYW5nZXMp
LgogLy8gLSBUaGUgb3RoZXIgaXRlbSBjb3JyZXNwb25kcyB0byB0aGUgc2FtZSBzZXQgb2YgZG9j
dW1lbnRzLCBpbmNsdWRpbmcgZnJhbWVzIChmb3IgaGlzdG9yeSBlbnRyaWVzIGNyZWF0ZWQgdmlh
IHJlZ3VsYXIgbmF2aWdhdGlvbikKLWJvb2wgSGlzdG9yeUl0ZW06OnNob3VsZERvU2FtZURvY3Vt
ZW50TmF2aWdhdGlvblRvKEhpc3RvcnlJdGVtKiBvdGhlckl0ZW0pIGNvbnN0Citib29sIEhpc3Rv
cnlJdGVtOjpzaG91bGREb1NhbWVEb2N1bWVudE5hdmlnYXRpb25UbyhIaXN0b3J5SXRlbSYgb3Ro
ZXJJdGVtKSBjb25zdAogewotICAgIGlmICh0aGlzID09IG90aGVySXRlbSkKKyAgICBpZiAodGhp
cyA9PSAmb3RoZXJJdGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoc3RhdGVP
YmplY3QoKSB8fCBvdGhlckl0ZW0tPnN0YXRlT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBkb2N1
bWVudFNlcXVlbmNlTnVtYmVyKCkgPT0gb3RoZXJJdGVtLT5kb2N1bWVudFNlcXVlbmNlTnVtYmVy
KCk7CisgICAgaWYgKHN0YXRlT2JqZWN0KCkgfHwgb3RoZXJJdGVtLnN0YXRlT2JqZWN0KCkpCisg
ICAgICAgIHJldHVybiBkb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkgPT0gb3RoZXJJdGVtLmRvY3Vt
ZW50U2VxdWVuY2VOdW1iZXIoKTsKICAgICAKLSAgICBpZiAoKHVybCgpLmhhc0ZyYWdtZW50SWRl
bnRpZmllcigpIHx8IG90aGVySXRlbS0+dXJsKCkuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpICYm
IGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJsKCksIG90aGVySXRlbS0+dXJsKCkp
KQotICAgICAgICByZXR1cm4gZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpID09IG90aGVySXRlbS0+
ZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpOyAgICAgICAgCisgICAgaWYgKCh1cmwoKS5oYXNGcmFn
bWVudElkZW50aWZpZXIoKSB8fCBvdGhlckl0ZW0udXJsKCkuaGFzRnJhZ21lbnRJZGVudGlmaWVy
KCkpICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJsKCksIG90aGVySXRlbS51
cmwoKSkpCisgICAgICAgIHJldHVybiBkb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkgPT0gb3RoZXJJ
dGVtLmRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKTsKICAgICAKICAgICByZXR1cm4gaGFzU2FtZURv
Y3VtZW50VHJlZShvdGhlckl0ZW0pOwogfQogCiAvLyBEb2VzIGEgcmVjdXJzaXZlIGNoZWNrIHRo
YXQgdGhpcyBpdGVtIGFuZCBpdHMgZGVzY2VuZGFudHMgaGF2ZSB0aGUgc2FtZQogLy8gZG9jdW1l
bnQgc2VxdWVuY2UgbnVtYmVycyBhcyB0aGUgb3RoZXIgaXRlbS4KLWJvb2wgSGlzdG9yeUl0ZW06
Omhhc1NhbWVEb2N1bWVudFRyZWUoSGlzdG9yeUl0ZW0qIG90aGVySXRlbSkgY29uc3QKK2Jvb2wg
SGlzdG9yeUl0ZW06Omhhc1NhbWVEb2N1bWVudFRyZWUoSGlzdG9yeUl0ZW0mIG90aGVySXRlbSkg
Y29uc3QKIHsKLSAgICBpZiAoZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpICE9IG90aGVySXRlbS0+
ZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpKQorICAgIGlmIChkb2N1bWVudFNlcXVlbmNlTnVtYmVy
KCkgIT0gb3RoZXJJdGVtLmRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAKLSAgICBpZiAoY2hpbGRyZW4oKS5zaXplKCkgIT0gb3RoZXJJdGVt
LT5jaGlsZHJlbigpLnNpemUoKSkKKyAgICBpZiAoY2hpbGRyZW4oKS5zaXplKCkgIT0gb3RoZXJJ
dGVtLmNoaWxkcmVuKCkuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNoaWxkcmVuKCkuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgSGlz
dG9yeUl0ZW0qIGNoaWxkID0gY2hpbGRyZW4oKVtpXS5nZXQoKTsKLSAgICAgICAgSGlzdG9yeUl0
ZW0qIG90aGVyQ2hpbGQgPSBvdGhlckl0ZW0tPmNoaWxkSXRlbVdpdGhEb2N1bWVudFNlcXVlbmNl
TnVtYmVyKGNoaWxkLT5kb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkpOwotICAgICAgICBpZiAoIW90
aGVyQ2hpbGQgfHwgIWNoaWxkLT5oYXNTYW1lRG9jdW1lbnRUcmVlKG90aGVyQ2hpbGQpKQorICAg
ICAgICBhdXRvJiBjaGlsZCA9IGNoaWxkcmVuKClbaV0uZ2V0KCk7CisgICAgICAgIGF1dG8qIG90
aGVyQ2hpbGQgPSBvdGhlckl0ZW0uY2hpbGRJdGVtV2l0aERvY3VtZW50U2VxdWVuY2VOdW1iZXIo
Y2hpbGQuZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpKTsKKyAgICAgICAgaWYgKCFvdGhlckNoaWxk
IHx8ICFjaGlsZC5oYXNTYW1lRG9jdW1lbnRUcmVlKCpvdGhlckNoaWxkKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTQ5MSwxNiArNDkzLDE2IEBAIGJvb2wgSGlzdG9y
eUl0ZW06Omhhc1NhbWVEb2N1bWVudFRyZWUoSGlzdG9yeUl0ZW0qIG90aGVySXRlbSkgY29uc3QK
IAogLy8gRG9lcyBhIG5vbi1yZWN1cnNpdmUgY2hlY2sgdGhhdCB0aGlzIGl0ZW0gYW5kIGl0cyBp
bW1lZGlhdGUgY2hpbGRyZW4gaGF2ZSB0aGUKIC8vIHNhbWUgZnJhbWVzIGFzIHRoZSBvdGhlciBp
dGVtLgotYm9vbCBIaXN0b3J5SXRlbTo6aGFzU2FtZUZyYW1lcyhIaXN0b3J5SXRlbSogb3RoZXJJ
dGVtKSBjb25zdAorYm9vbCBIaXN0b3J5SXRlbTo6aGFzU2FtZUZyYW1lcyhIaXN0b3J5SXRlbSYg
b3RoZXJJdGVtKSBjb25zdAogewotICAgIGlmICh0YXJnZXQoKSAhPSBvdGhlckl0ZW0tPnRhcmdl
dCgpKQorICAgIGlmICh0YXJnZXQoKSAhPSBvdGhlckl0ZW0udGFyZ2V0KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgaWYgKGNoaWxkcmVuKCkuc2l6ZSgpICE9IG90aGVy
SXRlbS0+Y2hpbGRyZW4oKS5zaXplKCkpCisgICAgaWYgKGNoaWxkcmVuKCkuc2l6ZSgpICE9IG90
aGVySXRlbS5jaGlsZHJlbigpLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbigpLnNpemUoKTsgaSsrKSB7Ci0gICAgICAg
IGlmICghb3RoZXJJdGVtLT5jaGlsZEl0ZW1XaXRoVGFyZ2V0KGNoaWxkcmVuKClbaV0tPnRhcmdl
dCgpKSkKKyAgICAgICAgaWYgKCFvdGhlckl0ZW0uY2hpbGRJdGVtV2l0aFRhcmdldChjaGlsZHJl
bigpW2ldLT50YXJnZXQoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBA
IC01NDIsMTAgKzU0NCwxMCBAQCBGb3JtRGF0YSogSGlzdG9yeUl0ZW06OmZvcm1EYXRhKCkKICAg
ICByZXR1cm4gbV9mb3JtRGF0YS5nZXQoKTsKIH0KIAotYm9vbCBIaXN0b3J5SXRlbTo6aXNDdXJy
ZW50RG9jdW1lbnQoRG9jdW1lbnQqIGRvYykgY29uc3QKK2Jvb2wgSGlzdG9yeUl0ZW06OmlzQ3Vy
cmVudERvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGZpbmQgYSBiZXR0ZXIgd2F5IHRvIGNoZWNrIGlmIHRoaXMgaXMgdGhlIGN1cnJl
bnQgZG9jdW1lbnQuCi0gICAgcmV0dXJuIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIo
dXJsKCksIGRvYy0+dXJsKCkpOworICAgIHJldHVybiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVu
dGlmaWVyKHVybCgpLCBkb2N1bWVudC51cmwoKSk7CiB9CiAKIHZvaWQgSGlzdG9yeUl0ZW06OmFk
ZFJlZGlyZWN0VVJMKGNvbnN0IFN0cmluZyYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5
SXRlbS5oCmluZGV4IDY0YzA0YmVmOTRlZTYyMjQzYWNmNmM5ZGMzNzY2NzQ0ZTc5YWU2NWQuLjRk
ODQzYzQ4ZjJmNTgyYjNlZjFhMjFiNmRjY2Y1MjFlZjgyMWY3NDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L0hpc3RvcnlJdGVtLmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwogY2xhc3MgVVJMOwogZW51bSBjbGFzcyBQcnVuaW5nUmVhc29uOwogCi10eXBlZGVmIFZlY3Rv
cjxSZWZQdHI8SGlzdG9yeUl0ZW0+PiBIaXN0b3J5SXRlbVZlY3RvcjsKK3R5cGVkZWYgVmVjdG9y
PFJlZjxIaXN0b3J5SXRlbT4+IEhpc3RvcnlJdGVtVmVjdG9yOwogCiBleHRlcm4gdm9pZCAoKm5v
dGlmeUhpc3RvcnlJdGVtQ2hhbmdlZCkoSGlzdG9yeUl0ZW0qKTsKIApAQCAtNzksNyArNzksNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgfkhpc3RvcnlJdGVtKCk7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBjb3B5KCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgUmVmPEhpc3RvcnlJdGVtPiBjb3B5KCkgY29uc3Q7CiAKICAgICAv
LyBSZXNldHMgdGhlIEhpc3RvcnlJdGVtIHRvIGl0cyBpbml0aWFsIHN0YXRlLCBhcyByZXR1cm5l
ZCBieSBjcmVhdGUoKS4KICAgICB2b2lkIHJlc2V0KCk7CkBAIC0xNDEsMjQgKzE0MSwyNCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHNldExhc3RWaXNpdFdhc0ZhaWx1cmUoYm9vbCB3YXNGYWlsdXJl
KSB7IG1fbGFzdFZpc2l0V2FzRmFpbHVyZSA9IHdhc0ZhaWx1cmU7IH0KIAotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYWRkQ2hpbGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+KTsKLSAgICB2
b2lkIHNldENoaWxkSXRlbShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgSGlzdG9yeUl0ZW0qIGNoaWxkSXRlbVdpdGhUYXJnZXQoY29uc3QgU3RyaW5nJikgY29u
c3Q7Ci0gICAgSGlzdG9yeUl0ZW0qIGNoaWxkSXRlbVdpdGhEb2N1bWVudFNlcXVlbmNlTnVtYmVy
KGxvbmcgbG9uZyBudW1iZXIpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ2hp
bGRJdGVtKFJlZjxIaXN0b3J5SXRlbT4mJik7CisgICAgdm9pZCBzZXRDaGlsZEl0ZW0oUmVmPEhp
c3RvcnlJdGVtPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBIaXN0b3J5SXRlbSogY2hpbGRJdGVt
V2l0aFRhcmdldChjb25zdCBTdHJpbmcmKTsKKyAgICBIaXN0b3J5SXRlbSogY2hpbGRJdGVtV2l0
aERvY3VtZW50U2VxdWVuY2VOdW1iZXIobG9uZyBsb25nIG51bWJlcik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgSGlzdG9yeUl0ZW0qIHRhcmdldEl0ZW0oKTsKICAgICBXRUJDT1JFX0VYUE9SVCBjb25z
dCBIaXN0b3J5SXRlbVZlY3RvciYgY2hpbGRyZW4oKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGhhc0NoaWxkcmVuKCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhckNoaWxkcmVuKCk7Ci0g
ICAgYm9vbCBpc0FuY2VzdG9yT2YoY29uc3QgSGlzdG9yeUl0ZW0qKSBjb25zdDsKKyAgICBib29s
IGlzQW5jZXN0b3JPZihjb25zdCBIaXN0b3J5SXRlbSYpIGNvbnN0OwogICAgIAotICAgIGJvb2wg
c2hvdWxkRG9TYW1lRG9jdW1lbnROYXZpZ2F0aW9uVG8oSGlzdG9yeUl0ZW0qIG90aGVySXRlbSkg
Y29uc3Q7Ci0gICAgYm9vbCBoYXNTYW1lRnJhbWVzKEhpc3RvcnlJdGVtKiBvdGhlckl0ZW0pIGNv
bnN0OworICAgIGJvb2wgc2hvdWxkRG9TYW1lRG9jdW1lbnROYXZpZ2F0aW9uVG8oSGlzdG9yeUl0
ZW0mIG90aGVySXRlbSkgY29uc3Q7CisgICAgYm9vbCBoYXNTYW1lRnJhbWVzKEhpc3RvcnlJdGVt
JiBvdGhlckl0ZW0pIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRSZWRpcmVj
dFVSTChjb25zdCBTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiog
cmVkaXJlY3RVUkxzKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSZWRpcmVj
dFVSTHMoc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+Pik7CiAKLSAgICBib29sIGlzQ3Vy
cmVudERvY3VtZW50KERvY3VtZW50KikgY29uc3Q7CisgICAgYm9vbCBpc0N1cnJlbnREb2N1bWVu
dChEb2N1bWVudCYpIGNvbnN0OwogICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdFQkNP
UkVfRVhQT1JUIGlkIHZpZXdTdGF0ZSgpIGNvbnN0OwpAQCAtMjEyLDkgKzIxMiw5IEBAIHByaXZh
dGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0ZW0oY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRlVGl0bGUpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIEhpc3RvcnlJdGVtKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
ZnJhbWVOYW1lLCBjb25zdCBTdHJpbmcmIHBhcmVudCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAK
LSAgICBleHBsaWNpdCBIaXN0b3J5SXRlbShjb25zdCBIaXN0b3J5SXRlbSYpOworICAgIEhpc3Rv
cnlJdGVtKGNvbnN0IEhpc3RvcnlJdGVtJik7CiAKLSAgICBib29sIGhhc1NhbWVEb2N1bWVudFRy
ZWUoSGlzdG9yeUl0ZW0qIG90aGVySXRlbSkgY29uc3Q7CisgICAgYm9vbCBoYXNTYW1lRG9jdW1l
bnRUcmVlKEhpc3RvcnlJdGVtJiBvdGhlckl0ZW0pIGNvbnN0OwogCiAgICAgSGlzdG9yeUl0ZW0q
IGZpbmRUYXJnZXRJdGVtKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmlu
ZGV4IDA1OWYwZmY4ZTRmYzE2ZjZmMDkzYTFjZDBhYzI3OWUyYzQ3MDk3NGQuLmZmMWVjYzRlMmEx
MWNhNTA1OWQ1NThhMmJiMjhmNjZhOGEwMzhhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcApAQCAtMzE0Myw3ICszMTQzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFNh
bWVEb2N1bWVudEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0pCiAgICAgaWYgKEZyYW1lVmlldyogdmll
dyA9IG1fZnJhbWUudmlldygpKQogICAgICAgICB2aWV3LT5zZXRXYXNTY3JvbGxlZEJ5VXNlcihm
YWxzZSk7CiAKLSAgICBoaXN0b3J5KCkuc2V0Q3VycmVudEl0ZW0oJml0ZW0pOworICAgIGhpc3Rv
cnkoKS5zZXRDdXJyZW50SXRlbShpdGVtKTsKICAgICAgICAgCiAgICAgLy8gbG9hZEluU2FtZURv
Y3VtZW50KCkgYWN0dWFsbHkgY2hhbmdlcyB0aGUgVVJMIGFuZCBub3RpZmllcyBsb2FkIGRlbGVn
YXRlcyBvZiBhICJmYWtlIiBsb2FkCiAgICAgbG9hZEluU2FtZURvY3VtZW50KGl0ZW0udXJsKCks
IGl0ZW0uc3RhdGVPYmplY3QoKSwgZmFsc2UpOwpAQCAtMzI0Nyw3ICszMjQ3LDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9h
ZFR5cGUpCiB7CiAgICAgbV9yZXF1ZXN0ZWRIaXN0b3J5SXRlbSA9ICZpdGVtOwogICAgIEhpc3Rv
cnlJdGVtKiBjdXJyZW50SXRlbSA9IGhpc3RvcnkoKS5jdXJyZW50SXRlbSgpOwotICAgIGJvb2wg
c2FtZURvY3VtZW50TmF2aWdhdGlvbiA9IGN1cnJlbnRJdGVtICYmIGl0ZW0uc2hvdWxkRG9TYW1l
RG9jdW1lbnROYXZpZ2F0aW9uVG8oY3VycmVudEl0ZW0pOworICAgIGJvb2wgc2FtZURvY3VtZW50
TmF2aWdhdGlvbiA9IGN1cnJlbnRJdGVtICYmIGl0ZW0uc2hvdWxkRG9TYW1lRG9jdW1lbnROYXZp
Z2F0aW9uVG8oKmN1cnJlbnRJdGVtKTsKIAogICAgIGlmIChzYW1lRG9jdW1lbnROYXZpZ2F0aW9u
KQogICAgICAgICBsb2FkU2FtZURvY3VtZW50SXRlbShpdGVtKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCmluZGV4IGFjZjkwOTA2ZWFkZDIwOWQwZDA0YjRh
OGRmODcwZTgwZjVlOTdkZTcuLmQ0NjEwY2FlOTI3NDc5YmRlNjAxNDNjM2VhYTQwYTc5Zjc4YWRi
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcApAQCAt
MTg1LDEyICsxODUsMTEgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2F2ZURvY3VtZW50U3Rh
dGUoKQogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpOwotICAgIEFTU0VSVChkb2N1bWVudCk7Ci0gICAg
Ci0gICAgaWYgKGl0ZW0tPmlzQ3VycmVudERvY3VtZW50KGRvY3VtZW50KSAmJiBkb2N1bWVudC0+
aGFzTGl2aW5nUmVuZGVyVHJlZSgpKSB7CisgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7
CisgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gKm1fZnJhbWUuZG9jdW1lbnQoKTsKKyAgICBpZiAo
aXRlbS0+aXNDdXJyZW50RG9jdW1lbnQoZG9jdW1lbnQpICYmIGRvY3VtZW50Lmhhc0xpdmluZ1Jl
bmRlclRyZWUoKSkgewogICAgICAgICBMT0coTG9hZGluZywgIldlYkNvcmVMb2FkaW5nICVzOiBz
YXZpbmcgZm9ybSBzdGF0ZSB0byAlcCIsIG1fZnJhbWUudHJlZSgpLnVuaXF1ZU5hbWUoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpLCBpdGVtKTsKLSAgICAgICAgaXRlbS0+c2V0RG9jdW1lbnRTdGF0
ZShkb2N1bWVudC0+Zm9ybUVsZW1lbnRzU3RhdGUoKSk7CisgICAgICAgIGl0ZW0tPnNldERvY3Vt
ZW50U3RhdGUoZG9jdW1lbnQuZm9ybUVsZW1lbnRzU3RhdGUoKSk7CiAgICAgfQogfQogCkBAIC0y
NTMsNyArMjUyLDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6aW52YWxpZGF0ZUN1cnJlbnRJ
dGVtQ2FjaGVkUGFnZSgpCiAgICAgfQogfQogCi1ib29sIEhpc3RvcnlDb250cm9sbGVyOjpzaG91
bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKiB0YXJnZXRJdGVtKSBjb25z
dAorYm9vbCBIaXN0b3J5Q29udHJvbGxlcjo6c2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRl
bShIaXN0b3J5SXRlbSYgdGFyZ2V0SXRlbSkgY29uc3QKIHsKICAgICBpZiAoIW1fY3VycmVudEl0
ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ2OSw4ICs0NjgsOCBAQCB2b2lkIEhpc3Rv
cnlDb250cm9sbGVyOjp1cGRhdGVGb3JDb21taXQoKQogICAgICAgICAvLyBOb3RlIHByZXZpb3Vz
SXRlbSBtdXN0IGJlIHNldCBiZWZvcmUgd2UgY2xvc2UgdGhlIFVSTCwgd2hpY2ggd2lsbAogICAg
ICAgICAvLyBoYXBwZW4gd2hlbiB0aGUgZGF0YSBzb3VyY2UgaXMgbWFkZSBub24tcHJvdmlzaW9u
YWwgYmVsb3cKICAgICAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxJdGVtKTsKLSAgICAgICAgc2V0
Q3VycmVudEl0ZW0obV9wcm92aXNpb25hbEl0ZW0uZ2V0KCkpOwotICAgICAgICBtX3Byb3Zpc2lv
bmFsSXRlbSA9IDA7CisgICAgICAgIHNldEN1cnJlbnRJdGVtKCptX3Byb3Zpc2lvbmFsSXRlbSk7
CisgICAgICAgIG1fcHJvdmlzaW9uYWxJdGVtID0gbnVsbHB0cjsKIAogICAgICAgICAvLyBUZWxs
IGFsbCBvdGhlciBmcmFtZXMgaW4gdGhlIHRyZWUgdG8gY29tbWl0IHRoZWlyIHByb3Zpc2lvbmFs
IGl0ZW1zIGFuZAogICAgICAgICAvLyByZXN0b3JlIHRoZWlyIHNjcm9sbCBwb3NpdGlvbi4gIFdl
J2xsIGF2b2lkIHRoaXMgZnJhbWUgKHdoaWNoIGhhcyBhbHJlYWR5CkBAIC01MTAsOCArNTA5LDgg
QEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlVXBkYXRlRm9yQ29tbWl0KCkKICAg
ICAgICAgICAgIHZpZXctPnNldFdhc1Njcm9sbGVkQnlVc2VyKGZhbHNlKTsKIAogICAgICAgICAv
LyBOb3cgY29tbWl0IHRoZSBwcm92aXNpb25hbCBpdGVtCi0gICAgICAgIHNldEN1cnJlbnRJdGVt
KG1fcHJvdmlzaW9uYWxJdGVtLmdldCgpKTsKLSAgICAgICAgbV9wcm92aXNpb25hbEl0ZW0gPSAw
OworICAgICAgICBzZXRDdXJyZW50SXRlbSgqbV9wcm92aXNpb25hbEl0ZW0pOworICAgICAgICBt
X3Byb3Zpc2lvbmFsSXRlbSA9IG51bGxwdHI7CiAKICAgICAgICAgLy8gUmVzdG9yZSBmb3JtIHN0
YXRlICh3b3JrcyBmcm9tIGN1cnJlbnRJdGVtKQogICAgICAgICByZXN0b3JlRG9jdW1lbnRTdGF0
ZSgpOwpAQCAtNTU1LDEyICs1NTQsMTIgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJz
aXZlVXBkYXRlRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbigpCiAKICAgICAvLyBUaGUgcHJvdmlz
aW9uYWwgaXRlbSBtYXkgcmVwcmVzZW50IGEgZGlmZmVyZW50IHBlbmRpbmcgbmF2aWdhdGlvbi4K
ICAgICAvLyBEb24ndCBjb21taXQgaXQgaWYgaXQgaXNuJ3QgYSBzYW1lIGRvY3VtZW50IG5hdmln
YXRpb24uCi0gICAgaWYgKG1fY3VycmVudEl0ZW0gJiYgIW1fY3VycmVudEl0ZW0tPnNob3VsZERv
U2FtZURvY3VtZW50TmF2aWdhdGlvblRvKG1fcHJvdmlzaW9uYWxJdGVtLmdldCgpKSkKKyAgICBp
ZiAobV9jdXJyZW50SXRlbSAmJiAhbV9jdXJyZW50SXRlbS0+c2hvdWxkRG9TYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uVG8oKm1fcHJvdmlzaW9uYWxJdGVtKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gQ29tbWl0IHRoZSBwcm92aXNpb25hbCBpdGVtLgotICAgIHNldEN1cnJlbnRJdGVtKG1fcHJv
dmlzaW9uYWxJdGVtLmdldCgpKTsKLSAgICBtX3Byb3Zpc2lvbmFsSXRlbSA9IDA7CisgICAgc2V0
Q3VycmVudEl0ZW0oKm1fcHJvdmlzaW9uYWxJdGVtKTsKKyAgICBtX3Byb3Zpc2lvbmFsSXRlbSA9
IG51bGxwdHI7CiAKICAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIHJlc3Qgb2YgdGhlIHRyZWUuCiAg
ICAgZm9yIChGcmFtZSogY2hpbGQgPSBtX2ZyYW1lLnRyZWUoKS5maXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT50cmVlKCkubmV4dFNpYmxpbmcoKSkKQEAgLTU3NSwxMSArNTc0LDEx
IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckZyYW1lTG9hZENvbXBsZXRlZCgp
CiAgICAgbV9mcmFtZUxvYWRDb21wbGV0ZSA9IHRydWU7CiB9CiAKLXZvaWQgSGlzdG9yeUNvbnRy
b2xsZXI6OnNldEN1cnJlbnRJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQordm9pZCBIaXN0b3J5Q29u
dHJvbGxlcjo6c2V0Q3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0pCiB7CiAgICAgbV9mcmFt
ZUxvYWRDb21wbGV0ZSA9IGZhbHNlOwogICAgIG1fcHJldmlvdXNJdGVtID0gbV9jdXJyZW50SXRl
bTsKLSAgICBtX2N1cnJlbnRJdGVtID0gaXRlbTsKKyAgICBtX2N1cnJlbnRJdGVtID0gJml0ZW07
CiB9CiAKIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNldEN1cnJlbnRJdGVtVGl0bGUoY29uc3Qg
U3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCkBAIC02MTAsNyArNjA5LDcgQEAgdm9pZCBIaXN0
b3J5Q29udHJvbGxlcjo6c2V0UHJvdmlzaW9uYWxJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAg
IG1fcHJvdmlzaW9uYWxJdGVtID0gaXRlbTsKIH0KIAotdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6
aW5pdGlhbGl6ZUl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCit2b2lkIEhpc3RvcnlDb250cm9sbGVy
Ojppbml0aWFsaXplSXRlbShIaXN0b3J5SXRlbSYgaXRlbSkKIHsKICAgICBEb2N1bWVudExvYWRl
ciogZG9jdW1lbnRMb2FkZXIgPSBtX2ZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAg
ICAgQVNTRVJUKGRvY3VtZW50TG9hZGVyKTsKQEAgLTY0MiwzNCArNjQxLDM0IEBAIHZvaWQgSGlz
dG9yeUNvbnRyb2xsZXI6OmluaXRpYWxpemVJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAgIFN0
cmluZyBwYXJlbnQgPSBwYXJlbnRGcmFtZSA/IHBhcmVudEZyYW1lLT50cmVlKCkudW5pcXVlTmFt
ZSgpIDogIiI7CiAgICAgU3RyaW5nV2l0aERpcmVjdGlvbiB0aXRsZSA9IGRvY3VtZW50TG9hZGVy
LT50aXRsZSgpOwogCi0gICAgaXRlbS0+c2V0VVJMKHVybCk7Ci0gICAgaXRlbS0+c2V0VGFyZ2V0
KG1fZnJhbWUudHJlZSgpLnVuaXF1ZU5hbWUoKSk7Ci0gICAgaXRlbS0+c2V0UGFyZW50KHBhcmVu
dCk7CisgICAgaXRlbS5zZXRVUkwodXJsKTsKKyAgICBpdGVtLnNldFRhcmdldChtX2ZyYW1lLnRy
ZWUoKS51bmlxdWVOYW1lKCkpOworICAgIGl0ZW0uc2V0UGFyZW50KHBhcmVudCk7CiAgICAgLy8g
RklYTUU6IHNob3VsZCBzdG9yZSB0aXRsZSBkaXJlY3Rpb25hbGl0eSBpbiBoaXN0b3J5IGFzIHdl
bGwuCi0gICAgaXRlbS0+c2V0VGl0bGUodGl0bGUuc3RyaW5nKCkpOwotICAgIGl0ZW0tPnNldE9y
aWdpbmFsVVJMU3RyaW5nKG9yaWdpbmFsVVJMLnN0cmluZygpKTsKKyAgICBpdGVtLnNldFRpdGxl
KHRpdGxlLnN0cmluZygpKTsKKyAgICBpdGVtLnNldE9yaWdpbmFsVVJMU3RyaW5nKG9yaWdpbmFs
VVJMLnN0cmluZygpKTsKIAogICAgIGlmICghdW5yZWFjaGFibGVVUkwuaXNFbXB0eSgpIHx8IGRv
Y3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwKQotICAgICAg
ICBpdGVtLT5zZXRMYXN0VmlzaXRXYXNGYWlsdXJlKHRydWUpOworICAgICAgICBpdGVtLnNldExh
c3RWaXNpdFdhc0ZhaWx1cmUodHJ1ZSk7CiAKICAgICAvLyBTYXZlIGZvcm0gc3RhdGUgaWYgdGhp
cyBpcyBhIFBPU1QKLSAgICBpdGVtLT5zZXRGb3JtSW5mb0Zyb21SZXF1ZXN0KGRvY3VtZW50TG9h
ZGVyLT5yZXF1ZXN0KCkpOworICAgIGl0ZW0uc2V0Rm9ybUluZm9Gcm9tUmVxdWVzdChkb2N1bWVu
dExvYWRlci0+cmVxdWVzdCgpKTsKIH0KIAotUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gSGlzdG9y
eUNvbnRyb2xsZXI6OmNyZWF0ZUl0ZW0oKQorUmVmPEhpc3RvcnlJdGVtPiBIaXN0b3J5Q29udHJv
bGxlcjo6Y3JlYXRlSXRlbSgpCiB7Ci0gICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtID0gSGlz
dG9yeUl0ZW06OmNyZWF0ZSgpOwotICAgIGluaXRpYWxpemVJdGVtKGl0ZW0uZ2V0KCkpOworICAg
IFJlZjxIaXN0b3J5SXRlbT4gaXRlbSA9IEhpc3RvcnlJdGVtOjpjcmVhdGUoKTsKKyAgICBpbml0
aWFsaXplSXRlbShpdGVtKTsKICAgICAKICAgICAvLyBTZXQgdGhlIGl0ZW0gZm9yIHdoaWNoIHdl
IHdpbGwgc2F2ZSBkb2N1bWVudCBzdGF0ZQotICAgIHNldEN1cnJlbnRJdGVtKGl0ZW0uZ2V0KCkp
OworICAgIHNldEN1cnJlbnRJdGVtKGl0ZW0pOwogICAgIAotICAgIHJldHVybiBpdGVtLnJlbGVh
c2UoKTsKKyAgICByZXR1cm4gaXRlbTsKIH0KIAotUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gSGlz
dG9yeUNvbnRyb2xsZXI6OmNyZWF0ZUl0ZW1UcmVlKEZyYW1lJiB0YXJnZXRGcmFtZSwgYm9vbCBj
bGlwQXRUYXJnZXQpCitSZWY8SGlzdG9yeUl0ZW0+IEhpc3RvcnlDb250cm9sbGVyOjpjcmVhdGVJ
dGVtVHJlZShGcmFtZSYgdGFyZ2V0RnJhbWUsIGJvb2wgY2xpcEF0VGFyZ2V0KQogewotICAgIFJl
ZlB0cjxIaXN0b3J5SXRlbT4gYmZJdGVtID0gY3JlYXRlSXRlbSgpOworICAgIFJlZjxIaXN0b3J5
SXRlbT4gYmZJdGVtID0gY3JlYXRlSXRlbSgpOwogICAgIGlmICghbV9mcmFtZUxvYWRDb21wbGV0
ZSkKICAgICAgICAgc2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlVG9JdGVtKG1fcHJldmlv
dXNJdGVtLmdldCgpKTsKIApAQCAtNzE3LDcgKzcxNiw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xs
ZXI6OnJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFsSXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgSGlzdG9y
eUl0CiAgICAgLy8gU2V0IHByb3Zpc2lvbmFsIGl0ZW0sIHdoaWNoIHdpbGwgYmUgY29tbWl0dGVk
IGluIHJlY3Vyc2l2ZVVwZGF0ZUZvckNvbW1pdC4KICAgICBtX3Byb3Zpc2lvbmFsSXRlbSA9ICZp
dGVtOwogCi0gICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZEl0ZW0gOiBpdGVtLmNoaWxkcmVuKCkp
IHsKKyAgICBmb3IgKGF1dG8mIGNoaWxkSXRlbSA6IGl0ZW0uY2hpbGRyZW4oKSkgewogICAgICAg
ICBjb25zdCBTdHJpbmcmIGNoaWxkRnJhbWVOYW1lID0gY2hpbGRJdGVtLT50YXJnZXQoKTsKIAog
ICAgICAgICBIaXN0b3J5SXRlbSogZnJvbUNoaWxkSXRlbSA9IGZyb21JdGVtLT5jaGlsZEl0ZW1X
aXRoVGFyZ2V0KGNoaWxkRnJhbWVOYW1lKTsKQEAgLTcyNSw3ICs3MjQsNyBAQCB2b2lkIEhpc3Rv
cnlDb250cm9sbGVyOjpyZWN1cnNpdmVTZXRQcm92aXNpb25hbEl0ZW0oSGlzdG9yeUl0ZW0mIGl0
ZW0sIEhpc3RvcnlJdAogICAgICAgICBGcmFtZSogY2hpbGRGcmFtZSA9IG1fZnJhbWUudHJlZSgp
LmNoaWxkKGNoaWxkRnJhbWVOYW1lKTsKICAgICAgICAgQVNTRVJUKGNoaWxkRnJhbWUpOwogCi0g
ICAgICAgIGNoaWxkRnJhbWUtPmxvYWRlcigpLmhpc3RvcnkoKS5yZWN1cnNpdmVTZXRQcm92aXNp
b25hbEl0ZW0oKmNoaWxkSXRlbSwgZnJvbUNoaWxkSXRlbSk7CisgICAgICAgIGNoaWxkRnJhbWUt
PmxvYWRlcigpLmhpc3RvcnkoKS5yZWN1cnNpdmVTZXRQcm92aXNpb25hbEl0ZW0oY29uc3RfY2Fz
dDxIaXN0b3J5SXRlbSY+KGNoaWxkSXRlbS5nZXQoKSksIGZyb21DaGlsZEl0ZW0pOwogICAgIH0K
IH0KIApAQCAtNzM5LDE0ICs3MzgsMTQgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJz
aXZlR29Ub0l0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEhpc3RvcnlJdGVtKiBmcm9tSXQKICAgICB9
CiAKICAgICAvLyBKdXN0IGl0ZXJhdGUgb3ZlciB0aGUgcmVzdCwgbG9va2luZyBmb3IgZnJhbWVz
IHRvIG5hdmlnYXRlLgotICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGRJdGVtIDogaXRlbS5jaGls
ZHJlbigpKSB7CisgICAgZm9yIChhdXRvJiBjaGlsZEl0ZW0gOiBpdGVtLmNoaWxkcmVuKCkpIHsK
ICAgICAgICAgY29uc3QgU3RyaW5nJiBjaGlsZEZyYW1lTmFtZSA9IGNoaWxkSXRlbS0+dGFyZ2V0
KCk7CiAKICAgICAgICAgSGlzdG9yeUl0ZW0qIGZyb21DaGlsZEl0ZW0gPSBmcm9tSXRlbS0+Y2hp
bGRJdGVtV2l0aFRhcmdldChjaGlsZEZyYW1lTmFtZSk7CiAgICAgICAgIEFTU0VSVChmcm9tQ2hp
bGRJdGVtKTsKICAgICAgICAgRnJhbWUqIGNoaWxkRnJhbWUgPSBtX2ZyYW1lLnRyZWUoKS5jaGls
ZChjaGlsZEZyYW1lTmFtZSk7CiAgICAgICAgIEFTU0VSVChjaGlsZEZyYW1lKTsKLSAgICAgICAg
Y2hpbGRGcmFtZS0+bG9hZGVyKCkuaGlzdG9yeSgpLnJlY3Vyc2l2ZUdvVG9JdGVtKCpjaGlsZEl0
ZW0sIGZyb21DaGlsZEl0ZW0sIHR5cGUpOworICAgICAgICBjaGlsZEZyYW1lLT5sb2FkZXIoKS5o
aXN0b3J5KCkucmVjdXJzaXZlR29Ub0l0ZW0oY29uc3RfY2FzdDxIaXN0b3J5SXRlbSY+KGNoaWxk
SXRlbS5nZXQoKSksIGZyb21DaGlsZEl0ZW0sIHR5cGUpOwogICAgIH0KIH0KIApAQCAtNzYzLDcg
Kzc2Miw3IEBAIGJvb2wgSGlzdG9yeUNvbnRyb2xsZXI6Oml0ZW1zQXJlQ2xvbmVzKEhpc3RvcnlJ
dGVtJiBpdGVtMSwgSGlzdG9yeUl0ZW0qIGl0ZW0yKSBjCiAgICAgICAgICYmICZpdGVtMSAhPSBp
dGVtMgogICAgICAgICAmJiBpdGVtMS5pdGVtU2VxdWVuY2VOdW1iZXIoKSA9PSBpdGVtMi0+aXRl
bVNlcXVlbmNlTnVtYmVyKCkKICAgICAgICAgJiYgY3VycmVudEZyYW1lc01hdGNoSXRlbSgmaXRl
bTEpCi0gICAgICAgICYmIGl0ZW0yLT5oYXNTYW1lRnJhbWVzKCZpdGVtMSk7CisgICAgICAgICYm
IGl0ZW0yLT5oYXNTYW1lRnJhbWVzKGl0ZW0xKTsKIH0KIAogLy8gSGVscGVyIG1ldGhvZCB0aGF0
IGRldGVybWluZXMgd2hldGhlciB0aGUgY3VycmVudCBmcmFtZSB0cmVlIG1hdGNoZXMgZ2l2ZW4g
aGlzdG9yeSBpdGVtJ3MuCkBAIC04MDEsOSArODAwLDkgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxl
cjo6dXBkYXRlQmFja0ZvcndhcmRMaXN0Q2xpcHBlZEF0VGFyZ2V0KGJvb2wgZG9DbGlwKQogCiAg
ICAgRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyID0gbV9mcmFtZS5tYWluRnJhbWUoKS5sb2FkZXIo
KTsKIAotICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gdG9wSXRlbSA9IGZyYW1lTG9hZGVyLmhpc3Rv
cnkoKS5jcmVhdGVJdGVtVHJlZShtX2ZyYW1lLCBkb0NsaXApOwotICAgIExPRyhCYWNrRm9yd2Fy
ZCwgIldlYkNvcmVCYWNrRm9yd2FyZCAtIEFkZGluZyBiYWNrZm9yd2FyZCBpdGVtICVwIGZvciBm
cmFtZSAlcyIsIHRvcEl0ZW0uZ2V0KCksIG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwotICAgIHBhZ2UtPmJhY2tGb3J3YXJk
KCkuYWRkSXRlbSh0b3BJdGVtLnJlbGVhc2UoKSk7CisgICAgUmVmPEhpc3RvcnlJdGVtPiB0b3BJ
dGVtID0gZnJhbWVMb2FkZXIuaGlzdG9yeSgpLmNyZWF0ZUl0ZW1UcmVlKG1fZnJhbWUsIGRvQ2xp
cCk7CisgICAgTE9HKEJhY2tGb3J3YXJkLCAiV2ViQ29yZUJhY2tGb3J3YXJkIC0gQWRkaW5nIGJh
Y2tmb3J3YXJkIGl0ZW0gJXAgZm9yIGZyYW1lICVzIiwgdG9wSXRlbS5wdHIoKSwgbV9mcmFtZS5s
b2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7
CisgICAgcGFnZS0+YmFja0ZvcndhcmQoKS5hZGRJdGVtKFdURjo6bW92ZSh0b3BJdGVtKSk7CiB9
CiAKIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUN1cnJlbnRJdGVtKCkKQEAgLTgyMyw3
ICs4MjIsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVDdXJyZW50SXRlbSgpCiAg
ICAgICAgIC8vIGRlcGVuZGVudCBvbiB0aGUgZG9jdW1lbnQuCiAgICAgICAgIGJvb2wgaXNUYXJn
ZXRJdGVtID0gbV9jdXJyZW50SXRlbS0+aXNUYXJnZXRJdGVtKCk7CiAgICAgICAgIG1fY3VycmVu
dEl0ZW0tPnJlc2V0KCk7Ci0gICAgICAgIGluaXRpYWxpemVJdGVtKG1fY3VycmVudEl0ZW0uZ2V0
KCkpOworICAgICAgICBpbml0aWFsaXplSXRlbSgqbV9jdXJyZW50SXRlbSk7CiAgICAgICAgIG1f
Y3VycmVudEl0ZW0tPnNldElzVGFyZ2V0SXRlbShpc1RhcmdldEl0ZW0pOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIC8vIEV2ZW4gaWYgdGhlIGZpbmFsIFVSTCBkaWRuJ3QgY2hhbmdlLCB0aGUgZm9y
bSBkYXRhIG1heSBoYXZlIGNoYW5nZWQuCkBAIC04NDAsNyArODM5LDcgQEAgdm9pZCBIaXN0b3J5
Q29udHJvbGxlcjo6cHVzaFN0YXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBz
dGF0ZU9iamVjdCwKICAgICBBU1NFUlQocGFnZSk7CiAKICAgICAvLyBHZXQgYSBIaXN0b3J5SXRl
bSB0cmVlIGZvciB0aGUgY3VycmVudCBmcmFtZSB0cmVlLgotICAgIFJlZlB0cjxIaXN0b3J5SXRl
bT4gdG9wSXRlbSA9IG1fZnJhbWUubWFpbkZyYW1lKCkubG9hZGVyKCkuaGlzdG9yeSgpLmNyZWF0
ZUl0ZW1UcmVlKG1fZnJhbWUsIGZhbHNlKTsKKyAgICBSZWY8SGlzdG9yeUl0ZW0+IHRvcEl0ZW0g
PSBtX2ZyYW1lLm1haW5GcmFtZSgpLmxvYWRlcigpLmhpc3RvcnkoKS5jcmVhdGVJdGVtVHJlZSht
X2ZyYW1lLCBmYWxzZSk7CiAgICAgCiAgICAgLy8gT3ZlcnJpZGUgZGF0YSBpbiB0aGUgY3VycmVu
dCBpdGVtIChjcmVhdGVkIGJ5IGNyZWF0ZUl0ZW1UcmVlKSB0byByZWZsZWN0CiAgICAgLy8gdGhl
IHB1c2hTdGF0ZSgpIGFyZ3VtZW50cy4KQEAgLTg0OCw3ICs4NDcsNyBAQCB2b2lkIEhpc3RvcnlD
b250cm9sbGVyOjpwdXNoU3RhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0
YXRlT2JqZWN0LAogICAgIG1fY3VycmVudEl0ZW0tPnNldFN0YXRlT2JqZWN0KHN0YXRlT2JqZWN0
KTsKICAgICBtX2N1cnJlbnRJdGVtLT5zZXRVUkxTdHJpbmcodXJsU3RyaW5nKTsKIAotICAgIHBh
Z2UtPmJhY2tGb3J3YXJkKCkuYWRkSXRlbSh0b3BJdGVtLnJlbGVhc2UoKSk7CisgICAgcGFnZS0+
YmFja0ZvcndhcmQoKS5hZGRJdGVtKFdURjo6bW92ZSh0b3BJdGVtKSk7CiAKICAgICBpZiAobV9m
cmFtZS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmgKaW5kZXggMWI0MGE4MGIwZTMy
NzE4YjMzZWZiNDIyYWFmZTY3NmZiYzNjN2ZlOC4uZTM5NTJjNjU1OTQzMmU3OGJhOWQ1N2Q2MDA3
OTI4MjBhNmYwODc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVy
LmgKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlRm9yRnJhbWVMb2Fk
Q29tcGxldGVkKCk7CiAKICAgICBIaXN0b3J5SXRlbSogY3VycmVudEl0ZW0oKSBjb25zdCB7IHJl
dHVybiBtX2N1cnJlbnRJdGVtLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRDdXJyZW50SXRlbShIaXN0
b3J5SXRlbSopOworICAgIHZvaWQgc2V0Q3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0mKTsKICAgICB2
b2lkIHNldEN1cnJlbnRJdGVtVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAg
IGJvb2wgY3VycmVudEl0ZW1TaG91bGRCZVJlcGxhY2VkKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCByZXBsYWNlQ3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0qKTsKQEAgLTkyLDEyICs5
MiwxMiBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFBhZ2U7Ci0gICAg
Ym9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKikgY29uc3Q7
CisgICAgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtJikg
Y29uc3Q7CiAgICAgdm9pZCBnb1RvSXRlbShIaXN0b3J5SXRlbSYsIEZyYW1lTG9hZFR5cGUpOwog
Ci0gICAgdm9pZCBpbml0aWFsaXplSXRlbShIaXN0b3J5SXRlbSopOwotICAgIFBhc3NSZWZQdHI8
SGlzdG9yeUl0ZW0+IGNyZWF0ZUl0ZW0oKTsKLSAgICBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBj
cmVhdGVJdGVtVHJlZShGcmFtZSYgdGFyZ2V0RnJhbWUsIGJvb2wgY2xpcEF0VGFyZ2V0KTsKKyAg
ICB2b2lkIGluaXRpYWxpemVJdGVtKEhpc3RvcnlJdGVtJik7CisgICAgUmVmPEhpc3RvcnlJdGVt
PiBjcmVhdGVJdGVtKCk7CisgICAgUmVmPEhpc3RvcnlJdGVtPiBjcmVhdGVJdGVtVHJlZShGcmFt
ZSYgdGFyZ2V0RnJhbWUsIGJvb2wgY2xpcEF0VGFyZ2V0KTsKIAogICAgIHZvaWQgcmVjdXJzaXZl
U2V0UHJvdmlzaW9uYWxJdGVtKEhpc3RvcnlJdGVtJiwgSGlzdG9yeUl0ZW0qKTsKICAgICB2b2lk
IHJlY3Vyc2l2ZUdvVG9JdGVtKEhpc3RvcnlJdGVtJiwgSGlzdG9yeUl0ZW0qLCBGcmFtZUxvYWRU
eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDI3YzA0YjU5NThkY2JhZjJkYjU1ZjZmYmUyM2E1
MTdiZjZkMjE1NTIuLjA2YjkxYmFmMGNlODkxNjkxMTZjMjE1YmFjYjRiZDE4ZGI4NTk5NGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcApAQCAtNDM2LDcgKzQzNiw3IEBAIHZvaWQgUGFnZTo6Z29Ub0l0ZW0o
SGlzdG9yeUl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgdHlwZSkKICAgICAvLyBiZWluZyBkZXJl
ZigpLWVkLiBNYWtlIHN1cmUgd2UgY2FuIHN0aWxsIHVzZSBpdCB3aXRoIEhpc3RvcnlDb250cm9s
bGVyOjpnb1RvSXRlbSBsYXRlci4KICAgICBSZWY8SGlzdG9yeUl0ZW0+IHByb3RlY3RvcihpdGVt
KTsKIAotICAgIGlmIChtX21haW5GcmFtZS0+bG9hZGVyKCkuaGlzdG9yeSgpLnNob3VsZFN0b3BM
b2FkaW5nRm9ySGlzdG9yeUl0ZW0oJml0ZW0pKQorICAgIGlmIChtX21haW5GcmFtZS0+bG9hZGVy
KCkuaGlzdG9yeSgpLnNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oaXRlbSkpCiAgICAg
ICAgIG1fbWFpbkZyYW1lLT5sb2FkZXIoKS5zdG9wQWxsTG9hZGVycygpOwogCiAgICAgbV9tYWlu
RnJhbWUtPmxvYWRlcigpLmhpc3RvcnkoKS5nb1RvSXRlbShpdGVtLCB0eXBlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0Lm1tIGIvU291
cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0KaW5kZXggZWJmYmQ0
ZDAwNDEwMjNjMjVjMmM2OWU4NDc5MDgyYzhjNDI2MzU3Zi4uOTNiZTY4NTUyNDMzMGJhZDM2MmZl
YzJhZDcxNzhhMzdiZWI5YmZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvSGlzdG9y
eS9XZWJCYWNrRm9yd2FyZExpc3QubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9X
ZWJCYWNrRm9yd2FyZExpc3QubW0KQEAgLTE1Myw3ICsxNTMsOCBAQCAtICh2b2lkKV9jbG9zZQog
CiAtICh2b2lkKWFkZEl0ZW06KFdlYkhpc3RvcnlJdGVtICopZW50cnkKIHsKLSAgICBjb3JlKHNl
bGYpLT5hZGRJdGVtKGNvcmUoZW50cnkpKTsKKyAgICBBU1NFUlQoZW50cnkpOworICAgIGNvcmUo
c2VsZiktPmFkZEl0ZW0oKmNvcmUoZW50cnkpKTsKICAgICAKICAgICAvLyBTaW5jZSB0aGUgYXNz
dW1lZCBjb250cmFjdCB3aXRoIFdlYkJhY2tGb3J3YXJkTGlzdCBpcyB0aGF0IGl0IHJldGFpbnMg
aXRzIFdlYkhpc3RvcnlJdGVtcywKICAgICAvLyB0aGUgZm9sbG93aW5nIGxpbmUgcHJldmVudHMg
YSB3aG9sZSBjbGFzcyBvZiBwcm9ibGVtcyB3aGVyZSBhIGhpc3RvcnkgaXRlbSB3aWxsIGJlIGNy
ZWF0ZWQgaW4KQEAgLTI1NSw3ICsyNTYsNyBAQCBzdGF0aWMgTlNBcnJheSogdmVjdG9yVG9OU0Fy
cmF5KEhpc3RvcnlJdGVtVmVjdG9yJiBsaXN0KQogICAgIHVuc2lnbmVkIHNpemUgPSBsaXN0LnNp
emUoKTsKICAgICBOU011dGFibGVBcnJheSAqcmVzdWx0ID0gW1tbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRXaXRoQ2FwYWNpdHk6c2l6ZV0gYXV0b3JlbGVhc2VdOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0OmtpdChs
aXN0W2ldLmdldCgpKV07CisgICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0OmtpdChsaXN0W2ldLnB0
cigpKV07CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMzI3LDE0ICszMjgsMTQgQEAgLShO
U1N0cmluZyAqKWRlc2NyaXB0aW9uCiAgICAgCiAgICAgdW5zaWduZWQgc2l6ZSA9IGVudHJpZXMu
c2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAg
ICAgaWYgKGVudHJpZXNbaV0gPT0gYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpKSB7Cisg
ICAgICAgIGlmIChlbnRyaWVzW2ldLnB0cigpID09IGJhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0
ZW0oKSkgewogICAgICAgICAgICAgW3Jlc3VsdCBhcHBlbmRTdHJpbmc6QCIgPj4+Il07IAogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgW3Jlc3VsdCBhcHBlbmRTdHJpbmc6QCIgICAgIl07
IAogICAgICAgICB9ICAgCiAgICAgICAgIFtyZXN1bHQgYXBwZW5kRm9ybWF0OkAiJTJkKSAiLCBp
XTsKICAgICAgICAgaW50IGN1cnJQb3MgPSBbcmVzdWx0IGxlbmd0aF07Ci0gICAgICAgIFtyZXN1
bHQgYXBwZW5kU3RyaW5nOltraXQoZW50cmllc1tpXS5nZXQoKSkgZGVzY3JpcHRpb25dXTsKKyAg
ICAgICAgW3Jlc3VsdCBhcHBlbmRTdHJpbmc6W2tpdChlbnRyaWVzW2ldLnB0cigpKSBkZXNjcmlw
dGlvbl1dOwogCiAgICAgICAgIC8vIHNoaWZ0IGFsbCB0aGUgY29udGVudHMgb3Zlci4gIGEgYml0
IHNsb3csIGJ1dCB0aGlzIGlzIGZvciBkZWJ1Z2dpbmcKICAgICAgICAgTlNSYW5nZSByZXBsUmFu
Z2UgPSB7IHN0YXRpY19jYXN0PE5TVUludGVnZXI+KGN1cnJQb3MpLCBbcmVzdWx0IGxlbmd0aF0g
LSBjdXJyUG9zIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhp
c3RvcnlJdGVtLm1tIGIvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5t
bQppbmRleCBlNjc3YjAxZTczYmRjZjIyN2IyOGY0MWY4OGNhMTYxOTVkOTVkYzNiLi5hZTc2MDFm
Y2Q3MWQxMzg2MDY5MTUzM2U1NTAyN2Q0ZWYzYTYyYmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KQEAgLTI1OCw3ICsyNTgsNyBAQCAtIChOU1N0cmlu
ZyAqKWRlc2NyaXB0aW9uCiAgICAgICAgIGludCBjdXJyUG9zID0gW3Jlc3VsdCBsZW5ndGhdOwog
ICAgICAgICB1bnNpZ25lZCBzaXplID0gY2hpbGRyZW4uc2l6ZSgpOyAgICAgICAgCiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgIFdlYkhp
c3RvcnlJdGVtICpjaGlsZCA9IGtpdChjaGlsZHJlbltpXS5nZXQoKSk7CisgICAgICAgICAgICBX
ZWJIaXN0b3J5SXRlbSAqY2hpbGQgPSBraXQoY29uc3RfY2FzdDxIaXN0b3J5SXRlbSo+KGNoaWxk
cmVuW2ldLnB0cigpKSk7CiAgICAgICAgICAgICBbcmVzdWx0IGFwcGVuZFN0cmluZzpAIlxuIl07
CiAgICAgICAgICAgICBbcmVzdWx0IGFwcGVuZFN0cmluZzpbY2hpbGQgZGVzY3JpcHRpb25dXTsK
ICAgICAgICAgfQpAQCAtMzgwLDcgKzM4MCw3IEBAIC0gKGlkKWluaXRGcm9tRGljdGlvbmFyeVJl
cHJlc2VudGF0aW9uOihOU0RpY3Rpb25hcnkgKilkaWN0CiAgICAgaWYgKGNoaWxkRGljdHMpIHsK
ICAgICAgICAgZm9yIChpbnQgaSA9IFtjaGlsZERpY3RzIGNvdW50XSAtIDE7IGkgPj0gMDsgaS0t
KSB7CiAgICAgICAgICAgICBXZWJIaXN0b3J5SXRlbSAqY2hpbGQgPSBbW1dlYkhpc3RvcnlJdGVt
IGFsbG9jXSBpbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjpbY2hpbGREaWN0cyBvYmpl
Y3RBdEluZGV4OmldXTsKLSAgICAgICAgICAgIGNvcmUoX3ByaXZhdGUpLT5hZGRDaGlsZEl0ZW0o
Y29yZShjaGlsZC0+X3ByaXZhdGUpKTsKKyAgICAgICAgICAgIGNvcmUoX3ByaXZhdGUpLT5hZGRD
aGlsZEl0ZW0oKmNvcmUoY2hpbGQtPl9wcml2YXRlKSk7CiAgICAgICAgICAgICBbY2hpbGQgcmVs
ZWFzZV07CiAgICAgICAgIH0KICAgICB9CkBAIC00ODEsNyArNDgxLDcgQEAgLSAoTlNEaWN0aW9u
YXJ5ICopZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uCiAgICAgICAgIE5TTXV0YWJsZUFycmF5ICpj
aGlsZERpY3RzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmNoaWxkcmVuLnNp
emUoKV07CiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gY2hpbGRyZW4uc2l6ZSgpIC0g
MTsgaSA+PSAwOyBpLS0pCi0gICAgICAgICAgICBbY2hpbGREaWN0cyBhZGRPYmplY3Q6W2tpdChj
aGlsZHJlbltpXS5nZXQoKSkgZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uXV07CisgICAgICAgICAg
ICBbY2hpbGREaWN0cyBhZGRPYmplY3Q6W2tpdChjb25zdF9jYXN0PEhpc3RvcnlJdGVtKj4oY2hp
bGRyZW5baV0ucHRyKCkpKSBkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb25dXTsKICAgICAgICAgW2Rp
Y3Qgc2V0T2JqZWN0OiBjaGlsZERpY3RzIGZvcktleTpjaGlsZHJlbktleV07CiAgICAgfQogCkBA
IC01NDEsNyArNTQxLDcgQEAgLSAoTlNBcnJheSAqKWNoaWxkcmVuCiAgICAgTlNNdXRhYmxlQXJy
YXkgKnJlc3VsdCA9IFtbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnNp
emVdIGF1dG9yZWxlYXNlXTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6
ZTsgKytpKQotICAgICAgICBbcmVzdWx0IGFkZE9iamVjdDpraXQoY2hpbGRyZW5baV0uZ2V0KCkp
XTsKKyAgICAgICAgW3Jlc3VsdCBhZGRPYmplY3Q6a2l0KGNvbnN0X2Nhc3Q8SGlzdG9yeUl0ZW0q
PihjaGlsZHJlbltpXS5wdHIoKSkpXTsKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDc0YWQ1NWE5NDZlZDhlMzk3MDRhNmRk
M2JhODQ4YWJjODgwMTBlYTIuLjQ4M2NhMGVlMTRmZWM2MDkxYTIzZGZlNmIwZGEyOGQ5MDk3ZTQ5
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTIwMDIsMTAgKzIwMDIs
MTAgQEAgLSAodm9pZClfbG9hZEJhY2tGb3J3YXJkTGlzdEZyb21PdGhlclZpZXc6KFdlYlZpZXcg
KilvdGhlclZpZXcKICAgICAgICAgICAgIC8vIHVudGlsIHdlIGxlYXZlIHRoYXQgcGFnZS4KICAg
ICAgICAgICAgIG90aGVyVmlldy0+X3ByaXZhdGUtPnBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigp
Lmhpc3RvcnkoKS5zYXZlRG9jdW1lbnRBbmRTY3JvbGxTdGF0ZSgpOwogICAgICAgICB9Ci0gICAg
ICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gbmV3SXRlbSA9IG90aGVyQmFja0ZvcndhcmRDbGllbnQt
Pml0ZW1BdEluZGV4KGkpLT5jb3B5KCk7CisgICAgICAgIFJlZjxIaXN0b3J5SXRlbT4gbmV3SXRl
bSA9IG90aGVyQmFja0ZvcndhcmRDbGllbnQtPml0ZW1BdEluZGV4KGkpLT5jb3B5KCk7CiAgICAg
ICAgIGlmIChpID09IDApIAotICAgICAgICAgICAgbmV3SXRlbVRvR29UbyA9IG5ld0l0ZW0uZ2V0
KCk7Ci0gICAgICAgIGJhY2tGb3J3YXJkQ2xpZW50LT5hZGRJdGVtKG5ld0l0ZW0ucmVsZWFzZSgp
KTsKKyAgICAgICAgICAgIG5ld0l0ZW1Ub0dvVG8gPSBuZXdJdGVtLnB0cigpOworICAgICAgICBi
YWNrRm9yd2FyZENsaWVudC0+YWRkSXRlbShXVEY6Om1vdmUobmV3SXRlbSkpOwogICAgIH0KICAg
ICAKICAgICBBU1NFUlQobmV3SXRlbVRvR29Ubyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0
SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKaW5kZXggMjg5MTkzNTNlZWUwY2NmNTMw
OGY4NTgzMjA2YWE0MDc4MTRhMGJjMC4uYWFlNmE0NmFlNjMyZjhiNTRjM2Q3MjU3ZjY0Y2YyMDI5
MmY2OTAxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2Fy
ZExpc3RJdGVtLmNwcApAQCAtMzgsNyArMzgsNyBAQCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IElu
amVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbTo6Y2hpbGRyZW4oKSBjb25zdAogICAgIGNo
aWxkcmVuLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9pdGVtLT5jaGlsZHJlbigpLnNpemUoKSk7
CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogbV9pdGVtLT5jaGlsZHJlbigpKQotICAg
ICAgICBjaGlsZHJlbi51bmNoZWNrZWRBcHBlbmQoSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExp
c3RJdGVtOjpjcmVhdGUoY2hpbGQpKTsKKyAgICAgICAgY2hpbGRyZW4udW5jaGVja2VkQXBwZW5k
KEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKGNvbnN0X2Nhc3Q8SGlz
dG9yeUl0ZW0qPihjaGlsZC5wdHIoKSkpKTsKIAogICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVh
dGUoV1RGOjptb3ZlKGNoaWxkcmVuKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJz
aW9uLmNwcAppbmRleCBiMDk0MDk5OGZmMDUwN2QwYTRlM2M0NGQ0YjUyZDQ4MzYxZGZjMGM4Li5m
ZDBhOThlODQ3NTk0YzM0MjA3YTI4NWJiNmVjMzA1N2ZkNTgzNDk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vz
c2lvblN0YXRlQ29udmVyc2lvbi5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgRnJhbWVT
dGF0ZSB0b0ZyYW1lU3RhdGUoY29uc3QgSGlzdG9yeUl0ZW0mIGhpc3RvcnlJdGVtKQogI2VuZGlm
CiAKICAgICBmb3IgKGF1dG8mIGNoaWxkSGlzdG9yeUl0ZW0gOiBoaXN0b3J5SXRlbS5jaGlsZHJl
bigpKSB7Ci0gICAgICAgIEZyYW1lU3RhdGUgY2hpbGRGcmFtZVN0YXRlID0gdG9GcmFtZVN0YXRl
KCpjaGlsZEhpc3RvcnlJdGVtKTsKKyAgICAgICAgRnJhbWVTdGF0ZSBjaGlsZEZyYW1lU3RhdGUg
PSB0b0ZyYW1lU3RhdGUoY2hpbGRIaXN0b3J5SXRlbSk7CiAgICAgICAgIGZyYW1lU3RhdGUuY2hp
bGRyZW4uYXBwZW5kKFdURjo6bW92ZShjaGlsZEZyYW1lU3RhdGUpKTsKICAgICB9CiAKQEAgLTE3
OCwxMCArMTc4LDEwIEBAIHN0YXRpYyB2b2lkIGFwcGx5RnJhbWVTdGF0ZShIaXN0b3J5SXRlbSYg
aGlzdG9yeUl0ZW0sIGNvbnN0IEZyYW1lU3RhdGUmIGZyYW1lU3RhCiAjZW5kaWYKIAogICAgIGZv
ciAoY29uc3QgYXV0byYgY2hpbGRGcmFtZVN0YXRlIDogZnJhbWVTdGF0ZS5jaGlsZHJlbikgewot
ICAgICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGNoaWxkSGlzdG9yeUl0ZW0gPSBIaXN0b3J5SXRl
bTo6Y3JlYXRlKGNoaWxkRnJhbWVTdGF0ZS51cmxTdHJpbmcsIFN0cmluZygpKTsKLSAgICAgICAg
YXBwbHlGcmFtZVN0YXRlKCpjaGlsZEhpc3RvcnlJdGVtLCBjaGlsZEZyYW1lU3RhdGUpOworICAg
ICAgICBSZWY8SGlzdG9yeUl0ZW0+IGNoaWxkSGlzdG9yeUl0ZW0gPSBIaXN0b3J5SXRlbTo6Y3Jl
YXRlKGNoaWxkRnJhbWVTdGF0ZS51cmxTdHJpbmcsIFN0cmluZygpKTsKKyAgICAgICAgYXBwbHlG
cmFtZVN0YXRlKGNoaWxkSGlzdG9yeUl0ZW0sIGNoaWxkRnJhbWVTdGF0ZSk7CiAKLSAgICAgICAg
aGlzdG9yeUl0ZW0uYWRkQ2hpbGRJdGVtKGNoaWxkSGlzdG9yeUl0ZW0ucmVsZWFzZSgpKTsKKyAg
ICAgICAgaGlzdG9yeUl0ZW0uYWRkQ2hpbGRJdGVtKFdURjo6bW92ZShjaGlsZEhpc3RvcnlJdGVt
KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAppbmRleCBhOWM2Nzc5MDU2
YjkyZDYwZDQ5NGI1MTU4OWYzNGQ1MzE0NTg4Y2Y2Li45ZGMyYTYxZDgyYjg4OTE4NGJjMzE2MzUx
NWQ0MDBlMzVhZDc0ZWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKQEAgLTE0MywxMSAr
MTQzLDkgQEAgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5
KFdlYlBhZ2UqIHBhZ2UpCiAgICAgV2ViQ29yZTo6bm90aWZ5SGlzdG9yeUl0ZW1DaGFuZ2VkID0g
V0syTm90aWZ5SGlzdG9yeUl0ZW1DaGFuZ2VkOwogfQogCi12b2lkIFdlYkJhY2tGb3J3YXJkTGlz
dFByb3h5OjphZGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IHBycEl0ZW0pCit2b2lkIFdl
YkJhY2tGb3J3YXJkTGlzdFByb3h5OjphZGRJdGVtKFJlZjxIaXN0b3J5SXRlbT4mJiBpdGVtKQog
ewotICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gaXRlbSA9IHBycEl0ZW07Ci0KLSAgICBBU1NFUlQo
IWhpc3RvcnlJdGVtVG9JRE1hcCgpLmNvbnRhaW5zKGl0ZW0pKTsKKyAgICBBU1NFUlQoIWhpc3Rv
cnlJdGVtVG9JRE1hcCgpLmNvbnRhaW5zKGl0ZW0ucHRyKCkpKTsKIAogICAgIGlmICghbV9wYWdl
KQogICAgICAgICByZXR1cm47CkBAIC0xNTgsMTAgKzE1NiwxMCBAQCB2b2lkIFdlYkJhY2tGb3J3
YXJkTGlzdFByb3h5OjphZGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IHBycEl0ZW0pCiAK
ICAgICBtX2Fzc29jaWF0ZWRJdGVtSURzLmFkZChpdGVtSUQpOwogCi0gICAgaGlzdG9yeUl0ZW1U
b0lETWFwKCkuc2V0PEl0ZW1BbmRQYWdlSUQ+KGl0ZW0sIHsgLml0ZW1JRCA9IGl0ZW1JRCwgLnBh
Z2VJRCA9IG1fcGFnZS0+cGFnZUlEKCkgfSk7Ci0gICAgaWRUb0hpc3RvcnlJdGVtTWFwKCkuc2V0
KGl0ZW1JRCwgaXRlbSk7CisgICAgaGlzdG9yeUl0ZW1Ub0lETWFwKCkuc2V0PEl0ZW1BbmRQYWdl
SUQ+KGl0ZW0ucHRyKCksIHsgLml0ZW1JRCA9IGl0ZW1JRCwgLnBhZ2VJRCA9IG1fcGFnZS0+cGFn
ZUlEKCkgfSk7CisgICAgaWRUb0hpc3RvcnlJdGVtTWFwKCkuc2V0KGl0ZW1JRCwgaXRlbS5wdHIo
KSk7CiAKLSAgICB1cGRhdGVCYWNrRm9yd2FyZEl0ZW0oaXRlbUlELCBtX3BhZ2UtPnBhZ2VJRCgp
LCBpdGVtLmdldCgpKTsKKyAgICB1cGRhdGVCYWNrRm9yd2FyZEl0ZW0oaXRlbUlELCBtX3BhZ2Ut
PnBhZ2VJRCgpLCBpdGVtLnB0cigpKTsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6QmFja0ZvcndhcmRBZGRJdGVtKGl0ZW1JRCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQ
cm94eS5oCmluZGV4IGFhMTQ3ZTFkOGEyNTMxMzFmZmFkYTYxZDhlZTIwNWQwYzFiOWVjZTcuLjJj
YmRlZDI1YWQ0MmVlOWI5OTJjMzE3ZDdlMjk1M2Y2YzQ0NWU3ZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQ
cm94eS5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViQmFja0Zv
cndhcmRMaXN0UHJveHkoV2ViUGFnZSopOwogCi0gICAgdmlydHVhbCB2b2lkIGFkZEl0ZW0oUGFz
c1JlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBhZGRJdGVtKFJlZjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4mJikgb3ZlcnJpZGU7CiAKICAgICB2
aXJ0dWFsIHZvaWQgZ29Ub0l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBvdmVycmlkZTsKICAg
ICAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245821</attachid>
            <date>2015-01-31 23:35:06 -0800</date>
            <delta_ts>2015-02-01 00:15:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141133-20150131233515.patch</filename>
            <type>text/plain</type>
            <size>46857</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzgzZWZlYmM0NTU3ZTQ5
YzFhZWE0NWZkYTk5Y2VkZmExZTJmZTgwMy4uOWVkZGM1ZjZiYjFkZWM1MTNiYWM0MDIzMzI0M2Nk
NTE1YjBkMWEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTAxLTMxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIG1vcmUgcmVmZXJlbmNl
cyBpbiBIaXN0b3J5SXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQxMTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXNlIG1vcmUgcmVmZXJlbmNlcyBpbiBIaXN0b3J5SXRlbSBpbnN0ZWFkIG9mIHBv
aW50ZXJzLgorCiAyMDE1LTAxLTMxICBNeWxlcyBDLiBNYXhmaWVsZCAgPGxpdGhlcnVtQGdtYWls
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTc3Njg5KTogRW1vamkgdmFyaWF0aW9uIHNl
cXVlbmNlcyByZW5kZXJlZCBpbmNvcnJlY3RseSAoYXMgY2hhcmFjdGVycyBmcm9tIG90aGVyIG5v
bi1lbW9qaSBmb250KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGMyYjY4M2MwMGU1YTc2NTgxMzUwYTE0
NGFiNTViNGY0MTcyNWU4ZWUuLjFlYjE5ZDYzNjA3YzVjOTI3ZDM3YWYyZTM1M2FjNDA4YmE4ZTlj
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0wMS0zMSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBtb3JlIHJlZmVyZW5jZXMg
aW4gSGlzdG9yeUl0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0MTEzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVzZSBtb3JlIHJlZmVyZW5jZXMgaW4gSGlzdG9yeUl0ZW0gaW5zdGVhZCBvZiBwb2lu
dGVycy4KKwogMjAxNS0wMS0zMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlbW92ZSBldmVuIG1vcmUgTW91bnRhaW4gTGlvbiBzdXBwb3J0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
MzNkYzg0ZDVmZGU2YmRmNzk0YTY0Mzc5ZTJiYTA2ZmE1NzhjZGI4MC4uZWI1ZTU0Y2FhMmEwZmMw
N2RkZjFmZTQwYjYwYTUwMTdhN2Q0NjgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDE1LTAxLTMxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNl
IG1vcmUgcmVmZXJlbmNlcyBpbiBIaXN0b3J5SXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIG1vcmUgcmVmZXJlbmNlcyBpbiBIaXN0b3J5SXRl
bSBpbnN0ZWFkIG9mIHBvaW50ZXJzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW06OmNoaWxkcmVuKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0Ojp0b0ZyYW1lU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjphcHBs
eUZyYW1lU3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5
OjphZGRJdGVtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRM
aXN0UHJveHkuaDoKKwogMjAxNS0wMS0zMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJlbW92ZSBldmVuIG1vcmUgTW91bnRhaW4gTGlvbiBzdXBwb3J0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCmluZGV4IGNmNDlmZjgwZWQxY2M5NTU0NGMyNTQ4ZTg5OTMwNGZmMGQ0NzY1YWQu
LmE4YWM4N2I3ZWIzMjBmYzgwOWI0NTE4MzhmZWRmNDQzMWNkYjAyMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCkBAIC0xNjMsNyArMTYzLDcgQEAgX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjlzZXRP
cGVuZXJFUE5TXzVGcmFtZUUKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xMHRhcmdldEl0ZW1F
dgogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTExc2V0Rm9ybURhdGFFTjNXVEYxMFBhc3NSZWZQ
dHJJTlNfOEZvcm1EYXRhRUVFCiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMTFzZXRSZWZlcnJl
ckVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xMmFkZENoaWxkSXRl
bUVOM1dURjEwUGFzc1JlZlB0cklTMF9FRQorX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTEyYWRk
Q2hpbGRJdGVtRU9OM1dURjNSZWZJUzBfRUUKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xMnNl
dFVSTFN0cmluZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xMnNl
dFZpZXdTdGF0ZUVQMTFvYmpjX29iamVjdAogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTE0YWRk
UmVkaXJlY3RVUkxFUktOM1dURjZTdHJpbmdFCkBAIC0xNzUsNiArMTc1LDcgQEAgX19aTjdXZWJD
b3JlMTFIaXN0b3J5SXRlbTE2c2V0RG9jdW1lbnRTdGF0ZUVSS04zV1RGNlZlY3RvcklOUzFfNlN0
cmluZ0VMbTBFTlMxXzEKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xN3NldEFsdGVybmF0ZVRp
dGxlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTE4c2V0Rm9ybUNv
bnRlbnRUeXBlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTE4c2V0
UGFnZVNjYWxlRmFjdG9yRWYKK19fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xOWNoaWxkSXRlbVdp
dGhUYXJnZXRFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMjBzZXRP
cmlnaW5hbFVSTFN0cmluZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0
ZW0yMHNldFRyYW5zaWVudFByb3BlcnR5RVJLTjNXVEY2U3RyaW5nRVAxMW9iamNfb2JqZWN0CiBf
X1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtOGZvcm1EYXRhRXYKQEAgLTQ5OCw4ICs0OTksOCBAQCBf
X1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDExY3VycmVudEl0ZW1FdgogX19aTjdXZWJDb3Jl
MTVCYWNrRm9yd2FyZExpc3QxMWZvcndhcmRJdGVtRXYKIF9fWk43V2ViQ29yZTE1QmFja0Zvcndh
cmRMaXN0MTFzZXRDYXBhY2l0eUVpCiBfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDEyY29u
dGFpbnNJdGVtRVBOU18xMUhpc3RvcnlJdGVtRQotX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExp
c3QxN2JhY2tMaXN0V2l0aExpbWl0RWlSTjNXVEY2VmVjdG9ySU5TMV82UmVmUHRySU5TXzExSGlz
dG9yeUl0ZW1FRUVMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCi1fX1pON1dlYkNvcmUxNUJh
Y2tGb3J3YXJkTGlzdDIwZm9yd2FyZExpc3RXaXRoTGltaXRFaVJOM1dURjZWZWN0b3JJTlMxXzZS
ZWZQdHJJTlNfMTFIaXN0b3J5SXRlbUVFRUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKK19f
Wk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTdiYWNrTGlzdFdpdGhMaW1pdEVpUk4zV1RGNlZl
Y3RvcklOUzFfM1JlZklOU18xMUhpc3RvcnlJdGVtRUVFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxv
d0VFRQorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QyMGZvcndhcmRMaXN0V2l0aExpbWl0
RWlSTjNXVEY2VmVjdG9ySU5TMV8zUmVmSU5TXzExSGlzdG9yeUl0ZW1FRUVMbTBFTlMxXzE1Q3Jh
c2hPbk92ZXJmbG93RUVFCiBfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDZjbG9zZWRFdgog
X19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q2Z29CYWNrRXYKIF9fWk43V2ViQ29yZTE1QmFj
a0ZvcndhcmRMaXN0N2VuYWJsZWRFdgpAQCAtMTY5Miw3ICsxNjkzLDYgQEAgX19aTks3V2ViQ29y
ZTExSGlzdG9yeUl0ZW0xNGFsdGVybmF0ZVRpdGxlRXYKIF9fWk5LN1dlYkNvcmUxMUhpc3RvcnlJ
dGVtMTVmb3JtQ29udGVudFR5cGVFdgogX19aTks3V2ViQ29yZTExSGlzdG9yeUl0ZW0xNXBhZ2VT
Y2FsZUZhY3RvckV2CiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTE3b3JpZ2luYWxVUkxTdHJp
bmdFdgotX19aTks3V2ViQ29yZTExSGlzdG9yeUl0ZW0xOWNoaWxkSXRlbVdpdGhUYXJnZXRFUktO
M1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTIwZ2V0VHJhbnNpZW50UHJv
cGVydHlFUktOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTIwaGFzQ2Fj
aGVkUGFnZUV4cGlyZWRFdgogX19aTks3V2ViQ29yZTExSGlzdG9yeUl0ZW0zdXJsRXYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDbGllbnQuaAppbmRleCA0NzE4NzM2MDFkNGZm
OTI5ZGQxNTEzYWUwOGNhZTJjMWQ2OWI5OTk5Li4wODIwNDE1ZmU4MTBmZWQxM2M1ZDlkYTI2YWVi
YmZmNzcwYjA5YmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3
YXJkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENsaWVu
dC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVh
bCB2b2lkIGFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4pID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkSXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBnb1RvSXRlbShIaXN0b3J5SXRlbSopID0gMDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAKaW5kZXggNTVjYWYxYzBkNzUx
NjUxNmExZGE4MzMwZjI4MTEyOTk0Y2FiZDc0NS4uMWFlYjYzY2Y1MjkzYzQ2NjhhZjIwZmZjYjEx
NTg1NjkxMGJmMmE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9y
d2FyZENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0Zvcndh
cmRDb250cm9sbGVyLmNwcApAQCAtOTcsOSArOTcsOSBAQCBib29sIEJhY2tGb3J3YXJkQ29udHJv
bGxlcjo6Z29Gb3J3YXJkKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBCYWNrRm9yd2Fy
ZENvbnRyb2xsZXI6OmFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gaXRlbSkKK3ZvaWQg
QmFja0ZvcndhcmRDb250cm9sbGVyOjphZGRJdGVtKFJlZjxIaXN0b3J5SXRlbT4mJiBpdGVtKQog
ewotICAgIG1fY2xpZW50LT5hZGRJdGVtKGl0ZW0pOworICAgIG1fY2xpZW50LT5hZGRJdGVtKFdU
Rjo6bW92ZShpdGVtKSk7CiB9CiAKIHZvaWQgQmFja0ZvcndhcmRDb250cm9sbGVyOjpzZXRDdXJy
ZW50SXRlbShIaXN0b3J5SXRlbSogaXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0Jh
Y2tGb3J3YXJkQ29udHJvbGxlci5oCmluZGV4IGYyM2I3ZTRiZjEwNDQ3Y2IyZjQxZWY3MmU2ZDIz
Y2Q2YmFmMGE5NjMuLjU4OWVlNWVjYTJiZTcwNjZmNjQzYzY1NjcwMDU3MjkzNmY2OWRmMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuaApAQCAt
NTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnb0JhY2soKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGdvRm9yd2FyZCgpOwogCi0gICAgdm9pZCBhZGRJdGVt
KFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+KTsKKyAgICB2b2lkIGFkZEl0ZW0oUmVmPEhpc3RvcnlJ
dGVtPiYmKTsKICAgICB2b2lkIHNldEN1cnJlbnRJdGVtKEhpc3RvcnlJdGVtKik7CiAgICAgICAg
IAogICAgIGludCBjb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9CYWNrRm9yd2FyZExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9y
d2FyZExpc3QuY3BwCmluZGV4IGVhZTYyYmM3MWY4NjM4MGM3MjUxNmI3ZTcwZDcxY2U3YWUzYjUw
NTMuLmNlM2VhZDU2MTIyNzcwMDkxYzg3ZDgwMTRhMzJiMmRlZjdhODY0YWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTU1LDM2ICs1NSwzNSBAQCBC
YWNrRm9yd2FyZExpc3Q6On5CYWNrRm9yd2FyZExpc3QoKQogICAgIEFTU0VSVChtX2Nsb3NlZCk7
CiB9CiAKLXZvaWQgQmFja0ZvcndhcmRMaXN0OjphZGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0
ZW0+IHBycEl0ZW0pCit2b2lkIEJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShSZWY8SGlzdG9yeUl0
ZW0+JiYgbmV3SXRlbSkKIHsKLSAgICBBU1NFUlQocHJwSXRlbSk7Ci0gICAgaWYgKG1fY2FwYWNp
dHkgPT0gMCB8fCAhbV9lbmFibGVkKQorICAgIGlmICghbV9jYXBhY2l0eSB8fCAhbV9lbmFibGVk
KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gVG9zcyBhbnl0aGluZyBpbiB0aGUgZm9y
d2FyZCBsaXN0ICAgIAogICAgIGlmIChtX2N1cnJlbnQgIT0gTm9DdXJyZW50SXRlbUluZGV4KSB7
CiAgICAgICAgIHVuc2lnbmVkIHRhcmdldFNpemUgPSBtX2N1cnJlbnQgKyAxOwogICAgICAgICB3
aGlsZSAobV9lbnRyaWVzLnNpemUoKSA+IHRhcmdldFNpemUpIHsKLSAgICAgICAgICAgIFJlZlB0
cjxIaXN0b3J5SXRlbT4gaXRlbSA9IG1fZW50cmllcy5sYXN0KCk7CisgICAgICAgICAgICBhdXRv
JiBpdGVtID0gbV9lbnRyaWVzLmxhc3QoKTsKICAgICAgICAgICAgIG1fZW50cmllcy5yZW1vdmVM
YXN0KCk7Ci0gICAgICAgICAgICBtX2VudHJ5SGFzaC5yZW1vdmUoaXRlbSk7Ci0gICAgICAgICAg
ICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZSgqaXRlbSk7CisgICAgICAgICAgICBtX2Vu
dHJ5SGFzaC5yZW1vdmUoaXRlbS5wdHIoKSk7CisgICAgICAgICAgICBQYWdlQ2FjaGU6OnNpbmds
ZXRvbigpLnJlbW92ZShpdGVtKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIFRvc3MgdGhl
IGZpcnN0IGl0ZW0gaWYgdGhlIGxpc3QgaXMgZ2V0dGluZyB0b28gYmlnLCBhcyBsb25nIGFzIHdl
J3JlIG5vdCB1c2luZyBpdAogICAgIC8vIChvciBldmVuIGlmIHdlIGFyZSwgaWYgd2Ugb25seSB3
YW50IDEgZW50cnkpLgotICAgIGlmIChtX2VudHJpZXMuc2l6ZSgpID09IG1fY2FwYWNpdHkgJiYg
KG1fY3VycmVudCAhPSAwIHx8IG1fY2FwYWNpdHkgPT0gMSkpIHsKLSAgICAgICAgUmVmUHRyPEhp
c3RvcnlJdGVtPiBpdGVtID0gbV9lbnRyaWVzWzBdOworICAgIGlmIChtX2VudHJpZXMuc2l6ZSgp
ID09IG1fY2FwYWNpdHkgJiYgKG1fY3VycmVudCB8fCBtX2NhcGFjaXR5ID09IDEpKSB7CisgICAg
ICAgIGF1dG8mIGl0ZW0gPSBtX2VudHJpZXMuZmlyc3QoKTsKICAgICAgICAgbV9lbnRyaWVzLnJl
bW92ZSgwKTsKLSAgICAgICAgbV9lbnRyeUhhc2gucmVtb3ZlKGl0ZW0pOwotICAgICAgICBQYWdl
Q2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZSgqaXRlbSk7Ci0gICAgICAgIG1fY3VycmVudC0tOwor
ICAgICAgICBtX2VudHJ5SGFzaC5yZW1vdmUoaXRlbS5wdHIoKSk7CisgICAgICAgIFBhZ2VDYWNo
ZTo6c2luZ2xldG9uKCkucmVtb3ZlKGl0ZW0pOworICAgICAgICAtLW1fY3VycmVudDsKICAgICB9
CiAKLSAgICBtX2VudHJ5SGFzaC5hZGQocHJwSXRlbS5nZXQoKSk7Ci0gICAgbV9lbnRyaWVzLmlu
c2VydChtX2N1cnJlbnQgKyAxLCBwcnBJdGVtKTsKLSAgICBtX2N1cnJlbnQrKzsKKyAgICBtX2Vu
dHJ5SGFzaC5hZGQobmV3SXRlbS5wdHIoKSk7CisgICAgbV9lbnRyaWVzLmluc2VydChtX2N1cnJl
bnQgKyAxLCBXVEY6Om1vdmUobmV3SXRlbSkpOworICAgICsrbV9jdXJyZW50OwogfQogCiB2b2lk
IEJhY2tGb3J3YXJkTGlzdDo6Z29CYWNrKCkKQEAgLTExMCw3ICsxMDksNyBAQCB2b2lkIEJhY2tG
b3J3YXJkTGlzdDo6Z29Ub0l0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiAgICAgICAgIAogICAgIHVu
c2lnbmVkIGludCBpbmRleCA9IDA7CiAgICAgZm9yICg7IGluZGV4IDwgbV9lbnRyaWVzLnNpemUo
KTsgKytpbmRleCkKLSAgICAgICAgaWYgKG1fZW50cmllc1tpbmRleF0gPT0gaXRlbSkKKyAgICAg
ICAgaWYgKG1fZW50cmllc1tpbmRleF0ucHRyKCkgPT0gaXRlbSkKICAgICAgICAgICAgIGJyZWFr
OwogICAgIGlmIChpbmRleCA8IG1fZW50cmllcy5zaXplKCkpIHsKICAgICAgICAgbV9jdXJyZW50
ID0gaW5kZXg7CkBAIC0xMjAsMzEgKzExOSwzMSBAQCB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Z29U
b0l0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiBIaXN0b3J5SXRlbSogQmFja0ZvcndhcmRMaXN0Ojpi
YWNrSXRlbSgpCiB7CiAgICAgaWYgKG1fY3VycmVudCAmJiBtX2N1cnJlbnQgIT0gTm9DdXJyZW50
SXRlbUluZGV4KQotICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVudCAtIDFdLmdldCgp
OwotICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVudCAtIDFd
LnB0cigpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBIaXN0b3J5SXRlbSogQmFja0Zvcndh
cmRMaXN0OjpjdXJyZW50SXRlbSgpCiB7CiAgICAgaWYgKG1fY3VycmVudCAhPSBOb0N1cnJlbnRJ
dGVtSW5kZXgpCi0gICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9jdXJyZW50XS5nZXQoKTsKLSAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJlbnRdLnB0cigpOwor
ICAgIHJldHVybiBudWxscHRyOwogfQogCiBIaXN0b3J5SXRlbSogQmFja0ZvcndhcmRMaXN0Ojpm
b3J3YXJkSXRlbSgpCiB7CiAgICAgaWYgKG1fZW50cmllcy5zaXplKCkgJiYgbV9jdXJyZW50IDwg
bV9lbnRyaWVzLnNpemUoKSAtIDEpCi0gICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9jdXJyZW50
ICsgMV0uZ2V0KCk7Ci0gICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9j
dXJyZW50ICsgMV0ucHRyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgQmFja0Zv
cndhcmRMaXN0OjpiYWNrTGlzdFdpdGhMaW1pdChpbnQgbGltaXQsIEhpc3RvcnlJdGVtVmVjdG9y
JiBsaXN0KQogewogICAgIGxpc3QuY2xlYXIoKTsKICAgICBpZiAobV9jdXJyZW50ICE9IE5vQ3Vy
cmVudEl0ZW1JbmRleCkgewotICAgICAgICB1bnNpZ25lZCBmaXJzdCA9IHN0ZDo6bWF4KChpbnQp
bV9jdXJyZW50IC0gbGltaXQsIDApOworICAgICAgICB1bnNpZ25lZCBmaXJzdCA9IHN0ZDo6bWF4
KHN0YXRpY19jYXN0PGludD4obV9jdXJyZW50KSAtIGxpbWl0LCAwKTsKICAgICAgICAgZm9yICg7
IGZpcnN0IDwgbV9jdXJyZW50OyArK2ZpcnN0KQotICAgICAgICAgICAgbGlzdC5hcHBlbmQobV9l
bnRyaWVzW2ZpcnN0XSk7CisgICAgICAgICAgICBsaXN0LmFwcGVuZChtX2VudHJpZXNbZmlyc3Rd
LmdldCgpKTsKICAgICB9CiB9CiAKQEAgLTE2MCw3ICsxNTksNyBAQCB2b2lkIEJhY2tGb3J3YXJk
TGlzdDo6Zm9yd2FyZExpc3RXaXRoTGltaXQoaW50IGxpbWl0LCBIaXN0b3J5SXRlbVZlY3RvciYg
bGlzdCkKICAgICAgICAgaW50IGxhc3QgPSBzdGQ6Om1pbihtX2N1cnJlbnQgKyBsaW1pdCwgbGFz
dEVudHJ5KTsKICAgICAgICAgbGltaXQgPSBtX2N1cnJlbnQgKyAxOwogICAgICAgICBmb3IgKDsg
bGltaXQgPD0gbGFzdDsgKytsaW1pdCkKLSAgICAgICAgICAgIGxpc3QuYXBwZW5kKG1fZW50cmll
c1tsaW1pdF0pOworICAgICAgICAgICAgbGlzdC5hcHBlbmQobV9lbnRyaWVzW2xpbWl0XS5nZXQo
KSk7CiAgICAgfQogfQogCkBAIC0xNzEsMTEgKzE3MCwxMSBAQCBpbnQgQmFja0ZvcndhcmRMaXN0
OjpjYXBhY2l0eSgpCiAKIHZvaWQgQmFja0ZvcndhcmRMaXN0OjpzZXRDYXBhY2l0eShpbnQgc2l6
ZSkKIHsgICAgCi0gICAgd2hpbGUgKHNpemUgPCAoaW50KW1fZW50cmllcy5zaXplKCkpIHsKLSAg
ICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtID0gbV9lbnRyaWVzLmxhc3QoKTsKKyAgICB3
aGlsZSAoc2l6ZSA8IHN0YXRpY19jYXN0PGludD4obV9lbnRyaWVzLnNpemUoKSkpIHsKKyAgICAg
ICAgYXV0byYgaXRlbSA9IG1fZW50cmllcy5sYXN0KCk7CiAgICAgICAgIG1fZW50cmllcy5yZW1v
dmVMYXN0KCk7Ci0gICAgICAgIG1fZW50cnlIYXNoLnJlbW92ZShpdGVtKTsKLSAgICAgICAgUGFn
ZUNhY2hlOjpzaW5nbGV0b24oKS5yZW1vdmUoKml0ZW0pOworICAgICAgICBtX2VudHJ5SGFzaC5y
ZW1vdmUoaXRlbS5wdHIoKSk7CisgICAgICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucmVtb3Zl
KGl0ZW0pOwogICAgIH0KIAogICAgIGlmICghc2l6ZSkKQEAgLTIxNCwxMyArMjEzLDEzIEBAIGlu
dCBCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0Q291bnQoKQogSGlzdG9yeUl0ZW0qIEJhY2tG
b3J3YXJkTGlzdDo6aXRlbUF0SW5kZXgoaW50IGluZGV4KQogewogICAgIC8vIERvIHJhbmdlIGNo
ZWNrcyB3aXRob3V0IGRvaW5nIG1hdGggb24gaW5kZXggdG8gYXZvaWQgb3ZlcmZsb3cuCi0gICAg
aWYgKGluZGV4IDwgLShpbnQpbV9jdXJyZW50KQotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAo
aW5kZXggPCAtc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnQpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAKICAgICBpZiAoaW5kZXggPiBmb3J3YXJkTGlzdENvdW50KCkpCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgCi0gICAgcmV0dXJu
IG1fZW50cmllc1tpbmRleCArIG1fY3VycmVudF0uZ2V0KCk7CisgICAgcmV0dXJuIG1fZW50cmll
c1tpbmRleCArIG1fY3VycmVudF0ucHRyKCk7CiB9CiAKIEhpc3RvcnlJdGVtVmVjdG9yJiBCYWNr
Rm9yd2FyZExpc3Q6OmVudHJpZXMoKQpAQCAtMjQ1LDcgKzI0NCw3IEBAIGJvb2wgQmFja0Zvcndh
cmRMaXN0OjpjbGVhckFsbFBhZ2VDYWNoZXMoKQogICAgIGZvciAoYXV0byYgaXRlbSA6IG1fZW50
cmllcykgewogICAgICAgICBpZiAoaXRlbS0+aXNJblBhZ2VDYWNoZSgpKSB7CiAgICAgICAgICAg
ICBkaWRSZW1vdmVBdExlYXN0T25lSXRlbSA9IHRydWU7Ci0gICAgICAgICAgICBQYWdlQ2FjaGU6
OnNpbmdsZXRvbigpLnJlbW92ZSgqaXRlbSk7CisgICAgICAgICAgICBQYWdlQ2FjaGU6OnNpbmds
ZXRvbigpLnJlbW92ZShpdGVtKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gZGlkUmVt
b3ZlQXRMZWFzdE9uZUl0ZW07CkBAIC0yNTUsNyArMjU0LDcgQEAgYm9vbCBCYWNrRm9yd2FyZExp
c3Q6OmNsZWFyQWxsUGFnZUNhY2hlcygpCiB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Y2xvc2UoKQog
ewogICAgIGZvciAoYXV0byYgaXRlbSA6IG1fZW50cmllcykKLSAgICAgICAgUGFnZUNhY2hlOjpz
aW5nbGV0b24oKS5yZW1vdmUoKml0ZW0pOworICAgICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigp
LnJlbW92ZShpdGVtKTsKICAgICBtX2VudHJpZXMuY2xlYXIoKTsKICAgICBtX2VudHJ5SGFzaC5j
bGVhcigpOwogICAgIG1fcGFnZSA9IG51bGxwdHI7CkBAIC0yNzIsOCArMjcxLDggQEAgdm9pZCBC
YWNrRm9yd2FyZExpc3Q6OnJlbW92ZUl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiAgICAgaWYgKCFp
dGVtKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fZW50cmllcy5zaXplKCk7ICsraSkKLSAgICAgICAgaWYgKG1fZW50cmllc1tpXSA9PSBpdGVt
KSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZW50cmllcy5zaXplKCk7ICsraSkg
eworICAgICAgICBpZiAobV9lbnRyaWVzW2ldLnB0cigpID09IGl0ZW0pIHsKICAgICAgICAgICAg
IG1fZW50cmllcy5yZW1vdmUoaSk7CiAgICAgICAgICAgICBtX2VudHJ5SGFzaC5yZW1vdmUoaXRl
bSk7CiAgICAgICAgICAgICBpZiAobV9jdXJyZW50ID09IE5vQ3VycmVudEl0ZW1JbmRleCB8fCBt
X2N1cnJlbnQgPCBpKQpAQCAtMjg3LDYgKzI4Niw3IEBAIHZvaWQgQmFja0ZvcndhcmRMaXN0Ojpy
ZW1vdmVJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAgICAgICAgICAgfQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KKyAgICB9CiB9CiAKIGJvb2wgQmFja0ZvcndhcmRMaXN0Ojpjb250
YWluc0l0ZW0oSGlzdG9yeUl0ZW0qIGVudHJ5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0Zv
cndhcmRMaXN0LmgKaW5kZXggYTMzYzhhNjZjMDA5NjU5NDY2MTZjYzRlZGM0N2ZjYzhlY2IwMjA2
OC4uNTkyOTI3NjBjY2M4NmY3OTJjNDVkN2M1NGE2ZjY5ZTdlMmMwNjNjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgUGFnZTsKIAotdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEhpc3Rv
cnlJdGVtPj4gSGlzdG9yeUl0ZW1WZWN0b3I7Cit0eXBlZGVmIFZlY3RvcjxSZWY8SGlzdG9yeUl0
ZW0+PiBIaXN0b3J5SXRlbVZlY3RvcjsKIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8SGlzdG9yeUl0
ZW0+PiBIaXN0b3J5SXRlbUhhc2hTZXQ7CiAKIGNsYXNzIEJhY2tGb3J3YXJkTGlzdCA6IHB1Ymxp
YyBCYWNrRm9yd2FyZENsaWVudCB7CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIFBh
Z2UqIHBhZ2UoKSB7IHJldHVybiBtX3BhZ2U7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhZGRJdGVt
KFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRk
SXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZ29CYWNrKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnb0ZvcndhcmQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgZ29Ub0l0ZW0oSGlzdG9yeUl0ZW0qKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKaW5kZXggM2M1MmZkNmUwMjc5MTc4YmY0MGFjZmU0YmQ4
MzI0NTE5MmNhYTAyZC4uMjI5YmFiOGU3YTIzYWMwNWMwYWQwNWU3ZWQ0MzE1N2RjZDdlOGIwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKQEAgLTE3Miw5ICsxNzIsOSBA
QCBpbmxpbmUgSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVtKGNvbnN0IEhpc3RvcnlJdGVtJiBpdGVt
KQogICAgICAgICBtX3JlZGlyZWN0VVJMcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmlu
Zz4+KCppdGVtLm1fcmVkaXJlY3RVUkxzKTsKIH0KIAotUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4g
SGlzdG9yeUl0ZW06OmNvcHkoKSBjb25zdAorUmVmPEhpc3RvcnlJdGVtPiBIaXN0b3J5SXRlbTo6
Y29weSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIaXN0b3J5SXRlbSgqdGhp
cykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhpc3RvcnlJdGVtKCp0aGlzKSk7CiB9CiAK
IHZvaWQgSGlzdG9yeUl0ZW06OnJlc2V0KCkKQEAgLTM2Niw0NCArMzY2LDQ0IEBAIHZvaWQgSGlz
dG9yeUl0ZW06OnNldFN0YXRlT2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBvYmplY3QpCiAgICAgbV9zdGF0ZU9iamVjdCA9IG9iamVjdDsKIH0KIAotdm9pZCBIaXN0b3J5
SXRlbTo6YWRkQ2hpbGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGNoaWxkKQordm9pZCBI
aXN0b3J5SXRlbTo6YWRkQ2hpbGRJdGVtKFJlZjxIaXN0b3J5SXRlbT4mJiBjaGlsZCkKIHsKICAg
ICBBU1NFUlQoIWNoaWxkSXRlbVdpdGhUYXJnZXQoY2hpbGQtPnRhcmdldCgpKSk7Ci0gICAgbV9j
aGlsZHJlbi5hcHBlbmQoY2hpbGQpOworICAgIG1fY2hpbGRyZW4uYXBwZW5kKFdURjo6bW92ZShj
aGlsZCkpOwogfQogCi12b2lkIEhpc3RvcnlJdGVtOjpzZXRDaGlsZEl0ZW0oUGFzc1JlZlB0cjxI
aXN0b3J5SXRlbT4gY2hpbGQpCit2b2lkIEhpc3RvcnlJdGVtOjpzZXRDaGlsZEl0ZW0oUmVmPEhp
c3RvcnlJdGVtPiYmIGNoaWxkKQogewogICAgIEFTU0VSVCghY2hpbGQtPmlzVGFyZ2V0SXRlbSgp
KTsKICAgICB1bnNpZ25lZCBzaXplID0gbV9jaGlsZHJlbi5zaXplKCk7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgIHsKICAgICAgICAgaWYgKG1fY2hpbGRyZW5baV0t
PnRhcmdldCgpID09IGNoaWxkLT50YXJnZXQoKSkgewogICAgICAgICAgICAgY2hpbGQtPnNldElz
VGFyZ2V0SXRlbShtX2NoaWxkcmVuW2ldLT5pc1RhcmdldEl0ZW0oKSk7Ci0gICAgICAgICAgICBt
X2NoaWxkcmVuW2ldID0gY2hpbGQ7CisgICAgICAgICAgICBtX2NoaWxkcmVuW2ldID0gV1RGOjpt
b3ZlKGNoaWxkKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBt
X2NoaWxkcmVuLmFwcGVuZChjaGlsZCk7CisgICAgbV9jaGlsZHJlbi5hcHBlbmQoV1RGOjptb3Zl
KGNoaWxkKSk7CiB9CiAKLUhpc3RvcnlJdGVtKiBIaXN0b3J5SXRlbTo6Y2hpbGRJdGVtV2l0aFRh
cmdldChjb25zdCBTdHJpbmcmIHRhcmdldCkgY29uc3QKK0hpc3RvcnlJdGVtKiBIaXN0b3J5SXRl
bTo6Y2hpbGRJdGVtV2l0aFRhcmdldChjb25zdCBTdHJpbmcmIHRhcmdldCkKIHsKICAgICB1bnNp
Z25lZCBzaXplID0gbV9jaGlsZHJlbi5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHNpemU7ICsraSkgewogICAgICAgICBpZiAobV9jaGlsZHJlbltpXS0+dGFyZ2V0KCkgPT0g
dGFyZ2V0KQotICAgICAgICAgICAgcmV0dXJuIG1fY2hpbGRyZW5baV0uZ2V0KCk7CisgICAgICAg
ICAgICByZXR1cm4gbV9jaGlsZHJlbltpXS5wdHIoKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUhpc3RvcnlJdGVtKiBIaXN0b3J5SXRlbTo6Y2hpbGRJ
dGVtV2l0aERvY3VtZW50U2VxdWVuY2VOdW1iZXIobG9uZyBsb25nIG51bWJlcikgY29uc3QKK0hp
c3RvcnlJdGVtKiBIaXN0b3J5SXRlbTo6Y2hpbGRJdGVtV2l0aERvY3VtZW50U2VxdWVuY2VOdW1i
ZXIobG9uZyBsb25nIG51bWJlcikKIHsKICAgICB1bnNpZ25lZCBzaXplID0gbV9jaGlsZHJlbi5z
aXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAg
ICBpZiAobV9jaGlsZHJlbltpXS0+ZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpID09IG51bWJlcikK
LSAgICAgICAgICAgIHJldHVybiBtX2NoaWxkcmVuW2ldLmdldCgpOworICAgICAgICAgICAgcmV0
dXJuIG1fY2hpbGRyZW5baV0ucHRyKCk7CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVy
biBudWxscHRyOwogfQogCiAvLyA8cmRhcjovL3Byb2JsZW0vNDg5NTg0OT4gSGlzdG9yeUl0ZW06
OmZpbmRUYXJnZXRJdGVtKCkgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggYSBub24tcmVjdXJzaXZl
IG1ldGhvZC4KQEAgLTQxMywxNSArNDEzLDE3IEBAIEhpc3RvcnlJdGVtKiBIaXN0b3J5SXRlbTo6
ZmluZFRhcmdldEl0ZW0oKQogICAgICAgICByZXR1cm4gdGhpczsKICAgICB1bnNpZ25lZCBzaXpl
ID0gbV9jaGlsZHJlbi5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7
ICsraSkgeworICAgICAgICAvLyBGSVhNRTogdGFyZ2V0SXRlbSgpIGNhbm5vdCByZXR1cm4gbnVs
bCBjdXJyZW50bHksIHdoaWNoIGlzIHdyb25nLgogICAgICAgICBpZiAoSGlzdG9yeUl0ZW0qIG1h
dGNoID0gbV9jaGlsZHJlbltpXS0+dGFyZ2V0SXRlbSgpKQogICAgICAgICAgICAgcmV0dXJuIG1h
dGNoOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogSGlz
dG9yeUl0ZW0qIEhpc3RvcnlJdGVtOjp0YXJnZXRJdGVtKCkKIHsKICAgICBIaXN0b3J5SXRlbSog
Zm91bmRJdGVtID0gZmluZFRhcmdldEl0ZW0oKTsKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
cHJvYmFibHkgbm90IGZhbGwgYmFjayB0byB8dGhpc3wuCiAgICAgcmV0dXJuIGZvdW5kSXRlbSA/
IGZvdW5kSXRlbSA6IHRoaXM7CiB9CiAKQEAgLTQ0MCwxMyArNDQyLDEzIEBAIHZvaWQgSGlzdG9y
eUl0ZW06OmNsZWFyQ2hpbGRyZW4oKQogICAgIG1fY2hpbGRyZW4uY2xlYXIoKTsKIH0KIAotYm9v
bCBIaXN0b3J5SXRlbTo6aXNBbmNlc3Rvck9mKGNvbnN0IEhpc3RvcnlJdGVtKiBpdGVtKSBjb25z
dAorYm9vbCBIaXN0b3J5SXRlbTo6aXNBbmNlc3Rvck9mKGNvbnN0IEhpc3RvcnlJdGVtJiBpdGVt
KSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jaGlsZHJlbi5zaXplKCk7
ICsraSkgewotICAgICAgICBIaXN0b3J5SXRlbSogY2hpbGQgPSBtX2NoaWxkcmVuW2ldLmdldCgp
OwotICAgICAgICBpZiAoY2hpbGQgPT0gaXRlbSkKKyAgICAgICAgYXV0byYgY2hpbGQgPSBtX2No
aWxkcmVuW2ldLmdldCgpOworICAgICAgICBpZiAoJmNoaWxkID09ICZpdGVtKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChjaGlsZC0+aXNBbmNlc3Rvck9mKGl0ZW0pKQor
ICAgICAgICBpZiAoY2hpbGQuaXNBbmNlc3Rvck9mKGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTQ1NSwzNCArNDU3LDM0IEBAIGJv
b2wgSGlzdG9yeUl0ZW06OmlzQW5jZXN0b3JPZihjb25zdCBIaXN0b3J5SXRlbSogaXRlbSkgY29u
c3QKIC8vIFdlIGRvIHNhbWUtZG9jdW1lbnQgbmF2aWdhdGlvbiBpZiBnb2luZyB0byBhIGRpZmZl
cmVudCBpdGVtIGFuZCBpZiBlaXRoZXIgb2YgdGhlIGZvbGxvd2luZyBpcyB0cnVlOgogLy8gLSBU
aGUgb3RoZXIgaXRlbSBjb3JyZXNwb25kcyB0byB0aGUgc2FtZSBkb2N1bWVudCAoZm9yIGhpc3Rv
cnkgZW50cmllcyBjcmVhdGVkIHZpYSBwdXNoU3RhdGUgb3IgZnJhZ21lbnQgY2hhbmdlcykuCiAv
LyAtIFRoZSBvdGhlciBpdGVtIGNvcnJlc3BvbmRzIHRvIHRoZSBzYW1lIHNldCBvZiBkb2N1bWVu
dHMsIGluY2x1ZGluZyBmcmFtZXMgKGZvciBoaXN0b3J5IGVudHJpZXMgY3JlYXRlZCB2aWEgcmVn
dWxhciBuYXZpZ2F0aW9uKQotYm9vbCBIaXN0b3J5SXRlbTo6c2hvdWxkRG9TYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uVG8oSGlzdG9yeUl0ZW0qIG90aGVySXRlbSkgY29uc3QKK2Jvb2wgSGlzdG9yeUl0
ZW06OnNob3VsZERvU2FtZURvY3VtZW50TmF2aWdhdGlvblRvKEhpc3RvcnlJdGVtJiBvdGhlckl0
ZW0pIGNvbnN0CiB7Ci0gICAgaWYgKHRoaXMgPT0gb3RoZXJJdGVtKQorICAgIGlmICh0aGlzID09
ICZvdGhlckl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChzdGF0ZU9iamVj
dCgpIHx8IG90aGVySXRlbS0+c3RhdGVPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIGRvY3VtZW50
U2VxdWVuY2VOdW1iZXIoKSA9PSBvdGhlckl0ZW0tPmRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKTsK
KyAgICBpZiAoc3RhdGVPYmplY3QoKSB8fCBvdGhlckl0ZW0uc3RhdGVPYmplY3QoKSkKKyAgICAg
ICAgcmV0dXJuIGRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSA9PSBvdGhlckl0ZW0uZG9jdW1lbnRT
ZXF1ZW5jZU51bWJlcigpOwogICAgIAotICAgIGlmICgodXJsKCkuaGFzRnJhZ21lbnRJZGVudGlm
aWVyKCkgfHwgb3RoZXJJdGVtLT51cmwoKS5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkgJiYgZXF1
YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwoKSwgb3RoZXJJdGVtLT51cmwoKSkpCi0g
ICAgICAgIHJldHVybiBkb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkgPT0gb3RoZXJJdGVtLT5kb2N1
bWVudFNlcXVlbmNlTnVtYmVyKCk7ICAgICAgICAKKyAgICBpZiAoKHVybCgpLmhhc0ZyYWdtZW50
SWRlbnRpZmllcigpIHx8IG90aGVySXRlbS51cmwoKS5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkg
JiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwoKSwgb3RoZXJJdGVtLnVybCgp
KSkKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSA9PSBvdGhlckl0ZW0u
ZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpOwogICAgIAogICAgIHJldHVybiBoYXNTYW1lRG9jdW1l
bnRUcmVlKG90aGVySXRlbSk7CiB9CiAKIC8vIERvZXMgYSByZWN1cnNpdmUgY2hlY2sgdGhhdCB0
aGlzIGl0ZW0gYW5kIGl0cyBkZXNjZW5kYW50cyBoYXZlIHRoZSBzYW1lCiAvLyBkb2N1bWVudCBz
ZXF1ZW5jZSBudW1iZXJzIGFzIHRoZSBvdGhlciBpdGVtLgotYm9vbCBIaXN0b3J5SXRlbTo6aGFz
U2FtZURvY3VtZW50VHJlZShIaXN0b3J5SXRlbSogb3RoZXJJdGVtKSBjb25zdAorYm9vbCBIaXN0
b3J5SXRlbTo6aGFzU2FtZURvY3VtZW50VHJlZShIaXN0b3J5SXRlbSYgb3RoZXJJdGVtKSBjb25z
dAogewotICAgIGlmIChkb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkgIT0gb3RoZXJJdGVtLT5kb2N1
bWVudFNlcXVlbmNlTnVtYmVyKCkpCisgICAgaWYgKGRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSAh
PSBvdGhlckl0ZW0uZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIAotICAgIGlmIChjaGlsZHJlbigpLnNpemUoKSAhPSBvdGhlckl0ZW0tPmNo
aWxkcmVuKCkuc2l6ZSgpKQorICAgIGlmIChjaGlsZHJlbigpLnNpemUoKSAhPSBvdGhlckl0ZW0u
Y2hpbGRyZW4oKS5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4oKS5zaXplKCk7IGkrKykgewotICAgICAgICBIaXN0b3J5
SXRlbSogY2hpbGQgPSBjaGlsZHJlbigpW2ldLmdldCgpOwotICAgICAgICBIaXN0b3J5SXRlbSog
b3RoZXJDaGlsZCA9IG90aGVySXRlbS0+Y2hpbGRJdGVtV2l0aERvY3VtZW50U2VxdWVuY2VOdW1i
ZXIoY2hpbGQtPmRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSk7Ci0gICAgICAgIGlmICghb3RoZXJD
aGlsZCB8fCAhY2hpbGQtPmhhc1NhbWVEb2N1bWVudFRyZWUob3RoZXJDaGlsZCkpCisgICAgICAg
IGF1dG8mIGNoaWxkID0gY2hpbGRyZW4oKVtpXS5nZXQoKTsKKyAgICAgICAgYXV0byogb3RoZXJD
aGlsZCA9IG90aGVySXRlbS5jaGlsZEl0ZW1XaXRoRG9jdW1lbnRTZXF1ZW5jZU51bWJlcihjaGls
ZC5kb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkpOworICAgICAgICBpZiAoIW90aGVyQ2hpbGQgfHwg
IWNoaWxkLmhhc1NhbWVEb2N1bWVudFRyZWUoKm90aGVyQ2hpbGQpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNDkxLDE2ICs0OTMsMTYgQEAgYm9vbCBIaXN0b3J5SXRl
bTo6aGFzU2FtZURvY3VtZW50VHJlZShIaXN0b3J5SXRlbSogb3RoZXJJdGVtKSBjb25zdAogCiAv
LyBEb2VzIGEgbm9uLXJlY3Vyc2l2ZSBjaGVjayB0aGF0IHRoaXMgaXRlbSBhbmQgaXRzIGltbWVk
aWF0ZSBjaGlsZHJlbiBoYXZlIHRoZQogLy8gc2FtZSBmcmFtZXMgYXMgdGhlIG90aGVyIGl0ZW0u
Ci1ib29sIEhpc3RvcnlJdGVtOjpoYXNTYW1lRnJhbWVzKEhpc3RvcnlJdGVtKiBvdGhlckl0ZW0p
IGNvbnN0Citib29sIEhpc3RvcnlJdGVtOjpoYXNTYW1lRnJhbWVzKEhpc3RvcnlJdGVtJiBvdGhl
ckl0ZW0pIGNvbnN0CiB7Ci0gICAgaWYgKHRhcmdldCgpICE9IG90aGVySXRlbS0+dGFyZ2V0KCkp
CisgICAgaWYgKHRhcmdldCgpICE9IG90aGVySXRlbS50YXJnZXQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAKLSAgICBpZiAoY2hpbGRyZW4oKS5zaXplKCkgIT0gb3RoZXJJdGVt
LT5jaGlsZHJlbigpLnNpemUoKSkKKyAgICBpZiAoY2hpbGRyZW4oKS5zaXplKCkgIT0gb3RoZXJJ
dGVtLmNoaWxkcmVuKCkuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNoaWxkcmVuKCkuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgaWYg
KCFvdGhlckl0ZW0tPmNoaWxkSXRlbVdpdGhUYXJnZXQoY2hpbGRyZW4oKVtpXS0+dGFyZ2V0KCkp
KQorICAgICAgICBpZiAoIW90aGVySXRlbS5jaGlsZEl0ZW1XaXRoVGFyZ2V0KGNoaWxkcmVuKClb
aV0tPnRhcmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTU0
MiwxMCArNTQ0LDEwIEBAIEZvcm1EYXRhKiBIaXN0b3J5SXRlbTo6Zm9ybURhdGEoKQogICAgIHJl
dHVybiBtX2Zvcm1EYXRhLmdldCgpOwogfQogCi1ib29sIEhpc3RvcnlJdGVtOjppc0N1cnJlbnRE
b2N1bWVudChEb2N1bWVudCogZG9jKSBjb25zdAorYm9vbCBIaXN0b3J5SXRlbTo6aXNDdXJyZW50
RG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgZmluZCBhIGJldHRlciB3YXkgdG8gY2hlY2sgaWYgdGhpcyBpcyB0aGUgY3VycmVudCBk
b2N1bWVudC4KLSAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwo
KSwgZG9jLT51cmwoKSk7CisgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZp
ZXIodXJsKCksIGRvY3VtZW50LnVybCgpKTsKIH0KIAogdm9pZCBIaXN0b3J5SXRlbTo6YWRkUmVk
aXJlY3RVUkwoY29uc3QgU3RyaW5nJiB1cmwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0hpc3RvcnlJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVt
LmgKaW5kZXggNjRjMDRiZWY5NGVlNjIyNDNhY2Y2YzlkYzM3NjY3NDRlNzlhZTY1ZC4uNGQ4NDNj
NDhmMmY1ODJiM2VmMWEyMWI2ZGNjZjUyMWVmODIxZjc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
SGlzdG9yeUl0ZW0uaApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBj
bGFzcyBVUkw7CiBlbnVtIGNsYXNzIFBydW5pbmdSZWFzb247CiAKLXR5cGVkZWYgVmVjdG9yPFJl
ZlB0cjxIaXN0b3J5SXRlbT4+IEhpc3RvcnlJdGVtVmVjdG9yOwordHlwZWRlZiBWZWN0b3I8UmVm
PEhpc3RvcnlJdGVtPj4gSGlzdG9yeUl0ZW1WZWN0b3I7CiAKIGV4dGVybiB2b2lkICgqbm90aWZ5
SGlzdG9yeUl0ZW1DaGFuZ2VkKShIaXN0b3J5SXRlbSopOwogCkBAIC03OSw3ICs3OSw3IEBAIHB1
YmxpYzoKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCB+SGlzdG9yeUl0ZW0oKTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGNvcHkoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWY8SGlzdG9yeUl0ZW0+IGNvcHkoKSBjb25zdDsKIAogICAgIC8vIFJl
c2V0cyB0aGUgSGlzdG9yeUl0ZW0gdG8gaXRzIGluaXRpYWwgc3RhdGUsIGFzIHJldHVybmVkIGJ5
IGNyZWF0ZSgpLgogICAgIHZvaWQgcmVzZXQoKTsKQEAgLTE0MSwyNCArMTQxLDI0IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgc2V0TGFzdFZpc2l0V2FzRmFpbHVyZShib29sIHdhc0ZhaWx1cmUpIHsg
bV9sYXN0VmlzaXRXYXNGYWlsdXJlID0gd2FzRmFpbHVyZTsgfQogCi0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhZGRDaGlsZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4pOwotICAgIHZvaWQg
c2V0Q2hpbGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+KTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBIaXN0b3J5SXRlbSogY2hpbGRJdGVtV2l0aFRhcmdldChjb25zdCBTdHJpbmcmKSBjb25zdDsK
LSAgICBIaXN0b3J5SXRlbSogY2hpbGRJdGVtV2l0aERvY3VtZW50U2VxdWVuY2VOdW1iZXIobG9u
ZyBsb25nIG51bWJlcikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDaGlsZEl0
ZW0oUmVmPEhpc3RvcnlJdGVtPiYmKTsKKyAgICB2b2lkIHNldENoaWxkSXRlbShSZWY8SGlzdG9y
eUl0ZW0+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIEhpc3RvcnlJdGVtKiBjaGlsZEl0ZW1XaXRo
VGFyZ2V0KGNvbnN0IFN0cmluZyYpOworICAgIEhpc3RvcnlJdGVtKiBjaGlsZEl0ZW1XaXRoRG9j
dW1lbnRTZXF1ZW5jZU51bWJlcihsb25nIGxvbmcgbnVtYmVyKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBIaXN0b3J5SXRlbSogdGFyZ2V0SXRlbSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEhp
c3RvcnlJdGVtVmVjdG9yJiBjaGlsZHJlbigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaGFzQ2hpbGRyZW4oKSBjb25zdDsKICAgICB2b2lkIGNsZWFyQ2hpbGRyZW4oKTsKLSAgICBi
b29sIGlzQW5jZXN0b3JPZihjb25zdCBIaXN0b3J5SXRlbSopIGNvbnN0OworICAgIGJvb2wgaXNB
bmNlc3Rvck9mKGNvbnN0IEhpc3RvcnlJdGVtJikgY29uc3Q7CiAgICAgCi0gICAgYm9vbCBzaG91
bGREb1NhbWVEb2N1bWVudE5hdmlnYXRpb25UbyhIaXN0b3J5SXRlbSogb3RoZXJJdGVtKSBjb25z
dDsKLSAgICBib29sIGhhc1NhbWVGcmFtZXMoSGlzdG9yeUl0ZW0qIG90aGVySXRlbSkgY29uc3Q7
CisgICAgYm9vbCBzaG91bGREb1NhbWVEb2N1bWVudE5hdmlnYXRpb25UbyhIaXN0b3J5SXRlbSYg
b3RoZXJJdGVtKSBjb25zdDsKKyAgICBib29sIGhhc1NhbWVGcmFtZXMoSGlzdG9yeUl0ZW0mIG90
aGVySXRlbSkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFJlZGlyZWN0VVJM
KGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+KiByZWRp
cmVjdFVSTHMoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJlZGlyZWN0VVJM
cyhzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+KTsKIAotICAgIGJvb2wgaXNDdXJyZW50
RG9jdW1lbnQoRG9jdW1lbnQqKSBjb25zdDsKKyAgICBib29sIGlzQ3VycmVudERvY3VtZW50KERv
Y3VtZW50JikgY29uc3Q7CiAgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV0VCQ09SRV9F
WFBPUlQgaWQgdmlld1N0YXRlKCkgY29uc3Q7CkBAIC0yMTIsOSArMjEyLDkgQEAgcHJpdmF0ZToK
ICAgICBXRUJDT1JFX0VYUE9SVCBIaXN0b3J5SXRlbShjb25zdCBTdHJpbmcmIHVybFN0cmluZywg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBhbHRlcm5hdGVUaXRsZSk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0ZW0oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBmcmFt
ZU5hbWUsIGNvbnN0IFN0cmluZyYgcGFyZW50LCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKIAotICAg
IGV4cGxpY2l0IEhpc3RvcnlJdGVtKGNvbnN0IEhpc3RvcnlJdGVtJik7CisgICAgSGlzdG9yeUl0
ZW0oY29uc3QgSGlzdG9yeUl0ZW0mKTsKIAotICAgIGJvb2wgaGFzU2FtZURvY3VtZW50VHJlZShI
aXN0b3J5SXRlbSogb3RoZXJJdGVtKSBjb25zdDsKKyAgICBib29sIGhhc1NhbWVEb2N1bWVudFRy
ZWUoSGlzdG9yeUl0ZW0mIG90aGVySXRlbSkgY29uc3Q7CiAKICAgICBIaXN0b3J5SXRlbSogZmlu
ZFRhcmdldEl0ZW0oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXgg
MDU5ZjBmZjhlNGZjMTZmNmYwOTNhMWNkMGFjMjc5ZTJjNDcwOTc0ZC4uZmYxZWNjNGUyYTExY2E1
MDU5ZDU1OGEyYmIyOGY2NmE4YTAzOGEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCkBAIC0zMTQzLDcgKzMxNDMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkU2FtZURv
Y3VtZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSkKICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0g
bV9mcmFtZS52aWV3KCkpCiAgICAgICAgIHZpZXctPnNldFdhc1Njcm9sbGVkQnlVc2VyKGZhbHNl
KTsKIAotICAgIGhpc3RvcnkoKS5zZXRDdXJyZW50SXRlbSgmaXRlbSk7CisgICAgaGlzdG9yeSgp
LnNldEN1cnJlbnRJdGVtKGl0ZW0pOwogICAgICAgICAKICAgICAvLyBsb2FkSW5TYW1lRG9jdW1l
bnQoKSBhY3R1YWxseSBjaGFuZ2VzIHRoZSBVUkwgYW5kIG5vdGlmaWVzIGxvYWQgZGVsZWdhdGVz
IG9mIGEgImZha2UiIGxvYWQKICAgICBsb2FkSW5TYW1lRG9jdW1lbnQoaXRlbS51cmwoKSwgaXRl
bS5zdGF0ZU9iamVjdCgpLCBmYWxzZSk7CkBAIC0zMjQ3LDcgKzMyNDcsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpsb2FkSXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2FkVHlw
ZSkKIHsKICAgICBtX3JlcXVlc3RlZEhpc3RvcnlJdGVtID0gJml0ZW07CiAgICAgSGlzdG9yeUl0
ZW0qIGN1cnJlbnRJdGVtID0gaGlzdG9yeSgpLmN1cnJlbnRJdGVtKCk7Ci0gICAgYm9vbCBzYW1l
RG9jdW1lbnROYXZpZ2F0aW9uID0gY3VycmVudEl0ZW0gJiYgaXRlbS5zaG91bGREb1NhbWVEb2N1
bWVudE5hdmlnYXRpb25UbyhjdXJyZW50SXRlbSk7CisgICAgYm9vbCBzYW1lRG9jdW1lbnROYXZp
Z2F0aW9uID0gY3VycmVudEl0ZW0gJiYgaXRlbS5zaG91bGREb1NhbWVEb2N1bWVudE5hdmlnYXRp
b25UbygqY3VycmVudEl0ZW0pOwogCiAgICAgaWYgKHNhbWVEb2N1bWVudE5hdmlnYXRpb24pCiAg
ICAgICAgIGxvYWRTYW1lRG9jdW1lbnRJdGVtKGl0ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5kZXggYWNmOTA5MDZlYWRkMjA5ZDBkMDRiNGE4ZGY4
NzBlODBmNWU5N2RlNy4uZDQ2MTBjYWU5Mjc0NzliZGU2MDE0M2MzZWFhNDBhNzlmNzhhZGI4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCkBAIC0xODUs
MTIgKzE4NSwxMSBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpzYXZlRG9jdW1lbnRTdGF0ZSgp
CiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm47CiAKLSAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBtX2ZyYW1lLmRvY3VtZW50KCk7Ci0gICAgQVNTRVJUKGRvY3VtZW50KTsKLSAgICAKLSAg
ICBpZiAoaXRlbS0+aXNDdXJyZW50RG9jdW1lbnQoZG9jdW1lbnQpICYmIGRvY3VtZW50LT5oYXNM
aXZpbmdSZW5kZXJUcmVlKCkpIHsKKyAgICBBU1NFUlQobV9mcmFtZS5kb2N1bWVudCgpKTsKKyAg
ICBEb2N1bWVudCYgZG9jdW1lbnQgPSAqbV9mcmFtZS5kb2N1bWVudCgpOworICAgIGlmIChpdGVt
LT5pc0N1cnJlbnREb2N1bWVudChkb2N1bWVudCkgJiYgZG9jdW1lbnQuaGFzTGl2aW5nUmVuZGVy
VHJlZSgpKSB7CiAgICAgICAgIExPRyhMb2FkaW5nLCAiV2ViQ29yZUxvYWRpbmcgJXM6IHNhdmlu
ZyBmb3JtIHN0YXRlIHRvICVwIiwgbV9mcmFtZS50cmVlKCkudW5pcXVlTmFtZSgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCksIGl0ZW0pOwotICAgICAgICBpdGVtLT5zZXREb2N1bWVudFN0YXRlKGRv
Y3VtZW50LT5mb3JtRWxlbWVudHNTdGF0ZSgpKTsKKyAgICAgICAgaXRlbS0+c2V0RG9jdW1lbnRT
dGF0ZShkb2N1bWVudC5mb3JtRWxlbWVudHNTdGF0ZSgpKTsKICAgICB9CiB9CiAKQEAgLTI1Myw3
ICsyNTIsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjppbnZhbGlkYXRlQ3VycmVudEl0ZW1D
YWNoZWRQYWdlKCkKICAgICB9CiB9CiAKLWJvb2wgSGlzdG9yeUNvbnRyb2xsZXI6OnNob3VsZFN0
b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qIHRhcmdldEl0ZW0pIGNvbnN0Citi
b29sIEhpc3RvcnlDb250cm9sbGVyOjpzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhp
c3RvcnlJdGVtJiB0YXJnZXRJdGVtKSBjb25zdAogewogICAgIGlmICghbV9jdXJyZW50SXRlbSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDY5LDggKzQ2OCw4IEBAIHZvaWQgSGlzdG9yeUNv
bnRyb2xsZXI6OnVwZGF0ZUZvckNvbW1pdCgpCiAgICAgICAgIC8vIE5vdGUgcHJldmlvdXNJdGVt
IG11c3QgYmUgc2V0IGJlZm9yZSB3ZSBjbG9zZSB0aGUgVVJMLCB3aGljaCB3aWxsCiAgICAgICAg
IC8vIGhhcHBlbiB3aGVuIHRoZSBkYXRhIHNvdXJjZSBpcyBtYWRlIG5vbi1wcm92aXNpb25hbCBi
ZWxvdwogICAgICAgICBBU1NFUlQobV9wcm92aXNpb25hbEl0ZW0pOwotICAgICAgICBzZXRDdXJy
ZW50SXRlbShtX3Byb3Zpc2lvbmFsSXRlbS5nZXQoKSk7Ci0gICAgICAgIG1fcHJvdmlzaW9uYWxJ
dGVtID0gMDsKKyAgICAgICAgc2V0Q3VycmVudEl0ZW0oKm1fcHJvdmlzaW9uYWxJdGVtKTsKKyAg
ICAgICAgbV9wcm92aXNpb25hbEl0ZW0gPSBudWxscHRyOwogCiAgICAgICAgIC8vIFRlbGwgYWxs
IG90aGVyIGZyYW1lcyBpbiB0aGUgdHJlZSB0byBjb21taXQgdGhlaXIgcHJvdmlzaW9uYWwgaXRl
bXMgYW5kCiAgICAgICAgIC8vIHJlc3RvcmUgdGhlaXIgc2Nyb2xsIHBvc2l0aW9uLiAgV2UnbGwg
YXZvaWQgdGhpcyBmcmFtZSAod2hpY2ggaGFzIGFscmVhZHkKQEAgLTUxMCw4ICs1MDksOCBAQCB2
b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVVcGRhdGVGb3JDb21taXQoKQogICAgICAg
ICAgICAgdmlldy0+c2V0V2FzU2Nyb2xsZWRCeVVzZXIoZmFsc2UpOwogCiAgICAgICAgIC8vIE5v
dyBjb21taXQgdGhlIHByb3Zpc2lvbmFsIGl0ZW0KLSAgICAgICAgc2V0Q3VycmVudEl0ZW0obV9w
cm92aXNpb25hbEl0ZW0uZ2V0KCkpOwotICAgICAgICBtX3Byb3Zpc2lvbmFsSXRlbSA9IDA7Cisg
ICAgICAgIHNldEN1cnJlbnRJdGVtKCptX3Byb3Zpc2lvbmFsSXRlbSk7CisgICAgICAgIG1fcHJv
dmlzaW9uYWxJdGVtID0gbnVsbHB0cjsKIAogICAgICAgICAvLyBSZXN0b3JlIGZvcm0gc3RhdGUg
KHdvcmtzIGZyb20gY3VycmVudEl0ZW0pCiAgICAgICAgIHJlc3RvcmVEb2N1bWVudFN0YXRlKCk7
CkBAIC01NTUsMTIgKzU1NCwxMiBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVV
cGRhdGVGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCkKIAogICAgIC8vIFRoZSBwcm92aXNpb25h
bCBpdGVtIG1heSByZXByZXNlbnQgYSBkaWZmZXJlbnQgcGVuZGluZyBuYXZpZ2F0aW9uLgogICAg
IC8vIERvbid0IGNvbW1pdCBpdCBpZiBpdCBpc24ndCBhIHNhbWUgZG9jdW1lbnQgbmF2aWdhdGlv
bi4KLSAgICBpZiAobV9jdXJyZW50SXRlbSAmJiAhbV9jdXJyZW50SXRlbS0+c2hvdWxkRG9TYW1l
RG9jdW1lbnROYXZpZ2F0aW9uVG8obV9wcm92aXNpb25hbEl0ZW0uZ2V0KCkpKQorICAgIGlmICht
X2N1cnJlbnRJdGVtICYmICFtX2N1cnJlbnRJdGVtLT5zaG91bGREb1NhbWVEb2N1bWVudE5hdmln
YXRpb25UbygqbV9wcm92aXNpb25hbEl0ZW0pKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBD
b21taXQgdGhlIHByb3Zpc2lvbmFsIGl0ZW0uCi0gICAgc2V0Q3VycmVudEl0ZW0obV9wcm92aXNp
b25hbEl0ZW0uZ2V0KCkpOwotICAgIG1fcHJvdmlzaW9uYWxJdGVtID0gMDsKKyAgICBzZXRDdXJy
ZW50SXRlbSgqbV9wcm92aXNpb25hbEl0ZW0pOworICAgIG1fcHJvdmlzaW9uYWxJdGVtID0gbnVs
bHB0cjsKIAogICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgcmVzdCBvZiB0aGUgdHJlZS4KICAgICBm
b3IgKEZyYW1lKiBjaGlsZCA9IG1fZnJhbWUudHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPnRyZWUoKS5uZXh0U2libGluZygpKQpAQCAtNTc1LDExICs1NzQsMTEgQEAg
dm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yRnJhbWVMb2FkQ29tcGxldGVkKCkKICAg
ICBtX2ZyYW1lTG9hZENvbXBsZXRlID0gdHJ1ZTsKIH0KIAotdm9pZCBIaXN0b3J5Q29udHJvbGxl
cjo6c2V0Q3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCit2b2lkIEhpc3RvcnlDb250cm9s
bGVyOjpzZXRDdXJyZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSkKIHsKICAgICBtX2ZyYW1lTG9h
ZENvbXBsZXRlID0gZmFsc2U7CiAgICAgbV9wcmV2aW91c0l0ZW0gPSBtX2N1cnJlbnRJdGVtOwot
ICAgIG1fY3VycmVudEl0ZW0gPSBpdGVtOworICAgIG1fY3VycmVudEl0ZW0gPSAmaXRlbTsKIH0K
IAogdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2V0Q3VycmVudEl0ZW1UaXRsZShjb25zdCBTdHJp
bmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKQEAgLTYxMCw3ICs2MDksNyBAQCB2b2lkIEhpc3RvcnlD
b250cm9sbGVyOjpzZXRQcm92aXNpb25hbEl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiAgICAgbV9w
cm92aXNpb25hbEl0ZW0gPSBpdGVtOwogfQogCi12b2lkIEhpc3RvcnlDb250cm9sbGVyOjppbml0
aWFsaXplSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKK3ZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6Omlu
aXRpYWxpemVJdGVtKEhpc3RvcnlJdGVtJiBpdGVtKQogewogICAgIERvY3VtZW50TG9hZGVyKiBk
b2N1bWVudExvYWRlciA9IG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBB
U1NFUlQoZG9jdW1lbnRMb2FkZXIpOwpAQCAtNjQyLDM0ICs2NDEsMzQgQEAgdm9pZCBIaXN0b3J5
Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiAgICAgU3RyaW5n
IHBhcmVudCA9IHBhcmVudEZyYW1lID8gcGFyZW50RnJhbWUtPnRyZWUoKS51bmlxdWVOYW1lKCkg
OiAiIjsKICAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIHRpdGxlID0gZG9jdW1lbnRMb2FkZXItPnRp
dGxlKCk7CiAKLSAgICBpdGVtLT5zZXRVUkwodXJsKTsKLSAgICBpdGVtLT5zZXRUYXJnZXQobV9m
cmFtZS50cmVlKCkudW5pcXVlTmFtZSgpKTsKLSAgICBpdGVtLT5zZXRQYXJlbnQocGFyZW50KTsK
KyAgICBpdGVtLnNldFVSTCh1cmwpOworICAgIGl0ZW0uc2V0VGFyZ2V0KG1fZnJhbWUudHJlZSgp
LnVuaXF1ZU5hbWUoKSk7CisgICAgaXRlbS5zZXRQYXJlbnQocGFyZW50KTsKICAgICAvLyBGSVhN
RTogc2hvdWxkIHN0b3JlIHRpdGxlIGRpcmVjdGlvbmFsaXR5IGluIGhpc3RvcnkgYXMgd2VsbC4K
LSAgICBpdGVtLT5zZXRUaXRsZSh0aXRsZS5zdHJpbmcoKSk7Ci0gICAgaXRlbS0+c2V0T3JpZ2lu
YWxVUkxTdHJpbmcob3JpZ2luYWxVUkwuc3RyaW5nKCkpOworICAgIGl0ZW0uc2V0VGl0bGUodGl0
bGUuc3RyaW5nKCkpOworICAgIGl0ZW0uc2V0T3JpZ2luYWxVUkxTdHJpbmcob3JpZ2luYWxVUkwu
c3RyaW5nKCkpOwogCiAgICAgaWYgKCF1bnJlYWNoYWJsZVVSTC5pc0VtcHR5KCkgfHwgZG9jdW1l
bnRMb2FkZXItPnJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApCi0gICAgICAgIGl0
ZW0tPnNldExhc3RWaXNpdFdhc0ZhaWx1cmUodHJ1ZSk7CisgICAgICAgIGl0ZW0uc2V0TGFzdFZp
c2l0V2FzRmFpbHVyZSh0cnVlKTsKIAogICAgIC8vIFNhdmUgZm9ybSBzdGF0ZSBpZiB0aGlzIGlz
IGEgUE9TVAotICAgIGl0ZW0tPnNldEZvcm1JbmZvRnJvbVJlcXVlc3QoZG9jdW1lbnRMb2FkZXIt
PnJlcXVlc3QoKSk7CisgICAgaXRlbS5zZXRGb3JtSW5mb0Zyb21SZXF1ZXN0KGRvY3VtZW50TG9h
ZGVyLT5yZXF1ZXN0KCkpOwogfQogCi1QYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBIaXN0b3J5Q29u
dHJvbGxlcjo6Y3JlYXRlSXRlbSgpCitSZWY8SGlzdG9yeUl0ZW0+IEhpc3RvcnlDb250cm9sbGVy
OjpjcmVhdGVJdGVtKCkKIHsKLSAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBIaXN0b3J5
SXRlbTo6Y3JlYXRlKCk7Ci0gICAgaW5pdGlhbGl6ZUl0ZW0oaXRlbS5nZXQoKSk7CisgICAgUmVm
PEhpc3RvcnlJdGVtPiBpdGVtID0gSGlzdG9yeUl0ZW06OmNyZWF0ZSgpOworICAgIGluaXRpYWxp
emVJdGVtKGl0ZW0pOwogICAgIAogICAgIC8vIFNldCB0aGUgaXRlbSBmb3Igd2hpY2ggd2Ugd2ls
bCBzYXZlIGRvY3VtZW50IHN0YXRlCi0gICAgc2V0Q3VycmVudEl0ZW0oaXRlbS5nZXQoKSk7Cisg
ICAgc2V0Q3VycmVudEl0ZW0oaXRlbSk7CiAgICAgCi0gICAgcmV0dXJuIGl0ZW0ucmVsZWFzZSgp
OworICAgIHJldHVybiBpdGVtOwogfQogCi1QYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBIaXN0b3J5
Q29udHJvbGxlcjo6Y3JlYXRlSXRlbVRyZWUoRnJhbWUmIHRhcmdldEZyYW1lLCBib29sIGNsaXBB
dFRhcmdldCkKK1JlZjxIaXN0b3J5SXRlbT4gSGlzdG9yeUNvbnRyb2xsZXI6OmNyZWF0ZUl0ZW1U
cmVlKEZyYW1lJiB0YXJnZXRGcmFtZSwgYm9vbCBjbGlwQXRUYXJnZXQpCiB7Ci0gICAgUmVmUHRy
PEhpc3RvcnlJdGVtPiBiZkl0ZW0gPSBjcmVhdGVJdGVtKCk7CisgICAgUmVmPEhpc3RvcnlJdGVt
PiBiZkl0ZW0gPSBjcmVhdGVJdGVtKCk7CiAgICAgaWYgKCFtX2ZyYW1lTG9hZENvbXBsZXRlKQog
ICAgICAgICBzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0obV9wcmV2aW91c0l0
ZW0uZ2V0KCkpOwogCkBAIC03MTcsNyArNzE2LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6
cmVjdXJzaXZlU2V0UHJvdmlzaW9uYWxJdGVtKEhpc3RvcnlJdGVtJiBpdGVtLCBIaXN0b3J5SXQK
ICAgICAvLyBTZXQgcHJvdmlzaW9uYWwgaXRlbSwgd2hpY2ggd2lsbCBiZSBjb21taXR0ZWQgaW4g
cmVjdXJzaXZlVXBkYXRlRm9yQ29tbWl0LgogICAgIG1fcHJvdmlzaW9uYWxJdGVtID0gJml0ZW07
CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkSXRlbSA6IGl0ZW0uY2hpbGRyZW4oKSkgewor
ICAgIGZvciAoYXV0byYgY2hpbGRJdGVtIDogaXRlbS5jaGlsZHJlbigpKSB7CiAgICAgICAgIGNv
bnN0IFN0cmluZyYgY2hpbGRGcmFtZU5hbWUgPSBjaGlsZEl0ZW0tPnRhcmdldCgpOwogCiAgICAg
ICAgIEhpc3RvcnlJdGVtKiBmcm9tQ2hpbGRJdGVtID0gZnJvbUl0ZW0tPmNoaWxkSXRlbVdpdGhU
YXJnZXQoY2hpbGRGcmFtZU5hbWUpOwpAQCAtNzI1LDcgKzcyNCw3IEBAIHZvaWQgSGlzdG9yeUNv
bnRyb2xsZXI6OnJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFsSXRlbShIaXN0b3J5SXRlbSYgaXRlbSwg
SGlzdG9yeUl0CiAgICAgICAgIEZyYW1lKiBjaGlsZEZyYW1lID0gbV9mcmFtZS50cmVlKCkuY2hp
bGQoY2hpbGRGcmFtZU5hbWUpOwogICAgICAgICBBU1NFUlQoY2hpbGRGcmFtZSk7CiAKLSAgICAg
ICAgY2hpbGRGcmFtZS0+bG9hZGVyKCkuaGlzdG9yeSgpLnJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFs
SXRlbSgqY2hpbGRJdGVtLCBmcm9tQ2hpbGRJdGVtKTsKKyAgICAgICAgY2hpbGRGcmFtZS0+bG9h
ZGVyKCkuaGlzdG9yeSgpLnJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFsSXRlbShjb25zdF9jYXN0PEhp
c3RvcnlJdGVtJj4oY2hpbGRJdGVtLmdldCgpKSwgZnJvbUNoaWxkSXRlbSk7CiAgICAgfQogfQog
CkBAIC03MzksMTQgKzczOCwxNCBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVH
b1RvSXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgSGlzdG9yeUl0ZW0qIGZyb21JdAogICAgIH0KIAog
ICAgIC8vIEp1c3QgaXRlcmF0ZSBvdmVyIHRoZSByZXN0LCBsb29raW5nIGZvciBmcmFtZXMgdG8g
bmF2aWdhdGUuCi0gICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZEl0ZW0gOiBpdGVtLmNoaWxkcmVu
KCkpIHsKKyAgICBmb3IgKGF1dG8mIGNoaWxkSXRlbSA6IGl0ZW0uY2hpbGRyZW4oKSkgewogICAg
ICAgICBjb25zdCBTdHJpbmcmIGNoaWxkRnJhbWVOYW1lID0gY2hpbGRJdGVtLT50YXJnZXQoKTsK
IAogICAgICAgICBIaXN0b3J5SXRlbSogZnJvbUNoaWxkSXRlbSA9IGZyb21JdGVtLT5jaGlsZEl0
ZW1XaXRoVGFyZ2V0KGNoaWxkRnJhbWVOYW1lKTsKICAgICAgICAgQVNTRVJUKGZyb21DaGlsZEl0
ZW0pOwogICAgICAgICBGcmFtZSogY2hpbGRGcmFtZSA9IG1fZnJhbWUudHJlZSgpLmNoaWxkKGNo
aWxkRnJhbWVOYW1lKTsKICAgICAgICAgQVNTRVJUKGNoaWxkRnJhbWUpOwotICAgICAgICBjaGls
ZEZyYW1lLT5sb2FkZXIoKS5oaXN0b3J5KCkucmVjdXJzaXZlR29Ub0l0ZW0oKmNoaWxkSXRlbSwg
ZnJvbUNoaWxkSXRlbSwgdHlwZSk7CisgICAgICAgIGNoaWxkRnJhbWUtPmxvYWRlcigpLmhpc3Rv
cnkoKS5yZWN1cnNpdmVHb1RvSXRlbShjb25zdF9jYXN0PEhpc3RvcnlJdGVtJj4oY2hpbGRJdGVt
LmdldCgpKSwgZnJvbUNoaWxkSXRlbSwgdHlwZSk7CiAgICAgfQogfQogCkBAIC03NjMsNyArNzYy
LDcgQEAgYm9vbCBIaXN0b3J5Q29udHJvbGxlcjo6aXRlbXNBcmVDbG9uZXMoSGlzdG9yeUl0ZW0m
IGl0ZW0xLCBIaXN0b3J5SXRlbSogaXRlbTIpIGMKICAgICAgICAgJiYgJml0ZW0xICE9IGl0ZW0y
CiAgICAgICAgICYmIGl0ZW0xLml0ZW1TZXF1ZW5jZU51bWJlcigpID09IGl0ZW0yLT5pdGVtU2Vx
dWVuY2VOdW1iZXIoKQogICAgICAgICAmJiBjdXJyZW50RnJhbWVzTWF0Y2hJdGVtKCZpdGVtMSkK
LSAgICAgICAgJiYgaXRlbTItPmhhc1NhbWVGcmFtZXMoJml0ZW0xKTsKKyAgICAgICAgJiYgaXRl
bTItPmhhc1NhbWVGcmFtZXMoaXRlbTEpOwogfQogCiAvLyBIZWxwZXIgbWV0aG9kIHRoYXQgZGV0
ZXJtaW5lcyB3aGV0aGVyIHRoZSBjdXJyZW50IGZyYW1lIHRyZWUgbWF0Y2hlcyBnaXZlbiBoaXN0
b3J5IGl0ZW0ncy4KQEAgLTgwMSw5ICs4MDAsOSBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1
cGRhdGVCYWNrRm9yd2FyZExpc3RDbGlwcGVkQXRUYXJnZXQoYm9vbCBkb0NsaXApCiAKICAgICBG
cmFtZUxvYWRlciYgZnJhbWVMb2FkZXIgPSBtX2ZyYW1lLm1haW5GcmFtZSgpLmxvYWRlcigpOwog
Ci0gICAgUmVmUHRyPEhpc3RvcnlJdGVtPiB0b3BJdGVtID0gZnJhbWVMb2FkZXIuaGlzdG9yeSgp
LmNyZWF0ZUl0ZW1UcmVlKG1fZnJhbWUsIGRvQ2xpcCk7Ci0gICAgTE9HKEJhY2tGb3J3YXJkLCAi
V2ViQ29yZUJhY2tGb3J3YXJkIC0gQWRkaW5nIGJhY2tmb3J3YXJkIGl0ZW0gJXAgZm9yIGZyYW1l
ICVzIiwgdG9wSXRlbS5nZXQoKSwgbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51
cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgcGFnZS0+YmFja0ZvcndhcmQoKS5h
ZGRJdGVtKHRvcEl0ZW0ucmVsZWFzZSgpKTsKKyAgICBSZWY8SGlzdG9yeUl0ZW0+IHRvcEl0ZW0g
PSBmcmFtZUxvYWRlci5oaXN0b3J5KCkuY3JlYXRlSXRlbVRyZWUobV9mcmFtZSwgZG9DbGlwKTsK
KyAgICBMT0coQmFja0ZvcndhcmQsICJXZWJDb3JlQmFja0ZvcndhcmQgLSBBZGRpbmcgYmFja2Zv
cndhcmQgaXRlbSAlcCBmb3IgZnJhbWUgJXMiLCB0b3BJdGVtLnB0cigpLCBtX2ZyYW1lLmxvYWRl
cigpLmRvY3VtZW50TG9hZGVyKCktPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAg
ICBwYWdlLT5iYWNrRm9yd2FyZCgpLmFkZEl0ZW0oV1RGOjptb3ZlKHRvcEl0ZW0pKTsKIH0KIAog
dm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlQ3VycmVudEl0ZW0oKQpAQCAtODIzLDcgKzgy
Miw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUN1cnJlbnRJdGVtKCkKICAgICAg
ICAgLy8gZGVwZW5kZW50IG9uIHRoZSBkb2N1bWVudC4KICAgICAgICAgYm9vbCBpc1RhcmdldEl0
ZW0gPSBtX2N1cnJlbnRJdGVtLT5pc1RhcmdldEl0ZW0oKTsKICAgICAgICAgbV9jdXJyZW50SXRl
bS0+cmVzZXQoKTsKLSAgICAgICAgaW5pdGlhbGl6ZUl0ZW0obV9jdXJyZW50SXRlbS5nZXQoKSk7
CisgICAgICAgIGluaXRpYWxpemVJdGVtKCptX2N1cnJlbnRJdGVtKTsKICAgICAgICAgbV9jdXJy
ZW50SXRlbS0+c2V0SXNUYXJnZXRJdGVtKGlzVGFyZ2V0SXRlbSk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgLy8gRXZlbiBpZiB0aGUgZmluYWwgVVJMIGRpZG4ndCBjaGFuZ2UsIHRoZSBmb3JtIGRh
dGEgbWF5IGhhdmUgY2hhbmdlZC4KQEAgLTg0MCw3ICs4MzksNyBAQCB2b2lkIEhpc3RvcnlDb250
cm9sbGVyOjpwdXNoU3RhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRl
T2JqZWN0LAogICAgIEFTU0VSVChwYWdlKTsKIAogICAgIC8vIEdldCBhIEhpc3RvcnlJdGVtIHRy
ZWUgZm9yIHRoZSBjdXJyZW50IGZyYW1lIHRyZWUuCi0gICAgUmVmUHRyPEhpc3RvcnlJdGVtPiB0
b3BJdGVtID0gbV9mcmFtZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5oaXN0b3J5KCkuY3JlYXRlSXRl
bVRyZWUobV9mcmFtZSwgZmFsc2UpOworICAgIFJlZjxIaXN0b3J5SXRlbT4gdG9wSXRlbSA9IG1f
ZnJhbWUubWFpbkZyYW1lKCkubG9hZGVyKCkuaGlzdG9yeSgpLmNyZWF0ZUl0ZW1UcmVlKG1fZnJh
bWUsIGZhbHNlKTsKICAgICAKICAgICAvLyBPdmVycmlkZSBkYXRhIGluIHRoZSBjdXJyZW50IGl0
ZW0gKGNyZWF0ZWQgYnkgY3JlYXRlSXRlbVRyZWUpIHRvIHJlZmxlY3QKICAgICAvLyB0aGUgcHVz
aFN0YXRlKCkgYXJndW1lbnRzLgpAQCAtODQ4LDcgKzg0Nyw3IEBAIHZvaWQgSGlzdG9yeUNvbnRy
b2xsZXI6OnB1c2hTdGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVP
YmplY3QsCiAgICAgbV9jdXJyZW50SXRlbS0+c2V0U3RhdGVPYmplY3Qoc3RhdGVPYmplY3QpOwog
ICAgIG1fY3VycmVudEl0ZW0tPnNldFVSTFN0cmluZyh1cmxTdHJpbmcpOwogCi0gICAgcGFnZS0+
YmFja0ZvcndhcmQoKS5hZGRJdGVtKHRvcEl0ZW0ucmVsZWFzZSgpKTsKKyAgICBwYWdlLT5iYWNr
Rm9yd2FyZCgpLmFkZEl0ZW0oV1RGOjptb3ZlKHRvcEl0ZW0pKTsKIAogICAgIGlmIChtX2ZyYW1l
LnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaAppbmRleCAxYjQwYTgwYjBlMzI3MThi
MzNlZmI0MjJhYWZlNjc2ZmJjM2M3ZmU4Li5lMzk1MmM2NTU5NDMyZTc4YmE5ZDU3ZDYwMDc5Mjgy
MGE2ZjA4NzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaApA
QCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVGb3JGcmFtZUxvYWRDb21w
bGV0ZWQoKTsKIAogICAgIEhpc3RvcnlJdGVtKiBjdXJyZW50SXRlbSgpIGNvbnN0IHsgcmV0dXJu
IG1fY3VycmVudEl0ZW0uZ2V0KCk7IH0KLSAgICB2b2lkIHNldEN1cnJlbnRJdGVtKEhpc3RvcnlJ
dGVtKik7CisgICAgdm9pZCBzZXRDdXJyZW50SXRlbShIaXN0b3J5SXRlbSYpOwogICAgIHZvaWQg
c2V0Q3VycmVudEl0ZW1UaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgYm9v
bCBjdXJyZW50SXRlbVNob3VsZEJlUmVwbGFjZWQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlcGxhY2VDdXJyZW50SXRlbShIaXN0b3J5SXRlbSopOwpAQCAtOTIsMTIgKzkyLDEy
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUGFnZTsKLSAgICBib29s
IHNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdDsKKyAg
ICBib29sIHNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0mKSBjb25z
dDsKICAgICB2b2lkIGdvVG9JdGVtKEhpc3RvcnlJdGVtJiwgRnJhbWVMb2FkVHlwZSk7CiAKLSAg
ICB2b2lkIGluaXRpYWxpemVJdGVtKEhpc3RvcnlJdGVtKik7Ci0gICAgUGFzc1JlZlB0cjxIaXN0
b3J5SXRlbT4gY3JlYXRlSXRlbSgpOwotICAgIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGNyZWF0
ZUl0ZW1UcmVlKEZyYW1lJiB0YXJnZXRGcmFtZSwgYm9vbCBjbGlwQXRUYXJnZXQpOworICAgIHZv
aWQgaW5pdGlhbGl6ZUl0ZW0oSGlzdG9yeUl0ZW0mKTsKKyAgICBSZWY8SGlzdG9yeUl0ZW0+IGNy
ZWF0ZUl0ZW0oKTsKKyAgICBSZWY8SGlzdG9yeUl0ZW0+IGNyZWF0ZUl0ZW1UcmVlKEZyYW1lJiB0
YXJnZXRGcmFtZSwgYm9vbCBjbGlwQXRUYXJnZXQpOwogCiAgICAgdm9pZCByZWN1cnNpdmVTZXRQ
cm92aXNpb25hbEl0ZW0oSGlzdG9yeUl0ZW0mLCBIaXN0b3J5SXRlbSopOwogICAgIHZvaWQgcmVj
dXJzaXZlR29Ub0l0ZW0oSGlzdG9yeUl0ZW0mLCBIaXN0b3J5SXRlbSosIEZyYW1lTG9hZFR5cGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMjdjMDRiNTk1OGRjYmFmMmRiNTVmNmZiZTIzYTUxN2Jm
NmQyMTU1Mi4uMDZiOTFiYWYwY2U4OTE2OTExNmMyMTViYWNiNGJkMThkYjg1OTk0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCkBAIC00MzYsNyArNDM2LDcgQEAgdm9pZCBQYWdlOjpnb1RvSXRlbShIaXN0
b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSB0eXBlKQogICAgIC8vIGJlaW5nIGRlcmVmKCkt
ZWQuIE1ha2Ugc3VyZSB3ZSBjYW4gc3RpbGwgdXNlIGl0IHdpdGggSGlzdG9yeUNvbnRyb2xsZXI6
OmdvVG9JdGVtIGxhdGVyLgogICAgIFJlZjxIaXN0b3J5SXRlbT4gcHJvdGVjdG9yKGl0ZW0pOwog
Ci0gICAgaWYgKG1fbWFpbkZyYW1lLT5sb2FkZXIoKS5oaXN0b3J5KCkuc2hvdWxkU3RvcExvYWRp
bmdGb3JIaXN0b3J5SXRlbSgmaXRlbSkpCisgICAgaWYgKG1fbWFpbkZyYW1lLT5sb2FkZXIoKS5o
aXN0b3J5KCkuc2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbShpdGVtKSkKICAgICAgICAg
bV9tYWluRnJhbWUtPmxvYWRlcigpLnN0b3BBbGxMb2FkZXJzKCk7CiAKICAgICBtX21haW5GcmFt
ZS0+bG9hZGVyKCkuaGlzdG9yeSgpLmdvVG9JdGVtKGl0ZW0sIHR5cGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbQppbmRleCBlYmZiZDRkMDA0
MTAyM2MyNWMyYzY5ZTg0NzkwODJjOGM0MjYzNTdmLi45M2JlNjg1NTI0MzMwYmFkMzYyZmVjMmFk
NzE3OGEzN2JlYjliZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dl
YkJhY2tGb3J3YXJkTGlzdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkJh
Y2tGb3J3YXJkTGlzdC5tbQpAQCAtMTUzLDcgKzE1Myw4IEBAIC0gKHZvaWQpX2Nsb3NlCiAKIC0g
KHZvaWQpYWRkSXRlbTooV2ViSGlzdG9yeUl0ZW0gKillbnRyeQogewotICAgIGNvcmUoc2VsZikt
PmFkZEl0ZW0oY29yZShlbnRyeSkpOworICAgIEFTU0VSVChlbnRyeSk7CisgICAgY29yZShzZWxm
KS0+YWRkSXRlbSgqY29yZShlbnRyeSkpOwogICAgIAogICAgIC8vIFNpbmNlIHRoZSBhc3N1bWVk
IGNvbnRyYWN0IHdpdGggV2ViQmFja0ZvcndhcmRMaXN0IGlzIHRoYXQgaXQgcmV0YWlucyBpdHMg
V2ViSGlzdG9yeUl0ZW1zLAogICAgIC8vIHRoZSBmb2xsb3dpbmcgbGluZSBwcmV2ZW50cyBhIHdo
b2xlIGNsYXNzIG9mIHByb2JsZW1zIHdoZXJlIGEgaGlzdG9yeSBpdGVtIHdpbGwgYmUgY3JlYXRl
ZCBpbgpAQCAtMjU1LDcgKzI1Niw3IEBAIHN0YXRpYyBOU0FycmF5KiB2ZWN0b3JUb05TQXJyYXko
SGlzdG9yeUl0ZW1WZWN0b3ImIGxpc3QpCiAgICAgdW5zaWduZWQgc2l6ZSA9IGxpc3Quc2l6ZSgp
OwogICAgIE5TTXV0YWJsZUFycmF5ICpyZXN1bHQgPSBbW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdFdpdGhDYXBhY2l0eTpzaXplXSBhdXRvcmVsZWFzZV07CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3Jlc3VsdCBhZGRPYmplY3Q6a2l0KGxpc3Rb
aV0uZ2V0KCkpXTsKKyAgICAgICAgW3Jlc3VsdCBhZGRPYmplY3Q6a2l0KGxpc3RbaV0ucHRyKCkp
XTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0zMjcsMTQgKzMyOCwxNCBAQCAtKE5TU3Ry
aW5nICopZGVzY3JpcHRpb24KICAgICAKICAgICB1bnNpZ25lZCBzaXplID0gZW50cmllcy5zaXpl
KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBp
ZiAoZW50cmllc1tpXSA9PSBiYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCkpIHsKKyAgICAg
ICAgaWYgKGVudHJpZXNbaV0ucHRyKCkgPT0gYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgp
KSB7CiAgICAgICAgICAgICBbcmVzdWx0IGFwcGVuZFN0cmluZzpAIiA+Pj4iXTsgCiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBbcmVzdWx0IGFwcGVuZFN0cmluZzpAIiAgICAiXTsgCiAg
ICAgICAgIH0gICAKICAgICAgICAgW3Jlc3VsdCBhcHBlbmRGb3JtYXQ6QCIlMmQpICIsIGldOwog
ICAgICAgICBpbnQgY3VyclBvcyA9IFtyZXN1bHQgbGVuZ3RoXTsKLSAgICAgICAgW3Jlc3VsdCBh
cHBlbmRTdHJpbmc6W2tpdChlbnRyaWVzW2ldLmdldCgpKSBkZXNjcmlwdGlvbl1dOworICAgICAg
ICBbcmVzdWx0IGFwcGVuZFN0cmluZzpba2l0KGVudHJpZXNbaV0ucHRyKCkpIGRlc2NyaXB0aW9u
XV07CiAKICAgICAgICAgLy8gc2hpZnQgYWxsIHRoZSBjb250ZW50cyBvdmVyLiAgYSBiaXQgc2xv
dywgYnV0IHRoaXMgaXMgZm9yIGRlYnVnZ2luZwogICAgICAgICBOU1JhbmdlIHJlcGxSYW5nZSA9
IHsgc3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oY3VyclBvcyksIFtyZXN1bHQgbGVuZ3RoXSAtIGN1
cnJQb3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9y
eUl0ZW0ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCmlu
ZGV4IGU2NzdiMDFlNzNiZGNmMjI3YjI4ZjQxZjg4Y2ExNjE5NWQ5NWRjM2IuLmFlNzYwMWZjZDcx
ZDEzODYwNjkxNTMzZTU1MDI3ZDRlZjNhNjJiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvSGlz
dG9yeS9XZWJIaXN0b3J5SXRlbS5tbQpAQCAtMjU4LDcgKzI1OCw3IEBAIC0gKE5TU3RyaW5nICop
ZGVzY3JpcHRpb24KICAgICAgICAgaW50IGN1cnJQb3MgPSBbcmVzdWx0IGxlbmd0aF07CiAgICAg
ICAgIHVuc2lnbmVkIHNpemUgPSBjaGlsZHJlbi5zaXplKCk7ICAgICAgICAKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAgV2ViSGlzdG9y
eUl0ZW0gKmNoaWxkID0ga2l0KGNoaWxkcmVuW2ldLmdldCgpKTsKKyAgICAgICAgICAgIFdlYkhp
c3RvcnlJdGVtICpjaGlsZCA9IGtpdChjb25zdF9jYXN0PEhpc3RvcnlJdGVtKj4oY2hpbGRyZW5b
aV0ucHRyKCkpKTsKICAgICAgICAgICAgIFtyZXN1bHQgYXBwZW5kU3RyaW5nOkAiXG4iXTsKICAg
ICAgICAgICAgIFtyZXN1bHQgYXBwZW5kU3RyaW5nOltjaGlsZCBkZXNjcmlwdGlvbl1dOwogICAg
ICAgICB9CkBAIC0zODAsNyArMzgwLDcgQEAgLSAoaWQpaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVz
ZW50YXRpb246KE5TRGljdGlvbmFyeSAqKWRpY3QKICAgICBpZiAoY2hpbGREaWN0cykgewogICAg
ICAgICBmb3IgKGludCBpID0gW2NoaWxkRGljdHMgY291bnRdIC0gMTsgaSA+PSAwOyBpLS0pIHsK
ICAgICAgICAgICAgIFdlYkhpc3RvcnlJdGVtICpjaGlsZCA9IFtbV2ViSGlzdG9yeUl0ZW0gYWxs
b2NdIGluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOltjaGlsZERpY3RzIG9iamVjdEF0
SW5kZXg6aV1dOwotICAgICAgICAgICAgY29yZShfcHJpdmF0ZSktPmFkZENoaWxkSXRlbShjb3Jl
KGNoaWxkLT5fcHJpdmF0ZSkpOworICAgICAgICAgICAgY29yZShfcHJpdmF0ZSktPmFkZENoaWxk
SXRlbSgqY29yZShjaGlsZC0+X3ByaXZhdGUpKTsKICAgICAgICAgICAgIFtjaGlsZCByZWxlYXNl
XTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ4MSw3ICs0ODEsNyBAQCAtIChOU0RpY3Rpb25hcnkg
KilkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24KICAgICAgICAgTlNNdXRhYmxlQXJyYXkgKmNoaWxk
RGljdHMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6Y2hpbGRyZW4uc2l6ZSgp
XTsKICAgICAgICAgCiAgICAgICAgIGZvciAoaW50IGkgPSBjaGlsZHJlbi5zaXplKCkgLSAxOyBp
ID49IDA7IGktLSkKLSAgICAgICAgICAgIFtjaGlsZERpY3RzIGFkZE9iamVjdDpba2l0KGNoaWxk
cmVuW2ldLmdldCgpKSBkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb25dXTsKKyAgICAgICAgICAgIFtj
aGlsZERpY3RzIGFkZE9iamVjdDpba2l0KGNvbnN0X2Nhc3Q8SGlzdG9yeUl0ZW0qPihjaGlsZHJl
bltpXS5wdHIoKSkpIGRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbl1dOwogICAgICAgICBbZGljdCBz
ZXRPYmplY3Q6IGNoaWxkRGljdHMgZm9yS2V5OmNoaWxkcmVuS2V5XTsKICAgICB9CiAKQEAgLTU0
MSw3ICs1NDEsNyBAQCAtIChOU0FycmF5ICopY2hpbGRyZW4KICAgICBOU011dGFibGVBcnJheSAq
cmVzdWx0ID0gW1tbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6c2l6ZV0g
YXV0b3JlbGVhc2VdOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyAr
K2kpCi0gICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0OmtpdChjaGlsZHJlbltpXS5nZXQoKSldOwor
ICAgICAgICBbcmVzdWx0IGFkZE9iamVjdDpraXQoY29uc3RfY2FzdDxIaXN0b3J5SXRlbSo+KGNo
aWxkcmVuW2ldLnB0cigpKSldOwogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNzRhZDU1YTk0NmVkOGUzOTcwNGE2ZGQzYmE4
NDhhYmM4ODAxMGVhMi4uNDgzY2EwZWUxNGZlYzYwOTFhMjNkZmU2YjBkYTI4ZDkwOTdlNDlkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjAwMiwxMCArMjAwMiwxMCBA
QCAtICh2b2lkKV9sb2FkQmFja0ZvcndhcmRMaXN0RnJvbU90aGVyVmlldzooV2ViVmlldyAqKW90
aGVyVmlldwogICAgICAgICAgICAgLy8gdW50aWwgd2UgbGVhdmUgdGhhdCBwYWdlLgogICAgICAg
ICAgICAgb3RoZXJWaWV3LT5fcHJpdmF0ZS0+cGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuaGlz
dG9yeSgpLnNhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlKCk7CiAgICAgICAgIH0KLSAgICAgICAg
UmVmUHRyPEhpc3RvcnlJdGVtPiBuZXdJdGVtID0gb3RoZXJCYWNrRm9yd2FyZENsaWVudC0+aXRl
bUF0SW5kZXgoaSktPmNvcHkoKTsKKyAgICAgICAgUmVmPEhpc3RvcnlJdGVtPiBuZXdJdGVtID0g
b3RoZXJCYWNrRm9yd2FyZENsaWVudC0+aXRlbUF0SW5kZXgoaSktPmNvcHkoKTsKICAgICAgICAg
aWYgKGkgPT0gMCkgCi0gICAgICAgICAgICBuZXdJdGVtVG9Hb1RvID0gbmV3SXRlbS5nZXQoKTsK
LSAgICAgICAgYmFja0ZvcndhcmRDbGllbnQtPmFkZEl0ZW0obmV3SXRlbS5yZWxlYXNlKCkpOwor
ICAgICAgICAgICAgbmV3SXRlbVRvR29UbyA9IG5ld0l0ZW0ucHRyKCk7CisgICAgICAgIGJhY2tG
b3J3YXJkQ2xpZW50LT5hZGRJdGVtKFdURjo6bW92ZShuZXdJdGVtKSk7CiAgICAgfQogICAgIAog
ICAgIEFTU0VSVChuZXdJdGVtVG9Hb1RvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVt
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAppbmRleCAyODkxOTM1M2VlZTBjY2Y1MzA4Zjg1
ODMyMDZhYTQwNzgxNGEwYmMwLi5hYWU2YTQ2YWU2MzJmOGI1NGMzZDcyNTdmNjRjZjIwMjkyZjY5
MDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlz
dEl0ZW0uY3BwCkBAIC0zOCw3ICszOCw3IEBAIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gSW5qZWN0
ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtOjpjaGlsZHJlbigpIGNvbnN0CiAgICAgY2hpbGRy
ZW4ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2l0ZW0tPmNoaWxkcmVuKCkuc2l6ZSgpKTsKIAog
ICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBtX2l0ZW0tPmNoaWxkcmVuKCkpCi0gICAgICAg
IGNoaWxkcmVuLnVuY2hlY2tlZEFwcGVuZChJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0
ZW06OmNyZWF0ZShjaGlsZCkpOworICAgICAgICBjaGlsZHJlbi51bmNoZWNrZWRBcHBlbmQoSW5q
ZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoY29uc3RfY2FzdDxIaXN0b3J5
SXRlbSo+KGNoaWxkLnB0cigpKSkpOwogCiAgICAgcmV0dXJuIEFQSTo6QXJyYXk6OmNyZWF0ZShX
VEY6Om1vdmUoY2hpbGRyZW4pKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24u
Y3BwCmluZGV4IGIwOTQwOTk4ZmYwNTA3ZDBhNGUzYzQ0ZDRiNTJkNDgzNjFkZmMwYzguLmZkMGE5
OGU4NDc1OTRjMzQyMDdhMjg1YmI2ZWMzMDU3ZmQ1ODM0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9u
U3RhdGVDb252ZXJzaW9uLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBGcmFtZVN0YXRl
IHRvRnJhbWVTdGF0ZShjb25zdCBIaXN0b3J5SXRlbSYgaGlzdG9yeUl0ZW0pCiAjZW5kaWYKIAog
ICAgIGZvciAoYXV0byYgY2hpbGRIaXN0b3J5SXRlbSA6IGhpc3RvcnlJdGVtLmNoaWxkcmVuKCkp
IHsKLSAgICAgICAgRnJhbWVTdGF0ZSBjaGlsZEZyYW1lU3RhdGUgPSB0b0ZyYW1lU3RhdGUoKmNo
aWxkSGlzdG9yeUl0ZW0pOworICAgICAgICBGcmFtZVN0YXRlIGNoaWxkRnJhbWVTdGF0ZSA9IHRv
RnJhbWVTdGF0ZShjaGlsZEhpc3RvcnlJdGVtKTsKICAgICAgICAgZnJhbWVTdGF0ZS5jaGlsZHJl
bi5hcHBlbmQoV1RGOjptb3ZlKGNoaWxkRnJhbWVTdGF0ZSkpOwogICAgIH0KIApAQCAtMTc4LDEw
ICsxNzgsMTAgQEAgc3RhdGljIHZvaWQgYXBwbHlGcmFtZVN0YXRlKEhpc3RvcnlJdGVtJiBoaXN0
b3J5SXRlbSwgY29uc3QgRnJhbWVTdGF0ZSYgZnJhbWVTdGEKICNlbmRpZgogCiAgICAgZm9yIChj
b25zdCBhdXRvJiBjaGlsZEZyYW1lU3RhdGUgOiBmcmFtZVN0YXRlLmNoaWxkcmVuKSB7Ci0gICAg
ICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gY2hpbGRIaXN0b3J5SXRlbSA9IEhpc3RvcnlJdGVtOjpj
cmVhdGUoY2hpbGRGcmFtZVN0YXRlLnVybFN0cmluZywgU3RyaW5nKCkpOwotICAgICAgICBhcHBs
eUZyYW1lU3RhdGUoKmNoaWxkSGlzdG9yeUl0ZW0sIGNoaWxkRnJhbWVTdGF0ZSk7CisgICAgICAg
IFJlZjxIaXN0b3J5SXRlbT4gY2hpbGRIaXN0b3J5SXRlbSA9IEhpc3RvcnlJdGVtOjpjcmVhdGUo
Y2hpbGRGcmFtZVN0YXRlLnVybFN0cmluZywgU3RyaW5nKCkpOworICAgICAgICBhcHBseUZyYW1l
U3RhdGUoY2hpbGRIaXN0b3J5SXRlbSwgY2hpbGRGcmFtZVN0YXRlKTsKIAotICAgICAgICBoaXN0
b3J5SXRlbS5hZGRDaGlsZEl0ZW0oY2hpbGRIaXN0b3J5SXRlbS5yZWxlYXNlKCkpOworICAgICAg
ICBoaXN0b3J5SXRlbS5hZGRDaGlsZEl0ZW0oV1RGOjptb3ZlKGNoaWxkSGlzdG9yeUl0ZW0pKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCmluZGV4IGE5YzY3NzkwNTZiOTJk
NjBkNDk0YjUxNTg5ZjM0ZDUzMTQ1ODhjZjYuLjlkYzJhNjFkODJiODg5MTg0YmMzMTYzNTE1ZDQw
MGUzNWFkNzRlZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcApAQCAtMTQzLDExICsxNDMs
OSBAQCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHkoV2Vi
UGFnZSogcGFnZSkKICAgICBXZWJDb3JlOjpub3RpZnlIaXN0b3J5SXRlbUNoYW5nZWQgPSBXSzJO
b3RpZnlIaXN0b3J5SXRlbUNoYW5nZWQ7CiB9CiAKLXZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHk6OmFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gcHJwSXRlbSkKK3ZvaWQgV2ViQmFj
a0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW0oUmVmPEhpc3RvcnlJdGVtPiYmIGl0ZW0pCiB7Ci0g
ICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtID0gcHJwSXRlbTsKLQotICAgIEFTU0VSVCghaGlz
dG9yeUl0ZW1Ub0lETWFwKCkuY29udGFpbnMoaXRlbSkpOworICAgIEFTU0VSVCghaGlzdG9yeUl0
ZW1Ub0lETWFwKCkuY29udGFpbnMoaXRlbS5wdHIoKSkpOwogCiAgICAgaWYgKCFtX3BhZ2UpCiAg
ICAgICAgIHJldHVybjsKQEAgLTE1OCwxMCArMTU2LDEwIEBAIHZvaWQgV2ViQmFja0ZvcndhcmRM
aXN0UHJveHk6OmFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gcHJwSXRlbSkKIAogICAg
IG1fYXNzb2NpYXRlZEl0ZW1JRHMuYWRkKGl0ZW1JRCk7CiAKLSAgICBoaXN0b3J5SXRlbVRvSURN
YXAoKS5zZXQ8SXRlbUFuZFBhZ2VJRD4oaXRlbSwgeyAuaXRlbUlEID0gaXRlbUlELCAucGFnZUlE
ID0gbV9wYWdlLT5wYWdlSUQoKSB9KTsKLSAgICBpZFRvSGlzdG9yeUl0ZW1NYXAoKS5zZXQoaXRl
bUlELCBpdGVtKTsKKyAgICBoaXN0b3J5SXRlbVRvSURNYXAoKS5zZXQ8SXRlbUFuZFBhZ2VJRD4o
aXRlbS5wdHIoKSwgeyAuaXRlbUlEID0gaXRlbUlELCAucGFnZUlEID0gbV9wYWdlLT5wYWdlSUQo
KSB9KTsKKyAgICBpZFRvSGlzdG9yeUl0ZW1NYXAoKS5zZXQoaXRlbUlELCBpdGVtLnB0cigpKTsK
IAotICAgIHVwZGF0ZUJhY2tGb3J3YXJkSXRlbShpdGVtSUQsIG1fcGFnZS0+cGFnZUlEKCksIGl0
ZW0uZ2V0KCkpOworICAgIHVwZGF0ZUJhY2tGb3J3YXJkSXRlbShpdGVtSUQsIG1fcGFnZS0+cGFn
ZUlEKCksIGl0ZW0ucHRyKCkpOwogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpCYWNrRm9yd2FyZEFkZEl0ZW0oaXRlbUlEKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5
LmgKaW5kZXggYWExNDdlMWQ4YTI1MzEzMWZmYWRhNjFkOGVlMjA1ZDBjMWI5ZWNlNy4uMmNiZGVk
MjVhZDQyZWU5Yjk5MmMzMTdkN2UyOTUzZjZjNDQ1ZTdmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5
LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eShXZWJQYWdlKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkSXRlbShQYXNzUmVm
UHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGFk
ZEl0ZW0oUmVmPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiYmKSBvdmVycmlkZTsKIAogICAgIHZpcnR1
YWwgdm9pZCBnb1RvSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIG92ZXJyaWRlOwogICAgICAg
ICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245822</attachid>
            <date>2015-02-01 00:15:39 -0800</date>
            <delta_ts>2015-02-01 00:20:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141133-20150201001547.patch</filename>
            <type>text/plain</type>
            <size>49131</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzgzZWZlYmM0NTU3ZTQ5
YzFhZWE0NWZkYTk5Y2VkZmExZTJmZTgwMy4uOWVkZGM1ZjZiYjFkZWM1MTNiYWM0MDIzMzI0M2Nk
NTE1YjBkMWEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTAxLTMxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIG1vcmUgcmVmZXJlbmNl
cyBpbiBIaXN0b3J5SXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQxMTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXNlIG1vcmUgcmVmZXJlbmNlcyBpbiBIaXN0b3J5SXRlbSBpbnN0ZWFkIG9mIHBv
aW50ZXJzLgorCiAyMDE1LTAxLTMxICBNeWxlcyBDLiBNYXhmaWVsZCAgPGxpdGhlcnVtQGdtYWls
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTc3Njg5KTogRW1vamkgdmFyaWF0aW9uIHNl
cXVlbmNlcyByZW5kZXJlZCBpbmNvcnJlY3RseSAoYXMgY2hhcmFjdGVycyBmcm9tIG90aGVyIG5v
bi1lbW9qaSBmb250KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGMyYjY4M2MwMGU1YTc2NTgxMzUwYTE0
NGFiNTViNGY0MTcyNWU4ZWUuLjFlYjE5ZDYzNjA3YzVjOTI3ZDM3YWYyZTM1M2FjNDA4YmE4ZTlj
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0wMS0zMSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBtb3JlIHJlZmVyZW5jZXMg
aW4gSGlzdG9yeUl0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0MTEzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVzZSBtb3JlIHJlZmVyZW5jZXMgaW4gSGlzdG9yeUl0ZW0gaW5zdGVhZCBvZiBwb2lu
dGVycy4KKwogMjAxNS0wMS0zMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlbW92ZSBldmVuIG1vcmUgTW91bnRhaW4gTGlvbiBzdXBwb3J0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
MzNkYzg0ZDVmZGU2YmRmNzk0YTY0Mzc5ZTJiYTA2ZmE1NzhjZGI4MC4uZWI1ZTU0Y2FhMmEwZmMw
N2RkZjFmZTQwYjYwYTUwMTdhN2Q0NjgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDE1LTAxLTMxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNl
IG1vcmUgcmVmZXJlbmNlcyBpbiBIaXN0b3J5SXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIG1vcmUgcmVmZXJlbmNlcyBpbiBIaXN0b3J5SXRl
bSBpbnN0ZWFkIG9mIHBvaW50ZXJzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW06OmNoaWxkcmVuKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0Ojp0b0ZyYW1lU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjphcHBs
eUZyYW1lU3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5
OjphZGRJdGVtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRM
aXN0UHJveHkuaDoKKwogMjAxNS0wMS0zMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJlbW92ZSBldmVuIG1vcmUgTW91bnRhaW4gTGlvbiBzdXBwb3J0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCmluZGV4IGNmNDlmZjgwZWQxY2M5NTU0NGMyNTQ4ZTg5OTMwNGZmMGQ0NzY1YWQu
LmE4YWM4N2I3ZWIzMjBmYzgwOWI0NTE4MzhmZWRmNDQzMWNkYjAyMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCkBAIC0xNjMsNyArMTYzLDcgQEAgX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjlzZXRP
cGVuZXJFUE5TXzVGcmFtZUUKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xMHRhcmdldEl0ZW1F
dgogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTExc2V0Rm9ybURhdGFFTjNXVEYxMFBhc3NSZWZQ
dHJJTlNfOEZvcm1EYXRhRUVFCiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMTFzZXRSZWZlcnJl
ckVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xMmFkZENoaWxkSXRl
bUVOM1dURjEwUGFzc1JlZlB0cklTMF9FRQorX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTEyYWRk
Q2hpbGRJdGVtRU9OM1dURjNSZWZJUzBfRUUKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xMnNl
dFVSTFN0cmluZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xMnNl
dFZpZXdTdGF0ZUVQMTFvYmpjX29iamVjdAogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTE0YWRk
UmVkaXJlY3RVUkxFUktOM1dURjZTdHJpbmdFCkBAIC0xNzUsNiArMTc1LDcgQEAgX19aTjdXZWJD
b3JlMTFIaXN0b3J5SXRlbTE2c2V0RG9jdW1lbnRTdGF0ZUVSS04zV1RGNlZlY3RvcklOUzFfNlN0
cmluZ0VMbTBFTlMxXzEKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xN3NldEFsdGVybmF0ZVRp
dGxlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTE4c2V0Rm9ybUNv
bnRlbnRUeXBlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTE4c2V0
UGFnZVNjYWxlRmFjdG9yRWYKK19fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xOWNoaWxkSXRlbVdp
dGhUYXJnZXRFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMjBzZXRP
cmlnaW5hbFVSTFN0cmluZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0
ZW0yMHNldFRyYW5zaWVudFByb3BlcnR5RVJLTjNXVEY2U3RyaW5nRVAxMW9iamNfb2JqZWN0CiBf
X1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtOGZvcm1EYXRhRXYKQEAgLTQ5OCw4ICs0OTksOCBAQCBf
X1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDExY3VycmVudEl0ZW1FdgogX19aTjdXZWJDb3Jl
MTVCYWNrRm9yd2FyZExpc3QxMWZvcndhcmRJdGVtRXYKIF9fWk43V2ViQ29yZTE1QmFja0Zvcndh
cmRMaXN0MTFzZXRDYXBhY2l0eUVpCiBfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDEyY29u
dGFpbnNJdGVtRVBOU18xMUhpc3RvcnlJdGVtRQotX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExp
c3QxN2JhY2tMaXN0V2l0aExpbWl0RWlSTjNXVEY2VmVjdG9ySU5TMV82UmVmUHRySU5TXzExSGlz
dG9yeUl0ZW1FRUVMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCi1fX1pON1dlYkNvcmUxNUJh
Y2tGb3J3YXJkTGlzdDIwZm9yd2FyZExpc3RXaXRoTGltaXRFaVJOM1dURjZWZWN0b3JJTlMxXzZS
ZWZQdHJJTlNfMTFIaXN0b3J5SXRlbUVFRUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKK19f
Wk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTdiYWNrTGlzdFdpdGhMaW1pdEVpUk4zV1RGNlZl
Y3RvcklOUzFfM1JlZklOU18xMUhpc3RvcnlJdGVtRUVFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxv
d0VFRQorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QyMGZvcndhcmRMaXN0V2l0aExpbWl0
RWlSTjNXVEY2VmVjdG9ySU5TMV8zUmVmSU5TXzExSGlzdG9yeUl0ZW1FRUVMbTBFTlMxXzE1Q3Jh
c2hPbk92ZXJmbG93RUVFCiBfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDZjbG9zZWRFdgog
X19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q2Z29CYWNrRXYKIF9fWk43V2ViQ29yZTE1QmFj
a0ZvcndhcmRMaXN0N2VuYWJsZWRFdgpAQCAtMTY5Miw3ICsxNjkzLDYgQEAgX19aTks3V2ViQ29y
ZTExSGlzdG9yeUl0ZW0xNGFsdGVybmF0ZVRpdGxlRXYKIF9fWk5LN1dlYkNvcmUxMUhpc3RvcnlJ
dGVtMTVmb3JtQ29udGVudFR5cGVFdgogX19aTks3V2ViQ29yZTExSGlzdG9yeUl0ZW0xNXBhZ2VT
Y2FsZUZhY3RvckV2CiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTE3b3JpZ2luYWxVUkxTdHJp
bmdFdgotX19aTks3V2ViQ29yZTExSGlzdG9yeUl0ZW0xOWNoaWxkSXRlbVdpdGhUYXJnZXRFUktO
M1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTIwZ2V0VHJhbnNpZW50UHJv
cGVydHlFUktOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTIwaGFzQ2Fj
aGVkUGFnZUV4cGlyZWRFdgogX19aTks3V2ViQ29yZTExSGlzdG9yeUl0ZW0zdXJsRXYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDbGllbnQuaAppbmRleCA0NzE4NzM2MDFkNGZm
OTI5ZGQxNTEzYWUwOGNhZTJjMWQ2OWI5OTk5Li4wODIwNDE1ZmU4MTBmZWQxM2M1ZDlkYTI2YWVi
YmZmNzcwYjA5YmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3
YXJkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENsaWVu
dC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVh
bCB2b2lkIGFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4pID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkSXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBnb1RvSXRlbShIaXN0b3J5SXRlbSopID0gMDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAKaW5kZXggNTVjYWYxYzBkNzUx
NjUxNmExZGE4MzMwZjI4MTEyOTk0Y2FiZDc0NS4uMWFlYjYzY2Y1MjkzYzQ2NjhhZjIwZmZjYjEx
NTg1NjkxMGJmMmE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9y
d2FyZENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0Zvcndh
cmRDb250cm9sbGVyLmNwcApAQCAtOTcsOSArOTcsOSBAQCBib29sIEJhY2tGb3J3YXJkQ29udHJv
bGxlcjo6Z29Gb3J3YXJkKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBCYWNrRm9yd2Fy
ZENvbnRyb2xsZXI6OmFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gaXRlbSkKK3ZvaWQg
QmFja0ZvcndhcmRDb250cm9sbGVyOjphZGRJdGVtKFJlZjxIaXN0b3J5SXRlbT4mJiBpdGVtKQog
ewotICAgIG1fY2xpZW50LT5hZGRJdGVtKGl0ZW0pOworICAgIG1fY2xpZW50LT5hZGRJdGVtKFdU
Rjo6bW92ZShpdGVtKSk7CiB9CiAKIHZvaWQgQmFja0ZvcndhcmRDb250cm9sbGVyOjpzZXRDdXJy
ZW50SXRlbShIaXN0b3J5SXRlbSogaXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0Jh
Y2tGb3J3YXJkQ29udHJvbGxlci5oCmluZGV4IGYyM2I3ZTRiZjEwNDQ3Y2IyZjQxZWY3MmU2ZDIz
Y2Q2YmFmMGE5NjMuLjU4OWVlNWVjYTJiZTcwNjZmNjQzYzY1NjcwMDU3MjkzNmY2OWRmMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuaApAQCAt
NTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnb0JhY2soKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGdvRm9yd2FyZCgpOwogCi0gICAgdm9pZCBhZGRJdGVt
KFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+KTsKKyAgICB2b2lkIGFkZEl0ZW0oUmVmPEhpc3RvcnlJ
dGVtPiYmKTsKICAgICB2b2lkIHNldEN1cnJlbnRJdGVtKEhpc3RvcnlJdGVtKik7CiAgICAgICAg
IAogICAgIGludCBjb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9CYWNrRm9yd2FyZExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9y
d2FyZExpc3QuY3BwCmluZGV4IGVhZTYyYmM3MWY4NjM4MGM3MjUxNmI3ZTcwZDcxY2U3YWUzYjUw
NTMuLmNlM2VhZDU2MTIyNzcwMDkxYzg3ZDgwMTRhMzJiMmRlZjdhODY0YWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTU1LDM2ICs1NSwzNSBAQCBC
YWNrRm9yd2FyZExpc3Q6On5CYWNrRm9yd2FyZExpc3QoKQogICAgIEFTU0VSVChtX2Nsb3NlZCk7
CiB9CiAKLXZvaWQgQmFja0ZvcndhcmRMaXN0OjphZGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0
ZW0+IHBycEl0ZW0pCit2b2lkIEJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShSZWY8SGlzdG9yeUl0
ZW0+JiYgbmV3SXRlbSkKIHsKLSAgICBBU1NFUlQocHJwSXRlbSk7Ci0gICAgaWYgKG1fY2FwYWNp
dHkgPT0gMCB8fCAhbV9lbmFibGVkKQorICAgIGlmICghbV9jYXBhY2l0eSB8fCAhbV9lbmFibGVk
KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gVG9zcyBhbnl0aGluZyBpbiB0aGUgZm9y
d2FyZCBsaXN0ICAgIAogICAgIGlmIChtX2N1cnJlbnQgIT0gTm9DdXJyZW50SXRlbUluZGV4KSB7
CiAgICAgICAgIHVuc2lnbmVkIHRhcmdldFNpemUgPSBtX2N1cnJlbnQgKyAxOwogICAgICAgICB3
aGlsZSAobV9lbnRyaWVzLnNpemUoKSA+IHRhcmdldFNpemUpIHsKLSAgICAgICAgICAgIFJlZlB0
cjxIaXN0b3J5SXRlbT4gaXRlbSA9IG1fZW50cmllcy5sYXN0KCk7CisgICAgICAgICAgICBhdXRv
JiBpdGVtID0gbV9lbnRyaWVzLmxhc3QoKTsKICAgICAgICAgICAgIG1fZW50cmllcy5yZW1vdmVM
YXN0KCk7Ci0gICAgICAgICAgICBtX2VudHJ5SGFzaC5yZW1vdmUoaXRlbSk7Ci0gICAgICAgICAg
ICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZSgqaXRlbSk7CisgICAgICAgICAgICBtX2Vu
dHJ5SGFzaC5yZW1vdmUoaXRlbS5wdHIoKSk7CisgICAgICAgICAgICBQYWdlQ2FjaGU6OnNpbmds
ZXRvbigpLnJlbW92ZShpdGVtKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIFRvc3MgdGhl
IGZpcnN0IGl0ZW0gaWYgdGhlIGxpc3QgaXMgZ2V0dGluZyB0b28gYmlnLCBhcyBsb25nIGFzIHdl
J3JlIG5vdCB1c2luZyBpdAogICAgIC8vIChvciBldmVuIGlmIHdlIGFyZSwgaWYgd2Ugb25seSB3
YW50IDEgZW50cnkpLgotICAgIGlmIChtX2VudHJpZXMuc2l6ZSgpID09IG1fY2FwYWNpdHkgJiYg
KG1fY3VycmVudCAhPSAwIHx8IG1fY2FwYWNpdHkgPT0gMSkpIHsKLSAgICAgICAgUmVmUHRyPEhp
c3RvcnlJdGVtPiBpdGVtID0gbV9lbnRyaWVzWzBdOworICAgIGlmIChtX2VudHJpZXMuc2l6ZSgp
ID09IG1fY2FwYWNpdHkgJiYgKG1fY3VycmVudCB8fCBtX2NhcGFjaXR5ID09IDEpKSB7CisgICAg
ICAgIGF1dG8mIGl0ZW0gPSBtX2VudHJpZXMuZmlyc3QoKTsKICAgICAgICAgbV9lbnRyaWVzLnJl
bW92ZSgwKTsKLSAgICAgICAgbV9lbnRyeUhhc2gucmVtb3ZlKGl0ZW0pOwotICAgICAgICBQYWdl
Q2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZSgqaXRlbSk7Ci0gICAgICAgIG1fY3VycmVudC0tOwor
ICAgICAgICBtX2VudHJ5SGFzaC5yZW1vdmUoaXRlbS5wdHIoKSk7CisgICAgICAgIFBhZ2VDYWNo
ZTo6c2luZ2xldG9uKCkucmVtb3ZlKGl0ZW0pOworICAgICAgICAtLW1fY3VycmVudDsKICAgICB9
CiAKLSAgICBtX2VudHJ5SGFzaC5hZGQocHJwSXRlbS5nZXQoKSk7Ci0gICAgbV9lbnRyaWVzLmlu
c2VydChtX2N1cnJlbnQgKyAxLCBwcnBJdGVtKTsKLSAgICBtX2N1cnJlbnQrKzsKKyAgICBtX2Vu
dHJ5SGFzaC5hZGQobmV3SXRlbS5wdHIoKSk7CisgICAgbV9lbnRyaWVzLmluc2VydChtX2N1cnJl
bnQgKyAxLCBXVEY6Om1vdmUobmV3SXRlbSkpOworICAgICsrbV9jdXJyZW50OwogfQogCiB2b2lk
IEJhY2tGb3J3YXJkTGlzdDo6Z29CYWNrKCkKQEAgLTExMCw3ICsxMDksNyBAQCB2b2lkIEJhY2tG
b3J3YXJkTGlzdDo6Z29Ub0l0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiAgICAgICAgIAogICAgIHVu
c2lnbmVkIGludCBpbmRleCA9IDA7CiAgICAgZm9yICg7IGluZGV4IDwgbV9lbnRyaWVzLnNpemUo
KTsgKytpbmRleCkKLSAgICAgICAgaWYgKG1fZW50cmllc1tpbmRleF0gPT0gaXRlbSkKKyAgICAg
ICAgaWYgKG1fZW50cmllc1tpbmRleF0ucHRyKCkgPT0gaXRlbSkKICAgICAgICAgICAgIGJyZWFr
OwogICAgIGlmIChpbmRleCA8IG1fZW50cmllcy5zaXplKCkpIHsKICAgICAgICAgbV9jdXJyZW50
ID0gaW5kZXg7CkBAIC0xMjAsMzEgKzExOSwzMSBAQCB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Z29U
b0l0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiBIaXN0b3J5SXRlbSogQmFja0ZvcndhcmRMaXN0Ojpi
YWNrSXRlbSgpCiB7CiAgICAgaWYgKG1fY3VycmVudCAmJiBtX2N1cnJlbnQgIT0gTm9DdXJyZW50
SXRlbUluZGV4KQotICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVudCAtIDFdLmdldCgp
OwotICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVudCAtIDFd
LnB0cigpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBIaXN0b3J5SXRlbSogQmFja0Zvcndh
cmRMaXN0OjpjdXJyZW50SXRlbSgpCiB7CiAgICAgaWYgKG1fY3VycmVudCAhPSBOb0N1cnJlbnRJ
dGVtSW5kZXgpCi0gICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9jdXJyZW50XS5nZXQoKTsKLSAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJlbnRdLnB0cigpOwor
ICAgIHJldHVybiBudWxscHRyOwogfQogCiBIaXN0b3J5SXRlbSogQmFja0ZvcndhcmRMaXN0Ojpm
b3J3YXJkSXRlbSgpCiB7CiAgICAgaWYgKG1fZW50cmllcy5zaXplKCkgJiYgbV9jdXJyZW50IDwg
bV9lbnRyaWVzLnNpemUoKSAtIDEpCi0gICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9jdXJyZW50
ICsgMV0uZ2V0KCk7Ci0gICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9j
dXJyZW50ICsgMV0ucHRyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgQmFja0Zv
cndhcmRMaXN0OjpiYWNrTGlzdFdpdGhMaW1pdChpbnQgbGltaXQsIEhpc3RvcnlJdGVtVmVjdG9y
JiBsaXN0KQogewogICAgIGxpc3QuY2xlYXIoKTsKICAgICBpZiAobV9jdXJyZW50ICE9IE5vQ3Vy
cmVudEl0ZW1JbmRleCkgewotICAgICAgICB1bnNpZ25lZCBmaXJzdCA9IHN0ZDo6bWF4KChpbnQp
bV9jdXJyZW50IC0gbGltaXQsIDApOworICAgICAgICB1bnNpZ25lZCBmaXJzdCA9IHN0ZDo6bWF4
KHN0YXRpY19jYXN0PGludD4obV9jdXJyZW50KSAtIGxpbWl0LCAwKTsKICAgICAgICAgZm9yICg7
IGZpcnN0IDwgbV9jdXJyZW50OyArK2ZpcnN0KQotICAgICAgICAgICAgbGlzdC5hcHBlbmQobV9l
bnRyaWVzW2ZpcnN0XSk7CisgICAgICAgICAgICBsaXN0LmFwcGVuZChtX2VudHJpZXNbZmlyc3Rd
LmdldCgpKTsKICAgICB9CiB9CiAKQEAgLTE2MCw3ICsxNTksNyBAQCB2b2lkIEJhY2tGb3J3YXJk
TGlzdDo6Zm9yd2FyZExpc3RXaXRoTGltaXQoaW50IGxpbWl0LCBIaXN0b3J5SXRlbVZlY3RvciYg
bGlzdCkKICAgICAgICAgaW50IGxhc3QgPSBzdGQ6Om1pbihtX2N1cnJlbnQgKyBsaW1pdCwgbGFz
dEVudHJ5KTsKICAgICAgICAgbGltaXQgPSBtX2N1cnJlbnQgKyAxOwogICAgICAgICBmb3IgKDsg
bGltaXQgPD0gbGFzdDsgKytsaW1pdCkKLSAgICAgICAgICAgIGxpc3QuYXBwZW5kKG1fZW50cmll
c1tsaW1pdF0pOworICAgICAgICAgICAgbGlzdC5hcHBlbmQobV9lbnRyaWVzW2xpbWl0XS5nZXQo
KSk7CiAgICAgfQogfQogCkBAIC0xNzEsMTEgKzE3MCwxMSBAQCBpbnQgQmFja0ZvcndhcmRMaXN0
OjpjYXBhY2l0eSgpCiAKIHZvaWQgQmFja0ZvcndhcmRMaXN0OjpzZXRDYXBhY2l0eShpbnQgc2l6
ZSkKIHsgICAgCi0gICAgd2hpbGUgKHNpemUgPCAoaW50KW1fZW50cmllcy5zaXplKCkpIHsKLSAg
ICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtID0gbV9lbnRyaWVzLmxhc3QoKTsKKyAgICB3
aGlsZSAoc2l6ZSA8IHN0YXRpY19jYXN0PGludD4obV9lbnRyaWVzLnNpemUoKSkpIHsKKyAgICAg
ICAgYXV0byYgaXRlbSA9IG1fZW50cmllcy5sYXN0KCk7CiAgICAgICAgIG1fZW50cmllcy5yZW1v
dmVMYXN0KCk7Ci0gICAgICAgIG1fZW50cnlIYXNoLnJlbW92ZShpdGVtKTsKLSAgICAgICAgUGFn
ZUNhY2hlOjpzaW5nbGV0b24oKS5yZW1vdmUoKml0ZW0pOworICAgICAgICBtX2VudHJ5SGFzaC5y
ZW1vdmUoaXRlbS5wdHIoKSk7CisgICAgICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucmVtb3Zl
KGl0ZW0pOwogICAgIH0KIAogICAgIGlmICghc2l6ZSkKQEAgLTIxNCwxMyArMjEzLDEzIEBAIGlu
dCBCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0Q291bnQoKQogSGlzdG9yeUl0ZW0qIEJhY2tG
b3J3YXJkTGlzdDo6aXRlbUF0SW5kZXgoaW50IGluZGV4KQogewogICAgIC8vIERvIHJhbmdlIGNo
ZWNrcyB3aXRob3V0IGRvaW5nIG1hdGggb24gaW5kZXggdG8gYXZvaWQgb3ZlcmZsb3cuCi0gICAg
aWYgKGluZGV4IDwgLShpbnQpbV9jdXJyZW50KQotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAo
aW5kZXggPCAtc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnQpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAKICAgICBpZiAoaW5kZXggPiBmb3J3YXJkTGlzdENvdW50KCkpCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgCi0gICAgcmV0dXJu
IG1fZW50cmllc1tpbmRleCArIG1fY3VycmVudF0uZ2V0KCk7CisgICAgcmV0dXJuIG1fZW50cmll
c1tpbmRleCArIG1fY3VycmVudF0ucHRyKCk7CiB9CiAKIEhpc3RvcnlJdGVtVmVjdG9yJiBCYWNr
Rm9yd2FyZExpc3Q6OmVudHJpZXMoKQpAQCAtMjQ1LDcgKzI0NCw3IEBAIGJvb2wgQmFja0Zvcndh
cmRMaXN0OjpjbGVhckFsbFBhZ2VDYWNoZXMoKQogICAgIGZvciAoYXV0byYgaXRlbSA6IG1fZW50
cmllcykgewogICAgICAgICBpZiAoaXRlbS0+aXNJblBhZ2VDYWNoZSgpKSB7CiAgICAgICAgICAg
ICBkaWRSZW1vdmVBdExlYXN0T25lSXRlbSA9IHRydWU7Ci0gICAgICAgICAgICBQYWdlQ2FjaGU6
OnNpbmdsZXRvbigpLnJlbW92ZSgqaXRlbSk7CisgICAgICAgICAgICBQYWdlQ2FjaGU6OnNpbmds
ZXRvbigpLnJlbW92ZShpdGVtKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gZGlkUmVt
b3ZlQXRMZWFzdE9uZUl0ZW07CkBAIC0yNTUsNyArMjU0LDcgQEAgYm9vbCBCYWNrRm9yd2FyZExp
c3Q6OmNsZWFyQWxsUGFnZUNhY2hlcygpCiB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Y2xvc2UoKQog
ewogICAgIGZvciAoYXV0byYgaXRlbSA6IG1fZW50cmllcykKLSAgICAgICAgUGFnZUNhY2hlOjpz
aW5nbGV0b24oKS5yZW1vdmUoKml0ZW0pOworICAgICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigp
LnJlbW92ZShpdGVtKTsKICAgICBtX2VudHJpZXMuY2xlYXIoKTsKICAgICBtX2VudHJ5SGFzaC5j
bGVhcigpOwogICAgIG1fcGFnZSA9IG51bGxwdHI7CkBAIC0yNzIsOCArMjcxLDggQEAgdm9pZCBC
YWNrRm9yd2FyZExpc3Q6OnJlbW92ZUl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiAgICAgaWYgKCFp
dGVtKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fZW50cmllcy5zaXplKCk7ICsraSkKLSAgICAgICAgaWYgKG1fZW50cmllc1tpXSA9PSBpdGVt
KSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZW50cmllcy5zaXplKCk7ICsraSkg
eworICAgICAgICBpZiAobV9lbnRyaWVzW2ldLnB0cigpID09IGl0ZW0pIHsKICAgICAgICAgICAg
IG1fZW50cmllcy5yZW1vdmUoaSk7CiAgICAgICAgICAgICBtX2VudHJ5SGFzaC5yZW1vdmUoaXRl
bSk7CiAgICAgICAgICAgICBpZiAobV9jdXJyZW50ID09IE5vQ3VycmVudEl0ZW1JbmRleCB8fCBt
X2N1cnJlbnQgPCBpKQpAQCAtMjg3LDYgKzI4Niw3IEBAIHZvaWQgQmFja0ZvcndhcmRMaXN0Ojpy
ZW1vdmVJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAgICAgICAgICAgfQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KKyAgICB9CiB9CiAKIGJvb2wgQmFja0ZvcndhcmRMaXN0Ojpjb250
YWluc0l0ZW0oSGlzdG9yeUl0ZW0qIGVudHJ5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0Zv
cndhcmRMaXN0LmgKaW5kZXggYTMzYzhhNjZjMDA5NjU5NDY2MTZjYzRlZGM0N2ZjYzhlY2IwMjA2
OC4uNTkyOTI3NjBjY2M4NmY3OTJjNDVkN2M1NGE2ZjY5ZTdlMmMwNjNjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgUGFnZTsKIAotdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEhpc3Rv
cnlJdGVtPj4gSGlzdG9yeUl0ZW1WZWN0b3I7Cit0eXBlZGVmIFZlY3RvcjxSZWY8SGlzdG9yeUl0
ZW0+PiBIaXN0b3J5SXRlbVZlY3RvcjsKIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8SGlzdG9yeUl0
ZW0+PiBIaXN0b3J5SXRlbUhhc2hTZXQ7CiAKIGNsYXNzIEJhY2tGb3J3YXJkTGlzdCA6IHB1Ymxp
YyBCYWNrRm9yd2FyZENsaWVudCB7CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIFBh
Z2UqIHBhZ2UoKSB7IHJldHVybiBtX3BhZ2U7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhZGRJdGVt
KFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRk
SXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZ29CYWNrKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnb0ZvcndhcmQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgZ29Ub0l0ZW0oSGlzdG9yeUl0ZW0qKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKaW5kZXggM2M1MmZkNmUwMjc5MTc4YmY0MGFjZmU0YmQ4
MzI0NTE5MmNhYTAyZC4uMjI5YmFiOGU3YTIzYWMwNWMwYWQwNWU3ZWQ0MzE1N2RjZDdlOGIwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKQEAgLTE3Miw5ICsxNzIsOSBA
QCBpbmxpbmUgSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVtKGNvbnN0IEhpc3RvcnlJdGVtJiBpdGVt
KQogICAgICAgICBtX3JlZGlyZWN0VVJMcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmlu
Zz4+KCppdGVtLm1fcmVkaXJlY3RVUkxzKTsKIH0KIAotUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4g
SGlzdG9yeUl0ZW06OmNvcHkoKSBjb25zdAorUmVmPEhpc3RvcnlJdGVtPiBIaXN0b3J5SXRlbTo6
Y29weSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIaXN0b3J5SXRlbSgqdGhp
cykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhpc3RvcnlJdGVtKCp0aGlzKSk7CiB9CiAK
IHZvaWQgSGlzdG9yeUl0ZW06OnJlc2V0KCkKQEAgLTM2Niw0NCArMzY2LDQ0IEBAIHZvaWQgSGlz
dG9yeUl0ZW06OnNldFN0YXRlT2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBvYmplY3QpCiAgICAgbV9zdGF0ZU9iamVjdCA9IG9iamVjdDsKIH0KIAotdm9pZCBIaXN0b3J5
SXRlbTo6YWRkQ2hpbGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGNoaWxkKQordm9pZCBI
aXN0b3J5SXRlbTo6YWRkQ2hpbGRJdGVtKFJlZjxIaXN0b3J5SXRlbT4mJiBjaGlsZCkKIHsKICAg
ICBBU1NFUlQoIWNoaWxkSXRlbVdpdGhUYXJnZXQoY2hpbGQtPnRhcmdldCgpKSk7Ci0gICAgbV9j
aGlsZHJlbi5hcHBlbmQoY2hpbGQpOworICAgIG1fY2hpbGRyZW4uYXBwZW5kKFdURjo6bW92ZShj
aGlsZCkpOwogfQogCi12b2lkIEhpc3RvcnlJdGVtOjpzZXRDaGlsZEl0ZW0oUGFzc1JlZlB0cjxI
aXN0b3J5SXRlbT4gY2hpbGQpCit2b2lkIEhpc3RvcnlJdGVtOjpzZXRDaGlsZEl0ZW0oUmVmPEhp
c3RvcnlJdGVtPiYmIGNoaWxkKQogewogICAgIEFTU0VSVCghY2hpbGQtPmlzVGFyZ2V0SXRlbSgp
KTsKICAgICB1bnNpZ25lZCBzaXplID0gbV9jaGlsZHJlbi5zaXplKCk7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgIHsKICAgICAgICAgaWYgKG1fY2hpbGRyZW5baV0t
PnRhcmdldCgpID09IGNoaWxkLT50YXJnZXQoKSkgewogICAgICAgICAgICAgY2hpbGQtPnNldElz
VGFyZ2V0SXRlbShtX2NoaWxkcmVuW2ldLT5pc1RhcmdldEl0ZW0oKSk7Ci0gICAgICAgICAgICBt
X2NoaWxkcmVuW2ldID0gY2hpbGQ7CisgICAgICAgICAgICBtX2NoaWxkcmVuW2ldID0gV1RGOjpt
b3ZlKGNoaWxkKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBt
X2NoaWxkcmVuLmFwcGVuZChjaGlsZCk7CisgICAgbV9jaGlsZHJlbi5hcHBlbmQoV1RGOjptb3Zl
KGNoaWxkKSk7CiB9CiAKLUhpc3RvcnlJdGVtKiBIaXN0b3J5SXRlbTo6Y2hpbGRJdGVtV2l0aFRh
cmdldChjb25zdCBTdHJpbmcmIHRhcmdldCkgY29uc3QKK0hpc3RvcnlJdGVtKiBIaXN0b3J5SXRl
bTo6Y2hpbGRJdGVtV2l0aFRhcmdldChjb25zdCBTdHJpbmcmIHRhcmdldCkKIHsKICAgICB1bnNp
Z25lZCBzaXplID0gbV9jaGlsZHJlbi5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHNpemU7ICsraSkgewogICAgICAgICBpZiAobV9jaGlsZHJlbltpXS0+dGFyZ2V0KCkgPT0g
dGFyZ2V0KQotICAgICAgICAgICAgcmV0dXJuIG1fY2hpbGRyZW5baV0uZ2V0KCk7CisgICAgICAg
ICAgICByZXR1cm4gbV9jaGlsZHJlbltpXS5wdHIoKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUhpc3RvcnlJdGVtKiBIaXN0b3J5SXRlbTo6Y2hpbGRJ
dGVtV2l0aERvY3VtZW50U2VxdWVuY2VOdW1iZXIobG9uZyBsb25nIG51bWJlcikgY29uc3QKK0hp
c3RvcnlJdGVtKiBIaXN0b3J5SXRlbTo6Y2hpbGRJdGVtV2l0aERvY3VtZW50U2VxdWVuY2VOdW1i
ZXIobG9uZyBsb25nIG51bWJlcikKIHsKICAgICB1bnNpZ25lZCBzaXplID0gbV9jaGlsZHJlbi5z
aXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAg
ICBpZiAobV9jaGlsZHJlbltpXS0+ZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpID09IG51bWJlcikK
LSAgICAgICAgICAgIHJldHVybiBtX2NoaWxkcmVuW2ldLmdldCgpOworICAgICAgICAgICAgcmV0
dXJuIG1fY2hpbGRyZW5baV0ucHRyKCk7CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVy
biBudWxscHRyOwogfQogCiAvLyA8cmRhcjovL3Byb2JsZW0vNDg5NTg0OT4gSGlzdG9yeUl0ZW06
OmZpbmRUYXJnZXRJdGVtKCkgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggYSBub24tcmVjdXJzaXZl
IG1ldGhvZC4KQEAgLTQxMywxNSArNDEzLDE3IEBAIEhpc3RvcnlJdGVtKiBIaXN0b3J5SXRlbTo6
ZmluZFRhcmdldEl0ZW0oKQogICAgICAgICByZXR1cm4gdGhpczsKICAgICB1bnNpZ25lZCBzaXpl
ID0gbV9jaGlsZHJlbi5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7
ICsraSkgeworICAgICAgICAvLyBGSVhNRTogdGFyZ2V0SXRlbSgpIGNhbm5vdCByZXR1cm4gbnVs
bCBjdXJyZW50bHksIHdoaWNoIGlzIHdyb25nLgogICAgICAgICBpZiAoSGlzdG9yeUl0ZW0qIG1h
dGNoID0gbV9jaGlsZHJlbltpXS0+dGFyZ2V0SXRlbSgpKQogICAgICAgICAgICAgcmV0dXJuIG1h
dGNoOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogSGlz
dG9yeUl0ZW0qIEhpc3RvcnlJdGVtOjp0YXJnZXRJdGVtKCkKIHsKICAgICBIaXN0b3J5SXRlbSog
Zm91bmRJdGVtID0gZmluZFRhcmdldEl0ZW0oKTsKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
cHJvYmFibHkgbm90IGZhbGwgYmFjayB0byB8dGhpc3wuCiAgICAgcmV0dXJuIGZvdW5kSXRlbSA/
IGZvdW5kSXRlbSA6IHRoaXM7CiB9CiAKQEAgLTQ0MCwxMyArNDQyLDEzIEBAIHZvaWQgSGlzdG9y
eUl0ZW06OmNsZWFyQ2hpbGRyZW4oKQogICAgIG1fY2hpbGRyZW4uY2xlYXIoKTsKIH0KIAotYm9v
bCBIaXN0b3J5SXRlbTo6aXNBbmNlc3Rvck9mKGNvbnN0IEhpc3RvcnlJdGVtKiBpdGVtKSBjb25z
dAorYm9vbCBIaXN0b3J5SXRlbTo6aXNBbmNlc3Rvck9mKGNvbnN0IEhpc3RvcnlJdGVtJiBpdGVt
KSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jaGlsZHJlbi5zaXplKCk7
ICsraSkgewotICAgICAgICBIaXN0b3J5SXRlbSogY2hpbGQgPSBtX2NoaWxkcmVuW2ldLmdldCgp
OwotICAgICAgICBpZiAoY2hpbGQgPT0gaXRlbSkKKyAgICAgICAgYXV0byYgY2hpbGQgPSBtX2No
aWxkcmVuW2ldLmdldCgpOworICAgICAgICBpZiAoJmNoaWxkID09ICZpdGVtKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChjaGlsZC0+aXNBbmNlc3Rvck9mKGl0ZW0pKQor
ICAgICAgICBpZiAoY2hpbGQuaXNBbmNlc3Rvck9mKGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTQ1NSwzNCArNDU3LDM0IEBAIGJv
b2wgSGlzdG9yeUl0ZW06OmlzQW5jZXN0b3JPZihjb25zdCBIaXN0b3J5SXRlbSogaXRlbSkgY29u
c3QKIC8vIFdlIGRvIHNhbWUtZG9jdW1lbnQgbmF2aWdhdGlvbiBpZiBnb2luZyB0byBhIGRpZmZl
cmVudCBpdGVtIGFuZCBpZiBlaXRoZXIgb2YgdGhlIGZvbGxvd2luZyBpcyB0cnVlOgogLy8gLSBU
aGUgb3RoZXIgaXRlbSBjb3JyZXNwb25kcyB0byB0aGUgc2FtZSBkb2N1bWVudCAoZm9yIGhpc3Rv
cnkgZW50cmllcyBjcmVhdGVkIHZpYSBwdXNoU3RhdGUgb3IgZnJhZ21lbnQgY2hhbmdlcykuCiAv
LyAtIFRoZSBvdGhlciBpdGVtIGNvcnJlc3BvbmRzIHRvIHRoZSBzYW1lIHNldCBvZiBkb2N1bWVu
dHMsIGluY2x1ZGluZyBmcmFtZXMgKGZvciBoaXN0b3J5IGVudHJpZXMgY3JlYXRlZCB2aWEgcmVn
dWxhciBuYXZpZ2F0aW9uKQotYm9vbCBIaXN0b3J5SXRlbTo6c2hvdWxkRG9TYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uVG8oSGlzdG9yeUl0ZW0qIG90aGVySXRlbSkgY29uc3QKK2Jvb2wgSGlzdG9yeUl0
ZW06OnNob3VsZERvU2FtZURvY3VtZW50TmF2aWdhdGlvblRvKEhpc3RvcnlJdGVtJiBvdGhlckl0
ZW0pIGNvbnN0CiB7Ci0gICAgaWYgKHRoaXMgPT0gb3RoZXJJdGVtKQorICAgIGlmICh0aGlzID09
ICZvdGhlckl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChzdGF0ZU9iamVj
dCgpIHx8IG90aGVySXRlbS0+c3RhdGVPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIGRvY3VtZW50
U2VxdWVuY2VOdW1iZXIoKSA9PSBvdGhlckl0ZW0tPmRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKTsK
KyAgICBpZiAoc3RhdGVPYmplY3QoKSB8fCBvdGhlckl0ZW0uc3RhdGVPYmplY3QoKSkKKyAgICAg
ICAgcmV0dXJuIGRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSA9PSBvdGhlckl0ZW0uZG9jdW1lbnRT
ZXF1ZW5jZU51bWJlcigpOwogICAgIAotICAgIGlmICgodXJsKCkuaGFzRnJhZ21lbnRJZGVudGlm
aWVyKCkgfHwgb3RoZXJJdGVtLT51cmwoKS5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkgJiYgZXF1
YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwoKSwgb3RoZXJJdGVtLT51cmwoKSkpCi0g
ICAgICAgIHJldHVybiBkb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkgPT0gb3RoZXJJdGVtLT5kb2N1
bWVudFNlcXVlbmNlTnVtYmVyKCk7ICAgICAgICAKKyAgICBpZiAoKHVybCgpLmhhc0ZyYWdtZW50
SWRlbnRpZmllcigpIHx8IG90aGVySXRlbS51cmwoKS5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkg
JiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwoKSwgb3RoZXJJdGVtLnVybCgp
KSkKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSA9PSBvdGhlckl0ZW0u
ZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpOwogICAgIAogICAgIHJldHVybiBoYXNTYW1lRG9jdW1l
bnRUcmVlKG90aGVySXRlbSk7CiB9CiAKIC8vIERvZXMgYSByZWN1cnNpdmUgY2hlY2sgdGhhdCB0
aGlzIGl0ZW0gYW5kIGl0cyBkZXNjZW5kYW50cyBoYXZlIHRoZSBzYW1lCiAvLyBkb2N1bWVudCBz
ZXF1ZW5jZSBudW1iZXJzIGFzIHRoZSBvdGhlciBpdGVtLgotYm9vbCBIaXN0b3J5SXRlbTo6aGFz
U2FtZURvY3VtZW50VHJlZShIaXN0b3J5SXRlbSogb3RoZXJJdGVtKSBjb25zdAorYm9vbCBIaXN0
b3J5SXRlbTo6aGFzU2FtZURvY3VtZW50VHJlZShIaXN0b3J5SXRlbSYgb3RoZXJJdGVtKSBjb25z
dAogewotICAgIGlmIChkb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkgIT0gb3RoZXJJdGVtLT5kb2N1
bWVudFNlcXVlbmNlTnVtYmVyKCkpCisgICAgaWYgKGRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSAh
PSBvdGhlckl0ZW0uZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIAotICAgIGlmIChjaGlsZHJlbigpLnNpemUoKSAhPSBvdGhlckl0ZW0tPmNo
aWxkcmVuKCkuc2l6ZSgpKQorICAgIGlmIChjaGlsZHJlbigpLnNpemUoKSAhPSBvdGhlckl0ZW0u
Y2hpbGRyZW4oKS5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4oKS5zaXplKCk7IGkrKykgewotICAgICAgICBIaXN0b3J5
SXRlbSogY2hpbGQgPSBjaGlsZHJlbigpW2ldLmdldCgpOwotICAgICAgICBIaXN0b3J5SXRlbSog
b3RoZXJDaGlsZCA9IG90aGVySXRlbS0+Y2hpbGRJdGVtV2l0aERvY3VtZW50U2VxdWVuY2VOdW1i
ZXIoY2hpbGQtPmRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSk7Ci0gICAgICAgIGlmICghb3RoZXJD
aGlsZCB8fCAhY2hpbGQtPmhhc1NhbWVEb2N1bWVudFRyZWUob3RoZXJDaGlsZCkpCisgICAgICAg
IGF1dG8mIGNoaWxkID0gY2hpbGRyZW4oKVtpXS5nZXQoKTsKKyAgICAgICAgYXV0byogb3RoZXJD
aGlsZCA9IG90aGVySXRlbS5jaGlsZEl0ZW1XaXRoRG9jdW1lbnRTZXF1ZW5jZU51bWJlcihjaGls
ZC5kb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkpOworICAgICAgICBpZiAoIW90aGVyQ2hpbGQgfHwg
IWNoaWxkLmhhc1NhbWVEb2N1bWVudFRyZWUoKm90aGVyQ2hpbGQpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNDkxLDE2ICs0OTMsMTYgQEAgYm9vbCBIaXN0b3J5SXRl
bTo6aGFzU2FtZURvY3VtZW50VHJlZShIaXN0b3J5SXRlbSogb3RoZXJJdGVtKSBjb25zdAogCiAv
LyBEb2VzIGEgbm9uLXJlY3Vyc2l2ZSBjaGVjayB0aGF0IHRoaXMgaXRlbSBhbmQgaXRzIGltbWVk
aWF0ZSBjaGlsZHJlbiBoYXZlIHRoZQogLy8gc2FtZSBmcmFtZXMgYXMgdGhlIG90aGVyIGl0ZW0u
Ci1ib29sIEhpc3RvcnlJdGVtOjpoYXNTYW1lRnJhbWVzKEhpc3RvcnlJdGVtKiBvdGhlckl0ZW0p
IGNvbnN0Citib29sIEhpc3RvcnlJdGVtOjpoYXNTYW1lRnJhbWVzKEhpc3RvcnlJdGVtJiBvdGhl
ckl0ZW0pIGNvbnN0CiB7Ci0gICAgaWYgKHRhcmdldCgpICE9IG90aGVySXRlbS0+dGFyZ2V0KCkp
CisgICAgaWYgKHRhcmdldCgpICE9IG90aGVySXRlbS50YXJnZXQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAKLSAgICBpZiAoY2hpbGRyZW4oKS5zaXplKCkgIT0gb3RoZXJJdGVt
LT5jaGlsZHJlbigpLnNpemUoKSkKKyAgICBpZiAoY2hpbGRyZW4oKS5zaXplKCkgIT0gb3RoZXJJ
dGVtLmNoaWxkcmVuKCkuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNoaWxkcmVuKCkuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgaWYg
KCFvdGhlckl0ZW0tPmNoaWxkSXRlbVdpdGhUYXJnZXQoY2hpbGRyZW4oKVtpXS0+dGFyZ2V0KCkp
KQorICAgICAgICBpZiAoIW90aGVySXRlbS5jaGlsZEl0ZW1XaXRoVGFyZ2V0KGNoaWxkcmVuKClb
aV0tPnRhcmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTU0
MiwxMCArNTQ0LDEwIEBAIEZvcm1EYXRhKiBIaXN0b3J5SXRlbTo6Zm9ybURhdGEoKQogICAgIHJl
dHVybiBtX2Zvcm1EYXRhLmdldCgpOwogfQogCi1ib29sIEhpc3RvcnlJdGVtOjppc0N1cnJlbnRE
b2N1bWVudChEb2N1bWVudCogZG9jKSBjb25zdAorYm9vbCBIaXN0b3J5SXRlbTo6aXNDdXJyZW50
RG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgZmluZCBhIGJldHRlciB3YXkgdG8gY2hlY2sgaWYgdGhpcyBpcyB0aGUgY3VycmVudCBk
b2N1bWVudC4KLSAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwo
KSwgZG9jLT51cmwoKSk7CisgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZp
ZXIodXJsKCksIGRvY3VtZW50LnVybCgpKTsKIH0KIAogdm9pZCBIaXN0b3J5SXRlbTo6YWRkUmVk
aXJlY3RVUkwoY29uc3QgU3RyaW5nJiB1cmwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0hpc3RvcnlJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVt
LmgKaW5kZXggNjRjMDRiZWY5NGVlNjIyNDNhY2Y2YzlkYzM3NjY3NDRlNzlhZTY1ZC4uNGQ4NDNj
NDhmMmY1ODJiM2VmMWEyMWI2ZGNjZjUyMWVmODIxZjc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
SGlzdG9yeUl0ZW0uaApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBj
bGFzcyBVUkw7CiBlbnVtIGNsYXNzIFBydW5pbmdSZWFzb247CiAKLXR5cGVkZWYgVmVjdG9yPFJl
ZlB0cjxIaXN0b3J5SXRlbT4+IEhpc3RvcnlJdGVtVmVjdG9yOwordHlwZWRlZiBWZWN0b3I8UmVm
PEhpc3RvcnlJdGVtPj4gSGlzdG9yeUl0ZW1WZWN0b3I7CiAKIGV4dGVybiB2b2lkICgqbm90aWZ5
SGlzdG9yeUl0ZW1DaGFuZ2VkKShIaXN0b3J5SXRlbSopOwogCkBAIC03OSw3ICs3OSw3IEBAIHB1
YmxpYzoKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCB+SGlzdG9yeUl0ZW0oKTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGNvcHkoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWY8SGlzdG9yeUl0ZW0+IGNvcHkoKSBjb25zdDsKIAogICAgIC8vIFJl
c2V0cyB0aGUgSGlzdG9yeUl0ZW0gdG8gaXRzIGluaXRpYWwgc3RhdGUsIGFzIHJldHVybmVkIGJ5
IGNyZWF0ZSgpLgogICAgIHZvaWQgcmVzZXQoKTsKQEAgLTE0MSwyNCArMTQxLDI0IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgc2V0TGFzdFZpc2l0V2FzRmFpbHVyZShib29sIHdhc0ZhaWx1cmUpIHsg
bV9sYXN0VmlzaXRXYXNGYWlsdXJlID0gd2FzRmFpbHVyZTsgfQogCi0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhZGRDaGlsZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4pOwotICAgIHZvaWQg
c2V0Q2hpbGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+KTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBIaXN0b3J5SXRlbSogY2hpbGRJdGVtV2l0aFRhcmdldChjb25zdCBTdHJpbmcmKSBjb25zdDsK
LSAgICBIaXN0b3J5SXRlbSogY2hpbGRJdGVtV2l0aERvY3VtZW50U2VxdWVuY2VOdW1iZXIobG9u
ZyBsb25nIG51bWJlcikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDaGlsZEl0
ZW0oUmVmPEhpc3RvcnlJdGVtPiYmKTsKKyAgICB2b2lkIHNldENoaWxkSXRlbShSZWY8SGlzdG9y
eUl0ZW0+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIEhpc3RvcnlJdGVtKiBjaGlsZEl0ZW1XaXRo
VGFyZ2V0KGNvbnN0IFN0cmluZyYpOworICAgIEhpc3RvcnlJdGVtKiBjaGlsZEl0ZW1XaXRoRG9j
dW1lbnRTZXF1ZW5jZU51bWJlcihsb25nIGxvbmcgbnVtYmVyKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBIaXN0b3J5SXRlbSogdGFyZ2V0SXRlbSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEhp
c3RvcnlJdGVtVmVjdG9yJiBjaGlsZHJlbigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaGFzQ2hpbGRyZW4oKSBjb25zdDsKICAgICB2b2lkIGNsZWFyQ2hpbGRyZW4oKTsKLSAgICBi
b29sIGlzQW5jZXN0b3JPZihjb25zdCBIaXN0b3J5SXRlbSopIGNvbnN0OworICAgIGJvb2wgaXNB
bmNlc3Rvck9mKGNvbnN0IEhpc3RvcnlJdGVtJikgY29uc3Q7CiAgICAgCi0gICAgYm9vbCBzaG91
bGREb1NhbWVEb2N1bWVudE5hdmlnYXRpb25UbyhIaXN0b3J5SXRlbSogb3RoZXJJdGVtKSBjb25z
dDsKLSAgICBib29sIGhhc1NhbWVGcmFtZXMoSGlzdG9yeUl0ZW0qIG90aGVySXRlbSkgY29uc3Q7
CisgICAgYm9vbCBzaG91bGREb1NhbWVEb2N1bWVudE5hdmlnYXRpb25UbyhIaXN0b3J5SXRlbSYg
b3RoZXJJdGVtKSBjb25zdDsKKyAgICBib29sIGhhc1NhbWVGcmFtZXMoSGlzdG9yeUl0ZW0mIG90
aGVySXRlbSkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFJlZGlyZWN0VVJM
KGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+KiByZWRp
cmVjdFVSTHMoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJlZGlyZWN0VVJM
cyhzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+KTsKIAotICAgIGJvb2wgaXNDdXJyZW50
RG9jdW1lbnQoRG9jdW1lbnQqKSBjb25zdDsKKyAgICBib29sIGlzQ3VycmVudERvY3VtZW50KERv
Y3VtZW50JikgY29uc3Q7CiAgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV0VCQ09SRV9F
WFBPUlQgaWQgdmlld1N0YXRlKCkgY29uc3Q7CkBAIC0yMTIsOSArMjEyLDkgQEAgcHJpdmF0ZToK
ICAgICBXRUJDT1JFX0VYUE9SVCBIaXN0b3J5SXRlbShjb25zdCBTdHJpbmcmIHVybFN0cmluZywg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBhbHRlcm5hdGVUaXRsZSk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0ZW0oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBmcmFt
ZU5hbWUsIGNvbnN0IFN0cmluZyYgcGFyZW50LCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKIAotICAg
IGV4cGxpY2l0IEhpc3RvcnlJdGVtKGNvbnN0IEhpc3RvcnlJdGVtJik7CisgICAgSGlzdG9yeUl0
ZW0oY29uc3QgSGlzdG9yeUl0ZW0mKTsKIAotICAgIGJvb2wgaGFzU2FtZURvY3VtZW50VHJlZShI
aXN0b3J5SXRlbSogb3RoZXJJdGVtKSBjb25zdDsKKyAgICBib29sIGhhc1NhbWVEb2N1bWVudFRy
ZWUoSGlzdG9yeUl0ZW0mIG90aGVySXRlbSkgY29uc3Q7CiAKICAgICBIaXN0b3J5SXRlbSogZmlu
ZFRhcmdldEl0ZW0oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXgg
MDU5ZjBmZjhlNGZjMTZmNmYwOTNhMWNkMGFjMjc5ZTJjNDcwOTc0ZC4uZmYxZWNjNGUyYTExY2E1
MDU5ZDU1OGEyYmIyOGY2NmE4YTAzOGEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCkBAIC0zMTQzLDcgKzMxNDMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkU2FtZURv
Y3VtZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSkKICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0g
bV9mcmFtZS52aWV3KCkpCiAgICAgICAgIHZpZXctPnNldFdhc1Njcm9sbGVkQnlVc2VyKGZhbHNl
KTsKIAotICAgIGhpc3RvcnkoKS5zZXRDdXJyZW50SXRlbSgmaXRlbSk7CisgICAgaGlzdG9yeSgp
LnNldEN1cnJlbnRJdGVtKGl0ZW0pOwogICAgICAgICAKICAgICAvLyBsb2FkSW5TYW1lRG9jdW1l
bnQoKSBhY3R1YWxseSBjaGFuZ2VzIHRoZSBVUkwgYW5kIG5vdGlmaWVzIGxvYWQgZGVsZWdhdGVz
IG9mIGEgImZha2UiIGxvYWQKICAgICBsb2FkSW5TYW1lRG9jdW1lbnQoaXRlbS51cmwoKSwgaXRl
bS5zdGF0ZU9iamVjdCgpLCBmYWxzZSk7CkBAIC0zMjQ3LDcgKzMyNDcsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpsb2FkSXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2FkVHlw
ZSkKIHsKICAgICBtX3JlcXVlc3RlZEhpc3RvcnlJdGVtID0gJml0ZW07CiAgICAgSGlzdG9yeUl0
ZW0qIGN1cnJlbnRJdGVtID0gaGlzdG9yeSgpLmN1cnJlbnRJdGVtKCk7Ci0gICAgYm9vbCBzYW1l
RG9jdW1lbnROYXZpZ2F0aW9uID0gY3VycmVudEl0ZW0gJiYgaXRlbS5zaG91bGREb1NhbWVEb2N1
bWVudE5hdmlnYXRpb25UbyhjdXJyZW50SXRlbSk7CisgICAgYm9vbCBzYW1lRG9jdW1lbnROYXZp
Z2F0aW9uID0gY3VycmVudEl0ZW0gJiYgaXRlbS5zaG91bGREb1NhbWVEb2N1bWVudE5hdmlnYXRp
b25UbygqY3VycmVudEl0ZW0pOwogCiAgICAgaWYgKHNhbWVEb2N1bWVudE5hdmlnYXRpb24pCiAg
ICAgICAgIGxvYWRTYW1lRG9jdW1lbnRJdGVtKGl0ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5kZXggYWNmOTA5MDZlYWRkMjA5ZDBkMDRiNGE4ZGY4
NzBlODBmNWU5N2RlNy4uZDQ2MTBjYWU5Mjc0NzliZGU2MDE0M2MzZWFhNDBhNzlmNzhhZGI4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCkBAIC0xODUs
MTIgKzE4NSwxMSBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpzYXZlRG9jdW1lbnRTdGF0ZSgp
CiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm47CiAKLSAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBtX2ZyYW1lLmRvY3VtZW50KCk7Ci0gICAgQVNTRVJUKGRvY3VtZW50KTsKLSAgICAKLSAg
ICBpZiAoaXRlbS0+aXNDdXJyZW50RG9jdW1lbnQoZG9jdW1lbnQpICYmIGRvY3VtZW50LT5oYXNM
aXZpbmdSZW5kZXJUcmVlKCkpIHsKKyAgICBBU1NFUlQobV9mcmFtZS5kb2N1bWVudCgpKTsKKyAg
ICBEb2N1bWVudCYgZG9jdW1lbnQgPSAqbV9mcmFtZS5kb2N1bWVudCgpOworICAgIGlmIChpdGVt
LT5pc0N1cnJlbnREb2N1bWVudChkb2N1bWVudCkgJiYgZG9jdW1lbnQuaGFzTGl2aW5nUmVuZGVy
VHJlZSgpKSB7CiAgICAgICAgIExPRyhMb2FkaW5nLCAiV2ViQ29yZUxvYWRpbmcgJXM6IHNhdmlu
ZyBmb3JtIHN0YXRlIHRvICVwIiwgbV9mcmFtZS50cmVlKCkudW5pcXVlTmFtZSgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCksIGl0ZW0pOwotICAgICAgICBpdGVtLT5zZXREb2N1bWVudFN0YXRlKGRv
Y3VtZW50LT5mb3JtRWxlbWVudHNTdGF0ZSgpKTsKKyAgICAgICAgaXRlbS0+c2V0RG9jdW1lbnRT
dGF0ZShkb2N1bWVudC5mb3JtRWxlbWVudHNTdGF0ZSgpKTsKICAgICB9CiB9CiAKQEAgLTI1Myw3
ICsyNTIsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjppbnZhbGlkYXRlQ3VycmVudEl0ZW1D
YWNoZWRQYWdlKCkKICAgICB9CiB9CiAKLWJvb2wgSGlzdG9yeUNvbnRyb2xsZXI6OnNob3VsZFN0
b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qIHRhcmdldEl0ZW0pIGNvbnN0Citi
b29sIEhpc3RvcnlDb250cm9sbGVyOjpzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhp
c3RvcnlJdGVtJiB0YXJnZXRJdGVtKSBjb25zdAogewogICAgIGlmICghbV9jdXJyZW50SXRlbSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDY5LDggKzQ2OCw4IEBAIHZvaWQgSGlzdG9yeUNv
bnRyb2xsZXI6OnVwZGF0ZUZvckNvbW1pdCgpCiAgICAgICAgIC8vIE5vdGUgcHJldmlvdXNJdGVt
IG11c3QgYmUgc2V0IGJlZm9yZSB3ZSBjbG9zZSB0aGUgVVJMLCB3aGljaCB3aWxsCiAgICAgICAg
IC8vIGhhcHBlbiB3aGVuIHRoZSBkYXRhIHNvdXJjZSBpcyBtYWRlIG5vbi1wcm92aXNpb25hbCBi
ZWxvdwogICAgICAgICBBU1NFUlQobV9wcm92aXNpb25hbEl0ZW0pOwotICAgICAgICBzZXRDdXJy
ZW50SXRlbShtX3Byb3Zpc2lvbmFsSXRlbS5nZXQoKSk7Ci0gICAgICAgIG1fcHJvdmlzaW9uYWxJ
dGVtID0gMDsKKyAgICAgICAgc2V0Q3VycmVudEl0ZW0oKm1fcHJvdmlzaW9uYWxJdGVtKTsKKyAg
ICAgICAgbV9wcm92aXNpb25hbEl0ZW0gPSBudWxscHRyOwogCiAgICAgICAgIC8vIFRlbGwgYWxs
IG90aGVyIGZyYW1lcyBpbiB0aGUgdHJlZSB0byBjb21taXQgdGhlaXIgcHJvdmlzaW9uYWwgaXRl
bXMgYW5kCiAgICAgICAgIC8vIHJlc3RvcmUgdGhlaXIgc2Nyb2xsIHBvc2l0aW9uLiAgV2UnbGwg
YXZvaWQgdGhpcyBmcmFtZSAod2hpY2ggaGFzIGFscmVhZHkKQEAgLTUxMCw4ICs1MDksOCBAQCB2
b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVVcGRhdGVGb3JDb21taXQoKQogICAgICAg
ICAgICAgdmlldy0+c2V0V2FzU2Nyb2xsZWRCeVVzZXIoZmFsc2UpOwogCiAgICAgICAgIC8vIE5v
dyBjb21taXQgdGhlIHByb3Zpc2lvbmFsIGl0ZW0KLSAgICAgICAgc2V0Q3VycmVudEl0ZW0obV9w
cm92aXNpb25hbEl0ZW0uZ2V0KCkpOwotICAgICAgICBtX3Byb3Zpc2lvbmFsSXRlbSA9IDA7Cisg
ICAgICAgIHNldEN1cnJlbnRJdGVtKCptX3Byb3Zpc2lvbmFsSXRlbSk7CisgICAgICAgIG1fcHJv
dmlzaW9uYWxJdGVtID0gbnVsbHB0cjsKIAogICAgICAgICAvLyBSZXN0b3JlIGZvcm0gc3RhdGUg
KHdvcmtzIGZyb20gY3VycmVudEl0ZW0pCiAgICAgICAgIHJlc3RvcmVEb2N1bWVudFN0YXRlKCk7
CkBAIC01NTUsMTIgKzU1NCwxMiBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVV
cGRhdGVGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCkKIAogICAgIC8vIFRoZSBwcm92aXNpb25h
bCBpdGVtIG1heSByZXByZXNlbnQgYSBkaWZmZXJlbnQgcGVuZGluZyBuYXZpZ2F0aW9uLgogICAg
IC8vIERvbid0IGNvbW1pdCBpdCBpZiBpdCBpc24ndCBhIHNhbWUgZG9jdW1lbnQgbmF2aWdhdGlv
bi4KLSAgICBpZiAobV9jdXJyZW50SXRlbSAmJiAhbV9jdXJyZW50SXRlbS0+c2hvdWxkRG9TYW1l
RG9jdW1lbnROYXZpZ2F0aW9uVG8obV9wcm92aXNpb25hbEl0ZW0uZ2V0KCkpKQorICAgIGlmICht
X2N1cnJlbnRJdGVtICYmICFtX2N1cnJlbnRJdGVtLT5zaG91bGREb1NhbWVEb2N1bWVudE5hdmln
YXRpb25UbygqbV9wcm92aXNpb25hbEl0ZW0pKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBD
b21taXQgdGhlIHByb3Zpc2lvbmFsIGl0ZW0uCi0gICAgc2V0Q3VycmVudEl0ZW0obV9wcm92aXNp
b25hbEl0ZW0uZ2V0KCkpOwotICAgIG1fcHJvdmlzaW9uYWxJdGVtID0gMDsKKyAgICBzZXRDdXJy
ZW50SXRlbSgqbV9wcm92aXNpb25hbEl0ZW0pOworICAgIG1fcHJvdmlzaW9uYWxJdGVtID0gbnVs
bHB0cjsKIAogICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgcmVzdCBvZiB0aGUgdHJlZS4KICAgICBm
b3IgKEZyYW1lKiBjaGlsZCA9IG1fZnJhbWUudHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPnRyZWUoKS5uZXh0U2libGluZygpKQpAQCAtNTc1LDExICs1NzQsMTEgQEAg
dm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yRnJhbWVMb2FkQ29tcGxldGVkKCkKICAg
ICBtX2ZyYW1lTG9hZENvbXBsZXRlID0gdHJ1ZTsKIH0KIAotdm9pZCBIaXN0b3J5Q29udHJvbGxl
cjo6c2V0Q3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCit2b2lkIEhpc3RvcnlDb250cm9s
bGVyOjpzZXRDdXJyZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSkKIHsKICAgICBtX2ZyYW1lTG9h
ZENvbXBsZXRlID0gZmFsc2U7CiAgICAgbV9wcmV2aW91c0l0ZW0gPSBtX2N1cnJlbnRJdGVtOwot
ICAgIG1fY3VycmVudEl0ZW0gPSBpdGVtOworICAgIG1fY3VycmVudEl0ZW0gPSAmaXRlbTsKIH0K
IAogdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2V0Q3VycmVudEl0ZW1UaXRsZShjb25zdCBTdHJp
bmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKQEAgLTYxMCw3ICs2MDksNyBAQCB2b2lkIEhpc3RvcnlD
b250cm9sbGVyOjpzZXRQcm92aXNpb25hbEl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiAgICAgbV9w
cm92aXNpb25hbEl0ZW0gPSBpdGVtOwogfQogCi12b2lkIEhpc3RvcnlDb250cm9sbGVyOjppbml0
aWFsaXplSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKK3ZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6Omlu
aXRpYWxpemVJdGVtKEhpc3RvcnlJdGVtJiBpdGVtKQogewogICAgIERvY3VtZW50TG9hZGVyKiBk
b2N1bWVudExvYWRlciA9IG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBB
U1NFUlQoZG9jdW1lbnRMb2FkZXIpOwpAQCAtNjQyLDM0ICs2NDEsMzQgQEAgdm9pZCBIaXN0b3J5
Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiAgICAgU3RyaW5n
IHBhcmVudCA9IHBhcmVudEZyYW1lID8gcGFyZW50RnJhbWUtPnRyZWUoKS51bmlxdWVOYW1lKCkg
OiAiIjsKICAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIHRpdGxlID0gZG9jdW1lbnRMb2FkZXItPnRp
dGxlKCk7CiAKLSAgICBpdGVtLT5zZXRVUkwodXJsKTsKLSAgICBpdGVtLT5zZXRUYXJnZXQobV9m
cmFtZS50cmVlKCkudW5pcXVlTmFtZSgpKTsKLSAgICBpdGVtLT5zZXRQYXJlbnQocGFyZW50KTsK
KyAgICBpdGVtLnNldFVSTCh1cmwpOworICAgIGl0ZW0uc2V0VGFyZ2V0KG1fZnJhbWUudHJlZSgp
LnVuaXF1ZU5hbWUoKSk7CisgICAgaXRlbS5zZXRQYXJlbnQocGFyZW50KTsKICAgICAvLyBGSVhN
RTogc2hvdWxkIHN0b3JlIHRpdGxlIGRpcmVjdGlvbmFsaXR5IGluIGhpc3RvcnkgYXMgd2VsbC4K
LSAgICBpdGVtLT5zZXRUaXRsZSh0aXRsZS5zdHJpbmcoKSk7Ci0gICAgaXRlbS0+c2V0T3JpZ2lu
YWxVUkxTdHJpbmcob3JpZ2luYWxVUkwuc3RyaW5nKCkpOworICAgIGl0ZW0uc2V0VGl0bGUodGl0
bGUuc3RyaW5nKCkpOworICAgIGl0ZW0uc2V0T3JpZ2luYWxVUkxTdHJpbmcob3JpZ2luYWxVUkwu
c3RyaW5nKCkpOwogCiAgICAgaWYgKCF1bnJlYWNoYWJsZVVSTC5pc0VtcHR5KCkgfHwgZG9jdW1l
bnRMb2FkZXItPnJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApCi0gICAgICAgIGl0
ZW0tPnNldExhc3RWaXNpdFdhc0ZhaWx1cmUodHJ1ZSk7CisgICAgICAgIGl0ZW0uc2V0TGFzdFZp
c2l0V2FzRmFpbHVyZSh0cnVlKTsKIAogICAgIC8vIFNhdmUgZm9ybSBzdGF0ZSBpZiB0aGlzIGlz
IGEgUE9TVAotICAgIGl0ZW0tPnNldEZvcm1JbmZvRnJvbVJlcXVlc3QoZG9jdW1lbnRMb2FkZXIt
PnJlcXVlc3QoKSk7CisgICAgaXRlbS5zZXRGb3JtSW5mb0Zyb21SZXF1ZXN0KGRvY3VtZW50TG9h
ZGVyLT5yZXF1ZXN0KCkpOwogfQogCi1QYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBIaXN0b3J5Q29u
dHJvbGxlcjo6Y3JlYXRlSXRlbSgpCitSZWY8SGlzdG9yeUl0ZW0+IEhpc3RvcnlDb250cm9sbGVy
OjpjcmVhdGVJdGVtKCkKIHsKLSAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBIaXN0b3J5
SXRlbTo6Y3JlYXRlKCk7Ci0gICAgaW5pdGlhbGl6ZUl0ZW0oaXRlbS5nZXQoKSk7CisgICAgUmVm
PEhpc3RvcnlJdGVtPiBpdGVtID0gSGlzdG9yeUl0ZW06OmNyZWF0ZSgpOworICAgIGluaXRpYWxp
emVJdGVtKGl0ZW0pOwogICAgIAogICAgIC8vIFNldCB0aGUgaXRlbSBmb3Igd2hpY2ggd2Ugd2ls
bCBzYXZlIGRvY3VtZW50IHN0YXRlCi0gICAgc2V0Q3VycmVudEl0ZW0oaXRlbS5nZXQoKSk7Cisg
ICAgc2V0Q3VycmVudEl0ZW0oaXRlbSk7CiAgICAgCi0gICAgcmV0dXJuIGl0ZW0ucmVsZWFzZSgp
OworICAgIHJldHVybiBpdGVtOwogfQogCi1QYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBIaXN0b3J5
Q29udHJvbGxlcjo6Y3JlYXRlSXRlbVRyZWUoRnJhbWUmIHRhcmdldEZyYW1lLCBib29sIGNsaXBB
dFRhcmdldCkKK1JlZjxIaXN0b3J5SXRlbT4gSGlzdG9yeUNvbnRyb2xsZXI6OmNyZWF0ZUl0ZW1U
cmVlKEZyYW1lJiB0YXJnZXRGcmFtZSwgYm9vbCBjbGlwQXRUYXJnZXQpCiB7Ci0gICAgUmVmUHRy
PEhpc3RvcnlJdGVtPiBiZkl0ZW0gPSBjcmVhdGVJdGVtKCk7CisgICAgUmVmPEhpc3RvcnlJdGVt
PiBiZkl0ZW0gPSBjcmVhdGVJdGVtKCk7CiAgICAgaWYgKCFtX2ZyYW1lTG9hZENvbXBsZXRlKQog
ICAgICAgICBzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0obV9wcmV2aW91c0l0
ZW0uZ2V0KCkpOwogCkBAIC03MTcsNyArNzE2LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6
cmVjdXJzaXZlU2V0UHJvdmlzaW9uYWxJdGVtKEhpc3RvcnlJdGVtJiBpdGVtLCBIaXN0b3J5SXQK
ICAgICAvLyBTZXQgcHJvdmlzaW9uYWwgaXRlbSwgd2hpY2ggd2lsbCBiZSBjb21taXR0ZWQgaW4g
cmVjdXJzaXZlVXBkYXRlRm9yQ29tbWl0LgogICAgIG1fcHJvdmlzaW9uYWxJdGVtID0gJml0ZW07
CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkSXRlbSA6IGl0ZW0uY2hpbGRyZW4oKSkgewor
ICAgIGZvciAoYXV0byYgY2hpbGRJdGVtIDogaXRlbS5jaGlsZHJlbigpKSB7CiAgICAgICAgIGNv
bnN0IFN0cmluZyYgY2hpbGRGcmFtZU5hbWUgPSBjaGlsZEl0ZW0tPnRhcmdldCgpOwogCiAgICAg
ICAgIEhpc3RvcnlJdGVtKiBmcm9tQ2hpbGRJdGVtID0gZnJvbUl0ZW0tPmNoaWxkSXRlbVdpdGhU
YXJnZXQoY2hpbGRGcmFtZU5hbWUpOwpAQCAtNzI1LDcgKzcyNCw3IEBAIHZvaWQgSGlzdG9yeUNv
bnRyb2xsZXI6OnJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFsSXRlbShIaXN0b3J5SXRlbSYgaXRlbSwg
SGlzdG9yeUl0CiAgICAgICAgIEZyYW1lKiBjaGlsZEZyYW1lID0gbV9mcmFtZS50cmVlKCkuY2hp
bGQoY2hpbGRGcmFtZU5hbWUpOwogICAgICAgICBBU1NFUlQoY2hpbGRGcmFtZSk7CiAKLSAgICAg
ICAgY2hpbGRGcmFtZS0+bG9hZGVyKCkuaGlzdG9yeSgpLnJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFs
SXRlbSgqY2hpbGRJdGVtLCBmcm9tQ2hpbGRJdGVtKTsKKyAgICAgICAgY2hpbGRGcmFtZS0+bG9h
ZGVyKCkuaGlzdG9yeSgpLnJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFsSXRlbShjb25zdF9jYXN0PEhp
c3RvcnlJdGVtJj4oY2hpbGRJdGVtLmdldCgpKSwgZnJvbUNoaWxkSXRlbSk7CiAgICAgfQogfQog
CkBAIC03MzksMTQgKzczOCwxNCBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVH
b1RvSXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgSGlzdG9yeUl0ZW0qIGZyb21JdAogICAgIH0KIAog
ICAgIC8vIEp1c3QgaXRlcmF0ZSBvdmVyIHRoZSByZXN0LCBsb29raW5nIGZvciBmcmFtZXMgdG8g
bmF2aWdhdGUuCi0gICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZEl0ZW0gOiBpdGVtLmNoaWxkcmVu
KCkpIHsKKyAgICBmb3IgKGF1dG8mIGNoaWxkSXRlbSA6IGl0ZW0uY2hpbGRyZW4oKSkgewogICAg
ICAgICBjb25zdCBTdHJpbmcmIGNoaWxkRnJhbWVOYW1lID0gY2hpbGRJdGVtLT50YXJnZXQoKTsK
IAogICAgICAgICBIaXN0b3J5SXRlbSogZnJvbUNoaWxkSXRlbSA9IGZyb21JdGVtLT5jaGlsZEl0
ZW1XaXRoVGFyZ2V0KGNoaWxkRnJhbWVOYW1lKTsKICAgICAgICAgQVNTRVJUKGZyb21DaGlsZEl0
ZW0pOwogICAgICAgICBGcmFtZSogY2hpbGRGcmFtZSA9IG1fZnJhbWUudHJlZSgpLmNoaWxkKGNo
aWxkRnJhbWVOYW1lKTsKICAgICAgICAgQVNTRVJUKGNoaWxkRnJhbWUpOwotICAgICAgICBjaGls
ZEZyYW1lLT5sb2FkZXIoKS5oaXN0b3J5KCkucmVjdXJzaXZlR29Ub0l0ZW0oKmNoaWxkSXRlbSwg
ZnJvbUNoaWxkSXRlbSwgdHlwZSk7CisgICAgICAgIGNoaWxkRnJhbWUtPmxvYWRlcigpLmhpc3Rv
cnkoKS5yZWN1cnNpdmVHb1RvSXRlbShjb25zdF9jYXN0PEhpc3RvcnlJdGVtJj4oY2hpbGRJdGVt
LmdldCgpKSwgZnJvbUNoaWxkSXRlbSwgdHlwZSk7CiAgICAgfQogfQogCkBAIC03NjMsNyArNzYy
LDcgQEAgYm9vbCBIaXN0b3J5Q29udHJvbGxlcjo6aXRlbXNBcmVDbG9uZXMoSGlzdG9yeUl0ZW0m
IGl0ZW0xLCBIaXN0b3J5SXRlbSogaXRlbTIpIGMKICAgICAgICAgJiYgJml0ZW0xICE9IGl0ZW0y
CiAgICAgICAgICYmIGl0ZW0xLml0ZW1TZXF1ZW5jZU51bWJlcigpID09IGl0ZW0yLT5pdGVtU2Vx
dWVuY2VOdW1iZXIoKQogICAgICAgICAmJiBjdXJyZW50RnJhbWVzTWF0Y2hJdGVtKCZpdGVtMSkK
LSAgICAgICAgJiYgaXRlbTItPmhhc1NhbWVGcmFtZXMoJml0ZW0xKTsKKyAgICAgICAgJiYgaXRl
bTItPmhhc1NhbWVGcmFtZXMoaXRlbTEpOwogfQogCiAvLyBIZWxwZXIgbWV0aG9kIHRoYXQgZGV0
ZXJtaW5lcyB3aGV0aGVyIHRoZSBjdXJyZW50IGZyYW1lIHRyZWUgbWF0Y2hlcyBnaXZlbiBoaXN0
b3J5IGl0ZW0ncy4KQEAgLTgwMSw5ICs4MDAsOSBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1
cGRhdGVCYWNrRm9yd2FyZExpc3RDbGlwcGVkQXRUYXJnZXQoYm9vbCBkb0NsaXApCiAKICAgICBG
cmFtZUxvYWRlciYgZnJhbWVMb2FkZXIgPSBtX2ZyYW1lLm1haW5GcmFtZSgpLmxvYWRlcigpOwog
Ci0gICAgUmVmUHRyPEhpc3RvcnlJdGVtPiB0b3BJdGVtID0gZnJhbWVMb2FkZXIuaGlzdG9yeSgp
LmNyZWF0ZUl0ZW1UcmVlKG1fZnJhbWUsIGRvQ2xpcCk7Ci0gICAgTE9HKEJhY2tGb3J3YXJkLCAi
V2ViQ29yZUJhY2tGb3J3YXJkIC0gQWRkaW5nIGJhY2tmb3J3YXJkIGl0ZW0gJXAgZm9yIGZyYW1l
ICVzIiwgdG9wSXRlbS5nZXQoKSwgbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51
cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgcGFnZS0+YmFja0ZvcndhcmQoKS5h
ZGRJdGVtKHRvcEl0ZW0ucmVsZWFzZSgpKTsKKyAgICBSZWY8SGlzdG9yeUl0ZW0+IHRvcEl0ZW0g
PSBmcmFtZUxvYWRlci5oaXN0b3J5KCkuY3JlYXRlSXRlbVRyZWUobV9mcmFtZSwgZG9DbGlwKTsK
KyAgICBMT0coQmFja0ZvcndhcmQsICJXZWJDb3JlQmFja0ZvcndhcmQgLSBBZGRpbmcgYmFja2Zv
cndhcmQgaXRlbSAlcCBmb3IgZnJhbWUgJXMiLCB0b3BJdGVtLnB0cigpLCBtX2ZyYW1lLmxvYWRl
cigpLmRvY3VtZW50TG9hZGVyKCktPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAg
ICBwYWdlLT5iYWNrRm9yd2FyZCgpLmFkZEl0ZW0oV1RGOjptb3ZlKHRvcEl0ZW0pKTsKIH0KIAog
dm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlQ3VycmVudEl0ZW0oKQpAQCAtODIzLDcgKzgy
Miw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUN1cnJlbnRJdGVtKCkKICAgICAg
ICAgLy8gZGVwZW5kZW50IG9uIHRoZSBkb2N1bWVudC4KICAgICAgICAgYm9vbCBpc1RhcmdldEl0
ZW0gPSBtX2N1cnJlbnRJdGVtLT5pc1RhcmdldEl0ZW0oKTsKICAgICAgICAgbV9jdXJyZW50SXRl
bS0+cmVzZXQoKTsKLSAgICAgICAgaW5pdGlhbGl6ZUl0ZW0obV9jdXJyZW50SXRlbS5nZXQoKSk7
CisgICAgICAgIGluaXRpYWxpemVJdGVtKCptX2N1cnJlbnRJdGVtKTsKICAgICAgICAgbV9jdXJy
ZW50SXRlbS0+c2V0SXNUYXJnZXRJdGVtKGlzVGFyZ2V0SXRlbSk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgLy8gRXZlbiBpZiB0aGUgZmluYWwgVVJMIGRpZG4ndCBjaGFuZ2UsIHRoZSBmb3JtIGRh
dGEgbWF5IGhhdmUgY2hhbmdlZC4KQEAgLTg0MCw3ICs4MzksNyBAQCB2b2lkIEhpc3RvcnlDb250
cm9sbGVyOjpwdXNoU3RhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRl
T2JqZWN0LAogICAgIEFTU0VSVChwYWdlKTsKIAogICAgIC8vIEdldCBhIEhpc3RvcnlJdGVtIHRy
ZWUgZm9yIHRoZSBjdXJyZW50IGZyYW1lIHRyZWUuCi0gICAgUmVmUHRyPEhpc3RvcnlJdGVtPiB0
b3BJdGVtID0gbV9mcmFtZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5oaXN0b3J5KCkuY3JlYXRlSXRl
bVRyZWUobV9mcmFtZSwgZmFsc2UpOworICAgIFJlZjxIaXN0b3J5SXRlbT4gdG9wSXRlbSA9IG1f
ZnJhbWUubWFpbkZyYW1lKCkubG9hZGVyKCkuaGlzdG9yeSgpLmNyZWF0ZUl0ZW1UcmVlKG1fZnJh
bWUsIGZhbHNlKTsKICAgICAKICAgICAvLyBPdmVycmlkZSBkYXRhIGluIHRoZSBjdXJyZW50IGl0
ZW0gKGNyZWF0ZWQgYnkgY3JlYXRlSXRlbVRyZWUpIHRvIHJlZmxlY3QKICAgICAvLyB0aGUgcHVz
aFN0YXRlKCkgYXJndW1lbnRzLgpAQCAtODQ4LDcgKzg0Nyw3IEBAIHZvaWQgSGlzdG9yeUNvbnRy
b2xsZXI6OnB1c2hTdGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVP
YmplY3QsCiAgICAgbV9jdXJyZW50SXRlbS0+c2V0U3RhdGVPYmplY3Qoc3RhdGVPYmplY3QpOwog
ICAgIG1fY3VycmVudEl0ZW0tPnNldFVSTFN0cmluZyh1cmxTdHJpbmcpOwogCi0gICAgcGFnZS0+
YmFja0ZvcndhcmQoKS5hZGRJdGVtKHRvcEl0ZW0ucmVsZWFzZSgpKTsKKyAgICBwYWdlLT5iYWNr
Rm9yd2FyZCgpLmFkZEl0ZW0oV1RGOjptb3ZlKHRvcEl0ZW0pKTsKIAogICAgIGlmIChtX2ZyYW1l
LnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaAppbmRleCAxYjQwYTgwYjBlMzI3MThi
MzNlZmI0MjJhYWZlNjc2ZmJjM2M3ZmU4Li5lMzk1MmM2NTU5NDMyZTc4YmE5ZDU3ZDYwMDc5Mjgy
MGE2ZjA4NzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaApA
QCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVGb3JGcmFtZUxvYWRDb21w
bGV0ZWQoKTsKIAogICAgIEhpc3RvcnlJdGVtKiBjdXJyZW50SXRlbSgpIGNvbnN0IHsgcmV0dXJu
IG1fY3VycmVudEl0ZW0uZ2V0KCk7IH0KLSAgICB2b2lkIHNldEN1cnJlbnRJdGVtKEhpc3RvcnlJ
dGVtKik7CisgICAgdm9pZCBzZXRDdXJyZW50SXRlbShIaXN0b3J5SXRlbSYpOwogICAgIHZvaWQg
c2V0Q3VycmVudEl0ZW1UaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgYm9v
bCBjdXJyZW50SXRlbVNob3VsZEJlUmVwbGFjZWQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlcGxhY2VDdXJyZW50SXRlbShIaXN0b3J5SXRlbSopOwpAQCAtOTIsMTIgKzkyLDEy
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUGFnZTsKLSAgICBib29s
IHNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdDsKKyAg
ICBib29sIHNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0mKSBjb25z
dDsKICAgICB2b2lkIGdvVG9JdGVtKEhpc3RvcnlJdGVtJiwgRnJhbWVMb2FkVHlwZSk7CiAKLSAg
ICB2b2lkIGluaXRpYWxpemVJdGVtKEhpc3RvcnlJdGVtKik7Ci0gICAgUGFzc1JlZlB0cjxIaXN0
b3J5SXRlbT4gY3JlYXRlSXRlbSgpOwotICAgIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGNyZWF0
ZUl0ZW1UcmVlKEZyYW1lJiB0YXJnZXRGcmFtZSwgYm9vbCBjbGlwQXRUYXJnZXQpOworICAgIHZv
aWQgaW5pdGlhbGl6ZUl0ZW0oSGlzdG9yeUl0ZW0mKTsKKyAgICBSZWY8SGlzdG9yeUl0ZW0+IGNy
ZWF0ZUl0ZW0oKTsKKyAgICBSZWY8SGlzdG9yeUl0ZW0+IGNyZWF0ZUl0ZW1UcmVlKEZyYW1lJiB0
YXJnZXRGcmFtZSwgYm9vbCBjbGlwQXRUYXJnZXQpOwogCiAgICAgdm9pZCByZWN1cnNpdmVTZXRQ
cm92aXNpb25hbEl0ZW0oSGlzdG9yeUl0ZW0mLCBIaXN0b3J5SXRlbSopOwogICAgIHZvaWQgcmVj
dXJzaXZlR29Ub0l0ZW0oSGlzdG9yeUl0ZW0mLCBIaXN0b3J5SXRlbSosIEZyYW1lTG9hZFR5cGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMjdjMDRiNTk1OGRjYmFmMmRiNTVmNmZiZTIzYTUxN2Jm
NmQyMTU1Mi4uMDZiOTFiYWYwY2U4OTE2OTExNmMyMTViYWNiNGJkMThkYjg1OTk0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCkBAIC00MzYsNyArNDM2LDcgQEAgdm9pZCBQYWdlOjpnb1RvSXRlbShIaXN0
b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSB0eXBlKQogICAgIC8vIGJlaW5nIGRlcmVmKCkt
ZWQuIE1ha2Ugc3VyZSB3ZSBjYW4gc3RpbGwgdXNlIGl0IHdpdGggSGlzdG9yeUNvbnRyb2xsZXI6
OmdvVG9JdGVtIGxhdGVyLgogICAgIFJlZjxIaXN0b3J5SXRlbT4gcHJvdGVjdG9yKGl0ZW0pOwog
Ci0gICAgaWYgKG1fbWFpbkZyYW1lLT5sb2FkZXIoKS5oaXN0b3J5KCkuc2hvdWxkU3RvcExvYWRp
bmdGb3JIaXN0b3J5SXRlbSgmaXRlbSkpCisgICAgaWYgKG1fbWFpbkZyYW1lLT5sb2FkZXIoKS5o
aXN0b3J5KCkuc2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbShpdGVtKSkKICAgICAgICAg
bV9tYWluRnJhbWUtPmxvYWRlcigpLnN0b3BBbGxMb2FkZXJzKCk7CiAKICAgICBtX21haW5GcmFt
ZS0+bG9hZGVyKCkuaGlzdG9yeSgpLmdvVG9JdGVtKGl0ZW0sIHR5cGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbQppbmRleCBlYmZiZDRkMDA0
MTAyM2MyNWMyYzY5ZTg0NzkwODJjOGM0MjYzNTdmLi45M2JlNjg1NTI0MzMwYmFkMzYyZmVjMmFk
NzE3OGEzN2JlYjliZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dl
YkJhY2tGb3J3YXJkTGlzdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkJh
Y2tGb3J3YXJkTGlzdC5tbQpAQCAtMTUzLDcgKzE1Myw4IEBAIC0gKHZvaWQpX2Nsb3NlCiAKIC0g
KHZvaWQpYWRkSXRlbTooV2ViSGlzdG9yeUl0ZW0gKillbnRyeQogewotICAgIGNvcmUoc2VsZikt
PmFkZEl0ZW0oY29yZShlbnRyeSkpOworICAgIEFTU0VSVChlbnRyeSk7CisgICAgY29yZShzZWxm
KS0+YWRkSXRlbSgqY29yZShlbnRyeSkpOwogICAgIAogICAgIC8vIFNpbmNlIHRoZSBhc3N1bWVk
IGNvbnRyYWN0IHdpdGggV2ViQmFja0ZvcndhcmRMaXN0IGlzIHRoYXQgaXQgcmV0YWlucyBpdHMg
V2ViSGlzdG9yeUl0ZW1zLAogICAgIC8vIHRoZSBmb2xsb3dpbmcgbGluZSBwcmV2ZW50cyBhIHdo
b2xlIGNsYXNzIG9mIHByb2JsZW1zIHdoZXJlIGEgaGlzdG9yeSBpdGVtIHdpbGwgYmUgY3JlYXRl
ZCBpbgpAQCAtMjU1LDcgKzI1Niw3IEBAIHN0YXRpYyBOU0FycmF5KiB2ZWN0b3JUb05TQXJyYXko
SGlzdG9yeUl0ZW1WZWN0b3ImIGxpc3QpCiAgICAgdW5zaWduZWQgc2l6ZSA9IGxpc3Quc2l6ZSgp
OwogICAgIE5TTXV0YWJsZUFycmF5ICpyZXN1bHQgPSBbW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdFdpdGhDYXBhY2l0eTpzaXplXSBhdXRvcmVsZWFzZV07CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3Jlc3VsdCBhZGRPYmplY3Q6a2l0KGxpc3Rb
aV0uZ2V0KCkpXTsKKyAgICAgICAgW3Jlc3VsdCBhZGRPYmplY3Q6a2l0KGxpc3RbaV0ucHRyKCkp
XTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0zMjcsMTQgKzMyOCwxNCBAQCAtKE5TU3Ry
aW5nICopZGVzY3JpcHRpb24KICAgICAKICAgICB1bnNpZ25lZCBzaXplID0gZW50cmllcy5zaXpl
KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBp
ZiAoZW50cmllc1tpXSA9PSBiYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCkpIHsKKyAgICAg
ICAgaWYgKGVudHJpZXNbaV0ucHRyKCkgPT0gYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgp
KSB7CiAgICAgICAgICAgICBbcmVzdWx0IGFwcGVuZFN0cmluZzpAIiA+Pj4iXTsgCiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBbcmVzdWx0IGFwcGVuZFN0cmluZzpAIiAgICAiXTsgCiAg
ICAgICAgIH0gICAKICAgICAgICAgW3Jlc3VsdCBhcHBlbmRGb3JtYXQ6QCIlMmQpICIsIGldOwog
ICAgICAgICBpbnQgY3VyclBvcyA9IFtyZXN1bHQgbGVuZ3RoXTsKLSAgICAgICAgW3Jlc3VsdCBh
cHBlbmRTdHJpbmc6W2tpdChlbnRyaWVzW2ldLmdldCgpKSBkZXNjcmlwdGlvbl1dOworICAgICAg
ICBbcmVzdWx0IGFwcGVuZFN0cmluZzpba2l0KGVudHJpZXNbaV0ucHRyKCkpIGRlc2NyaXB0aW9u
XV07CiAKICAgICAgICAgLy8gc2hpZnQgYWxsIHRoZSBjb250ZW50cyBvdmVyLiAgYSBiaXQgc2xv
dywgYnV0IHRoaXMgaXMgZm9yIGRlYnVnZ2luZwogICAgICAgICBOU1JhbmdlIHJlcGxSYW5nZSA9
IHsgc3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oY3VyclBvcyksIFtyZXN1bHQgbGVuZ3RoXSAtIGN1
cnJQb3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9y
eUl0ZW0ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCmlu
ZGV4IGU2NzdiMDFlNzNiZGNmMjI3YjI4ZjQxZjg4Y2ExNjE5NWQ5NWRjM2IuLmFlNzYwMWZjZDcx
ZDEzODYwNjkxNTMzZTU1MDI3ZDRlZjNhNjJiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvSGlz
dG9yeS9XZWJIaXN0b3J5SXRlbS5tbQpAQCAtMjU4LDcgKzI1OCw3IEBAIC0gKE5TU3RyaW5nICop
ZGVzY3JpcHRpb24KICAgICAgICAgaW50IGN1cnJQb3MgPSBbcmVzdWx0IGxlbmd0aF07CiAgICAg
ICAgIHVuc2lnbmVkIHNpemUgPSBjaGlsZHJlbi5zaXplKCk7ICAgICAgICAKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAgV2ViSGlzdG9y
eUl0ZW0gKmNoaWxkID0ga2l0KGNoaWxkcmVuW2ldLmdldCgpKTsKKyAgICAgICAgICAgIFdlYkhp
c3RvcnlJdGVtICpjaGlsZCA9IGtpdChjb25zdF9jYXN0PEhpc3RvcnlJdGVtKj4oY2hpbGRyZW5b
aV0ucHRyKCkpKTsKICAgICAgICAgICAgIFtyZXN1bHQgYXBwZW5kU3RyaW5nOkAiXG4iXTsKICAg
ICAgICAgICAgIFtyZXN1bHQgYXBwZW5kU3RyaW5nOltjaGlsZCBkZXNjcmlwdGlvbl1dOwogICAg
ICAgICB9CkBAIC0zODAsNyArMzgwLDcgQEAgLSAoaWQpaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVz
ZW50YXRpb246KE5TRGljdGlvbmFyeSAqKWRpY3QKICAgICBpZiAoY2hpbGREaWN0cykgewogICAg
ICAgICBmb3IgKGludCBpID0gW2NoaWxkRGljdHMgY291bnRdIC0gMTsgaSA+PSAwOyBpLS0pIHsK
ICAgICAgICAgICAgIFdlYkhpc3RvcnlJdGVtICpjaGlsZCA9IFtbV2ViSGlzdG9yeUl0ZW0gYWxs
b2NdIGluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOltjaGlsZERpY3RzIG9iamVjdEF0
SW5kZXg6aV1dOwotICAgICAgICAgICAgY29yZShfcHJpdmF0ZSktPmFkZENoaWxkSXRlbShjb3Jl
KGNoaWxkLT5fcHJpdmF0ZSkpOworICAgICAgICAgICAgY29yZShfcHJpdmF0ZSktPmFkZENoaWxk
SXRlbSgqY29yZShjaGlsZC0+X3ByaXZhdGUpKTsKICAgICAgICAgICAgIFtjaGlsZCByZWxlYXNl
XTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ4MSw3ICs0ODEsNyBAQCAtIChOU0RpY3Rpb25hcnkg
KilkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24KICAgICAgICAgTlNNdXRhYmxlQXJyYXkgKmNoaWxk
RGljdHMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6Y2hpbGRyZW4uc2l6ZSgp
XTsKICAgICAgICAgCiAgICAgICAgIGZvciAoaW50IGkgPSBjaGlsZHJlbi5zaXplKCkgLSAxOyBp
ID49IDA7IGktLSkKLSAgICAgICAgICAgIFtjaGlsZERpY3RzIGFkZE9iamVjdDpba2l0KGNoaWxk
cmVuW2ldLmdldCgpKSBkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb25dXTsKKyAgICAgICAgICAgIFtj
aGlsZERpY3RzIGFkZE9iamVjdDpba2l0KGNvbnN0X2Nhc3Q8SGlzdG9yeUl0ZW0qPihjaGlsZHJl
bltpXS5wdHIoKSkpIGRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbl1dOwogICAgICAgICBbZGljdCBz
ZXRPYmplY3Q6IGNoaWxkRGljdHMgZm9yS2V5OmNoaWxkcmVuS2V5XTsKICAgICB9CiAKQEAgLTU0
MSw3ICs1NDEsNyBAQCAtIChOU0FycmF5ICopY2hpbGRyZW4KICAgICBOU011dGFibGVBcnJheSAq
cmVzdWx0ID0gW1tbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6c2l6ZV0g
YXV0b3JlbGVhc2VdOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyAr
K2kpCi0gICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0OmtpdChjaGlsZHJlbltpXS5nZXQoKSldOwor
ICAgICAgICBbcmVzdWx0IGFkZE9iamVjdDpraXQoY29uc3RfY2FzdDxIaXN0b3J5SXRlbSo+KGNo
aWxkcmVuW2ldLnB0cigpKSldOwogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNzRhZDU1YTk0NmVkOGUzOTcwNGE2ZGQzYmE4
NDhhYmM4ODAxMGVhMi4uNDgzY2EwZWUxNGZlYzYwOTFhMjNkZmU2YjBkYTI4ZDkwOTdlNDlkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjAwMiwxMCArMjAwMiwxMCBA
QCAtICh2b2lkKV9sb2FkQmFja0ZvcndhcmRMaXN0RnJvbU90aGVyVmlldzooV2ViVmlldyAqKW90
aGVyVmlldwogICAgICAgICAgICAgLy8gdW50aWwgd2UgbGVhdmUgdGhhdCBwYWdlLgogICAgICAg
ICAgICAgb3RoZXJWaWV3LT5fcHJpdmF0ZS0+cGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuaGlz
dG9yeSgpLnNhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlKCk7CiAgICAgICAgIH0KLSAgICAgICAg
UmVmUHRyPEhpc3RvcnlJdGVtPiBuZXdJdGVtID0gb3RoZXJCYWNrRm9yd2FyZENsaWVudC0+aXRl
bUF0SW5kZXgoaSktPmNvcHkoKTsKKyAgICAgICAgUmVmPEhpc3RvcnlJdGVtPiBuZXdJdGVtID0g
b3RoZXJCYWNrRm9yd2FyZENsaWVudC0+aXRlbUF0SW5kZXgoaSktPmNvcHkoKTsKICAgICAgICAg
aWYgKGkgPT0gMCkgCi0gICAgICAgICAgICBuZXdJdGVtVG9Hb1RvID0gbmV3SXRlbS5nZXQoKTsK
LSAgICAgICAgYmFja0ZvcndhcmRDbGllbnQtPmFkZEl0ZW0obmV3SXRlbS5yZWxlYXNlKCkpOwor
ICAgICAgICAgICAgbmV3SXRlbVRvR29UbyA9IG5ld0l0ZW0ucHRyKCk7CisgICAgICAgIGJhY2tG
b3J3YXJkQ2xpZW50LT5hZGRJdGVtKFdURjo6bW92ZShuZXdJdGVtKSk7CiAgICAgfQogICAgIAog
ICAgIEFTU0VSVChuZXdJdGVtVG9Hb1RvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJCYWNrRm9yd2Fy
ZExpc3QuY3BwCmluZGV4IGExMzk1ODQ5MjYxNGExZWJhNzc4ZjkxNjk5MDY4ZWY4YjQ3Y2Q5Y2Qu
LmU3YmM3ZTVhM2RkNmFjOGIyZTRjOTIxODNhNDgzMzFmZWExNzY4MzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViQmFja0ZvcndhcmRMaXN0OjphZGRJdGVtKAogICAgIGlmICgh
aXRlbSB8fCBGQUlMRUQoaXRlbS0+UXVlcnlJbnRlcmZhY2UoJndlYkhpc3RvcnlJdGVtKSkpCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CiAgCi0gICAgbV9iYWNrRm9yd2FyZExpc3QtPmFkZEl0ZW0o
d2ViSGlzdG9yeUl0ZW0tPmhpc3RvcnlJdGVtKCkpOworICAgIG1fYmFja0ZvcndhcmRMaXN0LT5h
ZGRJdGVtKCp3ZWJIaXN0b3J5SXRlbS0+aGlzdG9yeUl0ZW0oKSk7CiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnlJdGVtLmNwcCBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAppbmRleCA2OGY1MTM4MmVlNTI1
MDVjODM5MmZiMDZlZWQzN2VjZGMyZjdiNjhlLi40NDk1OTQ4ZThlMzFlMzhhZGY4MTU5NTE5ODIx
YTIxMTkzMzI5NGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRl
bS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCkBAIC0yODYs
NyArMjg2LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5SXRlbTo6Y2hp
bGRyZW4odW5zaWduZWQqIG91dENoaWxkQ291bnQsIFNBRkUKICAgICAgICAgcmV0dXJuIEVfT1VU
T0ZNRU1PUlk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2hpbGRDb3VudDsgKytp
KSB7Ci0gICAgICAgIENPTVB0cjxXZWJIaXN0b3J5SXRlbT4gaXRlbShBZG9wdENPTSwgV2ViSGlz
dG9yeUl0ZW06OmNyZWF0ZUluc3RhbmNlKGNvcmVDaGlsZHJlbltpXSkpOworICAgICAgICBDT01Q
dHI8V2ViSGlzdG9yeUl0ZW0+IGl0ZW0oQWRvcHRDT00sIFdlYkhpc3RvcnlJdGVtOjpjcmVhdGVJ
bnN0YW5jZShjb3JlQ2hpbGRyZW5baV0ucHRyKCkpKTsKICAgICAgICAgaWYgKCFpdGVtKSB7CiAg
ICAgICAgICAgICBTYWZlQXJyYXlEZXN0cm95KGNoaWxkcmVuKTsKICAgICAgICAgICAgIHJldHVy
biBFX09VVE9GTUVNT1JZOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAppbmRleCA5OWQzNTNjMDA5N2YyODAz
NThlYmRjMzVmMGUwMGUzMGUyNjRhYmJlLi43YWUwMmMwNTkzODcwNWZmMjliZWJiYTkzZDU3M2Nk
NjAxNWE3MzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApAQCAtNTQ4OSwxMCArNTQ4OSwxMCBAQCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmxvYWRCYWNrRm9yd2FyZExpc3RGcm9t
T3RoZXJWaWV3KAogICAgICAgICAgICAgLy8gdW50aWwgd2UgbGVhdmUgdGhhdCBwYWdlLgogICAg
ICAgICAgICAgb3RoZXJXZWJWaWV3LT5tX3BhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmhpc3Rv
cnkoKS5zYXZlRG9jdW1lbnRBbmRTY3JvbGxTdGF0ZSgpOwogICAgICAgICB9Ci0gICAgICAgIFJl
ZlB0cjxIaXN0b3J5SXRlbT4gbmV3SXRlbSA9IG90aGVyQmFja0ZvcndhcmRDbGllbnQtPml0ZW1B
dEluZGV4KGkpLT5jb3B5KCk7CisgICAgICAgIFJlZjxIaXN0b3J5SXRlbT4gbmV3SXRlbSA9IG90
aGVyQmFja0ZvcndhcmRDbGllbnQtPml0ZW1BdEluZGV4KGkpLT5jb3B5KCk7CiAgICAgICAgIGlm
ICghaSkgCi0gICAgICAgICAgICBuZXdJdGVtVG9Hb1RvID0gbmV3SXRlbS5nZXQoKTsKLSAgICAg
ICAgYmFja0ZvcndhcmRDbGllbnQtPmFkZEl0ZW0obmV3SXRlbS5yZWxlYXNlKCkpOworICAgICAg
ICAgICAgbmV3SXRlbVRvR29UbyA9IG5ld0l0ZW0ucHRyKCk7CisgICAgICAgIGJhY2tGb3J3YXJk
Q2xpZW50LT5hZGRJdGVtKFdURjo6bW92ZShuZXdJdGVtKSk7CiAgICAgfQogICAgIAogICAgIEFT
U0VSVChuZXdJdGVtVG9Hb1RvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVC
YWNrRm9yd2FyZExpc3RJdGVtLmNwcAppbmRleCAyODkxOTM1M2VlZTBjY2Y1MzA4Zjg1ODMyMDZh
YTQwNzgxNGEwYmMwLi5hYWU2YTQ2YWU2MzJmOGI1NGMzZDcyNTdmNjRjZjIwMjkyZjY5MDE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0u
Y3BwCkBAIC0zOCw3ICszOCw3IEBAIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gSW5qZWN0ZWRCdW5k
bGVCYWNrRm9yd2FyZExpc3RJdGVtOjpjaGlsZHJlbigpIGNvbnN0CiAgICAgY2hpbGRyZW4ucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2l0ZW0tPmNoaWxkcmVuKCkuc2l6ZSgpKTsKIAogICAgIGZv
ciAoY29uc3QgYXV0byYgY2hpbGQgOiBtX2l0ZW0tPmNoaWxkcmVuKCkpCi0gICAgICAgIGNoaWxk
cmVuLnVuY2hlY2tlZEFwcGVuZChJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW06OmNy
ZWF0ZShjaGlsZCkpOworICAgICAgICBjaGlsZHJlbi51bmNoZWNrZWRBcHBlbmQoSW5qZWN0ZWRC
dW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoY29uc3RfY2FzdDxIaXN0b3J5SXRlbSo+
KGNoaWxkLnB0cigpKSkpOwogCiAgICAgcmV0dXJuIEFQSTo6QXJyYXk6OmNyZWF0ZShXVEY6Om1v
dmUoY2hpbGRyZW4pKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCmlu
ZGV4IGIwOTQwOTk4ZmYwNTA3ZDBhNGUzYzQ0ZDRiNTJkNDgzNjFkZmMwYzguLmZkMGE5OGU4NDc1
OTRjMzQyMDdhMjg1YmI2ZWMzMDU3ZmQ1ODM0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVD
b252ZXJzaW9uLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBGcmFtZVN0YXRlIHRvRnJh
bWVTdGF0ZShjb25zdCBIaXN0b3J5SXRlbSYgaGlzdG9yeUl0ZW0pCiAjZW5kaWYKIAogICAgIGZv
ciAoYXV0byYgY2hpbGRIaXN0b3J5SXRlbSA6IGhpc3RvcnlJdGVtLmNoaWxkcmVuKCkpIHsKLSAg
ICAgICAgRnJhbWVTdGF0ZSBjaGlsZEZyYW1lU3RhdGUgPSB0b0ZyYW1lU3RhdGUoKmNoaWxkSGlz
dG9yeUl0ZW0pOworICAgICAgICBGcmFtZVN0YXRlIGNoaWxkRnJhbWVTdGF0ZSA9IHRvRnJhbWVT
dGF0ZShjaGlsZEhpc3RvcnlJdGVtKTsKICAgICAgICAgZnJhbWVTdGF0ZS5jaGlsZHJlbi5hcHBl
bmQoV1RGOjptb3ZlKGNoaWxkRnJhbWVTdGF0ZSkpOwogICAgIH0KIApAQCAtMTc4LDEwICsxNzgs
MTAgQEAgc3RhdGljIHZvaWQgYXBwbHlGcmFtZVN0YXRlKEhpc3RvcnlJdGVtJiBoaXN0b3J5SXRl
bSwgY29uc3QgRnJhbWVTdGF0ZSYgZnJhbWVTdGEKICNlbmRpZgogCiAgICAgZm9yIChjb25zdCBh
dXRvJiBjaGlsZEZyYW1lU3RhdGUgOiBmcmFtZVN0YXRlLmNoaWxkcmVuKSB7Ci0gICAgICAgIFJl
ZlB0cjxIaXN0b3J5SXRlbT4gY2hpbGRIaXN0b3J5SXRlbSA9IEhpc3RvcnlJdGVtOjpjcmVhdGUo
Y2hpbGRGcmFtZVN0YXRlLnVybFN0cmluZywgU3RyaW5nKCkpOwotICAgICAgICBhcHBseUZyYW1l
U3RhdGUoKmNoaWxkSGlzdG9yeUl0ZW0sIGNoaWxkRnJhbWVTdGF0ZSk7CisgICAgICAgIFJlZjxI
aXN0b3J5SXRlbT4gY2hpbGRIaXN0b3J5SXRlbSA9IEhpc3RvcnlJdGVtOjpjcmVhdGUoY2hpbGRG
cmFtZVN0YXRlLnVybFN0cmluZywgU3RyaW5nKCkpOworICAgICAgICBhcHBseUZyYW1lU3RhdGUo
Y2hpbGRIaXN0b3J5SXRlbSwgY2hpbGRGcmFtZVN0YXRlKTsKIAotICAgICAgICBoaXN0b3J5SXRl
bS5hZGRDaGlsZEl0ZW0oY2hpbGRIaXN0b3J5SXRlbS5yZWxlYXNlKCkpOworICAgICAgICBoaXN0
b3J5SXRlbS5hZGRDaGlsZEl0ZW0oV1RGOjptb3ZlKGNoaWxkSGlzdG9yeUl0ZW0pKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJC
YWNrRm9yd2FyZExpc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCmluZGV4IGE5YzY3NzkwNTZiOTJkNjBkNDk0
YjUxNTg5ZjM0ZDUzMTQ1ODhjZjYuLjlkYzJhNjFkODJiODg5MTg0YmMzMTYzNTE1ZDQwMGUzNWFk
NzRlZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJC
YWNrRm9yd2FyZExpc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcApAQCAtMTQzLDExICsxNDMsOSBAQCBX
ZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6V2ViQmFja0ZvcndhcmRMaXN0UHJveHkoV2ViUGFnZSog
cGFnZSkKICAgICBXZWJDb3JlOjpub3RpZnlIaXN0b3J5SXRlbUNoYW5nZWQgPSBXSzJOb3RpZnlI
aXN0b3J5SXRlbUNoYW5nZWQ7CiB9CiAKLXZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFk
ZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gcHJwSXRlbSkKK3ZvaWQgV2ViQmFja0Zvcndh
cmRMaXN0UHJveHk6OmFkZEl0ZW0oUmVmPEhpc3RvcnlJdGVtPiYmIGl0ZW0pCiB7Ci0gICAgUmVm
UHRyPEhpc3RvcnlJdGVtPiBpdGVtID0gcHJwSXRlbTsKLQotICAgIEFTU0VSVCghaGlzdG9yeUl0
ZW1Ub0lETWFwKCkuY29udGFpbnMoaXRlbSkpOworICAgIEFTU0VSVCghaGlzdG9yeUl0ZW1Ub0lE
TWFwKCkuY29udGFpbnMoaXRlbS5wdHIoKSkpOwogCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAg
IHJldHVybjsKQEAgLTE1OCwxMCArMTU2LDEwIEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHk6OmFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gcHJwSXRlbSkKIAogICAgIG1fYXNz
b2NpYXRlZEl0ZW1JRHMuYWRkKGl0ZW1JRCk7CiAKLSAgICBoaXN0b3J5SXRlbVRvSURNYXAoKS5z
ZXQ8SXRlbUFuZFBhZ2VJRD4oaXRlbSwgeyAuaXRlbUlEID0gaXRlbUlELCAucGFnZUlEID0gbV9w
YWdlLT5wYWdlSUQoKSB9KTsKLSAgICBpZFRvSGlzdG9yeUl0ZW1NYXAoKS5zZXQoaXRlbUlELCBp
dGVtKTsKKyAgICBoaXN0b3J5SXRlbVRvSURNYXAoKS5zZXQ8SXRlbUFuZFBhZ2VJRD4oaXRlbS5w
dHIoKSwgeyAuaXRlbUlEID0gaXRlbUlELCAucGFnZUlEID0gbV9wYWdlLT5wYWdlSUQoKSB9KTsK
KyAgICBpZFRvSGlzdG9yeUl0ZW1NYXAoKS5zZXQoaXRlbUlELCBpdGVtLnB0cigpKTsKIAotICAg
IHVwZGF0ZUJhY2tGb3J3YXJkSXRlbShpdGVtSUQsIG1fcGFnZS0+cGFnZUlEKCksIGl0ZW0uZ2V0
KCkpOworICAgIHVwZGF0ZUJhY2tGb3J3YXJkSXRlbShpdGVtSUQsIG1fcGFnZS0+cGFnZUlEKCks
IGl0ZW0ucHRyKCkpOwogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpC
YWNrRm9yd2FyZEFkZEl0ZW0oaXRlbUlEKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKaW5k
ZXggYWExNDdlMWQ4YTI1MzEzMWZmYWRhNjFkOGVlMjA1ZDBjMWI5ZWNlNy4uMmNiZGVkMjVhZDQy
ZWU5Yjk5MmMzMTdkN2UyOTUzZjZjNDQ1ZTdmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKQEAg
LTUwLDcgKzUwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJCYWNrRm9yd2FyZExpc3RQ
cm94eShXZWJQYWdlKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkSXRlbShQYXNzUmVmUHRyPFdl
YkNvcmU6Okhpc3RvcnlJdGVtPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGFkZEl0ZW0o
UmVmPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiYmKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBnb1RvSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIG92ZXJyaWRlOwogICAgICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245823</attachid>
            <date>2015-02-01 00:20:20 -0800</date>
            <delta_ts>2015-02-01 00:49:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141133-20150201002028.patch</filename>
            <type>text/plain</type>
            <size>50336</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzgzZWZlYmM0NTU3ZTQ5
YzFhZWE0NWZkYTk5Y2VkZmExZTJmZTgwMy4uOWVkZGM1ZjZiYjFkZWM1MTNiYWM0MDIzMzI0M2Nk
NTE1YjBkMWEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTAxLTMxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIG1vcmUgcmVmZXJlbmNl
cyBpbiBIaXN0b3J5SXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQxMTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXNlIG1vcmUgcmVmZXJlbmNlcyBpbiBIaXN0b3J5SXRlbSBpbnN0ZWFkIG9mIHBv
aW50ZXJzLgorCiAyMDE1LTAxLTMxICBNeWxlcyBDLiBNYXhmaWVsZCAgPGxpdGhlcnVtQGdtYWls
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTc3Njg5KTogRW1vamkgdmFyaWF0aW9uIHNl
cXVlbmNlcyByZW5kZXJlZCBpbmNvcnJlY3RseSAoYXMgY2hhcmFjdGVycyBmcm9tIG90aGVyIG5v
bi1lbW9qaSBmb250KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGMyYjY4M2MwMGU1YTc2NTgxMzUwYTE0
NGFiNTViNGY0MTcyNWU4ZWUuLjFlYjE5ZDYzNjA3YzVjOTI3ZDM3YWYyZTM1M2FjNDA4YmE4ZTlj
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0wMS0zMSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBtb3JlIHJlZmVyZW5jZXMg
aW4gSGlzdG9yeUl0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0MTEzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVzZSBtb3JlIHJlZmVyZW5jZXMgaW4gSGlzdG9yeUl0ZW0gaW5zdGVhZCBvZiBwb2lu
dGVycy4KKwogMjAxNS0wMS0zMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlbW92ZSBldmVuIG1vcmUgTW91bnRhaW4gTGlvbiBzdXBwb3J0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
MzNkYzg0ZDVmZGU2YmRmNzk0YTY0Mzc5ZTJiYTA2ZmE1NzhjZGI4MC4uZWI1ZTU0Y2FhMmEwZmMw
N2RkZjFmZTQwYjYwYTUwMTdhN2Q0NjgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDE1LTAxLTMxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNl
IG1vcmUgcmVmZXJlbmNlcyBpbiBIaXN0b3J5SXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIG1vcmUgcmVmZXJlbmNlcyBpbiBIaXN0b3J5SXRl
bSBpbnN0ZWFkIG9mIHBvaW50ZXJzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW06OmNoaWxkcmVuKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0Ojp0b0ZyYW1lU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjphcHBs
eUZyYW1lU3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5
OjphZGRJdGVtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRM
aXN0UHJveHkuaDoKKwogMjAxNS0wMS0zMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJlbW92ZSBldmVuIG1vcmUgTW91bnRhaW4gTGlvbiBzdXBwb3J0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCmluZGV4IGNmNDlmZjgwZWQxY2M5NTU0NGMyNTQ4ZTg5OTMwNGZmMGQ0NzY1YWQu
LmE4YWM4N2I3ZWIzMjBmYzgwOWI0NTE4MzhmZWRmNDQzMWNkYjAyMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCkBAIC0xNjMsNyArMTYzLDcgQEAgX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjlzZXRP
cGVuZXJFUE5TXzVGcmFtZUUKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xMHRhcmdldEl0ZW1F
dgogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTExc2V0Rm9ybURhdGFFTjNXVEYxMFBhc3NSZWZQ
dHJJTlNfOEZvcm1EYXRhRUVFCiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMTFzZXRSZWZlcnJl
ckVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xMmFkZENoaWxkSXRl
bUVOM1dURjEwUGFzc1JlZlB0cklTMF9FRQorX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTEyYWRk
Q2hpbGRJdGVtRU9OM1dURjNSZWZJUzBfRUUKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xMnNl
dFVSTFN0cmluZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xMnNl
dFZpZXdTdGF0ZUVQMTFvYmpjX29iamVjdAogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTE0YWRk
UmVkaXJlY3RVUkxFUktOM1dURjZTdHJpbmdFCkBAIC0xNzUsNiArMTc1LDcgQEAgX19aTjdXZWJD
b3JlMTFIaXN0b3J5SXRlbTE2c2V0RG9jdW1lbnRTdGF0ZUVSS04zV1RGNlZlY3RvcklOUzFfNlN0
cmluZ0VMbTBFTlMxXzEKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xN3NldEFsdGVybmF0ZVRp
dGxlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTE4c2V0Rm9ybUNv
bnRlbnRUeXBlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTE4c2V0
UGFnZVNjYWxlRmFjdG9yRWYKK19fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xOWNoaWxkSXRlbVdp
dGhUYXJnZXRFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMjBzZXRP
cmlnaW5hbFVSTFN0cmluZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0
ZW0yMHNldFRyYW5zaWVudFByb3BlcnR5RVJLTjNXVEY2U3RyaW5nRVAxMW9iamNfb2JqZWN0CiBf
X1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtOGZvcm1EYXRhRXYKQEAgLTQ5OCw4ICs0OTksOCBAQCBf
X1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDExY3VycmVudEl0ZW1FdgogX19aTjdXZWJDb3Jl
MTVCYWNrRm9yd2FyZExpc3QxMWZvcndhcmRJdGVtRXYKIF9fWk43V2ViQ29yZTE1QmFja0Zvcndh
cmRMaXN0MTFzZXRDYXBhY2l0eUVpCiBfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDEyY29u
dGFpbnNJdGVtRVBOU18xMUhpc3RvcnlJdGVtRQotX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExp
c3QxN2JhY2tMaXN0V2l0aExpbWl0RWlSTjNXVEY2VmVjdG9ySU5TMV82UmVmUHRySU5TXzExSGlz
dG9yeUl0ZW1FRUVMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCi1fX1pON1dlYkNvcmUxNUJh
Y2tGb3J3YXJkTGlzdDIwZm9yd2FyZExpc3RXaXRoTGltaXRFaVJOM1dURjZWZWN0b3JJTlMxXzZS
ZWZQdHJJTlNfMTFIaXN0b3J5SXRlbUVFRUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKK19f
Wk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTdiYWNrTGlzdFdpdGhMaW1pdEVpUk4zV1RGNlZl
Y3RvcklOUzFfM1JlZklOU18xMUhpc3RvcnlJdGVtRUVFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxv
d0VFRQorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QyMGZvcndhcmRMaXN0V2l0aExpbWl0
RWlSTjNXVEY2VmVjdG9ySU5TMV8zUmVmSU5TXzExSGlzdG9yeUl0ZW1FRUVMbTBFTlMxXzE1Q3Jh
c2hPbk92ZXJmbG93RUVFCiBfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDZjbG9zZWRFdgog
X19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q2Z29CYWNrRXYKIF9fWk43V2ViQ29yZTE1QmFj
a0ZvcndhcmRMaXN0N2VuYWJsZWRFdgpAQCAtMTY5Miw3ICsxNjkzLDYgQEAgX19aTks3V2ViQ29y
ZTExSGlzdG9yeUl0ZW0xNGFsdGVybmF0ZVRpdGxlRXYKIF9fWk5LN1dlYkNvcmUxMUhpc3RvcnlJ
dGVtMTVmb3JtQ29udGVudFR5cGVFdgogX19aTks3V2ViQ29yZTExSGlzdG9yeUl0ZW0xNXBhZ2VT
Y2FsZUZhY3RvckV2CiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTE3b3JpZ2luYWxVUkxTdHJp
bmdFdgotX19aTks3V2ViQ29yZTExSGlzdG9yeUl0ZW0xOWNoaWxkSXRlbVdpdGhUYXJnZXRFUktO
M1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTIwZ2V0VHJhbnNpZW50UHJv
cGVydHlFUktOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTIwaGFzQ2Fj
aGVkUGFnZUV4cGlyZWRFdgogX19aTks3V2ViQ29yZTExSGlzdG9yeUl0ZW0zdXJsRXYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDbGllbnQuaAppbmRleCA0NzE4NzM2MDFkNGZm
OTI5ZGQxNTEzYWUwOGNhZTJjMWQ2OWI5OTk5Li4wODIwNDE1ZmU4MTBmZWQxM2M1ZDlkYTI2YWVi
YmZmNzcwYjA5YmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3
YXJkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENsaWVu
dC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVh
bCB2b2lkIGFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4pID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkSXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBnb1RvSXRlbShIaXN0b3J5SXRlbSopID0gMDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAKaW5kZXggNTVjYWYxYzBkNzUx
NjUxNmExZGE4MzMwZjI4MTEyOTk0Y2FiZDc0NS4uMWFlYjYzY2Y1MjkzYzQ2NjhhZjIwZmZjYjEx
NTg1NjkxMGJmMmE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9y
d2FyZENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0Zvcndh
cmRDb250cm9sbGVyLmNwcApAQCAtOTcsOSArOTcsOSBAQCBib29sIEJhY2tGb3J3YXJkQ29udHJv
bGxlcjo6Z29Gb3J3YXJkKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBCYWNrRm9yd2Fy
ZENvbnRyb2xsZXI6OmFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gaXRlbSkKK3ZvaWQg
QmFja0ZvcndhcmRDb250cm9sbGVyOjphZGRJdGVtKFJlZjxIaXN0b3J5SXRlbT4mJiBpdGVtKQog
ewotICAgIG1fY2xpZW50LT5hZGRJdGVtKGl0ZW0pOworICAgIG1fY2xpZW50LT5hZGRJdGVtKFdU
Rjo6bW92ZShpdGVtKSk7CiB9CiAKIHZvaWQgQmFja0ZvcndhcmRDb250cm9sbGVyOjpzZXRDdXJy
ZW50SXRlbShIaXN0b3J5SXRlbSogaXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0Jh
Y2tGb3J3YXJkQ29udHJvbGxlci5oCmluZGV4IGYyM2I3ZTRiZjEwNDQ3Y2IyZjQxZWY3MmU2ZDIz
Y2Q2YmFmMGE5NjMuLjU4OWVlNWVjYTJiZTcwNjZmNjQzYzY1NjcwMDU3MjkzNmY2OWRmMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuaApAQCAt
NTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnb0JhY2soKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGdvRm9yd2FyZCgpOwogCi0gICAgdm9pZCBhZGRJdGVt
KFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+KTsKKyAgICB2b2lkIGFkZEl0ZW0oUmVmPEhpc3RvcnlJ
dGVtPiYmKTsKICAgICB2b2lkIHNldEN1cnJlbnRJdGVtKEhpc3RvcnlJdGVtKik7CiAgICAgICAg
IAogICAgIGludCBjb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9CYWNrRm9yd2FyZExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9y
d2FyZExpc3QuY3BwCmluZGV4IGVhZTYyYmM3MWY4NjM4MGM3MjUxNmI3ZTcwZDcxY2U3YWUzYjUw
NTMuLmNlM2VhZDU2MTIyNzcwMDkxYzg3ZDgwMTRhMzJiMmRlZjdhODY0YWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTU1LDM2ICs1NSwzNSBAQCBC
YWNrRm9yd2FyZExpc3Q6On5CYWNrRm9yd2FyZExpc3QoKQogICAgIEFTU0VSVChtX2Nsb3NlZCk7
CiB9CiAKLXZvaWQgQmFja0ZvcndhcmRMaXN0OjphZGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0
ZW0+IHBycEl0ZW0pCit2b2lkIEJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShSZWY8SGlzdG9yeUl0
ZW0+JiYgbmV3SXRlbSkKIHsKLSAgICBBU1NFUlQocHJwSXRlbSk7Ci0gICAgaWYgKG1fY2FwYWNp
dHkgPT0gMCB8fCAhbV9lbmFibGVkKQorICAgIGlmICghbV9jYXBhY2l0eSB8fCAhbV9lbmFibGVk
KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gVG9zcyBhbnl0aGluZyBpbiB0aGUgZm9y
d2FyZCBsaXN0ICAgIAogICAgIGlmIChtX2N1cnJlbnQgIT0gTm9DdXJyZW50SXRlbUluZGV4KSB7
CiAgICAgICAgIHVuc2lnbmVkIHRhcmdldFNpemUgPSBtX2N1cnJlbnQgKyAxOwogICAgICAgICB3
aGlsZSAobV9lbnRyaWVzLnNpemUoKSA+IHRhcmdldFNpemUpIHsKLSAgICAgICAgICAgIFJlZlB0
cjxIaXN0b3J5SXRlbT4gaXRlbSA9IG1fZW50cmllcy5sYXN0KCk7CisgICAgICAgICAgICBhdXRv
JiBpdGVtID0gbV9lbnRyaWVzLmxhc3QoKTsKICAgICAgICAgICAgIG1fZW50cmllcy5yZW1vdmVM
YXN0KCk7Ci0gICAgICAgICAgICBtX2VudHJ5SGFzaC5yZW1vdmUoaXRlbSk7Ci0gICAgICAgICAg
ICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZSgqaXRlbSk7CisgICAgICAgICAgICBtX2Vu
dHJ5SGFzaC5yZW1vdmUoaXRlbS5wdHIoKSk7CisgICAgICAgICAgICBQYWdlQ2FjaGU6OnNpbmds
ZXRvbigpLnJlbW92ZShpdGVtKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIFRvc3MgdGhl
IGZpcnN0IGl0ZW0gaWYgdGhlIGxpc3QgaXMgZ2V0dGluZyB0b28gYmlnLCBhcyBsb25nIGFzIHdl
J3JlIG5vdCB1c2luZyBpdAogICAgIC8vIChvciBldmVuIGlmIHdlIGFyZSwgaWYgd2Ugb25seSB3
YW50IDEgZW50cnkpLgotICAgIGlmIChtX2VudHJpZXMuc2l6ZSgpID09IG1fY2FwYWNpdHkgJiYg
KG1fY3VycmVudCAhPSAwIHx8IG1fY2FwYWNpdHkgPT0gMSkpIHsKLSAgICAgICAgUmVmUHRyPEhp
c3RvcnlJdGVtPiBpdGVtID0gbV9lbnRyaWVzWzBdOworICAgIGlmIChtX2VudHJpZXMuc2l6ZSgp
ID09IG1fY2FwYWNpdHkgJiYgKG1fY3VycmVudCB8fCBtX2NhcGFjaXR5ID09IDEpKSB7CisgICAg
ICAgIGF1dG8mIGl0ZW0gPSBtX2VudHJpZXMuZmlyc3QoKTsKICAgICAgICAgbV9lbnRyaWVzLnJl
bW92ZSgwKTsKLSAgICAgICAgbV9lbnRyeUhhc2gucmVtb3ZlKGl0ZW0pOwotICAgICAgICBQYWdl
Q2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZSgqaXRlbSk7Ci0gICAgICAgIG1fY3VycmVudC0tOwor
ICAgICAgICBtX2VudHJ5SGFzaC5yZW1vdmUoaXRlbS5wdHIoKSk7CisgICAgICAgIFBhZ2VDYWNo
ZTo6c2luZ2xldG9uKCkucmVtb3ZlKGl0ZW0pOworICAgICAgICAtLW1fY3VycmVudDsKICAgICB9
CiAKLSAgICBtX2VudHJ5SGFzaC5hZGQocHJwSXRlbS5nZXQoKSk7Ci0gICAgbV9lbnRyaWVzLmlu
c2VydChtX2N1cnJlbnQgKyAxLCBwcnBJdGVtKTsKLSAgICBtX2N1cnJlbnQrKzsKKyAgICBtX2Vu
dHJ5SGFzaC5hZGQobmV3SXRlbS5wdHIoKSk7CisgICAgbV9lbnRyaWVzLmluc2VydChtX2N1cnJl
bnQgKyAxLCBXVEY6Om1vdmUobmV3SXRlbSkpOworICAgICsrbV9jdXJyZW50OwogfQogCiB2b2lk
IEJhY2tGb3J3YXJkTGlzdDo6Z29CYWNrKCkKQEAgLTExMCw3ICsxMDksNyBAQCB2b2lkIEJhY2tG
b3J3YXJkTGlzdDo6Z29Ub0l0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiAgICAgICAgIAogICAgIHVu
c2lnbmVkIGludCBpbmRleCA9IDA7CiAgICAgZm9yICg7IGluZGV4IDwgbV9lbnRyaWVzLnNpemUo
KTsgKytpbmRleCkKLSAgICAgICAgaWYgKG1fZW50cmllc1tpbmRleF0gPT0gaXRlbSkKKyAgICAg
ICAgaWYgKG1fZW50cmllc1tpbmRleF0ucHRyKCkgPT0gaXRlbSkKICAgICAgICAgICAgIGJyZWFr
OwogICAgIGlmIChpbmRleCA8IG1fZW50cmllcy5zaXplKCkpIHsKICAgICAgICAgbV9jdXJyZW50
ID0gaW5kZXg7CkBAIC0xMjAsMzEgKzExOSwzMSBAQCB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Z29U
b0l0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiBIaXN0b3J5SXRlbSogQmFja0ZvcndhcmRMaXN0Ojpi
YWNrSXRlbSgpCiB7CiAgICAgaWYgKG1fY3VycmVudCAmJiBtX2N1cnJlbnQgIT0gTm9DdXJyZW50
SXRlbUluZGV4KQotICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVudCAtIDFdLmdldCgp
OwotICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVudCAtIDFd
LnB0cigpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBIaXN0b3J5SXRlbSogQmFja0Zvcndh
cmRMaXN0OjpjdXJyZW50SXRlbSgpCiB7CiAgICAgaWYgKG1fY3VycmVudCAhPSBOb0N1cnJlbnRJ
dGVtSW5kZXgpCi0gICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9jdXJyZW50XS5nZXQoKTsKLSAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJlbnRdLnB0cigpOwor
ICAgIHJldHVybiBudWxscHRyOwogfQogCiBIaXN0b3J5SXRlbSogQmFja0ZvcndhcmRMaXN0Ojpm
b3J3YXJkSXRlbSgpCiB7CiAgICAgaWYgKG1fZW50cmllcy5zaXplKCkgJiYgbV9jdXJyZW50IDwg
bV9lbnRyaWVzLnNpemUoKSAtIDEpCi0gICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9jdXJyZW50
ICsgMV0uZ2V0KCk7Ci0gICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9j
dXJyZW50ICsgMV0ucHRyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgQmFja0Zv
cndhcmRMaXN0OjpiYWNrTGlzdFdpdGhMaW1pdChpbnQgbGltaXQsIEhpc3RvcnlJdGVtVmVjdG9y
JiBsaXN0KQogewogICAgIGxpc3QuY2xlYXIoKTsKICAgICBpZiAobV9jdXJyZW50ICE9IE5vQ3Vy
cmVudEl0ZW1JbmRleCkgewotICAgICAgICB1bnNpZ25lZCBmaXJzdCA9IHN0ZDo6bWF4KChpbnQp
bV9jdXJyZW50IC0gbGltaXQsIDApOworICAgICAgICB1bnNpZ25lZCBmaXJzdCA9IHN0ZDo6bWF4
KHN0YXRpY19jYXN0PGludD4obV9jdXJyZW50KSAtIGxpbWl0LCAwKTsKICAgICAgICAgZm9yICg7
IGZpcnN0IDwgbV9jdXJyZW50OyArK2ZpcnN0KQotICAgICAgICAgICAgbGlzdC5hcHBlbmQobV9l
bnRyaWVzW2ZpcnN0XSk7CisgICAgICAgICAgICBsaXN0LmFwcGVuZChtX2VudHJpZXNbZmlyc3Rd
LmdldCgpKTsKICAgICB9CiB9CiAKQEAgLTE2MCw3ICsxNTksNyBAQCB2b2lkIEJhY2tGb3J3YXJk
TGlzdDo6Zm9yd2FyZExpc3RXaXRoTGltaXQoaW50IGxpbWl0LCBIaXN0b3J5SXRlbVZlY3RvciYg
bGlzdCkKICAgICAgICAgaW50IGxhc3QgPSBzdGQ6Om1pbihtX2N1cnJlbnQgKyBsaW1pdCwgbGFz
dEVudHJ5KTsKICAgICAgICAgbGltaXQgPSBtX2N1cnJlbnQgKyAxOwogICAgICAgICBmb3IgKDsg
bGltaXQgPD0gbGFzdDsgKytsaW1pdCkKLSAgICAgICAgICAgIGxpc3QuYXBwZW5kKG1fZW50cmll
c1tsaW1pdF0pOworICAgICAgICAgICAgbGlzdC5hcHBlbmQobV9lbnRyaWVzW2xpbWl0XS5nZXQo
KSk7CiAgICAgfQogfQogCkBAIC0xNzEsMTEgKzE3MCwxMSBAQCBpbnQgQmFja0ZvcndhcmRMaXN0
OjpjYXBhY2l0eSgpCiAKIHZvaWQgQmFja0ZvcndhcmRMaXN0OjpzZXRDYXBhY2l0eShpbnQgc2l6
ZSkKIHsgICAgCi0gICAgd2hpbGUgKHNpemUgPCAoaW50KW1fZW50cmllcy5zaXplKCkpIHsKLSAg
ICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtID0gbV9lbnRyaWVzLmxhc3QoKTsKKyAgICB3
aGlsZSAoc2l6ZSA8IHN0YXRpY19jYXN0PGludD4obV9lbnRyaWVzLnNpemUoKSkpIHsKKyAgICAg
ICAgYXV0byYgaXRlbSA9IG1fZW50cmllcy5sYXN0KCk7CiAgICAgICAgIG1fZW50cmllcy5yZW1v
dmVMYXN0KCk7Ci0gICAgICAgIG1fZW50cnlIYXNoLnJlbW92ZShpdGVtKTsKLSAgICAgICAgUGFn
ZUNhY2hlOjpzaW5nbGV0b24oKS5yZW1vdmUoKml0ZW0pOworICAgICAgICBtX2VudHJ5SGFzaC5y
ZW1vdmUoaXRlbS5wdHIoKSk7CisgICAgICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucmVtb3Zl
KGl0ZW0pOwogICAgIH0KIAogICAgIGlmICghc2l6ZSkKQEAgLTIxNCwxMyArMjEzLDEzIEBAIGlu
dCBCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0Q291bnQoKQogSGlzdG9yeUl0ZW0qIEJhY2tG
b3J3YXJkTGlzdDo6aXRlbUF0SW5kZXgoaW50IGluZGV4KQogewogICAgIC8vIERvIHJhbmdlIGNo
ZWNrcyB3aXRob3V0IGRvaW5nIG1hdGggb24gaW5kZXggdG8gYXZvaWQgb3ZlcmZsb3cuCi0gICAg
aWYgKGluZGV4IDwgLShpbnQpbV9jdXJyZW50KQotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAo
aW5kZXggPCAtc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnQpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAKICAgICBpZiAoaW5kZXggPiBmb3J3YXJkTGlzdENvdW50KCkpCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgCi0gICAgcmV0dXJu
IG1fZW50cmllc1tpbmRleCArIG1fY3VycmVudF0uZ2V0KCk7CisgICAgcmV0dXJuIG1fZW50cmll
c1tpbmRleCArIG1fY3VycmVudF0ucHRyKCk7CiB9CiAKIEhpc3RvcnlJdGVtVmVjdG9yJiBCYWNr
Rm9yd2FyZExpc3Q6OmVudHJpZXMoKQpAQCAtMjQ1LDcgKzI0NCw3IEBAIGJvb2wgQmFja0Zvcndh
cmRMaXN0OjpjbGVhckFsbFBhZ2VDYWNoZXMoKQogICAgIGZvciAoYXV0byYgaXRlbSA6IG1fZW50
cmllcykgewogICAgICAgICBpZiAoaXRlbS0+aXNJblBhZ2VDYWNoZSgpKSB7CiAgICAgICAgICAg
ICBkaWRSZW1vdmVBdExlYXN0T25lSXRlbSA9IHRydWU7Ci0gICAgICAgICAgICBQYWdlQ2FjaGU6
OnNpbmdsZXRvbigpLnJlbW92ZSgqaXRlbSk7CisgICAgICAgICAgICBQYWdlQ2FjaGU6OnNpbmds
ZXRvbigpLnJlbW92ZShpdGVtKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gZGlkUmVt
b3ZlQXRMZWFzdE9uZUl0ZW07CkBAIC0yNTUsNyArMjU0LDcgQEAgYm9vbCBCYWNrRm9yd2FyZExp
c3Q6OmNsZWFyQWxsUGFnZUNhY2hlcygpCiB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Y2xvc2UoKQog
ewogICAgIGZvciAoYXV0byYgaXRlbSA6IG1fZW50cmllcykKLSAgICAgICAgUGFnZUNhY2hlOjpz
aW5nbGV0b24oKS5yZW1vdmUoKml0ZW0pOworICAgICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigp
LnJlbW92ZShpdGVtKTsKICAgICBtX2VudHJpZXMuY2xlYXIoKTsKICAgICBtX2VudHJ5SGFzaC5j
bGVhcigpOwogICAgIG1fcGFnZSA9IG51bGxwdHI7CkBAIC0yNzIsOCArMjcxLDggQEAgdm9pZCBC
YWNrRm9yd2FyZExpc3Q6OnJlbW92ZUl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiAgICAgaWYgKCFp
dGVtKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fZW50cmllcy5zaXplKCk7ICsraSkKLSAgICAgICAgaWYgKG1fZW50cmllc1tpXSA9PSBpdGVt
KSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZW50cmllcy5zaXplKCk7ICsraSkg
eworICAgICAgICBpZiAobV9lbnRyaWVzW2ldLnB0cigpID09IGl0ZW0pIHsKICAgICAgICAgICAg
IG1fZW50cmllcy5yZW1vdmUoaSk7CiAgICAgICAgICAgICBtX2VudHJ5SGFzaC5yZW1vdmUoaXRl
bSk7CiAgICAgICAgICAgICBpZiAobV9jdXJyZW50ID09IE5vQ3VycmVudEl0ZW1JbmRleCB8fCBt
X2N1cnJlbnQgPCBpKQpAQCAtMjg3LDYgKzI4Niw3IEBAIHZvaWQgQmFja0ZvcndhcmRMaXN0Ojpy
ZW1vdmVJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAgICAgICAgICAgfQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KKyAgICB9CiB9CiAKIGJvb2wgQmFja0ZvcndhcmRMaXN0Ojpjb250
YWluc0l0ZW0oSGlzdG9yeUl0ZW0qIGVudHJ5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0Zv
cndhcmRMaXN0LmgKaW5kZXggYTMzYzhhNjZjMDA5NjU5NDY2MTZjYzRlZGM0N2ZjYzhlY2IwMjA2
OC4uNTkyOTI3NjBjY2M4NmY3OTJjNDVkN2M1NGE2ZjY5ZTdlMmMwNjNjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgUGFnZTsKIAotdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEhpc3Rv
cnlJdGVtPj4gSGlzdG9yeUl0ZW1WZWN0b3I7Cit0eXBlZGVmIFZlY3RvcjxSZWY8SGlzdG9yeUl0
ZW0+PiBIaXN0b3J5SXRlbVZlY3RvcjsKIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8SGlzdG9yeUl0
ZW0+PiBIaXN0b3J5SXRlbUhhc2hTZXQ7CiAKIGNsYXNzIEJhY2tGb3J3YXJkTGlzdCA6IHB1Ymxp
YyBCYWNrRm9yd2FyZENsaWVudCB7CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIFBh
Z2UqIHBhZ2UoKSB7IHJldHVybiBtX3BhZ2U7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhZGRJdGVt
KFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRk
SXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZ29CYWNrKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnb0ZvcndhcmQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgZ29Ub0l0ZW0oSGlzdG9yeUl0ZW0qKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKaW5kZXggM2M1MmZkNmUwMjc5MTc4YmY0MGFjZmU0YmQ4
MzI0NTE5MmNhYTAyZC4uMjI5YmFiOGU3YTIzYWMwNWMwYWQwNWU3ZWQ0MzE1N2RjZDdlOGIwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKQEAgLTE3Miw5ICsxNzIsOSBA
QCBpbmxpbmUgSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVtKGNvbnN0IEhpc3RvcnlJdGVtJiBpdGVt
KQogICAgICAgICBtX3JlZGlyZWN0VVJMcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmlu
Zz4+KCppdGVtLm1fcmVkaXJlY3RVUkxzKTsKIH0KIAotUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4g
SGlzdG9yeUl0ZW06OmNvcHkoKSBjb25zdAorUmVmPEhpc3RvcnlJdGVtPiBIaXN0b3J5SXRlbTo6
Y29weSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIaXN0b3J5SXRlbSgqdGhp
cykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhpc3RvcnlJdGVtKCp0aGlzKSk7CiB9CiAK
IHZvaWQgSGlzdG9yeUl0ZW06OnJlc2V0KCkKQEAgLTM2Niw0NCArMzY2LDQ0IEBAIHZvaWQgSGlz
dG9yeUl0ZW06OnNldFN0YXRlT2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBvYmplY3QpCiAgICAgbV9zdGF0ZU9iamVjdCA9IG9iamVjdDsKIH0KIAotdm9pZCBIaXN0b3J5
SXRlbTo6YWRkQ2hpbGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGNoaWxkKQordm9pZCBI
aXN0b3J5SXRlbTo6YWRkQ2hpbGRJdGVtKFJlZjxIaXN0b3J5SXRlbT4mJiBjaGlsZCkKIHsKICAg
ICBBU1NFUlQoIWNoaWxkSXRlbVdpdGhUYXJnZXQoY2hpbGQtPnRhcmdldCgpKSk7Ci0gICAgbV9j
aGlsZHJlbi5hcHBlbmQoY2hpbGQpOworICAgIG1fY2hpbGRyZW4uYXBwZW5kKFdURjo6bW92ZShj
aGlsZCkpOwogfQogCi12b2lkIEhpc3RvcnlJdGVtOjpzZXRDaGlsZEl0ZW0oUGFzc1JlZlB0cjxI
aXN0b3J5SXRlbT4gY2hpbGQpCit2b2lkIEhpc3RvcnlJdGVtOjpzZXRDaGlsZEl0ZW0oUmVmPEhp
c3RvcnlJdGVtPiYmIGNoaWxkKQogewogICAgIEFTU0VSVCghY2hpbGQtPmlzVGFyZ2V0SXRlbSgp
KTsKICAgICB1bnNpZ25lZCBzaXplID0gbV9jaGlsZHJlbi5zaXplKCk7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgIHsKICAgICAgICAgaWYgKG1fY2hpbGRyZW5baV0t
PnRhcmdldCgpID09IGNoaWxkLT50YXJnZXQoKSkgewogICAgICAgICAgICAgY2hpbGQtPnNldElz
VGFyZ2V0SXRlbShtX2NoaWxkcmVuW2ldLT5pc1RhcmdldEl0ZW0oKSk7Ci0gICAgICAgICAgICBt
X2NoaWxkcmVuW2ldID0gY2hpbGQ7CisgICAgICAgICAgICBtX2NoaWxkcmVuW2ldID0gV1RGOjpt
b3ZlKGNoaWxkKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBt
X2NoaWxkcmVuLmFwcGVuZChjaGlsZCk7CisgICAgbV9jaGlsZHJlbi5hcHBlbmQoV1RGOjptb3Zl
KGNoaWxkKSk7CiB9CiAKLUhpc3RvcnlJdGVtKiBIaXN0b3J5SXRlbTo6Y2hpbGRJdGVtV2l0aFRh
cmdldChjb25zdCBTdHJpbmcmIHRhcmdldCkgY29uc3QKK0hpc3RvcnlJdGVtKiBIaXN0b3J5SXRl
bTo6Y2hpbGRJdGVtV2l0aFRhcmdldChjb25zdCBTdHJpbmcmIHRhcmdldCkKIHsKICAgICB1bnNp
Z25lZCBzaXplID0gbV9jaGlsZHJlbi5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHNpemU7ICsraSkgewogICAgICAgICBpZiAobV9jaGlsZHJlbltpXS0+dGFyZ2V0KCkgPT0g
dGFyZ2V0KQotICAgICAgICAgICAgcmV0dXJuIG1fY2hpbGRyZW5baV0uZ2V0KCk7CisgICAgICAg
ICAgICByZXR1cm4gbV9jaGlsZHJlbltpXS5wdHIoKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUhpc3RvcnlJdGVtKiBIaXN0b3J5SXRlbTo6Y2hpbGRJ
dGVtV2l0aERvY3VtZW50U2VxdWVuY2VOdW1iZXIobG9uZyBsb25nIG51bWJlcikgY29uc3QKK0hp
c3RvcnlJdGVtKiBIaXN0b3J5SXRlbTo6Y2hpbGRJdGVtV2l0aERvY3VtZW50U2VxdWVuY2VOdW1i
ZXIobG9uZyBsb25nIG51bWJlcikKIHsKICAgICB1bnNpZ25lZCBzaXplID0gbV9jaGlsZHJlbi5z
aXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAg
ICBpZiAobV9jaGlsZHJlbltpXS0+ZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpID09IG51bWJlcikK
LSAgICAgICAgICAgIHJldHVybiBtX2NoaWxkcmVuW2ldLmdldCgpOworICAgICAgICAgICAgcmV0
dXJuIG1fY2hpbGRyZW5baV0ucHRyKCk7CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVy
biBudWxscHRyOwogfQogCiAvLyA8cmRhcjovL3Byb2JsZW0vNDg5NTg0OT4gSGlzdG9yeUl0ZW06
OmZpbmRUYXJnZXRJdGVtKCkgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggYSBub24tcmVjdXJzaXZl
IG1ldGhvZC4KQEAgLTQxMywxNSArNDEzLDE3IEBAIEhpc3RvcnlJdGVtKiBIaXN0b3J5SXRlbTo6
ZmluZFRhcmdldEl0ZW0oKQogICAgICAgICByZXR1cm4gdGhpczsKICAgICB1bnNpZ25lZCBzaXpl
ID0gbV9jaGlsZHJlbi5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7
ICsraSkgeworICAgICAgICAvLyBGSVhNRTogdGFyZ2V0SXRlbSgpIGNhbm5vdCByZXR1cm4gbnVs
bCBjdXJyZW50bHksIHdoaWNoIGlzIHdyb25nLgogICAgICAgICBpZiAoSGlzdG9yeUl0ZW0qIG1h
dGNoID0gbV9jaGlsZHJlbltpXS0+dGFyZ2V0SXRlbSgpKQogICAgICAgICAgICAgcmV0dXJuIG1h
dGNoOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogSGlz
dG9yeUl0ZW0qIEhpc3RvcnlJdGVtOjp0YXJnZXRJdGVtKCkKIHsKICAgICBIaXN0b3J5SXRlbSog
Zm91bmRJdGVtID0gZmluZFRhcmdldEl0ZW0oKTsKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
cHJvYmFibHkgbm90IGZhbGwgYmFjayB0byB8dGhpc3wuCiAgICAgcmV0dXJuIGZvdW5kSXRlbSA/
IGZvdW5kSXRlbSA6IHRoaXM7CiB9CiAKQEAgLTQ0MCwxMyArNDQyLDEzIEBAIHZvaWQgSGlzdG9y
eUl0ZW06OmNsZWFyQ2hpbGRyZW4oKQogICAgIG1fY2hpbGRyZW4uY2xlYXIoKTsKIH0KIAotYm9v
bCBIaXN0b3J5SXRlbTo6aXNBbmNlc3Rvck9mKGNvbnN0IEhpc3RvcnlJdGVtKiBpdGVtKSBjb25z
dAorYm9vbCBIaXN0b3J5SXRlbTo6aXNBbmNlc3Rvck9mKGNvbnN0IEhpc3RvcnlJdGVtJiBpdGVt
KSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jaGlsZHJlbi5zaXplKCk7
ICsraSkgewotICAgICAgICBIaXN0b3J5SXRlbSogY2hpbGQgPSBtX2NoaWxkcmVuW2ldLmdldCgp
OwotICAgICAgICBpZiAoY2hpbGQgPT0gaXRlbSkKKyAgICAgICAgYXV0byYgY2hpbGQgPSBtX2No
aWxkcmVuW2ldLmdldCgpOworICAgICAgICBpZiAoJmNoaWxkID09ICZpdGVtKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChjaGlsZC0+aXNBbmNlc3Rvck9mKGl0ZW0pKQor
ICAgICAgICBpZiAoY2hpbGQuaXNBbmNlc3Rvck9mKGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTQ1NSwzNCArNDU3LDM0IEBAIGJv
b2wgSGlzdG9yeUl0ZW06OmlzQW5jZXN0b3JPZihjb25zdCBIaXN0b3J5SXRlbSogaXRlbSkgY29u
c3QKIC8vIFdlIGRvIHNhbWUtZG9jdW1lbnQgbmF2aWdhdGlvbiBpZiBnb2luZyB0byBhIGRpZmZl
cmVudCBpdGVtIGFuZCBpZiBlaXRoZXIgb2YgdGhlIGZvbGxvd2luZyBpcyB0cnVlOgogLy8gLSBU
aGUgb3RoZXIgaXRlbSBjb3JyZXNwb25kcyB0byB0aGUgc2FtZSBkb2N1bWVudCAoZm9yIGhpc3Rv
cnkgZW50cmllcyBjcmVhdGVkIHZpYSBwdXNoU3RhdGUgb3IgZnJhZ21lbnQgY2hhbmdlcykuCiAv
LyAtIFRoZSBvdGhlciBpdGVtIGNvcnJlc3BvbmRzIHRvIHRoZSBzYW1lIHNldCBvZiBkb2N1bWVu
dHMsIGluY2x1ZGluZyBmcmFtZXMgKGZvciBoaXN0b3J5IGVudHJpZXMgY3JlYXRlZCB2aWEgcmVn
dWxhciBuYXZpZ2F0aW9uKQotYm9vbCBIaXN0b3J5SXRlbTo6c2hvdWxkRG9TYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uVG8oSGlzdG9yeUl0ZW0qIG90aGVySXRlbSkgY29uc3QKK2Jvb2wgSGlzdG9yeUl0
ZW06OnNob3VsZERvU2FtZURvY3VtZW50TmF2aWdhdGlvblRvKEhpc3RvcnlJdGVtJiBvdGhlckl0
ZW0pIGNvbnN0CiB7Ci0gICAgaWYgKHRoaXMgPT0gb3RoZXJJdGVtKQorICAgIGlmICh0aGlzID09
ICZvdGhlckl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChzdGF0ZU9iamVj
dCgpIHx8IG90aGVySXRlbS0+c3RhdGVPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIGRvY3VtZW50
U2VxdWVuY2VOdW1iZXIoKSA9PSBvdGhlckl0ZW0tPmRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKTsK
KyAgICBpZiAoc3RhdGVPYmplY3QoKSB8fCBvdGhlckl0ZW0uc3RhdGVPYmplY3QoKSkKKyAgICAg
ICAgcmV0dXJuIGRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSA9PSBvdGhlckl0ZW0uZG9jdW1lbnRT
ZXF1ZW5jZU51bWJlcigpOwogICAgIAotICAgIGlmICgodXJsKCkuaGFzRnJhZ21lbnRJZGVudGlm
aWVyKCkgfHwgb3RoZXJJdGVtLT51cmwoKS5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkgJiYgZXF1
YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwoKSwgb3RoZXJJdGVtLT51cmwoKSkpCi0g
ICAgICAgIHJldHVybiBkb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkgPT0gb3RoZXJJdGVtLT5kb2N1
bWVudFNlcXVlbmNlTnVtYmVyKCk7ICAgICAgICAKKyAgICBpZiAoKHVybCgpLmhhc0ZyYWdtZW50
SWRlbnRpZmllcigpIHx8IG90aGVySXRlbS51cmwoKS5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkg
JiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwoKSwgb3RoZXJJdGVtLnVybCgp
KSkKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSA9PSBvdGhlckl0ZW0u
ZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpOwogICAgIAogICAgIHJldHVybiBoYXNTYW1lRG9jdW1l
bnRUcmVlKG90aGVySXRlbSk7CiB9CiAKIC8vIERvZXMgYSByZWN1cnNpdmUgY2hlY2sgdGhhdCB0
aGlzIGl0ZW0gYW5kIGl0cyBkZXNjZW5kYW50cyBoYXZlIHRoZSBzYW1lCiAvLyBkb2N1bWVudCBz
ZXF1ZW5jZSBudW1iZXJzIGFzIHRoZSBvdGhlciBpdGVtLgotYm9vbCBIaXN0b3J5SXRlbTo6aGFz
U2FtZURvY3VtZW50VHJlZShIaXN0b3J5SXRlbSogb3RoZXJJdGVtKSBjb25zdAorYm9vbCBIaXN0
b3J5SXRlbTo6aGFzU2FtZURvY3VtZW50VHJlZShIaXN0b3J5SXRlbSYgb3RoZXJJdGVtKSBjb25z
dAogewotICAgIGlmIChkb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkgIT0gb3RoZXJJdGVtLT5kb2N1
bWVudFNlcXVlbmNlTnVtYmVyKCkpCisgICAgaWYgKGRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSAh
PSBvdGhlckl0ZW0uZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIAotICAgIGlmIChjaGlsZHJlbigpLnNpemUoKSAhPSBvdGhlckl0ZW0tPmNo
aWxkcmVuKCkuc2l6ZSgpKQorICAgIGlmIChjaGlsZHJlbigpLnNpemUoKSAhPSBvdGhlckl0ZW0u
Y2hpbGRyZW4oKS5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4oKS5zaXplKCk7IGkrKykgewotICAgICAgICBIaXN0b3J5
SXRlbSogY2hpbGQgPSBjaGlsZHJlbigpW2ldLmdldCgpOwotICAgICAgICBIaXN0b3J5SXRlbSog
b3RoZXJDaGlsZCA9IG90aGVySXRlbS0+Y2hpbGRJdGVtV2l0aERvY3VtZW50U2VxdWVuY2VOdW1i
ZXIoY2hpbGQtPmRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSk7Ci0gICAgICAgIGlmICghb3RoZXJD
aGlsZCB8fCAhY2hpbGQtPmhhc1NhbWVEb2N1bWVudFRyZWUob3RoZXJDaGlsZCkpCisgICAgICAg
IGF1dG8mIGNoaWxkID0gY2hpbGRyZW4oKVtpXS5nZXQoKTsKKyAgICAgICAgYXV0byogb3RoZXJD
aGlsZCA9IG90aGVySXRlbS5jaGlsZEl0ZW1XaXRoRG9jdW1lbnRTZXF1ZW5jZU51bWJlcihjaGls
ZC5kb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkpOworICAgICAgICBpZiAoIW90aGVyQ2hpbGQgfHwg
IWNoaWxkLmhhc1NhbWVEb2N1bWVudFRyZWUoKm90aGVyQ2hpbGQpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNDkxLDE2ICs0OTMsMTYgQEAgYm9vbCBIaXN0b3J5SXRl
bTo6aGFzU2FtZURvY3VtZW50VHJlZShIaXN0b3J5SXRlbSogb3RoZXJJdGVtKSBjb25zdAogCiAv
LyBEb2VzIGEgbm9uLXJlY3Vyc2l2ZSBjaGVjayB0aGF0IHRoaXMgaXRlbSBhbmQgaXRzIGltbWVk
aWF0ZSBjaGlsZHJlbiBoYXZlIHRoZQogLy8gc2FtZSBmcmFtZXMgYXMgdGhlIG90aGVyIGl0ZW0u
Ci1ib29sIEhpc3RvcnlJdGVtOjpoYXNTYW1lRnJhbWVzKEhpc3RvcnlJdGVtKiBvdGhlckl0ZW0p
IGNvbnN0Citib29sIEhpc3RvcnlJdGVtOjpoYXNTYW1lRnJhbWVzKEhpc3RvcnlJdGVtJiBvdGhl
ckl0ZW0pIGNvbnN0CiB7Ci0gICAgaWYgKHRhcmdldCgpICE9IG90aGVySXRlbS0+dGFyZ2V0KCkp
CisgICAgaWYgKHRhcmdldCgpICE9IG90aGVySXRlbS50YXJnZXQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAKLSAgICBpZiAoY2hpbGRyZW4oKS5zaXplKCkgIT0gb3RoZXJJdGVt
LT5jaGlsZHJlbigpLnNpemUoKSkKKyAgICBpZiAoY2hpbGRyZW4oKS5zaXplKCkgIT0gb3RoZXJJ
dGVtLmNoaWxkcmVuKCkuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNoaWxkcmVuKCkuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgaWYg
KCFvdGhlckl0ZW0tPmNoaWxkSXRlbVdpdGhUYXJnZXQoY2hpbGRyZW4oKVtpXS0+dGFyZ2V0KCkp
KQorICAgICAgICBpZiAoIW90aGVySXRlbS5jaGlsZEl0ZW1XaXRoVGFyZ2V0KGNoaWxkcmVuKClb
aV0tPnRhcmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTU0
MiwxMCArNTQ0LDEwIEBAIEZvcm1EYXRhKiBIaXN0b3J5SXRlbTo6Zm9ybURhdGEoKQogICAgIHJl
dHVybiBtX2Zvcm1EYXRhLmdldCgpOwogfQogCi1ib29sIEhpc3RvcnlJdGVtOjppc0N1cnJlbnRE
b2N1bWVudChEb2N1bWVudCogZG9jKSBjb25zdAorYm9vbCBIaXN0b3J5SXRlbTo6aXNDdXJyZW50
RG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgZmluZCBhIGJldHRlciB3YXkgdG8gY2hlY2sgaWYgdGhpcyBpcyB0aGUgY3VycmVudCBk
b2N1bWVudC4KLSAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwo
KSwgZG9jLT51cmwoKSk7CisgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZp
ZXIodXJsKCksIGRvY3VtZW50LnVybCgpKTsKIH0KIAogdm9pZCBIaXN0b3J5SXRlbTo6YWRkUmVk
aXJlY3RVUkwoY29uc3QgU3RyaW5nJiB1cmwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0hpc3RvcnlJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVt
LmgKaW5kZXggNjRjMDRiZWY5NGVlNjIyNDNhY2Y2YzlkYzM3NjY3NDRlNzlhZTY1ZC4uNGQ4NDNj
NDhmMmY1ODJiM2VmMWEyMWI2ZGNjZjUyMWVmODIxZjc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
SGlzdG9yeUl0ZW0uaApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBj
bGFzcyBVUkw7CiBlbnVtIGNsYXNzIFBydW5pbmdSZWFzb247CiAKLXR5cGVkZWYgVmVjdG9yPFJl
ZlB0cjxIaXN0b3J5SXRlbT4+IEhpc3RvcnlJdGVtVmVjdG9yOwordHlwZWRlZiBWZWN0b3I8UmVm
PEhpc3RvcnlJdGVtPj4gSGlzdG9yeUl0ZW1WZWN0b3I7CiAKIGV4dGVybiB2b2lkICgqbm90aWZ5
SGlzdG9yeUl0ZW1DaGFuZ2VkKShIaXN0b3J5SXRlbSopOwogCkBAIC03OSw3ICs3OSw3IEBAIHB1
YmxpYzoKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCB+SGlzdG9yeUl0ZW0oKTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGNvcHkoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWY8SGlzdG9yeUl0ZW0+IGNvcHkoKSBjb25zdDsKIAogICAgIC8vIFJl
c2V0cyB0aGUgSGlzdG9yeUl0ZW0gdG8gaXRzIGluaXRpYWwgc3RhdGUsIGFzIHJldHVybmVkIGJ5
IGNyZWF0ZSgpLgogICAgIHZvaWQgcmVzZXQoKTsKQEAgLTE0MSwyNCArMTQxLDI0IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgc2V0TGFzdFZpc2l0V2FzRmFpbHVyZShib29sIHdhc0ZhaWx1cmUpIHsg
bV9sYXN0VmlzaXRXYXNGYWlsdXJlID0gd2FzRmFpbHVyZTsgfQogCi0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhZGRDaGlsZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4pOwotICAgIHZvaWQg
c2V0Q2hpbGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+KTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBIaXN0b3J5SXRlbSogY2hpbGRJdGVtV2l0aFRhcmdldChjb25zdCBTdHJpbmcmKSBjb25zdDsK
LSAgICBIaXN0b3J5SXRlbSogY2hpbGRJdGVtV2l0aERvY3VtZW50U2VxdWVuY2VOdW1iZXIobG9u
ZyBsb25nIG51bWJlcikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDaGlsZEl0
ZW0oUmVmPEhpc3RvcnlJdGVtPiYmKTsKKyAgICB2b2lkIHNldENoaWxkSXRlbShSZWY8SGlzdG9y
eUl0ZW0+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIEhpc3RvcnlJdGVtKiBjaGlsZEl0ZW1XaXRo
VGFyZ2V0KGNvbnN0IFN0cmluZyYpOworICAgIEhpc3RvcnlJdGVtKiBjaGlsZEl0ZW1XaXRoRG9j
dW1lbnRTZXF1ZW5jZU51bWJlcihsb25nIGxvbmcgbnVtYmVyKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBIaXN0b3J5SXRlbSogdGFyZ2V0SXRlbSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEhp
c3RvcnlJdGVtVmVjdG9yJiBjaGlsZHJlbigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaGFzQ2hpbGRyZW4oKSBjb25zdDsKICAgICB2b2lkIGNsZWFyQ2hpbGRyZW4oKTsKLSAgICBi
b29sIGlzQW5jZXN0b3JPZihjb25zdCBIaXN0b3J5SXRlbSopIGNvbnN0OworICAgIGJvb2wgaXNB
bmNlc3Rvck9mKGNvbnN0IEhpc3RvcnlJdGVtJikgY29uc3Q7CiAgICAgCi0gICAgYm9vbCBzaG91
bGREb1NhbWVEb2N1bWVudE5hdmlnYXRpb25UbyhIaXN0b3J5SXRlbSogb3RoZXJJdGVtKSBjb25z
dDsKLSAgICBib29sIGhhc1NhbWVGcmFtZXMoSGlzdG9yeUl0ZW0qIG90aGVySXRlbSkgY29uc3Q7
CisgICAgYm9vbCBzaG91bGREb1NhbWVEb2N1bWVudE5hdmlnYXRpb25UbyhIaXN0b3J5SXRlbSYg
b3RoZXJJdGVtKSBjb25zdDsKKyAgICBib29sIGhhc1NhbWVGcmFtZXMoSGlzdG9yeUl0ZW0mIG90
aGVySXRlbSkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFJlZGlyZWN0VVJM
KGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+KiByZWRp
cmVjdFVSTHMoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJlZGlyZWN0VVJM
cyhzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+KTsKIAotICAgIGJvb2wgaXNDdXJyZW50
RG9jdW1lbnQoRG9jdW1lbnQqKSBjb25zdDsKKyAgICBib29sIGlzQ3VycmVudERvY3VtZW50KERv
Y3VtZW50JikgY29uc3Q7CiAgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV0VCQ09SRV9F
WFBPUlQgaWQgdmlld1N0YXRlKCkgY29uc3Q7CkBAIC0yMTIsOSArMjEyLDkgQEAgcHJpdmF0ZToK
ICAgICBXRUJDT1JFX0VYUE9SVCBIaXN0b3J5SXRlbShjb25zdCBTdHJpbmcmIHVybFN0cmluZywg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBhbHRlcm5hdGVUaXRsZSk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0ZW0oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBmcmFt
ZU5hbWUsIGNvbnN0IFN0cmluZyYgcGFyZW50LCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKIAotICAg
IGV4cGxpY2l0IEhpc3RvcnlJdGVtKGNvbnN0IEhpc3RvcnlJdGVtJik7CisgICAgSGlzdG9yeUl0
ZW0oY29uc3QgSGlzdG9yeUl0ZW0mKTsKIAotICAgIGJvb2wgaGFzU2FtZURvY3VtZW50VHJlZShI
aXN0b3J5SXRlbSogb3RoZXJJdGVtKSBjb25zdDsKKyAgICBib29sIGhhc1NhbWVEb2N1bWVudFRy
ZWUoSGlzdG9yeUl0ZW0mIG90aGVySXRlbSkgY29uc3Q7CiAKICAgICBIaXN0b3J5SXRlbSogZmlu
ZFRhcmdldEl0ZW0oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXgg
MDU5ZjBmZjhlNGZjMTZmNmYwOTNhMWNkMGFjMjc5ZTJjNDcwOTc0ZC4uZmYxZWNjNGUyYTExY2E1
MDU5ZDU1OGEyYmIyOGY2NmE4YTAzOGEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCkBAIC0zMTQzLDcgKzMxNDMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkU2FtZURv
Y3VtZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSkKICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0g
bV9mcmFtZS52aWV3KCkpCiAgICAgICAgIHZpZXctPnNldFdhc1Njcm9sbGVkQnlVc2VyKGZhbHNl
KTsKIAotICAgIGhpc3RvcnkoKS5zZXRDdXJyZW50SXRlbSgmaXRlbSk7CisgICAgaGlzdG9yeSgp
LnNldEN1cnJlbnRJdGVtKGl0ZW0pOwogICAgICAgICAKICAgICAvLyBsb2FkSW5TYW1lRG9jdW1l
bnQoKSBhY3R1YWxseSBjaGFuZ2VzIHRoZSBVUkwgYW5kIG5vdGlmaWVzIGxvYWQgZGVsZWdhdGVz
IG9mIGEgImZha2UiIGxvYWQKICAgICBsb2FkSW5TYW1lRG9jdW1lbnQoaXRlbS51cmwoKSwgaXRl
bS5zdGF0ZU9iamVjdCgpLCBmYWxzZSk7CkBAIC0zMjQ3LDcgKzMyNDcsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpsb2FkSXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2FkVHlw
ZSkKIHsKICAgICBtX3JlcXVlc3RlZEhpc3RvcnlJdGVtID0gJml0ZW07CiAgICAgSGlzdG9yeUl0
ZW0qIGN1cnJlbnRJdGVtID0gaGlzdG9yeSgpLmN1cnJlbnRJdGVtKCk7Ci0gICAgYm9vbCBzYW1l
RG9jdW1lbnROYXZpZ2F0aW9uID0gY3VycmVudEl0ZW0gJiYgaXRlbS5zaG91bGREb1NhbWVEb2N1
bWVudE5hdmlnYXRpb25UbyhjdXJyZW50SXRlbSk7CisgICAgYm9vbCBzYW1lRG9jdW1lbnROYXZp
Z2F0aW9uID0gY3VycmVudEl0ZW0gJiYgaXRlbS5zaG91bGREb1NhbWVEb2N1bWVudE5hdmlnYXRp
b25UbygqY3VycmVudEl0ZW0pOwogCiAgICAgaWYgKHNhbWVEb2N1bWVudE5hdmlnYXRpb24pCiAg
ICAgICAgIGxvYWRTYW1lRG9jdW1lbnRJdGVtKGl0ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5kZXggYWNmOTA5MDZlYWRkMjA5ZDBkMDRiNGE4ZGY4
NzBlODBmNWU5N2RlNy4uZDQ2MTBjYWU5Mjc0NzliZGU2MDE0M2MzZWFhNDBhNzlmNzhhZGI4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCkBAIC0xODUs
MTIgKzE4NSwxMSBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpzYXZlRG9jdW1lbnRTdGF0ZSgp
CiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm47CiAKLSAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBtX2ZyYW1lLmRvY3VtZW50KCk7Ci0gICAgQVNTRVJUKGRvY3VtZW50KTsKLSAgICAKLSAg
ICBpZiAoaXRlbS0+aXNDdXJyZW50RG9jdW1lbnQoZG9jdW1lbnQpICYmIGRvY3VtZW50LT5oYXNM
aXZpbmdSZW5kZXJUcmVlKCkpIHsKKyAgICBBU1NFUlQobV9mcmFtZS5kb2N1bWVudCgpKTsKKyAg
ICBEb2N1bWVudCYgZG9jdW1lbnQgPSAqbV9mcmFtZS5kb2N1bWVudCgpOworICAgIGlmIChpdGVt
LT5pc0N1cnJlbnREb2N1bWVudChkb2N1bWVudCkgJiYgZG9jdW1lbnQuaGFzTGl2aW5nUmVuZGVy
VHJlZSgpKSB7CiAgICAgICAgIExPRyhMb2FkaW5nLCAiV2ViQ29yZUxvYWRpbmcgJXM6IHNhdmlu
ZyBmb3JtIHN0YXRlIHRvICVwIiwgbV9mcmFtZS50cmVlKCkudW5pcXVlTmFtZSgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCksIGl0ZW0pOwotICAgICAgICBpdGVtLT5zZXREb2N1bWVudFN0YXRlKGRv
Y3VtZW50LT5mb3JtRWxlbWVudHNTdGF0ZSgpKTsKKyAgICAgICAgaXRlbS0+c2V0RG9jdW1lbnRT
dGF0ZShkb2N1bWVudC5mb3JtRWxlbWVudHNTdGF0ZSgpKTsKICAgICB9CiB9CiAKQEAgLTI1Myw3
ICsyNTIsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjppbnZhbGlkYXRlQ3VycmVudEl0ZW1D
YWNoZWRQYWdlKCkKICAgICB9CiB9CiAKLWJvb2wgSGlzdG9yeUNvbnRyb2xsZXI6OnNob3VsZFN0
b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qIHRhcmdldEl0ZW0pIGNvbnN0Citi
b29sIEhpc3RvcnlDb250cm9sbGVyOjpzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhp
c3RvcnlJdGVtJiB0YXJnZXRJdGVtKSBjb25zdAogewogICAgIGlmICghbV9jdXJyZW50SXRlbSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDY5LDggKzQ2OCw4IEBAIHZvaWQgSGlzdG9yeUNv
bnRyb2xsZXI6OnVwZGF0ZUZvckNvbW1pdCgpCiAgICAgICAgIC8vIE5vdGUgcHJldmlvdXNJdGVt
IG11c3QgYmUgc2V0IGJlZm9yZSB3ZSBjbG9zZSB0aGUgVVJMLCB3aGljaCB3aWxsCiAgICAgICAg
IC8vIGhhcHBlbiB3aGVuIHRoZSBkYXRhIHNvdXJjZSBpcyBtYWRlIG5vbi1wcm92aXNpb25hbCBi
ZWxvdwogICAgICAgICBBU1NFUlQobV9wcm92aXNpb25hbEl0ZW0pOwotICAgICAgICBzZXRDdXJy
ZW50SXRlbShtX3Byb3Zpc2lvbmFsSXRlbS5nZXQoKSk7Ci0gICAgICAgIG1fcHJvdmlzaW9uYWxJ
dGVtID0gMDsKKyAgICAgICAgc2V0Q3VycmVudEl0ZW0oKm1fcHJvdmlzaW9uYWxJdGVtKTsKKyAg
ICAgICAgbV9wcm92aXNpb25hbEl0ZW0gPSBudWxscHRyOwogCiAgICAgICAgIC8vIFRlbGwgYWxs
IG90aGVyIGZyYW1lcyBpbiB0aGUgdHJlZSB0byBjb21taXQgdGhlaXIgcHJvdmlzaW9uYWwgaXRl
bXMgYW5kCiAgICAgICAgIC8vIHJlc3RvcmUgdGhlaXIgc2Nyb2xsIHBvc2l0aW9uLiAgV2UnbGwg
YXZvaWQgdGhpcyBmcmFtZSAod2hpY2ggaGFzIGFscmVhZHkKQEAgLTUxMCw4ICs1MDksOCBAQCB2
b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVVcGRhdGVGb3JDb21taXQoKQogICAgICAg
ICAgICAgdmlldy0+c2V0V2FzU2Nyb2xsZWRCeVVzZXIoZmFsc2UpOwogCiAgICAgICAgIC8vIE5v
dyBjb21taXQgdGhlIHByb3Zpc2lvbmFsIGl0ZW0KLSAgICAgICAgc2V0Q3VycmVudEl0ZW0obV9w
cm92aXNpb25hbEl0ZW0uZ2V0KCkpOwotICAgICAgICBtX3Byb3Zpc2lvbmFsSXRlbSA9IDA7Cisg
ICAgICAgIHNldEN1cnJlbnRJdGVtKCptX3Byb3Zpc2lvbmFsSXRlbSk7CisgICAgICAgIG1fcHJv
dmlzaW9uYWxJdGVtID0gbnVsbHB0cjsKIAogICAgICAgICAvLyBSZXN0b3JlIGZvcm0gc3RhdGUg
KHdvcmtzIGZyb20gY3VycmVudEl0ZW0pCiAgICAgICAgIHJlc3RvcmVEb2N1bWVudFN0YXRlKCk7
CkBAIC01NTUsMTIgKzU1NCwxMiBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVV
cGRhdGVGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCkKIAogICAgIC8vIFRoZSBwcm92aXNpb25h
bCBpdGVtIG1heSByZXByZXNlbnQgYSBkaWZmZXJlbnQgcGVuZGluZyBuYXZpZ2F0aW9uLgogICAg
IC8vIERvbid0IGNvbW1pdCBpdCBpZiBpdCBpc24ndCBhIHNhbWUgZG9jdW1lbnQgbmF2aWdhdGlv
bi4KLSAgICBpZiAobV9jdXJyZW50SXRlbSAmJiAhbV9jdXJyZW50SXRlbS0+c2hvdWxkRG9TYW1l
RG9jdW1lbnROYXZpZ2F0aW9uVG8obV9wcm92aXNpb25hbEl0ZW0uZ2V0KCkpKQorICAgIGlmICht
X2N1cnJlbnRJdGVtICYmICFtX2N1cnJlbnRJdGVtLT5zaG91bGREb1NhbWVEb2N1bWVudE5hdmln
YXRpb25UbygqbV9wcm92aXNpb25hbEl0ZW0pKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBD
b21taXQgdGhlIHByb3Zpc2lvbmFsIGl0ZW0uCi0gICAgc2V0Q3VycmVudEl0ZW0obV9wcm92aXNp
b25hbEl0ZW0uZ2V0KCkpOwotICAgIG1fcHJvdmlzaW9uYWxJdGVtID0gMDsKKyAgICBzZXRDdXJy
ZW50SXRlbSgqbV9wcm92aXNpb25hbEl0ZW0pOworICAgIG1fcHJvdmlzaW9uYWxJdGVtID0gbnVs
bHB0cjsKIAogICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgcmVzdCBvZiB0aGUgdHJlZS4KICAgICBm
b3IgKEZyYW1lKiBjaGlsZCA9IG1fZnJhbWUudHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPnRyZWUoKS5uZXh0U2libGluZygpKQpAQCAtNTc1LDExICs1NzQsMTEgQEAg
dm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yRnJhbWVMb2FkQ29tcGxldGVkKCkKICAg
ICBtX2ZyYW1lTG9hZENvbXBsZXRlID0gdHJ1ZTsKIH0KIAotdm9pZCBIaXN0b3J5Q29udHJvbGxl
cjo6c2V0Q3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCit2b2lkIEhpc3RvcnlDb250cm9s
bGVyOjpzZXRDdXJyZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSkKIHsKICAgICBtX2ZyYW1lTG9h
ZENvbXBsZXRlID0gZmFsc2U7CiAgICAgbV9wcmV2aW91c0l0ZW0gPSBtX2N1cnJlbnRJdGVtOwot
ICAgIG1fY3VycmVudEl0ZW0gPSBpdGVtOworICAgIG1fY3VycmVudEl0ZW0gPSAmaXRlbTsKIH0K
IAogdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2V0Q3VycmVudEl0ZW1UaXRsZShjb25zdCBTdHJp
bmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKQEAgLTYxMCw3ICs2MDksNyBAQCB2b2lkIEhpc3RvcnlD
b250cm9sbGVyOjpzZXRQcm92aXNpb25hbEl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiAgICAgbV9w
cm92aXNpb25hbEl0ZW0gPSBpdGVtOwogfQogCi12b2lkIEhpc3RvcnlDb250cm9sbGVyOjppbml0
aWFsaXplSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKK3ZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6Omlu
aXRpYWxpemVJdGVtKEhpc3RvcnlJdGVtJiBpdGVtKQogewogICAgIERvY3VtZW50TG9hZGVyKiBk
b2N1bWVudExvYWRlciA9IG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBB
U1NFUlQoZG9jdW1lbnRMb2FkZXIpOwpAQCAtNjQyLDM0ICs2NDEsMzQgQEAgdm9pZCBIaXN0b3J5
Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiAgICAgU3RyaW5n
IHBhcmVudCA9IHBhcmVudEZyYW1lID8gcGFyZW50RnJhbWUtPnRyZWUoKS51bmlxdWVOYW1lKCkg
OiAiIjsKICAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIHRpdGxlID0gZG9jdW1lbnRMb2FkZXItPnRp
dGxlKCk7CiAKLSAgICBpdGVtLT5zZXRVUkwodXJsKTsKLSAgICBpdGVtLT5zZXRUYXJnZXQobV9m
cmFtZS50cmVlKCkudW5pcXVlTmFtZSgpKTsKLSAgICBpdGVtLT5zZXRQYXJlbnQocGFyZW50KTsK
KyAgICBpdGVtLnNldFVSTCh1cmwpOworICAgIGl0ZW0uc2V0VGFyZ2V0KG1fZnJhbWUudHJlZSgp
LnVuaXF1ZU5hbWUoKSk7CisgICAgaXRlbS5zZXRQYXJlbnQocGFyZW50KTsKICAgICAvLyBGSVhN
RTogc2hvdWxkIHN0b3JlIHRpdGxlIGRpcmVjdGlvbmFsaXR5IGluIGhpc3RvcnkgYXMgd2VsbC4K
LSAgICBpdGVtLT5zZXRUaXRsZSh0aXRsZS5zdHJpbmcoKSk7Ci0gICAgaXRlbS0+c2V0T3JpZ2lu
YWxVUkxTdHJpbmcob3JpZ2luYWxVUkwuc3RyaW5nKCkpOworICAgIGl0ZW0uc2V0VGl0bGUodGl0
bGUuc3RyaW5nKCkpOworICAgIGl0ZW0uc2V0T3JpZ2luYWxVUkxTdHJpbmcob3JpZ2luYWxVUkwu
c3RyaW5nKCkpOwogCiAgICAgaWYgKCF1bnJlYWNoYWJsZVVSTC5pc0VtcHR5KCkgfHwgZG9jdW1l
bnRMb2FkZXItPnJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApCi0gICAgICAgIGl0
ZW0tPnNldExhc3RWaXNpdFdhc0ZhaWx1cmUodHJ1ZSk7CisgICAgICAgIGl0ZW0uc2V0TGFzdFZp
c2l0V2FzRmFpbHVyZSh0cnVlKTsKIAogICAgIC8vIFNhdmUgZm9ybSBzdGF0ZSBpZiB0aGlzIGlz
IGEgUE9TVAotICAgIGl0ZW0tPnNldEZvcm1JbmZvRnJvbVJlcXVlc3QoZG9jdW1lbnRMb2FkZXIt
PnJlcXVlc3QoKSk7CisgICAgaXRlbS5zZXRGb3JtSW5mb0Zyb21SZXF1ZXN0KGRvY3VtZW50TG9h
ZGVyLT5yZXF1ZXN0KCkpOwogfQogCi1QYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBIaXN0b3J5Q29u
dHJvbGxlcjo6Y3JlYXRlSXRlbSgpCitSZWY8SGlzdG9yeUl0ZW0+IEhpc3RvcnlDb250cm9sbGVy
OjpjcmVhdGVJdGVtKCkKIHsKLSAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBIaXN0b3J5
SXRlbTo6Y3JlYXRlKCk7Ci0gICAgaW5pdGlhbGl6ZUl0ZW0oaXRlbS5nZXQoKSk7CisgICAgUmVm
PEhpc3RvcnlJdGVtPiBpdGVtID0gSGlzdG9yeUl0ZW06OmNyZWF0ZSgpOworICAgIGluaXRpYWxp
emVJdGVtKGl0ZW0pOwogICAgIAogICAgIC8vIFNldCB0aGUgaXRlbSBmb3Igd2hpY2ggd2Ugd2ls
bCBzYXZlIGRvY3VtZW50IHN0YXRlCi0gICAgc2V0Q3VycmVudEl0ZW0oaXRlbS5nZXQoKSk7Cisg
ICAgc2V0Q3VycmVudEl0ZW0oaXRlbSk7CiAgICAgCi0gICAgcmV0dXJuIGl0ZW0ucmVsZWFzZSgp
OworICAgIHJldHVybiBpdGVtOwogfQogCi1QYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBIaXN0b3J5
Q29udHJvbGxlcjo6Y3JlYXRlSXRlbVRyZWUoRnJhbWUmIHRhcmdldEZyYW1lLCBib29sIGNsaXBB
dFRhcmdldCkKK1JlZjxIaXN0b3J5SXRlbT4gSGlzdG9yeUNvbnRyb2xsZXI6OmNyZWF0ZUl0ZW1U
cmVlKEZyYW1lJiB0YXJnZXRGcmFtZSwgYm9vbCBjbGlwQXRUYXJnZXQpCiB7Ci0gICAgUmVmUHRy
PEhpc3RvcnlJdGVtPiBiZkl0ZW0gPSBjcmVhdGVJdGVtKCk7CisgICAgUmVmPEhpc3RvcnlJdGVt
PiBiZkl0ZW0gPSBjcmVhdGVJdGVtKCk7CiAgICAgaWYgKCFtX2ZyYW1lTG9hZENvbXBsZXRlKQog
ICAgICAgICBzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0obV9wcmV2aW91c0l0
ZW0uZ2V0KCkpOwogCkBAIC03MTcsNyArNzE2LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6
cmVjdXJzaXZlU2V0UHJvdmlzaW9uYWxJdGVtKEhpc3RvcnlJdGVtJiBpdGVtLCBIaXN0b3J5SXQK
ICAgICAvLyBTZXQgcHJvdmlzaW9uYWwgaXRlbSwgd2hpY2ggd2lsbCBiZSBjb21taXR0ZWQgaW4g
cmVjdXJzaXZlVXBkYXRlRm9yQ29tbWl0LgogICAgIG1fcHJvdmlzaW9uYWxJdGVtID0gJml0ZW07
CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkSXRlbSA6IGl0ZW0uY2hpbGRyZW4oKSkgewor
ICAgIGZvciAoYXV0byYgY2hpbGRJdGVtIDogaXRlbS5jaGlsZHJlbigpKSB7CiAgICAgICAgIGNv
bnN0IFN0cmluZyYgY2hpbGRGcmFtZU5hbWUgPSBjaGlsZEl0ZW0tPnRhcmdldCgpOwogCiAgICAg
ICAgIEhpc3RvcnlJdGVtKiBmcm9tQ2hpbGRJdGVtID0gZnJvbUl0ZW0tPmNoaWxkSXRlbVdpdGhU
YXJnZXQoY2hpbGRGcmFtZU5hbWUpOwpAQCAtNzI1LDcgKzcyNCw3IEBAIHZvaWQgSGlzdG9yeUNv
bnRyb2xsZXI6OnJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFsSXRlbShIaXN0b3J5SXRlbSYgaXRlbSwg
SGlzdG9yeUl0CiAgICAgICAgIEZyYW1lKiBjaGlsZEZyYW1lID0gbV9mcmFtZS50cmVlKCkuY2hp
bGQoY2hpbGRGcmFtZU5hbWUpOwogICAgICAgICBBU1NFUlQoY2hpbGRGcmFtZSk7CiAKLSAgICAg
ICAgY2hpbGRGcmFtZS0+bG9hZGVyKCkuaGlzdG9yeSgpLnJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFs
SXRlbSgqY2hpbGRJdGVtLCBmcm9tQ2hpbGRJdGVtKTsKKyAgICAgICAgY2hpbGRGcmFtZS0+bG9h
ZGVyKCkuaGlzdG9yeSgpLnJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFsSXRlbShjb25zdF9jYXN0PEhp
c3RvcnlJdGVtJj4oY2hpbGRJdGVtLmdldCgpKSwgZnJvbUNoaWxkSXRlbSk7CiAgICAgfQogfQog
CkBAIC03MzksMTQgKzczOCwxNCBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVH
b1RvSXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgSGlzdG9yeUl0ZW0qIGZyb21JdAogICAgIH0KIAog
ICAgIC8vIEp1c3QgaXRlcmF0ZSBvdmVyIHRoZSByZXN0LCBsb29raW5nIGZvciBmcmFtZXMgdG8g
bmF2aWdhdGUuCi0gICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZEl0ZW0gOiBpdGVtLmNoaWxkcmVu
KCkpIHsKKyAgICBmb3IgKGF1dG8mIGNoaWxkSXRlbSA6IGl0ZW0uY2hpbGRyZW4oKSkgewogICAg
ICAgICBjb25zdCBTdHJpbmcmIGNoaWxkRnJhbWVOYW1lID0gY2hpbGRJdGVtLT50YXJnZXQoKTsK
IAogICAgICAgICBIaXN0b3J5SXRlbSogZnJvbUNoaWxkSXRlbSA9IGZyb21JdGVtLT5jaGlsZEl0
ZW1XaXRoVGFyZ2V0KGNoaWxkRnJhbWVOYW1lKTsKICAgICAgICAgQVNTRVJUKGZyb21DaGlsZEl0
ZW0pOwogICAgICAgICBGcmFtZSogY2hpbGRGcmFtZSA9IG1fZnJhbWUudHJlZSgpLmNoaWxkKGNo
aWxkRnJhbWVOYW1lKTsKICAgICAgICAgQVNTRVJUKGNoaWxkRnJhbWUpOwotICAgICAgICBjaGls
ZEZyYW1lLT5sb2FkZXIoKS5oaXN0b3J5KCkucmVjdXJzaXZlR29Ub0l0ZW0oKmNoaWxkSXRlbSwg
ZnJvbUNoaWxkSXRlbSwgdHlwZSk7CisgICAgICAgIGNoaWxkRnJhbWUtPmxvYWRlcigpLmhpc3Rv
cnkoKS5yZWN1cnNpdmVHb1RvSXRlbShjb25zdF9jYXN0PEhpc3RvcnlJdGVtJj4oY2hpbGRJdGVt
LmdldCgpKSwgZnJvbUNoaWxkSXRlbSwgdHlwZSk7CiAgICAgfQogfQogCkBAIC03NjMsNyArNzYy
LDcgQEAgYm9vbCBIaXN0b3J5Q29udHJvbGxlcjo6aXRlbXNBcmVDbG9uZXMoSGlzdG9yeUl0ZW0m
IGl0ZW0xLCBIaXN0b3J5SXRlbSogaXRlbTIpIGMKICAgICAgICAgJiYgJml0ZW0xICE9IGl0ZW0y
CiAgICAgICAgICYmIGl0ZW0xLml0ZW1TZXF1ZW5jZU51bWJlcigpID09IGl0ZW0yLT5pdGVtU2Vx
dWVuY2VOdW1iZXIoKQogICAgICAgICAmJiBjdXJyZW50RnJhbWVzTWF0Y2hJdGVtKCZpdGVtMSkK
LSAgICAgICAgJiYgaXRlbTItPmhhc1NhbWVGcmFtZXMoJml0ZW0xKTsKKyAgICAgICAgJiYgaXRl
bTItPmhhc1NhbWVGcmFtZXMoaXRlbTEpOwogfQogCiAvLyBIZWxwZXIgbWV0aG9kIHRoYXQgZGV0
ZXJtaW5lcyB3aGV0aGVyIHRoZSBjdXJyZW50IGZyYW1lIHRyZWUgbWF0Y2hlcyBnaXZlbiBoaXN0
b3J5IGl0ZW0ncy4KQEAgLTgwMSw5ICs4MDAsOSBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1
cGRhdGVCYWNrRm9yd2FyZExpc3RDbGlwcGVkQXRUYXJnZXQoYm9vbCBkb0NsaXApCiAKICAgICBG
cmFtZUxvYWRlciYgZnJhbWVMb2FkZXIgPSBtX2ZyYW1lLm1haW5GcmFtZSgpLmxvYWRlcigpOwog
Ci0gICAgUmVmUHRyPEhpc3RvcnlJdGVtPiB0b3BJdGVtID0gZnJhbWVMb2FkZXIuaGlzdG9yeSgp
LmNyZWF0ZUl0ZW1UcmVlKG1fZnJhbWUsIGRvQ2xpcCk7Ci0gICAgTE9HKEJhY2tGb3J3YXJkLCAi
V2ViQ29yZUJhY2tGb3J3YXJkIC0gQWRkaW5nIGJhY2tmb3J3YXJkIGl0ZW0gJXAgZm9yIGZyYW1l
ICVzIiwgdG9wSXRlbS5nZXQoKSwgbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51
cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgcGFnZS0+YmFja0ZvcndhcmQoKS5h
ZGRJdGVtKHRvcEl0ZW0ucmVsZWFzZSgpKTsKKyAgICBSZWY8SGlzdG9yeUl0ZW0+IHRvcEl0ZW0g
PSBmcmFtZUxvYWRlci5oaXN0b3J5KCkuY3JlYXRlSXRlbVRyZWUobV9mcmFtZSwgZG9DbGlwKTsK
KyAgICBMT0coQmFja0ZvcndhcmQsICJXZWJDb3JlQmFja0ZvcndhcmQgLSBBZGRpbmcgYmFja2Zv
cndhcmQgaXRlbSAlcCBmb3IgZnJhbWUgJXMiLCB0b3BJdGVtLnB0cigpLCBtX2ZyYW1lLmxvYWRl
cigpLmRvY3VtZW50TG9hZGVyKCktPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAg
ICBwYWdlLT5iYWNrRm9yd2FyZCgpLmFkZEl0ZW0oV1RGOjptb3ZlKHRvcEl0ZW0pKTsKIH0KIAog
dm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlQ3VycmVudEl0ZW0oKQpAQCAtODIzLDcgKzgy
Miw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUN1cnJlbnRJdGVtKCkKICAgICAg
ICAgLy8gZGVwZW5kZW50IG9uIHRoZSBkb2N1bWVudC4KICAgICAgICAgYm9vbCBpc1RhcmdldEl0
ZW0gPSBtX2N1cnJlbnRJdGVtLT5pc1RhcmdldEl0ZW0oKTsKICAgICAgICAgbV9jdXJyZW50SXRl
bS0+cmVzZXQoKTsKLSAgICAgICAgaW5pdGlhbGl6ZUl0ZW0obV9jdXJyZW50SXRlbS5nZXQoKSk7
CisgICAgICAgIGluaXRpYWxpemVJdGVtKCptX2N1cnJlbnRJdGVtKTsKICAgICAgICAgbV9jdXJy
ZW50SXRlbS0+c2V0SXNUYXJnZXRJdGVtKGlzVGFyZ2V0SXRlbSk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgLy8gRXZlbiBpZiB0aGUgZmluYWwgVVJMIGRpZG4ndCBjaGFuZ2UsIHRoZSBmb3JtIGRh
dGEgbWF5IGhhdmUgY2hhbmdlZC4KQEAgLTg0MCw3ICs4MzksNyBAQCB2b2lkIEhpc3RvcnlDb250
cm9sbGVyOjpwdXNoU3RhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRl
T2JqZWN0LAogICAgIEFTU0VSVChwYWdlKTsKIAogICAgIC8vIEdldCBhIEhpc3RvcnlJdGVtIHRy
ZWUgZm9yIHRoZSBjdXJyZW50IGZyYW1lIHRyZWUuCi0gICAgUmVmUHRyPEhpc3RvcnlJdGVtPiB0
b3BJdGVtID0gbV9mcmFtZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5oaXN0b3J5KCkuY3JlYXRlSXRl
bVRyZWUobV9mcmFtZSwgZmFsc2UpOworICAgIFJlZjxIaXN0b3J5SXRlbT4gdG9wSXRlbSA9IG1f
ZnJhbWUubWFpbkZyYW1lKCkubG9hZGVyKCkuaGlzdG9yeSgpLmNyZWF0ZUl0ZW1UcmVlKG1fZnJh
bWUsIGZhbHNlKTsKICAgICAKICAgICAvLyBPdmVycmlkZSBkYXRhIGluIHRoZSBjdXJyZW50IGl0
ZW0gKGNyZWF0ZWQgYnkgY3JlYXRlSXRlbVRyZWUpIHRvIHJlZmxlY3QKICAgICAvLyB0aGUgcHVz
aFN0YXRlKCkgYXJndW1lbnRzLgpAQCAtODQ4LDcgKzg0Nyw3IEBAIHZvaWQgSGlzdG9yeUNvbnRy
b2xsZXI6OnB1c2hTdGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVP
YmplY3QsCiAgICAgbV9jdXJyZW50SXRlbS0+c2V0U3RhdGVPYmplY3Qoc3RhdGVPYmplY3QpOwog
ICAgIG1fY3VycmVudEl0ZW0tPnNldFVSTFN0cmluZyh1cmxTdHJpbmcpOwogCi0gICAgcGFnZS0+
YmFja0ZvcndhcmQoKS5hZGRJdGVtKHRvcEl0ZW0ucmVsZWFzZSgpKTsKKyAgICBwYWdlLT5iYWNr
Rm9yd2FyZCgpLmFkZEl0ZW0oV1RGOjptb3ZlKHRvcEl0ZW0pKTsKIAogICAgIGlmIChtX2ZyYW1l
LnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaAppbmRleCAxYjQwYTgwYjBlMzI3MThi
MzNlZmI0MjJhYWZlNjc2ZmJjM2M3ZmU4Li5lMzk1MmM2NTU5NDMyZTc4YmE5ZDU3ZDYwMDc5Mjgy
MGE2ZjA4NzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaApA
QCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVGb3JGcmFtZUxvYWRDb21w
bGV0ZWQoKTsKIAogICAgIEhpc3RvcnlJdGVtKiBjdXJyZW50SXRlbSgpIGNvbnN0IHsgcmV0dXJu
IG1fY3VycmVudEl0ZW0uZ2V0KCk7IH0KLSAgICB2b2lkIHNldEN1cnJlbnRJdGVtKEhpc3RvcnlJ
dGVtKik7CisgICAgdm9pZCBzZXRDdXJyZW50SXRlbShIaXN0b3J5SXRlbSYpOwogICAgIHZvaWQg
c2V0Q3VycmVudEl0ZW1UaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgYm9v
bCBjdXJyZW50SXRlbVNob3VsZEJlUmVwbGFjZWQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlcGxhY2VDdXJyZW50SXRlbShIaXN0b3J5SXRlbSopOwpAQCAtOTIsMTIgKzkyLDEy
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUGFnZTsKLSAgICBib29s
IHNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdDsKKyAg
ICBib29sIHNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0mKSBjb25z
dDsKICAgICB2b2lkIGdvVG9JdGVtKEhpc3RvcnlJdGVtJiwgRnJhbWVMb2FkVHlwZSk7CiAKLSAg
ICB2b2lkIGluaXRpYWxpemVJdGVtKEhpc3RvcnlJdGVtKik7Ci0gICAgUGFzc1JlZlB0cjxIaXN0
b3J5SXRlbT4gY3JlYXRlSXRlbSgpOwotICAgIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGNyZWF0
ZUl0ZW1UcmVlKEZyYW1lJiB0YXJnZXRGcmFtZSwgYm9vbCBjbGlwQXRUYXJnZXQpOworICAgIHZv
aWQgaW5pdGlhbGl6ZUl0ZW0oSGlzdG9yeUl0ZW0mKTsKKyAgICBSZWY8SGlzdG9yeUl0ZW0+IGNy
ZWF0ZUl0ZW0oKTsKKyAgICBSZWY8SGlzdG9yeUl0ZW0+IGNyZWF0ZUl0ZW1UcmVlKEZyYW1lJiB0
YXJnZXRGcmFtZSwgYm9vbCBjbGlwQXRUYXJnZXQpOwogCiAgICAgdm9pZCByZWN1cnNpdmVTZXRQ
cm92aXNpb25hbEl0ZW0oSGlzdG9yeUl0ZW0mLCBIaXN0b3J5SXRlbSopOwogICAgIHZvaWQgcmVj
dXJzaXZlR29Ub0l0ZW0oSGlzdG9yeUl0ZW0mLCBIaXN0b3J5SXRlbSosIEZyYW1lTG9hZFR5cGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMjdjMDRiNTk1OGRjYmFmMmRiNTVmNmZiZTIzYTUxN2Jm
NmQyMTU1Mi4uMDZiOTFiYWYwY2U4OTE2OTExNmMyMTViYWNiNGJkMThkYjg1OTk0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCkBAIC00MzYsNyArNDM2LDcgQEAgdm9pZCBQYWdlOjpnb1RvSXRlbShIaXN0
b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSB0eXBlKQogICAgIC8vIGJlaW5nIGRlcmVmKCkt
ZWQuIE1ha2Ugc3VyZSB3ZSBjYW4gc3RpbGwgdXNlIGl0IHdpdGggSGlzdG9yeUNvbnRyb2xsZXI6
OmdvVG9JdGVtIGxhdGVyLgogICAgIFJlZjxIaXN0b3J5SXRlbT4gcHJvdGVjdG9yKGl0ZW0pOwog
Ci0gICAgaWYgKG1fbWFpbkZyYW1lLT5sb2FkZXIoKS5oaXN0b3J5KCkuc2hvdWxkU3RvcExvYWRp
bmdGb3JIaXN0b3J5SXRlbSgmaXRlbSkpCisgICAgaWYgKG1fbWFpbkZyYW1lLT5sb2FkZXIoKS5o
aXN0b3J5KCkuc2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbShpdGVtKSkKICAgICAgICAg
bV9tYWluRnJhbWUtPmxvYWRlcigpLnN0b3BBbGxMb2FkZXJzKCk7CiAKICAgICBtX21haW5GcmFt
ZS0+bG9hZGVyKCkuaGlzdG9yeSgpLmdvVG9JdGVtKGl0ZW0sIHR5cGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbQppbmRleCBlYmZiZDRkMDA0
MTAyM2MyNWMyYzY5ZTg0NzkwODJjOGM0MjYzNTdmLi5lOTcwNTI0ZDJjZWQyNjljZjgzYzQyY2Qw
MDYyMzYxMWNlZWE5MWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dl
YkJhY2tGb3J3YXJkTGlzdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkJh
Y2tGb3J3YXJkTGlzdC5tbQpAQCAtMTUzLDcgKzE1Myw4IEBAIC0gKHZvaWQpX2Nsb3NlCiAKIC0g
KHZvaWQpYWRkSXRlbTooV2ViSGlzdG9yeUl0ZW0gKillbnRyeQogewotICAgIGNvcmUoc2VsZikt
PmFkZEl0ZW0oY29yZShlbnRyeSkpOworICAgIEFTU0VSVChlbnRyeSk7CisgICAgY29yZShzZWxm
KS0+YWRkSXRlbSgqY29yZShlbnRyeSkpOwogICAgIAogICAgIC8vIFNpbmNlIHRoZSBhc3N1bWVk
IGNvbnRyYWN0IHdpdGggV2ViQmFja0ZvcndhcmRMaXN0IGlzIHRoYXQgaXQgcmV0YWlucyBpdHMg
V2ViSGlzdG9yeUl0ZW1zLAogICAgIC8vIHRoZSBmb2xsb3dpbmcgbGluZSBwcmV2ZW50cyBhIHdo
b2xlIGNsYXNzIG9mIHByb2JsZW1zIHdoZXJlIGEgaGlzdG9yeSBpdGVtIHdpbGwgYmUgY3JlYXRl
ZCBpbgpAQCAtMTc4LDExICsxNzksMTEgQEAgLSAoTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeVJl
cHJlc2VudGF0aW9uCiB7CiAgICAgQmFja0ZvcndhcmRMaXN0ICpjb3JlQkZMaXN0ID0gY29yZShz
ZWxmKTsKICAgICAKLSAgICBIaXN0b3J5SXRlbVZlY3RvciBoaXN0b3J5SXRlbXMgPSBjb3JlQkZM
aXN0LT5lbnRyaWVzKCk7CisgICAgSGlzdG9yeUl0ZW1WZWN0b3ImIGhpc3RvcnlJdGVtcyA9IGNv
cmVCRkxpc3QtPmVudHJpZXMoKTsKICAgICB1bnNpZ25lZCBzaXplID0gaGlzdG9yeUl0ZW1zLnNp
emUoKTsKICAgICBOU011dGFibGVBcnJheSAqZW50cmllc0FycmF5ID0gW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpzaXplXTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbZW50cmllc0FycmF5IGFkZE9iamVjdDpba2l0KGhp
c3RvcnlJdGVtc1tpXS5nZXQoKSkgZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uSW5jbHVkaW5nQ2hp
bGRyZW46Tk9dXTsKKyAgICAgICAgW2VudHJpZXNBcnJheSBhZGRPYmplY3Q6W2tpdChoaXN0b3J5
SXRlbXNbaV0ucHRyKCkpIGRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbkluY2x1ZGluZ0NoaWxkcmVu
Ok5PXV07CiAgICAgCiAgICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW05TRGljdGlvbmFy
eSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgogICAgICAgICBlbnRyaWVzQXJyYXksIFdl
YkJhY2tGb3J3YXJkTGlzdERpY3Rpb25hcnlFbnRyaWVzS2V5LApAQCAtMjAzLDcgKzIwNCw3IEBA
IC0gKHZvaWQpc2V0VG9NYXRjaERpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjooTlNEaWN0aW9uYXJ5
ICopZGljdGlvbmFyeQogICAgIAogICAgIGZvciAoTlNEaWN0aW9uYXJ5ICppdGVtRGljdGlvbmFy
eSBpbiBbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V2ViQmFja0ZvcndhcmRMaXN0RGljdGlvbmFy
eUVudHJpZXNLZXldKSB7CiAgICAgICAgIFdlYkhpc3RvcnlJdGVtICppdGVtID0gW1tXZWJIaXN0
b3J5SXRlbSBhbGxvY10gaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246aXRlbURpY3Rp
b25hcnldOwotICAgICAgICBjb3JlQkZMaXN0LT5hZGRJdGVtKGNvcmUoaXRlbSkpOworICAgICAg
ICBjb3JlQkZMaXN0LT5hZGRJdGVtKCpjb3JlKGl0ZW0pKTsKICAgICAgICAgW2l0ZW0gcmVsZWFz
ZV07CiAgICAgfQogCkBAIC0yNTUsNyArMjU2LDcgQEAgc3RhdGljIE5TQXJyYXkqIHZlY3RvclRv
TlNBcnJheShIaXN0b3J5SXRlbVZlY3RvciYgbGlzdCkKICAgICB1bnNpZ25lZCBzaXplID0gbGlz
dC5zaXplKCk7CiAgICAgTlNNdXRhYmxlQXJyYXkgKnJlc3VsdCA9IFtbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnNpemVdIGF1dG9yZWxlYXNlXTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVzdWx0IGFkZE9iamVjdDpr
aXQobGlzdFtpXS5nZXQoKSldOworICAgICAgICBbcmVzdWx0IGFkZE9iamVjdDpraXQobGlzdFtp
XS5wdHIoKSldOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTMyNywxNCArMzI4LDE0IEBA
IC0oTlNTdHJpbmcgKilkZXNjcmlwdGlvbgogICAgIAogICAgIHVuc2lnbmVkIHNpemUgPSBlbnRy
aWVzLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0g
ICAgICAgIGlmIChlbnRyaWVzW2ldID09IGJhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSkg
eworICAgICAgICBpZiAoZW50cmllc1tpXS5wdHIoKSA9PSBiYWNrRm9yd2FyZExpc3QtPmN1cnJl
bnRJdGVtKCkpIHsKICAgICAgICAgICAgIFtyZXN1bHQgYXBwZW5kU3RyaW5nOkAiID4+PiJdOyAK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFtyZXN1bHQgYXBwZW5kU3RyaW5nOkAiICAg
ICJdOyAKICAgICAgICAgfSAgIAogICAgICAgICBbcmVzdWx0IGFwcGVuZEZvcm1hdDpAIiUyZCkg
IiwgaV07CiAgICAgICAgIGludCBjdXJyUG9zID0gW3Jlc3VsdCBsZW5ndGhdOwotICAgICAgICBb
cmVzdWx0IGFwcGVuZFN0cmluZzpba2l0KGVudHJpZXNbaV0uZ2V0KCkpIGRlc2NyaXB0aW9uXV07
CisgICAgICAgIFtyZXN1bHQgYXBwZW5kU3RyaW5nOltraXQoZW50cmllc1tpXS5wdHIoKSkgZGVz
Y3JpcHRpb25dXTsKIAogICAgICAgICAvLyBzaGlmdCBhbGwgdGhlIGNvbnRlbnRzIG92ZXIuICBh
IGJpdCBzbG93LCBidXQgdGhpcyBpcyBmb3IgZGVidWdnaW5nCiAgICAgICAgIE5TUmFuZ2UgcmVw
bFJhbmdlID0geyBzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihjdXJyUG9zKSwgW3Jlc3VsdCBsZW5n
dGhdIC0gY3VyclBvcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9X
ZWJIaXN0b3J5SXRlbS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0
ZW0ubW0KaW5kZXggZTY3N2IwMWU3M2JkY2YyMjdiMjhmNDFmODhjYTE2MTk1ZDk1ZGMzYi4uYWU3
NjAxZmNkNzFkMTM4NjA2OTE1MzNlNTUwMjdkNGVmM2E2MmJiZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCkBAIC0yNTgsNyArMjU4LDcgQEAgLSAoTlNT
dHJpbmcgKilkZXNjcmlwdGlvbgogICAgICAgICBpbnQgY3VyclBvcyA9IFtyZXN1bHQgbGVuZ3Ro
XTsKICAgICAgICAgdW5zaWduZWQgc2l6ZSA9IGNoaWxkcmVuLnNpemUoKTsgICAgICAgIAogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICBX
ZWJIaXN0b3J5SXRlbSAqY2hpbGQgPSBraXQoY2hpbGRyZW5baV0uZ2V0KCkpOworICAgICAgICAg
ICAgV2ViSGlzdG9yeUl0ZW0gKmNoaWxkID0ga2l0KGNvbnN0X2Nhc3Q8SGlzdG9yeUl0ZW0qPihj
aGlsZHJlbltpXS5wdHIoKSkpOwogICAgICAgICAgICAgW3Jlc3VsdCBhcHBlbmRTdHJpbmc6QCJc
biJdOwogICAgICAgICAgICAgW3Jlc3VsdCBhcHBlbmRTdHJpbmc6W2NoaWxkIGRlc2NyaXB0aW9u
XV07CiAgICAgICAgIH0KQEAgLTM4MCw3ICszODAsNyBAQCAtIChpZClpbml0RnJvbURpY3Rpb25h
cnlSZXByZXNlbnRhdGlvbjooTlNEaWN0aW9uYXJ5ICopZGljdAogICAgIGlmIChjaGlsZERpY3Rz
KSB7CiAgICAgICAgIGZvciAoaW50IGkgPSBbY2hpbGREaWN0cyBjb3VudF0gLSAxOyBpID49IDA7
IGktLSkgewogICAgICAgICAgICAgV2ViSGlzdG9yeUl0ZW0gKmNoaWxkID0gW1tXZWJIaXN0b3J5
SXRlbSBhbGxvY10gaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246W2NoaWxkRGljdHMg
b2JqZWN0QXRJbmRleDppXV07Ci0gICAgICAgICAgICBjb3JlKF9wcml2YXRlKS0+YWRkQ2hpbGRJ
dGVtKGNvcmUoY2hpbGQtPl9wcml2YXRlKSk7CisgICAgICAgICAgICBjb3JlKF9wcml2YXRlKS0+
YWRkQ2hpbGRJdGVtKCpjb3JlKGNoaWxkLT5fcHJpdmF0ZSkpOwogICAgICAgICAgICAgW2NoaWxk
IHJlbGVhc2VdOwogICAgICAgICB9CiAgICAgfQpAQCAtNDgxLDcgKzQ4MSw3IEBAIC0gKE5TRGlj
dGlvbmFyeSAqKWRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbgogICAgICAgICBOU011dGFibGVBcnJh
eSAqY2hpbGREaWN0cyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpjaGlsZHJl
bi5zaXplKCldOwogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IGNoaWxkcmVuLnNpemUo
KSAtIDE7IGkgPj0gMDsgaS0tKQotICAgICAgICAgICAgW2NoaWxkRGljdHMgYWRkT2JqZWN0Oltr
aXQoY2hpbGRyZW5baV0uZ2V0KCkpIGRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbl1dOworICAgICAg
ICAgICAgW2NoaWxkRGljdHMgYWRkT2JqZWN0OltraXQoY29uc3RfY2FzdDxIaXN0b3J5SXRlbSo+
KGNoaWxkcmVuW2ldLnB0cigpKSkgZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uXV07CiAgICAgICAg
IFtkaWN0IHNldE9iamVjdDogY2hpbGREaWN0cyBmb3JLZXk6Y2hpbGRyZW5LZXldOwogICAgIH0K
IApAQCAtNTQxLDcgKzU0MSw3IEBAIC0gKE5TQXJyYXkgKiljaGlsZHJlbgogICAgIE5TTXV0YWJs
ZUFycmF5ICpyZXN1bHQgPSBbW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0
eTpzaXplXSBhdXRvcmVsZWFzZV07CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHNpemU7ICsraSkKLSAgICAgICAgW3Jlc3VsdCBhZGRPYmplY3Q6a2l0KGNoaWxkcmVuW2ldLmdl
dCgpKV07CisgICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0OmtpdChjb25zdF9jYXN0PEhpc3RvcnlJ
dGVtKj4oY2hpbGRyZW5baV0ucHRyKCkpKV07CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA3NGFkNTVhOTQ2ZWQ4ZTM5NzA0
YTZkZDNiYTg0OGFiYzg4MDEwZWEyLi40ODNjYTBlZTE0ZmVjNjA5MWEyM2RmZTZiMGRhMjhkOTA5
N2U0OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0yMDAyLDEwICsy
MDAyLDEwIEBAIC0gKHZvaWQpX2xvYWRCYWNrRm9yd2FyZExpc3RGcm9tT3RoZXJWaWV3OihXZWJW
aWV3ICopb3RoZXJWaWV3CiAgICAgICAgICAgICAvLyB1bnRpbCB3ZSBsZWF2ZSB0aGF0IHBhZ2Uu
CiAgICAgICAgICAgICBvdGhlclZpZXctPl9wcml2YXRlLT5wYWdlLT5tYWluRnJhbWUoKS5sb2Fk
ZXIoKS5oaXN0b3J5KCkuc2F2ZURvY3VtZW50QW5kU2Nyb2xsU3RhdGUoKTsKICAgICAgICAgfQot
ICAgICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IG5ld0l0ZW0gPSBvdGhlckJhY2tGb3J3YXJkQ2xp
ZW50LT5pdGVtQXRJbmRleChpKS0+Y29weSgpOworICAgICAgICBSZWY8SGlzdG9yeUl0ZW0+IG5l
d0l0ZW0gPSBvdGhlckJhY2tGb3J3YXJkQ2xpZW50LT5pdGVtQXRJbmRleChpKS0+Y29weSgpOwog
ICAgICAgICBpZiAoaSA9PSAwKSAKLSAgICAgICAgICAgIG5ld0l0ZW1Ub0dvVG8gPSBuZXdJdGVt
LmdldCgpOwotICAgICAgICBiYWNrRm9yd2FyZENsaWVudC0+YWRkSXRlbShuZXdJdGVtLnJlbGVh
c2UoKSk7CisgICAgICAgICAgICBuZXdJdGVtVG9Hb1RvID0gbmV3SXRlbS5wdHIoKTsKKyAgICAg
ICAgYmFja0ZvcndhcmRDbGllbnQtPmFkZEl0ZW0oV1RGOjptb3ZlKG5ld0l0ZW0pKTsKICAgICB9
CiAgICAgCiAgICAgQVNTRVJUKG5ld0l0ZW1Ub0dvVG8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkJh
Y2tGb3J3YXJkTGlzdC5jcHAKaW5kZXggYTEzOTU4NDkyNjE0YTFlYmE3NzhmOTE2OTkwNjhlZjhi
NDdjZDljZC4uZTdiYzdlNWEzZGQ2YWM4YjJlNGM5MjE4M2E0ODMzMWZlYTE3NjgzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJCYWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0oCiAg
ICAgaWYgKCFpdGVtIHx8IEZBSUxFRChpdGVtLT5RdWVyeUludGVyZmFjZSgmd2ViSGlzdG9yeUl0
ZW0pKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAKLSAgICBtX2JhY2tGb3J3YXJkTGlzdC0+
YWRkSXRlbSh3ZWJIaXN0b3J5SXRlbS0+aGlzdG9yeUl0ZW0oKSk7CisgICAgbV9iYWNrRm9yd2Fy
ZExpc3QtPmFkZEl0ZW0oKndlYkhpc3RvcnlJdGVtLT5oaXN0b3J5SXRlbSgpKTsKICAgICByZXR1
cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeUl0
ZW0uY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCmluZGV4IDY4ZjUx
MzgyZWU1MjUwNWM4MzkyZmIwNmVlZDM3ZWNkYzJmN2I2OGUuLjQ0OTU5NDhlOGUzMWUzOGFkZjgx
NTk1MTk4MjFhMjExOTMzMjk0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhp
c3RvcnlJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAK
QEAgLTI4Niw3ICsyODYsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3RvcnlJ
dGVtOjpjaGlsZHJlbih1bnNpZ25lZCogb3V0Q2hpbGRDb3VudCwgU0FGRQogICAgICAgICByZXR1
cm4gRV9PVVRPRk1FTU9SWTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjaGlsZENv
dW50OyArK2kpIHsKLSAgICAgICAgQ09NUHRyPFdlYkhpc3RvcnlJdGVtPiBpdGVtKEFkb3B0Q09N
LCBXZWJIaXN0b3J5SXRlbTo6Y3JlYXRlSW5zdGFuY2UoY29yZUNoaWxkcmVuW2ldKSk7CisgICAg
ICAgIENPTVB0cjxXZWJIaXN0b3J5SXRlbT4gaXRlbShBZG9wdENPTSwgV2ViSGlzdG9yeUl0ZW06
OmNyZWF0ZUluc3RhbmNlKGNvcmVDaGlsZHJlbltpXS5wdHIoKSkpOwogICAgICAgICBpZiAoIWl0
ZW0pIHsKICAgICAgICAgICAgIFNhZmVBcnJheURlc3Ryb3koY2hpbGRyZW4pOwogICAgICAgICAg
ICAgcmV0dXJuIEVfT1VUT0ZNRU1PUlk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IDk5ZDM1M2Mw
MDk3ZjI4MDM1OGViZGMzNWYwZTAwZTMwZTI2NGFiYmUuLjdhZTAyYzA1OTM4NzA1ZmYyOWJlYmJh
OTNkNTczY2Q2MDE1YTczOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC01NDg5LDEwICs1NDg5
LDEwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6bG9hZEJhY2tGb3J3YXJk
TGlzdEZyb21PdGhlclZpZXcoCiAgICAgICAgICAgICAvLyB1bnRpbCB3ZSBsZWF2ZSB0aGF0IHBh
Z2UuCiAgICAgICAgICAgICBvdGhlcldlYlZpZXctPm1fcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVy
KCkuaGlzdG9yeSgpLnNhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlKCk7CiAgICAgICAgIH0KLSAg
ICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBuZXdJdGVtID0gb3RoZXJCYWNrRm9yd2FyZENsaWVu
dC0+aXRlbUF0SW5kZXgoaSktPmNvcHkoKTsKKyAgICAgICAgUmVmPEhpc3RvcnlJdGVtPiBuZXdJ
dGVtID0gb3RoZXJCYWNrRm9yd2FyZENsaWVudC0+aXRlbUF0SW5kZXgoaSktPmNvcHkoKTsKICAg
ICAgICAgaWYgKCFpKSAKLSAgICAgICAgICAgIG5ld0l0ZW1Ub0dvVG8gPSBuZXdJdGVtLmdldCgp
OwotICAgICAgICBiYWNrRm9yd2FyZENsaWVudC0+YWRkSXRlbShuZXdJdGVtLnJlbGVhc2UoKSk7
CisgICAgICAgICAgICBuZXdJdGVtVG9Hb1RvID0gbmV3SXRlbS5wdHIoKTsKKyAgICAgICAgYmFj
a0ZvcndhcmRDbGllbnQtPmFkZEl0ZW0oV1RGOjptb3ZlKG5ld0l0ZW0pKTsKICAgICB9CiAgICAg
CiAgICAgQVNTRVJUKG5ld0l0ZW1Ub0dvVG8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0
ZW0uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCmluZGV4IDI4OTE5MzUzZWVlMGNjZjUzMDhm
ODU4MzIwNmFhNDA3ODE0YTBiYzAuLmFhZTZhNDZhZTYzMmY4YjU0YzNkNzI1N2Y2NGNmMjAyOTJm
NjkwMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRM
aXN0SXRlbS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUGFzc1JlZlB0cjxBUEk6OkFycmF5PiBJbmpl
Y3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW06OmNoaWxkcmVuKCkgY29uc3QKICAgICBjaGls
ZHJlbi5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1faXRlbS0+Y2hpbGRyZW4oKS5zaXplKCkpOwog
CiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IG1faXRlbS0+Y2hpbGRyZW4oKSkKLSAgICAg
ICAgY2hpbGRyZW4udW5jaGVja2VkQXBwZW5kKEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0
SXRlbTo6Y3JlYXRlKGNoaWxkKSk7CisgICAgICAgIGNoaWxkcmVuLnVuY2hlY2tlZEFwcGVuZChJ
bmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShjb25zdF9jYXN0PEhpc3Rv
cnlJdGVtKj4oY2hpbGQucHRyKCkpKSk7CiAKICAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRl
KFdURjo6bW92ZShjaGlsZHJlbikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lv
bi5jcHAKaW5kZXggYjA5NDA5OThmZjA1MDdkMGE0ZTNjNDRkNGI1MmQ0ODM2MWRmYzBjOC4uZmQw
YTk4ZTg0NzU5NGMzNDIwN2EyODViYjZlYzMwNTdmZDU4MzQ5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Np
b25TdGF0ZUNvbnZlcnNpb24uY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIEZyYW1lU3Rh
dGUgdG9GcmFtZVN0YXRlKGNvbnN0IEhpc3RvcnlJdGVtJiBoaXN0b3J5SXRlbSkKICNlbmRpZgog
CiAgICAgZm9yIChhdXRvJiBjaGlsZEhpc3RvcnlJdGVtIDogaGlzdG9yeUl0ZW0uY2hpbGRyZW4o
KSkgewotICAgICAgICBGcmFtZVN0YXRlIGNoaWxkRnJhbWVTdGF0ZSA9IHRvRnJhbWVTdGF0ZSgq
Y2hpbGRIaXN0b3J5SXRlbSk7CisgICAgICAgIEZyYW1lU3RhdGUgY2hpbGRGcmFtZVN0YXRlID0g
dG9GcmFtZVN0YXRlKGNoaWxkSGlzdG9yeUl0ZW0pOwogICAgICAgICBmcmFtZVN0YXRlLmNoaWxk
cmVuLmFwcGVuZChXVEY6Om1vdmUoY2hpbGRGcmFtZVN0YXRlKSk7CiAgICAgfQogCkBAIC0xNzgs
MTAgKzE3OCwxMCBAQCBzdGF0aWMgdm9pZCBhcHBseUZyYW1lU3RhdGUoSGlzdG9yeUl0ZW0mIGhp
c3RvcnlJdGVtLCBjb25zdCBGcmFtZVN0YXRlJiBmcmFtZVN0YQogI2VuZGlmCiAKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGNoaWxkRnJhbWVTdGF0ZSA6IGZyYW1lU3RhdGUuY2hpbGRyZW4pIHsKLSAg
ICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBjaGlsZEhpc3RvcnlJdGVtID0gSGlzdG9yeUl0ZW06
OmNyZWF0ZShjaGlsZEZyYW1lU3RhdGUudXJsU3RyaW5nLCBTdHJpbmcoKSk7Ci0gICAgICAgIGFw
cGx5RnJhbWVTdGF0ZSgqY2hpbGRIaXN0b3J5SXRlbSwgY2hpbGRGcmFtZVN0YXRlKTsKKyAgICAg
ICAgUmVmPEhpc3RvcnlJdGVtPiBjaGlsZEhpc3RvcnlJdGVtID0gSGlzdG9yeUl0ZW06OmNyZWF0
ZShjaGlsZEZyYW1lU3RhdGUudXJsU3RyaW5nLCBTdHJpbmcoKSk7CisgICAgICAgIGFwcGx5RnJh
bWVTdGF0ZShjaGlsZEhpc3RvcnlJdGVtLCBjaGlsZEZyYW1lU3RhdGUpOwogCi0gICAgICAgIGhp
c3RvcnlJdGVtLmFkZENoaWxkSXRlbShjaGlsZEhpc3RvcnlJdGVtLnJlbGVhc2UoKSk7CisgICAg
ICAgIGhpc3RvcnlJdGVtLmFkZENoaWxkSXRlbShXVEY6Om1vdmUoY2hpbGRIaXN0b3J5SXRlbSkp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKaW5kZXggYTljNjc3OTA1NmI5
MmQ2MGQ0OTRiNTE1ODlmMzRkNTMxNDU4OGNmNi4uOWRjMmE2MWQ4MmI4ODkxODRiYzMxNjM1MTVk
NDAwZTM1YWQ3NGVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCkBAIC0xNDMsMTEgKzE0
Myw5IEBAIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpXZWJCYWNrRm9yd2FyZExpc3RQcm94eShX
ZWJQYWdlKiBwYWdlKQogICAgIFdlYkNvcmU6Om5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZCA9IFdL
Mk5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZDsKIH0KIAotdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQ
cm94eTo6YWRkSXRlbShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBwcnBJdGVtKQordm9pZCBXZWJC
YWNrRm9yd2FyZExpc3RQcm94eTo6YWRkSXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYgaXRlbSkKIHsK
LSAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBwcnBJdGVtOwotCi0gICAgQVNTRVJUKCFo
aXN0b3J5SXRlbVRvSURNYXAoKS5jb250YWlucyhpdGVtKSk7CisgICAgQVNTRVJUKCFoaXN0b3J5
SXRlbVRvSURNYXAoKS5jb250YWlucyhpdGVtLnB0cigpKSk7CiAKICAgICBpZiAoIW1fcGFnZSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTU4LDEwICsxNTYsMTAgQEAgdm9pZCBXZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eTo6YWRkSXRlbShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBwcnBJdGVtKQogCiAg
ICAgbV9hc3NvY2lhdGVkSXRlbUlEcy5hZGQoaXRlbUlEKTsKIAotICAgIGhpc3RvcnlJdGVtVG9J
RE1hcCgpLnNldDxJdGVtQW5kUGFnZUlEPihpdGVtLCB7IC5pdGVtSUQgPSBpdGVtSUQsIC5wYWdl
SUQgPSBtX3BhZ2UtPnBhZ2VJRCgpIH0pOwotICAgIGlkVG9IaXN0b3J5SXRlbU1hcCgpLnNldChp
dGVtSUQsIGl0ZW0pOworICAgIGhpc3RvcnlJdGVtVG9JRE1hcCgpLnNldDxJdGVtQW5kUGFnZUlE
PihpdGVtLnB0cigpLCB7IC5pdGVtSUQgPSBpdGVtSUQsIC5wYWdlSUQgPSBtX3BhZ2UtPnBhZ2VJ
RCgpIH0pOworICAgIGlkVG9IaXN0b3J5SXRlbU1hcCgpLnNldChpdGVtSUQsIGl0ZW0ucHRyKCkp
OwogCi0gICAgdXBkYXRlQmFja0ZvcndhcmRJdGVtKGl0ZW1JRCwgbV9wYWdlLT5wYWdlSUQoKSwg
aXRlbS5nZXQoKSk7CisgICAgdXBkYXRlQmFja0ZvcndhcmRJdGVtKGl0ZW1JRCwgbV9wYWdlLT5w
YWdlSUQoKSwgaXRlbS5wdHIoKSk7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkJhY2tGb3J3YXJkQWRkSXRlbShpdGVtSUQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHkuaAppbmRleCBhYTE0N2UxZDhhMjUzMTMxZmZhZGE2MWQ4ZWUyMDVkMGMxYjllY2U3Li4yY2Jk
ZWQyNWFkNDJlZTliOTkyYzMxN2Q3ZTI5NTNmNmM0NDVlN2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHkuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkJhY2tGb3J3
YXJkTGlzdFByb3h5KFdlYlBhZ2UqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRJdGVtKFBhc3NS
ZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
YWRkSXRlbShSZWY8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+JiYpIG92ZXJyaWRlOwogCiAgICAgdmly
dHVhbCB2b2lkIGdvVG9JdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgb3ZlcnJpZGU7CiAgICAg
ICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245825</attachid>
            <date>2015-02-01 00:49:21 -0800</date>
            <delta_ts>2015-02-01 14:02:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141133-20150201004929.patch</filename>
            <type>text/plain</type>
            <size>51077</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzgzZWZlYmM0NTU3ZTQ5
YzFhZWE0NWZkYTk5Y2VkZmExZTJmZTgwMy4uOWVkZGM1ZjZiYjFkZWM1MTNiYWM0MDIzMzI0M2Nk
NTE1YjBkMWEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTAxLTMxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIG1vcmUgcmVmZXJlbmNl
cyBpbiBIaXN0b3J5SXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQxMTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXNlIG1vcmUgcmVmZXJlbmNlcyBpbiBIaXN0b3J5SXRlbSBpbnN0ZWFkIG9mIHBv
aW50ZXJzLgorCiAyMDE1LTAxLTMxICBNeWxlcyBDLiBNYXhmaWVsZCAgPGxpdGhlcnVtQGdtYWls
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTc3Njg5KTogRW1vamkgdmFyaWF0aW9uIHNl
cXVlbmNlcyByZW5kZXJlZCBpbmNvcnJlY3RseSAoYXMgY2hhcmFjdGVycyBmcm9tIG90aGVyIG5v
bi1lbW9qaSBmb250KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGMyYjY4M2MwMGU1YTc2NTgxMzUwYTE0
NGFiNTViNGY0MTcyNWU4ZWUuLjFlYjE5ZDYzNjA3YzVjOTI3ZDM3YWYyZTM1M2FjNDA4YmE4ZTlj
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0wMS0zMSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBtb3JlIHJlZmVyZW5jZXMg
aW4gSGlzdG9yeUl0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0MTEzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVzZSBtb3JlIHJlZmVyZW5jZXMgaW4gSGlzdG9yeUl0ZW0gaW5zdGVhZCBvZiBwb2lu
dGVycy4KKwogMjAxNS0wMS0zMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlbW92ZSBldmVuIG1vcmUgTW91bnRhaW4gTGlvbiBzdXBwb3J0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
MzNkYzg0ZDVmZGU2YmRmNzk0YTY0Mzc5ZTJiYTA2ZmE1NzhjZGI4MC4uZWI1ZTU0Y2FhMmEwZmMw
N2RkZjFmZTQwYjYwYTUwMTdhN2Q0NjgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDE1LTAxLTMxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNl
IG1vcmUgcmVmZXJlbmNlcyBpbiBIaXN0b3J5SXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIG1vcmUgcmVmZXJlbmNlcyBpbiBIaXN0b3J5SXRl
bSBpbnN0ZWFkIG9mIHBvaW50ZXJzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW06OmNoaWxkcmVuKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0Ojp0b0ZyYW1lU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjphcHBs
eUZyYW1lU3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdFByb3h5
OjphZGRJdGVtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRM
aXN0UHJveHkuaDoKKwogMjAxNS0wMS0zMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJlbW92ZSBldmVuIG1vcmUgTW91bnRhaW4gTGlvbiBzdXBwb3J0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCmluZGV4IGNmNDlmZjgwZWQxY2M5NTU0NGMyNTQ4ZTg5OTMwNGZmMGQ0NzY1YWQu
LmE4YWM4N2I3ZWIzMjBmYzgwOWI0NTE4MzhmZWRmNDQzMWNkYjAyMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCkBAIC0xNjMsNyArMTYzLDcgQEAgX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjlzZXRP
cGVuZXJFUE5TXzVGcmFtZUUKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xMHRhcmdldEl0ZW1F
dgogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTExc2V0Rm9ybURhdGFFTjNXVEYxMFBhc3NSZWZQ
dHJJTlNfOEZvcm1EYXRhRUVFCiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMTFzZXRSZWZlcnJl
ckVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xMmFkZENoaWxkSXRl
bUVOM1dURjEwUGFzc1JlZlB0cklTMF9FRQorX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTEyYWRk
Q2hpbGRJdGVtRU9OM1dURjNSZWZJUzBfRUUKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xMnNl
dFVSTFN0cmluZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xMnNl
dFZpZXdTdGF0ZUVQMTFvYmpjX29iamVjdAogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTE0YWRk
UmVkaXJlY3RVUkxFUktOM1dURjZTdHJpbmdFCkBAIC0xNzUsNiArMTc1LDcgQEAgX19aTjdXZWJD
b3JlMTFIaXN0b3J5SXRlbTE2c2V0RG9jdW1lbnRTdGF0ZUVSS04zV1RGNlZlY3RvcklOUzFfNlN0
cmluZ0VMbTBFTlMxXzEKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xN3NldEFsdGVybmF0ZVRp
dGxlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTE4c2V0Rm9ybUNv
bnRlbnRUeXBlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTE4c2V0
UGFnZVNjYWxlRmFjdG9yRWYKK19fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0xOWNoaWxkSXRlbVdp
dGhUYXJnZXRFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMjBzZXRP
cmlnaW5hbFVSTFN0cmluZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0
ZW0yMHNldFRyYW5zaWVudFByb3BlcnR5RVJLTjNXVEY2U3RyaW5nRVAxMW9iamNfb2JqZWN0CiBf
X1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtOGZvcm1EYXRhRXYKQEAgLTQ5OCw4ICs0OTksOCBAQCBf
X1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDExY3VycmVudEl0ZW1FdgogX19aTjdXZWJDb3Jl
MTVCYWNrRm9yd2FyZExpc3QxMWZvcndhcmRJdGVtRXYKIF9fWk43V2ViQ29yZTE1QmFja0Zvcndh
cmRMaXN0MTFzZXRDYXBhY2l0eUVpCiBfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDEyY29u
dGFpbnNJdGVtRVBOU18xMUhpc3RvcnlJdGVtRQotX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExp
c3QxN2JhY2tMaXN0V2l0aExpbWl0RWlSTjNXVEY2VmVjdG9ySU5TMV82UmVmUHRySU5TXzExSGlz
dG9yeUl0ZW1FRUVMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCi1fX1pON1dlYkNvcmUxNUJh
Y2tGb3J3YXJkTGlzdDIwZm9yd2FyZExpc3RXaXRoTGltaXRFaVJOM1dURjZWZWN0b3JJTlMxXzZS
ZWZQdHJJTlNfMTFIaXN0b3J5SXRlbUVFRUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKK19f
Wk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTdiYWNrTGlzdFdpdGhMaW1pdEVpUk4zV1RGNlZl
Y3RvcklOUzFfM1JlZklOU18xMUhpc3RvcnlJdGVtRUVFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxv
d0VFRQorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QyMGZvcndhcmRMaXN0V2l0aExpbWl0
RWlSTjNXVEY2VmVjdG9ySU5TMV8zUmVmSU5TXzExSGlzdG9yeUl0ZW1FRUVMbTBFTlMxXzE1Q3Jh
c2hPbk92ZXJmbG93RUVFCiBfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDZjbG9zZWRFdgog
X19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q2Z29CYWNrRXYKIF9fWk43V2ViQ29yZTE1QmFj
a0ZvcndhcmRMaXN0N2VuYWJsZWRFdgpAQCAtMTY5Miw3ICsxNjkzLDYgQEAgX19aTks3V2ViQ29y
ZTExSGlzdG9yeUl0ZW0xNGFsdGVybmF0ZVRpdGxlRXYKIF9fWk5LN1dlYkNvcmUxMUhpc3RvcnlJ
dGVtMTVmb3JtQ29udGVudFR5cGVFdgogX19aTks3V2ViQ29yZTExSGlzdG9yeUl0ZW0xNXBhZ2VT
Y2FsZUZhY3RvckV2CiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTE3b3JpZ2luYWxVUkxTdHJp
bmdFdgotX19aTks3V2ViQ29yZTExSGlzdG9yeUl0ZW0xOWNoaWxkSXRlbVdpdGhUYXJnZXRFUktO
M1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTIwZ2V0VHJhbnNpZW50UHJv
cGVydHlFUktOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTIwaGFzQ2Fj
aGVkUGFnZUV4cGlyZWRFdgogX19aTks3V2ViQ29yZTExSGlzdG9yeUl0ZW0zdXJsRXYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDbGllbnQuaAppbmRleCA0NzE4NzM2MDFkNGZm
OTI5ZGQxNTEzYWUwOGNhZTJjMWQ2OWI5OTk5Li4wODIwNDE1ZmU4MTBmZWQxM2M1ZDlkYTI2YWVi
YmZmNzcwYjA5YmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3
YXJkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENsaWVu
dC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVh
bCB2b2lkIGFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4pID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkSXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBnb1RvSXRlbShIaXN0b3J5SXRlbSopID0gMDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAKaW5kZXggNTVjYWYxYzBkNzUx
NjUxNmExZGE4MzMwZjI4MTEyOTk0Y2FiZDc0NS4uMWFlYjYzY2Y1MjkzYzQ2NjhhZjIwZmZjYjEx
NTg1NjkxMGJmMmE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9y
d2FyZENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0Zvcndh
cmRDb250cm9sbGVyLmNwcApAQCAtOTcsOSArOTcsOSBAQCBib29sIEJhY2tGb3J3YXJkQ29udHJv
bGxlcjo6Z29Gb3J3YXJkKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBCYWNrRm9yd2Fy
ZENvbnRyb2xsZXI6OmFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gaXRlbSkKK3ZvaWQg
QmFja0ZvcndhcmRDb250cm9sbGVyOjphZGRJdGVtKFJlZjxIaXN0b3J5SXRlbT4mJiBpdGVtKQog
ewotICAgIG1fY2xpZW50LT5hZGRJdGVtKGl0ZW0pOworICAgIG1fY2xpZW50LT5hZGRJdGVtKFdU
Rjo6bW92ZShpdGVtKSk7CiB9CiAKIHZvaWQgQmFja0ZvcndhcmRDb250cm9sbGVyOjpzZXRDdXJy
ZW50SXRlbShIaXN0b3J5SXRlbSogaXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0Jh
Y2tGb3J3YXJkQ29udHJvbGxlci5oCmluZGV4IGYyM2I3ZTRiZjEwNDQ3Y2IyZjQxZWY3MmU2ZDIz
Y2Q2YmFmMGE5NjMuLjU4OWVlNWVjYTJiZTcwNjZmNjQzYzY1NjcwMDU3MjkzNmY2OWRmMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuaApAQCAt
NTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnb0JhY2soKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGdvRm9yd2FyZCgpOwogCi0gICAgdm9pZCBhZGRJdGVt
KFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+KTsKKyAgICB2b2lkIGFkZEl0ZW0oUmVmPEhpc3RvcnlJ
dGVtPiYmKTsKICAgICB2b2lkIHNldEN1cnJlbnRJdGVtKEhpc3RvcnlJdGVtKik7CiAgICAgICAg
IAogICAgIGludCBjb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9CYWNrRm9yd2FyZExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9y
d2FyZExpc3QuY3BwCmluZGV4IGVhZTYyYmM3MWY4NjM4MGM3MjUxNmI3ZTcwZDcxY2U3YWUzYjUw
NTMuLmNlM2VhZDU2MTIyNzcwMDkxYzg3ZDgwMTRhMzJiMmRlZjdhODY0YWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTU1LDM2ICs1NSwzNSBAQCBC
YWNrRm9yd2FyZExpc3Q6On5CYWNrRm9yd2FyZExpc3QoKQogICAgIEFTU0VSVChtX2Nsb3NlZCk7
CiB9CiAKLXZvaWQgQmFja0ZvcndhcmRMaXN0OjphZGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0
ZW0+IHBycEl0ZW0pCit2b2lkIEJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShSZWY8SGlzdG9yeUl0
ZW0+JiYgbmV3SXRlbSkKIHsKLSAgICBBU1NFUlQocHJwSXRlbSk7Ci0gICAgaWYgKG1fY2FwYWNp
dHkgPT0gMCB8fCAhbV9lbmFibGVkKQorICAgIGlmICghbV9jYXBhY2l0eSB8fCAhbV9lbmFibGVk
KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gVG9zcyBhbnl0aGluZyBpbiB0aGUgZm9y
d2FyZCBsaXN0ICAgIAogICAgIGlmIChtX2N1cnJlbnQgIT0gTm9DdXJyZW50SXRlbUluZGV4KSB7
CiAgICAgICAgIHVuc2lnbmVkIHRhcmdldFNpemUgPSBtX2N1cnJlbnQgKyAxOwogICAgICAgICB3
aGlsZSAobV9lbnRyaWVzLnNpemUoKSA+IHRhcmdldFNpemUpIHsKLSAgICAgICAgICAgIFJlZlB0
cjxIaXN0b3J5SXRlbT4gaXRlbSA9IG1fZW50cmllcy5sYXN0KCk7CisgICAgICAgICAgICBhdXRv
JiBpdGVtID0gbV9lbnRyaWVzLmxhc3QoKTsKICAgICAgICAgICAgIG1fZW50cmllcy5yZW1vdmVM
YXN0KCk7Ci0gICAgICAgICAgICBtX2VudHJ5SGFzaC5yZW1vdmUoaXRlbSk7Ci0gICAgICAgICAg
ICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZSgqaXRlbSk7CisgICAgICAgICAgICBtX2Vu
dHJ5SGFzaC5yZW1vdmUoaXRlbS5wdHIoKSk7CisgICAgICAgICAgICBQYWdlQ2FjaGU6OnNpbmds
ZXRvbigpLnJlbW92ZShpdGVtKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIFRvc3MgdGhl
IGZpcnN0IGl0ZW0gaWYgdGhlIGxpc3QgaXMgZ2V0dGluZyB0b28gYmlnLCBhcyBsb25nIGFzIHdl
J3JlIG5vdCB1c2luZyBpdAogICAgIC8vIChvciBldmVuIGlmIHdlIGFyZSwgaWYgd2Ugb25seSB3
YW50IDEgZW50cnkpLgotICAgIGlmIChtX2VudHJpZXMuc2l6ZSgpID09IG1fY2FwYWNpdHkgJiYg
KG1fY3VycmVudCAhPSAwIHx8IG1fY2FwYWNpdHkgPT0gMSkpIHsKLSAgICAgICAgUmVmUHRyPEhp
c3RvcnlJdGVtPiBpdGVtID0gbV9lbnRyaWVzWzBdOworICAgIGlmIChtX2VudHJpZXMuc2l6ZSgp
ID09IG1fY2FwYWNpdHkgJiYgKG1fY3VycmVudCB8fCBtX2NhcGFjaXR5ID09IDEpKSB7CisgICAg
ICAgIGF1dG8mIGl0ZW0gPSBtX2VudHJpZXMuZmlyc3QoKTsKICAgICAgICAgbV9lbnRyaWVzLnJl
bW92ZSgwKTsKLSAgICAgICAgbV9lbnRyeUhhc2gucmVtb3ZlKGl0ZW0pOwotICAgICAgICBQYWdl
Q2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZSgqaXRlbSk7Ci0gICAgICAgIG1fY3VycmVudC0tOwor
ICAgICAgICBtX2VudHJ5SGFzaC5yZW1vdmUoaXRlbS5wdHIoKSk7CisgICAgICAgIFBhZ2VDYWNo
ZTo6c2luZ2xldG9uKCkucmVtb3ZlKGl0ZW0pOworICAgICAgICAtLW1fY3VycmVudDsKICAgICB9
CiAKLSAgICBtX2VudHJ5SGFzaC5hZGQocHJwSXRlbS5nZXQoKSk7Ci0gICAgbV9lbnRyaWVzLmlu
c2VydChtX2N1cnJlbnQgKyAxLCBwcnBJdGVtKTsKLSAgICBtX2N1cnJlbnQrKzsKKyAgICBtX2Vu
dHJ5SGFzaC5hZGQobmV3SXRlbS5wdHIoKSk7CisgICAgbV9lbnRyaWVzLmluc2VydChtX2N1cnJl
bnQgKyAxLCBXVEY6Om1vdmUobmV3SXRlbSkpOworICAgICsrbV9jdXJyZW50OwogfQogCiB2b2lk
IEJhY2tGb3J3YXJkTGlzdDo6Z29CYWNrKCkKQEAgLTExMCw3ICsxMDksNyBAQCB2b2lkIEJhY2tG
b3J3YXJkTGlzdDo6Z29Ub0l0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiAgICAgICAgIAogICAgIHVu
c2lnbmVkIGludCBpbmRleCA9IDA7CiAgICAgZm9yICg7IGluZGV4IDwgbV9lbnRyaWVzLnNpemUo
KTsgKytpbmRleCkKLSAgICAgICAgaWYgKG1fZW50cmllc1tpbmRleF0gPT0gaXRlbSkKKyAgICAg
ICAgaWYgKG1fZW50cmllc1tpbmRleF0ucHRyKCkgPT0gaXRlbSkKICAgICAgICAgICAgIGJyZWFr
OwogICAgIGlmIChpbmRleCA8IG1fZW50cmllcy5zaXplKCkpIHsKICAgICAgICAgbV9jdXJyZW50
ID0gaW5kZXg7CkBAIC0xMjAsMzEgKzExOSwzMSBAQCB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Z29U
b0l0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiBIaXN0b3J5SXRlbSogQmFja0ZvcndhcmRMaXN0Ojpi
YWNrSXRlbSgpCiB7CiAgICAgaWYgKG1fY3VycmVudCAmJiBtX2N1cnJlbnQgIT0gTm9DdXJyZW50
SXRlbUluZGV4KQotICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVudCAtIDFdLmdldCgp
OwotICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVudCAtIDFd
LnB0cigpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBIaXN0b3J5SXRlbSogQmFja0Zvcndh
cmRMaXN0OjpjdXJyZW50SXRlbSgpCiB7CiAgICAgaWYgKG1fY3VycmVudCAhPSBOb0N1cnJlbnRJ
dGVtSW5kZXgpCi0gICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9jdXJyZW50XS5nZXQoKTsKLSAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJlbnRdLnB0cigpOwor
ICAgIHJldHVybiBudWxscHRyOwogfQogCiBIaXN0b3J5SXRlbSogQmFja0ZvcndhcmRMaXN0Ojpm
b3J3YXJkSXRlbSgpCiB7CiAgICAgaWYgKG1fZW50cmllcy5zaXplKCkgJiYgbV9jdXJyZW50IDwg
bV9lbnRyaWVzLnNpemUoKSAtIDEpCi0gICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9jdXJyZW50
ICsgMV0uZ2V0KCk7Ci0gICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9j
dXJyZW50ICsgMV0ucHRyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgQmFja0Zv
cndhcmRMaXN0OjpiYWNrTGlzdFdpdGhMaW1pdChpbnQgbGltaXQsIEhpc3RvcnlJdGVtVmVjdG9y
JiBsaXN0KQogewogICAgIGxpc3QuY2xlYXIoKTsKICAgICBpZiAobV9jdXJyZW50ICE9IE5vQ3Vy
cmVudEl0ZW1JbmRleCkgewotICAgICAgICB1bnNpZ25lZCBmaXJzdCA9IHN0ZDo6bWF4KChpbnQp
bV9jdXJyZW50IC0gbGltaXQsIDApOworICAgICAgICB1bnNpZ25lZCBmaXJzdCA9IHN0ZDo6bWF4
KHN0YXRpY19jYXN0PGludD4obV9jdXJyZW50KSAtIGxpbWl0LCAwKTsKICAgICAgICAgZm9yICg7
IGZpcnN0IDwgbV9jdXJyZW50OyArK2ZpcnN0KQotICAgICAgICAgICAgbGlzdC5hcHBlbmQobV9l
bnRyaWVzW2ZpcnN0XSk7CisgICAgICAgICAgICBsaXN0LmFwcGVuZChtX2VudHJpZXNbZmlyc3Rd
LmdldCgpKTsKICAgICB9CiB9CiAKQEAgLTE2MCw3ICsxNTksNyBAQCB2b2lkIEJhY2tGb3J3YXJk
TGlzdDo6Zm9yd2FyZExpc3RXaXRoTGltaXQoaW50IGxpbWl0LCBIaXN0b3J5SXRlbVZlY3RvciYg
bGlzdCkKICAgICAgICAgaW50IGxhc3QgPSBzdGQ6Om1pbihtX2N1cnJlbnQgKyBsaW1pdCwgbGFz
dEVudHJ5KTsKICAgICAgICAgbGltaXQgPSBtX2N1cnJlbnQgKyAxOwogICAgICAgICBmb3IgKDsg
bGltaXQgPD0gbGFzdDsgKytsaW1pdCkKLSAgICAgICAgICAgIGxpc3QuYXBwZW5kKG1fZW50cmll
c1tsaW1pdF0pOworICAgICAgICAgICAgbGlzdC5hcHBlbmQobV9lbnRyaWVzW2xpbWl0XS5nZXQo
KSk7CiAgICAgfQogfQogCkBAIC0xNzEsMTEgKzE3MCwxMSBAQCBpbnQgQmFja0ZvcndhcmRMaXN0
OjpjYXBhY2l0eSgpCiAKIHZvaWQgQmFja0ZvcndhcmRMaXN0OjpzZXRDYXBhY2l0eShpbnQgc2l6
ZSkKIHsgICAgCi0gICAgd2hpbGUgKHNpemUgPCAoaW50KW1fZW50cmllcy5zaXplKCkpIHsKLSAg
ICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtID0gbV9lbnRyaWVzLmxhc3QoKTsKKyAgICB3
aGlsZSAoc2l6ZSA8IHN0YXRpY19jYXN0PGludD4obV9lbnRyaWVzLnNpemUoKSkpIHsKKyAgICAg
ICAgYXV0byYgaXRlbSA9IG1fZW50cmllcy5sYXN0KCk7CiAgICAgICAgIG1fZW50cmllcy5yZW1v
dmVMYXN0KCk7Ci0gICAgICAgIG1fZW50cnlIYXNoLnJlbW92ZShpdGVtKTsKLSAgICAgICAgUGFn
ZUNhY2hlOjpzaW5nbGV0b24oKS5yZW1vdmUoKml0ZW0pOworICAgICAgICBtX2VudHJ5SGFzaC5y
ZW1vdmUoaXRlbS5wdHIoKSk7CisgICAgICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucmVtb3Zl
KGl0ZW0pOwogICAgIH0KIAogICAgIGlmICghc2l6ZSkKQEAgLTIxNCwxMyArMjEzLDEzIEBAIGlu
dCBCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0Q291bnQoKQogSGlzdG9yeUl0ZW0qIEJhY2tG
b3J3YXJkTGlzdDo6aXRlbUF0SW5kZXgoaW50IGluZGV4KQogewogICAgIC8vIERvIHJhbmdlIGNo
ZWNrcyB3aXRob3V0IGRvaW5nIG1hdGggb24gaW5kZXggdG8gYXZvaWQgb3ZlcmZsb3cuCi0gICAg
aWYgKGluZGV4IDwgLShpbnQpbV9jdXJyZW50KQotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAo
aW5kZXggPCAtc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnQpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAKICAgICBpZiAoaW5kZXggPiBmb3J3YXJkTGlzdENvdW50KCkpCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgCi0gICAgcmV0dXJu
IG1fZW50cmllc1tpbmRleCArIG1fY3VycmVudF0uZ2V0KCk7CisgICAgcmV0dXJuIG1fZW50cmll
c1tpbmRleCArIG1fY3VycmVudF0ucHRyKCk7CiB9CiAKIEhpc3RvcnlJdGVtVmVjdG9yJiBCYWNr
Rm9yd2FyZExpc3Q6OmVudHJpZXMoKQpAQCAtMjQ1LDcgKzI0NCw3IEBAIGJvb2wgQmFja0Zvcndh
cmRMaXN0OjpjbGVhckFsbFBhZ2VDYWNoZXMoKQogICAgIGZvciAoYXV0byYgaXRlbSA6IG1fZW50
cmllcykgewogICAgICAgICBpZiAoaXRlbS0+aXNJblBhZ2VDYWNoZSgpKSB7CiAgICAgICAgICAg
ICBkaWRSZW1vdmVBdExlYXN0T25lSXRlbSA9IHRydWU7Ci0gICAgICAgICAgICBQYWdlQ2FjaGU6
OnNpbmdsZXRvbigpLnJlbW92ZSgqaXRlbSk7CisgICAgICAgICAgICBQYWdlQ2FjaGU6OnNpbmds
ZXRvbigpLnJlbW92ZShpdGVtKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gZGlkUmVt
b3ZlQXRMZWFzdE9uZUl0ZW07CkBAIC0yNTUsNyArMjU0LDcgQEAgYm9vbCBCYWNrRm9yd2FyZExp
c3Q6OmNsZWFyQWxsUGFnZUNhY2hlcygpCiB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Y2xvc2UoKQog
ewogICAgIGZvciAoYXV0byYgaXRlbSA6IG1fZW50cmllcykKLSAgICAgICAgUGFnZUNhY2hlOjpz
aW5nbGV0b24oKS5yZW1vdmUoKml0ZW0pOworICAgICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigp
LnJlbW92ZShpdGVtKTsKICAgICBtX2VudHJpZXMuY2xlYXIoKTsKICAgICBtX2VudHJ5SGFzaC5j
bGVhcigpOwogICAgIG1fcGFnZSA9IG51bGxwdHI7CkBAIC0yNzIsOCArMjcxLDggQEAgdm9pZCBC
YWNrRm9yd2FyZExpc3Q6OnJlbW92ZUl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiAgICAgaWYgKCFp
dGVtKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fZW50cmllcy5zaXplKCk7ICsraSkKLSAgICAgICAgaWYgKG1fZW50cmllc1tpXSA9PSBpdGVt
KSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZW50cmllcy5zaXplKCk7ICsraSkg
eworICAgICAgICBpZiAobV9lbnRyaWVzW2ldLnB0cigpID09IGl0ZW0pIHsKICAgICAgICAgICAg
IG1fZW50cmllcy5yZW1vdmUoaSk7CiAgICAgICAgICAgICBtX2VudHJ5SGFzaC5yZW1vdmUoaXRl
bSk7CiAgICAgICAgICAgICBpZiAobV9jdXJyZW50ID09IE5vQ3VycmVudEl0ZW1JbmRleCB8fCBt
X2N1cnJlbnQgPCBpKQpAQCAtMjg3LDYgKzI4Niw3IEBAIHZvaWQgQmFja0ZvcndhcmRMaXN0Ojpy
ZW1vdmVJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAgICAgICAgICAgfQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KKyAgICB9CiB9CiAKIGJvb2wgQmFja0ZvcndhcmRMaXN0Ojpjb250
YWluc0l0ZW0oSGlzdG9yeUl0ZW0qIGVudHJ5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0Zv
cndhcmRMaXN0LmgKaW5kZXggYTMzYzhhNjZjMDA5NjU5NDY2MTZjYzRlZGM0N2ZjYzhlY2IwMjA2
OC4uNTkyOTI3NjBjY2M4NmY3OTJjNDVkN2M1NGE2ZjY5ZTdlMmMwNjNjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgUGFnZTsKIAotdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEhpc3Rv
cnlJdGVtPj4gSGlzdG9yeUl0ZW1WZWN0b3I7Cit0eXBlZGVmIFZlY3RvcjxSZWY8SGlzdG9yeUl0
ZW0+PiBIaXN0b3J5SXRlbVZlY3RvcjsKIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8SGlzdG9yeUl0
ZW0+PiBIaXN0b3J5SXRlbUhhc2hTZXQ7CiAKIGNsYXNzIEJhY2tGb3J3YXJkTGlzdCA6IHB1Ymxp
YyBCYWNrRm9yd2FyZENsaWVudCB7CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIFBh
Z2UqIHBhZ2UoKSB7IHJldHVybiBtX3BhZ2U7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhZGRJdGVt
KFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRk
SXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZ29CYWNrKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnb0ZvcndhcmQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgZ29Ub0l0ZW0oSGlzdG9yeUl0ZW0qKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKaW5kZXggM2M1MmZkNmUwMjc5MTc4YmY0MGFjZmU0YmQ4
MzI0NTE5MmNhYTAyZC4uMjI5YmFiOGU3YTIzYWMwNWMwYWQwNWU3ZWQ0MzE1N2RjZDdlOGIwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKQEAgLTE3Miw5ICsxNzIsOSBA
QCBpbmxpbmUgSGlzdG9yeUl0ZW06Okhpc3RvcnlJdGVtKGNvbnN0IEhpc3RvcnlJdGVtJiBpdGVt
KQogICAgICAgICBtX3JlZGlyZWN0VVJMcyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmlu
Zz4+KCppdGVtLm1fcmVkaXJlY3RVUkxzKTsKIH0KIAotUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4g
SGlzdG9yeUl0ZW06OmNvcHkoKSBjb25zdAorUmVmPEhpc3RvcnlJdGVtPiBIaXN0b3J5SXRlbTo6
Y29weSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIaXN0b3J5SXRlbSgqdGhp
cykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhpc3RvcnlJdGVtKCp0aGlzKSk7CiB9CiAK
IHZvaWQgSGlzdG9yeUl0ZW06OnJlc2V0KCkKQEAgLTM2Niw0NCArMzY2LDQ0IEBAIHZvaWQgSGlz
dG9yeUl0ZW06OnNldFN0YXRlT2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBvYmplY3QpCiAgICAgbV9zdGF0ZU9iamVjdCA9IG9iamVjdDsKIH0KIAotdm9pZCBIaXN0b3J5
SXRlbTo6YWRkQ2hpbGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGNoaWxkKQordm9pZCBI
aXN0b3J5SXRlbTo6YWRkQ2hpbGRJdGVtKFJlZjxIaXN0b3J5SXRlbT4mJiBjaGlsZCkKIHsKICAg
ICBBU1NFUlQoIWNoaWxkSXRlbVdpdGhUYXJnZXQoY2hpbGQtPnRhcmdldCgpKSk7Ci0gICAgbV9j
aGlsZHJlbi5hcHBlbmQoY2hpbGQpOworICAgIG1fY2hpbGRyZW4uYXBwZW5kKFdURjo6bW92ZShj
aGlsZCkpOwogfQogCi12b2lkIEhpc3RvcnlJdGVtOjpzZXRDaGlsZEl0ZW0oUGFzc1JlZlB0cjxI
aXN0b3J5SXRlbT4gY2hpbGQpCit2b2lkIEhpc3RvcnlJdGVtOjpzZXRDaGlsZEl0ZW0oUmVmPEhp
c3RvcnlJdGVtPiYmIGNoaWxkKQogewogICAgIEFTU0VSVCghY2hpbGQtPmlzVGFyZ2V0SXRlbSgp
KTsKICAgICB1bnNpZ25lZCBzaXplID0gbV9jaGlsZHJlbi5zaXplKCk7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgIHsKICAgICAgICAgaWYgKG1fY2hpbGRyZW5baV0t
PnRhcmdldCgpID09IGNoaWxkLT50YXJnZXQoKSkgewogICAgICAgICAgICAgY2hpbGQtPnNldElz
VGFyZ2V0SXRlbShtX2NoaWxkcmVuW2ldLT5pc1RhcmdldEl0ZW0oKSk7Ci0gICAgICAgICAgICBt
X2NoaWxkcmVuW2ldID0gY2hpbGQ7CisgICAgICAgICAgICBtX2NoaWxkcmVuW2ldID0gV1RGOjpt
b3ZlKGNoaWxkKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBt
X2NoaWxkcmVuLmFwcGVuZChjaGlsZCk7CisgICAgbV9jaGlsZHJlbi5hcHBlbmQoV1RGOjptb3Zl
KGNoaWxkKSk7CiB9CiAKLUhpc3RvcnlJdGVtKiBIaXN0b3J5SXRlbTo6Y2hpbGRJdGVtV2l0aFRh
cmdldChjb25zdCBTdHJpbmcmIHRhcmdldCkgY29uc3QKK0hpc3RvcnlJdGVtKiBIaXN0b3J5SXRl
bTo6Y2hpbGRJdGVtV2l0aFRhcmdldChjb25zdCBTdHJpbmcmIHRhcmdldCkKIHsKICAgICB1bnNp
Z25lZCBzaXplID0gbV9jaGlsZHJlbi5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHNpemU7ICsraSkgewogICAgICAgICBpZiAobV9jaGlsZHJlbltpXS0+dGFyZ2V0KCkgPT0g
dGFyZ2V0KQotICAgICAgICAgICAgcmV0dXJuIG1fY2hpbGRyZW5baV0uZ2V0KCk7CisgICAgICAg
ICAgICByZXR1cm4gbV9jaGlsZHJlbltpXS5wdHIoKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUhpc3RvcnlJdGVtKiBIaXN0b3J5SXRlbTo6Y2hpbGRJ
dGVtV2l0aERvY3VtZW50U2VxdWVuY2VOdW1iZXIobG9uZyBsb25nIG51bWJlcikgY29uc3QKK0hp
c3RvcnlJdGVtKiBIaXN0b3J5SXRlbTo6Y2hpbGRJdGVtV2l0aERvY3VtZW50U2VxdWVuY2VOdW1i
ZXIobG9uZyBsb25nIG51bWJlcikKIHsKICAgICB1bnNpZ25lZCBzaXplID0gbV9jaGlsZHJlbi5z
aXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAg
ICBpZiAobV9jaGlsZHJlbltpXS0+ZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpID09IG51bWJlcikK
LSAgICAgICAgICAgIHJldHVybiBtX2NoaWxkcmVuW2ldLmdldCgpOworICAgICAgICAgICAgcmV0
dXJuIG1fY2hpbGRyZW5baV0ucHRyKCk7CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVy
biBudWxscHRyOwogfQogCiAvLyA8cmRhcjovL3Byb2JsZW0vNDg5NTg0OT4gSGlzdG9yeUl0ZW06
OmZpbmRUYXJnZXRJdGVtKCkgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggYSBub24tcmVjdXJzaXZl
IG1ldGhvZC4KQEAgLTQxMywxNSArNDEzLDE3IEBAIEhpc3RvcnlJdGVtKiBIaXN0b3J5SXRlbTo6
ZmluZFRhcmdldEl0ZW0oKQogICAgICAgICByZXR1cm4gdGhpczsKICAgICB1bnNpZ25lZCBzaXpl
ID0gbV9jaGlsZHJlbi5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7
ICsraSkgeworICAgICAgICAvLyBGSVhNRTogdGFyZ2V0SXRlbSgpIGNhbm5vdCByZXR1cm4gbnVs
bCBjdXJyZW50bHksIHdoaWNoIGlzIHdyb25nLgogICAgICAgICBpZiAoSGlzdG9yeUl0ZW0qIG1h
dGNoID0gbV9jaGlsZHJlbltpXS0+dGFyZ2V0SXRlbSgpKQogICAgICAgICAgICAgcmV0dXJuIG1h
dGNoOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogSGlz
dG9yeUl0ZW0qIEhpc3RvcnlJdGVtOjp0YXJnZXRJdGVtKCkKIHsKICAgICBIaXN0b3J5SXRlbSog
Zm91bmRJdGVtID0gZmluZFRhcmdldEl0ZW0oKTsKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
cHJvYmFibHkgbm90IGZhbGwgYmFjayB0byB8dGhpc3wuCiAgICAgcmV0dXJuIGZvdW5kSXRlbSA/
IGZvdW5kSXRlbSA6IHRoaXM7CiB9CiAKQEAgLTQ0MCwxMyArNDQyLDEzIEBAIHZvaWQgSGlzdG9y
eUl0ZW06OmNsZWFyQ2hpbGRyZW4oKQogICAgIG1fY2hpbGRyZW4uY2xlYXIoKTsKIH0KIAotYm9v
bCBIaXN0b3J5SXRlbTo6aXNBbmNlc3Rvck9mKGNvbnN0IEhpc3RvcnlJdGVtKiBpdGVtKSBjb25z
dAorYm9vbCBIaXN0b3J5SXRlbTo6aXNBbmNlc3Rvck9mKGNvbnN0IEhpc3RvcnlJdGVtJiBpdGVt
KSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jaGlsZHJlbi5zaXplKCk7
ICsraSkgewotICAgICAgICBIaXN0b3J5SXRlbSogY2hpbGQgPSBtX2NoaWxkcmVuW2ldLmdldCgp
OwotICAgICAgICBpZiAoY2hpbGQgPT0gaXRlbSkKKyAgICAgICAgYXV0byYgY2hpbGQgPSBtX2No
aWxkcmVuW2ldLmdldCgpOworICAgICAgICBpZiAoJmNoaWxkID09ICZpdGVtKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChjaGlsZC0+aXNBbmNlc3Rvck9mKGl0ZW0pKQor
ICAgICAgICBpZiAoY2hpbGQuaXNBbmNlc3Rvck9mKGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTQ1NSwzNCArNDU3LDM0IEBAIGJv
b2wgSGlzdG9yeUl0ZW06OmlzQW5jZXN0b3JPZihjb25zdCBIaXN0b3J5SXRlbSogaXRlbSkgY29u
c3QKIC8vIFdlIGRvIHNhbWUtZG9jdW1lbnQgbmF2aWdhdGlvbiBpZiBnb2luZyB0byBhIGRpZmZl
cmVudCBpdGVtIGFuZCBpZiBlaXRoZXIgb2YgdGhlIGZvbGxvd2luZyBpcyB0cnVlOgogLy8gLSBU
aGUgb3RoZXIgaXRlbSBjb3JyZXNwb25kcyB0byB0aGUgc2FtZSBkb2N1bWVudCAoZm9yIGhpc3Rv
cnkgZW50cmllcyBjcmVhdGVkIHZpYSBwdXNoU3RhdGUgb3IgZnJhZ21lbnQgY2hhbmdlcykuCiAv
LyAtIFRoZSBvdGhlciBpdGVtIGNvcnJlc3BvbmRzIHRvIHRoZSBzYW1lIHNldCBvZiBkb2N1bWVu
dHMsIGluY2x1ZGluZyBmcmFtZXMgKGZvciBoaXN0b3J5IGVudHJpZXMgY3JlYXRlZCB2aWEgcmVn
dWxhciBuYXZpZ2F0aW9uKQotYm9vbCBIaXN0b3J5SXRlbTo6c2hvdWxkRG9TYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uVG8oSGlzdG9yeUl0ZW0qIG90aGVySXRlbSkgY29uc3QKK2Jvb2wgSGlzdG9yeUl0
ZW06OnNob3VsZERvU2FtZURvY3VtZW50TmF2aWdhdGlvblRvKEhpc3RvcnlJdGVtJiBvdGhlckl0
ZW0pIGNvbnN0CiB7Ci0gICAgaWYgKHRoaXMgPT0gb3RoZXJJdGVtKQorICAgIGlmICh0aGlzID09
ICZvdGhlckl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChzdGF0ZU9iamVj
dCgpIHx8IG90aGVySXRlbS0+c3RhdGVPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIGRvY3VtZW50
U2VxdWVuY2VOdW1iZXIoKSA9PSBvdGhlckl0ZW0tPmRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKTsK
KyAgICBpZiAoc3RhdGVPYmplY3QoKSB8fCBvdGhlckl0ZW0uc3RhdGVPYmplY3QoKSkKKyAgICAg
ICAgcmV0dXJuIGRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSA9PSBvdGhlckl0ZW0uZG9jdW1lbnRT
ZXF1ZW5jZU51bWJlcigpOwogICAgIAotICAgIGlmICgodXJsKCkuaGFzRnJhZ21lbnRJZGVudGlm
aWVyKCkgfHwgb3RoZXJJdGVtLT51cmwoKS5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkgJiYgZXF1
YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwoKSwgb3RoZXJJdGVtLT51cmwoKSkpCi0g
ICAgICAgIHJldHVybiBkb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkgPT0gb3RoZXJJdGVtLT5kb2N1
bWVudFNlcXVlbmNlTnVtYmVyKCk7ICAgICAgICAKKyAgICBpZiAoKHVybCgpLmhhc0ZyYWdtZW50
SWRlbnRpZmllcigpIHx8IG90aGVySXRlbS51cmwoKS5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkg
JiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwoKSwgb3RoZXJJdGVtLnVybCgp
KSkKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSA9PSBvdGhlckl0ZW0u
ZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpOwogICAgIAogICAgIHJldHVybiBoYXNTYW1lRG9jdW1l
bnRUcmVlKG90aGVySXRlbSk7CiB9CiAKIC8vIERvZXMgYSByZWN1cnNpdmUgY2hlY2sgdGhhdCB0
aGlzIGl0ZW0gYW5kIGl0cyBkZXNjZW5kYW50cyBoYXZlIHRoZSBzYW1lCiAvLyBkb2N1bWVudCBz
ZXF1ZW5jZSBudW1iZXJzIGFzIHRoZSBvdGhlciBpdGVtLgotYm9vbCBIaXN0b3J5SXRlbTo6aGFz
U2FtZURvY3VtZW50VHJlZShIaXN0b3J5SXRlbSogb3RoZXJJdGVtKSBjb25zdAorYm9vbCBIaXN0
b3J5SXRlbTo6aGFzU2FtZURvY3VtZW50VHJlZShIaXN0b3J5SXRlbSYgb3RoZXJJdGVtKSBjb25z
dAogewotICAgIGlmIChkb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkgIT0gb3RoZXJJdGVtLT5kb2N1
bWVudFNlcXVlbmNlTnVtYmVyKCkpCisgICAgaWYgKGRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSAh
PSBvdGhlckl0ZW0uZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIAotICAgIGlmIChjaGlsZHJlbigpLnNpemUoKSAhPSBvdGhlckl0ZW0tPmNo
aWxkcmVuKCkuc2l6ZSgpKQorICAgIGlmIChjaGlsZHJlbigpLnNpemUoKSAhPSBvdGhlckl0ZW0u
Y2hpbGRyZW4oKS5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4oKS5zaXplKCk7IGkrKykgewotICAgICAgICBIaXN0b3J5
SXRlbSogY2hpbGQgPSBjaGlsZHJlbigpW2ldLmdldCgpOwotICAgICAgICBIaXN0b3J5SXRlbSog
b3RoZXJDaGlsZCA9IG90aGVySXRlbS0+Y2hpbGRJdGVtV2l0aERvY3VtZW50U2VxdWVuY2VOdW1i
ZXIoY2hpbGQtPmRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSk7Ci0gICAgICAgIGlmICghb3RoZXJD
aGlsZCB8fCAhY2hpbGQtPmhhc1NhbWVEb2N1bWVudFRyZWUob3RoZXJDaGlsZCkpCisgICAgICAg
IGF1dG8mIGNoaWxkID0gY2hpbGRyZW4oKVtpXS5nZXQoKTsKKyAgICAgICAgYXV0byogb3RoZXJD
aGlsZCA9IG90aGVySXRlbS5jaGlsZEl0ZW1XaXRoRG9jdW1lbnRTZXF1ZW5jZU51bWJlcihjaGls
ZC5kb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkpOworICAgICAgICBpZiAoIW90aGVyQ2hpbGQgfHwg
IWNoaWxkLmhhc1NhbWVEb2N1bWVudFRyZWUoKm90aGVyQ2hpbGQpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNDkxLDE2ICs0OTMsMTYgQEAgYm9vbCBIaXN0b3J5SXRl
bTo6aGFzU2FtZURvY3VtZW50VHJlZShIaXN0b3J5SXRlbSogb3RoZXJJdGVtKSBjb25zdAogCiAv
LyBEb2VzIGEgbm9uLXJlY3Vyc2l2ZSBjaGVjayB0aGF0IHRoaXMgaXRlbSBhbmQgaXRzIGltbWVk
aWF0ZSBjaGlsZHJlbiBoYXZlIHRoZQogLy8gc2FtZSBmcmFtZXMgYXMgdGhlIG90aGVyIGl0ZW0u
Ci1ib29sIEhpc3RvcnlJdGVtOjpoYXNTYW1lRnJhbWVzKEhpc3RvcnlJdGVtKiBvdGhlckl0ZW0p
IGNvbnN0Citib29sIEhpc3RvcnlJdGVtOjpoYXNTYW1lRnJhbWVzKEhpc3RvcnlJdGVtJiBvdGhl
ckl0ZW0pIGNvbnN0CiB7Ci0gICAgaWYgKHRhcmdldCgpICE9IG90aGVySXRlbS0+dGFyZ2V0KCkp
CisgICAgaWYgKHRhcmdldCgpICE9IG90aGVySXRlbS50YXJnZXQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAKLSAgICBpZiAoY2hpbGRyZW4oKS5zaXplKCkgIT0gb3RoZXJJdGVt
LT5jaGlsZHJlbigpLnNpemUoKSkKKyAgICBpZiAoY2hpbGRyZW4oKS5zaXplKCkgIT0gb3RoZXJJ
dGVtLmNoaWxkcmVuKCkuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNoaWxkcmVuKCkuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgaWYg
KCFvdGhlckl0ZW0tPmNoaWxkSXRlbVdpdGhUYXJnZXQoY2hpbGRyZW4oKVtpXS0+dGFyZ2V0KCkp
KQorICAgICAgICBpZiAoIW90aGVySXRlbS5jaGlsZEl0ZW1XaXRoVGFyZ2V0KGNoaWxkcmVuKClb
aV0tPnRhcmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTU0
MiwxMCArNTQ0LDEwIEBAIEZvcm1EYXRhKiBIaXN0b3J5SXRlbTo6Zm9ybURhdGEoKQogICAgIHJl
dHVybiBtX2Zvcm1EYXRhLmdldCgpOwogfQogCi1ib29sIEhpc3RvcnlJdGVtOjppc0N1cnJlbnRE
b2N1bWVudChEb2N1bWVudCogZG9jKSBjb25zdAorYm9vbCBIaXN0b3J5SXRlbTo6aXNDdXJyZW50
RG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgZmluZCBhIGJldHRlciB3YXkgdG8gY2hlY2sgaWYgdGhpcyBpcyB0aGUgY3VycmVudCBk
b2N1bWVudC4KLSAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwo
KSwgZG9jLT51cmwoKSk7CisgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZp
ZXIodXJsKCksIGRvY3VtZW50LnVybCgpKTsKIH0KIAogdm9pZCBIaXN0b3J5SXRlbTo6YWRkUmVk
aXJlY3RVUkwoY29uc3QgU3RyaW5nJiB1cmwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0hpc3RvcnlJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVt
LmgKaW5kZXggNjRjMDRiZWY5NGVlNjIyNDNhY2Y2YzlkYzM3NjY3NDRlNzlhZTY1ZC4uNGQ4NDNj
NDhmMmY1ODJiM2VmMWEyMWI2ZGNjZjUyMWVmODIxZjc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
SGlzdG9yeUl0ZW0uaApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBj
bGFzcyBVUkw7CiBlbnVtIGNsYXNzIFBydW5pbmdSZWFzb247CiAKLXR5cGVkZWYgVmVjdG9yPFJl
ZlB0cjxIaXN0b3J5SXRlbT4+IEhpc3RvcnlJdGVtVmVjdG9yOwordHlwZWRlZiBWZWN0b3I8UmVm
PEhpc3RvcnlJdGVtPj4gSGlzdG9yeUl0ZW1WZWN0b3I7CiAKIGV4dGVybiB2b2lkICgqbm90aWZ5
SGlzdG9yeUl0ZW1DaGFuZ2VkKShIaXN0b3J5SXRlbSopOwogCkBAIC03OSw3ICs3OSw3IEBAIHB1
YmxpYzoKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCB+SGlzdG9yeUl0ZW0oKTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGNvcHkoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWY8SGlzdG9yeUl0ZW0+IGNvcHkoKSBjb25zdDsKIAogICAgIC8vIFJl
c2V0cyB0aGUgSGlzdG9yeUl0ZW0gdG8gaXRzIGluaXRpYWwgc3RhdGUsIGFzIHJldHVybmVkIGJ5
IGNyZWF0ZSgpLgogICAgIHZvaWQgcmVzZXQoKTsKQEAgLTE0MSwyNCArMTQxLDI0IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgc2V0TGFzdFZpc2l0V2FzRmFpbHVyZShib29sIHdhc0ZhaWx1cmUpIHsg
bV9sYXN0VmlzaXRXYXNGYWlsdXJlID0gd2FzRmFpbHVyZTsgfQogCi0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhZGRDaGlsZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4pOwotICAgIHZvaWQg
c2V0Q2hpbGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+KTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBIaXN0b3J5SXRlbSogY2hpbGRJdGVtV2l0aFRhcmdldChjb25zdCBTdHJpbmcmKSBjb25zdDsK
LSAgICBIaXN0b3J5SXRlbSogY2hpbGRJdGVtV2l0aERvY3VtZW50U2VxdWVuY2VOdW1iZXIobG9u
ZyBsb25nIG51bWJlcikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDaGlsZEl0
ZW0oUmVmPEhpc3RvcnlJdGVtPiYmKTsKKyAgICB2b2lkIHNldENoaWxkSXRlbShSZWY8SGlzdG9y
eUl0ZW0+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIEhpc3RvcnlJdGVtKiBjaGlsZEl0ZW1XaXRo
VGFyZ2V0KGNvbnN0IFN0cmluZyYpOworICAgIEhpc3RvcnlJdGVtKiBjaGlsZEl0ZW1XaXRoRG9j
dW1lbnRTZXF1ZW5jZU51bWJlcihsb25nIGxvbmcgbnVtYmVyKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBIaXN0b3J5SXRlbSogdGFyZ2V0SXRlbSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEhp
c3RvcnlJdGVtVmVjdG9yJiBjaGlsZHJlbigpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaGFzQ2hpbGRyZW4oKSBjb25zdDsKICAgICB2b2lkIGNsZWFyQ2hpbGRyZW4oKTsKLSAgICBi
b29sIGlzQW5jZXN0b3JPZihjb25zdCBIaXN0b3J5SXRlbSopIGNvbnN0OworICAgIGJvb2wgaXNB
bmNlc3Rvck9mKGNvbnN0IEhpc3RvcnlJdGVtJikgY29uc3Q7CiAgICAgCi0gICAgYm9vbCBzaG91
bGREb1NhbWVEb2N1bWVudE5hdmlnYXRpb25UbyhIaXN0b3J5SXRlbSogb3RoZXJJdGVtKSBjb25z
dDsKLSAgICBib29sIGhhc1NhbWVGcmFtZXMoSGlzdG9yeUl0ZW0qIG90aGVySXRlbSkgY29uc3Q7
CisgICAgYm9vbCBzaG91bGREb1NhbWVEb2N1bWVudE5hdmlnYXRpb25UbyhIaXN0b3J5SXRlbSYg
b3RoZXJJdGVtKSBjb25zdDsKKyAgICBib29sIGhhc1NhbWVGcmFtZXMoSGlzdG9yeUl0ZW0mIG90
aGVySXRlbSkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFJlZGlyZWN0VVJM
KGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+KiByZWRp
cmVjdFVSTHMoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJlZGlyZWN0VVJM
cyhzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+KTsKIAotICAgIGJvb2wgaXNDdXJyZW50
RG9jdW1lbnQoRG9jdW1lbnQqKSBjb25zdDsKKyAgICBib29sIGlzQ3VycmVudERvY3VtZW50KERv
Y3VtZW50JikgY29uc3Q7CiAgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV0VCQ09SRV9F
WFBPUlQgaWQgdmlld1N0YXRlKCkgY29uc3Q7CkBAIC0yMTIsOSArMjEyLDkgQEAgcHJpdmF0ZToK
ICAgICBXRUJDT1JFX0VYUE9SVCBIaXN0b3J5SXRlbShjb25zdCBTdHJpbmcmIHVybFN0cmluZywg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBhbHRlcm5hdGVUaXRsZSk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0ZW0oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBmcmFt
ZU5hbWUsIGNvbnN0IFN0cmluZyYgcGFyZW50LCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKIAotICAg
IGV4cGxpY2l0IEhpc3RvcnlJdGVtKGNvbnN0IEhpc3RvcnlJdGVtJik7CisgICAgSGlzdG9yeUl0
ZW0oY29uc3QgSGlzdG9yeUl0ZW0mKTsKIAotICAgIGJvb2wgaGFzU2FtZURvY3VtZW50VHJlZShI
aXN0b3J5SXRlbSogb3RoZXJJdGVtKSBjb25zdDsKKyAgICBib29sIGhhc1NhbWVEb2N1bWVudFRy
ZWUoSGlzdG9yeUl0ZW0mIG90aGVySXRlbSkgY29uc3Q7CiAKICAgICBIaXN0b3J5SXRlbSogZmlu
ZFRhcmdldEl0ZW0oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXgg
MDU5ZjBmZjhlNGZjMTZmNmYwOTNhMWNkMGFjMjc5ZTJjNDcwOTc0ZC4uZmYxZWNjNGUyYTExY2E1
MDU5ZDU1OGEyYmIyOGY2NmE4YTAzOGEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCkBAIC0zMTQzLDcgKzMxNDMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkU2FtZURv
Y3VtZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSkKICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0g
bV9mcmFtZS52aWV3KCkpCiAgICAgICAgIHZpZXctPnNldFdhc1Njcm9sbGVkQnlVc2VyKGZhbHNl
KTsKIAotICAgIGhpc3RvcnkoKS5zZXRDdXJyZW50SXRlbSgmaXRlbSk7CisgICAgaGlzdG9yeSgp
LnNldEN1cnJlbnRJdGVtKGl0ZW0pOwogICAgICAgICAKICAgICAvLyBsb2FkSW5TYW1lRG9jdW1l
bnQoKSBhY3R1YWxseSBjaGFuZ2VzIHRoZSBVUkwgYW5kIG5vdGlmaWVzIGxvYWQgZGVsZWdhdGVz
IG9mIGEgImZha2UiIGxvYWQKICAgICBsb2FkSW5TYW1lRG9jdW1lbnQoaXRlbS51cmwoKSwgaXRl
bS5zdGF0ZU9iamVjdCgpLCBmYWxzZSk7CkBAIC0zMjQ3LDcgKzMyNDcsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpsb2FkSXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2FkVHlw
ZSkKIHsKICAgICBtX3JlcXVlc3RlZEhpc3RvcnlJdGVtID0gJml0ZW07CiAgICAgSGlzdG9yeUl0
ZW0qIGN1cnJlbnRJdGVtID0gaGlzdG9yeSgpLmN1cnJlbnRJdGVtKCk7Ci0gICAgYm9vbCBzYW1l
RG9jdW1lbnROYXZpZ2F0aW9uID0gY3VycmVudEl0ZW0gJiYgaXRlbS5zaG91bGREb1NhbWVEb2N1
bWVudE5hdmlnYXRpb25UbyhjdXJyZW50SXRlbSk7CisgICAgYm9vbCBzYW1lRG9jdW1lbnROYXZp
Z2F0aW9uID0gY3VycmVudEl0ZW0gJiYgaXRlbS5zaG91bGREb1NhbWVEb2N1bWVudE5hdmlnYXRp
b25UbygqY3VycmVudEl0ZW0pOwogCiAgICAgaWYgKHNhbWVEb2N1bWVudE5hdmlnYXRpb24pCiAg
ICAgICAgIGxvYWRTYW1lRG9jdW1lbnRJdGVtKGl0ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5kZXggYWNmOTA5MDZlYWRkMjA5ZDBkMDRiNGE4ZGY4
NzBlODBmNWU5N2RlNy4uZDQ2MTBjYWU5Mjc0NzliZGU2MDE0M2MzZWFhNDBhNzlmNzhhZGI4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCkBAIC0xODUs
MTIgKzE4NSwxMSBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpzYXZlRG9jdW1lbnRTdGF0ZSgp
CiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm47CiAKLSAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBtX2ZyYW1lLmRvY3VtZW50KCk7Ci0gICAgQVNTRVJUKGRvY3VtZW50KTsKLSAgICAKLSAg
ICBpZiAoaXRlbS0+aXNDdXJyZW50RG9jdW1lbnQoZG9jdW1lbnQpICYmIGRvY3VtZW50LT5oYXNM
aXZpbmdSZW5kZXJUcmVlKCkpIHsKKyAgICBBU1NFUlQobV9mcmFtZS5kb2N1bWVudCgpKTsKKyAg
ICBEb2N1bWVudCYgZG9jdW1lbnQgPSAqbV9mcmFtZS5kb2N1bWVudCgpOworICAgIGlmIChpdGVt
LT5pc0N1cnJlbnREb2N1bWVudChkb2N1bWVudCkgJiYgZG9jdW1lbnQuaGFzTGl2aW5nUmVuZGVy
VHJlZSgpKSB7CiAgICAgICAgIExPRyhMb2FkaW5nLCAiV2ViQ29yZUxvYWRpbmcgJXM6IHNhdmlu
ZyBmb3JtIHN0YXRlIHRvICVwIiwgbV9mcmFtZS50cmVlKCkudW5pcXVlTmFtZSgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCksIGl0ZW0pOwotICAgICAgICBpdGVtLT5zZXREb2N1bWVudFN0YXRlKGRv
Y3VtZW50LT5mb3JtRWxlbWVudHNTdGF0ZSgpKTsKKyAgICAgICAgaXRlbS0+c2V0RG9jdW1lbnRT
dGF0ZShkb2N1bWVudC5mb3JtRWxlbWVudHNTdGF0ZSgpKTsKICAgICB9CiB9CiAKQEAgLTI1Myw3
ICsyNTIsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjppbnZhbGlkYXRlQ3VycmVudEl0ZW1D
YWNoZWRQYWdlKCkKICAgICB9CiB9CiAKLWJvb2wgSGlzdG9yeUNvbnRyb2xsZXI6OnNob3VsZFN0
b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qIHRhcmdldEl0ZW0pIGNvbnN0Citi
b29sIEhpc3RvcnlDb250cm9sbGVyOjpzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhp
c3RvcnlJdGVtJiB0YXJnZXRJdGVtKSBjb25zdAogewogICAgIGlmICghbV9jdXJyZW50SXRlbSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDY5LDggKzQ2OCw4IEBAIHZvaWQgSGlzdG9yeUNv
bnRyb2xsZXI6OnVwZGF0ZUZvckNvbW1pdCgpCiAgICAgICAgIC8vIE5vdGUgcHJldmlvdXNJdGVt
IG11c3QgYmUgc2V0IGJlZm9yZSB3ZSBjbG9zZSB0aGUgVVJMLCB3aGljaCB3aWxsCiAgICAgICAg
IC8vIGhhcHBlbiB3aGVuIHRoZSBkYXRhIHNvdXJjZSBpcyBtYWRlIG5vbi1wcm92aXNpb25hbCBi
ZWxvdwogICAgICAgICBBU1NFUlQobV9wcm92aXNpb25hbEl0ZW0pOwotICAgICAgICBzZXRDdXJy
ZW50SXRlbShtX3Byb3Zpc2lvbmFsSXRlbS5nZXQoKSk7Ci0gICAgICAgIG1fcHJvdmlzaW9uYWxJ
dGVtID0gMDsKKyAgICAgICAgc2V0Q3VycmVudEl0ZW0oKm1fcHJvdmlzaW9uYWxJdGVtKTsKKyAg
ICAgICAgbV9wcm92aXNpb25hbEl0ZW0gPSBudWxscHRyOwogCiAgICAgICAgIC8vIFRlbGwgYWxs
IG90aGVyIGZyYW1lcyBpbiB0aGUgdHJlZSB0byBjb21taXQgdGhlaXIgcHJvdmlzaW9uYWwgaXRl
bXMgYW5kCiAgICAgICAgIC8vIHJlc3RvcmUgdGhlaXIgc2Nyb2xsIHBvc2l0aW9uLiAgV2UnbGwg
YXZvaWQgdGhpcyBmcmFtZSAod2hpY2ggaGFzIGFscmVhZHkKQEAgLTUxMCw4ICs1MDksOCBAQCB2
b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVVcGRhdGVGb3JDb21taXQoKQogICAgICAg
ICAgICAgdmlldy0+c2V0V2FzU2Nyb2xsZWRCeVVzZXIoZmFsc2UpOwogCiAgICAgICAgIC8vIE5v
dyBjb21taXQgdGhlIHByb3Zpc2lvbmFsIGl0ZW0KLSAgICAgICAgc2V0Q3VycmVudEl0ZW0obV9w
cm92aXNpb25hbEl0ZW0uZ2V0KCkpOwotICAgICAgICBtX3Byb3Zpc2lvbmFsSXRlbSA9IDA7Cisg
ICAgICAgIHNldEN1cnJlbnRJdGVtKCptX3Byb3Zpc2lvbmFsSXRlbSk7CisgICAgICAgIG1fcHJv
dmlzaW9uYWxJdGVtID0gbnVsbHB0cjsKIAogICAgICAgICAvLyBSZXN0b3JlIGZvcm0gc3RhdGUg
KHdvcmtzIGZyb20gY3VycmVudEl0ZW0pCiAgICAgICAgIHJlc3RvcmVEb2N1bWVudFN0YXRlKCk7
CkBAIC01NTUsMTIgKzU1NCwxMiBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVV
cGRhdGVGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCkKIAogICAgIC8vIFRoZSBwcm92aXNpb25h
bCBpdGVtIG1heSByZXByZXNlbnQgYSBkaWZmZXJlbnQgcGVuZGluZyBuYXZpZ2F0aW9uLgogICAg
IC8vIERvbid0IGNvbW1pdCBpdCBpZiBpdCBpc24ndCBhIHNhbWUgZG9jdW1lbnQgbmF2aWdhdGlv
bi4KLSAgICBpZiAobV9jdXJyZW50SXRlbSAmJiAhbV9jdXJyZW50SXRlbS0+c2hvdWxkRG9TYW1l
RG9jdW1lbnROYXZpZ2F0aW9uVG8obV9wcm92aXNpb25hbEl0ZW0uZ2V0KCkpKQorICAgIGlmICht
X2N1cnJlbnRJdGVtICYmICFtX2N1cnJlbnRJdGVtLT5zaG91bGREb1NhbWVEb2N1bWVudE5hdmln
YXRpb25UbygqbV9wcm92aXNpb25hbEl0ZW0pKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBD
b21taXQgdGhlIHByb3Zpc2lvbmFsIGl0ZW0uCi0gICAgc2V0Q3VycmVudEl0ZW0obV9wcm92aXNp
b25hbEl0ZW0uZ2V0KCkpOwotICAgIG1fcHJvdmlzaW9uYWxJdGVtID0gMDsKKyAgICBzZXRDdXJy
ZW50SXRlbSgqbV9wcm92aXNpb25hbEl0ZW0pOworICAgIG1fcHJvdmlzaW9uYWxJdGVtID0gbnVs
bHB0cjsKIAogICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgcmVzdCBvZiB0aGUgdHJlZS4KICAgICBm
b3IgKEZyYW1lKiBjaGlsZCA9IG1fZnJhbWUudHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPnRyZWUoKS5uZXh0U2libGluZygpKQpAQCAtNTc1LDExICs1NzQsMTEgQEAg
dm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yRnJhbWVMb2FkQ29tcGxldGVkKCkKICAg
ICBtX2ZyYW1lTG9hZENvbXBsZXRlID0gdHJ1ZTsKIH0KIAotdm9pZCBIaXN0b3J5Q29udHJvbGxl
cjo6c2V0Q3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCit2b2lkIEhpc3RvcnlDb250cm9s
bGVyOjpzZXRDdXJyZW50SXRlbShIaXN0b3J5SXRlbSYgaXRlbSkKIHsKICAgICBtX2ZyYW1lTG9h
ZENvbXBsZXRlID0gZmFsc2U7CiAgICAgbV9wcmV2aW91c0l0ZW0gPSBtX2N1cnJlbnRJdGVtOwot
ICAgIG1fY3VycmVudEl0ZW0gPSBpdGVtOworICAgIG1fY3VycmVudEl0ZW0gPSAmaXRlbTsKIH0K
IAogdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2V0Q3VycmVudEl0ZW1UaXRsZShjb25zdCBTdHJp
bmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKQEAgLTYxMCw3ICs2MDksNyBAQCB2b2lkIEhpc3RvcnlD
b250cm9sbGVyOjpzZXRQcm92aXNpb25hbEl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiAgICAgbV9w
cm92aXNpb25hbEl0ZW0gPSBpdGVtOwogfQogCi12b2lkIEhpc3RvcnlDb250cm9sbGVyOjppbml0
aWFsaXplSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKK3ZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6Omlu
aXRpYWxpemVJdGVtKEhpc3RvcnlJdGVtJiBpdGVtKQogewogICAgIERvY3VtZW50TG9hZGVyKiBk
b2N1bWVudExvYWRlciA9IG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBB
U1NFUlQoZG9jdW1lbnRMb2FkZXIpOwpAQCAtNjQyLDM0ICs2NDEsMzQgQEAgdm9pZCBIaXN0b3J5
Q29udHJvbGxlcjo6aW5pdGlhbGl6ZUl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiAgICAgU3RyaW5n
IHBhcmVudCA9IHBhcmVudEZyYW1lID8gcGFyZW50RnJhbWUtPnRyZWUoKS51bmlxdWVOYW1lKCkg
OiAiIjsKICAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIHRpdGxlID0gZG9jdW1lbnRMb2FkZXItPnRp
dGxlKCk7CiAKLSAgICBpdGVtLT5zZXRVUkwodXJsKTsKLSAgICBpdGVtLT5zZXRUYXJnZXQobV9m
cmFtZS50cmVlKCkudW5pcXVlTmFtZSgpKTsKLSAgICBpdGVtLT5zZXRQYXJlbnQocGFyZW50KTsK
KyAgICBpdGVtLnNldFVSTCh1cmwpOworICAgIGl0ZW0uc2V0VGFyZ2V0KG1fZnJhbWUudHJlZSgp
LnVuaXF1ZU5hbWUoKSk7CisgICAgaXRlbS5zZXRQYXJlbnQocGFyZW50KTsKICAgICAvLyBGSVhN
RTogc2hvdWxkIHN0b3JlIHRpdGxlIGRpcmVjdGlvbmFsaXR5IGluIGhpc3RvcnkgYXMgd2VsbC4K
LSAgICBpdGVtLT5zZXRUaXRsZSh0aXRsZS5zdHJpbmcoKSk7Ci0gICAgaXRlbS0+c2V0T3JpZ2lu
YWxVUkxTdHJpbmcob3JpZ2luYWxVUkwuc3RyaW5nKCkpOworICAgIGl0ZW0uc2V0VGl0bGUodGl0
bGUuc3RyaW5nKCkpOworICAgIGl0ZW0uc2V0T3JpZ2luYWxVUkxTdHJpbmcob3JpZ2luYWxVUkwu
c3RyaW5nKCkpOwogCiAgICAgaWYgKCF1bnJlYWNoYWJsZVVSTC5pc0VtcHR5KCkgfHwgZG9jdW1l
bnRMb2FkZXItPnJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDApCi0gICAgICAgIGl0
ZW0tPnNldExhc3RWaXNpdFdhc0ZhaWx1cmUodHJ1ZSk7CisgICAgICAgIGl0ZW0uc2V0TGFzdFZp
c2l0V2FzRmFpbHVyZSh0cnVlKTsKIAogICAgIC8vIFNhdmUgZm9ybSBzdGF0ZSBpZiB0aGlzIGlz
IGEgUE9TVAotICAgIGl0ZW0tPnNldEZvcm1JbmZvRnJvbVJlcXVlc3QoZG9jdW1lbnRMb2FkZXIt
PnJlcXVlc3QoKSk7CisgICAgaXRlbS5zZXRGb3JtSW5mb0Zyb21SZXF1ZXN0KGRvY3VtZW50TG9h
ZGVyLT5yZXF1ZXN0KCkpOwogfQogCi1QYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBIaXN0b3J5Q29u
dHJvbGxlcjo6Y3JlYXRlSXRlbSgpCitSZWY8SGlzdG9yeUl0ZW0+IEhpc3RvcnlDb250cm9sbGVy
OjpjcmVhdGVJdGVtKCkKIHsKLSAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBIaXN0b3J5
SXRlbTo6Y3JlYXRlKCk7Ci0gICAgaW5pdGlhbGl6ZUl0ZW0oaXRlbS5nZXQoKSk7CisgICAgUmVm
PEhpc3RvcnlJdGVtPiBpdGVtID0gSGlzdG9yeUl0ZW06OmNyZWF0ZSgpOworICAgIGluaXRpYWxp
emVJdGVtKGl0ZW0pOwogICAgIAogICAgIC8vIFNldCB0aGUgaXRlbSBmb3Igd2hpY2ggd2Ugd2ls
bCBzYXZlIGRvY3VtZW50IHN0YXRlCi0gICAgc2V0Q3VycmVudEl0ZW0oaXRlbS5nZXQoKSk7Cisg
ICAgc2V0Q3VycmVudEl0ZW0oaXRlbSk7CiAgICAgCi0gICAgcmV0dXJuIGl0ZW0ucmVsZWFzZSgp
OworICAgIHJldHVybiBpdGVtOwogfQogCi1QYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBIaXN0b3J5
Q29udHJvbGxlcjo6Y3JlYXRlSXRlbVRyZWUoRnJhbWUmIHRhcmdldEZyYW1lLCBib29sIGNsaXBB
dFRhcmdldCkKK1JlZjxIaXN0b3J5SXRlbT4gSGlzdG9yeUNvbnRyb2xsZXI6OmNyZWF0ZUl0ZW1U
cmVlKEZyYW1lJiB0YXJnZXRGcmFtZSwgYm9vbCBjbGlwQXRUYXJnZXQpCiB7Ci0gICAgUmVmUHRy
PEhpc3RvcnlJdGVtPiBiZkl0ZW0gPSBjcmVhdGVJdGVtKCk7CisgICAgUmVmPEhpc3RvcnlJdGVt
PiBiZkl0ZW0gPSBjcmVhdGVJdGVtKCk7CiAgICAgaWYgKCFtX2ZyYW1lTG9hZENvbXBsZXRlKQog
ICAgICAgICBzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0obV9wcmV2aW91c0l0
ZW0uZ2V0KCkpOwogCkBAIC03MTcsNyArNzE2LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6
cmVjdXJzaXZlU2V0UHJvdmlzaW9uYWxJdGVtKEhpc3RvcnlJdGVtJiBpdGVtLCBIaXN0b3J5SXQK
ICAgICAvLyBTZXQgcHJvdmlzaW9uYWwgaXRlbSwgd2hpY2ggd2lsbCBiZSBjb21taXR0ZWQgaW4g
cmVjdXJzaXZlVXBkYXRlRm9yQ29tbWl0LgogICAgIG1fcHJvdmlzaW9uYWxJdGVtID0gJml0ZW07
CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkSXRlbSA6IGl0ZW0uY2hpbGRyZW4oKSkgewor
ICAgIGZvciAoYXV0byYgY2hpbGRJdGVtIDogaXRlbS5jaGlsZHJlbigpKSB7CiAgICAgICAgIGNv
bnN0IFN0cmluZyYgY2hpbGRGcmFtZU5hbWUgPSBjaGlsZEl0ZW0tPnRhcmdldCgpOwogCiAgICAg
ICAgIEhpc3RvcnlJdGVtKiBmcm9tQ2hpbGRJdGVtID0gZnJvbUl0ZW0tPmNoaWxkSXRlbVdpdGhU
YXJnZXQoY2hpbGRGcmFtZU5hbWUpOwpAQCAtNzI1LDcgKzcyNCw3IEBAIHZvaWQgSGlzdG9yeUNv
bnRyb2xsZXI6OnJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFsSXRlbShIaXN0b3J5SXRlbSYgaXRlbSwg
SGlzdG9yeUl0CiAgICAgICAgIEZyYW1lKiBjaGlsZEZyYW1lID0gbV9mcmFtZS50cmVlKCkuY2hp
bGQoY2hpbGRGcmFtZU5hbWUpOwogICAgICAgICBBU1NFUlQoY2hpbGRGcmFtZSk7CiAKLSAgICAg
ICAgY2hpbGRGcmFtZS0+bG9hZGVyKCkuaGlzdG9yeSgpLnJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFs
SXRlbSgqY2hpbGRJdGVtLCBmcm9tQ2hpbGRJdGVtKTsKKyAgICAgICAgY2hpbGRGcmFtZS0+bG9h
ZGVyKCkuaGlzdG9yeSgpLnJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFsSXRlbShjb25zdF9jYXN0PEhp
c3RvcnlJdGVtJj4oY2hpbGRJdGVtLmdldCgpKSwgZnJvbUNoaWxkSXRlbSk7CiAgICAgfQogfQog
CkBAIC03MzksMTQgKzczOCwxNCBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZWN1cnNpdmVH
b1RvSXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgSGlzdG9yeUl0ZW0qIGZyb21JdAogICAgIH0KIAog
ICAgIC8vIEp1c3QgaXRlcmF0ZSBvdmVyIHRoZSByZXN0LCBsb29raW5nIGZvciBmcmFtZXMgdG8g
bmF2aWdhdGUuCi0gICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZEl0ZW0gOiBpdGVtLmNoaWxkcmVu
KCkpIHsKKyAgICBmb3IgKGF1dG8mIGNoaWxkSXRlbSA6IGl0ZW0uY2hpbGRyZW4oKSkgewogICAg
ICAgICBjb25zdCBTdHJpbmcmIGNoaWxkRnJhbWVOYW1lID0gY2hpbGRJdGVtLT50YXJnZXQoKTsK
IAogICAgICAgICBIaXN0b3J5SXRlbSogZnJvbUNoaWxkSXRlbSA9IGZyb21JdGVtLT5jaGlsZEl0
ZW1XaXRoVGFyZ2V0KGNoaWxkRnJhbWVOYW1lKTsKICAgICAgICAgQVNTRVJUKGZyb21DaGlsZEl0
ZW0pOwogICAgICAgICBGcmFtZSogY2hpbGRGcmFtZSA9IG1fZnJhbWUudHJlZSgpLmNoaWxkKGNo
aWxkRnJhbWVOYW1lKTsKICAgICAgICAgQVNTRVJUKGNoaWxkRnJhbWUpOwotICAgICAgICBjaGls
ZEZyYW1lLT5sb2FkZXIoKS5oaXN0b3J5KCkucmVjdXJzaXZlR29Ub0l0ZW0oKmNoaWxkSXRlbSwg
ZnJvbUNoaWxkSXRlbSwgdHlwZSk7CisgICAgICAgIGNoaWxkRnJhbWUtPmxvYWRlcigpLmhpc3Rv
cnkoKS5yZWN1cnNpdmVHb1RvSXRlbShjb25zdF9jYXN0PEhpc3RvcnlJdGVtJj4oY2hpbGRJdGVt
LmdldCgpKSwgZnJvbUNoaWxkSXRlbSwgdHlwZSk7CiAgICAgfQogfQogCkBAIC03NjMsNyArNzYy
LDcgQEAgYm9vbCBIaXN0b3J5Q29udHJvbGxlcjo6aXRlbXNBcmVDbG9uZXMoSGlzdG9yeUl0ZW0m
IGl0ZW0xLCBIaXN0b3J5SXRlbSogaXRlbTIpIGMKICAgICAgICAgJiYgJml0ZW0xICE9IGl0ZW0y
CiAgICAgICAgICYmIGl0ZW0xLml0ZW1TZXF1ZW5jZU51bWJlcigpID09IGl0ZW0yLT5pdGVtU2Vx
dWVuY2VOdW1iZXIoKQogICAgICAgICAmJiBjdXJyZW50RnJhbWVzTWF0Y2hJdGVtKCZpdGVtMSkK
LSAgICAgICAgJiYgaXRlbTItPmhhc1NhbWVGcmFtZXMoJml0ZW0xKTsKKyAgICAgICAgJiYgaXRl
bTItPmhhc1NhbWVGcmFtZXMoaXRlbTEpOwogfQogCiAvLyBIZWxwZXIgbWV0aG9kIHRoYXQgZGV0
ZXJtaW5lcyB3aGV0aGVyIHRoZSBjdXJyZW50IGZyYW1lIHRyZWUgbWF0Y2hlcyBnaXZlbiBoaXN0
b3J5IGl0ZW0ncy4KQEAgLTgwMSw5ICs4MDAsOSBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1
cGRhdGVCYWNrRm9yd2FyZExpc3RDbGlwcGVkQXRUYXJnZXQoYm9vbCBkb0NsaXApCiAKICAgICBG
cmFtZUxvYWRlciYgZnJhbWVMb2FkZXIgPSBtX2ZyYW1lLm1haW5GcmFtZSgpLmxvYWRlcigpOwog
Ci0gICAgUmVmUHRyPEhpc3RvcnlJdGVtPiB0b3BJdGVtID0gZnJhbWVMb2FkZXIuaGlzdG9yeSgp
LmNyZWF0ZUl0ZW1UcmVlKG1fZnJhbWUsIGRvQ2xpcCk7Ci0gICAgTE9HKEJhY2tGb3J3YXJkLCAi
V2ViQ29yZUJhY2tGb3J3YXJkIC0gQWRkaW5nIGJhY2tmb3J3YXJkIGl0ZW0gJXAgZm9yIGZyYW1l
ICVzIiwgdG9wSXRlbS5nZXQoKSwgbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51
cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgcGFnZS0+YmFja0ZvcndhcmQoKS5h
ZGRJdGVtKHRvcEl0ZW0ucmVsZWFzZSgpKTsKKyAgICBSZWY8SGlzdG9yeUl0ZW0+IHRvcEl0ZW0g
PSBmcmFtZUxvYWRlci5oaXN0b3J5KCkuY3JlYXRlSXRlbVRyZWUobV9mcmFtZSwgZG9DbGlwKTsK
KyAgICBMT0coQmFja0ZvcndhcmQsICJXZWJDb3JlQmFja0ZvcndhcmQgLSBBZGRpbmcgYmFja2Zv
cndhcmQgaXRlbSAlcCBmb3IgZnJhbWUgJXMiLCB0b3BJdGVtLnB0cigpLCBtX2ZyYW1lLmxvYWRl
cigpLmRvY3VtZW50TG9hZGVyKCktPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAg
ICBwYWdlLT5iYWNrRm9yd2FyZCgpLmFkZEl0ZW0oV1RGOjptb3ZlKHRvcEl0ZW0pKTsKIH0KIAog
dm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlQ3VycmVudEl0ZW0oKQpAQCAtODIzLDcgKzgy
Miw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUN1cnJlbnRJdGVtKCkKICAgICAg
ICAgLy8gZGVwZW5kZW50IG9uIHRoZSBkb2N1bWVudC4KICAgICAgICAgYm9vbCBpc1RhcmdldEl0
ZW0gPSBtX2N1cnJlbnRJdGVtLT5pc1RhcmdldEl0ZW0oKTsKICAgICAgICAgbV9jdXJyZW50SXRl
bS0+cmVzZXQoKTsKLSAgICAgICAgaW5pdGlhbGl6ZUl0ZW0obV9jdXJyZW50SXRlbS5nZXQoKSk7
CisgICAgICAgIGluaXRpYWxpemVJdGVtKCptX2N1cnJlbnRJdGVtKTsKICAgICAgICAgbV9jdXJy
ZW50SXRlbS0+c2V0SXNUYXJnZXRJdGVtKGlzVGFyZ2V0SXRlbSk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgLy8gRXZlbiBpZiB0aGUgZmluYWwgVVJMIGRpZG4ndCBjaGFuZ2UsIHRoZSBmb3JtIGRh
dGEgbWF5IGhhdmUgY2hhbmdlZC4KQEAgLTg0MCw3ICs4MzksNyBAQCB2b2lkIEhpc3RvcnlDb250
cm9sbGVyOjpwdXNoU3RhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRl
T2JqZWN0LAogICAgIEFTU0VSVChwYWdlKTsKIAogICAgIC8vIEdldCBhIEhpc3RvcnlJdGVtIHRy
ZWUgZm9yIHRoZSBjdXJyZW50IGZyYW1lIHRyZWUuCi0gICAgUmVmUHRyPEhpc3RvcnlJdGVtPiB0
b3BJdGVtID0gbV9mcmFtZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5oaXN0b3J5KCkuY3JlYXRlSXRl
bVRyZWUobV9mcmFtZSwgZmFsc2UpOworICAgIFJlZjxIaXN0b3J5SXRlbT4gdG9wSXRlbSA9IG1f
ZnJhbWUubWFpbkZyYW1lKCkubG9hZGVyKCkuaGlzdG9yeSgpLmNyZWF0ZUl0ZW1UcmVlKG1fZnJh
bWUsIGZhbHNlKTsKICAgICAKICAgICAvLyBPdmVycmlkZSBkYXRhIGluIHRoZSBjdXJyZW50IGl0
ZW0gKGNyZWF0ZWQgYnkgY3JlYXRlSXRlbVRyZWUpIHRvIHJlZmxlY3QKICAgICAvLyB0aGUgcHVz
aFN0YXRlKCkgYXJndW1lbnRzLgpAQCAtODQ4LDcgKzg0Nyw3IEBAIHZvaWQgSGlzdG9yeUNvbnRy
b2xsZXI6OnB1c2hTdGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVP
YmplY3QsCiAgICAgbV9jdXJyZW50SXRlbS0+c2V0U3RhdGVPYmplY3Qoc3RhdGVPYmplY3QpOwog
ICAgIG1fY3VycmVudEl0ZW0tPnNldFVSTFN0cmluZyh1cmxTdHJpbmcpOwogCi0gICAgcGFnZS0+
YmFja0ZvcndhcmQoKS5hZGRJdGVtKHRvcEl0ZW0ucmVsZWFzZSgpKTsKKyAgICBwYWdlLT5iYWNr
Rm9yd2FyZCgpLmFkZEl0ZW0oV1RGOjptb3ZlKHRvcEl0ZW0pKTsKIAogICAgIGlmIChtX2ZyYW1l
LnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaAppbmRleCAxYjQwYTgwYjBlMzI3MThi
MzNlZmI0MjJhYWZlNjc2ZmJjM2M3ZmU4Li5lMzk1MmM2NTU5NDMyZTc4YmE5ZDU3ZDYwMDc5Mjgy
MGE2ZjA4NzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaApA
QCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVGb3JGcmFtZUxvYWRDb21w
bGV0ZWQoKTsKIAogICAgIEhpc3RvcnlJdGVtKiBjdXJyZW50SXRlbSgpIGNvbnN0IHsgcmV0dXJu
IG1fY3VycmVudEl0ZW0uZ2V0KCk7IH0KLSAgICB2b2lkIHNldEN1cnJlbnRJdGVtKEhpc3RvcnlJ
dGVtKik7CisgICAgdm9pZCBzZXRDdXJyZW50SXRlbShIaXN0b3J5SXRlbSYpOwogICAgIHZvaWQg
c2V0Q3VycmVudEl0ZW1UaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJik7CiAgICAgYm9v
bCBjdXJyZW50SXRlbVNob3VsZEJlUmVwbGFjZWQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlcGxhY2VDdXJyZW50SXRlbShIaXN0b3J5SXRlbSopOwpAQCAtOTIsMTIgKzkyLDEy
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUGFnZTsKLSAgICBib29s
IHNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdDsKKyAg
ICBib29sIHNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0mKSBjb25z
dDsKICAgICB2b2lkIGdvVG9JdGVtKEhpc3RvcnlJdGVtJiwgRnJhbWVMb2FkVHlwZSk7CiAKLSAg
ICB2b2lkIGluaXRpYWxpemVJdGVtKEhpc3RvcnlJdGVtKik7Ci0gICAgUGFzc1JlZlB0cjxIaXN0
b3J5SXRlbT4gY3JlYXRlSXRlbSgpOwotICAgIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGNyZWF0
ZUl0ZW1UcmVlKEZyYW1lJiB0YXJnZXRGcmFtZSwgYm9vbCBjbGlwQXRUYXJnZXQpOworICAgIHZv
aWQgaW5pdGlhbGl6ZUl0ZW0oSGlzdG9yeUl0ZW0mKTsKKyAgICBSZWY8SGlzdG9yeUl0ZW0+IGNy
ZWF0ZUl0ZW0oKTsKKyAgICBSZWY8SGlzdG9yeUl0ZW0+IGNyZWF0ZUl0ZW1UcmVlKEZyYW1lJiB0
YXJnZXRGcmFtZSwgYm9vbCBjbGlwQXRUYXJnZXQpOwogCiAgICAgdm9pZCByZWN1cnNpdmVTZXRQ
cm92aXNpb25hbEl0ZW0oSGlzdG9yeUl0ZW0mLCBIaXN0b3J5SXRlbSopOwogICAgIHZvaWQgcmVj
dXJzaXZlR29Ub0l0ZW0oSGlzdG9yeUl0ZW0mLCBIaXN0b3J5SXRlbSosIEZyYW1lTG9hZFR5cGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMjdjMDRiNTk1OGRjYmFmMmRiNTVmNmZiZTIzYTUxN2Jm
NmQyMTU1Mi4uMDZiOTFiYWYwY2U4OTE2OTExNmMyMTViYWNiNGJkMThkYjg1OTk0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCkBAIC00MzYsNyArNDM2LDcgQEAgdm9pZCBQYWdlOjpnb1RvSXRlbShIaXN0
b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSB0eXBlKQogICAgIC8vIGJlaW5nIGRlcmVmKCkt
ZWQuIE1ha2Ugc3VyZSB3ZSBjYW4gc3RpbGwgdXNlIGl0IHdpdGggSGlzdG9yeUNvbnRyb2xsZXI6
OmdvVG9JdGVtIGxhdGVyLgogICAgIFJlZjxIaXN0b3J5SXRlbT4gcHJvdGVjdG9yKGl0ZW0pOwog
Ci0gICAgaWYgKG1fbWFpbkZyYW1lLT5sb2FkZXIoKS5oaXN0b3J5KCkuc2hvdWxkU3RvcExvYWRp
bmdGb3JIaXN0b3J5SXRlbSgmaXRlbSkpCisgICAgaWYgKG1fbWFpbkZyYW1lLT5sb2FkZXIoKS5o
aXN0b3J5KCkuc2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbShpdGVtKSkKICAgICAgICAg
bV9tYWluRnJhbWUtPmxvYWRlcigpLnN0b3BBbGxMb2FkZXJzKCk7CiAKICAgICBtX21haW5GcmFt
ZS0+bG9hZGVyKCkuaGlzdG9yeSgpLmdvVG9JdGVtKGl0ZW0sIHR5cGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbQppbmRleCBlYmZiZDRkMDA0
MTAyM2MyNWMyYzY5ZTg0NzkwODJjOGM0MjYzNTdmLi5lOTcwNTI0ZDJjZWQyNjljZjgzYzQyY2Qw
MDYyMzYxMWNlZWE5MWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dl
YkJhY2tGb3J3YXJkTGlzdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkJh
Y2tGb3J3YXJkTGlzdC5tbQpAQCAtMTUzLDcgKzE1Myw4IEBAIC0gKHZvaWQpX2Nsb3NlCiAKIC0g
KHZvaWQpYWRkSXRlbTooV2ViSGlzdG9yeUl0ZW0gKillbnRyeQogewotICAgIGNvcmUoc2VsZikt
PmFkZEl0ZW0oY29yZShlbnRyeSkpOworICAgIEFTU0VSVChlbnRyeSk7CisgICAgY29yZShzZWxm
KS0+YWRkSXRlbSgqY29yZShlbnRyeSkpOwogICAgIAogICAgIC8vIFNpbmNlIHRoZSBhc3N1bWVk
IGNvbnRyYWN0IHdpdGggV2ViQmFja0ZvcndhcmRMaXN0IGlzIHRoYXQgaXQgcmV0YWlucyBpdHMg
V2ViSGlzdG9yeUl0ZW1zLAogICAgIC8vIHRoZSBmb2xsb3dpbmcgbGluZSBwcmV2ZW50cyBhIHdo
b2xlIGNsYXNzIG9mIHByb2JsZW1zIHdoZXJlIGEgaGlzdG9yeSBpdGVtIHdpbGwgYmUgY3JlYXRl
ZCBpbgpAQCAtMTc4LDExICsxNzksMTEgQEAgLSAoTlNEaWN0aW9uYXJ5ICopZGljdGlvbmFyeVJl
cHJlc2VudGF0aW9uCiB7CiAgICAgQmFja0ZvcndhcmRMaXN0ICpjb3JlQkZMaXN0ID0gY29yZShz
ZWxmKTsKICAgICAKLSAgICBIaXN0b3J5SXRlbVZlY3RvciBoaXN0b3J5SXRlbXMgPSBjb3JlQkZM
aXN0LT5lbnRyaWVzKCk7CisgICAgSGlzdG9yeUl0ZW1WZWN0b3ImIGhpc3RvcnlJdGVtcyA9IGNv
cmVCRkxpc3QtPmVudHJpZXMoKTsKICAgICB1bnNpZ25lZCBzaXplID0gaGlzdG9yeUl0ZW1zLnNp
emUoKTsKICAgICBOU011dGFibGVBcnJheSAqZW50cmllc0FycmF5ID0gW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpzaXplXTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbZW50cmllc0FycmF5IGFkZE9iamVjdDpba2l0KGhp
c3RvcnlJdGVtc1tpXS5nZXQoKSkgZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uSW5jbHVkaW5nQ2hp
bGRyZW46Tk9dXTsKKyAgICAgICAgW2VudHJpZXNBcnJheSBhZGRPYmplY3Q6W2tpdChoaXN0b3J5
SXRlbXNbaV0ucHRyKCkpIGRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbkluY2x1ZGluZ0NoaWxkcmVu
Ok5PXV07CiAgICAgCiAgICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW05TRGljdGlvbmFy
eSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgogICAgICAgICBlbnRyaWVzQXJyYXksIFdl
YkJhY2tGb3J3YXJkTGlzdERpY3Rpb25hcnlFbnRyaWVzS2V5LApAQCAtMjAzLDcgKzIwNCw3IEBA
IC0gKHZvaWQpc2V0VG9NYXRjaERpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjooTlNEaWN0aW9uYXJ5
ICopZGljdGlvbmFyeQogICAgIAogICAgIGZvciAoTlNEaWN0aW9uYXJ5ICppdGVtRGljdGlvbmFy
eSBpbiBbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V2ViQmFja0ZvcndhcmRMaXN0RGljdGlvbmFy
eUVudHJpZXNLZXldKSB7CiAgICAgICAgIFdlYkhpc3RvcnlJdGVtICppdGVtID0gW1tXZWJIaXN0
b3J5SXRlbSBhbGxvY10gaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246aXRlbURpY3Rp
b25hcnldOwotICAgICAgICBjb3JlQkZMaXN0LT5hZGRJdGVtKGNvcmUoaXRlbSkpOworICAgICAg
ICBjb3JlQkZMaXN0LT5hZGRJdGVtKCpjb3JlKGl0ZW0pKTsKICAgICAgICAgW2l0ZW0gcmVsZWFz
ZV07CiAgICAgfQogCkBAIC0yNTUsNyArMjU2LDcgQEAgc3RhdGljIE5TQXJyYXkqIHZlY3RvclRv
TlNBcnJheShIaXN0b3J5SXRlbVZlY3RvciYgbGlzdCkKICAgICB1bnNpZ25lZCBzaXplID0gbGlz
dC5zaXplKCk7CiAgICAgTlNNdXRhYmxlQXJyYXkgKnJlc3VsdCA9IFtbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnNpemVdIGF1dG9yZWxlYXNlXTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVzdWx0IGFkZE9iamVjdDpr
aXQobGlzdFtpXS5nZXQoKSldOworICAgICAgICBbcmVzdWx0IGFkZE9iamVjdDpraXQobGlzdFtp
XS5wdHIoKSldOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTMyNywxNCArMzI4LDE0IEBA
IC0oTlNTdHJpbmcgKilkZXNjcmlwdGlvbgogICAgIAogICAgIHVuc2lnbmVkIHNpemUgPSBlbnRy
aWVzLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0g
ICAgICAgIGlmIChlbnRyaWVzW2ldID09IGJhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSkg
eworICAgICAgICBpZiAoZW50cmllc1tpXS5wdHIoKSA9PSBiYWNrRm9yd2FyZExpc3QtPmN1cnJl
bnRJdGVtKCkpIHsKICAgICAgICAgICAgIFtyZXN1bHQgYXBwZW5kU3RyaW5nOkAiID4+PiJdOyAK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFtyZXN1bHQgYXBwZW5kU3RyaW5nOkAiICAg
ICJdOyAKICAgICAgICAgfSAgIAogICAgICAgICBbcmVzdWx0IGFwcGVuZEZvcm1hdDpAIiUyZCkg
IiwgaV07CiAgICAgICAgIGludCBjdXJyUG9zID0gW3Jlc3VsdCBsZW5ndGhdOwotICAgICAgICBb
cmVzdWx0IGFwcGVuZFN0cmluZzpba2l0KGVudHJpZXNbaV0uZ2V0KCkpIGRlc2NyaXB0aW9uXV07
CisgICAgICAgIFtyZXN1bHQgYXBwZW5kU3RyaW5nOltraXQoZW50cmllc1tpXS5wdHIoKSkgZGVz
Y3JpcHRpb25dXTsKIAogICAgICAgICAvLyBzaGlmdCBhbGwgdGhlIGNvbnRlbnRzIG92ZXIuICBh
IGJpdCBzbG93LCBidXQgdGhpcyBpcyBmb3IgZGVidWdnaW5nCiAgICAgICAgIE5TUmFuZ2UgcmVw
bFJhbmdlID0geyBzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihjdXJyUG9zKSwgW3Jlc3VsdCBsZW5n
dGhdIC0gY3VyclBvcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9X
ZWJIaXN0b3J5SXRlbS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0
ZW0ubW0KaW5kZXggZTY3N2IwMWU3M2JkY2YyMjdiMjhmNDFmODhjYTE2MTk1ZDk1ZGMzYi4uYWU3
NjAxZmNkNzFkMTM4NjA2OTE1MzNlNTUwMjdkNGVmM2E2MmJiZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCkBAIC0yNTgsNyArMjU4LDcgQEAgLSAoTlNT
dHJpbmcgKilkZXNjcmlwdGlvbgogICAgICAgICBpbnQgY3VyclBvcyA9IFtyZXN1bHQgbGVuZ3Ro
XTsKICAgICAgICAgdW5zaWduZWQgc2l6ZSA9IGNoaWxkcmVuLnNpemUoKTsgICAgICAgIAogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICBX
ZWJIaXN0b3J5SXRlbSAqY2hpbGQgPSBraXQoY2hpbGRyZW5baV0uZ2V0KCkpOworICAgICAgICAg
ICAgV2ViSGlzdG9yeUl0ZW0gKmNoaWxkID0ga2l0KGNvbnN0X2Nhc3Q8SGlzdG9yeUl0ZW0qPihj
aGlsZHJlbltpXS5wdHIoKSkpOwogICAgICAgICAgICAgW3Jlc3VsdCBhcHBlbmRTdHJpbmc6QCJc
biJdOwogICAgICAgICAgICAgW3Jlc3VsdCBhcHBlbmRTdHJpbmc6W2NoaWxkIGRlc2NyaXB0aW9u
XV07CiAgICAgICAgIH0KQEAgLTM4MCw3ICszODAsNyBAQCAtIChpZClpbml0RnJvbURpY3Rpb25h
cnlSZXByZXNlbnRhdGlvbjooTlNEaWN0aW9uYXJ5ICopZGljdAogICAgIGlmIChjaGlsZERpY3Rz
KSB7CiAgICAgICAgIGZvciAoaW50IGkgPSBbY2hpbGREaWN0cyBjb3VudF0gLSAxOyBpID49IDA7
IGktLSkgewogICAgICAgICAgICAgV2ViSGlzdG9yeUl0ZW0gKmNoaWxkID0gW1tXZWJIaXN0b3J5
SXRlbSBhbGxvY10gaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246W2NoaWxkRGljdHMg
b2JqZWN0QXRJbmRleDppXV07Ci0gICAgICAgICAgICBjb3JlKF9wcml2YXRlKS0+YWRkQ2hpbGRJ
dGVtKGNvcmUoY2hpbGQtPl9wcml2YXRlKSk7CisgICAgICAgICAgICBjb3JlKF9wcml2YXRlKS0+
YWRkQ2hpbGRJdGVtKCpjb3JlKGNoaWxkLT5fcHJpdmF0ZSkpOwogICAgICAgICAgICAgW2NoaWxk
IHJlbGVhc2VdOwogICAgICAgICB9CiAgICAgfQpAQCAtNDgxLDcgKzQ4MSw3IEBAIC0gKE5TRGlj
dGlvbmFyeSAqKWRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbgogICAgICAgICBOU011dGFibGVBcnJh
eSAqY2hpbGREaWN0cyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpjaGlsZHJl
bi5zaXplKCldOwogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IGNoaWxkcmVuLnNpemUo
KSAtIDE7IGkgPj0gMDsgaS0tKQotICAgICAgICAgICAgW2NoaWxkRGljdHMgYWRkT2JqZWN0Oltr
aXQoY2hpbGRyZW5baV0uZ2V0KCkpIGRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbl1dOworICAgICAg
ICAgICAgW2NoaWxkRGljdHMgYWRkT2JqZWN0OltraXQoY29uc3RfY2FzdDxIaXN0b3J5SXRlbSo+
KGNoaWxkcmVuW2ldLnB0cigpKSkgZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uXV07CiAgICAgICAg
IFtkaWN0IHNldE9iamVjdDogY2hpbGREaWN0cyBmb3JLZXk6Y2hpbGRyZW5LZXldOwogICAgIH0K
IApAQCAtNTQxLDcgKzU0MSw3IEBAIC0gKE5TQXJyYXkgKiljaGlsZHJlbgogICAgIE5TTXV0YWJs
ZUFycmF5ICpyZXN1bHQgPSBbW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0
eTpzaXplXSBhdXRvcmVsZWFzZV07CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHNpemU7ICsraSkKLSAgICAgICAgW3Jlc3VsdCBhZGRPYmplY3Q6a2l0KGNoaWxkcmVuW2ldLmdl
dCgpKV07CisgICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0OmtpdChjb25zdF9jYXN0PEhpc3RvcnlJ
dGVtKj4oY2hpbGRyZW5baV0ucHRyKCkpKV07CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA3NGFkNTVhOTQ2ZWQ4ZTM5NzA0
YTZkZDNiYTg0OGFiYzg4MDEwZWEyLi40ODNjYTBlZTE0ZmVjNjA5MWEyM2RmZTZiMGRhMjhkOTA5
N2U0OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0yMDAyLDEwICsy
MDAyLDEwIEBAIC0gKHZvaWQpX2xvYWRCYWNrRm9yd2FyZExpc3RGcm9tT3RoZXJWaWV3OihXZWJW
aWV3ICopb3RoZXJWaWV3CiAgICAgICAgICAgICAvLyB1bnRpbCB3ZSBsZWF2ZSB0aGF0IHBhZ2Uu
CiAgICAgICAgICAgICBvdGhlclZpZXctPl9wcml2YXRlLT5wYWdlLT5tYWluRnJhbWUoKS5sb2Fk
ZXIoKS5oaXN0b3J5KCkuc2F2ZURvY3VtZW50QW5kU2Nyb2xsU3RhdGUoKTsKICAgICAgICAgfQot
ICAgICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IG5ld0l0ZW0gPSBvdGhlckJhY2tGb3J3YXJkQ2xp
ZW50LT5pdGVtQXRJbmRleChpKS0+Y29weSgpOworICAgICAgICBSZWY8SGlzdG9yeUl0ZW0+IG5l
d0l0ZW0gPSBvdGhlckJhY2tGb3J3YXJkQ2xpZW50LT5pdGVtQXRJbmRleChpKS0+Y29weSgpOwog
ICAgICAgICBpZiAoaSA9PSAwKSAKLSAgICAgICAgICAgIG5ld0l0ZW1Ub0dvVG8gPSBuZXdJdGVt
LmdldCgpOwotICAgICAgICBiYWNrRm9yd2FyZENsaWVudC0+YWRkSXRlbShuZXdJdGVtLnJlbGVh
c2UoKSk7CisgICAgICAgICAgICBuZXdJdGVtVG9Hb1RvID0gbmV3SXRlbS5wdHIoKTsKKyAgICAg
ICAgYmFja0ZvcndhcmRDbGllbnQtPmFkZEl0ZW0oV1RGOjptb3ZlKG5ld0l0ZW0pKTsKICAgICB9
CiAgICAgCiAgICAgQVNTRVJUKG5ld0l0ZW1Ub0dvVG8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkJh
Y2tGb3J3YXJkTGlzdC5jcHAKaW5kZXggYTEzOTU4NDkyNjE0YTFlYmE3NzhmOTE2OTkwNjhlZjhi
NDdjZDljZC4uOTRiNWExYmZkZjBkZDcxYzg5NDViNWUyMjNhMWQ5NmU2YjIwNzZmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJCYWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0oCiAg
ICAgaWYgKCFpdGVtIHx8IEZBSUxFRChpdGVtLT5RdWVyeUludGVyZmFjZSgmd2ViSGlzdG9yeUl0
ZW0pKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAKLSAgICBtX2JhY2tGb3J3YXJkTGlzdC0+
YWRkSXRlbSh3ZWJIaXN0b3J5SXRlbS0+aGlzdG9yeUl0ZW0oKSk7CisgICAgbV9iYWNrRm9yd2Fy
ZExpc3QtPmFkZEl0ZW0oKndlYkhpc3RvcnlJdGVtLT5oaXN0b3J5SXRlbSgpKTsKICAgICByZXR1
cm4gU19PSzsKIH0KIApAQCAtMjA5LDcgKzIwOSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViQmFja0ZvcndhcmRMaXN0OjpiYWNrTGlzdFdpdGhMaW1pdCgKIAogICAgIGlmIChsaXN0
KQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaGlzdG9yeUl0ZW1WZWN0b3Iuc2l6
ZSgpOyBpKyspCi0gICAgICAgICAgICBsaXN0W2ldID0gV2ViSGlzdG9yeUl0ZW06OmNyZWF0ZUlu
c3RhbmNlKGhpc3RvcnlJdGVtVmVjdG9yW2ldLmdldCgpKTsKKyAgICAgICAgICAgIGxpc3RbaV0g
PSBXZWJIaXN0b3J5SXRlbTo6Y3JlYXRlSW5zdGFuY2UoaGlzdG9yeUl0ZW1WZWN0b3JbaV0ucHRy
KCkpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0yMjYsNyArMjI2LDcgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0V2l0aExpbWl0
KAogCiAgICAgaWYgKGxpc3QpCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBoaXN0
b3J5SXRlbVZlY3Rvci5zaXplKCk7IGkrKykKLSAgICAgICAgICAgIGxpc3RbaV0gPSBXZWJIaXN0
b3J5SXRlbTo6Y3JlYXRlSW5zdGFuY2UoaGlzdG9yeUl0ZW1WZWN0b3JbaV0uZ2V0KCkpOworICAg
ICAgICAgICAgbGlzdFtpXSA9IFdlYkhpc3RvcnlJdGVtOjpjcmVhdGVJbnN0YW5jZShoaXN0b3J5
SXRlbVZlY3RvcltpXS5wdHIoKSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkhpc3RvcnlJdGVtLmNwcAppbmRleCA2OGY1MTM4MmVlNTI1MDVjODM5MmZiMDZlZWQzN2Vj
ZGMyZjdiNjhlLi5lMjQ3Nzg0ZTVlYzI3NmE5NjZiNTQ4ZjJkMzNiZmY5M2Q1YTNhZjBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCkBAIC0yODYsNyArMjg2LDcgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5SXRlbTo6Y2hpbGRyZW4odW5zaWduZWQqIG91
dENoaWxkQ291bnQsIFNBRkUKICAgICAgICAgcmV0dXJuIEVfT1VUT0ZNRU1PUlk7CiAKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2hpbGRDb3VudDsgKytpKSB7Ci0gICAgICAgIENPTVB0
cjxXZWJIaXN0b3J5SXRlbT4gaXRlbShBZG9wdENPTSwgV2ViSGlzdG9yeUl0ZW06OmNyZWF0ZUlu
c3RhbmNlKGNvcmVDaGlsZHJlbltpXSkpOworICAgICAgICBDT01QdHI8V2ViSGlzdG9yeUl0ZW0+
IGl0ZW0oQWRvcHRDT00sIFdlYkhpc3RvcnlJdGVtOjpjcmVhdGVJbnN0YW5jZShjb25zdF9jYXN0
PEhpc3RvcnlJdGVtKj4oY29yZUNoaWxkcmVuW2ldLnB0cigpKSkpOwogICAgICAgICBpZiAoIWl0
ZW0pIHsKICAgICAgICAgICAgIFNhZmVBcnJheURlc3Ryb3koY2hpbGRyZW4pOwogICAgICAgICAg
ICAgcmV0dXJuIEVfT1VUT0ZNRU1PUlk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IDk5ZDM1M2Mw
MDk3ZjI4MDM1OGViZGMzNWYwZTAwZTMwZTI2NGFiYmUuLjdhZTAyYzA1OTM4NzA1ZmYyOWJlYmJh
OTNkNTczY2Q2MDE1YTczOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC01NDg5LDEwICs1NDg5
LDEwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6bG9hZEJhY2tGb3J3YXJk
TGlzdEZyb21PdGhlclZpZXcoCiAgICAgICAgICAgICAvLyB1bnRpbCB3ZSBsZWF2ZSB0aGF0IHBh
Z2UuCiAgICAgICAgICAgICBvdGhlcldlYlZpZXctPm1fcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVy
KCkuaGlzdG9yeSgpLnNhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlKCk7CiAgICAgICAgIH0KLSAg
ICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBuZXdJdGVtID0gb3RoZXJCYWNrRm9yd2FyZENsaWVu
dC0+aXRlbUF0SW5kZXgoaSktPmNvcHkoKTsKKyAgICAgICAgUmVmPEhpc3RvcnlJdGVtPiBuZXdJ
dGVtID0gb3RoZXJCYWNrRm9yd2FyZENsaWVudC0+aXRlbUF0SW5kZXgoaSktPmNvcHkoKTsKICAg
ICAgICAgaWYgKCFpKSAKLSAgICAgICAgICAgIG5ld0l0ZW1Ub0dvVG8gPSBuZXdJdGVtLmdldCgp
OwotICAgICAgICBiYWNrRm9yd2FyZENsaWVudC0+YWRkSXRlbShuZXdJdGVtLnJlbGVhc2UoKSk7
CisgICAgICAgICAgICBuZXdJdGVtVG9Hb1RvID0gbmV3SXRlbS5wdHIoKTsKKyAgICAgICAgYmFj
a0ZvcndhcmRDbGllbnQtPmFkZEl0ZW0oV1RGOjptb3ZlKG5ld0l0ZW0pKTsKICAgICB9CiAgICAg
CiAgICAgQVNTRVJUKG5ld0l0ZW1Ub0dvVG8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0
ZW0uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCmluZGV4IDI4OTE5MzUzZWVlMGNjZjUzMDhm
ODU4MzIwNmFhNDA3ODE0YTBiYzAuLmFhZTZhNDZhZTYzMmY4YjU0YzNkNzI1N2Y2NGNmMjAyOTJm
NjkwMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRM
aXN0SXRlbS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUGFzc1JlZlB0cjxBUEk6OkFycmF5PiBJbmpl
Y3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW06OmNoaWxkcmVuKCkgY29uc3QKICAgICBjaGls
ZHJlbi5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1faXRlbS0+Y2hpbGRyZW4oKS5zaXplKCkpOwog
CiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IG1faXRlbS0+Y2hpbGRyZW4oKSkKLSAgICAg
ICAgY2hpbGRyZW4udW5jaGVja2VkQXBwZW5kKEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0
SXRlbTo6Y3JlYXRlKGNoaWxkKSk7CisgICAgICAgIGNoaWxkcmVuLnVuY2hlY2tlZEFwcGVuZChJ
bmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShjb25zdF9jYXN0PEhpc3Rv
cnlJdGVtKj4oY2hpbGQucHRyKCkpKSk7CiAKICAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRl
KFdURjo6bW92ZShjaGlsZHJlbikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lv
bi5jcHAKaW5kZXggYjA5NDA5OThmZjA1MDdkMGE0ZTNjNDRkNGI1MmQ0ODM2MWRmYzBjOC4uZmQw
YTk4ZTg0NzU5NGMzNDIwN2EyODViYjZlYzMwNTdmZDU4MzQ5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Np
b25TdGF0ZUNvbnZlcnNpb24uY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIEZyYW1lU3Rh
dGUgdG9GcmFtZVN0YXRlKGNvbnN0IEhpc3RvcnlJdGVtJiBoaXN0b3J5SXRlbSkKICNlbmRpZgog
CiAgICAgZm9yIChhdXRvJiBjaGlsZEhpc3RvcnlJdGVtIDogaGlzdG9yeUl0ZW0uY2hpbGRyZW4o
KSkgewotICAgICAgICBGcmFtZVN0YXRlIGNoaWxkRnJhbWVTdGF0ZSA9IHRvRnJhbWVTdGF0ZSgq
Y2hpbGRIaXN0b3J5SXRlbSk7CisgICAgICAgIEZyYW1lU3RhdGUgY2hpbGRGcmFtZVN0YXRlID0g
dG9GcmFtZVN0YXRlKGNoaWxkSGlzdG9yeUl0ZW0pOwogICAgICAgICBmcmFtZVN0YXRlLmNoaWxk
cmVuLmFwcGVuZChXVEY6Om1vdmUoY2hpbGRGcmFtZVN0YXRlKSk7CiAgICAgfQogCkBAIC0xNzgs
MTAgKzE3OCwxMCBAQCBzdGF0aWMgdm9pZCBhcHBseUZyYW1lU3RhdGUoSGlzdG9yeUl0ZW0mIGhp
c3RvcnlJdGVtLCBjb25zdCBGcmFtZVN0YXRlJiBmcmFtZVN0YQogI2VuZGlmCiAKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGNoaWxkRnJhbWVTdGF0ZSA6IGZyYW1lU3RhdGUuY2hpbGRyZW4pIHsKLSAg
ICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBjaGlsZEhpc3RvcnlJdGVtID0gSGlzdG9yeUl0ZW06
OmNyZWF0ZShjaGlsZEZyYW1lU3RhdGUudXJsU3RyaW5nLCBTdHJpbmcoKSk7Ci0gICAgICAgIGFw
cGx5RnJhbWVTdGF0ZSgqY2hpbGRIaXN0b3J5SXRlbSwgY2hpbGRGcmFtZVN0YXRlKTsKKyAgICAg
ICAgUmVmPEhpc3RvcnlJdGVtPiBjaGlsZEhpc3RvcnlJdGVtID0gSGlzdG9yeUl0ZW06OmNyZWF0
ZShjaGlsZEZyYW1lU3RhdGUudXJsU3RyaW5nLCBTdHJpbmcoKSk7CisgICAgICAgIGFwcGx5RnJh
bWVTdGF0ZShjaGlsZEhpc3RvcnlJdGVtLCBjaGlsZEZyYW1lU3RhdGUpOwogCi0gICAgICAgIGhp
c3RvcnlJdGVtLmFkZENoaWxkSXRlbShjaGlsZEhpc3RvcnlJdGVtLnJlbGVhc2UoKSk7CisgICAg
ICAgIGhpc3RvcnlJdGVtLmFkZENoaWxkSXRlbShXVEY6Om1vdmUoY2hpbGRIaXN0b3J5SXRlbSkp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKaW5kZXggYTljNjc3OTA1NmI5
MmQ2MGQ0OTRiNTE1ODlmMzRkNTMxNDU4OGNmNi4uOWRjMmE2MWQ4MmI4ODkxODRiYzMxNjM1MTVk
NDAwZTM1YWQ3NGVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCkBAIC0xNDMsMTEgKzE0
Myw5IEBAIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpXZWJCYWNrRm9yd2FyZExpc3RQcm94eShX
ZWJQYWdlKiBwYWdlKQogICAgIFdlYkNvcmU6Om5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZCA9IFdL
Mk5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZDsKIH0KIAotdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQ
cm94eTo6YWRkSXRlbShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBwcnBJdGVtKQordm9pZCBXZWJC
YWNrRm9yd2FyZExpc3RQcm94eTo6YWRkSXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYgaXRlbSkKIHsK
LSAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBwcnBJdGVtOwotCi0gICAgQVNTRVJUKCFo
aXN0b3J5SXRlbVRvSURNYXAoKS5jb250YWlucyhpdGVtKSk7CisgICAgQVNTRVJUKCFoaXN0b3J5
SXRlbVRvSURNYXAoKS5jb250YWlucyhpdGVtLnB0cigpKSk7CiAKICAgICBpZiAoIW1fcGFnZSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTU4LDEwICsxNTYsMTAgQEAgdm9pZCBXZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eTo6YWRkSXRlbShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBwcnBJdGVtKQogCiAg
ICAgbV9hc3NvY2lhdGVkSXRlbUlEcy5hZGQoaXRlbUlEKTsKIAotICAgIGhpc3RvcnlJdGVtVG9J
RE1hcCgpLnNldDxJdGVtQW5kUGFnZUlEPihpdGVtLCB7IC5pdGVtSUQgPSBpdGVtSUQsIC5wYWdl
SUQgPSBtX3BhZ2UtPnBhZ2VJRCgpIH0pOwotICAgIGlkVG9IaXN0b3J5SXRlbU1hcCgpLnNldChp
dGVtSUQsIGl0ZW0pOworICAgIGhpc3RvcnlJdGVtVG9JRE1hcCgpLnNldDxJdGVtQW5kUGFnZUlE
PihpdGVtLnB0cigpLCB7IC5pdGVtSUQgPSBpdGVtSUQsIC5wYWdlSUQgPSBtX3BhZ2UtPnBhZ2VJ
RCgpIH0pOworICAgIGlkVG9IaXN0b3J5SXRlbU1hcCgpLnNldChpdGVtSUQsIGl0ZW0ucHRyKCkp
OwogCi0gICAgdXBkYXRlQmFja0ZvcndhcmRJdGVtKGl0ZW1JRCwgbV9wYWdlLT5wYWdlSUQoKSwg
aXRlbS5nZXQoKSk7CisgICAgdXBkYXRlQmFja0ZvcndhcmRJdGVtKGl0ZW1JRCwgbV9wYWdlLT5w
YWdlSUQoKSwgaXRlbS5wdHIoKSk7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkJhY2tGb3J3YXJkQWRkSXRlbShpdGVtSUQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHkuaAppbmRleCBhYTE0N2UxZDhhMjUzMTMxZmZhZGE2MWQ4ZWUyMDVkMGMxYjllY2U3Li4yY2Jk
ZWQyNWFkNDJlZTliOTkyYzMxN2Q3ZTI5NTNmNmM0NDVlN2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHkuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkJhY2tGb3J3
YXJkTGlzdFByb3h5KFdlYlBhZ2UqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRJdGVtKFBhc3NS
ZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
YWRkSXRlbShSZWY8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+JiYpIG92ZXJyaWRlOwogCiAgICAgdmly
dHVhbCB2b2lkIGdvVG9JdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgb3ZlcnJpZGU7CiAgICAg
ICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245843</attachid>
            <date>2015-02-01 14:02:56 -0800</date>
            <delta_ts>2015-02-01 15:28:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141133-20150201140304.patch</filename>
            <type>text/plain</type>
            <size>52794</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjhkYzAyZmZhNmJhNDUw
ZDIxNDU4YTZmNmNjZGRjNTJkZWIyZTY0ZS4uMTQ1MGUzY2Q2ZWYxYWViOTgxMWNiYjE1ZGFjNDg0
MTliOGZkZTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTAxLTMxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIG1vcmUgcmVmZXJlbmNl
cyBpbiBIaXN0b3J5SXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQxMTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKwor
ICAgICAgICBVc2UgbW9yZSByZWZlcmVuY2VzIGluIEhpc3RvcnlJdGVtIGluc3RlYWQgb2YgcG9p
bnRlcnMuCisKIDIwMTUtMDEtMzEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFN0b3AgZGlzcGF0Y2hpbmcgZXZlbnRzIHRvIHdpdGggU1ZHRWxlbWVudEluc3RhbmNl
IG9iamVjdHMgYXMgdGhlaXIgdGFyZ2V0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGMyYjY4M2MwMGU1
YTc2NTgxMzUwYTE0NGFiNTViNGY0MTcyNWU4ZWUuLjBiZDgxZTVjODQ5ZTA3ODExYWNiNDJkZGRh
YTNjOWYxMTc3MWM4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0w
MS0zMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBtb3Jl
IHJlZmVyZW5jZXMgaW4gSGlzdG9yeUl0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MTEzMworCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMg
S2xpbmcuCisKKyAgICAgICAgVXNlIG1vcmUgcmVmZXJlbmNlcyBpbiBIaXN0b3J5SXRlbSBpbnN0
ZWFkIG9mIHBvaW50ZXJzLgorCiAyMDE1LTAxLTMxICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmVtb3ZlIGV2ZW4gbW9yZSBNb3VudGFpbiBMaW9uIHN1cHBvcnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCAyMzExYTU3ODRkMzgwZjNlMWQwMDdiZjQ3MGI1MmEzMDY5MmE4Mzc2Li5kYmRh
MTViYjA0MTg1OGUwZTU3N2FhMTUzZmQ1NGIyNmVmOTU2NDRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjEgQEAKKzIwMTUtMDEtMzEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBVc2UgbW9yZSByZWZlcmVuY2VzIGluIEhpc3RvcnlJdGVtCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMzMKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFVzZSBtb3JlIHJlZmVyZW5jZXMgaW4g
SGlzdG9yeUl0ZW0gaW5zdGVhZCBvZiBwb2ludGVycy4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtOjpjaGlsZHJl
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252
ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dG9GcmFtZVN0YXRlKToKKyAgICAgICAgKFdl
YktpdDo6YXBwbHlGcmFtZVN0YXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
QmFja0ZvcndhcmRMaXN0UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eTo6YWRkSXRlbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJh
Y2tGb3J3YXJkTGlzdFByb3h5Lmg6CisKIDIwMTUtMDItMDEgIERhbiBCZXJuc3RlaW4gIDxtaXR6
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgVmlld0dlc3R1cmVDb250cm9sbGVyIHRyYWNp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggY2Y0OWZmODBlZDFjYzk1NTQ0YzI1NDhlODk5MzA0
ZmYwZDQ3NjVhZC4uYThhYzg3YjdlYjMyMGZjODA5YjQ1MTgzOGZlZGY0NDMxY2RiMDIwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KQEAgLTE2Myw3ICsxNjMsNyBAQCBfX1pON1dlYkNvcmUxMUZyYW1l
TG9hZGVyOXNldE9wZW5lckVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTEw
dGFyZ2V0SXRlbUV2CiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMTFzZXRGb3JtRGF0YUVOM1dU
RjEwUGFzc1JlZlB0cklOU184Rm9ybURhdGFFRUUKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0x
MXNldFJlZmVycmVyRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTEy
YWRkQ2hpbGRJdGVtRU4zV1RGMTBQYXNzUmVmUHRySVMwX0VFCitfX1pON1dlYkNvcmUxMUhpc3Rv
cnlJdGVtMTJhZGRDaGlsZEl0ZW1FT04zV1RGM1JlZklTMF9FRQogX19aTjdXZWJDb3JlMTFIaXN0
b3J5SXRlbTEyc2V0VVJMU3RyaW5nRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTFIaXN0
b3J5SXRlbTEyc2V0Vmlld1N0YXRlRVAxMW9iamNfb2JqZWN0CiBfX1pON1dlYkNvcmUxMUhpc3Rv
cnlJdGVtMTRhZGRSZWRpcmVjdFVSTEVSS04zV1RGNlN0cmluZ0UKQEAgLTE3NSw2ICsxNzUsNyBA
QCBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMTZzZXREb2N1bWVudFN0YXRlRVJLTjNXVEY2VmVj
dG9ySU5TMV82U3RyaW5nRUxtMEVOUzFfMQogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTE3c2V0
QWx0ZXJuYXRlVGl0bGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVt
MThzZXRGb3JtQ29udGVudFR5cGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMUhpc3Rv
cnlJdGVtMThzZXRQYWdlU2NhbGVGYWN0b3JFZgorX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTE5
Y2hpbGRJdGVtV2l0aFRhcmdldEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTExSGlzdG9y
eUl0ZW0yMHNldE9yaWdpbmFsVVJMU3RyaW5nRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3Jl
MTFIaXN0b3J5SXRlbTIwc2V0VHJhbnNpZW50UHJvcGVydHlFUktOM1dURjZTdHJpbmdFUDExb2Jq
Y19vYmplY3QKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW04Zm9ybURhdGFFdgpAQCAtNDk4LDgg
KzQ5OSw4IEBAIF9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTFjdXJyZW50SXRlbUV2CiBf
X1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDExZm9yd2FyZEl0ZW1FdgogX19aTjdXZWJDb3Jl
MTVCYWNrRm9yd2FyZExpc3QxMXNldENhcGFjaXR5RWkKIF9fWk43V2ViQ29yZTE1QmFja0Zvcndh
cmRMaXN0MTJjb250YWluc0l0ZW1FUE5TXzExSGlzdG9yeUl0ZW1FCi1fX1pON1dlYkNvcmUxNUJh
Y2tGb3J3YXJkTGlzdDE3YmFja0xpc3RXaXRoTGltaXRFaVJOM1dURjZWZWN0b3JJTlMxXzZSZWZQ
dHJJTlNfMTFIaXN0b3J5SXRlbUVFRUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKLV9fWk43
V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MjBmb3J3YXJkTGlzdFdpdGhMaW1pdEVpUk4zV1RGNlZl
Y3RvcklOUzFfNlJlZlB0cklOU18xMUhpc3RvcnlJdGVtRUVFTG0wRU5TMV8xNUNyYXNoT25PdmVy
Zmxvd0VFRQorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxN2JhY2tMaXN0V2l0aExpbWl0
RWlSTjNXVEY2VmVjdG9ySU5TMV8zUmVmSU5TXzExSGlzdG9yeUl0ZW1FRUVMbTBFTlMxXzE1Q3Jh
c2hPbk92ZXJmbG93RUVFCitfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDIwZm9yd2FyZExp
c3RXaXRoTGltaXRFaVJOM1dURjZWZWN0b3JJTlMxXzNSZWZJTlNfMTFIaXN0b3J5SXRlbUVFRUxt
MEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0
NmNsb3NlZEV2CiBfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDZnb0JhY2tFdgogX19aTjdX
ZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q3ZW5hYmxlZEV2CkBAIC0xNjkyLDcgKzE2OTMsNiBAQCBf
X1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTE0YWx0ZXJuYXRlVGl0bGVFdgogX19aTks3V2ViQ29y
ZTExSGlzdG9yeUl0ZW0xNWZvcm1Db250ZW50VHlwZUV2CiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5
SXRlbTE1cGFnZVNjYWxlRmFjdG9yRXYKIF9fWk5LN1dlYkNvcmUxMUhpc3RvcnlJdGVtMTdvcmln
aW5hbFVSTFN0cmluZ0V2Ci1fX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTE5Y2hpbGRJdGVtV2l0
aFRhcmdldEVSS04zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmUxMUhpc3RvcnlJdGVtMjBnZXRU
cmFuc2llbnRQcm9wZXJ0eUVSS04zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmUxMUhpc3RvcnlJ
dGVtMjBoYXNDYWNoZWRQYWdlRXhwaXJlZEV2CiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTN1
cmxFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENsaWVudC5oCmluZGV4IDQ3
MTg3MzYwMWQ0ZmY5MjlkZDE1MTNhZTA4Y2FlMmMxZDY5Yjk5OTkuLjA4MjA0MTVmZTgxMGZlZDEz
YzVkOWRhMjZhZWJiZmY3NzBiMDliZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQmFja0ZvcndhcmRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tG
b3J3YXJkQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgYWRkSXRlbShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBhZGRJdGVtKFJlZjxIaXN0b3J5SXRlbT4mJikgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIGdvVG9JdGVtKEhpc3RvcnlJdGVtKikgPSAwOwogICAgICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmNwcAppbmRleCA1
NWNhZjFjMGQ3NTE2NTE2YTFkYTgzMzBmMjgxMTI5OTRjYWJkNzQ1Li4xYWViNjNjZjUyOTNjNDY2
OGFmMjBmZmNiMTE1ODU2OTEwYmYyYTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwCkBAIC05Nyw5ICs5Nyw5IEBAIGJvb2wgQmFja0Zv
cndhcmRDb250cm9sbGVyOjpnb0ZvcndhcmQoKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lk
IEJhY2tGb3J3YXJkQ29udHJvbGxlcjo6YWRkSXRlbShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBp
dGVtKQordm9pZCBCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmFkZEl0ZW0oUmVmPEhpc3RvcnlJdGVt
PiYmIGl0ZW0pCiB7Ci0gICAgbV9jbGllbnQtPmFkZEl0ZW0oaXRlbSk7CisgICAgbV9jbGllbnQt
PmFkZEl0ZW0oV1RGOjptb3ZlKGl0ZW0pKTsKIH0KIAogdm9pZCBCYWNrRm9yd2FyZENvbnRyb2xs
ZXI6OnNldEN1cnJlbnRJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmgKaW5kZXggZjIzYjdlNGJmMTA0NDdjYjJm
NDFlZjcyZTZkMjNjZDZiYWYwYTk2My4uNTg5ZWU1ZWNhMmJlNzA2NmY2NDNjNjU2NzAwNTcyOTM2
ZjY5ZGYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJv
bGxlci5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGdvQmFjaygpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ29Gb3J3YXJkKCk7CiAKLSAgICB2
b2lkIGFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4pOworICAgIHZvaWQgYWRkSXRlbShS
ZWY8SGlzdG9yeUl0ZW0+JiYpOwogICAgIHZvaWQgc2V0Q3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0q
KTsKICAgICAgICAgCiAgICAgaW50IGNvdW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L0JhY2tGb3J3YXJkTGlzdC5jcHAKaW5kZXggZWFlNjJiYzcxZjg2MzgwYzcyNTE2YjdlNzBk
NzFjZTdhZTNiNTA1My4uMDEwNGQyNmY2MjM0OWFkMzU4YjZlMGUyMWY3OTI1NzY4ODllNzNmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmNwcApAQCAtNTUsMzYg
KzU1LDM0IEBAIEJhY2tGb3J3YXJkTGlzdDo6fkJhY2tGb3J3YXJkTGlzdCgpCiAgICAgQVNTRVJU
KG1fY2xvc2VkKTsKIH0KIAotdm9pZCBCYWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0oUGFzc1JlZlB0
cjxIaXN0b3J5SXRlbT4gcHJwSXRlbSkKK3ZvaWQgQmFja0ZvcndhcmRMaXN0OjphZGRJdGVtKFJl
ZjxIaXN0b3J5SXRlbT4mJiBuZXdJdGVtKQogewotICAgIEFTU0VSVChwcnBJdGVtKTsKLSAgICBp
ZiAobV9jYXBhY2l0eSA9PSAwIHx8ICFtX2VuYWJsZWQpCisgICAgaWYgKCFtX2NhcGFjaXR5IHx8
ICFtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAvLyBUb3NzIGFueXRoaW5n
IGluIHRoZSBmb3J3YXJkIGxpc3QgICAgCiAgICAgaWYgKG1fY3VycmVudCAhPSBOb0N1cnJlbnRJ
dGVtSW5kZXgpIHsKICAgICAgICAgdW5zaWduZWQgdGFyZ2V0U2l6ZSA9IG1fY3VycmVudCArIDE7
CiAgICAgICAgIHdoaWxlIChtX2VudHJpZXMuc2l6ZSgpID4gdGFyZ2V0U2l6ZSkgewotICAgICAg
ICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtID0gbV9lbnRyaWVzLmxhc3QoKTsKLSAgICAg
ICAgICAgIG1fZW50cmllcy5yZW1vdmVMYXN0KCk7Ci0gICAgICAgICAgICBtX2VudHJ5SGFzaC5y
ZW1vdmUoaXRlbSk7Ci0gICAgICAgICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZSgq
aXRlbSk7CisgICAgICAgICAgICBSZWY8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBtX2VudHJpZXMudGFr
ZUxhc3QoKTsKKyAgICAgICAgICAgIG1fZW50cnlIYXNoLnJlbW92ZShpdGVtLnB0cigpKTsKKyAg
ICAgICAgICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlKGl0ZW0pOwogICAgICAgICB9
CiAgICAgfQogCiAgICAgLy8gVG9zcyB0aGUgZmlyc3QgaXRlbSBpZiB0aGUgbGlzdCBpcyBnZXR0
aW5nIHRvbyBiaWcsIGFzIGxvbmcgYXMgd2UncmUgbm90IHVzaW5nIGl0CiAgICAgLy8gKG9yIGV2
ZW4gaWYgd2UgYXJlLCBpZiB3ZSBvbmx5IHdhbnQgMSBlbnRyeSkuCi0gICAgaWYgKG1fZW50cmll
cy5zaXplKCkgPT0gbV9jYXBhY2l0eSAmJiAobV9jdXJyZW50ICE9IDAgfHwgbV9jYXBhY2l0eSA9
PSAxKSkgewotICAgICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBtX2VudHJpZXNbMF07
CisgICAgaWYgKG1fZW50cmllcy5zaXplKCkgPT0gbV9jYXBhY2l0eSAmJiAobV9jdXJyZW50IHx8
IG1fY2FwYWNpdHkgPT0gMSkpIHsKKyAgICAgICAgUmVmPEhpc3RvcnlJdGVtPiBpdGVtID0gV1RG
Ojptb3ZlKG1fZW50cmllc1swXSk7CiAgICAgICAgIG1fZW50cmllcy5yZW1vdmUoMCk7Ci0gICAg
ICAgIG1fZW50cnlIYXNoLnJlbW92ZShpdGVtKTsKLSAgICAgICAgUGFnZUNhY2hlOjpzaW5nbGV0
b24oKS5yZW1vdmUoKml0ZW0pOwotICAgICAgICBtX2N1cnJlbnQtLTsKKyAgICAgICAgbV9lbnRy
eUhhc2gucmVtb3ZlKGl0ZW0ucHRyKCkpOworICAgICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigp
LnJlbW92ZShpdGVtKTsKKyAgICAgICAgLS1tX2N1cnJlbnQ7CiAgICAgfQogCi0gICAgbV9lbnRy
eUhhc2guYWRkKHBycEl0ZW0uZ2V0KCkpOwotICAgIG1fZW50cmllcy5pbnNlcnQobV9jdXJyZW50
ICsgMSwgcHJwSXRlbSk7Ci0gICAgbV9jdXJyZW50Kys7CisgICAgbV9lbnRyeUhhc2guYWRkKG5l
d0l0ZW0ucHRyKCkpOworICAgIG1fZW50cmllcy5pbnNlcnQobV9jdXJyZW50ICsgMSwgV1RGOjpt
b3ZlKG5ld0l0ZW0pKTsKKyAgICArK21fY3VycmVudDsKIH0KIAogdm9pZCBCYWNrRm9yd2FyZExp
c3Q6OmdvQmFjaygpCkBAIC0xMTAsNyArMTA4LDcgQEAgdm9pZCBCYWNrRm9yd2FyZExpc3Q6Omdv
VG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAgICAgICAKICAgICB1bnNpZ25lZCBpbnQgaW5k
ZXggPSAwOwogICAgIGZvciAoOyBpbmRleCA8IG1fZW50cmllcy5zaXplKCk7ICsraW5kZXgpCi0g
ICAgICAgIGlmIChtX2VudHJpZXNbaW5kZXhdID09IGl0ZW0pCisgICAgICAgIGlmIChtX2VudHJp
ZXNbaW5kZXhdLnB0cigpID09IGl0ZW0pCiAgICAgICAgICAgICBicmVhazsKICAgICBpZiAoaW5k
ZXggPCBtX2VudHJpZXMuc2l6ZSgpKSB7CiAgICAgICAgIG1fY3VycmVudCA9IGluZGV4OwpAQCAt
MTIwLDMxICsxMTgsMzEgQEAgdm9pZCBCYWNrRm9yd2FyZExpc3Q6OmdvVG9JdGVtKEhpc3RvcnlJ
dGVtKiBpdGVtKQogSGlzdG9yeUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6YmFja0l0ZW0oKQogewog
ICAgIGlmIChtX2N1cnJlbnQgJiYgbV9jdXJyZW50ICE9IE5vQ3VycmVudEl0ZW1JbmRleCkKLSAg
ICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJlbnQgLSAxXS5nZXQoKTsKLSAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJlbnQgLSAxXS5wdHIoKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAogSGlzdG9yeUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6Y3VycmVu
dEl0ZW0oKQogewogICAgIGlmIChtX2N1cnJlbnQgIT0gTm9DdXJyZW50SXRlbUluZGV4KQotICAg
ICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVudF0uZ2V0KCk7Ci0gICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9jdXJyZW50XS5wdHIoKTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAogSGlzdG9yeUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZEl0ZW0oKQog
ewogICAgIGlmIChtX2VudHJpZXMuc2l6ZSgpICYmIG1fY3VycmVudCA8IG1fZW50cmllcy5zaXpl
KCkgLSAxKQotICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVudCArIDFdLmdldCgpOwot
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVudCArIDFdLnB0
cigpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6YmFj
a0xpc3RXaXRoTGltaXQoaW50IGxpbWl0LCBIaXN0b3J5SXRlbVZlY3RvciYgbGlzdCkKIHsKICAg
ICBsaXN0LmNsZWFyKCk7CiAgICAgaWYgKG1fY3VycmVudCAhPSBOb0N1cnJlbnRJdGVtSW5kZXgp
IHsKLSAgICAgICAgdW5zaWduZWQgZmlyc3QgPSBzdGQ6Om1heCgoaW50KW1fY3VycmVudCAtIGxp
bWl0LCAwKTsKKyAgICAgICAgdW5zaWduZWQgZmlyc3QgPSBzdGQ6Om1heChzdGF0aWNfY2FzdDxp
bnQ+KG1fY3VycmVudCkgLSBsaW1pdCwgMCk7CiAgICAgICAgIGZvciAoOyBmaXJzdCA8IG1fY3Vy
cmVudDsgKytmaXJzdCkKLSAgICAgICAgICAgIGxpc3QuYXBwZW5kKG1fZW50cmllc1tmaXJzdF0p
OworICAgICAgICAgICAgbGlzdC5hcHBlbmQobV9lbnRyaWVzW2ZpcnN0XS5nZXQoKSk7CiAgICAg
fQogfQogCkBAIC0xNjAsNyArMTU4LDcgQEAgdm9pZCBCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRM
aXN0V2l0aExpbWl0KGludCBsaW1pdCwgSGlzdG9yeUl0ZW1WZWN0b3ImIGxpc3QpCiAgICAgICAg
IGludCBsYXN0ID0gc3RkOjptaW4obV9jdXJyZW50ICsgbGltaXQsIGxhc3RFbnRyeSk7CiAgICAg
ICAgIGxpbWl0ID0gbV9jdXJyZW50ICsgMTsKICAgICAgICAgZm9yICg7IGxpbWl0IDw9IGxhc3Q7
ICsrbGltaXQpCi0gICAgICAgICAgICBsaXN0LmFwcGVuZChtX2VudHJpZXNbbGltaXRdKTsKKyAg
ICAgICAgICAgIGxpc3QuYXBwZW5kKG1fZW50cmllc1tsaW1pdF0uZ2V0KCkpOwogICAgIH0KIH0K
IApAQCAtMTcxLDExICsxNjksMTAgQEAgaW50IEJhY2tGb3J3YXJkTGlzdDo6Y2FwYWNpdHkoKQog
CiB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6c2V0Q2FwYWNpdHkoaW50IHNpemUpCiB7ICAgIAotICAg
IHdoaWxlIChzaXplIDwgKGludCltX2VudHJpZXMuc2l6ZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxI
aXN0b3J5SXRlbT4gaXRlbSA9IG1fZW50cmllcy5sYXN0KCk7Ci0gICAgICAgIG1fZW50cmllcy5y
ZW1vdmVMYXN0KCk7Ci0gICAgICAgIG1fZW50cnlIYXNoLnJlbW92ZShpdGVtKTsKLSAgICAgICAg
UGFnZUNhY2hlOjpzaW5nbGV0b24oKS5yZW1vdmUoKml0ZW0pOworICAgIHdoaWxlIChzaXplIDwg
c3RhdGljX2Nhc3Q8aW50PihtX2VudHJpZXMuc2l6ZSgpKSkgeworICAgICAgICBSZWY8SGlzdG9y
eUl0ZW0+IGl0ZW0gPSBtX2VudHJpZXMudGFrZUxhc3QoKTsKKyAgICAgICAgbV9lbnRyeUhhc2gu
cmVtb3ZlKGl0ZW0ucHRyKCkpOworICAgICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnJlbW92
ZShpdGVtKTsKICAgICB9CiAKICAgICBpZiAoIXNpemUpCkBAIC0yMTQsMTMgKzIxMSwxMyBAQCBp
bnQgQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkTGlzdENvdW50KCkKIEhpc3RvcnlJdGVtKiBCYWNr
Rm9yd2FyZExpc3Q6Oml0ZW1BdEluZGV4KGludCBpbmRleCkKIHsKICAgICAvLyBEbyByYW5nZSBj
aGVja3Mgd2l0aG91dCBkb2luZyBtYXRoIG9uIGluZGV4IHRvIGF2b2lkIG92ZXJmbG93LgotICAg
IGlmIChpbmRleCA8IC0oaW50KW1fY3VycmVudCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgaWYg
KGluZGV4IDwgLXN0YXRpY19jYXN0PGludD4obV9jdXJyZW50KSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgCiAgICAgaWYgKGluZGV4ID4gZm9yd2FyZExpc3RDb3VudCgpKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIAotICAgIHJldHVy
biBtX2VudHJpZXNbaW5kZXggKyBtX2N1cnJlbnRdLmdldCgpOworICAgIHJldHVybiBtX2VudHJp
ZXNbaW5kZXggKyBtX2N1cnJlbnRdLnB0cigpOwogfQogCiBIaXN0b3J5SXRlbVZlY3RvciYgQmFj
a0ZvcndhcmRMaXN0OjplbnRyaWVzKCkKQEAgLTI0NSw3ICsyNDIsNyBAQCBib29sIEJhY2tGb3J3
YXJkTGlzdDo6Y2xlYXJBbGxQYWdlQ2FjaGVzKCkKICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX2Vu
dHJpZXMpIHsKICAgICAgICAgaWYgKGl0ZW0tPmlzSW5QYWdlQ2FjaGUoKSkgewogICAgICAgICAg
ICAgZGlkUmVtb3ZlQXRMZWFzdE9uZUl0ZW0gPSB0cnVlOwotICAgICAgICAgICAgUGFnZUNhY2hl
OjpzaW5nbGV0b24oKS5yZW1vdmUoKml0ZW0pOworICAgICAgICAgICAgUGFnZUNhY2hlOjpzaW5n
bGV0b24oKS5yZW1vdmUoaXRlbSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGRpZFJl
bW92ZUF0TGVhc3RPbmVJdGVtOwpAQCAtMjU1LDcgKzI1Miw3IEBAIGJvb2wgQmFja0ZvcndhcmRM
aXN0OjpjbGVhckFsbFBhZ2VDYWNoZXMoKQogdm9pZCBCYWNrRm9yd2FyZExpc3Q6OmNsb3NlKCkK
IHsKICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX2VudHJpZXMpCi0gICAgICAgIFBhZ2VDYWNoZTo6
c2luZ2xldG9uKCkucmVtb3ZlKCppdGVtKTsKKyAgICAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24o
KS5yZW1vdmUoaXRlbSk7CiAgICAgbV9lbnRyaWVzLmNsZWFyKCk7CiAgICAgbV9lbnRyeUhhc2gu
Y2xlYXIoKTsKICAgICBtX3BhZ2UgPSBudWxscHRyOwpAQCAtMjcyLDggKzI2OSw4IEBAIHZvaWQg
QmFja0ZvcndhcmRMaXN0OjpyZW1vdmVJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAgIGlmICgh
aXRlbSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2VudHJpZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGlmIChtX2VudHJpZXNbaV0gPT0gaXRl
bSkgeworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2VudHJpZXMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgaWYgKG1fZW50cmllc1tpXS5wdHIoKSA9PSBpdGVtKSB7CiAgICAgICAgICAg
ICBtX2VudHJpZXMucmVtb3ZlKGkpOwogICAgICAgICAgICAgbV9lbnRyeUhhc2gucmVtb3ZlKGl0
ZW0pOwogICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSBOb0N1cnJlbnRJdGVtSW5kZXggfHwg
bV9jdXJyZW50IDwgaSkKQEAgLTI4Nyw2ICsyODQsNyBAQCB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6
cmVtb3ZlSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CisgICAgfQogfQogCiBib29sIEJhY2tGb3J3YXJkTGlzdDo6Y29u
dGFpbnNJdGVtKEhpc3RvcnlJdGVtKiBlbnRyeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tG
b3J3YXJkTGlzdC5oCmluZGV4IGEzM2M4YTY2YzAwOTY1OTQ2NjE2Y2M0ZWRjNDdmY2M4ZWNiMDIw
NjguLjU5MjkyNzYwY2NjODZmNzkyYzQ1ZDdjNTRhNmY2OWU3ZTJjMDYzYzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBhZ2U7CiAKLXR5cGVkZWYgVmVjdG9yPFJlZlB0cjxIaXN0
b3J5SXRlbT4+IEhpc3RvcnlJdGVtVmVjdG9yOwordHlwZWRlZiBWZWN0b3I8UmVmPEhpc3RvcnlJ
dGVtPj4gSGlzdG9yeUl0ZW1WZWN0b3I7CiB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPEhpc3RvcnlJ
dGVtPj4gSGlzdG9yeUl0ZW1IYXNoU2V0OwogCiBjbGFzcyBCYWNrRm9yd2FyZExpc3QgOiBwdWJs
aWMgQmFja0ZvcndhcmRDbGllbnQgewpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICBQ
YWdlKiBwYWdlKCkgeyByZXR1cm4gbV9wYWdlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkSXRl
bShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGFk
ZEl0ZW0oUmVmPEhpc3RvcnlJdGVtPiYmKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGdvQmFjaygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ29Gb3J3YXJkKCk7CiAgICAg
dmlydHVhbCB2b2lkIGdvVG9JdGVtKEhpc3RvcnlJdGVtKikgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCmluZGV4IDNjNTJmZDZlMDI3OTE3OGJmNDBhY2ZlNGJk
ODMyNDUxOTJjYWEwMmQuLjIyOWJhYjhlN2EyM2FjMDVjMGFkMDVlN2VkNDMxNTdkY2Q3ZThiMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCkBAIC0xNzIsOSArMTcyLDkg
QEAgaW5saW5lIEhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShjb25zdCBIaXN0b3J5SXRlbSYgaXRl
bSkKICAgICAgICAgbV9yZWRpcmVjdFVSTHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJp
bmc+PigqaXRlbS5tX3JlZGlyZWN0VVJMcyk7CiB9CiAKLVBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+
IEhpc3RvcnlJdGVtOjpjb3B5KCkgY29uc3QKK1JlZjxIaXN0b3J5SXRlbT4gSGlzdG9yeUl0ZW06
OmNvcHkoKSBjb25zdAogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSGlzdG9yeUl0ZW0oKnRo
aXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIaXN0b3J5SXRlbSgqdGhpcykpOwogfQog
CiB2b2lkIEhpc3RvcnlJdGVtOjpyZXNldCgpCkBAIC0zNjYsNDQgKzM2Niw0NCBAQCB2b2lkIEhp
c3RvcnlJdGVtOjpzZXRTdGF0ZU9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gb2JqZWN0KQogICAgIG1fc3RhdGVPYmplY3QgPSBvYmplY3Q7CiB9CiAKLXZvaWQgSGlzdG9y
eUl0ZW06OmFkZENoaWxkSXRlbShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBjaGlsZCkKK3ZvaWQg
SGlzdG9yeUl0ZW06OmFkZENoaWxkSXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYgY2hpbGQpCiB7CiAg
ICAgQVNTRVJUKCFjaGlsZEl0ZW1XaXRoVGFyZ2V0KGNoaWxkLT50YXJnZXQoKSkpOwotICAgIG1f
Y2hpbGRyZW4uYXBwZW5kKGNoaWxkKTsKKyAgICBtX2NoaWxkcmVuLmFwcGVuZChXVEY6Om1vdmUo
Y2hpbGQpKTsKIH0KIAotdm9pZCBIaXN0b3J5SXRlbTo6c2V0Q2hpbGRJdGVtKFBhc3NSZWZQdHI8
SGlzdG9yeUl0ZW0+IGNoaWxkKQordm9pZCBIaXN0b3J5SXRlbTo6c2V0Q2hpbGRJdGVtKFJlZjxI
aXN0b3J5SXRlbT4mJiBjaGlsZCkKIHsKICAgICBBU1NFUlQoIWNoaWxkLT5pc1RhcmdldEl0ZW0o
KSk7CiAgICAgdW5zaWduZWQgc2l6ZSA9IG1fY2hpbGRyZW4uc2l6ZSgpOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpICB7CiAgICAgICAgIGlmIChtX2NoaWxkcmVuW2ld
LT50YXJnZXQoKSA9PSBjaGlsZC0+dGFyZ2V0KCkpIHsKICAgICAgICAgICAgIGNoaWxkLT5zZXRJ
c1RhcmdldEl0ZW0obV9jaGlsZHJlbltpXS0+aXNUYXJnZXRJdGVtKCkpOwotICAgICAgICAgICAg
bV9jaGlsZHJlbltpXSA9IGNoaWxkOworICAgICAgICAgICAgbV9jaGlsZHJlbltpXSA9IFdURjo6
bW92ZShjaGlsZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0gICAg
bV9jaGlsZHJlbi5hcHBlbmQoY2hpbGQpOworICAgIG1fY2hpbGRyZW4uYXBwZW5kKFdURjo6bW92
ZShjaGlsZCkpOwogfQogCi1IaXN0b3J5SXRlbSogSGlzdG9yeUl0ZW06OmNoaWxkSXRlbVdpdGhU
YXJnZXQoY29uc3QgU3RyaW5nJiB0YXJnZXQpIGNvbnN0CitIaXN0b3J5SXRlbSogSGlzdG9yeUl0
ZW06OmNoaWxkSXRlbVdpdGhUYXJnZXQoY29uc3QgU3RyaW5nJiB0YXJnZXQpCiB7CiAgICAgdW5z
aWduZWQgc2l6ZSA9IG1fY2hpbGRyZW4uc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgaWYgKG1fY2hpbGRyZW5baV0tPnRhcmdldCgpID09
IHRhcmdldCkKLSAgICAgICAgICAgIHJldHVybiBtX2NoaWxkcmVuW2ldLmdldCgpOworICAgICAg
ICAgICAgcmV0dXJuIG1fY2hpbGRyZW5baV0ucHRyKCk7CiAgICAgfQotICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBudWxscHRyOwogfQogCi1IaXN0b3J5SXRlbSogSGlzdG9yeUl0ZW06OmNoaWxk
SXRlbVdpdGhEb2N1bWVudFNlcXVlbmNlTnVtYmVyKGxvbmcgbG9uZyBudW1iZXIpIGNvbnN0CitI
aXN0b3J5SXRlbSogSGlzdG9yeUl0ZW06OmNoaWxkSXRlbVdpdGhEb2N1bWVudFNlcXVlbmNlTnVt
YmVyKGxvbmcgbG9uZyBudW1iZXIpCiB7CiAgICAgdW5zaWduZWQgc2l6ZSA9IG1fY2hpbGRyZW4u
c2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAg
ICAgaWYgKG1fY2hpbGRyZW5baV0tPmRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSA9PSBudW1iZXIp
Ci0gICAgICAgICAgICByZXR1cm4gbV9jaGlsZHJlbltpXS5nZXQoKTsKKyAgICAgICAgICAgIHJl
dHVybiBtX2NoaWxkcmVuW2ldLnB0cigpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAogLy8gPHJkYXI6Ly9wcm9ibGVtLzQ4OTU4NDk+IEhpc3RvcnlJdGVt
OjpmaW5kVGFyZ2V0SXRlbSgpIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIGEgbm9uLXJlY3Vyc2l2
ZSBtZXRob2QuCkBAIC00MTMsMTUgKzQxMywxNyBAQCBIaXN0b3J5SXRlbSogSGlzdG9yeUl0ZW06
OmZpbmRUYXJnZXRJdGVtKCkKICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgdW5zaWduZWQgc2l6
ZSA9IG1fY2hpbGRyZW4uc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXpl
OyArK2kpIHsKKyAgICAgICAgLy8gRklYTUU6IHRhcmdldEl0ZW0oKSBjYW5ub3QgcmV0dXJuIG51
bGwgY3VycmVudGx5LCB3aGljaCBpcyB3cm9uZy4KICAgICAgICAgaWYgKEhpc3RvcnlJdGVtKiBt
YXRjaCA9IG1fY2hpbGRyZW5baV0tPnRhcmdldEl0ZW0oKSkKICAgICAgICAgICAgIHJldHVybiBt
YXRjaDsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIEhp
c3RvcnlJdGVtKiBIaXN0b3J5SXRlbTo6dGFyZ2V0SXRlbSgpCiB7CiAgICAgSGlzdG9yeUl0ZW0q
IGZvdW5kSXRlbSA9IGZpbmRUYXJnZXRJdGVtKCk7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IHByb2JhYmx5IG5vdCBmYWxsIGJhY2sgdG8gfHRoaXN8LgogICAgIHJldHVybiBmb3VuZEl0ZW0g
PyBmb3VuZEl0ZW0gOiB0aGlzOwogfQogCkBAIC00NDAsMTMgKzQ0MiwxMyBAQCB2b2lkIEhpc3Rv
cnlJdGVtOjpjbGVhckNoaWxkcmVuKCkKICAgICBtX2NoaWxkcmVuLmNsZWFyKCk7CiB9CiAKLWJv
b2wgSGlzdG9yeUl0ZW06OmlzQW5jZXN0b3JPZihjb25zdCBIaXN0b3J5SXRlbSogaXRlbSkgY29u
c3QKK2Jvb2wgSGlzdG9yeUl0ZW06OmlzQW5jZXN0b3JPZihjb25zdCBIaXN0b3J5SXRlbSYgaXRl
bSkgY29uc3QKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2hpbGRyZW4uc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgSGlzdG9yeUl0ZW0qIGNoaWxkID0gbV9jaGlsZHJlbltpXS5nZXQo
KTsKLSAgICAgICAgaWYgKGNoaWxkID09IGl0ZW0pCisgICAgICAgIGF1dG8mIGNoaWxkID0gbV9j
aGlsZHJlbltpXS5nZXQoKTsKKyAgICAgICAgaWYgKCZjaGlsZCA9PSAmaXRlbSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoY2hpbGQtPmlzQW5jZXN0b3JPZihpdGVtKSkK
KyAgICAgICAgaWYgKGNoaWxkLmlzQW5jZXN0b3JPZihpdGVtKSkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC00NTUsMzQgKzQ1NywzNCBAQCBi
b29sIEhpc3RvcnlJdGVtOjppc0FuY2VzdG9yT2YoY29uc3QgSGlzdG9yeUl0ZW0qIGl0ZW0pIGNv
bnN0CiAvLyBXZSBkbyBzYW1lLWRvY3VtZW50IG5hdmlnYXRpb24gaWYgZ29pbmcgdG8gYSBkaWZm
ZXJlbnQgaXRlbSBhbmQgaWYgZWl0aGVyIG9mIHRoZSBmb2xsb3dpbmcgaXMgdHJ1ZToKIC8vIC0g
VGhlIG90aGVyIGl0ZW0gY29ycmVzcG9uZHMgdG8gdGhlIHNhbWUgZG9jdW1lbnQgKGZvciBoaXN0
b3J5IGVudHJpZXMgY3JlYXRlZCB2aWEgcHVzaFN0YXRlIG9yIGZyYWdtZW50IGNoYW5nZXMpLgog
Ly8gLSBUaGUgb3RoZXIgaXRlbSBjb3JyZXNwb25kcyB0byB0aGUgc2FtZSBzZXQgb2YgZG9jdW1l
bnRzLCBpbmNsdWRpbmcgZnJhbWVzIChmb3IgaGlzdG9yeSBlbnRyaWVzIGNyZWF0ZWQgdmlhIHJl
Z3VsYXIgbmF2aWdhdGlvbikKLWJvb2wgSGlzdG9yeUl0ZW06OnNob3VsZERvU2FtZURvY3VtZW50
TmF2aWdhdGlvblRvKEhpc3RvcnlJdGVtKiBvdGhlckl0ZW0pIGNvbnN0Citib29sIEhpc3RvcnlJ
dGVtOjpzaG91bGREb1NhbWVEb2N1bWVudE5hdmlnYXRpb25UbyhIaXN0b3J5SXRlbSYgb3RoZXJJ
dGVtKSBjb25zdAogewotICAgIGlmICh0aGlzID09IG90aGVySXRlbSkKKyAgICBpZiAodGhpcyA9
PSAmb3RoZXJJdGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoc3RhdGVPYmpl
Y3QoKSB8fCBvdGhlckl0ZW0tPnN0YXRlT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBkb2N1bWVu
dFNlcXVlbmNlTnVtYmVyKCkgPT0gb3RoZXJJdGVtLT5kb2N1bWVudFNlcXVlbmNlTnVtYmVyKCk7
CisgICAgaWYgKHN0YXRlT2JqZWN0KCkgfHwgb3RoZXJJdGVtLnN0YXRlT2JqZWN0KCkpCisgICAg
ICAgIHJldHVybiBkb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkgPT0gb3RoZXJJdGVtLmRvY3VtZW50
U2VxdWVuY2VOdW1iZXIoKTsKICAgICAKLSAgICBpZiAoKHVybCgpLmhhc0ZyYWdtZW50SWRlbnRp
ZmllcigpIHx8IG90aGVySXRlbS0+dXJsKCkuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpICYmIGVx
dWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJsKCksIG90aGVySXRlbS0+dXJsKCkpKQot
ICAgICAgICByZXR1cm4gZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpID09IG90aGVySXRlbS0+ZG9j
dW1lbnRTZXF1ZW5jZU51bWJlcigpOyAgICAgICAgCisgICAgaWYgKCh1cmwoKS5oYXNGcmFnbWVu
dElkZW50aWZpZXIoKSB8fCBvdGhlckl0ZW0udXJsKCkuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkp
ICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJsKCksIG90aGVySXRlbS51cmwo
KSkpCisgICAgICAgIHJldHVybiBkb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkgPT0gb3RoZXJJdGVt
LmRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKTsKICAgICAKICAgICByZXR1cm4gaGFzU2FtZURvY3Vt
ZW50VHJlZShvdGhlckl0ZW0pOwogfQogCiAvLyBEb2VzIGEgcmVjdXJzaXZlIGNoZWNrIHRoYXQg
dGhpcyBpdGVtIGFuZCBpdHMgZGVzY2VuZGFudHMgaGF2ZSB0aGUgc2FtZQogLy8gZG9jdW1lbnQg
c2VxdWVuY2UgbnVtYmVycyBhcyB0aGUgb3RoZXIgaXRlbS4KLWJvb2wgSGlzdG9yeUl0ZW06Omhh
c1NhbWVEb2N1bWVudFRyZWUoSGlzdG9yeUl0ZW0qIG90aGVySXRlbSkgY29uc3QKK2Jvb2wgSGlz
dG9yeUl0ZW06Omhhc1NhbWVEb2N1bWVudFRyZWUoSGlzdG9yeUl0ZW0mIG90aGVySXRlbSkgY29u
c3QKIHsKLSAgICBpZiAoZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpICE9IG90aGVySXRlbS0+ZG9j
dW1lbnRTZXF1ZW5jZU51bWJlcigpKQorICAgIGlmIChkb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkg
IT0gb3RoZXJJdGVtLmRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAKLSAgICBpZiAoY2hpbGRyZW4oKS5zaXplKCkgIT0gb3RoZXJJdGVtLT5j
aGlsZHJlbigpLnNpemUoKSkKKyAgICBpZiAoY2hpbGRyZW4oKS5zaXplKCkgIT0gb3RoZXJJdGVt
LmNoaWxkcmVuKCkuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGNoaWxkcmVuKCkuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgSGlzdG9y
eUl0ZW0qIGNoaWxkID0gY2hpbGRyZW4oKVtpXS5nZXQoKTsKLSAgICAgICAgSGlzdG9yeUl0ZW0q
IG90aGVyQ2hpbGQgPSBvdGhlckl0ZW0tPmNoaWxkSXRlbVdpdGhEb2N1bWVudFNlcXVlbmNlTnVt
YmVyKGNoaWxkLT5kb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkpOwotICAgICAgICBpZiAoIW90aGVy
Q2hpbGQgfHwgIWNoaWxkLT5oYXNTYW1lRG9jdW1lbnRUcmVlKG90aGVyQ2hpbGQpKQorICAgICAg
ICBhdXRvJiBjaGlsZCA9IGNoaWxkcmVuKClbaV0uZ2V0KCk7CisgICAgICAgIGF1dG8qIG90aGVy
Q2hpbGQgPSBvdGhlckl0ZW0uY2hpbGRJdGVtV2l0aERvY3VtZW50U2VxdWVuY2VOdW1iZXIoY2hp
bGQuZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpKTsKKyAgICAgICAgaWYgKCFvdGhlckNoaWxkIHx8
ICFjaGlsZC5oYXNTYW1lRG9jdW1lbnRUcmVlKCpvdGhlckNoaWxkKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTQ5MSwxNiArNDkzLDE2IEBAIGJvb2wgSGlzdG9yeUl0
ZW06Omhhc1NhbWVEb2N1bWVudFRyZWUoSGlzdG9yeUl0ZW0qIG90aGVySXRlbSkgY29uc3QKIAog
Ly8gRG9lcyBhIG5vbi1yZWN1cnNpdmUgY2hlY2sgdGhhdCB0aGlzIGl0ZW0gYW5kIGl0cyBpbW1l
ZGlhdGUgY2hpbGRyZW4gaGF2ZSB0aGUKIC8vIHNhbWUgZnJhbWVzIGFzIHRoZSBvdGhlciBpdGVt
LgotYm9vbCBIaXN0b3J5SXRlbTo6aGFzU2FtZUZyYW1lcyhIaXN0b3J5SXRlbSogb3RoZXJJdGVt
KSBjb25zdAorYm9vbCBIaXN0b3J5SXRlbTo6aGFzU2FtZUZyYW1lcyhIaXN0b3J5SXRlbSYgb3Ro
ZXJJdGVtKSBjb25zdAogewotICAgIGlmICh0YXJnZXQoKSAhPSBvdGhlckl0ZW0tPnRhcmdldCgp
KQorICAgIGlmICh0YXJnZXQoKSAhPSBvdGhlckl0ZW0udGFyZ2V0KCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgCi0gICAgaWYgKGNoaWxkcmVuKCkuc2l6ZSgpICE9IG90aGVySXRl
bS0+Y2hpbGRyZW4oKS5zaXplKCkpCisgICAgaWYgKGNoaWxkcmVuKCkuc2l6ZSgpICE9IG90aGVy
SXRlbS5jaGlsZHJlbigpLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbigpLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGlm
ICghb3RoZXJJdGVtLT5jaGlsZEl0ZW1XaXRoVGFyZ2V0KGNoaWxkcmVuKClbaV0tPnRhcmdldCgp
KSkKKyAgICAgICAgaWYgKCFvdGhlckl0ZW0uY2hpbGRJdGVtV2l0aFRhcmdldChjaGlsZHJlbigp
W2ldLT50YXJnZXQoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC01
NDIsMTAgKzU0NCwxMCBAQCBGb3JtRGF0YSogSGlzdG9yeUl0ZW06OmZvcm1EYXRhKCkKICAgICBy
ZXR1cm4gbV9mb3JtRGF0YS5nZXQoKTsKIH0KIAotYm9vbCBIaXN0b3J5SXRlbTo6aXNDdXJyZW50
RG9jdW1lbnQoRG9jdW1lbnQqIGRvYykgY29uc3QKK2Jvb2wgSGlzdG9yeUl0ZW06OmlzQ3VycmVu
dERvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGZpbmQgYSBiZXR0ZXIgd2F5IHRvIGNoZWNrIGlmIHRoaXMgaXMgdGhlIGN1cnJlbnQg
ZG9jdW1lbnQuCi0gICAgcmV0dXJuIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJs
KCksIGRvYy0+dXJsKCkpOworICAgIHJldHVybiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlm
aWVyKHVybCgpLCBkb2N1bWVudC51cmwoKSk7CiB9CiAKIHZvaWQgSGlzdG9yeUl0ZW06OmFkZFJl
ZGlyZWN0VVJMKGNvbnN0IFN0cmluZyYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9IaXN0b3J5SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRl
bS5oCmluZGV4IDY0YzA0YmVmOTRlZTYyMjQzYWNmNmM5ZGMzNzY2NzQ0ZTc5YWU2NWQuLjRkODQz
YzQ4ZjJmNTgyYjNlZjFhMjFiNmRjY2Y1MjFlZjgyMWY3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0hpc3RvcnlJdGVtLmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owog
Y2xhc3MgVVJMOwogZW51bSBjbGFzcyBQcnVuaW5nUmVhc29uOwogCi10eXBlZGVmIFZlY3RvcjxS
ZWZQdHI8SGlzdG9yeUl0ZW0+PiBIaXN0b3J5SXRlbVZlY3RvcjsKK3R5cGVkZWYgVmVjdG9yPFJl
ZjxIaXN0b3J5SXRlbT4+IEhpc3RvcnlJdGVtVmVjdG9yOwogCiBleHRlcm4gdm9pZCAoKm5vdGlm
eUhpc3RvcnlJdGVtQ2hhbmdlZCkoSGlzdG9yeUl0ZW0qKTsKIApAQCAtNzksNyArNzksNyBAQCBw
dWJsaWM6CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgfkhpc3RvcnlJdGVtKCk7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBjb3B5KCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgUmVmPEhpc3RvcnlJdGVtPiBjb3B5KCkgY29uc3Q7CiAKICAgICAvLyBS
ZXNldHMgdGhlIEhpc3RvcnlJdGVtIHRvIGl0cyBpbml0aWFsIHN0YXRlLCBhcyByZXR1cm5lZCBi
eSBjcmVhdGUoKS4KICAgICB2b2lkIHJlc2V0KCk7CkBAIC0xNDEsMjQgKzE0MSwyNCBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHNldExhc3RWaXNpdFdhc0ZhaWx1cmUoYm9vbCB3YXNGYWlsdXJlKSB7
IG1fbGFzdFZpc2l0V2FzRmFpbHVyZSA9IHdhc0ZhaWx1cmU7IH0KIAotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYWRkQ2hpbGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+KTsKLSAgICB2b2lk
IHNldENoaWxkSXRlbShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgSGlzdG9yeUl0ZW0qIGNoaWxkSXRlbVdpdGhUYXJnZXQoY29uc3QgU3RyaW5nJikgY29uc3Q7
Ci0gICAgSGlzdG9yeUl0ZW0qIGNoaWxkSXRlbVdpdGhEb2N1bWVudFNlcXVlbmNlTnVtYmVyKGxv
bmcgbG9uZyBudW1iZXIpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ2hpbGRJ
dGVtKFJlZjxIaXN0b3J5SXRlbT4mJik7CisgICAgdm9pZCBzZXRDaGlsZEl0ZW0oUmVmPEhpc3Rv
cnlJdGVtPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBIaXN0b3J5SXRlbSogY2hpbGRJdGVtV2l0
aFRhcmdldChjb25zdCBTdHJpbmcmKTsKKyAgICBIaXN0b3J5SXRlbSogY2hpbGRJdGVtV2l0aERv
Y3VtZW50U2VxdWVuY2VOdW1iZXIobG9uZyBsb25nIG51bWJlcik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgSGlzdG9yeUl0ZW0qIHRhcmdldEl0ZW0oKTsKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBI
aXN0b3J5SXRlbVZlY3RvciYgY2hpbGRyZW4oKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGhhc0NoaWxkcmVuKCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhckNoaWxkcmVuKCk7Ci0gICAg
Ym9vbCBpc0FuY2VzdG9yT2YoY29uc3QgSGlzdG9yeUl0ZW0qKSBjb25zdDsKKyAgICBib29sIGlz
QW5jZXN0b3JPZihjb25zdCBIaXN0b3J5SXRlbSYpIGNvbnN0OwogICAgIAotICAgIGJvb2wgc2hv
dWxkRG9TYW1lRG9jdW1lbnROYXZpZ2F0aW9uVG8oSGlzdG9yeUl0ZW0qIG90aGVySXRlbSkgY29u
c3Q7Ci0gICAgYm9vbCBoYXNTYW1lRnJhbWVzKEhpc3RvcnlJdGVtKiBvdGhlckl0ZW0pIGNvbnN0
OworICAgIGJvb2wgc2hvdWxkRG9TYW1lRG9jdW1lbnROYXZpZ2F0aW9uVG8oSGlzdG9yeUl0ZW0m
IG90aGVySXRlbSkgY29uc3Q7CisgICAgYm9vbCBoYXNTYW1lRnJhbWVzKEhpc3RvcnlJdGVtJiBv
dGhlckl0ZW0pIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRSZWRpcmVjdFVS
TChjb25zdCBTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiogcmVk
aXJlY3RVUkxzKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSZWRpcmVjdFVS
THMoc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+Pik7CiAKLSAgICBib29sIGlzQ3VycmVu
dERvY3VtZW50KERvY3VtZW50KikgY29uc3Q7CisgICAgYm9vbCBpc0N1cnJlbnREb2N1bWVudChE
b2N1bWVudCYpIGNvbnN0OwogICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdFQkNPUkVf
RVhQT1JUIGlkIHZpZXdTdGF0ZSgpIGNvbnN0OwpAQCAtMjEyLDkgKzIxMiw5IEBAIHByaXZhdGU6
CiAgICAgV0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0ZW0oY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRlVGl0bGUpOwogICAg
IFdFQkNPUkVfRVhQT1JUIEhpc3RvcnlJdGVtKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgZnJh
bWVOYW1lLCBjb25zdCBTdHJpbmcmIHBhcmVudCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAKLSAg
ICBleHBsaWNpdCBIaXN0b3J5SXRlbShjb25zdCBIaXN0b3J5SXRlbSYpOworICAgIEhpc3RvcnlJ
dGVtKGNvbnN0IEhpc3RvcnlJdGVtJik7CiAKLSAgICBib29sIGhhc1NhbWVEb2N1bWVudFRyZWUo
SGlzdG9yeUl0ZW0qIG90aGVySXRlbSkgY29uc3Q7CisgICAgYm9vbCBoYXNTYW1lRG9jdW1lbnRU
cmVlKEhpc3RvcnlJdGVtJiBvdGhlckl0ZW0pIGNvbnN0OwogCiAgICAgSGlzdG9yeUl0ZW0qIGZp
bmRUYXJnZXRJdGVtKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4
IDA1OWYwZmY4ZTRmYzE2ZjZmMDkzYTFjZDBhYzI3OWUyYzQ3MDk3NGQuLmZmMWVjYzRlMmExMWNh
NTA1OWQ1NThhMmJiMjhmNjZhOGEwMzhhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcApAQCAtMzE0Myw3ICszMTQzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFNhbWVE
b2N1bWVudEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0pCiAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9
IG1fZnJhbWUudmlldygpKQogICAgICAgICB2aWV3LT5zZXRXYXNTY3JvbGxlZEJ5VXNlcihmYWxz
ZSk7CiAKLSAgICBoaXN0b3J5KCkuc2V0Q3VycmVudEl0ZW0oJml0ZW0pOworICAgIGhpc3Rvcnko
KS5zZXRDdXJyZW50SXRlbShpdGVtKTsKICAgICAgICAgCiAgICAgLy8gbG9hZEluU2FtZURvY3Vt
ZW50KCkgYWN0dWFsbHkgY2hhbmdlcyB0aGUgVVJMIGFuZCBub3RpZmllcyBsb2FkIGRlbGVnYXRl
cyBvZiBhICJmYWtlIiBsb2FkCiAgICAgbG9hZEluU2FtZURvY3VtZW50KGl0ZW0udXJsKCksIGl0
ZW0uc3RhdGVPYmplY3QoKSwgZmFsc2UpOwpAQCAtMzI0Nyw3ICszMjQ3LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6bG9hZEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9hZFR5
cGUpCiB7CiAgICAgbV9yZXF1ZXN0ZWRIaXN0b3J5SXRlbSA9ICZpdGVtOwogICAgIEhpc3RvcnlJ
dGVtKiBjdXJyZW50SXRlbSA9IGhpc3RvcnkoKS5jdXJyZW50SXRlbSgpOwotICAgIGJvb2wgc2Ft
ZURvY3VtZW50TmF2aWdhdGlvbiA9IGN1cnJlbnRJdGVtICYmIGl0ZW0uc2hvdWxkRG9TYW1lRG9j
dW1lbnROYXZpZ2F0aW9uVG8oY3VycmVudEl0ZW0pOworICAgIGJvb2wgc2FtZURvY3VtZW50TmF2
aWdhdGlvbiA9IGN1cnJlbnRJdGVtICYmIGl0ZW0uc2hvdWxkRG9TYW1lRG9jdW1lbnROYXZpZ2F0
aW9uVG8oKmN1cnJlbnRJdGVtKTsKIAogICAgIGlmIChzYW1lRG9jdW1lbnROYXZpZ2F0aW9uKQog
ICAgICAgICBsb2FkU2FtZURvY3VtZW50SXRlbShpdGVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCmluZGV4IGFjZjkwOTA2ZWFkZDIwOWQwZDA0YjRhOGRm
ODcwZTgwZjVlOTdkZTcuLmQ0NjEwY2FlOTI3NDc5YmRlNjAxNDNjM2VhYTQwYTc5Zjc4YWRiODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcApAQCAtMTg1
LDEyICsxODUsMTEgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2F2ZURvY3VtZW50U3RhdGUo
KQogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpOwotICAgIEFTU0VSVChkb2N1bWVudCk7Ci0gICAgCi0g
ICAgaWYgKGl0ZW0tPmlzQ3VycmVudERvY3VtZW50KGRvY3VtZW50KSAmJiBkb2N1bWVudC0+aGFz
TGl2aW5nUmVuZGVyVHJlZSgpKSB7CisgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7Cisg
ICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gKm1fZnJhbWUuZG9jdW1lbnQoKTsKKyAgICBpZiAoaXRl
bS0+aXNDdXJyZW50RG9jdW1lbnQoZG9jdW1lbnQpICYmIGRvY3VtZW50Lmhhc0xpdmluZ1JlbmRl
clRyZWUoKSkgewogICAgICAgICBMT0coTG9hZGluZywgIldlYkNvcmVMb2FkaW5nICVzOiBzYXZp
bmcgZm9ybSBzdGF0ZSB0byAlcCIsIG1fZnJhbWUudHJlZSgpLnVuaXF1ZU5hbWUoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpLCBpdGVtKTsKLSAgICAgICAgaXRlbS0+c2V0RG9jdW1lbnRTdGF0ZShk
b2N1bWVudC0+Zm9ybUVsZW1lbnRzU3RhdGUoKSk7CisgICAgICAgIGl0ZW0tPnNldERvY3VtZW50
U3RhdGUoZG9jdW1lbnQuZm9ybUVsZW1lbnRzU3RhdGUoKSk7CiAgICAgfQogfQogCkBAIC0yNTMs
NyArMjUyLDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6aW52YWxpZGF0ZUN1cnJlbnRJdGVt
Q2FjaGVkUGFnZSgpCiAgICAgfQogfQogCi1ib29sIEhpc3RvcnlDb250cm9sbGVyOjpzaG91bGRT
dG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKiB0YXJnZXRJdGVtKSBjb25zdAor
Ym9vbCBIaXN0b3J5Q29udHJvbGxlcjo6c2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbShI
aXN0b3J5SXRlbSYgdGFyZ2V0SXRlbSkgY29uc3QKIHsKICAgICBpZiAoIW1fY3VycmVudEl0ZW0p
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ2OSw4ICs0NjgsOCBAQCB2b2lkIEhpc3RvcnlD
b250cm9sbGVyOjp1cGRhdGVGb3JDb21taXQoKQogICAgICAgICAvLyBOb3RlIHByZXZpb3VzSXRl
bSBtdXN0IGJlIHNldCBiZWZvcmUgd2UgY2xvc2UgdGhlIFVSTCwgd2hpY2ggd2lsbAogICAgICAg
ICAvLyBoYXBwZW4gd2hlbiB0aGUgZGF0YSBzb3VyY2UgaXMgbWFkZSBub24tcHJvdmlzaW9uYWwg
YmVsb3cKICAgICAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxJdGVtKTsKLSAgICAgICAgc2V0Q3Vy
cmVudEl0ZW0obV9wcm92aXNpb25hbEl0ZW0uZ2V0KCkpOwotICAgICAgICBtX3Byb3Zpc2lvbmFs
SXRlbSA9IDA7CisgICAgICAgIHNldEN1cnJlbnRJdGVtKCptX3Byb3Zpc2lvbmFsSXRlbSk7Cisg
ICAgICAgIG1fcHJvdmlzaW9uYWxJdGVtID0gbnVsbHB0cjsKIAogICAgICAgICAvLyBUZWxsIGFs
bCBvdGhlciBmcmFtZXMgaW4gdGhlIHRyZWUgdG8gY29tbWl0IHRoZWlyIHByb3Zpc2lvbmFsIGl0
ZW1zIGFuZAogICAgICAgICAvLyByZXN0b3JlIHRoZWlyIHNjcm9sbCBwb3NpdGlvbi4gIFdlJ2xs
IGF2b2lkIHRoaXMgZnJhbWUgKHdoaWNoIGhhcyBhbHJlYWR5CkBAIC01MTAsOCArNTA5LDggQEAg
dm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlVXBkYXRlRm9yQ29tbWl0KCkKICAgICAg
ICAgICAgIHZpZXctPnNldFdhc1Njcm9sbGVkQnlVc2VyKGZhbHNlKTsKIAogICAgICAgICAvLyBO
b3cgY29tbWl0IHRoZSBwcm92aXNpb25hbCBpdGVtCi0gICAgICAgIHNldEN1cnJlbnRJdGVtKG1f
cHJvdmlzaW9uYWxJdGVtLmdldCgpKTsKLSAgICAgICAgbV9wcm92aXNpb25hbEl0ZW0gPSAwOwor
ICAgICAgICBzZXRDdXJyZW50SXRlbSgqbV9wcm92aXNpb25hbEl0ZW0pOworICAgICAgICBtX3By
b3Zpc2lvbmFsSXRlbSA9IG51bGxwdHI7CiAKICAgICAgICAgLy8gUmVzdG9yZSBmb3JtIHN0YXRl
ICh3b3JrcyBmcm9tIGN1cnJlbnRJdGVtKQogICAgICAgICByZXN0b3JlRG9jdW1lbnRTdGF0ZSgp
OwpAQCAtNTU1LDEyICs1NTQsMTIgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZl
VXBkYXRlRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbigpCiAKICAgICAvLyBUaGUgcHJvdmlzaW9u
YWwgaXRlbSBtYXkgcmVwcmVzZW50IGEgZGlmZmVyZW50IHBlbmRpbmcgbmF2aWdhdGlvbi4KICAg
ICAvLyBEb24ndCBjb21taXQgaXQgaWYgaXQgaXNuJ3QgYSBzYW1lIGRvY3VtZW50IG5hdmlnYXRp
b24uCi0gICAgaWYgKG1fY3VycmVudEl0ZW0gJiYgIW1fY3VycmVudEl0ZW0tPnNob3VsZERvU2Ft
ZURvY3VtZW50TmF2aWdhdGlvblRvKG1fcHJvdmlzaW9uYWxJdGVtLmdldCgpKSkKKyAgICBpZiAo
bV9jdXJyZW50SXRlbSAmJiAhbV9jdXJyZW50SXRlbS0+c2hvdWxkRG9TYW1lRG9jdW1lbnROYXZp
Z2F0aW9uVG8oKm1fcHJvdmlzaW9uYWxJdGVtKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
Q29tbWl0IHRoZSBwcm92aXNpb25hbCBpdGVtLgotICAgIHNldEN1cnJlbnRJdGVtKG1fcHJvdmlz
aW9uYWxJdGVtLmdldCgpKTsKLSAgICBtX3Byb3Zpc2lvbmFsSXRlbSA9IDA7CisgICAgc2V0Q3Vy
cmVudEl0ZW0oKm1fcHJvdmlzaW9uYWxJdGVtKTsKKyAgICBtX3Byb3Zpc2lvbmFsSXRlbSA9IG51
bGxwdHI7CiAKICAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIHJlc3Qgb2YgdGhlIHRyZWUuCiAgICAg
Zm9yIChGcmFtZSogY2hpbGQgPSBtX2ZyYW1lLnRyZWUoKS5maXJzdENoaWxkKCk7IGNoaWxkOyBj
aGlsZCA9IGNoaWxkLT50cmVlKCkubmV4dFNpYmxpbmcoKSkKQEAgLTU3NSwxMSArNTc0LDExIEBA
IHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckZyYW1lTG9hZENvbXBsZXRlZCgpCiAg
ICAgbV9mcmFtZUxvYWRDb21wbGV0ZSA9IHRydWU7CiB9CiAKLXZvaWQgSGlzdG9yeUNvbnRyb2xs
ZXI6OnNldEN1cnJlbnRJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQordm9pZCBIaXN0b3J5Q29udHJv
bGxlcjo6c2V0Q3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0pCiB7CiAgICAgbV9mcmFtZUxv
YWRDb21wbGV0ZSA9IGZhbHNlOwogICAgIG1fcHJldmlvdXNJdGVtID0gbV9jdXJyZW50SXRlbTsK
LSAgICBtX2N1cnJlbnRJdGVtID0gaXRlbTsKKyAgICBtX2N1cnJlbnRJdGVtID0gJml0ZW07CiB9
CiAKIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNldEN1cnJlbnRJdGVtVGl0bGUoY29uc3QgU3Ry
aW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCkBAIC02MTAsNyArNjA5LDcgQEAgdm9pZCBIaXN0b3J5
Q29udHJvbGxlcjo6c2V0UHJvdmlzaW9uYWxJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAgIG1f
cHJvdmlzaW9uYWxJdGVtID0gaXRlbTsKIH0KIAotdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6aW5p
dGlhbGl6ZUl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCit2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpp
bml0aWFsaXplSXRlbShIaXN0b3J5SXRlbSYgaXRlbSkKIHsKICAgICBEb2N1bWVudExvYWRlciog
ZG9jdW1lbnRMb2FkZXIgPSBtX2ZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAgICAg
QVNTRVJUKGRvY3VtZW50TG9hZGVyKTsKQEAgLTY0MiwzNCArNjQxLDM0IEBAIHZvaWQgSGlzdG9y
eUNvbnRyb2xsZXI6OmluaXRpYWxpemVJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAgIFN0cmlu
ZyBwYXJlbnQgPSBwYXJlbnRGcmFtZSA/IHBhcmVudEZyYW1lLT50cmVlKCkudW5pcXVlTmFtZSgp
IDogIiI7CiAgICAgU3RyaW5nV2l0aERpcmVjdGlvbiB0aXRsZSA9IGRvY3VtZW50TG9hZGVyLT50
aXRsZSgpOwogCi0gICAgaXRlbS0+c2V0VVJMKHVybCk7Ci0gICAgaXRlbS0+c2V0VGFyZ2V0KG1f
ZnJhbWUudHJlZSgpLnVuaXF1ZU5hbWUoKSk7Ci0gICAgaXRlbS0+c2V0UGFyZW50KHBhcmVudCk7
CisgICAgaXRlbS5zZXRVUkwodXJsKTsKKyAgICBpdGVtLnNldFRhcmdldChtX2ZyYW1lLnRyZWUo
KS51bmlxdWVOYW1lKCkpOworICAgIGl0ZW0uc2V0UGFyZW50KHBhcmVudCk7CiAgICAgLy8gRklY
TUU6IHNob3VsZCBzdG9yZSB0aXRsZSBkaXJlY3Rpb25hbGl0eSBpbiBoaXN0b3J5IGFzIHdlbGwu
Ci0gICAgaXRlbS0+c2V0VGl0bGUodGl0bGUuc3RyaW5nKCkpOwotICAgIGl0ZW0tPnNldE9yaWdp
bmFsVVJMU3RyaW5nKG9yaWdpbmFsVVJMLnN0cmluZygpKTsKKyAgICBpdGVtLnNldFRpdGxlKHRp
dGxlLnN0cmluZygpKTsKKyAgICBpdGVtLnNldE9yaWdpbmFsVVJMU3RyaW5nKG9yaWdpbmFsVVJM
LnN0cmluZygpKTsKIAogICAgIGlmICghdW5yZWFjaGFibGVVUkwuaXNFbXB0eSgpIHx8IGRvY3Vt
ZW50TG9hZGVyLT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwKQotICAgICAgICBp
dGVtLT5zZXRMYXN0VmlzaXRXYXNGYWlsdXJlKHRydWUpOworICAgICAgICBpdGVtLnNldExhc3RW
aXNpdFdhc0ZhaWx1cmUodHJ1ZSk7CiAKICAgICAvLyBTYXZlIGZvcm0gc3RhdGUgaWYgdGhpcyBp
cyBhIFBPU1QKLSAgICBpdGVtLT5zZXRGb3JtSW5mb0Zyb21SZXF1ZXN0KGRvY3VtZW50TG9hZGVy
LT5yZXF1ZXN0KCkpOworICAgIGl0ZW0uc2V0Rm9ybUluZm9Gcm9tUmVxdWVzdChkb2N1bWVudExv
YWRlci0+cmVxdWVzdCgpKTsKIH0KIAotUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gSGlzdG9yeUNv
bnRyb2xsZXI6OmNyZWF0ZUl0ZW0oKQorUmVmPEhpc3RvcnlJdGVtPiBIaXN0b3J5Q29udHJvbGxl
cjo6Y3JlYXRlSXRlbSgpCiB7Ci0gICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtID0gSGlzdG9y
eUl0ZW06OmNyZWF0ZSgpOwotICAgIGluaXRpYWxpemVJdGVtKGl0ZW0uZ2V0KCkpOworICAgIFJl
ZjxIaXN0b3J5SXRlbT4gaXRlbSA9IEhpc3RvcnlJdGVtOjpjcmVhdGUoKTsKKyAgICBpbml0aWFs
aXplSXRlbShpdGVtKTsKICAgICAKICAgICAvLyBTZXQgdGhlIGl0ZW0gZm9yIHdoaWNoIHdlIHdp
bGwgc2F2ZSBkb2N1bWVudCBzdGF0ZQotICAgIHNldEN1cnJlbnRJdGVtKGl0ZW0uZ2V0KCkpOwor
ICAgIHNldEN1cnJlbnRJdGVtKGl0ZW0pOwogICAgIAotICAgIHJldHVybiBpdGVtLnJlbGVhc2Uo
KTsKKyAgICByZXR1cm4gaXRlbTsKIH0KIAotUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gSGlzdG9y
eUNvbnRyb2xsZXI6OmNyZWF0ZUl0ZW1UcmVlKEZyYW1lJiB0YXJnZXRGcmFtZSwgYm9vbCBjbGlw
QXRUYXJnZXQpCitSZWY8SGlzdG9yeUl0ZW0+IEhpc3RvcnlDb250cm9sbGVyOjpjcmVhdGVJdGVt
VHJlZShGcmFtZSYgdGFyZ2V0RnJhbWUsIGJvb2wgY2xpcEF0VGFyZ2V0KQogewotICAgIFJlZlB0
cjxIaXN0b3J5SXRlbT4gYmZJdGVtID0gY3JlYXRlSXRlbSgpOworICAgIFJlZjxIaXN0b3J5SXRl
bT4gYmZJdGVtID0gY3JlYXRlSXRlbSgpOwogICAgIGlmICghbV9mcmFtZUxvYWRDb21wbGV0ZSkK
ICAgICAgICAgc2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlVG9JdGVtKG1fcHJldmlvdXNJ
dGVtLmdldCgpKTsKIApAQCAtNzE3LDcgKzcxNiw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6
OnJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFsSXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgSGlzdG9yeUl0
CiAgICAgLy8gU2V0IHByb3Zpc2lvbmFsIGl0ZW0sIHdoaWNoIHdpbGwgYmUgY29tbWl0dGVkIGlu
IHJlY3Vyc2l2ZVVwZGF0ZUZvckNvbW1pdC4KICAgICBtX3Byb3Zpc2lvbmFsSXRlbSA9ICZpdGVt
OwogCi0gICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZEl0ZW0gOiBpdGVtLmNoaWxkcmVuKCkpIHsK
KyAgICBmb3IgKGF1dG8mIGNoaWxkSXRlbSA6IGl0ZW0uY2hpbGRyZW4oKSkgewogICAgICAgICBj
b25zdCBTdHJpbmcmIGNoaWxkRnJhbWVOYW1lID0gY2hpbGRJdGVtLT50YXJnZXQoKTsKIAogICAg
ICAgICBIaXN0b3J5SXRlbSogZnJvbUNoaWxkSXRlbSA9IGZyb21JdGVtLT5jaGlsZEl0ZW1XaXRo
VGFyZ2V0KGNoaWxkRnJhbWVOYW1lKTsKQEAgLTcyNSw3ICs3MjQsNyBAQCB2b2lkIEhpc3RvcnlD
b250cm9sbGVyOjpyZWN1cnNpdmVTZXRQcm92aXNpb25hbEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0s
IEhpc3RvcnlJdAogICAgICAgICBGcmFtZSogY2hpbGRGcmFtZSA9IG1fZnJhbWUudHJlZSgpLmNo
aWxkKGNoaWxkRnJhbWVOYW1lKTsKICAgICAgICAgQVNTRVJUKGNoaWxkRnJhbWUpOwogCi0gICAg
ICAgIGNoaWxkRnJhbWUtPmxvYWRlcigpLmhpc3RvcnkoKS5yZWN1cnNpdmVTZXRQcm92aXNpb25h
bEl0ZW0oKmNoaWxkSXRlbSwgZnJvbUNoaWxkSXRlbSk7CisgICAgICAgIGNoaWxkRnJhbWUtPmxv
YWRlcigpLmhpc3RvcnkoKS5yZWN1cnNpdmVTZXRQcm92aXNpb25hbEl0ZW0oY29uc3RfY2FzdDxI
aXN0b3J5SXRlbSY+KGNoaWxkSXRlbS5nZXQoKSksIGZyb21DaGlsZEl0ZW0pOwogICAgIH0KIH0K
IApAQCAtNzM5LDE0ICs3MzgsMTQgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZl
R29Ub0l0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEhpc3RvcnlJdGVtKiBmcm9tSXQKICAgICB9CiAK
ICAgICAvLyBKdXN0IGl0ZXJhdGUgb3ZlciB0aGUgcmVzdCwgbG9va2luZyBmb3IgZnJhbWVzIHRv
IG5hdmlnYXRlLgotICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGRJdGVtIDogaXRlbS5jaGlsZHJl
bigpKSB7CisgICAgZm9yIChhdXRvJiBjaGlsZEl0ZW0gOiBpdGVtLmNoaWxkcmVuKCkpIHsKICAg
ICAgICAgY29uc3QgU3RyaW5nJiBjaGlsZEZyYW1lTmFtZSA9IGNoaWxkSXRlbS0+dGFyZ2V0KCk7
CiAKICAgICAgICAgSGlzdG9yeUl0ZW0qIGZyb21DaGlsZEl0ZW0gPSBmcm9tSXRlbS0+Y2hpbGRJ
dGVtV2l0aFRhcmdldChjaGlsZEZyYW1lTmFtZSk7CiAgICAgICAgIEFTU0VSVChmcm9tQ2hpbGRJ
dGVtKTsKICAgICAgICAgRnJhbWUqIGNoaWxkRnJhbWUgPSBtX2ZyYW1lLnRyZWUoKS5jaGlsZChj
aGlsZEZyYW1lTmFtZSk7CiAgICAgICAgIEFTU0VSVChjaGlsZEZyYW1lKTsKLSAgICAgICAgY2hp
bGRGcmFtZS0+bG9hZGVyKCkuaGlzdG9yeSgpLnJlY3Vyc2l2ZUdvVG9JdGVtKCpjaGlsZEl0ZW0s
IGZyb21DaGlsZEl0ZW0sIHR5cGUpOworICAgICAgICBjaGlsZEZyYW1lLT5sb2FkZXIoKS5oaXN0
b3J5KCkucmVjdXJzaXZlR29Ub0l0ZW0oY29uc3RfY2FzdDxIaXN0b3J5SXRlbSY+KGNoaWxkSXRl
bS5nZXQoKSksIGZyb21DaGlsZEl0ZW0sIHR5cGUpOwogICAgIH0KIH0KIApAQCAtNzYzLDcgKzc2
Miw3IEBAIGJvb2wgSGlzdG9yeUNvbnRyb2xsZXI6Oml0ZW1zQXJlQ2xvbmVzKEhpc3RvcnlJdGVt
JiBpdGVtMSwgSGlzdG9yeUl0ZW0qIGl0ZW0yKSBjCiAgICAgICAgICYmICZpdGVtMSAhPSBpdGVt
MgogICAgICAgICAmJiBpdGVtMS5pdGVtU2VxdWVuY2VOdW1iZXIoKSA9PSBpdGVtMi0+aXRlbVNl
cXVlbmNlTnVtYmVyKCkKICAgICAgICAgJiYgY3VycmVudEZyYW1lc01hdGNoSXRlbSgmaXRlbTEp
Ci0gICAgICAgICYmIGl0ZW0yLT5oYXNTYW1lRnJhbWVzKCZpdGVtMSk7CisgICAgICAgICYmIGl0
ZW0yLT5oYXNTYW1lRnJhbWVzKGl0ZW0xKTsKIH0KIAogLy8gSGVscGVyIG1ldGhvZCB0aGF0IGRl
dGVybWluZXMgd2hldGhlciB0aGUgY3VycmVudCBmcmFtZSB0cmVlIG1hdGNoZXMgZ2l2ZW4gaGlz
dG9yeSBpdGVtJ3MuCkBAIC04MDEsOSArODAwLDkgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6
dXBkYXRlQmFja0ZvcndhcmRMaXN0Q2xpcHBlZEF0VGFyZ2V0KGJvb2wgZG9DbGlwKQogCiAgICAg
RnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyID0gbV9mcmFtZS5tYWluRnJhbWUoKS5sb2FkZXIoKTsK
IAotICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gdG9wSXRlbSA9IGZyYW1lTG9hZGVyLmhpc3Rvcnko
KS5jcmVhdGVJdGVtVHJlZShtX2ZyYW1lLCBkb0NsaXApOwotICAgIExPRyhCYWNrRm9yd2FyZCwg
IldlYkNvcmVCYWNrRm9yd2FyZCAtIEFkZGluZyBiYWNrZm9yd2FyZCBpdGVtICVwIGZvciBmcmFt
ZSAlcyIsIHRvcEl0ZW0uZ2V0KCksIG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+
dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwotICAgIHBhZ2UtPmJhY2tGb3J3YXJkKCku
YWRkSXRlbSh0b3BJdGVtLnJlbGVhc2UoKSk7CisgICAgUmVmPEhpc3RvcnlJdGVtPiB0b3BJdGVt
ID0gZnJhbWVMb2FkZXIuaGlzdG9yeSgpLmNyZWF0ZUl0ZW1UcmVlKG1fZnJhbWUsIGRvQ2xpcCk7
CisgICAgTE9HKEJhY2tGb3J3YXJkLCAiV2ViQ29yZUJhY2tGb3J3YXJkIC0gQWRkaW5nIGJhY2tm
b3J3YXJkIGl0ZW0gJXAgZm9yIGZyYW1lICVzIiwgdG9wSXRlbS5wdHIoKSwgbV9mcmFtZS5sb2Fk
ZXIoKS5kb2N1bWVudExvYWRlcigpLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Cisg
ICAgcGFnZS0+YmFja0ZvcndhcmQoKS5hZGRJdGVtKFdURjo6bW92ZSh0b3BJdGVtKSk7CiB9CiAK
IHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUN1cnJlbnRJdGVtKCkKQEAgLTgyMyw3ICs4
MjIsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVDdXJyZW50SXRlbSgpCiAgICAg
ICAgIC8vIGRlcGVuZGVudCBvbiB0aGUgZG9jdW1lbnQuCiAgICAgICAgIGJvb2wgaXNUYXJnZXRJ
dGVtID0gbV9jdXJyZW50SXRlbS0+aXNUYXJnZXRJdGVtKCk7CiAgICAgICAgIG1fY3VycmVudEl0
ZW0tPnJlc2V0KCk7Ci0gICAgICAgIGluaXRpYWxpemVJdGVtKG1fY3VycmVudEl0ZW0uZ2V0KCkp
OworICAgICAgICBpbml0aWFsaXplSXRlbSgqbV9jdXJyZW50SXRlbSk7CiAgICAgICAgIG1fY3Vy
cmVudEl0ZW0tPnNldElzVGFyZ2V0SXRlbShpc1RhcmdldEl0ZW0pOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIC8vIEV2ZW4gaWYgdGhlIGZpbmFsIFVSTCBkaWRuJ3QgY2hhbmdlLCB0aGUgZm9ybSBk
YXRhIG1heSBoYXZlIGNoYW5nZWQuCkBAIC04NDAsNyArODM5LDcgQEAgdm9pZCBIaXN0b3J5Q29u
dHJvbGxlcjo6cHVzaFN0YXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0
ZU9iamVjdCwKICAgICBBU1NFUlQocGFnZSk7CiAKICAgICAvLyBHZXQgYSBIaXN0b3J5SXRlbSB0
cmVlIGZvciB0aGUgY3VycmVudCBmcmFtZSB0cmVlLgotICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4g
dG9wSXRlbSA9IG1fZnJhbWUubWFpbkZyYW1lKCkubG9hZGVyKCkuaGlzdG9yeSgpLmNyZWF0ZUl0
ZW1UcmVlKG1fZnJhbWUsIGZhbHNlKTsKKyAgICBSZWY8SGlzdG9yeUl0ZW0+IHRvcEl0ZW0gPSBt
X2ZyYW1lLm1haW5GcmFtZSgpLmxvYWRlcigpLmhpc3RvcnkoKS5jcmVhdGVJdGVtVHJlZShtX2Zy
YW1lLCBmYWxzZSk7CiAgICAgCiAgICAgLy8gT3ZlcnJpZGUgZGF0YSBpbiB0aGUgY3VycmVudCBp
dGVtIChjcmVhdGVkIGJ5IGNyZWF0ZUl0ZW1UcmVlKSB0byByZWZsZWN0CiAgICAgLy8gdGhlIHB1
c2hTdGF0ZSgpIGFyZ3VtZW50cy4KQEAgLTg0OCw3ICs4NDcsNyBAQCB2b2lkIEhpc3RvcnlDb250
cm9sbGVyOjpwdXNoU3RhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRl
T2JqZWN0LAogICAgIG1fY3VycmVudEl0ZW0tPnNldFN0YXRlT2JqZWN0KHN0YXRlT2JqZWN0KTsK
ICAgICBtX2N1cnJlbnRJdGVtLT5zZXRVUkxTdHJpbmcodXJsU3RyaW5nKTsKIAotICAgIHBhZ2Ut
PmJhY2tGb3J3YXJkKCkuYWRkSXRlbSh0b3BJdGVtLnJlbGVhc2UoKSk7CisgICAgcGFnZS0+YmFj
a0ZvcndhcmQoKS5hZGRJdGVtKFdURjo6bW92ZSh0b3BJdGVtKSk7CiAKICAgICBpZiAobV9mcmFt
ZS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmgKaW5kZXggMWI0MGE4MGIwZTMyNzE4
YjMzZWZiNDIyYWFmZTY3NmZiYzNjN2ZlOC4uZTM5NTJjNjU1OTQzMmU3OGJhOWQ1N2Q2MDA3OTI4
MjBhNmYwODc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250
cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmgK
QEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlRm9yRnJhbWVMb2FkQ29t
cGxldGVkKCk7CiAKICAgICBIaXN0b3J5SXRlbSogY3VycmVudEl0ZW0oKSBjb25zdCB7IHJldHVy
biBtX2N1cnJlbnRJdGVtLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRDdXJyZW50SXRlbShIaXN0b3J5
SXRlbSopOworICAgIHZvaWQgc2V0Q3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0mKTsKICAgICB2b2lk
IHNldEN1cnJlbnRJdGVtVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIGJv
b2wgY3VycmVudEl0ZW1TaG91bGRCZVJlcGxhY2VkKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZXBsYWNlQ3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0qKTsKQEAgLTkyLDEyICs5Miwx
MiBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFBhZ2U7Ci0gICAgYm9v
bCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKikgY29uc3Q7Cisg
ICAgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtJikgY29u
c3Q7CiAgICAgdm9pZCBnb1RvSXRlbShIaXN0b3J5SXRlbSYsIEZyYW1lTG9hZFR5cGUpOwogCi0g
ICAgdm9pZCBpbml0aWFsaXplSXRlbShIaXN0b3J5SXRlbSopOwotICAgIFBhc3NSZWZQdHI8SGlz
dG9yeUl0ZW0+IGNyZWF0ZUl0ZW0oKTsKLSAgICBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBjcmVh
dGVJdGVtVHJlZShGcmFtZSYgdGFyZ2V0RnJhbWUsIGJvb2wgY2xpcEF0VGFyZ2V0KTsKKyAgICB2
b2lkIGluaXRpYWxpemVJdGVtKEhpc3RvcnlJdGVtJik7CisgICAgUmVmPEhpc3RvcnlJdGVtPiBj
cmVhdGVJdGVtKCk7CisgICAgUmVmPEhpc3RvcnlJdGVtPiBjcmVhdGVJdGVtVHJlZShGcmFtZSYg
dGFyZ2V0RnJhbWUsIGJvb2wgY2xpcEF0VGFyZ2V0KTsKIAogICAgIHZvaWQgcmVjdXJzaXZlU2V0
UHJvdmlzaW9uYWxJdGVtKEhpc3RvcnlJdGVtJiwgSGlzdG9yeUl0ZW0qKTsKICAgICB2b2lkIHJl
Y3Vyc2l2ZUdvVG9JdGVtKEhpc3RvcnlJdGVtJiwgSGlzdG9yeUl0ZW0qLCBGcmFtZUxvYWRUeXBl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDI3YzA0YjU5NThkY2JhZjJkYjU1ZjZmYmUyM2E1MTdi
ZjZkMjE1NTIuLjA2YjkxYmFmMGNlODkxNjkxMTZjMjE1YmFjYjRiZDE4ZGI4NTk5NGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcApAQCAtNDM2LDcgKzQzNiw3IEBAIHZvaWQgUGFnZTo6Z29Ub0l0ZW0oSGlz
dG9yeUl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgdHlwZSkKICAgICAvLyBiZWluZyBkZXJlZigp
LWVkLiBNYWtlIHN1cmUgd2UgY2FuIHN0aWxsIHVzZSBpdCB3aXRoIEhpc3RvcnlDb250cm9sbGVy
Ojpnb1RvSXRlbSBsYXRlci4KICAgICBSZWY8SGlzdG9yeUl0ZW0+IHByb3RlY3RvcihpdGVtKTsK
IAotICAgIGlmIChtX21haW5GcmFtZS0+bG9hZGVyKCkuaGlzdG9yeSgpLnNob3VsZFN0b3BMb2Fk
aW5nRm9ySGlzdG9yeUl0ZW0oJml0ZW0pKQorICAgIGlmIChtX21haW5GcmFtZS0+bG9hZGVyKCku
aGlzdG9yeSgpLnNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oaXRlbSkpCiAgICAgICAg
IG1fbWFpbkZyYW1lLT5sb2FkZXIoKS5zdG9wQWxsTG9hZGVycygpOwogCiAgICAgbV9tYWluRnJh
bWUtPmxvYWRlcigpLmhpc3RvcnkoKS5nb1RvSXRlbShpdGVtLCB0eXBlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktp
dEV4cG9ydHMuZGVmLmluIGIvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBv
cnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KaW5kZXggYjA3YzQ0YjQ2MzFiZmM5YzQw
Y2U1YzUyZWEyZThhNjNkMzAyZDEwMS4uMGE3MmExZGQyZjI5MjkxNjk5N2NmZGMzNmMxZjEwYjg3
OGNlNzRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRF
eHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4K
QEAgLTE2OSw3ICsxNjksNiBAQCBFWFBPUlRTCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9h
YnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3Jtc0BSZW5kZXJPYmplY3RAV2Vi
Q29yZUBAUUJFP0FWSW50UmVjdEAyQFhaLCA/YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmlu
Z1RyYW5zZm9ybXNAUmVuZGVyT2JqZWN0QFdlYkNvcmVAQFFFQkE/QVZJbnRSZWN0QDJAWFopCiAg
ICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9kZXNjcmlwdGlvbkBEb2N1bWVudE1hcmtlckBXZWJD
b3JlQEBRQkVBQlZTdHJpbmdAV1RGQEBYWiwgP2Rlc2NyaXB0aW9uQERvY3VtZW50TWFya2VyQFdl
YkNvcmVAQFFFQkFBRUJWU3RyaW5nQFdURkBAWFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVy
KD9jYWNoZURPTVN0cnVjdHVyZUBXZWJDb3JlQEBZQVBBVlN0cnVjdHVyZUBKU0NAQFBBVkpTRE9N
R2xvYmFsT2JqZWN0QDFAUEFWMjNAUEJVQ2xhc3NJbmZvQDNAQFosID9jYWNoZURPTVN0cnVjdHVy
ZUBXZWJDb3JlQEBZQVBFQVZTdHJ1Y3R1cmVASlNDQEBQRUFWSlNET01HbG9iYWxPYmplY3RAMUBQ
RUFWMjNAUEVCVUNsYXNzSW5mb0AzQEBaKQotICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/Y2hp
bGRJdGVtV2l0aFRhcmdldEBIaXN0b3J5SXRlbUBXZWJDb3JlQEBRQkVQQVYxMkBBQlZTdHJpbmdA
V1RGQEBAWiwgP2NoaWxkSXRlbVdpdGhUYXJnZXRASGlzdG9yeUl0ZW1AV2ViQ29yZUBAUUVCQVBF
QVYxMkBBRUJWU3RyaW5nQFdURkBAQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9jcmVh
dGVAUmFuZ2VAV2ViQ29yZUBAU0E/QVY/JFJlZkBWUmFuZ2VAV2ViQ29yZUBAQFdURkBAQUFWRG9j
dW1lbnRAMkBWPyRQYXNzUmVmUHRyQFZOb2RlQFdlYkNvcmVAQEA0QEgxSEBaLCA/Y3JlYXRlQFJh
bmdlQFdlYkNvcmVAQFNBP0FWPyRSZWZAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQEFFQVZEb2N1bWVu
dEAyQFY/JFBhc3NSZWZQdHJAVk5vZGVAV2ViQ29yZUBAQDRASDFIQFopCiAgICAgICAgIHN5bWJv
bFdpdGhQb2ludGVyKD9jb21tb25WTUBKU0RPTVdpbmRvd0Jhc2VAV2ViQ29yZUBAU0FBQVZWTUBK
U0NAQFhaLCA/Y29tbW9uVk1ASlNET01XaW5kb3dCYXNlQFdlYkNvcmVAQFNBQUVBVlZNQEpTQ0BA
WFopCiAJCXN5bWJvbFdpdGhQb2ludGVyKD9jb250ZW50RG9jdW1lbnRASFRNTEZyYW1lT3duZXJF
bGVtZW50QFdlYkNvcmVAQFFCRVBBVkRvY3VtZW50QDJAWFosID9jb250ZW50RG9jdW1lbnRASFRN
TEZyYW1lT3duZXJFbGVtZW50QFdlYkNvcmVAQFFFQkFQRUFWRG9jdW1lbnRAMkBYWikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0Lm1tIGIv
U291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0KaW5kZXggZWJm
YmQ0ZDAwNDEwMjNjMjVjMmM2OWU4NDc5MDgyYzhjNDI2MzU3Zi4uZTk3MDUyNGQyY2VkMjY5Y2Y4
M2M0MmNkMDA2MjM2MTFjZWVhOTFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvSGlz
dG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvSGlzdG9y
eS9XZWJCYWNrRm9yd2FyZExpc3QubW0KQEAgLTE1Myw3ICsxNTMsOCBAQCAtICh2b2lkKV9jbG9z
ZQogCiAtICh2b2lkKWFkZEl0ZW06KFdlYkhpc3RvcnlJdGVtICopZW50cnkKIHsKLSAgICBjb3Jl
KHNlbGYpLT5hZGRJdGVtKGNvcmUoZW50cnkpKTsKKyAgICBBU1NFUlQoZW50cnkpOworICAgIGNv
cmUoc2VsZiktPmFkZEl0ZW0oKmNvcmUoZW50cnkpKTsKICAgICAKICAgICAvLyBTaW5jZSB0aGUg
YXNzdW1lZCBjb250cmFjdCB3aXRoIFdlYkJhY2tGb3J3YXJkTGlzdCBpcyB0aGF0IGl0IHJldGFp
bnMgaXRzIFdlYkhpc3RvcnlJdGVtcywKICAgICAvLyB0aGUgZm9sbG93aW5nIGxpbmUgcHJldmVu
dHMgYSB3aG9sZSBjbGFzcyBvZiBwcm9ibGVtcyB3aGVyZSBhIGhpc3RvcnkgaXRlbSB3aWxsIGJl
IGNyZWF0ZWQgaW4KQEAgLTE3OCwxMSArMTc5LDExIEBAIC0gKE5TRGljdGlvbmFyeSAqKWRpY3Rp
b25hcnlSZXByZXNlbnRhdGlvbgogewogICAgIEJhY2tGb3J3YXJkTGlzdCAqY29yZUJGTGlzdCA9
IGNvcmUoc2VsZik7CiAgICAgCi0gICAgSGlzdG9yeUl0ZW1WZWN0b3IgaGlzdG9yeUl0ZW1zID0g
Y29yZUJGTGlzdC0+ZW50cmllcygpOworICAgIEhpc3RvcnlJdGVtVmVjdG9yJiBoaXN0b3J5SXRl
bXMgPSBjb3JlQkZMaXN0LT5lbnRyaWVzKCk7CiAgICAgdW5zaWduZWQgc2l6ZSA9IGhpc3RvcnlJ
dGVtcy5zaXplKCk7CiAgICAgTlNNdXRhYmxlQXJyYXkgKmVudHJpZXNBcnJheSA9IFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6c2l6ZV07CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW2VudHJpZXNBcnJheSBhZGRPYmplY3Q6
W2tpdChoaXN0b3J5SXRlbXNbaV0uZ2V0KCkpIGRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbkluY2x1
ZGluZ0NoaWxkcmVuOk5PXV07CisgICAgICAgIFtlbnRyaWVzQXJyYXkgYWRkT2JqZWN0OltraXQo
aGlzdG9yeUl0ZW1zW2ldLnB0cigpKSBkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb25JbmNsdWRpbmdD
aGlsZHJlbjpOT11dOwogICAgIAogICAgIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IFtOU0Rp
Y3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKICAgICAgICAgZW50cmllc0Fy
cmF5LCBXZWJCYWNrRm9yd2FyZExpc3REaWN0aW9uYXJ5RW50cmllc0tleSwKQEAgLTIwMyw3ICsy
MDQsNyBAQCAtICh2b2lkKXNldFRvTWF0Y2hEaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246KE5TRGlj
dGlvbmFyeSAqKWRpY3Rpb25hcnkKICAgICAKICAgICBmb3IgKE5TRGljdGlvbmFyeSAqaXRlbURp
Y3Rpb25hcnkgaW4gW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OldlYkJhY2tGb3J3YXJkTGlzdERp
Y3Rpb25hcnlFbnRyaWVzS2V5XSkgewogICAgICAgICBXZWJIaXN0b3J5SXRlbSAqaXRlbSA9IFtb
V2ViSGlzdG9yeUl0ZW0gYWxsb2NdIGluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOml0
ZW1EaWN0aW9uYXJ5XTsKLSAgICAgICAgY29yZUJGTGlzdC0+YWRkSXRlbShjb3JlKGl0ZW0pKTsK
KyAgICAgICAgY29yZUJGTGlzdC0+YWRkSXRlbSgqY29yZShpdGVtKSk7CiAgICAgICAgIFtpdGVt
IHJlbGVhc2VdOwogICAgIH0KIApAQCAtMjU1LDcgKzI1Niw3IEBAIHN0YXRpYyBOU0FycmF5KiB2
ZWN0b3JUb05TQXJyYXkoSGlzdG9yeUl0ZW1WZWN0b3ImIGxpc3QpCiAgICAgdW5zaWduZWQgc2l6
ZSA9IGxpc3Quc2l6ZSgpOwogICAgIE5TTXV0YWJsZUFycmF5ICpyZXN1bHQgPSBbW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpzaXplXSBhdXRvcmVsZWFzZV07CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3Jlc3VsdCBhZGRP
YmplY3Q6a2l0KGxpc3RbaV0uZ2V0KCkpXTsKKyAgICAgICAgW3Jlc3VsdCBhZGRPYmplY3Q6a2l0
KGxpc3RbaV0ucHRyKCkpXTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0zMjcsMTQgKzMy
OCwxNCBAQCAtKE5TU3RyaW5nICopZGVzY3JpcHRpb24KICAgICAKICAgICB1bnNpZ25lZCBzaXpl
ID0gZW50cmllcy5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsr
aSkgewotICAgICAgICBpZiAoZW50cmllc1tpXSA9PSBiYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJ
dGVtKCkpIHsKKyAgICAgICAgaWYgKGVudHJpZXNbaV0ucHRyKCkgPT0gYmFja0ZvcndhcmRMaXN0
LT5jdXJyZW50SXRlbSgpKSB7CiAgICAgICAgICAgICBbcmVzdWx0IGFwcGVuZFN0cmluZzpAIiA+
Pj4iXTsgCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBbcmVzdWx0IGFwcGVuZFN0cmlu
ZzpAIiAgICAiXTsgCiAgICAgICAgIH0gICAKICAgICAgICAgW3Jlc3VsdCBhcHBlbmRGb3JtYXQ6
QCIlMmQpICIsIGldOwogICAgICAgICBpbnQgY3VyclBvcyA9IFtyZXN1bHQgbGVuZ3RoXTsKLSAg
ICAgICAgW3Jlc3VsdCBhcHBlbmRTdHJpbmc6W2tpdChlbnRyaWVzW2ldLmdldCgpKSBkZXNjcmlw
dGlvbl1dOworICAgICAgICBbcmVzdWx0IGFwcGVuZFN0cmluZzpba2l0KGVudHJpZXNbaV0ucHRy
KCkpIGRlc2NyaXB0aW9uXV07CiAKICAgICAgICAgLy8gc2hpZnQgYWxsIHRoZSBjb250ZW50cyBv
dmVyLiAgYSBiaXQgc2xvdywgYnV0IHRoaXMgaXMgZm9yIGRlYnVnZ2luZwogICAgICAgICBOU1Jh
bmdlIHJlcGxSYW5nZSA9IHsgc3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oY3VyclBvcyksIFtyZXN1
bHQgbGVuZ3RoXSAtIGN1cnJQb3MgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0hp
c3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhp
c3RvcnlJdGVtLm1tCmluZGV4IGU2NzdiMDFlNzNiZGNmMjI3YjI4ZjQxZjg4Y2ExNjE5NWQ5NWRj
M2IuLmFlNzYwMWZjZDcxZDEzODYwNjkxNTMzZTU1MDI3ZDRlZjNhNjJiYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQpAQCAtMjU4LDcgKzI1OCw3IEBA
IC0gKE5TU3RyaW5nICopZGVzY3JpcHRpb24KICAgICAgICAgaW50IGN1cnJQb3MgPSBbcmVzdWx0
IGxlbmd0aF07CiAgICAgICAgIHVuc2lnbmVkIHNpemUgPSBjaGlsZHJlbi5zaXplKCk7ICAgICAg
ICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAg
ICAgICAgV2ViSGlzdG9yeUl0ZW0gKmNoaWxkID0ga2l0KGNoaWxkcmVuW2ldLmdldCgpKTsKKyAg
ICAgICAgICAgIFdlYkhpc3RvcnlJdGVtICpjaGlsZCA9IGtpdChjb25zdF9jYXN0PEhpc3RvcnlJ
dGVtKj4oY2hpbGRyZW5baV0ucHRyKCkpKTsKICAgICAgICAgICAgIFtyZXN1bHQgYXBwZW5kU3Ry
aW5nOkAiXG4iXTsKICAgICAgICAgICAgIFtyZXN1bHQgYXBwZW5kU3RyaW5nOltjaGlsZCBkZXNj
cmlwdGlvbl1dOwogICAgICAgICB9CkBAIC0zODAsNyArMzgwLDcgQEAgLSAoaWQpaW5pdEZyb21E
aWN0aW9uYXJ5UmVwcmVzZW50YXRpb246KE5TRGljdGlvbmFyeSAqKWRpY3QKICAgICBpZiAoY2hp
bGREaWN0cykgewogICAgICAgICBmb3IgKGludCBpID0gW2NoaWxkRGljdHMgY291bnRdIC0gMTsg
aSA+PSAwOyBpLS0pIHsKICAgICAgICAgICAgIFdlYkhpc3RvcnlJdGVtICpjaGlsZCA9IFtbV2Vi
SGlzdG9yeUl0ZW0gYWxsb2NdIGluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOltjaGls
ZERpY3RzIG9iamVjdEF0SW5kZXg6aV1dOwotICAgICAgICAgICAgY29yZShfcHJpdmF0ZSktPmFk
ZENoaWxkSXRlbShjb3JlKGNoaWxkLT5fcHJpdmF0ZSkpOworICAgICAgICAgICAgY29yZShfcHJp
dmF0ZSktPmFkZENoaWxkSXRlbSgqY29yZShjaGlsZC0+X3ByaXZhdGUpKTsKICAgICAgICAgICAg
IFtjaGlsZCByZWxlYXNlXTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ4MSw3ICs0ODEsNyBAQCAt
IChOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24KICAgICAgICAgTlNNdXRh
YmxlQXJyYXkgKmNoaWxkRGljdHMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6
Y2hpbGRyZW4uc2l6ZSgpXTsKICAgICAgICAgCiAgICAgICAgIGZvciAoaW50IGkgPSBjaGlsZHJl
bi5zaXplKCkgLSAxOyBpID49IDA7IGktLSkKLSAgICAgICAgICAgIFtjaGlsZERpY3RzIGFkZE9i
amVjdDpba2l0KGNoaWxkcmVuW2ldLmdldCgpKSBkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb25dXTsK
KyAgICAgICAgICAgIFtjaGlsZERpY3RzIGFkZE9iamVjdDpba2l0KGNvbnN0X2Nhc3Q8SGlzdG9y
eUl0ZW0qPihjaGlsZHJlbltpXS5wdHIoKSkpIGRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbl1dOwog
ICAgICAgICBbZGljdCBzZXRPYmplY3Q6IGNoaWxkRGljdHMgZm9yS2V5OmNoaWxkcmVuS2V5XTsK
ICAgICB9CiAKQEAgLTU0MSw3ICs1NDEsNyBAQCAtIChOU0FycmF5ICopY2hpbGRyZW4KICAgICBO
U011dGFibGVBcnJheSAqcmVzdWx0ID0gW1tbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRo
Q2FwYWNpdHk6c2l6ZV0gYXV0b3JlbGVhc2VdOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0OmtpdChjaGlsZHJl
bltpXS5nZXQoKSldOworICAgICAgICBbcmVzdWx0IGFkZE9iamVjdDpraXQoY29uc3RfY2FzdDxI
aXN0b3J5SXRlbSo+KGNoaWxkcmVuW2ldLnB0cigpKSldOwogICAgIAogICAgIHJldHVybiByZXN1
bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNzRhZDU1YTk0NmVk
OGUzOTcwNGE2ZGQzYmE4NDhhYmM4ODAxMGVhMi4uNDgzY2EwZWUxNGZlYzYwOTFhMjNkZmU2YjBk
YTI4ZDkwOTdlNDlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMjAw
MiwxMCArMjAwMiwxMCBAQCAtICh2b2lkKV9sb2FkQmFja0ZvcndhcmRMaXN0RnJvbU90aGVyVmll
dzooV2ViVmlldyAqKW90aGVyVmlldwogICAgICAgICAgICAgLy8gdW50aWwgd2UgbGVhdmUgdGhh
dCBwYWdlLgogICAgICAgICAgICAgb3RoZXJWaWV3LT5fcHJpdmF0ZS0+cGFnZS0+bWFpbkZyYW1l
KCkubG9hZGVyKCkuaGlzdG9yeSgpLnNhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlKCk7CiAgICAg
ICAgIH0KLSAgICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBuZXdJdGVtID0gb3RoZXJCYWNrRm9y
d2FyZENsaWVudC0+aXRlbUF0SW5kZXgoaSktPmNvcHkoKTsKKyAgICAgICAgUmVmPEhpc3RvcnlJ
dGVtPiBuZXdJdGVtID0gb3RoZXJCYWNrRm9yd2FyZENsaWVudC0+aXRlbUF0SW5kZXgoaSktPmNv
cHkoKTsKICAgICAgICAgaWYgKGkgPT0gMCkgCi0gICAgICAgICAgICBuZXdJdGVtVG9Hb1RvID0g
bmV3SXRlbS5nZXQoKTsKLSAgICAgICAgYmFja0ZvcndhcmRDbGllbnQtPmFkZEl0ZW0obmV3SXRl
bS5yZWxlYXNlKCkpOworICAgICAgICAgICAgbmV3SXRlbVRvR29UbyA9IG5ld0l0ZW0ucHRyKCk7
CisgICAgICAgIGJhY2tGb3J3YXJkQ2xpZW50LT5hZGRJdGVtKFdURjo6bW92ZShuZXdJdGVtKSk7
CiAgICAgfQogICAgIAogICAgIEFTU0VSVChuZXdJdGVtVG9Hb1RvKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IGExMzk1ODQ5MjYxNGExZWJhNzc4ZjkxNjk5
MDY4ZWY4YjQ3Y2Q5Y2QuLjk0YjVhMWJmZGYwZGQ3MWM4OTQ1YjVlMjIzYTFkOTZlNmIyMDc2Zjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcApAQCAtMTI0LDcgKzEy
NCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQmFja0ZvcndhcmRMaXN0OjphZGRJ
dGVtKAogICAgIGlmICghaXRlbSB8fCBGQUlMRUQoaXRlbS0+UXVlcnlJbnRlcmZhY2UoJndlYkhp
c3RvcnlJdGVtKSkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgCi0gICAgbV9iYWNrRm9yd2Fy
ZExpc3QtPmFkZEl0ZW0od2ViSGlzdG9yeUl0ZW0tPmhpc3RvcnlJdGVtKCkpOworICAgIG1fYmFj
a0ZvcndhcmRMaXN0LT5hZGRJdGVtKCp3ZWJIaXN0b3J5SXRlbS0+aGlzdG9yeUl0ZW0oKSk7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTIwOSw3ICsyMDksNyBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3RXaXRoTGltaXQoCiAKICAgICBp
ZiAobGlzdCkKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGhpc3RvcnlJdGVtVmVj
dG9yLnNpemUoKTsgaSsrKQotICAgICAgICAgICAgbGlzdFtpXSA9IFdlYkhpc3RvcnlJdGVtOjpj
cmVhdGVJbnN0YW5jZShoaXN0b3J5SXRlbVZlY3RvcltpXS5nZXQoKSk7CisgICAgICAgICAgICBs
aXN0W2ldID0gV2ViSGlzdG9yeUl0ZW06OmNyZWF0ZUluc3RhbmNlKGhpc3RvcnlJdGVtVmVjdG9y
W2ldLnB0cigpKTsKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtMjI2LDcgKzIyNiw3IEBAIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkTGlzdFdp
dGhMaW1pdCgKIAogICAgIGlmIChsaXN0KQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgaGlzdG9yeUl0ZW1WZWN0b3Iuc2l6ZSgpOyBpKyspCi0gICAgICAgICAgICBsaXN0W2ldID0g
V2ViSGlzdG9yeUl0ZW06OmNyZWF0ZUluc3RhbmNlKGhpc3RvcnlJdGVtVmVjdG9yW2ldLmdldCgp
KTsKKyAgICAgICAgICAgIGxpc3RbaV0gPSBXZWJIaXN0b3J5SXRlbTo6Y3JlYXRlSW5zdGFuY2Uo
aGlzdG9yeUl0ZW1WZWN0b3JbaV0ucHRyKCkpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggNjhmNTEzODJlZTUyNTA1YzgzOTJmYjA2
ZWVkMzdlY2RjMmY3YjY4ZS4uZTI0Nzc4NGU1ZWMyNzZhOTY2YjU0OGYyZDMzYmZmOTNkNWEzYWYw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnlJdGVtLmNwcApAQCAtMjg2LDcgKzI4Niw3IEBA
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSGlzdG9yeUl0ZW06OmNoaWxkcmVuKHVuc2ln
bmVkKiBvdXRDaGlsZENvdW50LCBTQUZFCiAgICAgICAgIHJldHVybiBFX09VVE9GTUVNT1JZOwog
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNoaWxkQ291bnQ7ICsraSkgewotICAgICAg
ICBDT01QdHI8V2ViSGlzdG9yeUl0ZW0+IGl0ZW0oQWRvcHRDT00sIFdlYkhpc3RvcnlJdGVtOjpj
cmVhdGVJbnN0YW5jZShjb3JlQ2hpbGRyZW5baV0pKTsKKyAgICAgICAgQ09NUHRyPFdlYkhpc3Rv
cnlJdGVtPiBpdGVtKEFkb3B0Q09NLCBXZWJIaXN0b3J5SXRlbTo6Y3JlYXRlSW5zdGFuY2UoY29u
c3RfY2FzdDxIaXN0b3J5SXRlbSo+KGNvcmVDaGlsZHJlbltpXS5wdHIoKSkpKTsKICAgICAgICAg
aWYgKCFpdGVtKSB7CiAgICAgICAgICAgICBTYWZlQXJyYXlEZXN0cm95KGNoaWxkcmVuKTsKICAg
ICAgICAgICAgIHJldHVybiBFX09VVE9GTUVNT1JZOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAppbmRleCA5
OWQzNTNjMDA5N2YyODAzNThlYmRjMzVmMGUwMGUzMGUyNjRhYmJlLi43YWUwMmMwNTkzODcwNWZm
MjliZWJiYTkzZDU3M2NkNjAxNWE3MzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApAQCAtNTQ4OSwx
MCArNTQ4OSwxMCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmxvYWRCYWNr
Rm9yd2FyZExpc3RGcm9tT3RoZXJWaWV3KAogICAgICAgICAgICAgLy8gdW50aWwgd2UgbGVhdmUg
dGhhdCBwYWdlLgogICAgICAgICAgICAgb3RoZXJXZWJWaWV3LT5tX3BhZ2UtPm1haW5GcmFtZSgp
LmxvYWRlcigpLmhpc3RvcnkoKS5zYXZlRG9jdW1lbnRBbmRTY3JvbGxTdGF0ZSgpOwogICAgICAg
ICB9Ci0gICAgICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gbmV3SXRlbSA9IG90aGVyQmFja0Zvcndh
cmRDbGllbnQtPml0ZW1BdEluZGV4KGkpLT5jb3B5KCk7CisgICAgICAgIFJlZjxIaXN0b3J5SXRl
bT4gbmV3SXRlbSA9IG90aGVyQmFja0ZvcndhcmRDbGllbnQtPml0ZW1BdEluZGV4KGkpLT5jb3B5
KCk7CiAgICAgICAgIGlmICghaSkgCi0gICAgICAgICAgICBuZXdJdGVtVG9Hb1RvID0gbmV3SXRl
bS5nZXQoKTsKLSAgICAgICAgYmFja0ZvcndhcmRDbGllbnQtPmFkZEl0ZW0obmV3SXRlbS5yZWxl
YXNlKCkpOworICAgICAgICAgICAgbmV3SXRlbVRvR29UbyA9IG5ld0l0ZW0ucHRyKCk7CisgICAg
ICAgIGJhY2tGb3J3YXJkQ2xpZW50LT5hZGRJdGVtKFdURjo6bW92ZShuZXdJdGVtKSk7CiAgICAg
fQogICAgIAogICAgIEFTU0VSVChuZXdJdGVtVG9Hb1RvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2Fy
ZExpc3RJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAppbmRleCAyODkxOTM1M2VlZTBj
Y2Y1MzA4Zjg1ODMyMDZhYTQwNzgxNGEwYmMwLi5hYWU2YTQ2YWU2MzJmOGI1NGMzZDcyNTdmNjRj
ZjIwMjkyZjY5MDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tG
b3J3YXJkTGlzdEl0ZW0uY3BwCkBAIC0zOCw3ICszOCw3IEBAIFBhc3NSZWZQdHI8QVBJOjpBcnJh
eT4gSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtOjpjaGlsZHJlbigpIGNvbnN0CiAg
ICAgY2hpbGRyZW4ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2l0ZW0tPmNoaWxkcmVuKCkuc2l6
ZSgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBtX2l0ZW0tPmNoaWxkcmVuKCkp
Ci0gICAgICAgIGNoaWxkcmVuLnVuY2hlY2tlZEFwcGVuZChJbmplY3RlZEJ1bmRsZUJhY2tGb3J3
YXJkTGlzdEl0ZW06OmNyZWF0ZShjaGlsZCkpOworICAgICAgICBjaGlsZHJlbi51bmNoZWNrZWRB
cHBlbmQoSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoY29uc3RfY2Fz
dDxIaXN0b3J5SXRlbSo+KGNoaWxkLnB0cigpKSkpOwogCiAgICAgcmV0dXJuIEFQSTo6QXJyYXk6
OmNyZWF0ZShXVEY6Om1vdmUoY2hpbGRyZW4pKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNv
bnZlcnNpb24uY3BwCmluZGV4IGIwOTQwOTk4ZmYwNTA3ZDBhNGUzYzQ0ZDRiNTJkNDgzNjFkZmMw
YzguLmZkMGE5OGU4NDc1OTRjMzQyMDdhMjg1YmI2ZWMzMDU3ZmQ1ODM0OTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29u
dmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBG
cmFtZVN0YXRlIHRvRnJhbWVTdGF0ZShjb25zdCBIaXN0b3J5SXRlbSYgaGlzdG9yeUl0ZW0pCiAj
ZW5kaWYKIAogICAgIGZvciAoYXV0byYgY2hpbGRIaXN0b3J5SXRlbSA6IGhpc3RvcnlJdGVtLmNo
aWxkcmVuKCkpIHsKLSAgICAgICAgRnJhbWVTdGF0ZSBjaGlsZEZyYW1lU3RhdGUgPSB0b0ZyYW1l
U3RhdGUoKmNoaWxkSGlzdG9yeUl0ZW0pOworICAgICAgICBGcmFtZVN0YXRlIGNoaWxkRnJhbWVT
dGF0ZSA9IHRvRnJhbWVTdGF0ZShjaGlsZEhpc3RvcnlJdGVtKTsKICAgICAgICAgZnJhbWVTdGF0
ZS5jaGlsZHJlbi5hcHBlbmQoV1RGOjptb3ZlKGNoaWxkRnJhbWVTdGF0ZSkpOwogICAgIH0KIApA
QCAtMTc4LDEwICsxNzgsMTAgQEAgc3RhdGljIHZvaWQgYXBwbHlGcmFtZVN0YXRlKEhpc3RvcnlJ
dGVtJiBoaXN0b3J5SXRlbSwgY29uc3QgRnJhbWVTdGF0ZSYgZnJhbWVTdGEKICNlbmRpZgogCiAg
ICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZEZyYW1lU3RhdGUgOiBmcmFtZVN0YXRlLmNoaWxkcmVu
KSB7Ci0gICAgICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gY2hpbGRIaXN0b3J5SXRlbSA9IEhpc3Rv
cnlJdGVtOjpjcmVhdGUoY2hpbGRGcmFtZVN0YXRlLnVybFN0cmluZywgU3RyaW5nKCkpOwotICAg
ICAgICBhcHBseUZyYW1lU3RhdGUoKmNoaWxkSGlzdG9yeUl0ZW0sIGNoaWxkRnJhbWVTdGF0ZSk7
CisgICAgICAgIFJlZjxIaXN0b3J5SXRlbT4gY2hpbGRIaXN0b3J5SXRlbSA9IEhpc3RvcnlJdGVt
OjpjcmVhdGUoY2hpbGRGcmFtZVN0YXRlLnVybFN0cmluZywgU3RyaW5nKCkpOworICAgICAgICBh
cHBseUZyYW1lU3RhdGUoY2hpbGRIaXN0b3J5SXRlbSwgY2hpbGRGcmFtZVN0YXRlKTsKIAotICAg
ICAgICBoaXN0b3J5SXRlbS5hZGRDaGlsZEl0ZW0oY2hpbGRIaXN0b3J5SXRlbS5yZWxlYXNlKCkp
OworICAgICAgICBoaXN0b3J5SXRlbS5hZGRDaGlsZEl0ZW0oV1RGOjptb3ZlKGNoaWxkSGlzdG9y
eUl0ZW0pKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCmluZGV4IGE5YzY3
NzkwNTZiOTJkNjBkNDk0YjUxNTg5ZjM0ZDUzMTQ1ODhjZjYuLjlkYzJhNjFkODJiODg5MTg0YmMz
MTYzNTE1ZDQwMGUzNWFkNzRlZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcApAQCAtMTQz
LDExICsxNDMsOSBAQCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6V2ViQmFja0ZvcndhcmRMaXN0
UHJveHkoV2ViUGFnZSogcGFnZSkKICAgICBXZWJDb3JlOjpub3RpZnlIaXN0b3J5SXRlbUNoYW5n
ZWQgPSBXSzJOb3RpZnlIaXN0b3J5SXRlbUNoYW5nZWQ7CiB9CiAKLXZvaWQgV2ViQmFja0Zvcndh
cmRMaXN0UHJveHk6OmFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gcHJwSXRlbSkKK3Zv
aWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW0oUmVmPEhpc3RvcnlJdGVtPiYmIGl0
ZW0pCiB7Ci0gICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtID0gcHJwSXRlbTsKLQotICAgIEFT
U0VSVCghaGlzdG9yeUl0ZW1Ub0lETWFwKCkuY29udGFpbnMoaXRlbSkpOworICAgIEFTU0VSVCgh
aGlzdG9yeUl0ZW1Ub0lETWFwKCkuY29udGFpbnMoaXRlbS5wdHIoKSkpOwogCiAgICAgaWYgKCFt
X3BhZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTE1OCwxMCArMTU2LDEwIEBAIHZvaWQgV2ViQmFj
a0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gcHJwSXRl
bSkKIAogICAgIG1fYXNzb2NpYXRlZEl0ZW1JRHMuYWRkKGl0ZW1JRCk7CiAKLSAgICBoaXN0b3J5
SXRlbVRvSURNYXAoKS5zZXQ8SXRlbUFuZFBhZ2VJRD4oaXRlbSwgeyAuaXRlbUlEID0gaXRlbUlE
LCAucGFnZUlEID0gbV9wYWdlLT5wYWdlSUQoKSB9KTsKLSAgICBpZFRvSGlzdG9yeUl0ZW1NYXAo
KS5zZXQoaXRlbUlELCBpdGVtKTsKKyAgICBoaXN0b3J5SXRlbVRvSURNYXAoKS5zZXQ8SXRlbUFu
ZFBhZ2VJRD4oaXRlbS5wdHIoKSwgeyAuaXRlbUlEID0gaXRlbUlELCAucGFnZUlEID0gbV9wYWdl
LT5wYWdlSUQoKSB9KTsKKyAgICBpZFRvSGlzdG9yeUl0ZW1NYXAoKS5zZXQoaXRlbUlELCBpdGVt
LnB0cigpKTsKIAotICAgIHVwZGF0ZUJhY2tGb3J3YXJkSXRlbShpdGVtSUQsIG1fcGFnZS0+cGFn
ZUlEKCksIGl0ZW0uZ2V0KCkpOworICAgIHVwZGF0ZUJhY2tGb3J3YXJkSXRlbShpdGVtSUQsIG1f
cGFnZS0+cGFnZUlEKCksIGl0ZW0ucHRyKCkpOwogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEFkZEl0ZW0oaXRlbUlEKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQ
cm94eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJk
TGlzdFByb3h5LmgKaW5kZXggYWExNDdlMWQ4YTI1MzEzMWZmYWRhNjFkOGVlMjA1ZDBjMWI5ZWNl
Ny4uMmNiZGVkMjVhZDQyZWU5Yjk5MmMzMTdkN2UyOTUzZjZjNDQ1ZTdmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJk
TGlzdFByb3h5LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJC
YWNrRm9yd2FyZExpc3RQcm94eShXZWJQYWdlKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkSXRl
bShQYXNzUmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGFkZEl0ZW0oUmVmPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiYmKSBvdmVycmlkZTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBnb1RvSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIG92ZXJyaWRl
OwogICAgICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245848</attachid>
            <date>2015-02-01 15:28:32 -0800</date>
            <delta_ts>2015-02-01 16:49:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141133-20150201152841.patch</filename>
            <type>text/plain</type>
            <size>52964</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjhkYzAyZmZhNmJhNDUw
ZDIxNDU4YTZmNmNjZGRjNTJkZWIyZTY0ZS4uMTQ1MGUzY2Q2ZWYxYWViOTgxMWNiYjE1ZGFjNDg0
MTliOGZkZTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTAxLTMxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIG1vcmUgcmVmZXJlbmNl
cyBpbiBIaXN0b3J5SXRlbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQxMTMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKwor
ICAgICAgICBVc2UgbW9yZSByZWZlcmVuY2VzIGluIEhpc3RvcnlJdGVtIGluc3RlYWQgb2YgcG9p
bnRlcnMuCisKIDIwMTUtMDEtMzEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFN0b3AgZGlzcGF0Y2hpbmcgZXZlbnRzIHRvIHdpdGggU1ZHRWxlbWVudEluc3RhbmNl
IG9iamVjdHMgYXMgdGhlaXIgdGFyZ2V0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGMyYjY4M2MwMGU1
YTc2NTgxMzUwYTE0NGFiNTViNGY0MTcyNWU4ZWUuLjBiZDgxZTVjODQ5ZTA3ODExYWNiNDJkZGRh
YTNjOWYxMTc3MWM4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0w
MS0zMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBtb3Jl
IHJlZmVyZW5jZXMgaW4gSGlzdG9yeUl0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MTEzMworCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMg
S2xpbmcuCisKKyAgICAgICAgVXNlIG1vcmUgcmVmZXJlbmNlcyBpbiBIaXN0b3J5SXRlbSBpbnN0
ZWFkIG9mIHBvaW50ZXJzLgorCiAyMDE1LTAxLTMxICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmVtb3ZlIGV2ZW4gbW9yZSBNb3VudGFpbiBMaW9uIHN1cHBvcnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCAyMzExYTU3ODRkMzgwZjNlMWQwMDdiZjQ3MGI1MmEzMDY5MmE4Mzc2Li5kYmRh
MTViYjA0MTg1OGUwZTU3N2FhMTUzZmQ1NGIyNmVmOTU2NDRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjEgQEAKKzIwMTUtMDEtMzEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBVc2UgbW9yZSByZWZlcmVuY2VzIGluIEhpc3RvcnlJdGVtCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExMzMKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIFVzZSBtb3JlIHJlZmVyZW5jZXMgaW4g
SGlzdG9yeUl0ZW0gaW5zdGVhZCBvZiBwb2ludGVycy4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtOjpjaGlsZHJl
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252
ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dG9GcmFtZVN0YXRlKToKKyAgICAgICAgKFdl
YktpdDo6YXBwbHlGcmFtZVN0YXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
QmFja0ZvcndhcmRMaXN0UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eTo6YWRkSXRlbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJh
Y2tGb3J3YXJkTGlzdFByb3h5Lmg6CisKIDIwMTUtMDItMDEgIERhbiBCZXJuc3RlaW4gIDxtaXR6
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgVmlld0dlc3R1cmVDb250cm9sbGVyIHRyYWNp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggY2Y0OWZmODBlZDFjYzk1NTQ0YzI1NDhlODk5MzA0
ZmYwZDQ3NjVhZC4uYThhYzg3YjdlYjMyMGZjODA5YjQ1MTgzOGZlZGY0NDMxY2RiMDIwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KQEAgLTE2Myw3ICsxNjMsNyBAQCBfX1pON1dlYkNvcmUxMUZyYW1l
TG9hZGVyOXNldE9wZW5lckVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTEw
dGFyZ2V0SXRlbUV2CiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMTFzZXRGb3JtRGF0YUVOM1dU
RjEwUGFzc1JlZlB0cklOU184Rm9ybURhdGFFRUUKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW0x
MXNldFJlZmVycmVyRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTEy
YWRkQ2hpbGRJdGVtRU4zV1RGMTBQYXNzUmVmUHRySVMwX0VFCitfX1pON1dlYkNvcmUxMUhpc3Rv
cnlJdGVtMTJhZGRDaGlsZEl0ZW1FT04zV1RGM1JlZklTMF9FRQogX19aTjdXZWJDb3JlMTFIaXN0
b3J5SXRlbTEyc2V0VVJMU3RyaW5nRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTFIaXN0
b3J5SXRlbTEyc2V0Vmlld1N0YXRlRVAxMW9iamNfb2JqZWN0CiBfX1pON1dlYkNvcmUxMUhpc3Rv
cnlJdGVtMTRhZGRSZWRpcmVjdFVSTEVSS04zV1RGNlN0cmluZ0UKQEAgLTE3NSw2ICsxNzUsNyBA
QCBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMTZzZXREb2N1bWVudFN0YXRlRVJLTjNXVEY2VmVj
dG9ySU5TMV82U3RyaW5nRUxtMEVOUzFfMQogX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTE3c2V0
QWx0ZXJuYXRlVGl0bGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVt
MThzZXRGb3JtQ29udGVudFR5cGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMUhpc3Rv
cnlJdGVtMThzZXRQYWdlU2NhbGVGYWN0b3JFZgorX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTE5
Y2hpbGRJdGVtV2l0aFRhcmdldEVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTExSGlzdG9y
eUl0ZW0yMHNldE9yaWdpbmFsVVJMU3RyaW5nRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3Jl
MTFIaXN0b3J5SXRlbTIwc2V0VHJhbnNpZW50UHJvcGVydHlFUktOM1dURjZTdHJpbmdFUDExb2Jq
Y19vYmplY3QKIF9fWk43V2ViQ29yZTExSGlzdG9yeUl0ZW04Zm9ybURhdGFFdgpAQCAtNDk4LDgg
KzQ5OSw4IEBAIF9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MTFjdXJyZW50SXRlbUV2CiBf
X1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDExZm9yd2FyZEl0ZW1FdgogX19aTjdXZWJDb3Jl
MTVCYWNrRm9yd2FyZExpc3QxMXNldENhcGFjaXR5RWkKIF9fWk43V2ViQ29yZTE1QmFja0Zvcndh
cmRMaXN0MTJjb250YWluc0l0ZW1FUE5TXzExSGlzdG9yeUl0ZW1FCi1fX1pON1dlYkNvcmUxNUJh
Y2tGb3J3YXJkTGlzdDE3YmFja0xpc3RXaXRoTGltaXRFaVJOM1dURjZWZWN0b3JJTlMxXzZSZWZQ
dHJJTlNfMTFIaXN0b3J5SXRlbUVFRUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKLV9fWk43
V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0MjBmb3J3YXJkTGlzdFdpdGhMaW1pdEVpUk4zV1RGNlZl
Y3RvcklOUzFfNlJlZlB0cklOU18xMUhpc3RvcnlJdGVtRUVFTG0wRU5TMV8xNUNyYXNoT25PdmVy
Zmxvd0VFRQorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxN2JhY2tMaXN0V2l0aExpbWl0
RWlSTjNXVEY2VmVjdG9ySU5TMV8zUmVmSU5TXzExSGlzdG9yeUl0ZW1FRUVMbTBFTlMxXzE1Q3Jh
c2hPbk92ZXJmbG93RUVFCitfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDIwZm9yd2FyZExp
c3RXaXRoTGltaXRFaVJOM1dURjZWZWN0b3JJTlMxXzNSZWZJTlNfMTFIaXN0b3J5SXRlbUVFRUxt
MEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKIF9fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0
NmNsb3NlZEV2CiBfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDZnb0JhY2tFdgogX19aTjdX
ZWJDb3JlMTVCYWNrRm9yd2FyZExpc3Q3ZW5hYmxlZEV2CkBAIC0xNjkyLDcgKzE2OTMsNiBAQCBf
X1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTE0YWx0ZXJuYXRlVGl0bGVFdgogX19aTks3V2ViQ29y
ZTExSGlzdG9yeUl0ZW0xNWZvcm1Db250ZW50VHlwZUV2CiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5
SXRlbTE1cGFnZVNjYWxlRmFjdG9yRXYKIF9fWk5LN1dlYkNvcmUxMUhpc3RvcnlJdGVtMTdvcmln
aW5hbFVSTFN0cmluZ0V2Ci1fX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTE5Y2hpbGRJdGVtV2l0
aFRhcmdldEVSS04zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmUxMUhpc3RvcnlJdGVtMjBnZXRU
cmFuc2llbnRQcm9wZXJ0eUVSS04zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmUxMUhpc3RvcnlJ
dGVtMjBoYXNDYWNoZWRQYWdlRXhwaXJlZEV2CiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTN1
cmxFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENsaWVudC5oCmluZGV4IDQ3
MTg3MzYwMWQ0ZmY5MjlkZDE1MTNhZTA4Y2FlMmMxZDY5Yjk5OTkuLjA4MjA0MTVmZTgxMGZlZDEz
YzVkOWRhMjZhZWJiZmY3NzBiMDliZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQmFja0ZvcndhcmRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tG
b3J3YXJkQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgYWRkSXRlbShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBhZGRJdGVtKFJlZjxIaXN0b3J5SXRlbT4mJikgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIGdvVG9JdGVtKEhpc3RvcnlJdGVtKikgPSAwOwogICAgICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmNwcAppbmRleCA1
NWNhZjFjMGQ3NTE2NTE2YTFkYTgzMzBmMjgxMTI5OTRjYWJkNzQ1Li4xYWViNjNjZjUyOTNjNDY2
OGFmMjBmZmNiMTE1ODU2OTEwYmYyYTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwCkBAIC05Nyw5ICs5Nyw5IEBAIGJvb2wgQmFja0Zv
cndhcmRDb250cm9sbGVyOjpnb0ZvcndhcmQoKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lk
IEJhY2tGb3J3YXJkQ29udHJvbGxlcjo6YWRkSXRlbShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBp
dGVtKQordm9pZCBCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmFkZEl0ZW0oUmVmPEhpc3RvcnlJdGVt
PiYmIGl0ZW0pCiB7Ci0gICAgbV9jbGllbnQtPmFkZEl0ZW0oaXRlbSk7CisgICAgbV9jbGllbnQt
PmFkZEl0ZW0oV1RGOjptb3ZlKGl0ZW0pKTsKIH0KIAogdm9pZCBCYWNrRm9yd2FyZENvbnRyb2xs
ZXI6OnNldEN1cnJlbnRJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmgKaW5kZXggZjIzYjdlNGJmMTA0NDdjYjJm
NDFlZjcyZTZkMjNjZDZiYWYwYTk2My4uNTg5ZWU1ZWNhMmJlNzA2NmY2NDNjNjU2NzAwNTcyOTM2
ZjY5ZGYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJv
bGxlci5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGdvQmFjaygpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ29Gb3J3YXJkKCk7CiAKLSAgICB2
b2lkIGFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4pOworICAgIHZvaWQgYWRkSXRlbShS
ZWY8SGlzdG9yeUl0ZW0+JiYpOwogICAgIHZvaWQgc2V0Q3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0q
KTsKICAgICAgICAgCiAgICAgaW50IGNvdW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L0JhY2tGb3J3YXJkTGlzdC5jcHAKaW5kZXggZWFlNjJiYzcxZjg2MzgwYzcyNTE2YjdlNzBk
NzFjZTdhZTNiNTA1My4uMDEwNGQyNmY2MjM0OWFkMzU4YjZlMGUyMWY3OTI1NzY4ODllNzNmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmNwcApAQCAtNTUsMzYg
KzU1LDM0IEBAIEJhY2tGb3J3YXJkTGlzdDo6fkJhY2tGb3J3YXJkTGlzdCgpCiAgICAgQVNTRVJU
KG1fY2xvc2VkKTsKIH0KIAotdm9pZCBCYWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0oUGFzc1JlZlB0
cjxIaXN0b3J5SXRlbT4gcHJwSXRlbSkKK3ZvaWQgQmFja0ZvcndhcmRMaXN0OjphZGRJdGVtKFJl
ZjxIaXN0b3J5SXRlbT4mJiBuZXdJdGVtKQogewotICAgIEFTU0VSVChwcnBJdGVtKTsKLSAgICBp
ZiAobV9jYXBhY2l0eSA9PSAwIHx8ICFtX2VuYWJsZWQpCisgICAgaWYgKCFtX2NhcGFjaXR5IHx8
ICFtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAvLyBUb3NzIGFueXRoaW5n
IGluIHRoZSBmb3J3YXJkIGxpc3QgICAgCiAgICAgaWYgKG1fY3VycmVudCAhPSBOb0N1cnJlbnRJ
dGVtSW5kZXgpIHsKICAgICAgICAgdW5zaWduZWQgdGFyZ2V0U2l6ZSA9IG1fY3VycmVudCArIDE7
CiAgICAgICAgIHdoaWxlIChtX2VudHJpZXMuc2l6ZSgpID4gdGFyZ2V0U2l6ZSkgewotICAgICAg
ICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtID0gbV9lbnRyaWVzLmxhc3QoKTsKLSAgICAg
ICAgICAgIG1fZW50cmllcy5yZW1vdmVMYXN0KCk7Ci0gICAgICAgICAgICBtX2VudHJ5SGFzaC5y
ZW1vdmUoaXRlbSk7Ci0gICAgICAgICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZSgq
aXRlbSk7CisgICAgICAgICAgICBSZWY8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBtX2VudHJpZXMudGFr
ZUxhc3QoKTsKKyAgICAgICAgICAgIG1fZW50cnlIYXNoLnJlbW92ZShpdGVtLnB0cigpKTsKKyAg
ICAgICAgICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlKGl0ZW0pOwogICAgICAgICB9
CiAgICAgfQogCiAgICAgLy8gVG9zcyB0aGUgZmlyc3QgaXRlbSBpZiB0aGUgbGlzdCBpcyBnZXR0
aW5nIHRvbyBiaWcsIGFzIGxvbmcgYXMgd2UncmUgbm90IHVzaW5nIGl0CiAgICAgLy8gKG9yIGV2
ZW4gaWYgd2UgYXJlLCBpZiB3ZSBvbmx5IHdhbnQgMSBlbnRyeSkuCi0gICAgaWYgKG1fZW50cmll
cy5zaXplKCkgPT0gbV9jYXBhY2l0eSAmJiAobV9jdXJyZW50ICE9IDAgfHwgbV9jYXBhY2l0eSA9
PSAxKSkgewotICAgICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBtX2VudHJpZXNbMF07
CisgICAgaWYgKG1fZW50cmllcy5zaXplKCkgPT0gbV9jYXBhY2l0eSAmJiAobV9jdXJyZW50IHx8
IG1fY2FwYWNpdHkgPT0gMSkpIHsKKyAgICAgICAgUmVmPEhpc3RvcnlJdGVtPiBpdGVtID0gV1RG
Ojptb3ZlKG1fZW50cmllc1swXSk7CiAgICAgICAgIG1fZW50cmllcy5yZW1vdmUoMCk7Ci0gICAg
ICAgIG1fZW50cnlIYXNoLnJlbW92ZShpdGVtKTsKLSAgICAgICAgUGFnZUNhY2hlOjpzaW5nbGV0
b24oKS5yZW1vdmUoKml0ZW0pOwotICAgICAgICBtX2N1cnJlbnQtLTsKKyAgICAgICAgbV9lbnRy
eUhhc2gucmVtb3ZlKGl0ZW0ucHRyKCkpOworICAgICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigp
LnJlbW92ZShpdGVtKTsKKyAgICAgICAgLS1tX2N1cnJlbnQ7CiAgICAgfQogCi0gICAgbV9lbnRy
eUhhc2guYWRkKHBycEl0ZW0uZ2V0KCkpOwotICAgIG1fZW50cmllcy5pbnNlcnQobV9jdXJyZW50
ICsgMSwgcHJwSXRlbSk7Ci0gICAgbV9jdXJyZW50Kys7CisgICAgbV9lbnRyeUhhc2guYWRkKG5l
d0l0ZW0ucHRyKCkpOworICAgIG1fZW50cmllcy5pbnNlcnQobV9jdXJyZW50ICsgMSwgV1RGOjpt
b3ZlKG5ld0l0ZW0pKTsKKyAgICArK21fY3VycmVudDsKIH0KIAogdm9pZCBCYWNrRm9yd2FyZExp
c3Q6OmdvQmFjaygpCkBAIC0xMTAsNyArMTA4LDcgQEAgdm9pZCBCYWNrRm9yd2FyZExpc3Q6Omdv
VG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAgICAgICAKICAgICB1bnNpZ25lZCBpbnQgaW5k
ZXggPSAwOwogICAgIGZvciAoOyBpbmRleCA8IG1fZW50cmllcy5zaXplKCk7ICsraW5kZXgpCi0g
ICAgICAgIGlmIChtX2VudHJpZXNbaW5kZXhdID09IGl0ZW0pCisgICAgICAgIGlmIChtX2VudHJp
ZXNbaW5kZXhdLnB0cigpID09IGl0ZW0pCiAgICAgICAgICAgICBicmVhazsKICAgICBpZiAoaW5k
ZXggPCBtX2VudHJpZXMuc2l6ZSgpKSB7CiAgICAgICAgIG1fY3VycmVudCA9IGluZGV4OwpAQCAt
MTIwLDMxICsxMTgsMzEgQEAgdm9pZCBCYWNrRm9yd2FyZExpc3Q6OmdvVG9JdGVtKEhpc3RvcnlJ
dGVtKiBpdGVtKQogSGlzdG9yeUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6YmFja0l0ZW0oKQogewog
ICAgIGlmIChtX2N1cnJlbnQgJiYgbV9jdXJyZW50ICE9IE5vQ3VycmVudEl0ZW1JbmRleCkKLSAg
ICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJlbnQgLSAxXS5nZXQoKTsKLSAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJlbnQgLSAxXS5wdHIoKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAogSGlzdG9yeUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6Y3VycmVu
dEl0ZW0oKQogewogICAgIGlmIChtX2N1cnJlbnQgIT0gTm9DdXJyZW50SXRlbUluZGV4KQotICAg
ICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVudF0uZ2V0KCk7Ci0gICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9jdXJyZW50XS5wdHIoKTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAogSGlzdG9yeUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZEl0ZW0oKQog
ewogICAgIGlmIChtX2VudHJpZXMuc2l6ZSgpICYmIG1fY3VycmVudCA8IG1fZW50cmllcy5zaXpl
KCkgLSAxKQotICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVudCArIDFdLmdldCgpOwot
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbV9lbnRyaWVzW21fY3VycmVudCArIDFdLnB0
cigpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6YmFj
a0xpc3RXaXRoTGltaXQoaW50IGxpbWl0LCBIaXN0b3J5SXRlbVZlY3RvciYgbGlzdCkKIHsKICAg
ICBsaXN0LmNsZWFyKCk7CiAgICAgaWYgKG1fY3VycmVudCAhPSBOb0N1cnJlbnRJdGVtSW5kZXgp
IHsKLSAgICAgICAgdW5zaWduZWQgZmlyc3QgPSBzdGQ6Om1heCgoaW50KW1fY3VycmVudCAtIGxp
bWl0LCAwKTsKKyAgICAgICAgdW5zaWduZWQgZmlyc3QgPSBzdGQ6Om1heChzdGF0aWNfY2FzdDxp
bnQ+KG1fY3VycmVudCkgLSBsaW1pdCwgMCk7CiAgICAgICAgIGZvciAoOyBmaXJzdCA8IG1fY3Vy
cmVudDsgKytmaXJzdCkKLSAgICAgICAgICAgIGxpc3QuYXBwZW5kKG1fZW50cmllc1tmaXJzdF0p
OworICAgICAgICAgICAgbGlzdC5hcHBlbmQobV9lbnRyaWVzW2ZpcnN0XS5nZXQoKSk7CiAgICAg
fQogfQogCkBAIC0xNjAsNyArMTU4LDcgQEAgdm9pZCBCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRM
aXN0V2l0aExpbWl0KGludCBsaW1pdCwgSGlzdG9yeUl0ZW1WZWN0b3ImIGxpc3QpCiAgICAgICAg
IGludCBsYXN0ID0gc3RkOjptaW4obV9jdXJyZW50ICsgbGltaXQsIGxhc3RFbnRyeSk7CiAgICAg
ICAgIGxpbWl0ID0gbV9jdXJyZW50ICsgMTsKICAgICAgICAgZm9yICg7IGxpbWl0IDw9IGxhc3Q7
ICsrbGltaXQpCi0gICAgICAgICAgICBsaXN0LmFwcGVuZChtX2VudHJpZXNbbGltaXRdKTsKKyAg
ICAgICAgICAgIGxpc3QuYXBwZW5kKG1fZW50cmllc1tsaW1pdF0uZ2V0KCkpOwogICAgIH0KIH0K
IApAQCAtMTcxLDExICsxNjksMTAgQEAgaW50IEJhY2tGb3J3YXJkTGlzdDo6Y2FwYWNpdHkoKQog
CiB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6c2V0Q2FwYWNpdHkoaW50IHNpemUpCiB7ICAgIAotICAg
IHdoaWxlIChzaXplIDwgKGludCltX2VudHJpZXMuc2l6ZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxI
aXN0b3J5SXRlbT4gaXRlbSA9IG1fZW50cmllcy5sYXN0KCk7Ci0gICAgICAgIG1fZW50cmllcy5y
ZW1vdmVMYXN0KCk7Ci0gICAgICAgIG1fZW50cnlIYXNoLnJlbW92ZShpdGVtKTsKLSAgICAgICAg
UGFnZUNhY2hlOjpzaW5nbGV0b24oKS5yZW1vdmUoKml0ZW0pOworICAgIHdoaWxlIChzaXplIDwg
c3RhdGljX2Nhc3Q8aW50PihtX2VudHJpZXMuc2l6ZSgpKSkgeworICAgICAgICBSZWY8SGlzdG9y
eUl0ZW0+IGl0ZW0gPSBtX2VudHJpZXMudGFrZUxhc3QoKTsKKyAgICAgICAgbV9lbnRyeUhhc2gu
cmVtb3ZlKGl0ZW0ucHRyKCkpOworICAgICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnJlbW92
ZShpdGVtKTsKICAgICB9CiAKICAgICBpZiAoIXNpemUpCkBAIC0yMTQsMTMgKzIxMSwxMyBAQCBp
bnQgQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkTGlzdENvdW50KCkKIEhpc3RvcnlJdGVtKiBCYWNr
Rm9yd2FyZExpc3Q6Oml0ZW1BdEluZGV4KGludCBpbmRleCkKIHsKICAgICAvLyBEbyByYW5nZSBj
aGVja3Mgd2l0aG91dCBkb2luZyBtYXRoIG9uIGluZGV4IHRvIGF2b2lkIG92ZXJmbG93LgotICAg
IGlmIChpbmRleCA8IC0oaW50KW1fY3VycmVudCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgaWYg
KGluZGV4IDwgLXN0YXRpY19jYXN0PGludD4obV9jdXJyZW50KSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgCiAgICAgaWYgKGluZGV4ID4gZm9yd2FyZExpc3RDb3VudCgpKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIAotICAgIHJldHVy
biBtX2VudHJpZXNbaW5kZXggKyBtX2N1cnJlbnRdLmdldCgpOworICAgIHJldHVybiBtX2VudHJp
ZXNbaW5kZXggKyBtX2N1cnJlbnRdLnB0cigpOwogfQogCiBIaXN0b3J5SXRlbVZlY3RvciYgQmFj
a0ZvcndhcmRMaXN0OjplbnRyaWVzKCkKQEAgLTI0NSw3ICsyNDIsNyBAQCBib29sIEJhY2tGb3J3
YXJkTGlzdDo6Y2xlYXJBbGxQYWdlQ2FjaGVzKCkKICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX2Vu
dHJpZXMpIHsKICAgICAgICAgaWYgKGl0ZW0tPmlzSW5QYWdlQ2FjaGUoKSkgewogICAgICAgICAg
ICAgZGlkUmVtb3ZlQXRMZWFzdE9uZUl0ZW0gPSB0cnVlOwotICAgICAgICAgICAgUGFnZUNhY2hl
OjpzaW5nbGV0b24oKS5yZW1vdmUoKml0ZW0pOworICAgICAgICAgICAgUGFnZUNhY2hlOjpzaW5n
bGV0b24oKS5yZW1vdmUoaXRlbSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGRpZFJl
bW92ZUF0TGVhc3RPbmVJdGVtOwpAQCAtMjU1LDcgKzI1Miw3IEBAIGJvb2wgQmFja0ZvcndhcmRM
aXN0OjpjbGVhckFsbFBhZ2VDYWNoZXMoKQogdm9pZCBCYWNrRm9yd2FyZExpc3Q6OmNsb3NlKCkK
IHsKICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX2VudHJpZXMpCi0gICAgICAgIFBhZ2VDYWNoZTo6
c2luZ2xldG9uKCkucmVtb3ZlKCppdGVtKTsKKyAgICAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24o
KS5yZW1vdmUoaXRlbSk7CiAgICAgbV9lbnRyaWVzLmNsZWFyKCk7CiAgICAgbV9lbnRyeUhhc2gu
Y2xlYXIoKTsKICAgICBtX3BhZ2UgPSBudWxscHRyOwpAQCAtMjcyLDggKzI2OSw4IEBAIHZvaWQg
QmFja0ZvcndhcmRMaXN0OjpyZW1vdmVJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAgIGlmICgh
aXRlbSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2VudHJpZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIGlmIChtX2VudHJpZXNbaV0gPT0gaXRl
bSkgeworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2VudHJpZXMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgaWYgKG1fZW50cmllc1tpXS5wdHIoKSA9PSBpdGVtKSB7CiAgICAgICAgICAg
ICBtX2VudHJpZXMucmVtb3ZlKGkpOwogICAgICAgICAgICAgbV9lbnRyeUhhc2gucmVtb3ZlKGl0
ZW0pOwogICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSBOb0N1cnJlbnRJdGVtSW5kZXggfHwg
bV9jdXJyZW50IDwgaSkKQEAgLTI4Nyw2ICsyODQsNyBAQCB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6
cmVtb3ZlSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CisgICAgfQogfQogCiBib29sIEJhY2tGb3J3YXJkTGlzdDo6Y29u
dGFpbnNJdGVtKEhpc3RvcnlJdGVtKiBlbnRyeSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tG
b3J3YXJkTGlzdC5oCmluZGV4IGEzM2M4YTY2YzAwOTY1OTQ2NjE2Y2M0ZWRjNDdmY2M4ZWNiMDIw
NjguLjU5MjkyNzYwY2NjODZmNzkyYzQ1ZDdjNTRhNmY2OWU3ZTJjMDYzYzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBhZ2U7CiAKLXR5cGVkZWYgVmVjdG9yPFJlZlB0cjxIaXN0
b3J5SXRlbT4+IEhpc3RvcnlJdGVtVmVjdG9yOwordHlwZWRlZiBWZWN0b3I8UmVmPEhpc3RvcnlJ
dGVtPj4gSGlzdG9yeUl0ZW1WZWN0b3I7CiB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPEhpc3RvcnlJ
dGVtPj4gSGlzdG9yeUl0ZW1IYXNoU2V0OwogCiBjbGFzcyBCYWNrRm9yd2FyZExpc3QgOiBwdWJs
aWMgQmFja0ZvcndhcmRDbGllbnQgewpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICBQ
YWdlKiBwYWdlKCkgeyByZXR1cm4gbV9wYWdlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkSXRl
bShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGFk
ZEl0ZW0oUmVmPEhpc3RvcnlJdGVtPiYmKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGdvQmFjaygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ29Gb3J3YXJkKCk7CiAgICAg
dmlydHVhbCB2b2lkIGdvVG9JdGVtKEhpc3RvcnlJdGVtKikgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCmluZGV4IDNjNTJmZDZlMDI3OTE3OGJmNDBhY2ZlNGJk
ODMyNDUxOTJjYWEwMmQuLjIyOWJhYjhlN2EyM2FjMDVjMGFkMDVlN2VkNDMxNTdkY2Q3ZThiMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCkBAIC0xNzIsOSArMTcyLDkg
QEAgaW5saW5lIEhpc3RvcnlJdGVtOjpIaXN0b3J5SXRlbShjb25zdCBIaXN0b3J5SXRlbSYgaXRl
bSkKICAgICAgICAgbV9yZWRpcmVjdFVSTHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxTdHJp
bmc+PigqaXRlbS5tX3JlZGlyZWN0VVJMcyk7CiB9CiAKLVBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+
IEhpc3RvcnlJdGVtOjpjb3B5KCkgY29uc3QKK1JlZjxIaXN0b3J5SXRlbT4gSGlzdG9yeUl0ZW06
OmNvcHkoKSBjb25zdAogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSGlzdG9yeUl0ZW0oKnRo
aXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIaXN0b3J5SXRlbSgqdGhpcykpOwogfQog
CiB2b2lkIEhpc3RvcnlJdGVtOjpyZXNldCgpCkBAIC0zNjYsNDQgKzM2Niw0NCBAQCB2b2lkIEhp
c3RvcnlJdGVtOjpzZXRTdGF0ZU9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gb2JqZWN0KQogICAgIG1fc3RhdGVPYmplY3QgPSBvYmplY3Q7CiB9CiAKLXZvaWQgSGlzdG9y
eUl0ZW06OmFkZENoaWxkSXRlbShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBjaGlsZCkKK3ZvaWQg
SGlzdG9yeUl0ZW06OmFkZENoaWxkSXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYgY2hpbGQpCiB7CiAg
ICAgQVNTRVJUKCFjaGlsZEl0ZW1XaXRoVGFyZ2V0KGNoaWxkLT50YXJnZXQoKSkpOwotICAgIG1f
Y2hpbGRyZW4uYXBwZW5kKGNoaWxkKTsKKyAgICBtX2NoaWxkcmVuLmFwcGVuZChXVEY6Om1vdmUo
Y2hpbGQpKTsKIH0KIAotdm9pZCBIaXN0b3J5SXRlbTo6c2V0Q2hpbGRJdGVtKFBhc3NSZWZQdHI8
SGlzdG9yeUl0ZW0+IGNoaWxkKQordm9pZCBIaXN0b3J5SXRlbTo6c2V0Q2hpbGRJdGVtKFJlZjxI
aXN0b3J5SXRlbT4mJiBjaGlsZCkKIHsKICAgICBBU1NFUlQoIWNoaWxkLT5pc1RhcmdldEl0ZW0o
KSk7CiAgICAgdW5zaWduZWQgc2l6ZSA9IG1fY2hpbGRyZW4uc2l6ZSgpOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpICB7CiAgICAgICAgIGlmIChtX2NoaWxkcmVuW2ld
LT50YXJnZXQoKSA9PSBjaGlsZC0+dGFyZ2V0KCkpIHsKICAgICAgICAgICAgIGNoaWxkLT5zZXRJ
c1RhcmdldEl0ZW0obV9jaGlsZHJlbltpXS0+aXNUYXJnZXRJdGVtKCkpOwotICAgICAgICAgICAg
bV9jaGlsZHJlbltpXSA9IGNoaWxkOworICAgICAgICAgICAgbV9jaGlsZHJlbltpXSA9IFdURjo6
bW92ZShjaGlsZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0gICAg
bV9jaGlsZHJlbi5hcHBlbmQoY2hpbGQpOworICAgIG1fY2hpbGRyZW4uYXBwZW5kKFdURjo6bW92
ZShjaGlsZCkpOwogfQogCi1IaXN0b3J5SXRlbSogSGlzdG9yeUl0ZW06OmNoaWxkSXRlbVdpdGhU
YXJnZXQoY29uc3QgU3RyaW5nJiB0YXJnZXQpIGNvbnN0CitIaXN0b3J5SXRlbSogSGlzdG9yeUl0
ZW06OmNoaWxkSXRlbVdpdGhUYXJnZXQoY29uc3QgU3RyaW5nJiB0YXJnZXQpCiB7CiAgICAgdW5z
aWduZWQgc2l6ZSA9IG1fY2hpbGRyZW4uc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgaWYgKG1fY2hpbGRyZW5baV0tPnRhcmdldCgpID09
IHRhcmdldCkKLSAgICAgICAgICAgIHJldHVybiBtX2NoaWxkcmVuW2ldLmdldCgpOworICAgICAg
ICAgICAgcmV0dXJuIG1fY2hpbGRyZW5baV0ucHRyKCk7CiAgICAgfQotICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBudWxscHRyOwogfQogCi1IaXN0b3J5SXRlbSogSGlzdG9yeUl0ZW06OmNoaWxk
SXRlbVdpdGhEb2N1bWVudFNlcXVlbmNlTnVtYmVyKGxvbmcgbG9uZyBudW1iZXIpIGNvbnN0CitI
aXN0b3J5SXRlbSogSGlzdG9yeUl0ZW06OmNoaWxkSXRlbVdpdGhEb2N1bWVudFNlcXVlbmNlTnVt
YmVyKGxvbmcgbG9uZyBudW1iZXIpCiB7CiAgICAgdW5zaWduZWQgc2l6ZSA9IG1fY2hpbGRyZW4u
c2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAg
ICAgaWYgKG1fY2hpbGRyZW5baV0tPmRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSA9PSBudW1iZXIp
Ci0gICAgICAgICAgICByZXR1cm4gbV9jaGlsZHJlbltpXS5nZXQoKTsKKyAgICAgICAgICAgIHJl
dHVybiBtX2NoaWxkcmVuW2ldLnB0cigpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAogLy8gPHJkYXI6Ly9wcm9ibGVtLzQ4OTU4NDk+IEhpc3RvcnlJdGVt
OjpmaW5kVGFyZ2V0SXRlbSgpIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIGEgbm9uLXJlY3Vyc2l2
ZSBtZXRob2QuCkBAIC00MTMsMTUgKzQxMywxNyBAQCBIaXN0b3J5SXRlbSogSGlzdG9yeUl0ZW06
OmZpbmRUYXJnZXRJdGVtKCkKICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgdW5zaWduZWQgc2l6
ZSA9IG1fY2hpbGRyZW4uc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXpl
OyArK2kpIHsKKyAgICAgICAgLy8gRklYTUU6IHRhcmdldEl0ZW0oKSBjYW5ub3QgcmV0dXJuIG51
bGwgY3VycmVudGx5LCB3aGljaCBpcyB3cm9uZy4KICAgICAgICAgaWYgKEhpc3RvcnlJdGVtKiBt
YXRjaCA9IG1fY2hpbGRyZW5baV0tPnRhcmdldEl0ZW0oKSkKICAgICAgICAgICAgIHJldHVybiBt
YXRjaDsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIEhp
c3RvcnlJdGVtKiBIaXN0b3J5SXRlbTo6dGFyZ2V0SXRlbSgpCiB7CiAgICAgSGlzdG9yeUl0ZW0q
IGZvdW5kSXRlbSA9IGZpbmRUYXJnZXRJdGVtKCk7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IHByb2JhYmx5IG5vdCBmYWxsIGJhY2sgdG8gfHRoaXN8LgogICAgIHJldHVybiBmb3VuZEl0ZW0g
PyBmb3VuZEl0ZW0gOiB0aGlzOwogfQogCkBAIC00NDAsMTMgKzQ0MiwxMyBAQCB2b2lkIEhpc3Rv
cnlJdGVtOjpjbGVhckNoaWxkcmVuKCkKICAgICBtX2NoaWxkcmVuLmNsZWFyKCk7CiB9CiAKLWJv
b2wgSGlzdG9yeUl0ZW06OmlzQW5jZXN0b3JPZihjb25zdCBIaXN0b3J5SXRlbSogaXRlbSkgY29u
c3QKK2Jvb2wgSGlzdG9yeUl0ZW06OmlzQW5jZXN0b3JPZihjb25zdCBIaXN0b3J5SXRlbSYgaXRl
bSkgY29uc3QKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2hpbGRyZW4uc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgSGlzdG9yeUl0ZW0qIGNoaWxkID0gbV9jaGlsZHJlbltpXS5nZXQo
KTsKLSAgICAgICAgaWYgKGNoaWxkID09IGl0ZW0pCisgICAgICAgIGF1dG8mIGNoaWxkID0gbV9j
aGlsZHJlbltpXS5nZXQoKTsKKyAgICAgICAgaWYgKCZjaGlsZCA9PSAmaXRlbSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoY2hpbGQtPmlzQW5jZXN0b3JPZihpdGVtKSkK
KyAgICAgICAgaWYgKGNoaWxkLmlzQW5jZXN0b3JPZihpdGVtKSkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC00NTUsMzQgKzQ1NywzNCBAQCBi
b29sIEhpc3RvcnlJdGVtOjppc0FuY2VzdG9yT2YoY29uc3QgSGlzdG9yeUl0ZW0qIGl0ZW0pIGNv
bnN0CiAvLyBXZSBkbyBzYW1lLWRvY3VtZW50IG5hdmlnYXRpb24gaWYgZ29pbmcgdG8gYSBkaWZm
ZXJlbnQgaXRlbSBhbmQgaWYgZWl0aGVyIG9mIHRoZSBmb2xsb3dpbmcgaXMgdHJ1ZToKIC8vIC0g
VGhlIG90aGVyIGl0ZW0gY29ycmVzcG9uZHMgdG8gdGhlIHNhbWUgZG9jdW1lbnQgKGZvciBoaXN0
b3J5IGVudHJpZXMgY3JlYXRlZCB2aWEgcHVzaFN0YXRlIG9yIGZyYWdtZW50IGNoYW5nZXMpLgog
Ly8gLSBUaGUgb3RoZXIgaXRlbSBjb3JyZXNwb25kcyB0byB0aGUgc2FtZSBzZXQgb2YgZG9jdW1l
bnRzLCBpbmNsdWRpbmcgZnJhbWVzIChmb3IgaGlzdG9yeSBlbnRyaWVzIGNyZWF0ZWQgdmlhIHJl
Z3VsYXIgbmF2aWdhdGlvbikKLWJvb2wgSGlzdG9yeUl0ZW06OnNob3VsZERvU2FtZURvY3VtZW50
TmF2aWdhdGlvblRvKEhpc3RvcnlJdGVtKiBvdGhlckl0ZW0pIGNvbnN0Citib29sIEhpc3RvcnlJ
dGVtOjpzaG91bGREb1NhbWVEb2N1bWVudE5hdmlnYXRpb25UbyhIaXN0b3J5SXRlbSYgb3RoZXJJ
dGVtKSBjb25zdAogewotICAgIGlmICh0aGlzID09IG90aGVySXRlbSkKKyAgICBpZiAodGhpcyA9
PSAmb3RoZXJJdGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoc3RhdGVPYmpl
Y3QoKSB8fCBvdGhlckl0ZW0tPnN0YXRlT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBkb2N1bWVu
dFNlcXVlbmNlTnVtYmVyKCkgPT0gb3RoZXJJdGVtLT5kb2N1bWVudFNlcXVlbmNlTnVtYmVyKCk7
CisgICAgaWYgKHN0YXRlT2JqZWN0KCkgfHwgb3RoZXJJdGVtLnN0YXRlT2JqZWN0KCkpCisgICAg
ICAgIHJldHVybiBkb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkgPT0gb3RoZXJJdGVtLmRvY3VtZW50
U2VxdWVuY2VOdW1iZXIoKTsKICAgICAKLSAgICBpZiAoKHVybCgpLmhhc0ZyYWdtZW50SWRlbnRp
ZmllcigpIHx8IG90aGVySXRlbS0+dXJsKCkuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpICYmIGVx
dWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJsKCksIG90aGVySXRlbS0+dXJsKCkpKQot
ICAgICAgICByZXR1cm4gZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpID09IG90aGVySXRlbS0+ZG9j
dW1lbnRTZXF1ZW5jZU51bWJlcigpOyAgICAgICAgCisgICAgaWYgKCh1cmwoKS5oYXNGcmFnbWVu
dElkZW50aWZpZXIoKSB8fCBvdGhlckl0ZW0udXJsKCkuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkp
ICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJsKCksIG90aGVySXRlbS51cmwo
KSkpCisgICAgICAgIHJldHVybiBkb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkgPT0gb3RoZXJJdGVt
LmRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKTsKICAgICAKICAgICByZXR1cm4gaGFzU2FtZURvY3Vt
ZW50VHJlZShvdGhlckl0ZW0pOwogfQogCiAvLyBEb2VzIGEgcmVjdXJzaXZlIGNoZWNrIHRoYXQg
dGhpcyBpdGVtIGFuZCBpdHMgZGVzY2VuZGFudHMgaGF2ZSB0aGUgc2FtZQogLy8gZG9jdW1lbnQg
c2VxdWVuY2UgbnVtYmVycyBhcyB0aGUgb3RoZXIgaXRlbS4KLWJvb2wgSGlzdG9yeUl0ZW06Omhh
c1NhbWVEb2N1bWVudFRyZWUoSGlzdG9yeUl0ZW0qIG90aGVySXRlbSkgY29uc3QKK2Jvb2wgSGlz
dG9yeUl0ZW06Omhhc1NhbWVEb2N1bWVudFRyZWUoSGlzdG9yeUl0ZW0mIG90aGVySXRlbSkgY29u
c3QKIHsKLSAgICBpZiAoZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpICE9IG90aGVySXRlbS0+ZG9j
dW1lbnRTZXF1ZW5jZU51bWJlcigpKQorICAgIGlmIChkb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkg
IT0gb3RoZXJJdGVtLmRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAKLSAgICBpZiAoY2hpbGRyZW4oKS5zaXplKCkgIT0gb3RoZXJJdGVtLT5j
aGlsZHJlbigpLnNpemUoKSkKKyAgICBpZiAoY2hpbGRyZW4oKS5zaXplKCkgIT0gb3RoZXJJdGVt
LmNoaWxkcmVuKCkuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGNoaWxkcmVuKCkuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgSGlzdG9y
eUl0ZW0qIGNoaWxkID0gY2hpbGRyZW4oKVtpXS5nZXQoKTsKLSAgICAgICAgSGlzdG9yeUl0ZW0q
IG90aGVyQ2hpbGQgPSBvdGhlckl0ZW0tPmNoaWxkSXRlbVdpdGhEb2N1bWVudFNlcXVlbmNlTnVt
YmVyKGNoaWxkLT5kb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkpOwotICAgICAgICBpZiAoIW90aGVy
Q2hpbGQgfHwgIWNoaWxkLT5oYXNTYW1lRG9jdW1lbnRUcmVlKG90aGVyQ2hpbGQpKQorICAgICAg
ICBhdXRvJiBjaGlsZCA9IGNoaWxkcmVuKClbaV0uZ2V0KCk7CisgICAgICAgIGF1dG8qIG90aGVy
Q2hpbGQgPSBvdGhlckl0ZW0uY2hpbGRJdGVtV2l0aERvY3VtZW50U2VxdWVuY2VOdW1iZXIoY2hp
bGQuZG9jdW1lbnRTZXF1ZW5jZU51bWJlcigpKTsKKyAgICAgICAgaWYgKCFvdGhlckNoaWxkIHx8
ICFjaGlsZC5oYXNTYW1lRG9jdW1lbnRUcmVlKCpvdGhlckNoaWxkKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTQ5MSwxNiArNDkzLDE2IEBAIGJvb2wgSGlzdG9yeUl0
ZW06Omhhc1NhbWVEb2N1bWVudFRyZWUoSGlzdG9yeUl0ZW0qIG90aGVySXRlbSkgY29uc3QKIAog
Ly8gRG9lcyBhIG5vbi1yZWN1cnNpdmUgY2hlY2sgdGhhdCB0aGlzIGl0ZW0gYW5kIGl0cyBpbW1l
ZGlhdGUgY2hpbGRyZW4gaGF2ZSB0aGUKIC8vIHNhbWUgZnJhbWVzIGFzIHRoZSBvdGhlciBpdGVt
LgotYm9vbCBIaXN0b3J5SXRlbTo6aGFzU2FtZUZyYW1lcyhIaXN0b3J5SXRlbSogb3RoZXJJdGVt
KSBjb25zdAorYm9vbCBIaXN0b3J5SXRlbTo6aGFzU2FtZUZyYW1lcyhIaXN0b3J5SXRlbSYgb3Ro
ZXJJdGVtKSBjb25zdAogewotICAgIGlmICh0YXJnZXQoKSAhPSBvdGhlckl0ZW0tPnRhcmdldCgp
KQorICAgIGlmICh0YXJnZXQoKSAhPSBvdGhlckl0ZW0udGFyZ2V0KCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgCi0gICAgaWYgKGNoaWxkcmVuKCkuc2l6ZSgpICE9IG90aGVySXRl
bS0+Y2hpbGRyZW4oKS5zaXplKCkpCisgICAgaWYgKGNoaWxkcmVuKCkuc2l6ZSgpICE9IG90aGVy
SXRlbS5jaGlsZHJlbigpLnNpemUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbigpLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGlm
ICghb3RoZXJJdGVtLT5jaGlsZEl0ZW1XaXRoVGFyZ2V0KGNoaWxkcmVuKClbaV0tPnRhcmdldCgp
KSkKKyAgICAgICAgaWYgKCFvdGhlckl0ZW0uY2hpbGRJdGVtV2l0aFRhcmdldChjaGlsZHJlbigp
W2ldLT50YXJnZXQoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC01
NDIsMTAgKzU0NCwxMCBAQCBGb3JtRGF0YSogSGlzdG9yeUl0ZW06OmZvcm1EYXRhKCkKICAgICBy
ZXR1cm4gbV9mb3JtRGF0YS5nZXQoKTsKIH0KIAotYm9vbCBIaXN0b3J5SXRlbTo6aXNDdXJyZW50
RG9jdW1lbnQoRG9jdW1lbnQqIGRvYykgY29uc3QKK2Jvb2wgSGlzdG9yeUl0ZW06OmlzQ3VycmVu
dERvY3VtZW50KERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGZpbmQgYSBiZXR0ZXIgd2F5IHRvIGNoZWNrIGlmIHRoaXMgaXMgdGhlIGN1cnJlbnQg
ZG9jdW1lbnQuCi0gICAgcmV0dXJuIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIodXJs
KCksIGRvYy0+dXJsKCkpOworICAgIHJldHVybiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlm
aWVyKHVybCgpLCBkb2N1bWVudC51cmwoKSk7CiB9CiAKIHZvaWQgSGlzdG9yeUl0ZW06OmFkZFJl
ZGlyZWN0VVJMKGNvbnN0IFN0cmluZyYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9IaXN0b3J5SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRl
bS5oCmluZGV4IDY0YzA0YmVmOTRlZTYyMjQzYWNmNmM5ZGMzNzY2NzQ0ZTc5YWU2NWQuLjRkODQz
YzQ4ZjJmNTgyYjNlZjFhMjFiNmRjY2Y1MjFlZjgyMWY3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0hpc3RvcnlJdGVtLmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owog
Y2xhc3MgVVJMOwogZW51bSBjbGFzcyBQcnVuaW5nUmVhc29uOwogCi10eXBlZGVmIFZlY3RvcjxS
ZWZQdHI8SGlzdG9yeUl0ZW0+PiBIaXN0b3J5SXRlbVZlY3RvcjsKK3R5cGVkZWYgVmVjdG9yPFJl
ZjxIaXN0b3J5SXRlbT4+IEhpc3RvcnlJdGVtVmVjdG9yOwogCiBleHRlcm4gdm9pZCAoKm5vdGlm
eUhpc3RvcnlJdGVtQ2hhbmdlZCkoSGlzdG9yeUl0ZW0qKTsKIApAQCAtNzksNyArNzksNyBAQCBw
dWJsaWM6CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgfkhpc3RvcnlJdGVtKCk7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBjb3B5KCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgUmVmPEhpc3RvcnlJdGVtPiBjb3B5KCkgY29uc3Q7CiAKICAgICAvLyBS
ZXNldHMgdGhlIEhpc3RvcnlJdGVtIHRvIGl0cyBpbml0aWFsIHN0YXRlLCBhcyByZXR1cm5lZCBi
eSBjcmVhdGUoKS4KICAgICB2b2lkIHJlc2V0KCk7CkBAIC0xNDEsMjQgKzE0MSwyNCBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHNldExhc3RWaXNpdFdhc0ZhaWx1cmUoYm9vbCB3YXNGYWlsdXJlKSB7
IG1fbGFzdFZpc2l0V2FzRmFpbHVyZSA9IHdhc0ZhaWx1cmU7IH0KIAotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYWRkQ2hpbGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+KTsKLSAgICB2b2lk
IHNldENoaWxkSXRlbShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgSGlzdG9yeUl0ZW0qIGNoaWxkSXRlbVdpdGhUYXJnZXQoY29uc3QgU3RyaW5nJikgY29uc3Q7
Ci0gICAgSGlzdG9yeUl0ZW0qIGNoaWxkSXRlbVdpdGhEb2N1bWVudFNlcXVlbmNlTnVtYmVyKGxv
bmcgbG9uZyBudW1iZXIpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ2hpbGRJ
dGVtKFJlZjxIaXN0b3J5SXRlbT4mJik7CisgICAgdm9pZCBzZXRDaGlsZEl0ZW0oUmVmPEhpc3Rv
cnlJdGVtPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBIaXN0b3J5SXRlbSogY2hpbGRJdGVtV2l0
aFRhcmdldChjb25zdCBTdHJpbmcmKTsKKyAgICBIaXN0b3J5SXRlbSogY2hpbGRJdGVtV2l0aERv
Y3VtZW50U2VxdWVuY2VOdW1iZXIobG9uZyBsb25nIG51bWJlcik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgSGlzdG9yeUl0ZW0qIHRhcmdldEl0ZW0oKTsKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBI
aXN0b3J5SXRlbVZlY3RvciYgY2hpbGRyZW4oKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGhhc0NoaWxkcmVuKCkgY29uc3Q7CiAgICAgdm9pZCBjbGVhckNoaWxkcmVuKCk7Ci0gICAg
Ym9vbCBpc0FuY2VzdG9yT2YoY29uc3QgSGlzdG9yeUl0ZW0qKSBjb25zdDsKKyAgICBib29sIGlz
QW5jZXN0b3JPZihjb25zdCBIaXN0b3J5SXRlbSYpIGNvbnN0OwogICAgIAotICAgIGJvb2wgc2hv
dWxkRG9TYW1lRG9jdW1lbnROYXZpZ2F0aW9uVG8oSGlzdG9yeUl0ZW0qIG90aGVySXRlbSkgY29u
c3Q7Ci0gICAgYm9vbCBoYXNTYW1lRnJhbWVzKEhpc3RvcnlJdGVtKiBvdGhlckl0ZW0pIGNvbnN0
OworICAgIGJvb2wgc2hvdWxkRG9TYW1lRG9jdW1lbnROYXZpZ2F0aW9uVG8oSGlzdG9yeUl0ZW0m
IG90aGVySXRlbSkgY29uc3Q7CisgICAgYm9vbCBoYXNTYW1lRnJhbWVzKEhpc3RvcnlJdGVtJiBv
dGhlckl0ZW0pIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRSZWRpcmVjdFVS
TChjb25zdCBTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8U3RyaW5nPiogcmVk
aXJlY3RVUkxzKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSZWRpcmVjdFVS
THMoc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+Pik7CiAKLSAgICBib29sIGlzQ3VycmVu
dERvY3VtZW50KERvY3VtZW50KikgY29uc3Q7CisgICAgYm9vbCBpc0N1cnJlbnREb2N1bWVudChE
b2N1bWVudCYpIGNvbnN0OwogICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdFQkNPUkVf
RVhQT1JUIGlkIHZpZXdTdGF0ZSgpIGNvbnN0OwpAQCAtMjEyLDkgKzIxMiw5IEBAIHByaXZhdGU6
CiAgICAgV0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0ZW0oY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYWx0ZXJuYXRlVGl0bGUpOwogICAg
IFdFQkNPUkVfRVhQT1JUIEhpc3RvcnlJdGVtKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgZnJh
bWVOYW1lLCBjb25zdCBTdHJpbmcmIHBhcmVudCwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAKLSAg
ICBleHBsaWNpdCBIaXN0b3J5SXRlbShjb25zdCBIaXN0b3J5SXRlbSYpOworICAgIEhpc3RvcnlJ
dGVtKGNvbnN0IEhpc3RvcnlJdGVtJik7CiAKLSAgICBib29sIGhhc1NhbWVEb2N1bWVudFRyZWUo
SGlzdG9yeUl0ZW0qIG90aGVySXRlbSkgY29uc3Q7CisgICAgYm9vbCBoYXNTYW1lRG9jdW1lbnRU
cmVlKEhpc3RvcnlJdGVtJiBvdGhlckl0ZW0pIGNvbnN0OwogCiAgICAgSGlzdG9yeUl0ZW0qIGZp
bmRUYXJnZXRJdGVtKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4
IDA1OWYwZmY4ZTRmYzE2ZjZmMDkzYTFjZDBhYzI3OWUyYzQ3MDk3NGQuLmZmMWVjYzRlMmExMWNh
NTA1OWQ1NThhMmJiMjhmNjZhOGEwMzhhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcApAQCAtMzE0Myw3ICszMTQzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFNhbWVE
b2N1bWVudEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0pCiAgICAgaWYgKEZyYW1lVmlldyogdmlldyA9
IG1fZnJhbWUudmlldygpKQogICAgICAgICB2aWV3LT5zZXRXYXNTY3JvbGxlZEJ5VXNlcihmYWxz
ZSk7CiAKLSAgICBoaXN0b3J5KCkuc2V0Q3VycmVudEl0ZW0oJml0ZW0pOworICAgIGhpc3Rvcnko
KS5zZXRDdXJyZW50SXRlbShpdGVtKTsKICAgICAgICAgCiAgICAgLy8gbG9hZEluU2FtZURvY3Vt
ZW50KCkgYWN0dWFsbHkgY2hhbmdlcyB0aGUgVVJMIGFuZCBub3RpZmllcyBsb2FkIGRlbGVnYXRl
cyBvZiBhICJmYWtlIiBsb2FkCiAgICAgbG9hZEluU2FtZURvY3VtZW50KGl0ZW0udXJsKCksIGl0
ZW0uc3RhdGVPYmplY3QoKSwgZmFsc2UpOwpAQCAtMzI0Nyw3ICszMjQ3LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6bG9hZEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9hZFR5
cGUpCiB7CiAgICAgbV9yZXF1ZXN0ZWRIaXN0b3J5SXRlbSA9ICZpdGVtOwogICAgIEhpc3RvcnlJ
dGVtKiBjdXJyZW50SXRlbSA9IGhpc3RvcnkoKS5jdXJyZW50SXRlbSgpOwotICAgIGJvb2wgc2Ft
ZURvY3VtZW50TmF2aWdhdGlvbiA9IGN1cnJlbnRJdGVtICYmIGl0ZW0uc2hvdWxkRG9TYW1lRG9j
dW1lbnROYXZpZ2F0aW9uVG8oY3VycmVudEl0ZW0pOworICAgIGJvb2wgc2FtZURvY3VtZW50TmF2
aWdhdGlvbiA9IGN1cnJlbnRJdGVtICYmIGl0ZW0uc2hvdWxkRG9TYW1lRG9jdW1lbnROYXZpZ2F0
aW9uVG8oKmN1cnJlbnRJdGVtKTsKIAogICAgIGlmIChzYW1lRG9jdW1lbnROYXZpZ2F0aW9uKQog
ICAgICAgICBsb2FkU2FtZURvY3VtZW50SXRlbShpdGVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCmluZGV4IGFjZjkwOTA2ZWFkZDIwOWQwZDA0YjRhOGRm
ODcwZTgwZjVlOTdkZTcuLmQ0NjEwY2FlOTI3NDc5YmRlNjAxNDNjM2VhYTQwYTc5Zjc4YWRiODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcApAQCAtMTg1
LDEyICsxODUsMTEgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2F2ZURvY3VtZW50U3RhdGUo
KQogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpOwotICAgIEFTU0VSVChkb2N1bWVudCk7Ci0gICAgCi0g
ICAgaWYgKGl0ZW0tPmlzQ3VycmVudERvY3VtZW50KGRvY3VtZW50KSAmJiBkb2N1bWVudC0+aGFz
TGl2aW5nUmVuZGVyVHJlZSgpKSB7CisgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7Cisg
ICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gKm1fZnJhbWUuZG9jdW1lbnQoKTsKKyAgICBpZiAoaXRl
bS0+aXNDdXJyZW50RG9jdW1lbnQoZG9jdW1lbnQpICYmIGRvY3VtZW50Lmhhc0xpdmluZ1JlbmRl
clRyZWUoKSkgewogICAgICAgICBMT0coTG9hZGluZywgIldlYkNvcmVMb2FkaW5nICVzOiBzYXZp
bmcgZm9ybSBzdGF0ZSB0byAlcCIsIG1fZnJhbWUudHJlZSgpLnVuaXF1ZU5hbWUoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpLCBpdGVtKTsKLSAgICAgICAgaXRlbS0+c2V0RG9jdW1lbnRTdGF0ZShk
b2N1bWVudC0+Zm9ybUVsZW1lbnRzU3RhdGUoKSk7CisgICAgICAgIGl0ZW0tPnNldERvY3VtZW50
U3RhdGUoZG9jdW1lbnQuZm9ybUVsZW1lbnRzU3RhdGUoKSk7CiAgICAgfQogfQogCkBAIC0yNTMs
NyArMjUyLDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6aW52YWxpZGF0ZUN1cnJlbnRJdGVt
Q2FjaGVkUGFnZSgpCiAgICAgfQogfQogCi1ib29sIEhpc3RvcnlDb250cm9sbGVyOjpzaG91bGRT
dG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKiB0YXJnZXRJdGVtKSBjb25zdAor
Ym9vbCBIaXN0b3J5Q29udHJvbGxlcjo6c2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbShI
aXN0b3J5SXRlbSYgdGFyZ2V0SXRlbSkgY29uc3QKIHsKICAgICBpZiAoIW1fY3VycmVudEl0ZW0p
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ2OSw4ICs0NjgsOCBAQCB2b2lkIEhpc3RvcnlD
b250cm9sbGVyOjp1cGRhdGVGb3JDb21taXQoKQogICAgICAgICAvLyBOb3RlIHByZXZpb3VzSXRl
bSBtdXN0IGJlIHNldCBiZWZvcmUgd2UgY2xvc2UgdGhlIFVSTCwgd2hpY2ggd2lsbAogICAgICAg
ICAvLyBoYXBwZW4gd2hlbiB0aGUgZGF0YSBzb3VyY2UgaXMgbWFkZSBub24tcHJvdmlzaW9uYWwg
YmVsb3cKICAgICAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxJdGVtKTsKLSAgICAgICAgc2V0Q3Vy
cmVudEl0ZW0obV9wcm92aXNpb25hbEl0ZW0uZ2V0KCkpOwotICAgICAgICBtX3Byb3Zpc2lvbmFs
SXRlbSA9IDA7CisgICAgICAgIHNldEN1cnJlbnRJdGVtKCptX3Byb3Zpc2lvbmFsSXRlbSk7Cisg
ICAgICAgIG1fcHJvdmlzaW9uYWxJdGVtID0gbnVsbHB0cjsKIAogICAgICAgICAvLyBUZWxsIGFs
bCBvdGhlciBmcmFtZXMgaW4gdGhlIHRyZWUgdG8gY29tbWl0IHRoZWlyIHByb3Zpc2lvbmFsIGl0
ZW1zIGFuZAogICAgICAgICAvLyByZXN0b3JlIHRoZWlyIHNjcm9sbCBwb3NpdGlvbi4gIFdlJ2xs
IGF2b2lkIHRoaXMgZnJhbWUgKHdoaWNoIGhhcyBhbHJlYWR5CkBAIC01MTAsOCArNTA5LDggQEAg
dm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlVXBkYXRlRm9yQ29tbWl0KCkKICAgICAg
ICAgICAgIHZpZXctPnNldFdhc1Njcm9sbGVkQnlVc2VyKGZhbHNlKTsKIAogICAgICAgICAvLyBO
b3cgY29tbWl0IHRoZSBwcm92aXNpb25hbCBpdGVtCi0gICAgICAgIHNldEN1cnJlbnRJdGVtKG1f
cHJvdmlzaW9uYWxJdGVtLmdldCgpKTsKLSAgICAgICAgbV9wcm92aXNpb25hbEl0ZW0gPSAwOwor
ICAgICAgICBzZXRDdXJyZW50SXRlbSgqbV9wcm92aXNpb25hbEl0ZW0pOworICAgICAgICBtX3By
b3Zpc2lvbmFsSXRlbSA9IG51bGxwdHI7CiAKICAgICAgICAgLy8gUmVzdG9yZSBmb3JtIHN0YXRl
ICh3b3JrcyBmcm9tIGN1cnJlbnRJdGVtKQogICAgICAgICByZXN0b3JlRG9jdW1lbnRTdGF0ZSgp
OwpAQCAtNTU1LDEyICs1NTQsMTIgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZl
VXBkYXRlRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbigpCiAKICAgICAvLyBUaGUgcHJvdmlzaW9u
YWwgaXRlbSBtYXkgcmVwcmVzZW50IGEgZGlmZmVyZW50IHBlbmRpbmcgbmF2aWdhdGlvbi4KICAg
ICAvLyBEb24ndCBjb21taXQgaXQgaWYgaXQgaXNuJ3QgYSBzYW1lIGRvY3VtZW50IG5hdmlnYXRp
b24uCi0gICAgaWYgKG1fY3VycmVudEl0ZW0gJiYgIW1fY3VycmVudEl0ZW0tPnNob3VsZERvU2Ft
ZURvY3VtZW50TmF2aWdhdGlvblRvKG1fcHJvdmlzaW9uYWxJdGVtLmdldCgpKSkKKyAgICBpZiAo
bV9jdXJyZW50SXRlbSAmJiAhbV9jdXJyZW50SXRlbS0+c2hvdWxkRG9TYW1lRG9jdW1lbnROYXZp
Z2F0aW9uVG8oKm1fcHJvdmlzaW9uYWxJdGVtKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
Q29tbWl0IHRoZSBwcm92aXNpb25hbCBpdGVtLgotICAgIHNldEN1cnJlbnRJdGVtKG1fcHJvdmlz
aW9uYWxJdGVtLmdldCgpKTsKLSAgICBtX3Byb3Zpc2lvbmFsSXRlbSA9IDA7CisgICAgc2V0Q3Vy
cmVudEl0ZW0oKm1fcHJvdmlzaW9uYWxJdGVtKTsKKyAgICBtX3Byb3Zpc2lvbmFsSXRlbSA9IG51
bGxwdHI7CiAKICAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIHJlc3Qgb2YgdGhlIHRyZWUuCiAgICAg
Zm9yIChGcmFtZSogY2hpbGQgPSBtX2ZyYW1lLnRyZWUoKS5maXJzdENoaWxkKCk7IGNoaWxkOyBj
aGlsZCA9IGNoaWxkLT50cmVlKCkubmV4dFNpYmxpbmcoKSkKQEAgLTU3NSwxMSArNTc0LDExIEBA
IHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckZyYW1lTG9hZENvbXBsZXRlZCgpCiAg
ICAgbV9mcmFtZUxvYWRDb21wbGV0ZSA9IHRydWU7CiB9CiAKLXZvaWQgSGlzdG9yeUNvbnRyb2xs
ZXI6OnNldEN1cnJlbnRJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQordm9pZCBIaXN0b3J5Q29udHJv
bGxlcjo6c2V0Q3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0pCiB7CiAgICAgbV9mcmFtZUxv
YWRDb21wbGV0ZSA9IGZhbHNlOwogICAgIG1fcHJldmlvdXNJdGVtID0gbV9jdXJyZW50SXRlbTsK
LSAgICBtX2N1cnJlbnRJdGVtID0gaXRlbTsKKyAgICBtX2N1cnJlbnRJdGVtID0gJml0ZW07CiB9
CiAKIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNldEN1cnJlbnRJdGVtVGl0bGUoY29uc3QgU3Ry
aW5nV2l0aERpcmVjdGlvbiYgdGl0bGUpCkBAIC02MTAsNyArNjA5LDcgQEAgdm9pZCBIaXN0b3J5
Q29udHJvbGxlcjo6c2V0UHJvdmlzaW9uYWxJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAgIG1f
cHJvdmlzaW9uYWxJdGVtID0gaXRlbTsKIH0KIAotdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6aW5p
dGlhbGl6ZUl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCit2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpp
bml0aWFsaXplSXRlbShIaXN0b3J5SXRlbSYgaXRlbSkKIHsKICAgICBEb2N1bWVudExvYWRlciog
ZG9jdW1lbnRMb2FkZXIgPSBtX2ZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAgICAg
QVNTRVJUKGRvY3VtZW50TG9hZGVyKTsKQEAgLTY0MiwzNCArNjQxLDM0IEBAIHZvaWQgSGlzdG9y
eUNvbnRyb2xsZXI6OmluaXRpYWxpemVJdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQogICAgIFN0cmlu
ZyBwYXJlbnQgPSBwYXJlbnRGcmFtZSA/IHBhcmVudEZyYW1lLT50cmVlKCkudW5pcXVlTmFtZSgp
IDogIiI7CiAgICAgU3RyaW5nV2l0aERpcmVjdGlvbiB0aXRsZSA9IGRvY3VtZW50TG9hZGVyLT50
aXRsZSgpOwogCi0gICAgaXRlbS0+c2V0VVJMKHVybCk7Ci0gICAgaXRlbS0+c2V0VGFyZ2V0KG1f
ZnJhbWUudHJlZSgpLnVuaXF1ZU5hbWUoKSk7Ci0gICAgaXRlbS0+c2V0UGFyZW50KHBhcmVudCk7
CisgICAgaXRlbS5zZXRVUkwodXJsKTsKKyAgICBpdGVtLnNldFRhcmdldChtX2ZyYW1lLnRyZWUo
KS51bmlxdWVOYW1lKCkpOworICAgIGl0ZW0uc2V0UGFyZW50KHBhcmVudCk7CiAgICAgLy8gRklY
TUU6IHNob3VsZCBzdG9yZSB0aXRsZSBkaXJlY3Rpb25hbGl0eSBpbiBoaXN0b3J5IGFzIHdlbGwu
Ci0gICAgaXRlbS0+c2V0VGl0bGUodGl0bGUuc3RyaW5nKCkpOwotICAgIGl0ZW0tPnNldE9yaWdp
bmFsVVJMU3RyaW5nKG9yaWdpbmFsVVJMLnN0cmluZygpKTsKKyAgICBpdGVtLnNldFRpdGxlKHRp
dGxlLnN0cmluZygpKTsKKyAgICBpdGVtLnNldE9yaWdpbmFsVVJMU3RyaW5nKG9yaWdpbmFsVVJM
LnN0cmluZygpKTsKIAogICAgIGlmICghdW5yZWFjaGFibGVVUkwuaXNFbXB0eSgpIHx8IGRvY3Vt
ZW50TG9hZGVyLT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwKQotICAgICAgICBp
dGVtLT5zZXRMYXN0VmlzaXRXYXNGYWlsdXJlKHRydWUpOworICAgICAgICBpdGVtLnNldExhc3RW
aXNpdFdhc0ZhaWx1cmUodHJ1ZSk7CiAKICAgICAvLyBTYXZlIGZvcm0gc3RhdGUgaWYgdGhpcyBp
cyBhIFBPU1QKLSAgICBpdGVtLT5zZXRGb3JtSW5mb0Zyb21SZXF1ZXN0KGRvY3VtZW50TG9hZGVy
LT5yZXF1ZXN0KCkpOworICAgIGl0ZW0uc2V0Rm9ybUluZm9Gcm9tUmVxdWVzdChkb2N1bWVudExv
YWRlci0+cmVxdWVzdCgpKTsKIH0KIAotUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gSGlzdG9yeUNv
bnRyb2xsZXI6OmNyZWF0ZUl0ZW0oKQorUmVmPEhpc3RvcnlJdGVtPiBIaXN0b3J5Q29udHJvbGxl
cjo6Y3JlYXRlSXRlbSgpCiB7Ci0gICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtID0gSGlzdG9y
eUl0ZW06OmNyZWF0ZSgpOwotICAgIGluaXRpYWxpemVJdGVtKGl0ZW0uZ2V0KCkpOworICAgIFJl
ZjxIaXN0b3J5SXRlbT4gaXRlbSA9IEhpc3RvcnlJdGVtOjpjcmVhdGUoKTsKKyAgICBpbml0aWFs
aXplSXRlbShpdGVtKTsKICAgICAKICAgICAvLyBTZXQgdGhlIGl0ZW0gZm9yIHdoaWNoIHdlIHdp
bGwgc2F2ZSBkb2N1bWVudCBzdGF0ZQotICAgIHNldEN1cnJlbnRJdGVtKGl0ZW0uZ2V0KCkpOwor
ICAgIHNldEN1cnJlbnRJdGVtKGl0ZW0pOwogICAgIAotICAgIHJldHVybiBpdGVtLnJlbGVhc2Uo
KTsKKyAgICByZXR1cm4gaXRlbTsKIH0KIAotUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gSGlzdG9y
eUNvbnRyb2xsZXI6OmNyZWF0ZUl0ZW1UcmVlKEZyYW1lJiB0YXJnZXRGcmFtZSwgYm9vbCBjbGlw
QXRUYXJnZXQpCitSZWY8SGlzdG9yeUl0ZW0+IEhpc3RvcnlDb250cm9sbGVyOjpjcmVhdGVJdGVt
VHJlZShGcmFtZSYgdGFyZ2V0RnJhbWUsIGJvb2wgY2xpcEF0VGFyZ2V0KQogewotICAgIFJlZlB0
cjxIaXN0b3J5SXRlbT4gYmZJdGVtID0gY3JlYXRlSXRlbSgpOworICAgIFJlZjxIaXN0b3J5SXRl
bT4gYmZJdGVtID0gY3JlYXRlSXRlbSgpOwogICAgIGlmICghbV9mcmFtZUxvYWRDb21wbGV0ZSkK
ICAgICAgICAgc2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlVG9JdGVtKG1fcHJldmlvdXNJ
dGVtLmdldCgpKTsKIApAQCAtNzE3LDcgKzcxNiw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6
OnJlY3Vyc2l2ZVNldFByb3Zpc2lvbmFsSXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgSGlzdG9yeUl0
CiAgICAgLy8gU2V0IHByb3Zpc2lvbmFsIGl0ZW0sIHdoaWNoIHdpbGwgYmUgY29tbWl0dGVkIGlu
IHJlY3Vyc2l2ZVVwZGF0ZUZvckNvbW1pdC4KICAgICBtX3Byb3Zpc2lvbmFsSXRlbSA9ICZpdGVt
OwogCi0gICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZEl0ZW0gOiBpdGVtLmNoaWxkcmVuKCkpIHsK
KyAgICBmb3IgKGF1dG8mIGNoaWxkSXRlbSA6IGl0ZW0uY2hpbGRyZW4oKSkgewogICAgICAgICBj
b25zdCBTdHJpbmcmIGNoaWxkRnJhbWVOYW1lID0gY2hpbGRJdGVtLT50YXJnZXQoKTsKIAogICAg
ICAgICBIaXN0b3J5SXRlbSogZnJvbUNoaWxkSXRlbSA9IGZyb21JdGVtLT5jaGlsZEl0ZW1XaXRo
VGFyZ2V0KGNoaWxkRnJhbWVOYW1lKTsKQEAgLTcyNSw3ICs3MjQsNyBAQCB2b2lkIEhpc3RvcnlD
b250cm9sbGVyOjpyZWN1cnNpdmVTZXRQcm92aXNpb25hbEl0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0s
IEhpc3RvcnlJdAogICAgICAgICBGcmFtZSogY2hpbGRGcmFtZSA9IG1fZnJhbWUudHJlZSgpLmNo
aWxkKGNoaWxkRnJhbWVOYW1lKTsKICAgICAgICAgQVNTRVJUKGNoaWxkRnJhbWUpOwogCi0gICAg
ICAgIGNoaWxkRnJhbWUtPmxvYWRlcigpLmhpc3RvcnkoKS5yZWN1cnNpdmVTZXRQcm92aXNpb25h
bEl0ZW0oKmNoaWxkSXRlbSwgZnJvbUNoaWxkSXRlbSk7CisgICAgICAgIGNoaWxkRnJhbWUtPmxv
YWRlcigpLmhpc3RvcnkoKS5yZWN1cnNpdmVTZXRQcm92aXNpb25hbEl0ZW0oY29uc3RfY2FzdDxI
aXN0b3J5SXRlbSY+KGNoaWxkSXRlbS5nZXQoKSksIGZyb21DaGlsZEl0ZW0pOwogICAgIH0KIH0K
IApAQCAtNzM5LDE0ICs3MzgsMTQgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZl
R29Ub0l0ZW0oSGlzdG9yeUl0ZW0mIGl0ZW0sIEhpc3RvcnlJdGVtKiBmcm9tSXQKICAgICB9CiAK
ICAgICAvLyBKdXN0IGl0ZXJhdGUgb3ZlciB0aGUgcmVzdCwgbG9va2luZyBmb3IgZnJhbWVzIHRv
IG5hdmlnYXRlLgotICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGRJdGVtIDogaXRlbS5jaGlsZHJl
bigpKSB7CisgICAgZm9yIChhdXRvJiBjaGlsZEl0ZW0gOiBpdGVtLmNoaWxkcmVuKCkpIHsKICAg
ICAgICAgY29uc3QgU3RyaW5nJiBjaGlsZEZyYW1lTmFtZSA9IGNoaWxkSXRlbS0+dGFyZ2V0KCk7
CiAKICAgICAgICAgSGlzdG9yeUl0ZW0qIGZyb21DaGlsZEl0ZW0gPSBmcm9tSXRlbS0+Y2hpbGRJ
dGVtV2l0aFRhcmdldChjaGlsZEZyYW1lTmFtZSk7CiAgICAgICAgIEFTU0VSVChmcm9tQ2hpbGRJ
dGVtKTsKICAgICAgICAgRnJhbWUqIGNoaWxkRnJhbWUgPSBtX2ZyYW1lLnRyZWUoKS5jaGlsZChj
aGlsZEZyYW1lTmFtZSk7CiAgICAgICAgIEFTU0VSVChjaGlsZEZyYW1lKTsKLSAgICAgICAgY2hp
bGRGcmFtZS0+bG9hZGVyKCkuaGlzdG9yeSgpLnJlY3Vyc2l2ZUdvVG9JdGVtKCpjaGlsZEl0ZW0s
IGZyb21DaGlsZEl0ZW0sIHR5cGUpOworICAgICAgICBjaGlsZEZyYW1lLT5sb2FkZXIoKS5oaXN0
b3J5KCkucmVjdXJzaXZlR29Ub0l0ZW0oY29uc3RfY2FzdDxIaXN0b3J5SXRlbSY+KGNoaWxkSXRl
bS5nZXQoKSksIGZyb21DaGlsZEl0ZW0sIHR5cGUpOwogICAgIH0KIH0KIApAQCAtNzYzLDcgKzc2
Miw3IEBAIGJvb2wgSGlzdG9yeUNvbnRyb2xsZXI6Oml0ZW1zQXJlQ2xvbmVzKEhpc3RvcnlJdGVt
JiBpdGVtMSwgSGlzdG9yeUl0ZW0qIGl0ZW0yKSBjCiAgICAgICAgICYmICZpdGVtMSAhPSBpdGVt
MgogICAgICAgICAmJiBpdGVtMS5pdGVtU2VxdWVuY2VOdW1iZXIoKSA9PSBpdGVtMi0+aXRlbVNl
cXVlbmNlTnVtYmVyKCkKICAgICAgICAgJiYgY3VycmVudEZyYW1lc01hdGNoSXRlbSgmaXRlbTEp
Ci0gICAgICAgICYmIGl0ZW0yLT5oYXNTYW1lRnJhbWVzKCZpdGVtMSk7CisgICAgICAgICYmIGl0
ZW0yLT5oYXNTYW1lRnJhbWVzKGl0ZW0xKTsKIH0KIAogLy8gSGVscGVyIG1ldGhvZCB0aGF0IGRl
dGVybWluZXMgd2hldGhlciB0aGUgY3VycmVudCBmcmFtZSB0cmVlIG1hdGNoZXMgZ2l2ZW4gaGlz
dG9yeSBpdGVtJ3MuCkBAIC04MDEsOSArODAwLDkgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6
dXBkYXRlQmFja0ZvcndhcmRMaXN0Q2xpcHBlZEF0VGFyZ2V0KGJvb2wgZG9DbGlwKQogCiAgICAg
RnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyID0gbV9mcmFtZS5tYWluRnJhbWUoKS5sb2FkZXIoKTsK
IAotICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gdG9wSXRlbSA9IGZyYW1lTG9hZGVyLmhpc3Rvcnko
KS5jcmVhdGVJdGVtVHJlZShtX2ZyYW1lLCBkb0NsaXApOwotICAgIExPRyhCYWNrRm9yd2FyZCwg
IldlYkNvcmVCYWNrRm9yd2FyZCAtIEFkZGluZyBiYWNrZm9yd2FyZCBpdGVtICVwIGZvciBmcmFt
ZSAlcyIsIHRvcEl0ZW0uZ2V0KCksIG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+
dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwotICAgIHBhZ2UtPmJhY2tGb3J3YXJkKCku
YWRkSXRlbSh0b3BJdGVtLnJlbGVhc2UoKSk7CisgICAgUmVmPEhpc3RvcnlJdGVtPiB0b3BJdGVt
ID0gZnJhbWVMb2FkZXIuaGlzdG9yeSgpLmNyZWF0ZUl0ZW1UcmVlKG1fZnJhbWUsIGRvQ2xpcCk7
CisgICAgTE9HKEJhY2tGb3J3YXJkLCAiV2ViQ29yZUJhY2tGb3J3YXJkIC0gQWRkaW5nIGJhY2tm
b3J3YXJkIGl0ZW0gJXAgZm9yIGZyYW1lICVzIiwgdG9wSXRlbS5wdHIoKSwgbV9mcmFtZS5sb2Fk
ZXIoKS5kb2N1bWVudExvYWRlcigpLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Cisg
ICAgcGFnZS0+YmFja0ZvcndhcmQoKS5hZGRJdGVtKFdURjo6bW92ZSh0b3BJdGVtKSk7CiB9CiAK
IHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUN1cnJlbnRJdGVtKCkKQEAgLTgyMyw3ICs4
MjIsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVDdXJyZW50SXRlbSgpCiAgICAg
ICAgIC8vIGRlcGVuZGVudCBvbiB0aGUgZG9jdW1lbnQuCiAgICAgICAgIGJvb2wgaXNUYXJnZXRJ
dGVtID0gbV9jdXJyZW50SXRlbS0+aXNUYXJnZXRJdGVtKCk7CiAgICAgICAgIG1fY3VycmVudEl0
ZW0tPnJlc2V0KCk7Ci0gICAgICAgIGluaXRpYWxpemVJdGVtKG1fY3VycmVudEl0ZW0uZ2V0KCkp
OworICAgICAgICBpbml0aWFsaXplSXRlbSgqbV9jdXJyZW50SXRlbSk7CiAgICAgICAgIG1fY3Vy
cmVudEl0ZW0tPnNldElzVGFyZ2V0SXRlbShpc1RhcmdldEl0ZW0pOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIC8vIEV2ZW4gaWYgdGhlIGZpbmFsIFVSTCBkaWRuJ3QgY2hhbmdlLCB0aGUgZm9ybSBk
YXRhIG1heSBoYXZlIGNoYW5nZWQuCkBAIC04NDAsNyArODM5LDcgQEAgdm9pZCBIaXN0b3J5Q29u
dHJvbGxlcjo6cHVzaFN0YXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0
ZU9iamVjdCwKICAgICBBU1NFUlQocGFnZSk7CiAKICAgICAvLyBHZXQgYSBIaXN0b3J5SXRlbSB0
cmVlIGZvciB0aGUgY3VycmVudCBmcmFtZSB0cmVlLgotICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4g
dG9wSXRlbSA9IG1fZnJhbWUubWFpbkZyYW1lKCkubG9hZGVyKCkuaGlzdG9yeSgpLmNyZWF0ZUl0
ZW1UcmVlKG1fZnJhbWUsIGZhbHNlKTsKKyAgICBSZWY8SGlzdG9yeUl0ZW0+IHRvcEl0ZW0gPSBt
X2ZyYW1lLm1haW5GcmFtZSgpLmxvYWRlcigpLmhpc3RvcnkoKS5jcmVhdGVJdGVtVHJlZShtX2Zy
YW1lLCBmYWxzZSk7CiAgICAgCiAgICAgLy8gT3ZlcnJpZGUgZGF0YSBpbiB0aGUgY3VycmVudCBp
dGVtIChjcmVhdGVkIGJ5IGNyZWF0ZUl0ZW1UcmVlKSB0byByZWZsZWN0CiAgICAgLy8gdGhlIHB1
c2hTdGF0ZSgpIGFyZ3VtZW50cy4KQEAgLTg0OCw3ICs4NDcsNyBAQCB2b2lkIEhpc3RvcnlDb250
cm9sbGVyOjpwdXNoU3RhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRl
T2JqZWN0LAogICAgIG1fY3VycmVudEl0ZW0tPnNldFN0YXRlT2JqZWN0KHN0YXRlT2JqZWN0KTsK
ICAgICBtX2N1cnJlbnRJdGVtLT5zZXRVUkxTdHJpbmcodXJsU3RyaW5nKTsKIAotICAgIHBhZ2Ut
PmJhY2tGb3J3YXJkKCkuYWRkSXRlbSh0b3BJdGVtLnJlbGVhc2UoKSk7CisgICAgcGFnZS0+YmFj
a0ZvcndhcmQoKS5hZGRJdGVtKFdURjo6bW92ZSh0b3BJdGVtKSk7CiAKICAgICBpZiAobV9mcmFt
ZS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmgKaW5kZXggMWI0MGE4MGIwZTMyNzE4
YjMzZWZiNDIyYWFmZTY3NmZiYzNjN2ZlOC4uZTM5NTJjNjU1OTQzMmU3OGJhOWQ1N2Q2MDA3OTI4
MjBhNmYwODc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250
cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmgK
QEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlRm9yRnJhbWVMb2FkQ29t
cGxldGVkKCk7CiAKICAgICBIaXN0b3J5SXRlbSogY3VycmVudEl0ZW0oKSBjb25zdCB7IHJldHVy
biBtX2N1cnJlbnRJdGVtLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRDdXJyZW50SXRlbShIaXN0b3J5
SXRlbSopOworICAgIHZvaWQgc2V0Q3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0mKTsKICAgICB2b2lk
IHNldEN1cnJlbnRJdGVtVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIGJv
b2wgY3VycmVudEl0ZW1TaG91bGRCZVJlcGxhY2VkKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZXBsYWNlQ3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0qKTsKQEAgLTkyLDEyICs5Miwx
MiBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFBhZ2U7Ci0gICAgYm9v
bCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKikgY29uc3Q7Cisg
ICAgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtJikgY29u
c3Q7CiAgICAgdm9pZCBnb1RvSXRlbShIaXN0b3J5SXRlbSYsIEZyYW1lTG9hZFR5cGUpOwogCi0g
ICAgdm9pZCBpbml0aWFsaXplSXRlbShIaXN0b3J5SXRlbSopOwotICAgIFBhc3NSZWZQdHI8SGlz
dG9yeUl0ZW0+IGNyZWF0ZUl0ZW0oKTsKLSAgICBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBjcmVh
dGVJdGVtVHJlZShGcmFtZSYgdGFyZ2V0RnJhbWUsIGJvb2wgY2xpcEF0VGFyZ2V0KTsKKyAgICB2
b2lkIGluaXRpYWxpemVJdGVtKEhpc3RvcnlJdGVtJik7CisgICAgUmVmPEhpc3RvcnlJdGVtPiBj
cmVhdGVJdGVtKCk7CisgICAgUmVmPEhpc3RvcnlJdGVtPiBjcmVhdGVJdGVtVHJlZShGcmFtZSYg
dGFyZ2V0RnJhbWUsIGJvb2wgY2xpcEF0VGFyZ2V0KTsKIAogICAgIHZvaWQgcmVjdXJzaXZlU2V0
UHJvdmlzaW9uYWxJdGVtKEhpc3RvcnlJdGVtJiwgSGlzdG9yeUl0ZW0qKTsKICAgICB2b2lkIHJl
Y3Vyc2l2ZUdvVG9JdGVtKEhpc3RvcnlJdGVtJiwgSGlzdG9yeUl0ZW0qLCBGcmFtZUxvYWRUeXBl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDI3YzA0YjU5NThkY2JhZjJkYjU1ZjZmYmUyM2E1MTdi
ZjZkMjE1NTIuLjA2YjkxYmFmMGNlODkxNjkxMTZjMjE1YmFjYjRiZDE4ZGI4NTk5NGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcApAQCAtNDM2LDcgKzQzNiw3IEBAIHZvaWQgUGFnZTo6Z29Ub0l0ZW0oSGlz
dG9yeUl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgdHlwZSkKICAgICAvLyBiZWluZyBkZXJlZigp
LWVkLiBNYWtlIHN1cmUgd2UgY2FuIHN0aWxsIHVzZSBpdCB3aXRoIEhpc3RvcnlDb250cm9sbGVy
Ojpnb1RvSXRlbSBsYXRlci4KICAgICBSZWY8SGlzdG9yeUl0ZW0+IHByb3RlY3RvcihpdGVtKTsK
IAotICAgIGlmIChtX21haW5GcmFtZS0+bG9hZGVyKCkuaGlzdG9yeSgpLnNob3VsZFN0b3BMb2Fk
aW5nRm9ySGlzdG9yeUl0ZW0oJml0ZW0pKQorICAgIGlmIChtX21haW5GcmFtZS0+bG9hZGVyKCku
aGlzdG9yeSgpLnNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oaXRlbSkpCiAgICAgICAg
IG1fbWFpbkZyYW1lLT5sb2FkZXIoKS5zdG9wQWxsTG9hZGVycygpOwogCiAgICAgbV9tYWluRnJh
bWUtPmxvYWRlcigpLmhpc3RvcnkoKS5nb1RvSXRlbShpdGVtLCB0eXBlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktp
dEV4cG9ydHMuZGVmLmluIGIvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBv
cnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KaW5kZXggYjA3YzQ0YjQ2MzFiZmM5YzQw
Y2U1YzUyZWEyZThhNjNkMzAyZDEwMS4uMDE2MDYwNjQ1OWI3M2FhNGM4NjRhYmQ2YjhiZDI3NWMx
YjE3YWM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRF
eHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4K
QEAgLTE2OSw3ICsxNjksNyBAQCBFWFBPUlRTCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9h
YnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3Jtc0BSZW5kZXJPYmplY3RAV2Vi
Q29yZUBAUUJFP0FWSW50UmVjdEAyQFhaLCA/YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmlu
Z1RyYW5zZm9ybXNAUmVuZGVyT2JqZWN0QFdlYkNvcmVAQFFFQkE/QVZJbnRSZWN0QDJAWFopCiAg
ICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9kZXNjcmlwdGlvbkBEb2N1bWVudE1hcmtlckBXZWJD
b3JlQEBRQkVBQlZTdHJpbmdAV1RGQEBYWiwgP2Rlc2NyaXB0aW9uQERvY3VtZW50TWFya2VyQFdl
YkNvcmVAQFFFQkFBRUJWU3RyaW5nQFdURkBAWFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVy
KD9jYWNoZURPTVN0cnVjdHVyZUBXZWJDb3JlQEBZQVBBVlN0cnVjdHVyZUBKU0NAQFBBVkpTRE9N
R2xvYmFsT2JqZWN0QDFAUEFWMjNAUEJVQ2xhc3NJbmZvQDNAQFosID9jYWNoZURPTVN0cnVjdHVy
ZUBXZWJDb3JlQEBZQVBFQVZTdHJ1Y3R1cmVASlNDQEBQRUFWSlNET01HbG9iYWxPYmplY3RAMUBQ
RUFWMjNAUEVCVUNsYXNzSW5mb0AzQEBaKQotICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/Y2hp
bGRJdGVtV2l0aFRhcmdldEBIaXN0b3J5SXRlbUBXZWJDb3JlQEBRQkVQQVYxMkBBQlZTdHJpbmdA
V1RGQEBAWiwgP2NoaWxkSXRlbVdpdGhUYXJnZXRASGlzdG9yeUl0ZW1AV2ViQ29yZUBAUUVCQVBF
QVYxMkBBRUJWU3RyaW5nQFdURkBAQFopCisgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9jaGls
ZEl0ZW1XaXRoVGFyZ2V0QEhpc3RvcnlJdGVtQFdlYkNvcmVAQFFBRVBBVjEyQEFCVlN0cmluZ0BX
VEZAQEBaLCA/Y2hpbGRJdGVtV2l0aFRhcmdldEBIaXN0b3J5SXRlbUBXZWJDb3JlQEBRRUFFUEVB
VjEyQEFFQlZTdHJpbmdAV1RGQEBAWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2NyZWF0
ZUBSYW5nZUBXZWJDb3JlQEBTQT9BVj8kUmVmQFZSYW5nZUBXZWJDb3JlQEBAV1RGQEBBQVZEb2N1
bWVudEAyQFY/JFBhc3NSZWZQdHJAVk5vZGVAV2ViQ29yZUBAQDRASDFIQFosID9jcmVhdGVAUmFu
Z2VAV2ViQ29yZUBAU0E/QVY/JFJlZkBWUmFuZ2VAV2ViQ29yZUBAQFdURkBAQUVBVkRvY3VtZW50
QDJAVj8kUGFzc1JlZlB0ckBWTm9kZUBXZWJDb3JlQEBANEBIMUhAWikKICAgICAgICAgc3ltYm9s
V2l0aFBvaW50ZXIoP2NvbW1vblZNQEpTRE9NV2luZG93QmFzZUBXZWJDb3JlQEBTQUFBVlZNQEpT
Q0BAWFosID9jb21tb25WTUBKU0RPTVdpbmRvd0Jhc2VAV2ViQ29yZUBAU0FBRUFWVk1ASlNDQEBY
WikKIAkJc3ltYm9sV2l0aFBvaW50ZXIoP2NvbnRlbnREb2N1bWVudEBIVE1MRnJhbWVPd25lckVs
ZW1lbnRAV2ViQ29yZUBAUUJFUEFWRG9jdW1lbnRAMkBYWiwgP2NvbnRlbnREb2N1bWVudEBIVE1M
RnJhbWVPd25lckVsZW1lbnRAV2ViQ29yZUBAUUVCQVBFQVZEb2N1bWVudEAyQFhaKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbQppbmRleCBlYmZi
ZDRkMDA0MTAyM2MyNWMyYzY5ZTg0NzkwODJjOGM0MjYzNTdmLi5lOTcwNTI0ZDJjZWQyNjljZjgz
YzQyY2QwMDYyMzYxMWNlZWE5MWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0
b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5
L1dlYkJhY2tGb3J3YXJkTGlzdC5tbQpAQCAtMTUzLDcgKzE1Myw4IEBAIC0gKHZvaWQpX2Nsb3Nl
CiAKIC0gKHZvaWQpYWRkSXRlbTooV2ViSGlzdG9yeUl0ZW0gKillbnRyeQogewotICAgIGNvcmUo
c2VsZiktPmFkZEl0ZW0oY29yZShlbnRyeSkpOworICAgIEFTU0VSVChlbnRyeSk7CisgICAgY29y
ZShzZWxmKS0+YWRkSXRlbSgqY29yZShlbnRyeSkpOwogICAgIAogICAgIC8vIFNpbmNlIHRoZSBh
c3N1bWVkIGNvbnRyYWN0IHdpdGggV2ViQmFja0ZvcndhcmRMaXN0IGlzIHRoYXQgaXQgcmV0YWlu
cyBpdHMgV2ViSGlzdG9yeUl0ZW1zLAogICAgIC8vIHRoZSBmb2xsb3dpbmcgbGluZSBwcmV2ZW50
cyBhIHdob2xlIGNsYXNzIG9mIHByb2JsZW1zIHdoZXJlIGEgaGlzdG9yeSBpdGVtIHdpbGwgYmUg
Y3JlYXRlZCBpbgpAQCAtMTc4LDExICsxNzksMTEgQEAgLSAoTlNEaWN0aW9uYXJ5ICopZGljdGlv
bmFyeVJlcHJlc2VudGF0aW9uCiB7CiAgICAgQmFja0ZvcndhcmRMaXN0ICpjb3JlQkZMaXN0ID0g
Y29yZShzZWxmKTsKICAgICAKLSAgICBIaXN0b3J5SXRlbVZlY3RvciBoaXN0b3J5SXRlbXMgPSBj
b3JlQkZMaXN0LT5lbnRyaWVzKCk7CisgICAgSGlzdG9yeUl0ZW1WZWN0b3ImIGhpc3RvcnlJdGVt
cyA9IGNvcmVCRkxpc3QtPmVudHJpZXMoKTsKICAgICB1bnNpZ25lZCBzaXplID0gaGlzdG9yeUl0
ZW1zLnNpemUoKTsKICAgICBOU011dGFibGVBcnJheSAqZW50cmllc0FycmF5ID0gW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpzaXplXTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbZW50cmllc0FycmF5IGFkZE9iamVjdDpb
a2l0KGhpc3RvcnlJdGVtc1tpXS5nZXQoKSkgZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uSW5jbHVk
aW5nQ2hpbGRyZW46Tk9dXTsKKyAgICAgICAgW2VudHJpZXNBcnJheSBhZGRPYmplY3Q6W2tpdCho
aXN0b3J5SXRlbXNbaV0ucHRyKCkpIGRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbkluY2x1ZGluZ0No
aWxkcmVuOk5PXV07CiAgICAgCiAgICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW05TRGlj
dGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgogICAgICAgICBlbnRyaWVzQXJy
YXksIFdlYkJhY2tGb3J3YXJkTGlzdERpY3Rpb25hcnlFbnRyaWVzS2V5LApAQCAtMjAzLDcgKzIw
NCw3IEBAIC0gKHZvaWQpc2V0VG9NYXRjaERpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjooTlNEaWN0
aW9uYXJ5ICopZGljdGlvbmFyeQogICAgIAogICAgIGZvciAoTlNEaWN0aW9uYXJ5ICppdGVtRGlj
dGlvbmFyeSBpbiBbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6V2ViQmFja0ZvcndhcmRMaXN0RGlj
dGlvbmFyeUVudHJpZXNLZXldKSB7CiAgICAgICAgIFdlYkhpc3RvcnlJdGVtICppdGVtID0gW1tX
ZWJIaXN0b3J5SXRlbSBhbGxvY10gaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246aXRl
bURpY3Rpb25hcnldOwotICAgICAgICBjb3JlQkZMaXN0LT5hZGRJdGVtKGNvcmUoaXRlbSkpOwor
ICAgICAgICBjb3JlQkZMaXN0LT5hZGRJdGVtKCpjb3JlKGl0ZW0pKTsKICAgICAgICAgW2l0ZW0g
cmVsZWFzZV07CiAgICAgfQogCkBAIC0yNTUsNyArMjU2LDcgQEAgc3RhdGljIE5TQXJyYXkqIHZl
Y3RvclRvTlNBcnJheShIaXN0b3J5SXRlbVZlY3RvciYgbGlzdCkKICAgICB1bnNpZ25lZCBzaXpl
ID0gbGlzdC5zaXplKCk7CiAgICAgTlNNdXRhYmxlQXJyYXkgKnJlc3VsdCA9IFtbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnNpemVdIGF1dG9yZWxlYXNlXTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBbcmVzdWx0IGFkZE9i
amVjdDpraXQobGlzdFtpXS5nZXQoKSldOworICAgICAgICBbcmVzdWx0IGFkZE9iamVjdDpraXQo
bGlzdFtpXS5wdHIoKSldOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTMyNywxNCArMzI4
LDE0IEBAIC0oTlNTdHJpbmcgKilkZXNjcmlwdGlvbgogICAgIAogICAgIHVuc2lnbmVkIHNpemUg
PSBlbnRyaWVzLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytp
KSB7Ci0gICAgICAgIGlmIChlbnRyaWVzW2ldID09IGJhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0
ZW0oKSkgeworICAgICAgICBpZiAoZW50cmllc1tpXS5wdHIoKSA9PSBiYWNrRm9yd2FyZExpc3Qt
PmN1cnJlbnRJdGVtKCkpIHsKICAgICAgICAgICAgIFtyZXN1bHQgYXBwZW5kU3RyaW5nOkAiID4+
PiJdOyAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFtyZXN1bHQgYXBwZW5kU3RyaW5n
OkAiICAgICJdOyAKICAgICAgICAgfSAgIAogICAgICAgICBbcmVzdWx0IGFwcGVuZEZvcm1hdDpA
IiUyZCkgIiwgaV07CiAgICAgICAgIGludCBjdXJyUG9zID0gW3Jlc3VsdCBsZW5ndGhdOwotICAg
ICAgICBbcmVzdWx0IGFwcGVuZFN0cmluZzpba2l0KGVudHJpZXNbaV0uZ2V0KCkpIGRlc2NyaXB0
aW9uXV07CisgICAgICAgIFtyZXN1bHQgYXBwZW5kU3RyaW5nOltraXQoZW50cmllc1tpXS5wdHIo
KSkgZGVzY3JpcHRpb25dXTsKIAogICAgICAgICAvLyBzaGlmdCBhbGwgdGhlIGNvbnRlbnRzIG92
ZXIuICBhIGJpdCBzbG93LCBidXQgdGhpcyBpcyBmb3IgZGVidWdnaW5nCiAgICAgICAgIE5TUmFu
Z2UgcmVwbFJhbmdlID0geyBzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihjdXJyUG9zKSwgW3Jlc3Vs
dCBsZW5ndGhdIC0gY3VyclBvcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvSGlz
dG9yeS9XZWJIaXN0b3J5SXRlbS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlz
dG9yeUl0ZW0ubW0KaW5kZXggZTY3N2IwMWU3M2JkY2YyMjdiMjhmNDFmODhjYTE2MTk1ZDk1ZGMz
Yi4uYWU3NjAxZmNkNzFkMTM4NjA2OTE1MzNlNTUwMjdkNGVmM2E2MmJiZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCkBAIC0yNTgsNyArMjU4LDcgQEAg
LSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbgogICAgICAgICBpbnQgY3VyclBvcyA9IFtyZXN1bHQg
bGVuZ3RoXTsKICAgICAgICAgdW5zaWduZWQgc2l6ZSA9IGNoaWxkcmVuLnNpemUoKTsgICAgICAg
IAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAg
ICAgICBXZWJIaXN0b3J5SXRlbSAqY2hpbGQgPSBraXQoY2hpbGRyZW5baV0uZ2V0KCkpOworICAg
ICAgICAgICAgV2ViSGlzdG9yeUl0ZW0gKmNoaWxkID0ga2l0KGNvbnN0X2Nhc3Q8SGlzdG9yeUl0
ZW0qPihjaGlsZHJlbltpXS5wdHIoKSkpOwogICAgICAgICAgICAgW3Jlc3VsdCBhcHBlbmRTdHJp
bmc6QCJcbiJdOwogICAgICAgICAgICAgW3Jlc3VsdCBhcHBlbmRTdHJpbmc6W2NoaWxkIGRlc2Ny
aXB0aW9uXV07CiAgICAgICAgIH0KQEAgLTM4MCw3ICszODAsNyBAQCAtIChpZClpbml0RnJvbURp
Y3Rpb25hcnlSZXByZXNlbnRhdGlvbjooTlNEaWN0aW9uYXJ5ICopZGljdAogICAgIGlmIChjaGls
ZERpY3RzKSB7CiAgICAgICAgIGZvciAoaW50IGkgPSBbY2hpbGREaWN0cyBjb3VudF0gLSAxOyBp
ID49IDA7IGktLSkgewogICAgICAgICAgICAgV2ViSGlzdG9yeUl0ZW0gKmNoaWxkID0gW1tXZWJI
aXN0b3J5SXRlbSBhbGxvY10gaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246W2NoaWxk
RGljdHMgb2JqZWN0QXRJbmRleDppXV07Ci0gICAgICAgICAgICBjb3JlKF9wcml2YXRlKS0+YWRk
Q2hpbGRJdGVtKGNvcmUoY2hpbGQtPl9wcml2YXRlKSk7CisgICAgICAgICAgICBjb3JlKF9wcml2
YXRlKS0+YWRkQ2hpbGRJdGVtKCpjb3JlKGNoaWxkLT5fcHJpdmF0ZSkpOwogICAgICAgICAgICAg
W2NoaWxkIHJlbGVhc2VdOwogICAgICAgICB9CiAgICAgfQpAQCAtNDgxLDcgKzQ4MSw3IEBAIC0g
KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbgogICAgICAgICBOU011dGFi
bGVBcnJheSAqY2hpbGREaWN0cyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpj
aGlsZHJlbi5zaXplKCldOwogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IGNoaWxkcmVu
LnNpemUoKSAtIDE7IGkgPj0gMDsgaS0tKQotICAgICAgICAgICAgW2NoaWxkRGljdHMgYWRkT2Jq
ZWN0OltraXQoY2hpbGRyZW5baV0uZ2V0KCkpIGRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbl1dOwor
ICAgICAgICAgICAgW2NoaWxkRGljdHMgYWRkT2JqZWN0OltraXQoY29uc3RfY2FzdDxIaXN0b3J5
SXRlbSo+KGNoaWxkcmVuW2ldLnB0cigpKSkgZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uXV07CiAg
ICAgICAgIFtkaWN0IHNldE9iamVjdDogY2hpbGREaWN0cyBmb3JLZXk6Y2hpbGRyZW5LZXldOwog
ICAgIH0KIApAQCAtNTQxLDcgKzU0MSw3IEBAIC0gKE5TQXJyYXkgKiljaGlsZHJlbgogICAgIE5T
TXV0YWJsZUFycmF5ICpyZXN1bHQgPSBbW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhD
YXBhY2l0eTpzaXplXSBhdXRvcmVsZWFzZV07CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgW3Jlc3VsdCBhZGRPYmplY3Q6a2l0KGNoaWxkcmVu
W2ldLmdldCgpKV07CisgICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0OmtpdChjb25zdF9jYXN0PEhp
c3RvcnlJdGVtKj4oY2hpbGRyZW5baV0ucHRyKCkpKV07CiAgICAgCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA3NGFkNTVhOTQ2ZWQ4
ZTM5NzA0YTZkZDNiYTg0OGFiYzg4MDEwZWEyLi40ODNjYTBlZTE0ZmVjNjA5MWEyM2RmZTZiMGRh
MjhkOTA5N2U0OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0yMDAy
LDEwICsyMDAyLDEwIEBAIC0gKHZvaWQpX2xvYWRCYWNrRm9yd2FyZExpc3RGcm9tT3RoZXJWaWV3
OihXZWJWaWV3ICopb3RoZXJWaWV3CiAgICAgICAgICAgICAvLyB1bnRpbCB3ZSBsZWF2ZSB0aGF0
IHBhZ2UuCiAgICAgICAgICAgICBvdGhlclZpZXctPl9wcml2YXRlLT5wYWdlLT5tYWluRnJhbWUo
KS5sb2FkZXIoKS5oaXN0b3J5KCkuc2F2ZURvY3VtZW50QW5kU2Nyb2xsU3RhdGUoKTsKICAgICAg
ICAgfQotICAgICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IG5ld0l0ZW0gPSBvdGhlckJhY2tGb3J3
YXJkQ2xpZW50LT5pdGVtQXRJbmRleChpKS0+Y29weSgpOworICAgICAgICBSZWY8SGlzdG9yeUl0
ZW0+IG5ld0l0ZW0gPSBvdGhlckJhY2tGb3J3YXJkQ2xpZW50LT5pdGVtQXRJbmRleChpKS0+Y29w
eSgpOwogICAgICAgICBpZiAoaSA9PSAwKSAKLSAgICAgICAgICAgIG5ld0l0ZW1Ub0dvVG8gPSBu
ZXdJdGVtLmdldCgpOwotICAgICAgICBiYWNrRm9yd2FyZENsaWVudC0+YWRkSXRlbShuZXdJdGVt
LnJlbGVhc2UoKSk7CisgICAgICAgICAgICBuZXdJdGVtVG9Hb1RvID0gbmV3SXRlbS5wdHIoKTsK
KyAgICAgICAgYmFja0ZvcndhcmRDbGllbnQtPmFkZEl0ZW0oV1RGOjptb3ZlKG5ld0l0ZW0pKTsK
ICAgICB9CiAgICAgCiAgICAgQVNTRVJUKG5ld0l0ZW1Ub0dvVG8pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKaW5kZXggYTEzOTU4NDkyNjE0YTFlYmE3NzhmOTE2OTkw
NjhlZjhiNDdjZDljZC4uOTRiNWExYmZkZjBkZDcxYzg5NDViNWUyMjNhMWQ5NmU2YjIwNzZmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCkBAIC0xMjQsNyArMTI0
LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJCYWNrRm9yd2FyZExpc3Q6OmFkZEl0
ZW0oCiAgICAgaWYgKCFpdGVtIHx8IEZBSUxFRChpdGVtLT5RdWVyeUludGVyZmFjZSgmd2ViSGlz
dG9yeUl0ZW0pKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAKLSAgICBtX2JhY2tGb3J3YXJk
TGlzdC0+YWRkSXRlbSh3ZWJIaXN0b3J5SXRlbS0+aGlzdG9yeUl0ZW0oKSk7CisgICAgbV9iYWNr
Rm9yd2FyZExpc3QtPmFkZEl0ZW0oKndlYkhpc3RvcnlJdGVtLT5oaXN0b3J5SXRlbSgpKTsKICAg
ICByZXR1cm4gU19PSzsKIH0KIApAQCAtMjA5LDcgKzIwOSw3IEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViQmFja0ZvcndhcmRMaXN0OjpiYWNrTGlzdFdpdGhMaW1pdCgKIAogICAgIGlm
IChsaXN0KQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaGlzdG9yeUl0ZW1WZWN0
b3Iuc2l6ZSgpOyBpKyspCi0gICAgICAgICAgICBsaXN0W2ldID0gV2ViSGlzdG9yeUl0ZW06OmNy
ZWF0ZUluc3RhbmNlKGhpc3RvcnlJdGVtVmVjdG9yW2ldLmdldCgpKTsKKyAgICAgICAgICAgIGxp
c3RbaV0gPSBXZWJIaXN0b3J5SXRlbTo6Y3JlYXRlSW5zdGFuY2UoaGlzdG9yeUl0ZW1WZWN0b3Jb
aV0ucHRyKCkpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0yMjYsNyArMjI2LDcgQEAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0V2l0
aExpbWl0KAogCiAgICAgaWYgKGxpc3QpCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBoaXN0b3J5SXRlbVZlY3Rvci5zaXplKCk7IGkrKykKLSAgICAgICAgICAgIGxpc3RbaV0gPSBX
ZWJIaXN0b3J5SXRlbTo6Y3JlYXRlSW5zdGFuY2UoaGlzdG9yeUl0ZW1WZWN0b3JbaV0uZ2V0KCkp
OworICAgICAgICAgICAgbGlzdFtpXSA9IFdlYkhpc3RvcnlJdGVtOjpjcmVhdGVJbnN0YW5jZSho
aXN0b3J5SXRlbVZlY3RvcltpXS5wdHIoKSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAppbmRleCA2OGY1MTM4MmVlNTI1MDVjODM5MmZiMDZl
ZWQzN2VjZGMyZjdiNjhlLi5lMjQ3Nzg0ZTVlYzI3NmE5NjZiNTQ4ZjJkMzNiZmY5M2Q1YTNhZjBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCkBAIC0yODYsNyArMjg2LDcgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5SXRlbTo6Y2hpbGRyZW4odW5zaWdu
ZWQqIG91dENoaWxkQ291bnQsIFNBRkUKICAgICAgICAgcmV0dXJuIEVfT1VUT0ZNRU1PUlk7CiAK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2hpbGRDb3VudDsgKytpKSB7Ci0gICAgICAg
IENPTVB0cjxXZWJIaXN0b3J5SXRlbT4gaXRlbShBZG9wdENPTSwgV2ViSGlzdG9yeUl0ZW06OmNy
ZWF0ZUluc3RhbmNlKGNvcmVDaGlsZHJlbltpXSkpOworICAgICAgICBDT01QdHI8V2ViSGlzdG9y
eUl0ZW0+IGl0ZW0oQWRvcHRDT00sIFdlYkhpc3RvcnlJdGVtOjpjcmVhdGVJbnN0YW5jZShjb25z
dF9jYXN0PEhpc3RvcnlJdGVtKj4oY29yZUNoaWxkcmVuW2ldLnB0cigpKSkpOwogICAgICAgICBp
ZiAoIWl0ZW0pIHsKICAgICAgICAgICAgIFNhZmVBcnJheURlc3Ryb3koY2hpbGRyZW4pOwogICAg
ICAgICAgICAgcmV0dXJuIEVfT1VUT0ZNRU1PUlk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IDk5
ZDM1M2MwMDk3ZjI4MDM1OGViZGMzNWYwZTAwZTMwZTI2NGFiYmUuLjdhZTAyYzA1OTM4NzA1ZmYy
OWJlYmJhOTNkNTczY2Q2MDE1YTczOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC01NDg5LDEw
ICs1NDg5LDEwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6bG9hZEJhY2tG
b3J3YXJkTGlzdEZyb21PdGhlclZpZXcoCiAgICAgICAgICAgICAvLyB1bnRpbCB3ZSBsZWF2ZSB0
aGF0IHBhZ2UuCiAgICAgICAgICAgICBvdGhlcldlYlZpZXctPm1fcGFnZS0+bWFpbkZyYW1lKCku
bG9hZGVyKCkuaGlzdG9yeSgpLnNhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlKCk7CiAgICAgICAg
IH0KLSAgICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBuZXdJdGVtID0gb3RoZXJCYWNrRm9yd2Fy
ZENsaWVudC0+aXRlbUF0SW5kZXgoaSktPmNvcHkoKTsKKyAgICAgICAgUmVmPEhpc3RvcnlJdGVt
PiBuZXdJdGVtID0gb3RoZXJCYWNrRm9yd2FyZENsaWVudC0+aXRlbUF0SW5kZXgoaSktPmNvcHko
KTsKICAgICAgICAgaWYgKCFpKSAKLSAgICAgICAgICAgIG5ld0l0ZW1Ub0dvVG8gPSBuZXdJdGVt
LmdldCgpOwotICAgICAgICBiYWNrRm9yd2FyZENsaWVudC0+YWRkSXRlbShuZXdJdGVtLnJlbGVh
c2UoKSk7CisgICAgICAgICAgICBuZXdJdGVtVG9Hb1RvID0gbmV3SXRlbS5wdHIoKTsKKyAgICAg
ICAgYmFja0ZvcndhcmRDbGllbnQtPmFkZEl0ZW0oV1RGOjptb3ZlKG5ld0l0ZW0pKTsKICAgICB9
CiAgICAgCiAgICAgQVNTRVJUKG5ld0l0ZW1Ub0dvVG8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJk
TGlzdEl0ZW0uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCmluZGV4IDI4OTE5MzUzZWVlMGNj
ZjUzMDhmODU4MzIwNmFhNDA3ODE0YTBiYzAuLmFhZTZhNDZhZTYzMmY4YjU0YzNkNzI1N2Y2NGNm
MjAyOTJmNjkwMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0Zv
cndhcmRMaXN0SXRlbS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgUGFzc1JlZlB0cjxBUEk6OkFycmF5
PiBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW06OmNoaWxkcmVuKCkgY29uc3QKICAg
ICBjaGlsZHJlbi5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1faXRlbS0+Y2hpbGRyZW4oKS5zaXpl
KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IG1faXRlbS0+Y2hpbGRyZW4oKSkK
LSAgICAgICAgY2hpbGRyZW4udW5jaGVja2VkQXBwZW5kKEluamVjdGVkQnVuZGxlQmFja0Zvcndh
cmRMaXN0SXRlbTo6Y3JlYXRlKGNoaWxkKSk7CisgICAgICAgIGNoaWxkcmVuLnVuY2hlY2tlZEFw
cGVuZChJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShjb25zdF9jYXN0
PEhpc3RvcnlJdGVtKj4oY2hpbGQucHRyKCkpKSk7CiAKICAgICByZXR1cm4gQVBJOjpBcnJheTo6
Y3JlYXRlKFdURjo6bW92ZShjaGlsZHJlbikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29u
dmVyc2lvbi5jcHAKaW5kZXggYjA5NDA5OThmZjA1MDdkMGE0ZTNjNDRkNGI1MmQ0ODM2MWRmYzBj
OC4uZmQwYTk4ZTg0NzU5NGMzNDIwN2EyODViYjZlYzMwNTdmZDU4MzQ5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252
ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIEZy
YW1lU3RhdGUgdG9GcmFtZVN0YXRlKGNvbnN0IEhpc3RvcnlJdGVtJiBoaXN0b3J5SXRlbSkKICNl
bmRpZgogCiAgICAgZm9yIChhdXRvJiBjaGlsZEhpc3RvcnlJdGVtIDogaGlzdG9yeUl0ZW0uY2hp
bGRyZW4oKSkgewotICAgICAgICBGcmFtZVN0YXRlIGNoaWxkRnJhbWVTdGF0ZSA9IHRvRnJhbWVT
dGF0ZSgqY2hpbGRIaXN0b3J5SXRlbSk7CisgICAgICAgIEZyYW1lU3RhdGUgY2hpbGRGcmFtZVN0
YXRlID0gdG9GcmFtZVN0YXRlKGNoaWxkSGlzdG9yeUl0ZW0pOwogICAgICAgICBmcmFtZVN0YXRl
LmNoaWxkcmVuLmFwcGVuZChXVEY6Om1vdmUoY2hpbGRGcmFtZVN0YXRlKSk7CiAgICAgfQogCkBA
IC0xNzgsMTAgKzE3OCwxMCBAQCBzdGF0aWMgdm9pZCBhcHBseUZyYW1lU3RhdGUoSGlzdG9yeUl0
ZW0mIGhpc3RvcnlJdGVtLCBjb25zdCBGcmFtZVN0YXRlJiBmcmFtZVN0YQogI2VuZGlmCiAKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkRnJhbWVTdGF0ZSA6IGZyYW1lU3RhdGUuY2hpbGRyZW4p
IHsKLSAgICAgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBjaGlsZEhpc3RvcnlJdGVtID0gSGlzdG9y
eUl0ZW06OmNyZWF0ZShjaGlsZEZyYW1lU3RhdGUudXJsU3RyaW5nLCBTdHJpbmcoKSk7Ci0gICAg
ICAgIGFwcGx5RnJhbWVTdGF0ZSgqY2hpbGRIaXN0b3J5SXRlbSwgY2hpbGRGcmFtZVN0YXRlKTsK
KyAgICAgICAgUmVmPEhpc3RvcnlJdGVtPiBjaGlsZEhpc3RvcnlJdGVtID0gSGlzdG9yeUl0ZW06
OmNyZWF0ZShjaGlsZEZyYW1lU3RhdGUudXJsU3RyaW5nLCBTdHJpbmcoKSk7CisgICAgICAgIGFw
cGx5RnJhbWVTdGF0ZShjaGlsZEhpc3RvcnlJdGVtLCBjaGlsZEZyYW1lU3RhdGUpOwogCi0gICAg
ICAgIGhpc3RvcnlJdGVtLmFkZENoaWxkSXRlbShjaGlsZEhpc3RvcnlJdGVtLnJlbGVhc2UoKSk7
CisgICAgICAgIGhpc3RvcnlJdGVtLmFkZENoaWxkSXRlbShXVEY6Om1vdmUoY2hpbGRIaXN0b3J5
SXRlbSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKaW5kZXggYTljNjc3
OTA1NmI5MmQ2MGQ0OTRiNTE1ODlmMzRkNTMxNDU4OGNmNi4uOWRjMmE2MWQ4MmI4ODkxODRiYzMx
NjM1MTVkNDAwZTM1YWQ3NGVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCkBAIC0xNDMs
MTEgKzE0Myw5IEBAIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpXZWJCYWNrRm9yd2FyZExpc3RQ
cm94eShXZWJQYWdlKiBwYWdlKQogICAgIFdlYkNvcmU6Om5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdl
ZCA9IFdLMk5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdlZDsKIH0KIAotdm9pZCBXZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eTo6YWRkSXRlbShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBwcnBJdGVtKQordm9p
ZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6YWRkSXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYgaXRl
bSkKIHsKLSAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBwcnBJdGVtOwotCi0gICAgQVNT
RVJUKCFoaXN0b3J5SXRlbVRvSURNYXAoKS5jb250YWlucyhpdGVtKSk7CisgICAgQVNTRVJUKCFo
aXN0b3J5SXRlbVRvSURNYXAoKS5jb250YWlucyhpdGVtLnB0cigpKSk7CiAKICAgICBpZiAoIW1f
cGFnZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTU4LDEwICsxNTYsMTAgQEAgdm9pZCBXZWJCYWNr
Rm9yd2FyZExpc3RQcm94eTo6YWRkSXRlbShQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBwcnBJdGVt
KQogCiAgICAgbV9hc3NvY2lhdGVkSXRlbUlEcy5hZGQoaXRlbUlEKTsKIAotICAgIGhpc3RvcnlJ
dGVtVG9JRE1hcCgpLnNldDxJdGVtQW5kUGFnZUlEPihpdGVtLCB7IC5pdGVtSUQgPSBpdGVtSUQs
IC5wYWdlSUQgPSBtX3BhZ2UtPnBhZ2VJRCgpIH0pOwotICAgIGlkVG9IaXN0b3J5SXRlbU1hcCgp
LnNldChpdGVtSUQsIGl0ZW0pOworICAgIGhpc3RvcnlJdGVtVG9JRE1hcCgpLnNldDxJdGVtQW5k
UGFnZUlEPihpdGVtLnB0cigpLCB7IC5pdGVtSUQgPSBpdGVtSUQsIC5wYWdlSUQgPSBtX3BhZ2Ut
PnBhZ2VJRCgpIH0pOworICAgIGlkVG9IaXN0b3J5SXRlbU1hcCgpLnNldChpdGVtSUQsIGl0ZW0u
cHRyKCkpOwogCi0gICAgdXBkYXRlQmFja0ZvcndhcmRJdGVtKGl0ZW1JRCwgbV9wYWdlLT5wYWdl
SUQoKSwgaXRlbS5nZXQoKSk7CisgICAgdXBkYXRlQmFja0ZvcndhcmRJdGVtKGl0ZW1JRCwgbV9w
YWdlLT5wYWdlSUQoKSwgaXRlbS5wdHIoKSk7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkQWRkSXRlbShpdGVtSUQpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRM
aXN0UHJveHkuaAppbmRleCBhYTE0N2UxZDhhMjUzMTMxZmZhZGE2MWQ4ZWUyMDVkMGMxYjllY2U3
Li4yY2JkZWQyNWFkNDJlZTliOTkyYzMxN2Q3ZTI5NTNmNmM0NDVlN2Y4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRM
aXN0UHJveHkuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYkJh
Y2tGb3J3YXJkTGlzdFByb3h5KFdlYlBhZ2UqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRJdGVt
KFBhc3NSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkSXRlbShSZWY8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+JiYpIG92ZXJyaWRlOwogCiAg
ICAgdmlydHVhbCB2b2lkIGdvVG9JdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgb3ZlcnJpZGU7
CiAgICAgICAgIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>