{{header}}
{{object 1 0}} <<
  /Type /Catalog
  /Pages 2 0 R
  /AcroForm 4 0 R
>>
endobj
{{object 2 0}} <<
  /Type /Pages
  /Count 1
  /Kids [
    3 0 R
  ]
>>
endobj
% Page number 0.
{{object 3 0}} <<
  /Type /Page
  /Parent 2 0 R
  /Resources <<
    /Font <</F1 20 0 R>>
  >>
  /Annots [ 5 0 R ]
  /Contents [21 0 R]
  /MediaBox [0 0 612 792]
>>
endobj
% Forms
{{object 4 0}} <<
  /Fields [
    5 0 R
    6 0 R
    7 0 R
  ]
>>
endobj
% Field with actions:
% Cursor enter: E
% Cursor exit: X
% Mouse down: D
% Mouse up: U
% Focus: Fo
% Blur: Bl
{{object 5 0}} <<
 /Type /Annot
 /Subtype /Widget
 /FT /Tx
 /T (MyField)
 /Rect [100 200 150 250]
 /AA <<
   /E 10 0 R
   /X 11 0 R
   /D 12 0 R
   /U 13 0 R
   /Fo 14 0 R
   /Bl 15 0 R
 >>
>>
endobj
{{object 6 0}} <<
 /Type /Annot
 /Subtype /Widget
 /FT /Tx
 /T (name)
 /Rect [400 400 500 429]
 /V (Tralfaz)
>>
endobj
{{object 7 0}} <<
 /Type /Annot
 /Subtype /Widget
 /FT /Tx
 /T (age)
 /Rect [400 440 500 469]
 /V (12)
>>
endobj
{{object 10 0}} <<
  /Type /Action
  /S /JavaScript
  /JS (
    app.alert\("enter"\);
    try {
       this.submitForm\("myform", true, true, ["name", "age"]\);
       app.alert\("ERROR: this.submitForm\(\) must not be allowed to execute"\);
    } catch \(e\) {
       app.alert\("PASS: this.submitForm blocked with " + e\);
    }
    try {
       this.print\(\);
       app.alert\("ERROR: this.print\(\) must not be allowed to execute"\);
    } catch \(e\) {
       app.alert\("PASS: this.print blocked with " + e\);
    }
  )
>>
endobj
{{object 11 0}} <<
  /Type /Action
  /S /JavaScript
  /JS (
    app.alert\("exit"\);
    try {
       this.submitForm\("myform", true, true, ["name", "age"]\);
       app.alert\("ERROR: this.submitForm\(\) must not be allowed to execute"\);
    } catch \(e\) {
       app.alert\("PASS: this.submitForm blocked with " + e\);
    }
    try {
       this.print\(\);
       app.alert\("ERROR: this.print\(\) must not be allowed to execute"\);
    } catch \(e\) {
       app.alert\("PASS: this.print blocked with " + e\);
    }
  )
>>
endobj
{{object 12 0}} <<
  /Type /Action
  /S /JavaScript
  /JS (
    app.alert\("down"\);
    try {
       this.submitForm\("https://example.com", true, true, ["name", "age"]\);
    } catch \(e\) {
       app.alert\("ERROR: " + e\);
    }
    try {
       this.print\(\);
       this.print\(false, 1, 10, true, true, true, true, true\);
       this.print\({}\);
       this.print\({"bUi": false, "nStart": 42, "nEnd": 17,
            "bSilent": true, "bShrinkToFit": true, "bPrintAsImage": true,
            "bReverse": true, "bAnnotations": true, "bogus": "yes"}\);
    } catch \(e\) {
       app.alert\("ERROR: " + e\);
    }
  )
>>
endobj
{{object 13 0}} <<
  /Type /Action
  /S /JavaScript
  /JS (
    app.alert\("up"\);
    try {
       // Use different bUrl value this time around.
       this.submitForm\("https://example.com", false, true, ["name", "age"]\);
    } catch \(e\) {
       app.alert\("ERROR: " + e\);
    }
    try {
       this.print\(\);
    } catch \(e\) {
       app.alert\("ERROR: " + e\);
    }
  )
>>
endobj
{{object 14 0}} <<
  /Type /Action
  /S /JavaScript
  /JS (
    app.alert\("focus"\);
    try {
       this.submitForm\("myform", true, true, ["name", "age"]\);
       app.alert\("ERROR: this.submitForm\(\) must not be allowed to execute"\);
    } catch \(e\) {
       app.alert\("PASS: this.submitForm blocked with " + e\);
    }
    try {
       this.print\(\);
       app.alert\("ERROR: this.print\(\) must not be allowed to execute"\);
    } catch \(e\) {
       app.alert\("PASS: this.print blocked with " + e\);
    }
  )
>>
endobj
{{object 15 0}} <<
  /Type /Action
  /S /JavaScript
  /JS (
    app.alert\("blur"\);
    try {
       this.submitForm\("myform", true, true, ["name", "age"]\);
       app.alert\("ERROR: this.submitForm\(\) must not be allowed to execute"\);
    } catch \(e\) {
       app.alert\("PASS: this.submitForm blocked with " + e\);
    }
    try {
       this.print\(\);
       app.alert\("ERROR: this.print\(\) must not be allowed to execute"\);
    } catch \(e\) {
       app.alert\("PASS: this.print blocked with " + e\);
    }
  )
>>
endobj
{{xref}}
{{trailer}}
{{startxref}}
%%EOF
