439 static int selfTest(
int argc = 0,
char **argv =
nullptr);
532 void setDiffuseSpectrumIntegral(
const std::string &band_label,
float spectrum_integral,
float wavelength_min,
float wavelength_max);
546 void addRadiationBand(
const std::string &label,
float wavelength_min,
float wavelength_max);
553 void copyRadiationBand(
const std::string &old_label,
const std::string &new_label);
562 void copyRadiationBand(
const std::string &old_label,
const std::string &new_label,
float wavelength_min,
float wavelength_max);
686 void setSourceFlux(
const std::vector<uint> &source_ID,
const std::string &band_label,
float flux);
729 void setSourceSpectrum(
const std::vector<uint> &source_ID,
const std::vector<helios::vec2> &spectrum);
743 void setSourceSpectrum(
const std::vector<uint> &source_ID,
const std::string &spectrum_label);
750 void setDiffuseSpectrum(
const std::string &band_label,
const std::string &spectrum_label);
757 void setDiffuseSpectrum(
const std::vector<std::string> &band_labels,
const std::string &spectrum_label);
785 float integrateSpectrum(
const std::vector<helios::vec2> &object_spectrum,
float wavelength_min,
float wavelength_max)
const;
802 float integrateSpectrum(
uint source_ID,
const std::vector<helios::vec2> &object_spectrum,
float wavelength_min,
float wavelength_max)
const;
811 float integrateSpectrum(
uint source_ID,
const std::vector<helios::vec2> &object_spectrum,
const std::vector<helios::vec2> &camera_spectrum)
const;
819 float integrateSpectrum(
const std::vector<helios::vec2> &object_spectrum,
const std::vector<helios::vec2> &camera_spectrum)
const;
836 void scaleSpectrum(
const std::string &existing_global_data_label,
const std::string &new_global_data_label,
float scale_factor)
const;
843 void scaleSpectrum(
const std::string &global_data_label,
float scale_factor)
const;
852 void scaleSpectrumRandomly(
const std::string &existing_global_data_label,
const std::string &new_global_data_label,
float minimum_scale_factor,
float maximum_scale_factor)
const;
861 void blendSpectra(
const std::string &new_spectrum_label,
const std::vector<std::string> &spectrum_labels,
const std::vector<float> &weights)
const;
869 void blendSpectraRandomly(
const std::string &new_spectrum_label,
const std::vector<std::string> &spectrum_labels)
const;
913 uint antialiasing_samples);
923 void setCameraSpectralResponse(
const std::string &camera_label,
const std::string &band_label,
const std::string &global_data);
1012 void runBand(
const std::string &label);
1020 void runBand(
const std::vector<std::string> &labels);
1047 void updateCameraResponse(
const std::string &orginalcameralabel,
const std::vector<std::string> &sourcelabels_raw,
const std::vector<std::string> &cameraresponselabels,
helios::vec2 &wavelengthrange,
1048 const std::vector<std::vector<float>> &truevalues,
const std::string &calibratedmark);
1060 float getCameraResponseScale(
const std::string &orginalcameralabel,
const std::vector<std::string> &cameraresponselabels,
const std::vector<std::string> &bandlabels,
const std::vector<std::string> &sourcelabels,
helios::vec2 &wavelengthrange,
1061 const std::vector<std::vector<float>> &truevalues);
1074 void runRadiationImaging(
const std::string &cameralabel,
const std::vector<std::string> &sourcelabels,
const std::vector<std::string> &bandlabels,
const std::vector<std::string> &cameraresponselabels,
helios::vec2 wavelengthrange,
1075 float fluxscale = 1,
float diffusefactor = 0.0005,
uint scatteringdepth = 4);
1088 void runRadiationImaging(
const std::vector<std::string> &cameralabels,
const std::vector<std::string> &sourcelabels,
const std::vector<std::string> &bandlabels,
const std::vector<std::string> &cameraresponselabels,
helios::vec2 wavelengthrange,
1089 float fluxscale = 1,
float diffusefactor = 0.0005,
uint scatteringdepth = 4);
1104 void applyImageProcessingPipeline(
const std::string &cameralabel,
const std::string &red_band_label,
const std::string &green_band_label,
const std::string &blue_band_label,
float saturation_adjustment = 1.f,
float brightness_adjustment = 1.f,
1105 float contrast_adjustment = 1.f,
float gain_adjustment = 1.f);
1115 void applyCameraColorCorrectionMatrix(
const std::string &camera_label,
const std::string &red_band_label,
const std::string &green_band_label,
const std::string &blue_band_label,
const std::string &ccm_file_path);
1124 void whiteBalanceAuto(
const std::string &cameralabel,
const std::string &red_band_label,
const std::string &green_band_label,
const std::string &blue_band_label);
1134 void whiteBalanceWhitePatch(
const std::string &cameralabel,
const std::string &red_band_label,
const std::string &green_band_label,
const std::string &blue_band_label,
float percentile = 0.99f);
1144 void whiteBalanceGrayWorld(
const std::string &cameralabel,
const std::string &red_band_label,
const std::string &green_band_label,
const std::string &blue_band_label,
float p = 6.0f);
1158 std::string
writeCameraImage(
const std::string &camera,
const std::vector<std::string> &bands,
const std::string &imagefile_base,
const std::string &image_path =
"./",
int frame = -1,
float flux_to_pixel_conversion = 1.f);
1169 std::string
writeNormCameraImage(
const std::string &camera,
const std::vector<std::string> &bands,
const std::string &imagefile_base,
const std::string &image_path =
"./",
int frame = -1);
1179 void writeCameraImageData(
const std::string &camera,
const std::string &band,
const std::string &imagefile_base,
const std::string &image_path =
"./",
int frame = -1);
1190 void writePrimitiveDataLabelMap(
const std::string &cameralabel,
const std::string &primitive_data_label,
const std::string &imagefile_base,
const std::string &image_path =
"./",
int frame = -1,
float padvalue = NAN);
1201 void writeObjectDataLabelMap(
const std::string &cameralabel,
const std::string &object_data_label,
const std::string &imagefile_base,
const std::string &image_path =
"./",
int frame = -1,
float padvalue = NAN);
1210 void writeDepthImageData(
const std::string &cameralabel,
const std::string &imagefile_base,
const std::string &image_path =
"./",
int frame = -1);
1220 void writeNormDepthImage(
const std::string &cameralabel,
const std::string &imagefile_base,
float max_depth,
const std::string &image_path =
"./",
int frame = -1);
1232 DEPRECATED(
void writeImageBoundingBoxes(
const std::string &cameralabel,
const std::string &primitive_data_label,
uint object_class_ID,
const std::string &imagefile_base,
const std::string &image_path =
"./",
bool append_label_file =
false,
1246 bool append_label_file =
false,
int frame = -1));
1258 void writeImageBoundingBoxes(
const std::string &cameralabel,
const std::string &primitive_data_label,
const uint &object_class_ID,
const std::string &image_file,
const std::string &classes_txt_file =
"classes.txt",
1259 const std::string &image_path =
"./");
1271 void writeImageBoundingBoxes(
const std::string &cameralabel,
const std::vector<std::string> &primitive_data_label,
const std::vector<uint> &object_class_ID,
const std::string &image_file,
const std::string &classes_txt_file =
"classes.txt",
1272 const std::string &image_path =
"./");
1284 void writeImageBoundingBoxes_ObjectData(
const std::string &cameralabel,
const std::string &object_data_label,
const uint &object_class_ID,
const std::string &image_file,
const std::string &classes_txt_file =
"classes.txt",
1285 const std::string &image_path =
"./");
1297 void writeImageBoundingBoxes_ObjectData(
const std::string &cameralabel,
const std::vector<std::string> &object_data_label,
const std::vector<uint> &object_class_ID,
const std::string &image_file,
1298 const std::string &classes_txt_file =
"classes.txt",
const std::string &image_path =
"./");
1310 void writeImageSegmentationMasks(
const std::string &cameralabel,
const std::string &primitive_data_label,
const uint &object_class_ID,
const std::string &json_filename,
const std::string &image_file,
bool append_file =
false);
1322 void writeImageSegmentationMasks(
const std::string &cameralabel,
const std::vector<std::string> &primitive_data_label,
const std::vector<uint> &object_class_ID,
const std::string &json_filename,
const std::string &image_file,
1323 bool append_file =
false);
1335 void writeImageSegmentationMasks_ObjectData(
const std::string &cameralabel,
const std::string &object_data_label,
const uint &object_class_ID,
const std::string &json_filename,
const std::string &image_file,
bool append_file =
false);
1347 void writeImageSegmentationMasks_ObjectData(
const std::string &cameralabel,
const std::vector<std::string> &object_data_label,
const std::vector<uint> &object_class_ID,
const std::string &json_filename,
const std::string &image_file,
1348 bool append_file =
false);
1352 std::pair<nlohmann::json, int> initializeCOCOJsonWithImageId(
const std::string &filename,
bool append_file,
const std::string &cameralabel,
const helios::int2 &camera_resolution,
const std::string &image_file);
1353 nlohmann::json initializeCOCOJson(
const std::string &filename,
bool append_file,
const std::string &cameralabel,
const helios::int2 &camera_resolution,
const std::string &image_file);
1354 void addCategoryToCOCO(nlohmann::json &coco_json,
const std::vector<uint> &object_class_ID,
const std::vector<std::string> &category_name);
1355 void writeCOCOJson(
const nlohmann::json &coco_json,
const std::string &filename);
1358 std::map<int, std::vector<std::vector<bool>>> generateLabelMasks(
const std::string &cameralabel,
const std::string &data_label,
bool use_object_data);
1359 std::pair<int, int> findStartingBoundaryPixel(
const std::vector<std::vector<bool>> &mask,
const helios::int2 &camera_resolution);
1360 std::vector<std::pair<int, int>> traceBoundaryMoore(
const std::vector<std::vector<bool>> &mask,
int start_x,
int start_y,
const helios::int2 &camera_resolution);
1361 std::vector<std::pair<int, int>> traceBoundarySimple(
const std::vector<std::vector<bool>> &mask,
int start_x,
int start_y,
const helios::int2 &camera_resolution);
1362 std::vector<std::map<std::string, std::vector<float>>> generateAnnotationsFromMasks(
const std::map<
int, std::vector<std::vector<bool>>> &label_masks,
uint object_class_ID,
const helios::int2 &camera_resolution,
int image_id);
1371 void setPadValue(
const std::string &cameralabel,
const std::vector<std::string> &bandlabels,
const std::vector<float> &padvalues);
1383 void calibrateCamera(
const std::string &orginalcameralabel,
const std::vector<std::string> &sourcelabels,
const std::vector<std::string> &cameraresponselabels,
const std::vector<std::string> &bandlabels,
const float scalefactor,
1384 const std::vector<std::vector<float>> &truevalues,
const std::string &calibratedmark);
1393 void calibrateCamera(
const std::string &originalcameralabel,
const float scalefactor,
const std::vector<std::vector<float>> &truevalues,
const std::string &calibratedmark);
1414 std::string
autoCalibrateCameraImage(
const std::string &camera_label,
const std::string &red_band_label,
const std::string &green_band_label,
const std::string &blue_band_label,
const std::string &output_file_path,
1418 void exportColorCorrectionMatrixXML(
const std::string &file_path,
const std::string &camera_label,
const std::vector<std::vector<float>> &matrix,
const std::string &source_image_path,
const std::string &colorboard_type,
float average_delta_e);
1424 std::vector<float>
getCameraPixelData(
const std::string &camera_label,
const std::string &band_label);
1427 void setCameraPixelData(
const std::string &camera_label,
const std::string &band_label,
const std::vector<float> &pixel_data);
1437 bool calibration_flag =
false;
1440 std::string getCurrentDateTime();
1443 std::vector<uint> primitiveID;
1446 std::vector<uint> context_UUIDs;
1450 std::map<std::string, RadiationBand> radiation_bands;
1452 std::map<std::string, bool> scattering_iterations_needed;
1456 std::vector<RadiationSource> radiation_sources;
1459 RTvariable Nsources_RTvariable;
1462 RTbuffer source_positions_RTbuffer;
1464 RTvariable source_positions_RTvariable;
1467 RTbuffer source_types_RTbuffer;
1469 RTvariable source_types_RTvariable;
1472 RTbuffer source_fluxes_RTbuffer;
1474 RTvariable source_fluxes_RTvariable;
1477 RTbuffer source_widths_RTbuffer;
1479 RTvariable source_widths_RTvariable;
1483 RTbuffer source_rotations_RTbuffer;
1485 RTvariable source_rotations_RTvariable;
1490 std::map<std::string, RadiationCamera> cameras;
1493 RTvariable camera_position_RTvariable;
1496 RTvariable camera_direction_RTvariable;
1499 RTvariable camera_lens_diameter_RTvariable;
1502 RTvariable FOV_aspect_RTvariable;
1505 RTvariable camera_focal_length_RTvariable;
1508 RTvariable camera_viewplane_length_RTvariable;
1511 RTvariable Ncameras_RTvariable;
1514 RTvariable camera_ID_RTvariable;
1517 std::map<std::string, std::vector<uint>> spectral_reflectivity_data;
1520 std::map<std::string, std::vector<uint>> spectral_transmissivity_data;
1522 std::vector<helios::vec2> generateGaussianCameraResponse(
float FWHM,
float mu,
float centrawavelength,
const helios::int2 &wavebanrange);
1527 float sigma = 5.6703744E-8;
1539 float kappa_default;
1542 float sigmas_default;
1545 float temperature_default;
1548 size_t directRayCount_default;
1551 size_t diffuseRayCount_default;
1554 float diffuseFlux_default;
1557 float minScatterEnergy_default;
1560 uint scatteringDepth_default;
1565 void initializeOptiX();
1571 void updateRadiativeProperties();
1578 std::vector<helios::vec2> loadSpectralData(
const std::string &global_data_label)
const;
1586 std::vector<float> getOptiXbufferData(RTbuffer buffer);
1592 std::vector<double> getOptiXbufferData_d(RTbuffer buffer);
1598 std::vector<uint> getOptiXbufferData_ui(RTbuffer buffer);
1600 void addBuffer(
const char *name, RTbuffer &buffer, RTvariable &variable, RTbuffertype type, RTformat format,
size_t dimension);
1607 void zeroBuffer1D(RTbuffer &buffer,
size_t bsize);
1614 void copyBuffer1D(RTbuffer &buffer, RTbuffer &buffer_copy);
1621 void initializeBuffer1Dd(RTbuffer &buffer,
const std::vector<double> &array);
1627 void initializeBuffer1Df(RTbuffer &buffer,
const std::vector<float> &array);
1633 void initializeBuffer1Dfloat2(RTbuffer &buffer,
const std::vector<optix::float2> &array);
1639 void initializeBuffer1Dfloat3(RTbuffer &buffer,
const std::vector<optix::float3> &array);
1645 void initializeBuffer1Dfloat4(RTbuffer &buffer,
const std::vector<optix::float4> &array);
1651 void initializeBuffer1Di(RTbuffer &buffer,
const std::vector<int> &array);
1657 void initializeBuffer1Dui(RTbuffer &buffer,
const std::vector<uint> &array);
1663 void initializeBuffer1Dint2(RTbuffer &buffer,
const std::vector<optix::int2> &array);
1669 void initializeBuffer1Dint3(RTbuffer &buffer,
const std::vector<optix::int3> &array);
1675 void initializeBuffer1Dchar(RTbuffer &buffer,
const std::vector<char> &array);
1681 void zeroBuffer2D(RTbuffer &buffer, optix::int2 bsize);
1687 void initializeBuffer2Dd(RTbuffer &buffer,
const std::vector<std::vector<double>> &array);
1693 void initializeBuffer2Df(RTbuffer &buffer,
const std::vector<std::vector<float>> &array);
1699 void initializeBuffer2Dfloat2(RTbuffer &buffer,
const std::vector<std::vector<optix::float2>> &array);
1705 void initializeBuffer2Dfloat3(RTbuffer &buffer,
const std::vector<std::vector<optix::float3>> &array);
1711 void initializeBuffer2Dfloat4(RTbuffer &buffer,
const std::vector<std::vector<optix::float4>> &array);
1717 void initializeBuffer2Di(RTbuffer &buffer,
const std::vector<std::vector<int>> &array);
1723 void initializeBuffer2Dui(RTbuffer &buffer,
const std::vector<std::vector<uint>> &array);
1729 void initializeBuffer2Dint2(RTbuffer &buffer,
const std::vector<std::vector<optix::int2>> &array);
1735 void initializeBuffer2Dint3(RTbuffer &buffer,
const std::vector<std::vector<optix::int3>> &array);
1741 void initializeBuffer2Dbool(RTbuffer &buffer,
const std::vector<std::vector<bool>> &array);
1748 template<
typename anytype>
1749 void initializeBuffer3D(RTbuffer &buffer,
const std::vector<std::vector<std::vector<anytype>>> &array);
1751 void buildLightModelGeometry(
uint sourceID);
1753 void buildCameraModelGeometry(
const std::string &cameralabel);
1755 void updateLightModelPosition(
uint sourceID,
const helios::vec3 &delta_position);
1757 void updateCameraModelPosition(
const std::string &cameralabel);
1760 std::map<uint, std::vector<uint>> source_model_UUIDs;
1762 std::map<std::string, std::vector<uint>> camera_model_UUIDs;
1767 RTcontext OptiX_Context;
1769 RTprogram direct_raygen;
1771 RTprogram diffuse_raygen;
1774 RTprogram camera_raygen;
1776 RTprogram pixel_label_raygen;
1780 RTgeometrygroup base_geometry_group;
1783 RTvariable random_seed_RTvariable;
1786 RTvariable launch_offset_RTvariable;
1789 RTvariable launch_face_RTvariable;
1792 RTvariable max_scatters_RTvariable;
1793 RTbuffer max_scatters_RTbuffer;
1796 RTvariable Nbands_global_RTvariable;
1799 RTvariable Nbands_launch_RTvariable;
1802 RTvariable band_launch_flag_RTvariable;
1803 RTbuffer band_launch_flag_RTbuffer;
1806 RTvariable Nprimitives_RTvariable;
1809 RTvariable diffuse_flux_RTvariable;
1810 RTbuffer diffuse_flux_RTbuffer;
1813 RTvariable diffuse_extinction_RTvariable;
1814 RTbuffer diffuse_extinction_RTbuffer;
1817 RTvariable diffuse_peak_dir_RTvariable;
1818 RTbuffer diffuse_peak_dir_RTbuffer;
1821 RTvariable diffuse_dist_norm_RTvariable;
1822 RTbuffer diffuse_dist_norm_RTbuffer;
1825 RTvariable emission_flag_RTvariable;
1826 RTbuffer emission_flag_RTbuffer;
1830 RTvariable periodic_flag_RTvariable;
1833 RTvariable Rsky_RTvariable;
1836 RTbuffer rho_RTbuffer;
1838 RTvariable rho_RTvariable;
1840 RTbuffer tau_RTbuffer;
1842 RTvariable tau_RTvariable;
1845 RTbuffer rho_cam_RTbuffer;
1847 RTvariable rho_cam_RTvariable;
1849 RTbuffer tau_cam_RTbuffer;
1851 RTvariable tau_cam_RTvariable;
1854 RTbuffer specular_exponent_RTbuffer;
1856 RTvariable specular_exponent_RTvariable;
1859 RTbuffer specular_scale_RTbuffer;
1861 RTvariable specular_scale_RTvariable;
1869 RTvariable specular_reflection_enabled_RTvariable;
1872 RTbuffer primitive_type_RTbuffer;
1874 RTvariable primitive_type_RTvariable;
1877 RTbuffer primitive_solid_fraction_RTbuffer;
1879 RTvariable primitive_solid_fraction_RTvariable;
1882 RTbuffer patch_UUID_RTbuffer;
1883 RTbuffer triangle_UUID_RTbuffer;
1884 RTbuffer disk_UUID_RTbuffer;
1885 RTbuffer tile_UUID_RTbuffer;
1886 RTbuffer voxel_UUID_RTbuffer;
1887 RTbuffer bbox_UUID_RTbuffer;
1889 RTvariable patch_UUID_RTvariable;
1890 RTvariable triangle_UUID_RTvariable;
1891 RTvariable disk_UUID_RTvariable;
1892 RTvariable tile_UUID_RTvariable;
1893 RTvariable voxel_UUID_RTvariable;
1894 RTvariable bbox_UUID_RTvariable;
1897 RTbuffer objectID_RTbuffer;
1899 RTvariable objectID_RTvariable;
1902 RTbuffer primitiveID_RTbuffer;
1904 RTvariable primitiveID_RTvariable;
1907 RTbuffer twosided_flag_RTbuffer;
1909 RTvariable twosided_flag_RTvariable;
1912 RTbuffer Rsky_RTbuffer;
1915 RTbuffer patch_vertices_RTbuffer;
1916 RTvariable patch_vertices_RTvariable;
1919 RTbuffer triangle_vertices_RTbuffer;
1920 RTvariable triangle_vertices_RTvariable;
1923 RTbuffer disk_centers_RTbuffer;
1924 RTvariable disk_centers_RTvariable;
1925 RTbuffer disk_radii_RTbuffer;
1926 RTvariable disk_radii_RTvariable;
1927 RTbuffer disk_normals_RTbuffer;
1928 RTvariable disk_normals_RTvariable;
1931 RTbuffer tile_vertices_RTbuffer;
1932 RTvariable tile_vertices_RTvariable;
1935 RTbuffer voxel_vertices_RTbuffer;
1936 RTvariable voxel_vertices_RTvariable;
1939 RTbuffer bbox_vertices_RTbuffer;
1940 RTvariable bbox_vertices_RTvariable;
1943 RTbuffer object_subdivisions_RTbuffer;
1944 RTvariable object_subdivisions_RTvariable;
1949 RTbuffer transform_matrix_RTbuffer;
1951 RTvariable transform_matrix_RTvariable;
1953 RTbuffer primitive_emission_RTbuffer;
1955 RTvariable primitive_emission_RTvariable;
1958 RTbuffer radiation_in_RTbuffer;
1960 RTvariable radiation_in_RTvariable;
1962 RTbuffer radiation_out_top_RTbuffer;
1964 RTvariable radiation_out_top_RTvariable;
1966 RTbuffer radiation_out_bottom_RTbuffer;
1968 RTvariable radiation_out_bottom_RTvariable;
1970 RTbuffer scatter_buff_top_RTbuffer;
1972 RTvariable scatter_buff_top_RTvariable;
1974 RTbuffer scatter_buff_bottom_RTbuffer;
1976 RTvariable scatter_buff_bottom_RTvariable;
1979 RTbuffer radiation_in_camera_RTbuffer;
1981 RTvariable radiation_in_camera_RTvariable;
1984 RTbuffer scatter_buff_top_cam_RTbuffer;
1986 RTvariable scatter_buff_top_cam_RTvariable;
1988 RTbuffer scatter_buff_bottom_cam_RTbuffer;
1990 RTvariable scatter_buff_bottom_cam_RTvariable;
1993 RTbuffer camera_pixel_label_RTbuffer;
1995 RTvariable camera_pixel_label_RTvariable;
1998 RTbuffer camera_pixel_depth_RTbuffer;
2000 RTvariable camera_pixel_depth_RTvariable;
2003 RTbuffer maskdata_RTbuffer;
2005 RTvariable maskdata_RTvariable;
2007 RTbuffer masksize_RTbuffer;
2009 RTvariable masksize_RTvariable;
2011 RTbuffer maskID_RTbuffer;
2013 RTvariable maskID_RTvariable;
2015 RTbuffer uvdata_RTbuffer;
2017 RTvariable uvdata_RTvariable;
2019 RTbuffer uvID_RTbuffer;
2021 RTvariable uvID_RTvariable;
2027 RTvariable direct_ray_type_RTvariable;
2029 RTvariable diffuse_ray_type_RTvariable;
2032 RTvariable camera_ray_type_RTvariable;
2034 RTvariable pixel_label_ray_type_RTvariable;
2037 enum RayType { RAYTYPE_DIRECT = 0, RAYTYPE_DIFFUSE = 1, RAYTYPE_CAMERA = 2, RAYTYPE_PIXEL_LABEL = 3 };
2041 RTgeometry triangle;
2046 RTmaterial patch_material;
2047 RTmaterial triangle_material;
2048 RTmaterial disk_material;
2049 RTmaterial tile_material;
2050 RTmaterial voxel_material;
2051 RTmaterial bbox_material;
2053 RTgroup top_level_group;
2054 RTacceleration top_level_acceleration;
2055 RTvariable top_object;
2056 RTacceleration geometry_acceleration;
2060 bool isgeometryinitialized;
2062 bool radiativepropertiesneedupdate =
true;
2064 std::vector<bool> isbandpropertyinitialized;
2066 bool islightvisualizationenabled =
false;
2067 bool iscameravisualizationenabled =
false;
2070 std::vector<std::string> output_prim_data;
2072 std::vector<std::string> spectral_library_files;