2020-09-28 23:18:17 +00:00

12 lines
39 KiB
Go

//
// Copyright 2020 FoxyUtils ehf. All rights reserved.
//
// This is a commercial product and requires a license to operate.
// A trial license can be obtained at https://unidoc.io
//
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
//
// Use of this source code is governed by the UniDoc End User License Agreement
// terms that can be accessed at https://unidoc.io/eula/
package document ;import (_e "encoding/binary";_g "fmt";_b "github.com/unidoc/unipdf/v3/common";_cd "github.com/unidoc/unipdf/v3/internal/bitwise";_gg "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_cdc "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";_df "github.com/unidoc/unipdf/v3/internal/jbig2/document/segments";_bf "github.com/unidoc/unipdf/v3/internal/jbig2/encoder/classer";_gd "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_ad "io";_a "math";_c "runtime/debug";);func (_eef *Page )AddPageInformationSegment (){_acag :=&_df .PageInformationSegment {PageBMWidth :_eef .FinalWidth ,PageBMHeight :_eef .FinalHeight ,ResolutionX :_eef .ResolutionX ,ResolutionY :_eef .ResolutionY ,IsLossless :_eef .IsLossless };_ddf :=&_df .Header {PageAssociation :_eef .PageNumber ,SegmentDataLength :uint64 (_acag .Size ()),SegmentData :_acag ,Type :_df .TPageInformation };_eef .Segments =append (_eef .Segments ,_ddf );};func (_ece *Globals )GetSegmentByIndex (index int )(*_df .Header ,error ){const _ccf ="\u0047l\u006f\u0062\u0061\u006cs\u002e\u0047\u0065\u0074\u0053e\u0067m\u0065n\u0074\u0042\u0079\u0049\u006e\u0064\u0065x";if _ece ==nil {return nil ,_gd .Error (_ccf ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_ece .Segments )==0{return nil ,_gd .Error (_ccf ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};if index > len (_ece .Segments )-1{return nil ,_gd .Error (_ccf ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");};return _ece .Segments [index ],nil ;};func (_ffea *Document )mapData ()error {const _fde ="\u006da\u0070\u0044\u0061\u0074\u0061";var (_ega []*_df .Header ;_gbfg int64 ;_ce _df .Type ;);_aaa ,_bdd :=_ffea .isFileHeaderPresent ();if _bdd !=nil {return _gd .Wrap (_bdd ,_fde ,"");};if _aaa {if _bdd =_ffea .parseFileHeader ();_bdd !=nil {return _gd .Wrap (_bdd ,_fde ,"");};_gbfg +=int64 (_ffea ._ag );_ffea .FullHeaders =true ;};var (_beaec *Page ;_fgb bool ;);for _ce !=51&&!_fgb {_cgf ,_eab :=_df .NewHeader (_ffea ,_ffea .InputStream ,_gbfg ,_ffea .OrganizationType );if _eab !=nil {return _gd .Wrap (_eab ,_fde ,"");};_b .Log .Trace ("\u0044\u0065c\u006f\u0064\u0069\u006eg\u0020\u0073e\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u0075m\u0062\u0065\u0072\u003a\u0020\u0025\u0064\u002c\u0020\u0054\u0079\u0070e\u003a\u0020\u0025\u0073",_cgf .SegmentNumber ,_cgf .Type );_ce =_cgf .Type ;if _ce !=_df .TEndOfFile {if _cgf .PageAssociation !=0{_beaec =_ffea .Pages [_cgf .PageAssociation ];if _beaec ==nil {_beaec =_eda (_ffea ,_cgf .PageAssociation );_ffea .Pages [_cgf .PageAssociation ]=_beaec ;if _ffea .NumberOfPagesUnknown {_ffea .NumberOfPages ++;};};_beaec .Segments =append (_beaec .Segments ,_cgf );}else {_ffea .GlobalSegments .AddSegment (_cgf );};};_ega =append (_ega ,_cgf );_gbfg =_ffea .InputStream .StreamPosition ();if _ffea .OrganizationType ==_df .OSequential {_gbfg +=int64 (_cgf .SegmentDataLength );};_fgb ,_eab =_ffea .reachedEOF (_gbfg );if _eab !=nil {_b .Log .Debug ("\u006a\u0062\u0069\u0067\u0032 \u0064\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u0020\u0072\u0065\u0061\u0063h\u0065\u0064\u0020\u0045\u004f\u0046\u0020\u0077\u0069\u0074\u0068\u0020\u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0025\u0076",_eab );return _gd .Wrap (_eab ,_fde ,"");};};_ffea .determineRandomDataOffsets (_ega ,uint64 (_gbfg ));return nil ;};func (_ed *Document )Encode ()(_ffe []byte ,_bff error ){const _de ="\u0044o\u0063u\u006d\u0065\u006e\u0074\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _bdf ,_fcbc int ;if _ed .FullHeaders {if _bdf ,_bff =_ed .encodeFileHeader (_ed ._agc );_bff !=nil {return nil ,_gd .Wrap (_bff ,_de ,"");};};var (_adbb bool ;_bba *_df .Header ;_fcea *Page ;);if _bff =_ed .completeClassifiedPages ();_bff !=nil {return nil ,_gd .Wrap (_bff ,_de ,"");};if _bff =_ed .produceClassifiedPages ();_bff !=nil {return nil ,_gd .Wrap (_bff ,_de ,"");};if _ed .GlobalSegments !=nil {for _ ,_bba =range _ed .GlobalSegments .Segments {if _bff =_ed .encodeSegment (_bba ,&_bdf );_bff !=nil {return nil ,_gd .Wrap (_bff ,_de ,"");};};};for _fdb :=1;_fdb <=int (_ed .NumberOfPages );_fdb ++{if _fcea ,_adbb =_ed .Pages [_fdb ];!_adbb {return nil ,_gd .Errorf (_de ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_fdb );};for _ ,_bba =range _fcea .Segments {if _bff =_ed .encodeSegment (_bba ,&_bdf );_bff !=nil {return nil ,_gd .Wrap (_bff ,_de ,"");};};};if _ed .FullHeaders {if _fcbc ,_bff =_ed .encodeEOFHeader (_ed ._agc );_bff !=nil {return nil ,_gd .Wrap (_bff ,_de ,"");};_bdf +=_fcbc ;};_ffe =_ed ._agc .Data ();if len (_ffe )!=_bdf {_b .Log .Debug ("\u0042\u0079\u0074\u0065\u0073 \u0077\u0072\u0069\u0074\u0074\u0065\u006e \u0028\u006e\u0029\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0065\u0071\u0075\u0061\u006c\u0020\u0074\u006f\u0020\u0074\u0068\u0065\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u0020\u006f\u0066\u0020t\u0068\u0065\u0020\u0064\u0061\u0074\u0061\u0020\u0065\u006e\u0063\u006fd\u0065\u0064\u003a\u0020\u0027\u0025d\u0027",_bdf ,len (_ffe ));};return _ffe ,nil ;};func (_efaf *Globals )AddSegment (segment *_df .Header ){_efaf .Segments =append (_efaf .Segments ,segment );};func (_dce *Page )composePageBitmap ()error {const _afg ="\u0063\u006f\u006d\u0070\u006f\u0073\u0065\u0050\u0061\u0067\u0065\u0042i\u0074\u006d\u0061\u0070";if _dce .PageNumber ==0{return nil ;};_abe :=_dce .getPageInformationSegment ();if _abe ==nil {return _gd .Error (_afg ,"\u0070\u0061\u0067e \u0069\u006e\u0066\u006f\u0072\u006d\u0061\u0074\u0069o\u006e \u0073e\u0067m\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");};_dbe ,_dcc :=_abe .GetSegmentData ();if _dcc !=nil {return _dcc ;};_bfcae ,_ddg :=_dbe .(*_df .PageInformationSegment );if !_ddg {return _gd .Error (_afg ,"\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006da\u0074\u0069\u006f\u006e \u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073\u0020\u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070\u0065");};if _dcc =_dce .createPage (_bfcae );_dcc !=nil {return _gd .Wrap (_dcc ,_afg ,"");};_dce .clearSegmentData ();return nil ;};func (_cf *Document )produceClassifiedPage (_bb *Page ,_adb *_df .Header )(_eg error ){const _feg ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";var _eb map[int ]int ;_ea :=_cf ._f ;_bea :=[]*_df .Header {_adb };if len (_cf ._fc [_bb .PageNumber ])> 0{_eb =map[int ]int {};_ebc ,_ab :=_cf .addSymbolDictionary (_bb .PageNumber ,_cf .Classer .UndilatedTemplates ,_cf ._fc [_bb .PageNumber ],_eb ,false );if _ab !=nil {return _gd .Wrap (_ab ,_feg ,"");};_bea =append (_bea ,_ebc );_ea +=len (_cf ._fc [_bb .PageNumber ]);};_cab :=_cf ._add [_bb .PageNumber ];_b .Log .Debug ("P\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020c\u006f\u006d\u0070\u0073: \u0025\u0076",_bb .PageNumber ,_cab );_bb .addTextRegionSegment (_bea ,_cf ._gb ,_eb ,_cf ._add [_bb .PageNumber ],_cf .Classer .PtaLL ,_cf .Classer .UndilatedTemplates ,_cf .Classer .ClassIDs ,nil ,_fce (_ea ),len (_cf ._add [_bb .PageNumber ]));return nil ;};func (_baf *Document )produceClassifiedPages ()(_gbe error ){const _gfc ="\u0070\u0072\u006f\u0064uc\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067e\u0073";if _baf .Classer ==nil {return nil ;};var (_dfg *Page ;_ef bool ;_fg *_df .Header ;);for _cb :=1;_cb <=int (_baf .NumberOfPages );_cb ++{if _dfg ,_ef =_baf .Pages [_cb ];!_ef {return _gd .Errorf (_gfc ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_cb );};if _dfg .EncodingMethod ==GenericEM {continue ;};if _fg ==nil {if _fg ,_gbe =_baf .GlobalSegments .GetSymbolDictionary ();_gbe !=nil {return _gd .Wrap (_gbe ,_gfc ,"");};};if _gbe =_baf .produceClassifiedPage (_dfg ,_fg );_gbe !=nil {return _gd .Wrapf (_gbe ,_gfc ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_cb );};};return nil ;};func (_fefa *Document )encodeEOFHeader (_age _cd .BinaryWriter )(_agaa int ,_ede error ){_ffce :=&_df .Header {SegmentNumber :_fefa .nextSegmentNumber (),Type :_df .TEndOfFile };if _agaa ,_ede =_ffce .Encode (_age );_ede !=nil {return 0,_gd .Wrap (_ede ,"\u0065n\u0063o\u0064\u0065\u0045\u004f\u0046\u0048\u0065\u0061\u0064\u0065\u0072","");};return _agaa ,nil ;};func (_dba *Document )encodeFileHeader (_egc _cd .BinaryWriter )(_edd int ,_bdfb error ){const _edf ="\u0065\u006ec\u006f\u0064\u0065F\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_edd ,_bdfb =_egc .Write (_be );if _bdfb !=nil {return _edd ,_gd .Wrap (_bdfb ,_edf ,"\u0069\u0064");};if _bdfb =_egc .WriteByte (0x01);_bdfb !=nil {return _edd ,_gd .Wrap (_bdfb ,_edf ,"\u0066\u006c\u0061g\u0073");};_edd ++;_dc :=make ([]byte ,4);_e .BigEndian .PutUint32 (_dc ,_dba .NumberOfPages );_aaf ,_bdfb :=_egc .Write (_dc );if _bdfb !=nil {return _aaf ,_gd .Wrap (_bdfb ,_edf ,"p\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_edd +=_aaf ;return _edd ,nil ;};func (_agg *Document )determineRandomDataOffsets (_daf []*_df .Header ,_gff uint64 ){if _agg .OrganizationType !=_df .ORandom {return ;};for _ ,_fda :=range _daf {_fda .SegmentDataStartOffset =_gff ;_gff +=_fda .SegmentDataLength ;};};func (_egb *Document )isFileHeaderPresent ()(bool ,error ){_egb .InputStream .Mark ();for _ ,_gca :=range _be {_efa ,_fb :=_egb .InputStream .ReadByte ();if _fb !=nil {return false ,_fb ;};if _gca !=_efa {_egb .InputStream .Reset ();return false ,nil ;};};_egb .InputStream .Reset ();return true ,nil ;};func InitEncodeDocument (fullHeaders bool )*Document {return &Document {FullHeaders :fullHeaders ,_agc :_cd .BufferedMSB (),Pages :map[int ]*Page {},_fc :map[int ][]int {},_gb :map[int ]int {},_add :map[int ][]int {}};};func (_cea *Document )nextPageNumber ()uint32 {_cea .NumberOfPages ++;return _cea .NumberOfPages };func (_dfgd *Page )GetResolutionY ()(int ,error ){return _dfgd .getResolutionY ()};func (_gaga *Page )getHeight ()(int ,error ){const _aafe ="\u0067e\u0074\u0048\u0065\u0069\u0067\u0068t";if _gaga .FinalHeight !=0{return _gaga .FinalHeight ,nil ;};_dfa :=_gaga .getPageInformationSegment ();if _dfa ==nil {return 0,_gd .Error (_aafe ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_gcf ,_cbee :=_dfa .GetSegmentData ();if _cbee !=nil {return 0,_gd .Wrap (_cbee ,_aafe ,"");};_gdb ,_cace :=_gcf .(*_df .PageInformationSegment );if !_cace {return 0,_gd .Errorf (_aafe ,"\u0070\u0061\u0067\u0065\u0020\u0069n\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0020\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073 \u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070e\u003a \u0027\u0025\u0054\u0027",_gcf );};if _gdb .PageBMHeight ==_a .MaxInt32 {_ ,_cbee =_gaga .GetBitmap ();if _cbee !=nil {return 0,_gd .Wrap (_cbee ,_aafe ,"");};}else {_gaga .FinalHeight =_gdb .PageBMHeight ;};return _gaga .FinalHeight ,nil ;};var _be =[]byte {0x97,0x4A,0x42,0x32,0x0D,0x0A,0x1A,0x0A};func (_cbgb *Page )getCombinationOperator (_cdf *_df .PageInformationSegment ,_defg _cdc .CombinationOperator )_cdc .CombinationOperator {if _cdf .CombinationOperatorOverrideAllowed (){return _defg ;};return _cdf .CombinationOperator ();};func (_deg *Page )getPageInformationSegment ()*_df .Header {for _ ,_bffb :=range _deg .Segments {if _bffb .Type ==_df .TPageInformation {return _bffb ;};};_b .Log .Debug ("\u0050\u0061\u0067\u0065\u0020\u0069\u006e\u0066o\u0072\u006d\u0061ti\u006f\u006e\u0020\u0073\u0065\u0067m\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u0020\u0066o\u0072\u0020\u0070\u0061\u0067\u0065\u003a\u0020%\u0073\u002e",_deg );return nil ;};func (_eaf *Page )getWidth ()(int ,error ){const _cge ="\u0067\u0065\u0074\u0057\u0069\u0064\u0074\u0068";if _eaf .FinalWidth !=0{return _eaf .FinalWidth ,nil ;};_gfcf :=_eaf .getPageInformationSegment ();if _gfcf ==nil {return 0,_gd .Error (_cge ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_gbdb ,_fdfd :=_gfcf .GetSegmentData ();if _fdfd !=nil {return 0,_gd .Wrap (_fdfd ,_cge ,"");};_edfc ,_ced :=_gbdb .(*_df .PageInformationSegment );if !_ced {return 0,_gd .Errorf (_cge ,"\u0070\u0061\u0067\u0065\u0020\u0069n\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0020\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073 \u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070e\u003a \u0027\u0025\u0054\u0027",_gbdb );};_eaf .FinalWidth =_edfc .PageBMWidth ;return _eaf .FinalWidth ,nil ;};func (_cggc *Page )lastSegmentNumber ()(_fecg uint32 ,_gfef error ){const _eeg ="\u006c\u0061\u0073\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";if len (_cggc .Segments )==0{return _fecg ,_gd .Errorf (_eeg ,"\u006e\u006f\u0020se\u0067\u006d\u0065\u006e\u0074\u0073\u0020\u0066\u006fu\u006ed\u0020i\u006e \u0074\u0068\u0065\u0020\u0070\u0061\u0067\u0065\u0020\u0027\u0025\u0064\u0027",_cggc .PageNumber );};return _cggc .Segments [len (_cggc .Segments )-1].SegmentNumber ,nil ;};func (_def *Document )encodeSegment (_cde *_df .Header ,_cgg *int )error {const _aba ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074";_cde .SegmentNumber =_def .nextSegmentNumber ();_cdee ,_fef :=_cde .Encode (_def ._agc );if _fef !=nil {return _gd .Wrapf (_fef ,_aba ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_cde .SegmentNumber );};*_cgg +=_cdee ;return nil ;};func (_ccc *Document )reachedEOF (_fed int64 )(bool ,error ){const _efc ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";_ ,_eabe :=_ccc .InputStream .Seek (_fed ,_ad .SeekStart );if _eabe !=nil {_b .Log .Debug ("\u0072\u0065\u0061c\u0068\u0065\u0064\u0045\u004f\u0046\u0020\u002d\u0020\u0064\u002e\u0049\u006e\u0070\u0075\u0074\u0053\u0074\u0072\u0065\u0061\u006d\u002e\u0053\u0065\u0065\u006b\u0020\u0066a\u0069\u006c\u0065\u0064\u003a\u0020\u0025\u0076",_eabe );return false ,_gd .Wrap (_eabe ,_efc ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_eabe =_ccc .InputStream .ReadBits (32);if _eabe ==_ad .EOF {return true ,nil ;}else if _eabe !=nil {return false ,_gd .Wrap (_eabe ,_efc ,"");};return false ,nil ;};func (_dg *Document )AddGenericPage (bm *_cdc .Bitmap ,duplicateLineRemoval bool )(_dd error ){const _fca ="\u0044\u006f\u0063um\u0065\u006e\u0074\u002e\u0041\u0064\u0064\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0050\u0061\u0067\u0065";if !_dg .FullHeaders &&_dg .NumberOfPages !=0{return _gd .Error (_fca ,"\u0064\u006f\u0063\u0075\u006de\u006e\u0074\u0020\u0061\u006c\u0072\u0065a\u0064\u0079\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0020\u0070\u0061\u0067\u0065\u002e\u0020\u0046\u0069\u006c\u0065\u004d\u006f\u0064\u0065\u0020\u0064\u0069\u0073\u0061\u006c\u006c\u006f\u0077\u0073\u0020\u0061\u0064\u0064i\u006e\u0067\u0020\u006d\u006f\u0072\u0065\u0020\u0074\u0068\u0061\u006e \u006f\u006e\u0065\u0020\u0070\u0061g\u0065");};_gba :=&Page {Segments :[]*_df .Header {},Bitmap :bm ,Document :_dg ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,IsLossless :true };_gba .PageNumber =int (_dg .nextPageNumber ());_dg .Pages [_gba .PageNumber ]=_gba ;_gba .AddPageInformationSegment ();if _dd =_gba .AddGenericRegion (bm ,0,0,0,_df .TImmediateGenericRegion ,duplicateLineRemoval );_dd !=nil {return _gd .Wrap (_dd ,_fca ,"");};if _dg .FullHeaders {_gba .AddEndOfPageSegment ();};return nil ;};func (_aaed *Page )String ()string {return _g .Sprintf ("\u0050\u0061\u0067\u0065\u0020\u0023\u0025\u0064",_aaed .PageNumber );};func (_bad *Globals )GetSegment (segmentNumber int )(*_df .Header ,error ){const _agf ="\u0047l\u006fb\u0061\u006c\u0073\u002e\u0047e\u0074\u0053e\u0067\u006d\u0065\u006e\u0074";if _bad ==nil {return nil ,_gd .Error (_agf ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_bad .Segments )==0{return nil ,_gd .Error (_agf ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};var _aeb *_df .Header ;for _ ,_aeb =range _bad .Segments {if _aeb .SegmentNumber ==uint32 (segmentNumber ){break ;};};if _aeb ==nil {return nil ,_gd .Error (_agf ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};return _aeb ,nil ;};func (_dbc *Document )GetPage (pageNumber int )(_df .Pager ,error ){const _ade ="\u0044\u006fc\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074\u0050\u0061\u0067\u0065";if pageNumber < 0{_b .Log .Debug ("\u004a\u0042\u0049\u00472\u0020\u0050\u0061\u0067\u0065\u0020\u002d\u0020\u0047e\u0074\u0050\u0061\u0067\u0065\u003a\u0020\u0025\u0064\u002e\u0020\u0050\u0061\u0067\u0065\u0020\u0063\u0061n\u006e\u006f\u0074\u0020\u0062e\u0020\u006c\u006f\u0077\u0065\u0072\u0020\u0074\u0068\u0061\u006e\u0020\u0030\u002e\u0020\u0025\u0073",pageNumber ,_c .Stack ());return nil ,_gd .Errorf (_ade ,"\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u006a\u0062\u0069\u0067\u0032\u0020d\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u0020\u002d\u0020\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064 \u0069\u006e\u0076\u0061\u006ci\u0064\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u003a\u0020\u0025\u0064",pageNumber );};if pageNumber > len (_dbc .Pages ){_b .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_c .Stack ());return nil ,_gd .Error (_ade ,"\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006a\u0062\u0069\u0067\u0032 \u0064\u006f\u0063\u0075\u006d\u0065n\u0074\u0020\u002d\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};_fdba ,_ec :=_dbc .Pages [pageNumber ];if !_ec {_b .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_c .Stack ());return nil ,_gd .Errorf (_ade ,"\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006a\u0062\u0069\u0067\u0032 \u0064\u006f\u0063\u0075\u006d\u0065n\u0074\u0020\u002d\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};return _fdba ,nil ;};func (_gbd *Page )AddGenericRegion (bm *_cdc .Bitmap ,xloc ,yloc ,template int ,tp _df .Type ,duplicateLineRemoval bool )error {const _bde ="P\u0061\u0067\u0065\u002eAd\u0064G\u0065\u006e\u0065\u0072\u0069c\u0052\u0065\u0067\u0069\u006f\u006e";_adef :=&_df .GenericRegion {};if _gfd :=_adef .InitEncode (bm ,xloc ,yloc ,template ,duplicateLineRemoval );_gfd !=nil {return _gd .Wrap (_gfd ,_bde ,"");};_baef :=&_df .Header {Type :_df .TImmediateGenericRegion ,PageAssociation :_gbd .PageNumber ,SegmentData :_adef };_gbd .Segments =append (_gbd .Segments ,_baef );return nil ;};func _bge (_afb _cd .StreamReader ,_gbec *Globals )(*Document ,error ){_bfc :=&Document {Pages :make (map[int ]*Page ),InputStream :_afb ,OrganizationType :_df .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_gbec ,_ag :9};if _bfc .GlobalSegments ==nil {_bfc .GlobalSegments =&Globals {};};if _ceb :=_bfc .mapData ();_ceb !=nil {return nil ,_ceb ;};return _bfc ,nil ;};func (_gbee *Globals )GetSymbolDictionary ()(*_df .Header ,error ){const _ccd ="G\u006c\u006f\u0062\u0061\u006c\u0073.\u0047\u0065\u0074\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079";if _gbee ==nil {return nil ,_gd .Error (_ccd ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_gbee .Segments )==0{return nil ,_gd .Error (_ccd ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};for _ ,_cda :=range _gbee .Segments {if _cda .Type ==_df .TSymbolDictionary {return _cda ,nil ;};};return nil ,_gd .Error (_ccd ,"\u0067\u006c\u006fba\u006c\u0020\u0073\u0079\u006d\u0062\u006f\u006c\u0020d\u0069c\u0074i\u006fn\u0061\u0072\u0079\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");};func _fce (_ff int )int {_dff :=0;_gdg :=(_ff &(_ff -1))==0;_ff >>=1;for ;_ff !=0;_ff >>=1{_dff ++;};if _gdg {return _dff ;};return _dff +1;};func (_dad *Document )GetNumberOfPages ()(uint32 ,error ){if _dad .NumberOfPagesUnknown ||_dad .NumberOfPages ==0{if len (_dad .Pages )==0{if _abd :=_dad .mapData ();_abd !=nil {return 0,_gd .Wrap (_abd ,"\u0044o\u0063\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074N\u0075m\u0062e\u0072\u004f\u0066\u0050\u0061\u0067\u0065s","");};};return uint32 (len (_dad .Pages )),nil ;};return _dad .NumberOfPages ,nil ;};func (_eaa *Document )completeSymbols ()(_da error ){const _ga ="\u0063o\u006dp\u006c\u0065\u0074\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";if _eaa .Classer ==nil {return nil ;};if _eaa .Classer .UndilatedTemplates ==nil {return _gd .Error (_ga ,"\u006e\u006f t\u0065\u006d\u0070l\u0061\u0074\u0065\u0073 de\u0066in\u0065\u0064\u0020\u0066\u006f\u0072\u0020th\u0065\u0020\u0063\u006c\u0061\u0073\u0073e\u0072");};_cca :=len (_eaa .Pages )==1;_ffd :=make ([]int ,_eaa .Classer .UndilatedTemplates .Size ());var _agcg int ;for _beae :=0;_beae < _eaa .Classer .ClassIDs .Size ();_beae ++{_agcg ,_da =_eaa .Classer .ClassIDs .Get (_beae );if _da !=nil {return _gd .Wrap (_da ,_ga ,"\u0063\u006c\u0061\u0073\u0073\u0020\u0049\u0044\u0027\u0073");};_ffd [_agcg ]++;};var _fdf []int ;for _gdfa :=0;_gdfa < _eaa .Classer .UndilatedTemplates .Size ();_gdfa ++{if _ffd [_gdfa ]==0{return _gd .Error (_ga ,"\u006eo\u0020\u0073y\u006d\u0062\u006f\u006cs\u0020\u0069\u006es\u0074\u0061\u006e\u0063\u0065\u0073\u0020\u0066\u006fun\u0064\u0020\u0066o\u0072\u0020g\u0069\u0076\u0065\u006e\u0020\u0063l\u0061\u0073s\u003f\u0020");};if _ffd [_gdfa ]> 1||_cca {_fdf =append (_fdf ,_gdfa );};};_eaa ._f =len (_fdf );var _cg ,_ddc int ;for _gga :=0;_gga < _eaa .Classer .ComponentPageNumbers .Size ();_gga ++{_cg ,_da =_eaa .Classer .ComponentPageNumbers .Get (_gga );if _da !=nil {return _gd .Wrapf (_da ,_ga ,"p\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027 \u006e\u006f\u0074\u0020\u0066\u006f\u0075nd\u0020\u0069\u006e\u0020t\u0068\u0065\u0020\u0063\u006c\u0061\u0073\u0073\u0065r \u0070\u0061g\u0065\u006e\u0075\u006d\u0062\u0065\u0072\u0073",_gga );};_ddc ,_da =_eaa .Classer .ClassIDs .Get (_gga );if _da !=nil {return _gd .Wrapf (_da ,_ga ,"\u0063\u0061\u006e\u0027\u0074\u0020\u0067e\u0074\u0020\u0073y\u006d\u0062\u006f\u006c \u0066\u006f\u0072\u0020\u0070\u0061\u0067\u0065\u0020\u0027\u0025\u0064\u0027\u0020\u0066\u0072\u006f\u006d\u0020\u0063\u006c\u0061\u0073\u0073\u0065\u0072",_cg );};if _ffd [_ddc ]==1&&!_cca {_eaa ._fc [_cg ]=append (_eaa ._fc [_cg ],_ddc );};};if _da =_eaa .Classer .ComputeLLCorners ();_da !=nil {return _gd .Wrap (_da ,_ga ,"");};return nil ;};func (_gcc *Page )GetResolutionX ()(int ,error ){return _gcc .getResolutionX ()};func (_bfca *Page )AddEndOfPageSegment (){_bae :=&_df .Header {Type :_df .TEndOfPage ,PageAssociation :_bfca .PageNumber };_bfca .Segments =append (_bfca .Segments ,_bae );};func (_bfff *Page )GetBitmap ()(_bffa *_cdc .Bitmap ,_bgf error ){_b .Log .Trace (_g .Sprintf ("\u005b\u0050\u0041G\u0045\u005d\u005b\u0023%\u0064\u005d\u0020\u0047\u0065\u0074\u0042i\u0074\u006d\u0061\u0070\u0020\u0062\u0065\u0067\u0069\u006e\u0073\u002e\u002e\u002e",_bfff .PageNumber ));defer func (){if _bgf !=nil {_b .Log .Trace (_g .Sprintf ("\u005b\u0050\u0041\u0047\u0045\u005d\u005b\u0023\u0025\u0064\u005d\u0020\u0047\u0065\u0074B\u0069t\u006d\u0061\u0070\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u002e\u0020\u0025\u0076",_bfff .PageNumber ,_bgf ));}else {_b .Log .Trace (_g .Sprintf ("\u005b\u0050\u0041\u0047\u0045\u005d\u005b\u0023\u0025\u0064]\u0020\u0047\u0065\u0074\u0042\u0069\u0074m\u0061\u0070\u0020\u0066\u0069\u006e\u0069\u0073\u0068\u0065\u0064",_bfff .PageNumber ));};}();if _bfff .Bitmap !=nil {return _bfff .Bitmap ,nil ;};_bgf =_bfff .composePageBitmap ();if _bgf !=nil {return nil ,_bgf ;};return _bfff .Bitmap ,nil ;};func (_cba *Document )addSymbolDictionary (_ege int ,_dffd *_cdc .Bitmaps ,_bgdb []int ,_fa map[int ]int ,_fd bool )(*_df .Header ,error ){const _bc ="\u0061\u0064\u0064\u0053ym\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079";_ae :=&_df .SymbolDictionary {};if _bgae :=_ae .InitEncode (_dffd ,_bgdb ,_fa ,_fd );_bgae !=nil {return nil ,_bgae ;};_af :=&_df .Header {Type :_df .TSymbolDictionary ,PageAssociation :_ege ,SegmentData :_ae };if _ege ==0{if _cba .GlobalSegments ==nil {_cba .GlobalSegments =&Globals {};};_cba .GlobalSegments .AddSegment (_af );return _af ,nil ;};_ebf ,_fcb :=_cba .Pages [_ege ];if !_fcb {return nil ,_gd .Errorf (_bc ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_ege );};var (_gcb int ;_bee *_df .Header ;);for _gcb ,_bee =range _ebf .Segments {if _bee .Type ==_df .TPageInformation {break ;};};_gcb ++;_ebf .Segments =append (_ebf .Segments ,nil );copy (_ebf .Segments [_gcb +1:],_ebf .Segments [_gcb :]);_ebf .Segments [_gcb ]=_af ;return _af ,nil ;};type Document struct{Pages map[int ]*Page ;NumberOfPagesUnknown bool ;NumberOfPages uint32 ;GBUseExtTemplate bool ;InputStream _cd .StreamReader ;GlobalSegments *Globals ;OrganizationType _df .OrganizationType ;Classer *_bf .Classer ;XRes ,YRes int ;FullHeaders bool ;CurrentSegmentNumber uint32 ;AverageTemplates *_cdc .Bitmaps ;BaseIndexes []int ;Refinement bool ;RefineLevel int ;_ag uint8 ;_agc *_cd .BufferedWriter ;EncodeGlobals bool ;_f int ;_fc map[int ][]int ;_add map[int ][]int ;_adg []int ;_gb map[int ]int ;};func (_cgb *Document )GetGlobalSegment (i int )(*_df .Header ,error ){_deb ,_dge :=_cgb .GlobalSegments .GetSegment (i );if _dge !=nil {return nil ,_gd .Wrap (_dge ,"\u0047\u0065t\u0047\u006c\u006fb\u0061\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074","");};return _deb ,nil ;};func (_cbe *Page )addTextRegionSegment (_efd []*_df .Header ,_cdaa ,_eff map[int ]int ,_fea []int ,_cfd *_cdc .Points ,_cbgf *_cdc .Bitmaps ,_adbg *_gg .IntSlice ,_gfe *_cdc .Boxes ,_ge ,_gef int ){_cgce :=&_df .TextRegion {NumberOfSymbols :uint32 (_gef )};_cgce .InitEncode (_cdaa ,_eff ,_fea ,_cfd ,_cbgf ,_adbg ,_gfe ,_cbe .FinalWidth ,_cbe .FinalHeight ,_ge );_dgb :=&_df .Header {RTSegments :_efd ,SegmentData :_cgce ,PageAssociation :_cbe .PageNumber ,Type :_df .TImmediateTextRegion };_abb :=_df .TPageInformation ;if _eff !=nil {_abb =_df .TSymbolDictionary ;};var _ggg int ;for ;_ggg < len (_cbe .Segments );_ggg ++{if _cbe .Segments [_ggg ].Type ==_abb {_ggg ++;break ;};};_cbe .Segments =append (_cbe .Segments ,nil );copy (_cbe .Segments [_ggg +1:],_cbe .Segments [_ggg :]);_cbe .Segments [_ggg ]=_dgb ;};func (_bdg *Document )parseFileHeader ()error {const _fgd ="\u0070a\u0072s\u0065\u0046\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_ ,_eaac :=_bdg .InputStream .Seek (8,_ad .SeekStart );if _eaac !=nil {return _gd .Wrap (_eaac ,_fgd ,"\u0069\u0064");};_ ,_eaac =_bdg .InputStream .ReadBits (5);if _eaac !=nil {return _gd .Wrap (_eaac ,_fgd ,"\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074\u0073");};_dbb ,_eaac :=_bdg .InputStream .ReadBit ();if _eaac !=nil {return _gd .Wrap (_eaac ,_fgd ,"\u0065x\u0074e\u006e\u0064\u0065\u0064\u0020t\u0065\u006dp\u006c\u0061\u0074\u0065\u0073");};if _dbb ==1{_bdg .GBUseExtTemplate =true ;};_dbb ,_eaac =_bdg .InputStream .ReadBit ();if _eaac !=nil {return _gd .Wrap (_eaac ,_fgd ,"\u0075\u006e\u006b\u006eow\u006e\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};if _dbb !=1{_bdg .NumberOfPagesUnknown =false ;};_dbb ,_eaac =_bdg .InputStream .ReadBit ();if _eaac !=nil {return _gd .Wrap (_eaac ,_fgd ,"\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074\u0069\u006f\u006e \u0074\u0079\u0070\u0065");};_bdg .OrganizationType =_df .OrganizationType (_dbb );if !_bdg .NumberOfPagesUnknown {_bdg .NumberOfPages ,_eaac =_bdg .InputStream .ReadUint32 ();if _eaac !=nil {return _gd .Wrap (_eaac ,_fgd ,"\u006eu\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0061\u0067\u0065\u0073");};_bdg ._ag =13;};return nil ;};func (_gcbd *Page )fitsPage (_acca *_df .PageInformationSegment ,_bbf *_cdc .Bitmap )bool {return _gcbd .countRegions ()==1&&_acca .DefaultPixelValue ()==0&&_acca .PageBMWidth ==_bbf .Width &&_acca .PageBMHeight ==_bbf .Height ;};func (_dab *Document )nextSegmentNumber ()uint32 {_dadg :=_dab .CurrentSegmentNumber ;_dab .CurrentSegmentNumber ++;return _dadg ;};func (_dbd *Page )createStripedPage (_eaba *_df .PageInformationSegment )error {const _bgde ="\u0063\u0072\u0065\u0061\u0074\u0065\u0053\u0074\u0072\u0069\u0070\u0065d\u0050\u0061\u0067\u0065";_edg ,_caa :=_dbd .collectPageStripes ();if _caa !=nil {return _gd .Wrap (_caa ,_bgde ,"");};var _ecee int ;for _ ,_beec :=range _edg {if _fbgg ,_aedg :=_beec .(*_df .EndOfStripe );_aedg {_ecee =_fbgg .LineNumber ()+1;}else {_agfc :=_beec .(_df .Regioner );_gcg :=_agfc .GetRegionInfo ();_dfd :=_dbd .getCombinationOperator (_eaba ,_gcg .CombinaionOperator );_fcf ,_dae :=_agfc .GetRegionBitmap ();if _dae !=nil {return _gd .Wrap (_dae ,_bgde ,"");};_dae =_cdc .Blit (_fcf ,_dbd .Bitmap ,int (_gcg .XLocation ),_ecee ,_dfd );if _dae !=nil {return _gd .Wrap (_dae ,_bgde ,"");};};};return nil ;};func (_eedd *Page )collectPageStripes ()(_fbe []_df .Segmenter ,_gdc error ){const _cbge ="\u0063o\u006cl\u0065\u0063\u0074\u0050\u0061g\u0065\u0053t\u0072\u0069\u0070\u0065\u0073";var _dbcgg _df .Segmenter ;for _ ,_dbdc :=range _eedd .Segments {switch _dbdc .Type {case 6,7,22,23,38,39,42,43:_dbcgg ,_gdc =_dbdc .GetSegmentData ();if _gdc !=nil {return nil ,_gd .Wrap (_gdc ,_cbge ,"");};_fbe =append (_fbe ,_dbcgg );case 50:_dbcgg ,_gdc =_dbdc .GetSegmentData ();if _gdc !=nil {return nil ,_gdc ;};_gcce ,_ccae :=_dbcgg .(*_df .EndOfStripe );if !_ccae {return nil ,_gd .Errorf (_cbge ,"\u0045\u006e\u0064\u004f\u0066\u0053\u0074\u0072\u0069\u0070\u0065\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u006f\u0066\u0020\u0076\u0061l\u0069\u0064\u0020\u0074\u0079p\u0065\u003a \u0027\u0025\u0054\u0027",_dbcgg );};_fbe =append (_fbe ,_gcce );_eedd .FinalHeight =_gcce .LineNumber ();};};return _fbe ,nil ;};func (_ggb *Page )GetWidth ()(int ,error ){return _ggb .getWidth ()};func (_cbd *Page )createNormalPage (_aeeb *_df .PageInformationSegment )error {const _adf ="\u0063\u0072e\u0061\u0074\u0065N\u006f\u0072\u006d\u0061\u006c\u0050\u0061\u0067\u0065";_cbd .Bitmap =_cdc .New (_aeeb .PageBMWidth ,_aeeb .PageBMHeight );if _aeeb .DefaultPixelValue ()!=0{_cbd .Bitmap .SetDefaultPixel ();};for _ ,_aad :=range _cbd .Segments {switch _aad .Type {case 6,7,22,23,38,39,42,43:_b .Log .Trace ("\u0047\u0065\u0074\u0074in\u0067\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0064",_aad .SegmentNumber );_cceg ,_fec :=_aad .GetSegmentData ();if _fec !=nil {return _fec ;};_ddca ,_aabd :=_cceg .(_df .Regioner );if !_aabd {_b .Log .Debug ("\u0053\u0065g\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0054\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0052\u0065\u0067\u0069on\u0065\u0072",_cceg );return _gd .Errorf (_adf ,"i\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006a\u0062i\u0067\u0032\u0020\u0073\u0065\u0067\u006den\u0074\u0020\u0074\u0079p\u0065\u0020\u002d\u0020\u006e\u006f\u0074\u0020\u0061 R\u0065\u0067i\u006f\u006e\u0065\u0072\u003a\u0020\u0025\u0054",_cceg );};_gce ,_fec :=_ddca .GetRegionBitmap ();if _fec !=nil {return _gd .Wrap (_fec ,_adf ,"");};if _cbd .fitsPage (_aeeb ,_gce ){_cbd .Bitmap =_gce ;}else {_egeg :=_ddca .GetRegionInfo ();_fbg :=_cbd .getCombinationOperator (_aeeb ,_egeg .CombinaionOperator );_fec =_cdc .Blit (_gce ,_cbd .Bitmap ,int (_egeg .XLocation ),int (_egeg .YLocation ),_fbg );if _fec !=nil {return _gd .Wrap (_fec ,_adf ,"");};};};};return nil ;};type Page struct{Segments []*_df .Header ;PageNumber int ;Bitmap *_cdc .Bitmap ;FinalHeight int ;FinalWidth int ;ResolutionX int ;ResolutionY int ;IsLossless bool ;Document *Document ;FirstSegmentNumber int ;EncodingMethod EncodingMethod ;};func (_fcg *Page )countRegions ()int {var _eac int ;for _ ,_fbb :=range _fcg .Segments {switch _fbb .Type {case 6,7,22,23,38,39,42,43:_eac ++;};};return _eac ;};func (_dee *Page )getResolutionX ()(int ,error ){const _feaf ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0058";if _dee .ResolutionX !=0{return _dee .ResolutionX ,nil ;};_dfff :=_dee .getPageInformationSegment ();if _dfff ==nil {return 0,_gd .Error (_feaf ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_bdfa ,_edb :=_dfff .GetSegmentData ();if _edb !=nil {return 0,_gd .Wrap (_edb ,_feaf ,"");};_cee ,_aceb :=_bdfa .(*_df .PageInformationSegment );if !_aceb {return 0,_gd .Errorf (_feaf ,"\u0070\u0061\u0067\u0065\u0020\u0069n\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0020\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073 \u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070e\u003a \u0027\u0025\u0054\u0027",_bdfa );};_dee .ResolutionX =_cee .ResolutionX ;return _dee .ResolutionX ,nil ;};func (_gac *Page )GetHeight ()(int ,error ){return _gac .getHeight ()};func (_fdac *Page )clearSegmentData (){for _aeee :=range _fdac .Segments {_fdac .Segments [_aeee ].CleanSegmentData ();};};func (_cgfe *Page )getResolutionY ()(int ,error ){const _ead ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0059";if _cgfe .ResolutionY !=0{return _cgfe .ResolutionY ,nil ;};_afee :=_cgfe .getPageInformationSegment ();if _afee ==nil {return 0,_gd .Error (_ead ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_bdgf ,_bgda :=_afee .GetSegmentData ();if _bgda !=nil {return 0,_gd .Wrap (_bgda ,_ead ,"");};_dfbb ,_dbf :=_bdgf .(*_df .PageInformationSegment );if !_dbf {return 0,_gd .Errorf (_ead ,"\u0070\u0061\u0067\u0065\u0020\u0069\u006e\u0066o\u0072\u006d\u0061ti\u006f\u006e\u0020\u0073\u0065\u0067m\u0065\u006e\u0074\u0020\u0069\u0073\u0020\u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006ci\u0064\u0020\u0074\u0079\u0070\u0065\u003a\u0027%\u0054\u0027",_bdgf );};_cgfe .ResolutionY =_dfbb .ResolutionY ;return _cgfe .ResolutionY ,nil ;};func (_dbcg *Page )Encode (w _cd .BinaryWriter )(_bfcb int ,_bce error ){const _aac ="P\u0061\u0067\u0065\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _geg int ;for _ ,_bca :=range _dbcg .Segments {if _geg ,_bce =_bca .Encode (w );_bce !=nil {return _bfcb ,_gd .Wrap (_bce ,_aac ,"");};_bfcb +=_geg ;};return _bfcb ,nil ;};func (_ebac *Page )nextSegmentNumber ()uint32 {return _ebac .Document .nextSegmentNumber ()};func _eda (_bbg *Document ,_acc int )*Page {return &Page {Document :_bbg ,PageNumber :_acc ,Segments :[]*_df .Header {}};};func (_ba *Document )AddClassifiedPage (bm *_cdc .Bitmap ,method _bf .Method )(_bd error ){const _bg ="\u0044\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002e\u0041\u0064d\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064P\u0061\u0067\u0065";if !_ba .FullHeaders &&_ba .NumberOfPages !=0{return _gd .Error (_bg ,"\u0064\u006f\u0063\u0075\u006de\u006e\u0074\u0020\u0061\u006c\u0072\u0065a\u0064\u0079\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0020\u0070\u0061\u0067\u0065\u002e\u0020\u0046\u0069\u006c\u0065\u004d\u006f\u0064\u0065\u0020\u0064\u0069\u0073\u0061\u006c\u006c\u006f\u0077\u0073\u0020\u0061\u0064\u0064i\u006e\u0067\u0020\u006d\u006f\u0072\u0065\u0020\u0074\u0068\u0061\u006e \u006f\u006e\u0065\u0020\u0070\u0061g\u0065");};if _ba .Classer ==nil {if _ba .Classer ,_bd =_bf .Init (_bf .DefaultSettings ());_bd !=nil {return _gd .Wrap (_bd ,_bg ,"");};};_bga :=int (_ba .nextPageNumber ());_ca :=&Page {Segments :[]*_df .Header {},Bitmap :bm ,Document :_ba ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,PageNumber :_bga };_ba .Pages [_bga ]=_ca ;switch method {case _bf .RankHaus :_ca .EncodingMethod =RankHausEM ;case _bf .Correlation :_ca .EncodingMethod =CorrelationEM ;};_ca .AddPageInformationSegment ();if _bd =_ba .Classer .AddPage (bm ,_bga ,method );_bd !=nil {return _gd .Wrap (_bd ,_bg ,"");};if _ba .FullHeaders {_ca .AddEndOfPageSegment ();};return nil ;};type Globals struct{Segments []*_df .Header ;};type EncodingMethod int ;func (_gdfe *Page )GetSegment (number int )(*_df .Header ,error ){const _afe ="\u0050a\u0067e\u002e\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074";for _ ,_dec :=range _gdfe .Segments {if _dec .SegmentNumber ==uint32 (number ){return _dec ,nil ;};};_eag :=make ([]uint32 ,len (_gdfe .Segments ));for _eed ,_ggf :=range _gdfe .Segments {_eag [_eed ]=_ggf .SegmentNumber ;};return nil ,_gd .Errorf (_afe ,"\u0073e\u0067\u006d\u0065n\u0074\u0020\u0077i\u0074h \u006e\u0075\u006d\u0062\u0065\u0072\u003a \u0027\u0025\u0064\u0027\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u0020\u0069\u006e\u0020\u0074\u0068\u0065\u0020\u0070\u0061\u0067\u0065\u003a\u0020'%\u0064'\u002e\u0020\u004b\u006e\u006f\u0077n\u0020\u0073\u0065\u0067\u006de\u006e\u0074\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0073\u003a \u0025\u0076",number ,_gdfe .PageNumber ,_eag );};const (GenericEM EncodingMethod =iota ;CorrelationEM ;RankHausEM ;);func (_ebd *Page )createPage (_bab *_df .PageInformationSegment )error {var _gffb error ;if !_bab .IsStripe ||_bab .PageBMHeight !=-1{_gffb =_ebd .createNormalPage (_bab );}else {_gffb =_ebd .createStripedPage (_bab );};return _gffb ;};func (_aga *Document )completeClassifiedPages ()(_ac error ){const _fe ="\u0063\u006f\u006dpl\u0065\u0074\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067\u0065\u0073";if _aga .Classer ==nil {return nil ;};_aga ._adg =make ([]int ,_aga .Classer .UndilatedTemplates .Size ());for _dga :=0;_dga < _aga .Classer .ClassIDs .Size ();_dga ++{_aa ,_ee :=_aga .Classer .ClassIDs .Get (_dga );if _ee !=nil {return _gd .Wrapf (_ee ,_fe ,"\u0063\u006c\u0061\u0073s \u0077\u0069\u0074\u0068\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027",_dga );};_aga ._adg [_aa ]++;};var _fcd []int ;for _aae :=0;_aae < _aga .Classer .UndilatedTemplates .Size ();_aae ++{if _aga .NumberOfPages ==1||_aga ._adg [_aae ]> 1{_fcd =append (_fcd ,_aae );};};var (_gbf *Page ;_gdf bool ;);for _cc ,_gc :=range *_aga .Classer .ComponentPageNumbers {if _gbf ,_gdf =_aga .Pages [_gc ];!_gdf {return _gd .Errorf (_fe ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_cc );};if _gbf .EncodingMethod ==GenericEM {_b .Log .Error ("\u0047\u0065\u006e\u0065\u0072\u0069c\u0020\u0070\u0061g\u0065\u0020\u0077i\u0074\u0068\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u003a \u0027\u0025\u0064\u0027\u0020ma\u0070\u0070\u0065\u0064\u0020\u0061\u0073\u0020\u0063\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0020\u0070\u0061\u0067\u0065",_cc );continue ;};_aga ._add [_gc ]=append (_aga ._add [_gc ],_cc );_cce ,_gf :=_aga .Classer .ClassIDs .Get (_cc );if _gf !=nil {return _gd .Wrapf (_gf ,_fe ,"\u006e\u006f\u0020\u0073uc\u0068\u0020\u0063\u006c\u0061\u0073\u0073\u0049\u0044\u003a\u0020\u0025\u0064",_cc );};if _aga ._adg [_cce ]==1&&_aga .NumberOfPages !=1{_db :=append (_aga ._fc [_gc ],_cce );_aga ._fc [_gc ]=_db ;};};if _ac =_aga .Classer .ComputeLLCorners ();_ac !=nil {return _gd .Wrap (_ac ,_fe ,"");};if _ ,_ac =_aga .addSymbolDictionary (0,_aga .Classer .UndilatedTemplates ,_fcd ,_aga ._gb ,false );_ac !=nil {return _gd .Wrap (_ac ,_fe ,"");};return nil ;};func DecodeDocument (input _cd .StreamReader ,globals *Globals )(*Document ,error ){return _bge (input ,globals );};