<?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>119360</bug_id>
          
          <creation_ts>2013-07-31 17:25:50 -0700</creation_ts>
          <short_desc>Update HTMLPreloadScanner to handle img srcset</short_desc>
          <delta_ts>2013-08-05 18:13:10 -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>Images</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>110252</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yoav</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>913559</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-07-31 17:25:50 -0700</bug_when>
    <thetext>Once img srcset lands (110252), the preload scanner should load the value from srcset rather than src (if present). Also, HTMLDocumentParser will have to be aware of the page scale in order to tell the preloader.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913561</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-07-31 17:26:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/14613238&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913967</commentid>
    <comment_count>2</comment_count>
      <attachid>207975</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-08-01 19:17:52 -0700</bug_when>
    <thetext>Created attachment 207975
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913991</commentid>
    <comment_count>3</comment_count>
      <attachid>207975</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-08-01 20:32:29 -0700</bug_when>
    <thetext>Comment on attachment 207975
Patch

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

&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:568
&gt; +            m_preloadScanner = adoptPtr(new HTMLPreloadScanner(m_options, document()-&gt;url(), document()-&gt;page() ? document()-&gt;page()-&gt;deviceScaleFactor() : 1));

Seems like we need a helper function for this somewhere. There are so many places where we do this scale factor computation!

&gt; Source/WebCore/html/parser/HTMLPreloadScanner.cpp:177
&gt; +                if (srcMatchingScale != WTF::nullAtom)

This is not the right way to check if a string is null. Instead it should be !srcMatchingScale.isNull().

&gt; Source/WebCore/html/parser/HTMLPreloadScanner.cpp:201
&gt; +        // FIXME: This parser is suboptimal and should be shared
&gt; +        // with HTMLImageElement.
&gt; +        // https://bugs.webkit.org/show_bug.cgi?id=119423

Suboptimal is not a big deal. Sharing with HTMLImageElement, though, is. Why isn&apos;t it shared in this patch!? Given the role of the preload scanner, I would suggest we export the function in HTMLImageElement.h and have it be there and use it here. It’s kind of “pre-doing” what the image element will do later.

&gt; Source/WebCore/html/parser/HTMLPreloadScanner.cpp:227
&gt; +        return WTF::nullAtom;

Should just return String() to create a null string. No reason to use nullAtom.

&gt; Source/WebCore/html/parser/HTMLPreloadScanner.cpp:252
&gt; +        if (attributeValue.isEmpty())
&gt; +            return;

Don&apos;t we want to strip leading and trailing HTML spaces before checking if it&apos;s empty?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914362</commentid>
    <comment_count>4</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-08-03 04:00:27 -0700</bug_when>
    <thetext>*** Bug 119464 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914368</commentid>
    <comment_count>5</comment_count>
      <attachid>208062</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-08-03 05:34:41 -0700</bug_when>
    <thetext>Created attachment 208062
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914370</commentid>
    <comment_count>6</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-08-03 05:37:15 -0700</bug_when>
    <thetext>New patch. It&apos;s different enough that I don&apos;t think Darin&apos;s r+ should carry over.

I&apos;ve updated for Darin&apos;s comments, in particular that the parser is now shared via static methods on HTMLImageElement.

By coincidence  Yoav Weiss was doing similar work in a duplicate Bug 119464, so I&apos;ve merged the patches and attributed Yoav.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914494</commentid>
    <comment_count>7</comment_count>
      <attachid>208062</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-08-04 18:18:24 -0700</bug_when>
    <thetext>Comment on attachment 208062
Patch

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

&gt; Source/WebCore/html/HTMLImageElement.cpp:131
&gt; +    for (size_t i = 1; i &lt; imageCandidates.size(); ++i) {
&gt; +        if (imageCandidates[i-1].scaleFactor == imageCandidates[i].scaleFactor) {
&gt; +            imageCandidates.remove(i);
&gt;              i--;
&gt;          }
&gt;      }

Is this removal really needed if we are just going to pick the first one below?  If it is, please either add a comment, or move into its own function with a clear name.

&gt; Source/WebCore/html/HTMLImageElement.cpp:142
&gt; +    const String&amp; src =  attributeValue.simplifyWhiteSpace(isHTMLSpace);

I don&apos;t think using a const String&amp; gets you anything here, but I might be wrong.

&gt; Source/WebCore/html/parser/HTMLPreloadScanner.cpp:176
&gt;              if (match(attributeName, srcAttr))
&gt;                  setUrlToLoad(attributeValue);
&gt; +            else if (match(attributeName, srcsetAttr)) {

Since we process all attributes in a loop (see TokenPreloadScanner::StartTagScanner::processAttributes()), could we make this more like the normal case and process srcAttr and srcsetAttr all at once?  This is not a hard block, but I think it would be nice if the logic could be the same.

&gt; Source/WebCore/html/parser/HTMLPreloadScanner.cpp:179
&gt; +                String srcMatchingScale = HTMLImageElement::bestFitImageSource(m_deviceScaleFactor, m_urlToLoad, attributeValue);
&gt; +                if (!srcMatchingScale.isEmpty())
&gt; +                    setUrlToLoad(srcMatchingScale, true);

Seems like this doesn&apos;t really need to check !isEmpty(), as that will be done in setUrlToLoad, but it doesn&apos;t really hurt that much either.  Also, perhaps bestFitImageSource should go in either its own file or something like HTMLParserIdioms

&gt; Source/WebCore/html/parser/HTMLPreloadScanner.cpp:221
&gt; +        String url = stripLeadingAndTrailingHTMLSpaces(value);
&gt; +        if (url.isEmpty())
&gt; +            return;

This does an allocation, so it should move below the early return below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914735</commentid>
    <comment_count>8</comment_count>
      <attachid>208062</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-08-05 17:01:10 -0700</bug_when>
    <thetext>Comment on attachment 208062
Patch

Thanks! I made all the requested changes. Code is now in HTMLParserIdioms, and we only process the attributes once in the preloader.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914752</commentid>
    <comment_count>9</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-08-05 18:13:10 -0700</bug_when>
    <thetext>Committed r153733: &lt;http://trac.webkit.org/changeset/153733&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207975</attachid>
            <date>2013-08-01 19:17:52 -0700</date>
            <delta_ts>2013-08-03 05:34:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-119360-20130802121751.patch</filename>
            <type>text/plain</type>
            <size>12098</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUzNjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzhjNjYwZThiNGNmYmY2
YzNiM2EzZGFmMTNkNjJiOWQ0NzExMTMxNi4uYTIwZWM5ZTE1NmRkOTZkMzRmY2ExZGFjOGM0NGJk
NjZhN2I1NjZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEzLTA4LTAxICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGUgSFRNTFByZWxvYWRT
Y2FubmVyIHRvIGhhbmRsZSBpbWcgc3Jjc2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTkzNjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L3ByZWxvYWRlci9pbWFnZS1zcmNzZXQuaHRt
bAorCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcik6IFBhc3MgcGFn
ZSBzY2FsZSBpbnRvIHByZWxvYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBh
cnNlcjo6aW5zZXJ0KTogRGl0dG8uCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRT
Y2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0
VGFnU2Nhbm5lcjo6U3RhcnRUYWdTY2FubmVyKTogVGFrZXMgcGFnZVNjYWxlIGFzIGEgcGFyYW1l
dGVyLgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRUYWdTY2Fu
bmVyOjpwcm9jZXNzQXR0cmlidXRlKTogQWRkIHN1cHBvcnQgZm9yIHNyY3NldCBhdHRyaWJ1dGUu
IElmCisgICAgICAgIHdlIGNvdWxkIGZpbmQgYSBtYXRjaCB0aGVuIG92ZXJ3cml0ZSBhbnkgY3Vy
cmVudCB1cmwgZm9yIHByZWxvYWRpbmcuCisgICAgICAgIChXZWJDb3JlOjpUb2tlblByZWxvYWRT
Y2FubmVyOjpTdGFydFRhZ1NjYW5uZXI6OmZpbmRTcmNGcm9tU2V0TWF0Y2hpbmdTY2FsZSk6IER1
cGxpY2F0ZSB0aGUKKyAgICAgICAgcGFyc2VyIGZvciBzcmMgc2V0LiBJbiB0aGlzIGNhc2UgdGhv
dWdoIHdlIGp1c3QgbG9vayBmb3IgYSBtYXRjaCBhbmQgYXZvaWQgc29ydGluZywgbWVyZ2luZwor
ICAgICAgICB3aXRoIHNyYywgYW5kIHNvIG9uLgorICAgICAgICAoV2ViQ29yZTo6VG9rZW5QcmVs
b2FkU2Nhbm5lcjo6U3RhcnRUYWdTY2FubmVyOjpzZXRVcmxUb0xvYWQpOiBOZXcgZmxhZyB0byBp
bmRpY2F0ZSBpZiB3ZSBzaG91bGQKKyAgICAgICAgcmVwbGFjZSBhbnkgZXhpc3RpbmcgdmFsdWUu
CisgICAgICAgIChXZWJDb3JlOjpUb2tlblByZWxvYWRTY2FubmVyOjpUb2tlblByZWxvYWRTY2Fu
bmVyKTogVGFrZXMgcGFnZSBzY2FsZS4KKyAgICAgICAgKFdlYkNvcmU6OlRva2VuUHJlbG9hZFNj
YW5uZXI6OnNjYW5Db21tb24pOiBQYXNzIHBhZ2Ugc2NhbGUuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MUHJlbG9hZFNjYW5uZXI6OkhUTUxQcmVsb2FkU2Nhbm5lcik6CisgICAgICAgICogaHRtbC9w
YXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmg6IE5ldyBtZW1iZXIgdmFyaWFibGUgZm9yIHBhZ2Ug
c2NhbGUuCisKIDIwMTMtMDgtMDEgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dpbmRvd3NdIFdlYktpdDEgRnVsbHNjcmVlbiBWaWRlbyBQbGF5IGlzIEJy
b2tlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNl
ci5jcHAKaW5kZXggN2FiNTYzNzU4MThjNzMyZDRlZDFiYTI0NzJjNTgwZTk4NDM4NDUyZC4uMWQ0
MjJmM2ViMjhjNTgyOTYwMmVjOGNmNGNlMzUyODJjNTAzOTRjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC01NjUsNyArNTY1
LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIoU3luY2hyb25vdXNN
b2RlIG1vZGUpCiAgICAgaWYgKGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkgewogICAgICAgICBBU1NF
UlQobV90b2tlbml6ZXItPnN0YXRlKCkgPT0gSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlKTsKICAg
ICAgICAgaWYgKCFtX3ByZWxvYWRTY2FubmVyKSB7Ci0gICAgICAgICAgICBtX3ByZWxvYWRTY2Fu
bmVyID0gYWRvcHRQdHIobmV3IEhUTUxQcmVsb2FkU2Nhbm5lcihtX29wdGlvbnMsIGRvY3VtZW50
KCktPnVybCgpKSk7CisgICAgICAgICAgICBtX3ByZWxvYWRTY2FubmVyID0gYWRvcHRQdHIobmV3
IEhUTUxQcmVsb2FkU2Nhbm5lcihtX29wdGlvbnMsIGRvY3VtZW50KCktPnVybCgpLCBkb2N1bWVu
dCgpLT5wYWdlKCkgPyBkb2N1bWVudCgpLT5wYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCkgOiAx
KSk7CiAgICAgICAgICAgICBtX3ByZWxvYWRTY2FubmVyLT5hcHBlbmRUb0VuZChtX2lucHV0LmN1
cnJlbnQoKSk7CiAgICAgICAgIH0KICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lci0+c2NhbihtX3By
ZWxvYWRlci5nZXQoKSwgZG9jdW1lbnQoKS0+YmFzZUVsZW1lbnRVUkwoKSk7CkBAIC02NDYsNyAr
NjQ2LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6Omluc2VydChjb25zdCBTZWdtZW50ZWRT
dHJpbmcmIHNvdXJjZSkKICAgICAgICAgLy8gQ2hlY2sgdGhlIGRvY3VtZW50LndyaXRlKCkgb3V0
cHV0IHdpdGggYSBzZXBhcmF0ZSBwcmVsb2FkIHNjYW5uZXIgYXMKICAgICAgICAgLy8gdGhlIG1h
aW4gc2Nhbm5lciBjYW4ndCBkZWFsIHdpdGggaW5zZXJ0aW9ucy4KICAgICAgICAgaWYgKCFtX2lu
c2VydGlvblByZWxvYWRTY2FubmVyKQotICAgICAgICAgICAgbV9pbnNlcnRpb25QcmVsb2FkU2Nh
bm5lciA9IGFkb3B0UHRyKG5ldyBIVE1MUHJlbG9hZFNjYW5uZXIobV9vcHRpb25zLCBkb2N1bWVu
dCgpLT51cmwoKSkpOworICAgICAgICAgICAgbV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5lciA9IGFk
b3B0UHRyKG5ldyBIVE1MUHJlbG9hZFNjYW5uZXIobV9vcHRpb25zLCBkb2N1bWVudCgpLT51cmwo
KSwgZG9jdW1lbnQoKS0+cGFnZSgpID8gZG9jdW1lbnQoKS0+cGFnZSgpLT5kZXZpY2VTY2FsZUZh
Y3RvcigpIDogMSkpOwogICAgICAgICBtX2luc2VydGlvblByZWxvYWRTY2FubmVyLT5hcHBlbmRU
b0VuZChzb3VyY2UpOwogICAgICAgICBtX2luc2VydGlvblByZWxvYWRTY2FubmVyLT5zY2FuKG1f
cHJlbG9hZGVyLmdldCgpLCBkb2N1bWVudCgpLT5iYXNlRWxlbWVudFVSTCgpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApp
bmRleCA5ZGFmNzQzOGE1NTA2MTI5ZDgxYmQwMzg3OGIyZTdjZGRlYTlkMThhLi43MzJjOTdmZGEx
ZDk3ZDkxZTBmNjA5NmE0ZjNlZjVjYTk4MGRhZmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTEwNywxMSArMTA3LDEyIEBA
IFN0cmluZyBUb2tlblByZWxvYWRTY2FubmVyOjppbml0aWF0b3JGb3IoVGFnSWQgdGFnSWQpCiAK
IGNsYXNzIFRva2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0VGFnU2Nhbm5lciB7CiBwdWJsaWM6Ci0g
ICAgZXhwbGljaXQgU3RhcnRUYWdTY2FubmVyKFRhZ0lkIHRhZ0lkKQorICAgIGV4cGxpY2l0IFN0
YXJ0VGFnU2Nhbm5lcihUYWdJZCB0YWdJZCwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yID0gMS4wKQog
ICAgICAgICA6IG1fdGFnSWQodGFnSWQpCiAgICAgICAgICwgbV9saW5rSXNTdHlsZVNoZWV0KGZh
bHNlKQogICAgICAgICAsIG1fbGlua01lZGlhQXR0cmlidXRlSXNTY3JlZW4odHJ1ZSkKICAgICAg
ICAgLCBtX2lucHV0SXNJbWFnZShmYWxzZSkKKyAgICAgICAgLCBtX3BhZ2VTY2FsZUZhY3Rvcihw
YWdlU2NhbGVGYWN0b3IpCiAgICAgewogICAgIH0KIApAQCAtMTcxLDYgKzE3MiwxMSBAQCBwcml2
YXRlOgogICAgICAgICBpZiAobV90YWdJZCA9PSBTY3JpcHRUYWdJZCB8fCBtX3RhZ0lkID09IElt
Z1RhZ0lkKSB7CiAgICAgICAgICAgICBpZiAobWF0Y2goYXR0cmlidXRlTmFtZSwgc3JjQXR0cikp
CiAgICAgICAgICAgICAgICAgc2V0VXJsVG9Mb2FkKGF0dHJpYnV0ZVZhbHVlKTsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKG1hdGNoKGF0dHJpYnV0ZU5hbWUsIHNyY3NldEF0dHIpKSB7CisgICAgICAg
ICAgICAgICAgU3RyaW5nIHNyY01hdGNoaW5nU2NhbGUgPSBmaW5kU3JjRnJvbVNldE1hdGNoaW5n
U2NhbGUoYXR0cmlidXRlVmFsdWUpOworICAgICAgICAgICAgICAgIGlmIChzcmNNYXRjaGluZ1Nj
YWxlICE9IFdURjo6bnVsbEF0b20pCisgICAgICAgICAgICAgICAgICAgIHNldFVybFRvTG9hZChz
cmNNYXRjaGluZ1NjYWxlLCB0cnVlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2Ug
aWYgKG1hdGNoKGF0dHJpYnV0ZU5hbWUsIGNyb3Nzb3JpZ2luQXR0cikgJiYgIWF0dHJpYnV0ZVZh
bHVlLmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIG1fY3Jvc3NPcmlnaW5Nb2RlID0gc3RyaXBM
ZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZVZhbHVlKTsKICAgICAgICAgfSBl
bHNlIGlmIChtX3RhZ0lkID09IExpbmtUYWdJZCkgewpAQCAtMTg4LDYgKzE5NCwzOSBAQCBwcml2
YXRlOgogICAgICAgICB9CiAgICAgfQogCisgICAgU3RyaW5nIGZpbmRTcmNGcm9tU2V0TWF0Y2hp
bmdTY2FsZShjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKQorICAgIHsKKyAgICAgICAgLy8g
RklYTUU6IFRoaXMgcGFyc2VyIGlzIHN1Ym9wdGltYWwgYW5kIHNob3VsZCBiZSBzaGFyZWQKKyAg
ICAgICAgLy8gd2l0aCBIVE1MSW1hZ2VFbGVtZW50LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE5NDIzCisgICAgICAgIGNvbnN0IFN0cmluZyYg
c3JjU2V0QXR0cmlidXRlU3RyaW5nID0gYXR0cmlidXRlVmFsdWUuc2ltcGxpZnlXaGl0ZVNwYWNl
KGlzSFRNTFNwYWNlKTsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gc3JjU2V0VG9rZW5zOworCisg
ICAgICAgIHNyY1NldEF0dHJpYnV0ZVN0cmluZy5zcGxpdCgnLCcsIHNyY1NldFRva2Vucyk7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3JjU2V0VG9rZW5zLnNpemUoKTsgKytpKSB7
CisgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBkYXRhOworICAgICAgICAgICAgZmxvYXQgaW1n
U2NhbGVGYWN0b3IgPSAxLjA7CisgICAgICAgICAgICBib29sIHZhbGlkU2NhbGVGYWN0b3IgPSBm
YWxzZTsKKworICAgICAgICAgICAgc3JjU2V0VG9rZW5zW2ldLnN0cmlwV2hpdGVTcGFjZSgpLnNw
bGl0KCcgJywgZGF0YSk7CisgICAgICAgICAgICAvLyBUaGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9u
ZSBjYW5kaWRhdGUgZGVzY3JpcHRvciwgYW5kIHRoZSBsYXN0IG9uZSBtdXN0CisgICAgICAgICAg
ICAvLyBiZSBhIHNjYWxlIGZhY3Rvci4gU2luY2Ugd2UgZG9uJ3Qgc3VwcG9ydCBkZXNjcmlwdG9y
cyBvdGhlciB0aGFuIHNjYWxlLAorICAgICAgICAgICAgLy8gaXQncyBiZXR0ZXIgdG8gZGlzY2Fy
ZCBhbnkgcnVsZSB3aXRoIHN1Y2ggZGVzY3JpcHRvcnMgcmF0aGVyIHRoYW4gYWNjZXB0CisgICAg
ICAgICAgICAvLyBvbmx5IHRoZSBzY2FsZSBkYXRhLgorICAgICAgICAgICAgaWYgKGRhdGEuc2l6
ZSgpICE9IDIpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoIWRh
dGEubGFzdCgpLmVuZHNXaXRoKCd4JykpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgICAgIGltZ1NjYWxlRmFjdG9yID0gZGF0YS5sYXN0KCkuc3Vic3RyaW5nKDAsIGRhdGEu
bGFzdCgpLmxlbmd0aCgpIC0gMSkudG9GbG9hdCgmdmFsaWRTY2FsZUZhY3Rvcik7CisgICAgICAg
ICAgICBpZiAoIXZhbGlkU2NhbGVGYWN0b3IpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICBpZiAoaW1nU2NhbGVGYWN0b3IgPT0gbV9wYWdlU2NhbGVGYWN0b3IpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGRhdGFbMF07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbEF0b207CisgICAgfQorCiAgICAgc3RhdGljIGJvb2wgcmVsQXR0cmlidXRlSXNTdHls
ZVNoZWV0KGNvbnN0IFN0cmluZyYgYXR0cmlidXRlVmFsdWUpCiAgICAgewogICAgICAgICBMaW5r
UmVsQXR0cmlidXRlIHJlbChhdHRyaWJ1dGVWYWx1ZSk7CkBAIC0yMDcsMTEgKzI0NiwxMyBAQCBw
cml2YXRlOgogICAgICAgICByZXR1cm4gbWVkaWFRdWVyeUV2YWx1YXRvci5ldmFsKG1lZGlhUXVl
cmllcy5nZXQoKSk7CiAgICAgfQogCi0gICAgdm9pZCBzZXRVcmxUb0xvYWQoY29uc3QgU3RyaW5n
JiBhdHRyaWJ1dGVWYWx1ZSkKKyAgICB2b2lkIHNldFVybFRvTG9hZChjb25zdCBTdHJpbmcmIGF0
dHJpYnV0ZVZhbHVlLCBib29sIGFsbG93UmVwbGFjZW1lbnQgPSBmYWxzZSkKICAgICB7CisgICAg
ICAgIGlmIChhdHRyaWJ1dGVWYWx1ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIC8vIFdlIG9ubHkgcmVzcGVjdCB0aGUgZmlyc3Qgc3JjL2hyZWYsIHBlciBIVE1MNToK
ICAgICAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQt
d29yay9tdWx0aXBhZ2UvdG9rZW5pemF0aW9uLmh0bWwjYXR0cmlidXRlLW5hbWUtc3RhdGUKLSAg
ICAgICAgaWYgKCFtX3VybFRvTG9hZC5pc0VtcHR5KCkpCisgICAgICAgIGlmICghYWxsb3dSZXBs
YWNlbWVudCAmJiAhbV91cmxUb0xvYWQuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBtX3VybFRvTG9hZCA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhh
dHRyaWJ1dGVWYWx1ZSk7CiAgICAgfQpAQCAtMjYyLDExICszMDMsMTMgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fbGlua0lzU3R5bGVTaGVldDsKICAgICBib29sIG1fbGlua01lZGlhQXR0cmlidXRl
SXNTY3JlZW47CiAgICAgYm9vbCBtX2lucHV0SXNJbWFnZTsKKyAgICBmbG9hdCBtX3BhZ2VTY2Fs
ZUZhY3RvcjsKIH07CiAKLVRva2VuUHJlbG9hZFNjYW5uZXI6OlRva2VuUHJlbG9hZFNjYW5uZXIo
Y29uc3QgS1VSTCYgZG9jdW1lbnRVUkwpCitUb2tlblByZWxvYWRTY2FubmVyOjpUb2tlblByZWxv
YWRTY2FubmVyKGNvbnN0IEtVUkwmIGRvY3VtZW50VVJMLCBmbG9hdCBwYWdlU2NhbGVGYWN0b3Ip
CiAgICAgOiBtX2RvY3VtZW50VVJMKGRvY3VtZW50VVJMKQogICAgICwgbV9pblN0eWxlKGZhbHNl
KQorICAgICwgbV9wYWdlU2NhbGVGYWN0b3IocGFnZVNjYWxlRmFjdG9yKQogI2lmIEVOQUJMRShU
RU1QTEFURV9FTEVNRU5UKQogICAgICwgbV90ZW1wbGF0ZUNvdW50KDApCiAjZW5kaWYKQEAgLTM2
Myw3ICs0MDYsNyBAQCB2b2lkIFRva2VuUHJlbG9hZFNjYW5uZXI6OnNjYW5Db21tb24oY29uc3Qg
VG9rZW4mIHRva2VuLCBWZWN0b3I8T3duUHRyPFByZWxvYWRSZQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgU3RhcnRUYWdTY2FubmVyIHNjYW5uZXIodGFnSWQpOwor
ICAgICAgICBTdGFydFRhZ1NjYW5uZXIgc2Nhbm5lcih0YWdJZCwgbV9wYWdlU2NhbGVGYWN0b3Ip
OwogICAgICAgICBzY2FubmVyLnByb2Nlc3NBdHRyaWJ1dGVzKHRva2VuLmF0dHJpYnV0ZXMoKSk7
CiAgICAgICAgIE93blB0cjxQcmVsb2FkUmVxdWVzdD4gcmVxdWVzdCA9IHNjYW5uZXIuY3JlYXRl
UHJlbG9hZFJlcXVlc3QobV9wcmVkaWN0ZWRCYXNlRWxlbWVudFVSTCk7CiAgICAgICAgIGlmIChy
ZXF1ZXN0KQpAQCAtMzg0LDggKzQyNyw4IEBAIHZvaWQgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6dXBk
YXRlUHJlZGljdGVkQmFzZVVSTChjb25zdCBUb2tlbiYgdG9rZW4pCiAgICAgICAgIG1fcHJlZGlj
dGVkQmFzZUVsZW1lbnRVUkwgPSBLVVJMKG1fZG9jdW1lbnRVUkwsIHN0cmlwTGVhZGluZ0FuZFRy
YWlsaW5nSFRNTFNwYWNlcyhocmVmQXR0cmlidXRlLT52YWx1ZSkpLmNvcHkoKTsKIH0KIAotSFRN
TFByZWxvYWRTY2FubmVyOjpIVE1MUHJlbG9hZFNjYW5uZXIoY29uc3QgSFRNTFBhcnNlck9wdGlv
bnMmIG9wdGlvbnMsIGNvbnN0IEtVUkwmIGRvY3VtZW50VVJMKQotICAgIDogbV9zY2FubmVyKGRv
Y3VtZW50VVJMKQorSFRNTFByZWxvYWRTY2FubmVyOjpIVE1MUHJlbG9hZFNjYW5uZXIoY29uc3Qg
SFRNTFBhcnNlck9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEtVUkwmIGRvY3VtZW50VVJMLCBmbG9h
dCBwYWdlU2NhbGVGYWN0b3IpCisgICAgOiBtX3NjYW5uZXIoZG9jdW1lbnRVUkwsIHBhZ2VTY2Fs
ZUZhY3RvcikKICAgICAsIG1fdG9rZW5pemVyKEhUTUxUb2tlbml6ZXI6OmNyZWF0ZShvcHRpb25z
KSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVs
b2FkU2Nhbm5lci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2Fu
bmVyLmgKaW5kZXggZDJmMmMxMTg5YzI1ZjUwZGIyOTIzZmZiMzRhNzEyNmU0MjdhM2IyOS4uZGY0
MGI0MjE2MDAyY2NmNTA3ZDliODdlNDNkY2ZiZjg1YmUyMzBmZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAg
Y2xhc3MgU2VnbWVudGVkU3RyaW5nOwogY2xhc3MgVG9rZW5QcmVsb2FkU2Nhbm5lciB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoVG9rZW5QcmVsb2FkU2Nhbm5lcik7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IFRva2VuUHJlbG9hZFNjYW5uZXIoY29u
c3QgS1VSTCYgZG9jdW1lbnRVUkwpOworICAgIGV4cGxpY2l0IFRva2VuUHJlbG9hZFNjYW5uZXIo
Y29uc3QgS1VSTCYgZG9jdW1lbnRVUkwsIGZsb2F0IHBhZ2VTY2FsZUZhY3RvciA9IDEuMCk7CiAg
ICAgflRva2VuUHJlbG9hZFNjYW5uZXIoKTsKIAogICAgIHZvaWQgc2Nhbihjb25zdCBIVE1MVG9r
ZW4mLCBQcmVsb2FkUmVxdWVzdFN0cmVhbSYgcmVxdWVzdHMpOwpAQCAtMTE4LDYgKzExOCw3IEBA
IHByaXZhdGU6CiAgICAgY29uc3QgS1VSTCBtX2RvY3VtZW50VVJMOwogICAgIEtVUkwgbV9wcmVk
aWN0ZWRCYXNlRWxlbWVudFVSTDsKICAgICBib29sIG1faW5TdHlsZTsKKyAgICBmbG9hdCBtX3Bh
Z2VTY2FsZUZhY3RvcjsKIAogI2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQogICAgIHNpemVf
dCBtX3RlbXBsYXRlQ291bnQ7CkBAIC0xMjksNyArMTMwLDcgQEAgcHJpdmF0ZToKIGNsYXNzIEhU
TUxQcmVsb2FkU2Nhbm5lciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSFRNTFByZWxvYWRT
Y2FubmVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSFRNTFByZWxv
YWRTY2FubmVyKGNvbnN0IEhUTUxQYXJzZXJPcHRpb25zJiwgY29uc3QgS1VSTCYgZG9jdW1lbnRV
UkwpOworICAgIEhUTUxQcmVsb2FkU2Nhbm5lcihjb25zdCBIVE1MUGFyc2VyT3B0aW9ucyYsIGNv
bnN0IEtVUkwmIGRvY3VtZW50VVJMLCBmbG9hdCBwYWdlU2NhbGVGYWN0b3IgPSAxLjApOwogICAg
IH5IVE1MUHJlbG9hZFNjYW5uZXIoKTsKIAogICAgIHZvaWQgYXBwZW5kVG9FbmQoY29uc3QgU2Vn
bWVudGVkU3RyaW5nJik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMWZiMzUwOGZjNWUwNjM1OTc4NGNiNDg2YzI3YTdjYTQ2
ZGFiMDNkYy4uYmM1MjlhOTRiNzUxNjczYWEwNjk1YjQ2NzhmYWU3ZmViZDQ5NDI4NSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSw1ICsxLDE4IEBACiAyMDEzLTA4LTAxICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNv
bT4KIAorICAgICAgICBVcGRhdGUgSFRNTFByZWxvYWRTY2FubmVyIHRvIGhhbmRsZSBpbWcgc3Jj
c2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTkz
NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcg
dGVzdCB0byBtYWtlIHN1cmUgdGhlIEhUTUwgcHJlbG9hZGVyIHRha2VzIHRoZQorICAgICAgICB2
YWx1ZSBvZiBzcmNzZXQgaWYgYXZhaWxhYmxlLgorCisgICAgICAgICogZmFzdC9wcmVsb2FkZXIv
aW1hZ2Utc3Jjc2V0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9wcmVsb2Fk
ZXIvaW1hZ2Utc3Jjc2V0Lmh0bWw6IEFkZGVkLgorCisyMDEzLTA4LTAxICBEZWFuIEphY2tzb24g
IDxkaW5vQGFwcGxlLmNvbT4KKwogICAgICAgICBzcmNzZXQgYWxnb3JpdGhtIGJyZWFrcyBiYXNl
NjQgc3JjIGF0dHJpYnV0ZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExOTQxMwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3ByZWxvYWRl
ci9pbWFnZS1zcmNzZXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9wcmVsb2FkZXIv
aW1hZ2Utc3Jjc2V0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODI3MjY0YzA2YzU0Y2MzMzVk
YWRjYWFmMTQ1MTJkYjMyOWI2MGZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9wcmVsb2FkZXIvaW1hZ2Utc3Jjc2V0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK2lt
YWdlLXNldC0xeC5wbmcgaGFzIE1JTUUgdHlwZSBpbWFnZS9wbmcKK1RoaXMgdGVzdCByZXF1aXJl
cyBEdW1wUmVuZGVyVHJlZSB0byBzZWUgdGhlIGxvZyBvZiB3aGF0IHJlc291cmNlcyBhcmUgbG9h
ZGVkLgorCis8aW1nIHNyYz0icmVzb3VyY2VzL2ltYWdlMS5wbmciIHNyY3NldD0iLi4vaGlkcGkv
cmVzb3VyY2VzL2ltYWdlLXNldC0xeC5wbmcgMXgsIC4uL2hpZHBpL3Jlc291cmNlcy9pbWFnZS1z
ZXQtMngucG5nIDJ4Ij4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3ByZWxvYWRl
ci9pbWFnZS1zcmNzZXQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcHJlbG9hZGVyL2ltYWdlLXNy
Y3NldC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlZmIyZjYzNTlmZjRlYTcyYmE4NjM4Y2E0MjhmOTkxNGY0
MDZjOTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3ByZWxvYWRlci9pbWFn
ZS1zcmNzZXQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8Ym9keT4KKzxzY3JpcHQ+CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0
UnVubmVyLmR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKCk7Cit9Cis8L3NjcmlwdD4KK1Ro
aXMgdGVzdCByZXF1aXJlcyBEdW1wUmVuZGVyVHJlZSB0byBzZWUgdGhlIGxvZyBvZiB3aGF0IHJl
c291cmNlcyBhcmUgbG9hZGVkLgorPHNjcmlwdCBzcmM9cmVzb3VyY2VzL25vbi1leGlzdGFudC5q
cz48L3NjcmlwdD4KKzxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUoIjxwbGFpbnRleHQ+Iik7PC9zY3Jp
cHQ+Cis8aW1nIHNyYz0icmVzb3VyY2VzL2ltYWdlMS5wbmciIHNyY3NldD0iLi4vaGlkcGkvcmVz
b3VyY2VzL2ltYWdlLXNldC0xeC5wbmcgMXgsIC4uL2hpZHBpL3Jlc291cmNlcy9pbWFnZS1zZXQt
MngucG5nIDJ4Ij4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208062</attachid>
            <date>2013-08-03 05:34:41 -0700</date>
            <delta_ts>2013-08-05 17:01:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-119360-20130803223440.patch</filename>
            <type>text/plain</type>
            <size>18213</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUzNjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTFjM2FmMjA4Mjg3MGE1
ODRiNTUyNTNjMzljMWQ5Y2YxZTZlYTNjYi4uNDBhMWY3MWU2YzMwZTlmNTgzMzVmYjM3MGQ2ZDdl
NjhiYmRkYmNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTA4LTAzICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGUgSFRNTFByZWxvYWRT
Y2FubmVyIHRvIGhhbmRsZSBpbWcgc3Jjc2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTkzNjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGEgbWVyZ2Ugb2Ygc2ltaWxhciBwYXRj
aGVzIGZyb20gWW9hdiBXZWlzcyA8eW9hdkB5b2F2LndzPgorICAgICAgICBhbmQgRGVhbiBKYWNr
c29uLgorCisgICAgICAgIFRlc3Q6IGZhc3QvcHJlbG9hZGVyL2ltYWdlLXNyY3NldC5odG1sCisK
KyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEltYWdlRWxlbWVudDo6YmVzdEZpdEltYWdlU291cmNlKTogTmV3IHN0YXRpYyBtZXRob2Qg
dGhhdCB0YWtlcyBzcmMgYW5kIHNyY3NldAorICAgICAgICBhdHRyaWJ1dGVzIGFuZCByZXR1cm5z
IHRoZSBiZXN0IHVybCBmb3IgdGhlIGRldmljZSBzY2FsZS4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbWFnZUVsZW1lbnQ6OmNvbGxlY3RDYW5kaWRhdGVzRnJvbVNyYyk6IEFkZHMgdGhlIHNyYyB1
cmwgdG8gYSBsaXN0IG9mIGNhbmRpZGF0ZXMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VF
bGVtZW50Ojpjb2xsZWN0Q2FuZGlkYXRlc0Zyb21TcmNTZXQpOiBDb2xsZWN0cyBhbGwgdGhlIHVy
bHMgZnJvbSB0aGUgc3Jjc2V0IGludG8KKyAgICAgICAgYSBsaXN0IG9mIGNhbmRpZGF0ZXMuCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IFVzZSB0
aGUgbmV3IGhlbHBlcnMuCisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmg6IFR5cGVk
ZWYgb3VyIHZlY3RvciBvZiBjYW5kaWRhdGUgaW1hZ2VzLiBFeHBvc2UgdGhlIG5ldworICAgICAg
ICBzdGF0aWMgbWV0aG9kcy4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBh
cnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tl
bml6ZXIpOiBQYXNzIGRldmljZSBzY2FsZSBpbnRvIHByZWxvYWRlci4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6aW5zZXJ0KToKKworICAgICAgICAqIGh0bWwvcGFyc2Vy
L0hUTUxQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUb2tlblByZWxvYWRT
Y2FubmVyOjpTdGFydFRhZ1NjYW5uZXI6OlN0YXJ0VGFnU2Nhbm5lcik6IFRha2VzIGRldmljZSBz
Y2FsZSBhcyBhIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6OlRva2VuUHJlbG9hZFNjYW5u
ZXI6OlN0YXJ0VGFnU2Nhbm5lcjo6cHJvY2Vzc0F0dHJpYnV0ZSk6IEFkZCBzdXBwb3J0IGZvciBz
cmNzZXQgYXR0cmlidXRlLiBJZgorICAgICAgICB3ZSBjb3VsZCBmaW5kIGEgbWF0Y2ggdGhlbiBv
dmVyd3JpdGUgYW55IGN1cnJlbnQgdXJsIGZvciBwcmVsb2FkaW5nLgorICAgICAgICAoV2ViQ29y
ZTo6VG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRUYWdTY2FubmVyOjpzZXRVcmxUb0xvYWQpOiBO
ZXcgZmxhZyB0byBpbmRpY2F0ZSBpZiB3ZSBzaG91bGQKKyAgICAgICAgcmVwbGFjZSBhbnkgZXhp
c3RpbmcgdmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpUb2tlblByZWxvYWRTY2FubmVyOjpUb2tl
blByZWxvYWRTY2FubmVyKTogVGFrZXMgZGV2aWNlIHNjYWxlLgorICAgICAgICAoV2ViQ29yZTo6
VG9rZW5QcmVsb2FkU2Nhbm5lcjo6c2NhbkNvbW1vbik6IFBhc3MgZGV2aWNlIHNjYWxlLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFByZWxvYWRTY2FubmVyOjpIVE1MUHJlbG9hZFNjYW5uZXIpOgor
ICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5oOiBOZXcgYXR0cmlidXRl
IHRvIGNvbnN0cnVjdG9yIGZvciBkZXZpY2Ugc2NhbGUuCisKIDIwMTMtMDgtMDIgIERlYW4gSmFj
a3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIEZvcmNlIGVsZW1lbnRzIHdpdGggcGVy
c3BlY3RpdmUgb3IgcHJlc2VydmUtM2QgdG8gZGlzYWxsb3cgZGlyZWN0IGNvbXBvc2l0ZWQgYmFj
a2dyb3VuZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDMx
OWNjN2U4MWIyZDk1MzgzMWM3MjM3NGYzMGZjNzI4YWIxOGUwYTguLjc0YzI2N2E2ODllY2FiYTY0
OTIwMDQ0ZWU2NjBhNzkzNjNjMWY5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmNwcApAQCAtMTE1LDM3ICsxMTUsNDIgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1M
SW1hZ2VFbGVtZW50OjppbWFnZVNvdXJjZVVSTCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYmVzdEZp
dEltYWdlVVJMLmlzRW1wdHkoKSA/IGZhc3RHZXRBdHRyaWJ1dGUoc3JjQXR0cikgOiBtX2Jlc3RG
aXRJbWFnZVVSTDsKIH0KIAotdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpkZXRlcm1pbmVCZXN0SW1h
Z2VGb3JTY2FsZUZhY3RvcigpCitTdHJpbmcgSFRNTEltYWdlRWxlbWVudDo6YmVzdEZpdEltYWdl
U291cmNlKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBjb25zdCBTdHJpbmcmIHNyY0F0dHJpYnV0
ZSwgY29uc3QgU3RyaW5nJiBzcmNTZXRBdHRyaWJ1dGUpCiB7Ci0gICAgbV9pbWFnZXNXaXRoU2Nh
bGUuY2xlYXIoKTsKLSAgICBtX2Jlc3RGaXRJbWFnZVVSTCA9IG51bGxBdG9tOworICAgIEltYWdl
Q2FuZGlkYXRlcyBpbWFnZUNhbmRpZGF0ZXM7CisgICAgY29sbGVjdENhbmRpZGF0ZXNGcm9tU3Jj
U2V0KHNyY1NldEF0dHJpYnV0ZSwgaW1hZ2VDYW5kaWRhdGVzKTsKKyAgICBjb2xsZWN0Q2FuZGlk
YXRlc0Zyb21TcmMoc3JjQXR0cmlidXRlLCBpbWFnZUNhbmRpZGF0ZXMpOwogCi0gICAgY29sbGVj
dEltYWdlQ2FuZGlkYXRlc0Zyb21TcmNTZXQoKTsKLSAgICBjb2xsZWN0SW1hZ2VDYW5kaWRhdGVG
cm9tU3JjKCk7Ci0gICAgc3RhYmxlX3NvcnQobV9pbWFnZXNXaXRoU2NhbGUuYmVnaW4oKSwgbV9p
bWFnZXNXaXRoU2NhbGUuZW5kKCksIGNvbXBhcmVCeVNjYWxlRmFjdG9yKTsKKyAgICBzdGFibGVf
c29ydChpbWFnZUNhbmRpZGF0ZXMuYmVnaW4oKSwgaW1hZ2VDYW5kaWRhdGVzLmVuZCgpLCBIVE1M
SW1hZ2VFbGVtZW50Ojpjb21wYXJlQnlTY2FsZUZhY3Rvcik7CiAKLSAgICBmb3IgKHNpemVfdCBp
ID0gMTsgaSA8IG1faW1hZ2VzV2l0aFNjYWxlLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmICht
X2ltYWdlc1dpdGhTY2FsZVtpLTFdLnNjYWxlRmFjdG9yID09IG1faW1hZ2VzV2l0aFNjYWxlW2ld
LnNjYWxlRmFjdG9yKSB7Ci0gICAgICAgICAgICBtX2ltYWdlc1dpdGhTY2FsZS5yZW1vdmUoaSk7
CisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBpbWFnZUNhbmRpZGF0ZXMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgaWYgKGltYWdlQ2FuZGlkYXRlc1tpLTFdLnNjYWxlRmFjdG9yID09IGltYWdl
Q2FuZGlkYXRlc1tpXS5zY2FsZUZhY3RvcikgeworICAgICAgICAgICAgaW1hZ2VDYW5kaWRhdGVz
LnJlbW92ZShpKTsKICAgICAgICAgICAgIGktLTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGZs
b2F0IHBhZ2VTY2FsZUZhY3RvciA9IDEuMDsKLSAgICBpZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50
KCktPnBhZ2UoKSkKLSAgICAgICAgcGFnZVNjYWxlRmFjdG9yID0gcGFnZS0+ZGV2aWNlU2NhbGVG
YWN0b3IoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGltYWdlQ2FuZGlkYXRlcy5zaXpl
KCk7ICsraSkgeworICAgICAgICBpZiAoaW1hZ2VDYW5kaWRhdGVzW2ldLnNjYWxlRmFjdG9yID49
IGRldmljZVNjYWxlRmFjdG9yKQorICAgICAgICAgICAgcmV0dXJuIGltYWdlQ2FuZGlkYXRlc1tp
XS5pbWFnZVVSTDsKKyAgICB9CisgICAgcmV0dXJuIFN0cmluZygpOworfQogCi0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2ltYWdlc1dpdGhTY2FsZS5zaXplKCk7ICsraSkgewotICAgICAg
ICBpZiAobV9pbWFnZXNXaXRoU2NhbGVbaV0uc2NhbGVGYWN0b3IgPj0gcGFnZVNjYWxlRmFjdG9y
KSB7Ci0gICAgICAgICAgICBtX2Jlc3RGaXRJbWFnZVVSTCA9IG1faW1hZ2VzV2l0aFNjYWxlW2ld
LmltYWdlVVJMOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Cit2b2lkIEhUTUxJbWFn
ZUVsZW1lbnQ6OmNvbGxlY3RDYW5kaWRhdGVzRnJvbVNyYyhjb25zdCBTdHJpbmcmIGF0dHJpYnV0
ZVZhbHVlLCBIVE1MSW1hZ2VFbGVtZW50OjpJbWFnZUNhbmRpZGF0ZXMmIGltYWdlQ2FuZGlkYXRl
cykKK3sKKyAgICBjb25zdCBTdHJpbmcmIHNyYyA9ICBhdHRyaWJ1dGVWYWx1ZS5zaW1wbGlmeVdo
aXRlU3BhY2UoaXNIVE1MU3BhY2UpOworICAgIEltYWdlV2l0aFNjYWxlIGltYWdlOworICAgIGlm
ICghc3JjLmlzRW1wdHkoKSkgeworICAgICAgICBpbWFnZS5pbWFnZVVSTCA9IGRlY29kZVVSTEVz
Y2FwZVNlcXVlbmNlcyhzcmMpOworICAgICAgICBpbWFnZS5zY2FsZUZhY3RvciA9IDEuMDsKKyAg
ICAgICAgaW1hZ2VDYW5kaWRhdGVzLmFwcGVuZChpbWFnZSk7CiAgICAgfQogfQogCi12b2lkIEhU
TUxJbWFnZUVsZW1lbnQ6OmNvbGxlY3RJbWFnZUNhbmRpZGF0ZXNGcm9tU3JjU2V0KCkKK3ZvaWQg
SFRNTEltYWdlRWxlbWVudDo6Y29sbGVjdENhbmRpZGF0ZXNGcm9tU3JjU2V0KGNvbnN0IFN0cmlu
ZyYgYXR0cmlidXRlVmFsdWUsIEhUTUxJbWFnZUVsZW1lbnQ6OkltYWdlQ2FuZGlkYXRlcyYgaW1h
Z2VDYW5kaWRhdGVzKQogewotICAgIGNvbnN0IFN0cmluZyYgc3JjU2V0QXR0cmlidXRlVmFsdWUg
PSBmYXN0R2V0QXR0cmlidXRlKHNyY3NldEF0dHIpLnN0cmluZygpLnNpbXBsaWZ5V2hpdGVTcGFj
ZShpc0hUTUxTcGFjZSk7CisgICAgY29uc3QgU3RyaW5nJiBzcmNTZXRBdHRyaWJ1dGVWYWx1ZSA9
IGF0dHJpYnV0ZVZhbHVlLnNpbXBsaWZ5V2hpdGVTcGFjZShpc0hUTUxTcGFjZSk7CiAgICAgVmVj
dG9yPFN0cmluZz4gc3JjU2V0VG9rZW5zOwogCiAgICAgc3JjU2V0QXR0cmlidXRlVmFsdWUuc3Bs
aXQoJywnLCBzcmNTZXRUb2tlbnMpOwpAQCAtMTcyLDE4ICsxNzcsNyBAQCB2b2lkIEhUTUxJbWFn
ZUVsZW1lbnQ6OmNvbGxlY3RJbWFnZUNhbmRpZGF0ZXNGcm9tU3JjU2V0KCkKICAgICAgICAgaW1h
Z2UuaW1hZ2VVUkwgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoZGF0YVswXSk7CiAgICAgICAg
IGltYWdlLnNjYWxlRmFjdG9yID0gaW1nU2NhbGVGYWN0b3I7CiAKLSAgICAgICAgbV9pbWFnZXNX
aXRoU2NhbGUuYXBwZW5kKGltYWdlKTsKLSAgICB9Ci19Ci0KLXZvaWQgSFRNTEltYWdlRWxlbWVu
dDo6Y29sbGVjdEltYWdlQ2FuZGlkYXRlRnJvbVNyYygpCi17Ci0gICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBzcmMgPSBmYXN0R2V0QXR0cmlidXRlKHNyY0F0dHIpOwotICAgIEltYWdlV2l0aFNjYWxl
IGltYWdlOwotICAgIGlmICghc3JjLmlzRW1wdHkoKSkgewotICAgICAgICBpbWFnZS5pbWFnZVVS
TCA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhzcmMpOwotICAgICAgICBpbWFnZS5zY2FsZUZh
Y3RvciA9IDEuMDsKLSAgICAgICAgbV9pbWFnZXNXaXRoU2NhbGUuYXBwZW5kKGltYWdlKTsKKyAg
ICAgICAgaW1hZ2VDYW5kaWRhdGVzLmFwcGVuZChpbWFnZSk7CiAgICAgfQogfQogCkBAIC0xOTMs
NyArMTg3LDEwIEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyCiAgICAgICAgIGlmIChyZW5kZXJl
cigpICYmIHJlbmRlcmVyKCktPmlzSW1hZ2UoKSkKICAgICAgICAgICAgIHRvUmVuZGVySW1hZ2Uo
cmVuZGVyZXIoKSktPnVwZGF0ZUFsdFRleHQoKTsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gc3Jj
QXR0ciB8fCBuYW1lID09IHNyY3NldEF0dHIpIHsKLSAgICAgICAgZGV0ZXJtaW5lQmVzdEltYWdl
Rm9yU2NhbGVGYWN0b3IoKTsKKyAgICAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAxLjA7
CisgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpKQorICAgICAgICAg
ICAgZGV2aWNlU2NhbGVGYWN0b3IgPSBwYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpOworICAgICAg
ICBtX2Jlc3RGaXRJbWFnZVVSTCA9IGJlc3RGaXRJbWFnZVNvdXJjZShkZXZpY2VTY2FsZUZhY3Rv
ciwgZmFzdEdldEF0dHJpYnV0ZShzcmNBdHRyKSwgZmFzdEdldEF0dHJpYnV0ZShzcmNzZXRBdHRy
KSk7CiAgICAgICAgIG1faW1hZ2VMb2FkZXIudXBkYXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZp
b3VzRXJyb3IoKTsKICAgICB9CiAgICAgZWxzZSBpZiAobmFtZSA9PSB1c2VtYXBBdHRyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAppbmRleCAzZDQzYjllNDc5YzBlYWMyZTQx
NmNiOWVmZDdiNjZlNDRlZTMxMTFmLi4xODFjMjQwMGQwOTJmNjJiMmI1MWMwZmFhYzk3YWY4ZDI5
ZTkxNjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaApAQCAtNzgsNiAr
NzgsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW1hZ2VT
b3VyY2VVUkwoKSBjb25zdCBPVkVSUklERTsKIAorICAgIHN0YXRpYyBTdHJpbmcgYmVzdEZpdElt
YWdlU291cmNlKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBjb25zdCBTdHJpbmcmIHNyY0F0dHJp
YnV0ZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VTZXRBdHRyaWJ1dGUpOworCiBwcm90ZWN0ZWQ6CiAg
ICAgSFRNTEltYWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBIVE1M
Rm9ybUVsZW1lbnQqID0gMCk7CiAKQEAgLTEwOSwxMCArMTExLDYgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgc2V0SXRlbVZhbHVlVGV4dChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2Rl
JikgT1ZFUlJJREU7CiAjZW5kaWYKIAotICAgIHZvaWQgY29sbGVjdEltYWdlQ2FuZGlkYXRlRnJv
bVNyYygpOwotICAgIHZvaWQgY29sbGVjdEltYWdlQ2FuZGlkYXRlc0Zyb21TcmNTZXQoKTsKLSAg
ICB2b2lkIGRldGVybWluZUJlc3RJbWFnZUZvclNjYWxlRmFjdG9yKCk7Ci0KICAgICBzdHJ1Y3Qg
SW1hZ2VXaXRoU2NhbGUgewogICAgICAgICBTdHJpbmcgaW1hZ2VVUkw7CiAgICAgICAgIGZsb2F0
IHNjYWxlRmFjdG9yOwpAQCAtMTIxLDYgKzExOSwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
cmV0dXJuIHNjYWxlRmFjdG9yID09IGltYWdlLnNjYWxlRmFjdG9yICYmIGltYWdlVVJMID09IGlt
YWdlLmltYWdlVVJMOwogICAgICAgICB9CiAgICAgfTsKKyAgICB0eXBlZGVmIFZlY3RvcjxJbWFn
ZVdpdGhTY2FsZT4gSW1hZ2VDYW5kaWRhdGVzOworCisgICAgc3RhdGljIHZvaWQgY29sbGVjdENh
bmRpZGF0ZXNGcm9tU3JjKGNvbnN0IFN0cmluZyYgYXR0cmlidXRlVmFsdWUsIEhUTUxJbWFnZUVs
ZW1lbnQ6OkltYWdlQ2FuZGlkYXRlcyYpOworICAgIHN0YXRpYyB2b2lkIGNvbGxlY3RDYW5kaWRh
dGVzRnJvbVNyY1NldChjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlLCBIVE1MSW1hZ2VFbGVt
ZW50OjpJbWFnZUNhbmRpZGF0ZXMmKTsKIAogICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBjb21wYXJl
QnlTY2FsZUZhY3Rvcihjb25zdCBJbWFnZVdpdGhTY2FsZSYgZmlyc3QsIGNvbnN0IEltYWdlV2l0
aFNjYWxlJiBzZWNvbmQpCiAgICAgewpAQCAtMTMxLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAg
SFRNTEZvcm1FbGVtZW50KiBtX2Zvcm07CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgbV9jb21wb3Np
dGVPcGVyYXRvcjsKICAgICBBdG9taWNTdHJpbmcgbV9iZXN0Rml0SW1hZ2VVUkw7Ci0gICAgVmVj
dG9yPEltYWdlV2l0aFNjYWxlPiBtX2ltYWdlc1dpdGhTY2FsZTsKKyAgICBJbWFnZUNhbmRpZGF0
ZXMgbV9pbWFnZUNhbmRpZGF0ZXM7CiB9OwogCiBpbmxpbmUgYm9vbCBpc0hUTUxJbWFnZUVsZW1l
bnQoTm9kZSogbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9j
dW1lbnRQYXJzZXIuY3BwCmluZGV4IDdhYjU2Mzc1ODE4YzczMmQ0ZWQxYmEyNDcyYzU4MGU5ODQz
ODQ1MmQuLmFjZTcyZDg5MGMxOTE2Y2JhMzUzNTFmYjRiZDFhMDc0OWE2NWQ0ODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAt
NTY1LDcgKzU2NSwxMCBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcihT
eW5jaHJvbm91c01vZGUgbW9kZSkKICAgICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0cygpKSB7CiAg
ICAgICAgIEFTU0VSVChtX3Rva2VuaXplci0+c3RhdGUoKSA9PSBIVE1MVG9rZW5pemVyOjpEYXRh
U3RhdGUpOwogICAgICAgICBpZiAoIW1fcHJlbG9hZFNjYW5uZXIpIHsKLSAgICAgICAgICAgIG1f
cHJlbG9hZFNjYW5uZXIgPSBhZG9wdFB0cihuZXcgSFRNTFByZWxvYWRTY2FubmVyKG1fb3B0aW9u
cywgZG9jdW1lbnQoKS0+dXJsKCkpKTsKKyAgICAgICAgICAgIGZsb2F0IGRldmljZVNjYWxlRmFj
dG9yID0gMS4wOworICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdl
KCkpCisgICAgICAgICAgICAgICAgZGV2aWNlU2NhbGVGYWN0b3IgPSBwYWdlLT5kZXZpY2VTY2Fs
ZUZhY3RvcigpOworICAgICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lciA9IGFkb3B0UHRyKG5ldyBI
VE1MUHJlbG9hZFNjYW5uZXIobV9vcHRpb25zLCBkb2N1bWVudCgpLT51cmwoKSwgZGV2aWNlU2Nh
bGVGYWN0b3IpKTsKICAgICAgICAgICAgIG1fcHJlbG9hZFNjYW5uZXItPmFwcGVuZFRvRW5kKG1f
aW5wdXQuY3VycmVudCgpKTsKICAgICAgICAgfQogICAgICAgICBtX3ByZWxvYWRTY2FubmVyLT5z
Y2FuKG1fcHJlbG9hZGVyLmdldCgpLCBkb2N1bWVudCgpLT5iYXNlRWxlbWVudFVSTCgpKTsKQEAg
LTY0NSw4ICs2NDgsMTIgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6Omluc2VydChjb25zdCBT
ZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKICAgICBpZiAoaXNXYWl0aW5nRm9yU2NyaXB0cygpKSB7
CiAgICAgICAgIC8vIENoZWNrIHRoZSBkb2N1bWVudC53cml0ZSgpIG91dHB1dCB3aXRoIGEgc2Vw
YXJhdGUgcHJlbG9hZCBzY2FubmVyIGFzCiAgICAgICAgIC8vIHRoZSBtYWluIHNjYW5uZXIgY2Fu
J3QgZGVhbCB3aXRoIGluc2VydGlvbnMuCi0gICAgICAgIGlmICghbV9pbnNlcnRpb25QcmVsb2Fk
U2Nhbm5lcikKLSAgICAgICAgICAgIG1faW5zZXJ0aW9uUHJlbG9hZFNjYW5uZXIgPSBhZG9wdFB0
cihuZXcgSFRNTFByZWxvYWRTY2FubmVyKG1fb3B0aW9ucywgZG9jdW1lbnQoKS0+dXJsKCkpKTsK
KyAgICAgICAgaWYgKCFtX2luc2VydGlvblByZWxvYWRTY2FubmVyKSB7CisgICAgICAgICAgICBm
bG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IDEuMDsKKyAgICAgICAgICAgIGlmIChQYWdlKiBwYWdl
ID0gZG9jdW1lbnQoKS0+cGFnZSgpKQorICAgICAgICAgICAgICAgIGRldmljZVNjYWxlRmFjdG9y
ID0gcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKKyAgICAgICAgICAgIG1faW5zZXJ0aW9uUHJl
bG9hZFNjYW5uZXIgPSBhZG9wdFB0cihuZXcgSFRNTFByZWxvYWRTY2FubmVyKG1fb3B0aW9ucywg
ZG9jdW1lbnQoKS0+dXJsKCksIGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAgICAgIH0KICAgICAg
ICAgbV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5lci0+YXBwZW5kVG9FbmQoc291cmNlKTsKICAgICAg
ICAgbV9pbnNlcnRpb25QcmVsb2FkU2Nhbm5lci0+c2NhbihtX3ByZWxvYWRlci5nZXQoKSwgZG9j
dW1lbnQoKS0+YmFzZUVsZW1lbnRVUkwoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXggOWRhZjc0MzhhNTUwNjEy
OWQ4MWJkMDM4NzhiMmU3Y2RkZWE5ZDE4YS4uNjdlMDA0ZjA5NDhmNTMyMjA2NzQ4NTU1MGE2OGYw
YmM0ZmZlZGYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBy
ZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJl
bG9hZFNjYW5uZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiSFRNTFByZWxvYWRTY2FubmVyLmgiCiAKKyNpbmNsdWRlICJIVE1MSW1hZ2VFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9t
cy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJPcHRpb25zLmgiCkBAIC0xMDcsMTEgKzEwOCwxMiBA
QCBTdHJpbmcgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6aW5pdGlhdG9yRm9yKFRhZ0lkIHRhZ0lkKQog
CiBjbGFzcyBUb2tlblByZWxvYWRTY2FubmVyOjpTdGFydFRhZ1NjYW5uZXIgewogcHVibGljOgot
ICAgIGV4cGxpY2l0IFN0YXJ0VGFnU2Nhbm5lcihUYWdJZCB0YWdJZCkKKyAgICBleHBsaWNpdCBT
dGFydFRhZ1NjYW5uZXIoVGFnSWQgdGFnSWQsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMS4w
KQogICAgICAgICA6IG1fdGFnSWQodGFnSWQpCiAgICAgICAgICwgbV9saW5rSXNTdHlsZVNoZWV0
KGZhbHNlKQogICAgICAgICAsIG1fbGlua01lZGlhQXR0cmlidXRlSXNTY3JlZW4odHJ1ZSkKICAg
ICAgICAgLCBtX2lucHV0SXNJbWFnZShmYWxzZSkKKyAgICAgICAgLCBtX2RldmljZVNjYWxlRmFj
dG9yKGRldmljZVNjYWxlRmFjdG9yKQogICAgIHsKICAgICB9CiAKQEAgLTE3MSw2ICsxNzMsMTEg
QEAgcHJpdmF0ZToKICAgICAgICAgaWYgKG1fdGFnSWQgPT0gU2NyaXB0VGFnSWQgfHwgbV90YWdJ
ZCA9PSBJbWdUYWdJZCkgewogICAgICAgICAgICAgaWYgKG1hdGNoKGF0dHJpYnV0ZU5hbWUsIHNy
Y0F0dHIpKQogICAgICAgICAgICAgICAgIHNldFVybFRvTG9hZChhdHRyaWJ1dGVWYWx1ZSk7Cisg
ICAgICAgICAgICBlbHNlIGlmIChtYXRjaChhdHRyaWJ1dGVOYW1lLCBzcmNzZXRBdHRyKSkgewor
ICAgICAgICAgICAgICAgIFN0cmluZyBzcmNNYXRjaGluZ1NjYWxlID0gSFRNTEltYWdlRWxlbWVu
dDo6YmVzdEZpdEltYWdlU291cmNlKG1fZGV2aWNlU2NhbGVGYWN0b3IsIG1fdXJsVG9Mb2FkLCBh
dHRyaWJ1dGVWYWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKCFzcmNNYXRjaGluZ1NjYWxlLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgc2V0VXJsVG9Mb2FkKHNyY01hdGNoaW5nU2Nh
bGUsIHRydWUpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2goYXR0
cmlidXRlTmFtZSwgY3Jvc3NvcmlnaW5BdHRyKSAmJiAhYXR0cmlidXRlVmFsdWUuaXNOdWxsKCkp
CiAgICAgICAgICAgICAgICAgbV9jcm9zc09yaWdpbk1vZGUgPSBzdHJpcExlYWRpbmdBbmRUcmFp
bGluZ0hUTUxTcGFjZXMoYXR0cmlidXRlVmFsdWUpOwogICAgICAgICB9IGVsc2UgaWYgKG1fdGFn
SWQgPT0gTGlua1RhZ0lkKSB7CkBAIC0yMDcsMTMgKzIxNCwxNiBAQCBwcml2YXRlOgogICAgICAg
ICByZXR1cm4gbWVkaWFRdWVyeUV2YWx1YXRvci5ldmFsKG1lZGlhUXVlcmllcy5nZXQoKSk7CiAg
ICAgfQogCi0gICAgdm9pZCBzZXRVcmxUb0xvYWQoY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1
ZSkKKyAgICB2b2lkIHNldFVybFRvTG9hZChjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGFsbG93
UmVwbGFjZW1lbnQgPSBmYWxzZSkKICAgICB7CisgICAgICAgIFN0cmluZyB1cmwgPSBzdHJpcExl
YWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXModmFsdWUpOworICAgICAgICBpZiAodXJsLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgLy8gV2Ugb25seSByZXNwZWN0IHRo
ZSBmaXJzdCBzcmMvaHJlZiwgcGVyIEhUTUw1OgogICAgICAgICAvLyBodHRwOi8vd3d3LndoYXR3
Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90b2tlbml6YXRpb24u
aHRtbCNhdHRyaWJ1dGUtbmFtZS1zdGF0ZQotICAgICAgICBpZiAoIW1fdXJsVG9Mb2FkLmlzRW1w
dHkoKSkKKyAgICAgICAgaWYgKCFhbGxvd1JlcGxhY2VtZW50ICYmICFtX3VybFRvTG9hZC5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fdXJsVG9Mb2FkID0gc3RyaXBM
ZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZVZhbHVlKTsKKyAgICAgICAgbV91
cmxUb0xvYWQgPSB1cmw7CiAgICAgfQogCiAgICAgY29uc3QgU3RyaW5nJiBjaGFyc2V0KCkgY29u
c3QKQEAgLTI2MiwxMSArMjcyLDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xpbmtJc1N0eWxl
U2hlZXQ7CiAgICAgYm9vbCBtX2xpbmtNZWRpYUF0dHJpYnV0ZUlzU2NyZWVuOwogICAgIGJvb2wg
bV9pbnB1dElzSW1hZ2U7CisgICAgZmxvYXQgbV9kZXZpY2VTY2FsZUZhY3RvcjsKIH07CiAKLVRv
a2VuUHJlbG9hZFNjYW5uZXI6OlRva2VuUHJlbG9hZFNjYW5uZXIoY29uc3QgS1VSTCYgZG9jdW1l
bnRVUkwpCitUb2tlblByZWxvYWRTY2FubmVyOjpUb2tlblByZWxvYWRTY2FubmVyKGNvbnN0IEtV
UkwmIGRvY3VtZW50VVJMLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKICAgICA6IG1fZG9jdW1l
bnRVUkwoZG9jdW1lbnRVUkwpCiAgICAgLCBtX2luU3R5bGUoZmFsc2UpCisgICAgLCBtX2Rldmlj
ZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKQogI2lmIEVOQUJMRShURU1QTEFURV9FTEVN
RU5UKQogICAgICwgbV90ZW1wbGF0ZUNvdW50KDApCiAjZW5kaWYKQEAgLTM2Myw3ICszNzUsNyBA
QCB2b2lkIFRva2VuUHJlbG9hZFNjYW5uZXI6OnNjYW5Db21tb24oY29uc3QgVG9rZW4mIHRva2Vu
LCBWZWN0b3I8T3duUHRyPFByZWxvYWRSZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgU3RhcnRUYWdTY2FubmVyIHNjYW5uZXIodGFnSWQpOworICAgICAgICBTdGFy
dFRhZ1NjYW5uZXIgc2Nhbm5lcih0YWdJZCwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAg
IHNjYW5uZXIucHJvY2Vzc0F0dHJpYnV0ZXModG9rZW4uYXR0cmlidXRlcygpKTsKICAgICAgICAg
T3duUHRyPFByZWxvYWRSZXF1ZXN0PiByZXF1ZXN0ID0gc2Nhbm5lci5jcmVhdGVQcmVsb2FkUmVx
dWVzdChtX3ByZWRpY3RlZEJhc2VFbGVtZW50VVJMKTsKICAgICAgICAgaWYgKHJlcXVlc3QpCkBA
IC0zODQsOCArMzk2LDggQEAgdm9pZCBUb2tlblByZWxvYWRTY2FubmVyOjp1cGRhdGVQcmVkaWN0
ZWRCYXNlVVJMKGNvbnN0IFRva2VuJiB0b2tlbikKICAgICAgICAgbV9wcmVkaWN0ZWRCYXNlRWxl
bWVudFVSTCA9IEtVUkwobV9kb2N1bWVudFVSTCwgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1M
U3BhY2VzKGhyZWZBdHRyaWJ1dGUtPnZhbHVlKSkuY29weSgpOwogfQogCi1IVE1MUHJlbG9hZFNj
YW5uZXI6OkhUTUxQcmVsb2FkU2Nhbm5lcihjb25zdCBIVE1MUGFyc2VyT3B0aW9ucyYgb3B0aW9u
cywgY29uc3QgS1VSTCYgZG9jdW1lbnRVUkwpCi0gICAgOiBtX3NjYW5uZXIoZG9jdW1lbnRVUkwp
CitIVE1MUHJlbG9hZFNjYW5uZXI6OkhUTUxQcmVsb2FkU2Nhbm5lcihjb25zdCBIVE1MUGFyc2Vy
T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgS1VSTCYgZG9jdW1lbnRVUkwsIGZsb2F0IGRldmljZVNj
YWxlRmFjdG9yKQorICAgIDogbV9zY2FubmVyKGRvY3VtZW50VVJMLCBkZXZpY2VTY2FsZUZhY3Rv
cikKICAgICAsIG1fdG9rZW5pemVyKEhUTUxUb2tlbml6ZXI6OmNyZWF0ZShvcHRpb25zKSkKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nh
bm5lci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgK
aW5kZXggZDJmMmMxMTg5YzI1ZjUwZGIyOTIzZmZiMzRhNzEyNmU0MjdhM2IyOS4uN2MzZjUzNWM1
NzdkODE3Y2UzMjBlMmY2MzZhOTM1ODYyNDJkMWQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3Mg
U2VnbWVudGVkU3RyaW5nOwogY2xhc3MgVG9rZW5QcmVsb2FkU2Nhbm5lciB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoVG9rZW5QcmVsb2FkU2Nhbm5lcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IFRva2VuUHJlbG9hZFNjYW5uZXIoY29uc3QgS1VS
TCYgZG9jdW1lbnRVUkwpOworICAgIGV4cGxpY2l0IFRva2VuUHJlbG9hZFNjYW5uZXIoY29uc3Qg
S1VSTCYgZG9jdW1lbnRVUkwsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMS4wKTsKICAgICB+
VG9rZW5QcmVsb2FkU2Nhbm5lcigpOwogCiAgICAgdm9pZCBzY2FuKGNvbnN0IEhUTUxUb2tlbiYs
IFByZWxvYWRSZXF1ZXN0U3RyZWFtJiByZXF1ZXN0cyk7CkBAIC0xMTgsNiArMTE4LDcgQEAgcHJp
dmF0ZToKICAgICBjb25zdCBLVVJMIG1fZG9jdW1lbnRVUkw7CiAgICAgS1VSTCBtX3ByZWRpY3Rl
ZEJhc2VFbGVtZW50VVJMOwogICAgIGJvb2wgbV9pblN0eWxlOworICAgIGZsb2F0IG1fZGV2aWNl
U2NhbGVGYWN0b3I7CiAKICNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKICAgICBzaXplX3Qg
bV90ZW1wbGF0ZUNvdW50OwpAQCAtMTI5LDcgKzEzMCw3IEBAIHByaXZhdGU6CiBjbGFzcyBIVE1M
UHJlbG9hZFNjYW5uZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhUTUxQcmVsb2FkU2Nh
bm5lcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEhUTUxQcmVsb2Fk
U2Nhbm5lcihjb25zdCBIVE1MUGFyc2VyT3B0aW9ucyYsIGNvbnN0IEtVUkwmIGRvY3VtZW50VVJM
KTsKKyAgICBIVE1MUHJlbG9hZFNjYW5uZXIoY29uc3QgSFRNTFBhcnNlck9wdGlvbnMmLCBjb25z
dCBLVVJMJiBkb2N1bWVudFVSTCwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAxLjApOwogICAg
IH5IVE1MUHJlbG9hZFNjYW5uZXIoKTsKIAogICAgIHZvaWQgYXBwZW5kVG9FbmQoY29uc3QgU2Vn
bWVudGVkU3RyaW5nJik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDg3ZTQzOWVlMTI2ODdiYzc1NWM4OTFmMjlmNWQyOTc2
OTYxNjBiNS4uMTdlYWI2ODRlNjBkOGViNjA3Y2JmN2RmZmVmYTY4NmJiZmVhYzhkMSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE5IEBACisyMDEzLTA4LTAzICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNv
bT4KKworICAgICAgICBVcGRhdGUgSFRNTFByZWxvYWRTY2FubmVyIHRvIGhhbmRsZSBpbWcgc3Jj
c2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTkz
NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGlzIGEgbWVyZ2Ugb2Ygc2ltaWxhciBwYXRjaGVzIGZyb20gWW9hdiBXZWlzcyA8eW9h
dkB5b2F2LndzPgorICAgICAgICBhbmQgRGVhbiBKYWNrc29uLgorCisgICAgICAgIE5ldyB0ZXN0
IHRvIG1ha2Ugc3VyZSB0aGUgSFRNTCBwcmVsb2FkZXIgdGFrZXMgdGhlCisgICAgICAgIHZhbHVl
IG9mIHNyY3NldCBpZiBhdmFpbGFibGUuCisKKyAgICAgICAgKiBmYXN0L3ByZWxvYWRlci9pbWFn
ZS1zcmNzZXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3ByZWxvYWRlci9p
bWFnZS1zcmNzZXQuaHRtbDogQWRkZWQuCisKIDIwMTMtMDgtMDIgIERlYW4gSmFja3NvbiAgPGRp
bm9AYXBwbGUuY29tPgogCiAgICAgICAgIEZvcmNlIGVsZW1lbnRzIHdpdGggcGVyc3BlY3RpdmUg
b3IgcHJlc2VydmUtM2QgdG8gZGlzYWxsb3cgZGlyZWN0IGNvbXBvc2l0ZWQgYmFja2dyb3VuZHMK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcHJlbG9hZGVyL2ltYWdlLXNyY3NldC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3ByZWxvYWRlci9pbWFnZS1zcmNzZXQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA5NzM3OWI4NDI3MzRlZmUxNDU1MDI3OTI3ODBlMzJkOGM1OThl
OWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3ByZWxvYWRlci9pbWFnZS1z
cmNzZXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorYmFzZS1pbWFnZTEucG5nIGhhcyBN
SU1FIHR5cGUgaW1hZ2UvcG5nCitQQVNTIGludGVybmFscy5pc1ByZWxvYWRlZCgicmVzb3VyY2Vz
L2ltYWdlMS5wbmciKSBpcyBmYWxzZQorVGhpcyB0ZXN0IHBhc3NlcyBpZiB0aGUgZmFsbGJhY2sg
aW1hZ2UgKGRlZmluZWQgaW4gdGhlIHNyYyBhdHRyaWJ1dGUpIGlzIG5vdCBwcmVsb2FkZWQsIGJ1
dCB0aGUgMXggdmVyc2lvbiAoZGVmaW5lZCBpbiBzcmNzZXQpIGlzLgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3ByZWxvYWRlci9pbWFnZS1zcmNzZXQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvcHJlbG9hZGVyL2ltYWdlLXNyY3NldC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5YzcwNDkzZGFm
YWFjYjAwM2Y2ZGZmYzNkNTJiMzdhY2Y0YjE2NWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3ByZWxvYWRlci9pbWFnZS1zcmNzZXQuaHRtbApAQCAtMCwwICsxLDIyIEBACis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wUmVz
b3VyY2VSZXNwb25zZU1JTUVUeXBlcygpOworICAgIH0KKworICAgIGFkZEV2ZW50TGlzdGVuZXIo
ImxvYWQiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKGludGVybmFscykKKyAgICAgICAgICAg
IHNob3VsZEJlRmFsc2UoJ2ludGVybmFscy5pc1ByZWxvYWRlZCgicmVzb3VyY2VzL2ltYWdlMS5w
bmciKScpOworICAgIH0sIGZhbHNlKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9ub24tZXhpc3RhbnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2PlRoaXMg
dGVzdCBwYXNzZXMgaWYgdGhlIGZhbGxiYWNrIGltYWdlIChkZWZpbmVkIGluIHRoZSBzcmMgYXR0
cmlidXRlKSBpcyBub3QgcHJlbG9hZGVkLCBidXQgdGhlIDF4IHZlcnNpb24gKGRlZmluZWQgaW4g
c3Jjc2V0KSBpcy48L2Rpdj4KKzxpbWcgaGVpZ2h0PSIxMDAiIHdpZHRoPSIxMDAiIHNyYz0icmVz
b3VyY2VzL2ltYWdlMS5wbmciIHNyY3NldD0icmVzb3VyY2VzL2Jhc2UtaW1hZ2UxLnBuZyAxeCwg
cmVzb3VyY2VzL2Jhc2UtaW1hZ2UzLnBuZyAzeCwgcmVzb3VyY2VzL2Jhc2UtaW1hZ2UyLnBuZyAy
eCI+PC9pbWc+Cis8L2JvZHk+Cis8L2h0bWw+CisK
</data>
<flag name="review"
          id="229929"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>