<?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>134506</bug_id>
          
          <creation_ts>2014-07-01 12:33:33 -0700</creation_ts>
          <short_desc>[iOS][WK2] Sometimes the swipe snapshot stays up too long</short_desc>
          <delta_ts>2014-07-03 12:31:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1019725</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-07-01 12:33:33 -0700</bug_when>
    <thetext>The approach in r170035 is still not quite correct; there is a window where endSwipeGesture will grab the wrong ID, and I&apos;m not sure it&apos;s trivially reconcilable.

Instead, let&apos;s implement transaction callbacks (one of my alternate solutions to that problem); the UI process will register a callback in endSwipeGesture, just after goToBackForwardItem; it will send the callback ID to the Web process, which will stuff it in the next transaction (and schedule one if needed). Then, upon receipt of the transaction, the UI process will perform the callbacks included in that transaction.

This ensures that a) we always get a commit some time soon after endSwipeGesture that contains our callback b) it&apos;s always in-order with the goToBackForwardItem: message.

This seems to work great for swiping between very stable pages (which don&apos;t commit often), very unstable pages (which commit very frequently), and a mixture of the two, and should be generally extendable to solve other similar synchronization problems as they come up.

&lt;rdar://problem/17496803&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019736</commentid>
    <comment_count>1</comment_count>
      <attachid>234192</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-07-01 13:01:57 -0700</bug_when>
    <thetext>Created attachment 234192
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019765</commentid>
    <comment_count>2</comment_count>
      <attachid>234192</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-07-01 14:31:35 -0700</bug_when>
    <thetext>Comment on attachment 234192
patch

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

&gt; Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h:62
&gt; +    virtual void installTransactionCallback(PassRefPtr&lt;VoidCallback&gt;) override;

This should take a std::function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019771</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-07-01 14:46:50 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 234192 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=234192&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h:62
&gt; &gt; +    virtual void installTransactionCallback(PassRefPtr&lt;VoidCallback&gt;) override;
&gt; 
&gt; This should take a std::function.

And construct a VoidCallback? Or not use that mechanism at all?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019777</commentid>
    <comment_count>4</comment_count>
      <attachid>234201</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-07-01 15:00:28 -0700</bug_when>
    <thetext>Created attachment 234201
weinig&apos;s change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019778</commentid>
    <comment_count>5</comment_count>
      <attachid>234202</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-07-01 15:01:08 -0700</bug_when>
    <thetext>Created attachment 234202
actually different patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019780</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-01 15:03:41 -0700</bug_when>
    <thetext>Attachment 234202 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:343:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:343:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h:62:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/DrawingAreaProxy.h:91:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 4 in 12 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>1019999</commentid>
    <comment_count>7</comment_count>
      <attachid>234202</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-07-02 11:33:59 -0700</bug_when>
    <thetext>Comment on attachment 234202
actually different patch

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

Too many confusing uint64_ts.

&gt; Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.h:226
&gt; +    Vector&lt;uint64_t&gt; m_callbackIDs;

Typedef for the uint64_t? Is this a pageID or a transactionID or something else? If a pageID, this member should say m_pageCallbacks or something.

&gt; Source/WebKit2/UIProcess/ios/ViewGestureControllerIOS.mm:70
&gt; +    static NeverDestroyed&lt;HashMap&lt;uint64_t, WebKit::ViewGestureController*&gt;&gt; viewGestureControllers;

Would be nice if we had a pageID typedef.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020099</commentid>
    <comment_count>8</comment_count>
      <attachid>234293</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-07-02 16:39:07 -0700</bug_when>
    <thetext>Created attachment 234293
patch

I&apos;m not going to typedef PageID in this patch!

I did add TransactionCallbackID typedef, and renamed some things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020102</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-02 16:41:43 -0700</bug_when>
    <thetext>Attachment 234293 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:343:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h:62:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/DrawingAreaProxy.h:91:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 3 in 12 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>1020329</commentid>
    <comment_count>10</comment_count>
      <attachid>234293</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-07-03 12:08:10 -0700</bug_when>
    <thetext>Comment on attachment 234293
patch

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

&gt; Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.h:213
&gt; +    typedef uint64_t TransactionCallbackID;

Very nice.

&gt; Source/WebKit2/UIProcess/ios/ViewGestureControllerIOS.mm:68
&gt; +static HashMap&lt;uint64_t, WebKit::ViewGestureController*&gt;&amp; allViewGestureControllers()

Please add a comment saying that the uint64_t is a pageID or rename this to viewGestureControllersForAllPages()

&gt; Source/WebKit2/UIProcess/ios/ViewGestureControllerIOS.mm:263
&gt; +        if (gestureControllerIter == allViewGestureControllers().end())
&gt; +            return;
&gt; +        gestureControllerIter-&gt;value-&gt;willCommitPostSwipeTransitionLayerTree(error == CallbackBase::Error::None);

Would slightly prefer this as 
if (gestureControllerIter != allViewGestureControllers().end())
  gestureControllerIter-&gt;value-&gt;willCommitPostSwipeTransitionLayerTree(error == CallbackBase::Error::None);

&gt; Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:137
&gt; +        if (callback)

if (auto callback = m_callbacks.take&lt;VoidCallback&gt;(callbackID)) ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020340</commentid>
    <comment_count>11</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-07-03 12:31:04 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/170761</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234192</attachid>
            <date>2014-07-01 13:01:57 -0700</date>
            <delta_ts>2014-07-01 15:00:28 -0700</delta_ts>
            <desc>patch</desc>
            <filename>swipe-callback.diff</filename>
            <type>text/plain</type>
            <size>20434</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlNGMyNWZlLi44NmExZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAg
QEAKKzIwMTQtMDctMDEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW2lPU11bV0syXSBTb21ldGltZXMgdGhlIHN3aXBlIHNuYXBzaG90IHN0YXlzIHVw
IHRvbyBsb25nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzQ1MDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE3NDk2ODAzPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIHRyYW5zYWN0
aW9uIGNhbGxiYWNrIG1lY2hhbmlzbS4KKyAgICAgICAgVGhlIFVJIHByb2Nlc3MgY2FuIHJlZ2lz
dGVyIGEgY2FsbGJhY2sgYXQgYW55IHBvaW50LCBnZW5lcmFsbHkgaW1tZWRpYXRlbHkgYWZ0ZXIg
c2VuZGluZyBhIG1lc3NhZ2UgdG8gdGhlIFdlYiBwcm9jZXNzLgorICAgICAgICBJdCB3aWxsIHRo
ZW4gc2VuZCBhbm90aGVyIG1lc3NhZ2UgKGluLW9yZGVyKSB3aXRoIHRoZSBjYWxsYmFjayBJRCB0
byB0aGUgV2ViIHByb2Nlc3MsIHdoaWNoIHdpbGwgcHV0IGl0IGludG8gdGhlIG5leHQgdHJhbnNh
Y3Rpb24KKyAgICAgICAgKHNjaGVkdWxpbmcgYSBuZXcgb25lIGlmIG5lZWRlZCkuIFdoZW4gdGhl
IHRyYW5zYWN0aW9uIGNvbWVzIGJhY2sgdG8gdGhlIFVJIHByb2Nlc3MsIHRoZSBjYWxsYmFja3Mg
YXJlIHBlcmZvcm1lZC4KKyAgICAgICAgVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGNhbGxiYWNrIGZp
cmVzIGFsb25nc2lkZSBhIGNvbW1pdCB0aGF0IGluY2x1ZGVzIHRoZSByZXN1bHRzIG9mIHdoYXRl
dmVyIG1lc3NhZ2VzIHdlcmUgc2VudCBiZWZvcmUgaXQgd2FzIHJlZ2lzdGVyZWQuCisgICAgICAg
IEZvciBub3csIGFsbCBjYWxsYmFja3MgYXJlIGZpcmVkIGp1c3QgYmVmb3JlIGNvbW1pdHRpbmcg
bGF5ZXIgY2hhbmdlcywgYnV0IGl0J3MgcG9zc2libGUgZnV0dXJlIHBhdGNoZXMgd2lsbCB3YW50
IHBvc3QtY29tbWl0IGNhbGxiYWNrcy4KKyAgICAgICAgCisgICAgICAgIE1ha2UgdXNlIG9mIHRo
aXMgdG8gcmVtb3ZlIHRoZSBWaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1Mgc25hcHNob3RzIGF0IHRo
ZSByaWdodCB0aW1lLgorCisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6
Y2FsbGJhY2tJRHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bjo6c2V0Q2FsbGJhY2tJRHMpOgorICAgICAgICAqIFNoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bjo6ZGVjb2RlKToKKyAgICAgICAgQWRkIGEgdmVjdG9yIG9mIGNhbGxiYWNrIElEcyB0byB0aGUg
dHJhbnNhY3Rpb247IGVuY29kZSBhbmQgZGVjb2RlIGFzIGFwcHJvcHJpYXRlLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2lu
Z0FyZWFQcm94eTo6aW5zdGFsbFRyYW5zYWN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpEcmF3aW5nQXJlYVByb3h5OjpsYXN0VmlzaWJsZVRyYW5zYWN0aW9uSUQpOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6
flJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojpjb21taXRMYXllclRyZWUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjppbnN0YWxsVHJhbnNhY3Rp
b25DYWxsYmFjayk6CisgICAgICAgIEFkZCBpbnN0YWxsVHJhbnNhY3Rpb25DYWxsYmFjaywgd2hp
Y2ggdGFrZXMgYSBWb2lkQ2FsbGJhY2suCisgICAgICAgIFdoZW4gYSBjYWxsYmFjayBpcyBpbnN0
YWxsZWQsIHdlIHNlbmQgdGhlIGNhbGxiYWNrIElEIHRvIHRoZSBXZWIgcHJvY2VzcyB2aWEgdGhl
IEluc3RhbGxUcmFuc2FjdGlvbkNhbGxiYWNrIG1lc3NhZ2UuCisgICAgICAgIFBlcmZvcm0gY2Fs
bGJhY2tzIGxpc3RlZCBpbiB0aGUgaW5jb21pbmcgdHJhbnNhY3Rpb24ncyB2ZWN0b3Igb2YgY2Fs
bGJhY2sgSURzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6
CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjppbnN0YWxsVHJhbnNhY3Rpb25DYWxsYmFj
ayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYTo6Zmx1c2hMYXllcnMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYTo6aW5zdGFsbFRyYW5zYWN0aW9uQ2FsbGJhY2spOgorICAgICAgICBLZWVwIHRyYWNr
IG9mIHRoZSBwZW5kaW5nIGNhbGxiYWNrIElEcyBvbiB0aGUgZHJhd2luZyBhcmVhLCBhbmQgbW92
ZSB0aGVtIGludG8gdGhlIHRyYW5zYWN0aW9uLgorICAgICAgICBXZSBzY2hlZHVsZSBhIGZsdXNo
IHdoZW4gaW5zdGFsbGluZyBhIHRyYW5zYWN0aW9uIGNhbGxiYWNrIG9uIHRoZSBwcmVtaXNlIHRo
YXQKKyAgICAgICAgc29tZXRpbWVzIHRoZSBhY3Rpb24gKGdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
IGluIHRoZSBzd2lwZSBjYXNlKSBtaWdodCBoYXZlIGFscmVhZHkgb2NjdXJyZWQKKyAgICAgICAg
YW5kIGJlZW4gY29tbWl0dGVkIGJ5IHRoZSB0aW1lIHRoZSBXZWIgcHJvY2VzcyByZWNlaXZlcyBp
bnN0YWxsVHJhbnNhY3Rpb25DYWxsYmFjaywgc28gd2UgbmVlZAorICAgICAgICB0byBjYXVzZSBh
bm90aGVyIGNvbW1pdCB0byBzZW5kIHRoZSBjYWxsYmFja3MgYWNyb3NzLiBJZiBzYWlkIGNvbW1p
dCBpcyBzdGlsbCBwZW5kaW5nLCB0aGlzIGlzIGEgbm8tb3AuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKGFsbFZpZXdHZXN0
dXJlQ29udHJvbGxlcnMpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OlZpZXdHZXN0dXJlQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6flZpZXdHZXN0dXJlQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6ZW5kU3dpcGVHZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6Vmll
d0dlc3R1cmVDb250cm9sbGVyOjp3aWxsQ29tbWl0UG9zdFN3aXBlVHJhbnNpdGlvbkxheWVyVHJl
ZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6c2V0UmVuZGVyVHJl
ZVNpemUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmg6
CisgICAgICAgIEtlZXAgYSBzaWRlLW1hcCBvZiBwYWdlIElEcyB0byBWaWV3R2VzdHVyZUNvbnRy
b2xsZXJzLCBzbyB0aGF0IHdlIGNhbiBzYWZlbHkgZ2V0IGJhY2sgdG8KKyAgICAgICAgb3VyIFZp
ZXdHZXN0dXJlQ29udHJvbGxlciBmcm9tIHRoZSBjYWxsYmFjay4KKworICAgICAgICBXaGVuIHRo
ZSBjYWxsYmFjayBmaXJlcywgaWYgaXQgc3VjY2VlZGVkLCBzZXQgbV9zaG91bGRSZW1vdmVTbmFw
c2hvdFdoZW5UYXJnZXRSZW5kZXJUcmVlU2l6ZUhpdCwKKyAgICAgICAgc28gdGhhdCB0aGUgY29t
bWl0ICh3aGljaCBpcyBhYm91dCB0byBvY2N1ciBpbW1lZGlhdGVseSBhZnRlciB0aGUgY2FsbGJh
Y2sgcmV0dXJucykgd2hpY2ggY2FsbHMKKyAgICAgICAgc2V0UmVuZGVyVHJlZVNpemUgd2lsbCAo
cGVyaGFwcykgcmVtb3ZlIHRoZSBzbmFwc2hvdC4KKworICAgICAgICBJZiBpdCBmYWlsZWQsIHdl
IHJlbW92ZSB0aGUgc25hcHNob3QgaW1tZWRpYXRlbHksIGFzIHRoaXMgdXN1YWxseSBoYXBwZW5z
IGlmIHRoZSBXZWIgcHJvY2VzcyBjcmFzaGVkLgorCiAyMDE0LTA3LTAxICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW2lPU10gVW5yZXZpZXdl
ZCBidWlsZCBmaXggYWZ0ZXIgcjE3MDY0MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAppbmRleCA0MzA3MTg4Li40MjQw
N2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbi5oCkBAIC0yMDksNiArMjA5LDkgQEAgcHVibGljOgogCiAgICAgdWlu
dDY0X3QgdHJhbnNhY3Rpb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb25JRDsgfQog
ICAgIHZvaWQgc2V0VHJhbnNhY3Rpb25JRCh1aW50NjRfdCB0cmFuc2FjdGlvbklEKSB7IG1fdHJh
bnNhY3Rpb25JRCA9IHRyYW5zYWN0aW9uSUQ7IH0KKworICAgIGNvbnN0IFZlY3Rvcjx1aW50NjRf
dD4mIGNhbGxiYWNrSURzKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja0lEczsgfQorICAgIHZv
aWQgc2V0Q2FsbGJhY2tJRHMoVmVjdG9yPHVpbnQ2NF90PiBjYWxsYmFja0lEcykgeyBtX2NhbGxi
YWNrSURzID0gc3RkOjptb3ZlKGNhbGxiYWNrSURzKTsgfQogICAgIAogcHJpdmF0ZToKICAgICBX
ZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbV9yb290TGF5ZXJJRDsKQEAg
LTIyMCw2ICsyMjMsOCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxXZWJDb3JlOjpHcmFwaGljc0xh
eWVyOjpQbGF0Zm9ybUxheWVySUQ+IG1fdmlkZW9MYXllcklEc1BlbmRpbmdGdWxsc2NyZWVuOwog
ICAgIFZlY3RvcjxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+IG1fbGF5
ZXJJRHNXaXRoTmV3bHlVbnJlYWNoYWJsZUJhY2tpbmdTdG9yZTsKIAorICAgIFZlY3Rvcjx1aW50
NjRfdD4gbV9jYWxsYmFja0lEczsKKwogICAgIFdlYkNvcmU6OkludFNpemUgbV9jb250ZW50c1Np
emU7CiAgICAgV2ViQ29yZTo6Q29sb3IgbV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7CiAg
ICAgZG91YmxlIG1fcGFnZVNjYWxlRmFjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KaW5kZXggZTk2ZWFmMC4u
OTExNTFjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQpAQCAtNDc1LDYgKzQ3NSw4IEBAIHZvaWQgUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKIAogICAgIGVuY29kZXIgPDwgbV9zY2FsZVdhc1NldEJ5VUlQcm9jZXNzOwogICAg
IGVuY29kZXIgPDwgbV9hbGxvd3NVc2VyU2NhbGluZzsKKworICAgIGVuY29kZXIgPDwgbV9jYWxs
YmFja0lEczsKIH0KIAogYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVjb2RlKElQ
Qzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYg
cmVzdWx0KQpAQCAtNTQ5LDYgKzU1MSw5IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b246OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVtb3RlTGF5CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9hbGxvd3NVc2VyU2NhbGluZykpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fY2FsbGJh
Y2tJRHMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKaW5kZXggODY4NWQ2
Ny4uYjkzMDhlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdB
cmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94
eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjZGVmaW5lIERyYXdpbmdBcmVhUHJveHlfaAogCiAjaW5j
bHVkZSAiRHJhd2luZ0FyZWFJbmZvLmgiCisjaW5jbHVkZSAiR2VuZXJpY0NhbGxiYWNrLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3Qu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KQEAgLTg1LDkgKzg2LDkgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzaG93RGVidWdJbmRpY2F0b3IoYm9vbCkgeyB9CiAgICAgdmly
dHVhbCBib29sIGlzU2hvd2luZ0RlYnVnSW5kaWNhdG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIAotICAgIHZpcnR1YWwgdWludDY0X3QgbGFzdFZpc2libGVUcmFuc2FjdGlvbklEKCkgY29u
c3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KLQogICAgIHZpcnR1YWwgdm9p
ZCB3YWl0Rm9yRGlkVXBkYXRlVmlld1N0YXRlKCkgeyB9CisgICAgCisgICAgdmlydHVhbCB2b2lk
IGluc3RhbGxUcmFuc2FjdGlvbkNhbGxiYWNrKFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxs
YmFjaykgeyBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrKCk7IH0KIAogcHJvdGVjdGVkOgogICAg
IGV4cGxpY2l0IERyYXdpbmdBcmVhUHJveHkoRHJhd2luZ0FyZWFUeXBlLCBXZWJQYWdlUHJveHkq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVD
b250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXJJT1MubW0KaW5kZXggMWZiNWVkYS4uMDNkM2I2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1Mu
bW0KQEAgLTI4LDIxICsyOCwyMiBAQAogCiAjaWYgUExBVEZPUk0oSU9TKQogCi0jaW1wb3J0ICJX
ZWJQYWdlR3JvdXAuaCIKICNpbXBvcnQgIlZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VzLmgi
CiAjaW1wb3J0ICJWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yTWVzc2FnZXMuaCIKICNpbXBv
cnQgIlZpZXdTbmFwc2hvdFN0b3JlLmgiCiAjaW1wb3J0ICJXZWJCYWNrRm9yd2FyZExpc3QuaCIK
KyNpbXBvcnQgIldlYlBhZ2VHcm91cC5oIgogI2ltcG9ydCAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAj
aW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgotI2lt
cG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29y
ZVByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJU2NyZWVuRWRnZVBhbkdlc3R1cmVSZWNvZ25p
emVyLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVZpZXdDb250cm9sbGVyVHJhbnNpdGlvbmluZ19Qcml2
YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJlY29nbml6ZXIu
aD4KICNpbXBvcnQgPFVJS2l0L19VSU5hdmlnYXRpb25JbnRlcmFjdGl2ZVRyYW5zaXRpb24uaD4K
ICNpbXBvcnQgPFVJS2l0L19VSU5hdmlnYXRpb25QYXJhbGxheFRyYW5zaXRpb24uaD4KKyNpbXBv
cnQgPFdlYkNvcmUvSU9TdXJmYWNlLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTY0LDYgKzY1LDEyIEBAIEBpbXBsZW1l
bnRhdGlvbiBXS1N3aXBlVHJhbnNpdGlvbkNvbnRyb2xsZXIKIHN0YXRpYyBjb25zdCBmbG9hdCBz
d2lwZVNuYXBzaG90UmVtb3ZhbFJlbmRlclRyZWVTaXplVGFyZ2V0RnJhY3Rpb24gPSAwLjU7CiBz
dGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86OnNlY29uZHMgc3dpcGVTbmFwc2hvdFJlbW92YWxXYXRj
aGRvZ0R1cmF0aW9uID0gM19zOwogCitzdGF0aWMgSGFzaE1hcDx1aW50NjRfdCwgV2ViS2l0OjpW
aWV3R2VzdHVyZUNvbnRyb2xsZXIqPiYgYWxsVmlld0dlc3R1cmVDb250cm9sbGVycygpCit7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8dWludDY0X3QsIFdlYktpdDo6Vmlld0dl
c3R1cmVDb250cm9sbGVyKj4+IHZpZXdHZXN0dXJlQ29udHJvbGxlcnM7CisgICAgcmV0dXJuIHZp
ZXdHZXN0dXJlQ29udHJvbGxlcnMuZ2V0KCk7Cit9CisKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0
aFZpZXdHZXN0dXJlQ29udHJvbGxlcjooV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXIqKWdl
c3R1cmVDb250cm9sbGVyIGdlc3R1cmVSZWNvZ25pemVyVmlldzooVUlWaWV3ICopZ2VzdHVyZVJl
Y29nbml6ZXJWaWV3CiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKQEAgLTEzMCwxMCArMTM3
LDEyIEBAIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Vmlld0dlc3R1cmVDb250cm9sbGVyKFdlYlBh
Z2VQcm94eSYgd2ViUGFnZVByb3h5KQogICAgICwgbV9zbmFwc2hvdFJlbW92YWxUYXJnZXRSZW5k
ZXJUcmVlU2l6ZSgwKQogICAgICwgbV9zaG91bGRSZW1vdmVTbmFwc2hvdFdoZW5UYXJnZXRSZW5k
ZXJUcmVlU2l6ZUhpdChmYWxzZSkKIHsKKyAgICBhbGxWaWV3R2VzdHVyZUNvbnRyb2xsZXJzKCku
YWRkKHdlYlBhZ2VQcm94eS5wYWdlSUQoKSwgdGhpcyk7CiB9CiAKIFZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6flZpZXdHZXN0dXJlQ29udHJvbGxlcigpCiB7CisgICAgYWxsVmlld0dlc3R1cmVDb250
cm9sbGVycygpLnJlbW92ZShtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgVmll
d0dlc3R1cmVDb250cm9sbGVyOjppbnN0YWxsU3dpcGVIYW5kbGVyKFVJVmlldyAqZ2VzdHVyZVJl
Y29nbml6ZXJWaWV3LCBVSVZpZXcgKnN3aXBpbmdWaWV3KQpAQCAtMjM4LDcgKzI0Nyw2IEBAIHZv
aWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRTd2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSogdGFyZ2V0SXRlbSwKICAgICBtX3NuYXBzaG90UmVtb3ZhbFRhcmdldFJlbmRlclRy
ZWVTaXplID0gMDsKICAgICBpZiAoVmlld1NuYXBzaG90U3RvcmU6OnNoYXJlZCgpLmdldFNuYXBz
aG90KHRhcmdldEl0ZW0sIHNuYXBzaG90KSkKICAgICAgICAgbV9zbmFwc2hvdFJlbW92YWxUYXJn
ZXRSZW5kZXJUcmVlU2l6ZSA9IHNuYXBzaG90LnJlbmRlclRyZWVTaXplICogc3dpcGVTbmFwc2hv
dFJlbW92YWxSZW5kZXJUcmVlU2l6ZVRhcmdldEZyYWN0aW9uOwotICAgIG1fc25hcHNob3RSZW1v
dmFsVGFyZ2V0VHJhbnNhY3Rpb25JRCA9IG1fd2ViUGFnZVByb3h5LmRyYXdpbmdBcmVhKCktPmxh
c3RWaXNpYmxlVHJhbnNhY3Rpb25JRCgpICsgMTsKIAogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8g
cmVwbGFjZSB0aGUgY3VycmVudCBiYWNrLWZvcndhcmQgaXRlbSdzIHNuYXBzaG90CiAgICAgLy8g
bGlrZSB3ZSBub3JtYWxseSB3b3VsZCB3aGVuIGdvaW5nIGJhY2sgb3IgZm9yd2FyZCwgYmVjYXVz
ZSB3ZSBhcmUKQEAgLTI0NywxMSArMjU1LDMwIEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVy
OjplbmRTd2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwKICAg
ICBtX3dlYlBhZ2VQcm94eS5nb1RvQmFja0ZvcndhcmRJdGVtKHRhcmdldEl0ZW0pOwogICAgIFZp
ZXdTbmFwc2hvdFN0b3JlOjpzaGFyZWQoKS5lbmFibGVTbmFwc2hvdHRpbmcoKTsKIAorICAgIHVp
bnQ2NF90IHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpOworICAgIG1fd2ViUGFnZVBy
b3h5LmRyYXdpbmdBcmVhKCktPmluc3RhbGxUcmFuc2FjdGlvbkNhbGxiYWNrKFZvaWRDYWxsYmFj
azo6Y3JlYXRlKFtwYWdlSURdKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAg
YXV0byBnZXN0dXJlQ29udHJvbGxlckl0ZXIgPSBhbGxWaWV3R2VzdHVyZUNvbnRyb2xsZXJzKCku
ZmluZChwYWdlSUQpOworICAgICAgICBpZiAoZ2VzdHVyZUNvbnRyb2xsZXJJdGVyID09IGFsbFZp
ZXdHZXN0dXJlQ29udHJvbGxlcnMoKS5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgZ2VzdHVyZUNvbnRyb2xsZXJJdGVyLT52YWx1ZS0+d2lsbENvbW1pdFBvc3RTd2lwZVRyYW5z
aXRpb25MYXllclRyZWUoZXJyb3IgPT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSk7CisgICAg
fSkpOworCiAgICAgbV9zd2lwZVdhdGNoZG9nVGltZXIuc3RhcnRPbmVTaG90KHN3aXBlU25hcHNo
b3RSZW1vdmFsV2F0Y2hkb2dEdXJhdGlvbi5jb3VudCgpKTsKK30KKwordm9pZCBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OndpbGxDb21taXRQb3N0U3dpcGVUcmFuc2l0aW9uTGF5ZXJUcmVlKGJvb2wg
c3VjY2Vzc2Z1bCkKK3sKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSAhPSBWaWV3R2VzdHVy
ZVR5cGU6OlN3aXBlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXN1Y2Nlc3NmdWwpIHsK
KyAgICAgICAgcmVtb3ZlU3dpcGVTbmFwc2hvdCgpOworICAgICAgICByZXR1cm47CisgICAgfQog
CiAgICAgbV9zaG91bGRSZW1vdmVTbmFwc2hvdFdoZW5UYXJnZXRSZW5kZXJUcmVlU2l6ZUhpdCA9
IHRydWU7CiB9Ci0gICAgCisKIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpzZXRSZW5kZXJU
cmVlU2l6ZSh1aW50NjRfdCByZW5kZXJUcmVlU2l6ZSkKIHsKICAgICBpZiAobV9hY3RpdmVHZXN0
dXJlVHlwZSAhPSBWaWV3R2VzdHVyZVR5cGU6OlN3aXBlKQpAQCAtMjYwLDEwICsyODcsNyBAQCB2
b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6c2V0UmVuZGVyVHJlZVNpemUodWludDY0X3QgcmVu
ZGVyVHJlZVNpemUpCiAgICAgaWYgKCFtX3Nob3VsZFJlbW92ZVNuYXBzaG90V2hlblRhcmdldFJl
bmRlclRyZWVTaXplSGl0KQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBEb24ndCByZW1vdmUg
dGhlIHN3aXBlIHNuYXBzaG90IHVudGlsIHdlIGdldCBhIGRyYXdpbmcgYXJlYSB0cmFuc2FjdGlv
biBtb3JlIHJlY2VudCB0aGFuIHRoZSBuYXZpZ2F0aW9uLAotICAgIC8vIGFuZCB3ZSBoaXQgdGhl
IHJlbmRlciB0cmVlIHNpemUgdGhyZXNob2xkLiBUaGlzIGF2b2lkcyBwb3RlbnRpYWxseSByZW1v
dmluZyB0aGUgc25hcHNob3QgZWFybHksCi0gICAgLy8gd2hlbiByZWNlaXZpbmcgY29tbWl0cyBm
cm9tIHRoZSBwcmV2aW91cyAocHJlLW5hdmlnYXRpb24pIHBhZ2UuCi0gICAgaWYgKCghbV9zbmFw
c2hvdFJlbW92YWxUYXJnZXRSZW5kZXJUcmVlU2l6ZSB8fCByZW5kZXJUcmVlU2l6ZSA+IG1fc25h
cHNob3RSZW1vdmFsVGFyZ2V0UmVuZGVyVHJlZVNpemUpICYmIG1fd2ViUGFnZVByb3h5LmRyYXdp
bmdBcmVhKCktPmxhc3RWaXNpYmxlVHJhbnNhY3Rpb25JRCgpID49IG1fc25hcHNob3RSZW1vdmFs
VGFyZ2V0VHJhbnNhY3Rpb25JRCkKKyAgICBpZiAoIW1fc25hcHNob3RSZW1vdmFsVGFyZ2V0UmVu
ZGVyVHJlZVNpemUgfHwgcmVuZGVyVHJlZVNpemUgPiBtX3NuYXBzaG90UmVtb3ZhbFRhcmdldFJl
bmRlclRyZWVTaXplKQogICAgICAgICByZW1vdmVTd2lwZVNuYXBzaG90KCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5LmgKaW5kZXggZjI4MGVjMC4uMmMwY2EwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5LmgKQEAgLTU2LDYgKzU2LDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIHNpemVEaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGV2aWNl
U2NhbGVGYWN0b3JEaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkVXBk
YXRlR2VvbWV0cnkoKSBvdmVycmlkZTsKKyAgICAKKyAgICAvLyBGb3Igbm93LCBhbGwgY2FsbGJh
Y2tzIGFyZSBjYWxsZWQgYmVmb3JlIGNvbW1pdHRpbmcgY2hhbmdlcywgYmVjYXVzZSB0aGF0J3Mg
d2hhdCB0aGUgb25seSBjbGllbnQgcmVxdWlyZXMuCisgICAgLy8gT25jZSB3ZSBoYXZlIG90aGVy
IGNhbGxiYWNrcywgaXQgbWF5IG1ha2Ugc2Vuc2UgdG8gaGF2ZSBhIGJlZm9yZS1jb21taXQvYWZ0
ZXItY29tbWl0IG9wdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgaW5zdGFsbFRyYW5zYWN0aW9uQ2Fs
bGJhY2soUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+KSBvdmVycmlkZTsKIAogICAgIFdlYkNvcmU6
OkZsb2F0UmVjdCBzY2FsZWRFeHBvc2VkUmVjdCgpIGNvbnN0OwogICAgIHZvaWQgc2hvd0RlYnVn
SW5kaWNhdG9yKGJvb2wpOwpAQCAtODIsOCArODYsNiBAQCBwcml2YXRlOgogICAgIAogICAgIHZv
aWQgc2VuZFVwZGF0ZUdlb21ldHJ5KCk7CiAKLSAgICB2aXJ0dWFsIHVpbnQ2NF90IGxhc3RWaXNp
YmxlVHJhbnNhY3Rpb25JRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGFzdFZpc2libGVU
cmFuc2FjdGlvbklEOyB9Ci0KICAgICBSZW1vdGVMYXllclRyZWVIb3N0IG1fcmVtb3RlTGF5ZXJU
cmVlSG9zdDsKICAgICBib29sIG1faXNXYWl0aW5nRm9yRGlkVXBkYXRlR2VvbWV0cnk7CiAKQEAg
LTk5LDYgKzEwMSw4IEBAIHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9wZW5kaW5nTGF5ZXJUcmVl
VHJhbnNhY3Rpb25JRDsKICAgICB1aW50NjRfdCBtX2xhc3RWaXNpYmxlVHJhbnNhY3Rpb25JRDsK
ICAgICB1aW50NjRfdCBtX3RyYW5zYWN0aW9uSURGb3JQZW5kaW5nQ0FDb21taXQ7CisKKyAgICBD
YWxsYmFja01hcCBtX2NhbGxiYWNrczsKIH07CiAKIERSQVdJTkdfQVJFQV9QUk9YWV9UWVBFX0NB
U1RTKFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHksIHR5cGUoKSA9PSBEcmF3aW5nQXJl
YVR5cGVSZW1vdGVMYXllclRyZWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCmluZGV4
IDAyNDlmYmEuLjIzYWVmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KQEAgLTY3
LDYgKzY3LDcgQEAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eShXZWJQYWdlUHJveHkqIHcKIAogUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eTo6flJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkoKQogeworICAg
IG1fY2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZh
bGlkYXRlZCk7CiAgICAgbV93ZWJQYWdlUHJveHktPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHktPnBhZ2VJRCgpKTsKIH0KIApAQCAtMTMxLDYg
KzEzMiwxMiBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmNvbW1pdExh
eWVyVHJlZShjb25zdCBSZW1vdGVMYXllclRyZWVUcmFucwogICAgIEFTU0VSVChsYXllclRyZWVU
cmFuc2FjdGlvbi50cmFuc2FjdGlvbklEKCkgPT0gbV9sYXN0VmlzaWJsZVRyYW5zYWN0aW9uSUQg
KyAxKTsKICAgICBtX3RyYW5zYWN0aW9uSURGb3JQZW5kaW5nQ0FDb21taXQgPSBsYXllclRyZWVU
cmFuc2FjdGlvbi50cmFuc2FjdGlvbklEKCk7CiAKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrSUQg
OiBsYXllclRyZWVUcmFuc2FjdGlvbi5jYWxsYmFja0lEcygpKSB7CisgICAgICAgIGF1dG8gY2Fs
bGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFZvaWRDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CisgICAg
ICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2so
KTsKKyAgICB9CisKICAgICBpZiAobV9yZW1vdGVMYXllclRyZWVIb3N0LnVwZGF0ZUxheWVyVHJl
ZShsYXllclRyZWVUcmFuc2FjdGlvbikpCiAgICAgICAgIG1fd2ViUGFnZVByb3h5LT5zZXRBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKG1fcmVtb3RlTGF5ZXJUcmVlSG9zdC5yb290TGF5
ZXIoKSk7CiAKQEAgLTMzMyw0ICszNDAsMTggQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlVmlld1N0YXRlKCkKICAgICBtX3dlYlBhZ2VQcm94
eS0+cHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8
TWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJl
ZT4obV93ZWJQYWdlUHJveHktPnBhZ2VJRCgpLCB2aWV3U3RhdGVVcGRhdGVUaW1lb3V0LCBJbnRl
cnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOwogfQogCit2b2lkIFJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHk6Omluc3RhbGxUcmFuc2FjdGlvbkNhbGxiYWNrKFBhc3NSZWZQ
dHI8Vm9pZENhbGxiYWNrPiBwcnBDYWxsYmFjaykKK3sKKyAgICBSZWZQdHI8Vm9pZENhbGxiYWNr
PiBjYWxsYmFjayA9IHBycENhbGxiYWNrOworCisgICAgaWYgKCFtX3dlYlBhZ2VQcm94eS0+aXNW
YWxpZCgpKSB7CisgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJy
b3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
dWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV9jYWxs
YmFja3MucHV0KGNhbGxiYWNrKTsKKyAgICBtX3dlYlBhZ2VQcm94eS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OkRyYXdpbmdBcmVhOjpJbnN0YWxsVHJhbnNhY3Rpb25DYWxsYmFjayhjYWxsYmFj
a0lEKSwgbV93ZWJQYWdlUHJveHktPnBhZ2VJRCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJl
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXIuaAppbmRleCBjMTZmZjMyLi5mZjY2NmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKQEAgLTEwNyw2ICsx
MDcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5Td2lwZUluRGlyZWN0aW9uKFN3aXBlRGlyZWN0
aW9uKTsKICAgICB2b2lkIGJlZ2luU3dpcGVHZXN0dXJlKF9VSU5hdmlnYXRpb25JbnRlcmFjdGl2
ZVRyYW5zaXRpb25CYXNlICosIFN3aXBlRGlyZWN0aW9uKTsKICAgICB2b2lkIGVuZFN3aXBlR2Vz
dHVyZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJdGVtLCBfVUlWaWV3Q29udHJvbGxl
clRyYW5zaXRpb25Db250ZXh0ICosIGJvb2wgY2FuY2VsbGVkKTsKKyAgICB2b2lkIHdpbGxDb21t
aXRQb3N0U3dpcGVUcmFuc2l0aW9uTGF5ZXJUcmVlKGJvb2wpOwogICAgIHZvaWQgc2V0UmVuZGVy
VHJlZVNpemUodWludDY0X3QpOwogI2VuZGlmCiAKQEAgLTE4NCw3ICsxODUsNiBAQCBwcml2YXRl
OgogICAgIFJldGFpblB0cjxVSVZpZXc+IG1fdHJhbnNpdGlvbkNvbnRhaW5lclZpZXc7CiAgICAg
UmV0YWluUHRyPFdLU3dpcGVUcmFuc2l0aW9uQ29udHJvbGxlcj4gbV9zd2lwZUludGVyYWN0aXZl
VHJhbnNpdGlvbkRlbGVnYXRlOwogICAgIHVpbnQ2NF90IG1fc25hcHNob3RSZW1vdmFsVGFyZ2V0
UmVuZGVyVHJlZVNpemU7Ci0gICAgdWludDY0X3QgbV9zbmFwc2hvdFJlbW92YWxUYXJnZXRUcmFu
c2FjdGlvbklEOwogICAgIGJvb2wgbV9zaG91bGRSZW1vdmVTbmFwc2hvdFdoZW5UYXJnZXRSZW5k
ZXJUcmVlU2l6ZUhpdDsKICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggZGQzMDg5Yi4uZGI1NWY1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKQEAgLTE0Myw2
ICsxNDMsOCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFRyYW5zaWVudFpv
b20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9h
dFBvaW50IG9yaWdpbikgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaW5zdGFsbFRyYW5zYWN0aW9u
Q2FsbGJhY2sodWludDY0X3QgY2FsbGJhY2tJRCkgeyB9CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNz
YWdlcy5pbgppbmRleCBkNjBjMjM3Li5kNDJmMGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCkBAIC0z
NSw1ICszNSw3IEBAIG1lc3NhZ2VzIC0+IERyYXdpbmdBcmVhIExlZ2FjeVJlY2VpdmVyIHsKICAg
ICBDb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBv
cmlnaW4pCiAgICAgCiAgICAgQWNjZWxlcmF0ZWRBbmltYXRpb25EaWRTdGFydCh1aW50NjRfdCBs
YXllcklELCBTdHJpbmcga2V5LCBkb3VibGUgc3RhcnRUaW1lKQorICAgIAorICAgIEluc3RhbGxU
cmFuc2FjdGlvbkNhbGxiYWNrKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAjZW5kaWYKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAppbmRleCA2MTM3YmQ4Li4zMzJhM2E1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCkBAIC02Niw2ICs2Niw4IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIHNldFJvb3RDb21wb3NpdGluZ0xheWVyKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3Np
dGluZ0xheWVyRmx1c2goKSBvdmVycmlkZTsKIAorICAgIHZpcnR1YWwgdm9pZCBpbnN0YWxsVHJh
bnNhY3Rpb25DYWxsYmFjayh1aW50NjRfdCBjYWxsYmFja0lEKSBvdmVycmlkZTsKKwogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I+IGNyZWF0ZURp
c3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCB3aWxsRGVzdHJveURpc3BsYXlSZWZyZXNoTW9uaXRvcihXZWJDb3JlOjpEaXNwbGF5UmVmcmVz
aE1vbml0b3IqKTsKIApAQCAtMTU5LDYgKzE2MSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxS
ZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IqPiogbV9kaXNwbGF5UmVmcmVzaE1v
bml0b3JzVG9Ob3RpZnk7CiAKICAgICB1aW50NjRfdCBtX2N1cnJlbnRUcmFuc2FjdGlvbklEOwor
ICAgIFZlY3Rvcjx1aW50NjRfdD4gbV9wZW5kaW5nQ2FsbGJhY2tJRHM7CiB9OwogCiBEUkFXSU5H
X0FSRUFfVFlQRV9DQVNUUyhSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSwgdHlwZSgpID09IERy
YXdpbmdBcmVhVHlwZVJlbW90ZUxheWVyVHJlZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYS5tbQppbmRleCBlMDc4MTMxLi5kN2ZmZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEubW0KQEAgLTMxOCw2ICszMTgsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhOjpmbHVzaExheWVycygpCiAgICAgLy8gRklYTUU6IE1pbmltaXplIHRoZXNl
IHRyYW5zYWN0aW9ucyBpZiBub3RoaW5nIGNoYW5nZWQuCiAgICAgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24gbGF5ZXJUcmFuc2FjdGlvbjsKICAgICBsYXllclRyYW5zYWN0aW9uLnNldFRyYW5z
YWN0aW9uSUQodGFrZU5leHRUcmFuc2FjdGlvbklEKCkpOworICAgIGxheWVyVHJhbnNhY3Rpb24u
c2V0Q2FsbGJhY2tJRHMoc3RkOjptb3ZlKG1fcGVuZGluZ0NhbGxiYWNrSURzKSk7CiAgICAgbV9y
ZW1vdGVMYXllclRyZWVDb250ZXh0LT5idWlsZFRyYW5zYWN0aW9uKGxheWVyVHJhbnNhY3Rpb24s
ICp0b0dyYXBoaWNzTGF5ZXJDQVJlbW90ZShtX3Jvb3RMYXllci5nZXQoKSktPnBsYXRmb3JtQ0FM
YXllcigpKTsKICAgICBiYWNraW5nU3RvcmVDb2xsZWN0aW9uLndpbGxDb21taXRMYXllclRyZWUo
bGF5ZXJUcmFuc2FjdGlvbik7CiAgICAgbV93ZWJQYWdlLndpbGxDb21taXRMYXllclRyZWUobGF5
ZXJUcmFuc2FjdGlvbik7CkBAIC00MjgsNCArNDI5LDEwIEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWE6OnZpZXdTdGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OkZsYWdzLCBib29sIHdh
bnRzCiAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBzdXNwZW5kIHBhaW50aW5nIHdoaWxlIG5vdCB2
aXNpYmxlLCBsaWtlIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhPyBQcm9iYWJseS4KIH0K
IAordm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6aW5zdGFsbFRyYW5zYWN0aW9uQ2Fs
bGJhY2sodWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBtX3BlbmRpbmdDYWxsYmFja0lEcy5h
cHBlbmQoY2FsbGJhY2tJRCk7CisgICAgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234201</attachid>
            <date>2014-07-01 15:00:28 -0700</date>
            <delta_ts>2014-07-01 15:01:08 -0700</delta_ts>
            <desc>weinig&apos;s change</desc>
            <filename>swipe-callback.diff</filename>
            <type>text/plain</type>
            <size>20434</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlNGMyNWZlLi44NmExZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAg
QEAKKzIwMTQtMDctMDEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW2lPU11bV0syXSBTb21ldGltZXMgdGhlIHN3aXBlIHNuYXBzaG90IHN0YXlzIHVw
IHRvbyBsb25nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzQ1MDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE3NDk2ODAzPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIHRyYW5zYWN0
aW9uIGNhbGxiYWNrIG1lY2hhbmlzbS4KKyAgICAgICAgVGhlIFVJIHByb2Nlc3MgY2FuIHJlZ2lz
dGVyIGEgY2FsbGJhY2sgYXQgYW55IHBvaW50LCBnZW5lcmFsbHkgaW1tZWRpYXRlbHkgYWZ0ZXIg
c2VuZGluZyBhIG1lc3NhZ2UgdG8gdGhlIFdlYiBwcm9jZXNzLgorICAgICAgICBJdCB3aWxsIHRo
ZW4gc2VuZCBhbm90aGVyIG1lc3NhZ2UgKGluLW9yZGVyKSB3aXRoIHRoZSBjYWxsYmFjayBJRCB0
byB0aGUgV2ViIHByb2Nlc3MsIHdoaWNoIHdpbGwgcHV0IGl0IGludG8gdGhlIG5leHQgdHJhbnNh
Y3Rpb24KKyAgICAgICAgKHNjaGVkdWxpbmcgYSBuZXcgb25lIGlmIG5lZWRlZCkuIFdoZW4gdGhl
IHRyYW5zYWN0aW9uIGNvbWVzIGJhY2sgdG8gdGhlIFVJIHByb2Nlc3MsIHRoZSBjYWxsYmFja3Mg
YXJlIHBlcmZvcm1lZC4KKyAgICAgICAgVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGNhbGxiYWNrIGZp
cmVzIGFsb25nc2lkZSBhIGNvbW1pdCB0aGF0IGluY2x1ZGVzIHRoZSByZXN1bHRzIG9mIHdoYXRl
dmVyIG1lc3NhZ2VzIHdlcmUgc2VudCBiZWZvcmUgaXQgd2FzIHJlZ2lzdGVyZWQuCisgICAgICAg
IEZvciBub3csIGFsbCBjYWxsYmFja3MgYXJlIGZpcmVkIGp1c3QgYmVmb3JlIGNvbW1pdHRpbmcg
bGF5ZXIgY2hhbmdlcywgYnV0IGl0J3MgcG9zc2libGUgZnV0dXJlIHBhdGNoZXMgd2lsbCB3YW50
IHBvc3QtY29tbWl0IGNhbGxiYWNrcy4KKyAgICAgICAgCisgICAgICAgIE1ha2UgdXNlIG9mIHRo
aXMgdG8gcmVtb3ZlIHRoZSBWaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1Mgc25hcHNob3RzIGF0IHRo
ZSByaWdodCB0aW1lLgorCisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6
Y2FsbGJhY2tJRHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bjo6c2V0Q2FsbGJhY2tJRHMpOgorICAgICAgICAqIFNoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bjo6ZGVjb2RlKToKKyAgICAgICAgQWRkIGEgdmVjdG9yIG9mIGNhbGxiYWNrIElEcyB0byB0aGUg
dHJhbnNhY3Rpb247IGVuY29kZSBhbmQgZGVjb2RlIGFzIGFwcHJvcHJpYXRlLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2lu
Z0FyZWFQcm94eTo6aW5zdGFsbFRyYW5zYWN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpEcmF3aW5nQXJlYVByb3h5OjpsYXN0VmlzaWJsZVRyYW5zYWN0aW9uSUQpOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6
flJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojpjb21taXRMYXllclRyZWUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjppbnN0YWxsVHJhbnNhY3Rp
b25DYWxsYmFjayk6CisgICAgICAgIEFkZCBpbnN0YWxsVHJhbnNhY3Rpb25DYWxsYmFjaywgd2hp
Y2ggdGFrZXMgYSBWb2lkQ2FsbGJhY2suCisgICAgICAgIFdoZW4gYSBjYWxsYmFjayBpcyBpbnN0
YWxsZWQsIHdlIHNlbmQgdGhlIGNhbGxiYWNrIElEIHRvIHRoZSBXZWIgcHJvY2VzcyB2aWEgdGhl
IEluc3RhbGxUcmFuc2FjdGlvbkNhbGxiYWNrIG1lc3NhZ2UuCisgICAgICAgIFBlcmZvcm0gY2Fs
bGJhY2tzIGxpc3RlZCBpbiB0aGUgaW5jb21pbmcgdHJhbnNhY3Rpb24ncyB2ZWN0b3Igb2YgY2Fs
bGJhY2sgSURzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6
CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjppbnN0YWxsVHJhbnNhY3Rpb25DYWxsYmFj
ayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYTo6Zmx1c2hMYXllcnMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYTo6aW5zdGFsbFRyYW5zYWN0aW9uQ2FsbGJhY2spOgorICAgICAgICBLZWVwIHRyYWNr
IG9mIHRoZSBwZW5kaW5nIGNhbGxiYWNrIElEcyBvbiB0aGUgZHJhd2luZyBhcmVhLCBhbmQgbW92
ZSB0aGVtIGludG8gdGhlIHRyYW5zYWN0aW9uLgorICAgICAgICBXZSBzY2hlZHVsZSBhIGZsdXNo
IHdoZW4gaW5zdGFsbGluZyBhIHRyYW5zYWN0aW9uIGNhbGxiYWNrIG9uIHRoZSBwcmVtaXNlIHRo
YXQKKyAgICAgICAgc29tZXRpbWVzIHRoZSBhY3Rpb24gKGdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
IGluIHRoZSBzd2lwZSBjYXNlKSBtaWdodCBoYXZlIGFscmVhZHkgb2NjdXJyZWQKKyAgICAgICAg
YW5kIGJlZW4gY29tbWl0dGVkIGJ5IHRoZSB0aW1lIHRoZSBXZWIgcHJvY2VzcyByZWNlaXZlcyBp
bnN0YWxsVHJhbnNhY3Rpb25DYWxsYmFjaywgc28gd2UgbmVlZAorICAgICAgICB0byBjYXVzZSBh
bm90aGVyIGNvbW1pdCB0byBzZW5kIHRoZSBjYWxsYmFja3MgYWNyb3NzLiBJZiBzYWlkIGNvbW1p
dCBpcyBzdGlsbCBwZW5kaW5nLCB0aGlzIGlzIGEgbm8tb3AuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKGFsbFZpZXdHZXN0
dXJlQ29udHJvbGxlcnMpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OlZpZXdHZXN0dXJlQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6flZpZXdHZXN0dXJlQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6ZW5kU3dpcGVHZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6Vmll
d0dlc3R1cmVDb250cm9sbGVyOjp3aWxsQ29tbWl0UG9zdFN3aXBlVHJhbnNpdGlvbkxheWVyVHJl
ZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6c2V0UmVuZGVyVHJl
ZVNpemUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmg6
CisgICAgICAgIEtlZXAgYSBzaWRlLW1hcCBvZiBwYWdlIElEcyB0byBWaWV3R2VzdHVyZUNvbnRy
b2xsZXJzLCBzbyB0aGF0IHdlIGNhbiBzYWZlbHkgZ2V0IGJhY2sgdG8KKyAgICAgICAgb3VyIFZp
ZXdHZXN0dXJlQ29udHJvbGxlciBmcm9tIHRoZSBjYWxsYmFjay4KKworICAgICAgICBXaGVuIHRo
ZSBjYWxsYmFjayBmaXJlcywgaWYgaXQgc3VjY2VlZGVkLCBzZXQgbV9zaG91bGRSZW1vdmVTbmFw
c2hvdFdoZW5UYXJnZXRSZW5kZXJUcmVlU2l6ZUhpdCwKKyAgICAgICAgc28gdGhhdCB0aGUgY29t
bWl0ICh3aGljaCBpcyBhYm91dCB0byBvY2N1ciBpbW1lZGlhdGVseSBhZnRlciB0aGUgY2FsbGJh
Y2sgcmV0dXJucykgd2hpY2ggY2FsbHMKKyAgICAgICAgc2V0UmVuZGVyVHJlZVNpemUgd2lsbCAo
cGVyaGFwcykgcmVtb3ZlIHRoZSBzbmFwc2hvdC4KKworICAgICAgICBJZiBpdCBmYWlsZWQsIHdl
IHJlbW92ZSB0aGUgc25hcHNob3QgaW1tZWRpYXRlbHksIGFzIHRoaXMgdXN1YWxseSBoYXBwZW5z
IGlmIHRoZSBXZWIgcHJvY2VzcyBjcmFzaGVkLgorCiAyMDE0LTA3LTAxICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW2lPU10gVW5yZXZpZXdl
ZCBidWlsZCBmaXggYWZ0ZXIgcjE3MDY0MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAppbmRleCA0MzA3MTg4Li40MjQw
N2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbi5oCkBAIC0yMDksNiArMjA5LDkgQEAgcHVibGljOgogCiAgICAgdWlu
dDY0X3QgdHJhbnNhY3Rpb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb25JRDsgfQog
ICAgIHZvaWQgc2V0VHJhbnNhY3Rpb25JRCh1aW50NjRfdCB0cmFuc2FjdGlvbklEKSB7IG1fdHJh
bnNhY3Rpb25JRCA9IHRyYW5zYWN0aW9uSUQ7IH0KKworICAgIGNvbnN0IFZlY3Rvcjx1aW50NjRf
dD4mIGNhbGxiYWNrSURzKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja0lEczsgfQorICAgIHZv
aWQgc2V0Q2FsbGJhY2tJRHMoVmVjdG9yPHVpbnQ2NF90PiBjYWxsYmFja0lEcykgeyBtX2NhbGxi
YWNrSURzID0gc3RkOjptb3ZlKGNhbGxiYWNrSURzKTsgfQogICAgIAogcHJpdmF0ZToKICAgICBX
ZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbV9yb290TGF5ZXJJRDsKQEAg
LTIyMCw2ICsyMjMsOCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxXZWJDb3JlOjpHcmFwaGljc0xh
eWVyOjpQbGF0Zm9ybUxheWVySUQ+IG1fdmlkZW9MYXllcklEc1BlbmRpbmdGdWxsc2NyZWVuOwog
ICAgIFZlY3RvcjxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+IG1fbGF5
ZXJJRHNXaXRoTmV3bHlVbnJlYWNoYWJsZUJhY2tpbmdTdG9yZTsKIAorICAgIFZlY3Rvcjx1aW50
NjRfdD4gbV9jYWxsYmFja0lEczsKKwogICAgIFdlYkNvcmU6OkludFNpemUgbV9jb250ZW50c1Np
emU7CiAgICAgV2ViQ29yZTo6Q29sb3IgbV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3I7CiAg
ICAgZG91YmxlIG1fcGFnZVNjYWxlRmFjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KaW5kZXggZTk2ZWFmMC4u
OTExNTFjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQpAQCAtNDc1LDYgKzQ3NSw4IEBAIHZvaWQgUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKIAogICAgIGVuY29kZXIgPDwgbV9zY2FsZVdhc1NldEJ5VUlQcm9jZXNzOwogICAg
IGVuY29kZXIgPDwgbV9hbGxvd3NVc2VyU2NhbGluZzsKKworICAgIGVuY29kZXIgPDwgbV9jYWxs
YmFja0lEczsKIH0KIAogYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVjb2RlKElQ
Qzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYg
cmVzdWx0KQpAQCAtNTQ5LDYgKzU1MSw5IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b246OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVtb3RlTGF5CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9hbGxvd3NVc2VyU2NhbGluZykpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fY2FsbGJh
Y2tJRHMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKaW5kZXggODY4NWQ2
Ny4uYjkzMDhlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdB
cmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94
eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjZGVmaW5lIERyYXdpbmdBcmVhUHJveHlfaAogCiAjaW5j
bHVkZSAiRHJhd2luZ0FyZWFJbmZvLmgiCisjaW5jbHVkZSAiR2VuZXJpY0NhbGxiYWNrLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3Qu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KQEAgLTg1LDkgKzg2LDkgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzaG93RGVidWdJbmRpY2F0b3IoYm9vbCkgeyB9CiAgICAgdmly
dHVhbCBib29sIGlzU2hvd2luZ0RlYnVnSW5kaWNhdG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIAotICAgIHZpcnR1YWwgdWludDY0X3QgbGFzdFZpc2libGVUcmFuc2FjdGlvbklEKCkgY29u
c3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KLQogICAgIHZpcnR1YWwgdm9p
ZCB3YWl0Rm9yRGlkVXBkYXRlVmlld1N0YXRlKCkgeyB9CisgICAgCisgICAgdmlydHVhbCB2b2lk
IGluc3RhbGxUcmFuc2FjdGlvbkNhbGxiYWNrKFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxs
YmFjaykgeyBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrKCk7IH0KIAogcHJvdGVjdGVkOgogICAg
IGV4cGxpY2l0IERyYXdpbmdBcmVhUHJveHkoRHJhd2luZ0FyZWFUeXBlLCBXZWJQYWdlUHJveHkq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVD
b250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXJJT1MubW0KaW5kZXggMWZiNWVkYS4uMDNkM2I2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1Mu
bW0KQEAgLTI4LDIxICsyOCwyMiBAQAogCiAjaWYgUExBVEZPUk0oSU9TKQogCi0jaW1wb3J0ICJX
ZWJQYWdlR3JvdXAuaCIKICNpbXBvcnQgIlZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VzLmgi
CiAjaW1wb3J0ICJWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yTWVzc2FnZXMuaCIKICNpbXBv
cnQgIlZpZXdTbmFwc2hvdFN0b3JlLmgiCiAjaW1wb3J0ICJXZWJCYWNrRm9yd2FyZExpc3QuaCIK
KyNpbXBvcnQgIldlYlBhZ2VHcm91cC5oIgogI2ltcG9ydCAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAj
aW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgotI2lt
cG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29y
ZVByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJU2NyZWVuRWRnZVBhbkdlc3R1cmVSZWNvZ25p
emVyLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVZpZXdDb250cm9sbGVyVHJhbnNpdGlvbmluZ19Qcml2
YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJlY29nbml6ZXIu
aD4KICNpbXBvcnQgPFVJS2l0L19VSU5hdmlnYXRpb25JbnRlcmFjdGl2ZVRyYW5zaXRpb24uaD4K
ICNpbXBvcnQgPFVJS2l0L19VSU5hdmlnYXRpb25QYXJhbGxheFRyYW5zaXRpb24uaD4KKyNpbXBv
cnQgPFdlYkNvcmUvSU9TdXJmYWNlLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTY0LDYgKzY1LDEyIEBAIEBpbXBsZW1l
bnRhdGlvbiBXS1N3aXBlVHJhbnNpdGlvbkNvbnRyb2xsZXIKIHN0YXRpYyBjb25zdCBmbG9hdCBz
d2lwZVNuYXBzaG90UmVtb3ZhbFJlbmRlclRyZWVTaXplVGFyZ2V0RnJhY3Rpb24gPSAwLjU7CiBz
dGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86OnNlY29uZHMgc3dpcGVTbmFwc2hvdFJlbW92YWxXYXRj
aGRvZ0R1cmF0aW9uID0gM19zOwogCitzdGF0aWMgSGFzaE1hcDx1aW50NjRfdCwgV2ViS2l0OjpW
aWV3R2VzdHVyZUNvbnRyb2xsZXIqPiYgYWxsVmlld0dlc3R1cmVDb250cm9sbGVycygpCit7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8dWludDY0X3QsIFdlYktpdDo6Vmlld0dl
c3R1cmVDb250cm9sbGVyKj4+IHZpZXdHZXN0dXJlQ29udHJvbGxlcnM7CisgICAgcmV0dXJuIHZp
ZXdHZXN0dXJlQ29udHJvbGxlcnMuZ2V0KCk7Cit9CisKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0
aFZpZXdHZXN0dXJlQ29udHJvbGxlcjooV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXIqKWdl
c3R1cmVDb250cm9sbGVyIGdlc3R1cmVSZWNvZ25pemVyVmlldzooVUlWaWV3ICopZ2VzdHVyZVJl
Y29nbml6ZXJWaWV3CiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKQEAgLTEzMCwxMCArMTM3
LDEyIEBAIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Vmlld0dlc3R1cmVDb250cm9sbGVyKFdlYlBh
Z2VQcm94eSYgd2ViUGFnZVByb3h5KQogICAgICwgbV9zbmFwc2hvdFJlbW92YWxUYXJnZXRSZW5k
ZXJUcmVlU2l6ZSgwKQogICAgICwgbV9zaG91bGRSZW1vdmVTbmFwc2hvdFdoZW5UYXJnZXRSZW5k
ZXJUcmVlU2l6ZUhpdChmYWxzZSkKIHsKKyAgICBhbGxWaWV3R2VzdHVyZUNvbnRyb2xsZXJzKCku
YWRkKHdlYlBhZ2VQcm94eS5wYWdlSUQoKSwgdGhpcyk7CiB9CiAKIFZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6flZpZXdHZXN0dXJlQ29udHJvbGxlcigpCiB7CisgICAgYWxsVmlld0dlc3R1cmVDb250
cm9sbGVycygpLnJlbW92ZShtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgVmll
d0dlc3R1cmVDb250cm9sbGVyOjppbnN0YWxsU3dpcGVIYW5kbGVyKFVJVmlldyAqZ2VzdHVyZVJl
Y29nbml6ZXJWaWV3LCBVSVZpZXcgKnN3aXBpbmdWaWV3KQpAQCAtMjM4LDcgKzI0Nyw2IEBAIHZv
aWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRTd2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSogdGFyZ2V0SXRlbSwKICAgICBtX3NuYXBzaG90UmVtb3ZhbFRhcmdldFJlbmRlclRy
ZWVTaXplID0gMDsKICAgICBpZiAoVmlld1NuYXBzaG90U3RvcmU6OnNoYXJlZCgpLmdldFNuYXBz
aG90KHRhcmdldEl0ZW0sIHNuYXBzaG90KSkKICAgICAgICAgbV9zbmFwc2hvdFJlbW92YWxUYXJn
ZXRSZW5kZXJUcmVlU2l6ZSA9IHNuYXBzaG90LnJlbmRlclRyZWVTaXplICogc3dpcGVTbmFwc2hv
dFJlbW92YWxSZW5kZXJUcmVlU2l6ZVRhcmdldEZyYWN0aW9uOwotICAgIG1fc25hcHNob3RSZW1v
dmFsVGFyZ2V0VHJhbnNhY3Rpb25JRCA9IG1fd2ViUGFnZVByb3h5LmRyYXdpbmdBcmVhKCktPmxh
c3RWaXNpYmxlVHJhbnNhY3Rpb25JRCgpICsgMTsKIAogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8g
cmVwbGFjZSB0aGUgY3VycmVudCBiYWNrLWZvcndhcmQgaXRlbSdzIHNuYXBzaG90CiAgICAgLy8g
bGlrZSB3ZSBub3JtYWxseSB3b3VsZCB3aGVuIGdvaW5nIGJhY2sgb3IgZm9yd2FyZCwgYmVjYXVz
ZSB3ZSBhcmUKQEAgLTI0NywxMSArMjU1LDMwIEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVy
OjplbmRTd2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwKICAg
ICBtX3dlYlBhZ2VQcm94eS5nb1RvQmFja0ZvcndhcmRJdGVtKHRhcmdldEl0ZW0pOwogICAgIFZp
ZXdTbmFwc2hvdFN0b3JlOjpzaGFyZWQoKS5lbmFibGVTbmFwc2hvdHRpbmcoKTsKIAorICAgIHVp
bnQ2NF90IHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpOworICAgIG1fd2ViUGFnZVBy
b3h5LmRyYXdpbmdBcmVhKCktPmluc3RhbGxUcmFuc2FjdGlvbkNhbGxiYWNrKFZvaWRDYWxsYmFj
azo6Y3JlYXRlKFtwYWdlSURdKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAg
YXV0byBnZXN0dXJlQ29udHJvbGxlckl0ZXIgPSBhbGxWaWV3R2VzdHVyZUNvbnRyb2xsZXJzKCku
ZmluZChwYWdlSUQpOworICAgICAgICBpZiAoZ2VzdHVyZUNvbnRyb2xsZXJJdGVyID09IGFsbFZp
ZXdHZXN0dXJlQ29udHJvbGxlcnMoKS5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgZ2VzdHVyZUNvbnRyb2xsZXJJdGVyLT52YWx1ZS0+d2lsbENvbW1pdFBvc3RTd2lwZVRyYW5z
aXRpb25MYXllclRyZWUoZXJyb3IgPT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSk7CisgICAg
fSkpOworCiAgICAgbV9zd2lwZVdhdGNoZG9nVGltZXIuc3RhcnRPbmVTaG90KHN3aXBlU25hcHNo
b3RSZW1vdmFsV2F0Y2hkb2dEdXJhdGlvbi5jb3VudCgpKTsKK30KKwordm9pZCBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OndpbGxDb21taXRQb3N0U3dpcGVUcmFuc2l0aW9uTGF5ZXJUcmVlKGJvb2wg
c3VjY2Vzc2Z1bCkKK3sKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSAhPSBWaWV3R2VzdHVy
ZVR5cGU6OlN3aXBlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXN1Y2Nlc3NmdWwpIHsK
KyAgICAgICAgcmVtb3ZlU3dpcGVTbmFwc2hvdCgpOworICAgICAgICByZXR1cm47CisgICAgfQog
CiAgICAgbV9zaG91bGRSZW1vdmVTbmFwc2hvdFdoZW5UYXJnZXRSZW5kZXJUcmVlU2l6ZUhpdCA9
IHRydWU7CiB9Ci0gICAgCisKIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpzZXRSZW5kZXJU
cmVlU2l6ZSh1aW50NjRfdCByZW5kZXJUcmVlU2l6ZSkKIHsKICAgICBpZiAobV9hY3RpdmVHZXN0
dXJlVHlwZSAhPSBWaWV3R2VzdHVyZVR5cGU6OlN3aXBlKQpAQCAtMjYwLDEwICsyODcsNyBAQCB2
b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6c2V0UmVuZGVyVHJlZVNpemUodWludDY0X3QgcmVu
ZGVyVHJlZVNpemUpCiAgICAgaWYgKCFtX3Nob3VsZFJlbW92ZVNuYXBzaG90V2hlblRhcmdldFJl
bmRlclRyZWVTaXplSGl0KQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBEb24ndCByZW1vdmUg
dGhlIHN3aXBlIHNuYXBzaG90IHVudGlsIHdlIGdldCBhIGRyYXdpbmcgYXJlYSB0cmFuc2FjdGlv
biBtb3JlIHJlY2VudCB0aGFuIHRoZSBuYXZpZ2F0aW9uLAotICAgIC8vIGFuZCB3ZSBoaXQgdGhl
IHJlbmRlciB0cmVlIHNpemUgdGhyZXNob2xkLiBUaGlzIGF2b2lkcyBwb3RlbnRpYWxseSByZW1v
dmluZyB0aGUgc25hcHNob3QgZWFybHksCi0gICAgLy8gd2hlbiByZWNlaXZpbmcgY29tbWl0cyBm
cm9tIHRoZSBwcmV2aW91cyAocHJlLW5hdmlnYXRpb24pIHBhZ2UuCi0gICAgaWYgKCghbV9zbmFw
c2hvdFJlbW92YWxUYXJnZXRSZW5kZXJUcmVlU2l6ZSB8fCByZW5kZXJUcmVlU2l6ZSA+IG1fc25h
cHNob3RSZW1vdmFsVGFyZ2V0UmVuZGVyVHJlZVNpemUpICYmIG1fd2ViUGFnZVByb3h5LmRyYXdp
bmdBcmVhKCktPmxhc3RWaXNpYmxlVHJhbnNhY3Rpb25JRCgpID49IG1fc25hcHNob3RSZW1vdmFs
VGFyZ2V0VHJhbnNhY3Rpb25JRCkKKyAgICBpZiAoIW1fc25hcHNob3RSZW1vdmFsVGFyZ2V0UmVu
ZGVyVHJlZVNpemUgfHwgcmVuZGVyVHJlZVNpemUgPiBtX3NuYXBzaG90UmVtb3ZhbFRhcmdldFJl
bmRlclRyZWVTaXplKQogICAgICAgICByZW1vdmVTd2lwZVNuYXBzaG90KCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5LmgKaW5kZXggZjI4MGVjMC4uMmMwY2EwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5LmgKQEAgLTU2LDYgKzU2LDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIHNpemVEaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGV2aWNl
U2NhbGVGYWN0b3JEaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkVXBk
YXRlR2VvbWV0cnkoKSBvdmVycmlkZTsKKyAgICAKKyAgICAvLyBGb3Igbm93LCBhbGwgY2FsbGJh
Y2tzIGFyZSBjYWxsZWQgYmVmb3JlIGNvbW1pdHRpbmcgY2hhbmdlcywgYmVjYXVzZSB0aGF0J3Mg
d2hhdCB0aGUgb25seSBjbGllbnQgcmVxdWlyZXMuCisgICAgLy8gT25jZSB3ZSBoYXZlIG90aGVy
IGNhbGxiYWNrcywgaXQgbWF5IG1ha2Ugc2Vuc2UgdG8gaGF2ZSBhIGJlZm9yZS1jb21taXQvYWZ0
ZXItY29tbWl0IG9wdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgaW5zdGFsbFRyYW5zYWN0aW9uQ2Fs
bGJhY2soUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+KSBvdmVycmlkZTsKIAogICAgIFdlYkNvcmU6
OkZsb2F0UmVjdCBzY2FsZWRFeHBvc2VkUmVjdCgpIGNvbnN0OwogICAgIHZvaWQgc2hvd0RlYnVn
SW5kaWNhdG9yKGJvb2wpOwpAQCAtODIsOCArODYsNiBAQCBwcml2YXRlOgogICAgIAogICAgIHZv
aWQgc2VuZFVwZGF0ZUdlb21ldHJ5KCk7CiAKLSAgICB2aXJ0dWFsIHVpbnQ2NF90IGxhc3RWaXNp
YmxlVHJhbnNhY3Rpb25JRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGFzdFZpc2libGVU
cmFuc2FjdGlvbklEOyB9Ci0KICAgICBSZW1vdGVMYXllclRyZWVIb3N0IG1fcmVtb3RlTGF5ZXJU
cmVlSG9zdDsKICAgICBib29sIG1faXNXYWl0aW5nRm9yRGlkVXBkYXRlR2VvbWV0cnk7CiAKQEAg
LTk5LDYgKzEwMSw4IEBAIHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9wZW5kaW5nTGF5ZXJUcmVl
VHJhbnNhY3Rpb25JRDsKICAgICB1aW50NjRfdCBtX2xhc3RWaXNpYmxlVHJhbnNhY3Rpb25JRDsK
ICAgICB1aW50NjRfdCBtX3RyYW5zYWN0aW9uSURGb3JQZW5kaW5nQ0FDb21taXQ7CisKKyAgICBD
YWxsYmFja01hcCBtX2NhbGxiYWNrczsKIH07CiAKIERSQVdJTkdfQVJFQV9QUk9YWV9UWVBFX0NB
U1RTKFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHksIHR5cGUoKSA9PSBEcmF3aW5nQXJl
YVR5cGVSZW1vdGVMYXllclRyZWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCmluZGV4
IDAyNDlmYmEuLjIzYWVmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KQEAgLTY3
LDYgKzY3LDcgQEAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eShXZWJQYWdlUHJveHkqIHcKIAogUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eTo6flJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkoKQogeworICAg
IG1fY2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZh
bGlkYXRlZCk7CiAgICAgbV93ZWJQYWdlUHJveHktPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHktPnBhZ2VJRCgpKTsKIH0KIApAQCAtMTMxLDYg
KzEzMiwxMiBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmNvbW1pdExh
eWVyVHJlZShjb25zdCBSZW1vdGVMYXllclRyZWVUcmFucwogICAgIEFTU0VSVChsYXllclRyZWVU
cmFuc2FjdGlvbi50cmFuc2FjdGlvbklEKCkgPT0gbV9sYXN0VmlzaWJsZVRyYW5zYWN0aW9uSUQg
KyAxKTsKICAgICBtX3RyYW5zYWN0aW9uSURGb3JQZW5kaW5nQ0FDb21taXQgPSBsYXllclRyZWVU
cmFuc2FjdGlvbi50cmFuc2FjdGlvbklEKCk7CiAKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrSUQg
OiBsYXllclRyZWVUcmFuc2FjdGlvbi5jYWxsYmFja0lEcygpKSB7CisgICAgICAgIGF1dG8gY2Fs
bGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPFZvaWRDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CisgICAg
ICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2so
KTsKKyAgICB9CisKICAgICBpZiAobV9yZW1vdGVMYXllclRyZWVIb3N0LnVwZGF0ZUxheWVyVHJl
ZShsYXllclRyZWVUcmFuc2FjdGlvbikpCiAgICAgICAgIG1fd2ViUGFnZVByb3h5LT5zZXRBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKG1fcmVtb3RlTGF5ZXJUcmVlSG9zdC5yb290TGF5
ZXIoKSk7CiAKQEAgLTMzMyw0ICszNDAsMTggQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlVmlld1N0YXRlKCkKICAgICBtX3dlYlBhZ2VQcm94
eS0+cHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8
TWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJl
ZT4obV93ZWJQYWdlUHJveHktPnBhZ2VJRCgpLCB2aWV3U3RhdGVVcGRhdGVUaW1lb3V0LCBJbnRl
cnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOwogfQogCit2b2lkIFJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHk6Omluc3RhbGxUcmFuc2FjdGlvbkNhbGxiYWNrKFBhc3NSZWZQ
dHI8Vm9pZENhbGxiYWNrPiBwcnBDYWxsYmFjaykKK3sKKyAgICBSZWZQdHI8Vm9pZENhbGxiYWNr
PiBjYWxsYmFjayA9IHBycENhbGxiYWNrOworCisgICAgaWYgKCFtX3dlYlBhZ2VQcm94eS0+aXNW
YWxpZCgpKSB7CisgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJy
b3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
dWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV9jYWxs
YmFja3MucHV0KGNhbGxiYWNrKTsKKyAgICBtX3dlYlBhZ2VQcm94eS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OkRyYXdpbmdBcmVhOjpJbnN0YWxsVHJhbnNhY3Rpb25DYWxsYmFjayhjYWxsYmFj
a0lEKSwgbV93ZWJQYWdlUHJveHktPnBhZ2VJRCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJl
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXIuaAppbmRleCBjMTZmZjMyLi5mZjY2NmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKQEAgLTEwNyw2ICsx
MDcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5Td2lwZUluRGlyZWN0aW9uKFN3aXBlRGlyZWN0
aW9uKTsKICAgICB2b2lkIGJlZ2luU3dpcGVHZXN0dXJlKF9VSU5hdmlnYXRpb25JbnRlcmFjdGl2
ZVRyYW5zaXRpb25CYXNlICosIFN3aXBlRGlyZWN0aW9uKTsKICAgICB2b2lkIGVuZFN3aXBlR2Vz
dHVyZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJdGVtLCBfVUlWaWV3Q29udHJvbGxl
clRyYW5zaXRpb25Db250ZXh0ICosIGJvb2wgY2FuY2VsbGVkKTsKKyAgICB2b2lkIHdpbGxDb21t
aXRQb3N0U3dpcGVUcmFuc2l0aW9uTGF5ZXJUcmVlKGJvb2wpOwogICAgIHZvaWQgc2V0UmVuZGVy
VHJlZVNpemUodWludDY0X3QpOwogI2VuZGlmCiAKQEAgLTE4NCw3ICsxODUsNiBAQCBwcml2YXRl
OgogICAgIFJldGFpblB0cjxVSVZpZXc+IG1fdHJhbnNpdGlvbkNvbnRhaW5lclZpZXc7CiAgICAg
UmV0YWluUHRyPFdLU3dpcGVUcmFuc2l0aW9uQ29udHJvbGxlcj4gbV9zd2lwZUludGVyYWN0aXZl
VHJhbnNpdGlvbkRlbGVnYXRlOwogICAgIHVpbnQ2NF90IG1fc25hcHNob3RSZW1vdmFsVGFyZ2V0
UmVuZGVyVHJlZVNpemU7Ci0gICAgdWludDY0X3QgbV9zbmFwc2hvdFJlbW92YWxUYXJnZXRUcmFu
c2FjdGlvbklEOwogICAgIGJvb2wgbV9zaG91bGRSZW1vdmVTbmFwc2hvdFdoZW5UYXJnZXRSZW5k
ZXJUcmVlU2l6ZUhpdDsKICNlbmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggZGQzMDg5Yi4uZGI1NWY1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKQEAgLTE0Myw2
ICsxNDMsOCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFRyYW5zaWVudFpv
b20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9h
dFBvaW50IG9yaWdpbikgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaW5zdGFsbFRyYW5zYWN0aW9u
Q2FsbGJhY2sodWludDY0X3QgY2FsbGJhY2tJRCkgeyB9CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNz
YWdlcy5pbgppbmRleCBkNjBjMjM3Li5kNDJmMGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCkBAIC0z
NSw1ICszNSw3IEBAIG1lc3NhZ2VzIC0+IERyYXdpbmdBcmVhIExlZ2FjeVJlY2VpdmVyIHsKICAg
ICBDb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBv
cmlnaW4pCiAgICAgCiAgICAgQWNjZWxlcmF0ZWRBbmltYXRpb25EaWRTdGFydCh1aW50NjRfdCBs
YXllcklELCBTdHJpbmcga2V5LCBkb3VibGUgc3RhcnRUaW1lKQorICAgIAorICAgIEluc3RhbGxU
cmFuc2FjdGlvbkNhbGxiYWNrKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAjZW5kaWYKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAppbmRleCA2MTM3YmQ4Li4zMzJhM2E1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCkBAIC02Niw2ICs2Niw4IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIHNldFJvb3RDb21wb3NpdGluZ0xheWVyKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3Np
dGluZ0xheWVyRmx1c2goKSBvdmVycmlkZTsKIAorICAgIHZpcnR1YWwgdm9pZCBpbnN0YWxsVHJh
bnNhY3Rpb25DYWxsYmFjayh1aW50NjRfdCBjYWxsYmFja0lEKSBvdmVycmlkZTsKKwogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I+IGNyZWF0ZURp
c3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCB3aWxsRGVzdHJveURpc3BsYXlSZWZyZXNoTW9uaXRvcihXZWJDb3JlOjpEaXNwbGF5UmVmcmVz
aE1vbml0b3IqKTsKIApAQCAtMTU5LDYgKzE2MSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxS
ZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IqPiogbV9kaXNwbGF5UmVmcmVzaE1v
bml0b3JzVG9Ob3RpZnk7CiAKICAgICB1aW50NjRfdCBtX2N1cnJlbnRUcmFuc2FjdGlvbklEOwor
ICAgIFZlY3Rvcjx1aW50NjRfdD4gbV9wZW5kaW5nQ2FsbGJhY2tJRHM7CiB9OwogCiBEUkFXSU5H
X0FSRUFfVFlQRV9DQVNUUyhSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSwgdHlwZSgpID09IERy
YXdpbmdBcmVhVHlwZVJlbW90ZUxheWVyVHJlZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYS5tbQppbmRleCBlMDc4MTMxLi5kN2ZmZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEubW0KQEAgLTMxOCw2ICszMTgsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhOjpmbHVzaExheWVycygpCiAgICAgLy8gRklYTUU6IE1pbmltaXplIHRoZXNl
IHRyYW5zYWN0aW9ucyBpZiBub3RoaW5nIGNoYW5nZWQuCiAgICAgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24gbGF5ZXJUcmFuc2FjdGlvbjsKICAgICBsYXllclRyYW5zYWN0aW9uLnNldFRyYW5z
YWN0aW9uSUQodGFrZU5leHRUcmFuc2FjdGlvbklEKCkpOworICAgIGxheWVyVHJhbnNhY3Rpb24u
c2V0Q2FsbGJhY2tJRHMoc3RkOjptb3ZlKG1fcGVuZGluZ0NhbGxiYWNrSURzKSk7CiAgICAgbV9y
ZW1vdGVMYXllclRyZWVDb250ZXh0LT5idWlsZFRyYW5zYWN0aW9uKGxheWVyVHJhbnNhY3Rpb24s
ICp0b0dyYXBoaWNzTGF5ZXJDQVJlbW90ZShtX3Jvb3RMYXllci5nZXQoKSktPnBsYXRmb3JtQ0FM
YXllcigpKTsKICAgICBiYWNraW5nU3RvcmVDb2xsZWN0aW9uLndpbGxDb21taXRMYXllclRyZWUo
bGF5ZXJUcmFuc2FjdGlvbik7CiAgICAgbV93ZWJQYWdlLndpbGxDb21taXRMYXllclRyZWUobGF5
ZXJUcmFuc2FjdGlvbik7CkBAIC00MjgsNCArNDI5LDEwIEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWE6OnZpZXdTdGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OkZsYWdzLCBib29sIHdh
bnRzCiAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBzdXNwZW5kIHBhaW50aW5nIHdoaWxlIG5vdCB2
aXNpYmxlLCBsaWtlIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhPyBQcm9iYWJseS4KIH0K
IAordm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6aW5zdGFsbFRyYW5zYWN0aW9uQ2Fs
bGJhY2sodWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBtX3BlbmRpbmdDYWxsYmFja0lEcy5h
cHBlbmQoY2FsbGJhY2tJRCk7CisgICAgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234202</attachid>
            <date>2014-07-01 15:01:08 -0700</date>
            <delta_ts>2014-07-02 16:39:07 -0700</delta_ts>
            <desc>actually different patch</desc>
            <filename>swipe-callback.diff</filename>
            <type>text/plain</type>
            <size>20510</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzODllOTBiLi44YTZhMDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAg
QEAKKzIwMTQtMDctMDEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW2lPU11bV0syXSBTb21ldGltZXMgdGhlIHN3aXBlIHNuYXBzaG90IHN0YXlzIHVw
IHRvbyBsb25nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzQ1MDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE3NDk2ODAzPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIHRyYW5zYWN0
aW9uIGNhbGxiYWNrIG1lY2hhbmlzbS4KKyAgICAgICAgVGhlIFVJIHByb2Nlc3MgY2FuIHJlZ2lz
dGVyIGEgY2FsbGJhY2sgYXQgYW55IHBvaW50LCBnZW5lcmFsbHkgaW1tZWRpYXRlbHkgYWZ0ZXIg
c2VuZGluZyBhIG1lc3NhZ2UgdG8gdGhlIFdlYiBwcm9jZXNzLgorICAgICAgICBJdCB3aWxsIHRo
ZW4gc2VuZCBhbm90aGVyIG1lc3NhZ2UgKGluLW9yZGVyKSB3aXRoIHRoZSBjYWxsYmFjayBJRCB0
byB0aGUgV2ViIHByb2Nlc3MsIHdoaWNoIHdpbGwgcHV0IGl0IGludG8gdGhlIG5leHQgdHJhbnNh
Y3Rpb24KKyAgICAgICAgKHNjaGVkdWxpbmcgYSBuZXcgb25lIGlmIG5lZWRlZCkuIFdoZW4gdGhl
IHRyYW5zYWN0aW9uIGNvbWVzIGJhY2sgdG8gdGhlIFVJIHByb2Nlc3MsIHRoZSBjYWxsYmFja3Mg
YXJlIHBlcmZvcm1lZC4KKyAgICAgICAgVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGNhbGxiYWNrIGZp
cmVzIGFsb25nc2lkZSBhIGNvbW1pdCB0aGF0IGluY2x1ZGVzIHRoZSByZXN1bHRzIG9mIHdoYXRl
dmVyIG1lc3NhZ2VzIHdlcmUgc2VudCBiZWZvcmUgaXQgd2FzIHJlZ2lzdGVyZWQuCisgICAgICAg
IEZvciBub3csIGFsbCBjYWxsYmFja3MgYXJlIGZpcmVkIGp1c3QgYmVmb3JlIGNvbW1pdHRpbmcg
bGF5ZXIgY2hhbmdlcywgYnV0IGl0J3MgcG9zc2libGUgZnV0dXJlIHBhdGNoZXMgd2lsbCB3YW50
IHBvc3QtY29tbWl0IGNhbGxiYWNrcy4KKyAgICAgICAgCisgICAgICAgIE1ha2UgdXNlIG9mIHRo
aXMgdG8gcmVtb3ZlIHRoZSBWaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1Mgc25hcHNob3RzIGF0IHRo
ZSByaWdodCB0aW1lLgorCisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6
Y2FsbGJhY2tJRHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bjo6c2V0Q2FsbGJhY2tJRHMpOgorICAgICAgICAqIFNoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bjo6ZGVjb2RlKToKKyAgICAgICAgQWRkIGEgdmVjdG9yIG9mIGNhbGxiYWNrIElEcyB0byB0aGUg
dHJhbnNhY3Rpb247IGVuY29kZSBhbmQgZGVjb2RlIGFzIGFwcHJvcHJpYXRlLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2lu
Z0FyZWFQcm94eTo6aW5zdGFsbFRyYW5zYWN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpEcmF3aW5nQXJlYVByb3h5OjpsYXN0VmlzaWJsZVRyYW5zYWN0aW9uSUQpOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6
flJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojpjb21taXRMYXllclRyZWUpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjppbnN0YWxsVHJhbnNhY3Rp
b25DYWxsYmFjayk6CisgICAgICAgIEFkZCBpbnN0YWxsVHJhbnNhY3Rpb25DYWxsYmFjaywgd2hp
Y2ggdGFrZXMgYSBWb2lkQ2FsbGJhY2suCisgICAgICAgIFdoZW4gYSBjYWxsYmFjayBpcyBpbnN0
YWxsZWQsIHdlIHNlbmQgdGhlIGNhbGxiYWNrIElEIHRvIHRoZSBXZWIgcHJvY2VzcyB2aWEgdGhl
IEluc3RhbGxUcmFuc2FjdGlvbkNhbGxiYWNrIG1lc3NhZ2UuCisgICAgICAgIFBlcmZvcm0gY2Fs
bGJhY2tzIGxpc3RlZCBpbiB0aGUgaW5jb21pbmcgdHJhbnNhY3Rpb24ncyB2ZWN0b3Igb2YgY2Fs
bGJhY2sgSURzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6
CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjppbnN0YWxsVHJhbnNhY3Rpb25DYWxsYmFj
ayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYTo6Zmx1c2hMYXllcnMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYTo6aW5zdGFsbFRyYW5zYWN0aW9uQ2FsbGJhY2spOgorICAgICAgICBLZWVwIHRyYWNr
IG9mIHRoZSBwZW5kaW5nIGNhbGxiYWNrIElEcyBvbiB0aGUgZHJhd2luZyBhcmVhLCBhbmQgbW92
ZSB0aGVtIGludG8gdGhlIHRyYW5zYWN0aW9uLgorICAgICAgICBXZSBzY2hlZHVsZSBhIGZsdXNo
IHdoZW4gaW5zdGFsbGluZyBhIHRyYW5zYWN0aW9uIGNhbGxiYWNrIG9uIHRoZSBwcmVtaXNlIHRo
YXQKKyAgICAgICAgc29tZXRpbWVzIHRoZSBhY3Rpb24gKGdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
IGluIHRoZSBzd2lwZSBjYXNlKSBtaWdodCBoYXZlIGFscmVhZHkgb2NjdXJyZWQKKyAgICAgICAg
YW5kIGJlZW4gY29tbWl0dGVkIGJ5IHRoZSB0aW1lIHRoZSBXZWIgcHJvY2VzcyByZWNlaXZlcyBp
bnN0YWxsVHJhbnNhY3Rpb25DYWxsYmFjaywgc28gd2UgbmVlZAorICAgICAgICB0byBjYXVzZSBh
bm90aGVyIGNvbW1pdCB0byBzZW5kIHRoZSBjYWxsYmFja3MgYWNyb3NzLiBJZiBzYWlkIGNvbW1p
dCBpcyBzdGlsbCBwZW5kaW5nLCB0aGlzIGlzIGEgbm8tb3AuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKGFsbFZpZXdHZXN0
dXJlQ29udHJvbGxlcnMpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OlZpZXdHZXN0dXJlQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6flZpZXdHZXN0dXJlQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6ZW5kU3dpcGVHZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6Vmll
d0dlc3R1cmVDb250cm9sbGVyOjp3aWxsQ29tbWl0UG9zdFN3aXBlVHJhbnNpdGlvbkxheWVyVHJl
ZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6c2V0UmVuZGVyVHJl
ZVNpemUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmg6
CisgICAgICAgIEtlZXAgYSBzaWRlLW1hcCBvZiBwYWdlIElEcyB0byBWaWV3R2VzdHVyZUNvbnRy
b2xsZXJzLCBzbyB0aGF0IHdlIGNhbiBzYWZlbHkgZ2V0IGJhY2sgdG8KKyAgICAgICAgb3VyIFZp
ZXdHZXN0dXJlQ29udHJvbGxlciBmcm9tIHRoZSBjYWxsYmFjay4KKworICAgICAgICBXaGVuIHRo
ZSBjYWxsYmFjayBmaXJlcywgaWYgaXQgc3VjY2VlZGVkLCBzZXQgbV9zaG91bGRSZW1vdmVTbmFw
c2hvdFdoZW5UYXJnZXRSZW5kZXJUcmVlU2l6ZUhpdCwKKyAgICAgICAgc28gdGhhdCB0aGUgY29t
bWl0ICh3aGljaCBpcyBhYm91dCB0byBvY2N1ciBpbW1lZGlhdGVseSBhZnRlciB0aGUgY2FsbGJh
Y2sgcmV0dXJucykgd2hpY2ggY2FsbHMKKyAgICAgICAgc2V0UmVuZGVyVHJlZVNpemUgd2lsbCAo
cGVyaGFwcykgcmVtb3ZlIHRoZSBzbmFwc2hvdC4KKworICAgICAgICBJZiBpdCBmYWlsZWQsIHdl
IHJlbW92ZSB0aGUgc25hcHNob3QgaW1tZWRpYXRlbHksIGFzIHRoaXMgdXN1YWxseSBoYXBwZW5z
IGlmIHRoZSBXZWIgcHJvY2VzcyBjcmFzaGVkLgorCiAyMDE0LTA3LTAxICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggU2VydmljZXNPdmVybGF5Q29udHJv
bGxlciB0ZWFyZG93bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCmluZGV4IDFkZWY3YTUuLjhkMWFhNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uLmgKQEAgLTIwOSw2ICsyMDksOSBAQCBwdWJsaWM6CiAKICAgICB1aW50NjRfdCB0cmFuc2Fj
dGlvbklEKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2FjdGlvbklEOyB9CiAgICAgdm9pZCBzZXRU
cmFuc2FjdGlvbklEKHVpbnQ2NF90IHRyYW5zYWN0aW9uSUQpIHsgbV90cmFuc2FjdGlvbklEID0g
dHJhbnNhY3Rpb25JRDsgfQorCisgICAgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgY2FsbGJhY2tJ
RHMoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrSURzOyB9CisgICAgdm9pZCBzZXRDYWxsYmFj
a0lEcyhWZWN0b3I8dWludDY0X3Q+IGNhbGxiYWNrSURzKSB7IG1fY2FsbGJhY2tJRHMgPSBzdGQ6
Om1vdmUoY2FsbGJhY2tJRHMpOyB9CiAgICAgCiBwcml2YXRlOgogICAgIFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBtX3Jvb3RMYXllcklEOwpAQCAtMjIwLDYgKzIyMyw4
IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3Jt
TGF5ZXJJRD4gbV92aWRlb0xheWVySURzUGVuZGluZ0Z1bGxzY3JlZW47CiAgICAgVmVjdG9yPFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4gbV9sYXllcklEc1dpdGhOZXds
eVVucmVhY2hhYmxlQmFja2luZ1N0b3JlOwogCisgICAgVmVjdG9yPHVpbnQ2NF90PiBtX2NhbGxi
YWNrSURzOworCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2NvbnRlbnRzU2l6ZTsKICAgICBXZWJD
b3JlOjpDb2xvciBtX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcjsKICAgICBkb3VibGUgbV9w
YWdlU2NhbGVGYWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1Jl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9S
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQppbmRleCA4ZjBmMTAwLi5jM2U0ZDViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24ubW0KQEAgLTQ3NSw2ICs0NzUsOCBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKICAg
ICBlbmNvZGVyIDw8IG1fc2NhbGVXYXNTZXRCeVVJUHJvY2VzczsKICAgICBlbmNvZGVyIDw8IG1f
YWxsb3dzVXNlclNjYWxpbmc7CisKKyAgICBlbmNvZGVyIDw8IG1fY2FsbGJhY2tJRHM7CiB9CiAK
IGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlY29kZShJUEM6OkFyZ3VtZW50RGVj
b2RlciYgZGVjb2RlciwgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mIHJlc3VsdCkKQEAgLTU0
OSw2ICs1NTEsOSBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZWNvZGUoSVBD
OjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFJlbW90ZUxheQogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0Lm1fYWxsb3dzVXNlclNjYWxpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2NhbGxiYWNrSURzKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IDg2ODVkNjcuLjAzOWYxMzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaApAQCAtMjgsNiAr
MjgsNyBAQAogI2RlZmluZSBEcmF3aW5nQXJlYVByb3h5X2gKIAogI2luY2x1ZGUgIkRyYXdpbmdB
cmVhSW5mby5oIgorI2luY2x1ZGUgIkdlbmVyaWNDYWxsYmFjay5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9JbnRSZWN0Lmg+CkBAIC04NSw5ICs4Niw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2hvd0RlYnVnSW5kaWNhdG9yKGJvb2wpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1No
b3dpbmdEZWJ1Z0luZGljYXRvcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0
dWFsIHVpbnQ2NF90IGxhc3RWaXNpYmxlVHJhbnNhY3Rpb25JRCgpIGNvbnN0IHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IHJldHVybiAwOyB9Ci0KICAgICB2aXJ0dWFsIHZvaWQgd2FpdEZvckRpZFVw
ZGF0ZVZpZXdTdGF0ZSgpIHsgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBpbnN0YWxsVHJhbnNh
Y3Rpb25DYWxsYmFjayhzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiBj
YWxsYmFja0Z1bmN0aW9uKSB7IGNhbGxiYWNrRnVuY3Rpb24oQ2FsbGJhY2tCYXNlOjpFcnJvcjo6
Tm9uZSk7IH0KIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IERyYXdpbmdBcmVhUHJveHkoRHJh
d2luZ0FyZWFUeXBlLCBXZWJQYWdlUHJveHkqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KaW5kZXggMWZiNWVk
YS4uOWYxZmUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KQEAgLTI4LDIxICsyOCwyMiBAQAogCiAjaWYg
UExBVEZPUk0oSU9TKQogCi0jaW1wb3J0ICJXZWJQYWdlR3JvdXAuaCIKICNpbXBvcnQgIlZpZXdH
ZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJWaWV3R2VzdHVyZUdlb21ldHJ5
Q29sbGVjdG9yTWVzc2FnZXMuaCIKICNpbXBvcnQgIlZpZXdTbmFwc2hvdFN0b3JlLmgiCiAjaW1w
b3J0ICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKKyNpbXBvcnQgIldlYlBhZ2VHcm91cC5oIgogI2lt
cG9ydCAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBv
cnQgIldlYlByb2Nlc3NQcm94eS5oIgotI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNp
bXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZVByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJ
U2NyZWVuRWRnZVBhbkdlc3R1cmVSZWNvZ25pemVyLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVZpZXdD
b250cm9sbGVyVHJhbnNpdGlvbmluZ19Qcml2YXRlLmg+CiAjaW1wb3J0IDxVSUtpdC9VSVdlYlRv
dWNoRXZlbnRzR2VzdHVyZVJlY29nbml6ZXIuaD4KICNpbXBvcnQgPFVJS2l0L19VSU5hdmlnYXRp
b25JbnRlcmFjdGl2ZVRyYW5zaXRpb24uaD4KICNpbXBvcnQgPFVJS2l0L19VSU5hdmlnYXRpb25Q
YXJhbGxheFRyYW5zaXRpb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvSU9TdXJmYWNlLmg+CisjaW1w
b3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
QEAgLTY0LDYgKzY1LDEyIEBAIEBpbXBsZW1lbnRhdGlvbiBXS1N3aXBlVHJhbnNpdGlvbkNvbnRy
b2xsZXIKIHN0YXRpYyBjb25zdCBmbG9hdCBzd2lwZVNuYXBzaG90UmVtb3ZhbFJlbmRlclRyZWVT
aXplVGFyZ2V0RnJhY3Rpb24gPSAwLjU7CiBzdGF0aWMgY29uc3Qgc3RkOjpjaHJvbm86OnNlY29u
ZHMgc3dpcGVTbmFwc2hvdFJlbW92YWxXYXRjaGRvZ0R1cmF0aW9uID0gM19zOwogCitzdGF0aWMg
SGFzaE1hcDx1aW50NjRfdCwgV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXIqPiYgYWxsVmll
d0dlc3R1cmVDb250cm9sbGVycygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hN
YXA8dWludDY0X3QsIFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyKj4+IHZpZXdHZXN0dXJl
Q29udHJvbGxlcnM7CisgICAgcmV0dXJuIHZpZXdHZXN0dXJlQ29udHJvbGxlcnMuZ2V0KCk7Cit9
CisKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpZXdHZXN0dXJlQ29udHJvbGxlcjooV2ViS2l0
OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXIqKWdlc3R1cmVDb250cm9sbGVyIGdlc3R1cmVSZWNvZ25p
emVyVmlldzooVUlWaWV3ICopZ2VzdHVyZVJlY29nbml6ZXJWaWV3CiB7CiAgICAgc2VsZiA9IFtz
dXBlciBpbml0XTsKQEAgLTEzMCwxMCArMTM3LDEyIEBAIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6
Vmlld0dlc3R1cmVDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQogICAgICwg
bV9zbmFwc2hvdFJlbW92YWxUYXJnZXRSZW5kZXJUcmVlU2l6ZSgwKQogICAgICwgbV9zaG91bGRS
ZW1vdmVTbmFwc2hvdFdoZW5UYXJnZXRSZW5kZXJUcmVlU2l6ZUhpdChmYWxzZSkKIHsKKyAgICBh
bGxWaWV3R2VzdHVyZUNvbnRyb2xsZXJzKCkuYWRkKHdlYlBhZ2VQcm94eS5wYWdlSUQoKSwgdGhp
cyk7CiB9CiAKIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6flZpZXdHZXN0dXJlQ29udHJvbGxlcigp
CiB7CisgICAgYWxsVmlld0dlc3R1cmVDb250cm9sbGVycygpLnJlbW92ZShtX3dlYlBhZ2VQcm94
eS5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjppbnN0YWxsU3dp
cGVIYW5kbGVyKFVJVmlldyAqZ2VzdHVyZVJlY29nbml6ZXJWaWV3LCBVSVZpZXcgKnN3aXBpbmdW
aWV3KQpAQCAtMjM4LDcgKzI0Nyw2IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRT
d2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwKICAgICBtX3Nu
YXBzaG90UmVtb3ZhbFRhcmdldFJlbmRlclRyZWVTaXplID0gMDsKICAgICBpZiAoVmlld1NuYXBz
aG90U3RvcmU6OnNoYXJlZCgpLmdldFNuYXBzaG90KHRhcmdldEl0ZW0sIHNuYXBzaG90KSkKICAg
ICAgICAgbV9zbmFwc2hvdFJlbW92YWxUYXJnZXRSZW5kZXJUcmVlU2l6ZSA9IHNuYXBzaG90LnJl
bmRlclRyZWVTaXplICogc3dpcGVTbmFwc2hvdFJlbW92YWxSZW5kZXJUcmVlU2l6ZVRhcmdldEZy
YWN0aW9uOwotICAgIG1fc25hcHNob3RSZW1vdmFsVGFyZ2V0VHJhbnNhY3Rpb25JRCA9IG1fd2Vi
UGFnZVByb3h5LmRyYXdpbmdBcmVhKCktPmxhc3RWaXNpYmxlVHJhbnNhY3Rpb25JRCgpICsgMTsK
IAogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcmVwbGFjZSB0aGUgY3VycmVudCBiYWNrLWZvcndh
cmQgaXRlbSdzIHNuYXBzaG90CiAgICAgLy8gbGlrZSB3ZSBub3JtYWxseSB3b3VsZCB3aGVuIGdv
aW5nIGJhY2sgb3IgZm9yd2FyZCwgYmVjYXVzZSB3ZSBhcmUKQEAgLTI0NywxMSArMjU1LDMwIEBA
IHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRTd2lwZUdlc3R1cmUoV2ViQmFja0Zvcndh
cmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwKICAgICBtX3dlYlBhZ2VQcm94eS5nb1RvQmFja0Zvcndh
cmRJdGVtKHRhcmdldEl0ZW0pOwogICAgIFZpZXdTbmFwc2hvdFN0b3JlOjpzaGFyZWQoKS5lbmFi
bGVTbmFwc2hvdHRpbmcoKTsKIAorICAgIHVpbnQ2NF90IHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5
LnBhZ2VJRCgpOworICAgIG1fd2ViUGFnZVByb3h5LmRyYXdpbmdBcmVhKCktPmluc3RhbGxUcmFu
c2FjdGlvbkNhbGxiYWNrKFtwYWdlSURdIChDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Cisg
ICAgICAgIGF1dG8gZ2VzdHVyZUNvbnRyb2xsZXJJdGVyID0gYWxsVmlld0dlc3R1cmVDb250cm9s
bGVycygpLmZpbmQocGFnZUlEKTsKKyAgICAgICAgaWYgKGdlc3R1cmVDb250cm9sbGVySXRlciA9
PSBhbGxWaWV3R2VzdHVyZUNvbnRyb2xsZXJzKCkuZW5kKCkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGdlc3R1cmVDb250cm9sbGVySXRlci0+dmFsdWUtPndpbGxDb21taXRQb3N0U3dp
cGVUcmFuc2l0aW9uTGF5ZXJUcmVlKGVycm9yID09IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUp
OworICAgIH0pOworCiAgICAgbV9zd2lwZVdhdGNoZG9nVGltZXIuc3RhcnRPbmVTaG90KHN3aXBl
U25hcHNob3RSZW1vdmFsV2F0Y2hkb2dEdXJhdGlvbi5jb3VudCgpKTsKK30KKwordm9pZCBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OndpbGxDb21taXRQb3N0U3dpcGVUcmFuc2l0aW9uTGF5ZXJUcmVl
KGJvb2wgc3VjY2Vzc2Z1bCkKK3sKKyAgICBpZiAobV9hY3RpdmVHZXN0dXJlVHlwZSAhPSBWaWV3
R2VzdHVyZVR5cGU6OlN3aXBlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXN1Y2Nlc3Nm
dWwpIHsKKyAgICAgICAgcmVtb3ZlU3dpcGVTbmFwc2hvdCgpOworICAgICAgICByZXR1cm47Cisg
ICAgfQogCiAgICAgbV9zaG91bGRSZW1vdmVTbmFwc2hvdFdoZW5UYXJnZXRSZW5kZXJUcmVlU2l6
ZUhpdCA9IHRydWU7CiB9Ci0gICAgCisKIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpzZXRS
ZW5kZXJUcmVlU2l6ZSh1aW50NjRfdCByZW5kZXJUcmVlU2l6ZSkKIHsKICAgICBpZiAobV9hY3Rp
dmVHZXN0dXJlVHlwZSAhPSBWaWV3R2VzdHVyZVR5cGU6OlN3aXBlKQpAQCAtMjYwLDEwICsyODcs
NyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6c2V0UmVuZGVyVHJlZVNpemUodWludDY0
X3QgcmVuZGVyVHJlZVNpemUpCiAgICAgaWYgKCFtX3Nob3VsZFJlbW92ZVNuYXBzaG90V2hlblRh
cmdldFJlbmRlclRyZWVTaXplSGl0KQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBEb24ndCBy
ZW1vdmUgdGhlIHN3aXBlIHNuYXBzaG90IHVudGlsIHdlIGdldCBhIGRyYXdpbmcgYXJlYSB0cmFu
c2FjdGlvbiBtb3JlIHJlY2VudCB0aGFuIHRoZSBuYXZpZ2F0aW9uLAotICAgIC8vIGFuZCB3ZSBo
aXQgdGhlIHJlbmRlciB0cmVlIHNpemUgdGhyZXNob2xkLiBUaGlzIGF2b2lkcyBwb3RlbnRpYWxs
eSByZW1vdmluZyB0aGUgc25hcHNob3QgZWFybHksCi0gICAgLy8gd2hlbiByZWNlaXZpbmcgY29t
bWl0cyBmcm9tIHRoZSBwcmV2aW91cyAocHJlLW5hdmlnYXRpb24pIHBhZ2UuCi0gICAgaWYgKCgh
bV9zbmFwc2hvdFJlbW92YWxUYXJnZXRSZW5kZXJUcmVlU2l6ZSB8fCByZW5kZXJUcmVlU2l6ZSA+
IG1fc25hcHNob3RSZW1vdmFsVGFyZ2V0UmVuZGVyVHJlZVNpemUpICYmIG1fd2ViUGFnZVByb3h5
LmRyYXdpbmdBcmVhKCktPmxhc3RWaXNpYmxlVHJhbnNhY3Rpb25JRCgpID49IG1fc25hcHNob3RS
ZW1vdmFsVGFyZ2V0VHJhbnNhY3Rpb25JRCkKKyAgICBpZiAoIW1fc25hcHNob3RSZW1vdmFsVGFy
Z2V0UmVuZGVyVHJlZVNpemUgfHwgcmVuZGVyVHJlZVNpemUgPiBtX3NuYXBzaG90UmVtb3ZhbFRh
cmdldFJlbmRlclRyZWVTaXplKQogICAgICAgICByZW1vdmVTd2lwZVNuYXBzaG90KCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmgKaW5kZXggZjI4MGVjMC4uMTQ2MDM1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5LmgKQEAgLTU2LDYgKzU2LDEwIEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHNpemVEaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGV2aWNlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkVXBkYXRlR2VvbWV0cnkoKSBvdmVycmlkZTsKKyAgICAKKyAgICAvLyBGb3Igbm93LCBhbGwg
Y2FsbGJhY2tzIGFyZSBjYWxsZWQgYmVmb3JlIGNvbW1pdHRpbmcgY2hhbmdlcywgYmVjYXVzZSB0
aGF0J3Mgd2hhdCB0aGUgb25seSBjbGllbnQgcmVxdWlyZXMuCisgICAgLy8gT25jZSB3ZSBoYXZl
IG90aGVyIGNhbGxiYWNrcywgaXQgbWF5IG1ha2Ugc2Vuc2UgdG8gaGF2ZSBhIGJlZm9yZS1jb21t
aXQvYWZ0ZXItY29tbWl0IG9wdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgaW5zdGFsbFRyYW5zYWN0
aW9uQ2FsbGJhY2soc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4pIG92
ZXJyaWRlOwogCiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHNjYWxlZEV4cG9zZWRSZWN0KCkgY29u
c3Q7CiAgICAgdm9pZCBzaG93RGVidWdJbmRpY2F0b3IoYm9vbCk7CkBAIC04Miw4ICs4Niw2IEBA
IHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBzZW5kVXBkYXRlR2VvbWV0cnkoKTsKIAotICAgIHZp
cnR1YWwgdWludDY0X3QgbGFzdFZpc2libGVUcmFuc2FjdGlvbklEKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9sYXN0VmlzaWJsZVRyYW5zYWN0aW9uSUQ7IH0KLQogICAgIFJlbW90ZUxheWVy
VHJlZUhvc3QgbV9yZW1vdGVMYXllclRyZWVIb3N0OwogICAgIGJvb2wgbV9pc1dhaXRpbmdGb3JE
aWRVcGRhdGVHZW9tZXRyeTsKIApAQCAtOTksNiArMTAxLDggQEAgcHJpdmF0ZToKICAgICB1aW50
NjRfdCBtX3BlbmRpbmdMYXllclRyZWVUcmFuc2FjdGlvbklEOwogICAgIHVpbnQ2NF90IG1fbGFz
dFZpc2libGVUcmFuc2FjdGlvbklEOwogICAgIHVpbnQ2NF90IG1fdHJhbnNhY3Rpb25JREZvclBl
bmRpbmdDQUNvbW1pdDsKKworICAgIENhbGxiYWNrTWFwIG1fY2FsbGJhY2tzOwogfTsKIAogRFJB
V0lOR19BUkVBX1BST1hZX1RZUEVfQ0FTVFMoUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eSwgdHlwZSgpID09IERyYXdpbmdBcmVhVHlwZVJlbW90ZUxheWVyVHJlZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHkubW0KaW5kZXggMDI0OWZiYS4uMjJlZjkwMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eS5tbQpAQCAtNjcsNiArNjcsNyBAQCBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5KFdlYlBhZ2VQcm94eSog
dwogCiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojp+UmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eSgpCiB7CisgICAgbV9jYWxsYmFja3MuaW52YWxpZGF0ZShDYWxsYmFja0Jh
c2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKICAgICBtX3dlYlBhZ2VQcm94eS0+cHJv
Y2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS0+cGFn
ZUlEKCkpOwogfQogCkBAIC0xMzEsNiArMTMyLDEyIEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eTo6Y29tbWl0TGF5ZXJUcmVlKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5z
CiAgICAgQVNTRVJUKGxheWVyVHJlZVRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSUQoKSA9PSBtX2xh
c3RWaXNpYmxlVHJhbnNhY3Rpb25JRCArIDEpOwogICAgIG1fdHJhbnNhY3Rpb25JREZvclBlbmRp
bmdDQUNvbW1pdCA9IGxheWVyVHJlZVRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSUQoKTsKIAorICAg
IGZvciAoYXV0byYgY2FsbGJhY2tJRCA6IGxheWVyVHJlZVRyYW5zYWN0aW9uLmNhbGxiYWNrSURz
KCkpIHsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8Vm9pZENhbGxi
YWNrPihjYWxsYmFja0lEKTsKKyAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICAgICAgY2Fs
bGJhY2stPnBlcmZvcm1DYWxsYmFjaygpOworICAgIH0KKwogICAgIGlmIChtX3JlbW90ZUxheWVy
VHJlZUhvc3QudXBkYXRlTGF5ZXJUcmVlKGxheWVyVHJlZVRyYW5zYWN0aW9uKSkKICAgICAgICAg
bV93ZWJQYWdlUHJveHktPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIobV9yZW1v
dGVMYXllclRyZWVIb3N0LnJvb3RMYXllcigpKTsKIApAQCAtMzMzLDQgKzM0MCwxOCBAQCB2b2lk
IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OndhaXRGb3JEaWRVcGRhdGVWaWV3U3Rh
dGUoKQogICAgIG1fd2ViUGFnZVByb3h5LT5wcm9jZXNzKCkuY29ubmVjdGlvbigpLT53YWl0Rm9y
QW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlPihtX3dlYlBhZ2VQcm94eS0+cGFnZUlEKCksIHZpZXdT
dGF0ZVVwZGF0ZVRpbWVvdXQsIEludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7
CiB9CiAKKyAgICB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6Omluc3RhbGxU
cmFuc2FjdGlvbkNhbGxiYWNrKHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJv
cik+IGNhbGxiYWNrRnVuY3Rpb24pCit7CisgICAgUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJh
Y2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShjYWxsYmFja0Z1bmN0aW9uKTsKKworICAgIGlmICgh
bV93ZWJQYWdlUHJveHktPmlzVmFsaWQoKSkgeworICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0
ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJh
Y2tJRCgpOworICAgIG1fY2FsbGJhY2tzLnB1dChjYWxsYmFjayk7CisgICAgbV93ZWJQYWdlUHJv
eHktPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6SW5zdGFsbFRyYW5zYWN0
aW9uQ2FsbGJhY2soY2FsbGJhY2tJRCksIG1fd2ViUGFnZVByb3h5LT5wYWdlSUQoKSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKaW5kZXggYzE2ZmYzMi4uZmY2NjZkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJv
bGxlci5oCkBAIC0xMDcsNiArMTA3LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2FuU3dpcGVJbkRp
cmVjdGlvbihTd2lwZURpcmVjdGlvbik7CiAgICAgdm9pZCBiZWdpblN3aXBlR2VzdHVyZShfVUlO
YXZpZ2F0aW9uSW50ZXJhY3RpdmVUcmFuc2l0aW9uQmFzZSAqLCBTd2lwZURpcmVjdGlvbik7CiAg
ICAgdm9pZCBlbmRTd2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRl
bSwgX1VJVmlld0NvbnRyb2xsZXJUcmFuc2l0aW9uQ29udGV4dCAqLCBib29sIGNhbmNlbGxlZCk7
CisgICAgdm9pZCB3aWxsQ29tbWl0UG9zdFN3aXBlVHJhbnNpdGlvbkxheWVyVHJlZShib29sKTsK
ICAgICB2b2lkIHNldFJlbmRlclRyZWVTaXplKHVpbnQ2NF90KTsKICNlbmRpZgogCkBAIC0xODQs
NyArMTg1LDYgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8VUlWaWV3PiBtX3RyYW5zaXRpb25D
b250YWluZXJWaWV3OwogICAgIFJldGFpblB0cjxXS1N3aXBlVHJhbnNpdGlvbkNvbnRyb2xsZXI+
IG1fc3dpcGVJbnRlcmFjdGl2ZVRyYW5zaXRpb25EZWxlZ2F0ZTsKICAgICB1aW50NjRfdCBtX3Nu
YXBzaG90UmVtb3ZhbFRhcmdldFJlbmRlclRyZWVTaXplOwotICAgIHVpbnQ2NF90IG1fc25hcHNo
b3RSZW1vdmFsVGFyZ2V0VHJhbnNhY3Rpb25JRDsKICAgICBib29sIG1fc2hvdWxkUmVtb3ZlU25h
cHNob3RXaGVuVGFyZ2V0UmVuZGVyVHJlZVNpemVIaXQ7CiAjZW5kaWYKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCmluZGV4IGRkMzA4OWIu
LmRiNTVmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYS5oCkBAIC0xNDMsNiArMTQzLDggQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9p
ZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBv
cmlnaW4pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBz
Y2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsgfQorCisgICAgdmlydHVhbCB2b2lk
IGluc3RhbGxUcmFuc2FjdGlvbkNhbGxiYWNrKHVpbnQ2NF90IGNhbGxiYWNrSUQpIHsgfQogI2Vu
ZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWEubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KaW5kZXggZDYwYzIzNy4uZDQyZjBiMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YS5tZXNzYWdlcy5pbgpAQCAtMzUsNSArMzUsNyBAQCBtZXNzYWdlcyAtPiBEcmF3aW5nQXJlYSBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgQ29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdl
YkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQogICAgIAogICAgIEFjY2VsZXJhdGVkQW5pbWF0aW9u
RGlkU3RhcnQodWludDY0X3QgbGF5ZXJJRCwgU3RyaW5nIGtleSwgZG91YmxlIHN0YXJ0VGltZSkK
KyAgICAKKyAgICBJbnN0YWxsVHJhbnNhY3Rpb25DYWxsYmFjayh1aW50NjRfdCBjYWxsYmFja0lE
KQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKaW5kZXggNjEz
N2JkOC4uMzMyYTNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaApAQCAt
NjYsNiArNjYsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRSb290Q29tcG9zaXRp
bmdMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoKCkgb3ZlcnJpZGU7CiAKKyAgICB2aXJ0
dWFsIHZvaWQgaW5zdGFsbFRyYW5zYWN0aW9uQ2FsbGJhY2sodWludDY0X3QgY2FsbGJhY2tJRCkg
b3ZlcnJpZGU7CisKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJl
c2hNb25pdG9yPiBjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQp
IG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbERlc3Ryb3lEaXNwbGF5UmVmcmVzaE1vbml0b3IoV2Vi
Q29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yKik7CiAKQEAgLTE1OSw2ICsxNjEsNyBAQCBwcml2
YXRlOgogICAgIEhhc2hTZXQ8UmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yKj4q
IG1fZGlzcGxheVJlZnJlc2hNb25pdG9yc1RvTm90aWZ5OwogCiAgICAgdWludDY0X3QgbV9jdXJy
ZW50VHJhbnNhY3Rpb25JRDsKKyAgICBWZWN0b3I8dWludDY0X3Q+IG1fcGVuZGluZ0NhbGxiYWNr
SURzOwogfTsKIAogRFJBV0lOR19BUkVBX1RZUEVfQ0FTVFMoUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEsIHR5cGUoKSA9PSBEcmF3aW5nQXJlYVR5cGVSZW1vdGVMYXllclRyZWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggZTA3ODEzMS4uZDdmZmYyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC0zMTgsNiArMzE4LDcgQEAg
dm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMoKQogICAgIC8vIEZJ
WE1FOiBNaW5pbWl6ZSB0aGVzZSB0cmFuc2FjdGlvbnMgaWYgbm90aGluZyBjaGFuZ2VkLgogICAg
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uIGxheWVyVHJhbnNhY3Rpb247CiAgICAgbGF5ZXJU
cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvbklEKHRha2VOZXh0VHJhbnNhY3Rpb25JRCgpKTsKKyAg
ICBsYXllclRyYW5zYWN0aW9uLnNldENhbGxiYWNrSURzKHN0ZDo6bW92ZShtX3BlbmRpbmdDYWxs
YmFja0lEcykpOwogICAgIG1fcmVtb3RlTGF5ZXJUcmVlQ29udGV4dC0+YnVpbGRUcmFuc2FjdGlv
bihsYXllclRyYW5zYWN0aW9uLCAqdG9HcmFwaGljc0xheWVyQ0FSZW1vdGUobV9yb290TGF5ZXIu
Z2V0KCkpLT5wbGF0Zm9ybUNBTGF5ZXIoKSk7CiAgICAgYmFja2luZ1N0b3JlQ29sbGVjdGlvbi53
aWxsQ29tbWl0TGF5ZXJUcmVlKGxheWVyVHJhbnNhY3Rpb24pOwogICAgIG1fd2ViUGFnZS53aWxs
Q29tbWl0TGF5ZXJUcmVlKGxheWVyVHJhbnNhY3Rpb24pOwpAQCAtNDI4LDQgKzQyOSwxMCBAQCB2
b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp2aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0
YXRlOjpGbGFncywgYm9vbCB3YW50cwogICAgIC8vIEZJWE1FOiBTaG91bGQgd2Ugc3VzcGVuZCBw
YWludGluZyB3aGlsZSBub3QgdmlzaWJsZSwgbGlrZSBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYT8gUHJvYmFibHkuCiB9CiAKK3ZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6Omlu
c3RhbGxUcmFuc2FjdGlvbkNhbGxiYWNrKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgbV9w
ZW5kaW5nQ2FsbGJhY2tJRHMuYXBwZW5kKGNhbGxiYWNrSUQpOworICAgIHNjaGVkdWxlQ29tcG9z
aXRpbmdMYXllckZsdXNoKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>
<flag name="review"
          id="258740"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234293</attachid>
            <date>2014-07-02 16:39:07 -0700</date>
            <delta_ts>2014-07-03 12:08:09 -0700</delta_ts>
            <desc>patch</desc>
            <filename>swipe-callback.diff</filename>
            <type>text/plain</type>
            <size>20881</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA1YTc3YTc0Li5mMDFkNzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAg
QEAKKzIwMTQtMDctMDIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW2lPU11bV0syXSBTb21ldGltZXMgdGhlIHN3aXBlIHNuYXBzaG90IHN0YXlzIHVw
IHRvbyBsb25nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzQ1MDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE3NDk2ODAzPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBhIHRyYW5zYWN0
aW9uIGNhbGxiYWNrIG1lY2hhbmlzbS4KKyAgICAgICAgVGhlIFVJIHByb2Nlc3MgY2FuIHJlZ2lz
dGVyIGEgY2FsbGJhY2sgYXQgYW55IHBvaW50LCBnZW5lcmFsbHkgaW1tZWRpYXRlbHkgYWZ0ZXIg
c2VuZGluZyBhIG1lc3NhZ2UgdG8gdGhlIFdlYiBwcm9jZXNzLgorICAgICAgICBJdCB3aWxsIHRo
ZW4gc2VuZCBhbm90aGVyIG1lc3NhZ2UgKGluLW9yZGVyKSB3aXRoIHRoZSBjYWxsYmFjayBJRCB0
byB0aGUgV2ViIHByb2Nlc3MsIHdoaWNoIHdpbGwgcHV0IGl0IGludG8gdGhlIG5leHQgdHJhbnNh
Y3Rpb24KKyAgICAgICAgKHNjaGVkdWxpbmcgYSBuZXcgb25lIGlmIG5lZWRlZCkuIFdoZW4gdGhl
IHRyYW5zYWN0aW9uIGNvbWVzIGJhY2sgdG8gdGhlIFVJIHByb2Nlc3MsIHRoZSBjYWxsYmFja3Mg
YXJlIHBlcmZvcm1lZC4KKyAgICAgICAgVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGNhbGxiYWNrIGZp
cmVzIGFsb25nc2lkZSBhIGNvbW1pdCB0aGF0IGluY2x1ZGVzIHRoZSByZXN1bHRzIG9mIHdoYXRl
dmVyIG1lc3NhZ2VzIHdlcmUgc2VudCBiZWZvcmUgaXQgd2FzIHJlZ2lzdGVyZWQuCisgICAgICAg
IEZvciBub3csIGFsbCBjYWxsYmFja3MgYXJlIGZpcmVkIGp1c3QgYmVmb3JlIGNvbW1pdHRpbmcg
bGF5ZXIgY2hhbmdlcywgYnV0IGl0J3MgcG9zc2libGUgZnV0dXJlIHBhdGNoZXMgd2lsbCB3YW50
IHBvc3QtY29tbWl0IGNhbGxiYWNrcy4KKyAgICAgICAgCisgICAgICAgIE1ha2UgdXNlIG9mIHRo
aXMgdG8gcmVtb3ZlIHRoZSBWaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1Mgc25hcHNob3RzIGF0IHRo
ZSByaWdodCB0aW1lLgorCisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6
Y2FsbGJhY2tJRHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bjo6c2V0Q2FsbGJhY2tJRHMpOgorICAgICAgICAqIFNoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bjo6ZGVjb2RlKToKKyAgICAgICAgQWRkIGEgdmVjdG9yIG9mIGNhbGxiYWNrIElEcyB0byB0aGUg
dHJhbnNhY3Rpb247IGVuY29kZSBhbmQgZGVjb2RlIGFzIGFwcHJvcHJpYXRlLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2lu
Z0FyZWFQcm94eTo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyk6CisgICAgICAgIChXZWJL
aXQ6OkRyYXdpbmdBcmVhUHJveHk6Omxhc3RWaXNpYmxlVHJhbnNhY3Rpb25JRCk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
Ojp+UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmNvbW1pdExheWVyVHJlZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmRpc3BhdGNoQWZ0ZXJF
bnN1cmluZ0RyYXdpbmcpOgorICAgICAgICBBZGQgZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2lu
Zywgd2hpY2ggdGFrZXMgYSBmdW5jdGlvbi4KKyAgICAgICAgV2hlbiBhIGNhbGxiYWNrIGlzIGFk
ZGVkLCB3ZSBzZW5kIHRoZSBjYWxsYmFjayBJRCB0byB0aGUgV2ViIHByb2Nlc3MgdmlhIHRoZSBB
ZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQgbWVzc2FnZS4KKyAgICAgICAgUGVyZm9ybSBjYWxsYmFj
a3MgbGlzdGVkIGluIHRoZSBpbmNvbWluZyB0cmFuc2FjdGlvbidzIHZlY3RvciBvZiBjYWxsYmFj
ayBJRHMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaDoKKyAg
ICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OmFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
Zmx1c2hMYXllcnMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YTo6YWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKToKKyAgICAgICAgS2VlcCB0cmFjayBvZiB0aGUg
cGVuZGluZyBjYWxsYmFjayBJRHMgb24gdGhlIGRyYXdpbmcgYXJlYSwgYW5kIG1vdmUgdGhlbSBp
bnRvIHRoZSB0cmFuc2FjdGlvbi4KKyAgICAgICAgV2Ugc2NoZWR1bGUgYSBmbHVzaCB3aGVuIGlu
c3RhbGxpbmcgYSB0cmFuc2FjdGlvbiBjYWxsYmFjayBvbiB0aGUgcHJlbWlzZSB0aGF0CisgICAg
ICAgIHNvbWV0aW1lcyB0aGUgYWN0aW9uIChnb1RvQmFja0ZvcndhcmRMaXN0SXRlbSBpbiB0aGUg
c3dpcGUgY2FzZSkgbWlnaHQgaGF2ZSBhbHJlYWR5IG9jY3VycmVkCisgICAgICAgIGFuZCBiZWVu
IGNvbW1pdHRlZCBieSB0aGUgdGltZSB0aGUgV2ViIHByb2Nlc3MgcmVjZWl2ZXMgQWRkVHJhbnNh
Y3Rpb25DYWxsYmFja0lELCBzbyB3ZSBuZWVkCisgICAgICAgIHRvIGNhdXNlIGFub3RoZXIgY29t
bWl0IHRvIHNlbmQgdGhlIGNhbGxiYWNrcyBhY3Jvc3MuIElmIHNhaWQgY29tbWl0IGlzIHN0aWxs
IHBlbmRpbmcsIHRoaXMgaXMgYSBuby1vcC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvVmll
d0dlc3R1cmVDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoYWxsVmlld0dlc3R1cmVDb250cm9s
bGVycyk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Vmlld0dlc3R1
cmVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjp+
Vmlld0dlc3R1cmVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250
cm9sbGVyOjplbmRTd2lwZUdlc3R1cmUpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNv
bnRyb2xsZXI6OndpbGxDb21taXRQb3N0U3dpcGVUcmFuc2l0aW9uTGF5ZXJUcmVlKToKKyAgICAg
ICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpzZXRSZW5kZXJUcmVlU2l6ZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaDoKKyAgICAgICAg
S2VlcCBhIHNpZGUtbWFwIG9mIHBhZ2UgSURzIHRvIFZpZXdHZXN0dXJlQ29udHJvbGxlcnMsIHNv
IHRoYXQgd2UgY2FuIHNhZmVseSBnZXQgYmFjayB0bworICAgICAgICBvdXIgVmlld0dlc3R1cmVD
b250cm9sbGVyIGZyb20gdGhlIGNhbGxiYWNrLgorCisgICAgICAgIFdoZW4gdGhlIGNhbGxiYWNr
IGZpcmVzLCBpZiBpdCBzdWNjZWVkZWQsIHNldCBtX3Nob3VsZFJlbW92ZVNuYXBzaG90V2hlblRh
cmdldFJlbmRlclRyZWVTaXplSGl0LAorICAgICAgICBzbyB0aGF0IHRoZSBjb21taXQgKHdoaWNo
IGlzIGFib3V0IHRvIG9jY3VyIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBjYWxsYmFjayByZXR1cm5z
KSB3aGljaCBjYWxscworICAgICAgICBzZXRSZW5kZXJUcmVlU2l6ZSB3aWxsIChwZXJoYXBzKSBy
ZW1vdmUgdGhlIHNuYXBzaG90LgorCisgICAgICAgIElmIGl0IGZhaWxlZCwgd2UgcmVtb3ZlIHRo
ZSBzbmFwc2hvdCBpbW1lZGlhdGVseSwgYXMgdGhpcyB1c3VhbGx5IGhhcHBlbnMgaWYgdGhlIFdl
YiBwcm9jZXNzIGNyYXNoZWQuCisKIDIwMTQtMDctMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgLVtXS1dlYlZpZXcgX3Nlc3Npb25TdGF0ZURh
dGFdIGFuZCAtW1dLV2ViVmlldyBfcmVzdG9yZUZyb21TZXNzaW9uU3RhdGVEYXRhOl0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24uaAppbmRleCAxZGVmN2E1Li41NWY4MDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCkBAIC0yMDksNiArMjA5
LDEwIEBAIHB1YmxpYzoKIAogICAgIHVpbnQ2NF90IHRyYW5zYWN0aW9uSUQoKSBjb25zdCB7IHJl
dHVybiBtX3RyYW5zYWN0aW9uSUQ7IH0KICAgICB2b2lkIHNldFRyYW5zYWN0aW9uSUQodWludDY0
X3QgdHJhbnNhY3Rpb25JRCkgeyBtX3RyYW5zYWN0aW9uSUQgPSB0cmFuc2FjdGlvbklEOyB9CisK
KyAgICB0eXBlZGVmIHVpbnQ2NF90IFRyYW5zYWN0aW9uQ2FsbGJhY2tJRDsKKyAgICBjb25zdCBW
ZWN0b3I8VHJhbnNhY3Rpb25DYWxsYmFja0lEPiYgY2FsbGJhY2tJRHMoKSBjb25zdCB7IHJldHVy
biBtX2NhbGxiYWNrSURzOyB9CisgICAgdm9pZCBzZXRDYWxsYmFja0lEcyhWZWN0b3I8VHJhbnNh
Y3Rpb25DYWxsYmFja0lEPiBjYWxsYmFja0lEcykgeyBtX2NhbGxiYWNrSURzID0gc3RkOjptb3Zl
KGNhbGxiYWNrSURzKTsgfQogICAgIAogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyOjpQbGF0Zm9ybUxheWVySUQgbV9yb290TGF5ZXJJRDsKQEAgLTIyMCw2ICsyMjQsOCBAQCBw
cml2YXRlOgogICAgIFZlY3RvcjxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVy
SUQ+IG1fdmlkZW9MYXllcklEc1BlbmRpbmdGdWxsc2NyZWVuOwogICAgIFZlY3RvcjxXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+IG1fbGF5ZXJJRHNXaXRoTmV3bHlVbnJl
YWNoYWJsZUJhY2tpbmdTdG9yZTsKIAorICAgIFZlY3RvcjxUcmFuc2FjdGlvbkNhbGxiYWNrSUQ+
IG1fY2FsbGJhY2tJRHM7CisKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fY29udGVudHNTaXplOwog
ICAgIFdlYkNvcmU6OkNvbG9yIG1fcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yOwogICAgIGRv
dWJsZSBtX3BhZ2VTY2FsZUZhY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCmluZGV4IDhmMGYxMDAuLmMzZTRk
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbi5tbQpAQCAtNDc1LDYgKzQ3NSw4IEBAIHZvaWQgUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIAogICAgIGVuY29kZXIgPDwgbV9zY2FsZVdhc1NldEJ5VUlQcm9jZXNzOwogICAgIGVuY29k
ZXIgPDwgbV9hbGxvd3NVc2VyU2NhbGluZzsKKworICAgIGVuY29kZXIgPDwgbV9jYWxsYmFja0lE
czsKIH0KIAogYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVjb2RlKElQQzo6QXJn
dW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYgcmVzdWx0
KQpAQCAtNTQ5LDYgKzU1MSw5IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRl
Y29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVtb3RlTGF5CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQubV9hbGxvd3NVc2VyU2NhbGluZykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fY2FsbGJhY2tJRHMp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKaW5kZXggODY4NWQ2Ny4uZWNi
YmI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCkBA
IC0yOCw2ICsyOCw3IEBACiAjZGVmaW5lIERyYXdpbmdBcmVhUHJveHlfaAogCiAjaW5jbHVkZSAi
RHJhd2luZ0FyZWFJbmZvLmgiCisjaW5jbHVkZSAiR2VuZXJpY0NhbGxiYWNrLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KQEAgLTg1LDkgKzg2LDkgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBzaG93RGVidWdJbmRpY2F0b3IoYm9vbCkgeyB9CiAgICAgdmlydHVhbCBi
b29sIGlzU2hvd2luZ0RlYnVnSW5kaWNhdG9yKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAot
ICAgIHZpcnR1YWwgdWludDY0X3QgbGFzdFZpc2libGVUcmFuc2FjdGlvbklEKCkgY29uc3QgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KLQogICAgIHZpcnR1YWwgdm9pZCB3YWl0
Rm9yRGlkVXBkYXRlVmlld1N0YXRlKCkgeyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6
OkVycm9yKT4pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogcHJvdGVjdGVkOgogICAgIGV4
cGxpY2l0IERyYXdpbmdBcmVhUHJveHkoRHJhd2luZ0FyZWFUeXBlLCBXZWJQYWdlUHJveHkqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250
cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXJJT1MubW0KaW5kZXggMWZiNWVkYS4uYzg4Nzk0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0K
QEAgLTI4LDIxICsyOCwyMiBAQAogCiAjaWYgUExBVEZPUk0oSU9TKQogCi0jaW1wb3J0ICJXZWJQ
YWdlR3JvdXAuaCIKICNpbXBvcnQgIlZpZXdHZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VzLmgiCiAj
aW1wb3J0ICJWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yTWVzc2FnZXMuaCIKICNpbXBvcnQg
IlZpZXdTbmFwc2hvdFN0b3JlLmgiCiAjaW1wb3J0ICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKKyNp
bXBvcnQgIldlYlBhZ2VHcm91cC5oIgogI2ltcG9ydCAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW1w
b3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgotI2ltcG9y
dCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZVBy
aXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJU2NyZWVuRWRnZVBhbkdlc3R1cmVSZWNvZ25pemVy
Lmg+CiAjaW1wb3J0IDxVSUtpdC9VSVZpZXdDb250cm9sbGVyVHJhbnNpdGlvbmluZ19Qcml2YXRl
Lmg+CiAjaW1wb3J0IDxVSUtpdC9VSVdlYlRvdWNoRXZlbnRzR2VzdHVyZVJlY29nbml6ZXIuaD4K
ICNpbXBvcnQgPFVJS2l0L19VSU5hdmlnYXRpb25JbnRlcmFjdGl2ZVRyYW5zaXRpb24uaD4KICNp
bXBvcnQgPFVJS2l0L19VSU5hdmlnYXRpb25QYXJhbGxheFRyYW5zaXRpb24uaD4KKyNpbXBvcnQg
PFdlYkNvcmUvSU9TdXJmYWNlLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTY0LDYgKzY1LDEyIEBAIEBpbXBsZW1lbnRh
dGlvbiBXS1N3aXBlVHJhbnNpdGlvbkNvbnRyb2xsZXIKIHN0YXRpYyBjb25zdCBmbG9hdCBzd2lw
ZVNuYXBzaG90UmVtb3ZhbFJlbmRlclRyZWVTaXplVGFyZ2V0RnJhY3Rpb24gPSAwLjU7CiBzdGF0
aWMgY29uc3Qgc3RkOjpjaHJvbm86OnNlY29uZHMgc3dpcGVTbmFwc2hvdFJlbW92YWxXYXRjaGRv
Z0R1cmF0aW9uID0gM19zOwogCitzdGF0aWMgSGFzaE1hcDx1aW50NjRfdCwgV2ViS2l0OjpWaWV3
R2VzdHVyZUNvbnRyb2xsZXIqPiYgYWxsVmlld0dlc3R1cmVDb250cm9sbGVycygpCit7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8dWludDY0X3QsIFdlYktpdDo6Vmlld0dlc3R1
cmVDb250cm9sbGVyKj4+IHZpZXdHZXN0dXJlQ29udHJvbGxlcnM7CisgICAgcmV0dXJuIHZpZXdH
ZXN0dXJlQ29udHJvbGxlcnMuZ2V0KCk7Cit9CisKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZp
ZXdHZXN0dXJlQ29udHJvbGxlcjooV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXIqKWdlc3R1
cmVDb250cm9sbGVyIGdlc3R1cmVSZWNvZ25pemVyVmlldzooVUlWaWV3ICopZ2VzdHVyZVJlY29n
bml6ZXJWaWV3CiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKQEAgLTEzMCwxMCArMTM3LDEy
IEBAIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Vmlld0dlc3R1cmVDb250cm9sbGVyKFdlYlBhZ2VQ
cm94eSYgd2ViUGFnZVByb3h5KQogICAgICwgbV9zbmFwc2hvdFJlbW92YWxUYXJnZXRSZW5kZXJU
cmVlU2l6ZSgwKQogICAgICwgbV9zaG91bGRSZW1vdmVTbmFwc2hvdFdoZW5UYXJnZXRSZW5kZXJU
cmVlU2l6ZUhpdChmYWxzZSkKIHsKKyAgICBhbGxWaWV3R2VzdHVyZUNvbnRyb2xsZXJzKCkuYWRk
KHdlYlBhZ2VQcm94eS5wYWdlSUQoKSwgdGhpcyk7CiB9CiAKIFZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6flZpZXdHZXN0dXJlQ29udHJvbGxlcigpCiB7CisgICAgYWxsVmlld0dlc3R1cmVDb250cm9s
bGVycygpLnJlbW92ZShtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgVmlld0dl
c3R1cmVDb250cm9sbGVyOjppbnN0YWxsU3dpcGVIYW5kbGVyKFVJVmlldyAqZ2VzdHVyZVJlY29n
bml6ZXJWaWV3LCBVSVZpZXcgKnN3aXBpbmdWaWV3KQpAQCAtMjM4LDcgKzI0Nyw2IEBAIHZvaWQg
Vmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRTd2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSogdGFyZ2V0SXRlbSwKICAgICBtX3NuYXBzaG90UmVtb3ZhbFRhcmdldFJlbmRlclRyZWVT
aXplID0gMDsKICAgICBpZiAoVmlld1NuYXBzaG90U3RvcmU6OnNoYXJlZCgpLmdldFNuYXBzaG90
KHRhcmdldEl0ZW0sIHNuYXBzaG90KSkKICAgICAgICAgbV9zbmFwc2hvdFJlbW92YWxUYXJnZXRS
ZW5kZXJUcmVlU2l6ZSA9IHNuYXBzaG90LnJlbmRlclRyZWVTaXplICogc3dpcGVTbmFwc2hvdFJl
bW92YWxSZW5kZXJUcmVlU2l6ZVRhcmdldEZyYWN0aW9uOwotICAgIG1fc25hcHNob3RSZW1vdmFs
VGFyZ2V0VHJhbnNhY3Rpb25JRCA9IG1fd2ViUGFnZVByb3h5LmRyYXdpbmdBcmVhKCktPmxhc3RW
aXNpYmxlVHJhbnNhY3Rpb25JRCgpICsgMTsKIAogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcmVw
bGFjZSB0aGUgY3VycmVudCBiYWNrLWZvcndhcmQgaXRlbSdzIHNuYXBzaG90CiAgICAgLy8gbGlr
ZSB3ZSBub3JtYWxseSB3b3VsZCB3aGVuIGdvaW5nIGJhY2sgb3IgZm9yd2FyZCwgYmVjYXVzZSB3
ZSBhcmUKQEAgLTI0NywxMSArMjU1LDMwIEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpl
bmRTd2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwKICAgICBt
X3dlYlBhZ2VQcm94eS5nb1RvQmFja0ZvcndhcmRJdGVtKHRhcmdldEl0ZW0pOwogICAgIFZpZXdT
bmFwc2hvdFN0b3JlOjpzaGFyZWQoKS5lbmFibGVTbmFwc2hvdHRpbmcoKTsKIAorICAgIHVpbnQ2
NF90IHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpOworICAgIG1fd2ViUGFnZVByb3h5
LmRyYXdpbmdBcmVhKCktPmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoW3BhZ2VJRF0gKENh
bGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgYXV0byBnZXN0dXJlQ29udHJvbGxl
ckl0ZXIgPSBhbGxWaWV3R2VzdHVyZUNvbnRyb2xsZXJzKCkuZmluZChwYWdlSUQpOworICAgICAg
ICBpZiAoZ2VzdHVyZUNvbnRyb2xsZXJJdGVyID09IGFsbFZpZXdHZXN0dXJlQ29udHJvbGxlcnMo
KS5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZ2VzdHVyZUNvbnRyb2xsZXJJ
dGVyLT52YWx1ZS0+d2lsbENvbW1pdFBvc3RTd2lwZVRyYW5zaXRpb25MYXllclRyZWUoZXJyb3Ig
PT0gQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSk7CisgICAgfSk7CisKICAgICBtX3N3aXBlV2F0
Y2hkb2dUaW1lci5zdGFydE9uZVNob3Qoc3dpcGVTbmFwc2hvdFJlbW92YWxXYXRjaGRvZ0R1cmF0
aW9uLmNvdW50KCkpOworfQorCit2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6d2lsbENvbW1p
dFBvc3RTd2lwZVRyYW5zaXRpb25MYXllclRyZWUoYm9vbCBzdWNjZXNzZnVsKQoreworICAgIGlm
IChtX2FjdGl2ZUdlc3R1cmVUeXBlICE9IFZpZXdHZXN0dXJlVHlwZTo6U3dpcGUpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmICghc3VjY2Vzc2Z1bCkgeworICAgICAgICByZW1vdmVTd2lwZVNu
YXBzaG90KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBtX3Nob3VsZFJlbW92ZVNu
YXBzaG90V2hlblRhcmdldFJlbmRlclRyZWVTaXplSGl0ID0gdHJ1ZTsKIH0KLSAgICAKKwogdm9p
ZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OnNldFJlbmRlclRyZWVTaXplKHVpbnQ2NF90IHJlbmRl
clRyZWVTaXplKQogewogICAgIGlmIChtX2FjdGl2ZUdlc3R1cmVUeXBlICE9IFZpZXdHZXN0dXJl
VHlwZTo6U3dpcGUpCkBAIC0yNjAsMTAgKzI4Nyw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9s
bGVyOjpzZXRSZW5kZXJUcmVlU2l6ZSh1aW50NjRfdCByZW5kZXJUcmVlU2l6ZSkKICAgICBpZiAo
IW1fc2hvdWxkUmVtb3ZlU25hcHNob3RXaGVuVGFyZ2V0UmVuZGVyVHJlZVNpemVIaXQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIC8vIERvbid0IHJlbW92ZSB0aGUgc3dpcGUgc25hcHNob3QgdW50
aWwgd2UgZ2V0IGEgZHJhd2luZyBhcmVhIHRyYW5zYWN0aW9uIG1vcmUgcmVjZW50IHRoYW4gdGhl
IG5hdmlnYXRpb24sCi0gICAgLy8gYW5kIHdlIGhpdCB0aGUgcmVuZGVyIHRyZWUgc2l6ZSB0aHJl
c2hvbGQuIFRoaXMgYXZvaWRzIHBvdGVudGlhbGx5IHJlbW92aW5nIHRoZSBzbmFwc2hvdCBlYXJs
eSwKLSAgICAvLyB3aGVuIHJlY2VpdmluZyBjb21taXRzIGZyb20gdGhlIHByZXZpb3VzIChwcmUt
bmF2aWdhdGlvbikgcGFnZS4KLSAgICBpZiAoKCFtX3NuYXBzaG90UmVtb3ZhbFRhcmdldFJlbmRl
clRyZWVTaXplIHx8IHJlbmRlclRyZWVTaXplID4gbV9zbmFwc2hvdFJlbW92YWxUYXJnZXRSZW5k
ZXJUcmVlU2l6ZSkgJiYgbV93ZWJQYWdlUHJveHkuZHJhd2luZ0FyZWEoKS0+bGFzdFZpc2libGVU
cmFuc2FjdGlvbklEKCkgPj0gbV9zbmFwc2hvdFJlbW92YWxUYXJnZXRUcmFuc2FjdGlvbklEKQor
ICAgIGlmICghbV9zbmFwc2hvdFJlbW92YWxUYXJnZXRSZW5kZXJUcmVlU2l6ZSB8fCByZW5kZXJU
cmVlU2l6ZSA+IG1fc25hcHNob3RSZW1vdmFsVGFyZ2V0UmVuZGVyVHJlZVNpemUpCiAgICAgICAg
IHJlbW92ZVN3aXBlU25hcHNob3QoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaApp
bmRleCBmMjgwZWMwLi4zYmMxYWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaApAQCAt
NTYsNiArNTYsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2l6ZURpZENoYW5nZSgp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VTY2FsZUZhY3RvckRpZENoYW5nZSgp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVHZW9tZXRyeSgpIG92ZXJyaWRl
OworICAgIAorICAgIC8vIEZvciBub3csIGFsbCBjYWxsYmFja3MgYXJlIGNhbGxlZCBiZWZvcmUg
Y29tbWl0dGluZyBjaGFuZ2VzLCBiZWNhdXNlIHRoYXQncyB3aGF0IHRoZSBvbmx5IGNsaWVudCBy
ZXF1aXJlcy4KKyAgICAvLyBPbmNlIHdlIGhhdmUgb3RoZXIgY2FsbGJhY2tzLCBpdCBtYXkgbWFr
ZSBzZW5zZSB0byBoYXZlIGEgYmVmb3JlLWNvbW1pdC9hZnRlci1jb21taXQgb3B0aW9uLgorICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKHN0ZDo6ZnVuY3Rpb248
dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+KSBvdmVycmlkZTsKIAogICAgIFdlYkNvcmU6OkZs
b2F0UmVjdCBzY2FsZWRFeHBvc2VkUmVjdCgpIGNvbnN0OwogICAgIHZvaWQgc2hvd0RlYnVnSW5k
aWNhdG9yKGJvb2wpOwpAQCAtODIsOCArODYsNiBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQg
c2VuZFVwZGF0ZUdlb21ldHJ5KCk7CiAKLSAgICB2aXJ0dWFsIHVpbnQ2NF90IGxhc3RWaXNpYmxl
VHJhbnNhY3Rpb25JRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGFzdFZpc2libGVUcmFu
c2FjdGlvbklEOyB9Ci0KICAgICBSZW1vdGVMYXllclRyZWVIb3N0IG1fcmVtb3RlTGF5ZXJUcmVl
SG9zdDsKICAgICBib29sIG1faXNXYWl0aW5nRm9yRGlkVXBkYXRlR2VvbWV0cnk7CiAKQEAgLTk5
LDYgKzEwMSw4IEBAIHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9wZW5kaW5nTGF5ZXJUcmVlVHJh
bnNhY3Rpb25JRDsKICAgICB1aW50NjRfdCBtX2xhc3RWaXNpYmxlVHJhbnNhY3Rpb25JRDsKICAg
ICB1aW50NjRfdCBtX3RyYW5zYWN0aW9uSURGb3JQZW5kaW5nQ0FDb21taXQ7CisKKyAgICBDYWxs
YmFja01hcCBtX2NhbGxiYWNrczsKIH07CiAKIERSQVdJTkdfQVJFQV9QUk9YWV9UWVBFX0NBU1RT
KFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHksIHR5cGUoKSA9PSBEcmF3aW5nQXJlYVR5
cGVSZW1vdGVMYXllclRyZWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCmluZGV4IDAy
NDlmYmEuLmZmYzcxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KQEAgLTY3LDYg
KzY3LDcgQEAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6UmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eShXZWJQYWdlUHJveHkqIHcKIAogUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eTo6flJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkoKQogeworICAgIG1f
Y2FsbGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlk
YXRlZCk7CiAgICAgbV93ZWJQYWdlUHJveHktPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHktPnBhZ2VJRCgpKTsKIH0KIApAQCAtMTMxLDYgKzEz
MiwxMiBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OmNvbW1pdExheWVy
VHJlZShjb25zdCBSZW1vdGVMYXllclRyZWVUcmFucwogICAgIEFTU0VSVChsYXllclRyZWVUcmFu
c2FjdGlvbi50cmFuc2FjdGlvbklEKCkgPT0gbV9sYXN0VmlzaWJsZVRyYW5zYWN0aW9uSUQgKyAx
KTsKICAgICBtX3RyYW5zYWN0aW9uSURGb3JQZW5kaW5nQ0FDb21taXQgPSBsYXllclRyZWVUcmFu
c2FjdGlvbi50cmFuc2FjdGlvbklEKCk7CiAKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrSUQgOiBs
YXllclRyZWVUcmFuc2FjdGlvbi5jYWxsYmFja0lEcygpKSB7CisgICAgICAgIGF1dG8gY2FsbGJh
Y2sgPSBtX2NhbGxiYWNrcy50YWtlPFZvaWRDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CisgICAgICAg
IGlmIChjYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2soKTsK
KyAgICB9CisKICAgICBpZiAobV9yZW1vdGVMYXllclRyZWVIb3N0LnVwZGF0ZUxheWVyVHJlZShs
YXllclRyZWVUcmFuc2FjdGlvbikpCiAgICAgICAgIG1fd2ViUGFnZVByb3h5LT5zZXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nUm9vdExheWVyKG1fcmVtb3RlTGF5ZXJUcmVlSG9zdC5yb290TGF5ZXIo
KSk7CiAKQEAgLTMzMyw0ICszNDAsMTYgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlVmlld1N0YXRlKCkKICAgICBtX3dlYlBhZ2VQcm94eS0+
cHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVz
c2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZT4o
bV93ZWJQYWdlUHJveHktPnBhZ2VJRCgpLCB2aWV3U3RhdGVVcGRhdGVUaW1lb3V0LCBJbnRlcnJ1
cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOwogfQogCit2b2lkIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHk6OmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoc3RkOjpmdW5j
dGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3sKKyAg
ICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKGNh
bGxiYWNrRnVuY3Rpb24pOworCisgICAgaWYgKCFtX3dlYlBhZ2VQcm94eS0+aXNWYWxpZCgpKSB7
CisgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJ
bnZhbGlkYXRlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3dlYlBhZ2VQcm94
eS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjpBZGRUcmFuc2FjdGlvbkNh
bGxiYWNrSUQobV9jYWxsYmFja3MucHV0KHN0ZDo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbnVs
bHB0cikpLCBtX3dlYlBhZ2VQcm94eS0+cGFnZUlEKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1
cmVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJl
Q29udHJvbGxlci5oCmluZGV4IGMxNmZmMzIuLmZmNjY2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtMTA3LDYg
KzEwNyw3IEBAIHB1YmxpYzoKICAgICBib29sIGNhblN3aXBlSW5EaXJlY3Rpb24oU3dpcGVEaXJl
Y3Rpb24pOwogICAgIHZvaWQgYmVnaW5Td2lwZUdlc3R1cmUoX1VJTmF2aWdhdGlvbkludGVyYWN0
aXZlVHJhbnNpdGlvbkJhc2UgKiwgU3dpcGVEaXJlY3Rpb24pOwogICAgIHZvaWQgZW5kU3dpcGVH
ZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0sIF9VSVZpZXdDb250cm9s
bGVyVHJhbnNpdGlvbkNvbnRleHQgKiwgYm9vbCBjYW5jZWxsZWQpOworICAgIHZvaWQgd2lsbENv
bW1pdFBvc3RTd2lwZVRyYW5zaXRpb25MYXllclRyZWUoYm9vbCk7CiAgICAgdm9pZCBzZXRSZW5k
ZXJUcmVlU2l6ZSh1aW50NjRfdCk7CiAjZW5kaWYKIApAQCAtMTg0LDcgKzE4NSw2IEBAIHByaXZh
dGU6CiAgICAgUmV0YWluUHRyPFVJVmlldz4gbV90cmFuc2l0aW9uQ29udGFpbmVyVmlldzsKICAg
ICBSZXRhaW5QdHI8V0tTd2lwZVRyYW5zaXRpb25Db250cm9sbGVyPiBtX3N3aXBlSW50ZXJhY3Rp
dmVUcmFuc2l0aW9uRGVsZWdhdGU7CiAgICAgdWludDY0X3QgbV9zbmFwc2hvdFJlbW92YWxUYXJn
ZXRSZW5kZXJUcmVlU2l6ZTsKLSAgICB1aW50NjRfdCBtX3NuYXBzaG90UmVtb3ZhbFRhcmdldFRy
YW5zYWN0aW9uSUQ7CiAgICAgYm9vbCBtX3Nob3VsZFJlbW92ZVNuYXBzaG90V2hlblRhcmdldFJl
bmRlclRyZWVTaXplSGl0OwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCBkZDMwODliLi5mMjRiMDk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtMTQz
LDYgKzE0Myw4IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VHJhbnNpZW50
Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZs
b2F0UG9pbnQgb3JpZ2luKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBhZGRUcmFuc2FjdGlvbkNh
bGxiYWNrSUQodWludDY0X3QgY2FsbGJhY2tJRCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQog
I2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KaW5kZXggZDYwYzIzNy4uOGVlNjAxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5tZXNzYWdlcy5pbgpAQCAtMzUsNSArMzUsNyBAQCBtZXNzYWdlcyAtPiBEcmF3aW5nQXJl
YSBMZWdhY3lSZWNlaXZlciB7CiAgICAgQ29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUs
IFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQogICAgIAogICAgIEFjY2VsZXJhdGVkQW5pbWF0
aW9uRGlkU3RhcnQodWludDY0X3QgbGF5ZXJJRCwgU3RyaW5nIGtleSwgZG91YmxlIHN0YXJ0VGlt
ZSkKKyAgICAKKyAgICBBZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQodWludDY0X3QgY2FsbGJhY2tJ
RCkKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCmluZGV4IDYx
MzdiZDguLmMyMTE4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkRyYXdpbmdBcmVhLmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NMYXllckNBUmVtb3RlLmgiCisjaW5jbHVkZSAiUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDbGllbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8YXRvbWljPgpAQCAtNjYsNiArNjcsOCBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJDb3Jl
OjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29t
cG9zaXRpbmdMYXllckZsdXNoKCkgb3ZlcnJpZGU7CiAKKyAgICB2aXJ0dWFsIHZvaWQgYWRkVHJh
bnNhY3Rpb25DYWxsYmFja0lEKHVpbnQ2NF90IGNhbGxiYWNrSUQpIG92ZXJyaWRlOworCiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRl
RGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEKSBvdmVycmlkZTsKICAgICB2
b2lkIHdpbGxEZXN0cm95RGlzcGxheVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OkRpc3BsYXlSZWZy
ZXNoTW9uaXRvciopOwogCkBAIC0xNTksNiArMTYyLDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0
PFJlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvcio+KiBtX2Rpc3BsYXlSZWZyZXNo
TW9uaXRvcnNUb05vdGlmeTsKIAogICAgIHVpbnQ2NF90IG1fY3VycmVudFRyYW5zYWN0aW9uSUQ7
CisgICAgVmVjdG9yPFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpUcmFuc2FjdGlvbkNhbGxi
YWNrSUQ+IG1fcGVuZGluZ0NhbGxiYWNrSURzOwogfTsKIAogRFJBV0lOR19BUkVBX1RZUEVfQ0FT
VFMoUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEsIHR5cGUoKSA9PSBEcmF3aW5nQXJlYVR5cGVS
ZW1vdGVMYXllclRyZWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5k
ZXggZTA3ODEzMS4uNDFjNTgzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
Lm1tCkBAIC0zMTgsNiArMzE4LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
Zmx1c2hMYXllcnMoKQogICAgIC8vIEZJWE1FOiBNaW5pbWl6ZSB0aGVzZSB0cmFuc2FjdGlvbnMg
aWYgbm90aGluZyBjaGFuZ2VkLgogICAgIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uIGxheWVy
VHJhbnNhY3Rpb247CiAgICAgbGF5ZXJUcmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvbklEKHRha2VO
ZXh0VHJhbnNhY3Rpb25JRCgpKTsKKyAgICBsYXllclRyYW5zYWN0aW9uLnNldENhbGxiYWNrSURz
KHN0ZDo6bW92ZShtX3BlbmRpbmdDYWxsYmFja0lEcykpOwogICAgIG1fcmVtb3RlTGF5ZXJUcmVl
Q29udGV4dC0+YnVpbGRUcmFuc2FjdGlvbihsYXllclRyYW5zYWN0aW9uLCAqdG9HcmFwaGljc0xh
eWVyQ0FSZW1vdGUobV9yb290TGF5ZXIuZ2V0KCkpLT5wbGF0Zm9ybUNBTGF5ZXIoKSk7CiAgICAg
YmFja2luZ1N0b3JlQ29sbGVjdGlvbi53aWxsQ29tbWl0TGF5ZXJUcmVlKGxheWVyVHJhbnNhY3Rp
b24pOwogICAgIG1fd2ViUGFnZS53aWxsQ29tbWl0TGF5ZXJUcmVlKGxheWVyVHJhbnNhY3Rpb24p
OwpAQCAtNDI4LDQgKzQyOSwxMCBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp2
aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpGbGFncywgYm9vbCB3YW50cwogICAgIC8vIEZJ
WE1FOiBTaG91bGQgd2Ugc3VzcGVuZCBwYWludGluZyB3aGlsZSBub3QgdmlzaWJsZSwgbGlrZSBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYT8gUHJvYmFibHkuCiB9CiAKK3ZvaWQgUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRCh1aW50NjRfdCBj
YWxsYmFja0lEKQoreworICAgIG1fcGVuZGluZ0NhbGxiYWNrSURzLmFwcGVuZChzdGF0aWNfY2Fz
dDxSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6VHJhbnNhY3Rpb25DYWxsYmFja0lEPihjYWxs
YmFja0lEKSk7CisgICAgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>
<flag name="review"
          id="258834"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>