2021-03-23 23:12:52 +00:00

135 lines
40 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 (_f "encoding/binary";_bf "fmt";_g "github.com/unidoc/unipdf/v3/common";_e "github.com/unidoc/unipdf/v3/internal/bitwise";_a "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_fa "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";
_da "github.com/unidoc/unipdf/v3/internal/jbig2/document/segments";_cc "github.com/unidoc/unipdf/v3/internal/jbig2/encoder/classer";_bc "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_ff "io";_b "math";_d "runtime/debug";);func (_cbcb *Page )getResolutionX ()(int ,error ){const _gbab ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0058";
if _cbcb .ResolutionX !=0{return _cbcb .ResolutionX ,nil ;};_bdf :=_cbcb .getPageInformationSegment ();if _bdf ==nil {return 0,_bc .Error (_gbab ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_fbc ,_fba :=_bdf .GetSegmentData ();
if _fba !=nil {return 0,_bc .Wrap (_fba ,_gbab ,"");};_afb ,_def :=_fbc .(*_da .PageInformationSegment );if !_def {return 0,_bc .Errorf (_gbab ,"\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",_fbc );
};_cbcb .ResolutionX =_afb .ResolutionX ;return _cbcb .ResolutionX ,nil ;};func (_cfa *Document )determineRandomDataOffsets (_efa []*_da .Header ,_gdc uint64 ){if _cfa .OrganizationType !=_da .ORandom {return ;};for _ ,_gce :=range _efa {_gce .SegmentDataStartOffset =_gdc ;
_gdc +=_gce .SegmentDataLength ;};};func (_agg *Page )createPage (_gcdgb *_da .PageInformationSegment )error {var _eba error ;if !_gcdgb .IsStripe ||_gcdgb .PageBMHeight !=-1{_eba =_agg .createNormalPage (_gcdgb );}else {_eba =_agg .createStripedPage (_gcdgb );
};return _eba ;};func (_edg *Document )GetPage (pageNumber int )(_da .Pager ,error ){const _efd ="\u0044\u006fc\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074\u0050\u0061\u0067\u0065";if pageNumber < 0{_g .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 ,_bc .Errorf (_efd ,"\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 (_edg .Pages ){_g .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 ,_bc .Error (_efd ,"\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");
};_ec ,_dda :=_edg .Pages [pageNumber ];if !_dda {_g .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 ,_bc .Errorf (_efd ,"\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 _ec ,nil ;};type Globals struct{Segments []*_da .Header ;};func (_ede *Document )addSymbolDictionary (_fff int ,_fdd *_fa .Bitmaps ,_bcdc []int ,_beg map[int ]int ,_gbf bool )(*_da .Header ,error ){const _fcg ="\u0061\u0064\u0064\u0053ym\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079";
_dba :=&_da .SymbolDictionary {};if _cg :=_dba .InitEncode (_fdd ,_bcdc ,_beg ,_gbf );_cg !=nil {return nil ,_cg ;};_ggc :=&_da .Header {Type :_da .TSymbolDictionary ,PageAssociation :_fff ,SegmentData :_dba };if _fff ==0{if _ede .GlobalSegments ==nil {_ede .GlobalSegments =&Globals {};
};_ede .GlobalSegments .AddSegment (_ggc );return _ggc ,nil ;};_dbc ,_gfa :=_ede .Pages [_fff ];if !_gfa {return nil ,_bc .Errorf (_fcg ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_fff );};var (_acf int ;
_fcgf *_da .Header ;);for _acf ,_fcgf =range _dbc .Segments {if _fcgf .Type ==_da .TPageInformation {break ;};};_acf ++;_dbc .Segments =append (_dbc .Segments ,nil );copy (_dbc .Segments [_acf +1:],_dbc .Segments [_acf :]);_dbc .Segments [_acf ]=_ggc ;
return _ggc ,nil ;};func (_bca *Page )clearSegmentData (){for _agfc :=range _bca .Segments {_bca .Segments [_agfc ].CleanSegmentData ();};};func (_bfc *Document )AddGenericPage (bm *_fa .Bitmap ,duplicateLineRemoval bool )(_ed error ){const _ddg ="\u0044\u006f\u0063um\u0065\u006e\u0074\u002e\u0041\u0064\u0064\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0050\u0061\u0067\u0065";
if !_bfc .FullHeaders &&_bfc .NumberOfPages !=0{return _bc .Error (_ddg ,"\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");
};_bfe :=&Page {Segments :[]*_da .Header {},Bitmap :bm ,Document :_bfc ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,IsLossless :true ,BlackIsOne :bm .Color ==_fa .Chocolate };_bfe .PageNumber =int (_bfc .nextPageNumber ());_bfc .Pages [_bfe .PageNumber ]=_bfe ;
bm .InverseData ();_bfe .AddPageInformationSegment ();if _ed =_bfe .AddGenericRegion (bm ,0,0,0,_da .TImmediateGenericRegion ,duplicateLineRemoval );_ed !=nil {return _bc .Wrap (_ed ,_ddg ,"");};if _bfc .FullHeaders {_bfe .AddEndOfPageSegment ();};return nil ;
};func (_fcae *Document )encodeEOFHeader (_fgc _e .BinaryWriter )(_ebe int ,_ffg error ){_fgcg :=&_da .Header {SegmentNumber :_fcae .nextSegmentNumber (),Type :_da .TEndOfFile };if _ebe ,_ffg =_fgcg .Encode (_fgc );_ffg !=nil {return 0,_bc .Wrap (_ffg ,"\u0065n\u0063o\u0064\u0065\u0045\u004f\u0046\u0048\u0065\u0061\u0064\u0065\u0072","");
};return _ebe ,nil ;};func (_gfg *Globals )GetSegmentByIndex (index int )(*_da .Header ,error ){const _aeg ="\u0047l\u006f\u0062\u0061\u006cs\u002e\u0047\u0065\u0074\u0053e\u0067m\u0065n\u0074\u0042\u0079\u0049\u006e\u0064\u0065x";if _gfg ==nil {return nil ,_bc .Error (_aeg ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
};if len (_gfg .Segments )==0{return nil ,_bc .Error (_aeg ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};if index > len (_gfg .Segments )-1{return nil ,_bc .Error (_aeg ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");
};return _gfg .Segments [index ],nil ;};func (_dae *Page )getWidth ()(int ,error ){const _gaa ="\u0067\u0065\u0074\u0057\u0069\u0064\u0074\u0068";if _dae .FinalWidth !=0{return _dae .FinalWidth ,nil ;};_beed :=_dae .getPageInformationSegment ();if _beed ==nil {return 0,_bc .Error (_gaa ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");
};_ecd ,_gdcf :=_beed .GetSegmentData ();if _gdcf !=nil {return 0,_bc .Wrap (_gdcf ,_gaa ,"");};_bfed ,_egc :=_ecd .(*_da .PageInformationSegment );if !_egc {return 0,_bc .Errorf (_gaa ,"\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",_ecd );
};_dae .FinalWidth =_bfed .PageBMWidth ;return _dae .FinalWidth ,nil ;};func (_bcc *Document )completeClassifiedPages ()(_add error ){const _ef ="\u0063\u006f\u006dpl\u0065\u0074\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067\u0065\u0073";
if _bcc .Classer ==nil {return nil ;};_bcc ._cf =make ([]int ,_bcc .Classer .UndilatedTemplates .Size ());for _fd :=0;_fd < _bcc .Classer .ClassIDs .Size ();_fd ++{_bg ,_ace :=_bcc .Classer .ClassIDs .Get (_fd );if _ace !=nil {return _bc .Wrapf (_ace ,_ef ,"\u0063\u006c\u0061\u0073s \u0077\u0069\u0074\u0068\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027",_fd );
};_bcc ._cf [_bg ]++;};var _fcf []int ;for _gd :=0;_gd < _bcc .Classer .UndilatedTemplates .Size ();_gd ++{if _bcc .NumberOfPages ==1||_bcc ._cf [_gd ]> 1{_fcf =append (_fcf ,_gd );};};var (_cda *Page ;_be bool ;);for _gf ,_bgb :=range *_bcc .Classer .ComponentPageNumbers {if _cda ,_be =_bcc .Pages [_bgb ];
!_be {return _bc .Errorf (_ef ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_gf );};if _cda .EncodingMethod ==GenericEM {_g .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",_gf );
continue ;};_bcc ._ag [_bgb ]=append (_bcc ._ag [_bgb ],_gf );_edc ,_bfcf :=_bcc .Classer .ClassIDs .Get (_gf );if _bfcf !=nil {return _bc .Wrapf (_bfcf ,_ef ,"\u006e\u006f\u0020\u0073uc\u0068\u0020\u0063\u006c\u0061\u0073\u0073\u0049\u0044\u003a\u0020\u0025\u0064",_gf );
};if _bcc ._cf [_edc ]==1&&_bcc .NumberOfPages !=1{_cbc :=append (_bcc ._dd [_bgb ],_edc );_bcc ._dd [_bgb ]=_cbc ;};};if _add =_bcc .Classer .ComputeLLCorners ();_add !=nil {return _bc .Wrap (_add ,_ef ,"");};if _ ,_add =_bcc .addSymbolDictionary (0,_bcc .Classer .UndilatedTemplates ,_fcf ,_bcc ._fb ,false );
_add !=nil {return _bc .Wrap (_add ,_ef ,"");};return nil ;};func (_aaa *Page )createNormalPage (_gceb *_da .PageInformationSegment )error {const _gdd ="\u0063\u0072e\u0061\u0074\u0065N\u006f\u0072\u006d\u0061\u006c\u0050\u0061\u0067\u0065";_aaa .Bitmap =_fa .New (_gceb .PageBMWidth ,_gceb .PageBMHeight );
if _gceb .DefaultPixelValue !=0{_aaa .Bitmap .SetDefaultPixel ();};for _ ,_aca :=range _aaa .Segments {switch _aca .Type {case 6,7,22,23,38,39,42,43:_g .Log .Trace ("\u0047\u0065\u0074\u0074in\u0067\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0064",_aca .SegmentNumber );
_gecf ,_ffgf :=_aca .GetSegmentData ();if _ffgf !=nil {return _ffgf ;};_cab ,_dacg :=_gecf .(_da .Regioner );if !_dacg {_g .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",_gecf );
return _bc .Errorf (_gdd ,"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",_gecf );
};_adaa ,_ffgf :=_cab .GetRegionBitmap ();if _ffgf !=nil {return _bc .Wrap (_ffgf ,_gdd ,"");};if _aaa .fitsPage (_gceb ,_adaa ){_aaa .Bitmap =_adaa ;}else {_cgcc :=_cab .GetRegionInfo ();_dcc :=_aaa .getCombinationOperator (_gceb ,_cgcc .CombinaionOperator );
_ffgf =_fa .Blit (_adaa ,_aaa .Bitmap ,int (_cgcc .XLocation ),int (_cgcc .YLocation ),_dcc );if _ffgf !=nil {return _bc .Wrap (_ffgf ,_gdd ,"");};};};};return nil ;};func (_dfff *Globals )AddSegment (segment *_da .Header ){_dfff .Segments =append (_dfff .Segments ,segment );
};func (_fcff *Document )mapData ()error {const _ccb ="\u006da\u0070\u0044\u0061\u0074\u0061";var (_fac []*_da .Header ;_cfag int64 ;_bdg _da .Type ;);_adbd ,_faec :=_fcff .isFileHeaderPresent ();if _faec !=nil {return _bc .Wrap (_faec ,_ccb ,"");};if _adbd {if _faec =_fcff .parseFileHeader ();
_faec !=nil {return _bc .Wrap (_faec ,_ccb ,"");};_cfag +=int64 (_fcff ._dab );_fcff .FullHeaders =true ;};var (_gcdg *Page ;_bddc bool ;);for _bdg !=51&&!_bddc {_efe ,_gfdg :=_da .NewHeader (_fcff ,_fcff .InputStream ,_cfag ,_fcff .OrganizationType );
if _gfdg !=nil {return _bc .Wrap (_gfdg ,_ccb ,"");};_g .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",_efe .SegmentNumber ,_efe .Type );
_bdg =_efe .Type ;if _bdg !=_da .TEndOfFile {if _efe .PageAssociation !=0{_gcdg =_fcff .Pages [_efe .PageAssociation ];if _gcdg ==nil {_gcdg =_baf (_fcff ,_efe .PageAssociation );_fcff .Pages [_efe .PageAssociation ]=_gcdg ;if _fcff .NumberOfPagesUnknown {_fcff .NumberOfPages ++;
};};_gcdg .Segments =append (_gcdg .Segments ,_efe );}else {_fcff .GlobalSegments .AddSegment (_efe );};};_fac =append (_fac ,_efe );_cfag =_fcff .InputStream .StreamPosition ();if _fcff .OrganizationType ==_da .OSequential {_cfag +=int64 (_efe .SegmentDataLength );
};_bddc ,_gfdg =_fcff .reachedEOF (_cfag );if _gfdg !=nil {_g .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",_gfdg );
return _bc .Wrap (_gfdg ,_ccb ,"");};};_fcff .determineRandomDataOffsets (_fac ,uint64 (_cfag ));return nil ;};func (_eda *Document )nextPageNumber ()uint32 {_eda .NumberOfPages ++;return _eda .NumberOfPages };func (_gaf *Globals )GetSymbolDictionary ()(*_da .Header ,error ){const _ggb ="G\u006c\u006f\u0062\u0061\u006c\u0073.\u0047\u0065\u0074\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079";
if _gaf ==nil {return nil ,_bc .Error (_ggb ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_gaf .Segments )==0{return nil ,_bc .Error (_ggb ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
};for _ ,_dfb :=range _gaf .Segments {if _dfb .Type ==_da .TSymbolDictionary {return _dfb ,nil ;};};return nil ,_bc .Error (_ggb ,"\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 (_gc *Document )completeSymbols ()(_agd error ){const _dbcd ="\u0063o\u006dp\u006c\u0065\u0074\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";if _gc .Classer ==nil {return nil ;};if _gc .Classer .UndilatedTemplates ==nil {return _bc .Error (_dbcd ,"\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");
};_bb :=len (_gc .Pages )==1;_bbb :=make ([]int ,_gc .Classer .UndilatedTemplates .Size ());var _fbd int ;for _addb :=0;_addb < _gc .Classer .ClassIDs .Size ();_addb ++{_fbd ,_agd =_gc .Classer .ClassIDs .Get (_addb );if _agd !=nil {return _bc .Wrap (_agd ,_dbcd ,"\u0063\u006c\u0061\u0073\u0073\u0020\u0049\u0044\u0027\u0073");
};_bbb [_fbd ]++;};var _bd []int ;for _aag :=0;_aag < _gc .Classer .UndilatedTemplates .Size ();_aag ++{if _bbb [_aag ]==0{return _bc .Error (_dbcd ,"\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 [_aag ]> 1||_bb {_bd =append (_bd ,_aag );};};_gc ._ac =len (_bd );var _dbce ,_bbg int ;for _addc :=0;_addc < _gc .Classer .ComponentPageNumbers .Size ();_addc ++{_dbce ,_agd =_gc .Classer .ComponentPageNumbers .Get (_addc );if _agd !=nil {return _bc .Wrapf (_agd ,_dbcd ,"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",_addc );
};_bbg ,_agd =_gc .Classer .ClassIDs .Get (_addc );if _agd !=nil {return _bc .Wrapf (_agd ,_dbcd ,"\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",_dbce );
};if _bbb [_bbg ]==1&&!_bb {_gc ._dd [_dbce ]=append (_gc ._dd [_dbce ],_bbg );};};if _agd =_gc .Classer .ComputeLLCorners ();_agd !=nil {return _bc .Wrap (_agd ,_dbcd ,"");};return nil ;};func (_beb *Page )AddGenericRegion (bm *_fa .Bitmap ,xloc ,yloc ,template int ,tp _da .Type ,duplicateLineRemoval bool )error {const _ccf ="P\u0061\u0067\u0065\u002eAd\u0064G\u0065\u006e\u0065\u0072\u0069c\u0052\u0065\u0067\u0069\u006f\u006e";
_edb :=&_da .GenericRegion {};if _ggec :=_edb .InitEncode (bm ,xloc ,yloc ,template ,duplicateLineRemoval );_ggec !=nil {return _bc .Wrap (_ggec ,_ccf ,"");};_dac :=&_da .Header {Type :_da .TImmediateGenericRegion ,PageAssociation :_beb .PageNumber ,SegmentData :_edb };
_beb .Segments =append (_beb .Segments ,_dac );return nil ;};func (_bbaf *Page )getHeight ()(int ,error ){const _fcfc ="\u0067e\u0074\u0048\u0065\u0069\u0067\u0068t";if _bbaf .FinalHeight !=0{return _bbaf .FinalHeight ,nil ;};_bcb :=_bbaf .getPageInformationSegment ();
if _bcb ==nil {return 0,_bc .Error (_fcfc ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_dabb ,_cdg :=_bcb .GetSegmentData ();if _cdg !=nil {return 0,_bc .Wrap (_cdg ,_fcfc ,"");};_abgd ,_aage :=_dabb .(*_da .PageInformationSegment );
if !_aage {return 0,_bc .Errorf (_fcfc ,"\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",_dabb );
};if _abgd .PageBMHeight ==_b .MaxInt32 {_ ,_cdg =_bbaf .GetBitmap ();if _cdg !=nil {return 0,_bc .Wrap (_cdg ,_fcfc ,"");};}else {_bbaf .FinalHeight =_abgd .PageBMHeight ;};return _bbaf .FinalHeight ,nil ;};func (_ddf *Document )nextSegmentNumber ()uint32 {_edgbd :=_ddf .CurrentSegmentNumber ;
_ddf .CurrentSegmentNumber ++;return _edgbd ;};func (_cga *Page )GetResolutionY ()(int ,error ){return _cga .getResolutionY ()};func (_cfae *Document )parseFileHeader ()error {const _faeg ="\u0070a\u0072s\u0065\u0046\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";
_ ,_dfa :=_cfae .InputStream .Seek (8,_ff .SeekStart );if _dfa !=nil {return _bc .Wrap (_dfa ,_faeg ,"\u0069\u0064");};_ ,_dfa =_cfae .InputStream .ReadBits (5);if _dfa !=nil {return _bc .Wrap (_dfa ,_faeg ,"\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074\u0073");
};_gfab ,_dfa :=_cfae .InputStream .ReadBit ();if _dfa !=nil {return _bc .Wrap (_dfa ,_faeg ,"\u0065x\u0074e\u006e\u0064\u0065\u0064\u0020t\u0065\u006dp\u006c\u0061\u0074\u0065\u0073");};if _gfab ==1{_cfae .GBUseExtTemplate =true ;};_gfab ,_dfa =_cfae .InputStream .ReadBit ();
if _dfa !=nil {return _bc .Wrap (_dfa ,_faeg ,"\u0075\u006e\u006b\u006eow\u006e\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};if _gfab !=1{_cfae .NumberOfPagesUnknown =false ;};_gfab ,_dfa =_cfae .InputStream .ReadBit ();if _dfa !=nil {return _bc .Wrap (_dfa ,_faeg ,"\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074\u0069\u006f\u006e \u0074\u0079\u0070\u0065");
};_cfae .OrganizationType =_da .OrganizationType (_gfab );if !_cfae .NumberOfPagesUnknown {_cfae .NumberOfPages ,_dfa =_cfae .InputStream .ReadUint32 ();if _dfa !=nil {return _bc .Wrap (_dfa ,_faeg ,"\u006eu\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0061\u0067\u0065\u0073");
};_cfae ._dab =13;};return nil ;};func (_aeef *Page )composePageBitmap ()error {const _bagb ="\u0063\u006f\u006d\u0070\u006f\u0073\u0065\u0050\u0061\u0067\u0065\u0042i\u0074\u006d\u0061\u0070";if _aeef .PageNumber ==0{return nil ;};_gff :=_aeef .getPageInformationSegment ();
if _gff ==nil {return _bc .Error (_bagb ,"\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");};_gefc ,_gba :=_gff .GetSegmentData ();
if _gba !=nil {return _gba ;};_acd ,_ceea :=_gefc .(*_da .PageInformationSegment );if !_ceea {return _bc .Error (_bagb ,"\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 _gba =_aeef .createPage (_acd );_gba !=nil {return _bc .Wrap (_gba ,_bagb ,"");};_aeef .clearSegmentData ();return nil ;};func (_fdb *Page )lastSegmentNumber ()(_gdfcc uint32 ,_ade error ){const _fab ="\u006c\u0061\u0073\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";
if len (_fdb .Segments )==0{return _gdfcc ,_bc .Errorf (_fab ,"\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",_fdb .PageNumber );
};return _fdb .Segments [len (_fdb .Segments )-1].SegmentNumber ,nil ;};const (GenericEM EncodingMethod =iota ;CorrelationEM ;RankHausEM ;);type Page struct{Segments []*_da .Header ;PageNumber int ;Bitmap *_fa .Bitmap ;FinalHeight int ;FinalWidth int ;
ResolutionX int ;ResolutionY int ;IsLossless bool ;Document *Document ;FirstSegmentNumber int ;EncodingMethod EncodingMethod ;BlackIsOne bool ;};func (_eabb *Page )getPageInformationSegment ()*_da .Header {for _ ,_adga :=range _eabb .Segments {if _adga .Type ==_da .TPageInformation {return _adga ;
};};_g .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",_eabb );
return nil ;};func (_ccga *Page )AddPageInformationSegment (){_cgb :=&_da .PageInformationSegment {PageBMWidth :_ccga .FinalWidth ,PageBMHeight :_ccga .FinalHeight ,ResolutionX :_ccga .ResolutionX ,ResolutionY :_ccga .ResolutionY ,IsLossless :_ccga .IsLossless };
if _ccga .BlackIsOne {_cgb .DefaultPixelValue =uint8 (0x1);};_fag :=&_da .Header {PageAssociation :_ccga .PageNumber ,SegmentDataLength :uint64 (_cgb .Size ()),SegmentData :_cgb ,Type :_da .TPageInformation };_ccga .Segments =append (_ccga .Segments ,_fag );
};func (_gecb *Page )Encode (w _e .BinaryWriter )(_agf int ,_ecb error ){const _bfd ="P\u0061\u0067\u0065\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _bfda int ;for _ ,_ggd :=range _gecb .Segments {if _bfda ,_ecb =_ggd .Encode (w );_ecb !=nil {return _agf ,_bc .Wrap (_ecb ,_bfd ,"");
};_agf +=_bfda ;};return _agf ,nil ;};func DecodeDocument (input _e .StreamReader ,globals *Globals )(*Document ,error ){return _cgf (input ,globals );};func (_ece *Page )GetBitmap ()(_aee *_fa .Bitmap ,_cgfg error ){_g .Log .Trace (_bf .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",_ece .PageNumber ));
defer func (){if _cgfg !=nil {_g .Log .Trace (_bf .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",_ece .PageNumber ,_cgfg ));
}else {_g .Log .Trace (_bf .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",_ece .PageNumber ));};}();if _ece .Bitmap !=nil {return _ece .Bitmap ,nil ;
};_cgfg =_ece .composePageBitmap ();if _cgfg !=nil {return nil ,_cgfg ;};return _ece .Bitmap ,nil ;};type EncodingMethod int ;func (_ebd *Page )addTextRegionSegment (_fcec []*_da .Header ,_abe ,_cbg map[int ]int ,_dabg []int ,_ggf *_fa .Points ,_gcdc *_fa .Bitmaps ,_egf *_a .IntSlice ,_ccfb *_fa .Boxes ,_gec ,_ebcf int ){_dg :=&_da .TextRegion {NumberOfSymbols :uint32 (_ebcf )};
_dg .InitEncode (_abe ,_cbg ,_dabg ,_ggf ,_gcdc ,_egf ,_ccfb ,_ebd .FinalWidth ,_ebd .FinalHeight ,_gec );_gbd :=&_da .Header {RTSegments :_fcec ,SegmentData :_dg ,PageAssociation :_ebd .PageNumber ,Type :_da .TImmediateTextRegion };_degc :=_da .TPageInformation ;
if _cbg !=nil {_degc =_da .TSymbolDictionary ;};var _dc int ;for ;_dc < len (_ebd .Segments );_dc ++{if _ebd .Segments [_dc ].Type ==_degc {_dc ++;break ;};};_ebd .Segments =append (_ebd .Segments ,nil );copy (_ebd .Segments [_dc +1:],_ebd .Segments [_dc :]);
_ebd .Segments [_dc ]=_gbd ;};func (_cdf *Document )isFileHeaderPresent ()(bool ,error ){_cdf .InputStream .Mark ();for _ ,_aagb :=range _gb {_adbe ,_dbceg :=_cdf .InputStream .ReadByte ();if _dbceg !=nil {return false ,_dbceg ;};if _aagb !=_adbe {_cdf .InputStream .Reset ();
return false ,nil ;};};_cdf .InputStream .Reset ();return true ,nil ;};func (_gfd *Document )Encode ()(_ggac []byte ,_dbb error ){const _gcf ="\u0044o\u0063u\u006d\u0065\u006e\u0074\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _adc ,_gdfc int ;if _gfd .FullHeaders {if _adc ,_dbb =_gfd .encodeFileHeader (_gfd ._fc );
_dbb !=nil {return nil ,_bc .Wrap (_dbb ,_gcf ,"");};};var (_gcd bool ;_gbfd *_da .Header ;_ea *Page ;);if _dbb =_gfd .completeClassifiedPages ();_dbb !=nil {return nil ,_bc .Wrap (_dbb ,_gcf ,"");};if _dbb =_gfd .produceClassifiedPages ();_dbb !=nil {return nil ,_bc .Wrap (_dbb ,_gcf ,"");
};if _gfd .GlobalSegments !=nil {for _ ,_gbfd =range _gfd .GlobalSegments .Segments {if _dbb =_gfd .encodeSegment (_gbfd ,&_adc );_dbb !=nil {return nil ,_bc .Wrap (_dbb ,_gcf ,"");};};};for _fg :=1;_fg <=int (_gfd .NumberOfPages );_fg ++{if _ea ,_gcd =_gfd .Pages [_fg ];
!_gcd {return nil ,_bc .Errorf (_gcf ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_fg );};for _ ,_gbfd =range _ea .Segments {if _dbb =_gfd .encodeSegment (_gbfd ,&_adc );_dbb !=nil {return nil ,_bc .Wrap (_dbb ,_gcf ,"");
};};};if _gfd .FullHeaders {if _gdfc ,_dbb =_gfd .encodeEOFHeader (_gfd ._fc );_dbb !=nil {return nil ,_bc .Wrap (_dbb ,_gcf ,"");};_adc +=_gdfc ;};_ggac =_gfd ._fc .Data ();if len (_ggac )!=_adc {_g .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",_adc ,len (_ggac ));
};return _ggac ,nil ;};func (_gef *Page )AddEndOfPageSegment (){_ebc :=&_da .Header {Type :_da .TEndOfPage ,PageAssociation :_gef .PageNumber };_gef .Segments =append (_gef .Segments ,_ebc );};func (_adb *Document )GetGlobalSegment (i int )(*_da .Header ,error ){_daa ,_eb :=_adb .GlobalSegments .GetSegment (i );
if _eb !=nil {return nil ,_bc .Wrap (_eb ,"\u0047\u0065t\u0047\u006c\u006fb\u0061\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074","");};return _daa ,nil ;};func _baf (_bag *Document ,_cdc int )*Page {return &Page {Document :_bag ,PageNumber :_cdc ,Segments :[]*_da .Header {}};
};func (_abg *Page )GetResolutionX ()(int ,error ){return _abg .getResolutionX ()};func _eg (_cbe int )int {_bfeb :=0;_fdg :=(_cbe &(_cbe -1))==0;_cbe >>=1;for ;_cbe !=0;_cbe >>=1{_bfeb ++;};if _fdg {return _bfeb ;};return _bfeb +1;};func (_bee *Page )collectPageStripes ()(_bbd []_da .Segmenter ,_agda error ){const _bdb ="\u0063o\u006cl\u0065\u0063\u0074\u0050\u0061g\u0065\u0053t\u0072\u0069\u0070\u0065\u0073";
var _ega _da .Segmenter ;for _ ,_geca :=range _bee .Segments {switch _geca .Type {case 6,7,22,23,38,39,42,43:_ega ,_agda =_geca .GetSegmentData ();if _agda !=nil {return nil ,_bc .Wrap (_agda ,_bdb ,"");};_bbd =append (_bbd ,_ega );case 50:_ega ,_agda =_geca .GetSegmentData ();
if _agda !=nil {return nil ,_agda ;};_ccgg ,_fcaf :=_ega .(*_da .EndOfStripe );if !_fcaf {return nil ,_bc .Errorf (_bdb ,"\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",_ega );
};_bbd =append (_bbd ,_ccgg );_bee .FinalHeight =_ccgg .LineNumber ();};};return _bbd ,nil ;};func (_cde *Page )createStripedPage (_eab *_da .PageInformationSegment )error {const _ebfb ="\u0063\u0072\u0065\u0061\u0074\u0065\u0053\u0074\u0072\u0069\u0070\u0065d\u0050\u0061\u0067\u0065";
_cbf ,_ffc :=_cde .collectPageStripes ();if _ffc !=nil {return _bc .Wrap (_ffc ,_ebfb ,"");};var _cdac int ;for _ ,_fdga :=range _cbf {if _abf ,_dbd :=_fdga .(*_da .EndOfStripe );_dbd {_cdac =_abf .LineNumber ()+1;}else {_cfab :=_fdga .(_da .Regioner );
_begb :=_cfab .GetRegionInfo ();_efg :=_cde .getCombinationOperator (_eab ,_begb .CombinaionOperator );_egg ,_adg :=_cfab .GetRegionBitmap ();if _adg !=nil {return _bc .Wrap (_adg ,_ebfb ,"");};_adg =_fa .Blit (_egg ,_cde .Bitmap ,int (_begb .XLocation ),_cdac ,_efg );
if _adg !=nil {return _bc .Wrap (_adg ,_ebfb ,"");};};};return nil ;};func (_bdag *Page )countRegions ()int {var _dega int ;for _ ,_dag :=range _bdag .Segments {switch _dag .Type {case 6,7,22,23,38,39,42,43:_dega ++;};};return _dega ;};func (_dbae *Page )nextSegmentNumber ()uint32 {return _dbae .Document .nextSegmentNumber ()};
func (_cgdc *Page )GetSegment (number int )(*_da .Header ,error ){const _dgg ="\u0050a\u0067e\u002e\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074";for _ ,_faa :=range _cgdc .Segments {if _faa .SegmentNumber ==uint32 (number ){return _faa ,nil ;
};};_dcd :=make ([]uint32 ,len (_cgdc .Segments ));for _bda ,_cge :=range _cgdc .Segments {_dcd [_bda ]=_cge .SegmentNumber ;};return nil ,_bc .Errorf (_dgg ,"\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 ,_cgdc .PageNumber ,_dcd );
};func (_fge *Page )String ()string {return _bf .Sprintf ("\u0050\u0061\u0067\u0065\u0020\u0023\u0025\u0064",_fge .PageNumber );};func (_ebf *Page )GetHeight ()(int ,error ){return _ebf .getHeight ()};var _gb =[]byte {0x97,0x4A,0x42,0x32,0x0D,0x0A,0x1A,0x0A};
func (_ebcb *Page )GetWidth ()(int ,error ){return _ebcb .getWidth ()};func (_acab *Page )fitsPage (_dcdc *_da .PageInformationSegment ,_fe *_fa .Bitmap )bool {return _acab .countRegions ()==1&&_dcdc .DefaultPixelValue ==0&&_dcdc .PageBMWidth ==_fe .Width &&_dcdc .PageBMHeight ==_fe .Height ;
};func (_ad *Document )AddClassifiedPage (bm *_fa .Bitmap ,method _cc .Method )(_cd error ){const _fca ="\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 _bc .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");
};if _ad .Classer ==nil {if _ad .Classer ,_cd =_cc .Init (_cc .DefaultSettings ());_cd !=nil {return _bc .Wrap (_cd ,_fca ,"");};};_cb :=int (_ad .nextPageNumber ());_aa :=&Page {Segments :[]*_da .Header {},Bitmap :bm ,Document :_ad ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,PageNumber :_cb };
_ad .Pages [_cb ]=_aa ;switch method {case _cc .RankHaus :_aa .EncodingMethod =RankHausEM ;case _cc .Correlation :_aa .EncodingMethod =CorrelationEM ;};_aa .AddPageInformationSegment ();if _cd =_ad .Classer .AddPage (bm ,_cb ,method );_cd !=nil {return _bc .Wrap (_cd ,_fca ,"");
};if _ad .FullHeaders {_aa .AddEndOfPageSegment ();};return nil ;};func (_gde *Page )getCombinationOperator (_eaa *_da .PageInformationSegment ,_ggeg _fa .CombinationOperator )_fa .CombinationOperator {if _eaa .CombinationOperatorOverrideAllowed (){return _ggeg ;
};return _eaa .CombinationOperator ();};func (_ce *Document )reachedEOF (_cee int64 )(bool ,error ){const _fgd ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";_ ,_bga :=_ce .InputStream .Seek (_cee ,_ff .SeekStart );if _bga !=nil {_g .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",_bga );
return false ,_bc .Wrap (_bga ,_fgd ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_bga =_ce .InputStream .ReadBits (32);if _bga ==_ff .EOF {return true ,nil ;
}else if _bga !=nil {return false ,_bc .Wrap (_bga ,_fgd ,"");};return false ,nil ;};func InitEncodeDocument (fullHeaders bool )*Document {return &Document {FullHeaders :fullHeaders ,_fc :_e .BufferedMSB (),Pages :map[int ]*Page {},_dd :map[int ][]int {},_fb :map[int ]int {},_ag :map[int ][]int {}};
};func (_ccg *Document )encodeSegment (_ca *_da .Header ,_ga *int )error {const _gad ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074";_ca .SegmentNumber =_ccg .nextSegmentNumber ();_dfc ,_dea :=_ca .Encode (_ccg ._fc );
if _dea !=nil {return _bc .Wrapf (_dea ,_gad ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_ca .SegmentNumber );};*_ga +=_dfc ;return nil ;};func (_bgc *Globals )GetSegment (segmentNumber int )(*_da .Header ,error ){const _bec ="\u0047l\u006fb\u0061\u006c\u0073\u002e\u0047e\u0074\u0053e\u0067\u006d\u0065\u006e\u0074";
if _bgc ==nil {return nil ,_bc .Error (_bec ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_bgc .Segments )==0{return nil ,_bc .Error (_bec ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
};var _ceeb *_da .Header ;for _ ,_ceeb =range _bgc .Segments {if _ceeb .SegmentNumber ==uint32 (segmentNumber ){break ;};};if _ceeb ==nil {return nil ,_bc .Error (_bec ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");
};return _ceeb ,nil ;};func (_dfd *Page )getResolutionY ()(int ,error ){const _bace ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0059";if _dfd .ResolutionY !=0{return _dfd .ResolutionY ,nil ;};_adf :=_dfd .getPageInformationSegment ();
if _adf ==nil {return 0,_bc .Error (_bace ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_bce ,_fbg :=_adf .GetSegmentData ();if _fbg !=nil {return 0,_bc .Wrap (_fbg ,_bace ,"");};_cdge ,_cbbb :=_bce .(*_da .PageInformationSegment );
if !_cbbb {return 0,_bc .Errorf (_bace ,"\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",_bce );
};_dfd .ResolutionY =_cdge .ResolutionY ;return _dfd .ResolutionY ,nil ;};func (_fce *Document )produceClassifiedPage (_af *Page ,_deg *_da .Header )(_gg error ){const _gga ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";
var _df map[int ]int ;_fcd :=_fce ._ac ;_bfcb :=[]*_da .Header {_deg };if len (_fce ._dd [_af .PageNumber ])> 0{_df =map[int ]int {};_dff ,_ba :=_fce .addSymbolDictionary (_af .PageNumber ,_fce .Classer .UndilatedTemplates ,_fce ._dd [_af .PageNumber ],_df ,false );
if _ba !=nil {return _bc .Wrap (_ba ,_gga ,"");};_bfcb =append (_bfcb ,_dff );_fcd +=len (_fce ._dd [_af .PageNumber ]);};_fbe :=_fce ._ag [_af .PageNumber ];_g .Log .Debug ("P\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020c\u006f\u006d\u0070\u0073: \u0025\u0076",_af .PageNumber ,_fbe );
_af .addTextRegionSegment (_bfcb ,_fce ._fb ,_df ,_fce ._ag [_af .PageNumber ],_fce .Classer .PtaLL ,_fce .Classer .UndilatedTemplates ,_fce .Classer .ClassIDs ,nil ,_eg (_fcd ),len (_fce ._ag [_af .PageNumber ]));return nil ;};func (_ffge *Document )encodeFileHeader (_cbd _e .BinaryWriter )(_bef int ,_bdd error ){const _gee ="\u0065\u006ec\u006f\u0064\u0065F\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";
_bef ,_bdd =_cbd .Write (_gb );if _bdd !=nil {return _bef ,_bc .Wrap (_bdd ,_gee ,"\u0069\u0064");};if _bdd =_cbd .WriteByte (0x01);_bdd !=nil {return _bef ,_bc .Wrap (_bdd ,_gee ,"\u0066\u006c\u0061g\u0073");};_bef ++;_cbbc :=make ([]byte ,4);_f .BigEndian .PutUint32 (_cbbc ,_ffge .NumberOfPages );
_bac ,_bdd :=_cbd .Write (_cbbc );if _bdd !=nil {return _bac ,_bc .Wrap (_bdd ,_gee ,"p\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_bef +=_bac ;return _bef ,nil ;};func (_fde *Document )GetNumberOfPages ()(uint32 ,error ){if _fde .NumberOfPagesUnknown ||_fde .NumberOfPages ==0{if len (_fde .Pages )==0{if _ge :=_fde .mapData ();
_ge !=nil {return 0,_bc .Wrap (_ge ,"\u0044o\u0063\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074N\u0075m\u0062e\u0072\u004f\u0066\u0050\u0061\u0067\u0065s","");};};return uint32 (len (_fde .Pages )),nil ;};return _fde .NumberOfPages ,nil ;};func _cgf (_ebef _e .StreamReader ,_efb *Globals )(*Document ,error ){_ddd :=&Document {Pages :make (map[int ]*Page ),InputStream :_ebef ,OrganizationType :_da .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_efb ,_dab :9};
if _ddd .GlobalSegments ==nil {_ddd .GlobalSegments =&Globals {};};if _gge :=_ddd .mapData ();_gge !=nil {return nil ,_gge ;};return _ddd ,nil ;};func (_de *Document )produceClassifiedPages ()(_gdf error ){const _fda ="\u0070\u0072\u006f\u0064uc\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067e\u0073";
if _de .Classer ==nil {return nil ;};var (_bcd *Page ;_ab bool ;_db *_da .Header ;);for _ada :=1;_ada <=int (_de .NumberOfPages );_ada ++{if _bcd ,_ab =_de .Pages [_ada ];!_ab {return _bc .Errorf (_fda ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_ada );
};if _bcd .EncodingMethod ==GenericEM {continue ;};if _db ==nil {if _db ,_gdf =_de .GlobalSegments .GetSymbolDictionary ();_gdf !=nil {return _bc .Wrap (_gdf ,_fda ,"");};};if _gdf =_de .produceClassifiedPage (_bcd ,_db );_gdf !=nil {return _bc .Wrapf (_gdf ,_fda ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_ada );
};};return nil ;};type Document struct{Pages map[int ]*Page ;NumberOfPagesUnknown bool ;NumberOfPages uint32 ;GBUseExtTemplate bool ;InputStream _e .StreamReader ;GlobalSegments *Globals ;OrganizationType _da .OrganizationType ;Classer *_cc .Classer ;XRes ,YRes int ;
FullHeaders bool ;CurrentSegmentNumber uint32 ;AverageTemplates *_fa .Bitmaps ;BaseIndexes []int ;Refinement bool ;RefineLevel int ;_dab uint8 ;_fc *_e .BufferedWriter ;EncodeGlobals bool ;_ac int ;_dd map[int ][]int ;_ag map[int ][]int ;_cf []int ;_fb map[int ]int ;
};