{
  "TypeId": "ScriptImageRenderer",
  "Version": 1,
  "Name": "3ab87aa2-18c4-4009-b692-663c1be6745e",
  "DisplayName": "NV21 - JS",
  "OutputFormat": "Bgra32",
  "SupportedRenderingOptions": [],
  "PlaneDescriptors": [
    {
      "PixelStride": 1,
      "MinEffectiveBits": 8,
      "MaxEffectiveBits": 8,
      "AreAdjustableBlackWhiteLevels": false,
      "HorizontalSubsampling": 1,
      "VerticalSubsampling": 1
    },
    {
      "PixelStride": 2,
      "MinEffectiveBits": 8,
      "MaxEffectiveBits": 8,
      "AreAdjustableBlackWhiteLevels": false,
      "HorizontalSubsampling": 2,
      "VerticalSubsampling": 2
    }
  ],
  "RenderingScript": {
    "Language": "JavaScript",
    "Source": "LyoKICogUmVuZGVyIE5WMjEgKFlVViA0OjI6MCwgc2VtaS1wbGFuYXIsIFYgYmVmb3JlIFUpIGludG8gYSBCZ3JhMzIgaW1hZ2UuCiAqCiAqIFBsYW5lIDAgLSBZICA6IHBpeGVsIHN0cmlkZSBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiAyIGx1bWEgc2FtcGxlcywgcm93IHN0cmlkZSB0aGUgZGlzdGFuY2UgYmV0d2VlbiAyIHJvd3MuCiAqIFBsYW5lIDEgLSBWVSA6IHBpeGVsIHN0cmlkZSBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiAyIGNocm9tYSBwYWlycywgcm93IHN0cmlkZSB0aGUgZGlzdGFuY2UgYmV0d2VlbiAyIHJvd3MuCiAqLwoKLy8gcmVhZCB0aGUgZ2l2ZW4gbnVtYmVyIG9mIGJ5dGVzIGZyb20gdGhlIHN0cmVhbSwgdGhlIGJ5dGVzIHdoaWNoIGFyZSBub3QgcmVhZCBhcmUga2VwdCBhcyB6ZXJvCmZ1bmN0aW9uIHJlYWREYXRhKHN0cmVhbSwgYnVmZmVyLCBjb3VudCkKewogICAgdmFyIG9mZnNldCA9IDA7CiAgICB3aGlsZSAob2Zmc2V0IDwgY291bnQpCiAgICB7CiAgICAgICAgdmFyIHJlYWQgPSBzdHJlYW0ucmVhZChidWZmZXIsIG9mZnNldCwgY291bnQgLSBvZmZzZXQpOwogICAgICAgIGlmIChyZWFkIDw9IDApCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIG9mZnNldCArPSByZWFkOwogICAgfQogICAgcmV0dXJuIG9mZnNldDsKfQoKLy8gZ2V0IHN0YXRlCnZhciB3aWR0aCA9IGNvbnRleHQub3V0cHV0V2lkdGg7CnZhciBoZWlnaHQgPSBjb250ZXh0Lm91dHB1dEhlaWdodDsKdmFyIHJvd0J5dGVzID0gY29udGV4dC5vdXRwdXRSb3dCeXRlczsKdmFyIHlQaXhlbFN0cmlkZSA9IGNvbnRleHQucGxhbmVPcHRpb25zWzBdLnBpeGVsU3RyaWRlOwp2YXIgeVJvd1N0cmlkZSA9IGNvbnRleHQucGxhbmVPcHRpb25zWzBdLnJvd1N0cmlkZTsKdmFyIHV2UGl4ZWxTdHJpZGUgPSBjb250ZXh0LnBsYW5lT3B0aW9uc1sxXS5waXhlbFN0cmlkZTsKdmFyIHV2Um93U3RyaWRlID0gY29udGV4dC5wbGFuZU9wdGlvbnNbMV0ucm93U3RyaWRlOwp2YXIgY2hyb21hV2lkdGggPSAod2lkdGggKyAxKSA\u002BPiAxOwp2YXIgY2hyb21hSGVpZ2h0ID0gKGhlaWdodCArIDEpID4\u002BIDE7CgovLyBjaGVjayBwYXJhbWV0ZXJzCmlmICh3aWR0aCA8PSAwIHx8IGhlaWdodCA8PSAwKQogICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHNpemUgb2YgaW1hZ2UuJyk7CmlmICh5UGl4ZWxTdHJpZGUgPD0gMCB8fCB5Um93U3RyaWRlIDwgd2lkdGggKiB5UGl4ZWxTdHJpZGUpCiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcGl4ZWwvcm93IHN0cmlkZSBvZiBZIHBsYW5lLicpOwppZiAodXZQaXhlbFN0cmlkZSA8IDIgfHwgdXZSb3dTdHJpZGUgPCBjaHJvbWFXaWR0aCAqIHV2UGl4ZWxTdHJpZGUpCiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcGl4ZWwvcm93IHN0cmlkZSBvZiBVViBwbGFuZS4nKTsKCi8vIHJlYWQgWSBhbmQgVVYgcGxhbmVzLCBhIHBsYW5lIHdoaWNoIGlzIG5vdCBjb21wbGV0ZSBtZWFucyB0aGF0IHRoZSBzdHJpZGVzIGRvbid0IG1hdGNoIHRoZSBkYXRhCnZhciBpbnB1dCA9IGNvbnRleHQuaW5wdXRTdHJlYW07CnZhciB5U2l6ZSA9IHlSb3dTdHJpZGUgKiBoZWlnaHQ7CnZhciB5UGxhbmUgPSBjb250ZXh0LmNyZWF0ZUJ5dGVBcnJheSh5U2l6ZSk7CnZhciB5UmVhZENvdW50ID0gcmVhZERhdGEoaW5wdXQsIHlQbGFuZSwgeVNpemUpOwppZiAoeVJlYWRDb3VudCA8IHlTaXplKQogICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgZW5vdWdoIGRhdGEgb2YgWSBwbGFuZSwgJyArIHlSZWFkQ291bnQgKyAnIGJ5dGVzIHJlYWQgYnV0ICcgKyB5U2l6ZSArICcgYnl0ZXMgbmVlZGVkLicpOwp2YXIgdXZTaXplID0gdXZSb3dTdHJpZGUgKiBjaHJvbWFIZWlnaHQ7CnZhciB1dlBsYW5lID0gY29udGV4dC5jcmVhdGVCeXRlQXJyYXkodXZTaXplKTsKdmFyIHV2UmVhZENvdW50ID0gcmVhZERhdGEoaW5wdXQsIHV2UGxhbmUsIHV2U2l6ZSk7CmlmICh1dlJlYWRDb3VudCA8IHV2U2l6ZSkKICAgIHRocm93IG5ldyBFcnJvcignTm90IGVub3VnaCBkYXRhIG9mIFVWIHBsYW5lLCAnICsgdXZSZWFkQ291bnQgKyAnIGJ5dGVzIHJlYWQgYnV0ICcgKyB1dlNpemUgKyAnIGJ5dGVzIG5lZWRlZC4nKTsKCi8vIGNvbnZlcnQgdG8gQkdSQSByb3cgYnkgcm93LCBJVFUtUiBCVC43MDkgZnVsbCByYW5nZSB3aXRoIDgtYml0IGZpeGVkLXBvaW50IGZhY3RvcnMKdmFyIG91dHB1dCA9IGNvbnRleHQub3V0cHV0U3RyZWFtOwp2YXIgcm93ID0gY29udGV4dC5jcmVhdGVCeXRlQXJyYXkocm93Qnl0ZXMpOwpmb3IgKHZhciB5ID0gMDsgeSA8IGhlaWdodDsgKyt5KQp7CiAgICB2YXIgeVJvd09mZnNldCA9IHkgKiB5Um93U3RyaWRlOwogICAgdmFyIHV2Um93T2Zmc2V0ID0gKHkgPj4gMSkgKiB1dlJvd1N0cmlkZTsKICAgIHZhciBwb3NpdGlvbiA9IDA7CiAgICB2YXIgckNvZWZmID0gMDsKICAgIHZhciBnQ29lZmYgPSAwOwogICAgdmFyIGJDb2VmZiA9IDA7CiAgICBmb3IgKHZhciB4ID0gMDsgeCA8IHdpZHRoOyArK3gsIHBvc2l0aW9uICs9IDQpCiAgICB7CiAgICAgICAgLy8gdXBkYXRlIGNocm9tYSBjb2VmZmljaWVudHMgZm9yIGVhY2ggMngyIGJsb2NrIG9mIHBpeGVscwogICAgICAgIGlmICgoeCAmIDEpID09PSAwKQogICAgICAgIHsKICAgICAgICAgICAgdmFyIHV2SW5kZXggPSB1dlJvd09mZnNldCArICh4ID4\u002BIDEpICogdXZQaXhlbFN0cmlkZTsKICAgICAgICAgICAgdmFyIHYgPSB1dlBsYW5lW3V2SW5kZXhdIC0gMTI4OwogICAgICAgICAgICB2YXIgdSA9IHV2UGxhbmVbdXZJbmRleCArIDFdIC0gMTI4OwogICAgICAgICAgICByQ29lZmYgPSA0MDMgKiB2OwogICAgICAgICAgICBnQ29lZmYgPSAtNDcgKiB1IC0gMTE5ICogdjsKICAgICAgICAgICAgYkNvZWZmID0gNDc1ICogdTsKICAgICAgICB9CgogICAgICAgIC8vIGNvbnZlcnQgdGhlIHBpeGVsIGFuZCBwdXQgaXQgaW50byB0aGUgcm93IGJ1ZmZlcgogICAgICAgIHZhciBsdW1hID0geVBsYW5lW3lSb3dPZmZzZXQgKyB4ICogeVBpeGVsU3RyaWRlXSA8PCA4OwogICAgICAgIHZhciBiID0gKGx1bWEgKyBiQ29lZmYpID4\u002BIDg7CiAgICAgICAgdmFyIGcgPSAobHVtYSArIGdDb2VmZikgPj4gODsKICAgICAgICB2YXIgciA9IChsdW1hICsgckNvZWZmKSA\u002BPiA4OwogICAgICAgIHJvd1twb3NpdGlvbl0gPSBiIDwgMCA/IDAgOiAoYiA\u002BIDI1NSA/IDI1NSA6IGIpOwogICAgICAgIHJvd1twb3NpdGlvbiArIDFdID0gZyA8IDAgPyAwIDogKGcgPiAyNTUgPyAyNTUgOiBnKTsKICAgICAgICByb3dbcG9zaXRpb24gKyAyXSA9IHIgPCAwID8gMCA6IChyID4gMjU1ID8gMjU1IDogcik7CiAgICAgICAgcm93W3Bvc2l0aW9uICsgM10gPSAyNTU7CiAgICB9CgogICAgLy8gd3JpdGUgdGhlIHJvdyB0byB0aGUgb3V0cHV0LCB0aGUgYnl0ZXMgb2YgcGFkZGluZyBhcmUga2VwdCBhcyB6ZXJvCiAgICBvdXRwdXQud3JpdGUocm93LCAwLCByb3dCeXRlcyk7Cn0KCi8vIGNvbXBsZXRlCnJldHVybiBJbWFnZVJlbmRlcmluZ1Jlc3VsdC5kZWZhdWx0Ow=="
  }
}