<?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>60819</bug_id>
          
          <creation_ts>2011-05-13 16:51:15 -0700</creation_ts>
          <short_desc>REGRESSION (WK2): Can&apos;t drag and drop a link or image from Safari to Desktop</short_desc>
          <delta_ts>2011-05-13 18:19:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, PlatformOnly, Regression</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Enrica Casucci">enrica</reporter>
          <assigned_to name="Enrica Casucci">enrica</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>403952</commentid>
    <comment_count>0</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2011-05-13 16:51:15 -0700</bug_when>
    <thetext>* STEPS TO REPRODUCE
1.go to flickr.com
2. Drag any image to Desktop 
3. Draga a link to Desktop

* RESULTS
nothing is saved on the Desktop.

&lt;rdar://problem/9370689&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403965</commentid>
    <comment_count>1</comment_count>
      <attachid>93534</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2011-05-13 17:05:55 -0700</bug_when>
    <thetext>Created attachment 93534
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403970</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-13 17:08:12 -0700</bug_when>
    <thetext>Attachment 93534 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/platform/win/ClipboardUtilitiesWin.h:81:  The parameter name &quot;dataObject&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/win/ClipboardUtilitiesWin.h:82:  The parameter name &quot;dataObject&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/win/ClipboardUtilitiesWin.h:83:  The parameter name &quot;dataObject&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/win/ClipboardUtilitiesWin.h:84:  The parameter name &quot;dataObject&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 4 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403971</commentid>
    <comment_count>3</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2011-05-13 17:10:50 -0700</bug_when>
    <thetext>I&apos;ve already fixed the style issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403973</commentid>
    <comment_count>4</comment_count>
      <attachid>93534</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-13 17:16:07 -0700</bug_when>
    <thetext>Comment on attachment 93534
Patch

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

&gt; Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp:374
&gt; +    static FORMATETC fileDescriptorFormat = {cf, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};

WebKit coding style puts spaces at the braces.

&gt; Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp:381
&gt; +    static FORMATETC fileContentFormat = {cf, 0, DVASPECT_CONTENT, 0, TYMED_HGLOBAL};

WebKit coding style puts spaces at the braces.

&gt; Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp:392
&gt; +    FILEGROUPDESCRIPTOR* fgd = (FILEGROUPDESCRIPTOR*)::GlobalLock(store.hGlobal);

Could we use a C++ cast here?

&gt; Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp:393
&gt; +    size = fgd-&gt;fgd[0].nFileSizeLow;

What if the size is larger than 31 bits?

&gt; Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp:414
&gt; +    STGMEDIUM medium = {0};

The braces thing again.

&gt; Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp:421
&gt; +    FILEGROUPDESCRIPTOR* fgd = (FILEGROUPDESCRIPTOR*)::GlobalLock(medium.hGlobal);

Could we use a C++ cast here?

&gt; Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp:427
&gt; +    wcscpy(fgd-&gt;fgd[0].cFileName, pathname.charactersWithNullTermination());

What guarantees that cFileName is big enough to hold pathname without overrunning the buffer?

&gt; Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp:435
&gt; +    STGMEDIUM medium = {0};

Braces again.

&gt;&gt; Source/WebCore/platform/win/ClipboardUtilitiesWin.h:81
&gt;&gt; +void getFileDescriptorData(IDataObject* dataObject, int&amp; size, String&amp; pathname);
&gt; 
&gt; The parameter name &quot;dataObject&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]

I agree with the style queue on this.

&gt; Source/WebCore/platform/win/ClipboardWin.cpp:221
&gt; +        OutputDebugString(L&quot;FILE WRITTEN\n&quot;);

Did you mean to land this?

&gt; Source/WebKit2/WebProcess/WebCoreSupport/win/WebDragClientWin.cpp:96
&gt; +    m_page-&gt;send(Messages::WebPageProxy::StartDragDrop(imageOrigin, dragPoint, okEffect, dragData.dragDataMap(), (uint64_t)fileSize, pathname, fileContentHandle, IntSize(bitmapInfo.bmiHeader.biWidth, bitmapInfo.bmiHeader.biHeight), handle, isLink), m_page-&gt;pageID());

Do we need that typecast to uint64_t?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403981</commentid>
    <comment_count>5</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2011-05-13 17:20:44 -0700</bug_when>
    <thetext>My comments:

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

&gt; Source/WebCore/ChangeLog:24
&gt; +        (WebCore::getFileDescriptorData):
&gt; +        (WebCore::getFileContentData):
&gt; +        (WebCore::setFileDescriptorData):
&gt; +        (WebCore::setFileContentData):
&gt; +        (WebCore::setCFData):

A brief discussion of the functions here would be nice.

&gt; Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp:392
&gt; +    FILEGROUPDESCRIPTOR* fgd = (FILEGROUPDESCRIPTOR*)::GlobalLock(store.hGlobal);

Can this be a static cast?

&gt; Source/WebCore/platform/win/ClipboardUtilitiesWin.cpp:794
&gt; +    medium.tymed = TYMED_HGLOBAL;

Was this change necessary? A comment in the ChangeLog about this would be nice.

&gt; Source/WebCore/platform/win/ClipboardWin.cpp:221
&gt; +        OutputDebugString(L&quot;FILE WRITTEN\n&quot;);

This should be removed.

&gt; Source/WebCore/platform/win/ClipboardWin.cpp:704
&gt; +    CString content = makeString(&quot;[InternetShortcut]\r\nURL=&quot;, url, &quot;\r\n&quot;).latin1();

It this the only change that was needed for the regression from r70914? It would be nice to have this in its own patch, but doesn&apos;t seem necessary if the patch is already written.

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:75
&gt; +#if PLATFORM(WIN)
&gt; +#include &lt;WebCore/ClipboardUtilitiesWin.h&gt;
&gt; +#endif

This should be after the other includes, I think.

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:793
&gt; +    }

A blank line after this brace would be nice.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/win/WebDragClientWin.cpp:95
&gt; +    }

I&apos;d like to see a blank line after this brace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403987</commentid>
    <comment_count>6</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2011-05-13 17:26:36 -0700</bug_when>
    <thetext>Thanks for the comments. I&apos;ll address your feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404003</commentid>
    <comment_count>7</comment_count>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2011-05-13 18:19:29 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/86477</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93534</attachid>
            <date>2011-05-13 17:05:55 -0700</date>
            <delta_ts>2011-05-13 17:16:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>droptodesktop.txt</filename>
            <type>text/plain</type>
            <size>21069</size>
            <attacher name="Enrica Casucci">enrica</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2NDcyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDUtMTMgIEVucmljYSBD
YXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OIChXSzIpOiBDYW4ndCBkcmFnIGFuZCBkcm9w
IGEgbGluayBvciBpbWFnZSBmcm9tIFNhZmFyaSB0byBEZXNrdG9wCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDgxOQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vOTM3MDY4OT4KKworICAgICAgICBUbyBzdXBwb3J0IGRyYWctYW5kLWRyb3AgdG8gdGhl
IGRlc2t0b3AgYW5kIG90aGVyIHdpbmRvd3MgYXBwbGljYXRpb25zLAorICAgICAgICB3ZSBuZWVk
IHRvIHN1cHBvcnQgdGhlIGZpbGVEZXNjcmlwdG9yIGFuZCBmaWxlQ29udGVudFplcm8gY2xpcGJv
YXJkIGZvcm1hdHMuCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgc3VwcG9ydCBmb3Igc2Vy
aWFsaXppbmcgdGhlc2UgdHlwZXMgYWNyb3NzIHRoZSBwcm9jZXNzIGJvdW5kYXJ5LgorICAgICAg
ICBJdCBhbHNvIGZpeGVzIGEgcmVncmVzc2lvbiBpbnRyb2R1Y2VkIGJ5IHI3MDkxNCwgdGhhdCB3
YXMgY2F1c2luZyB0aGUgY29udGVudCBvZiB0aGUKKyAgICAgICAgc2hvcnRjdXQgZmlsZXMgdG8g
YmUgY29ycnVwdGVkLiBVc2luZyBhc2NpaSgpIHRvIGNvbnZlcnQgZnJvbSBTdHJpbmcgdG8gQ1N0
cmluZyB3YXMKKyAgICAgICAgY2F1c2luZyAnXG4nIGFuZCAnXHInIHRvIGJlIHJlcGxhY2VkIHdp
dGggJz8nLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnRGF0YS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZmlsZURlc2NyaXB0b3JGb3JtYXQpOiBNb3ZlZCBmcm9tIENsaXBib2FyZFdpbi5jcHAu
CisgICAgICAgIChXZWJDb3JlOjpmaWxlQ29udGVudEZvcm1hdFplcm8pOiBNb3ZlZCBmcm9tIENs
aXBib2FyZFdpbi5jcHAuCisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlRGVzY3JpcHRvckRhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZUNvbnRlbnREYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEZpbGVEZXNjcmlwdG9yRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRGaWxlQ29u
dGVudERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6c2V0Q0ZEYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmg6CisgICAgICAgICogcGxhdGZvcm0vd2lu
L0NsaXBib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxIRHJvcENv
bnRlbnQpOiBDaGFuZ2VkIGFzY2lpKCkgdG8gbGF0aW4xKCkuCisgICAgICAgIChXZWJDb3JlOjpD
bGlwYm9hcmRXaW46OndyaXRlVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0RhdGFX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmdldERyYWdGaWxlRGVzY3JpcHRv
ckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmdldERyYWdGaWxlQ29udGVudERh
dGEpOgorCiAyMDExLTA1LTEzICBEYW5pZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EcmFnRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0RyYWdEYXRhLmgJKHJldmlzaW9uIDg2NDcyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RHJhZ0RhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtOTksNiArOTksOCBAQCBwdWJsaWM6CiAjaWYg
UExBVEZPUk0oV0lOKQogICAgIERyYWdEYXRhKGNvbnN0IERyYWdEYXRhTWFwJiwgY29uc3QgSW50
UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERy
YWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBE
cmFnQXBwbGljYXRpb25Ob25lKTsKICAgICBjb25zdCBEcmFnRGF0YU1hcCYgZHJhZ0RhdGFNYXAo
KTsKKyAgICB2b2lkIGdldERyYWdGaWxlRGVzY3JpcHRvckRhdGEoaW50JiBzaXplLCBTdHJpbmcm
IHBhdGhuYW1lKTsKKyAgICB2b2lkIGdldERyYWdGaWxlQ29udGVudERhdGEoaW50IHNpemUsIHZv
aWQqIGRhdGFCbG9iKTsKICNlbmRpZgogICAgIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50UG9zaXRpb247IH0KICAgICBjb25zdCBJbnRQb2lu
dCYgZ2xvYmFsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbFBvc2l0aW9uOyB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRp
bGl0aWVzV2luLmNwcAkocmV2aXNpb24gODY0NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY4LDYg
KzM2OCw4MyBAQCBGT1JNQVRFVEMqIHNtYXJ0UGFzdGVGb3JtYXQoKQogICAgIHJldHVybiAmaHRt
bEZvcm1hdDsKIH0KIAorRk9STUFURVRDKiBmaWxlRGVzY3JpcHRvckZvcm1hdCgpCit7CisgICAg
c3RhdGljIFVJTlQgY2YgPSBSZWdpc3RlckNsaXBib2FyZEZvcm1hdChDRlNUUl9GSUxFREVTQ1JJ
UFRPUik7CisgICAgc3RhdGljIEZPUk1BVEVUQyBmaWxlRGVzY3JpcHRvckZvcm1hdCA9IHtjZiwg
MCwgRFZBU1BFQ1RfQ09OVEVOVCwgLTEsIFRZTUVEX0hHTE9CQUx9OworICAgIHJldHVybiAmZmls
ZURlc2NyaXB0b3JGb3JtYXQ7Cit9CisKK0ZPUk1BVEVUQyogZmlsZUNvbnRlbnRGb3JtYXRaZXJv
KCkKK3sKKyAgICBzdGF0aWMgVUlOVCBjZiA9IFJlZ2lzdGVyQ2xpcGJvYXJkRm9ybWF0KENGU1RS
X0ZJTEVDT05URU5UUyk7CisgICAgc3RhdGljIEZPUk1BVEVUQyBmaWxlQ29udGVudEZvcm1hdCA9
IHtjZiwgMCwgRFZBU1BFQ1RfQ09OVEVOVCwgMCwgVFlNRURfSEdMT0JBTH07CisgICAgcmV0dXJu
ICZmaWxlQ29udGVudEZvcm1hdDsKK30KKwordm9pZCBnZXRGaWxlRGVzY3JpcHRvckRhdGEoSURh
dGFPYmplY3QqIGRhdGFPYmplY3QsIGludCYgc2l6ZSwgU3RyaW5nJiBwYXRobmFtZSkKK3sKKyAg
ICBTVEdNRURJVU0gc3RvcmU7CisgICAgc2l6ZSA9IDA7CisgICAgaWYgKEZBSUxFRChkYXRhT2Jq
ZWN0LT5HZXREYXRhKGZpbGVEZXNjcmlwdG9yRm9ybWF0KCksICZzdG9yZSkpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBGSUxFR1JPVVBERVNDUklQVE9SKiBmZ2QgPSAoRklMRUdST1VQREVTQ1JJ
UFRPUiopOjpHbG9iYWxMb2NrKHN0b3JlLmhHbG9iYWwpOworICAgIHNpemUgPSBmZ2QtPmZnZFsw
XS5uRmlsZVNpemVMb3c7CisgICAgcGF0aG5hbWUgPSBmZ2QtPmZnZFswXS5jRmlsZU5hbWU7CisK
KyAgICA6Okdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsKKyAgICA6OlJlbGVhc2VTdGdNZWRp
dW0oJnN0b3JlKTsKK30KKwordm9pZCBnZXRGaWxlQ29udGVudERhdGEoSURhdGFPYmplY3QqIGRh
dGFPYmplY3QsIGludCBzaXplLCB2b2lkKiBkYXRhQmxvYikKK3sKKyAgICBTVEdNRURJVU0gc3Rv
cmU7CisgICAgaWYgKEZBSUxFRChkYXRhT2JqZWN0LT5HZXREYXRhKGZpbGVDb250ZW50Rm9ybWF0
WmVybygpLCAmc3RvcmUpKSkKKyAgICAgICAgcmV0dXJuOworICAgIHZvaWQqIGRhdGEgPSA6Okds
b2JhbExvY2soc3RvcmUuaEdsb2JhbCk7CisgICAgOjpDb3B5TWVtb3J5KGRhdGFCbG9iLCBkYXRh
LCBzaXplKTsKKyAgICAKKyAgICA6Okdsb2JhbFVubG9jayhzdG9yZS5oR2xvYmFsKTsKKyAgICA6
OlJlbGVhc2VTdGdNZWRpdW0oJnN0b3JlKTsKK30KKwordm9pZCBzZXRGaWxlRGVzY3JpcHRvckRh
dGEoSURhdGFPYmplY3QqIGRhdGFPYmplY3QsIGludCBzaXplLCBTdHJpbmcgcGF0aG5hbWUpCit7
CisgICAgU1RHTUVESVVNIG1lZGl1bSA9IHswfTsKKyAgICBtZWRpdW0udHltZWQgPSBUWU1FRF9I
R0xPQkFMOworCisgICAgbWVkaXVtLmhHbG9iYWwgPSA6Okdsb2JhbEFsbG9jKEdQVFIsIHNpemVv
ZihGSUxFR1JPVVBERVNDUklQVE9SKSk7CisgICAgaWYgKCFtZWRpdW0uaEdsb2JhbCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgRklMRUdST1VQREVTQ1JJUFRPUiogZmdkID0gKEZJTEVHUk9VUERF
U0NSSVBUT1IqKTo6R2xvYmFsTG9jayhtZWRpdW0uaEdsb2JhbCk7CisgICAgOjpaZXJvTWVtb3J5
KGZnZCwgc2l6ZW9mKEZJTEVHUk9VUERFU0NSSVBUT1IpKTsKKyAgICBmZ2QtPmNJdGVtcyA9IDE7
CisgICAgZmdkLT5mZ2RbMF0uZHdGbGFncyA9IEZEX0ZJTEVTSVpFOworICAgIGZnZC0+ZmdkWzBd
Lm5GaWxlU2l6ZUxvdyA9IHNpemU7CisgICAgCisgICAgd2NzY3B5KGZnZC0+ZmdkWzBdLmNGaWxl
TmFtZSwgcGF0aG5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSk7CisgICAgOjpH
bG9iYWxVbmxvY2sobWVkaXVtLmhHbG9iYWwpOworICAgIAorICAgIGRhdGFPYmplY3QtPlNldERh
dGEoZmlsZURlc2NyaXB0b3JGb3JtYXQoKSwgJm1lZGl1bSwgVFJVRSk7Cit9CisKK3ZvaWQgc2V0
RmlsZUNvbnRlbnREYXRhKElEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBpbnQgc2l6ZSwgdm9pZCog
ZGF0YUJsb2IpCit7CisgICAgU1RHTUVESVVNIG1lZGl1bSA9IHswfTsKKyAgICBtZWRpdW0udHlt
ZWQgPSBUWU1FRF9IR0xPQkFMOworCisgICAgbWVkaXVtLmhHbG9iYWwgPSA6Okdsb2JhbEFsbG9j
KEdQVFIsIHNpemUpOworICAgIGlmICghbWVkaXVtLmhHbG9iYWwpCisgICAgICAgIHJldHVybjsK
KyAgICB2b2lkKiBmaWxlQ29udGVudHMgPSA6Okdsb2JhbExvY2sobWVkaXVtLmhHbG9iYWwpOwor
ICAgIDo6Q29weU1lbW9yeShmaWxlQ29udGVudHMsIGRhdGFCbG9iLCBzaXplKTsgIAorICAgIDo6
R2xvYmFsVW5sb2NrKG1lZGl1bS5oR2xvYmFsKTsKKworICAgIGRhdGFPYmplY3QtPlNldERhdGEo
ZmlsZUNvbnRlbnRGb3JtYXRaZXJvKCksICZtZWRpdW0sIFRSVUUpOworfQorCiBTdHJpbmcgZ2V0
VVJMKElEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBEcmFnRGF0YTo6RmlsZW5hbWVDb252ZXJzaW9u
UG9saWN5IGZpbGVuYW1lUG9saWN5LCBib29sJiBzdWNjZXNzLCBTdHJpbmcqIHRpdGxlKQogewog
ICAgIFNUR01FRElVTSBzdG9yZTsKQEAgLTcxNCw2ICs3OTEsOCBAQCB2b2lkIHNldFV0ZjhEYXRh
KElEYXRhT2JqZWN0KiBkYXRhLCBGT1JNCiB2b2lkIHNldENGRGF0YShJRGF0YU9iamVjdCogZGF0
YSwgRk9STUFURVRDKiBmb3JtYXQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkYXRhU3RyaW5ncykK
IHsKICAgICBTVEdNRURJVU0gbWVkaXVtID0gezB9OworICAgIG1lZGl1bS50eW1lZCA9IFRZTUVE
X0hHTE9CQUw7CisKICAgICBTSVpFX1QgZHJvcEZpbGVzU2l6ZSA9IHNpemVvZihEUk9QRklMRVMp
ICsgKHNpemVvZihXQ0hBUikgKiAoZGF0YVN0cmluZ3MuZmlyc3QoKS5sZW5ndGgoKSArIDIpKTsK
ICAgICBtZWRpdW0uaEdsb2JhbCA9IDo6R2xvYmFsQWxsb2MoR0hORCB8IEdNRU1fU0hBUkUsIGRy
b3BGaWxlc1NpemUpOwogICAgIGlmICghbWVkaXVtLmhHbG9iYWwpIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uaAkocmV2
aXNpb24gODY0NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRp
bGl0aWVzV2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDggQEAgRk9STUFURVRDKiBm
aWxlbmFtZUZvcm1hdCgpOwogRk9STUFURVRDKiBodG1sRm9ybWF0KCk7CiBGT1JNQVRFVEMqIGNm
SERyb3BGb3JtYXQoKTsKIEZPUk1BVEVUQyogc21hcnRQYXN0ZUZvcm1hdCgpOworRk9STUFURVRD
KiBmaWxlRGVzY3JpcHRvckZvcm1hdCgpOworRk9STUFURVRDKiBmaWxlQ29udGVudEZvcm1hdFpl
cm8oKTsKIAogdm9pZCBtYXJrdXBUb0NGSFRNTChjb25zdCBTdHJpbmcmIG1hcmt1cCwgY29uc3Qg
U3RyaW5nJiBzcmNVUkwsIFZlY3RvcjxjaGFyPiYgcmVzdWx0KTsKIApAQCAtNzYsNiArNzgsMTAg
QEAgU3RyaW5nIGdldENGSFRNTChjb25zdCBEcmFnRGF0YU1hcCopOwogCiB2b2lkIGdldENsaXBi
b2FyZERhdGEoSURhdGFPYmplY3QqLCBGT1JNQVRFVEMqIGZldGMsIFZlY3RvcjxTdHJpbmc+JiBk
YXRhU3RyaW5ncyk7CiB2b2lkIHNldENsaXBib2FyZERhdGEoSURhdGFPYmplY3QqLCBVSU5UIGZv
cm1hdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRhdGFTdHJpbmdzKTsKK3ZvaWQgZ2V0RmlsZURl
c2NyaXB0b3JEYXRhKElEYXRhT2JqZWN0KiBkYXRhT2JqZWN0LCBpbnQmIHNpemUsIFN0cmluZyYg
cGF0aG5hbWUpOwordm9pZCBnZXRGaWxlQ29udGVudERhdGEoSURhdGFPYmplY3QqIGRhdGFPYmpl
Y3QsIGludCBzaXplLCB2b2lkKiBkYXRhQmxvYik7Cit2b2lkIHNldEZpbGVEZXNjcmlwdG9yRGF0
YShJRGF0YU9iamVjdCogZGF0YU9iamVjdCwgaW50IHNpemUsIFN0cmluZyBwYXRobmFtZSk7Cit2
b2lkIHNldEZpbGVDb250ZW50RGF0YShJRGF0YU9iamVjdCogZGF0YU9iamVjdCwgaW50IHNpemUs
IHZvaWQqIGRhdGFCbG9iKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcAkocmV2aXNpb24gODY0
NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODUsMjAgKzg1LDYgQEAgc3RhdGljIENsaXBib2FyZERhdGFUeXBlIGNs
aXBib2FyZFR5cGVGcgogICAgIHJldHVybiBDbGlwYm9hcmREYXRhVHlwZU5vbmU7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgRk9STUFURVRDKiBmaWxlRGVzY3JpcHRvckZvcm1hdCgpCi17Ci0gICAgc3Rh
dGljIFVJTlQgY2YgPSBSZWdpc3RlckNsaXBib2FyZEZvcm1hdChDRlNUUl9GSUxFREVTQ1JJUFRP
Uik7Ci0gICAgc3RhdGljIEZPUk1BVEVUQyBmaWxlRGVzY3JpcHRvckZvcm1hdCA9IHtjZiwgMCwg
RFZBU1BFQ1RfQ09OVEVOVCwgLTEsIFRZTUVEX0hHTE9CQUx9OwotICAgIHJldHVybiAmZmlsZURl
c2NyaXB0b3JGb3JtYXQ7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRk9STUFURVRDKiBmaWxlQ29udGVu
dEZvcm1hdFplcm8oKQotewotICAgIHN0YXRpYyBVSU5UIGNmID0gUmVnaXN0ZXJDbGlwYm9hcmRG
b3JtYXQoQ0ZTVFJfRklMRUNPTlRFTlRTKTsKLSAgICBzdGF0aWMgRk9STUFURVRDIGZpbGVDb250
ZW50Rm9ybWF0ID0ge2NmLCAwLCBEVkFTUEVDVF9DT05URU5ULCAwLCBUWU1FRF9IR0xPQkFMfTsK
LSAgICByZXR1cm4gJmZpbGVDb250ZW50Rm9ybWF0OwotfQotCiAjaWYgIU9TKFdJTkNFKQogc3Rh
dGljIGlubGluZSB2b2lkIHBhdGhSZW1vdmVCYWRGU0NoYXJhY3RlcnMoUFdTVFIgcHN6LCBzaXpl
X3QgbGVuZ3RoKQogewpAQCAtMjMyLDYgKzIxOCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUds
b2JhbEhEcm9wQ29udGVudCgKICAgICAgICAgRFdPUkQgd3JpdHRlbjsKICAgICAgICAgQk9PTCB0
ZW1wV3JpdGVTdWNjZWVkZWQgPSBXcml0ZUZpbGUodGVtcEZpbGVIYW5kbGUsIGRhdGEtPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpLCAmd3JpdHRlbiwgMCk7CiAgICAgICAgIENsb3NlSGFuZGxlKHRlbXBG
aWxlSGFuZGxlKTsKKyAgICAgICAgT3V0cHV0RGVidWdTdHJpbmcoTCJGSUxFIFdSSVRURU5cbiIp
OwogICAgICAgICBpZiAoIXRlbXBXcml0ZVN1Y2NlZWRlZCkKICAgICAgICAgICAgIHJldHVybiAw
OwogI2VuZGlmCkBAIC03MTQsNyArNzAxLDcgQEAgdm9pZCBDbGlwYm9hcmRXaW46OndyaXRlVVJM
KGNvbnN0IEtVUkwmCiAgICAgQVNTRVJUKHVybC5jb250YWluc09ubHlBU0NJSSgpKTsgLy8gS1VS
TDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKICAgICBTdHJpbmcgZnNQYXRoID0gZmlsZXN5
c3RlbVBhdGhGcm9tVXJsT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCBMIi5VUkwiLCB0cnVlKTsKLSAg
ICBDU3RyaW5nIGNvbnRlbnQgPSBtYWtlU3RyaW5nKCJbSW50ZXJuZXRTaG9ydGN1dF1cclxuVVJM
PSIsIHVybCwgIlxyXG4iKS5hc2NpaSgpOworICAgIENTdHJpbmcgY29udGVudCA9IG1ha2VTdHJp
bmcoIltJbnRlcm5ldFNob3J0Y3V0XVxyXG5VUkw9IiwgdXJsLCAiXHJcbiIpLmxhdGluMSgpOwog
CiAgICAgaWYgKGZzUGF0aC5sZW5ndGgoKSA8PSAwKQogICAgICAgICByZXR1cm47CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAJKHJldmlzaW9uIDg2
NDcyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODYsNiArODYsMTkgQEAgY29uc3QgRHJhZ0RhdGFNYXAmIERyYWdEYXRh
OjpkcmFnRGF0YU1hcAogICAgIHJldHVybiBtX2RyYWdEYXRhTWFwOwogfQogCit2b2lkIERyYWdE
YXRhOjpnZXREcmFnRmlsZURlc2NyaXB0b3JEYXRhKGludCYgc2l6ZSwgU3RyaW5nJiBwYXRobmFt
ZSkKK3sKKyAgICBzaXplID0gMDsKKyAgICBpZiAobV9wbGF0Zm9ybURyYWdEYXRhKQorICAgICAg
ICBnZXRGaWxlRGVzY3JpcHRvckRhdGEobV9wbGF0Zm9ybURyYWdEYXRhLCBzaXplLCBwYXRobmFt
ZSk7Cit9CisKK3ZvaWQgRHJhZ0RhdGE6OmdldERyYWdGaWxlQ29udGVudERhdGEoaW50IHNpemUs
IHZvaWQqIGRhdGFCbG9iKQoreworICAgIGlmIChtX3BsYXRmb3JtRHJhZ0RhdGEpCisgICAgICAg
IGdldEZpbGVDb250ZW50RGF0YShtX3BsYXRmb3JtRHJhZ0RhdGEsIHNpemUsIGRhdGFCbG9iKTsK
K30KKwogU3RyaW5nIERyYWdEYXRhOjphc1VSTChGcmFtZSosIEZpbGVuYW1lQ29udmVyc2lvblBv
bGljeSBmaWxlbmFtZVBvbGljeSwgU3RyaW5nKiB0aXRsZSkgY29uc3QKIHsKICAgICBib29sIHN1
Y2Nlc3M7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjQ3MikKKysrIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDExLTA1LTEzICBF
bnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lPTiAoV0syKTogQ2FuJ3QgZHJhZyBh
bmQgZHJvcCBhIGxpbmsgb3IgaW1hZ2UgZnJvbSBTYWZhcmkgdG8gRGVza3RvcAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA4MTkKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzkzNzA2ODk+CisKKyAgICAgICAgVG8gc3VwcG9ydCBkcmFnLWFuZC1kcm9w
IHRvIHRoZSBkZXNrdG9wIGFuZCBvdGhlciB3aW5kb3dzIGFwcGxpY2F0aW9ucywKKyAgICAgICAg
d2UgbmVlZCB0byBzdXBwb3J0IHRoZSBmaWxlRGVzY3JpcHRvciBhbmQgZmlsZUNvbnRlbnRaZXJv
IGNsaXBib2FyZCBmb3JtYXRzLgorICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIHN1cHBvcnQg
Zm9yIHNlcmlhbGl6aW5nIHRoZXNlIHR5cGVzIGFjcm9zcyB0aGUgcHJvY2VzcyBib3VuZGFyeS4K
KworICAgICAgICAqIFBsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRzLmg6IEFkZGVkIHN1cHBvcnQg
Zm9yIG1lc3NhZ2VzIHdpdGggMTAgYXJndW1lbnRzLgorICAgICAgICAoQ29yZUlQQzo6QXJndW1l
bnRzMTA6OkFyZ3VtZW50czEwKToKKyAgICAgICAgKENvcmVJUEM6OkFyZ3VtZW50czEwOjplbmNv
ZGUpOgorICAgICAgICAoQ29yZUlQQzo6QXJndW1lbnRzMTA6OmRlY29kZSk6CisgICAgICAgIChD
b3JlSVBDOjpJbik6CisgICAgICAgIChDb3JlSVBDOjpPdXQpOgorICAgICAgICAqIFBsYXRmb3Jt
L0NvcmVJUEMvSGFuZGxlTWVzc2FnZS5oOgorICAgICAgICAoQ29yZUlQQzo6Y2FsbE1lbWJlckZ1
bmN0aW9uKTogQWRkZWQgc3VwcG9ydCBmb3IgbWVtZWJlcnMgd2l0aCAxMCBhcmd1bWVudHMuCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c3RhcnREcmFnRHJvcCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93aW4vV2ViRHJhZ0NsaWVudFdpbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyk6CisKIDIwMTEt
MDUtMTMgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBHZW9mZnJleSBHYXJlbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJ
UEMvQXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29y
ZUlQQy9Bcmd1bWVudHMuaAkocmV2aXNpb24gODY0NzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9Db3JlSVBDL0FyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOTUsNyArMzk1LDU4
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW4KIHsKICAgICByZXR1
cm4gQXJndW1lbnRzODxUMSYsIFQyJiwgVDMmLCBUNCYsIFQ1JiwgVDYmLCBUNyYsIFQ4Jj4odDEs
IHQyLCB0MywgdDQsIHQ1LCB0NiwgdDcsIHQ4KTsKIH0KKwordGVtcGxhdGU8dHlwZW5hbWUgVDEs
IHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBl
bmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUg
VDEwPiBzdHJ1Y3QgQXJndW1lbnRzMTAgOiBBcmd1bWVudHM4PFQxLCBUMiwgVDMsIFQ0LCBUNSwg
VDYsIFQ3LCBUOD4geworICAgIHR5cGVkZWYgQXJndW1lbnRzMTA8dHlwZW5hbWUgV1RGOjpSZW1v
dmVDb25zdDx0eXBlbmFtZSBXVEY6OlJlbW92ZVJlZmVyZW5jZTxUMT46OlR5cGU+OjpUeXBlLAor
ICAgIHR5cGVuYW1lIFdURjo6UmVtb3ZlQ29uc3Q8dHlwZW5hbWUgV1RGOjpSZW1vdmVSZWZlcmVu
Y2U8VDI+OjpUeXBlPjo6VHlwZSwKKyAgICB0eXBlbmFtZSBXVEY6OlJlbW92ZUNvbnN0PHR5cGVu
YW1lIFdURjo6UmVtb3ZlUmVmZXJlbmNlPFQzPjo6VHlwZT46OlR5cGUsCisgICAgdHlwZW5hbWUg
V1RGOjpSZW1vdmVDb25zdDx0eXBlbmFtZSBXVEY6OlJlbW92ZVJlZmVyZW5jZTxUND46OlR5cGU+
OjpUeXBlLAorICAgIHR5cGVuYW1lIFdURjo6UmVtb3ZlQ29uc3Q8dHlwZW5hbWUgV1RGOjpSZW1v
dmVSZWZlcmVuY2U8VDU+OjpUeXBlPjo6VHlwZSwKKyAgICB0eXBlbmFtZSBXVEY6OlJlbW92ZUNv
bnN0PHR5cGVuYW1lIFdURjo6UmVtb3ZlUmVmZXJlbmNlPFQ2Pjo6VHlwZT46OlR5cGUsCisgICAg
dHlwZW5hbWUgV1RGOjpSZW1vdmVDb25zdDx0eXBlbmFtZSBXVEY6OlJlbW92ZVJlZmVyZW5jZTxU
Nz46OlR5cGU+OjpUeXBlLAorICAgIHR5cGVuYW1lIFdURjo6UmVtb3ZlQ29uc3Q8dHlwZW5hbWUg
V1RGOjpSZW1vdmVSZWZlcmVuY2U8VDg+OjpUeXBlPjo6VHlwZSwKKyAgICB0eXBlbmFtZSBXVEY6
OlJlbW92ZUNvbnN0PHR5cGVuYW1lIFdURjo6UmVtb3ZlUmVmZXJlbmNlPFQ5Pjo6VHlwZT46OlR5
cGUsCisgICAgdHlwZW5hbWUgV1RGOjpSZW1vdmVDb25zdDx0eXBlbmFtZSBXVEY6OlJlbW92ZVJl
ZmVyZW5jZTxUMTA+OjpUeXBlPjo6VHlwZT4gVmFsdWVUeXBlOworCisgICAgQXJndW1lbnRzMTAo
KSB7IH0KICAgICAKKyAgICBBcmd1bWVudHMxMChUMSB0MSwgVDIgdDIsIFQzIHQzLCBUNCB0NCwg
VDUgdDUsIFQ2IHQ2LCBUNyB0NywgVDggdDgsIFQ5IHQ5LCBUMTAgdDEwKQorICAgICAgICA6IEFy
Z3VtZW50czg8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4Pih0MSwgdDIsIHQzLCB0NCwg
dDUsIHQ2LCB0NywgdDgpCisgICAgICAgICwgYXJndW1lbnQ5KHQ5KQorICAgICAgICAsIGFyZ3Vt
ZW50MTAodDEwKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGVuY29kZShBcmd1bWVudEVuY29k
ZXIqIGVuY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBBcmd1bWVudHM4PFQxLCBUMiwgVDMs
IFQ0LCBUNSwgVDYsIFQ3LCBUOD46OmVuY29kZShlbmNvZGVyKTsKKyAgICAgICAgZW5jb2Rlci0+
ZW5jb2RlKGFyZ3VtZW50OSk7CisgICAgICAgIGVuY29kZXItPmVuY29kZShhcmd1bWVudDEwKTsK
KyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVy
LCBBcmd1bWVudHMxMCYgcmVzdWx0KQorICAgIHsKKyAgICAgICAgaWYgKCFBcmd1bWVudHM4PFQx
LCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD46OmRlY29kZShkZWNvZGVyLCByZXN1bHQpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGRlY29kZXItPmRlY29kZShyZXN1
bHQuYXJndW1lbnQ5KTsKKyAgICAgICAgcmV0dXJuIGRlY29kZXItPmRlY29kZShyZXN1bHQuYXJn
dW1lbnQxMCk7CisgICAgfQorCisgICAgVDkgYXJndW1lbnQ5OworICAgIFQxMCBhcmd1bWVudDEw
OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywg
dHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVu
YW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwPiBBcmd1bWVudHMxMDxjb25zdCBUMSYs
IGNvbnN0IFQyJiwgY29uc3QgVDMmLCBjb25zdCBUNCYsIGNvbnN0IFQ1JiwgY29uc3QgVDYmLCBj
b25zdCBUNyYsIGNvbnN0IFQ4JiwgY29uc3QgVDkmLCBjb25zdCBUMTAmPiBJbihjb25zdCBUMSYg
dDEsIGNvbnN0IFQyJiB0MiwgY29uc3QgVDMgJnQzLCBjb25zdCBUNCYgdDQsIGNvbnN0IFQ1JiB0
NSwgY29uc3QgVDYmIHQ2LCBjb25zdCBUNyYgdDcsIGNvbnN0IFQ4JiB0OCwgY29uc3QgVDkmIHQ5
LCBjb25zdCBUMTAmIHQxMCkKK3sKKyAgICByZXR1cm4gQXJndW1lbnRzMTA8Y29uc3QgVDEmLCBj
b25zdCBUMiYsIGNvbnN0IFQzJiwgY29uc3QgVDQmLCBjb25zdCBUNSYsIGNvbnN0IFQ2JiwgY29u
c3QgVDcmLCBjb25zdCBUOCYsIGNvbnN0IFQ5JiwgY29uc3QgVDEwJj4odDEsIHQyLCB0MywgdDQs
IHQ1LCB0NiwgdDcsIHQ4LCB0OSwgdDEwKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5
cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFt
ZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEw
PiBBcmd1bWVudHMxMDxUMSYsIFQyJiwgVDMmLCBUNCYsIFQ1JiwgVDYmLCBUNyYsIFQ4JiwgVDkm
LCBUMTAmPiBPdXQoVDEmIHQxLCBUMiYgdDIsIFQzJiB0MywgVDQmIHQ0LCBUNSYgdDUsIFQ2JiB0
NiwgVDcmIHQ3LCBUOCYgdDgsIFQ5JiB0OSwgVDEwJiB0MTApCit7CisgICAgcmV0dXJuIEFyZ3Vt
ZW50czEwPFQxJiwgVDImLCBUMyYsIFQ0JiwgVDUmLCBUNiYsIFQ3JiwgVDgmLCBUOSYsIFQxMCY+
KHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3LCB0OCwgdDksIHQxMCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIENvcmVJUEMKIAogI2VuZGlmIC8vIEFyZ3VtZW50c19oCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hhbmRsZU1lc3NhZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hhbmRsZU1lc3NhZ2UuaAkocmV2aXNpb24gODY0
NzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0hhbmRsZU1lc3NhZ2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsMTIgQEAgdm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24o
Y29uc3QgQXJndW1lbnRzNwogICAgIChvYmplY3QtPipmdW5jdGlvbikoYXJncy5hcmd1bWVudDEs
IGFyZ3MuYXJndW1lbnQyLCBhcmdzLmFyZ3VtZW50MywgYXJncy5hcmd1bWVudDQsIGFyZ3MuYXJn
dW1lbnQ1LCBhcmdzLmFyZ3VtZW50NiwgYXJncy5hcmd1bWVudDcpOwogfQogCit0ZW1wbGF0ZTx0
eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFt
ZSBQMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBQNiwgdHlwZW5hbWUgUDcs
IHR5cGVuYW1lIFA4LCB0eXBlbmFtZSBQOSwgdHlwZW5hbWUgUDEwPgordm9pZCBjYWxsTWVtYmVy
RnVuY3Rpb24oY29uc3QgQXJndW1lbnRzMTA8UDEsIFAyLCBQMywgUDQsIFA1LCBQNiwgUDcsIFA4
LCBQOSwgUDEwPiYgYXJncywgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKK3sKKyAgICAob2JqZWN0
LT4qZnVuY3Rpb24pKGFyZ3MuYXJndW1lbnQxLCBhcmdzLmFyZ3VtZW50MiwgYXJncy5hcmd1bWVu
dDMsIGFyZ3MuYXJndW1lbnQ0LCBhcmdzLmFyZ3VtZW50NSwgYXJncy5hcmd1bWVudDYsIGFyZ3Mu
YXJndW1lbnQ3LCBhcmdzLmFyZ3VtZW50OCwgYXJncy5hcmd1bWVudDksIGFyZ3MuYXJndW1lbnQx
MCk7Cit9CisKIC8vIERpc3BhdGNoIGZ1bmN0aW9ucyB3aXRoIHJlcGx5IGFyZ3VtZW50cy4KIAog
dGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUY+CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gODY0NzIpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiAr
NzAsOSBAQAogI2luY2x1ZGUgIldlYlByb3RlY3Rpb25TcGFjZS5oIgogI2luY2x1ZGUgIldlYlNl
Y3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiV2ViVVJMUmVxdWVzdC5oIgorI2lmIFBMQVRGT1JN
KFdJTikKKyNpbmNsdWRlIDxXZWJDb3JlL0NsaXBib2FyZFV0aWxpdGllc1dpbi5oPgorI2VuZGlm
CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRS
ZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0RpcmVjdGlvbi5oPgpAQCAtNzc5LDEyICs3
ODIsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EcmFnQ29udHJvbAogCiAjaWYg
UExBVEZPUk0oV0lOKQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnREcmFnRHJvcChjb25zdCBJ
bnRQb2ludCYgaW1hZ2VPcmlnaW4sIGNvbnN0IEludFBvaW50JiBkcmFnUG9pbnQsIHVpbnQ2NF90
IG9rRWZmZWN0LCAKLSAgICBjb25zdCBIYXNoTWFwPFVJTlQsIFZlY3RvcjxTdHJpbmc+ID4mIGRh
dGFNYXAsIGNvbnN0IEludFNpemUmIGRyYWdJbWFnZVNpemUsIGNvbnN0IFNoYXJlZE1lbW9yeTo6
SGFuZGxlJiBkcmFnSW1hZ2VIYW5kbGUsIGJvb2wgaXNMaW5rRHJhZykKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpzdGFydERyYWdEcm9wKGNvbnN0IEludFBvaW50JiBpbWFnZU9yaWdpbiwgY29uc3QgSW50
UG9pbnQmIGRyYWdQb2ludCwgdWludDY0X3Qgb2tFZmZlY3QsIGNvbnN0IEhhc2hNYXA8VUlOVCwg
VmVjdG9yPFN0cmluZz4gPiYgZGF0YU1hcCwgdWludDY0X3QgZmlsZVNpemUsIGNvbnN0IFN0cmlu
ZyYgcGF0aG5hbWUsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBmaWxlQ29udGVudEhhbmRs
ZSwgY29uc3QgSW50U2l6ZSYgZHJhZ0ltYWdlU2l6ZSwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5k
bGUmIGRyYWdJbWFnZUhhbmRsZSwgYm9vbCBpc0xpbmtEcmFnKQogewogICAgIENPTVB0cjxXQ0Rh
dGFPYmplY3Q+IGRhdGFPYmplY3Q7CiAgICAgV0NEYXRhT2JqZWN0OjpjcmVhdGVJbnN0YW5jZSgm
ZGF0YU9iamVjdCwgZGF0YU1hcCk7Ci0KKyAgICBpZiAoZmlsZVNpemUpIHsKKyAgICAgICAgUmVm
UHRyPFNoYXJlZE1lbW9yeT4gZmlsZUNvbnRlbnRCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNyZWF0
ZShmaWxlQ29udGVudEhhbmRsZSwgU2hhcmVkTWVtb3J5OjpSZWFkT25seSk7CisgICAgICAgIHNl
dEZpbGVEZXNjcmlwdG9yRGF0YShkYXRhT2JqZWN0LmdldCgpLCBmaWxlU2l6ZSwgcGF0aG5hbWUp
OworICAgICAgICBzZXRGaWxlQ29udGVudERhdGEoZGF0YU9iamVjdC5nZXQoKSwgZmlsZVNpemUs
IGZpbGVDb250ZW50QnVmZmVyLT5kYXRhKCkpOworICAgIH0KICAgICBSZWZQdHI8U2hhcmVkTWVt
b3J5PiBtZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmNyZWF0ZShkcmFnSW1hZ2VIYW5kbGUs
IFNoYXJlZE1lbW9yeTo6UmVhZE9ubHkpOwogICAgIGlmICghbWVtb3J5QnVmZmVyKQogICAgICAg
ICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShy
ZXZpc2lvbiA4NjQ3MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtNDI3LDcgKzQyNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dERyYWdJbWFnZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBkcmFnSW1hZ2VIYW5kbGUsIGJvb2wgaXNMaW5rRHJh
Zyk7CiAjZW5kaWYKICNpZiBQTEFURk9STShXSU4pCi0gICAgdm9pZCBzdGFydERyYWdEcm9wKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBpbWFnZVBvaW50LCBjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgZHJhZ1BvaW50LCB1aW50NjRfdCBva0VmZmVjdCwgY29uc3QgSGFzaE1hcDxVSU5ULCBWZWN0
b3I8U3RyaW5nPiA+JiBkYXRhTWFwLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBkcmFnSW1hZ2VT
aXplLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgZHJhZ0ltYWdlSGFuZGxlLCBib29sIGlz
TGlua0RyYWcpOworICAgIHZvaWQgc3RhcnREcmFnRHJvcChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgaW1hZ2VQb2ludCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRyYWdQb2ludCwgdWludDY0
X3Qgb2tFZmZlY3QsIGNvbnN0IEhhc2hNYXA8VUlOVCwgVmVjdG9yPFN0cmluZz4gPiYgZGF0YU1h
cCwgdWludDY0X3QgZmlsZVNpemUsIGNvbnN0IFN0cmluZyYgcGF0aG5hbWUsIGNvbnN0IFNoYXJl
ZE1lbW9yeTo6SGFuZGxlJiBmaWxlQ29udGVudEhhbmRsZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgZHJhZ0ltYWdlU2l6ZSwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGRyYWdJbWFnZUhh
bmRsZSwgYm9vbCBpc0xpbmtEcmFnKTsKICNlbmRpZgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJn
dW1lbnREZWNvZGVyKik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoQ29yZUlQQzo6
Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
KiwgQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDg2NDcyKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29y
a2luZyBjb3B5KQpAQCAtMjA0LDcgKzIwNCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7
CiAgICAgU2V0RHJhZ0ltYWdlKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGRyYWdJbWFnZSwgYm9vbCBsaW5rRHJhZykKICNl
bmRpZgogI2lmIFBMQVRGT1JNKFdJTikKLSAgICBTdGFydERyYWdEcm9wKFdlYkNvcmU6OkludFBv
aW50IGltYWdlUG9pbnQsIFdlYkNvcmU6OkludFBvaW50IGRyYWdQb2ludCwgdWludDY0X3Qgb2tF
ZmZlY3QsIEhhc2hNYXA8VUlOVCxWZWN0b3I8U3RyaW5nPiA+IGRhdGFNYXAsIFdlYkNvcmU6Oklu
dFNpemUgZHJhZ0ltYWdlU2l6ZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBkcmFnSW1h
Z2UsIGJvb2wgbGlua0RyYWcpCisgICAgU3RhcnREcmFnRHJvcChXZWJDb3JlOjpJbnRQb2ludCBp
bWFnZVBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCBkcmFnUG9pbnQsIHVpbnQ2NF90IG9rRWZmZWN0
LCBIYXNoTWFwPFVJTlQsVmVjdG9yPFN0cmluZz4gPiBkYXRhTWFwLCB1aW50NjRfdCBmaWxlU2l6
ZSwgU3RyaW5nIHBhdGhuYW1lLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGZpbGVDb250
ZW50SGFuZGxlLCBXZWJDb3JlOjpJbnRTaXplIGRyYWdJbWFnZVNpemUsIFdlYktpdDo6U2hhcmVk
TWVtb3J5OjpIYW5kbGUgZHJhZ0ltYWdlLCBib29sIGxpbmtEcmFnKQogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShNQUMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L3dpbi9XZWJEcmFnQ2xpZW50V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJEcmFnQ2xpZW50V2luLmNwcAkocmV2
aXNpb24gODY0NzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L3dpbi9XZWJEcmFnQ2xpZW50V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNyArODMsMTcg
QEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0ltYWdlUgogICAgICAgICByZXR1
cm47CiAgICAgRFdPUkQgb2tFZmZlY3QgPSBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tUb0Ry
YWdDdXJzb3JzKG1fcGFnZS0+Y29yZVBhZ2UoKS0+ZHJhZ0NvbnRyb2xsZXIoKS0+c291cmNlRHJh
Z09wZXJhdGlvbigpKTsKICAgICBEcmFnRGF0YSBkcmFnRGF0YShkYXRhT2JqZWN0LmdldCgpLCBJ
bnRQb2ludCgpLCBJbnRQb2ludCgpLCBEcmFnT3BlcmF0aW9uTm9uZSk7Ci0gICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0YXJ0RHJhZ0Ryb3AoaW1hZ2VPcmlnaW4sIGRy
YWdQb2ludCwgb2tFZmZlY3QsIGRyYWdEYXRhLmRyYWdEYXRhTWFwKCksIEludFNpemUoYml0bWFw
SW5mby5ibWlIZWFkZXIuYmlXaWR0aCwgYml0bWFwSW5mby5ibWlIZWFkZXIuYmlIZWlnaHQpLCBo
YW5kbGUsIGlzTGluayksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIGludCBmaWxlU2l6ZTsKKyAg
ICBTdHJpbmcgcGF0aG5hbWU7CisgICAgZHJhZ0RhdGEuZ2V0RHJhZ0ZpbGVEZXNjcmlwdG9yRGF0
YShmaWxlU2l6ZSwgcGF0aG5hbWUpOworICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGZpbGVDb250
ZW50QnVmZmVyOworICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGZpbGVDb250ZW50SGFuZGxlOwor
ICAgIGlmIChmaWxlU2l6ZSkgeworICAgICAgICBmaWxlQ29udGVudEJ1ZmZlciA9IFNoYXJlZE1l
bW9yeTo6Y3JlYXRlKGZpbGVTaXplKTsKKyAgICAgICAgZHJhZ0RhdGEuZ2V0RHJhZ0ZpbGVDb250
ZW50RGF0YShmaWxlU2l6ZSwgZmlsZUNvbnRlbnRCdWZmZXItPmRhdGEoKSk7CisgICAgICAgIGZp
bGVDb250ZW50QnVmZmVyLT5jcmVhdGVIYW5kbGUoZmlsZUNvbnRlbnRIYW5kbGUsIFNoYXJlZE1l
bW9yeTo6UmVhZE9ubHkpOworICAgIH0KKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U3RhcnREcmFnRHJvcChpbWFnZU9yaWdpbiwgZHJhZ1BvaW50LCBva0VmZmVjdCwg
ZHJhZ0RhdGEuZHJhZ0RhdGFNYXAoKSwgKHVpbnQ2NF90KWZpbGVTaXplLCBwYXRobmFtZSwgZmls
ZUNvbnRlbnRIYW5kbGUsIEludFNpemUoYml0bWFwSW5mby5ibWlIZWFkZXIuYmlXaWR0aCwgYml0
bWFwSW5mby5ibWlIZWFkZXIuYmlIZWlnaHQpLCBoYW5kbGUsIGlzTGluayksIG1fcGFnZS0+cGFn
ZUlEKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>
<flag name="review"
          id="86708"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>