<?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>128831</bug_id>
          
          <creation_ts>2014-02-14 11:16:57 -0800</creation_ts>
          <short_desc>Add a way to efficiently thumbnail WKViews</short_desc>
          <delta_ts>2014-04-04 01:42:39 -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>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>980882</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-02-14 11:16:57 -0800</bug_when>
    <thetext>We should provide a way to create a view from a WKView which can borrow the WKView&apos;s live contents and render them in a second view.

We can then provide optimizations, e.g. painting at a lower resolution, reusing existing tiles, etc. given knowledge that we&apos;re thumbnailing.

The thumbnail view will not forward events, and WKView will disable event handling while thumbnailed. Also, changes to the size of the thumbnail view will not affect the layout of the content.

&lt;rdar://problem/15669655&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980932</commentid>
    <comment_count>1</comment_count>
      <attachid>224246</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-02-14 13:07:04 -0800</bug_when>
    <thetext>Created attachment 224246
patch

an initial cut. currently we don&apos;t re-use existing tiles when bringing in unparented views, because we can&apos;t tell if they&apos;ve been purged without parenting them, and don&apos;t want to cause a sudden surge in backing store if many thumbnail views are made from unparented views at once, but this can be revisited.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980933</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-14 13:08:27 -0800</bug_when>
    <thetext>Attachment 224246 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/mac/WKViewInternal.h:108:  Missing spaces around =  [whitespace/operators] [4]
ERROR: Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:41:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 17 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>980944</commentid>
    <comment_count>3</comment_count>
      <attachid>224247</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-02-14 13:18:22 -0800</bug_when>
    <thetext>Created attachment 224247
rebase+style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980947</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-14 13:21:20 -0800</bug_when>
    <thetext>Attachment 224247 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/mac/WKViewInternal.h:108:  Missing spaces around =  [whitespace/operators] [4]
Total errors found: 1 in 17 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>980973</commentid>
    <comment_count>5</comment_count>
      <attachid>224251</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-02-14 14:11:22 -0800</bug_when>
    <thetext>Created attachment 224251
fix ML build + offline review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980974</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-14 14:12:07 -0800</bug_when>
    <thetext>Attachment 224251 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/mac/WKViewInternal.h:108:  Missing spaces around =  [whitespace/operators] [4]
Total errors found: 1 in 17 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>980979</commentid>
    <comment_count>7</comment_count>
      <attachid>224251</attachid>
    <who name="">mitz</who>
    <bug_when>2014-02-14 14:16:36 -0800</bug_when>
    <thetext>Comment on attachment 224251
fix ML build + offline review comments

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKThumbnailView.h:30
&gt; +#import &lt;Cocoa/Cocoa.h&gt;

We shouldn’t import the Core Data headers here. AppKit will do.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKThumbnailView.h:31
&gt; +#import &lt;WebKit2/WKDeclarationSpecifiers.h&gt;

I don’t think this is necessary anymore.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKThumbnailView.h:35
&gt; +WK_API_CLASS @interface WKThumbnailView : NSView

WK_API_CLASS goes on its own line before the @interface line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981554</commentid>
    <comment_count>8</comment_count>
      <attachid>224400</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-02-17 11:15:33 -0800</bug_when>
    <thetext>Created attachment 224400
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981577</commentid>
    <comment_count>9</comment_count>
      <attachid>224402</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-02-17 11:37:58 -0800</bug_when>
    <thetext>Created attachment 224402
rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981578</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-17 11:38:35 -0800</bug_when>
    <thetext>Attachment 224402 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/mac/WKViewInternal.h:108:  Missing spaces around =  [whitespace/operators] [4]
Total errors found: 1 in 17 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>981609</commentid>
    <comment_count>11</comment_count>
      <attachid>224412</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-02-17 12:07:01 -0800</bug_when>
    <thetext>Created attachment 224412
build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981610</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-17 12:09:31 -0800</bug_when>
    <thetext>Attachment 224412 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/mac/WKViewInternal.h:108:  Missing spaces around =  [whitespace/operators] [4]
Total errors found: 1 in 17 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>982093</commentid>
    <comment_count>13</comment_count>
      <attachid>224412</attachid>
    <who name="">mitz</who>
    <bug_when>2014-02-18 14:18:08 -0800</bug_when>
    <thetext>Comment on attachment 224412
build fix

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKThumbnailView.h:38
&gt; +- (void)setScale:(double)scale;

This should be a property so that it’s possible to get it, not just set it. It should be a CGFloat.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKThumbnailView.mm:46
&gt; +@implementation WKThumbnailView
&gt; +{

The brace normally goes on the same line with the class name.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKThumbnailView.mm:49
&gt; +    double _thumbnailScale;

If scale were a property, you’d get a _scale ivar for free.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKThumbnailView.mm:54
&gt; +    bool _originalMayStartMediaWhenInWindow;
&gt; +    bool _originalSourceViewIsInWindow;
&gt; +
&gt; +    bool _shouldApplyThumbnailScale;

Objective-C booleans are normally BOOL.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKThumbnailView.mm:60
&gt; +    self = [super initWithFrame:frame];
&gt; +    if (self) {

Please use the usual early return pattern if (!(self = [super initWithFrame:frame]))\n    return nil;

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKThumbnailView.mm:114
&gt; +    self.layer.sublayers = layer ? @[layer] : @[];

Please add spaces inside the @[]s.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKThumbnailView.mm:122
&gt; +    return [self.layer.sublayers objectAtIndex:0];

You can use -firstObject.

&gt; Source/WebKit2/UIProcess/API/mac/PageClientImpl.mm:189
&gt; +    NSView *activeView = m_wkView._thumbnailView ? m_wkView._thumbnailView : m_wkView;
&gt; +    NSWindow *activeViewWindow = activeView.window;

I’d factor this out into a helper function.

&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:2562
&gt; +    return hostView.layer.sublayers[0];

Can use -firstObject.

&gt; Source/WebKit2/UIProcess/API/mac/WKViewInternal.h:32
&gt;  #import &lt;wtf/Vector.h&gt;
&gt; +#import &lt;wtf/RetainPtr.h&gt;

R &lt; V

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:295
&gt; +    , m_preThumbnailPageScale(1)

Terrible name.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4190
&gt; +{

Should we ASSERT_ARG(destinationScale, destinationScale &gt; 0) here? Also, I’m not sure what the word destination signifies here. Normally the parameter name in a setter should be the property being set or some abbreviation thereof.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4227
&gt; +}

This whole business of special-casing 1 seems highly dubious to me.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:1100
&gt; +    WebCore::IntPoint m_preThumbnailScrollPosition;

Also terrible name.

&gt; Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:574
&gt; +    [m_hostingLayer setSublayers:layer ? [NSArray arrayWithObject:layer] : [NSArray array]];

Can’t use array literals here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982116</commentid>
    <comment_count>14</comment_count>
      <attachid>224412</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-02-18 14:32:56 -0800</bug_when>
    <thetext>Comment on attachment 224412
build fix

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

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4191
&gt; +    if (destinationScale == m_thumbnailScale)

Dan wants some fixmees here (or fixes) about what happens if the page navigates or does layout.

&gt;&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:4227
&gt;&gt; +}
&gt; 
&gt; This whole business of special-casing 1 seems highly dubious to me.

Yup, we&apos;ve sorted out that this is unnecessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997505</commentid>
    <comment_count>15</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-04 01:42:39 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/164337</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224246</attachid>
            <date>2014-02-14 13:07:04 -0800</date>
            <delta_ts>2014-02-14 13:18:22 -0800</delta_ts>
            <desc>patch</desc>
            <filename>thumbnail.diff</filename>
            <type>text/plain</type>
            <size>48226</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA1NzNiNzUwLi4zM2QxZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE4
IEBACisyMDE0LTAyLTE0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBhIHdheSB0byBlZmZpY2llbnRseSB0aHVtYm5haWwgV0tWaWV3cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4ODMxCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8xNTY2OTY1NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5haWxW
aWV3Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5haWxW
aWV3Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV0tUaHVtYm5haWxWaWV3IGluaXRXaXRoRnJhbWU6
ZnJvbVdLVmlldzpdKToKKyAgICAgICAgKC1bV0tUaHVtYm5haWxWaWV3IF92aWV3V2FzVW5wYXJl
bnRlZF0pOgorICAgICAgICAoLVtXS1RodW1ibmFpbFZpZXcgX3ZpZXdXYXNQYXJlbnRlZF0pOgor
ICAgICAgICAoLVtXS1RodW1ibmFpbFZpZXcgdmlld0RpZE1vdmVUb1dpbmRvd10pOgorICAgICAg
ICAoLVtXS1RodW1ibmFpbFZpZXcgc2V0U2NhbGU6XSk6CisgICAgICAgICgtW1dLVGh1bWJuYWls
VmlldyBzZXRUaHVtYm5haWxMYXllcjpdKToKKyAgICAgICAgKC1bV0tUaHVtYm5haWxWaWV3IHRo
dW1ibmFpbExheWVyXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1RodW1ibmFp
bFZpZXdJbnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgQWRkIFdLVGh1bWJuYWlsVmlldy4KKyAg
ICAgICAgQ2xpZW50cyBvZiB0aGlzIHByaXZhdGUgQVBJIHdpbGwgY2FsbCBpbml0V2l0aEZyYW1l
OmZyb21XS1ZpZXc6LAorICAgICAgICBnaXZpbmcgdGhlIFdLVmlldyB0aGV5IHdpc2ggdG8gYm9y
cm93IGNvbnRlbnRzIGZyb20uCisgICAgICAgIFRoZXkgY2FuIGFsc28gY2FsbCBzZXRTY2FsZTog
dG8gc2V0IHRoZSBzY2FsZSB0aGF0IHdpbGwgYmUgdXNlZCB0byByZW5kZXIKKyAgICAgICAgdGhl
IGNvbnRlbnQgaW4gYW4gaW1wbGVtZW50YXRpb24tZGVmaW5lZCBzZXQgb2YgY2FzZXMgKGN1cnJl
bnRseSwgd2Ugd2lsbAorICAgICAgICB1c2UgdGhlIGxvdyByZXNvbHV0aW9uIHNjYWxlIGZvciBX
S1ZpZXdzIHdoaWNoIHdlcmUgbm90IHBhcmVudGVkIHdoZW4gdGhlCisgICAgICAgIFdLVGh1bWJu
YWlsVmlldyB3YXMgY3JlYXRlZDsgcGFyZW50ZWQgV0tWaWV3cyB3aWxsIHVzZSB0aGUgZXhpc3Rp
bmcgc2NhbGUpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwu
bW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUp
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6aXNWaWV3VmlzaWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdWaXNpYmxlT3JPY2NsdWRlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdJbldpbmRvdyk6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp2aWV3TGF5ZXJIb3N0aW5nTW9kZSk6CisgICAgICAg
IElmIHRoZSBXS1ZpZXcgaGFzIGFuIGFjdGl2ZWx5LXBhcmVudGVkIFdLVGh1bWJuYWlsVmlldyBh
dHRhY2hlZCB0byBpdCwKKyAgICAgICAgd2Ugc2hvdWxkIGRldGVybWluZSB2aWV3IHZpc2liaWxp
dHkvZXRjLiB1c2luZyB0aGF0IHZpZXcgaW5zdGVhZCBvZiB0aGUgV0tWaWV3LgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgZGVhbGxv
Y10pOgorICAgICAgICBXS1RodW1ibmFpbFZpZXcgaG9sZHMgb24gdG8gdGhlIFdLVmlldywgYW5k
IGNsZWFycyBXS1ZpZXcncyBiYWNrcG9pbnRlcgorICAgICAgICB3aGVuIGl0IGxlYXZlcyB0aGUg
d2luZG93LCBzbyB3ZSBzaG91bGQgbmV2ZXIgc2VlIFdLVmlldyBnZXQgZGVhbGxvY2F0ZWQKKyAg
ICAgICAgd2l0aCBhIGxpdmUgdGh1bWJuYWlsIHZpZXcuCisKKyAgICAgICAgKC1bV0tWaWV3IHNj
cm9sbFdoZWVsOl0pOgorICAgICAgICAoLVtXS1ZpZXcgbW91c2VNb3ZlZDpdKToKKyAgICAgICAg
KC1bV0tWaWV3IG1vdXNlRG93bjpdKToKKyAgICAgICAgKC1bV0tWaWV3IG1vdXNlVXA6XSk6Cisg
ICAgICAgICgtW1dLVmlldyBtb3VzZURyYWdnZWQ6XSk6CisgICAgICAgIERvbid0IGhhbmRsZSBl
dmVudHMgd2hpbGUgdGh1bWJuYWlsZWQuCisKKyAgICAgICAgKC1bV0tWaWV3IF9zZXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllcjpdKToKKyAgICAgICAgRm9yd2FyZCByb290IGxh
eWVyIGNoYW5nZXMgdG8gdGhlIGluc3RhbGxlZCB0aHVtYm5haWwgdmlldy4KKworICAgICAgICAo
LVtXS1ZpZXcgX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlUm9vdExheWVyXSk6CisgICAgICAg
IF9hY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllciBzaG91bGQgcmV0dXJuIHRoZSBz
YW1lIGxheWVyCisgICAgICAgIHRoYXQgd2FzIHNldCB2aWEgX3NldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlUm9vdExheWVyOiwgbm90IGl0cyBwYXJlbnQuCisKKyAgICAgICAgKC1bV0tWaWV3
IF9zZXRUaHVtYm5haWxWaWV3Ol0pOgorICAgICAgICAoLVtXS1ZpZXcgX3RodW1ibmFpbFZpZXdd
KToKKyAgICAgICAgSW5zdGFsbC91bmluc3RhbGwgYSBXS1RodW1ibmFpbFZpZXcuIEhhbmQgaXQg
b3VyIHJvb3QgbGF5ZXIgaWYgaW5zdGFsbGluZywKKyAgICAgICAgb3IgcmVjb3ZlciBpdCBmcm9t
IHRoZSBkZXBhcnRpbmcgdGh1bWJuYWlsIHZpZXcgaWYgdW5pbnN0YWxsaW5nLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgQWRkIGluIGEg
bWlzc2luZyBSZXRhaW5QdHIuaCBpbmNsdWRlIHRoYXQgSSBtaXNzZWQgZWFybGllciBhbmQgY2F1
c2VzIHRyb3VibGUuCisgICAgICAgIEFkZCBXS1ZpZXcgX3RodW1ibmFpbFZpZXcgYW5kIF9zZXRU
aHVtYm5haWxWaWV3Oi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFRodW1ibmFpbFNjYWxlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6bWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyk6CisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dl
c3R1cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFuZGxlU3dpcGVHZXN0dXJlKToKKyAgICAgICAgU3dpcGUg
d2FzIGFjY2lkZW50YWxseSBkZXBlbmRpbmcgb24gYSBtaXN0YWtlIGluIFdLVmlldydzCisgICAg
ICAgIF9hY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllciB3aGVyZSBpdCB3YXMgcmV0
dXJuaW5nIHRoZSB3cm9uZyBsYXllci4KKyAgICAgICAgVGhlIGFjdHVhbCByb290IGxheWVyIGRv
ZXNuJ3QgaGF2ZSBhIHNpemUsIHNvIHdlIHNob3VsZCB1c2UgdGhlIGRyYXdpbmcKKyAgICAgICAg
YXJlYSdzIHNpemUgaW5zdGVhZC4KKworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgQWRkIHNvbWUgbmV3IGZpbGVzLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpX
ZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0VGh1bWJuYWlsU2NhbGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgIEFwcGx5IHRoZSB0aHVt
Ym5haWwgc2NhbGUgdG8gdGhlIHBhZ2UuIElmIHdlJ3JlIGN1cnJlbnRseSBub3QgaW4KKyAgICAg
ICAgdGh1bWJuYWlsIHNjYWxpbmcgbW9kZSwgc2F2ZSB0aGUgY3VycmVudCBwYWdlIHNjYWxlIGFu
ZCBzY3JvbGwgcG9zaXRpb24KKyAgICAgICAgc28gd2UgY2FuIHJlc3RvcmUgdGhlbSBvbmNlIHdl
IGxlYXZlIHRodW1ibmFpbCBtb2RlIGFnYWluLgorICAgICAgICBUcmFuc2Zvcm0gdGhlIERyYXdp
bmdBcmVhIHNvIHRoYXQgdGhlIHBhZ2UgYXBwZWFycyBhdCB0aGUgc2FtZQorICAgICAgICBwb3Np
dGlvbiBhbmQgc2l6ZSwgYnV0IHNjYWxlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9EcmF3aW5nQXJlYS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6c2V0VHJhbnNm
b3JtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWE6OnNldFRyYW5zZm9ybSk6CisgICAgICAgIEFkZCBhIERyYXdpbmdB
cmVhIG1ldGhvZCB0byBhcHBseSBhbiBhcmJpdHJhcnkgdHJhbnNmb3JtIHRvIHRoZSBkcmF3aW5n
IGFyZWEuCisKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6
OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKToKKyAgICAg
ICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldFBhZ2VPdmVybGF5
TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE6OnN1c3BlbmRQYWludGluZyk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpyZXN1bWVQYWludGluZyk6CisgICAgICAgIChXZWJLaXQ6
OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVHZW9tZXRyeSk6CisgICAgICAg
IChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVMYXllckhvc3Rp
bmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OmNyZWF0ZVBhZ2VPdmVybGF5TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6ZGlkQ29tbWl0Q2hhbmdlc0ZvckxheWVyKToKKyAgICAgICAg
KFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZURlYnVnSW5mb0xh
eWVyKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFk
anVzdFRyYW5zaWVudFpvb20pOgorICAgICAgICBSZW1vdmUgdGhlIHdvcmQgImNvbXBvc2l0aW5n
IiBpbiBhIGJ1bmNoIG9mIHBsYWNlcyB3aGVyZSBpdCBpc24ndCBuZWVkZWQuCisgICAgICAgIFJl
bmFtZSBtX3Jvb3RMYXllciB0byBtX2hvc3RpbmdMYXllciwgYW5kIHJlcHVycG9zZSBtX3Jvb3RM
YXllciB0byBzdG9yZQorICAgICAgICB0aGUgcm9vdCBjb21wb3NpdGluZyBsYXllciBhY3R1YWxs
eSBwYXNzZWQgaW4gdmlhIHNldFJvb3RDb21wb3NpdGluZ0xheWVyLgorICAgICAgICBSZW5hbWUg
bV9wZW5kaW5nUm9vdENvbXBvc2l0aW5nTGF5ZXIgdG8gbV9wZW5kaW5nUm9vdExheWVyLgorCiAy
MDE0LTAyLTEwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbR0xJQl0gQWRkIEdVbmlxdWVPdXRQdHIgYW5kIHVzZSBpdCBpbnN0ZWFkIG9mIEdP
d25QdHIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tU
aHVtYm5haWxWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVGh1
bWJuYWlsVmlldy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNWFjOGEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
VGh1bWJuYWlsVmlldy5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxX
ZWJLaXQyL1dLRm91bmRhdGlvbi5oPgorCisjaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgorI2ltcG9y
dCA8V2ViS2l0Mi9XS0RlY2xhcmF0aW9uU3BlY2lmaWVycy5oPgorCitAY2xhc3MgV0tWaWV3Owor
CitXS19FWFBPUlQgQGludGVyZmFjZSBXS1RodW1ibmFpbFZpZXcgOiBOU1ZpZXcKKworLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBmcm9tV0tWaWV3OihXS1ZpZXcg
Kil3a1ZpZXc7CistICh2b2lkKXNldFNjYWxlOihkb3VibGUpc2NhbGU7CisKK0BlbmQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5haWxWaWV3
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1RodW1ibmFpbFZpZXcu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA3Y2JkYgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5haWxW
aWV3Lm1tCkBAIC0wLDAgKzEsMTI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJXS1RodW1ibmFpbFZpZXcuaCIKKyNpbXBvcnQgIldLVGh1bWJuYWlsVmlld0lu
dGVybmFsLmgiCisKKyNpbXBvcnQgIldLQVBJQ2FzdC5oIgorI2ltcG9ydCAiV0tWaWV3LmgiCisj
aW1wb3J0ICJXS1ZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCisKKy8v
IEZJWE1FOiBNYWtlIGl0IHBvc3NpYmxlIHRvIGxlYXZlIGEgc25hcHNob3Qgb2YgdGhlIGNvbnRl
bnQgcHJlc2VudGVkIGluIHRoZSBXS1ZpZXcgd2hpbGUgdGhlIHRodW1ibmFpbCBpcyBsaXZlLgor
Ly8gRklYTUU6IERvbid0IG1ha2UgbmV3IHNwZWN1bGF0aXZlIHRpbGVzIHdoaWxlIHRodW1ibmFp
bGVkLgorLy8gRklYTUU6IEhpZGUgc2Nyb2xsYmFycyBpbiB0aGUgdGh1bWJuYWlsLgorLy8gRklY
TUU6IFdlIHNob3VsZCByZS11c2UgZXhpc3RpbmcgdGlsZXMgZm9yIHVucGFyZW50ZWQgdmlld3Ms
IGlmIHdlIGhhdmUgdGhlbSAod2UgbmVlZCB0byBrbm93IGlmIHRoZXkndmUgYmVlbiBwdXJnZWQ7
IGlmIHNvLCByZXBhaW50IGF0IHNjYWxlZC1kb3duIHNpemUpLgorLy8gRklYTUU6IFdlIHNob3Vs
ZCBzd2l0Y2ggdG8gdGhlIGxvdy1yZXNvbHV0aW9uIHNjYWxlIGlmIGEgdmlldyB3ZSBoYXZlIGhp
Z2gtcmVzb2x1dGlvbiB0aWxlcyBmb3IgcmVwYWludHMuCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworQGltcGxlbWVudGF0aW9uIFdLVGh1bWJu
YWlsVmlldworeworICAgIFJldGFpblB0cjxXS1ZpZXc+IF93a1ZpZXc7CisgICAgV2ViUGFnZVBy
b3h5KiBfd2ViUGFnZVByb3h5OworICAgIGRvdWJsZSBfdGh1bWJuYWlsU2NhbGU7CisgICAgCisg
ICAgYm9vbCBfb3JpZ2luYWxNYXlTdGFydE1lZGlhV2hlbkluV2luZG93OworICAgIGJvb2wgX29y
aWdpbmFsU291cmNlVmlld0lzSW5XaW5kb3c7CisgICAgCisgICAgYm9vbCBfc2hvdWxkQXBwbHlU
aHVtYm5haWxTY2FsZTsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5TUmVj
dClmcmFtZSBmcm9tV0tWaWV3OihXS1ZpZXcgKil3a1ZpZXcKK3sKKyAgICBzZWxmID0gW3N1cGVy
IGluaXRXaXRoRnJhbWU6ZnJhbWVdOworICAgIGlmIChzZWxmKSB7CisgICAgICAgIF93a1ZpZXcg
PSB3a1ZpZXc7CisgICAgICAgIF93ZWJQYWdlUHJveHkgPSB0b0ltcGwoW193a1ZpZXcgcGFnZVJl
Zl0pOworICAgICAgICBfdGh1bWJuYWlsU2NhbGUgPSAxOworICAgICAgICAKKyAgICAgICAgX29y
aWdpbmFsTWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyA9IF93ZWJQYWdlUHJveHktPm1heVN0YXJ0
TWVkaWFXaGVuSW5XaW5kb3coKTsKKyAgICAgICAgX29yaWdpbmFsU291cmNlVmlld0lzSW5XaW5k
b3cgPSAhIVtfd2tWaWV3IHdpbmRvd107CisgICAgICAgIAorICAgICAgICBfc2hvdWxkQXBwbHlU
aHVtYm5haWxTY2FsZSA9ICFfb3JpZ2luYWxTb3VyY2VWaWV3SXNJbldpbmRvdzsKKyAgICB9Cisg
ICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpX3ZpZXdXYXNVbnBhcmVudGVkCit7CisgICAg
aWYgKF9zaG91bGRBcHBseVRodW1ibmFpbFNjYWxlKQorICAgICAgICBfd2ViUGFnZVByb3h5LT5z
ZXRUaHVtYm5haWxTY2FsZSgxKTsKKworICAgIFtfd2tWaWV3IF9zZXRUaHVtYm5haWxWaWV3Om5p
bF07CisgICAgX3dlYlBhZ2VQcm94eS0+c2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhfb3Jp
Z2luYWxNYXlTdGFydE1lZGlhV2hlbkluV2luZG93KTsKK30KKworLSAodm9pZClfdmlld1dhc1Bh
cmVudGVkCit7CisgICAgaWYgKFtfd2tWaWV3IF90aHVtYm5haWxWaWV3XSkKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIGlmIChfc2hvdWxkQXBwbHlUaHVtYm5haWxTY2FsZSkKKyAgICAgICAg
X3dlYlBhZ2VQcm94eS0+c2V0VGh1bWJuYWlsU2NhbGUoX3RodW1ibmFpbFNjYWxlKTsKKyAgICAK
KyAgICBpZiAoIV9vcmlnaW5hbFNvdXJjZVZpZXdJc0luV2luZG93KQorICAgICAgICBfd2ViUGFn
ZVByb3h5LT5zZXRNYXlTdGFydE1lZGlhV2hlbkluV2luZG93KGZhbHNlKTsKKworICAgIFtfd2tW
aWV3IF9zZXRUaHVtYm5haWxWaWV3OnNlbGZdOworfQorCistICh2b2lkKXZpZXdEaWRNb3ZlVG9X
aW5kb3cKK3sKKyAgICBpZiAoc2VsZi53aW5kb3cpCisgICAgICAgIFtzZWxmIF92aWV3V2FzUGFy
ZW50ZWRdOworICAgIGVsc2UKKyAgICAgICAgW3NlbGYgX3ZpZXdXYXNVbnBhcmVudGVkXTsKK30K
KworLSAodm9pZClzZXRTY2FsZTooZG91YmxlKXNjYWxlCit7CisgICAgX3RodW1ibmFpbFNjYWxl
ID0gc2NhbGU7CisgICAgCisgICAgaWYgKHNlbGYud2luZG93ICYmIF9zaG91bGRBcHBseVRodW1i
bmFpbFNjYWxlKQorICAgICAgICBfd2ViUGFnZVByb3h5LT5zZXRUaHVtYm5haWxTY2FsZShfdGh1
bWJuYWlsU2NhbGUpOworfQorCistICh2b2lkKXNldFRodW1ibmFpbExheWVyOihDQUxheWVyICop
bGF5ZXIKK3sKKyAgICBzZWxmLmxheWVyLnN1YmxheWVycyA9IGxheWVyID8gQFtsYXllcl0gOiBA
W107Cit9CisKKy0gKENBTGF5ZXIgKil0aHVtYm5haWxMYXllcgoreworICAgIGlmICghc2VsZi5s
YXllci5zdWJsYXllcnMuY291bnQpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgcmV0
dXJuIHNlbGYubGF5ZXIuc3VibGF5ZXJzLmZpcnN0T2JqZWN0OworfQorCitAZW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVGh1bWJuYWlsVmlld0lu
dGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVGh1bWJuYWls
Vmlld0ludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDIxN2I5
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiV0tUaHVtYm5haWxWaWV3LmgiCisKK0BpbnRlcmZhY2UgV0tUaHVtYm5haWxWaWV3
ICgpCisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIENBTGF5ZXIgKnRodW1ibmFpbExh
eWVyOworCitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9QYWdlQ2xpZW50SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1Bh
Z2VDbGllbnRJbXBsLm1tCmluZGV4IGQzMjAzZmYuLjIyZjE3OWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW1wb3J0ICJXS0FQSUNhc3QuaCIKICNpbXBvcnQgIldLRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldLU3RyaW5nQ0YuaCIKKyNpbXBvcnQgIldLVGh1bWJu
YWlsVmlldy5oIgogI2ltcG9ydCAiV0tWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkNvbG9y
UGlja2VyTWFjLmgiCiAjaW1wb3J0ICJXZWJDb250ZXh0TWVudVByb3h5TWFjLmgiCkBAIC0xNjgs
NyArMTY5LDggQEAgSW50U2l6ZSBQYWdlQ2xpZW50SW1wbDo6dmlld1NpemUoKQogCiBib29sIFBh
Z2VDbGllbnRJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUoKQogewotICAgIHJldHVybiBbW21fd2tW
aWV3IHdpbmRvd10gaXNLZXlXaW5kb3ddIHx8IFtOU0FwcCBrZXlXaW5kb3ddID09IFttX3drVmll
dyB3aW5kb3ddOworICAgIE5TV2luZG93ICphY3RpdmVWaWV3V2luZG93ID0gbV93a1ZpZXcuX3Ro
dW1ibmFpbFZpZXcgPyBtX3drVmlldy5fdGh1bWJuYWlsVmlldy53aW5kb3cgOiBtX3drVmlldy53
aW5kb3c7CisgICAgcmV0dXJuIGFjdGl2ZVZpZXdXaW5kb3cuaXNLZXlXaW5kb3cgfHwgW05TQXBw
IGtleVdpbmRvd10gPT0gYWN0aXZlVmlld1dpbmRvdzsKIH0KIAogYm9vbCBQYWdlQ2xpZW50SW1w
bDo6aXNWaWV3Rm9jdXNlZCgpCkBAIC0xODMsMjQgKzE4NSwyNyBAQCB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjptYWtlRmlyc3RSZXNwb25kZXIoKQogICAgIAogYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNW
aWV3VmlzaWJsZSgpCiB7Ci0gICAgaWYgKCFbbV93a1ZpZXcgd2luZG93XSkKKyAgICBOU1ZpZXcg
KmFjdGl2ZVZpZXcgPSBtX3drVmlldy5fdGh1bWJuYWlsVmlldyA/IG1fd2tWaWV3Ll90aHVtYm5h
aWxWaWV3IDogbV93a1ZpZXc7CisgICAgTlNXaW5kb3cgKmFjdGl2ZVZpZXdXaW5kb3cgPSBhY3Rp
dmVWaWV3LndpbmRvdzsKKworICAgIGlmICghYWN0aXZlVmlld1dpbmRvdykKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgaWYgKCFbW21fd2tWaWV3IHdpbmRvd10gaXNWaXNpYmxlXSkKKyAg
ICBpZiAoIWFjdGl2ZVZpZXdXaW5kb3cuaXNWaXNpYmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDw9IDEwODAKICAgICAvLyBN
b3VudGFpbiBMaW9uIGFuZCBwcmV2aW91cyBkbyBub3Qgc3VwcG9ydCBvY2NsdXNpb24gbm90aWZp
Y2F0aW9ucywgYW5kIGFzIHN1Y2ggd2lsbAogICAgIC8vIGNvbnRpbnVlIHRvIHJlcG9ydCBhcyAi
dmlzaWJsZSIgd2hlbiBub3Qgb24gdGhlIGFjdGl2ZSBzcGFjZS4KLSAgICBpZiAoIVtbbV93a1Zp
ZXcgd2luZG93XSBpc09uQWN0aXZlU3BhY2VdKQorICAgIGlmICghYWN0aXZlVmlld1dpbmRvdy5p
c09uQWN0aXZlU3BhY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCi0gICAgaWYg
KFttX3drVmlldyBpc0hpZGRlbk9ySGFzSGlkZGVuQW5jZXN0b3JdKQorICAgIGlmIChhY3RpdmVW
aWV3LmlzSGlkZGVuT3JIYXNIaWRkZW5BbmNlc3RvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCi0gICAgaWYgKFtt
X3drVmlldyB3aW5kb3dPY2NsdXNpb25EZXRlY3Rpb25FbmFibGVkXSAmJiAoW1ttX3drVmlldyB3
aW5kb3ddIG9jY2x1c2lvblN0YXRlXSAmIE5TV2luZG93T2NjbHVzaW9uU3RhdGVWaXNpYmxlKSAh
PSBOU1dpbmRvd09jY2x1c2lvblN0YXRlVmlzaWJsZSkKKyAgICBpZiAoW21fd2tWaWV3IHdpbmRv
d09jY2x1c2lvbkRldGVjdGlvbkVuYWJsZWRdICYmIChhY3RpdmVWaWV3V2luZG93Lm9jY2x1c2lv
blN0YXRlICYgTlNXaW5kb3dPY2NsdXNpb25TdGF0ZVZpc2libGUpICE9IE5TV2luZG93T2NjbHVz
aW9uU3RhdGVWaXNpYmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIApAQCAtMjA5
LDEyICsyMTQsMTIgQEAgYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3VmlzaWJsZSgpCiAKIGJv
b2wgUGFnZUNsaWVudEltcGw6OmlzVmlld1Zpc2libGVPck9jY2x1ZGVkKCkKIHsKLSAgICByZXR1
cm4gW1ttX3drVmlldyB3aW5kb3ddIGlzVmlzaWJsZV07CisgICAgcmV0dXJuIG1fd2tWaWV3Ll90
aHVtYm5haWxWaWV3ID8gbV93a1ZpZXcuX3RodW1ibmFpbFZpZXcud2luZG93LmlzVmlzaWJsZSA6
IG1fd2tWaWV3LndpbmRvdy5pc1Zpc2libGU7CiB9CiAKIGJvb2wgUGFnZUNsaWVudEltcGw6Omlz
Vmlld0luV2luZG93KCkKIHsKLSAgICByZXR1cm4gW21fd2tWaWV3IHdpbmRvd107CisgICAgcmV0
dXJuIG1fd2tWaWV3Ll90aHVtYm5haWxWaWV3ID8gbV93a1ZpZXcuX3RodW1ibmFpbFZpZXcud2lu
ZG93IDogbV93a1ZpZXcud2luZG93OwogfQogCiBib29sIFBhZ2VDbGllbnRJbXBsOjppc1Zpc3Vh
bGx5SWRsZSgpCkBAIC0yMjUsNyArMjMwLDggQEAgYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaXN1
YWxseUlkbGUoKQogTGF5ZXJIb3N0aW5nTW9kZSBQYWdlQ2xpZW50SW1wbDo6dmlld0xheWVySG9z
dGluZ01vZGUoKQogewogI2lmIEhBVkUoT1VUX09GX1BST0NFU1NfTEFZRVJfSE9TVElORykKLSAg
ICBpZiAoW21fd2tWaWV3IHdpbmRvd10gJiYgW1ttX3drVmlldyB3aW5kb3ddIF9ob3N0c0xheWVy
c0luV2luZG93U2VydmVyXSkKKyAgICBOU1dpbmRvdyAqYWN0aXZlVmlld1dpbmRvdyA9IG1fd2tW
aWV3Ll90aHVtYm5haWxWaWV3ID8gbV93a1ZpZXcuX3RodW1ibmFpbFZpZXcud2luZG93IDogbV93
a1ZpZXcud2luZG93OworICAgIGlmIChbYWN0aXZlVmlld1dpbmRvdyBfaG9zdHNMYXllcnNJbldp
bmRvd1NlcnZlcl0pCiAgICAgICAgIHJldHVybiBMYXllckhvc3RpbmdNb2RlOjpPdXRPZlByb2Nl
c3M7CiAjZW5kaWYKICAgICByZXR1cm4gTGF5ZXJIb3N0aW5nTW9kZTo6SW5Qcm9jZXNzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDc0YjM4ZWEuLmU2
ODEzMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAg
LTU3LDYgKzU3LDggQEAKICNpbXBvcnQgIldLUHJvY2Vzc0NsYXNzSW50ZXJuYWwuaCIKICNpbXBv
cnQgIldLU3RyaW5nQ0YuaCIKICNpbXBvcnQgIldLVGV4dElucHV0V2luZG93Q29udHJvbGxlci5o
IgorI2ltcG9ydCAiV0tUaHVtYm5haWxWaWV3LmgiCisjaW1wb3J0ICJXS1RodW1ibmFpbFZpZXdJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiV0tWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLVmlld1By
aXZhdGUuaCIKICNpbXBvcnQgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgpAQCAtMjI1LDYgKzIyNyw4
IEBAIHN0cnVjdCBXS1ZpZXdJbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzIHsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8Vmlld0dlc3R1cmVDb250cm9sbGVyPiBfZ2VzdHVyZUNvbnRyb2xsZXI7CiAg
ICAgQk9PTCBfYWxsb3dzTWFnbmlmaWNhdGlvbjsKICAgICBCT09MIF9hbGxvd3NCYWNrRm9yd2Fy
ZE5hdmlnYXRpb25HZXN0dXJlczsKKyAgICAKKyAgICBXS1RodW1ibmFpbFZpZXcgKl90aHVtYm5h
aWxWaWV3OwogfQogCiBAZW5kCkBAIC0yNzIsNyArMjc2LDggQEAgc3RydWN0IFdLVmlld0ludGVy
cHJldEtleUV2ZW50c1BhcmFtZXRlcnMgewogLSAodm9pZClkZWFsbG9jCiB7CiAgICAgX2RhdGEt
Pl9wYWdlLT5jbG9zZSgpOwotCisgICAgCisgICAgQVNTRVJUKCFfZGF0YS0+X3RodW1ibmFpbFZp
ZXcpOwogICAgIEFTU0VSVCghX2RhdGEtPl9pblNlY3VyZUlucHV0U3RhdGUpOwogCiAgICAgW19k
YXRhIHJlbGVhc2VdOwpAQCAtMTA3Nyw2ICsxMDgyLDggQEAgc3RhdGljIHZvaWQgc3BlYWtTdHJp
bmcoV0tTdHJpbmdSZWYgc3RyaW5nLCBXS0Vycm9yUmVmIGVycm9yLCB2b2lkKikKICNkZWZpbmUg
TkFUSVZFX01PVVNFX0VWRU5UX0hBTkRMRVIoU2VsZWN0b3IpIFwKICAgICAtICh2b2lkKVNlbGVj
dG9yOihOU0V2ZW50ICopdGhlRXZlbnQgXAogICAgIHsgXAorICAgICAgICBpZiAoX2RhdGEtPl90
aHVtYm5haWxWaWV3KSBcCisgICAgICAgICAgICByZXR1cm47IFwKICAgICAgICAgaWYgKFtbc2Vs
ZiBpbnB1dENvbnRleHRdIGhhbmRsZUV2ZW50OnRoZUV2ZW50XSkgeyBcCiAgICAgICAgICAgICBM
T0coVGV4dElucHV0LCAiJXMgd2FzIGhhbmRsZWQgYnkgdGV4dCBpbnB1dCBjb250ZXh0IiwgU3Ry
aW5nKCNTZWxlY3Rvcikuc3Vic3RyaW5nKDAsIFN0cmluZygjU2VsZWN0b3IpLmZpbmQoIkludGVy
bmFsIikpLmFzY2lpKCkuZGF0YSgpKTsgXAogICAgICAgICAgICAgcmV0dXJuOyBcCkBAIC0xMTEx
LDYgKzExMTgsOSBAQCBOQVRJVkVfTU9VU0VfRVZFTlRfSEFORExFUihyaWdodE1vdXNlVXApCiAK
IC0gKHZvaWQpc2Nyb2xsV2hlZWw6KE5TRXZlbnQgKilldmVudAogeworICAgIGlmIChfZGF0YS0+
X3RodW1ibmFpbFZpZXcpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChfZGF0YS0+X2FsbG93
c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzKSB7CiAgICAgICAgIFtzZWxmIF9lbnN1cmVH
ZXN0dXJlQ29udHJvbGxlcl07CiAgICAgICAgIGlmIChfZGF0YS0+X2dlc3R1cmVDb250cm9sbGVy
LT5oYW5kbGVTY3JvbGxXaGVlbEV2ZW50KGV2ZW50KSkKQEAgLTExMjMsNiArMTEzMyw5IEBAIE5B
VElWRV9NT1VTRV9FVkVOVF9IQU5ETEVSKHJpZ2h0TW91c2VVcCkKIAogLSAodm9pZCltb3VzZU1v
dmVkOihOU0V2ZW50ICopZXZlbnQKIHsKKyAgICBpZiAoX2RhdGEtPl90aHVtYm5haWxWaWV3KQor
ICAgICAgICByZXR1cm47CisKICAgICAvLyBXaGVuIGEgdmlldyBpcyBmaXJzdCByZXNwb25kZXIs
IGl0IGdldHMgbW91c2UgbW92ZWQgZXZlbnRzIGV2ZW4gd2hlbiB0aGUgbW91c2UgaXMgb3V0c2lk
ZSBpdHMgdmlzaWJsZSByZWN0LgogICAgIGlmIChzZWxmID09IFtbc2VsZiB3aW5kb3ddIGZpcnN0
UmVzcG9uZGVyXSAmJiAhTlNQb2ludEluUmVjdChbc2VsZiBjb252ZXJ0UG9pbnQ6W2V2ZW50IGxv
Y2F0aW9uSW5XaW5kb3ddIGZyb21WaWV3Om5pbF0sIFtzZWxmIHZpc2libGVSZWN0XSkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTExMzIsNiArMTE0NSw5IEBAIE5BVElWRV9NT1VTRV9FVkVOVF9IQU5E
TEVSKHJpZ2h0TW91c2VVcCkKIAogLSAodm9pZCltb3VzZURvd246KE5TRXZlbnQgKilldmVudAog
eworICAgIGlmIChfZGF0YS0+X3RodW1ibmFpbFZpZXcpCisgICAgICAgIHJldHVybjsKKwogICAg
IFtzZWxmIF9zZXRNb3VzZURvd25FdmVudDpldmVudF07CiAgICAgX2RhdGEtPl9pZ25vcmluZ01v
dXNlRHJhZ2dlZEV2ZW50cyA9IE5POwogICAgIFtzZWxmIG1vdXNlRG93bkludGVybmFsOmV2ZW50
XTsKQEAgLTExMzksMTIgKzExNTUsMTggQEAgTkFUSVZFX01PVVNFX0VWRU5UX0hBTkRMRVIocmln
aHRNb3VzZVVwKQogCiAtICh2b2lkKW1vdXNlVXA6KE5TRXZlbnQgKilldmVudAogeworICAgIGlm
IChfZGF0YS0+X3RodW1ibmFpbFZpZXcpCisgICAgICAgIHJldHVybjsKKwogICAgIFtzZWxmIF9z
ZXRNb3VzZURvd25FdmVudDpuaWxdOwogICAgIFtzZWxmIG1vdXNlVXBJbnRlcm5hbDpldmVudF07
CiB9CiAKIC0gKHZvaWQpbW91c2VEcmFnZ2VkOihOU0V2ZW50ICopZXZlbnQKIHsKKyAgICBpZiAo
X2RhdGEtPl90aHVtYm5haWxWaWV3KQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoX2RhdGEt
Pl9pZ25vcmluZ01vdXNlRHJhZ2dlZEV2ZW50cykKICAgICAgICAgcmV0dXJuOwogICAgIFtzZWxm
IG1vdXNlRHJhZ2dlZEludGVybmFsOmV2ZW50XTsKQEAgLTI0ODMsNiArMjUwNSwxMyBAQCBzdGF0
aWMgdm9pZCBjcmVhdGVTYW5kYm94RXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQoTlNQYXN0ZWJvYXJk
ICpwYXN0ZWJvYXJkLCBTYW5kYgogCiAtICh2b2lkKV9zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
TW9kZVJvb3RMYXllcjooQ0FMYXllciAqKXJvb3RMYXllcgogeworICAgIFtyb290TGF5ZXIgd2Vi
X2Rpc2FibGVBbGxBY3Rpb25zXTsKKyAgICAKKyAgICBpZiAoX2RhdGEtPl90aHVtYm5haWxWaWV3
KSB7CisgICAgICAgIF9kYXRhLT5fdGh1bWJuYWlsVmlldy50aHVtYm5haWxMYXllciA9IHJvb3RM
YXllcjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBbQ0FUcmFuc2FjdGlvbiBi
ZWdpbl07CiAgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKIApAQCAt
MjUyNiw4ICsyNTU1LDExIEBAIHN0YXRpYyB2b2lkIGNyZWF0ZVNhbmRib3hFeHRlbnNpb25zRm9y
RmlsZVVwbG9hZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIFNhbmRiCiAKICAgICBpZiAoIWhv
c3RWaWV3KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBpZiAoIWhvc3RWaWV3
LmxheWVyLnN1YmxheWVycy5jb3VudCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBy
ZXR1cm4gaG9zdFZpZXcubGF5ZXI7CisgICAgcmV0dXJuIGhvc3RWaWV3LmxheWVyLnN1YmxheWVy
c1swXTsKIH0KIAogLSAoUmV0YWluUHRyPENHSW1hZ2VSZWY+KV90YWtlVmlld1NuYXBzaG90CkBA
IC0yOTQzLDYgKzI5NzUsMjcgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1ZUZpbGVu
YW1lRm9yUGF0aChOU1N0cmluZyAqcGF0aCkKICAgICBbdHlwZXMgcmVsZWFzZV07CiB9CiAKKy0g
KHZvaWQpX3NldFRodW1ibmFpbFZpZXc6KFdLVGh1bWJuYWlsVmlldyAqKXRodW1ibmFpbFZpZXcK
K3sKKyAgICBBU1NFUlQoIV9kYXRhLT5fdGh1bWJuYWlsVmlldyB8fCAhdGh1bWJuYWlsVmlldyk7
CisgICAgCisgICAgUmV0YWluUHRyPENBTGF5ZXI+IHRodW1ibmFpbExheWVyID0gX2RhdGEtPl90
aHVtYm5haWxWaWV3LnRodW1ibmFpbExheWVyOworICAgIAorICAgIF9kYXRhLT5fdGh1bWJuYWls
VmlldyA9IHRodW1ibmFpbFZpZXc7CisgICAgCisgICAgaWYgKHRodW1ibmFpbFZpZXcpCisgICAg
ICAgIHRodW1ibmFpbFZpZXcudGh1bWJuYWlsTGF5ZXIgPSBbc2VsZiBfYWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGVSb290TGF5ZXJdOworICAgIGVsc2UKKyAgICAgICAgW3NlbGYgX3NldEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlUm9vdExheWVyOnRodW1ibmFpbExheWVyLmdldCgpXTsKKyAg
ICAKKyAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShWaWV3U3RhdGU6OldpbmRv
d0lzQWN0aXZlIHwgVmlld1N0YXRlOjpJc0luV2luZG93IHwgVmlld1N0YXRlOjpJc1Zpc2libGUp
OworfQorCistIChXS1RodW1ibmFpbFZpZXcgKilfdGh1bWJuYWlsVmlldworeworICAgIHJldHVy
biBfZGF0YS0+X3RodW1ibmFpbFZpZXc7Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdL
VmlldyAoUHJpdmF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1dLVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9X
S1ZpZXdJbnRlcm5hbC5oCmluZGV4IDc1YWRiNGUuLmQxZDM4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaApAQCAtMjksNiArMjks
NyBAQAogI2ltcG9ydCAiV2ViRmluZE9wdGlvbnMuaCIKICNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIEBj
bGFzcyBXS1dlYlZpZXdDb25maWd1cmF0aW9uOwogCkBAIC01Myw2ICs1NCw3IEBAIHN0cnVjdCBX
ZWJQYWdlQ29uZmlndXJhdGlvbjsKIH0KIAogQGNsYXNzIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXI7CitAY2xhc3MgV0tUaHVtYm5haWxWaWV3OwogCiBAaW50ZXJmYWNlIFdLVmlldyAoKQog
I2lmIFdLX0FQSV9FTkFCTEVECkBAIC0xMDMsNiArMTA1LDggQEAgc3RydWN0IFdlYlBhZ2VDb25m
aWd1cmF0aW9uOwogLSAodm9pZClfc2V0U3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlczooQk9PTClz
dXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVzOwogLSAoQk9PTClfc3VwcHJlc3NWaXNpYmlsaXR5VXBk
YXRlczsKIAorQHByb3BlcnR5IChub25hdG9taWMsIGdldHRlcj1fdGh1bWJuYWlsVmlldywgc2V0
dGVyPV9zZXRUaHVtYm5haWxWaWV3OikgV0tUaHVtYm5haWxWaWV3ICp0aHVtYm5haWxWaWV3Owor
CiAvLyBGdWxsU2NyZWVuCiAKIEBwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgX2hhc0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAppbmRleCA5Njg2M2IwLi45NmJlMmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcApAQCAtNDQ4NCw1ICs0NDg0LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoU2Nyb2xsUGlubmluZ0JlaGF2aW9yIHBpbm5pbmcp
CiAgICAgaWYgKGlzVmFsaWQoKSkKICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IocGlubmluZyksIG1fcGFnZUlEKTsKIH0K
KyAgICAKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRUaHVtYm5haWxTY2FsZShkb3VibGUgc2NhbGUp
Cit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRodW1ibmFpbFNjYWxlKHNjYWxlKSwg
bV9wYWdlSUQpOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwZmM0MmY2Li5iOWVhNGJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04MjYsNiArODI2LDcgQEAgcHVibGljOgog
ICAgIAogICAgIHZvaWQgc2V0TWVkaWFWb2x1bWUoZmxvYXQpOwogICAgIHZvaWQgc2V0TWF5U3Rh
cnRNZWRpYVdoZW5JbldpbmRvdyhib29sKTsKKyAgICBib29sIG1heVN0YXJ0TWVkaWFXaGVuSW5X
aW5kb3coKSBjb25zdCB7IHJldHVybiBtX21heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3c7IH0KIAog
ICAgIC8vIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQKICAgICB2aXJ0dWFsIE5hdGl2ZVdlYk1v
dXNlRXZlbnQqIGN1cnJlbnRseVByb2Nlc3NlZE1vdXNlRG93bkV2ZW50KCk7CkBAIC04ODQsNiAr
ODg1LDggQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gdGFrZVZpZXdTbmFwc2hvdCgpOwogI2VuZGlmCisgICAgICAgIAorICAgIHZvaWQgc2V0
VGh1bWJuYWlsU2NhbGUoZG91YmxlKTsKIAogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFn
ZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFn
ZUNvbmZpZ3VyYXRpb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0KaW5kZXggNjlmNjM1ZC4uYTJlNDIxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXJNYWMubW0KQEAgLTM5Miw3ICszOTIsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0
SXRlbQogICAgICAgICAgICAgbV9jdXJyZW50U3dpcGVMaXZlTGF5ZXJzLmFwcGVuZChsYXllcik7
CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBzd2lwZUFyZWEgPSByb290Q29udGVu
dExheWVyLmZyYW1lOworICAgICAgICBzd2lwZUFyZWEgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgp
LCBtX3dlYlBhZ2VQcm94eS5kcmF3aW5nQXJlYSgpLT5zaXplKCkpOwogICAgICAgICBtX2N1cnJl
bnRTd2lwZUxpdmVMYXllcnMuYXBwZW5kKHJvb3RDb250ZW50TGF5ZXIpOwogICAgIH0KIApAQCAt
NDU1LDcgKzQ1NSw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVTd2lwZUdl
c3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlCiAgICAgaWYgKCFtX2N1c3Rv
bVN3aXBlVmlld3MuaXNFbXB0eSgpKQogICAgICAgICB3aWR0aCA9IG1fY3VycmVudFN3aXBlQ3Vz
dG9tVmlld0JvdW5kcy53aWR0aCgpOwogICAgIGVsc2UKLSAgICAgICAgd2lkdGggPSBtX3dlYlBh
Z2VQcm94eS5hY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKCkuZnJhbWUuc2l6ZS53aWR0
aDsKKyAgICAgICAgd2lkdGggPSBtX3dlYlBhZ2VQcm94eS5kcmF3aW5nQXJlYSgpLT5zaXplKCku
d2lkdGgoKTsKIAogICAgIGRvdWJsZSBzd2lwaW5nTGF5ZXJPZmZzZXQgPSBmbG9vcih3aWR0aCAq
IHByb2dyZXNzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGQ4YWE2MmYuLmY0MTQ0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQzNyw2ICs0MzcsOCBA
QAogCQkyRDQyOUJGRDE3MjFFMkM3MDBFQzY4MUYgLyogUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENDI5QkZC
MTcyMUUyQkEwMEVDNjgxRiAvKiBQREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tICovOyB9OwogCQky
RDQ3QjU2QzE4MTA3MTRFMDAzQTNBRUUgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDQ3QjU2QTE4MTA3
MTRFMDAzQTNBRUUgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0gKi87IH07CiAJCTJENDdC
NTZEMTgxMDcxNEUwMDNBM0FFRSAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ0N0I1NkIxODEwNzE0RTAw
M0EzQUVFIC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggKi87IH07CisJCTJENkIzNzFCMThB
OTY3QUQwMDQyQUU4MCAvKiBXS1RodW1ibmFpbFZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENkIzNzE5MThBOTY3QUQwMDQyQUU4MCAvKiBXS1Ro
dW1ibmFpbFZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkyRDZCMzcxQzE4QTk2N0FEMDA0MkFFODAgLyogV0tUaHVtYm5haWxWaWV3Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ2QjM3MUExOEE5
NjdBRDAwNDJBRTgwIC8qIFdLVGh1bWJuYWlsVmlldy5tbSAqLzsgfTsKIAkJMkQ2Q0QxMTkxODkw
NThBNTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDZDRDExNzE4OTA1OEE1MDBFNUE0QTAgLyogVmll
d1NuYXBzaG90U3RvcmUuaCAqLzsgfTsKIAkJMkQ2Q0QxMUExODkwNThBNTAwRTVBNEEwIC8qIFZp
ZXdTbmFwc2hvdFN0b3JlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkQ2Q0QxMTgxODkwNThBNTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLm1t
ICovOyB9OwogCQkyRDgxOUI5RTE4NjI3RUU5MDAxRjAzRDEgLyogVmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRDgxOUI5OTE4NjI3NUIzMDAxRjAzRDEgLyogVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxl
Y3Rvci5jcHAgKi87IH07CkBAIC00ODIsNiArNDg0LDcgQEAKIAkJMkRBOTQ0QjkxODg0RUEzOTAw
RUQ4NkRCIC8qIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0QjUxODg0RUEzNTAwRUQ4NkRCIC8q
IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5SU9TLm1tICovOyB9OwogCQkyREE5NDRCQTE4ODRFQTND
MDBFRDg2REIgLyogV2ViUGFnZUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJEQTk0NEI2MTg4NEVBMzUwMEVEODZEQiAvKiBXZWJQYWdlSU9TLm1t
ICovOyB9OwogCQkyREE5NDRCRDE4ODUxMUU3MDBFRDg2REIgLyogTmV0d29ya1Byb2Nlc3NJT1Mu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDRC
QzE4ODUxMUU3MDBFRDg2REIgLyogTmV0d29ya1Byb2Nlc3NJT1MubW0gKi87IH07CisJCTJEQUNF
NjRFMThBREJGRjAwMEU0Q0E3NiAvKiBXS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBQ0U2NEQxOEFEQkZGMDAw
RTRDQTc2IC8qIFdLVGh1bWJuYWlsVmlld0ludGVybmFsLmggKi87IH07CiAJCTJEREUwQUZBMTgy
OThDQzkwMEY5N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEREUwQUY4MTgyOThDQzkw
MEY5N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaCAqLzsgfTsKIAkJMkRE
RTBBRkIxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEREUwQUY5
MTgyOThDQzkwMEY5N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0gKi87
IH07CiAJCTJERjk1OTNCMThBNDI0MTIwMDk3ODVBMSAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJJ
T1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREY5
NTkzNDE4QTQyNDEyMDA5Nzg1QTEgLyogVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tICovOyB9
OwpAQCAtMjEzNCw2ICsyMTM3LDggQEAKIAkJMkQ0MjlCRkIxNzIxRTJCQTAwRUM2ODFGIC8qIFBE
RlBsdWdpblBhc3N3b3JkRmllbGQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBQREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tOyBwYXRoID0gUERGL1BERlBsdWdpblBh
c3N3b3JkRmllbGQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENDdCNTZBMTgx
MDcxNEUwMDNBM0FFRSAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDQ3QjU2QjE4MTA3MTRFMDAzQTNBRUUgLyog
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMkQ2QjM3MTkxOEE5NjdBRDAwNDJBRTgwIC8qIFdLVGh1bWJuYWlsVmlldy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1RodW1ibmFpbFZpZXcuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMkQ2QjM3MUExOEE5NjdBRDAwNDJBRTgwIC8qIFdLVGh1bWJuYWls
Vmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLVGh1bWJu
YWlsVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ2Q0QxMTcxODkwNThB
NTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFZpZXdTbmFwc2hvdFN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJENkNEMTE4MTg5MDU4QTUwMEU1QTRBMCAvKiBWaWV3U25hcHNob3RTdG9yZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZpZXdTbmFwc2hvdFN0b3JlLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDcwQUIxMzE4QTFENTFBMDAwMjZENkUg
LyogSW5mby1pT1MucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgcGF0aCA9ICJJbmZvLWlPUy5wbGlzdCI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTg0LDYgKzIxODksNyBAQAogCQkyREE5NDRCNTE4
ODRFQTM1MDBFRDg2REIgLyogV2ViQmFja0ZvcndhcmRMaXN0UHJveHlJT1MubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJCYWNrRm9yd2FyZExpc3RQcm94eUlP
Uy5tbTsgcGF0aCA9IGlvcy9XZWJCYWNrRm9yd2FyZExpc3RQcm94eUlPUy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBOTQ0QjYxODg0RUEzNTAwRUQ4NkRCIC8qIFdlYlBhZ2VJ
T1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJQYWdlSU9T
Lm1tOyBwYXRoID0gaW9zL1dlYlBhZ2VJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJEQTk0NEJDMTg4NTExRTcwMEVEODZEQiAvKiBOZXR3b3JrUHJvY2Vzc0lPUy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzSU9TLm1t
OyBwYXRoID0gTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkyREFDRTY0RDE4QURCRkYwMDBFNENBNzYgLyogV0tUaHVt
Ym5haWxWaWV3SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tU
aHVtYm5haWxWaWV3SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRE
RTBBRjgxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMYXllclRyZWVQcm9wZXJ0
eUFwcGxpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRERTBBRjkxODI5OEND
OTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBw
bGllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRGOTU5MzQxOEE0MjQxMjAw
OTc4NUExIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IFZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbTsgcGF0aCA9
IGlvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC00MzM4LDYgKzQzNDQsOSBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKIAkJCQkxQTQzRTgyNjE4OEYzOEUyMDA5RTREMzAgLyogRGVwcmVjYXRlZCAqLywKKwkJ
CQkyRDZCMzcxOTE4QTk2N0FEMDA0MkFFODAgLyogV0tUaHVtYm5haWxWaWV3LmggKi8sCisJCQkJ
MkRBQ0U2NEQxOEFEQkZGMDAwRTRDQTc2IC8qIFdLVGh1bWJuYWlsVmlld0ludGVybmFsLmggKi8s
CisJCQkJMkQ2QjM3MUExOEE5NjdBRDAwNDJBRTgwIC8qIFdLVGh1bWJuYWlsVmlldy5tbSAqLywK
IAkJCQkxQTRENjY0QTE4QTMwMzBFMDBEODJFMjEgLyogV0tGcmFtZUluZm8uaCAqLywKIAkJCQkx
QTRENjY0OTE4QTMwMzBFMDBEODJFMjEgLyogV0tGcmFtZUluZm8ubW0gKi8sCiAJCQkJMUE0RDY2
NEQxOEEzMDMxQjAwRDgyRTIxIC8qIFdLRnJhbWVJbmZvSW50ZXJuYWwuaCAqLywKQEAgLTY0MDYs
NiArNjQxNSw3IEBACiAJCQkJMUEyRDgyQTUxMjdGNEVBQjAwMUVCOTYyIC8qIE5QT2JqZWN0TWVz
c2FnZVJlY2VpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTJEODQzQTEyN0Y2NUQ1MDAxRUI5
NjIgLyogTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUEyRDgyQTcxMjdGNEVBQjAwMUVCOTYyIC8qIE5QT2JqZWN0UHJveHkuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTJENkIzNzFCMThBOTY3QUQwMDQyQUU4MCAvKiBXS1RodW1ibmFpbFZpZXcuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBMkQ4MkE5MTI3RjRFQUIwMDFFQjk2MiAvKiBOUFJlbW90ZU9i
amVjdE1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyMTYxQjAxMUYzNzY2NDAwOEFEMEY1IC8q
IE5QUnVudGltZU9iamVjdE1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRBMDQ5QjgxODBDQ0Qw
QTAwQUFGQTlFIC8qIEdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC02
NTY1LDYgKzY1NzUsNyBAQAogCQkJCTFBMjQ2NEYzMTg5MUU0NTEwMDIzNEM1QiAvKiBBUElMb2Fk
ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMUREN0IyMTE0REMzOTYwMDVBREFGMyAv
KiBXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkY1ODlCMTJB
ODgzODgwMDYyOTUzMCAvKiBXZWJDcmVkZW50aWFsLmggaW4gSGVhZGVycyAqLywKKwkJCQkyREFD
RTY0RTE4QURCRkYwMDBFNENBNzYgLyogV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxNTc4QjgzMTIwOUVDRUYwMEEzN0M0QSAvKiBBUElEYXRhLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGNkEyNUZERDEyQURDNkNDMDBEQzQwQ0MgLyogV2ViRGF0YWJhc2VNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNjJBNzZCNzEyQjFCMjVGMDAwNUYxQjYgLyogV2Vi
RGF0YWJhc2VNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAtODExMiw2ICs4MTIz
LDcgQEAKIAkJCQk1MTBBRkZCOTE2NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJM0Y4ODlEMTQxODg3NzhDOTAwRkVBREFGIC8qIFdlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUYwNjBF
MTE2NTQzMTg1MDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMkQ2QjM3MUMxOEE5NjdBRDAwNDJBRTgwIC8qIFdLVGh1bWJu
YWlsVmlldy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3OEUxQTNEMTgxRUQ2RkYwMDMxMDA3QSAv
KiBBUElPYmplY3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUZCMDhGRjE2MzlERTFBMDBFQzMy
NEEgLyogV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
NTk0N0E3MTg3QjUxNzYwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvck1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggOWJjMWRlMS4uNTMwMzMzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKQEAgLTky
LDYgKzkyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFeHBvc2VkUmVjdChjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJl
Y3QgZXhwb3NlZFJlY3QoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEN1c3RvbUZp
eGVkUG9zaXRpb25SZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpID0gMDsKKyAgICAKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4JikgeyB9CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgbWFpbkZyYW1lU2Nyb2xsYWJp
bGl0eUNoYW5nZWQoYm9vbCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAppbmRleCBjNjgyMTM0Li4wNDQyOTRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yOTYsNiArMjk2LDggQEAg
V2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgLCBtX3ZpZXdTdGF0ZShwYXJhbWV0ZXJzLnZpZXdT
dGF0ZSkKICAgICAsIG1fcHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRCeVdlYlByZWZlcmVuY2Uo
IlByb2Nlc3Mgc3VwcHJlc3Npb24gaXMgZGlzYWJsZWQuIikKICAgICAsIG1fcGVuZGluZ05hdmln
YXRpb25JRCgwKQorICAgICwgbV9wcmVUaHVtYm5haWxQYWdlU2NhbGUoMSkKKyAgICAsIG1fdGh1
bWJuYWlsU2NhbGUoMSkKIHsKICAgICBBU1NFUlQobV9wYWdlSUQpOwogICAgIC8vIEZJWE1FOiBU
aGlzIGlzIGEgbm9uLWlkZWFsIGxvY2F0aW9uIGZvciB0aGlzIFNldHRpbmcgYW5kCkBAIC00MTc1
LDUgKzQxNzcsNDUgQEAgUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gV2ViUGFnZTo6Y3JlYXRl
RG9jdW1lbnRMb2FkZXIoRnJhbWUmIGZyYW1lLCBjb25zdCBSZXMKIAogICAgIHJldHVybiBkb2N1
bWVudExvYWRlci5yZWxlYXNlKCk7CiB9CisgICAgCit2b2lkIFdlYlBhZ2U6OnNldFRodW1ibmFp
bFNjYWxlKGRvdWJsZSBkZXN0aW5hdGlvblNjYWxlKQoreworICAgIGlmIChkZXN0aW5hdGlvblNj
YWxlID09IG1fdGh1bWJuYWlsU2NhbGUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICAvLyBT
Y2FsaW5nLCBzYXZlIHRoZSBzY2FsZSBhbmQgc2Nyb2xsIHBvc2l0aW9uIHRvIGJlIHJlc3RvcmVk
IGxhdGVyLgorICAgIGlmIChkZXN0aW5hdGlvblNjYWxlICE9IDEpIHsKKyAgICAgICAgaWYgKG1f
dGh1bWJuYWlsU2NhbGUgPT0gMSkgeworICAgICAgICAgICAgbV9wcmVUaHVtYm5haWxQYWdlU2Nh
bGUgPSBwYWdlU2NhbGVGYWN0b3IoKTsKKyAgICAgICAgICAgIG1fcHJlVGh1bWJuYWlsU2Nyb2xs
UG9zaXRpb24gPSBtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+c2Nyb2xsUG9zaXRpb24oKTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbV90aHVtYm5haWxTY2FsZSA9IGRlc3RpbmF0
aW9uU2NhbGU7CisKKyAgICAgICAgLy8gU2NhbGUgdGhlIHBhZ2UsIGJ1dCBsZWF2ZSB0aGUgb3Jp
Z2luYWwgcGFnZSBzY2FsZSBpbnRhY3QgaWYgdGhlcmUgd2FzIGFueS4KKyAgICAgICAgc2NhbGVQ
YWdlKG1fdGh1bWJuYWlsU2NhbGUgKiBtX3ByZVRodW1ibmFpbFBhZ2VTY2FsZSwgSW50UG9pbnQo
KSk7CisKKyAgICAgICAgLy8gU2Nyb2xsIGFzIGZhciBhcyB3ZSBjYW4gdG93YXJkcyB0aGUgb3Jp
Z2luYWwgc2Nyb2xsIHBvc2l0aW9uIGluIHRoZSBzY2FsZWQgcGFnZS4KKyAgICAgICAgLy8gVGhp
cyBtYXkgZ2V0IGNvbnN0cmFpbmVkOyB3ZSdsbCB0cmFuc2Zvcm0gdGhlIGRyYXdpbmcgYXJlYSB0
byBleHBvc2UgdGhlIHJpZ2h0IHBhcnQgb2YgdGhlIHBhZ2UuCisgICAgICAgIG1fcGFnZS0+bWFp
bkZyYW1lKCkudmlldygpLT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludChtX3ByZVRodW1ibmFp
bFNjcm9sbFBvc2l0aW9uLngoKSAqIG1fdGh1bWJuYWlsU2NhbGUsIG1fcHJlVGh1bWJuYWlsU2Ny
b2xsUG9zaXRpb24ueSgpICogbV90aHVtYm5haWxTY2FsZSkpOworICAgICAgICAKKyAgICAgICAg
ZG91YmxlIGludmVyc2VTY2FsZSA9IDEgLyBtX3RodW1ibmFpbFNjYWxlOworICAgICAgICBJbnRQ
b2ludCBuZXdTY3JvbGxQb3NpdGlvbiA9IG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT5zY3Jv
bGxQb3NpdGlvbigpOworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07Cisg
ICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoKG5ld1Njcm9sbFBvc2l0aW9uLngoKSAqIGludmVy
c2VTY2FsZSkgLSBtX3ByZVRodW1ibmFpbFNjcm9sbFBvc2l0aW9uLngoKSwgKG5ld1Njcm9sbFBv
c2l0aW9uLnkoKSAqIGludmVyc2VTY2FsZSkgLSBtX3ByZVRodW1ibmFpbFNjcm9sbFBvc2l0aW9u
LnkoKSk7CisgICAgICAgIHRyYW5zZm9ybS5zY2FsZShpbnZlcnNlU2NhbGUpOworICAgICAgICAK
KyAgICAgICAgZHJhd2luZ0FyZWEoKS0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgCisgICAgLy8gVW5zY2FsaW5nLCByZXN0b3JlIHRoZSBvcmln
aW5hbCBzY2FsZSBhbmQgc2Nyb2xsIHBvc2l0aW9uLgorICAgIGlmIChkZXN0aW5hdGlvblNjYWxl
ID09IDEgJiYgbV90aHVtYm5haWxTY2FsZSAhPSAxKSB7CisgICAgICAgIHNjYWxlUGFnZShtX3By
ZVRodW1ibmFpbFBhZ2VTY2FsZSwgSW50UG9pbnQoKSk7CisgICAgICAgIG1fcGFnZS0+bWFpbkZy
YW1lKCkudmlldygpLT5zZXRTY3JvbGxQb3NpdGlvbihtX3ByZVRodW1ibmFpbFNjcm9sbFBvc2l0
aW9uKTsKKyAgICAgICAgZHJhd2luZ0FyZWEoKS0+c2V0VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9u
TWF0cml4KCkpOworICAgICAgICBtX3RodW1ibmFpbFNjYWxlID0gMTsKKyAgICB9Cit9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKaW5kZXggYTBhNDU2ZS4uOTBlOTIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0zNjksNiArMzY5LDggQEAgcHVibGljOgogCiAg
ICAgTGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9s
YXllckhvc3RpbmdNb2RlOyB9CiAgICAgdm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKHVuc2lnbmVk
KTsKKyAgICAKKyAgICB2b2lkIHNldFRodW1ibmFpbFNjYWxlKGRvdWJsZSk7CiAKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgdm9pZCB1cGRhdGVQbHVnaW5zQWN0aXZlQW5kRm9jdXNlZFN0YXRlKCk7
CkBAIC0xMDg2LDYgKzEwODgsMTAgQEAgcHJpdmF0ZToKICAgICBVc2VyQWN0aXZpdHkgbV9wcm9j
ZXNzU3VwcHJlc3Npb25EaXNhYmxlZEJ5V2ViUHJlZmVyZW5jZTsKIAogICAgIHVpbnQ2NF90IG1f
cGVuZGluZ05hdmlnYXRpb25JRDsKKyAgICAKKyAgICBkb3VibGUgbV9wcmVUaHVtYm5haWxQYWdl
U2NhbGU7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9wcmVUaHVtYm5haWxTY3JvbGxQb3NpdGlv
bjsKKyAgICBkb3VibGUgbV90aHVtYm5haWxTY2FsZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgppbmRleCBiNjJmZDQxLi40NTFiNzliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMzI3
LDQgKzMyNyw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNl
dE1haW5GcmFtZUluVmlld1NvdXJjZU1vZGUoYm9vbCBpblZpZXdTb3VyY2VNb2RlKQogICAgIAog
ICAgIFNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcih1aW50MzJfdCBwaW5uaW5nKQorICAgIAorICAg
IFNldFRodW1ibmFpbFNjYWxlKGRvdWJsZSBzY2FsZSkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEuaAppbmRleCAxZWUyYTA1Li5hYzAwMjhhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCkBAIC0zOCw2ICszOCw4IEBACiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKKyNpbmNsdWRl
IDxXZWJDb3JlL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CisKIE9CSkNfQ0xBU1MgQ0FMYXllcjsK
IE9CSkNfQ0xBU1MgV0tDb250ZW50TGF5ZXI7CiAKQEAgLTExMyw2ICsxMTUsOCBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2Vi
Q29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJyaWRlOwogICAgIHZvaWQgYXBwbHlUcmFuc2ll
bnRab29tVG9QYWdlKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOwog
CisgICAgdmlydHVhbCB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYpIG92ZXJyaWRlOworCiAgICAgdm9pZCB1cGRhdGVMYXllckhvc3RpbmdDb250
ZXh0KCk7CiAKICAgICB2b2lkIHNldFJvb3RDb21wb3NpdGluZ0xheWVyKENBTGF5ZXIgKik7CkBA
IC0xMzIsMTcgKzEzNiwxNyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVy
SG9zdGluZ0NvbnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4dDsKIAorICAgIFJldGFpblB0cjxD
QUxheWVyPiBtX2hvc3RpbmdMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9yb290TGF5
ZXI7Ci0gICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fcGVuZGluZ1Jvb3RDb21wb3NpdGluZ0xheWVy
OwotCiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fZGVidWdJbmZvTGF5ZXI7CiAKKyAgICBSZXRh
aW5QdHI8Q0FMYXllcj4gbV9wZW5kaW5nUm9vdExheWVyOworCiAgICAgdHlwZWRlZiBIYXNoTWFw
PFBhZ2VPdmVybGF5Kiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+PiBQ
YWdlT3ZlcmxheUxheWVyTWFwOwogICAgIFBhZ2VPdmVybGF5TGF5ZXJNYXAgbV9wYWdlT3Zlcmxh
eUxheWVyczsKICAgICBtdXRhYmxlIEhhc2hNYXA8Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXll
ciosIFJldGFpblB0cjxDQUxheWVyPj4gbV9wYWdlT3ZlcmxheVBsYXRmb3JtTGF5ZXJzOwogCiAg
ICAgYm9vbCBtX2lzUGFpbnRpbmdTdXNwZW5kZWQ7Ci0gICAgYm9vbCBtX2hhc1Jvb3RDb21wb3Np
dGluZ0xheWVyOwogCiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fZXhwb3NlZFJlY3Q7CiAgICAg
V2ViQ29yZTo6RmxvYXRSZWN0IG1fc2Nyb2xsZWRFeHBvc2VkUmVjdDsKQEAgLTE1Myw2ICsxNTcs
OCBAQCBwcml2YXRlOgogCiAgICAgZG91YmxlIG1fdHJhbnNpZW50Wm9vbVNjYWxlOwogICAgIFdl
YkNvcmU6OkZsb2F0UG9pbnQgbV90cmFuc2llbnRab29tT3JpZ2luOworCisgICAgV2ViQ29yZTo6
VHJhbnNmb3JtYXRpb25NYXRyaXggbV90cmFuc2Zvcm07CiB9OwogCiBEUkFXSU5HX0FSRUFfVFlQ
RV9DQVNUUyhUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSwgdHlwZSgpID09IERyYXdpbmdB
cmVhVHlwZVRpbGVkQ29yZUFuaW1hdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5tbQppbmRleCA5MDkxNjVkLi41MmM2ZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTc4LDEyICs3OCwxMCBAQCBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEoV2ViUGFn
ZSogd2ViUGFnZSwgYwogewogICAgIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2V0dGluZ3MoKS5z
ZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKIAotICAgIG1fcm9vdExheWVyID0gW0NBTGF5
ZXIgbGF5ZXJdOwotCi0gICAgQ0dSZWN0IHJvb3RMYXllckZyYW1lID0gbV93ZWJQYWdlLT5ib3Vu
ZHMoKTsKLSAgICBtX3Jvb3RMYXllci5nZXQoKS5mcmFtZSA9IHJvb3RMYXllckZyYW1lOwotICAg
IG1fcm9vdExheWVyLmdldCgpLm9wYXF1ZSA9IFlFUzsKLSAgICBtX3Jvb3RMYXllci5nZXQoKS5n
ZW9tZXRyeUZsaXBwZWQgPSBZRVM7CisgICAgbV9ob3N0aW5nTGF5ZXIgPSBbQ0FMYXllciBsYXll
cl07CisgICAgW21faG9zdGluZ0xheWVyIHNldEZyYW1lOm1fd2ViUGFnZS0+Ym91bmRzKCldOwor
ICAgIFttX2hvc3RpbmdMYXllciBzZXRPcGFxdWU6WUVTXTsKKyAgICBbbV9ob3N0aW5nTGF5ZXIg
c2V0R2VvbWV0cnlGbGlwcGVkOllFU107CiAKICAgICB1cGRhdGVMYXllckhvc3RpbmdDb250ZXh0
KCk7CiAgICAgc2V0Q29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpOwpAQCAtMTI0LDE0
ICsxMjIsMTQgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6ZGlkQ2hhbmdl
U2Nyb2xsT2Zmc2V0Rm9yQW55RnJhbWUoKQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhOjpzZXRSb290Q29tcG9zaXRpbmdMYXllcihHcmFwaGljc0xheWVyKiBncmFwaGljc0xh
eWVyKQogewotICAgIENBTGF5ZXIgKnJvb3RDb21wb3NpdGluZ0xheWVyID0gZ3JhcGhpY3NMYXll
ciA/IGdyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSA6IG5pbDsKKyAgICBDQUxheWVyICpy
b290TGF5ZXIgPSBncmFwaGljc0xheWVyID8gZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXllcigp
IDogbmlsOwogCiAgICAgaWYgKG1fbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbikgewotICAgICAgICBt
X3BlbmRpbmdSb290Q29tcG9zaXRpbmdMYXllciA9IHJvb3RDb21wb3NpdGluZ0xheWVyOworICAg
ICAgICBtX3BlbmRpbmdSb290TGF5ZXIgPSByb290TGF5ZXI7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBzZXRSb290Q29tcG9zaXRpbmdMYXllcihyb290Q29tcG9zaXRpbmdMYXllcik7
CisgICAgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIocm9vdExheWVyKTsKIH0KIAogdm9pZCBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50KCkKQEAgLTIyMSw3ICsyMTks
NyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRQYWdlT3ZlcmxheU5l
ZWRzRGlzcGxheShQYWdlT3ZlcmxheSogcGFnZQogCiAgICAgaWYgKCFsYXllci0+ZHJhd3NDb250
ZW50KCkpIHsKICAgICAgICAgbGF5ZXItPnNldERyYXdzQ29udGVudCh0cnVlKTsKLSAgICAgICAg
bGF5ZXItPnNldFNpemUoZXhwYW5kZWRJbnRTaXplKEZsb2F0U2l6ZShtX3Jvb3RMYXllci5nZXQo
KS5mcmFtZS5zaXplKSkpOworICAgICAgICBsYXllci0+c2V0U2l6ZShleHBhbmRlZEludFNpemUo
RmxvYXRTaXplKG1faG9zdGluZ0xheWVyLmdldCgpLmZyYW1lLnNpemUpKSk7CiAgICAgfQogCiAg
ICAgbGF5ZXItPnNldE5lZWRzRGlzcGxheUluUmVjdChyZWN0KTsKQEAgLTM4MCwxMiArMzc4LDEy
IEBAIGJvb2wgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKCkKIAog
ICAgIG1fd2ViUGFnZS0+bGF5b3V0SWZOZWVkZWQoKTsKIAotICAgIGlmIChtX3BlbmRpbmdSb290
Q29tcG9zaXRpbmdMYXllcikgewotICAgICAgICBzZXRSb290Q29tcG9zaXRpbmdMYXllcihtX3Bl
bmRpbmdSb290Q29tcG9zaXRpbmdMYXllci5nZXQoKSk7Ci0gICAgICAgIG1fcGVuZGluZ1Jvb3RD
b21wb3NpdGluZ0xheWVyID0gbnVsbHB0cjsKKyAgICBpZiAobV9wZW5kaW5nUm9vdExheWVyKSB7
CisgICAgICAgIHNldFJvb3RDb21wb3NpdGluZ0xheWVyKG1fcGVuZGluZ1Jvb3RMYXllci5nZXQo
KSk7CisgICAgICAgIG1fcGVuZGluZ1Jvb3RMYXllciA9IG51bGxwdHI7CiAgICAgfQogCi0gICAg
RmxvYXRSZWN0IHZpc2libGVSZWN0ID0gW21fcm9vdExheWVyIGZyYW1lXTsKKyAgICBGbG9hdFJl
Y3QgdmlzaWJsZVJlY3QgPSBbbV9ob3N0aW5nTGF5ZXIgZnJhbWVdOwogICAgIHZpc2libGVSZWN0
LmludGVyc2VjdChtX3Njcm9sbGVkRXhwb3NlZFJlY3QpOwogCiAgICAgZm9yIChQYWdlT3Zlcmxh
eUxheWVyTWFwOjppdGVyYXRvciBpdCA9IG1fcGFnZU92ZXJsYXlMYXllcnMuYmVnaW4oKSwgZW5k
ID0gbV9wYWdlT3ZlcmxheUxheWVycy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CkBAIC00MTQs
OCArNDEyLDggQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c3VzcGVuZFBh
aW50aW5nKCkKICAgICBBU1NFUlQoIW1faXNQYWludGluZ1N1c3BlbmRlZCk7CiAgICAgbV9pc1Bh
aW50aW5nU3VzcGVuZGVkID0gdHJ1ZTsKIAotICAgIFttX3Jvb3RMYXllciBzZXRWYWx1ZTooaWQp
a0NGQm9vbGVhblRydWUgZm9yS2V5OkAiTlNDQVZpZXdSZW5kZXJQYXVzZWQiXTsKLSAgICBbW05T
Tm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOkAi
TlNDQVZpZXdSZW5kZXJEaWRQYXVzZU5vdGlmaWNhdGlvbiIgb2JqZWN0Om5pbCB1c2VySW5mbzpb
TlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0Om1fcm9vdExheWVyLmdldCgpIGZvcktl
eTpAImxheWVyIl1dOworICAgIFttX2hvc3RpbmdMYXllciBzZXRWYWx1ZTpAWUVTIGZvcktleTpA
Ik5TQ0FWaWV3UmVuZGVyUGF1c2VkIl07CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZh
dWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpAIk5TQ0FWaWV3UmVuZGVyRGlkUGF1c2VO
b3RpZmljYXRpb24iIG9iamVjdDpuaWwgdXNlckluZm86W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5
V2l0aE9iamVjdDptX2hvc3RpbmdMYXllci5nZXQoKSBmb3JLZXk6QCJsYXllciJdXTsKIH0KIAog
dm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6cmVzdW1lUGFpbnRpbmcoKQpAQCAt
NDI3LDggKzQyNSw4IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnJlc3Vt
ZVBhaW50aW5nKCkKICAgICB9CiAgICAgbV9pc1BhaW50aW5nU3VzcGVuZGVkID0gZmFsc2U7CiAK
LSAgICBbbV9yb290TGF5ZXIgc2V0VmFsdWU6KGlkKWtDRkJvb2xlYW5GYWxzZSBmb3JLZXk6QCJO
U0NBVmlld1JlbmRlclBhdXNlZCJdOwotICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVs
dENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6QCJOU0NBVmlld1JlbmRlckRpZFJlc3VtZU5v
dGlmaWNhdGlvbiIgb2JqZWN0Om5pbCB1c2VySW5mbzpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlX
aXRoT2JqZWN0Om1fcm9vdExheWVyLmdldCgpIGZvcktleTpAImxheWVyIl1dOworICAgIFttX2hv
c3RpbmdMYXllciBzZXRWYWx1ZTpATk8gZm9yS2V5OkAiTlNDQVZpZXdSZW5kZXJQYXVzZWQiXTsK
KyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRp
b25OYW1lOkAiTlNDQVZpZXdSZW5kZXJEaWRSZXN1bWVOb3RpZmljYXRpb24iIG9iamVjdDpuaWwg
dXNlckluZm86W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDptX2hvc3RpbmdMYXll
ci5nZXQoKSBmb3JLZXk6QCJsYXllciJdXTsKIH0KIAogdm9pZCBUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6c2V0RXhwb3NlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiBleHBvc2VkUmVjdCkK
QEAgLTQ5OCw3ICs0OTYsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1
cGRhdGVHZW9tZXRyeShjb25zdCBJbnRTaXplJiB2aWV3U2l6ZSwgY29ucwogICAgIFtDQVRyYW5z
YWN0aW9uIGJlZ2luXTsKICAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNd
OwogCi0gICAgbV9yb290TGF5ZXIuZ2V0KCkuZnJhbWUgPSBDR1JlY3RNYWtlKGxheWVyUG9zaXRp
b24ud2lkdGgoKSwgbGF5ZXJQb3NpdGlvbi5oZWlnaHQoKSwgdmlld1NpemUud2lkdGgoKSwgdmll
d1NpemUuaGVpZ2h0KCkpOworICAgIFttX2hvc3RpbmdMYXllciBzZXRGcmFtZTpDR1JlY3RNYWtl
KGxheWVyUG9zaXRpb24ud2lkdGgoKSwgbGF5ZXJQb3NpdGlvbi5oZWlnaHQoKSwgdmlld1NpemUu
d2lkdGgoKSwgdmlld1NpemUuaGVpZ2h0KCkpXTsKIAogICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1p
dF07CiAgICAgCkBAIC01NTksOCArNTU3LDggQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYTo6dXBkYXRlTGF5ZXJIb3N0aW5nQ29udGV4dCgpCiAjZW5kaWYKICAgICB9CiAKLSAg
ICBpZiAobV9oYXNSb290Q29tcG9zaXRpbmdMYXllcikKLSAgICAgICAgbV9sYXllckhvc3RpbmdD
b250ZXh0LT5zZXRSb290TGF5ZXIobV9yb290TGF5ZXIuZ2V0KCkpOworICAgIGlmIChtX3Jvb3RM
YXllcikKKyAgICAgICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5zZXRSb290TGF5ZXIobV9ob3N0
aW5nTGF5ZXIuZ2V0KCkpOwogCiAgICAgaWYgKGNvbG9yU3BhY2UpCiAgICAgICAgIG1fbGF5ZXJI
b3N0aW5nQ29udGV4dC0+c2V0Q29sb3JTcGFjZShjb2xvclNwYWNlLmdldCgpKTsKQEAgLTU3MCwx
OSArNTY4LDIwIEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldFJvb3RD
b21wb3NpdGluZ0xheWVyKENBTGF5ZXIgKmxheWVyKQogewogICAgIEFTU0VSVCghbV9sYXllclRy
ZWVTdGF0ZUlzRnJvemVuKTsKIAotICAgIGJvb2wgaGFkUm9vdENvbXBvc2l0aW5nTGF5ZXIgPSBt
X2hhc1Jvb3RDb21wb3NpdGluZ0xheWVyOwotICAgIG1faGFzUm9vdENvbXBvc2l0aW5nTGF5ZXIg
PSAhIWxheWVyOwotCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAgIFtDQVRyYW5zYWN0
aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107CiAKLSAgICBtX3Jvb3RMYXllci5nZXQoKS5zdWJs
YXllcnMgPSBtX2hhc1Jvb3RDb21wb3NpdGluZ0xheWVyID8gW05TQXJyYXkgYXJyYXlXaXRoT2Jq
ZWN0OmxheWVyXSA6IFtOU0FycmF5IGFycmF5XTsKKyAgICBbbV9ob3N0aW5nTGF5ZXIgc2V0U3Vi
bGF5ZXJzOmxheWVyID8gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OmxheWVyXSA6IFtOU0FycmF5
IGFycmF5XV07CisKKyAgICBib29sIGhhZFJvb3RMYXllciA9ICEhbV9yb290TGF5ZXI7CisgICAg
bV9yb290TGF5ZXIgPSBsYXllcjsKKyAgICBbbV9yb290TGF5ZXIgc2V0U3VibGF5ZXJUcmFuc2Zv
cm06bV90cmFuc2Zvcm1dOwogCi0gICAgaWYgKGhhZFJvb3RDb21wb3NpdGluZ0xheWVyICE9IG1f
aGFzUm9vdENvbXBvc2l0aW5nTGF5ZXIpCi0gICAgICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+
c2V0Um9vdExheWVyKG1faGFzUm9vdENvbXBvc2l0aW5nTGF5ZXIgPyBtX3Jvb3RMYXllci5nZXQo
KSA6IDApOworICAgIGlmIChoYWRSb290TGF5ZXIgIT0gISFsYXllcikKKyAgICAgICAgbV9sYXll
ckhvc3RpbmdDb250ZXh0LT5zZXRSb290TGF5ZXIobGF5ZXIgPyBtX2hvc3RpbmdMYXllci5nZXQo
KSA6IDApOwogCiAgICAgZm9yIChQYWdlT3ZlcmxheUxheWVyTWFwOjppdGVyYXRvciBpdCA9IG1f
cGFnZU92ZXJsYXlMYXllcnMuYmVnaW4oKSwgZW5kID0gbV9wYWdlT3ZlcmxheUxheWVycy5lbmQo
KTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBbbV9yb290TGF5ZXIgYWRkU3VibGF5ZXI6aXQt
PnZhbHVlLT5wbGF0Zm9ybUxheWVyKCldOworICAgICAgICBbbV9ob3N0aW5nTGF5ZXIgYWRkU3Vi
bGF5ZXI6aXQtPnZhbHVlLT5wbGF0Zm9ybUxheWVyKCldOwogCiAgICAgaWYgKFRpbGVkQmFja2lu
ZyogdGlsZWRCYWNraW5nID0gbWFpbkZyYW1lVGlsZWRCYWNraW5nKCkpCiAgICAgICAgIHRpbGVk
QmFja2luZy0+c2V0QWdncmVzc2l2ZWx5UmV0YWluc1RpbGVzKG1fd2ViUGFnZS0+Y29yZVBhZ2Uo
KS0+c2V0dGluZ3MoKS5hZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVuYWJsZWQoKSk7CkBAIC02MDgs
NyArNjA3LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y3JlYXRlUGFn
ZU92ZXJsYXlMYXllcihQYWdlT3ZlcmxheSogcGFnZU92ZXIKICAgICBbQ0FUcmFuc2FjdGlvbiBi
ZWdpbl07CiAgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKIAotICAg
IFttX3Jvb3RMYXllciBhZGRTdWJsYXllcjpsYXllci0+cGxhdGZvcm1MYXllcigpXTsKKyAgICBb
bV9ob3N0aW5nTGF5ZXIgYWRkU3VibGF5ZXI6bGF5ZXItPnBsYXRmb3JtTGF5ZXIoKV07CiAKICAg
ICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogCkBAIC02NDMsNyArNjQyLDcgQEAgdm9pZCBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6ZGlkQ29tbWl0Q2hhbmdlc0ZvckxheWVyKGNvbnN0
IEdyYXBoaWNzTGF5ZXIKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAgW0NBVHJhbnNh
Y3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKIAotICAgIFttX3Jvb3RMYXllciBpbnNlcnRT
dWJsYXllcjpsYXllci0+cGxhdGZvcm1MYXllcigpIGFib3ZlOm9sZFBsYXRmb3JtTGF5ZXIuZ2V0
KCldOworICAgIFttX2hvc3RpbmdMYXllciBpbnNlcnRTdWJsYXllcjpsYXllci0+cGxhdGZvcm1M
YXllcigpIGFib3ZlOm9sZFBsYXRmb3JtTGF5ZXIuZ2V0KCldOwogICAgIFtvbGRQbGF0Zm9ybUxh
eWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKIAogICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07
CkBAIC02NjksNyArNjY4LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6
dXBkYXRlRGVidWdJbmZvTGF5ZXIoYm9vbCBzaG93TGF5ZXIpCiAjaWZuZGVmIE5ERUJVRwogICAg
ICAgICAgICAgW21fZGVidWdJbmZvTGF5ZXIgc2V0TmFtZTpAIkRlYnVnIEluZm8iXTsKICNlbmRp
ZgotICAgICAgICAgICAgW21fcm9vdExheWVyIGFkZFN1YmxheWVyOm1fZGVidWdJbmZvTGF5ZXIu
Z2V0KCldOworICAgICAgICAgICAgW21faG9zdGluZ0xheWVyIGFkZFN1YmxheWVyOm1fZGVidWdJ
bmZvTGF5ZXIuZ2V0KCldOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtX2RlYnVnSW5mb0xh
eWVyKSB7CiAgICAgICAgIFttX2RlYnVnSW5mb0xheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsK
QEAgLTY4OCw3ICs2ODcsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjph
ZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludAogICAgIC8vIEZJWE1F
OiBLZWVwIGFyb3VuZCBwYWdlU2NhbGU9MSB0aWxlcyBzbyB3ZSBjYW4gem9vbSBvdXQgd2l0aG91
dCBnYXBzLgogICAgIC8vIEZJWE1FOiBCcmluZyBpbiB1bnBhcmVudGVkLWJ1dC1wYWludGVkIHRp
bGVzIHdoZW4gem9vbWluZyBvdXQsIHRvIGZpbGwgaW4gYW55IGdhcHMuCiAKLSAgICBpZiAoIW1f
cm9vdExheWVyKQorICAgIGlmICghbV9ob3N0aW5nTGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKQEAgLTgyNyw2ICs4MjYsMTIgQEAg
dm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YXBwbHlUcmFuc2llbnRab29tVG9Q
YWdlKGRvdWJsZSBzY2FsZSwgRmxvYXQKICAgICBtX3RyYW5zaWVudFpvb21TY2FsZSA9IDE7CiB9
CiAKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldFRyYW5zZm9ybShjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQoreworICAgIG1fdHJhbnNmb3JtID0g
dHJhbnNmb3JtOworICAgIFttX3Jvb3RMYXllciBzZXRTdWJsYXllclRyYW5zZm9ybTp0cmFuc2Zv
cm1dOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vICFQTEFURk9STShJ
T1MpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224247</attachid>
            <date>2014-02-14 13:18:22 -0800</date>
            <delta_ts>2014-02-14 14:11:22 -0800</delta_ts>
            <desc>rebase+style</desc>
            <filename>thumbnail.diff</filename>
            <type>text/plain</type>
            <size>48167</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlZDc0NGUwLi5hNGFlMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE4
IEBACisyMDE0LTAyLTE0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBhIHdheSB0byBlZmZpY2llbnRseSB0aHVtYm5haWwgV0tWaWV3cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4ODMxCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8xNTY2OTY1NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5haWxW
aWV3Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5haWxW
aWV3Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV0tUaHVtYm5haWxWaWV3IGluaXRXaXRoRnJhbWU6
ZnJvbVdLVmlldzpdKToKKyAgICAgICAgKC1bV0tUaHVtYm5haWxWaWV3IF92aWV3V2FzVW5wYXJl
bnRlZF0pOgorICAgICAgICAoLVtXS1RodW1ibmFpbFZpZXcgX3ZpZXdXYXNQYXJlbnRlZF0pOgor
ICAgICAgICAoLVtXS1RodW1ibmFpbFZpZXcgdmlld0RpZE1vdmVUb1dpbmRvd10pOgorICAgICAg
ICAoLVtXS1RodW1ibmFpbFZpZXcgc2V0U2NhbGU6XSk6CisgICAgICAgICgtW1dLVGh1bWJuYWls
VmlldyBzZXRUaHVtYm5haWxMYXllcjpdKToKKyAgICAgICAgKC1bV0tUaHVtYm5haWxWaWV3IHRo
dW1ibmFpbExheWVyXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1RodW1ibmFp
bFZpZXdJbnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgQWRkIFdLVGh1bWJuYWlsVmlldy4KKyAg
ICAgICAgQ2xpZW50cyBvZiB0aGlzIHByaXZhdGUgQVBJIHdpbGwgY2FsbCBpbml0V2l0aEZyYW1l
OmZyb21XS1ZpZXc6LAorICAgICAgICBnaXZpbmcgdGhlIFdLVmlldyB0aGV5IHdpc2ggdG8gYm9y
cm93IGNvbnRlbnRzIGZyb20uCisgICAgICAgIFRoZXkgY2FuIGFsc28gY2FsbCBzZXRTY2FsZTog
dG8gc2V0IHRoZSBzY2FsZSB0aGF0IHdpbGwgYmUgdXNlZCB0byByZW5kZXIKKyAgICAgICAgdGhl
IGNvbnRlbnQgaW4gYW4gaW1wbGVtZW50YXRpb24tZGVmaW5lZCBzZXQgb2YgY2FzZXMgKGN1cnJl
bnRseSwgd2Ugd2lsbAorICAgICAgICB1c2UgdGhlIGxvdyByZXNvbHV0aW9uIHNjYWxlIGZvciBX
S1ZpZXdzIHdoaWNoIHdlcmUgbm90IHBhcmVudGVkIHdoZW4gdGhlCisgICAgICAgIFdLVGh1bWJu
YWlsVmlldyB3YXMgY3JlYXRlZDsgcGFyZW50ZWQgV0tWaWV3cyB3aWxsIHVzZSB0aGUgZXhpc3Rp
bmcgc2NhbGUpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwu
bW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUp
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6aXNWaWV3VmlzaWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdWaXNpYmxlT3JPY2NsdWRlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdJbldpbmRvdyk6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp2aWV3TGF5ZXJIb3N0aW5nTW9kZSk6CisgICAgICAg
IElmIHRoZSBXS1ZpZXcgaGFzIGFuIGFjdGl2ZWx5LXBhcmVudGVkIFdLVGh1bWJuYWlsVmlldyBh
dHRhY2hlZCB0byBpdCwKKyAgICAgICAgd2Ugc2hvdWxkIGRldGVybWluZSB2aWV3IHZpc2liaWxp
dHkvZXRjLiB1c2luZyB0aGF0IHZpZXcgaW5zdGVhZCBvZiB0aGUgV0tWaWV3LgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgZGVhbGxv
Y10pOgorICAgICAgICBXS1RodW1ibmFpbFZpZXcgaG9sZHMgb24gdG8gdGhlIFdLVmlldywgYW5k
IGNsZWFycyBXS1ZpZXcncyBiYWNrcG9pbnRlcgorICAgICAgICB3aGVuIGl0IGxlYXZlcyB0aGUg
d2luZG93LCBzbyB3ZSBzaG91bGQgbmV2ZXIgc2VlIFdLVmlldyBnZXQgZGVhbGxvY2F0ZWQKKyAg
ICAgICAgd2l0aCBhIGxpdmUgdGh1bWJuYWlsIHZpZXcuCisKKyAgICAgICAgKC1bV0tWaWV3IHNj
cm9sbFdoZWVsOl0pOgorICAgICAgICAoLVtXS1ZpZXcgbW91c2VNb3ZlZDpdKToKKyAgICAgICAg
KC1bV0tWaWV3IG1vdXNlRG93bjpdKToKKyAgICAgICAgKC1bV0tWaWV3IG1vdXNlVXA6XSk6Cisg
ICAgICAgICgtW1dLVmlldyBtb3VzZURyYWdnZWQ6XSk6CisgICAgICAgIERvbid0IGhhbmRsZSBl
dmVudHMgd2hpbGUgdGh1bWJuYWlsZWQuCisKKyAgICAgICAgKC1bV0tWaWV3IF9zZXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllcjpdKToKKyAgICAgICAgRm9yd2FyZCByb290IGxh
eWVyIGNoYW5nZXMgdG8gdGhlIGluc3RhbGxlZCB0aHVtYm5haWwgdmlldy4KKworICAgICAgICAo
LVtXS1ZpZXcgX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlUm9vdExheWVyXSk6CisgICAgICAg
IF9hY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllciBzaG91bGQgcmV0dXJuIHRoZSBz
YW1lIGxheWVyCisgICAgICAgIHRoYXQgd2FzIHNldCB2aWEgX3NldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlUm9vdExheWVyOiwgbm90IGl0cyBwYXJlbnQuCisKKyAgICAgICAgKC1bV0tWaWV3
IF9zZXRUaHVtYm5haWxWaWV3Ol0pOgorICAgICAgICAoLVtXS1ZpZXcgX3RodW1ibmFpbFZpZXdd
KToKKyAgICAgICAgSW5zdGFsbC91bmluc3RhbGwgYSBXS1RodW1ibmFpbFZpZXcuIEhhbmQgaXQg
b3VyIHJvb3QgbGF5ZXIgaWYgaW5zdGFsbGluZywKKyAgICAgICAgb3IgcmVjb3ZlciBpdCBmcm9t
IHRoZSBkZXBhcnRpbmcgdGh1bWJuYWlsIHZpZXcgaWYgdW5pbnN0YWxsaW5nLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgQWRkIGluIGEg
bWlzc2luZyBSZXRhaW5QdHIuaCBpbmNsdWRlIHRoYXQgSSBtaXNzZWQgZWFybGllciBhbmQgY2F1
c2VzIHRyb3VibGUuCisgICAgICAgIEFkZCBXS1ZpZXcgX3RodW1ibmFpbFZpZXcgYW5kIF9zZXRU
aHVtYm5haWxWaWV3Oi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFRodW1ibmFpbFNjYWxlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6bWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyk6CisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dl
c3R1cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFuZGxlU3dpcGVHZXN0dXJlKToKKyAgICAgICAgU3dpcGUg
d2FzIGFjY2lkZW50YWxseSBkZXBlbmRpbmcgb24gYSBtaXN0YWtlIGluIFdLVmlldydzCisgICAg
ICAgIF9hY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllciB3aGVyZSBpdCB3YXMgcmV0
dXJuaW5nIHRoZSB3cm9uZyBsYXllci4KKyAgICAgICAgVGhlIGFjdHVhbCByb290IGxheWVyIGRv
ZXNuJ3QgaGF2ZSBhIHNpemUsIHNvIHdlIHNob3VsZCB1c2UgdGhlIGRyYXdpbmcKKyAgICAgICAg
YXJlYSdzIHNpemUgaW5zdGVhZC4KKworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgQWRkIHNvbWUgbmV3IGZpbGVzLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpX
ZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0VGh1bWJuYWlsU2NhbGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgIEFwcGx5IHRoZSB0aHVt
Ym5haWwgc2NhbGUgdG8gdGhlIHBhZ2UuIElmIHdlJ3JlIGN1cnJlbnRseSBub3QgaW4KKyAgICAg
ICAgdGh1bWJuYWlsIHNjYWxpbmcgbW9kZSwgc2F2ZSB0aGUgY3VycmVudCBwYWdlIHNjYWxlIGFu
ZCBzY3JvbGwgcG9zaXRpb24KKyAgICAgICAgc28gd2UgY2FuIHJlc3RvcmUgdGhlbSBvbmNlIHdl
IGxlYXZlIHRodW1ibmFpbCBtb2RlIGFnYWluLgorICAgICAgICBUcmFuc2Zvcm0gdGhlIERyYXdp
bmdBcmVhIHNvIHRoYXQgdGhlIHBhZ2UgYXBwZWFycyBhdCB0aGUgc2FtZQorICAgICAgICBwb3Np
dGlvbiBhbmQgc2l6ZSwgYnV0IHNjYWxlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9EcmF3aW5nQXJlYS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6c2V0VHJhbnNm
b3JtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWE6OnNldFRyYW5zZm9ybSk6CisgICAgICAgIEFkZCBhIERyYXdpbmdB
cmVhIG1ldGhvZCB0byBhcHBseSBhbiBhcmJpdHJhcnkgdHJhbnNmb3JtIHRvIHRoZSBkcmF3aW5n
IGFyZWEuCisKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6
OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKToKKyAgICAg
ICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldFBhZ2VPdmVybGF5
TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE6OnN1c3BlbmRQYWludGluZyk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpyZXN1bWVQYWludGluZyk6CisgICAgICAgIChXZWJLaXQ6
OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVHZW9tZXRyeSk6CisgICAgICAg
IChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVMYXllckhvc3Rp
bmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OmNyZWF0ZVBhZ2VPdmVybGF5TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6ZGlkQ29tbWl0Q2hhbmdlc0ZvckxheWVyKToKKyAgICAgICAg
KFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZURlYnVnSW5mb0xh
eWVyKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFk
anVzdFRyYW5zaWVudFpvb20pOgorICAgICAgICBSZW1vdmUgdGhlIHdvcmQgImNvbXBvc2l0aW5n
IiBpbiBhIGJ1bmNoIG9mIHBsYWNlcyB3aGVyZSBpdCBpc24ndCBuZWVkZWQuCisgICAgICAgIFJl
bmFtZSBtX3Jvb3RMYXllciB0byBtX2hvc3RpbmdMYXllciwgYW5kIHJlcHVycG9zZSBtX3Jvb3RM
YXllciB0byBzdG9yZQorICAgICAgICB0aGUgcm9vdCBjb21wb3NpdGluZyBsYXllciBhY3R1YWxs
eSBwYXNzZWQgaW4gdmlhIHNldFJvb3RDb21wb3NpdGluZ0xheWVyLgorICAgICAgICBSZW5hbWUg
bV9wZW5kaW5nUm9vdENvbXBvc2l0aW5nTGF5ZXIgdG8gbV9wZW5kaW5nUm9vdExheWVyLgorCiAy
MDE0LTAyLTEyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtp
T1NdW1dLMl0gQWx3YXlzIGVuYWJsZSBBVktpdCBpbiBXSzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5haWxWaWV3LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVGh1bWJuYWlsVmlldy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNWFjOGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVGh1bWJuYWlsVmlldy5oCkBAIC0wLDAgKzEs
MzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQyL1dLRm91bmRhdGlvbi5oPgorCisj
aW1wb3J0IDxDb2NvYS9Db2NvYS5oPgorI2ltcG9ydCA8V2ViS2l0Mi9XS0RlY2xhcmF0aW9uU3Bl
Y2lmaWVycy5oPgorCitAY2xhc3MgV0tWaWV3OworCitXS19FWFBPUlQgQGludGVyZmFjZSBXS1Ro
dW1ibmFpbFZpZXcgOiBOU1ZpZXcKKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KE5T
UmVjdClmcmFtZSBmcm9tV0tWaWV3OihXS1ZpZXcgKil3a1ZpZXc7CistICh2b2lkKXNldFNjYWxl
Oihkb3VibGUpc2NhbGU7CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5haWxWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1RodW1ibmFpbFZpZXcubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZDIzY2MwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5haWxWaWV3Lm1tCkBAIC0wLDAgKzEsMTI0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS1RodW1ibmFpbFZpZXcu
aCIKKyNpbXBvcnQgIldLVGh1bWJuYWlsVmlld0ludGVybmFsLmgiCisKKyNpbXBvcnQgIldLQVBJ
Q2FzdC5oIgorI2ltcG9ydCAiV0tWaWV3LmgiCisjaW1wb3J0ICJXS1ZpZXdJbnRlcm5hbC5oIgor
I2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCisKKy8vIEZJWE1FOiBNYWtlIGl0IHBvc3NpYmxlIHRv
IGxlYXZlIGEgc25hcHNob3Qgb2YgdGhlIGNvbnRlbnQgcHJlc2VudGVkIGluIHRoZSBXS1ZpZXcg
d2hpbGUgdGhlIHRodW1ibmFpbCBpcyBsaXZlLgorLy8gRklYTUU6IERvbid0IG1ha2UgbmV3IHNw
ZWN1bGF0aXZlIHRpbGVzIHdoaWxlIHRodW1ibmFpbGVkLgorLy8gRklYTUU6IEhpZGUgc2Nyb2xs
YmFycyBpbiB0aGUgdGh1bWJuYWlsLgorLy8gRklYTUU6IFdlIHNob3VsZCByZS11c2UgZXhpc3Rp
bmcgdGlsZXMgZm9yIHVucGFyZW50ZWQgdmlld3MsIGlmIHdlIGhhdmUgdGhlbSAod2UgbmVlZCB0
byBrbm93IGlmIHRoZXkndmUgYmVlbiBwdXJnZWQ7IGlmIHNvLCByZXBhaW50IGF0IHNjYWxlZC1k
b3duIHNpemUpLgorLy8gRklYTUU6IFdlIHNob3VsZCBzd2l0Y2ggdG8gdGhlIGxvdy1yZXNvbHV0
aW9uIHNjYWxlIGlmIGEgdmlldyB3ZSBoYXZlIGhpZ2gtcmVzb2x1dGlvbiB0aWxlcyBmb3IgcmVw
YWludHMuCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKKworQGltcGxlbWVudGF0aW9uIFdLVGh1bWJuYWlsVmlldworeworICAgIFJldGFpblB0cjxX
S1ZpZXc+IF93a1ZpZXc7CisgICAgV2ViUGFnZVByb3h5KiBfd2ViUGFnZVByb3h5OworICAgIGRv
dWJsZSBfdGh1bWJuYWlsU2NhbGU7CisKKyAgICBib29sIF9vcmlnaW5hbE1heVN0YXJ0TWVkaWFX
aGVuSW5XaW5kb3c7CisgICAgYm9vbCBfb3JpZ2luYWxTb3VyY2VWaWV3SXNJbldpbmRvdzsKKwor
ICAgIGJvb2wgX3Nob3VsZEFwcGx5VGh1bWJuYWlsU2NhbGU7Cit9CisKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgZnJvbVdLVmlldzooV0tWaWV3ICopd2tWaWV3
Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0V2l0aEZyYW1lOmZyYW1lXTsKKyAgICBpZiAoc2Vs
ZikgeworICAgICAgICBfd2tWaWV3ID0gd2tWaWV3OworICAgICAgICBfd2ViUGFnZVByb3h5ID0g
dG9JbXBsKFtfd2tWaWV3IHBhZ2VSZWZdKTsKKyAgICAgICAgX3RodW1ibmFpbFNjYWxlID0gMTsK
KworICAgICAgICBfb3JpZ2luYWxNYXlTdGFydE1lZGlhV2hlbkluV2luZG93ID0gX3dlYlBhZ2VQ
cm94eS0+bWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdygpOworICAgICAgICBfb3JpZ2luYWxTb3Vy
Y2VWaWV3SXNJbldpbmRvdyA9ICEhW193a1ZpZXcgd2luZG93XTsKKworICAgICAgICBfc2hvdWxk
QXBwbHlUaHVtYm5haWxTY2FsZSA9ICFfb3JpZ2luYWxTb3VyY2VWaWV3SXNJbldpbmRvdzsKKyAg
ICB9CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpX3ZpZXdXYXNVbnBhcmVudGVkCit7
CisgICAgaWYgKF9zaG91bGRBcHBseVRodW1ibmFpbFNjYWxlKQorICAgICAgICBfd2ViUGFnZVBy
b3h5LT5zZXRUaHVtYm5haWxTY2FsZSgxKTsKKworICAgIFtfd2tWaWV3IF9zZXRUaHVtYm5haWxW
aWV3Om5pbF07CisgICAgX3dlYlBhZ2VQcm94eS0+c2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRv
dyhfb3JpZ2luYWxNYXlTdGFydE1lZGlhV2hlbkluV2luZG93KTsKK30KKworLSAodm9pZClfdmll
d1dhc1BhcmVudGVkCit7CisgICAgaWYgKFtfd2tWaWV3IF90aHVtYm5haWxWaWV3XSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKF9zaG91bGRBcHBseVRodW1ibmFpbFNjYWxlKQorICAgICAg
ICBfd2ViUGFnZVByb3h5LT5zZXRUaHVtYm5haWxTY2FsZShfdGh1bWJuYWlsU2NhbGUpOworCisg
ICAgaWYgKCFfb3JpZ2luYWxTb3VyY2VWaWV3SXNJbldpbmRvdykKKyAgICAgICAgX3dlYlBhZ2VQ
cm94eS0+c2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhmYWxzZSk7CisKKyAgICBbX3drVmll
dyBfc2V0VGh1bWJuYWlsVmlldzpzZWxmXTsKK30KKworLSAodm9pZCl2aWV3RGlkTW92ZVRvV2lu
ZG93Cit7CisgICAgaWYgKHNlbGYud2luZG93KQorICAgICAgICBbc2VsZiBfdmlld1dhc1BhcmVu
dGVkXTsKKyAgICBlbHNlCisgICAgICAgIFtzZWxmIF92aWV3V2FzVW5wYXJlbnRlZF07Cit9CisK
Ky0gKHZvaWQpc2V0U2NhbGU6KGRvdWJsZSlzY2FsZQoreworICAgIF90aHVtYm5haWxTY2FsZSA9
IHNjYWxlOworCisgICAgaWYgKHNlbGYud2luZG93ICYmIF9zaG91bGRBcHBseVRodW1ibmFpbFNj
YWxlKQorICAgICAgICBfd2ViUGFnZVByb3h5LT5zZXRUaHVtYm5haWxTY2FsZShfdGh1bWJuYWls
U2NhbGUpOworfQorCistICh2b2lkKXNldFRodW1ibmFpbExheWVyOihDQUxheWVyICopbGF5ZXIK
K3sKKyAgICBzZWxmLmxheWVyLnN1YmxheWVycyA9IGxheWVyID8gQFtsYXllcl0gOiBAW107Cit9
CisKKy0gKENBTGF5ZXIgKil0aHVtYm5haWxMYXllcgoreworICAgIGlmICghc2VsZi5sYXllci5z
dWJsYXllcnMuY291bnQpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gc2VsZi5s
YXllci5zdWJsYXllcnMuZmlyc3RPYmplY3Q7Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5haWxWaWV3SW50ZXJu
YWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjE3YjkyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1RodW1ibmFp
bFZpZXdJbnRlcm5hbC5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJX
S1RodW1ibmFpbFZpZXcuaCIKKworQGludGVyZmFjZSBXS1RodW1ibmFpbFZpZXcgKCkKKworQHBy
b3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgQ0FMYXllciAqdGh1bWJuYWlsTGF5ZXI7CisKK0Bl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGll
bnRJbXBsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudElt
cGwubW0KaW5kZXggNzBlY2RiNC4uOGU2NDYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KQEAgLTM3LDYgKzM3LDcgQEAKICNp
bXBvcnQgIldLQVBJQ2FzdC5oIgogI2ltcG9ydCAiV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxl
ci5oIgogI2ltcG9ydCAiV0tTdHJpbmdDRi5oIgorI2ltcG9ydCAiV0tUaHVtYm5haWxWaWV3Lmgi
CiAjaW1wb3J0ICJXS1ZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViQ29sb3JQaWNrZXJNYWMu
aCIKICNpbXBvcnQgIldlYkNvbnRleHRNZW51UHJveHlNYWMuaCIKQEAgLTE2OCw3ICsxNjksOCBA
QCBJbnRTaXplIFBhZ2VDbGllbnRJbXBsOjp2aWV3U2l6ZSgpCiAKIGJvb2wgUGFnZUNsaWVudElt
cGw6OmlzVmlld1dpbmRvd0FjdGl2ZSgpCiB7Ci0gICAgcmV0dXJuIFtbbV93a1ZpZXcgd2luZG93
XSBpc0tleVdpbmRvd10gfHwgW05TQXBwIGtleVdpbmRvd10gPT0gW21fd2tWaWV3IHdpbmRvd107
CisgICAgTlNXaW5kb3cgKmFjdGl2ZVZpZXdXaW5kb3cgPSBtX3drVmlldy5fdGh1bWJuYWlsVmll
dyA/IG1fd2tWaWV3Ll90aHVtYm5haWxWaWV3LndpbmRvdyA6IG1fd2tWaWV3LndpbmRvdzsKKyAg
ICByZXR1cm4gYWN0aXZlVmlld1dpbmRvdy5pc0tleVdpbmRvdyB8fCBbTlNBcHAga2V5V2luZG93
XSA9PSBhY3RpdmVWaWV3V2luZG93OwogfQogCiBib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdG
b2N1c2VkKCkKQEAgLTE4MywyNCArMTg1LDI3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6Om1ha2VG
aXJzdFJlc3BvbmRlcigpCiAgICAgCiBib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdWaXNpYmxl
KCkKIHsKLSAgICBpZiAoIVttX3drVmlldyB3aW5kb3ddKQorICAgIE5TVmlldyAqYWN0aXZlVmll
dyA9IG1fd2tWaWV3Ll90aHVtYm5haWxWaWV3ID8gbV93a1ZpZXcuX3RodW1ibmFpbFZpZXcgOiBt
X3drVmlldzsKKyAgICBOU1dpbmRvdyAqYWN0aXZlVmlld1dpbmRvdyA9IGFjdGl2ZVZpZXcud2lu
ZG93OworCisgICAgaWYgKCFhY3RpdmVWaWV3V2luZG93KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBpZiAoIVtbbV93a1ZpZXcgd2luZG93XSBpc1Zpc2libGVdKQorICAgIGlmICghYWN0
aXZlVmlld1dpbmRvdy5pc1Zpc2libGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPD0gMTA4MAogICAgIC8vIE1vdW50YWluIExp
b24gYW5kIHByZXZpb3VzIGRvIG5vdCBzdXBwb3J0IG9jY2x1c2lvbiBub3RpZmljYXRpb25zLCBh
bmQgYXMgc3VjaCB3aWxsCiAgICAgLy8gY29udGludWUgdG8gcmVwb3J0IGFzICJ2aXNpYmxlIiB3
aGVuIG5vdCBvbiB0aGUgYWN0aXZlIHNwYWNlLgotICAgIGlmICghW1ttX3drVmlldyB3aW5kb3dd
IGlzT25BY3RpdmVTcGFjZV0pCisgICAgaWYgKCFhY3RpdmVWaWV3V2luZG93LmlzT25BY3RpdmVT
cGFjZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKLSAgICBpZiAoW21fd2tWaWV3
IGlzSGlkZGVuT3JIYXNIaWRkZW5BbmNlc3Rvcl0pCisgICAgaWYgKGFjdGl2ZVZpZXcuaXNIaWRk
ZW5Pckhhc0hpZGRlbkFuY2VzdG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwOTAKLSAgICBpZiAoW21fd2tWaWV3IHdp
bmRvd09jY2x1c2lvbkRldGVjdGlvbkVuYWJsZWRdICYmIChbW21fd2tWaWV3IHdpbmRvd10gb2Nj
bHVzaW9uU3RhdGVdICYgTlNXaW5kb3dPY2NsdXNpb25TdGF0ZVZpc2libGUpICE9IE5TV2luZG93
T2NjbHVzaW9uU3RhdGVWaXNpYmxlKQorICAgIGlmIChbbV93a1ZpZXcgd2luZG93T2NjbHVzaW9u
RGV0ZWN0aW9uRW5hYmxlZF0gJiYgKGFjdGl2ZVZpZXdXaW5kb3cub2NjbHVzaW9uU3RhdGUgJiBO
U1dpbmRvd09jY2x1c2lvblN0YXRlVmlzaWJsZSkgIT0gTlNXaW5kb3dPY2NsdXNpb25TdGF0ZVZp
c2libGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCkBAIC0yMDksMTIgKzIxNCwx
MiBAQCBib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdWaXNpYmxlKCkKIAogYm9vbCBQYWdlQ2xp
ZW50SW1wbDo6aXNWaWV3VmlzaWJsZU9yT2NjbHVkZWQoKQogewotICAgIHJldHVybiBbW21fd2tW
aWV3IHdpbmRvd10gaXNWaXNpYmxlXTsKKyAgICByZXR1cm4gbV93a1ZpZXcuX3RodW1ibmFpbFZp
ZXcgPyBtX3drVmlldy5fdGh1bWJuYWlsVmlldy53aW5kb3cuaXNWaXNpYmxlIDogbV93a1ZpZXcu
d2luZG93LmlzVmlzaWJsZTsKIH0KIAogYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3SW5XaW5k
b3coKQogewotICAgIHJldHVybiBbbV93a1ZpZXcgd2luZG93XTsKKyAgICByZXR1cm4gbV93a1Zp
ZXcuX3RodW1ibmFpbFZpZXcgPyBtX3drVmlldy5fdGh1bWJuYWlsVmlldy53aW5kb3cgOiBtX3dr
Vmlldy53aW5kb3c7CiB9CiAKIGJvb2wgUGFnZUNsaWVudEltcGw6OmlzVmlzdWFsbHlJZGxlKCkK
QEAgLTIyNSw3ICsyMzAsOCBAQCBib29sIFBhZ2VDbGllbnRJbXBsOjppc1Zpc3VhbGx5SWRsZSgp
CiBMYXllckhvc3RpbmdNb2RlIFBhZ2VDbGllbnRJbXBsOjp2aWV3TGF5ZXJIb3N0aW5nTW9kZSgp
CiB7CiAjaWYgSEFWRShPVVRfT0ZfUFJPQ0VTU19MQVlFUl9IT1NUSU5HKQotICAgIGlmIChbbV93
a1ZpZXcgd2luZG93XSAmJiBbW21fd2tWaWV3IHdpbmRvd10gX2hvc3RzTGF5ZXJzSW5XaW5kb3dT
ZXJ2ZXJdKQorICAgIE5TV2luZG93ICphY3RpdmVWaWV3V2luZG93ID0gbV93a1ZpZXcuX3RodW1i
bmFpbFZpZXcgPyBtX3drVmlldy5fdGh1bWJuYWlsVmlldy53aW5kb3cgOiBtX3drVmlldy53aW5k
b3c7CisgICAgaWYgKFthY3RpdmVWaWV3V2luZG93IF9ob3N0c0xheWVyc0luV2luZG93U2VydmVy
XSkKICAgICAgICAgcmV0dXJuIExheWVySG9zdGluZ01vZGU6Ok91dE9mUHJvY2VzczsKICNlbmRp
ZgogICAgIHJldHVybiBMYXllckhvc3RpbmdNb2RlOjpJblByb2Nlc3M7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KaW5kZXggNzRiMzhlYS4uZTAxNzA2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtNTcsNiArNTcs
OCBAQAogI2ltcG9ydCAiV0tQcm9jZXNzQ2xhc3NJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tTdHJp
bmdDRi5oIgogI2ltcG9ydCAiV0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLmgiCisjaW1wb3J0
ICJXS1RodW1ibmFpbFZpZXcuaCIKKyNpbXBvcnQgIldLVGh1bWJuYWlsVmlld0ludGVybmFsLmgi
CiAjaW1wb3J0ICJXS1ZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tWaWV3UHJpdmF0ZS5oIgog
I2ltcG9ydCAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCkBAIC0yMjUsNiArMjI3LDggQEAgc3RydWN0
IFdLVmlld0ludGVycHJldEtleUV2ZW50c1BhcmFtZXRlcnMgewogICAgIHN0ZDo6dW5pcXVlX3B0
cjxWaWV3R2VzdHVyZUNvbnRyb2xsZXI+IF9nZXN0dXJlQ29udHJvbGxlcjsKICAgICBCT09MIF9h
bGxvd3NNYWduaWZpY2F0aW9uOwogICAgIEJPT0wgX2FsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlv
bkdlc3R1cmVzOworCisgICAgV0tUaHVtYm5haWxWaWV3ICpfdGh1bWJuYWlsVmlldzsKIH0KIAog
QGVuZApAQCAtMjczLDYgKzI3Nyw3IEBAIHN0cnVjdCBXS1ZpZXdJbnRlcnByZXRLZXlFdmVudHNQ
YXJhbWV0ZXJzIHsKIHsKICAgICBfZGF0YS0+X3BhZ2UtPmNsb3NlKCk7CiAKKyAgICBBU1NFUlQo
IV9kYXRhLT5fdGh1bWJuYWlsVmlldyk7CiAgICAgQVNTRVJUKCFfZGF0YS0+X2luU2VjdXJlSW5w
dXRTdGF0ZSk7CiAKICAgICBbX2RhdGEgcmVsZWFzZV07CkBAIC0xMDc3LDYgKzEwODIsOCBAQCBz
dGF0aWMgdm9pZCBzcGVha1N0cmluZyhXS1N0cmluZ1JlZiBzdHJpbmcsIFdLRXJyb3JSZWYgZXJy
b3IsIHZvaWQqKQogI2RlZmluZSBOQVRJVkVfTU9VU0VfRVZFTlRfSEFORExFUihTZWxlY3Rvcikg
XAogICAgIC0gKHZvaWQpU2VsZWN0b3I6KE5TRXZlbnQgKil0aGVFdmVudCBcCiAgICAgeyBcCisg
ICAgICAgIGlmIChfZGF0YS0+X3RodW1ibmFpbFZpZXcpIFwKKyAgICAgICAgICAgIHJldHVybjsg
XAogICAgICAgICBpZiAoW1tzZWxmIGlucHV0Q29udGV4dF0gaGFuZGxlRXZlbnQ6dGhlRXZlbnRd
KSB7IFwKICAgICAgICAgICAgIExPRyhUZXh0SW5wdXQsICIlcyB3YXMgaGFuZGxlZCBieSB0ZXh0
IGlucHV0IGNvbnRleHQiLCBTdHJpbmcoI1NlbGVjdG9yKS5zdWJzdHJpbmcoMCwgU3RyaW5nKCNT
ZWxlY3RvcikuZmluZCgiSW50ZXJuYWwiKSkuYXNjaWkoKS5kYXRhKCkpOyBcCiAgICAgICAgICAg
ICByZXR1cm47IFwKQEAgLTExMTEsNiArMTExOCw5IEBAIE5BVElWRV9NT1VTRV9FVkVOVF9IQU5E
TEVSKHJpZ2h0TW91c2VVcCkKIAogLSAodm9pZClzY3JvbGxXaGVlbDooTlNFdmVudCAqKWV2ZW50
CiB7CisgICAgaWYgKF9kYXRhLT5fdGh1bWJuYWlsVmlldykKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgaWYgKF9kYXRhLT5fYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMpIHsKICAg
ICAgICAgW3NlbGYgX2Vuc3VyZUdlc3R1cmVDb250cm9sbGVyXTsKICAgICAgICAgaWYgKF9kYXRh
LT5fZ2VzdHVyZUNvbnRyb2xsZXItPmhhbmRsZVNjcm9sbFdoZWVsRXZlbnQoZXZlbnQpKQpAQCAt
MTEyMyw2ICsxMTMzLDkgQEAgTkFUSVZFX01PVVNFX0VWRU5UX0hBTkRMRVIocmlnaHRNb3VzZVVw
KQogCiAtICh2b2lkKW1vdXNlTW92ZWQ6KE5TRXZlbnQgKilldmVudAogeworICAgIGlmIChfZGF0
YS0+X3RodW1ibmFpbFZpZXcpCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIFdoZW4gYSB2aWV3
IGlzIGZpcnN0IHJlc3BvbmRlciwgaXQgZ2V0cyBtb3VzZSBtb3ZlZCBldmVudHMgZXZlbiB3aGVu
IHRoZSBtb3VzZSBpcyBvdXRzaWRlIGl0cyB2aXNpYmxlIHJlY3QuCiAgICAgaWYgKHNlbGYgPT0g
W1tzZWxmIHdpbmRvd10gZmlyc3RSZXNwb25kZXJdICYmICFOU1BvaW50SW5SZWN0KFtzZWxmIGNv
bnZlcnRQb2ludDpbZXZlbnQgbG9jYXRpb25JbldpbmRvd10gZnJvbVZpZXc6bmlsXSwgW3NlbGYg
dmlzaWJsZVJlY3RdKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTEzMiw2ICsxMTQ1LDkgQEAgTkFU
SVZFX01PVVNFX0VWRU5UX0hBTkRMRVIocmlnaHRNb3VzZVVwKQogCiAtICh2b2lkKW1vdXNlRG93
bjooTlNFdmVudCAqKWV2ZW50CiB7CisgICAgaWYgKF9kYXRhLT5fdGh1bWJuYWlsVmlldykKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgW3NlbGYgX3NldE1vdXNlRG93bkV2ZW50OmV2ZW50XTsKICAg
ICBfZGF0YS0+X2lnbm9yaW5nTW91c2VEcmFnZ2VkRXZlbnRzID0gTk87CiAgICAgW3NlbGYgbW91
c2VEb3duSW50ZXJuYWw6ZXZlbnRdOwpAQCAtMTEzOSwxMiArMTE1NSwxOCBAQCBOQVRJVkVfTU9V
U0VfRVZFTlRfSEFORExFUihyaWdodE1vdXNlVXApCiAKIC0gKHZvaWQpbW91c2VVcDooTlNFdmVu
dCAqKWV2ZW50CiB7CisgICAgaWYgKF9kYXRhLT5fdGh1bWJuYWlsVmlldykKKyAgICAgICAgcmV0
dXJuOworCiAgICAgW3NlbGYgX3NldE1vdXNlRG93bkV2ZW50Om5pbF07CiAgICAgW3NlbGYgbW91
c2VVcEludGVybmFsOmV2ZW50XTsKIH0KIAogLSAodm9pZCltb3VzZURyYWdnZWQ6KE5TRXZlbnQg
KilldmVudAogeworICAgIGlmIChfZGF0YS0+X3RodW1ibmFpbFZpZXcpCisgICAgICAgIHJldHVy
bjsKKwogICAgIGlmIChfZGF0YS0+X2lnbm9yaW5nTW91c2VEcmFnZ2VkRXZlbnRzKQogICAgICAg
ICByZXR1cm47CiAgICAgW3NlbGYgbW91c2VEcmFnZ2VkSW50ZXJuYWw6ZXZlbnRdOwpAQCAtMjQ4
Myw2ICsyNTA1LDEzIEBAIHN0YXRpYyB2b2lkIGNyZWF0ZVNhbmRib3hFeHRlbnNpb25zRm9yRmls
ZVVwbG9hZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIFNhbmRiCiAKIC0gKHZvaWQpX3NldEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlUm9vdExheWVyOihDQUxheWVyICopcm9vdExheWVyCiB7
CisgICAgW3Jvb3RMYXllciB3ZWJfZGlzYWJsZUFsbEFjdGlvbnNdOworCisgICAgaWYgKF9kYXRh
LT5fdGh1bWJuYWlsVmlldykgeworICAgICAgICBfZGF0YS0+X3RodW1ibmFpbFZpZXcudGh1bWJu
YWlsTGF5ZXIgPSByb290TGF5ZXI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBbQ0FU
cmFuc2FjdGlvbiBiZWdpbl07CiAgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6
WUVTXTsKIApAQCAtMjUyNyw3ICsyNTU2LDEwIEBAIHN0YXRpYyB2b2lkIGNyZWF0ZVNhbmRib3hF
eHRlbnNpb25zRm9yRmlsZVVwbG9hZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIFNhbmRiCiAg
ICAgaWYgKCFob3N0VmlldykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
aG9zdFZpZXcubGF5ZXI7CisgICAgaWYgKCFob3N0Vmlldy5sYXllci5zdWJsYXllcnMuY291bnQp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGhvc3RWaWV3LmxheWVyLnN1
YmxheWVyc1swXTsKIH0KIAogLSAoUmV0YWluUHRyPENHSW1hZ2VSZWY+KV90YWtlVmlld1NuYXBz
aG90CkBAIC0yOTQzLDYgKzI5NzUsMjcgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1
ZUZpbGVuYW1lRm9yUGF0aChOU1N0cmluZyAqcGF0aCkKICAgICBbdHlwZXMgcmVsZWFzZV07CiB9
CiAKKy0gKHZvaWQpX3NldFRodW1ibmFpbFZpZXc6KFdLVGh1bWJuYWlsVmlldyAqKXRodW1ibmFp
bFZpZXcKK3sKKyAgICBBU1NFUlQoIV9kYXRhLT5fdGh1bWJuYWlsVmlldyB8fCAhdGh1bWJuYWls
Vmlldyk7CisKKyAgICBSZXRhaW5QdHI8Q0FMYXllcj4gdGh1bWJuYWlsTGF5ZXIgPSBfZGF0YS0+
X3RodW1ibmFpbFZpZXcudGh1bWJuYWlsTGF5ZXI7CisKKyAgICBfZGF0YS0+X3RodW1ibmFpbFZp
ZXcgPSB0aHVtYm5haWxWaWV3OworCisgICAgaWYgKHRodW1ibmFpbFZpZXcpCisgICAgICAgIHRo
dW1ibmFpbFZpZXcudGh1bWJuYWlsTGF5ZXIgPSBbc2VsZiBfYWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGVSb290TGF5ZXJdOworICAgIGVsc2UKKyAgICAgICAgW3NlbGYgX3NldEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlUm9vdExheWVyOnRodW1ibmFpbExheWVyLmdldCgpXTsKKworICAgIF9k
YXRhLT5fcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFZpZXdTdGF0ZTo6V2luZG93SXNBY3RpdmUg
fCBWaWV3U3RhdGU6OklzSW5XaW5kb3cgfCBWaWV3U3RhdGU6OklzVmlzaWJsZSk7Cit9CisKKy0g
KFdLVGh1bWJuYWlsVmlldyAqKV90aHVtYm5haWxWaWV3Cit7CisgICAgcmV0dXJuIF9kYXRhLT5f
dGh1bWJuYWlsVmlldzsKK30KKwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tWaWV3IChQcml2
YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3
SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVy
bmFsLmgKaW5kZXggNzVhZGI0ZS4uZDFkMzg3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1w
b3J0ICJXZWJGaW5kT3B0aW9ucy5oIgogI2ltcG9ydCA8d3RmL0ZvcndhcmQuaD4KICNpbXBvcnQg
PHd0Zi9WZWN0b3IuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQGNsYXNzIFdLV2Vi
Vmlld0NvbmZpZ3VyYXRpb247CiAKQEAgLTUzLDYgKzU0LDcgQEAgc3RydWN0IFdlYlBhZ2VDb25m
aWd1cmF0aW9uOwogfQogCiBAY2xhc3MgV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlcjsKK0Bj
bGFzcyBXS1RodW1ibmFpbFZpZXc7CiAKIEBpbnRlcmZhY2UgV0tWaWV3ICgpCiAjaWYgV0tfQVBJ
X0VOQUJMRUQKQEAgLTEwMyw2ICsxMDUsOCBAQCBzdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRpb247
CiAtICh2b2lkKV9zZXRTdXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVzOihCT09MKXN1cHByZXNzVmlz
aWJpbGl0eVVwZGF0ZXM7CiAtIChCT09MKV9zdXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVzOwogCitA
cHJvcGVydHkgKG5vbmF0b21pYywgZ2V0dGVyPV90aHVtYm5haWxWaWV3LCBzZXR0ZXI9X3NldFRo
dW1ibmFpbFZpZXc6KSBXS1RodW1ibmFpbFZpZXcgKnRodW1ibmFpbFZpZXc7CisKIC8vIEZ1bGxT
Y3JlZW4KIAogQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBfaGFzRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4
IGIwZTBiOTkuLmZlNDdkZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCkBAIC00NTA2LDQgKzQ1MDYsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVud3JhcENy
eXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIGJvb2wmIHN1Y2MKIH0K
ICNlbmRpZgogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGh1bWJuYWlsU2NhbGUoZG91YmxlIHNj
YWxlKQoreworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRodW1ibmFpbFNjYWxlKHNjYWxlKSwg
bV9wYWdlSUQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAzYjk4ZmQ1Li4wNjFhYTk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04MjgsNiArODI4LDcgQEAgcHVibGljOgog
ICAgIAogICAgIHZvaWQgc2V0TWVkaWFWb2x1bWUoZmxvYXQpOwogICAgIHZvaWQgc2V0TWF5U3Rh
cnRNZWRpYVdoZW5JbldpbmRvdyhib29sKTsKKyAgICBib29sIG1heVN0YXJ0TWVkaWFXaGVuSW5X
aW5kb3coKSBjb25zdCB7IHJldHVybiBtX21heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3c7IH0KIAog
ICAgIC8vIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQKICAgICB2aXJ0dWFsIE5hdGl2ZVdlYk1v
dXNlRXZlbnQqIGN1cnJlbnRseVByb2Nlc3NlZE1vdXNlRG93bkV2ZW50KCk7CkBAIC04OTIsNiAr
ODkzLDggQEAgcHVibGljOgogICAgIHZvaWQgdW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYsIGJvb2wmIHN1Y2NlZWRlZCwgVmVjdG9yPHVpbnQ4X3Q+Jik7CiAjZW5kaWYKIAor
ICAgIHZvaWQgc2V0VGh1bWJuYWlsU2NhbGUoZG91YmxlKTsKKwogcHJpdmF0ZToKICAgICBXZWJQ
YWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwg
Y29uc3QgV2ViUGFnZUNvbmZpZ3VyYXRpb24mKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0
dXJlQ29udHJvbGxlck1hYy5tbQppbmRleCA2OWY2MzVkLi5hMmU0MjFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1h
Yy5tbQpAQCAtMzkyLDcgKzM5Miw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpiZWdp
blN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJdGVtCiAgICAgICAg
ICAgICBtX2N1cnJlbnRTd2lwZUxpdmVMYXllcnMuYXBwZW5kKGxheWVyKTsKICAgICAgICAgfQog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIHN3aXBlQXJlYSA9IHJvb3RDb250ZW50TGF5ZXIuZnJhbWU7
CisgICAgICAgIHN3aXBlQXJlYSA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fd2ViUGFnZVBy
b3h5LmRyYXdpbmdBcmVhKCktPnNpemUoKSk7CiAgICAgICAgIG1fY3VycmVudFN3aXBlTGl2ZUxh
eWVycy5hcHBlbmQocm9vdENvbnRlbnRMYXllcik7CiAgICAgfQogCkBAIC00NTUsNyArNDU1LDcg
QEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZVN3aXBlR2VzdHVyZShXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJdGUKICAgICBpZiAoIW1fY3VzdG9tU3dpcGVWaWV3cy5p
c0VtcHR5KCkpCiAgICAgICAgIHdpZHRoID0gbV9jdXJyZW50U3dpcGVDdXN0b21WaWV3Qm91bmRz
LndpZHRoKCk7CiAgICAgZWxzZQotICAgICAgICB3aWR0aCA9IG1fd2ViUGFnZVByb3h5LmFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIoKS5mcmFtZS5zaXplLndpZHRoOworICAgICAgICB3
aWR0aCA9IG1fd2ViUGFnZVByb3h5LmRyYXdpbmdBcmVhKCktPnNpemUoKS53aWR0aCgpOwogCiAg
ICAgZG91YmxlIHN3aXBpbmdMYXllck9mZnNldCA9IGZsb29yKHdpZHRoICogcHJvZ3Jlc3MpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZTg3YzBhZi4uZGY3NzMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDM5LDYgKzQzOSw4IEBACiAJCTJENDI5QkZE
MTcyMUUyQzcwMEVDNjgxRiAvKiBQREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ0MjlCRkIxNzIxRTJCQTAwRUM2
ODFGIC8qIFBERlBsdWdpblBhc3N3b3JkRmllbGQubW0gKi87IH07CiAJCTJENDdCNTZDMTgxMDcx
NEUwMDNBM0FFRSAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENDdCNTZBMTgxMDcxNEUwMDNBM0FFRSAv
KiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSAqLzsgfTsKIAkJMkQ0N0I1NkQxODEwNzE0RTAw
M0EzQUVFIC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDQ3QjU2QjE4MTA3MTRFMDAzQTNBRUUgLyogUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUuaCAqLzsgfTsKKwkJMkQ2QjM3MUIxOEE5NjdBRDAwNDJBRTgw
IC8qIFdLVGh1bWJuYWlsVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkQ2QjM3MTkxOEE5NjdBRDAwNDJBRTgwIC8qIFdLVGh1bWJuYWlsVmlldy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTJENkIz
NzFDMThBOTY3QUQwMDQyQUU4MCAvKiBXS1RodW1ibmFpbFZpZXcubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDZCMzcxQTE4QTk2N0FEMDA0MkFFODAg
LyogV0tUaHVtYm5haWxWaWV3Lm1tICovOyB9OwogCQkyRDZDRDExOTE4OTA1OEE1MDBFNUE0QTAg
LyogVmlld1NuYXBzaG90U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJENkNEMTE3MTg5MDU4QTUwMEU1QTRBMCAvKiBWaWV3U25hcHNob3RTdG9y
ZS5oICovOyB9OwogCQkyRDZDRDExQTE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3Rv
cmUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDZD
RDExODE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUubW0gKi87IH07CiAJCTJE
ODE5QjlFMTg2MjdFRTkwMDFGMDNEMSAvKiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEODE5Qjk5
MTg2Mjc1QjMwMDFGMDNEMSAvKiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcCAqLzsg
fTsKQEAgLTQ4NCw2ICs0ODYsNyBAQAogCQkyREE5NDRCOTE4ODRFQTM5MDBFRDg2REIgLyogV2Vi
QmFja0ZvcndhcmRMaXN0UHJveHlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyREE5NDRCNTE4ODRFQTM1MDBFRDg2REIgLyogV2ViQmFja0Zvcndh
cmRMaXN0UHJveHlJT1MubW0gKi87IH07CiAJCTJEQTk0NEJBMTg4NEVBM0MwMEVEODZEQiAvKiBX
ZWJQYWdlSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkRBOTQ0QjYxODg0RUEzNTAwRUQ4NkRCIC8qIFdlYlBhZ2VJT1MubW0gKi87IH07CiAJCTJE
QTk0NEJEMTg4NTExRTcwMEVEODZEQiAvKiBOZXR3b3JrUHJvY2Vzc0lPUy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NEJDMTg4NTExRTcwMEVE
ODZEQiAvKiBOZXR3b3JrUHJvY2Vzc0lPUy5tbSAqLzsgfTsKKwkJMkRBQ0U2NEUxOEFEQkZGMDAw
RTRDQTc2IC8qIFdLVGh1bWJuYWlsVmlld0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREFDRTY0RDE4QURCRkYwMDBFNENBNzYgLyogV0tU
aHVtYm5haWxWaWV3SW50ZXJuYWwuaCAqLzsgfTsKIAkJMkRERTBBRkExODI5OENDOTAwRjk3RUFB
IC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTBBRjgxODI5OENDOTAwRjk3RUFBIC8qIFJl
bW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oICovOyB9OwogCQkyRERFMEFGQjE4Mjk4Q0M5
MDBGOTdFQUEgLyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTBBRjkxODI5OENDOTAwRjk3
RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbSAqLzsgfTsKIAkJMkRGOTU5
M0IxOEE0MjQxMjAwOTc4NUExIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERjk1OTM0MThBNDI0MTIw
MDk3ODVBMSAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0gKi87IH07CkBAIC0yMTM5LDYg
KzIxNDIsOCBAQAogCQkyRDQyOUJGQjE3MjFFMkJBMDBFQzY4MUYgLyogUERGUGx1Z2luUGFzc3dv
cmRGaWVsZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFBERlBs
dWdpblBhc3N3b3JkRmllbGQubW07IHBhdGggPSBQREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ0N0I1NkExODEwNzE0RTAwM0EzQUVF
IC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJENDdCNTZCMTgxMDcxNEUwMDNBM0FFRSAvKiBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDZCMzcxOTE4
QTk2N0FEMDA0MkFFODAgLyogV0tUaHVtYm5haWxWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLVGh1bWJuYWlsVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkyRDZCMzcxQTE4QTk2N0FEMDA0MkFFODAgLyogV0tUaHVtYm5haWxWaWV3Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tUaHVtYm5haWxWaWV3Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDZDRDExNzE4OTA1OEE1MDBFNUE0QTAgLyog
Vmlld1NuYXBzaG90U3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmll
d1NuYXBzaG90U3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ2Q0QxMTgx
ODkwNThBNTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlld1NuYXBzaG90U3RvcmUubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJENzBBQjEzMThBMUQ1MUEwMDAyNkQ2RSAvKiBJbmZvLWlPUy5w
bGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQucGxpc3QueG1sOyBwYXRoID0gIkluZm8taU9TLnBsaXN0Ijsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIxODksNiArMjE5NCw3IEBACiAJCTJEQTk0NEI1MTg4NEVBMzUwMEVEODZE
QiAvKiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5SU9TLm1tOyBwYXRoID0g
aW9zL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyREE5NDRCNjE4ODRFQTM1MDBFRDg2REIgLyogV2ViUGFnZUlPUy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYlBhZ2VJT1MubW07IHBhdGggPSBp
b3MvV2ViUGFnZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBOTQ0QkMx
ODg1MTFFNzAwRUQ4NkRCIC8qIE5ldHdvcmtQcm9jZXNzSU9TLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBuYW1lID0gTmV0d29ya1Byb2Nlc3NJT1MubW07IHBhdGggPSBOZXR3
b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTJEQUNFNjREMThBREJGRjAwMEU0Q0E3NiAvKiBXS1RodW1ibmFpbFZpZXdJbnRl
cm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1RodW1ibmFpbFZpZXdJ
bnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRERFMEFGODE4Mjk4Q0M5
MDBGOTdFQUEgLyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRERFMEFGOTE4Mjk4Q0M5MDBGOTdFQUEgLyog
UmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREY5NTkzNDE4QTQyNDEyMDA5Nzg1QTEgLyogVmll
d0dlc3R1cmVDb250cm9sbGVySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tOyBwYXRoID0gaW9zL1ZpZXdHZXN0
dXJlQ29udHJvbGxlcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzNjks
NiArNDM3NSw5IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTFB
NDNFODI2MTg4RjM4RTIwMDlFNEQzMCAvKiBEZXByZWNhdGVkICovLAorCQkJCTJENkIzNzE5MThB
OTY3QUQwMDQyQUU4MCAvKiBXS1RodW1ibmFpbFZpZXcuaCAqLywKKwkJCQkyREFDRTY0RDE4QURC
RkYwMDBFNENBNzYgLyogV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaCAqLywKKwkJCQkyRDZCMzcx
QTE4QTk2N0FEMDA0MkFFODAgLyogV0tUaHVtYm5haWxWaWV3Lm1tICovLAogCQkJCTFBNEQ2NjRB
MThBMzAzMEUwMEQ4MkUyMSAvKiBXS0ZyYW1lSW5mby5oICovLAogCQkJCTFBNEQ2NjQ5MThBMzAz
MEUwMEQ4MkUyMSAvKiBXS0ZyYW1lSW5mby5tbSAqLywKIAkJCQkxQTRENjY0RDE4QTMwMzFCMDBE
ODJFMjEgLyogV0tGcmFtZUluZm9JbnRlcm5hbC5oICovLApAQCAtNjQ0MSw2ICs2NDUwLDcgQEAK
IAkJCQkxQTJEODJBNTEyN0Y0RUFCMDAxRUI5NjIgLyogTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBMkQ4NDNBMTI3RjY1RDUwMDFFQjk2MiAvKiBOUE9iamVj
dE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTJEODJBNzEy
N0Y0RUFCMDAxRUI5NjIgLyogTlBPYmplY3RQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkQ2
QjM3MUIxOEE5NjdBRDAwNDJBRTgwIC8qIFdLVGh1bWJuYWlsVmlldy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUEyRDgyQTkxMjdGNEVBQjAwMUVCOTYyIC8qIE5QUmVtb3RlT2JqZWN0TWFwLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQTIxNjFCMDExRjM3NjY0MDA4QUQwRjUgLyogTlBSdW50aW1lT2Jq
ZWN0TWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREEwNDlCODE4MENDRDBBMDBBQUZBOUUgLyog
R3JhcGhpY3NMYXllckNBUmVtb3RlLmggaW4gSGVhZGVycyAqLywKQEAgLTY2MDEsNiArNjYxMSw3
IEBACiAJCQkJMUEyNDY0RjMxODkxRTQ1MTAwMjM0QzVCIC8qIEFQSUxvYWRlckNsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkMxREQ3QjIxMTREQzM5NjAwNUFEQUYzIC8qIFdlYkNvcmVBcmd1
bWVudENvZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyRjU4OUIxMkE4ODM4ODAwNjI5NTMw
IC8qIFdlYkNyZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTJEQUNFNjRFMThBREJGRjAw
MEU0Q0E3NiAvKiBXS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTE1NzhCODMxMjA5RUNFRjAwQTM3QzRBIC8qIEFQSURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUY2QTI1RkREMTJBREM2Q0MwMERDNDBDQyAvKiBXZWJEYXRhYmFzZU1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUY2MkE3NkI3MTJCMUIyNUYwMDA1RjFCNiAvKiBXZWJEYXRhYmFzZU1hbmFn
ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MTQ5LDYgKzgxNjAsNyBAQAogCQkJCTUx
MEFGRkI5MTY1NDIwNDgwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzRjg4OUQxNDE4ODc3OEM5MDBGRUFEQUYgLyogV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYz
MjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkyRDZCMzcxQzE4QTk2N0FEMDA0MkFFODAgLyogV0tUaHVtYm5haWxWaWV3Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMzc4RTFBM0QxODFFRDZGRjAwMzEwMDdBIC8qIEFQSU9iamVjdC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTUxRkIwOEZGMTYzOURFMUEwMEVDMzI0QSAvKiBXZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1OTQ3QTcxODdCNTE3
NjAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWEuaAppbmRleCA5YmMxZGUxLi43NzE3MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtOTIsNiArOTIsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEV4cG9zZWRSZWN0KGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBleHBvc2VkUmVj
dCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VzdG9tRml4ZWRQb3NpdGlvblJl
Y3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNl
dFRyYW5zZm9ybShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIHsgfQogI2Vu
ZGlmCiAgICAgdmlydHVhbCB2b2lkIG1haW5GcmFtZVNjcm9sbGFiaWxpdHlDaGFuZ2VkKGJvb2wp
IHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggNmUxN2Y5YS4uOGI5ZTQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjk2LDYgKzI5Niw4IEBAIFdlYlBhZ2U6OldlYlBhZ2Uo
dWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQogICAgICwgbV92aWV3U3RhdGUocGFyYW1ldGVycy52aWV3U3RhdGUpCiAgICAgLCBtX3By
b2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkQnlXZWJQcmVmZXJlbmNlKCJQcm9jZXNzIHN1cHByZXNz
aW9uIGlzIGRpc2FibGVkLiIpCiAgICAgLCBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQoMCkKKyAgICAs
IG1fcHJlVGh1bWJuYWlsUGFnZVNjYWxlKDEpCisgICAgLCBtX3RodW1ibmFpbFNjYWxlKDEpCiB7
CiAgICAgQVNTRVJUKG1fcGFnZUlEKTsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIG5vbi1pZGVh
bCBsb2NhdGlvbiBmb3IgdGhpcyBTZXR0aW5nIGFuZApAQCAtNDE4OCw0ICs0MTkwLDQ0IEBAIFBh
c3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IFdlYlBhZ2U6OmNyZWF0ZURvY3VtZW50TG9hZGVyKEZy
YW1lJiBmcmFtZSwgY29uc3QgUmVzCiAgICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyLnJlbGVhc2Uo
KTsKIH0KIAordm9pZCBXZWJQYWdlOjpzZXRUaHVtYm5haWxTY2FsZShkb3VibGUgZGVzdGluYXRp
b25TY2FsZSkKK3sKKyAgICBpZiAoZGVzdGluYXRpb25TY2FsZSA9PSBtX3RodW1ibmFpbFNjYWxl
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBTY2FsaW5nLCBzYXZlIHRoZSBzY2FsZSBhbmQg
c2Nyb2xsIHBvc2l0aW9uIHRvIGJlIHJlc3RvcmVkIGxhdGVyLgorICAgIGlmIChkZXN0aW5hdGlv
blNjYWxlICE9IDEpIHsKKyAgICAgICAgaWYgKG1fdGh1bWJuYWlsU2NhbGUgPT0gMSkgeworICAg
ICAgICAgICAgbV9wcmVUaHVtYm5haWxQYWdlU2NhbGUgPSBwYWdlU2NhbGVGYWN0b3IoKTsKKyAg
ICAgICAgICAgIG1fcHJlVGh1bWJuYWlsU2Nyb2xsUG9zaXRpb24gPSBtX3BhZ2UtPm1haW5GcmFt
ZSgpLnZpZXcoKS0+c2Nyb2xsUG9zaXRpb24oKTsKKyAgICAgICAgfQorCisgICAgICAgIG1fdGh1
bWJuYWlsU2NhbGUgPSBkZXN0aW5hdGlvblNjYWxlOworCisgICAgICAgIC8vIFNjYWxlIHRoZSBw
YWdlLCBidXQgbGVhdmUgdGhlIG9yaWdpbmFsIHBhZ2Ugc2NhbGUgaW50YWN0IGlmIHRoZXJlIHdh
cyBhbnkuCisgICAgICAgIHNjYWxlUGFnZShtX3RodW1ibmFpbFNjYWxlICogbV9wcmVUaHVtYm5h
aWxQYWdlU2NhbGUsIEludFBvaW50KCkpOworCisgICAgICAgIC8vIFNjcm9sbCBhcyBmYXIgYXMg
d2UgY2FuIHRvd2FyZHMgdGhlIG9yaWdpbmFsIHNjcm9sbCBwb3NpdGlvbiBpbiB0aGUgc2NhbGVk
IHBhZ2UuCisgICAgICAgIC8vIFRoaXMgbWF5IGdldCBjb25zdHJhaW5lZDsgd2UnbGwgdHJhbnNm
b3JtIHRoZSBkcmF3aW5nIGFyZWEgdG8gZXhwb3NlIHRoZSByaWdodCBwYXJ0IG9mIHRoZSBwYWdl
LgorICAgICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+c2V0U2Nyb2xsUG9zaXRpb24o
SW50UG9pbnQobV9wcmVUaHVtYm5haWxTY3JvbGxQb3NpdGlvbi54KCkgKiBtX3RodW1ibmFpbFNj
YWxlLCBtX3ByZVRodW1ibmFpbFNjcm9sbFBvc2l0aW9uLnkoKSAqIG1fdGh1bWJuYWlsU2NhbGUp
KTsKKworICAgICAgICBkb3VibGUgaW52ZXJzZVNjYWxlID0gMSAvIG1fdGh1bWJuYWlsU2NhbGU7
CisgICAgICAgIEludFBvaW50IG5ld1Njcm9sbFBvc2l0aW9uID0gbV9wYWdlLT5tYWluRnJhbWUo
KS52aWV3KCktPnNjcm9sbFBvc2l0aW9uKCk7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHRyYW5zZm9ybTsKKyAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgobmV3U2Nyb2xsUG9zaXRp
b24ueCgpICogaW52ZXJzZVNjYWxlKSAtIG1fcHJlVGh1bWJuYWlsU2Nyb2xsUG9zaXRpb24ueCgp
LCAobmV3U2Nyb2xsUG9zaXRpb24ueSgpICogaW52ZXJzZVNjYWxlKSAtIG1fcHJlVGh1bWJuYWls
U2Nyb2xsUG9zaXRpb24ueSgpKTsKKyAgICAgICAgdHJhbnNmb3JtLnNjYWxlKGludmVyc2VTY2Fs
ZSk7CisKKyAgICAgICAgZHJhd2luZ0FyZWEoKS0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBVbnNjYWxpbmcsIHJlc3RvcmUgdGhlIG9y
aWdpbmFsIHNjYWxlIGFuZCBzY3JvbGwgcG9zaXRpb24uCisgICAgaWYgKGRlc3RpbmF0aW9uU2Nh
bGUgPT0gMSAmJiBtX3RodW1ibmFpbFNjYWxlICE9IDEpIHsKKyAgICAgICAgc2NhbGVQYWdlKG1f
cHJlVGh1bWJuYWlsUGFnZVNjYWxlLCBJbnRQb2ludCgpKTsKKyAgICAgICAgbV9wYWdlLT5tYWlu
RnJhbWUoKS52aWV3KCktPnNldFNjcm9sbFBvc2l0aW9uKG1fcHJlVGh1bWJuYWlsU2Nyb2xsUG9z
aXRpb24pOworICAgICAgICBkcmF3aW5nQXJlYSgpLT5zZXRUcmFuc2Zvcm0oVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSk7CisgICAgICAgIG1fdGh1bWJuYWlsU2NhbGUgPSAxOworICAgIH0KK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAppbmRleCA0YjU1YmE5Li4wZWRmMzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTM3NSw2ICszNzUsOCBAQCBwdWJsaWM6CiAg
ICAgTGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9s
YXllckhvc3RpbmdNb2RlOyB9CiAgICAgdm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKHVuc2lnbmVk
KTsKIAorICAgIHZvaWQgc2V0VGh1bWJuYWlsU2NhbGUoZG91YmxlKTsKKwogI2lmIFBMQVRGT1JN
KE1BQykKICAgICB2b2lkIHVwZGF0ZVBsdWdpbnNBY3RpdmVBbmRGb2N1c2VkU3RhdGUoKTsKICAg
ICBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHdpbmRvd0ZyYW1lSW5TY3JlZW5Db29yZGluYXRl
cygpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzOyB9CkBA
IC0xMDkzLDYgKzEwOTUsMTAgQEAgcHJpdmF0ZToKICAgICBVc2VyQWN0aXZpdHkgbV9wcm9jZXNz
U3VwcHJlc3Npb25EaXNhYmxlZEJ5V2ViUHJlZmVyZW5jZTsKIAogICAgIHVpbnQ2NF90IG1fcGVu
ZGluZ05hdmlnYXRpb25JRDsKKworICAgIGRvdWJsZSBtX3ByZVRodW1ibmFpbFBhZ2VTY2FsZTsK
KyAgICBXZWJDb3JlOjpJbnRQb2ludCBtX3ByZVRodW1ibmFpbFNjcm9sbFBvc2l0aW9uOworICAg
IGRvdWJsZSBtX3RodW1ibmFpbFNjYWxlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCmluZGV4IDk3NjEyZGUuLjEyMDQxZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zMjUsNCArMzI1
LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0TWFpbkZy
YW1lSW5WaWV3U291cmNlTW9kZShib29sIGluVmlld1NvdXJjZU1vZGUpCiAgICAgCiAgICAgU2V0
U2Nyb2xsUGlubmluZ0JlaGF2aW9yKHVpbnQzMl90IHBpbm5pbmcpCisKKyAgICBTZXRUaHVtYm5h
aWxTY2FsZShkb3VibGUgc2NhbGUpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhLmgKaW5kZXggZTUwZWI3Ni4uMTA3NjcyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
TGF5ZXJGbHVzaFNjaGVkdWxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTGF5ZXJGbHVzaFNjaGVk
dWxlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTExMyw2ICsxMTQsOCBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29y
ZTo6RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJyaWRlOwogICAgIHZvaWQgYXBwbHlUcmFuc2llbnRa
b29tVG9QYWdlKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOwogCisg
ICAgdmlydHVhbCB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYpIG92ZXJyaWRlOworCiAgICAgdm9pZCB1cGRhdGVMYXllckhvc3RpbmdDb250ZXh0
KCk7CiAKICAgICB2b2lkIHNldFJvb3RDb21wb3NpdGluZ0xheWVyKENBTGF5ZXIgKik7CkBAIC0x
MzIsMTcgKzEzNSwxNyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9z
dGluZ0NvbnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4dDsKIAorICAgIFJldGFpblB0cjxDQUxh
eWVyPiBtX2hvc3RpbmdMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9yb290TGF5ZXI7
Ci0gICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fcGVuZGluZ1Jvb3RDb21wb3NpdGluZ0xheWVyOwot
CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fZGVidWdJbmZvTGF5ZXI7CiAKKyAgICBSZXRhaW5Q
dHI8Q0FMYXllcj4gbV9wZW5kaW5nUm9vdExheWVyOworCiAgICAgdHlwZWRlZiBIYXNoTWFwPFBh
Z2VPdmVybGF5Kiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+PiBQYWdl
T3ZlcmxheUxheWVyTWFwOwogICAgIFBhZ2VPdmVybGF5TGF5ZXJNYXAgbV9wYWdlT3ZlcmxheUxh
eWVyczsKICAgICBtdXRhYmxlIEhhc2hNYXA8Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllcios
IFJldGFpblB0cjxDQUxheWVyPj4gbV9wYWdlT3ZlcmxheVBsYXRmb3JtTGF5ZXJzOwogCiAgICAg
Ym9vbCBtX2lzUGFpbnRpbmdTdXNwZW5kZWQ7Ci0gICAgYm9vbCBtX2hhc1Jvb3RDb21wb3NpdGlu
Z0xheWVyOwogCiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fZXhwb3NlZFJlY3Q7CiAgICAgV2Vi
Q29yZTo6RmxvYXRSZWN0IG1fc2Nyb2xsZWRFeHBvc2VkUmVjdDsKQEAgLTE1Myw2ICsxNTYsOCBA
QCBwcml2YXRlOgogCiAgICAgZG91YmxlIG1fdHJhbnNpZW50Wm9vbVNjYWxlOwogICAgIFdlYkNv
cmU6OkZsb2F0UG9pbnQgbV90cmFuc2llbnRab29tT3JpZ2luOworCisgICAgV2ViQ29yZTo6VHJh
bnNmb3JtYXRpb25NYXRyaXggbV90cmFuc2Zvcm07CiB9OwogCiBEUkFXSU5HX0FSRUFfVFlQRV9D
QVNUUyhUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSwgdHlwZSgpID09IERyYXdpbmdBcmVh
VHlwZVRpbGVkQ29yZUFuaW1hdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYS5tbQppbmRleCBiMzFkZmMwLi45YWQ3ZTFhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC03OCwxMiArNzgsMTAgQEAgVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKFdlYlBhZ2Uq
IHdlYlBhZ2UsIGMKIHsKICAgICBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCkuc2V0
Rm9yY2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7CiAKLSAgICBtX3Jvb3RMYXllciA9IFtDQUxheWVy
IGxheWVyXTsKLQotICAgIENHUmVjdCByb290TGF5ZXJGcmFtZSA9IG1fd2ViUGFnZS0+Ym91bmRz
KCk7Ci0gICAgbV9yb290TGF5ZXIuZ2V0KCkuZnJhbWUgPSByb290TGF5ZXJGcmFtZTsKLSAgICBt
X3Jvb3RMYXllci5nZXQoKS5vcGFxdWUgPSBZRVM7Ci0gICAgbV9yb290TGF5ZXIuZ2V0KCkuZ2Vv
bWV0cnlGbGlwcGVkID0gWUVTOworICAgIG1faG9zdGluZ0xheWVyID0gW0NBTGF5ZXIgbGF5ZXJd
OworICAgIFttX2hvc3RpbmdMYXllciBzZXRGcmFtZTptX3dlYlBhZ2UtPmJvdW5kcygpXTsKKyAg
ICBbbV9ob3N0aW5nTGF5ZXIgc2V0T3BhcXVlOllFU107CisgICAgW21faG9zdGluZ0xheWVyIHNl
dEdlb21ldHJ5RmxpcHBlZDpZRVNdOwogCiAgICAgdXBkYXRlTGF5ZXJIb3N0aW5nQ29udGV4dCgp
OwogICAgIHNldENvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKTsKQEAgLTEyNCwxNCAr
MTIyLDE0IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpZENoYW5nZVNj
cm9sbE9mZnNldEZvckFueUZyYW1lKCkKIAogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYTo6c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXll
cikKIHsKLSAgICBDQUxheWVyICpyb290Q29tcG9zaXRpbmdMYXllciA9IGdyYXBoaWNzTGF5ZXIg
PyBncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiBuaWw7CisgICAgQ0FMYXllciAqcm9v
dExheWVyID0gZ3JhcGhpY3NMYXllciA/IGdyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSA6
IG5pbDsKIAogICAgIGlmIChtX2xheWVyVHJlZVN0YXRlSXNGcm96ZW4pIHsKLSAgICAgICAgbV9w
ZW5kaW5nUm9vdENvbXBvc2l0aW5nTGF5ZXIgPSByb290Q29tcG9zaXRpbmdMYXllcjsKKyAgICAg
ICAgbV9wZW5kaW5nUm9vdExheWVyID0gcm9vdExheWVyOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIocm9vdENvbXBvc2l0aW5nTGF5ZXIpOwor
ICAgIHNldFJvb3RDb21wb3NpdGluZ0xheWVyKHJvb3RMYXllcik7CiB9CiAKIHZvaWQgVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludCgpCkBAIC0yMjEsNyArMjE5LDcg
QEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0UGFnZU92ZXJsYXlOZWVk
c0Rpc3BsYXkoUGFnZU92ZXJsYXkqIHBhZ2UKIAogICAgIGlmICghbGF5ZXItPmRyYXdzQ29udGVu
dCgpKSB7CiAgICAgICAgIGxheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7Ci0gICAgICAgIGxh
eWVyLT5zZXRTaXplKGV4cGFuZGVkSW50U2l6ZShGbG9hdFNpemUobV9yb290TGF5ZXIuZ2V0KCku
ZnJhbWUuc2l6ZSkpKTsKKyAgICAgICAgbGF5ZXItPnNldFNpemUoZXhwYW5kZWRJbnRTaXplKEZs
b2F0U2l6ZShtX2hvc3RpbmdMYXllci5nZXQoKS5mcmFtZS5zaXplKSkpOwogICAgIH0KIAogICAg
IGxheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7CkBAIC0zODAsMTIgKzM3OCwxMiBA
QCBib29sIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpmbHVzaExheWVycygpCiAKICAg
ICBtX3dlYlBhZ2UtPmxheW91dElmTmVlZGVkKCk7CiAKLSAgICBpZiAobV9wZW5kaW5nUm9vdENv
bXBvc2l0aW5nTGF5ZXIpIHsKLSAgICAgICAgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIobV9wZW5k
aW5nUm9vdENvbXBvc2l0aW5nTGF5ZXIuZ2V0KCkpOwotICAgICAgICBtX3BlbmRpbmdSb290Q29t
cG9zaXRpbmdMYXllciA9IG51bGxwdHI7CisgICAgaWYgKG1fcGVuZGluZ1Jvb3RMYXllcikgewor
ICAgICAgICBzZXRSb290Q29tcG9zaXRpbmdMYXllcihtX3BlbmRpbmdSb290TGF5ZXIuZ2V0KCkp
OworICAgICAgICBtX3BlbmRpbmdSb290TGF5ZXIgPSBudWxscHRyOwogICAgIH0KIAotICAgIEZs
b2F0UmVjdCB2aXNpYmxlUmVjdCA9IFttX3Jvb3RMYXllciBmcmFtZV07CisgICAgRmxvYXRSZWN0
IHZpc2libGVSZWN0ID0gW21faG9zdGluZ0xheWVyIGZyYW1lXTsKICAgICB2aXNpYmxlUmVjdC5p
bnRlcnNlY3QobV9zY3JvbGxlZEV4cG9zZWRSZWN0KTsKIAogICAgIGZvciAoUGFnZU92ZXJsYXlM
YXllck1hcDo6aXRlcmF0b3IgaXQgPSBtX3BhZ2VPdmVybGF5TGF5ZXJzLmJlZ2luKCksIGVuZCA9
IG1fcGFnZU92ZXJsYXlMYXllcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewpAQCAtNDE0LDgg
KzQxMiw4IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnN1c3BlbmRQYWlu
dGluZygpCiAgICAgQVNTRVJUKCFtX2lzUGFpbnRpbmdTdXNwZW5kZWQpOwogICAgIG1faXNQYWlu
dGluZ1N1c3BlbmRlZCA9IHRydWU7CiAKLSAgICBbbV9yb290TGF5ZXIgc2V0VmFsdWU6KGlkKWtD
RkJvb2xlYW5UcnVlIGZvcktleTpAIk5TQ0FWaWV3UmVuZGVyUGF1c2VkIl07Ci0gICAgW1tOU05v
dGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpAIk5T
Q0FWaWV3UmVuZGVyRGlkUGF1c2VOb3RpZmljYXRpb24iIG9iamVjdDpuaWwgdXNlckluZm86W05T
RGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDptX3Jvb3RMYXllci5nZXQoKSBmb3JLZXk6
QCJsYXllciJdXTsKKyAgICBbbV9ob3N0aW5nTGF5ZXIgc2V0VmFsdWU6QFlFUyBmb3JLZXk6QCJO
U0NBVmlld1JlbmRlclBhdXNlZCJdOworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVs
dENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6QCJOU0NBVmlld1JlbmRlckRpZFBhdXNlTm90
aWZpY2F0aW9uIiBvYmplY3Q6bmlsIHVzZXJJbmZvOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdp
dGhPYmplY3Q6bV9ob3N0aW5nTGF5ZXIuZ2V0KCkgZm9yS2V5OkAibGF5ZXIiXV07CiB9CiAKIHZv
aWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnJlc3VtZVBhaW50aW5nKCkKQEAgLTQy
Nyw4ICs0MjUsOCBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpyZXN1bWVQ
YWludGluZygpCiAgICAgfQogICAgIG1faXNQYWludGluZ1N1c3BlbmRlZCA9IGZhbHNlOwogCi0g
ICAgW21fcm9vdExheWVyIHNldFZhbHVlOihpZClrQ0ZCb29sZWFuRmFsc2UgZm9yS2V5OkAiTlND
QVZpZXdSZW5kZXJQYXVzZWQiXTsKLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRD
ZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOkAiTlNDQVZpZXdSZW5kZXJEaWRSZXN1bWVOb3Rp
ZmljYXRpb24iIG9iamVjdDpuaWwgdXNlckluZm86W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0
aE9iamVjdDptX3Jvb3RMYXllci5nZXQoKSBmb3JLZXk6QCJsYXllciJdXTsKKyAgICBbbV9ob3N0
aW5nTGF5ZXIgc2V0VmFsdWU6QE5PIGZvcktleTpAIk5TQ0FWaWV3UmVuZGVyUGF1c2VkIl07Cisg
ICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9u
TmFtZTpAIk5TQ0FWaWV3UmVuZGVyRGlkUmVzdW1lTm90aWZpY2F0aW9uIiBvYmplY3Q6bmlsIHVz
ZXJJbmZvOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6bV9ob3N0aW5nTGF5ZXIu
Z2V0KCkgZm9yS2V5OkAibGF5ZXIiXV07CiB9CiAKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWE6OnNldEV4cG9zZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZXhwb3NlZFJlY3QpCkBA
IC00OTgsNyArNDk2LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBk
YXRlR2VvbWV0cnkoY29uc3QgSW50U2l6ZSYgdmlld1NpemUsIGNvbnMKICAgICBbQ0FUcmFuc2Fj
dGlvbiBiZWdpbl07CiAgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsK
IAotICAgIG1fcm9vdExheWVyLmdldCgpLmZyYW1lID0gQ0dSZWN0TWFrZShsYXllclBvc2l0aW9u
LndpZHRoKCksIGxheWVyUG9zaXRpb24uaGVpZ2h0KCksIHZpZXdTaXplLndpZHRoKCksIHZpZXdT
aXplLmhlaWdodCgpKTsKKyAgICBbbV9ob3N0aW5nTGF5ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZShs
YXllclBvc2l0aW9uLndpZHRoKCksIGxheWVyUG9zaXRpb24uaGVpZ2h0KCksIHZpZXdTaXplLndp
ZHRoKCksIHZpZXdTaXplLmhlaWdodCgpKV07CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRd
OwogICAgIApAQCAtNTU5LDggKzU1Nyw4IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OnVwZGF0ZUxheWVySG9zdGluZ0NvbnRleHQoKQogI2VuZGlmCiAgICAgfQogCi0gICAg
aWYgKG1faGFzUm9vdENvbXBvc2l0aW5nTGF5ZXIpCi0gICAgICAgIG1fbGF5ZXJIb3N0aW5nQ29u
dGV4dC0+c2V0Um9vdExheWVyKG1fcm9vdExheWVyLmdldCgpKTsKKyAgICBpZiAobV9yb290TGF5
ZXIpCisgICAgICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Um9vdExheWVyKG1faG9zdGlu
Z0xheWVyLmdldCgpKTsKIAogICAgIGlmIChjb2xvclNwYWNlKQogICAgICAgICBtX2xheWVySG9z
dGluZ0NvbnRleHQtPnNldENvbG9yU3BhY2UoY29sb3JTcGFjZS5nZXQoKSk7CkBAIC01NzAsMTkg
KzU2OCwyMCBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRSb290Q29t
cG9zaXRpbmdMYXllcihDQUxheWVyICpsYXllcikKIHsKICAgICBBU1NFUlQoIW1fbGF5ZXJUcmVl
U3RhdGVJc0Zyb3plbik7CiAKLSAgICBib29sIGhhZFJvb3RDb21wb3NpdGluZ0xheWVyID0gbV9o
YXNSb290Q29tcG9zaXRpbmdMYXllcjsKLSAgICBtX2hhc1Jvb3RDb21wb3NpdGluZ0xheWVyID0g
ISFsYXllcjsKLQogICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKICAgICBbQ0FUcmFuc2FjdGlv
biBzZXREaXNhYmxlQWN0aW9uczpZRVNdOwogCi0gICAgbV9yb290TGF5ZXIuZ2V0KCkuc3VibGF5
ZXJzID0gbV9oYXNSb290Q29tcG9zaXRpbmdMYXllciA/IFtOU0FycmF5IGFycmF5V2l0aE9iamVj
dDpsYXllcl0gOiBbTlNBcnJheSBhcnJheV07CisgICAgW21faG9zdGluZ0xheWVyIHNldFN1Ymxh
eWVyczpsYXllciA/IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpsYXllcl0gOiBbTlNBcnJheSBh
cnJheV1dOworCisgICAgYm9vbCBoYWRSb290TGF5ZXIgPSAhIW1fcm9vdExheWVyOworICAgIG1f
cm9vdExheWVyID0gbGF5ZXI7CisgICAgW21fcm9vdExheWVyIHNldFN1YmxheWVyVHJhbnNmb3Jt
Om1fdHJhbnNmb3JtXTsKIAotICAgIGlmIChoYWRSb290Q29tcG9zaXRpbmdMYXllciAhPSBtX2hh
c1Jvb3RDb21wb3NpdGluZ0xheWVyKQotICAgICAgICBtX2xheWVySG9zdGluZ0NvbnRleHQtPnNl
dFJvb3RMYXllcihtX2hhc1Jvb3RDb21wb3NpdGluZ0xheWVyID8gbV9yb290TGF5ZXIuZ2V0KCkg
OiAwKTsKKyAgICBpZiAoaGFkUm9vdExheWVyICE9ICEhbGF5ZXIpCisgICAgICAgIG1fbGF5ZXJI
b3N0aW5nQ29udGV4dC0+c2V0Um9vdExheWVyKGxheWVyID8gbV9ob3N0aW5nTGF5ZXIuZ2V0KCkg
OiAwKTsKIAogICAgIGZvciAoUGFnZU92ZXJsYXlMYXllck1hcDo6aXRlcmF0b3IgaXQgPSBtX3Bh
Z2VPdmVybGF5TGF5ZXJzLmJlZ2luKCksIGVuZCA9IG1fcGFnZU92ZXJsYXlMYXllcnMuZW5kKCk7
IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgW21fcm9vdExheWVyIGFkZFN1YmxheWVyOml0LT52
YWx1ZS0+cGxhdGZvcm1MYXllcigpXTsKKyAgICAgICAgW21faG9zdGluZ0xheWVyIGFkZFN1Ymxh
eWVyOml0LT52YWx1ZS0+cGxhdGZvcm1MYXllcigpXTsKIAogICAgIGlmIChUaWxlZEJhY2tpbmcq
IHRpbGVkQmFja2luZyA9IG1haW5GcmFtZVRpbGVkQmFja2luZygpKQogICAgICAgICB0aWxlZEJh
Y2tpbmctPnNldEFnZ3Jlc3NpdmVseVJldGFpbnNUaWxlcyhtX3dlYlBhZ2UtPmNvcmVQYWdlKCkt
PnNldHRpbmdzKCkuYWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkKCkpOwpAQCAtNjA4LDcg
KzYwNyw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNyZWF0ZVBhZ2VP
dmVybGF5TGF5ZXIoUGFnZU92ZXJsYXkqIHBhZ2VPdmVyCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVn
aW5dOwogICAgIFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107CiAKLSAgICBb
bV9yb290TGF5ZXIgYWRkU3VibGF5ZXI6bGF5ZXItPnBsYXRmb3JtTGF5ZXIoKV07CisgICAgW21f
aG9zdGluZ0xheWVyIGFkZFN1YmxheWVyOmxheWVyLT5wbGF0Zm9ybUxheWVyKCldOwogCiAgICAg
W0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKIApAQCAtNjQzLDcgKzY0Miw3IEBAIHZvaWQgVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpZENvbW1pdENoYW5nZXNGb3JMYXllcihjb25zdCBH
cmFwaGljc0xheWVyCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAgIFtDQVRyYW5zYWN0
aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107CiAKLSAgICBbbV9yb290TGF5ZXIgaW5zZXJ0U3Vi
bGF5ZXI6bGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSBhYm92ZTpvbGRQbGF0Zm9ybUxheWVyLmdldCgp
XTsKKyAgICBbbV9ob3N0aW5nTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6bGF5ZXItPnBsYXRmb3JtTGF5
ZXIoKSBhYm92ZTpvbGRQbGF0Zm9ybUxheWVyLmdldCgpXTsKICAgICBbb2xkUGxhdGZvcm1MYXll
ciByZW1vdmVGcm9tU3VwZXJsYXllcl07CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwpA
QCAtNjY5LDcgKzY2OCw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVw
ZGF0ZURlYnVnSW5mb0xheWVyKGJvb2wgc2hvd0xheWVyKQogI2lmbmRlZiBOREVCVUcKICAgICAg
ICAgICAgIFttX2RlYnVnSW5mb0xheWVyIHNldE5hbWU6QCJEZWJ1ZyBJbmZvIl07CiAjZW5kaWYK
LSAgICAgICAgICAgIFttX3Jvb3RMYXllciBhZGRTdWJsYXllcjptX2RlYnVnSW5mb0xheWVyLmdl
dCgpXTsKKyAgICAgICAgICAgIFttX2hvc3RpbmdMYXllciBhZGRTdWJsYXllcjptX2RlYnVnSW5m
b0xheWVyLmdldCgpXTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobV9kZWJ1Z0luZm9MYXll
cikgewogICAgICAgICBbbV9kZWJ1Z0luZm9MYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07CkBA
IC02ODgsNyArNjg3LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWRq
dXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQKICAgICAvLyBGSVhNRTog
S2VlcCBhcm91bmQgcGFnZVNjYWxlPTEgdGlsZXMgc28gd2UgY2FuIHpvb20gb3V0IHdpdGhvdXQg
Z2Fwcy4KICAgICAvLyBGSVhNRTogQnJpbmcgaW4gdW5wYXJlbnRlZC1idXQtcGFpbnRlZCB0aWxl
cyB3aGVuIHpvb21pbmcgb3V0LCB0byBmaWxsIGluIGFueSBnYXBzLgogCi0gICAgaWYgKCFtX3Jv
b3RMYXllcikKKyAgICBpZiAoIW1faG9zdGluZ0xheWVyKQogICAgICAgICByZXR1cm47CiAKICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CkBAIC04MjcsNiArODI2LDEyIEBAIHZv
aWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFwcGx5VHJhbnNpZW50Wm9vbVRvUGFn
ZShkb3VibGUgc2NhbGUsIEZsb2F0CiAgICAgbV90cmFuc2llbnRab29tU2NhbGUgPSAxOwogfQog
Cit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRUcmFuc2Zvcm0oY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKK3sKKyAgICBtX3RyYW5zZm9ybSA9IHRy
YW5zZm9ybTsKKyAgICBbbV9yb290TGF5ZXIgc2V0U3VibGF5ZXJUcmFuc2Zvcm06dHJhbnNmb3Jt
XTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9T
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224251</attachid>
            <date>2014-02-14 14:11:22 -0800</date>
            <delta_ts>2014-02-17 11:15:33 -0800</delta_ts>
            <desc>fix ML build + offline review comments</desc>
            <filename>thumbnail.diff</filename>
            <type>text/plain</type>
            <size>48221</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlZDc0NGUwLi5hNGFlMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE4
IEBACisyMDE0LTAyLTE0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBhIHdheSB0byBlZmZpY2llbnRseSB0aHVtYm5haWwgV0tWaWV3cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4ODMxCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8xNTY2OTY1NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5haWxW
aWV3Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5haWxW
aWV3Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV0tUaHVtYm5haWxWaWV3IGluaXRXaXRoRnJhbWU6
ZnJvbVdLVmlldzpdKToKKyAgICAgICAgKC1bV0tUaHVtYm5haWxWaWV3IF92aWV3V2FzVW5wYXJl
bnRlZF0pOgorICAgICAgICAoLVtXS1RodW1ibmFpbFZpZXcgX3ZpZXdXYXNQYXJlbnRlZF0pOgor
ICAgICAgICAoLVtXS1RodW1ibmFpbFZpZXcgdmlld0RpZE1vdmVUb1dpbmRvd10pOgorICAgICAg
ICAoLVtXS1RodW1ibmFpbFZpZXcgc2V0U2NhbGU6XSk6CisgICAgICAgICgtW1dLVGh1bWJuYWls
VmlldyBzZXRUaHVtYm5haWxMYXllcjpdKToKKyAgICAgICAgKC1bV0tUaHVtYm5haWxWaWV3IHRo
dW1ibmFpbExheWVyXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1RodW1ibmFp
bFZpZXdJbnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgQWRkIFdLVGh1bWJuYWlsVmlldy4KKyAg
ICAgICAgQ2xpZW50cyBvZiB0aGlzIHByaXZhdGUgQVBJIHdpbGwgY2FsbCBpbml0V2l0aEZyYW1l
OmZyb21XS1ZpZXc6LAorICAgICAgICBnaXZpbmcgdGhlIFdLVmlldyB0aGV5IHdpc2ggdG8gYm9y
cm93IGNvbnRlbnRzIGZyb20uCisgICAgICAgIFRoZXkgY2FuIGFsc28gY2FsbCBzZXRTY2FsZTog
dG8gc2V0IHRoZSBzY2FsZSB0aGF0IHdpbGwgYmUgdXNlZCB0byByZW5kZXIKKyAgICAgICAgdGhl
IGNvbnRlbnQgaW4gYW4gaW1wbGVtZW50YXRpb24tZGVmaW5lZCBzZXQgb2YgY2FzZXMgKGN1cnJl
bnRseSwgd2Ugd2lsbAorICAgICAgICB1c2UgdGhlIGxvdyByZXNvbHV0aW9uIHNjYWxlIGZvciBX
S1ZpZXdzIHdoaWNoIHdlcmUgbm90IHBhcmVudGVkIHdoZW4gdGhlCisgICAgICAgIFdLVGh1bWJu
YWlsVmlldyB3YXMgY3JlYXRlZDsgcGFyZW50ZWQgV0tWaWV3cyB3aWxsIHVzZSB0aGUgZXhpc3Rp
bmcgc2NhbGUpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwu
bW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUp
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6aXNWaWV3VmlzaWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdWaXNpYmxlT3JPY2NsdWRlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdJbldpbmRvdyk6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp2aWV3TGF5ZXJIb3N0aW5nTW9kZSk6CisgICAgICAg
IElmIHRoZSBXS1ZpZXcgaGFzIGFuIGFjdGl2ZWx5LXBhcmVudGVkIFdLVGh1bWJuYWlsVmlldyBh
dHRhY2hlZCB0byBpdCwKKyAgICAgICAgd2Ugc2hvdWxkIGRldGVybWluZSB2aWV3IHZpc2liaWxp
dHkvZXRjLiB1c2luZyB0aGF0IHZpZXcgaW5zdGVhZCBvZiB0aGUgV0tWaWV3LgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgZGVhbGxv
Y10pOgorICAgICAgICBXS1RodW1ibmFpbFZpZXcgaG9sZHMgb24gdG8gdGhlIFdLVmlldywgYW5k
IGNsZWFycyBXS1ZpZXcncyBiYWNrcG9pbnRlcgorICAgICAgICB3aGVuIGl0IGxlYXZlcyB0aGUg
d2luZG93LCBzbyB3ZSBzaG91bGQgbmV2ZXIgc2VlIFdLVmlldyBnZXQgZGVhbGxvY2F0ZWQKKyAg
ICAgICAgd2l0aCBhIGxpdmUgdGh1bWJuYWlsIHZpZXcuCisKKyAgICAgICAgKC1bV0tWaWV3IHNj
cm9sbFdoZWVsOl0pOgorICAgICAgICAoLVtXS1ZpZXcgbW91c2VNb3ZlZDpdKToKKyAgICAgICAg
KC1bV0tWaWV3IG1vdXNlRG93bjpdKToKKyAgICAgICAgKC1bV0tWaWV3IG1vdXNlVXA6XSk6Cisg
ICAgICAgICgtW1dLVmlldyBtb3VzZURyYWdnZWQ6XSk6CisgICAgICAgIERvbid0IGhhbmRsZSBl
dmVudHMgd2hpbGUgdGh1bWJuYWlsZWQuCisKKyAgICAgICAgKC1bV0tWaWV3IF9zZXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllcjpdKToKKyAgICAgICAgRm9yd2FyZCByb290IGxh
eWVyIGNoYW5nZXMgdG8gdGhlIGluc3RhbGxlZCB0aHVtYm5haWwgdmlldy4KKworICAgICAgICAo
LVtXS1ZpZXcgX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlUm9vdExheWVyXSk6CisgICAgICAg
IF9hY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllciBzaG91bGQgcmV0dXJuIHRoZSBz
YW1lIGxheWVyCisgICAgICAgIHRoYXQgd2FzIHNldCB2aWEgX3NldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlUm9vdExheWVyOiwgbm90IGl0cyBwYXJlbnQuCisKKyAgICAgICAgKC1bV0tWaWV3
IF9zZXRUaHVtYm5haWxWaWV3Ol0pOgorICAgICAgICAoLVtXS1ZpZXcgX3RodW1ibmFpbFZpZXdd
KToKKyAgICAgICAgSW5zdGFsbC91bmluc3RhbGwgYSBXS1RodW1ibmFpbFZpZXcuIEhhbmQgaXQg
b3VyIHJvb3QgbGF5ZXIgaWYgaW5zdGFsbGluZywKKyAgICAgICAgb3IgcmVjb3ZlciBpdCBmcm9t
IHRoZSBkZXBhcnRpbmcgdGh1bWJuYWlsIHZpZXcgaWYgdW5pbnN0YWxsaW5nLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgQWRkIGluIGEg
bWlzc2luZyBSZXRhaW5QdHIuaCBpbmNsdWRlIHRoYXQgSSBtaXNzZWQgZWFybGllciBhbmQgY2F1
c2VzIHRyb3VibGUuCisgICAgICAgIEFkZCBXS1ZpZXcgX3RodW1ibmFpbFZpZXcgYW5kIF9zZXRU
aHVtYm5haWxWaWV3Oi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFRodW1ibmFpbFNjYWxlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6bWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyk6CisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dl
c3R1cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFuZGxlU3dpcGVHZXN0dXJlKToKKyAgICAgICAgU3dpcGUg
d2FzIGFjY2lkZW50YWxseSBkZXBlbmRpbmcgb24gYSBtaXN0YWtlIGluIFdLVmlldydzCisgICAg
ICAgIF9hY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllciB3aGVyZSBpdCB3YXMgcmV0
dXJuaW5nIHRoZSB3cm9uZyBsYXllci4KKyAgICAgICAgVGhlIGFjdHVhbCByb290IGxheWVyIGRv
ZXNuJ3QgaGF2ZSBhIHNpemUsIHNvIHdlIHNob3VsZCB1c2UgdGhlIGRyYXdpbmcKKyAgICAgICAg
YXJlYSdzIHNpemUgaW5zdGVhZC4KKworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgQWRkIHNvbWUgbmV3IGZpbGVzLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpX
ZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0VGh1bWJuYWlsU2NhbGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgIEFwcGx5IHRoZSB0aHVt
Ym5haWwgc2NhbGUgdG8gdGhlIHBhZ2UuIElmIHdlJ3JlIGN1cnJlbnRseSBub3QgaW4KKyAgICAg
ICAgdGh1bWJuYWlsIHNjYWxpbmcgbW9kZSwgc2F2ZSB0aGUgY3VycmVudCBwYWdlIHNjYWxlIGFu
ZCBzY3JvbGwgcG9zaXRpb24KKyAgICAgICAgc28gd2UgY2FuIHJlc3RvcmUgdGhlbSBvbmNlIHdl
IGxlYXZlIHRodW1ibmFpbCBtb2RlIGFnYWluLgorICAgICAgICBUcmFuc2Zvcm0gdGhlIERyYXdp
bmdBcmVhIHNvIHRoYXQgdGhlIHBhZ2UgYXBwZWFycyBhdCB0aGUgc2FtZQorICAgICAgICBwb3Np
dGlvbiBhbmQgc2l6ZSwgYnV0IHNjYWxlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9EcmF3aW5nQXJlYS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6c2V0VHJhbnNm
b3JtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWE6OnNldFRyYW5zZm9ybSk6CisgICAgICAgIEFkZCBhIERyYXdpbmdB
cmVhIG1ldGhvZCB0byBhcHBseSBhbiBhcmJpdHJhcnkgdHJhbnNmb3JtIHRvIHRoZSBkcmF3aW5n
IGFyZWEuCisKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6
OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKToKKyAgICAg
ICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldFBhZ2VPdmVybGF5
TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE6OnN1c3BlbmRQYWludGluZyk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpyZXN1bWVQYWludGluZyk6CisgICAgICAgIChXZWJLaXQ6
OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVHZW9tZXRyeSk6CisgICAgICAg
IChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVMYXllckhvc3Rp
bmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OmNyZWF0ZVBhZ2VPdmVybGF5TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6ZGlkQ29tbWl0Q2hhbmdlc0ZvckxheWVyKToKKyAgICAgICAg
KFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZURlYnVnSW5mb0xh
eWVyKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFk
anVzdFRyYW5zaWVudFpvb20pOgorICAgICAgICBSZW1vdmUgdGhlIHdvcmQgImNvbXBvc2l0aW5n
IiBpbiBhIGJ1bmNoIG9mIHBsYWNlcyB3aGVyZSBpdCBpc24ndCBuZWVkZWQuCisgICAgICAgIFJl
bmFtZSBtX3Jvb3RMYXllciB0byBtX2hvc3RpbmdMYXllciwgYW5kIHJlcHVycG9zZSBtX3Jvb3RM
YXllciB0byBzdG9yZQorICAgICAgICB0aGUgcm9vdCBjb21wb3NpdGluZyBsYXllciBhY3R1YWxs
eSBwYXNzZWQgaW4gdmlhIHNldFJvb3RDb21wb3NpdGluZ0xheWVyLgorICAgICAgICBSZW5hbWUg
bV9wZW5kaW5nUm9vdENvbXBvc2l0aW5nTGF5ZXIgdG8gbV9wZW5kaW5nUm9vdExheWVyLgorCiAy
MDE0LTAyLTEyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtp
T1NdW1dLMl0gQWx3YXlzIGVuYWJsZSBBVktpdCBpbiBXSzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5haWxWaWV3LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVGh1bWJuYWlsVmlldy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkNzUyYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVGh1bWJuYWlsVmlldy5oCkBAIC0wLDAgKzEs
NDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQyL1dLRm91bmRhdGlvbi5oPgorCisj
aWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCA8Q29jb2EvQ29jb2EuaD4KKyNpbXBvcnQgPFdl
YktpdDIvV0tEZWNsYXJhdGlvblNwZWNpZmllcnMuaD4KKworQGNsYXNzIFdLVmlldzsKKworV0tf
QVBJX0NMQVNTIEBpbnRlcmZhY2UgV0tUaHVtYm5haWxWaWV3IDogTlNWaWV3CisKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgZnJvbVdLVmlldzooV0tWaWV3ICop
d2tWaWV3OworLSAodm9pZClzZXRTY2FsZTooZG91YmxlKXNjYWxlOworCitAZW5kCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1RodW1i
bmFpbFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVGh1bWJu
YWlsVmlldy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTM0MjRhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Ro
dW1ibmFpbFZpZXcubW0KQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIldLVGh1bWJuYWlsVmlld0ludGVybmFsLmgiCisKKyNpZiBXS19B
UElfRU5BQkxFRAorCisjaW1wb3J0ICJXS0FQSUNhc3QuaCIKKyNpbXBvcnQgIldLVmlldy5oIgor
I2ltcG9ydCAiV0tWaWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorCisv
LyBGSVhNRTogTWFrZSBpdCBwb3NzaWJsZSB0byBsZWF2ZSBhIHNuYXBzaG90IG9mIHRoZSBjb250
ZW50IHByZXNlbnRlZCBpbiB0aGUgV0tWaWV3IHdoaWxlIHRoZSB0aHVtYm5haWwgaXMgbGl2ZS4K
Ky8vIEZJWE1FOiBEb24ndCBtYWtlIG5ldyBzcGVjdWxhdGl2ZSB0aWxlcyB3aGlsZSB0aHVtYm5h
aWxlZC4KKy8vIEZJWE1FOiBIaWRlIHNjcm9sbGJhcnMgaW4gdGhlIHRodW1ibmFpbC4KKy8vIEZJ
WE1FOiBXZSBzaG91bGQgcmUtdXNlIGV4aXN0aW5nIHRpbGVzIGZvciB1bnBhcmVudGVkIHZpZXdz
LCBpZiB3ZSBoYXZlIHRoZW0gKHdlIG5lZWQgdG8ga25vdyBpZiB0aGV5J3ZlIGJlZW4gcHVyZ2Vk
OyBpZiBzbywgcmVwYWludCBhdCBzY2FsZWQtZG93biBzaXplKS4KKy8vIEZJWE1FOiBXZSBzaG91
bGQgc3dpdGNoIHRvIHRoZSBsb3ctcmVzb2x1dGlvbiBzY2FsZSBpZiBhIHZpZXcgd2UgaGF2ZSBo
aWdoLXJlc29sdXRpb24gdGlsZXMgZm9yIHJlcGFpbnRzLgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0BpbXBsZW1lbnRhdGlvbiBXS1RodW1i
bmFpbFZpZXcKK3sKKyAgICBSZXRhaW5QdHI8V0tWaWV3PiBfd2tWaWV3OworICAgIFdlYlBhZ2VQ
cm94eSogX3dlYlBhZ2VQcm94eTsKKyAgICBkb3VibGUgX3RodW1ibmFpbFNjYWxlOworCisgICAg
Ym9vbCBfb3JpZ2luYWxNYXlTdGFydE1lZGlhV2hlbkluV2luZG93OworICAgIGJvb2wgX29yaWdp
bmFsU291cmNlVmlld0lzSW5XaW5kb3c7CisKKyAgICBib29sIF9zaG91bGRBcHBseVRodW1ibmFp
bFNjYWxlOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1l
IGZyb21XS1ZpZXc6KFdLVmlldyAqKXdrVmlldworeworICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdp
dGhGcmFtZTpmcmFtZV07CisgICAgaWYgKHNlbGYpIHsKKyAgICAgICAgX3drVmlldyA9IHdrVmll
dzsKKyAgICAgICAgX3dlYlBhZ2VQcm94eSA9IHRvSW1wbChbX3drVmlldyBwYWdlUmVmXSk7Cisg
ICAgICAgIF90aHVtYm5haWxTY2FsZSA9IDE7CisKKyAgICAgICAgX29yaWdpbmFsTWF5U3RhcnRN
ZWRpYVdoZW5JbldpbmRvdyA9IF93ZWJQYWdlUHJveHktPm1heVN0YXJ0TWVkaWFXaGVuSW5XaW5k
b3coKTsKKyAgICAgICAgX29yaWdpbmFsU291cmNlVmlld0lzSW5XaW5kb3cgPSAhIVtfd2tWaWV3
IHdpbmRvd107CisKKyAgICAgICAgX3Nob3VsZEFwcGx5VGh1bWJuYWlsU2NhbGUgPSAhX29yaWdp
bmFsU291cmNlVmlld0lzSW5XaW5kb3c7CisgICAgfQorICAgIHJldHVybiBzZWxmOworfQorCist
ICh2b2lkKV92aWV3V2FzVW5wYXJlbnRlZAoreworICAgIGlmIChfc2hvdWxkQXBwbHlUaHVtYm5h
aWxTY2FsZSkKKyAgICAgICAgX3dlYlBhZ2VQcm94eS0+c2V0VGh1bWJuYWlsU2NhbGUoMSk7CisK
KyAgICBbX3drVmlldyBfc2V0VGh1bWJuYWlsVmlldzpuaWxdOworICAgIF93ZWJQYWdlUHJveHkt
PnNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3coX29yaWdpbmFsTWF5U3RhcnRNZWRpYVdoZW5J
bldpbmRvdyk7Cit9CisKKy0gKHZvaWQpX3ZpZXdXYXNQYXJlbnRlZAoreworICAgIGlmIChbX3dr
VmlldyBfdGh1bWJuYWlsVmlld10pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChfc2hvdWxk
QXBwbHlUaHVtYm5haWxTY2FsZSkKKyAgICAgICAgX3dlYlBhZ2VQcm94eS0+c2V0VGh1bWJuYWls
U2NhbGUoX3RodW1ibmFpbFNjYWxlKTsKKworICAgIGlmICghX29yaWdpbmFsU291cmNlVmlld0lz
SW5XaW5kb3cpCisgICAgICAgIF93ZWJQYWdlUHJveHktPnNldE1heVN0YXJ0TWVkaWFXaGVuSW5X
aW5kb3coZmFsc2UpOworCisgICAgW193a1ZpZXcgX3NldFRodW1ibmFpbFZpZXc6c2VsZl07Cit9
CisKKy0gKHZvaWQpdmlld0RpZE1vdmVUb1dpbmRvdworeworICAgIGlmIChzZWxmLndpbmRvdykK
KyAgICAgICAgW3NlbGYgX3ZpZXdXYXNQYXJlbnRlZF07CisgICAgZWxzZQorICAgICAgICBbc2Vs
ZiBfdmlld1dhc1VucGFyZW50ZWRdOworfQorCistICh2b2lkKXNldFNjYWxlOihkb3VibGUpc2Nh
bGUKK3sKKyAgICBfdGh1bWJuYWlsU2NhbGUgPSBzY2FsZTsKKworICAgIGlmIChzZWxmLndpbmRv
dyAmJiBfc2hvdWxkQXBwbHlUaHVtYm5haWxTY2FsZSkKKyAgICAgICAgX3dlYlBhZ2VQcm94eS0+
c2V0VGh1bWJuYWlsU2NhbGUoX3RodW1ibmFpbFNjYWxlKTsKK30KKworLSAodm9pZClzZXRUaHVt
Ym5haWxMYXllcjooQ0FMYXllciAqKWxheWVyCit7CisgICAgc2VsZi5sYXllci5zdWJsYXllcnMg
PSBsYXllciA/IEBbbGF5ZXJdIDogQFtdOworfQorCistIChDQUxheWVyICopdGh1bWJuYWlsTGF5
ZXIKK3sKKyAgICBpZiAoIXNlbGYubGF5ZXIuc3VibGF5ZXJzLmNvdW50KQorICAgICAgICByZXR1
cm4gbmlsOworCisgICAgcmV0dXJuIFtzZWxmLmxheWVyLnN1YmxheWVycyBvYmplY3RBdEluZGV4
OjBdOworfQorCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzMjgzNDQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVGh1bWJuYWlsVmlld0ludGVybmFs
LmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldLVGh1bWJuYWlsVmll
dy5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworQGludGVyZmFjZSBXS1RodW1ibmFpbFZpZXcg
KCkKKworQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgQ0FMYXllciAqdGh1bWJuYWlsTGF5
ZXI7CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCmluZGV4IDcwZWNkYjQuLjhlNjQ2MDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCkBA
IC0zNyw2ICszNyw3IEBACiAjaW1wb3J0ICJXS0FQSUNhc3QuaCIKICNpbXBvcnQgIldLRnVsbFNj
cmVlbldpbmRvd0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldLU3RyaW5nQ0YuaCIKKyNpbXBvcnQg
IldLVGh1bWJuYWlsVmlldy5oIgogI2ltcG9ydCAiV0tWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQg
IldlYkNvbG9yUGlja2VyTWFjLmgiCiAjaW1wb3J0ICJXZWJDb250ZXh0TWVudVByb3h5TWFjLmgi
CkBAIC0xNjgsNyArMTY5LDggQEAgSW50U2l6ZSBQYWdlQ2xpZW50SW1wbDo6dmlld1NpemUoKQog
CiBib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUoKQogewotICAgIHJldHVy
biBbW21fd2tWaWV3IHdpbmRvd10gaXNLZXlXaW5kb3ddIHx8IFtOU0FwcCBrZXlXaW5kb3ddID09
IFttX3drVmlldyB3aW5kb3ddOworICAgIE5TV2luZG93ICphY3RpdmVWaWV3V2luZG93ID0gbV93
a1ZpZXcuX3RodW1ibmFpbFZpZXcgPyBtX3drVmlldy5fdGh1bWJuYWlsVmlldy53aW5kb3cgOiBt
X3drVmlldy53aW5kb3c7CisgICAgcmV0dXJuIGFjdGl2ZVZpZXdXaW5kb3cuaXNLZXlXaW5kb3cg
fHwgW05TQXBwIGtleVdpbmRvd10gPT0gYWN0aXZlVmlld1dpbmRvdzsKIH0KIAogYm9vbCBQYWdl
Q2xpZW50SW1wbDo6aXNWaWV3Rm9jdXNlZCgpCkBAIC0xODMsMjQgKzE4NSwyNyBAQCB2b2lkIFBh
Z2VDbGllbnRJbXBsOjptYWtlRmlyc3RSZXNwb25kZXIoKQogICAgIAogYm9vbCBQYWdlQ2xpZW50
SW1wbDo6aXNWaWV3VmlzaWJsZSgpCiB7Ci0gICAgaWYgKCFbbV93a1ZpZXcgd2luZG93XSkKKyAg
ICBOU1ZpZXcgKmFjdGl2ZVZpZXcgPSBtX3drVmlldy5fdGh1bWJuYWlsVmlldyA/IG1fd2tWaWV3
Ll90aHVtYm5haWxWaWV3IDogbV93a1ZpZXc7CisgICAgTlNXaW5kb3cgKmFjdGl2ZVZpZXdXaW5k
b3cgPSBhY3RpdmVWaWV3LndpbmRvdzsKKworICAgIGlmICghYWN0aXZlVmlld1dpbmRvdykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFbW21fd2tWaWV3IHdpbmRvd10gaXNWaXNp
YmxlXSkKKyAgICBpZiAoIWFjdGl2ZVZpZXdXaW5kb3cuaXNWaXNpYmxlKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDw9IDEwODAK
ICAgICAvLyBNb3VudGFpbiBMaW9uIGFuZCBwcmV2aW91cyBkbyBub3Qgc3VwcG9ydCBvY2NsdXNp
b24gbm90aWZpY2F0aW9ucywgYW5kIGFzIHN1Y2ggd2lsbAogICAgIC8vIGNvbnRpbnVlIHRvIHJl
cG9ydCBhcyAidmlzaWJsZSIgd2hlbiBub3Qgb24gdGhlIGFjdGl2ZSBzcGFjZS4KLSAgICBpZiAo
IVtbbV93a1ZpZXcgd2luZG93XSBpc09uQWN0aXZlU3BhY2VdKQorICAgIGlmICghYWN0aXZlVmll
d1dpbmRvdy5pc09uQWN0aXZlU3BhY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgog
Ci0gICAgaWYgKFttX3drVmlldyBpc0hpZGRlbk9ySGFzSGlkZGVuQW5jZXN0b3JdKQorICAgIGlm
IChhY3RpdmVWaWV3LmlzSGlkZGVuT3JIYXNIaWRkZW5BbmNlc3RvcikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCi0g
ICAgaWYgKFttX3drVmlldyB3aW5kb3dPY2NsdXNpb25EZXRlY3Rpb25FbmFibGVkXSAmJiAoW1tt
X3drVmlldyB3aW5kb3ddIG9jY2x1c2lvblN0YXRlXSAmIE5TV2luZG93T2NjbHVzaW9uU3RhdGVW
aXNpYmxlKSAhPSBOU1dpbmRvd09jY2x1c2lvblN0YXRlVmlzaWJsZSkKKyAgICBpZiAoW21fd2tW
aWV3IHdpbmRvd09jY2x1c2lvbkRldGVjdGlvbkVuYWJsZWRdICYmIChhY3RpdmVWaWV3V2luZG93
Lm9jY2x1c2lvblN0YXRlICYgTlNXaW5kb3dPY2NsdXNpb25TdGF0ZVZpc2libGUpICE9IE5TV2lu
ZG93T2NjbHVzaW9uU3RhdGVWaXNpYmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYK
IApAQCAtMjA5LDEyICsyMTQsMTIgQEAgYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3VmlzaWJs
ZSgpCiAKIGJvb2wgUGFnZUNsaWVudEltcGw6OmlzVmlld1Zpc2libGVPck9jY2x1ZGVkKCkKIHsK
LSAgICByZXR1cm4gW1ttX3drVmlldyB3aW5kb3ddIGlzVmlzaWJsZV07CisgICAgcmV0dXJuIG1f
d2tWaWV3Ll90aHVtYm5haWxWaWV3ID8gbV93a1ZpZXcuX3RodW1ibmFpbFZpZXcud2luZG93Lmlz
VmlzaWJsZSA6IG1fd2tWaWV3LndpbmRvdy5pc1Zpc2libGU7CiB9CiAKIGJvb2wgUGFnZUNsaWVu
dEltcGw6OmlzVmlld0luV2luZG93KCkKIHsKLSAgICByZXR1cm4gW21fd2tWaWV3IHdpbmRvd107
CisgICAgcmV0dXJuIG1fd2tWaWV3Ll90aHVtYm5haWxWaWV3ID8gbV93a1ZpZXcuX3RodW1ibmFp
bFZpZXcud2luZG93IDogbV93a1ZpZXcud2luZG93OwogfQogCiBib29sIFBhZ2VDbGllbnRJbXBs
Ojppc1Zpc3VhbGx5SWRsZSgpCkBAIC0yMjUsNyArMjMwLDggQEAgYm9vbCBQYWdlQ2xpZW50SW1w
bDo6aXNWaXN1YWxseUlkbGUoKQogTGF5ZXJIb3N0aW5nTW9kZSBQYWdlQ2xpZW50SW1wbDo6dmll
d0xheWVySG9zdGluZ01vZGUoKQogewogI2lmIEhBVkUoT1VUX09GX1BST0NFU1NfTEFZRVJfSE9T
VElORykKLSAgICBpZiAoW21fd2tWaWV3IHdpbmRvd10gJiYgW1ttX3drVmlldyB3aW5kb3ddIF9o
b3N0c0xheWVyc0luV2luZG93U2VydmVyXSkKKyAgICBOU1dpbmRvdyAqYWN0aXZlVmlld1dpbmRv
dyA9IG1fd2tWaWV3Ll90aHVtYm5haWxWaWV3ID8gbV93a1ZpZXcuX3RodW1ibmFpbFZpZXcud2lu
ZG93IDogbV93a1ZpZXcud2luZG93OworICAgIGlmIChbYWN0aXZlVmlld1dpbmRvdyBfaG9zdHNM
YXllcnNJbldpbmRvd1NlcnZlcl0pCiAgICAgICAgIHJldHVybiBMYXllckhvc3RpbmdNb2RlOjpP
dXRPZlByb2Nlc3M7CiAjZW5kaWYKICAgICByZXR1cm4gTGF5ZXJIb3N0aW5nTW9kZTo6SW5Qcm9j
ZXNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDc0
YjM4ZWEuLmUwMTcwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXcubW0KQEAgLTU3LDYgKzU3LDggQEAKICNpbXBvcnQgIldLUHJvY2Vzc0NsYXNzSW50ZXJuYWwu
aCIKICNpbXBvcnQgIldLU3RyaW5nQ0YuaCIKICNpbXBvcnQgIldLVGV4dElucHV0V2luZG93Q29u
dHJvbGxlci5oIgorI2ltcG9ydCAiV0tUaHVtYm5haWxWaWV3LmgiCisjaW1wb3J0ICJXS1RodW1i
bmFpbFZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQg
IldLVmlld1ByaXZhdGUuaCIKICNpbXBvcnQgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgpAQCAtMjI1
LDYgKzIyNyw4IEBAIHN0cnVjdCBXS1ZpZXdJbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzIHsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8Vmlld0dlc3R1cmVDb250cm9sbGVyPiBfZ2VzdHVyZUNvbnRy
b2xsZXI7CiAgICAgQk9PTCBfYWxsb3dzTWFnbmlmaWNhdGlvbjsKICAgICBCT09MIF9hbGxvd3NC
YWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlczsKKworICAgIFdLVGh1bWJuYWlsVmlldyAqX3Ro
dW1ibmFpbFZpZXc7CiB9CiAKIEBlbmQKQEAgLTI3Myw2ICsyNzcsNyBAQCBzdHJ1Y3QgV0tWaWV3
SW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVycyB7CiB7CiAgICAgX2RhdGEtPl9wYWdlLT5jbG9z
ZSgpOwogCisgICAgQVNTRVJUKCFfZGF0YS0+X3RodW1ibmFpbFZpZXcpOwogICAgIEFTU0VSVCgh
X2RhdGEtPl9pblNlY3VyZUlucHV0U3RhdGUpOwogCiAgICAgW19kYXRhIHJlbGVhc2VdOwpAQCAt
MTA3Nyw2ICsxMDgyLDggQEAgc3RhdGljIHZvaWQgc3BlYWtTdHJpbmcoV0tTdHJpbmdSZWYgc3Ry
aW5nLCBXS0Vycm9yUmVmIGVycm9yLCB2b2lkKikKICNkZWZpbmUgTkFUSVZFX01PVVNFX0VWRU5U
X0hBTkRMRVIoU2VsZWN0b3IpIFwKICAgICAtICh2b2lkKVNlbGVjdG9yOihOU0V2ZW50ICopdGhl
RXZlbnQgXAogICAgIHsgXAorICAgICAgICBpZiAoX2RhdGEtPl90aHVtYm5haWxWaWV3KSBcCisg
ICAgICAgICAgICByZXR1cm47IFwKICAgICAgICAgaWYgKFtbc2VsZiBpbnB1dENvbnRleHRdIGhh
bmRsZUV2ZW50OnRoZUV2ZW50XSkgeyBcCiAgICAgICAgICAgICBMT0coVGV4dElucHV0LCAiJXMg
d2FzIGhhbmRsZWQgYnkgdGV4dCBpbnB1dCBjb250ZXh0IiwgU3RyaW5nKCNTZWxlY3Rvcikuc3Vi
c3RyaW5nKDAsIFN0cmluZygjU2VsZWN0b3IpLmZpbmQoIkludGVybmFsIikpLmFzY2lpKCkuZGF0
YSgpKTsgXAogICAgICAgICAgICAgcmV0dXJuOyBcCkBAIC0xMTExLDYgKzExMTgsOSBAQCBOQVRJ
VkVfTU9VU0VfRVZFTlRfSEFORExFUihyaWdodE1vdXNlVXApCiAKIC0gKHZvaWQpc2Nyb2xsV2hl
ZWw6KE5TRXZlbnQgKilldmVudAogeworICAgIGlmIChfZGF0YS0+X3RodW1ibmFpbFZpZXcpCisg
ICAgICAgIHJldHVybjsKKwogICAgIGlmIChfZGF0YS0+X2FsbG93c0JhY2tGb3J3YXJkTmF2aWdh
dGlvbkdlc3R1cmVzKSB7CiAgICAgICAgIFtzZWxmIF9lbnN1cmVHZXN0dXJlQ29udHJvbGxlcl07
CiAgICAgICAgIGlmIChfZGF0YS0+X2dlc3R1cmVDb250cm9sbGVyLT5oYW5kbGVTY3JvbGxXaGVl
bEV2ZW50KGV2ZW50KSkKQEAgLTExMjMsNiArMTEzMyw5IEBAIE5BVElWRV9NT1VTRV9FVkVOVF9I
QU5ETEVSKHJpZ2h0TW91c2VVcCkKIAogLSAodm9pZCltb3VzZU1vdmVkOihOU0V2ZW50ICopZXZl
bnQKIHsKKyAgICBpZiAoX2RhdGEtPl90aHVtYm5haWxWaWV3KQorICAgICAgICByZXR1cm47CisK
ICAgICAvLyBXaGVuIGEgdmlldyBpcyBmaXJzdCByZXNwb25kZXIsIGl0IGdldHMgbW91c2UgbW92
ZWQgZXZlbnRzIGV2ZW4gd2hlbiB0aGUgbW91c2UgaXMgb3V0c2lkZSBpdHMgdmlzaWJsZSByZWN0
LgogICAgIGlmIChzZWxmID09IFtbc2VsZiB3aW5kb3ddIGZpcnN0UmVzcG9uZGVyXSAmJiAhTlNQ
b2ludEluUmVjdChbc2VsZiBjb252ZXJ0UG9pbnQ6W2V2ZW50IGxvY2F0aW9uSW5XaW5kb3ddIGZy
b21WaWV3Om5pbF0sIFtzZWxmIHZpc2libGVSZWN0XSkpCiAgICAgICAgIHJldHVybjsKQEAgLTEx
MzIsNiArMTE0NSw5IEBAIE5BVElWRV9NT1VTRV9FVkVOVF9IQU5ETEVSKHJpZ2h0TW91c2VVcCkK
IAogLSAodm9pZCltb3VzZURvd246KE5TRXZlbnQgKilldmVudAogeworICAgIGlmIChfZGF0YS0+
X3RodW1ibmFpbFZpZXcpCisgICAgICAgIHJldHVybjsKKwogICAgIFtzZWxmIF9zZXRNb3VzZURv
d25FdmVudDpldmVudF07CiAgICAgX2RhdGEtPl9pZ25vcmluZ01vdXNlRHJhZ2dlZEV2ZW50cyA9
IE5POwogICAgIFtzZWxmIG1vdXNlRG93bkludGVybmFsOmV2ZW50XTsKQEAgLTExMzksMTIgKzEx
NTUsMTggQEAgTkFUSVZFX01PVVNFX0VWRU5UX0hBTkRMRVIocmlnaHRNb3VzZVVwKQogCiAtICh2
b2lkKW1vdXNlVXA6KE5TRXZlbnQgKilldmVudAogeworICAgIGlmIChfZGF0YS0+X3RodW1ibmFp
bFZpZXcpCisgICAgICAgIHJldHVybjsKKwogICAgIFtzZWxmIF9zZXRNb3VzZURvd25FdmVudDpu
aWxdOwogICAgIFtzZWxmIG1vdXNlVXBJbnRlcm5hbDpldmVudF07CiB9CiAKIC0gKHZvaWQpbW91
c2VEcmFnZ2VkOihOU0V2ZW50ICopZXZlbnQKIHsKKyAgICBpZiAoX2RhdGEtPl90aHVtYm5haWxW
aWV3KQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoX2RhdGEtPl9pZ25vcmluZ01vdXNlRHJh
Z2dlZEV2ZW50cykKICAgICAgICAgcmV0dXJuOwogICAgIFtzZWxmIG1vdXNlRHJhZ2dlZEludGVy
bmFsOmV2ZW50XTsKQEAgLTI0ODMsNiArMjUwNSwxMyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVTYW5k
Ym94RXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBTYW5k
YgogCiAtICh2b2lkKV9zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllcjooQ0FM
YXllciAqKXJvb3RMYXllcgogeworICAgIFtyb290TGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25z
XTsKKworICAgIGlmIChfZGF0YS0+X3RodW1ibmFpbFZpZXcpIHsKKyAgICAgICAgX2RhdGEtPl90
aHVtYm5haWxWaWV3LnRodW1ibmFpbExheWVyID0gcm9vdExheWVyOworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAgIFtDQVRyYW5zYWN0aW9u
IHNldERpc2FibGVBY3Rpb25zOllFU107CiAKQEAgLTI1MjcsNyArMjU1NiwxMCBAQCBzdGF0aWMg
dm9pZCBjcmVhdGVTYW5kYm94RXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQoTlNQYXN0ZWJvYXJkICpw
YXN0ZWJvYXJkLCBTYW5kYgogICAgIGlmICghaG9zdFZpZXcpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgcmV0dXJuIGhvc3RWaWV3LmxheWVyOworICAgIGlmICghaG9zdFZpZXcubGF5
ZXIuc3VibGF5ZXJzLmNvdW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVy
biBob3N0Vmlldy5sYXllci5zdWJsYXllcnNbMF07CiB9CiAKIC0gKFJldGFpblB0cjxDR0ltYWdl
UmVmPilfdGFrZVZpZXdTbmFwc2hvdApAQCAtMjk0Myw2ICsyOTc1LDI3IEBAIHN0YXRpYyBOU1N0
cmluZyAqcGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZvclBhdGgoTlNTdHJpbmcgKnBhdGgpCiAgICAg
W3R5cGVzIHJlbGVhc2VdOwogfQogCistICh2b2lkKV9zZXRUaHVtYm5haWxWaWV3OihXS1RodW1i
bmFpbFZpZXcgKil0aHVtYm5haWxWaWV3Cit7CisgICAgQVNTRVJUKCFfZGF0YS0+X3RodW1ibmFp
bFZpZXcgfHwgIXRodW1ibmFpbFZpZXcpOworCisgICAgUmV0YWluUHRyPENBTGF5ZXI+IHRodW1i
bmFpbExheWVyID0gX2RhdGEtPl90aHVtYm5haWxWaWV3LnRodW1ibmFpbExheWVyOworCisgICAg
X2RhdGEtPl90aHVtYm5haWxWaWV3ID0gdGh1bWJuYWlsVmlldzsKKworICAgIGlmICh0aHVtYm5h
aWxWaWV3KQorICAgICAgICB0aHVtYm5haWxWaWV3LnRodW1ibmFpbExheWVyID0gW3NlbGYgX2Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlUm9vdExheWVyXTsKKyAgICBlbHNlCisgICAgICAgIFtz
ZWxmIF9zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllcjp0aHVtYm5haWxMYXll
ci5nZXQoKV07CisKKyAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShWaWV3U3Rh
dGU6OldpbmRvd0lzQWN0aXZlIHwgVmlld1N0YXRlOjpJc0luV2luZG93IHwgVmlld1N0YXRlOjpJ
c1Zpc2libGUpOworfQorCistIChXS1RodW1ibmFpbFZpZXcgKilfdGh1bWJuYWlsVmlldworewor
ICAgIHJldHVybiBfZGF0YS0+X3RodW1ibmFpbFZpZXc7Cit9CisKIEBlbmQKIAogQGltcGxlbWVu
dGF0aW9uIFdLVmlldyAoUHJpdmF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCmluZGV4IDc1YWRiNGUuLjgzYjRjNGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaApAQCAt
MjksNiArMjksNyBAQAogI2ltcG9ydCAiV2ViRmluZE9wdGlvbnMuaCIKICNpbXBvcnQgPHd0Zi9G
b3J3YXJkLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CiAKIEBjbGFzcyBXS1dlYlZpZXdDb25maWd1cmF0aW9uOwogCkBAIC01Myw2ICs1NCw3IEBA
IHN0cnVjdCBXZWJQYWdlQ29uZmlndXJhdGlvbjsKIH0KIAogQGNsYXNzIFdLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXI7CitAY2xhc3MgV0tUaHVtYm5haWxWaWV3OwogCiBAaW50ZXJmYWNlIFdL
VmlldyAoKQogI2lmIFdLX0FQSV9FTkFCTEVECkBAIC0xMDMsNiArMTA1LDggQEAgc3RydWN0IFdl
YlBhZ2VDb25maWd1cmF0aW9uOwogLSAodm9pZClfc2V0U3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRl
czooQk9PTClzdXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVzOwogLSAoQk9PTClfc3VwcHJlc3NWaXNp
YmlsaXR5VXBkYXRlczsKIAorQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0VGh1bWJu
YWlsVmlldzopIFdLVGh1bWJuYWlsVmlldyAqX3RodW1ibmFpbFZpZXc7CisKIC8vIEZ1bGxTY3Jl
ZW4KIAogQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBfaGFzRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGIw
ZTBiOTkuLmZlNDdkZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC00NTA2LDQgKzQ1MDYsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVud3JhcENyeXB0
b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIGJvb2wmIHN1Y2MKIH0KICNl
bmRpZgogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGh1bWJuYWlsU2NhbGUoZG91YmxlIHNjYWxl
KQoreworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRodW1ibmFpbFNjYWxlKHNjYWxlKSwgbV9w
YWdlSUQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCAzYjk4ZmQ1Li4wNjFhYTk5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04MjgsNiArODI4LDcgQEAgcHVibGljOgogICAg
IAogICAgIHZvaWQgc2V0TWVkaWFWb2x1bWUoZmxvYXQpOwogICAgIHZvaWQgc2V0TWF5U3RhcnRN
ZWRpYVdoZW5JbldpbmRvdyhib29sKTsKKyAgICBib29sIG1heVN0YXJ0TWVkaWFXaGVuSW5XaW5k
b3coKSBjb25zdCB7IHJldHVybiBtX21heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3c7IH0KIAogICAg
IC8vIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQKICAgICB2aXJ0dWFsIE5hdGl2ZVdlYk1vdXNl
RXZlbnQqIGN1cnJlbnRseVByb2Nlc3NlZE1vdXNlRG93bkV2ZW50KCk7CkBAIC04OTIsNiArODkz
LDggQEAgcHVibGljOgogICAgIHZvaWQgdW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYsIGJvb2wmIHN1Y2NlZWRlZCwgVmVjdG9yPHVpbnQ4X3Q+Jik7CiAjZW5kaWYKIAorICAg
IHZvaWQgc2V0VGh1bWJuYWlsU2NhbGUoZG91YmxlKTsKKwogcHJpdmF0ZToKICAgICBXZWJQYWdl
UHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwgY29u
c3QgV2ViUGFnZUNvbmZpZ3VyYXRpb24mKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJl
Q29udHJvbGxlck1hYy5tbQppbmRleCA2OWY2MzVkLi5hMmU0MjFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5t
bQpAQCAtMzkyLDcgKzM5Miw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpiZWdpblN3
aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJdGVtCiAgICAgICAgICAg
ICBtX2N1cnJlbnRTd2lwZUxpdmVMYXllcnMuYXBwZW5kKGxheWVyKTsKICAgICAgICAgfQogICAg
IH0gZWxzZSB7Ci0gICAgICAgIHN3aXBlQXJlYSA9IHJvb3RDb250ZW50TGF5ZXIuZnJhbWU7Cisg
ICAgICAgIHN3aXBlQXJlYSA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fd2ViUGFnZVByb3h5
LmRyYXdpbmdBcmVhKCktPnNpemUoKSk7CiAgICAgICAgIG1fY3VycmVudFN3aXBlTGl2ZUxheWVy
cy5hcHBlbmQocm9vdENvbnRlbnRMYXllcik7CiAgICAgfQogCkBAIC00NTUsNyArNDU1LDcgQEAg
dm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZVN3aXBlR2VzdHVyZShXZWJCYWNrRm9y
d2FyZExpc3RJdGVtKiB0YXJnZXRJdGUKICAgICBpZiAoIW1fY3VzdG9tU3dpcGVWaWV3cy5pc0Vt
cHR5KCkpCiAgICAgICAgIHdpZHRoID0gbV9jdXJyZW50U3dpcGVDdXN0b21WaWV3Qm91bmRzLndp
ZHRoKCk7CiAgICAgZWxzZQotICAgICAgICB3aWR0aCA9IG1fd2ViUGFnZVByb3h5LmFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdSb290TGF5ZXIoKS5mcmFtZS5zaXplLndpZHRoOworICAgICAgICB3aWR0
aCA9IG1fd2ViUGFnZVByb3h5LmRyYXdpbmdBcmVhKCktPnNpemUoKS53aWR0aCgpOwogCiAgICAg
ZG91YmxlIHN3aXBpbmdMYXllck9mZnNldCA9IGZsb29yKHdpZHRoICogcHJvZ3Jlc3MpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZTg3YzBhZi4uZGY3NzMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDM5LDYgKzQzOSw4IEBACiAJCTJENDI5QkZEMTcy
MUUyQzcwMEVDNjgxRiAvKiBQREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ0MjlCRkIxNzIxRTJCQTAwRUM2ODFG
IC8qIFBERlBsdWdpblBhc3N3b3JkRmllbGQubW0gKi87IH07CiAJCTJENDdCNTZDMTgxMDcxNEUw
MDNBM0FFRSAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENDdCNTZBMTgxMDcxNEUwMDNBM0FFRSAvKiBS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSAqLzsgfTsKIAkJMkQ0N0I1NkQxODEwNzE0RTAwM0Ez
QUVFIC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDQ3QjU2QjE4MTA3MTRFMDAzQTNBRUUgLyogUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmUuaCAqLzsgfTsKKwkJMkQ2QjM3MUIxOEE5NjdBRDAwNDJBRTgwIC8q
IFdLVGh1bWJuYWlsVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkQ2QjM3MTkxOEE5NjdBRDAwNDJBRTgwIC8qIFdLVGh1bWJuYWlsVmlldy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTJENkIzNzFD
MThBOTY3QUQwMDQyQUU4MCAvKiBXS1RodW1ibmFpbFZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDZCMzcxQTE4QTk2N0FEMDA0MkFFODAgLyog
V0tUaHVtYm5haWxWaWV3Lm1tICovOyB9OwogCQkyRDZDRDExOTE4OTA1OEE1MDBFNUE0QTAgLyog
Vmlld1NuYXBzaG90U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJENkNEMTE3MTg5MDU4QTUwMEU1QTRBMCAvKiBWaWV3U25hcHNob3RTdG9yZS5o
ICovOyB9OwogCQkyRDZDRDExQTE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDZDRDEx
ODE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUubW0gKi87IH07CiAJCTJEODE5
QjlFMTg2MjdFRTkwMDFGMDNEMSAvKiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEODE5Qjk5MTg2
Mjc1QjMwMDFGMDNEMSAvKiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcCAqLzsgfTsK
QEAgLTQ4NCw2ICs0ODYsNyBAQAogCQkyREE5NDRCOTE4ODRFQTM5MDBFRDg2REIgLyogV2ViQmFj
a0ZvcndhcmRMaXN0UHJveHlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyREE5NDRCNTE4ODRFQTM1MDBFRDg2REIgLyogV2ViQmFja0ZvcndhcmRM
aXN0UHJveHlJT1MubW0gKi87IH07CiAJCTJEQTk0NEJBMTg4NEVBM0MwMEVEODZEQiAvKiBXZWJQ
YWdlSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkRBOTQ0QjYxODg0RUEzNTAwRUQ4NkRCIC8qIFdlYlBhZ2VJT1MubW0gKi87IH07CiAJCTJEQTk0
NEJEMTg4NTExRTcwMEVEODZEQiAvKiBOZXR3b3JrUHJvY2Vzc0lPUy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NEJDMTg4NTExRTcwMEVEODZE
QiAvKiBOZXR3b3JrUHJvY2Vzc0lPUy5tbSAqLzsgfTsKKwkJMkRBQ0U2NEUxOEFEQkZGMDAwRTRD
QTc2IC8qIFdLVGh1bWJuYWlsVmlld0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREFDRTY0RDE4QURCRkYwMDBFNENBNzYgLyogV0tUaHVt
Ym5haWxWaWV3SW50ZXJuYWwuaCAqLzsgfTsKIAkJMkRERTBBRkExODI5OENDOTAwRjk3RUFBIC8q
IFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTBBRjgxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90
ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oICovOyB9OwogCQkyRERFMEFGQjE4Mjk4Q0M5MDBG
OTdFQUEgLyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTBBRjkxODI5OENDOTAwRjk3RUFB
IC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbSAqLzsgfTsKIAkJMkRGOTU5M0Ix
OEE0MjQxMjAwOTc4NUExIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERjk1OTM0MThBNDI0MTIwMDk3
ODVBMSAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0gKi87IH07CkBAIC0yMTM5LDYgKzIx
NDIsOCBAQAogCQkyRDQyOUJGQjE3MjFFMkJBMDBFQzY4MUYgLyogUERGUGx1Z2luUGFzc3dvcmRG
aWVsZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFBERlBsdWdp
blBhc3N3b3JkRmllbGQubW07IHBhdGggPSBQREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ0N0I1NkExODEwNzE0RTAwM0EzQUVFIC8q
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJENDdCNTZCMTgxMDcxNEUwMDNBM0FFRSAvKiBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDZCMzcxOTE4QTk2
N0FEMDA0MkFFODAgLyogV0tUaHVtYm5haWxWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLVGh1bWJuYWlsVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkyRDZCMzcxQTE4QTk2N0FEMDA0MkFFODAgLyogV0tUaHVtYm5haWxWaWV3Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tUaHVtYm5haWxWaWV3Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDZDRDExNzE4OTA1OEE1MDBFNUE0QTAgLyogVmll
d1NuYXBzaG90U3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlld1Nu
YXBzaG90U3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ2Q0QxMTgxODkw
NThBNTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gVmlld1NuYXBzaG90U3RvcmUubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJENzBBQjEzMThBMUQ1MUEwMDAyNkQ2RSAvKiBJbmZvLWlPUy5wbGlz
dCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
cGxpc3QueG1sOyBwYXRoID0gIkluZm8taU9TLnBsaXN0Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIxODksNiArMjE5NCw3IEBACiAJCTJEQTk0NEI1MTg4NEVBMzUwMEVEODZEQiAv
KiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5SU9TLm1tOyBwYXRoID0gaW9z
L1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyREE5NDRCNjE4ODRFQTM1MDBFRDg2REIgLyogV2ViUGFnZUlPUy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYlBhZ2VJT1MubW07IHBhdGggPSBpb3Mv
V2ViUGFnZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBOTQ0QkMxODg1
MTFFNzAwRUQ4NkRCIC8qIE5ldHdvcmtQcm9jZXNzSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gTmV0d29ya1Byb2Nlc3NJT1MubW07IHBhdGggPSBOZXR3b3Jr
UHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTJEQUNFNjREMThBREJGRjAwMEU0Q0E3NiAvKiBXS1RodW1ibmFpbFZpZXdJbnRlcm5h
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1RodW1ibmFpbFZpZXdJbnRl
cm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRERFMEFGODE4Mjk4Q0M5MDBG
OTdFQUEgLyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRERFMEFGOTE4Mjk4Q0M5MDBGOTdFQUEgLyogUmVt
b3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyREY5NTkzNDE4QTQyNDEyMDA5Nzg1QTEgLyogVmlld0dl
c3R1cmVDb250cm9sbGVySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tOyBwYXRoID0gaW9zL1ZpZXdHZXN0dXJl
Q29udHJvbGxlcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzNjksNiAr
NDM3NSw5IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTFBNDNF
ODI2MTg4RjM4RTIwMDlFNEQzMCAvKiBEZXByZWNhdGVkICovLAorCQkJCTJENkIzNzE5MThBOTY3
QUQwMDQyQUU4MCAvKiBXS1RodW1ibmFpbFZpZXcuaCAqLywKKwkJCQkyREFDRTY0RDE4QURCRkYw
MDBFNENBNzYgLyogV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaCAqLywKKwkJCQkyRDZCMzcxQTE4
QTk2N0FEMDA0MkFFODAgLyogV0tUaHVtYm5haWxWaWV3Lm1tICovLAogCQkJCTFBNEQ2NjRBMThB
MzAzMEUwMEQ4MkUyMSAvKiBXS0ZyYW1lSW5mby5oICovLAogCQkJCTFBNEQ2NjQ5MThBMzAzMEUw
MEQ4MkUyMSAvKiBXS0ZyYW1lSW5mby5tbSAqLywKIAkJCQkxQTRENjY0RDE4QTMwMzFCMDBEODJF
MjEgLyogV0tGcmFtZUluZm9JbnRlcm5hbC5oICovLApAQCAtNjQ0MSw2ICs2NDUwLDcgQEAKIAkJ
CQkxQTJEODJBNTEyN0Y0RUFCMDAxRUI5NjIgLyogTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBMkQ4NDNBMTI3RjY1RDUwMDFFQjk2MiAvKiBOUE9iamVjdE1l
c3NhZ2VSZWNlaXZlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTJEODJBNzEyN0Y0
RUFCMDAxRUI5NjIgLyogTlBPYmplY3RQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkQ2QjM3
MUIxOEE5NjdBRDAwNDJBRTgwIC8qIFdLVGh1bWJuYWlsVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUEyRDgyQTkxMjdGNEVBQjAwMUVCOTYyIC8qIE5QUmVtb3RlT2JqZWN0TWFwLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTIxNjFCMDExRjM3NjY0MDA4QUQwRjUgLyogTlBSdW50aW1lT2JqZWN0
TWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREEwNDlCODE4MENDRDBBMDBBQUZBOUUgLyogR3Jh
cGhpY3NMYXllckNBUmVtb3RlLmggaW4gSGVhZGVycyAqLywKQEAgLTY2MDEsNiArNjYxMSw3IEBA
CiAJCQkJMUEyNDY0RjMxODkxRTQ1MTAwMjM0QzVCIC8qIEFQSUxvYWRlckNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMxREQ3QjIxMTREQzM5NjAwNUFEQUYzIC8qIFdlYkNvcmVBcmd1bWVu
dENvZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyRjU4OUIxMkE4ODM4ODAwNjI5NTMwIC8q
IFdlYkNyZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTJEQUNFNjRFMThBREJGRjAwMEU0
Q0E3NiAvKiBXS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1
NzhCODMxMjA5RUNFRjAwQTM3QzRBIC8qIEFQSURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2
QTI1RkREMTJBREM2Q0MwMERDNDBDQyAvKiBXZWJEYXRhYmFzZU1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUY2MkE3NkI3MTJCMUIyNUYwMDA1RjFCNiAvKiBXZWJEYXRhYmFzZU1hbmFnZXJN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MTQ5LDYgKzgxNjAsNyBAQAogCQkJCTUxMEFG
RkI5MTY1NDIwNDgwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkzRjg4OUQxNDE4ODc3OEM5MDBGRUFEQUYgLyogV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgx
QiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkyRDZCMzcxQzE4QTk2N0FEMDA0MkFFODAgLyogV0tUaHVtYm5haWxWaWV3Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMzc4RTFBM0QxODFFRDZGRjAwMzEwMDdBIC8qIEFQSU9iamVjdC5tbSBp
biBTb3VyY2VzICovLAogCQkJCTUxRkIwOEZGMTYzOURFMUEwMEVDMzI0QSAvKiBXZWJSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1OTQ3QTcxODdCNTE3NjAw
NDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJh
d2luZ0FyZWEuaAppbmRleCA5YmMxZGUxLi43NzE3MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtOTIsNiArOTIsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEV4cG9zZWRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBleHBvc2VkUmVjdCgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VzdG9tRml4ZWRQb3NpdGlvblJlY3Qo
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldFRy
YW5zZm9ybShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIHsgfQogI2VuZGlm
CiAgICAgdmlydHVhbCB2b2lkIG1haW5GcmFtZVNjcm9sbGFiaWxpdHlDaGFuZ2VkKGJvb2wpIHsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggNmUxN2Y5YS4uOGI5ZTQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtMjk2LDYgKzI5Niw4IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWlu
dDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQogICAgICwgbV92aWV3U3RhdGUocGFyYW1ldGVycy52aWV3U3RhdGUpCiAgICAgLCBtX3Byb2Nl
c3NTdXBwcmVzc2lvbkRpc2FibGVkQnlXZWJQcmVmZXJlbmNlKCJQcm9jZXNzIHN1cHByZXNzaW9u
IGlzIGRpc2FibGVkLiIpCiAgICAgLCBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQoMCkKKyAgICAsIG1f
cHJlVGh1bWJuYWlsUGFnZVNjYWxlKDEpCisgICAgLCBtX3RodW1ibmFpbFNjYWxlKDEpCiB7CiAg
ICAgQVNTRVJUKG1fcGFnZUlEKTsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIG5vbi1pZGVhbCBs
b2NhdGlvbiBmb3IgdGhpcyBTZXR0aW5nIGFuZApAQCAtNDE4OCw0ICs0MTkwLDQ0IEBAIFBhc3NS
ZWZQdHI8RG9jdW1lbnRMb2FkZXI+IFdlYlBhZ2U6OmNyZWF0ZURvY3VtZW50TG9hZGVyKEZyYW1l
JiBmcmFtZSwgY29uc3QgUmVzCiAgICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyLnJlbGVhc2UoKTsK
IH0KIAordm9pZCBXZWJQYWdlOjpzZXRUaHVtYm5haWxTY2FsZShkb3VibGUgZGVzdGluYXRpb25T
Y2FsZSkKK3sKKyAgICBpZiAoZGVzdGluYXRpb25TY2FsZSA9PSBtX3RodW1ibmFpbFNjYWxlKQor
ICAgICAgICByZXR1cm47CisKKyAgICAvLyBTY2FsaW5nLCBzYXZlIHRoZSBzY2FsZSBhbmQgc2Ny
b2xsIHBvc2l0aW9uIHRvIGJlIHJlc3RvcmVkIGxhdGVyLgorICAgIGlmIChkZXN0aW5hdGlvblNj
YWxlICE9IDEpIHsKKyAgICAgICAgaWYgKG1fdGh1bWJuYWlsU2NhbGUgPT0gMSkgeworICAgICAg
ICAgICAgbV9wcmVUaHVtYm5haWxQYWdlU2NhbGUgPSBwYWdlU2NhbGVGYWN0b3IoKTsKKyAgICAg
ICAgICAgIG1fcHJlVGh1bWJuYWlsU2Nyb2xsUG9zaXRpb24gPSBtX3BhZ2UtPm1haW5GcmFtZSgp
LnZpZXcoKS0+c2Nyb2xsUG9zaXRpb24oKTsKKyAgICAgICAgfQorCisgICAgICAgIG1fdGh1bWJu
YWlsU2NhbGUgPSBkZXN0aW5hdGlvblNjYWxlOworCisgICAgICAgIC8vIFNjYWxlIHRoZSBwYWdl
LCBidXQgbGVhdmUgdGhlIG9yaWdpbmFsIHBhZ2Ugc2NhbGUgaW50YWN0IGlmIHRoZXJlIHdhcyBh
bnkuCisgICAgICAgIHNjYWxlUGFnZShtX3RodW1ibmFpbFNjYWxlICogbV9wcmVUaHVtYm5haWxQ
YWdlU2NhbGUsIEludFBvaW50KCkpOworCisgICAgICAgIC8vIFNjcm9sbCBhcyBmYXIgYXMgd2Ug
Y2FuIHRvd2FyZHMgdGhlIG9yaWdpbmFsIHNjcm9sbCBwb3NpdGlvbiBpbiB0aGUgc2NhbGVkIHBh
Z2UuCisgICAgICAgIC8vIFRoaXMgbWF5IGdldCBjb25zdHJhaW5lZDsgd2UnbGwgdHJhbnNmb3Jt
IHRoZSBkcmF3aW5nIGFyZWEgdG8gZXhwb3NlIHRoZSByaWdodCBwYXJ0IG9mIHRoZSBwYWdlLgor
ICAgICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+c2V0U2Nyb2xsUG9zaXRpb24oSW50
UG9pbnQobV9wcmVUaHVtYm5haWxTY3JvbGxQb3NpdGlvbi54KCkgKiBtX3RodW1ibmFpbFNjYWxl
LCBtX3ByZVRodW1ibmFpbFNjcm9sbFBvc2l0aW9uLnkoKSAqIG1fdGh1bWJuYWlsU2NhbGUpKTsK
KworICAgICAgICBkb3VibGUgaW52ZXJzZVNjYWxlID0gMSAvIG1fdGh1bWJuYWlsU2NhbGU7Cisg
ICAgICAgIEludFBvaW50IG5ld1Njcm9sbFBvc2l0aW9uID0gbV9wYWdlLT5tYWluRnJhbWUoKS52
aWV3KCktPnNjcm9sbFBvc2l0aW9uKCk7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRy
YW5zZm9ybTsKKyAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgobmV3U2Nyb2xsUG9zaXRpb24u
eCgpICogaW52ZXJzZVNjYWxlKSAtIG1fcHJlVGh1bWJuYWlsU2Nyb2xsUG9zaXRpb24ueCgpLCAo
bmV3U2Nyb2xsUG9zaXRpb24ueSgpICogaW52ZXJzZVNjYWxlKSAtIG1fcHJlVGh1bWJuYWlsU2Ny
b2xsUG9zaXRpb24ueSgpKTsKKyAgICAgICAgdHJhbnNmb3JtLnNjYWxlKGludmVyc2VTY2FsZSk7
CisKKyAgICAgICAgZHJhd2luZ0FyZWEoKS0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBVbnNjYWxpbmcsIHJlc3RvcmUgdGhlIG9yaWdp
bmFsIHNjYWxlIGFuZCBzY3JvbGwgcG9zaXRpb24uCisgICAgaWYgKGRlc3RpbmF0aW9uU2NhbGUg
PT0gMSAmJiBtX3RodW1ibmFpbFNjYWxlICE9IDEpIHsKKyAgICAgICAgc2NhbGVQYWdlKG1fcHJl
VGh1bWJuYWlsUGFnZVNjYWxlLCBJbnRQb2ludCgpKTsKKyAgICAgICAgbV9wYWdlLT5tYWluRnJh
bWUoKS52aWV3KCktPnNldFNjcm9sbFBvc2l0aW9uKG1fcHJlVGh1bWJuYWlsU2Nyb2xsUG9zaXRp
b24pOworICAgICAgICBkcmF3aW5nQXJlYSgpLT5zZXRUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSk7CisgICAgICAgIG1fdGh1bWJuYWlsU2NhbGUgPSAxOworICAgIH0KK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCA0YjU1YmE5Li4wZWRmMzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTM3NSw2ICszNzUsOCBAQCBwdWJsaWM6CiAgICAg
TGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9sYXll
ckhvc3RpbmdNb2RlOyB9CiAgICAgdm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKHVuc2lnbmVkKTsK
IAorICAgIHZvaWQgc2V0VGh1bWJuYWlsU2NhbGUoZG91YmxlKTsKKwogI2lmIFBMQVRGT1JNKE1B
QykKICAgICB2b2lkIHVwZGF0ZVBsdWdpbnNBY3RpdmVBbmRGb2N1c2VkU3RhdGUoKTsKICAgICBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHdpbmRvd0ZyYW1lSW5TY3JlZW5Db29yZGluYXRlcygp
IGNvbnN0IHsgcmV0dXJuIG1fd2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzOyB9CkBAIC0x
MDkzLDYgKzEwOTUsMTAgQEAgcHJpdmF0ZToKICAgICBVc2VyQWN0aXZpdHkgbV9wcm9jZXNzU3Vw
cHJlc3Npb25EaXNhYmxlZEJ5V2ViUHJlZmVyZW5jZTsKIAogICAgIHVpbnQ2NF90IG1fcGVuZGlu
Z05hdmlnYXRpb25JRDsKKworICAgIGRvdWJsZSBtX3ByZVRodW1ibmFpbFBhZ2VTY2FsZTsKKyAg
ICBXZWJDb3JlOjpJbnRQb2ludCBtX3ByZVRodW1ibmFpbFNjcm9sbFBvc2l0aW9uOworICAgIGRv
dWJsZSBtX3RodW1ibmFpbFNjYWxlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCmluZGV4IDk3NjEyZGUuLjEyMDQxZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zMjUsNCArMzI1LDYg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0TWFpbkZyYW1l
SW5WaWV3U291cmNlTW9kZShib29sIGluVmlld1NvdXJjZU1vZGUpCiAgICAgCiAgICAgU2V0U2Ny
b2xsUGlubmluZ0JlaGF2aW9yKHVpbnQzMl90IHBpbm5pbmcpCisKKyAgICBTZXRUaHVtYm5haWxT
Y2FsZShkb3VibGUgc2NhbGUpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhLmgKaW5kZXggZTUwZWI3Ni4uMTA3NjcyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTGF5
ZXJGbHVzaFNjaGVkdWxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTGF5ZXJGbHVzaFNjaGVkdWxl
ckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTExMyw2ICsxMTQsOCBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6
RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJyaWRlOwogICAgIHZvaWQgYXBwbHlUcmFuc2llbnRab29t
VG9QYWdlKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOwogCisgICAg
dmlydHVhbCB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYpIG92ZXJyaWRlOworCiAgICAgdm9pZCB1cGRhdGVMYXllckhvc3RpbmdDb250ZXh0KCk7
CiAKICAgICB2b2lkIHNldFJvb3RDb21wb3NpdGluZ0xheWVyKENBTGF5ZXIgKik7CkBAIC0xMzIs
MTcgKzEzNSwxNyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGlu
Z0NvbnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4dDsKIAorICAgIFJldGFpblB0cjxDQUxheWVy
PiBtX2hvc3RpbmdMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9yb290TGF5ZXI7Ci0g
ICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fcGVuZGluZ1Jvb3RDb21wb3NpdGluZ0xheWVyOwotCiAg
ICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fZGVidWdJbmZvTGF5ZXI7CiAKKyAgICBSZXRhaW5QdHI8
Q0FMYXllcj4gbV9wZW5kaW5nUm9vdExheWVyOworCiAgICAgdHlwZWRlZiBIYXNoTWFwPFBhZ2VP
dmVybGF5Kiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+PiBQYWdlT3Zl
cmxheUxheWVyTWFwOwogICAgIFBhZ2VPdmVybGF5TGF5ZXJNYXAgbV9wYWdlT3ZlcmxheUxheWVy
czsKICAgICBtdXRhYmxlIEhhc2hNYXA8Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIFJl
dGFpblB0cjxDQUxheWVyPj4gbV9wYWdlT3ZlcmxheVBsYXRmb3JtTGF5ZXJzOwogCiAgICAgYm9v
bCBtX2lzUGFpbnRpbmdTdXNwZW5kZWQ7Ci0gICAgYm9vbCBtX2hhc1Jvb3RDb21wb3NpdGluZ0xh
eWVyOwogCiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fZXhwb3NlZFJlY3Q7CiAgICAgV2ViQ29y
ZTo6RmxvYXRSZWN0IG1fc2Nyb2xsZWRFeHBvc2VkUmVjdDsKQEAgLTE1Myw2ICsxNTYsOCBAQCBw
cml2YXRlOgogCiAgICAgZG91YmxlIG1fdHJhbnNpZW50Wm9vbVNjYWxlOwogICAgIFdlYkNvcmU6
OkZsb2F0UG9pbnQgbV90cmFuc2llbnRab29tT3JpZ2luOworCisgICAgV2ViQ29yZTo6VHJhbnNm
b3JtYXRpb25NYXRyaXggbV90cmFuc2Zvcm07CiB9OwogCiBEUkFXSU5HX0FSRUFfVFlQRV9DQVNU
UyhUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSwgdHlwZSgpID09IERyYXdpbmdBcmVhVHlw
ZVRpbGVkQ29yZUFuaW1hdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5tbQppbmRleCBiMzFkZmMwLi45YWQ3ZTFhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC03OCwxMiArNzgsMTAgQEAgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKFdlYlBhZ2UqIHdl
YlBhZ2UsIGMKIHsKICAgICBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCkuc2V0Rm9y
Y2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7CiAKLSAgICBtX3Jvb3RMYXllciA9IFtDQUxheWVyIGxh
eWVyXTsKLQotICAgIENHUmVjdCByb290TGF5ZXJGcmFtZSA9IG1fd2ViUGFnZS0+Ym91bmRzKCk7
Ci0gICAgbV9yb290TGF5ZXIuZ2V0KCkuZnJhbWUgPSByb290TGF5ZXJGcmFtZTsKLSAgICBtX3Jv
b3RMYXllci5nZXQoKS5vcGFxdWUgPSBZRVM7Ci0gICAgbV9yb290TGF5ZXIuZ2V0KCkuZ2VvbWV0
cnlGbGlwcGVkID0gWUVTOworICAgIG1faG9zdGluZ0xheWVyID0gW0NBTGF5ZXIgbGF5ZXJdOwor
ICAgIFttX2hvc3RpbmdMYXllciBzZXRGcmFtZTptX3dlYlBhZ2UtPmJvdW5kcygpXTsKKyAgICBb
bV9ob3N0aW5nTGF5ZXIgc2V0T3BhcXVlOllFU107CisgICAgW21faG9zdGluZ0xheWVyIHNldEdl
b21ldHJ5RmxpcHBlZDpZRVNdOwogCiAgICAgdXBkYXRlTGF5ZXJIb3N0aW5nQ29udGV4dCgpOwog
ICAgIHNldENvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKTsKQEAgLTEyNCwxNCArMTIy
LDE0IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpZENoYW5nZVNjcm9s
bE9mZnNldEZvckFueUZyYW1lKCkKIAogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YTo6c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikK
IHsKLSAgICBDQUxheWVyICpyb290Q29tcG9zaXRpbmdMYXllciA9IGdyYXBoaWNzTGF5ZXIgPyBn
cmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiBuaWw7CisgICAgQ0FMYXllciAqcm9vdExh
eWVyID0gZ3JhcGhpY3NMYXllciA/IGdyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSA6IG5p
bDsKIAogICAgIGlmIChtX2xheWVyVHJlZVN0YXRlSXNGcm96ZW4pIHsKLSAgICAgICAgbV9wZW5k
aW5nUm9vdENvbXBvc2l0aW5nTGF5ZXIgPSByb290Q29tcG9zaXRpbmdMYXllcjsKKyAgICAgICAg
bV9wZW5kaW5nUm9vdExheWVyID0gcm9vdExheWVyOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIocm9vdENvbXBvc2l0aW5nTGF5ZXIpOworICAg
IHNldFJvb3RDb21wb3NpdGluZ0xheWVyKHJvb3RMYXllcik7CiB9CiAKIHZvaWQgVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludCgpCkBAIC0yMjEsNyArMjE5LDcgQEAg
dm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0UGFnZU92ZXJsYXlOZWVkc0Rp
c3BsYXkoUGFnZU92ZXJsYXkqIHBhZ2UKIAogICAgIGlmICghbGF5ZXItPmRyYXdzQ29udGVudCgp
KSB7CiAgICAgICAgIGxheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7Ci0gICAgICAgIGxheWVy
LT5zZXRTaXplKGV4cGFuZGVkSW50U2l6ZShGbG9hdFNpemUobV9yb290TGF5ZXIuZ2V0KCkuZnJh
bWUuc2l6ZSkpKTsKKyAgICAgICAgbGF5ZXItPnNldFNpemUoZXhwYW5kZWRJbnRTaXplKEZsb2F0
U2l6ZShtX2hvc3RpbmdMYXllci5nZXQoKS5mcmFtZS5zaXplKSkpOwogICAgIH0KIAogICAgIGxh
eWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7CkBAIC0zODAsMTIgKzM3OCwxMiBAQCBi
b29sIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpmbHVzaExheWVycygpCiAKICAgICBt
X3dlYlBhZ2UtPmxheW91dElmTmVlZGVkKCk7CiAKLSAgICBpZiAobV9wZW5kaW5nUm9vdENvbXBv
c2l0aW5nTGF5ZXIpIHsKLSAgICAgICAgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIobV9wZW5kaW5n
Um9vdENvbXBvc2l0aW5nTGF5ZXIuZ2V0KCkpOwotICAgICAgICBtX3BlbmRpbmdSb290Q29tcG9z
aXRpbmdMYXllciA9IG51bGxwdHI7CisgICAgaWYgKG1fcGVuZGluZ1Jvb3RMYXllcikgeworICAg
ICAgICBzZXRSb290Q29tcG9zaXRpbmdMYXllcihtX3BlbmRpbmdSb290TGF5ZXIuZ2V0KCkpOwor
ICAgICAgICBtX3BlbmRpbmdSb290TGF5ZXIgPSBudWxscHRyOwogICAgIH0KIAotICAgIEZsb2F0
UmVjdCB2aXNpYmxlUmVjdCA9IFttX3Jvb3RMYXllciBmcmFtZV07CisgICAgRmxvYXRSZWN0IHZp
c2libGVSZWN0ID0gW21faG9zdGluZ0xheWVyIGZyYW1lXTsKICAgICB2aXNpYmxlUmVjdC5pbnRl
cnNlY3QobV9zY3JvbGxlZEV4cG9zZWRSZWN0KTsKIAogICAgIGZvciAoUGFnZU92ZXJsYXlMYXll
ck1hcDo6aXRlcmF0b3IgaXQgPSBtX3BhZ2VPdmVybGF5TGF5ZXJzLmJlZ2luKCksIGVuZCA9IG1f
cGFnZU92ZXJsYXlMYXllcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewpAQCAtNDE0LDggKzQx
Miw4IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnN1c3BlbmRQYWludGlu
ZygpCiAgICAgQVNTRVJUKCFtX2lzUGFpbnRpbmdTdXNwZW5kZWQpOwogICAgIG1faXNQYWludGlu
Z1N1c3BlbmRlZCA9IHRydWU7CiAKLSAgICBbbV9yb290TGF5ZXIgc2V0VmFsdWU6KGlkKWtDRkJv
b2xlYW5UcnVlIGZvcktleTpAIk5TQ0FWaWV3UmVuZGVyUGF1c2VkIl07Ci0gICAgW1tOU05vdGlm
aWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpAIk5TQ0FW
aWV3UmVuZGVyRGlkUGF1c2VOb3RpZmljYXRpb24iIG9iamVjdDpuaWwgdXNlckluZm86W05TRGlj
dGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDptX3Jvb3RMYXllci5nZXQoKSBmb3JLZXk6QCJs
YXllciJdXTsKKyAgICBbbV9ob3N0aW5nTGF5ZXIgc2V0VmFsdWU6QFlFUyBmb3JLZXk6QCJOU0NB
Vmlld1JlbmRlclBhdXNlZCJdOworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENl
bnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6QCJOU0NBVmlld1JlbmRlckRpZFBhdXNlTm90aWZp
Y2F0aW9uIiBvYmplY3Q6bmlsIHVzZXJJbmZvOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhP
YmplY3Q6bV9ob3N0aW5nTGF5ZXIuZ2V0KCkgZm9yS2V5OkAibGF5ZXIiXV07CiB9CiAKIHZvaWQg
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnJlc3VtZVBhaW50aW5nKCkKQEAgLTQyNyw4
ICs0MjUsOCBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpyZXN1bWVQYWlu
dGluZygpCiAgICAgfQogICAgIG1faXNQYWludGluZ1N1c3BlbmRlZCA9IGZhbHNlOwogCi0gICAg
W21fcm9vdExheWVyIHNldFZhbHVlOihpZClrQ0ZCb29sZWFuRmFsc2UgZm9yS2V5OkAiTlNDQVZp
ZXdSZW5kZXJQYXVzZWQiXTsKLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50
ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOkAiTlNDQVZpZXdSZW5kZXJEaWRSZXN1bWVOb3RpZmlj
YXRpb24iIG9iamVjdDpuaWwgdXNlckluZm86W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9i
amVjdDptX3Jvb3RMYXllci5nZXQoKSBmb3JLZXk6QCJsYXllciJdXTsKKyAgICBbbV9ob3N0aW5n
TGF5ZXIgc2V0VmFsdWU6QE5PIGZvcktleTpAIk5TQ0FWaWV3UmVuZGVyUGF1c2VkIl07CisgICAg
W1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFt
ZTpAIk5TQ0FWaWV3UmVuZGVyRGlkUmVzdW1lTm90aWZpY2F0aW9uIiBvYmplY3Q6bmlsIHVzZXJJ
bmZvOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6bV9ob3N0aW5nTGF5ZXIuZ2V0
KCkgZm9yS2V5OkAibGF5ZXIiXV07CiB9CiAKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OnNldEV4cG9zZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZXhwb3NlZFJlY3QpCkBAIC00
OTgsNyArNDk2LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRl
R2VvbWV0cnkoY29uc3QgSW50U2l6ZSYgdmlld1NpemUsIGNvbnMKICAgICBbQ0FUcmFuc2FjdGlv
biBiZWdpbl07CiAgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKIAot
ICAgIG1fcm9vdExheWVyLmdldCgpLmZyYW1lID0gQ0dSZWN0TWFrZShsYXllclBvc2l0aW9uLndp
ZHRoKCksIGxheWVyUG9zaXRpb24uaGVpZ2h0KCksIHZpZXdTaXplLndpZHRoKCksIHZpZXdTaXpl
LmhlaWdodCgpKTsKKyAgICBbbV9ob3N0aW5nTGF5ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZShsYXll
clBvc2l0aW9uLndpZHRoKCksIGxheWVyUG9zaXRpb24uaGVpZ2h0KCksIHZpZXdTaXplLndpZHRo
KCksIHZpZXdTaXplLmhlaWdodCgpKV07CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwog
ICAgIApAQCAtNTU5LDggKzU1Nyw4IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OnVwZGF0ZUxheWVySG9zdGluZ0NvbnRleHQoKQogI2VuZGlmCiAgICAgfQogCi0gICAgaWYg
KG1faGFzUm9vdENvbXBvc2l0aW5nTGF5ZXIpCi0gICAgICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4
dC0+c2V0Um9vdExheWVyKG1fcm9vdExheWVyLmdldCgpKTsKKyAgICBpZiAobV9yb290TGF5ZXIp
CisgICAgICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Um9vdExheWVyKG1faG9zdGluZ0xh
eWVyLmdldCgpKTsKIAogICAgIGlmIChjb2xvclNwYWNlKQogICAgICAgICBtX2xheWVySG9zdGlu
Z0NvbnRleHQtPnNldENvbG9yU3BhY2UoY29sb3JTcGFjZS5nZXQoKSk7CkBAIC01NzAsMTkgKzU2
OCwyMCBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRSb290Q29tcG9z
aXRpbmdMYXllcihDQUxheWVyICpsYXllcikKIHsKICAgICBBU1NFUlQoIW1fbGF5ZXJUcmVlU3Rh
dGVJc0Zyb3plbik7CiAKLSAgICBib29sIGhhZFJvb3RDb21wb3NpdGluZ0xheWVyID0gbV9oYXNS
b290Q29tcG9zaXRpbmdMYXllcjsKLSAgICBtX2hhc1Jvb3RDb21wb3NpdGluZ0xheWVyID0gISFs
YXllcjsKLQogICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKICAgICBbQ0FUcmFuc2FjdGlvbiBz
ZXREaXNhYmxlQWN0aW9uczpZRVNdOwogCi0gICAgbV9yb290TGF5ZXIuZ2V0KCkuc3VibGF5ZXJz
ID0gbV9oYXNSb290Q29tcG9zaXRpbmdMYXllciA/IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDps
YXllcl0gOiBbTlNBcnJheSBhcnJheV07CisgICAgW21faG9zdGluZ0xheWVyIHNldFN1YmxheWVy
czpsYXllciA/IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpsYXllcl0gOiBbTlNBcnJheSBhcnJh
eV1dOworCisgICAgYm9vbCBoYWRSb290TGF5ZXIgPSAhIW1fcm9vdExheWVyOworICAgIG1fcm9v
dExheWVyID0gbGF5ZXI7CisgICAgW21fcm9vdExheWVyIHNldFN1YmxheWVyVHJhbnNmb3JtOm1f
dHJhbnNmb3JtXTsKIAotICAgIGlmIChoYWRSb290Q29tcG9zaXRpbmdMYXllciAhPSBtX2hhc1Jv
b3RDb21wb3NpdGluZ0xheWVyKQotICAgICAgICBtX2xheWVySG9zdGluZ0NvbnRleHQtPnNldFJv
b3RMYXllcihtX2hhc1Jvb3RDb21wb3NpdGluZ0xheWVyID8gbV9yb290TGF5ZXIuZ2V0KCkgOiAw
KTsKKyAgICBpZiAoaGFkUm9vdExheWVyICE9ICEhbGF5ZXIpCisgICAgICAgIG1fbGF5ZXJIb3N0
aW5nQ29udGV4dC0+c2V0Um9vdExheWVyKGxheWVyID8gbV9ob3N0aW5nTGF5ZXIuZ2V0KCkgOiAw
KTsKIAogICAgIGZvciAoUGFnZU92ZXJsYXlMYXllck1hcDo6aXRlcmF0b3IgaXQgPSBtX3BhZ2VP
dmVybGF5TGF5ZXJzLmJlZ2luKCksIGVuZCA9IG1fcGFnZU92ZXJsYXlMYXllcnMuZW5kKCk7IGl0
ICE9IGVuZDsgKytpdCkKLSAgICAgICAgW21fcm9vdExheWVyIGFkZFN1YmxheWVyOml0LT52YWx1
ZS0+cGxhdGZvcm1MYXllcigpXTsKKyAgICAgICAgW21faG9zdGluZ0xheWVyIGFkZFN1YmxheWVy
Oml0LT52YWx1ZS0+cGxhdGZvcm1MYXllcigpXTsKIAogICAgIGlmIChUaWxlZEJhY2tpbmcqIHRp
bGVkQmFja2luZyA9IG1haW5GcmFtZVRpbGVkQmFja2luZygpKQogICAgICAgICB0aWxlZEJhY2tp
bmctPnNldEFnZ3Jlc3NpdmVseVJldGFpbnNUaWxlcyhtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNl
dHRpbmdzKCkuYWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkKCkpOwpAQCAtNjA4LDcgKzYw
Nyw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNyZWF0ZVBhZ2VPdmVy
bGF5TGF5ZXIoUGFnZU92ZXJsYXkqIHBhZ2VPdmVyCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5d
OwogICAgIFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107CiAKLSAgICBbbV9y
b290TGF5ZXIgYWRkU3VibGF5ZXI6bGF5ZXItPnBsYXRmb3JtTGF5ZXIoKV07CisgICAgW21faG9z
dGluZ0xheWVyIGFkZFN1YmxheWVyOmxheWVyLT5wbGF0Zm9ybUxheWVyKCldOwogCiAgICAgW0NB
VHJhbnNhY3Rpb24gY29tbWl0XTsKIApAQCAtNjQzLDcgKzY0Miw3IEBAIHZvaWQgVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpZENvbW1pdENoYW5nZXNGb3JMYXllcihjb25zdCBHcmFw
aGljc0xheWVyCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAgIFtDQVRyYW5zYWN0aW9u
IHNldERpc2FibGVBY3Rpb25zOllFU107CiAKLSAgICBbbV9yb290TGF5ZXIgaW5zZXJ0U3VibGF5
ZXI6bGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSBhYm92ZTpvbGRQbGF0Zm9ybUxheWVyLmdldCgpXTsK
KyAgICBbbV9ob3N0aW5nTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6bGF5ZXItPnBsYXRmb3JtTGF5ZXIo
KSBhYm92ZTpvbGRQbGF0Zm9ybUxheWVyLmdldCgpXTsKICAgICBbb2xkUGxhdGZvcm1MYXllciBy
ZW1vdmVGcm9tU3VwZXJsYXllcl07CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwpAQCAt
NjY5LDcgKzY2OCw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0
ZURlYnVnSW5mb0xheWVyKGJvb2wgc2hvd0xheWVyKQogI2lmbmRlZiBOREVCVUcKICAgICAgICAg
ICAgIFttX2RlYnVnSW5mb0xheWVyIHNldE5hbWU6QCJEZWJ1ZyBJbmZvIl07CiAjZW5kaWYKLSAg
ICAgICAgICAgIFttX3Jvb3RMYXllciBhZGRTdWJsYXllcjptX2RlYnVnSW5mb0xheWVyLmdldCgp
XTsKKyAgICAgICAgICAgIFttX2hvc3RpbmdMYXllciBhZGRTdWJsYXllcjptX2RlYnVnSW5mb0xh
eWVyLmdldCgpXTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobV9kZWJ1Z0luZm9MYXllcikg
ewogICAgICAgICBbbV9kZWJ1Z0luZm9MYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07CkBAIC02
ODgsNyArNjg3LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWRqdXN0
VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQKICAgICAvLyBGSVhNRTogS2Vl
cCBhcm91bmQgcGFnZVNjYWxlPTEgdGlsZXMgc28gd2UgY2FuIHpvb20gb3V0IHdpdGhvdXQgZ2Fw
cy4KICAgICAvLyBGSVhNRTogQnJpbmcgaW4gdW5wYXJlbnRlZC1idXQtcGFpbnRlZCB0aWxlcyB3
aGVuIHpvb21pbmcgb3V0LCB0byBmaWxsIGluIGFueSBnYXBzLgogCi0gICAgaWYgKCFtX3Jvb3RM
YXllcikKKyAgICBpZiAoIW1faG9zdGluZ0xheWVyKQogICAgICAgICByZXR1cm47CiAKICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CkBAIC04MjcsNiArODI2LDEyIEBAIHZvaWQg
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFwcGx5VHJhbnNpZW50Wm9vbVRvUGFnZShk
b3VibGUgc2NhbGUsIEZsb2F0CiAgICAgbV90cmFuc2llbnRab29tU2NhbGUgPSAxOwogfQogCit2
b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRUcmFuc2Zvcm0oY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKK3sKKyAgICBtX3RyYW5zZm9ybSA9IHRyYW5z
Zm9ybTsKKyAgICBbbV9yb290TGF5ZXIgc2V0U3VibGF5ZXJUcmFuc2Zvcm06dHJhbnNmb3JtXTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224400</attachid>
            <date>2014-02-17 11:15:33 -0800</date>
            <delta_ts>2014-02-17 11:37:58 -0800</delta_ts>
            <desc>patch</desc>
            <filename>thumbnail.diff</filename>
            <type>text/plain</type>
            <size>48187</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlZDc0NGUwLi5hNGFlMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE4
IEBACisyMDE0LTAyLTE0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBhIHdheSB0byBlZmZpY2llbnRseSB0aHVtYm5haWwgV0tWaWV3cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4ODMxCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8xNTY2OTY1NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5haWxW
aWV3Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5haWxW
aWV3Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV0tUaHVtYm5haWxWaWV3IGluaXRXaXRoRnJhbWU6
ZnJvbVdLVmlldzpdKToKKyAgICAgICAgKC1bV0tUaHVtYm5haWxWaWV3IF92aWV3V2FzVW5wYXJl
bnRlZF0pOgorICAgICAgICAoLVtXS1RodW1ibmFpbFZpZXcgX3ZpZXdXYXNQYXJlbnRlZF0pOgor
ICAgICAgICAoLVtXS1RodW1ibmFpbFZpZXcgdmlld0RpZE1vdmVUb1dpbmRvd10pOgorICAgICAg
ICAoLVtXS1RodW1ibmFpbFZpZXcgc2V0U2NhbGU6XSk6CisgICAgICAgICgtW1dLVGh1bWJuYWls
VmlldyBzZXRUaHVtYm5haWxMYXllcjpdKToKKyAgICAgICAgKC1bV0tUaHVtYm5haWxWaWV3IHRo
dW1ibmFpbExheWVyXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1RodW1ibmFp
bFZpZXdJbnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgQWRkIFdLVGh1bWJuYWlsVmlldy4KKyAg
ICAgICAgQ2xpZW50cyBvZiB0aGlzIHByaXZhdGUgQVBJIHdpbGwgY2FsbCBpbml0V2l0aEZyYW1l
OmZyb21XS1ZpZXc6LAorICAgICAgICBnaXZpbmcgdGhlIFdLVmlldyB0aGV5IHdpc2ggdG8gYm9y
cm93IGNvbnRlbnRzIGZyb20uCisgICAgICAgIFRoZXkgY2FuIGFsc28gY2FsbCBzZXRTY2FsZTog
dG8gc2V0IHRoZSBzY2FsZSB0aGF0IHdpbGwgYmUgdXNlZCB0byByZW5kZXIKKyAgICAgICAgdGhl
IGNvbnRlbnQgaW4gYW4gaW1wbGVtZW50YXRpb24tZGVmaW5lZCBzZXQgb2YgY2FzZXMgKGN1cnJl
bnRseSwgd2Ugd2lsbAorICAgICAgICB1c2UgdGhlIGxvdyByZXNvbHV0aW9uIHNjYWxlIGZvciBX
S1ZpZXdzIHdoaWNoIHdlcmUgbm90IHBhcmVudGVkIHdoZW4gdGhlCisgICAgICAgIFdLVGh1bWJu
YWlsVmlldyB3YXMgY3JlYXRlZDsgcGFyZW50ZWQgV0tWaWV3cyB3aWxsIHVzZSB0aGUgZXhpc3Rp
bmcgc2NhbGUpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwu
bW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUp
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6aXNWaWV3VmlzaWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdWaXNpYmxlT3JPY2NsdWRlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdJbldpbmRvdyk6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp2aWV3TGF5ZXJIb3N0aW5nTW9kZSk6CisgICAgICAg
IElmIHRoZSBXS1ZpZXcgaGFzIGFuIGFjdGl2ZWx5LXBhcmVudGVkIFdLVGh1bWJuYWlsVmlldyBh
dHRhY2hlZCB0byBpdCwKKyAgICAgICAgd2Ugc2hvdWxkIGRldGVybWluZSB2aWV3IHZpc2liaWxp
dHkvZXRjLiB1c2luZyB0aGF0IHZpZXcgaW5zdGVhZCBvZiB0aGUgV0tWaWV3LgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgZGVhbGxv
Y10pOgorICAgICAgICBXS1RodW1ibmFpbFZpZXcgaG9sZHMgb24gdG8gdGhlIFdLVmlldywgYW5k
IGNsZWFycyBXS1ZpZXcncyBiYWNrcG9pbnRlcgorICAgICAgICB3aGVuIGl0IGxlYXZlcyB0aGUg
d2luZG93LCBzbyB3ZSBzaG91bGQgbmV2ZXIgc2VlIFdLVmlldyBnZXQgZGVhbGxvY2F0ZWQKKyAg
ICAgICAgd2l0aCBhIGxpdmUgdGh1bWJuYWlsIHZpZXcuCisKKyAgICAgICAgKC1bV0tWaWV3IHNj
cm9sbFdoZWVsOl0pOgorICAgICAgICAoLVtXS1ZpZXcgbW91c2VNb3ZlZDpdKToKKyAgICAgICAg
KC1bV0tWaWV3IG1vdXNlRG93bjpdKToKKyAgICAgICAgKC1bV0tWaWV3IG1vdXNlVXA6XSk6Cisg
ICAgICAgICgtW1dLVmlldyBtb3VzZURyYWdnZWQ6XSk6CisgICAgICAgIERvbid0IGhhbmRsZSBl
dmVudHMgd2hpbGUgdGh1bWJuYWlsZWQuCisKKyAgICAgICAgKC1bV0tWaWV3IF9zZXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllcjpdKToKKyAgICAgICAgRm9yd2FyZCByb290IGxh
eWVyIGNoYW5nZXMgdG8gdGhlIGluc3RhbGxlZCB0aHVtYm5haWwgdmlldy4KKworICAgICAgICAo
LVtXS1ZpZXcgX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlUm9vdExheWVyXSk6CisgICAgICAg
IF9hY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllciBzaG91bGQgcmV0dXJuIHRoZSBz
YW1lIGxheWVyCisgICAgICAgIHRoYXQgd2FzIHNldCB2aWEgX3NldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlUm9vdExheWVyOiwgbm90IGl0cyBwYXJlbnQuCisKKyAgICAgICAgKC1bV0tWaWV3
IF9zZXRUaHVtYm5haWxWaWV3Ol0pOgorICAgICAgICAoLVtXS1ZpZXcgX3RodW1ibmFpbFZpZXdd
KToKKyAgICAgICAgSW5zdGFsbC91bmluc3RhbGwgYSBXS1RodW1ibmFpbFZpZXcuIEhhbmQgaXQg
b3VyIHJvb3QgbGF5ZXIgaWYgaW5zdGFsbGluZywKKyAgICAgICAgb3IgcmVjb3ZlciBpdCBmcm9t
IHRoZSBkZXBhcnRpbmcgdGh1bWJuYWlsIHZpZXcgaWYgdW5pbnN0YWxsaW5nLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgQWRkIGluIGEg
bWlzc2luZyBSZXRhaW5QdHIuaCBpbmNsdWRlIHRoYXQgSSBtaXNzZWQgZWFybGllciBhbmQgY2F1
c2VzIHRyb3VibGUuCisgICAgICAgIEFkZCBXS1ZpZXcgX3RodW1ibmFpbFZpZXcgYW5kIF9zZXRU
aHVtYm5haWxWaWV3Oi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFRodW1ibmFpbFNjYWxlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6bWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyk6CisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dl
c3R1cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFuZGxlU3dpcGVHZXN0dXJlKToKKyAgICAgICAgU3dpcGUg
d2FzIGFjY2lkZW50YWxseSBkZXBlbmRpbmcgb24gYSBtaXN0YWtlIGluIFdLVmlldydzCisgICAg
ICAgIF9hY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllciB3aGVyZSBpdCB3YXMgcmV0
dXJuaW5nIHRoZSB3cm9uZyBsYXllci4KKyAgICAgICAgVGhlIGFjdHVhbCByb290IGxheWVyIGRv
ZXNuJ3QgaGF2ZSBhIHNpemUsIHNvIHdlIHNob3VsZCB1c2UgdGhlIGRyYXdpbmcKKyAgICAgICAg
YXJlYSdzIHNpemUgaW5zdGVhZC4KKworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgQWRkIHNvbWUgbmV3IGZpbGVzLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpX
ZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0VGh1bWJuYWlsU2NhbGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgIEFwcGx5IHRoZSB0aHVt
Ym5haWwgc2NhbGUgdG8gdGhlIHBhZ2UuIElmIHdlJ3JlIGN1cnJlbnRseSBub3QgaW4KKyAgICAg
ICAgdGh1bWJuYWlsIHNjYWxpbmcgbW9kZSwgc2F2ZSB0aGUgY3VycmVudCBwYWdlIHNjYWxlIGFu
ZCBzY3JvbGwgcG9zaXRpb24KKyAgICAgICAgc28gd2UgY2FuIHJlc3RvcmUgdGhlbSBvbmNlIHdl
IGxlYXZlIHRodW1ibmFpbCBtb2RlIGFnYWluLgorICAgICAgICBUcmFuc2Zvcm0gdGhlIERyYXdp
bmdBcmVhIHNvIHRoYXQgdGhlIHBhZ2UgYXBwZWFycyBhdCB0aGUgc2FtZQorICAgICAgICBwb3Np
dGlvbiBhbmQgc2l6ZSwgYnV0IHNjYWxlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9EcmF3aW5nQXJlYS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6c2V0VHJhbnNm
b3JtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWE6OnNldFRyYW5zZm9ybSk6CisgICAgICAgIEFkZCBhIERyYXdpbmdB
cmVhIG1ldGhvZCB0byBhcHBseSBhbiBhcmJpdHJhcnkgdHJhbnNmb3JtIHRvIHRoZSBkcmF3aW5n
IGFyZWEuCisKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6
OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKToKKyAgICAg
ICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldFBhZ2VPdmVybGF5
TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE6OnN1c3BlbmRQYWludGluZyk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpyZXN1bWVQYWludGluZyk6CisgICAgICAgIChXZWJLaXQ6
OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVHZW9tZXRyeSk6CisgICAgICAg
IChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVMYXllckhvc3Rp
bmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OmNyZWF0ZVBhZ2VPdmVybGF5TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6ZGlkQ29tbWl0Q2hhbmdlc0ZvckxheWVyKToKKyAgICAgICAg
KFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZURlYnVnSW5mb0xh
eWVyKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFk
anVzdFRyYW5zaWVudFpvb20pOgorICAgICAgICBSZW1vdmUgdGhlIHdvcmQgImNvbXBvc2l0aW5n
IiBpbiBhIGJ1bmNoIG9mIHBsYWNlcyB3aGVyZSBpdCBpc24ndCBuZWVkZWQuCisgICAgICAgIFJl
bmFtZSBtX3Jvb3RMYXllciB0byBtX2hvc3RpbmdMYXllciwgYW5kIHJlcHVycG9zZSBtX3Jvb3RM
YXllciB0byBzdG9yZQorICAgICAgICB0aGUgcm9vdCBjb21wb3NpdGluZyBsYXllciBhY3R1YWxs
eSBwYXNzZWQgaW4gdmlhIHNldFJvb3RDb21wb3NpdGluZ0xheWVyLgorICAgICAgICBSZW5hbWUg
bV9wZW5kaW5nUm9vdENvbXBvc2l0aW5nTGF5ZXIgdG8gbV9wZW5kaW5nUm9vdExheWVyLgorCiAy
MDE0LTAyLTEyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtp
T1NdW1dLMl0gQWx3YXlzIGVuYWJsZSBBVktpdCBpbiBXSzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5haWxWaWV3LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVGh1bWJuYWlsVmlldy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyNDk0MWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVGh1bWJuYWlsVmlldy5oCkBAIC0wLDAgKzEs
NDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQyL1dLRm91bmRhdGlvbi5oPgorCisj
aWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgorCitAY2xhc3Mg
V0tWaWV3OworCitXS19BUElfQ0xBU1MKK0BpbnRlcmZhY2UgV0tUaHVtYm5haWxWaWV3IDogTlNW
aWV3CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgZnJvbVdL
VmlldzooV0tWaWV3ICopd2tWaWV3OworLSAodm9pZClzZXRTY2FsZTooZG91YmxlKXNjYWxlOwor
CitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1RodW1ibmFpbFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVGh1bWJuYWlsVmlldy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi44YTM0MjRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1RodW1ibmFpbFZpZXcubW0KQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLVGh1bWJuYWlsVmlld0ludGVybmFs
LmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJXS0FQSUNhc3QuaCIKKyNpbXBv
cnQgIldLVmlldy5oIgorI2ltcG9ydCAiV0tWaWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYlBh
Z2VQcm94eS5oIgorCisvLyBGSVhNRTogTWFrZSBpdCBwb3NzaWJsZSB0byBsZWF2ZSBhIHNuYXBz
aG90IG9mIHRoZSBjb250ZW50IHByZXNlbnRlZCBpbiB0aGUgV0tWaWV3IHdoaWxlIHRoZSB0aHVt
Ym5haWwgaXMgbGl2ZS4KKy8vIEZJWE1FOiBEb24ndCBtYWtlIG5ldyBzcGVjdWxhdGl2ZSB0aWxl
cyB3aGlsZSB0aHVtYm5haWxlZC4KKy8vIEZJWE1FOiBIaWRlIHNjcm9sbGJhcnMgaW4gdGhlIHRo
dW1ibmFpbC4KKy8vIEZJWE1FOiBXZSBzaG91bGQgcmUtdXNlIGV4aXN0aW5nIHRpbGVzIGZvciB1
bnBhcmVudGVkIHZpZXdzLCBpZiB3ZSBoYXZlIHRoZW0gKHdlIG5lZWQgdG8ga25vdyBpZiB0aGV5
J3ZlIGJlZW4gcHVyZ2VkOyBpZiBzbywgcmVwYWludCBhdCBzY2FsZWQtZG93biBzaXplKS4KKy8v
IEZJWE1FOiBXZSBzaG91bGQgc3dpdGNoIHRvIHRoZSBsb3ctcmVzb2x1dGlvbiBzY2FsZSBpZiBh
IHZpZXcgd2UgaGF2ZSBoaWdoLXJlc29sdXRpb24gdGlsZXMgZm9yIHJlcGFpbnRzLgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0BpbXBsZW1l
bnRhdGlvbiBXS1RodW1ibmFpbFZpZXcKK3sKKyAgICBSZXRhaW5QdHI8V0tWaWV3PiBfd2tWaWV3
OworICAgIFdlYlBhZ2VQcm94eSogX3dlYlBhZ2VQcm94eTsKKyAgICBkb3VibGUgX3RodW1ibmFp
bFNjYWxlOworCisgICAgYm9vbCBfb3JpZ2luYWxNYXlTdGFydE1lZGlhV2hlbkluV2luZG93Owor
ICAgIGJvb2wgX29yaWdpbmFsU291cmNlVmlld0lzSW5XaW5kb3c7CisKKyAgICBib29sIF9zaG91
bGRBcHBseVRodW1ibmFpbFNjYWxlOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFt
ZTooTlNSZWN0KWZyYW1lIGZyb21XS1ZpZXc6KFdLVmlldyAqKXdrVmlldworeworICAgIHNlbGYg
PSBbc3VwZXIgaW5pdFdpdGhGcmFtZTpmcmFtZV07CisgICAgaWYgKHNlbGYpIHsKKyAgICAgICAg
X3drVmlldyA9IHdrVmlldzsKKyAgICAgICAgX3dlYlBhZ2VQcm94eSA9IHRvSW1wbChbX3drVmll
dyBwYWdlUmVmXSk7CisgICAgICAgIF90aHVtYm5haWxTY2FsZSA9IDE7CisKKyAgICAgICAgX29y
aWdpbmFsTWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyA9IF93ZWJQYWdlUHJveHktPm1heVN0YXJ0
TWVkaWFXaGVuSW5XaW5kb3coKTsKKyAgICAgICAgX29yaWdpbmFsU291cmNlVmlld0lzSW5XaW5k
b3cgPSAhIVtfd2tWaWV3IHdpbmRvd107CisKKyAgICAgICAgX3Nob3VsZEFwcGx5VGh1bWJuYWls
U2NhbGUgPSAhX29yaWdpbmFsU291cmNlVmlld0lzSW5XaW5kb3c7CisgICAgfQorICAgIHJldHVy
biBzZWxmOworfQorCistICh2b2lkKV92aWV3V2FzVW5wYXJlbnRlZAoreworICAgIGlmIChfc2hv
dWxkQXBwbHlUaHVtYm5haWxTY2FsZSkKKyAgICAgICAgX3dlYlBhZ2VQcm94eS0+c2V0VGh1bWJu
YWlsU2NhbGUoMSk7CisKKyAgICBbX3drVmlldyBfc2V0VGh1bWJuYWlsVmlldzpuaWxdOworICAg
IF93ZWJQYWdlUHJveHktPnNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3coX29yaWdpbmFsTWF5
U3RhcnRNZWRpYVdoZW5JbldpbmRvdyk7Cit9CisKKy0gKHZvaWQpX3ZpZXdXYXNQYXJlbnRlZAor
eworICAgIGlmIChbX3drVmlldyBfdGh1bWJuYWlsVmlld10pCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChfc2hvdWxkQXBwbHlUaHVtYm5haWxTY2FsZSkKKyAgICAgICAgX3dlYlBhZ2VQcm94
eS0+c2V0VGh1bWJuYWlsU2NhbGUoX3RodW1ibmFpbFNjYWxlKTsKKworICAgIGlmICghX29yaWdp
bmFsU291cmNlVmlld0lzSW5XaW5kb3cpCisgICAgICAgIF93ZWJQYWdlUHJveHktPnNldE1heVN0
YXJ0TWVkaWFXaGVuSW5XaW5kb3coZmFsc2UpOworCisgICAgW193a1ZpZXcgX3NldFRodW1ibmFp
bFZpZXc6c2VsZl07Cit9CisKKy0gKHZvaWQpdmlld0RpZE1vdmVUb1dpbmRvdworeworICAgIGlm
IChzZWxmLndpbmRvdykKKyAgICAgICAgW3NlbGYgX3ZpZXdXYXNQYXJlbnRlZF07CisgICAgZWxz
ZQorICAgICAgICBbc2VsZiBfdmlld1dhc1VucGFyZW50ZWRdOworfQorCistICh2b2lkKXNldFNj
YWxlOihkb3VibGUpc2NhbGUKK3sKKyAgICBfdGh1bWJuYWlsU2NhbGUgPSBzY2FsZTsKKworICAg
IGlmIChzZWxmLndpbmRvdyAmJiBfc2hvdWxkQXBwbHlUaHVtYm5haWxTY2FsZSkKKyAgICAgICAg
X3dlYlBhZ2VQcm94eS0+c2V0VGh1bWJuYWlsU2NhbGUoX3RodW1ibmFpbFNjYWxlKTsKK30KKwor
LSAodm9pZClzZXRUaHVtYm5haWxMYXllcjooQ0FMYXllciAqKWxheWVyCit7CisgICAgc2VsZi5s
YXllci5zdWJsYXllcnMgPSBsYXllciA/IEBbbGF5ZXJdIDogQFtdOworfQorCistIChDQUxheWVy
ICopdGh1bWJuYWlsTGF5ZXIKK3sKKyAgICBpZiAoIXNlbGYubGF5ZXIuc3VibGF5ZXJzLmNvdW50
KQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIFtzZWxmLmxheWVyLnN1YmxheWVy
cyBvYmplY3RBdEluZGV4OjBdOworfQorCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1RodW1ibmFpbFZpZXdJbnRl
cm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzMjgzNDQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVGh1bWJu
YWlsVmlld0ludGVybmFsLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
IldLVGh1bWJuYWlsVmlldy5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworQGludGVyZmFjZSBX
S1RodW1ibmFpbFZpZXcgKCkKKworQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgQ0FMYXll
ciAqdGh1bWJuYWlsTGF5ZXI7CisKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCmluZGV4IDcwZWNkYjQuLjhl
NjQ2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VD
bGllbnRJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VD
bGllbnRJbXBsLm1tCkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0ICJXS0FQSUNhc3QuaCIKICNp
bXBvcnQgIldLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldLU3RyaW5n
Q0YuaCIKKyNpbXBvcnQgIldLVGh1bWJuYWlsVmlldy5oIgogI2ltcG9ydCAiV0tWaWV3SW50ZXJu
YWwuaCIKICNpbXBvcnQgIldlYkNvbG9yUGlja2VyTWFjLmgiCiAjaW1wb3J0ICJXZWJDb250ZXh0
TWVudVByb3h5TWFjLmgiCkBAIC0xNjgsNyArMTY5LDggQEAgSW50U2l6ZSBQYWdlQ2xpZW50SW1w
bDo6dmlld1NpemUoKQogCiBib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUo
KQogewotICAgIHJldHVybiBbW21fd2tWaWV3IHdpbmRvd10gaXNLZXlXaW5kb3ddIHx8IFtOU0Fw
cCBrZXlXaW5kb3ddID09IFttX3drVmlldyB3aW5kb3ddOworICAgIE5TV2luZG93ICphY3RpdmVW
aWV3V2luZG93ID0gbV93a1ZpZXcuX3RodW1ibmFpbFZpZXcgPyBtX3drVmlldy5fdGh1bWJuYWls
Vmlldy53aW5kb3cgOiBtX3drVmlldy53aW5kb3c7CisgICAgcmV0dXJuIGFjdGl2ZVZpZXdXaW5k
b3cuaXNLZXlXaW5kb3cgfHwgW05TQXBwIGtleVdpbmRvd10gPT0gYWN0aXZlVmlld1dpbmRvdzsK
IH0KIAogYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3Rm9jdXNlZCgpCkBAIC0xODMsMjQgKzE4
NSwyNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjptYWtlRmlyc3RSZXNwb25kZXIoKQogICAgIAog
Ym9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3VmlzaWJsZSgpCiB7Ci0gICAgaWYgKCFbbV93a1Zp
ZXcgd2luZG93XSkKKyAgICBOU1ZpZXcgKmFjdGl2ZVZpZXcgPSBtX3drVmlldy5fdGh1bWJuYWls
VmlldyA/IG1fd2tWaWV3Ll90aHVtYm5haWxWaWV3IDogbV93a1ZpZXc7CisgICAgTlNXaW5kb3cg
KmFjdGl2ZVZpZXdXaW5kb3cgPSBhY3RpdmVWaWV3LndpbmRvdzsKKworICAgIGlmICghYWN0aXZl
Vmlld1dpbmRvdykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFbW21fd2tWaWV3
IHdpbmRvd10gaXNWaXNpYmxlXSkKKyAgICBpZiAoIWFjdGl2ZVZpZXdXaW5kb3cuaXNWaXNpYmxl
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEIDw9IDEwODAKICAgICAvLyBNb3VudGFpbiBMaW9uIGFuZCBwcmV2aW91cyBkbyBub3Qg
c3VwcG9ydCBvY2NsdXNpb24gbm90aWZpY2F0aW9ucywgYW5kIGFzIHN1Y2ggd2lsbAogICAgIC8v
IGNvbnRpbnVlIHRvIHJlcG9ydCBhcyAidmlzaWJsZSIgd2hlbiBub3Qgb24gdGhlIGFjdGl2ZSBz
cGFjZS4KLSAgICBpZiAoIVtbbV93a1ZpZXcgd2luZG93XSBpc09uQWN0aXZlU3BhY2VdKQorICAg
IGlmICghYWN0aXZlVmlld1dpbmRvdy5pc09uQWN0aXZlU3BhY2UpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICNlbmRpZgogCi0gICAgaWYgKFttX3drVmlldyBpc0hpZGRlbk9ySGFzSGlkZGVuQW5j
ZXN0b3JdKQorICAgIGlmIChhY3RpdmVWaWV3LmlzSGlkZGVuT3JIYXNIaWRkZW5BbmNlc3RvcikK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDkwCi0gICAgaWYgKFttX3drVmlldyB3aW5kb3dPY2NsdXNpb25EZXRlY3Rpb25F
bmFibGVkXSAmJiAoW1ttX3drVmlldyB3aW5kb3ddIG9jY2x1c2lvblN0YXRlXSAmIE5TV2luZG93
T2NjbHVzaW9uU3RhdGVWaXNpYmxlKSAhPSBOU1dpbmRvd09jY2x1c2lvblN0YXRlVmlzaWJsZSkK
KyAgICBpZiAoW21fd2tWaWV3IHdpbmRvd09jY2x1c2lvbkRldGVjdGlvbkVuYWJsZWRdICYmIChh
Y3RpdmVWaWV3V2luZG93Lm9jY2x1c2lvblN0YXRlICYgTlNXaW5kb3dPY2NsdXNpb25TdGF0ZVZp
c2libGUpICE9IE5TV2luZG93T2NjbHVzaW9uU3RhdGVWaXNpYmxlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAjZW5kaWYKIApAQCAtMjA5LDEyICsyMTQsMTIgQEAgYm9vbCBQYWdlQ2xpZW50SW1w
bDo6aXNWaWV3VmlzaWJsZSgpCiAKIGJvb2wgUGFnZUNsaWVudEltcGw6OmlzVmlld1Zpc2libGVP
ck9jY2x1ZGVkKCkKIHsKLSAgICByZXR1cm4gW1ttX3drVmlldyB3aW5kb3ddIGlzVmlzaWJsZV07
CisgICAgcmV0dXJuIG1fd2tWaWV3Ll90aHVtYm5haWxWaWV3ID8gbV93a1ZpZXcuX3RodW1ibmFp
bFZpZXcud2luZG93LmlzVmlzaWJsZSA6IG1fd2tWaWV3LndpbmRvdy5pc1Zpc2libGU7CiB9CiAK
IGJvb2wgUGFnZUNsaWVudEltcGw6OmlzVmlld0luV2luZG93KCkKIHsKLSAgICByZXR1cm4gW21f
d2tWaWV3IHdpbmRvd107CisgICAgcmV0dXJuIG1fd2tWaWV3Ll90aHVtYm5haWxWaWV3ID8gbV93
a1ZpZXcuX3RodW1ibmFpbFZpZXcud2luZG93IDogbV93a1ZpZXcud2luZG93OwogfQogCiBib29s
IFBhZ2VDbGllbnRJbXBsOjppc1Zpc3VhbGx5SWRsZSgpCkBAIC0yMjUsNyArMjMwLDggQEAgYm9v
bCBQYWdlQ2xpZW50SW1wbDo6aXNWaXN1YWxseUlkbGUoKQogTGF5ZXJIb3N0aW5nTW9kZSBQYWdl
Q2xpZW50SW1wbDo6dmlld0xheWVySG9zdGluZ01vZGUoKQogewogI2lmIEhBVkUoT1VUX09GX1BS
T0NFU1NfTEFZRVJfSE9TVElORykKLSAgICBpZiAoW21fd2tWaWV3IHdpbmRvd10gJiYgW1ttX3dr
VmlldyB3aW5kb3ddIF9ob3N0c0xheWVyc0luV2luZG93U2VydmVyXSkKKyAgICBOU1dpbmRvdyAq
YWN0aXZlVmlld1dpbmRvdyA9IG1fd2tWaWV3Ll90aHVtYm5haWxWaWV3ID8gbV93a1ZpZXcuX3Ro
dW1ibmFpbFZpZXcud2luZG93IDogbV93a1ZpZXcud2luZG93OworICAgIGlmIChbYWN0aXZlVmll
d1dpbmRvdyBfaG9zdHNMYXllcnNJbldpbmRvd1NlcnZlcl0pCiAgICAgICAgIHJldHVybiBMYXll
ckhvc3RpbmdNb2RlOjpPdXRPZlByb2Nlc3M7CiAjZW5kaWYKICAgICByZXR1cm4gTGF5ZXJIb3N0
aW5nTW9kZTo6SW5Qcm9jZXNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tW
aWV3Lm1tCmluZGV4IDc0YjM4ZWEuLmUwMTcwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTU3LDYgKzU3LDggQEAKICNpbXBvcnQgIldLUHJvY2Vz
c0NsYXNzSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLU3RyaW5nQ0YuaCIKICNpbXBvcnQgIldLVGV4
dElucHV0V2luZG93Q29udHJvbGxlci5oIgorI2ltcG9ydCAiV0tUaHVtYm5haWxWaWV3LmgiCisj
aW1wb3J0ICJXS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tWaWV3SW50ZXJu
YWwuaCIKICNpbXBvcnQgIldLVmlld1ByaXZhdGUuaCIKICNpbXBvcnQgIldlYkJhY2tGb3J3YXJk
TGlzdC5oIgpAQCAtMjI1LDYgKzIyNyw4IEBAIHN0cnVjdCBXS1ZpZXdJbnRlcnByZXRLZXlFdmVu
dHNQYXJhbWV0ZXJzIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Vmlld0dlc3R1cmVDb250cm9sbGVy
PiBfZ2VzdHVyZUNvbnRyb2xsZXI7CiAgICAgQk9PTCBfYWxsb3dzTWFnbmlmaWNhdGlvbjsKICAg
ICBCT09MIF9hbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlczsKKworICAgIFdLVGh1
bWJuYWlsVmlldyAqX3RodW1ibmFpbFZpZXc7CiB9CiAKIEBlbmQKQEAgLTI3Myw2ICsyNzcsNyBA
QCBzdHJ1Y3QgV0tWaWV3SW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVycyB7CiB7CiAgICAgX2Rh
dGEtPl9wYWdlLT5jbG9zZSgpOwogCisgICAgQVNTRVJUKCFfZGF0YS0+X3RodW1ibmFpbFZpZXcp
OwogICAgIEFTU0VSVCghX2RhdGEtPl9pblNlY3VyZUlucHV0U3RhdGUpOwogCiAgICAgW19kYXRh
IHJlbGVhc2VdOwpAQCAtMTA3Nyw2ICsxMDgyLDggQEAgc3RhdGljIHZvaWQgc3BlYWtTdHJpbmco
V0tTdHJpbmdSZWYgc3RyaW5nLCBXS0Vycm9yUmVmIGVycm9yLCB2b2lkKikKICNkZWZpbmUgTkFU
SVZFX01PVVNFX0VWRU5UX0hBTkRMRVIoU2VsZWN0b3IpIFwKICAgICAtICh2b2lkKVNlbGVjdG9y
OihOU0V2ZW50ICopdGhlRXZlbnQgXAogICAgIHsgXAorICAgICAgICBpZiAoX2RhdGEtPl90aHVt
Ym5haWxWaWV3KSBcCisgICAgICAgICAgICByZXR1cm47IFwKICAgICAgICAgaWYgKFtbc2VsZiBp
bnB1dENvbnRleHRdIGhhbmRsZUV2ZW50OnRoZUV2ZW50XSkgeyBcCiAgICAgICAgICAgICBMT0co
VGV4dElucHV0LCAiJXMgd2FzIGhhbmRsZWQgYnkgdGV4dCBpbnB1dCBjb250ZXh0IiwgU3RyaW5n
KCNTZWxlY3Rvcikuc3Vic3RyaW5nKDAsIFN0cmluZygjU2VsZWN0b3IpLmZpbmQoIkludGVybmFs
IikpLmFzY2lpKCkuZGF0YSgpKTsgXAogICAgICAgICAgICAgcmV0dXJuOyBcCkBAIC0xMTExLDYg
KzExMTgsOSBAQCBOQVRJVkVfTU9VU0VfRVZFTlRfSEFORExFUihyaWdodE1vdXNlVXApCiAKIC0g
KHZvaWQpc2Nyb2xsV2hlZWw6KE5TRXZlbnQgKilldmVudAogeworICAgIGlmIChfZGF0YS0+X3Ro
dW1ibmFpbFZpZXcpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChfZGF0YS0+X2FsbG93c0Jh
Y2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzKSB7CiAgICAgICAgIFtzZWxmIF9lbnN1cmVHZXN0
dXJlQ29udHJvbGxlcl07CiAgICAgICAgIGlmIChfZGF0YS0+X2dlc3R1cmVDb250cm9sbGVyLT5o
YW5kbGVTY3JvbGxXaGVlbEV2ZW50KGV2ZW50KSkKQEAgLTExMjMsNiArMTEzMyw5IEBAIE5BVElW
RV9NT1VTRV9FVkVOVF9IQU5ETEVSKHJpZ2h0TW91c2VVcCkKIAogLSAodm9pZCltb3VzZU1vdmVk
OihOU0V2ZW50ICopZXZlbnQKIHsKKyAgICBpZiAoX2RhdGEtPl90aHVtYm5haWxWaWV3KQorICAg
ICAgICByZXR1cm47CisKICAgICAvLyBXaGVuIGEgdmlldyBpcyBmaXJzdCByZXNwb25kZXIsIGl0
IGdldHMgbW91c2UgbW92ZWQgZXZlbnRzIGV2ZW4gd2hlbiB0aGUgbW91c2UgaXMgb3V0c2lkZSBp
dHMgdmlzaWJsZSByZWN0LgogICAgIGlmIChzZWxmID09IFtbc2VsZiB3aW5kb3ddIGZpcnN0UmVz
cG9uZGVyXSAmJiAhTlNQb2ludEluUmVjdChbc2VsZiBjb252ZXJ0UG9pbnQ6W2V2ZW50IGxvY2F0
aW9uSW5XaW5kb3ddIGZyb21WaWV3Om5pbF0sIFtzZWxmIHZpc2libGVSZWN0XSkpCiAgICAgICAg
IHJldHVybjsKQEAgLTExMzIsNiArMTE0NSw5IEBAIE5BVElWRV9NT1VTRV9FVkVOVF9IQU5ETEVS
KHJpZ2h0TW91c2VVcCkKIAogLSAodm9pZCltb3VzZURvd246KE5TRXZlbnQgKilldmVudAogewor
ICAgIGlmIChfZGF0YS0+X3RodW1ibmFpbFZpZXcpCisgICAgICAgIHJldHVybjsKKwogICAgIFtz
ZWxmIF9zZXRNb3VzZURvd25FdmVudDpldmVudF07CiAgICAgX2RhdGEtPl9pZ25vcmluZ01vdXNl
RHJhZ2dlZEV2ZW50cyA9IE5POwogICAgIFtzZWxmIG1vdXNlRG93bkludGVybmFsOmV2ZW50XTsK
QEAgLTExMzksMTIgKzExNTUsMTggQEAgTkFUSVZFX01PVVNFX0VWRU5UX0hBTkRMRVIocmlnaHRN
b3VzZVVwKQogCiAtICh2b2lkKW1vdXNlVXA6KE5TRXZlbnQgKilldmVudAogeworICAgIGlmIChf
ZGF0YS0+X3RodW1ibmFpbFZpZXcpCisgICAgICAgIHJldHVybjsKKwogICAgIFtzZWxmIF9zZXRN
b3VzZURvd25FdmVudDpuaWxdOwogICAgIFtzZWxmIG1vdXNlVXBJbnRlcm5hbDpldmVudF07CiB9
CiAKIC0gKHZvaWQpbW91c2VEcmFnZ2VkOihOU0V2ZW50ICopZXZlbnQKIHsKKyAgICBpZiAoX2Rh
dGEtPl90aHVtYm5haWxWaWV3KQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoX2RhdGEtPl9p
Z25vcmluZ01vdXNlRHJhZ2dlZEV2ZW50cykKICAgICAgICAgcmV0dXJuOwogICAgIFtzZWxmIG1v
dXNlRHJhZ2dlZEludGVybmFsOmV2ZW50XTsKQEAgLTI0ODMsNiArMjUwNSwxMyBAQCBzdGF0aWMg
dm9pZCBjcmVhdGVTYW5kYm94RXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQoTlNQYXN0ZWJvYXJkICpw
YXN0ZWJvYXJkLCBTYW5kYgogCiAtICh2b2lkKV9zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9k
ZVJvb3RMYXllcjooQ0FMYXllciAqKXJvb3RMYXllcgogeworICAgIFtyb290TGF5ZXIgd2ViX2Rp
c2FibGVBbGxBY3Rpb25zXTsKKworICAgIGlmIChfZGF0YS0+X3RodW1ibmFpbFZpZXcpIHsKKyAg
ICAgICAgX2RhdGEtPl90aHVtYm5haWxWaWV3LnRodW1ibmFpbExheWVyID0gcm9vdExheWVyOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAg
IFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107CiAKQEAgLTI1MjcsNyArMjU1
NiwxMCBAQCBzdGF0aWMgdm9pZCBjcmVhdGVTYW5kYm94RXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQo
TlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBTYW5kYgogICAgIGlmICghaG9zdFZpZXcpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGhvc3RWaWV3LmxheWVyOworICAgIGlm
ICghaG9zdFZpZXcubGF5ZXIuc3VibGF5ZXJzLmNvdW50KQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIHJldHVybiBob3N0Vmlldy5sYXllci5zdWJsYXllcnNbMF07CiB9CiAKIC0gKFJl
dGFpblB0cjxDR0ltYWdlUmVmPilfdGFrZVZpZXdTbmFwc2hvdApAQCAtMjk0Myw2ICsyOTc1LDI3
IEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZvclBhdGgoTlNTdHJp
bmcgKnBhdGgpCiAgICAgW3R5cGVzIHJlbGVhc2VdOwogfQogCistICh2b2lkKV9zZXRUaHVtYm5h
aWxWaWV3OihXS1RodW1ibmFpbFZpZXcgKil0aHVtYm5haWxWaWV3Cit7CisgICAgQVNTRVJUKCFf
ZGF0YS0+X3RodW1ibmFpbFZpZXcgfHwgIXRodW1ibmFpbFZpZXcpOworCisgICAgUmV0YWluUHRy
PENBTGF5ZXI+IHRodW1ibmFpbExheWVyID0gX2RhdGEtPl90aHVtYm5haWxWaWV3LnRodW1ibmFp
bExheWVyOworCisgICAgX2RhdGEtPl90aHVtYm5haWxWaWV3ID0gdGh1bWJuYWlsVmlldzsKKwor
ICAgIGlmICh0aHVtYm5haWxWaWV3KQorICAgICAgICB0aHVtYm5haWxWaWV3LnRodW1ibmFpbExh
eWVyID0gW3NlbGYgX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlUm9vdExheWVyXTsKKyAgICBl
bHNlCisgICAgICAgIFtzZWxmIF9zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXll
cjp0aHVtYm5haWxMYXllci5nZXQoKV07CisKKyAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURp
ZENoYW5nZShWaWV3U3RhdGU6OldpbmRvd0lzQWN0aXZlIHwgVmlld1N0YXRlOjpJc0luV2luZG93
IHwgVmlld1N0YXRlOjpJc1Zpc2libGUpOworfQorCistIChXS1RodW1ibmFpbFZpZXcgKilfdGh1
bWJuYWlsVmlldworeworICAgIHJldHVybiBfZGF0YS0+X3RodW1ibmFpbFZpZXc7Cit9CisKIEBl
bmQKIAogQGltcGxlbWVudGF0aW9uIFdLVmlldyAoUHJpdmF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCmluZGV4IDc1YWRiNGUuLjgz
YjRjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmll
d0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3
SW50ZXJuYWwuaApAQCAtMjksNiArMjksNyBAQAogI2ltcG9ydCAiV2ViRmluZE9wdGlvbnMuaCIK
ICNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CiAKIEBjbGFzcyBXS1dlYlZpZXdDb25maWd1cmF0aW9uOwogCkBA
IC01Myw2ICs1NCw3IEBAIHN0cnVjdCBXZWJQYWdlQ29uZmlndXJhdGlvbjsKIH0KIAogQGNsYXNz
IFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXI7CitAY2xhc3MgV0tUaHVtYm5haWxWaWV3Owog
CiBAaW50ZXJmYWNlIFdLVmlldyAoKQogI2lmIFdLX0FQSV9FTkFCTEVECkBAIC0xMDMsNiArMTA1
LDggQEAgc3RydWN0IFdlYlBhZ2VDb25maWd1cmF0aW9uOwogLSAodm9pZClfc2V0U3VwcHJlc3NW
aXNpYmlsaXR5VXBkYXRlczooQk9PTClzdXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVzOwogLSAoQk9P
TClfc3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlczsKIAorQHByb3BlcnR5IChub25hdG9taWMsIHNl
dHRlcj1fc2V0VGh1bWJuYWlsVmlldzopIFdLVGh1bWJuYWlsVmlldyAqX3RodW1ibmFpbFZpZXc7
CisKIC8vIEZ1bGxTY3JlZW4KIAogQHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBfaGFzRnVsbFNj
cmVlbldpbmRvd0NvbnRyb2xsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCmluZGV4IGIwZTBiOTkuLmZlNDdkZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCkBAIC00NTA2LDQgKzQ1MDYsMTIgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIGJv
b2wmIHN1Y2MKIH0KICNlbmRpZgogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGh1bWJuYWlsU2Nh
bGUoZG91YmxlIHNjYWxlKQoreworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRodW1ibmFpbFNj
YWxlKHNjYWxlKSwgbV9wYWdlSUQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAzYjk4ZmQ1Li4wNjFhYTk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04MjgsNiArODI4LDcg
QEAgcHVibGljOgogICAgIAogICAgIHZvaWQgc2V0TWVkaWFWb2x1bWUoZmxvYXQpOwogICAgIHZv
aWQgc2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhib29sKTsKKyAgICBib29sIG1heVN0YXJ0
TWVkaWFXaGVuSW5XaW5kb3coKSBjb25zdCB7IHJldHVybiBtX21heVN0YXJ0TWVkaWFXaGVuSW5X
aW5kb3c7IH0KIAogICAgIC8vIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQKICAgICB2aXJ0dWFs
IE5hdGl2ZVdlYk1vdXNlRXZlbnQqIGN1cnJlbnRseVByb2Nlc3NlZE1vdXNlRG93bkV2ZW50KCk7
CkBAIC04OTIsNiArODkzLDggQEAgcHVibGljOgogICAgIHZvaWQgdW53cmFwQ3J5cHRvS2V5KGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYsIGJvb2wmIHN1Y2NlZWRlZCwgVmVjdG9yPHVpbnQ4X3Q+Jik7
CiAjZW5kaWYKIAorICAgIHZvaWQgc2V0VGh1bWJuYWlsU2NhbGUoZG91YmxlKTsKKwogcHJpdmF0
ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2
NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNvbmZpZ3VyYXRpb24mKTsKICAgICB2b2lkIHBsYXRm
b3JtSW5pdGlhbGl6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQppbmRleCA2OWY2MzVkLi5hMmU0MjFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJv
bGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJl
Q29udHJvbGxlck1hYy5tbQpAQCAtMzkyLDcgKzM5Miw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250
cm9sbGVyOjpiZWdpblN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJ
dGVtCiAgICAgICAgICAgICBtX2N1cnJlbnRTd2lwZUxpdmVMYXllcnMuYXBwZW5kKGxheWVyKTsK
ICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIHN3aXBlQXJlYSA9IHJvb3RDb250ZW50
TGF5ZXIuZnJhbWU7CisgICAgICAgIHN3aXBlQXJlYSA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IG1fd2ViUGFnZVByb3h5LmRyYXdpbmdBcmVhKCktPnNpemUoKSk7CiAgICAgICAgIG1fY3VycmVu
dFN3aXBlTGl2ZUxheWVycy5hcHBlbmQocm9vdENvbnRlbnRMYXllcik7CiAgICAgfQogCkBAIC00
NTUsNyArNDU1LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZVN3aXBlR2Vz
dHVyZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJdGUKICAgICBpZiAoIW1fY3VzdG9t
U3dpcGVWaWV3cy5pc0VtcHR5KCkpCiAgICAgICAgIHdpZHRoID0gbV9jdXJyZW50U3dpcGVDdXN0
b21WaWV3Qm91bmRzLndpZHRoKCk7CiAgICAgZWxzZQotICAgICAgICB3aWR0aCA9IG1fd2ViUGFn
ZVByb3h5LmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIoKS5mcmFtZS5zaXplLndpZHRo
OworICAgICAgICB3aWR0aCA9IG1fd2ViUGFnZVByb3h5LmRyYXdpbmdBcmVhKCktPnNpemUoKS53
aWR0aCgpOwogCiAgICAgZG91YmxlIHN3aXBpbmdMYXllck9mZnNldCA9IGZsb29yKHdpZHRoICog
cHJvZ3Jlc3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggZTg3YzBhZi4uZGY3NzMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDM5LDYgKzQzOSw4IEBA
CiAJCTJENDI5QkZEMTcyMUUyQzcwMEVDNjgxRiAvKiBQREZQbHVnaW5QYXNzd29yZEZpZWxkLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ0MjlCRkIx
NzIxRTJCQTAwRUM2ODFGIC8qIFBERlBsdWdpblBhc3N3b3JkRmllbGQubW0gKi87IH07CiAJCTJE
NDdCNTZDMTgxMDcxNEUwMDNBM0FFRSAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENDdCNTZBMTgxMDcx
NEUwMDNBM0FFRSAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSAqLzsgfTsKIAkJMkQ0N0I1
NkQxODEwNzE0RTAwM0EzQUVFIC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDQ3QjU2QjE4MTA3MTRFMDAz
QTNBRUUgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaCAqLzsgfTsKKwkJMkQ2QjM3MUIxOEE5
NjdBRDAwNDJBRTgwIC8qIFdLVGh1bWJuYWlsVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ2QjM3MTkxOEE5NjdBRDAwNDJBRTgwIC8qIFdLVGh1
bWJuYWlsVmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTJENkIzNzFDMThBOTY3QUQwMDQyQUU4MCAvKiBXS1RodW1ibmFpbFZpZXcubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDZCMzcxQTE4QTk2
N0FEMDA0MkFFODAgLyogV0tUaHVtYm5haWxWaWV3Lm1tICovOyB9OwogCQkyRDZDRDExOTE4OTA1
OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENkNEMTE3MTg5MDU4QTUwMEU1QTRBMCAvKiBWaWV3
U25hcHNob3RTdG9yZS5oICovOyB9OwogCQkyRDZDRDExQTE4OTA1OEE1MDBFNUE0QTAgLyogVmll
d1NuYXBzaG90U3RvcmUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRDZDRDExODE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUubW0g
Ki87IH07CiAJCTJEODE5QjlFMTg2MjdFRTkwMDFGMDNEMSAvKiBWaWV3R2VzdHVyZUdlb21ldHJ5
Q29sbGVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJEODE5Qjk5MTg2Mjc1QjMwMDFGMDNEMSAvKiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yLmNwcCAqLzsgfTsKQEAgLTQ4NCw2ICs0ODYsNyBAQAogCQkyREE5NDRCOTE4ODRFQTM5MDBF
RDg2REIgLyogV2ViQmFja0ZvcndhcmRMaXN0UHJveHlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREE5NDRCNTE4ODRFQTM1MDBFRDg2REIgLyog
V2ViQmFja0ZvcndhcmRMaXN0UHJveHlJT1MubW0gKi87IH07CiAJCTJEQTk0NEJBMTg4NEVBM0Mw
MEVEODZEQiAvKiBXZWJQYWdlSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkRBOTQ0QjYxODg0RUEzNTAwRUQ4NkRCIC8qIFdlYlBhZ2VJT1MubW0g
Ki87IH07CiAJCTJEQTk0NEJEMTg4NTExRTcwMEVEODZEQiAvKiBOZXR3b3JrUHJvY2Vzc0lPUy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NEJD
MTg4NTExRTcwMEVEODZEQiAvKiBOZXR3b3JrUHJvY2Vzc0lPUy5tbSAqLzsgfTsKKwkJMkRBQ0U2
NEUxOEFEQkZGMDAwRTRDQTc2IC8qIFdLVGh1bWJuYWlsVmlld0ludGVybmFsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREFDRTY0RDE4QURCRkYwMDBF
NENBNzYgLyogV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaCAqLzsgfTsKIAkJMkRERTBBRkExODI5
OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTBBRjgxODI5OENDOTAw
Rjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oICovOyB9OwogCQkyRERF
MEFGQjE4Mjk4Q0M5MDBGOTdFQUEgLyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTBBRjkx
ODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbSAqLzsg
fTsKIAkJMkRGOTU5M0IxOEE0MjQxMjAwOTc4NUExIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlcklP
Uy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERjk1
OTM0MThBNDI0MTIwMDk3ODVBMSAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0gKi87IH07
CkBAIC0yMTM5LDYgKzIxNDIsOCBAQAogCQkyRDQyOUJGQjE3MjFFMkJBMDBFQzY4MUYgLyogUERG
UGx1Z2luUGFzc3dvcmRGaWVsZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IFBERlBsdWdpblBhc3N3b3JkRmllbGQubW07IHBhdGggPSBQREYvUERGUGx1Z2luUGFz
c3dvcmRGaWVsZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ0N0I1NkExODEw
NzE0RTAwM0EzQUVFIC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENDdCNTZCMTgxMDcxNEUwMDNBM0FFRSAvKiBS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkyRDZCMzcxOTE4QTk2N0FEMDA0MkFFODAgLyogV0tUaHVtYm5haWxWaWV3LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVGh1bWJuYWlsVmlldy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkyRDZCMzcxQTE4QTk2N0FEMDA0MkFFODAgLyogV0tUaHVtYm5haWxW
aWV3Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tUaHVtYm5h
aWxWaWV3Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDZDRDExNzE4OTA1OEE1
MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVmlld1NuYXBzaG90U3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkQ2Q0QxMTgxODkwNThBNTAwRTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmlld1NuYXBzaG90U3RvcmUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENzBBQjEzMThBMUQ1MUEwMDAyNkQ2RSAv
KiBJbmZvLWlPUy5wbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQucGxpc3QueG1sOyBwYXRoID0gIkluZm8taU9TLnBsaXN0Ijsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxODksNiArMjE5NCw3IEBACiAJCTJEQTk0NEI1MTg4
NEVBMzUwMEVEODZEQiAvKiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eUlPUy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5SU9T
Lm1tOyBwYXRoID0gaW9zL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5SU9TLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyREE5NDRCNjE4ODRFQTM1MDBFRDg2REIgLyogV2ViUGFnZUlP
Uy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYlBhZ2VJT1Mu
bW07IHBhdGggPSBpb3MvV2ViUGFnZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkRBOTQ0QkMxODg1MTFFNzAwRUQ4NkRCIC8qIE5ldHdvcmtQcm9jZXNzSU9TLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTmV0d29ya1Byb2Nlc3NJT1MubW07
IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEQUNFNjREMThBREJGRjAwMEU0Q0E3NiAvKiBXS1RodW1i
bmFpbFZpZXdJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Ro
dW1ibmFpbFZpZXdJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRERF
MEFGODE4Mjk4Q0M5MDBGOTdFQUEgLyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxheWVyVHJlZVByb3BlcnR5
QXBwbGllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRERFMEFGOTE4Mjk4Q0M5
MDBGOTdFQUEgLyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBs
aWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREY5NTkzNDE4QTQyNDEyMDA5
Nzg1QTEgLyogVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tOyBwYXRoID0g
aW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTQzNjksNiArNDM3NSw5IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAogCQkJCTFBNDNFODI2MTg4RjM4RTIwMDlFNEQzMCAvKiBEZXByZWNhdGVkICovLAorCQkJ
CTJENkIzNzE5MThBOTY3QUQwMDQyQUU4MCAvKiBXS1RodW1ibmFpbFZpZXcuaCAqLywKKwkJCQky
REFDRTY0RDE4QURCRkYwMDBFNENBNzYgLyogV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaCAqLywK
KwkJCQkyRDZCMzcxQTE4QTk2N0FEMDA0MkFFODAgLyogV0tUaHVtYm5haWxWaWV3Lm1tICovLAog
CQkJCTFBNEQ2NjRBMThBMzAzMEUwMEQ4MkUyMSAvKiBXS0ZyYW1lSW5mby5oICovLAogCQkJCTFB
NEQ2NjQ5MThBMzAzMEUwMEQ4MkUyMSAvKiBXS0ZyYW1lSW5mby5tbSAqLywKIAkJCQkxQTRENjY0
RDE4QTMwMzFCMDBEODJFMjEgLyogV0tGcmFtZUluZm9JbnRlcm5hbC5oICovLApAQCAtNjQ0MSw2
ICs2NDUwLDcgQEAKIAkJCQkxQTJEODJBNTEyN0Y0RUFCMDAxRUI5NjIgLyogTlBPYmplY3RNZXNz
YWdlUmVjZWl2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMkQ4NDNBMTI3RjY1RDUwMDFFQjk2
MiAvKiBOUE9iamVjdE1lc3NhZ2VSZWNlaXZlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTJEODJBNzEyN0Y0RUFCMDAxRUI5NjIgLyogTlBPYmplY3RQcm94eS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMkQ2QjM3MUIxOEE5NjdBRDAwNDJBRTgwIC8qIFdLVGh1bWJuYWlsVmlldy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUEyRDgyQTkxMjdGNEVBQjAwMUVCOTYyIC8qIE5QUmVtb3RlT2Jq
ZWN0TWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTIxNjFCMDExRjM3NjY0MDA4QUQwRjUgLyog
TlBSdW50aW1lT2JqZWN0TWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREEwNDlCODE4MENDRDBB
MDBBQUZBOUUgLyogR3JhcGhpY3NMYXllckNBUmVtb3RlLmggaW4gSGVhZGVycyAqLywKQEAgLTY2
MDEsNiArNjYxMSw3IEBACiAJCQkJMUEyNDY0RjMxODkxRTQ1MTAwMjM0QzVCIC8qIEFQSUxvYWRl
ckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxREQ3QjIxMTREQzM5NjAwNUFEQUYzIC8q
IFdlYkNvcmVBcmd1bWVudENvZGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyRjU4OUIxMkE4
ODM4ODAwNjI5NTMwIC8qIFdlYkNyZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTJEQUNF
NjRFMThBREJGRjAwMEU0Q0E3NiAvKiBXS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTE1NzhCODMxMjA5RUNFRjAwQTM3QzRBIC8qIEFQSURhdGEuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUY2QTI1RkREMTJBREM2Q0MwMERDNDBDQyAvKiBXZWJEYXRhYmFzZU1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2MkE3NkI3MTJCMUIyNUYwMDA1RjFCNiAvKiBXZWJE
YXRhYmFzZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MTQ5LDYgKzgxNjAs
NyBAQAogCQkJCTUxMEFGRkI5MTY1NDIwNDgwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkzRjg4OUQxNDE4ODc3OEM5MDBGRUFEQUYgLyogV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUx
MTY1NDMxODUwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkyRDZCMzcxQzE4QTk2N0FEMDA0MkFFODAgLyogV0tUaHVtYm5h
aWxWaWV3Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc4RTFBM0QxODFFRDZGRjAwMzEwMDdBIC8q
IEFQSU9iamVjdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxRkIwOEZGMTYzOURFMUEwMEVDMzI0
QSAvKiBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1
OTQ3QTcxODdCNTE3NjAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCA5YmMxZGUxLi42OTJkMmNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtMTA1
LDYgKzEwNSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5n
TGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2No
ZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
VHJhbnNmb3JtKGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4JikgeyB9CisKICNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVD
b29yZGluYXRlZExheWVyVHJlZUhvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVz
c2FnZURlY29kZXImKSA9IDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA2ZTE3ZjlhLi44YjllNDhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yOTYsNiArMjk2LDgg
QEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgLCBtX3ZpZXdTdGF0ZShwYXJhbWV0ZXJzLnZp
ZXdTdGF0ZSkKICAgICAsIG1fcHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRCeVdlYlByZWZlcmVu
Y2UoIlByb2Nlc3Mgc3VwcHJlc3Npb24gaXMgZGlzYWJsZWQuIikKICAgICAsIG1fcGVuZGluZ05h
dmlnYXRpb25JRCgwKQorICAgICwgbV9wcmVUaHVtYm5haWxQYWdlU2NhbGUoMSkKKyAgICAsIG1f
dGh1bWJuYWlsU2NhbGUoMSkKIHsKICAgICBBU1NFUlQobV9wYWdlSUQpOwogICAgIC8vIEZJWE1F
OiBUaGlzIGlzIGEgbm9uLWlkZWFsIGxvY2F0aW9uIGZvciB0aGlzIFNldHRpbmcgYW5kCkBAIC00
MTg4LDQgKzQxOTAsNDQgQEAgUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gV2ViUGFnZTo6Y3Jl
YXRlRG9jdW1lbnRMb2FkZXIoRnJhbWUmIGZyYW1lLCBjb25zdCBSZXMKICAgICByZXR1cm4gZG9j
dW1lbnRMb2FkZXIucmVsZWFzZSgpOwogfQogCit2b2lkIFdlYlBhZ2U6OnNldFRodW1ibmFpbFNj
YWxlKGRvdWJsZSBkZXN0aW5hdGlvblNjYWxlKQoreworICAgIGlmIChkZXN0aW5hdGlvblNjYWxl
ID09IG1fdGh1bWJuYWlsU2NhbGUpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFNjYWxpbmcs
IHNhdmUgdGhlIHNjYWxlIGFuZCBzY3JvbGwgcG9zaXRpb24gdG8gYmUgcmVzdG9yZWQgbGF0ZXIu
CisgICAgaWYgKGRlc3RpbmF0aW9uU2NhbGUgIT0gMSkgeworICAgICAgICBpZiAobV90aHVtYm5h
aWxTY2FsZSA9PSAxKSB7CisgICAgICAgICAgICBtX3ByZVRodW1ibmFpbFBhZ2VTY2FsZSA9IHBh
Z2VTY2FsZUZhY3RvcigpOworICAgICAgICAgICAgbV9wcmVUaHVtYm5haWxTY3JvbGxQb3NpdGlv
biA9IG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT5zY3JvbGxQb3NpdGlvbigpOworICAgICAg
ICB9CisKKyAgICAgICAgbV90aHVtYm5haWxTY2FsZSA9IGRlc3RpbmF0aW9uU2NhbGU7CisKKyAg
ICAgICAgLy8gU2NhbGUgdGhlIHBhZ2UsIGJ1dCBsZWF2ZSB0aGUgb3JpZ2luYWwgcGFnZSBzY2Fs
ZSBpbnRhY3QgaWYgdGhlcmUgd2FzIGFueS4KKyAgICAgICAgc2NhbGVQYWdlKG1fdGh1bWJuYWls
U2NhbGUgKiBtX3ByZVRodW1ibmFpbFBhZ2VTY2FsZSwgSW50UG9pbnQoKSk7CisKKyAgICAgICAg
Ly8gU2Nyb2xsIGFzIGZhciBhcyB3ZSBjYW4gdG93YXJkcyB0aGUgb3JpZ2luYWwgc2Nyb2xsIHBv
c2l0aW9uIGluIHRoZSBzY2FsZWQgcGFnZS4KKyAgICAgICAgLy8gVGhpcyBtYXkgZ2V0IGNvbnN0
cmFpbmVkOyB3ZSdsbCB0cmFuc2Zvcm0gdGhlIGRyYXdpbmcgYXJlYSB0byBleHBvc2UgdGhlIHJp
Z2h0IHBhcnQgb2YgdGhlIHBhZ2UuCisgICAgICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygp
LT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludChtX3ByZVRodW1ibmFpbFNjcm9sbFBvc2l0aW9u
LngoKSAqIG1fdGh1bWJuYWlsU2NhbGUsIG1fcHJlVGh1bWJuYWlsU2Nyb2xsUG9zaXRpb24ueSgp
ICogbV90aHVtYm5haWxTY2FsZSkpOworCisgICAgICAgIGRvdWJsZSBpbnZlcnNlU2NhbGUgPSAx
IC8gbV90aHVtYm5haWxTY2FsZTsKKyAgICAgICAgSW50UG9pbnQgbmV3U2Nyb2xsUG9zaXRpb24g
PSBtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+c2Nyb2xsUG9zaXRpb24oKTsKKyAgICAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOworICAgICAgICB0cmFuc2Zvcm0udHJhbnNs
YXRlKChuZXdTY3JvbGxQb3NpdGlvbi54KCkgKiBpbnZlcnNlU2NhbGUpIC0gbV9wcmVUaHVtYm5h
aWxTY3JvbGxQb3NpdGlvbi54KCksIChuZXdTY3JvbGxQb3NpdGlvbi55KCkgKiBpbnZlcnNlU2Nh
bGUpIC0gbV9wcmVUaHVtYm5haWxTY3JvbGxQb3NpdGlvbi55KCkpOworICAgICAgICB0cmFuc2Zv
cm0uc2NhbGUoaW52ZXJzZVNjYWxlKTsKKworICAgICAgICBkcmF3aW5nQXJlYSgpLT5zZXRUcmFu
c2Zvcm0odHJhbnNmb3JtKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFVuc2Nh
bGluZywgcmVzdG9yZSB0aGUgb3JpZ2luYWwgc2NhbGUgYW5kIHNjcm9sbCBwb3NpdGlvbi4KKyAg
ICBpZiAoZGVzdGluYXRpb25TY2FsZSA9PSAxICYmIG1fdGh1bWJuYWlsU2NhbGUgIT0gMSkgewor
ICAgICAgICBzY2FsZVBhZ2UobV9wcmVUaHVtYm5haWxQYWdlU2NhbGUsIEludFBvaW50KCkpOwor
ICAgICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXcoKS0+c2V0U2Nyb2xsUG9zaXRpb24obV9w
cmVUaHVtYm5haWxTY3JvbGxQb3NpdGlvbik7CisgICAgICAgIGRyYXdpbmdBcmVhKCktPnNldFRy
YW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICAgICAgbV90aHVtYm5haWxTY2Fs
ZSA9IDE7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDRiNTViYTkuLjBlZGYzMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMzc1LDYg
KzM3NSw4IEBAIHB1YmxpYzoKICAgICBMYXllckhvc3RpbmdNb2RlIGxheWVySG9zdGluZ01vZGUo
KSBjb25zdCB7IHJldHVybiBtX2xheWVySG9zdGluZ01vZGU7IH0KICAgICB2b2lkIHNldExheWVy
SG9zdGluZ01vZGUodW5zaWduZWQpOwogCisgICAgdm9pZCBzZXRUaHVtYm5haWxTY2FsZShkb3Vi
bGUpOworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgdXBkYXRlUGx1Z2luc0FjdGl2ZUFu
ZEZvY3VzZWRTdGF0ZSgpOwogICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgd2luZG93RnJh
bWVJblNjcmVlbkNvb3JkaW5hdGVzKCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3dGcmFtZUluU2Ny
ZWVuQ29vcmRpbmF0ZXM7IH0KQEAgLTEwOTMsNiArMTA5NSwxMCBAQCBwcml2YXRlOgogICAgIFVz
ZXJBY3Rpdml0eSBtX3Byb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkQnlXZWJQcmVmZXJlbmNlOwog
CiAgICAgdWludDY0X3QgbV9wZW5kaW5nTmF2aWdhdGlvbklEOworCisgICAgZG91YmxlIG1fcHJl
VGh1bWJuYWlsUGFnZVNjYWxlOworICAgIFdlYkNvcmU6OkludFBvaW50IG1fcHJlVGh1bWJuYWls
U2Nyb2xsUG9zaXRpb247CisgICAgZG91YmxlIG1fdGh1bWJuYWlsU2NhbGU7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggOTc2MTJkZS4uMTIwNDFkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KQEAgLTMyNSw0ICszMjUsNiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2Vp
dmVyIHsKICAgICBTZXRNYWluRnJhbWVJblZpZXdTb3VyY2VNb2RlKGJvb2wgaW5WaWV3U291cmNl
TW9kZSkKICAgICAKICAgICBTZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IodWludDMyX3QgcGlubmlu
ZykKKworICAgIFNldFRodW1ibmFpbFNjYWxlKGRvdWJsZSBzY2FsZSkKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAppbmRleCBlNTBlYjc2Li4xMDc2NzI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCkBAIC0zNSw2ICszNSw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9MYXllckZsdXNoU2NoZWR1bGVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9MYXllckZsdXNoU2NoZWR1bGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1l
ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtMTEzLDYg
KzExNCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20o
ZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBhcHBseVRyYW5zaWVudFpvb21Ub1BhZ2UoZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9h
dFBvaW50IG9yaWdpbik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFdl
YkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CisKICAgICB2b2lkIHVwZGF0
ZUxheWVySG9zdGluZ0NvbnRleHQoKTsKIAogICAgIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5
ZXIoQ0FMYXllciAqKTsKQEAgLTEzMiwxNyArMTM1LDE3IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4gbV9sYXllckhvc3RpbmdDb250ZXh0Owog
CisgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1faG9zdGluZ0xheWVyOwogICAgIFJldGFpblB0cjxD
QUxheWVyPiBtX3Jvb3RMYXllcjsKLSAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9wZW5kaW5nUm9v
dENvbXBvc2l0aW5nTGF5ZXI7Ci0KICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9kZWJ1Z0luZm9M
YXllcjsKIAorICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3BlbmRpbmdSb290TGF5ZXI7CisKICAg
ICB0eXBlZGVmIEhhc2hNYXA8UGFnZU92ZXJsYXkqLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
R3JhcGhpY3NMYXllcj4+IFBhZ2VPdmVybGF5TGF5ZXJNYXA7CiAgICAgUGFnZU92ZXJsYXlMYXll
ck1hcCBtX3BhZ2VPdmVybGF5TGF5ZXJzOwogICAgIG11dGFibGUgSGFzaE1hcDxjb25zdCBXZWJD
b3JlOjpHcmFwaGljc0xheWVyKiwgUmV0YWluUHRyPENBTGF5ZXI+PiBtX3BhZ2VPdmVybGF5UGxh
dGZvcm1MYXllcnM7CiAKICAgICBib29sIG1faXNQYWludGluZ1N1c3BlbmRlZDsKLSAgICBib29s
IG1faGFzUm9vdENvbXBvc2l0aW5nTGF5ZXI7CiAKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV9l
eHBvc2VkUmVjdDsKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgbV9zY3JvbGxlZEV4cG9zZWRSZWN0
OwpAQCAtMTUzLDYgKzE1Niw4IEBAIHByaXZhdGU6CiAKICAgICBkb3VibGUgbV90cmFuc2llbnRa
b29tU2NhbGU7CiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX3RyYW5zaWVudFpvb21PcmlnaW47
CisKKyAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3RyYW5zZm9ybTsKIH07CiAK
IERSQVdJTkdfQVJFQV9UWVBFX0NBU1RTKFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLCB0
eXBlKCkgPT0gRHJhd2luZ0FyZWFUeXBlVGlsZWRDb3JlQW5pbWF0aW9uKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IGIzMWRmYzAuLjlhZDdlMWFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTc4LDEyICs3
OCwxMCBAQCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEoV2ViUGFnZSogd2ViUGFnZSwgYwogewogICAgIG1fd2ViUGFnZS0+Y29yZVBh
Z2UoKS0+c2V0dGluZ3MoKS5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKIAotICAgIG1f
cm9vdExheWVyID0gW0NBTGF5ZXIgbGF5ZXJdOwotCi0gICAgQ0dSZWN0IHJvb3RMYXllckZyYW1l
ID0gbV93ZWJQYWdlLT5ib3VuZHMoKTsKLSAgICBtX3Jvb3RMYXllci5nZXQoKS5mcmFtZSA9IHJv
b3RMYXllckZyYW1lOwotICAgIG1fcm9vdExheWVyLmdldCgpLm9wYXF1ZSA9IFlFUzsKLSAgICBt
X3Jvb3RMYXllci5nZXQoKS5nZW9tZXRyeUZsaXBwZWQgPSBZRVM7CisgICAgbV9ob3N0aW5nTGF5
ZXIgPSBbQ0FMYXllciBsYXllcl07CisgICAgW21faG9zdGluZ0xheWVyIHNldEZyYW1lOm1fd2Vi
UGFnZS0+Ym91bmRzKCldOworICAgIFttX2hvc3RpbmdMYXllciBzZXRPcGFxdWU6WUVTXTsKKyAg
ICBbbV9ob3N0aW5nTGF5ZXIgc2V0R2VvbWV0cnlGbGlwcGVkOllFU107CiAKICAgICB1cGRhdGVM
YXllckhvc3RpbmdDb250ZXh0KCk7CiAgICAgc2V0Q29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9y
U3BhY2UpOwpAQCAtMTI0LDE0ICsxMjIsMTQgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYTo6ZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0Rm9yQW55RnJhbWUoKQogCiB2b2lkIFRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRSb290Q29tcG9zaXRpbmdMYXllcihHcmFwaGlj
c0xheWVyKiBncmFwaGljc0xheWVyKQogewotICAgIENBTGF5ZXIgKnJvb3RDb21wb3NpdGluZ0xh
eWVyID0gZ3JhcGhpY3NMYXllciA/IGdyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSA6IG5p
bDsKKyAgICBDQUxheWVyICpyb290TGF5ZXIgPSBncmFwaGljc0xheWVyID8gZ3JhcGhpY3NMYXll
ci0+cGxhdGZvcm1MYXllcigpIDogbmlsOwogCiAgICAgaWYgKG1fbGF5ZXJUcmVlU3RhdGVJc0Zy
b3plbikgewotICAgICAgICBtX3BlbmRpbmdSb290Q29tcG9zaXRpbmdMYXllciA9IHJvb3RDb21w
b3NpdGluZ0xheWVyOworICAgICAgICBtX3BlbmRpbmdSb290TGF5ZXIgPSByb290TGF5ZXI7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzZXRSb290Q29tcG9zaXRpbmdMYXllcihyb290
Q29tcG9zaXRpbmdMYXllcik7CisgICAgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIocm9vdExheWVy
KTsKIH0KIAogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Zm9yY2VSZXBhaW50
KCkKQEAgLTIyMSw3ICsyMTksNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
OjpzZXRQYWdlT3ZlcmxheU5lZWRzRGlzcGxheShQYWdlT3ZlcmxheSogcGFnZQogCiAgICAgaWYg
KCFsYXllci0+ZHJhd3NDb250ZW50KCkpIHsKICAgICAgICAgbGF5ZXItPnNldERyYXdzQ29udGVu
dCh0cnVlKTsKLSAgICAgICAgbGF5ZXItPnNldFNpemUoZXhwYW5kZWRJbnRTaXplKEZsb2F0U2l6
ZShtX3Jvb3RMYXllci5nZXQoKS5mcmFtZS5zaXplKSkpOworICAgICAgICBsYXllci0+c2V0U2l6
ZShleHBhbmRlZEludFNpemUoRmxvYXRTaXplKG1faG9zdGluZ0xheWVyLmdldCgpLmZyYW1lLnNp
emUpKSk7CiAgICAgfQogCiAgICAgbGF5ZXItPnNldE5lZWRzRGlzcGxheUluUmVjdChyZWN0KTsK
QEAgLTM4MCwxMiArMzc4LDEyIEBAIGJvb2wgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6
OmZsdXNoTGF5ZXJzKCkKIAogICAgIG1fd2ViUGFnZS0+bGF5b3V0SWZOZWVkZWQoKTsKIAotICAg
IGlmIChtX3BlbmRpbmdSb290Q29tcG9zaXRpbmdMYXllcikgewotICAgICAgICBzZXRSb290Q29t
cG9zaXRpbmdMYXllcihtX3BlbmRpbmdSb290Q29tcG9zaXRpbmdMYXllci5nZXQoKSk7Ci0gICAg
ICAgIG1fcGVuZGluZ1Jvb3RDb21wb3NpdGluZ0xheWVyID0gbnVsbHB0cjsKKyAgICBpZiAobV9w
ZW5kaW5nUm9vdExheWVyKSB7CisgICAgICAgIHNldFJvb3RDb21wb3NpdGluZ0xheWVyKG1fcGVu
ZGluZ1Jvb3RMYXllci5nZXQoKSk7CisgICAgICAgIG1fcGVuZGluZ1Jvb3RMYXllciA9IG51bGxw
dHI7CiAgICAgfQogCi0gICAgRmxvYXRSZWN0IHZpc2libGVSZWN0ID0gW21fcm9vdExheWVyIGZy
YW1lXTsKKyAgICBGbG9hdFJlY3QgdmlzaWJsZVJlY3QgPSBbbV9ob3N0aW5nTGF5ZXIgZnJhbWVd
OwogICAgIHZpc2libGVSZWN0LmludGVyc2VjdChtX3Njcm9sbGVkRXhwb3NlZFJlY3QpOwogCiAg
ICAgZm9yIChQYWdlT3ZlcmxheUxheWVyTWFwOjppdGVyYXRvciBpdCA9IG1fcGFnZU92ZXJsYXlM
YXllcnMuYmVnaW4oKSwgZW5kID0gbV9wYWdlT3ZlcmxheUxheWVycy5lbmQoKTsgaXQgIT0gZW5k
OyArK2l0KSB7CkBAIC00MTQsOCArNDEyLDggQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYTo6c3VzcGVuZFBhaW50aW5nKCkKICAgICBBU1NFUlQoIW1faXNQYWludGluZ1N1c3Bl
bmRlZCk7CiAgICAgbV9pc1BhaW50aW5nU3VzcGVuZGVkID0gdHJ1ZTsKIAotICAgIFttX3Jvb3RM
YXllciBzZXRWYWx1ZTooaWQpa0NGQm9vbGVhblRydWUgZm9yS2V5OkAiTlNDQVZpZXdSZW5kZXJQ
YXVzZWQiXTsKLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3RO
b3RpZmljYXRpb25OYW1lOkAiTlNDQVZpZXdSZW5kZXJEaWRQYXVzZU5vdGlmaWNhdGlvbiIgb2Jq
ZWN0Om5pbCB1c2VySW5mbzpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0Om1fcm9v
dExheWVyLmdldCgpIGZvcktleTpAImxheWVyIl1dOworICAgIFttX2hvc3RpbmdMYXllciBzZXRW
YWx1ZTpAWUVTIGZvcktleTpAIk5TQ0FWaWV3UmVuZGVyUGF1c2VkIl07CisgICAgW1tOU05vdGlm
aWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpAIk5TQ0FW
aWV3UmVuZGVyRGlkUGF1c2VOb3RpZmljYXRpb24iIG9iamVjdDpuaWwgdXNlckluZm86W05TRGlj
dGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDptX2hvc3RpbmdMYXllci5nZXQoKSBmb3JLZXk6
QCJsYXllciJdXTsKIH0KIAogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6cmVz
dW1lUGFpbnRpbmcoKQpAQCAtNDI3LDggKzQyNSw4IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE6OnJlc3VtZVBhaW50aW5nKCkKICAgICB9CiAgICAgbV9pc1BhaW50aW5nU3Vz
cGVuZGVkID0gZmFsc2U7CiAKLSAgICBbbV9yb290TGF5ZXIgc2V0VmFsdWU6KGlkKWtDRkJvb2xl
YW5GYWxzZSBmb3JLZXk6QCJOU0NBVmlld1JlbmRlclBhdXNlZCJdOwotICAgIFtbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6QCJOU0NBVmll
d1JlbmRlckRpZFJlc3VtZU5vdGlmaWNhdGlvbiIgb2JqZWN0Om5pbCB1c2VySW5mbzpbTlNEaWN0
aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0Om1fcm9vdExheWVyLmdldCgpIGZvcktleTpAImxh
eWVyIl1dOworICAgIFttX2hvc3RpbmdMYXllciBzZXRWYWx1ZTpATk8gZm9yS2V5OkAiTlNDQVZp
ZXdSZW5kZXJQYXVzZWQiXTsKKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50
ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOkAiTlNDQVZpZXdSZW5kZXJEaWRSZXN1bWVOb3RpZmlj
YXRpb24iIG9iamVjdDpuaWwgdXNlckluZm86W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9i
amVjdDptX2hvc3RpbmdMYXllci5nZXQoKSBmb3JLZXk6QCJsYXllciJdXTsKIH0KIAogdm9pZCBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0RXhwb3NlZFJlY3QoY29uc3QgRmxvYXRS
ZWN0JiBleHBvc2VkUmVjdCkKQEAgLTQ5OCw3ICs0OTYsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVHZW9tZXRyeShjb25zdCBJbnRTaXplJiB2aWV3U2l6ZSwg
Y29ucwogICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKICAgICBbQ0FUcmFuc2FjdGlvbiBzZXRE
aXNhYmxlQWN0aW9uczpZRVNdOwogCi0gICAgbV9yb290TGF5ZXIuZ2V0KCkuZnJhbWUgPSBDR1Jl
Y3RNYWtlKGxheWVyUG9zaXRpb24ud2lkdGgoKSwgbGF5ZXJQb3NpdGlvbi5oZWlnaHQoKSwgdmll
d1NpemUud2lkdGgoKSwgdmlld1NpemUuaGVpZ2h0KCkpOworICAgIFttX2hvc3RpbmdMYXllciBz
ZXRGcmFtZTpDR1JlY3RNYWtlKGxheWVyUG9zaXRpb24ud2lkdGgoKSwgbGF5ZXJQb3NpdGlvbi5o
ZWlnaHQoKSwgdmlld1NpemUud2lkdGgoKSwgdmlld1NpemUuaGVpZ2h0KCkpXTsKIAogICAgIFtD
QVRyYW5zYWN0aW9uIGNvbW1pdF07CiAgICAgCkBAIC01NTksOCArNTU3LDggQEAgdm9pZCBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRlTGF5ZXJIb3N0aW5nQ29udGV4dCgpCiAj
ZW5kaWYKICAgICB9CiAKLSAgICBpZiAobV9oYXNSb290Q29tcG9zaXRpbmdMYXllcikKLSAgICAg
ICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5zZXRSb290TGF5ZXIobV9yb290TGF5ZXIuZ2V0KCkp
OworICAgIGlmIChtX3Jvb3RMYXllcikKKyAgICAgICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5z
ZXRSb290TGF5ZXIobV9ob3N0aW5nTGF5ZXIuZ2V0KCkpOwogCiAgICAgaWYgKGNvbG9yU3BhY2Up
CiAgICAgICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Q29sb3JTcGFjZShjb2xvclNwYWNl
LmdldCgpKTsKQEAgLTU3MCwxOSArNTY4LDIwIEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWE6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKENBTGF5ZXIgKmxheWVyKQogewogICAg
IEFTU0VSVCghbV9sYXllclRyZWVTdGF0ZUlzRnJvemVuKTsKIAotICAgIGJvb2wgaGFkUm9vdENv
bXBvc2l0aW5nTGF5ZXIgPSBtX2hhc1Jvb3RDb21wb3NpdGluZ0xheWVyOwotICAgIG1faGFzUm9v
dENvbXBvc2l0aW5nTGF5ZXIgPSAhIWxheWVyOwotCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5d
OwogICAgIFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107CiAKLSAgICBtX3Jv
b3RMYXllci5nZXQoKS5zdWJsYXllcnMgPSBtX2hhc1Jvb3RDb21wb3NpdGluZ0xheWVyID8gW05T
QXJyYXkgYXJyYXlXaXRoT2JqZWN0OmxheWVyXSA6IFtOU0FycmF5IGFycmF5XTsKKyAgICBbbV9o
b3N0aW5nTGF5ZXIgc2V0U3VibGF5ZXJzOmxheWVyID8gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0
OmxheWVyXSA6IFtOU0FycmF5IGFycmF5XV07CisKKyAgICBib29sIGhhZFJvb3RMYXllciA9ICEh
bV9yb290TGF5ZXI7CisgICAgbV9yb290TGF5ZXIgPSBsYXllcjsKKyAgICBbbV9yb290TGF5ZXIg
c2V0U3VibGF5ZXJUcmFuc2Zvcm06bV90cmFuc2Zvcm1dOwogCi0gICAgaWYgKGhhZFJvb3RDb21w
b3NpdGluZ0xheWVyICE9IG1faGFzUm9vdENvbXBvc2l0aW5nTGF5ZXIpCi0gICAgICAgIG1fbGF5
ZXJIb3N0aW5nQ29udGV4dC0+c2V0Um9vdExheWVyKG1faGFzUm9vdENvbXBvc2l0aW5nTGF5ZXIg
PyBtX3Jvb3RMYXllci5nZXQoKSA6IDApOworICAgIGlmIChoYWRSb290TGF5ZXIgIT0gISFsYXll
cikKKyAgICAgICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5zZXRSb290TGF5ZXIobGF5ZXIgPyBt
X2hvc3RpbmdMYXllci5nZXQoKSA6IDApOwogCiAgICAgZm9yIChQYWdlT3ZlcmxheUxheWVyTWFw
OjppdGVyYXRvciBpdCA9IG1fcGFnZU92ZXJsYXlMYXllcnMuYmVnaW4oKSwgZW5kID0gbV9wYWdl
T3ZlcmxheUxheWVycy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBbbV9yb290TGF5
ZXIgYWRkU3VibGF5ZXI6aXQtPnZhbHVlLT5wbGF0Zm9ybUxheWVyKCldOworICAgICAgICBbbV9o
b3N0aW5nTGF5ZXIgYWRkU3VibGF5ZXI6aXQtPnZhbHVlLT5wbGF0Zm9ybUxheWVyKCldOwogCiAg
ICAgaWYgKFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5nID0gbWFpbkZyYW1lVGlsZWRCYWNraW5n
KCkpCiAgICAgICAgIHRpbGVkQmFja2luZy0+c2V0QWdncmVzc2l2ZWx5UmV0YWluc1RpbGVzKG1f
d2ViUGFnZS0+Y29yZVBhZ2UoKS0+c2V0dGluZ3MoKS5hZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVu
YWJsZWQoKSk7CkBAIC02MDgsNyArNjA3LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYTo6Y3JlYXRlUGFnZU92ZXJsYXlMYXllcihQYWdlT3ZlcmxheSogcGFnZU92ZXIKICAg
ICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFj
dGlvbnM6WUVTXTsKIAotICAgIFttX3Jvb3RMYXllciBhZGRTdWJsYXllcjpsYXllci0+cGxhdGZv
cm1MYXllcigpXTsKKyAgICBbbV9ob3N0aW5nTGF5ZXIgYWRkU3VibGF5ZXI6bGF5ZXItPnBsYXRm
b3JtTGF5ZXIoKV07CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogCkBAIC02NDMsNyAr
NjQyLDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6ZGlkQ29tbWl0Q2hh
bmdlc0ZvckxheWVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdp
bl07CiAgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKIAotICAgIFtt
X3Jvb3RMYXllciBpbnNlcnRTdWJsYXllcjpsYXllci0+cGxhdGZvcm1MYXllcigpIGFib3ZlOm9s
ZFBsYXRmb3JtTGF5ZXIuZ2V0KCldOworICAgIFttX2hvc3RpbmdMYXllciBpbnNlcnRTdWJsYXll
cjpsYXllci0+cGxhdGZvcm1MYXllcigpIGFib3ZlOm9sZFBsYXRmb3JtTGF5ZXIuZ2V0KCldOwog
ICAgIFtvbGRQbGF0Zm9ybUxheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKIAogICAgIFtDQVRy
YW5zYWN0aW9uIGNvbW1pdF07CkBAIC02NjksNyArNjY4LDcgQEAgdm9pZCBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTo6dXBkYXRlRGVidWdJbmZvTGF5ZXIoYm9vbCBzaG93TGF5ZXIpCiAj
aWZuZGVmIE5ERUJVRwogICAgICAgICAgICAgW21fZGVidWdJbmZvTGF5ZXIgc2V0TmFtZTpAIkRl
YnVnIEluZm8iXTsKICNlbmRpZgotICAgICAgICAgICAgW21fcm9vdExheWVyIGFkZFN1YmxheWVy
Om1fZGVidWdJbmZvTGF5ZXIuZ2V0KCldOworICAgICAgICAgICAgW21faG9zdGluZ0xheWVyIGFk
ZFN1YmxheWVyOm1fZGVidWdJbmZvTGF5ZXIuZ2V0KCldOwogICAgICAgICB9CiAgICAgfSBlbHNl
IGlmIChtX2RlYnVnSW5mb0xheWVyKSB7CiAgICAgICAgIFttX2RlYnVnSW5mb0xheWVyIHJlbW92
ZUZyb21TdXBlcmxheWVyXTsKQEAgLTY4OCw3ICs2ODcsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjphZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQ
b2ludAogICAgIC8vIEZJWE1FOiBLZWVwIGFyb3VuZCBwYWdlU2NhbGU9MSB0aWxlcyBzbyB3ZSBj
YW4gem9vbSBvdXQgd2l0aG91dCBnYXBzLgogICAgIC8vIEZJWE1FOiBCcmluZyBpbiB1bnBhcmVu
dGVkLWJ1dC1wYWludGVkIHRpbGVzIHdoZW4gem9vbWluZyBvdXQsIHRvIGZpbGwgaW4gYW55IGdh
cHMuCiAKLSAgICBpZiAoIW1fcm9vdExheWVyKQorICAgIGlmICghbV9ob3N0aW5nTGF5ZXIpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKQEAg
LTgyNyw2ICs4MjYsMTIgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YXBw
bHlUcmFuc2llbnRab29tVG9QYWdlKGRvdWJsZSBzY2FsZSwgRmxvYXQKICAgICBtX3RyYW5zaWVu
dFpvb21TY2FsZSA9IDE7CiB9CiAKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6
OnNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQorewor
ICAgIG1fdHJhbnNmb3JtID0gdHJhbnNmb3JtOworICAgIFttX3Jvb3RMYXllciBzZXRTdWJsYXll
clRyYW5zZm9ybTp0cmFuc2Zvcm1dOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2Vu
ZGlmIC8vICFQTEFURk9STShJT1MpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224402</attachid>
            <date>2014-02-17 11:37:58 -0800</date>
            <delta_ts>2014-02-17 12:07:01 -0800</delta_ts>
            <desc>rebase</desc>
            <filename>thumbnail.diff</filename>
            <type>text/plain</type>
            <size>48278</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiMDlhMjI0Li41ZmQ1ZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE4
IEBACisyMDE0LTAyLTE0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBhIHdheSB0byBlZmZpY2llbnRseSB0aHVtYm5haWwgV0tWaWV3cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4ODMxCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8xNTY2OTY1NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5haWxW
aWV3Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5haWxW
aWV3Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV0tUaHVtYm5haWxWaWV3IGluaXRXaXRoRnJhbWU6
ZnJvbVdLVmlldzpdKToKKyAgICAgICAgKC1bV0tUaHVtYm5haWxWaWV3IF92aWV3V2FzVW5wYXJl
bnRlZF0pOgorICAgICAgICAoLVtXS1RodW1ibmFpbFZpZXcgX3ZpZXdXYXNQYXJlbnRlZF0pOgor
ICAgICAgICAoLVtXS1RodW1ibmFpbFZpZXcgdmlld0RpZE1vdmVUb1dpbmRvd10pOgorICAgICAg
ICAoLVtXS1RodW1ibmFpbFZpZXcgc2V0U2NhbGU6XSk6CisgICAgICAgICgtW1dLVGh1bWJuYWls
VmlldyBzZXRUaHVtYm5haWxMYXllcjpdKToKKyAgICAgICAgKC1bV0tUaHVtYm5haWxWaWV3IHRo
dW1ibmFpbExheWVyXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1RodW1ibmFp
bFZpZXdJbnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgQWRkIFdLVGh1bWJuYWlsVmlldy4KKyAg
ICAgICAgQ2xpZW50cyBvZiB0aGlzIHByaXZhdGUgQVBJIHdpbGwgY2FsbCBpbml0V2l0aEZyYW1l
OmZyb21XS1ZpZXc6LAorICAgICAgICBnaXZpbmcgdGhlIFdLVmlldyB0aGV5IHdpc2ggdG8gYm9y
cm93IGNvbnRlbnRzIGZyb20uCisgICAgICAgIFRoZXkgY2FuIGFsc28gY2FsbCBzZXRTY2FsZTog
dG8gc2V0IHRoZSBzY2FsZSB0aGF0IHdpbGwgYmUgdXNlZCB0byByZW5kZXIKKyAgICAgICAgdGhl
IGNvbnRlbnQgaW4gYW4gaW1wbGVtZW50YXRpb24tZGVmaW5lZCBzZXQgb2YgY2FzZXMgKGN1cnJl
bnRseSwgd2Ugd2lsbAorICAgICAgICB1c2UgdGhlIGxvdyByZXNvbHV0aW9uIHNjYWxlIGZvciBX
S1ZpZXdzIHdoaWNoIHdlcmUgbm90IHBhcmVudGVkIHdoZW4gdGhlCisgICAgICAgIFdLVGh1bWJu
YWlsVmlldyB3YXMgY3JlYXRlZDsgcGFyZW50ZWQgV0tWaWV3cyB3aWxsIHVzZSB0aGUgZXhpc3Rp
bmcgc2NhbGUpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwu
bW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUp
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6aXNWaWV3VmlzaWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdWaXNpYmxlT3JPY2NsdWRlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdJbldpbmRvdyk6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp2aWV3TGF5ZXJIb3N0aW5nTW9kZSk6CisgICAgICAg
IElmIHRoZSBXS1ZpZXcgaGFzIGFuIGFjdGl2ZWx5LXBhcmVudGVkIFdLVGh1bWJuYWlsVmlldyBh
dHRhY2hlZCB0byBpdCwKKyAgICAgICAgd2Ugc2hvdWxkIGRldGVybWluZSB2aWV3IHZpc2liaWxp
dHkvZXRjLiB1c2luZyB0aGF0IHZpZXcgaW5zdGVhZCBvZiB0aGUgV0tWaWV3LgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgZGVhbGxv
Y10pOgorICAgICAgICBXS1RodW1ibmFpbFZpZXcgaG9sZHMgb24gdG8gdGhlIFdLVmlldywgYW5k
IGNsZWFycyBXS1ZpZXcncyBiYWNrcG9pbnRlcgorICAgICAgICB3aGVuIGl0IGxlYXZlcyB0aGUg
d2luZG93LCBzbyB3ZSBzaG91bGQgbmV2ZXIgc2VlIFdLVmlldyBnZXQgZGVhbGxvY2F0ZWQKKyAg
ICAgICAgd2l0aCBhIGxpdmUgdGh1bWJuYWlsIHZpZXcuCisKKyAgICAgICAgKC1bV0tWaWV3IHNj
cm9sbFdoZWVsOl0pOgorICAgICAgICAoLVtXS1ZpZXcgbW91c2VNb3ZlZDpdKToKKyAgICAgICAg
KC1bV0tWaWV3IG1vdXNlRG93bjpdKToKKyAgICAgICAgKC1bV0tWaWV3IG1vdXNlVXA6XSk6Cisg
ICAgICAgICgtW1dLVmlldyBtb3VzZURyYWdnZWQ6XSk6CisgICAgICAgIERvbid0IGhhbmRsZSBl
dmVudHMgd2hpbGUgdGh1bWJuYWlsZWQuCisKKyAgICAgICAgKC1bV0tWaWV3IF9zZXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllcjpdKToKKyAgICAgICAgRm9yd2FyZCByb290IGxh
eWVyIGNoYW5nZXMgdG8gdGhlIGluc3RhbGxlZCB0aHVtYm5haWwgdmlldy4KKworICAgICAgICAo
LVtXS1ZpZXcgX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlUm9vdExheWVyXSk6CisgICAgICAg
IF9hY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllciBzaG91bGQgcmV0dXJuIHRoZSBz
YW1lIGxheWVyCisgICAgICAgIHRoYXQgd2FzIHNldCB2aWEgX3NldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlUm9vdExheWVyOiwgbm90IGl0cyBwYXJlbnQuCisKKyAgICAgICAgKC1bV0tWaWV3
IF9zZXRUaHVtYm5haWxWaWV3Ol0pOgorICAgICAgICAoLVtXS1ZpZXcgX3RodW1ibmFpbFZpZXdd
KToKKyAgICAgICAgSW5zdGFsbC91bmluc3RhbGwgYSBXS1RodW1ibmFpbFZpZXcuIEhhbmQgaXQg
b3VyIHJvb3QgbGF5ZXIgaWYgaW5zdGFsbGluZywKKyAgICAgICAgb3IgcmVjb3ZlciBpdCBmcm9t
IHRoZSBkZXBhcnRpbmcgdGh1bWJuYWlsIHZpZXcgaWYgdW5pbnN0YWxsaW5nLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgQWRkIGluIGEg
bWlzc2luZyBSZXRhaW5QdHIuaCBpbmNsdWRlIHRoYXQgSSBtaXNzZWQgZWFybGllciBhbmQgY2F1
c2VzIHRyb3VibGUuCisgICAgICAgIEFkZCBXS1ZpZXcgX3RodW1ibmFpbFZpZXcgYW5kIF9zZXRU
aHVtYm5haWxWaWV3Oi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFRodW1ibmFpbFNjYWxlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6bWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyk6CisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dl
c3R1cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFuZGxlU3dpcGVHZXN0dXJlKToKKyAgICAgICAgU3dpcGUg
d2FzIGFjY2lkZW50YWxseSBkZXBlbmRpbmcgb24gYSBtaXN0YWtlIGluIFdLVmlldydzCisgICAg
ICAgIF9hY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllciB3aGVyZSBpdCB3YXMgcmV0
dXJuaW5nIHRoZSB3cm9uZyBsYXllci4KKyAgICAgICAgVGhlIGFjdHVhbCByb290IGxheWVyIGRv
ZXNuJ3QgaGF2ZSBhIHNpemUsIHNvIHdlIHNob3VsZCB1c2UgdGhlIGRyYXdpbmcKKyAgICAgICAg
YXJlYSdzIHNpemUgaW5zdGVhZC4KKworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgQWRkIHNvbWUgbmV3IGZpbGVzLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpX
ZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0VGh1bWJuYWlsU2NhbGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgIEFwcGx5IHRoZSB0aHVt
Ym5haWwgc2NhbGUgdG8gdGhlIHBhZ2UuIElmIHdlJ3JlIGN1cnJlbnRseSBub3QgaW4KKyAgICAg
ICAgdGh1bWJuYWlsIHNjYWxpbmcgbW9kZSwgc2F2ZSB0aGUgY3VycmVudCBwYWdlIHNjYWxlIGFu
ZCBzY3JvbGwgcG9zaXRpb24KKyAgICAgICAgc28gd2UgY2FuIHJlc3RvcmUgdGhlbSBvbmNlIHdl
IGxlYXZlIHRodW1ibmFpbCBtb2RlIGFnYWluLgorICAgICAgICBUcmFuc2Zvcm0gdGhlIERyYXdp
bmdBcmVhIHNvIHRoYXQgdGhlIHBhZ2UgYXBwZWFycyBhdCB0aGUgc2FtZQorICAgICAgICBwb3Np
dGlvbiBhbmQgc2l6ZSwgYnV0IHNjYWxlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9EcmF3aW5nQXJlYS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6c2V0VHJhbnNm
b3JtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWE6OnNldFRyYW5zZm9ybSk6CisgICAgICAgIEFkZCBhIERyYXdpbmdB
cmVhIG1ldGhvZCB0byBhcHBseSBhbiBhcmJpdHJhcnkgdHJhbnNmb3JtIHRvIHRoZSBkcmF3aW5n
IGFyZWEuCisKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6
OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKToKKyAgICAg
ICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldFBhZ2VPdmVybGF5
TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE6OnN1c3BlbmRQYWludGluZyk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpyZXN1bWVQYWludGluZyk6CisgICAgICAgIChXZWJLaXQ6
OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVHZW9tZXRyeSk6CisgICAgICAg
IChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVMYXllckhvc3Rp
bmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OmNyZWF0ZVBhZ2VPdmVybGF5TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6ZGlkQ29tbWl0Q2hhbmdlc0ZvckxheWVyKToKKyAgICAgICAg
KFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZURlYnVnSW5mb0xh
eWVyKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFk
anVzdFRyYW5zaWVudFpvb20pOgorICAgICAgICBSZW1vdmUgdGhlIHdvcmQgImNvbXBvc2l0aW5n
IiBpbiBhIGJ1bmNoIG9mIHBsYWNlcyB3aGVyZSBpdCBpc24ndCBuZWVkZWQuCisgICAgICAgIFJl
bmFtZSBtX3Jvb3RMYXllciB0byBtX2hvc3RpbmdMYXllciwgYW5kIHJlcHVycG9zZSBtX3Jvb3RM
YXllciB0byBzdG9yZQorICAgICAgICB0aGUgcm9vdCBjb21wb3NpdGluZyBsYXllciBhY3R1YWxs
eSBwYXNzZWQgaW4gdmlhIHNldFJvb3RDb21wb3NpdGluZ0xheWVyLgorICAgICAgICBSZW5hbWUg
bV9wZW5kaW5nUm9vdENvbXBvc2l0aW5nTGF5ZXIgdG8gbV9wZW5kaW5nUm9vdExheWVyLgorCiAy
MDE0LTAyLTE3ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAg
ICAgV2ViS2l0R1RLKyBzaG91bGQgc3RvcCBjYWxsaW5nIGZ1bmN0aW9ucyB0byBzZXQgdGhlIHZp
ZXcgc291cmNlIG1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tUaHVtYm5haWxWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVGh1bWJuYWlsVmlldy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmEyNDk0MWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVGh1bWJuYWlsVmlldy5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0IDxXZWJLaXQyL1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKwor
I2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgorCitAY2xhc3MgV0tWaWV3OworCitXS19BUElfQ0xB
U1MKK0BpbnRlcmZhY2UgV0tUaHVtYm5haWxWaWV3IDogTlNWaWV3CisKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgZnJvbVdLVmlldzooV0tWaWV3ICopd2tWaWV3
OworLSAodm9pZClzZXRTY2FsZTooZG91YmxlKXNjYWxlOworCitAZW5kCisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1RodW1ibmFpbFZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVGh1bWJuYWlsVmll
dy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTM0MjRhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1RodW1ibmFp
bFZpZXcubW0KQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIldLVGh1bWJuYWlsVmlld0ludGVybmFsLmgiCisKKyNpZiBXS19BUElfRU5B
QkxFRAorCisjaW1wb3J0ICJXS0FQSUNhc3QuaCIKKyNpbXBvcnQgIldLVmlldy5oIgorI2ltcG9y
dCAiV0tWaWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorCisvLyBGSVhN
RTogTWFrZSBpdCBwb3NzaWJsZSB0byBsZWF2ZSBhIHNuYXBzaG90IG9mIHRoZSBjb250ZW50IHBy
ZXNlbnRlZCBpbiB0aGUgV0tWaWV3IHdoaWxlIHRoZSB0aHVtYm5haWwgaXMgbGl2ZS4KKy8vIEZJ
WE1FOiBEb24ndCBtYWtlIG5ldyBzcGVjdWxhdGl2ZSB0aWxlcyB3aGlsZSB0aHVtYm5haWxlZC4K
Ky8vIEZJWE1FOiBIaWRlIHNjcm9sbGJhcnMgaW4gdGhlIHRodW1ibmFpbC4KKy8vIEZJWE1FOiBX
ZSBzaG91bGQgcmUtdXNlIGV4aXN0aW5nIHRpbGVzIGZvciB1bnBhcmVudGVkIHZpZXdzLCBpZiB3
ZSBoYXZlIHRoZW0gKHdlIG5lZWQgdG8ga25vdyBpZiB0aGV5J3ZlIGJlZW4gcHVyZ2VkOyBpZiBz
bywgcmVwYWludCBhdCBzY2FsZWQtZG93biBzaXplKS4KKy8vIEZJWE1FOiBXZSBzaG91bGQgc3dp
dGNoIHRvIHRoZSBsb3ctcmVzb2x1dGlvbiBzY2FsZSBpZiBhIHZpZXcgd2UgaGF2ZSBoaWdoLXJl
c29sdXRpb24gdGlsZXMgZm9yIHJlcGFpbnRzLgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
K3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0BpbXBsZW1lbnRhdGlvbiBXS1RodW1ibmFpbFZp
ZXcKK3sKKyAgICBSZXRhaW5QdHI8V0tWaWV3PiBfd2tWaWV3OworICAgIFdlYlBhZ2VQcm94eSog
X3dlYlBhZ2VQcm94eTsKKyAgICBkb3VibGUgX3RodW1ibmFpbFNjYWxlOworCisgICAgYm9vbCBf
b3JpZ2luYWxNYXlTdGFydE1lZGlhV2hlbkluV2luZG93OworICAgIGJvb2wgX29yaWdpbmFsU291
cmNlVmlld0lzSW5XaW5kb3c7CisKKyAgICBib29sIF9zaG91bGRBcHBseVRodW1ibmFpbFNjYWxl
OworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGZyb21X
S1ZpZXc6KFdLVmlldyAqKXdrVmlldworeworICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhGcmFt
ZTpmcmFtZV07CisgICAgaWYgKHNlbGYpIHsKKyAgICAgICAgX3drVmlldyA9IHdrVmlldzsKKyAg
ICAgICAgX3dlYlBhZ2VQcm94eSA9IHRvSW1wbChbX3drVmlldyBwYWdlUmVmXSk7CisgICAgICAg
IF90aHVtYm5haWxTY2FsZSA9IDE7CisKKyAgICAgICAgX29yaWdpbmFsTWF5U3RhcnRNZWRpYVdo
ZW5JbldpbmRvdyA9IF93ZWJQYWdlUHJveHktPm1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3coKTsK
KyAgICAgICAgX29yaWdpbmFsU291cmNlVmlld0lzSW5XaW5kb3cgPSAhIVtfd2tWaWV3IHdpbmRv
d107CisKKyAgICAgICAgX3Nob3VsZEFwcGx5VGh1bWJuYWlsU2NhbGUgPSAhX29yaWdpbmFsU291
cmNlVmlld0lzSW5XaW5kb3c7CisgICAgfQorICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lk
KV92aWV3V2FzVW5wYXJlbnRlZAoreworICAgIGlmIChfc2hvdWxkQXBwbHlUaHVtYm5haWxTY2Fs
ZSkKKyAgICAgICAgX3dlYlBhZ2VQcm94eS0+c2V0VGh1bWJuYWlsU2NhbGUoMSk7CisKKyAgICBb
X3drVmlldyBfc2V0VGh1bWJuYWlsVmlldzpuaWxdOworICAgIF93ZWJQYWdlUHJveHktPnNldE1h
eVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3coX29yaWdpbmFsTWF5U3RhcnRNZWRpYVdoZW5JbldpbmRv
dyk7Cit9CisKKy0gKHZvaWQpX3ZpZXdXYXNQYXJlbnRlZAoreworICAgIGlmIChbX3drVmlldyBf
dGh1bWJuYWlsVmlld10pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChfc2hvdWxkQXBwbHlU
aHVtYm5haWxTY2FsZSkKKyAgICAgICAgX3dlYlBhZ2VQcm94eS0+c2V0VGh1bWJuYWlsU2NhbGUo
X3RodW1ibmFpbFNjYWxlKTsKKworICAgIGlmICghX29yaWdpbmFsU291cmNlVmlld0lzSW5XaW5k
b3cpCisgICAgICAgIF93ZWJQYWdlUHJveHktPnNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3co
ZmFsc2UpOworCisgICAgW193a1ZpZXcgX3NldFRodW1ibmFpbFZpZXc6c2VsZl07Cit9CisKKy0g
KHZvaWQpdmlld0RpZE1vdmVUb1dpbmRvdworeworICAgIGlmIChzZWxmLndpbmRvdykKKyAgICAg
ICAgW3NlbGYgX3ZpZXdXYXNQYXJlbnRlZF07CisgICAgZWxzZQorICAgICAgICBbc2VsZiBfdmll
d1dhc1VucGFyZW50ZWRdOworfQorCistICh2b2lkKXNldFNjYWxlOihkb3VibGUpc2NhbGUKK3sK
KyAgICBfdGh1bWJuYWlsU2NhbGUgPSBzY2FsZTsKKworICAgIGlmIChzZWxmLndpbmRvdyAmJiBf
c2hvdWxkQXBwbHlUaHVtYm5haWxTY2FsZSkKKyAgICAgICAgX3dlYlBhZ2VQcm94eS0+c2V0VGh1
bWJuYWlsU2NhbGUoX3RodW1ibmFpbFNjYWxlKTsKK30KKworLSAodm9pZClzZXRUaHVtYm5haWxM
YXllcjooQ0FMYXllciAqKWxheWVyCit7CisgICAgc2VsZi5sYXllci5zdWJsYXllcnMgPSBsYXll
ciA/IEBbbGF5ZXJdIDogQFtdOworfQorCistIChDQUxheWVyICopdGh1bWJuYWlsTGF5ZXIKK3sK
KyAgICBpZiAoIXNlbGYubGF5ZXIuc3VibGF5ZXJzLmNvdW50KQorICAgICAgICByZXR1cm4gbmls
OworCisgICAgcmV0dXJuIFtzZWxmLmxheWVyLnN1YmxheWVycyBvYmplY3RBdEluZGV4OjBdOwor
fQorCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzMjgzNDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVGh1bWJuYWlsVmlld0ludGVybmFsLmgKQEAg
LTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldLVGh1bWJuYWlsVmlldy5oIgor
CisjaWYgV0tfQVBJX0VOQUJMRUQKKworQGludGVyZmFjZSBXS1RodW1ibmFpbFZpZXcgKCkKKwor
QHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgQ0FMYXllciAqdGh1bWJuYWlsTGF5ZXI7CisK
K0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9QYWdlQ2xpZW50SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1BhZ2VDbGllbnRJbXBsLm1tCmluZGV4IDcwZWNkYjQuLjhlNjQ2MDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCkBAIC0zNyw2
ICszNyw3IEBACiAjaW1wb3J0ICJXS0FQSUNhc3QuaCIKICNpbXBvcnQgIldLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldLU3RyaW5nQ0YuaCIKKyNpbXBvcnQgIldLVGh1
bWJuYWlsVmlldy5oIgogI2ltcG9ydCAiV0tWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkNv
bG9yUGlja2VyTWFjLmgiCiAjaW1wb3J0ICJXZWJDb250ZXh0TWVudVByb3h5TWFjLmgiCkBAIC0x
NjgsNyArMTY5LDggQEAgSW50U2l6ZSBQYWdlQ2xpZW50SW1wbDo6dmlld1NpemUoKQogCiBib29s
IFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUoKQogewotICAgIHJldHVybiBbW21f
d2tWaWV3IHdpbmRvd10gaXNLZXlXaW5kb3ddIHx8IFtOU0FwcCBrZXlXaW5kb3ddID09IFttX3dr
VmlldyB3aW5kb3ddOworICAgIE5TV2luZG93ICphY3RpdmVWaWV3V2luZG93ID0gbV93a1ZpZXcu
X3RodW1ibmFpbFZpZXcgPyBtX3drVmlldy5fdGh1bWJuYWlsVmlldy53aW5kb3cgOiBtX3drVmll
dy53aW5kb3c7CisgICAgcmV0dXJuIGFjdGl2ZVZpZXdXaW5kb3cuaXNLZXlXaW5kb3cgfHwgW05T
QXBwIGtleVdpbmRvd10gPT0gYWN0aXZlVmlld1dpbmRvdzsKIH0KIAogYm9vbCBQYWdlQ2xpZW50
SW1wbDo6aXNWaWV3Rm9jdXNlZCgpCkBAIC0xODMsMjQgKzE4NSwyNyBAQCB2b2lkIFBhZ2VDbGll
bnRJbXBsOjptYWtlRmlyc3RSZXNwb25kZXIoKQogICAgIAogYm9vbCBQYWdlQ2xpZW50SW1wbDo6
aXNWaWV3VmlzaWJsZSgpCiB7Ci0gICAgaWYgKCFbbV93a1ZpZXcgd2luZG93XSkKKyAgICBOU1Zp
ZXcgKmFjdGl2ZVZpZXcgPSBtX3drVmlldy5fdGh1bWJuYWlsVmlldyA/IG1fd2tWaWV3Ll90aHVt
Ym5haWxWaWV3IDogbV93a1ZpZXc7CisgICAgTlNXaW5kb3cgKmFjdGl2ZVZpZXdXaW5kb3cgPSBh
Y3RpdmVWaWV3LndpbmRvdzsKKworICAgIGlmICghYWN0aXZlVmlld1dpbmRvdykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFbW21fd2tWaWV3IHdpbmRvd10gaXNWaXNpYmxlXSkK
KyAgICBpZiAoIWFjdGl2ZVZpZXdXaW5kb3cuaXNWaXNpYmxlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDw9IDEwODAKICAgICAv
LyBNb3VudGFpbiBMaW9uIGFuZCBwcmV2aW91cyBkbyBub3Qgc3VwcG9ydCBvY2NsdXNpb24gbm90
aWZpY2F0aW9ucywgYW5kIGFzIHN1Y2ggd2lsbAogICAgIC8vIGNvbnRpbnVlIHRvIHJlcG9ydCBh
cyAidmlzaWJsZSIgd2hlbiBub3Qgb24gdGhlIGFjdGl2ZSBzcGFjZS4KLSAgICBpZiAoIVtbbV93
a1ZpZXcgd2luZG93XSBpc09uQWN0aXZlU3BhY2VdKQorICAgIGlmICghYWN0aXZlVmlld1dpbmRv
dy5pc09uQWN0aXZlU3BhY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCi0gICAg
aWYgKFttX3drVmlldyBpc0hpZGRlbk9ySGFzSGlkZGVuQW5jZXN0b3JdKQorICAgIGlmIChhY3Rp
dmVWaWV3LmlzSGlkZGVuT3JIYXNIaWRkZW5BbmNlc3RvcikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCi0gICAgaWYg
KFttX3drVmlldyB3aW5kb3dPY2NsdXNpb25EZXRlY3Rpb25FbmFibGVkXSAmJiAoW1ttX3drVmll
dyB3aW5kb3ddIG9jY2x1c2lvblN0YXRlXSAmIE5TV2luZG93T2NjbHVzaW9uU3RhdGVWaXNpYmxl
KSAhPSBOU1dpbmRvd09jY2x1c2lvblN0YXRlVmlzaWJsZSkKKyAgICBpZiAoW21fd2tWaWV3IHdp
bmRvd09jY2x1c2lvbkRldGVjdGlvbkVuYWJsZWRdICYmIChhY3RpdmVWaWV3V2luZG93Lm9jY2x1
c2lvblN0YXRlICYgTlNXaW5kb3dPY2NsdXNpb25TdGF0ZVZpc2libGUpICE9IE5TV2luZG93T2Nj
bHVzaW9uU3RhdGVWaXNpYmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIApAQCAt
MjA5LDEyICsyMTQsMTIgQEAgYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3VmlzaWJsZSgpCiAK
IGJvb2wgUGFnZUNsaWVudEltcGw6OmlzVmlld1Zpc2libGVPck9jY2x1ZGVkKCkKIHsKLSAgICBy
ZXR1cm4gW1ttX3drVmlldyB3aW5kb3ddIGlzVmlzaWJsZV07CisgICAgcmV0dXJuIG1fd2tWaWV3
Ll90aHVtYm5haWxWaWV3ID8gbV93a1ZpZXcuX3RodW1ibmFpbFZpZXcud2luZG93LmlzVmlzaWJs
ZSA6IG1fd2tWaWV3LndpbmRvdy5pc1Zpc2libGU7CiB9CiAKIGJvb2wgUGFnZUNsaWVudEltcGw6
OmlzVmlld0luV2luZG93KCkKIHsKLSAgICByZXR1cm4gW21fd2tWaWV3IHdpbmRvd107CisgICAg
cmV0dXJuIG1fd2tWaWV3Ll90aHVtYm5haWxWaWV3ID8gbV93a1ZpZXcuX3RodW1ibmFpbFZpZXcu
d2luZG93IDogbV93a1ZpZXcud2luZG93OwogfQogCiBib29sIFBhZ2VDbGllbnRJbXBsOjppc1Zp
c3VhbGx5SWRsZSgpCkBAIC0yMjUsNyArMjMwLDggQEAgYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNW
aXN1YWxseUlkbGUoKQogTGF5ZXJIb3N0aW5nTW9kZSBQYWdlQ2xpZW50SW1wbDo6dmlld0xheWVy
SG9zdGluZ01vZGUoKQogewogI2lmIEhBVkUoT1VUX09GX1BST0NFU1NfTEFZRVJfSE9TVElORykK
LSAgICBpZiAoW21fd2tWaWV3IHdpbmRvd10gJiYgW1ttX3drVmlldyB3aW5kb3ddIF9ob3N0c0xh
eWVyc0luV2luZG93U2VydmVyXSkKKyAgICBOU1dpbmRvdyAqYWN0aXZlVmlld1dpbmRvdyA9IG1f
d2tWaWV3Ll90aHVtYm5haWxWaWV3ID8gbV93a1ZpZXcuX3RodW1ibmFpbFZpZXcud2luZG93IDog
bV93a1ZpZXcud2luZG93OworICAgIGlmIChbYWN0aXZlVmlld1dpbmRvdyBfaG9zdHNMYXllcnNJ
bldpbmRvd1NlcnZlcl0pCiAgICAgICAgIHJldHVybiBMYXllckhvc3RpbmdNb2RlOjpPdXRPZlBy
b2Nlc3M7CiAjZW5kaWYKICAgICByZXR1cm4gTGF5ZXJIb3N0aW5nTW9kZTo6SW5Qcm9jZXNzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDc0YjM4ZWEu
LmUwMTcwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dL
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0K
QEAgLTU3LDYgKzU3LDggQEAKICNpbXBvcnQgIldLUHJvY2Vzc0NsYXNzSW50ZXJuYWwuaCIKICNp
bXBvcnQgIldLU3RyaW5nQ0YuaCIKICNpbXBvcnQgIldLVGV4dElucHV0V2luZG93Q29udHJvbGxl
ci5oIgorI2ltcG9ydCAiV0tUaHVtYm5haWxWaWV3LmgiCisjaW1wb3J0ICJXS1RodW1ibmFpbFZp
ZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLVmll
d1ByaXZhdGUuaCIKICNpbXBvcnQgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgpAQCAtMjI1LDYgKzIy
Nyw4IEBAIHN0cnVjdCBXS1ZpZXdJbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzIHsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8Vmlld0dlc3R1cmVDb250cm9sbGVyPiBfZ2VzdHVyZUNvbnRyb2xsZXI7
CiAgICAgQk9PTCBfYWxsb3dzTWFnbmlmaWNhdGlvbjsKICAgICBCT09MIF9hbGxvd3NCYWNrRm9y
d2FyZE5hdmlnYXRpb25HZXN0dXJlczsKKworICAgIFdLVGh1bWJuYWlsVmlldyAqX3RodW1ibmFp
bFZpZXc7CiB9CiAKIEBlbmQKQEAgLTI3Myw2ICsyNzcsNyBAQCBzdHJ1Y3QgV0tWaWV3SW50ZXJw
cmV0S2V5RXZlbnRzUGFyYW1ldGVycyB7CiB7CiAgICAgX2RhdGEtPl9wYWdlLT5jbG9zZSgpOwog
CisgICAgQVNTRVJUKCFfZGF0YS0+X3RodW1ibmFpbFZpZXcpOwogICAgIEFTU0VSVCghX2RhdGEt
Pl9pblNlY3VyZUlucHV0U3RhdGUpOwogCiAgICAgW19kYXRhIHJlbGVhc2VdOwpAQCAtMTA3Nyw2
ICsxMDgyLDggQEAgc3RhdGljIHZvaWQgc3BlYWtTdHJpbmcoV0tTdHJpbmdSZWYgc3RyaW5nLCBX
S0Vycm9yUmVmIGVycm9yLCB2b2lkKikKICNkZWZpbmUgTkFUSVZFX01PVVNFX0VWRU5UX0hBTkRM
RVIoU2VsZWN0b3IpIFwKICAgICAtICh2b2lkKVNlbGVjdG9yOihOU0V2ZW50ICopdGhlRXZlbnQg
XAogICAgIHsgXAorICAgICAgICBpZiAoX2RhdGEtPl90aHVtYm5haWxWaWV3KSBcCisgICAgICAg
ICAgICByZXR1cm47IFwKICAgICAgICAgaWYgKFtbc2VsZiBpbnB1dENvbnRleHRdIGhhbmRsZUV2
ZW50OnRoZUV2ZW50XSkgeyBcCiAgICAgICAgICAgICBMT0coVGV4dElucHV0LCAiJXMgd2FzIGhh
bmRsZWQgYnkgdGV4dCBpbnB1dCBjb250ZXh0IiwgU3RyaW5nKCNTZWxlY3Rvcikuc3Vic3RyaW5n
KDAsIFN0cmluZygjU2VsZWN0b3IpLmZpbmQoIkludGVybmFsIikpLmFzY2lpKCkuZGF0YSgpKTsg
XAogICAgICAgICAgICAgcmV0dXJuOyBcCkBAIC0xMTExLDYgKzExMTgsOSBAQCBOQVRJVkVfTU9V
U0VfRVZFTlRfSEFORExFUihyaWdodE1vdXNlVXApCiAKIC0gKHZvaWQpc2Nyb2xsV2hlZWw6KE5T
RXZlbnQgKilldmVudAogeworICAgIGlmIChfZGF0YS0+X3RodW1ibmFpbFZpZXcpCisgICAgICAg
IHJldHVybjsKKwogICAgIGlmIChfZGF0YS0+X2FsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdl
c3R1cmVzKSB7CiAgICAgICAgIFtzZWxmIF9lbnN1cmVHZXN0dXJlQ29udHJvbGxlcl07CiAgICAg
ICAgIGlmIChfZGF0YS0+X2dlc3R1cmVDb250cm9sbGVyLT5oYW5kbGVTY3JvbGxXaGVlbEV2ZW50
KGV2ZW50KSkKQEAgLTExMjMsNiArMTEzMyw5IEBAIE5BVElWRV9NT1VTRV9FVkVOVF9IQU5ETEVS
KHJpZ2h0TW91c2VVcCkKIAogLSAodm9pZCltb3VzZU1vdmVkOihOU0V2ZW50ICopZXZlbnQKIHsK
KyAgICBpZiAoX2RhdGEtPl90aHVtYm5haWxWaWV3KQorICAgICAgICByZXR1cm47CisKICAgICAv
LyBXaGVuIGEgdmlldyBpcyBmaXJzdCByZXNwb25kZXIsIGl0IGdldHMgbW91c2UgbW92ZWQgZXZl
bnRzIGV2ZW4gd2hlbiB0aGUgbW91c2UgaXMgb3V0c2lkZSBpdHMgdmlzaWJsZSByZWN0LgogICAg
IGlmIChzZWxmID09IFtbc2VsZiB3aW5kb3ddIGZpcnN0UmVzcG9uZGVyXSAmJiAhTlNQb2ludElu
UmVjdChbc2VsZiBjb252ZXJ0UG9pbnQ6W2V2ZW50IGxvY2F0aW9uSW5XaW5kb3ddIGZyb21WaWV3
Om5pbF0sIFtzZWxmIHZpc2libGVSZWN0XSkpCiAgICAgICAgIHJldHVybjsKQEAgLTExMzIsNiAr
MTE0NSw5IEBAIE5BVElWRV9NT1VTRV9FVkVOVF9IQU5ETEVSKHJpZ2h0TW91c2VVcCkKIAogLSAo
dm9pZCltb3VzZURvd246KE5TRXZlbnQgKilldmVudAogeworICAgIGlmIChfZGF0YS0+X3RodW1i
bmFpbFZpZXcpCisgICAgICAgIHJldHVybjsKKwogICAgIFtzZWxmIF9zZXRNb3VzZURvd25FdmVu
dDpldmVudF07CiAgICAgX2RhdGEtPl9pZ25vcmluZ01vdXNlRHJhZ2dlZEV2ZW50cyA9IE5POwog
ICAgIFtzZWxmIG1vdXNlRG93bkludGVybmFsOmV2ZW50XTsKQEAgLTExMzksMTIgKzExNTUsMTgg
QEAgTkFUSVZFX01PVVNFX0VWRU5UX0hBTkRMRVIocmlnaHRNb3VzZVVwKQogCiAtICh2b2lkKW1v
dXNlVXA6KE5TRXZlbnQgKilldmVudAogeworICAgIGlmIChfZGF0YS0+X3RodW1ibmFpbFZpZXcp
CisgICAgICAgIHJldHVybjsKKwogICAgIFtzZWxmIF9zZXRNb3VzZURvd25FdmVudDpuaWxdOwog
ICAgIFtzZWxmIG1vdXNlVXBJbnRlcm5hbDpldmVudF07CiB9CiAKIC0gKHZvaWQpbW91c2VEcmFn
Z2VkOihOU0V2ZW50ICopZXZlbnQKIHsKKyAgICBpZiAoX2RhdGEtPl90aHVtYm5haWxWaWV3KQor
ICAgICAgICByZXR1cm47CisKICAgICBpZiAoX2RhdGEtPl9pZ25vcmluZ01vdXNlRHJhZ2dlZEV2
ZW50cykKICAgICAgICAgcmV0dXJuOwogICAgIFtzZWxmIG1vdXNlRHJhZ2dlZEludGVybmFsOmV2
ZW50XTsKQEAgLTI0ODMsNiArMjUwNSwxMyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVTYW5kYm94RXh0
ZW5zaW9uc0ZvckZpbGVVcGxvYWQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBTYW5kYgogCiAt
ICh2b2lkKV9zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllcjooQ0FMYXllciAq
KXJvb3RMYXllcgogeworICAgIFtyb290TGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKKwor
ICAgIGlmIChfZGF0YS0+X3RodW1ibmFpbFZpZXcpIHsKKyAgICAgICAgX2RhdGEtPl90aHVtYm5h
aWxWaWV3LnRodW1ibmFpbExheWVyID0gcm9vdExheWVyOworICAgICAgICByZXR1cm47CisgICAg
fQorCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAgIFtDQVRyYW5zYWN0aW9uIHNldERp
c2FibGVBY3Rpb25zOllFU107CiAKQEAgLTI1MjcsNyArMjU1NiwxMCBAQCBzdGF0aWMgdm9pZCBj
cmVhdGVTYW5kYm94RXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJv
YXJkLCBTYW5kYgogICAgIGlmICghaG9zdFZpZXcpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIGhvc3RWaWV3LmxheWVyOworICAgIGlmICghaG9zdFZpZXcubGF5ZXIuc3Vi
bGF5ZXJzLmNvdW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBob3N0
Vmlldy5sYXllci5zdWJsYXllcnNbMF07CiB9CiAKIC0gKFJldGFpblB0cjxDR0ltYWdlUmVmPilf
dGFrZVZpZXdTbmFwc2hvdApAQCAtMjk0Myw2ICsyOTc1LDI3IEBAIHN0YXRpYyBOU1N0cmluZyAq
cGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZvclBhdGgoTlNTdHJpbmcgKnBhdGgpCiAgICAgW3R5cGVz
IHJlbGVhc2VdOwogfQogCistICh2b2lkKV9zZXRUaHVtYm5haWxWaWV3OihXS1RodW1ibmFpbFZp
ZXcgKil0aHVtYm5haWxWaWV3Cit7CisgICAgQVNTRVJUKCFfZGF0YS0+X3RodW1ibmFpbFZpZXcg
fHwgIXRodW1ibmFpbFZpZXcpOworCisgICAgUmV0YWluUHRyPENBTGF5ZXI+IHRodW1ibmFpbExh
eWVyID0gX2RhdGEtPl90aHVtYm5haWxWaWV3LnRodW1ibmFpbExheWVyOworCisgICAgX2RhdGEt
Pl90aHVtYm5haWxWaWV3ID0gdGh1bWJuYWlsVmlldzsKKworICAgIGlmICh0aHVtYm5haWxWaWV3
KQorICAgICAgICB0aHVtYm5haWxWaWV3LnRodW1ibmFpbExheWVyID0gW3NlbGYgX2FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlUm9vdExheWVyXTsKKyAgICBlbHNlCisgICAgICAgIFtzZWxmIF9z
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllcjp0aHVtYm5haWxMYXllci5nZXQo
KV07CisKKyAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShWaWV3U3RhdGU6Oldp
bmRvd0lzQWN0aXZlIHwgVmlld1N0YXRlOjpJc0luV2luZG93IHwgVmlld1N0YXRlOjpJc1Zpc2li
bGUpOworfQorCistIChXS1RodW1ibmFpbFZpZXcgKilfdGh1bWJuYWlsVmlldworeworICAgIHJl
dHVybiBfZGF0YS0+X3RodW1ibmFpbFZpZXc7Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9u
IFdLVmlldyAoUHJpdmF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1dLVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXdJbnRlcm5hbC5oCmluZGV4IDc1YWRiNGUuLjgzYjRjNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaApAQCAtMjksNiAr
MjksNyBAQAogI2ltcG9ydCAiV2ViRmluZE9wdGlvbnMuaCIKICNpbXBvcnQgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAK
IEBjbGFzcyBXS1dlYlZpZXdDb25maWd1cmF0aW9uOwogCkBAIC01Myw2ICs1NCw3IEBAIHN0cnVj
dCBXZWJQYWdlQ29uZmlndXJhdGlvbjsKIH0KIAogQGNsYXNzIFdLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXI7CitAY2xhc3MgV0tUaHVtYm5haWxWaWV3OwogCiBAaW50ZXJmYWNlIFdLVmlldyAo
KQogI2lmIFdLX0FQSV9FTkFCTEVECkBAIC0xMDMsNiArMTA1LDggQEAgc3RydWN0IFdlYlBhZ2VD
b25maWd1cmF0aW9uOwogLSAodm9pZClfc2V0U3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlczooQk9P
TClzdXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVzOwogLSAoQk9PTClfc3VwcHJlc3NWaXNpYmlsaXR5
VXBkYXRlczsKIAorQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0VGh1bWJuYWlsVmll
dzopIFdLVGh1bWJuYWlsVmlldyAqX3RodW1ibmFpbFZpZXc7CisKIC8vIEZ1bGxTY3JlZW4KIAog
QHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBfaGFzRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDEyMDI3NjQu
LmJkYmRlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC00NTEwLDQgKzQ1MTAsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVud3JhcENyeXB0b0tleShj
b25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIGJvb2wmIHN1Y2MKIH0KICNlbmRpZgog
Cit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGh1bWJuYWlsU2NhbGUoZG91YmxlIHNjYWxlKQorewor
ICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRodW1ibmFpbFNjYWxlKHNjYWxlKSwgbV9wYWdlSUQp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCBiNzUzNDFjLi44MTdkNThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04MjcsNiArODI3LDcgQEAgcHVibGljOgogICAgIAogICAg
IHZvaWQgc2V0TWVkaWFWb2x1bWUoZmxvYXQpOwogICAgIHZvaWQgc2V0TWF5U3RhcnRNZWRpYVdo
ZW5JbldpbmRvdyhib29sKTsKKyAgICBib29sIG1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3coKSBj
b25zdCB7IHJldHVybiBtX21heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3c7IH0KIAogICAgIC8vIFdl
YlBvcHVwTWVudVByb3h5OjpDbGllbnQKICAgICB2aXJ0dWFsIE5hdGl2ZVdlYk1vdXNlRXZlbnQq
IGN1cnJlbnRseVByb2Nlc3NlZE1vdXNlRG93bkV2ZW50KCk7CkBAIC04OTEsNiArODkyLDggQEAg
cHVibGljOgogICAgIHZvaWQgdW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYs
IGJvb2wmIHN1Y2NlZWRlZCwgVmVjdG9yPHVpbnQ4X3Q+Jik7CiAjZW5kaWYKIAorICAgIHZvaWQg
c2V0VGh1bWJuYWlsU2NhbGUoZG91YmxlKTsKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHko
UGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2Vi
UGFnZUNvbmZpZ3VyYXRpb24mKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJv
bGxlck1hYy5tbQppbmRleCA2OWY2MzVkLi5hMmU0MjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQpAQCAt
MzkyLDcgKzM5Miw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2Vz
dHVyZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJdGVtCiAgICAgICAgICAgICBtX2N1
cnJlbnRTd2lwZUxpdmVMYXllcnMuYXBwZW5kKGxheWVyKTsKICAgICAgICAgfQogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIHN3aXBlQXJlYSA9IHJvb3RDb250ZW50TGF5ZXIuZnJhbWU7CisgICAgICAg
IHN3aXBlQXJlYSA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fd2ViUGFnZVByb3h5LmRyYXdp
bmdBcmVhKCktPnNpemUoKSk7CiAgICAgICAgIG1fY3VycmVudFN3aXBlTGl2ZUxheWVycy5hcHBl
bmQocm9vdENvbnRlbnRMYXllcik7CiAgICAgfQogCkBAIC00NTUsNyArNDU1LDcgQEAgdm9pZCBW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZVN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExp
c3RJdGVtKiB0YXJnZXRJdGUKICAgICBpZiAoIW1fY3VzdG9tU3dpcGVWaWV3cy5pc0VtcHR5KCkp
CiAgICAgICAgIHdpZHRoID0gbV9jdXJyZW50U3dpcGVDdXN0b21WaWV3Qm91bmRzLndpZHRoKCk7
CiAgICAgZWxzZQotICAgICAgICB3aWR0aCA9IG1fd2ViUGFnZVByb3h5LmFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdSb290TGF5ZXIoKS5mcmFtZS5zaXplLndpZHRoOworICAgICAgICB3aWR0aCA9IG1f
d2ViUGFnZVByb3h5LmRyYXdpbmdBcmVhKCktPnNpemUoKS53aWR0aCgpOwogCiAgICAgZG91Ymxl
IHN3aXBpbmdMYXllck9mZnNldCA9IGZsb29yKHdpZHRoICogcHJvZ3Jlc3MpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjY4
NjY0NC4uYzBhZjk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNDQwLDYgKzQ0MCw4IEBACiAJCTJENDI5QkZEMTcyMUUyQzcw
MEVDNjgxRiAvKiBQREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ0MjlCRkIxNzIxRTJCQTAwRUM2ODFGIC8qIFBE
RlBsdWdpblBhc3N3b3JkRmllbGQubW0gKi87IH07CiAJCTJENDdCNTZDMTgxMDcxNEUwMDNBM0FF
RSAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENDdCNTZBMTgxMDcxNEUwMDNBM0FFRSAvKiBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZS5tbSAqLzsgfTsKIAkJMkQ0N0I1NkQxODEwNzE0RTAwM0EzQUVFIC8q
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRDQ3QjU2QjE4MTA3MTRFMDAzQTNBRUUgLyogUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUuaCAqLzsgfTsKKwkJMkQ2QjM3MUIxOEE5NjdBRDAwNDJBRTgwIC8qIFdLVGh1
bWJuYWlsVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkQ2QjM3MTkxOEE5NjdBRDAwNDJBRTgwIC8qIFdLVGh1bWJuYWlsVmlldy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTJENkIzNzFDMThBOTY3
QUQwMDQyQUU4MCAvKiBXS1RodW1ibmFpbFZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDZCMzcxQTE4QTk2N0FEMDA0MkFFODAgLyogV0tUaHVt
Ym5haWxWaWV3Lm1tICovOyB9OwogCQkyRDZDRDExOTE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1Nu
YXBzaG90U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJENkNEMTE3MTg5MDU4QTUwMEU1QTRBMCAvKiBWaWV3U25hcHNob3RTdG9yZS5oICovOyB9
OwogCQkyRDZDRDExQTE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDZDRDExODE4OTA1
OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUubW0gKi87IH07CiAJCTJEODE5QjlFMTg2
MjdFRTkwMDFGMDNEMSAvKiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEODE5Qjk5MTg2Mjc1QjMw
MDFGMDNEMSAvKiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcCAqLzsgfTsKQEAgLTQ4
NSw2ICs0ODcsNyBAQAogCQkyREE5NDRCOTE4ODRFQTM5MDBFRDg2REIgLyogV2ViQmFja0Zvcndh
cmRMaXN0UHJveHlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyREE5NDRCNTE4ODRFQTM1MDBFRDg2REIgLyogV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHlJT1MubW0gKi87IH07CiAJCTJEQTk0NEJBMTg4NEVBM0MwMEVEODZEQiAvKiBXZWJQYWdlSU9T
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0
QjYxODg0RUEzNTAwRUQ4NkRCIC8qIFdlYlBhZ2VJT1MubW0gKi87IH07CiAJCTJEQTk0NEJEMTg4
NTExRTcwMEVEODZEQiAvKiBOZXR3b3JrUHJvY2Vzc0lPUy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NEJDMTg4NTExRTcwMEVEODZEQiAvKiBO
ZXR3b3JrUHJvY2Vzc0lPUy5tbSAqLzsgfTsKKwkJMkRBQ0U2NEUxOEFEQkZGMDAwRTRDQTc2IC8q
IFdLVGh1bWJuYWlsVmlld0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyREFDRTY0RDE4QURCRkYwMDBFNENBNzYgLyogV0tUaHVtYm5haWxW
aWV3SW50ZXJuYWwuaCAqLzsgfTsKIAkJMkRERTBBRkExODI5OENDOTAwRjk3RUFBIC8qIFJlbW90
ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkRERTBBRjgxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVy
VHJlZVByb3BlcnR5QXBwbGllci5oICovOyB9OwogCQkyRERFMEFGQjE4Mjk4Q0M5MDBGOTdFQUEg
LyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTBBRjkxODI5OENDOTAwRjk3RUFBIC8qIFJl
bW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbSAqLzsgfTsKIAkJMkRGOTU5M0IxOEE0MjQx
MjAwOTc4NUExIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERjk1OTM0MThBNDI0MTIwMDk3ODVBMSAv
KiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0gKi87IH07CkBAIC0yMTM4LDYgKzIxNDEsOCBA
QAogCQkyRDQyOUJGQjE3MjFFMkJBMDBFQzY4MUYgLyogUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFBERlBsdWdpblBhc3N3
b3JkRmllbGQubW07IHBhdGggPSBQREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ0N0I1NkExODEwNzE0RTAwM0EzQUVFIC8qIFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJENDdCNTZCMTgxMDcxNEUwMDNBM0FFRSAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDZCMzcxOTE4QTk2N0FEMDA0
MkFFODAgLyogV0tUaHVtYm5haWxWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLVGh1bWJuYWlsVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDZC
MzcxQTE4QTk2N0FEMDA0MkFFODAgLyogV0tUaHVtYm5haWxWaWV3Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tUaHVtYm5haWxWaWV3Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyRDZDRDExNzE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBz
aG90U3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlld1NuYXBzaG90
U3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ2Q0QxMTgxODkwNThBNTAw
RTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gVmlld1NuYXBzaG90U3RvcmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJENzBBQjEzMThBMUQ1MUEwMDAyNkQ2RSAvKiBJbmZvLWlPUy5wbGlzdCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Qu
eG1sOyBwYXRoID0gIkluZm8taU9TLnBsaXN0Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTIxODgsNiArMjE5Myw3IEBACiAJCTJEQTk0NEI1MTg4NEVBMzUwMEVEODZEQiAvKiBXZWJC
YWNrRm9yd2FyZExpc3RQcm94eUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5SU9TLm1tOyBwYXRoID0gaW9zL1dlYkJh
Y2tGb3J3YXJkTGlzdFByb3h5SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
REE5NDRCNjE4ODRFQTM1MDBFRDg2REIgLyogV2ViUGFnZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYlBhZ2VJT1MubW07IHBhdGggPSBpb3MvV2ViUGFn
ZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBOTQ0QkMxODg1MTFFNzAw
RUQ4NkRCIC8qIE5ldHdvcmtQcm9jZXNzSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gTmV0d29ya1Byb2Nlc3NJT1MubW07IHBhdGggPSBOZXR3b3JrUHJvY2Vz
cy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTJEQUNFNjREMThBREJGRjAwMEU0Q0E3NiAvKiBXS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRERFMEFGODE4Mjk4Q0M5MDBGOTdFQUEg
LyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyRERFMEFGOTE4Mjk4Q0M5MDBGOTdFQUEgLyogUmVtb3RlTGF5
ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyREY5NTkzNDE4QTQyNDEyMDA5Nzg1QTEgLyogVmlld0dlc3R1cmVD
b250cm9sbGVySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
Vmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tOyBwYXRoID0gaW9zL1ZpZXdHZXN0dXJlQ29udHJv
bGxlcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzNjUsNiArNDM3MSw5
IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTFBNDNFODI2MTg4
RjM4RTIwMDlFNEQzMCAvKiBEZXByZWNhdGVkICovLAorCQkJCTJENkIzNzE5MThBOTY3QUQwMDQy
QUU4MCAvKiBXS1RodW1ibmFpbFZpZXcuaCAqLywKKwkJCQkyREFDRTY0RDE4QURCRkYwMDBFNENB
NzYgLyogV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaCAqLywKKwkJCQkyRDZCMzcxQTE4QTk2N0FE
MDA0MkFFODAgLyogV0tUaHVtYm5haWxWaWV3Lm1tICovLAogCQkJCTFBNEQ2NjRBMThBMzAzMEUw
MEQ4MkUyMSAvKiBXS0ZyYW1lSW5mby5oICovLAogCQkJCTFBNEQ2NjQ5MThBMzAzMEUwMEQ4MkUy
MSAvKiBXS0ZyYW1lSW5mby5tbSAqLywKIAkJCQkxQTRENjY0RDE4QTMwMzFCMDBEODJFMjEgLyog
V0tGcmFtZUluZm9JbnRlcm5hbC5oICovLApAQCAtNjQzNiw2ICs2NDQ1LDcgQEAKIAkJCQkxQTJE
ODJBNTEyN0Y0RUFCMDAxRUI5NjIgLyogTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBMkQ4NDNBMTI3RjY1RDUwMDFFQjk2MiAvKiBOUE9iamVjdE1lc3NhZ2VS
ZWNlaXZlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTJEODJBNzEyN0Y0RUFCMDAx
RUI5NjIgLyogTlBPYmplY3RQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkQ2QjM3MUIxOEE5
NjdBRDAwNDJBRTgwIC8qIFdLVGh1bWJuYWlsVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEy
RDgyQTkxMjdGNEVBQjAwMUVCOTYyIC8qIE5QUmVtb3RlT2JqZWN0TWFwLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTIxNjFCMDExRjM3NjY0MDA4QUQwRjUgLyogTlBSdW50aW1lT2JqZWN0TWFwLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyREEwNDlCODE4MENDRDBBMDBBQUZBOUUgLyogR3JhcGhpY3NM
YXllckNBUmVtb3RlLmggaW4gSGVhZGVycyAqLywKQEAgLTY1OTYsNiArNjYwNiw3IEBACiAJCQkJ
MUEyNDY0RjMxODkxRTQ1MTAwMjM0QzVCIC8qIEFQSUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxREQ3QjIxMTREQzM5NjAwNUFEQUYzIC8qIFdlYkNvcmVBcmd1bWVudENvZGVy
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyRjU4OUIxMkE4ODM4ODAwNjI5NTMwIC8qIFdlYkNy
ZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTJEQUNFNjRFMThBREJGRjAwMEU0Q0E3NiAv
KiBXS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1NzhCODMx
MjA5RUNFRjAwQTM3QzRBIC8qIEFQSURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2QTI1RkRE
MTJBREM2Q0MwMERDNDBDQyAvKiBXZWJEYXRhYmFzZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUY2MkE3NkI3MTJCMUIyNUYwMDA1RjFCNiAvKiBXZWJEYXRhYmFzZU1hbmFnZXJNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MTQxLDYgKzgxNTIsNyBAQAogCQkJCTUxMEFGRkI5MTY1
NDIwNDgwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkzRjg4OUQxNDE4ODc3OEM5MDBGRUFEQUYgLyogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgxQiAvKiBX
ZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQky
RDZCMzcxQzE4QTk2N0FEMDA0MkFFODAgLyogV0tUaHVtYm5haWxWaWV3Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzc4RTFBM0QxODFFRDZGRjAwMzEwMDdBIC8qIEFQSU9iamVjdC5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxRkIwOEZGMTYzOURFMUEwMEVDMzI0QSAvKiBXZWJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1OTQ3QTcxODdCNTE3NjAwNDM3ODU3
IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuaAppbmRleCAxMGRhZGM3Li5mMWM1ODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtMTA1LDYgKzEwNSw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVy
Rmx1c2goKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFdlYkNv
cmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4JikgeyB9CisKICNpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDb29yZGluYXRlZExheWVyVHJlZUhv
c3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKSA9IDA7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCBkN2JmMWRhLi5iNWJkZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yOTIsNiArMjkyLDggQEAgV2ViUGFnZTo6V2ViUGFnZSh1
aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCiAgICAgLCBtX3ZpZXdTdGF0ZShwYXJhbWV0ZXJzLnZpZXdTdGF0ZSkKICAgICAsIG1fcHJv
Y2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRCeVdlYlByZWZlcmVuY2UoIlByb2Nlc3Mgc3VwcHJlc3Np
b24gaXMgZGlzYWJsZWQuIikKICAgICAsIG1fcGVuZGluZ05hdmlnYXRpb25JRCgwKQorICAgICwg
bV9wcmVUaHVtYm5haWxQYWdlU2NhbGUoMSkKKyAgICAsIG1fdGh1bWJuYWlsU2NhbGUoMSkKIHsK
ICAgICBBU1NFUlQobV9wYWdlSUQpOwogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgbm9uLWlkZWFs
IGxvY2F0aW9uIGZvciB0aGlzIFNldHRpbmcgYW5kCkBAIC00MTg0LDQgKzQxODYsNDQgQEAgUGFz
c1JlZlB0cjxEb2N1bWVudExvYWRlcj4gV2ViUGFnZTo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoRnJh
bWUmIGZyYW1lLCBjb25zdCBSZXMKICAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXIucmVsZWFzZSgp
OwogfQogCit2b2lkIFdlYlBhZ2U6OnNldFRodW1ibmFpbFNjYWxlKGRvdWJsZSBkZXN0aW5hdGlv
blNjYWxlKQoreworICAgIGlmIChkZXN0aW5hdGlvblNjYWxlID09IG1fdGh1bWJuYWlsU2NhbGUp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIFNjYWxpbmcsIHNhdmUgdGhlIHNjYWxlIGFuZCBz
Y3JvbGwgcG9zaXRpb24gdG8gYmUgcmVzdG9yZWQgbGF0ZXIuCisgICAgaWYgKGRlc3RpbmF0aW9u
U2NhbGUgIT0gMSkgeworICAgICAgICBpZiAobV90aHVtYm5haWxTY2FsZSA9PSAxKSB7CisgICAg
ICAgICAgICBtX3ByZVRodW1ibmFpbFBhZ2VTY2FsZSA9IHBhZ2VTY2FsZUZhY3RvcigpOworICAg
ICAgICAgICAgbV9wcmVUaHVtYm5haWxTY3JvbGxQb3NpdGlvbiA9IG1fcGFnZS0+bWFpbkZyYW1l
KCkudmlldygpLT5zY3JvbGxQb3NpdGlvbigpOworICAgICAgICB9CisKKyAgICAgICAgbV90aHVt
Ym5haWxTY2FsZSA9IGRlc3RpbmF0aW9uU2NhbGU7CisKKyAgICAgICAgLy8gU2NhbGUgdGhlIHBh
Z2UsIGJ1dCBsZWF2ZSB0aGUgb3JpZ2luYWwgcGFnZSBzY2FsZSBpbnRhY3QgaWYgdGhlcmUgd2Fz
IGFueS4KKyAgICAgICAgc2NhbGVQYWdlKG1fdGh1bWJuYWlsU2NhbGUgKiBtX3ByZVRodW1ibmFp
bFBhZ2VTY2FsZSwgSW50UG9pbnQoKSk7CisKKyAgICAgICAgLy8gU2Nyb2xsIGFzIGZhciBhcyB3
ZSBjYW4gdG93YXJkcyB0aGUgb3JpZ2luYWwgc2Nyb2xsIHBvc2l0aW9uIGluIHRoZSBzY2FsZWQg
cGFnZS4KKyAgICAgICAgLy8gVGhpcyBtYXkgZ2V0IGNvbnN0cmFpbmVkOyB3ZSdsbCB0cmFuc2Zv
cm0gdGhlIGRyYXdpbmcgYXJlYSB0byBleHBvc2UgdGhlIHJpZ2h0IHBhcnQgb2YgdGhlIHBhZ2Uu
CisgICAgICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT5zZXRTY3JvbGxQb3NpdGlvbihJ
bnRQb2ludChtX3ByZVRodW1ibmFpbFNjcm9sbFBvc2l0aW9uLngoKSAqIG1fdGh1bWJuYWlsU2Nh
bGUsIG1fcHJlVGh1bWJuYWlsU2Nyb2xsUG9zaXRpb24ueSgpICogbV90aHVtYm5haWxTY2FsZSkp
OworCisgICAgICAgIGRvdWJsZSBpbnZlcnNlU2NhbGUgPSAxIC8gbV90aHVtYm5haWxTY2FsZTsK
KyAgICAgICAgSW50UG9pbnQgbmV3U2Nyb2xsUG9zaXRpb24gPSBtX3BhZ2UtPm1haW5GcmFtZSgp
LnZpZXcoKS0+c2Nyb2xsUG9zaXRpb24oKTsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
dHJhbnNmb3JtOworICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKChuZXdTY3JvbGxQb3NpdGlv
bi54KCkgKiBpbnZlcnNlU2NhbGUpIC0gbV9wcmVUaHVtYm5haWxTY3JvbGxQb3NpdGlvbi54KCks
IChuZXdTY3JvbGxQb3NpdGlvbi55KCkgKiBpbnZlcnNlU2NhbGUpIC0gbV9wcmVUaHVtYm5haWxT
Y3JvbGxQb3NpdGlvbi55KCkpOworICAgICAgICB0cmFuc2Zvcm0uc2NhbGUoaW52ZXJzZVNjYWxl
KTsKKworICAgICAgICBkcmF3aW5nQXJlYSgpLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFVuc2NhbGluZywgcmVzdG9yZSB0aGUgb3Jp
Z2luYWwgc2NhbGUgYW5kIHNjcm9sbCBwb3NpdGlvbi4KKyAgICBpZiAoZGVzdGluYXRpb25TY2Fs
ZSA9PSAxICYmIG1fdGh1bWJuYWlsU2NhbGUgIT0gMSkgeworICAgICAgICBzY2FsZVBhZ2UobV9w
cmVUaHVtYm5haWxQYWdlU2NhbGUsIEludFBvaW50KCkpOworICAgICAgICBtX3BhZ2UtPm1haW5G
cmFtZSgpLnZpZXcoKS0+c2V0U2Nyb2xsUG9zaXRpb24obV9wcmVUaHVtYm5haWxTY3JvbGxQb3Np
dGlvbik7CisgICAgICAgIGRyYXdpbmdBcmVhKCktPnNldFRyYW5zZm9ybShUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpKTsKKyAgICAgICAgbV90aHVtYm5haWxTY2FsZSA9IDE7CisgICAgfQorfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IDQ0MGI4ZmQuLmYwZDEyYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMzc2LDYgKzM3Niw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldExheWVySG9zdGluZ01vZGUodW5zaWduZWQpOwogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCisgICAgdm9pZCBzZXRUaHVtYm5haWxTY2FsZShkb3VibGUpOwogICAgIHZvaWQgdXBkYXRl
UGx1Z2luc0FjdGl2ZUFuZEZvY3VzZWRTdGF0ZSgpOwogICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgd2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzKCkgY29uc3QgeyByZXR1cm4gbV93
aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0ZXM7IH0KICAgICBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIHdpbmRvd0ZyYW1lSW5VbmZsaXBwZWRTY3JlZW5Db29yZGluYXRlcygpIGNvbnN0IHsg
cmV0dXJuIG1fd2luZG93RnJhbWVJblVuZmxpcHBlZFNjcmVlbkNvb3JkaW5hdGVzOyB9CkBAIC0x
MDkzLDYgKzEwOTQsMTAgQEAgcHJpdmF0ZToKICAgICBVc2VyQWN0aXZpdHkgbV9wcm9jZXNzU3Vw
cHJlc3Npb25EaXNhYmxlZEJ5V2ViUHJlZmVyZW5jZTsKIAogICAgIHVpbnQ2NF90IG1fcGVuZGlu
Z05hdmlnYXRpb25JRDsKKworICAgIGRvdWJsZSBtX3ByZVRodW1ibmFpbFBhZ2VTY2FsZTsKKyAg
ICBXZWJDb3JlOjpJbnRQb2ludCBtX3ByZVRodW1ibmFpbFNjcm9sbFBvc2l0aW9uOworICAgIGRv
dWJsZSBtX3RodW1ibmFpbFNjYWxlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCmluZGV4IGQyOWI3OWUuLjdjZGVlZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zMjUsNCArMzI1LDYg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0TWFpbkZyYW1l
SW5WaWV3U291cmNlTW9kZShib29sIGluVmlld1NvdXJjZU1vZGUpCiAgICAgCiAgICAgU2V0U2Ny
b2xsUGlubmluZ0JlaGF2aW9yKHVpbnQzMl90IHBpbm5pbmcpCisKKyAgICBTZXRUaHVtYm5haWxT
Y2FsZShkb3VibGUgc2NhbGUpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhLmgKaW5kZXggZTUwZWI3Ni4uMTA3NjcyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTGF5
ZXJGbHVzaFNjaGVkdWxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTGF5ZXJGbHVzaFNjaGVkdWxl
ckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTExMyw2ICsxMTQsOCBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6
RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJyaWRlOwogICAgIHZvaWQgYXBwbHlUcmFuc2llbnRab29t
VG9QYWdlKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOwogCisgICAg
dmlydHVhbCB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYpIG92ZXJyaWRlOworCiAgICAgdm9pZCB1cGRhdGVMYXllckhvc3RpbmdDb250ZXh0KCk7
CiAKICAgICB2b2lkIHNldFJvb3RDb21wb3NpdGluZ0xheWVyKENBTGF5ZXIgKik7CkBAIC0xMzIs
MTcgKzEzNSwxNyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGlu
Z0NvbnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4dDsKIAorICAgIFJldGFpblB0cjxDQUxheWVy
PiBtX2hvc3RpbmdMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9yb290TGF5ZXI7Ci0g
ICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fcGVuZGluZ1Jvb3RDb21wb3NpdGluZ0xheWVyOwotCiAg
ICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fZGVidWdJbmZvTGF5ZXI7CiAKKyAgICBSZXRhaW5QdHI8
Q0FMYXllcj4gbV9wZW5kaW5nUm9vdExheWVyOworCiAgICAgdHlwZWRlZiBIYXNoTWFwPFBhZ2VP
dmVybGF5Kiwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+PiBQYWdlT3Zl
cmxheUxheWVyTWFwOwogICAgIFBhZ2VPdmVybGF5TGF5ZXJNYXAgbV9wYWdlT3ZlcmxheUxheWVy
czsKICAgICBtdXRhYmxlIEhhc2hNYXA8Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIFJl
dGFpblB0cjxDQUxheWVyPj4gbV9wYWdlT3ZlcmxheVBsYXRmb3JtTGF5ZXJzOwogCiAgICAgYm9v
bCBtX2lzUGFpbnRpbmdTdXNwZW5kZWQ7Ci0gICAgYm9vbCBtX2hhc1Jvb3RDb21wb3NpdGluZ0xh
eWVyOwogCiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fZXhwb3NlZFJlY3Q7CiAgICAgV2ViQ29y
ZTo6RmxvYXRSZWN0IG1fc2Nyb2xsZWRFeHBvc2VkUmVjdDsKQEAgLTE1Myw2ICsxNTYsOCBAQCBw
cml2YXRlOgogCiAgICAgZG91YmxlIG1fdHJhbnNpZW50Wm9vbVNjYWxlOwogICAgIFdlYkNvcmU6
OkZsb2F0UG9pbnQgbV90cmFuc2llbnRab29tT3JpZ2luOworCisgICAgV2ViQ29yZTo6VHJhbnNm
b3JtYXRpb25NYXRyaXggbV90cmFuc2Zvcm07CiB9OwogCiBEUkFXSU5HX0FSRUFfVFlQRV9DQVNU
UyhUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSwgdHlwZSgpID09IERyYXdpbmdBcmVhVHlw
ZVRpbGVkQ29yZUFuaW1hdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5tbQppbmRleCBiMzFkZmMwLi45YWQ3ZTFhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC03OCwxMiArNzgsMTAgQEAgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKFdlYlBhZ2UqIHdl
YlBhZ2UsIGMKIHsKICAgICBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCkuc2V0Rm9y
Y2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7CiAKLSAgICBtX3Jvb3RMYXllciA9IFtDQUxheWVyIGxh
eWVyXTsKLQotICAgIENHUmVjdCByb290TGF5ZXJGcmFtZSA9IG1fd2ViUGFnZS0+Ym91bmRzKCk7
Ci0gICAgbV9yb290TGF5ZXIuZ2V0KCkuZnJhbWUgPSByb290TGF5ZXJGcmFtZTsKLSAgICBtX3Jv
b3RMYXllci5nZXQoKS5vcGFxdWUgPSBZRVM7Ci0gICAgbV9yb290TGF5ZXIuZ2V0KCkuZ2VvbWV0
cnlGbGlwcGVkID0gWUVTOworICAgIG1faG9zdGluZ0xheWVyID0gW0NBTGF5ZXIgbGF5ZXJdOwor
ICAgIFttX2hvc3RpbmdMYXllciBzZXRGcmFtZTptX3dlYlBhZ2UtPmJvdW5kcygpXTsKKyAgICBb
bV9ob3N0aW5nTGF5ZXIgc2V0T3BhcXVlOllFU107CisgICAgW21faG9zdGluZ0xheWVyIHNldEdl
b21ldHJ5RmxpcHBlZDpZRVNdOwogCiAgICAgdXBkYXRlTGF5ZXJIb3N0aW5nQ29udGV4dCgpOwog
ICAgIHNldENvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKTsKQEAgLTEyNCwxNCArMTIy
LDE0IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpZENoYW5nZVNjcm9s
bE9mZnNldEZvckFueUZyYW1lKCkKIAogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YTo6c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikK
IHsKLSAgICBDQUxheWVyICpyb290Q29tcG9zaXRpbmdMYXllciA9IGdyYXBoaWNzTGF5ZXIgPyBn
cmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiBuaWw7CisgICAgQ0FMYXllciAqcm9vdExh
eWVyID0gZ3JhcGhpY3NMYXllciA/IGdyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSA6IG5p
bDsKIAogICAgIGlmIChtX2xheWVyVHJlZVN0YXRlSXNGcm96ZW4pIHsKLSAgICAgICAgbV9wZW5k
aW5nUm9vdENvbXBvc2l0aW5nTGF5ZXIgPSByb290Q29tcG9zaXRpbmdMYXllcjsKKyAgICAgICAg
bV9wZW5kaW5nUm9vdExheWVyID0gcm9vdExheWVyOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIocm9vdENvbXBvc2l0aW5nTGF5ZXIpOworICAg
IHNldFJvb3RDb21wb3NpdGluZ0xheWVyKHJvb3RMYXllcik7CiB9CiAKIHZvaWQgVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE6OmZvcmNlUmVwYWludCgpCkBAIC0yMjEsNyArMjE5LDcgQEAg
dm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0UGFnZU92ZXJsYXlOZWVkc0Rp
c3BsYXkoUGFnZU92ZXJsYXkqIHBhZ2UKIAogICAgIGlmICghbGF5ZXItPmRyYXdzQ29udGVudCgp
KSB7CiAgICAgICAgIGxheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7Ci0gICAgICAgIGxheWVy
LT5zZXRTaXplKGV4cGFuZGVkSW50U2l6ZShGbG9hdFNpemUobV9yb290TGF5ZXIuZ2V0KCkuZnJh
bWUuc2l6ZSkpKTsKKyAgICAgICAgbGF5ZXItPnNldFNpemUoZXhwYW5kZWRJbnRTaXplKEZsb2F0
U2l6ZShtX2hvc3RpbmdMYXllci5nZXQoKS5mcmFtZS5zaXplKSkpOwogICAgIH0KIAogICAgIGxh
eWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7CkBAIC0zODAsMTIgKzM3OCwxMiBAQCBi
b29sIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpmbHVzaExheWVycygpCiAKICAgICBt
X3dlYlBhZ2UtPmxheW91dElmTmVlZGVkKCk7CiAKLSAgICBpZiAobV9wZW5kaW5nUm9vdENvbXBv
c2l0aW5nTGF5ZXIpIHsKLSAgICAgICAgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIobV9wZW5kaW5n
Um9vdENvbXBvc2l0aW5nTGF5ZXIuZ2V0KCkpOwotICAgICAgICBtX3BlbmRpbmdSb290Q29tcG9z
aXRpbmdMYXllciA9IG51bGxwdHI7CisgICAgaWYgKG1fcGVuZGluZ1Jvb3RMYXllcikgeworICAg
ICAgICBzZXRSb290Q29tcG9zaXRpbmdMYXllcihtX3BlbmRpbmdSb290TGF5ZXIuZ2V0KCkpOwor
ICAgICAgICBtX3BlbmRpbmdSb290TGF5ZXIgPSBudWxscHRyOwogICAgIH0KIAotICAgIEZsb2F0
UmVjdCB2aXNpYmxlUmVjdCA9IFttX3Jvb3RMYXllciBmcmFtZV07CisgICAgRmxvYXRSZWN0IHZp
c2libGVSZWN0ID0gW21faG9zdGluZ0xheWVyIGZyYW1lXTsKICAgICB2aXNpYmxlUmVjdC5pbnRl
cnNlY3QobV9zY3JvbGxlZEV4cG9zZWRSZWN0KTsKIAogICAgIGZvciAoUGFnZU92ZXJsYXlMYXll
ck1hcDo6aXRlcmF0b3IgaXQgPSBtX3BhZ2VPdmVybGF5TGF5ZXJzLmJlZ2luKCksIGVuZCA9IG1f
cGFnZU92ZXJsYXlMYXllcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewpAQCAtNDE0LDggKzQx
Miw4IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnN1c3BlbmRQYWludGlu
ZygpCiAgICAgQVNTRVJUKCFtX2lzUGFpbnRpbmdTdXNwZW5kZWQpOwogICAgIG1faXNQYWludGlu
Z1N1c3BlbmRlZCA9IHRydWU7CiAKLSAgICBbbV9yb290TGF5ZXIgc2V0VmFsdWU6KGlkKWtDRkJv
b2xlYW5UcnVlIGZvcktleTpAIk5TQ0FWaWV3UmVuZGVyUGF1c2VkIl07Ci0gICAgW1tOU05vdGlm
aWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpAIk5TQ0FW
aWV3UmVuZGVyRGlkUGF1c2VOb3RpZmljYXRpb24iIG9iamVjdDpuaWwgdXNlckluZm86W05TRGlj
dGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDptX3Jvb3RMYXllci5nZXQoKSBmb3JLZXk6QCJs
YXllciJdXTsKKyAgICBbbV9ob3N0aW5nTGF5ZXIgc2V0VmFsdWU6QFlFUyBmb3JLZXk6QCJOU0NB
Vmlld1JlbmRlclBhdXNlZCJdOworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENl
bnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6QCJOU0NBVmlld1JlbmRlckRpZFBhdXNlTm90aWZp
Y2F0aW9uIiBvYmplY3Q6bmlsIHVzZXJJbmZvOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhP
YmplY3Q6bV9ob3N0aW5nTGF5ZXIuZ2V0KCkgZm9yS2V5OkAibGF5ZXIiXV07CiB9CiAKIHZvaWQg
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnJlc3VtZVBhaW50aW5nKCkKQEAgLTQyNyw4
ICs0MjUsOCBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpyZXN1bWVQYWlu
dGluZygpCiAgICAgfQogICAgIG1faXNQYWludGluZ1N1c3BlbmRlZCA9IGZhbHNlOwogCi0gICAg
W21fcm9vdExheWVyIHNldFZhbHVlOihpZClrQ0ZCb29sZWFuRmFsc2UgZm9yS2V5OkAiTlNDQVZp
ZXdSZW5kZXJQYXVzZWQiXTsKLSAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50
ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOkAiTlNDQVZpZXdSZW5kZXJEaWRSZXN1bWVOb3RpZmlj
YXRpb24iIG9iamVjdDpuaWwgdXNlckluZm86W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9i
amVjdDptX3Jvb3RMYXllci5nZXQoKSBmb3JLZXk6QCJsYXllciJdXTsKKyAgICBbbV9ob3N0aW5n
TGF5ZXIgc2V0VmFsdWU6QE5PIGZvcktleTpAIk5TQ0FWaWV3UmVuZGVyUGF1c2VkIl07CisgICAg
W1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFt
ZTpAIk5TQ0FWaWV3UmVuZGVyRGlkUmVzdW1lTm90aWZpY2F0aW9uIiBvYmplY3Q6bmlsIHVzZXJJ
bmZvOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6bV9ob3N0aW5nTGF5ZXIuZ2V0
KCkgZm9yS2V5OkAibGF5ZXIiXV07CiB9CiAKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OnNldEV4cG9zZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZXhwb3NlZFJlY3QpCkBAIC00
OTgsNyArNDk2LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRl
R2VvbWV0cnkoY29uc3QgSW50U2l6ZSYgdmlld1NpemUsIGNvbnMKICAgICBbQ0FUcmFuc2FjdGlv
biBiZWdpbl07CiAgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKIAot
ICAgIG1fcm9vdExheWVyLmdldCgpLmZyYW1lID0gQ0dSZWN0TWFrZShsYXllclBvc2l0aW9uLndp
ZHRoKCksIGxheWVyUG9zaXRpb24uaGVpZ2h0KCksIHZpZXdTaXplLndpZHRoKCksIHZpZXdTaXpl
LmhlaWdodCgpKTsKKyAgICBbbV9ob3N0aW5nTGF5ZXIgc2V0RnJhbWU6Q0dSZWN0TWFrZShsYXll
clBvc2l0aW9uLndpZHRoKCksIGxheWVyUG9zaXRpb24uaGVpZ2h0KCksIHZpZXdTaXplLndpZHRo
KCksIHZpZXdTaXplLmhlaWdodCgpKV07CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwog
ICAgIApAQCAtNTU5LDggKzU1Nyw4IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OnVwZGF0ZUxheWVySG9zdGluZ0NvbnRleHQoKQogI2VuZGlmCiAgICAgfQogCi0gICAgaWYg
KG1faGFzUm9vdENvbXBvc2l0aW5nTGF5ZXIpCi0gICAgICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4
dC0+c2V0Um9vdExheWVyKG1fcm9vdExheWVyLmdldCgpKTsKKyAgICBpZiAobV9yb290TGF5ZXIp
CisgICAgICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Um9vdExheWVyKG1faG9zdGluZ0xh
eWVyLmdldCgpKTsKIAogICAgIGlmIChjb2xvclNwYWNlKQogICAgICAgICBtX2xheWVySG9zdGlu
Z0NvbnRleHQtPnNldENvbG9yU3BhY2UoY29sb3JTcGFjZS5nZXQoKSk7CkBAIC01NzAsMTkgKzU2
OCwyMCBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRSb290Q29tcG9z
aXRpbmdMYXllcihDQUxheWVyICpsYXllcikKIHsKICAgICBBU1NFUlQoIW1fbGF5ZXJUcmVlU3Rh
dGVJc0Zyb3plbik7CiAKLSAgICBib29sIGhhZFJvb3RDb21wb3NpdGluZ0xheWVyID0gbV9oYXNS
b290Q29tcG9zaXRpbmdMYXllcjsKLSAgICBtX2hhc1Jvb3RDb21wb3NpdGluZ0xheWVyID0gISFs
YXllcjsKLQogICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKICAgICBbQ0FUcmFuc2FjdGlvbiBz
ZXREaXNhYmxlQWN0aW9uczpZRVNdOwogCi0gICAgbV9yb290TGF5ZXIuZ2V0KCkuc3VibGF5ZXJz
ID0gbV9oYXNSb290Q29tcG9zaXRpbmdMYXllciA/IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDps
YXllcl0gOiBbTlNBcnJheSBhcnJheV07CisgICAgW21faG9zdGluZ0xheWVyIHNldFN1YmxheWVy
czpsYXllciA/IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpsYXllcl0gOiBbTlNBcnJheSBhcnJh
eV1dOworCisgICAgYm9vbCBoYWRSb290TGF5ZXIgPSAhIW1fcm9vdExheWVyOworICAgIG1fcm9v
dExheWVyID0gbGF5ZXI7CisgICAgW21fcm9vdExheWVyIHNldFN1YmxheWVyVHJhbnNmb3JtOm1f
dHJhbnNmb3JtXTsKIAotICAgIGlmIChoYWRSb290Q29tcG9zaXRpbmdMYXllciAhPSBtX2hhc1Jv
b3RDb21wb3NpdGluZ0xheWVyKQotICAgICAgICBtX2xheWVySG9zdGluZ0NvbnRleHQtPnNldFJv
b3RMYXllcihtX2hhc1Jvb3RDb21wb3NpdGluZ0xheWVyID8gbV9yb290TGF5ZXIuZ2V0KCkgOiAw
KTsKKyAgICBpZiAoaGFkUm9vdExheWVyICE9ICEhbGF5ZXIpCisgICAgICAgIG1fbGF5ZXJIb3N0
aW5nQ29udGV4dC0+c2V0Um9vdExheWVyKGxheWVyID8gbV9ob3N0aW5nTGF5ZXIuZ2V0KCkgOiAw
KTsKIAogICAgIGZvciAoUGFnZU92ZXJsYXlMYXllck1hcDo6aXRlcmF0b3IgaXQgPSBtX3BhZ2VP
dmVybGF5TGF5ZXJzLmJlZ2luKCksIGVuZCA9IG1fcGFnZU92ZXJsYXlMYXllcnMuZW5kKCk7IGl0
ICE9IGVuZDsgKytpdCkKLSAgICAgICAgW21fcm9vdExheWVyIGFkZFN1YmxheWVyOml0LT52YWx1
ZS0+cGxhdGZvcm1MYXllcigpXTsKKyAgICAgICAgW21faG9zdGluZ0xheWVyIGFkZFN1YmxheWVy
Oml0LT52YWx1ZS0+cGxhdGZvcm1MYXllcigpXTsKIAogICAgIGlmIChUaWxlZEJhY2tpbmcqIHRp
bGVkQmFja2luZyA9IG1haW5GcmFtZVRpbGVkQmFja2luZygpKQogICAgICAgICB0aWxlZEJhY2tp
bmctPnNldEFnZ3Jlc3NpdmVseVJldGFpbnNUaWxlcyhtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNl
dHRpbmdzKCkuYWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkKCkpOwpAQCAtNjA4LDcgKzYw
Nyw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNyZWF0ZVBhZ2VPdmVy
bGF5TGF5ZXIoUGFnZU92ZXJsYXkqIHBhZ2VPdmVyCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5d
OwogICAgIFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107CiAKLSAgICBbbV9y
b290TGF5ZXIgYWRkU3VibGF5ZXI6bGF5ZXItPnBsYXRmb3JtTGF5ZXIoKV07CisgICAgW21faG9z
dGluZ0xheWVyIGFkZFN1YmxheWVyOmxheWVyLT5wbGF0Zm9ybUxheWVyKCldOwogCiAgICAgW0NB
VHJhbnNhY3Rpb24gY29tbWl0XTsKIApAQCAtNjQzLDcgKzY0Miw3IEBAIHZvaWQgVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE6OmRpZENvbW1pdENoYW5nZXNGb3JMYXllcihjb25zdCBHcmFw
aGljc0xheWVyCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAgIFtDQVRyYW5zYWN0aW9u
IHNldERpc2FibGVBY3Rpb25zOllFU107CiAKLSAgICBbbV9yb290TGF5ZXIgaW5zZXJ0U3VibGF5
ZXI6bGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSBhYm92ZTpvbGRQbGF0Zm9ybUxheWVyLmdldCgpXTsK
KyAgICBbbV9ob3N0aW5nTGF5ZXIgaW5zZXJ0U3VibGF5ZXI6bGF5ZXItPnBsYXRmb3JtTGF5ZXIo
KSBhYm92ZTpvbGRQbGF0Zm9ybUxheWVyLmdldCgpXTsKICAgICBbb2xkUGxhdGZvcm1MYXllciBy
ZW1vdmVGcm9tU3VwZXJsYXllcl07CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwpAQCAt
NjY5LDcgKzY2OCw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0
ZURlYnVnSW5mb0xheWVyKGJvb2wgc2hvd0xheWVyKQogI2lmbmRlZiBOREVCVUcKICAgICAgICAg
ICAgIFttX2RlYnVnSW5mb0xheWVyIHNldE5hbWU6QCJEZWJ1ZyBJbmZvIl07CiAjZW5kaWYKLSAg
ICAgICAgICAgIFttX3Jvb3RMYXllciBhZGRTdWJsYXllcjptX2RlYnVnSW5mb0xheWVyLmdldCgp
XTsKKyAgICAgICAgICAgIFttX2hvc3RpbmdMYXllciBhZGRTdWJsYXllcjptX2RlYnVnSW5mb0xh
eWVyLmdldCgpXTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobV9kZWJ1Z0luZm9MYXllcikg
ewogICAgICAgICBbbV9kZWJ1Z0luZm9MYXllciByZW1vdmVGcm9tU3VwZXJsYXllcl07CkBAIC02
ODgsNyArNjg3LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWRqdXN0
VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZsb2F0UG9pbnQKICAgICAvLyBGSVhNRTogS2Vl
cCBhcm91bmQgcGFnZVNjYWxlPTEgdGlsZXMgc28gd2UgY2FuIHpvb20gb3V0IHdpdGhvdXQgZ2Fw
cy4KICAgICAvLyBGSVhNRTogQnJpbmcgaW4gdW5wYXJlbnRlZC1idXQtcGFpbnRlZCB0aWxlcyB3
aGVuIHpvb21pbmcgb3V0LCB0byBmaWxsIGluIGFueSBnYXBzLgogCi0gICAgaWYgKCFtX3Jvb3RM
YXllcikKKyAgICBpZiAoIW1faG9zdGluZ0xheWVyKQogICAgICAgICByZXR1cm47CiAKICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CkBAIC04MjcsNiArODI2LDEyIEBAIHZvaWQg
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFwcGx5VHJhbnNpZW50Wm9vbVRvUGFnZShk
b3VibGUgc2NhbGUsIEZsb2F0CiAgICAgbV90cmFuc2llbnRab29tU2NhbGUgPSAxOwogfQogCit2
b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRUcmFuc2Zvcm0oY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKK3sKKyAgICBtX3RyYW5zZm9ybSA9IHRyYW5z
Zm9ybTsKKyAgICBbbV9yb290TGF5ZXIgc2V0U3VibGF5ZXJUcmFuc2Zvcm06dHJhbnNmb3JtXTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224412</attachid>
            <date>2014-02-17 12:07:01 -0800</date>
            <delta_ts>2014-02-18 14:32:55 -0800</delta_ts>
            <desc>build fix</desc>
            <filename>thumbnail.diff</filename>
            <type>text/plain</type>
            <size>48195</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiMDlhMjI0Li41ZmQ1ZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE4
IEBACisyMDE0LTAyLTE0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBhIHdheSB0byBlZmZpY2llbnRseSB0aHVtYm5haWwgV0tWaWV3cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4ODMxCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8xNTY2OTY1NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5haWxW
aWV3Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tUaHVtYm5haWxW
aWV3Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV0tUaHVtYm5haWxWaWV3IGluaXRXaXRoRnJhbWU6
ZnJvbVdLVmlldzpdKToKKyAgICAgICAgKC1bV0tUaHVtYm5haWxWaWV3IF92aWV3V2FzVW5wYXJl
bnRlZF0pOgorICAgICAgICAoLVtXS1RodW1ibmFpbFZpZXcgX3ZpZXdXYXNQYXJlbnRlZF0pOgor
ICAgICAgICAoLVtXS1RodW1ibmFpbFZpZXcgdmlld0RpZE1vdmVUb1dpbmRvd10pOgorICAgICAg
ICAoLVtXS1RodW1ibmFpbFZpZXcgc2V0U2NhbGU6XSk6CisgICAgICAgICgtW1dLVGh1bWJuYWls
VmlldyBzZXRUaHVtYm5haWxMYXllcjpdKToKKyAgICAgICAgKC1bV0tUaHVtYm5haWxWaWV3IHRo
dW1ibmFpbExheWVyXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1RodW1ibmFp
bFZpZXdJbnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgQWRkIFdLVGh1bWJuYWlsVmlldy4KKyAg
ICAgICAgQ2xpZW50cyBvZiB0aGlzIHByaXZhdGUgQVBJIHdpbGwgY2FsbCBpbml0V2l0aEZyYW1l
OmZyb21XS1ZpZXc6LAorICAgICAgICBnaXZpbmcgdGhlIFdLVmlldyB0aGV5IHdpc2ggdG8gYm9y
cm93IGNvbnRlbnRzIGZyb20uCisgICAgICAgIFRoZXkgY2FuIGFsc28gY2FsbCBzZXRTY2FsZTog
dG8gc2V0IHRoZSBzY2FsZSB0aGF0IHdpbGwgYmUgdXNlZCB0byByZW5kZXIKKyAgICAgICAgdGhl
IGNvbnRlbnQgaW4gYW4gaW1wbGVtZW50YXRpb24tZGVmaW5lZCBzZXQgb2YgY2FzZXMgKGN1cnJl
bnRseSwgd2Ugd2lsbAorICAgICAgICB1c2UgdGhlIGxvdyByZXNvbHV0aW9uIHNjYWxlIGZvciBX
S1ZpZXdzIHdoaWNoIHdlcmUgbm90IHBhcmVudGVkIHdoZW4gdGhlCisgICAgICAgIFdLVGh1bWJu
YWlsVmlldyB3YXMgY3JlYXRlZDsgcGFyZW50ZWQgV0tWaWV3cyB3aWxsIHVzZSB0aGUgZXhpc3Rp
bmcgc2NhbGUpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwu
bW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUp
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6aXNWaWV3VmlzaWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdWaXNpYmxlT3JPY2NsdWRlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdJbldpbmRvdyk6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp2aWV3TGF5ZXJIb3N0aW5nTW9kZSk6CisgICAgICAg
IElmIHRoZSBXS1ZpZXcgaGFzIGFuIGFjdGl2ZWx5LXBhcmVudGVkIFdLVGh1bWJuYWlsVmlldyBh
dHRhY2hlZCB0byBpdCwKKyAgICAgICAgd2Ugc2hvdWxkIGRldGVybWluZSB2aWV3IHZpc2liaWxp
dHkvZXRjLiB1c2luZyB0aGF0IHZpZXcgaW5zdGVhZCBvZiB0aGUgV0tWaWV3LgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgZGVhbGxv
Y10pOgorICAgICAgICBXS1RodW1ibmFpbFZpZXcgaG9sZHMgb24gdG8gdGhlIFdLVmlldywgYW5k
IGNsZWFycyBXS1ZpZXcncyBiYWNrcG9pbnRlcgorICAgICAgICB3aGVuIGl0IGxlYXZlcyB0aGUg
d2luZG93LCBzbyB3ZSBzaG91bGQgbmV2ZXIgc2VlIFdLVmlldyBnZXQgZGVhbGxvY2F0ZWQKKyAg
ICAgICAgd2l0aCBhIGxpdmUgdGh1bWJuYWlsIHZpZXcuCisKKyAgICAgICAgKC1bV0tWaWV3IHNj
cm9sbFdoZWVsOl0pOgorICAgICAgICAoLVtXS1ZpZXcgbW91c2VNb3ZlZDpdKToKKyAgICAgICAg
KC1bV0tWaWV3IG1vdXNlRG93bjpdKToKKyAgICAgICAgKC1bV0tWaWV3IG1vdXNlVXA6XSk6Cisg
ICAgICAgICgtW1dLVmlldyBtb3VzZURyYWdnZWQ6XSk6CisgICAgICAgIERvbid0IGhhbmRsZSBl
dmVudHMgd2hpbGUgdGh1bWJuYWlsZWQuCisKKyAgICAgICAgKC1bV0tWaWV3IF9zZXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllcjpdKToKKyAgICAgICAgRm9yd2FyZCByb290IGxh
eWVyIGNoYW5nZXMgdG8gdGhlIGluc3RhbGxlZCB0aHVtYm5haWwgdmlldy4KKworICAgICAgICAo
LVtXS1ZpZXcgX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlUm9vdExheWVyXSk6CisgICAgICAg
IF9hY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllciBzaG91bGQgcmV0dXJuIHRoZSBz
YW1lIGxheWVyCisgICAgICAgIHRoYXQgd2FzIHNldCB2aWEgX3NldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlUm9vdExheWVyOiwgbm90IGl0cyBwYXJlbnQuCisKKyAgICAgICAgKC1bV0tWaWV3
IF9zZXRUaHVtYm5haWxWaWV3Ol0pOgorICAgICAgICAoLVtXS1ZpZXcgX3RodW1ibmFpbFZpZXdd
KToKKyAgICAgICAgSW5zdGFsbC91bmluc3RhbGwgYSBXS1RodW1ibmFpbFZpZXcuIEhhbmQgaXQg
b3VyIHJvb3QgbGF5ZXIgaWYgaW5zdGFsbGluZywKKyAgICAgICAgb3IgcmVjb3ZlciBpdCBmcm9t
IHRoZSBkZXBhcnRpbmcgdGh1bWJuYWlsIHZpZXcgaWYgdW5pbnN0YWxsaW5nLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgQWRkIGluIGEg
bWlzc2luZyBSZXRhaW5QdHIuaCBpbmNsdWRlIHRoYXQgSSBtaXNzZWQgZWFybGllciBhbmQgY2F1
c2VzIHRyb3VibGUuCisgICAgICAgIEFkZCBXS1ZpZXcgX3RodW1ibmFpbFZpZXcgYW5kIF9zZXRU
aHVtYm5haWxWaWV3Oi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFRodW1ibmFpbFNjYWxlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6bWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyk6CisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlld0dl
c3R1cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2VzdHVyZSk6CisgICAgICAgIChXZWJLaXQ6OlZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFuZGxlU3dpcGVHZXN0dXJlKToKKyAgICAgICAgU3dpcGUg
d2FzIGFjY2lkZW50YWxseSBkZXBlbmRpbmcgb24gYSBtaXN0YWtlIGluIFdLVmlldydzCisgICAg
ICAgIF9hY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllciB3aGVyZSBpdCB3YXMgcmV0
dXJuaW5nIHRoZSB3cm9uZyBsYXllci4KKyAgICAgICAgVGhlIGFjdHVhbCByb290IGxheWVyIGRv
ZXNuJ3QgaGF2ZSBhIHNpemUsIHNvIHdlIHNob3VsZCB1c2UgdGhlIGRyYXdpbmcKKyAgICAgICAg
YXJlYSdzIHNpemUgaW5zdGVhZC4KKworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgQWRkIHNvbWUgbmV3IGZpbGVzLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpX
ZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0VGh1bWJuYWlsU2NhbGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgIEFwcGx5IHRoZSB0aHVt
Ym5haWwgc2NhbGUgdG8gdGhlIHBhZ2UuIElmIHdlJ3JlIGN1cnJlbnRseSBub3QgaW4KKyAgICAg
ICAgdGh1bWJuYWlsIHNjYWxpbmcgbW9kZSwgc2F2ZSB0aGUgY3VycmVudCBwYWdlIHNjYWxlIGFu
ZCBzY3JvbGwgcG9zaXRpb24KKyAgICAgICAgc28gd2UgY2FuIHJlc3RvcmUgdGhlbSBvbmNlIHdl
IGxlYXZlIHRodW1ibmFpbCBtb2RlIGFnYWluLgorICAgICAgICBUcmFuc2Zvcm0gdGhlIERyYXdp
bmdBcmVhIHNvIHRoYXQgdGhlIHBhZ2UgYXBwZWFycyBhdCB0aGUgc2FtZQorICAgICAgICBwb3Np
dGlvbiBhbmQgc2l6ZSwgYnV0IHNjYWxlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9EcmF3aW5nQXJlYS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6c2V0VHJhbnNm
b3JtKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWE6OnNldFRyYW5zZm9ybSk6CisgICAgICAgIEFkZCBhIERyYXdpbmdB
cmVhIG1ldGhvZCB0byBhcHBseSBhbiBhcmJpdHJhcnkgdHJhbnNmb3JtIHRvIHRoZSBkcmF3aW5n
IGFyZWEuCisKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6
OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKToKKyAgICAg
ICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldFBhZ2VPdmVybGF5
TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE6OnN1c3BlbmRQYWludGluZyk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpyZXN1bWVQYWludGluZyk6CisgICAgICAgIChXZWJLaXQ6
OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVHZW9tZXRyeSk6CisgICAgICAg
IChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVMYXllckhvc3Rp
bmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OmNyZWF0ZVBhZ2VPdmVybGF5TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6ZGlkQ29tbWl0Q2hhbmdlc0ZvckxheWVyKToKKyAgICAgICAg
KFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZURlYnVnSW5mb0xh
eWVyKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFk
anVzdFRyYW5zaWVudFpvb20pOgorICAgICAgICBSZW1vdmUgdGhlIHdvcmQgImNvbXBvc2l0aW5n
IiBpbiBhIGJ1bmNoIG9mIHBsYWNlcyB3aGVyZSBpdCBpc24ndCBuZWVkZWQuCisgICAgICAgIFJl
bmFtZSBtX3Jvb3RMYXllciB0byBtX2hvc3RpbmdMYXllciwgYW5kIHJlcHVycG9zZSBtX3Jvb3RM
YXllciB0byBzdG9yZQorICAgICAgICB0aGUgcm9vdCBjb21wb3NpdGluZyBsYXllciBhY3R1YWxs
eSBwYXNzZWQgaW4gdmlhIHNldFJvb3RDb21wb3NpdGluZ0xheWVyLgorICAgICAgICBSZW5hbWUg
bV9wZW5kaW5nUm9vdENvbXBvc2l0aW5nTGF5ZXIgdG8gbV9wZW5kaW5nUm9vdExheWVyLgorCiAy
MDE0LTAyLTE3ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAg
ICAgV2ViS2l0R1RLKyBzaG91bGQgc3RvcCBjYWxsaW5nIGZ1bmN0aW9ucyB0byBzZXQgdGhlIHZp
ZXcgc291cmNlIG1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tUaHVtYm5haWxWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVGh1bWJuYWlsVmlldy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmEyNDk0MWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVGh1bWJuYWlsVmlldy5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0IDxXZWJLaXQyL1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKwor
I2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgorCitAY2xhc3MgV0tWaWV3OworCitXS19BUElfQ0xB
U1MKK0BpbnRlcmZhY2UgV0tUaHVtYm5haWxWaWV3IDogTlNWaWV3CisKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgZnJvbVdLVmlldzooV0tWaWV3ICopd2tWaWV3
OworLSAodm9pZClzZXRTY2FsZTooZG91YmxlKXNjYWxlOworCitAZW5kCisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1RodW1ibmFpbFZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVGh1bWJuYWlsVmll
dy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTM0MjRhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1RodW1ibmFp
bFZpZXcubW0KQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIldLVGh1bWJuYWlsVmlld0ludGVybmFsLmgiCisKKyNpZiBXS19BUElfRU5B
QkxFRAorCisjaW1wb3J0ICJXS0FQSUNhc3QuaCIKKyNpbXBvcnQgIldLVmlldy5oIgorI2ltcG9y
dCAiV0tWaWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorCisvLyBGSVhN
RTogTWFrZSBpdCBwb3NzaWJsZSB0byBsZWF2ZSBhIHNuYXBzaG90IG9mIHRoZSBjb250ZW50IHBy
ZXNlbnRlZCBpbiB0aGUgV0tWaWV3IHdoaWxlIHRoZSB0aHVtYm5haWwgaXMgbGl2ZS4KKy8vIEZJ
WE1FOiBEb24ndCBtYWtlIG5ldyBzcGVjdWxhdGl2ZSB0aWxlcyB3aGlsZSB0aHVtYm5haWxlZC4K
Ky8vIEZJWE1FOiBIaWRlIHNjcm9sbGJhcnMgaW4gdGhlIHRodW1ibmFpbC4KKy8vIEZJWE1FOiBX
ZSBzaG91bGQgcmUtdXNlIGV4aXN0aW5nIHRpbGVzIGZvciB1bnBhcmVudGVkIHZpZXdzLCBpZiB3
ZSBoYXZlIHRoZW0gKHdlIG5lZWQgdG8ga25vdyBpZiB0aGV5J3ZlIGJlZW4gcHVyZ2VkOyBpZiBz
bywgcmVwYWludCBhdCBzY2FsZWQtZG93biBzaXplKS4KKy8vIEZJWE1FOiBXZSBzaG91bGQgc3dp
dGNoIHRvIHRoZSBsb3ctcmVzb2x1dGlvbiBzY2FsZSBpZiBhIHZpZXcgd2UgaGF2ZSBoaWdoLXJl
c29sdXRpb24gdGlsZXMgZm9yIHJlcGFpbnRzLgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
K3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0BpbXBsZW1lbnRhdGlvbiBXS1RodW1ibmFpbFZp
ZXcKK3sKKyAgICBSZXRhaW5QdHI8V0tWaWV3PiBfd2tWaWV3OworICAgIFdlYlBhZ2VQcm94eSog
X3dlYlBhZ2VQcm94eTsKKyAgICBkb3VibGUgX3RodW1ibmFpbFNjYWxlOworCisgICAgYm9vbCBf
b3JpZ2luYWxNYXlTdGFydE1lZGlhV2hlbkluV2luZG93OworICAgIGJvb2wgX29yaWdpbmFsU291
cmNlVmlld0lzSW5XaW5kb3c7CisKKyAgICBib29sIF9zaG91bGRBcHBseVRodW1ibmFpbFNjYWxl
OworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGZyb21X
S1ZpZXc6KFdLVmlldyAqKXdrVmlldworeworICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhGcmFt
ZTpmcmFtZV07CisgICAgaWYgKHNlbGYpIHsKKyAgICAgICAgX3drVmlldyA9IHdrVmlldzsKKyAg
ICAgICAgX3dlYlBhZ2VQcm94eSA9IHRvSW1wbChbX3drVmlldyBwYWdlUmVmXSk7CisgICAgICAg
IF90aHVtYm5haWxTY2FsZSA9IDE7CisKKyAgICAgICAgX29yaWdpbmFsTWF5U3RhcnRNZWRpYVdo
ZW5JbldpbmRvdyA9IF93ZWJQYWdlUHJveHktPm1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3coKTsK
KyAgICAgICAgX29yaWdpbmFsU291cmNlVmlld0lzSW5XaW5kb3cgPSAhIVtfd2tWaWV3IHdpbmRv
d107CisKKyAgICAgICAgX3Nob3VsZEFwcGx5VGh1bWJuYWlsU2NhbGUgPSAhX29yaWdpbmFsU291
cmNlVmlld0lzSW5XaW5kb3c7CisgICAgfQorICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lk
KV92aWV3V2FzVW5wYXJlbnRlZAoreworICAgIGlmIChfc2hvdWxkQXBwbHlUaHVtYm5haWxTY2Fs
ZSkKKyAgICAgICAgX3dlYlBhZ2VQcm94eS0+c2V0VGh1bWJuYWlsU2NhbGUoMSk7CisKKyAgICBb
X3drVmlldyBfc2V0VGh1bWJuYWlsVmlldzpuaWxdOworICAgIF93ZWJQYWdlUHJveHktPnNldE1h
eVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3coX29yaWdpbmFsTWF5U3RhcnRNZWRpYVdoZW5JbldpbmRv
dyk7Cit9CisKKy0gKHZvaWQpX3ZpZXdXYXNQYXJlbnRlZAoreworICAgIGlmIChbX3drVmlldyBf
dGh1bWJuYWlsVmlld10pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChfc2hvdWxkQXBwbHlU
aHVtYm5haWxTY2FsZSkKKyAgICAgICAgX3dlYlBhZ2VQcm94eS0+c2V0VGh1bWJuYWlsU2NhbGUo
X3RodW1ibmFpbFNjYWxlKTsKKworICAgIGlmICghX29yaWdpbmFsU291cmNlVmlld0lzSW5XaW5k
b3cpCisgICAgICAgIF93ZWJQYWdlUHJveHktPnNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3co
ZmFsc2UpOworCisgICAgW193a1ZpZXcgX3NldFRodW1ibmFpbFZpZXc6c2VsZl07Cit9CisKKy0g
KHZvaWQpdmlld0RpZE1vdmVUb1dpbmRvdworeworICAgIGlmIChzZWxmLndpbmRvdykKKyAgICAg
ICAgW3NlbGYgX3ZpZXdXYXNQYXJlbnRlZF07CisgICAgZWxzZQorICAgICAgICBbc2VsZiBfdmll
d1dhc1VucGFyZW50ZWRdOworfQorCistICh2b2lkKXNldFNjYWxlOihkb3VibGUpc2NhbGUKK3sK
KyAgICBfdGh1bWJuYWlsU2NhbGUgPSBzY2FsZTsKKworICAgIGlmIChzZWxmLndpbmRvdyAmJiBf
c2hvdWxkQXBwbHlUaHVtYm5haWxTY2FsZSkKKyAgICAgICAgX3dlYlBhZ2VQcm94eS0+c2V0VGh1
bWJuYWlsU2NhbGUoX3RodW1ibmFpbFNjYWxlKTsKK30KKworLSAodm9pZClzZXRUaHVtYm5haWxM
YXllcjooQ0FMYXllciAqKWxheWVyCit7CisgICAgc2VsZi5sYXllci5zdWJsYXllcnMgPSBsYXll
ciA/IEBbbGF5ZXJdIDogQFtdOworfQorCistIChDQUxheWVyICopdGh1bWJuYWlsTGF5ZXIKK3sK
KyAgICBpZiAoIXNlbGYubGF5ZXIuc3VibGF5ZXJzLmNvdW50KQorICAgICAgICByZXR1cm4gbmls
OworCisgICAgcmV0dXJuIFtzZWxmLmxheWVyLnN1YmxheWVycyBvYmplY3RBdEluZGV4OjBdOwor
fQorCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzMjgzNDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVGh1bWJuYWlsVmlld0ludGVybmFsLmgKQEAg
LTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldLVGh1bWJuYWlsVmlldy5oIgor
CisjaWYgV0tfQVBJX0VOQUJMRUQKKworQGludGVyZmFjZSBXS1RodW1ibmFpbFZpZXcgKCkKKwor
QHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgQ0FMYXllciAqdGh1bWJuYWlsTGF5ZXI7CisK
K0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9QYWdlQ2xpZW50SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1BhZ2VDbGllbnRJbXBsLm1tCmluZGV4IDcwZWNkYjQuLjhlNjQ2MDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCkBAIC0zNyw2
ICszNyw3IEBACiAjaW1wb3J0ICJXS0FQSUNhc3QuaCIKICNpbXBvcnQgIldLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldLU3RyaW5nQ0YuaCIKKyNpbXBvcnQgIldLVGh1
bWJuYWlsVmlldy5oIgogI2ltcG9ydCAiV0tWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkNv
bG9yUGlja2VyTWFjLmgiCiAjaW1wb3J0ICJXZWJDb250ZXh0TWVudVByb3h5TWFjLmgiCkBAIC0x
NjgsNyArMTY5LDggQEAgSW50U2l6ZSBQYWdlQ2xpZW50SW1wbDo6dmlld1NpemUoKQogCiBib29s
IFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUoKQogewotICAgIHJldHVybiBbW21f
d2tWaWV3IHdpbmRvd10gaXNLZXlXaW5kb3ddIHx8IFtOU0FwcCBrZXlXaW5kb3ddID09IFttX3dr
VmlldyB3aW5kb3ddOworICAgIE5TV2luZG93ICphY3RpdmVWaWV3V2luZG93ID0gbV93a1ZpZXcu
X3RodW1ibmFpbFZpZXcgPyBtX3drVmlldy5fdGh1bWJuYWlsVmlldy53aW5kb3cgOiBtX3drVmll
dy53aW5kb3c7CisgICAgcmV0dXJuIGFjdGl2ZVZpZXdXaW5kb3cuaXNLZXlXaW5kb3cgfHwgW05T
QXBwIGtleVdpbmRvd10gPT0gYWN0aXZlVmlld1dpbmRvdzsKIH0KIAogYm9vbCBQYWdlQ2xpZW50
SW1wbDo6aXNWaWV3Rm9jdXNlZCgpCkBAIC0xODMsMjQgKzE4NSwyNyBAQCB2b2lkIFBhZ2VDbGll
bnRJbXBsOjptYWtlRmlyc3RSZXNwb25kZXIoKQogICAgIAogYm9vbCBQYWdlQ2xpZW50SW1wbDo6
aXNWaWV3VmlzaWJsZSgpCiB7Ci0gICAgaWYgKCFbbV93a1ZpZXcgd2luZG93XSkKKyAgICBOU1Zp
ZXcgKmFjdGl2ZVZpZXcgPSBtX3drVmlldy5fdGh1bWJuYWlsVmlldyA/IG1fd2tWaWV3Ll90aHVt
Ym5haWxWaWV3IDogbV93a1ZpZXc7CisgICAgTlNXaW5kb3cgKmFjdGl2ZVZpZXdXaW5kb3cgPSBh
Y3RpdmVWaWV3LndpbmRvdzsKKworICAgIGlmICghYWN0aXZlVmlld1dpbmRvdykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFbW21fd2tWaWV3IHdpbmRvd10gaXNWaXNpYmxlXSkK
KyAgICBpZiAoIWFjdGl2ZVZpZXdXaW5kb3cuaXNWaXNpYmxlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDw9IDEwODAKICAgICAv
LyBNb3VudGFpbiBMaW9uIGFuZCBwcmV2aW91cyBkbyBub3Qgc3VwcG9ydCBvY2NsdXNpb24gbm90
aWZpY2F0aW9ucywgYW5kIGFzIHN1Y2ggd2lsbAogICAgIC8vIGNvbnRpbnVlIHRvIHJlcG9ydCBh
cyAidmlzaWJsZSIgd2hlbiBub3Qgb24gdGhlIGFjdGl2ZSBzcGFjZS4KLSAgICBpZiAoIVtbbV93
a1ZpZXcgd2luZG93XSBpc09uQWN0aXZlU3BhY2VdKQorICAgIGlmICghYWN0aXZlVmlld1dpbmRv
dy5pc09uQWN0aXZlU3BhY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCi0gICAg
aWYgKFttX3drVmlldyBpc0hpZGRlbk9ySGFzSGlkZGVuQW5jZXN0b3JdKQorICAgIGlmIChhY3Rp
dmVWaWV3LmlzSGlkZGVuT3JIYXNIaWRkZW5BbmNlc3RvcikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCi0gICAgaWYg
KFttX3drVmlldyB3aW5kb3dPY2NsdXNpb25EZXRlY3Rpb25FbmFibGVkXSAmJiAoW1ttX3drVmll
dyB3aW5kb3ddIG9jY2x1c2lvblN0YXRlXSAmIE5TV2luZG93T2NjbHVzaW9uU3RhdGVWaXNpYmxl
KSAhPSBOU1dpbmRvd09jY2x1c2lvblN0YXRlVmlzaWJsZSkKKyAgICBpZiAoW21fd2tWaWV3IHdp
bmRvd09jY2x1c2lvbkRldGVjdGlvbkVuYWJsZWRdICYmIChhY3RpdmVWaWV3V2luZG93Lm9jY2x1
c2lvblN0YXRlICYgTlNXaW5kb3dPY2NsdXNpb25TdGF0ZVZpc2libGUpICE9IE5TV2luZG93T2Nj
bHVzaW9uU3RhdGVWaXNpYmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIApAQCAt
MjA5LDEyICsyMTQsMTIgQEAgYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3VmlzaWJsZSgpCiAK
IGJvb2wgUGFnZUNsaWVudEltcGw6OmlzVmlld1Zpc2libGVPck9jY2x1ZGVkKCkKIHsKLSAgICBy
ZXR1cm4gW1ttX3drVmlldyB3aW5kb3ddIGlzVmlzaWJsZV07CisgICAgcmV0dXJuIG1fd2tWaWV3
Ll90aHVtYm5haWxWaWV3ID8gbV93a1ZpZXcuX3RodW1ibmFpbFZpZXcud2luZG93LmlzVmlzaWJs
ZSA6IG1fd2tWaWV3LndpbmRvdy5pc1Zpc2libGU7CiB9CiAKIGJvb2wgUGFnZUNsaWVudEltcGw6
OmlzVmlld0luV2luZG93KCkKIHsKLSAgICByZXR1cm4gW21fd2tWaWV3IHdpbmRvd107CisgICAg
cmV0dXJuIG1fd2tWaWV3Ll90aHVtYm5haWxWaWV3ID8gbV93a1ZpZXcuX3RodW1ibmFpbFZpZXcu
d2luZG93IDogbV93a1ZpZXcud2luZG93OwogfQogCiBib29sIFBhZ2VDbGllbnRJbXBsOjppc1Zp
c3VhbGx5SWRsZSgpCkBAIC0yMjUsNyArMjMwLDggQEAgYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNW
aXN1YWxseUlkbGUoKQogTGF5ZXJIb3N0aW5nTW9kZSBQYWdlQ2xpZW50SW1wbDo6dmlld0xheWVy
SG9zdGluZ01vZGUoKQogewogI2lmIEhBVkUoT1VUX09GX1BST0NFU1NfTEFZRVJfSE9TVElORykK
LSAgICBpZiAoW21fd2tWaWV3IHdpbmRvd10gJiYgW1ttX3drVmlldyB3aW5kb3ddIF9ob3N0c0xh
eWVyc0luV2luZG93U2VydmVyXSkKKyAgICBOU1dpbmRvdyAqYWN0aXZlVmlld1dpbmRvdyA9IG1f
d2tWaWV3Ll90aHVtYm5haWxWaWV3ID8gbV93a1ZpZXcuX3RodW1ibmFpbFZpZXcud2luZG93IDog
bV93a1ZpZXcud2luZG93OworICAgIGlmIChbYWN0aXZlVmlld1dpbmRvdyBfaG9zdHNMYXllcnNJ
bldpbmRvd1NlcnZlcl0pCiAgICAgICAgIHJldHVybiBMYXllckhvc3RpbmdNb2RlOjpPdXRPZlBy
b2Nlc3M7CiAjZW5kaWYKICAgICByZXR1cm4gTGF5ZXJIb3N0aW5nTW9kZTo6SW5Qcm9jZXNzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDc0YjM4ZWEu
LmUwMTcwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dL
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0K
QEAgLTU3LDYgKzU3LDggQEAKICNpbXBvcnQgIldLUHJvY2Vzc0NsYXNzSW50ZXJuYWwuaCIKICNp
bXBvcnQgIldLU3RyaW5nQ0YuaCIKICNpbXBvcnQgIldLVGV4dElucHV0V2luZG93Q29udHJvbGxl
ci5oIgorI2ltcG9ydCAiV0tUaHVtYm5haWxWaWV3LmgiCisjaW1wb3J0ICJXS1RodW1ibmFpbFZp
ZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLVmll
d1ByaXZhdGUuaCIKICNpbXBvcnQgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgpAQCAtMjI1LDYgKzIy
Nyw4IEBAIHN0cnVjdCBXS1ZpZXdJbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzIHsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8Vmlld0dlc3R1cmVDb250cm9sbGVyPiBfZ2VzdHVyZUNvbnRyb2xsZXI7
CiAgICAgQk9PTCBfYWxsb3dzTWFnbmlmaWNhdGlvbjsKICAgICBCT09MIF9hbGxvd3NCYWNrRm9y
d2FyZE5hdmlnYXRpb25HZXN0dXJlczsKKworICAgIFdLVGh1bWJuYWlsVmlldyAqX3RodW1ibmFp
bFZpZXc7CiB9CiAKIEBlbmQKQEAgLTI3Myw2ICsyNzcsNyBAQCBzdHJ1Y3QgV0tWaWV3SW50ZXJw
cmV0S2V5RXZlbnRzUGFyYW1ldGVycyB7CiB7CiAgICAgX2RhdGEtPl9wYWdlLT5jbG9zZSgpOwog
CisgICAgQVNTRVJUKCFfZGF0YS0+X3RodW1ibmFpbFZpZXcpOwogICAgIEFTU0VSVCghX2RhdGEt
Pl9pblNlY3VyZUlucHV0U3RhdGUpOwogCiAgICAgW19kYXRhIHJlbGVhc2VdOwpAQCAtMTA3Nyw2
ICsxMDgyLDggQEAgc3RhdGljIHZvaWQgc3BlYWtTdHJpbmcoV0tTdHJpbmdSZWYgc3RyaW5nLCBX
S0Vycm9yUmVmIGVycm9yLCB2b2lkKikKICNkZWZpbmUgTkFUSVZFX01PVVNFX0VWRU5UX0hBTkRM
RVIoU2VsZWN0b3IpIFwKICAgICAtICh2b2lkKVNlbGVjdG9yOihOU0V2ZW50ICopdGhlRXZlbnQg
XAogICAgIHsgXAorICAgICAgICBpZiAoX2RhdGEtPl90aHVtYm5haWxWaWV3KSBcCisgICAgICAg
ICAgICByZXR1cm47IFwKICAgICAgICAgaWYgKFtbc2VsZiBpbnB1dENvbnRleHRdIGhhbmRsZUV2
ZW50OnRoZUV2ZW50XSkgeyBcCiAgICAgICAgICAgICBMT0coVGV4dElucHV0LCAiJXMgd2FzIGhh
bmRsZWQgYnkgdGV4dCBpbnB1dCBjb250ZXh0IiwgU3RyaW5nKCNTZWxlY3Rvcikuc3Vic3RyaW5n
KDAsIFN0cmluZygjU2VsZWN0b3IpLmZpbmQoIkludGVybmFsIikpLmFzY2lpKCkuZGF0YSgpKTsg
XAogICAgICAgICAgICAgcmV0dXJuOyBcCkBAIC0xMTExLDYgKzExMTgsOSBAQCBOQVRJVkVfTU9V
U0VfRVZFTlRfSEFORExFUihyaWdodE1vdXNlVXApCiAKIC0gKHZvaWQpc2Nyb2xsV2hlZWw6KE5T
RXZlbnQgKilldmVudAogeworICAgIGlmIChfZGF0YS0+X3RodW1ibmFpbFZpZXcpCisgICAgICAg
IHJldHVybjsKKwogICAgIGlmIChfZGF0YS0+X2FsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdl
c3R1cmVzKSB7CiAgICAgICAgIFtzZWxmIF9lbnN1cmVHZXN0dXJlQ29udHJvbGxlcl07CiAgICAg
ICAgIGlmIChfZGF0YS0+X2dlc3R1cmVDb250cm9sbGVyLT5oYW5kbGVTY3JvbGxXaGVlbEV2ZW50
KGV2ZW50KSkKQEAgLTExMjMsNiArMTEzMyw5IEBAIE5BVElWRV9NT1VTRV9FVkVOVF9IQU5ETEVS
KHJpZ2h0TW91c2VVcCkKIAogLSAodm9pZCltb3VzZU1vdmVkOihOU0V2ZW50ICopZXZlbnQKIHsK
KyAgICBpZiAoX2RhdGEtPl90aHVtYm5haWxWaWV3KQorICAgICAgICByZXR1cm47CisKICAgICAv
LyBXaGVuIGEgdmlldyBpcyBmaXJzdCByZXNwb25kZXIsIGl0IGdldHMgbW91c2UgbW92ZWQgZXZl
bnRzIGV2ZW4gd2hlbiB0aGUgbW91c2UgaXMgb3V0c2lkZSBpdHMgdmlzaWJsZSByZWN0LgogICAg
IGlmIChzZWxmID09IFtbc2VsZiB3aW5kb3ddIGZpcnN0UmVzcG9uZGVyXSAmJiAhTlNQb2ludElu
UmVjdChbc2VsZiBjb252ZXJ0UG9pbnQ6W2V2ZW50IGxvY2F0aW9uSW5XaW5kb3ddIGZyb21WaWV3
Om5pbF0sIFtzZWxmIHZpc2libGVSZWN0XSkpCiAgICAgICAgIHJldHVybjsKQEAgLTExMzIsNiAr
MTE0NSw5IEBAIE5BVElWRV9NT1VTRV9FVkVOVF9IQU5ETEVSKHJpZ2h0TW91c2VVcCkKIAogLSAo
dm9pZCltb3VzZURvd246KE5TRXZlbnQgKilldmVudAogeworICAgIGlmIChfZGF0YS0+X3RodW1i
bmFpbFZpZXcpCisgICAgICAgIHJldHVybjsKKwogICAgIFtzZWxmIF9zZXRNb3VzZURvd25FdmVu
dDpldmVudF07CiAgICAgX2RhdGEtPl9pZ25vcmluZ01vdXNlRHJhZ2dlZEV2ZW50cyA9IE5POwog
ICAgIFtzZWxmIG1vdXNlRG93bkludGVybmFsOmV2ZW50XTsKQEAgLTExMzksMTIgKzExNTUsMTgg
QEAgTkFUSVZFX01PVVNFX0VWRU5UX0hBTkRMRVIocmlnaHRNb3VzZVVwKQogCiAtICh2b2lkKW1v
dXNlVXA6KE5TRXZlbnQgKilldmVudAogeworICAgIGlmIChfZGF0YS0+X3RodW1ibmFpbFZpZXcp
CisgICAgICAgIHJldHVybjsKKwogICAgIFtzZWxmIF9zZXRNb3VzZURvd25FdmVudDpuaWxdOwog
ICAgIFtzZWxmIG1vdXNlVXBJbnRlcm5hbDpldmVudF07CiB9CiAKIC0gKHZvaWQpbW91c2VEcmFn
Z2VkOihOU0V2ZW50ICopZXZlbnQKIHsKKyAgICBpZiAoX2RhdGEtPl90aHVtYm5haWxWaWV3KQor
ICAgICAgICByZXR1cm47CisKICAgICBpZiAoX2RhdGEtPl9pZ25vcmluZ01vdXNlRHJhZ2dlZEV2
ZW50cykKICAgICAgICAgcmV0dXJuOwogICAgIFtzZWxmIG1vdXNlRHJhZ2dlZEludGVybmFsOmV2
ZW50XTsKQEAgLTI0ODMsNiArMjUwNSwxMyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVTYW5kYm94RXh0
ZW5zaW9uc0ZvckZpbGVVcGxvYWQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkLCBTYW5kYgogCiAt
ICh2b2lkKV9zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllcjooQ0FMYXllciAq
KXJvb3RMYXllcgogeworICAgIFtyb290TGF5ZXIgd2ViX2Rpc2FibGVBbGxBY3Rpb25zXTsKKwor
ICAgIGlmIChfZGF0YS0+X3RodW1ibmFpbFZpZXcpIHsKKyAgICAgICAgX2RhdGEtPl90aHVtYm5h
aWxWaWV3LnRodW1ibmFpbExheWVyID0gcm9vdExheWVyOworICAgICAgICByZXR1cm47CisgICAg
fQorCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAgIFtDQVRyYW5zYWN0aW9uIHNldERp
c2FibGVBY3Rpb25zOllFU107CiAKQEAgLTI1MjcsNyArMjU1NiwxMCBAQCBzdGF0aWMgdm9pZCBj
cmVhdGVTYW5kYm94RXh0ZW5zaW9uc0ZvckZpbGVVcGxvYWQoTlNQYXN0ZWJvYXJkICpwYXN0ZWJv
YXJkLCBTYW5kYgogICAgIGlmICghaG9zdFZpZXcpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgcmV0dXJuIGhvc3RWaWV3LmxheWVyOworICAgIGlmICghaG9zdFZpZXcubGF5ZXIuc3Vi
bGF5ZXJzLmNvdW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBob3N0
Vmlldy5sYXllci5zdWJsYXllcnNbMF07CiB9CiAKIC0gKFJldGFpblB0cjxDR0ltYWdlUmVmPilf
dGFrZVZpZXdTbmFwc2hvdApAQCAtMjk0Myw2ICsyOTc1LDI3IEBAIHN0YXRpYyBOU1N0cmluZyAq
cGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZvclBhdGgoTlNTdHJpbmcgKnBhdGgpCiAgICAgW3R5cGVz
IHJlbGVhc2VdOwogfQogCistICh2b2lkKV9zZXRUaHVtYm5haWxWaWV3OihXS1RodW1ibmFpbFZp
ZXcgKil0aHVtYm5haWxWaWV3Cit7CisgICAgQVNTRVJUKCFfZGF0YS0+X3RodW1ibmFpbFZpZXcg
fHwgIXRodW1ibmFpbFZpZXcpOworCisgICAgUmV0YWluUHRyPENBTGF5ZXI+IHRodW1ibmFpbExh
eWVyID0gX2RhdGEtPl90aHVtYm5haWxWaWV3LnRodW1ibmFpbExheWVyOworCisgICAgX2RhdGEt
Pl90aHVtYm5haWxWaWV3ID0gdGh1bWJuYWlsVmlldzsKKworICAgIGlmICh0aHVtYm5haWxWaWV3
KQorICAgICAgICB0aHVtYm5haWxWaWV3LnRodW1ibmFpbExheWVyID0gW3NlbGYgX2FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlUm9vdExheWVyXTsKKyAgICBlbHNlCisgICAgICAgIFtzZWxmIF9z
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZVJvb3RMYXllcjp0aHVtYm5haWxMYXllci5nZXQo
KV07CisKKyAgICBfZGF0YS0+X3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShWaWV3U3RhdGU6Oldp
bmRvd0lzQWN0aXZlIHwgVmlld1N0YXRlOjpJc0luV2luZG93IHwgVmlld1N0YXRlOjpJc1Zpc2li
bGUpOworfQorCistIChXS1RodW1ibmFpbFZpZXcgKilfdGh1bWJuYWlsVmlldworeworICAgIHJl
dHVybiBfZGF0YS0+X3RodW1ibmFpbFZpZXc7Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9u
IFdLVmlldyAoUHJpdmF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1dLVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXdJbnRlcm5hbC5oCmluZGV4IDc1YWRiNGUuLjgzYjRjNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaApAQCAtMjksNiAr
MjksNyBAQAogI2ltcG9ydCAiV2ViRmluZE9wdGlvbnMuaCIKICNpbXBvcnQgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAK
IEBjbGFzcyBXS1dlYlZpZXdDb25maWd1cmF0aW9uOwogCkBAIC01Myw2ICs1NCw3IEBAIHN0cnVj
dCBXZWJQYWdlQ29uZmlndXJhdGlvbjsKIH0KIAogQGNsYXNzIFdLRnVsbFNjcmVlbldpbmRvd0Nv
bnRyb2xsZXI7CitAY2xhc3MgV0tUaHVtYm5haWxWaWV3OwogCiBAaW50ZXJmYWNlIFdLVmlldyAo
KQogI2lmIFdLX0FQSV9FTkFCTEVECkBAIC0xMDMsNiArMTA1LDggQEAgc3RydWN0IFdlYlBhZ2VD
b25maWd1cmF0aW9uOwogLSAodm9pZClfc2V0U3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlczooQk9P
TClzdXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVzOwogLSAoQk9PTClfc3VwcHJlc3NWaXNpYmlsaXR5
VXBkYXRlczsKIAorQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0VGh1bWJuYWlsVmll
dzopIFdLVGh1bWJuYWlsVmlldyAqX3RodW1ibmFpbFZpZXc7CisKIC8vIEZ1bGxTY3JlZW4KIAog
QHByb3BlcnR5IChyZWFkb25seSkgQk9PTCBfaGFzRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDEyMDI3NjQu
LmJkYmRlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC00NTEwLDQgKzQ1MTAsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVud3JhcENyeXB0b0tleShj
b25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIGJvb2wmIHN1Y2MKIH0KICNlbmRpZgog
Cit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGh1bWJuYWlsU2NhbGUoZG91YmxlIHNjYWxlKQorewor
ICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRodW1ibmFpbFNjYWxlKHNjYWxlKSwgbV9wYWdlSUQp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCBiNzUzNDFjLi44MTdkNThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04MjcsNiArODI3LDcgQEAgcHVibGljOgogICAgIAogICAg
IHZvaWQgc2V0TWVkaWFWb2x1bWUoZmxvYXQpOwogICAgIHZvaWQgc2V0TWF5U3RhcnRNZWRpYVdo
ZW5JbldpbmRvdyhib29sKTsKKyAgICBib29sIG1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3coKSBj
b25zdCB7IHJldHVybiBtX21heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3c7IH0KIAogICAgIC8vIFdl
YlBvcHVwTWVudVByb3h5OjpDbGllbnQKICAgICB2aXJ0dWFsIE5hdGl2ZVdlYk1vdXNlRXZlbnQq
IGN1cnJlbnRseVByb2Nlc3NlZE1vdXNlRG93bkV2ZW50KCk7CkBAIC04OTEsNiArODkyLDggQEAg
cHVibGljOgogICAgIHZvaWQgdW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYs
IGJvb2wmIHN1Y2NlZWRlZCwgVmVjdG9yPHVpbnQ4X3Q+Jik7CiAjZW5kaWYKIAorICAgIHZvaWQg
c2V0VGh1bWJuYWlsU2NhbGUoZG91YmxlKTsKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHko
UGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2Vi
UGFnZUNvbmZpZ3VyYXRpb24mKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJv
bGxlck1hYy5tbQppbmRleCA2OWY2MzVkLi5hMmU0MjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQpAQCAt
MzkyLDcgKzM5Miw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2Vz
dHVyZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJdGVtCiAgICAgICAgICAgICBtX2N1
cnJlbnRTd2lwZUxpdmVMYXllcnMuYXBwZW5kKGxheWVyKTsKICAgICAgICAgfQogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIHN3aXBlQXJlYSA9IHJvb3RDb250ZW50TGF5ZXIuZnJhbWU7CisgICAgICAg
IHN3aXBlQXJlYSA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fd2ViUGFnZVByb3h5LmRyYXdp
bmdBcmVhKCktPnNpemUoKSk7CiAgICAgICAgIG1fY3VycmVudFN3aXBlTGl2ZUxheWVycy5hcHBl
bmQocm9vdENvbnRlbnRMYXllcik7CiAgICAgfQogCkBAIC00NTUsNyArNDU1LDcgQEAgdm9pZCBW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZVN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExp
c3RJdGVtKiB0YXJnZXRJdGUKICAgICBpZiAoIW1fY3VzdG9tU3dpcGVWaWV3cy5pc0VtcHR5KCkp
CiAgICAgICAgIHdpZHRoID0gbV9jdXJyZW50U3dpcGVDdXN0b21WaWV3Qm91bmRzLndpZHRoKCk7
CiAgICAgZWxzZQotICAgICAgICB3aWR0aCA9IG1fd2ViUGFnZVByb3h5LmFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdSb290TGF5ZXIoKS5mcmFtZS5zaXplLndpZHRoOworICAgICAgICB3aWR0aCA9IG1f
d2ViUGFnZVByb3h5LmRyYXdpbmdBcmVhKCktPnNpemUoKS53aWR0aCgpOwogCiAgICAgZG91Ymxl
IHN3aXBpbmdMYXllck9mZnNldCA9IGZsb29yKHdpZHRoICogcHJvZ3Jlc3MpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjY4
NjY0NC4uYzBhZjk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNDQwLDYgKzQ0MCw4IEBACiAJCTJENDI5QkZEMTcyMUUyQzcw
MEVDNjgxRiAvKiBQREZQbHVnaW5QYXNzd29yZEZpZWxkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ0MjlCRkIxNzIxRTJCQTAwRUM2ODFGIC8qIFBE
RlBsdWdpblBhc3N3b3JkRmllbGQubW0gKi87IH07CiAJCTJENDdCNTZDMTgxMDcxNEUwMDNBM0FF
RSAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENDdCNTZBMTgxMDcxNEUwMDNBM0FFRSAvKiBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZS5tbSAqLzsgfTsKIAkJMkQ0N0I1NkQxODEwNzE0RTAwM0EzQUVFIC8q
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRDQ3QjU2QjE4MTA3MTRFMDAzQTNBRUUgLyogUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUuaCAqLzsgfTsKKwkJMkQ2QjM3MUIxOEE5NjdBRDAwNDJBRTgwIC8qIFdLVGh1
bWJuYWlsVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkQ2QjM3MTkxOEE5NjdBRDAwNDJBRTgwIC8qIFdLVGh1bWJuYWlsVmlldy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTJENkIzNzFDMThBOTY3
QUQwMDQyQUU4MCAvKiBXS1RodW1ibmFpbFZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDZCMzcxQTE4QTk2N0FEMDA0MkFFODAgLyogV0tUaHVt
Ym5haWxWaWV3Lm1tICovOyB9OwogCQkyRDZDRDExOTE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1Nu
YXBzaG90U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJENkNEMTE3MTg5MDU4QTUwMEU1QTRBMCAvKiBWaWV3U25hcHNob3RTdG9yZS5oICovOyB9
OwogCQkyRDZDRDExQTE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDZDRDExODE4OTA1
OEE1MDBFNUE0QTAgLyogVmlld1NuYXBzaG90U3RvcmUubW0gKi87IH07CiAJCTJEODE5QjlFMTg2
MjdFRTkwMDFGMDNEMSAvKiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEODE5Qjk5MTg2Mjc1QjMw
MDFGMDNEMSAvKiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcCAqLzsgfTsKQEAgLTQ4
NSw2ICs0ODcsNyBAQAogCQkyREE5NDRCOTE4ODRFQTM5MDBFRDg2REIgLyogV2ViQmFja0Zvcndh
cmRMaXN0UHJveHlJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyREE5NDRCNTE4ODRFQTM1MDBFRDg2REIgLyogV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHlJT1MubW0gKi87IH07CiAJCTJEQTk0NEJBMTg4NEVBM0MwMEVEODZEQiAvKiBXZWJQYWdlSU9T
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0
QjYxODg0RUEzNTAwRUQ4NkRCIC8qIFdlYlBhZ2VJT1MubW0gKi87IH07CiAJCTJEQTk0NEJEMTg4
NTExRTcwMEVEODZEQiAvKiBOZXR3b3JrUHJvY2Vzc0lPUy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NEJDMTg4NTExRTcwMEVEODZEQiAvKiBO
ZXR3b3JrUHJvY2Vzc0lPUy5tbSAqLzsgfTsKKwkJMkRBQ0U2NEUxOEFEQkZGMDAwRTRDQTc2IC8q
IFdLVGh1bWJuYWlsVmlld0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyREFDRTY0RDE4QURCRkYwMDBFNENBNzYgLyogV0tUaHVtYm5haWxW
aWV3SW50ZXJuYWwuaCAqLzsgfTsKIAkJMkRERTBBRkExODI5OENDOTAwRjk3RUFBIC8qIFJlbW90
ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkRERTBBRjgxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVy
VHJlZVByb3BlcnR5QXBwbGllci5oICovOyB9OwogCQkyRERFMEFGQjE4Mjk4Q0M5MDBGOTdFQUEg
LyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRERTBBRjkxODI5OENDOTAwRjk3RUFBIC8qIFJl
bW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbSAqLzsgfTsKIAkJMkRGOTU5M0IxOEE0MjQx
MjAwOTc4NUExIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERjk1OTM0MThBNDI0MTIwMDk3ODVBMSAv
KiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0gKi87IH07CkBAIC0yMTM4LDYgKzIxNDEsOCBA
QAogCQkyRDQyOUJGQjE3MjFFMkJBMDBFQzY4MUYgLyogUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFBERlBsdWdpblBhc3N3
b3JkRmllbGQubW07IHBhdGggPSBQREYvUERGUGx1Z2luUGFzc3dvcmRGaWVsZC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ0N0I1NkExODEwNzE0RTAwM0EzQUVFIC8qIFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJENDdCNTZCMTgxMDcxNEUwMDNBM0FFRSAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDZCMzcxOTE4QTk2N0FEMDA0
MkFFODAgLyogV0tUaHVtYm5haWxWaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLVGh1bWJuYWlsVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDZC
MzcxQTE4QTk2N0FEMDA0MkFFODAgLyogV0tUaHVtYm5haWxWaWV3Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tUaHVtYm5haWxWaWV3Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyRDZDRDExNzE4OTA1OEE1MDBFNUE0QTAgLyogVmlld1NuYXBz
aG90U3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlld1NuYXBzaG90
U3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ2Q0QxMTgxODkwNThBNTAw
RTVBNEEwIC8qIFZpZXdTbmFwc2hvdFN0b3JlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gVmlld1NuYXBzaG90U3RvcmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJENzBBQjEzMThBMUQ1MUEwMDAyNkQ2RSAvKiBJbmZvLWlPUy5wbGlzdCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Qu
eG1sOyBwYXRoID0gIkluZm8taU9TLnBsaXN0Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTIxODgsNiArMjE5Myw3IEBACiAJCTJEQTk0NEI1MTg4NEVBMzUwMEVEODZEQiAvKiBXZWJC
YWNrRm9yd2FyZExpc3RQcm94eUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5SU9TLm1tOyBwYXRoID0gaW9zL1dlYkJh
Y2tGb3J3YXJkTGlzdFByb3h5SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
REE5NDRCNjE4ODRFQTM1MDBFRDg2REIgLyogV2ViUGFnZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYlBhZ2VJT1MubW07IHBhdGggPSBpb3MvV2ViUGFn
ZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBOTQ0QkMxODg1MTFFNzAw
RUQ4NkRCIC8qIE5ldHdvcmtQcm9jZXNzSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gTmV0d29ya1Byb2Nlc3NJT1MubW07IHBhdGggPSBOZXR3b3JrUHJvY2Vz
cy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTJEQUNFNjREMThBREJGRjAwMEU0Q0E3NiAvKiBXS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRERFMEFGODE4Mjk4Q0M5MDBGOTdFQUEg
LyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyRERFMEFGOTE4Mjk4Q0M5MDBGOTdFQUEgLyogUmVtb3RlTGF5
ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyREY5NTkzNDE4QTQyNDEyMDA5Nzg1QTEgLyogVmlld0dlc3R1cmVD
b250cm9sbGVySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
Vmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tOyBwYXRoID0gaW9zL1ZpZXdHZXN0dXJlQ29udHJv
bGxlcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzNjUsNiArNDM3MSw5
IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTFBNDNFODI2MTg4
RjM4RTIwMDlFNEQzMCAvKiBEZXByZWNhdGVkICovLAorCQkJCTJENkIzNzE5MThBOTY3QUQwMDQy
QUU4MCAvKiBXS1RodW1ibmFpbFZpZXcuaCAqLywKKwkJCQkyREFDRTY0RDE4QURCRkYwMDBFNENB
NzYgLyogV0tUaHVtYm5haWxWaWV3SW50ZXJuYWwuaCAqLywKKwkJCQkyRDZCMzcxQTE4QTk2N0FE
MDA0MkFFODAgLyogV0tUaHVtYm5haWxWaWV3Lm1tICovLAogCQkJCTFBNEQ2NjRBMThBMzAzMEUw
MEQ4MkUyMSAvKiBXS0ZyYW1lSW5mby5oICovLAogCQkJCTFBNEQ2NjQ5MThBMzAzMEUwMEQ4MkUy
MSAvKiBXS0ZyYW1lSW5mby5tbSAqLywKIAkJCQkxQTRENjY0RDE4QTMwMzFCMDBEODJFMjEgLyog
V0tGcmFtZUluZm9JbnRlcm5hbC5oICovLApAQCAtNjQzNiw2ICs2NDQ1LDcgQEAKIAkJCQkxQTJE
ODJBNTEyN0Y0RUFCMDAxRUI5NjIgLyogTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBMkQ4NDNBMTI3RjY1RDUwMDFFQjk2MiAvKiBOUE9iamVjdE1lc3NhZ2VS
ZWNlaXZlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTJEODJBNzEyN0Y0RUFCMDAx
RUI5NjIgLyogTlBPYmplY3RQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkQ2QjM3MUIxOEE5
NjdBRDAwNDJBRTgwIC8qIFdLVGh1bWJuYWlsVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEy
RDgyQTkxMjdGNEVBQjAwMUVCOTYyIC8qIE5QUmVtb3RlT2JqZWN0TWFwLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTIxNjFCMDExRjM3NjY0MDA4QUQwRjUgLyogTlBSdW50aW1lT2JqZWN0TWFwLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyREEwNDlCODE4MENDRDBBMDBBQUZBOUUgLyogR3JhcGhpY3NM
YXllckNBUmVtb3RlLmggaW4gSGVhZGVycyAqLywKQEAgLTY1OTYsNiArNjYwNiw3IEBACiAJCQkJ
MUEyNDY0RjMxODkxRTQ1MTAwMjM0QzVCIC8qIEFQSUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxREQ3QjIxMTREQzM5NjAwNUFEQUYzIC8qIFdlYkNvcmVBcmd1bWVudENvZGVy
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyRjU4OUIxMkE4ODM4ODAwNjI5NTMwIC8qIFdlYkNy
ZWRlbnRpYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTJEQUNFNjRFMThBREJGRjAwMEU0Q0E3NiAv
KiBXS1RodW1ibmFpbFZpZXdJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1NzhCODMx
MjA5RUNFRjAwQTM3QzRBIC8qIEFQSURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2QTI1RkRE
MTJBREM2Q0MwMERDNDBDQyAvKiBXZWJEYXRhYmFzZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUY2MkE3NkI3MTJCMUIyNUYwMDA1RjFCNiAvKiBXZWJEYXRhYmFzZU1hbmFnZXJNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MTQxLDYgKzgxNTIsNyBAQAogCQkJCTUxMEFGRkI5MTY1
NDIwNDgwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkzRjg4OUQxNDE4ODc3OEM5MDBGRUFEQUYgLyogV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgxQiAvKiBX
ZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQky
RDZCMzcxQzE4QTk2N0FEMDA0MkFFODAgLyogV0tUaHVtYm5haWxWaWV3Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzc4RTFBM0QxODFFRDZGRjAwMzEwMDdBIC8qIEFQSU9iamVjdC5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxRkIwOEZGMTYzOURFMUEwMEVDMzI0QSAvKiBXZWJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1OTQ3QTcxODdCNTE3NjAwNDM3ODU3
IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuaAppbmRleCAxMGRhZGM3Li5mMWM1ODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtMTA1LDYgKzEwNSw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVy
Rmx1c2goKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFdlYkNv
cmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4JikgeyB9CisKICNpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDb29yZGluYXRlZExheWVyVHJlZUhv
c3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKSA9IDA7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCBkN2JmMWRhLi5iNWJkZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yOTIsNiArMjkyLDggQEAgV2ViUGFnZTo6V2ViUGFnZSh1
aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMpCiAgICAgLCBtX3ZpZXdTdGF0ZShwYXJhbWV0ZXJzLnZpZXdTdGF0ZSkKICAgICAsIG1fcHJv
Y2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRCeVdlYlByZWZlcmVuY2UoIlByb2Nlc3Mgc3VwcHJlc3Np
b24gaXMgZGlzYWJsZWQuIikKICAgICAsIG1fcGVuZGluZ05hdmlnYXRpb25JRCgwKQorICAgICwg
bV9wcmVUaHVtYm5haWxQYWdlU2NhbGUoMSkKKyAgICAsIG1fdGh1bWJuYWlsU2NhbGUoMSkKIHsK
ICAgICBBU1NFUlQobV9wYWdlSUQpOwogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgbm9uLWlkZWFs
IGxvY2F0aW9uIGZvciB0aGlzIFNldHRpbmcgYW5kCkBAIC00MTg0LDQgKzQxODYsNDQgQEAgUGFz
c1JlZlB0cjxEb2N1bWVudExvYWRlcj4gV2ViUGFnZTo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoRnJh
bWUmIGZyYW1lLCBjb25zdCBSZXMKICAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXIucmVsZWFzZSgp
OwogfQogCit2b2lkIFdlYlBhZ2U6OnNldFRodW1ibmFpbFNjYWxlKGRvdWJsZSBkZXN0aW5hdGlv
blNjYWxlKQoreworICAgIGlmIChkZXN0aW5hdGlvblNjYWxlID09IG1fdGh1bWJuYWlsU2NhbGUp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIFNjYWxpbmcsIHNhdmUgdGhlIHNjYWxlIGFuZCBz
Y3JvbGwgcG9zaXRpb24gdG8gYmUgcmVzdG9yZWQgbGF0ZXIuCisgICAgaWYgKGRlc3RpbmF0aW9u
U2NhbGUgIT0gMSkgeworICAgICAgICBpZiAobV90aHVtYm5haWxTY2FsZSA9PSAxKSB7CisgICAg
ICAgICAgICBtX3ByZVRodW1ibmFpbFBhZ2VTY2FsZSA9IHBhZ2VTY2FsZUZhY3RvcigpOworICAg
ICAgICAgICAgbV9wcmVUaHVtYm5haWxTY3JvbGxQb3NpdGlvbiA9IG1fcGFnZS0+bWFpbkZyYW1l
KCkudmlldygpLT5zY3JvbGxQb3NpdGlvbigpOworICAgICAgICB9CisKKyAgICAgICAgbV90aHVt
Ym5haWxTY2FsZSA9IGRlc3RpbmF0aW9uU2NhbGU7CisKKyAgICAgICAgLy8gU2NhbGUgdGhlIHBh
Z2UsIGJ1dCBsZWF2ZSB0aGUgb3JpZ2luYWwgcGFnZSBzY2FsZSBpbnRhY3QgaWYgdGhlcmUgd2Fz
IGFueS4KKyAgICAgICAgc2NhbGVQYWdlKG1fdGh1bWJuYWlsU2NhbGUgKiBtX3ByZVRodW1ibmFp
bFBhZ2VTY2FsZSwgSW50UG9pbnQoKSk7CisKKyAgICAgICAgLy8gU2Nyb2xsIGFzIGZhciBhcyB3
ZSBjYW4gdG93YXJkcyB0aGUgb3JpZ2luYWwgc2Nyb2xsIHBvc2l0aW9uIGluIHRoZSBzY2FsZWQg
cGFnZS4KKyAgICAgICAgLy8gVGhpcyBtYXkgZ2V0IGNvbnN0cmFpbmVkOyB3ZSdsbCB0cmFuc2Zv
cm0gdGhlIGRyYXdpbmcgYXJlYSB0byBleHBvc2UgdGhlIHJpZ2h0IHBhcnQgb2YgdGhlIHBhZ2Uu
CisgICAgICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT5zZXRTY3JvbGxQb3NpdGlvbihJ
bnRQb2ludChtX3ByZVRodW1ibmFpbFNjcm9sbFBvc2l0aW9uLngoKSAqIG1fdGh1bWJuYWlsU2Nh
bGUsIG1fcHJlVGh1bWJuYWlsU2Nyb2xsUG9zaXRpb24ueSgpICogbV90aHVtYm5haWxTY2FsZSkp
OworCisgICAgICAgIGRvdWJsZSBpbnZlcnNlU2NhbGUgPSAxIC8gbV90aHVtYm5haWxTY2FsZTsK
KyAgICAgICAgSW50UG9pbnQgbmV3U2Nyb2xsUG9zaXRpb24gPSBtX3BhZ2UtPm1haW5GcmFtZSgp
LnZpZXcoKS0+c2Nyb2xsUG9zaXRpb24oKTsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
dHJhbnNmb3JtOworICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKChuZXdTY3JvbGxQb3NpdGlv
bi54KCkgKiBpbnZlcnNlU2NhbGUpIC0gbV9wcmVUaHVtYm5haWxTY3JvbGxQb3NpdGlvbi54KCks
IChuZXdTY3JvbGxQb3NpdGlvbi55KCkgKiBpbnZlcnNlU2NhbGUpIC0gbV9wcmVUaHVtYm5haWxT
Y3JvbGxQb3NpdGlvbi55KCkpOworICAgICAgICB0cmFuc2Zvcm0uc2NhbGUoaW52ZXJzZVNjYWxl
KTsKKworICAgICAgICBkcmF3aW5nQXJlYSgpLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFVuc2NhbGluZywgcmVzdG9yZSB0aGUgb3Jp
Z2luYWwgc2NhbGUgYW5kIHNjcm9sbCBwb3NpdGlvbi4KKyAgICBpZiAoZGVzdGluYXRpb25TY2Fs
ZSA9PSAxICYmIG1fdGh1bWJuYWlsU2NhbGUgIT0gMSkgeworICAgICAgICBzY2FsZVBhZ2UobV9w
cmVUaHVtYm5haWxQYWdlU2NhbGUsIEludFBvaW50KCkpOworICAgICAgICBtX3BhZ2UtPm1haW5G
cmFtZSgpLnZpZXcoKS0+c2V0U2Nyb2xsUG9zaXRpb24obV9wcmVUaHVtYm5haWxTY3JvbGxQb3Np
dGlvbik7CisgICAgICAgIGRyYXdpbmdBcmVhKCktPnNldFRyYW5zZm9ybShUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpKTsKKyAgICAgICAgbV90aHVtYm5haWxTY2FsZSA9IDE7CisgICAgfQorfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IDQ0MGI4ZmQuLjRlNTNiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMzY4LDYgKzM2OCw4IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgYWRkUGx1Z2luVmlldyhQbHVnaW5WaWV3Kik7CiAgICAgdm9pZCByZW1vdmVQbHVn
aW5WaWV3KFBsdWdpblZpZXcqKTsKKyAgICAKKyAgICB2b2lkIHNldFRodW1ibmFpbFNjYWxlKGRv
dWJsZSk7CiAKICAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1N0YXRl
ICYgV2ViQ29yZTo6Vmlld1N0YXRlOjpJc1Zpc2libGU7IH0KICAgICBib29sIGlzVmlzaWJsZU9y
T2NjbHVkZWQoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdTdGF0ZSAmIFdlYkNvcmU6OlZpZXdTdGF0
ZTo6SXNWaXNpYmxlT3JPY2NsdWRlZDsgfQpAQCAtMTA5Myw2ICsxMDk1LDEwIEBAIHByaXZhdGU6
CiAgICAgVXNlckFjdGl2aXR5IG1fcHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRCeVdlYlByZWZl
cmVuY2U7CiAKICAgICB1aW50NjRfdCBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQ7CisKKyAgICBkb3Vi
bGUgbV9wcmVUaHVtYm5haWxQYWdlU2NhbGU7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9wcmVU
aHVtYm5haWxTY3JvbGxQb3NpdGlvbjsKKyAgICBkb3VibGUgbV90aHVtYm5haWxTY2FsZTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBkMjliNzllLi43Y2RlZWQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgpAQCAtMzI1LDQgKzMyNSw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVn
YWN5UmVjZWl2ZXIgewogICAgIFNldE1haW5GcmFtZUluVmlld1NvdXJjZU1vZGUoYm9vbCBpblZp
ZXdTb3VyY2VNb2RlKQogICAgIAogICAgIFNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcih1aW50MzJf
dCBwaW5uaW5nKQorCisgICAgU2V0VGh1bWJuYWlsU2NhbGUoZG91YmxlIHNjYWxlKQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCmluZGV4IGU1MGViNzYuLjEwNzY3
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKQEAgLTM1LDYg
KzM1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0xheWVyRmx1c2hTY2hlZHVsZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0xheWVyRmx1c2hTY2hlZHVsZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1RpbWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCkBA
IC0xMTMsNiArMTE0LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0VHJhbnNp
ZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSBvdmVycmlk
ZTsKICAgICB2b2lkIGFwcGx5VHJhbnNpZW50Wm9vbVRvUGFnZShkb3VibGUgc2NhbGUsIFdlYkNv
cmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKIAorICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFuc2Zvcm0o
Y29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKKwogICAgIHZv
aWQgdXBkYXRlTGF5ZXJIb3N0aW5nQ29udGV4dCgpOwogCiAgICAgdm9pZCBzZXRSb290Q29tcG9z
aXRpbmdMYXllcihDQUxheWVyICopOwpAQCAtMTMyLDE3ICsxMzUsMTcgQEAgcHJpdmF0ZToKIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0PiBtX2xheWVySG9zdGluZ0Nv
bnRleHQ7CiAKKyAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9ob3N0aW5nTGF5ZXI7CiAgICAgUmV0
YWluUHRyPENBTGF5ZXI+IG1fcm9vdExheWVyOwotICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3Bl
bmRpbmdSb290Q29tcG9zaXRpbmdMYXllcjsKLQogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX2Rl
YnVnSW5mb0xheWVyOwogCisgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fcGVuZGluZ1Jvb3RMYXll
cjsKKwogICAgIHR5cGVkZWYgSGFzaE1hcDxQYWdlT3ZlcmxheSosIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpHcmFwaGljc0xheWVyPj4gUGFnZU92ZXJsYXlMYXllck1hcDsKICAgICBQYWdlT3Zl
cmxheUxheWVyTWFwIG1fcGFnZU92ZXJsYXlMYXllcnM7CiAgICAgbXV0YWJsZSBIYXNoTWFwPGNv
bnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBSZXRhaW5QdHI8Q0FMYXllcj4+IG1fcGFnZU92
ZXJsYXlQbGF0Zm9ybUxheWVyczsKIAogICAgIGJvb2wgbV9pc1BhaW50aW5nU3VzcGVuZGVkOwot
ICAgIGJvb2wgbV9oYXNSb290Q29tcG9zaXRpbmdMYXllcjsKIAogICAgIFdlYkNvcmU6OkZsb2F0
UmVjdCBtX2V4cG9zZWRSZWN0OwogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBtX3Njcm9sbGVkRXhw
b3NlZFJlY3Q7CkBAIC0xNTMsNiArMTU2LDggQEAgcHJpdmF0ZToKIAogICAgIGRvdWJsZSBtX3Ry
YW5zaWVudFpvb21TY2FsZTsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fdHJhbnNpZW50Wm9v
bU9yaWdpbjsKKworICAgIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fdHJhbnNmb3Jt
OwogfTsKIAogRFJBV0lOR19BUkVBX1RZUEVfQ0FTVFMoVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEsIHR5cGUoKSA9PSBEcmF3aW5nQXJlYVR5cGVUaWxlZENvcmVBbmltYXRpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KaW5kZXggYjMxZGZjMC4uOWFk
N2UxYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQpAQCAt
NzgsMTIgKzc4LDEwIEBAIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYShXZWJQYWdlKiB3ZWJQYWdlLCBjCiB7CiAgICAgbV93ZWJQYWdl
LT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHRydWUpOwog
Ci0gICAgbV9yb290TGF5ZXIgPSBbQ0FMYXllciBsYXllcl07Ci0KLSAgICBDR1JlY3Qgcm9vdExh
eWVyRnJhbWUgPSBtX3dlYlBhZ2UtPmJvdW5kcygpOwotICAgIG1fcm9vdExheWVyLmdldCgpLmZy
YW1lID0gcm9vdExheWVyRnJhbWU7Ci0gICAgbV9yb290TGF5ZXIuZ2V0KCkub3BhcXVlID0gWUVT
OwotICAgIG1fcm9vdExheWVyLmdldCgpLmdlb21ldHJ5RmxpcHBlZCA9IFlFUzsKKyAgICBtX2hv
c3RpbmdMYXllciA9IFtDQUxheWVyIGxheWVyXTsKKyAgICBbbV9ob3N0aW5nTGF5ZXIgc2V0RnJh
bWU6bV93ZWJQYWdlLT5ib3VuZHMoKV07CisgICAgW21faG9zdGluZ0xheWVyIHNldE9wYXF1ZTpZ
RVNdOworICAgIFttX2hvc3RpbmdMYXllciBzZXRHZW9tZXRyeUZsaXBwZWQ6WUVTXTsKIAogICAg
IHVwZGF0ZUxheWVySG9zdGluZ0NvbnRleHQoKTsKICAgICBzZXRDb2xvclNwYWNlKHBhcmFtZXRl
cnMuY29sb3JTcGFjZSk7CkBAIC0xMjQsMTQgKzEyMiwxNCBAQCB2b2lkIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjpkaWRDaGFuZ2VTY3JvbGxPZmZzZXRGb3JBbnlGcmFtZSgpCiAKIHZv
aWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldFJvb3RDb21wb3NpdGluZ0xheWVy
KEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCiB7Ci0gICAgQ0FMYXllciAqcm9vdENvbXBv
c2l0aW5nTGF5ZXIgPSBncmFwaGljc0xheWVyID8gZ3JhcGhpY3NMYXllci0+cGxhdGZvcm1MYXll
cigpIDogbmlsOworICAgIENBTGF5ZXIgKnJvb3RMYXllciA9IGdyYXBoaWNzTGF5ZXIgPyBncmFw
aGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiBuaWw7CiAKICAgICBpZiAobV9sYXllclRyZWVT
dGF0ZUlzRnJvemVuKSB7Ci0gICAgICAgIG1fcGVuZGluZ1Jvb3RDb21wb3NpdGluZ0xheWVyID0g
cm9vdENvbXBvc2l0aW5nTGF5ZXI7CisgICAgICAgIG1fcGVuZGluZ1Jvb3RMYXllciA9IHJvb3RM
YXllcjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNldFJvb3RDb21wb3NpdGluZ0xh
eWVyKHJvb3RDb21wb3NpdGluZ0xheWVyKTsKKyAgICBzZXRSb290Q29tcG9zaXRpbmdMYXllcihy
b290TGF5ZXIpOwogfQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpmb3Jj
ZVJlcGFpbnQoKQpAQCAtMjIxLDcgKzIxOSw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWE6OnNldFBhZ2VPdmVybGF5TmVlZHNEaXNwbGF5KFBhZ2VPdmVybGF5KiBwYWdlCiAK
ICAgICBpZiAoIWxheWVyLT5kcmF3c0NvbnRlbnQoKSkgewogICAgICAgICBsYXllci0+c2V0RHJh
d3NDb250ZW50KHRydWUpOwotICAgICAgICBsYXllci0+c2V0U2l6ZShleHBhbmRlZEludFNpemUo
RmxvYXRTaXplKG1fcm9vdExheWVyLmdldCgpLmZyYW1lLnNpemUpKSk7CisgICAgICAgIGxheWVy
LT5zZXRTaXplKGV4cGFuZGVkSW50U2l6ZShGbG9hdFNpemUobV9ob3N0aW5nTGF5ZXIuZ2V0KCku
ZnJhbWUuc2l6ZSkpKTsKICAgICB9CiAKICAgICBsYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0
KHJlY3QpOwpAQCAtMzgwLDEyICszNzgsMTIgQEAgYm9vbCBUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYTo6Zmx1c2hMYXllcnMoKQogCiAgICAgbV93ZWJQYWdlLT5sYXlvdXRJZk5lZWRlZCgp
OwogCi0gICAgaWYgKG1fcGVuZGluZ1Jvb3RDb21wb3NpdGluZ0xheWVyKSB7Ci0gICAgICAgIHNl
dFJvb3RDb21wb3NpdGluZ0xheWVyKG1fcGVuZGluZ1Jvb3RDb21wb3NpdGluZ0xheWVyLmdldCgp
KTsKLSAgICAgICAgbV9wZW5kaW5nUm9vdENvbXBvc2l0aW5nTGF5ZXIgPSBudWxscHRyOworICAg
IGlmIChtX3BlbmRpbmdSb290TGF5ZXIpIHsKKyAgICAgICAgc2V0Um9vdENvbXBvc2l0aW5nTGF5
ZXIobV9wZW5kaW5nUm9vdExheWVyLmdldCgpKTsKKyAgICAgICAgbV9wZW5kaW5nUm9vdExheWVy
ID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICBGbG9hdFJlY3QgdmlzaWJsZVJlY3QgPSBbbV9yb290
TGF5ZXIgZnJhbWVdOworICAgIEZsb2F0UmVjdCB2aXNpYmxlUmVjdCA9IFttX2hvc3RpbmdMYXll
ciBmcmFtZV07CiAgICAgdmlzaWJsZVJlY3QuaW50ZXJzZWN0KG1fc2Nyb2xsZWRFeHBvc2VkUmVj
dCk7CiAKICAgICBmb3IgKFBhZ2VPdmVybGF5TGF5ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wYWdl
T3ZlcmxheUxheWVycy5iZWdpbigpLCBlbmQgPSBtX3BhZ2VPdmVybGF5TGF5ZXJzLmVuZCgpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKQEAgLTQxNCw4ICs0MTIsOCBAQCB2b2lkIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjpzdXNwZW5kUGFpbnRpbmcoKQogICAgIEFTU0VSVCghbV9pc1BhaW50
aW5nU3VzcGVuZGVkKTsKICAgICBtX2lzUGFpbnRpbmdTdXNwZW5kZWQgPSB0cnVlOwogCi0gICAg
W21fcm9vdExheWVyIHNldFZhbHVlOihpZClrQ0ZCb29sZWFuVHJ1ZSBmb3JLZXk6QCJOU0NBVmll
d1JlbmRlclBhdXNlZCJdOwotICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRl
cl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6QCJOU0NBVmlld1JlbmRlckRpZFBhdXNlTm90aWZpY2F0
aW9uIiBvYmplY3Q6bmlsIHVzZXJJbmZvOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmpl
Y3Q6bV9yb290TGF5ZXIuZ2V0KCkgZm9yS2V5OkAibGF5ZXIiXV07CisgICAgW21faG9zdGluZ0xh
eWVyIHNldFZhbHVlOkBZRVMgZm9yS2V5OkAiTlNDQVZpZXdSZW5kZXJQYXVzZWQiXTsKKyAgICBb
W05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1l
OkAiTlNDQVZpZXdSZW5kZXJEaWRQYXVzZU5vdGlmaWNhdGlvbiIgb2JqZWN0Om5pbCB1c2VySW5m
bzpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0Om1faG9zdGluZ0xheWVyLmdldCgp
IGZvcktleTpAImxheWVyIl1dOwogfQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhOjpyZXN1bWVQYWludGluZygpCkBAIC00MjcsOCArNDI1LDggQEAgdm9pZCBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6cmVzdW1lUGFpbnRpbmcoKQogICAgIH0KICAgICBtX2lzUGFp
bnRpbmdTdXNwZW5kZWQgPSBmYWxzZTsKIAotICAgIFttX3Jvb3RMYXllciBzZXRWYWx1ZTooaWQp
a0NGQm9vbGVhbkZhbHNlIGZvcktleTpAIk5TQ0FWaWV3UmVuZGVyUGF1c2VkIl07Ci0gICAgW1tO
U05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpA
Ik5TQ0FWaWV3UmVuZGVyRGlkUmVzdW1lTm90aWZpY2F0aW9uIiBvYmplY3Q6bmlsIHVzZXJJbmZv
OltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6bV9yb290TGF5ZXIuZ2V0KCkgZm9y
S2V5OkAibGF5ZXIiXV07CisgICAgW21faG9zdGluZ0xheWVyIHNldFZhbHVlOkBOTyBmb3JLZXk6
QCJOU0NBVmlld1JlbmRlclBhdXNlZCJdOworICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVm
YXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6QCJOU0NBVmlld1JlbmRlckRpZFJlc3Vt
ZU5vdGlmaWNhdGlvbiIgb2JqZWN0Om5pbCB1c2VySW5mbzpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25h
cnlXaXRoT2JqZWN0Om1faG9zdGluZ0xheWVyLmdldCgpIGZvcktleTpAImxheWVyIl1dOwogfQog
CiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRFeHBvc2VkUmVjdChjb25z
dCBGbG9hdFJlY3QmIGV4cG9zZWRSZWN0KQpAQCAtNDk4LDcgKzQ5Niw3IEBAIHZvaWQgVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnVwZGF0ZUdlb21ldHJ5KGNvbnN0IEludFNpemUmIHZp
ZXdTaXplLCBjb25zCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAgIFtDQVRyYW5zYWN0
aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107CiAKLSAgICBtX3Jvb3RMYXllci5nZXQoKS5mcmFt
ZSA9IENHUmVjdE1ha2UobGF5ZXJQb3NpdGlvbi53aWR0aCgpLCBsYXllclBvc2l0aW9uLmhlaWdo
dCgpLCB2aWV3U2l6ZS53aWR0aCgpLCB2aWV3U2l6ZS5oZWlnaHQoKSk7CisgICAgW21faG9zdGlu
Z0xheWVyIHNldEZyYW1lOkNHUmVjdE1ha2UobGF5ZXJQb3NpdGlvbi53aWR0aCgpLCBsYXllclBv
c2l0aW9uLmhlaWdodCgpLCB2aWV3U2l6ZS53aWR0aCgpLCB2aWV3U2l6ZS5oZWlnaHQoKSldOwog
CiAgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKICAgICAKQEAgLTU1OSw4ICs1NTcsOCBAQCB2
b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVMYXllckhvc3RpbmdDb250
ZXh0KCkKICNlbmRpZgogICAgIH0KIAotICAgIGlmIChtX2hhc1Jvb3RDb21wb3NpdGluZ0xheWVy
KQotICAgICAgICBtX2xheWVySG9zdGluZ0NvbnRleHQtPnNldFJvb3RMYXllcihtX3Jvb3RMYXll
ci5nZXQoKSk7CisgICAgaWYgKG1fcm9vdExheWVyKQorICAgICAgICBtX2xheWVySG9zdGluZ0Nv
bnRleHQtPnNldFJvb3RMYXllcihtX2hvc3RpbmdMYXllci5nZXQoKSk7CiAKICAgICBpZiAoY29s
b3JTcGFjZSkKICAgICAgICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5zZXRDb2xvclNwYWNlKGNv
bG9yU3BhY2UuZ2V0KCkpOwpAQCAtNTcwLDE5ICs1NjgsMjAgQEAgdm9pZCBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTo6c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoQ0FMYXllciAqbGF5ZXIp
CiB7CiAgICAgQVNTRVJUKCFtX2xheWVyVHJlZVN0YXRlSXNGcm96ZW4pOwogCi0gICAgYm9vbCBo
YWRSb290Q29tcG9zaXRpbmdMYXllciA9IG1faGFzUm9vdENvbXBvc2l0aW5nTGF5ZXI7Ci0gICAg
bV9oYXNSb290Q29tcG9zaXRpbmdMYXllciA9ICEhbGF5ZXI7Ci0KICAgICBbQ0FUcmFuc2FjdGlv
biBiZWdpbl07CiAgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKIAot
ICAgIG1fcm9vdExheWVyLmdldCgpLnN1YmxheWVycyA9IG1faGFzUm9vdENvbXBvc2l0aW5nTGF5
ZXIgPyBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6bGF5ZXJdIDogW05TQXJyYXkgYXJyYXldOwor
ICAgIFttX2hvc3RpbmdMYXllciBzZXRTdWJsYXllcnM6bGF5ZXIgPyBbTlNBcnJheSBhcnJheVdp
dGhPYmplY3Q6bGF5ZXJdIDogW05TQXJyYXkgYXJyYXldXTsKKworICAgIGJvb2wgaGFkUm9vdExh
eWVyID0gISFtX3Jvb3RMYXllcjsKKyAgICBtX3Jvb3RMYXllciA9IGxheWVyOworICAgIFttX3Jv
b3RMYXllciBzZXRTdWJsYXllclRyYW5zZm9ybTptX3RyYW5zZm9ybV07CiAKLSAgICBpZiAoaGFk
Um9vdENvbXBvc2l0aW5nTGF5ZXIgIT0gbV9oYXNSb290Q29tcG9zaXRpbmdMYXllcikKLSAgICAg
ICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5zZXRSb290TGF5ZXIobV9oYXNSb290Q29tcG9zaXRp
bmdMYXllciA/IG1fcm9vdExheWVyLmdldCgpIDogMCk7CisgICAgaWYgKGhhZFJvb3RMYXllciAh
PSAhIWxheWVyKQorICAgICAgICBtX2xheWVySG9zdGluZ0NvbnRleHQtPnNldFJvb3RMYXllcihs
YXllciA/IG1faG9zdGluZ0xheWVyLmdldCgpIDogMCk7CiAKICAgICBmb3IgKFBhZ2VPdmVybGF5
TGF5ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wYWdlT3ZlcmxheUxheWVycy5iZWdpbigpLCBlbmQg
PSBtX3BhZ2VPdmVybGF5TGF5ZXJzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIFtt
X3Jvb3RMYXllciBhZGRTdWJsYXllcjppdC0+dmFsdWUtPnBsYXRmb3JtTGF5ZXIoKV07CisgICAg
ICAgIFttX2hvc3RpbmdMYXllciBhZGRTdWJsYXllcjppdC0+dmFsdWUtPnBsYXRmb3JtTGF5ZXIo
KV07CiAKICAgICBpZiAoVGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcgPSBtYWluRnJhbWVUaWxl
ZEJhY2tpbmcoKSkKICAgICAgICAgdGlsZWRCYWNraW5nLT5zZXRBZ2dyZXNzaXZlbHlSZXRhaW5z
VGlsZXMobV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLmFnZ3Jlc3NpdmVUaWxlUmV0
ZW50aW9uRW5hYmxlZCgpKTsKQEAgLTYwOCw3ICs2MDcsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjpjcmVhdGVQYWdlT3ZlcmxheUxheWVyKFBhZ2VPdmVybGF5KiBwYWdl
T3ZlcgogICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKICAgICBbQ0FUcmFuc2FjdGlvbiBzZXRE
aXNhYmxlQWN0aW9uczpZRVNdOwogCi0gICAgW21fcm9vdExheWVyIGFkZFN1YmxheWVyOmxheWVy
LT5wbGF0Zm9ybUxheWVyKCldOworICAgIFttX2hvc3RpbmdMYXllciBhZGRTdWJsYXllcjpsYXll
ci0+cGxhdGZvcm1MYXllcigpXTsKIAogICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CiAKQEAg
LTY0Myw3ICs2NDIsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaWRD
b21taXRDaGFuZ2VzRm9yTGF5ZXIoY29uc3QgR3JhcGhpY3NMYXllcgogICAgIFtDQVRyYW5zYWN0
aW9uIGJlZ2luXTsKICAgICBbQ0FUcmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNdOwog
Ci0gICAgW21fcm9vdExheWVyIGluc2VydFN1YmxheWVyOmxheWVyLT5wbGF0Zm9ybUxheWVyKCkg
YWJvdmU6b2xkUGxhdGZvcm1MYXllci5nZXQoKV07CisgICAgW21faG9zdGluZ0xheWVyIGluc2Vy
dFN1YmxheWVyOmxheWVyLT5wbGF0Zm9ybUxheWVyKCkgYWJvdmU6b2xkUGxhdGZvcm1MYXllci5n
ZXQoKV07CiAgICAgW29sZFBsYXRmb3JtTGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwogCiAg
ICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKQEAgLTY2OSw3ICs2NjgsNyBAQCB2b2lkIFRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjp1cGRhdGVEZWJ1Z0luZm9MYXllcihib29sIHNob3dM
YXllcikKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgICAgICBbbV9kZWJ1Z0luZm9MYXllciBzZXRO
YW1lOkAiRGVidWcgSW5mbyJdOwogI2VuZGlmCi0gICAgICAgICAgICBbbV9yb290TGF5ZXIgYWRk
U3VibGF5ZXI6bV9kZWJ1Z0luZm9MYXllci5nZXQoKV07CisgICAgICAgICAgICBbbV9ob3N0aW5n
TGF5ZXIgYWRkU3VibGF5ZXI6bV9kZWJ1Z0luZm9MYXllci5nZXQoKV07CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgaWYgKG1fZGVidWdJbmZvTGF5ZXIpIHsKICAgICAgICAgW21fZGVidWdJbmZvTGF5
ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwpAQCAtNjg4LDcgKzY4Nyw3IEBAIHZvaWQgVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxl
LCBGbG9hdFBvaW50CiAgICAgLy8gRklYTUU6IEtlZXAgYXJvdW5kIHBhZ2VTY2FsZT0xIHRpbGVz
IHNvIHdlIGNhbiB6b29tIG91dCB3aXRob3V0IGdhcHMuCiAgICAgLy8gRklYTUU6IEJyaW5nIGlu
IHVucGFyZW50ZWQtYnV0LXBhaW50ZWQgdGlsZXMgd2hlbiB6b29taW5nIG91dCwgdG8gZmlsbCBp
biBhbnkgZ2Fwcy4KIAotICAgIGlmICghbV9yb290TGF5ZXIpCisgICAgaWYgKCFtX2hvc3RpbmdM
YXllcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNm
b3JtOwpAQCAtODI3LDYgKzgyNiwxMiBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhOjphcHBseVRyYW5zaWVudFpvb21Ub1BhZ2UoZG91YmxlIHNjYWxlLCBGbG9hdAogICAgIG1f
dHJhbnNpZW50Wm9vbVNjYWxlID0gMTsKIH0KIAordm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYTo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zv
cm0pCit7CisgICAgbV90cmFuc2Zvcm0gPSB0cmFuc2Zvcm07CisgICAgW21fcm9vdExheWVyIHNl
dFN1YmxheWVyVHJhbnNmb3JtOnRyYW5zZm9ybV07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykK
</data>
<flag name="review"
          id="248501"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>