LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQWdlcmUgU3lzdGVtcyBJbmMuCiAqIFdpcmVsZXNzIGRldmljZSBkcml2ZXIgZm9yIExpbnV4ICh3bGFnczQ5KS4KICoKICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMgQWdlcmUgU3lzdGVtcyBJbmMuCiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqICAgaHR0cDovL3d3dy5hZ2VyZS5jb20KICoKICogSW5pdGlhbGx5IGRldmVsb3BlZCBieSBUcmlwbGVQb2ludCwgSW5jLgogKiAgIGh0dHA6Ly93d3cudHJpcGxlcG9pbnQuY29tCiAqCiAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqCiAqICAgSGVhZGVyIGRlc2NyaWJpbmcgaW5mb3JtYXRpb24gcmVxdWlyZWQgYnkgdGhlIG5ldHdvcmsgbGF5ZXJlbnRyeSBwb2ludHMKICogICBpbnRvIHRoZSBkcml2ZXIuCiAqCiAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqCiAqIFNPRlRXQVJFIExJQ0VOU0UKICoKICogVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgdGVybXMgYW5kIGNvbmRpdGlvbnMsCiAqIHdoaWNoIHlvdSBzaG91bGQgcmVhZCBjYXJlZnVsbHkgYmVmb3JlIHVzaW5nIHRoZSBzb2Z0d2FyZS4gIFVzaW5nIHRoaXMKICogc29mdHdhcmUgaW5kaWNhdGVzIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucy4gIElmIHlvdSBkbwogKiBub3QgYWdyZWUgd2l0aCB0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucywgZG8gbm90IHVzZSB0aGUgc29mdHdhcmUuCiAqCiAqIENvcHlyaWdodCCpIDIwMDMgQWdlcmUgU3lzdGVtcyBJbmMuCiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqCiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIG9yIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbnMsIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKICoKICogLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMKICogICAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIERpc2NsYWltZXIgYXMgY29tbWVudHMgaW4gdGhlIGNvZGUgYXMKICogICAgd2VsbCBhcyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCiAqICAgIGRpc3RyaWJ1dGlvbi4KICoKICogLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCiAqICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIERpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KICogICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAqCiAqIC4gTmVpdGhlciB0aGUgbmFtZSBvZiBBZ2VyZSBTeXN0ZW1zIEluYy4gbm9yIHRoZSBuYW1lcyBvZiB0aGUgY29udHJpYnV0b3JzCiAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQogKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICoKICogRGlzY2xhaW1lcgogKgogKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIJNBUyBJU5QgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywKICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIElORlJJTkdFTUVOVCBBTkQgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgogKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgQU5ZCiAqIFVTRSwgTU9ESUZJQ0FUSU9OIE9SIERJU1RSSUJVVElPTiBPRiBUSElTIFNPRlRXQVJFIElTIFNPTEVMWSBBVCBUSEUgVVNFUlMgT1dOCiAqIFJJU0suIElOIE5PIEVWRU5UIFNIQUxMIEFHRVJFIFNZU1RFTVMgSU5DLiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwogKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBDT05UUkFDVCwgU1RSSUNUCiAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUCiAqIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICiAqIERBTUFHRS4KICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCiNpZm5kZWYgX19XTF9ORVRERVZfSF9fCiNkZWZpbmUgX19XTF9ORVRERVZfSF9fCgoKCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgZnVuY3Rpb24gcHJvdG90eXBlcwogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwppbnQgd2xfaW5pdCggc3RydWN0IG5ldF9kZXZpY2UgKmRldiApOwoKaW50IHdsX2NvbmZpZyggc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmbWFwICptYXAgKTsKCnN0cnVjdCBuZXRfZGV2aWNlICp3bF9kZXZpY2VfYWxsb2MoIHZvaWQgKTsKCnZvaWQgd2xfZGV2aWNlX2RlYWxsb2MoIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgKTsKCmludCB3bF9vcGVuKCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ICk7CgppbnQgd2xfY2xvc2UoIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgKTsKCmludCB3bF9pb2N0bCggc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICpycSwgaW50IGNtZCApOwoKaW50IHdsX3R4KCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgcG9ydCApOwoKaW50IHdsX3NlbmQoIHN0cnVjdCB3bF9wcml2YXRlICpscCApOwoKaW50IHdsX3J4KCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ICk7Cgp2b2lkIHdsX3R4X3RpbWVvdXQoIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgKTsKCnN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzICp3bF9zdGF0cyggc3RydWN0IG5ldF9kZXZpY2UgKmRldiApOwoKCiNpZmRlZiBFTkFCTEVfRE1BCmludCB3bF9zZW5kX2RtYSggc3RydWN0IHdsX3ByaXZhdGUgKmxwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgcG9ydCApOwppbnQgd2xfcnhfZG1hKCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ICk7CiNlbmRpZgoKI2lmZGVmIE5FV19NVUxUSUNBU1QKdm9pZCB3bF9tdWx0aWNhc3QoIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgKTsKI2Vsc2UKdm9pZCB3bF9tdWx0aWNhc3QoIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBudW1fYWRkcnMsIHZvaWQgKmFkZHJzICk7CiNlbmRpZiAvLyBORVdfTVVMVElDQVNUCgoKaW50IHdsX3R4X3BvcnQwKCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ICk7CgoKI2lmZGVmIFVTRV9XRFMKCmludCB3bF90eF9wb3J0MSggc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiApOwppbnQgd2xfdHhfcG9ydDIoIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgKTsKaW50IHdsX3R4X3BvcnQzKCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ICk7CmludCB3bF90eF9wb3J0NCggc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiApOwppbnQgd2xfdHhfcG9ydDUoIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgKTsKaW50IHdsX3R4X3BvcnQ2KCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ICk7Cgp2b2lkIHdsX3dkc19kZXZpY2VfYWxsb2MoIHN0cnVjdCB3bF9wcml2YXRlICpscCApOwp2b2lkIHdsX3dkc19kZXZpY2VfZGVhbGxvYyggc3RydWN0IHdsX3ByaXZhdGUgKmxwICk7CnZvaWQgd2xfd2RzX25ldGlmX3N0YXJ0X3F1ZXVlKCBzdHJ1Y3Qgd2xfcHJpdmF0ZSAqbHAgKTsKdm9pZCB3bF93ZHNfbmV0aWZfc3RvcF9xdWV1ZSggc3RydWN0IHdsX3ByaXZhdGUgKmxwICk7CnZvaWQgd2xfd2RzX25ldGlmX3dha2VfcXVldWUoIHN0cnVjdCB3bF9wcml2YXRlICpscCApOwp2b2lkIHdsX3dkc19uZXRpZl9jYXJyaWVyX29uKCBzdHJ1Y3Qgd2xfcHJpdmF0ZSAqbHAgKTsKdm9pZCB3bF93ZHNfbmV0aWZfY2Fycmllcl9vZmYoIHN0cnVjdCB3bF9wcml2YXRlICpscCApOwoKI2VuZGlmICAvKiBVU0VfV0RTICovCgoKI2lmZGVmIFVTRV9XRFMKCiNkZWZpbmUgV0xfV0RTX0RFVklDRV9BTExPQyggQVJHICkgICAgICB3bF93ZHNfZGV2aWNlX2FsbG9jKCBBUkcgKQojZGVmaW5lIFdMX1dEU19ERVZJQ0VfREVBTExPQyggQVJHICkgICAgd2xfd2RzX2RldmljZV9kZWFsbG9jKCBBUkcgKQojZGVmaW5lIFdMX1dEU19ORVRJRl9TVEFSVF9RVUVVRSggQVJHICkgd2xfd2RzX25ldGlmX3N0YXJ0X3F1ZXVlKCBBUkcgKQojZGVmaW5lIFdMX1dEU19ORVRJRl9TVE9QX1FVRVVFKCBBUkcgKSAgd2xfd2RzX25ldGlmX3N0b3BfcXVldWUoIEFSRyApCiNkZWZpbmUgV0xfV0RTX05FVElGX1dBS0VfUVVFVUUoIEFSRyApICB3bF93ZHNfbmV0aWZfd2FrZV9xdWV1ZSggQVJHICkKI2RlZmluZSBXTF9XRFNfTkVUSUZfQ0FSUklFUl9PTiggQVJHICkgIHdsX3dkc19uZXRpZl9jYXJyaWVyX29uKCBBUkcgKQojZGVmaW5lIFdMX1dEU19ORVRJRl9DQVJSSUVSX09GRiggQVJHICkgd2xfd2RzX25ldGlmX2NhcnJpZXJfb2ZmKCBBUkcgKQoKI2Vsc2UKCiNkZWZpbmUgV0xfV0RTX0RFVklDRV9BTExPQyggQVJHICkKI2RlZmluZSBXTF9XRFNfREVWSUNFX0RFQUxMT0MoIEFSRyApCiNkZWZpbmUgV0xfV0RTX05FVElGX1NUQVJUX1FVRVVFKCBBUkcgKQojZGVmaW5lIFdMX1dEU19ORVRJRl9TVE9QX1FVRVVFKCBBUkcgKQojZGVmaW5lIFdMX1dEU19ORVRJRl9XQUtFX1FVRVVFKCBBUkcgKQojZGVmaW5lIFdMX1dEU19ORVRJRl9DQVJSSUVSX09OKCBBUkcgKQojZGVmaW5lIFdMX1dEU19ORVRJRl9DQVJSSUVSX09GRiggQVJHICkKCiNlbmRpZiAgLyogVVNFX1dEUyAqLwoKCiNlbmRpZiAgLy8gX19XTF9ORVRERVZfSF9fCg==