2020-11-11 18:48:37 +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 (_c "encoding/binary";_ee "fmt";_da "github.com/unidoc/unipdf/v3/common";_a "github.com/unidoc/unipdf/v3/internal/bitwise";_edc "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_dac "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";_db "github.com/unidoc/unipdf/v3/internal/jbig2/document/segments";_b "github.com/unidoc/unipdf/v3/internal/jbig2/encoder/classer";_fa "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_ed "io";_e "math";_d "runtime/debug";);func (_ffbg *Page )createPage (_ffdf *_db .PageInformationSegment )error {var _bbbb error ;if !_ffdf .IsStripe ||_ffdf .PageBMHeight !=-1{_bbbb =_ffbg .createNormalPage (_ffdf );}else {_bbbb =_ffbg .createStripedPage (_ffdf );};return _bbbb ;};func (_eec *Document )reachedEOF (_aacd int64 )(bool ,error ){const _gafg ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";_ ,_cde :=_eec .InputStream .Seek (_aacd ,_ed .SeekStart );if _cde !=nil {_da .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",_cde );return false ,_fa .Wrap (_cde ,_gafg ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_cde =_eec .InputStream .ReadBits (32);if _cde ==_ed .EOF {return true ,nil ;}else if _cde !=nil {return false ,_fa .Wrap (_cde ,_gafg ,"");};return false ,nil ;};func (_fg *Document )produceClassifiedPages ()(_dgb error ){const _afb ="\u0070\u0072\u006f\u0064uc\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067e\u0073";if _fg .Classer ==nil {return nil ;};var (_egd *Page ;_aad bool ;_afg *_db .Header ;);for _dgbb :=1;_dgbb <=int (_fg .NumberOfPages );_dgbb ++{if _egd ,_aad =_fg .Pages [_dgbb ];!_aad {return _fa .Errorf (_afb ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_dgbb );};if _egd .EncodingMethod ==GenericEM {continue ;};if _afg ==nil {if _afg ,_dgb =_fg .GlobalSegments .GetSymbolDictionary ();_dgb !=nil {return _fa .Wrap (_dgb ,_afb ,"");};};if _dgb =_fg .produceClassifiedPage (_egd ,_afg );_dgb !=nil {return _fa .Wrapf (_dgb ,_afb ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_dgbb );};};return nil ;};func (_gec *Page )GetWidth ()(int ,error ){return _gec .getWidth ()};func _adea (_dge _a .StreamReader ,_ggc *Globals )(*Document ,error ){_acbg :=&Document {Pages :make (map[int ]*Page ),InputStream :_dge ,OrganizationType :_db .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_ggc ,_g :9};if _acbg .GlobalSegments ==nil {_acbg .GlobalSegments =&Globals {};};if _fb :=_acbg .mapData ();_fb !=nil {return nil ,_fb ;};return _acbg ,nil ;};func (_bdad *Page )nextSegmentNumber ()uint32 {return _bdad .Document .nextSegmentNumber ()};func _ce (_ac int )int {_acc :=0;_fac :=(_ac &(_ac -1))==0;_ac >>=1;for ;_ac !=0;_ac >>=1{_acc ++;};if _fac {return _acc ;};return _acc +1;};func (_ddd *Page )clearSegmentData (){for _egf :=range _ddd .Segments {_ddd .Segments [_egf ].CleanSegmentData ();};};type Globals struct{Segments []*_db .Header ;};func (_dcae *Page )countRegions ()int {var _bge int ;for _ ,_gdfd :=range _dcae .Segments {switch _gdfd .Type {case 6,7,22,23,38,39,42,43:_bge ++;};};return _bge ;};func DecodeDocument (input _a .StreamReader ,globals *Globals )(*Document ,error ){return _adea (input ,globals );};func (_bgd *Document )produceClassifiedPage (_cc *Page ,_gaf *_db .Header )(_adf error ){const _bdd ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";var _de map[int ]int ;_adb :=_bgd ._bc ;_dbe :=[]*_db .Header {_gaf };if len (_bgd ._eg [_cc .PageNumber ])> 0{_de =map[int ]int {};_aadb ,_dfb :=_bgd .addSymbolDictionary (_cc .PageNumber ,_bgd .Classer .UndilatedTemplates ,_bgd ._eg [_cc .PageNumber ],_de ,false );if _dfb !=nil {return _fa .Wrap (_dfb ,_bdd ,"");};_dbe =append (_dbe ,_aadb );_adb +=len (_bgd ._eg [_cc .PageNumber ]);};_ade :=_bgd ._aa [_cc .PageNumber ];_da .Log .Debug ("P\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020c\u006f\u006d\u0070\u0073: \u0025\u0076",_cc .PageNumber ,_ade );_cc .addTextRegionSegment (_dbe ,_bgd ._ge ,_de ,_bgd ._aa [_cc .PageNumber ],_bgd .Classer .PtaLL ,_bgd .Classer .UndilatedTemplates ,_bgd .Classer .ClassIDs ,nil ,_ce (_adb ),len (_bgd ._aa [_cc .PageNumber ]));return nil ;};func (_fae *Document )parseFileHeader ()error {const _fadf ="\u0070a\u0072s\u0065\u0046\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_ ,_gcb :=_fae .InputStream .Seek (8,_ed .SeekStart );if _gcb !=nil {return _fa .Wrap (_gcb ,_fadf ,"\u0069\u0064");};_ ,_gcb =_fae .InputStream .ReadBits (5);if _gcb !=nil {return _fa .Wrap (_gcb ,_fadf ,"\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074\u0073");};_bec ,_gcb :=_fae .InputStream .ReadBit ();if _gcb !=nil {return _fa .Wrap (_gcb ,_fadf ,"\u0065x\u0074e\u006e\u0064\u0065\u0064\u0020t\u0065\u006dp\u006c\u0061\u0074\u0065\u0073");};if _bec ==1{_fae .GBUseExtTemplate =true ;};_bec ,_gcb =_fae .InputStream .ReadBit ();if _gcb !=nil {return _fa .Wrap (_gcb ,_fadf ,"\u0075\u006e\u006b\u006eow\u006e\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};if _bec !=1{_fae .NumberOfPagesUnknown =false ;};_bec ,_gcb =_fae .InputStream .ReadBit ();if _gcb !=nil {return _fa .Wrap (_gcb ,_fadf ,"\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074\u0069\u006f\u006e \u0074\u0079\u0070\u0065");};_fae .OrganizationType =_db .OrganizationType (_bec );if !_fae .NumberOfPagesUnknown {_fae .NumberOfPages ,_gcb =_fae .InputStream .ReadUint32 ();if _gcb !=nil {return _fa .Wrap (_gcb ,_fadf ,"\u006eu\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0061\u0067\u0065\u0073");};_fae ._g =13;};return nil ;};func (_gae *Document )GetPage (pageNumber int )(_db .Pager ,error ){const _fdb ="\u0044\u006fc\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074\u0050\u0061\u0067\u0065";if pageNumber < 0{_da .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 ,_d .Stack ());return nil ,_fa .Errorf (_fdb ,"\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 (_gae .Pages ){_da .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_d .Stack ());return nil ,_fa .Error (_fdb ,"\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");};_agac ,_afdg :=_gae .Pages [pageNumber ];if !_afdg {_da .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_d .Stack ());return nil ,_fa .Errorf (_fdb ,"\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 _agac ,nil ;};type Document struct{Pages map[int ]*Page ;NumberOfPagesUnknown bool ;NumberOfPages uint32 ;GBUseExtTemplate bool ;InputStream _a .StreamReader ;GlobalSegments *Globals ;OrganizationType _db .OrganizationType ;Classer *_b .Classer ;XRes ,YRes int ;FullHeaders bool ;CurrentSegmentNumber uint32 ;AverageTemplates *_dac .Bitmaps ;BaseIndexes []int ;Refinement bool ;RefineLevel int ;_g uint8 ;_bd *_a .BufferedWriter ;EncodeGlobals bool ;_bc int ;_eg map[int ][]int ;_aa map[int ][]int ;_gb []int ;_ge map[int ]int ;};func (_egg *Globals )GetSymbolDictionary ()(*_db .Header ,error ){const _cdea ="G\u006c\u006f\u0062\u0061\u006c\u0073.\u0047\u0065\u0074\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079";if _egg ==nil {return nil ,_fa .Error (_cdea ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_egg .Segments )==0{return nil ,_fa .Error (_cdea ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};for _ ,_cdg :=range _egg .Segments {if _cdg .Type ==_db .TSymbolDictionary {return _cdg ,nil ;};};return nil ,_fa .Error (_cdea ,"\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 (_acf *Page )getCombinationOperator (_def *_db .PageInformationSegment ,_abe _dac .CombinationOperator )_dac .CombinationOperator {if _def .CombinationOperatorOverrideAllowed (){return _abe ;};return _def .CombinationOperator ();};func (_efe *Page )composePageBitmap ()error {const _cda ="\u0063\u006f\u006d\u0070\u006f\u0073\u0065\u0050\u0061\u0067\u0065\u0042i\u0074\u006d\u0061\u0070";if _efe .PageNumber ==0{return nil ;};_gcf :=_efe .getPageInformationSegment ();if _gcf ==nil {return _fa .Error (_cda ,"\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");};_ebf ,_dbec :=_gcf .GetSegmentData ();if _dbec !=nil {return _dbec ;};_gaaa ,_bafa :=_ebf .(*_db .PageInformationSegment );if !_bafa {return _fa .Error (_cda ,"\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 _dbec =_efe .createPage (_gaaa );_dbec !=nil {return _fa .Wrap (_dbec ,_cda ,"");};_efe .clearSegmentData ();return nil ;};func (_ff *Document )AddGenericPage (bm *_dac .Bitmap ,duplicateLineRemoval bool )(_ca error ){const _cg ="\u0044\u006f\u0063um\u0065\u006e\u0074\u002e\u0041\u0064\u0064\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0050\u0061\u0067\u0065";if !_ff .FullHeaders &&_ff .NumberOfPages !=0{return _fa .Error (_cg ,"\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");};_ga :=&Page {Segments :[]*_db .Header {},Bitmap :bm ,Document :_ff ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,IsLossless :true };_ga .PageNumber =int (_ff .nextPageNumber ());_ff .Pages [_ga .PageNumber ]=_ga ;_ga .AddPageInformationSegment ();if _ca =_ga .AddGenericRegion (bm ,0,0,0,_db .TImmediateGenericRegion ,duplicateLineRemoval );_ca !=nil {return _fa .Wrap (_ca ,_cg ,"");};if _ff .FullHeaders {_ga .AddEndOfPageSegment ();};return nil ;};func (_bgb *Document )determineRandomDataOffsets (_bdc []*_db .Header ,_bgdg uint64 ){if _bgb .OrganizationType !=_db .ORandom {return ;};for _ ,_cae :=range _bdc {_cae .SegmentDataStartOffset =_bgdg ;_bgdg +=_cae .SegmentDataLength ;};};func (_ebfc *Page )getWidth ()(int ,error ){const _cacf ="\u0067\u0065\u0074\u0057\u0069\u0064\u0074\u0068";if _ebfc .FinalWidth !=0{return _ebfc .FinalWidth ,nil ;};_acbd :=_ebfc .getPageInformationSegment ();if _acbd ==nil {return 0,_fa .Error (_cacf ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_eaad ,_eefg :=_acbd .GetSegmentData ();if _eefg !=nil {return 0,_fa .Wrap (_eefg ,_cacf ,"");};_ecc ,_edb :=_eaad .(*_db .PageInformationSegment );if !_edb {return 0,_fa .Errorf (_cacf ,"\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",_eaad );};_ebfc .FinalWidth =_ecc .PageBMWidth ;return _ebfc .FinalWidth ,nil ;};func (_bbbg *Page )AddEndOfPageSegment (){_egc :=&_db .Header {Type :_db .TEndOfPage ,PageAssociation :_bbbg .PageNumber };_bbbg .Segments =append (_bbbg .Segments ,_egc );};func (_gecd *Page )createNormalPage (_dbee *_db .PageInformationSegment )error {const _eaec ="\u0063\u0072e\u0061\u0074\u0065N\u006f\u0072\u006d\u0061\u006c\u0050\u0061\u0067\u0065";_gecd .Bitmap =_dac .New (_dbee .PageBMWidth ,_dbee .PageBMHeight );if _dbee .DefaultPixelValue ()!=0{_gecd .Bitmap .SetDefaultPixel ();};for _ ,_dca :=range _gecd .Segments {switch _dca .Type {case 6,7,22,23,38,39,42,43:_da .Log .Trace ("\u0047\u0065\u0074\u0074in\u0067\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0064",_dca .SegmentNumber );_gebg ,_aed :=_dca .GetSegmentData ();if _aed !=nil {return _aed ;};_bda ,_bdfe :=_gebg .(_db .Regioner );if !_bdfe {_da .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",_gebg );return _fa .Errorf (_eaec ,"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",_gebg );};_efec ,_aed :=_bda .GetRegionBitmap ();if _aed !=nil {return _fa .Wrap (_aed ,_eaec ,"");};if _gecd .fitsPage (_dbee ,_efec ){_gecd .Bitmap =_efec ;}else {_cee :=_bda .GetRegionInfo ();_dea :=_gecd .getCombinationOperator (_dbee ,_cee .CombinaionOperator );_aed =_dac .Blit (_efec ,_gecd .Bitmap ,int (_cee .XLocation ),int (_cee .YLocation ),_dea );if _aed !=nil {return _fa .Wrap (_aed ,_eaec ,"");};};};};return nil ;};func (_gcbf *Page )lastSegmentNumber ()(_dfca uint32 ,_cef error ){const _ddf ="\u006c\u0061\u0073\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";if len (_gcbf .Segments )==0{return _dfca ,_fa .Errorf (_ddf ,"\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",_gcbf .PageNumber );};return _gcbf .Segments [len (_gcbf .Segments )-1].SegmentNumber ,nil ;};func (_edad *Page )String ()string {return _ee .Sprintf ("\u0050\u0061\u0067\u0065\u0020\u0023\u0025\u0064",_edad .PageNumber );};func (_bdf *Document )completeSymbols ()(_ggae error ){const _dbc ="\u0063o\u006dp\u006c\u0065\u0074\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";if _bdf .Classer ==nil {return nil ;};if _bdf .Classer .UndilatedTemplates ==nil {return _fa .Error (_dbc ,"\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");};_ccf :=len (_bdf .Pages )==1;_bbb :=make ([]int ,_bdf .Classer .UndilatedTemplates .Size ());var _ab int ;for _ba :=0;_ba < _bdf .Classer .ClassIDs .Size ();_ba ++{_ab ,_ggae =_bdf .Classer .ClassIDs .Get (_ba );if _ggae !=nil {return _fa .Wrap (_ggae ,_dbc ,"\u0063\u006c\u0061\u0073\u0073\u0020\u0049\u0044\u0027\u0073");};_bbb [_ab ]++;};var _ae []int ;for _accc :=0;_accc < _bdf .Classer .UndilatedTemplates .Size ();_accc ++{if _bbb [_accc ]==0{return _fa .Error (_dbc ,"\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 _bbb [_accc ]> 1||_ccf {_ae =append (_ae ,_accc );};};_bdf ._bc =len (_ae );var _cec ,_bcc int ;for _bgab :=0;_bgab < _bdf .Classer .ComponentPageNumbers .Size ();_bgab ++{_cec ,_ggae =_bdf .Classer .ComponentPageNumbers .Get (_bgab );if _ggae !=nil {return _fa .Wrapf (_ggae ,_dbc ,"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",_bgab );};_bcc ,_ggae =_bdf .Classer .ClassIDs .Get (_bgab );if _ggae !=nil {return _fa .Wrapf (_ggae ,_dbc ,"\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",_cec );};if _bbb [_bcc ]==1&&!_ccf {_bdf ._eg [_cec ]=append (_bdf ._eg [_cec ],_bcc );};};if _ggae =_bdf .Classer .ComputeLLCorners ();_ggae !=nil {return _fa .Wrap (_ggae ,_dbc ,"");};return nil ;};func (_bbee *Globals )GetSegment (segmentNumber int )(*_db .Header ,error ){const _aeg ="\u0047l\u006fb\u0061\u006c\u0073\u002e\u0047e\u0074\u0053e\u0067\u006d\u0065\u006e\u0074";if _bbee ==nil {return nil ,_fa .Error (_aeg ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_bbee .Segments )==0{return nil ,_fa .Error (_aeg ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};var _bdff *_db .Header ;for _ ,_bdff =range _bbee .Segments {if _bdff .SegmentNumber ==uint32 (segmentNumber ){break ;};};if _bdff ==nil {return nil ,_fa .Error (_aeg ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};return _bdff ,nil ;};const (GenericEM EncodingMethod =iota ;CorrelationEM ;RankHausEM ;);func (_dgcd *Page )fitsPage (_fbe *_db .PageInformationSegment ,_dgf *_dac .Bitmap )bool {return _dgcd .countRegions ()==1&&_fbe .DefaultPixelValue ()==0&&_fbe .PageBMWidth ==_dgf .Width &&_fbe .PageBMHeight ==_dgf .Height ;};func (_agdf *Page )AddGenericRegion (bm *_dac .Bitmap ,xloc ,yloc ,template int ,tp _db .Type ,duplicateLineRemoval bool )error {const _gbf ="P\u0061\u0067\u0065\u002eAd\u0064G\u0065\u006e\u0065\u0072\u0069c\u0052\u0065\u0067\u0069\u006f\u006e";_afgg :=&_db .GenericRegion {};if _eaf :=_afgg .InitEncode (bm ,xloc ,yloc ,template ,duplicateLineRemoval );_eaf !=nil {return _fa .Wrap (_eaf ,_gbf ,"");};_fge :=&_db .Header {Type :_db .TImmediateGenericRegion ,PageAssociation :_agdf .PageNumber ,SegmentData :_afgg };_agdf .Segments =append (_agdf .Segments ,_fge );return nil ;};func (_aee *Page )createStripedPage (_ceaf *_db .PageInformationSegment )error {const _bgbe ="\u0063\u0072\u0065\u0061\u0074\u0065\u0053\u0074\u0072\u0069\u0070\u0065d\u0050\u0061\u0067\u0065";_ede ,_eaecf :=_aee .collectPageStripes ();if _eaecf !=nil {return _fa .Wrap (_eaecf ,_bgbe ,"");};var _cfe int ;for _ ,_cfd :=range _ede {if _ceb ,_aeac :=_cfd .(*_db .EndOfStripe );_aeac {_cfe =_ceb .LineNumber ()+1;}else {_afgd :=_cfd .(_db .Regioner );_gdc :=_afgd .GetRegionInfo ();_egad :=_aee .getCombinationOperator (_ceaf ,_gdc .CombinaionOperator );_ebbg ,_deg :=_afgd .GetRegionBitmap ();if _deg !=nil {return _fa .Wrap (_deg ,_bgbe ,"");};_deg =_dac .Blit (_ebbg ,_aee .Bitmap ,int (_gdc .XLocation ),_cfe ,_egad );if _deg !=nil {return _fa .Wrap (_deg ,_bgbe ,"");};};};return nil ;};func (_bee *Document )completeClassifiedPages ()(_aac error ){const _bg ="\u0063\u006f\u006dpl\u0065\u0074\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067\u0065\u0073";if _bee .Classer ==nil {return nil ;};_bee ._gb =make ([]int ,_bee .Classer .UndilatedTemplates .Size ());for _bca :=0;_bca < _bee .Classer .ClassIDs .Size ();_bca ++{_ec ,_gg :=_bee .Classer .ClassIDs .Get (_bca );if _gg !=nil {return _fa .Wrapf (_gg ,_bg ,"\u0063\u006c\u0061\u0073s \u0077\u0069\u0074\u0068\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027",_bca );};_bee ._gb [_ec ]++;};var _fff []int ;for _dg :=0;_dg < _bee .Classer .UndilatedTemplates .Size ();_dg ++{if _bee .NumberOfPages ==1||_bee ._gb [_dg ]> 1{_fff =append (_fff ,_dg );};};var (_bb *Page ;_ea bool ;);for _afa ,_ffd :=range *_bee .Classer .ComponentPageNumbers {if _bb ,_ea =_bee .Pages [_ffd ];!_ea {return _fa .Errorf (_bg ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_afa );};if _bb .EncodingMethod ==GenericEM {_da .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",_afa );continue ;};_bee ._aa [_ffd ]=append (_bee ._aa [_ffd ],_afa );_dgc ,_bga :=_bee .Classer .ClassIDs .Get (_afa );if _bga !=nil {return _fa .Wrapf (_bga ,_bg ,"\u006e\u006f\u0020\u0073uc\u0068\u0020\u0063\u006c\u0061\u0073\u0073\u0049\u0044\u003a\u0020\u0025\u0064",_afa );};if _bee ._gb [_dgc ]==1&&_bee .NumberOfPages !=1{_gga :=append (_bee ._eg [_ffd ],_dgc );_bee ._eg [_ffd ]=_gga ;};};if _aac =_bee .Classer .ComputeLLCorners ();_aac !=nil {return _fa .Wrap (_aac ,_bg ,"");};if _ ,_aac =_bee .addSymbolDictionary (0,_bee .Classer .UndilatedTemplates ,_fff ,_bee ._ge ,false );_aac !=nil {return _fa .Wrap (_aac ,_bg ,"");};return nil ;};func (_eda *Document )encodeEOFHeader (_aead _a .BinaryWriter )(_fcf int ,_faf error ){_ggaa :=&_db .Header {SegmentNumber :_eda .nextSegmentNumber (),Type :_db .TEndOfFile };if _fcf ,_faf =_ggaa .Encode (_aead );_faf !=nil {return 0,_fa .Wrap (_faf ,"\u0065n\u0063o\u0064\u0065\u0045\u004f\u0046\u0048\u0065\u0061\u0064\u0065\u0072","");};return _fcf ,nil ;};func (_cbd *Document )mapData ()error {const _adfe ="\u006da\u0070\u0044\u0061\u0074\u0061";var (_dd []*_db .Header ;_dcf int64 ;_fda _db .Type ;);_fab ,_bbe :=_cbd .isFileHeaderPresent ();if _bbe !=nil {return _fa .Wrap (_bbe ,_adfe ,"");};if _fab {if _bbe =_cbd .parseFileHeader ();_bbe !=nil {return _fa .Wrap (_bbe ,_adfe ,"");};_dcf +=int64 (_cbd ._g );_cbd .FullHeaders =true ;};var (_fad *Page ;_gba bool ;);for _fda !=51&&!_gba {_beb ,_cfg :=_db .NewHeader (_cbd ,_cbd .InputStream ,_dcf ,_cbd .OrganizationType );if _cfg !=nil {return _fa .Wrap (_cfg ,_adfe ,"");};_da .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",_beb .SegmentNumber ,_beb .Type );_fda =_beb .Type ;if _fda !=_db .TEndOfFile {if _beb .PageAssociation !=0{_fad =_cbd .Pages [_beb .PageAssociation ];if _fad ==nil {_fad =_efc (_cbd ,_beb .PageAssociation );_cbd .Pages [_beb .PageAssociation ]=_fad ;if _cbd .NumberOfPagesUnknown {_cbd .NumberOfPages ++;};};_fad .Segments =append (_fad .Segments ,_beb );}else {_cbd .GlobalSegments .AddSegment (_beb );};};_dd =append (_dd ,_beb );_dcf =_cbd .InputStream .StreamPosition ();if _cbd .OrganizationType ==_db .OSequential {_dcf +=int64 (_beb .SegmentDataLength );};_gba ,_cfg =_cbd .reachedEOF (_dcf );if _cfg !=nil {_da .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",_cfg );return _fa .Wrap (_cfg ,_adfe ,"");};};_cbd .determineRandomDataOffsets (_dd ,uint64 (_dcf ));return nil ;};func (_cfff *Page )GetHeight ()(int ,error ){return _cfff .getHeight ()};func (_cge *Page )GetResolutionY ()(int ,error ){return _cge .getResolutionY ()};func (_cdb *Page )addTextRegionSegment (_bea []*_db .Header ,_fed ,_efa map[int ]int ,_eddf []int ,_aeb *_dac .Points ,_baa *_dac .Bitmaps ,_edaa *_edc .IntSlice ,_cdc *_dac .Boxes ,_bdcg ,_fgbd int ){_fca :=&_db .TextRegion {NumberOfSymbols :uint32 (_fgbd )};_fca .InitEncode (_fed ,_efa ,_eddf ,_aeb ,_baa ,_edaa ,_cdc ,_cdb .FinalWidth ,_cdb .FinalHeight ,_bdcg );_fag :=&_db .Header {RTSegments :_bea ,SegmentData :_fca ,PageAssociation :_cdb .PageNumber ,Type :_db .TImmediateTextRegion };_aaa :=_db .TPageInformation ;if _efa !=nil {_aaa =_db .TSymbolDictionary ;};var _dbd int ;for ;_dbd < len (_cdb .Segments );_dbd ++{if _cdb .Segments [_dbd ].Type ==_aaa {_dbd ++;break ;};};_cdb .Segments =append (_cdb .Segments ,nil );copy (_cdb .Segments [_dbd +1:],_cdb .Segments [_dbd :]);_cdb .Segments [_dbd ]=_fag ;};func (_aab *Document )encodeFileHeader (_ebb _a .BinaryWriter )(_acb int ,_dbb error ){const _bcb ="\u0065\u006ec\u006f\u0064\u0065F\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_acb ,_dbb =_ebb .Write (_be );if _dbb !=nil {return _acb ,_fa .Wrap (_dbb ,_bcb ,"\u0069\u0064");};if _dbb =_ebb .WriteByte (0x01);_dbb !=nil {return _acb ,_fa .Wrap (_dbb ,_bcb ,"\u0066\u006c\u0061g\u0073");};_acb ++;_baf :=make ([]byte ,4);_c .BigEndian .PutUint32 (_baf ,_aab .NumberOfPages );_gea ,_dbb :=_ebb .Write (_baf );if _dbb !=nil {return _gea ,_fa .Wrap (_dbb ,_bcb ,"p\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_acb +=_gea ;return _acb ,nil ;};func (_ad *Document )AddClassifiedPage (bm *_dac .Bitmap ,method _b .Method )(_af error ){const _bed ="\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 !_ad .FullHeaders &&_ad .NumberOfPages !=0{return _fa .Error (_bed ,"\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 _ad .Classer ==nil {if _ad .Classer ,_af =_b .Init (_b .DefaultSettings ());_af !=nil {return _fa .Wrap (_af ,_bed ,"");};};_gc :=int (_ad .nextPageNumber ());_df :=&Page {Segments :[]*_db .Header {},Bitmap :bm ,Document :_ad ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,PageNumber :_gc };_ad .Pages [_gc ]=_df ;switch method {case _b .RankHaus :_df .EncodingMethod =RankHausEM ;case _b .Correlation :_df .EncodingMethod =CorrelationEM ;};_df .AddPageInformationSegment ();if _af =_ad .Classer .AddPage (bm ,_gc ,method );_af !=nil {return _fa .Wrap (_af ,_bed ,"");};if _ad .FullHeaders {_df .AddEndOfPageSegment ();};return nil ;};func (_ebbe *Document )nextSegmentNumber ()uint32 {_ecg :=_ebbe .CurrentSegmentNumber ;_ebbe .CurrentSegmentNumber ++;return _ecg ;};func (_eef *Page )GetResolutionX ()(int ,error ){return _eef .getResolutionX ()};func (_beae *Page )GetSegment (number int )(*_db .Header ,error ){const _gbbf ="\u0050a\u0067e\u002e\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074";for _ ,_cdge :=range _beae .Segments {if _cdge .SegmentNumber ==uint32 (number ){return _cdge ,nil ;};};_eaab :=make ([]uint32 ,len (_beae .Segments ));for _caec ,_agb :=range _beae .Segments {_eaab [_caec ]=_agb .SegmentNumber ;};return nil ,_fa .Errorf (_gbbf ,"\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 ,_beae .PageNumber ,_eaab );};func (_ffb *Document )GetGlobalSegment (i int )(*_db .Header ,error ){_agaa ,_fgb :=_ffb .GlobalSegments .GetSegment (i );if _fgb !=nil {return nil ,_fa .Wrap (_fgb ,"\u0047\u0065t\u0047\u006c\u006fb\u0061\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074","");};return _agaa ,nil ;};func (_gdf *Page )AddPageInformationSegment (){_gfc :=&_db .PageInformationSegment {PageBMWidth :_gdf .FinalWidth ,PageBMHeight :_gdf .FinalHeight ,ResolutionX :_gdf .ResolutionX ,ResolutionY :_gdf .ResolutionY ,IsLossless :_gdf .IsLossless };_afe :=&_db .Header {PageAssociation :_gdf .PageNumber ,SegmentDataLength :uint64 (_gfc .Size ()),SegmentData :_gfc ,Type :_db .TPageInformation };_gdf .Segments =append (_gdf .Segments ,_afe );};func (_cbdd *Globals )AddSegment (segment *_db .Header ){_cbdd .Segments =append (_cbdd .Segments ,segment );};type Page struct{Segments []*_db .Header ;PageNumber int ;Bitmap *_dac .Bitmap ;FinalHeight int ;FinalWidth int ;ResolutionX int ;ResolutionY int ;IsLossless bool ;Document *Document ;FirstSegmentNumber int ;EncodingMethod EncodingMethod ;};func _efc (_bba *Document ,_bcaa int )*Page {return &Page {Document :_bba ,PageNumber :_bcaa ,Segments :[]*_db .Header {}};};func (_dcc *Document )isFileHeaderPresent ()(bool ,error ){_dcc .InputStream .Mark ();for _ ,_ega :=range _be {_bfa ,_edcg :=_dcc .InputStream .ReadByte ();if _edcg !=nil {return false ,_edcg ;};if _ega !=_bfa {_dcc .InputStream .Reset ();return false ,nil ;};};_dcc .InputStream .Reset ();return true ,nil ;};func (_bgdb *Page )GetBitmap ()(_cff *_dac .Bitmap ,_bfc error ){_da .Log .Trace (_ee .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",_bgdb .PageNumber ));defer func (){if _bfc !=nil {_da .Log .Trace (_ee .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",_bgdb .PageNumber ,_bfc ));}else {_da .Log .Trace (_ee .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",_bgdb .PageNumber ));};}();if _bgdb .Bitmap !=nil {return _bgdb .Bitmap ,nil ;};_bfc =_bgdb .composePageBitmap ();if _bfc !=nil {return nil ,_bfc ;};return _bgdb .Bitmap ,nil ;};func (_afbb *Page )collectPageStripes ()(_fdf []_db .Segmenter ,_bebf error ){const _bcf ="\u0063o\u006cl\u0065\u0063\u0074\u0050\u0061g\u0065\u0053t\u0072\u0069\u0070\u0065\u0073";var _eag _db .Segmenter ;for _ ,_cdd :=range _afbb .Segments {switch _cdd .Type {case 6,7,22,23,38,39,42,43:_eag ,_bebf =_cdd .GetSegmentData ();if _bebf !=nil {return nil ,_fa .Wrap (_bebf ,_bcf ,"");};_fdf =append (_fdf ,_eag );case 50:_eag ,_bebf =_cdd .GetSegmentData ();if _bebf !=nil {return nil ,_bebf ;};_cga ,_ebc :=_eag .(*_db .EndOfStripe );if !_ebc {return nil ,_fa .Errorf (_bcf ,"\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",_eag );};_fdf =append (_fdf ,_cga );_afbb .FinalHeight =_cga .LineNumber ();};};return _fdf ,nil ;};func (_dacb *Page )getResolutionX ()(int ,error ){const _gfb ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0058";if _dacb .ResolutionX !=0{return _dacb .ResolutionX ,nil ;};_caee :=_dacb .getPageInformationSegment ();if _caee ==nil {return 0,_fa .Error (_gfb ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_fedg ,_bde :=_caee .GetSegmentData ();if _bde !=nil {return 0,_fa .Wrap (_bde ,_gfb ,"");};_cad ,_agbe :=_fedg .(*_db .PageInformationSegment );if !_agbe {return 0,_fa .Errorf (_gfb ,"\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",_fedg );};_dacb .ResolutionX =_cad .ResolutionX ;return _dacb .ResolutionX ,nil ;};func InitEncodeDocument (fullHeaders bool )*Document {return &Document {FullHeaders :fullHeaders ,_bd :_a .BufferedMSB (),Pages :map[int ]*Page {},_eg :map[int ][]int {},_ge :map[int ]int {},_aa :map[int ][]int {}};};func (_ggb *Document )nextPageNumber ()uint32 {_ggb .NumberOfPages ++;return _ggb .NumberOfPages };func (_feg *Page )getPageInformationSegment ()*_db .Header {for _ ,_ead :=range _feg .Segments {if _ead .Type ==_db .TPageInformation {return _ead ;};};_da .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",_feg );return nil ;};func (_bcg *Document )Encode ()(_bdb []byte ,_bgad error ){const _cab ="\u0044o\u0063u\u006d\u0065\u006e\u0074\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _eae ,_bccf int ;if _bcg .FullHeaders {if _eae ,_bgad =_bcg .encodeFileHeader (_bcg ._bd );_bgad !=nil {return nil ,_fa .Wrap (_bgad ,_cab ,"");};};var (_aea bool ;_eb *_db .Header ;_geb *Page ;);if _bgad =_bcg .completeClassifiedPages ();_bgad !=nil {return nil ,_fa .Wrap (_bgad ,_cab ,"");};if _bgad =_bcg .produceClassifiedPages ();_bgad !=nil {return nil ,_fa .Wrap (_bgad ,_cab ,"");};if _bcg .GlobalSegments !=nil {for _ ,_eb =range _bcg .GlobalSegments .Segments {if _bgad =_bcg .encodeSegment (_eb ,&_eae );_bgad !=nil {return nil ,_fa .Wrap (_bgad ,_cab ,"");};};};for _faa :=1;_faa <=int (_bcg .NumberOfPages );_faa ++{if _geb ,_aea =_bcg .Pages [_faa ];!_aea {return nil ,_fa .Errorf (_cab ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_faa );};for _ ,_eb =range _geb .Segments {if _bgad =_bcg .encodeSegment (_eb ,&_eae );_bgad !=nil {return nil ,_fa .Wrap (_bgad ,_cab ,"");};};};if _bcg .FullHeaders {if _bccf ,_bgad =_bcg .encodeEOFHeader (_bcg ._bd );_bgad !=nil {return nil ,_fa .Wrap (_bgad ,_cab ,"");};_eae +=_bccf ;};_bdb =_bcg ._bd .Data ();if len (_bdb )!=_eae {_da .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",_eae ,len (_bdb ));};return _bdb ,nil ;};func (_cac *Document )encodeSegment (_cea *_db .Header ,_cb *int )error {const _fdc ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074";_cea .SegmentNumber =_cac .nextSegmentNumber ();_gd ,_fc :=_cea .Encode (_cac ._bd );if _fc !=nil {return _fa .Wrapf (_fc ,_fdc ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_cea .SegmentNumber );};*_cb +=_gd ;return nil ;};func (_bad *Page )getResolutionY ()(int ,error ){const _dda ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0059";if _bad .ResolutionY !=0{return _bad .ResolutionY ,nil ;};_fbef :=_bad .getPageInformationSegment ();if _fbef ==nil {return 0,_fa .Error (_dda ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_ecb ,_fdae :=_fbef .GetSegmentData ();if _fdae !=nil {return 0,_fa .Wrap (_fdae ,_dda ,"");};_gffe ,_aeef :=_ecb .(*_db .PageInformationSegment );if !_aeef {return 0,_fa .Errorf (_dda ,"\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",_ecb );};_bad .ResolutionY =_gffe .ResolutionY ;return _bad .ResolutionY ,nil ;};func (_fe *Document )GetNumberOfPages ()(uint32 ,error ){if _fe .NumberOfPagesUnknown ||_fe .NumberOfPages ==0{if len (_fe .Pages )==0{if _fcc :=_fe .mapData ();_fcc !=nil {return 0,_fa .Wrap (_fcc ,"\u0044o\u0063\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074N\u0075m\u0062e\u0072\u004f\u0066\u0050\u0061\u0067\u0065s","");};};return uint32 (len (_fe .Pages )),nil ;};return _fe .NumberOfPages ,nil ;};func (_deb *Page )Encode (w _a .BinaryWriter )(_gcd int ,_cgc error ){const _fgc ="P\u0061\u0067\u0065\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _caeg int ;for _ ,_edae :=range _deb .Segments {if _caeg ,_cgc =_edae .Encode (w );_cgc !=nil {return _gcd ,_fa .Wrap (_cgc ,_fgc ,"");};_gcd +=_caeg ;};return _gcd ,nil ;};func (_fd *Document )addSymbolDictionary (_ag int ,_bf *_dac .Bitmaps ,_bbg []int ,_adg map[int ]int ,_aga bool )(*_db .Header ,error ){const _aca ="\u0061\u0064\u0064\u0053ym\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079";_dc :=&_db .SymbolDictionary {};if _afd :=_dc .InitEncode (_bf ,_bbg ,_adg ,_aga );_afd !=nil {return nil ,_afd ;};_bddg :=&_db .Header {Type :_db .TSymbolDictionary ,PageAssociation :_ag ,SegmentData :_dc };if _ag ==0{if _fd .GlobalSegments ==nil {_fd .GlobalSegments =&Globals {};};_fd .GlobalSegments .AddSegment (_bddg );return _bddg ,nil ;};_cd ,_edd :=_fd .Pages [_ag ];if !_edd {return nil ,_fa .Errorf (_aca ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_ag );};var (_eac int ;_gbb *_db .Header ;);for _eac ,_gbb =range _cd .Segments {if _gbb .Type ==_db .TPageInformation {break ;};};_eac ++;_cd .Segments =append (_cd .Segments ,nil );copy (_cd .Segments [_eac +1:],_cd .Segments [_eac :]);_cd .Segments [_eac ]=_bddg ;return _bddg ,nil ;};func (_gaa *Globals )GetSegmentByIndex (index int )(*_db .Header ,error ){const _gf ="\u0047l\u006f\u0062\u0061\u006cs\u002e\u0047\u0065\u0074\u0053e\u0067m\u0065n\u0074\u0042\u0079\u0049\u006e\u0064\u0065x";if _gaa ==nil {return nil ,_fa .Error (_gf ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_gaa .Segments )==0{return nil ,_fa .Error (_gf ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};if index > len (_gaa .Segments )-1{return nil ,_fa .Error (_gf ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");};return _gaa .Segments [index ],nil ;};type EncodingMethod int ;func (_daf *Page )getHeight ()(int ,error ){const _bedf ="\u0067e\u0074\u0048\u0065\u0069\u0067\u0068t";if _daf .FinalHeight !=0{return _daf .FinalHeight ,nil ;};_baae :=_daf .getPageInformationSegment ();if _baae ==nil {return 0,_fa .Error (_bedf ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_bgc ,_cba :=_baae .GetSegmentData ();if _cba !=nil {return 0,_fa .Wrap (_cba ,_bedf ,"");};_ddb ,_cbe :=_bgc .(*_db .PageInformationSegment );if !_cbe {return 0,_fa .Errorf (_bedf ,"\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",_bgc );};if _ddb .PageBMHeight ==_e .MaxInt32 {_ ,_cba =_daf .GetBitmap ();if _cba !=nil {return 0,_fa .Wrap (_cba ,_bedf ,"");};}else {_daf .FinalHeight =_ddb .PageBMHeight ;};return _daf .FinalHeight ,nil ;};var _be =[]byte {0x97,0x4A,0x42,0x32,0x0D,0x0A,0x1A,0x0A};