<?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>132834</bug_id>
          
          <creation_ts>2014-05-12 13:34:34 -0700</creation_ts>
          <short_desc>Teach Editor to support more direct replacement of a Node</short_desc>
          <delta_ts>2014-05-12 17:08:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>enrica</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1008710</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-05-12 13:34:34 -0700</bug_when>
    <thetext>Teach Editor to support more direct replacement of a Node.

When using the new API &quot;Editor::replaceNodeFromPasteboard&quot; the intention is that the new DocumentFragment is as similar to the old Node as possible.

In practice, the new DocumentFragment:
1 - Can represent a single node that&apos;s missing various attributes the original Node had.
2 - Can be an unwanted fragment of arbitrary depth when the replacement happens inside Mail.app

This will fix both of those problems.

&lt;rdar://problem/16817952&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008715</commentid>
    <comment_count>1</comment_count>
      <attachid>231320</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-05-12 13:43:32 -0700</bug_when>
    <thetext>Created attachment 231320
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008716</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-12 13:46:27 -0700</bug_when>
    <thetext>Attachment 231320 did not pass style-queue:


ERROR: Source/WebCore/editing/ReplaceSelectionCommand.cpp:941:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
ERROR: Source/WebCore/editing/ReplaceSelectionCommand.cpp:941:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/dom/TextEvent.h:46:  The parameter name &quot;view&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/dom/TextEvent.h:76:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/TextEvent.cpp:85:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/TextEvent.cpp:92:  Wrong number of spaces before statement. (expected: 25)  [whitespace/indent] [4]
Total errors found: 6 in 10 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>1008731</commentid>
    <comment_count>3</comment_count>
      <attachid>231325</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-05-12 14:24:40 -0700</bug_when>
    <thetext>Created attachment 231325
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008743</commentid>
    <comment_count>4</comment_count>
      <attachid>231325</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2014-05-12 14:57:50 -0700</bug_when>
    <thetext>Comment on attachment 231325
Patch v2

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

Looks good to me. Please make sure all the editing tests are still passing.

&gt; Source/WebCore/editing/ReplaceSelectionCommand.h:46
&gt; +        IgnoreMailBlockquote = 1 &lt;&lt; 6,

No comma at the end of the last one</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008745</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-05-12 15:04:06 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 231325 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=231325&amp;action=review
&gt; 
&gt; Looks good to me. Please make sure all the editing tests are still passing.

Doing that now!

&gt; &gt; Source/WebCore/editing/ReplaceSelectionCommand.h:46
&gt; &gt; +        IgnoreMailBlockquote = 1 &lt;&lt; 6,
&gt; 
&gt; No comma at the end of the last one

Actually it&apos;s preferred (if not yet in the style guidelines) to include a comma on the last value.  That was when a new value is added, the patch consists only of one addition instead of one subtraction and two additions.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008763</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-05-12 15:48:53 -0700</bug_when>
    <thetext>EWS was happy, and no changes locally.
http://trac.webkit.org/changeset/168650</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008806</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-05-12 17:08:33 -0700</bug_when>
    <thetext>Followup - http://trac.webkit.org/changeset/168658</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231320</attachid>
            <date>2014-05-12 13:43:32 -0700</date>
            <delta_ts>2014-05-12 14:24:40 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>29210</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2YTFmNDNlLi5hYzI1MjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIg
QEAKKzIwMTQtMDUtMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFRlYWNoIEVkaXRvciB0byBzdXBwb3J0IG1vcmUgZGlyZWN0IHJlcGxhY2VtZW50IG9mIGEg
Tm9kZQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTY4MTc5NTI+IGFuZCBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG5ldyBtZXRob2QgIkVkaXRvcjo6cmVwbGFj
ZU5vZGVGcm9tUGFzdGVib2FyZCIgaGFzIHRoZSBpbnRlbnQgdGhhdCB0aGUgbmV3IERvY3VtZW50
RnJhZ21lbnQKKyAgICAgICAgZnJvbSB0aGUgcGFzdGVib2FyZCBpcyBhcyBzaW1pbGFyIHRvIHRo
ZSBvbGQgTm9kZSBhcyBwb3NzaWJsZS4KKworICAgICAgICBJbiBwcmFjdGljZSwgdGhlIG5ldyBE
b2N1bWVudEZyYWdtZW50OgorICAgICAgICAxIC0gQ2FuIHJlcHJlc2VudCBhIHNpbmdsZSBub2Rl
IHRoYXQncyBtaXNzaW5nIHZhcmlvdXMgYXR0cmlidXRlcyB0aGUgb3JpZ2luYWwgTm9kZSBoYWQu
CisgICAgICAgIDIgLSBDYW4gYmUgYW4gdW53YW50ZWQgZnJhZ21lbnQgb2YgYXJiaXRyYXJ5IGRl
cHRoIHdoZW4gdGhlIHJlcGxhY2VtZW50IGhhcHBlbnMgaW5zaWRlIE1haWwuYXBwCisKKyAgICAg
ICAgVGhpcyBmaXhlcyBib3RoIG9mIHRoZXNlIGlzc3Vlcy4KKworICAgICAgICBBZGQgYSBNYWls
QmxvY2txdW90ZUhhbmRsaW5nIGVudW0gY2xhc3MgZm9yIHZhcmlvdXMgRWRpdG9yIG9wZXJhdGlv
bnMgdG8gcGFzcyB0aHJvdWdoIHRvIHRoZQorICAgICAgICBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmhhbmRsZVRleHRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3RlQXNG
cmFnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3RlV2l0aFBhc3RlYm9hcmQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50
KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorCisgICAgICAgICogZG9tL1RleHRFdmVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBh
c3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OlRleHRFdmVudCk6CisgICAgICAgICog
ZG9tL1RleHRFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2ZW50OjptYWlsQmxvY2tx
dW90ZUhhbmRsaW5nKToKKworICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kOjpkb0FwcGx5KTogQ29uc2lkZXIgd2hldGhlciBvciBub3QgdGhpcyBwYXJ0aWN1bGFy
IEVkaXRvcgorICAgICAgICAgIG9wZXJhdGlvbiB3YXMgbWVhbnQgdG8gZ2l2ZSBzcGVjaWFsIGNv
bnNpZGVyYXRpb24gdG8gTWFpbCdzIEJsb2NrcXVvdGVzLgorICAgICAgICAqIGVkaXRpbmcvUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQuaDoKKworICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZCk6Cisg
ICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVh
ZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6Om1heWJlQ29weU5v
ZGVBdHRyaWJ1dGVzVG9GcmFnbWVudCk6IElmIHRoZSBuZXcgRG9jdW1lbnRGcmFnbWVudCByZXBy
ZXNlbnRzIGEgc2luZ2xlIEhUTUwgbm9kZQorICAgICAgICAgIHdpdGggdGhlIHNhbWUgdGFnIG5h
bWUgaXMgdGhlIG9yaWdpbmFsIEhUTUwgbm9kZSwgY29weSBvdmVyIG1vc3QgYXR0cmlidXRlcyBm
cm9tIHRoZSBvcmlnaW5hbCBub2RlLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZXBsYWNl
Tm9kZUZyb21QYXN0ZWJvYXJkKTogQ3JlYXRlIHRoZSBmcmFnbWVudCwgcnVuIGl0IHRocm91Z2gg
bWF5YmVDb3B5Tm9kZUF0dHJpYnV0ZXNUb0ZyYWdtZW50LgorCisgICAgICAgICogV2ViQ29yZS5l
eHAuaW46CisKIDIwMTQtMDUtMDkgIEpvbiBIb25leWN1dHQgIDxqaG9uZXljdXR0QGFwcGxlLmNv
bT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTY3ODE4KTogZWRpdGluZy9pbnNlcnRpbmcvdHlw
aW5nLXNwYWNlLXRvLXRyaWdnZXItc21hcnQtbGluay5odG1sIGZhaWxzIG9uIFdlYktpdDEgYm90
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA4ZDNkZTdlLi5lYTgyYzkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgpAQCAtMTE1MCw3ICsxMTUwLDcgQEAgX19aTjdXZWJDb3JlNkVkaXRvcjEzcGVyZm9y
bURlbGV0ZUV2CiBfX1pON1dlYkNvcmU2RWRpdG9yMTNyYW5nZUZvclBvaW50RVJLTlNfOEludFBv
aW50RQogX19aTjdXZWJDb3JlNkVkaXRvcjE0c2V0Q29tcG9zaXRpb25FUktOM1dURjZTdHJpbmdF
UktOUzFfNlZlY3RvcklOU18yMENvbXBvc2l0aW9uVW5kZXJsaW5lRUxtMEVOUzFfMTVDcmFzaE9u
T3ZlcmZsb3dFRUVqagogX19aTjdXZWJDb3JlNkVkaXRvcjE0c2ltcGxpZnlNYXJrdXBFUE5TXzRO
b2RlRVMyXwotX19aTjdXZWJDb3JlNkVkaXRvcjE1cGFzdGVBc0ZyYWdtZW50RU4zV1RGMTBQYXNz
UmVmUHRySU5TXzE2RG9jdW1lbnRGcmFnbWVudEVFRWJiCitfX1pON1dlYkNvcmU2RWRpdG9yMTVw
YXN0ZUFzRnJhZ21lbnRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTZEb2N1bWVudEZyYWdtZW50RUVF
YmJOU18yMk1haWxCbG9ja3F1b3RlSGFuZGxpbmdFCiBfX1pON1dlYkNvcmU2RWRpdG9yMTZwYXN0
ZUFzUGxhaW5UZXh0RXYKIF9fWk43V2ViQ29yZTZFZGl0b3IxN2NhbmNlbENvbXBvc2l0aW9uRXYK
IF9fWk43V2ViQ29yZTZFZGl0b3IxN2luc2VydE9yZGVyZWRMaXN0RXYKQEAgLTExNzAsNyArMTE3
MCw3IEBAIF9fWk43V2ViQ29yZTZFZGl0b3IyNmRlY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsRXYK
IF9fWk43V2ViQ29yZTZFZGl0b3IyNmluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsRXYKIF9fWk43
V2ViQ29yZTZFZGl0b3IyNnRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkRXYKIF9fWk43V2ViQ29y
ZTZFZGl0b3IyNndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkRVJOU18xMFBhc3RlYm9hcmRFCi1f
X1pON1dlYkNvcmU2RWRpdG9yMjhyZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50RU4zV1RGMTBQ
YXNzUmVmUHRySU5TXzE2RG9jdW1lbnRGcmFnbWVudEVFRWJiYgorX19aTjdXZWJDb3JlNkVkaXRv
cjI4cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudEVOM1dURjEwUGFzc1JlZlB0cklOU18xNkRv
Y3VtZW50RnJhZ21lbnRFRUViYmJOU18yMk1haWxCbG9ja3F1b3RlSGFuZGxpbmdFCiBfX1pON1dl
YkNvcmU2RWRpdG9yMjh1cGRhdGVFZGl0b3JVSU5vd0lmU2NoZWR1bGVkRXYKIF9fWk43V2ViQ29y
ZTZFZGl0b3IyOWNhbkRlY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsRXYKIF9fWk43V2ViQ29yZTZF
ZGl0b3IyOWNhbkluY3JlYXNlU2VsZWN0aW9uTGlzdExldmVsRXYKQEAgLTIyNTcsNyArMjI1Nyw3
IEBAIF9fWk43V2ViQ29yZTZFZGl0b3IxM3RyeURIVE1MUGFzdGVFdgogX19aTjdXZWJDb3JlNkVk
aXRvcjI0YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nRWIKIF9fWk43V2ViQ29yZTZFZGl0b3IyNXJl
cGxhY2VOb2RlRnJvbVBhc3RlYm9hcmRFUE5TXzROb2RlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdX
ZWJDb3JlNkVkaXRvcjI2ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmRFUktOM1dURjZTdHJpbmdF
Ci1fX1pON1dlYkNvcmU2RWRpdG9yMjdyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmRFUktOM1dU
RjZTdHJpbmdFCitfX1pON1dlYkNvcmU2RWRpdG9yMjdyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9h
cmRFUktOM1dURjZTdHJpbmdFTlNfMjJNYWlsQmxvY2txdW90ZUhhbmRsaW5nRQogX19aTjdXZWJD
b3JlNkVkaXRvcjI4c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZEV2CiBfX1pON1dlYkNvcmU2
RWRpdG9yMjh0b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRXYKIF9fWk43V2ViQ29yZTZFZGl0
b3IzMHRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudEV2CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVGV4dEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQu
Y3BwCmluZGV4IDFmMzljYjMuLjdkNjViMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UZXh0RXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3BwCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiVGV4dEV2ZW50LmgiCiAKICNpbmNsdWRlICJEb2N1
bWVudEZyYWdtZW50LmgiCisjaW5jbHVkZSAiRWRpdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNDMsMTIgKzQ0LDEyIEBAIFBhc3NSZWZQdHI8VGV4dEV2ZW50PiBUZXh0RXZlbnQ6
OmNyZWF0ZShQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywgY29uc3QgU3RyCiAKIFBhc3NS
ZWZQdHI8VGV4dEV2ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKFBhc3NS
ZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxk
U21hcnRSZXBsYWNlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dEV2ZW50KHZpZXcs
IGRhdGEsIDAsIHNob3VsZFNtYXJ0UmVwbGFjZSwgZmFsc2UpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFRleHRFdmVudCh2aWV3LCBkYXRhLCAwLCBzaG91bGRTbWFydFJlcGxhY2UsIGZhbHNl
LCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0QmxvY2txdW90ZSkpOwogfQogCi1QYXNz
UmVmUHRyPFRleHRFdmVudD4gVGV4dEV2ZW50OjpjcmVhdGVGb3JGcmFnbWVudFBhc3RlKFBhc3NS
ZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3LCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGRh
dGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUpCitQYXNz
UmVmUHRyPFRleHRFdmVudD4gVGV4dEV2ZW50OjpjcmVhdGVGb3JGcmFnbWVudFBhc3RlKFBhc3NS
ZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3LCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGRh
dGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUsIE1haWxC
bG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFRleHRFdmVudCh2aWV3LCAiIiwgZGF0YSwgc2hvdWxkU21hcnRSZXBsYWNl
LCBzaG91bGRNYXRjaFN0eWxlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0RXZlbnQo
dmlldywgIiIsIGRhdGEsIHNob3VsZFNtYXJ0UmVwbGFjZSwgc2hvdWxkTWF0Y2hTdHlsZSwgbWFp
bEJsb2NrcXVvdGVIYW5kbGluZykpOwogfQogCiBQYXNzUmVmUHRyPFRleHRFdmVudD4gVGV4dEV2
ZW50OjpjcmVhdGVGb3JEcm9wKFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3LCBjb25zdCBT
dHJpbmcmIGRhdGEpCkBAIC02NSw2ICs2Niw3IEBAIFRleHRFdmVudDo6VGV4dEV2ZW50KCkKICAg
ICA6IG1faW5wdXRUeXBlKFRleHRFdmVudElucHV0S2V5Ym9hcmQpCiAgICAgLCBtX3Nob3VsZFNt
YXJ0UmVwbGFjZShmYWxzZSkKICAgICAsIG1fc2hvdWxkTWF0Y2hTdHlsZShmYWxzZSkKKyAgICAs
IG1fbWFpbEJsb2NrcXVvdGVIYW5kbGluZyhNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0
QmxvY2txdW90ZSkKIHsKIH0KIApAQCAtNzUsMTcgKzc3LDE5IEBAIFRleHRFdmVudDo6VGV4dEV2
ZW50KFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFRl
eHRFdmVuCiAgICAgLCBtX3Bhc3RpbmdGcmFnbWVudCgwKQogICAgICwgbV9zaG91bGRTbWFydFJl
cGxhY2UoZmFsc2UpCiAgICAgLCBtX3Nob3VsZE1hdGNoU3R5bGUoZmFsc2UpCisgICAgLCBtX21h
aWxCbG9ja3F1b3RlSGFuZGxpbmcoTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6UmVzcGVjdEJsb2Nr
cXVvdGUpCiB7CiB9CiAKIFRleHRFdmVudDo6VGV4dEV2ZW50KFBhc3NSZWZQdHI8QWJzdHJhY3RW
aWV3PiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gcGFzdGluZ0ZyYWdtZW50LAotICAgICAgICAgICAgICAgICAgICAgYm9vbCBzaG91bGRTbWFy
dFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSkKKyAgICAgICAgICAgICAgICAgICAgIGJv
b2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUsIE1haWxCbG9ja3F1
b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykKICAgICA6IFVJRXZlbnQoZXZlbnRO
YW1lcygpLnRleHRJbnB1dEV2ZW50LCB0cnVlLCB0cnVlLCB2aWV3LCAwKQogICAgICwgbV9pbnB1
dFR5cGUoVGV4dEV2ZW50SW5wdXRQYXN0ZSkKICAgICAsIG1fZGF0YShkYXRhKQogICAgICwgbV9w
YXN0aW5nRnJhZ21lbnQocGFzdGluZ0ZyYWdtZW50KQogICAgICwgbV9zaG91bGRTbWFydFJlcGxh
Y2Uoc2hvdWxkU21hcnRSZXBsYWNlKQogICAgICwgbV9zaG91bGRNYXRjaFN0eWxlKHNob3VsZE1h
dGNoU3R5bGUpCisgICAgLCBtX21haWxCbG9ja3F1b3RlSGFuZGxpbmcobWFpbEJsb2NrcXVvdGVI
YW5kbGluZykKIHsKIH0KIApAQCAtOTUsNiArOTksNyBAQCBUZXh0RXZlbnQ6OlRleHRFdmVudChQ
YXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywgY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBW
ZQogICAgICwgbV9kYXRhKGRhdGEpCiAgICAgLCBtX3Nob3VsZFNtYXJ0UmVwbGFjZShmYWxzZSkK
ICAgICAsIG1fc2hvdWxkTWF0Y2hTdHlsZShmYWxzZSkKKyAgICAsIG1fbWFpbEJsb2NrcXVvdGVI
YW5kbGluZyhNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0QmxvY2txdW90ZSkKICAgICAs
IG1fZGljdGF0aW9uQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkFsdGVybmF0aXZlcykKIHsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UZXh0RXZlbnQuaAppbmRleCA3MDBkNGU2Li40MDViZDlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRF
dmVudC5oCkBAIC0zNSwxMyArMzUsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xh
c3MgRG9jdW1lbnRGcmFnbWVudDsKIAorICAgIGVudW0gY2xhc3MgTWFpbEJsb2NrcXVvdGVIYW5k
bGluZzsKKwogICAgIGNsYXNzIFRleHRFdmVudCA6IHB1YmxpYyBVSUV2ZW50IHsKICAgICBwdWJs
aWM6CiAKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dEV2ZW50PiBjcmVhdGUoKTsKICAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dEV2ZW50PiBjcmVhdGUoUGFzc1JlZlB0cjxBYnN0
cmFjdFZpZXc+LCBjb25zdCBTdHJpbmcmIGRhdGEsIFRleHRFdmVudElucHV0VHlwZSA9IFRleHRF
dmVudElucHV0S2V5Ym9hcmQpOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0RXZlbnQ+
IGNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3LCBj
b25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlKTsKLSAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8VGV4dEV2ZW50PiBjcmVhdGVGb3JGcmFnbWVudFBhc3RlKFBhc3NSZWZQ
dHI8QWJzdHJhY3RWaWV3PiB2aWV3LCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGRhdGEs
IGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUpOworICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckZyYWdtZW50UGFzdGUoUGFz
c1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcsIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
ZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFp
bEJsb2NrcXVvdGVIYW5kbGluZyk7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRFdmVu
dD4gY3JlYXRlRm9yRHJvcChQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywgY29uc3QgU3Ry
aW5nJiBkYXRhKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dEV2ZW50PiBjcmVhdGVG
b3JEaWN0YXRpb24oUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+LCBjb25zdCBTdHJpbmcmIGRhdGEs
IGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZl
cyk7CiAKQEAgLTYyLDYgKzY0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJv
b2wgc2hvdWxkU21hcnRSZXBsYWNlKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRTbWFydFJlcGxh
Y2U7IH0KICAgICAgICAgYm9vbCBzaG91bGRNYXRjaFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9z
aG91bGRNYXRjaFN0eWxlOyB9CisgICAgICAgIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJs
b2NrcXVvdGVIYW5kbGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbWFpbEJsb2NrcXVvdGVIYW5kbGlu
ZzsgfQogICAgICAgICBEb2N1bWVudEZyYWdtZW50KiBwYXN0aW5nRnJhZ21lbnQoKSBjb25zdCB7
IHJldHVybiBtX3Bhc3RpbmdGcmFnbWVudC5nZXQoKTsgfQogICAgICAgICBjb25zdCBWZWN0b3I8
RGljdGF0aW9uQWx0ZXJuYXRpdmU+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMoKSBjb25zdCB7IHJl
dHVybiBtX2RpY3RhdGlvbkFsdGVybmF0aXZlczsgfQogCkBAIC03MCw3ICs3Myw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBUZXh0RXZlbnQoUGFzc1JlZlB0cjxBYnN0cmFjdFZp
ZXc+LCBjb25zdCBTdHJpbmcmIGRhdGEsIFRleHRFdmVudElucHV0VHlwZSA9IFRleHRFdmVudElu
cHV0S2V5Ym9hcmQpOwogICAgICAgICBUZXh0RXZlbnQoUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+
LCBjb25zdCBTdHJpbmcmIGRhdGEsIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4sCi0gICAg
ICAgICAgICAgICAgICBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRNYXRjaFN0
eWxlKTsKKyAgICAgICAgICAgICAgICAgIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNo
b3VsZE1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOwogICAgICAgICBUZXh0RXZl
bnQoUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZl
Y3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiAKICAg
ICAgICAgdmlydHVhbCBib29sIGlzVGV4dEV2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC04MSw2
ICs4NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmVmUHRyPERvY3VtZW50RnJh
Z21lbnQ+IG1fcGFzdGluZ0ZyYWdtZW50OwogICAgICAgICBib29sIG1fc2hvdWxkU21hcnRSZXBs
YWNlOwogICAgICAgICBib29sIG1fc2hvdWxkTWF0Y2hTdHlsZTsKKyAgICAgICAgTWFpbEJsb2Nr
cXVvdGVIYW5kbGluZyBtX21haWxCbG9ja3F1b3RlSGFuZGxpbmc7CiAgICAgICAgIFZlY3RvcjxE
aWN0YXRpb25BbHRlcm5hdGl2ZT4gbV9kaWN0YXRpb25BbHRlcm5hdGl2ZXM7CiAgICAgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDFmM2YwZWMuLjVlZWIzMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIEVkaXRvcjo6aGFu
ZGxlVGV4dEV2ZW50KFRleHRFdmVudCogZXZlbnQpCiAgICAgICAgICAgICBpZiAoY2xpZW50KCkt
PnBlcmZvcm1zVHdvU3RlcFBhc3RlKGV2ZW50LT5wYXN0aW5nRnJhZ21lbnQoKSkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKLSAgICAgICAgICAgIHJlcGxhY2VTZWxlY3Rp
b25XaXRoRnJhZ21lbnQoZXZlbnQtPnBhc3RpbmdGcmFnbWVudCgpLCBmYWxzZSwgZXZlbnQtPnNo
b3VsZFNtYXJ0UmVwbGFjZSgpLCBldmVudC0+c2hvdWxkTWF0Y2hTdHlsZSgpKTsKKyAgICAgICAg
ICAgIHJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoZXZlbnQtPnBhc3RpbmdGcmFnbWVudCgp
LCBmYWxzZSwgZXZlbnQtPnNob3VsZFNtYXJ0UmVwbGFjZSgpLCBldmVudC0+c2hvdWxkTWF0Y2hT
dHlsZSgpLCBldmVudC0+bWFpbEJsb2NrcXVvdGVIYW5kbGluZygpKTsKICNpZiBQTEFURk9STShJ
T1MpCiAgICAgICAgIH0KICNlbmRpZgpAQCAtNTI4LDEyICs1MjgsMTIgQEAgdm9pZCBFZGl0b3I6
OnBhc3RlQXNQbGFpblRleHQoY29uc3QgU3RyaW5nJiBwYXN0aW5nVGV4dCwgYm9vbCBzbWFydFJl
cGxhY2UpCiAgICAgdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yUGxh
aW5UZXh0UGFzdGUoZG9jdW1lbnQoKS5kb21XaW5kb3coKSwgcGFzdGluZ1RleHQsIHNtYXJ0UmVw
bGFjZSksIElHTk9SRV9FWENFUFRJT04pOwogfQogCi12b2lkIEVkaXRvcjo6cGFzdGVBc0ZyYWdt
ZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gcGFzdGluZ0ZyYWdtZW50LCBib29sIHNt
YXJ0UmVwbGFjZSwgYm9vbCBtYXRjaFN0eWxlKQordm9pZCBFZGl0b3I6OnBhc3RlQXNGcmFnbWVu
dChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IHBhc3RpbmdGcmFnbWVudCwgYm9vbCBzbWFy
dFJlcGxhY2UsIGJvb2wgbWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyByZXNwZWN0
c01haWxCbG9ja3F1b3RlKQogewogICAgIE5vZGUqIHRhcmdldCA9IGZpbmRFdmVudFRhcmdldEZy
b21TZWxlY3Rpb24oKTsKICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgcmV0dXJuOwotICAgIHRh
cmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUoZG9j
dW1lbnQoKS5kb21XaW5kb3coKSwgcGFzdGluZ0ZyYWdtZW50LCBzbWFydFJlcGxhY2UsIG1hdGNo
U3R5bGUpLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4
dEV2ZW50OjpjcmVhdGVGb3JGcmFnbWVudFBhc3RlKGRvY3VtZW50KCkuZG9tV2luZG93KCksIHBh
c3RpbmdGcmFnbWVudCwgc21hcnRSZXBsYWNlLCBtYXRjaFN0eWxlLCByZXNwZWN0c01haWxCbG9j
a3F1b3RlKSwgSUdOT1JFX0VYQ0VQVElPTik7CiB9CiAKIHZvaWQgRWRpdG9yOjpwYXN0ZUFzUGxh
aW5UZXh0QnlwYXNzaW5nREhUTUwoKQpAQCAtNTY1LDcgKzU2NSw3IEBAIFN0cmluZyBFZGl0b3I6
OnBsYWluVGV4dEZyb21QYXN0ZWJvYXJkKGNvbnN0IFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQp
CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKEVGTCkKLXZvaWQg
RWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIGJvb2wg
YWxsb3dQbGFpblRleHQpCit2b2lkIEVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJv
YXJkKiBwYXN0ZWJvYXJkLCBib29sIGFsbG93UGxhaW5UZXh0LCBNYWlsQmxvY2txdW90ZUhhbmRs
aW5nIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpCiB7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9
IHNlbGVjdGVkUmFuZ2UoKTsKICAgICBpZiAoIXJhbmdlKQpAQCAtNTc0LDcgKzU3NCw3IEBAIHZv
aWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIGJv
b2wgYWxsb3dQbGFpblRleHQpCiAgICAgYm9vbCBjaG9zZVBsYWluVGV4dDsKICAgICBSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBwYXN0ZWJvYXJkLT5kb2N1bWVudEZyYWdtZW50
KG1fZnJhbWUsICpyYW5nZSwgYWxsb3dQbGFpblRleHQsIGNob3NlUGxhaW5UZXh0KTsKICAgICBp
ZiAoZnJhZ21lbnQgJiYgc2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21lbnQsIHJhbmdlLCBFZGl0
b3JJbnNlcnRBY3Rpb25QYXN0ZWQpKQotICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJhZ21lbnQs
IGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKSwgY2hvc2VQbGFpblRl
eHQpOworICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJhZ21lbnQsIGNhblNtYXJ0UmVwbGFjZVdp
dGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKSwgY2hvc2VQbGFpblRleHQsIG1haWxCbG9ja3F1b3Rl
SGFuZGxpbmcpOwogfQogI2VuZGlmCiAKQEAgLTU5Nyw3ICs1OTcsNyBAQCBib29sIEVkaXRvcjo6
c2hvdWxkSW5zZXJ0RnJhZ21lbnQoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVu
dCwgUGFzc1JlZgogICAgIHJldHVybiBjbGllbnQoKS0+c2hvdWxkSW5zZXJ0Tm9kZShmcmFnbWVu
dC5nZXQoKSwgcmVwbGFjaW5nRE9NUmFuZ2UuZ2V0KCksIGdpdmVuQWN0aW9uKTsKIH0KIAotdm9p
ZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoUGFzc1JlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiBmcmFnbWVudCwgYm9vbCBzZWxlY3RSZXBsYWNlbWVudCwgYm9vbCBzbWFydFJl
cGxhY2UsIGJvb2wgbWF0Y2hTdHlsZSkKK3ZvaWQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0
aEZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQsIGJvb2wgc2Vs
ZWN0UmVwbGFjZW1lbnQsIGJvb2wgc21hcnRSZXBsYWNlLCBib29sIG1hdGNoU3R5bGUsIE1haWxC
bG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykKIHsKICAgICBWaXNpYmxl
U2VsZWN0aW9uIHNlbGVjdGlvbiA9IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAg
ICAgaWYgKHNlbGVjdGlvbi5pc05vbmUoKSB8fCAhc2VsZWN0aW9uLmlzQ29udGVudEVkaXRhYmxl
KCkgfHwgIWZyYWdtZW50KQpAQCAtNjEwLDYgKzYxMCw5IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNl
U2VsZWN0aW9uV2l0aEZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21l
bnQsCiAgICAgICAgIG9wdGlvbnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNtYXJ0UmVw
bGFjZTsKICAgICBpZiAobWF0Y2hTdHlsZSkKICAgICAgICAgb3B0aW9ucyB8PSBSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZDo6TWF0Y2hTdHlsZTsKKyAgICBpZiAobWFpbEJsb2NrcXVvdGVIYW5kbGlu
ZyA9PSBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpJZ25vcmVCbG9ja3F1b3RlKQorICAgICAgICBv
cHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpJZ25vcmVNYWlsQmxvY2txdW90ZTsK
KwogICAgIGFwcGx5Q29tbWFuZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKGRvY3Vt
ZW50KCksIGZyYWdtZW50LCBvcHRpb25zLCBFZGl0QWN0aW9uUGFzdGUpKTsKICAgICByZXZlYWxT
ZWxlY3Rpb25BZnRlckVkaXRpbmdPcGVyYXRpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgK
aW5kZXggYzY5MWMzYy4uYmM3YzQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC05MCw2
ICs5MCwxMSBAQCBzdHJ1Y3QgQ29tcG9zaXRpb25VbmRlcmxpbmUgewogZW51bSBFZGl0b3JDb21t
YW5kU291cmNlIHsgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5nLCBDb21tYW5kRnJvbURPTSwg
Q29tbWFuZEZyb21ET01XaXRoVXNlckludGVyZmFjZSB9OwogZW51bSBFZGl0b3JQYXJhZ3JhcGhT
ZXBhcmF0b3IgeyBFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3JJc0RpdiwgRWRpdG9yUGFyYWdyYXBo
U2VwYXJhdG9ySXNQIH07CiAKK2VudW0gY2xhc3MgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyB7Cisg
ICAgUmVzcGVjdEJsb2NrcXVvdGUsCisgICAgSWdub3JlQmxvY2txdW90ZSwKK307CisKIGNsYXNz
IEVkaXRvciB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRWRpdG9yKEZyYW1lJik7CkBAIC0zMzUs
NyArMzQwLDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1
bHQoY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uKTsKICAgICB2b2lkIGRpc21pc3NDb3JyZWN0aW9u
UGFuZWxBc0lnbm9yZWQoKTsKIAotICAgIHZvaWQgcGFzdGVBc0ZyYWdtZW50KFBhc3NSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4sIGJvb2wgc21hcnRSZXBsYWNlLCBib29sIG1hdGNoU3R5bGUpOwor
ICAgIHZvaWQgcGFzdGVBc0ZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4sIGJv
b2wgc21hcnRSZXBsYWNlLCBib29sIG1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcg
PSBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0QmxvY2txdW90ZSk7CiAgICAgdm9pZCBw
YXN0ZUFzUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYsIGJvb2wgc21hcnRSZXBsYWNlKTsKIAogICAg
IC8vIFRoaXMgaXMgb25seSBjYWxsZWQgb24gdGhlIG1hYyB3aGVyZSBwYXN0ZSBpcyBpbXBsZW1l
bnRlZCBwcmltYXJpbHkgYXQgdGhlIFdlYktpdCBsZXZlbC4KQEAgLTM3Nyw3ICszODIsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCB0ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYShFbGVtZW50Kik7CiAgICAg
V3JpdGluZ0RpcmVjdGlvbiBiYXNlV3JpdGluZ0RpcmVjdGlvbkZvclNlbGVjdGlvblN0YXJ0KCkg
Y29uc3Q7CiAKLSAgICB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoUGFzc1JlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiwgYm9vbCBzZWxlY3RSZXBsYWNlbWVudCwgYm9vbCBzbWFydFJl
cGxhY2UsIGJvb2wgbWF0Y2hTdHlsZSk7CisgICAgdm9pZCByZXBsYWNlU2VsZWN0aW9uV2l0aEZy
YWdtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4sIGJvb2wgc2VsZWN0UmVwbGFjZW1l
bnQsIGJvb2wgc21hcnRSZXBsYWNlLCBib29sIG1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFu
ZGxpbmcgPSBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0QmxvY2txdW90ZSk7CiAgICAg
dm9pZCByZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQoY29uc3QgU3RyaW5nJiwgYm9vbCBzZWxlY3RS
ZXBsYWNlbWVudCwgYm9vbCBzbWFydFJlcGxhY2UpOwogICAgIGJvb2wgc2VsZWN0aW9uU3RhcnRI
YXNNYXJrZXJGb3IoRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIGludCBmcm9tLCBpbnQgbGVu
Z3RoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVjdGVkQnlFZGl0
aW5nKGJvb2wgb25seUhhbmRsZVdvcmRzQ29udGFpbmluZ1NlbGVjdGlvbik7CkBAIC00MzEsNyAr
NDM2LDcgQEAgcHVibGljOgogI2lmICFQTEFURk9STShJT1MpCiAgICAgYm9vbCBjYW5Db3B5RXhj
bHVkaW5nU3RhbmRhbG9uZUltYWdlcygpOwogICAgIHZvaWQgdGFrZUZpbmRTdHJpbmdGcm9tU2Vs
ZWN0aW9uKCk7Ci0gICAgdm9pZCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSk7CisgICAgdm9pZCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyA9
IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3RlKTsKICAgICB2b2lkIHJl
cGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUpOwogICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZiAvLyAhUExBVEZPUk0o
SU9TKQpAQCAtNDUwLDcgKzQ1NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5EZWxldGVSYW5n
ZShSYW5nZSopIGNvbnN0OwogICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQo
UGFzdGVib2FyZCYpOwogICAgIHZvaWQgcGFzdGVBc1BsYWluVGV4dFdpdGhQYXN0ZWJvYXJkKFBh
c3RlYm9hcmQmKTsKLSAgICB2b2lkIHBhc3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCosIGJv
b2wgYWxsb3dQbGFpblRleHQpOworICAgIHZvaWQgcGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJv
YXJkKiwgYm9vbCBhbGxvd1BsYWluVGV4dCwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyA9IE1haWxC
bG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3RlKTsKICAgICBTdHJpbmcgcGxhaW5U
ZXh0RnJvbVBhc3RlYm9hcmQoY29uc3QgUGFzdGVib2FyZFBsYWluVGV4dCYpOwogCiAgICAgdm9p
ZCByZXZlYWxTZWxlY3Rpb25BZnRlckVkaXRpbmdPcGVyYXRpb24oY29uc3QgU2Nyb2xsQWxpZ25t
ZW50JiA9IFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZCwgUmV2ZWFsRXh0ZW50
T3B0aW9uID0gRG9Ob3RSZXZlYWxFeHRlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCA1OTRjZWIwLi5kNTFkZDAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcApAQCAtMzc4LDYgKzM3OCw3IEBAIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWZQdHI8CiAgICAgLCBt
X2VkaXRBY3Rpb24oZWRpdEFjdGlvbikKICAgICAsIG1fc2FuaXRpemVGcmFnbWVudChvcHRpb25z
ICYgU2FuaXRpemVGcmFnbWVudCkKICAgICAsIG1fc2hvdWxkTWVyZ2VFbmQoZmFsc2UpCisgICAg
LCBtX2lnbm9yZU1haWxCbG9ja3F1b3RlKG9wdGlvbnMgJiBJZ25vcmVNYWlsQmxvY2txdW90ZSkK
IHsKIH0KIApAQCAtOTMzLDExICs5MzQsMTEgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6ZG9BcHBseSgpCiAgICAgTm9kZSogc3RhcnRCbG9jayA9IGVuY2xvc2luZ0Jsb2NrKHZpc2li
bGVTdGFydC5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCkpOwogICAgIAogICAgIFBv
c2l0aW9uIGluc2VydGlvblBvcyA9IHNlbGVjdGlvbi5zdGFydCgpOwotICAgIGJvb2wgc3RhcnRJ
c0luc2lkZU1haWxCbG9ja3F1b3RlID0gZW5jbG9zaW5nTm9kZU9mVHlwZShpbnNlcnRpb25Qb3Ms
IGlzTWFpbEJsb2NrcXVvdGUsIENhbkNyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKKyAgICBib29sIHNo
b3VsZEhhbmRsZU1haWxCbG9ja3F1b3RlID0gZW5jbG9zaW5nTm9kZU9mVHlwZShpbnNlcnRpb25Q
b3MsIGlzTWFpbEJsb2NrcXVvdGUsIENhbkNyb3NzRWRpdGluZ0JvdW5kYXJ5KSAmJiAhbV9pZ25v
cmVNYWlsQmxvY2txdW90ZTsKICAgICBib29sIHNlbGVjdGlvbklzUGxhaW5UZXh0ID0gIXNlbGVj
dGlvbi5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpOwogICAgIEVsZW1lbnQqIGN1cnJlbnRSb290
ID0gc2VsZWN0aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKIAotICAgIGlmICgoc2VsZWN0aW9u
U3RhcnRXYXNTdGFydE9mUGFyYWdyYXBoICYmIHNlbGVjdGlvbkVuZFdhc0VuZE9mUGFyYWdyYXBo
ICYmICFzdGFydElzSW5zaWRlTWFpbEJsb2NrcXVvdGUpIHx8CisgICAgaWYgKChzZWxlY3Rpb25T
dGFydFdhc1N0YXJ0T2ZQYXJhZ3JhcGggJiYgc2VsZWN0aW9uRW5kV2FzRW5kT2ZQYXJhZ3JhcGgg
JiYgIXNob3VsZEhhbmRsZU1haWxCbG9ja3F1b3RlKSB8fAogICAgICAgICBzdGFydEJsb2NrID09
IGN1cnJlbnRSb290IHx8IGlzTGlzdEl0ZW0oc3RhcnRCbG9jaykgfHwgc2VsZWN0aW9uSXNQbGFp
blRleHQpCiAgICAgICAgIG1fcHJldmVudE5lc3RpbmcgPSBmYWxzZTsKICAgICAKQEAgLTk0OCw3
ICs5NDksNyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAgICAg
ICAgLy8gd2lsbCBsZWF2ZSBoYW5naW5nIGJsb2NrKHMpLgogICAgICAgICAvLyBNZXJnZSBibG9j
a3MgaWYgdGhlIHN0YXJ0IG9mIHRoZSBzZWxlY3Rpb24gd2FzIGluIGEgTWFpbCBibG9ja3F1b3Rl
LCBzaW5jZSB3ZSBoYW5kbGUgIAogICAgICAgICAvLyB0aGF0IGNhc2Ugc3BlY2lhbGx5IHRvIHBy
ZXZlbnQgbmVzdGluZy4gCi0gICAgICAgIGJvb2wgbWVyZ2VCbG9ja3NBZnRlckRlbGV0ZSA9IHN0
YXJ0SXNJbnNpZGVNYWlsQmxvY2txdW90ZSB8fCBpc0VuZE9mUGFyYWdyYXBoKHZpc2libGVFbmQp
IHx8IGlzU3RhcnRPZkJsb2NrKHZpc2libGVTdGFydCk7CisgICAgICAgIGJvb2wgbWVyZ2VCbG9j
a3NBZnRlckRlbGV0ZSA9IHNob3VsZEhhbmRsZU1haWxCbG9ja3F1b3RlIHx8IGlzRW5kT2ZQYXJh
Z3JhcGgodmlzaWJsZUVuZCkgfHwgaXNTdGFydE9mQmxvY2sodmlzaWJsZVN0YXJ0KTsKICAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBvbmx5IGV4cGFuZCB0byBpbmNsdWRlIGZ1bGx5IHNlbGVj
dGVkIHNwZWNpYWwgZWxlbWVudHMgaWYgd2UgYXJlIGNvcHlpbmcgYSAKICAgICAgICAgLy8gc2Vs
ZWN0aW9uIGFuZCBwYXN0aW5nIGl0IG9uIHRvcCBvZiBpdHNlbGYuCiAgICAgICAgIGRlbGV0ZVNl
bGVjdGlvbihmYWxzZSwgbWVyZ2VCbG9ja3NBZnRlckRlbGV0ZSwgdHJ1ZSwgZmFsc2UpOwpAQCAt
OTc3LDcgKzk3OCw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkoKQog
ICAgICAgICAvLyBBcyBsb25nIGFzIHRoZSAgZGl2IHN0eWxlcyBhcmUgdGhlIHNhbWUsIHZpc3Vh
bGx5IHlvdSdkIGV4cGVjdDogPGRpdj54YmFyPC9kaXY+PGRpdj5iYXI8L2Rpdj48ZGl2PmJheng8
L2Rpdj4sIAogICAgICAgICAvLyBub3QgPGRpdj54YmFyPGRpdj5iYXI8L2Rpdj48ZGl2PmJheng8
L2Rpdj48L2Rpdj4uCiAgICAgICAgIC8vIERvbid0IGRvIHRoaXMgaWYgdGhlIHNlbGVjdGlvbiBz
dGFydGVkIGluIGEgTWFpbCBibG9ja3F1b3RlLgotICAgICAgICBpZiAobV9wcmV2ZW50TmVzdGlu
ZyAmJiAhc3RhcnRJc0luc2lkZU1haWxCbG9ja3F1b3RlICYmICFpc0VuZE9mUGFyYWdyYXBoKHZp
c2libGVTdGFydCkgJiYgIWlzU3RhcnRPZlBhcmFncmFwaCh2aXNpYmxlU3RhcnQpKSB7CisgICAg
ICAgIGlmIChtX3ByZXZlbnROZXN0aW5nICYmICFzaG91bGRIYW5kbGVNYWlsQmxvY2txdW90ZSAm
JiAhaXNFbmRPZlBhcmFncmFwaCh2aXNpYmxlU3RhcnQpICYmICFpc1N0YXJ0T2ZQYXJhZ3JhcGgo
dmlzaWJsZVN0YXJ0KSkgewogICAgICAgICAgICAgaW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yKCk7
CiAgICAgICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJs
ZVN0YXJ0KCkucHJldmlvdXMoKSk7CiAgICAgICAgIH0KQEAgLTk4Nyw3ICs5ODgsNyBAQCB2b2lk
IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAgICAvLyBXZSBkb24ndCB3YW50
IGFueSBvZiB0aGUgcGFzdGVkIGNvbnRlbnQgdG8gZW5kIHVwIG5lc3RlZCBpbiBhIE1haWwgYmxv
Y2txdW90ZSwgc28gZmlyc3QgYnJlYWsgCiAgICAgLy8gb3V0IG9mIGFueSBzdXJyb3VuZGluZyBN
YWlsIGJsb2NrcXVvdGVzLiBVbmxlc3Mgd2UncmUgaW5zZXJ0aW5nIGluIGEgdGFibGUsIGluIHdo
aWNoIGNhc2UKICAgICAvLyBicmVha2luZyB0aGUgYmxvY2txdW90ZSB3aWxsIHByZXZlbnQgdGhl
IGNvbnRlbnQgZnJvbSBhY3R1YWxseSBiZWluZyBpbnNlcnRlZCBpbiB0aGUgdGFibGUuCi0gICAg
aWYgKHN0YXJ0SXNJbnNpZGVNYWlsQmxvY2txdW90ZSAmJiBtX3ByZXZlbnROZXN0aW5nICYmICEo
ZW5jbG9zaW5nTm9kZU9mVHlwZShpbnNlcnRpb25Qb3MsICZpc1RhYmxlU3RydWN0dXJlTm9kZSkp
KSB7IAorICAgIGlmIChzaG91bGRIYW5kbGVNYWlsQmxvY2txdW90ZSAmJiBtX3ByZXZlbnROZXN0
aW5nICYmICEoZW5jbG9zaW5nTm9kZU9mVHlwZShpbnNlcnRpb25Qb3MsICZpc1RhYmxlU3RydWN0
dXJlTm9kZSkpKSB7CiAgICAgICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKEJyZWFrQmxvY2tx
dW90ZUNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpKSk7IAogICAgICAgICAvLyBUaGlzIHdpbGwg
bGVhdmUgYSBiciBiZXR3ZWVuIHRoZSBzcGxpdC4gCiAgICAgICAgIE5vZGUqIGJyID0gZW5kaW5n
U2VsZWN0aW9uKCkuc3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpOyAKQEAgLTEwMTYsNyArMTAxNyw3
IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkoKQogICAgIAogICAgIC8v
IEFkanVzdCBpbnNlcnRpb25Qb3MgdG8gcHJldmVudCBuZXN0aW5nLgogICAgIC8vIElmIHRoZSBz
dGFydCB3YXMgaW4gYSBNYWlsIGJsb2NrcXVvdGUsIHdlIHdpbGwgaGF2ZSBhbHJlYWR5IGhhbmRs
ZWQgYWRqdXN0aW5nIGluc2VydGlvblBvcyBhYm92ZS4KLSAgICBpZiAobV9wcmV2ZW50TmVzdGlu
ZyAmJiBpbnNlcnRpb25CbG9jayAmJiAhaXNUYWJsZUNlbGwoaW5zZXJ0aW9uQmxvY2suZ2V0KCkp
ICYmICFzdGFydElzSW5zaWRlTWFpbEJsb2NrcXVvdGUpIHsKKyAgICBpZiAobV9wcmV2ZW50TmVz
dGluZyAmJiBpbnNlcnRpb25CbG9jayAmJiAhaXNUYWJsZUNlbGwoaW5zZXJ0aW9uQmxvY2suZ2V0
KCkpICYmICFzaG91bGRIYW5kbGVNYWlsQmxvY2txdW90ZSkgewogICAgICAgICBBU1NFUlQoaW5z
ZXJ0aW9uQmxvY2sgIT0gY3VycmVudFJvb3QpOwogICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlz
aWJsZUluc2VydGlvblBvcyhpbnNlcnRpb25Qb3MpOwogICAgICAgICBpZiAoaXNFbmRPZkJsb2Nr
KHZpc2libGVJbnNlcnRpb25Qb3MpICYmICEoaXNTdGFydE9mQmxvY2sodmlzaWJsZUluc2VydGlv
blBvcykgJiYgZnJhZ21lbnQuaGFzSW50ZXJjaGFuZ2VOZXdsaW5lQXRFbmQoKSkpCkBAIC0xMTYy
LDcgKzExNjMsNyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAg
ICAvLyB0aGUgc3RhcnQgbWVyZ2Ugc28gdGhhdCB0aGUgc3RhcnQgbWVyZ2UgZG9lc24ndCBlZmZl
Y3Qgb3VyIGRlY2lzaW9uLgogICAgIG1fc2hvdWxkTWVyZ2VFbmQgPSBzaG91bGRNZXJnZUVuZChz
ZWxlY3Rpb25FbmRXYXNFbmRPZlBhcmFncmFwaCk7CiAgICAgCi0gICAgaWYgKHNob3VsZE1lcmdl
U3RhcnQoc2VsZWN0aW9uU3RhcnRXYXNTdGFydE9mUGFyYWdyYXBoLCBmcmFnbWVudC5oYXNJbnRl
cmNoYW5nZU5ld2xpbmVBdFN0YXJ0KCksIHN0YXJ0SXNJbnNpZGVNYWlsQmxvY2txdW90ZSkpIHsK
KyAgICBpZiAoc2hvdWxkTWVyZ2VTdGFydChzZWxlY3Rpb25TdGFydFdhc1N0YXJ0T2ZQYXJhZ3Jh
cGgsIGZyYWdtZW50Lmhhc0ludGVyY2hhbmdlTmV3bGluZUF0U3RhcnQoKSwgc2hvdWxkSGFuZGxl
TWFpbEJsb2NrcXVvdGUpKSB7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBzdGFydE9mUGFyYWdy
YXBoVG9Nb3ZlID0gcG9zaXRpb25BdFN0YXJ0T2ZJbnNlcnRlZENvbnRlbnQoKTsKICAgICAgICAg
VmlzaWJsZVBvc2l0aW9uIGRlc3RpbmF0aW9uID0gc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5wcmV2
aW91cygpOwogICAgICAgICAvLyBXZSBuZWVkIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB3ZSBu
ZWVkIHRvIG1lcmdlIHRoZSBlbmQKQEAgLTEyMTEsNyArMTIxMiw3IEBAIHZvaWQgUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgIC8vIFVzZSBhIGRlZmF1bHQgcGFyYWdyYXBoIGVsZW1lbnQgKGEgcGxh
aW4gZGl2KSBmb3IgdGhlIGVtcHR5IHBhcmFncmFwaCwgdXNpbmcgdGhlIGxhc3QgcGFyYWdyYXBo
CiAgICAgICAgICAgICAgICAgICAgIC8vIGJsb2NrJ3Mgc3R5bGUgc2VlbXMgdG8gYW5ub3kgdXNl
cnMuCi0gICAgICAgICAgICAgICAgICAgIGluc2VydFBhcmFncmFwaFNlcGFyYXRvcih0cnVlLCAh
c3RhcnRJc0luc2lkZU1haWxCbG9ja3F1b3RlICYmIGhpZ2hlc3RFbmNsb3NpbmdOb2RlT2ZUeXBl
KGVuZE9mSW5zZXJ0ZWRDb250ZW50LmRlZXBFcXVpdmFsZW50KCksCisgICAgICAgICAgICAgICAg
ICAgIGluc2VydFBhcmFncmFwaFNlcGFyYXRvcih0cnVlLCAhc2hvdWxkSGFuZGxlTWFpbEJsb2Nr
cXVvdGUgJiYgaGlnaGVzdEVuY2xvc2luZ05vZGVPZlR5cGUoZW5kT2ZJbnNlcnRlZENvbnRlbnQu
ZGVlcEVxdWl2YWxlbnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgIGlzTWFpbEJsb2NrcXVv
dGUsIENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5LCBpbnNlcnRlZE5vZGVzLmZpcnN0Tm9kZUlu
c2VydGVkKCktPnBhcmVudE5vZGUoKSkpOwogICAgICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oCmluZGV4IGRmNGE5
MjYuLjc1NTk5MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kLmgKQEAgLTQyLDcgKzQyLDggQEAgcHVibGljOgogICAgICAgICBNYXRjaFN0
eWxlID0gMSA8PCAyLAogICAgICAgICBQcmV2ZW50TmVzdGluZyA9IDEgPDwgMywKICAgICAgICAg
TW92aW5nUGFyYWdyYXBoID0gMSA8PCA0LAotICAgICAgICBTYW5pdGl6ZUZyYWdtZW50ID0gMSA8
PCA1CisgICAgICAgIFNhbml0aXplRnJhZ21lbnQgPSAxIDw8IDUsCisgICAgICAgIElnbm9yZU1h
aWxCbG9ja3F1b3RlID0gMSA8PCA2LAogICAgIH07CiAKICAgICB0eXBlZGVmIHVuc2lnbmVkIENv
bW1hbmRPcHRpb25zOwpAQCAtMTE1LDYgKzExNiw3IEBAIHByaXZhdGU6CiAgICAgRWRpdEFjdGlv
biBtX2VkaXRBY3Rpb247CiAgICAgYm9vbCBtX3Nhbml0aXplRnJhZ21lbnQ7CiAgICAgYm9vbCBt
X3Nob3VsZE1lcmdlRW5kOworICAgIGJvb2wgbV9pZ25vcmVNYWlsQmxvY2txdW90ZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvaW9zL0VkaXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklP
Uy5tbQppbmRleCAzMWViMDg4Li5kOWM3MGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3Mv
RWRpdG9ySU9TLm1tCkBAIC01NTEsNyArNTUxLDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBFZGl0b3I6OndlYkNvbnRlbnRGcm9tUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWIK
ICAgICByZXR1cm4gcmVhZGVyLmZyYWdtZW50LnJlbGVhc2UoKTsKIH0KIAotdm9pZCBFZGl0b3I6
OnBhc3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCogcGFzdGVib2FyZCwgYm9vbCBhbGxvd1Bs
YWluVGV4dCkKK3ZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBh
c3RlYm9hcmQsIGJvb2wgYWxsb3dQbGFpblRleHQsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFp
bEJsb2NrcXVvdGVIYW5kbGluZykKIHsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gc2VsZWN0
ZWRSYW5nZSgpOwogCkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBFZGl0b3I6OnBhc3RlV2l0aFBh
c3RlYm9hcmQoUGFzdGVib2FyZCogcGFzdGVib2FyZCwgYm9vbCBhbGxvd1BsYWluVGV4dCkKICAg
ICAgICAgZnJhZ21lbnQgPSB3ZWJDb250ZW50RnJvbVBhc3RlYm9hcmQoKnBhc3RlYm9hcmQsICpy
YW5nZSwgYWxsb3dQbGFpblRleHQsIGNob3NlUGxhaW5UZXh0KTsKIAogICAgIGlmIChmcmFnbWVu
dCAmJiBzaG91bGRJbnNlcnRGcmFnbWVudChmcmFnbWVudCwgcmFuZ2UsIEVkaXRvckluc2VydEFj
dGlvblBhc3RlZCkpCi0gICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudCwgY2FuU21hcnRS
ZXBsYWNlV2l0aFBhc3RlYm9hcmQoKnBhc3RlYm9hcmQpLCBmYWxzZSk7CisgICAgICAgIHBhc3Rl
QXNGcmFnbWVudChmcmFnbWVudCwgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQoKnBhc3Rl
Ym9hcmQpLCBmYWxzZSwgbWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7CiB9CiAKIFBhc3NSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gRWRpdG9yOjpjcmVhdGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhO
U0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbQppbmRleCAxYzVjMzMxLi5kMjU3MGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRWRpdG9yTWFjLm1tCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgRWRpdG9yOjpzaG93Q29sb3JQ
YW5lbCgpCiAgICAgW1tOU0FwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXSBvcmRlckZyb250
Q29sb3JQYW5lbDpuaWxdOwogfQogCi12b2lkIEVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQ
YXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBib29sIGFsbG93UGxhaW5UZXh0KQordm9pZCBFZGl0b3I6
OnBhc3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCogcGFzdGVib2FyZCwgYm9vbCBhbGxvd1Bs
YWluVGV4dCwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKQog
ewogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBzZWxlY3RlZFJhbmdlKCk7CiAKQEAgLTkzLDcg
KzkzLDcgQEAgdm9pZCBFZGl0b3I6OnBhc3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCogcGFz
dGVib2FyZCwgYm9vbCBhbGxvd1BsYWluVGV4dCkKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gZnJhZ21lbnQgPSB3ZWJDb250ZW50RnJvbVBhc3RlYm9hcmQoKnBhc3RlYm9hcmQsICpyYW5n
ZSwgYWxsb3dQbGFpblRleHQsIGNob3NlUGxhaW5UZXh0KTsKIAogICAgIGlmIChmcmFnbWVudCAm
JiBzaG91bGRJbnNlcnRGcmFnbWVudChmcmFnbWVudCwgcmFuZ2UsIEVkaXRvckluc2VydEFjdGlv
blBhc3RlZCkpCi0gICAgICAgIHBhc3RlQXNGcmFnbWVudChmcmFnbWVudCwgY2FuU21hcnRSZXBs
YWNlV2l0aFBhc3RlYm9hcmQoKnBhc3RlYm9hcmQpLCBmYWxzZSk7CisgICAgICAgIHBhc3RlQXNG
cmFnbWVudChmcmFnbWVudCwgY2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQoKnBhc3RlYm9h
cmQpLCBmYWxzZSwgbWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7CiAKICAgICBjbGllbnQoKS0+c2V0
SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJpbmcoKSk7CiB9CkBAIC0yNTcsMTUgKzI1NywzOSBAQCB2
b2lkIEVkaXRvcjo6dGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uKCkKICAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnNldFN0cmluZ0ZvclR5cGUobV9mcmFt
ZS5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKHNlbGVjdGVkVGV4dEZvckRhdGFUcmFu
c2ZlcigpKSwgTlNTdHJpbmdQYm9hcmRUeXBlLCBOU0ZpbmRQYm9hcmQpOwogfQogCi12b2lkIEVk
aXRvcjo6cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpCit2b2lkIEVkaXRvcjo6cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVv
dGVIYW5kbGluZykKIHsKICAgICBQYXN0ZWJvYXJkIHBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUp
OwogICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudFJpY2hs
eUVkaXRhYmxlKCkpCi0gICAgICAgIHBhc3RlV2l0aFBhc3RlYm9hcmQoJnBhc3RlYm9hcmQsIHRy
dWUpOworICAgICAgICBwYXN0ZVdpdGhQYXN0ZWJvYXJkKCZwYXN0ZWJvYXJkLCB0cnVlLCBtYWls
QmxvY2txdW90ZUhhbmRsaW5nKTsKICAgICBlbHNlCiAgICAgICAgIHBhc3RlQXNQbGFpblRleHRX
aXRoUGFzdGVib2FyZChwYXN0ZWJvYXJkKTsKIH0KIAorc3RhdGljIHZvaWQgbWF5YmVDb3B5Tm9k
ZUF0dHJpYnV0ZXNUb0ZyYWdtZW50KE5vZGUqIG5vZGUsIERvY3VtZW50RnJhZ21lbnQqIGZyYWdt
ZW50KQoreworICAgIC8vIFRoaXMgaXMgb25seSBzdXBwb3J0ZWQgZm9yIHNpbmdsZS1Ob2RlIGZy
YWdtZW50cy4KKyAgICBOb2RlKiBmaXJzdENoaWxkID0gZnJhZ21lbnQtPmZpcnN0Q2hpbGQoKTsK
KyAgICBpZiAoZmlyc3RDaGlsZCAhPSBmcmFnbWVudC0+bGFzdENoaWxkKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIEFuZCBvbmx5IHN1cHBvcnRlZCBmb3IgSFRNTCBlbGVtZW50cy4KKyAg
ICBpZiAoIW5vZGUtPmlzSFRNTEVsZW1lbnQoKSB8fCAhZmlyc3RDaGlsZC0+aXNIVE1MRWxlbWVu
dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBBbmQgb25seSBpZiB0aGUgc291cmNlIEVs
ZW1lbnQgYW5kIGRlc3RpbmF0aW9uIEVsZW1lbnQgaGF2ZSB0aGUgc2FtZSBIVE1MIHRhZyBuYW1l
LgorICAgIGNvbnN0IEVsZW1lbnQmIG9sZEVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KCpub2RlKTsK
KyAgICBFbGVtZW50JiBuZXdFbGVtZW50ID0gdG9IVE1MRWxlbWVudCgqZmlyc3RDaGlsZCk7Cisg
ICAgaWYgKCFvbGRFbGVtZW50Lmhhc1RhZ05hbWUobmV3RWxlbWVudC50YWdRTmFtZSgpKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgZm9yIChjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSA6IG9s
ZEVsZW1lbnQuYXR0cmlidXRlc0l0ZXJhdG9yKCkpIHsKKyAgICAgICAgaWYgKG5ld0VsZW1lbnQu
aGFzQXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1lKCkpKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIG5ld0VsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1lKCksIGF0dHJpYnV0
ZS52YWx1ZSgpKTsKKyAgICB9Cit9CisKIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0
ZWJvYXJkKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7CiAgICAg
QVNTRVJUKG5vZGUpOwpAQCAtMjc2LDcgKzMwMCwyNSBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5v
ZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KQogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3VtZW50
KCksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3JlQW5jaG9yKSwgUG9z
aXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcikpOwogICAgIG1fZnJh
bWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocmFuZ2UuZ2V0KCkp
LCBGcmFtZVNlbGVjdGlvbjo6RG9Ob3RTZXRGb2N1cyk7CiAKLSAgICByZWFkU2VsZWN0aW9uRnJv
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpOworICAgIFBhc3RlYm9hcmQgcGFzdGVib2FyZChw
YXN0ZWJvYXJkTmFtZSk7CisKKyAgICBpZiAoIW1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9u
KCkuaXNDb250ZW50UmljaGx5RWRpdGFibGUoKSkgeworICAgICAgICBwYXN0ZUFzUGxhaW5UZXh0
V2l0aFBhc3RlYm9hcmQocGFzdGVib2FyZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICAvLyBGSVhNRTogSG93IGNhbiB0aGlzIGhhcmQtY29kZWQgcGFzdGVib2FyZCBuYW1lIGJlIHJp
Z2h0LCBnaXZlbiB0aGF0IHRoZSBwYXNzZWQtaW4gcGFzdGVib2FyZCBoYXMgYSBuYW1lPworICAg
IGNsaWVudCgpLT5zZXRJbnNlcnRpb25QYXN0ZWJvYXJkKE5TR2VuZXJhbFBib2FyZCk7CisKKyAg
ICBib29sIGNob3NlUGxhaW5UZXh0OworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFn
bWVudCA9IHdlYkNvbnRlbnRGcm9tUGFzdGVib2FyZChwYXN0ZWJvYXJkLCAqcmFuZ2UsIHRydWUs
IGNob3NlUGxhaW5UZXh0KTsKKworICAgIG1heWJlQ29weU5vZGVBdHRyaWJ1dGVzVG9GcmFnbWVu
dChub2RlLCBmcmFnbWVudC5nZXQoKSk7CisKKyAgICBpZiAoZnJhZ21lbnQgJiYgc2hvdWxkSW5z
ZXJ0RnJhZ21lbnQoZnJhZ21lbnQsIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0ZWQpKQor
ICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJhZ21lbnQsIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0
ZWJvYXJkKHBhc3RlYm9hcmQpLCBmYWxzZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6SWdub3Jl
QmxvY2txdW90ZSk7CisKKyAgICBjbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVib2FyZChTdHJp
bmcoKSk7CiB9CiAKIC8vIEZJWE1FOiBNYWtlcyBubyBzZW5zZSB0aGF0IHNlbGVjdGVkVGV4dEZv
ckRhdGFUcmFuc2ZlciBhbHdheXMgaW5jbHVkZXMgYWx0IHRleHQsIGJ1dCBzdHJpbmdTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkIGRvZXMgbm90Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231325</attachid>
            <date>2014-05-12 14:24:40 -0700</date>
            <delta_ts>2014-05-12 14:57:50 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>30378</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2YTFmNDNlLi5mODVkNGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUg
QEAKKzIwMTQtMDUtMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFRlYWNoIEVkaXRvciB0byBzdXBwb3J0IG1vcmUgZGlyZWN0IHJlcGxhY2VtZW50IG9mIGEg
Tm9kZQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTY4MTc5NTI+IGFuZCBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIG5ldyBtZXRob2QgIkVkaXRvcjo6cmVwbGFj
ZU5vZGVGcm9tUGFzdGVib2FyZCIgaGFzIHRoZSBpbnRlbnQgdGhhdCB0aGUgbmV3IERvY3VtZW50
RnJhZ21lbnQKKyAgICAgICAgZnJvbSB0aGUgcGFzdGVib2FyZCBpcyBhcyBzaW1pbGFyIHRvIHRo
ZSBvbGQgTm9kZSBhcyBwb3NzaWJsZS4KKworICAgICAgICBJbiBwcmFjdGljZSwgdGhlIG5ldyBE
b2N1bWVudEZyYWdtZW50OgorICAgICAgICAxIC0gQ2FuIHJlcHJlc2VudCBhIHNpbmdsZSBub2Rl
IHRoYXQncyBtaXNzaW5nIHZhcmlvdXMgYXR0cmlidXRlcyB0aGUgb3JpZ2luYWwgTm9kZSBoYWQu
CisgICAgICAgIDIgLSBDYW4gYmUgYW4gdW53YW50ZWQgZnJhZ21lbnQgb2YgYXJiaXRyYXJ5IGRl
cHRoIHdoZW4gdGhlIHJlcGxhY2VtZW50IGhhcHBlbnMgaW5zaWRlIE1haWwuYXBwCisKKyAgICAg
ICAgVGhpcyBmaXhlcyBib3RoIG9mIHRoZXNlIGlzc3Vlcy4KKworICAgICAgICBBZGQgYSBNYWls
QmxvY2txdW90ZUhhbmRsaW5nIGVudW0gY2xhc3MgZm9yIHZhcmlvdXMgRWRpdG9yIG9wZXJhdGlv
bnMgdG8gcGFzcyB0aHJvdWdoIHRvIHRoZQorICAgICAgICBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmhhbmRsZVRleHRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3RlQXNG
cmFnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3RlV2l0aFBhc3RlYm9hcmQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50
KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorCisgICAgICAgICogZG9tL1RleHRFdmVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OmNyZWF0ZUZvclBsYWluVGV4dFBh
c3RlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRFdmVudDo6Y3JlYXRlRm9yRnJhZ21lbnRQYXN0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RXZlbnQ6OlRleHRFdmVudCk6CisgICAgICAgICog
ZG9tL1RleHRFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEV2ZW50OjptYWlsQmxvY2tx
dW90ZUhhbmRsaW5nKToKKworICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kOjpkb0FwcGx5KTogQ29uc2lkZXIgd2hldGhlciBvciBub3QgdGhpcyBwYXJ0aWN1bGFy
IEVkaXRvcgorICAgICAgICAgIG9wZXJhdGlvbiB3YXMgbWVhbnQgdG8gZ2l2ZSBzcGVjaWFsIGNv
bnNpZGVyYXRpb24gdG8gTWFpbCdzIEJsb2NrcXVvdGVzLgorICAgICAgICAqIGVkaXRpbmcvUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQuaDoKKworICAgICAgICAqIGVkaXRpbmcvZWZsL0VkaXRvckVm
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3RlV2l0aFBhc3RlYm9hcmQpOgor
ICAgICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZCk6CisKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0
b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnBhc3RlV2l0aFBhc3RlYm9hcmQp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQp
OgorICAgICAgICAoV2ViQ29yZTo6bWF5YmVDb3B5Tm9kZUF0dHJpYnV0ZXNUb0ZyYWdtZW50KTog
SWYgdGhlIG5ldyBEb2N1bWVudEZyYWdtZW50IHJlcHJlc2VudHMgYSBzaW5nbGUgSFRNTCBub2Rl
CisgICAgICAgICAgd2l0aCB0aGUgc2FtZSB0YWcgbmFtZSBpcyB0aGUgb3JpZ2luYWwgSFRNTCBu
b2RlLCBjb3B5IG92ZXIgbW9zdCBhdHRyaWJ1dGVzIGZyb20gdGhlIG9yaWdpbmFsIG5vZGUuCisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQpOiBDcmVh
dGUgdGhlIGZyYWdtZW50LCBydW4gaXQgdGhyb3VnaCBtYXliZUNvcHlOb2RlQXR0cmlidXRlc1Rv
RnJhZ21lbnQuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKwogMjAxNC0wNS0wOSAgSm9u
IEhvbmV5Y3V0dCAgPGpob25leWN1dHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04g
KHIxNjc4MTgpOiBlZGl0aW5nL2luc2VydGluZy90eXBpbmctc3BhY2UtdG8tdHJpZ2dlci1zbWFy
dC1saW5rLmh0bWwgZmFpbHMgb24gV2ViS2l0MSBib3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4
IDhkM2RlN2UuLmVhODJjOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xMTUwLDcgKzExNTAs
NyBAQCBfX1pON1dlYkNvcmU2RWRpdG9yMTNwZXJmb3JtRGVsZXRlRXYKIF9fWk43V2ViQ29yZTZF
ZGl0b3IxM3JhbmdlRm9yUG9pbnRFUktOU184SW50UG9pbnRFCiBfX1pON1dlYkNvcmU2RWRpdG9y
MTRzZXRDb21wb3NpdGlvbkVSS04zV1RGNlN0cmluZ0VSS05TMV82VmVjdG9ySU5TXzIwQ29tcG9z
aXRpb25VbmRlcmxpbmVFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRWpqCiBfX1pON1dlYkNv
cmU2RWRpdG9yMTRzaW1wbGlmeU1hcmt1cEVQTlNfNE5vZGVFUzJfCi1fX1pON1dlYkNvcmU2RWRp
dG9yMTVwYXN0ZUFzRnJhZ21lbnRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTZEb2N1bWVudEZyYWdt
ZW50RUVFYmIKK19fWk43V2ViQ29yZTZFZGl0b3IxNXBhc3RlQXNGcmFnbWVudEVOM1dURjEwUGFz
c1JlZlB0cklOU18xNkRvY3VtZW50RnJhZ21lbnRFRUViYk5TXzIyTWFpbEJsb2NrcXVvdGVIYW5k
bGluZ0UKIF9fWk43V2ViQ29yZTZFZGl0b3IxNnBhc3RlQXNQbGFpblRleHRFdgogX19aTjdXZWJD
b3JlNkVkaXRvcjE3Y2FuY2VsQ29tcG9zaXRpb25FdgogX19aTjdXZWJDb3JlNkVkaXRvcjE3aW5z
ZXJ0T3JkZXJlZExpc3RFdgpAQCAtMTE3MCw3ICsxMTcwLDcgQEAgX19aTjdXZWJDb3JlNkVkaXRv
cjI2ZGVjcmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxFdgogX19aTjdXZWJDb3JlNkVkaXRvcjI2aW5j
cmVhc2VTZWxlY3Rpb25MaXN0TGV2ZWxFdgogX19aTjdXZWJDb3JlNkVkaXRvcjI2dG9nZ2xlT3Zl
cndyaXRlTW9kZUVuYWJsZWRFdgogX19aTjdXZWJDb3JlNkVkaXRvcjI2d3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmRFUk5TXzEwUGFzdGVib2FyZEUKLV9fWk43V2ViQ29yZTZFZGl0b3IyOHJlcGxh
Y2VTZWxlY3Rpb25XaXRoRnJhZ21lbnRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTZEb2N1bWVudEZy
YWdtZW50RUVFYmJiCitfX1pON1dlYkNvcmU2RWRpdG9yMjhyZXBsYWNlU2VsZWN0aW9uV2l0aEZy
YWdtZW50RU4zV1RGMTBQYXNzUmVmUHRySU5TXzE2RG9jdW1lbnRGcmFnbWVudEVFRWJiYk5TXzIy
TWFpbEJsb2NrcXVvdGVIYW5kbGluZ0UKIF9fWk43V2ViQ29yZTZFZGl0b3IyOHVwZGF0ZUVkaXRv
clVJTm93SWZTY2hlZHVsZWRFdgogX19aTjdXZWJDb3JlNkVkaXRvcjI5Y2FuRGVjcmVhc2VTZWxl
Y3Rpb25MaXN0TGV2ZWxFdgogX19aTjdXZWJDb3JlNkVkaXRvcjI5Y2FuSW5jcmVhc2VTZWxlY3Rp
b25MaXN0TGV2ZWxFdgpAQCAtMjI1Nyw3ICsyMjU3LDcgQEAgX19aTjdXZWJDb3JlNkVkaXRvcjEz
dHJ5REhUTUxQYXN0ZUV2CiBfX1pON1dlYkNvcmU2RWRpdG9yMjRhZHZhbmNlVG9OZXh0TWlzc3Bl
bGxpbmdFYgogX19aTjdXZWJDb3JlNkVkaXRvcjI1cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZEVQ
TlNfNE5vZGVFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmU2RWRpdG9yMjZkYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZEVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTZFZGl0b3IyN3Jl
YWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZEVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTZF
ZGl0b3IyN3JlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZEVSS04zV1RGNlN0cmluZ0VOU18yMk1h
aWxCbG9ja3F1b3RlSGFuZGxpbmdFCiBfX1pON1dlYkNvcmU2RWRpdG9yMjhzdHJpbmdTZWxlY3Rp
b25Gb3JQYXN0ZWJvYXJkRXYKIF9fWk43V2ViQ29yZTZFZGl0b3IyOHRvZ2dsZUF1dG9tYXRpY0xp
bmtEZXRlY3Rpb25FdgogX19aTjdXZWJDb3JlNkVkaXRvcjMwdG9nZ2xlQXV0b21hdGljVGV4dFJl
cGxhY2VtZW50RXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5jcHAKaW5kZXggMWYzOWNiMy4uNGEzMTQx
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRl
ICJUZXh0RXZlbnQuaCIKIAogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKKyNpbmNsdWRl
ICJFZGl0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MywxMiArNDQsMTIgQEAg
UGFzc1JlZlB0cjxUZXh0RXZlbnQ+IFRleHRFdmVudDo6Y3JlYXRlKFBhc3NSZWZQdHI8QWJzdHJh
Y3RWaWV3PiB2aWV3LCBjb25zdCBTdHIKIAogUGFzc1JlZlB0cjxUZXh0RXZlbnQ+IFRleHRFdmVu
dDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcs
IGNvbnN0IFN0cmluZyYgZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxhY2UpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBUZXh0RXZlbnQodmlldywgZGF0YSwgMCwgc2hvdWxkU21hcnRSZXBs
YWNlLCBmYWxzZSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dEV2ZW50KHZpZXcsIGRh
dGEsIDAsIHNob3VsZFNtYXJ0UmVwbGFjZSwgZmFsc2UsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6
OlJlc3BlY3RCbG9ja3F1b3RlKSk7CiB9CiAKLVBhc3NSZWZQdHI8VGV4dEV2ZW50PiBUZXh0RXZl
bnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUoUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcs
IFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxh
Y2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSkKK1Bhc3NSZWZQdHI8VGV4dEV2ZW50PiBUZXh0RXZl
bnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUoUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcs
IFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZGF0YSwgYm9vbCBzaG91bGRTbWFydFJlcGxh
Y2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtYWlsQmxv
Y2txdW90ZUhhbmRsaW5nKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dEV2ZW50KHZp
ZXcsICIiLCBkYXRhLCBzaG91bGRTbWFydFJlcGxhY2UsIHNob3VsZE1hdGNoU3R5bGUpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRFdmVudCh2aWV3LCAiIiwgZGF0YSwgc2hvdWxkU21h
cnRSZXBsYWNlLCBzaG91bGRNYXRjaFN0eWxlLCBtYWlsQmxvY2txdW90ZUhhbmRsaW5nKSk7CiB9
CiAKIFBhc3NSZWZQdHI8VGV4dEV2ZW50PiBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3AoUGFzc1Jl
ZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSkKQEAgLTY1LDYgKzY2
LDcgQEAgVGV4dEV2ZW50OjpUZXh0RXZlbnQoKQogICAgIDogbV9pbnB1dFR5cGUoVGV4dEV2ZW50
SW5wdXRLZXlib2FyZCkKICAgICAsIG1fc2hvdWxkU21hcnRSZXBsYWNlKGZhbHNlKQogICAgICwg
bV9zaG91bGRNYXRjaFN0eWxlKGZhbHNlKQorICAgICwgbV9tYWlsQmxvY2txdW90ZUhhbmRsaW5n
KE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RCbG9ja3F1b3RlKQogewogfQogCkBAIC03
NSwxNyArNzcsMTggQEAgVGV4dEV2ZW50OjpUZXh0RXZlbnQoUGFzc1JlZlB0cjxBYnN0cmFjdFZp
ZXc+IHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW4KICAgICAsIG1fcGFzdGluZ0Zy
YWdtZW50KDApCiAgICAgLCBtX3Nob3VsZFNtYXJ0UmVwbGFjZShmYWxzZSkKICAgICAsIG1fc2hv
dWxkTWF0Y2hTdHlsZShmYWxzZSkKKyAgICAsIG1fbWFpbEJsb2NrcXVvdGVIYW5kbGluZyhNYWls
QmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0QmxvY2txdW90ZSkKIHsKIH0KIAotVGV4dEV2ZW50
OjpUZXh0RXZlbnQoUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcsIGNvbnN0IFN0cmluZyYg
ZGF0YSwgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBwYXN0aW5nRnJhZ21lbnQsCi0gICAg
ICAgICAgICAgICAgICAgICBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBzaG91bGRNYXRj
aFN0eWxlKQorVGV4dEV2ZW50OjpUZXh0RXZlbnQoUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZp
ZXcsIGNvbnN0IFN0cmluZyYgZGF0YSwgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBwYXN0
aW5nRnJhZ21lbnQsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5
bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykKICAgICA6
IFVJRXZlbnQoZXZlbnROYW1lcygpLnRleHRJbnB1dEV2ZW50LCB0cnVlLCB0cnVlLCB2aWV3LCAw
KQogICAgICwgbV9pbnB1dFR5cGUoVGV4dEV2ZW50SW5wdXRQYXN0ZSkKICAgICAsIG1fZGF0YShk
YXRhKQogICAgICwgbV9wYXN0aW5nRnJhZ21lbnQocGFzdGluZ0ZyYWdtZW50KQogICAgICwgbV9z
aG91bGRTbWFydFJlcGxhY2Uoc2hvdWxkU21hcnRSZXBsYWNlKQogICAgICwgbV9zaG91bGRNYXRj
aFN0eWxlKHNob3VsZE1hdGNoU3R5bGUpCisgICAgLCBtX21haWxCbG9ja3F1b3RlSGFuZGxpbmco
bWFpbEJsb2NrcXVvdGVIYW5kbGluZykKIHsKIH0KIApAQCAtOTUsNiArOTgsNyBAQCBUZXh0RXZl
bnQ6OlRleHRFdmVudChQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywgY29uc3QgU3RyaW5n
JiBkYXRhLCBjb25zdCBWZQogICAgICwgbV9kYXRhKGRhdGEpCiAgICAgLCBtX3Nob3VsZFNtYXJ0
UmVwbGFjZShmYWxzZSkKICAgICAsIG1fc2hvdWxkTWF0Y2hTdHlsZShmYWxzZSkKKyAgICAsIG1f
bWFpbEJsb2NrcXVvdGVIYW5kbGluZyhNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0Qmxv
Y2txdW90ZSkKICAgICAsIG1fZGljdGF0aW9uQWx0ZXJuYXRpdmVzKGRpY3RhdGlvbkFsdGVybmF0
aXZlcykKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaAppbmRleCA3MDBkNGU2Li5jNTU2ZTE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEV2ZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1RleHRFdmVudC5oCkBAIC0zNSwxNCArMzUsMTYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgY2xhc3MgRG9jdW1lbnRGcmFnbWVudDsKIAorICAgIGVudW0gY2xhc3MgTWFp
bEJsb2NrcXVvdGVIYW5kbGluZzsKKwogICAgIGNsYXNzIFRleHRFdmVudCA6IHB1YmxpYyBVSUV2
ZW50IHsKICAgICBwdWJsaWM6CiAKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dEV2ZW50
PiBjcmVhdGUoKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dEV2ZW50PiBjcmVhdGUo
UGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+LCBjb25zdCBTdHJpbmcmIGRhdGEsIFRleHRFdmVudElu
cHV0VHlwZSA9IFRleHRFdmVudElucHV0S2V5Ym9hcmQpOwotICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxUZXh0RXZlbnQ+IGNyZWF0ZUZvclBsYWluVGV4dFBhc3RlKFBhc3NSZWZQdHI8QWJzdHJh
Y3RWaWV3PiB2aWV3LCBjb25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNl
KTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dEV2ZW50PiBjcmVhdGVGb3JGcmFnbWVu
dFBhc3RlKFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3LCBQYXNzUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGRhdGEsIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNo
U3R5bGUpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0RXZlbnQ+IGNyZWF0ZUZvckRy
b3AoUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcsIGNvbnN0IFN0cmluZyYgZGF0YSk7Cisg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRFdmVudD4gY3JlYXRlRm9yUGxhaW5UZXh0UGFz
dGUoUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+LCBjb25zdCBTdHJpbmcmIGRhdGEsIGJvb2wgc2hv
dWxkU21hcnRSZXBsYWNlKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dEV2ZW50PiBj
cmVhdGVGb3JGcmFnbWVudFBhc3RlKFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiwgUGFzc1JlZlB0
cjxEb2N1bWVudEZyYWdtZW50PiBkYXRhLCBib29sIHNob3VsZFNtYXJ0UmVwbGFjZSwgYm9vbCBz
aG91bGRNYXRjaFN0eWxlLCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nKTsKKyAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8VGV4dEV2ZW50PiBjcmVhdGVGb3JEcm9wKFBhc3NSZWZQdHI8QWJzdHJhY3RW
aWV3PiwgY29uc3QgU3RyaW5nJiBkYXRhKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4
dEV2ZW50PiBjcmVhdGVGb3JEaWN0YXRpb24oUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+LCBjb25z
dCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3Rh
dGlvbkFsdGVybmF0aXZlcyk7CiAKICAgICAgICAgdmlydHVhbCB+VGV4dEV2ZW50KCk7CkBAIC02
Miw2ICs2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIHNob3VsZFNt
YXJ0UmVwbGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkU21hcnRSZXBsYWNlOyB9CiAgICAg
ICAgIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkTWF0Y2hT
dHlsZTsgfQorICAgICAgICBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1b3RlSGFu
ZGxpbmcoKSBjb25zdCB7IHJldHVybiBtX21haWxCbG9ja3F1b3RlSGFuZGxpbmc7IH0KICAgICAg
ICAgRG9jdW1lbnRGcmFnbWVudCogcGFzdGluZ0ZyYWdtZW50KCkgY29uc3QgeyByZXR1cm4gbV9w
YXN0aW5nRnJhZ21lbnQuZ2V0KCk7IH0KICAgICAgICAgY29uc3QgVmVjdG9yPERpY3RhdGlvbkFs
dGVybmF0aXZlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKCkgY29uc3QgeyByZXR1cm4gbV9kaWN0
YXRpb25BbHRlcm5hdGl2ZXM7IH0KIApAQCAtNjksOCArNzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIFRleHRFdmVudCgpOwogCiAgICAgICAgIFRleHRFdmVudChQYXNzUmVmUHRy
PEFic3RyYWN0Vmlldz4sIGNvbnN0IFN0cmluZyYgZGF0YSwgVGV4dEV2ZW50SW5wdXRUeXBlID0g
VGV4dEV2ZW50SW5wdXRLZXlib2FyZCk7Ci0gICAgICAgIFRleHRFdmVudChQYXNzUmVmUHRyPEFi
c3RyYWN0Vmlldz4sIGNvbnN0IFN0cmluZyYgZGF0YSwgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiwKLSAgICAgICAgICAgICAgICAgIGJvb2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNo
b3VsZE1hdGNoU3R5bGUpOworICAgICAgICBUZXh0RXZlbnQoUGFzc1JlZlB0cjxBYnN0cmFjdFZp
ZXc+LCBjb25zdCBTdHJpbmcmIGRhdGEsIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4sIGJv
b2wgc2hvdWxkU21hcnRSZXBsYWNlLCBib29sIHNob3VsZE1hdGNoU3R5bGUsIE1haWxCbG9ja3F1
b3RlSGFuZGxpbmcpOwogICAgICAgICBUZXh0RXZlbnQoUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+
LCBjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4m
IGRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzVGV4dEV2
ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC04MSw2ICs4Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IG1fcGFzdGluZ0ZyYWdtZW50Owog
ICAgICAgICBib29sIG1fc2hvdWxkU21hcnRSZXBsYWNlOwogICAgICAgICBib29sIG1fc2hvdWxk
TWF0Y2hTdHlsZTsKKyAgICAgICAgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyBtX21haWxCbG9ja3F1
b3RlSGFuZGxpbmc7CiAgICAgICAgIFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4gbV9kaWN0
YXRpb25BbHRlcm5hdGl2ZXM7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmlu
ZGV4IDFmM2YwZWMuLjVlZWIzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTI2
Niw3ICsyNjYsNyBAQCBib29sIEVkaXRvcjo6aGFuZGxlVGV4dEV2ZW50KFRleHRFdmVudCogZXZl
bnQpCiAgICAgICAgICAgICBpZiAoY2xpZW50KCktPnBlcmZvcm1zVHdvU3RlcFBhc3RlKGV2ZW50
LT5wYXN0aW5nRnJhZ21lbnQoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5k
aWYKLSAgICAgICAgICAgIHJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoZXZlbnQtPnBhc3Rp
bmdGcmFnbWVudCgpLCBmYWxzZSwgZXZlbnQtPnNob3VsZFNtYXJ0UmVwbGFjZSgpLCBldmVudC0+
c2hvdWxkTWF0Y2hTdHlsZSgpKTsKKyAgICAgICAgICAgIHJlcGxhY2VTZWxlY3Rpb25XaXRoRnJh
Z21lbnQoZXZlbnQtPnBhc3RpbmdGcmFnbWVudCgpLCBmYWxzZSwgZXZlbnQtPnNob3VsZFNtYXJ0
UmVwbGFjZSgpLCBldmVudC0+c2hvdWxkTWF0Y2hTdHlsZSgpLCBldmVudC0+bWFpbEJsb2NrcXVv
dGVIYW5kbGluZygpKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgIH0KICNlbmRpZgpAQCAt
NTI4LDEyICs1MjgsMTIgQEAgdm9pZCBFZGl0b3I6OnBhc3RlQXNQbGFpblRleHQoY29uc3QgU3Ry
aW5nJiBwYXN0aW5nVGV4dCwgYm9vbCBzbWFydFJlcGxhY2UpCiAgICAgdGFyZ2V0LT5kaXNwYXRj
aEV2ZW50KFRleHRFdmVudDo6Y3JlYXRlRm9yUGxhaW5UZXh0UGFzdGUoZG9jdW1lbnQoKS5kb21X
aW5kb3coKSwgcGFzdGluZ1RleHQsIHNtYXJ0UmVwbGFjZSksIElHTk9SRV9FWENFUFRJT04pOwog
fQogCi12b2lkIEVkaXRvcjo6cGFzdGVBc0ZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gcGFzdGluZ0ZyYWdtZW50LCBib29sIHNtYXJ0UmVwbGFjZSwgYm9vbCBtYXRjaFN0eWxl
KQordm9pZCBFZGl0b3I6OnBhc3RlQXNGcmFnbWVudChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IHBhc3RpbmdGcmFnbWVudCwgYm9vbCBzbWFydFJlcGxhY2UsIGJvb2wgbWF0Y2hTdHlsZSwg
TWFpbEJsb2NrcXVvdGVIYW5kbGluZyByZXNwZWN0c01haWxCbG9ja3F1b3RlKQogewogICAgIE5v
ZGUqIHRhcmdldCA9IGZpbmRFdmVudFRhcmdldEZyb21TZWxlY3Rpb24oKTsKICAgICBpZiAoIXRh
cmdldCkKICAgICAgICAgcmV0dXJuOwotICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZl
bnQ6OmNyZWF0ZUZvckZyYWdtZW50UGFzdGUoZG9jdW1lbnQoKS5kb21XaW5kb3coKSwgcGFzdGlu
Z0ZyYWdtZW50LCBzbWFydFJlcGxhY2UsIG1hdGNoU3R5bGUpLCBJR05PUkVfRVhDRVBUSU9OKTsK
KyAgICB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JGcmFnbWVudFBh
c3RlKGRvY3VtZW50KCkuZG9tV2luZG93KCksIHBhc3RpbmdGcmFnbWVudCwgc21hcnRSZXBsYWNl
LCBtYXRjaFN0eWxlLCByZXNwZWN0c01haWxCbG9ja3F1b3RlKSwgSUdOT1JFX0VYQ0VQVElPTik7
CiB9CiAKIHZvaWQgRWRpdG9yOjpwYXN0ZUFzUGxhaW5UZXh0QnlwYXNzaW5nREhUTUwoKQpAQCAt
NTY1LDcgKzU2NSw3IEBAIFN0cmluZyBFZGl0b3I6OnBsYWluVGV4dEZyb21QYXN0ZWJvYXJkKGNv
bnN0IFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQpCiAjZW5kaWYKIAogI2lmICFQTEFURk9STShD
T0NPQSkgJiYgIVBMQVRGT1JNKEVGTCkKLXZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJk
KFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIGJvb2wgYWxsb3dQbGFpblRleHQpCit2b2lkIEVkaXRv
cjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBib29sIGFsbG93
UGxhaW5UZXh0LCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcp
CiB7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHNlbGVjdGVkUmFuZ2UoKTsKICAgICBpZiAo
IXJhbmdlKQpAQCAtNTc0LDcgKzU3NCw3IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJv
YXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIGJvb2wgYWxsb3dQbGFpblRleHQpCiAgICAgYm9v
bCBjaG9zZVBsYWluVGV4dDsKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQg
PSBwYXN0ZWJvYXJkLT5kb2N1bWVudEZyYWdtZW50KG1fZnJhbWUsICpyYW5nZSwgYWxsb3dQbGFp
blRleHQsIGNob3NlUGxhaW5UZXh0KTsKICAgICBpZiAoZnJhZ21lbnQgJiYgc2hvdWxkSW5zZXJ0
RnJhZ21lbnQoZnJhZ21lbnQsIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0ZWQpKQotICAg
ICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJhZ21lbnQsIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJv
YXJkKCpwYXN0ZWJvYXJkKSwgY2hvc2VQbGFpblRleHQpOworICAgICAgICBwYXN0ZUFzRnJhZ21l
bnQoZnJhZ21lbnQsIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKSwg
Y2hvc2VQbGFpblRleHQsIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpOwogfQogI2VuZGlmCiAKQEAg
LTU5Nyw3ICs1OTcsNyBAQCBib29sIEVkaXRvcjo6c2hvdWxkSW5zZXJ0RnJhZ21lbnQoUGFzc1Jl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCwgUGFzc1JlZgogICAgIHJldHVybiBjbGll
bnQoKS0+c2hvdWxkSW5zZXJ0Tm9kZShmcmFnbWVudC5nZXQoKSwgcmVwbGFjaW5nRE9NUmFuZ2Uu
Z2V0KCksIGdpdmVuQWN0aW9uKTsKIH0KIAotdm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25X
aXRoRnJhZ21lbnQoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCwgYm9vbCBz
ZWxlY3RSZXBsYWNlbWVudCwgYm9vbCBzbWFydFJlcGxhY2UsIGJvb2wgbWF0Y2hTdHlsZSkKK3Zv
aWQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gZnJhZ21lbnQsIGJvb2wgc2VsZWN0UmVwbGFjZW1lbnQsIGJvb2wgc21hcnRS
ZXBsYWNlLCBib29sIG1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2Nr
cXVvdGVIYW5kbGluZykKIHsKICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IG1fZnJh
bWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgaWYgKHNlbGVjdGlvbi5pc05vbmUoKSB8
fCAhc2VsZWN0aW9uLmlzQ29udGVudEVkaXRhYmxlKCkgfHwgIWZyYWdtZW50KQpAQCAtNjEwLDYg
KzYxMCw5IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KFBhc3NS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQsCiAgICAgICAgIG9wdGlvbnMgfD0gUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNtYXJ0UmVwbGFjZTsKICAgICBpZiAobWF0Y2hTdHlsZSkK
ICAgICAgICAgb3B0aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6TWF0Y2hTdHlsZTsK
KyAgICBpZiAobWFpbEJsb2NrcXVvdGVIYW5kbGluZyA9PSBNYWlsQmxvY2txdW90ZUhhbmRsaW5n
OjpJZ25vcmVCbG9ja3F1b3RlKQorICAgICAgICBvcHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kOjpJZ25vcmVNYWlsQmxvY2txdW90ZTsKKwogICAgIGFwcGx5Q29tbWFuZChSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIGZyYWdtZW50LCBvcHRpb25zLCBF
ZGl0QWN0aW9uUGFzdGUpKTsKICAgICByZXZlYWxTZWxlY3Rpb25BZnRlckVkaXRpbmdPcGVyYXRp
b24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggYzY5MWMzYy4uYmM3YzQ4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC05MCw2ICs5MCwxMSBAQCBzdHJ1Y3QgQ29tcG9zaXRp
b25VbmRlcmxpbmUgewogZW51bSBFZGl0b3JDb21tYW5kU291cmNlIHsgQ29tbWFuZEZyb21NZW51
T3JLZXlCaW5kaW5nLCBDb21tYW5kRnJvbURPTSwgQ29tbWFuZEZyb21ET01XaXRoVXNlckludGVy
ZmFjZSB9OwogZW51bSBFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3IgeyBFZGl0b3JQYXJhZ3JhcGhT
ZXBhcmF0b3JJc0RpdiwgRWRpdG9yUGFyYWdyYXBoU2VwYXJhdG9ySXNQIH07CiAKK2VudW0gY2xh
c3MgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyB7CisgICAgUmVzcGVjdEJsb2NrcXVvdGUsCisgICAg
SWdub3JlQmxvY2txdW90ZSwKK307CisKIGNsYXNzIEVkaXRvciB7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgRWRpdG9yKEZyYW1lJik7CkBAIC0zMzUsNyArMzQwLDcgQEAgcHVibGljOgogICAgIHZv
aWQgaGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQoY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9u
KTsKICAgICB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWxBc0lnbm9yZWQoKTsKIAotICAgIHZv
aWQgcGFzdGVBc0ZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4sIGJvb2wgc21h
cnRSZXBsYWNlLCBib29sIG1hdGNoU3R5bGUpOworICAgIHZvaWQgcGFzdGVBc0ZyYWdtZW50KFBh
c3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4sIGJvb2wgc21hcnRSZXBsYWNlLCBib29sIG1hdGNo
U3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgPSBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpS
ZXNwZWN0QmxvY2txdW90ZSk7CiAgICAgdm9pZCBwYXN0ZUFzUGxhaW5UZXh0KGNvbnN0IFN0cmlu
ZyYsIGJvb2wgc21hcnRSZXBsYWNlKTsKIAogICAgIC8vIFRoaXMgaXMgb25seSBjYWxsZWQgb24g
dGhlIG1hYyB3aGVyZSBwYXN0ZSBpcyBpbXBsZW1lbnRlZCBwcmltYXJpbHkgYXQgdGhlIFdlYktp
dCBsZXZlbC4KQEAgLTM3Nyw3ICszODIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXh0RGlkQ2hh
bmdlSW5UZXh0QXJlYShFbGVtZW50Kik7CiAgICAgV3JpdGluZ0RpcmVjdGlvbiBiYXNlV3JpdGlu
Z0RpcmVjdGlvbkZvclNlbGVjdGlvblN0YXJ0KCkgY29uc3Q7CiAKLSAgICB2b2lkIHJlcGxhY2VT
ZWxlY3Rpb25XaXRoRnJhZ21lbnQoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiwgYm9vbCBz
ZWxlY3RSZXBsYWNlbWVudCwgYm9vbCBzbWFydFJlcGxhY2UsIGJvb2wgbWF0Y2hTdHlsZSk7Cisg
ICAgdm9pZCByZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4sIGJvb2wgc2VsZWN0UmVwbGFjZW1lbnQsIGJvb2wgc21hcnRSZXBsYWNlLCBib29s
IG1hdGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgPSBNYWlsQmxvY2txdW90ZUhhbmRs
aW5nOjpSZXNwZWN0QmxvY2txdW90ZSk7CiAgICAgdm9pZCByZXBsYWNlU2VsZWN0aW9uV2l0aFRl
eHQoY29uc3QgU3RyaW5nJiwgYm9vbCBzZWxlY3RSZXBsYWNlbWVudCwgYm9vbCBzbWFydFJlcGxh
Y2UpOwogICAgIGJvb2wgc2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3IoRG9jdW1lbnRNYXJrZXI6
Ok1hcmtlclR5cGUsIGludCBmcm9tLCBpbnQgbGVuZ3RoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0
ZU1hcmtlcnNGb3JXb3Jkc0FmZmVjdGVkQnlFZGl0aW5nKGJvb2wgb25seUhhbmRsZVdvcmRzQ29u
dGFpbmluZ1NlbGVjdGlvbik7CkBAIC00MzEsNyArNDM2LDcgQEAgcHVibGljOgogI2lmICFQTEFU
Rk9STShJT1MpCiAgICAgYm9vbCBjYW5Db3B5RXhjbHVkaW5nU3RhbmRhbG9uZUltYWdlcygpOwog
ICAgIHZvaWQgdGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uKCk7Ci0gICAgdm9pZCByZWFkU2Vs
ZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSk7CisgICAg
dm9pZCByZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyA9IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJl
c3BlY3RCbG9ja3F1b3RlKTsKICAgICB2b2lkIHJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9k
ZSosIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpOwogICAgIFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKTsKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQpAQCAtNDUwLDcgKzQ1NSw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBjYW5EZWxldGVSYW5nZShSYW5nZSopIGNvbnN0OwogICAgIGJvb2wg
Y2FuU21hcnRSZXBsYWNlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCYpOwogICAgIHZvaWQgcGFz
dGVBc1BsYWluVGV4dFdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQmKTsKLSAgICB2b2lkIHBhc3Rl
V2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCosIGJvb2wgYWxsb3dQbGFpblRleHQpOworICAgIHZv
aWQgcGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiwgYm9vbCBhbGxvd1BsYWluVGV4dCwg
TWFpbEJsb2NrcXVvdGVIYW5kbGluZyA9IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJlc3BlY3RC
bG9ja3F1b3RlKTsKICAgICBTdHJpbmcgcGxhaW5UZXh0RnJvbVBhc3RlYm9hcmQoY29uc3QgUGFz
dGVib2FyZFBsYWluVGV4dCYpOwogCiAgICAgdm9pZCByZXZlYWxTZWxlY3Rpb25BZnRlckVkaXRp
bmdPcGVyYXRpb24oY29uc3QgU2Nyb2xsQWxpZ25tZW50JiA9IFNjcm9sbEFsaWdubWVudDo6YWxp
Z25DZW50ZXJJZk5lZWRlZCwgUmV2ZWFsRXh0ZW50T3B0aW9uID0gRG9Ob3RSZXZlYWxFeHRlbnQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcAppbmRleCA1OTRjZWIwLi42YzA2MmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtMzc4LDYgKzM3OCw3IEBAIFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZChEb2N1bWVudCYg
ZG9jdW1lbnQsIFBhc3NSZWZQdHI8CiAgICAgLCBtX2VkaXRBY3Rpb24oZWRpdEFjdGlvbikKICAg
ICAsIG1fc2FuaXRpemVGcmFnbWVudChvcHRpb25zICYgU2FuaXRpemVGcmFnbWVudCkKICAgICAs
IG1fc2hvdWxkTWVyZ2VFbmQoZmFsc2UpCisgICAgLCBtX2lnbm9yZU1haWxCbG9ja3F1b3RlKG9w
dGlvbnMgJiBJZ25vcmVNYWlsQmxvY2txdW90ZSkKIHsKIH0KIApAQCAtOTMzLDEyICs5MzQsMTIg
QEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgTm9kZSogc3Rh
cnRCbG9jayA9IGVuY2xvc2luZ0Jsb2NrKHZpc2libGVTdGFydC5kZWVwRXF1aXZhbGVudCgpLmRl
cHJlY2F0ZWROb2RlKCkpOwogICAgIAogICAgIFBvc2l0aW9uIGluc2VydGlvblBvcyA9IHNlbGVj
dGlvbi5zdGFydCgpOwotICAgIGJvb2wgc3RhcnRJc0luc2lkZU1haWxCbG9ja3F1b3RlID0gZW5j
bG9zaW5nTm9kZU9mVHlwZShpbnNlcnRpb25Qb3MsIGlzTWFpbEJsb2NrcXVvdGUsIENhbkNyb3Nz
RWRpdGluZ0JvdW5kYXJ5KTsKKyAgICBib29sIHNob3VsZEhhbmRsZU1haWxCbG9ja3F1b3RlID0g
ZW5jbG9zaW5nTm9kZU9mVHlwZShpbnNlcnRpb25Qb3MsIGlzTWFpbEJsb2NrcXVvdGUsIENhbkNy
b3NzRWRpdGluZ0JvdW5kYXJ5KSAmJiAhbV9pZ25vcmVNYWlsQmxvY2txdW90ZTsKICAgICBib29s
IHNlbGVjdGlvbklzUGxhaW5UZXh0ID0gIXNlbGVjdGlvbi5pc0NvbnRlbnRSaWNobHlFZGl0YWJs
ZSgpOwogICAgIEVsZW1lbnQqIGN1cnJlbnRSb290ID0gc2VsZWN0aW9uLnJvb3RFZGl0YWJsZUVs
ZW1lbnQoKTsKIAotICAgIGlmICgoc2VsZWN0aW9uU3RhcnRXYXNTdGFydE9mUGFyYWdyYXBoICYm
IHNlbGVjdGlvbkVuZFdhc0VuZE9mUGFyYWdyYXBoICYmICFzdGFydElzSW5zaWRlTWFpbEJsb2Nr
cXVvdGUpIHx8Ci0gICAgICAgIHN0YXJ0QmxvY2sgPT0gY3VycmVudFJvb3QgfHwgaXNMaXN0SXRl
bShzdGFydEJsb2NrKSB8fCBzZWxlY3Rpb25Jc1BsYWluVGV4dCkKKyAgICBpZiAoKHNlbGVjdGlv
blN0YXJ0V2FzU3RhcnRPZlBhcmFncmFwaCAmJiBzZWxlY3Rpb25FbmRXYXNFbmRPZlBhcmFncmFw
aCAmJiAhc2hvdWxkSGFuZGxlTWFpbEJsb2NrcXVvdGUpCisgICAgICAgIHx8IHN0YXJ0QmxvY2sg
PT0gY3VycmVudFJvb3QgfHwgaXNMaXN0SXRlbShzdGFydEJsb2NrKSB8fCBzZWxlY3Rpb25Jc1Bs
YWluVGV4dCkKICAgICAgICAgbV9wcmV2ZW50TmVzdGluZyA9IGZhbHNlOwogICAgIAogICAgIGlm
IChzZWxlY3Rpb24uaXNSYW5nZSgpKSB7CkBAIC05NDgsNyArOTQ5LDcgQEAgdm9pZCBSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgIC8vIHdpbGwgbGVhdmUgaGFuZ2lu
ZyBibG9jayhzKS4KICAgICAgICAgLy8gTWVyZ2UgYmxvY2tzIGlmIHRoZSBzdGFydCBvZiB0aGUg
c2VsZWN0aW9uIHdhcyBpbiBhIE1haWwgYmxvY2txdW90ZSwgc2luY2Ugd2UgaGFuZGxlICAKICAg
ICAgICAgLy8gdGhhdCBjYXNlIHNwZWNpYWxseSB0byBwcmV2ZW50IG5lc3RpbmcuIAotICAgICAg
ICBib29sIG1lcmdlQmxvY2tzQWZ0ZXJEZWxldGUgPSBzdGFydElzSW5zaWRlTWFpbEJsb2NrcXVv
dGUgfHwgaXNFbmRPZlBhcmFncmFwaCh2aXNpYmxlRW5kKSB8fCBpc1N0YXJ0T2ZCbG9jayh2aXNp
YmxlU3RhcnQpOworICAgICAgICBib29sIG1lcmdlQmxvY2tzQWZ0ZXJEZWxldGUgPSBzaG91bGRI
YW5kbGVNYWlsQmxvY2txdW90ZSB8fCBpc0VuZE9mUGFyYWdyYXBoKHZpc2libGVFbmQpIHx8IGlz
U3RhcnRPZkJsb2NrKHZpc2libGVTdGFydCk7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
b25seSBleHBhbmQgdG8gaW5jbHVkZSBmdWxseSBzZWxlY3RlZCBzcGVjaWFsIGVsZW1lbnRzIGlm
IHdlIGFyZSBjb3B5aW5nIGEgCiAgICAgICAgIC8vIHNlbGVjdGlvbiBhbmQgcGFzdGluZyBpdCBv
biB0b3Agb2YgaXRzZWxmLgogICAgICAgICBkZWxldGVTZWxlY3Rpb24oZmFsc2UsIG1lcmdlQmxv
Y2tzQWZ0ZXJEZWxldGUsIHRydWUsIGZhbHNlKTsKQEAgLTk3Nyw3ICs5NzgsNyBAQCB2b2lkIFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgLy8gQXMgbG9uZyBhcyB0
aGUgIGRpdiBzdHlsZXMgYXJlIHRoZSBzYW1lLCB2aXN1YWxseSB5b3UnZCBleHBlY3Q6IDxkaXY+
eGJhcjwvZGl2PjxkaXY+YmFyPC9kaXY+PGRpdj5iYXp4PC9kaXY+LCAKICAgICAgICAgLy8gbm90
IDxkaXY+eGJhcjxkaXY+YmFyPC9kaXY+PGRpdj5iYXp4PC9kaXY+PC9kaXY+LgogICAgICAgICAv
LyBEb24ndCBkbyB0aGlzIGlmIHRoZSBzZWxlY3Rpb24gc3RhcnRlZCBpbiBhIE1haWwgYmxvY2tx
dW90ZS4KLSAgICAgICAgaWYgKG1fcHJldmVudE5lc3RpbmcgJiYgIXN0YXJ0SXNJbnNpZGVNYWls
QmxvY2txdW90ZSAmJiAhaXNFbmRPZlBhcmFncmFwaCh2aXNpYmxlU3RhcnQpICYmICFpc1N0YXJ0
T2ZQYXJhZ3JhcGgodmlzaWJsZVN0YXJ0KSkgeworICAgICAgICBpZiAobV9wcmV2ZW50TmVzdGlu
ZyAmJiAhc2hvdWxkSGFuZGxlTWFpbEJsb2NrcXVvdGUgJiYgIWlzRW5kT2ZQYXJhZ3JhcGgodmlz
aWJsZVN0YXJ0KSAmJiAhaXNTdGFydE9mUGFyYWdyYXBoKHZpc2libGVTdGFydCkpIHsKICAgICAg
ICAgICAgIGluc2VydFBhcmFncmFwaFNlcGFyYXRvcigpOwogICAgICAgICAgICAgc2V0RW5kaW5n
U2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVTdGFydCgpLnByZXZpb3VzKCkpOwog
ICAgICAgICB9CkBAIC05ODcsNyArOTg4LDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6ZG9BcHBseSgpCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCBhbnkgb2YgdGhlIHBhc3RlZCBjb250
ZW50IHRvIGVuZCB1cCBuZXN0ZWQgaW4gYSBNYWlsIGJsb2NrcXVvdGUsIHNvIGZpcnN0IGJyZWFr
IAogICAgIC8vIG91dCBvZiBhbnkgc3Vycm91bmRpbmcgTWFpbCBibG9ja3F1b3Rlcy4gVW5sZXNz
IHdlJ3JlIGluc2VydGluZyBpbiBhIHRhYmxlLCBpbiB3aGljaCBjYXNlCiAgICAgLy8gYnJlYWtp
bmcgdGhlIGJsb2NrcXVvdGUgd2lsbCBwcmV2ZW50IHRoZSBjb250ZW50IGZyb20gYWN0dWFsbHkg
YmVpbmcgaW5zZXJ0ZWQgaW4gdGhlIHRhYmxlLgotICAgIGlmIChzdGFydElzSW5zaWRlTWFpbEJs
b2NrcXVvdGUgJiYgbV9wcmV2ZW50TmVzdGluZyAmJiAhKGVuY2xvc2luZ05vZGVPZlR5cGUoaW5z
ZXJ0aW9uUG9zLCAmaXNUYWJsZVN0cnVjdHVyZU5vZGUpKSkgeyAKKyAgICBpZiAoc2hvdWxkSGFu
ZGxlTWFpbEJsb2NrcXVvdGUgJiYgbV9wcmV2ZW50TmVzdGluZyAmJiAhKGVuY2xvc2luZ05vZGVP
ZlR5cGUoaW5zZXJ0aW9uUG9zLCAmaXNUYWJsZVN0cnVjdHVyZU5vZGUpKSkgewogICAgICAgICBh
cHBseUNvbW1hbmRUb0NvbXBvc2l0ZShCcmVha0Jsb2NrcXVvdGVDb21tYW5kOjpjcmVhdGUoZG9j
dW1lbnQoKSkpOyAKICAgICAgICAgLy8gVGhpcyB3aWxsIGxlYXZlIGEgYnIgYmV0d2VlbiB0aGUg
c3BsaXQuIAogICAgICAgICBOb2RlKiBiciA9IGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCkuZGVw
cmVjYXRlZE5vZGUoKTsgCkBAIC0xMDE2LDcgKzEwMTcsNyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rp
b25Db21tYW5kOjpkb0FwcGx5KCkKICAgICAKICAgICAvLyBBZGp1c3QgaW5zZXJ0aW9uUG9zIHRv
IHByZXZlbnQgbmVzdGluZy4KICAgICAvLyBJZiB0aGUgc3RhcnQgd2FzIGluIGEgTWFpbCBibG9j
a3F1b3RlLCB3ZSB3aWxsIGhhdmUgYWxyZWFkeSBoYW5kbGVkIGFkanVzdGluZyBpbnNlcnRpb25Q
b3MgYWJvdmUuCi0gICAgaWYgKG1fcHJldmVudE5lc3RpbmcgJiYgaW5zZXJ0aW9uQmxvY2sgJiYg
IWlzVGFibGVDZWxsKGluc2VydGlvbkJsb2NrLmdldCgpKSAmJiAhc3RhcnRJc0luc2lkZU1haWxC
bG9ja3F1b3RlKSB7CisgICAgaWYgKG1fcHJldmVudE5lc3RpbmcgJiYgaW5zZXJ0aW9uQmxvY2sg
JiYgIWlzVGFibGVDZWxsKGluc2VydGlvbkJsb2NrLmdldCgpKSAmJiAhc2hvdWxkSGFuZGxlTWFp
bEJsb2NrcXVvdGUpIHsKICAgICAgICAgQVNTRVJUKGluc2VydGlvbkJsb2NrICE9IGN1cnJlbnRS
b290KTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVJbnNlcnRpb25Qb3MoaW5zZXJ0
aW9uUG9zKTsKICAgICAgICAgaWYgKGlzRW5kT2ZCbG9jayh2aXNpYmxlSW5zZXJ0aW9uUG9zKSAm
JiAhKGlzU3RhcnRPZkJsb2NrKHZpc2libGVJbnNlcnRpb25Qb3MpICYmIGZyYWdtZW50Lmhhc0lu
dGVyY2hhbmdlTmV3bGluZUF0RW5kKCkpKQpAQCAtMTE2Miw3ICsxMTYzLDcgQEAgdm9pZCBSZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgLy8gdGhlIHN0YXJ0IG1lcmdlIHNv
IHRoYXQgdGhlIHN0YXJ0IG1lcmdlIGRvZXNuJ3QgZWZmZWN0IG91ciBkZWNpc2lvbi4KICAgICBt
X3Nob3VsZE1lcmdlRW5kID0gc2hvdWxkTWVyZ2VFbmQoc2VsZWN0aW9uRW5kV2FzRW5kT2ZQYXJh
Z3JhcGgpOwogICAgIAotICAgIGlmIChzaG91bGRNZXJnZVN0YXJ0KHNlbGVjdGlvblN0YXJ0V2Fz
U3RhcnRPZlBhcmFncmFwaCwgZnJhZ21lbnQuaGFzSW50ZXJjaGFuZ2VOZXdsaW5lQXRTdGFydCgp
LCBzdGFydElzSW5zaWRlTWFpbEJsb2NrcXVvdGUpKSB7CisgICAgaWYgKHNob3VsZE1lcmdlU3Rh
cnQoc2VsZWN0aW9uU3RhcnRXYXNTdGFydE9mUGFyYWdyYXBoLCBmcmFnbWVudC5oYXNJbnRlcmNo
YW5nZU5ld2xpbmVBdFN0YXJ0KCksIHNob3VsZEhhbmRsZU1haWxCbG9ja3F1b3RlKSkgewogICAg
ICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRPZlBhcmFncmFwaFRvTW92ZSA9IHBvc2l0aW9uQXRT
dGFydE9mSW5zZXJ0ZWRDb250ZW50KCk7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBkZXN0aW5h
dGlvbiA9IHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUucHJldmlvdXMoKTsKICAgICAgICAgLy8gV2Ug
bmVlZCB0byBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgd2UgbmVlZCB0byBtZXJnZSB0aGUgZW5kCkBA
IC0xMjExLDcgKzEyMTIsNyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5
KCkKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAvLyBVc2Ug
YSBkZWZhdWx0IHBhcmFncmFwaCBlbGVtZW50IChhIHBsYWluIGRpdikgZm9yIHRoZSBlbXB0eSBw
YXJhZ3JhcGgsIHVzaW5nIHRoZSBsYXN0IHBhcmFncmFwaAogICAgICAgICAgICAgICAgICAgICAv
LyBibG9jaydzIHN0eWxlIHNlZW1zIHRvIGFubm95IHVzZXJzLgotICAgICAgICAgICAgICAgICAg
ICBpbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3IodHJ1ZSwgIXN0YXJ0SXNJbnNpZGVNYWlsQmxvY2tx
dW90ZSAmJiBoaWdoZXN0RW5jbG9zaW5nTm9kZU9mVHlwZShlbmRPZkluc2VydGVkQ29udGVudC5k
ZWVwRXF1aXZhbGVudCgpLAorICAgICAgICAgICAgICAgICAgICBpbnNlcnRQYXJhZ3JhcGhTZXBh
cmF0b3IodHJ1ZSwgIXNob3VsZEhhbmRsZU1haWxCbG9ja3F1b3RlICYmIGhpZ2hlc3RFbmNsb3Np
bmdOb2RlT2ZUeXBlKGVuZE9mSW5zZXJ0ZWRDb250ZW50LmRlZXBFcXVpdmFsZW50KCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICBpc01haWxCbG9ja3F1b3RlLCBDYW5ub3RDcm9zc0VkaXRpbmdC
b3VuZGFyeSwgaW5zZXJ0ZWROb2Rlcy5maXJzdE5vZGVJbnNlcnRlZCgpLT5wYXJlbnROb2RlKCkp
KTsKICAgICAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQuaAppbmRleCBkZjRhOTI2Li43NTU5OTFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oCkBAIC00Miw3
ICs0Miw4IEBAIHB1YmxpYzoKICAgICAgICAgTWF0Y2hTdHlsZSA9IDEgPDwgMiwKICAgICAgICAg
UHJldmVudE5lc3RpbmcgPSAxIDw8IDMsCiAgICAgICAgIE1vdmluZ1BhcmFncmFwaCA9IDEgPDwg
NCwKLSAgICAgICAgU2FuaXRpemVGcmFnbWVudCA9IDEgPDwgNQorICAgICAgICBTYW5pdGl6ZUZy
YWdtZW50ID0gMSA8PCA1LAorICAgICAgICBJZ25vcmVNYWlsQmxvY2txdW90ZSA9IDEgPDwgNiwK
ICAgICB9OwogCiAgICAgdHlwZWRlZiB1bnNpZ25lZCBDb21tYW5kT3B0aW9uczsKQEAgLTExNSw2
ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIEVkaXRBY3Rpb24gbV9lZGl0QWN0aW9uOwogICAgIGJv
b2wgbV9zYW5pdGl6ZUZyYWdtZW50OwogICAgIGJvb2wgbV9zaG91bGRNZXJnZUVuZDsKKyAgICBi
b29sIG1faWdub3JlTWFpbEJsb2NrcXVvdGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2VmbC9FZGl0b3JFZmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9lZmwvRWRpdG9yRWZsLmNwcAppbmRleCAyYzFjMmU1Li5h
MDQxNjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2VmbC9FZGl0b3JFZmwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZWZsL0VkaXRvckVmbC5jcHAKQEAgLTQy
LDcgKzQyLDcgQEAgdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdGVib2Fy
ZCYsIEVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHIKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQogCi12b2lkIEVkaXRvcjo6cGFzdGVXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiwgYm9v
bCkKK3ZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqLCBib29sLCBN
YWlsQmxvY2txdW90ZUhhbmRsaW5nKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KaW5kZXggMzFlYjA4OC4uZDljNzBmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQpAQCAtNTUxLDcgKzU1MSw3
IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRWRpdG9yOjp3ZWJDb250ZW50RnJvbVBh
c3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGViCiAgICAgcmV0dXJuIHJlYWRlci5mcmFnbWVudC5y
ZWxlYXNlKCk7CiB9CiAKLXZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9h
cmQqIHBhc3RlYm9hcmQsIGJvb2wgYWxsb3dQbGFpblRleHQpCit2b2lkIEVkaXRvcjo6cGFzdGVX
aXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkKiBwYXN0ZWJvYXJkLCBib29sIGFsbG93UGxhaW5UZXh0
LCBNYWlsQmxvY2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpCiB7CiAgICAg
UmVmUHRyPFJhbmdlPiByYW5nZSA9IHNlbGVjdGVkUmFuZ2UoKTsKIApAQCAtNTYxLDcgKzU2MSw3
IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9h
cmQsIGJvb2wgYWxsb3dQbGFpblRleHQpCiAgICAgICAgIGZyYWdtZW50ID0gd2ViQ29udGVudEZy
b21QYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkLCAqcmFuZ2UsIGFsbG93UGxhaW5UZXh0LCBjaG9zZVBs
YWluVGV4dCk7CiAKICAgICBpZiAoZnJhZ21lbnQgJiYgc2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJh
Z21lbnQsIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0ZWQpKQotICAgICAgICBwYXN0ZUFz
RnJhZ21lbnQoZnJhZ21lbnQsIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJv
YXJkKSwgZmFsc2UpOworICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJhZ21lbnQsIGNhblNtYXJ0
UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKSwgZmFsc2UsIG1haWxCbG9ja3F1b3Rl
SGFuZGxpbmcpOwogfQogCiBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IEVkaXRvcjo6Y3Jl
YXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggMWM1YzMzMS4uZDI1NzBm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtODIsNyArODIs
NyBAQCB2b2lkIEVkaXRvcjo6c2hvd0NvbG9yUGFuZWwoKQogICAgIFtbTlNBcHBsaWNhdGlvbiBz
aGFyZWRBcHBsaWNhdGlvbl0gb3JkZXJGcm9udENvbG9yUGFuZWw6bmlsXTsKIH0KIAotdm9pZCBF
ZGl0b3I6OnBhc3RlV2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCogcGFzdGVib2FyZCwgYm9vbCBh
bGxvd1BsYWluVGV4dCkKK3ZvaWQgRWRpdG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9h
cmQqIHBhc3RlYm9hcmQsIGJvb2wgYWxsb3dQbGFpblRleHQsIE1haWxCbG9ja3F1b3RlSGFuZGxp
bmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykKIHsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0g
c2VsZWN0ZWRSYW5nZSgpOwogCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgRWRpdG9yOjpwYXN0ZVdp
dGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIGJvb2wgYWxsb3dQbGFpblRleHQp
CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gd2ViQ29udGVudEZyb21Q
YXN0ZWJvYXJkKCpwYXN0ZWJvYXJkLCAqcmFuZ2UsIGFsbG93UGxhaW5UZXh0LCBjaG9zZVBsYWlu
VGV4dCk7CiAKICAgICBpZiAoZnJhZ21lbnQgJiYgc2hvdWxkSW5zZXJ0RnJhZ21lbnQoZnJhZ21l
bnQsIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb25QYXN0ZWQpKQotICAgICAgICBwYXN0ZUFzRnJh
Z21lbnQoZnJhZ21lbnQsIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJk
KSwgZmFsc2UpOworICAgICAgICBwYXN0ZUFzRnJhZ21lbnQoZnJhZ21lbnQsIGNhblNtYXJ0UmVw
bGFjZVdpdGhQYXN0ZWJvYXJkKCpwYXN0ZWJvYXJkKSwgZmFsc2UsIG1haWxCbG9ja3F1b3RlSGFu
ZGxpbmcpOwogCiAgICAgY2xpZW50KCktPnNldEluc2VydGlvblBhc3RlYm9hcmQoU3RyaW5nKCkp
OwogfQpAQCAtMjU3LDE1ICsyNTcsMzkgQEAgdm9pZCBFZGl0b3I6OnRha2VGaW5kU3RyaW5nRnJv
bVNlbGVjdGlvbigpCiAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVn
eSgpLT5zZXRTdHJpbmdGb3JUeXBlKG1fZnJhbWUuZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNv
ZGluZyhzZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIoKSksIE5TU3RyaW5nUGJvYXJkVHlwZSwg
TlNGaW5kUGJvYXJkKTsKIH0KIAotdm9pZCBFZGl0b3I6OnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBFZGl0b3I6OnJlYWRTZWxl
Y3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBNYWlsQmxv
Y2txdW90ZUhhbmRsaW5nIG1haWxCbG9ja3F1b3RlSGFuZGxpbmcpCiB7CiAgICAgUGFzdGVib2Fy
ZCBwYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKTsKICAgICBpZiAobV9mcmFtZS5zZWxlY3Rpb24o
KS5zZWxlY3Rpb24oKS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpKQotICAgICAgICBwYXN0ZVdp
dGhQYXN0ZWJvYXJkKCZwYXN0ZWJvYXJkLCB0cnVlKTsKKyAgICAgICAgcGFzdGVXaXRoUGFzdGVi
b2FyZCgmcGFzdGVib2FyZCwgdHJ1ZSwgbWFpbEJsb2NrcXVvdGVIYW5kbGluZyk7CiAgICAgZWxz
ZQogICAgICAgICBwYXN0ZUFzUGxhaW5UZXh0V2l0aFBhc3RlYm9hcmQocGFzdGVib2FyZCk7CiB9
CiAKK3N0YXRpYyB2b2lkIG1heWJlQ29weU5vZGVBdHRyaWJ1dGVzVG9GcmFnbWVudChOb2RlKiBu
b2RlLCBEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCkKK3sKKyAgICAvLyBUaGlzIGlzIG9ubHkg
c3VwcG9ydGVkIGZvciBzaW5nbGUtTm9kZSBmcmFnbWVudHMuCisgICAgTm9kZSogZmlyc3RDaGls
ZCA9IGZyYWdtZW50LT5maXJzdENoaWxkKCk7CisgICAgaWYgKGZpcnN0Q2hpbGQgIT0gZnJhZ21l
bnQtPmxhc3RDaGlsZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBBbmQgb25seSBzdXBw
b3J0ZWQgZm9yIEhUTUwgZWxlbWVudHMuCisgICAgaWYgKCFub2RlLT5pc0hUTUxFbGVtZW50KCkg
fHwgIWZpcnN0Q2hpbGQtPmlzSFRNTEVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ly8gQW5kIG9ubHkgaWYgdGhlIHNvdXJjZSBFbGVtZW50IGFuZCBkZXN0aW5hdGlvbiBFbGVtZW50
IGhhdmUgdGhlIHNhbWUgSFRNTCB0YWcgbmFtZS4KKyAgICBjb25zdCBFbGVtZW50JiBvbGRFbGVt
ZW50ID0gdG9IVE1MRWxlbWVudCgqbm9kZSk7CisgICAgRWxlbWVudCYgbmV3RWxlbWVudCA9IHRv
SFRNTEVsZW1lbnQoKmZpcnN0Q2hpbGQpOworICAgIGlmICghb2xkRWxlbWVudC5oYXNUYWdOYW1l
KG5ld0VsZW1lbnQudGFnUU5hbWUoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoY29u
c3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUgOiBvbGRFbGVtZW50LmF0dHJpYnV0ZXNJdGVyYXRvcigp
KSB7CisgICAgICAgIGlmIChuZXdFbGVtZW50Lmhhc0F0dHJpYnV0ZShhdHRyaWJ1dGUubmFtZSgp
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBuZXdFbGVtZW50LnNldEF0dHJpYnV0
ZShhdHRyaWJ1dGUubmFtZSgpLCBhdHRyaWJ1dGUudmFsdWUoKSk7CisgICAgfQorfQorCiB2b2lk
IEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lKQogewogICAgIEFTU0VSVChub2RlKTsKQEAgLTI3Niw3ICszMDAs
MjUgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTm9kZSogbm9kZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0g
UmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBQb3NpdGlvbihub2RlLCBQb3NpdGlvbjo6
UG9zaXRpb25Jc0JlZm9yZUFuY2hvciksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlv
bklzQWZ0ZXJBbmNob3IpKTsKICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihW
aXNpYmxlU2VsZWN0aW9uKHJhbmdlLmdldCgpKSwgRnJhbWVTZWxlY3Rpb246OkRvTm90U2V0Rm9j
dXMpOwogCi0gICAgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKTsK
KyAgICBQYXN0ZWJvYXJkIHBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpOworCisgICAgaWYgKCFt
X2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkp
IHsKKyAgICAgICAgcGFzdGVBc1BsYWluVGV4dFdpdGhQYXN0ZWJvYXJkKHBhc3RlYm9hcmQpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IEhvdyBjYW4gdGhpcyBoYXJk
LWNvZGVkIHBhc3RlYm9hcmQgbmFtZSBiZSByaWdodCwgZ2l2ZW4gdGhhdCB0aGUgcGFzc2VkLWlu
IHBhc3RlYm9hcmQgaGFzIGEgbmFtZT8KKyAgICBjbGllbnQoKS0+c2V0SW5zZXJ0aW9uUGFzdGVi
b2FyZChOU0dlbmVyYWxQYm9hcmQpOworCisgICAgYm9vbCBjaG9zZVBsYWluVGV4dDsKKyAgICBS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSB3ZWJDb250ZW50RnJvbVBhc3RlYm9h
cmQocGFzdGVib2FyZCwgKnJhbmdlLCB0cnVlLCBjaG9zZVBsYWluVGV4dCk7CisKKyAgICBtYXli
ZUNvcHlOb2RlQXR0cmlidXRlc1RvRnJhZ21lbnQobm9kZSwgZnJhZ21lbnQuZ2V0KCkpOworCisg
ICAgaWYgKGZyYWdtZW50ICYmIHNob3VsZEluc2VydEZyYWdtZW50KGZyYWdtZW50LCByYW5nZSwg
RWRpdG9ySW5zZXJ0QWN0aW9uUGFzdGVkKSkKKyAgICAgICAgcGFzdGVBc0ZyYWdtZW50KGZyYWdt
ZW50LCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZChwYXN0ZWJvYXJkKSwgZmFsc2UsIE1h
aWxCbG9ja3F1b3RlSGFuZGxpbmc6Oklnbm9yZUJsb2NrcXVvdGUpOworCisgICAgY2xpZW50KCkt
PnNldEluc2VydGlvblBhc3RlYm9hcmQoU3RyaW5nKCkpOwogfQogCiAvLyBGSVhNRTogTWFrZXMg
bm8gc2Vuc2UgdGhhdCBzZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIgYWx3YXlzIGluY2x1ZGVz
IGFsdCB0ZXh0LCBidXQgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCBkb2VzIG5vdC4K
</data>
<flag name="review"
          id="255769"
          type_id="1"
          status="+"
          setter="enrica"
    />
          </attachment>
      

    </bug>

</bugzilla>