<?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>57765</bug_id>
          
          <creation_ts>2011-04-04 10:47:52 -0700</creation_ts>
          <short_desc>WK2: PDF: Find in page</short_desc>
          <delta_ts>2011-04-11 11:11:03 -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>PDF</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.6</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>buildbot</cc>
    
    <cc>eric</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>378876</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-04 10:47:52 -0700</bug_when>
    <thetext>We don&apos;t support find in page when displaying PDFs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378878</commentid>
    <comment_count>1</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-04 10:48:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/8750336&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378899</commentid>
    <comment_count>2</comment_count>
      <attachid>88084</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-04 11:17:36 -0700</bug_when>
    <thetext>Created attachment 88084
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379153</commentid>
    <comment_count>3</comment_count>
      <attachid>88146</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-04 15:52:21 -0700</bug_when>
    <thetext>Created attachment 88146
Patch

Re-upload after rebasing; this should fix the buildire&apos;s inability to merge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379156</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-04 15:54:02 -0700</bug_when>
    <thetext>Attachment 88084 did not build on mac:
Build output: http://queues.webkit.org/results/8332125</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379162</commentid>
    <comment_count>5</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-04 16:05:16 -0700</bug_when>
    <thetext>Whoops, no need for those new functions on PDFViewController to be virtual.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379163</commentid>
    <comment_count>6</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-04-04 16:06:03 -0700</bug_when>
    <thetext>Attachment 88146 did not build on qt:
Build output: http://queues.webkit.org/results/8333096</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379165</commentid>
    <comment_count>7</comment_count>
      <attachid>88147</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-04 16:07:00 -0700</bug_when>
    <thetext>Created attachment 88147
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379182</commentid>
    <comment_count>8</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-04-04 16:20:19 -0700</bug_when>
    <thetext>Attachment 88147 did not build on qt:
Build output: http://queues.webkit.org/results/8336053</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379186</commentid>
    <comment_count>9</comment_count>
      <attachid>88151</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-04 16:22:46 -0700</bug_when>
    <thetext>Created attachment 88151
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379261</commentid>
    <comment_count>10</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-04 17:51:21 -0700</bug_when>
    <thetext>Attachment 88151 did not build on win:
Build output: http://queues.webkit.org/results/8334127</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381147</commentid>
    <comment_count>11</comment_count>
      <attachid>88151</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2011-04-06 23:59:35 -0700</bug_when>
    <thetext>Comment on attachment 88151
Patch

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

Looks like this is still breaking the windows build according to EWS, so r- for that. Other than that, I don&apos;t see any obvious showstopper problems.

&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:235
&gt; +        // Initially we want to include the selected text in the search. PDFDocument&apos;s API always searches from just
&gt; +        // past the passed-in selection, so we need to pass a selection that&apos;s modified appropriately.
&gt; +        // FIXME 4182863: Ideally we&apos;d use a zero-length selection at the edge of the current selection, but zero-length
&gt; +        // selections don&apos;t work in PDFDocument. So instead we make a one-length selection just before or after the
&gt; +        // current selection, which works for our purposes even when the current selection is at an edge of the
&gt; +        // document.

This comment is a bit verbose, any way to make it shorter?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381340</commentid>
    <comment_count>12</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-07 07:54:10 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 88151 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88151&amp;action=review
&gt; 
&gt; Looks like this is still breaking the windows build according to EWS, so r- for that. Other than that, I don&apos;t see any obvious showstopper problems.

I&apos;ll get a new patch put up with a fix for the mac build.

&gt; &gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:235
&gt; &gt; +        // Initially we want to include the selected text in the search. PDFDocument&apos;s API always searches from just
&gt; &gt; +        // past the passed-in selection, so we need to pass a selection that&apos;s modified appropriately.
&gt; &gt; +        // FIXME 4182863: Ideally we&apos;d use a zero-length selection at the edge of the current selection, but zero-length
&gt; &gt; +        // selections don&apos;t work in PDFDocument. So instead we make a one-length selection just before or after the
&gt; &gt; +        // current selection, which works for our purposes even when the current selection is at an edge of the
&gt; &gt; +        // document.
&gt; 
&gt; This comment is a bit verbose, any way to make it shorter?

Probably. :)

It was copied in with the rest of the implementation from WebPDFView in WebKit/.  It was helpful to me when figuring out what this function was doing, but I could un-verbosify it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381908</commentid>
    <comment_count>13</comment_count>
      <attachid>88747</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-07 18:13:04 -0700</bug_when>
    <thetext>Created attachment 88747
Patch

Added stubs to the windows PageClient.h subclass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381922</commentid>
    <comment_count>14</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-04-07 18:33:00 -0700</bug_when>
    <thetext>Attachment 88747 did not build on qt:
Build output: http://queues.webkit.org/results/8342721</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381964</commentid>
    <comment_count>15</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-07 20:48:56 -0700</bug_when>
    <thetext>Attachment 88747 did not build on win:
Build output: http://queues.webkit.org/results/8373365</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382058</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-08 00:36:29 -0700</bug_when>
    <thetext>Attachment 88747 did not build on mac:
Build output: http://queues.webkit.org/results/8374035</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382287</commentid>
    <comment_count>17</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-08 09:24:49 -0700</bug_when>
    <thetext>Drat, part of my patch got merged out of existence.  I&apos;ll re-upload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382291</commentid>
    <comment_count>18</comment_count>
      <attachid>88829</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-08 09:34:35 -0700</bug_when>
    <thetext>Created attachment 88829
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382297</commentid>
    <comment_count>19</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-04-08 09:43:50 -0700</bug_when>
    <thetext>Attachment 88829 did not build on qt:
Build output: http://queues.webkit.org/results/8377062</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382313</commentid>
    <comment_count>20</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-08 09:55:29 -0700</bug_when>
    <thetext>Somehow managed to merge my Qt changes out of existence as well. :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382324</commentid>
    <comment_count>21</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-08 10:02:45 -0700</bug_when>
    <thetext>Attachment 88829 did not build on win:
Build output: http://queues.webkit.org/results/8377063</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382341</commentid>
    <comment_count>22</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-08 10:18:54 -0700</bug_when>
    <thetext>::Sigh::  This patch is not going well.  Waiting for the mac and gtk bots to complete to make sure I don&apos;t have any /other/ errors in my patch before re-uploading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382366</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-08 10:42:51 -0700</bug_when>
    <thetext>Attachment 88829 did not build on mac:
Build output: http://queues.webkit.org/results/8374175</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382415</commentid>
    <comment_count>24</comment_count>
      <attachid>88849</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-08 11:43:01 -0700</bug_when>
    <thetext>Created attachment 88849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382970</commentid>
    <comment_count>25</comment_count>
      <attachid>88849</attachid>
    <who name="">mitz</who>
    <bug_when>2011-04-10 17:16:49 -0700</bug_when>
    <thetext>Comment on attachment 88849
Patch

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

&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:91
&gt; +    int count = [aPages count];
&gt; +    int i;
&gt; +    for (i = 0; i &lt; count; ++i) {

In Objective-C++, you’re allow to define i inside the for statement.  count and i can also be an NSUIntegers.

&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:96
&gt; +        if (!NSEqualRects(aBounds, bBounds)) {
&gt; +            return NO;
&gt; +        }

No braces around single-line blocks please.

&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:118
&gt; +- (PDFSelection *)_nextMatchFor:(NSString *)string direction:(BOOL)forward caseSensitive:(BOOL)caseFlag wrap:(BOOL)wrapFlag fromSelection:(PDFSelection *)initialSelection startInSelection:(BOOL)startInSelection;

Search methods with multiple flags are old-school. The new preferred way is to use a single options parameter. But I guess this is fine.

&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:243
&gt; +    [selectionForInitialSearch release];

You could use a RetainPtr instead of manually releasing here.

&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:255
&gt; +- (NSUInteger)_countMatches:(NSString*)string caseSensitive:(BOOL)caseFlag

Missing space after “NSString”

&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:258
&gt; +        return nil;

Shouldn’t return nil from a method with an NSUInteger return type.

&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:624
&gt; +    page()-&gt;didFindString(string, matchCount);

This function ignores maxMatchCount (I wonder why the compiler isn’t complaining). Shouldn’t it do the same thing FindController does, namely:

            // Check if we have more matches than allowed.
            if (matchCount &gt; maxMatchCount)
                matchCount = static_cast&lt;unsigned&gt;(kWKMoreThanMaximumMatchCount);

&gt; Source/WebKit2/UIProcess/API/mac/PDFViewController.mm:632
&gt; +    page()-&gt;didCountStringMatches(string, matchCount);

Ditto regarding maxMatchCount.

&gt; Source/WebKit2/UIProcess/API/mac/WKViewInternal.h:75
&gt; +- (void)_findStringInCustomRepresentation:(NSString *)string withFindOptions:(NSUInteger)options maxMatchCount:(NSUInteger)count;
&gt; +- (void)_countStringMatchesInCustomRepresentation:(NSString *)string withFindOptions:(NSUInteger)options maxMatchCount:(NSUInteger)count;

These are internal methods, so the options parameter can be a WebKit::FindOptions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382992</commentid>
    <comment_count>26</comment_count>
      <attachid>88849</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2011-04-10 18:41:57 -0700</bug_when>
    <thetext>Comment on attachment 88849
Patch

I&apos;m going to say r+ despite all of Dan&apos;s comments, because the change looks functionally correct, and much of this is copied code which already had the issues in question. But please take a look at them and consider fixing those issues before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383284</commentid>
    <comment_count>27</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-04-11 11:11:03 -0700</bug_when>
    <thetext>Committed r83454: &lt;http://trac.webkit.org/changeset/83454&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88084</attachid>
            <date>2011-04-04 11:17:36 -0700</date>
            <delta_ts>2011-04-04 15:52:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57765-20110404111744.patch</filename>
            <type>text/plain</type>
            <size>16976</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI3MzcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlOTdlYzRiNjg4ZGYwMjgy
MGE5MzdjZWM5ZGFkNjRkMzdjODgyZDBiLi4xNmY5NDg1M2Q4NTVlNzNiYTBjNzUzMDY3YjNhY2E1
OTI5OGFjOWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDQtMDQgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV0syOiBQREY6IEZpbmQgaW4gcGFnZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc3NjUKKworICAgICAgICBTdXBw
b3J0IHNlYXJjaGluZyB0ZXh0IHdpdGhpbiBQREYgZG9jdW1lbnRzLiAgRmluZCByZXF1ZXN0cyBt
dXN0IGJlIHJvdXRlZCBmcm9tIHRoZQorICAgICAgICBXZWJQYWdlUHJveHksIHRocm91Z2ggdGhl
IFBhZ2VDbGllbnQsIGFuZCB0byB0aGUgV0tWaWV3LCB3aGVyZSB0aGV5IGNhbiBiZSBwYXNzZWQg
dG8gCisgICAgICAgIHRoZSBQREZWaWV3Q29udHJvbGxlci4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvbWFjL1BERlZpZXdDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9t
YWMvUERGVmlld0NvbnRyb2xsZXIubW06CisgICAgICAgIChfUERGU2VsZWN0aW9uc0FyZUVxdWFs
KTogQ29waWVkIGZyb20gV2ViUERGVmlldy4KKyAgICAgICAgKC1bV0tQREZWaWV3IF9uZXh0TWF0
Y2hGb3I6ZGlyZWN0aW9uOmNhc2VTZW5zaXRpdmU6d3JhcDpmcm9tU2VsZWN0aW9uOnN0YXJ0SW5T
ZWxlY3Rpb246XSk6IENvcGllZCBmcm9tIFdlYlBERlZpZXcuCisgICAgICAgICgtW1dLUERGVmll
dyBfY291bnRNYXRjaGVzOmNhc2VTZW5zaXRpdmU6XSk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpQREZWaWV3Q29udHJvbGxlcjo6ZmluZFN0cmluZyk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpQREZWaWV3Q29udHJvbGxlcjo6Y291bnRTdHJpbmdNYXRjaGVzKTogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9Q
YWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJ
bXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZmluZFN0cmluZ0luQ3Vz
dG9tUmVwcmVzZW50YXRpb24pOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmNvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRpb24pOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IF9maW5kU3RyaW5n
SW5DdXN0b21SZXByZXNlbnRhdGlvbjp3aXRoRmluZE9wdGlvbnM6bWF4TWF0Y2hDb3VudDpdKTog
QWRkZWQuCisgICAgICAgICgtW1dLVmlldyBfY291bnRTdHJpbmdNYXRjaGVzSW5DdXN0b21SZXBy
ZXNlbnRhdGlvbjp3aXRoRmluZE9wdGlvbnM6bWF4TWF0Y2hDb3VudDpdKTogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOiBNb3ZlZCBhIG51bWJlciBvZiBmaW5kLXJl
bGF0ZWQgZnVuY3Rpb25zIGZyb20gcHJpdmF0ZTogdG8gcHVibGljOiBzbworICAgICAgICAgICAg
dGhleSBjb3VsZCBiZSBjYWxsZWQgZnJvbSBQREZWaWV3Q29udHJvbGxlci4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpmaW5kU3RyaW5nKTogQWRkZWQuIAorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNv
dW50U3RyaW5nTWF0Y2hlcyk6IEFkZGVkLgorCiAyMDExLTAzLTMwICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUERGVmlld0NvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BERlZpZXdDb250cm9s
bGVyLmgKaW5kZXggY2MzYjI5OWRlYTgwNzkxZmQyYjYxYjViYTVlOTQ4NTdhODllMWMzOC4uOTk0
MjNkMmQyYmRjN2VkYjM2NmZhMzJiY2I5ODY4M2Q3ZDc5NmIwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUERGVmlld0NvbnRyb2xsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QREZWaWV3Q29udHJvbGxlci5oCkBAIC0yNiw2
ICsyNiw3IEBACiAjaWZuZGVmIFBERlZpZXdDb250cm9sbGVyX2gKICNkZWZpbmUgUERGVmlld0Nv
bnRyb2xsZXJfaAogCisjaW5jbHVkZSAiV2ViRmluZE9wdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CkBAIC02Niw2ICs2Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNhdmVQREZU
b0Rvd25sb2Fkc0ZvbGRlcigpOwogICAgIHZvaWQgbGlua0NsaWNrZWQoY29uc3QgU3RyaW5nJiB1
cmwpOwogCisgICAgdmlydHVhbCB2b2lkIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgRmluZE9w
dGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOworICAgIHZpcnR1YWwgdm9pZCBjb3VudFN0
cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNo
Q291bnQpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFBERlZpZXdDb250cm9sbGVyKFdLVmll
dyAqd2tWaWV3KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9t
YWMvUERGVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9QREZWaWV3Q29udHJvbGxlci5tbQppbmRleCBlZjcwYmU0ZjE2ZjA2N2MzY2M2Nzk1ZmUwNTk2
Nzc5MWNlMjRmOTE4Li5kNmYxN2JmYzMyMjZhOGVlNDE4MWI0YzcwNWI1NjVjMTYzOGI3ZTI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QREZWaWV3Q29udHJv
bGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QREZWaWV3Q29u
dHJvbGxlci5tbQpAQCAtNzYsNiArNzYsMjkgQEAgc3RhdGljIHZvaWQgX2FwcGxpY2F0aW9uSW5m
b0Zvck1JTUVUeXBlKE5TU3RyaW5nICp0eXBlLCBOU1N0cmluZyAqKm5hbWUsIE5TSW1hZ2UKICAg
ICAqbmFtZSA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZGlzcGxheU5hbWVBdFBh
dGg6YXBwUGF0aF07CiB9CiAKKy8vIEZJWE1FIDQxODI4NzY6IFdlIGNhbiBlbGltaW5hdGUgdGhp
cyBmdW5jdGlvbiBpbiBmYXZvciBpZiAtaXNFcXVhbDogaWYgW1BERlNlbGVjdGlvbiBpc0VxdWFs
Ol0gaXMgb3ZlcnJpZGRlbgorLy8gdG8gY29tcGFyZSBjb250ZW50cy4KK3N0YXRpYyBCT09MIF9Q
REZTZWxlY3Rpb25zQXJlRXF1YWwoUERGU2VsZWN0aW9uICpzZWxlY3Rpb25BLCBQREZTZWxlY3Rp
b24gKnNlbGVjdGlvbkIpCit7CisgICAgTlNBcnJheSAqYVBhZ2VzID0gW3NlbGVjdGlvbkEgcGFn
ZXNdOworICAgIE5TQXJyYXkgKmJQYWdlcyA9IFtzZWxlY3Rpb25CIHBhZ2VzXTsKKworICAgIGlm
ICghW2FQYWdlcyBpc0VxdWFsOmJQYWdlc10pCisgICAgICAgIHJldHVybiBOTzsKKworICAgIGlu
dCBjb3VudCA9IFthUGFnZXMgY291bnRdOworICAgIGludCBpOworICAgIGZvciAoaSA9IDA7IGkg
PCBjb3VudDsgKytpKSB7CisgICAgICAgIE5TUmVjdCBhQm91bmRzID0gW3NlbGVjdGlvbkEgYm91
bmRzRm9yUGFnZTpbYVBhZ2VzIG9iamVjdEF0SW5kZXg6aV1dOworICAgICAgICBOU1JlY3QgYkJv
dW5kcyA9IFtzZWxlY3Rpb25CIGJvdW5kc0ZvclBhZ2U6W2JQYWdlcyBvYmplY3RBdEluZGV4Omld
XTsKKyAgICAgICAgaWYgKCFOU0VxdWFsUmVjdHMoYUJvdW5kcywgYkJvdW5kcykpIHsKKyAgICAg
ICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBZRVM7Cit9
CisKIEBpbnRlcmZhY2UgV0tQREZWaWV3IDogTlNWaWV3CiB7CiAgICAgUERGVmlld0NvbnRyb2xs
ZXIqIF9wZGZWaWV3Q29udHJvbGxlcjsKQEAgLTkyLDcgKzExNSw3IEBAIHN0YXRpYyB2b2lkIF9h
cHBsaWNhdGlvbkluZm9Gb3JNSU1FVHlwZShOU1N0cmluZyAqdHlwZSwgTlNTdHJpbmcgKipuYW1l
LCBOU0ltYWdlCiAtICh2b2lkKXNldERvY3VtZW50OihQREZEb2N1bWVudCAqKXBkZkRvY3VtZW50
OwogCiAtICh2b2lkKV9hcHBseVBERlByZWZlcmVuY2VzOwotCistIChQREZTZWxlY3Rpb24gKilf
bmV4dE1hdGNoRm9yOihOU1N0cmluZyAqKXN0cmluZyBkaXJlY3Rpb246KEJPT0wpZm9yd2FyZCBj
YXNlU2Vuc2l0aXZlOihCT09MKWNhc2VGbGFnIHdyYXA6KEJPT0wpd3JhcEZsYWcgZnJvbVNlbGVj
dGlvbjooUERGU2VsZWN0aW9uICopaW5pdGlhbFNlbGVjdGlvbiBzdGFydEluU2VsZWN0aW9uOihC
T09MKXN0YXJ0SW5TZWxlY3Rpb247CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1BERlZpZXcK
QEAgLTE4OCw2ICsyMTEsNjAgQEAgc3RhdGljIHZvaWQgX2FwcGxpY2F0aW9uSW5mb0Zvck1JTUVU
eXBlKE5TU3RyaW5nICp0eXBlLCBOU1N0cmluZyAqKm5hbWUsIE5TSW1hZ2UKICAgICBfcGRmVmll
d0NvbnRyb2xsZXItPm9wZW5QREZJbkZpbmRlcigpOwogfQogCistIChQREZTZWxlY3Rpb24gKilf
bmV4dE1hdGNoRm9yOihOU1N0cmluZyAqKXN0cmluZyBkaXJlY3Rpb246KEJPT0wpZm9yd2FyZCBj
YXNlU2Vuc2l0aXZlOihCT09MKWNhc2VGbGFnIHdyYXA6KEJPT0wpd3JhcEZsYWcgZnJvbVNlbGVj
dGlvbjooUERGU2VsZWN0aW9uICopaW5pdGlhbFNlbGVjdGlvbiBzdGFydEluU2VsZWN0aW9uOihC
T09MKXN0YXJ0SW5TZWxlY3Rpb24KK3sKKyAgICBpZiAoIVtzdHJpbmcgbGVuZ3RoXSkKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKworICAgIGludCBvcHRpb25zID0gMDsKKyAgICBpZiAoIWZvcndhcmQp
CisgICAgICAgIG9wdGlvbnMgfD0gTlNCYWNrd2FyZHNTZWFyY2g7CisKKyAgICBpZiAoIWNhc2VG
bGFnKQorICAgICAgICBvcHRpb25zIHw9IE5TQ2FzZUluc2Vuc2l0aXZlU2VhcmNoOworCisgICAg
UERGRG9jdW1lbnQgKmRvY3VtZW50ID0gW19wZGZWaWV3IGRvY3VtZW50XTsKKworICAgIFBERlNl
bGVjdGlvbiAqc2VsZWN0aW9uRm9ySW5pdGlhbFNlYXJjaCA9IFtpbml0aWFsU2VsZWN0aW9uIGNv
cHldOworICAgIGlmIChzdGFydEluU2VsZWN0aW9uKSB7CisgICAgICAgIC8vIEluaXRpYWxseSB3
ZSB3YW50IHRvIGluY2x1ZGUgdGhlIHNlbGVjdGVkIHRleHQgaW4gdGhlIHNlYXJjaC4gUERGRG9j
dW1lbnQncyBBUEkgYWx3YXlzIHNlYXJjaGVzIGZyb20ganVzdAorICAgICAgICAvLyBwYXN0IHRo
ZSBwYXNzZWQtaW4gc2VsZWN0aW9uLCBzbyB3ZSBuZWVkIHRvIHBhc3MgYSBzZWxlY3Rpb24gdGhh
dCdzIG1vZGlmaWVkIGFwcHJvcHJpYXRlbHkuCisgICAgICAgIC8vIEZJWE1FIDQxODI4NjM6IElk
ZWFsbHkgd2UnZCB1c2UgYSB6ZXJvLWxlbmd0aCBzZWxlY3Rpb24gYXQgdGhlIGVkZ2Ugb2YgdGhl
IGN1cnJlbnQgc2VsZWN0aW9uLCBidXQgemVyby1sZW5ndGgKKyAgICAgICAgLy8gc2VsZWN0aW9u
cyBkb24ndCB3b3JrIGluIFBERkRvY3VtZW50LiBTbyBpbnN0ZWFkIHdlIG1ha2UgYSBvbmUtbGVu
Z3RoIHNlbGVjdGlvbiBqdXN0IGJlZm9yZSBvciBhZnRlciB0aGUKKyAgICAgICAgLy8gY3VycmVu
dCBzZWxlY3Rpb24sIHdoaWNoIHdvcmtzIGZvciBvdXIgcHVycG9zZXMgZXZlbiB3aGVuIHRoZSBj
dXJyZW50IHNlbGVjdGlvbiBpcyBhdCBhbiBlZGdlIG9mIHRoZQorICAgICAgICAvLyBkb2N1bWVu
dC4KKyAgICAgICAgaW50IGluaXRpYWxTZWxlY3Rpb25MZW5ndGggPSBbW2luaXRpYWxTZWxlY3Rp
b24gc3RyaW5nXSBsZW5ndGhdOworICAgICAgICBpZiAoZm9yd2FyZCkgeworICAgICAgICAgICAg
W3NlbGVjdGlvbkZvckluaXRpYWxTZWFyY2ggZXh0ZW5kU2VsZWN0aW9uQXRTdGFydDoxXTsKKyAg
ICAgICAgICAgIFtzZWxlY3Rpb25Gb3JJbml0aWFsU2VhcmNoIGV4dGVuZFNlbGVjdGlvbkF0RW5k
Oi1pbml0aWFsU2VsZWN0aW9uTGVuZ3RoXTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IFtzZWxlY3Rpb25Gb3JJbml0aWFsU2VhcmNoIGV4dGVuZFNlbGVjdGlvbkF0RW5kOjFdOworICAg
ICAgICAgICAgW3NlbGVjdGlvbkZvckluaXRpYWxTZWFyY2ggZXh0ZW5kU2VsZWN0aW9uQXRTdGFy
dDotaW5pdGlhbFNlbGVjdGlvbkxlbmd0aF07CisgICAgICAgIH0KKyAgICB9CisgICAgUERGU2Vs
ZWN0aW9uICpmb3VuZFNlbGVjdGlvbiA9IFtkb2N1bWVudCBmaW5kU3RyaW5nOnN0cmluZyBmcm9t
U2VsZWN0aW9uOnNlbGVjdGlvbkZvckluaXRpYWxTZWFyY2ggd2l0aE9wdGlvbnM6b3B0aW9uc107
CisgICAgW3NlbGVjdGlvbkZvckluaXRpYWxTZWFyY2ggcmVsZWFzZV07CisKKyAgICAvLyBJZiB3
ZSBmaXJzdCBzZWFyY2hlZCBpbiB0aGUgc2VsZWN0aW9uLCBhbmQgd2UgZm91bmQgdGhlIHNlbGVj
dGlvbiwgc2VhcmNoIGFnYWluIGZyb20ganVzdCBwYXN0IHRoZSBzZWxlY3Rpb24KKyAgICBpZiAo
c3RhcnRJblNlbGVjdGlvbiAmJiBfUERGU2VsZWN0aW9uc0FyZUVxdWFsKGZvdW5kU2VsZWN0aW9u
LCBpbml0aWFsU2VsZWN0aW9uKSkKKyAgICAgICAgZm91bmRTZWxlY3Rpb24gPSBbZG9jdW1lbnQg
ZmluZFN0cmluZzpzdHJpbmcgZnJvbVNlbGVjdGlvbjppbml0aWFsU2VsZWN0aW9uIHdpdGhPcHRp
b25zOm9wdGlvbnNdOworCisgICAgaWYgKCFmb3VuZFNlbGVjdGlvbiAmJiB3cmFwRmxhZykKKyAg
ICAgICAgZm91bmRTZWxlY3Rpb24gPSBbZG9jdW1lbnQgZmluZFN0cmluZzpzdHJpbmcgZnJvbVNl
bGVjdGlvbjpuaWwgd2l0aE9wdGlvbnM6b3B0aW9uc107CisKKyAgICByZXR1cm4gZm91bmRTZWxl
Y3Rpb247Cit9CisKKy0gKE5TVUludGVnZXIpX2NvdW50TWF0Y2hlczooTlNTdHJpbmcqKXN0cmlu
ZyBjYXNlU2Vuc2l0aXZlOihCT09MKWNhc2VGbGFnCit7CisgICAgaWYgKCFbc3RyaW5nIGxlbmd0
aF0pCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBpbnQgb3B0aW9ucyA9IGNhc2VGbGFnID8g
MCA6IE5TQ2FzZUluc2Vuc2l0aXZlU2VhcmNoOworCisgICAgcmV0dXJuIFtbW19wZGZWaWV3IGRv
Y3VtZW50XSBmaW5kU3RyaW5nOnN0cmluZyB3aXRoT3B0aW9uczpvcHRpb25zXSBjb3VudF07Cit9
CisKIC8vIE1BUks6IE5TVmlldyBvdmVycmlkZXMKIAogLSAodm9pZCl2aWV3RGlkTW92ZVRvV2lu
ZG93CkBAIC01MzEsNCArNjA4LDMxIEBAIHZvaWQgUERGVmlld0NvbnRyb2xsZXI6OmxpbmtDbGlj
a2VkKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIHBhZ2UoKS0+bGlua0NsaWNrZWQodXJsLCBldmVu
dCk7CiB9CiAKK3ZvaWQgUERGVmlld0NvbnRyb2xsZXI6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5n
JiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCit7
CisgICAgQk9PTCBmb3J3YXJkID0gIShvcHRpb25zICYgRmluZE9wdGlvbnNCYWNrd2FyZHMpOwor
ICAgIEJPT0wgY2FzZUZsYWcgPSAhKG9wdGlvbnMgJiBGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2
ZSk7CisgICAgQk9PTCB3cmFwRmxhZyA9IG9wdGlvbnMgJiBGaW5kT3B0aW9uc1dyYXBBcm91bmQ7
CisKKyAgICBQREZTZWxlY3Rpb24gKnNlbGVjdGlvbiA9IFttX3drUERGVmlldy5nZXQoKSBfbmV4
dE1hdGNoRm9yOnN0cmluZyBkaXJlY3Rpb246Zm9yd2FyZCBjYXNlU2Vuc2l0aXZlOmNhc2VGbGFn
IHdyYXA6d3JhcEZsYWcgZnJvbVNlbGVjdGlvbjpbbV9wZGZWaWV3IGN1cnJlbnRTZWxlY3Rpb25d
IHN0YXJ0SW5TZWxlY3Rpb246Tk9dOworICAgIE5TVUludGVnZXIgbWF0Y2hDb3VudCA9IFttX3dr
UERGVmlldy5nZXQoKSBfY291bnRNYXRjaGVzOnN0cmluZyBjYXNlU2Vuc2l0aXZlOmNhc2VGbGFn
XTsKKworICAgIGlmICghc2VsZWN0aW9uKSB7CisgICAgICAgIHBhZ2UoKS0+ZGlkRmFpbFRvRmlu
ZFN0cmluZyhzdHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgW21fcGRmVmll
dyBzZXRDdXJyZW50U2VsZWN0aW9uOnNlbGVjdGlvbl07CisgICAgW21fcGRmVmlldyBzY3JvbGxT
ZWxlY3Rpb25Ub1Zpc2libGU6bmlsXTsKKyAgICBwYWdlKCktPmRpZEZpbmRTdHJpbmcoc3RyaW5n
LCBtYXRjaENvdW50KTsKK30KKwordm9pZCBQREZWaWV3Q29udHJvbGxlcjo6Y291bnRTdHJpbmdN
YXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25l
ZCBtYXhNYXRjaENvdW50KQoreworICAgIEJPT0wgY2FzZUZsYWcgPSAhKG9wdGlvbnMgJiBGaW5k
T3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSk7CisKKyAgICBOU1VJbnRlZ2VyIG1hdGNoQ291bnQgPSBb
bV93a1BERlZpZXcuZ2V0KCkgX2NvdW50TWF0Y2hlczpzdHJpbmcgY2FzZVNlbnNpdGl2ZTpjYXNl
RmxhZ107CisgICAgcGFnZSgpLT5kaWRDb3VudFN0cmluZ01hdGNoZXMoc3RyaW5nLCBtYXRjaENv
dW50KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAppbmRleCA2MzZmMTJlNzRiM2QyNDAx
OTBmZWJjN2I5ZmY2YmU5Y2EwNGU0N2U5Li5hNDhlMWMzNGIxNDk4MGFkM2E1ZTJlOGEwNmJiZThk
NWIxM2JiODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9Q
YWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1Bh
Z2VDbGllbnRJbXBsLmgKQEAgLTEwMCw2ICsxMDAsOCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVh
bCBkb3VibGUgY3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKCk7CiAgICAgdmlydHVhbCB2
b2lkIHNldEN1c3RvbVJlcHJlc2VudGF0aW9uWm9vbUZhY3Rvcihkb3VibGUpOworICAgIHZpcnR1
YWwgdm9pZCBmaW5kU3RyaW5nSW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBG
aW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7CisgICAgdmlydHVhbCB2b2lkIGNv
dW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiwgRmlu
ZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOwogCiAgICAgdmlydHVhbCB2b2lkIGZs
YXNoQmFja2luZ1N0b3JlVXBkYXRlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHVw
ZGF0ZVJlY3RzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9t
YWMvUGFnZUNsaWVudEltcGwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9Q
YWdlQ2xpZW50SW1wbC5tbQppbmRleCBjNTI2NGQyZDA1M2NkYjI5NGU1NGRiZDEyN2VjM2QzNTJl
NzRmOWE4Li4zNTJlYjgzNWRjMzhjODMwNjgyNTEwZWUxOWFjODQ4MWYyYzljODgxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQpA
QCAtNDA3LDYgKzQwNywxNiBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRDdXN0b21SZXByZXNl
bnRhdGlvblpvb21GYWN0b3IoZG91YmxlIHpvb21GYWN0b3IpCiAgICAgW21fd2tWaWV3IF9zZXRD
dXN0b21SZXByZXNlbnRhdGlvblpvb21GYWN0b3I6em9vbUZhY3Rvcl07CiB9CiAKK3ZvaWQgUGFn
ZUNsaWVudEltcGw6OmZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQor
eworICAgIFttX3drVmlldyBfZmluZFN0cmluZ0luQ3VzdG9tUmVwcmVzZW50YXRpb246c3RyaW5n
IHdpdGhGaW5kT3B0aW9uczpvcHRpb25zIG1heE1hdGNoQ291bnQ6bWF4TWF0Y2hDb3VudF07Cit9
CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmNvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVz
ZW50YXRpb24oY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2ln
bmVkIG1heE1hdGNoQ291bnQpCit7CisgICAgW21fd2tWaWV3IF9jb3VudFN0cmluZ01hdGNoZXNJ
bkN1c3RvbVJlcHJlc2VudGF0aW9uOnN0cmluZyB3aXRoRmluZE9wdGlvbnM6b3B0aW9ucyBtYXhN
YXRjaENvdW50Om1heE1hdGNoQ291bnRdOworfQorCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpmbGFz
aEJhY2tpbmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVjdG9yPEludFJlY3Q+JikKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9t
YWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1t
CmluZGV4IDRmYTgwMDk0ZGEzOTdmZWQxMzRlZTY2MDA3MjBmMWUxOWUwZTg0ZTIuLjY0NWIyYTAw
NDcwMjk1M2FlMjYzNGZlZGRiOGYzZjQ2YjVmN2IwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTIxMDgsNiArMjEwOCwyMiBAQCBzdGF0aWMgdm9p
ZCBkcmF3UGFnZUJhY2tncm91bmQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIFdlYlBhZ2VQcm94eSog
cGFnZSwgY29uc3QgSQogICAgIF9kYXRhLT5fcGRmVmlld0NvbnRyb2xsZXItPnNldFpvb21GYWN0
b3Ioem9vbUZhY3Rvcik7CiB9CiAKKy0gKHZvaWQpX2ZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2Vu
dGF0aW9uOihOU1N0cmluZyAqKXN0cmluZyB3aXRoRmluZE9wdGlvbnM6KE5TVUludGVnZXIpb3B0
aW9ucyBtYXhNYXRjaENvdW50OihOU1VJbnRlZ2VyKWNvdW50Cit7CisgICAgaWYgKCFfZGF0YS0+
X3BkZlZpZXdDb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBfZGF0YS0+X3BkZlZp
ZXdDb250cm9sbGVyLT5maW5kU3RyaW5nKHN0cmluZywgc3RhdGljX2Nhc3Q8V2ViS2l0OjpGaW5k
T3B0aW9ucz4ob3B0aW9ucyksIGNvdW50KTsKK30KKworLSAodm9pZClfY291bnRTdHJpbmdNYXRj
aGVzSW5DdXN0b21SZXByZXNlbnRhdGlvbjooTlNTdHJpbmcgKilzdHJpbmcgd2l0aEZpbmRPcHRp
b25zOihOU1VJbnRlZ2VyKW9wdGlvbnMgbWF4TWF0Y2hDb3VudDooTlNVSW50ZWdlciljb3VudAor
eworICAgIGlmICghX2RhdGEtPl9wZGZWaWV3Q29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgX2RhdGEtPl9wZGZWaWV3Q29udHJvbGxlci0+Y291bnRTdHJpbmdNYXRjaGVzKHN0cmlu
Zywgc3RhdGljX2Nhc3Q8V2ViS2l0OjpGaW5kT3B0aW9ucz4ob3B0aW9ucyksIGNvdW50KTsKK30K
KwogLSAodm9pZClfc2V0RHJhZ0ltYWdlOihOU0ltYWdlICopaW1hZ2UgYXQ6KE5TUG9pbnQpY2xp
ZW50UG9pbnQgbGlua0RyYWc6KEJPT0wpbGlua0RyYWcKIHsKICAgICAvLyBXZSBuZWVkIHRvIHBy
ZXZlbnQgcmUtZW50ZXJpbmcgdGhpcyBjYWxsIHRvIGF2b2lkIGNyYXNoaW5nIGluIEFwcEtpdC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVy
bmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5o
CmluZGV4IGE2MjZlYzIyOWJjNzdhNjUwZDQ3ZGRjM2VhNzAwYjYwYzFmNGY3YTQuLmI2ZDg2YTUw
MDQwNzYxNTJkMGNlZTVhY2ZlMDExYzU0MjIwMTVmMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaApAQCAtNjgsNiArNjgsOCBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIC0gKHZvaWQpX2RpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9t
UmVwcmVzZW50YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KGNvbnN0IFN0cmluZyYpc3VnZ2Vz
dGVkRmlsZW5hbWUgZGF0YVJlZmVyZW5jZTooY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYp
ZGF0YVJlZmVyZW5jZTsKIC0gKGRvdWJsZSlfY3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9y
OwogLSAodm9pZClfc2V0Q3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yOihkb3VibGUpem9v
bUZhY3RvcjsKKy0gKHZvaWQpX2ZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0aW9uOihOU1N0
cmluZyAqKXN0cmluZyB3aXRoRmluZE9wdGlvbnM6KE5TVUludGVnZXIpb3B0aW9ucyBtYXhNYXRj
aENvdW50OihOU1VJbnRlZ2VyKWNvdW50OworLSAodm9pZClfY291bnRTdHJpbmdNYXRjaGVzSW5D
dXN0b21SZXByZXNlbnRhdGlvbjooTlNTdHJpbmcgKilzdHJpbmcgd2l0aEZpbmRPcHRpb25zOihO
U1VJbnRlZ2VyKW9wdGlvbnMgbWF4TWF0Y2hDb3VudDooTlNVSW50ZWdlciljb3VudDsKIC0gKHZv
aWQpX3NldERyYWdJbWFnZTooTlNJbWFnZSAqKWltYWdlIGF0OihOU1BvaW50KWNsaWVudFBvaW50
IGxpbmtEcmFnOihCT09MKWxpbmtEcmFnOwogCiAtICh2b2lkKV9zZXREcmF3aW5nQXJlYVNpemU6
KE5TU2l6ZSlzaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggOWM2
ZTJhNGRiMmNmNmI1MzM0NTFhY2E5M2MyY2U5NzcyYzQ2YjE3OS4uY2M5ZTliYTk4YTM1OGVmZjJh
Njk1ZDEzYmQ1NzFkMmVhNTc2OTQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oCkBAIC0xNDUsNiArMTQ1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDdXN0
b21SZXByZXNlbnRhdGlvblpvb21GYWN0b3IoZG91YmxlKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZv
aWQgZmxhc2hCYWNraW5nU3RvcmVVcGRhdGVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0
PiYgdXBkYXRlUmVjdHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmluZFN0cmluZ0luQ3VzdG9t
UmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1h
dGNoQ291bnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY291bnRTdHJpbmdNYXRjaGVzSW5DdXN0
b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4
TWF0Y2hDb3VudCkgPSAwOwogCiAgICAgdmlydHVhbCBmbG9hdCB1c2VyU3BhY2VTY2FsZUZhY3Rv
cigpIGNvbnN0ID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IDU0ZTBkM2UwYzVhNzQzNGI0ZmIwZTQxMmRmNDc1NDM5MWY3NzBiYTYuLjhkZDg0
N2E0Y2JjYjgyMzAxNDNiN2Y1NTQ3OTdkZDc3NjhjYmE3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMDg2LDcgKzEwODYsMTAgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldE1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkKGJvb2wgbWVtb3J5Q2Fj
aGVDbGllbnRDYWxsc0UKIAogdm9pZCBXZWJQYWdlUHJveHk6OmZpbmRTdHJpbmcoY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQp
CiB7Ci0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaW5kU3RyaW5nKHN0
cmluZywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCksIG1fcGFnZUlEKTsKKyAgICBpZiAobV9tYWlu
RnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbikKKyAgICAgICAgbV9wYWdlQ2xpZW50LT5maW5k
U3RyaW5nSW5DdXN0b21SZXByZXNlbnRhdGlvbihzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291
bnQpOworICAgIGVsc2UKKyAgICAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpGaW5kU3RyaW5nKHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCksIG1fcGFnZUlEKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmhpZGVGaW5kVUkoKQpAQCAtMTA5Niw3ICsxMDk5LDEw
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoaWRlRmluZFVJKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6
OmNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0
aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKIHsKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkNvdW50U3RyaW5nTWF0Y2hlcyhzdHJpbmcsIG9wdGlvbnMsIG1heE1h
dGNoQ291bnQpLCBtX3BhZ2VJRCk7CisgICAgaWYgKG1fbWFpbkZyYW1lSGFzQ3VzdG9tUmVwcmVz
ZW50YXRpb24pCisgICAgICAgIG1fcGFnZUNsaWVudC0+Y291bnRTdHJpbmdNYXRjaGVzSW5DdXN0
b21SZXByZXNlbnRhdGlvbihzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpOworICAgIGVs
c2UKKyAgICAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb3VudFN0cmlu
Z01hdGNoZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSwgbV9wYWdlSUQpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCBQYXNzUmVmUHRyPFNjcmlwdFZhbHVlQ2FsbGJhY2s+IHBycENhbGxiYWNrKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDBkMzI2ODYzMjAwYmMz
MTlhMTA4YjAzYmYzYzcwZjA0MzM0YjU0ZjguLjA5MzI5NzFmNTIyY2U1ZTEyNDlmMWEwNGRjYWEy
MjY3NWFjNGYwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAg
LTM0OCw2ICszNDgsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZmluZFN0cmluZyhjb25zdCBTdHJp
bmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7CiAgICAgdm9pZCBoaWRl
RmluZFVJKCk7CiAgICAgdm9pZCBjb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgRmlu
ZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOworICAgIHZvaWQgZGlkQ291bnRTdHJp
bmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIHVpbnQzMl90IG1hdGNoQ291bnQpOworICAgIHZvaWQg
c2V0RmluZEluZGljYXRvcihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNlbGVjdGlvblJlY3RJ
bldpbmRvd0Nvb3JkaW5hdGVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYgdGV4
dFJlY3RzSW5TZWxlY3Rpb25SZWN0Q29vcmRpbmF0ZXMsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlJiBjb250ZW50SW1hZ2VIYW5kbGUsIGJvb2wgZmFkZU91dCk7CisgICAgdm9pZCBkaWRG
aW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIHVpbnQzMl90IG1hdGNoQ291bnQpOworICAgIHZvaWQg
ZGlkRmFpbFRvRmluZFN0cmluZyhjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgZ2V0Q29udGVu
dHNBc1N0cmluZyhQYXNzUmVmUHRyPFN0cmluZ0NhbGxiYWNrPik7CiAgICAgdm9pZCBnZXRNYWlu
UmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJGcmFtZVByb3h5KiwgUGFzc1JlZlB0cjxEYXRhQ2FsbGJh
Y2s+KTsKQEAgLTU5NCwxMiArNTk4LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGludGVycHJldFF1
ZXVlZEtleUV2ZW50KGNvbnN0IFRleHRJbnB1dFN0YXRlJiwgYm9vbCYgaGFuZGxlZCwgVmVjdG9y
PFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4mKTsKICNlbmRpZgogICAgIAotICAgIC8vIEZpbmQu
Ci0gICAgdm9pZCBkaWRDb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgdWludDMyX3Qg
bWF0Y2hDb3VudCk7Ci0gICAgdm9pZCBzZXRGaW5kSW5kaWNhdG9yKGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYgc2VsZWN0aW9uUmVjdEluV2luZG93Q29vcmRpbmF0ZXMsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpGbG9hdFJlY3Q+JiB0ZXh0UmVjdHNJblNlbGVjdGlvblJlY3RDb29yZGluYXRlcywg
Y29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGNvbnRlbnRJbWFnZUhhbmRsZSwgYm9vbCBm
YWRlT3V0KTsKLSAgICB2b2lkIGRpZEZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgdWludDMyX3Qg
bWF0Y2hDb3VudCk7Ci0gICAgdm9pZCBkaWRGYWlsVG9GaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYp
OwotCiAgICAgLy8gUG9wdXAgTWVudS4KICAgICB2b2lkIHNob3dQb3B1cE1lbnUoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgcmVjdCwgdWludDY0X3QgdGV4dERpcmVjdGlvbiwgY29uc3QgVmVjdG9y
PFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgsIGNvbnN0IFBsYXRm
b3JtUG9wdXBNZW51RGF0YSYpOwogICAgIHZvaWQgaGlkZVBvcHVwTWVudSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88146</attachid>
            <date>2011-04-04 15:52:21 -0700</date>
            <delta_ts>2011-04-04 16:05:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57765-20110404155220.patch</filename>
            <type>text/plain</type>
            <size>16978</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI4ODYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3NGI4MWZmMTg5MGMwMTJj
YTMxMTAxMDQwNzc2NWFhNzlhZDE4MWYxLi4zZGJhNDNjMDFmNGU2OTU4MTQzYzllNmZiNjc1Yjg3
ZmM2ZWVlMzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDQtMDQgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV0syOiBQREY6IEZpbmQgaW4gcGFnZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc3NjUKKworICAgICAgICBTdXBw
b3J0IHNlYXJjaGluZyB0ZXh0IHdpdGhpbiBQREYgZG9jdW1lbnRzLiAgRmluZCByZXF1ZXN0cyBt
dXN0IGJlIHJvdXRlZCBmcm9tIHRoZQorICAgICAgICBXZWJQYWdlUHJveHksIHRocm91Z2ggdGhl
IFBhZ2VDbGllbnQsIGFuZCB0byB0aGUgV0tWaWV3LCB3aGVyZSB0aGV5IGNhbiBiZSBwYXNzZWQg
dG8gCisgICAgICAgIHRoZSBQREZWaWV3Q29udHJvbGxlci4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvbWFjL1BERlZpZXdDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9t
YWMvUERGVmlld0NvbnRyb2xsZXIubW06CisgICAgICAgIChfUERGU2VsZWN0aW9uc0FyZUVxdWFs
KTogQ29waWVkIGZyb20gV2ViUERGVmlldy4KKyAgICAgICAgKC1bV0tQREZWaWV3IF9uZXh0TWF0
Y2hGb3I6ZGlyZWN0aW9uOmNhc2VTZW5zaXRpdmU6d3JhcDpmcm9tU2VsZWN0aW9uOnN0YXJ0SW5T
ZWxlY3Rpb246XSk6IENvcGllZCBmcm9tIFdlYlBERlZpZXcuCisgICAgICAgICgtW1dLUERGVmll
dyBfY291bnRNYXRjaGVzOmNhc2VTZW5zaXRpdmU6XSk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpQREZWaWV3Q29udHJvbGxlcjo6ZmluZFN0cmluZyk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpQREZWaWV3Q29udHJvbGxlcjo6Y291bnRTdHJpbmdNYXRjaGVzKTogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9Q
YWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJ
bXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZmluZFN0cmluZ0luQ3Vz
dG9tUmVwcmVzZW50YXRpb24pOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmNvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRpb24pOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IF9maW5kU3RyaW5n
SW5DdXN0b21SZXByZXNlbnRhdGlvbjp3aXRoRmluZE9wdGlvbnM6bWF4TWF0Y2hDb3VudDpdKTog
QWRkZWQuCisgICAgICAgICgtW1dLVmlldyBfY291bnRTdHJpbmdNYXRjaGVzSW5DdXN0b21SZXBy
ZXNlbnRhdGlvbjp3aXRoRmluZE9wdGlvbnM6bWF4TWF0Y2hDb3VudDpdKTogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOiBNb3ZlZCBhIG51bWJlciBvZiBmaW5kLXJl
bGF0ZWQgZnVuY3Rpb25zIGZyb20gcHJpdmF0ZTogdG8gcHVibGljOiBzbworICAgICAgICAgICAg
dGhleSBjb3VsZCBiZSBjYWxsZWQgZnJvbSBQREZWaWV3Q29udHJvbGxlci4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpmaW5kU3RyaW5nKTogQWRkZWQuIAorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNv
dW50U3RyaW5nTWF0Y2hlcyk6IEFkZGVkLgorCiAyMDExLTA0LTA0ICBKYWRlIEhhbiAgPGphZGUu
aGFuQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBDc2FiYSBPc3p0cm9nb27DoWMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QREZWaWV3Q29u
dHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUERGVmlld0NvbnRy
b2xsZXIuaAppbmRleCBjYzNiMjk5ZGVhODA3OTFmZDJiNjFiNWJhNWU5NDg1N2E4OWUxYzM4Li45
OTQyM2QyZDJiZGM3ZWRiMzY2ZmEzMmJjYjk4NjgzZDdkNzk2YjAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QREZWaWV3Q29udHJvbGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BERlZpZXdDb250cm9sbGVyLmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNpZm5kZWYgUERGVmlld0NvbnRyb2xsZXJfaAogI2RlZmluZSBQREZWaWV3
Q29udHJvbGxlcl9oCiAKKyNpbmNsdWRlICJXZWJGaW5kT3B0aW9ucy5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KQEAgLTY2LDYgKzY3LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2F2ZVBE
RlRvRG93bmxvYWRzRm9sZGVyKCk7CiAgICAgdm9pZCBsaW5rQ2xpY2tlZChjb25zdCBTdHJpbmcm
IHVybCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCBGaW5k
T3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7CisgICAgdmlydHVhbCB2b2lkIGNvdW50
U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0
Y2hDb3VudCk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUERGVmlld0NvbnRyb2xsZXIoV0tW
aWV3ICp3a1ZpZXcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9QREZWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1BERlZpZXdDb250cm9sbGVyLm1tCmluZGV4IDEyODdkMThlZDg3YTBjNjY3NDhjMjllOGU1
Y2I4NDFmOTM4ZmJlNjUuLjZlY2Q3YzdiMWNmNmRhY2NhZmNhNGZiZDQyNmYyNDkyYTFhZTk1N2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BERlZpZXdDb250
cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BERlZpZXdD
b250cm9sbGVyLm1tCkBAIC03Niw2ICs3NiwyOSBAQCBzdGF0aWMgdm9pZCBfYXBwbGljYXRpb25J
bmZvRm9yTUlNRVR5cGUoTlNTdHJpbmcgKnR5cGUsIE5TU3RyaW5nICoqbmFtZSwgTlNJbWFnZQog
ICAgICpuYW1lID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBkaXNwbGF5TmFtZUF0
UGF0aDphcHBQYXRoXTsKIH0KIAorLy8gRklYTUUgNDE4Mjg3NjogV2UgY2FuIGVsaW1pbmF0ZSB0
aGlzIGZ1bmN0aW9uIGluIGZhdm9yIGlmIC1pc0VxdWFsOiBpZiBbUERGU2VsZWN0aW9uIGlzRXF1
YWw6XSBpcyBvdmVycmlkZGVuCisvLyB0byBjb21wYXJlIGNvbnRlbnRzLgorc3RhdGljIEJPT0wg
X1BERlNlbGVjdGlvbnNBcmVFcXVhbChQREZTZWxlY3Rpb24gKnNlbGVjdGlvbkEsIFBERlNlbGVj
dGlvbiAqc2VsZWN0aW9uQikKK3sKKyAgICBOU0FycmF5ICphUGFnZXMgPSBbc2VsZWN0aW9uQSBw
YWdlc107CisgICAgTlNBcnJheSAqYlBhZ2VzID0gW3NlbGVjdGlvbkIgcGFnZXNdOworCisgICAg
aWYgKCFbYVBhZ2VzIGlzRXF1YWw6YlBhZ2VzXSkKKyAgICAgICAgcmV0dXJuIE5POworCisgICAg
aW50IGNvdW50ID0gW2FQYWdlcyBjb3VudF07CisgICAgaW50IGk7CisgICAgZm9yIChpID0gMDsg
aSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgTlNSZWN0IGFCb3VuZHMgPSBbc2VsZWN0aW9uQSBi
b3VuZHNGb3JQYWdlOlthUGFnZXMgb2JqZWN0QXRJbmRleDppXV07CisgICAgICAgIE5TUmVjdCBi
Qm91bmRzID0gW3NlbGVjdGlvbkIgYm91bmRzRm9yUGFnZTpbYlBhZ2VzIG9iamVjdEF0SW5kZXg6
aV1dOworICAgICAgICBpZiAoIU5TRXF1YWxSZWN0cyhhQm91bmRzLCBiQm91bmRzKSkgeworICAg
ICAgICAgICAgcmV0dXJuIE5POworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIFlFUzsK
K30KKwogQGludGVyZmFjZSBXS1BERlZpZXcgOiBOU1ZpZXcKIHsKICAgICBQREZWaWV3Q29udHJv
bGxlciogX3BkZlZpZXdDb250cm9sbGVyOwpAQCAtOTIsNyArMTE1LDcgQEAgc3RhdGljIHZvaWQg
X2FwcGxpY2F0aW9uSW5mb0Zvck1JTUVUeXBlKE5TU3RyaW5nICp0eXBlLCBOU1N0cmluZyAqKm5h
bWUsIE5TSW1hZ2UKIC0gKHZvaWQpc2V0RG9jdW1lbnQ6KFBERkRvY3VtZW50ICopcGRmRG9jdW1l
bnQ7CiAKIC0gKHZvaWQpX2FwcGx5UERGUHJlZmVyZW5jZXM7Ci0KKy0gKFBERlNlbGVjdGlvbiAq
KV9uZXh0TWF0Y2hGb3I6KE5TU3RyaW5nICopc3RyaW5nIGRpcmVjdGlvbjooQk9PTClmb3J3YXJk
IGNhc2VTZW5zaXRpdmU6KEJPT0wpY2FzZUZsYWcgd3JhcDooQk9PTCl3cmFwRmxhZyBmcm9tU2Vs
ZWN0aW9uOihQREZTZWxlY3Rpb24gKilpbml0aWFsU2VsZWN0aW9uIHN0YXJ0SW5TZWxlY3Rpb246
KEJPT0wpc3RhcnRJblNlbGVjdGlvbjsKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdLUERGVmll
dwpAQCAtMTg4LDYgKzIxMSw2MCBAQCBzdGF0aWMgdm9pZCBfYXBwbGljYXRpb25JbmZvRm9yTUlN
RVR5cGUoTlNTdHJpbmcgKnR5cGUsIE5TU3RyaW5nICoqbmFtZSwgTlNJbWFnZQogICAgIF9wZGZW
aWV3Q29udHJvbGxlci0+b3BlblBERkluRmluZGVyKCk7CiB9CiAKKy0gKFBERlNlbGVjdGlvbiAq
KV9uZXh0TWF0Y2hGb3I6KE5TU3RyaW5nICopc3RyaW5nIGRpcmVjdGlvbjooQk9PTClmb3J3YXJk
IGNhc2VTZW5zaXRpdmU6KEJPT0wpY2FzZUZsYWcgd3JhcDooQk9PTCl3cmFwRmxhZyBmcm9tU2Vs
ZWN0aW9uOihQREZTZWxlY3Rpb24gKilpbml0aWFsU2VsZWN0aW9uIHN0YXJ0SW5TZWxlY3Rpb246
KEJPT0wpc3RhcnRJblNlbGVjdGlvbgoreworICAgIGlmICghW3N0cmluZyBsZW5ndGhdKQorICAg
ICAgICByZXR1cm4gbmlsOworCisgICAgaW50IG9wdGlvbnMgPSAwOworICAgIGlmICghZm9yd2Fy
ZCkKKyAgICAgICAgb3B0aW9ucyB8PSBOU0JhY2t3YXJkc1NlYXJjaDsKKworICAgIGlmICghY2Fz
ZUZsYWcpCisgICAgICAgIG9wdGlvbnMgfD0gTlNDYXNlSW5zZW5zaXRpdmVTZWFyY2g7CisKKyAg
ICBQREZEb2N1bWVudCAqZG9jdW1lbnQgPSBbX3BkZlZpZXcgZG9jdW1lbnRdOworCisgICAgUERG
U2VsZWN0aW9uICpzZWxlY3Rpb25Gb3JJbml0aWFsU2VhcmNoID0gW2luaXRpYWxTZWxlY3Rpb24g
Y29weV07CisgICAgaWYgKHN0YXJ0SW5TZWxlY3Rpb24pIHsKKyAgICAgICAgLy8gSW5pdGlhbGx5
IHdlIHdhbnQgdG8gaW5jbHVkZSB0aGUgc2VsZWN0ZWQgdGV4dCBpbiB0aGUgc2VhcmNoLiBQREZE
b2N1bWVudCdzIEFQSSBhbHdheXMgc2VhcmNoZXMgZnJvbSBqdXN0CisgICAgICAgIC8vIHBhc3Qg
dGhlIHBhc3NlZC1pbiBzZWxlY3Rpb24sIHNvIHdlIG5lZWQgdG8gcGFzcyBhIHNlbGVjdGlvbiB0
aGF0J3MgbW9kaWZpZWQgYXBwcm9wcmlhdGVseS4KKyAgICAgICAgLy8gRklYTUUgNDE4Mjg2Mzog
SWRlYWxseSB3ZSdkIHVzZSBhIHplcm8tbGVuZ3RoIHNlbGVjdGlvbiBhdCB0aGUgZWRnZSBvZiB0
aGUgY3VycmVudCBzZWxlY3Rpb24sIGJ1dCB6ZXJvLWxlbmd0aAorICAgICAgICAvLyBzZWxlY3Rp
b25zIGRvbid0IHdvcmsgaW4gUERGRG9jdW1lbnQuIFNvIGluc3RlYWQgd2UgbWFrZSBhIG9uZS1s
ZW5ndGggc2VsZWN0aW9uIGp1c3QgYmVmb3JlIG9yIGFmdGVyIHRoZQorICAgICAgICAvLyBjdXJy
ZW50IHNlbGVjdGlvbiwgd2hpY2ggd29ya3MgZm9yIG91ciBwdXJwb3NlcyBldmVuIHdoZW4gdGhl
IGN1cnJlbnQgc2VsZWN0aW9uIGlzIGF0IGFuIGVkZ2Ugb2YgdGhlCisgICAgICAgIC8vIGRvY3Vt
ZW50LgorICAgICAgICBpbnQgaW5pdGlhbFNlbGVjdGlvbkxlbmd0aCA9IFtbaW5pdGlhbFNlbGVj
dGlvbiBzdHJpbmddIGxlbmd0aF07CisgICAgICAgIGlmIChmb3J3YXJkKSB7CisgICAgICAgICAg
ICBbc2VsZWN0aW9uRm9ySW5pdGlhbFNlYXJjaCBleHRlbmRTZWxlY3Rpb25BdFN0YXJ0OjFdOwor
ICAgICAgICAgICAgW3NlbGVjdGlvbkZvckluaXRpYWxTZWFyY2ggZXh0ZW5kU2VsZWN0aW9uQXRF
bmQ6LWluaXRpYWxTZWxlY3Rpb25MZW5ndGhdOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgW3NlbGVjdGlvbkZvckluaXRpYWxTZWFyY2ggZXh0ZW5kU2VsZWN0aW9uQXRFbmQ6MV07Cisg
ICAgICAgICAgICBbc2VsZWN0aW9uRm9ySW5pdGlhbFNlYXJjaCBleHRlbmRTZWxlY3Rpb25BdFN0
YXJ0Oi1pbml0aWFsU2VsZWN0aW9uTGVuZ3RoXTsKKyAgICAgICAgfQorICAgIH0KKyAgICBQREZT
ZWxlY3Rpb24gKmZvdW5kU2VsZWN0aW9uID0gW2RvY3VtZW50IGZpbmRTdHJpbmc6c3RyaW5nIGZy
b21TZWxlY3Rpb246c2VsZWN0aW9uRm9ySW5pdGlhbFNlYXJjaCB3aXRoT3B0aW9uczpvcHRpb25z
XTsKKyAgICBbc2VsZWN0aW9uRm9ySW5pdGlhbFNlYXJjaCByZWxlYXNlXTsKKworICAgIC8vIElm
IHdlIGZpcnN0IHNlYXJjaGVkIGluIHRoZSBzZWxlY3Rpb24sIGFuZCB3ZSBmb3VuZCB0aGUgc2Vs
ZWN0aW9uLCBzZWFyY2ggYWdhaW4gZnJvbSBqdXN0IHBhc3QgdGhlIHNlbGVjdGlvbgorICAgIGlm
IChzdGFydEluU2VsZWN0aW9uICYmIF9QREZTZWxlY3Rpb25zQXJlRXF1YWwoZm91bmRTZWxlY3Rp
b24sIGluaXRpYWxTZWxlY3Rpb24pKQorICAgICAgICBmb3VuZFNlbGVjdGlvbiA9IFtkb2N1bWVu
dCBmaW5kU3RyaW5nOnN0cmluZyBmcm9tU2VsZWN0aW9uOmluaXRpYWxTZWxlY3Rpb24gd2l0aE9w
dGlvbnM6b3B0aW9uc107CisKKyAgICBpZiAoIWZvdW5kU2VsZWN0aW9uICYmIHdyYXBGbGFnKQor
ICAgICAgICBmb3VuZFNlbGVjdGlvbiA9IFtkb2N1bWVudCBmaW5kU3RyaW5nOnN0cmluZyBmcm9t
U2VsZWN0aW9uOm5pbCB3aXRoT3B0aW9uczpvcHRpb25zXTsKKworICAgIHJldHVybiBmb3VuZFNl
bGVjdGlvbjsKK30KKworLSAoTlNVSW50ZWdlcilfY291bnRNYXRjaGVzOihOU1N0cmluZyopc3Ry
aW5nIGNhc2VTZW5zaXRpdmU6KEJPT0wpY2FzZUZsYWcKK3sKKyAgICBpZiAoIVtzdHJpbmcgbGVu
Z3RoXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGludCBvcHRpb25zID0gY2FzZUZsYWcg
PyAwIDogTlNDYXNlSW5zZW5zaXRpdmVTZWFyY2g7CisKKyAgICByZXR1cm4gW1tbX3BkZlZpZXcg
ZG9jdW1lbnRdIGZpbmRTdHJpbmc6c3RyaW5nIHdpdGhPcHRpb25zOm9wdGlvbnNdIGNvdW50XTsK
K30KKwogLy8gTUFSSzogTlNWaWV3IG92ZXJyaWRlcwogCiAtICh2b2lkKXZpZXdEaWRNb3ZlVG9X
aW5kb3cKQEAgLTUzMSw0ICs2MDgsMzEgQEAgdm9pZCBQREZWaWV3Q29udHJvbGxlcjo6bGlua0Ns
aWNrZWQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgcGFnZSgpLT5saW5rQ2xpY2tlZCh1cmwsIGV2
ZW50KTsKIH0KIAordm9pZCBQREZWaWV3Q29udHJvbGxlcjo6ZmluZFN0cmluZyhjb25zdCBTdHJp
bmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkK
K3sKKyAgICBCT09MIGZvcndhcmQgPSAhKG9wdGlvbnMgJiBGaW5kT3B0aW9uc0JhY2t3YXJkcyk7
CisgICAgQk9PTCBjYXNlRmxhZyA9ICEob3B0aW9ucyAmIEZpbmRPcHRpb25zQ2FzZUluc2Vuc2l0
aXZlKTsKKyAgICBCT09MIHdyYXBGbGFnID0gb3B0aW9ucyAmIEZpbmRPcHRpb25zV3JhcEFyb3Vu
ZDsKKworICAgIFBERlNlbGVjdGlvbiAqc2VsZWN0aW9uID0gW21fd2tQREZWaWV3LmdldCgpIF9u
ZXh0TWF0Y2hGb3I6c3RyaW5nIGRpcmVjdGlvbjpmb3J3YXJkIGNhc2VTZW5zaXRpdmU6Y2FzZUZs
YWcgd3JhcDp3cmFwRmxhZyBmcm9tU2VsZWN0aW9uOlttX3BkZlZpZXcgY3VycmVudFNlbGVjdGlv
bl0gc3RhcnRJblNlbGVjdGlvbjpOT107CisgICAgTlNVSW50ZWdlciBtYXRjaENvdW50ID0gW21f
d2tQREZWaWV3LmdldCgpIF9jb3VudE1hdGNoZXM6c3RyaW5nIGNhc2VTZW5zaXRpdmU6Y2FzZUZs
YWddOworCisgICAgaWYgKCFzZWxlY3Rpb24pIHsKKyAgICAgICAgcGFnZSgpLT5kaWRGYWlsVG9G
aW5kU3RyaW5nKHN0cmluZyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbbV9wZGZW
aWV3IHNldEN1cnJlbnRTZWxlY3Rpb246c2VsZWN0aW9uXTsKKyAgICBbbV9wZGZWaWV3IHNjcm9s
bFNlbGVjdGlvblRvVmlzaWJsZTpuaWxdOworICAgIHBhZ2UoKS0+ZGlkRmluZFN0cmluZyhzdHJp
bmcsIG1hdGNoQ291bnQpOworfQorCit2b2lkIFBERlZpZXdDb250cm9sbGVyOjpjb3VudFN0cmlu
Z01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2ln
bmVkIG1heE1hdGNoQ291bnQpCit7CisgICAgQk9PTCBjYXNlRmxhZyA9ICEob3B0aW9ucyAmIEZp
bmRPcHRpb25zQ2FzZUluc2Vuc2l0aXZlKTsKKworICAgIE5TVUludGVnZXIgbWF0Y2hDb3VudCA9
IFttX3drUERGVmlldy5nZXQoKSBfY291bnRNYXRjaGVzOnN0cmluZyBjYXNlU2Vuc2l0aXZlOmNh
c2VGbGFnXTsKKyAgICBwYWdlKCktPmRpZENvdW50U3RyaW5nTWF0Y2hlcyhzdHJpbmcsIG1hdGNo
Q291bnQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IDYzNmYxMmU3NGIzZDI0
MDE5MGZlYmM3YjlmZjZiZTljYTA0ZTQ3ZTkuLmE0OGUxYzM0YjE0OTgwYWQzYTVlMmU4YTA2YmJl
OGQ1YjEzYmI4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMv
UGFnZUNsaWVudEltcGwuaApAQCAtMTAwLDYgKzEwMCw4IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0
dWFsIGRvdWJsZSBjdXN0b21SZXByZXNlbnRhdGlvblpvb21GYWN0b3IoKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0Q3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKGRvdWJsZSk7CisgICAgdmly
dHVhbCB2b2lkIGZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYs
IEZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKKyAgICB2aXJ0dWFsIHZvaWQg
Y291bnRTdHJpbmdNYXRjaGVzSW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBG
aW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
Zmxhc2hCYWNraW5nU3RvcmVVcGRhdGVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYg
dXBkYXRlUmVjdHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9QYWdlQ2xpZW50SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1BhZ2VDbGllbnRJbXBsLm1tCmluZGV4IGM1MjY0ZDJkMDUzY2RiMjk0ZTU0ZGJkMTI3ZWMzZDM1
MmU3NGY5YTguLjM1MmViODM1ZGMzOGM4MzA2ODI1MTBlZTE5YWM4NDgxZjJjOWM4ODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1t
CkBAIC00MDcsNiArNDA3LDE2IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnNldEN1c3RvbVJlcHJl
c2VudGF0aW9uWm9vbUZhY3Rvcihkb3VibGUgem9vbUZhY3RvcikKICAgICBbbV93a1ZpZXcgX3Nl
dEN1c3RvbVJlcHJlc2VudGF0aW9uWm9vbUZhY3Rvcjp6b29tRmFjdG9yXTsKIH0KIAordm9pZCBQ
YWdlQ2xpZW50SW1wbDo6ZmluZFN0cmluZ0luQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQp
Cit7CisgICAgW21fd2tWaWV3IF9maW5kU3RyaW5nSW5DdXN0b21SZXByZXNlbnRhdGlvbjpzdHJp
bmcgd2l0aEZpbmRPcHRpb25zOm9wdGlvbnMgbWF4TWF0Y2hDb3VudDptYXhNYXRjaENvdW50XTsK
K30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6Y291bnRTdHJpbmdNYXRjaGVzSW5DdXN0b21SZXBy
ZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5z
aWduZWQgbWF4TWF0Y2hDb3VudCkKK3sKKyAgICBbbV93a1ZpZXcgX2NvdW50U3RyaW5nTWF0Y2hl
c0luQ3VzdG9tUmVwcmVzZW50YXRpb246c3RyaW5nIHdpdGhGaW5kT3B0aW9uczpvcHRpb25zIG1h
eE1hdGNoQ291bnQ6bWF4TWF0Y2hDb3VudF07Cit9CisKIHZvaWQgUGFnZUNsaWVudEltcGw6OmZs
YXNoQmFja2luZ1N0b3JlVXBkYXRlcyhjb25zdCBWZWN0b3I8SW50UmVjdD4mKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcu
bW0KaW5kZXggZjBiMzIzMzgwYmI4NmEzYjRlYWU3ODRmNzQ2ZGUwODIzMWViMGNmYS4uNDhjMTI3
MTI2MjQ5ZDRlOGFjZjNhZWM3MTg1OGRmZjRmODE5Y2EyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtMjEyOSw2ICsyMTI5LDIyIEBAIHN0YXRpYyB2
b2lkIGRyYXdQYWdlQmFja2dyb3VuZChDR0NvbnRleHRSZWYgY29udGV4dCwgV2ViUGFnZVByb3h5
KiBwYWdlLCBjb25zdCBJCiAgICAgX2RhdGEtPl9wZGZWaWV3Q29udHJvbGxlci0+c2V0Wm9vbUZh
Y3Rvcih6b29tRmFjdG9yKTsKIH0KIAorLSAodm9pZClfZmluZFN0cmluZ0luQ3VzdG9tUmVwcmVz
ZW50YXRpb246KE5TU3RyaW5nICopc3RyaW5nIHdpdGhGaW5kT3B0aW9uczooTlNVSW50ZWdlcilv
cHRpb25zIG1heE1hdGNoQ291bnQ6KE5TVUludGVnZXIpY291bnQKK3sKKyAgICBpZiAoIV9kYXRh
LT5fcGRmVmlld0NvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKworICAgIF9kYXRhLT5fcGRm
Vmlld0NvbnRyb2xsZXItPmZpbmRTdHJpbmcoc3RyaW5nLCBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZp
bmRPcHRpb25zPihvcHRpb25zKSwgY291bnQpOworfQorCistICh2b2lkKV9jb3VudFN0cmluZ01h
dGNoZXNJbkN1c3RvbVJlcHJlc2VudGF0aW9uOihOU1N0cmluZyAqKXN0cmluZyB3aXRoRmluZE9w
dGlvbnM6KE5TVUludGVnZXIpb3B0aW9ucyBtYXhNYXRjaENvdW50OihOU1VJbnRlZ2VyKWNvdW50
Cit7CisgICAgaWYgKCFfZGF0YS0+X3BkZlZpZXdDb250cm9sbGVyKQorICAgICAgICByZXR1cm47
CisKKyAgICBfZGF0YS0+X3BkZlZpZXdDb250cm9sbGVyLT5jb3VudFN0cmluZ01hdGNoZXMoc3Ry
aW5nLCBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZpbmRPcHRpb25zPihvcHRpb25zKSwgY291bnQpOwor
fQorCiAtICh2b2lkKV9zZXREcmFnSW1hZ2U6KE5TSW1hZ2UgKilpbWFnZSBhdDooTlNQb2ludClj
bGllbnRQb2ludCBsaW5rRHJhZzooQk9PTClsaW5rRHJhZwogewogICAgIC8vIFdlIG5lZWQgdG8g
cHJldmVudCByZS1lbnRlcmluZyB0aGlzIGNhbGwgdG8gYXZvaWQgY3Jhc2hpbmcgaW4gQXBwS2l0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50
ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFs
LmgKaW5kZXggYTYyNmVjMjI5YmM3N2E2NTBkNDdkZGMzZWE3MDBiNjBjMWY0ZjdhNC4uYjZkODZh
NTAwNDA3NjE1MmQwY2VlNWFjZmUwMTFjNTQyMjAxNWYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCkBAIC02OCw2ICs2OCw4IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogLSAodm9pZClfZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0
b21SZXByZXNlbnRhdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooY29uc3QgU3RyaW5nJilzdWdn
ZXN0ZWRGaWxlbmFtZSBkYXRhUmVmZXJlbmNlOihjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNl
JilkYXRhUmVmZXJlbmNlOwogLSAoZG91YmxlKV9jdXN0b21SZXByZXNlbnRhdGlvblpvb21GYWN0
b3I7CiAtICh2b2lkKV9zZXRDdXN0b21SZXByZXNlbnRhdGlvblpvb21GYWN0b3I6KGRvdWJsZSl6
b29tRmFjdG9yOworLSAodm9pZClfZmluZFN0cmluZ0luQ3VzdG9tUmVwcmVzZW50YXRpb246KE5T
U3RyaW5nICopc3RyaW5nIHdpdGhGaW5kT3B0aW9uczooTlNVSW50ZWdlcilvcHRpb25zIG1heE1h
dGNoQ291bnQ6KE5TVUludGVnZXIpY291bnQ7CistICh2b2lkKV9jb3VudFN0cmluZ01hdGNoZXNJ
bkN1c3RvbVJlcHJlc2VudGF0aW9uOihOU1N0cmluZyAqKXN0cmluZyB3aXRoRmluZE9wdGlvbnM6
KE5TVUludGVnZXIpb3B0aW9ucyBtYXhNYXRjaENvdW50OihOU1VJbnRlZ2VyKWNvdW50OwogLSAo
dm9pZClfc2V0RHJhZ0ltYWdlOihOU0ltYWdlICopaW1hZ2UgYXQ6KE5TUG9pbnQpY2xpZW50UG9p
bnQgbGlua0RyYWc6KEJPT0wpbGlua0RyYWc7CiAKIC0gKHZvaWQpX3NldERyYXdpbmdBcmVhU2l6
ZTooTlNTaXplKXNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA5
YzZlMmE0ZGIyY2Y2YjUzMzQ1MWFjYTkzYzJjZTk3NzJjNDZiMTc5Li5jYzllOWJhOThhMzU4ZWZm
MmE2OTVkMTNiZDU3MWQyZWE1NzY5NDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xp
ZW50LmgKQEAgLTE0NSw2ICsxNDUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEN1
c3RvbVJlcHJlc2VudGF0aW9uWm9vbUZhY3Rvcihkb3VibGUpID0gMDsKIAogICAgIHZpcnR1YWwg
dm9pZCBmbGFzaEJhY2tpbmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJl
Y3Q+JiB1cGRhdGVSZWN0cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmaW5kU3RyaW5nSW5DdXN0
b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4
TWF0Y2hDb3VudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb3VudFN0cmluZ01hdGNoZXNJbkN1
c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBt
YXhNYXRjaENvdW50KSA9IDA7CiAKICAgICB2aXJ0dWFsIGZsb2F0IHVzZXJTcGFjZVNjYWxlRmFj
dG9yKCkgY29uc3QgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggMTYwZmUxZGRiMTgzYzA0MjIzMWM1ODdlNTdlMThlNTg4YWVjM2Q0Ni4uNTcz
YzI4ZTFiODY3ZTNkMjU5MjJjY2ZiOTZlMDdiMTc0NDFmNjk5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwODksNyArMTA4OSwxMCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0TWVtb3J5Q2FjaGVDbGllbnRDYWxsc0VuYWJsZWQoYm9vbCBtZW1vcnlD
YWNoZUNsaWVudENhbGxzRQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFN0cmluZyhjb25zdCBT
dHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3Vu
dCkKIHsKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpbmRTdHJpbmco
c3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSwgbV9wYWdlSUQpOworICAgIGlmIChtX21h
aW5GcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uKQorICAgICAgICBtX3BhZ2VDbGllbnQtPmZp
bmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0aW9uKHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hD
b3VudCk7CisgICAgZWxzZQorICAgICAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkZpbmRTdHJpbmcoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSwgbV9wYWdlSUQp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGlkZUZpbmRVSSgpCkBAIC0xMDk5LDcgKzExMDIs
MTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhpZGVGaW5kVUkoKQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6Y291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBv
cHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQogewotICAgIHByb2Nlc3MoKS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6Q291bnRTdHJpbmdNYXRjaGVzKHN0cmluZywgb3B0aW9ucywgbWF4
TWF0Y2hDb3VudCksIG1fcGFnZUlEKTsKKyAgICBpZiAobV9tYWluRnJhbWVIYXNDdXN0b21SZXBy
ZXNlbnRhdGlvbikKKyAgICAgICAgbV9wYWdlQ2xpZW50LT5jb3VudFN0cmluZ01hdGNoZXNJbkN1
c3RvbVJlcHJlc2VudGF0aW9uKHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCk7CisgICAg
ZWxzZQorICAgICAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvdW50U3Ry
aW5nTWF0Y2hlcyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpLCBtX3BhZ2VJRCk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3Ry
aW5nJiBzY3JpcHQsIFBhc3NSZWZQdHI8U2NyaXB0VmFsdWVDYWxsYmFjaz4gcHJwQ2FsbGJhY2sp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNmViYzcxZTE4Yjgx
MzJkMDdlNjA5ODFlYWYzOGM5ZmEyYjYzNjc1Mi4uNjEyNGQxNTMwZDRlNWQyMmZkZGQ5N2Q4ODQx
NGRkYTljODEzYTdkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtMzQ4LDYgKzM0OCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaW5kU3RyaW5nKGNvbnN0IFN0
cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKICAgICB2b2lkIGhp
ZGVGaW5kVUkoKTsKICAgICB2b2lkIGNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBG
aW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7CisgICAgdm9pZCBkaWRDb3VudFN0
cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgdWludDMyX3QgbWF0Y2hDb3VudCk7CisgICAgdm9p
ZCBzZXRGaW5kSW5kaWNhdG9yKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc2VsZWN0aW9uUmVj
dEluV2luZG93Q29vcmRpbmF0ZXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+JiB0
ZXh0UmVjdHNJblNlbGVjdGlvblJlY3RDb29yZGluYXRlcywgY29uc3QgU2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUmIGNvbnRlbnRJbWFnZUhhbmRsZSwgYm9vbCBmYWRlT3V0KTsKKyAgICB2b2lkIGRp
ZEZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgdWludDMyX3QgbWF0Y2hDb3VudCk7CisgICAgdm9p
ZCBkaWRGYWlsVG9GaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdm9pZCBnZXRDb250
ZW50c0FzU3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+KTsKICAgICB2b2lkIGdldE1h
aW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJveHkqLCBQYXNzUmVmUHRyPERhdGFDYWxs
YmFjaz4pOwpAQCAtNTk0LDEyICs1OTgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgaW50ZXJwcmV0
UXVldWVkS2V5RXZlbnQoY29uc3QgVGV4dElucHV0U3RhdGUmLCBib29sJiBoYW5kbGVkLCBWZWN0
b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kPiYpOwogI2VuZGlmCiAgICAgCi0gICAgLy8gRmlu
ZC4KLSAgICB2b2lkIGRpZENvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCB1aW50MzJf
dCBtYXRjaENvdW50KTsKLSAgICB2b2lkIHNldEZpbmRJbmRpY2F0b3IoY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiBzZWxlY3Rpb25SZWN0SW5XaW5kb3dDb29yZGluYXRlcywgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkZsb2F0UmVjdD4mIHRleHRSZWN0c0luU2VsZWN0aW9uUmVjdENvb3JkaW5hdGVz
LCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgY29udGVudEltYWdlSGFuZGxlLCBib29s
IGZhZGVPdXQpOwotICAgIHZvaWQgZGlkRmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCB1aW50MzJf
dCBtYXRjaENvdW50KTsKLSAgICB2b2lkIGRpZEZhaWxUb0ZpbmRTdHJpbmcoY29uc3QgU3RyaW5n
Jik7Ci0KICAgICAvLyBQb3B1cCBNZW51LgogICAgIHZvaWQgc2hvd1BvcHVwTWVudShjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiByZWN0LCB1aW50NjRfdCB0ZXh0RGlyZWN0aW9uLCBjb25zdCBWZWN0
b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCwgY29uc3QgUGxh
dGZvcm1Qb3B1cE1lbnVEYXRhJik7CiAgICAgdm9pZCBoaWRlUG9wdXBNZW51KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88147</attachid>
            <date>2011-04-04 16:07:00 -0700</date>
            <delta_ts>2011-04-04 16:22:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57765-20110404160659.patch</filename>
            <type>text/plain</type>
            <size>16962</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI4ODYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3NGI4MWZmMTg5MGMwMTJj
YTMxMTAxMDQwNzc2NWFhNzlhZDE4MWYxLi4zZGJhNDNjMDFmNGU2OTU4MTQzYzllNmZiNjc1Yjg3
ZmM2ZWVlMzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDQtMDQgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV0syOiBQREY6IEZpbmQgaW4gcGFnZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc3NjUKKworICAgICAgICBTdXBw
b3J0IHNlYXJjaGluZyB0ZXh0IHdpdGhpbiBQREYgZG9jdW1lbnRzLiAgRmluZCByZXF1ZXN0cyBt
dXN0IGJlIHJvdXRlZCBmcm9tIHRoZQorICAgICAgICBXZWJQYWdlUHJveHksIHRocm91Z2ggdGhl
IFBhZ2VDbGllbnQsIGFuZCB0byB0aGUgV0tWaWV3LCB3aGVyZSB0aGV5IGNhbiBiZSBwYXNzZWQg
dG8gCisgICAgICAgIHRoZSBQREZWaWV3Q29udHJvbGxlci4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvbWFjL1BERlZpZXdDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9t
YWMvUERGVmlld0NvbnRyb2xsZXIubW06CisgICAgICAgIChfUERGU2VsZWN0aW9uc0FyZUVxdWFs
KTogQ29waWVkIGZyb20gV2ViUERGVmlldy4KKyAgICAgICAgKC1bV0tQREZWaWV3IF9uZXh0TWF0
Y2hGb3I6ZGlyZWN0aW9uOmNhc2VTZW5zaXRpdmU6d3JhcDpmcm9tU2VsZWN0aW9uOnN0YXJ0SW5T
ZWxlY3Rpb246XSk6IENvcGllZCBmcm9tIFdlYlBERlZpZXcuCisgICAgICAgICgtW1dLUERGVmll
dyBfY291bnRNYXRjaGVzOmNhc2VTZW5zaXRpdmU6XSk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpQREZWaWV3Q29udHJvbGxlcjo6ZmluZFN0cmluZyk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpQREZWaWV3Q29udHJvbGxlcjo6Y291bnRTdHJpbmdNYXRjaGVzKTogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9Q
YWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJ
bXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZmluZFN0cmluZ0luQ3Vz
dG9tUmVwcmVzZW50YXRpb24pOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmNvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRpb24pOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IF9maW5kU3RyaW5n
SW5DdXN0b21SZXByZXNlbnRhdGlvbjp3aXRoRmluZE9wdGlvbnM6bWF4TWF0Y2hDb3VudDpdKTog
QWRkZWQuCisgICAgICAgICgtW1dLVmlldyBfY291bnRTdHJpbmdNYXRjaGVzSW5DdXN0b21SZXBy
ZXNlbnRhdGlvbjp3aXRoRmluZE9wdGlvbnM6bWF4TWF0Y2hDb3VudDpdKTogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOiBNb3ZlZCBhIG51bWJlciBvZiBmaW5kLXJl
bGF0ZWQgZnVuY3Rpb25zIGZyb20gcHJpdmF0ZTogdG8gcHVibGljOiBzbworICAgICAgICAgICAg
dGhleSBjb3VsZCBiZSBjYWxsZWQgZnJvbSBQREZWaWV3Q29udHJvbGxlci4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpmaW5kU3RyaW5nKTogQWRkZWQuIAorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNv
dW50U3RyaW5nTWF0Y2hlcyk6IEFkZGVkLgorCiAyMDExLTA0LTA0ICBKYWRlIEhhbiAgPGphZGUu
aGFuQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBDc2FiYSBPc3p0cm9nb27DoWMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QREZWaWV3Q29u
dHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUERGVmlld0NvbnRy
b2xsZXIuaAppbmRleCBjYzNiMjk5ZGVhODA3OTFmZDJiNjFiNWJhNWU5NDg1N2E4OWUxYzM4Li4w
NDFhYTdiZTc4ZTZmOTU5OGY2OGI0YzIyYzA3YTI1M2M1ZTZiNDgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QREZWaWV3Q29udHJvbGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BERlZpZXdDb250cm9sbGVyLmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNpZm5kZWYgUERGVmlld0NvbnRyb2xsZXJfaAogI2RlZmluZSBQREZWaWV3
Q29udHJvbGxlcl9oCiAKKyNpbmNsdWRlICJXZWJGaW5kT3B0aW9ucy5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KQEAgLTY2LDYgKzY3LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2F2ZVBE
RlRvRG93bmxvYWRzRm9sZGVyKCk7CiAgICAgdm9pZCBsaW5rQ2xpY2tlZChjb25zdCBTdHJpbmcm
IHVybCk7CiAKKyAgICB2b2lkIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMs
IHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOworICAgIHZvaWQgY291bnRTdHJpbmdNYXRjaGVzKGNv
bnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKKwogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBQREZWaWV3Q29udHJvbGxlcihXS1ZpZXcgKndrVmlldyk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BERlZpZXdDb250
cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUERGVmlld0NvbnRy
b2xsZXIubW0KaW5kZXggMTI4N2QxOGVkODdhMGM2Njc0OGMyOWU4ZTVjYjg0MWY5MzhmYmU2NS4u
NmVjZDdjN2IxY2Y2ZGFjY2FmY2E0ZmJkNDI2ZjI0OTJhMWFlOTU3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUERGVmlld0NvbnRyb2xsZXIubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUERGVmlld0NvbnRyb2xsZXIubW0KQEAg
LTc2LDYgKzc2LDI5IEBAIHN0YXRpYyB2b2lkIF9hcHBsaWNhdGlvbkluZm9Gb3JNSU1FVHlwZShO
U1N0cmluZyAqdHlwZSwgTlNTdHJpbmcgKipuYW1lLCBOU0ltYWdlCiAgICAgKm5hbWUgPSBbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGRpc3BsYXlOYW1lQXRQYXRoOmFwcFBhdGhdOwog
fQogCisvLyBGSVhNRSA0MTgyODc2OiBXZSBjYW4gZWxpbWluYXRlIHRoaXMgZnVuY3Rpb24gaW4g
ZmF2b3IgaWYgLWlzRXF1YWw6IGlmIFtQREZTZWxlY3Rpb24gaXNFcXVhbDpdIGlzIG92ZXJyaWRk
ZW4KKy8vIHRvIGNvbXBhcmUgY29udGVudHMuCitzdGF0aWMgQk9PTCBfUERGU2VsZWN0aW9uc0Fy
ZUVxdWFsKFBERlNlbGVjdGlvbiAqc2VsZWN0aW9uQSwgUERGU2VsZWN0aW9uICpzZWxlY3Rpb25C
KQoreworICAgIE5TQXJyYXkgKmFQYWdlcyA9IFtzZWxlY3Rpb25BIHBhZ2VzXTsKKyAgICBOU0Fy
cmF5ICpiUGFnZXMgPSBbc2VsZWN0aW9uQiBwYWdlc107CisKKyAgICBpZiAoIVthUGFnZXMgaXNF
cXVhbDpiUGFnZXNdKQorICAgICAgICByZXR1cm4gTk87CisKKyAgICBpbnQgY291bnQgPSBbYVBh
Z2VzIGNvdW50XTsKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkg
eworICAgICAgICBOU1JlY3QgYUJvdW5kcyA9IFtzZWxlY3Rpb25BIGJvdW5kc0ZvclBhZ2U6W2FQ
YWdlcyBvYmplY3RBdEluZGV4OmldXTsKKyAgICAgICAgTlNSZWN0IGJCb3VuZHMgPSBbc2VsZWN0
aW9uQiBib3VuZHNGb3JQYWdlOltiUGFnZXMgb2JqZWN0QXRJbmRleDppXV07CisgICAgICAgIGlm
ICghTlNFcXVhbFJlY3RzKGFCb3VuZHMsIGJCb3VuZHMpKSB7CisgICAgICAgICAgICByZXR1cm4g
Tk87CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gWUVTOworfQorCiBAaW50ZXJmYWNl
IFdLUERGVmlldyA6IE5TVmlldwogewogICAgIFBERlZpZXdDb250cm9sbGVyKiBfcGRmVmlld0Nv
bnRyb2xsZXI7CkBAIC05Miw3ICsxMTUsNyBAQCBzdGF0aWMgdm9pZCBfYXBwbGljYXRpb25JbmZv
Rm9yTUlNRVR5cGUoTlNTdHJpbmcgKnR5cGUsIE5TU3RyaW5nICoqbmFtZSwgTlNJbWFnZQogLSAo
dm9pZClzZXREb2N1bWVudDooUERGRG9jdW1lbnQgKilwZGZEb2N1bWVudDsKIAogLSAodm9pZClf
YXBwbHlQREZQcmVmZXJlbmNlczsKLQorLSAoUERGU2VsZWN0aW9uICopX25leHRNYXRjaEZvcjoo
TlNTdHJpbmcgKilzdHJpbmcgZGlyZWN0aW9uOihCT09MKWZvcndhcmQgY2FzZVNlbnNpdGl2ZToo
Qk9PTCljYXNlRmxhZyB3cmFwOihCT09MKXdyYXBGbGFnIGZyb21TZWxlY3Rpb246KFBERlNlbGVj
dGlvbiAqKWluaXRpYWxTZWxlY3Rpb24gc3RhcnRJblNlbGVjdGlvbjooQk9PTClzdGFydEluU2Vs
ZWN0aW9uOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tQREZWaWV3CkBAIC0xODgsNiArMjEx
LDYwIEBAIHN0YXRpYyB2b2lkIF9hcHBsaWNhdGlvbkluZm9Gb3JNSU1FVHlwZShOU1N0cmluZyAq
dHlwZSwgTlNTdHJpbmcgKipuYW1lLCBOU0ltYWdlCiAgICAgX3BkZlZpZXdDb250cm9sbGVyLT5v
cGVuUERGSW5GaW5kZXIoKTsKIH0KIAorLSAoUERGU2VsZWN0aW9uICopX25leHRNYXRjaEZvcjoo
TlNTdHJpbmcgKilzdHJpbmcgZGlyZWN0aW9uOihCT09MKWZvcndhcmQgY2FzZVNlbnNpdGl2ZToo
Qk9PTCljYXNlRmxhZyB3cmFwOihCT09MKXdyYXBGbGFnIGZyb21TZWxlY3Rpb246KFBERlNlbGVj
dGlvbiAqKWluaXRpYWxTZWxlY3Rpb24gc3RhcnRJblNlbGVjdGlvbjooQk9PTClzdGFydEluU2Vs
ZWN0aW9uCit7CisgICAgaWYgKCFbc3RyaW5nIGxlbmd0aF0pCisgICAgICAgIHJldHVybiBuaWw7
CisKKyAgICBpbnQgb3B0aW9ucyA9IDA7CisgICAgaWYgKCFmb3J3YXJkKQorICAgICAgICBvcHRp
b25zIHw9IE5TQmFja3dhcmRzU2VhcmNoOworCisgICAgaWYgKCFjYXNlRmxhZykKKyAgICAgICAg
b3B0aW9ucyB8PSBOU0Nhc2VJbnNlbnNpdGl2ZVNlYXJjaDsKKworICAgIFBERkRvY3VtZW50ICpk
b2N1bWVudCA9IFtfcGRmVmlldyBkb2N1bWVudF07CisKKyAgICBQREZTZWxlY3Rpb24gKnNlbGVj
dGlvbkZvckluaXRpYWxTZWFyY2ggPSBbaW5pdGlhbFNlbGVjdGlvbiBjb3B5XTsKKyAgICBpZiAo
c3RhcnRJblNlbGVjdGlvbikgeworICAgICAgICAvLyBJbml0aWFsbHkgd2Ugd2FudCB0byBpbmNs
dWRlIHRoZSBzZWxlY3RlZCB0ZXh0IGluIHRoZSBzZWFyY2guIFBERkRvY3VtZW50J3MgQVBJIGFs
d2F5cyBzZWFyY2hlcyBmcm9tIGp1c3QKKyAgICAgICAgLy8gcGFzdCB0aGUgcGFzc2VkLWluIHNl
bGVjdGlvbiwgc28gd2UgbmVlZCB0byBwYXNzIGEgc2VsZWN0aW9uIHRoYXQncyBtb2RpZmllZCBh
cHByb3ByaWF0ZWx5LgorICAgICAgICAvLyBGSVhNRSA0MTgyODYzOiBJZGVhbGx5IHdlJ2QgdXNl
IGEgemVyby1sZW5ndGggc2VsZWN0aW9uIGF0IHRoZSBlZGdlIG9mIHRoZSBjdXJyZW50IHNlbGVj
dGlvbiwgYnV0IHplcm8tbGVuZ3RoCisgICAgICAgIC8vIHNlbGVjdGlvbnMgZG9uJ3Qgd29yayBp
biBQREZEb2N1bWVudC4gU28gaW5zdGVhZCB3ZSBtYWtlIGEgb25lLWxlbmd0aCBzZWxlY3Rpb24g
anVzdCBiZWZvcmUgb3IgYWZ0ZXIgdGhlCisgICAgICAgIC8vIGN1cnJlbnQgc2VsZWN0aW9uLCB3
aGljaCB3b3JrcyBmb3Igb3VyIHB1cnBvc2VzIGV2ZW4gd2hlbiB0aGUgY3VycmVudCBzZWxlY3Rp
b24gaXMgYXQgYW4gZWRnZSBvZiB0aGUKKyAgICAgICAgLy8gZG9jdW1lbnQuCisgICAgICAgIGlu
dCBpbml0aWFsU2VsZWN0aW9uTGVuZ3RoID0gW1tpbml0aWFsU2VsZWN0aW9uIHN0cmluZ10gbGVu
Z3RoXTsKKyAgICAgICAgaWYgKGZvcndhcmQpIHsKKyAgICAgICAgICAgIFtzZWxlY3Rpb25Gb3JJ
bml0aWFsU2VhcmNoIGV4dGVuZFNlbGVjdGlvbkF0U3RhcnQ6MV07CisgICAgICAgICAgICBbc2Vs
ZWN0aW9uRm9ySW5pdGlhbFNlYXJjaCBleHRlbmRTZWxlY3Rpb25BdEVuZDotaW5pdGlhbFNlbGVj
dGlvbkxlbmd0aF07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBbc2VsZWN0aW9uRm9y
SW5pdGlhbFNlYXJjaCBleHRlbmRTZWxlY3Rpb25BdEVuZDoxXTsKKyAgICAgICAgICAgIFtzZWxl
Y3Rpb25Gb3JJbml0aWFsU2VhcmNoIGV4dGVuZFNlbGVjdGlvbkF0U3RhcnQ6LWluaXRpYWxTZWxl
Y3Rpb25MZW5ndGhdOworICAgICAgICB9CisgICAgfQorICAgIFBERlNlbGVjdGlvbiAqZm91bmRT
ZWxlY3Rpb24gPSBbZG9jdW1lbnQgZmluZFN0cmluZzpzdHJpbmcgZnJvbVNlbGVjdGlvbjpzZWxl
Y3Rpb25Gb3JJbml0aWFsU2VhcmNoIHdpdGhPcHRpb25zOm9wdGlvbnNdOworICAgIFtzZWxlY3Rp
b25Gb3JJbml0aWFsU2VhcmNoIHJlbGVhc2VdOworCisgICAgLy8gSWYgd2UgZmlyc3Qgc2VhcmNo
ZWQgaW4gdGhlIHNlbGVjdGlvbiwgYW5kIHdlIGZvdW5kIHRoZSBzZWxlY3Rpb24sIHNlYXJjaCBh
Z2FpbiBmcm9tIGp1c3QgcGFzdCB0aGUgc2VsZWN0aW9uCisgICAgaWYgKHN0YXJ0SW5TZWxlY3Rp
b24gJiYgX1BERlNlbGVjdGlvbnNBcmVFcXVhbChmb3VuZFNlbGVjdGlvbiwgaW5pdGlhbFNlbGVj
dGlvbikpCisgICAgICAgIGZvdW5kU2VsZWN0aW9uID0gW2RvY3VtZW50IGZpbmRTdHJpbmc6c3Ry
aW5nIGZyb21TZWxlY3Rpb246aW5pdGlhbFNlbGVjdGlvbiB3aXRoT3B0aW9uczpvcHRpb25zXTsK
KworICAgIGlmICghZm91bmRTZWxlY3Rpb24gJiYgd3JhcEZsYWcpCisgICAgICAgIGZvdW5kU2Vs
ZWN0aW9uID0gW2RvY3VtZW50IGZpbmRTdHJpbmc6c3RyaW5nIGZyb21TZWxlY3Rpb246bmlsIHdp
dGhPcHRpb25zOm9wdGlvbnNdOworCisgICAgcmV0dXJuIGZvdW5kU2VsZWN0aW9uOworfQorCist
IChOU1VJbnRlZ2VyKV9jb3VudE1hdGNoZXM6KE5TU3RyaW5nKilzdHJpbmcgY2FzZVNlbnNpdGl2
ZTooQk9PTCljYXNlRmxhZworeworICAgIGlmICghW3N0cmluZyBsZW5ndGhdKQorICAgICAgICBy
ZXR1cm4gbmlsOworCisgICAgaW50IG9wdGlvbnMgPSBjYXNlRmxhZyA/IDAgOiBOU0Nhc2VJbnNl
bnNpdGl2ZVNlYXJjaDsKKworICAgIHJldHVybiBbW1tfcGRmVmlldyBkb2N1bWVudF0gZmluZFN0
cmluZzpzdHJpbmcgd2l0aE9wdGlvbnM6b3B0aW9uc10gY291bnRdOworfQorCiAvLyBNQVJLOiBO
U1ZpZXcgb3ZlcnJpZGVzCiAKIC0gKHZvaWQpdmlld0RpZE1vdmVUb1dpbmRvdwpAQCAtNTMxLDQg
KzYwOCwzMSBAQCB2b2lkIFBERlZpZXdDb250cm9sbGVyOjpsaW5rQ2xpY2tlZChjb25zdCBTdHJp
bmcmIHVybCkKICAgICBwYWdlKCktPmxpbmtDbGlja2VkKHVybCwgZXZlbnQpOwogfQogCit2b2lk
IFBERlZpZXdDb250cm9sbGVyOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5k
T3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQoreworICAgIEJPT0wgZm9y
d2FyZCA9ICEob3B0aW9ucyAmIEZpbmRPcHRpb25zQmFja3dhcmRzKTsKKyAgICBCT09MIGNhc2VG
bGFnID0gIShvcHRpb25zICYgRmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUpOworICAgIEJPT0wg
d3JhcEZsYWcgPSBvcHRpb25zICYgRmluZE9wdGlvbnNXcmFwQXJvdW5kOworCisgICAgUERGU2Vs
ZWN0aW9uICpzZWxlY3Rpb24gPSBbbV93a1BERlZpZXcuZ2V0KCkgX25leHRNYXRjaEZvcjpzdHJp
bmcgZGlyZWN0aW9uOmZvcndhcmQgY2FzZVNlbnNpdGl2ZTpjYXNlRmxhZyB3cmFwOndyYXBGbGFn
IGZyb21TZWxlY3Rpb246W21fcGRmVmlldyBjdXJyZW50U2VsZWN0aW9uXSBzdGFydEluU2VsZWN0
aW9uOk5PXTsKKyAgICBOU1VJbnRlZ2VyIG1hdGNoQ291bnQgPSBbbV93a1BERlZpZXcuZ2V0KCkg
X2NvdW50TWF0Y2hlczpzdHJpbmcgY2FzZVNlbnNpdGl2ZTpjYXNlRmxhZ107CisKKyAgICBpZiAo
IXNlbGVjdGlvbikgeworICAgICAgICBwYWdlKCktPmRpZEZhaWxUb0ZpbmRTdHJpbmcoc3RyaW5n
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFttX3BkZlZpZXcgc2V0Q3VycmVudFNl
bGVjdGlvbjpzZWxlY3Rpb25dOworICAgIFttX3BkZlZpZXcgc2Nyb2xsU2VsZWN0aW9uVG9WaXNp
YmxlOm5pbF07CisgICAgcGFnZSgpLT5kaWRGaW5kU3RyaW5nKHN0cmluZywgbWF0Y2hDb3VudCk7
Cit9CisKK3ZvaWQgUERGVmlld0NvbnRyb2xsZXI6OmNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBT
dHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3Vu
dCkKK3sKKyAgICBCT09MIGNhc2VGbGFnID0gIShvcHRpb25zICYgRmluZE9wdGlvbnNDYXNlSW5z
ZW5zaXRpdmUpOworCisgICAgTlNVSW50ZWdlciBtYXRjaENvdW50ID0gW21fd2tQREZWaWV3Lmdl
dCgpIF9jb3VudE1hdGNoZXM6c3RyaW5nIGNhc2VTZW5zaXRpdmU6Y2FzZUZsYWddOworICAgIHBh
Z2UoKS0+ZGlkQ291bnRTdHJpbmdNYXRjaGVzKHN0cmluZywgbWF0Y2hDb3VudCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggNjM2ZjEyZTc0YjNkMjQwMTkwZmViYzdiOWZmNmJl
OWNhMDRlNDdlOS4uYTQ4ZTFjMzRiMTQ5ODBhZDNhNWUyZThhMDZiYmU4ZDViMTNiYjg1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5o
CkBAIC0xMDAsNiArMTAwLDggQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgZG91YmxlIGN1c3Rv
bVJlcHJlc2VudGF0aW9uWm9vbUZhY3RvcigpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDdXN0b21S
ZXByZXNlbnRhdGlvblpvb21GYWN0b3IoZG91YmxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluZFN0
cmluZ0luQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVu
c2lnbmVkIG1heE1hdGNoQ291bnQpOworICAgIHZpcnR1YWwgdm9pZCBjb3VudFN0cmluZ01hdGNo
ZXNJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNp
Z25lZCBtYXhNYXRjaENvdW50KTsKIAogICAgIHZpcnR1YWwgdm9pZCBmbGFzaEJhY2tpbmdTdG9y
ZVVwZGF0ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiB1cGRhdGVSZWN0cyk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJ
bXBsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwu
bW0KaW5kZXggYzUyNjRkMmQwNTNjZGIyOTRlNTRkYmQxMjdlYzNkMzUyZTc0ZjlhOC4uMzUyZWI4
MzVkYzM4YzgzMDY4MjUxMGVlMTlhYzg0ODFmMmM5Yzg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KQEAgLTQwNyw2ICs0MDcs
MTYgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Q3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFj
dG9yKGRvdWJsZSB6b29tRmFjdG9yKQogICAgIFttX3drVmlldyBfc2V0Q3VzdG9tUmVwcmVzZW50
YXRpb25ab29tRmFjdG9yOnpvb21GYWN0b3JdOwogfQogCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpm
aW5kU3RyaW5nSW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHN0cmluZywgRmlu
ZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKK3sKKyAgICBbbV93a1Zp
ZXcgX2ZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0aW9uOnN0cmluZyB3aXRoRmluZE9wdGlv
bnM6b3B0aW9ucyBtYXhNYXRjaENvdW50Om1heE1hdGNoQ291bnRdOworfQorCit2b2lkIFBhZ2VD
bGllbnRJbXBsOjpjb3VudFN0cmluZ01hdGNoZXNJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENv
dW50KQoreworICAgIFttX3drVmlldyBfY291bnRTdHJpbmdNYXRjaGVzSW5DdXN0b21SZXByZXNl
bnRhdGlvbjpzdHJpbmcgd2l0aEZpbmRPcHRpb25zOm9wdGlvbnMgbWF4TWF0Y2hDb3VudDptYXhN
YXRjaENvdW50XTsKK30KKwogdm9pZCBQYWdlQ2xpZW50SW1wbDo6Zmxhc2hCYWNraW5nU3RvcmVV
cGRhdGVzKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCBmMGIzMjMz
ODBiYjg2YTNiNGVhZTc4NGY3NDZkZTA4MjMxZWIwY2ZhLi40OGMxMjcxMjYyNDlkNGU4YWNmM2Fl
YzcxODU4ZGZmNGY4MTljYTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMv
V0tWaWV3Lm1tCkBAIC0yMTI5LDYgKzIxMjksMjIgQEAgc3RhdGljIHZvaWQgZHJhd1BhZ2VCYWNr
Z3JvdW5kKENHQ29udGV4dFJlZiBjb250ZXh0LCBXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IEkK
ICAgICBfZGF0YS0+X3BkZlZpZXdDb250cm9sbGVyLT5zZXRab29tRmFjdG9yKHpvb21GYWN0b3Ip
OwogfQogCistICh2b2lkKV9maW5kU3RyaW5nSW5DdXN0b21SZXByZXNlbnRhdGlvbjooTlNTdHJp
bmcgKilzdHJpbmcgd2l0aEZpbmRPcHRpb25zOihOU1VJbnRlZ2VyKW9wdGlvbnMgbWF4TWF0Y2hD
b3VudDooTlNVSW50ZWdlciljb3VudAoreworICAgIGlmICghX2RhdGEtPl9wZGZWaWV3Q29udHJv
bGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgX2RhdGEtPl9wZGZWaWV3Q29udHJvbGxlci0+
ZmluZFN0cmluZyhzdHJpbmcsIHN0YXRpY19jYXN0PFdlYktpdDo6RmluZE9wdGlvbnM+KG9wdGlv
bnMpLCBjb3VudCk7Cit9CisKKy0gKHZvaWQpX2NvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVw
cmVzZW50YXRpb246KE5TU3RyaW5nICopc3RyaW5nIHdpdGhGaW5kT3B0aW9uczooTlNVSW50ZWdl
cilvcHRpb25zIG1heE1hdGNoQ291bnQ6KE5TVUludGVnZXIpY291bnQKK3sKKyAgICBpZiAoIV9k
YXRhLT5fcGRmVmlld0NvbnRyb2xsZXIpCisgICAgICAgIHJldHVybjsKKworICAgIF9kYXRhLT5f
cGRmVmlld0NvbnRyb2xsZXItPmNvdW50U3RyaW5nTWF0Y2hlcyhzdHJpbmcsIHN0YXRpY19jYXN0
PFdlYktpdDo6RmluZE9wdGlvbnM+KG9wdGlvbnMpLCBjb3VudCk7Cit9CisKIC0gKHZvaWQpX3Nl
dERyYWdJbWFnZTooTlNJbWFnZSAqKWltYWdlIGF0OihOU1BvaW50KWNsaWVudFBvaW50IGxpbmtE
cmFnOihCT09MKWxpbmtEcmFnCiB7CiAgICAgLy8gV2UgbmVlZCB0byBwcmV2ZW50IHJlLWVudGVy
aW5nIHRoaXMgY2FsbCB0byBhdm9pZCBjcmFzaGluZyBpbiBBcHBLaXQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaAppbmRleCBhNjI2ZWMy
MjliYzc3YTY1MGQ0N2RkYzNlYTcwMGI2MGMxZjRmN2E0Li5iNmQ4NmE1MDA0MDc2MTUyZDBjZWU1
YWNmZTAxMWM1NDIyMDE1ZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1dLVmlld0ludGVybmFsLmgKQEAgLTY4LDYgKzY4LDggQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAtICh2b2lkKV9kaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lOihjb25zdCBTdHJpbmcmKXN1Z2dlc3RlZEZpbGVuYW1lIGRh
dGFSZWZlcmVuY2U6KGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmKWRhdGFSZWZlcmVuY2U7
CiAtIChkb3VibGUpX2N1c3RvbVJlcHJlc2VudGF0aW9uWm9vbUZhY3RvcjsKIC0gKHZvaWQpX3Nl
dEN1c3RvbVJlcHJlc2VudGF0aW9uWm9vbUZhY3RvcjooZG91YmxlKXpvb21GYWN0b3I7CistICh2
b2lkKV9maW5kU3RyaW5nSW5DdXN0b21SZXByZXNlbnRhdGlvbjooTlNTdHJpbmcgKilzdHJpbmcg
d2l0aEZpbmRPcHRpb25zOihOU1VJbnRlZ2VyKW9wdGlvbnMgbWF4TWF0Y2hDb3VudDooTlNVSW50
ZWdlciljb3VudDsKKy0gKHZvaWQpX2NvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50
YXRpb246KE5TU3RyaW5nICopc3RyaW5nIHdpdGhGaW5kT3B0aW9uczooTlNVSW50ZWdlcilvcHRp
b25zIG1heE1hdGNoQ291bnQ6KE5TVUludGVnZXIpY291bnQ7CiAtICh2b2lkKV9zZXREcmFnSW1h
Z2U6KE5TSW1hZ2UgKilpbWFnZSBhdDooTlNQb2ludCljbGllbnRQb2ludCBsaW5rRHJhZzooQk9P
TClsaW5rRHJhZzsKIAogLSAodm9pZClfc2V0RHJhd2luZ0FyZWFTaXplOihOU1NpemUpc2l6ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDljNmUyYTRkYjJjZjZiNTMz
NDUxYWNhOTNjMmNlOTc3MmM0NmIxNzkuLmNjOWU5YmE5OGEzNThlZmYyYTY5NWQxM2JkNTcxZDJl
YTU3Njk0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMTQ1LDYg
KzE0NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VzdG9tUmVwcmVzZW50YXRp
b25ab29tRmFjdG9yKGRvdWJsZSkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGZsYXNoQmFja2lu
Z1N0b3JlVXBkYXRlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHVwZGF0ZVJlY3Rz
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0aW9u
KGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGNvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRp
b24oY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpID0g
MDsKIAogICAgIHZpcnR1YWwgZmxvYXQgdXNlclNwYWNlU2NhbGVGYWN0b3IoKSBjb25zdCA9IDA7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAxNjBm
ZTFkZGIxODNjMDQyMjMxYzU4N2U1N2UxOGU1ODhhZWMzZDQ2Li41NzNjMjhlMWI4NjdlM2QyNTky
MmNjZmI5NmUwN2IxNzQ0MWY2OTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtMTA4OSw3ICsxMDg5LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRN
ZW1vcnlDYWNoZUNsaWVudENhbGxzRW5hYmxlZChib29sIG1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNF
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBG
aW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQogewotICAgIHByb2Nl
c3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmluZFN0cmluZyhzdHJpbmcsIG9wdGlvbnMs
IG1heE1hdGNoQ291bnQpLCBtX3BhZ2VJRCk7CisgICAgaWYgKG1fbWFpbkZyYW1lSGFzQ3VzdG9t
UmVwcmVzZW50YXRpb24pCisgICAgICAgIG1fcGFnZUNsaWVudC0+ZmluZFN0cmluZ0luQ3VzdG9t
UmVwcmVzZW50YXRpb24oc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KTsKKyAgICBlbHNl
CisgICAgICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmluZFN0cmluZyhz
dHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpoaWRlRmluZFVJKCkKQEAgLTEwOTksNyArMTEwMiwxMCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6aGlkZUZpbmRVSSgpCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb3VudFN0cmluZ01h
dGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVk
IG1heE1hdGNoQ291bnQpCiB7Ci0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpDb3VudFN0cmluZ01hdGNoZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSwgbV9w
YWdlSUQpOworICAgIGlmIChtX21haW5GcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uKQorICAg
ICAgICBtX3BhZ2VDbGllbnQtPmNvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRp
b24oc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KTsKKyAgICBlbHNlCisgICAgICAgIHBy
b2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q291bnRTdHJpbmdNYXRjaGVzKHN0cmlu
Zywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIHNjcmlwdCwgUGFz
c1JlZlB0cjxTY3JpcHRWYWx1ZUNhbGxiYWNrPiBwcnBDYWxsYmFjaykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA2ZWJjNzFlMThiODEzMmQwN2U2MDk4MWVhZjM4
YzlmYTJiNjM2NzUyLi42MTI0ZDE1MzBkNGU1ZDIyZmRkZDk3ZDg4NDE0ZGRhOWM4MTNhN2QyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zNDgsNiArMzQ4LDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlv
bnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOwogICAgIHZvaWQgaGlkZUZpbmRVSSgpOwogICAg
IHZvaWQgY291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNp
Z25lZCBtYXhNYXRjaENvdW50KTsKKyAgICB2b2lkIGRpZENvdW50U3RyaW5nTWF0Y2hlcyhjb25z
dCBTdHJpbmcmLCB1aW50MzJfdCBtYXRjaENvdW50KTsKKyAgICB2b2lkIHNldEZpbmRJbmRpY2F0
b3IoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzZWxlY3Rpb25SZWN0SW5XaW5kb3dDb29yZGlu
YXRlcywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4mIHRleHRSZWN0c0luU2VsZWN0
aW9uUmVjdENvb3JkaW5hdGVzLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgY29udGVu
dEltYWdlSGFuZGxlLCBib29sIGZhZGVPdXQpOworICAgIHZvaWQgZGlkRmluZFN0cmluZyhjb25z
dCBTdHJpbmcmLCB1aW50MzJfdCBtYXRjaENvdW50KTsKKyAgICB2b2lkIGRpZEZhaWxUb0ZpbmRT
dHJpbmcoY29uc3QgU3RyaW5nJik7CiAKICAgICB2b2lkIGdldENvbnRlbnRzQXNTdHJpbmcoUGFz
c1JlZlB0cjxTdHJpbmdDYWxsYmFjaz4pOwogICAgIHZvaWQgZ2V0TWFpblJlc291cmNlRGF0YU9m
RnJhbWUoV2ViRnJhbWVQcm94eSosIFBhc3NSZWZQdHI8RGF0YUNhbGxiYWNrPik7CkBAIC01OTQs
MTIgKzU5OCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnRlcnByZXRRdWV1ZWRLZXlFdmVudChj
b25zdCBUZXh0SW5wdXRTdGF0ZSYsIGJvb2wmIGhhbmRsZWQsIFZlY3RvcjxXZWJDb3JlOjpLZXlw
cmVzc0NvbW1hbmQ+Jik7CiAjZW5kaWYKICAgICAKLSAgICAvLyBGaW5kLgotICAgIHZvaWQgZGlk
Q291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIHVpbnQzMl90IG1hdGNoQ291bnQpOwot
ICAgIHZvaWQgc2V0RmluZEluZGljYXRvcihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNlbGVj
dGlvblJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRS
ZWN0PiYgdGV4dFJlY3RzSW5TZWxlY3Rpb25SZWN0Q29vcmRpbmF0ZXMsIGNvbnN0IFNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlJiBjb250ZW50SW1hZ2VIYW5kbGUsIGJvb2wgZmFkZU91dCk7Ci0gICAg
dm9pZCBkaWRGaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIHVpbnQzMl90IG1hdGNoQ291bnQpOwot
ICAgIHZvaWQgZGlkRmFpbFRvRmluZFN0cmluZyhjb25zdCBTdHJpbmcmKTsKLQogICAgIC8vIFBv
cHVwIE1lbnUuCiAgICAgdm9pZCBzaG93UG9wdXBNZW51KGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IHJlY3QsIHVpbnQ2NF90IHRleHREaXJlY3Rpb24sIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+
JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4LCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURh
dGEmKTsKICAgICB2b2lkIGhpZGVQb3B1cE1lbnUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88151</attachid>
            <date>2011-04-04 16:22:46 -0700</date>
            <delta_ts>2011-04-07 18:12:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57765-20110404162244.patch</filename>
            <type>text/plain</type>
            <size>17923</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI4ODYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3NGI4MWZmMTg5MGMwMTJj
YTMxMTAxMDQwNzc2NWFhNzlhZDE4MWYxLi5jM2E5YjA3ZWZmOWNkNmRjZWIyYWQ2MzE2NmM3Zjcz
NWQ5M2ZiYzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDQtMDQgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV0syOiBQREY6IEZpbmQgaW4gcGFnZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc3NjUKKworICAgICAgICBTdXBw
b3J0IHNlYXJjaGluZyB0ZXh0IHdpdGhpbiBQREYgZG9jdW1lbnRzLiAgRmluZCByZXF1ZXN0cyBt
dXN0IGJlIHJvdXRlZCBmcm9tIHRoZQorICAgICAgICBXZWJQYWdlUHJveHksIHRocm91Z2ggdGhl
IFBhZ2VDbGllbnQsIGFuZCB0byB0aGUgV0tWaWV3LCB3aGVyZSB0aGV5IGNhbiBiZSBwYXNzZWQg
dG8gCisgICAgICAgIHRoZSBQREZWaWV3Q29udHJvbGxlci4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvbWFjL1BERlZpZXdDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9t
YWMvUERGVmlld0NvbnRyb2xsZXIubW06CisgICAgICAgIChfUERGU2VsZWN0aW9uc0FyZUVxdWFs
KTogQ29waWVkIGZyb20gV2ViUERGVmlldy4KKyAgICAgICAgKC1bV0tQREZWaWV3IF9uZXh0TWF0
Y2hGb3I6ZGlyZWN0aW9uOmNhc2VTZW5zaXRpdmU6d3JhcDpmcm9tU2VsZWN0aW9uOnN0YXJ0SW5T
ZWxlY3Rpb246XSk6IENvcGllZCBmcm9tIFdlYlBERlZpZXcuCisgICAgICAgICgtW1dLUERGVmll
dyBfY291bnRNYXRjaGVzOmNhc2VTZW5zaXRpdmU6XSk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpQREZWaWV3Q29udHJvbGxlcjo6ZmluZFN0cmluZyk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpQREZWaWV3Q29udHJvbGxlcjo6Y291bnRTdHJpbmdNYXRjaGVzKTogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9Q
YWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJ
bXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZmluZFN0cmluZ0luQ3Vz
dG9tUmVwcmVzZW50YXRpb24pOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmNvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRpb24pOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IF9maW5kU3RyaW5n
SW5DdXN0b21SZXByZXNlbnRhdGlvbjp3aXRoRmluZE9wdGlvbnM6bWF4TWF0Y2hDb3VudDpdKTog
QWRkZWQuCisgICAgICAgICgtW1dLVmlldyBfY291bnRTdHJpbmdNYXRjaGVzSW5DdXN0b21SZXBy
ZXNlbnRhdGlvbjp3aXRoRmluZE9wdGlvbnM6bWF4TWF0Y2hDb3VudDpdKTogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOiBNb3ZlZCBhIG51bWJlciBvZiBmaW5kLXJl
bGF0ZWQgZnVuY3Rpb25zIGZyb20gcHJpdmF0ZTogdG8gcHVibGljOiBzbworICAgICAgICAgICAg
dGhleSBjb3VsZCBiZSBjYWxsZWQgZnJvbSBQREZWaWV3Q29udHJvbGxlci4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpmaW5kU3RyaW5nKTogQWRkZWQuIAorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNv
dW50U3RyaW5nTWF0Y2hlcyk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdr
cGFnZV9wLmg6CisgICAgICAgIChRV0tQYWdlUHJpdmF0ZTo6ZmluZFN0cmluZ0luQ3VzdG9tUmVw
cmVzZW50YXRpb24pOiBBZGRlZCBzdHViLgorICAgICAgICAoUVdLUGFnZVByaXZhdGU6OmNvdW50
U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRpb24pOiBBZGRlZCBzdHViLgorCiAyMDEx
LTA0LTA0ICBKYWRlIEhhbiAgPGphZGUuaGFuQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBDc2FiYSBPc3p0cm9nb27DoWMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL21hYy9QREZWaWV3Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvUERGVmlld0NvbnRyb2xsZXIuaAppbmRleCBjYzNiMjk5ZGVhODA3OTFmZDJi
NjFiNWJhNWU5NDg1N2E4OWUxYzM4Li4wNDFhYTdiZTc4ZTZmOTU5OGY2OGI0YzIyYzA3YTI1M2M1
ZTZiNDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QREZW
aWV3Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BE
RlZpZXdDb250cm9sbGVyLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgUERGVmlld0NvbnRy
b2xsZXJfaAogI2RlZmluZSBQREZWaWV3Q29udHJvbGxlcl9oCiAKKyNpbmNsdWRlICJXZWJGaW5k
T3B0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTY2LDYgKzY3LDkgQEAg
cHVibGljOgogICAgIHZvaWQgc2F2ZVBERlRvRG93bmxvYWRzRm9sZGVyKCk7CiAgICAgdm9pZCBs
aW5rQ2xpY2tlZChjb25zdCBTdHJpbmcmIHVybCk7CiAKKyAgICB2b2lkIGZpbmRTdHJpbmcoY29u
c3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOworICAgIHZv
aWQgY291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25l
ZCBtYXhNYXRjaENvdW50KTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBQREZWaWV3Q29udHJv
bGxlcihXS1ZpZXcgKndrVmlldyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1BERlZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9tYWMvUERGVmlld0NvbnRyb2xsZXIubW0KaW5kZXggMTI4N2QxOGVkODdhMGM2Njc0
OGMyOWU4ZTVjYjg0MWY5MzhmYmU2NS4uNmVjZDdjN2IxY2Y2ZGFjY2FmY2E0ZmJkNDI2ZjI0OTJh
MWFlOTU3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUERG
Vmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMv
UERGVmlld0NvbnRyb2xsZXIubW0KQEAgLTc2LDYgKzc2LDI5IEBAIHN0YXRpYyB2b2lkIF9hcHBs
aWNhdGlvbkluZm9Gb3JNSU1FVHlwZShOU1N0cmluZyAqdHlwZSwgTlNTdHJpbmcgKipuYW1lLCBO
U0ltYWdlCiAgICAgKm5hbWUgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGRpc3Bs
YXlOYW1lQXRQYXRoOmFwcFBhdGhdOwogfQogCisvLyBGSVhNRSA0MTgyODc2OiBXZSBjYW4gZWxp
bWluYXRlIHRoaXMgZnVuY3Rpb24gaW4gZmF2b3IgaWYgLWlzRXF1YWw6IGlmIFtQREZTZWxlY3Rp
b24gaXNFcXVhbDpdIGlzIG92ZXJyaWRkZW4KKy8vIHRvIGNvbXBhcmUgY29udGVudHMuCitzdGF0
aWMgQk9PTCBfUERGU2VsZWN0aW9uc0FyZUVxdWFsKFBERlNlbGVjdGlvbiAqc2VsZWN0aW9uQSwg
UERGU2VsZWN0aW9uICpzZWxlY3Rpb25CKQoreworICAgIE5TQXJyYXkgKmFQYWdlcyA9IFtzZWxl
Y3Rpb25BIHBhZ2VzXTsKKyAgICBOU0FycmF5ICpiUGFnZXMgPSBbc2VsZWN0aW9uQiBwYWdlc107
CisKKyAgICBpZiAoIVthUGFnZXMgaXNFcXVhbDpiUGFnZXNdKQorICAgICAgICByZXR1cm4gTk87
CisKKyAgICBpbnQgY291bnQgPSBbYVBhZ2VzIGNvdW50XTsKKyAgICBpbnQgaTsKKyAgICBmb3Ig
KGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBOU1JlY3QgYUJvdW5kcyA9IFtzZWxl
Y3Rpb25BIGJvdW5kc0ZvclBhZ2U6W2FQYWdlcyBvYmplY3RBdEluZGV4OmldXTsKKyAgICAgICAg
TlNSZWN0IGJCb3VuZHMgPSBbc2VsZWN0aW9uQiBib3VuZHNGb3JQYWdlOltiUGFnZXMgb2JqZWN0
QXRJbmRleDppXV07CisgICAgICAgIGlmICghTlNFcXVhbFJlY3RzKGFCb3VuZHMsIGJCb3VuZHMp
KSB7CisgICAgICAgICAgICByZXR1cm4gTk87CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1
cm4gWUVTOworfQorCiBAaW50ZXJmYWNlIFdLUERGVmlldyA6IE5TVmlldwogewogICAgIFBERlZp
ZXdDb250cm9sbGVyKiBfcGRmVmlld0NvbnRyb2xsZXI7CkBAIC05Miw3ICsxMTUsNyBAQCBzdGF0
aWMgdm9pZCBfYXBwbGljYXRpb25JbmZvRm9yTUlNRVR5cGUoTlNTdHJpbmcgKnR5cGUsIE5TU3Ry
aW5nICoqbmFtZSwgTlNJbWFnZQogLSAodm9pZClzZXREb2N1bWVudDooUERGRG9jdW1lbnQgKilw
ZGZEb2N1bWVudDsKIAogLSAodm9pZClfYXBwbHlQREZQcmVmZXJlbmNlczsKLQorLSAoUERGU2Vs
ZWN0aW9uICopX25leHRNYXRjaEZvcjooTlNTdHJpbmcgKilzdHJpbmcgZGlyZWN0aW9uOihCT09M
KWZvcndhcmQgY2FzZVNlbnNpdGl2ZTooQk9PTCljYXNlRmxhZyB3cmFwOihCT09MKXdyYXBGbGFn
IGZyb21TZWxlY3Rpb246KFBERlNlbGVjdGlvbiAqKWluaXRpYWxTZWxlY3Rpb24gc3RhcnRJblNl
bGVjdGlvbjooQk9PTClzdGFydEluU2VsZWN0aW9uOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24g
V0tQREZWaWV3CkBAIC0xODgsNiArMjExLDYwIEBAIHN0YXRpYyB2b2lkIF9hcHBsaWNhdGlvbklu
Zm9Gb3JNSU1FVHlwZShOU1N0cmluZyAqdHlwZSwgTlNTdHJpbmcgKipuYW1lLCBOU0ltYWdlCiAg
ICAgX3BkZlZpZXdDb250cm9sbGVyLT5vcGVuUERGSW5GaW5kZXIoKTsKIH0KIAorLSAoUERGU2Vs
ZWN0aW9uICopX25leHRNYXRjaEZvcjooTlNTdHJpbmcgKilzdHJpbmcgZGlyZWN0aW9uOihCT09M
KWZvcndhcmQgY2FzZVNlbnNpdGl2ZTooQk9PTCljYXNlRmxhZyB3cmFwOihCT09MKXdyYXBGbGFn
IGZyb21TZWxlY3Rpb246KFBERlNlbGVjdGlvbiAqKWluaXRpYWxTZWxlY3Rpb24gc3RhcnRJblNl
bGVjdGlvbjooQk9PTClzdGFydEluU2VsZWN0aW9uCit7CisgICAgaWYgKCFbc3RyaW5nIGxlbmd0
aF0pCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBpbnQgb3B0aW9ucyA9IDA7CisgICAgaWYg
KCFmb3J3YXJkKQorICAgICAgICBvcHRpb25zIHw9IE5TQmFja3dhcmRzU2VhcmNoOworCisgICAg
aWYgKCFjYXNlRmxhZykKKyAgICAgICAgb3B0aW9ucyB8PSBOU0Nhc2VJbnNlbnNpdGl2ZVNlYXJj
aDsKKworICAgIFBERkRvY3VtZW50ICpkb2N1bWVudCA9IFtfcGRmVmlldyBkb2N1bWVudF07CisK
KyAgICBQREZTZWxlY3Rpb24gKnNlbGVjdGlvbkZvckluaXRpYWxTZWFyY2ggPSBbaW5pdGlhbFNl
bGVjdGlvbiBjb3B5XTsKKyAgICBpZiAoc3RhcnRJblNlbGVjdGlvbikgeworICAgICAgICAvLyBJ
bml0aWFsbHkgd2Ugd2FudCB0byBpbmNsdWRlIHRoZSBzZWxlY3RlZCB0ZXh0IGluIHRoZSBzZWFy
Y2guIFBERkRvY3VtZW50J3MgQVBJIGFsd2F5cyBzZWFyY2hlcyBmcm9tIGp1c3QKKyAgICAgICAg
Ly8gcGFzdCB0aGUgcGFzc2VkLWluIHNlbGVjdGlvbiwgc28gd2UgbmVlZCB0byBwYXNzIGEgc2Vs
ZWN0aW9uIHRoYXQncyBtb2RpZmllZCBhcHByb3ByaWF0ZWx5LgorICAgICAgICAvLyBGSVhNRSA0
MTgyODYzOiBJZGVhbGx5IHdlJ2QgdXNlIGEgemVyby1sZW5ndGggc2VsZWN0aW9uIGF0IHRoZSBl
ZGdlIG9mIHRoZSBjdXJyZW50IHNlbGVjdGlvbiwgYnV0IHplcm8tbGVuZ3RoCisgICAgICAgIC8v
IHNlbGVjdGlvbnMgZG9uJ3Qgd29yayBpbiBQREZEb2N1bWVudC4gU28gaW5zdGVhZCB3ZSBtYWtl
IGEgb25lLWxlbmd0aCBzZWxlY3Rpb24ganVzdCBiZWZvcmUgb3IgYWZ0ZXIgdGhlCisgICAgICAg
IC8vIGN1cnJlbnQgc2VsZWN0aW9uLCB3aGljaCB3b3JrcyBmb3Igb3VyIHB1cnBvc2VzIGV2ZW4g
d2hlbiB0aGUgY3VycmVudCBzZWxlY3Rpb24gaXMgYXQgYW4gZWRnZSBvZiB0aGUKKyAgICAgICAg
Ly8gZG9jdW1lbnQuCisgICAgICAgIGludCBpbml0aWFsU2VsZWN0aW9uTGVuZ3RoID0gW1tpbml0
aWFsU2VsZWN0aW9uIHN0cmluZ10gbGVuZ3RoXTsKKyAgICAgICAgaWYgKGZvcndhcmQpIHsKKyAg
ICAgICAgICAgIFtzZWxlY3Rpb25Gb3JJbml0aWFsU2VhcmNoIGV4dGVuZFNlbGVjdGlvbkF0U3Rh
cnQ6MV07CisgICAgICAgICAgICBbc2VsZWN0aW9uRm9ySW5pdGlhbFNlYXJjaCBleHRlbmRTZWxl
Y3Rpb25BdEVuZDotaW5pdGlhbFNlbGVjdGlvbkxlbmd0aF07CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBbc2VsZWN0aW9uRm9ySW5pdGlhbFNlYXJjaCBleHRlbmRTZWxlY3Rpb25BdEVu
ZDoxXTsKKyAgICAgICAgICAgIFtzZWxlY3Rpb25Gb3JJbml0aWFsU2VhcmNoIGV4dGVuZFNlbGVj
dGlvbkF0U3RhcnQ6LWluaXRpYWxTZWxlY3Rpb25MZW5ndGhdOworICAgICAgICB9CisgICAgfQor
ICAgIFBERlNlbGVjdGlvbiAqZm91bmRTZWxlY3Rpb24gPSBbZG9jdW1lbnQgZmluZFN0cmluZzpz
dHJpbmcgZnJvbVNlbGVjdGlvbjpzZWxlY3Rpb25Gb3JJbml0aWFsU2VhcmNoIHdpdGhPcHRpb25z
Om9wdGlvbnNdOworICAgIFtzZWxlY3Rpb25Gb3JJbml0aWFsU2VhcmNoIHJlbGVhc2VdOworCisg
ICAgLy8gSWYgd2UgZmlyc3Qgc2VhcmNoZWQgaW4gdGhlIHNlbGVjdGlvbiwgYW5kIHdlIGZvdW5k
IHRoZSBzZWxlY3Rpb24sIHNlYXJjaCBhZ2FpbiBmcm9tIGp1c3QgcGFzdCB0aGUgc2VsZWN0aW9u
CisgICAgaWYgKHN0YXJ0SW5TZWxlY3Rpb24gJiYgX1BERlNlbGVjdGlvbnNBcmVFcXVhbChmb3Vu
ZFNlbGVjdGlvbiwgaW5pdGlhbFNlbGVjdGlvbikpCisgICAgICAgIGZvdW5kU2VsZWN0aW9uID0g
W2RvY3VtZW50IGZpbmRTdHJpbmc6c3RyaW5nIGZyb21TZWxlY3Rpb246aW5pdGlhbFNlbGVjdGlv
biB3aXRoT3B0aW9uczpvcHRpb25zXTsKKworICAgIGlmICghZm91bmRTZWxlY3Rpb24gJiYgd3Jh
cEZsYWcpCisgICAgICAgIGZvdW5kU2VsZWN0aW9uID0gW2RvY3VtZW50IGZpbmRTdHJpbmc6c3Ry
aW5nIGZyb21TZWxlY3Rpb246bmlsIHdpdGhPcHRpb25zOm9wdGlvbnNdOworCisgICAgcmV0dXJu
IGZvdW5kU2VsZWN0aW9uOworfQorCistIChOU1VJbnRlZ2VyKV9jb3VudE1hdGNoZXM6KE5TU3Ry
aW5nKilzdHJpbmcgY2FzZVNlbnNpdGl2ZTooQk9PTCljYXNlRmxhZworeworICAgIGlmICghW3N0
cmluZyBsZW5ndGhdKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgaW50IG9wdGlvbnMgPSBj
YXNlRmxhZyA/IDAgOiBOU0Nhc2VJbnNlbnNpdGl2ZVNlYXJjaDsKKworICAgIHJldHVybiBbW1tf
cGRmVmlldyBkb2N1bWVudF0gZmluZFN0cmluZzpzdHJpbmcgd2l0aE9wdGlvbnM6b3B0aW9uc10g
Y291bnRdOworfQorCiAvLyBNQVJLOiBOU1ZpZXcgb3ZlcnJpZGVzCiAKIC0gKHZvaWQpdmlld0Rp
ZE1vdmVUb1dpbmRvdwpAQCAtNTMxLDQgKzYwOCwzMSBAQCB2b2lkIFBERlZpZXdDb250cm9sbGVy
OjpsaW5rQ2xpY2tlZChjb25zdCBTdHJpbmcmIHVybCkKICAgICBwYWdlKCktPmxpbmtDbGlja2Vk
KHVybCwgZXZlbnQpOwogfQogCit2b2lkIFBERlZpZXdDb250cm9sbGVyOjpmaW5kU3RyaW5nKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRj
aENvdW50KQoreworICAgIEJPT0wgZm9yd2FyZCA9ICEob3B0aW9ucyAmIEZpbmRPcHRpb25zQmFj
a3dhcmRzKTsKKyAgICBCT09MIGNhc2VGbGFnID0gIShvcHRpb25zICYgRmluZE9wdGlvbnNDYXNl
SW5zZW5zaXRpdmUpOworICAgIEJPT0wgd3JhcEZsYWcgPSBvcHRpb25zICYgRmluZE9wdGlvbnNX
cmFwQXJvdW5kOworCisgICAgUERGU2VsZWN0aW9uICpzZWxlY3Rpb24gPSBbbV93a1BERlZpZXcu
Z2V0KCkgX25leHRNYXRjaEZvcjpzdHJpbmcgZGlyZWN0aW9uOmZvcndhcmQgY2FzZVNlbnNpdGl2
ZTpjYXNlRmxhZyB3cmFwOndyYXBGbGFnIGZyb21TZWxlY3Rpb246W21fcGRmVmlldyBjdXJyZW50
U2VsZWN0aW9uXSBzdGFydEluU2VsZWN0aW9uOk5PXTsKKyAgICBOU1VJbnRlZ2VyIG1hdGNoQ291
bnQgPSBbbV93a1BERlZpZXcuZ2V0KCkgX2NvdW50TWF0Y2hlczpzdHJpbmcgY2FzZVNlbnNpdGl2
ZTpjYXNlRmxhZ107CisKKyAgICBpZiAoIXNlbGVjdGlvbikgeworICAgICAgICBwYWdlKCktPmRp
ZEZhaWxUb0ZpbmRTdHJpbmcoc3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IFttX3BkZlZpZXcgc2V0Q3VycmVudFNlbGVjdGlvbjpzZWxlY3Rpb25dOworICAgIFttX3BkZlZp
ZXcgc2Nyb2xsU2VsZWN0aW9uVG9WaXNpYmxlOm5pbF07CisgICAgcGFnZSgpLT5kaWRGaW5kU3Ry
aW5nKHN0cmluZywgbWF0Y2hDb3VudCk7Cit9CisKK3ZvaWQgUERGVmlld0NvbnRyb2xsZXI6OmNv
dW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9u
cywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKK3sKKyAgICBCT09MIGNhc2VGbGFnID0gIShvcHRp
b25zICYgRmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUpOworCisgICAgTlNVSW50ZWdlciBtYXRj
aENvdW50ID0gW21fd2tQREZWaWV3LmdldCgpIF9jb3VudE1hdGNoZXM6c3RyaW5nIGNhc2VTZW5z
aXRpdmU6Y2FzZUZsYWddOworICAgIHBhZ2UoKS0+ZGlkQ291bnRTdHJpbmdNYXRjaGVzKHN0cmlu
ZywgbWF0Y2hDb3VudCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggNjM2ZjEy
ZTc0YjNkMjQwMTkwZmViYzdiOWZmNmJlOWNhMDRlNDdlOS4uYTQ4ZTFjMzRiMTQ5ODBhZDNhNWUy
ZThhMDZiYmU4ZDViMTNiYjg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCkBAIC0xMDAsNiArMTAwLDggQEAgcHJpdmF0ZToKIAog
ICAgIHZpcnR1YWwgZG91YmxlIGN1c3RvbVJlcHJlc2VudGF0aW9uWm9vbUZhY3RvcigpOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRDdXN0b21SZXByZXNlbnRhdGlvblpvb21GYWN0b3IoZG91YmxlKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZmluZFN0cmluZ0luQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3Qg
U3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOworICAgIHZpcnR1
YWwgdm9pZCBjb3VudFN0cmluZ01hdGNoZXNJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0
cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKIAogICAgIHZpcnR1
YWwgdm9pZCBmbGFzaEJhY2tpbmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6Oklu
dFJlY3Q+JiB1cGRhdGVSZWN0cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0KaW5kZXggYzUyNjRkMmQwNTNjZGIyOTRlNTRkYmQx
MjdlYzNkMzUyZTc0ZjlhOC4uMzUyZWI4MzVkYzM4YzgzMDY4MjUxMGVlMTlhYzg0ODFmMmM5Yzg4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVu
dEltcGwubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVu
dEltcGwubW0KQEAgLTQwNyw2ICs0MDcsMTYgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Q3Vz
dG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKGRvdWJsZSB6b29tRmFjdG9yKQogICAgIFttX3dr
VmlldyBfc2V0Q3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yOnpvb21GYWN0b3JdOwogfQog
Cit2b2lkIFBhZ2VDbGllbnRJbXBsOjpmaW5kU3RyaW5nSW5DdXN0b21SZXByZXNlbnRhdGlvbihj
b25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0
Y2hDb3VudCkKK3sKKyAgICBbbV93a1ZpZXcgX2ZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0
aW9uOnN0cmluZyB3aXRoRmluZE9wdGlvbnM6b3B0aW9ucyBtYXhNYXRjaENvdW50Om1heE1hdGNo
Q291bnRdOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpjb3VudFN0cmluZ01hdGNoZXNJbkN1
c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRp
b25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQoreworICAgIFttX3drVmlldyBfY291bnRTdHJp
bmdNYXRjaGVzSW5DdXN0b21SZXByZXNlbnRhdGlvbjpzdHJpbmcgd2l0aEZpbmRPcHRpb25zOm9w
dGlvbnMgbWF4TWF0Y2hDb3VudDptYXhNYXRjaENvdW50XTsKK30KKwogdm9pZCBQYWdlQ2xpZW50
SW1wbDo6Zmxhc2hCYWNraW5nU3RvcmVVcGRhdGVzKGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1dLVmlldy5tbQppbmRleCBmMGIzMjMzODBiYjg2YTNiNGVhZTc4NGY3NDZkZTA4MjMxZWIwY2Zh
Li40OGMxMjcxMjYyNDlkNGU4YWNmM2FlYzcxODU4ZGZmNGY4MTljYTJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBAIC0yMTI5LDYgKzIxMjksMjIgQEAg
c3RhdGljIHZvaWQgZHJhd1BhZ2VCYWNrZ3JvdW5kKENHQ29udGV4dFJlZiBjb250ZXh0LCBXZWJQ
YWdlUHJveHkqIHBhZ2UsIGNvbnN0IEkKICAgICBfZGF0YS0+X3BkZlZpZXdDb250cm9sbGVyLT5z
ZXRab29tRmFjdG9yKHpvb21GYWN0b3IpOwogfQogCistICh2b2lkKV9maW5kU3RyaW5nSW5DdXN0
b21SZXByZXNlbnRhdGlvbjooTlNTdHJpbmcgKilzdHJpbmcgd2l0aEZpbmRPcHRpb25zOihOU1VJ
bnRlZ2VyKW9wdGlvbnMgbWF4TWF0Y2hDb3VudDooTlNVSW50ZWdlciljb3VudAoreworICAgIGlm
ICghX2RhdGEtPl9wZGZWaWV3Q29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgX2Rh
dGEtPl9wZGZWaWV3Q29udHJvbGxlci0+ZmluZFN0cmluZyhzdHJpbmcsIHN0YXRpY19jYXN0PFdl
YktpdDo6RmluZE9wdGlvbnM+KG9wdGlvbnMpLCBjb3VudCk7Cit9CisKKy0gKHZvaWQpX2NvdW50
U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRpb246KE5TU3RyaW5nICopc3RyaW5nIHdp
dGhGaW5kT3B0aW9uczooTlNVSW50ZWdlcilvcHRpb25zIG1heE1hdGNoQ291bnQ6KE5TVUludGVn
ZXIpY291bnQKK3sKKyAgICBpZiAoIV9kYXRhLT5fcGRmVmlld0NvbnRyb2xsZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIF9kYXRhLT5fcGRmVmlld0NvbnRyb2xsZXItPmNvdW50U3RyaW5nTWF0
Y2hlcyhzdHJpbmcsIHN0YXRpY19jYXN0PFdlYktpdDo6RmluZE9wdGlvbnM+KG9wdGlvbnMpLCBj
b3VudCk7Cit9CisKIC0gKHZvaWQpX3NldERyYWdJbWFnZTooTlNJbWFnZSAqKWltYWdlIGF0OihO
U1BvaW50KWNsaWVudFBvaW50IGxpbmtEcmFnOihCT09MKWxpbmtEcmFnCiB7CiAgICAgLy8gV2Ug
bmVlZCB0byBwcmV2ZW50IHJlLWVudGVyaW5nIHRoaXMgY2FsbCB0byBhdm9pZCBjcmFzaGluZyBp
biBBcHBLaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9X
S1ZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3
SW50ZXJuYWwuaAppbmRleCBhNjI2ZWMyMjliYzc3YTY1MGQ0N2RkYzNlYTcwMGI2MGMxZjRmN2E0
Li5iNmQ4NmE1MDA0MDc2MTUyZDBjZWU1YWNmZTAxMWM1NDIyMDE1ZjJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKQEAgLTY4LDYg
KzY4LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAtICh2b2lkKV9kaWRGaW5pc2hMb2FkaW5nRGF0
YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOihjb25zdCBTdHJp
bmcmKXN1Z2dlc3RlZEZpbGVuYW1lIGRhdGFSZWZlcmVuY2U6KGNvbnN0IENvcmVJUEM6OkRhdGFS
ZWZlcmVuY2UmKWRhdGFSZWZlcmVuY2U7CiAtIChkb3VibGUpX2N1c3RvbVJlcHJlc2VudGF0aW9u
Wm9vbUZhY3RvcjsKIC0gKHZvaWQpX3NldEN1c3RvbVJlcHJlc2VudGF0aW9uWm9vbUZhY3Rvcjoo
ZG91YmxlKXpvb21GYWN0b3I7CistICh2b2lkKV9maW5kU3RyaW5nSW5DdXN0b21SZXByZXNlbnRh
dGlvbjooTlNTdHJpbmcgKilzdHJpbmcgd2l0aEZpbmRPcHRpb25zOihOU1VJbnRlZ2VyKW9wdGlv
bnMgbWF4TWF0Y2hDb3VudDooTlNVSW50ZWdlciljb3VudDsKKy0gKHZvaWQpX2NvdW50U3RyaW5n
TWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRpb246KE5TU3RyaW5nICopc3RyaW5nIHdpdGhGaW5k
T3B0aW9uczooTlNVSW50ZWdlcilvcHRpb25zIG1heE1hdGNoQ291bnQ6KE5TVUludGVnZXIpY291
bnQ7CiAtICh2b2lkKV9zZXREcmFnSW1hZ2U6KE5TSW1hZ2UgKilpbWFnZSBhdDooTlNQb2ludClj
bGllbnRQb2ludCBsaW5rRHJhZzooQk9PTClsaW5rRHJhZzsKIAogLSAodm9pZClfc2V0RHJhd2lu
Z0FyZWFTaXplOihOU1NpemUpc2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F3a3BhZ2VfcC5oCmluZGV4IGVlMWZiMGVmMTg0ZDRlZDczOTJlNzY1ZWMyZjk5ZWMzMjE4ODJk
ZjguLjc1MjJkNDFkOGQ5NGM3NWM0Y2I4ZjE5ODc2OTc4ZWI4YzBhMzQyNWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaApAQCAtOTQsNiArOTQsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNjcm9sbGJhcnNGb3JNYWluRnJhbWUo
KSBjb25zdCB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBmbGFzaEJhY2tpbmdTdG9yZVVwZGF0ZXMo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiB1cGRhdGVSZWN0cyk7CisgICAgdmlydHVh
bCB2b2lkIGZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYsIEZp
bmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
Y291bnRTdHJpbmdNYXRjaGVzSW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBG
aW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkgeyB9CiAKICAgICB2aXJ0dWFsIGZs
b2F0IHVzZXJTcGFjZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gMTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCA5YzZlMmE0ZGIyY2Y2YjUzMzQ1MWFjYTkz
YzJjZTk3NzJjNDZiMTc5Li5jYzllOWJhOThhMzU4ZWZmMmE2OTVkMTNiZDU3MWQyZWE1NzY5NDZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTE0NSw2ICsxNDUsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEN1c3RvbVJlcHJlc2VudGF0aW9uWm9vbUZh
Y3Rvcihkb3VibGUpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBmbGFzaEJhY2tpbmdTdG9yZVVw
ZGF0ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiB1cGRhdGVSZWN0cykgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBmaW5kU3RyaW5nSW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBT
dHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBjb3VudFN0cmluZ01hdGNoZXNJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0
IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KSA9IDA7CiAKICAg
ICB2aXJ0dWFsIGZsb2F0IHVzZXJTcGFjZVNjYWxlRmFjdG9yKCkgY29uc3QgPSAwOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMTYwZmUxZGRiMTgz
YzA0MjIzMWM1ODdlNTdlMThlNTg4YWVjM2Q0Ni4uNTczYzI4ZTFiODY3ZTNkMjU5MjJjY2ZiOTZl
MDdiMTc0NDFmNjk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKQEAgLTEwODksNyArMTA4OSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWVtb3J5Q2Fj
aGVDbGllbnRDYWxsc0VuYWJsZWQoYm9vbCBtZW1vcnlDYWNoZUNsaWVudENhbGxzRQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlv
bnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKIHsKLSAgICBwcm9jZXNzKCktPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpbmRTdHJpbmcoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRj
aENvdW50KSwgbV9wYWdlSUQpOworICAgIGlmIChtX21haW5GcmFtZUhhc0N1c3RvbVJlcHJlc2Vu
dGF0aW9uKQorICAgICAgICBtX3BhZ2VDbGllbnQtPmZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2Vu
dGF0aW9uKHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCk7CisgICAgZWxzZQorICAgICAg
ICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpbmRTdHJpbmcoc3RyaW5nLCBv
cHRpb25zLCBtYXhNYXRjaENvdW50KSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6aGlkZUZpbmRVSSgpCkBAIC0xMDk5LDcgKzExMDIsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmhpZGVGaW5kVUkoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y291bnRTdHJpbmdNYXRjaGVzKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRj
aENvdW50KQogewotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q291bnRT
dHJpbmdNYXRjaGVzKHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCksIG1fcGFnZUlEKTsK
KyAgICBpZiAobV9tYWluRnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbikKKyAgICAgICAgbV9w
YWdlQ2xpZW50LT5jb3VudFN0cmluZ01hdGNoZXNJbkN1c3RvbVJlcHJlc2VudGF0aW9uKHN0cmlu
Zywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCk7CisgICAgZWxzZQorICAgICAgICBwcm9jZXNzKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvdW50U3RyaW5nTWF0Y2hlcyhzdHJpbmcsIG9wdGlv
bnMsIG1heE1hdGNoQ291bnQpLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpy
dW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIFBhc3NSZWZQdHI8
U2NyaXB0VmFsdWVDYWxsYmFjaz4gcHJwQ2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggNmViYzcxZTE4YjgxMzJkMDdlNjA5ODFlYWYzOGM5ZmEyYjYz
Njc1Mi4uNjEyNGQxNTMwZDRlNWQyMmZkZGQ5N2Q4ODQxNGRkYTljODEzYTdkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMzQ4LDYgKzM0OCwxMCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNp
Z25lZCBtYXhNYXRjaENvdW50KTsKICAgICB2b2lkIGhpZGVGaW5kVUkoKTsKICAgICB2b2lkIGNv
dW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4
TWF0Y2hDb3VudCk7CisgICAgdm9pZCBkaWRDb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5n
JiwgdWludDMyX3QgbWF0Y2hDb3VudCk7CisgICAgdm9pZCBzZXRGaW5kSW5kaWNhdG9yKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgc2VsZWN0aW9uUmVjdEluV2luZG93Q29vcmRpbmF0ZXMsIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+JiB0ZXh0UmVjdHNJblNlbGVjdGlvblJlY3RD
b29yZGluYXRlcywgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGNvbnRlbnRJbWFnZUhh
bmRsZSwgYm9vbCBmYWRlT3V0KTsKKyAgICB2b2lkIGRpZEZpbmRTdHJpbmcoY29uc3QgU3RyaW5n
JiwgdWludDMyX3QgbWF0Y2hDb3VudCk7CisgICAgdm9pZCBkaWRGYWlsVG9GaW5kU3RyaW5nKGNv
bnN0IFN0cmluZyYpOwogCiAgICAgdm9pZCBnZXRDb250ZW50c0FzU3RyaW5nKFBhc3NSZWZQdHI8
U3RyaW5nQ2FsbGJhY2s+KTsKICAgICB2b2lkIGdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdl
YkZyYW1lUHJveHkqLCBQYXNzUmVmUHRyPERhdGFDYWxsYmFjaz4pOwpAQCAtNTk0LDEyICs1OTgs
NiBAQCBwcml2YXRlOgogICAgIHZvaWQgaW50ZXJwcmV0UXVldWVkS2V5RXZlbnQoY29uc3QgVGV4
dElucHV0U3RhdGUmLCBib29sJiBoYW5kbGVkLCBWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3NDb21t
YW5kPiYpOwogI2VuZGlmCiAgICAgCi0gICAgLy8gRmluZC4KLSAgICB2b2lkIGRpZENvdW50U3Ry
aW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCB1aW50MzJfdCBtYXRjaENvdW50KTsKLSAgICB2b2lk
IHNldEZpbmRJbmRpY2F0b3IoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzZWxlY3Rpb25SZWN0
SW5XaW5kb3dDb29yZGluYXRlcywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4mIHRl
eHRSZWN0c0luU2VsZWN0aW9uUmVjdENvb3JkaW5hdGVzLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZSYgY29udGVudEltYWdlSGFuZGxlLCBib29sIGZhZGVPdXQpOwotICAgIHZvaWQgZGlk
RmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCB1aW50MzJfdCBtYXRjaENvdW50KTsKLSAgICB2b2lk
IGRpZEZhaWxUb0ZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJik7Ci0KICAgICAvLyBQb3B1cCBNZW51
LgogICAgIHZvaWQgc2hvd1BvcHVwTWVudShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0LCB1
aW50NjRfdCB0ZXh0RGlyZWN0aW9uLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMs
IGludDMyX3Qgc2VsZWN0ZWRJbmRleCwgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJik7CiAg
ICAgdm9pZCBoaWRlUG9wdXBNZW51KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88747</attachid>
            <date>2011-04-07 18:13:04 -0700</date>
            <delta_ts>2011-04-08 09:34:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57765-20110407181301.patch</filename>
            <type>text/plain</type>
            <size>17806</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMyMjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiODc1NGI4YzgzMTJhZTI0
NmY2NjlmMTc1MmQ5NzdlYzhjZDQxZTQ2Li43N2E0Y2YzNGIxNjRhMzJhYTM3NmRmNmIzNDI5OGZi
ODJjOWQ4NjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDQtMDQgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV0syOiBQREY6IEZpbmQgaW4gcGFnZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc3NjUKKworICAgICAgICBTdXBw
b3J0IHNlYXJjaGluZyB0ZXh0IHdpdGhpbiBQREYgZG9jdW1lbnRzLiAgRmluZCByZXF1ZXN0cyBt
dXN0IGJlIHJvdXRlZCBmcm9tIHRoZQorICAgICAgICBXZWJQYWdlUHJveHksIHRocm91Z2ggdGhl
IFBhZ2VDbGllbnQsIGFuZCB0byB0aGUgV0tWaWV3LCB3aGVyZSB0aGV5IGNhbiBiZSBwYXNzZWQg
dG8gCisgICAgICAgIHRoZSBQREZWaWV3Q29udHJvbGxlci4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvbWFjL1BERlZpZXdDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9t
YWMvUERGVmlld0NvbnRyb2xsZXIubW06CisgICAgICAgIChfUERGU2VsZWN0aW9uc0FyZUVxdWFs
KTogQ29waWVkIGZyb20gV2ViUERGVmlldy4KKyAgICAgICAgKC1bV0tQREZWaWV3IF9uZXh0TWF0
Y2hGb3I6ZGlyZWN0aW9uOmNhc2VTZW5zaXRpdmU6d3JhcDpmcm9tU2VsZWN0aW9uOnN0YXJ0SW5T
ZWxlY3Rpb246XSk6IENvcGllZCBmcm9tIFdlYlBERlZpZXcuCisgICAgICAgICgtW1dLUERGVmll
dyBfY291bnRNYXRjaGVzOmNhc2VTZW5zaXRpdmU6XSk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpQREZWaWV3Q29udHJvbGxlcjo6ZmluZFN0cmluZyk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpQREZWaWV3Q29udHJvbGxlcjo6Y291bnRTdHJpbmdNYXRjaGVzKTogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9Q
YWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJ
bXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZmluZFN0cmluZ0luQ3Vz
dG9tUmVwcmVzZW50YXRpb24pOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmNvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRpb24pOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IF9maW5kU3RyaW5n
SW5DdXN0b21SZXByZXNlbnRhdGlvbjp3aXRoRmluZE9wdGlvbnM6bWF4TWF0Y2hDb3VudDpdKTog
QWRkZWQuCisgICAgICAgICgtW1dLVmlldyBfY291bnRTdHJpbmdNYXRjaGVzSW5DdXN0b21SZXBy
ZXNlbnRhdGlvbjp3aXRoRmluZE9wdGlvbnM6bWF4TWF0Y2hDb3VudDpdKTogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOiBNb3ZlZCBhIG51bWJlciBvZiBmaW5kLXJl
bGF0ZWQgZnVuY3Rpb25zIGZyb20gcHJpdmF0ZTogdG8gcHVibGljOiBzbworICAgICAgICAgICAg
dGhleSBjb3VsZCBiZSBjYWxsZWQgZnJvbSBQREZWaWV3Q29udHJvbGxlci4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpmaW5kU3RyaW5nKTogQWRkZWQuIAorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNv
dW50U3RyaW5nTWF0Y2hlcyk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViVmll
dy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmZpbmRTdHJpbmdJbkN1c3RvbVJlcHJl
c2VudGF0aW9uKTogQWRkZWQgc3R1Yi4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6Y291bnRT
dHJpbmdNYXRjaGVzSW5DdXN0b21SZXByZXNlbnRhdGlvbik6IERpdHRvLgorICAgICAgICAqIFVJ
UHJvY2Vzcy93aW4vV2ViVmlldy5oOgorCiAyMDExLTAzLTMwICBKZXIgTm9ibGUgIDxqZXIubm9i
bGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUERGVmlld0NvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BERlZpZXdDb250cm9sbGVy
LmgKaW5kZXggY2MzYjI5OWRlYTgwNzkxZmQyYjYxYjViYTVlOTQ4NTdhODllMWMzOC4uOTk0MjNk
MmQyYmRjN2VkYjM2NmZhMzJiY2I5ODY4M2Q3ZDc5NmIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUERGVmlld0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QREZWaWV3Q29udHJvbGxlci5oCkBAIC0yNiw2ICsy
Niw3IEBACiAjaWZuZGVmIFBERlZpZXdDb250cm9sbGVyX2gKICNkZWZpbmUgUERGVmlld0NvbnRy
b2xsZXJfaAogCisjaW5jbHVkZSAiV2ViRmluZE9wdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CkBAIC02Niw2ICs2Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNhdmVQREZUb0Rv
d25sb2Fkc0ZvbGRlcigpOwogICAgIHZvaWQgbGlua0NsaWNrZWQoY29uc3QgU3RyaW5nJiB1cmwp
OwogCisgICAgdmlydHVhbCB2b2lkIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlv
bnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOworICAgIHZpcnR1YWwgdm9pZCBjb3VudFN0cmlu
Z01hdGNoZXMoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291
bnQpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFBERlZpZXdDb250cm9sbGVyKFdLVmlldyAq
d2tWaWV3KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMv
UERGVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9Q
REZWaWV3Q29udHJvbGxlci5tbQppbmRleCAxMjg3ZDE4ZWQ4N2EwYzY2NzQ4YzI5ZThlNWNiODQx
ZjkzOGZiZTY1Li42ZWNkN2M3YjFjZjZkYWNjYWZjYTRmYmQ0MjZmMjQ5MmExYWU5NTdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QREZWaWV3Q29udHJvbGxl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QREZWaWV3Q29udHJv
bGxlci5tbQpAQCAtNzYsNiArNzYsMjkgQEAgc3RhdGljIHZvaWQgX2FwcGxpY2F0aW9uSW5mb0Zv
ck1JTUVUeXBlKE5TU3RyaW5nICp0eXBlLCBOU1N0cmluZyAqKm5hbWUsIE5TSW1hZ2UKICAgICAq
bmFtZSA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZGlzcGxheU5hbWVBdFBhdGg6
YXBwUGF0aF07CiB9CiAKKy8vIEZJWE1FIDQxODI4NzY6IFdlIGNhbiBlbGltaW5hdGUgdGhpcyBm
dW5jdGlvbiBpbiBmYXZvciBpZiAtaXNFcXVhbDogaWYgW1BERlNlbGVjdGlvbiBpc0VxdWFsOl0g
aXMgb3ZlcnJpZGRlbgorLy8gdG8gY29tcGFyZSBjb250ZW50cy4KK3N0YXRpYyBCT09MIF9QREZT
ZWxlY3Rpb25zQXJlRXF1YWwoUERGU2VsZWN0aW9uICpzZWxlY3Rpb25BLCBQREZTZWxlY3Rpb24g
KnNlbGVjdGlvbkIpCit7CisgICAgTlNBcnJheSAqYVBhZ2VzID0gW3NlbGVjdGlvbkEgcGFnZXNd
OworICAgIE5TQXJyYXkgKmJQYWdlcyA9IFtzZWxlY3Rpb25CIHBhZ2VzXTsKKworICAgIGlmICgh
W2FQYWdlcyBpc0VxdWFsOmJQYWdlc10pCisgICAgICAgIHJldHVybiBOTzsKKworICAgIGludCBj
b3VudCA9IFthUGFnZXMgY291bnRdOworICAgIGludCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBj
b3VudDsgKytpKSB7CisgICAgICAgIE5TUmVjdCBhQm91bmRzID0gW3NlbGVjdGlvbkEgYm91bmRz
Rm9yUGFnZTpbYVBhZ2VzIG9iamVjdEF0SW5kZXg6aV1dOworICAgICAgICBOU1JlY3QgYkJvdW5k
cyA9IFtzZWxlY3Rpb25CIGJvdW5kc0ZvclBhZ2U6W2JQYWdlcyBvYmplY3RBdEluZGV4OmldXTsK
KyAgICAgICAgaWYgKCFOU0VxdWFsUmVjdHMoYUJvdW5kcywgYkJvdW5kcykpIHsKKyAgICAgICAg
ICAgIHJldHVybiBOTzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBZRVM7Cit9CisK
IEBpbnRlcmZhY2UgV0tQREZWaWV3IDogTlNWaWV3CiB7CiAgICAgUERGVmlld0NvbnRyb2xsZXIq
IF9wZGZWaWV3Q29udHJvbGxlcjsKQEAgLTkyLDcgKzExNSw3IEBAIHN0YXRpYyB2b2lkIF9hcHBs
aWNhdGlvbkluZm9Gb3JNSU1FVHlwZShOU1N0cmluZyAqdHlwZSwgTlNTdHJpbmcgKipuYW1lLCBO
U0ltYWdlCiAtICh2b2lkKXNldERvY3VtZW50OihQREZEb2N1bWVudCAqKXBkZkRvY3VtZW50Owog
CiAtICh2b2lkKV9hcHBseVBERlByZWZlcmVuY2VzOwotCistIChQREZTZWxlY3Rpb24gKilfbmV4
dE1hdGNoRm9yOihOU1N0cmluZyAqKXN0cmluZyBkaXJlY3Rpb246KEJPT0wpZm9yd2FyZCBjYXNl
U2Vuc2l0aXZlOihCT09MKWNhc2VGbGFnIHdyYXA6KEJPT0wpd3JhcEZsYWcgZnJvbVNlbGVjdGlv
bjooUERGU2VsZWN0aW9uICopaW5pdGlhbFNlbGVjdGlvbiBzdGFydEluU2VsZWN0aW9uOihCT09M
KXN0YXJ0SW5TZWxlY3Rpb247CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1BERlZpZXcKQEAg
LTE4OCw2ICsyMTEsNjAgQEAgc3RhdGljIHZvaWQgX2FwcGxpY2F0aW9uSW5mb0Zvck1JTUVUeXBl
KE5TU3RyaW5nICp0eXBlLCBOU1N0cmluZyAqKm5hbWUsIE5TSW1hZ2UKICAgICBfcGRmVmlld0Nv
bnRyb2xsZXItPm9wZW5QREZJbkZpbmRlcigpOwogfQogCistIChQREZTZWxlY3Rpb24gKilfbmV4
dE1hdGNoRm9yOihOU1N0cmluZyAqKXN0cmluZyBkaXJlY3Rpb246KEJPT0wpZm9yd2FyZCBjYXNl
U2Vuc2l0aXZlOihCT09MKWNhc2VGbGFnIHdyYXA6KEJPT0wpd3JhcEZsYWcgZnJvbVNlbGVjdGlv
bjooUERGU2VsZWN0aW9uICopaW5pdGlhbFNlbGVjdGlvbiBzdGFydEluU2VsZWN0aW9uOihCT09M
KXN0YXJ0SW5TZWxlY3Rpb24KK3sKKyAgICBpZiAoIVtzdHJpbmcgbGVuZ3RoXSkKKyAgICAgICAg
cmV0dXJuIG5pbDsKKworICAgIGludCBvcHRpb25zID0gMDsKKyAgICBpZiAoIWZvcndhcmQpCisg
ICAgICAgIG9wdGlvbnMgfD0gTlNCYWNrd2FyZHNTZWFyY2g7CisKKyAgICBpZiAoIWNhc2VGbGFn
KQorICAgICAgICBvcHRpb25zIHw9IE5TQ2FzZUluc2Vuc2l0aXZlU2VhcmNoOworCisgICAgUERG
RG9jdW1lbnQgKmRvY3VtZW50ID0gW19wZGZWaWV3IGRvY3VtZW50XTsKKworICAgIFBERlNlbGVj
dGlvbiAqc2VsZWN0aW9uRm9ySW5pdGlhbFNlYXJjaCA9IFtpbml0aWFsU2VsZWN0aW9uIGNvcHld
OworICAgIGlmIChzdGFydEluU2VsZWN0aW9uKSB7CisgICAgICAgIC8vIEluaXRpYWxseSB3ZSB3
YW50IHRvIGluY2x1ZGUgdGhlIHNlbGVjdGVkIHRleHQgaW4gdGhlIHNlYXJjaC4gUERGRG9jdW1l
bnQncyBBUEkgYWx3YXlzIHNlYXJjaGVzIGZyb20ganVzdAorICAgICAgICAvLyBwYXN0IHRoZSBw
YXNzZWQtaW4gc2VsZWN0aW9uLCBzbyB3ZSBuZWVkIHRvIHBhc3MgYSBzZWxlY3Rpb24gdGhhdCdz
IG1vZGlmaWVkIGFwcHJvcHJpYXRlbHkuCisgICAgICAgIC8vIEZJWE1FIDQxODI4NjM6IElkZWFs
bHkgd2UnZCB1c2UgYSB6ZXJvLWxlbmd0aCBzZWxlY3Rpb24gYXQgdGhlIGVkZ2Ugb2YgdGhlIGN1
cnJlbnQgc2VsZWN0aW9uLCBidXQgemVyby1sZW5ndGgKKyAgICAgICAgLy8gc2VsZWN0aW9ucyBk
b24ndCB3b3JrIGluIFBERkRvY3VtZW50LiBTbyBpbnN0ZWFkIHdlIG1ha2UgYSBvbmUtbGVuZ3Ro
IHNlbGVjdGlvbiBqdXN0IGJlZm9yZSBvciBhZnRlciB0aGUKKyAgICAgICAgLy8gY3VycmVudCBz
ZWxlY3Rpb24sIHdoaWNoIHdvcmtzIGZvciBvdXIgcHVycG9zZXMgZXZlbiB3aGVuIHRoZSBjdXJy
ZW50IHNlbGVjdGlvbiBpcyBhdCBhbiBlZGdlIG9mIHRoZQorICAgICAgICAvLyBkb2N1bWVudC4K
KyAgICAgICAgaW50IGluaXRpYWxTZWxlY3Rpb25MZW5ndGggPSBbW2luaXRpYWxTZWxlY3Rpb24g
c3RyaW5nXSBsZW5ndGhdOworICAgICAgICBpZiAoZm9yd2FyZCkgeworICAgICAgICAgICAgW3Nl
bGVjdGlvbkZvckluaXRpYWxTZWFyY2ggZXh0ZW5kU2VsZWN0aW9uQXRTdGFydDoxXTsKKyAgICAg
ICAgICAgIFtzZWxlY3Rpb25Gb3JJbml0aWFsU2VhcmNoIGV4dGVuZFNlbGVjdGlvbkF0RW5kOi1p
bml0aWFsU2VsZWN0aW9uTGVuZ3RoXTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFtz
ZWxlY3Rpb25Gb3JJbml0aWFsU2VhcmNoIGV4dGVuZFNlbGVjdGlvbkF0RW5kOjFdOworICAgICAg
ICAgICAgW3NlbGVjdGlvbkZvckluaXRpYWxTZWFyY2ggZXh0ZW5kU2VsZWN0aW9uQXRTdGFydDot
aW5pdGlhbFNlbGVjdGlvbkxlbmd0aF07CisgICAgICAgIH0KKyAgICB9CisgICAgUERGU2VsZWN0
aW9uICpmb3VuZFNlbGVjdGlvbiA9IFtkb2N1bWVudCBmaW5kU3RyaW5nOnN0cmluZyBmcm9tU2Vs
ZWN0aW9uOnNlbGVjdGlvbkZvckluaXRpYWxTZWFyY2ggd2l0aE9wdGlvbnM6b3B0aW9uc107Cisg
ICAgW3NlbGVjdGlvbkZvckluaXRpYWxTZWFyY2ggcmVsZWFzZV07CisKKyAgICAvLyBJZiB3ZSBm
aXJzdCBzZWFyY2hlZCBpbiB0aGUgc2VsZWN0aW9uLCBhbmQgd2UgZm91bmQgdGhlIHNlbGVjdGlv
biwgc2VhcmNoIGFnYWluIGZyb20ganVzdCBwYXN0IHRoZSBzZWxlY3Rpb24KKyAgICBpZiAoc3Rh
cnRJblNlbGVjdGlvbiAmJiBfUERGU2VsZWN0aW9uc0FyZUVxdWFsKGZvdW5kU2VsZWN0aW9uLCBp
bml0aWFsU2VsZWN0aW9uKSkKKyAgICAgICAgZm91bmRTZWxlY3Rpb24gPSBbZG9jdW1lbnQgZmlu
ZFN0cmluZzpzdHJpbmcgZnJvbVNlbGVjdGlvbjppbml0aWFsU2VsZWN0aW9uIHdpdGhPcHRpb25z
Om9wdGlvbnNdOworCisgICAgaWYgKCFmb3VuZFNlbGVjdGlvbiAmJiB3cmFwRmxhZykKKyAgICAg
ICAgZm91bmRTZWxlY3Rpb24gPSBbZG9jdW1lbnQgZmluZFN0cmluZzpzdHJpbmcgZnJvbVNlbGVj
dGlvbjpuaWwgd2l0aE9wdGlvbnM6b3B0aW9uc107CisKKyAgICByZXR1cm4gZm91bmRTZWxlY3Rp
b247Cit9CisKKy0gKE5TVUludGVnZXIpX2NvdW50TWF0Y2hlczooTlNTdHJpbmcqKXN0cmluZyBj
YXNlU2Vuc2l0aXZlOihCT09MKWNhc2VGbGFnCit7CisgICAgaWYgKCFbc3RyaW5nIGxlbmd0aF0p
CisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBpbnQgb3B0aW9ucyA9IGNhc2VGbGFnID8gMCA6
IE5TQ2FzZUluc2Vuc2l0aXZlU2VhcmNoOworCisgICAgcmV0dXJuIFtbW19wZGZWaWV3IGRvY3Vt
ZW50XSBmaW5kU3RyaW5nOnN0cmluZyB3aXRoT3B0aW9uczpvcHRpb25zXSBjb3VudF07Cit9CisK
IC8vIE1BUks6IE5TVmlldyBvdmVycmlkZXMKIAogLSAodm9pZCl2aWV3RGlkTW92ZVRvV2luZG93
CkBAIC01MzEsNCArNjA4LDMxIEBAIHZvaWQgUERGVmlld0NvbnRyb2xsZXI6OmxpbmtDbGlja2Vk
KGNvbnN0IFN0cmluZyYgdXJsKQogICAgIHBhZ2UoKS0+bGlua0NsaWNrZWQodXJsLCBldmVudCk7
CiB9CiAKK3ZvaWQgUERGVmlld0NvbnRyb2xsZXI6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBz
dHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCit7Cisg
ICAgQk9PTCBmb3J3YXJkID0gIShvcHRpb25zICYgRmluZE9wdGlvbnNCYWNrd2FyZHMpOworICAg
IEJPT0wgY2FzZUZsYWcgPSAhKG9wdGlvbnMgJiBGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSk7
CisgICAgQk9PTCB3cmFwRmxhZyA9IG9wdGlvbnMgJiBGaW5kT3B0aW9uc1dyYXBBcm91bmQ7CisK
KyAgICBQREZTZWxlY3Rpb24gKnNlbGVjdGlvbiA9IFttX3drUERGVmlldy5nZXQoKSBfbmV4dE1h
dGNoRm9yOnN0cmluZyBkaXJlY3Rpb246Zm9yd2FyZCBjYXNlU2Vuc2l0aXZlOmNhc2VGbGFnIHdy
YXA6d3JhcEZsYWcgZnJvbVNlbGVjdGlvbjpbbV9wZGZWaWV3IGN1cnJlbnRTZWxlY3Rpb25dIHN0
YXJ0SW5TZWxlY3Rpb246Tk9dOworICAgIE5TVUludGVnZXIgbWF0Y2hDb3VudCA9IFttX3drUERG
Vmlldy5nZXQoKSBfY291bnRNYXRjaGVzOnN0cmluZyBjYXNlU2Vuc2l0aXZlOmNhc2VGbGFnXTsK
KworICAgIGlmICghc2VsZWN0aW9uKSB7CisgICAgICAgIHBhZ2UoKS0+ZGlkRmFpbFRvRmluZFN0
cmluZyhzdHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgW21fcGRmVmlldyBz
ZXRDdXJyZW50U2VsZWN0aW9uOnNlbGVjdGlvbl07CisgICAgW21fcGRmVmlldyBzY3JvbGxTZWxl
Y3Rpb25Ub1Zpc2libGU6bmlsXTsKKyAgICBwYWdlKCktPmRpZEZpbmRTdHJpbmcoc3RyaW5nLCBt
YXRjaENvdW50KTsKK30KKwordm9pZCBQREZWaWV3Q29udHJvbGxlcjo6Y291bnRTdHJpbmdNYXRj
aGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBt
YXhNYXRjaENvdW50KQoreworICAgIEJPT0wgY2FzZUZsYWcgPSAhKG9wdGlvbnMgJiBGaW5kT3B0
aW9uc0Nhc2VJbnNlbnNpdGl2ZSk7CisKKyAgICBOU1VJbnRlZ2VyIG1hdGNoQ291bnQgPSBbbV93
a1BERlZpZXcuZ2V0KCkgX2NvdW50TWF0Y2hlczpzdHJpbmcgY2FzZVNlbnNpdGl2ZTpjYXNlRmxh
Z107CisgICAgcGFnZSgpLT5kaWRDb3VudFN0cmluZ01hdGNoZXMoc3RyaW5nLCBtYXRjaENvdW50
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAppbmRleCBkMWM2OGJkOThlZjZhOGU2YjYz
MjMyNmJmZmNmZmIzNmQ1MzViZDJhLi4xZTFjNDg4YTBkOWRhY2ZlMTU5Mzg5ZjdiOWNlOTYyMjAy
ZTIwNWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdl
Q2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VD
bGllbnRJbXBsLmgKQEAgLTEwMyw2ICsxMDMsOCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBk
b3VibGUgY3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKCk7CiAgICAgdmlydHVhbCB2b2lk
IHNldEN1c3RvbVJlcHJlc2VudGF0aW9uWm9vbUZhY3Rvcihkb3VibGUpOworICAgIHZpcnR1YWwg
dm9pZCBmaW5kU3RyaW5nSW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBGaW5k
T3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7CisgICAgdmlydHVhbCB2b2lkIGNvdW50
U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiwgRmluZE9w
dGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOwogCiAgICAgdmlydHVhbCB2b2lkIGZsYXNo
QmFja2luZ1N0b3JlVXBkYXRlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHVwZGF0
ZVJlY3RzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMv
UGFnZUNsaWVudEltcGwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdl
Q2xpZW50SW1wbC5tbQppbmRleCBlM2NjNTgzNzAwNWEyMWUwYWZkNDcwYjI2ZDcyMTFkZWEwYTY5
ZGU4Li4wYmU0NjgzNGU2NTY0YTM5ZjI2N2IyNGFiMDg2MGU0NGMwMDg0MzFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQpAQCAt
NDE0LDYgKzQxNCwxNiBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRDdXN0b21SZXByZXNlbnRh
dGlvblpvb21GYWN0b3IoZG91YmxlIHpvb21GYWN0b3IpCiAgICAgW21fd2tWaWV3IF9zZXRDdXN0
b21SZXByZXNlbnRhdGlvblpvb21GYWN0b3I6em9vbUZhY3Rvcl07CiB9CiAKK3ZvaWQgUGFnZUNs
aWVudEltcGw6OmZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQorewor
ICAgIFttX3drVmlldyBfZmluZFN0cmluZ0luQ3VzdG9tUmVwcmVzZW50YXRpb246c3RyaW5nIHdp
dGhGaW5kT3B0aW9uczpvcHRpb25zIG1heE1hdGNoQ291bnQ6bWF4TWF0Y2hDb3VudF07Cit9CisK
K3ZvaWQgUGFnZUNsaWVudEltcGw6OmNvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50
YXRpb24oY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVk
IG1heE1hdGNoQ291bnQpCit7CisgICAgW21fd2tWaWV3IF9jb3VudFN0cmluZ01hdGNoZXNJbkN1
c3RvbVJlcHJlc2VudGF0aW9uOnN0cmluZyB3aXRoRmluZE9wdGlvbnM6b3B0aW9ucyBtYXhNYXRj
aENvdW50Om1heE1hdGNoQ291bnRdOworfQorCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpmbGFzaEJh
Y2tpbmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVjdG9yPEludFJlY3Q+JikKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMv
V0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmlu
ZGV4IDdjMTU0NDk1MTg5YTYyYTc0MjgyODRkOThiYzJmNTViYjI5ZTViMTAuLjhkYWVhNGQ2YjNh
MzVlYjM2ZjI2OTBmN2MxMWQ3MDJkY2QzYTJhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTIxNTYsNiArMjE1NiwyMiBAQCBzdGF0aWMgdm9pZCBk
cmF3UGFnZUJhY2tncm91bmQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIFdlYlBhZ2VQcm94eSogcGFn
ZSwgY29uc3QgSQogICAgIF9kYXRhLT5fcGRmVmlld0NvbnRyb2xsZXItPnNldFpvb21GYWN0b3Io
em9vbUZhY3Rvcik7CiB9CiAKKy0gKHZvaWQpX2ZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0
aW9uOihOU1N0cmluZyAqKXN0cmluZyB3aXRoRmluZE9wdGlvbnM6KE5TVUludGVnZXIpb3B0aW9u
cyBtYXhNYXRjaENvdW50OihOU1VJbnRlZ2VyKWNvdW50Cit7CisgICAgaWYgKCFfZGF0YS0+X3Bk
ZlZpZXdDb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBfZGF0YS0+X3BkZlZpZXdD
b250cm9sbGVyLT5maW5kU3RyaW5nKHN0cmluZywgc3RhdGljX2Nhc3Q8V2ViS2l0OjpGaW5kT3B0
aW9ucz4ob3B0aW9ucyksIGNvdW50KTsKK30KKworLSAodm9pZClfY291bnRTdHJpbmdNYXRjaGVz
SW5DdXN0b21SZXByZXNlbnRhdGlvbjooTlNTdHJpbmcgKilzdHJpbmcgd2l0aEZpbmRPcHRpb25z
OihOU1VJbnRlZ2VyKW9wdGlvbnMgbWF4TWF0Y2hDb3VudDooTlNVSW50ZWdlciljb3VudAorewor
ICAgIGlmICghX2RhdGEtPl9wZGZWaWV3Q29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgX2RhdGEtPl9wZGZWaWV3Q29udHJvbGxlci0+Y291bnRTdHJpbmdNYXRjaGVzKHN0cmluZywg
c3RhdGljX2Nhc3Q8V2ViS2l0OjpGaW5kT3B0aW9ucz4ob3B0aW9ucyksIGNvdW50KTsKK30KKwog
LSAodm9pZClfc2V0RHJhZ0ltYWdlOihOU0ltYWdlICopaW1hZ2UgYXQ6KE5TUG9pbnQpY2xpZW50
UG9pbnQgbGlua0RyYWc6KEJPT0wpbGlua0RyYWcKIHsKICAgICAvLyBXZSBuZWVkIHRvIHByZXZl
bnQgcmUtZW50ZXJpbmcgdGhpcyBjYWxsIHRvIGF2b2lkIGNyYXNoaW5nIGluIEFwcEtpdC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFs
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCmlu
ZGV4IDZmMTFlYzJlYzA1YmQ2ZGQ4NmNjZWI4ZmE4MDZlYjU4Y2FhOTQxYWQuLmUzN2Y3Y2ZjNGNk
YTUzMGNkZDE4ZmMxMTRlZjgwNWJhNjRhYjZiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaApAQCAtNzEsNiArNzEsOCBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIC0gKHZvaWQpX2RpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tUmVw
cmVzZW50YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KGNvbnN0IFN0cmluZyYpc3VnZ2VzdGVk
RmlsZW5hbWUgZGF0YVJlZmVyZW5jZTooY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYpZGF0
YVJlZmVyZW5jZTsKIC0gKGRvdWJsZSlfY3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yOwog
LSAodm9pZClfc2V0Q3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yOihkb3VibGUpem9vbUZh
Y3RvcjsKKy0gKHZvaWQpX2ZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0aW9uOihOU1N0cmlu
ZyAqKXN0cmluZyB3aXRoRmluZE9wdGlvbnM6KE5TVUludGVnZXIpb3B0aW9ucyBtYXhNYXRjaENv
dW50OihOU1VJbnRlZ2VyKWNvdW50OworLSAodm9pZClfY291bnRTdHJpbmdNYXRjaGVzSW5DdXN0
b21SZXByZXNlbnRhdGlvbjooTlNTdHJpbmcgKilzdHJpbmcgd2l0aEZpbmRPcHRpb25zOihOU1VJ
bnRlZ2VyKW9wdGlvbnMgbWF4TWF0Y2hDb3VudDooTlNVSW50ZWdlciljb3VudDsKIC0gKHZvaWQp
X3NldERyYWdJbWFnZTooTlNJbWFnZSAqKWltYWdlIGF0OihOU1BvaW50KWNsaWVudFBvaW50IGxp
bmtEcmFnOihCT09MKWxpbmtEcmFnOwogCiAtICh2b2lkKV9zZXREcmF3aW5nQXJlYVNpemU6KE5T
U2l6ZSlzaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggNTA4OGNm
OTkwYjQ2ZDUyZmVhOWJmYTY4ZGUwZDk4NzlmZmI5YWU2Ny4uNjAxZDVlMmViZDQzYzJlNmJlMTQ1
YTI0MmMyNjExMDA5YjhmNzZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
CkBAIC0xNTEsNiArMTUxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDdXN0b21S
ZXByZXNlbnRhdGlvblpvb21GYWN0b3IoZG91YmxlKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
Zmxhc2hCYWNraW5nU3RvcmVVcGRhdGVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYg
dXBkYXRlUmVjdHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmluZFN0cmluZ0luQ3VzdG9tUmVw
cmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNo
Q291bnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY291bnRTdHJpbmdNYXRjaGVzSW5DdXN0b21S
ZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0
Y2hDb3VudCkgPSAwOwogCiAgICAgdmlydHVhbCBmbG9hdCB1c2VyU3BhY2VTY2FsZUZhY3Rvcigp
IGNvbnN0ID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IDQ5YzA2NzI1NjNiMGZlYzI4OGMwMDY2N2I2MzhhMjQzYjNmYjFmZWQuLjIzNTNjYzFk
YmU0NzNlMDYwMWZkZjRkNjEyMjU4ZjgzNWQwMWZjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMTExLDcgKzExMTEsMTAgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnNldE1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkKGJvb2wgbWVtb3J5Q2FjaGVD
bGllbnRDYWxsc0UKIAogdm9pZCBXZWJQYWdlUHJveHk6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5n
JiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCiB7
Ci0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaW5kU3RyaW5nKHN0cmlu
Zywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCksIG1fcGFnZUlEKTsKKyAgICBpZiAobV9tYWluRnJh
bWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbikKKyAgICAgICAgbV9wYWdlQ2xpZW50LT5maW5kU3Ry
aW5nSW5DdXN0b21SZXByZXNlbnRhdGlvbihzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQp
OworICAgIGVsc2UKKyAgICAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpG
aW5kU3RyaW5nKHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCksIG1fcGFnZUlEKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmhpZGVGaW5kVUkoKQpAQCAtMTEyMSw3ICsxMTI0LDEwIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpoaWRlRmluZFVJKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmNv
dW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9u
cywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKIHsKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkNvdW50U3RyaW5nTWF0Y2hlcyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNo
Q291bnQpLCBtX3BhZ2VJRCk7CisgICAgaWYgKG1fbWFpbkZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50
YXRpb24pCisgICAgICAgIG1fcGFnZUNsaWVudC0+Y291bnRTdHJpbmdNYXRjaGVzSW5DdXN0b21S
ZXByZXNlbnRhdGlvbihzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpOworICAgIGVsc2UK
KyAgICAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb3VudFN0cmluZ01h
dGNoZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSwgbV9wYWdlSUQpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYg
c2NyaXB0LCBQYXNzUmVmUHRyPFNjcmlwdFZhbHVlQ2FsbGJhY2s+IHBycENhbGxiYWNrKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGNiYjE1NzNmMThmMmI2ZmVj
ZGI5M2EzMWM3Y2RkMjIwNDJkNTM4ZTIuLmFjZTBiMGFlNmEwZjJhNTY1ZDMzZTBlNzQzMWE1NTgz
NjIzZWI2MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTM1
NSw2ICszNTUsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZmluZFN0cmluZyhjb25zdCBTdHJpbmcm
LCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7CiAgICAgdm9pZCBoaWRlRmlu
ZFVJKCk7CiAgICAgdm9pZCBjb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgRmluZE9w
dGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOworICAgIHZvaWQgZGlkQ291bnRTdHJpbmdN
YXRjaGVzKGNvbnN0IFN0cmluZyYsIHVpbnQzMl90IG1hdGNoQ291bnQpOworICAgIHZvaWQgc2V0
RmluZEluZGljYXRvcihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNlbGVjdGlvblJlY3RJbldp
bmRvd0Nvb3JkaW5hdGVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYgdGV4dFJl
Y3RzSW5TZWxlY3Rpb25SZWN0Q29vcmRpbmF0ZXMsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlJiBjb250ZW50SW1hZ2VIYW5kbGUsIGJvb2wgZmFkZU91dCk7CisgICAgdm9pZCBkaWRGaW5k
U3RyaW5nKGNvbnN0IFN0cmluZyYsIHVpbnQzMl90IG1hdGNoQ291bnQpOworICAgIHZvaWQgZGlk
RmFpbFRvRmluZFN0cmluZyhjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgZ2V0Q29udGVudHNB
c1N0cmluZyhQYXNzUmVmUHRyPFN0cmluZ0NhbGxiYWNrPik7CiAgICAgdm9pZCBnZXRNYWluUmVz
b3VyY2VEYXRhT2ZGcmFtZShXZWJGcmFtZVByb3h5KiwgUGFzc1JlZlB0cjxEYXRhQ2FsbGJhY2s+
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCmluZGV4IDRhMmVjNWYy
Yjg3MGFlNmRjNjE4M2VjMmYzYTFmNWEwYjFmYmVmNjMuLjIwNjRiN2MyMWFjNDA0YTU0YWExYjg2
YTkxNGExYWMzYzg2ZDA2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93
aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3
LmNwcApAQCAtMTQ0MSw2ICsxNDQxLDE0IEBAIHZvaWQgV2ViVmlldzo6ZGlkQ2hhbmdlU2Nyb2xs
YmFyc0Zvck1haW5GcmFtZSgpIGNvbnN0CiB7CiB9CiAKK3ZvaWQgV2ViVmlldzo6ZmluZFN0cmlu
Z0luQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2ln
bmVkKQoreworfQorCit2b2lkIFdlYlZpZXc6OmNvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVw
cmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkKQoreworfQor
CiB2b2lkIFdlYlZpZXc6OnNldElzSW5XaW5kb3coYm9vbCBpc0luV2luZG93KQogewogICAgIG1f
aXNJbldpbmRvdyA9IGlzSW5XaW5kb3c7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3Mvd2luL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmll
dy5oCmluZGV4IDRiMGFjOTE1ODc4MjI0ZDdlNjRjODZmZDMwNWEzMDhlMmE5YzM5ZTUuLmM3NDE5
ZjM3MmMzN2M5Y2UzZjg3ZjM2NzIyZmJmMzRjYTA5Yjk0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy93aW4vV2ViVmlldy5oCkBAIC0xODYsNiArMTg2LDkgQEAgcHJpdmF0ZToKICAgICBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uIGtleVN0YXRlVG9EcmFnT3BlcmF0aW9uKERXT1JEIGdyZktleVN0
YXRlKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsYmFyc0Zvck1haW5G
cmFtZSgpIGNvbnN0OwogCisgICAgdmlydHVhbCB2b2lkIGZpbmRTdHJpbmdJbkN1c3RvbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENv
dW50KQorICAgIHZpcnR1YWwgdm9pZCBjb3VudFN0cmluZ01hdGNoZXNJbkN1c3RvbVJlcHJlc2Vu
dGF0aW9uKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50
KQorCiAgICAgdmlydHVhbCBIV05EIG5hdGl2ZVdpbmRvdygpOwogCiAgICAgLy8gV2ViQ29yZTo6
V2luZG93TWVzc2FnZUxpc3RlbmVyCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88829</attachid>
            <date>2011-04-08 09:34:35 -0700</date>
            <delta_ts>2011-04-08 11:42:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57765-20110408093436.patch</filename>
            <type>text/plain</type>
            <size>18533</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMyMjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiODc1NGI4YzgzMTJhZTI0
NmY2NjlmMTc1MmQ5NzdlYzhjZDQxZTQ2Li43N2E0Y2YzNGIxNjRhMzJhYTM3NmRmNmIzNDI5OGZi
ODJjOWQ4NjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDQtMDQgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV0syOiBQREY6IEZpbmQgaW4gcGFnZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc3NjUKKworICAgICAgICBTdXBw
b3J0IHNlYXJjaGluZyB0ZXh0IHdpdGhpbiBQREYgZG9jdW1lbnRzLiAgRmluZCByZXF1ZXN0cyBt
dXN0IGJlIHJvdXRlZCBmcm9tIHRoZQorICAgICAgICBXZWJQYWdlUHJveHksIHRocm91Z2ggdGhl
IFBhZ2VDbGllbnQsIGFuZCB0byB0aGUgV0tWaWV3LCB3aGVyZSB0aGV5IGNhbiBiZSBwYXNzZWQg
dG8gCisgICAgICAgIHRoZSBQREZWaWV3Q29udHJvbGxlci4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvbWFjL1BERlZpZXdDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9t
YWMvUERGVmlld0NvbnRyb2xsZXIubW06CisgICAgICAgIChfUERGU2VsZWN0aW9uc0FyZUVxdWFs
KTogQ29waWVkIGZyb20gV2ViUERGVmlldy4KKyAgICAgICAgKC1bV0tQREZWaWV3IF9uZXh0TWF0
Y2hGb3I6ZGlyZWN0aW9uOmNhc2VTZW5zaXRpdmU6d3JhcDpmcm9tU2VsZWN0aW9uOnN0YXJ0SW5T
ZWxlY3Rpb246XSk6IENvcGllZCBmcm9tIFdlYlBERlZpZXcuCisgICAgICAgICgtW1dLUERGVmll
dyBfY291bnRNYXRjaGVzOmNhc2VTZW5zaXRpdmU6XSk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpQREZWaWV3Q29udHJvbGxlcjo6ZmluZFN0cmluZyk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpQREZWaWV3Q29udHJvbGxlcjo6Y291bnRTdHJpbmdNYXRjaGVzKTogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9Q
YWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJ
bXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZmluZFN0cmluZ0luQ3Vz
dG9tUmVwcmVzZW50YXRpb24pOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmNvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRpb24pOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IF9maW5kU3RyaW5n
SW5DdXN0b21SZXByZXNlbnRhdGlvbjp3aXRoRmluZE9wdGlvbnM6bWF4TWF0Y2hDb3VudDpdKTog
QWRkZWQuCisgICAgICAgICgtW1dLVmlldyBfY291bnRTdHJpbmdNYXRjaGVzSW5DdXN0b21SZXBy
ZXNlbnRhdGlvbjp3aXRoRmluZE9wdGlvbnM6bWF4TWF0Y2hDb3VudDpdKTogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOiBNb3ZlZCBhIG51bWJlciBvZiBmaW5kLXJl
bGF0ZWQgZnVuY3Rpb25zIGZyb20gcHJpdmF0ZTogdG8gcHVibGljOiBzbworICAgICAgICAgICAg
dGhleSBjb3VsZCBiZSBjYWxsZWQgZnJvbSBQREZWaWV3Q29udHJvbGxlci4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpmaW5kU3RyaW5nKTogQWRkZWQuIAorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNv
dW50U3RyaW5nTWF0Y2hlcyk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViVmll
dy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmZpbmRTdHJpbmdJbkN1c3RvbVJlcHJl
c2VudGF0aW9uKTogQWRkZWQgc3R1Yi4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6Y291bnRT
dHJpbmdNYXRjaGVzSW5DdXN0b21SZXByZXNlbnRhdGlvbik6IERpdHRvLgorICAgICAgICAqIFVJ
UHJvY2Vzcy93aW4vV2ViVmlldy5oOgorCiAyMDExLTAzLTMwICBKZXIgTm9ibGUgIDxqZXIubm9i
bGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUERGVmlld0NvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BERlZpZXdDb250cm9sbGVy
LmgKaW5kZXggY2MzYjI5OWRlYTgwNzkxZmQyYjYxYjViYTVlOTQ4NTdhODllMWMzOC4uOTk0MjNk
MmQyYmRjN2VkYjM2NmZhMzJiY2I5ODY4M2Q3ZDc5NmIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUERGVmlld0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QREZWaWV3Q29udHJvbGxlci5oCkBAIC0yNiw2ICsy
Niw3IEBACiAjaWZuZGVmIFBERlZpZXdDb250cm9sbGVyX2gKICNkZWZpbmUgUERGVmlld0NvbnRy
b2xsZXJfaAogCisjaW5jbHVkZSAiV2ViRmluZE9wdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CkBAIC02Niw2ICs2Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNhdmVQREZUb0Rv
d25sb2Fkc0ZvbGRlcigpOwogICAgIHZvaWQgbGlua0NsaWNrZWQoY29uc3QgU3RyaW5nJiB1cmwp
OwogCisgICAgdmlydHVhbCB2b2lkIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlv
bnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOworICAgIHZpcnR1YWwgdm9pZCBjb3VudFN0cmlu
Z01hdGNoZXMoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291
bnQpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFBERlZpZXdDb250cm9sbGVyKFdLVmlldyAq
d2tWaWV3KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMv
UERGVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9Q
REZWaWV3Q29udHJvbGxlci5tbQppbmRleCAxMjg3ZDE4ZWQ4N2EwYzY2NzQ4YzI5ZThlNWNiODQx
ZjkzOGZiZTY1Li42ZWNkN2M3YjFjZjZkYWNjYWZjYTRmYmQ0MjZmMjQ5MmExYWU5NTdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QREZWaWV3Q29udHJvbGxl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QREZWaWV3Q29udHJv
bGxlci5tbQpAQCAtNzYsNiArNzYsMjkgQEAgc3RhdGljIHZvaWQgX2FwcGxpY2F0aW9uSW5mb0Zv
ck1JTUVUeXBlKE5TU3RyaW5nICp0eXBlLCBOU1N0cmluZyAqKm5hbWUsIE5TSW1hZ2UKICAgICAq
bmFtZSA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZGlzcGxheU5hbWVBdFBhdGg6
YXBwUGF0aF07CiB9CiAKKy8vIEZJWE1FIDQxODI4NzY6IFdlIGNhbiBlbGltaW5hdGUgdGhpcyBm
dW5jdGlvbiBpbiBmYXZvciBpZiAtaXNFcXVhbDogaWYgW1BERlNlbGVjdGlvbiBpc0VxdWFsOl0g
aXMgb3ZlcnJpZGRlbgorLy8gdG8gY29tcGFyZSBjb250ZW50cy4KK3N0YXRpYyBCT09MIF9QREZT
ZWxlY3Rpb25zQXJlRXF1YWwoUERGU2VsZWN0aW9uICpzZWxlY3Rpb25BLCBQREZTZWxlY3Rpb24g
KnNlbGVjdGlvbkIpCit7CisgICAgTlNBcnJheSAqYVBhZ2VzID0gW3NlbGVjdGlvbkEgcGFnZXNd
OworICAgIE5TQXJyYXkgKmJQYWdlcyA9IFtzZWxlY3Rpb25CIHBhZ2VzXTsKKworICAgIGlmICgh
W2FQYWdlcyBpc0VxdWFsOmJQYWdlc10pCisgICAgICAgIHJldHVybiBOTzsKKworICAgIGludCBj
b3VudCA9IFthUGFnZXMgY291bnRdOworICAgIGludCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBj
b3VudDsgKytpKSB7CisgICAgICAgIE5TUmVjdCBhQm91bmRzID0gW3NlbGVjdGlvbkEgYm91bmRz
Rm9yUGFnZTpbYVBhZ2VzIG9iamVjdEF0SW5kZXg6aV1dOworICAgICAgICBOU1JlY3QgYkJvdW5k
cyA9IFtzZWxlY3Rpb25CIGJvdW5kc0ZvclBhZ2U6W2JQYWdlcyBvYmplY3RBdEluZGV4OmldXTsK
KyAgICAgICAgaWYgKCFOU0VxdWFsUmVjdHMoYUJvdW5kcywgYkJvdW5kcykpIHsKKyAgICAgICAg
ICAgIHJldHVybiBOTzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBZRVM7Cit9CisK
IEBpbnRlcmZhY2UgV0tQREZWaWV3IDogTlNWaWV3CiB7CiAgICAgUERGVmlld0NvbnRyb2xsZXIq
IF9wZGZWaWV3Q29udHJvbGxlcjsKQEAgLTkyLDcgKzExNSw3IEBAIHN0YXRpYyB2b2lkIF9hcHBs
aWNhdGlvbkluZm9Gb3JNSU1FVHlwZShOU1N0cmluZyAqdHlwZSwgTlNTdHJpbmcgKipuYW1lLCBO
U0ltYWdlCiAtICh2b2lkKXNldERvY3VtZW50OihQREZEb2N1bWVudCAqKXBkZkRvY3VtZW50Owog
CiAtICh2b2lkKV9hcHBseVBERlByZWZlcmVuY2VzOwotCistIChQREZTZWxlY3Rpb24gKilfbmV4
dE1hdGNoRm9yOihOU1N0cmluZyAqKXN0cmluZyBkaXJlY3Rpb246KEJPT0wpZm9yd2FyZCBjYXNl
U2Vuc2l0aXZlOihCT09MKWNhc2VGbGFnIHdyYXA6KEJPT0wpd3JhcEZsYWcgZnJvbVNlbGVjdGlv
bjooUERGU2VsZWN0aW9uICopaW5pdGlhbFNlbGVjdGlvbiBzdGFydEluU2VsZWN0aW9uOihCT09M
KXN0YXJ0SW5TZWxlY3Rpb247CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1BERlZpZXcKQEAg
LTE4OCw2ICsyMTEsNjAgQEAgc3RhdGljIHZvaWQgX2FwcGxpY2F0aW9uSW5mb0Zvck1JTUVUeXBl
KE5TU3RyaW5nICp0eXBlLCBOU1N0cmluZyAqKm5hbWUsIE5TSW1hZ2UKICAgICBfcGRmVmlld0Nv
bnRyb2xsZXItPm9wZW5QREZJbkZpbmRlcigpOwogfQogCistIChQREZTZWxlY3Rpb24gKilfbmV4
dE1hdGNoRm9yOihOU1N0cmluZyAqKXN0cmluZyBkaXJlY3Rpb246KEJPT0wpZm9yd2FyZCBjYXNl
U2Vuc2l0aXZlOihCT09MKWNhc2VGbGFnIHdyYXA6KEJPT0wpd3JhcEZsYWcgZnJvbVNlbGVjdGlv
bjooUERGU2VsZWN0aW9uICopaW5pdGlhbFNlbGVjdGlvbiBzdGFydEluU2VsZWN0aW9uOihCT09M
KXN0YXJ0SW5TZWxlY3Rpb24KK3sKKyAgICBpZiAoIVtzdHJpbmcgbGVuZ3RoXSkKKyAgICAgICAg
cmV0dXJuIG5pbDsKKworICAgIGludCBvcHRpb25zID0gMDsKKyAgICBpZiAoIWZvcndhcmQpCisg
ICAgICAgIG9wdGlvbnMgfD0gTlNCYWNrd2FyZHNTZWFyY2g7CisKKyAgICBpZiAoIWNhc2VGbGFn
KQorICAgICAgICBvcHRpb25zIHw9IE5TQ2FzZUluc2Vuc2l0aXZlU2VhcmNoOworCisgICAgUERG
RG9jdW1lbnQgKmRvY3VtZW50ID0gW19wZGZWaWV3IGRvY3VtZW50XTsKKworICAgIFBERlNlbGVj
dGlvbiAqc2VsZWN0aW9uRm9ySW5pdGlhbFNlYXJjaCA9IFtpbml0aWFsU2VsZWN0aW9uIGNvcHld
OworICAgIGlmIChzdGFydEluU2VsZWN0aW9uKSB7CisgICAgICAgIC8vIEluaXRpYWxseSB3ZSB3
YW50IHRvIGluY2x1ZGUgdGhlIHNlbGVjdGVkIHRleHQgaW4gdGhlIHNlYXJjaC4gUERGRG9jdW1l
bnQncyBBUEkgYWx3YXlzIHNlYXJjaGVzIGZyb20ganVzdAorICAgICAgICAvLyBwYXN0IHRoZSBw
YXNzZWQtaW4gc2VsZWN0aW9uLCBzbyB3ZSBuZWVkIHRvIHBhc3MgYSBzZWxlY3Rpb24gdGhhdCdz
IG1vZGlmaWVkIGFwcHJvcHJpYXRlbHkuCisgICAgICAgIC8vIEZJWE1FIDQxODI4NjM6IElkZWFs
bHkgd2UnZCB1c2UgYSB6ZXJvLWxlbmd0aCBzZWxlY3Rpb24gYXQgdGhlIGVkZ2Ugb2YgdGhlIGN1
cnJlbnQgc2VsZWN0aW9uLCBidXQgemVyby1sZW5ndGgKKyAgICAgICAgLy8gc2VsZWN0aW9ucyBk
b24ndCB3b3JrIGluIFBERkRvY3VtZW50LiBTbyBpbnN0ZWFkIHdlIG1ha2UgYSBvbmUtbGVuZ3Ro
IHNlbGVjdGlvbiBqdXN0IGJlZm9yZSBvciBhZnRlciB0aGUKKyAgICAgICAgLy8gY3VycmVudCBz
ZWxlY3Rpb24sIHdoaWNoIHdvcmtzIGZvciBvdXIgcHVycG9zZXMgZXZlbiB3aGVuIHRoZSBjdXJy
ZW50IHNlbGVjdGlvbiBpcyBhdCBhbiBlZGdlIG9mIHRoZQorICAgICAgICAvLyBkb2N1bWVudC4K
KyAgICAgICAgaW50IGluaXRpYWxTZWxlY3Rpb25MZW5ndGggPSBbW2luaXRpYWxTZWxlY3Rpb24g
c3RyaW5nXSBsZW5ndGhdOworICAgICAgICBpZiAoZm9yd2FyZCkgeworICAgICAgICAgICAgW3Nl
bGVjdGlvbkZvckluaXRpYWxTZWFyY2ggZXh0ZW5kU2VsZWN0aW9uQXRTdGFydDoxXTsKKyAgICAg
ICAgICAgIFtzZWxlY3Rpb25Gb3JJbml0aWFsU2VhcmNoIGV4dGVuZFNlbGVjdGlvbkF0RW5kOi1p
bml0aWFsU2VsZWN0aW9uTGVuZ3RoXTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFtz
ZWxlY3Rpb25Gb3JJbml0aWFsU2VhcmNoIGV4dGVuZFNlbGVjdGlvbkF0RW5kOjFdOworICAgICAg
ICAgICAgW3NlbGVjdGlvbkZvckluaXRpYWxTZWFyY2ggZXh0ZW5kU2VsZWN0aW9uQXRTdGFydDot
aW5pdGlhbFNlbGVjdGlvbkxlbmd0aF07CisgICAgICAgIH0KKyAgICB9CisgICAgUERGU2VsZWN0
aW9uICpmb3VuZFNlbGVjdGlvbiA9IFtkb2N1bWVudCBmaW5kU3RyaW5nOnN0cmluZyBmcm9tU2Vs
ZWN0aW9uOnNlbGVjdGlvbkZvckluaXRpYWxTZWFyY2ggd2l0aE9wdGlvbnM6b3B0aW9uc107Cisg
ICAgW3NlbGVjdGlvbkZvckluaXRpYWxTZWFyY2ggcmVsZWFzZV07CisKKyAgICAvLyBJZiB3ZSBm
aXJzdCBzZWFyY2hlZCBpbiB0aGUgc2VsZWN0aW9uLCBhbmQgd2UgZm91bmQgdGhlIHNlbGVjdGlv
biwgc2VhcmNoIGFnYWluIGZyb20ganVzdCBwYXN0IHRoZSBzZWxlY3Rpb24KKyAgICBpZiAoc3Rh
cnRJblNlbGVjdGlvbiAmJiBfUERGU2VsZWN0aW9uc0FyZUVxdWFsKGZvdW5kU2VsZWN0aW9uLCBp
bml0aWFsU2VsZWN0aW9uKSkKKyAgICAgICAgZm91bmRTZWxlY3Rpb24gPSBbZG9jdW1lbnQgZmlu
ZFN0cmluZzpzdHJpbmcgZnJvbVNlbGVjdGlvbjppbml0aWFsU2VsZWN0aW9uIHdpdGhPcHRpb25z
Om9wdGlvbnNdOworCisgICAgaWYgKCFmb3VuZFNlbGVjdGlvbiAmJiB3cmFwRmxhZykKKyAgICAg
ICAgZm91bmRTZWxlY3Rpb24gPSBbZG9jdW1lbnQgZmluZFN0cmluZzpzdHJpbmcgZnJvbVNlbGVj
dGlvbjpuaWwgd2l0aE9wdGlvbnM6b3B0aW9uc107CisKKyAgICByZXR1cm4gZm91bmRTZWxlY3Rp
b247Cit9CisKKy0gKE5TVUludGVnZXIpX2NvdW50TWF0Y2hlczooTlNTdHJpbmcqKXN0cmluZyBj
YXNlU2Vuc2l0aXZlOihCT09MKWNhc2VGbGFnCit7CisgICAgaWYgKCFbc3RyaW5nIGxlbmd0aF0p
CisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBpbnQgb3B0aW9ucyA9IGNhc2VGbGFnID8gMCA6
IE5TQ2FzZUluc2Vuc2l0aXZlU2VhcmNoOworCisgICAgcmV0dXJuIFtbW19wZGZWaWV3IGRvY3Vt
ZW50XSBmaW5kU3RyaW5nOnN0cmluZyB3aXRoT3B0aW9uczpvcHRpb25zXSBjb3VudF07Cit9CisK
IC8vIE1BUks6IE5TVmlldyBvdmVycmlkZXMKIAogLSAodm9pZCl2aWV3RGlkTW92ZVRvV2luZG93
CkBAIC01MzEsNCArNjA4LDMxIEBAIHZvaWQgUERGVmlld0NvbnRyb2xsZXI6OmxpbmtDbGlja2Vk
KGNvbnN0IFN0cmluZyYgdXJsKQogICAgIHBhZ2UoKS0+bGlua0NsaWNrZWQodXJsLCBldmVudCk7
CiB9CiAKK3ZvaWQgUERGVmlld0NvbnRyb2xsZXI6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBz
dHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCit7Cisg
ICAgQk9PTCBmb3J3YXJkID0gIShvcHRpb25zICYgRmluZE9wdGlvbnNCYWNrd2FyZHMpOworICAg
IEJPT0wgY2FzZUZsYWcgPSAhKG9wdGlvbnMgJiBGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSk7
CisgICAgQk9PTCB3cmFwRmxhZyA9IG9wdGlvbnMgJiBGaW5kT3B0aW9uc1dyYXBBcm91bmQ7CisK
KyAgICBQREZTZWxlY3Rpb24gKnNlbGVjdGlvbiA9IFttX3drUERGVmlldy5nZXQoKSBfbmV4dE1h
dGNoRm9yOnN0cmluZyBkaXJlY3Rpb246Zm9yd2FyZCBjYXNlU2Vuc2l0aXZlOmNhc2VGbGFnIHdy
YXA6d3JhcEZsYWcgZnJvbVNlbGVjdGlvbjpbbV9wZGZWaWV3IGN1cnJlbnRTZWxlY3Rpb25dIHN0
YXJ0SW5TZWxlY3Rpb246Tk9dOworICAgIE5TVUludGVnZXIgbWF0Y2hDb3VudCA9IFttX3drUERG
Vmlldy5nZXQoKSBfY291bnRNYXRjaGVzOnN0cmluZyBjYXNlU2Vuc2l0aXZlOmNhc2VGbGFnXTsK
KworICAgIGlmICghc2VsZWN0aW9uKSB7CisgICAgICAgIHBhZ2UoKS0+ZGlkRmFpbFRvRmluZFN0
cmluZyhzdHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgW21fcGRmVmlldyBz
ZXRDdXJyZW50U2VsZWN0aW9uOnNlbGVjdGlvbl07CisgICAgW21fcGRmVmlldyBzY3JvbGxTZWxl
Y3Rpb25Ub1Zpc2libGU6bmlsXTsKKyAgICBwYWdlKCktPmRpZEZpbmRTdHJpbmcoc3RyaW5nLCBt
YXRjaENvdW50KTsKK30KKwordm9pZCBQREZWaWV3Q29udHJvbGxlcjo6Y291bnRTdHJpbmdNYXRj
aGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBt
YXhNYXRjaENvdW50KQoreworICAgIEJPT0wgY2FzZUZsYWcgPSAhKG9wdGlvbnMgJiBGaW5kT3B0
aW9uc0Nhc2VJbnNlbnNpdGl2ZSk7CisKKyAgICBOU1VJbnRlZ2VyIG1hdGNoQ291bnQgPSBbbV93
a1BERlZpZXcuZ2V0KCkgX2NvdW50TWF0Y2hlczpzdHJpbmcgY2FzZVNlbnNpdGl2ZTpjYXNlRmxh
Z107CisgICAgcGFnZSgpLT5kaWRDb3VudFN0cmluZ01hdGNoZXMoc3RyaW5nLCBtYXRjaENvdW50
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAppbmRleCBkMWM2OGJkOThlZjZhOGU2YjYz
MjMyNmJmZmNmZmIzNmQ1MzViZDJhLi4xZTFjNDg4YTBkOWRhY2ZlMTU5Mzg5ZjdiOWNlOTYyMjAy
ZTIwNWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdl
Q2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VD
bGllbnRJbXBsLmgKQEAgLTEwMyw2ICsxMDMsOCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBk
b3VibGUgY3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKCk7CiAgICAgdmlydHVhbCB2b2lk
IHNldEN1c3RvbVJlcHJlc2VudGF0aW9uWm9vbUZhY3Rvcihkb3VibGUpOworICAgIHZpcnR1YWwg
dm9pZCBmaW5kU3RyaW5nSW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBGaW5k
T3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7CisgICAgdmlydHVhbCB2b2lkIGNvdW50
U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiwgRmluZE9w
dGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOwogCiAgICAgdmlydHVhbCB2b2lkIGZsYXNo
QmFja2luZ1N0b3JlVXBkYXRlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHVwZGF0
ZVJlY3RzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMv
UGFnZUNsaWVudEltcGwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdl
Q2xpZW50SW1wbC5tbQppbmRleCBlM2NjNTgzNzAwNWEyMWUwYWZkNDcwYjI2ZDcyMTFkZWEwYTY5
ZGU4Li4wYmU0NjgzNGU2NTY0YTM5ZjI2N2IyNGFiMDg2MGU0NGMwMDg0MzFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQpAQCAt
NDE0LDYgKzQxNCwxNiBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRDdXN0b21SZXByZXNlbnRh
dGlvblpvb21GYWN0b3IoZG91YmxlIHpvb21GYWN0b3IpCiAgICAgW21fd2tWaWV3IF9zZXRDdXN0
b21SZXByZXNlbnRhdGlvblpvb21GYWN0b3I6em9vbUZhY3Rvcl07CiB9CiAKK3ZvaWQgUGFnZUNs
aWVudEltcGw6OmZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQorewor
ICAgIFttX3drVmlldyBfZmluZFN0cmluZ0luQ3VzdG9tUmVwcmVzZW50YXRpb246c3RyaW5nIHdp
dGhGaW5kT3B0aW9uczpvcHRpb25zIG1heE1hdGNoQ291bnQ6bWF4TWF0Y2hDb3VudF07Cit9CisK
K3ZvaWQgUGFnZUNsaWVudEltcGw6OmNvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50
YXRpb24oY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVk
IG1heE1hdGNoQ291bnQpCit7CisgICAgW21fd2tWaWV3IF9jb3VudFN0cmluZ01hdGNoZXNJbkN1
c3RvbVJlcHJlc2VudGF0aW9uOnN0cmluZyB3aXRoRmluZE9wdGlvbnM6b3B0aW9ucyBtYXhNYXRj
aENvdW50Om1heE1hdGNoQ291bnRdOworfQorCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpmbGFzaEJh
Y2tpbmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVjdG9yPEludFJlY3Q+JikKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMv
V0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmlu
ZGV4IDdjMTU0NDk1MTg5YTYyYTc0MjgyODRkOThiYzJmNTViYjI5ZTViMTAuLjhkYWVhNGQ2YjNh
MzVlYjM2ZjI2OTBmN2MxMWQ3MDJkY2QzYTJhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTIxNTYsNiArMjE1NiwyMiBAQCBzdGF0aWMgdm9pZCBk
cmF3UGFnZUJhY2tncm91bmQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIFdlYlBhZ2VQcm94eSogcGFn
ZSwgY29uc3QgSQogICAgIF9kYXRhLT5fcGRmVmlld0NvbnRyb2xsZXItPnNldFpvb21GYWN0b3Io
em9vbUZhY3Rvcik7CiB9CiAKKy0gKHZvaWQpX2ZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0
aW9uOihOU1N0cmluZyAqKXN0cmluZyB3aXRoRmluZE9wdGlvbnM6KE5TVUludGVnZXIpb3B0aW9u
cyBtYXhNYXRjaENvdW50OihOU1VJbnRlZ2VyKWNvdW50Cit7CisgICAgaWYgKCFfZGF0YS0+X3Bk
ZlZpZXdDb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBfZGF0YS0+X3BkZlZpZXdD
b250cm9sbGVyLT5maW5kU3RyaW5nKHN0cmluZywgc3RhdGljX2Nhc3Q8V2ViS2l0OjpGaW5kT3B0
aW9ucz4ob3B0aW9ucyksIGNvdW50KTsKK30KKworLSAodm9pZClfY291bnRTdHJpbmdNYXRjaGVz
SW5DdXN0b21SZXByZXNlbnRhdGlvbjooTlNTdHJpbmcgKilzdHJpbmcgd2l0aEZpbmRPcHRpb25z
OihOU1VJbnRlZ2VyKW9wdGlvbnMgbWF4TWF0Y2hDb3VudDooTlNVSW50ZWdlciljb3VudAorewor
ICAgIGlmICghX2RhdGEtPl9wZGZWaWV3Q29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgX2RhdGEtPl9wZGZWaWV3Q29udHJvbGxlci0+Y291bnRTdHJpbmdNYXRjaGVzKHN0cmluZywg
c3RhdGljX2Nhc3Q8V2ViS2l0OjpGaW5kT3B0aW9ucz4ob3B0aW9ucyksIGNvdW50KTsKK30KKwog
LSAodm9pZClfc2V0RHJhZ0ltYWdlOihOU0ltYWdlICopaW1hZ2UgYXQ6KE5TUG9pbnQpY2xpZW50
UG9pbnQgbGlua0RyYWc6KEJPT0wpbGlua0RyYWcKIHsKICAgICAvLyBXZSBuZWVkIHRvIHByZXZl
bnQgcmUtZW50ZXJpbmcgdGhpcyBjYWxsIHRvIGF2b2lkIGNyYXNoaW5nIGluIEFwcEtpdC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFs
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCmlu
ZGV4IDZmMTFlYzJlYzA1YmQ2ZGQ4NmNjZWI4ZmE4MDZlYjU4Y2FhOTQxYWQuLmUzN2Y3Y2ZjNGNk
YTUzMGNkZDE4ZmMxMTRlZjgwNWJhNjRhYjZiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaApAQCAtNzEsNiArNzEsOCBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIC0gKHZvaWQpX2RpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tUmVw
cmVzZW50YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KGNvbnN0IFN0cmluZyYpc3VnZ2VzdGVk
RmlsZW5hbWUgZGF0YVJlZmVyZW5jZTooY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYpZGF0
YVJlZmVyZW5jZTsKIC0gKGRvdWJsZSlfY3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yOwog
LSAodm9pZClfc2V0Q3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yOihkb3VibGUpem9vbUZh
Y3RvcjsKKy0gKHZvaWQpX2ZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0aW9uOihOU1N0cmlu
ZyAqKXN0cmluZyB3aXRoRmluZE9wdGlvbnM6KE5TVUludGVnZXIpb3B0aW9ucyBtYXhNYXRjaENv
dW50OihOU1VJbnRlZ2VyKWNvdW50OworLSAodm9pZClfY291bnRTdHJpbmdNYXRjaGVzSW5DdXN0
b21SZXByZXNlbnRhdGlvbjooTlNTdHJpbmcgKilzdHJpbmcgd2l0aEZpbmRPcHRpb25zOihOU1VJ
bnRlZ2VyKW9wdGlvbnMgbWF4TWF0Y2hDb3VudDooTlNVSW50ZWdlciljb3VudDsKIC0gKHZvaWQp
X3NldERyYWdJbWFnZTooTlNJbWFnZSAqKWltYWdlIGF0OihOU1BvaW50KWNsaWVudFBvaW50IGxp
bmtEcmFnOihCT09MKWxpbmtEcmFnOwogCiAtICh2b2lkKV9zZXREcmF3aW5nQXJlYVNpemU6KE5T
U2l6ZSlzaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggNTA4OGNm
OTkwYjQ2ZDUyZmVhOWJmYTY4ZGUwZDk4NzlmZmI5YWU2Ny4uNjAxZDVlMmViZDQzYzJlNmJlMTQ1
YTI0MmMyNjExMDA5YjhmNzZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
CkBAIC0xNTEsNiArMTUxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDdXN0b21S
ZXByZXNlbnRhdGlvblpvb21GYWN0b3IoZG91YmxlKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
Zmxhc2hCYWNraW5nU3RvcmVVcGRhdGVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYg
dXBkYXRlUmVjdHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmluZFN0cmluZ0luQ3VzdG9tUmVw
cmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNo
Q291bnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY291bnRTdHJpbmdNYXRjaGVzSW5DdXN0b21S
ZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0
Y2hDb3VudCkgPSAwOwogCiAgICAgdmlydHVhbCBmbG9hdCB1c2VyU3BhY2VTY2FsZUZhY3Rvcigp
IGNvbnN0ID0gMDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IDQ5YzA2NzI1NjNiMGZlYzI4OGMwMDY2N2I2MzhhMjQzYjNmYjFmZWQuLjIzNTNjYzFk
YmU0NzNlMDYwMWZkZjRkNjEyMjU4ZjgzNWQwMWZjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMTExLDcgKzExMTEsMTAgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnNldE1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkKGJvb2wgbWVtb3J5Q2FjaGVD
bGllbnRDYWxsc0UKIAogdm9pZCBXZWJQYWdlUHJveHk6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5n
JiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCiB7
Ci0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaW5kU3RyaW5nKHN0cmlu
Zywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCksIG1fcGFnZUlEKTsKKyAgICBpZiAobV9tYWluRnJh
bWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbikKKyAgICAgICAgbV9wYWdlQ2xpZW50LT5maW5kU3Ry
aW5nSW5DdXN0b21SZXByZXNlbnRhdGlvbihzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQp
OworICAgIGVsc2UKKyAgICAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpG
aW5kU3RyaW5nKHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCksIG1fcGFnZUlEKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmhpZGVGaW5kVUkoKQpAQCAtMTEyMSw3ICsxMTI0LDEwIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpoaWRlRmluZFVJKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmNv
dW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9u
cywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKIHsKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkNvdW50U3RyaW5nTWF0Y2hlcyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNo
Q291bnQpLCBtX3BhZ2VJRCk7CisgICAgaWYgKG1fbWFpbkZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50
YXRpb24pCisgICAgICAgIG1fcGFnZUNsaWVudC0+Y291bnRTdHJpbmdNYXRjaGVzSW5DdXN0b21S
ZXByZXNlbnRhdGlvbihzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpOworICAgIGVsc2UK
KyAgICAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb3VudFN0cmluZ01h
dGNoZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSwgbV9wYWdlSUQpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYg
c2NyaXB0LCBQYXNzUmVmUHRyPFNjcmlwdFZhbHVlQ2FsbGJhY2s+IHBycENhbGxiYWNrKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGNiYjE1NzNmMThmMmI2ZmVj
ZGI5M2EzMWM3Y2RkMjIwNDJkNTM4ZTIuLjY4YjI3MmQ4YWNjYTIxNmRkMGUxNzMwZmRiYTViYWQ0
MWNlNGJkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTM1
NSw2ICszNTUsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZmluZFN0cmluZyhjb25zdCBTdHJpbmcm
LCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7CiAgICAgdm9pZCBoaWRlRmlu
ZFVJKCk7CiAgICAgdm9pZCBjb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgRmluZE9w
dGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOworICAgIHZvaWQgZGlkQ291bnRTdHJpbmdN
YXRjaGVzKGNvbnN0IFN0cmluZyYsIHVpbnQzMl90IG1hdGNoQ291bnQpOworICAgIHZvaWQgc2V0
RmluZEluZGljYXRvcihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNlbGVjdGlvblJlY3RJbldp
bmRvd0Nvb3JkaW5hdGVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYgdGV4dFJl
Y3RzSW5TZWxlY3Rpb25SZWN0Q29vcmRpbmF0ZXMsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlJiBjb250ZW50SW1hZ2VIYW5kbGUsIGJvb2wgZmFkZU91dCk7CisgICAgdm9pZCBkaWRGaW5k
U3RyaW5nKGNvbnN0IFN0cmluZyYsIHVpbnQzMl90IG1hdGNoQ291bnQpOworICAgIHZvaWQgZGlk
RmFpbFRvRmluZFN0cmluZyhjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgZ2V0Q29udGVudHNB
c1N0cmluZyhQYXNzUmVmUHRyPFN0cmluZ0NhbGxiYWNrPik7CiAgICAgdm9pZCBnZXRNYWluUmVz
b3VyY2VEYXRhT2ZGcmFtZShXZWJGcmFtZVByb3h5KiwgUGFzc1JlZlB0cjxEYXRhQ2FsbGJhY2s+
KTsKQEAgLTYwOCwxMiArNjEyLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldEVkaXRvckNvbW1h
bmRzRm9yS2V5RXZlbnQoVmVjdG9yPFN0cmluZz4mKTsKICNlbmRpZgogCi0gICAgLy8gRmluZC4K
LSAgICB2b2lkIGRpZENvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCB1aW50MzJfdCBt
YXRjaENvdW50KTsKLSAgICB2b2lkIHNldEZpbmRJbmRpY2F0b3IoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBzZWxlY3Rpb25SZWN0SW5XaW5kb3dDb29yZGluYXRlcywgY29uc3QgVmVjdG9yPFdl
YkNvcmU6OkZsb2F0UmVjdD4mIHRleHRSZWN0c0luU2VsZWN0aW9uUmVjdENvb3JkaW5hdGVzLCBj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgY29udGVudEltYWdlSGFuZGxlLCBib29sIGZh
ZGVPdXQpOwotICAgIHZvaWQgZGlkRmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCB1aW50MzJfdCBt
YXRjaENvdW50KTsKLSAgICB2b2lkIGRpZEZhaWxUb0ZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJik7
Ci0KICAgICAvLyBQb3B1cCBNZW51LgogICAgIHZvaWQgc2hvd1BvcHVwTWVudShjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiByZWN0LCB1aW50NjRfdCB0ZXh0RGlyZWN0aW9uLCBjb25zdCBWZWN0b3I8
V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCwgY29uc3QgUGxhdGZv
cm1Qb3B1cE1lbnVEYXRhJik7CiAgICAgdm9pZCBoaWRlUG9wdXBNZW51KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAppbmRleCA0YTJlYzVmMmI4NzBhZTZkYzYxODNl
YzJmM2ExZjVhMGIxZmJlZjYzLi4yMDY0YjdjMjFhYzQwNGE1NGFhMWI4NmE5MTRhMWFjM2M4NmQw
NmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKQEAgLTE0NDEs
NiArMTQ0MSwxNCBAQCB2b2lkIFdlYlZpZXc6OmRpZENoYW5nZVNjcm9sbGJhcnNGb3JNYWluRnJh
bWUoKSBjb25zdAogewogfQogCit2b2lkIFdlYlZpZXc6OmZpbmRTdHJpbmdJbkN1c3RvbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCkKK3sKK30KKwor
dm9pZCBXZWJWaWV3Ojpjb3VudFN0cmluZ01hdGNoZXNJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNv
bnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCkKK3sKK30KKwogdm9pZCBXZWJWaWV3
OjpzZXRJc0luV2luZG93KGJvb2wgaXNJbldpbmRvdykKIHsKICAgICBtX2lzSW5XaW5kb3cgPSBp
c0luV2luZG93OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJW
aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuaAppbmRleCA0YjBh
YzkxNTg3ODIyNGQ3ZTY0Yzg2ZmQzMDVhMzA4ZTJhOWMzOWU1Li5jNzQxOWYzNzJjMzdjOWNlM2Y4
N2YzNjcyMmZiZjM0Y2EwOWI5NDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3Mvd2luL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZp
ZXcuaApAQCAtMTg2LDYgKzE4Niw5IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6RHJhZ09wZXJh
dGlvbiBrZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbihEV09SRCBncmZLZXlTdGF0ZSkgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNjcm9sbGJhcnNGb3JNYWluRnJhbWUoKSBjb25zdDsK
IAorICAgIHZpcnR1YWwgdm9pZCBmaW5kU3RyaW5nSW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25z
dCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKKyAgICB2aXJ0
dWFsIHZvaWQgY291bnRTdHJpbmdNYXRjaGVzSW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBT
dHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKKwogICAgIHZpcnR1
YWwgSFdORCBuYXRpdmVXaW5kb3coKTsKIAogICAgIC8vIFdlYkNvcmU6OldpbmRvd01lc3NhZ2VM
aXN0ZW5lcgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88849</attachid>
            <date>2011-04-08 11:43:01 -0700</date>
            <delta_ts>2011-04-10 18:41:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57765-20110408114302.patch</filename>
            <type>text/plain</type>
            <size>19245</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMyMjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiODc1NGI4YzgzMTJhZTI0
NmY2NjlmMTc1MmQ5NzdlYzhjZDQxZTQ2Li5lNWZiNDZiMmU0ZTIxNTdkZjBlMWViNDBiMDMwYzhj
Y2ZmZjg0NTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMDQtMDQgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV0syOiBQREY6IEZpbmQgaW4gcGFnZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc3NjUKKworICAgICAgICBTdXBw
b3J0IHNlYXJjaGluZyB0ZXh0IHdpdGhpbiBQREYgZG9jdW1lbnRzLiAgRmluZCByZXF1ZXN0cyBt
dXN0IGJlIHJvdXRlZCBmcm9tIHRoZQorICAgICAgICBXZWJQYWdlUHJveHksIHRocm91Z2ggdGhl
IFBhZ2VDbGllbnQsIGFuZCB0byB0aGUgV0tWaWV3LCB3aGVyZSB0aGV5IGNhbiBiZSBwYXNzZWQg
dG8gCisgICAgICAgIHRoZSBQREZWaWV3Q29udHJvbGxlci4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvbWFjL1BERlZpZXdDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9t
YWMvUERGVmlld0NvbnRyb2xsZXIubW06CisgICAgICAgIChfUERGU2VsZWN0aW9uc0FyZUVxdWFs
KTogQ29waWVkIGZyb20gV2ViUERGVmlldy4KKyAgICAgICAgKC1bV0tQREZWaWV3IF9uZXh0TWF0
Y2hGb3I6ZGlyZWN0aW9uOmNhc2VTZW5zaXRpdmU6d3JhcDpmcm9tU2VsZWN0aW9uOnN0YXJ0SW5T
ZWxlY3Rpb246XSk6IENvcGllZCBmcm9tIFdlYlBERlZpZXcuCisgICAgICAgICgtW1dLUERGVmll
dyBfY291bnRNYXRjaGVzOmNhc2VTZW5zaXRpdmU6XSk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpQREZWaWV3Q29udHJvbGxlcjo6ZmluZFN0cmluZyk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpQREZWaWV3Q29udHJvbGxlcjo6Y291bnRTdHJpbmdNYXRjaGVzKTogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9Q
YWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJ
bXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZmluZFN0cmluZ0luQ3Vz
dG9tUmVwcmVzZW50YXRpb24pOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmNvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRpb24pOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IF9maW5kU3RyaW5n
SW5DdXN0b21SZXByZXNlbnRhdGlvbjp3aXRoRmluZE9wdGlvbnM6bWF4TWF0Y2hDb3VudDpdKTog
QWRkZWQuCisgICAgICAgICgtW1dLVmlldyBfY291bnRTdHJpbmdNYXRjaGVzSW5DdXN0b21SZXBy
ZXNlbnRhdGlvbjp3aXRoRmluZE9wdGlvbnM6bWF4TWF0Y2hDb3VudDpdKTogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOiBNb3ZlZCBhIG51bWJlciBvZiBmaW5kLXJl
bGF0ZWQgZnVuY3Rpb25zIGZyb20gcHJpdmF0ZTogdG8gcHVibGljOiBzbworICAgICAgICAgICAg
dGhleSBjb3VsZCBiZSBjYWxsZWQgZnJvbSBQREZWaWV3Q29udHJvbGxlci4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpmaW5kU3RyaW5nKTogQWRkZWQuIAorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNv
dW50U3RyaW5nTWF0Y2hlcyk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViVmll
dy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmZpbmRTdHJpbmdJbkN1c3RvbVJlcHJl
c2VudGF0aW9uKTogQWRkZWQgc3R1Yi4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6Y291bnRT
dHJpbmdNYXRjaGVzSW5DdXN0b21SZXByZXNlbnRhdGlvbik6IERpdHRvLgorICAgICAgICAqIFVJ
UHJvY2Vzcy93aW4vV2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdrcGFn
ZV9wLmg6CisgICAgICAgIChRV0tQYWdlUHJpdmF0ZTo6ZmluZFN0cmluZ0luQ3VzdG9tUmVwcmVz
ZW50YXRpb24pOiBBZGRlZCBzdHViLgorICAgICAgICAoUVdLUGFnZVByaXZhdGU6OmNvdW50U3Ry
aW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRpb24pOiBBZGRlZCBzdHViLgogMjAxMS0wMy0z
MCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1BERlZpZXdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9QREZWaWV3Q29udHJvbGxlci5oCmluZGV4IGNjM2IyOTlkZWE4MDc5MWZkMmI2MWI1YmE1
ZTk0ODU3YTg5ZTFjMzguLjA0MWFhN2JlNzhlNmY5NTk4ZjY4YjRjMjJjMDdhMjUzYzVlNmI0ODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BERlZpZXdDb250
cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUERGVmlld0Nv
bnRyb2xsZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBQREZWaWV3Q29udHJvbGxlcl9o
CiAjZGVmaW5lIFBERlZpZXdDb250cm9sbGVyX2gKIAorI2luY2x1ZGUgIldlYkZpbmRPcHRpb25z
LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpAQCAtNjYsNiArNjcsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzYXZlUERGVG9Eb3dubG9hZHNGb2xkZXIoKTsKICAgICB2b2lkIGxpbmtDbGlj
a2VkKGNvbnN0IFN0cmluZyYgdXJsKTsKIAorICAgIHZvaWQgZmluZFN0cmluZyhjb25zdCBTdHJp
bmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7CisgICAgdm9pZCBjb3Vu
dFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1h
dGNoQ291bnQpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFBERlZpZXdDb250cm9sbGVyKFdL
VmlldyAqd2tWaWV3KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvUERGVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9QREZWaWV3Q29udHJvbGxlci5tbQppbmRleCAxMjg3ZDE4ZWQ4N2EwYzY2NzQ4YzI5ZThl
NWNiODQxZjkzOGZiZTY1Li4yMDU5N2ZlMjQzYmI4MGQ2ODNhMDk3MDU4NTM5ODY2ODUyODRkZmNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QREZWaWV3Q29u
dHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QREZWaWV3
Q29udHJvbGxlci5tbQpAQCAtNzYsNiArNzYsMjkgQEAgc3RhdGljIHZvaWQgX2FwcGxpY2F0aW9u
SW5mb0Zvck1JTUVUeXBlKE5TU3RyaW5nICp0eXBlLCBOU1N0cmluZyAqKm5hbWUsIE5TSW1hZ2UK
ICAgICAqbmFtZSA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZGlzcGxheU5hbWVB
dFBhdGg6YXBwUGF0aF07CiB9CiAKKy8vIEZJWE1FIDQxODI4NzY6IFdlIGNhbiBlbGltaW5hdGUg
dGhpcyBmdW5jdGlvbiBpbiBmYXZvciBpZiAtaXNFcXVhbDogaWYgW1BERlNlbGVjdGlvbiBpc0Vx
dWFsOl0gaXMgb3ZlcnJpZGRlbgorLy8gdG8gY29tcGFyZSBjb250ZW50cy4KK3N0YXRpYyBCT09M
IF9QREZTZWxlY3Rpb25zQXJlRXF1YWwoUERGU2VsZWN0aW9uICpzZWxlY3Rpb25BLCBQREZTZWxl
Y3Rpb24gKnNlbGVjdGlvbkIpCit7CisgICAgTlNBcnJheSAqYVBhZ2VzID0gW3NlbGVjdGlvbkEg
cGFnZXNdOworICAgIE5TQXJyYXkgKmJQYWdlcyA9IFtzZWxlY3Rpb25CIHBhZ2VzXTsKKworICAg
IGlmICghW2FQYWdlcyBpc0VxdWFsOmJQYWdlc10pCisgICAgICAgIHJldHVybiBOTzsKKworICAg
IGludCBjb3VudCA9IFthUGFnZXMgY291bnRdOworICAgIGludCBpOworICAgIGZvciAoaSA9IDA7
IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIE5TUmVjdCBhQm91bmRzID0gW3NlbGVjdGlvbkEg
Ym91bmRzRm9yUGFnZTpbYVBhZ2VzIG9iamVjdEF0SW5kZXg6aV1dOworICAgICAgICBOU1JlY3Qg
YkJvdW5kcyA9IFtzZWxlY3Rpb25CIGJvdW5kc0ZvclBhZ2U6W2JQYWdlcyBvYmplY3RBdEluZGV4
OmldXTsKKyAgICAgICAgaWYgKCFOU0VxdWFsUmVjdHMoYUJvdW5kcywgYkJvdW5kcykpIHsKKyAg
ICAgICAgICAgIHJldHVybiBOTzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBZRVM7
Cit9CisKIEBpbnRlcmZhY2UgV0tQREZWaWV3IDogTlNWaWV3CiB7CiAgICAgUERGVmlld0NvbnRy
b2xsZXIqIF9wZGZWaWV3Q29udHJvbGxlcjsKQEAgLTkyLDcgKzExNSw3IEBAIHN0YXRpYyB2b2lk
IF9hcHBsaWNhdGlvbkluZm9Gb3JNSU1FVHlwZShOU1N0cmluZyAqdHlwZSwgTlNTdHJpbmcgKipu
YW1lLCBOU0ltYWdlCiAtICh2b2lkKXNldERvY3VtZW50OihQREZEb2N1bWVudCAqKXBkZkRvY3Vt
ZW50OwogCiAtICh2b2lkKV9hcHBseVBERlByZWZlcmVuY2VzOwotCistIChQREZTZWxlY3Rpb24g
KilfbmV4dE1hdGNoRm9yOihOU1N0cmluZyAqKXN0cmluZyBkaXJlY3Rpb246KEJPT0wpZm9yd2Fy
ZCBjYXNlU2Vuc2l0aXZlOihCT09MKWNhc2VGbGFnIHdyYXA6KEJPT0wpd3JhcEZsYWcgZnJvbVNl
bGVjdGlvbjooUERGU2VsZWN0aW9uICopaW5pdGlhbFNlbGVjdGlvbiBzdGFydEluU2VsZWN0aW9u
OihCT09MKXN0YXJ0SW5TZWxlY3Rpb247CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1BERlZp
ZXcKQEAgLTE4OCw2ICsyMTEsNTcgQEAgc3RhdGljIHZvaWQgX2FwcGxpY2F0aW9uSW5mb0Zvck1J
TUVUeXBlKE5TU3RyaW5nICp0eXBlLCBOU1N0cmluZyAqKm5hbWUsIE5TSW1hZ2UKICAgICBfcGRm
Vmlld0NvbnRyb2xsZXItPm9wZW5QREZJbkZpbmRlcigpOwogfQogCistIChQREZTZWxlY3Rpb24g
KilfbmV4dE1hdGNoRm9yOihOU1N0cmluZyAqKXN0cmluZyBkaXJlY3Rpb246KEJPT0wpZm9yd2Fy
ZCBjYXNlU2Vuc2l0aXZlOihCT09MKWNhc2VGbGFnIHdyYXA6KEJPT0wpd3JhcEZsYWcgZnJvbVNl
bGVjdGlvbjooUERGU2VsZWN0aW9uICopaW5pdGlhbFNlbGVjdGlvbiBzdGFydEluU2VsZWN0aW9u
OihCT09MKXN0YXJ0SW5TZWxlY3Rpb24KK3sKKyAgICBpZiAoIVtzdHJpbmcgbGVuZ3RoXSkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKworICAgIGludCBvcHRpb25zID0gMDsKKyAgICBpZiAoIWZvcndh
cmQpCisgICAgICAgIG9wdGlvbnMgfD0gTlNCYWNrd2FyZHNTZWFyY2g7CisKKyAgICBpZiAoIWNh
c2VGbGFnKQorICAgICAgICBvcHRpb25zIHw9IE5TQ2FzZUluc2Vuc2l0aXZlU2VhcmNoOworCisg
ICAgUERGRG9jdW1lbnQgKmRvY3VtZW50ID0gW19wZGZWaWV3IGRvY3VtZW50XTsKKworICAgIFBE
RlNlbGVjdGlvbiAqc2VsZWN0aW9uRm9ySW5pdGlhbFNlYXJjaCA9IFtpbml0aWFsU2VsZWN0aW9u
IGNvcHldOworICAgIGlmIChzdGFydEluU2VsZWN0aW9uKSB7CisgICAgICAgIC8vIEluaXRpYWxs
eSB3ZSB3YW50IHRvIGluY2x1ZGUgdGhlIHNlbGVjdGVkIHRleHQgaW4gdGhlIHNlYXJjaC4gIFNv
IHdlIG11c3QgbW9kaWZ5IHRoZSBzdGFydGluZyBzZWFyY2ggCisgICAgICAgIC8vIHNlbGVjdGlv
biB0byBmaXQgUERGRG9jdW1lbnQncyBzZWFyY2ggcmVxdWlyZW1lbnRzOiBzZWxlY3Rpb24gbXVz
dCBoYXZlIGEgbGVuZ3RoID49IDEsIGJlZ2luIGJlZm9yZSAKKyAgICAgICAgLy8gdGhlIGN1cnJl
bnQgc2VsZWN0aW9uIChpZiBzZWFyY2hpbmcgZm9yd2FyZHMpIG9yIGFmdGVyIChpZiBzZWFyY2hp
bmcgYmFja3dhcmRzKS4KKyAgICAgICAgaW50IGluaXRpYWxTZWxlY3Rpb25MZW5ndGggPSBbW2lu
aXRpYWxTZWxlY3Rpb24gc3RyaW5nXSBsZW5ndGhdOworICAgICAgICBpZiAoZm9yd2FyZCkgewor
ICAgICAgICAgICAgW3NlbGVjdGlvbkZvckluaXRpYWxTZWFyY2ggZXh0ZW5kU2VsZWN0aW9uQXRT
dGFydDoxXTsKKyAgICAgICAgICAgIFtzZWxlY3Rpb25Gb3JJbml0aWFsU2VhcmNoIGV4dGVuZFNl
bGVjdGlvbkF0RW5kOi1pbml0aWFsU2VsZWN0aW9uTGVuZ3RoXTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIFtzZWxlY3Rpb25Gb3JJbml0aWFsU2VhcmNoIGV4dGVuZFNlbGVjdGlvbkF0
RW5kOjFdOworICAgICAgICAgICAgW3NlbGVjdGlvbkZvckluaXRpYWxTZWFyY2ggZXh0ZW5kU2Vs
ZWN0aW9uQXRTdGFydDotaW5pdGlhbFNlbGVjdGlvbkxlbmd0aF07CisgICAgICAgIH0KKyAgICB9
CisgICAgUERGU2VsZWN0aW9uICpmb3VuZFNlbGVjdGlvbiA9IFtkb2N1bWVudCBmaW5kU3RyaW5n
OnN0cmluZyBmcm9tU2VsZWN0aW9uOnNlbGVjdGlvbkZvckluaXRpYWxTZWFyY2ggd2l0aE9wdGlv
bnM6b3B0aW9uc107CisgICAgW3NlbGVjdGlvbkZvckluaXRpYWxTZWFyY2ggcmVsZWFzZV07CisK
KyAgICAvLyBJZiB3ZSBmaXJzdCBzZWFyY2hlZCBpbiB0aGUgc2VsZWN0aW9uLCBhbmQgd2UgZm91
bmQgdGhlIHNlbGVjdGlvbiwgc2VhcmNoIGFnYWluIGZyb20ganVzdCBwYXN0IHRoZSBzZWxlY3Rp
b24KKyAgICBpZiAoc3RhcnRJblNlbGVjdGlvbiAmJiBfUERGU2VsZWN0aW9uc0FyZUVxdWFsKGZv
dW5kU2VsZWN0aW9uLCBpbml0aWFsU2VsZWN0aW9uKSkKKyAgICAgICAgZm91bmRTZWxlY3Rpb24g
PSBbZG9jdW1lbnQgZmluZFN0cmluZzpzdHJpbmcgZnJvbVNlbGVjdGlvbjppbml0aWFsU2VsZWN0
aW9uIHdpdGhPcHRpb25zOm9wdGlvbnNdOworCisgICAgaWYgKCFmb3VuZFNlbGVjdGlvbiAmJiB3
cmFwRmxhZykKKyAgICAgICAgZm91bmRTZWxlY3Rpb24gPSBbZG9jdW1lbnQgZmluZFN0cmluZzpz
dHJpbmcgZnJvbVNlbGVjdGlvbjpuaWwgd2l0aE9wdGlvbnM6b3B0aW9uc107CisKKyAgICByZXR1
cm4gZm91bmRTZWxlY3Rpb247Cit9CisKKy0gKE5TVUludGVnZXIpX2NvdW50TWF0Y2hlczooTlNT
dHJpbmcqKXN0cmluZyBjYXNlU2Vuc2l0aXZlOihCT09MKWNhc2VGbGFnCit7CisgICAgaWYgKCFb
c3RyaW5nIGxlbmd0aF0pCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBpbnQgb3B0aW9ucyA9
IGNhc2VGbGFnID8gMCA6IE5TQ2FzZUluc2Vuc2l0aXZlU2VhcmNoOworCisgICAgcmV0dXJuIFtb
W19wZGZWaWV3IGRvY3VtZW50XSBmaW5kU3RyaW5nOnN0cmluZyB3aXRoT3B0aW9uczpvcHRpb25z
XSBjb3VudF07Cit9CisKIC8vIE1BUks6IE5TVmlldyBvdmVycmlkZXMKIAogLSAodm9pZCl2aWV3
RGlkTW92ZVRvV2luZG93CkBAIC01MzEsNCArNjA1LDMxIEBAIHZvaWQgUERGVmlld0NvbnRyb2xs
ZXI6OmxpbmtDbGlja2VkKGNvbnN0IFN0cmluZyYgdXJsKQogICAgIHBhZ2UoKS0+bGlua0NsaWNr
ZWQodXJsLCBldmVudCk7CiB9CiAKK3ZvaWQgUERGVmlld0NvbnRyb2xsZXI6OmZpbmRTdHJpbmco
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1h
dGNoQ291bnQpCit7CisgICAgQk9PTCBmb3J3YXJkID0gIShvcHRpb25zICYgRmluZE9wdGlvbnNC
YWNrd2FyZHMpOworICAgIEJPT0wgY2FzZUZsYWcgPSAhKG9wdGlvbnMgJiBGaW5kT3B0aW9uc0Nh
c2VJbnNlbnNpdGl2ZSk7CisgICAgQk9PTCB3cmFwRmxhZyA9IG9wdGlvbnMgJiBGaW5kT3B0aW9u
c1dyYXBBcm91bmQ7CisKKyAgICBQREZTZWxlY3Rpb24gKnNlbGVjdGlvbiA9IFttX3drUERGVmll
dy5nZXQoKSBfbmV4dE1hdGNoRm9yOnN0cmluZyBkaXJlY3Rpb246Zm9yd2FyZCBjYXNlU2Vuc2l0
aXZlOmNhc2VGbGFnIHdyYXA6d3JhcEZsYWcgZnJvbVNlbGVjdGlvbjpbbV9wZGZWaWV3IGN1cnJl
bnRTZWxlY3Rpb25dIHN0YXJ0SW5TZWxlY3Rpb246Tk9dOworICAgIE5TVUludGVnZXIgbWF0Y2hD
b3VudCA9IFttX3drUERGVmlldy5nZXQoKSBfY291bnRNYXRjaGVzOnN0cmluZyBjYXNlU2Vuc2l0
aXZlOmNhc2VGbGFnXTsKKworICAgIGlmICghc2VsZWN0aW9uKSB7CisgICAgICAgIHBhZ2UoKS0+
ZGlkRmFpbFRvRmluZFN0cmluZyhzdHJpbmcpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgW21fcGRmVmlldyBzZXRDdXJyZW50U2VsZWN0aW9uOnNlbGVjdGlvbl07CisgICAgW21fcGRm
VmlldyBzY3JvbGxTZWxlY3Rpb25Ub1Zpc2libGU6bmlsXTsKKyAgICBwYWdlKCktPmRpZEZpbmRT
dHJpbmcoc3RyaW5nLCBtYXRjaENvdW50KTsKK30KKwordm9pZCBQREZWaWV3Q29udHJvbGxlcjo6
Y291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRp
b25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQoreworICAgIEJPT0wgY2FzZUZsYWcgPSAhKG9w
dGlvbnMgJiBGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSk7CisKKyAgICBOU1VJbnRlZ2VyIG1h
dGNoQ291bnQgPSBbbV93a1BERlZpZXcuZ2V0KCkgX2NvdW50TWF0Y2hlczpzdHJpbmcgY2FzZVNl
bnNpdGl2ZTpjYXNlRmxhZ107CisgICAgcGFnZSgpLT5kaWRDb3VudFN0cmluZ01hdGNoZXMoc3Ry
aW5nLCBtYXRjaENvdW50KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwuaAppbmRleCBkMWM2
OGJkOThlZjZhOGU2YjYzMjMyNmJmZmNmZmIzNmQ1MzViZDJhLi4xZTFjNDg4YTBkOWRhY2ZlMTU5
Mzg5ZjdiOWNlOTYyMjAyZTIwNWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTEwMyw2ICsxMDMsOCBAQCBwcml2YXRlOgog
CiAgICAgdmlydHVhbCBkb3VibGUgY3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKCk7CiAg
ICAgdmlydHVhbCB2b2lkIHNldEN1c3RvbVJlcHJlc2VudGF0aW9uWm9vbUZhY3Rvcihkb3VibGUp
OworICAgIHZpcnR1YWwgdm9pZCBmaW5kU3RyaW5nSW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25z
dCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7CisgICAgdmly
dHVhbCB2b2lkIGNvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3Qg
U3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOwogCiAgICAgdmly
dHVhbCB2b2lkIGZsYXNoQmFja2luZ1N0b3JlVXBkYXRlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6
SW50UmVjdD4mIHVwZGF0ZVJlY3RzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQppbmRleCBlM2NjNTgzNzAwNWEyMWUwYWZkNDcw
YjI2ZDcyMTFkZWEwYTY5ZGU4Li4wYmU0NjgzNGU2NTY0YTM5ZjI2N2IyNGFiMDg2MGU0NGMwMDg0
MzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xp
ZW50SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xp
ZW50SW1wbC5tbQpAQCAtNDE0LDYgKzQxNCwxNiBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRD
dXN0b21SZXByZXNlbnRhdGlvblpvb21GYWN0b3IoZG91YmxlIHpvb21GYWN0b3IpCiAgICAgW21f
d2tWaWV3IF9zZXRDdXN0b21SZXByZXNlbnRhdGlvblpvb21GYWN0b3I6em9vbUZhY3Rvcl07CiB9
CiAKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0aW9u
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhN
YXRjaENvdW50KQoreworICAgIFttX3drVmlldyBfZmluZFN0cmluZ0luQ3VzdG9tUmVwcmVzZW50
YXRpb246c3RyaW5nIHdpdGhGaW5kT3B0aW9uczpvcHRpb25zIG1heE1hdGNoQ291bnQ6bWF4TWF0
Y2hDb3VudF07Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmNvdW50U3RyaW5nTWF0Y2hlc0lu
Q3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9w
dGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCit7CisgICAgW21fd2tWaWV3IF9jb3VudFN0
cmluZ01hdGNoZXNJbkN1c3RvbVJlcHJlc2VudGF0aW9uOnN0cmluZyB3aXRoRmluZE9wdGlvbnM6
b3B0aW9ucyBtYXhNYXRjaENvdW50Om1heE1hdGNoQ291bnRdOworfQorCiB2b2lkIFBhZ2VDbGll
bnRJbXBsOjpmbGFzaEJhY2tpbmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVjdG9yPEludFJlY3Q+JikK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9t
YWMvV0tWaWV3Lm1tCmluZGV4IDdjMTU0NDk1MTg5YTYyYTc0MjgyODRkOThiYzJmNTViYjI5ZTVi
MTAuLjhkYWVhNGQ2YjNhMzVlYjM2ZjI2OTBmN2MxMWQ3MDJkY2QzYTJhZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTIxNTYsNiArMjE1NiwyMiBA
QCBzdGF0aWMgdm9pZCBkcmF3UGFnZUJhY2tncm91bmQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIFdl
YlBhZ2VQcm94eSogcGFnZSwgY29uc3QgSQogICAgIF9kYXRhLT5fcGRmVmlld0NvbnRyb2xsZXIt
PnNldFpvb21GYWN0b3Ioem9vbUZhY3Rvcik7CiB9CiAKKy0gKHZvaWQpX2ZpbmRTdHJpbmdJbkN1
c3RvbVJlcHJlc2VudGF0aW9uOihOU1N0cmluZyAqKXN0cmluZyB3aXRoRmluZE9wdGlvbnM6KE5T
VUludGVnZXIpb3B0aW9ucyBtYXhNYXRjaENvdW50OihOU1VJbnRlZ2VyKWNvdW50Cit7CisgICAg
aWYgKCFfZGF0YS0+X3BkZlZpZXdDb250cm9sbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBf
ZGF0YS0+X3BkZlZpZXdDb250cm9sbGVyLT5maW5kU3RyaW5nKHN0cmluZywgc3RhdGljX2Nhc3Q8
V2ViS2l0OjpGaW5kT3B0aW9ucz4ob3B0aW9ucyksIGNvdW50KTsKK30KKworLSAodm9pZClfY291
bnRTdHJpbmdNYXRjaGVzSW5DdXN0b21SZXByZXNlbnRhdGlvbjooTlNTdHJpbmcgKilzdHJpbmcg
d2l0aEZpbmRPcHRpb25zOihOU1VJbnRlZ2VyKW9wdGlvbnMgbWF4TWF0Y2hDb3VudDooTlNVSW50
ZWdlciljb3VudAoreworICAgIGlmICghX2RhdGEtPl9wZGZWaWV3Q29udHJvbGxlcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgX2RhdGEtPl9wZGZWaWV3Q29udHJvbGxlci0+Y291bnRTdHJpbmdN
YXRjaGVzKHN0cmluZywgc3RhdGljX2Nhc3Q8V2ViS2l0OjpGaW5kT3B0aW9ucz4ob3B0aW9ucyks
IGNvdW50KTsKK30KKwogLSAodm9pZClfc2V0RHJhZ0ltYWdlOihOU0ltYWdlICopaW1hZ2UgYXQ6
KE5TUG9pbnQpY2xpZW50UG9pbnQgbGlua0RyYWc6KEJPT0wpbGlua0RyYWcKIHsKICAgICAvLyBX
ZSBuZWVkIHRvIHByZXZlbnQgcmUtZW50ZXJpbmcgdGhpcyBjYWxsIHRvIGF2b2lkIGNyYXNoaW5n
IGluIEFwcEtpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1dLVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXdJbnRlcm5hbC5oCmluZGV4IDZmMTFlYzJlYzA1YmQ2ZGQ4NmNjZWI4ZmE4MDZlYjU4Y2FhOTQx
YWQuLmUzN2Y3Y2ZjNGNkYTUzMGNkZDE4ZmMxMTRlZjgwNWJhNjRhYjZiZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaApAQCAtNzEs
NiArNzEsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIC0gKHZvaWQpX2RpZEZpbmlzaExvYWRpbmdE
YXRhRm9yQ3VzdG9tUmVwcmVzZW50YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KGNvbnN0IFN0
cmluZyYpc3VnZ2VzdGVkRmlsZW5hbWUgZGF0YVJlZmVyZW5jZTooY29uc3QgQ29yZUlQQzo6RGF0
YVJlZmVyZW5jZSYpZGF0YVJlZmVyZW5jZTsKIC0gKGRvdWJsZSlfY3VzdG9tUmVwcmVzZW50YXRp
b25ab29tRmFjdG9yOwogLSAodm9pZClfc2V0Q3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9y
Oihkb3VibGUpem9vbUZhY3RvcjsKKy0gKHZvaWQpX2ZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2Vu
dGF0aW9uOihOU1N0cmluZyAqKXN0cmluZyB3aXRoRmluZE9wdGlvbnM6KE5TVUludGVnZXIpb3B0
aW9ucyBtYXhNYXRjaENvdW50OihOU1VJbnRlZ2VyKWNvdW50OworLSAodm9pZClfY291bnRTdHJp
bmdNYXRjaGVzSW5DdXN0b21SZXByZXNlbnRhdGlvbjooTlNTdHJpbmcgKilzdHJpbmcgd2l0aEZp
bmRPcHRpb25zOihOU1VJbnRlZ2VyKW9wdGlvbnMgbWF4TWF0Y2hDb3VudDooTlNVSW50ZWdlcilj
b3VudDsKIC0gKHZvaWQpX3NldERyYWdJbWFnZTooTlNJbWFnZSAqKWltYWdlIGF0OihOU1BvaW50
KWNsaWVudFBvaW50IGxpbmtEcmFnOihCT09MKWxpbmtEcmFnOwogCiAtICh2b2lkKV9zZXREcmF3
aW5nQXJlYVNpemU6KE5TU2l6ZSlzaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXdrcGFnZV9wLmgKaW5kZXggNjcwMTY2Yzc5N2IxMWNjNjg4OWNkY2E5OWZkZGRmMWI0NDY5
MzVhMS4uMWM4YjAwMjYyMjYwYTdjNTkyODI4ODA5MGQyMDZmOTliZTNjN2Y0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2VfcC5oCkBAIC05Niw3ICs5Niw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsYmFyc0Zvck1haW5GcmFt
ZSgpIGNvbnN0IHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGZsYXNoQmFja2luZ1N0b3JlVXBkYXRl
cyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHVwZGF0ZVJlY3RzKTsKLQorICAgIHZp
cnR1YWwgdm9pZCBmaW5kU3RyaW5nSW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcm
LCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkgeyB9CisgICAgdmlydHVhbCB2
b2lkIGNvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5n
JiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpIHsgfQogICAgIHZpcnR1YWwg
ZmxvYXQgdXNlclNwYWNlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiAxOyB9CiAKICAgICB2
b2lkIHBhaW50KFFQYWludGVyKiBwYWludGVyLCBRUmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaAppbmRleCA1MDg4Y2Y5OTBiNDZkNTJmZWE5YmZhNjhkZTBkOTg3OWZmYjlh
ZTY3Li42MDFkNWUyZWJkNDNjMmU2YmUxNDVhMjQyYzI2MTEwMDliOGY3NmQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTE1MSw2ICsxNTEsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldEN1c3RvbVJlcHJlc2VudGF0aW9uWm9vbUZhY3Rvcihkb3VibGUp
ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBmbGFzaEJhY2tpbmdTdG9yZVVwZGF0ZXMoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiB1cGRhdGVSZWN0cykgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBmaW5kU3RyaW5nSW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBGaW5k
T3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBj
b3VudFN0cmluZ01hdGNoZXNJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYsIEZp
bmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KSA9IDA7CiAKICAgICB2aXJ0dWFsIGZs
b2F0IHVzZXJTcGFjZVNjYWxlRmFjdG9yKCkgY29uc3QgPSAwOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNDljMDY3MjU2M2IwZmVjMjg4YzAwNjY3
YjYzOGEyNDNiM2ZiMWZlZC4uMjM1M2NjMWRiZTQ3M2UwNjAxZmRmNGQ2MTIyNThmODM1ZDAxZmNk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTExMTEs
NyArMTExMSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWVtb3J5Q2FjaGVDbGllbnRDYWxs
c0VuYWJsZWQoYm9vbCBtZW1vcnlDYWNoZUNsaWVudENhbGxzRQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywg
dW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKIHsKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkZpbmRTdHJpbmcoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSwgbV9w
YWdlSUQpOworICAgIGlmIChtX21haW5GcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uKQorICAg
ICAgICBtX3BhZ2VDbGllbnQtPmZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0aW9uKHN0cmlu
Zywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCk7CisgICAgZWxzZQorICAgICAgICBwcm9jZXNzKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpbmRTdHJpbmcoc3RyaW5nLCBvcHRpb25zLCBtYXhN
YXRjaENvdW50KSwgbV9wYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGlkZUZpbmRV
SSgpCkBAIC0xMTIxLDcgKzExMjQsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhpZGVGaW5kVUko
KQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQogewot
ICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q291bnRTdHJpbmdNYXRjaGVz
KHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCksIG1fcGFnZUlEKTsKKyAgICBpZiAobV9t
YWluRnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbikKKyAgICAgICAgbV9wYWdlQ2xpZW50LT5j
b3VudFN0cmluZ01hdGNoZXNJbkN1c3RvbVJlcHJlc2VudGF0aW9uKHN0cmluZywgb3B0aW9ucywg
bWF4TWF0Y2hDb3VudCk7CisgICAgZWxzZQorICAgICAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkNvdW50U3RyaW5nTWF0Y2hlcyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNo
Q291bnQpLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0
SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIFBhc3NSZWZQdHI8U2NyaXB0VmFsdWVD
YWxsYmFjaz4gcHJwQ2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKaW5kZXggY2JiMTU3M2YxOGYyYjZmZWNkYjkzYTMxYzdjZGQyMjA0MmQ1MzhlMi4uNjhiMjcy
ZDhhY2NhMjE2ZGQwZTE3MzBmZGJhNWJhZDQxY2U0YmQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMzU1LDYgKzM1NSwxMCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRj
aENvdW50KTsKICAgICB2b2lkIGhpZGVGaW5kVUkoKTsKICAgICB2b2lkIGNvdW50U3RyaW5nTWF0
Y2hlcyhjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7
CisgICAgdm9pZCBkaWRDb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgdWludDMyX3Qg
bWF0Y2hDb3VudCk7CisgICAgdm9pZCBzZXRGaW5kSW5kaWNhdG9yKGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYgc2VsZWN0aW9uUmVjdEluV2luZG93Q29vcmRpbmF0ZXMsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpGbG9hdFJlY3Q+JiB0ZXh0UmVjdHNJblNlbGVjdGlvblJlY3RDb29yZGluYXRlcywg
Y29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGNvbnRlbnRJbWFnZUhhbmRsZSwgYm9vbCBm
YWRlT3V0KTsKKyAgICB2b2lkIGRpZEZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgdWludDMyX3Qg
bWF0Y2hDb3VudCk7CisgICAgdm9pZCBkaWRGYWlsVG9GaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYp
OwogCiAgICAgdm9pZCBnZXRDb250ZW50c0FzU3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5nQ2FsbGJh
Y2s+KTsKICAgICB2b2lkIGdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJveHkq
LCBQYXNzUmVmUHRyPERhdGFDYWxsYmFjaz4pOwpAQCAtNjA4LDEyICs2MTIsNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgZ2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudChWZWN0b3I8U3RyaW5nPiYp
OwogI2VuZGlmCiAKLSAgICAvLyBGaW5kLgotICAgIHZvaWQgZGlkQ291bnRTdHJpbmdNYXRjaGVz
KGNvbnN0IFN0cmluZyYsIHVpbnQzMl90IG1hdGNoQ291bnQpOwotICAgIHZvaWQgc2V0RmluZElu
ZGljYXRvcihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNlbGVjdGlvblJlY3RJbldpbmRvd0Nv
b3JkaW5hdGVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYgdGV4dFJlY3RzSW5T
ZWxlY3Rpb25SZWN0Q29vcmRpbmF0ZXMsIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBj
b250ZW50SW1hZ2VIYW5kbGUsIGJvb2wgZmFkZU91dCk7Ci0gICAgdm9pZCBkaWRGaW5kU3RyaW5n
KGNvbnN0IFN0cmluZyYsIHVpbnQzMl90IG1hdGNoQ291bnQpOwotICAgIHZvaWQgZGlkRmFpbFRv
RmluZFN0cmluZyhjb25zdCBTdHJpbmcmKTsKLQogICAgIC8vIFBvcHVwIE1lbnUuCiAgICAgdm9p
ZCBzaG93UG9wdXBNZW51KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QsIHVpbnQ2NF90IHRl
eHREaXJlY3Rpb24sIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50MzJfdCBz
ZWxlY3RlZEluZGV4LCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmKTsKICAgICB2b2lkIGhp
ZGVQb3B1cE1lbnUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4v
V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCmlu
ZGV4IDRhMmVjNWYyYjg3MGFlNmRjNjE4M2VjMmYzYTFmNWEwYjFmYmVmNjMuLjIwNjRiN2MyMWFj
NDA0YTU0YWExYjg2YTkxNGExYWMzYzg2ZDA2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3dpbi9XZWJWaWV3LmNwcApAQCAtMTQ0MSw2ICsxNDQxLDE0IEBAIHZvaWQgV2ViVmlldzo6ZGlk
Q2hhbmdlU2Nyb2xsYmFyc0Zvck1haW5GcmFtZSgpIGNvbnN0CiB7CiB9CiAKK3ZvaWQgV2ViVmll
dzo6ZmluZFN0cmluZ0luQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiwgRmluZE9w
dGlvbnMsIHVuc2lnbmVkKQoreworfQorCit2b2lkIFdlYlZpZXc6OmNvdW50U3RyaW5nTWF0Y2hl
c0luQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2ln
bmVkKQoreworfQorCiB2b2lkIFdlYlZpZXc6OnNldElzSW5XaW5kb3coYm9vbCBpc0luV2luZG93
KQogewogICAgIG1faXNJbldpbmRvdyA9IGlzSW5XaW5kb3c7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy93aW4vV2ViVmlldy5oCmluZGV4IDRiMGFjOTE1ODc4MjI0ZDdlNjRjODZmZDMwNWEzMDhlMmE5
YzM5ZTUuLjM5ODc2NDQyNzhkMDVjOTdjZTkzMzBhNjIxNzQ2ZDNkZTIyZDQzYzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCkBAIC0xODYsNiArMTg2LDkgQEAgcHJpdmF0
ZToKICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIGtleVN0YXRlVG9EcmFnT3BlcmF0aW9uKERX
T1JEIGdyZktleVN0YXRlKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2Nyb2xs
YmFyc0Zvck1haW5GcmFtZSgpIGNvbnN0OwogCisgICAgdmlydHVhbCB2b2lkIGZpbmRTdHJpbmdJ
bkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25l
ZCBtYXhNYXRjaENvdW50KTsKKyAgICB2aXJ0dWFsIHZvaWQgY291bnRTdHJpbmdNYXRjaGVzSW5D
dXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQg
bWF4TWF0Y2hDb3VudCk7CisKICAgICB2aXJ0dWFsIEhXTkQgbmF0aXZlV2luZG93KCk7CiAKICAg
ICAvLyBXZWJDb3JlOjpXaW5kb3dNZXNzYWdlTGlzdGVuZXIK
</data>
<flag name="review"
          id="81438"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>